Compare commits

...

1404 Commits

Author SHA1 Message Date
Andrey Meshkov
01957bf503 * updater: cut 'v' prefix when comparing SelfUpdateMinVersion
Fix #1908

* commit '1e5419714ddcaab0913162460474dea8959529be':
  * (ui): fix the version check - strip the v prefix
  * updater: cut 'v' prefix when comparing SelfUpdateMinVersion
2020-07-23 13:21:12 +03:00
Andrey Meshkov
1e5419714d * (ui): fix the version check - strip the v prefix 2020-07-23 12:27:14 +03:00
Simon Zolin
4f4a688ee6 * updater: cut 'v' prefix when comparing SelfUpdateMinVersion 2020-07-23 12:17:20 +03:00
Andrey Meshkov
ccf5494f67 Fix edge channel version string 2020-07-22 21:29:22 +03:00
Andrey Meshkov
f2edcca54b *(global): update anti-ad filter URL
Closes: #1903
2020-07-22 20:59:42 +03:00
Andrey Meshkov
b4aa791513 Merge: Refactor auto-update
Merge in DNS/adguard-home from feature-auto-update to master

* commit '6d5d1833111f65a69b208c609eda548b15db3606':
  Fix minor issues
  * use 'update' package
  minor
  + update package: perform update tasks
  added version cache
  Auto-update interface
2020-07-22 20:38:21 +03:00
Andrey Meshkov
6d5d183311 Fix minor issues 2020-07-22 20:27:20 +03:00
Simon Zolin
e3ea2528be * use 'update' package 2020-07-22 14:20:14 +03:00
Simon Zolin
117ec4dd43 minor 2020-07-21 19:25:29 +03:00
Simon Zolin
0cc0aec5b3 + update package: perform update tasks 2020-07-21 19:10:39 +03:00
Andrey Meshkov
3c53a2162c added version cache 2020-07-21 12:17:23 +03:00
Andrey Meshkov
1bb183c2aa Auto-update interface 2020-07-20 21:14:07 +03:00
Andrey Meshkov
62ccd3fb41 rollback file unpack 2020-07-20 20:15:05 +03:00
Andrey Meshkov
a409cdc2bb fix tar.gz update 2020-07-20 20:04:54 +03:00
Andrey Meshkov
e0aa24e2b7 fix update check 2020-07-20 18:04:44 +03:00
Andrey Meshkov
0662769696 Fix version change check 2020-07-20 17:29:13 +03:00
Andrey Meshkov
dc237f10a8 Merge: Fix unpacking tar files
* commit '793194db67a9b5f8440f77863a170375d3c7612f':
  Fix unpacking tar files
2020-07-20 17:27:15 +03:00
Andrey Meshkov
4fef0c32cb Merge: Update locales
Squashed commit of the following:

commit 4d14f3a3f483a17ddd6aee3e082560d81802e5bc
Author: Andrey Meshkov <am@adguard.com>
Date:   Mon Jul 20 15:46:54 2020 +0300

    update locales

commit 5d70bef97b98f4c7d8c360db2e0d8c1ce8200b8f
Author: Andrey Meshkov <am@adguard.com>
Date:   Mon Jul 20 15:41:41 2020 +0300

    update locales

commit 35b28b1e606885853e55fa8bcf6693e7c07f6151
Merge: 051f6263 c131ac44
Author: Andrey Meshkov <am@adguard.com>
Date:   Mon Jul 20 15:35:07 2020 +0300

    Merge branch 'master' into feature/update_locales

commit 051f62630f33ca06d814d7e646f58a3e0cdaa074
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Fri Jul 17 17:31:51 2020 +0300

    + client: Update locales

commit 7c88f1fbf5721098e92a3765b96b2f169afc7d43
Merge: 6d743bb1 c1e56c83
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Fri Jul 17 17:29:47 2020 +0300

    Merge branch 'master' into feature/update_locales

commit 6d743bb15974a85fedb004a3c639b1f849756e2d
Merge: 1f6c5091 7d2c7a61
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Fri Jul 17 17:10:51 2020 +0300

    Merge branch 'master' into feature/update_locales

commit 1f6c50915e63c18834d63d3f8535d24a4e894647
Merge: 1a861a98 4df02714
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Thu Jul 16 11:23:08 2020 +0300

    Merge branch 'master' into feature/update_locales

commit 1a861a98326a749a347c184bb2b9aff663b3dd09
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Thu Jul 16 11:22:47 2020 +0300

    Update locales

commit 3f4850822c95b1147f39df939eca568f13b2c0dc
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Wed Jul 15 16:07:40 2020 +0300

    Update locales

commit 0f06bd8f188130e97394c8f20f27b66f263612cc
Merge: 5abae336 38366ba8
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Wed Jul 15 12:59:22 2020 +0300

    Merge branch 'master' into feature/update_locales

commit 5abae33603e84dc410f77e7ec622314e85e03951
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Wed Jul 15 12:57:36 2020 +0300

    Update locales

commit 717455ecf42135077a7dae31281b1da0d89b27e3
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Mon Jul 13 17:45:15 2020 +0300

    Rename label

commit b399ef33eed3c0447d5c651d3b678d482dddbb5b
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Mon Jul 13 17:43:08 2020 +0300

    Replace 'All responses' with 'All queries'

commit 1f5a62a3d95906057c862b55d2ba91d67b346604
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Mon Jul 13 16:18:54 2020 +0300

    + client: Update locales
2020-07-20 15:55:15 +03:00
Ildar Kamalov
c131ac445a Merge: - client: fix names of clients in the top clients list
Closes #1893

Squashed commit of the following:

commit e5de0c4f53558e1ad89dc0069192e534f244f120
Author: Ildar Kamalov <ik@adguard.com>
Date:   Mon Jul 20 14:29:23 2020 +0300

    - client: fix names of clients in the top clients list
2020-07-20 15:25:28 +03:00
Simon Zolin
87789679f5 Merge: - Makefile: repack all release archives so they contain AdGuardHome directory
Squashed commit of the following:

commit f519c82f042670e0bc377ef9f8490edce26085d9
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Mon Jul 20 14:41:46 2020 +0300

    fix

commit 890a2c2b7812c2bc69224f88646ff3ab74e1562f
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Mon Jul 20 14:24:34 2020 +0300

    fix

commit 753ab74b34a5ef010eb8b1d364f62d5a9c904d28
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Mon Jul 20 14:06:49 2020 +0300

    fix

commit 160d0ac83ff656d39597711ab02485c1323f7a0e
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Mon Jul 20 13:19:12 2020 +0300

    - Makefile: repack all release archives so they contain AdGuardHome directory
2020-07-20 14:55:56 +03:00
Andrey Meshkov
793194db67 Fix unpacking tar files 2020-07-20 12:32:14 +03:00
Artem Baskal
4175d82279 + client: 1889 Show a link to the FAQ article about Ubuntu when port 53 is in use
Close #1889

Squashed commit of the following:

commit 4fa57f692d0a66d20e9ba9d235ec423e5118db20
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Fri Jul 17 17:28:38 2020 +0300

    Revert "Update locales"

    This reverts commit dd88f8047e612022678dfabe8dda446c4b8f201b.

commit dd88f8047e612022678dfabe8dda446c4b8f201b
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Fri Jul 17 17:26:00 2020 +0300

    Update locales

commit 954ae2e97e988b53856766100c873e6d40b75123
Merge: 28f205a8 c1e56c83
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Fri Jul 17 17:23:50 2020 +0300

    Merge branch 'master' into feature/1889

commit 28f205a858281811af7d708356e10108983c7292
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Fri Jul 17 15:39:57 2020 +0300

    Rename systemdns-resolved ---> systemd-resolved

commit 3d62e26984f73285a7b788b6f42efcb3376ae562
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Fri Jul 17 15:15:10 2020 +0300

    Add commas to port 53 locale

commit 457563085186244dca36a80a959e5a9486558299
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Fri Jul 17 13:34:13 2020 +0300

    minor

commit 7aacf879951f8ab619824730cb28ea5cd2518812
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Fri Jul 17 13:27:55 2020 +0300

    + client: Show a link to the FAQ article about Ubuntu when port 53 is in use
2020-07-17 17:59:34 +03:00
Artem Baskal
c1e56c837b + client: Update locales
Squashed commit of the following:

commit 6d743bb15974a85fedb004a3c639b1f849756e2d
Merge: 1f6c5091 7d2c7a61
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Fri Jul 17 17:10:51 2020 +0300

    Merge branch 'master' into feature/update_locales

commit 1f6c50915e63c18834d63d3f8535d24a4e894647
Merge: 1a861a98 4df02714
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Thu Jul 16 11:23:08 2020 +0300

    Merge branch 'master' into feature/update_locales

commit 1a861a98326a749a347c184bb2b9aff663b3dd09
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Thu Jul 16 11:22:47 2020 +0300

    Update locales

commit 3f4850822c95b1147f39df939eca568f13b2c0dc
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Wed Jul 15 16:07:40 2020 +0300

    Update locales

commit 0f06bd8f188130e97394c8f20f27b66f263612cc
Merge: 5abae336 38366ba8
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Wed Jul 15 12:59:22 2020 +0300

    Merge branch 'master' into feature/update_locales

commit 5abae33603e84dc410f77e7ec622314e85e03951
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Wed Jul 15 12:57:36 2020 +0300

    Update locales

commit 717455ecf42135077a7dae31281b1da0d89b27e3
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Mon Jul 13 17:45:15 2020 +0300

    Rename label

commit b399ef33eed3c0447d5c651d3b678d482dddbb5b
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Mon Jul 13 17:43:08 2020 +0300

    Replace 'All responses' with 'All queries'

commit 1f5a62a3d95906057c862b55d2ba91d67b346604
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Mon Jul 13 16:18:54 2020 +0300

    + client: Update locales
2020-07-17 17:21:20 +03:00
Artem Baskal
7d2c7a61f1 - client: Use the same tooltip style everywhere
Close #1866

Squashed commit of the following:

commit 3347832caa33b01a0155b212987f02dc4824ab08
Merge: 7766502d d794b11e
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Fri Jul 17 15:12:45 2020 +0300

    Merge branch 'master' into fix/1866

commit 7766502d4a904ad0a4d240481f7eabf0e25cfb62
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Fri Jul 17 12:16:59 2020 +0300

    Fix icon color classes

commit 90191bf74b5eb1855c733c226f7acb4e906c7ad9
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Fri Jul 17 11:46:22 2020 +0300

    Use logs icons, use pointer cursor, fix review markup formatting

commit 0ba50fcd956101f5054ce38c2329df3e8abdfcd2
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Thu Jul 16 18:05:30 2020 +0300

    Use help cursor on tooltips

commit bf4e14afe69f874d29be73d8cd4cfbe240ca0304
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Thu Jul 16 17:41:47 2020 +0300

    Use tooltip in logs, rename tooltip classes

commit 00568fdc8e8484c5bae67c51ee8189a3a558e219
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Thu Jul 16 17:01:49 2020 +0300

    - client: Use the same tooltip style everywhere
2020-07-17 15:24:39 +03:00
Andrey Meshkov
d794b11e7a Merge: snap desktop icon
* commit '82858474a5b165efb4181975067a36e3668b89da':
  Update adguard-home-web.sh
  Update adguard-home-web.sh
  Add web launcher for desktop users
2020-07-17 10:38:19 +03:00
Andrey Meshkov
82858474a5 Added desktop icon for a snap 2020-07-16 20:25:39 +03:00
Andrey Meshkov
4df02714fd Merge branch 'master' of ssh://bit.adguard.com:7999/dns/adguard-home 2020-07-16 11:12:16 +03:00
Andrey Meshkov
1bce871fcb added instruction on how to build for a different platform 2020-07-16 11:12:12 +03:00
Andrey Meshkov
2d7be0a1e0 Merge: - auth: fix logic with --glinet argument
* commit '177404d15720bc275f356977f991a188c9ba933a':
  - auth: fix logic with --glinet argument
2020-07-16 10:52:07 +03:00
Simon Zolin
177404d157 - auth: fix logic with --glinet argument 2020-07-16 10:15:26 +03:00
Artem Baskal
e46db985e8 - client: Fix query logs UI issues
Close #1828

Squashed commit of the following:

commit bf96b9f2cc99a94a1289c47b04cde136cf0c9f37
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Wed Jul 15 20:44:22 2020 +0300

    Remove field domain from response tooltip

commit bba35fdbed6d1e2e532c8effaf2da69de3f2c078
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Wed Jul 15 20:29:24 2020 +0300

    Unify mobile modal

commit 5ee2da41594497fd64eadf0fd64c24afdad94e44
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Wed Jul 15 19:02:47 2020 +0300

    Delete unnecessary comment

commit ac3a3f13009ad508ddd7eb31aadf7e590a5c2829
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Wed Jul 15 18:59:44 2020 +0300

    minor

commit 4b1969a53ce2fcfc859c228b27816459bd8bd1d0
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Wed Jul 15 18:56:51 2020 +0300

    Fix safari mediaQuery change listener issue

commit d85de5c4e90d2460632e593cffe3ceea3137e92c
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Wed Jul 15 18:10:30 2020 +0300

    Fix logs input search markup (for different locales)

commit 6d704399c5379dfda663503b3a5b1d12a92732b2
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Wed Jul 15 16:05:35 2020 +0300

    Fix whois_info markup, fix domain name overflow

commit 4c900f60a9c6b71b427d968177252eb168c424c0
Merge: a3955c98 38366ba8
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Wed Jul 15 13:42:43 2020 +0300

    Merge branch 'master' into fix/1828

commit a3955c989a939866c6772b147547344b3f8769c4
Merge: c91c41cb 2759d81a
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Mon Jul 13 15:14:47 2020 +0300

    Merge branch 'master' into fix/1828

commit c91c41cbc5f616e0af1092424e42b909d2f43f7c
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Mon Jul 13 13:48:54 2020 +0300

    Fix cell overflow

commit 19e1d31a40f2e1bb1189a85b72507bcc364d4e0c
Merge: af31f48c a33164bf
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Mon Jul 13 12:36:44 2020 +0300

    Merge branch 'master' into fix/1828

commit af31f48c4d2699ebfbd2034711c51499b42e40f5
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Mon Jul 13 10:45:57 2020 +0300

    minor

commit d9507c5f3f5758e587766ae0fa45f1b9ad703ccf
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Fri Jul 10 18:34:22 2020 +0300

    - client: Fix query logs UI issues
2020-07-15 20:55:13 +03:00
Artem Baskal
38366ba801 Setup pre-commit lint hook
Squashed commit of the following:

commit 02591b74c184faf7f7156e95cf05a78fb0ea22a7
Merge: 4057c8ae a32c1f2e
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Wed Jul 15 12:36:20 2020 +0300

    Merge branch 'master' into feature/git-hooks

commit 4057c8ae117dfb5de493769dbf1577c8d59035a4
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Tue Jul 14 20:04:38 2020 +0300

    Review changes

commit 2400ab77d9e0e3f7b62b0ffd64aeccf369ff84cd
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Tue Jul 14 16:27:14 2020 +0300

    Add lint-js and lint-go to .PHONY

commit 8a4efc2cb4f2d53ebea4b88b8182e4c1eb7812eb
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Tue Jul 14 15:47:14 2020 +0300

    Run linter only if corresponding file extension is changed

commit 8e2e110e9c9c3f865503cf3c0cd3e31dd4579b71
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Mon Jul 13 19:07:42 2020 +0300

    Setup pre-commit lint hooks
2020-07-15 12:49:08 +03:00
Artem Baskal
a32c1f2ee0 - client: Fix client Access settings normalization
Close #1820

Squashed commit of the following:

commit 5aadec2e6e126588313ff006d6f95223ba19a526
Merge: a4db6b42 95f41285
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Wed Jul 15 11:15:31 2020 +0300

    Merge branch 'master' into fix/1820

commit a4db6b42ab9cbf43d96c783a72a99e0a2c594108
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Tue Jul 14 19:08:09 2020 +0300

    Remove textarea comma splitting

commit bb34797aac6602b405941dbd90fe6a81b663bb92
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Tue Jul 14 18:21:18 2020 +0300

    Fix client Access settings normalization

commit ac4fb536514f54c5722077d78dbbd981c4e906a8
Merge: 0c758ddc b9fca8d0
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Tue Jul 14 18:14:38 2020 +0300

    Merge branch 'master' into fix/1820

commit 0c758ddcd738136b92e6f947a8068ecc59f7ec25
Merge: 15650db3 f5a1f311
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Fri Jul 3 11:22:00 2020 +0300

    Merge branch 'master' into fix/1820

commit 15650db35323009001fd427a74a312705b54ac86
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Mon Jun 29 12:01:51 2020 +0300

    '- client: Don't normalise disallowed domains'
2020-07-15 12:35:37 +03:00
Simon Zolin
95f4128551 Merge: - fix 'Check for Updates' button visibility
Close #1878

* commit '61981a927babe1ec771c01c13e2d503e3dc957e5':
  Change getVersionSuccess reducer
  minor
  * POST /control/version.json: change response when update is disabled
2020-07-14 19:28:56 +03:00
ArtemBaskal
61981a927b Change getVersionSuccess reducer 2020-07-14 18:42:24 +03:00
Simon Zolin
54693bb158 minor 2020-07-14 17:10:34 +03:00
Simon Zolin
d38b58cd85 * POST /control/version.json: change response when update is disabled 2020-07-14 17:08:53 +03:00
Andrey Meshkov
b9fca8d0a9 -(global): typo in the makefile 2020-07-14 11:55:26 +03:00
Artem Baskal
da4a1ec23d +client: "Drill down" to activity reports
Close #1625

Squashed commit of the following:

commit a01f12c4e5831c43dbe3ae8a80f4db12077dbb2a
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Mon Jul 13 15:50:15 2020 +0300

    minor

commit b8ceb17a3b12e47de81af85fa30c2961a4a42fab
Merge: 702c55ed fecf5494
Author: Andrey Meshkov <am@adguard.com>
Date:   Mon Jul 13 15:32:44 2020 +0300

    Merge branch 'feature/1625' of ssh://bit.adguard.com:7999/dns/adguard-home into feature/1625

commit 702c55edc1ba2ab330eda8189498dfff33c92f5f
Author: Andrey Meshkov <am@adguard.com>
Date:   Mon Jul 13 15:32:41 2020 +0300

    fix makefile when there's no gopath

commit fecf5494b8c1719cb70044f336fe99c341802d25
Merge: d4c811f9 8a417604
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Mon Jul 13 15:30:21 2020 +0300

    Merge branch 'master' into feature/1625

commit d4c811f9630dee448012434e2f50f34ab8b8b899
Merge: b0a037da a33164bf
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Mon Jul 13 12:35:16 2020 +0300

    Merge branch 'master' into feature/1625

commit b0a037daf48913fd8a4cda16d520835630072520
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Mon Jul 13 12:34:42 2020 +0300

    Simplify sync logs action creators

commit eeeb620ae100a554f59783fc2a14fad525ce1a82
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Mon Jul 13 11:17:08 2020 +0300

    Review changes

commit 4cbc59eec5c794df18d6cb9b33f39091ce7cfde9
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Fri Jul 10 15:23:37 2020 +0300

    Update tracker tooltip class

commit 0a705301d4726af1c8f7f7a5776b11d338ab1d54
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Fri Jul 10 13:46:10 2020 +0300

    Replace depricated addListener

commit 2ac0843239853da1725d2e038b5e4cbaef253732
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Fri Jul 10 13:39:45 2020 +0300

    Validate response_status url param

commit 2178039ebbd0cbe2c0048cb5ab7ad7c7e7571bd1
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Fri Jul 10 12:58:18 2020 +0300

    Fix setting empty search value, use strict search on drill down, extract refreshFilteredLogs action

commit 4b11c6a34049bd133077bad035d267f87cdec141
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Thu Jul 9 19:41:48 2020 +0300

    Normalize input search

commit 3fded3575b21bdd017723f5e487c268074599e4f
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Thu Jul 9 18:20:05 2020 +0300

    Optimize search

commit 9073e032e4aadcdef9d826f16a10c300ee46b30e
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Thu Jul 9 14:28:41 2020 +0300

    Update url string params

commit a18cffc8bfac83103fb78ffae2f786f89aea8ba1
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Thu Jul 9 12:55:50 2020 +0300

    Fix reset search

commit 33f769aed56369aacedd29ffd52b527b527d4a59
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Wed Jul 8 19:13:21 2020 +0300

    WIP: Add permlinks

commit 4422641cf5cff06c8485ea23d58e5d42f7cca5cd
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Wed Jul 8 14:42:28 2020 +0300

    Refactor Counters, add response_status links to query log

commit e8bb0b70ca55f31ef3fcdda13dcaad6f5d8479b5
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Tue Jul 7 19:33:04 2020 +0300

    Delete unnecessary file

commit b20816e9dad79866e3ec04d3093c972967b3b226
Merge: 6281084e d2c3af5c
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Tue Jul 7 19:30:44 2020 +0300

    Resolve conflict

commit d2c3af5cf227d76f876d6d94ca016d4b242b2515
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Tue Jul 7 17:14:51 2020 +0300

    + client: Add git hooks

... and 5 more commits
2020-07-13 16:06:56 +03:00
Artem Baskal
8a417604a9 - client: Fix query logs UI issues
Close #1828

Squashed commit of the following:

commit a3955c989a939866c6772b147547344b3f8769c4
Merge: c91c41cb 2759d81a
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Mon Jul 13 15:14:47 2020 +0300

    Merge branch 'master' into fix/1828

commit c91c41cbc5f616e0af1092424e42b909d2f43f7c
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Mon Jul 13 13:48:54 2020 +0300

    Fix cell overflow

commit 19e1d31a40f2e1bb1189a85b72507bcc364d4e0c
Merge: af31f48c a33164bf
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Mon Jul 13 12:36:44 2020 +0300

    Merge branch 'master' into fix/1828

commit af31f48c4d2699ebfbd2034711c51499b42e40f5
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Mon Jul 13 10:45:57 2020 +0300

    minor

commit d9507c5f3f5758e587766ae0fa45f1b9ad703ccf
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Fri Jul 10 18:34:22 2020 +0300

    - client: Fix query logs UI issues
2020-07-13 15:23:13 +03:00
Simon Zolin
2759d81afe Merge: + service: Adding freebsd arm support
Close #1871

* commit '44aad1515aa41550f8313e7c61bcd33c24950710':
  + service: Adding freebsd arm support
2020-07-13 15:02:43 +03:00
Tejas Kokje
44aad1515a + service: Adding freebsd arm support 2020-07-13 13:34:38 +03:00
Artem Baskal
af5cb5aa5d Merge pull request #691 in DNS/adguard-home from agneevX-patch-1 to master
Squashed commit of the following:

commit 47f1bef1f584eb02a3ddcf048de7cc62dbc7ddf3
Merge: a7ff1f23 a33164bf
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Mon Jul 13 12:36:28 2020 +0300

    Merge branch 'master' into agneevX-patch-1

commit a7ff1f236ad53d7e6b30bb683443b77ebe405690
Merge: 304a51f1 b5aa42fc
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Mon Jul 13 11:42:28 2020 +0300

    Merge branch 'patch-1' of git://github.com/agneevX/AdGuardHome into agneevX-patch-1

commit b5aa42fc28
Author: Agneev Mukherjee <19761269+agneevX@users.noreply.github.com>
Date:   Fri Jun 26 17:50:22 2020 +0530

    Update index.html

commit 15f0e5e5bc
Author: Agneev Mukherjee <19761269+agneevX@users.noreply.github.com>
Date:   Fri Jun 26 17:49:37 2020 +0530

    Update install.html

commit bef3adc381
Author: Agneev Mukherjee <19761269+agneevX@users.noreply.github.com>
Date:   Thu Jun 25 18:04:07 2020 +0530

    Update login.html
2020-07-13 13:10:05 +03:00
Andrey Meshkov
a33164bf18 Merge CI revamped and other enhancements
GoReleaser for multi-arch binaries
Switch to GitHub Actions (more versatile) with 2 workflows
Docker multi-manifest image with buildx
Fix eslint run script
Use tools.go paradigm for external dependencies (packr)
Use go generate for packr
Enhanced Dockerfile

Co-authored-by: CrazyMax crazy-max@users.noreply.github.com

* commit 'c2642cc58ece302182148c7126d3b9b1176166a8':
  fix GH actions snapshot build
  Removed snapshot target
  Updated links to beta&edge versions in README
  Excluded some paths from golang linter
  Fix version check when req body is empty
  Don't set the version tag for edge channel
  don't fail on packr
  fix packr detect
  Improve makefile clean target
  Fix project name, update README
  CI revamp part 2 (#1875)
  CI Revamp by @crazy-max (#1873)
2020-07-13 12:02:43 +03:00
Andrey Meshkov
c2642cc58e fix GH actions snapshot build 2020-07-10 23:54:02 +03:00
Andrey Meshkov
6811d6207a Removed snapshot target 2020-07-10 23:24:43 +03:00
Andrey Meshkov
1fe568b842 Updated links to beta&edge versions in README 2020-07-10 22:21:11 +03:00
Andrey Meshkov
f6217e602b Excluded some paths from golang linter 2020-07-10 22:20:46 +03:00
Andrey Meshkov
fdf608904d Fix version check when req body is empty 2020-07-10 22:20:30 +03:00
Andrey Meshkov
ab401cabe2 Don't set the version tag for edge channel 2020-07-10 18:28:09 +03:00
Andrey Meshkov
0be0299135 don't fail on packr 2020-07-10 17:18:04 +03:00
Andrey Meshkov
dc5c89795b fix packr detect 2020-07-10 17:10:11 +03:00
Andrey Meshkov
db0283098c Improve makefile clean target 2020-07-10 16:58:52 +03:00
Andrey Meshkov
2bbffffcfc Fix project name, update README 2020-07-10 14:57:53 +03:00
Andrey Meshkov
632a47d56f CI revamp part 2 (#1875)
* Added Makefile
* Updated README with the new information
* Updated Github Actions
* Added FreeBSD ARM builds
* Prepared to our internal CI
* Improved the auto-update version check
2020-07-09 19:54:53 +03:00
Andrey Meshkov
ff23d7b6d7 CI Revamp by @crazy-max (#1873)
* CI revamped and other enhancements
GoReleaser for multi-arch binaries
Switch to GitHub Actions (more versatile) with 2 workflows
Docker multi-manifest image with buildx
Fix eslint run script
Go sum fixer
Use tools.go paradigm for external dependencies (packr)
Use go generate for packr

* Update workflows
* Add Slack notification
* Rebase
* Enhanced Dockerfile
* Fix go generate
* Fix Golangci lint
* Fix npm cache with v2 cache action
* Fix Dockerfile
* Trigger notif
* Issue with packr
* s390x platform not supported by packr
* Enhance layers
* Fix go modules

Co-authored-by: CrazyMax <crazy-max@users.noreply.github.com>
2020-07-09 11:53:41 +03:00
Andrey Meshkov
304a51f17e *(home): added anti-AD regional filter list
Closes: https://github.com/AdguardTeam/AdGuardHome/issues/1357
2020-07-08 10:57:46 +03:00
Andrey Meshkov
5d08e08a7a Merge branch 'patch-1' of git://github.com/ZusorCode/AdGuardHome into ZusorCode-patch-1 2020-07-08 10:31:23 +03:00
Andrey Meshkov
49646cf706 + client: Add choosing filter lists
Fix #1325

Squashed commit of the following:

commit d8f7de72226855a961051e09b4b78f4dd71baadd
Merge: f9bbe861 36f3218b
Author: Andrey Meshkov <am@adguard.com>
Date:   Mon Jul 6 19:34:53 2020 +0300

    Merge branch 'master' into feature/1325

commit f9bbe861c9dbd631b5708f8eb073270b83a3f70f
Merge: 99710fef 4f8138bd
Author: Andrey Meshkov <am@adguard.com>
Date:   Mon Jul 6 19:33:53 2020 +0300

    Merge branch 'master' into feature/1325

commit 99710fef0825966b224e4a30a979e4d45f929af1
Merge: 8329326d a5380ead
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Mon Jul 6 18:04:32 2020 +0300

    Merge branch 'feature/1325' of ssh://bit.adguard.com:7999/dns/adguard-home into feature/1325

commit 8329326d6470dfcf2cdc4479e0290f7cc56ddca4
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Mon Jul 6 18:03:56 2020 +0300

    Update locales, add title for select modal

commit a5380ead56d15eba3f36c38f8fc0eedc89c2c57a
Author: Andrey Meshkov <am@adguard.com>
Date:   Mon Jul 6 17:26:37 2020 +0300

    Update readme

commit dfe6e254d909ee6994cacef53d417bb073dfd802
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Mon Jul 6 13:44:19 2020 +0300

    Change info icon width

commit 06120cf3da9065fc9cc3a2864b976563d4cfe06a
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Mon Jul 6 13:38:58 2020 +0300

    Review changes

commit ae3c6cacc5610a0f95bec2f6ef8a63e90041e4dd
Merge: dd56a3bb 73c5d9ea
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Mon Jul 6 12:01:57 2020 +0300

    Merge branch 'master' into feature/1325

commit dd56a3bbb851687823242fa653cc3bb63dedf5e4
Author: Andrey Meshkov <am@adguard.com>
Date:   Fri Jul 3 15:52:01 2020 +0300

    Added blocklists

commit f08f0eb0cdd8cd488d3a8f1182854b72775cf06e
Merge: 854d4f88 21dfb5ff
Author: Andrey Meshkov <am@adguard.com>
Date:   Fri Jul 3 14:06:19 2020 +0300

    Merge branch 'master' into feature/1325

commit 854d4f88017a33dc7f788835dc98591cec9b213f
Merge: 23946266 2c47053c
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Mon Jun 22 14:09:31 2020 +0300

    Merge branch 'master' into feature/1325

commit 23946266d4913479bcecfcb7702a096983d20685
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Tue May 26 19:00:26 2020 +0300

    Math filters by url

commit 661e0482f01ffea0d0f5aa81b3b253143d0ca112
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Mon May 25 21:07:21 2020 +0300

    Change data format

commit ac4ff483b6b06ec0be49a41b5ddd3329f4ae2bbb
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Thu May 14 19:52:45 2020 +0300

    + client: Add choosing filter lists
2020-07-06 19:58:44 +03:00
Andrey Meshkov
36f3218b1c - client: Fix mobile query log
Fix #1828

* commit '036ab4128df678f5aa6037f6ad622e8f428c5efa':
  - client: Fix mobile query log
2020-07-06 19:34:41 +03:00
ArtemBaskal
036ab4128d - client: Fix mobile query log 2020-07-06 19:28:07 +03:00
Andrey Meshkov
4f8138bdce Fix #1764
+ rewrites: support IP exception; support "pass A only" case

* commit '32610840f9a0769bb58c7443a485c5e5b0cd2b68':
  + rewrites: support IP exception; support "pass A only" case
2020-07-06 17:00:10 +03:00
Artem Baskal
73c5d9eaef - client: Improve DNS Rewrites
Close #1764

Squashed commit of the following:

commit 76af537597b2f3c0860716a45e4e23662cde22c8
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Mon Jul 6 10:59:44 2020 +0300

    - client: Improve DNS Rewrites
2020-07-06 11:23:23 +03:00
Andrey Meshkov
32610840f9 Merge 1764 Improve DNS Rewrites
* commit '5980db1a2d00b9f94a7401530a7ba1437c32efb6':
  + rewrites: support IP exception; support "pass A only" case
2020-07-06 01:38:07 +03:00
Andrey Meshkov
2f76f5d048 Merge: Fix #1587 UI + dns: new settings for cache
* commit '7dd3d944e86808412b82d7e0d804ef1909443e81':
  Extract validation functions in the separate file
  Add DNS cache setting UI
  + dns: new settings for cache
2020-07-06 01:37:39 +03:00
ArtemBaskal
7dd3d944e8 Merge branch 'master' into 1587-cache-settings 2020-07-03 22:30:56 +03:00
Andrey Meshkov
48f40d5f01 Merge: fix #1587 + dns: new settings for cache
* commit '4303b3dd2f6c4e1f64e8cd8575070de35b3d6df7':
  + dns: new settings for cache
2020-07-03 20:54:25 +03:00
Simon Zolin
4303b3dd2f + dns: new settings for cache
Squashed commit of the following:

commit e5b488249a4d972efd63c6e96830d9f30829aee1
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Tue Jun 16 15:38:27 2020 +0300

    + dns: new settings for cache
2020-07-03 20:35:04 +03:00
Simon Zolin
dab0a9d87a + "--glinet" command-line argument: Run in GL-Inet compatibility mode
Close #1853

Squashed commit of the following:

commit 3730cafabe8fa1dbf2bf75915079d2effe4ff9a3
Merge: 533ae3c2 6b134469
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Fri Jul 3 19:21:08 2020 +0300

    Merge remote-tracking branch 'origin/master' into 1853-glinet

commit 533ae3c2678cd6cfd26bf9560bee4eb5a015a615
Merge: 3521992b 21dfb5ff
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Fri Jul 3 19:14:45 2020 +0300

    Merge remote-tracking branch 'origin/master' into 1853-glinet

commit 3521992b4609fa3400942c89f7a7546dade459bc
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Fri Jul 3 18:04:53 2020 +0300

    logs

commit 3e0258782b1a14c08156fe65940ae7b661a42b54
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Fri Jul 3 17:11:47 2020 +0300

    fix

commit bb814db9df1c770d0ea02eafd12bedd122bef894
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Fri Jul 3 16:58:37 2020 +0300

    minor

commit b161bbc5749ce76b16600e0153120935ad20077e
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Fri Jul 3 16:53:22 2020 +0300

    move code

commit c506e81265bdee140c0f61255f927c13738efc1a
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Thu Jul 2 10:50:56 2020 +0300

    test

commit c09f201cbd88498a2328be332197e4d96e5fb115
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Thu Jul 2 10:42:23 2020 +0300

    + "--glinet" command-line argument: Run in GL-Inet compatibility mode
2020-07-03 20:34:08 +03:00
Artem Baskal
6b134469d4 - client: Clear input field when switching from logs page
Close #1523

Squashed commit of the following:

commit 9ae9b0e480c2ec6bd835faf4caccacd8c1fdfe9f
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Fri Jul 3 17:56:34 2020 +0300

    Setup babel and apply everywhere nullish coalescing and optional chaining operators

commit 0966063842a79078e1d61a54c271e18c9427b2b1
Merge: 42a54f2b 21dfb5ff
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Fri Jul 3 16:59:34 2020 +0300

    Merge branch 'master' into fix/1523

commit 42a54f2ba0d8f5f4e4c04f16abc507b5d9009035
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Fri Jul 3 13:30:25 2020 +0300

    Center mobile tooltip buttons

commit 9cdd501a863b596f1d903f8dd3c449ffbe4c1604
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Fri Jul 3 13:21:37 2020 +0300

    Add cross icon to clear input on click

commit 1308b93c42ffea2ffb7457c34aef96e5cdaccaf2
Merge: 265fec7c da546790
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Mon Jun 29 19:42:04 2020 +0300

    Merge branch 'master' of ssh://bit.adguard.com:7999/dns/adguard-home

commit 265fec7c72656b0c4738623cb470f1c14736230a
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Mon Jun 29 19:41:37 2020 +0300

    - client: Clear input field when switching from logs page
2020-07-03 19:17:58 +03:00
ArtemBaskal
0c4905fa2b Extract validation functions in the separate file 2020-07-03 19:10:05 +03:00
Simon Zolin
5980db1a2d + rewrites: support IP exception; support "pass A only" case
+ rewrites: support IP exception

	host.com -> 1.2.3.4
	host.com -> AAAA

Response:

	A:
		A = 1.2.3.4
	AAAA:
		AAAA = <IPv6 address of host.com>

+ rewrites: support "pass A only" case

	host.com -> A

Response:

	A:
		A = <IPv4 address of host.com>
	AAAA:
		<empty>
2020-07-03 17:37:51 +03:00
ArtemBaskal
c12309a1b2 Resolve conflict 2020-07-03 16:58:23 +03:00
ArtemBaskal
2d5287fcf3 Add DNS cache setting UI 2020-07-03 16:53:53 +03:00
Simon Zolin
21dfb5ffe8 * querylog: case-insensitive search by domain name
Close #1828

Squashed commit of the following:

commit 347aff1f8c5293bd06ecc0693970fe447b6e2c75
Merge: f07c8dc0 9df7aba9
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Fri Jul 3 12:10:02 2020 +0300

    Merge remote-tracking branch 'origin/master' into 1828-qlog-case-insens

commit f07c8dc0665585ce00c415293c47c5a8c9724881
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Fri Jul 3 12:09:49 2020 +0300

    minor

commit 512c7acd48f649a0d11b4fef66a1351fcd19635b
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Thu Jul 2 19:01:43 2020 +0300

    minor

commit 9f5700af56340c38a2d892101e32959702816205
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Thu Jul 2 16:53:56 2020 +0300

    * querylog: case-insensitive search by domain name
2020-07-03 12:21:09 +03:00
Artem Baskal
9df7aba9e1 - client: Fix client tracker source links
Close #1813

Squashed commit of the following:

commit 7f2286cb6e36f90ca19f2830b341d34af513c9a3
Merge: e9f2e08b 9640752d
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Fri Jul 3 11:55:46 2020 +0300

    Merge branch 'master' into fix/1813

commit e9f2e08b608ad14e5b327ab86d8faa66784bae44
Merge: ecee0977 f5a1f311
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Fri Jul 3 11:49:52 2020 +0300

    Merge branch 'master' into fix/1813

commit ecee0977ab5439d3be2a99447a771871f0340a2e
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Fri Jul 3 11:35:10 2020 +0300

    Capitalize category names

commit b4b47ce0177369fb4da5ad2e10a78b2d96bd81c6
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Thu Jul 2 18:11:40 2020 +0300

    - client: Fix client tracker source links
2020-07-03 12:01:03 +03:00
Artem Baskal
9640752d20 - client: Don't normalise disallowed domains
Close #1820

Squashed commit of the following:

commit 0c758ddcd738136b92e6f947a8068ecc59f7ec25
Merge: 15650db3 f5a1f311
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Fri Jul 3 11:22:00 2020 +0300

    Merge branch 'master' into fix/1820

commit 15650db35323009001fd427a74a312705b54ac86
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Mon Jun 29 12:01:51 2020 +0300

    '- client: Don't normalise disallowed domains'
2020-07-03 11:45:56 +03:00
Artem Baskal
f5a1f31103 - client: Display DomainCell popover
Close #1817

Squashed commit of the following:

commit 203d52e9b23013cb516765c3d41c288f8ce9d90c
Merge: 5c78d918 205680b7
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Fri Jul 3 11:15:28 2020 +0300

    Merge branch 'master' into fix/1817

commit 5c78d918ee2901ff138d5d06046e74ed00dc230d
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Thu Jul 2 17:50:59 2020 +0300

    - client: Display DomainCell popover
2020-07-03 11:21:23 +03:00
Artem Baskal
205680b71b - client: Make language tag in HTML same as setting language
Close #1797

Squashed commit of the following:

commit b822a83cb05cc5ba92000cdb7d1c12629471bc57
Merge: e2fa24fb 72ce5f57
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Fri Jul 3 11:02:56 2020 +0300

    Merge branch 'master' into fix/1797

commit e2fa24fb9fa0c15f8411e186e90e0ffb1c705fb2
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Thu Jul 2 18:21:30 2020 +0300

    Extract helper

commit ba8473e7b16ab8b1abbee4b42a4ef2b0de8c136b
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Thu Jul 2 15:31:42 2020 +0300

    - client: Make language tag in HTML same as setting language
2020-07-03 11:14:54 +03:00
Simon Zolin
72ce5f57c1 - auth: show detailed error message if Bolt couldn't initialize its DB
Close #1846

Squashed commit of the following:

commit 34c612852b784d78191b37577324adeb0149e789
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Thu Jul 2 16:43:27 2020 +0300

    - auth: show detailed error message if Bolt couldn't initialize its DB
2020-07-02 16:52:29 +03:00
Simon Zolin
250b254c33 - home: when printing HTTP addresses to console, use all IP addresses
Close #1856

Squashed commit of the following:

commit 47ff99f147216bf28f1395847148f084b9dd4deb
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Thu Jul 2 14:27:03 2020 +0300

    - home: when printing HTTP addresses to console, use all IP addresses
2020-07-02 14:42:39 +03:00
Andrey Meshkov
da6cd57587 rollback dns 2020-06-29 20:37:25 +03:00
Andrey Meshkov
25a14e98ab add dns to docker run 2020-06-29 20:34:26 +03:00
Andrey Meshkov
da5467903e Fix #1433 2020-06-29 17:46:58 +03:00
Andrey Meshkov
4b2c33d12e Update translations 2020-06-29 17:24:16 +03:00
Simon Zolin
e38a1a5833 * use dnsproxy v0.29.1
Close #1777

Squashed commit of the following:

commit 5aab12162e9366ccf37bfe662f22bee59b8f98f5
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Mon Jun 29 12:07:34 2020 +0300

    * use dnsproxy v0.29.1
2020-06-29 14:03:12 +03:00
Alan Pope
0297c12911 Update adguard-home-web.sh 2020-06-26 12:33:37 +01:00
Alan Pope
5e0fe8ba3f Update adguard-home-web.sh
Add missing space
2020-06-26 12:33:15 +01:00
Alan Pope
8863e61e8e Add web launcher for desktop users 2020-06-26 12:19:29 +01:00
Simon Zolin
7a77dadab0 Merge: * SB/PC: limit the number of hashes in request to 4
Close #1697

* commit '0ee3505e1f0cc3df78651f2f9cb393c5ff3df26e':
  * SB/PC: limit the number of hashes in request to 4
2020-06-26 11:21:09 +03:00
Andrey Meshkov
4f295d41e8 Merge: - client: Query logs fix
* commit 'caf78ae3a084f1bf298a2a12940042e1645cad2b':
  minor
  Open tooltip on hover, show scroll on overflow y
  Replace tooltip component
  -client: Fix query log bugs
2020-06-24 00:11:59 +03:00
Andrey Meshkov
7d93457154 Merge : *(home): do not require root privileges on the first run
* commit '7b2cc51e35bfb725f02e91cb991ddd099b81ee0c':
  fix function comment
  *(home): do not require root privileges on the first run
2020-06-23 18:24:00 +03:00
Andrey Meshkov
7b2cc51e35 fix function comment 2020-06-23 18:04:26 +03:00
Andrey Meshkov
b43223d302 *(home): do not require root privileges on the first run
Instead of requiring root privileges, we now check if AdGuard Home can
bind to privileged ports. If it cannot, we suggest either running it
with root privileges or grant CAP_NET_BIND_SERVICE capability. Please
note, that on Windows we still require root access.

Closes: #1699
2020-06-23 18:02:28 +03:00
Andrey Meshkov
6693de9e8e Merge: + pass client Name and IP to dnsfilter
use urlfilter v0.11.0

Fix #1732
Fix #1761

* commit '890876cb0539d4916a21c0e0771a9d4e8322b9be':
  + pass client Name and IP to dnsfilter
2020-06-23 16:20:34 +03:00
Simon Zolin
890876cb05 + pass client Name and IP to dnsfilter
* use urlfilter v0.11.0
2020-06-23 14:36:26 +03:00
Simon Zolin
0ee3505e1f * SB/PC: limit the number of hashes in request to 4 2020-06-23 12:39:19 +03:00
Simon Zolin
49a92605b8 + dns: respond to PTR requests for internal IP addresses from DHCP
Close #1682

Squashed commit of the following:

commit 2fad3544bf8853b1f8f19ad8b7bc8a490c96e533
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Mon Jun 22 17:32:45 2020 +0300

    minor

commit 7c17992424702d95e6de91f30e8ae2dfcd8de257
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Mon Jun 22 16:09:34 2020 +0300

    build

commit 16a52e11a015a97d3cbf30362482a4abd052192b
Merge: 7b6a73c8 2c47053c
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Mon Jun 22 16:08:32 2020 +0300

    Merge remote-tracking branch 'origin/master' into 1682-dhcp-resolve

commit 7b6a73c84b5cb9a073a9dfb7d7bdecd22e1e1318
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Mon Jun 22 16:01:34 2020 +0300

    tests

commit c2654abb2e5e7b7e3a04e4ddb8e1064b37613929
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Mon Jun 1 15:15:13 2020 +0300

    + dnsforward: respond to PTR requests for internal IP addresses

    {[IP] => "host"} <- DNSforward <-(leases)-- DHCP
2020-06-23 12:13:13 +03:00
ArtemBaskal
caf78ae3a0 Merge with master 2020-06-19 14:48:10 +03:00
ArtemBaskal
679b79a89d minor 2020-06-19 14:44:23 +03:00
Simon Zolin
2c47053cfe - autohosts: fix crash on startup if filesystem watcher couldn't be initialized
Close #1814

Squashed commit of the following:

commit ba17a5b3c61a8a5282beb0cca470e2302e83c0d6
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Fri Jun 19 10:08:44 2020 +0300

    - autohosts: fix crash on startup if filesystem watcher couldn't be initialized
2020-06-19 14:27:23 +03:00
Andrey Meshkov
aa7b3c33d5 Fix #1810
- client: Fix query log bugs

Squashed commit of the following:

commit 188bbad32a2af8a1867fc3ef91d81cda6aa94853
Merge: 15db9e9c ec6e0bea
Author: Andrey Meshkov <am@adguard.com>
Date:   Thu Jun 18 22:43:11 2020 +0300

    Merge branch 'master' into fix/1810

commit 15db9e9c1d
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Thu Jun 18 19:01:10 2020 +0300

    Open tooltip on hover, show scroll on overflow y

commit 19c013378d
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Thu Jun 18 17:17:46 2020 +0300

    Replace tooltip component

commit 7e7103dc08
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Thu Jun 18 14:21:54 2020 +0300

    -client: Fix query log bugs
2020-06-18 22:53:02 +03:00
ArtemBaskal
15db9e9c1d Open tooltip on hover, show scroll on overflow y 2020-06-18 19:01:10 +03:00
ArtemBaskal
19c013378d Replace tooltip component 2020-06-18 17:17:46 +03:00
ArtemBaskal
7e7103dc08 -client: Fix query log bugs 2020-06-18 14:21:54 +03:00
Simon Zolin
ec6e0bea07 * openapi: describe top_* array entries in /stats
Squashed commit of the following:

commit d0b640cb36985c82f1020de99fba2201a1c54738
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Thu Jun 18 11:53:16 2020 +0300

    * openapi: describe top_* array entries in /stats
2020-06-18 13:49:52 +03:00
Andrey Meshkov
523aeb5c98 fix log table width 2020-06-18 00:53:39 +03:00
Artem Baskal
e39fe1b913 Merge: fix #1421
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
2020-06-18 00:36:19 +03:00
Andrey Meshkov
b1c951fb2c Merge: + new query logs API
* commit '59c4a2886a97143e3a36912ec895dc1a06be88cc':
  openapi
  If there are no more older entries, `"oldest":""` is returned.
  fix search by "whitelisted", "rewritten"
  doc
  fix whois test
  + "dot"
  openapi
  * minor
  + client_proto
  * openapi
  + new query logs API
2020-06-18 00:23:52 +03:00
Simon Zolin
4870da7f94 * auto-hosts: support '#' comments after ip and hosts
Close #1807

Squashed commit of the following:

commit 9d3e2809df056354bb6195abf8106616c1e214b1
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Wed Jun 17 19:23:15 2020 +0300

    improve

commit 9b8c7104560c9c80f848f15818d49a065a38e498
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Wed Jun 17 11:07:56 2020 +0300

    * auto-hosts: support '#' comments after ip and hosts
2020-06-17 19:36:35 +03:00
Simon Zolin
a5c0381c46 + dns: new settings for cache 2020-06-16 15:38:35 +03:00
Simon Zolin
ec6ca93acd * dns: disable cache with "cache_size: 0" setting
Close #1591

Squashed commit of the following:

commit 547a971f5c4f11c519dfabd52d42fa626abf931a
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Tue Jun 16 14:46:06 2020 +0300

    * dns: disable cache with "cache_size: 0" setting
2020-06-16 15:13:38 +03:00
Simon Zolin
59c4a2886a openapi 2020-06-16 12:12:32 +03:00
Simon Zolin
bbc4eda39e If there are no more older entries, "oldest":"" is returned. 2020-06-16 12:10:17 +03:00
Simon Zolin
15e714350c fix search by "whitelisted", "rewritten" 2020-06-16 11:47:26 +03:00
Simon Zolin
b6052a4cd1 doc 2020-06-16 11:14:04 +03:00
Andrey Meshkov
5a93c1fb59 Merge branch 'gumadozucia-master' 2020-06-15 00:49:09 +03:00
gumadozucia
973c609a85 Update README.md
Per client configuration was added in Pi-hole 5.0,
2020-06-14 16:37:07 +02:00
Simon Zolin
6a0194c7a1 fix whois test 2020-06-11 15:39:54 +03:00
Artem Baskal
d1472afb96 - client: Refactor Setup guide component: Merge pull request #633 in DNS/adguard-home from fix/1740 to master
Close #1740

Squashed commit of the following:

commit 13593ad7580a0ad5a4d5c0abcb4f67d01ddb944a
Merge: 8cdc68de 1356ac26
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Thu Jun 11 12:02:02 2020 +0300

    Merge branch 'master' into fix/1740

commit 8cdc68debab3f0668ec4aa5cf9b55ce40ddd4985
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Wed Jun 10 19:35:51 2020 +0300

    Update locales with link

commit 320d8d2f189dff594954b3f5964279410594ee29
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Wed Jun 3 16:40:36 2020 +0300

    Refactor Tabs

commit 98bdcdb5eb35448d38ed42aa08cec2fce9ac849e
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Wed Jun 3 14:01:55 2020 +0300

    Separate content from markup of dns privacy list

commit cee5e5c411d1e9a93a16eba9d78f2f9479d9e729
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Wed May 27 21:12:11 2020 +0300

    - client: Refactor Setup guide component
2020-06-11 12:07:46 +03:00
Simon Zolin
1356ac2633 - clients: fix incorrect info for clients from /etc/hosts
Close #1786

Squashed commit of the following:

commit fc662252be38f20c9afda46fcb578efa50c9baf2
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Thu Jun 11 10:57:26 2020 +0300

    - clients: fix incorrect info for clients from /etc/hosts
2020-06-11 11:11:52 +03:00
Simon Zolin
cf087fb8ff - service: "stop" didn't work correctly
Close #1785

Squashed commit of the following:

commit 40eba3049ac339b4e2537b2fd598c2fb1c6e8cd0
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Wed Jun 10 19:43:14 2020 +0300

    - service: "stop" didn't work correctly
2020-06-11 10:24:43 +03:00
Artem Baskal
a79dda5566 - client: Add default mode in the DNS settings: Merge pull request #650 in DNS/adguard-home from fix/1770 to master
Close #1770

Squashed commit of the following:

commit c1f75ea643623af78de020bd1bc49aa5b66e25c4
Merge: a5df78ad a869ec4c
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Wed Jun 10 18:56:24 2020 +0300

    Merge branch 'master' into fix/1770

commit a5df78ad303305efcafcfa2a170ff567a3a06db5
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Wed Jun 10 12:50:50 2020 +0300

    Revert "Update locales"

    This reverts commit 4b2b4499dea12949c53bce4ceeed595c17df84c6.

commit 4b2b4499dea12949c53bce4ceeed595c17df84c6
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Tue Jun 9 19:56:34 2020 +0300

    Update locales

commit 790cff0db84b5905362d2e2702b2cbca5c3c90b0
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Fri Jun 5 17:56:01 2020 +0300

    Update Upstream component with new api, extract reduxForm HOC names in constant

commit 72de3d5a92cc33d5b234c837879fc6990291e07b
Merge: 92a4a6ae 501a4e06
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Fri Jun 5 15:55:39 2020 +0300

    Merge remote-tracking branch 'origin/update-dnsproxy' into fix/1770

commit 501a4e06ab350e46ff78656141d925de9f2e4996
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Fri Jun 5 12:47:13 2020 +0300

    openapi

commit 3930bd196572924f164ed011629356a0ac0ec631
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Fri Jun 5 12:21:32 2020 +0300

    * DNS API: new setting "upstream_mode"; remove "fastest_addr", "parallel_requests"

    * use dnsproxy v0.29.0

commit 92a4a6ae24793a2a9ca05ad3ef2078573fd4d059
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Thu Jun 4 18:53:42 2020 +0300

    - client: Add default mode in the DNS settings
2020-06-10 19:04:19 +03:00
Simon Zolin
a869ec4cbb * DNS API: new setting "upstream_mode"; remove "fastest_addr", "parallel_requests"
* use dnsproxy v0.29.0

Squashed commit of the following:

commit f18b7231f3f3f84446c0d837855af342f3c971b4
Merge: 501a4e06 dae275e6
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Wed Jun 10 15:24:15 2020 +0300

    Merge remote-tracking branch 'origin/master' into update-dnsproxy

commit 501a4e06ab350e46ff78656141d925de9f2e4996
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Fri Jun 5 12:47:13 2020 +0300

    openapi

commit 3930bd196572924f164ed011629356a0ac0ec631
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Fri Jun 5 12:21:32 2020 +0300

    * DNS API: new setting "upstream_mode"; remove "fastest_addr", "parallel_requests"

    * use dnsproxy v0.29.0
2020-06-10 15:33:23 +03:00
Simon Zolin
dae275e6f9 * log: set default LogMaxAge = 3 days
Squashed commit of the following:

commit 80a1ce12982679022f553cb8dc778d506b010fed
Merge: 4e01a5bd c842a68a
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Fri Jun 5 17:53:53 2020 +0300

    Merge remote-tracking branch 'origin/master' into log

commit 4e01a5bda625c034c9154aa3a1f94559b45260be
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Fri Jun 5 13:56:39 2020 +0300

    * log: set default LogMaxAge = 3 days
2020-06-05 17:58:42 +03:00
Artem Baskal
c842a68a1b - client: Fix beyond 24 hour time format for en locale: Merge pull request #651 in DNS/adguard-home from fix/1766 to master
Close #1766

Squashed commit of the following:

commit 691aa0e30e8435c81118cb5b8784a6902ed10f08
Merge: 67d62fa9 4a81abb9
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Fri Jun 5 13:17:46 2020 +0300

    Merge branch 'master' into fix/1766

commit 67d62fa9f8c9e1e7c7db714b85aa19e6b897a2d0
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Fri Jun 5 11:53:47 2020 +0300

    Fix jsdocs of helpers

commit 459e3cf8e185033d7e20f0b1d24c6e0146310017
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Thu Jun 4 20:45:17 2020 +0300

    - client: Fix beyond 24 hour time format for en locale
2020-06-05 13:28:13 +03:00
Artem Baskal
4a81abb922 + client: Move "Blocked services" to a separate page under "Filters" menu: Merge pull request #649 in DNS/adguard-home from feature/1744 to master
Close #1744

Squashed commit of the following:

commit 912a80b8ff42c927a97d33ccb3eebf8c3ca188d9
Merge: bb5a77ff 5ce98bd2
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Fri Jun 5 12:47:21 2020 +0300

    Merge branch 'master' into feature/1744

commit bb5a77ff6b66743bf23c9582c523280bdf9ef63a
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Thu Jun 4 18:07:26 2020 +0300

    + client: Move "Blocked services" to a separate page under "Filters" menu
2020-06-05 13:03:48 +03:00
Simon Zolin
5ce98bd2a4 Merge: + config: add new logging settings
Close #1763

* commit '0d343abec05b87e08f8a510fad8f969c8b8f1747':
  * minor
  + config: Added in lumberjack to handle rolling logs. Added more config properties around new log feature.
2020-06-05 12:30:16 +03:00
Simon Zolin
539ccb2bf0 Merge: + querylog,stats: anonymize client ip: /16
Close #1741

* commit '1b5fb97a023e79721e08a7ecedf1f2b36d7ebce6':
  + querylog,stats: anonymize client ip: /16
2020-06-03 19:17:50 +03:00
Simon Zolin
1b5fb97a02 + querylog,stats: anonymize client ip: /16 2020-06-03 19:08:11 +03:00
Simon Zolin
0d343abec0 * minor 2020-06-02 19:20:31 +03:00
DannyHinshaw
e23b79dda0 + config: Added in lumberjack to handle rolling logs. Added more config properties around new log feature.
Reset logger max file size config. Fix #1573.

Remove verbose from default config.
2020-06-02 19:18:37 +03:00
Artem Baskal
2ecd38544a - client: Hide version on inintial setup and login: Merge pull request #642 in DNS/adguard-home from fix/1748 to master
Close #1748

Squashed commit of the following:

commit 16721edf69eb3f5ad96253e0999b99c3aaeac822
Merge: 15e1867f eac1b809
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Tue Jun 2 13:37:57 2020 +0300

    Merge branch 'master' into fix/1748

commit 15e1867fdaee8d5c024d74ee2ef7416fec920341
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Mon Jun 1 13:54:15 2020 +0300

    - client: Hide version on inintial setup and login
2020-06-02 13:46:35 +03:00
Simon Zolin
eac1b80930 Merge: * blocked-services: Added 2 entries for YouTube and Amazon AWS
Close #1758

* commit 'bb016f07c6ae93dbe5708c818a87e1b991b81578':
  * blocked-services: Added 2 entries for YouTube and Amazon AWS
2020-06-01 15:26:21 +03:00
Simon Zolin
9a030aa99f - rewrites: fix invalid question in response
#1746

for a rule:

cname -> domain

with IP of 'domain' resolved by upstream

Squashed commit of the following:

commit fb3ad25ac8a7963a8fa6587cdc33e2fc35f79dfb
Merge: a6794989 67dacdf8
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Mon Jun 1 15:15:23 2020 +0300

    Merge remote-tracking branch 'origin/master' into 1746-rewrites

commit a679498904a817011b55c58ee579e55f27fa0bc8
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Mon Jun 1 10:42:16 2020 +0300

    test: check question

commit 7491e753c5eb6df54c9c050b0fa198c81dded2a0
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Fri May 29 18:22:32 2020 +0300

    test

commit 12cb2e194191ca489c9025b55f8571ae2dd7c33d
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Fri May 29 14:51:06 2020 +0300

    - rewrites: fix invalid question in response

    for a rule:

    cname -> domain

    with IP of 'domain' resolved by upstream
2020-06-01 15:23:08 +03:00
Imre Kristoffer Eilertsen
bb016f07c6 * blocked-services: Added 2 entries for YouTube and Amazon AWS 2020-06-01 12:03:54 +03:00
Artem Baskal
67dacdf8ae - client: Fix safari icon: Merge pull request #640 in DNS/adguard-home from fix/1751 to master
Close #1751

* commit '262bcd847f1468ca2f77000f4cd32a402e352414':
  - client: Fix safari icon
2020-05-29 18:59:33 +03:00
ArtemBaskal
262bcd847f - client: Fix safari icon 2020-05-29 18:40:58 +03:00
Artem Baskal
620f5c22c7 - client: fix/1754 - Merge pull request #639 in DNS/adguard-home from fix/1754 to master
Close #1754

* commit 'dddcbe77e29ff815e32913de4e5d99be98ab9934':
  -client: Fix "DNS rewrites" adding an item error
2020-05-29 17:09:15 +03:00
Artem Baskal
b8032801a2 - client: Submit setFiltersConfig action on if the values are changed: Merge pull request #637 in DNS/adguard-home from fix/1749 to master
Close #1749

Squashed commit of the following:

commit aaf4ba86429670ea8b0001325562c4a173be5b4a
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Fri May 29 13:29:44 2020 +0300

    - client: Submit setFiltersConfig action on if the values are changed
2020-05-29 16:08:01 +03:00
ArtemBaskal
dddcbe77e2 -client: Fix "DNS rewrites" adding an item error 2020-05-29 16:05:36 +03:00
Artem Baskal
72f253f62b - client: Match client IP strictly: Merge pull request #620 in DNS/adguard-home from fix/1687 to master
Close #1687

Squashed commit of the following:

commit 5287da0b98d154d4243abdb4b9021006499c225f
Merge: c6b50c70 83b9b701
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Fri May 29 12:47:23 2020 +0300

    Merge branch 'master' into fix/1687

commit c6b50c70a5089fcadfd2606b07b3b84769db2760
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Fri May 29 12:42:12 2020 +0300

    minor

commit dab9fa9ee0502838b4e10aef93d037c2fb5bf41b
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Thu May 28 16:56:08 2020 +0300

    Add support for exact matching of long and short ipv6 notations, add tests

commit e72e86cda81af2c5e54f93abb2890438fd3648b0
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Thu May 28 13:57:22 2020 +0300

    Update helper, write tests

commit 92f4c34224ab7927b02edde829f2d9653a00a854
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Wed May 27 18:35:05 2020 +0300

    Make variable names more expressive

commit 3d38f21281237e9cccbba26afc1ab641947c5dc0
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Wed May 27 17:09:08 2020 +0300

    Add ipv6 cidr support

commit 7db0a2fb18ccd96d8d1def73f12138e4f4e37f71
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Tue May 26 12:48:57 2020 +0300

    Minor

commit 65e87f3899aab3417cac57bab0a8fa371cafd4ec
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Tue May 26 12:46:30 2020 +0300

    Add breaks between helpers

commit 3f38bdfe7bc17e019bf048c79c9e8f1336b6f3d3
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Thu May 21 20:17:27 2020 +0300

    - client: Match client IP strictly
2020-05-29 12:53:40 +03:00
Simon Zolin
bccb939346 + "dot" 2020-05-29 11:46:37 +03:00
Simon Zolin
78648649fe openapi 2020-05-29 11:19:31 +03:00
Simon Zolin
d971bb9957 * minor 2020-05-29 11:15:31 +03:00
Simon Zolin
0904eeffa8 + client_proto 2020-05-29 11:15:22 +03:00
Artem Baskal
83b9b70166 - client: Don't unregister field 'Upstream DNS servers' on rerender and allow input text continuously
Close #1752

Squashed commit of the following:

commit 2f86ade71eadd648fe3e62d8f619d5f1419d6527
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Fri May 29 10:58:42 2020 +0300

    - client: Don't unregister field 'Upstream DNS servers' on rerender and allow input text continuously
2020-05-29 11:12:43 +03:00
Simon Zolin
0adbce5d38 * openapi 2020-05-28 17:58:56 +03:00
Simon Zolin
0500aa9591 + new query logs API
+ "upstream"
+ filteringStatusProcessed
+ ctDomainOrClient
remove ctQuestionType, ctDomain, ctClient
2020-05-28 17:14:50 +03:00
Simon Zolin
32d1f385ff + config: new setting "querylog_file_enabled"
Close #876

Squashed commit of the following:

commit f83f60a7340d8a3f6de7ecfebb426e47d19e83d8
Merge: cfb72869 391e6199
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Thu May 28 15:17:21 2020 +0300

    Merge remote-tracking branch 'origin/master' into 876-logs

commit cfb72869f7cf0bf59a478ab8c7920c273e2fa5f9
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Thu May 28 12:50:02 2020 +0300

    tests

commit 35376e4f450cf66507d733c931b7ed27eff1f36c
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Wed May 27 18:15:12 2020 +0300

    fix

commit 0cfb802d73db52a4b09c459a68a8a18918447b76
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Wed May 27 16:49:52 2020 +0300

    tests

commit 03ca280b6aed3a4880a9d4f4cd18bf47b1c742f6
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Wed May 27 15:32:27 2020 +0300

    + config: new setting "querylog_file_enabled" - query log will be written to a file
2020-05-28 15:29:36 +03:00
Simon Zolin
391e619979 * whois: use the upstream server to resolve whois server hostname
Close #1535

Squashed commit of the following:

commit 7755d7a50e48db5d341029e1c21da95a396d9090
Merge: e24e945f 5c2ca690
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Wed May 27 14:41:24 2020 +0300

    Merge remote-tracking branch 'origin/master' into 1535-whois-resolve

commit e24e945f9b949e3cabcddb3a8a62962bb7a5b0b9
Merge: db764710 355e634f
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Wed May 27 14:29:44 2020 +0300

    Merge remote-tracking branch 'origin/master' into 1535-whois-resolve

commit db764710a0f0b60293f7bdf6b0d7b858d56819e0
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Wed May 27 12:57:00 2020 +0300

    fix

commit dc38f668d5845cfd696b3107a8f02dda4f10298e
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Wed May 27 12:44:10 2020 +0300

    * whois: use the upstream server to resolve whois server hostname
2020-05-27 14:54:31 +03:00
Simon Zolin
5c2ca69018 Merge: * web: log error messages from HTTP server as "debug"
Close #1167

* commit 'ee690e3e327f7e456de476f84e359faf52229b21':
  * web: log error messages from HTTP server as "debug"
2020-05-27 14:30:18 +03:00
Artem Baskal
355e634f64 - client: Don't hide version string when built-in auto-update is disabled: Merge pull request #628 in DNS/adguard-home from fix/1726 to master
Close #1726

Squashed commit of the following:

commit 3eac793c7c05fbb599f510fd8cae560011b7f5ca
Merge: aebfaf61 16a6aada
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Wed May 27 14:14:58 2020 +0300

    Merge branch 'master' into fix/1726

commit aebfaf610113f83027feb959ed87adef1b2db255
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Wed May 27 12:54:30 2020 +0300

    Always show version but hide update button when program is launched with "--no-check-update" flag

commit 1d4ee05959379420fee9730b3bf8ba737852e96e
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Wed May 27 11:59:10 2020 +0300

    Use classnames lib

commit 7003a7064c9625fab513dc02222faff4a340393f
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Tue May 26 19:40:22 2020 +0300

    - client: Don't hide version string when built-in auto-update is disabled
2020-05-27 14:25:27 +03:00
Simon Zolin
ee690e3e32 * web: log error messages from HTTP server as "debug" 2020-05-27 12:17:05 +03:00
Andrey Meshkov
16a6aada6f Merge: *(querylog): added offset/limit parameters
* commit '61a24ffc71eda26e10a11e3a9c8506909b6c4b52':
  *(querylog): decode methods to a new file
  *(querylog): added offset/limit parameters
2020-05-27 11:40:15 +03:00
Simon Zolin
605d2ae4d3 Merge: * urlfilter v0.10.1
Close #1707

* commit 'ab6be6980a8ef7aeb58913bf0084e4160f6fb899':
  * urlfilter v0.10.1
2020-05-26 19:42:17 +03:00
Simon Zolin
1d75b2a57f Merge: + rewrites: support exceptions
Close #1547

* commit '118b170210962da5d088d196feccc6e14ba5a132':
  + rewrites: support exceptions:
2020-05-26 19:37:46 +03:00
Simon Zolin
ab6be6980a * urlfilter v0.10.1 2020-05-26 19:36:24 +03:00
Simon Zolin
8c5a3c55ab Merge: * clients: set reload ARP data interval to 10 minuntes
Close #1398

* commit '2825691c85fadc7ce1c1727a12e8699ff780d0dd':
  * clients: set reload ARP data interval to 10 minuntes
2020-05-26 17:54:54 +03:00
Simon Zolin
2825691c85 * clients: set reload ARP data interval to 10 minuntes 2020-05-26 16:27:13 +03:00
Andrey Meshkov
61a24ffc71 *(querylog): decode methods to a new file 2020-05-26 16:24:31 +03:00
Andrey Meshkov
ceedc2d1ff *(querylog): added offset/limit parameters
Actually, this is a serious refactoring of the query log module. The
rest API part is refactored, it's now more clear how the search is
conducted. Split the logic into more files and added more tests.

Closes: https://github.com/AdguardTeam/AdGuardHome/issues/1559
2020-05-26 15:37:37 +03:00
Simon Zolin
118b170210 + rewrites: support exceptions:
*.host -> IP
my.host -> my.host
*.my.host -> *.my.host

Requests for my.host and *.my.host will be passed to upstream servers,
 while all other requests for *.host will be answered with a rewritten IP
2020-05-26 11:42:42 +03:00
Artem Baskal
383507bc0c + client: Allow Fastest IP address and Parallel requests to toggle each other: Merge pull request #619 in DNS/adguard-home from feature/1678 to master
Close #1678

Squashed commit of the following:

commit 9251ed0f1b58426104d1b9bdaa4b7af5f92be83e
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Thu May 21 18:25:18 2020 +0300

    + client: Allow `Fastest IP address` and `Parallel requests` to toggle each other
2020-05-25 19:41:04 +03:00
Simon Zolin
2f5073b720 Merge: - filter: don't reset name on update
* commit '2303bb253a94045a0d1d7853f7f0840571f03879':
  - filter: don't reset name on update
2020-05-25 18:27:05 +03:00
Simon Zolin
2303bb253a - filter: don't reset name on update 2020-05-25 17:13:13 +03:00
Simon Zolin
2a2b7c6eb5 Merge: * blocked-services: Update new TikTok domains
#1725

* commit 'b050165566e9335083047ea0d03c1a8b39448064':
  - blocked-services: fix build
  * blocked-services: Update new TikTok domains
2020-05-25 12:46:50 +03:00
Simon Zolin
b050165566 - blocked-services: fix build 2020-05-25 11:01:17 +03:00
Ayhan
31fff2ab2e * blocked-services: Update new TikTok domains 2020-05-25 10:56:57 +03:00
Artem Baskal
6f3cd4e7eb + client: Update packages - Merge pull request #613 in DNS/adguard-home from fix/1597 to master
Close #1597

Squashed commit of the following:

commit 1eb89586dd71260e561420fe669abc8b56a506a1
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Wed May 20 14:54:10 2020 +0300

    Fix translation in install options

commit 1ebdc9ebfe12a609f978e47db6505c7095b10f7e
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Wed May 20 13:11:34 2020 +0300

    Remove commented code

commit 2a8302c65a2a3cf7b6b1596115d1153dac32a794
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Tue May 19 19:02:49 2020 +0300

    Update i18n packages, add development browserlist, downgrade eslint to match peerDepencancies version

commit 3fcf73fb14cd9da508522d1a300b66af24da95e5
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Tue May 19 17:30:37 2020 +0300

    Remove all unused dependencies

commit e761810e3e54e188ada41245bdce7414cd0f03e8
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Tue May 19 16:35:24 2020 +0300

    Remove unused dependencies

commit d89d27da6befcaabcdc12bf5e7e94cbb24140010
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Tue May 19 16:14:09 2020 +0300

    Update regular dependencies

commit d2dfd01233d059870d5173ffd748cf61a477936f
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Tue May 19 15:34:10 2020 +0300

    Update all dev dependancies

commit 02b6fb480e9d310039fbe9b7aae062a41128f070
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Tue May 19 14:14:44 2020 +0300

    Update all postcss packages

commit 5e1fa5f99ad75f77e5e429b28ee1ca0b5e65a9a0
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Tue May 19 12:45:02 2020 +0300

    Prevent git from converting linebreaks in .js files

commit 0b9b3b0dccd47cfa50c9531fb61729e6b5a04523
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Tue May 19 12:43:01 2020 +0300

    Prevent git from converting linebreaks in .js files

commit 18b7495e9ef7130b1ac4dbba84c54127d16c6350
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Tue May 19 12:24:47 2020 +0300

    Remove linebreak-style eslint rule

commit df893dec53adebb1d662fe805fab508fd4ed5e06
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Mon May 18 20:55:47 2020 +0300

    Add prop types

commit 36178ecfc5c7fa11a6ee08d7705ca8560941af40
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Mon May 18 18:52:07 2020 +0300

    Update eslint and babel, fix eslint warnings

commit f045b4a2e6b9b78f7e88e3b5d1419c29966a8230
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Mon May 18 16:45:49 2020 +0300

    Update css loading webpack rules

commit 247fa1ed548ef0706a03fdada8309c1454d191f8
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Sat May 16 16:13:49 2020 +0300

    Suppress linebreak-style eslint error for Windows

commit d6499aac507100d6918c849c06d739d80f2229f0
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Sat May 16 14:55:07 2020 +0300

    Suppress eslint exit code

commit ae2d6c614ea23a90d515168f8752e959298894ef
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Sat May 16 14:05:18 2020 +0300

    Edit css file warnings

commit 60675050f2a5baebc679fc05da7e033e5c740d90
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Sat May 16 13:10:26 2020 +0300

    Remove uglifyjs plugin

commit a27806434dd8672e71a26c7a2e810d77e5e229fa
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Sat May 16 01:29:17 2020 +0300

    Fix DefinePlugin value

commit 8f2966ca59195c2f70bca5072d20515d536f42a6
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Sat May 16 01:05:03 2020 +0300

    Update webpack
2020-05-22 17:06:05 +03:00
Simon Zolin
8b25a4886e Merge: * client: update guide
* commit '53277ee70bb8d9710e2caa346ab371b0bb79c003':
  update guide
2020-05-21 15:05:43 +03:00
Simon Zolin
8d91e042cc Merge:- rewrites: fix crash when handling name->cname->A chain
Close #1704 Close #1712

* commit '0848ca0e69e3c535b70e2d1f7e8c24f0e1941ee9':
  - rewrites: fix crash when handling name->cname->A chain
2020-05-21 14:58:32 +03:00
Archive5
53277ee70b update guide 2020-05-21 14:56:50 +03:00
Simon Zolin
0848ca0e69 - rewrites: fix crash when handling name->cname->A chain
crash.adguard -> adguard.a.record
adguard.a.record -> 1.2.3.4
2020-05-21 14:48:31 +03:00
Andrey Meshkov
b5e78c760a *(documentation): removed unnecessary dependencies 2020-05-21 00:04:41 +03:00
Andrey Meshkov
653d68718b Merge branch 'master' of git://github.com/TXC/AdGuardHome into TXC-master 2020-05-20 23:48:26 +03:00
Simon Zolin
2d1cba67dc Merge: - filter: fix rules count when data doesn't end with a newline
Close #1694

* commit '286eb43c5622b2f35d7fe2b5f445da2ed2663658':
  - filter: fix rules count when data doesn't end with a newline
2020-05-18 19:34:25 +03:00
Simon Zolin
806f81ede9 Merge: - autohosts: support tab character
Close #1686

* commit '2f454117ce7562df934b20c385c11006f8a1cf8f':
  - autohosts: support tab character
2020-05-18 19:18:48 +03:00
Simon Zolin
2f454117ce - autohosts: support tab character 2020-05-18 18:46:17 +03:00
Simon Zolin
286eb43c56 - filter: fix rules count when data doesn't end with a newline 2020-05-18 10:53:28 +03:00
Andrey Meshkov
2fca419c7f *(home): fix TLS module initialization
Continue to work even when TLS cert-key pair is invalid

Closes: https://github.com/AdguardTeam/AdGuardHome/issues/1677
2020-05-16 02:02:50 +03:00
Andrey Meshkov
6adf48c938 *(home): added more logging to TLS module 2020-05-16 01:37:12 +03:00
Andrey Meshkov
bab7b2dc65 fix 2020-05-14 23:28:42 +03:00
Andrey Meshkov
332ef250b7 Merge with master 2020-05-14 23:28:05 +03:00
Andrey Meshkov
3b258e536b minor fix of the snap publish script 2020-05-14 23:28:01 +03:00
Andrey Meshkov
35a6708ccf Merge: + client: Add icons for Apple products
Fix #1574

* commit '502fe3cfc5feea46f287854d0c3ebb9e66676bdd':
  *(home): fix assets access
  Fix go lint warning
  Add assets folder
  Add icons to server
  + client: Add icons for Apple products
2020-05-14 18:44:42 +03:00
Andrey Meshkov
c64fdf9442 *(global): update translations 2020-05-14 18:44:12 +03:00
Andrey Meshkov
502fe3cfc5 *(home): fix assets access 2020-05-14 18:37:25 +03:00
Andrey Meshkov
df1f7ebc8d Merge branch 'master' into feature/1574 2020-05-14 18:29:33 +03:00
Andrey Meshkov
fb79416ebe -: fix #1632 2020-05-14 18:24:59 +03:00
Andrey Meshkov
39420c8a00 Merge: -(dnsforward): custom client per-domain upstreams
* commit '5d7b3fb7d5aa14c434dc532aef2fd68e54e7e182':
  -(dnsforward): fix handling RRSIG records
  Added a unit-test for custom upstreams
  -(dnsforward): custom client per-domain upstreams
2020-05-14 18:14:52 +03:00
Andrey Meshkov
b8567c5b56 Merge: Add IntelliJ Project files (*.iml) to .gitignore
* commit '5b7871b6b8836d274f7d4c2d02d5549c58ad6e69':
  Add IntelliJ Project files (*.iml) to .gitignore Rename "Portuguese" to "Português" so it's localized like all other languages
2020-05-14 18:09:36 +03:00
Andrey Meshkov
5d7b3fb7d5 -(dnsforward): fix handling RRSIG records 2020-05-14 18:08:47 +03:00
Christian Glockner
5b7871b6b8 Add IntelliJ Project files (*.iml) to .gitignore Rename "Portuguese" to "Português" so it's localized like all other languages 2020-05-14 17:37:53 +03:00
ArtemBaskal
11d65330a0 Fix go lint warning 2020-05-14 15:03:00 +03:00
ArtemBaskal
5f13d4ab4a Add assets folder 2020-05-14 14:45:16 +03:00
Andrey Meshkov
ae51de9335 Added a unit-test for custom upstreams 2020-05-14 12:57:41 +03:00
ArtemBaskal
26ac9e4224 Add icons to server 2020-05-14 12:06:22 +03:00
Andrey Meshkov
67a39045fc -(dnsforward): custom client per-domain upstreams
Closes: https://github.com/AdguardTeam/AdGuardHome/issues/1539
2020-05-13 20:31:43 +03:00
Artem Baskal
1f954ab673 Merge: + client: Use monospace font in coding-like inputs
Close #1650

Squashed commit of the following:

commit 0956b77d2675bf569ab8413bf1a905167f068fbd
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Tue May 12 18:22:55 2020 +0300

    Replace css variable

commit 7c65954e3727c09404999d4d029276f78a8d0ffe
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Tue May 12 18:06:31 2020 +0300

    + client: Use monospace font in coding-like inputs
2020-05-13 15:34:56 +03:00
Artem Baskal
4d66d25fda Merge: - client: Fix npm ci fail
Close #1597

Squashed commit of the following:

commit 75884d17de9acecf59b4f76a488d37ae76e52246
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Tue May 12 17:18:24 2020 +0300

    - client: Fix npm ci fail
2020-05-13 15:27:07 +03:00
Artem Baskal
ead5a16b2a Merge: + client: trim DNS blocklists fields on blur
Close #1634

Squashed commit of the following:

commit 5f38da50b2075a9b5967aed39b62a8ab05e57a1c
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Tue May 12 20:02:05 2020 +0300

    + client: Trim fields on blur
2020-05-13 15:15:22 +03:00
Andrey Meshkov
a09e59a59d *: upd locales 2020-05-13 00:49:56 +03:00
Andrey Meshkov
8d66ede894 *: memory usage hacks 2020-05-13 00:46:35 +03:00
Andrey Meshkov
408a8dea44 *: fix #1656 2020-05-12 01:36:47 +03:00
Andrey Meshkov
5df42378d0 Merge: +(dnsforward): added bogus-nxdomain setting
Fix #1545

* commit 'cd87169ee43914c97f7f11bf65cb2864de8bc62e':
  *: comments fix
  +(dnsforward): added bogus-nxdomain setting
2020-05-08 19:09:44 +03:00
Andrey Meshkov
5ace7894f8 Merge: * blocked services: Update discord block for new domain
* commit 'e95c4f799bf44bed49856a77738105920b930263':
  * blocked services: Update discord block for new domain
2020-05-08 19:03:51 +03:00
Andrey Meshkov
cd87169ee4 *: comments fix 2020-05-08 19:02:16 +03:00
Andrey Meshkov
8909599739 +(dnsforward): added bogus-nxdomain setting
Closes: https://github.com/AdguardTeam/AdGuardHome/issues/1545
2020-05-08 18:39:37 +03:00
Andrey Meshkov
0311e53ebb *: added comment 2020-05-08 17:43:49 +03:00
Tobias Messner
e95c4f799b * blocked services: Update discord block for new domain
Discord now also uses discord.com as domain, this adds it to the blocked services list
2020-05-08 13:28:33 +03:00
Andrey Meshkov
6d136ee2cb Merge: * filter: skip comment lines starting with '#'
* commit 'b034e25b26ec01c8b2607726646c55777ba66a1d':
  * filter: skip comment lines starting with '#'
2020-05-07 20:10:45 +03:00
DannyHinshaw
b034e25b26 * filter: skip comment lines starting with '#'
Fix #771, filter skips comment lines starting with '#'.

Handle exclamation inline comments.

Refactor for correct logic flow.

Split out hashtag comment logic from exclamation.

Remove trailing whitespace.
2020-05-07 18:03:25 +03:00
ArtemBaskal
8aad02dbf2 + client: Add icons for Apple products 2020-05-06 11:15:19 +03:00
Tobias Messner
0a0c82d227 Update discord block for new domain
Discord now also uses discord.com as domain, this adds it to the blocked services list
2020-05-05 18:13:29 +02:00
Jonas Marklén
694e649355 Update index.html 2020-05-02 10:57:59 +02:00
Jonas Marklén
8f77a89fce resolve conflicts 2020-05-02 10:39:52 +02:00
Jonas Marklén
efd2b31104 Merge branch 'master' of github.com:AdguardTeam/AdGuardHome
 Conflicts:
	openapi/openapi.yaml
2020-05-02 10:09:25 +02:00
Alan Pope
f250fc16a2 Correct architecture builds
The current syntax means it will build on one of the architectures to run on all. That would be useful if it was an arch-independent snap, such as a shell script. But this contains arch-specific binaries. Using the syntax here, will get four separate builds (one per arch) which is the desired outcome.
2020-05-01 20:55:34 +01:00
Artem Baskal
89920bc518 Merge: + client: Hide dns autofix warning text
Squashed commit of the following:

commit e99192ac85400bcce09ca8d73ceef0224f003e0c
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Thu Apr 30 16:03:20 2020 +0300

    Show autofix warning conditionally

commit e5658fc3aaee449a49bee76063033dc62e61c722
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Wed Apr 29 19:18:02 2020 +0300

    + client: Add wiki link on instllation screen
2020-04-30 18:59:14 +03:00
Simon Zolin
a702eda9d9 Merge: dnsproxy v0.27.1
* commit 'efc69047a172074bf7ef5d1271f30d1eb0dba90c':
  dnsproxy v0.27.1
2020-04-30 11:43:56 +03:00
Simon Zolin
efc69047a1 dnsproxy v0.27.1 2020-04-30 10:57:07 +03:00
Artem Baskal
2837502a7b Merge: + client: Make default table height 100%
Squashed commit of the following:

commit d6b07ae070b5ec826dbe3e226e326f9d52b8c7d1
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Wed Apr 29 16:57:22 2020 +0300

    Limit dasboard tables height

commit 6b42f7a1e3cb82e1b792dd352717a3ffa9566b4b
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Wed Apr 29 16:44:08 2020 +0300

    + client: Make default table height 100%
2020-04-29 19:09:00 +03:00
Simon Zolin
ab1ab30e6f Merge: + rewrites: support deeper level wildcards - select the more specific one
#1547

* commit 'b33653ec48a613df24d1768aab56a5c505affd33':
  + rewrites: support deeper level wildcards - select the more specific one
2020-04-28 10:39:30 +03:00
Simon Zolin
b33653ec48 + rewrites: support deeper level wildcards - select the more specific one 2020-04-27 17:24:55 +03:00
Andrey Meshkov
c0ebf9e793 *: more badges to the god of badges 2020-04-27 16:18:35 +03:00
Simon Zolin
14ffd1a3f5 Merge: - blocked-services: settings were reset on restart
Close #1624

Squashed commit of the following:

commit eecc91ca1f9d062c27702a9c07da74da673bef05
Merge: ec53dbeb 26f78dcc
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Mon Apr 27 13:15:58 2020 +0300

    Merge remote-tracking branch 'origin/master' into fix-blocked-svcs

commit ec53dbebdc2fbd2ff94f939d2bd8fb07b9dd1bc8
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Mon Apr 27 12:58:50 2020 +0300

    minor

commit 1e3c20ed02151965ebaca55ac4f25a951a772062
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Mon Apr 27 12:53:37 2020 +0300

    - blocked-services: settings were reset on restart

    broken by:
     0789e4b20d
     * refactor: move blocked-services functions to dnsfilter
2020-04-27 13:21:16 +03:00
Simon Zolin
26f78dcc65 Merge: * client: router guide: add more info
Close #1018

* commit '80c3112ab3cf28c75fc7ededf8b917915c32d538':
  * client: router guide: add more info
2020-04-27 11:00:07 +03:00
Andrey Meshkov
08b033dd04 *(dnsforward): upgrade dnsproxy to v0.27.0 2020-04-26 19:16:10 +03:00
Andrey Meshkov
cd15bb5cce Merge: + client: Switch places for "Upstream DNS servers" and "DNS servers configuration"
* commit '3b0914715ee0be2a5b6236729b9976193db9bb17':
  + client: Switch places for "Upstream DNS servers" and "DNS servers configuration"
2020-04-24 18:33:10 +03:00
Simon Zolin
80c3112ab3 * client: router guide: add more info 2020-04-24 16:54:37 +03:00
ArtemBaskal
3b0914715e + client: Switch places for "Upstream DNS servers" and "DNS servers configuration" 2020-04-24 16:51:44 +03:00
Simon Zolin
d01407c1a0 Merge: - Web: flush the bufferred response data before performing global operations
Close #1617

* commit 'e24143a1962c16763cb73f4e41b30117bcf0d80c':
  - Web: flush the bufferred response data before performing global operations
2020-04-24 16:22:16 +03:00
Simon Zolin
e24143a196 - Web: flush the bufferred response data before performing global operations 2020-04-24 15:50:57 +03:00
Simon Zolin
8ab6fa3300 Merge: * TestAuth: improve test
* commit '44353821e6bf99839dac15f0049a3335c0376258':
  * TestAuth: improve test
2020-04-24 15:37:35 +03:00
Andrey Meshkov
8ad9422a48 *(documentation): added info about snap edge/beta channels 2020-04-24 15:13:24 +03:00
Andrey Meshkov
95c5bd35c5 Merge with master 2020-04-24 15:09:03 +03:00
Andrey Meshkov
9ce2a66c0e *(documentation): added Snap Store to documentation 2020-04-24 15:08:58 +03:00
Simon Zolin
44353821e6 * TestAuth: improve test 2020-04-24 14:04:40 +03:00
Simon Zolin
2191c49161 Merge: * use dnsproxy v0.26.3
Close #1612

* commit '490784c285acc6ae32994062e3d9d1db73639713':
  dnsproxy v0.26.3
2020-04-24 13:50:13 +03:00
Andrey Meshkov
c7a2cbe04e *(global): limit architectures list for edge build 2020-04-24 12:28:00 +03:00
Andrey Meshkov
b5d437c92a *: snapfile for edge channel builds 2020-04-24 12:00:20 +03:00
Simon Zolin
490784c285 dnsproxy v0.26.3 2020-04-24 10:25:46 +03:00
Andrey Meshkov
25361836bf *: snap: don't use SNAP_COMMON 2020-04-24 01:15:53 +03:00
Simon Zolin
314a0ca27b Merge: * blocked_services: update
Close #1602

* commit '4889f2d00a2153c6b78d3b92cf050d3b0ad5c763':
  * blocked_services.go: Update blocked services component
2020-04-23 16:23:18 +03:00
Andrey Meshkov
4d73a0148e change snap name to adguard-home 2020-04-23 16:18:58 +03:00
Archive5
4889f2d00a * blocked_services.go: Update blocked services component
rearrange

rearrange
2020-04-23 10:12:13 +03:00
Andrey Meshkov
63d525c4d4 upd snap yaml 2020-04-23 01:05:31 +03:00
Andrey Meshkov
1041aa8aff fix stable snap publishing 2020-04-23 00:27:03 +03:00
Andrey Meshkov
e2ee2d48df Allow to build a specific snap architecture 2020-04-22 21:57:25 +03:00
Andrey Meshkov
4153d973ec update snap script, added temp files to .gitignore 2020-04-22 21:02:38 +03:00
Artem Baskal
0ffc0965dc + client: add fastest_addr setting
Squashed commit of the following:

commit e47fae25f7bac950bfb452fc8f18b9c0865b08ba
Merge: a23285ec e2ddc82d
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Wed Apr 22 19:16:01 2020 +0300

    Merge remote-tracking branch 'origin/master' into 715

commit a23285ec3ace78fe4ce19122a51ecf3e6cdd942c
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Wed Apr 22 18:30:30 2020 +0300

    Review changes

commit f80d62a0d2038ff9d070ae9e9c77c33b92232d9c
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Tue Apr 21 16:37:42 2020 +0300

    + client: Add fastest addr option

commit 9e713df80c5bf113c98794c0a20915c756a76938
Merge: e3bf4037 9b7c1181
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Tue Apr 21 16:02:03 2020 +0300

    Merge remote-tracking branch 'origin/master' into 715-fastest-addr

commit e3bf4037f49198e42bde55305d6f9077341b556a
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Tue Apr 21 15:40:49 2020 +0300

    minor

commit d6e6a823c5e51acc061b2850d362772efcb827e1
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Fri Apr 17 17:56:24 2020 +0300

    * API changes

    . removed POST /set_upstreams_config
    . removed fields from GET /status: bootstrap_dns, upstream_dns, all_servers
    . added new fields to /dns_config and /dns_info

commit 237a452d09cc48ff8f00e81c7fd35e7828bea835
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Fri Apr 17 16:43:13 2020 +0300

    * API: /dns_info, /dns_config: add "parallel_requests" instead of "all_servers" from /set_upstreams_config

commit 9976723b9725ed19e0cce152d1d1198b13c4acc1
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Mon Mar 23 10:28:25 2020 +0300

    openapi

commit 6f8ea16c6332606f29095b0094d71e8a91798f82
Merge: 36e4d4e8 c8285c41
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Fri Mar 20 19:18:48 2020 +0300

    Merge remote-tracking branch 'origin/master' into 715-fastest-addr

commit 36e4d4e82cadeaba5a11313f0d69d66a0924c342
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Fri Mar 20 18:13:43 2020 +0300

    + DNS: add fastest_addr setting
2020-04-22 19:32:07 +03:00
Simon Zolin
e2ddc82d70 + DNS: add fastest_addr setting
* API: /dns_info, /dns_config: add "parallel_requests" instead of "all_servers" from /set_upstreams_config
* API: /status: removed fields

#715

Squashed commit of the following:

commit 7dd913bd336ecbaa7419b998d0bf913d89702fe6
Merge: 43706970 8170955a
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Wed Apr 22 19:09:36 2020 +0300

    Merge remote-tracking branch 'origin/master' into 715-fastest-addr

commit 437069702a3e91e0b066e4b22b08cdc02ff19eaf
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Wed Apr 22 19:08:55 2020 +0300

    minor

commit 9e713df80c5bf113c98794c0a20915c756a76938
Merge: e3bf4037 9b7c1181
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Tue Apr 21 16:02:03 2020 +0300

    Merge remote-tracking branch 'origin/master' into 715-fastest-addr

commit e3bf4037f49198e42bde55305d6f9077341b556a
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Tue Apr 21 15:40:49 2020 +0300

    minor

commit d6e6a823c5e51acc061b2850d362772efcb827e1
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Fri Apr 17 17:56:24 2020 +0300

    * API changes

    . removed POST /set_upstreams_config
    . removed fields from GET /status: bootstrap_dns, upstream_dns, all_servers
    . added new fields to /dns_config and /dns_info

commit 237a452d09cc48ff8f00e81c7fd35e7828bea835
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Fri Apr 17 16:43:13 2020 +0300

    * API: /dns_info, /dns_config: add "parallel_requests" instead of "all_servers" from /set_upstreams_config

commit 9976723b9725ed19e0cce152d1d1198b13c4acc1
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Mon Mar 23 10:28:25 2020 +0300

    openapi

commit 6f8ea16c6332606f29095b0094d71e8a91798f82
Merge: 36e4d4e8 c8285c41
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Fri Mar 20 19:18:48 2020 +0300

    Merge remote-tracking branch 'origin/master' into 715-fastest-addr

commit 36e4d4e82cadeaba5a11313f0d69d66a0924c342
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Fri Mar 20 18:13:43 2020 +0300

    + DNS: add fastest_addr setting
2020-04-22 19:14:04 +03:00
Andrey Meshkov
8170955a07 Merge: added snapcraft build script
* commit '054980bc8b9cab4ac8dd5421d724f421cd046583':
  *: fix typo
  *: cleanup
  *: rename resulting snapfile -- remove version from it
  *: update build_snap.sh
  *: remove snap from travis
  *: travis - print log on failuer
  *: added snapcraft build configuration
  *: moved docker files to the packaging folder
2020-04-22 19:07:05 +03:00
Andrey Meshkov
054980bc8b *: fix typo 2020-04-22 18:50:24 +03:00
Andrey Meshkov
47160c16d9 *: cleanup 2020-04-22 18:39:47 +03:00
Andrey Meshkov
daf9af9a22 *: rename resulting snapfile -- remove version from it 2020-04-22 17:48:37 +03:00
Simon Zolin
9671050e5b + config: add "debug_pprof" setting
Squashed commit of the following:

commit 96d185cf4acc55b21a00d10072e0a641ef7655b8
Merge: 3b75a8cb 9b7c1181
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Wed Apr 22 15:57:50 2020 +0300

    Merge remote-tracking branch 'origin/master' into add-pprof

commit 3b75a8cbec5d72be8865a56bfd7ebb8b0673c3bc
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Wed Apr 22 13:52:36 2020 +0300

    * use localhost:6060 for pprof

commit f66f2fbd7409b98cd9f7d297c268fca998f85e3b
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Wed Apr 22 12:46:25 2020 +0300

    minor

commit 6e38712fb5542f612675858eb957efdefc38f9b0
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Wed Apr 22 11:59:39 2020 +0300

    use separate HTTP server for pprof

commit 988d95b5fad22f536bf9204b6b96f3697cf9a589
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Tue Apr 21 17:04:04 2020 +0300

    minor

commit 90ee6e9753be2af49467687cdf71c35b3943b78b
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Tue Apr 21 16:57:38 2020 +0300

    * use modified version of pprof

commit 413002220fe0717950539a8b7e6b0f31cef31bb8
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Mon Apr 20 16:35:21 2020 +0300

    minor

commit d4655d3849de1d9fe97efdb7f18fc21d5ac19eda
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Mon Apr 20 15:57:57 2020 +0300

    + config: add "enable_pprof" setting
2020-04-22 16:00:26 +03:00
Andrey Meshkov
093617e6bd *: update build_snap.sh 2020-04-22 15:07:17 +03:00
Andrey Meshkov
3ae6043748 *: remove snap from travis 2020-04-22 13:40:13 +03:00
Andrey Meshkov
3fdd3f7cec *: travis - print log on failuer 2020-04-21 17:23:29 +03:00
Andrey Meshkov
0cb876a71c *: added snapcraft build configuration 2020-04-21 16:25:29 +03:00
Andrey Meshkov
7f224658e0 *: moved docker files to the packaging folder 2020-04-21 15:05:13 +03:00
Simon Zolin
9b7c118103 * dnsproxy v0.26.2
Close #1588

Squashed commit of the following:

commit a6eedb9883737d93332b59e9de69fbf07b8f81d4
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Mon Apr 20 18:33:37 2020 +0300

    * dnsproxy v0.26.2
2020-04-21 11:08:59 +03:00
Simon Zolin
93a597fce4 - querylog: fix get data
Close #1589

Squashed commit of the following:

commit 83d1d15f06a67746feb0e82fb71d5ea02f86ab69
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Fri Apr 17 14:11:00 2020 +0300

    - querylog: fix get data
2020-04-17 14:40:13 +03:00
Jonas Marklén
037bf43b40 Updated openapi.yaml to OpenAPI 3.0
Included lint to validate yaml file
2020-04-16 22:04:00 +02:00
Andrey Meshkov
e24e5741fe *: fix freebsd build 2020-04-16 20:35:58 +03:00
Andrey Meshkov
96bee3955c *: upd dependencies, go mod tidy 2020-04-16 20:04:34 +03:00
Simon Zolin
158f5e854d * use dnsproxy v0.26.0
Close #1490

Squashed commit of the following:

commit df600c2b11e72783b1422087b861d51a310be2e2
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Thu Apr 16 19:06:19 2020 +0300

    * use dnsproxy v0.26.0
2020-04-16 19:26:17 +03:00
Simon Zolin
1a1c09135d + auto-hosts: respond to PTR requests
Close #1562

Squashed commit of the following:

commit d5c6bb0e5f0c8c1618bd0df764ae86a5e62a850b
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Mon Apr 13 14:10:10 2020 +0300

    + auto-hosts: respond to PTR requests
2020-04-16 18:56:47 +03:00
Andrey Meshkov
215e3eeaf6 Merge: Win travis build
* commit '6503bab1aaa27ff43175d069413630a420093be0':
  *: added cross-env to npm scripts
  run npm build on windows
  *: added more logging
  -: fix autohosts tests on Windows
  -: fix qlog test on Windows
  *: fix nvs script
  *: travis - use nvs on Windows
  *: travis-win -- try nvm
  *(global): travis: choco install nodejs
  +(global): windows travis build
2020-04-15 16:13:24 +03:00
Andrey Meshkov
6503bab1aa *: added cross-env to npm scripts 2020-04-15 15:41:48 +03:00
Andrey Meshkov
af34500729 run npm build on windows 2020-04-15 15:24:12 +03:00
Andrey Meshkov
1a34b96d03 *: added more logging 2020-04-15 15:17:57 +03:00
Andrey Meshkov
4bdf22eadc -: fix autohosts tests on Windows 2020-04-15 14:36:47 +03:00
Andrey Meshkov
e96fd6e42d -: fix qlog test on Windows 2020-04-15 14:11:31 +03:00
Andrey Meshkov
4b57776976 *(home): removed hphosts 2020-04-15 12:56:50 +03:00
Andrey Meshkov
b9b42997af *: fix nvs script
g
2020-04-14 00:30:20 +03:00
Andrey Meshkov
344a0336b0 *: travis - use nvs on Windows 2020-04-14 00:26:44 +03:00
Andrey Meshkov
814a1f6cb3 *: travis-win -- try nvm 2020-04-14 00:16:58 +03:00
Andrey Meshkov
6cdc59db26 *(global): travis: choco install nodejs 2020-04-14 00:08:54 +03:00
Andrey Meshkov
ca418de16f +(global): windows travis build 2020-04-14 00:04:38 +03:00
Artem Baskal
8d9f68b778 Merge: - client: Update locales, change lists phrase
Close #1522

* commit '102da17f9ceeb0abbbc3887d65f3d588acaa61e8':
  Change en locale
  Update sk locale
  Update locales
  Update blocked_by phrase for tr locale
  Roll back ru locale
  Update locales, add locales scripts, update locales readme
  - client: Change phrase
2020-04-09 17:31:04 +03:00
ArtemBaskal
102da17f9c Change en locale 2020-04-09 14:38:38 +03:00
Artem Baskal
f59667cef0 Merge: + client: Validate adding of absolute path to the filtering lists
* commit 'af2adc5b33c4263733159e25fa4ff9581440f703':
  Change absolute path regexps
  Change win absolute path regex
  Fix translations
  Fix file path regexps to match files without extension
  + client: Validate adding of absolute path to the filtering lists
2020-04-09 14:28:14 +03:00
Artem Baskal
6f1fe89bd7 - client: Clear result of checking the filtering result after moving to another page
Close #1548

* commit 'f0b6340e4f3ff36d1068d506564bb68f5f17fa7d':
  - client: Clear result of checking the filtering result after moving to another page
2020-04-09 14:25:38 +03:00
Simon Zolin
1739d7975f Merge: + filters: support filters from local disk
Close #817

* commit '81309c707a70ff15a7075fb5906962764b470ca7':
  + filters: support filters from local disk
2020-04-09 13:51:28 +03:00
Simon Zolin
81309c707a + filters: support filters from local disk 2020-04-09 11:46:52 +03:00
Simon Zolin
fcaed16638 Merge: - DHCP: when adding a new static lease: remove dynamic lease with the same MAC
Close #1531

* commit '33195b91559c36cf2197679ae23e6a732e5c8c04':
  - DHCP: when adding a new static lease: remove dynamic lease with the same MAC
2020-04-09 11:30:17 +03:00
Artem Baskal
f61bab5e59 Merge: Change blocked domains phrase translation
Close #1541

* commit '31b55028d5acff438c35fabb9bee40823d536a6c':
  - client: Change blocked domains phrase translation
2020-04-08 19:14:50 +03:00
Simon Zolin
321b1a7e9c Merge: - web: install: couldn't apply new HTTP port until the restart
Squashed commit of the following:

commit 2480dcbe2390601ab4e423241eb306127e4b6d26
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Wed Apr 8 19:05:06 2020 +0300

    - web: install: couldn't apply new HTTP port until the restart
2020-04-08 19:08:35 +03:00
ArtemBaskal
af2adc5b33 Change absolute path regexps 2020-04-08 14:21:20 +03:00
Andrey Meshkov
8911a38f43 Merge branch 'wikijm-master' 2020-04-08 13:54:02 +03:00
ArtemBaskal
92376690a4 Change win absolute path regex 2020-04-08 13:01:58 +03:00
ArtemBaskal
b8d868efe4 Fix translations 2020-04-08 13:01:58 +03:00
ArtemBaskal
683121ef90 Fix file path regexps to match files without extension 2020-04-08 13:01:58 +03:00
ArtemBaskal
421ad744cb + client: Validate adding of absolute path to the filtering lists 2020-04-08 13:01:58 +03:00
wikijm
d2b58c81f3 Add 'device_camera' and 'device_securityalarm' values 2020-04-08 11:59:36 +02:00
ArtemBaskal
f2ba8c6657 Update sk locale 2020-04-08 12:06:27 +03:00
Simon Zolin
33195b9155 - DHCP: when adding a new static lease: remove dynamic lease with the same MAC 2020-04-08 11:55:58 +03:00
ArtemBaskal
e215e92159 Update locales 2020-04-08 11:40:32 +03:00
Ildar Kamalov
fc03ca4bb8 Merge: + client: handle rewrite auto
Closes #1478

* commit 'c7f8f20aada3e339b82434fab3d1b02c52bdd4e1':
  + client: handle rewrite auto
2020-04-08 09:02:15 +03:00
Ildar Kamalov
bcbffd90be Merge: + client: add IPv6 CIDR validation for the client id
Closes #1479

* commit '69e88cf17d6297d34bf440e01330e335cd662963':
  + client: add IPv6 CIDR validation
2020-04-08 08:44:19 +03:00
Ildar Kamalov
c7f8f20aad + client: handle rewrite auto 2020-04-08 08:23:07 +03:00
Andrey Meshkov
2f9bc13ffd *(home): fix small filters update
 Closes: https://github.com/AdguardTeam/AdGuardHome/issues/1554
2020-04-07 23:29:03 +03:00
Andrey Meshkov
ea38612a1d Merge: - install: fix crash when trying to use uninitialized TLS module
* commit '6690441240f217cc5e6de93fa0803e3c15a50fef':
  - install: fix crash when trying to use uninitialized TLS module
2020-04-07 23:12:32 +03:00
Simon Zolin
6690441240 - install: fix crash when trying to use uninitialized TLS module 2020-04-07 19:24:29 +03:00
ArtemBaskal
31b55028d5 - client: Change blocked domains phrase translation 2020-04-07 18:07:07 +03:00
ArtemBaskal
e9c94a8c33 Update blocked_by phrase for tr locale 2020-04-07 17:48:18 +03:00
ArtemBaskal
f0b6340e4f - client: Clear result of checking the filtering result after moving to another page 2020-04-07 17:21:44 +03:00
ArtemBaskal
a4aa3426d3 Roll back ru locale 2020-04-07 16:24:02 +03:00
ArtemBaskal
d0d481dd0e Update locales, add locales scripts, update locales readme 2020-04-07 16:17:57 +03:00
ArtemBaskal
39447649d6 - client: Change phrase 2020-04-07 13:25:13 +03:00
Andrey Meshkov
fe056cfaf0 Merge branch 'master' of ssh://bit.adguard.com:7999/dns/adguard-home 2020-04-07 13:02:33 +03:00
Andrey Meshkov
1376d66acb *(home): fix filters update on Windows
 Closes: #1553
2020-04-07 13:02:28 +03:00
Simon Zolin
59b3a5bc6f Merge: * GetValidNetInterfaces: don't skip PointToPoint interfaces
Close #1534

* commit '2b1919137d88902d0cfc0cc8f480274e18b2d109':
  * GetValidNetInterfaces: don't skip PointToPoint interfaces
2020-04-07 12:46:20 +03:00
Simon Zolin
2b1919137d * GetValidNetInterfaces: don't skip PointToPoint interfaces 2020-04-07 12:00:04 +03:00
Simon Zolin
105e2dd1ee Merge: - dhcp: web handlers were not registered when DHCP server is disabled
Close #1552

* commit '43704901384fe35785383b27a1ad0bd7d430830c':
  - dhcp: web handlers were not registered when DHCP server is disabled
2020-04-07 11:54:29 +03:00
Simon Zolin
4370490138 - dhcp: web handlers were not registered when DHCP server is disabled
So there was no way to enable DHCP from UI
2020-04-07 11:48:03 +03:00
Artem Baskal
6ea93d0b8e Merge pull request #569 in DNS/adguard-home from fix/1462 to master
* commit '8c74f983d1c08c03a9f131abdea8e712a5cf7505':
  - client: Enabling or disabling a filter list triggers a "loading" screen
2020-04-07 11:34:03 +03:00
Andrey Meshkov
8f00e1ca5e *: golibs to v0.4.2 2020-04-06 23:40:57 +03:00
Andrey Meshkov
0d66451084 *(global): fix compat with windows
 Closes: https://github.com/AdguardTeam/AdGuardHome/issues/1549
2020-04-06 22:32:18 +03:00
ArtemBaskal
8c74f983d1 - client: Enabling or disabling a filter list triggers a "loading" screen 2020-04-06 18:37:06 +03:00
Andrey Meshkov
1fa6d74862 Merge pull: Fix #1540
* commit '7b8588afa4409117f88eaeffd3e8ebfdc508e72f':
  *: fix golangci-lint warnings
  *(global): upgrade dependencies, start using Go v1.14
2020-04-05 18:52:01 +03:00
Andrey Meshkov
7b8588afa4 *: fix golangci-lint warnings 2020-04-05 18:34:43 +03:00
Andrey Meshkov
d5b826e12f *(global): upgrade dependencies, start using Go v1.14 2020-04-05 18:21:26 +03:00
Simon Zolin
e84c753357 Merge: * blocked_services: update
Close #1519

* commit 'ed0f457b7d8501d2dc79d1c8261d38c5ce538ade':
  Update blocked_services.go
2020-04-03 10:29:37 +03:00
Imre Kristoffer Eilertsen
ed0f457b7d Update blocked_services.go
Update README.md

Trying to fix some Travis comma complaints

Update README.md

Update blocked_services.go

Following GolangCIbot's spacing suggestion (Indentation spacing is pretty complicated sometimes.)

Co-Authored-By: Bot from GolangCI <42910462+golangcibot@users.noreply.github.com>
2020-04-01 10:39:29 +03:00
Andrey Meshkov
c73dd5577f Merge: - DNS: filtering didn't work
Fix #1504

* commit '7c192212410ef877aea5c0d018cc0f9ae8b41879':
  minor
  - DNS: filtering didn't work
2020-03-24 12:01:44 +03:00
Simon Zolin
7c19221241 minor 2020-03-24 11:49:42 +03:00
Simon Zolin
c16dc6cf62 - DNS: filtering didn't work 2020-03-24 11:44:47 +03:00
Simon Zolin
06b3378fd7 Merge: + DNS, Web: use only secure TLSv1.2 ciphers
Close #1384

Squashed commit of the following:

commit cd90abcce573a8e930446ba153565e553e6b81d5
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Fri Mar 20 19:17:53 2020 +0300

    minor

commit a1914c5f41425e82cdedc9716bce84470afab65b
Merge: 72c53673 c8285c41
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Fri Mar 20 19:17:21 2020 +0300

    Merge remote-tracking branch 'origin/master' into 1384-tls12-ciphers

commit 72c536737e0502bb397562ade47aedb9f2ae4494
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Wed Mar 4 18:16:24 2020 +0300

    + DNS, Web: use only secure TLSv1.2 ciphers
2020-03-23 10:23:34 +03:00
Ildar Kamalov
69e88cf17d + client: add IPv6 CIDR validation 2020-03-21 20:43:45 +03:00
Simon Zolin
c8285c41d7 Merge: + DNS: new settings cache_ttl_min, cache_ttl_max
Close #1214

Squashed commit of the following:

commit e445125556c9f9441c3d6936cb923db0a7e58260
Merge: c88b25ca 63923fa8
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Fri Mar 20 19:12:21 2020 +0300

    Merge remote-tracking branch 'origin/master' into 1214-cache-min-ttl

commit c88b25ca4b641918f32811212c2cf3b63a5bf654
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Fri Mar 20 19:02:17 2020 +0300

    minor

commit ec3dc21bb211941c71adcec38796eeadb978b2b7
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Thu Mar 19 12:18:08 2020 +0300

    + DNS: new settings cache_ttl_min, cache_ttl_max
2020-03-20 19:16:55 +03:00
Simon Zolin
63923fa882 Merge: + DNS: use rules from /etc/hosts
- fix filtering logic: don't do DNS response check for Rewrite rules

Close #1478

Squashed commit of the following:

commit 1206b94881289ff664b7c8998ea97c1455da1ff8
Merge: c462577a 5fe98474
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Fri Mar 20 15:00:25 2020 +0300

    Merge remote-tracking branch 'origin/master' into 1478-auto-records

commit c462577ad84754f5b3ea4cd58339838af817fe36
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Fri Mar 20 14:33:17 2020 +0300

    minor

commit 7e824ba5f432648a976bc4b8076a645ba875ef70
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Fri Mar 20 14:29:54 2020 +0300

    more tests

commit a22b62136c5cfd84cd0450897aef9e7d2e20585a
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Fri Mar 20 14:09:52 2020 +0300

    rename, move

commit 9e5ed49ad3c27c57d540edf18b78d29e56afb067
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Thu Mar 19 15:33:27 2020 +0300

    fix logic - don't do DNS response check for Rewrite rules

commit 6cfabc0348a41883b8bba834626a7e8760b76bf2
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Thu Mar 19 11:35:07 2020 +0300

    minor

commit 4540aed9327566078e5087d43c30f4e8bffab7b9
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Thu Mar 19 11:03:24 2020 +0300

    fix

commit 9ddddf7bded812da48613cc07084e360c15ddd0e
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Thu Mar 19 10:49:13 2020 +0300

    fix

commit c5f8ef745b6f2a768be8a2ab23ad80b01b0aa54f
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Thu Mar 19 10:37:26 2020 +0300

    fix

commit f4be00947bf0528c9a7cd4f09c4090db444c4694
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Mon Mar 16 20:13:00 2020 +0300

    + auto DNS records from /etc/hosts
2020-03-20 15:05:43 +03:00
Simon Zolin
5fe984741e Merge: + qlog: anonymize_client_ip setting
Close #916

* commit 'a0be7f5566a7d5986eb04ed7ffb79c5230171e2a':
  + client: handle hide_client_ip
  + qlog: hide_client_ip setting
2020-03-20 14:55:55 +03:00
Ildar Kamalov
a0be7f5566 + client: handle hide_client_ip 2020-03-20 14:50:43 +03:00
Simon Zolin
2e845e4f4d + qlog: hide_client_ip setting 2020-03-20 14:50:43 +03:00
Simon Zolin
a5b9d1d74c Merge: + DNS: blocked hosts: support wildcards; use urlfilter for processing of the blocked hosts
Close #1469

Squashed commit of the following:

commit b07f408550a526726c8e38886ce0fcc1f4c3d93d
Merge: 56aa0dfc c5a39b94
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Fri Mar 20 14:32:21 2020 +0300

    Merge remote-tracking branch 'origin/master' into 1469-wildcards

commit 56aa0dfcca8265fed35e9b92f85dc54de947cc11
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Thu Mar 19 12:02:17 2020 +0300

    update text

commit 468bcd9ea6e57eedd96bbb4b8414d86a60abcdc3
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Thu Mar 19 11:51:01 2020 +0300

    * access: use urlfilter for blocked hosts processing

commit 1b157d39dfb32dd74d527274e5466b1642cd6916
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Wed Mar 18 13:13:06 2020 +0300

    minor

commit 34811eb08ab690104d29710b0e1bc9fb003a4cd4
Author: Ildar Kamalov <i.kamalov@adguard.com>
Date:   Fri Mar 13 19:05:12 2020 +0300

    * client: change field description

commit fe0acec1bbd0b810f00481412efcc9776022b694
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Fri Mar 13 16:51:17 2020 +0300

    + DNS: blocked hosts: support wildcards
2020-03-20 14:41:13 +03:00
Simon Zolin
c5a39b942f Merge: - querylog: querylog_memsize setting was reset to 0
* commit 'bebd43923b71b2ef4bf4e1beb5bb69ff6208d06e':
  - querylog: querylog_memsize setting was reset to 0
2020-03-19 18:58:34 +03:00
Simon Zolin
bebd43923b - querylog: querylog_memsize setting was reset to 0
Since v0.100.0 the query logs memory buffer was not active,
 despite the default capacity of 1000 items.

Now we remove querylog_memsize setting and replace it with querylog_size_memory
2020-03-19 15:53:25 +03:00
Ildar Kamalov
6eadca25d1 Merge: - client: fix tags select on mobile
Closes #1471

Squashed commit of the following:

commit 1ce2c742e268b49332f73c9ac17722dbe0e8dd92
Author: Ildar Kamalov <i.kamalov@adguard.com>
Date:   Tue Mar 17 15:38:04 2020 +0300

    - client: fix tags select on mobile
2020-03-19 10:49:25 +03:00
Simon Zolin
72c20acb86 Merge: + dnsforward: add dnssec_enabled option
Close #66

* commit '79bfa6a72b6cda8c0f5211a3a6df0293c4b6c7d1':
  + client: handle DNSSEC setting
  + dnsforward: add dnssec_enabled option
2020-03-18 18:21:06 +03:00
Ildar Kamalov
79bfa6a72b + client: handle DNSSEC setting 2020-03-18 18:05:02 +03:00
Simon Zolin
a5c2cdaf38 + dnsforward: add dnssec_enabled option 2020-03-18 18:05:02 +03:00
Simon Zolin
7ff743ab32 Merge: * auto-upgrade: don't show Upgrade button on UNIX if running under non-root user
Close #1193

* commit '58f183103248d3efd7e94551ffaebc5df3689ac0':
  * auto-upgrade: don't show Upgrade button on UNIX if running under non-root user
2020-03-18 15:19:30 +03:00
Simon Zolin
3303d77dad Merge: - tls: allow_unencrypted_doh and strict_sni_check settings were reset after POST /control/tls/configure
Close #1484

Squashed commit of the following:

commit 2daae88b80d83889238eaf4808b8a4da4fd8b102
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Wed Mar 18 13:16:23 2020 +0300

    minor

commit 99fa4e27ad45e515c8faef14a77304c2a9687875
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Tue Mar 17 13:46:46 2020 +0300

    - tls: allow_unencrypted_doh and strict_sni_check settings were reset after POST /control/tls/configure
2020-03-18 15:18:15 +03:00
Simon Zolin
58f1831032 * auto-upgrade: don't show Upgrade button on UNIX if running under non-root user 2020-03-17 19:22:45 +03:00
Simon Zolin
4dba20941d Merge: * tech doc: update architecture picture
* commit '360ee3e3926a2786233edf38fd64db36bf61ff7e':
  * tech doc: update architecture picture
2020-03-17 18:47:03 +03:00
Simon Zolin
360ee3e392 * tech doc: update architecture picture 2020-03-17 18:36:10 +03:00
Simon Zolin
32baa907b6 Merge: + Reload configuration command; refactoring
Close #1302

* commit 'dd7d9dc334181b3923b1532aaae51cae77d5ed55':
  * move getDNSAddresses() and "/dns-query" handler to DNS module
  * TLS is now a separate module (logically)
  * move HTTP server code
  * refactor: move blocked-services functions to dnsfilter
  * refactor
  + service: support "-s reload" command
  + clients: re-read auto-clients from /etc/hosts when SIGHUP is received
2020-03-17 17:19:03 +03:00
Simon Zolin
dd7d9dc334 * move getDNSAddresses() and "/dns-query" handler to DNS module 2020-03-17 17:12:02 +03:00
Simon Zolin
db30f27c8f * TLS is now a separate module (logically) 2020-03-17 17:11:24 +03:00
Simon Zolin
8e4bc29103 * move HTTP server code 2020-03-17 17:11:24 +03:00
Simon Zolin
0789e4b20d * refactor: move blocked-services functions to dnsfilter 2020-03-17 17:11:22 +03:00
Simon Zolin
e8129f15c7 * refactor
1. Auth module was initialized inside dns.go - now it's moved to initWeb()

2. stopHTTPServer() wasn't called on server stop - now we do that

3. Don't use postInstall() HTTP filter where it's not necessary.
Now we register handlers after installation is complete.
2020-03-17 15:23:29 +03:00
Simon Zolin
c77907694d + service: support "-s reload" command 2020-03-17 15:21:10 +03:00
Simon Zolin
fa2f793ac7 + clients: re-read auto-clients from /etc/hosts when SIGHUP is received 2020-03-17 15:21:10 +03:00
Ildar Kamalov
e5db33705d Merge: + client: add digit grouping for numbers on the dashboard
Closes #1423

Squashed commit of the following:

commit 6e5de427c48577ebbe4d963f817b66fed9b29bb4
Author: Ildar Kamalov <i.kamalov@adguard.com>
Date:   Wed Mar 11 17:56:39 2020 +0300

    + client: add digit grouping for numbers on the dashboard
2020-03-17 15:15:19 +03:00
Ildar Kamalov
bc9bccc669 Merge: Add thai and romanian languages
Closes #1445

* commit '229d040ee286e656c8986e622a33f18176a3e769':
  + i18n: add thai and romanian languages
  + client: add thai and romanian languages
2020-03-17 15:06:56 +03:00
Simon Zolin
646725efb7 Merge: * DNS filters: optimize filter update
Close #1463

Squashed commit of the following:

commit d5bdc939a2ae9f6d1ae879e4225b1dce09657b92
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Mon Mar 16 16:39:17 2020 +0300

    minor

commit e15b56a0d9db182f9d30b434584018cb1bf038d5
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Thu Mar 12 14:39:07 2020 +0300

    minor

commit 77bf59ca6e556b75af48c5987866af6d5025dae8
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Thu Mar 12 14:30:04 2020 +0300

    minor

commit e19c13f82dd408ed638bd4b68d21cdfebbdf782f
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Thu Mar 12 14:24:50 2020 +0300

    minor

commit 9113c6dae6263aa7ee6e4295c2b60dd3083e2bf0
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Thu Mar 12 14:02:06 2020 +0300

    minor

commit 70283e329e32def3375e893f806a2a02d8ca9f57
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Thu Mar 12 13:35:11 2020 +0300

    logical module Filtering

commit 837a255c6a04941e9fc007a56d71faf4c4213257
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Thu Mar 12 13:11:37 2020 +0300

    minor

commit 1853ed2b57a86dd49508023f47218219399b4fe5
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Thu Mar 12 12:59:28 2020 +0300

    refactor

commit 1ba3cc53c76255439fe54693b40ee9665fdc15e4
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Wed Mar 11 20:12:53 2020 +0300

    * filters: optimize update procedure
2020-03-17 15:00:40 +03:00
Simon Zolin
a93652b1c0 Merge: * install: IPv6 addresses were removed from the list of available addresses
Close #1481

* commit 'dfa278b845dbf890fec800e15495b364f6f4fd2e':
  * install: IPv6 addresses were removed from the list of available addresses
2020-03-17 14:27:18 +03:00
Simon Zolin
5f328d20ca Merge: + DNS, Web: Entware: use special directory with the system root certificates
Close #1311

* commit '0e030154ee4f73d0c1a8e9d092b12be78b0a0ea5':
  - fix tests
  + DNS, Web: Entware: use special directory with the system root certificates
2020-03-17 14:18:02 +03:00
Simon Zolin
0e030154ee - fix tests 2020-03-16 16:29:23 +03:00
Simon Zolin
1000aef1d2 + DNS, Web: Entware: use special directory with the system root certificates
+ use custom RootsCA for HTTPS client, for server cert verify
2020-03-16 15:15:38 +03:00
Simon Zolin
b345595dbf Merge: * blocked-services: remove Messenger
* commit '5dc7b848dffaa0cd3cd3ca55080af90bdda2fec0':
  * blocked-services: remove unknown service names
  * blocked-services: remove Messenger
2020-03-16 15:01:19 +03:00
Simon Zolin
88853b76d9 Merge: + config: new setting 'http_proxy'
Close #458

* commit '2e054b673264bdb563abb6478979d00e76e52c8d':
  + config: new setting 'http_proxy'
2020-03-16 14:58:21 +03:00
Simon Zolin
dfa278b845 * install: IPv6 addresses were removed from the list of available addresses 2020-03-16 14:32:43 +03:00
Simon Zolin
480c6ac753 Merge: - dhcp: crash on error on startup
Squashed commit of the following:

commit 81908b636ec91a562b3ff8634b77c71dc3f009e4
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Fri Mar 13 17:25:36 2020 +0300

    - dhcp: crash on error on startup
2020-03-13 17:30:09 +03:00
Andrey Meshkov
fa07809189 - client: fix closing mobile menu Fix #1467
* commit '7e2ef010399c0a308131c14beca1f35eb9e331fd':
  - client: fix closing mobile menu
2020-03-13 12:25:08 +03:00
Ildar Kamalov
7e2ef01039 - client: fix closing mobile menu 2020-03-13 12:20:48 +03:00
Simon Zolin
2c50787aa9 Merge: * openapi changelog
Squashed commit of the following:

commit 7f254a4abf0cbb0f9f7bfea754632115cacc0918
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Fri Mar 13 12:08:09 2020 +0300

    * openapi changelog
2020-03-13 12:11:52 +03:00
Simon Zolin
2e054b6732 + config: new setting 'http_proxy' 2020-03-12 15:11:08 +03:00
Simon Zolin
b600d7b09d Merge: - filters: 'enable/disable filter' didn't work
Squashed commit of the following:

commit c4c616162b66f2e89932ac44253ff6bedb8692eb
Merge: 800740da 579177fc
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Wed Mar 11 19:14:27 2020 +0300

    Merge remote-tracking branch 'origin/master' into apply-disable-filter

commit 800740dace018dbe58abc579c06f7c494cdd1c15
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Wed Mar 11 18:40:38 2020 +0300

    improve logic

commit 2aab4fbe658de09cd4c1d0badc178e0ce9e60251
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Wed Mar 11 18:23:14 2020 +0300

    - filters: 'disable filter' didn't work
2020-03-11 19:17:46 +03:00
Ildar Kamalov
229d040ee2 + i18n: add thai and romanian languages 2020-03-11 17:06:37 +03:00
Ildar Kamalov
36ba8380de + client: add thai and romanian languages 2020-03-11 17:06:17 +03:00
Simon Zolin
579177fc70 Merge: * DNS: use "unrestricted" Quad9 servers; - dnsfilter: fix hanging on error
Close #1451

Squashed commit of the following:

commit 91e5c98d7543b7c8872cc494818d66bb823ec7c0
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Thu Mar 5 13:09:01 2020 +0300

    fix

commit 4f80865e55f27206fa9cef1d72fb3652498da582
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Thu Mar 5 13:08:31 2020 +0300

    * fix race-detector issue

commit 5513c6c12c112c8f9325dbc8a8d09e58fe7611e0
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Thu Mar 5 13:01:46 2020 +0300

    - dnsfilter: fix hanging on error

commit c7b81286833a523349efb8ca972eba3540518944
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Thu Mar 5 12:42:19 2020 +0300

    * DNS: use "unrestricted" Quad9 servers
2020-03-05 13:12:21 +03:00
Simon Zolin
5dc7b848df * blocked-services: remove unknown service names 2020-03-02 18:51:48 +03:00
Simon Zolin
01d9078107 * blocked-services: remove Messenger 2020-03-02 15:53:01 +03:00
Simon Zolin
f5658af484 Merge: * DNS rewrites: don't pass request to an upstream server if matched by Rewrite rule
Close #1441

* commit 'c54fb9a96b63b07d3a36dc644e7e330800aa552e':
  * client: update translations
  * DNS rewrites: don't pass request to an upstream server if matched by Rewrite rule
2020-03-02 15:28:14 +03:00
Ildar Kamalov
c54fb9a96b * client: update translations 2020-03-02 15:24:40 +03:00
Simon Zolin
140d5553e7 * DNS rewrites: don't pass request to an upstream server if matched by Rewrite rule
For example, if there's an A rewrite rule, but no AAAA rule,
 the response to AAAA request must be empty.
2020-03-02 15:24:40 +03:00
Simon Zolin
80df44b316 Merge: * DNS: allow-filters: support updating
Close #1435

* commit '897ff436b1920a857b8881db7b213acecc7c9f85':
  * openapi: change /filtering/refresh
  + client: handle allowlist refresh
  * allow-filters: support updating
2020-02-28 18:41:28 +03:00
Simon Zolin
897ff436b1 * openapi: change /filtering/refresh 2020-02-28 18:34:14 +03:00
Ildar Kamalov
90b25300df + client: handle allowlist refresh 2020-02-28 14:31:45 +03:00
Simon Zolin
263a7ca6be * allow-filters: support updating
* /filtering/refresh: modify
2020-02-28 13:09:15 +03:00
Andrey Meshkov
f84331abde Merge: -(dnsforward): fixing an issue with the querylog speed
Squashed commit of the following:

commit 7db062d2ce40369fc6c7eaa89f678c660d531516
Author: Andrey Meshkov <am@adguard.com>
Date:   Thu Feb 27 12:08:58 2020 +0300

    *(dnsforward): added comment about oldest

commit dbec84d8a8c60ca040faa59f8aa818ed5959e92a
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Thu Feb 27 11:16:58 2020 +0300

    fix

commit d6df1ee28b3918e8d1676ff6ab4b516d46fe4202
Author: Andrey Meshkov <am@adguard.com>
Date:   Wed Feb 26 20:42:11 2020 +0300

    -(dnsforward): fixing an issue with the querylog speed
2020-02-27 14:02:05 +03:00
Andrey Meshkov
d839136fee Merge: fix #822 - Whitelist filter rules
Squashed commit of the following:

commit 350c6d5fadd77145b801df8887284bf4d64fbd19
Author: Ildar Kamalov <i.kamalov@adguard.com>
Date:   Wed Feb 26 15:43:29 2020 +0300

    * client: update translations

commit a884dffcd59f2259e2eee2c1e5a3270819bf8962
Author: Ildar Kamalov <i.kamalov@adguard.com>
Date:   Mon Feb 17 17:32:10 2020 +0300

    + client: handle whitelist filters

commit a586ec5bc614ffb0e01584a1fbdc7292b4865e68
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Wed Jan 29 18:16:59 2020 +0300

    + client: add whitelist

commit a52c3de62cf2fa34be6394771fb8bb56b4ee81e3
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Thu Feb 20 17:50:44 2020 +0300

    * change /filtering/refresh

commit 7f8f2ecccb9f7fa65318c1717dc6a7bd61afccf4
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Thu Feb 20 16:17:07 2020 +0300

    * fix race-detector issue

commit ac4b64c4a52c5b364a4b154bf18dea0fdf45647f
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Mon Jan 20 20:08:21 2020 +0300

    + whitelist filters
2020-02-26 19:58:25 +03:00
Andrey Meshkov
82aa38fce3 Merge: Feature/qlog file
* commit 'df427b6822c843a233ec0cad48624d2b1de87843': (31 commits)
  *(dnsforward): fix reading in-memory entries
  *(dnsforward): fix in-memory log entries sort orderr
  -(dnsforward): start using lastProbeLineIdx in the Seek
  *(dnsforward): replaced old search with the new one
  *(dnsforward): qlogreader implementation
  *(dnsforward): finished new qlog_file implementation
  *: better tests for qlog
  *(dnsforward): added QLogFile struct
  *: lang fix
  +(dhcpd): added static IP for MacOS
  + client: show confirm before setting static IP
  - client: fix text
  - client: pass all params to the check_config request
  *: fix home_test
  *(global): refactoring - moved runtime properties to Context
  *(dhcpd): refactoring, use dhcpd/network_utils where possible
  - client: fix button position
  - client: fix static ip description
  *: lower log level for some commands
  *(documentation): updated openapi
  ...
2020-02-21 17:05:31 +03:00
Andrey Meshkov
df427b6822 *(dnsforward): fix reading in-memory entries 2020-02-21 16:50:20 +03:00
Andrey Meshkov
9d8a95f836 *(dnsforward): fix in-memory log entries sort orderr 2020-02-21 13:01:41 +03:00
Andrey Meshkov
87c0410914 -(dnsforward): start using lastProbeLineIdx in the Seek 2020-02-21 12:57:12 +03:00
Andrey Meshkov
696a6df6ba *(dnsforward): replaced old search with the new one 2020-02-21 01:07:30 +03:00
Andrey Meshkov
90f2c18353 *(dnsforward): qlogreader implementation 2020-02-20 21:12:51 +03:00
Andrey Meshkov
712023112d *(dnsforward): finished new qlog_file implementation 2020-02-20 19:38:11 +03:00
Andrey Meshkov
67dc7d7d88 *: better tests for qlog 2020-02-20 14:11:33 +03:00
Andrey Meshkov
34e1147de3 Merge branch 'master' into feature/qlog_file 2020-02-18 13:03:21 +03:00
Andrey Meshkov
9d5f201ddf *(dnsforward): added QLogFile struct
This struct is supposed to use an easier algorithm for scanning query
log files. The end goal is allow us scanning multiple query log files.
2020-02-18 13:02:59 +03:00
Andrey Meshkov
9a81451586 Merge: - client: fix empty disallowed_clients
* commit 'd8f8e6b94a9461c56554c33fe861cb46f4b3f954':
  - client: empty disallowed_clients
2020-02-14 14:21:21 +03:00
Ildar Kamalov
d8f8e6b94a - client: empty disallowed_clients 2020-02-13 18:54:50 +03:00
Andrey Meshkov
7a3eda02ce Fix #1069 install: check static ip
Squashed commit of the following:

commit 57466233cb
Merge: 2df5f281 867bf545
Author: Andrey Meshkov <am@adguard.com>
Date:   Thu Feb 13 18:39:15 2020 +0300

    Merge branch 'master' into 1069-install-static-ip

commit 2df5f281c4
Author: Andrey Meshkov <am@adguard.com>
Date:   Thu Feb 13 18:35:54 2020 +0300

    *: lang fix

commit b4649a6b27
Merge: c2785253 f61d5f0f
Author: Andrey Meshkov <am@adguard.com>
Date:   Thu Feb 13 16:47:30 2020 +0300

    *(home): fixed issues with setting static IP on Mac

commit c27852537d
Author: Andrey Meshkov <am@adguard.com>
Date:   Thu Feb 13 14:14:30 2020 +0300

    +(dhcpd): added static IP for MacOS

commit f61d5f0f85
Author: Ildar Kamalov <i.kamalov@adguard.com>
Date:   Thu Feb 13 14:13:35 2020 +0300

    + client: show confirm before setting static IP

commit 7afa16fbe7
Author: Ildar Kamalov <i.kamalov@adguard.com>
Date:   Thu Feb 13 13:51:52 2020 +0300

    - client: fix text

commit 019bff0851
Author: Ildar Kamalov <i.kamalov@adguard.com>
Date:   Thu Feb 13 13:49:16 2020 +0300

    - client: pass all params to the check_config request

commit 194bed72f5
Author: Andrey Meshkov <am@adguard.com>
Date:   Wed Feb 12 17:12:16 2020 +0300

    *: fix home_test

commit 9359f6b55f
Merge: ae299058 c5ca2a77
Author: Andrey Meshkov <am@adguard.com>
Date:   Wed Feb 12 15:54:54 2020 +0300

    Merge with master

commit ae2990582d
Author: Andrey Meshkov <am@adguard.com>
Date:   Wed Feb 12 15:53:36 2020 +0300

    *(global): refactoring - moved runtime properties to Context

commit d8d48c5386
Author: Andrey Meshkov <am@adguard.com>
Date:   Wed Feb 12 15:04:25 2020 +0300

    *(dhcpd): refactoring, use dhcpd/network_utils where possible

commit 8d039c572f
Author: Ildar Kamalov <i.kamalov@adguard.com>
Date:   Fri Feb 7 18:37:39 2020 +0300

    - client: fix button position

commit 26c47e59dd
Author: Ildar Kamalov <i.kamalov@adguard.com>
Date:   Fri Feb 7 18:08:56 2020 +0300

    - client: fix static ip description

commit cb12babc46
Author: Andrey Meshkov <am@adguard.com>
Date:   Fri Feb 7 17:08:39 2020 +0300

    *: lower log level for some commands

commit d9001ff848
Author: Andrey Meshkov <am@adguard.com>
Date:   Fri Feb 7 16:17:59 2020 +0300

    *(documentation): updated openapi

commit 1d213d53c8
Merge: 8406d7d2 80861860
Author: Andrey Meshkov <am@adguard.com>
Date:   Fri Feb 7 15:16:46 2020 +0300

    *: merge with master

commit 8406d7d288
Author: Ildar Kamalov <i.kamalov@adguard.com>
Date:   Fri Jan 31 16:52:22 2020 +0300

    - client: fix locales

commit fb476b0117
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Fri Jan 31 13:29:03 2020 +0300

    linter

commit 84b5708e71
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Fri Jan 31 13:27:53 2020 +0300

    linter

commit 143a86a28a
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Fri Jan 31 13:26:47 2020 +0300

    linter

... and 7 more commits
2020-02-13 18:42:07 +03:00
Andrey Meshkov
57466233cb Merge branch 'master' into 1069-install-static-ip 2020-02-13 18:39:15 +03:00
Andrey Meshkov
2df5f281c4 *: lang fix 2020-02-13 18:35:54 +03:00
Ildar Kamalov
867bf5457f Merge: - client: fix wrong statuses for Safebrowsing, Parental control, Safe search
Closes #1407

* commit 'df487cbc07945354242827fdefdb6b90e6c92635':
  * client: fix wrong data type for client tags
  - client: fix wrong statuses for Safebrowsing, Parental control, Safe search
2020-02-13 18:15:32 +03:00
Andrey Meshkov
b4649a6b27 *(home): fixed issues with setting static IP on Mac 2020-02-13 16:47:30 +03:00
Andrey Meshkov
c27852537d +(dhcpd): added static IP for MacOS 2020-02-13 14:14:30 +03:00
Ildar Kamalov
f61d5f0f85 + client: show confirm before setting static IP 2020-02-13 14:13:35 +03:00
Ildar Kamalov
7afa16fbe7 - client: fix text 2020-02-13 13:51:52 +03:00
Ildar Kamalov
019bff0851 - client: pass all params to the check_config request 2020-02-13 13:49:16 +03:00
Ildar Kamalov
df487cbc07 * client: fix wrong data type for client tags 2020-02-13 12:02:29 +03:00
Ildar Kamalov
61d8ec8dae - client: fix wrong statuses for Safebrowsing, Parental control, Safe search 2020-02-13 11:57:49 +03:00
Andrey Meshkov
194bed72f5 *: fix home_test 2020-02-12 17:12:16 +03:00
Andrey Meshkov
9359f6b55f Merge with master 2020-02-12 15:54:54 +03:00
Andrey Meshkov
ae2990582d *(global): refactoring - moved runtime properties to Context 2020-02-12 15:53:36 +03:00
Andrey Meshkov
d8d48c5386 *(dhcpd): refactoring, use dhcpd/network_utils where possible 2020-02-12 15:04:25 +03:00
Andrey Meshkov
c5ca2a779c *: fixed some linter warnings 2020-02-11 12:59:21 +03:00
Ildar Kamalov
8d039c572f - client: fix button position 2020-02-07 18:37:39 +03:00
Ildar Kamalov
26c47e59dd - client: fix static ip description 2020-02-07 18:08:56 +03:00
Andrey Meshkov
cb12babc46 *: lower log level for some commands 2020-02-07 17:08:39 +03:00
Andrey Meshkov
d9001ff848 *(documentation): updated openapi 2020-02-07 16:17:59 +03:00
Andrey Meshkov
1d213d53c8 *: merge with master 2020-02-07 15:16:46 +03:00
Andrey Meshkov
808618602c *(global): fix ARM build auto-update
 Closes: https://github.com/AdguardTeam/AdGuardHome/issues/1391
2020-02-06 20:55:37 +03:00
Andrey Meshkov
fc88f59f61 *(global): fixed service implementation for OpenWrt
We now use a procd init script for OpenWrt just like it's recommended in
the documentation. The service is automatically enabled on the install
command.

 Closes: https://github.com/AdguardTeam/AdGuardHome/issues/1386
2020-02-05 17:38:23 +03:00
Andrey Meshkov
54c285001d Merge: *(dnsforward): fix safe search returning nxdomain
* commit '6c18b71010cf28e1dfe147fd6400058f6e9224be':
  *(dnsforward): fix safe search returning nxdomain
2020-02-05 15:35:57 +03:00
Andrey Meshkov
6c18b71010 *(dnsforward): fix safe search returning nxdomain
 Closes: https://github.com/AdguardTeam/AdGuardHome/issues/1387
2020-02-05 14:30:43 +03:00
Ildar Kamalov
a5c2ad1b2f Merge: - client: block/unblock client without requesting stats
Closes #896

Squashed commit of the following:

commit 66b781438aa668a16b19455c3e0dc5100417d869
Author: Ildar Kamalov <i.kamalov@adguard.com>
Date:   Mon Feb 3 12:59:25 2020 +0300

    - client: block/unblock client without requesting stats

commit e70f62738d549e32339bae3d5e996a912b99c21d
Author: Ildar Kamalov <i.kamalov@adguard.com>
Date:   Mon Feb 3 12:22:13 2020 +0300

    - client: get current access settings before set

commit 65c59d1d55f3255f33f917b61b6ab2c6c2e54271
Author: Ildar Kamalov <i.kamalov@adguard.com>
Date:   Mon Feb 3 12:21:12 2020 +0300

    * client: mode svg-url-loader to devDependencies
2020-02-04 15:48:07 +03:00
Andrey Meshkov
d4069f824a Merge: Revert removing locales from js bundle
* commit 'ee5456cf8c7cf2d4513d6ee0e6a205cfb987634f':
  Revert remove locales from js bundle
2020-02-04 13:49:00 +03:00
Ildar Kamalov
ee5456cf8c Revert remove locales from js bundle 2020-02-04 13:37:35 +03:00
Ildar Kamalov
8330f40d51 Merge: Remove locales from js bundle
* commit 'd633e45a064e94029d5e659efa07aeb685794a8b':
  + client: add eslint-import-resolver-webpack
  + client: remove locales from js bundle
  + http: allow access to /__locales/ when not authenticated
  * http: allow access to /__locales/ while installing
2020-02-03 18:34:40 +03:00
Andrey Meshkov
d062acc149 *(global): update trackers db 2020-02-03 14:17:39 +03:00
Ildar Kamalov
8406d7d288 - client: fix locales 2020-01-31 16:52:22 +03:00
Ildar Kamalov
d633e45a06 + client: add eslint-import-resolver-webpack 2020-01-31 16:01:02 +03:00
Ildar Kamalov
4d55f51fee + client: remove locales from js bundle 2020-01-31 15:57:20 +03:00
Simon Zolin
2151563757 + http: allow access to /__locales/ when not authenticated 2020-01-31 14:15:11 +03:00
Simon Zolin
f3b41efff3 * http: allow access to /__locales/ while installing 2020-01-31 14:09:04 +03:00
Simon Zolin
fb476b0117 linter 2020-01-31 13:29:03 +03:00
Simon Zolin
84b5708e71 linter 2020-01-31 13:27:53 +03:00
Simon Zolin
143a86a28a linter 2020-01-31 13:26:47 +03:00
Simon Zolin
e528522ad5 linter 2020-01-31 13:24:18 +03:00
Ildar Kamalov
f91cbea9d5 - client: add divider 2020-01-31 13:21:32 +03:00
Ildar Kamalov
8575042c23 - client: fix locales 2020-01-31 13:21:32 +03:00
Ildar Kamalov
56f4daeb68 - client: remove staticIp from apply config 2020-01-31 13:21:32 +03:00
Ildar Kamalov
eb075198c2 - client: send set_static_ip: false as default 2020-01-31 13:21:32 +03:00
Ildar Kamalov
cc2d953c9d + client: handle static IP while doing initial setup 2020-01-31 13:21:32 +03:00
Simon Zolin
5c385521c4 + install: check static ip
* move code to network_utils

+ add tests

'dhcp' package has its own network_utils for now

+ doc: add static ip configuration algorithm on Ubuntu
2020-01-31 13:21:22 +03:00
Andrey Meshkov
207e0236f7 Merge branch 'master' of ssh://bit.adguard.com:7999/dns/adguard-home 2020-01-30 19:18:20 +03:00
Simon Zolin
1a88a63415 Merge: - filtering: fix host rules matching
Close #1365

Squashed commit of the following:

commit 9cbca2d330ae12b222633201f4864abb7f7cd7a3
Merge: 8ce6b015 be93dc34
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Thu Jan 30 19:03:21 2020 +0300

    Merge remote-tracking branch 'origin/master' into 1365-hostrules

commit 8ce6b0151a2b552c4ccb3ee1f7e36ce260ba96ea
Merge: c752ab33 5c814b29
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Thu Jan 30 18:57:20 2020 +0300

    Merge remote-tracking branch 'origin/master' into 1365-hostrules

commit c752ab33b074312f10772467436a27a90339a919
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Thu Jan 30 14:18:58 2020 +0300

    use new Match()

commit ce2f628aca9f934c776c8c690813efeed5d5427b
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Thu Jan 30 12:03:21 2020 +0300

    minor

commit ebebe02a63821fedd3904db384406c30de52d515
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Thu Jan 30 11:21:47 2020 +0300

    * dnsfilter: use new version of urlfilter's Match()

commit 84edc44f2ee5a67316114f048740825259cc87ff
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Fri Jan 24 14:10:41 2020 +0300

    - filtering: fix host rules matching

    Match by both IPv4 and IPv6 rules, not just the first one in list.
2020-01-30 19:06:09 +03:00
Ildar Kamalov
be93dc3482 Merge: - client: add initial flag for getLogs
* commit 'dd37c9651a0a5914a5e8c9be4c2f6ad23faf1a13':
  - client: add initial flag for getLogs
2020-01-30 18:59:28 +03:00
Andrey Meshkov
6faf2ce931 *(global): update trackers db 2020-01-30 18:40:58 +03:00
Ildar Kamalov
5c814b29e1 Merge: + client: handle client block and unblock from the top clients table
Closes #896

Squashed commit of the following:

commit 776de2ae0a62823b8968cff79a9fa7ba350d7f1c
Author: Ildar Kamalov <i.kamalov@adguard.com>
Date:   Thu Jan 30 11:13:41 2020 +0300

    - client: fix normalizeTextarea and blocking button

commit 399e6bc3893093632b09247eaf6493521a668c84
Author: Ildar Kamalov <i.kamalov@adguard.com>
Date:   Wed Jan 29 17:19:50 2020 +0300

    + client: handle client block and unblock from the top clients table
2020-01-30 13:58:54 +03:00
Andrey Meshkov
76be272787 Merge branch 'master' of ssh://bit.adguard.com:7999/dns/adguard-home 2020-01-30 13:06:38 +03:00
Andrey Meshkov
327030789d *(global): updated trackers database 2020-01-30 12:28:01 +03:00
Simon Zolin
e27cbdf81b Merge: + DNS: Ability to check from UI if a host name is filtered
Close #856

* commit '8ec7c37715e410c5564c512162be03383b577e39':
  + client: handle check host
  + GET /filtering/check_host: Check if host name is filtered
2020-01-30 12:16:17 +03:00
Ildar Kamalov
8ec7c37715 + client: handle check host 2020-01-30 12:08:46 +03:00
Simon Zolin
0d7c01d50f + GET /filtering/check_host: Check if host name is filtered 2020-01-30 12:08:46 +03:00
Ildar Kamalov
dd37c9651a - client: add initial flag for getLogs 2020-01-30 11:57:51 +03:00
Simon Zolin
dcc575402b Merge: * clients: update runtime clients of type DHCP by event from DHCP module
Close #1378

Squashed commit of the following:

commit e45e2d0e2768fe0677eee43538d381b3eaba39ca
Merge: bea8f79d 5e9c21b0
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Wed Jan 29 20:08:20 2020 +0300

    Merge remote-tracking branch 'origin/master' into 1378-dhcp-clients

commit bea8f79dd6f8f3eae87649d853917b503df29616
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Wed Jan 29 20:08:06 2020 +0300

    minor

commit 6f1da9c6ea9db5bf80acf234ffe322a4cd2d8d92
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Wed Jan 29 19:31:08 2020 +0300

    fix

commit a88b46c1ded2b460ef7f0bfbcf1b80a066edf1c1
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Wed Jan 29 12:53:22 2020 +0300

    minor

commit d2897fe0a9b726fcd97a04906e3be3d21f6b42d7
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Tue Jan 28 19:55:10 2020 +0300

    * clients: update runtime clients of type DHCP by event from DHCP module

commit 3aa352ed2372141617d77363b2f2aeaf3a7e47a0
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Tue Jan 28 19:52:08 2020 +0300

    * minor

commit f5c2291e39df4d13b9baf9aa773284890494bb0a
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Tue Jan 28 19:08:23 2020 +0300

    * clients: remove old entries of source type /etc/hosts or ARP
2020-01-30 10:25:02 +03:00
Ildar Kamalov
5e9c21b0a7 Merge: + client: show filter name for blocked items in the query log
Closes #993

Squashed commit of the following:

commit 4c5e17226c6efa8a7847a8c565c491a7bae2db59
Author: Ildar Kamalov <i.kamalov@adguard.com>
Date:   Wed Jan 29 12:21:40 2020 +0300

    - client: use constant

commit 818c07d1cfb210965a6413dc8370fc8867979c7b
Author: Ildar Kamalov <i.kamalov@adguard.com>
Date:   Wed Jan 29 12:18:31 2020 +0300

    - client: fix filter find

commit 1f9132151c843dacbf26f814faeeea3cfdff9b73
Author: Ildar Kamalov <i.kamalov@adguard.com>
Date:   Tue Jan 28 15:52:29 2020 +0300

    + client: show filter name for blocked items in the query log
2020-01-29 15:00:37 +03:00
Simon Zolin
26f69e7126 Merge: * client tags: remove user_other
* commit 'f2591e1d8a87c4a456e54d86c7c1220ef7de62e8':
  * minor
2020-01-28 14:37:58 +03:00
Simon Zolin
f2591e1d8a * minor 2020-01-28 14:33:58 +03:00
Simon Zolin
106a7a6017 Merge: + clients: support per-client tags
Close #1081

* commit '67956597be3bab44124277b7a0e23c02a49da983':
  + client: handle client tags
  * minor
  + clients: support per-client tags
2020-01-28 14:18:17 +03:00
Ildar Kamalov
67956597be + client: handle client tags 2020-01-28 14:08:28 +03:00
Simon Zolin
b519c3a83f * minor 2020-01-28 14:07:11 +03:00
Simon Zolin
91c2712366 + clients: support per-client tags 2020-01-28 14:06:52 +03:00
Simon Zolin
bd6431bc29 Merge: + DNS: TLS handshake: terminate handshake on bad SNI
Close #1014

* commit 'bfd1f3b6506e45ae59e90d012e0be5c2dc0b5261':
  + DNS: TLS handshake: terminate handshake on bad SNI
2020-01-28 13:29:35 +03:00
Andrey Meshkov
02d30388e5 Merge: Update README.md
* commit '56b0dba1482165e1db67855921ddc2e09f5afc38':
  Update README.md
2020-01-28 13:26:23 +03:00
Simon Zolin
bfd1f3b650 + DNS: TLS handshake: terminate handshake on bad SNI 2020-01-28 13:25:43 +03:00
hmage
56b0dba148 Update README.md
More than one requirement, so instead of `it` use plural `them`.
2020-01-28 13:07:08 +03:00
Artem Baskal
ac156b9612 Merge: + client: add detailed date format for filters
Close #624

Squashed commit of the following:

commit 5a66d8ca350880abd0a7a146b75df385aa8f97b4
Author: Artem Baskal <a.baskal@adguard.com>
Date:   Mon Jan 20 19:16:27 2020 +0300

    update CellWrap logic

commit 072586493ef2cb73ba514a01d8b7f8904d4f5754
Author: Artem Baskal <a.baskal@adguard.com>
Date:   Mon Jan 20 15:37:26 2020 +0300

    fix invalid date case

commit bd2a21f2c788b2835485f4697dac1b797d5559c0
Author: Artem Baskal <a.baskal@adguard.com>
Date:   Fri Jan 17 18:44:23 2020 +0300

    + client: add detailed date format for filters
2020-01-24 18:59:38 +03:00
Simon Zolin
ce7f1e231b Merge: * auth: respond with 403 for API requests when not authenticated
Close #1105

* commit '447080b422f929025454aaa1bc0ab4a6c8abcbd9':
  + client: handle 403 status
  * auth: respond with 403 for API requests when not authenticated
2020-01-22 18:21:55 +03:00
Ildar Kamalov
447080b422 + client: handle 403 status 2020-01-22 18:11:26 +03:00
Simon Zolin
080e1dd74e * auth: respond with 403 for API requests when not authenticated 2020-01-22 18:11:26 +03:00
Simon Zolin
b5f95fefc8 Merge: + Filters: Allow changing Filter Name and URL parameters
Close #971

* commit 'b3bca39de4bebb716606c35f034f84cb6aa12de0':
  + client: modify added filters
  * filtering/set_url: allow changing Name and URL parameters
2020-01-21 14:22:11 +03:00
Ildar Kamalov
b3bca39de4 + client: modify added filters 2020-01-21 14:19:05 +03:00
Simon Zolin
0b8cba7384 * filtering/set_url: allow changing Name and URL parameters 2020-01-21 14:19:05 +03:00
Ildar Kamalov
e9dea459dd Merge: + client: use relative URLs for login/logout
Closes #1300

* commit '1b1338fed680f13bb8128258efe87aa2a0cea4d4':
  + client: use relative URLs for login/logout
2020-01-21 14:16:44 +03:00
Simon Zolin
3f7e2f7241 Merge: * dns: refactor
Squashed commit of the following:

commit e9469266cafa3df537b5a4d5e28ca51db8289a34
Merge: 17cf6d60 e7e946fa
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Tue Jan 21 13:04:30 2020 +0300

    Merge remote-tracking branch 'origin/master' into refactor

commit 17cf6d60d11602df3837316119ba8828f41a95df
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Mon Jan 20 15:25:43 2020 +0300

    minor

commit 7b79462ebbeb743a10417bd28ceb70262ff9fa5c
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Fri Jan 17 17:50:09 2020 +0300

    minor

commit d8b175c7eda36005c0277e7876f0f0a55a661b05
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Fri Jan 17 15:30:37 2020 +0300

    minor

commit 93370aa32aa560d42fc67c95fd13f027ddc01b94
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Fri Jan 17 14:28:14 2020 +0300

    * dns: refactor

    . introduce a local context object
    . move filtering, upstream logic, stats, querylog code to separate functions
2020-01-21 13:49:34 +03:00
Simon Zolin
e7e946faa6 Merge: * DNS: nxdomain: don't return IP address for a blocked domain
Close #1284

* commit 'b01af453cc27cdb89ac0482ec68108ec8a2835a5':
  + client: handle default blocking mode
  * config: set "default" blocking mode by default
  * DNS: nxdomain: don't return IP address for a blocked domain
2020-01-20 19:17:44 +03:00
Ildar Kamalov
b01af453cc + client: handle default blocking mode 2020-01-20 19:14:14 +03:00
Simon Zolin
8daca1a55a * config: set "default" blocking mode by default 2020-01-20 19:14:14 +03:00
Simon Zolin
07ebcc2bf3 * DNS: nxdomain: don't return IP address for a blocked domain
Don't return IP address for a blocked domain
 when blocking mode is "nxdomain".
2020-01-20 19:14:14 +03:00
Ildar Kamalov
1b1338fed6 + client: use relative URLs for login/logout 2020-01-20 18:34:22 +03:00
Artem Baskal
3166607540 Merge: + client: show date in query logs
Close #1202

* commit 'af7b9523b5732e708bf29d1dc8102887eece93b5':
  rewrite using isToday helper
  + client: add jsdocs with returning format of date format functions
  + client: show date in query logs
2020-01-20 15:02:29 +03:00
Artem Baskal
1947f1232e Merge: + client: get rid of the clients caching
Close #1218

* commit '7812ee1861be0eea89bd419ee82f6cb45b24f043':
  + client: get rid of clients caching
2020-01-17 18:57:30 +03:00
Artem Baskal
af7b9523b5 rewrite using isToday helper 2020-01-17 17:40:47 +03:00
Artem Baskal
7812ee1861 + client: get rid of clients caching 2020-01-17 13:27:22 +03:00
Artem Baskal
a3020275a2 + client: add jsdocs with returning format of date format functions 2020-01-17 12:57:30 +03:00
Artem Baskal
2bc2b342eb Merge + client: close sidebar menu on mobiles screen after choosing
Close #1318

* commit '2c6e3d0e91af59304128e7a94b1f13362b4b4117':
  + client: add comment about order of settings dropdown order
  + client: close sidebar menu on mobiles screen after choosing
2020-01-17 11:34:48 +03:00
Simon Zolin
e5a1026de1 Merge: dnsproxy v0.23.7
Close #1309

* commit '749dc300648fcb0720fca3b2f0df3e3ce841ae02':
  dnsproxy v0.23.7
2020-01-16 16:12:02 +03:00
Simon Zolin
749dc30064 dnsproxy v0.23.7 2020-01-16 15:10:27 +03:00
Simon Zolin
0ffe53405d Merge: - install: fix DNS nameserver issue after we disable DNSStubListener on Ubuntu
* commit 'd31e9970419c393ac32af527bd94a940f6def990':
  + client: add autofix explanation to the install form
  - install: fix DNS nameserver issue after we disable DNSStubListener on Ubuntu
2020-01-16 14:53:00 +03:00
Ildar Kamalov
d31e997041 + client: add autofix explanation to the install form 2020-01-16 14:30:08 +03:00
Simon Zolin
254cab3a23 - install: fix DNS nameserver issue after we disable DNSStubListener on Ubuntu 2020-01-16 14:28:21 +03:00
Simon Zolin
6563886b49 Merge: - install: recover from error on DNS server start
Close #1293

Squashed commit of the following:

commit 0981754c5c2c67f2567ee4af0d9ab24377c53413
Merge: ef81f2c8 a6d75118
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Thu Jan 16 14:19:20 2020 +0300

    Merge remote-tracking branch 'origin/master' into 1293-install

commit ef81f2c886f3bfcff4e4352d7ecea6642be7d8e1
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Mon Dec 30 18:32:11 2019 +0300

    linter

commit 9e205be53d9de25bd2ad63398644e14b09f95238
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Mon Dec 30 17:22:17 2019 +0300

    - install: recover from error on DNS server start

    Close all modules properly
    Don't register HTTP handlers twice
2020-01-16 14:25:40 +03:00
Simon Zolin
a6d7511806 Merge: + dns rewrites: support wildcard override
Close #922

Squashed commit of the following:

commit 8ab742d84916a02043989fcfa5fc258e84046205
Merge: 2abde92f e398117d
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Thu Jan 16 12:47:44 2020 +0300

    Merge remote-tracking branch 'origin/master' into 922-rewrites

commit 2abde92fe2d1bdb153787b4ecac60f9744c7fd1a
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Thu Jan 16 12:34:41 2020 +0300

    minor

commit 3c20579cde85967786830d2d1b87cd987fc2ae12
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Fri Jan 10 19:06:53 2020 +0300

    don't change the order of rewrite entry list (apply priority at runtime)

commit 4f658f98011a7e31852c0ce379f2a02738f5614f
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Tue Dec 31 15:21:50 2019 +0300

    minor

commit 9e56b4f3abefe3ff1d19bc61375f31dc55242e52
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Tue Dec 31 15:14:14 2019 +0300

    * remove unused code

commit 4178f025a388eb768914306efa91ffead87e5a0c
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Tue Dec 31 15:13:57 2019 +0300

    + dns rewrites: support wildcard override
2020-01-16 12:51:35 +03:00
Simon Zolin
e398117d25 Merge: Service: Support installation on OpenWrt
Close #1348

Squashed commit of the following:

commit 87cca9129631350681ec77d1dee0781f0a237387
Merge: 313beee1 9b0096dd
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Thu Jan 16 12:41:20 2020 +0300

    Merge remote-tracking branch 'origin/master' into 1348-openwrt

commit 313beee114e1daae8319192949b4db5fd8321df1
Merge: 16225231 e2f9e298
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Thu Jan 16 12:01:21 2020 +0300

    Merge remote-tracking branch 'origin/master' into 1348-openwrt

commit 16225231bf3836fc6785ebefe44d239591b0485e
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Thu Jan 16 11:59:59 2020 +0300

    minor

commit faca9821003334d2032ccec1010eb2acbac88743
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Thu Jan 16 11:54:53 2020 +0300

    minor

commit 0e92ec123023cb6b81ef5cfd7e3ae454c3931980
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Wed Jan 15 14:03:40 2020 +0300

    minor

commit 3185b1d48f31a95857a27e8ed858443f977e97af
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Tue Jan 14 13:18:00 2020 +0300

    minor

commit 6bd6012d01ef55631215a5542630ccf92180739e
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Mon Jan 13 19:57:44 2020 +0300

    - service: fix installation on OpenWrt
2020-01-16 12:44:06 +03:00
Artem Baskal
2c6e3d0e91 + client: add comment about order of settings dropdown order 2020-01-16 12:13:24 +03:00
Ildar Kamalov
9b0096dd9d Merge: - client: fix blinking header badge
Closes #1275

* commit '7ef2a6601133ef4fa21d786f0c958d8bc781995d':
  - client: fix blinking header badge
2020-01-16 11:16:41 +03:00
Ildar Kamalov
7ef2a66011 - client: fix blinking header badge 2020-01-16 11:12:07 +03:00
Simon Zolin
e2f9e29817 Merge: + readme: Projects that use AdGuardHome
Close #1201

* commit '387ac00edfe72458469c8c906c0031269f6a26a4':
  + readme: Projects that use AdGuardHome
2020-01-16 10:46:27 +03:00
Ildar Kamalov
b046da5db3 Merge: DNS settings: add "disable_ipv6"
Closes #473

* commit 'b91753e746c421b0e2bc82e2c2dd5aeb169a5406':
  + client: handle Disable IPv6 setting
  + dns: add "aaaa_disabled" setting
2020-01-16 10:42:44 +03:00
Simon Zolin
5773df6f6c Merge: + --version: Show the version and exit
Close #1285

Squashed commit of the following:

commit fdc616f38651f9fcc16442003bd15adb88e2c2b1
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Wed Jan 15 18:46:00 2020 +0300

    minor

commit 6f5a22c86e5fe76c3959343a8077d3997ff0707d
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Mon Dec 30 19:19:30 2019 +0300

    + --version: Show the version and exit
2020-01-16 10:42:03 +03:00
Simon Zolin
387ac00edf + readme: Projects that use AdGuardHome 2020-01-16 10:40:46 +03:00
Artem Baskal
8e30c69e4a + client: close sidebar menu on mobiles screen after choosing 2020-01-16 00:23:28 +03:00
Simon Zolin
eb6c4eb132 + release.sh: add armv5 build
Close #1239

Squashed commit of the following:

commit 707e2f8e265e294c7b1328c375648f799a5ae293
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Fri Jan 10 16:32:52 2020 +0300

    leave "AdGuardHome_linux_arm" by default

commit cca01fd03200e70d6ee2201540570382f2b7fdf4
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Fri Jan 10 14:53:37 2020 +0300

    fix auto-update; update readme

commit f393a4f511861ef1998c68775bb8f234c5ce1838
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Fri Jan 10 13:00:37 2020 +0300

    + release.sh: add armv5 build; rename armv6 build

commit 73f2d20ba6b0a94a9929882fe15175ba80b528d7
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Fri Jan 10 12:59:55 2020 +0300

    * release.sh: fix indentation
2020-01-15 18:58:12 +03:00
Simon Zolin
d154502b31 Merge: * auto-update: check if executable file exists
Close #1307

* commit '1792fd3e0f2a7a73536e2bdb29973074be8adf57':
  * auto-update: check if executable file exists
2020-01-15 18:52:23 +03:00
Simon Zolin
47631105c7 Merge: * filters: use increasing update interval
Close #1246

Squashed commit of the following:

commit d0b40719457c1bc41c2f32b425c95e35916366e9
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Wed Jan 15 13:41:45 2020 +0300

    minor

commit c1b682156c1b71dcfc2febe02e3df0a4d5e0a81b
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Tue Jan 14 20:09:27 2020 +0300

    * filters: increasing update interval
2020-01-15 18:41:27 +03:00
Artem Baskal
108cf73a30 + client: show date in query logs 2020-01-15 18:33:24 +03:00
Artem Baskal
c23c323b1a Merge - client: fix logic of top clients normalization
Close #1294

* commit '392535ce3aad89fad52074399ec7b6986de8c4e9':
  - client: change code style of top clients normalization helper
  - client: fix logic of top clients normalization
2020-01-15 18:21:33 +03:00
Artem Baskal
2d4a73bbcf - client: add wrapper for input normalization on blur
Close #1314

* commit '600781bb8096e814ad0671af28be94061453c3a8':
  - client: add wrapper for input normalization on blur
2020-01-15 18:19:46 +03:00
Ildar Kamalov
b91753e746 + client: handle Disable IPv6 setting 2020-01-14 14:50:43 +03:00
Simon Zolin
7ac5760509 + dns: add "aaaa_disabled" setting 2020-01-14 14:50:20 +03:00
Ildar Kamalov
e667ec1b60 Merge: - client: fix loading of additional search results
Closes #1275

* commit '86df748209cafc14379a0d43d321b4c4ed318dd5':
  - client: fix loading of additional search results
2020-01-14 14:22:40 +03:00
Artem Baskal
392535ce3a - client: change code style of top clients normalization helper 2020-01-14 11:09:17 +03:00
Artem Baskal
fb8d23f51b - client: fix logic of top clients normalization 2020-01-13 17:41:59 +03:00
Ildar Kamalov
86df748209 - client: fix loading of additional search results 2020-01-13 17:06:00 +03:00
Ildar Kamalov
ba04b38a5f Merge: * client: update translations
Closes #1334

* commit 'd4789c5d938fbb6903677da6bc76fbff79b274d7':
  * client: update translations
2020-01-13 10:03:24 +03:00
Artem Baskal
600781bb80 - client: add wrapper for input normalization on blur 2020-01-10 19:54:57 +03:00
Simon Zolin
318ed0dafb Merge: resolve minor issues
* commit '3b9d758510cd65e483524de1e698076326950ab0':
  * refactor
  * dnsforward: get per-client settings only once
  * clients: manual clients don't exclude auto-clients anymore
  * clients: Upstreams cache: refactor
  * clients: remove WHOIS info for manually-added clients
2020-01-10 19:18:10 +03:00
Simon Zolin
3b9d758510 * refactor 2020-01-10 19:08:07 +03:00
Simon Zolin
0ef8e5cdae * dnsforward: get per-client settings only once
+ dnsforward: add 'ProtectionEnabled = false' test
2020-01-10 19:08:05 +03:00
Simon Zolin
b3ddae7f85 * clients: manual clients don't exclude auto-clients anymore 2020-01-10 15:52:40 +03:00
Simon Zolin
995373c74b * clients: Upstreams cache: refactor
don't use a separate container
2020-01-10 15:52:38 +03:00
Simon Zolin
87bcb67f8f * clients: remove WHOIS info for manually-added clients 2020-01-10 15:51:57 +03:00
Simon Zolin
688a5d84c8 Merge: * dnsfilter: change DNS answer for host rules
Close #1328

* commit '8d2a9ce923eae4673a74f4c4a7e1d9ef840f04d2':
  * dnsfilter: change DNS answer for host rules
2020-01-10 15:29:56 +03:00
Simon Zolin
0cd25cf598 Merge: - clients: fix rename
Close #1340

Squashed commit of the following:

commit 95f0291c681f98c29f4014b651c159d387301af4
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Thu Jan 9 18:56:23 2020 +0300

    add test

commit 293be277e245ff2f430e8c1e9ee3e82dc7da0995
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Thu Jan 9 16:04:36 2020 +0300

    - clients: fix rename
2020-01-10 15:28:58 +03:00
Andrey Meshkov
84b11ff7a5 Merge: * readme: Add note about being able to ad-block IoT devices
* commit '358a36b138b816eba2602b9ab2d44f62ccbfeff3':
  * readme: Add note about being able to ad-block IoT devices
2020-01-10 14:21:58 +03:00
Simon Zolin
1792fd3e0f * auto-update: check if executable file exists 2020-01-10 12:40:16 +03:00
Simon Zolin
d309a7e33c Merge: - clients: settings safebrowsing_enabled and safesearch_enabled were incorrect (reversed)
Close #1339

* commit '4386e8ddde296f270fada3deba43a48b53b5da4c':
  - settings safebrowsing_enabled and safesearch_enabled were incorrect (reversed)
2020-01-10 12:22:00 +03:00
Simon Zolin
e28fdd37cd Merge: - querylog: incorrect client IP when blocked by hosts filter
Close #1329

* commit '29998a8959d9ed4d31d6034eaa3a1ec9d178e191':
  - querylog: incorrect client IP when blocked by hosts filter
2020-01-10 12:21:17 +03:00
mountainsandcode
358a36b138 * readme: Add note about being able to ad-block IoT devices 2020-01-10 12:17:04 +03:00
Ildar Kamalov
d4789c5d93 * client: update translations 2020-01-09 21:42:43 +03:00
Simon Zolin
8d2a9ce923 * dnsfilter: change DNS answer for host rules
When matched by a host rule, return only the IP address specified in rule.
Respond with an empty IP list to another request type.

:: host -- return nothing to A, return :: to AAAA request
0.0.0.0 host -- return 0.0.0.0 to A, return nothing to AAAA request
2020-01-09 19:31:14 +03:00
Simon Zolin
29998a8959 - querylog: incorrect client IP when blocked by hosts filter 2020-01-09 18:27:44 +03:00
Simon Zolin
4386e8ddde - settings safebrowsing_enabled and safesearch_enabled were incorrect (reversed) 2020-01-09 15:01:54 +03:00
Andrey Meshkov
94d86eee10 -(dnsforward): update dnsproxy to v0.23.6 2019-12-31 18:09:55 +03:00
Andrey Meshkov
d0eb5695df Merge branch 'master' of ssh://bit.adguard.com:7999/dns/adguard-home 2019-12-25 18:47:43 +03:00
Andrey Meshkov
4808b33c01 *(dnsfilter): update urlfilter to v0.7.2 2019-12-25 18:46:59 +03:00
Andrey Meshkov
b4220722a0 Merge: * client: update translations
* commit '1800c6583665da4672ff8dab2be410511ddf8ca6':
  * client: update chinese translations
  - client: fix translation
  * client: update translations
2019-12-25 14:30:28 +03:00
Andrey Meshkov
5556e34e7e -(dnsforward): use dnsproxy v0.23.5 - fix DO caching 2019-12-25 14:29:33 +03:00
Ildar Kamalov
1800c65836 * client: update chinese translations 2019-12-25 13:42:04 +03:00
Ildar Kamalov
d8f37093ae - client: fix translation 2019-12-25 13:30:43 +03:00
Ildar Kamalov
4aaa006c41 * client: update translations 2019-12-25 13:05:27 +03:00
Andrey Meshkov
1e36deeeda *(global): update translations 2019-12-24 12:15:27 +03:00
Andrey Meshkov
dfe47ab33b *: update translation script readme 2019-12-24 11:45:02 +03:00
Andrey Meshkov
670810c433 -(dnsforward): the issue with cache and custom upstreams
 Closes: https://github.com/AdguardTeam/AdGuardHome/issues/1301
2019-12-24 11:19:36 +03:00
Andrey Meshkov
3a077717ae *(home): do not set whois-info for manually created clients
 Closes: Do not set WhoisInfo for manually created clients
2019-12-23 20:02:06 +03:00
Andrey Meshkov
cdd55139fa *(dnsforward): cache upstream instances
 Closes: https://github.com/AdguardTeam/AdGuardHome/issues/1296
2019-12-23 19:31:27 +03:00
Andrey Meshkov
3dd91cf179 -: add one more test 2019-12-23 17:12:50 +03:00
Andrey Meshkov
6bf512f96f -(home): fix searching clients by mac address 2019-12-23 16:59:02 +03:00
Andrey Meshkov
9b93d43ac6 -(home): fix deadlock in clients 2019-12-23 16:27:24 +03:00
Andrey Meshkov
ec7a62e123 -(home): fix duplicate check when adding a new ClientHost 2019-12-23 16:20:12 +03:00
Andrey Meshkov
b4f4111609 -(dnsfilter): match DNS response against filtering rules only
Supposedly, this will fix #1290
2019-12-23 15:59:49 +03:00
Andrey Meshkov
7c0cf641db Merge: -(dnsforward): fix client settings for CNAME matching
fix #1274

* commit '5077f1a2b31056e184156ce9602e2428c7676acb':
  -(dnsforward): fix client settings for CNAME matching
2019-12-23 15:36:14 +03:00
Andrey Meshkov
87a82f5e60 Merge: -(global): fixing the installation flow on windows
* commit 'abbf8fb87b747700ecced07c9ca0b8e1f997ece1':
  -(global): fixing the installation flow on windows
2019-12-23 15:21:29 +03:00
Andrey Meshkov
abbf8fb87b -(global): fixing the installation flow on windows
There could be a bug caused by the lack of SO_REUSEPORT
2019-12-23 14:57:10 +03:00
Ildar Kamalov
c5537968b1 Merge: + DNS Rewrites: support wildcard domain name
Closes #922

* commit '5ba45b91c9cfde84fc0866e6b3fca679504975e7':
  * client: fix render field for DNS settings
  + client: handle wildcard domains
  + DNS Rewrites: support wildcard domain name
2019-12-23 14:02:21 +03:00
Andrey Meshkov
5077f1a2b3 -(dnsforward): fix client settings for CNAME matching
 Closes: https://github.com/AdguardTeam/AdGuardHome/issues/1274
2019-12-23 13:36:59 +03:00
Andrey Meshkov
482e9fd6f3 Merge: - client: sort clients table by requests count by default
fix #1253

* commit 'ca79fc98f5d43a5ca1955e8b0056edc3a6ee9b61':
  change code style in reduce
  - client: sort clients table by requests count by default
2019-12-23 12:35:07 +03:00
Ildar Kamalov
5ba45b91c9 * client: fix render field for DNS settings 2019-12-20 17:02:42 +03:00
Ildar Kamalov
c9478592a2 + client: handle wildcard domains 2019-12-20 16:48:27 +03:00
Simon Zolin
8685584bf5 + DNS Rewrites: support wildcard domain name 2019-12-20 16:45:58 +03:00
Artem Baskal
ca79fc98f5 change code style in reduce 2019-12-20 16:22:38 +03:00
Andrey Meshkov
28096d6966 Merge: + client: add clients forms validation and cache findClients function
* commit '2e493e0226d3f22941fd09eed44ebb67a4d2874a':
  + client: add clients forms validation and cache findClients function
2019-12-20 16:15:04 +03:00
Artem Baskal
2e493e0226 + client: add clients forms validation and cache findClients function 2019-12-20 16:07:03 +03:00
Artem Baskal
cddf3ca01e Merge: - client: delete whois column in the static clients table
Close #1252

* commit 'c2f1b2d8f5c9814c3328555fc364d1360518c872':
  - client: delete whois column in the statis cients table
2019-12-20 16:02:27 +03:00
Ildar Kamalov
24e8ef6b32 Merge: DHCP: show static leases all the time
Closes #1023

* commit '60cbb93488ec3fa1ca720d88e79ae48130ac9461':
  + client: show DHCP static leases all the time
  * dhcp: now static leases functionality works before DHCP is started
2019-12-20 15:18:23 +03:00
Simon Zolin
ceab5d4c41 Merge: + DNS: Allow DOH queries via unencrypted HTTP
Close #1276

* commit '91c3149ee2dc902a5081345431f586ae72362963':
  + allow_unencrypted_doh: add test
  + DNS: Allow DOH queries via unencrypted HTTP (e.g. for reverse proxying)
2019-12-20 15:14:41 +03:00
Simon Zolin
91c3149ee2 + allow_unencrypted_doh: add test 2019-12-20 14:50:54 +03:00
Artem Baskal
57c031c1c6 - client: sort clients table by requests count by default 2019-12-20 14:15:57 +03:00
Krombel
ec8fe0b40c + DNS: Allow DOH queries via unencrypted HTTP (e.g. for reverse proxying) 2019-12-20 12:22:43 +03:00
Andrey Meshkov
32f780366e -(global): docker image - dirty version 2019-12-19 19:50:12 +03:00
Andrey Meshkov
041ea65d14 Merge: - DNS: configuration settings were not applied until full restart
* commit 'd65cdd4544efdecb9bbe36e411c0bbcb6475ba94':
  - DNS: configuration settings were not applied until full restart
2019-12-19 15:03:13 +03:00
Simon Zolin
d65cdd4544 - DNS: configuration settings were not applied until full restart 2019-12-19 14:49:15 +03:00
Andrey Meshkov
cde15afd90 *: use npm ci for more reliable builds 2019-12-19 13:28:08 +03:00
Andrey Meshkov
00fabb0ecf Merge: + client: add X-DNS-Prefetch-Control meta tag
* commit '073643537612437430c7035cda679a758ca94d13':
  + client: add meta tag to index.html
  + client: add X-DNS-Prefetch-Control meta tag
2019-12-19 12:16:13 +03:00
Ildar Kamalov
0736435376 + client: add meta tag to index.html 2019-12-19 12:13:15 +03:00
Andrey Meshkov
f6976f3c7e Merge: - DNS: set RecursionAvailable flag in response message
* commit '4540a4e94ad204fc1cba9e15b95ce9b684ed2335':
  - DNS: set RecursionAvailable flag in response message
2019-12-19 12:09:32 +03:00
Simon Zolin
4540a4e94a - DNS: set RecursionAvailable flag in response message 2019-12-19 11:52:21 +03:00
Artem Baskal
c2f1b2d8f5 - client: delete whois column in the statis cients table 2019-12-19 11:15:58 +03:00
Ildar Kamalov
bf410c81ae + client: add X-DNS-Prefetch-Control meta tag 2019-12-19 10:23:04 +03:00
Ildar Kamalov
60cbb93488 + client: show DHCP static leases all the time 2019-12-18 13:40:05 +03:00
Andrey Meshkov
b54bf94697 Merge: - client: hide dns is starting message by default
* commit '7fade498b910a2492b2e214f0b2a706b51548b34':
  - client: add setDnsRunningStatus action
  - client: save in store dnsStatus even if running false
  - client: hide dns is starting message by default
2019-12-17 22:35:34 +03:00
Artem Baskal
7fade498b9 - client: add setDnsRunningStatus action 2019-12-17 18:54:28 +03:00
Artem Baskal
39640d8190 - client: save in store dnsStatus even if running false 2019-12-17 17:46:59 +03:00
Artem Baskal
242e5e136f - client: hide dns is starting message by default 2019-12-17 16:15:44 +03:00
Simon Zolin
b9c0b55356 * dhcp: now static leases functionality works before DHCP is started 2019-12-17 15:59:05 +03:00
Simon Zolin
b105f20837 Merge: - DNS: fix slow response to /status and /access/list requests
Close #1264

* commit '8521635f63e9570a4e75033533dec8180e7f130a':
  - DNS: fix slow response to /status and /access/list requests
2019-12-17 15:11:48 +03:00
Simon Zolin
8521635f63 - DNS: fix slow response to /status and /access/list requests 2019-12-17 13:09:03 +03:00
Simon Zolin
04de9d0f7b Merge: - DNS: "custom_ip" blocking mode didn't work after app restart
Close #1262

Squashed commit of the following:

commit bacd683ef5b52e275323a3c07b370ca08702403e
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Mon Dec 16 17:00:49 2019 +0300

    fix

commit 3d4f9626460de3e13a621f2b8e535e9e0939e2bb
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Mon Dec 16 16:54:23 2019 +0300

    fix

commit bf924bf90e9b705883bec88f8d7af11c39c1f322
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Mon Dec 16 16:45:41 2019 +0300

    add test

commit 43338ea3645a025d69dd838bc732344255960bed
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Mon Dec 16 16:07:51 2019 +0300

    - DNS: "custom_ip" blocking mode didn't work after app restart

commit 220f32e713a95d2c67355c61e419dd09df9d42b2
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Mon Dec 16 15:46:01 2019 +0300

    - first run: fix panic on stop in case initialization didn't complete

    e.g. when Stats module can't be initialized because of incompatible file system
2019-12-16 17:04:30 +03:00
Simon Zolin
6a2430b799 Merge: - clients: IPv6 address matching didn't work
Close #1261

Squashed commit of the following:

commit acc39ea6c0d88cb9d2b07837e89db2c170263891
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Mon Dec 16 12:29:33 2019 +0300

    minor

commit 0d2ef3d53185d5ca17797e2ac20f0efc1498a53c
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Mon Dec 16 12:13:17 2019 +0300

    add link to GH

commit 0da754b1751057968780b457a2f490f4148275a8
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Mon Dec 16 11:53:42 2019 +0300

    - clients: IPv6 address matching didn't work
2019-12-16 12:36:52 +03:00
Simon Zolin
d9ee9b88d6 Merge: Revert "Merge: + DNS: TLS handshake: terminate handshake on bad SNI"
* commit 'b00a789ca34008dfe9e4cfdb0b2d4d63874957ff':
  Revert "Merge: + DNS: TLS handshake: terminate handshake on bad SNI"
2019-12-13 17:42:57 +03:00
Simon Zolin
864c91e524 Merge: - DNS: fix security checks via PC/SB services
Squashed commit of the following:

commit e73bc282d77a11c923a86166035f1b44427d7066
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Fri Dec 13 17:17:36 2019 +0300

    fix

commit f8b5c174816c6fd57fb3930cc465318f468fc8ff
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Fri Dec 13 17:03:13 2019 +0300

    fix

commit 9d5483a2fb89a172218547b5ee356e7122dca609
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Fri Dec 13 16:54:30 2019 +0300

    - fix security checks via PC/SB services
2019-12-13 17:42:01 +03:00
Simon Zolin
b00a789ca3 Revert "Merge: + DNS: TLS handshake: terminate handshake on bad SNI"
This reverts commit c8c76ae12b.
2019-12-13 17:38:17 +03:00
Simon Zolin
42790bf083 Merge: * client: correction on message toast
* commit '4942d0c39f2b078ba25993151e7ee59fa0e969b8':
  * client: correction on message toast
2019-12-13 14:02:13 +03:00
Fresnel Vincent
4942d0c39f * client: correction on message toast
fix #1255
2019-12-13 13:50:42 +03:00
Andrey Meshkov
af7f51d9b9 Merge branch 'master' of ssh://bit.adguard.com:7999/dns/adguard-home 2019-12-13 13:31:13 +03:00
Andrey Meshkov
3d280c5d92 *: run travis in AG repo only 2019-12-13 13:31:10 +03:00
Simon Zolin
c8c76ae12b Merge: + DNS: TLS handshake: terminate handshake on bad SNI
Close #1014

Squashed commit of the following:

commit 759248efc0587ff2f288996c47739e602c557a76
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Thu Dec 12 19:26:46 2019 +0300

    support empty ServerName

commit 68afecd5eca5ae66262b12dcb414b50efe88dc02
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Wed Dec 11 14:40:22 2019 +0300

    + DNS: TLS handshake: terminate handshake on bad SNI
2019-12-13 13:06:37 +03:00
Simon Zolin
aa202277fb Merge: * update translations
Close #1250

Squashed commit of the following:

commit e722a3e3b4b1049c5df22b3f11b5826992d3cc6c
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Thu Dec 12 18:27:51 2019 +0300

    update ru

commit 086e722a4dc1922ac7b8aff537050689900a8bd0
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Thu Dec 12 18:15:15 2019 +0300

    fix cloudflare -> quad9, update es

commit 86c235936d2f86e536f45fc475f29b43eb695e3d
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Thu Dec 12 18:01:20 2019 +0300

    * update es, ru, sr-cs

commit 2b6b510b998b7e7b2f4c3fa5d7af57dc5413a611
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Thu Dec 12 17:43:05 2019 +0300

    * update 'no'

commit 1de6215aa90374ee147bbd0a685643232e98e4c8
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Thu Dec 12 17:41:37 2019 +0300

    * use dnsproxy v0.23.2

commit c545a1bf7e4e706b45b4670b804a50bf8d75bae3
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Thu Dec 12 17:36:37 2019 +0300

    update ru

commit c22eec9bcfad67284e21cfc4e6b06fb63a64d25d
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Thu Dec 12 17:22:03 2019 +0300

    * update translations;  add sr-cs, fa, hr
2019-12-12 18:42:51 +03:00
Simon Zolin
9cc09274f1 Merge: - DNS: fix deadlock
Close #1251

* commit 'ef57f7e192fdd4fbbfe25dc1c1e61d52e9f0b6ee':
  - DNS: fix race in WriteDiskConfig()
  - DNS: fix deadlock in Server.ServeHTTP()
2019-12-12 15:08:19 +03:00
Simon Zolin
ef57f7e192 - DNS: fix race in WriteDiskConfig() 2019-12-12 15:04:29 +03:00
Simon Zolin
000e842f7b - DNS: fix deadlock in Server.ServeHTTP()
s.RLock() is called again in filterResponse() while another thread
 holds s.Lock()
2019-12-12 15:00:10 +03:00
Ildar Kamalov
e85fdd7f09 Merge: - client: fix request count in clients table
* commit '8c8deb3d3db72a2f091156d3ec10447f0e6c062c':
  - client: fix request count in clients table
2019-12-12 13:46:44 +03:00
Ildar Kamalov
8c8deb3d3d - client: fix request count in clients table 2019-12-12 11:33:02 +03:00
Simon Zolin
c9ccc53282 Merge: * set BlockingMode: "null_ip" by default; minor improvements
Squashed commit of the following:

commit 653544b98dc4d1b9a74e1509d0e6104b71bcdcb3
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Wed Dec 11 17:34:41 2019 +0300

    * DNS reconfigure: protect against delayed socket fd close

commit 9e650f37dee7f771bf1d9d714c35f0a81788aa16
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Wed Dec 11 15:28:33 2019 +0300

    - fix race on startup

commit 878fdb8fc4ebbc6fab683a65f5e4298e64c2073e
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Wed Dec 11 15:11:21 2019 +0300

    * travis: don't run tests

commit 1c4ab60684ee22d55e6d2a3350c0f24d9844255c
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Wed Dec 11 14:56:28 2019 +0300

    * travis: 'release.sh' and then run tests

commit e1f644b8d9a1f3b46990cdfb1b75fd81b3a49d33
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Wed Dec 11 14:52:59 2019 +0300

    * set BlockingMode: "null_ip" by default
2019-12-11 17:54:34 +03:00
Andrey Meshkov
daf17f16f2 -(home): fix whois info on the dashboard 2019-12-11 14:31:38 +03:00
Simon Zolin
0a66913b4d Merge: * use upstream servers directly for the internal DNS resolver
Close #1212

* Server.Start(config *ServerConfig) -> Start()
+ Server.Prepare(config *ServerConfig)
+ Server.Resolve(host string)
+ Server.Exchange()
* rDNS: use internal DNS resolver
- clients: fix race in WriteDiskConfig()
- fix race: move 'clients' object from 'configuration' to 'HomeContext'
    Go race detector didn't like our 'clients' object in 'configuration'.
+ add AGH startup test
    . Create a configuration file
    . Start AGH instance
    . Check Web server
    . Check DNS server
    . Wait until the filters are downloaded
    . Stop and cleanup
* move module objects from config.* to Context.*
* don't call log.SetLevel() if not necessary
    This helps to avoid Go race detector's warning
* ci.sh: 'make' and then run tests

Squashed commit of the following:

commit 86500c7f749307f37af4cc8c2a1066f679d0cfad
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Tue Dec 10 18:08:53 2019 +0300

    minor

commit 6e6abb9dca3cd250c458bec23aa30d2250a9eb40
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Tue Dec 10 18:08:31 2019 +0300

    * ci.sh: 'make' and then run tests

commit 114192eefea6800e565ba9ab238202c006516c27
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Tue Dec 10 17:50:04 2019 +0300

    fix

commit d426deea7f02cdfd4c7217a38c59e51251956a0f
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Tue Dec 10 17:46:33 2019 +0300

    tests

commit 7b350edf03027895b4e43dee908d0155a9b0ac9b
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Tue Dec 10 15:56:12 2019 +0300

    fix test

commit 2f5f116873bbbfdd4bb7f82a596f9e1f5c2bcfd8
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Tue Dec 10 15:48:56 2019 +0300

    fix tests

commit 3fbdc77f9c34726e2295185279444983652d559e
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Tue Dec 10 15:45:00 2019 +0300

    linter

commit 9da0b6965a2b6863bcd552fa83a4de2866600bb8
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Tue Dec 10 15:33:23 2019 +0300

    * config.dnsctx.whois -> Context.whois

commit c71ebdbdf6efd88c877b2f243c69d3bc00a997d7
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Tue Dec 10 15:31:08 2019 +0300

    * don't call log.SetLevel() if not necessary

    This helps to avoid Go race detector's warning

commit 0f250220133cefdcb0843a50000cb932802b8324
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Tue Dec 10 15:28:19 2019 +0300

    * rdns: refactor

commit c460d8c9414940dac852e390b6c1b4d4fb38dff9
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Tue Dec 10 14:08:08 2019 +0300

    Revert: * stats: serialize access to 'limit'

    Use 'conf *Config' and update it atomically, as in querylog module.
    (Note: Race detector still doesn't like it)

commit 488bcb884971276de0d5629384b29e22c59ee7e6
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Tue Dec 10 13:50:23 2019 +0300

    * config.dnsFilter -> Context.dnsFilter

commit 86c0a6827a450414b50acec7ebfc5220d13b81e4
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Tue Dec 10 13:45:05 2019 +0300

    * config.dnsServer -> Context.dnsServer

commit ee35ef095ccaabc89e3de0ef52c9b5ed56b36873
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Tue Dec 10 13:42:10 2019 +0300

    * config.dhcpServer -> Context.dhcpServer

commit 1537001cd211099d5fad01696c0b806ae5d257b1
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Tue Dec 10 13:39:45 2019 +0300

    * config.queryLog -> Context.queryLog

commit e5955fe4ff1ef6f41763461b37b502ea25a3d04c
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Tue Dec 10 13:03:18 2019 +0300

    * config.httpsServer -> Context.httpsServer

commit 6153c10a9ac173e159d1f05e0db1512579b9203c
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Mon Dec 9 20:12:24 2019 +0300

    * config.httpServer -> Context.httpServer

commit abd021fb94039015cd45c97614e8b78d4694f956
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Mon Dec 9 20:08:05 2019 +0300

    * stats: serialize access to 'limit'

commit 38c2decfd87c712100edcabe62a6d4518719cb53
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Mon Dec 9 19:57:04 2019 +0300

    * config.stats -> Context.stats

commit 6caf8965ad44db9dce9a7a5103aa8fa305ad9a06
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Mon Dec 9 19:45:23 2019 +0300

    fix Restart()

... and 6 more commits
2019-12-11 12:38:58 +03:00
Artem Baskal
fe357d04f7 Merge: - client: add message when dns server is starting up
Close #1186

* commit '1e429df3bcb8ea2fd3a457c026cb8c8a7131e504':
  - client: add message when dns server is starting up
2019-12-10 18:30:51 +03:00
Artem Baskal
1e429df3bc - client: add message when dns server is starting up 2019-12-10 17:48:42 +03:00
Simon Zolin
2b14a043a9 Merge: + DNS: new settings (ratelimit, blocking mode, edns_client_subnet)
Close #1091 Close #1154 Close #1022

* commit '97e77cab643d6784067ce97c0f03ec3e4612c2c9':
  + client: handle EDNS Client Subnet setting
  + dns: add "edns_client_subnet" setting
  + client: handle DNS config
  * DNS: remove /enable_protection and /disable_protection
  + openapi: /dns_info, /dns_config
  * /control/set_upstreams_config: allow empty upstream list
  + dns: support blocking_mode=custom_ip
  + DNS: Get/Set DNS general settings
2019-12-10 16:10:31 +03:00
Ildar Kamalov
97e77cab64 + client: handle EDNS Client Subnet setting 2019-12-10 16:01:18 +03:00
Simon Zolin
19a94bf789 + dns: add "edns_client_subnet" setting 2019-12-10 16:01:17 +03:00
Artem Baskal
197d07f32b + client: handle DNS config 2019-12-10 16:01:17 +03:00
Simon Zolin
87bb773d3e * DNS: remove /enable_protection and /disable_protection 2019-12-10 16:01:17 +03:00
Simon Zolin
3b13c031a3 + openapi: /dns_info, /dns_config 2019-12-10 16:01:17 +03:00
Simon Zolin
1b3122dd35 * /control/set_upstreams_config: allow empty upstream list 2019-12-10 16:01:17 +03:00
Simon Zolin
4f4da3397c + dns: support blocking_mode=custom_ip 2019-12-10 16:01:16 +03:00
Simon Zolin
26ccee47b5 + DNS: Get/Set DNS general settings
GET /control/dns_info
POST /control/dns_config
2019-12-10 16:01:16 +03:00
Ildar Kamalov
92141e03c4 Merge: - client: fix request count in clients table
* commit '289c6f8c731f616c73eac2739b572c13eb245680':
  - client: fix request count in clients table
2019-12-10 15:55:38 +03:00
Ildar Kamalov
289c6f8c73 - client: fix request count in clients table 2019-12-10 15:22:40 +03:00
Simon Zolin
40763c903b Merge: * stats: handle "invalid argument" error from "bbolt"
Close #1188

Squashed commit of the following:

commit 70355154bb49ae7df57e79ed1405754682f5d57f
Merge: 331650e6 d1c47c0d
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Mon Dec 9 14:09:59 2019 +0300

    Merge remote-tracking branch 'origin/master' into 1188-bolt-err

commit 331650e60d5869b7c706b539f04c1a856cd9f254
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Mon Dec 9 13:57:14 2019 +0300

    minor

commit 07130a0f1f2e88cab30a88d899e8d817096ac35f
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Wed Dec 4 13:50:29 2019 +0300

    * stats: handle "invalid argument" error from "bbolt"
2019-12-09 14:13:39 +03:00
Artem Baskal
d1c47c0dbb Merge: + client: add norwegian language
Closes #1174

* commit '4f0975bab5db189a192aeb07c7e8f6cebc101f34':
  + client: add norwegian language
2019-12-05 16:36:51 +03:00
Artem Baskal
4f0975bab5 + client: add norwegian language 2019-12-05 14:56:52 +03:00
Simon Zolin
9fd27b9add Merge: + Clients: use per-client DNS servers
Close #821

* commit '6684a120ac9909140e4ecbe674e09c8f24e87ac4':
  + client: handle upstream DNS servers for clients
  * openapi: add "upstreams" to Client struct
  + use per-client DNS servers
2019-12-05 13:22:50 +03:00
Ildar Kamalov
6684a120ac + client: handle upstream DNS servers for clients 2019-12-05 13:19:27 +03:00
Simon Zolin
72ec4d7d7e * openapi: add "upstreams" to Client struct 2019-12-05 13:16:41 +03:00
Simon Zolin
7313c3bc53 + use per-client DNS servers 2019-12-05 13:16:41 +03:00
Simon Zolin
b6b26c0681 Merge: - rDNS: support multiple Answer records
Close #1230

* commit '56a0c9684bfdb8bebbeea5eb94192a215d8d45a1':
  - rDNS: support multiple Answer records
2019-12-05 13:14:57 +03:00
Simon Zolin
56a0c9684b - rDNS: support multiple Answer records 2019-12-05 13:06:52 +03:00
Andrey Meshkov
47cc025504 Merge: fix #1211 * use dnsproxy v0.21.0 and urlfilter v0.7.0
* commit '8dbdf49c32d66288dece97b84a6b70b05e5ff43e':
  * use dnsproxy v0.22.0 and urlfilter v0.7.0
2019-12-04 20:44:40 +03:00
Simon Zolin
89cc1715d9 Merge: - DHCP: normalize leases on startup (prioritize static leases over dynamic)
Close #1005

* commit '906f26d7d276c181960048a2c059d5b141e71f0a':
  - DHCP: normalize leases on startup (prioritize static leases over dynamic)
2019-12-04 19:43:04 +03:00
Simon Zolin
8dbdf49c32 * use dnsproxy v0.22.0 and urlfilter v0.7.0 2019-12-03 20:55:45 +03:00
Simon Zolin
906f26d7d2 - DHCP: normalize leases on startup (prioritize static leases over dynamic) 2019-12-03 20:43:22 +03:00
Simon Zolin
07a9c3bd45 Merge: + dnsforward: match CNAME with filtering rules
Close #1185

* commit '8cb4d128f5392646eb60229717b09f8398897075':
  * openapi: get /querylog: add "original_answer", "service_name"
  * doc: filtering logic with a diagram
  + client: handle blocked by response in query log
  + dnsforward: match CNAME with filtering rules
2019-12-03 17:09:30 +03:00
Simon Zolin
8cb4d128f5 * openapi: get /querylog: add "original_answer", "service_name" 2019-12-03 17:01:26 +03:00
Simon Zolin
7c0b2d8ede * doc: filtering logic with a diagram 2019-12-03 17:01:26 +03:00
Ildar Kamalov
e8885dbf3e + client: handle blocked by response in query log 2019-12-03 17:01:26 +03:00
Simon Zolin
e7727e9f63 + dnsforward: match CNAME with filtering rules
+ GET /control/querylog: add "cname_match" field

* querylog: Add() now receives an object with parameters
2019-12-03 17:01:26 +03:00
Ildar Kamalov
4d7984cb8b Merge: Update blocked_services.go Snapchat Rules
Closes #1222

* commit '9c2e5c3f51fa7fdc5f5e6d89a73c1456a8df49d0':
  Update blocked_services.go Snapchat Rules
2019-12-03 13:35:09 +03:00
Simon Zolin
acd8da6f0a Merge: * DNS: use Quad9 as default server
Close #1116

* commit '82d0c3047b857651d351a7acd3f2e8bb262dfb4d':
  + client: change DNS settings text and examples to Quad9
  * DNS: use Quad9 as default server
2019-12-02 15:57:46 +03:00
Simon Zolin
48c70aefaa Merge: + QueryLog: new setting "dns.querylog_memsize"
Close #958

* commit '7e45c2fc2428679ac7454c5244b0130901449324':
  + new setting "dns.querylog_memsize"
2019-12-02 15:57:17 +03:00
Simon Zolin
7e45c2fc24 + new setting "dns.querylog_memsize"
* set 1000 entries by default (not 5000)
2019-12-02 15:46:03 +03:00
Ildar Kamalov
82d0c3047b + client: change DNS settings text and examples to Quad9 2019-12-02 15:40:54 +03:00
Simon Zolin
d6d0d53761 * DNS: use Quad9 as default server 2019-12-02 15:40:54 +03:00
Simon Zolin
31ffae7717 Merge: * dnsforward: major refactoring
* commit 'f579c23bc932e893ffa960abe769750fe657beff':
  * minor fixes
  * dnsforward: refactor code for default DNS servers logic
  * update tests
  * dnsforward: move access settings and web handlers
  + dnsforward: refactor
2019-12-02 15:38:04 +03:00
Simon Zolin
f579c23bc9 * minor fixes 2019-12-02 15:25:11 +03:00
Simon Zolin
9b8cccdfcf * dnsforward: refactor code for default DNS servers logic 2019-12-02 14:58:17 +03:00
Simon Zolin
8bf75b54a4 * update tests 2019-12-02 14:58:17 +03:00
Simon Zolin
19a1c03d3b * dnsforward: move access settings and web handlers 2019-12-02 14:58:17 +03:00
Simon Zolin
7bb32eae3d + dnsforward: refactor
+ dnsforward: own HTTP handlers
* dnsforward: no DNS reload on ProtectionEnabled setting change
* dnsforward: move QueryLog* settings out
* dnsforward: move dnsfilter settings out
* clients,i18n: no DNS reload on settings change
2019-12-02 14:58:17 +03:00
Simon Zolin
73d17ffa81 Merge: + DHCP: Reset DHCP configuration; Refactor
Close #1024

* commit 'a6926169815e03d00f9cfac0417da6f797d539ae':
  - clients: fix tests
  * clients: refactor
  + openapi: /dhcp/reset
  + client: handle DHCP reset
  + POST /control/dhcp/reset: Reset DHCP configuration
  * dhcp: move HTTP handlers to dhcpd/
  * dhcp,clients: DHCP server module is passed to Clients module during initialization.
2019-12-02 12:56:30 +03:00
Cybo1927
9c2e5c3f51 Update blocked_services.go Snapchat Rules
Snapchat still works on Android if that's not blocked
2019-11-29 16:55:27 +00:00
Simon Zolin
a692616981 - clients: fix tests 2019-11-29 17:35:26 +03:00
Simon Zolin
e9cb8666ce * clients: refactor 2019-11-29 17:11:07 +03:00
Simon Zolin
90ce70225f + openapi: /dhcp/reset 2019-11-29 17:11:07 +03:00
Ildar Kamalov
a4dedacf43 + client: handle DHCP reset 2019-11-29 17:11:07 +03:00
Simon Zolin
df92941ae0 + POST /control/dhcp/reset: Reset DHCP configuration 2019-11-29 17:11:07 +03:00
Simon Zolin
477a4bbf54 * dhcp: move HTTP handlers to dhcpd/ 2019-11-29 17:11:07 +03:00
Simon Zolin
149fcc0f2d * dhcp,clients: DHCP server module is passed to Clients module during initialization. 2019-11-29 17:11:07 +03:00
Simon Zolin
127a68a39f Merge: + Clients: multiple IP, CIDR, MAC
Close #809

* commit 'f8202a74bd55b97cdd95c33d8f8ed97412ba43b1':
  + client: handle clients find
  + client: add multiple fields client form
  * minor
  * openapi: update 'Client' object; add /clients/find
  * config: upgrade scheme to v6
  * clients: multiple IP, CIDR, MAC addresses
2019-11-29 17:05:00 +03:00
Ildar Kamalov
f8202a74bd + client: handle clients find 2019-11-29 16:59:20 +03:00
Ildar Kamalov
a6d6e9ec9e + client: add multiple fields client form 2019-11-29 16:53:21 +03:00
Simon Zolin
fd26af2677 * minor 2019-11-29 16:53:21 +03:00
Simon Zolin
1fc70cbc08 * openapi: update 'Client' object; add /clients/find 2019-11-29 16:53:21 +03:00
Simon Zolin
317a9cc49e * config: upgrade scheme to v6 2019-11-29 16:53:05 +03:00
Simon Zolin
71ce0c6da9 * clients: multiple IP, CIDR, MAC addresses
+ /clients/find
* clients: move code for config read/write
* clients: move HTTP handlers
2019-11-29 16:52:32 +03:00
Artem Baskal
db703283ba Merge pull request #431 in DNS/adguard-home from fix-1075 to master
* commit '49e800727b2e866fa1f9d429bd1c0c17ce8466b3':
  - client: allow add ip-v6 to exceptions
2019-11-27 18:50:00 +03:00
Artem Baskal
49e800727b - client: allow add ip-v6 to exceptions 2019-11-27 18:45:30 +03:00
Artem Baskal
d26fed1901 Merge: - client: fix table size and add pagination
Close #1197

* commit 'f446186db146b74cc6af3d29cf53ff69adc26e4f':
  - client: fix table pagination
  - client: fix table size and add pagination
2019-11-27 13:06:11 +03:00
Artem Baskal
f446186db1 - client: fix table pagination 2019-11-26 20:50:02 +03:00
Artem Baskal
4751528d69 - client: fix table size and add pagination 2019-11-26 19:24:22 +03:00
Simon Zolin
48c0b487e3 Merge: * auth: rename "session" cookie to "agh_session"
Close #1196

* commit 'b3614ba62fcde8ff3e3b6e708095f84a230aa2f2':
  * auth: rename "session" cookie to "agh_session"
2019-11-26 19:21:34 +03:00
Ildar Kamalov
7a665ff8f0 Merge: - client: fix placeholder for table pages
Closes #1166

* commit '38c7e732a6af190f92d824a6af53aea60aab5146':
  - client: fix placeholder for table pages
2019-11-26 15:30:00 +03:00
Ildar Kamalov
38c7e732a6 - client: fix placeholder for table pages 2019-11-26 15:16:52 +03:00
Ildar Kamalov
bdffd8534c Merge: Update blocked_services.goTikTok Rules
Closes #1192

* commit 'f19d8c24c3e3a8d2934affc5690cc72c044a0a3f':
  Update blocked_services.goTikTok Rules
2019-11-26 13:48:58 +03:00
Ildar Kamalov
757e41ce53 Merge: Update blocked_services.go Facebook, Messenger, and Instagram Rules
Closes #1190

* commit 'e0be4e8801307bebce9e19057a1a8e6fb1a658c7':
  Update blocked_services.go Facebook, Messenger, and Instagram Rules
2019-11-26 13:48:31 +03:00
Cybo1927
f19d8c24c3 Update blocked_services.goTikTok Rules 2019-11-26 12:01:09 +03:00
Cybo1927
e0be4e8801 Update blocked_services.go Facebook, Messenger, and Instagram Rules 2019-11-26 11:17:22 +03:00
Ildar Kamalov
713613e3b8 Merge: Update blocked_services.go Snapchat Rules
Closes #1189

* commit 'a78156a7cb259f3cb0a78b7466e09ee4b99f2356':
  Update blocked_services.go Snapchat Rules
2019-11-26 11:12:19 +03:00
Ildar Kamalov
af3096e23b Merge: blocked services: add new domain for youtube
Closes #1149

* commit '9675b3776ee50d8df4ce8a875f9b70b22bb8f8ee':
  blocked services: add new domain for youtube
2019-11-26 11:10:19 +03:00
Simon Zolin
b3614ba62f * auth: rename "session" cookie to "agh_session"
for compatibility with other HTTP services on the same host
2019-11-25 15:48:14 +03:00
Simon Zolin
a0fe1e84c0 Merge: * use Go v1.13
Close #1041

* commit 'dc2c68b1e4ff625deb44850a84282cdce56d1cd5':
  * use Go v1.13
2019-11-25 15:29:03 +03:00
Simon Zolin
2e5264652e Merge: - querylog: remove time counter (fix zero div exception)
Close #1194

* commit 'a31116635e605d199887e83a98d27f0fe01291c1':
  * querylog: delete code for time counter
  - querylog: remove time counter (fix zero div exception)
2019-11-25 15:25:55 +03:00
Simon Zolin
a31116635e * querylog: delete code for time counter 2019-11-25 15:20:56 +03:00
Simon Zolin
dc2c68b1e4 * use Go v1.13 2019-11-25 14:10:28 +03:00
Simon Zolin
305df63054 - querylog: remove time counter (fix zero div exception) 2019-11-25 13:40:27 +03:00
Cybo1927
a78156a7cb Update blocked_services.go Snapchat Rules 2019-11-22 14:54:14 +03:00
ArchiveBase
9675b3776e blocked services: add new domain for youtube 2019-11-22 14:50:38 +03:00
Andrey Meshkov
0a09c7eb4d *(global): travis-ci.org -> travis-ci.com 2019-11-21 19:11:02 +03:00
Simon Zolin
6fdffc1203 Merge: Add cloudflare to blocked services
Close #1155

* commit '36636867e18baf54c54a1a36f9d501a0f8bbeea4':
  + blocked_services: add cloudflare
  + client: add cloudflare icon
2019-11-21 11:48:07 +03:00
ArchiveBase
36636867e1 + blocked_services: add cloudflare 2019-11-21 11:40:03 +03:00
ArchiveBase
c93cdd106e + client: add cloudflare icon 2019-11-21 11:36:58 +03:00
Andrey Meshkov
ee41c18d53 Merge: #1092 * /control/querylog_config: support optional parameters
* commit '7c81efcbcba9f5c072ed03d37490cf5e7dd33f89':
  * go.mod: use bbolt from github
  * /control/querylog_config: support optional parameters
2019-11-20 20:28:28 +03:00
Simon Zolin
7c81efcbcb * go.mod: use bbolt from github 2019-11-20 20:14:28 +03:00
Simon Zolin
81e8bbe63c * /control/querylog_config: support optional parameters 2019-11-20 20:12:46 +03:00
Simon Zolin
0b7ac93076 Merge: * blocked_services: update hosts for whatsapp, facebook, youtube, tiktok
Close #1141

* commit '15f6334748ccae9075124a15d0a79987effde990':
  * blocked_services: update hosts for whatsapp, facebook, youtube, tiktok
2019-11-20 20:03:48 +03:00
Cybo1927
15f6334748 * blocked_services: update hosts for whatsapp, facebook, youtube, tiktok 2019-11-20 19:57:38 +03:00
Ildar Kamalov
044a457579 Merge pull request #412 in DNS/adguard-home from add-origin-to-blocked-services to master
* commit '79ea15dce11e96720259cf78db74752fb0cd39d0':
  + client: add origin icon
  + blocked_services: add origin
2019-11-20 18:59:14 +03:00
ArchiveBase
79ea15dce1 + client: add origin icon 2019-11-20 18:55:34 +03:00
ArchiveBase
ca6048f667 + blocked_services: add origin 2019-11-20 18:54:45 +03:00
Ildar Kamalov
fa45f8a256 Merge: Add amazon to blocked services
* commit 'b1c7497d0552b4abd796e82a166d55faa90a030f':
  + client: add ebay icon
  + blocked_services: add ebay
  + client: add amazon icon
  + blocked_services: add amazon
2019-11-20 18:54:13 +03:00
Ildar Kamalov
e7cf8f222d Merge: Add reddit to blocked services
* commit '7c10cefdf9a3d421de2d7e88cfd4e647baf31e8b':
  + client: add reddit icon
  + blocked_services: add reddit
2019-11-20 18:53:35 +03:00
Simon Zolin
2b0ababdc9 Merge: + safesearch: add Pixabay
Close #1159

* commit 'fab63f167ad44f95749f0a779f8805bb39c7d90a':
  + safesearch: add Pixabay
2019-11-20 15:16:28 +03:00
Simon Zolin
d4a3a01f30 Merge: + dnsfilter: use AG DNS server for SB/PC services
Close #525

* commit '7f69848084a68cdf1e227a555454991295fc5866':
  + dnsfilter: use AG DNS server for SB/PC services
2019-11-20 15:09:51 +03:00
Simon Zolin
1b7ef0e4f4 Merge: + Auth: add "web_session_ttl" setting; improve logging
Close #1006

* commit 'b03b36e47e1f230567fce0936ee1285b6861350a':
  * auth: improve logging
  + config: "web_session_ttl" setting
2019-11-20 14:58:20 +03:00
Simon Zolin
b03b36e47e * auth: improve logging
Write info log messages for login attempts (both successful and not)
2019-11-20 13:15:12 +03:00
Simon Zolin
c9a6e4e018 + config: "web_session_ttl" setting 2019-11-20 13:15:08 +03:00
ArchiveBase
b1c7497d05 + client: add ebay icon 2019-11-20 10:28:57 +03:00
ArchiveBase
c49f62cfe6 + blocked_services: add ebay 2019-11-20 10:28:57 +03:00
ArchiveBase
d468daac76 + client: add amazon icon 2019-11-20 10:28:57 +03:00
ArchiveBase
4a59d5a116 + blocked_services: add amazon 2019-11-20 10:28:56 +03:00
ArchiveBase
7c10cefdf9 + client: add reddit icon 2019-11-20 10:24:42 +03:00
ArchiveBase
dbf7a083cb + blocked_services: add reddit 2019-11-20 10:24:41 +03:00
Simon Zolin
0d4dce5c79 Merge: + querylog: preserve searching compatibility with the previous version
* commit 'a7742a366511e272a8c24dc5fcd1a62759c2bacb':
  - querylog: fix linter issue
  + querylog: preserve searching compatibility with the previous version
2019-11-19 17:21:12 +03:00
Simon Zolin
a7742a3665 - querylog: fix linter issue 2019-11-19 17:13:12 +03:00
Simon Zolin
12f4ebc6a5 + querylog: preserve searching compatibility with the previous version 2019-11-19 17:09:54 +03:00
Simon Zolin
6ae0a0eb0b Merge: * openapi: version: '0.99.3'
* commit 'c7e4ecd85cd9f3991bb5f3a001c9b3ae18637527':
  * openapi: version: '0.99.3'
2019-11-19 15:37:11 +03:00
Simon Zolin
c7e4ecd85c * openapi: version: '0.99.3' 2019-11-19 15:26:46 +03:00
Simon Zolin
2ac6e48535 Merge: Querylog: speed up, change format, robust search
Close #1099 Close #1094

* commit '62c8664fd75439b7597d935992c380f9c0675660':
  + client: load additional search results
  + client: separate filters from the table component
  + client: hide page size option and page info
  + client: use oldest param
  * openapi: update 'QueryLog'
  * querylog: add more tests
  * QueryLog.Add() now receives net.IP, not net.Addr
  * querylog: major refactor: change on-disk format and API
2019-11-19 15:21:42 +03:00
Ildar Kamalov
62c8664fd7 + client: load additional search results 2019-11-19 15:14:26 +03:00
Ildar Kamalov
e243e69a6e + client: separate filters from the table component 2019-11-19 15:12:34 +03:00
Ildar Kamalov
6b64d393bd + client: hide page size option and page info 2019-11-19 15:12:34 +03:00
Ildar Kamalov
941b6c5976 + client: use oldest param 2019-11-19 15:12:34 +03:00
Simon Zolin
33093de6aa * openapi: update 'QueryLog' 2019-11-19 15:12:34 +03:00
Simon Zolin
68cd7976b7 * querylog: add more tests 2019-11-19 15:09:53 +03:00
Simon Zolin
0cd6781a9a * QueryLog.Add() now receives net.IP, not net.Addr 2019-11-19 15:09:53 +03:00
Simon Zolin
2f5d6593f2 * querylog: major refactor: change on-disk format and API
speed up decoding
speed up search
compatible with previous format (when not searching)
2019-11-19 15:08:51 +03:00
Simon Zolin
a65f983aac Merge: * querylog: don't return entries without Question data
Close #1143

* commit '0d4e95b36d02e8aadfe6cbdd87d357efba6f02e8':
  * querylog: don't return entries without Question data
2019-11-12 18:31:07 +03:00
Simon Zolin
0d4e95b36d * querylog: don't return entries without Question data 2019-11-12 18:14:33 +03:00
Ildar Kamalov
359cab5290 Merge pull request #384 in DNS/adguard-home from 1123-disable-encryption-sources to master
* commit '4ae4cd07232b1e1861b435d2426ebe951061465b':
  Bind encryption source disabled state to form
2019-11-12 14:30:41 +03:00
Simon Zolin
ec5c5e8109 - Stats: fix crash
Close #1170

* commit 'f64868472aae50ed8203ef4d3ec9de7a7cf96fd9':
  - stats: fix read-write race
  * minor
2019-11-11 18:04:01 +03:00
Simon Zolin
f64868472a - stats: fix read-write race
* periodicFlush() operation doesn't result in an inconsistent state at any time
* stats readers use the last unit ID properly, excluding the possibility
 when unit ID could be changed, but this unit isn't yet created
2019-11-11 16:18:20 +03:00
Simon Zolin
2a6e9f3c11 * minor 2019-11-11 16:13:03 +03:00
Simon Zolin
fab63f167a + safesearch: add Pixabay 2019-11-08 13:07:25 +03:00
Simon Zolin
7f69848084 + dnsfilter: use AG DNS server for SB/PC services
* move SS/SB/PC services to security.go
* remove old useless code (HTTP client)
2019-11-08 10:38:12 +03:00
Simon Zolin
2f1e631c66 Merge: - dns rewrites: CNAME record didn't work
Close #1156

* commit '090f5498331844ad6d5a8dc975c1d0511b47565a':
  - dns rewrites: CNAME record didn't work
2019-11-07 16:33:07 +03:00
Simon Zolin
6b76a2c9f7 Merge: * blocked-services: youtube: add "youtubei.googleapis.com"
Close #1122

* commit '59720467da42c8520e5d25b2c3368728a61d6bf6':
  * blocked-services: youtube: add "youtubei.googleapis.com"
2019-11-07 15:30:23 +03:00
Simon Zolin
090f549833 - dns rewrites: CNAME record didn't work 2019-11-07 15:27:39 +03:00
Simon Zolin
59720467da * blocked-services: youtube: add "youtubei.googleapis.com" 2019-11-07 15:16:47 +03:00
Simon Zolin
4d32d42ba2 Merge: * whois,rdns: use 1 hour cache TTL
Close #1157

* commit 'abd251c5c167fd33c047af8af39e8b8e2d61fd85':
  * whois,rdns: use 1 hour cache TTL
2019-11-07 14:06:06 +03:00
Simon Zolin
abd251c5c1 * whois,rdns: use 1 hour cache TTL 2019-11-07 14:02:34 +03:00
Jaime Martínez Rincón
4ae4cd0723 Bind encryption source disabled state to form 2019-10-25 22:46:08 +02:00
Simon Zolin
e04ffde105 Merge: - auth: fix crash on showing Dashboard in UI if authentication is disabled
Close #1119

* commit 'ab24ab2f1aa5a93c35e68b46abbb3f03decbaeb0':
  - auth: fix crash on showing Dashboard in UI if authentication is disabled
2019-10-25 13:28:50 +03:00
Simon Zolin
ab24ab2f1a - auth: fix crash on showing Dashboard in UI if authentication is disabled 2019-10-25 11:01:29 +03:00
Simon Zolin
8323c0c4b6 Merge: * querylog: skip decoding errors
Close #753

* commit 'c74ae0d0e7ca03a592663025dc644397c1e31d57':
  * querylog: skip decoding errors
2019-10-24 16:00:07 +03:00
Simon Zolin
b28582d630 Merge: - querylog: writing to a file could stop randomly
Close #1115

* commit 'c04705364663e7141d39764fce8fd1dc1a4633ab':
  - querylog: writing to a file could stop randomly
2019-10-24 14:45:46 +03:00
Simon Zolin
c047053646 - querylog: writing to a file could stop randomly 2019-10-24 14:28:24 +03:00
Simon Zolin
41649418fc Merge: * dns: enable DNS message compression
Close #1109

* commit '3b443bc9c80c39483f28a042886f53feb4aeed96':
  * dns: enable DNS message compression
2019-10-23 20:06:18 +03:00
Simon Zolin
3b443bc9c8 * dns: enable DNS message compression 2019-10-23 20:02:42 +03:00
Simon Zolin
03c4793010 Merge: * don't show "sign out" button if authorization is disabled
Close #1093

* commit '49e535336be47cccee07f2e1b05f0d514aa91aa7':
  * changelog
  + client: get profile info
  * minor
  + GET /control/profile
2019-10-23 19:23:37 +03:00
Simon Zolin
9d29fdea4b Merge: * filters: don't fail on filter update when filter file doesn't exist
Close #1112

* commit '0737354f534385c3c2036e15d65554bcb7090fb4':
  * filters: don't fail on filter update when filter file doesn't exist
2019-10-23 19:19:50 +03:00
Simon Zolin
49e535336b * changelog 2019-10-23 19:19:04 +03:00
Ildar Kamalov
2a2647dc3f + client: get profile info 2019-10-23 18:43:39 +03:00
Simon Zolin
0ede2b13c9 * minor 2019-10-23 18:43:39 +03:00
Simon Zolin
c185f6826a + GET /control/profile
* openapi: get /profile

* auth: store user names along with sessions
2019-10-23 18:43:35 +03:00
Simon Zolin
e8bb0fdcb7 Merge: - /control/version.json: don't show error message if auto-update is disabled
Close #1083

* commit '5bcd1545a8044aff7f35179e7a324ec9b4ad1c2e':
  - /control/version.json: don't show error message if auto-update is disabled
2019-10-23 14:21:02 +03:00
Simon Zolin
0737354f53 * filters: don't fail on filter update when filter file doesn't exist 2019-10-23 14:19:43 +03:00
Simon Zolin
c74ae0d0e7 * querylog: skip decoding errors
We read line from file and pass it to a JSON decoder.
JSON decoder is now a local object.
2019-10-22 19:16:04 +03:00
Simon Zolin
15e6311c63 Merge: * dnsfilter: windows: store rules in memory
Close #1088

* commit '6ba1d857ac7961ed5a97a85a328398296c520273':
  * dnsfilter: windows: store rules in memory
  * minor
2019-10-22 16:25:02 +03:00
Simon Zolin
6ba1d857ac * dnsfilter: windows: store rules in memory
* dnsfilter: ignore cosmetic rules
2019-10-22 16:15:51 +03:00
Simon Zolin
67f31ccf43 * minor 2019-10-22 16:15:51 +03:00
Simon Zolin
a52c4b4362 Merge: * rdns,whois: get client info for all question types (not just A/AAAA)
Close #1103

* commit '235b198ef97d7a46ab6d76a4074ec589fc0148eb':
  * rdns,whois: recheck IP addresses after some time
  * rdns,whois: get client info for all question types (not just A/AAAA)
2019-10-22 14:37:22 +03:00
Simon Zolin
235b198ef9 * rdns,whois: recheck IP addresses after some time 2019-10-22 13:11:22 +03:00
Simon Zolin
ddfd53bf06 * rdns,whois: get client info for all question types (not just A/AAAA) 2019-10-22 13:10:40 +03:00
Simon Zolin
ffffd74a6e Merge: * TLS: don't print certificate data
Close #1107

* commit '76c9e61199a70ec1455a630ab896698b4435751c':
  * TLS: don't print certificate data
2019-10-22 12:26:36 +03:00
Ildar Kamalov
b870db249e Merge: - client: set i18n language only from available languages
Closes #1082

* commit '3269766ea7e2340a658cc13343f9d3cc6565b7dc':
  - client: use lowercase lang codes
  - client: set i18n language only from available languages
2019-10-22 12:24:41 +03:00
Simon Zolin
76c9e61199 * TLS: don't print certificate data 2019-10-22 12:09:32 +03:00
Simon Zolin
0579e9bf99 Merge: - windows: dns: fix reconfigure procedure
* commit 'b7b32e2f01649500ca8224ffd05b24cc793982a1':
  - windows: dns: fix reconfigure procedure
2019-10-22 12:05:39 +03:00
Simon Zolin
c70389eb30 Merge: * /control/stats: set Content-Type: application/json
Close #1086

* commit '8985faa95d5414393165097fde032c02ff560b32':
  * minor
  * /control/stats: set Content-Type: application/json
2019-10-22 11:50:00 +03:00
Simon Zolin
5bcd1545a8 - /control/version.json: don't show error message if auto-update is disabled 2019-10-21 18:21:05 +03:00
Simon Zolin
8985faa95d * minor 2019-10-21 17:50:46 +03:00
Simon Zolin
2dc31bee20 * /control/stats: set Content-Type: application/json 2019-10-21 17:50:44 +03:00
Ildar Kamalov
3269766ea7 - client: use lowercase lang codes 2019-10-21 16:03:17 +03:00
Simon Zolin
b7b32e2f01 - windows: dns: fix reconfigure procedure 2019-10-21 15:58:14 +03:00
Ildar Kamalov
bd1ee48a4f - client: set i18n language only from available languages 2019-10-21 13:09:52 +03:00
Ildar Kamalov
67a3d44b8c Merge: - client: set the default language first in the list
Closes #1080

* commit '31f2cefdf951353ebc299c8f38ddb400d8976fda':
  * client: update translations
  - client: set the default language first in the list
2019-10-18 15:18:48 +03:00
Ildar Kamalov
31f2cefdf9 * client: update translations 2019-10-18 15:09:58 +03:00
Ildar Kamalov
b2a7e7194a - client: set the default language first in the list 2019-10-18 14:15:24 +03:00
Simon Zolin
f72e681620 Merge: + API Change Log
* commit 'd2abe8e0ee653b0e9a5b0c37a908e5aa11658269':
  + API Change Log
2019-10-18 13:48:03 +03:00
Simon Zolin
d2abe8e0ee + API Change Log 2019-10-18 13:43:12 +03:00
Simon Zolin
e72ae3ac6f Merge: - filters: auto-update didn't work
Close #1077

* commit 'e2ff8628ada0b9c2aac5dd6c1d9a6bb70de25854':
  - filters: auto-update didn't work
2019-10-17 15:13:00 +03:00
Simon Zolin
e2ff8628ad - filters: auto-update didn't work 2019-10-17 14:33:38 +03:00
Simon Zolin
4f99378109 Merge: * golibs v0.2.4, dnsproxy v0.19.6
* commit '60cc34dc962ff8ee8963536a5996828ae7bbc8e3':
  * golibs v0.2.4, dnsproxy v0.19.6
2019-10-16 19:31:03 +03:00
Simon Zolin
60cc34dc96 * golibs v0.2.4, dnsproxy v0.19.6 2019-10-16 19:20:53 +03:00
Simon Zolin
c6b4e269ed Merge: * use debug log level for unimportant messages
* commit '5cc8513322a3e604ae31d2c15ca7902608dfbfb8':
  * use debug log level for unimportant messages
2019-10-16 12:48:08 +03:00
Simon Zolin
5cc8513322 * use debug log level for unimportant messages 2019-10-16 12:03:51 +03:00
Simon Zolin
fcaa945a88 Merge: * golibs v0.2.3
* commit '887c8a905f311bf74bdcc53753937c39fa7efa77':
  * golibs v0.2.3
2019-10-15 20:27:00 +03:00
Simon Zolin
887c8a905f * golibs v0.2.3
fix travis build
2019-10-15 19:54:08 +03:00
Ildar Kamalov
fbec6d2d1e Merge: + client: add link to the new article about hosts blocklists syntax
Closes #1066

* commit '9ea7bb0ae62c5da09414f926ed3cf1b4522fe85a':
  + client: add link to the new article about hosts blocklists syntax
2019-10-15 18:23:05 +03:00
Ildar Kamalov
9ea7bb0ae6 + client: add link to the new article about hosts blocklists syntax 2019-10-15 17:55:51 +03:00
Simon Zolin
dbe57969f1 Merge: * API: Revert meaningless incompatible changes
Close #1067

* commit '1583262df180006e70112c74373de3f39bfcb11b':
  - client: rename helper
  + client: use search params for querylog request
  * openapi: minor
  * API changes
2019-10-15 16:05:48 +03:00
Ildar Kamalov
1583262df1 - client: rename helper 2019-10-15 12:31:01 +03:00
Ildar Kamalov
7b29c56791 + client: use search params for querylog request 2019-10-15 12:28:49 +03:00
Andrey Meshkov
453645b002 *(dnsfilter): update urlfilter to v0.6.1 2019-10-14 21:24:08 +03:00
Simon Zolin
92b6adbdc1 * openapi: minor 2019-10-14 15:56:14 +03:00
Simon Zolin
e2c26ec554 * API changes
* filtering_info -> filtering/status
* filtering_config -> filtering/config
2019-10-14 15:55:58 +03:00
Simon Zolin
bfc6c98109 Merge: + auth: add more tests
#1060

* commit '91bb9ccae69afadc06206d413d57c1c3b136e7a7':
  + auth: add more tests
2019-10-11 17:03:50 +03:00
Simon Zolin
b9a06cbb04 Merge: - whois: couldn't set info on existing auto-clients
Close #1059

* commit 'c299753b6733fd7841ed2acfc8f383df99964da4':
  - whois: couldn't set info on existing auto-clients
2019-10-11 17:03:01 +03:00
Simon Zolin
91bb9ccae6 + auth: add more tests
* use directory "./agh-test"
2019-10-11 16:59:14 +03:00
Simon Zolin
c299753b67 - whois: couldn't set info on existing auto-clients 2019-10-11 16:58:10 +03:00
Ildar Kamalov
b9462e72a4 Merge: - client: fix font size of whois info
Closes #1059

* commit '271ff4fe8358eed5de3bbeb76ab9ec7a6a369b89':
  - client: fix popover in the dashboard tables
  - client: fix font size of whois info
2019-10-11 14:28:35 +03:00
Ildar Kamalov
271ff4fe83 - client: fix popover in the dashboard tables 2019-10-11 12:54:44 +03:00
Ildar Kamalov
d23fdaf18f - client: fix font size of whois info 2019-10-10 18:57:39 +03:00
Simon Zolin
6612ccf107 Merge: * "refresh filters" HTTP handler: return the old synchronous behaviour
Close #1058

* commit 'c9d7bc30698555677a1922d7dfb8e3882249cbba':
  * "refresh filters" HTTP handler: return the old synchronous behaviour
2019-10-10 17:19:35 +03:00
Simon Zolin
c9d7bc3069 * "refresh filters" HTTP handler: return the old synchronous behaviour
This was broken by "* dnsfilter: major refactoring"
2019-10-10 17:12:32 +03:00
Andrey Meshkov
3fbbda5102 *(global): upd trackers db 2019-10-10 16:01:20 +03:00
Simon Zolin
32e87b6efb Merge: * whois/rdns: process up to 100 top clients on startup
Close #1055 Close #1035

* commit '701233a4b786495be2f7f8e5e33ebf041481df01':
  - client: fix default page size for dashboard tables
  - whois/rdns: start processing top clients on startup after DNS server is started
  * whois/rdns: process up to 100 top clients on startup
2019-10-10 15:25:44 +03:00
Ildar Kamalov
701233a4b7 - client: fix default page size for dashboard tables 2019-10-10 14:00:02 +03:00
Simon Zolin
6a08a9faa6 - whois/rdns: start processing top clients on startup after DNS server is started 2019-10-10 14:00:02 +03:00
Simon Zolin
8676cabc42 * whois/rdns: process up to 100 top clients on startup 2019-10-10 13:55:44 +03:00
Simon Zolin
51f9d7e4df Merge: * dnsfilter: major refactoring
Close #928

* commit '31ec7f9652c6fb5947eca9e96f1507aad3e5ed13':
  * doc: new arch picture
  * dnsfilter: major refactoring
2019-10-10 12:33:18 +03:00
Simon Zolin
31ec7f9652 * doc: new arch picture 2019-10-09 20:05:21 +03:00
Simon Zolin
a59e346d4a * dnsfilter: major refactoring
* dnsfilter is controlled by package home, not dnsforward
* move HTTP handlers to dnsfilter/
* apply filtering settings without DNS server restart
* use only 1 goroutine for filters update
* apply new filters quickly (after they are ready to be used)
2019-10-09 20:05:21 +03:00
Simon Zolin
b43c076c4d Merge: * querylog: refactor: move HTTP handlers to querylog/
* commit '90db91b0fd347d168ef9589405ba812c0cfc0c2d':
  * querylog: refactor: move HTTP handlers to querylog/
2019-10-09 19:43:00 +03:00
Simon Zolin
90db91b0fd * querylog: refactor: move HTTP handlers to querylog/ 2019-10-09 19:38:58 +03:00
Simon Zolin
3862fa7659 Merge: - stats: fix crash
Close #1051

* commit '9ff39a362f83b94b685982efd62329bdd264eb21':
  - stats: fix crash
2019-10-09 19:37:03 +03:00
Simon Zolin
9ff39a362f - stats: fix crash 2019-10-09 19:27:19 +03:00
Simon Zolin
f4451dca7b Merge: * whois: improvements
Close #1035, Close #1036, Close #1047

* commit 'bd29b22f17d5b326d9fd603aa4f74593a0f1fca7':
  * CI: disable check if Git repo contains uncommited changes
  - whois: use the first "descr" field, not the last
  * filter: speed up parsing
  * whois: use whois.arin.net
  + whois, rdns: begin getting info for the most active clients on startup
  + stats: GetTopData()
  * stats: refactor
2019-10-09 19:26:42 +03:00
Simon Zolin
bd29b22f17 * CI: disable check if Git repo contains uncommited changes 2019-10-09 18:03:22 +03:00
Simon Zolin
e9186e6202 - whois: use the first "descr" field, not the last 2019-10-09 18:03:22 +03:00
Simon Zolin
3b9b37dde7 * filter: speed up parsing 2019-10-09 18:03:22 +03:00
Simon Zolin
37fe3c148f * whois: use whois.arin.net
+ robust redirect mechanism
* decrease timeout 30sec -> 5sec
* faster response parsing
* don't use likexian/whois-go package
2019-10-09 18:03:22 +03:00
Simon Zolin
d75620fdc0 + whois, rdns: begin getting info for the most active clients on startup 2019-10-09 18:03:22 +03:00
Simon Zolin
418baa608f + stats: GetTopData() 2019-10-09 18:03:22 +03:00
Simon Zolin
4165688f25 * stats: refactor 2019-10-09 18:02:09 +03:00
Simon Zolin
e7463b380d Merge: * systemd service file: fix boot priority: start AGH after network is online
Close #1048

* commit '127cca0c83d9afc95c6957c5745d36e770e0d19b':
  * systemd service file: fix boot priority: start AGH after network is online
2019-10-09 15:36:00 +03:00
Simon Zolin
127cca0c83 * systemd service file: fix boot priority: start AGH after network is online 2019-10-08 12:29:11 +03:00
Simon Zolin
652816ceb1 Merge: * querylog, stats: don't print unnecessary log messages
Close #1039

* commit 'c9b4a0742ffa13d831240b53b67559999b183cf7':
  * querylog, stats: don't print unnecessary log messages
2019-10-07 13:45:02 +03:00
Simon Zolin
c9b4a0742f * querylog, stats: don't print unnecessary log messages 2019-10-07 12:03:56 +03:00
Ildar Kamalov
8b7d23e7d0 Merge: Block epic games
* commit '55538f72eae3b62a7f7f8876c9b0e25d429110e1':
  block epic games
2019-10-04 18:17:06 +03:00
Devin Buhl
55538f72ea block epic games 2019-10-04 17:57:51 +03:00
Ildar Kamalov
586a28dc5e Merge: Add new languages and update translations
Closes #1043

* commit 'eb6dc76920c4da5a38de433ae437d6ac9dc272c2':
  + i18n: add new languages
  + client: add new languages and update translations
2019-10-04 10:05:18 +03:00
Ildar Kamalov
eb6dc76920 + i18n: add new languages 2019-10-03 20:52:14 +03:00
Ildar Kamalov
2d402f8cf7 + client: add new languages and update translations 2019-10-03 20:52:14 +03:00
Andrey Meshkov
423d311fcb Merge: *(global): CI scripts
Fix: #1042

* commit '8a05e61feb2a8b7c73c6f4c8f11c5a076c43170b':
  *: fix auth tests - don't leave repo dirty
  *: tests mustn't leave repo dirty
  *: change initDNSServer method, add getDataDir
  *: fix linter warnings
  *(global): fix travis config
  *(global): fix CI scripts
  *(global): CI scripts
2019-10-02 17:26:47 +03:00
Andrey Meshkov
8a05e61feb *: fix auth tests - don't leave repo dirty 2019-10-02 17:02:16 +03:00
Andrey Meshkov
ed0c5ee525 *: tests mustn't leave repo dirty 2019-10-02 16:59:34 +03:00
Andrey Meshkov
33ae359cc1 *: change initDNSServer method, add getDataDir 2019-10-02 16:53:23 +03:00
Andrey Meshkov
9b23acf6da *: fix linter warnings 2019-10-02 16:40:26 +03:00
Andrey Meshkov
e4fba69f9d *(global): fix travis config 2019-10-02 16:39:32 +03:00
Andrey Meshkov
846f503337 *(global): fix CI scripts 2019-10-02 16:23:17 +03:00
Andrey Meshkov
b835baf013 *(global): CI scripts 2019-10-02 15:41:14 +03:00
Andrey Meshkov
c020c1d0af *(dnsfilter): upd dependencies 2019-10-02 15:37:41 +03:00
Ildar Kamalov
cd9e4f176a Merge: Footer: Open adguard.com in new tab
* commit '60e21c77c32c43434c6496ff2d9bb99d7028837f':
  Footer: use rel="noopener noreferrer"
  Footer: Open adguard.com in new tab
2019-10-01 15:21:39 +03:00
Ildar Kamalov
9229b25a1b Merge: + client: submit retention form after confirm
Closes #1021

* commit 'ef1d4f5e9fdacff5e4ee01a84dce0ed8403c67b4':
  + client: submit retention form after confirm
2019-09-30 11:32:29 +03:00
Devin Buhl
60e21c77c3 Footer: use rel="noopener noreferrer" 2019-09-27 11:44:11 -04:00
Devin Buhl
1961955d15 Footer: Open adguard.com in new tab 2019-09-27 10:38:41 -04:00
Ildar Kamalov
75a8f9f850 Merge: - client: check if data loaded before the request with older_than
* commit '85d6994719a724e8dd0828bb90c459a422767d12':
  - client: check if data loaded before the request with older_than
2019-09-27 14:57:26 +03:00
Ildar Kamalov
85d6994719 - client: check if data loaded before the request with older_than 2019-09-27 14:32:52 +03:00
Ildar Kamalov
ef1d4f5e9f + client: submit retention form after confirm 2019-09-27 13:29:37 +03:00
Simon Zolin
6a65c79a03 Merge: - crash after filter update if its data is too small
* commit '319cc848bd9f62f926e20de10092271536eb5786':
  - crash after filter update if its data is too small
2019-09-27 13:25:41 +03:00
Simon Zolin
319cc848bd - crash after filter update if its data is too small 2019-09-27 13:22:08 +03:00
Simon Zolin
309feeae9a Merge: * dnsproxy v0.19.4
* commit 'ccd9cee9df1bc47a24f94d0ee1bb5177a626da0d':
  * dnsproxy v0.19.4
2019-09-26 18:53:06 +03:00
Simon Zolin
ccd9cee9df * dnsproxy v0.19.4 2019-09-26 18:48:44 +03:00
Simon Zolin
02d0c0a8f3 Merge: + QueryLog: server-side paging and filtering
Close #776

* commit 'f04c028e380182558d772ac6d65efe4f7bdb48d8':
  + client: handle filter change
  + client: server side pagination for the query logs
  * querylog: POST /control/querylog
  * openapi
2019-09-26 18:38:27 +03:00
Ildar Kamalov
f04c028e38 + client: handle filter change 2019-09-26 18:31:13 +03:00
Ildar Kamalov
9ac6049405 + client: server side pagination for the query logs 2019-09-26 18:30:38 +03:00
Simon Zolin
81828c87c1 * querylog: POST /control/querylog 2019-09-26 18:27:31 +03:00
Simon Zolin
215a488a64 * openapi 2019-09-26 18:24:23 +03:00
Simon Zolin
250f829b29 Merge: * stats: refactor: move HTTP handlers to stats/
* commit 'bbb5413331d43bbc182834ea8b3c2318280c7748':
  * stats: refactor: move HTTP handlers to stats/
2019-09-26 16:56:34 +03:00
Simon Zolin
bbb5413331 * stats: refactor: move HTTP handlers to stats/
DNS module passes additional parameters to Stats module.
This allows Stats to handle HTTP requests by itself - completely removing
 all stats-related code from outside.
2019-09-26 16:52:28 +03:00
Simon Zolin
407917241a Merge: * WHOIS: improvements
Close #861

* commit '563f8031dce889b076c91a4b3b6489241cd2b322':
  - client: fix naming
  - client: fix typo in translations
  + client: add icons to the whois info
  * clients: remove an auto-client if a client with the same IP was added manually
  + whois: use "descr" or "netname" in case there's no "orgname"
2019-09-26 16:46:07 +03:00
Ildar Kamalov
563f8031dc - client: fix naming 2019-09-26 12:17:58 +03:00
Ildar Kamalov
63efce0309 - client: fix typo in translations 2019-09-25 16:11:42 +03:00
Ildar Kamalov
ba62d42949 + client: add icons to the whois info 2019-09-25 16:11:42 +03:00
Simon Zolin
fcf37da312 * clients: remove an auto-client if a client with the same IP was added manually 2019-09-25 16:11:42 +03:00
Simon Zolin
95eeccde8f + whois: use "descr" or "netname" in case there's no "orgname" 2019-09-25 16:11:42 +03:00
Andrey Meshkov
875905ce8a Merge: Add WHOIS info for clients
* commit 'a52715e0863af0a9e1b26dbf96fc7cced02ae4f6':
  + client: add whois info to dashboard and logs
  + client: add whois info to clients and auto clients table
  * rDNS: refactor
  + whois: add WHOIS information for a client
2019-09-23 20:07:05 +03:00
Simon Zolin
77892bb7e9 Merge: * dnsforward: create dnsfilter asynchronously
Close #928

* commit '75b864f25ec5f762d6cbfc07d3dce7d77ca0629c':
  * dnsforward: create dnsfilter asynchronously
2019-09-23 20:03:38 +03:00
Simon Zolin
ce007e665d Merge: - dhcp: don't replace a static lease with a dynamic one
Close #1015 #1016

* commit 'fd3e153a043941c6f72d7f1c9cfaecdd537a490e':
  - dhcp: don't replace a static lease with a dynamic one
2019-09-23 20:02:44 +03:00
Simon Zolin
75b864f25e * dnsforward: create dnsfilter asynchronously 2019-09-23 20:00:11 +03:00
Simon Zolin
fd3e153a04 - dhcp: don't replace a static lease with a dynamic one 2019-09-23 18:47:13 +03:00
Ildar Kamalov
a52715e086 + client: add whois info to dashboard and logs 2019-09-23 18:17:56 +03:00
Ildar Kamalov
9e4f80f3c1 + client: add whois info to clients and auto clients table 2019-09-23 18:14:00 +03:00
Simon Zolin
192b58b9d9 * rDNS: refactor 2019-09-23 18:14:00 +03:00
Simon Zolin
fd592b4dc8 + whois: add WHOIS information for a client
+ return WHOIS info in GET /clients response
2019-09-23 18:12:54 +03:00
Simon Zolin
f6404ef181 Merge: + Log-In page
Close #865

* commit '95d9a537eab8c2651078841eda64beb5cbe62cd3':
  - client: fix translation
  + client: login page
  * client: fix translation string
  * minor
  *(home): fix golint issues
  - fix crash after stats module is closed
  + config: upgrade from v4 to v5
  + openapi: /login, /logout
  + Login page and web sessions
2019-09-19 18:16:37 +03:00
Ildar Kamalov
95d9a537ea - client: fix translation 2019-09-19 18:08:28 +03:00
Ildar Kamalov
66bd06cf69 + client: login page 2019-09-19 12:52:15 +03:00
Ildar Kamalov
1e4edf0669 * client: fix translation string 2019-09-19 12:47:55 +03:00
Simon Zolin
07fa9bb47c * minor 2019-09-19 12:47:55 +03:00
Andrey Meshkov
4e76013334 *(home): fix golint issues 2019-09-19 12:47:55 +03:00
Simon Zolin
d7f256ba7f - fix crash after stats module is closed
Close DNS forward module BEFORE stats.
2019-09-19 12:47:55 +03:00
Simon Zolin
a71521a658 + config: upgrade from v4 to v5 2019-09-19 12:47:55 +03:00
Simon Zolin
d2a5a550f7 + openapi: /login, /logout 2019-09-19 12:47:55 +03:00
Simon Zolin
6304a7b91b + Login page and web sessions
+ /control/login
+ /control/logout
2019-09-19 12:47:55 +03:00
Ildar Kamalov
74381b0cad Merge: - client: fix upstream DNS servers form
* commit '59a635f3f23bfcca583960f8ebb910d35f13e34d':
  + client: add isVersionGreater helper
  - client: fix upstream DNS servers form
2019-09-17 18:27:49 +03:00
Ildar Kamalov
59a635f3f2 + client: add isVersionGreater helper 2019-09-17 17:37:26 +03:00
Simon Zolin
97edc26c1b Merge: * stats: pass configuration object via stats.New()
* commit 'b8a98c1a77ef92e1cdc962150fe4bf5e38e98f93':
  * stats: pass configuration object via stats.New()
2019-09-17 12:29:21 +03:00
Simon Zolin
ff0b4fa3b5 Merge: - rewrites: AAAA rewrites didn't work
Close #989

* commit 'f4c29715b553b00561c7c7d68005350a5be1bf5a':
  - rewrites: AAAA rewrites didn't work
2019-09-17 12:29:04 +03:00
Ildar Kamalov
0a26ee4224 - client: fix upstream DNS servers form
Closes #1000
2019-09-17 12:25:29 +03:00
Simon Zolin
f4c29715b5 - rewrites: AAAA rewrites didn't work 2019-09-16 16:28:00 +03:00
Simon Zolin
b8a98c1a77 * stats: pass configuration object via stats.New() 2019-09-16 16:17:39 +03:00
Ildar Kamalov
48a4df1a9f Merge: - client: fix url change handler on filters modal
* commit '92561cf04f631cb65fcddf80838252d9b34b8e4a':
  - client: fix url change handler on filters modal
2019-09-16 15:18:23 +03:00
Simon Zolin
3862662201 Merge: + clients: runtime list: add clients from DHCP that have non-empty Hostname property
Close #979

* commit '0c2611ff978e55ee1d6f4dd54b9edd54a3fe5909':
  * minor
  + clients: runtime list: add clients from DHCP that have non-empty Hostname property
2019-09-16 13:54:56 +03:00
Simon Zolin
0c2611ff97 * minor 2019-09-16 13:06:32 +03:00
Simon Zolin
93babd3e1c + clients: runtime list: add clients from DHCP that have non-empty Hostname property 2019-09-16 13:06:32 +03:00
Ildar Kamalov
92561cf04f - client: fix url change handler on filters modal 2019-09-13 15:02:12 +03:00
Simon Zolin
9a28526fa3 Merge: - stats: fix crash on load
Close #999

* commit '8b7d08ebfc1b389c301300f6bad7368e85617921':
  - stats: fix crash on load
2019-09-13 13:10:46 +03:00
Simon Zolin
8b7d08ebfc - stats: fix crash on load 2019-09-13 12:58:57 +03:00
Simon Zolin
30ca77303b Merge: Add Filters Update Interval setting; refactor
Close #641

* commit 'd0fc1dc54dfbc017f28c6c0afa4623c6259af557':
  + client: handle filters configuration
  * openapi: update /filtering
  filtering: refactor;  change API;  add "filters_update_interval" setting
2019-09-12 19:06:39 +03:00
Simon Zolin
df5b41458f Merge: + dnsforward: disable Mozilla DoH - block use-application-dns.net
#988

* commit '47e29f96dfb9f254babcf4763912dc5e9a07ee2a':
  + dnsforward: disable Mozilla DoH - block use-application-dns.net
2019-09-12 19:05:29 +03:00
Simon Zolin
7b46f82fad Merge: Query log: add "interval" setting; add "clear log" button
#776 Close #446

* commit '8c89973365e660d47fa5fce88113414011961acb':
  - client: fix api client export
  - client: fix id and method name
  + client: handle logs configuration
  + openapi: /querylog_info, /querylog_config, /querylog_clear
  + doc: Relations between subsystems
  * querylog: move code to a separate package
2019-09-12 18:58:18 +03:00
Simon Zolin
47e29f96df + dnsforward: disable Mozilla DoH - block use-application-dns.net 2019-09-12 18:56:11 +03:00
Ildar Kamalov
d0fc1dc54d + client: handle filters configuration 2019-09-12 18:38:13 +03:00
Simon Zolin
57bb04685f * openapi: update /filtering 2019-09-12 18:38:13 +03:00
Simon Zolin
adb422fedf filtering: refactor; change API; add "filters_update_interval" setting
+ config: "filters_update_interval"
* add /control/filtering_info
* remove /control/filtering/enable
* remove /control/filtering/disable

* add /control/filtering_config
* remove /control/filtering/status

* add /control/filtering/set_url
* remove /control/filtering/enable_url
* remove /control/filtering/disable_url
2019-09-12 18:38:13 +03:00
Ildar Kamalov
8c89973365 - client: fix api client export 2019-09-12 18:35:13 +03:00
Ildar Kamalov
0e6c795c5b - client: fix id and method name 2019-09-12 18:35:13 +03:00
Ildar Kamalov
a753ae86cc + client: handle logs configuration 2019-09-12 18:35:13 +03:00
Simon Zolin
27f895cf46 + openapi: /querylog_info, /querylog_config, /querylog_clear 2019-09-12 18:35:13 +03:00
Simon Zolin
05bb705e43 + doc: Relations between subsystems 2019-09-12 18:35:13 +03:00
Simon Zolin
8104c902ee * querylog: move code to a separate package
+ config: "querylog_interval" setting
/control/querylog_config, /control/querylog_info
+ POST /control/querylog_clear
2019-09-12 18:35:13 +03:00
Simon Zolin
8f9ca4cba7 Merge: Fix stats module
* commit 'f9091472d790e5e340d0890906f51ef82720e7da':
  - openapi: fix
  - stats: fix incorrect loading of counters from file
  * stats: use uint32 or uint64 integer values, not int
  - /stats_config: write config
  - stats: use --workdir
2019-09-12 18:01:59 +03:00
Simon Zolin
f9091472d7 - openapi: fix 2019-09-12 17:53:27 +03:00
Simon Zolin
ce614ab8bf - stats: fix incorrect loading of counters from file 2019-09-12 17:53:27 +03:00
Simon Zolin
04e2566e9e * stats: use uint32 or uint64 integer values, not int 2019-09-12 17:53:27 +03:00
Simon Zolin
8a2aa57e24 - /stats_config: write config 2019-09-12 14:48:24 +03:00
Simon Zolin
97684368b9 - stats: use --workdir 2019-09-12 14:48:13 +03:00
Simon Zolin
d0dcaeaa04 Merge: i386/linux: don't build binary with sse
Close #996

* commit '4b2a2615cbb14c7297707104789a5983f7f1bada':
  i386/linux: don't build binary with sse
2019-09-11 16:46:22 +03:00
Simon Zolin
2356ae5bdd Merge: * filter update: ensure filter data is text
Close #527

* commit 'b078b82a89940bd96c7e9157c2f5c758224a72ae':
  * filter update: ensure filter data is text (but not html)
2019-09-11 16:45:56 +03:00
Andrey Korolyov
4b2a2615cb i386/linux: don't build binary with sse
The vast majority of today's x86 routers are amd64-based, and the rest are probably either
very old computers or specialized hardware such as PCEngines' ALIX series. For Go language,
adding GO386=387 disables SSE optimizations made by a compiler, effectively allowing binary
to run on old CPUs such as SC1100 or Geode LX.
2019-09-11 16:25:40 +03:00
Simon Zolin
b078b82a89 * filter update: ensure filter data is text (but not html)
stop checking Content-Type HTTP header
2019-09-10 15:22:17 +03:00
Ildar Kamalov
ad96d061a0 Merge: + client: update github issues link
* commit 'dba3c9aef1160e1fa1e4dbf99dbce5dbd0854b6d':
  + client: update github issues link
2019-09-09 14:43:28 +03:00
Ildar Kamalov
dba3c9aef1 + client: update github issues link
Closes #990
2019-09-09 11:59:53 +03:00
Simon Zolin
e346eddf94 Merge: new Statistics module
Close #827

* commit '17a26155cdf0150ea9d8cf915311f16fafa6354a':
  - client: convert average processing time to milliseconds
  + client: handle clear statistics
  + client: update time interval notice
  + client: add notice to the time interval input
  + client: functional components for dashboard
  * client: fix missed translations
  * client: change the result message after adding a filter
  + client: handle the new statistics format
  + client: handle time interval for statistics
  + openapi: add /stats_config, /stats_info methods
  * openapi: update /stats method
  + statistics: store in separate file
  * stats: remove old code
  + config: "statistics_interval" setting
  + /control/stats_config, /control/stats_info
2019-09-04 12:39:42 +03:00
Ildar Kamalov
17a26155cd - client: convert average processing time to milliseconds 2019-09-04 10:14:01 +03:00
Ildar Kamalov
63049e0521 + client: handle clear statistics 2019-09-04 10:14:01 +03:00
Ildar Kamalov
883910c19e + client: update time interval notice 2019-09-04 10:14:01 +03:00
Ildar Kamalov
cac8149d47 + client: add notice to the time interval input 2019-09-04 10:14:00 +03:00
Ildar Kamalov
6bce41bb0a + client: functional components for dashboard 2019-09-04 10:13:51 +03:00
Ildar Kamalov
75df5e8292 * client: fix missed translations
Closes #952
2019-09-04 10:13:21 +03:00
Ildar Kamalov
9087df5dcd * client: change the result message after adding a filter
Closes #948
2019-09-04 10:13:21 +03:00
Ildar Kamalov
6b2496d050 + client: handle the new statistics format 2019-09-04 10:13:21 +03:00
Ildar Kamalov
011bc3e36b + client: handle time interval for statistics 2019-09-04 10:13:18 +03:00
Simon Zolin
7ff27dbb42 + openapi: add /stats_config, /stats_info methods 2019-09-04 10:12:02 +03:00
Simon Zolin
55ceca6314 * openapi: update /stats method 2019-09-04 10:12:02 +03:00
Simon Zolin
4a58266ba3 + statistics: store in separate file
+ GET /control/stats handler
2019-09-04 10:12:02 +03:00
Simon Zolin
60eb55bdce * stats: remove old code 2019-09-04 10:12:01 +03:00
Simon Zolin
fe23b33d7e + config: "statistics_interval" setting 2019-09-04 10:12:01 +03:00
Simon Zolin
cc2654c371 + /control/stats_config, /control/stats_info 2019-09-04 10:12:01 +03:00
Ildar Kamalov
47e5fcb14c Merge: + client: add response information to the filtered query log items
Closes #912

* commit '428706399ae5bcd01daf4b4146c81a481fd680ef':
  + client: add response information to the filtered query log items
2019-09-04 10:10:39 +03:00
Ildar Kamalov
428706399a + client: add response information to the filtered query log items 2019-09-03 17:15:13 +03:00
Simon Zolin
3b98461a2a Merge: + config: add cache size and time settings
Close #947

* commit '4e8473f8a5b04d2b3883ab74323734ef5e976c0e':
  * use dnsproxy v0.19.1
  * dnsfilter: use golibs/cache
2019-09-03 17:14:14 +03:00
Simon Zolin
4e8473f8a5 * use dnsproxy v0.19.1 2019-09-02 19:13:20 +03:00
Simon Zolin
c616259e8b * dnsfilter: use golibs/cache
+ config: add cache size settings
+ config: add cache_time setting
2019-09-02 19:12:53 +03:00
Konstantin 🦄 Zamyakin
7d3fe71597 fix .twosky.json 2019-09-02 17:05:16 +03:00
Simon Zolin
a9524448b1 Merge: Set SSL certificate & privatekey from file
Close #634

* commit 'c05917bce0a4c823a4a3f58973e09f7dd8dae877':
  - client: remove unused strings
  * README: update link to the crowdin
  + client: handle fields for certificate path and private key path
  * openapi: update "TlsConfig"
  + config: add certificate_path, private_key_path
2019-08-30 19:36:51 +03:00
Ildar Kamalov
c05917bce0 - client: remove unused strings 2019-08-30 19:18:23 +03:00
Ildar Kamalov
7aa5c37e3b * README: update link to the crowdin 2019-08-30 19:18:23 +03:00
Ildar Kamalov
6d63450f03 + client: handle fields for certificate path and private key path 2019-08-30 19:18:23 +03:00
Simon Zolin
4445c4b669 * openapi: update "TlsConfig" 2019-08-30 19:18:23 +03:00
Simon Zolin
24bb708b21 + config: add certificate_path, private_key_path
* POST /control/tls/configure: support certificate_path and private_key_path
2019-08-30 19:18:14 +03:00
Ildar Kamalov
c847df9976 Merge: Add TikTok to Blocked services
Closes #950

* commit 'bdd86adac5a3fdc7013200e1448a7acb6a04993e':
  + blocked_services: add tiktok main domain
  + client: add tiktok icon
  + blocked_services: add tiktok
2019-08-29 13:34:58 +03:00
Ildar Kamalov
bdd86adac5 + blocked_services: add tiktok main domain 2019-08-29 11:45:39 +03:00
Ildar Kamalov
44a3a8857f + client: add tiktok icon 2019-08-29 11:40:17 +03:00
Ildar Kamalov
eb524e27a6 + blocked_services: add tiktok 2019-08-29 11:39:04 +03:00
Simon Zolin
be3f855df2 Merge: * /control/version.json: retry up to 3 times after DNS resolve of static.adguard.com has failed
Close #934

* commit 'd4c012220edc52e7d47808f1d83ce9ca664f73d3':
  * control: add link to the issue on github
  * /control/version.json: retry up to 3 times after DNS resolve of static.adguard.com has failed
2019-08-28 15:21:53 +03:00
Simon Zolin
d4c012220e * control: add link to the issue on github 2019-08-27 11:53:09 +03:00
Simon Zolin
815489c0ff * /control/version.json: retry up to 3 times after DNS resolve of static.adguard.com has failed 2019-08-26 16:02:56 +03:00
Simon Zolin
c7b5b00d14 Merge: * dhcp: validate range_start/range_end values
Close #848

* commit '625b22a8d7bece655216b926f1b4ce35e14ccb07':
  * dhcp: validate range_start/range_end values
2019-08-23 17:18:30 +03:00
Simon Zolin
dd632d3f69 Merge: * dhcp: when adding a static lease, it can replace a dynamic lease
Close #833

* commit '7acbeb89569cd0260a0e21eae3a2439b419c2e24':
  * dhcp: when adding a static lease, it can replace a dynamic lease
2019-08-23 17:18:10 +03:00
Simon Zolin
7acbeb8956 * dhcp: when adding a static lease, it can replace a dynamic lease 2019-08-23 16:14:00 +03:00
Simon Zolin
625b22a8d7 * dhcp: validate range_start/range_end values 2019-08-23 14:44:23 +03:00
Simon Zolin
307b934cf1 Merge: * control: refactor: all handlers are registered via httpRegister()
* commit '452a668a5ba66efa265621104fe3be17ae156ed5':
  * control: refactor: all handlers are registered via httpRegister()
2019-08-23 14:09:22 +03:00
Ildar Kamalov
fb2c625bd1 Merge: - client: fix IPv6 redirect url for install
* commit 'c8052c23d190ebcc8437a1c61b08e685e5657e70':
  fix condition
  - client: fix IPv6 redirect url for install
2019-08-23 13:54:44 +03:00
Ildar Kamalov
c8052c23d1 fix condition 2019-08-22 18:50:58 +03:00
Ildar Kamalov
0bd722c426 - client: fix IPv6 redirect url for install
Closes #953
2019-08-22 18:42:55 +03:00
Andrey Meshkov
53767a5bed *(documentation): bump openapi spec version to 0.98.1 2019-08-22 15:42:43 +03:00
Andrey Meshkov
64d40bdc47 Merge: - config: global "blocked_services" settings were reset on startup
* commit 'b1ca7c90d3ef0e72d3535b7cf195adfe83d34e5a':
  - config: global "blocked_services" settings were reset on startup
2019-08-22 15:38:24 +03:00
Simon Zolin
b1ca7c90d3 - config: global "blocked_services" settings were reset on startup 2019-08-22 15:30:48 +03:00
Simon Zolin
bde59364c6 Merge: - dnsforward: don't use dnsfilter object after it's closed (additional check)
* commit 'a370cd0bf035213ea7d09e1e577a4612934a8c5a':
  - dnsforward: don't use dnsfilter object after it's closed (additional check)
2019-08-22 12:05:55 +03:00
Simon Zolin
a370cd0bf0 - dnsforward: don't use dnsfilter object after it's closed (additional check) 2019-08-22 12:01:59 +03:00
Simon Zolin
452a668a5b * control: refactor: all handlers are registered via httpRegister()
* move some code to home/control_filtering.go
2019-08-21 14:52:57 +03:00
Ildar Kamalov
e6bd2a101d Merge: + translations: add twosky config file
* commit '568a7a73347862c30830d956a26e2beb31c27857':
  + translations: add twosky config file
2019-08-20 18:07:16 +03:00
Simon Zolin
d2e0940053 Merge: * use dnsproxy v0.18.4
* commit '31af6ae9147fd85d593237ec6715c428d56740ed':
  * use dnsproxy v0.18.4
2019-08-20 18:05:21 +03:00
Simon Zolin
31af6ae914 * use dnsproxy v0.18.4 2019-08-20 17:59:40 +03:00
Ildar Kamalov
568a7a7334 + translations: add twosky config file 2019-08-20 17:19:49 +03:00
Simon Zolin
09a52436fb Merge: - dnsforward: don't use dnsfilter object after it's closed
Close #940

* commit '94552a30d7080c8471f7fca370a5905c6c420272':
  - dnsforward: don't use dnsfilter object after it's closed
2019-08-20 15:36:34 +03:00
Simon Zolin
94552a30d7 - dnsforward: don't use dnsfilter object after it's closed 2019-08-20 15:07:39 +03:00
Andrey Meshkov
87ca9ed9c2 -(dnsforward): fixed sigsegv when protection is disabled
* commit 'c82e93cfc7cf439a5e5bf9b8bc27f5b68b528b53':
  -(dnsforward): fixed sigsegv when protection is disabled
2019-08-20 15:03:17 +03:00
Andrey Meshkov
c82e93cfc7 -(dnsforward): fixed sigsegv when protection is disabled
Also, fixed all golint issues

 Closes: #941
2019-08-20 00:55:32 +03:00
Simon Zolin
91a1eb9e06 Merge: * use dnsproxy v0.18.3
* commit 'c54e2585ac86d045fe21ae61af35e6a4eeda5d91':
  * use dnsproxy v0.18.3
2019-08-19 17:10:03 +03:00
Simon Zolin
c54e2585ac * use dnsproxy v0.18.3 2019-08-19 17:02:19 +03:00
Simon Zolin
5b555f95ff Merge: + dhcp: use --workdir value for "leases.db" file path
Close #935

* commit '8e08cddf647226d5e8e5f41307b60274a3f232e5':
  + dhcp: use --workdir value for "leases.db" file path
2019-08-19 16:55:42 +03:00
Simon Zolin
8e08cddf64 + dhcp: use --workdir value for "leases.db" file path 2019-08-19 14:40:10 +03:00
Simon Zolin
eba7931c2d Merge: Revert: * dnsfilter: use fastcache instead of gcache
* commit 'b37208564bd170f21347db9cfde39614ea4a02c2':
  - fix build: we're using a new gcache module now
  Revert "+ config: add cache size settings"
  Revert "* dnsfilter: use fastcache instead of gcache"
  Revert "fix tests"
2019-08-16 16:13:03 +03:00
Andrey Meshkov
5448000f7b *(global): travis slack notification 2019-08-16 16:08:56 +03:00
Simon Zolin
b37208564b - fix build: we're using a new gcache module now 2019-08-16 15:43:12 +03:00
Simon Zolin
d46ebe1c8b Revert "+ config: add cache size settings"
This reverts commit 81303b5db7.
2019-08-16 15:17:38 +03:00
Simon Zolin
68d5d595b6 Revert "* dnsfilter: use fastcache instead of gcache"
This reverts commit 6f51df7d2e.
2019-08-16 15:17:38 +03:00
Simon Zolin
56c69cdb79 Revert "fix tests"
This reverts commit d9265aa9a8.
2019-08-16 15:11:57 +03:00
Simon Zolin
28cc9dc973 Merge: + travis: slack notifications
* commit '8aef6d8f91bbac5ce47539ef121a73ea75d12042':
  + travis: slack notifications
2019-08-16 13:50:59 +03:00
Simon Zolin
8aef6d8f91 + travis: slack notifications 2019-08-16 13:47:51 +03:00
Simon Zolin
1f0c8c6a3b Merge: * use dnsproxy v0.18.1
Close #847

* commit '0faf144853df3cf5628d917e936aae0c508aa753':
  * use dnsproxy v0.18.1
2019-08-14 19:18:23 +03:00
Simon Zolin
0faf144853 * use dnsproxy v0.18.1 2019-08-14 18:49:27 +03:00
Simon Zolin
57cfd97a6a Merge: * client: update translations
Close #915

* commit '256030f0c1b780dd73618965a0738162b7835780':
  * client: update translations
2019-08-14 12:48:35 +03:00
Simon Zolin
256030f0c1 * client: update translations 2019-08-13 17:36:19 +03:00
Simon Zolin
ea2a523f8c Merge: * config: set default DNS server as IP addresses
Close #926

* commit '9d7285e42c61852ab5106402b0138ef27dbc5b0f':
  * config: set default DNS server as IP addresses
2019-08-13 13:48:12 +03:00
Simon Zolin
b302ccb491 Merge: * filters update: increase update period to 24 hours
Close #929

* commit '8b63811fa98333cae3c33cac5cc3484995d3ea09':
  * filters update: increase update period to 24 hours
2019-08-13 12:33:11 +03:00
Simon Zolin
4407ad3585 Merge: - readme: fix misspelling
Close #924

* commit 'd7ff61ca590cca9d7fd2374934da790b11aabfdb':
  - readme: fix misspelling
2019-08-13 12:32:04 +03:00
Simon Zolin
9d7285e42c * config: set default DNS server as IP addresses
* config: add "1.0.0.1" to default bootstrap addresses
2019-08-13 11:52:06 +03:00
Simon Zolin
d7ff61ca59 - readme: fix misspelling 2019-08-13 10:41:06 +03:00
Simon Zolin
8b63811fa9 * filters update: increase update period to 24 hours 2019-08-13 10:30:28 +03:00
Andrey Meshkov
5c3dfd114c *(global): update dependencies 2019-08-11 20:45:01 +03:00
Simon Zolin
61897db0c5 Merge: * rDNS: refactor: move code to a separate file
* commit 'ccf72b60084b4818e64105b0687eb98434f14cf3':
  * safebrowsing/parental: split some code
  * rDNS: make log messages' level = debug
  * rDNS: refactor: move code to a separate file
2019-08-08 12:14:32 +03:00
Simon Zolin
ccf72b6008 * safebrowsing/parental: split some code
* dnsfilter.CheckHost() doesn't support host="hostname." (with a trailing dot) anymore
2019-08-08 12:11:24 +03:00
Simon Zolin
d659e7ee08 * rDNS: make log messages' level = debug 2019-08-08 12:11:24 +03:00
Simon Zolin
4f08f96607 * rDNS: refactor: move code to a separate file 2019-08-08 12:10:50 +03:00
Simon Zolin
77592c6382 Merge: * use golibs v0.1.4
Close #893

* commit '272115724df8748afc1954538673786cd56f9365':
  * use golibs v0.1.4
2019-08-07 15:12:44 +03:00
Simon Zolin
272115724d * use golibs v0.1.4 2019-08-06 18:55:56 +03:00
Simon Zolin
a59b6b3054 Merge: block access to specific services
Close #819

* commit 'e7001c3bc4a7e1ec53d810cafbc90d7f2a624af5':
  * config upgrade: sequential processing
  * config: upgrade schema version: 3 -> 4
  + client: add prefix to the service icons
  + client: handle blocked services
  + openapi: add /blocked_services/*
  + openapi: clients: add "blocked_services" field
  * refactor
  + /control/blocked_services/* API
  + dnsfilter: use global and per-client BlockedServices array
  + clients: add BlockedServices field
  + config: store/load "blocked_services" per-client setting
  + doc: add "Services Filter" section
2019-08-05 14:13:54 +03:00
Simon Zolin
e7001c3bc4 * config upgrade: sequential processing 2019-08-05 14:12:22 +03:00
Simon Zolin
1b95a85651 * config: upgrade schema version: 3 -> 4 2019-08-05 14:12:22 +03:00
Ildar Kamalov
0c46a70d9a + client: add prefix to the service icons 2019-08-05 14:12:22 +03:00
Ildar Kamalov
92cebd5b31 + client: handle blocked services 2019-08-05 14:12:22 +03:00
Simon Zolin
3c684d1f85 + openapi: add /blocked_services/* 2019-08-05 14:12:22 +03:00
Simon Zolin
87b379b140 + openapi: clients: add "blocked_services" field 2019-08-05 14:12:22 +03:00
Simon Zolin
15d07a40eb * refactor 2019-08-05 14:12:22 +03:00
Simon Zolin
dc2d8cf075 + /control/blocked_services/* API 2019-08-05 14:12:22 +03:00
Simon Zolin
e81a9c7d56 + dnsfilter: use global and per-client BlockedServices array 2019-08-05 14:12:22 +03:00
Simon Zolin
04a477c14a + clients: add BlockedServices field 2019-08-05 14:12:22 +03:00
Simon Zolin
8307a5a494 + config: store/load "blocked_services" per-client setting 2019-08-05 14:12:22 +03:00
Simon Zolin
01f5a13dd2 + doc: add "Services Filter" section 2019-08-05 14:12:22 +03:00
Andrey Meshkov
fdfc8d7683 fix typo2 2019-08-02 14:55:58 +03:00
Andrey Meshkov
b17cbcb38f fix typo 2019-08-02 14:55:00 +03:00
Andrey Meshkov
9389b087be Merge pull request #290 in DNS/adguard-home from feature/github_issue_template to master
* commit '0550a9a460aac7e5cd449513fed0567e558d2891':
  *(documentation): Github issue template
2019-08-02 14:48:25 +03:00
Andrey Meshkov
0550a9a460 *(documentation): Github issue template 2019-08-02 13:33:36 +03:00
Simon Zolin
4ae8c799ee Merge: + DNS: Add Rewrites section
Close #818

* commit 'e95aae5744ffd1de0809c95a8df50ea3f5f1af28':
  + client: handle DNS rewrites
  + openapi: add /rewrite/* methods
  + dnsforward: use Rewrites table
  + control: add /rewrite/* handlers
  + doc: add Rewrites section
  * dnsfilter: refactor: a simple approach to convert Reason to string
2019-07-31 18:55:01 +03:00
Ildar Kamalov
e95aae5744 + client: handle DNS rewrites 2019-07-31 14:29:37 +03:00
Ildar Kamalov
3cca61d599 Merge: + translations: add twosky integration
* commit '3b0f2e5563bfa3411b258b1b9c0b9d74f5598514':
  + translations: add twosky integration
2019-07-31 14:02:01 +03:00
Ildar Kamalov
3b0f2e5563 + translations: add twosky integration 2019-07-31 13:51:58 +03:00
Simon Zolin
70b8cf6ec8 + openapi: add /rewrite/* methods 2019-07-29 14:49:14 +03:00
Simon Zolin
1bb6638db7 + dnsforward: use Rewrites table 2019-07-29 11:48:24 +03:00
Simon Zolin
9857024c5d + control: add /rewrite/* handlers 2019-07-29 11:48:24 +03:00
Simon Zolin
0c2459b51b + doc: add Rewrites section 2019-07-29 11:37:47 +03:00
Simon Zolin
b66e370ffc * dnsfilter: refactor: a simple approach to convert Reason to string 2019-07-29 11:37:10 +03:00
Simon Zolin
a9fbb93f0f Merge: + Add "parental_block_host" and "safebrowsing_block_host" settings
#454

* commit 'fdf7ee2c08d4177d78fcdc20571bc7d2b61320ae':
  * refactor: don't set new configuration while running DNS server
  * refactor
  * dnsforward: parental control server can be an IP address, not just host name
  + dnsforward, config: add "parental_block_host" and "safebrowsing_block_host" settings
2019-07-24 19:35:46 +03:00
Andrey Meshkov
a742181956 Merge: +: git-cz config file
* commit '873108bf081c98eeb22fe00befd81f198aca7879':
  +: git-cz config file
2019-07-24 17:25:53 +03:00
Andrey Meshkov
873108bf08 +: git-cz config file
Added a git-cz config file because otherwise I cannot write proper
commit messages as I forget our rules all the time.
2019-07-24 17:26:21 +03:00
Andrey Meshkov
e9647e2962 Merge: refactor: 💡 optimizing GC
* commit '479675b6ccffbd9505a1edced40472438ea6a737':
  refactor: 💡 optimizing GC
2019-07-24 17:06:04 +03:00
Andrey Meshkov
e09ec5d38e Merge: * dnsfilter: use fastcache instead of gcache
* commit 'd9265aa9a8c21d97206b0e43a03b448f2c33a510':
  fix tests
  * dnsfilter: use fastcache instead of gcache
  + config: add cache size settings
2019-07-24 17:04:24 +03:00
Andrey Meshkov
479675b6cc refactor: 💡 optimizing GC
Setting debug.SetGCPercent makes golang free memory faster. This greatly
improves overall RSS usage. Otherwise, golang prefers not to free memory
at all:)
2019-07-24 17:00:05 +03:00
Simon Zolin
d9265aa9a8 fix tests 2019-07-23 20:01:50 +03:00
Simon Zolin
6f51df7d2e * dnsfilter: use fastcache instead of gcache 2019-07-23 17:14:13 +03:00
Simon Zolin
81303b5db7 + config: add cache size settings 2019-07-23 15:57:44 +03:00
Simon Zolin
fdf7ee2c08 * refactor: don't set new configuration while running DNS server 2019-07-22 12:52:27 +03:00
Simon Zolin
5a3de2a276 * refactor 2019-07-22 12:33:58 +03:00
Simon Zolin
4a05ab0057 * dnsforward: parental control server can be an IP address, not just host name 2019-07-22 12:33:45 +03:00
Simon Zolin
4134a8c30e + dnsforward, config: add "parental_block_host" and "safebrowsing_block_host" settings 2019-07-22 12:16:30 +03:00
Simon Zolin
c2dacd32d1 Merge: * use urlfilter v0.4.1
Close #840

* commit 'bb00a632382823d8c0a0d9f307788711ea50cb5f':
  * use urlfilter v0.4.1
2019-07-19 15:26:52 +03:00
Simon Zolin
bb00a63238 * use urlfilter v0.4.1 2019-07-19 15:20:42 +03:00
Simon Zolin
bd5162ada3 Merge: Refactoring: move global variables; move initialization of periodic tasks
Close #583

* commit 'b8444ff46aff5e45194c6cb61fdf4d3e7aa798fa':
  * minor
  * dnsforward: move initialization of periodic tasks to NewServer()
  * move "dnsctx" to "config"
  * move "dnsServer" to "config"
  * move "dhcpServer" to "config"
  * move "httpServer" to "config"
  * move "httpsServer" to "config"
  * move "pidFileName" to "config"
  * move "versionCheckJSON" to "config"
  * move "client", "transport" to "config"
  * move "controlLock" mutex to "config"
  * clients: move container object to "config"
2019-07-19 15:18:51 +03:00
Simon Zolin
b8444ff46a * minor 2019-07-19 12:18:16 +03:00
Simon Zolin
2bbd262968 * dnsforward: move initialization of periodic tasks to NewServer() 2019-07-19 12:18:16 +03:00
Simon Zolin
6701e9ce06 * move "dnsctx" to "config" 2019-07-19 12:18:16 +03:00
Simon Zolin
af21a5f17b * move "dnsServer" to "config" 2019-07-19 12:18:16 +03:00
Simon Zolin
001b4b981f * move "dhcpServer" to "config" 2019-07-19 12:18:16 +03:00
Simon Zolin
5e309a7b3a * move "httpServer" to "config" 2019-07-19 12:18:16 +03:00
Simon Zolin
2780ace63e * move "httpsServer" to "config" 2019-07-19 12:18:16 +03:00
Simon Zolin
f79008d9d0 * move "pidFileName" to "config" 2019-07-19 12:18:16 +03:00
Simon Zolin
d3ddfc81a6 * move "versionCheckJSON" to "config" 2019-07-19 12:18:16 +03:00
Simon Zolin
c426ee0108 * move "client", "transport" to "config" 2019-07-19 12:18:16 +03:00
Simon Zolin
2682adca39 * move "controlLock" mutex to "config" 2019-07-17 19:29:45 +03:00
Simon Zolin
d51f43e27a * clients: move container object to "config"
Now the functions use parameter, not a global object.
2019-07-17 19:29:45 +03:00
Simon Zolin
1973901802 Merge: * dhcpd: check if subnet mask is correct
Close #887

* commit '79a5c920a40180b7291d94535e50017d98eb3a63':
  * dhcpd: check if subnet mask is correct
2019-07-17 12:45:45 +03:00
Simon Zolin
79a5c920a4 * dhcpd: check if subnet mask is correct 2019-07-17 11:55:21 +03:00
Simon Zolin
0fb42e5c71 Merge: - filters: fix crash after update
#878

* commit '1c5b6130480b7c8796c9861c94e9635b550582bc':
  - filters: fix crash after update
2019-07-16 15:35:54 +03:00
Simon Zolin
1c5b613048 - filters: fix crash after update 2019-07-16 15:29:36 +03:00
Simon Zolin
55a4536997 Merge: - filters: start DNS server after filters are updated
Close #886

* commit '1b45dc45fc4e610689afc4e618e45ed946f02646':
  - filters: start DNS server after filters are updated
2019-07-16 14:41:23 +03:00
Simon Zolin
1b45dc45fc - filters: start DNS server after filters are updated 2019-07-16 14:32:58 +03:00
Simon Zolin
87ccd192c3 Merge: - filters: windows: fix update procedure
Close #878

* commit '2c91de73af78a032c076dbad6dcdb85e22e82536':
  * minor
  - filters: start DNS server after filter has been removed
  - filters: windows: fix update procedure
2019-07-16 13:58:54 +03:00
Simon Zolin
2c91de73af * minor 2019-07-16 12:55:55 +03:00
Simon Zolin
94f3bf44d7 - filters: start DNS server after filter has been removed 2019-07-16 12:55:47 +03:00
Simon Zolin
27006f58c5 - filters: windows: fix update procedure
We couldn't write filter files on Windows due to
 "file is being used" error.
2019-07-16 12:55:18 +03:00
Simon Zolin
4326a2c945 Merge: - /filtering/remove_url: windows: remove filter file only after DNS server has been stopped
Close #878

* commit '375e410aa310c24ec0e95ee48ebd40675d5df1e7':
  - /filtering/remove_url: windows: remove filter file only after DNS server has been stopped
2019-07-15 18:36:08 +03:00
Simon Zolin
375e410aa3 - /filtering/remove_url: windows: remove filter file only after DNS server has been stopped
Otherwise, os.Remove() will return with an error "file is being used".
2019-07-15 18:23:58 +03:00
Simon Zolin
cc8633ed7d Merge: - dnsfilter: fix crash when global setting 'SafeSearch' is off
Close #880

* commit 'a79643f23e4bb45a912a71b4a973a027431a8720':
  + dnsfilter-test: override global safe-browsing setting with a per-client setting
  - dnsfilter: fix crash when global setting 'SafeSearch' is off
2019-07-15 18:22:58 +03:00
Simon Zolin
a79643f23e + dnsfilter-test: override global safe-browsing setting with a per-client setting 2019-07-15 14:03:22 +03:00
Simon Zolin
c81c79aad7 Merge: - don't load filter rules if filter is disabled
Close #879

* commit 'e2b518339fe6c14bb29008ad1638244e2f0fb3f8':
  - don't load filter rules if filter is disabled
2019-07-15 13:17:44 +03:00
Simon Zolin
e2b518339f - don't load filter rules if filter is disabled 2019-07-15 12:49:48 +03:00
Simon Zolin
57c510631e - dnsfilter: fix crash when global setting 'SafeSearch' is off
but per-client setting is on
2019-07-15 12:10:43 +03:00
Andrey Meshkov
d4bbc45a39 Added beta link for FreeBSD 2019-07-12 16:22:13 +03:00
Andrey Meshkov
9eb6da05ad Bump version to 0.97.0 and fix #798 2019-07-12 15:57:20 +03:00
Simon Zolin
3f796a5d05 Merge: - fix tests
* commit '0a1d7fd70732c306f39c777cbe60bb8bf1ab9da5':
  - fix tests
2019-07-09 11:35:49 +03:00
Simon Zolin
0a1d7fd707 - fix tests 2019-07-09 11:35:39 +03:00
Ildar Kamalov
26db906e54 Merge: + client: add link to the DNS filterting rules article
Closes #721

* commit '3a5f9a7ad35aa7f0f0dc5eac5dfcb9b9a3276fc0':
  + client: add link to the DNS filterting rules article
2019-07-08 18:05:02 +03:00
Ildar Kamalov
3a5f9a7ad3 + client: add link to the DNS filterting rules article 2019-07-08 17:36:32 +03:00
Ildar Kamalov
bcbfa43ea2 Merge: * client: remove /clients and /stats_top request from global requests
* commit '2520a62e2430dac1d9bf689c567b95d419a78339':
  * client: remove /clients and /stats_top request from global requests
2019-07-08 13:47:37 +03:00
Ildar Kamalov
2520a62e24 * client: remove /clients and /stats_top request from global requests 2019-07-08 12:49:03 +03:00
Simon Zolin
fce551dcaf Merge: - client: fix version line break
#815

* commit 'cf4616cbee3f835ed4db0875f1183c5dcac347f5':
  - client: fix version line break
2019-07-05 18:37:46 +03:00
Ildar Kamalov
cf4616cbee - client: fix version line break 2019-07-05 18:37:57 +03:00
Simon Zolin
f0c9ffcbeb Merge: - client: fix update now button and notification
#815

* commit '71c1157ef56fa456698e828b3d4ff992d62199ff':
  * client: remove version truncate for desktop
  - client: fix update now button and notification
2019-07-05 18:26:53 +03:00
Ildar Kamalov
71c1157ef5 * client: remove version truncate for desktop 2019-07-05 18:27:15 +03:00
Ildar Kamalov
2fe9819150 - client: fix update now button and notification 2019-07-05 18:21:46 +03:00
Simon Zolin
4af635e58a Merge: - dnsfilter: fix post-install error "filter file not found"
* commit 'b0cfd7228eaae0719f40d37f766c541c06bfb1b0':
  - dnsfilter: fix post-install error "filter file not found"
2019-07-05 17:53:43 +03:00
Simon Zolin
b0cfd7228e - dnsfilter: fix post-install error "filter file not found"
Right after installation we don't have the filter files downloaded.
While they are being downloaded, we replace them with an empty filter.
2019-07-05 17:35:40 +03:00
Simon Zolin
e03efbcdd1 Merge: + release.sh: add freebsd/amd64 distrib
Close #873

* commit '124d73bd3202efbed1e0774d79576f4e7a160fd9':
  + release.sh: add freebsd/amd64 distrib
2019-07-05 15:50:37 +03:00
Simon Zolin
2897bb983f Merge: Print DOH/DOT addresses if it's configured
Close #761

* commit '387783cf91acb8a78b9c9b22f5373187e4dfc16b':
  * client: remove /dns-query from string on client
  * client: fix description
  - client: fix page lang issue with Portuguese
  * client: show DNS-over-HTTPS and DNS-over-TLS addresses
  + client: add DNS privacy tab to setup guide
  + /status: "dns_addresses": add "tls://" or "https://" prefix
  * /status: "dns_addresses": add port if not 53
2019-07-05 15:49:55 +03:00
Ildar Kamalov
387783cf91 * client: remove /dns-query from string on client 2019-07-05 15:47:21 +03:00
Ildar Kamalov
d4bd53a824 * client: fix description 2019-07-05 15:47:21 +03:00
Ildar Kamalov
f1a6912092 - client: fix page lang issue with Portuguese 2019-07-05 15:47:21 +03:00
Ildar Kamalov
531ee20988 * client: show DNS-over-HTTPS and DNS-over-TLS addresses 2019-07-05 15:47:21 +03:00
Ildar Kamalov
5c7c9964b8 + client: add DNS privacy tab to setup guide 2019-07-05 15:47:21 +03:00
Simon Zolin
425f3c87d0 + /status: "dns_addresses": add "tls://" or "https://" prefix 2019-07-05 15:47:21 +03:00
Simon Zolin
ad7c5cb9dc * /status: "dns_addresses": add port if not 53 2019-07-05 15:47:21 +03:00
Simon Zolin
124d73bd32 + release.sh: add freebsd/amd64 distrib 2019-07-05 14:42:32 +03:00
Simon Zolin
1445940473 Merge: * use urlfilter v0.4.0
Close #866

* commit '134d9275bba7de7d1550412310bc275c52bb340e':
  * use urlfilter v0.4.0
2019-07-05 12:33:30 +03:00
Simon Zolin
df30248870 Merge: - freebsd: fix build
Close #870

* commit '98ff11e1c781a373768f01c54f6c7c29d8096d32':
  - freebsd: fix build
2019-07-04 15:12:38 +03:00
Simon Zolin
b419a1e3d8 Merge: * dns: fail on starting DNS server if upstream servers configuration is incorrect
* commit 'e2675e9a3bb54263d991ed4e9260d5acfedd63da':
  - client: fix link to dhcp settings page
  * dns: fail on starting DNS server if upstream servers configuration is incorrect
2019-07-04 14:57:35 +03:00
Simon Zolin
98ff11e1c7 - freebsd: fix build
Go's "syscall" package file for FreeBSD (incorrectly?) uses int64
 types in syscall.Rlimit struct.
2019-07-04 14:26:34 +03:00
Simon Zolin
134d9275bb * use urlfilter v0.4.0
Now we pass filtering rules to urlfilter as filer file names,
 rather than the list of rule strings.
(Note: user rules are still passed as the list of rule strings).

As a result, we don't store the contents of filter files in memory.
2019-07-04 14:10:01 +03:00
Ildar Kamalov
e2675e9a3b - client: fix link to dhcp settings page 2019-07-03 17:59:26 +03:00
Simon Zolin
dc43ad9910 * dns: fail on starting DNS server if upstream servers configuration is incorrect 2019-07-03 17:59:19 +03:00
Simon Zolin
ceac4cbdd5 Merge: - service stop: fix race
Close #799

* commit '131aa4c93ccd6e2603e8025dfd4d3693aa9dd561':
  - service stop: fix race
2019-07-02 14:45:21 +03:00
Simon Zolin
131aa4c93c - service stop: fix race
Service Stop handler sends SIGINT to the main thread,
 which begins the stops the app.
2019-07-02 12:56:23 +03:00
Ildar Kamalov
5abf0b5a53 Merge: - client: request tls status on app load
Closes #851

* commit '640620288892afad7b84cc3b25d96bab10cdb5d6':
  - client: fix version alignment
  - client: request tls status on app load
2019-07-02 09:40:49 +03:00
Ildar Kamalov
5cddde53c3 Merge: * client: allow ip address in filter
Closes #832

* commit 'e616d843bfbef044372c4968559f02b71f5d8210':
  * client: allow ip address in filter
2019-07-02 09:39:33 +03:00
Simon Zolin
1c9abd6107 Merge: + dhcpd, clients, dnsfilter: add more tests
#788

* commit '25da23497a19118a22b97d64749fa70337544116':
  + dnsfilter: more tests
  + dhcpd, clients: add more tests
2019-07-01 19:26:27 +03:00
Simon Zolin
8e3f05e538 Merge: * dnsfilter: fix tests: pass config object to NewForTest()
* commit '64f66cfb5d71e34d59977925fd9453a21fe2cd1a':
  * dnsfilter: fix tests: pass config object to NewForTest()
2019-07-01 19:24:53 +03:00
Simon Zolin
64f66cfb5d * dnsfilter: fix tests: pass config object to NewForTest() 2019-07-01 19:24:52 +03:00
Ildar Kamalov
e616d843bf * client: allow ip address in filter 2019-07-01 15:52:24 +03:00
Ildar Kamalov
6406202888 - client: fix version alignment 2019-07-01 15:07:29 +03:00
Ildar Kamalov
b3c2b3a21b - client: request tls status on app load 2019-07-01 15:04:07 +03:00
Simon Zolin
b45e8e80fb Merge: * auto-update: use backup directory format without version: "agh-backup"
Close #801

* commit '885b660808a848277f080c78dc7e6107afdbabb7':
  * auto-update: refactor test;  test getUpdateInfo()
  * auto-update: use backup directory format without version: "agh-backup"
2019-06-27 18:04:37 +03:00
Simon Zolin
885b660808 * auto-update: refactor test; test getUpdateInfo() 2019-06-27 15:23:48 +03:00
Simon Zolin
bdc9a0b906 * auto-update: use backup directory format without version: "agh-backup" 2019-06-27 15:23:16 +03:00
Simon Zolin
c631a6832f Merge: + clients: parse 'arp -a' output; periodically update info
Close #826

* commit 'db7efc24d381f6c8d88e14f485475e812ff5fb7b':
  + clients: parse 'arp -a' output;  periodically update info
2019-06-27 11:59:19 +03:00
Simon Zolin
db7efc24d3 + clients: parse 'arp -a' output; periodically update info
* prioritize a client source: etc/hosts > ARP > rDNS
2019-06-27 11:39:53 +03:00
Simon Zolin
b4b11406cf Merge: * /control/version.json: add "recheck_now" parameter
Close #815

* commit 'd2258cb66de32092f145f2803a7be3d7869970f2':
  * openapi.yaml: update /version.json
  + client: add button for check updates
  * /control/version.json: add "recheck_now" parameter
2019-06-27 11:23:29 +03:00
Simon Zolin
eb8c531ae1 Merge: * dnsfilter: use a single global context object
Close #807

* commit '42b76ada9d42f01aace4c6f47cb32f3d77d53a0b':
  rename dnsfContext -> dnsFilterContext
  * dnsfilter: use a single global context object
2019-06-27 11:22:57 +03:00
Simon Zolin
d1987e711d Merge: - dhcp: store lease data in database on each change rather than once on app stop
Close #852

* commit '0b3ba8224255247fa751a9922f83154e71a26c02':
  - dhcp: store lease data in database on each change rather than once on app stop
  - dhcp: fix race introduced by static lease add/remove from UI thread
2019-06-27 10:56:32 +03:00
Simon Zolin
e50b4fd185 Merge: - rDNS: don't try to resolve loopback IP addresses
Close #838

* commit '6a1edc45be51a16bc1e8b63bb1661a6e4196fe5a':
  - rDNS: don't try to resolve loopback IP addresses
2019-06-27 10:55:25 +03:00
Simon Zolin
d2258cb66d * openapi.yaml: update /version.json 2019-06-27 10:53:03 +03:00
Simon Zolin
42b76ada9d rename dnsfContext -> dnsFilterContext 2019-06-27 10:48:12 +03:00
Simon Zolin
25da23497a + dnsfilter: more tests 2019-06-26 18:13:09 +03:00
Simon Zolin
efaaeb58eb + dhcpd, clients: add more tests 2019-06-26 17:53:05 +03:00
Simon Zolin
0b3ba82242 - dhcp: store lease data in database on each change rather than once on app stop 2019-06-26 14:02:41 +03:00
Simon Zolin
eff23f3b62 - dhcp: fix race introduced by static lease add/remove from UI thread 2019-06-26 14:01:59 +03:00
Ildar Kamalov
0e9df33a40 + client: add button for check updates 2019-06-25 17:56:50 +03:00
Simon Zolin
6a1edc45be - rDNS: don't try to resolve loopback IP addresses 2019-06-25 16:14:52 +03:00
Simon Zolin
5d60bb05ab * /control/version.json: add "recheck_now" parameter 2019-06-25 16:06:55 +03:00
Simon Zolin
2307f55715 * dnsfilter: use a single global context object 2019-06-24 19:00:03 +03:00
Andrey Meshkov
f1e6a30931 Fix version/channel linking 2019-06-20 14:36:26 +03:00
Andrey Meshkov
4ddae72faf Fix Makefile -- VersionString and updateChannel 2019-06-20 14:18:29 +03:00
Andrey Meshkov
082354204b Fix #831
This commit fixes panic when customDialContext fails to resolve the host's address.
2019-06-18 16:18:13 +03:00
Simon Zolin
6187871e3b Merge: * move ./*.go files into ./home/ directory
* commit 'dc682763ff61874eb6043eaac5fa0eba17f7ddec':
  * move ./*.go files into ./home/ directory
2019-06-10 12:07:57 +03:00
Simon Zolin
dc682763ff * move ./*.go files into ./home/ directory 2019-06-10 11:51:53 +03:00
Andrey Meshkov
9fe34818e3 Fix #770 - dnsproxy v0.15.0
* commit '9a77bb3a0acddf88f32991e13891270deea5725c':
  go mod tidy
  * dnsproxy v0.15.0
2019-06-07 20:13:59 +03:00
Andrey Meshkov
9a77bb3a0a go mod tidy 2019-06-07 20:10:07 +03:00
Simon Zolin
86890a8609 * dnsproxy v0.15.0 2019-06-07 19:59:11 +03:00
Simon Zolin
1fd0f78612 Merge: - clients: fix race introduced by commit 07db927; update tech doc
Close #727

* commit '1fcb69d3a913dec9b53f148acab45b1f621faa24':
  - clients: fix race introduced by commit 07db927; update tech doc
2019-06-07 19:11:28 +03:00
Simon Zolin
1fcb69d3a9 - clients: fix race introduced by commit 07db927; update tech doc 2019-06-07 11:37:55 +03:00
Andrey Meshkov
07db927246 Fix #727 - use default parental sensitivity when it's not set 2019-06-06 22:42:17 +03:00
Andrey Meshkov
f9807e4011 Fix #806 2019-06-06 21:06:19 +03:00
Andrey Meshkov
5647bc1fc9 Fix #727 - apply client settings properly 2019-06-06 21:04:17 +03:00
Andrey Meshkov
0f7235f217 fix string id 2019-06-06 17:48:46 +03:00
Andrey Meshkov
db67fb6c6a rename client settings 2019-06-06 17:45:24 +03:00
Simon Zolin
087d2f68c2 Merge: - client: fix versions check
Close #428

* commit '02fa39226c442a23e9cba9816382f55c2b276589':
  * client: pull locales
  - client: fix versions check
2019-06-06 17:27:38 +03:00
Ildar Kamalov
02fa39226c * client: pull locales 2019-06-06 17:25:50 +03:00
Andrey Meshkov
edfa104710 add urlfilter to the list of software 2019-06-06 16:18:12 +03:00
Andrey Meshkov
7a124213e5 Merge branch 'master' of ssh://bit.adguard.com:7999/dns/adguard-dns 2019-06-06 16:00:42 +03:00
Andrey Meshkov
0a2a7ca630 Fix #566 -- added comparison table 2019-06-06 16:00:35 +03:00
Ildar Kamalov
1f164c7005 - client: fix versions check 2019-06-06 15:54:19 +03:00
Simon Zolin
44f224d69e Merge: Auto-update: improve algorithm, fix bugs
Close #428

* commit '22469bb83bcf902804191d4896c2224e5d5b9f75':
  * control_update_test.go: "+build ignore"
  - client: check version on update before page reload
  * auto-update: remove the update directory after successful update
  + auto-update: copy supporting files (README, etc.)
  * release.sh: add AdGuardHome/ directory to .tar.gz output file
  * auto-update: zipFileUnpack() returns list of unpacked files
  * auto-update: use native code to unpack .tar.gz
  * auto-update: use 'selfupdate_min_version' from version.json
  - control: outgoing HTTP requests didn't work if target IP is IPv6
2019-06-06 14:05:43 +03:00
Simon Zolin
22469bb83b * control_update_test.go: "+build ignore" 2019-06-06 12:20:26 +03:00
Ildar Kamalov
10a0873bc8 - client: check version on update before page reload 2019-06-06 11:41:53 +03:00
Simon Zolin
a165410c9f * auto-update: remove the update directory after successful update 2019-06-06 11:41:53 +03:00
Simon Zolin
ec5e2be31f + auto-update: copy supporting files (README, etc.) 2019-06-06 11:41:53 +03:00
Simon Zolin
6d3099acd3 * release.sh: add AdGuardHome/ directory to .tar.gz output file 2019-06-06 11:41:53 +03:00
Simon Zolin
66c670c6ff * auto-update: zipFileUnpack() returns list of unpacked files 2019-06-06 11:41:14 +03:00
Simon Zolin
c2a31f9503 * auto-update: use native code to unpack .tar.gz 2019-06-06 11:41:14 +03:00
Simon Zolin
466f553bbe * auto-update: use 'selfupdate_min_version' from version.json 2019-06-06 11:41:14 +03:00
Simon Zolin
ddb1bc0fee - control: outgoing HTTP requests didn't work if target IP is IPv6 2019-06-06 11:41:14 +03:00
Andrey Meshkov
a36630e5a8 Merge: Fix #773 - preparing the new update channel
* commit '395833056097fa44c1221da33319cd64e4a5ca62':
  Fix #773 - preparing the new update channel
2019-06-06 11:23:55 +03:00
Andrey Meshkov
3958330560 Fix #773 - preparing the new update channel 2019-06-06 03:00:15 +03:00
Ildar Kamalov
86ba6d4332 Merge pull request in DNS/adguard-dns from fix/793 to master
Closes #793

* commit 'b2364e465f7c7b19ad455b07864ddaf2848e6664':
  * client: reload list on opening Clients settings
2019-06-05 16:06:54 +03:00
Ildar Kamalov
b2364e465f * client: reload list on opening Clients settings 2019-06-05 15:49:01 +03:00
Andrey Meshkov
a3b8d4d923 Fix #706 -- rDNS for DOH/DOT clients 2019-06-04 20:38:53 +03:00
Andrey Meshkov
3454bf9243 Merge branch 'master' of ssh://bit.adguard.com:7999/dns/adguard-dns 2019-06-04 19:58:17 +03:00
Andrey Meshkov
64a4443d0c Fix #706 - logging for resolveRDNS 2019-06-04 19:58:13 +03:00
Simon Zolin
d24b78db0e Merge: + dns: resolve hosts via rDNS for the top clients after the server has been started
Close #706

* commit 'f7150e6a19bfc5643fef4106bd068f6ba099f8e2':
  + dns: resolve hosts via rDNS for the top clients after the server has been started
2019-06-04 18:59:14 +03:00
Simon Zolin
f7150e6a19 + dns: resolve hosts via rDNS for the top clients after the server has been started 2019-06-04 18:12:45 +03:00
Andrey Meshkov
85046abb15 Merge branch 'master' of ssh://bit.adguard.com:7999/dns/adguard-dns 2019-06-04 16:30:59 +03:00
Andrey Meshkov
454e26db7f Update ports in docker files 2019-06-04 16:30:55 +03:00
Andrey Meshkov
b74438bf83 Merge pull request 235, Fix #778
* commit '7d40d3bfeaa2bea83ca50b41550b16907e447a47':
  + docker: use --no-check-update
2019-06-04 16:28:17 +03:00
Simon Zolin
7d40d3bfea + docker: use --no-check-update 2019-06-04 16:06:00 +03:00
Simon Zolin
6261fb79ab Merge: fix docker build
Close #789

* commit '27bffef9400615f502f4799fb318254b585fad99':
  Fix #789
2019-06-04 11:34:16 +03:00
Eugene Zbiranik
27bffef940 Fix #789 2019-06-04 11:03:13 +03:00
Simon Zolin
450e2ac549 Merge: * minor API changes
Close #785

* commit '7f5ac19b592c2a63e52a5e5319e9e8eb687c7410':
  * client: use JSON for filtering/remove_url
  * /remove_url: use JSON input data format
  - openapi: correct format
  - openapi: fix /add_url
2019-06-03 19:39:40 +03:00
Simon Zolin
6ac466e430 Merge: + client: split settings page into several pages
Close #726

* commit 'f7d88f6976ae8328bc47c0df4686ae6a38ed7bb0':
  * client: check initial access settings
  * client: remove unused addErrorToast method
  * client: move access settings to DNS settings page
  + client: split settings page into several pages
2019-06-03 19:38:21 +03:00
Ildar Kamalov
f7d88f6976 * client: check initial access settings 2019-06-03 16:39:02 +03:00
Ildar Kamalov
7f5ac19b59 * client: use JSON for filtering/remove_url 2019-06-03 16:33:15 +03:00
Ildar Kamalov
54f6710b8f * client: remove unused addErrorToast method 2019-06-03 16:18:49 +03:00
Ildar Kamalov
757bb7285a * client: move access settings to DNS settings page 2019-06-03 16:08:50 +03:00
Ildar Kamalov
af041bcbd7 Merge pull request in DNS/adguard-dns from fix/702 to master
* commit 'df9864ec00fe9b4c7f4912a6122d1308f06fa844':
  * client: replace favicon.ico with favicon.png
2019-06-03 15:47:42 +03:00
Ildar Kamalov
cf53653cfa + client: split settings page into several pages 2019-06-03 15:44:29 +03:00
Simon Zolin
1d09ff0562 Merge: + dnsforward: add access settings for blocking DNS requests
Close #728

* commit 'e4532a27cd2a6f92aaf724fddbffa00fcecb064c':
  - openapi: correct format
  + client: handle access settings
  * go.mod: update dnsproxy
  + control: /access/list, /access/set handlers
  + dnsforward: add access settings for blocking DNS requests
2019-06-03 15:04:52 +03:00
Simon Zolin
c93cb43db8 * /remove_url: use JSON input data format 2019-06-03 12:05:08 +03:00
Simon Zolin
276d87a218 - openapi: correct format 2019-06-03 12:05:08 +03:00
Simon Zolin
fcf609ac1e - openapi: fix /add_url 2019-06-03 12:05:08 +03:00
Simon Zolin
e4532a27cd - openapi: correct format 2019-06-03 11:21:57 +03:00
Simon Zolin
302a11a6a3 Merge: - fix tests and linter issues
* commit 'b8d9ca942c23b37133dbb894d42a8b3f310a86a1':
  - app: fix crash on starting DNS server after installation
  - fix tests and linter issues
2019-05-31 18:49:07 +03:00
Simon Zolin
b8d9ca942c - app: fix crash on starting DNS server after installation 2019-05-31 16:39:18 +03:00
Ildar Kamalov
df9864ec00 * client: replace favicon.ico with favicon.png 2019-05-31 16:36:48 +03:00
Simon Zolin
3baa6919dc - fix tests and linter issues 2019-05-31 12:27:13 +03:00
Ildar Kamalov
02db488b30 + client: handle access settings 2019-05-30 18:45:56 +03:00
Simon Zolin
821ad3edd9 * go.mod: update dnsproxy 2019-05-30 18:22:29 +03:00
Simon Zolin
d18c222b1a + control: /access/list, /access/set handlers 2019-05-30 18:21:56 +03:00
Simon Zolin
36ffcf7d22 + dnsforward: add access settings for blocking DNS requests
Block by client IP or target domain name.
2019-05-30 18:21:36 +03:00
Simon Zolin
147344afa3 Merge: - dns: fix crash (rDNS)
* commit '1abd9da27d7ced46a92e2b0cb85224a1d7d9025b':
  - dns: fix crash (rDNS)
2019-05-29 12:50:04 +03:00
Simon Zolin
1abd9da27d - dns: fix crash (rDNS) 2019-05-28 19:51:49 +03:00
Simon Zolin
d9e70f5244 Merge: + DHCP: Support statically configured leases
Close #687

* commit 'b1fbd7c40c640eef575e6c2babc7eab26a525cf8':
  * openapi: add new dhcp methods
  * client: fix page scrolling on adding/deleting leases
  + client: handle static leases form
  + client: add table to show static leases
  + doc: DHCP static leases
  * dhcpd: refactor: use separate objects for ServerConfig and RWMutex
  + dhcp: /dhcp/status: return static leases
  * dhcpd: minor improvements
  * control: refactor: move DHCP lease -> json convertor to a separate function
  + dhcp: /dhcp/add_static_lease, /dhcp/remove_static_lease: control static lease table
  + helpers: parseIPv4()
  * control: use new DHCP functions: CheckConfig, Init, Start
  * control,dhcp: use dhcpServerConfigJSON struct
  + dhcpd: CheckConfig()
  * dhcpd: move code from Start() to Init()
2019-05-28 19:34:42 +03:00
Simon Zolin
a1ceb83da0 Merge: + clients: find DNS client's hostname by IP using rDNS
Close #706

* commit 'a12f01793ff97e0ea53bc6f751bee758d1df6bb2':
  + clients: find DNS client's hostname by IP using rDNS
2019-05-28 19:33:30 +03:00
Simon Zolin
a12f01793f + clients: find DNS client's hostname by IP using rDNS 2019-05-28 19:07:57 +03:00
Simon Zolin
b1fbd7c40c * openapi: add new dhcp methods 2019-05-28 19:01:24 +03:00
Ildar Kamalov
2976726f99 * client: fix page scrolling on adding/deleting leases 2019-05-28 19:01:24 +03:00
Ildar Kamalov
6f2503a09f + client: handle static leases form 2019-05-28 19:01:24 +03:00
Ildar Kamalov
a8384c004e + client: add table to show static leases 2019-05-28 19:01:24 +03:00
Simon Zolin
49b91b4fc9 + doc: DHCP static leases 2019-05-28 19:01:24 +03:00
Simon Zolin
fa47fa3f9c * dhcpd: refactor: use separate objects for ServerConfig and RWMutex 2019-05-28 19:01:24 +03:00
Simon Zolin
763b986955 + dhcp: /dhcp/status: return static leases 2019-05-28 18:59:15 +03:00
Simon Zolin
342699d933 * dhcpd: minor improvements 2019-05-28 18:59:15 +03:00
Simon Zolin
fd593f5282 * control: refactor: move DHCP lease -> json convertor to a separate function 2019-05-28 18:59:15 +03:00
Simon Zolin
725aeeb910 + dhcp: /dhcp/add_static_lease, /dhcp/remove_static_lease: control static lease table 2019-05-28 18:59:15 +03:00
Simon Zolin
564a41d598 + helpers: parseIPv4() 2019-05-28 18:59:15 +03:00
Simon Zolin
c3204664c3 * control: use new DHCP functions: CheckConfig, Init, Start 2019-05-28 18:59:15 +03:00
Simon Zolin
626c1ae753 * control,dhcp: use dhcpServerConfigJSON struct 2019-05-28 18:59:15 +03:00
Simon Zolin
cc366495d3 + dhcpd: CheckConfig() 2019-05-28 18:59:15 +03:00
Simon Zolin
0d405c0af8 * dhcpd: move code from Start() to Init() 2019-05-28 18:59:15 +03:00
Simon Zolin
c038e4cf14 Merge: + Per-client settings
Close #727

* commit 'a83bc5eeeb4107f2157443b7b40636036fe2a7cc':
  * client: add source column
  * client: remove redundant table formatting for runtime clients table
  * client: show MAC address as default
  + client: add runtime clients table
  * client: add icons for table buttons
  * client: remove unused api method
  * client: confirm before deleting
  * client: remove table column min-width
  * client: fix no data text
  * client: fix sort helper
  + client: handle per-client settings
  - openapi.yaml: fix HTTP methods
  + openapi.yaml: add /clients handlers
  + dnsfilter: use callback function for applying per-client settings
  + dhcp: FindIPbyMAC()
  + dns: use per-client filtering settings
  + clients: config: save/restore clients info array
  + clients API
  + doc: clients
2019-05-28 18:52:51 +03:00
Ildar Kamalov
a83bc5eeeb * client: add source column 2019-05-28 18:44:27 +03:00
Ildar Kamalov
702db84e39 * client: remove redundant table formatting for runtime clients table 2019-05-28 18:44:27 +03:00
Ildar Kamalov
9cc824d852 * client: show MAC address as default 2019-05-28 18:44:27 +03:00
Ildar Kamalov
8a8c7329f7 + client: add runtime clients table 2019-05-28 18:44:27 +03:00
Ildar Kamalov
cbef338592 * client: add icons for table buttons 2019-05-28 18:44:27 +03:00
Ildar Kamalov
bd2c4269db * client: remove unused api method 2019-05-28 18:44:27 +03:00
Ildar Kamalov
f40141bbbc * client: confirm before deleting 2019-05-28 18:44:27 +03:00
Ildar Kamalov
c7b5830336 * client: remove table column min-width 2019-05-28 18:44:27 +03:00
Ildar Kamalov
bb34381a0d * client: fix no data text 2019-05-28 18:44:27 +03:00
Ildar Kamalov
68a4cc597f * client: fix sort helper 2019-05-28 18:44:27 +03:00
Ildar Kamalov
22d3c38df2 + client: handle per-client settings 2019-05-28 18:44:27 +03:00
Simon Zolin
22c7efd2d1 - openapi.yaml: fix HTTP methods 2019-05-28 18:44:27 +03:00
Simon Zolin
eb159e6997 + openapi.yaml: add /clients handlers 2019-05-28 18:44:27 +03:00
Simon Zolin
8bf76c331d + dnsfilter: use callback function for applying per-client settings 2019-05-28 18:44:27 +03:00
Simon Zolin
4bb7b654ab + dhcp: FindIPbyMAC() 2019-05-28 18:44:27 +03:00
Simon Zolin
3f89335ed2 + dns: use per-client filtering settings 2019-05-28 18:44:27 +03:00
Simon Zolin
8f7aff93d7 + clients: config: save/restore clients info array 2019-05-28 18:44:27 +03:00
Simon Zolin
5fb7e44e79 + clients API
* /clients handler: new format
+ /clients/add handler
+ /clients/delete handler
+ /clients/update handler
2019-05-28 18:44:27 +03:00
Simon Zolin
6a7b1aba8b + doc: clients 2019-05-28 18:44:27 +03:00
Simon Zolin
218f51092c Merge: + app: disable new version check and auto-update by command line switch
Close #778

* commit '9f75146eaba9d9a3ce085c884d7f18a2c628dc50':
  * client: check for empty versions response
  * docker: use --no-check-update
  * openapi: update /version.json description
  + app: disable new version check and auto-update by command line switch
2019-05-28 18:18:40 +03:00
Ildar Kamalov
9f75146eab * client: check for empty versions response 2019-05-28 15:22:48 +03:00
Simon Zolin
6ab8aa4da1 * docker: use --no-check-update 2019-05-28 11:42:50 +03:00
Simon Zolin
386886cec2 Merge: * control: 🚑 Corrects typo in parental control API error message
Close #781

* commit '517ebc0251d6bfe43b7b4d31c7c4e7e91ea928fa':
  🚑 Corrects typo in parental control API error message
2019-05-28 11:42:12 +03:00
Simon Zolin
5b29cae133 * openapi: update /version.json description 2019-05-28 11:41:36 +03:00
Simon Zolin
4df8868787 Merge: * dnsfilter: parental/safebrowsing: add setting to switch between HTTP and HTTPS #646
* commit 'f23507a5546229d8ce8f69d56667cd5212f026d3':
  * dnsfilter: parental/safebrowsing: add setting to switch between HTTP and HTTPS
2019-05-28 11:31:51 +03:00
Franck Nijhof
517ebc0251 🚑 Corrects typo in parental control API error message 2019-05-27 22:51:51 +02:00
Simon Zolin
f25639f1fc + app: disable new version check and auto-update by command line switch 2019-05-27 18:48:33 +03:00
Simon Zolin
f23507a554 * dnsfilter: parental/safebrowsing: add setting to switch between HTTP and HTTPS 2019-05-27 18:11:05 +03:00
Simon Zolin
b9df476c5d Merge: dnsforward: support IPv6
Close #735

* commit 'e2579c72bdcafed41d5be1250fb38aeda0a8184e':
  * dnsfilter: fix tests
  + dnsforward: support IPv6 (AAAA response)
  * dnsfilter: return the correct IP address (host rules)
2019-05-27 12:35:31 +03:00
Simon Zolin
e2579c72bd * dnsfilter: fix tests 2019-05-24 18:08:08 +03:00
Simon Zolin
ac8f703407 + dnsforward: support IPv6 (AAAA response)
If question type is AAAA:
 Before this patch we responded with NXDOMAIN.
 Now we send an empty response if host rule is IPv4;
 or we send an AAAA answer if host rule is IPv6.

+ block ipv6 if rule is "0.0.0.0 blockdomain"
2019-05-24 18:08:08 +03:00
Simon Zolin
9ad4bba9ab * dnsfilter: return the correct IP address (host rules) 2019-05-24 18:08:08 +03:00
Simon Zolin
452c930dd0 Merge: * dnsfilter: use 'https' for safe-browsing and parental control
Close #646

* commit '00e1b6ca089705e7fdb4764133058e04111e36df':
  * dnsfilter: use 'https' for safe-browsing and parental control
2019-05-24 18:03:00 +03:00
Simon Zolin
fdd0f594fb Merge: - control: allow requests to "/favicon.ico" while we are in install mode
Close #766

* commit 'dece393d6acfa21f588505e494eb1225adc8376a':
  - control: allow requests to "/favicon.ico" while we are in install mode
2019-05-24 18:02:07 +03:00
Simon Zolin
00e1b6ca08 * dnsfilter: use 'https' for safe-browsing and parental control 2019-05-23 17:26:50 +03:00
Simon Zolin
dece393d6a - control: allow requests to "/favicon.ico" while we are in install mode 2019-05-23 16:28:20 +03:00
Simon Zolin
aa2d942783 Merge: Update by command from UI
Close #428

* commit '70e329956776cc381fdb28805375d5b2f0e22dbf':
  * openapi: update
  * client: add link to the update error
  * client: add update timeout
  * client: add error message if update failed
  + client: handle update
  * go linter
  * control: /version.json: use new JSON format
  + set config.runningAsService
  * app: --help: more pretty help info
  + app: add --check-config command-line argument
  * app: optimize config file reading
  + /control/update handler
  * control: don't use custom resolver for tests
  + doc: Update algorithm
  - control: fix race in /control/version.json handler
2019-05-20 13:38:23 +03:00
Simon Zolin
e3ee7a0c3e Merge: dnsfilter: use urlfilter package #714
* commit '096a95998749b673bc9be638bc9c8f6f0d13be41':
  * dnsforward: use new dnsfilter interface
  * dnsfilter: adapt tests to new interface
  * dnsfilter: use urlfilter package
  * dnsfilter: remove code for filtering rules
  * dns: rename dnsfilter.Filter.Rule -> dnsfilter.Filter.Data
  * dnsforward: use separate ServerConfig object
  * use urlfilter
2019-05-20 11:00:45 +03:00
Simon Zolin
70e3299567 * openapi: update 2019-05-20 10:57:07 +03:00
Ildar Kamalov
967517316f * client: add link to the update error 2019-05-17 18:33:34 +03:00
Ildar Kamalov
24f582d36d * client: add update timeout 2019-05-17 18:33:34 +03:00
Ildar Kamalov
9cffe865ec * client: add error message if update failed 2019-05-17 18:33:34 +03:00
Ildar Kamalov
cb3f7f2834 + client: handle update 2019-05-17 18:33:34 +03:00
Simon Zolin
096a959987 * dnsforward: use new dnsfilter interface 2019-05-17 18:22:57 +03:00
Simon Zolin
5ec747b30b * dnsfilter: adapt tests to new interface 2019-05-17 18:22:57 +03:00
Simon Zolin
829415da5b * dnsfilter: use urlfilter package
+ new config setting 'filtering_temp_filename'

* remove AddRules(), modify New()
2019-05-17 18:22:57 +03:00
Simon Zolin
3396d68019 * dnsfilter: remove code for filtering rules 2019-05-17 18:22:57 +03:00
Simon Zolin
bd68bf2e25 * dns: rename dnsfilter.Filter.Rule -> dnsfilter.Filter.Data 2019-05-17 18:22:57 +03:00
Simon Zolin
9644f79a03 * dnsforward: use separate ServerConfig object 2019-05-17 18:22:57 +03:00
Simon Zolin
36e273dfd5 * use urlfilter 2019-05-17 18:22:57 +03:00
Simon Zolin
068072bc5a * go linter 2019-05-17 15:39:56 +03:00
Simon Zolin
b72ca4d127 * control: /version.json: use new JSON format 2019-05-17 15:37:38 +03:00
Simon Zolin
28440fc3ac + set config.runningAsService 2019-05-17 15:37:38 +03:00
Simon Zolin
6d14ec18ac * app: --help: more pretty help info 2019-05-17 15:37:38 +03:00
Simon Zolin
5fd35254a8 + app: add --check-config command-line argument 2019-05-17 15:37:38 +03:00
Simon Zolin
3ee8051e97 * app: optimize config file reading
* read config file just once (even when upgrading)
* don't call os.Stat()
2019-05-17 15:37:38 +03:00
Simon Zolin
2dd6ea5161 + /control/update handler 2019-05-17 15:37:38 +03:00
Simon Zolin
788e91a51e * control: don't use custom resolver for tests 2019-05-17 15:34:55 +03:00
Simon Zolin
d4fcef8d04 + doc: Update algorithm 2019-05-17 15:34:55 +03:00
Simon Zolin
392c7b6ee1 - control: fix race in /control/version.json handler 2019-05-17 10:20:41 +03:00
Simon Zolin
7bb40bca0f Merge: dns query log: robust file flushing mechanism #708
* commit 'd5f6dd1a46446ebb440811691a6ee8ce2443320d':
  - dns query log: robust file flushing mechanism
  * improve logging
2019-05-15 14:08:01 +03:00
Simon Zolin
f20cb65189 Merge: + dnsfilter: cache IP addresses of safebrowsing and parental control servers
Close #745

* commit 'd918e5b418de232d95ba1e3d642dca00664f0304':
  use maxDialCacheSize constant
  rename functions and container
  + dnsfilter: cache IP addresses of safebrowsing and parental control servers
2019-05-15 14:01:01 +03:00
Simon Zolin
d5f6dd1a46 - dns query log: robust file flushing mechanism
Before this patch we could exit the process without waiting for
 file writing task to complete.
As a result a file could become corrupted or a large chunk of data
 could be missing.

Now the main thread either waits until file writing task completes
 or it writes log buffer to file itself.
2019-05-15 13:12:03 +03:00
Simon Zolin
0f28a989e9 * improve logging 2019-05-15 13:12:03 +03:00
Simon Zolin
d918e5b418 use maxDialCacheSize constant 2019-05-15 12:03:20 +03:00
Simon Zolin
3a0f608402 Merge: dnsforward, config: add unspecified IP blocking option
Close #742, #743

* commit 'cd2dd00da300c24a88a51082ee9622a332a5b72b':
  * dnsforward_test: add test for null filter
  * dnsforward, config: add unspecified IP blocking option
2019-05-15 11:58:40 +03:00
Alexander Turcic
cd2dd00da3 * dnsforward_test: add test for null filter 2019-05-14 16:53:09 +03:00
Alexander Turcic
07ffcbec3d * dnsforward, config: add unspecified IP blocking option
* dnsforward: prioritize host files over null filter

* dnsforward, config: adjust setting variable to blocking_mode

* dnsforward: use net.IPv4zero for null IP
2019-05-14 16:53:06 +03:00
Simon Zolin
b3461d37ca rename functions and container 2019-05-13 14:47:55 +03:00
Simon Zolin
2178546e7b Merge: docker: Run as non-root user
Close #720

* commit '68f9ec70fb0f8ff2a73bf382bc15257c367b7967':
  Optimize Docker image layers; comment out runtime user; add sample docker-compose.yml
  Run as non-root user
2019-05-13 14:42:50 +03:00
Simon Zolin
24ae61de3e + dnsfilter: cache IP addresses of safebrowsing and parental control servers 2019-05-13 14:16:07 +03:00
Simon Zolin
68f9ec70fb Merge branch 'docker-improvements' of git://github.com/javabean/AdGuardHome into javabean-docker-improvements 2019-05-13 11:12:21 +03:00
Cédrik LIME
17aa46c4d2 Optimize Docker image layers; comment out runtime user; add sample docker-compose.yml 2019-05-08 21:17:14 +02:00
Ildar Kamalov
a45f0c519e Merge pull request #209 in DNS/adguard-dns from feature/734 to master
* commit '6ac9509d64e82e48bc22ccd23ac3a25776d05565':
  + client: Add a link to the list of known DNS providers to Upstream DNS settings
2019-05-06 09:35:51 +03:00
Ildar Kamalov
2cb2b3585f Merge pull request #208 in DNS/adguard-dns from fix/729 to master
* commit 'd24f208f98c08155282eb3061fd28e2e149e296b':
  - client: fixed values for settings validation
2019-05-06 09:35:42 +03:00
Ildar Kamalov
d24f208f98 - client: fixed values for settings validation
Closes #729
2019-04-28 11:43:15 +03:00
Ildar Kamalov
6ac9509d64 + client: Add a link to the list of known DNS providers to Upstream DNS settings
Closes #734
2019-04-28 11:18:56 +03:00
Simon Zolin
7d2df26335 Merge: Bump version to v0.95-hotfix
* commit 'ae403fb13752df1fcdf33839d0747e44722382db':
  Bump version to v0.95-hotfix
2019-04-24 14:39:52 +03:00
Simon Zolin
ae403fb137 Bump version to v0.95-hotfix 2019-04-24 14:38:00 +03:00
Simon Zolin
e1bb89c393 Merge: dnsfilter: prevent recursion when both parental control and safebrowsing are enabled
Close #732

* commit 'c4e67690f4fcceb055cbea73610b5974855db96f':
  * dnsfilter: don't use global variable for custom resolver function
  - dnsfilter: prevent recursion when both parental control and safebrowsing are enabled
2019-04-24 12:52:16 +03:00
Simon Zolin
c4e67690f4 * dnsfilter: don't use global variable for custom resolver function 2019-04-24 12:49:12 +03:00
Simon Zolin
f6023b395e - dnsfilter: prevent recursion when both parental control and safebrowsing are enabled 2019-04-24 12:38:05 +03:00
Simon Zolin
cedab695c2 Merge: Bump version to v0.95
* commit '1c339e5fcd73a4ce070f7284b1ea7d1b44d63803':
  Bump version to v0.95
2019-04-23 20:28:54 +03:00
Simon Zolin
1c339e5fcd Bump version to v0.95 2019-04-23 20:23:39 +03:00
Andrey Meshkov
4eb910c35e Merge pull request #203 in DNS/adguard-dns from fix/647 to master
* commit 'c6957bed64acd5b2265b8b94bb07f8bb77520084':
  - install: immediately schedule filters update procedure after installation is complete
2019-04-23 20:15:12 +03:00
Simon Zolin
c6957bed64 - install: immediately schedule filters update procedure after installation is complete 2019-04-23 19:56:21 +03:00
Andrey Meshkov
8e6f7be5b8 Merge pull request #202 in DNS/adguard-dns from fix/647 to master
* commit '528c1a72cac331f08de5fdee4538529c70dff1bb':
  - use 127.0.0.1 as a resolver address when DNS binding address is 0.0.0.0
  - app: don't print filter update error messages on first launch before  DNS server is set up
2019-04-23 19:48:05 +03:00
Simon Zolin
528c1a72ca - use 127.0.0.1 as a resolver address when DNS binding address is 0.0.0.0 2019-04-23 19:37:14 +03:00
Simon Zolin
3087c54a15 - app: don't print filter update error messages on first launch before
DNS server is set up
2019-04-23 19:26:51 +03:00
Simon Zolin
5c65d0cabe Merge: various bugfixes
* commit '4231920ee84074e573539c05c53cb357b1a22154':
  * client: add "DuckDuckGo" to safesearch label text
  - dhcp: fix build on macos #704
  - dnsfilter: fix npe in dnsfilter test
  - dnsfilter: fix safesearch issue #268
2019-04-23 16:20:46 +03:00
Simon Zolin
4231920ee8 * client: add "DuckDuckGo" to safesearch label text 2019-04-23 15:25:09 +03:00
Simon Zolin
d5f46f51b8 - dhcp: fix build on macos #704 2019-04-23 15:14:26 +03:00
Aleksey Dmitrevskiy
a860c8e6ff - dnsfilter: fix npe in dnsfilter test 2019-04-23 15:09:23 +03:00
Aleksey Dmitrevskiy
0794704f74 - dnsfilter: fix safesearch issue #268 2019-04-23 15:08:41 +03:00
Simon Zolin
173ab2a3c1 Merge: - /control/dhcp/find_active_dhcp: fix DHCP server detection
Close #704

* commit '68dc8a13411c09cd8c382a1bf986953659166506':
  * control: update "DHCP server not found" message
  * update openapi.yaml
  - /control/dhcp/find_active_dhcp: fix DHCP server detection
2019-04-23 12:29:15 +03:00
Simon Zolin
68dc8a1341 * control: update "DHCP server not found" message 2019-04-23 12:26:14 +03:00
Simon Zolin
043e89a1a4 * update openapi.yaml 2019-04-23 12:26:14 +03:00
Simon Zolin
c5ed6da5bd - /control/dhcp/find_active_dhcp: fix DHCP server detection
Before this patch we couldn't receive incoming DHCP packets.
Now we bind() to 0.0.0.0 and set the required network interface
 using SO_BINDTODEVICE option.

As an improvement, we now wait until a reply to our request is
 received and skip all unknown packets.
2019-04-23 12:26:14 +03:00
Simon Zolin
69c5f175e8 Merge: Installation wizard #685
* commit '79b0fac01a544e35207420fed78e1c2a63d428d8':
  * control: move /install handlers to a separate file
  + add technical document
  * app: move code for http server loop to a separate function
  * client: fixed getDefaultAddresses structure
  - client: npm audit fix
  * client: validate form on load
  * client: installation wizard additional checks
  * update openapi.yaml
  + service install: a post-install guide of what to do next
  * control: /install/configure: validate port number
  * control: /install/configure: reset configuration back to its current state on error
  + control: /install/*: test TCP port availability for DNS server
  + control: /install/check_config: Check and deactivate DNSStubListener
  * control: /install/configure: refactor
  + control: add /install/check_config handler
  * control: /install/get_addresses: don't check if ports are available
  + app: unix, windows: require root user on first launch
  * setRlimit(): move OS-specific code to separate files
2019-04-23 12:16:34 +03:00
Simon Zolin
79b0fac01a * control: move /install handlers to a separate file 2019-04-23 11:48:30 +03:00
Simon Zolin
bc81a0ecff + add technical document 2019-04-23 11:45:09 +03:00
Simon Zolin
1ac9419c94 * app: move code for http server loop to a separate function 2019-04-23 11:41:53 +03:00
Ildar Kamalov
5f88abb322 * client: fixed getDefaultAddresses structure 2019-04-23 11:41:53 +03:00
Ildar Kamalov
33db419384 - client: npm audit fix 2019-04-23 11:41:53 +03:00
Ildar Kamalov
ceabad0fd0 * client: validate form on load 2019-04-23 11:41:53 +03:00
Ildar Kamalov
f76b7c3d94 * client: installation wizard additional checks 2019-04-23 11:41:53 +03:00
Simon Zolin
9e68a522cb * update openapi.yaml 2019-04-23 11:41:53 +03:00
Simon Zolin
faa7c7b2d4 + service install: a post-install guide of what to do next 2019-04-23 11:41:53 +03:00
Simon Zolin
d326d1bc8b * control: /install/configure: validate port number 2019-04-23 11:41:53 +03:00
Simon Zolin
73fbe8b95a * control: /install/configure: reset configuration back to its current state on error 2019-04-23 11:41:53 +03:00
Simon Zolin
87147ac89f + control: /install/*: test TCP port availability for DNS server 2019-04-23 11:41:53 +03:00
Simon Zolin
8d936b5756 + control: /install/check_config: Check and deactivate DNSStubListener 2019-04-23 11:41:53 +03:00
Simon Zolin
4ca24b7707 * control: /install/configure: refactor 2019-04-23 11:41:53 +03:00
Simon Zolin
133dd75ec3 + control: add /install/check_config handler 2019-04-23 11:41:53 +03:00
Simon Zolin
00c128f0a4 * control: /install/get_addresses: don't check if ports are available
* always use port 80
2019-04-23 11:41:53 +03:00
Simon Zolin
e4b53db558 + app: unix, windows: require root user on first launch 2019-04-23 11:41:53 +03:00
Simon Zolin
1611057852 * setRlimit(): move OS-specific code to separate files 2019-04-22 17:41:10 +03:00
Simon Zolin
00ba63341b Merge: Don't use the system default resolver implicitly
Close #647

* commit 'a1b18776678ee894cd0b558cf8683845056a2dfa':
  + parental, safesearch: use our own DNS resolver instead of system default
  + control: use our own DNS resolver instead of system default
2019-04-22 11:28:43 +03:00
Simon Zolin
a1b1877667 + parental, safesearch: use our own DNS resolver instead of system default 2019-04-18 14:31:13 +03:00
Simon Zolin
bebdc1b5bc + control: use our own DNS resolver instead of system default 2019-04-18 12:47:22 +03:00
Cédrik LIME
58868b75af Run as non-root user 2019-04-17 20:48:56 +02:00
Ildar Kamalov
1836e56e6e Merge pull request in DNS/adguard-dns from feature/393 to master
* commit 'f83d026c330ec56b76dc995afabe67bc45f654c7':
  + client: privacy policy link
2019-04-17 18:59:05 +03:00
Ildar Kamalov
f83d026c33 + client: privacy policy link
Closes #393
2019-04-17 15:03:25 +03:00
Alexey Dmitrievskiy
61554ba4e0 Merge: * app, dnsforward: add MinVersion for TLS configs #651
* commit 'c82887d3aa3332cf4d7a7dda22f51b160be306b3':
  * app, dnsforward: add MinVersion for TLS configs
2019-04-17 13:56:20 +03:00
Aleksey Dmitrevskiy
c82887d3aa * app, dnsforward: add MinVersion for TLS configs 2019-04-17 12:02:56 +03:00
Alexey Dmitrievskiy
faeda3f075 Merge: * safesearch: Enfore safe search for duckduckgo #268
* commit 'dfa39293a189f59dfd5da335aa66d80b04568a10':
  Update safesearch.go
  Update safesearch.go
  Update safesearch.go
2019-04-16 18:44:51 +03:00
Alexey Dmitrievskiy
afeadbb454 Merge: increase the default timeout used for downloading filters updates #643
* commit 'c78cee339628c8f91a1c698e731c25d99dec8c8b':
  * control: increase http.Client timeout to 5 minutes
  * control: increase the default timeout used for downloading filters updates
2019-04-16 18:40:44 +03:00
Ildar Kamalov
0e031a4921 Merge pull request in DNS/adguard-dns from fix/710 to master
* commit 'd0942c88c8968b7e410356b1ae89ec7d3e69f2bb':
  * client: replace PUT and DELETE with POST
  * control: replace ensurePUT and ensureDELETE with ensurePOST
2019-04-16 12:19:27 +03:00
Ildar Kamalov
d0942c88c8 * client: replace PUT and DELETE with POST 2019-04-16 12:11:31 +03:00
Ildar Kamalov
794d302ce5 * control: replace ensurePUT and ensureDELETE with ensurePOST 2019-04-16 12:11:12 +03:00
Simon Zolin
7f1f85b08c Merge: + http server: enable gzip compression
Close #626

* commit '3f404bc37e14bbd781f6feb62502a44188b4c7ef':
  + http server: enable gzip compression for /control/querylog
  + http server: enable gzip compression for static documents
2019-04-16 11:11:01 +03:00
Simon Zolin
c8e4f61534 Merge: + config: add "rlimit_nofile" setting - Maximum number of opened fd's per process
* commit '1f1e26f67b00ee4983c65e4e3aabf59a488f687b':
  + config: add "rlimit_nofile" setting - Maximum number of opened fd's per process
2019-04-15 18:34:53 +03:00
Simon Zolin
3f404bc37e + http server: enable gzip compression for /control/querylog 2019-04-15 16:21:12 +03:00
Simon Zolin
7911a24dc8 Merge: app: add '--pidfile FILE' command-line parameter
Close #609

* commit '7746a3e6a9f204e7b7ab498c2f484cf426fb1a18':
  + app: add '--pidfile FILE' command-line parameter
2019-04-15 15:36:22 +03:00
Simon Zolin
7746a3e6a9 + app: add '--pidfile FILE' command-line parameter 2019-04-15 13:41:46 +03:00
Simon Zolin
08bedacf0a Merge: DHCP: check/set static IP
Close #686

* commit '828d3121be807daa8f839dfa7a7ac4ba8a6e7cd8':
  * client: show message if there is no static ip
  * client: rename constant
  * hasStaticIP: use properly named boolean variable
  + client: static_ip warnings
  * client: error text
  * client: disable DHCP check if server enabled and hide errors on disable
  * client: hide error if DHCP enabled and require check DHCP before enabling
  * client: accordion styles
  - client: fix DHCP fields validation
  * client: fix DHCP error message
  + config: set default parameters for DHCP server
  + /control/dhcp/set_config: set static IP
  + /control/dhcp/find_active_dhcp: detect static IP on Linux
  * /control/dhcp/find_active_dhcp: new JSON response format
2019-04-15 12:59:16 +03:00
Ildar Kamalov
74a0938038 Merge pull request in DNS/adguard-dns from fix/700 to master
* commit '4d217583b099da6a2a2773d0870ab39e36a9b141':
  - client: validate encryption if enabled
2019-04-11 09:56:49 +03:00
Ildar Kamalov
828d3121be * client: show message if there is no static ip 2019-04-05 15:15:56 +03:00
Ildar Kamalov
b6ae539c36 * client: rename constant 2019-04-05 14:32:56 +03:00
Simon Zolin
fa5ff053b7 * hasStaticIP: use properly named boolean variable 2019-04-05 12:47:26 +03:00
Ildar Kamalov
6bf57ae84e + client: static_ip warnings 2019-04-04 17:13:51 +03:00
Ildar Kamalov
472dc0b77d * client: error text 2019-04-04 17:13:51 +03:00
Ildar Kamalov
4b821d67f5 * client: disable DHCP check if server enabled and hide errors on disable 2019-04-04 17:13:51 +03:00
Ildar Kamalov
24fc2957c5 * client: hide error if DHCP enabled and require check DHCP before enabling 2019-04-04 17:13:51 +03:00
Ildar Kamalov
6ba0e4686a * client: accordion styles 2019-04-04 17:13:51 +03:00
Ildar Kamalov
b92fb34f37 - client: fix DHCP fields validation 2019-04-04 17:13:51 +03:00
Ildar Kamalov
ffd9f1aaa9 * client: fix DHCP error message 2019-04-04 17:13:51 +03:00
Simon Zolin
d43290fe31 + config: set default parameters for DHCP server 2019-04-04 17:13:51 +03:00
Simon Zolin
ef22a31a93 + /control/dhcp/set_config: set static IP 2019-04-04 17:13:51 +03:00
Simon Zolin
0ed619c9c8 + /control/dhcp/find_active_dhcp: detect static IP on Linux 2019-04-04 17:13:51 +03:00
Simon Zolin
8b6e9ef5f9 * /control/dhcp/find_active_dhcp: new JSON response format 2019-04-04 17:13:51 +03:00
Simon Zolin
cca61a33c6 + http server: enable gzip compression for static documents 2019-04-04 16:58:31 +03:00
Ildar Kamalov
4d217583b0 - client: validate encryption if enabled
Closes #700
2019-04-04 14:54:57 +03:00
Aleksey Dmitrevskiy
c78cee3396 * control: increase http.Client timeout to 5 minutes 2019-04-04 11:04:14 +03:00
Ildar Kamalov
b453d9f41d Merge pull request in DNS/adguard-dns from fix/688 to master
* commit 'e231230f1b2045b705602b2c9d3a14c47f276273':
  - client: fixed leases table on mobile
2019-04-03 12:35:06 +03:00
Ildar Kamalov
e231230f1b - client: fixed leases table on mobile
Closes #688
2019-04-02 13:59:03 +03:00
Aleksey Dmitrevskiy
850e856e6e * control: increase the default timeout used for downloading filters updates 2019-04-01 11:30:26 +03:00
Ildar Kamalov
d6b83d4a63 Merge pull request #187 in DNS/adguard-dns from fix/655 to master
* commit '0c973334be33c77e509676d65394d99ead4b26e2':
  * client: if 0.0.0.0 is selected, then redirect to the current IP
2019-03-29 17:38:02 +03:00
Ildar Kamalov
0c973334be * client: if 0.0.0.0 is selected, then redirect to the current IP
Closes #655
2019-03-29 16:24:59 +03:00
Ildar Kamalov
23ac1726b7 Merge pull request #184 in DNS/adguard-dns from fix/660 to master
* commit '91af0cddcea531dfb7972f56371edf17ef763065':
  - client: header links overflow
  - client: fix settings page if current interface doesn't exist
  - client: request version after DNS status request
  - client: fixed Chrome translation popup issue with Portuguese
  - client: missed translation
2019-03-28 13:59:56 +03:00
Simon Zolin
1f1e26f67b + config: add "rlimit_nofile" setting - Maximum number of opened fd's per process 2019-03-28 13:56:12 +03:00
Ildar Kamalov
91af0cddce - client: header links overflow 2019-03-28 12:28:57 +03:00
Ildar Kamalov
6f014fa53d - client: fix settings page if current interface doesn't exist
Closes #664
2019-03-28 11:53:39 +03:00
Ildar Kamalov
6f2e852e09 - client: request version after DNS status request
Closes #660
2019-03-28 11:45:31 +03:00
Ildar Kamalov
fd82e7c26a - client: fixed Chrome translation popup issue with Portuguese
Closes #656
2019-03-28 11:44:10 +03:00
Ildar Kamalov
2bb5b24d4e - client: missed translation
Closes #652
2019-03-28 11:43:26 +03:00
Simon Zolin
92e70515ae Merge: filter: name was reset after an update
close #661

* commit '3367b9fb2a5e541766fa00a68b72121ac00efcff':
  - filter: name was reset after an update
2019-03-27 14:14:37 +03:00
Simon Zolin
51aec7cbbc Merge: Bump version to v0.94
* commit '395ddb7b3caf97c4c281badf0882dc3baf7f3b88':
  Bump version to v0.94
2019-03-27 11:36:21 +03:00
Simon Zolin
3367b9fb2a - filter: name was reset after an update
After filter is updated its name is reset to the value of Title from
 the filter's contents, which may be ""
2019-03-26 19:04:50 +03:00
Johann Richard
dfa39293a1 Update safesearch.go
* Beautify again with`gofmt -s`
2019-03-24 19:34:29 +01:00
Johann Richard
65364930f7 Update safesearch.go
* Beautify the addition
2019-03-24 19:26:40 +01:00
Johann Richard
53ea2d28cf Update safesearch.go
* Add SafeSearch for duckduckgo.com
2019-03-24 19:24:31 +01:00
420 changed files with 86680 additions and 34065 deletions

40
.dockerignore Normal file
View File

@@ -0,0 +1,40 @@
.DS_Store
/.git
/.github
/.vscode
.idea
/AdGuardHome
/AdGuardHome.exe
/AdGuardHome.yaml
/AdGuardHome.log
/data
/build
/dist
/client/node_modules
/.gitattributes
/.gitignore
/.goreleaser.yml
/changelog.config.js
/coverage.txt
/Dockerfile
/LICENSE.txt
/Makefile
/querylog.json
/querylog.json.1
/*.md
# Test output
dnsfilter/tests/top-1m.csv
dnsfilter/tests/dnsfilter.TestLotsOfRules*.pprof
# Snapcraft build temporary files
*.snap
launchpad_credentials
snapcraft_login
snapcraft.yaml.bak
# IntelliJ IDEA project files
*.iml
# Packr
*-packr.go

12
.githooks/pre-commit Executable file
View File

@@ -0,0 +1,12 @@
#!/bin/bash
set -e;
git diff --cached --name-only | grep -q '.js$' && make lint-js;
found=0
git diff --cached --name-only | grep -q '.go$' && found=1
if [ $found == 1 ]; then
make lint-go || exit 1
go test ./... || exit 1
fi
exit 0;

47
.github/ISSUE_TEMPLATE/Bug_report.md vendored Normal file
View File

@@ -0,0 +1,47 @@
---
name: Bug report
about: Create a bug report to help us improve AdGuard Home
---
<!-- As an open-source project with a dedicated but small maintainer team, it can sometimes take a long time for issues to be addressed so please be patient and we will get back to you as soon as we can.
-->
### Prerequisites
Please answer the following questions for yourself before submitting an issue. **YOU MAY DELETE THE PREREQUISITES SECTION.**
- [ ] I am running the latest version
- [ ] I checked the documentation and found no answer
- [ ] I checked to make sure that this issue has not already been filed
### Issue Details
<!--- Please include all relevant details about the environment you experienced the bug in -->
* **Version of AdGuard Home server:**
* <!-- (e.g. v1.0) -->
* **How did you setup DNS configuration:**
* <!-- (System/Router/IoT) -->
* **If it's a router or IoT, please write device model:**
* <!-- (e.g. Raspberry Pi 3 Model B) -->
* **Operating system and version:**
* <!-- (e.g. Ubuntu 18.04.1) -->
### Expected Behavior
<!-- A clear and concise description of what you expected to happen. -->
### Actual Behavior
<!-- A clear and concise description of what actually happened. -->
### Screenshots
<!-- If applicable, add screenshots to help explain your problem. -->
<details><summary>Screenshot:</summary>
<!--- drag and drop, upload or paste your screenshot to this area-->
</details>
### Additional Information
<!-- Add any other context about the problem here. -->

View File

@@ -0,0 +1,28 @@
---
name: Feature request
about: Suggest an idea for AdGuard Home
---
<!-- As an open-source project with a dedicated but small maintainer team, it can sometimes take a long time for issues to be addressed so please be patient and we will get back to you as soon as we can.
-->
### Prerequisites
Please answer the following questions for yourself before submitting an issue. **YOU MAY DELETE THE PREREQUISITES SECTION.**
- [ ] I am running the latest version
- [ ] I checked the documentation and found no answer
- [ ] I checked to make sure that this issue has not already been filed
### Problem Description
<!-- Is your feature request related to a problem? Please add a clear and concise description of what the problem is. -->
### Proposed Solution
<!-- Describe the solution you'd like in a clear and concise manner -->
### Alternatives Considered
<!-- A clear and concise description of any alternative solutions or features you've considered. -->
### Additional Information
<!-- Add any other context about the problem here. -->

19
.github/stale.yml vendored Normal file
View File

@@ -0,0 +1,19 @@
# Number of days of inactivity before an issue becomes stale
daysUntilStale: 60
# Number of days of inactivity before a stale issue is closed
daysUntilClose: 7
# Issues with these labels will never be considered stale
exemptLabels:
- 'bug'
- 'enhancement'
- 'feature request'
- 'localization'
# Label to use when marking an issue as stale
staleLabel: 'wontfix'
# Comment to post when marking an issue as stale. Set to `false` to disable
markComment: >
This issue has been automatically marked as stale because it has not had
recent activity. It will be closed if no further activity occurs. Thank you
for your contributions.
# Comment to post when closing a stale issue. Set to `false` to disable
closeComment: false

172
.github/workflows/build.yml vendored Normal file
View File

@@ -0,0 +1,172 @@
name: build
env:
GO_VERSION: 1.14
NODE_VERSION: 13
on:
push:
branches:
- '*'
tags:
- v*
pull_request:
jobs:
test:
runs-on: ${{ matrix.os }}
env:
GO111MODULE: on
GOPROXY: https://goproxy.io
strategy:
fail-fast: false
matrix:
os:
- ubuntu-latest
- macOS-latest
- windows-latest
steps:
-
name: Checkout
uses: actions/checkout@v2
with:
fetch-depth: 0
-
name: Set up Go
uses: actions/setup-go@v2
with:
go-version: ${{ env.GO_VERSION }}
-
name: Set up Node
uses: actions/setup-node@v1
with:
node-version: ${{ env.NODE_VERSION }}
-
name: Set up Go modules cache
uses: actions/cache@v2
with:
path: ~/go/pkg/mod
key: ${{ runner.os }}-go-${{ hashFiles('go.sum') }}
restore-keys: |
${{ runner.os }}-go-
-
name: Get npm cache directory
id: npm-cache
run: |
echo "::set-output name=dir::$(npm config get cache)"
-
name: Set up npm cache
uses: actions/cache@v2
with:
path: ${{ steps.npm-cache.outputs.dir }}
key: ${{ runner.os }}-node-${{ hashFiles('client/package-lock.json') }}
restore-keys: |
${{ runner.os }}-node-
-
name: Run make ci
shell: bash
run: |
make ci
-
name: Upload coverage
uses: codecov/codecov-action@v1
if: success() && matrix.os == 'ubuntu-latest'
with:
token: ${{ secrets.CODECOV_TOKEN }}
file: ./coverage.txt
app:
runs-on: ubuntu-latest
needs: test
steps:
-
name: Checkout
uses: actions/checkout@v2
with:
fetch-depth: 0
-
name: Set up Go
uses: actions/setup-go@v2
with:
go-version: ${{ env.GO_VERSION }}
-
name: Set up Node
uses: actions/setup-node@v1
with:
node-version: ${{ env.NODE_VERSION }}
-
name: Set up Go modules cache
uses: actions/cache@v2
with:
path: ~/go/pkg/mod
key: ${{ runner.os }}-go-${{ hashFiles('go.sum') }}
restore-keys: |
${{ runner.os }}-go-
-
name: Get npm cache directory
id: npm-cache
run: |
echo "::set-output name=dir::$(npm config get cache)"
-
name: Set up node_modules cache
uses: actions/cache@v2
with:
path: ${{ steps.npm-cache.outputs.dir }}
key: ${{ runner.os }}-node-${{ hashFiles('client/package-lock.json') }}
restore-keys: |
${{ runner.os }}-node-
-
name: Set up Snapcraft
run: |
sudo apt-get -yq --no-install-suggests --no-install-recommends install snapcraft
-
name: Set up GoReleaser
run: |
curl -sfL https://install.goreleaser.com/github.com/goreleaser/goreleaser.sh | BINDIR="$(go env GOPATH)/bin" sh
-
name: Run snapshot build
run: |
make release
docker:
runs-on: ubuntu-latest
needs: test
steps:
-
name: Set up Docker Buildx
uses: crazy-max/ghaction-docker-buildx@v1
-
name: Checkout
uses: actions/checkout@v2
with:
fetch-depth: 0
-
name: Docker Buildx (build)
run: |
make docker-multi-arch
-
name: Clear
if: always() && startsWith(github.ref, 'refs/tags/v')
run: |
rm -f ${HOME}/.docker/config.json
notify:
needs: [app, docker]
# Secrets are not passed to workflows that are triggered by a pull request from a fork
if: ${{ github.event_name == 'push' || github.event.pull_request.head.repo.full_name == github.repository }}
runs-on: ubuntu-latest
steps:
-
name: Conclusion
uses: technote-space/workflow-conclusion-action@v1
-
name: Send Slack notif
uses: 8398a7/action-slack@v3
with:
status: ${{ env.WORKFLOW_CONCLUSION }}
fields: repo,message,commit,author
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}

47
.github/workflows/lint.yml vendored Normal file
View File

@@ -0,0 +1,47 @@
name: golangci-lint
on:
push:
tags:
- v*
branches:
- '*'
pull_request:
jobs:
golangci:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: golangci-lint
uses: golangci/golangci-lint-action@v1
with:
# Required: the version of golangci-lint is required and must be specified without patch version: we always use the latest patch version.
version: v1.27
eslint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Install modules
run: npm --prefix client ci
- name: Run ESLint
run: npm --prefix client run lint
notify:
needs: [golangci,eslint]
# Secrets are not passed to workflows that are triggered by a pull request from a fork
if: ${{ github.event_name == 'push' || github.event.pull_request.head.repo.full_name == github.repository }}
runs-on: ubuntu-latest
steps:
-
name: Conclusion
uses: technote-space/workflow-conclusion-action@v1
-
name: Send Slack notif
uses: 8398a7/action-slack@v3
with:
status: ${{ env.WORKFLOW_CONCLUSION }}
fields: repo,message,commit,author
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}

20
.gitignore vendored
View File

@@ -1,6 +1,6 @@
.DS_Store
/.vscode
/.idea
.idea
/AdGuardHome
/AdGuardHome.exe
/AdGuardHome.yaml
@@ -11,10 +11,20 @@
/client/node_modules/
/querylog.json
/querylog.json.1
/scripts/translations/node_modules
/scripts/translations/oneskyapp.json
/a_main-packr.go
coverage.txt
# Test output
dnsfilter/tests/top-1m.csv
dnsfilter/tests/dnsfilter.TestLotsOfRules*.pprof
dnsfilter/tests/dnsfilter.TestLotsOfRules*.pprof
# Snapcraft build temporary files
*.snap
launchpad_credentials
snapcraft_login
snapcraft.yaml.bak
# IntelliJ IDEA project files
*.iml
# Packr
*-packr.go

View File

@@ -13,6 +13,11 @@ run:
skip-files:
- ".*generated.*"
- dnsfilter/rule_to_regexp.go
- util/pprof.go
- ".*_test.go"
- client/.*
- build/.*
- dist/.*
# all available settings of specific linters
@@ -28,16 +33,26 @@ linters-settings:
line-length: 200
linters:
enable-all: true
disable:
- interfacer
- gocritic
- scopelint
- gochecknoglobals
- gochecknoinits
- prealloc
- maligned
- goconst # disabled until it's possible to configure
enable:
- deadcode
- errcheck
- govet
- ineffassign
- staticcheck
- structcheck
- unused
- varcheck
- bodyclose
- depguard
- dupl
- gocyclo
- goimports
- golint
- gosec
- misspell
- stylecheck
- unconvert
disable-all: true
fast: true
issues:
@@ -53,4 +68,12 @@ issues:
- Error return value of .s.closeConn. is not checked
- Error return value of ..*.Shutdown.
# goconst
- string .forcesafesearch.google.com. has 3 occurrences
- string .forcesafesearch.google.com. has 3 occurrences
# gosec: Profiling endpoint is automatically exposed on /debug/pprof
- G108
# gosec: Subprocess launched with function call as argument or cmd arguments
- G204
# gosec: Potential DoS vulnerability via decompression bomb
- G110
# gosec: Expect WriteFile permissions to be 0600 or less
- G306

View File

@@ -1,29 +0,0 @@
{
"Vendor": true,
"Test": true,
"Deadline": "2m",
"Sort": ["linter", "severity", "path", "line"],
"Exclude": [
".*generated.*",
"dnsfilter/rule_to_regexp.go"
],
"EnableGC": true,
"Linters": {
"nakedret": {
"Command": "nakedret",
"Pattern": "^(?P<path>.*?\\.go):(?P<line>\\d+)\\s*(?P<message>.*)$"
}
},
"WarnUnmatchedDirective": true,
"EnableAll": true,
"DisableAll": false,
"Disable": [
"maligned",
"goconst",
"vetshadow"
],
"Cyclo": 20,
"LineLength": 200
}

100
.goreleaser.yml Normal file
View File

@@ -0,0 +1,100 @@
project_name: AdGuardHome
env:
- GO111MODULE=on
- GOPROXY=https://goproxy.io
before:
hooks:
- go mod download
- go generate ./...
builds:
- main: ./main.go
ldflags:
- -s -w -X main.version={{.Version}} -X main.channel={{.Env.CHANNEL}} -X main.goarm={{.Env.GOARM}}
env:
- CGO_ENABLED=0
goos:
- darwin
- linux
- freebsd
- windows
goarch:
- 386
- amd64
- arm
- arm64
- mips
- mipsle
- mips64
- mips64le
goarm:
- 5
- 6
- 7
gomips:
- softfloat
ignore:
- goos: freebsd
goarch: mips
- goos: freebsd
goarch: mipsle
archives:
- # Archive name template.
# Defaults:
# - if format is `tar.gz`, `tar.xz`, `gz` or `zip`:
# - `{{ .ProjectName }}_{{ .Version }}_{{ .Os }}_{{ .Arch }}{{ if .Arm }}v{{ .Arm }}{{ end }}{{ if .Mips }}_{{ .Mips }}{{ end }}`
# - if format is `binary`:
# - `{{ .Binary }}_{{ .Version }}_{{ .Os }}_{{ .Arch }}{{ if .Arm }}v{{ .Arm }}{{ end }}{{ if .Mips }}_{{ .Mips }}{{ end }}`
name_template: "{{ .ProjectName }}_{{ .Os }}_{{ .Arch }}{{ if .Arm }}v{{ .Arm }}{{ end }}{{ if .Mips }}_{{ .Mips }}{{ end }}"
wrap_in_directory: "AdGuardHome"
format_overrides:
- goos: windows
format: zip
- goos: darwin
format: zip
files:
- LICENSE.txt
- README.md
snapcrafts:
- name: adguard-home
base: core18
name_template: '{{ .ProjectName }}_{{ .Arch }}{{ if .Arm }}v{{ .Arm }}{{ end }}'
summary: Network-wide ads & trackers blocking DNS server
description: |
AdGuard Home is a network-wide software for blocking ads & tracking. After
you set it up, it'll cover ALL your home devices, and you don't need any
client-side software for that.
It operates as a DNS server that re-routes tracking domains to a "black hole,"
thus preventing your devices from connecting to those servers. It's based
on software we use for our public AdGuard DNS servers -- both share a lot
of common code.
grade: stable
confinement: strict
publish: false
license: GPL-3.0
extra_files:
- source: scripts/snap/local/adguard-home-web.sh
destination: adguard-home-web.sh
mode: 0755
- source: scripts/snap/gui/adguard-home-web.desktop
destination: meta/gui/adguard-home-web.desktop
mode: 0644
- source: scripts/snap/gui/adguard-home-web.png
destination: meta/gui/adguard-home-web.png
mode: 0644
apps:
adguard-home:
command: AdGuardHome -w $SNAP_DATA --no-check-update
plugs: [ network-bind ]
daemon: simple
adguard-home-web:
command: adguard-home-web.sh
plugs: [ desktop ]
checksum:
name_template: 'checksums.txt'

View File

@@ -1,81 +0,0 @@
language: go
sudo: false
go:
- 1.12.x
- 1.x
os:
- linux
- osx
before_install:
- nvm install node
- npm install -g npm
install:
- npm --prefix client install
cache:
directories:
- $HOME/.cache/go-build
- $HOME/gopath/pkg/mod
- $HOME/Library/Caches/go-build
script:
- node -v
- npm -v
# Run tests
- go test -race -v -bench=. -coverprofile=coverage.txt -covermode=atomic ./...
# Make
- make build/static/index.html
- make
after_success:
- bash <(curl -s https://codecov.io/bash)
matrix:
include:
# Release build configuration
- name: release
go:
- 1.12.x
os:
- linux
script:
- node -v
- npm -v
# Run tests just in case
- go test -race -v -bench=. ./...
# Prepare releases
- ./release.sh
- ls -l dist
deploy:
provider: releases
api_key: $GITHUB_TOKEN
file:
- dist/AdGuardHome_*
on:
repo: AdguardTeam/AdGuardHome
tags: true
draft: true
file_glob: true
skip_cleanup: true
- name: docker
if: type != pull_request AND (branch = master OR tag IS present)
go:
- 1.12.x
os:
- linux
services:
- docker
before_script:
- nvm install node
- npm install -g npm
script:
- docker login -u="$DOCKER_USER" -p="$DOCKER_PASSWORD"
- ./build_docker.sh
after_script:
- docker images

38
.twosky.json Normal file
View File

@@ -0,0 +1,38 @@
[
{
"project_id": "home",
"base_locale": "en",
"localizable_files": ["client/src/__locales/en.json"],
"languages": {
"da": "Dansk",
"de": "Deutsch",
"nl": "Dutch",
"en": "English",
"es": "Español",
"fr": "Français",
"hr": "Hrvatski",
"id": "Indonesian",
"it": "Italiano",
"no": "Norsk",
"pl": "Polski",
"pt-br": "Português (BR)",
"pt-pt": "Português (PT)",
"ro": "Română",
"sk": "Slovenčina",
"sl": "Slovenščina",
"sr-cs": "Srpski",
"sv": "Svenska",
"vi": "Tiếng Việt",
"tr": "Türkçe",
"cs": "Český",
"bg": "Български",
"ru": "Русский",
"fa": "فارسی",
"ja": "日本語",
"zh-tw": "正體中文",
"zh-cn": "简体中文",
"ko": "한국어",
"th": "ภาษาไทย"
}
}
]

1749
AGHTechDoc.md Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -1,24 +1,78 @@
FROM golang:alpine AS build
FROM --platform=${BUILDPLATFORM:-linux/amd64} tonistiigi/xx:golang AS xgo
FROM --platform=${BUILDPLATFORM:-linux/amd64} golang:1.14-alpine as builder
RUN apk add --update git make build-base npm && \
rm -rf /var/cache/apk/*
ARG BUILD_DATE
ARG VCS_REF
ARG VERSION=dev
ARG CHANNEL=release
WORKDIR /src/AdGuardHome
COPY . /src/AdGuardHome
RUN make
ENV CGO_ENABLED 0
ENV GO111MODULE on
ENV GOPROXY https://goproxy.io
FROM alpine:latest
LABEL maintainer="AdGuard Team <devteam@adguard.com>"
COPY --from=xgo / /
RUN go env
# Update CA certs
RUN apk --no-cache --update add ca-certificates && \
rm -rf /var/cache/apk/* && mkdir -p /opt/adguardhome
RUN apk --update --no-cache add \
build-base \
gcc \
git \
npm \
&& rm -rf /tmp/* /var/cache/apk/*
COPY --from=build /src/AdGuardHome/AdGuardHome /opt/adguardhome/AdGuardHome
WORKDIR /app
EXPOSE 53/tcp 53/udp 67/tcp 67/udp 68/tcp 68/udp 80/tcp 443/tcp 853/tcp 853/udp 3000/tcp
COPY . ./
# Prepare the client code
RUN npm --prefix client ci && npm --prefix client run build-prod
# Download go dependencies
RUN go mod download
RUN go generate ./...
# It's important to place TARGET* arguments here to avoid running npm and go mod download for every platform
ARG TARGETPLATFORM
ARG TARGETOS
ARG TARGETARCH
RUN go build -ldflags="-s -w -X main.version=${VERSION} -X main.channel=${CHANNEL} -X main.goarm=${GOARM}"
FROM --platform=${TARGETPLATFORM:-linux/amd64} alpine:latest
ARG BUILD_DATE
ARG VCS_REF
ARG VERSION
ARG CHANNEL
LABEL maintainer="AdGuard Team <devteam@adguard.com>" \
org.opencontainers.image.created=$BUILD_DATE \
org.opencontainers.image.url="https://adguard.com/adguard-home.html" \
org.opencontainers.image.source="https://github.com/AdguardTeam/AdGuardHome" \
org.opencontainers.image.version=$VERSION \
org.opencontainers.image.revision=$VCS_REF \
org.opencontainers.image.vendor="AdGuard" \
org.opencontainers.image.title="AdGuard Home" \
org.opencontainers.image.description="Network-wide ads & trackers blocking DNS server" \
org.opencontainers.image.licenses="GPL-3.0"
RUN apk --update --no-cache add \
ca-certificates \
libcap \
libressl \
tzdata \
&& rm -rf /tmp/* /var/cache/apk/*
COPY --from=builder --chown=nobody:nogroup /app/AdGuardHome /opt/adguardhome/AdGuardHome
COPY --from=builder --chown=nobody:nogroup /usr/local/go/lib/time/zoneinfo.zip /usr/local/go/lib/time/zoneinfo.zip
RUN /opt/adguardhome/AdGuardHome --version \
&& mkdir -p /opt/adguardhome/conf /opt/adguardhome/work \
&& chown -R nobody: /opt/adguardhome \
&& setcap 'cap_net_bind_service=+eip' /opt/adguardhome/AdGuardHome
EXPOSE 53/tcp 53/udp 67/udp 68/udp 80/tcp 443/tcp 853/tcp 3000/tcp
WORKDIR /opt/adguardhome/work
VOLUME ["/opt/adguardhome/conf", "/opt/adguardhome/work"]
ENTRYPOINT ["/opt/adguardhome/AdGuardHome"]
CMD ["-c", "/opt/adguardhome/conf/AdGuardHome.yaml", "-w", "/opt/adguardhome/work"]
CMD ["-h", "0.0.0.0", "-c", "/opt/adguardhome/conf/AdGuardHome.yaml", "-w", "/opt/adguardhome/work", "--no-check-update"]

View File

@@ -1,16 +0,0 @@
FROM alpine:latest
LABEL maintainer="AdGuard Team <devteam@adguard.com>"
# Update CA certs
RUN apk --no-cache --update add ca-certificates && \
rm -rf /var/cache/apk/* && mkdir -p /opt/adguardhome
COPY ./AdGuardHome /opt/adguardhome/AdGuardHome
EXPOSE 53/tcp 53/udp 67/tcp 67/udp 68/tcp 68/udp 80/tcp 443/tcp 853/tcp 853/udp 3000/tcp
VOLUME ["/opt/adguardhome/conf", "/opt/adguardhome/work"]
ENTRYPOINT ["/opt/adguardhome/AdGuardHome"]
CMD ["-h", "0.0.0.0", "-c", "/opt/adguardhome/conf/AdGuardHome.yaml", "-w", "/opt/adguardhome/work"]

289
Makefile
View File

@@ -1,34 +1,273 @@
GIT_VERSION := $(shell git describe --abbrev=4 --dirty --always --tags)
NATIVE_GOOS = $(shell unset GOOS; go env GOOS)
NATIVE_GOARCH = $(shell unset GOARCH; go env GOARCH)
#
# Available targets
#
# * build -- builds AdGuardHome for the current platform
# * client -- builds client-side code of AdGuard Home
# * client-watch -- builds client-side code of AdGuard Home and watches for changes there
# * docker -- builds a docker image for the current platform
# * clean -- clean everything created by previous builds
# * lint -- run all linters
# * test -- run all unit-tests
# * dependencies -- installs dependencies (go and npm modules)
# * ci -- installs dependencies, runs linters and tests, intended to be used by CI/CD
#
# Building releases:
#
# * release -- builds AdGuard Home distros. CHANNEL must be specified (edge, release or beta).
# * docker-multi-arch -- builds a multi-arch image. If you want it to be pushed to docker hub,
# you must specify:
# * DOCKER_IMAGE_NAME - adguard/adguard-home
# * DOCKER_OUTPUT - type=image,name=adguard/adguard-home,push=true
GOPATH := $(shell go env GOPATH)
JSFILES = $(shell find client -path client/node_modules -prune -o -type f -name '*.js')
STATIC = build/static/index.html
PWD := $(shell pwd)
TARGET=AdGuardHome
BASE_URL="https://static.adguard.com/adguardhome/$(CHANNEL)"
.PHONY: all build clean
# See release target
DIST_DIR=dist
# Update channel. Can be release, beta or edge. Uses edge by default.
CHANNEL ?= edge
# Validate channel
ifneq ($(CHANNEL),release)
ifneq ($(CHANNEL),beta)
ifneq ($(CHANNEL),edge)
$(error CHANNEL value is not valid. Valid values are release,beta or edge)
endif
endif
endif
# goreleaser command depends on the $CHANNEL
GORELEASER_COMMAND=goreleaser release --rm-dist --skip-publish --snapshot
ifneq ($(CHANNEL),edge)
# If this is not an "edge" build, use normal release command
GORELEASER_COMMAND=goreleaser release --rm-dist --skip-publish
endif
# Version properties
COMMIT=$(shell git rev-parse --short HEAD)
TAG_NAME=$(shell git describe --abbrev=0)
RELEASE_VERSION=$(TAG_NAME)
SNAPSHOT_VERSION=$(RELEASE_VERSION)-SNAPSHOT-$(COMMIT)
# Set proper version
VERSION=
ifeq ($(TAG_NAME),$(shell git describe --abbrev=4))
ifeq ($(CHANNEL),edge)
VERSION=$(SNAPSHOT_VERSION)
else
VERSION=$(RELEASE_VERSION)
endif
else
VERSION=$(SNAPSHOT_VERSION)
endif
# Docker target parameters
DOCKER_IMAGE_NAME ?= adguardhome-dev
DOCKER_IMAGE_FULL_NAME = $(DOCKER_IMAGE_NAME):$(VERSION)
DOCKER_PLATFORMS=linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64,linux/386,linux/ppc64le
DOCKER_OUTPUT ?= type=image,name=$(DOCKER_IMAGE_NAME),push=false
BUILD_DATE=$(shell date -u +'%Y-%m-%dT%H:%M:%SZ')
# Docker tags (can be redefined)
DOCKER_TAGS ?=
ifndef DOCKER_TAGS
ifeq ($(CHANNEL),release)
DOCKER_TAGS := --tag $(DOCKER_IMAGE_NAME):latest
endif
ifeq ($(CHANNEL),beta)
DOCKER_TAGS := --tag $(DOCKER_IMAGE_NAME):beta
endif
ifeq ($(CHANNEL),edge)
# Don't set the version tag when pushing to "edge"
DOCKER_IMAGE_FULL_NAME := $(DOCKER_IMAGE_NAME):edge
# DOCKER_TAGS := --tag $(DOCKER_IMAGE_NAME):edge
endif
endif
# Validate docker build arguments
ifndef DOCKER_IMAGE_NAME
$(error DOCKER_IMAGE_NAME value is not set)
endif
.PHONY: all build client client-watch docker lint lint-js lint-go test dependencies clean release docker-multi-arch
all: build
build: $(TARGET)
init:
git config core.hooksPath .githooks
client/node_modules: client/package.json client/package-lock.json
npm --prefix client install
touch client/node_modules
$(STATIC): $(JSFILES) client/node_modules
npm --prefix client run build-prod
$(TARGET): $(STATIC) *.go dhcpd/*.go dnsfilter/*.go dnsforward/*.go
GOOS=$(NATIVE_GOOS) GOARCH=$(NATIVE_GOARCH) GO111MODULE=off go get -v github.com/gobuffalo/packr/...
PATH=$(GOPATH)/bin:$(PATH) packr -z
CGO_ENABLED=0 go build -ldflags="-s -w -X main.VersionString=$(GIT_VERSION)" -asmflags="-trimpath=$(PWD)" -gcflags="-trimpath=$(PWD)"
build: dependencies client
PATH=$(GOPATH)/bin:$(PATH) go generate ./...
CGO_ENABLED=0 go build -ldflags="-s -w -X main.version=$(VERSION) -X main.channel=$(CHANNEL) -X main.goarm=$(GOARM)"
PATH=$(GOPATH)/bin:$(PATH) packr clean
clean:
$(MAKE) cleanfast
rm -rf build
rm -rf client/node_modules
client:
npm --prefix client run build-prod
cleanfast:
rm -f $(TARGET)
client-watch:
npm --prefix client run watch
docker:
DOCKER_CLI_EXPERIMENTAL=enabled \
docker buildx build \
--build-arg VERSION=$(VERSION) \
--build-arg CHANNEL=$(CHANNEL) \
--build-arg VCS_REF=$(COMMIT) \
--build-arg BUILD_DATE=$(BUILD_DATE) \
$(DOCKER_TAGS) \
--load \
-t "$(DOCKER_IMAGE_NAME)" -f ./Dockerfile .
@echo Now you can run the docker image:
@echo docker run --name "adguard-home" -p 53:53/tcp -p 53:53/udp -p 80:80/tcp -p 443:443/tcp -p 853:853/tcp -p 3000:3000/tcp $(DOCKER_IMAGE_NAME)
lint: lint-js lint-go
lint-js:
@echo Running js linter
npm --prefix client run lint
lint-go:
@echo Running go linter
golangci-lint run
test:
@echo Running unit-tests
go test -race -v -bench=. -coverprofile=coverage.txt -covermode=atomic ./...
ci: dependencies client test
dependencies:
npm --prefix client ci
go mod download
clean:
# make build output
rm -f AdGuardHome
rm -f AdGuardHome.exe
# tests output
rm -rf data
rm -f coverage.txt
# static build output
rm -rf build
# dist folder
rm -rf $(DIST_DIR)
# client deps
rm -rf client/node_modules
# packr-generated files
PATH=$(GOPATH)/bin:$(PATH) packr clean || true
docker-multi-arch:
DOCKER_CLI_EXPERIMENTAL=enabled \
docker buildx build \
--platform $(DOCKER_PLATFORMS) \
--build-arg VERSION=$(VERSION) \
--build-arg CHANNEL=$(CHANNEL) \
--build-arg VCS_REF=$(COMMIT) \
--build-arg BUILD_DATE=$(BUILD_DATE) \
$(DOCKER_TAGS) \
--output "$(DOCKER_OUTPUT)" \
-t "$(DOCKER_IMAGE_FULL_NAME)" -f ./Dockerfile .
@echo If the image was pushed to the registry, you can now run it:
@echo docker run --name "adguard-home" -p 53:53/tcp -p 53:53/udp -p 80:80/tcp -p 443:443/tcp -p 853:853/tcp -p 3000:3000/tcp $(DOCKER_IMAGE_NAME)
release: dependencies client
@echo Starting release build: version $(VERSION), channel $(CHANNEL)
CHANNEL=$(CHANNEL) $(GORELEASER_COMMAND)
$(call repack_dist)
$(call write_version_file,$(VERSION))
PATH=$(GOPATH)/bin:$(PATH) packr clean
define write_version_file
$(eval version := $(1))
@echo Writing version file: $(version)
# Variables for CI
rm -f $(DIST_DIR)/version.txt
echo "version=$(version)" > $(DIST_DIR)/version.txt
# Prepare the version.json file
rm -f $(DIST_DIR)/version.json
echo "{" >> $(DIST_DIR)/version.json
echo " \"version\": \"$(version)\"," >> $(DIST_DIR)/version.json
echo " \"announcement\": \"AdGuard Home $(version) is now available!\"," >> $(DIST_DIR)/version.json
echo " \"announcement_url\": \"https://github.com/AdguardTeam/AdGuardHome/releases\"," >> $(DIST_DIR)/version.json
echo " \"selfupdate_min_version\": \"0.0\"," >> $(DIST_DIR)/version.json
# Windows builds
echo " \"download_windows_amd64\": \"$(BASE_URL)/AdGuardHome_windows_amd64.zip\"," >> $(DIST_DIR)/version.json
echo " \"download_windows_386\": \"$(BASE_URL)/AdGuardHome_windows_386.zip\"," >> $(DIST_DIR)/version.json
# MacOS builds
echo " \"download_darwin_amd64\": \"$(BASE_URL)/AdGuardHome_darwin_amd64.zip\"," >> $(DIST_DIR)/version.json
echo " \"download_darwin_386\": \"$(BASE_URL)/AdGuardHome_darwin_386.zip\"," >> $(DIST_DIR)/version.json
# Linux
echo " \"download_linux_amd64\": \"$(BASE_URL)/AdGuardHome_linux_amd64.tar.gz\"," >> $(DIST_DIR)/version.json
echo " \"download_linux_386\": \"$(BASE_URL)/AdGuardHome_linux_386.tar.gz\"," >> $(DIST_DIR)/version.json
# Linux, all kinds of ARM
echo " \"download_linux_arm\": \"$(BASE_URL)/AdGuardHome_linux_armv6.tar.gz\"," >> $(DIST_DIR)/version.json
echo " \"download_linux_armv5\": \"$(BASE_URL)/AdGuardHome_linux_armv5.tar.gz\"," >> $(DIST_DIR)/version.json
echo " \"download_linux_armv6\": \"$(BASE_URL)/AdGuardHome_linux_armv6.tar.gz\"," >> $(DIST_DIR)/version.json
echo " \"download_linux_armv7\": \"$(BASE_URL)/AdGuardHome_linux_armv7.tar.gz\"," >> $(DIST_DIR)/version.json
echo " \"download_linux_arm64\": \"$(BASE_URL)/AdGuardHome_linux_arm64.tar.gz\"," >> $(DIST_DIR)/version.json
# Linux, MIPS
echo " \"download_linux_mips\": \"$(BASE_URL)/AdGuardHome_linux_mips_softfloat.tar.gz\"," >> $(DIST_DIR)/version.json
echo " \"download_linux_mipsle\": \"$(BASE_URL)/AdGuardHome_linux_mipsle_softfloat.tar.gz\"," >> $(DIST_DIR)/version.json
echo " \"download_linux_mips64\": \"$(BASE_URL)/AdGuardHome_linux_mips64_softfloat.tar.gz\"," >> $(DIST_DIR)/version.json
echo " \"download_linux_mips64le\": \"$(BASE_URL)/AdGuardHome_linux_mips64le_softfloat.tar.gz\"," >> $(DIST_DIR)/version.json
# FreeBSD
echo " \"download_freebsd_386\": \"$(BASE_URL)/AdGuardHome_freebsd_386.tar.gz\"," >> $(DIST_DIR)/version.json
echo " \"download_freebsd_amd64\": \"$(BASE_URL)/AdGuardHome_freebsd_amd64.tar.gz\"," >> $(DIST_DIR)/version.json
# FreeBSD, all kinds of ARM
echo " \"download_freebsd_arm\": \"$(BASE_URL)/AdGuardHome_freebsd_armv6.tar.gz\"," >> $(DIST_DIR)/version.json
echo " \"download_freebsd_armv5\": \"$(BASE_URL)/AdGuardHome_freebsd_armv5.tar.gz\"," >> $(DIST_DIR)/version.json
echo " \"download_freebsd_armv6\": \"$(BASE_URL)/AdGuardHome_freebsd_armv6.tar.gz\"," >> $(DIST_DIR)/version.json
echo " \"download_freebsd_armv7\": \"$(BASE_URL)/AdGuardHome_freebsd_armv7.tar.gz\"," >> $(DIST_DIR)/version.json
echo " \"download_freebsd_arm64\": \"$(BASE_URL)/AdGuardHome_freebsd_arm64.tar.gz\"" >> $(DIST_DIR)/version.json
# Finish
echo "}" >> $(DIST_DIR)/version.json
endef
define repack_dist
# Repack archive files
# A temporary solution for our auto-update code to be able to unpack these archive files
# The problem is that goreleaser doesn't add directory AdGuardHome/ to the archive file
# and we can't create it
rm -rf $(DIST_DIR)/AdGuardHome
# Linux
cd $(DIST_DIR) && tar xzf AdGuardHome_linux_amd64.tar.gz && tar czf AdGuardHome_linux_amd64.tar.gz AdGuardHome/ && rm -rf AdGuardHome
cd $(DIST_DIR) && tar xzf AdGuardHome_linux_386.tar.gz && tar czf AdGuardHome_linux_386.tar.gz AdGuardHome/ && rm -rf AdGuardHome
# Linux, all kinds of ARM
cd $(DIST_DIR) && tar xzf AdGuardHome_linux_armv5.tar.gz && tar czf AdGuardHome_linux_armv5.tar.gz AdGuardHome/ && rm -rf AdGuardHome
cd $(DIST_DIR) && tar xzf AdGuardHome_linux_armv6.tar.gz && tar czf AdGuardHome_linux_armv6.tar.gz AdGuardHome/ && rm -rf AdGuardHome
cd $(DIST_DIR) && tar xzf AdGuardHome_linux_armv7.tar.gz && tar czf AdGuardHome_linux_armv7.tar.gz AdGuardHome/ && rm -rf AdGuardHome
cd $(DIST_DIR) && tar xzf AdGuardHome_linux_arm64.tar.gz && tar czf AdGuardHome_linux_arm64.tar.gz AdGuardHome/ && rm -rf AdGuardHome
# Linux, MIPS
cd $(DIST_DIR) && tar xzf AdGuardHome_linux_mips_softfloat.tar.gz && tar czf AdGuardHome_linux_mips_softfloat.tar.gz AdGuardHome/ && rm -rf AdGuardHome
cd $(DIST_DIR) && tar xzf AdGuardHome_linux_mipsle_softfloat.tar.gz && tar czf AdGuardHome_linux_mipsle_softfloat.tar.gz AdGuardHome/ && rm -rf AdGuardHome
cd $(DIST_DIR) && tar xzf AdGuardHome_linux_mips64_softfloat.tar.gz && tar czf AdGuardHome_linux_mips64_softfloat.tar.gz AdGuardHome/ && rm -rf AdGuardHome
cd $(DIST_DIR) && tar xzf AdGuardHome_linux_mips64le_softfloat.tar.gz && tar czf AdGuardHome_linux_mips64le_softfloat.tar.gz AdGuardHome/ && rm -rf AdGuardHome
# FreeBSD
cd $(DIST_DIR) && tar xzf AdGuardHome_freebsd_386.tar.gz && tar czf AdGuardHome_freebsd_386.tar.gz AdGuardHome/ && rm -rf AdGuardHome
cd $(DIST_DIR) && tar xzf AdGuardHome_freebsd_amd64.tar.gz && tar czf AdGuardHome_freebsd_amd64.tar.gz AdGuardHome/ && rm -rf AdGuardHome
# FreeBSD, all kinds of ARM
cd $(DIST_DIR) && tar xzf AdGuardHome_freebsd_armv5.tar.gz && tar czf AdGuardHome_freebsd_armv5.tar.gz AdGuardHome/ && rm -rf AdGuardHome
cd $(DIST_DIR) && tar xzf AdGuardHome_freebsd_armv6.tar.gz && tar czf AdGuardHome_freebsd_armv6.tar.gz AdGuardHome/ && rm -rf AdGuardHome
cd $(DIST_DIR) && tar xzf AdGuardHome_freebsd_armv7.tar.gz && tar czf AdGuardHome_freebsd_armv7.tar.gz AdGuardHome/ && rm -rf AdGuardHome
cd $(DIST_DIR) && tar xzf AdGuardHome_freebsd_arm64.tar.gz && tar czf AdGuardHome_freebsd_arm64.tar.gz AdGuardHome/ && rm -rf AdGuardHome
endef

237
README.md
View File

@@ -14,9 +14,6 @@
<a href="https://twitter.com/AdGuard">Twitter</a> |
<a href="https://t.me/adguard_en">Telegram</a>
<br /><br />
<a href="https://travis-ci.org/AdguardTeam/AdGuardHome">
<img src="https://travis-ci.org/AdguardTeam/AdGuardHome.svg" alt="Build status" />
</a>
<a href="https://codecov.io/github/AdguardTeam/AdGuardHome?branch=master">
<img src="https://img.shields.io/codecov/c/github/AdguardTeam/AdGuardHome/master.svg" alt="Code Coverage" />
</a>
@@ -26,9 +23,19 @@
<a href="https://golangci.com/r/github.com/AdguardTeam/AdGuardHome">
<img src="https://golangci.com/badges/github.com/AdguardTeam/AdGuardHome.svg" alt="GolangCI" />
</a>
<br />
<a href="https://github.com/AdguardTeam/AdGuardHome/releases">
<img src="https://img.shields.io/github/release/AdguardTeam/AdGuardHome/all.svg" alt="Latest release" />
</a>
<a href="https://snapcraft.io/adguard-home">
<img alt="adguard-home" src="https://snapcraft.io/adguard-home/badge.svg" />
</a>
<a href="https://hub.docker.com/r/adguard/adguardhome">
<img alt="Docker Pulls" src="https://img.shields.io/docker/pulls/adguard/adguardhome.svg?maxAge=604800" />
</a>
<a href="https://hub.docker.com/r/adguard/adguardhome">
<img alt="Docker Stars" src="https://img.shields.io/docker/stars/adguard/adguardhome.svg?maxAge=604800" />
</a>
</p>
<br />
@@ -44,15 +51,25 @@ AdGuard Home is a network-wide software for blocking ads & tracking. After you s
It operates as a DNS server that re-routes tracking domains to a "black hole," thus preventing your devices from connecting to those servers. It's based on software we use for our public [AdGuard DNS](https://adguard.com/en/adguard-dns/overview.html) servers -- both share a lot of common code.
* [Getting Started](#getting-started)
* [Comparing AdGuard Home to other solutions](#comparison)
* [How is this different from public AdGuard DNS servers?](#comparison-adguard-dns)
* [How does AdGuard Home compare to Pi-Hole](#comparison-pi-hole)
* [How does AdGuard Home compare to traditional ad blockers](#comparison-adblock)
* [How to build from source](#how-to-build)
* [Contributing](#contributing)
* [Reporting issues](#reporting-issues)
* [Test unstable versions](#test-unstable-versions)
* [Reporting issues](#reporting-issues)
* [Help with translations](#translate)
* [Other](#help-other)
* [Projects that use AdGuardHome](#uses)
* [Acknowledgments](#acknowledgments)
<a id="getting-started"></a>
## Getting Started
Please read the [Getting Started](https://github.com/AdguardTeam/AdGuardHome/wiki/Getting-Started) article on our Wiki to learn how to install AdGuard Home, and how to configure your devices to use it.
Please read the **[Getting Started](https://github.com/AdguardTeam/AdGuardHome/wiki/Getting-Started)** article on our Wiki to learn how to install AdGuard Home, and how to configure your devices to use it.
If you're running **Linux**, there's a secure and easy way to install AdGuard Home - you can get it from the [Snap Store](https://snapcraft.io/adguard-home).
Alternatively, you can use our [official Docker image](https://hub.docker.com/r/adguard/adguardhome).
@@ -62,23 +79,85 @@ Alternatively, you can use our [official Docker image](https://hub.docker.com/r/
* [AdGuard Home as a DNS-over-HTTPS or DNS-over-TLS server](https://github.com/AdguardTeam/AdGuardHome/wiki/Encryption)
* [How to install and run AdGuard Home on Raspberry Pi](https://github.com/AdguardTeam/AdGuardHome/wiki/Raspberry-Pi)
* [How to install and run AdGuard Home on a Virtual Private Server](https://github.com/AdguardTeam/AdGuardHome/wiki/VPS)
* [How to write your own hosts blocklists properly](https://github.com/AdguardTeam/AdGuardHome/wiki/Hosts-Blocklists)
### API
If you want to integrate with AdGuard Home, you can use our [REST API](https://github.com/AdguardTeam/AdGuardHome/tree/master/openapi).
Alternatively, you can use this [python client](https://pypi.org/project/adguardhome/), which is used to build the [AdGuard Home Hass.io Add-on](https://community.home-assistant.io/t/community-hass-io-add-on-adguard-home).
<a id="comparison"></a>
## Comparing AdGuard Home to other solutions
<a id="comparison-adguard-dns"></a>
### How is this different from public AdGuard DNS servers?
Running your own AdGuard Home server allows you to do much more than using a public DNS server. It's a completely different level. See for yourself:
* Choose what exactly will the server block or not block.
* Monitor your network activity.
* Add your own custom filtering rules.
* **Most importantly, this is your own server, and you are the only one who's in control.**
<a id="comparison-pi-hole"></a>
### How does AdGuard Home compare to Pi-Hole
At this point, AdGuard Home has a lot in common with Pi-Hole. Both block ads and trackers using "DNS sinkholing" method, and both allow customizing what's blocked.
> We're not going to stop here. DNS sinkholing is not a bad starting point, but this is just the beginning.
AdGuard Home provides a lot of features out-of-the-box with no need to install and configure additional software. We want it to be simple to the point when even casual users can set it up with minimal effort.
> Disclaimer: some of the listed features can be added to Pi-Hole by installing additional software or by manually using SSH terminal and reconfiguring one of the utilities Pi-Hole consists of. However, in our opinion, this cannot be legitimately counted as a Pi-Hole's feature.
| Feature | AdGuard&nbsp;Home | Pi-Hole |
|-------------------------------------------------------------------------|--------------|--------------------------------------------------------|
| Blocking ads and trackers | ✅ | ✅ |
| Customizing blocklists | ✅ | ✅ |
| Built-in DHCP server | ✅ | ✅ |
| HTTPS for the Admin interface | ✅ | Kind of, but you'll need to manually configure lighthttpd |
| Encrypted DNS upstream servers (DNS-over-HTTPS, DNS-over-TLS, DNSCrypt) | ✅ | ❌ (requires additional software) |
| Cross-platform | ✅ | ❌ (not natively, only via Docker) |
| Running as a DNS-over-HTTPS or DNS-over-TLS server | ✅ | ❌ (requires additional software) |
| Blocking phishing and malware domains | ✅ | ❌ (requires non-default blocklists) |
| Parental control (blocking adult domains) | ✅ | ❌ |
| Force Safe search on search engines | ✅ | ❌ |
| Per-client (device) configuration | ✅ | ✅ |
| Access settings (choose who can use AGH DNS) | ✅ | ❌ |
<a id="comparison-adblock"></a>
### How does AdGuard Home compare to traditional ad blockers
It depends.
"DNS sinkholing" is capable of blocking a big percentage of ads, but it lacks flexibility and power of traditional ad blockers. You can get a good impression about the difference between these methods by reading [this article](https://adguard.com/en/blog/adguard-vs-adaway-dns66/). It compares AdGuard for Android (a traditional ad blocker) to hosts-level ad blockers (which are almost identical to DNS-based blockers in their capabilities).
However, this level of protection is enough for some users. Additionally, using a DNS-based blocker can help to block ads, tracking and analytics requests on other types of devices, such as SmartTVs, smart speakers or other kinds of IoT devices (on which you can't install tradtional ad blockers).
**Known limitations**
Here are some examples of what cannot be blocked by a DNS-level blocker:
* YouTube, Twitch ads
* Facebook, Twitter, Instagram sponsored posts
Essentially, any advertising that shares a domain with content cannot be blocked by a DNS-level blocker.
Is there a chance to handle this in the future? DNS will never be enough to do this. Our only option is to use a content blocking proxy like what we do in the standalone AdGuard applications. We're [going to bring](https://github.com/AdguardTeam/AdGuardHome/issues/1228) this feature support to AdGuard Home in the future. Unfortunately, even in this case, there still will be cases when this won't be enough or would require quite complicated configuration.
<a id="how-to-build"></a>
## How to build from source
### Prerequisites
You will need:
Run `make init` to prepare the development environment.
* [go](https://golang.org/dl/) v1.12 or later.
You will need this to build AdGuard Home:
* [go](https://golang.org/dl/) v1.14 or later.
* [node.js](https://nodejs.org/en/download/) v10 or later.
You can either install it via the provided links or use [brew.sh](https://brew.sh/) if you're on Mac:
```bash
brew install go node
```
* [golangci-lint](https://github.com/golangci/golangci-lint)
### Building
Open Terminal and execute these commands:
@@ -89,49 +168,120 @@ cd AdGuardHome
make
```
Check the [`Makefile`](https://github.com/AdguardTeam/AdGuardHome/blob/master/Makefile) to learn about other commands.
**Building for a different platform.** You can build AdGuard for any OS/ARCH just like any other Golang project.
In order to do this, specify `GOOS` and `GOARCH` env variables before running make.
For example:
```
GOOS=linux GOARCH=arm64 make
```
#### Preparing release
You'll need this to prepare a release build:
* [goreleaser](https://goreleaser.com/)
* [snapcraft](https://snapcraft.io/)
Commands:
* `make release` - builds a snapshot build (CHANNEL=edge)
* `CHANNEL=beta make release` - builds beta version, tag is mandatory.
* `CHANNEL=release make release` - builds release version, tag is mandatory.
#### Docker image
* Run `make docker` to build the Docker image locally.
* Run `make docker-multi-arch` to build the multi-arch Docker image (the one that we publish to Docker Hub).
Please note, that we're using [Docker Buildx](https://docs.docker.com/buildx/working-with-buildx/) to build our official image.
You may need to prepare before using these builds:
* (Linux-only) Install Qemu: `docker run --rm --privileged multiarch/qemu-user-static --reset -p yes --credential yes`
* Prepare builder: `docker buildx create --name buildx-builder --driver docker-container --use`
### Resources that we update periodically
* `scripts/translations`
* `scripts/whotracksme`
<a id="contributing"></a>
## Contributing
You are welcome to fork this repository, make your changes and submit a pull request — https://github.com/AdguardTeam/AdGuardHome/pulls
### How to update translations
<a id="test-unstable-versions"></a>
### Test unstable versions
There are two update channels that you can use:
* `beta` - beta version of AdGuard Home. More or less stable versions.
* `edge` - the newest version of AdGuard Home. New updates are pushed to this channel daily and it is the closest to the master branch you can get.
There are three options how you can install an unstable version:
1. [Snap Store](https://snapcraft.io/adguard-home) -- look for "beta" and "edge" channels there.
2. [Docker Hub](https://hub.docker.com/r/adguard/adguardhome) -- look for "beta" and "edge" tags there.
3. Standalone builds. Look for the available builds below.
There are three options how you can install an unstable version.
1. You can either install a beta version of AdGuard Home which we update periodically.
2. You can use the Docker image from the `edge` tag, which is synced with the repo master branch.
3. You can install AdGuard Home from `beta` or `edge` channels on the Snap Store.
* Beta channel builds
* Linux: [64-bit](https://static.adguard.com/adguardhome/beta/AdGuardHome_linux_amd64.tar.gz), [32-bit](https://static.adguard.com/adguardhome/beta/AdGuardHome_linux_386.tar.gz)
* Linux ARM: [32-bit ARMv6](https://static.adguard.com/adguardhome/beta/AdGuardHome_linux_armv6.tar.gz) (recommended for Rapsberry Pi), [64-bit](https://static.adguard.com/adguardhome/beta/AdGuardHome_linux_arm64.tar.gz), [32-bit ARMv5](https://static.adguard.com/adguardhome/beta/AdGuardHome_linux_armv5.tar.gz), [32-bit ARMv7](https://static.adguard.com/adguardhome/beta/AdGuardHome_linux_armv7.tar.gz)
* Linux MIPS: [32-bit MIPS](https://static.adguard.com/adguardhome/beta/AdGuardHome_linux_mips_softfloat.tar.gz), [32-bit MIPSLE](https://static.adguard.com/adguardhome/beta/AdGuardHome_linux_mipsle_softfloat.tar.gz), [64-bit MIPS](https://static.adguard.com/adguardhome/beta/AdGuardHome_linux_mips64_softfloat.tar.gz), [64-bit MIPSLE](https://static.adguard.com/adguardhome/beta/AdGuardHome_linux_mips64le_softfloat.tar.gz)
* Windows: [64-bit](https://static.adguard.com/adguardhome/beta/AdGuardHome_windows_amd64.zip), [32-bit](https://static.adguard.com/adguardhome/beta/AdGuardHome_windows_386.zip)
* MacOS: [64-bit](https://static.adguard.com/adguardhome/beta/AdGuardHome_darwin_amd64.zip), [32-bit](https://static.adguard.com/adguardhome/beta/AdGuardHome_darwin_386.zip)
* FreeBSD: [64-bit](https://static.adguard.com/adguardhome/beta/AdGuardHome_freebsd_amd64.tar.gz), [32-bit](https://static.adguard.com/adguardhome/beta/AdGuardHome_freebsd_386.tar.gz)
* FreeBSD ARM: [64-bit](https://static.adguard.com/adguardhome/beta/AdGuardHome_freebsd_arm64.tar.gz), [32-bit ARMv5](https://static.adguard.com/adguardhome/beta/AdGuardHome_freebsd_armv5.tar.gz), [32-bit ARMv6](https://static.adguard.com/adguardhome/beta/AdGuardHome_freebsd_armv6.tar.gz), [32-bit ARMv7](https://static.adguard.com/adguardhome/beta/AdGuardHome_freebsd_armv7.tar.gz)
* Edge channel builds
* Linux: [64-bit](https://static.adguard.com/adguardhome/edge/AdGuardHome_linux_amd64.tar.gz), [32-bit](https://static.adguard.com/adguardhome/edge/AdGuardHome_linux_386.tar.gz)
* Linux ARM: [32-bit ARMv6](https://static.adguard.com/adguardhome/edge/AdGuardHome_linux_armv6.tar.gz) (recommended for Rapsberry Pi), [64-bit](https://static.adguard.com/adguardhome/edge/AdGuardHome_linux_arm64.tar.gz), [32-bit ARMv5](https://static.adguard.com/adguardhome/edge/AdGuardHome_linux_armv5.tar.gz), [32-bit ARMv7](https://static.adguard.com/adguardhome/edge/AdGuardHome_linux_armv7.tar.gz)
* Linux MIPS: [32-bit MIPS](https://static.adguard.com/adguardhome/edge/AdGuardHome_linux_mips_softfloat.tar.gz), [32-bit MIPSLE](https://static.adguard.com/adguardhome/edge/AdGuardHome_linux_mipsle_softfloat.tar.gz), [64-bit MIPS](https://static.adguard.com/adguardhome/edge/AdGuardHome_linux_mips64_softfloat.tar.gz), [64-bit MIPSLE](https://static.adguard.com/adguardhome/edge/AdGuardHome_linux_mips64le_softfloat.tar.gz)
* Windows: [64-bit](https://static.adguard.com/adguardhome/edge/AdGuardHome_windows_amd64.zip), [32-bit](https://static.adguard.com/adguardhome/edge/AdGuardHome_windows_386.zip)
* MacOS: [64-bit](https://static.adguard.com/adguardhome/edge/AdGuardHome_darwin_amd64.zip), [32-bit](https://static.adguard.com/adguardhome/edge/AdGuardHome_darwin_386.zip)
* FreeBSD: [64-bit](https://static.adguard.com/adguardhome/edge/AdGuardHome_freebsd_amd64.tar.gz), [32-bit](https://static.adguard.com/adguardhome/edge/AdGuardHome_freebsd_386.tar.gz)
* FreeBSD ARM: [64-bit](https://static.adguard.com/adguardhome/edge/AdGuardHome_freebsd_arm64.tar.gz), [32-bit ARMv5](https://static.adguard.com/adguardhome/edge/AdGuardHome_freebsd_armv5.tar.gz), [32-bit ARMv6](https://static.adguard.com/adguardhome/edge/AdGuardHome_freebsd_armv6.tar.gz), [32-bit ARMv7](https://static.adguard.com/adguardhome/edge/AdGuardHome_freebsd_armv7.tar.gz)
<a id="reporting-issues"></a>
### Report issues
If you run into any problem or have a suggestion, head to [this page](https://github.com/AdguardTeam/AdGuardHome/issues) and click on the `New issue` button.
<a id="translate"></a>
### Help with translations
If you want to help with AdGuard Home translations, please learn more about translating AdGuard products here: https://kb.adguard.com/en/general/adguard-translations
Here is a direct link to AdGuard Home project: http://translate.adguard.com/collaboration/project?id=153384
Here is a link to AdGuard Home project: https://crowdin.com/project/adguard-applications/en#/adguard-home
Before updating translations you need to install dependencies:
```
cd scripts/translations
npm install
```
<a id="help-other"></a>
### Other
Create file `oneskyapp.json` in `scripts/translations` folder.
Here's what you can also do to contribute:
Example of `oneskyapp.json`
```
{
"url": "https://platform.api.onesky.io/1/projects/",
"projectId": <PROJECT ID>,
"apiKey": <API KEY>,
"secretKey": <SECRET KEY>
}
```
1. [Look for issues](https://github.com/AdguardTeam/AdGuardHome/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22+) marked as "help wanted".
2. Actualize the list of *Blocked services*. It it can be found in [dnsfilter/blocked_services.go](https://github.com/AdguardTeam/AdGuardHome/blob/master/dnsfilter/blocked_services.go).
3. Actualize the list of known *trackers*. It it can be found in [client/src/helpers/trackers/adguard.json](https://github.com/AdguardTeam/AdGuardHome/blob/master/client/src/helpers/trackers/adguard.json).
4. Actualize the list of vetted *blocklists*. It it can be found in [client/src/helpers/filters/filters.json](https://github.com/AdguardTeam/AdGuardHome/blob/master/client/src/helpers/filters/filters.json).
#### Upload translations
```
node upload.js
```
<a id="uses"></a>
## Projects that use AdGuardHome
#### Download translations
```
node download.js
```
* Python library (https://github.com/frenck/python-adguardhome)
* Hass.io add-on (https://github.com/hassio-addons/addon-adguard-home)
* OpenWrt LUCI app (https://github.com/rufengsuixing/luci-app-adguardhome)
<a id="reporting-issues"></a>
## Reporting issues
If you run into any problem or have a suggestion, head to [this page](https://github.com/AdguardTeam/AdGuardHome/issues) and click on the `New issue` button.
<a id="acknowledgments"></a>
## Acknowledgments
@@ -145,6 +295,7 @@ This software wouldn't have been possible without:
* [go-yaml](https://github.com/go-yaml/yaml)
* [service](https://godoc.org/github.com/kardianos/service)
* [dnsproxy](https://github.com/AdguardTeam/dnsproxy)
* [urlfilter](https://github.com/AdguardTeam/urlfilter)
* [Node.js](https://nodejs.org/) and it's libraries:
* [React.js](https://reactjs.org)
* [Tabler](https://github.com/tabler/tabler)

421
app.go
View File

@@ -1,421 +0,0 @@
package main
import (
"crypto/tls"
"fmt"
"net"
"net/http"
"os"
"os/signal"
"path/filepath"
"runtime"
"strconv"
"sync"
"syscall"
"github.com/AdguardTeam/golibs/log"
"github.com/gobuffalo/packr"
)
// VersionString will be set through ldflags, contains current version
var VersionString = "undefined"
var httpServer *http.Server
var httpsServer struct {
server *http.Server
cond *sync.Cond // reacts to config.TLS.Enabled, PortHTTPS, CertificateChain and PrivateKey
sync.Mutex // protects config.TLS
}
const (
// Used in config to indicate that syslog or eventlog (win) should be used for logger output
configSyslog = "syslog"
)
// main is the entry point
func main() {
// config can be specified, which reads options from there, but other command line flags have to override config values
// therefore, we must do it manually instead of using a lib
args := loadOptions()
if args.serviceControlAction != "" {
handleServiceControlAction(args.serviceControlAction)
return
}
signalChannel := make(chan os.Signal)
signal.Notify(signalChannel, syscall.SIGINT, syscall.SIGTERM, syscall.SIGHUP, syscall.SIGQUIT)
go func() {
<-signalChannel
cleanup()
os.Exit(0)
}()
// run the protection
run(args)
}
// run initializes configuration and runs the AdGuard Home
// run is a blocking method and it won't exit until the service is stopped!
func run(args options) {
// config file path can be overridden by command-line arguments:
if args.configFilename != "" {
config.ourConfigFilename = args.configFilename
}
// configure working dir and config path
initWorkingDir(args)
// configure log level and output
configureLogger(args)
// enable TLS 1.3
enableTLS13()
// print the first message after logger is configured
log.Printf("AdGuard Home, version %s\n", VersionString)
log.Debug("Current working directory is %s", config.ourWorkingDir)
if args.runningAsService {
log.Info("AdGuard Home is running as a service")
}
config.firstRun = detectFirstRun()
// Do the upgrade if necessary
err := upgradeConfig()
if err != nil {
log.Fatal(err)
}
// parse from config file
err = parseConfig()
if err != nil {
log.Fatal(err)
}
// override bind host/port from the console
if args.bindHost != "" {
config.BindHost = args.bindHost
}
if args.bindPort != 0 {
config.BindPort = args.bindPort
}
loadFilters()
// Save the updated config
err = config.write()
if err != nil {
log.Fatal(err)
}
// Init the DNS server instance before registering HTTP handlers
dnsBaseDir := filepath.Join(config.ourWorkingDir, dataDir)
initDNSServer(dnsBaseDir)
if !config.firstRun {
err = startDNSServer()
if err != nil {
log.Fatal(err)
}
err = startDHCPServer()
if err != nil {
log.Fatal(err)
}
}
// Update filters we've just loaded right away, don't wait for periodic update timer
go func() {
refreshFiltersIfNecessary(false)
}()
// Schedule automatic filters updates
go periodicallyRefreshFilters()
// Initialize and run the admin Web interface
box := packr.NewBox("build/static")
// if not configured, redirect / to /install.html, otherwise redirect /install.html to /
http.Handle("/", postInstallHandler(optionalAuthHandler(http.FileServer(box))))
registerControlHandlers()
// add handlers for /install paths, we only need them when we're not configured yet
if config.firstRun {
log.Info("This is the first launch of AdGuard Home, redirecting everything to /install.html ")
http.Handle("/install.html", preInstallHandler(http.FileServer(box)))
registerInstallHandlers()
}
httpsServer.cond = sync.NewCond(&httpsServer.Mutex)
// for https, we have a separate goroutine loop
go func() {
for { // this is an endless loop
httpsServer.cond.L.Lock()
// this mechanism doesn't let us through until all conditions are ment
for config.TLS.Enabled == false || config.TLS.PortHTTPS == 0 || config.TLS.PrivateKey == "" || config.TLS.CertificateChain == "" { // sleep until necessary data is supplied
httpsServer.cond.Wait()
}
address := net.JoinHostPort(config.BindHost, strconv.Itoa(config.TLS.PortHTTPS))
// validate current TLS config and update warnings (it could have been loaded from file)
data := validateCertificates(config.TLS.CertificateChain, config.TLS.PrivateKey, config.TLS.ServerName)
if !data.ValidPair {
log.Fatal(data.WarningValidation)
os.Exit(1)
}
config.Lock()
config.TLS.tlsConfigStatus = data // update warnings
config.Unlock()
// prepare certs for HTTPS server
// important -- they have to be copies, otherwise changing the contents in config.TLS will break encryption for in-flight requests
certchain := make([]byte, len(config.TLS.CertificateChain))
copy(certchain, []byte(config.TLS.CertificateChain))
privatekey := make([]byte, len(config.TLS.PrivateKey))
copy(privatekey, []byte(config.TLS.PrivateKey))
cert, err := tls.X509KeyPair(certchain, privatekey)
if err != nil {
log.Fatal(err)
os.Exit(1)
}
httpsServer.cond.L.Unlock()
// prepare HTTPS server
httpsServer.server = &http.Server{
Addr: address,
TLSConfig: &tls.Config{
Certificates: []tls.Certificate{cert},
},
}
printHTTPAddresses("https")
err = httpsServer.server.ListenAndServeTLS("", "")
if err != http.ErrServerClosed {
log.Fatal(err)
os.Exit(1)
}
}
}()
// this loop is used as an ability to change listening host and/or port
for {
printHTTPAddresses("http")
// we need to have new instance, because after Shutdown() the Server is not usable
address := net.JoinHostPort(config.BindHost, strconv.Itoa(config.BindPort))
httpServer = &http.Server{
Addr: address,
}
err := httpServer.ListenAndServe()
if err != http.ErrServerClosed {
log.Fatal(err)
os.Exit(1)
}
// We use ErrServerClosed as a sign that we need to rebind on new address, so go back to the start of the loop
}
}
// initWorkingDir initializes the ourWorkingDir
// if no command-line arguments specified, we use the directory where our binary file is located
func initWorkingDir(args options) {
exec, err := os.Executable()
if err != nil {
panic(err)
}
if args.workDir != "" {
// If there is a custom config file, use it's directory as our working dir
config.ourWorkingDir = args.workDir
} else {
config.ourWorkingDir = filepath.Dir(exec)
}
}
// configureLogger configures logger level and output
func configureLogger(args options) {
ls := getLogSettings()
// command-line arguments can override config settings
if args.verbose {
ls.Verbose = true
}
if args.logFile != "" {
ls.LogFile = args.logFile
}
level := log.INFO
if ls.Verbose {
level = log.DEBUG
}
log.SetLevel(level)
if args.runningAsService && ls.LogFile == "" && runtime.GOOS == "windows" {
// When running as a Windows service, use eventlog by default if nothing else is configured
// Otherwise, we'll simply loose the log output
ls.LogFile = configSyslog
}
if ls.LogFile == "" {
return
}
if ls.LogFile == configSyslog {
// Use syslog where it is possible and eventlog on Windows
err := configureSyslog()
if err != nil {
log.Fatalf("cannot initialize syslog: %s", err)
}
} else {
logFilePath := filepath.Join(config.ourWorkingDir, ls.LogFile)
if filepath.IsAbs(ls.LogFile) {
logFilePath = ls.LogFile
}
file, err := os.OpenFile(logFilePath, os.O_WRONLY|os.O_CREATE|os.O_APPEND, 0644)
if err != nil {
log.Fatalf("cannot create a log file: %s", err)
}
log.SetOutput(file)
}
}
// TODO after GO 1.13 release TLS 1.3 will be enabled by default. Remove this afterward
func enableTLS13() {
err := os.Setenv("GODEBUG", os.Getenv("GODEBUG")+",tls13=1")
if err != nil {
log.Fatalf("Failed to enable TLS 1.3: %s", err)
}
}
func cleanup() {
log.Info("Stopping AdGuard Home")
err := stopDNSServer()
if err != nil {
log.Error("Couldn't stop DNS server: %s", err)
}
err = stopDHCPServer()
if err != nil {
log.Error("Couldn't stop DHCP server: %s", err)
}
}
// command-line arguments
type options struct {
verbose bool // is verbose logging enabled
configFilename string // path to the config file
workDir string // path to the working directory where we will store the filters data and the querylog
bindHost string // host address to bind HTTP server on
bindPort int // port to serve HTTP pages on
logFile string // Path to the log file. If empty, write to stdout. If "syslog", writes to syslog
// service control action (see service.ControlAction array + "status" command)
serviceControlAction string
// runningAsService flag is set to true when options are passed from the service runner
runningAsService bool
}
// loadOptions reads command line arguments and initializes configuration
func loadOptions() options {
o := options{}
var printHelp func()
var opts = []struct {
longName string
shortName string
description string
callbackWithValue func(value string)
callbackNoValue func()
}{
{"config", "c", "path to the config file", func(value string) { o.configFilename = value }, nil},
{"work-dir", "w", "path to the working directory", func(value string) { o.workDir = value }, nil},
{"host", "h", "host address to bind HTTP server on", func(value string) { o.bindHost = value }, nil},
{"port", "p", "port to serve HTTP pages on", func(value string) {
v, err := strconv.Atoi(value)
if err != nil {
panic("Got port that is not a number")
}
o.bindPort = v
}, nil},
{"service", "s", "service control action: status, install, uninstall, start, stop, restart", func(value string) {
o.serviceControlAction = value
}, nil},
{"logfile", "l", "path to the log file. If empty, writes to stdout, if 'syslog' -- system log", func(value string) {
o.logFile = value
}, nil},
{"verbose", "v", "enable verbose output", nil, func() { o.verbose = true }},
{"help", "", "print this help", nil, func() {
printHelp()
os.Exit(64)
}},
}
printHelp = func() {
fmt.Printf("Usage:\n\n")
fmt.Printf("%s [options]\n\n", os.Args[0])
fmt.Printf("Options:\n")
for _, opt := range opts {
if opt.shortName != "" {
fmt.Printf(" -%s, %-30s %s\n", opt.shortName, "--"+opt.longName, opt.description)
} else {
fmt.Printf(" %-34s %s\n", "--"+opt.longName, opt.description)
}
}
}
for i := 1; i < len(os.Args); i++ {
v := os.Args[i]
knownParam := false
for _, opt := range opts {
if v == "--"+opt.longName || (opt.shortName != "" && v == "-"+opt.shortName) {
if opt.callbackWithValue != nil {
if i+1 >= len(os.Args) {
log.Error("Got %s without argument\n", v)
os.Exit(64)
}
i++
opt.callbackWithValue(os.Args[i])
} else if opt.callbackNoValue != nil {
opt.callbackNoValue()
}
knownParam = true
break
}
}
if !knownParam {
log.Error("unknown option %v\n", v)
printHelp()
os.Exit(64)
}
}
return o
}
// prints IP addresses which user can use to open the admin interface
// proto is either "http" or "https"
func printHTTPAddresses(proto string) {
var address string
if proto == "https" && config.TLS.ServerName != "" {
if config.TLS.PortHTTPS == 443 {
log.Printf("Go to https://%s", config.TLS.ServerName)
} else {
log.Printf("Go to https://%s:%d", config.TLS.ServerName, config.TLS.PortHTTPS)
}
} else if config.BindHost == "0.0.0.0" {
log.Println("AdGuard Home is available on the following addresses:")
ifaces, err := getValidNetInterfacesForWeb()
if err != nil {
// That's weird, but we'll ignore it
address = net.JoinHostPort(config.BindHost, strconv.Itoa(config.BindPort))
log.Printf("Go to %s://%s", proto, address)
return
}
for _, iface := range ifaces {
address = net.JoinHostPort(iface.Addresses[0], strconv.Itoa(config.BindPort))
log.Printf("Go to %s://%s", proto, address)
}
} else {
address = net.JoinHostPort(config.BindHost, strconv.Itoa(config.BindPort))
log.Printf("Go to %s://%s", proto, address)
}
}

View File

@@ -1,74 +0,0 @@
#!/usr/bin/env bash
set -eE
set -o pipefail
set -x
DOCKERFILE="Dockerfile.travis"
IMAGE_NAME="adguard/adguardhome"
if [[ "${TRAVIS_BRANCH}" == "master" ]]
then
VERSION="edge"
else
VERSION=`git describe --abbrev=4 --dirty --always --tags`
fi
build_image() {
from="$(awk '$1 == toupper("FROM") { print $2 }' ${DOCKERFILE})"
# See https://hub.docker.com/r/multiarch/alpine/tags
case "${GOARCH}" in
arm64)
alpineArch='arm64-edge'
imageArch='arm64'
;;
arm)
alpineArch='armhf-edge'
imageArch='armhf'
;;
386)
alpineArch='i386-edge'
imageArch='i386'
;;
amd64)
alpineArch='amd64-edge'
;;
*)
alpineArch='amd64-edge'
;;
esac
if [[ "${GOOS}" == "linux" ]] && [[ "${GOARCH}" == "amd64" ]]
then
image="${IMAGE_NAME}:${VERSION}"
else
image="${IMAGE_NAME}:${imageArch}-${VERSION}"
fi
make cleanfast; CGO_DISABLED=1 make
docker pull "multiarch/alpine:${alpineArch}"
docker tag "multiarch/alpine:${alpineArch}" "$from"
docker build -t "${image}" -f ${DOCKERFILE} .
docker push ${image}
if [[ "${VERSION}" != "edge" ]]
then
latest=${image/$VERSION/latest}
docker tag "${image}" "${latest}"
docker push ${latest}
docker rmi ${latest}
fi
docker rmi "$from"
}
# prepare qemu
docker run --rm --privileged multiarch/qemu-user-static:register --reset
make clean
# Prepare releases
GOOS=linux GOARCH=amd64 build_image
GOOS=linux GOARCH=386 build_image
GOOS=linux GOARCH=arm GOARM=6 build_image
GOOS=linux GOARCH=arm64 GOARM=6 build_image

45
changelog.config.js Normal file
View File

@@ -0,0 +1,45 @@
module.exports = {
"disableEmoji": true,
"list": [
"+ ",
"* ",
"- ",
],
"maxMessageLength": 64,
"minMessageLength": 3,
"questions": [
"type",
"scope",
"subject",
"body",
"issues",
],
"scopes": [
"",
"ui",
"global",
"dnsfilter",
"home",
"dnsforward",
"dhcpd",
"querylog",
"documentation",
],
"types": {
"+ ": {
"description": "A new feature",
"emoji": "",
"value": "+ "
},
"* ": {
"description": "A code change that neither fixes a bug or adds a feature",
"emoji": "",
"value": "* "
},
"- ": {
"description": "A bug fix",
"emoji": "",
"value": "- "
}
}
};

View File

@@ -17,6 +17,11 @@
"react": {
"pragma": "React",
"version": "16.4"
},
"import/resolver": {
"webpack": {
"config": "webpack.common.js"
}
}
},
@@ -48,6 +53,7 @@
"camelcase": "off",
"no-console": ["warn", { "allow": ["warn", "error"] }],
"import/no-extraneous-dependencies": ["error", { "devDependencies": true }],
"import/prefer-default-export": "off"
"import/prefer-default-export": "off",
"no-alert": "off"
}
}

1
client/.gitattributes vendored Normal file
View File

@@ -0,0 +1 @@
*.js text eol=lf

16
client/babel.config.js vendored Normal file
View File

@@ -0,0 +1,16 @@
module.exports = (api) => {
api.cache(false);
return {
presets: [
'@babel/preset-env',
'@babel/preset-react',
],
plugins: [
'@babel/plugin-proposal-class-properties',
'@babel/plugin-transform-runtime',
'@babel/plugin-proposal-object-rest-spread',
'@babel/plugin-proposal-nullish-coalescing-operator',
'@babel/plugin-proposal-optional-chaining',
],
};
};

5
client/jest.config.js vendored Normal file
View File

@@ -0,0 +1,5 @@
module.exports = {
transform: {
'^.+\\.jsx?$': 'babel-jest',
},
};

20568
client/package-lock.json generated vendored

File diff suppressed because it is too large Load Diff

171
client/package.json vendored
View File

@@ -1,77 +1,98 @@
{
"name": "dashboard",
"version": "0.1.0",
"private": true,
"scripts": {
"build-dev": "NODE_ENV=development ./node_modules/.bin/webpack --config webpack.dev.js",
"watch": "NODE_ENV=development ./node_modules/.bin/webpack --config webpack.dev.js --watch",
"build-prod": "NODE_ENV=production ./node_modules/.bin/webpack --config webpack.prod.js",
"lint": "eslint frontend/"
},
"dependencies": {
"@nivo/line": "^0.49.1",
"axios": "^0.18.0",
"classnames": "^2.2.6",
"date-fns": "^1.29.0",
"file-saver": "^1.3.8",
"i18next": "^12.0.0",
"i18next-browser-languagedetector": "^2.2.3",
"lodash": "^4.17.11",
"nanoid": "^1.2.3",
"prop-types": "^15.6.1",
"react": "^16.4.0",
"react-click-outside": "^3.0.1",
"react-dom": "^16.4.0",
"react-i18next": "^8.2.0",
"react-modal": "^3.4.5",
"react-redux": "^5.0.7",
"react-redux-loading-bar": "^4.0.7",
"react-router-dom": "^4.2.2",
"react-table": "^6.8.6",
"react-transition-group": "^2.4.0",
"redux": "^4.0.0",
"redux-actions": "^2.4.0",
"redux-form": "^7.4.2",
"redux-thunk": "^2.3.0",
"svg-url-loader": "^2.3.2"
},
"devDependencies": {
"autoprefixer": "^8.6.3",
"babel-core": "6.26.0",
"babel-eslint": "^8.2.3",
"babel-loader": "7.1.2",
"babel-plugin-transform-runtime": "^6.23.0",
"babel-preset-env": "^1.7.0",
"babel-preset-react": "^6.24.1",
"babel-preset-stage-2": "^6.24.1",
"babel-runtime": "6.26.0",
"clean-webpack-plugin": "^0.1.19",
"compression-webpack-plugin": "^1.1.11",
"copy-webpack-plugin": "^4.6.0",
"css-loader": "^0.28.11",
"eslint": "^4.19.1",
"eslint-config-airbnb-base": "^12.1.0",
"eslint-config-react-app": "^2.1.0",
"eslint-loader": "1.9.0",
"eslint-plugin-import": "^2.12.0",
"eslint-plugin-jsx-a11y": "5.1.1",
"eslint-plugin-react": "^7.9.1",
"extract-text-webpack-plugin": "^3.0.2",
"file-loader": "1.1.5",
"html-webpack-plugin": "^3.2.0",
"postcss-flexbugs-fixes": "3.2.0",
"postcss-import": "^11.1.0",
"postcss-loader": "^2.1.5",
"postcss-mixins": "^6.2.0",
"postcss-preset-env": "^5.1.0",
"postcss-svg": "^2.4.0",
"style-loader": "^0.21.0",
"stylelint": "^9.10.1",
"stylelint-webpack-plugin": "0.10.4",
"uglifyjs-webpack-plugin": "^1.2.7",
"url-loader": "^1.0.1",
"webpack": "3.8.1",
"webpack-dev-server": "^3.1.14",
"webpack-merge": "^4.1.3"
}
"name": "dashboard",
"version": "0.1.0",
"private": true,
"scripts": {
"build-dev": "cross-env BUILD_ENV=dev webpack --config webpack.dev.js",
"watch": "cross-env BUILD_ENV=dev webpack --config webpack.dev.js --watch",
"build-prod": "cross-env BUILD_ENV=prod webpack --config webpack.prod.js",
"lint": "eslint src",
"lint:fix": "eslint src --fix",
"test": "jest",
"test:watch": "jest --watch"
},
"dependencies": {
"@nivo/line": "^0.49.1",
"axios": "^0.19.2",
"classnames": "^2.2.6",
"date-fns": "^1.29.0",
"i18next": "^19.4.4",
"i18next-browser-languagedetector": "^4.2.0",
"ipaddr.js": "^1.9.1",
"lodash": "^4.17.15",
"nanoid": "^3.1.9",
"prop-types": "^15.7.2",
"query-string": "^6.13.1",
"react": "^16.13.1",
"react-click-outside": "^3.0.1",
"react-dom": "^16.13.1",
"react-i18next": "^11.4.0",
"react-modal": "^3.11.2",
"react-popper-tooltip": "^2.11.1",
"react-redux": "^7.2.0",
"react-redux-loading-bar": "^4.6.0",
"react-router-dom": "^5.2.0",
"react-router-hash-link": "^1.2.2",
"react-select": "^3.1.0",
"react-table": "^6.11.4",
"react-transition-group": "^4.4.1",
"redux": "^4.0.5",
"redux-actions": "^2.6.5",
"redux-form": "^8.3.5",
"redux-thunk": "^2.3.0",
"url-polyfill": "^1.1.9"
},
"devDependencies": {
"@babel/core": "^7.9.6",
"@babel/plugin-proposal-class-properties": "^7.8.3",
"@babel/plugin-proposal-nullish-coalescing-operator": "^7.10.4",
"@babel/plugin-proposal-object-rest-spread": "^7.9.6",
"@babel/plugin-proposal-optional-chaining": "^7.10.4",
"@babel/plugin-transform-runtime": "^7.9.6",
"@babel/preset-env": "^7.9.6",
"@babel/preset-react": "^7.9.4",
"autoprefixer": "^9.8.0",
"babel-eslint": "^10.1.0",
"babel-loader": "^8.1.0",
"clean-webpack-plugin": "^3.0.0",
"copy-webpack-plugin": "^6.0.1",
"cross-env": "^7.0.2",
"css-loader": "^3.5.3",
"eslint": "^6.8.0",
"eslint-config-airbnb": "^18.1.0",
"eslint-import-resolver-webpack": "^0.12.1",
"eslint-loader": "^4.0.2",
"eslint-plugin-import": "^2.20.2",
"eslint-plugin-jsx-a11y": "^6.2.3",
"eslint-plugin-react": "^7.20.0",
"eslint-plugin-react-hooks": "^2.5.0",
"file-loader": "6.0.0",
"html-webpack-plugin": "^4.3.0",
"jest": "^26.0.1",
"mini-css-extract-plugin": "^0.9.0",
"path": "^0.12.7",
"postcss-flexbugs-fixes": "4.2.1",
"postcss-loader": "^3.0.0",
"style-loader": "^1.2.1",
"stylelint": "^13.5.0",
"stylelint-webpack-plugin": "2.0.0",
"url-loader": "^4.1.0",
"webpack": "^4.43.0",
"webpack-cli": "^3.3.11",
"webpack-dev-server": "^3.11.0",
"webpack-merge": "^4.2.2"
},
"browserslist": {
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
],
"production": [
">1%",
"last 4 versions",
"Firefox ESR",
"not ie < 9"
]
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16pt" height="16pt"
viewBox="0 0 16 16" version="1.1">
<g id="surface1">
<path style=" stroke:none;fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;"
d="M 8 0 C 10.5 0 13.515625 0.574219 16 1.835938 L 15.996094 2.542969 C 15.957031 5.605469 15.410156 11.71875 8 16 C 0.5 11.667969 0.03125 5.460938 0.00390625 2.433594 L 0 1.835938 C 2.484375 0.574219 5.5 0 8 0 Z M 11.769531 4.203125 L 11.761719 4.203125 L 7.890625 8.160156 L 6.433594 6.4375 C 5.738281 5.644531 4.792969 6.25 4.570312 6.40625 L 7.929688 10.285156 L 12.570312 4.136719 C 12.230469 3.867188 11.933594 4.054688 11.769531 4.203125 Z M 11.769531 4.203125 "/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 801 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

View File

@@ -2,9 +2,16 @@
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, shrink-to-fit=no">
<meta name="theme-color" content="#000000">
<link rel="shortcut icon" href="favicon.ico">
<meta name="google" content="notranslate">
<meta http-equiv="x-dns-prefetch-control" content="off">
<meta name="mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="default">
<link rel="apple-touch-icon" sizes="180x180" href="assets/apple-touch-icon-180x180.png" />
<link rel="mask-icon" href="assets/safari-pinned-tab.svg" color="#67B279">
<link rel="icon" type="image/png" href="assets/favicon.png" sizes="48x48">
<title>AdGuard Home</title>
</head>
<body>

View File

@@ -2,9 +2,15 @@
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, shrink-to-fit=no">
<meta name="theme-color" content="#000000">
<link rel="shortcut icon" href="favicon.ico">
<meta name="google" content="notranslate">
<meta name="mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="default">
<link rel="apple-touch-icon" sizes="180x180" href="assets/apple-touch-icon-180x180.png" />
<link rel="mask-icon" href="assets/safari-pinned-tab.svg" color="#67B279">
<link rel="icon" type="image/png" href="assets/favicon.png" sizes="48x48">
<title>Setup AdGuard Home</title>
</head>
<body>

22
client/public/login.html Normal file
View File

@@ -0,0 +1,22 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, shrink-to-fit=no">
<meta name="theme-color" content="#000000">
<meta name="google" content="notranslate">
<link rel="apple-touch-icon" sizes="180x180" href="assets/apple-touch-icon-180x180.png" />
<meta name="mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="default">
<link rel="mask-icon" href="assets/safari-pinned-tab.svg" color="#67B279">
<link rel="icon" type="image/png" href="assets/favicon.png" sizes="48x48">
<title>Login</title>
</head>
<body>
<noscript>
You need to enable JavaScript to run this app.
</noscript>
<div id="root"></div>
</body>
</html>

View File

@@ -1,250 +1,241 @@
{
"url_added_successfully": "\u0423\u0441\u043f\u0435\u0448\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0435\u043d URL",
"check_dhcp_servers": "\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0437\u0430 \u0430\u043a\u0442\u0438\u0432\u0435\u043d DHCP \u0441\u044a\u0440\u0432\u044a\u0440",
"save_config": "\u0417\u0430\u043f\u0438\u0448\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438\u0442\u0435",
"enabled_dhcp": "DHCP \u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d",
"disabled_dhcp": "DHCP \u0435 \u0437\u0430\u0431\u0440\u0430\u043d\u0435\u043d",
"dhcp_title": "DHCP \u0441\u044a\u0440\u0432\u044a\u0440 (\u0442\u0435\u0441\u0442\u043e\u0432\u0438!)",
"dhcp_description": "\u0410\u043a\u043e \u0440\u0443\u0442\u0435\u0440\u0430 \u0432\u0438 \u043d\u0435 \u0440\u0430\u0437\u0434\u0430\u0432\u0430 DHCP \u0430\u0434\u0440\u0435\u0441\u0438, \u043c\u043e\u0436\u0435 \u0434\u0430 \u0438\u0437\u043f\u043e\u043b\u0437\u0432\u0430\u0442\u0435 \u0432\u0433\u0440\u0430\u0434\u0435\u043d\u0438\u044f \u0432 AdGuard DHCP \u0441\u044a\u0440\u0432\u044a\u0440.",
"dhcp_enable": "\u0420\u0437\u0440\u0435\u0448\u0438 DHCP \u0441\u044a\u0440\u0432\u044a\u0440\u0430",
"dhcp_disable": "\u0417\u0430\u0431\u0440\u0430\u043d\u0438 DHCP \u0441\u044a\u0440\u0432\u044a\u0440\u0430",
"dhcp_not_found": "\u0412\u0430\u0448\u0430\u0442\u0430 \u043c\u0440\u0435\u0436\u0430 \u043d\u044f\u043c\u0430 \u0430\u043a\u0442\u0438\u0432\u0435\u043d DHCP \u0441\u044a\u0440\u0432\u044a\u0440. \u0411\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e \u0435 \u043f\u043e\u043b\u0437\u0432\u0430\u043d\u0435\u0442\u043e \u043d\u0430 \u0432\u0433\u0440\u0430\u0434\u0435\u043d\u0438\u044f DHCP \u0441\u044a\u0440\u0432\u044a\u0440.",
"dhcp_found": "\u0412\u0430\u0448\u0430\u0442\u0430 \u043c\u0440\u0435\u0436\u0430 \u0432\u0435\u0447\u0435 \u0438\u043c\u0430 \u0430\u043a\u0442\u0438\u0432\u0435\u043d DHCP \u0441\u044a\u0440\u0432\u044a\u0440. \u041d\u0435 \u0435 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e \u043f\u043e\u043b\u0437\u0432\u0430\u043d\u0435\u0442\u043e \u043d\u0430 \u0432\u0442\u043e\u0440\u0438!",
"dhcp_leases": "DHCP \u0440\u0430\u0437\u0434\u0430\u0434\u0435\u043d\u0438 \u0430\u0434\u0440\u0435\u0441\u0438",
"dhcp_leases_not_found": "\u041d\u044f\u043c\u0430 \u043d\u0430\u043c\u0435\u0440\u0435\u043d\u0438 \u0430\u043a\u0442\u0438\u0432\u043d\u0438 DHCP \u0430\u0434\u0440\u0435\u0441\u0438",
"dhcp_config_saved": "\u0417\u0430\u043f\u0438\u0448\u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f\u0442\u0430 \u043d\u0430 DHCP \u0441\u044a\u0440\u0432\u044a\u0440\u0430",
"form_error_required": "\u0417\u0430\u0434\u044a\u043b\u0436\u0438\u0442\u0435\u043b\u043d\u043e \u043f\u043e\u043b\u0435",
"form_error_ip_format": "\u041d\u0435\u0432\u0430\u043b\u0438\u0434\u0435\u043d IPv4 \u0430\u0434\u0440\u0435\u0441",
"form_error_positive": "\u041f\u0440\u043e\u0432\u0435\u0440\u0435\u0442\u0435 \u0434\u0430\u043b\u0438 \u0435 \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u0435\u043b\u043d\u043e \u0447\u0438\u0441\u043b\u043e",
"dhcp_form_gateway_input": "IP \u0448\u043b\u044e\u0437",
"dhcp_form_subnet_input": "\u041c\u0440\u0435\u0436\u043e\u0432\u0430 \u043c\u0430\u0441\u043a\u0430",
"dhcp_form_range_title": "\u0413\u0440\u0443\u043f\u0430 \u043e\u0442 IP \u0430\u0434\u0440\u0435\u0441\u0438",
"dhcp_form_range_start": "\u041f\u044a\u0440\u0432\u0438 \u0430\u0434\u0440\u0435\u0441",
"dhcp_form_range_end": "\u041f\u043e\u0441\u043b\u0435\u0434\u0435\u043d \u0430\u0434\u0440\u0435\u0441",
"dhcp_form_lease_title": "\u041e\u0442\u0434\u0430\u0434\u0435\u043d\u0438 \u0430\u0434\u0440\u0435\u0441\u0438 (\u0441\u0435\u043a\u0443\u043d\u0434\u0438)",
"dhcp_form_lease_input": "\u041e\u0442\u0447\u0435\u0442 \u0437\u0430 \u0440\u0430\u0437\u0434\u0430\u0434\u0435\u043d\u0438 \u0430\u0434\u0440\u0435\u0441\u0438",
"dhcp_interface_select": "\u0418\u0437\u0431\u0435\u0440\u0435\u0442\u0435 \u043c\u0440\u0435\u0436\u043e\u0432 \u0430\u0434\u0430\u043f\u0442\u0435\u0440 \u0437\u0430 DHCP",
"dhcp_hardware_address": "\u0425\u0430\u0440\u0434\u0443\u0435\u0440\u043d\u0438 \u0430\u0434\u0440\u0435\u0441\u0438 (MAC)",
"dhcp_ip_addresses": "IP \u0430\u0434\u0440\u0435\u0441\u0438",
"dhcp_table_hostname": "\u0418\u043c\u0435 \u043d\u0430 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e",
"dhcp_table_expires": "\u0418\u0441\u0442\u043e\u0440\u0438\u044f",
"dhcp_warning": "\u0410\u043a\u043e \u0438\u0441\u043a\u0430\u0442\u0435 \u0434\u0430 \u0438\u0437\u043f\u043e\u043b\u0437\u0432\u0430\u0442\u0435 \u0432\u0433\u0440\u0430\u0434\u0435\u043d\u0438\u044f DHCP \u0441\u044a\u0440\u0432\u044a\u0440, \u0442\u0440\u044f\u0431\u0432\u0430 \u0434\u0430 \u043d\u044f\u043c\u0430 \u0434\u0440\u0443\u0433 \u0430\u043a\u0442\u0438\u0432\u0435\u043d DHCP \u0432 \u043c\u0440\u0435\u0436\u0430\u0442\u0430 \u0412\u0438!",
"back": "\u041d\u0430\u0437\u0430\u0434",
"dashboard": "\u0422\u0430\u0431\u043b\u043e",
"settings": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438",
"filters": "\u0424\u0438\u043b\u0442\u0440\u0438",
"query_log": "\u0418\u0441\u0442\u043e\u0440\u0438\u044f \u043d\u0430 \u0437\u0430\u044f\u0432\u043a\u0438\u0442\u0435",
"faq": "\u0427\u0417\u0412",
"version": "\u0432\u0435\u0440\u0441\u0438\u044f",
"address": "\u0430\u0434\u0440\u0435\u0441",
"on": "\u0412\u041a\u041b\u042e\u0427\u0415\u041d\u041e",
"off": "\u0418\u0417\u041a\u041b\u042e\u0427\u0415\u041d\u041e",
"copyright": "\u0410\u0432\u0442\u043e\u0440\u0441\u043a\u043e \u043f\u0440\u0430\u0432\u043e",
"homepage": "\u0414\u043e\u043c\u0430\u0448\u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430",
"report_an_issue": "\u0421\u044a\u043e\u0431\u0449\u0438 \u0437\u0430 \u043f\u0440\u043e\u0431\u043b\u0435\u043c",
"enable_protection": "\u0420\u0430\u0437\u0440\u0435\u0448\u0438 \u0437\u0430\u0449\u0438\u0442\u0430",
"enabled_protection": "\u0417\u0430\u0449\u0438\u0442\u0430\u0442\u0430 \u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0430",
"disable_protection": "\u0417\u0430\u0431\u0440\u0430\u043d\u0438 \u0437\u0430\u0449\u0438\u0442\u0430",
"disabled_protection": "\u0417\u0430\u0449\u0438\u0442\u0430\u0442\u0430 \u0435 \u0437\u0430\u0431\u0440\u0430\u043d\u0435\u043d\u0430",
"refresh_statics": "\u041e\u0431\u043d\u043e\u0432\u0438 \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0430\u0442\u0430",
"dns_query": "DNS \u0437\u0430\u043f\u0438\u0442\u0432\u0430\u043d\u0438\u044f",
"blocked_by": "\u0411\u043b\u043e\u043a\u0438\u0440\u0430\u043d\u0438 \u043e\u0442",
"stats_malware_phishing": "\u0432\u0438\u0440\u0443\u0441\u0438\/\u0430\u0442\u0430\u043a\u0438",
"stats_adult": "\u0441\u0430\u0439\u0442\u043e\u0432\u0435 \u0437\u0430 \u0432\u044a\u0437\u0440\u0430\u0441\u0442\u043d\u0438",
"stats_query_domain": "\u041d\u0430\u0439-\u043e\u0442\u0432\u0430\u0440\u044f\u043d\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0438",
"for_last_24_hours": "\u0437\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0442\u0435 24 \u0447\u0430\u0441\u0430",
"no_domains_found": "\u041d\u044f\u043c\u0430 \u043d\u0430\u043c\u0435\u0440\u0435\u043d\u0438 \u0440\u0435\u0437\u0443\u043b\u0442\u0430\u0442\u0438",
"requests_count": "\u0421\u0443\u043c\u0430 \u043d\u0430 \u0437\u0430\u044f\u0432\u043a\u0438\u0442\u0435",
"top_blocked_domains": "\u041d\u0430\u0439-\u0431\u043b\u043e\u043a\u0438\u0440\u0430\u043d\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0438",
"top_clients": "\u041d\u0430\u0439-\u0430\u043a\u0442\u0438\u0432\u043d\u0438 IP \u0430\u0434\u0440\u0435\u0441\u0438",
"no_clients_found": "\u041d\u044f\u043ca \u043d\u0430\u043c\u0435\u0440\u0435\u043d\u0438 \u0430\u0434\u0440\u0435\u0441\u0438",
"general_statistics": "\u041e\u0431\u0449\u0430 \u0441\u0442\u0430\u0442\u0438\u0441\u0438\u043a\u0430",
"number_of_dns_query_24_hours": "\u0421\u0443\u043c\u0430 \u043d\u0430 DNS \u0437\u0430\u044f\u0432\u043a\u0438 \u0437\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0442\u0435 24 \u0447\u0430\u0441\u0430",
"number_of_dns_query_blocked_24_hours": "\u0421\u0443\u043c\u0430 \u043d\u0430 \u0431\u043b\u043e\u043a\u0438\u0440\u0430\u043d\u0438 DNS \u0437\u0430\u044f\u0432\u043a\u0438 \u043e\u0442 \u0444\u0438\u043b\u0442\u0440\u0438\u0442\u0435 \u0437\u0430 \u0440\u0435\u043a\u043b\u0430\u043c\u0430 \u0438 \u043c\u0435\u0441\u0442\u043d\u0438",
"number_of_dns_query_blocked_24_hours_by_sec": "\u0421\u0443\u043c\u0430 \u043d\u0430 \u0431\u043b\u043e\u043a\u0438\u0440\u0430\u043d\u0438 DNS \u0437\u0430\u044f\u0432\u043a\u0438 \u043e\u0442 AdGuard \u0441\u0432\u044a\u0440\u0437\u0430\u043d\u0438 \u0441\u044a\u0441 \u0441\u0438\u0433\u0443\u0440\u043d\u043e\u0441\u0442\u0442\u0430",
"number_of_dns_query_blocked_24_hours_adult": "\u0421\u0443\u043c\u0430 \u043d\u0430 \u0431\u043b\u043e\u043a\u0438\u0440\u0430\u043d\u0438 \u0441\u0430\u0439\u0442\u043e\u0432\u0435 \u0437\u0430 \u0432\u044a\u0437\u0440\u0430\u0441\u0442\u043d\u0438",
"enforced_save_search": "\u0410\u043a\u0442\u0438\u0432\u0438\u0440\u0430\u043d\u043e \u0411\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e \u0422\u044a\u0440\u0441\u0435\u043d\u0435",
"number_of_dns_query_to_safe_search": "\u0421\u0443\u043c\u0430 \u043d\u0430 DNS \u0437\u0430\u044f\u0432\u043a\u0438 \u043f\u0440\u0438 \u043a\u043e\u0439\u0442\u043e \u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u043e \u0411\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e \u0422\u044a\u0440\u0441\u0435\u043d\u0435",
"average_processing_time": "\u0421\u0440\u0435\u0434\u043d\u043e \u0432\u0440\u0435\u043c\u0435 \u0437\u0430 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430",
"average_processing_time_hint": "\u0421\u0440\u0435\u0434\u043d\u043e \u0432\u0440\u0435\u043c\u0435 \u0437\u0430 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043d\u0430 DNS \u0437\u0430\u044f\u0432\u043a\u0438 \u0432 \u043c\u0438\u043b\u0438\u0441\u0435\u043a\u0443\u043d\u0434\u0438",
"block_domain_use_filters_and_hosts": "\u0411\u043b\u043e\u043a\u0438\u0440\u0430\u043d\u0438 \u0434\u043e\u043c\u0435\u0439\u043d\u0438 - \u043e\u0431\u0449\u0438 \u0438 \u043c\u0435\u0441\u0442\u043d\u0438 \u0444\u0438\u043b\u0442\u0440\u0438",
"filters_block_toggle_hint": "\u041c\u043e\u0436\u0435 \u0434\u0430 \u0437\u0430\u0434\u0430\u0434\u0435\u0442\u0435 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0432 <a href='#filters'>\u0424\u0438\u043b\u0442\u0440\u0438<\/a>.",
"use_adguard_browsing_sec": "\u0418\u0437\u043f\u043e\u043b\u0437\u0432\u0430\u0439\u0442\u0435 AdGuard \u043c\u043e\u0434\u0443\u043b \u0437\u0430 \u0441\u0438\u0433\u0443\u0440\u043d\u043e\u0441\u0442\u0442\u0430",
"use_adguard_browsing_sec_hint": "\u041c\u043e\u0434\u0443\u043b \u0421\u0438\u0433\u0443\u0440\u043d\u043e\u0441\u0442 \u0432 AdGuard Home \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0432\u0430 \u0432\u0441\u044f\u043a\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043a\u043e\u044f\u0442\u043e \u043e\u0442\u0432\u0430\u0440\u044f\u0442\u0435 \u0434\u0430\u043b\u0438 \u0435 \u0432 \u0447\u0435\u0440\u043d\u0438\u0442\u0435 \u0441\u043f\u0438\u0441\u044a\u0446\u0438 \u0437\u0430\u0441\u0442\u0440\u0430\u0448\u0430\u0432\u0430\u0449\u0438 \u0432\u0430\u0448\u0430\u0442\u0430 \u0441\u0438\u0433\u0443\u0440\u043d\u043e\u0441\u0442. \u0418\u0437\u043f\u043e\u043b\u0437\u0432\u0430 \u0441\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u0435\u043d \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043a\u043e\u0439\u0442\u043e \u0437\u0430\u0449\u0438\u0442\u0430\u0432\u0430 \u0432\u0430\u0448\u0430\u0442\u0430 \u0430\u043d\u043e\u043d\u0438\u043c\u043d\u043e\u0441\u0442 \u0438 \u0438\u0437\u043f\u0440\u0430\u0449\u0430 \u0441\u0430\u043c\u043e SHA256 \u0441\u0443\u043c\u0430 \u0431\u0430\u0437\u0438\u0440\u0430\u043d\u0430 \u043d\u0430 \u0447\u0430\u0441\u0442 \u043e\u0442 \u0434\u043e\u043c\u0435\u0439\u043d\u0430 \u043a\u043e\u0439\u0442\u043e \u043f\u043e\u0441\u0435\u0449\u0430\u0432\u0430\u0442\u0435.",
"use_adguard_parental": "\u0412\u043a\u043b\u044e\u0447\u0438 AdGuard \u0420\u043e\u0434\u0438\u0442\u0435\u043b\u0441\u043a\u0438 \u041d\u0430\u0434\u0437\u043e\u0440",
"use_adguard_parental_hint": "\u041c\u043e\u0434\u0443\u043b XXX \u0432 AdGuard Home \u0449\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u0438 \u0434\u0430\u043b\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u0442\u0430 \u0438\u043c\u0430 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0438 \u0437\u0430 \u0432\u044a\u0437\u0432\u044a\u0441\u0442\u043d\u0438. \u0418\u0437\u043f\u043e\u043b\u0437\u0432\u0430 \u0441\u0435 \u0441\u044a\u0449\u0438\u044f API \u0437\u0430 \u0430\u043d\u043e\u043d\u0438\u043c\u043d\u043e\u0441\u0442 \u043a\u0430\u0442\u043e \u043f\u0440\u0438 \u043c\u043e\u0434\u0443\u043b\u0430 \u0437\u0430 \u0421\u0438\u0433\u0443\u0440\u043d\u043e\u0441\u0442.",
"enforce_safe_search": "\u0412\u043a\u043b\u044e\u0447\u0438 \u0411\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e \u0422\u044a\u0440\u0441\u0435\u043d\u0435",
"enforce_save_search_hint": "AdGuard Home \u043f\u0440\u0438\u043b\u0430\u0433\u0430 \u0411\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e \u0422\u044a\u0440\u0441\u0435\u043d\u0435 \u0432 \u0441\u043b\u0435\u0434\u043d\u0438\u0442\u0435 \u0442\u044a\u0440\u0441\u0430\u0447\u043a\u0438 \u0438 \u0441\u0430\u0439\u0442\u043e\u0432\u0435: Google, Youtube, Bing, \u0438 Yandex.",
"no_servers_specified": "\u041d\u044f\u043c\u0430 \u0438\u0437\u0431\u0440\u0430\u043d\u0438 \u0443\u0441\u043b\u0443\u0433\u0438",
"no_settings": "\u041d\u044f\u043c\u0430 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438",
"general_settings": "\u041e\u0431\u0449\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438",
"upstream_dns": "\u0413\u043b\u0430\u0432\u0435\u043d DNS \u0441\u044a\u0440\u0432\u044a\u0440",
"upstream_dns_hint": "\u0410\u043a\u043e \u043e\u0441\u0442\u0430\u0432\u0438\u0442\u0435 \u043f\u0440\u0430\u0437\u043d\u043e, AdGuard Home \u0449\u0435 \u0438\u0437\u043f\u043e\u043b\u0437\u0432\u0430 <a href='https:\/\/1.1.1.1\/' target='_blank'>Cloudflare DNS<\/a> \u0437\u0430 \u0433\u043b\u0430\u0432\u0435\u043d. \u0418\u0437\u043f\u043e\u043b\u0437\u0432\u0430\u0439 tls:\/\/ \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043a\u0430 \u0437\u0430 DNS \u0438\u0437\u043f\u043e\u043b\u0437\u0432\u0430\u0449\u0438 TLS \u0432\u0440\u044a\u0437\u043a\u0430.",
"test_upstream_btn": "\u0422\u0435\u0441\u0442\u0432\u0430\u0439 \u0433\u043b\u0430\u0432\u043d\u0438\u044f DNS",
"apply_btn": "\u041f\u0440\u0438\u043b\u043e\u0436\u0438",
"disabled_filtering_toast": "\u0417\u0430\u0431\u0440\u0430\u043d\u0438 \u0444\u0438\u043b\u0442\u0440\u0438\u0440\u0430\u043d\u0435\u0442\u043e",
"enabled_filtering_toast": "\u0420\u0430\u0437\u0440\u0435\u0448\u0438 \u0444\u0438\u0442\u0440\u0438\u0440\u0430\u043d\u0435\u0442\u043e",
"disabled_safe_browsing_toast": "\u0417\u0430\u0431\u0440\u0430\u043d\u0438 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e-\u0441\u044a\u0440\u0444\u0438\u0440\u0430\u043d\u0435",
"enabled_safe_browsing_toast": "\u0420\u0437\u0440\u0435\u0448\u0438 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e-\u0441\u044a\u0440\u0444\u0438\u0440\u0430\u043d\u0435",
"disabled_parental_toast": "\u0417\u0430\u0431\u0440\u0430\u043d\u0438 \u0420\u043e\u0434\u0438\u0442\u0435\u043b\u0441\u043a\u0438 \u041d\u0430\u0434\u0437\u043e\u0440",
"enabled_parental_toast": "\u0420\u0430\u0437\u0440\u0435\u0448\u0438 \u0420\u043e\u0434\u0438\u0442\u0435\u043b\u0441\u043a\u0438 \u041d\u0430\u0434\u0437\u043e\u0440",
"disabled_safe_search_toast": "\u0417\u0430\u0431\u0440\u0430\u043d\u0438 \u0411\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e \u0422\u044a\u0440\u0441\u0435\u043d\u0435",
"enabled_save_search_toast": "\u0420\u0430\u0437\u0440\u0435\u0448\u0438 \u0411\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e \u0422\u044a\u0440\u0441\u0435\u043d\u0435",
"enabled_table_header": "\u0420\u0430\u0437\u0440\u0435\u0448\u0438",
"name_table_header": "\u0418\u043c\u0435",
"filter_url_table_header": "URL \u0444\u0438\u043b\u0442\u044a\u0440",
"rules_count_table_header": "\u041f\u0440\u0430\u0432\u0438\u043b\u0430 \u043e\u0431\u0449\u043e",
"last_time_updated_table_header": "\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u043e \u043e\u0431\u043d\u043e\u0432\u0435\u043d",
"actions_table_header": "\u0414\u0435\u0439\u0441\u0442\u0432\u0438\u044f",
"delete_table_action": "\u0418\u0437\u0442\u0440\u0438\u0439",
"filters_and_hosts": "\u0427\u0435\u0440\u043d\u0438 \u0441\u043f\u0438\u0441\u044a\u0446\u0438 \u0441 \u043e\u0431\u0449\u0438 \u0438 \u043c\u0435\u0441\u0442\u043d\u0438 \u0444\u0438\u043b\u0442\u0440\u0438",
"filters_and_hosts_hint": "AdGuard Home \u0440\u0430\u0437\u0431\u0438\u0440\u0430 adblock \u0438 host \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441.",
"no_filters_added": "\u041d\u044f\u043c\u0430 \u0434\u043e\u0431\u0430\u0432\u0435\u043d\u0438 \u0444\u0438\u043b\u0442\u0440\u0438",
"add_filter_btn": "\u0414\u043e\u0431\u0430\u0432\u0438 \u0444\u0438\u043b\u0442\u044a\u0440",
"cancel_btn": "\u041e\u0442\u043a\u0430\u0436\u0438",
"enter_name_hint": "\u0412\u044a\u0432\u0435\u0434\u0438 \u0438\u043c\u0435",
"enter_url_hint": "\u0412\u044a\u0432\u0435\u0434\u0438 URL",
"check_updates_btn": "\u041f\u0440\u043e\u0432\u0435\u0440\u0438 \u0437\u0430 \u0430\u043a\u0442\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f",
"new_filter_btn": "\u0412\u044a\u0432\u0435\u0434\u0438 \u043d\u043e\u0432 \u0444\u0438\u043b\u0442\u044a\u0440",
"enter_valid_filter_url": "\u041c\u043e\u043b\u044f \u0432\u044a\u0432\u0435\u0434\u0435\u0442\u0435 \u0432\u0430\u043b\u0438\u0434\u0435\u043d URL \u0437\u0430 \u0444\u0438\u043b\u0442\u044a\u0440\u0430 \u0438\u043b\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u0435\u0442\u0435 host \u043f\u0440\u0430\u0432\u043e\u043f\u0438\u0441\u0430.",
"custom_filter_rules": "\u041c\u0435\u0441\u0442\u043d\u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0437\u0430 \u0444\u0438\u043b\u0442\u0440\u0438\u0440\u0430\u043d\u0435",
"custom_filter_rules_hint": "\u0412\u044a\u0432\u0435\u0436\u0434\u0430\u0439\u0442\u0435 \u0432\u0441\u044f\u043a\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u043e \u043d\u0430 \u043d\u043e\u0432 \u0440\u0435\u0434. \u041c\u043e\u0436\u0435 \u0434\u0430 \u0438\u0437\u043f\u043e\u043b\u0437\u0432\u0430\u0442\u0435 adblock \u0438\u043b\u0438 hosts \u0444\u0430\u0439\u043b\u043e\u0432 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441.",
"examples_title": "\u041f\u0440\u0438\u043c\u0435\u0440\u0438",
"example_meaning_filter_block": "\u0411\u043b\u043e\u043a\u0438\u0440\u0430\u0439 \u0434\u043e\u0441\u0442\u044a\u043f \u0434\u043e \u0434\u043e\u043c\u0435\u0439\u043d example.org \u0438 \u0432\u0441\u0438\u0447\u043a\u0438 \u043f\u043e\u0434 \u0434\u043e\u043c\u0435\u0439\u043d\u0438.",
"example_meaning_filter_whitelist": "\u0420\u0430\u0437\u0440\u0435\u0448\u0438 \u0434\u043e\u0441\u0442\u044a\u043f \u0434\u043e \u0434\u043e\u043c\u0435\u0439\u043d example.org \u0438 \u0432\u0441\u0438\u0447\u043a\u0438\u0442\u0435 \u043c\u0443 \u043f\u043e\u0434 \u0434\u043e\u043c\u0435\u0439\u043d\u0438.",
"example_meaning_host_block": "AdGuard Home \u0449\u0435 \u043e\u0442\u0433\u043e\u0432\u043e\u0440\u0438 \u0441 127.0.0.1 = \u043f\u0440\u0430\u0437\u0435\u043d \u0430\u0434\u0440\u0435\u0441 \u0437\u0430 \u0434\u043e\u043c\u0435\u0439\u043d example.org (\u043d\u043e \u043d\u0435 \u0438 \u0437\u0430 \u043f\u043e\u0434 \u0434\u043e\u043c\u0435\u0439\u043d\u0438).",
"example_comment": "! \u0422\u043e\u0432\u0430 \u0435 \u043a\u043e\u043c\u0435\u043d\u0442\u0430\u0440",
"example_comment_meaning": "\u043f\u0440\u0438\u043c\u0435\u0440 \u0437\u0430 \u043a\u043e\u043c\u0435\u043d\u0442\u0430\u0440",
"example_comment_hash": "# \u0422\u043e\u0432\u0430 \u0435 \u0441\u044a\u0449\u043e \u043a\u043e\u043c\u0435\u043d\u0442\u0430\u0440",
"example_regex_meaning": "\u0411\u043b\u043e\u043a\u0438\u0440\u0430\u0439 \u0434\u043e\u0441\u0442\u044a\u043f \u0434\u043e \u0434\u043e\u043c\u0435\u0439\u043d\u0438 \u043a\u043e\u0439\u0442\u043e \u0441\u044a\u0432\u043f\u0430\u0434\u0430\u0442 \u0441\u044a\u0441 \u0441\u043b\u0435\u0434\u043d\u043e\u0442\u043e",
"example_upstream_regular": "\u043a\u043b\u0430\u0441\u0438\u0447\u0435\u0441\u043a\u0438 DNS (UDP \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b)",
"example_upstream_dot": "\u043a\u0440\u0438\u043f\u0442\u0438\u0440\u0430\u043d <0>DNS-\u0432\u044a\u0440\u0445\u0443-TLS<\/0>",
"example_upstream_doh": "\u043a\u0440\u0438\u043f\u0442\u0438\u0440\u0430\u043d <0>DNS-\u0432\u044a\u0440\u0445\u0443-HTTPS<\/0>",
"example_upstream_sdns": "\u043c\u043e\u0436\u0435 \u0434\u0430 \u043f\u043e\u043b\u0437\u0432\u0430\u0442\u0435 <0>DNS \u041f\u043e\u0434\u043f\u0438\u0441\u0432\u0430\u043d\u0435<\/0> \u0437\u0430 <1>DNSCrypt<\/1> \u0438\u043b\u0438 <2>DNS-\u0432\u044a\u0440\u0445\u0443-HTTPS<\/2> \u0441\u044a\u0440\u0432\u044a\u0440\u0438",
"example_upstream_tcp": "\u043a\u043b\u0430\u0441\u0438\u0447\u0435\u0441\u043a\u0438 DNS (TCP \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b)",
"all_filters_up_to_date_toast": "\u0412\u0441\u0438\u0447\u043a\u0438 \u0444\u0438\u043b\u0442\u0438 \u0441\u0430 \u0430\u043a\u0442\u0443\u0430\u043b\u0438\u0437\u0438\u0440\u0430\u043d\u0438",
"updated_upstream_dns_toast": "\u0413\u043b\u043e\u0431\u0430\u043b\u043d\u0438\u0442\u0435 DNS \u0441\u044a\u0440\u0432\u044a\u0440\u0438 \u0441\u0430 \u043e\u0431\u043d\u043e\u0432\u0435\u043d\u0438",
"dns_test_ok_toast": "\u0412\u044a\u0432\u0435\u0434\u0435\u043d\u0438\u0442\u0435 DNS \u0441\u044a\u0440\u0432\u044a\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u044f\u0442 \u043a\u043e\u0440\u0435\u043a\u0442\u043d\u043e",
"dns_test_not_ok_toast": "\u0421\u044a\u0440\u0432\u044a\u0440 \"{{key}}\": \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0438, \u043c\u043e\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u0435\u0442\u0435 \u0434\u0430\u043b\u0438 \u0435 \u0432\u044a\u0432\u0435\u0434\u0435\u043d \u043a\u043e\u0440\u0435\u043a\u0442\u043d\u043e",
"unblock_btn": "\u041e\u0442\u0431\u043b\u043e\u043a\u0438\u0440\u0430\u0439",
"block_btn": "\u0411\u043b\u043e\u043a\u0438\u0440\u0430\u0439",
"time_table_header": "\u0412\u0440\u0435\u043c\u0435",
"domain_name_table_header": "\u0418\u043c\u0435 \u043d\u0430 \u0434\u043e\u043c\u0435\u0439\u043d",
"type_table_header": "\u0422\u0438\u043f",
"response_table_header": "\u041e\u0442\u0433\u043e\u0432\u043e\u0440",
"client_table_header": "\u041a\u043b\u0438\u0435\u043d\u0442",
"empty_response_status": "\u041f\u0440\u0430\u0437\u0435\u043d",
"show_all_filter_type": "\u041f\u043e\u043a\u0430\u0436\u0438 \u0432\u0441\u0438\u0447\u043a\u0438",
"show_filtered_type": "\u041f\u043e\u043a\u0430\u0436\u0438 \u0444\u0438\u043b\u0442\u0440\u0438\u0440\u0430\u043d\u0438",
"no_logs_found": "\u041d\u044f\u043c\u0430 \u0438\u0441\u0442\u043e\u0440\u0438\u044f",
"disabled_log_btn": "\u0417\u0430\u0431\u0440\u0430\u043d\u0438 \u0438\u0441\u0442\u043e\u0440\u0438\u044f\u0442\u0430",
"download_log_file_btn": "\u0421\u043c\u044a\u043a\u043d\u0438 \u0438\u0441\u0442\u043e\u0440\u0438\u044f\u0442\u0430",
"refresh_btn": "\u041e\u0431\u043d\u043e\u0432\u0438",
"enabled_log_btn": "\u0420\u0430\u0437\u0440\u0435\u0448\u0438 \u0438\u0441\u0442\u043e\u0440\u0438\u044f\u0442\u0430",
"last_dns_queries": "\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0442\u0435 5000 DNS \u0437\u0430\u044f\u0432\u043a\u0438",
"previous_btn": "\u041f\u0440\u0435\u0434\u0445\u043e\u0434\u0435\u043d",
"next_btn": "\u0421\u043b\u0435\u0434\u0432\u0430\u0449",
"loading_table_status": "\u0417\u0430\u0440\u0435\u0436\u0434\u0430\u043d\u0435...",
"page_table_footer_text": "\u0421\u0442\u0440\u0430\u043d\u0438\u0446\u0430",
"of_table_footer_text": "\u043e\u0442",
"rows_table_footer_text": "\u0440\u0435\u0434\u043e\u0432\u0435",
"updated_custom_filtering_toast": "\u041e\u0431\u043d\u043e\u0432\u0435\u043d\u0438 \u043c\u0435\u0441\u0442\u043d\u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0437\u0430 \u0444\u0438\u043b\u0442\u0440\u0438\u0440\u0430\u043d\u0435",
"rule_removed_from_custom_filtering_toast": "\u041f\u0440\u0435\u043c\u0430\u0445\u043d\u0430\u0442\u043e \u043e\u0442 \u043c\u0435\u0441\u0442\u043d\u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0437\u0430 \u0444\u0438\u043b\u0442\u0440\u0438\u0440\u0430\u043d\u0435",
"rule_added_to_custom_filtering_toast": "\u0414\u043e\u0431\u0430\u0432\u0435\u043d\u043e \u0434\u043e \u043c\u0435\u0441\u0442\u043d\u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0437\u0430 \u0444\u0438\u043b\u0442\u0440\u0438\u0440\u0430\u043d\u0435",
"query_log_disabled_toast": "\u0418\u0441\u0442\u043e\u0440\u0438\u044f\u0442\u0430 \u0435 \u0437\u0430\u0431\u0440\u0430\u043d\u0435\u043d\u0430",
"query_log_enabled_toast": "\u0418\u0441\u0442\u043e\u0440\u0438\u044f\u0442\u0430 \u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0430",
"source_label": "\u0418\u0437\u0442\u043e\u0447\u043d\u0438\u043a",
"found_in_known_domain_db": "\u041d\u0430\u043c\u0435\u0440\u0435\u043d \u0432 \u0441\u043f\u0438\u0441\u044a\u0446\u0438\u0442\u0435 \u0441 \u0434\u043e\u043c\u0435\u0439\u043d\u0438.",
"category_label": "\u041a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u044f",
"rule_label": "\u041f\u0440\u0430\u0432\u0438\u043b\u043e",
"filter_label": "\u0424\u0438\u043b\u0442\u044a\u0440",
"unknown_filter": "\u041d\u0435\u043f\u043e\u0437\u043d\u0430\u0442 \u0444\u0438\u043b\u0442\u044a\u0440 {{filterId}}",
"install_welcome_title": "\u0414\u043e\u0431\u0440\u0435 \u0434\u043e\u0448\u043b\u0438 \u0432 AdGuard Home!",
"install_welcome_desc": "AdGuard Home e \u043c\u0440\u0435\u0436\u043e\u0432\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0437\u0430 \u0431\u043b\u043e\u043a\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u0440\u0435\u043a\u043b\u0430\u043c\u0438 \u0438 \u0442\u0440\u0430\u043a\u0435\u0440\u0438 \u043d\u0430 DNS \u043d\u0438\u0432\u043e. \u0421\u044a\u0437\u0434\u0430\u0434\u0435\u043d\u043e \u0435 \u0437\u0430 \u0434\u0430 \u0432\u0438 \u0434\u0430\u0434\u0435 \u043f\u044a\u043b\u0435\u043d \u043a\u043e\u043d\u0442\u0440\u043e\u043b \u043d\u0430\u0434 \u043c\u0440\u0435\u0436\u0430\u0442\u0430 \u0438 \u0432\u0441\u0438\u0447\u043a\u0438\u0442\u0435 \u0432\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430, \u0431\u0435\u0437 \u0434\u0430 \u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0434\u043e\u043f\u044a\u043b\u043d\u0438\u0442\u0435\u043b\u043d\u043e \u0438\u043d\u0441\u0442\u0430\u043b\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u0434\u0440\u0443\u0433 \u0441\u043e\u0444\u0442\u0443\u0435\u0440.",
"install_settings_title": "\u0410\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044f",
"install_settings_listen": "\u0410\u043a\u0442\u0438\u0432\u043d\u0438 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0438",
"install_settings_port": "\u041f\u043e\u0440\u0442",
"install_settings_interface_link": "\u0412\u0430\u0448\u0430\u0442\u0430 AdGuard Home \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0437\u0430 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u0449\u0435 \u0435 \u0434\u043e\u0441\u0442\u044a\u043f\u043d\u0430 \u043d\u0430 \u0442\u043e\u0437\u0438 \u0430\u0434\u0440\u0435\u0441:",
"form_error_port": "\u041c\u043e\u043b\u044f \u0432\u044a\u0432\u0435\u0434\u0435\u0442\u0435 \u0432\u0430\u043b\u0438\u0434\u0435\u043d \u043f\u043e\u0440\u0442",
"install_settings_dns": "DNS \u0441\u044a\u0440\u0432\u044a\u0440",
"install_settings_dns_desc": "\u0417\u0430 \u0434\u0430 \u0440\u0430\u0431\u043e\u0442\u0438, \u0449\u0435 \u0442\u0440\u044f\u0431\u0432\u0430 \u0434\u0430 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u0435 \u0432\u0430\u0448\u0438\u044f\u0442 \u0440\u0443\u0442\u0435\u0440 \u0438\u043b\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0434\u0430 \u043f\u043e\u043b\u0437\u0432\u0430\u0442 DNS \u0441\u044a\u0440\u0432\u044a\u0440 \u0441 \u0430\u0434\u0440\u0435\u0441:",
"install_settings_all_interfaces": "\u0412\u0441\u0438\u0447\u043a\u0438 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0438",
"install_auth_title": "\u0423\u0434\u043e\u0441\u0442\u043e\u0432\u0435\u0440\u044f\u0432\u0430\u043d\u0435",
"install_auth_desc": "\u041c\u043d\u043e\u0433\u043e \u0435 \u0432\u0430\u0436\u043d\u043e \u0434\u0430 \u0437\u0430\u0434\u0430\u0434\u0435\u0442\u0435 \u0438\u043c\u0435 \u0438 \u043f\u0430\u0440\u043e\u043b\u0430 \u0437\u0430 \u0434\u043e\u0441\u0442\u044a\u043f \u0434\u043e \u0432\u0430\u0448\u0438\u044f \u043f\u0430\u043d\u0435\u043b \u0437\u0430 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u043d\u0430 AdGuard Home. \u041f\u0440\u0435\u043f\u043e\u0440\u044a\u0447\u0432\u0430\u043c\u0435 \u0432\u0438 \u0434\u0430 \u0437\u0430\u0434\u0430\u0434\u0435\u0442\u0435 \u0438\u043c\u0435 \u0438 \u043f\u0430\u0440\u043e\u043b\u0430 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u0447\u0435 \u0433\u043e \u043f\u043e\u043b\u0437\u0432\u0430\u0442\u0435 \u0441\u0430\u043c\u043e \u0432 \u043a\u044a\u0449\u0438.",
"install_auth_username": "\u041f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b",
"install_auth_password": "\u041f\u0430\u0440\u043e\u043b\u0430",
"install_auth_confirm": "\u041f\u043e\u0442\u0432\u044a\u0440\u0434\u0435\u0442\u0435 \u043f\u0430\u0440\u043e\u043b\u0430\u0442\u0430",
"install_auth_username_enter": "\u0412\u044a\u0432\u0435\u0434\u0435\u0442\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b",
"install_auth_password_enter": "\u0412\u044a\u0432\u0435\u0434\u0435\u0442\u0435 \u043f\u0430\u0440\u043e\u043b\u0430",
"install_step": "\u0421\u0442\u044a\u043f\u043a\u0430",
"install_devices_title": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u0442\u0435 \u0432\u0430\u0448\u0435\u0442\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e",
"install_devices_desc": "\u0414\u0430 \u0437\u0430\u043f\u043e\u0447\u043d\u0435\u0442\u0435 \u0434\u0430 \u0438\u0437\u043f\u043e\u043b\u0437\u0432\u0430\u0442\u0435 AdGuard Home, \u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0434\u0430 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u0435 \u0432\u0430\u0448\u0438\u0442\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430.",
"install_submit_title": "\u041f\u043e\u0437\u0434\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f!",
"install_submit_desc": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0442\u0430 \u0435 \u0437\u0430\u0432\u044a\u0440\u0448\u0435\u043d\u0430, \u043c\u043e\u0436\u0435 \u0434\u0430 \u0437\u0430\u043f\u043e\u0447\u043d\u0435\u0442\u0435 \u0434\u0430 \u043f\u043e\u043b\u0437\u0432\u0430\u0442\u0435 AdGuard Home.",
"install_devices_router": "\u0420\u0443\u0442\u0435\u0440",
"install_devices_router_desc": "\u0410\u043a\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u0435 \u0432\u0430\u0448\u0438\u044f\u0442 \u0440\u0443\u0442\u0435\u0440 \u043d\u044f\u043c\u0430 \u043d\u0443\u0436\u0434\u0430 \u0440\u044a\u0447\u043d\u043e \u0434\u0430 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u0432\u0430\u0442\u0435 \u0432\u0441\u044f\u043a\u043e \u0435\u0434\u043d\u043e \u043e\u0442 \u0443\u0441\u0442\u0440\u0439\u0441\u0442\u0432\u0430\u0442\u0430 \u0432 \u043c\u0440\u0435\u0436\u0430\u0442\u0430.",
"install_devices_address": "AdGuard Home DNS \u0441\u044a\u0440\u0432\u044a\u0440\u044a\u0442 \u0435 \u043d\u0430 \u0441\u043b\u0435\u0434\u043d\u0438\u044f \u0430\u0434\u0440\u0435\u0441",
"install_devices_router_list_1": "\u041e\u0442\u0432\u043e\u0440\u0435\u0442\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u0442\u0430 \u0437\u0430 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043d\u0430 \u0432\u0430\u0448\u0438\u044f \u0440\u0443\u0442\u0435\u0440. \u041e\u0431\u0438\u043a\u043d\u043e\u0432\u0435\u043d\u043e \u0442\u044f \u0441\u0435 \u043d\u0430\u043c\u0438\u0440\u0430 \u043d\u0430 URL (\u0442\u0443\u043a http:\/\/192.168.0.1\/ \u0438\u043b\u0438 \u0442\u0443\u043a http:\/\/192.168.1.1\/). \u0417\u0430 \u0434\u043e\u0441\u0442\u044a\u043f \u043c\u043e\u0436\u0435 \u0434\u0430 \u0432\u0438 \u0442\u0440\u044f\u0431\u0432\u0430 \u043f\u0430\u0440\u043e\u043b\u0430. \u0410\u043a\u043e \u0441\u0442\u0435 \u0437\u0430\u0431\u0440\u0430\u0432\u0438\u043b\u0438 \u043f\u0430\u0440\u043e\u043b\u0430\u0442\u0430 \u043c\u043e\u0436\u0435 \u0434\u0430 \u044f \u0440\u0435\u0441\u0435\u0442\u043d\u0435\u0442\u0435 \u043a\u0430\u0442\u043e \u043d\u0430\u0442\u0438\u0441\u043d\u0435\u0442\u0430 \u0441\u043a\u0440\u0438\u0442\u0438\u044f \u0440\u0435\u0441\u0435\u0442 \u0431\u0443\u0442\u043e\u043d - \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u0442\u043e\u0432\u0430 \u0449\u0435 \u0440\u0435\u0441\u0435\u0442\u043d\u0435 \u0432\u0441\u0438\u0447\u043a\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043d\u0430 \u0440\u0443\u0442\u0435\u0440\u0430 \u0434\u043e \u0444\u0430\u0431\u0440\u0438\u0447\u043d\u0438! \u041d\u044f\u043a\u043e\u0439 \u0440\u0443\u0442\u0435\u0440\u0438 \u043c\u043e\u0433\u0430\u0442 \u0434\u0430 \u0431\u044a\u0434\u0430\u0442\u0435 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0438\u0440\u0430\u043d\u0438 \u043e\u0442 \u0441\u043e\u0444\u0442\u0443\u0435\u0440 \u0438\u043b\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u043a\u043e\u0439\u0442\u043e \u0431\u0438 \u0442\u0440\u044f\u0431\u0432\u0430\u043b\u043e \u0434\u0430 \u0435 \u0432\u0435\u0447\u0435 \u0438\u043d\u0441\u0442\u0430\u043b\u0438\u0440\u0430\u043d \u043d\u0430 \u043a\u043e\u043c\u043f\u044e\u0442\u044a\u0440\u0430\/\u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430 \u0432\u0438.",
"install_devices_router_list_2": "\u041d\u0430\u043c\u0435\u0440\u0435\u0442\u0430 DHCP\/DNS \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438. \u0412 \u043f\u043e\u0434 \u0440\u0430\u0437\u0434\u0435\u043b DHCP \u0440\u0437\u0433\u043b\u0435\u0434\u0430\u0439\u0442\u0435 \u0438 \u043d\u0430\u043c\u0435\u0440\u0435\u0442\u0435 \u043a\u044a\u0434\u0435 \u0435 \u043f\u043e\u043b\u0435\u0442\u043e \u0437\u0430 DNS \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0432 \u043a\u043e\u0435\u0442\u043e \u043c\u043e\u0436\u0435 \u0434\u0430 \u0432\u044a\u0432\u0435\u0434\u0435\u0442\u0435 \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0430\u043d\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0437\u0430 DNS \u0441\u044a\u0440\u0432\u044a\u0440\u0438.",
"install_devices_router_list_3": "\u0412\u044a\u0432\u0435\u0434\u0435\u0442\u0435 \u0430\u0434\u0440\u0435\u0441\u044a\u0442 \u043d\u0430 AdGuard Home \u0441\u044a\u0440\u0432\u044a\u0440\u0430.",
"install_devices_windows_list_1": "\u041e\u0442\u0432\u043e\u0440\u0435\u0442\u0435 \u041a\u043e\u043d\u0442\u0440\u043e\u043b\u043d\u0438\u044f \u041f\u0430\u043d\u0435\u043b \u043f\u0440\u0435\u0437 \u0421\u0442\u0430\u0440\u0442 \u043c\u0435\u043d\u044e \u0438\u043b\u0438 \u0447\u0440\u0435\u0437 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0442\u044a\u0440\u0441\u0435\u043d\u0435 \u043d\u0430 Windows.",
"install_devices_windows_list_2": "\u0412\u044a\u0440\u0432\u0435\u0442\u0435 \u0434\u043e \u041d\u0430\u0441\u0442\u0440\u0439\u043a\u0438 \u043d\u0430 \u041c\u0440\u0435\u0436\u0438 \u0438 \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u0438 \u043e\u0442 \u0442\u0430\u043c \u0438\u0437\u0431\u0435\u0440\u0435\u0442\u0435 \u041c\u0440\u0435\u0436\u0438 \u0438 \u0426\u0435\u043d\u0442\u044a\u0440 \u0437\u0430 \u0421\u043f\u043e\u0434\u0435\u043b\u044f\u043d\u0435.",
"install_devices_windows_list_3": "\u041e\u0442 \u043b\u044f\u0432\u043e \u043d\u0430 \u0435\u043a\u0440\u0430\u043d\u0430 \u043d\u0430\u043c\u0435\u0440\u0435\u0442\u0435 \u0421\u043c\u0435\u043d\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u043a\u0438 \u043d\u0430 \u043c\u0440\u0435\u0436\u043e\u0432\u0438\u044f \u0430\u0434\u0430\u043f\u0442\u0435\u0440 \u0438 \u043a\u043b\u0438\u043a\u043d\u0435\u0442\u0435 \u043d\u0430 \u043d\u0435\u0433\u043e.",
"install_devices_windows_list_4": "\u0418\u0437\u0431\u0435\u0440\u0435\u0442\u0435 \u0442\u043e\u0437\u0438 \u043a\u043e\u0439\u0442\u043e \u0435 \u0430\u043a\u0442\u0438\u0432\u0435\u043d, \u0434\u044f\u0441\u043d\u043e-\u043a\u043b\u0438\u043a\u0432\u0430\u043d\u0435 \u0438 \u0438\u0437\u0431\u0435\u0440\u0435\u0442\u0430 \u0421\u0432\u043e\u0439\u0441\u0442\u0432\u0430.",
"install_devices_windows_list_5": "\u041d\u0430\u043c\u0435\u0440\u0435\u0442\u0435 \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u041f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u0412\u0435\u0440\u0441\u0438\u044f 4 (TCP\/IP) \u0432 \u0441\u043f\u0438\u0441\u044a\u043a\u0430, \u0438\u0437\u0431\u0435\u0440\u0435\u0442\u0435 \u0438 \u043a\u043b\u0438\u043a\u043d\u0435\u0442\u0435 \u043e\u0442\u043d\u043e\u0432\u043e \u043d\u0430 \u0421\u0432\u043e\u0439\u0441\u0442\u0432\u0430.",
"install_devices_windows_list_6": "\u0418\u0437\u0431\u0435\u0440\u0435\u0442\u0435 \u0418\u0437\u043f\u043e\u043b\u0437\u0432\u0430\u0439 \u0441\u043b\u0435\u0434\u043d\u0438\u0442\u0435 \u0430\u0434\u0440\u0435\u0441\u0438 \u0437\u0430 DNS \u0441\u044a\u0440\u0441\u044a\u0440\u0438 \u0438 \u0432\u044a\u0432\u0435\u0434\u0435\u0442\u0435 \u0430\u0434\u0440\u0435\u0441\u0430 \u043d\u0430 AdGuard Home \u0441\u044a\u0440\u0432\u044a\u0440\u0430 \u0432\u0438.",
"install_devices_macos_list_1": "\u0426\u044a\u043a\u043d\u0435\u0442\u0435 \u043d\u0430 Apple \u0438\u043a\u043e\u043d\u043a\u0430\u0442\u0430 \u0438 \u0438\u0437\u0431\u0435\u0440\u0435\u0442\u0435 System Preferences...",
"install_devices_macos_list_2": "\u0426\u044a\u043a\u043d\u0435\u0442\u0435 \u043d\u0430 Network.",
"install_devices_macos_list_3": "\u0418\u0437\u0431\u0435\u0440\u0435\u0442\u0435 \u0437\u0435\u043b\u0435\u043d\u0430\u0442\u0430-\u0430\u043a\u0442\u0438\u0432\u043d\u0430 \u0432\u0440\u044a\u0437\u043a\u0430 \u0432 \u0441\u043f\u0438\u0441\u044a\u043a\u0430 \u0438 \u043a\u043b\u0438\u043a\u043d\u0435\u0442\u0435 \u043d\u0430 Advanced.",
"install_devices_macos_list_4": "\u0418\u0437\u0431\u0435\u0440\u0435\u0442\u0435 DNS \u0442\u0430\u0431 \u0438 \u043a\u043b\u0438\u043a\u043d\u0435\u0442\u0435 \u043d\u0430 + \u0437\u0430 \u0434\u0430 \u0432\u044a\u0432\u0435\u0434\u0435\u0442\u0435 \u0430\u0434\u0440\u0435\u0441\u0430 \u043d\u0430 AdGuard Home \u0441\u044a\u0440\u0432\u044a\u0440\u0430.",
"install_devices_android_list_1": "\u0418\u0437\u0431\u0435\u0440\u0435\u0442\u0435 Android \u041c\u0435\u043d\u044e \u043e\u0442 \u0434\u043e\u043c\u0430\u0448\u043d\u0438\u044f \u0435\u043a\u0440\u0430\u043d, \u0438 \u0446\u044a\u043a\u043d\u0435\u0442\u0435 \u043d\u0430 \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438.",
"install_devices_android_list_2": "\u0426\u044a\u043a\u043d\u0435\u0442\u0435 \u043d\u0430 Wi-Fi \u043c\u0435\u043d\u044e. \u041d\u0430 \u0435\u043a\u0440\u0430\u043d\u0430 \u0449\u0435 \u0441\u0435 \u043f\u043e\u044f\u0432\u0430\u0442 \u0432\u0441\u0438\u0447\u043a\u0438 \u0431\u0435\u0437\u0436\u0438\u0447\u043d\u0438 \u043f\u0440\u0435\u0436\u0438 (\u0442\u0430\u043c \u043d\u044f\u043c\u0430 \u0432\u044a\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442 \u0437\u0430 \u0432\u044a\u0432\u0435\u0436\u0434\u0430\u043d\u0435 \u043d\u0430 DNS \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438).",
"install_devices_android_list_3": "\u0426\u044a\u043a\u043d\u0435\u0442\u0435 \u0438 \u0437\u0430\u0434\u0440\u044a\u0436\u0434\u0435 \u0432\u044a\u0440\u0445\u0443 \u0412\u0438\u0435 \u0441\u0442\u0435 \u0441\u0432\u044a\u0440\u0437\u0430\u043d\u0438 \u0441.., \u0438 \u043a\u043b\u0438\u043a\u043d\u0435\u0442\u0435 \u043d\u0430 \u041c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u0430\u0439 \u043c\u0440\u0435\u0436\u0430.",
"install_devices_android_list_4": "\u041d\u0430 \u043d\u044f\u043a\u043e\u0439 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u043c\u043e\u0436\u0435 \u0434\u0430 \u0435 \u043d\u0435\u043e\u0445\u043e\u0434\u0438\u043c\u043e \u0434\u0430 \u043c\u0430\u0440\u043a\u0438\u0440\u0430\u0442\u0435 \u043f\u043e\u043a\u0430\u0436\u0438 \u0420\u0430\u0437\u0448\u0438\u0440\u0435\u043d\u0438, \u0437\u0430 \u0434\u0430 \u0432\u0438\u0434\u0438\u0442\u0435 \u0432\u0441\u0438\u0447\u043a\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438. \u0417\u0430 \u0434\u0430 \u043f\u0440\u043e\u043c\u0435\u043d\u0438\u0442\u0435 Android DNS \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438\u0442\u0435, \u043c\u043e\u0436\u0435 \u0434\u0430 \u0441\u0435 \u043d\u0430\u043b\u043e\u0436\u0438 \u0434\u0430 \u043f\u0440\u043e\u043c\u0435\u043d\u0438\u0442\u0435 IP \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438\u0442\u0435 \u043e\u0442 DHCP \u043d\u0430 \u0421\u0442\u0430\u0442\u0438\u0447\u043d\u0438.",
"install_devices_android_list_5": "\u041f\u0440\u043e\u043c\u0435\u043d\u0435\u0442\u0435 \u0441\u0442\u043e\u0439\u043d\u043e\u0441\u0442\u0438\u0442\u0435 \u043d\u0430 DNS 1 \u0438 DNS 2 \u0434\u0430 \u0438\u0437\u043f\u043e\u043b\u0437\u0432\u0430\u0442 AdGuard Home \u0441\u044a\u0440\u0432\u044a\u0440\u0430.",
"install_devices_ios_list_1": "\u041e\u0442 \u043d\u0430\u0447\u0430\u043b\u0435\u043d \u0435\u043a\u0440\u0430\u043d, \u0446\u044a\u043a\u043d\u0435\u0442\u0435 \u043d\u0430 Settings.",
"install_devices_ios_list_2": "\u0418\u0437\u0431\u0435\u0440\u0435\u0442\u0435 Wi-Fi \u043e\u0442 \u043b\u044f\u0432\u043e\u0442\u043e \u043c\u0435\u043d\u044e (\u0442\u0430\u043c \u043d\u044f\u043c\u0430 \u0432\u044a\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442 \u0437\u0430 \u0432\u044a\u0432\u0435\u0436\u0434\u0430\u043d\u0435 \u043d\u0430 DNS \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438).",
"install_devices_ios_list_3": "\u041a\u043b\u0438\u043d\u0435\u0442\u0435 \u043d\u0430 \u0438\u043c\u0435\u0442\u043e \u043d\u0430 \u0430\u043a\u0442\u0438\u0432\u043d\u0430\u0442\u0430 \u043c\u0440\u0435\u0436\u0430 \u043a\u044a\u043c \u043a\u043e\u044f\u0442\u043e \u0441\u0442\u0435 \u0441\u0432\u044a\u0440\u0437\u0430\u043d\u0438.",
"install_devices_ios_list_4": "\u0412 \u043f\u043e\u043b\u0435\u0442\u043e \u0437\u0430 DNS \u0438\u0437\u0431\u0435\u0440\u0435\u0442\u0435 \u0440\u044a\u0447\u043d\u043e \u0438 \u0432\u044a\u0432\u0435\u0434\u0435\u0442\u0435 \u0430\u0434\u0440\u0435\u0441\u0430 \u043d\u0430 AdGuard Home \u0441\u044a\u0440\u0432\u044a\u0440\u0430.",
"get_started": "\u0414\u0430 \u0437\u0430\u043f\u043e\u0447\u0432\u0430\u043c\u0435",
"next": "\u0421\u043b\u0435\u0434\u0432\u0430\u0449",
"open_dashboard": "\u041e\u0442\u0432\u043e\u0440\u0438 \u0442\u0430\u0431\u043b\u043e",
"install_saved": "\u0423\u0441\u043f\u0435\u0448\u043d\u043e \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u043e",
"encryption_title": "\u041a\u0440\u0438\u043f\u0442\u0438\u0440\u0430\u043d\u0435",
"encryption_desc": "\u041f\u043e\u0434\u044a\u0440\u0436\u0430 \u0441\u0435 \u0441\u0438\u0433\u0443\u0440\u043d\u0430 \u0432\u0440\u044a\u0437\u043a\u0430 (HTTPS\/TLS) \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u043d\u043e \u0437\u0430 DNS \u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u0442\u0430 \u0437\u0430 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044f",
"encryption_config_saved": "\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f\u0442\u0430 \u0435 \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u0430",
"encryption_server": "\u0418\u043c\u0435 \u043d\u0430 \u0441\u044a\u0440\u0432\u044a\u0440\u0430",
"encryption_server_enter": "\u0412\u044a\u0432\u0435\u0434\u0435\u0442\u0435 \u0438\u043c\u0435 \u043d\u0430 \u0434\u043e\u043c\u0435\u0439\u043d\u0430",
"encryption_server_desc": "\u0417\u0430 \u0434\u0430 \u0438\u0437\u043f\u043e\u043b\u0437\u0432\u0430\u0442\u0435 HTTPS, \u0442\u0440\u044f\u0431\u0432\u0430 \u0438\u043c\u0435\u0442\u043e \u043d\u0430 \u0441\u044a\u0440\u0432\u044a\u0440\u0430 \u0434\u0430 \u0441\u044a\u0432\u043f\u0430\u0434\u0430 \u0441 \u0442\u043e\u0432\u0430 \u043d\u0430 SSL \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430.",
"encryption_redirect": "\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u043d\u043e \u043f\u0440\u0435\u043d\u0430\u0441\u043e\u0447\u0432\u0430\u043d\u0435 \u043a\u044a\u043c HTTPS",
"encryption_redirect_desc": "\u0421\u043b\u0443\u0436\u0438 \u0437\u0430 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u043d\u043e \u043f\u0440\u0435\u043d\u0430\u0441\u043e\u0447\u0432\u0430\u043d\u0435 \u043e\u0442 HTTP \u043a\u044a\u043c HTTPS \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u0442\u0430 \u0437\u0430 \u0410\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u0432 AdGuard Home.",
"encryption_https": "HTTPS \u043f\u043e\u0440\u0442",
"encryption_https_desc": "\u0410\u043a\u043e \u0437\u0430\u0434\u0430\u0434\u0435\u0442\u0435 HTTPS \u043f\u043e\u0440\u0442, \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u0442\u0430 \u0437\u0430 \u0410\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u043d\u0430 AdGuard Home \u0449\u0435 \u0431\u044a\u0434\u0435 \u0434\u043e\u0441\u0442\u044a\u043f\u043d\u0430 \u043d\u0430 HTTPS, \u0438 \u0441\u044a\u0449\u043e \u0449\u0435 \u043e\u0442\u0433\u043e\u0432\u0430\u0440\u044f \u043d\u0430 DNS-\u0432\u044a\u0440\u0445\u0443-HTTPS '\/dns-\u0437\u0430\u043f\u0438\u0442\u0432\u0430\u043d\u0438\u044f'.",
"encryption_dot": "DNS-\u0432\u044a\u0440\u0445\u0443-TLS \u043f\u043e\u0440\u0442",
"encryption_dot_desc": "\u0410\u043a\u043e \u043f\u043e\u0440\u0442\u0430 \u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0430\u043d, AdGuard Home \u0449\u0435 \u0441\u0442\u0430\u0440\u0442\u0438\u0440\u0430 \u0438 \u0441\u044a\u0440\u0432\u044a\u0440 \u0437\u0430 DNS-\u0432\u044a\u0440\u0445\u0443-TLS.",
"encryption_certificates": "\u0421\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0438",
"encryption_certificates_desc": "\u0417\u0430 \u0434\u0430 \u0438\u0437\u043f\u043e\u043b\u0437\u0432\u0430\u0442\u0435 \u0441\u0438\u0433\u0443\u0440\u043d\u0430 \u0432\u0440\u044a\u0437\u043a\u0430, \u0449\u0435 \u0442\u0440\u044f\u0431\u0432\u0430 \u0434\u0430 \u043e\u0441\u0438\u0433\u0443\u0440\u0438\u0442\u0435 SSL \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0438 \u0437\u0430 \u0432\u0430\u0448\u0438\u044f \u0434\u043e\u043c\u0435\u0439\u043d. \u041c\u043e\u0436\u0435 \u0434\u0430 \u0437\u0430\u044f\u0432\u0438\u0442\u0435 \u0431\u0435\u0437\u043f\u043b\u0430\u0442\u0435\u043d \u043e\u0442 <0>{{link}}<\/0> \u0438\u043b\u0438 \u0434\u0430 \u0437\u0430\u043a\u0443\u043f\u0438\u0442\u0435 \u043e\u0442 Certificate Authorities.",
"encryption_certificates_input": "\u041a\u043e\u043f\u0438\u0440\u0430\u0439\/\u043f\u043e\u0441\u0442\u0430\u0432\u0438 \u0432\u0430\u0448\u0438\u044f PEM-\u043a\u043e\u0434\u0438\u0440\u0430\u043d \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u0442\u0443\u043a.",
"encryption_status": "\u0421\u044a\u0441\u0442\u043e\u044f\u043d\u0438\u0435",
"encryption_expire": "\u0413\u043e\u0434\u0435\u043d \u0434\u043e",
"encryption_key": "\u0427\u0430\u0441\u0442\u0435\u043d \u043a\u043b\u044e\u0447",
"encryption_key_input": "\u041a\u043e\u043f\u0438\u0440\u0430\u0439\/\u043f\u043e\u0441\u0442\u0430\u0432\u0438 \u0432\u0430\u0448\u0438\u044f PEM-\u043a\u043e\u0434\u0438\u0440\u0430\u043d \u0447p\u0430\u0441\u0442\u0435\u043d \u043a\u043b\u044e\u0447 \u0437\u0430 \u0432\u0430\u0448\u0438\u044f \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u0442\u0443\u043a.",
"encryption_enable": "\u0420\u0430\u0437p\u0435\u0448\u0438 \u043a\u0440\u0438\u043f\u0442\u0438\u0440\u0430\u043d\u0435 (HTTPS, DNS-\u0432\u044a\u0440\u0445\u0443-HTTPS, \u0438 DNS-\u0432\u044a\u0440\u0445\u0443-TLS)",
"encryption_enable_desc": "\u0410\u043a\u043e \u0441\u0442\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0438\u043b\u0438 \u043a\u0440\u0438\u043f\u0442\u0438\u0440\u0430\u043d\u0435, \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u0442\u0430 \u0437\u0430 \u0410\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u043d\u0430 AdGuard Home \u0449\u0435 \u0431\u044a\u0434\u0435 \u0434\u043e\u0441\u0442\u044a\u043f\u043d\u0430 \u043f\u0440\u0435\u0437 HTTPS, \u0438 DNS \u0441\u044a\u0440\u0432\u044a\u0440\u0430 \u0449\u0435 \u043e\u0442\u0433\u043e\u0432\u0430\u0440\u044f \u0441\u044a\u0449\u043e \u043d\u0430 \u0437\u0430\u043f\u0438\u0442\u0432\u0430\u043d\u0438\u044f DNS-\u0432\u044a\u0440\u0445\u0443-HTTPS \u0438 DNS-\u0432\u044a\u0440\u0445\u0443-TLS.",
"encryption_chain_valid": "\u0419\u0435\u0440\u0430\u0440\u0445\u0438\u044f\u0442\u0430 \u043e\u0442 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0438 \u0435 \u0432\u0430\u043b\u0438\u0434\u043d\u0430",
"encryption_chain_invalid": "\u0419\u0435\u0440\u0430\u0440\u0445\u0438\u044f\u0442\u0430 \u043e\u0442 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0438 \u0435 \u043d\u0435\u0432\u0430\u043b\u0438\u0434\u043d\u0430",
"encryption_key_valid": "\u0422\u043e\u0432\u0430 \u0435 \u0432\u0430\u043b\u0438\u0434\u0435\u043d {{type}} \u0447\u0430\u0441\u0442\u0435\u043d \u043a\u043b\u044e\u0447",
"encryption_key_invalid": "\u0422\u043e\u0432\u0430 \u0435 \u043d\u0435\u0432\u0430\u043b\u0438\u0434\u0435\u043d {{type}} \u0447\u0430\u0441\u0442\u0435\u043d \u043a\u043b\u044e\u0447",
"encryption_subject": "\u0422\u0435\u043c\u0430",
"encryption_issuer": "\u0418\u0437\u043f\u044a\u043b\u043d\u0438\u0442\u0435\u043b",
"encryption_hostnames": "\u0418\u043c\u0435\u043d\u0430 \u043d\u0430 \u0445\u043e\u0441\u0442\u0430",
"encryption_reset": "\u0421\u0438\u0433\u0443\u0440\u043d\u0438 \u043b\u0438 \u0441\u0442\u0435 \u0447\u0435 \u0438\u0441\u043a\u0430\u0442\u0435 \u0434\u0430 \u0438\u0437\u0442\u0440\u0438\u0435\u0442\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438\u0442\u0435 \u0437\u0430 \u043a\u0440\u0438\u043f\u0442\u0438\u0440\u0430\u043d\u0435?",
"topline_expiring_certificate": "\u0412\u0430\u0448\u0438\u044f\u0442 SSL \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u0438\u0437\u0442\u0438\u0447\u0430. \u041e\u0431\u043d\u043e\u0432\u0438 <0>\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0437\u0430 \u043a\u0440\u0438\u043f\u0442\u0438\u0440\u0430\u043d\u0435<\/0>.",
"topline_expired_certificate": "\u0412\u0430\u0448\u0438\u044f\u0442 SSL \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u0435 \u0438\u0437\u0442\u0435\u043a\u044a\u043b. \u041e\u0431\u043d\u043e\u0432\u0438 <0>\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0437\u0430 \u043a\u0440\u0438\u043f\u0442\u0438\u0440\u0430\u043d\u0435<\/0>.",
"form_error_port_range": "\u0412\u044a\u0432\u0435\u0434\u0435\u0442\u0435 \u043f\u043e\u0440\u0442 \u0432 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0430 80-65535",
"form_error_port_unsafe": "\u041d\u0435 \u0435 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e \u0434\u0430 \u0438\u0437\u043f\u043e\u043b\u0437\u0432\u0430\u0442\u0435 \u0442\u043e\u0437\u0438 \u043f\u043e\u0440\u0442",
"form_error_equal": "\u041d\u0435 \u0442\u0440\u044f\u0431\u0432\u0430 \u0434\u0430 \u0441\u044a\u0432\u043f\u0430\u0434\u0430",
"form_error_password": "\u041f\u0430\u0440\u043e\u043b\u0430\u0442\u0430 \u043d\u0435 \u0441\u044a\u0432\u043f\u0430\u0434\u0430",
"reset_settings": "\u0418\u0437\u0442\u0440\u0438\u0439 \u0432\u0441\u0438\u0447\u043a\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438",
"update_announcement": "\u0418\u043c\u0430 \u043d\u043e\u0432\u0430 AdGuard Home {{version}}! <0>\u0426\u044a\u043a\u043d\u0438 \u0442\u0443\u043a<\/0> \u0437\u0430 \u043f\u043e\u0432\u0435\u0447\u0435 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f."
"check_dhcp_servers": "Проверка за активен DHCP сървър",
"save_config": "Запиши настройките",
"enabled_dhcp": "DHCP е разрешен",
"disabled_dhcp": "DHCP е забранен",
"dhcp_title": "DHCP сървър (тестови!)",
"dhcp_description": "Ако рутера ви не раздава DHCP адреси, може да използвате вградения в AdGuard DHCP сървър.",
"dhcp_enable": "Рзреши DHCP сървъра",
"dhcp_disable": "Забрани DHCP сървъра",
"dhcp_not_found": "Вашата мрежа няма активен DHCP сървър. Безопасно е ползването на вградения DHCP сървър.",
"dhcp_found": "Вашата мрежа вече има активен DHCP сървър. Не е безопасно ползването на втори!",
"dhcp_leases": "DHCP раздадени адреси",
"dhcp_leases_not_found": "Няма намерени активни DHCP адреси",
"dhcp_config_saved": "Запиши конфигурацията на DHCP сървъра",
"form_error_required": "Задължително поле",
"form_error_ip_format": "Невалиден IPv4 адрес",
"form_error_positive": "Проверете дали е положително число",
"dhcp_form_gateway_input": "IP шлюз",
"dhcp_form_subnet_input": "Мрежова маска",
"dhcp_form_range_title": "Група от IP адреси",
"dhcp_form_range_start": "Първи адрес",
"dhcp_form_range_end": "Последен адрес",
"dhcp_form_lease_title": "Отдадени адреси (секунди)",
"dhcp_form_lease_input": "Отчет за раздадени адреси",
"dhcp_interface_select": "Изберете мрежов адаптер за DHCP",
"dhcp_hardware_address": "Хардуерни адреси (MAC)",
"dhcp_ip_addresses": "IP адреси",
"dhcp_table_hostname": "Име на устройство",
"dhcp_table_expires": "История",
"dhcp_warning": "Ако искате да използвате вградения DHCP сървър, трябва да няма друг активен DHCP в мрежата Ви!",
"city": "Град",
"response_details": "Подробности за отговора",
"request_details": "Поискайте подробности",
"back": "Назад",
"dashboard": "Табло",
"settings": "Настройки",
"filters": "Филтри",
"query_log": "История на заявките",
"faq": "ЧЗВ",
"version": "версия",
"address": "Адрес",
"protocol": "Протокол",
"on": "ВКЛЮЧЕНО",
"off": "ИЗКЛЮЧЕНО",
"copyright": "Авторско право",
"homepage": "Домашна страница",
"report_an_issue": "Съобщи за проблем",
"enable_protection": "Разреши защита",
"enabled_protection": "Защитата е разрешена",
"disable_protection": "Забрани защита",
"disabled_protection": "Защитата е забранена",
"refresh_statics": "Обнови статистиката",
"dns_query": "DNS запитвания",
"blocked_by": "<0>Блокирани от</0>",
"stats_malware_phishing": "вируси/атаки",
"stats_adult": "сайтове за възрастни",
"stats_query_domain": "Най-отваряни страници",
"for_last_24_hours": "за последните 24 часа",
"no_domains_found": "Няма намерени резултати",
"requests_count": "Сума на заявките",
"top_blocked_domains": "Най-блокирани страници",
"top_clients": "Най-активни IP адреси",
"no_clients_found": "Нямa намерени адреси",
"general_statistics": "Обща статисика",
"number_of_dns_query_24_hours": "Сума на DNS заявки за последните 24 часа",
"number_of_dns_query_blocked_24_hours": "Сума на блокирани DNS заявки от филтрите за реклама и местни",
"number_of_dns_query_blocked_24_hours_by_sec": "Сума на блокирани DNS заявки от AdGuard свързани със сигурността",
"number_of_dns_query_blocked_24_hours_adult": "Сума на блокирани сайтове за възрастни",
"enforced_save_search": "Активирано Безопасно Търсене",
"number_of_dns_query_to_safe_search": "Сума на DNS заявки при който е приложено Безопасно Търсене",
"average_processing_time": "Средно време за обработка",
"average_processing_time_hint": "Средно време за обработка на DNS заявки в милисекунди",
"block_domain_use_filters_and_hosts": "Блокирани домейни - общи и местни филтри",
"filters_block_toggle_hint": "Може да зададете собствени настройки в <a href='#filters'>Филтри</a>.",
"use_adguard_browsing_sec": "Използвайте AdGuard модул за сигурността",
"use_adguard_browsing_sec_hint": "Модул Сигурност в AdGuard Home проверява всяка страница която отваряте дали е в черните списъци застрашаващи вашата сигурност. Използва се програмен интерфейс който защитава вашата анонимност и изпраща само SHA256 сума базирана на част от домейна който посещавате.",
"use_adguard_parental": "Включи AdGuard Родителски Надзор",
"use_adguard_parental_hint": "Модул XXX в AdGuard Home ще провери дали страницата има материали за възвъстни. Използва се същия API за анонимност като при модула за Сигурност.",
"enforce_safe_search": "Включи Безопасно Търсене",
"enforce_save_search_hint": "AdGuard Home прилага Безопасно Търсене в следните търсачки и сайтове: Google, Youtube, Bing, и Yandex.",
"no_servers_specified": "Няма избрани услуги",
"general_settings": "Общи настройки",
"upstream_dns": "Главен DNS сървър",
"upstream_dns_hint": "Ако оставите празно, AdGuard Home ще използва <a href='https://1.1.1.1/' target='_blank'>Cloudflare DNS</a> за главен. Използвай tls:// представка за DNS използващи TLS връзка.",
"test_upstream_btn": "Тествай главния DNS",
"apply_btn": "Приложи",
"disabled_filtering_toast": "Забрани филтрирането",
"enabled_filtering_toast": "Разреши фитрирането",
"disabled_safe_browsing_toast": "Забрани безопасно-сърфиране",
"enabled_safe_browsing_toast": "Рзреши безопасно-сърфиране",
"disabled_parental_toast": "Забрани Родителски Надзор",
"enabled_parental_toast": "Разреши Родителски Надзор",
"disabled_safe_search_toast": "Забрани Безопасно Търсене",
"enabled_save_search_toast": "Разреши Безопасно Търсене",
"enabled_table_header": "Разреши",
"name_table_header": "Име",
"rules_count_table_header": "Правила общо",
"last_time_updated_table_header": "Последно обновен",
"actions_table_header": "Действия",
"delete_table_action": "Изтрий",
"filters_and_hosts_hint": "AdGuard Home разбира adblock и host синтаксис.",
"cancel_btn": "Откажи",
"enter_name_hint": "Въведи име",
"check_updates_btn": "Провери за актуализация",
"custom_filter_rules": "Местни правила за филтриране",
"custom_filter_rules_hint": "Въвеждайте всяко правило на нов ред. Може да използвате adblock или hosts файлов синтаксис.",
"examples_title": "Примери",
"example_meaning_filter_block": "Блокирай достъп до домейн example.org и всички под домейни.",
"example_meaning_filter_whitelist": "Разреши достъп до домейн example.org и всичките му под домейни.",
"example_meaning_host_block": "AdGuard Home ще отговори с 127.0.0.1 = празен адрес за домейн example.org (но не и за под домейни).",
"example_comment": "! Това е коментар",
"example_comment_meaning": "пример за коментар",
"example_comment_hash": "# Това е също коментар",
"example_regex_meaning": "блокирай достъп до домейни който съвпадат със следното",
"example_upstream_regular": "класически DNS (UDP протокол)",
"example_upstream_dot": "криптиран <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_sdns": "може да ползвате <a href='https://dnscrypt.info/stamps/' target='_blank'>DNS Подписване</a> за <a href='https://dnscrypt.info/' target='_blank'>DNSCrypt</a> или <a href='https://en.wikipedia.org/wiki/DNS_over_HTTPS' target='_blank'>DNS-върху-HTTPS</a> сървъри",
"example_upstream_tcp": "класически DNS (TCP протокол)",
"updated_upstream_dns_toast": "Глобалните DNS сървъри са обновени",
"dns_test_ok_toast": "Въведените DNS сървъри работят коректно",
"dns_test_not_ok_toast": "Сървър \"{{key}}\": не работи, моля проверете дали е въведен коректно",
"unblock": "Отблокирай",
"block": "Блокирай",
"time_table_header": "Време",
"date": "Дата",
"domain_name_table_header": "Име на домейн",
"type_table_header": "Тип",
"response_table_header": "Отговор",
"client_table_header": "Клиент",
"empty_response_status": "Празен",
"show_all_filter_type": "Покажи всички",
"show_filtered_type": "Покажи филтрирани",
"no_logs_found": "Няма история",
"refresh_btn": "Обнови",
"previous_btn": "Предходен",
"next_btn": "Следващ",
"loading_table_status": "Зареждане...",
"page_table_footer_text": "Страница",
"rows_table_footer_text": "редове",
"updated_custom_filtering_toast": "Обновени местни правила за филтриране",
"rule_removed_from_custom_filtering_toast": "Премахнато от местни правила за филтриране",
"rule_added_to_custom_filtering_toast": "Добавено до местни правила за филтриране",
"plain_dns": "Обикновен DNS",
"source_label": "Източник",
"found_in_known_domain_db": "Намерен в списъците с домейни.",
"category_label": "Категория",
"rule_label": "Правило",
"unknown_filter": "Непознат филтър {{filterId}}",
"install_welcome_title": "Добре дошли в AdGuard Home!",
"install_welcome_desc": "AdGuard Home e мрежово решение за блокиране на реклами и тракери на DNS ниво. Създадено е за да ви даде пълен контрол над мрежата и всичките ви устройства, без да е необходимо допълнително инсталиране на друг софтуер.",
"install_settings_title": "Администрация",
"install_settings_listen": "Активни интерфейси",
"install_settings_port": "Порт",
"install_settings_interface_link": "Вашата AdGuard Home страница за администрация ще е достъпна на този адрес:",
"form_error_port": "Моля въведете валиден порт",
"install_settings_dns": "DNS сървър",
"install_settings_dns_desc": "За да работи, ще трябва да настроите вашият рутер или устройства да ползват DNS сървър с адрес:",
"install_settings_all_interfaces": "Всички интерфейси",
"install_auth_title": "Удостоверяване",
"install_auth_desc": "Много е важно да зададете име и парола за достъп до вашия панел за администрация на AdGuard Home. Препоръчваме ви да зададете име и парола независимо че го ползвате само в къщи.",
"install_auth_username": "Потребител",
"install_auth_password": "Парола",
"install_auth_confirm": "Потвърдете паролата",
"install_auth_username_enter": "Въведете потребител",
"install_auth_password_enter": "Въведете парола",
"install_step": "Стъпка",
"install_devices_title": "Настройте вашето устройство",
"install_devices_desc": "Да започнете да използвате AdGuard Home, е необходимо да настроите вашите устройства.",
"install_submit_title": "Поздравления!",
"install_submit_desc": "Настройката е завършена, може да започнете да ползвате AdGuard Home.",
"install_devices_router": "Рутер",
"install_devices_router_desc": "Ако настроите вашият рутер няма нужда ръчно да настройвате всяко едно от устрйствата в мрежата.",
"install_devices_address": "AdGuard Home DNS сървърът е на следния адрес",
"install_devices_router_list_1": "Отворете страницата за настройки на вашия рутер. Обикновено тя се намира на URL (тук http://192.168.0.1/ или тук http://192.168.1.1/). За достъп може да ви трябва парола. Ако сте забравили паролата може да я ресетнете като натиснета скрития ресет бутон - внимание това ще ресетне всички настройки на рутера до фабрични! Някой рутери могат да бъдате администрирани от софтуер или приложение, който би трябвало да е вече инсталиран на компютъра/телефона ви.",
"install_devices_router_list_2": "Намерета DHCP/DNS настройки. В под раздел DHCP рзгледайте и намерете къде е полето за DNS настройка в което може да въведете персонализирани настройки за DNS сървъри.",
"install_devices_router_list_3": "Въведете адресът на AdGuard Home сървъра.",
"install_devices_windows_list_1": "Отворете Контролния Панел през Старт меню или чрез функция търсене на Windows.",
"install_devices_windows_list_2": "Вървете до Настрйки на Мрежи и Интернет и от там изберете Мрежи и Център за Споделяне.",
"install_devices_windows_list_3": "От ляво на екрана намерете Смени настроки на мрежовия адаптер и кликнете на него.",
"install_devices_windows_list_4": "Изберете този който е активен, дясно-кликване и изберета Свойства.",
"install_devices_windows_list_5": "Намерете Интернет Протокол Версия 4 (TCP/IP) в списъка, изберете и кликнете отново на Свойства.",
"install_devices_windows_list_6": "Изберете Използвай следните адреси за DNS сърсъри и въведете адреса на AdGuard Home сървъра ви.",
"install_devices_macos_list_1": "Цъкнете на Apple иконката и изберете System Preferences...",
"install_devices_macos_list_2": "Цъкнете на Network.",
"install_devices_macos_list_3": "Изберете зелената-активна връзка в списъка и кликнете на Advanced.",
"install_devices_macos_list_4": "Изберете DNS таб и кликнете на + за да въведете адреса на AdGuard Home сървъра.",
"install_devices_android_list_1": "Изберете Android Меню от домашния екран, и цъкнете на Настройки.",
"install_devices_android_list_2": "Цъкнете на Wi-Fi меню. На екрана ще се появат всички безжични прежи (там няма възможност за въвеждане на DNS настройки).",
"install_devices_android_list_3": "Цъкнете и задръжде върху Вие сте свързани с.., и кликнете на Модифицирай мрежа.",
"install_devices_android_list_4": "На някой устройства може да е неоходимо да маркирате покажи Разширени, за да видите всички настройки. За да промените Android DNS настройките, може да се наложи да промените IP настройките от DHCP на Статични.",
"install_devices_android_list_5": "Променете стойностите на DNS 1 и DNS 2 да използват AdGuard Home сървъра.",
"install_devices_ios_list_1": "От начален екран, цъкнете на Settings.",
"install_devices_ios_list_2": "Изберете Wi-Fi от лявото меню (там няма възможност за въвеждане на DNS настройки).",
"install_devices_ios_list_3": "Клинете на името на активната мрежа към която сте свързани.",
"install_devices_ios_list_4": "В полето за DNS изберете ръчно и въведете адреса на AdGuard Home сървъра.",
"get_started": "Да започваме",
"next": "Следващ",
"open_dashboard": "Отвори табло",
"install_saved": "Успешно записано",
"encryption_title": "Криптиране",
"encryption_desc": "Подържа се сигурна връзка (HTTPS/TLS) включително за DNS и страницата за администрация",
"encryption_config_saved": "Конфигурацията е успешно записана",
"encryption_server": "Име на сървъра",
"encryption_server_enter": "Въведете име на домейна",
"encryption_server_desc": "За да използвате HTTPS, трябва името на сървъра да съвпада с това на SSL сертификата.",
"encryption_redirect": "Автоматично пренасочване към HTTPS",
"encryption_redirect_desc": "Служи за автоматично пренасочване от HTTP към HTTPS на страницата за Администрация в AdGuard Home.",
"encryption_https": "HTTPS порт",
"encryption_https_desc": "Ако зададете HTTPS порт, страницата за Администрация на AdGuard Home ще бъде достъпна на HTTPS, и също ще отговаря на DNS-върху-HTTPS '/dns-запитвания'.",
"encryption_dot": "DNS-върху-TLS порт",
"encryption_dot_desc": "Ако порта е конфигуриран, AdGuard Home ще стартира и сървър за DNS-върху-TLS.",
"encryption_certificates": "Сертификати",
"encryption_certificates_desc": "За да използвате сигурна връзка, ще трябва да осигурите SSL сертификати за вашия домейн. Може да заявите безплатен от <0>{{link}}</0> или да закупите от Certificate Authorities.",
"encryption_certificates_input": "Копирай/постави вашия PEM-кодиран сертификат тук.",
"encryption_status": "Състояние",
"encryption_expire": "Годен до",
"encryption_key": "Частен ключ",
"encryption_key_input": "Копирай/постави вашия PEM-кодиран чpастен ключ за вашия сертификат тук.",
"encryption_enable": "Разpеши криптиране (HTTPS, DNS-върху-HTTPS, и DNS-върху-TLS)",
"encryption_enable_desc": "Ако сте разрешили криптиране, страницата за Администрация на AdGuard Home ще бъде достъпна през HTTPS, и DNS сървъра ще отговаря също на запитвания DNS-върху-HTTPS и DNS-върху-TLS.",
"encryption_chain_valid": "Йерархията от сертификати е валидна",
"encryption_chain_invalid": "Йерархията от сертификати е невалидна",
"encryption_key_valid": "Това е валиден {{type}} частен ключ",
"encryption_key_invalid": "Това е невалиден {{type}} частен ключ",
"encryption_subject": "Тема",
"encryption_issuer": "Изпълнител",
"encryption_hostnames": "Имена на хоста",
"encryption_reset": "Сигурни ли сте че искате да изтриете настройките за криптиране?",
"topline_expiring_certificate": "Вашият SSL сертификат изтича. Обнови <0>Настройки за криптиране</0>.",
"topline_expired_certificate": "Вашият SSL сертификат е изтекъл. Обнови <0>Настройки за криптиране</0>.",
"form_error_port_range": "Въведете порт в диапазона 80-65535",
"form_error_port_unsafe": "Не е безопасно да използвате този порт",
"form_error_equal": "Не трябва да съвпада",
"form_error_password": "Паролата не съвпада",
"reset_settings": "Изтрий всички настройки",
"update_announcement": "Има нова AdGuard Home {{version}}! <0>Цъкни тук</0> за повече информация.",
"disable_ipv6": "Изключете IPv6 протокола",
"show_blocked_responses": "Блокирано",
"port_53_faq_link": "Порт 53 често е зает от \"DNSStubListener\" или \"systemd-resolved\" услуги. Моля, прочетете <0>тази инструкция</0> как да решите това."
}

View File

@@ -0,0 +1,567 @@
{
"client_settings": "Nastavení klienta",
"example_upstream_reserved": "Můžete zadat DNS upstream <0>pro konkrétní doménu(y)</0>",
"upstream_parallel": "Použijte paralelní požadavky na urychlení řešení simultánním dotazováním na všechny navazující servery",
"parallel_requests": "Paralelní požadavky",
"load_balancing": "Optimalizace vytížení",
"load_balancing_desc": "Optimalizovaný dotaz na server. AdGuard Home použije vážený náhodný algoritmus k výběru serveru, takže nejrychlejší server bude používán častěji.",
"bootstrap_dns": "Bootstrap DNS servery",
"bootstrap_dns_desc": "Servery Bootstrap DNS se používají k řešení IP adres DoH/DoT, které zadáváte jako upstreamy.",
"check_dhcp_servers": "Zkontrolovat DHCP servery",
"save_config": "Uložit konfiguraci",
"enabled_dhcp": "DHCP server zapnutý",
"disabled_dhcp": "DHCP server vypnutý",
"dhcp_title": "DHCP server (experimentální!)",
"dhcp_description": "Pokud váš router neposkytuje možnost nastavit DHCP, můžete použít vlastní vestavěný DHCP server AdGuardu.",
"dhcp_enable": "Zapnout DHCP server",
"dhcp_disable": "Vypnout DHCP server",
"dhcp_not_found": "Je bezpečné zapnout vestavěný server DHCP - v síti jsme nenalezli žádné aktivní servery DHCP. Doporučujeme však, abyste to znovu zkontrolovali ručně, protože v současné době náš automatický test neposkytuje 100% záruku.",
"dhcp_found": "V síti byly nalezeny aktivní DHCP servery. Není bezpečné zapnout vestavěný DHCP server.",
"dhcp_leases": "Pronájem DHCP",
"dhcp_static_leases": "Statické pronájmy DHCP",
"dhcp_leases_not_found": "Nebyly nalezeny žádné pronájmy DHCP",
"dhcp_config_saved": "Konfigurace DHCP serveru byla uložena",
"form_error_required": "Povinné pole",
"form_error_ip4_format": "Neplatný formát IPv4",
"form_error_ip6_format": "Neplatný formát IPv6",
"form_error_ip_format": "Neplatný formát IP",
"form_error_mac_format": "Neplatný formát MAC",
"form_error_client_id_format": "Neplatný formát ID klienta",
"form_error_positive": "Musí být větší než 0",
"form_error_negative": "Musí být rovno nebo větší než 0",
"dhcp_form_gateway_input": "IP brána",
"dhcp_form_subnet_input": "Maska podsítě",
"dhcp_form_range_title": "Rozsah IP adres",
"dhcp_form_range_start": "Začátek rozsahu",
"dhcp_form_range_end": "Konec rozsahu",
"dhcp_form_lease_title": "Doba pronájmu DHCP (v sekundách)",
"dhcp_form_lease_input": "Doba trvání pronájmu",
"dhcp_interface_select": "Vybrat rozhraní DHCP",
"dhcp_hardware_address": "Hardwarová adresa",
"dhcp_ip_addresses": "IP adresa",
"ip": "IP adresa",
"dhcp_table_hostname": "Název hostitele",
"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_error": "Nebylo možné určit, zda je v síti jiný server DHCP.",
"dhcp_static_ip_error": "Pro použití serveru DHCP musí být nastavena statická IP adresa. Nepodařilo se zjistit, zda je toto síťové rozhraní nakonfigurováno pomocí statické adresy IP. Nastavte prosím statickou IP adresu ručně.",
"dhcp_dynamic_ip_found": "Váš systém používá konfiguraci dynamické IP adresy pro rozhraní <0>{{interfaceName}}</0>. Pro použití serveru DHCP musí být nastavena statická IP adresa. Vaše aktuální IP adresa je <0>{{ipAddress}}</0>. Automaticky nastavíme tuto IP adresu jako statickou, pokud stisknete tlačítko Zapnout DHCP.",
"dhcp_lease_added": "Statický pronájem \"{{key}}\" byl úspěšně přidán",
"dhcp_lease_deleted": "Statický pronájem \"{{key}}\" byl úspěšně odstraněn",
"dhcp_new_static_lease": "Nový statický pronájem",
"dhcp_static_leases_not_found": "Nebyly nalezeny žádné statické pronájmy DHCP",
"dhcp_add_static_lease": "Přidat statický pronájem",
"dhcp_reset": "Opravdu chcete resetovat konfiguraci DHCP?",
"country": "Země",
"city": "Město",
"delete_confirm": "Opravdu chcete odstranit \"{{key}}\"?",
"form_enter_hostname": "Zadejte název hostitele",
"error_details": "Podrobnosti chyby",
"response_details": "Detail odpovědi",
"request_details": "Detail požadavku",
"client_details": "Detaily klienta",
"details": "Detaily",
"back": "Zpět",
"dashboard": "Hlavní panel",
"settings": "Nastavení",
"filters": "Filtry",
"filter": "Filtr",
"query_log": "Protokol dotazů",
"compact": "Kompaktní",
"nothing_found": "Nic nenalezeno",
"faq": "FAQ",
"version": "Verze",
"address": "Adresa",
"protocol": "Protokol",
"on": "ZAPNUTO",
"off": "VYPNUTO",
"copyright": "Autorská práva",
"homepage": "Domovská stránka",
"report_an_issue": "Nahlásit problém",
"privacy_policy": "Zásady ochrany osobních údajů",
"enable_protection": "Zapnout ochranu",
"enabled_protection": "Ochrana zapnuta",
"disable_protection": "Vypnout ochranu",
"disabled_protection": "Ochrana vypnuta",
"refresh_statics": "Obnovit statistiky",
"dns_query": "Dotazy DNS",
"blocked_by": "<0>Blokováno filtry</0>",
"stats_malware_phishing": "Blokovaný malware/podvody",
"stats_adult": "Blokované stránky pro dospělé",
"stats_query_domain": "Nejčastěji dotazované domény",
"for_last_24_hours": "za posledních 24 hodin",
"for_last_days": "za posledních {{count}} dní",
"for_last_days_plural": "za posledních {{count}} dní",
"no_domains_found": "Nenalezeny žádné domény",
"requests_count": "Počet požadavků",
"top_blocked_domains": "Nejčastěji blokované domény",
"top_clients": "Nejčastější klienti",
"no_clients_found": "Nenalezeny žádní klienti",
"general_statistics": "Obecné statistiky",
"number_of_dns_query_days": "Počet DNS dotazů zpracovaných za posledních {{count}} dní",
"number_of_dns_query_days_plural": "Počet DNS dotazů zpracovaných za posledních {{count}} dní",
"number_of_dns_query_24_hours": "Počet DNS dotazů zpracovaných za posledních 24 hodin",
"number_of_dns_query_blocked_24_hours": "Počet požadavků DNS zablokovaných filtrem reklam a seznamy blokování hostitelů",
"number_of_dns_query_blocked_24_hours_by_sec": "Počet požadavků DNS zablokovaných AdGuard modulem Bezpečné prohlížení",
"number_of_dns_query_blocked_24_hours_adult": "Počet zablokovaných stránek pro dospělé",
"enforced_save_search": "Vynucené bezpečné vyhledávání",
"number_of_dns_query_to_safe_search": "Počet požadavků DNS na vyhledávače, při kterých bylo vynucené bezpečné vyhledávání",
"average_processing_time": "Průměrný čas zpracování",
"average_processing_time_hint": "Průměrný čas zpracování požadavků DNS v milisekundách",
"block_domain_use_filters_and_hosts": "Blokovat domény pomocí filtrů a seznamů adres",
"filters_block_toggle_hint": "Pravidla blokování můžete nastavit v nastavení <a href='#filters'>Filtry</a>.",
"use_adguard_browsing_sec": "Použít službu AdGuard Bezpečné prohlížení",
"use_adguard_browsing_sec_hint": "AdGuard Home zkontroluje, zda je doména na seznamu zakázaných ve službě Bezpečné prohlížení. Použije vyhledávací API přátelské k ochraně soukromí na provedení kontroly: na server je odeslána pouze krátká předpona SHA256 otisku názvu domény.",
"use_adguard_parental": "Použít službu AdGuard Rodičovská kontrola",
"use_adguard_parental_hint": "AdGuard Home zkontroluje, zda doména obsahuje materiály pro dospělé. Používá stejné API přátelské k ochraně osobních údajů jako služba Bezpečnost prohlížení.",
"enforce_safe_search": "Vynutit bezpečné vyhledávání",
"enforce_save_search_hint": "AdGuard Home může vynutit bezpečné vyhledávání v následujících vyhledávačích: Google, YouTube, Bing, DuckDuckGo, Yandex, Pixabay.",
"no_servers_specified": "Nebyly specifikovány žádné servery",
"general_settings": "Obecná nastavení",
"dns_settings": "Nastavení DNS",
"dns_blocklists": "DNS seznam blokovaných",
"dns_allowlists": "DNS seznam povolených",
"dns_blocklists_desc": "AdGuard Home bude blokovat domény na seznamu blokovaných.",
"dns_allowlists_desc": "Domény z DNS seznamu povolených budou povoleny, i když se nacházejí v některém ze seznamů blokovaných.",
"custom_filtering_rules": "Vlastní pravidla filtrování",
"encryption_settings": "Nastavení šifrování",
"dhcp_settings": "Nastavení DHCP",
"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.",
"test_upstream_btn": "Test upstreamů",
"upstreams": "Odesláno",
"apply_btn": "Použít",
"disabled_filtering_toast": "Vypnuté filtrování",
"enabled_filtering_toast": "Zapnuté filtrování",
"disabled_safe_browsing_toast": "Vypnuté bezpečné prohlížení",
"enabled_safe_browsing_toast": "Zapnuté bezpečné prohlížení",
"disabled_parental_toast": "Vypnutá Rodičovská kontrola",
"enabled_parental_toast": "Zapnutá Rodičovská kontrola",
"disabled_safe_search_toast": "Zapnuté bezpečné vyhledávání",
"enabled_save_search_toast": "Vypnuté bezpečné vyhledávání",
"enabled_table_header": "Zapnuto",
"name_table_header": "Název",
"list_url_table_header": "Seznam URL",
"rules_count_table_header": "Počet pravidel",
"last_time_updated_table_header": "Čas poslední aktualizace",
"actions_table_header": "Akce",
"request_table_header": "Požadavek",
"edit_table_action": "Upravit",
"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ů.",
"no_blocklist_added": "Nebyl přidán žádný seznam blokovaných",
"no_whitelist_added": "Nebyl přidán žádný seznam povolených",
"add_blocklist": "Přidat seznam blokovaných",
"add_allowlist": "Přidat seznam povolených",
"cancel_btn": "Zrušit",
"enter_name_hint": "Zadejte název",
"enter_url_or_path_hint": "Zadejte URL nebo úplnou cestu k seznamu",
"check_updates_btn": "Zkontrolovat aktualizace",
"new_blocklist": "Nový seznam blokovaných",
"new_allowlist": "Nový seznam povolených",
"edit_blocklist": "Upravit seznam blokovaných",
"edit_allowlist": "Upravit seznam povolených",
"choose_blocklist": "Vyberte seznamy zakázaných",
"choose_allowlist": "Vyberte seznamy povolených",
"enter_valid_blocklist": "Zadejte platnou adresu URL na seznam blokovaných.",
"enter_valid_allowlist": "Zadejte platnou adresu URL na seznam povolených.",
"form_error_url_format": "Neplatný formát URL",
"form_error_url_or_path_format": "Neplatná URL nebo úplná cesta k seznamu",
"custom_filter_rules": "Vlastní pravidla filtrování",
"custom_filter_rules_hint": "Na každý řádek vložte jedno pravidlo. Můžete použít buď pravidla blokování reklam nebo syntaxe hostitelských souborů.",
"examples_title": "Příklady",
"example_meaning_filter_block": "zablokovat přístup k doméně example.org a všem jejím subdoménám",
"example_meaning_filter_whitelist": "odblokovat přístup k doméně example.org a všem jejím subdoménám",
"example_meaning_host_block": "AdGuard Home nyní vrátí adresu 127.0.0.1 pro doménu example.org (ale ne pro její subdomény).",
"example_comment": "! Sem se přidává komentář",
"example_comment_meaning": "jen komentář",
"example_comment_hash": "# Také komentář",
"example_regex_meaning": "blokuje přístup doménám, které vyhovují regulárnímu výrazu",
"example_upstream_regular": "obyčejný DNS (přes UDP)",
"example_upstream_dot": "šifrovaný <0>DNS přes TLS</0>",
"example_upstream_doh": "šifrovaný <0>DNS přes HTTPS</0>",
"example_upstream_sdns": "můžete použít <0>DNS razítka</0> pro <1>DNSCrypt</1> nebo <2>DNS přes HTTPS</2> řešitele",
"example_upstream_tcp": "obyčejný DNS (přes TCP)",
"all_lists_up_to_date_toast": "Všechny seznamy jsou již aktuální",
"updated_upstream_dns_toast": "Aktualizované upstream DNS servery",
"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",
"unblock": "Odblokovat",
"block": "Blokovat",
"time_table_header": "Čas",
"date": "Datum",
"domain_name_table_header": "Název domény",
"domain_or_client": "Doména nebo klient",
"type_table_header": "Typ",
"response_table_header": "Odezva",
"response_code": "Kód odezvy",
"client_table_header": "Klient",
"empty_response_status": "Prázdná",
"show_all_filter_type": "Zobrazit vše",
"show_filtered_type": "Zobrazit filtrované",
"no_logs_found": "Nenalezeny žádné protokoly",
"refresh_btn": "Obnovit",
"previous_btn": "Předchozí",
"next_btn": "Další",
"loading_table_status": "Načítání...",
"page_table_footer_text": "Stránka",
"rows_table_footer_text": "řádky",
"updated_custom_filtering_toast": "Aktualizovaná vlastní pravidla filtrování",
"rule_removed_from_custom_filtering_toast": "Pravidlo odstraněno z vlastních pravidel filtrování",
"rule_added_to_custom_filtering_toast": "Pravidlo přidáno do vlastních pravidel filtrování",
"query_log_response_status": "Status: {{value}}",
"query_log_filtered": "Filtrováno pomocí {{filter}}",
"query_log_confirm_clear": "Opravdu chcete vymazat celý protokol dotazů?",
"query_log_cleared": "Protokol dotazů byl úspěšně vymazán",
"query_log_updated": "Protokol dotazů byl úspěšně aktualizován",
"query_log_clear": "Vymazat protokoly dotazů",
"query_log_retention": "Uchování protokolů dotazů",
"query_log_enable": "Povolit protokol",
"query_log_configuration": "Konfigurace protokolů",
"query_log_disabled": "Protokol dotazu je zakázán a lze jej nakonfigurovat v <0>nastavení</0>",
"query_log_strict_search": "Pro striktní vyhledávání použijte dvojité uvozovky",
"query_log_retention_confirm": "Opravdu chcete změnit uchovávání protokolu dotazů? Pokud snížíte hodnotu intervalu, některá data budou ztracena",
"anonymize_client_ip": "Anonymizovat IP klienta",
"anonymize_client_ip_desc": "Neukládat úplnou IP adresu klienta do protokolů a statistik",
"dns_config": "Konfigurace DNS serveru",
"dns_cache_config": "Konfigurace mezipaměti DNS",
"dns_cache_config_desc": "Zde můžete konfigurovat mezipaměť DNS",
"blocking_mode": "Režim blokování",
"default": "Výchozí",
"nxdomain": "NXDOMAIN",
"null_ip": "Nulová IP",
"custom_ip": "Vlastní IP",
"blocking_ipv4": "Blokování IPv4",
"blocking_ipv6": "Blokování IPv6",
"dns_over_https": "DNS přes HTTPS",
"dns_over_tls": "DNS přes TLS",
"plain_dns": "Čisté DNS",
"form_enter_rate_limit": "Zadejte rychlostní limit",
"rate_limit": "Rychlostní limit",
"edns_enable": "Povolit klientskou podsíť EDNS",
"edns_cs_desc": "Pokud je povoleno, AdGuard Home bude směřovat podsítě klientů na servery DNS.",
"rate_limit_desc": "Počet požadavků za sekundu, které smí jeden klient provádět (0: neomezeno)",
"blocking_ipv4_desc": "IP adresa, která se má vrátit v případě blokovaného požadavku typu A",
"blocking_ipv6_desc": "IP adresa, která se má vrátit v případě blokovaného požadavku typu AAAA",
"blocking_mode_default": "Výchozí: Odezva pomocí NXDOMAIN, pokud je blokováno pravidlem ve stylu Adblock; odezva pomocí IP adresy uvedené v pravidle, pokud je blokováno pravidlem /etc/hosts-style",
"blocking_mode_nxdomain": "NXDOMAIN: Odezva s kódem NXDOMAIN",
"blocking_mode_null_ip": "Nulová IP: Odezva s nulovou IP adresou (0.0.0.0 pro A; :: pro AAAA)",
"blocking_mode_custom_ip": "Vlastní IP. odezva s ručně nastavenou IP adresou",
"upstream_dns_client_desc": "Pokud toto pole ponecháte prázdné, AdGuard Home použije servery nakonfigurované v<0>DNS nastavení</0>.",
"tracker_source": "Zdroj slídiče",
"source_label": "Zdroj",
"found_in_known_domain_db": "Nalezeno v databázi známých domén",
"category_label": "Kategorie",
"rule_label": "Pravidlo",
"list_label": "Seznam",
"unknown_filter": "Neznámý filtr {{filterId}}",
"known_tracker": "Známý slídič",
"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_settings_title": "Administrátorské webové rozhraní",
"install_settings_listen": "Síťové rozhraní",
"install_settings_port": "Port",
"install_settings_interface_link": "Vaše administrátorské webové rozhraní AdGuard Home bude k dispozici na těchto adresách:",
"form_error_port": "Zadejte platnou hodnotu portu",
"install_settings_dns": "DNS server",
"install_settings_dns_desc": "Budete muset nakonfigurovat Vaše zařízení nebo router, aby používali DNS server na následujících adresách:",
"install_settings_all_interfaces": "Všechna rozhraní",
"install_auth_title": "Ověřování",
"install_auth_desc": "Doporučujeme Vám nakonfigurovat v administrátorském webovém rozhraní AdGuard Home ověření Vaší identity heslem. I když je přístupné pouze ve Vaší lokální síti, je stále důležité chránit jej před neomezeným přístupem.",
"install_auth_username": "Uživatelské jméno",
"install_auth_password": "Heslo",
"install_auth_confirm": "Potvrďte heslo",
"install_auth_username_enter": "Zadejte uživatelské jméno",
"install_auth_password_enter": "Zadejte heslo",
"install_step": "Krok",
"install_devices_title": "Nakonfigurujte vaše zařízení",
"install_devices_desc": "Chcete-li začít používat aplikaci AdGuard Home, musíte nakonfigurovat zařízení tak, aby ji mohla používat.",
"install_submit_title": "Gratulujeme!",
"install_submit_desc": "Nastavení je dokončeno a jste připraveni začít používat AdGuard Home.",
"install_devices_router": "Router",
"install_devices_router_desc": "Toto nastavení automaticky pokryje všechna zařízení připojená k Vašemu domácímu routeru a nebudete je muset konfigurovat ručně.",
"install_devices_address": "DNS server AdGuard Home používá následujíce adresy",
"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_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 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_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_4": "Vyberte své aktivní spojení, klikněte na něj pravým tlačítkem myši a zvolte Vlastnosti.",
"install_devices_windows_list_5": "V seznamu najděte Internet Protocol Version 4 (TCP/IP), vyberte jej a znovu klikněte na Vlastnosti.",
"install_devices_windows_list_6": "Zvolte Použít následující adresy serveru DNS a zadejte adresy AdGuard Home..",
"install_devices_macos_list_1": "Klikněte na ikonu Apple a přejděte na položku Systémové předvolby.",
"install_devices_macos_list_2": "Klikněte na Síť.",
"install_devices_macos_list_3": "Vyberte první připojení v seznamu a klepněte na tlačítko Pokročilé.",
"install_devices_macos_list_4": "Vyberte kartu DNS a zadejte adresy serveru AdGuard Home.",
"install_devices_android_list_1": "Na domovské obrazovce nabídky Android klepněte na Nastavení.",
"install_devices_android_list_2": "V nabídce klepněte na Wi-Fi. Zobrazí se obrazovka se seznamem všech dostupných sítí (není možné nastavit vlastní DNS pro mobilní připojení).",
"install_devices_android_list_3": "Dlouze stiskněte síť, ke které jste připojeni, a klepněte na položku Změnit síť.",
"install_devices_android_list_4": "V některých zařízeních bude pravděpodobně nutné zaškrtnout políčko Rozšířené a zobrazit další nastavení. Chcete-li upravit nastavení DNS systému Android, budete muset přepnout nastavení IP adresy z DHCP na Statickou.",
"install_devices_android_list_5": "Změňte nastavené hodnoty DNS 1 a DNS 2 na adresy serveru AdGuard Home.",
"install_devices_ios_list_1": "Na domovské obrazovce klepněte na Nastavení.",
"install_devices_ios_list_2": "V levé nabídce vyberte Wi-Fi (není možné nastavit vlastní DNS pro mobilní připojení).",
"install_devices_ios_list_3": "Klepněte na název aktuální aktivní sítě.",
"install_devices_ios_list_4": "Do políčka DNS zadejte adresy serveru AdGuard Home.",
"get_started": "Začínáme",
"next": "Další",
"open_dashboard": "Otevřít hlavní panel",
"install_saved": "Úspěšně uloženo",
"encryption_title": "Šifrování",
"encryption_desc": "Podpora šifrování (HTTPS/TLS) pro webové rozhraní DNS i administrátora",
"encryption_config_saved": "Konfigurace šifrování byla uložena",
"encryption_server": "Název serveru",
"encryption_server_enter": "Zadejte název domény",
"encryption_server_desc": "Abyste mohli používat protokol HTTPS, musíte zadat název serveru, který odpovídá vašemu certifikátu SSL.",
"encryption_redirect": "Automaticky přesměrovat na HTTPS",
"encryption_redirect_desc": "Pokud je zaškrtnuto, AdGuard Home vás automaticky přesměruje z adres HTTP na HTTPS.",
"encryption_https": "HTTPS port",
"encryption_https_desc": "Pokud je nakonfigurován port HTTPS, AdGuard Home administrátorské rozhraní bude přístupné přes HTTPS a bude také poskytovat DNS přes HTTPS na '/dns-query'.",
"encryption_dot": "DNS přes TLS port",
"encryption_dot_desc": "Pokud je tento port nakonfigurován, AdGuard Home bude na tomto portu spouštět DNS přes TLS server.",
"encryption_certificates": "Certifikáty",
"encryption_certificates_desc": "Chcete-li používat šifrování, musíte pro svou doménu poskytnout platný řetězec certifikátů SSL. Certifikát můžete získat bezplatně na adrese <0>{{link}}</ 0>, nebo jej můžete zakoupit od jednoho z důvěryhodných certifikačních úřadů.",
"encryption_certificates_input": "Zde můžete nakopírovat/vložit certifikáty PEM.",
"encryption_status": "Stav",
"encryption_expire": "Vyprší",
"encryption_key": "Osobní kód",
"encryption_key_input": "Zde můžete nakopírovat/vložit soukromý klíč k certifikátu PEM.",
"encryption_enable": "Povolit šifrování (HTTPS, DNS přes HTTPS a DNS přes TLS)",
"encryption_enable_desc": "Pokud je šifrování zapnuto, administrátorské rozhraní AdGuard Home bude pracovat přes HTTPS a DNS server bude naslouchat požadavky přes DNS přes HTTPS a DNS přes TLS.",
"encryption_chain_valid": "Certifikační řetězec je platný",
"encryption_chain_invalid": "Certifikační řetězec je neplatný",
"encryption_key_valid": "Toto je platný {{type}} osobní klíč",
"encryption_key_invalid": "Toto je neplatný {{type}} osobní klíč",
"encryption_subject": "Subjekt",
"encryption_issuer": "Vydavatel",
"encryption_hostnames": "Názvy hostitelů",
"encryption_reset": "Opravdu chcete obnovit nastavení šifrování?",
"topline_expiring_certificate": "Váš SSL certifikát brzy vyprší. Aktualizujte <0>Nastavení šifrování</0>.",
"topline_expired_certificate": "Váš SSL certifikát vypršel. Aktualizujte <0>Nastavení šifrování</0>.",
"form_error_port_range": "Zadejte hodnotu portu v rozmezí 80-65535",
"form_error_port_unsafe": "Toto není bezpečný port",
"form_error_equal": "Neměla by se shodovat",
"form_error_password": "Heslo se neshoduje",
"reset_settings": "Resetovat nastavení",
"update_announcement": "AdGuard Home {{version}} je nyní k dispozici! <0>Klikněte zde<0> pro více informací.",
"setup_guide": "Průvodce nastavením",
"dns_addresses": "Adresy DNS",
"dns_start": "Spouští se DNS server",
"dns_status_error": "Chyba při kontrole stavu DNS serveru",
"down": "Dolů",
"fix": "Opravit",
"dns_providers": "Zde je <0>seznam známých poskytovatelů DNS</0>, z nichž si můžete vybrat.",
"update_now": "Aktualizovat nyní",
"update_failed": "Automatická aktualizace selhala. Prosím <a href='https://github.com/AdguardTeam/AdGuardHome/wiki/Getting-Started#update'>následujte tyto kroky</a> a aktualizujte ručně.",
"processing_update": "Čekejte prosím, AdGuard Home se aktualizuje",
"clients_title": "Klienti",
"clients_desc": "Konfigurace zařízení připojených k AdGuard Home",
"settings_global": "Globální",
"settings_custom": "Vlastní",
"table_client": "Klient",
"table_name": "Název",
"save_btn": "Uložit",
"client_add": "Přidat klienta",
"client_new": "Nový klient",
"client_edit": "Upravit klienta",
"client_identifier": "Identifikátor",
"ip_address": "IP adresa",
"client_identifier_desc": "Klienti můžou být identifikováni podle IP adresy, CIDR nebo MAC adresy. Upozorňujeme, že použití MAC jako identifikátoru je možné pouze v případě, že je AdGuard Home také <0>DHCP server</0>",
"form_enter_ip": "Zadejte IP",
"form_enter_mac": "Zadejte MAC",
"form_enter_id": "Zadejte identifikátor",
"form_add_id": "Přidat identifikátor",
"form_client_name": "Zadejte název klienta",
"name": "Název",
"client_global_settings": "Použít globální nastavení",
"client_deleted": "Klient \"{{key}}\" byl úspěšně odstraněn",
"client_added": "Klient \"{{key}}\" byl úspěšně přidán",
"client_updated": "Klient \"{{key}}\" byl úspěšně aktualizován",
"clients_not_found": "Nenalezeni žádní klienti",
"client_confirm_delete": "Opravdu chcete odstranit klienta \"{{key}}\"?",
"list_confirm_delete": "Opravdu chcete smazat tento seznam?",
"auto_clients_title": "Klienti (doba spuštění)",
"auto_clients_desc": "Data o klientech, kteří používají AdGuard Home, ale nejsou uloženi v konfiguraci",
"access_title": "Nastavení přístupu",
"access_desc": "Zde můžete konfigurovat pravidla přístupu pro server DNS AdGuard Home.",
"access_allowed_title": "Povolení klienti",
"access_allowed_desc": "Seznam adres CIDR nebo IP. Pokud je nakonfigurován, AdGuard Home bude přijímat požadavky pouze z těchto IP adres.",
"access_disallowed_title": "Nepovolení klienti",
"access_disallowed_desc": "Seznam adres CIDR nebo IP. Pokud je nakonfigurován, AdGuard Home bude odmítat požadavky pouze z těchto IP adres.",
"access_blocked_title": "Blokované domény",
"access_blocked_desc": "Nezaměňujte to s filtry. AdGuard Home odstraní dotazy DNS s těmito doménami v otázce dotazu. Zde můžete určit přesné názvy domén, zástupné znaky a pravidla URL adres, např. 'example.org', '*.example.org' nabo '||example.org^'.",
"access_settings_saved": "Nastavení přístupu bylo úspěšně uloženo",
"updates_checked": "Aktualizace úspěšně zkontrolovány",
"updates_version_equal": "AdGuard Home je aktuální",
"check_updates_now": "Zkontrolovat aktualizace nyní",
"dns_privacy": "Soukromí DNS",
"setup_dns_privacy_1": "<0>DNS-přes-TLS:</0> Použít <1>{{address}}</1> řetězec.",
"setup_dns_privacy_2": "<0>DNS-přes-HTTPS:</0> Použít <1>{{address}}</1> řetězec.",
"setup_dns_privacy_3": "<0>Upozorňujeme, že šifrované protokoly DNS jsou podporovány pouze v systému Android 9. Proto je třeba nainstalovat další software pro jiné operační systémy.</0><0>Zde je seznam softwaru, který můžete použít.</0>",
"setup_dns_privacy_android_1": "Android 9 podporuje DNS-přes-TLS nativně. Pokud ho chcete konfigurovat, přejděte na Nastavení → Síť & internet → Pokročilé → Soukromé DNS a tam zadejte název vaší domény.",
"setup_dns_privacy_android_2": "<0>AdGuard pro Android</0> podporuje <1>DNS-přes-HTTPS</1> a <1>DNS-přes-TLS</1>.",
"setup_dns_privacy_android_3": "<0>Intra</0> přidává podporu <1>DNS-přes-HTTPS</1> pro Android.",
"setup_dns_privacy_ios_1": "<0>DNSCloak</0> podporuje funkci <1>DNS-přes-HTTPS</1>, ale abyste ji mohli nakonfigurovat pro používání vlastního serveru, musíte vygenerovat značku <2>DNS Stamp</2>.",
"setup_dns_privacy_ios_2": "<0>AdGuard pro iOS</0> podporuje nastavení <1>DNS-přes-HTTPS</1> a <1>DNS-přes-TLS</1>.",
"setup_dns_privacy_other_title": "Další implementace",
"setup_dns_privacy_other_1": "Samotný AdGuard Home může být bezpečným klientem DNS na jakékoli platformě.",
"setup_dns_privacy_other_2": "<0>dnsproxy</0> podporuje všechny známé bezpečné DNS protokoly.",
"setup_dns_privacy_other_3": "<0>dnscrypt-proxy</0> podporuje <1>DNS-přes-HTTPS</1>.",
"setup_dns_privacy_other_4": "<0>Mozilla Firefox</0> podporuje <1>DNS-přes-HTTPS</1>.",
"setup_dns_privacy_other_5": "Další implementace naleznete <0>zde</0> a <1>zde</1>.",
"setup_dns_notice": "Pro použití <1>DNS-přes-HTTPS</1> nebo <1>DNS-přes-TLS</1> potřebujete v nastaveních AdGuard Home <0>nakonfigurovat šifrování</0>.",
"rewrite_added": "Přesměrování DNS pro „{{key}}“ úspěšně přidáno",
"rewrite_deleted": "Přesměrování DNS pro „{{key}}“ úspěšně smazáno",
"rewrite_add": "Přidat přesměrování DNS",
"rewrite_not_found": "Přesměrování DNS nenalezeny",
"rewrite_confirm_delete": "Jste si jisti, že chcete smazat přesměrování DNS pro „{{key}}“?",
"rewrite_desc": "Umožňuje snadno nakonfigurovat vlastní DNS odezvy pro konkrétní název domény.",
"rewrite_applied": "Aplikované pravidlo přesměrování",
"rewrite_hosts_applied": "Přepsáno pravidlem souboru hosts",
"dns_rewrites": "Přesměrování DNS",
"form_domain": "Zadejte doménu",
"form_answer": "Zadejte IP adresu nebo název domény",
"form_error_domain_format": "Neplatný formát domény",
"form_error_answer_format": "Neplatný formát odpovědi",
"configure": "Konfigurovat",
"main_settings": "Hlavní nastavení",
"block_services": "Blokovat specifické služby",
"blocked_services": "Blokované služby",
"blocked_services_desc": "Umožňuje rychle blokovat oblíbené weby a služby.",
"blocked_services_saved": "Blokované služby byly úspěšně uloženy",
"blocked_services_global": "Použít globální blokované služby",
"blocked_service": "Blokovaná služba",
"block_all": "Blokovat vše",
"unblock_all": "Odblokovat vše",
"encryption_certificate_path": "Cesta k certifikátu",
"encryption_private_key_path": "Cesta k soukromému klíčí",
"encryption_certificates_source_path": "Nastavte cestu k souboru certifikátů",
"encryption_certificates_source_content": "Vložte obsahy certifikátů",
"encryption_key_source_path": "Nastavte soubor soukromého klíče",
"encryption_key_source_content": "Vložte obsahy soukromého klíče",
"stats_params": "Konfigurace statistik",
"config_successfully_saved": "Konfigurace byla úspěšně uložena",
"interval_24_hour": "24 hodin",
"interval_days": "Dny: {{count}}",
"interval_days_plural": "Dny: {{count}}",
"domain": "Doména",
"answer": "Odpověď",
"filter_added_successfully": "Seznam byl úspěšně přidán",
"filter_removed_successfully": "Seznam byl úspěšně odstraněn",
"filter_updated": "Seznam byl úspěšně aktualizován",
"statistics_configuration": "Konfigurace statistik",
"statistics_retention": "Uchovávání statistik",
"statistics_retention_desc": "Pokud hodnotu intervalu snížíte, některá data budou ztracena",
"statistics_clear": " Vyčistit statistiky",
"statistics_clear_confirm": "Opravdu chcete vyčistit statistiky?",
"statistics_retention_confirm": "Opravdu chcete změnit uchovávání statistik? Pokud snížíte hodnotu intervalu, některá data budou ztracena",
"statistics_cleared": "Statistiky úspěšně vyčištěny",
"interval_hours": "Hodiny: {{count}}",
"interval_hours_plural": "Hodiny: {{count}}",
"filters_configuration": "Konfigurace filtrů",
"filters_enable": "Povolit filtry",
"filters_interval": "Interval aktualizace filtrů",
"disabled": "Vypnuto",
"username_label": "Uživatelské jméno",
"username_placeholder": "Zadejte uživatelské jméno",
"password_label": "Heslo",
"password_placeholder": "Zadejte heslo",
"sign_in": "Přihlásit se",
"sign_out": "Odhlásit se",
"forgot_password": "Zapomněli jste heslo?",
"forgot_password_desc": "Prosím, následujte <0>tyto kroky</0> k vytvoření nového hesla pro váš uživatelský účet.",
"location": "Umístění",
"orgname": "Název organizace",
"netname": "Název sítě",
"network": "Síť",
"descr": "Popis",
"whois": "Whois",
"filtering_rules_learn_more": "<0>Další informace</0> o vytváření vlastních seznamů hostitelů.",
"blocked_by_response": "Zakázáno dle CNAME nebo IP v odpovědi",
"blocked_by_cname_or_ip": "Zakázáno dle CNAME nebo IP",
"try_again": "Zkusit znovu",
"domain_desc": "Zadejte zástupný znak nebo název domény, kterou chcete přepsat.",
"example_rewrite_domain": "přepsat odpovědi pouze pro tento název domény.",
"example_rewrite_wildcard": "přepsat odpovědi pro všechny subdomény <0>example.org</0>.",
"rewrite_ip_address": "IP address: použít tuto IP adresu v odpovědi typu A nebo AAAA",
"rewrite_domain_name": "Název domény: Přidat záznam CNAME",
"rewrite_A": "<0>A</0>: speciální hodnota, udržet záznamy typu <0>A</0> z odchozího serveru",
"rewrite_AAAA": "<0>AAAA</0>: speciální hodnota, udržet záznamy typu <0>AAAA</0> z odchozího serveru",
"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.",
"fastest_addr": "Nejrychlejší IP adresa",
"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_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.",
"tags_title": "Značky",
"tags_desc": "Můžete vybrat značky, které jsou přiřazeny klientovi. Značky mohou být zahrnuty do pravidel filtrování a umožňují Vám je přesněji použít. <0>Dozvědět se více</0>",
"form_select_tags": "Vyberte značky klienta",
"check_title": "Zkontrolovat filtrování",
"check_desc": "Zkontrolujte, zda je název hostitele filtrován",
"check": "Zkontrolovat",
"form_enter_host": "Zadejte název hostitele",
"filtered_custom_rules": "Filtrováno pomocí vlastních pravidel filtrování",
"choose_from_list": "Vybrat ze seznamu",
"add_custom_list": "Přidat vlastní seznam",
"host_whitelisted": "Hostitel je na seznamu povolených",
"check_ip": "IP adresy: {{ip}}",
"check_cname": "CNAME: {{cname}}",
"check_reason": "Důvod: {{reason}}",
"check_rule": "Pravidlo: {{rule}}",
"check_service": "Název služby: {{service}}",
"check_not_found": "Nenalezeno ve Vašich seznamech filtrů",
"client_confirm_block": "Opravdu chcete zablokovat klienta „{{ip}}“?",
"client_confirm_unblock": "Opravdu chcete odblokovat klienta „{{ip}}“?",
"client_blocked": "Klient „{{ip}}“ byl úspěšně zablokován",
"client_unblocked": "Klient „{{ip}}“ byl úspěšně odblokován",
"static_ip": "Statická IP adresa",
"static_ip_desc": "AdGuard Home je server, takže pro správné fungování potřebuje statickou IP adresu. V opačném případě může váš router tomuto zařízení přiřadit jinou IP adresu.",
"set_static_ip": "Nastavit statickou IP adresu",
"install_static_ok": "Skvělá zpráva! Statická IP adresa je již nakonfigurována",
"install_static_error": "AdGuard Home nemůže automaticky nakonfigurovat toto síťové rozhraní. Prosím vyhledejte návod, jak to provést ručně.",
"install_static_configure": "Detekovali jsme, že se používá dynamická IP adresa — <0>{{ip}}</0>. Chcete ji použít jako statickou adresu?",
"confirm_static_ip": "AdGuard Home nakonfiguruje {{ip}} jako statickou IP adresu. Chcete pokračovat?",
"list_updated": "Byl aktualizován {{count}} seznam",
"list_updated_plural": "Aktualizované seznamy: {{count}}",
"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)",
"validated_with_dnssec": "Ověřeno pomocí DNSSEC",
"all_queries": "Všechny dotazy",
"show_blocked_responses": "Zablokované",
"show_whitelisted_responses": "Povolené",
"show_processed_responses": "Zpracovaný",
"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",
"cache_size": "Velikost mezipaměti",
"cache_size_desc": "Velikost mezipaměti DNS (v bajtech)",
"cache_ttl_min_override": "Přepsat minimální hodnotu TTL",
"cache_ttl_max_override": "Přepsat maximální hodnotu TTL",
"enter_cache_size": "Zadejte velikost mezipaměti",
"enter_cache_ttl_min_override": "Zadejte minimální hodnotu TTL",
"enter_cache_ttl_max_override": "Zadejte maximální hodnotu TTL",
"cache_ttl_min_override_desc": "Přepište hodnotu TTL (minimální) obdrženou z odchozího serveru. Tato hodnota nemůže být větší než 3600 (1 hodina)",
"cache_ttl_max_override_desc": "Přepište hodnotu TTL (maximální) obdrženou z odchozího serveru",
"min_exceeds_max_value": "Minimální hodnota přesahuje maximální hodnotu",
"value_not_larger_than": "Hodnota nesmí být vyšší než {{maximum}}",
"filter_category_general": "Obecné",
"filter_category_security": "Bezpečnost",
"filter_category_regional": "Regionální",
"filter_category_other": "Ostatní",
"filter_category_general_desc": "Seznamy, které blokují slídiče a reklamu na většině zařízení",
"filter_category_security_desc": "Seznamy, které se specializují na blokování škodlivého software, zákeřných útoků nebo podvodných domén",
"filter_category_regional_desc": "Seznamy, které jsou zaměřené na regionální reklamy a sledovací servery",
"filter_category_other_desc": "Další seznamy zakázaných",
"original_response": "Původní odezva",
"click_to_view_queries": "Klikněte pro zobrazení dotazů",
"port_53_faq_link": "Port 53 je často obsazen službami \"DNSStubListener\" nebo \"systemd-resolved\". Přečtěte si <0>tento návod</0> o tom, jak to vyřešit."
}

View File

@@ -0,0 +1,567 @@
{
"client_settings": "Klient-indstillinger",
"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",
"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_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",
"save_config": "Gem konfiguration",
"enabled_dhcp": "DHCP-server aktiveret",
"disabled_dhcp": "DHCP-server deaktiveret",
"dhcp_title": "DHCP-server (eksperimentel!)",
"dhcp_description": "Hvis din router ikke tilbyder DHCP-indstillinger, kan du bruge AdGuards egen indbyggede DHCP-server.",
"dhcp_enable": "Aktiver DHCP-server",
"dhcp_disable": "Deaktiver DHCP-server",
"dhcp_not_found": "Det er sikkert at aktivere den indbyggede DHCP-server - vi fandt ikke nogen aktive DHCP-servere på netværket. Alligevel opfordrer vi dig til at tjekke det manuelt, da vores automatiske test i øjeblikket ikke virker 100%.",
"dhcp_found": "En aktiv DHCP-server er fundet på netværket. Det er ikke sikkert at aktivere den indbyggede DHCP-server.",
"dhcp_leases": "DHCP-leases",
"dhcp_static_leases": "DHCP static leases",
"dhcp_leases_not_found": "Ingen DHCP-leases fundet",
"dhcp_config_saved": "DHCP-konfiguration gemt",
"form_error_required": "Obligatorisk felt",
"form_error_ip4_format": "Ugyldigt IPv4-format",
"form_error_ip6_format": "Ugyldigt IPv6-format",
"form_error_ip_format": "Ugyldigt IP-format",
"form_error_mac_format": "Ugyldigt MAC-format",
"form_error_client_id_format": "Ugyldigt klient-ID-format",
"form_error_positive": "Skal være større end 0",
"form_error_negative": "Skal være lig med 0 eller større",
"dhcp_form_gateway_input": "Gateway IP",
"dhcp_form_subnet_input": "Subnet mask",
"dhcp_form_range_title": "Interval af IP-adresser",
"dhcp_form_range_start": "Start interval",
"dhcp_form_range_end": "Slut interval",
"dhcp_form_lease_title": "DHCP-lease tid (i sekunder)",
"dhcp_form_lease_input": "Lease varighed",
"dhcp_interface_select": "Vælg DHCP-interface",
"dhcp_hardware_address": "Hardware-adresse",
"dhcp_ip_addresses": "IP-adresser",
"ip": "IP",
"dhcp_table_hostname": "Værtsnavn",
"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_error": "Vi kunne ikke afgøre, om der er en anden DHCP-server på netværket.",
"dhcp_static_ip_error": "For at kunne bruge DHCP-serveren skal en statisk IP-adresse indstilles. Vi fejlede i at afgøre, om denne netværksgrænseflade er konfigureret ved hjælp af en statisk IP-adresse. Indstil venligst manuelt en statisk IP-adresse.",
"dhcp_dynamic_ip_found": "Dit system bruger en dynamisk IP-adresse konfiguration til grænsefladen <0>{{interfaceName}}</0>. For at kunne bruge DHCP-serveren skal en statisk IP-adresse indstilles. Din nuværende IP-adresse er <0>{{ipAddress}}</0>. Vi vil automatisk indstille denne IP-adresse som en statisk, hvis du trykker på Aktiver DHCP knappen.",
"dhcp_lease_added": "Static lease \"{{key}}\" succesfuldt tilføjet",
"dhcp_lease_deleted": "Static lease \"{{key}}\" succesfuldt slettet",
"dhcp_new_static_lease": "Ny static lease",
"dhcp_static_leases_not_found": "Ingen DHCP static leases fundet",
"dhcp_add_static_lease": "Tilføj static lease",
"dhcp_reset": "Er du sikker på, at du vil nulstille DHCP-konfigurationen?",
"country": "Land",
"city": "By",
"delete_confirm": "Er du sikker på, at du vil slette \"{{key}}\"?",
"form_enter_hostname": "Indtast værtsnavn",
"error_details": "Fejloplysninger",
"response_details": "Svardetaljer",
"request_details": "Anmod om detaljer",
"client_details": "Klientoplysninger",
"details": "Detaljer",
"back": "Tilbage",
"dashboard": "Kontrolpanel",
"settings": "Indstillinger",
"filters": "Filtre",
"filter": "Filter",
"query_log": "Forespørgselslog",
"compact": "Kompakt",
"nothing_found": "Intet blev fundet",
"faq": "FAQ",
"version": "Version",
"address": "Adresse",
"protocol": "Protokol",
"on": "TÆNDT",
"off": "SLUKKET",
"copyright": "Copyright",
"homepage": "Hjemmeside",
"report_an_issue": "Rapporter et problem",
"privacy_policy": "Privatlivspolitik",
"enable_protection": "Aktiver beskyttelse",
"enabled_protection": "Beskyttelse aktiveret",
"disable_protection": "Deaktiver beskyttelse",
"disabled_protection": "Beskyttelse deaktiveret",
"refresh_statics": "Opdater statistikerne",
"dns_query": "DNS-Forespørgsler",
"blocked_by": "<0>Blokeret af Filtre</0>",
"stats_malware_phishing": "Blokeret malware/phishing",
"stats_adult": "Blokerede voksne websteder",
"stats_query_domain": "Mest eftertragtede domæner",
"for_last_24_hours": "i løbet af de sidste 24 timer",
"for_last_days": "for den sidste {{count}} dag",
"for_last_days_plural": "for de sidste {{count}} dage",
"no_domains_found": "Ingen domæner fundet",
"requests_count": "Antal anmodninger",
"top_blocked_domains": "De mest blokerede domæner",
"top_clients": "De bedste klienter",
"no_clients_found": "Ingen klienter fundet",
"general_statistics": "Generelle statistikker",
"number_of_dns_query_days": "Antallet af DNS-forespørgsler behandlet i løbet af den sidste {{count}} dag",
"number_of_dns_query_days_plural": "Antallet af DNS-forespørgsler behandlet i løbet af de sidste {{count}} dage",
"number_of_dns_query_24_hours": "Antallet af DNS-forespørgsler behandlet i løbet af de sidste 24 timer",
"number_of_dns_query_blocked_24_hours": "Antallet af DNS-forespørgsler blokeret af adblock filtre og værternes blokeringslister",
"number_of_dns_query_blocked_24_hours_by_sec": "Antallet af DNS-forespørgsler blokeret af AdGuards browsing sikkerhedsmodul",
"number_of_dns_query_blocked_24_hours_adult": "Antallet af voksensider blokeret",
"enforced_save_search": "Håndhæv sikker søgning",
"number_of_dns_query_to_safe_search": "Antallet af DNS-forespørgsler til søgemaskiner, hvor Sikker Søgning blev håndhævet",
"average_processing_time": "Gennemsnitlig behandlingstid",
"average_processing_time_hint": "Gennemsnitlig behandlingstid i millisekunder af DNS-forespørgsel",
"block_domain_use_filters_and_hosts": "Bloker domæner ved hjælp af filtre og værtsfiler",
"filters_block_toggle_hint": "Du kan oprette blokeringsregler i <a href='#filters'>Filterindstillingerne</a>.",
"use_adguard_browsing_sec": "Brug AdGuards browsing sikkerhedstjeneste",
"use_adguard_browsing_sec_hint": "AdGuard Home vil kontrollere om domænet er sortlistet af browsing sikkerhedstjenesten. Den vil bruge privatlivsvenlig lookup API til at udføre kontrollen: kun et kort præfiks af domænenavnet SHA256 hash bliver sendt til serveren.",
"use_adguard_parental": "Brug AdGuards forældrekontrol",
"use_adguard_parental_hint": "AdGuard Home vil kontrollere, om domænet indeholder voksenindhold. Den bruger den samme privatlivsvenlige API som browsing sikkerhedstjenesten.",
"enforce_safe_search": "Håndhæv sikker søgning",
"enforce_save_search_hint": "AdGuard Home kan håndhæve sikker søgning i følgende søgemaskiner: Google, Youtube, Bing, DuckDuckGo, Yandex og Pixabay.",
"no_servers_specified": "Ingen servere specificeret",
"general_settings": "Generelle indstillinger",
"dns_settings": "DNS-indstillinger",
"dns_blocklists": "DNS-blokeringslister",
"dns_allowlists": "Lister over tilladte DNS",
"dns_blocklists_desc": "AdGuard Home vil blokere domæner, der matcher blokeringslisterne.",
"dns_allowlists_desc": "Domæner fra listerne over tilladte DNS vil være tilladt, selvom de er i nogen af blokeringslisterne.",
"custom_filtering_rules": "Brugerdefinerede filtreringsregler",
"encryption_settings": "Krypteringsindstillinger",
"dhcp_settings": "DHCP-indstillinger",
"upstream_dns": "Upstream DNS-servere",
"upstream_dns_hint": "Hvis du lader dette felt være tomt, vil AdGuard Home bruge <a href='https://www.quad9.net/' target='_blank'>Quad9</a> som en upstream.",
"test_upstream_btn": "Test upstreams",
"upstreams": "Upstreams",
"apply_btn": "Anvend",
"disabled_filtering_toast": "Filtrering deaktiveret",
"enabled_filtering_toast": "Filtrering aktiveret",
"disabled_safe_browsing_toast": "Sikker browsing deaktiveret",
"enabled_safe_browsing_toast": "Sikker browsing aktiveret",
"disabled_parental_toast": "Forældrekontrol deaktiveret",
"enabled_parental_toast": "Forældrekontrol aktiveret",
"disabled_safe_search_toast": "Sikker søgning deaktiveret",
"enabled_save_search_toast": "Sikker søgning aktiveret",
"enabled_table_header": "Aktiveret",
"name_table_header": "Navn",
"list_url_table_header": "Listernes URL",
"rules_count_table_header": "Antal regler",
"last_time_updated_table_header": "Sidst opdateret",
"actions_table_header": "Handlinger",
"request_table_header": "Forespørgsel",
"edit_table_action": "Rediger",
"delete_table_action": "Slet",
"elapsed": "Varighed",
"filters_and_hosts_hint": "AdGuard Home forstår de grundlæggende annonceblokeringsregler og værtsfilsyntaks.",
"no_blocklist_added": "Ingen blokeringslister tilføjet",
"no_whitelist_added": "Ingen lister over tilladte tilføjet",
"add_blocklist": "Tilføj blokeringsliste",
"add_allowlist": "Tilføj liste over tilladte",
"cancel_btn": "Annuller",
"enter_name_hint": "Indtast navn",
"enter_url_or_path_hint": "Indtast en URL eller en absolut sti på listen",
"check_updates_btn": "Søg efter opdateringer",
"new_blocklist": "Ny blokeringsliste",
"new_allowlist": "Ny liste over tilladte",
"edit_blocklist": "Rediger blokeringsliste",
"edit_allowlist": "Rediger liste over tilladte",
"choose_blocklist": "Vælg blokeringslister",
"choose_allowlist": "Vælg lister over tilladte",
"enter_valid_blocklist": "Indtast en gyldig URL til blokeringslisten.",
"enter_valid_allowlist": "Indtast en gyldig URL til listen over tilladte.",
"form_error_url_format": "Ugyldigt URL-format",
"form_error_url_or_path_format": "Ugyldig URL eller en absolut sti på listen",
"custom_filter_rules": "Brugerdefinerede filtreringsregler",
"custom_filter_rules_hint": "Indtast en regel per linje. Du kan enten bruge annonceblokeringsregler eller værtsfilsyntaks.",
"examples_title": "Eksempler",
"example_meaning_filter_block": "bloker adgang til domænet example.org og alle dens subdomæner",
"example_meaning_filter_whitelist": "fjern blokering af adgangen til domænet example.ord og alle dens subdomæner",
"example_meaning_host_block": "AdGuard Home vil nu returnere adressen 127.0.0.1 til example.org domænet (men ikke dens underdomæner)",
"example_comment": "! Her er en kommentar",
"example_comment_meaning": "bare en kommentar",
"example_comment_hash": "# Også en kommentar",
"example_regex_meaning": "bloker adgangen til de domæner, der matcher det angivne regulære udtryk",
"example_upstream_regular": "almindelig DNS (over UDP)",
"example_upstream_dot": "krypteret <0>DNS-over-TLS</0>",
"example_upstream_doh": "krypteret <0>DNS-over-HTTPS</0>",
"example_upstream_sdns": "du kan bruge <0>DNS Stamps<0> til <1>DNSCrypt>/1> eller <2>DNS-over-HTTPS</2> resolvers",
"example_upstream_tcp": "almindelig DNS (over TCP)",
"all_lists_up_to_date_toast": "Alle lister er allerede opdaterede",
"updated_upstream_dns_toast": "Opdaterede upstream DNS-servere",
"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",
"unblock": "Fjern blokering",
"block": "Bloker",
"time_table_header": "Tid",
"date": "Dato",
"domain_name_table_header": "Domænenavn",
"domain_or_client": "Domæne eller klient",
"type_table_header": "Type",
"response_table_header": "Svar",
"response_code": "Responskode",
"client_table_header": "Klient",
"empty_response_status": "Tom",
"show_all_filter_type": "Vis alle",
"show_filtered_type": "Vis filtrerede",
"no_logs_found": "Ingen logfiler fundet",
"refresh_btn": "Opdater",
"previous_btn": "Forrige",
"next_btn": "Næste",
"loading_table_status": "Indlæser...",
"page_table_footer_text": "Side",
"rows_table_footer_text": "rækker",
"updated_custom_filtering_toast": "De brugerdefinerede filtreringsregler er blevet opdateret",
"rule_removed_from_custom_filtering_toast": "Regel fjernet fra de brugerdefinerede filtreringsregler",
"rule_added_to_custom_filtering_toast": "Regel tilføjet til de brugerdefinerede filtreringsregler",
"query_log_response_status": "Status: {{value}}",
"query_log_filtered": "Filtreret af {{filter}}",
"query_log_confirm_clear": "Er du sikker på, at du vil rydde hele forespørgselsloggen?",
"query_log_cleared": "Forespørgselsloggen er blevet ryddet",
"query_log_updated": "Forespørgselsloggen er blevet opdateret",
"query_log_clear": "Ryd forespørgselslogfiler",
"query_log_retention": "Opbevaring af forespørgselslogfiler",
"query_log_enable": "Aktivér log",
"query_log_configuration": "Konfiguration af logfiler",
"query_log_disabled": "Forespørgselsloggen er deaktiveret og kan konfigureres i <0>indstillinger</0>",
"query_log_strict_search": "Brug dobbelt anførselstegn til streng søgning",
"query_log_retention_confirm": "Er du sikker på, at du vil ændre opbevaring af forespørgselsloggen? Hvis du mindsker intervalværdien, vil nogle data gå tabt",
"anonymize_client_ip": "Anonymiser klient-IP",
"anonymize_client_ip_desc": "Gem ikke klientens fulde IP-adresse i logfiler og statistikker",
"dns_config": "DNS-serverkonfiguration",
"dns_cache_config": "Konfiguration af DNS-cache",
"dns_cache_config_desc": "Her kan du konfigurere DNS-cache",
"blocking_mode": "Blokeringstilstand",
"default": "Standard",
"nxdomain": "NXDOMAIN",
"null_ip": "Null IP",
"custom_ip": "Tilpasset IP",
"blocking_ipv4": "IPv4-blokering",
"blocking_ipv6": "IPv6-blokering",
"dns_over_https": "DNS-over-HTTPS",
"dns_over_tls": "DNS-over-TLS",
"plain_dns": "Almindelig DNS",
"form_enter_rate_limit": "Indtast hyppighedsgrænse",
"rate_limit": "Hyppighedsgrænse",
"edns_enable": "Aktiver EDNS Client Subnet",
"edns_cs_desc": "Hvis det er aktiveret, vil AdGuard Home sende klienters subnets til DNS-serverne.",
"rate_limit_desc": "Antallet af anmodninger pr. sekund, som en enkelt klient får lov til at fremsætte (0: ubegrænset)",
"blocking_ipv4_desc": "IP-adresse, der skal returneres for en blokeret A-anmodning",
"blocking_ipv6_desc": "IP-adresse, der skal returneres for en blokeret AAAA-anmodning",
"blocking_mode_default": "Standard: Svar med NXDOMAIN, når det blokeres af Adblock-stil-reglen; svar med den IP-adresse, der er angivet i reglen, når den blokeres af /etc/hosts-style-reglen",
"blocking_mode_nxdomain": "NXDOMAIN: Svar med NXDOMAIN-kode",
"blocking_mode_null_ip": "Null IP: Svar med nul IP-adresse (0.0.0.0 for A; :: for AAAA)",
"blocking_mode_custom_ip": "Brugerdefineret IP: Svar med en manuelt indstillet IP-adresse",
"upstream_dns_client_desc": "Hvis du lader dette felt være tomt, vil AdGuard Home bruge de servere, der er konfigureret i <0>DNS-indstillingerne</0>.",
"tracker_source": "Tracker-kilde",
"source_label": "Kilde",
"found_in_known_domain_db": "Fundet i databasen med kendte domæner.",
"category_label": "Kategori",
"rule_label": "Regel",
"list_label": "Liste",
"unknown_filter": "Ukendt filter {{filterId}}",
"known_tracker": "Kendt tracker",
"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_settings_title": "Administrator Webgrænseflade",
"install_settings_listen": "Overvågningsgrænseflade",
"install_settings_port": "Port",
"install_settings_interface_link": "Din AdGuard Home administrator webgrænseflade vil være tilgængelig på følgende adresser:",
"form_error_port": "Indtast gyldig portværdi",
"install_settings_dns": "DNS-server",
"install_settings_dns_desc": "Du skal konfigurere dine enheder eller router til at bruge DNS-serveren på følgende adresser:",
"install_settings_all_interfaces": "Alle grænseflader",
"install_auth_title": "Autentificering",
"install_auth_desc": "Det anbefales stærkt at konfigurere adgangskodeautentificering til din AdGuard Home administrator webgrænseflade. Selvom det kun er tilgængeligt på dit lokale netværk, er det stadig vigtigt at få det beskyttet mod ubegrænset adgang.",
"install_auth_username": "Brugernavn",
"install_auth_password": "Adgangskode",
"install_auth_confirm": "Bekræft adgangskode",
"install_auth_username_enter": "Indtast brugernavn",
"install_auth_password_enter": "Indtast adgangskode",
"install_step": "Trin",
"install_devices_title": "Konfigurer dine enheder",
"install_devices_desc": "For at kunne bruge AdGuard Home, skal du konfigurere dine enheder til at bruge den.",
"install_submit_title": "Tillykke!",
"install_submit_desc": "Installationsproceduren er færdig, og du er klar til at starte med at bruge AdGuard Home.",
"install_devices_router": "Router",
"install_devices_router_desc": "Denne opsætning dækker automatisk alle enheder, der er tilsluttet din hjemmerouter, og du behøver ikke konfigurere hver af dem manuelt.",
"install_devices_address": "AdGuard Home DNS-server lytter på følgende adresser",
"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_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 <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_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_4": "Vælg din aktive forbindelse, højreklik på den og vælg Egenskaber.",
"install_devices_windows_list_5": "Find Internet Protocol Version 4 (TCP/IP) på listen, vælg den og klik derefter på Egenskaber igen.",
"install_devices_windows_list_6": "Vælg Brug følgende DNS-serveradresser og indtast dine AdGuard Home serveradresser.",
"install_devices_macos_list_1": "Klik på Apple-ikonet og gå til Systemindstillinger.",
"install_devices_macos_list_2": "Klik på Netværk.",
"install_devices_macos_list_3": "Vælg den første forbindelse på din liste, og klik på Avanceret.",
"install_devices_macos_list_4": "Vælg fanen DNS og indtast dine AdGuard Home serveradresser.",
"install_devices_android_list_1": "Tryk på Indstillinger på Android-startskærmen.",
"install_devices_android_list_2": "Tryk på Wi-Fi i menuen. Alle tilgængelige netværk vil blive vist på skærmen (det er umuligt at angive brugerdefineret DNS til mobilforbindelse).",
"install_devices_android_list_3": "Tryk lang tid på det netværk, du har forbindelse til, og tryk på Rediger Netværk.",
"install_devices_android_list_4": "På nogle enheder skal du muligvis afkrydse afkrydsningsfeltet Avanceret for at se yderligere indstillinger. For at justere dine Android DNS-indstillinger skal du skifte IP-indstillingerne fra DHCP til Statisk.",
"install_devices_android_list_5": "Skift sæt DNS 1 og DNS 2 værdierne til dine AdGuard Home serveradresser.",
"install_devices_ios_list_1": "Tryk på Indstillinger på startskærmen.",
"install_devices_ios_list_2": "Vælg Wi-Fi i menuen til venstre (det er umuligt at konfigurere DNS til mobilnetværker).",
"install_devices_ios_list_3": "Tryk på navnet på det nuværende aktive netværk.",
"install_devices_ios_list_4": "Indtast dine AdGuard Home serveradresser i DNS-feltet.",
"get_started": "Kom I Gang",
"next": "Næste",
"open_dashboard": "Åbn Dashboard",
"install_saved": "Succesfuldt gemt",
"encryption_title": "Kryptering",
"encryption_desc": "Kryptering (HTTPS/TLS) understøtter både DNS og admin webgrænseflade",
"encryption_config_saved": "Krypteringskonfiguration gemt",
"encryption_server": "Servernavn",
"encryption_server_enter": "Indtast dit domænenavn",
"encryption_server_desc": "For at kunne bruge HTTPS skal du indtaste servernavnet, der matcher dit SSL-certifikat.",
"encryption_redirect": "Omdiriger automatisk til HTTPS",
"encryption_redirect_desc": "Hvis afkrydset, vil AdGuard Home automatisk omdirigere dig fra HTTP til HTTPS-adresser.",
"encryption_https": "HTTPS-port",
"encryption_https_desc": "Hvis HTTPS-porten er konfigureret, vil AdGuard Home admin grænsefladen være tilgængelig via HTTPS, og den vil give DNS-over-HTTPS på '/dns-query' placeringen.",
"encryption_dot": "DNS-over-TLS port",
"encryption_dot_desc": "Hvis denne port er konfigureret, vil AdGuard Home køre en DNS-over-TLS server over denne port.",
"encryption_certificates": "Certifikater",
"encryption_certificates_desc": "For at kunne bruge kryptering skal du angive en gyldig SSL-certifikatkæde til dit domæne. Du kan få et gratis certifikat på <0>{{link}}</ 0> eller du kan købe det fra en af de pålidelige Certifikatmyndigheder.",
"encryption_certificates_input": "Kopier/indsæt dine PEM-kodede certifikater her.",
"encryption_status": "Status",
"encryption_expire": "Udløber",
"encryption_key": "Privat nøgle",
"encryption_key_input": "Kopier/indsæt dine PEM-kodede private nøgle til dit certifikat her.",
"encryption_enable": "Aktiver Kryptering (HTTPS, DNS-over-HTTPS og DNS-over-TLS)",
"encryption_enable_desc": "Hvis kryptering er aktiveret, vil AdGuard Home admin grænseflade fungere over HTTPS og DNS-serveren vil lytte efter forespørgsler via DNS-over-HTTPS og DNS-over-TLS.",
"encryption_chain_valid": "Certifikatkæden er gyldig",
"encryption_chain_invalid": "Certifikatkæden er ugyldig",
"encryption_key_valid": "Dette er en gyldig {{type}} privat nøgle",
"encryption_key_invalid": "Dette er en ugyldig {{type}} privat nøgle",
"encryption_subject": "Emne",
"encryption_issuer": "Udsteder",
"encryption_hostnames": "Værtsnavne",
"encryption_reset": "Er du sikker på, at du vil nulstille krypteringsindstillingerne?",
"topline_expiring_certificate": "Dit SSL-certifikat er ved at udløbe. Opdater <0>Krypteringsindstillinger</ 0>.",
"topline_expired_certificate": "Dit SSL-certifikat er udløbet. Opdater <0>Krypteringsindstillinger</ 0>.",
"form_error_port_range": "Indtast portværdi i intervallet 80-65535",
"form_error_port_unsafe": "Dette er en usikker port",
"form_error_equal": "Burde ikke være lige",
"form_error_password": "Adgangskoden matcher ikke",
"reset_settings": "Nulstil indstillinger",
"update_announcement": "AdGuard Home {{version}} er nu tilgængelig! <0>Kik her</0> for mere info.",
"setup_guide": "Installationsvejledning",
"dns_addresses": "DNS-adresser",
"dns_start": "DNS-server starter",
"dns_status_error": "Fejl ved at få DNS-serverstatus",
"down": "Ned",
"fix": "Reparer",
"dns_providers": "Her er en <0>liste over kendte DNS-udbydere</ 0> at vælge imellem.",
"update_now": "Opdater nu",
"update_failed": "Automatisk opdatering mislykkedes. Følg venligst <a href='https://github.com/AdguardTeam/AdGuardHome/wiki/Getting-Started#update'>trinene</a> for at opdatere manuelt.",
"processing_update": "Vent venligst, AdGuard Home bliver opdateret",
"clients_title": "Klienter",
"clients_desc": "Konfigurer enheder, der er forbundet til AdGuard Home",
"settings_global": "Global",
"settings_custom": "Brugerdefineret",
"table_client": "Klient",
"table_name": "Navn",
"save_btn": "Gem",
"client_add": "Tilføj Klient",
"client_new": "Ny Klient",
"client_edit": "Rediger Klient",
"client_identifier": "Identifikator",
"ip_address": "IP-adresse",
"client_identifier_desc": "Klienter kan identificeres ud fra IP-adressen, CIDR eller MAC-adressen. Bemærk, at det kun er muligt at bruge MAC som identifikator, hvis AdGuard Home også er en <0>DHCP-server</0>",
"form_enter_ip": "Indtast IP",
"form_enter_mac": "Indtast MAC",
"form_enter_id": "Indtast identifikator",
"form_add_id": "Tilføj identifikator",
"form_client_name": "Indtast klientnavn",
"name": "Navn",
"client_global_settings": "Brug globale indstillinger",
"client_deleted": "Klient \"{{key}}\" succesfuldt slettet",
"client_added": "Klient \"{{key}}\" succesfuldt tilføjet",
"client_updated": "Klient \"{{key}}\" succesfuldt opdateret",
"clients_not_found": "Ingen klienter fundet",
"client_confirm_delete": "Er du sikker på, at du vil slette klient \"{{key}}\"?",
"list_confirm_delete": "Er du sikker på, at du vil slette denne liste?",
"auto_clients_title": "Klienter (runtime)",
"auto_clients_desc": "Data om de klienter, der bruger AdGuard Home, men ikke gemt i konfigurationen",
"access_title": "Adgangsindstillinger",
"access_desc": "Her kan du konfigurere adgangsregler for AdGuard Home DNS-serveren.",
"access_allowed_title": "Tilladte klienter",
"access_allowed_desc": "En liste over CIDR- eller IP-adresser. Hvis den er konfigureret, vil AdGuard Home kun acceptere anmodninger fra disse IP-adresser.",
"access_disallowed_title": "Ikke tilladte klienter",
"access_disallowed_desc": "En liste over CIDR- eller IP-adresser. Hvis den er konfigureret, vil AdGuard Home droppe anmodninger fra disse IP-adresser.",
"access_blocked_title": "Ikke tilladte domæner",
"access_blocked_desc": "Forveksl det ikke med filtre. AdGuard Home vil droppe DNS-forespørgsler for disse domæner i forespørgselsspørgsmål. Her kan du specificere de nøjagtige domænenavne, wildcards og urlfilter-regler, f.eks. 'example.org', '*.example.org' eller '||example.org^'.",
"access_settings_saved": "Adgangsindstillinger succesfuldt gemt",
"updates_checked": "Søgt succesfuldt efter opdateringer",
"updates_version_equal": "AdGuard Home er opdateret",
"check_updates_now": "Søg efter opdateringer nu",
"dns_privacy": "DNS Privatliv",
"setup_dns_privacy_1": "<0>DNS-over-TLS:</0> Brug <1>{{address}}</1> streng.",
"setup_dns_privacy_2": "<0>DNS-over-HTTPS:</0> Brug <1>{{address}}</1> streng.",
"setup_dns_privacy_3": "<0>Bemærk venligst, at krypterede DNS-protokoller kun understøttes på Android 9. Så du skal installere ekstra software til andre styresystemer.</0><0>Her er en liste af software, du kan bruge.</0>",
"setup_dns_privacy_android_1": "Android 9 understøtter den indbyggede DNS-over-TLS. For at konfigurere den, gå til Indstillinger → Netværk & internet → Avanceret → Privat DNS og indtast dit domænenavn.",
"setup_dns_privacy_android_2": "<0>AdGuard til Android</0> understøtter <1>DNS-over-HTTPS</1> og <1>DNS-over-TLS</1>.",
"setup_dns_privacy_android_3": "<0>Intra</0> tilføjer <1>DNS-over-HTTPS</1> understøttelse til Android.",
"setup_dns_privacy_ios_1": "<0>DNSCloak</0> understøtter <1>DNS-over-HTTPS</1>, men for at konfigurere den, så den bruger din egen server, skal du generere et <2>DNS Stamp</2> til den.",
"setup_dns_privacy_ios_2": "<0>AdGuard til iOS</0> understøtter <1>DNS-over-HTTPS</1> og <1>DNS-over-TLS</1> installation.",
"setup_dns_privacy_other_title": "Andre implementeringer",
"setup_dns_privacy_other_1": "AdGuard Home kan være en sikker DNS-klient på enhver platform.",
"setup_dns_privacy_other_2": "<0>dnsproxy</0> understøtter alle kendte sikre DNS-protokoller.",
"setup_dns_privacy_other_3": "<0>dnscrypt-proxy</0> understøtter <1>DNS-over-HTTPS</1>.",
"setup_dns_privacy_other_4": "<0>Mozilla Firefox</0> understøtter <1>DNS-over-HTTPS</1>.",
"setup_dns_privacy_other_5": "Du kan finde flere implementeringer <0>her</0> og <1>her</1>.",
"setup_dns_notice": "For at kunne bruge <1>DNS-over-HTTPS</1> eller <1>DNS-over-TLS</1>, skal du <0>konfigurere Krypteringen</0> i indstillingerne i AdGuard Home.",
"rewrite_added": "DNS-omskrivning for \"{{key}}\" blev tilføjet",
"rewrite_deleted": "DNS-omskrivning for \"{{key}}\" blev slettet",
"rewrite_add": "Tilføj DNS-omskrivning",
"rewrite_not_found": "Ingen DNS-omskrivninger fundet",
"rewrite_confirm_delete": "Er du sikker på, at du vil slette DNS-omskrivning for \"{{key}}\"?",
"rewrite_desc": "Gør det nemt at konfigurere det tilpassede DNS-svar for et specifikt domænenavn.",
"rewrite_applied": "Anvendt omskrivningsregel",
"rewrite_hosts_applied": "Omskrevet af værtsfilreglen",
"dns_rewrites": "DNS-omskrivninger",
"form_domain": "Indtast domænenavn eller wildcard",
"form_answer": "Indtast IP-adresser eller domænenavne",
"form_error_domain_format": "Ugyldigt domæneformat",
"form_error_answer_format": "Ugyldigt svarformat",
"configure": "Konfigurer",
"main_settings": "Hovedindstillinger",
"block_services": "Bloker specifikke tjenester",
"blocked_services": "Blokerede tjenester",
"blocked_services_desc": "Gør det muligt hurtigt at blokere populære websteder og tjenester.",
"blocked_services_saved": "Blokerede tjenester er gemt",
"blocked_services_global": "Brug globale blokerede tjenester",
"blocked_service": "Blokeret tjeneste",
"block_all": "Bloker alle",
"unblock_all": "Fjern blokering af alle",
"encryption_certificate_path": "Certifikatsti",
"encryption_private_key_path": "Placering af den private nøgle",
"encryption_certificates_source_path": "Indstil en sti for certifikatfilen",
"encryption_certificates_source_content": "Indsæt certifikatets indhold",
"encryption_key_source_path": "Indstil en fil for den private nøgle",
"encryption_key_source_content": "Indsæt indholdet af den private nøgle",
"stats_params": "Konfiguration af statistik",
"config_successfully_saved": "Konfiguration er gemt",
"interval_24_hour": "24 timer",
"interval_days": "{{count}} dag",
"interval_days_plural": "{{count}} dage",
"domain": "Domæne",
"answer": "Svar",
"filter_added_successfully": "Listen er tilføjet",
"filter_removed_successfully": "Listen er blevet fjernet",
"filter_updated": "Listen er blevet opdateret",
"statistics_configuration": "Konfiguration af statistik",
"statistics_retention": "Tilbageholdelse af statistikker",
"statistics_retention_desc": "Hvis du mindsker intervalværdien, vil nogle data gå tabt",
"statistics_clear": " Ryd statistikker",
"statistics_clear_confirm": "Er du sikker på, at du vil slette statistikkerne?",
"statistics_retention_confirm": "Er du sikker på, at du vil ændre opbevaring af statistikker? Hvis du mindsker intervalværdien, vil nogle data gå tabt",
"statistics_cleared": "Statistikkerne blev slettet",
"interval_hours": "{{count}} time",
"interval_hours_plural": "{{count}} timer",
"filters_configuration": "Konfiguration af filtre",
"filters_enable": "Aktivér filtre",
"filters_interval": "Filtrenes opdateringsinterval",
"disabled": "Deaktiveret",
"username_label": "Brugernavn",
"username_placeholder": "Indtast brugernavn",
"password_label": "Adgangskode",
"password_placeholder": "Indtast adgangskode",
"sign_in": "Log ind",
"sign_out": "Log ud",
"forgot_password": "Glemt adgangskode?",
"forgot_password_desc": "Følg <0>disse trin</0> for at oprette en ny adgangskode til din brugerkonto.",
"location": "Placering",
"orgname": "Organisationens navn",
"netname": "Netværksnavn",
"network": "Netværk",
"descr": "Beskrivelse",
"whois": "Whois",
"filtering_rules_learn_more": "<0>Lær mere</0> om at oprette dine egne værtslister.",
"blocked_by_response": "Blokeret af CNAME eller IP som svar",
"blocked_by_cname_or_ip": "Blokeret af CNAME eller IP",
"try_again": "Prøv igen",
"domain_desc": "Indtast det domænenavn eller wildcard, du ønsker skal omskrives.",
"example_rewrite_domain": "omskriv kun svar for dette domænenavn.",
"example_rewrite_wildcard": "omskriv svar for alle <0>example.org</0> subdomæner.",
"rewrite_ip_address": "IP-adresse: brug denne IP i et A- eller AAAA-svar",
"rewrite_domain_name": "Domænenavn: tilføj en CNAME-post",
"rewrite_A": "<0>A</0>: særlig værdi, hold <0>A</0> poster fra upstream",
"rewrite_AAAA": "<0>AAAA</0>: særlig værdi, hold <0>AAAA</0> poster fra upstream",
"disable_ipv6": "Deaktiver IPv6",
"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_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_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.",
"tags_title": "Tags",
"tags_desc": "Du kan vælge de tags, der svarer til klienten. Tags kan inkluderes i filtreringsreglerne og giver dig mulighed for at anvende dem mere nøjagtigt. <0>Læs mere</0>",
"form_select_tags": "Vælg klient tags",
"check_title": "Kontroller filtreringen",
"check_desc": "Kontroller, om værtsnavnet er filtreret",
"check": "Kontroller",
"form_enter_host": "Indtast et værtsnavn",
"filtered_custom_rules": "Filtreret af brugerdefinerede filtreringsregler",
"choose_from_list": "Vælg fra listen",
"add_custom_list": "Tilføj en tilpasset liste",
"host_whitelisted": "Værten er hvidlistet",
"check_ip": "IP-adresser: {{ip}}",
"check_cname": "CNAME: {{cname}}",
"check_reason": "Årsag: {{reason}}",
"check_rule": "Regel: {{rule}}",
"check_service": "Servicenavn: {{service}}",
"check_not_found": "Ikke fundet i dine filterlister",
"client_confirm_block": "Er du sikker på, at du vil blokere klienten \"{{ip}}\"?",
"client_confirm_unblock": "Er du sikker på, at du vil fjerne blokeringen af klienten \"{{ip}}\"?",
"client_blocked": "Klient \"{{ip}}\" blev blokeret",
"client_unblocked": "Blokering af klient \"{{ip}}\" fjernet",
"static_ip": "Statisk IP-adresse",
"static_ip_desc": "AdGuard Home er en server, så den har brug for en statisk IP-adresse for at fungere korrekt. Ellers på et tidspunkt vil din router muligvis tildele en anden IP-adresse til denne enhed.",
"set_static_ip": "Indstil en statisk IP-adresse",
"install_static_ok": "Gode nyheder! Den statiske IP-adresse er allerede konfigureret",
"install_static_error": "AdGuard Home kan ikke konfigurere det automatisk for denne netværksgrænseflade. Søg efter en instruktion om, hvordan man gør dette manuelt.",
"install_static_configure": "Vi har registreret, at der bruges en dynamisk IP-adresse — <0>{{ip}}</0>. Vil du bruge den som din statiske adresse?",
"confirm_static_ip": "AdGuard Home vil konfigurere {{ip}} til at være din statiske IP-adresse. Vil du fortsætte?",
"list_updated": "{{count}} liste opdateret",
"list_updated_plural": "{{count}} lister opdateret",
"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)",
"validated_with_dnssec": "Valideret med DNSSEC",
"all_queries": "Alle forespørgsler",
"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",
"cache_size": "Cache-størrelse",
"cache_size_desc": "Størrelse på DNS-cache (i bytes)",
"cache_ttl_min_override": "Overskriv minimum TTL",
"cache_ttl_max_override": "Overskriv maksimal TTL",
"enter_cache_size": "Indtast cache-størrelse",
"enter_cache_ttl_min_override": "Indtast minimum TTL",
"enter_cache_ttl_max_override": "Indtast maksimum TTL",
"cache_ttl_min_override_desc": "Overskriv TTL-værdi (minimum) modtaget fra upstream-serveren. Denne værdi kan ikke være større end 3600 (1 time)",
"cache_ttl_max_override_desc": "Overskriv TTL-værdi (maksimum) modtaget fra upstream-serveren",
"min_exceeds_max_value": "Minimumsværdien overstiger maksimumværdien",
"value_not_larger_than": "Værdien kan ikke være større end {{maximum}}",
"filter_category_general": "Generelt",
"filter_category_security": "Sikkerhed",
"filter_category_regional": "Regional",
"filter_category_other": "Andre",
"filter_category_general_desc": "Lister der blokerer for sporing og reklamer på de fleste enheder",
"filter_category_security_desc": "Lister, der er specialiserede i at blokere malware, phishing eller scam-domæner",
"filter_category_regional_desc": "Lister, der fokuserer på regionale annoncer og tracking-servere",
"filter_category_other_desc": "Andre blokeringslister",
"original_response": "Oprindeligt svar",
"click_to_view_queries": "Klik for at se forespørgsler",
"port_53_faq_link": "Port 53 optages ofte af \"DNSStubListener\" eller \"systemd-resolved\" tjenester. Læs <0>denne instruktion</0> om, hvordan du løser dette."
}

View File

@@ -0,0 +1,567 @@
{
"client_settings": "Client-Einstellungen",
"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",
"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_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",
"save_config": "Konfiguration speichern",
"enabled_dhcp": "DHCP-Server aktiviert",
"disabled_dhcp": "DHCP-Server deaktiviert",
"dhcp_title": "DHCP-Server (experimental!)",
"dhcp_description": "Wenn Ihr Router keine DHCP-Einstellungen bietet, können Sie den integrierten DHCP-Server von AdGuard verwenden.",
"dhcp_enable": "DHCP-Server aktivieren",
"dhcp_disable": "DHCP-Server deaktivieren",
"dhcp_not_found": "Keine aktiven DHCP-Server im Netzwerk gefunden. Es ist sicher, den integrierten DHCP-Server zu aktivieren.",
"dhcp_found": "Einige aktive DHCP-Server im Netzwerk gefunden. Es ist nicht sicher, den integrierten DHCP-Server zu aktivieren.",
"dhcp_leases": "DHCP-Leasingverträge",
"dhcp_static_leases": "DHCP statische Leases",
"dhcp_leases_not_found": "Keine DHCP-Leasingverträge gefunden\n",
"dhcp_config_saved": "Gespeicherte DHCP-Server-Konfiguration",
"form_error_required": "Pflichtfeld",
"form_error_ip4_format": "Ungültiges IPv4-Format",
"form_error_ip6_format": "Ungültiges IPv6-Format",
"form_error_ip_format": "Ungültiges IPv4-Format",
"form_error_mac_format": "Ungültiges MAC-Format",
"form_error_client_id_format": "Ungültiges Client-ID-Format",
"form_error_positive": "Muss größer als 0 sein.",
"form_error_negative": "Muss gleich oder größer als 0 (Null) sein",
"dhcp_form_gateway_input": "Gateway-IP",
"dhcp_form_subnet_input": "Subnetz-Maske",
"dhcp_form_range_title": "Bereich von IP-Adressen",
"dhcp_form_range_start": "Bereichsanfang",
"dhcp_form_range_end": "Bereichsende",
"dhcp_form_lease_title": "DHCP-Leasingdauer (in Sekunden)",
"dhcp_form_lease_input": "Leasingdauer",
"dhcp_interface_select": "DHCP-Benutzeroberfläche auswählen",
"dhcp_hardware_address": "Hardware-Adresse",
"dhcp_ip_addresses": "IP-Adressen",
"ip": "IP",
"dhcp_table_hostname": "Hostname",
"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_error": "Es konnte nicht ermittelt werden, ob es einen anderen DHCP-Server im Netzwerk gibt.",
"dhcp_static_ip_error": "Um den DHCP-Server nutzen zu können, muss eine statische IP-Adresse festgelegt werden. Es konnte nicht ermittelt werden, ob diese Netzwerkschnittstelle mit statischer IP-Adresse konfiguriert ist. Bitte legen Sie eine statische IP-Adresse manuell fest.",
"dhcp_dynamic_ip_found": "Ihr System verwendet die dynamische Konfiguration der IP-Adresse für die Schnittstelle <0>{{interfaceName}}</0>. Um den DHCP-Server nutzen zu können, muss eine statische IP-Adresse festgelegt werden. Ihre aktuelle IP-Adresse ist <0>{{ipAddress}}}</0>. Diese IP-Adresse wird automatisch als statisch festgelegt, sobald Sie auf die Schaltfläche „DHCP aktivieren” klicken.",
"dhcp_lease_added": "Statischer Lease „{{key}}” erfolgreich hinzugefügt",
"dhcp_lease_deleted": "Statischer Lease „{{key}}” erfolgreich entfernt",
"dhcp_new_static_lease": "Neuer statischer Lease",
"dhcp_static_leases_not_found": "Keine statischen DHCP-Leases gefunden",
"dhcp_add_static_lease": "Statischen Lease hinzufügen",
"dhcp_reset": "Möchten Sie die DHCP-Konfiguration wirklich zurücksetzen?",
"country": "Land",
"city": "Stadt",
"delete_confirm": "Möchten Sie „{{key}}” wirklich löschen?",
"form_enter_hostname": "Gerätenamen eingeben",
"error_details": "Fehlerdetails",
"response_details": "Einzelheiten der Antwort",
"request_details": "Einzelheiten der Anfrage",
"client_details": "Einzelheiten des Clients",
"details": "Details",
"back": "Zurück",
"dashboard": "Übersicht",
"settings": "Einstellungen",
"filters": "Filter",
"filter": "Filter",
"query_log": "Anfragenprotokoll",
"compact": "Kompakt",
"nothing_found": "Nichts gefunden\n",
"faq": "FAQ",
"version": "Version",
"address": "Adresse",
"protocol": "Protokoll",
"on": "AN",
"off": "AUS",
"copyright": "Urheberrecht",
"homepage": "Startseite",
"report_an_issue": "Fehlerbericht senden",
"privacy_policy": "Datenschutzerklärung",
"enable_protection": "Schutz aktivieren",
"enabled_protection": "Schutz aktiviert",
"disable_protection": "Schutz deaktivieren",
"disabled_protection": "Schutz deaktiviert",
"refresh_statics": "Statistiken aktualisieren",
"dns_query": "DNS-Anfragen",
"blocked_by": "<0>Blockiert durch die Filter</0>",
"stats_malware_phishing": "Blockierte Malware/Phishing",
"stats_adult": "Blockierte Webseiten für Erwachsene",
"stats_query_domain": "Am häufigsten angefragte Domains",
"for_last_24_hours": "für die letzten 24 Stunden",
"for_last_days": "am letzten {{count}} Tag",
"for_last_days_plural": "in den letzten {{count}} Tage",
"no_domains_found": "Keine Domains gefunden",
"requests_count": "Anzahl der Anfragen",
"top_blocked_domains": "Am häufigsten blockierte Domains",
"top_clients": "Top Clients",
"no_clients_found": "Keine Clients gefunden",
"general_statistics": "Allgemeine Statistiken",
"number_of_dns_query_days": "Anzahl der in den letzten {{count}} Tagen verarbeiteten DNS-Anfragen",
"number_of_dns_query_days_plural": "Anzahl der DNS-Abfragen, die in den letzten {{count}}} Tagen verarbeitet wurden",
"number_of_dns_query_24_hours": "Anzahl der in den letzten 24 Stunden durchgeführten DNS-Anfragen",
"number_of_dns_query_blocked_24_hours": "Anzahl der durch Werbefilter und Host-Blocklisten geblockten DNS-Anfragen",
"number_of_dns_query_blocked_24_hours_by_sec": "Anzahl der durch das AdGuard-Modul für Internet-Sicherheit blockierten DNS-Anfragen",
"number_of_dns_query_blocked_24_hours_adult": "Anzahl der blockierten Webseiten für Erwachsene",
"enforced_save_search": "SafeSearch erzwungen",
"number_of_dns_query_to_safe_search": "Anzahl der DNS-Anfragen bei denen SafeSearch für Suchanfragen erzwungen wurde",
"average_processing_time": "Durchschnittliche Bearbeitungsdauer",
"average_processing_time_hint": "Durchschnittliche Zeit in Millisekunden zur Bearbeitung von DNS-Anfragen",
"block_domain_use_filters_and_hosts": "Domains durch Filter und Host-Dateien blockieren",
"filters_block_toggle_hint": "Sie können Blockierregeln in den <a href='#filters'>Filter</a>einstellungen erstellen",
"use_adguard_browsing_sec": "AdGuard Webservice für Internet-Sicherheit verwenden",
"use_adguard_browsing_sec_hint": "AdGuard Home überprüft, ob die Domain durch den Webservice für Internet-Sicherheit geblacklistet ist. Um Ihre Privatsphäre zu wahren, wird eine API verwendet, bei der nur ein kurzer Präfix des Domainnamens als SHA256 gehasht an den Server gesendet wird.",
"use_adguard_parental": "AdGuard Webservice für Kindersicherung verwenden",
"use_adguard_parental_hint": "AdGuard Home wird überprüfen, ob die Domain Inhalte hat, die nur für Erwachsene geeignet sind. Zum Schutz Ihrer Privatsphäre wird die gleiche API wie für den Webservice für Internet-Sicherheit verwendet.",
"enforce_safe_search": "SafeSearch erzwingen",
"enforce_save_search_hint": "AdGuard kann SafeSearch für folgende Suchmaschinen erzwingen: Google, Youtube, Bing und Yandex.",
"no_servers_specified": "Keine Server festgelegt",
"general_settings": "Allgemeine Einstellungen",
"dns_settings": "DNS-Einstellungen",
"dns_blocklists": "DNS-Sperrliste",
"dns_allowlists": "DNS-Freigabelisten",
"dns_blocklists_desc": "AdGuard Home sperrt Domains, die in den Sperrlisten enthalten sind.",
"dns_allowlists_desc": "Domains aus DNS-Freigabelisten werden auch dann zugelassen, wenn sie in einer der Sperrlisten enthalten sind.",
"custom_filtering_rules": "Benutzerdefinierte Filterregeln",
"encryption_settings": "Verschlüsselungseinstellungen",
"dhcp_settings": "DHCP-Einstellungen",
"upstream_dns": "Upstream-DNS-Server",
"upstream_dns_hint": "Wenn Sie dieses Feld leer lassen wird AdGuard Home <a href='https://1.1.1.1/' target='_blank'>Cloudflare DNS</a> als Upstream verwenden. Verwenden Sie das Präfix tls:// für DNS über TLS-Server.",
"test_upstream_btn": "Upstreams testen",
"upstreams": "Upstreams",
"apply_btn": "Anwenden",
"disabled_filtering_toast": "Filtern deaktiviert",
"enabled_filtering_toast": "Filtern aktiviert",
"disabled_safe_browsing_toast": "Internetsicherheit deaktiviert",
"enabled_safe_browsing_toast": "Internetsicherheit aktiviert",
"disabled_parental_toast": "Kindersicherung deaktiviert",
"enabled_parental_toast": "Kindersicherung aktiviert",
"disabled_safe_search_toast": "SafeSearch deaktiviert",
"enabled_save_search_toast": "SafeSearch aktiviert",
"enabled_table_header": "Aktiviert",
"name_table_header": "Name",
"list_url_table_header": "Adressliste",
"rules_count_table_header": "Anzahl Regeln",
"last_time_updated_table_header": "Letztes Update",
"actions_table_header": "Aktionen",
"request_table_header": "Anfrage",
"edit_table_action": "Bearbeiten",
"delete_table_action": "Löschen",
"elapsed": "Verstrichen",
"filters_and_hosts_hint": "AdGuard Home versteht grundlegende Werbefilterregeln und Host-Datei-Syntax.",
"no_blocklist_added": "Keine Sperrliste hinzugefügt",
"no_whitelist_added": "Keine Freigabeliste hinzugefügt",
"add_blocklist": "Sperrliste hinzufügen",
"add_allowlist": "Freigabeliste hinzufügen",
"cancel_btn": "Abbrechen",
"enter_name_hint": "Name eingeben",
"enter_url_or_path_hint": "URL oder absoluten Pfad der Liste eingeben",
"check_updates_btn": "Nach Updates suchen",
"new_blocklist": "Neue Sperrliste",
"new_allowlist": "Neue Freigabeliste",
"edit_blocklist": "Sperrliste bearbeiten",
"edit_allowlist": "Freigabeliste bearbeiten",
"choose_blocklist": "Sperrliste wählen",
"choose_allowlist": "Zulassungsliste wählen",
"enter_valid_blocklist": "Geben Sie eine gültige Adresse in die Sperrliste ein.",
"enter_valid_allowlist": "Geben Sie eine gültige Adresse in die Freigabeliste ein.",
"form_error_url_format": "Ungültiges URL-Format",
"form_error_url_or_path_format": "Ungültige URL oder absoluter Pfad der Liste",
"custom_filter_rules": "Benutzerdefinierte Filterregeln",
"custom_filter_rules_hint": "Geben Sie pro Zeile eine Regel ein. Sie können entweder Werbefilterregeln oder Host-Datei-Syntax verwenden.",
"examples_title": "Beispiele",
"example_meaning_filter_block": "blockiert den Zugang zur Domain example.org und all ihren Subdomains",
"example_meaning_filter_whitelist": "entblockt den Zugang zur Domain example.org und all ihren Subdomains",
"example_meaning_host_block": "AdGuard Home wird jetzt die Adresse 127.0.0.1 für die Domain example.org zurückgeben (aber nicht für die Subdomains).",
"example_comment": "! Hier steht ein Kommentar",
"example_comment_meaning": "Nur ein Kommentar",
"example_comment_hash": "# Auch ein Kommentar",
"example_regex_meaning": "Zugriff auf die Domains blockieren, die dem <0>spezifizierten regulären Ausdruck</0> entsprechen",
"example_upstream_regular": "regulärer DNS (über UDP)",
"example_upstream_dot": "verschlüsseltes <0>DNS-over-TLS</0>",
"example_upstream_doh": "verschlüsseltes <0>DNS_over_HTTPS</0>",
"example_upstream_sdns": "Sie können <0>DNS-Stempel</0> für <1>DNSCrypt</1> oder <2>DNS-over-HTTPS</2> Resolver benutzen",
"example_upstream_tcp": "regulärer DNS (über TCP)",
"all_lists_up_to_date_toast": "Alle Listen sind bereits auf dem neuesten Stand",
"updated_upstream_dns_toast": "Upstream-DNS-Server wurden aktualisiert",
"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",
"unblock": "Entsperren",
"block": "Blockieren",
"time_table_header": "Zeit",
"date": "Datum",
"domain_name_table_header": "Domainname",
"domain_or_client": "Domain oder Client",
"type_table_header": "Typ",
"response_table_header": "Antwort",
"response_code": "Antwortcode",
"client_table_header": "Client",
"empty_response_status": "Leer",
"show_all_filter_type": "Alle anzeigen",
"show_filtered_type": "Gefilterte anzeigen",
"no_logs_found": "Keine Protokolle gefunden",
"refresh_btn": "Aktualisieren",
"previous_btn": "Vorherige",
"next_btn": "Nächste",
"loading_table_status": "Laden...",
"page_table_footer_text": "Seite",
"rows_table_footer_text": "Reihen",
"updated_custom_filtering_toast": "Die benutzerdefinierten Filterregeln wurden aktualisiert",
"rule_removed_from_custom_filtering_toast": "Regel wurde aus den benutzerdefinierten Filterregeln entfernt",
"rule_added_to_custom_filtering_toast": "Regel wurde zu den benutzerdefinierten Filterregeln hinzugefügt",
"query_log_response_status": "Status: {{value}}",
"query_log_filtered": "Gefiltert nach {{filter}}",
"query_log_confirm_clear": "Möchten Sie wirklich das Abfrageprotokoll vollständig löschen?",
"query_log_cleared": "Das Abfrageprotokoll wurde erfolgreich gelöscht",
"query_log_updated": "Das Abfrageprotokoll wurde erfolgreich aktualisiert",
"query_log_clear": "Abfrageprotokolle leeren",
"query_log_retention": "Abfrageprotokolle aufbewahren",
"query_log_enable": "Protokoll aktivieren",
"query_log_configuration": "Konfiguration der Protokolle",
"query_log_disabled": "Das Abfrageprotokoll ist deaktiviert und kann in den <0>Einstellungen</0> konfiguriert werden.",
"query_log_strict_search": "Doppelte Anführungszeichen für die strikte Suche verwenden",
"query_log_retention_confirm": "Möchten Sie die Aufbewahrung des Abfrageprotokolls wirklich ändern? Wenn Sie den Zeitabstand verringern, gehen einige Daten verloren.",
"anonymize_client_ip": "Client-IP anonymisieren",
"anonymize_client_ip_desc": "Vollständige IP-Adresse des Clients nicht in Protokollen und Statistiken speichern",
"dns_config": "DNS-Serverkonfiguration",
"dns_cache_config": "Konfiguration des DNS-Zwischenspeicher",
"dns_cache_config_desc": "Hier können Sie den DNS-Zwischenspeicher konfigurieren",
"blocking_mode": "Sperrmodus",
"default": "Standard",
"nxdomain": "NXDomain",
"null_ip": "Null-IP-Adresse",
"custom_ip": "Benutzerdefinierte IP",
"blocking_ipv4": "IPv4-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)",
"plain_dns": "Einfaches DNS",
"form_enter_rate_limit": "Begrenzungswert eingeben",
"rate_limit": "Begrenzungswert",
"edns_enable": "EDNS Client Subnetz aktivieren",
"edns_cs_desc": "Wenn aktiviert, sendet AdGuard Home die Subnetze der Clients an die DNS-Server.",
"rate_limit_desc": "Die Anzahl der Anfragen pro Sekunde, die ein einzelner Client stellen darf (0: unbegrenzt)",
"blocking_ipv4_desc": "IP-Adresse, die für eine gesperrte A-Anfrage zurückgegeben werden soll",
"blocking_ipv6_desc": "IP-Adresse, die für eine gesperrte AAAA-Anfrage zurückgegeben werden soll",
"blocking_mode_default": "Standard: Mit NXDOMAIN antworten, wenn sie durch eine Regel im Adblock-Stil gesperrt sind; mit der in der Regel angegebenen IP-Adresse antworten, wenn sie durch eine Regel im /etc/hosts-Stil gesperrt wurde",
"blocking_mode_nxdomain": "NXDOMAIN: Mit NXDOMAIN-Code antworten",
"blocking_mode_null_ip": "Null-IP: Antworten mit Null-IP-Adresse (0.0.0.0.0 für A; :: für AAAA)",
"blocking_mode_custom_ip": "Benutzerdefinierte IP: Mit einer manuell eingestellten IP-Adresse antworten",
"upstream_dns_client_desc": "Wenn Sie dieses Feld leer lassen, verwendet AdGuard Home die Server, die in den <0>DNS-Einstellungen</0> konfiguriert sind.",
"tracker_source": "Tracker-Quelle",
"source_label": "Quelle",
"found_in_known_domain_db": "In der Datenbank der bekannten Domains gefunden.",
"category_label": "Kategorie",
"rule_label": "Regel",
"list_label": "Liste",
"unknown_filter": "Unbekannter Filter {{filterId}}",
"known_tracker": "Bekannte Tracker",
"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_settings_title": "Admin Weboberfläche",
"install_settings_listen": "Netzwerk-Schnittstelle\n",
"install_settings_port": "Port",
"install_settings_interface_link": "Ihre AdGuard Home Admin-Weboberfläche ist unter den folgenden Adressen verfügbar:",
"form_error_port": "Gültige Portnummer eingeben",
"install_settings_dns": "DNS-Server",
"install_settings_dns_desc": "Sie müssen Ihre Geräte oder Ihren Router so konfigurieren, dass er den DNS-Server unter den folgenden Adressen verwendet:",
"install_settings_all_interfaces": "Alle Schnittstellen",
"install_auth_title": "Authentifizierung",
"install_auth_desc": "Es wird dringend empfohlen, die Passwortauthentifizierung für Ihre AdGuard Home Administrator-Weboberfläche zu konfigurieren. Auch wenn es nur in Ihrem lokalen Netzwerk zugänglich ist, ist es dennoch wichtig, es vor unbefugtem Zugriff zu schützen.",
"install_auth_username": "Benutzername",
"install_auth_password": "Passwort",
"install_auth_confirm": "Passwort bestätigen",
"install_auth_username_enter": "Benutzernamen eingeben",
"install_auth_password_enter": "Passwort eingeben",
"install_step": "Schritt",
"install_devices_title": "Konfigurieren Sie Ihre Geräte",
"install_devices_desc": "Um AdGuard Home nutzen zu können, müssen Sie Ihre Geräte so konfigurieren, dass sie es auch wirklich nutzen.",
"install_submit_title": "Herzlichen Glückwunsch!",
"install_submit_desc": "Die Einrichtung ist abgeschlossen und Sie können mit der Verwendung von AdGuard Home beginnen.",
"install_devices_router": "Router",
"install_devices_router_desc": "Diese Einrichtung deckt automatisch alle an Ihren Heimrouter angeschlossenen Geräte ab, und Sie müssen nicht jedes einzelne davon manuell konfigurieren.",
"install_devices_address": "Der AdGuard Home DNS-Server belauscht die folgenden Adressen",
"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_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 <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_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_4": "Wählen Sie Ihre aktive Verbindung aus, klicken Sie mit der rechten Maustaste darauf und wählen Sie „Eigenschaften”.",
"install_devices_windows_list_5": "Suchen Sie in der Liste nach „Internet Protokoll Version 4 (TCP/IP)”, markieren Sie diese und klicken Sie dann erneut auf „Eigenschaften”.",
"install_devices_windows_list_6": "Wählen Sie „Folgende DNS-Serveradressen verwenden” und geben Sie Ihre AdGuard Home-Serveradressen ein.",
"install_devices_macos_list_1": "Klicken Sie auf das Apple-Symbol (oben links in der Menüzeile) und wählen den Eintrag „Systemeinstellungen”.",
"install_devices_macos_list_2": "Klicken Sie dort auf „Netzwerk”",
"install_devices_macos_list_3": "Wählen Sie die erste Verbindung in Ihrer Liste aus und klicken Sie auf „Weitere Optionen”.",
"install_devices_macos_list_4": "Wählen Sie den Tab „DNS” und geben Sie dort Ihre AdGuard Home-Serveradressen ein.",
"install_devices_android_list_1": "Tippen Sie auf dem Startbildschirm des Android-Menüs auf „Einstellungen”.",
"install_devices_android_list_2": "Tippen Sie im Menü auf „WLAN”. Der Bildschirm mit allen verfügbaren Netzwerken wird angezeigt (es ist nicht möglich, einen benutzerdefinierten DNS für die mobile Verbindung einzustellen).",
"install_devices_android_list_3": "Drücken Sie lange auf das Netzwerk, mit dem Sie verbunden sind, und tippen Sie auf „Netzwerk ändern”.",
"install_devices_android_list_4": "Bei einigen Geräten müssen Sie möglicherweise das Kontrollkästchen für „Erweitert” aktivieren, um weitere Einstellungen anzuzeigen. Um Ihre Android-DNS-Einstellungen anzupassen, müssen Sie die IP-Einstellungen von „DHCP” auf „Statisch” umstellen.",
"install_devices_android_list_5": "Ändern Sie die Werte für „DNS 1” und „DNS 2” auf Ihre AdGuard Home-Serveradressen.",
"install_devices_ios_list_1": "Tippen Sie auf dem Startbildschirm auf „Einstellungen”.",
"install_devices_ios_list_2": "Wählen Sie „WLAN” im linken Menü (es ist nicht möglich, DNS für mobile Netzwerke zu konfigurieren).",
"install_devices_ios_list_3": "Tippen Sie auf den Namen des aktuell aktiven Netzwerks.",
"install_devices_ios_list_4": "Geben Sie im DNS-Feld Ihre AdGuard Home-Serveradressen ein.",
"get_started": "Anfangen",
"next": "Weiter",
"open_dashboard": "Übersicht öffnen",
"install_saved": "Erfolgreich gespeichert",
"encryption_title": "Verschlüsselung",
"encryption_desc": "Verschlüsselungsunterstützung (HTTPS/TLS) für DNS- und Admin-Weboberfläche",
"encryption_config_saved": "Verschlüsselungseinstellungen wurden gespeichert",
"encryption_server": "Servername",
"encryption_server_enter": "Domain-Namen eingeben",
"encryption_server_desc": "Um HTTPS verwenden zu können, müssen Sie den Servernamen eingeben, der zu Ihrem SSL-Zertifikat passt.",
"encryption_redirect": "Automatisch auf HTTPS umleiten",
"encryption_redirect_desc": "Wenn aktiviert, leitet AdGuard Home Sie automatisch von HTTP- auf HTTPS-Adressen um.",
"encryption_https": "HTTPS-Port",
"encryption_https_desc": "Wenn der HTTPS-Port konfiguriert ist, ist die AdGuard Home-Administrationsschnittstelle über HTTPS zugänglich und bietet auch DNS-over-HTTTPS am Server „/dns-query”.",
"encryption_dot": "DNS-over-TLS",
"encryption_dot_desc": "Wenn dieser Port konfiguriert ist, führt AdGuard Home auf diesem Port einen DNS-over-TLS-Server aus.",
"encryption_certificates": "Zertifikate",
"encryption_certificates_desc": "Um die Verschlüsselung verwenden zu können, müssen Sie eine gültige SSL-Zertifikatskette für Ihre Domain angeben. Sie können ein kostenloses Zertifikat für <0>{{link}}</0> erhalten oder es bei einer der vertrauenswürdigen Zertifizierungsstellen kaufen.",
"encryption_certificates_input": "Kopieren Sie Ihre PEM-codierten Zertifikate und fügen Sie sie hier ein.",
"encryption_status": "Status",
"encryption_expire": "Gültig bis",
"encryption_key": "Privater Schlüssel",
"encryption_key_input": "Kopieren Sie Ihren PEM-codierten privaten Schlüssel für Ihr Zertifikat und fügen Sie ihn hier ein.",
"encryption_enable": "Verschlüsselung aktivieren (HTTPS, DNS-over-HTTPS und DNS-over-TLS)",
"encryption_enable_desc": "Wenn die Verschlüsselung aktiviert ist, funktioniert die AdGuard Home Admin-Oberfläche über HTTPS, und der DNS-Server wartet auf Anfragen über DNS-over-HTTPS und DNS-over-TLS.",
"encryption_chain_valid": "Zertifikatskette ist gültig",
"encryption_chain_invalid": "Zertifikatskette ist ungültig",
"encryption_key_valid": "Das ist ein gültiger {{type}} privater Schlüssel",
"encryption_key_invalid": "Das ist ein ungültiger {{type}} privater Schlüssel",
"encryption_subject": "Ausgestellt für",
"encryption_issuer": "Ausgestellt von",
"encryption_hostnames": "Hostnamen",
"encryption_reset": "Möchten Sie die Verschlüsselungseinstellungen wirklich zurücksetzen?",
"topline_expiring_certificate": "Ihr SSL-Zertifikat läuft demnächst ab. Aktualisieren Sie Ihre <0>Verschlüsselungseinstellungen</0>.",
"topline_expired_certificate": "Ihr SSL-Zertifikat ist abgelaufen. Aktualisieren Sie Ihre <0>Verschlüsselungseinstellungen</0>.",
"form_error_port_range": "Port zwischen 80 und 65535 eingeben",
"form_error_port_unsafe": "Dies ist ein unsicherer Port",
"form_error_equal": "Sollten nicht übereinstimmen",
"form_error_password": "Passwörter stimmen nicht überein",
"reset_settings": "Einstellungen zurücksetzen",
"update_announcement": "AdGuard Home {{version}} ist jetzt verfügbar! <0>Klicken Sie hier</0> für weitere Informationen.",
"setup_guide": "Einrichtungsassistent",
"dns_addresses": "DNS-Adressen",
"dns_start": "DNS-Server wird gestartet",
"dns_status_error": "Fehler bei Statusabfrage des DNS-Server",
"down": "Nicht erreichbar",
"fix": "Beheben",
"dns_providers": "Hier finden Sie eine <0>Liste der bekannten DNS-Anbieter</0> zur Auswahl.",
"update_now": "Jetzt aktualisieren",
"update_failed": "Das automatische Aktualisieren ist fehlgeschlagen. Bitte <a href='https://github.com/AdguardTeam/AdGuardHome/wiki/Getting-Started#update'>folgen Sie den Schritten</a>, um manuell zu aktualisieren.",
"processing_update": "Bitte warten Sie, AdGuard Home wird aktualisiert …",
"clients_title": "Clients",
"clients_desc": "Geräte einrichten, die mit AdGuard Home verbunden sind",
"settings_global": "Allgemein",
"settings_custom": "Benutzerdefiniert",
"table_client": "Client",
"table_name": "Name",
"save_btn": "Speichern",
"client_add": "Client hinzufügen",
"client_new": "Neuer Client",
"client_edit": "Client bearbeiten",
"client_identifier": "Bezeichner",
"ip_address": "IP-Adresse",
"client_identifier_desc": "Clients können durch die IP-Adresse oder MAC-Adresse identifiziert werden. Bitte beachten Sie, dass die Verwendung der MAC-Adresse als Identifikator nur möglich ist, wenn AdGuard Home gleichzeitig als <0>DHCP-Server</0> eingerichtet ist.",
"form_enter_ip": "IP-Adresse eingeben",
"form_enter_mac": "MAC-Adresse eingeben",
"form_enter_id": "Kennung eingeben",
"form_add_id": "Kennung hinzufügen",
"form_client_name": "Clientnamen eingeben",
"name": "Name",
"client_global_settings": "Allgemeine Einstellungen nutzen",
"client_deleted": "Client „{{key}}” erfolgreich entfernt",
"client_added": "Client „{{key}}” erfolgreich hinzugefügt",
"client_updated": "Client „{{key}}” erfolgreich aktualisiert",
"clients_not_found": "Keine Clients gefunden",
"client_confirm_delete": "Möchten Sie den Client „{{key}}” wirklich löschen?",
"list_confirm_delete": "Möchten Sie diese Liste wirklich löschen?",
"auto_clients_title": "Clients (Laufzeit)",
"auto_clients_desc": "Daten zu den Clients, die AdGuard Home verwenden, aber nicht in der Konfiguration gespeichert sind",
"access_title": "Zugriffsrechte",
"access_desc": "Hier können Sie die Zugriffsregeln für den AdGuard Home DNS-Server konfigurieren.",
"access_allowed_title": "Zugelassene Clients",
"access_allowed_desc": "Eine Liste von CIDR- oder IP-Adressen. Wenn konfiguriert, akzeptiert AdGuard Home nur Anfragen von diesen IP-Adressen.",
"access_disallowed_title": "Nicht zugelassene Clients",
"access_disallowed_desc": "Eine Liste von CIDR- oder IP-Adressen. Wenn konfiguriert, löscht AdGuard Home Anfragen von diesen IP-Adressen.",
"access_blocked_title": "Nicht zugelassene Domains",
"access_blocked_desc": "Verwechseln Sie dies nicht mit Filtern. AdGuard Home löscht DNS-Abfragen mit diesen Domänen während der Abfrage. Hier können Sie die genauen Domain-Namen, Wildcards und URL-Filter-Regeln angeben, z.B. 'beispiel.org', '*.beispiel.org' oder '|||beispiel.org^'.",
"access_settings_saved": "Zugriffseinstellungen erfolgreich gespeichert",
"updates_checked": "Erfolgreich auf Aktualisierungen geprüft",
"updates_version_equal": "AdGuard Home ist aktuell",
"check_updates_now": "Jetzt nach Aktualisierungen suchen",
"dns_privacy": "DNS-Datenschutz",
"setup_dns_privacy_1": "<0>DNS-over-TLS:</0> Zeichenkette <1>{{address}}</1> verwenden.",
"setup_dns_privacy_2": "<0>DNS-over-HTTPS:</0> Zeichenkette <1>{{address}}</1> verwenden.",
"setup_dns_privacy_3": "<0>Bitte beachten Sie, dass verschlüsselte DNS-Protokolle nur von Android 9 unterstützt werden. Sie müssen also zusätzliche Software für andere Betriebssysteme installieren.</0><0>Hier eine Liste der Apps, die Sie verwenden könnten.</0>",
"setup_dns_privacy_android_1": "Android 9 unterstützt DNS-over-TLS nativ. Um es zu konfigurieren, gehen Sie zu „Einstellungen” → „Netzwerk & Internet” → „Erweitert” → „Privater DNS” und geben Sie dort Ihren Domainnamen ein.",
"setup_dns_privacy_android_2": "<0>AdGuard für Android</0> unterstützt <1>DNS-over-HTTTPS</1> und <1>DNS-over-TLS</1>.",
"setup_dns_privacy_android_3": "„<0>Intra</0>” fügt <1>DNS-over-HTTPS</1>-Unterstützung zu Android hinzu.",
"setup_dns_privacy_ios_1": "„<0>DNSCloak</0>” unterstützt <1>DNS-over-HTTPS</1>, aber um es so zu konfigurieren, dass es Ihren eigenen Server verwendet, müssen Sie einen <2>DNS-Stempel</2> dafür generieren.",
"setup_dns_privacy_ios_2": "<0>AdGuard für iOS</0> unterstützt die Einrichtung von <1>DNS-over-HTTTPS</1> und <1>DNS-over-TLS</1>.",
"setup_dns_privacy_other_title": "Weitere Umsetzungen",
"setup_dns_privacy_other_1": "AdGuard Home selbst kann ein sicherer DNS-Client auf jeder Plattform sein.",
"setup_dns_privacy_other_2": "<0>dnsproxy</0> unterstützt alle bekannten sicheren DNS-Protokolle.",
"setup_dns_privacy_other_3": "<0>dnscrypt-proxy</0> unterstützt <1>DNS-over-HTTPS</1>.",
"setup_dns_privacy_other_4": "<0>Mozilla Firefox</0> unterstützt <1>DNS-over-HTTPS</1>.",
"setup_dns_privacy_other_5": "Weitere Umsetzungen finden Sie <0>hier</0> und <1>hier</1>.",
"setup_dns_notice": "Um <1>DNS-over-HTTTPS</1> oder <1>DNS-over-TLS</1> verwenden zu können, müssen Sie in den AdGuard Home Einstellungen die <0>Verschlüsselung konfigurieren</0>.",
"rewrite_added": "DNS-Umschreibung für „{{key}}” erfolgreich hinzugefügt",
"rewrite_deleted": "DNS-Umschreibung für „{{key}}” erfolgreich entfernt",
"rewrite_add": "DNS-Umschreibung hinzufügen",
"rewrite_not_found": "Keine DNS-Umschreibungen gefunden",
"rewrite_confirm_delete": "Möchten Sie die DNS-Umschreibung für „{{key}}” wirklich entfernen?",
"rewrite_desc": "Ermöglicht die einfache Konfiguration der benutzerdefinierten DNS-Antwort für einen bestimmten Domainnamen.",
"rewrite_applied": "Umschreibungsregel ist angewendet",
"rewrite_hosts_applied": "Von Hostdatei-Regel umgeschrieben",
"dns_rewrites": "DNS-Umscheibungen",
"form_domain": "Domain eingeben",
"form_answer": "IP-Adresse oder Domainname eingeben",
"form_error_domain_format": "Ungültiges Domainformat",
"form_error_answer_format": "Ungültiges Antwortformat",
"configure": "Konfigurieren",
"main_settings": "Grundeinstellungen",
"block_services": "Bestimmte Dienste sperren",
"blocked_services": "Gesperrte Dienste",
"blocked_services_desc": "Ermöglicht das schnelle Sperren beliebter Websites und Dienste.",
"blocked_services_saved": "Gesperrte Dienste erfolgreich gespeichert",
"blocked_services_global": "Global gesperrte Dienste verwenden",
"blocked_service": "Gesperrte Dienste",
"block_all": "Alle sperren",
"unblock_all": "Alle entsperren",
"encryption_certificate_path": "Zertifikatspfad",
"encryption_private_key_path": "Pfad des privaten Schlüssels",
"encryption_certificates_source_path": "Pfad für die Zertifikatsdatei festlegen",
"encryption_certificates_source_content": "Inhalt des Zertifikats einfügen",
"encryption_key_source_path": "Private Schlüsseldatei festlegen",
"encryption_key_source_content": "Inhalt des privaten Schlüssels einfügen",
"stats_params": "Statistikkonfiguration",
"config_successfully_saved": "Konfiguration erfolgreich gespeichert",
"interval_24_hour": "24 Stunden",
"interval_days": "{{count}} Tag",
"interval_days_plural": "{{count}} Tage",
"domain": "Domain",
"answer": "Antwort",
"filter_added_successfully": "Der Filter wurde erfolgreich hinzugefügt",
"filter_removed_successfully": "Der Filter wurde erfolgreich entfernt",
"filter_updated": "Der Filter wurde erfolgreich aktualisiert",
"statistics_configuration": "Statistikkonfiguration",
"statistics_retention": "Statistiken speichern",
"statistics_retention_desc": "Wenn Sie Intervallwert verringern, werden einige Daten verloren gehen",
"statistics_clear": " Statistiken leeren",
"statistics_clear_confirm": "Möchten Sie die Statistiken wirklich löschen?",
"statistics_retention_confirm": "Möchten Sie wirklich die Aufbewahrung der Statistiken ändern? Wenn Sie den Zeitabstand verringern, gehen einige Daten verloren.",
"statistics_cleared": "Statistiken wurden erfolgreich gelöscht",
"interval_hours": "{{count}} Stunde",
"interval_hours_plural": "{{count}} Stunden",
"filters_configuration": "Filterkonfiguration",
"filters_enable": "Filter aktivieren",
"filters_interval": "Aktualisierungsintervall der Filter",
"disabled": "Deaktiviert",
"username_label": "Benutzername",
"username_placeholder": "Benutzernamen eingeben",
"password_label": "Passwort",
"password_placeholder": "Passwort eingeben",
"sign_in": "Anmelden",
"sign_out": "Abmelden",
"forgot_password": "Passwort vergessen?",
"forgot_password_desc": "Bitte folgen Sie <0>dieser Anleitung</0>, um ein neues Passwort für Ihr Benutzerkonto zu erstellen.",
"location": "Ort",
"orgname": "Name der Organisation",
"netname": "Netzwerkname",
"network": "Netzwerk",
"descr": "Beschreibung",
"whois": "Whois",
"filtering_rules_learn_more": "<0>Erfahren Sie mehr</0> über die Erstellung eigener Hosts-Listen.",
"blocked_by_response": "Nach CNAME oder IP-Antwort blockiert",
"blocked_by_cname_or_ip": "Gesperrt durch CNAME oder IP",
"try_again": "Erneut versuchen",
"domain_desc": "Geben Sie den Domain-Namen oder den Platzhalter ein, der umgeschrieben werden soll.",
"example_rewrite_domain": "Antworten nur für diesen Domain-Namen umschreiben.",
"example_rewrite_wildcard": "Antworten nur für alle <0>example.org</0> Subdomains umschreiben.",
"rewrite_ip_address": "IP-Adresse: Verwenden Sie diese IP in einer A- oder AAAA-Antwort",
"rewrite_domain_name": "Domänenname: einen CNAME-Eintrag hinzufügen",
"rewrite_A": "<0>A</0>: spezieller Wert, <0>A</0>-Datensätze des \n vorgeschalteten Servers beibehalten",
"rewrite_AAAA": "<0>AAAA</0>: spezieller Wert, <0>AAAA</0>-Datensätze des vorgeschalteten Servers beibehalten",
"disable_ipv6": "IPv6 deaktivieren",
"disable_ipv6_desc": "Wenn diese Funktion aktiviert ist, werden alle DNS-Abfragen für IPv6-Adressen (Typ AAAA) verworfen.",
"fastest_addr": "Schnellste IP-Adresse",
"fastest_addr_desc": "Abfrage aller DNS-Server und Rückgabe der schnellsten IP-Adresse unter allen Antworten",
"autofix_warning_text": "Wenn Sie auf „Beheben” klicken, konfiguriert AdGuardHome Ihr System für die Verwendung des AdGuardHome-DNS-Servers.",
"autofix_warning_list": "Es werden folgende Aufgaben ausgeführt: <0>Deaktivieren des DNSStubListener-Systems</0> <0>Festlegen der DNS-Server-Adresse auf 127.0.0.1</0> <0>Ersetzen des symbolischen Linkziels von /etc/resolv.conf auf /run/systemd/resolve/resolv.conf</0> <0>Anhalten des DNSStubListener (systemseitig aufgelöster Dienst wird nachladen)</0>",
"autofix_warning_result": "Als Folge daraus werden alle DNS-Anforderungen von Ihrem System standardmäßig von AdGuardHome verarbeitet.",
"tags_title": "Schlagwörter",
"tags_desc": "Sie können die Schlagwörter auswählen, die dem Client entsprechen. Die Schlagwörter können in die Filterregeln aufgenommen werden und erlauben Ihnen, sie genauer anzuwenden. <0>Mehr erfahren</0>",
"form_select_tags": "Schlagwörter des Clients auswählen",
"check_title": "Filterung überprüfen",
"check_desc": "Prüfen, ob der Hostname gefiltert wird",
"check": "Prüfen",
"form_enter_host": "Gerätenamen eingeben",
"filtered_custom_rules": "Nach benutzerdefinierten Filterregeln gefiltert",
"choose_from_list": "Aus Liste auswählen",
"add_custom_list": "Eigene Liste hinzufügen",
"host_whitelisted": "Der Host ist in der Positivliste enthalten",
"check_ip": "IP-Adressen: {{ip}}",
"check_cname": "CNAME: {{cname}}",
"check_reason": "Grund: {{reason}}",
"check_rule": "Regel: {{rule}}",
"check_service": "Dienstname: {{service}}",
"check_not_found": "Nicht in Ihren Filterlisten enthalten",
"client_confirm_block": "Möchten Sie den Client „{{ip}}” wirklich sperren?",
"client_confirm_unblock": "Möchten Sie den Client „{{ip}}” wirklich entsperren?",
"client_blocked": "Client „{{ip}}” erfolgreich gesperrt",
"client_unblocked": "Client „{{ip}}” erfolgreich entsperrt",
"static_ip": "Feste IP-Adresse",
"static_ip_desc": "AdGuard Home ist ein Server und benötigt daher eine feste IP-Adresse, um ordnungsgemäß zu funktionieren. Andernfalls weist Ihr Router diesem Gerät möglicherweise irgendwann eine andere IP-Adresse zu.",
"set_static_ip": "Feste IP-Adresse festlegen",
"install_static_ok": "Gute Nachrichten! Die feste IP-Adresse ist bereits konfiguriert",
"install_static_error": "AdGuard Home kann nicht automatisch für diese Netzwerkschnittstelle konfiguriert werden. Bitte suchen Sie nach einer Anleitung, wie Sie dies manuell durchführen können.",
"install_static_configure": "Wir haben festgestellt, dass eine dynamische IP-Adresse verwendet wird — <0>{{ip}}</0>. Möchten Sie diese als feste Adresse verwenden?",
"confirm_static_ip": "AdGuard Home konfiguriert {{ip}} als Ihre feste IP-Adresse. Möchten Sie fortfahren?",
"list_updated": "{{count}} Liste aktualisiert",
"list_updated_plural": "{{count}} Listen aktualisiert",
"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)",
"validated_with_dnssec": "Bestätigt mit DNSSEC",
"all_queries": "Alle Anfragen",
"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",
"cache_size": "Größe des Zwischenspeichers",
"cache_size_desc": "Größe des DNS-Zwischenspeichers (in Bytes)",
"cache_ttl_min_override": "TTL-Minimalwert überschreiben",
"cache_ttl_max_override": "TTL-Höchstwert überschreiben",
"enter_cache_size": "Größe des Zwischenspeichers eingeben",
"enter_cache_ttl_min_override": "TTL-Minimalwert eingeben",
"enter_cache_ttl_max_override": "TTL-Höchstwert eingeben",
"cache_ttl_min_override_desc": "Überschreibt den TTL-Minimalwert, der vom vorgeschalteten Server empfangen wurde. Dieser Wert darf nicht größer als 3600 (Sek.) (≙ 1 Stunde) betragen.",
"cache_ttl_max_override_desc": "Überschreibt den TLL-Maximalwert, der vom vorgeschalteten Server empfangenen wurde",
"min_exceeds_max_value": "Minimalwert überschreitet Maximalwert",
"value_not_larger_than": "Wert darf höchstens {{maximum}} betragen",
"filter_category_general": "Allgemein",
"filter_category_security": "Sicherheit",
"filter_category_regional": "Regional",
"filter_category_other": "Weitere",
"filter_category_general_desc": "Listen, die Tracking und Werbung auf den meisten Geräten sperren",
"filter_category_security_desc": "Listen, die auf das Sperren von Malware, Phishing- oder Scam-Domains spezialisiert sind",
"filter_category_regional_desc": "Listen, die sich auf regionale Werbeanzeigen und Tracking-Server konzentrieren",
"filter_category_other_desc": "Weitere Sperrlisten",
"original_response": "Ursprüngliche Antwort",
"click_to_view_queries": "Anklicken, um Abfragen anzuzeigen",
"port_53_faq_link": "Port 53 wird oft von Diensten wie „DNSStubListener” oder „systemresolved” belegt. Bitte lesen Sie <0>diese Anweisung</0>, wie dies behoben werden kann."
}

View File

@@ -1,8 +1,12 @@
{
"upstream_parallel": "Use parallel queries to speed up resolving by simultaneously querying all upstream servers",
"client_settings": "Client settings",
"example_upstream_reserved": "You can specify DNS upstream <0>for the specific domain(s)</0>",
"upstream_parallel": "Use parallel requests to speed up resolving by simultaneously querying all upstream servers",
"parallel_requests": "Parallel requests",
"load_balancing": "Load-balancing",
"load_balancing_desc": "Query one server at a time. AdGuard Home will use the weighted random algorithm to pick the server so that the fastest server will be used more often.",
"bootstrap_dns": "Bootstrap DNS servers",
"bootstrap_dns_desc": "Bootstrap DNS servers are used to resolve IP addresses of the DoH\/DoT resolvers you specify as upstreams.",
"url_added_successfully": "URL added successfully",
"bootstrap_dns_desc": "Bootstrap DNS servers are used to resolve IP addresses of the DoH/DoT resolvers you specify as upstreams.",
"check_dhcp_servers": "Check for DHCP servers",
"save_config": "Save config",
"enabled_dhcp": "DHCP server enabled",
@@ -11,14 +15,20 @@
"dhcp_description": "If your router does not provide DHCP settings, you can use AdGuard's own built-in DHCP server.",
"dhcp_enable": "Enable DHCP server",
"dhcp_disable": "Disable DHCP server",
"dhcp_not_found": "No active DHCP servers found on the network. It is safe to enable the built-in DHCP server.",
"dhcp_found": "Some active DHCP servers found on the network. It is not safe to enable the built-in DHCP server.",
"dhcp_not_found": "It is safe to enable the built-in DHCP server - we didn't find any active DHCP servers on the network. However, we encourage you to re-check it manually as our automatic test currently doesn't give 100% guarantee.",
"dhcp_found": "An active DHCP server is found on the network. It is not safe to enable the built-in DHCP server.",
"dhcp_leases": "DHCP leases",
"dhcp_static_leases": "DHCP static leases",
"dhcp_leases_not_found": "No DHCP leases found",
"dhcp_config_saved": "Saved DHCP server config",
"dhcp_config_saved": "DHCP config successfully saved",
"form_error_required": "Required field",
"form_error_ip_format": "Invalid IPv4 format",
"form_error_ip4_format": "Invalid IPv4 format",
"form_error_ip6_format": "Invalid IPv6 format",
"form_error_ip_format": "Invalid IP format",
"form_error_mac_format": "Invalid MAC format",
"form_error_client_id_format": "Invalid client ID format",
"form_error_positive": "Must be greater than 0",
"form_error_negative": "Must be equal to 0 or greater",
"dhcp_form_gateway_input": "Gateway IP",
"dhcp_form_subnet_input": "Subnet mask",
"dhcp_form_range_title": "Range of IP addresses",
@@ -29,40 +39,68 @@
"dhcp_interface_select": "Select DHCP interface",
"dhcp_hardware_address": "Hardware address",
"dhcp_ip_addresses": "IP addresses",
"ip": "IP",
"dhcp_table_hostname": "Hostname",
"dhcp_table_expires": "Expires",
"dhcp_warning": "If you want to enable the built-in DHCP server, make sure that there is no other active DHCP server. 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!",
"dhcp_error": "We could not determine whether there is another DHCP server in the network.",
"dhcp_static_ip_error": "In order to use DHCP server a static IP address must be set. We failed to determine if this network interface is configured using static IP address. Please set a static IP address manually.",
"dhcp_dynamic_ip_found": "Your system uses dynamic IP address configuration for interface <0>{{interfaceName}}</0>. In order to use DHCP server a static IP address must be set. Your current IP address is <0>{{ipAddress}}</0>. We will automatically set this IP address as static if you press Enable DHCP button.",
"dhcp_lease_added": "Static lease \"{{key}}\" successfully added",
"dhcp_lease_deleted": "Static lease \"{{key}}\" successfully deleted",
"dhcp_new_static_lease": "New static lease",
"dhcp_static_leases_not_found": "No DHCP static leases found",
"dhcp_add_static_lease": "Add static lease",
"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}}\"?",
"form_enter_hostname": "Enter hostname",
"error_details": "Error details",
"response_details": "Response details",
"request_details": "Request details",
"client_details": "Client details",
"details": "Details",
"back": "Back",
"dashboard": "Dashboard",
"settings": "Settings",
"filters": "Filters",
"filter": "Filter",
"query_log": "Query Log",
"compact": "Compact",
"nothing_found": "Nothing found",
"faq": "FAQ",
"version": "version",
"address": "address",
"version": "Version",
"address": "Address",
"protocol": "Protocol",
"on": "ON",
"off": "OFF",
"copyright": "Copyright",
"homepage": "Homepage",
"report_an_issue": "Report an issue",
"privacy_policy": "Privacy policy",
"enable_protection": "Enable protection",
"enabled_protection": "Enabled protection",
"disable_protection": "Disable protection",
"disabled_protection": "Disabled protection",
"refresh_statics": "Refresh statistics",
"dns_query": "DNS Queries",
"blocked_by": "Blocked by Filters",
"stats_malware_phishing": "Blocked malware\/phishing",
"blocked_by": "<0>Blocked by Filters</0>",
"stats_malware_phishing": "Blocked malware/phishing",
"stats_adult": "Blocked adult websites",
"stats_query_domain": "Top queried domains",
"for_last_24_hours": "for the last 24 hours",
"for_last_days": "for the last {{count}} day",
"for_last_days_plural": "for the last {{count}} days",
"no_domains_found": "No domains found",
"requests_count": "Requests count",
"top_blocked_domains": "Top blocked domains",
"top_clients": "Top clients",
"no_clients_found": "No clients found",
"general_statistics": "General statistics",
"number_of_dns_query_24_hours": "A number of DNS quieries processed for the last 24 hours",
"number_of_dns_query_days": "A number of DNS queries processed for the last {{count}} day",
"number_of_dns_query_days_plural": "A number of DNS queries processed for the last {{count}} days",
"number_of_dns_query_24_hours": "A number of DNS queries processed for the last 24 hours",
"number_of_dns_query_blocked_24_hours": "A number of DNS requests blocked by adblock filters and hosts blocklists",
"number_of_dns_query_blocked_24_hours_by_sec": "A number of DNS requests blocked by the AdGuard browsing security module",
"number_of_dns_query_blocked_24_hours_adult": "A number of adult websites blocked",
@@ -71,19 +109,27 @@
"average_processing_time": "Average processing time",
"average_processing_time_hint": "Average time in milliseconds on processing a DNS request",
"block_domain_use_filters_and_hosts": "Block domains using filters and hosts files",
"filters_block_toggle_hint": "You can setup blocking rules in the <a href='#filters'>Filters<\/a> settings.",
"filters_block_toggle_hint": "You can setup blocking rules in the <a href='#filters'>Filters</a> settings.",
"use_adguard_browsing_sec": "Use AdGuard browsing security web service",
"use_adguard_browsing_sec_hint": "AdGuard Home will check if domain is blacklisted by the browsing security web service. It will use privacy-friendly lookup API to perform the check: only a short prefix of the domain name SHA256 hash is sent to the server.",
"use_adguard_parental": "Use AdGuard parental control web service",
"use_adguard_parental_hint": "AdGuard Home will check if domain contains adult materials. It uses the same privacy-friendly API as the browsing security web service.",
"enforce_safe_search": "Enforce safe search",
"enforce_save_search_hint": "AdGuard Home can enforce safe search in the following search engines: Google, Youtube, Bing, and Yandex.",
"enforce_save_search_hint": "AdGuard Home can enforce safe search in the following search engines: Google, Youtube, Bing, DuckDuckGo, Yandex, Pixabay.",
"no_servers_specified": "No servers specified",
"no_settings": "No settings",
"general_settings": "General settings",
"dns_settings": "DNS settings",
"dns_blocklists": "DNS blocklists",
"dns_allowlists": "DNS allowlists",
"dns_blocklists_desc": "AdGuard Home will block domains matching the blocklists.",
"dns_allowlists_desc": "Domains from DNS allowlists will be allowed even if they are in any of the blocklists.",
"custom_filtering_rules": "Custom filtering rules",
"encryption_settings": "Encryption settings",
"dhcp_settings": "DHCP settings",
"upstream_dns": "Upstream DNS servers",
"upstream_dns_hint": "If you keep this field empty, AdGuard Home will use <a href='https:\/\/1.1.1.1\/' target='_blank'>Cloudflare DNS<\/a> as an upstream.",
"upstream_dns_hint": "If you keep this field empty, AdGuard Home will use <a href='https://www.quad9.net/' target='_blank'>Quad9</a> as an upstream.",
"test_upstream_btn": "Test upstreams",
"upstreams": "Upstreams",
"apply_btn": "Apply",
"disabled_filtering_toast": "Disabled filtering",
"enabled_filtering_toast": "Enabled filtering",
@@ -95,21 +141,33 @@
"enabled_save_search_toast": "Enabled safe search",
"enabled_table_header": "Enabled",
"name_table_header": "Name",
"filter_url_table_header": "Filter URL",
"list_url_table_header": "List URL",
"rules_count_table_header": "Rules count",
"last_time_updated_table_header": "Last time updated",
"actions_table_header": "Actions",
"request_table_header": "Request",
"edit_table_action": "Edit",
"delete_table_action": "Delete",
"filters_and_hosts": "Filters and hosts blocklists",
"elapsed": "Elapsed",
"filters_and_hosts_hint": "AdGuard Home understands basic adblock rules and hosts files syntax.",
"no_filters_added": "No filters added",
"add_filter_btn": "Add filter",
"no_blocklist_added": "No blocklists added",
"no_whitelist_added": "No allowlists added",
"add_blocklist": "Add blocklist",
"add_allowlist": "Add allowlist",
"cancel_btn": "Cancel",
"enter_name_hint": "Enter name",
"enter_url_hint": "Enter URL",
"check_updates_btn": "Check updates",
"new_filter_btn": "New filter subscription",
"enter_valid_filter_url": "Enter a valid URL to a filter subscription or a hosts file.",
"enter_url_or_path_hint": "Enter a URL or an absolute path of the list",
"check_updates_btn": "Check for updates",
"new_blocklist": "New blocklist",
"new_allowlist": "New allowlist",
"edit_blocklist": "Edit blocklist",
"edit_allowlist": "Edit allowlist",
"choose_blocklist": "Choose blocklists",
"choose_allowlist": "Choose allowlists",
"enter_valid_blocklist": "Enter a valid URL to the blocklist.",
"enter_valid_allowlist": "Enter a valid URL to the allowlist.",
"form_error_url_format": "Invalid URL format",
"form_error_url_or_path_format": "Invalid URL or absolute path of the list",
"custom_filter_rules": "Custom filtering rules",
"custom_filter_rules_hint": "Enter one rule on a line. You can use either adblock rules or hosts files syntax.",
"examples_title": "Examples",
@@ -125,44 +183,80 @@
"example_upstream_doh": "encrypted <0>DNS-over-HTTPS</0>",
"example_upstream_sdns": "you can use <0>DNS Stamps</0> for <1>DNSCrypt</1> or <2>DNS-over-HTTPS</2> resolvers",
"example_upstream_tcp": "regular DNS (over TCP)",
"example_upstream_reserved": "you can specify DNS upstream <0>for a specific domain(s)</0>",
"all_filters_up_to_date_toast": "All filters are already up-to-date",
"all_lists_up_to_date_toast": "All lists are already up-to-date",
"updated_upstream_dns_toast": "Updated the upstream DNS servers",
"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",
"unblock_btn": "Unblock",
"block_btn": "Block",
"unblock": "Unblock",
"block": "Block",
"time_table_header": "Time",
"date": "Date",
"domain_name_table_header": "Domain name",
"domain_or_client": "Domain or client",
"type_table_header": "Type",
"response_table_header": "Response",
"response_code": "Response code",
"client_table_header": "Client",
"empty_response_status": "Empty",
"show_all_filter_type": "Show all",
"show_filtered_type": "Show filtered",
"no_logs_found": "No logs found",
"disabled_log_btn": "Disable log",
"download_log_file_btn": "Download log file",
"refresh_btn": "Refresh",
"enabled_log_btn": "Enable log",
"last_dns_queries": "Last 5000 DNS queries",
"previous_btn": "Previous",
"next_btn": "Next",
"loading_table_status": "Loading...",
"page_table_footer_text": "Page",
"of_table_footer_text": "of",
"rows_table_footer_text": "rows",
"updated_custom_filtering_toast": "Updated the custom filtering rules",
"rule_removed_from_custom_filtering_toast": "Rule removed from the custom filtering rules",
"rule_added_to_custom_filtering_toast": "Rule added to the custom filtering rules",
"query_log_disabled_toast": "Query log disabled",
"query_log_enabled_toast": "Query log enabled",
"query_log_response_status": "Status: {{value}}",
"query_log_filtered": "Filtered by {{filter}}",
"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_updated": "The query log has been successfully updated",
"query_log_clear": "Clear query logs",
"query_log_retention": "Query logs retention",
"query_log_enable": "Enable log",
"query_log_configuration": "Logs configuration",
"query_log_disabled": "The query log is disabled and can be configured in the <0>settings</0>",
"query_log_strict_search": "Use double quotes for strict search",
"query_log_retention_confirm": "Are you sure you want to change query log retention? If you decrease the interval value, some data will be lost",
"anonymize_client_ip": "Anonymize client IP",
"anonymize_client_ip_desc": "Don't save the full IP address of the client in logs and statistics",
"dns_config": "DNS server configuration",
"dns_cache_config": "DNS cache configuration",
"dns_cache_config_desc": "Here you can configure DNS cache",
"blocking_mode": "Blocking mode",
"default": "Default",
"nxdomain": "NXDOMAIN",
"null_ip": "Null IP",
"custom_ip": "Custom IP",
"blocking_ipv4": "Blocking IPv4",
"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",
"rate_limit": "Rate limit",
"edns_enable": "Enable EDNS Client Subnet",
"edns_cs_desc": "If enabled, AdGuard Home will be sending clients' subnets to the DNS servers.",
"rate_limit_desc": "The number of requests per second that a single client is allowed to make (0: unlimited)",
"blocking_ipv4_desc": "IP address to be returned for a blocked A request",
"blocking_ipv6_desc": "IP address to be returned for a blocked AAAA request",
"blocking_mode_default": "Default: Respond with NXDOMAIN when blocked by Adblock-style rule; respond with the IP address specified in the rule when blocked by /etc/hosts-style rule",
"blocking_mode_nxdomain": "NXDOMAIN: Respond with NXDOMAIN code",
"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",
"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",
"found_in_known_domain_db": "Found in the known domains database.",
"category_label": "Category",
"rule_label": "Rule",
"filter_label": "Filter",
"list_label": "List",
"unknown_filter": "Unknown filter {{filterId}}",
"known_tracker": "Known tracker",
"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_settings_title": "Admin Web Interface",
@@ -174,7 +268,7 @@
"install_settings_dns_desc": "You will need to configure your devices or router to use the DNS server on the following addresses:",
"install_settings_all_interfaces": "All interfaces",
"install_auth_title": "Authentication",
"install_auth_desc": "It is highly recommended to configure password authentication to your AdGuard Home admin web interface. Even if it is accessible only in your local network, it is still important to have it protected from unrestricted access.",
"install_auth_desc": "It is highly recommended to configure password authentication to your AdGuard Home admin web interface. Even if it is accessible only in your local network, it is still important to protect it from unrestricted access.",
"install_auth_username": "Username",
"install_auth_password": "Password",
"install_auth_confirm": "Confirm password",
@@ -182,20 +276,21 @@
"install_auth_password_enter": "Enter password",
"install_step": "Step",
"install_devices_title": "Configure your devices",
"install_devices_desc": "In order for AdGuard Home to start working, you need to configure your devices to use it.",
"install_devices_desc": "To start using AdGuard Home, you need to configure your devices to use it.",
"install_submit_title": "Congratulations!",
"install_submit_desc": "The setup procedure is finished and you are ready to start using AdGuard Home.",
"install_devices_router": "Router",
"install_devices_router_desc": "This setup will automatically cover all the devices connected to your home router and you will not need to configure each of them manually.",
"install_devices_address": "AdGuard Home DNS server is listening to the following addresses",
"install_devices_router_list_1": "Open the preferences for your router. Usually, you can access it from your browser via a URL (like http:\/\/192.168.0.1\/ or http:\/\/192.168.1.1\/). You may be asked to enter the password. If you don't remember it, you can often reset the password by pressing a button on the router itself. Some routers require a specific application, which in that case should be already installed on your computer\/phone.",
"install_devices_router_list_2": "Find the DHCP\/DNS settings. Look for the DNS letters next to a field which allows two or three sets of numbers, each broken into four groups of one to three digits.",
"install_devices_address": "AdGuard Home DNS server is listening on the following addresses",
"install_devices_router_list_1": "Open the preferences for your router. Usually, you can access it from your browser via a URL (like http://192.168.0.1/ or http://192.168.1.1/). You may be asked to enter the password. If you don't remember it, you can often reset the password by pressing a button on the router itself. Some routers require a specific application, which in that case should be already installed on your computer/phone.",
"install_devices_router_list_2": "Find the DHCP/DNS settings. Look for the DNS letters next to a field which allows two or three sets of numbers, each broken into four groups of one to three digits.",
"install_devices_router_list_3": "Enter your AdGuard Home server addresses there.",
"install_devices_router_list_4": "You can't set a custom DNS server on some types of routers. In this case it may help if you set up AdGuard Home as a <0>DHCP server</0>. Otherwise, you should search for the manual on how to customize DNS servers for your particular router model.",
"install_devices_windows_list_1": "Open Control Panel through Start menu or Windows search.",
"install_devices_windows_list_2": "Go to Network and Internet category and then to Network and Sharing Center.",
"install_devices_windows_list_3": "On the left side of the screen find Change adapter settings and click on it.",
"install_devices_windows_list_4": "Select your active connection, right-click on it and choose Properties.",
"install_devices_windows_list_5": "Find Internet Protocol Version 4 (TCP\/IP) in the list, select it and then click on Properties again.",
"install_devices_windows_list_5": "Find Internet Protocol Version 4 (TCP/IP) in the list, select it and then click on Properties again.",
"install_devices_windows_list_6": "Choose Use the following DNS server addresses and enter your AdGuard Home server addresses.",
"install_devices_macos_list_1": "Click on Apple icon and go to System Preferences.",
"install_devices_macos_list_2": "Click on Network.",
@@ -215,7 +310,7 @@
"open_dashboard": "Open Dashboard",
"install_saved": "Saved successfully",
"encryption_title": "Encryption",
"encryption_desc": "Encryption (HTTPS\/TLS) support for both DNS and admin web interface",
"encryption_desc": "Encryption (HTTPS/TLS) support for both DNS and admin web interface",
"encryption_config_saved": "Encryption config saved",
"encryption_server": "Server name",
"encryption_server_enter": "Enter your domain name",
@@ -223,16 +318,16 @@
"encryption_redirect": "Redirect to HTTPS automatically",
"encryption_redirect_desc": "If checked, AdGuard Home will automatically redirect you from HTTP to HTTPS addresses.",
"encryption_https": "HTTPS port",
"encryption_https_desc": "If HTTPS port is configured, AdGuard Home admin interface will be accessible via HTTPS, and it will also provide DNS-over-HTTPS on '\/dns-query' location.",
"encryption_https_desc": "If HTTPS port is configured, AdGuard Home admin interface will be accessible via HTTPS, and it will also provide DNS-over-HTTPS on '/dns-query' location.",
"encryption_dot": "DNS-over-TLS port",
"encryption_dot_desc": "If this port is configured, AdGuard Home will run a DNS-over-TLS server on this port.",
"encryption_certificates": "Certificates",
"encryption_certificates_desc": "In order to use encryption, you need to provide a valid SSL certificates chain for your domain. You can get a free certificate on <0>{{link}}<\/0> or you can buy it from one of the trusted Certificate Authorities.",
"encryption_certificates_input": "Copy\/paste your PEM-encoded certificates here.",
"encryption_certificates_desc": "In order to use encryption, you need to provide a valid SSL certificates chain for your domain. You can get a free certificate on <0>{{link}}</0> or you can buy it from one of the trusted Certificate Authorities.",
"encryption_certificates_input": "Copy/paste your PEM-encoded certificates here.",
"encryption_status": "Status",
"encryption_expire": "Expires",
"encryption_key": "Private key",
"encryption_key_input": "Copy\/paste your PEM-encoded private key for your certificate here.",
"encryption_key_input": "Copy/paste your PEM-encoded private key for your certificate here.",
"encryption_enable": "Enable Encryption (HTTPS, DNS-over-HTTPS, and DNS-over-TLS)",
"encryption_enable_desc": "If encryption is enabled, AdGuard Home admin interface will work over HTTPS, and the DNS server will listen for requests over DNS-over-HTTPS and DNS-over-TLS.",
"encryption_chain_valid": "Certificate chain is valid",
@@ -243,14 +338,230 @@
"encryption_issuer": "Issuer",
"encryption_hostnames": "Hostnames",
"encryption_reset": "Are you sure you want to reset encryption settings?",
"topline_expiring_certificate": "Your SSL certificate is about to expire. Update <0>Encryption settings<\/0>.",
"topline_expired_certificate": "Your SSL certificate is expired. Update <0>Encryption settings<\/0>.",
"topline_expiring_certificate": "Your SSL certificate is about to expire. Update <0>Encryption settings</0>.",
"topline_expired_certificate": "Your SSL certificate is expired. Update <0>Encryption settings</0>.",
"form_error_port_range": "Enter port value in the range of 80-65535",
"form_error_port_unsafe": "This is an unsafe port",
"form_error_equal": "Shouldn't be equal",
"form_error_password": "Password mismatched",
"reset_settings": "Reset settings",
"update_announcement": "AdGuard Home {{version}} is now available! <0>Click here<\/0> for more info.",
"update_announcement": "AdGuard Home {{version}} is now available! <0>Click here</0> for more info.",
"setup_guide": "Setup guide",
"dns_addresses": "DNS addresses"
"dns_addresses": "DNS addresses",
"dns_start": "DNS server is starting up",
"dns_status_error": "Error checking the DNS server status",
"down": "Down",
"fix": "Fix",
"dns_providers": "Here is a <0>list of known DNS providers</0> to choose from.",
"update_now": "Update now",
"update_failed": "Auto-update failed. Please <a href='https://github.com/AdguardTeam/AdGuardHome/wiki/Getting-Started#update'>follow the steps</a> to update manually.",
"processing_update": "Please wait, AdGuard Home is being updated",
"clients_title": "Clients",
"clients_desc": "Configure devices connected to AdGuard Home",
"settings_global": "Global",
"settings_custom": "Custom",
"table_client": "Client",
"table_name": "Name",
"save_btn": "Save",
"client_add": "Add Client",
"client_new": "New Client",
"client_edit": "Edit Client",
"client_identifier": "Identifier",
"ip_address": "IP address",
"client_identifier_desc": "Clients can be identified by the IP address, CIDR, MAC address. Please note that using MAC as identifier is possible only if AdGuard Home is also a <0>DHCP server</0>",
"form_enter_ip": "Enter IP",
"form_enter_mac": "Enter MAC",
"form_enter_id": "Enter identifier",
"form_add_id": "Add identifier",
"form_client_name": "Enter client name",
"name": "Name",
"client_global_settings": "Use global settings",
"client_deleted": "Client \"{{key}}\" successfully deleted",
"client_added": "Client \"{{key}}\" successfully added",
"client_updated": "Client \"{{key}}\" successfully updated",
"clients_not_found": "No clients found",
"client_confirm_delete": "Are you sure you want to delete client \"{{key}}\"?",
"list_confirm_delete": "Are you sure you want to delete this list?",
"auto_clients_title": "Clients (runtime)",
"auto_clients_desc": "Data on the clients that use AdGuard Home, but not stored in the configuration",
"access_title": "Access settings",
"access_desc": "Here you can configure access rules for the AdGuard Home DNS server.",
"access_allowed_title": "Allowed clients",
"access_allowed_desc": "A list of CIDR or IP addresses. If configured, AdGuard Home will accept requests from these IP addresses only.",
"access_disallowed_title": "Disallowed clients",
"access_disallowed_desc": "A list of CIDR or IP addresses. If configured, AdGuard Home will drop requests from these IP addresses.",
"access_blocked_title": "Disallowed domains",
"access_blocked_desc": "Don't confuse this with filters. AdGuard Home will drop DNS queries with these domains in query's question. Here you can specify the exact domain names, wildcards and urlfilter-rules, e.g. 'example.org', '*.example.org' or '||example.org^'.",
"access_settings_saved": "Access settings successfully saved",
"updates_checked": "Updates successfully checked",
"updates_version_equal": "AdGuard Home is up-to-date",
"check_updates_now": "Check for updates now",
"dns_privacy": "DNS Privacy",
"setup_dns_privacy_1": "<0>DNS-over-TLS:</0> Use <1>{{address}}</1> string.",
"setup_dns_privacy_2": "<0>DNS-over-HTTPS:</0> Use <1>{{address}}</1> string.",
"setup_dns_privacy_3": "<0>Please note that encrypted DNS protocols are supported only on Android 9. So you need to install additional software for other operating systems.</0><0>Here's a list of software you can use.</0>",
"setup_dns_privacy_android_1": "Android 9 supports DNS-over-TLS natively. To configure it, go to Settings → Network & internet → Advanced → Private DNS and enter your domain name there.",
"setup_dns_privacy_android_2": "<0>AdGuard for Android</0> supports <1>DNS-over-HTTPS</1> and <1>DNS-over-TLS</1>.",
"setup_dns_privacy_android_3": "<0>Intra</0> adds <1>DNS-over-HTTPS</1> support to Android.",
"setup_dns_privacy_ios_1": "<0>DNSCloak</0> supports <1>DNS-over-HTTPS</1>, but in order to configure it to use your own server, you'll need to generate a <2>DNS Stamp</2> for it.",
"setup_dns_privacy_ios_2": "<0>AdGuard for iOS</0> supports <1>DNS-over-HTTPS</1> and <1>DNS-over-TLS</1> setup.",
"setup_dns_privacy_other_title": "Other implementations",
"setup_dns_privacy_other_1": "AdGuard Home itself can be a secure DNS client on any platform.",
"setup_dns_privacy_other_2": "<0>dnsproxy</0> supports all known secure DNS protocols.",
"setup_dns_privacy_other_3": "<0>dnscrypt-proxy</0> supports <1>DNS-over-HTTPS</1>.",
"setup_dns_privacy_other_4": "<0>Mozilla Firefox</0> supports <1>DNS-over-HTTPS</1>.",
"setup_dns_privacy_other_5": "You will find more implementations <0>here</0> and <1>here</1>.",
"setup_dns_notice": "In order to use <1>DNS-over-HTTPS</1> or <1>DNS-over-TLS</1>, you need to <0>configure Encryption</0> in AdGuard Home settings.",
"rewrite_added": "DNS rewrite for \"{{key}}\" successfully added",
"rewrite_deleted": "DNS rewrite for \"{{key}}\" successfully deleted",
"rewrite_add": "Add DNS rewrite",
"rewrite_not_found": "No DNS rewrites found",
"rewrite_confirm_delete": "Are you sure you want to delete DNS rewrite for \"{{key}}\"?",
"rewrite_desc": "Allows to easily configure custom DNS response for a specific domain name.",
"rewrite_applied": "Rewrite rule is applied",
"rewrite_hosts_applied": "Rewritten by the hosts file rule",
"dns_rewrites": "DNS rewrites",
"form_domain": "Enter domain name or wildcard",
"form_answer": "Enter IP address or domain name",
"form_error_domain_format": "Invalid domain format",
"form_error_answer_format": "Invalid answer format",
"configure": "Configure",
"main_settings": "Main settings",
"block_services": "Block specific services",
"blocked_services": "Blocked services",
"blocked_services_desc": "Allows to quickly block popular sites and services.",
"blocked_services_saved": "Blocked services successfully saved",
"blocked_services_global": "Use global blocked services",
"blocked_service": "Blocked service",
"block_all": "Block all",
"unblock_all": "Unblock all",
"encryption_certificate_path": "Certificate path",
"encryption_private_key_path": "Private key path",
"encryption_certificates_source_path": "Set a certificates file path",
"encryption_certificates_source_content": "Paste the certificates contents",
"encryption_key_source_path": "Set a private key file",
"encryption_key_source_content": "Paste the private key contents",
"stats_params": "Statistics configuration",
"config_successfully_saved": "Configuration successfully saved",
"interval_24_hour": "24 hours",
"interval_days": "{{count}} day",
"interval_days_plural": "{{count}} days",
"domain": "Domain",
"answer": "Answer",
"filter_added_successfully": "The list has been successfully added",
"filter_removed_successfully": "The list has been successfully removed",
"filter_updated": "The list has been successfully updated",
"statistics_configuration": "Statistics configuration",
"statistics_retention": "Statistics retention",
"statistics_retention_desc": "If you decrease the interval value, some data will be lost",
"statistics_clear": " Clear statistics",
"statistics_clear_confirm": "Are you sure you want to clear statistics?",
"statistics_retention_confirm": "Are you sure you want to change statistics retention? If you decrease the interval value, some data will be lost",
"statistics_cleared": "Statistics successfully cleared",
"interval_hours": "{{count}} hour",
"interval_hours_plural": "{{count}} hours",
"filters_configuration": "Filters configuration",
"filters_enable": "Enable filters",
"filters_interval": "Filters update interval",
"disabled": "Disabled",
"username_label": "Username",
"username_placeholder": "Enter username",
"password_label": "Password",
"password_placeholder": "Enter password",
"sign_in": "Sign in",
"sign_out": "Sign out",
"forgot_password": "Forgot password?",
"forgot_password_desc": "Please follow <0>these steps</0> to create a new password for your user account.",
"location": "Location",
"orgname": "Organization name",
"netname": "Network name",
"network": "Network",
"descr": "Description",
"whois": "Whois",
"filtering_rules_learn_more": "<0>Learn more</0> about creating your own hosts lists.",
"blocked_by_response": "Blocked by CNAME or IP in response",
"blocked_by_cname_or_ip": "Blocked by CNAME or IP",
"try_again": "Try again",
"domain_desc": "Enter the domain name or wildcard you want to be rewritten.",
"example_rewrite_domain": "rewrite responses for this domain name only.",
"example_rewrite_wildcard": "rewrite responses for all <0>example.org</0> subdomains.",
"rewrite_ip_address": "IP address: use this IP in an A or AAAA response",
"rewrite_domain_name": "Domain name: add a CNAME record",
"rewrite_A": "<0>A</0>: special value, keep <0>A</0> records from the upstream",
"rewrite_AAAA": "<0>AAAA</0>: special value, keep <0>AAAA</0> records from the upstream",
"disable_ipv6": "Disable IPv6",
"disable_ipv6_desc": "If this feature is enabled, all DNS queries for IPv6 addresses (type AAAA) will be dropped.",
"fastest_addr": "Fastest IP address",
"fastest_addr_desc": "Query all DNS servers and return the fastest IP address among all responses. This will slow down the DNS queries as we have to wait for responses from all DNS servers, but improve the overall connectivity.",
"autofix_warning_text": "If you click \"Fix\", AdGuard Home will configure your system to use AdGuard Home DNS server.",
"autofix_warning_list": "It will perform these tasks: <0>Deactivate system DNSStubListener</0> <0>Set DNS server address to 127.0.0.1</0> <0>Replace symbolic link target of /etc/resolv.conf with /run/systemd/resolve/resolv.conf</0> <0>Stop DNSStubListener (reload systemd-resolved service)</0>",
"autofix_warning_result": "As a result all DNS requests from your system will be processed by AdGuard Home by default.",
"tags_title": "Tags",
"tags_desc": "You can select the tags that correspond to the client. Tags can be included in the filtering rules and allow you to apply them more accurately. <0>Learn more</0>",
"form_select_tags": "Select client tags",
"check_title": "Check the filtering",
"check_desc": "Check if the host name is filtered",
"check": "Check",
"form_enter_host": "Enter a host name",
"filtered_custom_rules": "Filtered by Custom filtering rules",
"choose_from_list": "Choose from the list",
"add_custom_list": "Add a custom list",
"host_whitelisted": "The host is whitelisted",
"check_ip": "IP addresses: {{ip}}",
"check_cname": "CNAME: {{cname}}",
"check_reason": "Reason: {{reason}}",
"check_rule": "Rule: {{rule}}",
"check_service": "Service name: {{service}}",
"check_not_found": "Not found in your filter lists",
"client_confirm_block": "Are you sure you want to block the client \"{{ip}}\"?",
"client_confirm_unblock": "Are you sure you want to unblock the client \"{{ip}}\"?",
"client_blocked": "Client \"{{ip}}\" successfully blocked",
"client_unblocked": "Client \"{{ip}}\" successfully unblocked",
"static_ip": "Static IP Address",
"static_ip_desc": "AdGuard Home is a server so it needs a static IP address to function properly. Otherwise, at some point, your router may assign a different IP address to this device.",
"set_static_ip": "Set a static IP address",
"install_static_ok": "Good news! The static IP address is already configured",
"install_static_error": "AdGuard Home cannot configure it automatically for this network interface. Please look for an instruction on how to do this manually.",
"install_static_configure": "We have detected that a dynamic IP address is used — <0>{{ip}}</0>. Do you want to use it as your static address?",
"confirm_static_ip": "AdGuard Home will configure {{ip}} to be your static IP address. Do you want to proceed?",
"list_updated": "{{count}} list updated",
"list_updated_plural": "{{count}} lists updated",
"dnssec_enable": "Enable DNSSEC",
"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",
"all_queries": "All queries",
"show_blocked_responses": "Blocked",
"show_whitelisted_responses": "Whitelisted",
"show_processed_responses": "Processed",
"blocked_safebrowsing": "Blocked by 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",
"cache_size": "Cache size",
"cache_size_desc": "DNS cache size (in bytes)",
"cache_ttl_min_override": "Override minimum TTL",
"cache_ttl_max_override": "Override maximum TTL",
"enter_cache_size": "Enter cache size",
"enter_cache_ttl_min_override": "Enter minimum TTL",
"enter_cache_ttl_max_override": "Enter maximum TTL",
"cache_ttl_min_override_desc": "Override TTL value (minimum) received from upstream server. This value can't larger than 3600 (1 hour)",
"cache_ttl_max_override_desc": "Override TTL value (maximum) received from upstream server",
"min_exceeds_max_value": "Minimum value exceeds maximum value",
"value_not_larger_than": "Value can't be larger than {{maximum}}",
"filter_category_general": "General",
"filter_category_security": "Security",
"filter_category_regional": "Regional",
"filter_category_other": "Other",
"filter_category_general_desc": "Lists that block tracking and advertising on most of the devices",
"filter_category_security_desc": "Lists that specialize on blocking malware, phishing or scam domains",
"filter_category_regional_desc": "Lists that focus on regional ads and tracking servers",
"filter_category_other_desc": "Other blocklists",
"original_response": "Original response",
"click_to_view_queries": "Click to view queries",
"port_53_faq_link": "Port 53 is often occupied by \"DNSStubListener\" or \"systemd-resolved\" services. Please read <0>this instruction</0> on how to resolve this."
}

View File

@@ -1,159 +1,567 @@
{
"check_dhcp_servers": "Compruebe si hay servidores DHCP",
"save_config": "Guardar config",
"client_settings": "Configuración de clientes",
"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",
"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_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",
"save_config": "Guardar configuración",
"enabled_dhcp": "Servidor DHCP habilitado",
"disabled_dhcp": "Servidor DHCP deshabilitado",
"dhcp_title": "Servidor DHCP (experimental)",
"dhcp_description": "Si su enrutador no proporciona la configuraci\u00f3n DHCP, puede utilizar el propio servidor DHCP incorporado de AdGuard.",
"dhcp_description": "Si tu router no proporciona la configuración DHCP, puedes utilizar el propio servidor DHCP incorporado de AdGuard.",
"dhcp_enable": "Habilitar servidor DHCP",
"dhcp_disable": "Deshabilitar el servidor DHCP",
"dhcp_not_found": "No se han encontrado servidores DHCP activos en la red. Es seguro habilitar el servidor DHCP incorporado.",
"dhcp_found": "Se encontraron servidores DHCP activos encontrados en la red. No es seguro habilitar el servidor DHCP incorporado.",
"dhcp_leases": "concesi\u00f3nes DHCP",
"dhcp_leases_not_found": "No se encontraron concesi\u00f3nes DHCP",
"dhcp_config_saved": "Configuraci\u00f3n del servidor DHCP guardada",
"dhcp_disable": "Deshabilitar servidor DHCP",
"dhcp_not_found": "Es seguro habilitar el servidor DHCP incorporado. No se ha encontrado ningún servidor DHCP activo en la red, sin embargo le recomendamos que lo vuelva a comprobar manualmente, ya que nuestra prueba automática no ofrece actualmente una garantía del 100 %.",
"dhcp_found": "Un servidor DHCP activo se encuentra en la red. No es seguro habilitar el servidor DHCP incorporado.",
"dhcp_leases": "Asignaciones DHCP",
"dhcp_static_leases": "Asignaciones DHCP estáticas",
"dhcp_leases_not_found": "No se han encontrado asignaciones DHCP",
"dhcp_config_saved": "Configuración DHCP guardado correctamente",
"form_error_required": "Campo obligatorio",
"form_error_ip_format": "Formato IPv4 no v\u00e1lido",
"form_error_ip4_format": "Formato IPv4 no válido",
"form_error_ip6_format": "Formato IPv6 no válido",
"form_error_ip_format": "Formato IP no válido",
"form_error_mac_format": "Formato MAC no válido",
"form_error_client_id_format": "Formato de ID de cliente no válido",
"form_error_positive": "Debe ser mayor que 0",
"dhcp_form_gateway_input": "IP de acceso",
"dhcp_form_subnet_input": "M\u00e1scara de subred",
"form_error_negative": "Debe ser igual o mayor que 0",
"dhcp_form_gateway_input": "IP de puerta de enlace",
"dhcp_form_subnet_input": "Máscara de subred",
"dhcp_form_range_title": "Rango de direcciones IP",
"dhcp_form_range_start": "Inicio de rango",
"dhcp_form_range_end": "Final de rango",
"dhcp_form_lease_title": "Tiempo de concesi\u00f3n DHCP (en segundos)",
"dhcp_form_lease_input": "duraci\u00f3n de la concesi\u00f3n",
"dhcp_form_lease_title": "Tiempo de asignación DHCP (en segundos)",
"dhcp_form_lease_input": "Duración de asignación",
"dhcp_interface_select": "Seleccione la interfaz DHCP",
"dhcp_hardware_address": "Direcci\u00f3n de hardware",
"dhcp_hardware_address": "Dirección MAC",
"dhcp_ip_addresses": "Direcciones IP",
"dhcp_table_hostname": "Hostname",
"ip": "IP",
"dhcp_table_hostname": "Nombre del host",
"dhcp_table_expires": "Expira",
"back": "Atr\u00e1s",
"dashboard": "Tablero de rendimiento",
"settings": "Ajustes",
"dhcp_warning": "Si de todos modos deseas habilitar el servidor DHCP, asegúrate de que no hay otro servidor DHCP activo en tu red. ¡De lo contrario, puedes dejar sin Internet a los dispositivos conectados!",
"dhcp_error": "No pudimos determinar si hay otro servidor DHCP en la red.",
"dhcp_static_ip_error": "Para poder utilizar el servidor DHCP se debe establecer una dirección IP estática. No hemos podido determinar si esta interfaz de red está configurada utilizando una dirección IP estática. Por favor establezca una dirección IP estática manualmente.",
"dhcp_dynamic_ip_found": "Tu sistema utiliza la configuración de dirección IP dinámica para la interfaz <0>{{interfaceName}}</0>. Para poder utilizar el servidor DHCP se debe establecer una dirección IP estática. Tu dirección IP actual es <0>{{ipAddress}}</0>. Si presionas el botón Habilitar servidor DHCP, estableceremos automáticamente esta dirección IP como estática.",
"dhcp_lease_added": "Asignación estática \"{{key}}\" añadido correctamente",
"dhcp_lease_deleted": "Asignación estática \"{{key}}\" eliminado correctamente",
"dhcp_new_static_lease": "Nueva asignación estática",
"dhcp_static_leases_not_found": "No se han encontrado asignaciones DHCP estáticas",
"dhcp_add_static_lease": "Añadir asignación estática",
"dhcp_reset": "¿Está seguro de que desea restablecer la configuración DHCP?",
"country": "País",
"city": "Ciudad",
"delete_confirm": "¿Está seguro de que desea eliminar \"{{key}}\"?",
"form_enter_hostname": "Ingresa el nombre del host",
"error_details": "Detalles del error",
"response_details": "Detalles de la respuesta",
"request_details": "Detalles de la petición",
"client_details": "Detalles del cliente",
"details": "Detalles",
"back": "Atrás",
"dashboard": "Panel de control",
"settings": "Configuración",
"filters": "Filtros",
"query_log": "Log de consulta",
"faq": "FAQ",
"version": "versi\u00f3n",
"address": "direcci\u00f3n",
"on": "Activado",
"off": "Desactivado",
"copyright": "Derechos de autor",
"homepage": "P\u00e1gina de inicio",
"filter": "Filtro",
"query_log": "Registro de consultas",
"compact": "Compacto",
"nothing_found": "No se ha encontrado nada",
"faq": "Preguntas frecuentes",
"version": "Versión",
"address": "Dirección",
"protocol": "Protocolo",
"on": "Activo",
"off": "Inactivo",
"copyright": "Copyright",
"homepage": "Página de inicio",
"report_an_issue": "Reportar un error",
"enable_protection": "Activar la protecci\u00f3n",
"enabled_protection": "Protecci\u00f3n activada",
"disable_protection": "Desactivar protecci\u00f3n",
"disabled_protection": "Protecci\u00f3n desactivada",
"refresh_statics": "Restablecer estad\u00edsticas",
"privacy_policy": "Política de privacidad",
"enable_protection": "Habilitar protección",
"enabled_protection": "Protección habilitada",
"disable_protection": "Deshabilitar protección",
"disabled_protection": "Protección deshabilitada",
"refresh_statics": "Actualizar estadísticas",
"dns_query": "Consultas DNS",
"blocked_by": "Bloqueado por filtros",
"stats_malware_phishing": "Malware\/phishing bloqueado",
"stats_adult": "Contenido para adultos bloqueado",
"stats_query_domain": "Dominios m\u00e1s solicitados",
"for_last_24_hours": "en las \u00faltimas 24 horas",
"no_domains_found": "Dominios no encontrados",
"requests_count": "N\u00famero de solicitudes",
"top_blocked_domains": "Dominios m\u00e1s bloqueados",
"top_clients": "Clientes m\u00e1s populares",
"no_clients_found": "No hay clientes",
"general_statistics": "Estad\u00edsticas generales",
"number_of_dns_query_24_hours": "Una serie de consultas DNS procesadas durante las \u00faltimas 24 horas",
"number_of_dns_query_blocked_24_hours": "El n\u00famero de solicitudes de DNS bloqueadas por los filtros de publicidad y listas de bloqueo de hosts",
"number_of_dns_query_blocked_24_hours_by_sec": "Un n\u00famero de solicitudes de DNS bloqueadas por el m\u00f3dulo de navegaci\u00f3n segura de AdGuard",
"number_of_dns_query_blocked_24_hours_adult": "Un n\u00famero de sitios para adultos bloqueados",
"enforced_save_search": "B\u00fasqueda segura forzada",
"number_of_dns_query_to_safe_search": "Una serie de solicitudes de DNS a los motores de b\u00fasqueda para los que se aplic\u00f3 la B\u00fasqueda Segura",
"blocked_by": "<0>Bloqueado por filtros</0>",
"stats_malware_phishing": "Malware/phishing bloqueado",
"stats_adult": "Sitios web para adultos bloqueado",
"stats_query_domain": "Dominios más consultados",
"for_last_24_hours": "en las últimas 24 horas",
"for_last_days": "durante los últimos {{count}} días",
"for_last_days_plural": "durante los últimos {{count}} días",
"no_domains_found": "No se han encontrado dominios",
"requests_count": "Número de peticiones",
"top_blocked_domains": "Dominios más bloqueados",
"top_clients": "Clientes más frecuentes",
"no_clients_found": "No se han encontrado clientes",
"general_statistics": "Estadísticas generales",
"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_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_by_sec": "Número de peticiones DNS bloqueadas por el módulo de seguridad de navegación de AdGuard",
"number_of_dns_query_blocked_24_hours_adult": "Número de sitios web para adultos bloqueado",
"enforced_save_search": "Búsquedas seguras forzadas",
"number_of_dns_query_to_safe_search": "Número de peticiones DNS a los motores de búsqueda para los que se aplicó la búsqueda segura forzada",
"average_processing_time": "Tiempo promedio de procesamiento",
"average_processing_time_hint": "Tiempo promedio en milisegundos al procesar una solicitud DNS",
"average_processing_time_hint": "Tiempo promedio en milisegundos al procesar una petición DNS",
"block_domain_use_filters_and_hosts": "Bloquear dominios usando filtros y archivos hosts",
"filters_block_toggle_hint": "Puede configurar las reglas de bloqueo en los ajustes <a href='#filters'>Filtros<\/a>.",
"use_adguard_browsing_sec": "Usar el servicio web de Seguridad de navegaci\u00f3n de AdGuard",
"use_adguard_browsing_sec_hint": "AdGuard Home comprobar\u00e1 si el dominio est\u00e1 en la lista negra del servicio web de seguridad de navegaci\u00f3n. Utilizar\u00e1 una API de b\u00fasqueda amigable con la privacidad para realizar la comprobaci\u00f3n: s\u00f3lo se env\u00eda al servidor un prefijo corto del hash del nombre de dominio SHA256.",
"use_adguard_parental": "Usar Control Parental de AdGuard ",
"use_adguard_parental_hint": "AdGuard Home comprobar\u00e1 si el dominio contiene materiales para adultos. Utiliza la misma API amigable con la privacidad que el servicio web de seguridad de navegaci\u00f3n.",
"enforce_safe_search": "Forzar b\u00fasqueda segura",
"enforce_save_search_hint": "AdGuard Home puede forzar la b\u00fasqueda segura en los siguientes motores de b\u00fasqueda: Google, Youtube, Bing y Yandex.",
"filters_block_toggle_hint": "Puedes configurar las reglas de bloqueo en la configuración de <a href='#filters'>filtros</a>.",
"use_adguard_browsing_sec": "Usar el servicio web de seguridad de navegación de AdGuard",
"use_adguard_browsing_sec_hint": "AdGuard Home comprobará si el dominio está en la lista negra del servicio web de seguridad de navegación. Utilizará la API de búsqueda amigable con la privacidad para realizar la comprobación: solo se envía al servidor un prefijo corto del nombre de dominio con hash SHA256.",
"use_adguard_parental": "Usar el control parental de AdGuard",
"use_adguard_parental_hint": "AdGuard Home comprobará si el dominio contiene materiales para adultos. Utiliza la misma API amigable con la privacidad del servicio web de seguridad de navegación.",
"enforce_safe_search": "Forzar búsqueda segura",
"enforce_save_search_hint": "AdGuard Home puede forzar la búsqueda segura en los siguientes motores de búsqueda: Google, YouTube, Bing, DuckDuckGo, Yandex y Pixabay.",
"no_servers_specified": "No hay servidores especificados",
"no_settings": "No hay ajustes",
"general_settings": "Ajustes generales",
"upstream_dns": "Servidores DNS upstream",
"upstream_dns_hint": "Si mantiene este campo vac\u00edo, AdGuard Home utilizar\u00e1 <a href='https:\/\/1.1.1.1\/' target='_blank'>Cloudflare DNS<\/a> como upstream. Utilice el prefijo tls:\/\/ para DNS sobre servidores TLS.",
"test_upstream_btn": "Probar upstream",
"general_settings": "Configuración general",
"dns_settings": "Configuración del DNS",
"dns_blocklists": "Listas de bloqueo DNS",
"dns_allowlists": "Listas de permitido DNS",
"dns_blocklists_desc": "AdGuard Home bloqueará los dominios que coincidan con las listas de bloqueo.",
"dns_allowlists_desc": "Los dominios de las listas de permitido DNS serán permitidos incluso si están en cualquiera de las listas de bloqueo.",
"custom_filtering_rules": "Reglas de filtrado personalizado",
"encryption_settings": "Configuración de cifrado",
"dhcp_settings": "Configuración DHCP",
"upstream_dns": "Servidores 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",
"upstreams": "DNS de subida",
"apply_btn": "Aplicar",
"disabled_filtering_toast": "Desactivar filtrado",
"enabled_filtering_toast": "Filtrado activado",
"disabled_safe_browsing_toast": "Navegaci\u00f3n segura desactivada",
"enabled_safe_browsing_toast": "Navegaci\u00f3n segura activada",
"disabled_parental_toast": "Control parental desactivado",
"enabled_parental_toast": "Control parental activado",
"disabled_safe_search_toast": "B\u00fasqueda segura desactivada",
"enabled_save_search_toast": "B\u00fasqueda segura activada",
"enabled_table_header": "Activado",
"disabled_filtering_toast": "Filtrado deshabilitado",
"enabled_filtering_toast": "Filtrado habilitado",
"disabled_safe_browsing_toast": "Navegación segura deshabilitada",
"enabled_safe_browsing_toast": "Navegación segura habilitada",
"disabled_parental_toast": "Control parental deshabilitado",
"enabled_parental_toast": "Control parental habilitado",
"disabled_safe_search_toast": "Búsqueda segura deshabilitada",
"enabled_save_search_toast": "Búsqueda segura habilitada",
"enabled_table_header": "Habilitado",
"name_table_header": "Nombre",
"filter_url_table_header": "Filtro URL",
"rules_count_table_header": "N\u00famero de reglas",
"last_time_updated_table_header": "\u00daltima actualizaci\u00f3n",
"list_url_table_header": "URL de la lista",
"rules_count_table_header": "Número de reglas",
"last_time_updated_table_header": "Última actualización",
"actions_table_header": "Acciones",
"request_table_header": "Petición",
"edit_table_action": "Editar",
"delete_table_action": "Eliminar",
"filters_and_hosts": "Filtros y listas de bloqueo de hosts",
"filters_and_hosts_hint": "AdGuard Home entiende reglas b\u00e1sicas de bloqueo y la sintaxis de los archivos de hosts.",
"no_filters_added": "No hay filtros agregados",
"add_filter_btn": "Agregar filtro",
"elapsed": "Transcurrido",
"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_whitelist_added": "No se han añadido listas de permitido",
"add_blocklist": "Añadir lista de bloqueo",
"add_allowlist": "Añadir lista de permitido",
"cancel_btn": "Cancelar",
"enter_name_hint": "Ingresar nombre",
"enter_url_hint": "Ingresar URL",
"check_updates_btn": "Revisar si hay actualizaciones",
"new_filter_btn": "Nueva suscripci\u00f3n de filtro",
"enter_valid_filter_url": "Ingrese una URL v\u00e1lida para suscribirse o un archivo de hosts.",
"custom_filter_rules": "Personalizar reglas del filtrado",
"custom_filter_rules_hint": "Introduzca una regla en una l\u00ednea. Puede utilizar reglas de bloqueo de anuncios o sintaxis de archivos de hosts.",
"enter_name_hint": "Ingresa el nombre",
"enter_url_or_path_hint": "Ingresa una URL o ruta absoluta para la lista",
"check_updates_btn": "Buscar actualizaciones",
"new_blocklist": "Nueva lista de bloqueo",
"new_allowlist": "Nueva lista de permitido",
"edit_blocklist": "Editar lista de bloqueo",
"edit_allowlist": "Editar lista de permitido",
"choose_blocklist": "Elegir listas de bloqueo",
"choose_allowlist": "Elegir listas de permitido",
"enter_valid_blocklist": "Ingresa una URL válida para la lista de bloqueo.",
"enter_valid_allowlist": "Ingresa una URL válida para la lista de permitido.",
"form_error_url_format": "Formato de URL no válido",
"form_error_url_or_path_format": "URL o ruta absoluta no válida para la lista",
"custom_filter_rules": "Reglas de filtrado personalizado",
"custom_filter_rules_hint": "Ingresa una regla por línea. Puedes utilizar reglas de bloqueo o la sintaxis de los archivos hosts.",
"examples_title": "Ejemplos",
"example_meaning_filter_block": "bloquear acceso al dominio ejemplo.org\ny a todos sus subdominios",
"example_meaning_filter_whitelist": "desbloquear el acceso al dominio ejemplo.org y a sus subdominios",
"example_meaning_host_block": "AdGuard Home regresar\u00e1 la direcci\u00f3n 127.0.0.1 para el dominio ejemplo.org (pero no para sus subdominios).",
"example_comment": "! Aqu\u00ed va un comentario",
"example_meaning_filter_block": "bloquea el acceso al dominio ejemplo.org y a todos sus subdominios",
"example_meaning_filter_whitelist": "desbloquea el acceso al dominio ejemplo.org y a todos sus subdominios",
"example_meaning_host_block": "AdGuard Home devolverá la dirección 127.0.0.1 para el dominio ejemplo.org (pero no para sus subdominios).",
"example_comment": "! Aquí va un comentario",
"example_comment_meaning": "solo un comentario",
"example_comment_hash": "# Tambi\u00e9n un comentario",
"example_upstream_regular": "DNS regular (a trav\u00e9s de UDP)",
"example_upstream_dot": "encriptado <0>DNS-a-trav\u00e9s-de-TLS<\/0>",
"example_upstream_doh": "encriptado <0>DNS-a-trav\u00e9s-de-TLS<\/0>",
"example_upstream_sdns": "puedes usar <0>DNS Stamps<\/0> para <1>DNSCrypt<\/1> o <2>DNS-over-HTTPS<\/2> resolutores",
"example_upstream_tcp": "DNS regular (a trav\u00e9s de TCP)",
"all_filters_up_to_date_toast": "Todos los filtros son actualizados",
"updated_upstream_dns_toast": "Servidores DNS upstream actualizados",
"dns_test_ok_toast": "Servidores DNS especificados funcionan correctamente",
"dns_test_not_ok_toast": "Servidor \"{{key}}\": no puede ser usado, por favor, revise si lo ha escrito correctamente",
"unblock_btn": "Desbloquear",
"block_btn": "Bloquear",
"time_table_header": "Tiempo",
"domain_name_table_header": "Nombre de dominio",
"example_comment_hash": "# También un comentario",
"example_regex_meaning": "bloquea el acceso a los dominios que coincidan con la expresión regular especificada",
"example_upstream_regular": "DNS regular (mediante UDP)",
"example_upstream_dot": "cifrado <0>DNS mediante TLS</0>",
"example_upstream_doh": "cifrado <0>DNS mediante HTTPS</0>",
"example_upstream_sdns": "puedes usar <0>DNS Stamps</0> para <1>DNSCrypt</1> o resolutores <2>DNS mediante HTTPS</2>",
"example_upstream_tcp": "DNS regular (mediante TCP)",
"all_lists_up_to_date_toast": "Todas las listas ya están actualizadas",
"updated_upstream_dns_toast": "Servidores DNS de subida actualizados",
"dns_test_ok_toast": "Los servidores DNS especificados funcionan correctamente",
"dns_test_not_ok_toast": "Servidor \"{{key}}\": no se puede utilizar, por favor revisa si lo has escrito correctamente",
"unblock": "Desbloquear",
"block": "Bloquear",
"time_table_header": "Hora",
"date": "Fecha",
"domain_name_table_header": "Nombre del dominio",
"domain_or_client": "Dominio o cliente",
"type_table_header": "Tipo",
"response_table_header": "Respuesta",
"response_code": "Código de respuesta",
"client_table_header": "Cliente",
"empty_response_status": "Vac\u00edo",
"empty_response_status": "Vacío",
"show_all_filter_type": "Mostrar todo",
"show_filtered_type": "Mostrar filtrados",
"no_logs_found": "No se han encontrado registros",
"disabled_log_btn": "Desactivar registro",
"download_log_file_btn": "Descargar el archivo de registro",
"refresh_btn": "Refrescar",
"enabled_log_btn": "Activar registro",
"last_dns_queries": "\u00daltimas 500 solicitudes de DNS",
"previous_btn": "Anterior",
"refresh_btn": "Actualizar",
"previous_btn": "Atrás",
"next_btn": "Siguiente",
"loading_table_status": "Cargando...",
"page_table_footer_text": "P\u00e1gina",
"of_table_footer_text": "de",
"page_table_footer_text": "Página",
"rows_table_footer_text": "filas",
"updated_custom_filtering_toast": "Actualizadas las reglas de filtrado personalizadas",
"rule_removed_from_custom_filtering_toast": "Regla eliminada de las reglas de filtrado personalizadas",
"rule_added_to_custom_filtering_toast": "Regla a\u00f1adida a las reglas de filtrado personalizadas",
"query_log_disabled_toast": "Log de consulta desactivado",
"query_log_enabled_toast": "Log de consulta activado",
"updated_custom_filtering_toast": "Reglas de filtrado personalizado actualizadas",
"rule_removed_from_custom_filtering_toast": "Regla eliminada de las reglas de filtrado personalizado",
"rule_added_to_custom_filtering_toast": "Regla añadida a las reglas de filtrado personalizado",
"query_log_response_status": "Estado: {{value}}",
"query_log_filtered": "Filtrado por {{filter}}",
"query_log_confirm_clear": "¿Está seguro de que desea borrar todo el registro de consultas?",
"query_log_cleared": "El registro de consultas se ha borrado correctamente",
"query_log_updated": "El registro de consultas se ha actualizado correctamente",
"query_log_clear": "Borrar registros de consultas",
"query_log_retention": "Retención de registros de consultas",
"query_log_enable": "Habilitar registro",
"query_log_configuration": "Configuración de registros",
"query_log_disabled": "El registro de consultas está deshabilitado y se puede configurar en la <0>configuración</0>",
"query_log_strict_search": "Usar comillas dobles para una búsqueda estricta",
"query_log_retention_confirm": "¿Está seguro de que desea cambiar la retención del registro de consultas? Si disminuye el valor del intervalo, se perderán algunos datos",
"anonymize_client_ip": "Anonimizar IP del cliente",
"anonymize_client_ip_desc": "No guarda la dirección IP completa del cliente en registros y estadísticas",
"dns_config": "Configuración del servidor DNS",
"dns_cache_config": "Configuración de la caché DNS",
"dns_cache_config_desc": "Aquí puedes configurar la caché DNS",
"blocking_mode": "Modo de bloqueo",
"default": "Predeterminado",
"nxdomain": "NXDOMAIN",
"null_ip": "IP nulo",
"custom_ip": "IP personalizada",
"blocking_ipv4": "Bloqueo de IPv4",
"blocking_ipv6": "Bloqueo de IPv6",
"dns_over_https": "DNS mediante HTTPS",
"dns_over_tls": "DNS mediante TLS",
"plain_dns": "DNS simple",
"form_enter_rate_limit": "Ingresa el límite de cantidad",
"rate_limit": "Límite de cantidad",
"edns_enable": "Habilitar subred de cliente EDNS",
"edns_cs_desc": "Si está habilitado, AdGuard Home enviará las subredes de los clientes a los servidores DNS.",
"rate_limit_desc": "Número de peticiones por segundo que un solo cliente puede hacer (0: ilimitado)",
"blocking_ipv4_desc": "Dirección IP devolverá una petición A bloqueada",
"blocking_ipv6_desc": "Dirección IP devolverá una petición AAAA bloqueada",
"blocking_mode_default": "Predeterminado: Responde con NXDOMAIN cuando está bloqueado por la regla de estilo Adblock; responde con la dirección IP especificada en la regla cuando está bloqueado por una regla de estilo /etc/hosts",
"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_custom_ip": "IP personalizada: Responde con una dirección IP establecida manualmente",
"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>.",
"tracker_source": "Fuente del rastreador",
"source_label": "Fuente",
"found_in_known_domain_db": "Encontrado en la base de datos de dominios conocidos.",
"category_label": "Categor\u00eda",
"category_label": "Categoría",
"rule_label": "Regla",
"filter_label": "Filtro",
"unknown_filter": "Filtro desconocido {{filterId}}"
"list_label": "Lista",
"unknown_filter": "Filtro desconocido {{filterId}}",
"known_tracker": "Rastreador conocido",
"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_settings_title": "Interfaz web de administración",
"install_settings_listen": "Interfaz de escucha",
"install_settings_port": "Puerto",
"install_settings_interface_link": "La interfaz web de administración de AdGuard Home estará disponible en las siguientes direcciones:",
"form_error_port": "Ingresa un valor de puerto válido",
"install_settings_dns": "Servidor DNS",
"install_settings_dns_desc": "Deberás configurar tus dispositivos o router para usar el servidor DNS en las siguientes direcciones:",
"install_settings_all_interfaces": "Todas las interfaces",
"install_auth_title": "Autenticación",
"install_auth_desc": "Se recomienda encarecidamente configurar la autenticación por contraseña para la interfaz web de administración de AdGuard Home. Incluso si solo es accesible en tu red local, es importante que estés protegido contra el acceso no autorizado.",
"install_auth_username": "Usuario",
"install_auth_password": "Contraseña",
"install_auth_confirm": "Confirmar contraseña",
"install_auth_username_enter": "Ingresa tu nombre de usuario",
"install_auth_password_enter": "Ingresa tu contraseña",
"install_step": "Paso",
"install_devices_title": "Configura tus dispositivos",
"install_devices_desc": "Para comenzar a utilizar AdGuard Home, debes configurar tus dispositivos para usarlo.",
"install_submit_title": "¡Felicitaciones!",
"install_submit_desc": "El proceso de configuración ha finalizado y está listo para comenzar a usar AdGuard Home.",
"install_devices_router": "Router",
"install_devices_router_desc": "Esta configuración cubrirá automáticamente todos los dispositivos conectados a tu router doméstico y no necesitarás configurar cada uno de ellos manualmente.",
"install_devices_address": "El servidor DNS de AdGuard Home está escuchando en las siguientes direcciones",
"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_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 <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_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_4": "Selecciona tu conexión activa, haz clic derecho sobre ella y elige Propiedades.",
"install_devices_windows_list_5": "Busca en la lista el Protocolo de Internet versión 4 (TCP/IP), selecciónalo y vuelve a hacer clic en Propiedades.",
"install_devices_windows_list_6": "Elige Usar las siguientes direcciones de servidor DNS e ingresa las direcciones de tu servidor AdGuard Home.",
"install_devices_macos_list_1": "Haz clic en el icono de Apple y ve a Preferencias del sistema.",
"install_devices_macos_list_2": "Haz clic en Red.",
"install_devices_macos_list_3": "Selecciona la primera conexión de la lista y haz clic en Avanzado.",
"install_devices_macos_list_4": "Selecciona la pestaña DNS e ingresa las direcciones de tu servidor AdGuard Home.",
"install_devices_android_list_1": "En la pantalla de inicio del menú Android, pulsa en Configuración.",
"install_devices_android_list_2": "Pulsa Wi-Fi en el menú. Aparecerá la pantalla que lista todas las redes disponibles (es imposible configurar un DNS personalizado para la conexión móvil).",
"install_devices_android_list_3": "Mantén presionado la red a la que estás conectado y pulsa Modificar red.",
"install_devices_android_list_4": "En algunos dispositivos, es posible que debas marcar la casilla Avanzado para ver más configuraciones. Para ajustar la configuración DNS de Android, deberás cambiar la configuración de IP de DHCP a Estática.",
"install_devices_android_list_5": "Cambia los valores de DNS 1 y DNS 2 a las direcciones de tu servidor AdGuard Home.",
"install_devices_ios_list_1": "En la pantalla de inicio, pulsa en Configuración.",
"install_devices_ios_list_2": "Elige Wi-Fi en el menú de la izquierda (es imposible configurar DNS para redes móviles).",
"install_devices_ios_list_3": "Pulsa sobre el nombre de la red activa en ese momento.",
"install_devices_ios_list_4": "En el campo DNS ingresa las direcciones de tu servidor AdGuard Home.",
"get_started": "Comenzar",
"next": "Siguiente",
"open_dashboard": "Abrir panel de control",
"install_saved": "Guardado correctamente",
"encryption_title": "Cifrado",
"encryption_desc": "Soporte de cifrado (HTTPS/TLS) tanto para DNS como para la interfaz web de administración",
"encryption_config_saved": "Configuración de cifrado guardado",
"encryption_server": "Nombre del servidor",
"encryption_server_enter": "Ingresa el nombre del dominio",
"encryption_server_desc": "Para utilizar HTTPS, debes ingresar el nombre del servidor que coincida con tu certificado SSL.",
"encryption_redirect": "Redireccionar a HTTPS automáticamente",
"encryption_redirect_desc": "Si está marcado, AdGuard Home redireccionará automáticamente de HTTP a las direcciones HTTPS.",
"encryption_https": "Puerto HTTPS",
"encryption_https_desc": "Si el puerto HTTPS está configurado, la interfaz de administración de AdGuard Home será accesible a través de HTTPS, y también proporcionará DNS mediante HTTPS en la ubicación '/dns-query'.",
"encryption_dot": "Puerto DNS mediante TLS",
"encryption_dot_desc": "Si este puerto está configurado, AdGuard Home ejecutará un servidor DNS mediante TLS en este puerto.",
"encryption_certificates": "Certificados",
"encryption_certificates_desc": "Para utilizar el cifrado, debes proporcionar una cadena de certificado SSL válida para tu dominio. Puedes obtener un certificado gratuito en <0>{{link}}</0> o puedes comprarlo en una de las autoridades de certificación de confianza.",
"encryption_certificates_input": "Copia/pega aquí tu certificado codificado PEM.",
"encryption_status": "Estado",
"encryption_expire": "Expira",
"encryption_key": "Clave privada",
"encryption_key_input": "Copia/pega aquí tu clave privada codificada PEM para tu certificado.",
"encryption_enable": "Habilitar cifrado (HTTPS, DNS mediante HTTPS y DNS mediante TLS)",
"encryption_enable_desc": "Si el cifrado está habilitado, la interfaz de administración de AdGuard Home funcionará a través de HTTPS, y el servidor DNS escuchará las peticiones DNS mediante HTTPS y DNS mediante TLS.",
"encryption_chain_valid": "La cadena de certificado es válida",
"encryption_chain_invalid": "La cadena de certificado no es válida",
"encryption_key_valid": "Esta es una clave privada {{type}} válida",
"encryption_key_invalid": "Esta es una clave privada {{type}} no válida",
"encryption_subject": "Asunto",
"encryption_issuer": "Emisor",
"encryption_hostnames": "Nombres de hosts",
"encryption_reset": "¿Está seguro de que desea restablecer la configuración de cifrado?",
"topline_expiring_certificate": "Tu certificado SSL está a punto de expirar. Actualice la <0>configuración de cifrado</0>.",
"topline_expired_certificate": "Tu certificado SSL ha expirado. Actualice la <0>configuración de cifrado</0>.",
"form_error_port_range": "Ingresa el valor del puerto en el rango de 80 a 65535",
"form_error_port_unsafe": "Este es un puerto inseguro",
"form_error_equal": "No debería ser igual",
"form_error_password": "La contraseña no coincide",
"reset_settings": "Restablecer configuración",
"update_announcement": "¡AdGuard Home {{version}} ya está disponible! <0>Haga clic aquí</0> para más información.",
"setup_guide": "Guía de configuración",
"dns_addresses": "Direcciones DNS",
"dns_start": "El servidor DNS está iniciando",
"dns_status_error": "Error al obtener el estado del servidor DNS",
"down": "Abajo",
"fix": "Corregir",
"dns_providers": "Aquí hay una <0>lista de proveedores DNS</0> conocidos para elegir.",
"update_now": "Actualizar ahora",
"update_failed": "Error en la actualización automática. Por favor <a href='https://github.com/AdguardTeam/AdGuardHome/wiki/Getting-Started#update'>sigue los pasos</a> para actualizar manualmente.",
"processing_update": "Por favor espera, AdGuard Home se está actualizando",
"clients_title": "Clientes",
"clients_desc": "Configurar dispositivos conectados con AdGuard Home",
"settings_global": "Global",
"settings_custom": "Personalizado",
"table_client": "Cliente",
"table_name": "Nombre",
"save_btn": "Guardar",
"client_add": "Añadir cliente",
"client_new": "Cliente nuevo",
"client_edit": "Editar cliente",
"client_identifier": "Identificador",
"ip_address": "Dirección IP",
"client_identifier_desc": "Los clientes pueden ser identificados por la dirección IP, MAC y CIDR. Tenga en cuenta que el uso de MAC como identificador solo es posible si AdGuard Home también es un <0>servidor DHCP</0>",
"form_enter_ip": "Ingresa la IP",
"form_enter_mac": "Ingresa la MAC",
"form_enter_id": "Ingresa el identificador",
"form_add_id": "Añadir identificador",
"form_client_name": "Ingresa el nombre del cliente",
"name": "Nombre",
"client_global_settings": "Usar configuración global",
"client_deleted": "Cliente \"{{key}}\" eliminado correctamente",
"client_added": "Cliente \"{{key}}\" añadido correctamente",
"client_updated": "Cliente \"{{key}}\" actualizado correctamente",
"clients_not_found": "No se han encontrado clientes",
"client_confirm_delete": "¿Está seguro de que desea eliminar el cliente \"{{key}}\"?",
"list_confirm_delete": "¿Está seguro de que deseas eliminar esta lista?",
"auto_clients_title": "Clientes (activos)",
"auto_clients_desc": "Datos de los clientes que utilizan AdGuard Home, pero no se almacenan en la configuración",
"access_title": "Configuración de acceso",
"access_desc": "Aquí puedes configurar las reglas de acceso para el servidor DNS de AdGuard Home.",
"access_allowed_title": "Clientes permitidos",
"access_allowed_desc": "Lista de CIDR o direcciones IP. Si está configurado, AdGuard Home solo aceptará peticiones de estas direcciones IP.",
"access_disallowed_title": "Clientes no permitidos",
"access_disallowed_desc": "Lista de CIDR o direcciones IP. Si está configurado, AdGuard Home eliminará las peticiones de estas direcciones IP.",
"access_blocked_title": "Dominios no permitidos",
"access_blocked_desc": "No confundas esto con filtros. AdGuard Home eliminará las consultas DNS con estos dominios en la pregunta de la consulta. Aquí puedes especificar los nombres de dominio exactos, comodines y reglas de filtrado de URL, por ejemplo: 'ejemplo.org', '*.ejemplo.org' o '||ejemplo.org^'.",
"access_settings_saved": "Configuración de acceso guardado correctamente",
"updates_checked": "Actualizaciones comprobadas correctamente",
"updates_version_equal": "AdGuard Home está actualizado",
"check_updates_now": "Buscar actualizaciones ahora",
"dns_privacy": "DNS cifrado",
"setup_dns_privacy_1": "<0>DNS mediante TLS:</0> Utilice la cadena <1>{{address}}</1>.",
"setup_dns_privacy_2": "<0>DNS mediante HTTPS:</0> Utilice la cadena <1>{{address}}</1>.",
"setup_dns_privacy_3": "<0>Tenga en cuenta que los protocolos DNS cifrados solo son compatibles con Android 9. Por lo tanto, necesita instalar software adicional para otros sistemas operativos.</0><0>Aquí hay una lista de software que puedes usar.</0>",
"setup_dns_privacy_android_1": "Android 9 soporta DNS mediante TLS de forma nativa. Para configurarlo, ve a Configuración → Red e Internet → Avanzado → DNS privado e ingresa el nombre del dominio allí.",
"setup_dns_privacy_android_2": "<0>AdGuard para Android</0> soporta <1>DNS mediante HTTPS</1> y <1>DNS mediante TLS</1>.",
"setup_dns_privacy_android_3": "<0>Intra</0> añade soporte a Android para <1>DNS mediante HTTPS</1>.",
"setup_dns_privacy_ios_1": "<0>DNSCloak</0> soporta <1>DNS mediante HTTPS</1>, pero para configurarlo y que uses tu propio servidor, necesitarás generar un <2>DNS Stamp</2> para ello.",
"setup_dns_privacy_ios_2": "<0>AdGuard para iOS</0> soporta la configuración <1>DNS mediante HTTPS</1> y <1>DNS mediante TLS</1>.",
"setup_dns_privacy_other_title": "Otras implementaciones",
"setup_dns_privacy_other_1": "AdGuard Home en sí mismo puede ser un cliente DNS seguro en cualquier plataforma.",
"setup_dns_privacy_other_2": "<0>dnsproxy</0> soporta todos los protocolos DNS seguros conocidos.",
"setup_dns_privacy_other_3": "<0>dnscrypt-proxy</0> soporta <1>DNS mediante HTTPS</1>.",
"setup_dns_privacy_other_4": "<0>Mozilla Firefox</0> soporta <1>DNS mediante HTTPS</1>.",
"setup_dns_privacy_other_5": "Encontrará más implementaciones <0>aquí</0> y <1>aquí</1>.",
"setup_dns_notice": "Para utilizar <1>DNS mediante HTTPS</1> o <1>DNS mediante TLS</1>, debes <0>configurar el cifrado</0> en la configuración de AdGuard Home.",
"rewrite_added": "Reescritura DNS para \"{{key}}\" añadido correctamente",
"rewrite_deleted": "Reescritura DNS para \"{{key}}\" eliminado correctamente",
"rewrite_add": "Añadir reescritura DNS",
"rewrite_not_found": "No se han encontrado reescrituras DNS",
"rewrite_confirm_delete": "¿Está seguro de que desea eliminar la reescritura DNS para \"{{key}}\"?",
"rewrite_desc": "Permite configurar fácilmente la respuesta DNS personalizada para un nombre de dominio específico.",
"rewrite_applied": "Regla de reescritura aplicada",
"rewrite_hosts_applied": "Reescrito por la regla del archivo hosts",
"dns_rewrites": "Reescrituras DNS",
"form_domain": "Ingresa el nombre del dominio o comodín",
"form_answer": "Ingresa la dirección IP o el nombre del dominio",
"form_error_domain_format": "Formato de dominio no válido",
"form_error_answer_format": "Formato de respuesta no válido",
"configure": "Configurar",
"main_settings": "Configuración principal",
"block_services": "Bloquear servicios específicos",
"blocked_services": "Servicios bloqueados",
"blocked_services_desc": "Permite bloquear rápidamente sitios y servicios populares.",
"blocked_services_saved": "Servicios bloqueados guardado correctamente",
"blocked_services_global": "Usar servicios bloqueados globalmente",
"blocked_service": "Servicio bloqueado",
"block_all": "Bloquear todo",
"unblock_all": "Desbloquear todo",
"encryption_certificate_path": "Ruta de acceso al certificado",
"encryption_private_key_path": "Ruta de acceso a la clave privada",
"encryption_certificates_source_path": "Establecer una ruta para el archivo de certificado",
"encryption_certificates_source_content": "Pegar el contenido del certificado",
"encryption_key_source_path": "Establecer un archivo de clave privada",
"encryption_key_source_content": "Pegar el contenido de la clave privada",
"stats_params": "Configuración de estadísticas",
"config_successfully_saved": "Configuración guardada correctamente",
"interval_24_hour": "24 horas",
"interval_days": "{{count}} día",
"interval_days_plural": "{{count}} días",
"domain": "Dominio",
"answer": "Respuesta",
"filter_added_successfully": "La lista ha sido añadida correctamente",
"filter_removed_successfully": "La lista ha sido eliminada correctamente",
"filter_updated": "La lista ha sido actualizada correctamente",
"statistics_configuration": "Configuración de estadísticas",
"statistics_retention": "Retención de estadísticas",
"statistics_retention_desc": "Si disminuye el valor del intervalo, algunos datos estarán perdidos",
"statistics_clear": "Borrar estadísticas",
"statistics_clear_confirm": "¿Está seguro de que desea borrar las estadísticas?",
"statistics_retention_confirm": "¿Está seguro de que desea cambiar la retención de estadísticas? Si disminuye el valor del intervalo, se perderán algunos datos",
"statistics_cleared": "Estadísticas borradas correctamente",
"interval_hours": "{{count}} hora",
"interval_hours_plural": "{{count}} horas",
"filters_configuration": "Configuración de filtros",
"filters_enable": "Habilitar filtros",
"filters_interval": "Intervalo de actualización",
"disabled": "Deshabilitado",
"username_label": "Usuario",
"username_placeholder": "Ingresa tu nombre de usuario",
"password_label": "Contraseña",
"password_placeholder": "Ingresa tu contraseña",
"sign_in": "Iniciar sesión",
"sign_out": "Cerrar sesión",
"forgot_password": "¿Olvidaste tu contraseña?",
"forgot_password_desc": "Por favor sigue <0>estos pasos</0> para crear una nueva contraseña para tu cuenta de usuario.",
"location": "Ubicación",
"orgname": "Nombre de la organización",
"netname": "Nombre de la red",
"network": "Red",
"descr": "Descripción",
"whois": "Whois",
"filtering_rules_learn_more": "<0>Más información</0> sobre cómo crear tus propias listas de hosts.",
"blocked_by_response": "Bloqueado por CNAME o IP en respuesta",
"blocked_by_cname_or_ip": "Bloqueado por CNAME o IP",
"try_again": "Volver a intentar",
"domain_desc": "Ingresa el nombre del dominio o comodín que deseas reescribir.",
"example_rewrite_domain": "reescribe las respuestas solo para este nombre de dominio.",
"example_rewrite_wildcard": "reescribe las respuestas para todos los subdominios de <0>ejemplo.org</0>.",
"rewrite_ip_address": "Dirección IP: utiliza esta IP en una respuesta A o AAAA",
"rewrite_domain_name": "Nombre de dominio: añade un registro CNAME",
"rewrite_A": "<0>A</0>: valor especial, mantiene registros <0>A</0> del DNS de subida",
"rewrite_AAAA": "<0>AAAA</0>: valor especial, mantiene registros <0>AAAA</0> del DNS de subida",
"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).",
"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. 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 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_result": "Como resultado, todas las peticiones DNS de tu sistema serán procesadas por AdGuard Home de manera predeterminada.",
"tags_title": "Etiquetas",
"tags_desc": "Puedes seleccionar las etiquetas que correspondan al cliente. Las etiquetas pueden ser incluidas en las reglas de filtrado y te permiten aplicarlas con mayor precisión. <0>Más información</0>",
"form_select_tags": "Seleccione las etiquetas del cliente",
"check_title": "Comprobar filtrado",
"check_desc": "Comprueba si el nombre del host está siendo filtrado",
"check": "Comprobar",
"form_enter_host": "Ingresa un nombre de host",
"filtered_custom_rules": "Filtrado por reglas de filtrado personalizado",
"choose_from_list": "Elegir de la lista",
"add_custom_list": "Añadir lista personalizada",
"host_whitelisted": "El host está en la lista blanca",
"check_ip": "Direcciones IP: {{ip}}",
"check_cname": "CNAME: {{cname}}",
"check_reason": "Razón: {{reason}}",
"check_rule": "Regla: {{rule}}",
"check_service": "Nombre del servicio: {{service}}",
"check_not_found": "No se ha encontrado en tus listas de filtros",
"client_confirm_block": "¿Está seguro de que desea bloquear al cliente \"{{ip}}\"?",
"client_confirm_unblock": "¿Está seguro de que desea desbloquear al cliente \"{{ip}}\"?",
"client_blocked": "Cliente \"{{ip}}\" bloqueado correctamente",
"client_unblocked": "Cliente \"{{ip}}\" desbloqueado correctamente",
"static_ip": "Dirección IP estática",
"static_ip_desc": "AdGuard Home es un servidor, por lo que necesita una dirección IP estática para funcionar correctamente. De lo contrario, en algún momento tu router puede asignar una dirección IP diferente a este dispositivo.",
"set_static_ip": "Establecer una dirección IP estática",
"install_static_ok": "¡Buenas noticias! La dirección IP estática ya está configurada",
"install_static_error": "AdGuard Home no puede configurarlo automáticamente para esta interfaz de red. Busca instrucciones sobre cómo hacer esto manualmente.",
"install_static_configure": "Hemos detectado que utilizas una dirección IP dinámica: <0>{{ip}}</0>. ¿Deseas usarla como tu dirección estática?",
"confirm_static_ip": "AdGuard Home configurará {{ip}} para ser tu dirección IP estática. ¿Desea continuar?",
"list_updated": "{{count}} lista actualizada",
"list_updated_plural": "{{count}} listas actualizadas",
"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)",
"validated_with_dnssec": "Validado con DNSSEC",
"all_queries": "Todas las consultas",
"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",
"cache_size": "Tamaño de la caché",
"cache_size_desc": "Tamaño de la caché DNS (en bytes)",
"cache_ttl_min_override": "Anular TTL mínimo",
"cache_ttl_max_override": "Anular TTL máximo",
"enter_cache_size": "Ingresa el tamaño de la caché",
"enter_cache_ttl_min_override": "Ingresa el TTL mínimo",
"enter_cache_ttl_max_override": "Ingresa el TTL máximo",
"cache_ttl_min_override_desc": "Anula el valor TTL (mínimo) recibido del servidor DNS de subida. Este valor no puede ser superior a 3600 (1 hora)",
"cache_ttl_max_override_desc": "Anula el valor TTL (máximo) recibido del servidor DNS de subida",
"min_exceeds_max_value": "El valor mínimo supera al valor máximo",
"value_not_larger_than": "El valor no puede ser mayor que {{maximum}}",
"filter_category_general": "General",
"filter_category_security": "Seguridad",
"filter_category_regional": "Regional",
"filter_category_other": "Otro",
"filter_category_general_desc": "Listas que bloquean rastreadores y anuncios en la mayoría de los dispositivos",
"filter_category_security_desc": "Listas que se especializan en bloquear dominios de malware, phishing o estafa",
"filter_category_regional_desc": "Listas que se centran en anuncios regionales y servidores de rastreo",
"filter_category_other_desc": "Otras listas de bloqueo",
"original_response": "Respuesta original",
"click_to_view_queries": "Clic para ver las consultas",
"port_53_faq_link": "El puerto 53 suele estar ocupado por los servicios \"DNSStubListener\" o \"systemd-resolved\". Por favor lee <0>esta instrucción</0> sobre cómo resolver esto."
}

View File

@@ -0,0 +1,525 @@
{
"client_settings": "تنظیمات کلاینت",
"example_upstream_reserved": "میتوانید جریان ارسالی DNS <0> را برای یک دامنه مشخص تعیین کنید </0>",
"upstream_parallel": "استفاده از جستار موازی برای سرعت دادن به تفکیک با جستار همزمان همه جریان های ارسالی",
"parallel_requests": "درخواست های موازی",
"bootstrap_dns": "خودراه انداز سرورهای DNS",
"bootstrap_dns_desc": "خودراه انداز سرورهای DNS برای تفکیک آدرس آی پی تفکیک کننده های DoH/DoT که شما بعنوان جریان ارسالی تعیین کردید استفاده میشود.",
"check_dhcp_servers": "بررسی برای سرورهای DHCP",
"save_config": "ذخیره پیکربندی",
"enabled_dhcp": "سرور DHCP فعال شده است",
"disabled_dhcp": "سرور DHCP غیرفعال شده است",
"dhcp_title": "سرور DHCP",
"dhcp_description": "اگر روتر شما تنظیمات DHCP ارائه نمی کند،میتوانید از سرور DHCP تو-کار خود AdGuard استفاده کنید.",
"dhcp_enable": "فعالسازی سرور DHCP",
"dhcp_disable": "غیرفعالسازی سرور DHCP",
"dhcp_not_found": "سرورهای فعال DHCP در شبکه یافت نشد.فعالسازی سرور DHCP تو-کار اَمن است.",
"dhcp_found": "تعدادی سرور DHCP فعال در شبکه یافت شد.فعالسازی سرور DHCP توکار اَمن نیست.",
"dhcp_leases": "اجاره DHCP",
"dhcp_static_leases": "اجاره DHCP ایستا",
"dhcp_leases_not_found": "اجاره DHCP یافت نشد",
"dhcp_config_saved": "پیکربندی سرور DHCP ذخیره شده است",
"form_error_required": "فیلد مورد نیاز",
"form_error_ip4_format": "فرمت نامعتبر IPv4",
"form_error_ip6_format": "فرمت نامعتبر IPv6",
"form_error_ip_format": "فرمت IPv4 نامعتبر است",
"form_error_mac_format": "فرمت مَک نامعتبر است",
"form_error_client_id_format": "فرمت شناسه کلاینت نامعتبر است",
"form_error_positive": "باید بزرگتر از 0 باشد",
"form_error_negative": "باید برابر با 0 یا بزرگتر باشد",
"dhcp_form_gateway_input": "آی پی دروازه",
"dhcp_form_subnet_input": "ماسک زیر شبکه",
"dhcp_form_range_title": "دامنه آدرس های آی پی",
"dhcp_form_range_start": "آغاز دامنه",
"dhcp_form_range_end": "انتهای دامنه",
"dhcp_form_lease_title": "زمان اجاره DHCP (در ثانیه)",
"dhcp_form_lease_input": "مدت اجاره",
"dhcp_interface_select": "رابط DHCP را انتخاب کنید",
"dhcp_hardware_address": "آدرس سخت افزار",
"dhcp_ip_addresses": "آدرس آی پی",
"ip": "IP",
"dhcp_table_hostname": "نام میزبان",
"dhcp_table_expires": "انقضاء",
"dhcp_warning": "اگر میخواهید DHCP سرور توکار را فعال کنید،مطمئن شوید DHCP سرور دیگری فعال نباشد.در غیر اینصورت،آن دسترسی به اینترنت را برای دستگاه های وصل شده قطع می کند!",
"dhcp_error": "ما نمیتوانیم تشخیص دهیم آیا یک سرور DHCP دیگر در شبکه موجود است یا نه.",
"dhcp_static_ip_error": "به منظور استفاده از سرور DHCP یک آدرس آی پی ثابت باید تنظیم شود.ما موفق به تشخیص اینکه آیا رابط این شبکه برای استفاده از آی پی ثابت تنظیم شده است یا نه موفق نشدیم.لطفا آدرس آی پی ثابت را دستی تنظیم کنید.",
"dhcp_dynamic_ip_found": "سیستم شما آدرس آی پی متغییر برای این رابط استفاده می کند <0>{{interfaceName}}</0>. به منظور استفاده از سرور DHCP آدرس ثابت باید تعیین شود. آدرس آی پی فعلی شما هست <0>{{ipAddress}}</0>. اگر شما دکمه DHCP را فشار دهید ما این آدرس آی پی را بعنوان ثابت تنظیم می کنیم.",
"dhcp_lease_added": "اجاره ایستا \"{{key}}\" با موفقیت اضافه شد",
"dhcp_lease_deleted": "اجاره ایستا \"{{key}}\" با موفقیت حذف شد",
"dhcp_new_static_lease": "اجاره ایستا جدید",
"dhcp_static_leases_not_found": "هیچ اجاره DHCP ایستا یافت نشد",
"dhcp_add_static_lease": "افزودن اجاره ایستا",
"dhcp_reset": "آیا میخواهید پیکربندی DHCP را ریست کنید؟",
"country": "کشور",
"city": "شهر",
"delete_confirm": "آیا میخواهید \"{{key}}\" را حذف کنید؟",
"form_enter_hostname": "نام میزبان را وارد کنید",
"error_details": "جزئیات خطا",
"response_details": "جزئیات پاسخ",
"request_details": "درخواست جزئیات",
"client_details": "جزئیات کلاینت",
"details": "جزئیات",
"back": "قبلی",
"dashboard": "داشبورد",
"settings": "تنظيمات",
"filters": "فيلترها",
"filter": "فیلتر",
"query_log": "جستار وقایع",
"nothing_found": "هیچ چیز یافت نشد",
"faq": "پرسش و پاسخ",
"version": "نسخه",
"address": "آدرس",
"protocol": "پروتکل",
"on": "روشن",
"off": "خاموش",
"copyright": "حق مالکیت",
"homepage": "صفحه خانگي",
"report_an_issue": "گزارش یک مشکل",
"privacy_policy": "سیاست حریم خصوصی",
"enable_protection": "فعالسازي حفاظت",
"enabled_protection": "حفاظت فعال شده",
"disable_protection": "غيرفعالسازي حفاظت",
"disabled_protection": "حفاظت غير فعال شده",
"refresh_statics": "تازه سازی آمار",
"dns_query": "جستار DNS",
"blocked_by": "<0/>مسدود شده با<0>",
"stats_malware_phishing": "بدافزار/فیشینگ مسدود شده است",
"stats_adult": "وبسایت غیراخلاقی مسدود شده است",
"stats_query_domain": "دامنه جستار بالا",
"for_last_24_hours": "برای 24 ساعت گذشته",
"for_last_days": "برای {{count}} روز آخر",
"for_last_days_plural": "برای {{count}} روز گذشته",
"no_domains_found": "دامنه یافت نشد",
"requests_count": "تعداد درخواست ها",
"top_blocked_domains": "دامنه های بیشتر مسدود شده",
"top_clients": "بالاترین کلاینت ها",
"no_clients_found": "کلاینتی یافت نشد",
"general_statistics": "آمار عمومی",
"number_of_dns_query_days": "تعداد جستار DNS پردازش شده در {{count}} روز آخر",
"number_of_dns_query_days_plural": "تعداد جستار DNS پردازش شده در {{count}} روز گذشته",
"number_of_dns_query_24_hours": "تعداد جستار DNS پردازش شده در 24 ساعت گذشته",
"number_of_dns_query_blocked_24_hours": "تعداد درخواست DNS مسدود شده با فیلترهای مسدودساز تبلیغ و لیست سیاه میزبان",
"number_of_dns_query_blocked_24_hours_by_sec": "تعداد درخواست DNS مسدود شده با مدل امنیت وب گردی AdGuard",
"number_of_dns_query_blocked_24_hours_adult": "تعداد وبسایت های غیر اخلاقی مسدود شده",
"enforced_save_search": "جستجوی اَمن اجبار شده",
"number_of_dns_query_to_safe_search": "تعداد درخواست های DNS برای موتور جستجو که جستجوی اَمن اجبار شده",
"average_processing_time": "میانگین زمان پردازش",
"average_processing_time_hint": "زمان میانگین بر هزارم ثانیه در پردازش درخواست DNS",
"block_domain_use_filters_and_hosts": "مسدودسازی دامنه ها توسط فیلترها و فایل های میزبان",
"filters_block_toggle_hint": "میتوانید دستورات مسدودسازی را در تنظیمات <a href='#filters'>فیلترها</a> راه اندازی کنید.",
"use_adguard_browsing_sec": "استفاده از سرویس وب امنیت وب گردی AdGuard",
"use_adguard_browsing_sec_hint": "AdGuard Home بررسی می کند اگر دامنه در سرویس وب امنیت وب گردی در لیست سیاه است.آن از اِی پی آی دارای حریم خصوصی برای بررسی استفاده می کند:فقط پیشوند کوتاه نام دامنه هش SHA256 به سرور ارسال خواهد شد.",
"use_adguard_parental": "از سرویس وب نظارت والدین AdGuard استفاده کن",
"use_adguard_parental_hint": "AdGuard Home بررسی می کند اگر دامنه حاوی موارد غیر اخلاقی است.آن از همان اِی پی آی دارای حریم خصوصی سرویس وب امنیت وب گردی استفاده می کند.",
"enforce_safe_search": "اجبار جستجوی اَمن",
"enforce_save_search_hint": "AdGuard Home میتواند جستجوی اَمن را در موتور جستجوهای زیر اعمال کند:گوگل،یوتوب،بینگ و یاندکس",
"no_servers_specified": "سروری تعیین نشده است",
"general_settings": "تنظیمات عمومی",
"dns_settings": "تنظیمات DNS",
"dns_blocklists": "لیست سیاه DNS",
"dns_allowlists": "لیست مجاز DNS",
"dns_blocklists_desc": "AdGuard Home دامنه های مطابق با لیست سیاه را مسدود می کند.",
"dns_allowlists_desc": "دامنه ها از لیست مجاز DNS اجازه داده میشوند حتی اگر آنها در هر لیست سیاهی باشند.",
"custom_filtering_rules": "دستورات فیلترینگ دستی",
"encryption_settings": "تنظیمات رمزگُذاری",
"dhcp_settings": "تنظیمات DHCP",
"upstream_dns": "سرورهای DNS جریان ارسالی",
"upstream_dns_hint": "اگر این فیلد را خالی نگه دارید، AdGuard Home از <a href='https://1.1.1.1/' target='_blank'>Cloudflare DNS</a> بعنوان یک جریان ارسالی استفاده می کند. از پیشوند tls:// برای سرورهای DNS over TLS استفاده کنید.",
"test_upstream_btn": "تست جریان ارسالی",
"upstreams": "جریان ارسالی",
"apply_btn": "اِعمال",
"disabled_filtering_toast": "فیلترینگ غیرفعال شده است",
"enabled_filtering_toast": "فیلترینگ فعال شده است",
"disabled_safe_browsing_toast": "وب گردی اَمن غیر فعال شده است",
"enabled_safe_browsing_toast": "وب گردی اَمن فعال شده است",
"disabled_parental_toast": "نظارت والدین غیرفعال شده است",
"enabled_parental_toast": "نظارت والدین فعال شده است",
"disabled_safe_search_toast": "جستجوی اَمن غیرفعال شده",
"enabled_save_search_toast": "جستجوی اَمن فعال شده",
"enabled_table_header": "فعال شده",
"name_table_header": "نام",
"list_url_table_header": "لیست آدرس",
"rules_count_table_header": "تعداد دستور",
"last_time_updated_table_header": "زمان آخرین بروزرسانی",
"actions_table_header": "اقدامات",
"request_table_header": "درخواست",
"edit_table_action": "ويرايش",
"delete_table_action": "حذف",
"elapsed": "سپری شده",
"filters_and_hosts_hint": "AdGuard Home دستورات پایه مسدودساز تبلیغ و نحو فایل های میزبان را درک می کند.",
"no_blocklist_added": "به لیست سیاه اضافه نشد",
"no_whitelist_added": "به لیست مجاز اضافه نشد",
"add_blocklist": "افزودن لیست سیاه",
"add_allowlist": "افزودن لیست مجاز",
"cancel_btn": "لغو",
"enter_name_hint": "نام را وارد کنید",
"enter_url_or_path_hint": "یک آدرس یا یک مسیر کامل لیست وارد کنید",
"check_updates_btn": "بررسی بروز رسانی",
"new_blocklist": "لیست سیاه جدید",
"new_allowlist": "لیست مجاز جدید",
"edit_blocklist": "ویرایش لیست سیاه",
"edit_allowlist": "ویرایش لیست مجاز",
"enter_valid_blocklist": "آدرس معتبر برای لیست سیاه وارد کنید.",
"enter_valid_allowlist": "آدرس معتبر برای لیست مجاز وارد کنید.",
"form_error_url_format": "فرمت آدرس نامعتبر است",
"form_error_url_or_path_format": "آدرس نامعتبر یا یک مسیر کامل لیست",
"custom_filter_rules": "دستورات فیلترینگ دستی",
"custom_filter_rules_hint": "یک دستور در خط وارد کنید.میتوانید از دستورات مسدودساز تبلیغ یا نحو فایل های میزبان استفاده کنید.",
"examples_title": "مثال ها",
"example_meaning_filter_block": "مسدودسازی دسترسی به دامنه example.org و همه زیر دامنه ها آن",
"example_meaning_filter_whitelist": "بازکردن دسترسی به دامنه example.org و همه زیر دامنه ها آن",
"example_meaning_host_block": "AdGuard Home بر می گردد به آدرس 127.0.0.1 برای دامنه example.org (اما نه زیر دامنه های آن)",
"example_comment": "! در اینجا نظر قرار می گیرد",
"example_comment_meaning": "فقط یک توضیح",
"example_comment_hash": "# همچنین یک نظر",
"example_regex_meaning": "مسدودسازی دسترسی به دامنه مطابق <0>با عبارت منظم خاص</0>",
"example_upstream_regular": "DNS عادی (بر UDP)",
"example_upstream_dot": "کُدگذاری شده <a href='https://en.wikipedia.org/wiki/DNS_over_TLS' target='_blank'>DNS-over-TLS</a>",
"example_upstream_doh": "کُدگذاری شده <a href='https://en.wikipedia.org/wiki/DNS_over_HTTPS' target='_blank'>DNS-over-HTTPS</a>",
"example_upstream_sdns": "شما میتوانید از <a href='https://dnscrypt.info/stamps/' target='_blank'>DNS Stamps</a> برای <a href='https://dnscrypt.info/' target='_blank'>DNSCrypt</a> یا <a href='https://en.wikipedia.org/wiki/DNS_over_HTTPS' target='_blank'>DNS-over-HTTPS</a> resolvers استفاده کنید",
"example_upstream_tcp": "DNS عادی (بر TCP)",
"all_lists_up_to_date_toast": "همه لیست ها از قبل بروز اند",
"updated_upstream_dns_toast": "سرورهای DNS جریان ارسالی بروز رسانی شده است",
"dns_test_ok_toast": "سرورهای DNS تعیین شده بدرستی کار می کنند",
"dns_test_not_ok_toast": "سرور \"{{key}}\": نمیتواند مورد استفاده قرار گیرد،لطفا بررسی کنید آن را بدرستی نوشته اید",
"unblock": "رفع انسداد",
"block": "مسدود کردن",
"time_table_header": "زمان",
"date": "تاریخ",
"domain_name_table_header": "نام دامنه",
"domain_or_client": "دامنه یا کلاینت",
"type_table_header": "نوع",
"response_table_header": "پاسخ",
"client_table_header": "کلاینت",
"empty_response_status": "خالی",
"show_all_filter_type": "نمایش همه",
"show_filtered_type": "نمایش فیلتر شده",
"no_logs_found": "وقایع یافت نشد",
"refresh_btn": "تازه سازی",
"previous_btn": "قبلی",
"next_btn": "بعدی",
"loading_table_status": "بارگیری...",
"page_table_footer_text": "صفحه",
"rows_table_footer_text": "سطر",
"updated_custom_filtering_toast": "دستورات فیلترینگ دستی بروز رسانی شده است",
"rule_removed_from_custom_filtering_toast": "دستور از دستورات فیلترینگ دستی حذف شد",
"rule_added_to_custom_filtering_toast": "دستور به دستورات فیلترینگ دستی اضافه شد",
"query_log_response_status": "وضعیت: {{value}}",
"query_log_filtered": "فیلتر شده با {{filter}}",
"query_log_confirm_clear": "آیا واقعا میخواهید کل وقایع جستار را پاک کنید؟",
"query_log_cleared": "وقایع جستار با موفقیت پاک شد",
"query_log_clear": "پاکسازی وقایع جستار",
"query_log_retention": "حفظ وقایع جستار برای",
"query_log_enable": "فعالسازی وقایع",
"query_log_configuration": "پیکربندی وقایع",
"query_log_disabled": "وقایع جستار غیرفعال شده است و میتواند در <0>تنظیمات</0> پیکربندی شود",
"query_log_strict_search": "برای جستجوی موکد از علامت نقل قول دوتایی استفاده کنید",
"query_log_retention_confirm": "آیا واقعا میخواهید مدت حفظ وقایع جستار را تغییر دهید؟ اگر فاصله را کاهش دهید، برخی داده ها حذف میشود",
"anonymize_client_ip": "گمنام کردن IP کلاینت",
"anonymize_client_ip_desc": "آدرس IP کلاینت در وقایع و آمارها را ذخیره نکن",
"dns_config": "پیکربندی DNS سرور",
"blocking_mode": "حالت مسدودسازی",
"default": "پيش فرض",
"nxdomain": "NXDOMAIN",
"null_ip": "Null IP",
"custom_ip": "آی پی دستی",
"blocking_ipv4": "مسدودسازی IPv4",
"blocking_ipv6": "مسدودسازی IPv6",
"dns_over_https": "DNS-over-HTTPS",
"dns_over_tls": "DNS-over-TLS",
"form_enter_rate_limit": "میزان محدودیت را وارد کنید",
"rate_limit": "میزان محدودیت",
"edns_enable": "فعالسازی زیرشبکه کلاینت EDNS",
"edns_cs_desc": "اگر فعال باشد،AdGuard Home زیرشبکه های کلاینت ها را به سرورهای DNS می فرستد.",
"rate_limit_desc": "تعداد درخواست های بر ثانیه مجازی که یک کلاینت میتواند بسازد (0: نامحدود)",
"blocking_ipv4_desc": "آدرس آی پی برگشت داده شده برای درخواست مسدود شده A",
"blocking_ipv6_desc": "آدرس آی پی برگشت داده شده برای درخواست مسدود شده AAAA",
"blocking_mode_default": "پیش فرض: وقتی مسدود شود با دستور سبک-مسدودساز تبلیغ NXDOMAIN پاسخ میدهد،پاسخ با آدرس آی پی تعیین شده در دستور وقتی با دستور /etc/hosts-style rule مسدود شود",
"blocking_mode_nxdomain": "NXDOMAIN: پاسخ با کُد NXDOMAIN",
"blocking_mode_null_ip": "Null IP: پاسخ با آدرس آی پی صفر(0.0.0.0 برای A; :: برای AAAA)",
"blocking_mode_custom_ip": "آی پی دستی: پاسخ با آدرس آی پی دستی تنظیم شده",
"upstream_dns_client_desc": "اگر این فیلد را خالی نگه دارید، AdGuard Home از سرور پیکربندی شده در <0> تنظیماتDNS </0> استفاده می کند.",
"source_label": "منبع",
"found_in_known_domain_db": "در پایگاه داده دامنه های شناخته شده پیدا شد",
"category_label": "دسته بندی",
"rule_label": "دستور",
"list_label": "لیست",
"unknown_filter": "فیلتر ناشناخته {{filterId}}",
"known_tracker": "ردیاب های شناخته شده",
"install_welcome_title": "به AdGuard Home خوش آمدید!",
"install_welcome_desc": "AdGuard Home یک شبکه گسترده و ردیاب و مسدوساز تبلیغ با سرور DNS است.هدف آن این است که به شما اجازه کنترل کل شبکه و همه دستگاه های شما را بدهد و آن نیازی به برنامه سمت-کاربر ندارد.",
"install_settings_title": "رابط وب آدمین",
"install_settings_listen": "رابط گوش دادن",
"install_settings_port": "پورت",
"install_settings_interface_link": "رابط صفحه وب آدمین AdGuard Home شما در این آدرس قابل دسترسی خواهد بود:",
"form_error_port": "مقدار پورت معتبر وارد کنید",
"install_settings_dns": "سرور DNS",
"install_settings_dns_desc": "نیاز است شما دستگاه یا روتر خود را برای استفاده از سرور DNS روی آدرس های زیر پیکربندی کنید:",
"install_settings_all_interfaces": "همه رابط ها",
"install_auth_title": "احراز هویت",
"install_auth_desc": "بسیار توصیه میشود که رمزعبور احراز هویت را برای رابط وب آدمین AdGuard Home پیکربندی کنید.حتی اگر فقط در شبکه محلی خود قابل دسترسی باشد،برای حفاظت و مسدود کردن دسترسی غیر مجاز و نامحدود این بسیار ضروری است.",
"install_auth_username": "نام کاربر",
"install_auth_password": "رمزعبور",
"install_auth_confirm": "تأیید رمزعبور",
"install_auth_username_enter": "نام کاربر را وارد کنید",
"install_auth_password_enter": "رمزعبور را وارد کنید",
"install_step": "گام",
"install_devices_title": "پیکربندی دستگاه شما",
"install_devices_desc": "به منظور اینکه AdGuard Home شروع به کار کند،باید دستگاه خود را برای استفاده از آن پیکربندی کنید.",
"install_submit_title": "تبریک می گوییم!",
"install_submit_desc": "روش راه اندازی به پایان رسیده و شما آماده استفاده از AdGuard Home هستید.",
"install_devices_router": "روتر",
"install_devices_router_desc": "این راه انداز خودکار همه دستگاه های متصل شده به روتر خانه را پوشش میدهد و نیازی نیست شما هر یک از آنها را دستی پیکربندی کنید.",
"install_devices_address": "DNS سرور AdGuard Home به آدرس های زیر گوش میدهد",
"install_devices_router_list_1": "اولویت ها را برای روتر خود باز کنید.معمولا میتوانید آن را ز طریق مرورگر از طریق آدرسی مانند ( http://192.168.0.1/ یا http://192.168.1.1/) دسترسی داشته باشید.ممکن است رمزعبور پرسیده شود،اگر آن را بخاطر ندارید،غالبا میتوان رمزعبور را با فشردن دکمه پشت روتر ریست کرد.برخی روترها برنامه خاصی نیاز دارد که باید در رایانه/گوشی نصب شده باشد.",
"install_devices_router_list_2": "تنظیمات DHCP/DNS را بیابید.دنبال حروف DNS بگردید در فیلدی که اجازه دو یا سه گروه عدد را میدهد و هر کدام در چهار گروه سه عددی شکسته شده است",
"install_devices_router_list_3": "آدرس سرور AdGuard Home خود را آنجا وارد کنید",
"install_devices_router_list_4": "شما نمیتوانید DNS سرور سفارشی در برخی از روترها تنظیم کنید. در این مورد اگر شما AdGuard Home را بعنوان DHCP سرور راه اندازی کنید میتواند کمک کند. در غیر اینصورت باید راهنمای سفارشی سازی DNS سرورها برای مدل خاص روتر خود را انتخاب کنید.",
"install_devices_windows_list_1": "کنترل پنل را از طریق استارت منو یا جستجوی ویندوز باز کنید.",
"install_devices_windows_list_2": "بروید به شبکه و دسته اینترنت و سپس به شبکه و مرکز اشتراک گذاری",
"install_devices_windows_list_3": "در سمت چپ صفحه تنظیمات آداپتور را تغییر داده و روی آن کلیک کنید",
"install_devices_windows_list_4": "ارتباط فعال خود را انتخاب کرده،روی آن راست کلیک کرده و مشخصات را انتخاب کنید.",
"install_devices_windows_list_5": "پروتکل اینترنت نسخه 4 (TCP/IP) را در لیست بیابید،آن را انتخاب و سپس روی مشخصات دوباره کلیک کنید.",
"install_devices_windows_list_6": "گزینه استفاده از آدرس DNS سرور زیر را انتخاب کرده و آدرس سرور AdGuard Home خود را وارد کنید.",
"install_devices_macos_list_1": "روی آیکون اَپل کلیک کرده و بروید به اولویت های سیستم",
"install_devices_macos_list_2": "روی شبکه کلیک کنید",
"install_devices_macos_list_3": "اولین ارتباط را از لیست خود انتخاب و روی پیشرفته کلیک کنید.",
"install_devices_macos_list_4": "تب DNS را انتخاب و آدرس های سرور AdGuard Home خود را وارد کنید.",
"install_devices_android_list_1": "از منوی صفحه خانه آندروئید،تنظیمات را فشار دهید",
"install_devices_android_list_2": "وای فای را در منو فشار دهید،صفحه لیست کردن همه شبکه های موجود نشان داده میشود (تنظیم DNS دستی برای ارتباط موبایلی غیرممکن است)",
"install_devices_android_list_3": "به شبکه ای که متصل شده اید فشار طولانی دهید و ویرایش شبکه را انتخاب کنید.",
"install_devices_android_list_4": "در برخی دستگاه ها،شما ممکن است کادر پیشرفته را برای تنظیمات بعدی بررسی کنید.برای تنظیم DNS آندروئید خود،نیاز است شما از تنظیمات IP را از DHCP به Staticتغییر دهید.",
"install_devices_android_list_5": "گروه مقادیر DNS 1 و DNS 2 را به آدرس سرور AdGuard Home خود تغییر دهید.",
"install_devices_ios_list_1": "از صفحه خانه،تنظیمات را فشار دهید.",
"install_devices_ios_list_2": "وای فای را از منوی چپ انتخاب کنید (پیکربندی DNS دستی برای ارتباط موبایلی غیرممکن است).",
"install_devices_ios_list_3": "روی نام شبکه فعال فعلی کلیک کنید.",
"install_devices_ios_list_4": "در فیلد DNS آدرس سرور AdGuard Home را وارد کنید",
"get_started": "شروع به کار",
"next": "بعدی",
"open_dashboard": "بازکردن داشبورد",
"install_saved": "با موفقیت ذخیره نشد",
"encryption_title": "رمزگُذاری",
"encryption_desc": "پشتیبانی رمزگُذاری (HTTPS/TLS) برای DNS و رابط آدمین وب",
"encryption_config_saved": "پیکربندی رمزگذاری ذخیره شد",
"encryption_server": "نام سرور",
"encryption_server_enter": "نام دامنه خود را وارد کنید",
"encryption_server_desc": "به منظور استفاده از HTTPS،شما باید نام سرور مطابق با گواهینامه اِس اِس اِل را وارد کنید.",
"encryption_redirect": "تغییر مسیر خودکار به HTTPS",
"encryption_redirect_desc": "اگر انتخاب شده باشد،AdGuard Home خودکار شما را از آدرس HTTP به HTTPS منتقل می کند",
"encryption_https": "پورت HTTPS",
"encryption_https_desc": "اگر پورت HTTPS پیکربندی شده باشد،رابط آدمین AdGuard Home از طریق HTTPS قابل دسترسی خواهد بود و آن همچنین DNS-over-HTTPS را در مکان '/dns-query' ارائه می دهد.",
"encryption_dot": "پورت DNS-over-TLS",
"encryption_dot_desc": "اگر این پورت پیکربندی شده باشد،AdGuard Home یک DNS-over-TLS سرور روی این پورت اجرا می کند",
"encryption_certificates": "گواهینامه ها",
"encryption_certificates_desc": "به منظور استفاده از رمزگُذاری، شما باید زنجیره گواهینامه اِس اِس اِل معتبر برای دامنه خود ارائه دهید. میتوانید گواهینامه رایگان از <0>{{link}}</0> بگیرید یا میتوانید آن را از مراجع گواهینامه معتبر بخرید.",
"encryption_certificates_input": "کپی/چسباندن گواهینامه پی ای اِم کد گذاری شده در اینجا.",
"encryption_status": "وضعیت",
"encryption_expire": "تاریخ انقضاء",
"encryption_key": "کلید خصوصی",
"encryption_key_input": "کپی/چسباندن کلید گواهینامه پی ای اِم کد گذاری شده در اینجا.",
"encryption_enable": "فعالسازی رمزگُذاری (HTTPS, DNS-over-HTTPS, و DNS-over-TLS)",
"encryption_enable_desc": "اگر رمزگُذاري فعال شده باشد،رابط آدمین AdGuard Home روی HTTPS کار خواهد کرد،و سرور DNS به درخواست های روی DNS-over-HTTPS و DNS-over-TLS گوش خواهد داد.",
"encryption_chain_valid": "زنجیره گواهینامه معتبر است",
"encryption_chain_invalid": "زنجیره گواهینامه نامعتبر است",
"encryption_key_valid": "این یک کلید خصوصی {{type}} معتبر است",
"encryption_key_invalid": "این یک کلید خصوصی {{type}} نامعتبر است",
"encryption_subject": "موضوع",
"encryption_issuer": "صادر کننده",
"encryption_hostnames": "نام میزبان",
"encryption_reset": "آیا میخواهید تنظیمات رمزگُذاری به پیش فرض بازگردد؟",
"topline_expiring_certificate": "گواهینامه اِس اِس اِل شما در صدد انقضاء است. <0>تنظیمات رمزگُذاری</0> را بروز رسانی کنید.",
"topline_expired_certificate": "گواهینامه اِس اِس اِل شما منقضی شده است. <0>تنظیمات رمزگُذاری</0> را بروز رسانی کنید.",
"form_error_port_range": "مقدار پورت را در محدوده 80-65535 وارد کنید",
"form_error_port_unsafe": "این پورت غیر ایمن است",
"form_error_equal": "نباید برابر باشد",
"form_error_password": "رمزعبور تطبیق ندارد",
"reset_settings": "ریست تنظیمات",
"update_announcement": "AdGuard Home {{version}} در دسترس است! <0>اینجا کلیک</0> کنید برای اطلاعات بیشتر.",
"setup_guide": "راهنمای راه اندازی",
"dns_addresses": "آدرس های DNS",
"dns_start": "سرور DNS در حال شروع است",
"dns_status_error": "خطا در دریافت وضعیت DNS",
"down": "کار نمی کند",
"fix": "تعمیر",
"dns_providers": "در اینجا یک <0>لیست از سرویس های ارائه دهنده DNS</0> برای انتخاب هست.",
"update_now": "حالا بروز رسانی",
"update_failed": "بروز رسانی خودکار موفق نشد. لطفا <a href='https://github.com/AdguardTeam/AdGuardHome/wiki/Getting-Started#update'>مراحل را دنبال کرده</a> تا بطور دستی بروز رسانی کنید.",
"processing_update": "منتظر بمانید،AdGuard Home در حال بروز رسانی است",
"clients_title": "کلاینت ها",
"clients_desc": "پیکربندی دستگاه های متصل شده به AdGuard Home",
"settings_global": "سراسری",
"settings_custom": "دستي",
"table_client": "کلاینت",
"table_name": "نام",
"save_btn": "ذخیره",
"client_add": "افزودن کلاینت",
"client_new": "کلاینت جدید",
"client_edit": "ویرایش کلاینت",
"client_identifier": "احراز با",
"ip_address": "آدرس آی پی",
"client_identifier_desc": "کلاینت میتواند با آدرس آی پی یا آدرس مَک احراز شود. لطفا توجه کنید،که استفاده از مَک بعنوان عامل احراز زمانی امکان دارد که AdGuard Home نیز <0>سرور DHCP </0> باشد",
"form_enter_ip": "آی پی را وارد کنید",
"form_enter_mac": "مَک را وارد کنید",
"form_enter_id": "خطای احرازکننده",
"form_add_id": "افزودن احرازکننده",
"form_client_name": "نام کلاینت را وارد کنید",
"name": "نام",
"client_global_settings": "استفاده از تنظیمات سراسری",
"client_deleted": "کلاینت \"{{key}}\" را با موفقیت حذف کرد",
"client_added": "کلاینت \"{{key}}\" را با موفقیت اضافه کرد",
"client_updated": "کلاینت \"{{key}}\" با موفقیت بروز رسانی شد",
"clients_not_found": "کلاینتی یافت نشد",
"client_confirm_delete": "آیا واقعا میخواهید \"{{key}}\" کلاینت را حذف کنید؟",
"list_confirm_delete": "آیا واقعا میخواهید این لیست را حذف کنید؟",
"auto_clients_title": "کلاینت ها (زمان اِجرا)",
"auto_clients_desc": "داده در کلاینت ها که از AdGuard Home استفاده می کند،اما در پیکربندی ذخیره نمی شود",
"access_title": "تنظیمات دسترسی",
"access_desc": "در اینجا میتوانید دستورات دسترسی را برای DNS سرور AdGuard Home وارد کنید.",
"access_allowed_title": "کلاینت های مجاز",
"access_allowed_desc": "یک لیست از CIDR یا آدرس های IP.اگر پیکربندی شود،AdGuard Home درخواست ها را فقط از این آدرس ها می پذیرد.",
"access_disallowed_title": "کلاینت های غیرمجاز",
"access_disallowed_desc": "یک لیست از CIDR یا آدرس های IP.اگر پیکربندی شود،AdGuard Home درخواست ها را از این آدرس های IP نمی پذیرد.",
"access_blocked_title": "دامنه های مسدود شده",
"access_blocked_desc": "این را با فیلتر ها به اشتباه نگیرید.AdGuard Home جستار DNS را با این دامنه ها در جستار سوال ها نمی پذیرد.",
"access_settings_saved": "تنظیمات دسترسی با موفقیت ذخیره شد",
"updates_checked": "بروز رسانی با موفقیت بررسی شد",
"updates_version_equal": "AdGuard Home بروز است",
"check_updates_now": "حالا بررسی برای بروز رسانی",
"dns_privacy": "حریم خصوصی DNS",
"setup_dns_privacy_1": "<0>DNS-over-TLS:</0> استفاده از<1>{{address}}</1> .",
"setup_dns_privacy_2": "<0>DNS-over-HTTPS:</0> استفاده از <1>{{address}}</1> .",
"setup_dns_privacy_3": "<0>لطفا توجه کنید که پروتکل های رمزگذاری شده DNS فقط در آندروئید 9 پشتیبانی می شود. پس برای سیستم عامل های دیگر نیاز است که برنامه دیگری نصب کنید.</0><0>در اینجا میتوانید لیست نرم افزارهای قابل استفاده را ببینید.</0>",
"setup_dns_privacy_android_1": "آندروئید 9 بطور پیش فرض از DNS-over-TLS پشتیبانی می کند. برای پیکربندی آن، بروید به تنظیمات → شبکه & اینترنت → پیشرفته → DNS خصوصی و نام دامنه را آنجا وارد کنید.",
"setup_dns_privacy_android_2": "<0>AdGuard for Android</0> پشتیبانی از <1>DNS-over-HTTPS</1> و <1>DNS-over-TLS</1>.",
"setup_dns_privacy_android_3": "<0>Intra</0> قابلیت <1>DNS-over-HTTPS</1> را به آندروئید اضافه می کند.",
"setup_dns_privacy_ios_1": "<0>DNSCloak</0> پشتیبانی از <1>DNS-over-HTTPS</1>, اما بمنظور پیکربندی آن برای استفاده بعنوان سرور خود،شما نیاز دارید که <2>DNS Stamp</2> برای آن تولید کنید.",
"setup_dns_privacy_ios_2": "<0>AdGuard for iOS</0> پشتیبانی از <1>DNS-over-HTTPS</1> و راه اندازی <1>DNS-over-TLS</1> .",
"setup_dns_privacy_other_title": "سایر راه کارها",
"setup_dns_privacy_other_1": "AdGuard Home خودش میتواند کلاینت DNS اَمن را در هر سیستم عاملی پیاده کند.",
"setup_dns_privacy_other_2": "<0>dnsproxy</0> از همه پروتکل های DNS شناخته شده پشتیبانی می کند.",
"setup_dns_privacy_other_3": "<0>dnscrypt-proxy</0> supportsپشتیبانی از <1>DNS-over-HTTPS</1>.",
"setup_dns_privacy_other_4": "<0>Mozilla Firefox</0> پشتیبانی از <1>DNS-over-HTTPS</1>.",
"setup_dns_privacy_other_5": "شما میتوانید راه کارهای بیشتر را در <0>اینجا</0> و <1>اینجا</1> پیدا کنید.",
"setup_dns_notice": "به منظور استفاده از <1>DNS-over-HTTPS</1> یا <1>DNS-over-TLS</1>، شما نیاز به <0>پیکربندی رمزگذاری</0> در تنظیمات AdGuard Home دارید.",
"rewrite_added": "بازنویسی DNS برای \"{{key}}\" با موفقیت اضافه شد",
"rewrite_deleted": "بازنویسی DNS برای \"{{key}}\" با موفقیت حذف شد",
"rewrite_add": "افزودن بازنویسی DNS",
"rewrite_not_found": "بازنویسی DNS یافت نشد",
"rewrite_confirm_delete": "آیا واقعا میخواهید بازنویسی DNS برای \"{{key}}\" را حذف کنید؟",
"rewrite_desc": "به آسانی اجازه پیکربندی پاسخ DNS دستی برای یک نام دامنه خاص را می دهد.",
"rewrite_applied": "دستور بازنویسی اِعمال شد",
"rewrite_hosts_applied": "بازنویسی با دستور فایل میزبان",
"dns_rewrites": "بازنویسی های DNS",
"form_domain": "نام دامنه را وارد کنید",
"form_answer": "نام دامنه یا آدرس آی پی را وارد کنید",
"form_error_domain_format": "فرمت دامنه اشتباه است",
"form_error_answer_format": "فرمت پاسخ اشتباه است",
"configure": "پیکربندی",
"main_settings": "تنظیمات اصلی",
"block_services": "مسدودسازی سرویس های خاص",
"blocked_services": "سرویس های مسدود شده",
"blocked_services_desc": "مسدودسازی سریع سایت های عمومی و سرویس ها را اجازه می دهد.",
"blocked_services_saved": "سرویس های مسدود شده با موفقیت ذخیره شد",
"blocked_services_global": "از سرویس های مسدود شده سراسری استفاده کن",
"blocked_service": "سرویس مسدود شده",
"block_all": "مسدودسازی همه",
"unblock_all": "گشودن همه",
"encryption_certificate_path": "مسیر گواهینامه",
"encryption_private_key_path": "مسیر کلید خصوصی",
"encryption_certificates_source_path": "تنظیم مسیر فایل گواهینامه",
"encryption_certificates_source_content": "چسباندن محتوای گواهینامه",
"encryption_key_source_path": "تنظیم فایل کلید خصوصی",
"encryption_key_source_content": "چسباندن محتوای کلید خصوصی",
"stats_params": "پیکربندی آمار",
"config_successfully_saved": "پیکربندی با موفقیت ذخیره شد",
"interval_24_hour": "24 ساعت",
"interval_days": "{{value}} روز",
"interval_days_plural": "{{count}} روز",
"domain": "دامنه",
"answer": "پاسخ",
"filter_added_successfully": "فیلتر با موفقیت اضافه شد",
"filter_updated": "فیلتر با موفقیت بروز رسانی شد",
"statistics_configuration": "پیکربندی آمارها",
"statistics_retention": "مدت حفظ آمارها",
"statistics_retention_desc": "اگر مقدار فاصله را کاهش دهید،برخی داده ها از بین خواهد رفت",
"statistics_clear": " پاکسازی آمار",
"statistics_clear_confirm": "آیا واقعا میخواهید آمار را پاک کنید؟",
"statistics_retention_confirm": "آیا واقعا میخواهید مدت حفظ آمار را تغییر دهید؟ اگر فاصله را کاهش دهید، برخی داده ها حذف میشود",
"statistics_cleared": "آمارها با موفقیت حذف شد",
"interval_hours": "{{count}} ساعت",
"interval_hours_plural": "{{count}} ساعت",
"filters_configuration": "پیکربندی فیلترها",
"filters_enable": "فعالسازی فیلترها",
"filters_interval": "فاصله بروز رسانی فیلترها",
"disabled": "غير فعال شده",
"username_label": "نام کاربر",
"username_placeholder": "نام کاربر را وارد کنید",
"password_label": "رمزعبور",
"password_placeholder": "رمزعبور را وارد کنید",
"sign_in": "ورود",
"sign_out": "خروج",
"forgot_password": "رمزعبور را فراموش کرده اید؟",
"forgot_password_desc": "لطفا <0>این مراحل</0> را برای ایجاد رمزعبور جدید برای حساب کاربری خود دنبال کنید.",
"location": "مکان",
"orgname": "نام سازمان",
"netname": "نام شبکه",
"network": "شبکه",
"descr": "توضيحات",
"whois": "هوئیز",
"filtering_rules_learn_more": "درباره ایجاد لیست سیاه میزبان برای خود <0>بیشتر بدانید</0>.",
"blocked_by_response": "مسدودسازی با CNAME یا IP در پاسخ",
"try_again": "امتحان دوباره",
"domain_desc": "نامه دامنه یا علامت تطبیقی را برای بازنویسی وارد کنید.",
"example_rewrite_domain": "فقط بازنویسی پاسخ برای این دامنه.",
"example_rewrite_wildcard": "بازنویسی پاسخ ها برای همه زیردامنه های <0>example.org</0>.",
"disable_ipv6": "غیرفعالسازی IPv6",
"disable_ipv6_desc": "اگر این ویژگی فعال شده، همه جستارهای DNS برای آدرس های IPv6 (نوع AAAA) رها میشود.",
"fastest_addr": "سریعترین آدرس آی پی",
"fastest_addr_desc": "جستار همه سرورهای DNS و بازگرداندن سریعترین آدرس IP از میان همه پاسخ ها",
"autofix_warning_text": "اگر روی \"تعمیر\" کلیک کنید، AdGuardHome سیستم شما را برای استفاده از DNS سرور AdGuardHome پیکربندی می کند.",
"autofix_warning_list": "این وظایف را اجرا میکند: <0>غیرفعالسازی DNSStubListener سیستم</0> <0>تنظیم آدرس DNS 127.0.0.1</0> سرور به <0>جایگزینی لینک نمادی هدف /etc/resolv.conf به/run/systemd/resolve/resolv.conf</0> <0>توقف DNSStubListener (بارگیری مجدد سرویس systemd-resolved)</0>",
"autofix_warning_result": "در نتیجه همه درخواست های DNS از سیستم شما بطور پیش فرض با AdGuardHome پردازش خواهد شد.",
"tags_title": "برچسب ها",
"tags_desc": "میتوانید برچسب مطابق با کلاینت را انتخاب کنید. برچسب ها میتواند شامل دستورات فیلترینگ بوده و به شما اجازه اعمال دقیق تر را میدهد. <0>بیشتر بدانید</0>",
"form_select_tags": "انتخاب برچسب کلاینت",
"check_title": "بررسی فیلترینگ",
"check_desc": "برسی اینکه نام میزبان فیلتر شده است یا نه",
"check": "بررسی",
"form_enter_host": "نام میزبان را وارد کنید",
"filtered_custom_rules": "با دستورات فیلترینگ دستی فیلتر شده است",
"host_whitelisted": "سایت در لیست سفید است",
"check_ip": "آدرس آی پی: {{ip}}",
"check_cname": "CNAME: {{cname}}",
"check_reason": "علت: {{reason}}",
"check_rule": "دستور: {{rule}}",
"check_service": "نام سرویس: {{service}}",
"check_not_found": "در لیست فیلترهای شما یافت نشد",
"client_confirm_block": "آیا واقعا میخواهید کلاینت \"{{ip}}\" را مسدود کنید؟",
"client_confirm_unblock": "آیا واقعا میخواهید کلاینت \"{{ip}}\" را باز کنید؟",
"client_blocked": "کلاینت \"{{ip}}\" با موفقیت مسدود شد",
"client_unblocked": "کلاینت \"{{ip}}\" با موفقیت باز شد",
"static_ip": "آدرس آی پی ثابت",
"static_ip_desc": "AdGuard Home یک سرور است بنابراین به یک آدرس آی پی ثابت برای کارکرد درست نیاز دارد. در غیراینصورت، در نهایت، روتر شما میتواند آدرس آی پی متفاوت به این دستگاه اختصاص دهد.",
"set_static_ip": "تنظیم یک آدرس آی پی ثابت",
"install_static_ok": "خبر خوب! آدرس آی پی ثابت از قبل پیکربندی شده است",
"install_static_error": "AdGuard Home نمیتواند رابط این شبکه را خودکار پیکربندی کند. لطفا دستورالعمل چگونگی انجام دستی آن را مطالعه کنید.",
"install_static_configure": "ما تشخیص دادیم از آدرس آی پی پویا استفاده شده است — <0>{{ip}}</0>. آیا میخواهید از آن بعنوان آدرس ثابت استفاده کنید؟",
"confirm_static_ip": "AdGuard Home {{ip}} بعنوان آدرس آی پی ثابت شما پیکربندی می کند. ادامه میدهید؟",
"list_updated": "{{count}} لیست بروز رسانی شد",
"list_updated_plural": "{{count}} لیست بروز رسانی شد",
"dnssec_enable": "فعالسازی DNSSEC",
"dnssec_enable_desc": "تنظیم نشان DNSSEC در جستارهای حاصل DNS و بررسی نتیجه (تفکیک کننده DNSSEC-فعال شده نیاز است)",
"validated_with_dnssec": "معتبر سازی با DNSSEC",
"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

@@ -1,160 +1,564 @@
{
"url_added_successfully": "Url ajout\u00e9e",
"client_settings": "Paramètres du client",
"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",
"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_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",
"save_config": "Sauvegarder la configuration",
"enabled_dhcp": "Serveur DHCP activ\u00e9",
"disabled_dhcp": "Serveur DHCP d\u00e9sactiv\u00e9",
"enabled_dhcp": "Serveur DHCP activé",
"disabled_dhcp": "Serveur DHCP désactivé",
"dhcp_title": "Serveur DHCP (experimental !)",
"dhcp_description": "Si votre routeur ne fonctionne pas avec les r\u00e9glages DHCP, vous pouvez utiliser le serveur DHCP par d\u00e9faut d'AdGuard.",
"dhcp_description": "Si votre routeur ne fonctionne pas avec les réglages DHCP, vous pouvez utiliser le serveur DHCP par défaut d'AdGuard.",
"dhcp_enable": "Activer le serveur DHCP",
"dhcp_disable": "D\u00e9sactiver le serveur DHCP",
"dhcp_not_found": "Aucun serveur DHCP actif trouv\u00e9 sur le r\u00e9seau. Vous pouvez activer le serveur DHCP int\u00e9gr\u00e9.",
"dhcp_found": "Il y a plusieurs serveurs DHCP actifs sur le r\u00e9seau. Ce n'est pas prudent d'activer le serveur DHCP int\u00e9gr\u00e9 en ce moment.",
"dhcp_disable": "Désactiver le serveur DHCP",
"dhcp_not_found": "Aucun serveur DHCP actif trouvé sur le réseau. Vous pouvez activer le serveur DHCP intégré.",
"dhcp_found": "Il y a plusieurs serveurs DHCP actifs sur le réseau. Ce n'est pas prudent d'activer le serveur DHCP intégré en ce moment.",
"dhcp_leases": "Locations des serveurs DHCP",
"dhcp_leases_not_found": "Aucune location des serveurs DHCP trouv\u00e9e",
"dhcp_config_saved": "La configuration du serveur DHCP est sauvegard\u00e9e",
"dhcp_static_leases": "Baux statiques DHCP",
"dhcp_leases_not_found": "Aucune location des serveurs DHCP trouvée",
"dhcp_config_saved": "La configuration du serveur DHCP est sauvegardée",
"form_error_required": "Champ requis",
"form_error_ip4_format": "Format IPv4 invalide",
"form_error_ip6_format": "Format IPv6 invalide",
"form_error_ip_format": "Format IPv4 invalide",
"form_error_positive": "Doit \u00eatre sup\u00e9rieur \u00e0 0\u001c",
"form_error_mac_format": "Format MAC invalide",
"form_error_client_id_format": "Format d'ID client non valide",
"form_error_positive": "Doit être supérieur à 0",
"form_error_negative": "Doit être égal à 0 ou supérieur",
"dhcp_form_gateway_input": "IP de la passerelle",
"dhcp_form_subnet_input": "Masque de sous-r\u00e9seau",
"dhcp_form_range_title": "Rang\u00e9e des adresses IP",
"dhcp_form_range_start": "D\u00e9but de la rang\u00e9e",
"dhcp_form_range_end": "Fin de la rang\u00e9e",
"dhcp_form_lease_title": "P\u00e9riode de location du serveur DHCP (secondes)",
"dhcp_form_lease_input": "Dur\u00e9e de la location",
"dhcp_interface_select": "S\u00e9lectionner l'interface du serveur DHCP",
"dhcp_form_subnet_input": "Masque de sous-réseau",
"dhcp_form_range_title": "Rangée des adresses IP",
"dhcp_form_range_start": "Début de la rangée",
"dhcp_form_range_end": "Fin de la rangée",
"dhcp_form_lease_title": "Période de location du serveur DHCP (secondes)",
"dhcp_form_lease_input": "Durée de la location",
"dhcp_interface_select": "Sélectionner l'interface du serveur DHCP",
"dhcp_hardware_address": "Adresse de la machine",
"dhcp_ip_addresses": "Adresses IP",
"ip": "IP",
"dhcp_table_hostname": "Nom de machine",
"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_error": "Nous ne pouvons pas déterminer s'il y a un autre serveur DHCP sur le réseau.",
"dhcp_static_ip_error": "Pour utiliser un serveur DHCP, une adresse IP statique est requise. Nous ne sommes pas parvenus à déterminer si cette interface réseau est configurée via une adresse IP statique. Veuillez définir une adresse IP manuellement.",
"dhcp_dynamic_ip_found": "Votre système utilise une configuration d'adresses IP dynamiques pour l'interface <0>{{interfaceName}}</0>. Pour utiliser un serveur DHCP, une adresse IP statique est requise. Votre adresse IP actuelle est <0>{{ipAddress}}</0>. Nous allons automatiquement définir une adresse IP comme statique si vous appuyez sur le bouton Activer DHCP.",
"dhcp_lease_added": "\"{{key}}\" de bail statique ajoutée avec succès",
"dhcp_lease_deleted": "\"{{key}}\" de bail statique supprimée avec succès",
"dhcp_new_static_lease": "Nouveau bail statique",
"dhcp_static_leases_not_found": "Aucun bail statique DHCP trouvé",
"dhcp_add_static_lease": "Ajoutez un bail statique",
"dhcp_reset": "Voulez-vous vraiment réinitialiser votre configuration DHCP ?",
"country": "Pays",
"city": "Ville",
"delete_confirm": "Voulez-vous vraiment supprimer \"{{key}}\" ?",
"form_enter_hostname": "Saisissez un nom d'hôte",
"error_details": "Détails des erreurs",
"response_details": "Détails de la réponse",
"request_details": "Demander des détails",
"client_details": "Détails du client",
"details": "Détails",
"back": "Retour",
"dashboard": "Tableau de bord",
"settings": "Param\u00e8tres",
"settings": "Paramètres",
"filters": "Filtres",
"query_log": "Journal des requ\u00eates\u001c",
"filter": "Filtre",
"query_log": "Journal des requêtes",
"compact": "Compact",
"nothing_found": "Rien n'a été trouvé",
"faq": "FAQ",
"version": "version",
"address": "addresse",
"on": "Activ\u00e9",
"off": "\u00c9teint",
"address": "Addresse",
"protocol": "Protocole",
"on": "Activé",
"off": "Éteint",
"copyright": "Copyright",
"homepage": "Page d'accueil",
"report_an_issue": "Signaler un probl\u00e8me",
"report_an_issue": "Signaler un problème",
"privacy_policy": "Politique de confidentialité",
"enable_protection": "Activer la protection",
"enabled_protection": "Protection activ\u00e9e",
"disable_protection": "D\u00e9sactiver la protection",
"disabled_protection": "Protection d\u00e9sactiv\u00e9e",
"enabled_protection": "Protection activée",
"disable_protection": "Désactiver la protection",
"disabled_protection": "Protection désactivée",
"refresh_statics": "Renouveler les statistiques",
"dns_query": "Requ\u00eates\u001c DNS",
"blocked_by": "Bloqu\u00e9 par Filtres",
"stats_malware_phishing": "Tentative de malware\/hamme\u00e7onnage bloqu\u00e9e",
"stats_adult": "Sites \u00e0 contenu adulte bloqu\u00e9s",
"stats_query_domain": "Domaines les plus recherch\u00e9s",
"for_last_24_hours": "pendant les derni\u00e8res 24 heures",
"no_domains_found": "Pas de domaines trouv\u00e9s",
"requests_count": "Nombre de requ\u00eates",
"top_blocked_domains": "Les domaines les plus fr\u00e9quemment bloqu\u00e9s",
"dns_query": "Requêtes DNS",
"blocked_by": "<0>Bloqué par Filtres</0>",
"stats_malware_phishing": "Tentative de malware/hammeçonnage bloquée",
"stats_adult": "Sites à contenu adulte bloqués",
"stats_query_domain": "Domaines les plus recherchés",
"for_last_24_hours": "pendant les dernières 24 heures",
"for_last_days": "pour les {{count}} derniers jours",
"for_last_days_plural": "pour les {{count}} derniers jours",
"no_domains_found": "Pas de domaines trouvés",
"requests_count": "Nombre de requêtes",
"top_blocked_domains": "Les domaines les plus fréquemment bloqués",
"top_clients": "Meilleurs clients",
"no_clients_found": "Pas de clients trouv\u00e9s",
"general_statistics": "Statistiques g\u00e9n\u00e9rales",
"number_of_dns_query_24_hours": "Un nombre de requ\u00eates DNS quieries trait\u00e9es pendant les 24 heures derni\u00e8res",
"number_of_dns_query_blocked_24_hours": "Un nombre de requ\u00eates DNS bloqu\u00e9es par les filtres adblock et les listes de blocage des hosts",
"number_of_dns_query_blocked_24_hours_by_sec": "Un nombre de requ\u00eates DNS bloqu\u00e9es par le module S\u00e9curit\u00e9 de navigation d'AdGuard",
"number_of_dns_query_blocked_24_hours_adult": "Un nombre de sites \u00e0 contenu adulte bloqu\u00e9s",
"enforced_save_search": "Recherche s\u00e9curis\u00e9e renforc\u00e9e",
"number_of_dns_query_to_safe_search": "Un nombre de requ\u00eates DNS faites avec la Recherche securis\u00e9e",
"no_clients_found": "Pas de clients trouvés",
"general_statistics": "Statistiques générales",
"number_of_dns_query_days": "Le nombre de requêtes DNS traitées pour les {{count}} derniers jours",
"number_of_dns_query_days_plural": "Le nombre de requêtes DNS traitées ces {{count}} derniers jours",
"number_of_dns_query_24_hours": "Un nombre de requêtes DNS quieries traitées pendant les 24 heures dernières",
"number_of_dns_query_blocked_24_hours": "Un nombre de requêtes DNS bloquées par les filtres adblock et les listes de blocage des hosts",
"number_of_dns_query_blocked_24_hours_by_sec": "Un nombre de requêtes DNS bloquées par le module Sécurité de navigation d'AdGuard",
"number_of_dns_query_blocked_24_hours_adult": "Un nombre de sites à contenu adulte bloqués",
"enforced_save_search": "Recherche sécurisée renforcée",
"number_of_dns_query_to_safe_search": "Un nombre de requêtes DNS faites avec la Recherche securisée",
"average_processing_time": "Temps moyen de traitement",
"average_processing_time_hint": "Temps moyen (en millisecondes) de traitement d'une requ\u00eate DNS",
"block_domain_use_filters_and_hosts": "Bloquez les domaines \u00e0 l'aide des filtres et fichiers hosts",
"filters_block_toggle_hint": "Vous pouvez configurer les r\u00e8gles de filtrage dans les param\u00e8tres des <a href='#filters'>Filtres<\/a>.",
"use_adguard_browsing_sec": "Utilisez le service S\u00e9curit\u00e9 de navigation d'AdGuard",
"use_adguard_browsing_sec_hint": "AdGuard Home va v\u00e9rifier si le domaine est dans la liste noire du service de s\u00e9curit\u00e9 de navigation. Pour cela il va utiliser un lookup API discret : le pr\u00e9fixe court du hash du nom de domaine SHA256 sera envoy\u00e9 au serveur.",
"use_adguard_parental": "Utiliser le contr\u00f4le parental d'AdGuard",
"use_adguard_parental_hint": "AdGuard Home va v\u00e9rifier s'il y a du contenu pour adultes sur le domaine. Ce sera fait par aide du m\u00eame API discret que celui utilis\u00e9 par le service de S\u00e9curit\u00e9 de navigation.",
"enforce_safe_search": "Renforcer la recherche s\u00e9curis\u00e9e",
"enforce_save_search_hint": "AdGuard Home peut renforcer la Recherche s\u00e9curis\u00e9e dans les moteurs de recherche suivants : Google, Youtube, Bing et Yandex.",
"no_servers_specified": "Pas de serveurs sp\u00e9cifi\u00e9s",
"no_settings": "Pas de param\u00e8tres",
"general_settings": "Param\u00e8tres g\u00e9n\u00e9raux",
"average_processing_time_hint": "Temps moyen (en millisecondes) de traitement d'une requête DNS",
"block_domain_use_filters_and_hosts": "Bloquez les domaines à l'aide des filtres et fichiers hosts",
"filters_block_toggle_hint": "Vous pouvez configurer les règles de filtrage dans les paramètres des <a href='#filters'>Filtres</a>.",
"use_adguard_browsing_sec": "Utilisez le service Sécurité de navigation d'AdGuard",
"use_adguard_browsing_sec_hint": "AdGuard Home va vérifier si le domaine est dans la liste noire du service de sécurité de navigation. Pour cela il va utiliser un lookup API discret : le préfixe court du hash du nom de domaine SHA256 sera envoyé au serveur.",
"use_adguard_parental": "Utiliser le contrôle parental d'AdGuard",
"use_adguard_parental_hint": "AdGuard Home va vérifier s'il y a du contenu pour adultes sur le domaine. Ce sera fait par aide du même API discret que celui utilisé par le service de Sécurité de navigation.",
"enforce_safe_search": "Renforcer la recherche sécurisée",
"enforce_save_search_hint": "AdGuard Home peut renforcer la Recherche sécurisée dans les moteurs de recherche suivants : Google, Youtube, Bing, DuckDuckGo, Yandex, Pixabay.",
"no_servers_specified": "Pas de serveurs spécifiés",
"general_settings": "Paramètres généraux",
"dns_settings": "Paramètres DNS",
"dns_blocklists": "Listes de blocage DNS",
"dns_allowlists": "Listes dautorisation DNS",
"dns_blocklists_desc": "AdGuard Home bloquera les domaines correspondant aux listes de blocage.",
"dns_allowlists_desc": "Les domaines provenant de listes dautorisation DNS seront autorisés même sils figurent dans lune des listes de blocage.",
"custom_filtering_rules": "Règles de filtrage personnalisées",
"encryption_settings": "Paramètres de chiffrement",
"dhcp_settings": "Paramètres DHCP",
"upstream_dns": "Serveurs DNS upstream",
"upstream_dns_hint": "Si vous laissez ce champ vide, AdGuard Home va utiliser <a href='https:\/\/1.1.1.1\/' target='_blank'>Cloudflare DNS<\/a> somme upstream. Utilisez le pr\u00e9fixe tls:\/\/ pour DNS via les serveurs TLS .",
"upstream_dns_hint": "Si vous laissez ce champ vide, AdGuard Home va utiliser <a href='https://www.quad9.net/' target='_blank'>Quad9</a> comme upstream.",
"test_upstream_btn": "Tester les upstreams",
"upstreams": "En amont",
"apply_btn": "Appliquer",
"disabled_filtering_toast": "Filtrage d\u00e9sactiv\u00e9",
"enabled_filtering_toast": "Filtrage activ\u00e9",
"disabled_safe_browsing_toast": "Surfing s\u00e9curis\u00e9 d\u00e9sactiv\u00e9",
"enabled_safe_browsing_toast": "Surfing s\u00e9curis\u00e9 activ\u00e9",
"disabled_parental_toast": "Contr\u00f4le parental d\u00e9sactiv\u00e9",
"enabled_parental_toast": "Contr\u00f4le parental activ\u00e9",
"disabled_safe_search_toast": "Recherche s\u00e9curis\u00e9e d\u00e9sactiv\u00e9e",
"enabled_save_search_toast": "Recherche s\u00e9curis\u00e9e activ\u00e9e",
"enabled_table_header": "Activ\u00e9",
"disabled_filtering_toast": "Filtrage désactivé",
"enabled_filtering_toast": "Filtrage activé",
"disabled_safe_browsing_toast": "Surfing sécurisé désactivé",
"enabled_safe_browsing_toast": "Surfing sécurisé activé",
"disabled_parental_toast": "Contrôle parental désactivé",
"enabled_parental_toast": "Contrôle parental activé",
"disabled_safe_search_toast": "Recherche sécurisée désactivée",
"enabled_save_search_toast": "Recherche sécurisée activée",
"enabled_table_header": "Activé",
"name_table_header": "Nom",
"filter_url_table_header": "URL du filtre",
"rules_count_table_header": "Nombre des r\u00e8gles",
"last_time_updated_table_header": "Derni\u00e8re mise \u00e0 jour",
"list_url_table_header": "URL de la liste",
"rules_count_table_header": "Nombre des règles",
"last_time_updated_table_header": "Dernière mise à jour",
"actions_table_header": "Actions",
"request_table_header": "Requête",
"edit_table_action": "Modifier",
"delete_table_action": "Supprimer",
"filters_and_hosts": "Listes de blocage des filtres et hosts",
"filters_and_hosts_hint": "AdGuard Home comprend les r\u00e8gles basiques de blocage ainsi que la syntaxe des fichiers hosts.",
"no_filters_added": "Aucun filtre ajout\u00e9",
"add_filter_btn": "Ajouter filtre",
"elapsed": "Écoulé",
"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_whitelist_added": "Aucune liste dautorisation ajoutée",
"add_blocklist": "Ajouter liste de blocage",
"add_allowlist": "Ajouter liste dautorisation",
"cancel_btn": "Annuler",
"enter_name_hint": "Saisir nom",
"enter_url_hint": "Saisir URL",
"check_updates_btn": "V\u00e9rifier les mises \u00e0 jour",
"new_filter_btn": "Abonnement \u00e0 un nouveau filtre",
"enter_valid_filter_url": "Saisir un URL valide pour s'abonner au filtre ou \u00e0 un fichier host.",
"custom_filter_rules": "R\u00e8gles de filtrage d'utilisateur",
"custom_filter_rules_hint": "Saisissez la r\u00e8gle en une ligne. C'est possible d'utiliser les r\u00e8gles de blocage ou la syntaxe des fichiers hosts.",
"enter_url_or_path_hint": "Entrez une URL ou un chemin absolu de la liste",
"check_updates_btn": "Vérifier les mises à jour",
"new_blocklist": "Nouvelle liste de blocage",
"new_allowlist": "Nouvelle liste dautorisation",
"edit_blocklist": "Modifier la liste de blocage",
"edit_allowlist": "Modifier la liste dautorisation",
"choose_blocklist": "Choisir des listes de blocage",
"choose_allowlist": "Choisir des listes dautorisation",
"enter_valid_blocklist": "Saisissez une URL valide vers la liste de blocage.",
"enter_valid_allowlist": "Saisissez une URL valide vers la liste dautorisation.",
"form_error_url_format": "Format dURL incorrect",
"form_error_url_or_path_format": "Entrez une URL ou le chemin absolu de la liste",
"custom_filter_rules": "Règles de filtrage d'utilisateur",
"custom_filter_rules_hint": "Saisissez la règle en une ligne. C'est possible d'utiliser les règles de blocage ou la syntaxe des fichiers hosts.",
"examples_title": "Exemples",
"example_meaning_filter_block": "bloquer l'acc\u00e9s au domaine exemple.org et \u00e0 tous ses sous-domaines",
"example_meaning_filter_whitelist": "d\u00e9bloquer l'acc\u00e9s au domaine exemple.org et \u00e0 tous ses sous-domaines",
"example_meaning_filter_block": "bloquer l'accés au domaine exemple.org et à tous ses sous-domaines",
"example_meaning_filter_whitelist": "débloquer l'accés au domaine exemple.org et à tous ses sous-domaines",
"example_meaning_host_block": "AdGuard Home va retourner l'adresse 127.0.0.1 au domaine example.org (mais pas aux sous-domaines).",
"example_comment": "! Voici comment ajouter une d\u00e9scription",
"example_comment": "! Voici comment ajouter une déscription",
"example_comment_meaning": "commentaire",
"example_comment_hash": "# Et comme \u00e7a aussi on peut laisser des commentaires",
"example_comment_hash": "# Et comme ça aussi on peut laisser des commentaires",
"example_regex_meaning": "bloquer l'accés aux domaines correspondants à l'expression régulière spécifiée",
"example_upstream_regular": "DNS classique (au-dessus de UDP)",
"example_upstream_dot": "<0>DNS-au-dessus-de-TLS<\/0> chiffr\u00e9",
"example_upstream_doh": "<0>DNS-au-dessus-de-HTTPS<\/0> chiffr\u00e9",
"example_upstream_sdns": "vous pouvez utiliser <0>DNS Stamps<\/0> pour <1>DNSCrypt<\/1> ou les resolveurs <2>DNS-au-dessus-de-HTTPS<\/2>",
"example_upstream_dot": "<0>DNS-over-TLS</0> chiffré",
"example_upstream_doh": "<0>DNS-over-HTTPS</0> chiffré",
"example_upstream_sdns": "vous pouvez utiliser <0>DNS Stamps</0> pour <1>DNSCrypt</1> ou les resolveurs <2>DNS_over_HTTPS</2>",
"example_upstream_tcp": "DNS classique (au-dessus de TCP)",
"all_filters_up_to_date_toast": "Tous les filtres sont mis \u00e0 jour",
"updated_upstream_dns_toast": "Les serveurs DNS upstream sont mis \u00e0 jour",
"dns_test_ok_toast": "Les serveurs DNS sp\u00e9cifi\u00e9s fonctionnent de mani\u00e8re incorrecte",
"dns_test_not_ok_toast": "Impossible d'utiliser le serveur \"{{key}}\": veuillez v\u00e9rifier si le nom saisi est bien correct",
"unblock_btn": "D\u00e9bloquer",
"block_btn": "Bloquer",
"all_lists_up_to_date_toast": "Toutes les listes sont déjà à 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_not_ok_toast": "Impossible d'utiliser le serveur \"{{key}}\": veuillez vérifier si le nom saisi est bien correct",
"unblock": "Débloquer",
"block": "Bloquer",
"time_table_header": "Temps",
"date": "Date",
"domain_name_table_header": "Nom de domaine",
"domain_or_client": "Domaine ou client",
"type_table_header": "Type",
"response_table_header": "R\u00e9ponse",
"response_table_header": "Réponse",
"response_code": "Code de réponse",
"client_table_header": "Client",
"empty_response_status": "Vide",
"show_all_filter_type": "Montrer tout",
"show_filtered_type": "Montrer les sites filtr\u00e9s",
"no_logs_found": "Aucun journal trouv\u00e9",
"disabled_log_btn": "D\u00e9sactiver le journal",
"download_log_file_btn": "T\u00e9l\u00e9charger le fichier de journal",
"show_filtered_type": "Montrer les sites filtrés",
"no_logs_found": "Aucun journal trouvé",
"refresh_btn": "Actualiser",
"enabled_log_btn": "Activer le journal",
"last_dns_queries": "5000 derni\u00e8res requ\u00eates DNS",
"previous_btn": "Pr\u00e9c\u00e9dent",
"previous_btn": "Précédent",
"next_btn": "Suivant",
"loading_table_status": "Chargement en cours ...",
"page_table_footer_text": "Page",
"of_table_footer_text": "de",
"rows_table_footer_text": "lignes",
"updated_custom_filtering_toast": "R\u00e8gles de filtrage d'utilisateur mises \u00e0 jour",
"rule_removed_from_custom_filtering_toast": "R\u00e8gle retir\u00e9e des r\u00e8gles d'utilisateur",
"rule_added_to_custom_filtering_toast": "R\u00e8gle ajout\u00e9e aux r\u00e8gles d'utilisateur",
"query_log_disabled_toast": "Journal de requ\u00eates d\u00e9sactiv\u00e9",
"query_log_enabled_toast": "Journal de requ\u00eates activ\u00e9",
"updated_custom_filtering_toast": "Règles de filtrage d'utilisateur mises à jour",
"rule_removed_from_custom_filtering_toast": "Règle retirée des règles d'utilisateur",
"rule_added_to_custom_filtering_toast": "Règle ajoutée aux règles d'utilisateur",
"query_log_response_status": "Statut : {{value}}",
"query_log_filtered": "Filtré par {{filter}}",
"query_log_confirm_clear": "Êtes-vous sûr de vouloir effacer tout le journal des requêtes ?",
"query_log_cleared": "Le journal des requêtes a été effacé",
"query_log_updated": "Le journal des requêtes a été mis à jour",
"query_log_clear": "Effacer journal des requêtes",
"query_log_retention": "Rétention du journal des requêtes",
"query_log_enable": "Activer le journal",
"query_log_configuration": "Configuration du journal",
"query_log_disabled": "Le journal des requêtes est désactivé et peut être configuré dans les <0>paramètres</0>",
"query_log_strict_search": "Utilisez les doubles guillemets pour une recherche stricte",
"query_log_retention_confirm": "Êtes-vous sûr de vouloir modifier la rétention des journaux de requêtes ? Si vous diminuez la valeur de l'intervalle, certaines données seront perdues",
"anonymize_client_ip": "Anonymiser lIP du client",
"anonymize_client_ip_desc": "Ne pas enregistrer ladresse IP complète du client dans les journaux et statistiques",
"dns_config": "Configuration du serveur DNS",
"dns_cache_config": "Configuration du cache DNS",
"dns_cache_config_desc": "Ici, vous pouvez configurer le cache DNS",
"blocking_mode": "Mode du blocage",
"default": "Par défaut",
"nxdomain": "NXDOMAIN",
"null_ip": "IP nulle",
"custom_ip": "IP personnalisée",
"blocking_ipv4": "Blocage IPv4",
"blocking_ipv6": "Blocage IPv6",
"dns_over_https": "DNS-over-HTTPS",
"dns_over_tls": "DNS-over-TLS",
"plain_dns": "DNS brut",
"form_enter_rate_limit": "Entrez la limite de taux",
"rate_limit": "Limite de taux",
"edns_enable": "Activer le sous-réseau du client EDNS",
"edns_cs_desc": "Si activé, AdGuard Home enverra les sous-réseaux des clients aux serveurs DNS.",
"rate_limit_desc": "Le nombre de requêtes par seconde quun seul client est autorisé à faire (0 : illimité)",
"blocking_ipv4_desc": "Adresse IP à renvoyer pour une demande A bloquée",
"blocking_ipv6_desc": "Adresse IP à renvoyer pour une demande AAAA bloquée",
"blocking_mode_default": "Par défaut : Répondre avec NXDOMAIN lorsque bloqué par la règle de style Adblock; répondre avec ladresse IP spécifiée dans la règle lorsque bloquée par la règle de style /etc/hosts",
"blocking_mode_nxdomain": "NXDOMAIN : Répondre avec le code NXDOMAIN",
"blocking_mode_null_ip": "IP nulle : Répondre avec une adresse IP nulle (0.0.0.0 pour A; :: pour AAAA)",
"blocking_mode_custom_ip": "IP personnalisée : Répondre avec une adresse IP définie manuellement",
"upstream_dns_client_desc": "Si vous laissez ce champ vide, AdGuard Home utilisera les serveurs configurés dans les <0>paramètres DNS</0>.",
"tracker_source": "Source du traceur",
"source_label": "Source",
"found_in_known_domain_db": "Trouv\u00e9 dans la base de donn\u00e9es des domaines connus",
"category_label": "Cat\u00e9gorie",
"rule_label": "R\u00e8gle",
"filter_label": "Filtre",
"unknown_filter": "Filtre inconnu {{filterId}}"
"found_in_known_domain_db": "Trouvé dans la base de données des domaines connus",
"category_label": "Catégorie",
"rule_label": "Règle",
"list_label": "Liste",
"unknown_filter": "Filtre inconnu {{filterId}}",
"known_tracker": "Pisteur connu",
"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_settings_title": "Interface web administrateur",
"install_settings_listen": "Interface d'écoute",
"install_settings_port": "Port",
"install_settings_interface_link": "Votre interface web administrateur AdGuard Home sera disponible sur les adresses suivantes :",
"form_error_port": "Saisissez un port valide",
"install_settings_dns": "Serveur DNS",
"install_settings_dns_desc": "Vous devrez configurer vos appareils et votre routeur pour utiliser le serveur DNS sur les adresses suivantes :",
"install_settings_all_interfaces": "Toutes les interfaces",
"install_auth_title": "Authentification",
"install_auth_desc": "Il est fortement recommandé de configurer un mot de passe pour accéder à l'interface web administrateur AdGuard Home. Même si elle est disponible que dans votre réseau local, cela reste important de se protéger contre des accès non désirés.",
"install_auth_username": "Nom d'utilisateur",
"install_auth_password": "Mot de passe",
"install_auth_confirm": "Confirmer le mot de passe",
"install_auth_username_enter": "Saisir un nom d'utilisateur",
"install_auth_password_enter": "Saisir un mot de passe",
"install_step": "Étape",
"install_devices_title": "Configurer vos appareils",
"install_devices_desc": "Pour commencer à utiliser AdGuard Home, vous devez configurer vos appareils.",
"install_submit_title": "Félicitations !",
"install_submit_desc": "La procédure d'installation est terminée et vous êtes prêt(e) pour commencer à utiliser AdGuard Home.",
"install_devices_router": "Routeur",
"install_devices_router_desc": "Cette installation impactera automatiquement tous les appareils connectés au routeur de votre maison et vous n'aurez pas besoin de configurer manuellement chaque appareil.",
"install_devices_address": "Le serveur DNS AdGuard Home écoute sur les adresses suivantes",
"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_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 <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_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_4": "Sélectionnez votre connexion active, clic droit dessus et sélectionnez Propriétés.",
"install_devices_windows_list_5": "Recherchez la version du protocole Internet 4 (TCP/IP) dans la liste, sélectionnez-la puis cliquez à nouveau sur Propriétés.",
"install_devices_windows_list_6": "Sélectionnez Utiliser ladresse de serveur DNS suivante et saisissez votre adresse de seveur AdGuard Home.",
"install_devices_macos_list_1": "Cliquez sur l'icône Apple et allez dans les Préférences Système.",
"install_devices_macos_list_2": "Cliquez sur Réseau.",
"install_devices_macos_list_3": "Sélectionnez la première connexion dans votre liste et cliquez sur Avancés.",
"install_devices_macos_list_4": "Sélectionnez l'onglet DNS et saisissez votre adresse de serveur AdGuard.",
"install_devices_android_list_1": "Depuis l'écran d'accueil Android, appuyez sur Paramètres.",
"install_devices_android_list_2": "Appuyez sur Wi-Fi dans le menu. Tous les réseaux disponibles s'afficheront (il est impossible de définir des DNS personnalisés pour les connexions mobiles).",
"install_devices_android_list_3": "Faites un appui long sur le réseau auquel vous êtes connecté(e) et appuyez sur Modifier le réseau.",
"install_devices_android_list_4": "Sur certains appareils, vous avez parfois besoin de cocher la case Avancés pour davantage de paramètres. Pour ajuster vos paramètres DNS Android, vous devrez basculer les paramètres IP de DHCP à Statique.",
"install_devices_android_list_5": "Modifier les valeurs DNS 1 et DNS 2 pour vos adresses de serveur AdGuard Home.",
"install_devices_ios_list_1": "Depuis l'écran d'accueil, appuyez sur Paramètres.",
"install_devices_ios_list_2": "Choisissez Wi-Fi dans le menu de gauche (il est impossible de configurer les DNS pour les réseaux mobiles).",
"install_devices_ios_list_3": "Appuyez sur le nom de votre réseau actuellement utilisé.",
"install_devices_ios_list_4": "Dans le champ DNS, saisissez votre adresse de serveur AdGuard Home.",
"get_started": "C'est parti",
"next": "Suivant",
"open_dashboard": "Ouvrir le Tableau de bord",
"install_saved": "Enregistré avec succès",
"encryption_title": "Chiffrement",
"encryption_desc": "Le support du chiffrement (HTTPS/TLS) pour les DNS et l'interface web administrateur",
"encryption_config_saved": "Configuration de chiffrement enregistrée",
"encryption_server": "Nom du serveur",
"encryption_server_enter": "Entrez votre nom de domaine",
"encryption_server_desc": "Pour utiliser HTTPS, vous devez entrer le nom du serveur qui correspond à votre certificat SSL.",
"encryption_redirect": "Redirection automatiquement vers HTTPS",
"encryption_redirect_desc": "Si coché, AdGuard Home vous redirigera automatiquement d'adresses HTTP vers HTTPS.",
"encryption_https": "Port HTTPS",
"encryption_https_desc": "Si le port HTTPS est configuré, l'interface administrateur de AdGuard Home sera accessible via HTTPS et fournira aussi un service DNS-over-HTTPS sur l'emplacement '/dns-query'.",
"encryption_dot": "Port DNS-over-TLS",
"encryption_dot_desc": "Si ce port est configuré, AdGuard Home exécutera un serveur DNS-over-TLS sur ce port.",
"encryption_certificates": "Certificats",
"encryption_certificates_desc": "Pour utiliser le chiffrement, vous devez fournir une chaîne de certificats SSL valide pour votre domaine. Vous pouvez en obtenir une gratuitement sur <0>{{link}}</0> ou vous pouvez en acheter une via les Autorités de Certification de confiance.",
"encryption_certificates_input": "Copiez/coller vos certificats encodés PEM ici.",
"encryption_status": "État",
"encryption_expire": "Expire le",
"encryption_key": "Clé privée",
"encryption_key_input": "Copiez/coller votre clé privée PEM encodée pour votre certificat ici.",
"encryption_enable": "Activer le chiffrement (HTTPS, DNS-over-HTTPS et DNS-over-TLS)",
"encryption_enable_desc": "Si le chiffrement est activé, l'interface administrateur AdGuard Home fonctionnera via HTTPS et le serveur DNS écoutera les requêtes via DNS-over-HTTPS et DNS-over-TLS.",
"encryption_chain_valid": "Chaîne de certificat valide",
"encryption_chain_invalid": "Chaîne de certificat invalide",
"encryption_key_valid": "Ceci est une clé privée {{type}} valide",
"encryption_key_invalid": "Ceci est une clé privée {{type}} invalide",
"encryption_subject": "Objet",
"encryption_issuer": "Émetteur",
"encryption_hostnames": "Noms d'hôte",
"encryption_reset": "Voulez-vous vraiment réinitialiser les paramètres de chiffrement ?",
"topline_expiring_certificate": "Votre certificat SSL est sur le point d'expirer. Mettez à jour vos <0>Paramètres de chiffrement</0>.",
"topline_expired_certificate": "Votre certificat SSL a expiré. Mettez à jour vos <0>Paramètres de chiffrement</0>.",
"form_error_port_range": "Saisissez une valeur de port entre 80 et 65535",
"form_error_port_unsafe": "C'est un port non fiable",
"form_error_equal": "Ne devrait pas être égal",
"form_error_password": "Mots de passe différents",
"reset_settings": "Réinitialiser les paramètres",
"update_announcement": "AdGuard Home {{version}} est disponible ! <0>Cliquez ici</0> pour plus d'informations.",
"setup_guide": "Guide d'installation",
"dns_addresses": "Adresses DNS",
"dns_start": "Démarrage du serveur DNS",
"dns_status_error": "Erreur lors de la récupération du statut du serveur DNS",
"down": "Descendant",
"fix": "Corriger",
"dns_providers": "Voici une <0>liste de fournisseurs DNS connus</0>.",
"update_now": "Mettre à jour maintenant",
"update_failed": "Échec de la mise à jour automatique. Veuillez <a href='https://github.com/AdguardTeam/AdGuardHome/wiki/Getting-Started#update'>suivre ces étapes</a> pour mettre à jour manuellement.",
"processing_update": "Veuillez patienter, AdGuard Home est en cours de mise à jour",
"clients_title": "Clients",
"clients_desc": "Configurer les appareils connectés à AdGuard Home",
"settings_global": "Général",
"settings_custom": "Personnalisé",
"table_client": "Client",
"table_name": "Nom",
"save_btn": "Enregistrer",
"client_add": "Ajouter un client",
"client_new": "Nouveau client",
"client_edit": "Modifier le client",
"client_identifier": "Identifiant",
"ip_address": "Adresse IP",
"client_identifier_desc": "Les clients peuvent être identifiés par les adresses IP ou MAC. Veuillez noter que l'utilisation de l'adresse MAC comme identifiant est possible uniquement si AdGuard Home est aussi un <0>serveur DHCP</0>",
"form_enter_ip": "Saisissez l'IP",
"form_enter_mac": "Saisissez MAC",
"form_enter_id": "Entrer identifiant",
"form_add_id": "Ajouter identifiant",
"form_client_name": "Saisissez le nom du client",
"name": "Nom",
"client_global_settings": "Utiliser les paramètres généraux",
"client_deleted": "Le client \"{{key}}\" a été supprimé avec succès",
"client_added": "Le client \"{{key}}\" a été ajouté",
"client_updated": "Le client \"{{key}}\" a été mis à jour",
"clients_not_found": "Aucun client trouvé",
"client_confirm_delete": "Voulez-vous vraiment supprimer le client \"{{key}}\" ?",
"list_confirm_delete": "Voulez-vous vraiment supprimer cette liste ?",
"auto_clients_title": "Clients (exécution)",
"auto_clients_desc": "Les données des clients qu'utilisent AdGuard Home, mais non stockées dans la configuration",
"access_title": "Paramètres d'accès",
"access_desc": "Ici vous pouvez configurer les règles d'accès au serveur DNS AdGuard Home.",
"access_allowed_title": "Clients autorisés",
"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_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_settings_saved": "Paramètres d'accès enregistrés avec succès",
"updates_checked": "Mises à jour vérifiées",
"updates_version_equal": "AdGuard Home est à jour",
"check_updates_now": "Vérifier les mises à jour",
"dns_privacy": "Confidentialité DNS",
"setup_dns_privacy_1": "<0>DNS-over-TLS :</0> Utiliser le string <1>{{address}}</1>.",
"setup_dns_privacy_2": "<0>DNS-over-HTTPS :</0> Utiliser le string <1>{{address}}</1>.",
"setup_dns_privacy_3": "<0>Veuillez noter que les protocoles DNS chiffrés sont supportés que sur Android 9. Donc vous devez installer un logiciel complémentaire pour les autres systèmes opérationnels.</0><0>Voici une liste de logiciels que vous pouvez utiliser.</0>",
"setup_dns_privacy_android_1": "Android 9 supporte nativement le DNS-over-TLS. Pour le configurer, allez dans Paramètres → Réseau et Internet → Avancés → DNS privé et saisissez votre nom de domaine ici.",
"setup_dns_privacy_android_2": "<0>AdGuard pour Android</0> supporte le <1>DNS-over-HTTPS</1> et le <1>DNS-over-TLS</1>.",
"setup_dns_privacy_android_3": "<0>Intra</0> ajoute le support <1>DNS-over-HTTPS</1> sur Android.",
"setup_dns_privacy_ios_1": "<0>DNSCloak</0> supporte le <1>DNS-over-HTTPS</1> mais pour le configurer pour utiliser votre propre serveur, vous devrez générer un <2>DNS Stamp</2> pour lui.",
"setup_dns_privacy_ios_2": "<0>AdGuard pour iOS</0> supporte les configurations <1>DNS-over-HTTPS</1> et <1>DNS-over-TLS</1>.",
"setup_dns_privacy_other_title": "Autres implémentations",
"setup_dns_privacy_other_1": "AdGuard Home lui-même peut être un client DNS sécurisé sur n'importe quelle plateforme.",
"setup_dns_privacy_other_2": "<0>dnsproxy</0> supporte tous les protocoles DNS sécurisés connus.",
"setup_dns_privacy_other_3": "<0>dnscrypt-proxy</0> supporte le <1>DNS-over-HTTPS</1>.",
"setup_dns_privacy_other_4": "<0>Mozilla Firefox</0> supporte le <1>DNS-over-HTTPS</1>.",
"setup_dns_privacy_other_5": "Vous trouverez plus d'implémentations <0>ici</0> et <1>ici</1>.",
"setup_dns_notice": "Pour utiliser le <1>DNS-over-HTTPS</1> ou le <1>DNS-over-TLS</1>, vous devez <0>configurer le Cryptage</0> dans les paramètres de AdGuard Home.",
"rewrite_added": "Réécriture DNS pour \"{{key}}\" ajoutée",
"rewrite_deleted": "Réécriture DNS pour \"{{key}}\" supprimée",
"rewrite_add": "Ajouter une réécriture DNS",
"rewrite_not_found": "Aucune réécriture DNS trouvée",
"rewrite_confirm_delete": "Voulez-vous vraiment supprimer la réécriture DNS pour \"{{key}}\" ?",
"rewrite_desc": "Permet de configurer facilement la réponse DNS personnalisée pour un nom de domaine spécifique.",
"rewrite_applied": "Règle de réécriture appliquée",
"rewrite_hosts_applied": "Réécrit par la règle du fichier dhôtes",
"dns_rewrites": "Réécritures DNS",
"form_domain": "Saisissez un domaine ou caracrtère générique",
"form_answer": "Saisissez une adresse IP ou un nom de domaine",
"form_error_domain_format": "Format de domaine invalide",
"form_error_answer_format": "Format de réponse invalide",
"configure": "Configurer",
"main_settings": "Paramètres principaux",
"block_services": "Bloquer des services spécifiques",
"blocked_services": "Services bloqués",
"blocked_services_desc": "Permet de bloquer les sites et services populaires rapidement.",
"blocked_services_saved": "Services bloqués enregistrés",
"blocked_services_global": "Utiliser les services bloqués globaux",
"blocked_service": "Service bloqué",
"block_all": "Tout bloquer",
"unblock_all": "Tout débloquer",
"encryption_certificate_path": "Emplacement du certificat",
"encryption_private_key_path": "Emplacement de la clef privée",
"encryption_certificates_source_path": "Définir un emplacement du fichier des certificats",
"encryption_certificates_source_content": "Coller les contenus des certificats",
"encryption_key_source_path": "Définir un fichier pour la clef privée",
"encryption_key_source_content": "Coller les contenus de la clef privée",
"stats_params": "Configuration des statistiques",
"config_successfully_saved": "Configuration sauvegardée",
"interval_24_hour": "24 heures",
"interval_days": "{{count}} jour",
"interval_days_plural": "{{count}} jours",
"domain": "Domaine",
"answer": "Réponse",
"filter_added_successfully": "Le filtre a été ajouté avec succès",
"filter_removed_successfully": "La liste a été supprimée avec succès",
"filter_updated": "Le filtre a été mis à jour avec succès",
"statistics_configuration": "Configuration des statistiques",
"statistics_retention": "Maintien des statistiques",
"statistics_retention_desc": "Si vous baissez la valeur de l'intervalle, des données seront perdues",
"statistics_clear": " Effacer les statistiques",
"statistics_clear_confirm": "Voulez-vous vraiment effacer les statistiques ?",
"statistics_retention_confirm": "Êtes-vous sûr de vouloir modifier le maintien des statistiques ? Si vous diminuez la valeur de l'intervalle, certaines données seront perdues",
"statistics_cleared": "Statistiques effacées",
"interval_hours": "{{count}} heure",
"interval_hours_plural": "{{count}} heures",
"filters_configuration": "Configuration des filtres",
"filters_enable": "Activer les filtres",
"filters_interval": "Intervalle de mise à jour des filtres",
"disabled": "Désactivé",
"username_label": "Nom d'utilisateur",
"username_placeholder": "Saisir un nom d'utilisateur",
"password_label": "Mot de passe",
"password_placeholder": "Saisir un mot de passe",
"sign_in": "Connexion",
"sign_out": "Déconnexion",
"forgot_password": "Mot de passe oublié ?",
"forgot_password_desc": "Veuillez suivre <0>ces quelques étapes</0> pour créer un nouveau mot de passe pour votre compte.",
"location": "Localisation",
"orgname": "Nom de l'organisation",
"netname": "Nom du réseau",
"network": "Réseau",
"descr": "Description",
"whois": "Whois",
"filtering_rules_learn_more": "<0>Apprenez-en plus</0> à propos de la création de vos propres listes de blocage dhôtes.",
"blocked_by_response": "Bloqué par un CNAME ou une réponse IP",
"try_again": "Réessayer",
"domain_desc": "Saisissez le nom de domaine ou le caractère générique que vous souhaitez réécrire.",
"example_rewrite_domain": "réécrivez les réponses pour ce nom de domaine uniquement.",
"example_rewrite_wildcard": "réécrire les réponses pour tous les sous-domaines <0>exemple.org</0>.",
"rewrite_ip_address": "Adresse IP : utilisez cette IP dans une réponse A ou AAAA",
"rewrite_domain_name": "Nom de domaine : ajouter un enregistrement CNAME",
"rewrite_A": "<0>A</0> : valeur spéciale, conserver les enregistrements <0>A</0> de lamont",
"rewrite_AAAA": "<0>AAAA</0> : valeur spéciale, conserver les enregistrements <0>AAAA</0> de lamont",
"disable_ipv6": "Désactiver IPv6",
"disable_ipv6_desc": "Si cette fonctionnalité est activée, toutes les requêtes DNS visant des adresses IPv6 (type AAAA) seront annulées.",
"fastest_addr": "Adresse IP la plus rapide",
"fastest_addr_desc": "Rechercher tous les serveurs DNS et renvoyer ladresse IP la plus rapide parmi toutes les réponses",
"autofix_warning_text": "Si vous cliquez sur \"Réparer\", AdGuardHome configurera votre système pour utiliser le serveur DNS AdGuardHome.",
"autofix_warning_list": "Ceci effectuera les tâches suivantes : <0>Désactiver le système DNSStubListener</0> <0>Définir ladresse du serveur DNS à 127.0.0.1 </0> <0>Remplacer la cible du lien symbolique de /etc/resolv.conf par /run/systemd/resolve/resolv.conf</0> <0>Arrêter DNSStubListener (recharger le service résolu par systemd)</0>",
"autofix_warning_result": "Par conséquent, toutes les demandes DNS de votre système seront traitées par AdGuardHome par défaut.",
"tags_title": "Mots clés",
"tags_desc": "Vous pouvez sélectionner les mots clés qui correspondent au client. Les mots clés peuvent être inclus dans les règles de filtrage et vous permettent de les appliquer plus précisément. <0>En savoir plus</0>",
"form_select_tags": "Sélectionner les mots clés du client",
"check_title": "Vérification du filtrage",
"check_desc": "Vérifier si le nom dhôte est filtré",
"check": "Vérifier",
"form_enter_host": "Saisissez un nom dhôte",
"filtered_custom_rules": "Filtré par des règles de filtrage personnalisées",
"choose_from_list": "Choisissez dans la liste",
"add_custom_list": "Ajouter une liste personnalisée",
"host_whitelisted": "Lhôte est sur liste blanche",
"check_ip": "Adresses IP : {{ip}}",
"check_cname": "CNAME : {{cname}}",
"check_reason": "Raison : {{reason}}",
"check_rule": "Règle : {{rule}}",
"check_service": "Nom du service : {{service}}",
"check_not_found": "Introuvable dans vos listes de filtres",
"client_confirm_block": "Voulez-vous vraiment bloquer le client « {{ip}} »?",
"client_confirm_unblock": "Voulez-vous vraiment débloquer le client « {{ip}} »?",
"client_blocked": "Client « {{ip}} » bloqué avec succès",
"client_unblocked": "Client « {{ip}} » débloqué avec succès",
"static_ip": "Adresse IP statique",
"static_ip_desc": "AdGuard Home est un serveur, il a donc besoin dune adresse IP statique pour fonctionner correctement. Autrement, à un moment donné, votre routeur pourrait attribuer une adresse IP différente à cet appareil.",
"set_static_ip": "Définir une adresse IP statique",
"install_static_ok": "Bonne nouvelle! Ladresse IP statique est déjà configurée",
"install_static_error": "AdGuard Home ne peut pas le configurer automatiquement pour cette interface réseau. Veuillez rechercher une instruction sur la façon de procéder manuellement.",
"install_static_configure": "Nous avons détecté quune adresse IP dynamique est utilisée — <0>{{ip}}</0>. Voulez-vous lutiliser comme votre adresse statique?",
"confirm_static_ip": "AdGuard Home configurera {{ip}} pour être votre adresse IP statique. Voulez-vous poursuivre?",
"list_updated": "{{count}} liste mise à jour",
"list_updated_plural": "{{count}} listes mises à jour",
"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)",
"validated_with_dnssec": "Validé avec DNSSEC",
"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",
"cache_size": "Taille du cache",
"cache_size_desc": "Taille du cache DNS (en bytes)",
"cache_ttl_min_override": "Remplacer le TTL minimum",
"cache_ttl_max_override": "Remplacer le TTL maximum",
"enter_cache_size": "Entrer la taille du cache",
"enter_cache_ttl_min_override": "Entrez le TTL minimum",
"enter_cache_ttl_max_override": "Entrez le TTL maximum",
"cache_ttl_min_override_desc": "Remplacer la valeur TTL (minimum) reçue du serveur en amont. Cette valeur ne peut pas dépasser 3600 (1 heure)",
"cache_ttl_max_override_desc": "Remplacer la valeur TTL (maximale) reçue du serveur en amont",
"min_exceeds_max_value": "La valeur minimum excède la valeur maximum",
"value_not_larger_than": "La valeur ne peut pas dépasser {{maximum}}",
"filter_category_general": "Général",
"filter_category_security": "Sécurité",
"filter_category_regional": "Régional",
"filter_category_other": "Autre",
"filter_category_general_desc": "Listes qui bloquent le pistage et la publicité sur la plupart des appareils",
"filter_category_security_desc": "Listes spécialisées dans le blocage de logiciels malveillants, dhameçonnage ou de domaines frauduleux",
"filter_category_regional_desc": "Listes axées sur les annonces régionales et les serveurs de pistage",
"filter_category_other_desc": "Autres listes noires",
"click_to_view_queries": "Cliquez pour voir les requêtes",
"port_53_faq_link": "Le port 53 est souvent occupé par les services « DNSStubListener » ou « systemd-resolved ». Veuillez lire <0>cette instruction</0> pour savoir comment résoudre ce problème."
}

View File

@@ -0,0 +1,567 @@
{
"client_settings": "Postavke klijenta",
"example_upstream_reserved": "VI možete odrediti DNS upstream-ove <0>za određene domene</0>",
"upstream_parallel": "Koristi paralelne upite kako bi ubrzali rješavanje istovremenim ispitavanjem svih upstream poslužitelja",
"parallel_requests": "Paralelni zahtjevi",
"load_balancing": "Load-balancing",
"load_balancing_desc": "Šaljite upite po jednom poslužitelju u isto vrijeme. AdGuard Home će koristiti ponderirani slučajni algoritam za odabir poslužitelja, tako da će se najbrži poslužitelj češće koristiti.",
"bootstrap_dns": "Bootstrap DNS poslužitelji",
"bootstrap_dns_desc": "Bootstrap DNS poslužitelji koriste se za rezolvanje IP adresa DoH/DoT rezolvera koje navedete kao upstreams.",
"check_dhcp_servers": "Provjera DHCP poslužitelja",
"save_config": "Spremi konfiguraciju",
"enabled_dhcp": "DHCP poslužitelj je omogućen",
"disabled_dhcp": "DHCP poslužitelj je onemogućen",
"dhcp_title": "DHCP poslužitelj (eksperimentalno!)",
"dhcp_description": "Ukoliko vaš router ne pruža DHCP postavke, možete koristiti AdGuardov ugrađeni DHCP poslužitelj.",
"dhcp_enable": "Omogući DHCP poslužitelj",
"dhcp_disable": "Onemogući DHCP poslužitelj",
"dhcp_not_found": "Sigurno je omogućiti ugrađeni DHCP poslužitelj - nismo pronašli aktivne DHCP poslužitelje na mreži. Međutim, preporučujemo vam da ponovo provjerite ručno, jer naš automatski test trenutno ne daje 100% jamstvo.",
"dhcp_found": "Aktivni DHCP poslužitelj je pronađen na mreži. Nije sigurno omogućiti ugrađeni DHCP poslužitelj.",
"dhcp_leases": "DHCP leases",
"dhcp_static_leases": "DHCP static leases",
"dhcp_leases_not_found": "Nisu pronađeni DHCP leases",
"dhcp_config_saved": "Postavke DHCP poslužitelja su uspješno spremljene",
"form_error_required": "Obavezno polje",
"form_error_ip4_format": "Nevažeći IPv4 format",
"form_error_ip6_format": "Nevažeći IPv6 format",
"form_error_ip_format": "Nevažeći format IP adrese",
"form_error_mac_format": "Nevažeći MAC format",
"form_error_client_id_format": "Nevažeći format ID-a klijenta",
"form_error_positive": "Mora biti veće od 0",
"form_error_negative": "Mora biti jednako ili veće od 0",
"dhcp_form_gateway_input": "Gateway IP",
"dhcp_form_subnet_input": "Subnet maskiranje",
"dhcp_form_range_title": "Raspon IP adresa",
"dhcp_form_range_start": "Početak raspona",
"dhcp_form_range_end": "Kraj raspona",
"dhcp_form_lease_title": "DHCP lease vrijeme (u sekundama)",
"dhcp_form_lease_input": "Lease trajanje",
"dhcp_interface_select": "Odaberite DHCP sučelje",
"dhcp_hardware_address": "Adresa hardvera",
"dhcp_ip_addresses": "IP adrese",
"ip": "IP",
"dhcp_table_hostname": "Naziv računala",
"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_error": "Nismo mogli utvrditi postoji li drugi DHCP poslužitelj na mreži.",
"dhcp_static_ip_error": "Za korištenje DHCP poslužitelja mora se postaviti statička IP adresa. Nismo uspjeli utvrditi je li to mrežno sučelje postavljeno pomoću statičke IP adrese. Ručno postavite statičku IP adresu.",
"dhcp_dynamic_ip_found": "Vaš sustav koristi postavke dinamičke IP adrese za sučelje <0>{{interfaceName}}</0>. Za korištenje DHCP poslužitelja mora se postaviti statička IP adresa. Vaša trenutna IP adresa je <0>{{ipAddress}}</0>. Ovu IP adresu ćemo automatski postaviti kao statičku ukoliko pritisnete Omogući DHCP dugme.",
"dhcp_lease_added": "Statični lease \"{{key}}\" je uspješno dodan",
"dhcp_lease_deleted": "Statični lease \"{{key}}\" je uspješno uklonjen",
"dhcp_new_static_lease": "Novi static lease",
"dhcp_static_leases_not_found": "Nisu pronađeni statični DHCP leases",
"dhcp_add_static_lease": "Dodaj static lease",
"dhcp_reset": "Jeste li sigurni da želite poništiti DHCP postavke?",
"country": "Država",
"city": "Grad",
"delete_confirm": "Jeste li sigurni da želite ukloniti \"{{key}}\"?",
"form_enter_hostname": "Unesite naziv računala",
"error_details": "Detalji o pogrešci",
"response_details": "Detalji odgovora",
"request_details": "Detalji zahtjeva",
"client_details": "Detalji o klijentu",
"details": "Detalji",
"back": "Natrag",
"dashboard": "Upravljačka ploča",
"settings": "Postavke",
"filters": "Filtri",
"filter": "Filtar",
"query_log": "Zapisnik upita",
"compact": "Kompaktno",
"nothing_found": "Nema rezultata",
"faq": "ČPP",
"version": "Verzija",
"address": "Adresa",
"protocol": "Protokol",
"on": "UKLJUČENO",
"off": "ISKLJUČENO",
"copyright": "Autorsko pravo",
"homepage": "Početna stranica",
"report_an_issue": "Prijavite problem",
"privacy_policy": "Politika privatnosti",
"enable_protection": "Omogući zaštitu",
"enabled_protection": "Omogućena zaštita",
"disable_protection": "Onemogući zaštitu",
"disabled_protection": "Onemogućena zaštita",
"refresh_statics": "Osvježi statistiku",
"dns_query": "DNS Upiti",
"blocked_by": "<0>Blokirano filtrima</0>",
"stats_malware_phishing": "Blokiran zločudni program/krađe identiteta",
"stats_adult": "Blokirane web stranice za odrasle",
"stats_query_domain": "Top tražene domene",
"for_last_24_hours": "u zadnja 24 sata",
"for_last_days": "zadnjih {{count}} dana",
"for_last_days_plural": "zadnjih {{count}} dana",
"no_domains_found": "Nije pronađena domena",
"requests_count": "Broj zahtjeva",
"top_blocked_domains": "Top blokirane domene",
"top_clients": "Top klijenti",
"no_clients_found": "Nema pronađenih klijenata",
"general_statistics": "Opća statistika",
"number_of_dns_query_days": "Broj DNS upita obrađenih u posljednja {{count}} dana",
"number_of_dns_query_days_plural": "Broj DNS upita obrađenih u posljednja {{count}} dana",
"number_of_dns_query_24_hours": "Broj DNS upita obrađenih u posljednja 24 sata",
"number_of_dns_query_blocked_24_hours": "Broj DNS zahtjeva koji su blokirani od strane filtara za blokiranje oglasa i lista neželjenih poslužitelja",
"number_of_dns_query_blocked_24_hours_by_sec": "Broj DNS zahtjeva koje je blokirao modul AdGuard zaštita pregledavanja",
"number_of_dns_query_blocked_24_hours_adult": "Broj blokiranih stranica s sadržajem za odrasle",
"enforced_save_search": "Omogućeno sigurno pretraživanje",
"number_of_dns_query_to_safe_search": "Broj DNS zahtjeva prema pretraživačima za koje je omogućeno Sigurno pretraživanje",
"average_processing_time": "Prosječno vrijeme obrade",
"average_processing_time_hint": "Prosječno vrijeme u milisekundama za obradu DNS zahtjeva",
"block_domain_use_filters_and_hosts": "Blokiraj domene koristeći filtre ili hosts datoteke",
"filters_block_toggle_hint": "Pravila blokiranja možete postaviti u postavkama <a href='#filters'>filtara</a>.",
"use_adguard_browsing_sec": "Koristi AdGuard uslugu zaštite pregledavanja",
"use_adguard_browsing_sec_hint": "AdGuard Home će provjeriti nalazi li se domena na popisu neželjenih domena od usluge zaštite pregledavanja. Za provjeru će se koristiti API za provjeru koji poštuje vašu privatnost. Samo mali dio SHA256 hash-a odnaziva domene se šalje poslužitelju.",
"use_adguard_parental": "Koristi web uslugu AdGuard roditeljske zaštite",
"use_adguard_parental_hint": "AdGuard Home provjeriti će sadrži li domena sadržaj za odrasle. Koristi isti API za zaštitu privatnosti kao i naša usluga zaštite pregledavanja.",
"enforce_safe_search": "Omogući sigurno pretraživanje",
"enforce_save_search_hint": "AdGuard Home može nametnuti sigurno pretraživanje na sljedećim tražilicama: Google, Youtube, Bing, DuckDuckGo i Yandex.",
"no_servers_specified": "Nije odabran nijedan poslužitelj",
"general_settings": "Opće postavke",
"dns_settings": "DNS postavke",
"dns_blocklists": "DNS popisi blokiranih",
"dns_allowlists": "DNS popisi omogućenih",
"dns_blocklists_desc": "AdGuard Home će blokirati domene koje odgovaraju popisu blokiranih.",
"dns_allowlists_desc": "Domene iz DNS popisa omogućenih će biti omogućene čak i kada se nalaze na nekoj listi blokiranih.",
"custom_filtering_rules": "Prilagođena pravila filtriranja",
"encryption_settings": "Postavke šifriranja",
"dhcp_settings": "DHCP postavke",
"upstream_dns": "Upstream DNS poslužitelji",
"upstream_dns_hint": "Ako se ovo polje ostavi prazno, AdGuard Home će koristiti <a href='https://www.quad9.net/' target='_blank'>Quad9</a> kao upstream.",
"test_upstream_btn": "Testiraj upstream-ove",
"upstreams": "Upstreams",
"apply_btn": "Primijeni",
"disabled_filtering_toast": "Onemogućeno filtriranje",
"enabled_filtering_toast": "Omogućeno filtriranje",
"disabled_safe_browsing_toast": "Onemogućena sigurna pretraga",
"enabled_safe_browsing_toast": "Omogućena sigurna pretraga",
"disabled_parental_toast": "Onemogućen roditeljski nadzor",
"enabled_parental_toast": "Omogućen roditeljski nadzor",
"disabled_safe_search_toast": "Onemogućeno sigurno pretraživanje",
"enabled_save_search_toast": "Omogućeno sigurno pretraživanje",
"enabled_table_header": "Omogućeno",
"name_table_header": "Naziv",
"list_url_table_header": "URL popisa",
"rules_count_table_header": "Broj pravila",
"last_time_updated_table_header": "Zadnje ažurirano",
"actions_table_header": "Radnje",
"request_table_header": "Zahtjev",
"edit_table_action": "Uredi",
"delete_table_action": "Ukloni",
"elapsed": "Proteklo",
"filters_and_hosts_hint": "AdGuard Home razumije osnovna pravila blokiranja oglasa i sintaksu hosts datoteka.",
"no_blocklist_added": "Nema dodanih popisa blokiranih",
"no_whitelist_added": "Nema dodanih popisa omogućenih",
"add_blocklist": "Dodaj popis blokiranih",
"add_allowlist": "Dodaj popis omogućenih",
"cancel_btn": "Poništi",
"enter_name_hint": "Unesite naziv",
"enter_url_or_path_hint": "Unesite URL ili putanju liste",
"check_updates_btn": "Provjeri ažuriranja",
"new_blocklist": "Novi popis blokiranih",
"new_allowlist": "Novi popis omogućenih",
"edit_blocklist": "Uredi popis blokiranih",
"edit_allowlist": "Uredi popis omogućenih",
"choose_blocklist": "Odaberite popis blokiranih",
"choose_allowlist": "Odaberite popis dopuštenih",
"enter_valid_blocklist": "Unesite valjani URL za popis blokiranih.",
"enter_valid_allowlist": "Unesite valjani URL za popis omogućenih.",
"form_error_url_format": "Nevažeći URL format",
"form_error_url_or_path_format": "Nevažeći URL ili putanja od liste",
"custom_filter_rules": "Prilagođena pravila filtriranja",
"custom_filter_rules_hint": "Unesite jedno pravilo po liniji. Možete koristiti sintaksu za pravila blokiranja oglasa ili za hosts datoteke.",
"examples_title": "Primjeri",
"example_meaning_filter_block": "blokira pristup domeni example.org kao i svim njenim poddomenama",
"example_meaning_filter_whitelist": "odblokira pristup domeni example.org kao i svim njenim poddomenama",
"example_meaning_host_block": "AdGuard Home će sada vratiti 127.0.0.1 adresu na example.org domenu (ali ne i poddomene).",
"example_comment": "! Ovdje ide komentar",
"example_comment_meaning": "samo komentar",
"example_comment_hash": "# Također komentar",
"example_regex_meaning": "blokira pristup domenama koje se podudaraju s regularnim izrazom",
"example_upstream_regular": "zadani DNS (putem UDP)",
"example_upstream_dot": "šifrirano <0>DNS-over-TLS</0>",
"example_upstream_doh": "šifrirano <0>DNS-over-HTTPS</0>",
"example_upstream_sdns": "možete koristiti <0>DNS Stamps</0> za <1>DNSCrypt</1> ili <2>DNS-over-HTTPS</2> rezolvere",
"example_upstream_tcp": "zadani DNS (putem TCP)",
"all_lists_up_to_date_toast": "Svi popisi su ažurirani",
"updated_upstream_dns_toast": "Ažurirani su upstream DNS poslužitelji",
"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",
"unblock": "Odblokiraj",
"block": "Blokiraj",
"time_table_header": "Vrijeme",
"date": "Datum",
"domain_name_table_header": "Naziv domene",
"domain_or_client": "Domena ili klijent",
"type_table_header": "Vrsta",
"response_table_header": "Odgovor",
"response_code": "Responzivni kod",
"client_table_header": "Klijent",
"empty_response_status": "Prazno",
"show_all_filter_type": "Prikaži sve",
"show_filtered_type": "Prikaži filtrirano",
"no_logs_found": "Nema zapisa",
"refresh_btn": "Osvježi",
"previous_btn": "Prethodno",
"next_btn": "Sljedeće",
"loading_table_status": "Učitavanje...",
"page_table_footer_text": "Stranica",
"rows_table_footer_text": "redova",
"updated_custom_filtering_toast": "Ažurirana su prilagođena pravila filtriranja",
"rule_removed_from_custom_filtering_toast": "Pravilo je uklonjeno iz prilagođenih pravila filtriranja",
"rule_added_to_custom_filtering_toast": "Pravilo je dodano u prilagođena pravila filtriranja",
"query_log_response_status": "Status: {{value}}",
"query_log_filtered": "Filtrirao {{filter}}",
"query_log_confirm_clear": "Jeste li sigurni da želite ukloniti zapise upita?",
"query_log_cleared": "Zapisnik upita je uspješno uklonjen",
"query_log_updated": "Zapisnik upita je uspješno ažuriran",
"query_log_clear": "Očisti zapisnik upita",
"query_log_retention": "Spremanje zapisnika upita",
"query_log_enable": "Omogući zapise",
"query_log_configuration": "Postavke zapisa",
"query_log_disabled": "Zapisnik upita je onemogućen i može se postaviti u <0>postavkama</0>",
"query_log_strict_search": "Koristite dvostruke navodnike za strogo pretraživanje",
"query_log_retention_confirm": "Jeste li sigurni da želite promijeniti zadržavanje zapisnika upita? Ako smanjite vrijednost intervala, neki će podaci biti izgubljeni",
"anonymize_client_ip": "Anonimiraj IP klijenta",
"anonymize_client_ip_desc": "Ne spremajte cijelu IP adresu klijenta u zapisnike i statistike",
"dns_config": "DNS postavke poslužitelja",
"dns_cache_config": "DNS predmemorija poslužitelja",
"dns_cache_config_desc": "Ovdje možete postaviti DNS predmemoriju",
"blocking_mode": "Način blokiranja",
"default": "Zadano",
"nxdomain": "NXDOMAIN",
"null_ip": "Null IP",
"custom_ip": "Prilagođen IP",
"blocking_ipv4": "Blokiranje IPv4",
"blocking_ipv6": "Blokiranje IPv6",
"dns_over_https": "DNS-over-HTTPS",
"dns_over_tls": "DNS-over-TLS",
"plain_dns": "Obični DNS",
"form_enter_rate_limit": "Unesite ograničenje",
"rate_limit": "Ograničenje",
"edns_enable": "Omogući EDNS Client Subnet",
"edns_cs_desc": "Ako je omogućeno, AdGuard Home će slati podmreže klijenata na DNS poslužitelje.",
"rate_limit_desc": "Broj zahtjeva u sekundi koji su dopušteni po jednom klijentu (0: neograničeno)",
"blocking_ipv4_desc": "Povratna IP adresa za blokirane A zahtjeve",
"blocking_ipv6_desc": "Povratna IP adresa za blokirane AAAA zahtjeve",
"blocking_mode_default": "Zadano: Odgovor s NXDOMAIN kada je blokirano od Adblock sličnog pravila; odgovor s IP adresom definiranom u pravilu kada je blokirano od /etc/hosts sličnog pravila",
"blocking_mode_nxdomain": "NXDOMAIN: Odgovor s NXDOMAIN kôdom",
"blocking_mode_null_ip": "Nuliran IP: Odgovor s nuliranom IP adresom (0.0.0.0 za A; :: za AAAA)",
"blocking_mode_custom_ip": "Prilagođeni IP: Odgovor s ručno postavljenom IP adresom",
"upstream_dns_client_desc": "Ako ovo polje ostane prazno, AdGuard Home će upotrijebiti poslužitelje postavljene u <0>DNS postavkama</0>.",
"tracker_source": "Izvor pratitelja",
"source_label": "Izvor",
"found_in_known_domain_db": "Pronađeno u bazi poznatih domena.",
"category_label": "Kategorija",
"rule_label": "Pravilo",
"list_label": "Popis",
"unknown_filter": "Nepoznati filtar {{filterId}}",
"known_tracker": "Poznati pratitelj",
"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_settings_title": "Administratorsko web sučelje",
"install_settings_listen": "Osluškuj sučelje",
"install_settings_port": "Port",
"install_settings_interface_link": "Web administratorsko sučelje AdGuard Home-a će biti dostupno na sljedećim adresama:",
"form_error_port": "Unesite važeću vrijednost za port",
"install_settings_dns": "DNS poslužitelj",
"install_settings_dns_desc": "Potrebno je postaviti uređaj ili router da koristi DNS poslužitelj na sljedećim adresama:",
"install_settings_all_interfaces": "Sva sučelja",
"install_auth_title": "Autentikacija",
"install_auth_desc": "Izrazito se preporučuje postavljanje autentikacije za web administratorsko sučelje AdGuard Home. Iako je dostupna samo u vašoj lokalnoj mreži, važno je zaštititi je od ne dozvoljenog pristupa.",
"install_auth_username": "Korisničko ime",
"install_auth_password": "Lozinka",
"install_auth_confirm": "Potvrdi lozinku",
"install_auth_username_enter": "Unesite korisničko ime",
"install_auth_password_enter": "Unesite lozinku",
"install_step": "Korak",
"install_devices_title": "Postavite vaše uređaje",
"install_devices_desc": "Da biste započeli koristiti AdGuard Home, morate postaviti uređaje da ga koriste.",
"install_submit_title": "Čestitamo!",
"install_submit_desc": "Postavljanje je dovršeno i spremni ste koristiti AdGuard Home.",
"install_devices_router": "Usmjerivač (Router)",
"install_devices_router_desc": "Ovo postavljanje će automatski pokriti sve uređaje povezane na vaš kućni router i nećete trebati ručno postavljati svaki od njih.",
"install_devices_address": "AdGuard Home DNS poslužitelj osluškuje sljedeće adrese",
"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_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 <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_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_4": "Odaberite aktivnu vezu, pritisnite desni klik na nju i odaberite Svojstva.",
"install_devices_windows_list_5": "Pronađite Internet Protocol Version 4 (TCP/IP) na listi, odaberite ga i zatim pritisnite opet Postavke.",
"install_devices_windows_list_6": "Odaberite Koristi sljedeće DNS adrese poslužitelja i unesite vaše adrese od AdGuard Home poslužitelja.",
"install_devices_macos_list_1": "Pritisnite na Apple ikonu i idite u Postavke sustava.",
"install_devices_macos_list_2": "Pritisnite na Mreža.",
"install_devices_macos_list_3": "Odaberite prvu vezu s vašeg popisa i pritisnite Napredno.",
"install_devices_macos_list_4": "Odaberite DNS karticu i unesite adrese svog AdGuard Home poslužitelja.",
"install_devices_android_list_1": "Na početnom zaslonu Androida, odaberite Postavke.",
"install_devices_android_list_2": "Pritisnite Wi-Fi u izborniku. Prikazat će se zaslon s popisom svih dostupnih mreža (nemoguće je postaviti prilagođeni DNS za mobilnu vezu).",
"install_devices_android_list_3": "Dugo pritisnite na mrežu na koju ste povezani i odaberite Uredi mrežu.",
"install_devices_android_list_4": "Na nekim će uređajima možda trebati označiti Napredno za prikaz dodatnih postavki. Da biste prilagodili postavke Android DNS-a, morati će te prebaciti IP postavke s DHCP-a na Statičke.",
"install_devices_android_list_5": "Promijenite DNS 1 i DNS 2 vrijednosti u one adrese AdGuard Home poslužitelja.",
"install_devices_ios_list_1": "Na početnom zaslonu odaberite Postavke.",
"install_devices_ios_list_2": "Odaberite Wi-Fi u lijevom izborniku (ne moguće je postaviti DNS za mobilne mreže).",
"install_devices_ios_list_3": "Pritisnite na naziv vaše trenutne mreže.",
"install_devices_ios_list_4": "U DNS polje unesite adrese svog AdGuard Home poslužitelja.",
"get_started": "Započni",
"next": "Sljedeće",
"open_dashboard": "Otvori upravljačku ploču",
"install_saved": "Uspješno spremljeno",
"encryption_title": "Šifriranje",
"encryption_desc": "Podrška šifriranja (HTTPS/TLS) za DNS i administratorsko web sučelje",
"encryption_config_saved": "Spremljene postavke šifriranja",
"encryption_server": "Naziv poslužitelja",
"encryption_server_enter": "Unesite naziv domene",
"encryption_server_desc": "Kako biste koristili HTTPS, morate unijeti naziv poslužitelja koji odgovara vašem SSL certifikatu.",
"encryption_redirect": "Automatski preusmjeri na HTTPS",
"encryption_redirect_desc": "Ako je omogućeno, AdGuard Home će vas automatski preusmjeravati s HTTP na HTTPS adrese.",
"encryption_https": "HTTPS port",
"encryption_https_desc": "Ako je HTTPS port postavljen, AdGuard Home administracijsko sučelje biti će dostupno putem HTTPS-a, a također će pružiti DNS-over-HTTPS na '/dns-query' lokaciji.",
"encryption_dot": "DNS-over-TLS port",
"encryption_dot_desc": "Ako je ovaj port postavljen, AdGuard Home će pokrenuti DNS-over-TLS poslužitelj na ovom portu.",
"encryption_certificates": "Certifikati",
"encryption_certificates_desc": "Da biste koristili šifriranje, za svoju domenu morate osigurati važeći lanac SSL certifikata. Besplatan certifikat možete dobiti na <0>{{link}}</0> ili ga možete kupiti od jednog od pouzdanih izdavatelja certifikata.",
"encryption_certificates_input": "Zalijepite svoje PEM-kodirane certifikate ovdje.",
"encryption_status": "Status",
"encryption_expire": "Istječe",
"encryption_key": "Privatni ključ",
"encryption_key_input": "Zalijepite svoj PEM-kodiran privatni ključ certifikata ovdje.",
"encryption_enable": "Omogući šifriranje (HTTPS, DNS-over-HTTPS i DNS-over-TLS)",
"encryption_enable_desc": "Ako je šifriranje omogućeno, administratorsko sučelje AdGuard Home će raditi preko HTTPS-a, a DNS poslužitelj će osluškivati zahtjeve preko DNS-over-HTTPS i DNS-over-TLS.",
"encryption_chain_valid": "Lanac certifikata je valjan",
"encryption_chain_invalid": "Lanac certifikata nije valjan",
"encryption_key_valid": "Ovo je valjani {{type}} privatni ključ",
"encryption_key_invalid": "Ovo je nevažeći {{type}} privatni ključ",
"encryption_subject": "Predmet",
"encryption_issuer": "Izdavač",
"encryption_hostnames": "Nazivi računala",
"encryption_reset": "Jeste li sigurni da želite poništiti postavke šifriranja?",
"topline_expiring_certificate": "Vaš SSL certifikat uskoro ističe. Ažurirajte <0>Postavke šifriranja</0>.",
"topline_expired_certificate": "Vaš SSL certifikat je istekao. Ažurirajte <0>Postavke šifriranja</0>.",
"form_error_port_range": "Unesite vrijednost porta od 80 do 65536",
"form_error_port_unsafe": "Ovo je nesigurna port",
"form_error_equal": "Ne bi trebalo biti jednako",
"form_error_password": "Lozinka se ne podudara",
"reset_settings": "Poništi postavke",
"update_announcement": "AdGuard Home {{version}} je dostupan! <0>Pritisnite ovdje</0> za više informacija.",
"setup_guide": "Vodič za postavljanje",
"dns_addresses": "DNS adrese",
"dns_start": "Pokreće se DNS poslužitelj",
"dns_status_error": "Pogreška pri dohvatu statusa DNS poslužitelja",
"down": "Ne radi",
"fix": "Popravi",
"dns_providers": "Ovo je <0>popis poznatih DNS poslužitelja</0> za izbor.",
"update_now": "Ažuriraj sada",
"update_failed": "Ne uspješno automatsko ažuriranje. Molimo, <a href='https://github.com/AdguardTeam/AdGuardHome/wiki/Getting-Started#update'>pratite ove korake</a> za ručno ažuriranje.",
"processing_update": "Molimo pričekajte, AdGuard Home se ažurira",
"clients_title": "Klijenti",
"clients_desc": "Postavite uređaje povezane na AdGuard Home",
"settings_global": "Globalno",
"settings_custom": "Prilagođeno",
"table_client": "Klijent",
"table_name": "Naziv",
"save_btn": "Spremi",
"client_add": "Dodaj klijenta",
"client_new": "Novi klijent",
"client_edit": "Uredi klijenta",
"client_identifier": "Identifikator",
"ip_address": "IP adresa",
"client_identifier_desc": "Klijenti se mogu prepoznati po IP adresi, CIDR-u ili MAC adresi. Imajte na umu da je upotreba MAC-a kao identifikatora, moguća samo ako je AdGuard Home također i <0>DHCP poslužitelj</0>",
"form_enter_ip": "Unesite IP adresu",
"form_enter_mac": "Unesite MAC adresu",
"form_enter_id": "Unesi identifikator",
"form_add_id": "Dodaj identifikator",
"form_client_name": "Unesite naziv klijenta",
"name": "Naziv",
"client_global_settings": "Koristi globalne postavke",
"client_deleted": "Klijent \"{{key}}\" je uspješno uklonjen",
"client_added": "Klijent \"{{key}}\" je uspješno dodan",
"client_updated": "Klijent \"{{key}}\" je uspješno ažuriran",
"clients_not_found": "Nema pronađenih klijenata",
"client_confirm_delete": "Jeste li sigurni da želite ukloniti \"{{key}}\" klijenta?",
"list_confirm_delete": "Jeste li sigurni da želite ukloniti ovaj popis?",
"auto_clients_title": "Klijenti (runtime)",
"auto_clients_desc": "Podaci na klijentu koji koriste AdGuard Home, ali se ne spremaju u postavke",
"access_title": "Postavke pristupa",
"access_desc": "Postavite pravila pristupa za AdGuard Home DNS poslužitelj.",
"access_allowed_title": "Dopušteni klijenti",
"access_allowed_desc": "Popis CIDR-a ili IP adresa. Ukoliko je postavljeno, AdGuard Home će prihvatiti samo zahtjeve s ovih IP adresa.",
"access_disallowed_title": "Nedopušteni klijenti",
"access_disallowed_desc": "Popis CIDR-a ili IP adresa. Ukoliko je postavljeno, AdGuard Home će zaustaviti zahtjeve s ovih IP adresa.",
"access_blocked_title": "Nedopuštene domene",
"access_blocked_desc": "Ne miješajte ovo s filtrima. AdGuard Home će zaustaviti DNS upite s tim ovim domenama u podnesenim upitima. Ovdje možete definirati točne nazive domena, zamjenske znakove ili pravila URL filtriranja, npr. 'example.org', '*.example.org' or '||example.org^'.",
"access_settings_saved": "Postavke pristupa su uspješno spremljene",
"updates_checked": "Uspješna provjera ažuriranja",
"updates_version_equal": "AdGuard Home je ažuriran",
"check_updates_now": "Provjeri ažuriranja sada",
"dns_privacy": "DNS privatnost",
"setup_dns_privacy_1": "<0>DNS-over-TLS:</0> Koristite <1>{{address}}</1>.",
"setup_dns_privacy_2": "<0>DNS-over-HTTPS:</0> Koristite <1>{{address}}</1>.",
"setup_dns_privacy_3": "<0>Imajte na umu da su šifrirani DNS protokoli podržani samo na Androidu 9. Stoga morate instalirati dodatni program za ostale operativne sustave.</0><0>Evo popisa programa koje možete koristiti.</0>",
"setup_dns_privacy_android_1": "Android 9 nativno podržava DNS-over-TLS. Da biste ga postavili, idite na Postavke → Mreža i internet → Napredno → Privatni DNS i tamo unesite svoje naziv domene.",
"setup_dns_privacy_android_2": "<0>AdGuard za Android</0> podržava <1>DNS-over-HTTPS</1> i <1>DNS-over-TLS</1>.",
"setup_dns_privacy_android_3": "<0>Intra</0> dodaje <1>DNS-over-HTTPS</1> podršku za Android.",
"setup_dns_privacy_ios_1": "<0>DNSCloak</0> podržava <1>DNS-over-HTTPS</1>, ali da biste ga postavili za upotrebu vašeg vlastitog poslužitelja, trebati će te generirati <2>DNS Stamp</2> za njega.",
"setup_dns_privacy_ios_2": "<0>AdGuard za iOS</0> podržava <1>DNS-over-HTTPS</1> i <1>DNS-over-TLS</1>.",
"setup_dns_privacy_other_title": "Ostale implementacije",
"setup_dns_privacy_other_1": "AdGuard Home može poslužiti kao sigurni DNS klijent na svim platformama.",
"setup_dns_privacy_other_2": "<0>dnsproxy</0> podržava sve poznate sigurne DNS protokole.",
"setup_dns_privacy_other_3": "<0>dnscrypt-proxy</0> podržava <1>DNS-over-HTTPS</1>.",
"setup_dns_privacy_other_4": "<0>Mozilla Firefox</0> podržava <1>DNS-over-HTTPS</1>.",
"setup_dns_privacy_other_5": "Možete pronaći više implementacija <0>ovdje</0> i <1>ovdje</1>.",
"setup_dns_notice": "Da biste koristili <1>DNS-over-HTTPS</1> ili <1>DNS-over-TLS</1>, morate <0>postaviti šifriranje</0> u AdGuard Home postavkama.",
"rewrite_added": "DNS prijepis za \"{{key}}\" je uspješno dodan",
"rewrite_deleted": "DNS prijepis za \"{{key}}\" je uspješno uklonjen",
"rewrite_add": "Dodaj DNS prijepis",
"rewrite_not_found": "Nema DNS prijepisa",
"rewrite_confirm_delete": "Jeste li sigurni da želite ukloniti DNS prijepis za \"{{key}}\" klijenta?",
"rewrite_desc": "Omogućuje jednostavno postavljanje prilagođenog DNS odgovora za određenu domenu.",
"rewrite_applied": "Pravilo prijepisa je primjenjeno",
"rewrite_hosts_applied": "Prepisano od strane pravila hosts datoteke",
"dns_rewrites": "DNS prijepisi",
"form_domain": "Unesite naziv domene ili zamjenski znak",
"form_answer": "Unesite IP adresu ili naziv domene",
"form_error_domain_format": "Nevažeći format domene",
"form_error_answer_format": "Nevažeći format odgovora",
"configure": "Konfiguriraj",
"main_settings": "Opće postavke",
"block_services": "Blokiraj specifične usluge",
"blocked_services": "Blokirane usluge",
"blocked_services_desc": "Omogućuje brzo blokiranje popularnih stranica i usluga.",
"blocked_services_saved": "Blokirane usluge su uspješno spremljene",
"blocked_services_global": "Koristi globalno blokirane usluge",
"blocked_service": "Blokirane usluge",
"block_all": "Blokiraj sve",
"unblock_all": "Odblokiraj sve",
"encryption_certificate_path": "Putanja certifikata",
"encryption_private_key_path": "Putanja privatnog ključa",
"encryption_certificates_source_path": "Dodajte datoteku certifikata",
"encryption_certificates_source_content": "Zalijepi sadržaj certifikata",
"encryption_key_source_path": "Dodajte datoteku privatnog ključa",
"encryption_key_source_content": "Zalijepi sadržaj privatnog ključa",
"stats_params": "Postavke statistike",
"config_successfully_saved": "Postavke su uspješno spremljene",
"interval_24_hour": "24 sata",
"interval_days": "{{count}} dan",
"interval_days_plural": "{{count}} dana",
"domain": "Domena",
"answer": "Odgovor",
"filter_added_successfully": "Popis je uspješno dodan",
"filter_removed_successfully": "Ovaj popis je uspješno uklonjen",
"filter_updated": "Ovaj popis je uspješno ažuriran",
"statistics_configuration": "Postavke statistike",
"statistics_retention": "Spremanje statistike",
"statistics_retention_desc": "Ako smanjite vrijednost intervala, neki će podaci biti izgubljeni",
"statistics_clear": " Poništi statistiku",
"statistics_clear_confirm": "Jeste li sigurni da želite poništiti statistiku?",
"statistics_retention_confirm": "Jeste li sigurni da želite promijeniti zadržavanje statistike? Ako smanjite vrijednost intervala, neki će podaci biti izgubljeni",
"statistics_cleared": "Statistika je uspješno uklonjenja",
"interval_hours": "{{count}} sata/i",
"interval_hours_plural": "{{count}} sata/i",
"filters_configuration": "Postavke filtara",
"filters_enable": "Omogući filtre",
"filters_interval": "Interval ažuriranja filtara",
"disabled": "Onemogućeno",
"username_label": "Korisničko ime",
"username_placeholder": "Unesite korisničko ime",
"password_label": "Lozinka",
"password_placeholder": "Unesite lozinku",
"sign_in": "Prijava",
"sign_out": "Odjava",
"forgot_password": "Zaboravljena lozinka?",
"forgot_password_desc": "Slijedite <0>ove korake</0> da biste stvorili novu lozinku za svoj korisnički račun.",
"location": "Lokacija",
"orgname": "Naziv organizacije",
"netname": "Naziv mreže",
"network": "Mreža",
"descr": "Opis",
"whois": "Whois",
"filtering_rules_learn_more": "<0>Saznajte više</0> o stvaranju vlastitog popisa poslužitelja.",
"blocked_by_response": "Blokirano od strane CNAME-a ili IP-a u odgovoru",
"blocked_by_cname_or_ip": "Blokirao CNAME ili IP",
"try_again": "Pokušajte ponovno",
"domain_desc": "Unesite naziv domene ili zamjenski znak koji želite prepisati.",
"example_rewrite_domain": "prepiši odgovore samo za ovaj naziv domene.",
"example_rewrite_wildcard": "prepiši odgovore za sve <0>example.org</0> poddomene.",
"rewrite_ip_address": "IP adresa: koristite ovu IP adresu u A ili AAAA odgovoru",
"rewrite_domain_name": "Naziv domene: Dodajte CNAME zapis",
"rewrite_A": "<0>A</0>: posebna vrijednost, ukloni <0>A</0> zapis od upstreama",
"rewrite_AAAA": "<0>AAAA</0>: posebna vrijednost, ukloni <0>AAAA</0> zapis od upstreama",
"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.",
"fastest_addr": "Najbrža IP adresa",
"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_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.",
"tags_title": "Oznake",
"tags_desc": "Možete odabrati oznake koje odgovaraju klijentu. Oznake se mogu uključiti u pravila filtriranja i omogućuju vam da ih točnije primijenite. <0>Saznajte više</0>",
"form_select_tags": "Odaberite oznake klijenta",
"check_title": "Provjerite filtriranje",
"check_desc": "Provjerite je li naziv računala filtriran",
"check": "Provjeri",
"form_enter_host": "Unesite naziv računala",
"filtered_custom_rules": "Filtrirano prilagođenim pravilima filtriranja",
"choose_from_list": "Odaberite s popisa",
"add_custom_list": "Dodajte prilagođeni popis",
"host_whitelisted": "Računalo je na popisu dopuštenih",
"check_ip": "IP adrese: {{ip}}",
"check_cname": "CNAME: {{cname}}",
"check_reason": "Razlog: {{reason}}",
"check_rule": "Pravilo: {{rule}}",
"check_service": "Naziv usluge: {{service}}",
"check_not_found": "Nije pronađeno na vašoj listi filtara",
"client_confirm_block": "Jeste li sigurni da želite blokirati \"{{ip}}\" klijenta?",
"client_confirm_unblock": "Jeste li sigurni da želite odblokirati \"{{ip}}\" klijenta?",
"client_blocked": "Klijent \"{{ip}}\" je uspješno blokiran",
"client_unblocked": "Klijent \"{{ip}}\" je uspješno odblokiran",
"static_ip": "Statička IP adresa",
"static_ip_desc": "AdGuard Home je poslužitelj pa mu za pravilno funkcioniranje treba statička IP adresa. Inače, u određenom trenutku vaš router može ovom uređaju dodijeliti drugu IP adresu.",
"set_static_ip": "Postavite statičku IP adresu",
"install_static_ok": "Dobre vijesti! Statička IP adresa već je postavljena",
"install_static_error": "AdGuard Home ne može je automatski postaviti za ovo mrežno sučelje. Molimo potražite upute kako to učiniti ručno.",
"install_static_configure": "Otkrili smo da se koristi dinamička IP adresa - <0>{{ip}}</0>. Želite li je koristiti kao svoju statičku adresu?",
"confirm_static_ip": "AdGuard Home će postaviti {{ip}} kao vašu statičku IP adresu. Želiš li nastaviti?",
"list_updated": "{{count}} popis ažuriran",
"list_updated_plural": "{{count}} popisa ažurirana",
"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)",
"validated_with_dnssec": "Potvrđeno s DNSSEC-om",
"all_queries": "Svi upiti",
"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",
"cache_size": "Veličina predmemorije",
"cache_size_desc": "Veličina DNS predmemorije (u bajtovima)",
"cache_ttl_min_override": "Nadjačaj minimalni TTL",
"cache_ttl_max_override": "Nadjačaj maksimalni TTL",
"enter_cache_size": "Unesite veličinu predmemorije",
"enter_cache_ttl_min_override": "Unesite minimalni TTL",
"enter_cache_ttl_max_override": "Unesite maksimalni TTL",
"cache_ttl_min_override_desc": "Nadjačaj TTL vrijednost (minimum) dobivenu od upstream poslužitelja. Ova vrijednost ne može biti veća od 3600 (1 sat)",
"cache_ttl_max_override_desc": "Nadjačaj TTL vrijednost (maksimum) dobivenu od upstream poslužitelja",
"min_exceeds_max_value": "Minimalna vrijednost je veća od maksimalne",
"value_not_larger_than": "Vrijednost ne može biti veća od {{maximum}}",
"filter_category_general": "Općenito",
"filter_category_security": "Sigurnost",
"filter_category_regional": "Regionalno",
"filter_category_other": "Ostalo",
"filter_category_general_desc": "Popisi koji blokiraju pratitelje i oglase na većini uređaja",
"filter_category_security_desc": "Popisi koju su specijalizirani za blokiranje zlonamjernih programa, krađe identiteta ili domena za obmanu",
"filter_category_regional_desc": "Popisi koji se fokusiraju na regionalne oglase i poslužitelje za praćenje",
"filter_category_other_desc": "Ostali popisi blokiranih",
"original_response": "Originalni odgovor",
"click_to_view_queries": "Kliknite za pregled upita",
"port_53_faq_link": "Port 53 često zauzimaju usluge \"DNSStubListener\" ili \"systemd-resolved\". Molimo pročitajte <0>ove upute</0> o tome kako to riješiti."
}

View File

@@ -0,0 +1,456 @@
{
"client_settings": "Pengaturan klien",
"example_upstream_reserved": "Anda dapat menetapkan DNS upstream <0>untuk domain spesifik</0>",
"upstream_parallel": "Gunakan kueri paralel untuk mempercepat resoluasi dengan menanyakan semua server upstream secara bersamaan",
"parallel_requests": "Permintaan paralel",
"bootstrap_dns": "Server DNS bootstrap",
"bootstrap_dns_desc": "Server Bootstrap DNS dapat digunakan untuk meresolve alamat IP pada DoH/DoT resolvers yang Anda tentukan sebagai upstreams.",
"check_dhcp_servers": "Cek untuk server DHCP",
"save_config": "Simpan pengaturan",
"enabled_dhcp": "Server DHCP diaktifkan",
"disabled_dhcp": "Server DHCP dinonaktifkan",
"dhcp_title": "Server DHCP",
"dhcp_description": "Jika router Anda tidak mendukung pengaturan DHCP, Anda dapat menggunakan server DHCP bawaan AdGuard.",
"dhcp_enable": "Aktifkan server DHCP",
"dhcp_disable": "Nonaktifkan server DHCP",
"dhcp_not_found": "Tidak ditemukan server DHCP aktif dalam jaringan. Aman untuk mengaktifkan server DHCP bawaan.",
"dhcp_found": "Ditemukan beberapa server DHCP aktif di dalam jaringan. Tidak aman untuk menyalakan server DHCP bawaan.",
"dhcp_leases": "DHCP leases",
"dhcp_static_leases": "DHCP static leases",
"dhcp_leases_not_found": "DHCP lease tidak ditemukan",
"dhcp_config_saved": "Pengaturan server DHCP tersimpan",
"form_error_required": "Kolom yang harus diisi",
"form_error_ip4_format": "Format IPv4 tidak valid",
"form_error_ip6_format": "Format IPv6 tidak valid",
"form_error_ip_format": "Format IPv4 tidak valid",
"form_error_mac_format": "Format MAC tidak valid",
"form_error_client_id_format": "Format client ID tidak valid",
"form_error_positive": "Harus lebih dari 0",
"form_error_negative": "Harus berjumlah 0 atau lebih besar dari 0",
"dhcp_form_gateway_input": "IP gateway",
"dhcp_form_subnet_input": "Subnet mask",
"dhcp_form_range_title": "Rentang alamat IP",
"dhcp_form_range_start": "Rentang awal",
"dhcp_form_range_end": "Rentang akhir",
"dhcp_form_lease_title": "Waktu DHCP lease (dalam detik)",
"dhcp_form_lease_input": "Durasi lease",
"dhcp_interface_select": "Pilih antarmuka DHCP",
"dhcp_hardware_address": "Alamat perangkat keras",
"dhcp_ip_addresses": "Alamat IP",
"ip": "IP",
"dhcp_table_hostname": "Nama host",
"dhcp_table_expires": "Kadaluwarsa",
"dhcp_warning": "Jika anda ingin mengaktifkan server DHCP bawaan, pastikan tidak ada server DHCP lain yang aktif. Jika tidak, akan memutus koneksi internet pada perangkat yang telah terhubung!",
"dhcp_error": "Kami tidak dapat menentukan apakah tersedia server DHCP lainnya pada jaringan.",
"dhcp_static_ip_error": "Jika ingin menggunakan server DHCP, alamat IP statis harus diatur. Kami gagal menentukan jika antarmuka jaringan ini dikonfigurasi menggunakan alamat IP statis. Silakan atur alamat IP statis secara manual.",
"dhcp_dynamic_ip_found": "Sistem Anda menggunakan konfigurasi alamat IP dinamis untuk antarmuka <0>{{interfaceName}}</0>. Untuk menggunakan server DHCP, alamat IP statis harus ditetapkan. Alamat IP Anda saat ini adalah <0>{{ipAddress}}</0>. Kami akan secara otomatis menetapkan alamat IP ini sebagai statis jika Anda menekan tombol Aktifkan DHCP.",
"dhcp_lease_added": "Static lease \"{{key}}\" berhasil ditambahkan",
"dhcp_lease_deleted": "Static lease \"{{key}}\" berhasil dihapus",
"dhcp_new_static_lease": "Static lease baru",
"dhcp_static_leases_not_found": "DHCP static lease tidak ditemukan",
"dhcp_add_static_lease": "Tambah static lease",
"dhcp_reset": "Apakah anda yakin ingin mengatur ulang konfigurasi DHCP anda?",
"country": "Negara",
"delete_confirm": "Apakah anda yakin ingin menghapus \"{{key}}\"?",
"form_enter_hostname": "Masukkan hostname",
"error_details": "Detail kesalahan",
"request_details": "Detai permintaan",
"client_details": "Detail klien",
"details": "Detail",
"back": "Kembali",
"dashboard": "Beranda",
"settings": "Pengaturan",
"filters": "Penyaring",
"filter": "Filter",
"query_log": "Catatan Kueri",
"faq": "Tanya Jawab",
"version": "versi",
"address": "Alamat",
"protocol": "Protokol",
"on": "HIDUP",
"off": "MATI",
"copyright": "Hak cipta",
"homepage": "Beranda",
"report_an_issue": "Lapor masalah",
"privacy_policy": "Kebijakan Privasi",
"enable_protection": "Aktifkan perlindungan",
"enabled_protection": "Perlidungan aktif",
"disable_protection": "Matikan perlindungan",
"disabled_protection": "Perlindungan dimatikan",
"refresh_statics": "Segarkan statistik",
"dns_query": "Kueri DNS",
"blocked_by": "<0>Diblokir oleh</0>",
"stats_malware_phishing": "Malware/phishing diblokir",
"stats_adult": "Situs dewasa diblokir",
"stats_query_domain": "Kueri domain teratas",
"for_last_24_hours": "untuk 24 jam terakhir",
"for_last_days": "untuk {{count}} hari terakhir",
"for_last_days_plural": "selama {{count}} hari terakhir",
"no_domains_found": "Domain tidak ditemukan",
"requests_count": "Jumlah permintaan",
"top_blocked_domains": "Domain diblokir teratas",
"top_clients": "Klien teratas",
"no_clients_found": "Tidak ditemukan klien",
"general_statistics": "Statistik umum",
"number_of_dns_query_days": "Jumlah kueri DNS diproses selama {{count}} hari terakhir",
"number_of_dns_query_days_plural": "Jumlah kueri DNS yang diproses selama {{count}} hari terakhir",
"number_of_dns_query_24_hours": "Jumlah kueri DNS diproses selama 24 jam terakhir",
"number_of_dns_query_blocked_24_hours": "Julah DNS diblokir oleh penyaring adblock dan daftar blokir hosts",
"number_of_dns_query_blocked_24_hours_by_sec": "Jumlah perminataan DNS diblokir oleh modul Kemanan Penjelajahan AdGuard",
"number_of_dns_query_blocked_24_hours_adult": "Jumlah website dewasa diblokir",
"enforced_save_search": "Paksa pencarian aman",
"number_of_dns_query_to_safe_search": "Jumlah perminataan DNS ke mesin pencari yang dipaksa Pencarian Aman",
"average_processing_time": "Rata-rata waktu pemrosesan",
"average_processing_time_hint": "Rata-rata waktu dalam milidetik untuk pemrosesan sebuah permintaan DNS",
"block_domain_use_filters_and_hosts": "Blokir domain menggunakan filter dan file hosts",
"filters_block_toggle_hint": "Anda dapat menyiapkan aturan pemblokiran di pengaturan <a href='#filters'>Penyaringan</a>.",
"use_adguard_browsing_sec": "Gunakan layanan web Keamanan Penjelajahan AdGuard",
"use_adguard_browsing_sec_hint": "AdGuard Home akan mengecek jika domain diblacklist oleh layanan web keamanan penjelajahan. Akan menggunakan lookup API yang ramah privasi untuk melakukan cek: hanya awalan singkat hash SHA256 dari nama domain yang dikirim ke server.",
"use_adguard_parental": "Gunakan layanan web kontrol orang tua AdGuard",
"use_adguard_parental_hint": "AdGuard Home akan mengecek jika domain mengandung materi dewasa. Akan menggunakan API yang ramah privasi yang sama sebagai layanan web keamanan penjelajahan.",
"enforce_safe_search": "Paksa penelusuran aman",
"enforce_save_search_hint": "AdGuard Home dapat memaksa penelusuran aman pada mesin pencari berikut: Google, Youtube, Bing, dan Yandex.",
"no_servers_specified": "Sever tidak disebutkan",
"general_settings": "Pengaturan umum",
"dns_settings": "Pengaturan DNS",
"dns_blocklists": "Daftar blokir DNS",
"custom_filtering_rules": "Aturan penyaringan khusus",
"encryption_settings": "Pengaturan enkripsi",
"dhcp_settings": "Pengaturan DHCP",
"upstream_dns": "Server DNS hulu",
"upstream_dns_hint": "Jika Anda mengosongkan kolom ini, AdGuard Home akan menggunakan <a href='https://1.1.1.1/' target='_blank'>Cloudflare DNS</a> sebagai hulu. Gunakan tls:// untuk server DNS over TLS.",
"test_upstream_btn": "Uji hulu",
"apply_btn": "Terapkan",
"disabled_filtering_toast": "Penyaringan nonaktif",
"enabled_filtering_toast": "Penyaringan aktif",
"disabled_safe_browsing_toast": "Penelusuran aman dinonaktifkan",
"enabled_safe_browsing_toast": "Penelusuran aman diaktifkan",
"disabled_parental_toast": "Kontrol orang tua dinonaktifkan",
"enabled_parental_toast": "Kontrol orang tua diaktifkan",
"disabled_safe_search_toast": "Pencarian aman dinonaktifkan",
"enabled_save_search_toast": "Pencarian aman diaktifkan",
"enabled_table_header": "Diaktifkan",
"name_table_header": "Nama",
"rules_count_table_header": "Jumlah Aturan",
"last_time_updated_table_header": "Terakhir diperbaharui",
"actions_table_header": "Aksi",
"request_table_header": "Permintaan",
"edit_table_action": "Ubah",
"delete_table_action": "Hapus",
"elapsed": "Berlalu",
"filters_and_hosts_hint": "AdGuard Home memahami aturan dasar adblock dan sintak file hosts.",
"cancel_btn": "Batal",
"enter_name_hint": "Masukkan nama",
"enter_url_or_path_hint": "Masukan sebuah URL atau jalur absolut dari daftar",
"check_updates_btn": "Cek pembaruan",
"form_error_url_or_path_format": "URL atau jalur absolut dari daftar tidak valid",
"custom_filter_rules": "Aturan penyaringan khusus",
"custom_filter_rules_hint": "Masukkan satu aturan dalam sebuah baris. Anda dapat menggunakan baik aturan adblock maupun sintaks file hosts.",
"examples_title": "Contoh",
"example_meaning_filter_block": "Blokir akses ke example.org dan seluruh subdomainnya",
"example_meaning_filter_whitelist": "Buka blokir akses ke domain example.orf dan seluruh subdomainnya",
"example_meaning_host_block": "AdGuard Home sekarang akan mengembalikan alamat 127.0.0.1 untuk domain example.org (namun tidak subdomainnya)",
"example_comment": "! Komentar di sini",
"example_comment_meaning": "hanya sebuah komentar",
"example_comment_hash": "Juga sebuah komentar",
"example_regex_meaning": "blokir akses ke domain yang cocok dengan <0>ekspresi reguler yang ditentukan</0>",
"example_upstream_regular": "DNS reguler (melalui UDP)",
"example_upstream_dot": "terenkripsi <0>DNS-over-TLS</0>",
"example_upstream_doh": "terenkripsi <0>DNS-over-HTTPS</0>",
"example_upstream_sdns": "anda bisa menggunakan <0>Stempel DNS</0> untuk <1>DNSCrypt</1> atau pengarah <2>DNS-over-HTTPS</2>",
"example_upstream_tcp": "DNS reguler (melalui TCP)",
"updated_upstream_dns_toast": "Server DNS hulu terbarui",
"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",
"unblock": "Buka Blokir",
"block": "Blok",
"time_table_header": "Waktu",
"date": "Tanggal",
"domain_name_table_header": "Nama domain",
"domain_or_client": "Domain atau klien",
"type_table_header": "Tipe",
"response_table_header": "Respon",
"client_table_header": "Klien",
"empty_response_status": "Kosong",
"show_all_filter_type": "Tampilkan semua",
"show_filtered_type": "Tampilkan disaring",
"no_logs_found": "Tidak ditemukan catatan",
"refresh_btn": "Segarkan",
"previous_btn": "Sebelumnya",
"next_btn": "Selanjutnya",
"loading_table_status": "Memuat...",
"page_table_footer_text": "Halaman",
"rows_table_footer_text": "baris",
"updated_custom_filtering_toast": "Perbarui aturan penyaringan khusus",
"rule_removed_from_custom_filtering_toast": "Aturan dihapus dari aturan penyaringan khusus",
"rule_added_to_custom_filtering_toast": "Aturan ditambah ke aturan penyaringan khusus",
"query_log_response_status": "Status: {{value}}",
"query_log_filtered": "Difilter oleh {{filter}}",
"query_log_confirm_clear": "Apakah Anda yakin ingin menghapus seluruh kueri log?",
"query_log_cleared": "Kueri log telah berhasil dihapus",
"query_log_clear": "Hapus kueri log",
"query_log_retention": "Retensi kueri log",
"query_log_enable": "Aktifkan log",
"query_log_configuration": "Konfigurasi log",
"query_log_disabled": "Kueri log dinonaktifkan dan dapat dikonfigurasi di <0>pengaturan</0>",
"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",
"blocking_mode": "Mode blokir",
"default": "Standar",
"blocking_ipv4": "Blokiran IPv4",
"blocking_ipv6": "Blokiran IPv6",
"dns_over_https": "DNS-over-HTTPS",
"dns_over_tls": "DNS-over-TLS",
"edns_cs_desc": "Apabila dinyalakan, AdGuard Home akan mengirim subnet klien ke server-server DNS.",
"rate_limit_desc": "Jumlah permintaan per detik yang diperbolehkan untuk satu klien (0: tidak terbatas)",
"blocking_mode_custom_ip": "IP kustom: respon dengan alamat IP yang diset secara manual",
"source_label": "Sumber",
"found_in_known_domain_db": "Ditemukan di database domain dikenal",
"category_label": "Kategori",
"rule_label": "Aturan",
"unknown_filter": "Penyaringan {{filterId}} tidak dikenal",
"known_tracker": "Pelacak yang dikenal",
"install_welcome_title": "Selamat datang di AdGuard Home!",
"install_welcome_desc": "AdGuard Home adalah sebuah server DNS pemblokiran iklan dan pelacak di jaringan. Tujuannya adalah memungkinkan anda mengkontrol seluruh jaringan dan semua perangkat anda, dan ini tidak membutuhkan aplikasi tambahan di klien",
"install_settings_title": "Antarmuka Halaman Admin",
"install_settings_listen": "Antarmuka pengoperasian",
"install_settings_port": "Port",
"install_settings_interface_link": "Laman administrasi AdGuard Home akan tersedia di alamat berikut ini",
"form_error_port": "Masukkan nilai port yang valid",
"install_settings_dns": "Server DNS",
"install_settings_dns_desc": "Anda perlu mengkonfigurasi perangkat atau router anda untuk menggunakan server DNS berikut ini",
"install_settings_all_interfaces": "Semua antarmuka",
"install_auth_title": "Otentikasi",
"install_auth_desc": "Sangat disarankan untuk mengkonfigurasi otentikasi kata sandi ke antarmuka web admin AdGuard Home Anda. Meskipun hanya dapat diakses di jaringan lokal Anda, tetap penting untuk melindunginya dari akses tak terbatas.",
"install_auth_username": "Nama Pengguna",
"install_auth_password": "Kata Sandi",
"install_auth_confirm": "Konfirmasi kata sandi",
"install_auth_username_enter": "Masukkan nama pengguna",
"install_auth_password_enter": "Masukkan kata sandi",
"install_step": "langkah",
"install_devices_title": "Konfigurasikan perangkat anda",
"install_devices_desc": "Agar AdGuard Home dapat berfungsi dengan baik, anda perlu mengkonfigurasi perangkat ada untuk menggunakannya",
"install_submit_title": "Selamat!",
"install_submit_desc": "Prosedur pengaturan telah selesai, dan anda siap untuk mulai menggunakan AdGuard Home.",
"install_devices_router": "Router",
"install_devices_router_desc": "Pengaturan ini akan secara otomatis mencakup semua perangkat yang terhubung ke router rumah anda dan anda tak perlu mengkonfigurasikan secara manual.",
"install_devices_address": "Server DNS AdGuard Home akan menggunakan alamat berikut",
"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_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 <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_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_4": "Pilih koneksi aktif Anda, klik kanan padanya dan pilih Properties.",
"install_devices_windows_list_5": "Temukan Internet Protocol Version 4 (TCP / IP) dalam daftar, pilih dan kemudian klik Properties lagi.",
"install_devices_windows_list_6": "Pilih Gunakan alamat server DNS dan masukkan alamat server AdGuard Anda.",
"install_devices_macos_list_1": "Klik pada ikon Apple dan pergi ke System Preferences.",
"install_devices_macos_list_2": "Klik pada Jaringan (Network)",
"install_devices_macos_list_3": "Pilih koneksi pertama dalam daftar dan klik Advanced.",
"install_devices_macos_list_4": "Pilih tab DNS dan masukkan alamat server AdGuard Anda.",
"install_devices_android_list_1": "Dari layar beranda Menu Android, ketuk Pengaturan.",
"install_devices_android_list_2": "Ketuk Wi-Fi pada menu. Layar akan mencantumkan semua jaringan yang tersedia dan akan ditampilkan (tidak mungkin untuk mengatur DNS khusus untuk koneksi seluler).",
"install_devices_android_list_3": "Tekan lama jaringan yang terhubung, dan ketuk Ubah Jaringan.",
"install_devices_android_list_4": "Pada beberapa perangkat, Anda mungkin perlu mencentang kotak Advanced untuk melihat pengaturan lebih lanjut. Untuk menyesuaikan pengaturan DNS Android Anda, Anda perlu mengalihkan pengaturan IP dari DHCP ke Statis.",
"install_devices_android_list_5": "Ubah nilai DNS 1 & DNS 2 ke alamat server AdGuard Home",
"install_devices_ios_list_1": "Dari layar beranda, ketuk Pengaturan.",
"install_devices_ios_list_2": "Pilih Wi-Fi di menu sebelah kiri (tidak mungkin untuk mengkonfigurasi DNS untuk jaringan seluler).",
"install_devices_ios_list_3": "Ketuk nama jaringan yang saat ini aktif.",
"install_devices_ios_list_4": "Di bidang DNS, masukkan alamat server AdGuard Home anda.",
"get_started": "Mari mulai",
"next": "Selanjutnya",
"open_dashboard": "Buka Beranda",
"install_saved": "Berhasil disimpan",
"encryption_title": "Enkripsi",
"encryption_desc": "Enkripsi (HTTPS / TLS) untuk DNS dan antarmuka admin",
"encryption_config_saved": "Pengaturan enkripsi telah tersimpan",
"encryption_server": "Nama server",
"encryption_server_enter": "Masukkan nama domain anda",
"encryption_server_desc": "Untuk menggunakan HTTPS, Anda harus memasukkan nama server yang cocok dengan sertifikat SSL Anda.",
"encryption_redirect": "Alihkan ke HTTPS secara otomatis",
"encryption_redirect_desc": "Jika dicentang, AdGuard Home akan secara otomatis mengarahkan anda dari HTTP ke alamat HTTPS.",
"encryption_https": "Port HTTPS",
"encryption_https_desc": "Jika port HTTPS dikonfigurasi, antarmuka admin Home AdGuard akan dapat diakses melalui HTTPS, dan itu juga akan memberikan DNS-over-HTTPS di lokasi '/ dns-query'.",
"encryption_dot": "Port DNS-over-TLS",
"encryption_dot_desc": "Jika port ini terkonfigurasi, AdGuard Home akan menjalankan server DNS-over-TLS dalam port ini",
"encryption_certificates": "Sertifikat",
"encryption_certificates_desc": "Untuk menggunakan enkripsi, Anda perlu memberikan rantai sertifikat SSL yang valid untuk domain Anda. Anda bisa mendapatkan sertifikat gratis di <0>{{link}}</0> atau Anda dapat membelinya dari salah satu Otoritas Sertifikat tepercaya.",
"encryption_certificates_input": "Salin / rekatkan sertifikat PEM yang disandikan di sini.",
"encryption_status": "Status",
"encryption_expire": "Kedaluwarsa",
"encryption_key": "Kunci privat",
"encryption_key_input": "Salin / rekatkan kunci pribadi PEM berkode untuk sertifikat Anda di sini.",
"encryption_enable": "Nyalakan Enkripsi (HTTPS, DNS-over-HTTPS, dan DNS-over-TLS)",
"encryption_enable_desc": "Jika enkripsi diaktifkan, antarmuka admin AdGuard Home akan berfungsi dengan HTTPS, dan server DNS akan mendengarkan permintaan melalui DNS-over-HTTPS dan DNS-over-TLS.",
"encryption_chain_valid": "Rantai sertifikat valid",
"encryption_chain_invalid": "Rantai sertifikat tidak valid",
"encryption_key_valid": "Ini adalah kunci pribadi {{type}} yang valid",
"encryption_key_invalid": "Ini adalah kunci pribadi {{type}} yang tidak valid",
"encryption_subject": "Subjek",
"encryption_issuer": "Penerbit",
"encryption_hostnames": "Nama host",
"encryption_reset": "Anda yakin ingin mengatur ulang pengaturan enkripsi?",
"topline_expiring_certificate": "Sertifikat SSL Anda hampir kedaluwarsa. Perbarui <0>Pengaturan enkripsi</0>.",
"topline_expired_certificate": "Sertifikat SSL Anda kedaluwarsa. Perbarui <0>Pengaturan enkripsi</0>.",
"form_error_port_range": "Masukkan nilai port di kisaran 80-65535",
"form_error_port_unsafe": "Ini adalah port yang tidak aman",
"form_error_equal": "Seharusnya tidak sama",
"form_error_password": "Kata sandi tidak cocok",
"reset_settings": "Setel ulang pengaturan",
"update_announcement": "AdGuard Home {{version}} sekarang tersedia! <0>Klik di sini</0> untuk info lebih lanjut.",
"setup_guide": "Panduan Penyiapan",
"dns_addresses": "Alamat DNS",
"dns_start": "Server DNS sedang dinyalakan",
"dns_status_error": "Kesalahan dalam mendapatkan status server DNS",
"down": "Padam",
"fix": "Perbaiki",
"dns_providers": "Berikut adalah <0>daftar penyedia DNS yang dikenal</0> untuk dipilih.",
"update_now": "Perbarui sekarang",
"update_failed": "Pembaruan otomatis telah gagal. Harap <a href='https://github.com/AdguardTeam/AdGuardHome/wiki/Getting-Started#update'>ikuti petunjuk</a> untuk perbarui secara manual.",
"processing_update": "Silahkan tunggu, AdGuard Home sedang diperbarui",
"clients_title": "Klien",
"clients_desc": "Atur perangkat yang terhubung ke AdGuard Home",
"settings_global": "Global",
"settings_custom": "Kustom",
"table_client": "Klien",
"table_name": "Nama",
"save_btn": "Simpan",
"client_add": "Tambah Klien",
"client_new": "Klien Baru",
"client_edit": "Ubah Klien",
"client_identifier": "Identifikasi",
"ip_address": "Alamat IP",
"client_identifier_desc": "Klien dapat diidentifikasi dengan alamat IP atau alamat MAC. Harap dicatat bahwa menggunakan MAC sebagai pengidentifikasi hanya dimungkinkan jika AdGuard Home juga merupakan <0>server DHCP</0>",
"form_enter_ip": "Masukkan IP",
"form_enter_mac": "Masukkan MAC",
"form_client_name": "Masukkan nama klien",
"name": "Nama",
"client_global_settings": "Gunakan pengaturan global",
"client_deleted": "Klien \"{{key}}\" berhasil dihapus",
"client_added": "Klien \"{{key}}\" berhasil ditambahkan",
"client_updated": "Klien \"{{key}}\" berhasil diperbarui",
"clients_not_found": "Tidak ada klien ditemukan",
"client_confirm_delete": "Apakah anda yakin ingin menghapus klien \"{{key}}\"?",
"auto_clients_title": "Klien (waktu berjalan)",
"auto_clients_desc": "Data pada klien yang menggunakan AdGuard Home, tetapi tidak disimpan dalam konfigurasi",
"access_title": "Pengaturan akses",
"access_desc": "Disini anda dapat mengatur aturan akses untuk server AdGuard Home DNS.",
"access_allowed_title": "Klien yang diizinkan",
"access_allowed_desc": "Daftar CIDR atau alamat IP. Jika dikonfigurasi, AdGuard Home hanya akan menerima permintaan dari alamat IP ini.",
"access_disallowed_title": "Klien yang tidak diizinkan",
"access_disallowed_desc": "Daftar CIDR atau alamat IP. Jika dikonfigurasi, AdGuard Home akan membatalkan permintaan dari alamat IP ini.",
"access_blocked_title": "Domain yang diblokir",
"access_blocked_desc": "Jangan bingung antara ini dengan filter. AdGuard Home akan membatalkan kueri DNS dengan domain ini dalam pertanyaan kueri.",
"access_settings_saved": "Pengaturan akses berhasil disimpan",
"updates_checked": "Pembaruan berhasil dicek",
"updates_version_equal": "AdGuard Home sudah tebaru",
"check_updates_now": "Periksa pembaruan sekarang",
"dns_privacy": "DNS Privasi",
"setup_dns_privacy_1": "<0>DNS-over-TLS:</0> Memakai <1>{{address}}</1> string.",
"setup_dns_privacy_2": "<0>DNS-over-TLS:</0> Memakai <1>{{address}}</1> string.",
"setup_dns_privacy_3": "<0>Harap dicatat bahwa protokol DNS terenkripsi hanya didukung pada Android 9. Jadi Anda perlu memasang perangkat lunak tambahan untuk sistem operasi lain.</0><0>Berikut daftar perangkat lunak yang dapat Anda gunakan.</0>",
"setup_dns_privacy_android_1": "Android 9 mendukung DNS-over-TLS secara asli. Untuk mengkonfigurasinya, buka Pengaturan → Jaringan & internet → Tingkat Lanjut → DNS Pribadi dan masukkan nama domain Anda di sana.",
"setup_dns_privacy_android_2": "<0>AdGuard untuk Android</0> mendukung <1>DNS-over-HTTPS</1> dan <1>DNS-over-TLS</1>.",
"setup_dns_privacy_android_3": "<0>Intra</0> menambahkan dukungan <1>DNS-over-HTTPS</1> untuk Android.",
"setup_dns_privacy_ios_1": "<0>DNSCloak</0> mendukung <1>DNS-over-HTTPS</1>, tetapi untuk mengkonfigurasinya untuk menggunakan server Anda sendiri, Anda harus membuat <2>DNS Stamp</2> untuk itu.",
"setup_dns_privacy_ios_2": "<0>AdGuard untuk iOS</0> mendukung <1>DNS-over-HTTPS</1> dan pengaturan <1>DNS-over-TLS</1>.",
"setup_dns_privacy_other_title": "Implementasi lain",
"setup_dns_privacy_other_1": "AdGuard Home sendiri dapat menjadi klien DNS aman di platform apa pun.",
"setup_dns_privacy_other_2": "<0>dnsproxy</0> mendukung semua protokol DNS aman yang diketahui.",
"setup_dns_privacy_other_3": "<0>dnscrypt-proxy</0> mendukung <1>DNS-over-HTTPS</1>.",
"setup_dns_privacy_other_4": "<0>Mozilla Firefox</0> mendukung <1>DNS-over-HTTPS</1>.",
"setup_dns_privacy_other_5": "Anda akan menemukan lebih banyak implementasi <0>di sini</0> dan <1>di sini</1>.",
"setup_dns_notice": "Jikalau ingin menggunakan <1>DNS-over-HTTPS</1> atau <1>DNS-over-TLS</1>, Anda perlu <0>mengatur Enkripsi</0> pada pengaturan AdGuard Home.",
"rewrite_added": "DNS rewrite untuk \"{{key}}\" berhasil ditambahkan",
"rewrite_deleted": "DNS rewrite untuk \"{{key}}\" berhasil dihapus",
"rewrite_add": "Tambah DNS rewrite",
"rewrite_not_found": "Tidak ada DNS rewrite ditemukan",
"rewrite_confirm_delete": "Apakah anda yakin ingin menghapus DNS rewrite untuk \"{{key}}\"?",
"rewrite_desc": "Memungkinkan untuk dengan mudah mengkonfigurasi respons DNS kustom untuk nama domain tertentu.",
"rewrite_applied": "Aturan Rewrite yang diterapkan",
"rewrite_hosts_applied": "Ditulis ulang oleh aturan file hosts",
"dns_rewrites": "DNS rewrite",
"form_domain": "Masukkan nama domain",
"form_answer": "Masaukan alamat IP atau nama domain",
"form_error_domain_format": "Nama domain tidak valid",
"form_error_answer_format": "Format jawaban tidak valid",
"configure": "Konfigurasi",
"main_settings": "Pengaturan utama",
"block_services": "Blokir layanan tertentu",
"blocked_services": "Layanan terblokir",
"blocked_services_desc": "Memungkinkan untuk dengan cepat memblokir situs dan layanan populer.",
"blocked_services_saved": "Layanan terblokir berhasil disimpan",
"blocked_services_global": "Gunakan layanan global yang diblokir",
"blocked_service": "Layanan terblokir",
"block_all": "Blokir semua",
"unblock_all": "Buka semua blokir",
"encryption_certificate_path": "Path sertifikat",
"encryption_private_key_path": "Path kunci pribadi",
"encryption_certificates_source_path": "Tetapkan path berkas sertifikat",
"encryption_certificates_source_content": "Tempel konten sertifikat",
"encryption_key_source_path": "Tetapkan berkas kunci pribadi",
"encryption_key_source_content": "Tempel konten kunci pribadi",
"stats_params": "Konfigurasi statistik",
"config_successfully_saved": "Konfigurasi berhasil disimpan",
"interval_24_hour": "24 jam",
"interval_days": "{{count}} hari",
"interval_days_plural": "{{count}} hari",
"domain": "Domain",
"answer": "Jawab",
"filter_added_successfully": "Filter telah berhasil ditambahkan",
"statistics_configuration": "Konfigurasi statistik",
"statistics_retention": "Statistik disimpan",
"statistics_retention_desc": "Jika Anda menurunkan nilai interval, beberapa data akan hilang",
"statistics_clear": " Hapus statistik",
"statistics_clear_confirm": "Apakah Anda yakin ingin menghapus statistik?",
"statistics_retention_confirm": "Apakah Anda yakin ingin mengubah retensi statistik? Jika Anda menurunkan nilai interval, beberapa data akan hilang",
"statistics_cleared": "Statistik berhasil dihapus",
"interval_hours": "{{count}} jam",
"interval_hours_plural": "{{count}} jam",
"filters_configuration": "Konfigurasi filter",
"filters_enable": "Aktifkan filter",
"filters_interval": "Interval pembaruan filter",
"disabled": "Tidak aktif",
"username_label": "Nama pengguna",
"username_placeholder": "Masukkan nama pengguna",
"password_label": "Kata sandi",
"password_placeholder": "Masukkan kata sandi",
"sign_in": "Masuk",
"sign_out": "Keluar",
"forgot_password": "Lupa kata sandi?",
"forgot_password_desc": "Ikuti <0>langkah-langkah ini</0> untuk membuat kata sandi baru untuk akun pengguna Anda.",
"location": "Lokasi",
"orgname": "Nama organisasi",
"netname": "Nama jaringan",
"network": "Jaringan",
"descr": "Deskripsi",
"whois": "Whois",
"filtering_rules_learn_more": "<0>Pelajari lebih lanjut</0> tentang membuat daftar hitam host Anda sendiri.",
"blocked_by_response": "Diblokir oleh CNAME atau IP sebagai respon",
"try_again": "Coba lagi",
"disable_ipv6": "Matikan IPv6",
"disable_ipv6_desc": "Apabila fitur ini dinyalakan, semua permintaan DNS untuk alamat-alamat IPv6 (tipe AAAA) akan diputus.",
"fastest_addr": "Alamat IP tercepat",
"fastest_addr_desc": "Permintaan semua server DNS dan kembalinya alamat IP tercepat di antara semua respons",
"autofix_warning_text": "Apabila anda menekan \"Perbaiki\", AdGuardHome akan mengatur sistem anda untuk menggunakan server DNS AdGuardHome.",
"autofix_warning_result": "Hasilnya, semua permintaan DNS dari sistem anda akan diproses oleh AdGuardHome secara standar.",
"check_ip": "Alamat IP: {{ip}}",
"check_cname": "CNAME: {{cname}}",
"check_reason": "Alasan: {{reason}}",
"check_rule": "Aturan: {{rule}}",
"check_service": "Nama layanan: {{service}}",
"check_not_found": "Tidak di temukan di daftar penyaringan anda",
"client_confirm_block": "Apa anda yakin ingin mem-blokir klien ini \"{{ip}}\"?",
"client_confirm_unblock": "Apa anda yakin ingin meng-unblock klien ini \"{{ip}}\"?",
"client_blocked": "Klien \"{{ip}}\" sukses di blokir",
"client_unblocked": "Klien \"{{ip}}\" sukses di unblock",
"static_ip": "Alamat IP statis",
"validated_with_dnssec": "Tervalidasi dengan DNSSEC",
"show_blocked_responses": "Diblokir",
"show_whitelisted_responses": "Dalam Daftar Putih",
"show_processed_responses": "Terproses",
"safe_search": "Pencarian aman",
"blocklist": "Daftar blokir",
"milliseconds_abbreviation": "ms"
}

View File

@@ -0,0 +1,563 @@
{
"client_settings": "Impostazioni client",
"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",
"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_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",
"save_config": "Salva configurazione",
"enabled_dhcp": "Server DHCP abilitato",
"disabled_dhcp": "Server DHCP disabilitato",
"dhcp_title": "Server DHCP",
"dhcp_description": "Se il tuo router non supporta la configurazione delle impostazioni del DHCP puoi usare il server DHCP incluso in AdGuard.",
"dhcp_enable": "Abilita server DHCP",
"dhcp_disable": "Disabilita server DHCP",
"dhcp_not_found": "Nessun server DHCP attivo trovato nella rete. Puoi attivare il server DHCP built-in senza problemi.",
"dhcp_found": "Trovati server DHCP attivi nella rete. Non è consigliato attivare il server DHCP built-in",
"dhcp_leases": "Leases DHCP",
"dhcp_static_leases": "Leases DHCP statici",
"dhcp_leases_not_found": "Nessun lease DHCP trovato",
"dhcp_config_saved": "Configurazione server DHCP salvata",
"form_error_required": "Campo richiesto",
"form_error_ip4_format": "Formato IPv4 non valido",
"form_error_ip6_format": "Formato IPv6 non valido",
"form_error_ip_format": "Formato IPv4 non valido",
"form_error_mac_format": "Formato MAC non valido",
"form_error_client_id_format": "Formato ID cliente non valido",
"form_error_positive": "Deve essere maggiore di 0",
"form_error_negative": "Deve essere maggiore o uguale a 0 (zero)",
"dhcp_form_gateway_input": "IP Gateway",
"dhcp_form_subnet_input": "Subnet mask",
"dhcp_form_range_title": "Range indirizzi IP",
"dhcp_form_range_start": "Inizio range",
"dhcp_form_range_end": "Fine range",
"dhcp_form_lease_title": "Tempo di lease DHCP (in secondi)",
"dhcp_form_lease_input": "Durata lease",
"dhcp_interface_select": "Seleziona l'interfaccia DHCP",
"dhcp_hardware_address": "Indirizzo hardware",
"dhcp_ip_addresses": "Indirizzi IP",
"ip": "IP",
"dhcp_table_hostname": "Nome host",
"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_error": "Impossibile determinare se è presente un altro server DHCP nella rete.",
"dhcp_static_ip_error": "Pe rutilizzare un server DHCP, bisogna impostare un indirizzo IP statico. Non siamo riusciti a determinare se questa interfaccia di rete sia configurata per utilizzare un indirizzo IP statico. Per favore impostare un indirizzo IP statico manualmente.",
"dhcp_dynamic_ip_found": "Il tuo sistema utilizza indirizzi IP dinamici per questa interfaccia <0>{{interfaceName}}</0>. Per utilizzare un server DHCP bisogna impostare un indirizzo IP statico. Il tuo indirizzo attuale è <0>{{ipAddress}}</0>. Imposteremo automaticamente questo indirizzo come statico premendo il pulsante Abilita DHCP",
"dhcp_lease_added": "Lease statici \"{{key}}\" aggiunti correttamente",
"dhcp_lease_deleted": "Lease statico \"{{key}}\" eliminato correttamente",
"dhcp_new_static_lease": "Nuovo lease statico",
"dhcp_static_leases_not_found": "Non è stato trovato nessun leases statico DHCP",
"dhcp_add_static_lease": "Aggiungi lease statico",
"dhcp_reset": "Sei sicuro di voler ripristinare la configurazione DHCP?",
"country": "Regione",
"city": "Città",
"delete_confirm": "Sei sicuro di voler cancellare \"{{key}}\"?",
"form_enter_hostname": "Inserisci hostname",
"error_details": "Dettagli errore",
"response_details": "Dettagli di Risposta",
"request_details": "Dettagli della richiesta",
"client_details": "Dettagli client",
"details": "Dettagli",
"back": "Indietro",
"dashboard": "Cruscotto",
"settings": "Impostazioni",
"filters": "Filtri",
"filter": "Filtro",
"query_log": "Query Log",
"compact": "Compatto",
"nothing_found": "Non è stato trovato nulla",
"faq": "FAQ",
"version": "versione",
"address": "Indirizzo",
"protocol": "Protocollo",
"on": "ATTIVO",
"off": "DISATTIVATO",
"copyright": "Copyright",
"homepage": "Pagina iniziale",
"report_an_issue": "Segnala un problema",
"privacy_policy": "Politica sulla privacy",
"enable_protection": "Abilita protezione",
"enabled_protection": "Protezione abilitata",
"disable_protection": "Disabilita protezione",
"disabled_protection": "Protezione disabilitata",
"refresh_statics": "Aggiorna statistiche",
"dns_query": "Query DNS",
"blocked_by": "<0>Bloccato dai Filtri</0>",
"stats_malware_phishing": "Malware/phishing bloccati",
"stats_adult": "Siti per adulti bloccati",
"stats_query_domain": "Domini maggiormente richiesti",
"for_last_24_hours": "nelle ultime 24 ore",
"for_last_days": "per gli ultimi {{count}} giorni",
"for_last_days_plural": "per gli ultimi {{count}} giorni",
"no_domains_found": "Nessun dominio trovato",
"requests_count": "Numero richieste",
"top_blocked_domains": "Domini maggiormente bloccati",
"top_clients": "Client più utilizzati",
"no_clients_found": "Nessun client trovato",
"general_statistics": "Statistiche generali",
"number_of_dns_query_days": "Numero delle query DNS elaborate negli ultimi {{count}} giorni",
"number_of_dns_query_days_plural": "Numero delle query DNS elaborate negli ultimi {{count}} giorni",
"number_of_dns_query_24_hours": "Numero di query DNS elaborate nelle ultime 24 ore",
"number_of_dns_query_blocked_24_hours": "Numero di richieste DNS bloccate dai filtri adblock e dalle liste di host bloccati",
"number_of_dns_query_blocked_24_hours_by_sec": "Numero di richieste DNS bloccate dal modulo AdGuard browsing security",
"number_of_dns_query_blocked_24_hours_adult": "Numero di siti per adulti bloccati",
"enforced_save_search": "Ricerca sicura forzata",
"number_of_dns_query_to_safe_search": "Numero di richieste DNS dai motori di ricerca per i quali la Ricerca Sicura è stata forzata",
"average_processing_time": "Tempo di elaborazione medio",
"average_processing_time_hint": "Tempo medio in millisecondi per elaborare una richiesta DNS",
"block_domain_use_filters_and_hosts": "Blocca domini utilizzando filtri e file hosts",
"filters_block_toggle_hint": "Puoi impostare le regole di blocco nelle impostazioni dei <a href='#filters'>Filtri</a>.",
"use_adguard_browsing_sec": "Usa il servizio AdGuard Browsing Security",
"use_adguard_browsing_sec_hint": "AdGuard Home controllerà se il dominio è stato bloccato dal servizio web browsing security. Per eseguire il controllo userà delle API privacy-friendly: verrà inviato al server solo un breve prefisso dell'hash SHA256 del nome del dominio.",
"use_adguard_parental": "Usa il servizio parental control di AdGuard",
"use_adguard_parental_hint": "AdGuard Home controllerà se il dominio contiene materiale per adulti. Usa le stesse API privacy-friendly del servizio web browsing security.",
"enforce_safe_search": "Forza ricerca sicura",
"enforce_save_search_hint": "AdGuard Home può forzare la ricerca sicura sui seguenti motori di ricerca: Google, YouTube, Bing e Yandex",
"no_servers_specified": "Nessun server specificato",
"general_settings": "Impostazioni generali",
"dns_settings": "Impostazioni DNS",
"dns_blocklists": "Lista di blocco DNS",
"dns_allowlists": "Lista DNS consentiti",
"dns_blocklists_desc": "AdGuard Home bloccherà i domini che corrispondenti alla lista di blocco.",
"dns_allowlists_desc": "I domini DNS consentiti saranno consentiti anche se sono nella lista di blocco.",
"custom_filtering_rules": "Regole filtri personalizzati",
"encryption_settings": "Impostazioni di criptazione",
"dhcp_settings": "Impostazioni DHCP",
"upstream_dns": "Server DNS upstream",
"upstream_dns_hint": "Se lasci vuoto questo campo, AdGuard Home imposterà i <a href='https://1.1.1.1/' target='_blank'>DNS di Cloudflare</a> come upstream. Inserisci il prefisso tls:// per i server con DNS over TLS",
"test_upstream_btn": "Testa gli upstream",
"upstreams": "Upstream",
"apply_btn": "Applica",
"disabled_filtering_toast": "Disabilita filtri",
"enabled_filtering_toast": "Abilita filtri",
"disabled_safe_browsing_toast": "Disabilita navigazione sicura",
"enabled_safe_browsing_toast": "Abilita navigazione sicura",
"disabled_parental_toast": "Disabilita il filtro famiglia",
"enabled_parental_toast": "Abilita il filtro famiglia",
"disabled_safe_search_toast": "Disabilita Ricerca Sicura",
"enabled_save_search_toast": "Abilita Ricerca Sicura",
"enabled_table_header": "Attivo",
"name_table_header": "Nome",
"list_url_table_header": "Elenco URL",
"rules_count_table_header": "Numero regole",
"last_time_updated_table_header": "Ultimo aggiornamento",
"actions_table_header": "Azioni",
"request_table_header": "Richiesta",
"edit_table_action": "Modifica",
"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",
"no_blocklist_added": "Non è stata aggiunta alcuna lista di blocco",
"no_whitelist_added": "Non è stata aggiunta alcuna lista dei consentiti",
"add_blocklist": "Aggiungi lista di blocco",
"add_allowlist": "Aggiungi lista dei consentiti",
"cancel_btn": "Annulla",
"enter_name_hint": "Inserisci nome",
"enter_url_or_path_hint": "Inmetti un URL o il percorso assoluto della lista",
"check_updates_btn": "Controlla aggiornamenti",
"new_blocklist": "Nuova lista di blocco",
"new_allowlist": "Nuova lista dei consentiti",
"edit_blocklist": "Modifica lista di blocco",
"edit_allowlist": "Modifica lista dei consentiti",
"choose_blocklist": "Scegli liste di blocco",
"choose_allowlist": "Scegli liste di autorizzazione",
"enter_valid_blocklist": "Inserisci un URL valido nella lista di blocco.",
"enter_valid_allowlist": "Inserisci un URL valido nella lista dei consentiti.",
"form_error_url_format": "Formato url non valido",
"form_error_url_or_path_format": "URL o percorso assoluto della lista non valido",
"custom_filter_rules": "Regole filtri personalizzate",
"custom_filter_rules_hint": "Inserisci una regola per riga. Puoi usare la sintassi delle regole di adblock o quelle dei file hosts.",
"examples_title": "Esempi",
"example_meaning_filter_block": "blocca accesso al dominio example.org e a tutti i suoi sottodomini",
"example_meaning_filter_whitelist": "permette l'accesso al dominio example.org e a tutti i suoi sottodimini",
"example_meaning_host_block": "AdGuard Home restituirà 127.0.0.1 come indirizzo per il dominio example.org (ma non per i suoi sottodomini)",
"example_comment": "! Qui va un commento",
"example_comment_meaning": "un commento",
"example_comment_hash": "# Un altro commento",
"example_regex_meaning": "blocca l'accesso ai domini che corrispondono alla specifica espressione regolare",
"example_upstream_regular": "DNS regolari (via UDP)",
"example_upstream_dot": "<0>DNS_over_TLS</0> crittografato",
"example_upstream_doh": "<0>DNS-over-HTTPS</0> crittografato",
"example_upstream_sdns": "puoi usare <0>DNS Stamps</0> per <1>DNSCrypt</1> oppure dei resolver con <2>DNS-over-HTTPS</2>",
"example_upstream_tcp": "DNS regolari (via TCP)",
"all_lists_up_to_date_toast": "Tutte le liste sono aggiornate",
"updated_upstream_dns_toast": "Server DNS upstream aggiornati",
"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",
"unblock": "Sblocca",
"block": "Blocca",
"time_table_header": "Ora",
"date": "Data",
"domain_name_table_header": "Nome dominio",
"domain_or_client": "Dominio o client",
"type_table_header": "Tipo",
"response_table_header": "Risposta",
"response_code": "Codice di risposta",
"client_table_header": "Client",
"empty_response_status": "Vuoto",
"show_all_filter_type": "Mostra tutti",
"show_filtered_type": "Mostra filtrati",
"no_logs_found": "Nessun log trovato",
"refresh_btn": "Aggiorna",
"previous_btn": "Precedente",
"next_btn": "Successivo",
"loading_table_status": "Caricamento...",
"page_table_footer_text": "Pagina",
"rows_table_footer_text": "righe",
"updated_custom_filtering_toast": "Le regole dei filtri personalizzate sono state aggiornate",
"rule_removed_from_custom_filtering_toast": "Regola rimossa dalle regole dei filtri personalizzate",
"rule_added_to_custom_filtering_toast": "Regola aggiunta alle regole dei filtri personalizzate",
"query_log_response_status": "Status: {{value}}",
"query_log_filtered": "Filtrato da {{filter}}",
"query_log_confirm_clear": "Sei sicuro di voler eliminare la query log?",
"query_log_cleared": "La query log è stata cancellata correttamente",
"query_log_updated": "Il log query è stato aggiornato con successo",
"query_log_clear": "Cancella query logs",
"query_log_retention": "Ritenzione query logs",
"query_log_enable": "Abilita log",
"query_log_configuration": "Configurazione logs",
"query_log_disabled": "La query log è stata disabilitata e può essere configurata nel <0>impostazioni</0>",
"query_log_strict_search": "Utilizzare le virgolette doppie per la ricerca rigorosa",
"query_log_retention_confirm": "Sei sicuro di voler modificare il registro di query? Se si diminuisce il valore di intervallo, alcuni dati saranno persi",
"anonymize_client_ip": "Anonimizza client IP",
"anonymize_client_ip_desc": "Non salvare l'indirizzo IP completo del client nei log e nelle statistiche",
"dns_config": "Configurazione server DNS",
"dns_cache_config": "Configurazione cache DNS",
"dns_cache_config_desc": "Qui puoi configurare la cache DNS",
"blocking_mode": "Modalità di blocco",
"default": "Predefinito",
"nxdomain": "NXDOMAIN",
"null_ip": "Nessun IP",
"custom_ip": "IP personalizzato",
"blocking_ipv4": "Blocca IPv4",
"blocking_ipv6": "Blocca IPv6",
"dns_over_https": "DNS-over-HTTPS",
"dns_over_tls": "DNS-over-TLS",
"plain_dns": "DNS semplice",
"form_enter_rate_limit": "Imposta limite delle richieste",
"rate_limit": "Limite delle richieste",
"edns_enable": "Abilita client di sottorete EDNS",
"edns_cs_desc": "Se abilitato, AdGuard Home invierà le sottoreti cdei client ai server DNS.",
"rate_limit_desc": "Il numero di richieste al secondo chheun singolo client può fare (0: illimitato)",
"blocking_ipv4_desc": "Indirizzo IP per una richiesta DNS IPv4 bloccata",
"blocking_ipv6_desc": "Indirizzo IP restituito per una richiesta DNS IPv6 bloccata",
"blocking_mode_default": "Predefinito: Rispondi con NXDOMAIN quando bloccato da una regola di Adblock; rispondi con l'indirizzo IP specificato nella regola quando bloccato dalla regola / etc / hosts-style",
"blocking_mode_nxdomain": "NXDOMAIN: Rispondi con il codice NXDOMAIN",
"blocking_mode_null_ip": "IP nullo: Rispondi con indirizzo IP zero (0.0.0.0 per A; :: per AAAA)",
"blocking_mode_custom_ip": "IP personalizzato: Rispondi con un indirizzo IP impostato manualmente",
"upstream_dns_client_desc": "Se lasci questo spazio vuoto, AdGuard Home utilizzerà i server configurati nelle <0>impostazioni DNS</0>.",
"tracker_source": "Origine tracker",
"source_label": "Fonte",
"found_in_known_domain_db": "Trovato nel database dei domini conosciuti.",
"category_label": "Categoria",
"rule_label": "Regola",
"list_label": "Lista",
"unknown_filter": "Filtro sconosciuto {{filterId}}",
"known_tracker": "Tracker conosciuto",
"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_settings_title": "Interfaccia Web dell'Admin",
"install_settings_listen": "Interfaccia d'ascolto",
"install_settings_port": "Porta",
"install_settings_interface_link": "La tua interfaccia web di amministrazione di AdGuard Home sarà disponibile ai seguenti indirizzi:",
"form_error_port": "Immettere un valore di porta valido",
"install_settings_dns": "Server DNS",
"install_settings_dns_desc": "Sarà necessario configurare i dispositivi o il router per utilizzare il server DNS nei seguenti indirizzi:",
"install_settings_all_interfaces": "Tutte le interfacce",
"install_auth_title": "Autenticazione",
"install_auth_desc": "Si consiglia vivamente di configurare l'autenticazione della password per l'interfaccia web di amministrazione di AdGuard Home. Anche se è accessibile solo nella rete locale, è comunque importante proteggerlo da accessi illimitati.",
"install_auth_username": "Nome utente",
"install_auth_password": "Password",
"install_auth_confirm": "Conferma password",
"install_auth_username_enter": "Inserisci nome utente",
"install_auth_password_enter": "Inserisci password",
"install_step": "Passo",
"install_devices_title": "Configura i tuoi dispositivi",
"install_devices_desc": "Affinché AdGuard Home inizi a funzionare, è necessario configurare i dispositivi per utilizzarlo.",
"install_submit_title": "Congratulazioni!",
"install_submit_desc": "La procedura di configurazione è terminata e sei pronto per iniziare a utilizzare AdGuard Home.",
"install_devices_router": "Router",
"install_devices_router_desc": "Questa configurazione coprirà automaticamente tutti i dispositivi collegati al router di casa e non sarà necessario configurarli manualmente.",
"install_devices_address": "Il server DNS di AdGuard Home sta ascoltando sui seguenti indirizzi",
"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_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 <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_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_4": "Seleziona la tua connessione attiva, fai clic destro su di essa e scegli Proprietà.",
"install_devices_windows_list_5": "Trova Protocollo Internet versione 4 (TCP / IP) nell'elenco, selezionalo e quindi fai nuovamente clic su Proprietà.",
"install_devices_windows_list_6": "Scegli Usa i seguenti indirizzi del server DNS e inserisci gli indirizzi del tuo server AdGuard Home.",
"install_devices_macos_list_1": "Fai clic sull'icona Apple e vai su Preferenze di Sistema.",
"install_devices_macos_list_2": "Clicca sulla rete.",
"install_devices_macos_list_3": "Seleziona la prima connessione nel tuo elenco e fai clic su Avanzate.",
"install_devices_macos_list_4": "Seleziona la scheda DNS e inserisci gli indirizzi del tuo server AdGuard Home",
"install_devices_android_list_1": "Dalla schermata Home Menu di Android, tocca Impostazioni.",
"install_devices_android_list_2": "Tocca Wi-Fi nel menu. Verrà visualizzata la schermata che elenca tutte le reti disponibili (impossibile impostare il DNS personalizzato per la connessione mobile).",
"install_devices_android_list_3": "Premi a lungo la rete a cui sei connesso e tocca Modifica rete.",
"install_devices_android_list_4": "Su alcuni dispositivi, potrebbe essere necessario selezionare la casella Avanzate per visualizzare ulteriori impostazioni. Per regolare le impostazioni del tuo DNS Android, dovrai cambiare le impostazioni IP da DHCP a Statico.",
"install_devices_android_list_5": "Cambia i valori DNS 1 e DNS 2 negli indirizzi del tuo server AdGuard Home.",
"install_devices_ios_list_1": "Dalla schermata principale, tocca Impostazioni.",
"install_devices_ios_list_2": "Scegli Wi-Fi nel menu a sinistra (impossibile configurare DNS per reti mobili).",
"install_devices_ios_list_3": "Toccare il nome della rete attualmente attiva.",
"install_devices_ios_list_4": "Nel campo DNS inserisci gli indirizzi del tuo server AdGuard Home.",
"get_started": "Inizia",
"next": "Prossimo",
"open_dashboard": "Apri pannello di controllo",
"install_saved": "Salvataggio riuscito con successo",
"encryption_title": "crittografia",
"encryption_desc": "Supporto di crittografia (HTTPS / TLS) per interfaccia web sia di DNS che di amministrazione",
"encryption_config_saved": "Configurazione della crittografia salvata",
"encryption_server": "Nome server",
"encryption_server_enter": "Inserisci il tuo nome di dominio",
"encryption_server_desc": "Per utilizzare HTTPS, è necessario inserire il nome del server che corrisponde al certificato SSL.",
"encryption_redirect": "Reindirizza automaticamente a HTTPS",
"encryption_redirect_desc": "Se selezionato, AdGuard Home ti reindirizzerà automaticamente da indirizzi HTTP a HTTPS.",
"encryption_https": "Porta HTTPS",
"encryption_https_desc": "Se la porta HTTPS è configurata, l'interfaccia di amministrazione di AdGuard Home sarà accessibile tramite HTTPS e fornirà anche DNS-over-HTTPS nella posizione \"/ dns-query\".",
"encryption_dot": "DNS-su porta-TLS",
"encryption_dot_desc": "Se questa porta è configurata, AdGuard Home eseguirà un server DNS-over-TLS su questa porta.",
"encryption_certificates": "Certificati",
"encryption_certificates_desc": "Per utilizzare la crittografia, è necessario fornire una catena di certificati SSL valida per il proprio dominio. Puoi ottenere un certificato gratuito su <0> {{link}} </ 0> o puoi acquistarlo da una delle Autorità di certificazione attendibili.",
"encryption_certificates_input": "Copia / incolla qui i certificati codificati PEM.",
"encryption_status": "Stato",
"encryption_expire": "Scaduto",
"encryption_key": "Chiave privata",
"encryption_key_input": "Copia / incolla qui la tua chiave privata codificata PEM del tuo certificato.",
"encryption_enable": "Abilita crittografia (HTTPS, DNS-su-HTTPS e DNS-su-TLS)",
"encryption_enable_desc": "Se la crittografia è abilitata, l'interfaccia di amministrazione di AdGuard Home funzionerà su HTTPS e il server DNS ascolterà le richieste su DNS-over-HTTPS e DNS-over-TLS.",
"encryption_chain_valid": "La catena di certificati è valida",
"encryption_chain_invalid": "La catena di certificati non è valida",
"encryption_key_valid": "Questa è una chiave privata {{type}} valida",
"encryption_key_invalid": "Questa è una chiave privata {{type}} non valida",
"encryption_subject": "Soggetto",
"encryption_issuer": "Emittente",
"encryption_hostnames": "Nomi host",
"encryption_reset": "Sei sicuro di voler ripristinare le impostazioni di crittografia?",
"topline_expiring_certificate": "Il tuo certificato SSL sta per scadere. Aggiorna le<0> Impostazioni di crittografia </ 0>.",
"topline_expired_certificate": "Il tuo certificato SSL è scaduto. Aggiorna le <0> Impostazioni di crittografia </ 0>.",
"form_error_port_range": "Immettere il valore della porta nell'intervallo 80-65535",
"form_error_port_unsafe": "Questa è una porta non sicura",
"form_error_equal": "Non dovrebbe essere uguale",
"form_error_password": "Password non corrispondente",
"reset_settings": "Reimposta impostazioni",
"update_announcement": "AdGuard Home {{version}} è ora disponibile! <0>Clicca qui</0> per più informazioni.",
"setup_guide": "Configurazione guidata",
"dns_addresses": "Indirizzo DNS",
"dns_start": "Il server DNS si sta avviando",
"dns_status_error": "Errore nel recupero dello stato del server DNS",
"down": "Spenta",
"fix": "Risolvi",
"dns_providers": "Qui c'è una <0>list di provider DNS</0> da cui scegliere",
"update_now": "Aggiorna ora",
"update_failed": "L' auto aggiornamento è fallito. Perfavore <a href='https://github.com/AdguardTeam/AdGuardHome/wiki/Getting-Started#update'>segui questi passi</a>per aggiornare manualmente.",
"processing_update": "Perfavore aspetta, AdGuard Home si sta aggiornando",
"clients_title": "Client",
"clients_desc": "Configura i dispositivi connessi ad AdGuard Home",
"settings_global": "Globale",
"settings_custom": "Personalizzato",
"table_client": "Client",
"table_name": "Nome",
"save_btn": "Salva",
"client_add": "Aggiungi Client",
"client_new": "Nuovo Client",
"client_edit": "Modifica Client",
"client_identifier": "Identificatore",
"ip_address": "Indirizzo IP",
"client_identifier_desc": "I client possono essere identificati dall indirizzo IP o dall' indirizzo MAC. Nota che l' utilizzo dell' indirizzo MAC come identificatore è consentito solo se AdGuard Home è anche il <0>server DHCP</0>",
"form_enter_ip": "Inserisci IP",
"form_enter_mac": "Inserisci MAC",
"form_enter_id": "Inserisci identificatore",
"form_add_id": "Aggiungi identificatore",
"form_client_name": "Inserisci nome client",
"name": "Nome",
"client_global_settings": "Usa le impostazioni globali",
"client_deleted": "Client \"{{key}}\" eliminato correttamente",
"client_added": "Client \"{{key}}\" aggiunto correttamente",
"client_updated": "Client \"{{key}}\" aggiornato correttamente",
"clients_not_found": "Nessun client trovato",
"client_confirm_delete": "Sei sicuro di voler eliminare il client \"{{key}}\"?",
"list_confirm_delete": "Sei sicuro di voler eliminare questa lista?",
"auto_clients_title": "Clienti (tempo di esecuzione)",
"auto_clients_desc": "Dati dei clienti che utilizzano AdGuard Home, ma che non sono salvati nella configurazione",
"access_title": "Impostazioni di accesso",
"access_desc": "Qui puoi configurare le regole d'accesso per il server DNS di AdGuard Home.",
"access_allowed_title": "Client permessi",
"access_allowed_desc": "Una lista in CIDR o indirizzi IP. Se configurata AdGuard Home accetterà richieste solo da questi indirizzi ip.",
"access_disallowed_title": "Client non permessi",
"access_disallowed_desc": "Una lista in CIDR o indirizzi IP. Se configurata AdGuard Home non accetterà richieste da questi indirizzi ip.",
"access_blocked_title": "Domini bloccati",
"access_blocked_desc": "Non confondere questi elementi con i filtri. AdGuard Home eliminerà le query DNS con questi domini nell'elaborazione della query.",
"access_settings_saved": "Impostazioni di accesso salvate correttamente",
"updates_checked": "Aggiornamenti controllati con successo",
"updates_version_equal": "AdGuard Home è aggiornato",
"check_updates_now": "Controlla aggiornamenti adesso",
"dns_privacy": "Privacy DNS",
"setup_dns_privacy_1": "<0>DNS-over-TLS:</0> Utilizza la stringa <1>{{address}}</1>.",
"setup_dns_privacy_2": "<0>DNS-over-HTTPS:</0> Utilizza la stringa <1>{{address}}</1>.",
"setup_dns_privacy_3": "<0>Nota che i protocolli DNS crittografati sono supportati solo su Android 9. Quindi è necessario installare software aggiuntivo per altri sistemi operativi.</0><0>Ecco un elenco di software che è possibile utilizzare.</0>",
"setup_dns_privacy_android_1": "Android 9 supporta DNS-over-TLS in modo nativo. Per configurarlo, vai su Impostazioni → Rete e Internet → Avanzate → DNS privato e inserisci qui il tuo nome di dominio.",
"setup_dns_privacy_android_2": "<0>AdGuard per Android</0> supporta <1>DNS-over-HTTPS</1> e <1>DNS-over-TLS</1>.",
"setup_dns_privacy_android_3": "<0>Intra</0> aggiunge <1>DNS-over-HTTPS</1> il supporto ad Android.",
"setup_dns_privacy_ios_1": "<0>DNSCloak</0> supporta <1>DNS-over-HTTPS</1>, ma per configurarlo per l'utilizzo del proprio server, è necessario generare un <2> DNS Stamp</2> apposito.",
"setup_dns_privacy_ios_2": "<0>AdGuard per iOS</0>supporta l'impostazione <1>DNS-over-HTTPS</1> e <1>DNS-over-TLS</1>.",
"setup_dns_privacy_other_title": "Altre implementazion",
"setup_dns_privacy_other_1": "AdGuard Home può essere un client DNS sicuro su qualsiasi piattaforma.",
"setup_dns_privacy_other_2": "<0>dnsproxy</0> supporta tutti i protocolli DNS sicuri noti.",
"setup_dns_privacy_other_3": "<0>dnscrypt-proxy</0> supporta <1>DNS-over-HTTPS</1>.",
"setup_dns_privacy_other_4": "<0>Mozilla Firefox</0> supporta <1>DNS-over-HTTPS</1>.",
"setup_dns_privacy_other_5": "Troverai più implementazioni <0>qui</0> e <1>qui</1>.",
"setup_dns_notice": "Per utilizzare <1>DNS-over-HTTPS</1> o <1>DNS-over-TLS</1>, è necessario <0>configurare la crittografia</0> nelle impostazioni di AdGuard Home.",
"rewrite_added": "Riscrittura DNS per \"{{key}}\" aggiunta correttamente",
"rewrite_deleted": "La riscrittura DNS per \"{{key}}\" è stata eliminata correttamente",
"rewrite_add": "Aggiungi la riscrittura DNS",
"rewrite_not_found": "Nessuna riscrittura DNS trovata",
"rewrite_confirm_delete": "Sei sicuro di voler cancellare la riscrittura DNS per \"{{key}}\"?",
"rewrite_desc": "Consente di configurare facilmente la risposta DNS personalizzata per un nome di dominio specifico.",
"rewrite_applied": "Regola di riscrittura applicata",
"rewrite_hosts_applied": "Riscritto dal file delle regole host",
"dns_rewrites": "Riscrittura DNS",
"form_domain": "Inserisci il dominio",
"form_answer": "Inserisci l'indirizzo IP o il nome del dominio",
"form_error_domain_format": "Formato del dominio non valido",
"form_error_answer_format": "Formato di risposta non valido",
"configure": "Configura",
"main_settings": "Impostazioni principali",
"block_services": "Blocca servizi specifici",
"blocked_services": "Servizi bloccati",
"blocked_services_desc": "Consente di bloccare rapidamente siti e servizi popolari.",
"blocked_services_saved": "Servizi bloccati salvati correttamente",
"blocked_services_global": "Utilizza le servizi globali bloccati",
"blocked_service": "Servizio bloccato",
"block_all": "Blocca tutto",
"unblock_all": "Sblocca tutto",
"encryption_certificate_path": "Percorso di certificato",
"encryption_private_key_path": "Percorso della chiave privata",
"encryption_certificates_source_path": "Definisci un percorso alle file dei certificati",
"encryption_certificates_source_content": "Incolla i contenuti di certificato",
"encryption_key_source_path": "Imposta un file chiave privata",
"encryption_key_source_content": "Incolla i contenuti della chiave privata",
"stats_params": "Configurazione delle statistiche",
"config_successfully_saved": "Configurazione salvata correttamente",
"interval_24_hour": "24 ore",
"interval_days": "{{count}} giorni",
"interval_days_plural": "{{count}} giorni",
"domain": "Dominio",
"answer": "Risposta",
"filter_added_successfully": "Il filtro è stato aggiunto correttamente",
"filter_removed_successfully": "La lista è stata correttamente rimossa",
"filter_updated": "Il filtro è stato aggiornato correttamente",
"statistics_configuration": "Configurazione delle statistiche",
"statistics_retention": "Conservazione statistiche",
"statistics_retention_desc": "Se si diminuisce il valore di intervallo, alcuni dati saranno persi",
"statistics_clear": " Azzera statistiche",
"statistics_clear_confirm": "Sei sicuro di voler azzerare le statistiche?",
"statistics_retention_confirm": "Sei sicuro di modificare la conservazione statistiche? Se si diminuisce il valore di intervallo, alcuni dati saranno persi",
"statistics_cleared": "Statistiche azzerate correttamente",
"interval_hours": "{{count}} ora",
"interval_hours_plural": "{{count}} ore",
"filters_configuration": "Configurazione filtri",
"filters_enable": "Abilita i filtri",
"filters_interval": "Intervallo aggiornamento filtri",
"disabled": "Disabilitato",
"username_label": "Nome utente",
"username_placeholder": "Inserisci nome utente",
"password_label": "Password",
"password_placeholder": "Inserisci password",
"sign_in": "Accedi",
"sign_out": "Esci",
"forgot_password": "Hai perso la password?",
"forgot_password_desc": "Per favore segui <0>questi punti</0> per creare una nuova password per il tuo account.",
"location": "Locazione",
"orgname": "Nome dell'organizzazione",
"netname": "Nome Network",
"network": "Rete",
"descr": "Descrizione",
"whois": "Chi è",
"filtering_rules_learn_more": "<0>Leggi altro</0> su come creare i tuoi host blacklist.",
"blocked_by_response": "Bloccato per CNAME o IP in risposta",
"try_again": "Riprova",
"domain_desc": "Inserire il nome di dominio o carattere jolly che si vuole riscrivere.",
"example_rewrite_domain": "riscrivi risposte per questo dominio soltanto.",
"example_rewrite_wildcard": "riscrivi risposte per tutti i sottodomini di <0>esempio.org</0>.",
"rewrite_ip_address": "Indirizzo IP: utilizza questo IP in una risposta A o AAAA",
"rewrite_domain_name": "Nome dominio: aggiungi una registrazione CNAME",
"rewrite_A": "<0>A</0>: valore speciale, mantieni registrazioni <0>A</0> dall'upstream",
"rewrite_AAAA": "<0>AAAA</0>: valore speciale, mantieni registrazioni <0>AAAA</0> dall'upstream",
"disable_ipv6": "Disabilita IPv6",
"disable_ipv6_desc": "Se questa funzione è abilitata, tutte le query DNS per gli indirizzi IPv6 (tipo AAAA) verranno eliminate.",
"fastest_addr": "Indirizzo IP più veloce",
"fastest_addr_desc": "Interroga tutti i server DNS ed ottieni l'indirizzo IP più veloce tra tutte le risposte",
"autofix_warning_text": "Se fai clic su \"Correggi\", AdGuardHome configurerà il tuo sistema per utilizzare il server DNS AdGuardHome.",
"autofix_warning_list": "Eseguirà queste attività: <0> Disattiva DNSStubListener di sistema </0> <0> Imposta l'indirizzo del server DNS su 127.0.0.1 </0> <0> Sostituisci la destinazione del collegamento simbolico di /etc/resolv.conf su / run / systemd /resolve/resolv.conf </0> <0> Arresta DNSStubListener (ricarica il servizio systemd-resolved) </0>",
"autofix_warning_result": "Di conseguenza, tutte le richieste DNS dal sistema verranno elaborate da AdGuardHome per impostazione predefinita.",
"tags_title": "Tag",
"tags_desc": "È possibile selezionare i tag che corrispondono al client. I tag possono essere inclusi nelle regole dei filtri e consentono di applicarli in modo più accurato. <0> Ulteriori informazioni </0>",
"form_select_tags": "Seleziona i tag client",
"check_title": "Controlla il filtro",
"check_desc": "Controlla se il nome host è filtrato",
"check": "Controlla",
"form_enter_host": "Inserisci un nome per l'host",
"filtered_custom_rules": "Filtrato dalle regole filtro personalizzate",
"choose_from_list": "Scegli dalla lista",
"add_custom_list": "Aggiungi lista personalizzata",
"host_whitelisted": "L'host è presente nella whitelist",
"check_ip": "Indirizzi IP: {{ip}}",
"check_cname": "CNAME: {{cname}}",
"check_reason": "Motivo: {{reason}}",
"check_rule": "Regola: {{rule}}",
"check_service": "Nome servizio: {{service}}",
"check_not_found": "Non trovato negli elenchi dei filtri",
"client_confirm_block": "Sei sicuro di voler bloccare il client \"{{ip}}\"?",
"client_confirm_unblock": "Sei sicuro di voler sbloccare il client \"{{ip}}\"?",
"client_blocked": "Client \"{{ip}}\" bloccato correttamente",
"client_unblocked": "Client \"{{ip}}\" sbloccato correttamente",
"static_ip": "Indirizzo IP statico",
"static_ip_desc": "AdGuard Home è un server quindi ha bisogno di un indirizzo IP statico per funzionare correttamente. Altrimenti, a un certo punto, il router potrebbe assegnare un indirizzo IP diverso a questo dispositivo.",
"set_static_ip": "Imposta un indirizzo IP statico",
"install_static_ok": "Buone notizie! L'indirizzo IP statico è già configurato",
"install_static_error": "AdGuard Home non può configurarlo automaticamente per questa interfaccia di rete. Si prega di cercare un'istruzione su come farlo manualmente.",
"install_static_configure": "Abbiamo rilevato che viene utilizzato un indirizzo IP dinamico - <0> {{ip}} </0>. Vuoi usarlo come indirizzo statico?",
"confirm_static_ip": "AdGuard Home configurerà {{ip}} come indirizzo IP statico. Vuoi procedere?",
"list_updated": "{{count}} lista aggiornata",
"list_updated_plural": "{{count}} liste aggiornate",
"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)",
"validated_with_dnssec": "Verificato con DNSSEC",
"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",
"cache_size": "Dimensioni cache",
"cache_size_desc": "Dimensioni cache DNS (in byte)",
"cache_ttl_min_override": "Sovrascrivi TTL minimo",
"cache_ttl_max_override": "Sovrascrivi TTL massimo",
"enter_cache_size": "Immetti dimensioni cache",
"enter_cache_ttl_min_override": "Immetti TTL minimo",
"enter_cache_ttl_max_override": "Immetti TTL massimo",
"cache_ttl_min_override_desc": "Sovrascrivi valore TTL (minimo) ricevuto dall'upstream del server. Questo valore non può superare 3600 (1 ora)",
"cache_ttl_max_override_desc": "Sovrascrivi valore TTL (massimo) ricevuto dall'upstream del server",
"min_exceeds_max_value": "Il valore minimo eccede quello massimo",
"value_not_larger_than": "Il valore non può essere maggiore di {{maximum}}",
"filter_category_general": "Generale",
"filter_category_security": "Sicurezza",
"filter_category_regional": "Regionale",
"filter_category_other": "Altro",
"filter_category_general_desc": "Liste che bloccano tracciamenti e pubblicità sulla maggioranza dei dispositivi",
"filter_category_security_desc": "Liste specializzate sul blocco di malware, phishing o domini scam",
"filter_category_regional_desc": "Liste focalizzare su pubblicità regionali e server traccianti",
"filter_category_other_desc": "Altre liste di blocco",
"click_to_view_queries": "Clicca per visualizzare query"
}

View File

@@ -1,159 +1,566 @@
{
"check_dhcp_servers": "DHCP\u30b5\u30fc\u30d0\u3092\u30c1\u30a7\u30c3\u30af\u3059\u308b",
"save_config": "\u8a2d\u5b9a\u3092\u4fdd\u5b58\u3059\u308b",
"enabled_dhcp": "DHCP\u30b5\u30fc\u30d0\u3092\u6709\u52b9\u306b\u3057\u307e\u3057\u305f",
"disabled_dhcp": "DHCP\u30b5\u30fc\u30d0\u3092\u7121\u52b9\u306b\u3057\u307e\u3057\u305f",
"dhcp_title": "DHCP\u30b5\u30fc\u30d0\uff08\u5b9f\u9a13\u7684\uff01\uff09",
"dhcp_description": "\u3042\u306a\u305f\u306e\u30eb\u30fc\u30bf\u304cDHCP\u306e\u8a2d\u5b9a\u3092\u63d0\u4f9b\u3057\u3066\u3044\u306a\u3044\u306e\u306a\u3089\u3001AdGuard\u306b\u5185\u8535\u3055\u308c\u3066\u3044\u308bDHCP\u30b5\u30fc\u30d0\u3092\u5229\u7528\u3067\u304d\u307e\u3059\u3002",
"dhcp_enable": "DHCP\u30b5\u30fc\u30d0\u3092\u6709\u52b9\u306b\u3059\u308b",
"dhcp_disable": "DHCP\u30b5\u30fc\u30d0\u3092\u7121\u52b9\u306b\u3059\u308b",
"dhcp_not_found": "\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u5185\u306b\u52d5\u4f5c\u3057\u3066\u3044\u308bDHCP\u30b5\u30fc\u30d0\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u5185\u8535\u3055\u308c\u3066\u3044\u308bDHCP\u30b5\u30fc\u30d0\u3092\u6709\u52b9\u306b\u3057\u3066\u3082\u5b89\u5168\u3067\u3059\u3002",
"dhcp_found": "\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u5185\u306b\u52d5\u4f5c\u3057\u3066\u3044\u308bDHCP\u30b5\u30fc\u30d0\u3092\u898b\u3064\u3051\u307e\u3057\u305f\u3002\u5185\u81d3\u3055\u308c\u3066\u3044\u308bDHCP\u30b5\u30fc\u30d0\u3092\u6709\u52b9\u306b\u3059\u308b\u306b\u306f\u5b89\u5168\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002",
"dhcp_leases": "DHCP\u5272\u5f53",
"dhcp_leases_not_found": "DHCP\u5272\u5f53\u306f\u3042\u308a\u307e\u305b\u3093",
"dhcp_config_saved": "DHCP\u30b5\u30fc\u30d0\u306e\u8a2d\u5b9a\u3092\u4fdd\u5b58\u3057\u307e\u3057\u305f",
"form_error_required": "\u5fc5\u9808\u9805\u76ee\u3067\u3059",
"form_error_ip_format": "IPv4\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u3067\u306f\u3042\u308a\u307e\u305b\u3093",
"form_error_positive": "0\u3088\u308a\u5927\u304d\u3044\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059",
"dhcp_form_gateway_input": "\u30b2\u30fc\u30c8\u30a6\u30a7\u30a4IP",
"dhcp_form_subnet_input": "\u30b5\u30d6\u30cd\u30c3\u30c8\u30de\u30b9\u30af",
"dhcp_form_range_title": "IP\u30a2\u30c9\u30ec\u30b9\u306e\u7bc4\u56f2",
"dhcp_form_range_start": "\u7bc4\u56f2\u306e\u958b\u59cb",
"dhcp_form_range_end": "\u7bc4\u56f2\u306e\u7d42\u4e86",
"dhcp_form_lease_title": "DHCP\u5272\u5f53\u6642\u9593\uff08\u79d2\u5358\u4f4d\uff09",
"dhcp_form_lease_input": "\u5272\u5f53\u671f\u9593",
"dhcp_interface_select": "DHCP\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u306e\u9078\u629e",
"dhcp_hardware_address": "MAC\u30a2\u30c9\u30ec\u30b9",
"dhcp_ip_addresses": "IP\u30a2\u30c9\u30ec\u30b9",
"dhcp_table_hostname": "\u30db\u30b9\u30c8\u540d",
"dhcp_table_expires": "\u6709\u52b9\u671f\u9650",
"back": "\u623b\u308b",
"dashboard": "\u30c0\u30c3\u30b7\u30e5\u30dc\u30fc\u30c9",
"settings": "\u8a2d\u5b9a",
"filters": "\u30d5\u30a3\u30eb\u30bf",
"query_log": "\u30af\u30a8\u30ea\u30fb\u30ed\u30b0",
"faq": "\u3088\u304f\u3042\u308b\u8cea\u554f",
"version": "\u30d0\u30fc\u30b8\u30e7\u30f3",
"address": "\u30a2\u30c9\u30ec\u30b9",
"on": "\u30aa\u30f3",
"off": "\u30aa\u30d5",
"copyright": "\u8457\u4f5c\u6a29",
"homepage": "\u30db\u30fc\u30e0\u30da\u30fc\u30b8",
"report_an_issue": "\u554f\u984c\u3092\u5831\u544a\u3059\u308b",
"enable_protection": "\u4fdd\u8b77\u3092\u6709\u52b9\u306b\u3059\u308b",
"enabled_protection": "\u4fdd\u8b77\u3092\u6709\u52b9\u306b\u3057\u307e\u3057\u305f",
"disable_protection": "\u4fdd\u8b77\u3092\u7121\u52b9\u306b\u3059\u308b",
"disabled_protection": "\u4fdd\u8b77\u3092\u7121\u52b9\u306b\u3057\u307e\u3057\u305f",
"refresh_statics": "\u7d71\u8a08\u30c7\u30fc\u30bf\u3092\u6700\u65b0\u306b\u3059\u308b",
"dns_query": "DNS\u30af\u30a8\u30ea",
"blocked_by": "\u30d5\u30a3\u30eb\u30bf\u306b\u30d6\u30ed\u30c3\u30af\u3055\u308c\u305fDNS\u30af\u30a8\u30ea",
"stats_malware_phishing": "\u30d6\u30ed\u30c3\u30af\u3055\u308c\u305f\u30de\u30eb\u30a6\u30a7\u30a2\uff0f\u30d5\u30a3\u30c3\u30b7\u30f3\u30b0",
"stats_adult": "\u30d6\u30ed\u30c3\u30af\u3055\u308c\u305f\u30a2\u30c0\u30eb\u30c8\u30a6\u30a7\u30d6\u30b5\u30a4\u30c8",
"stats_query_domain": "\u6700\u3082\u554f\u5408\u305b\u3055\u308c\u305f\u30c9\u30e1\u30a4\u30f3",
"for_last_24_hours": "\u904e\u53bb24\u6642\u9593\u4ee5\u5185",
"no_domains_found": "\u30c9\u30e1\u30a4\u30f3\u60c5\u5831\u306f\u3042\u308a\u307e\u305b\u3093",
"requests_count": "\u30ea\u30af\u30a8\u30b9\u30c8\u6570",
"top_blocked_domains": "\u6700\u3082\u30d6\u30ed\u30c3\u30af\u3055\u308c\u305f\u30c9\u30e1\u30a4\u30f3",
"top_clients": "\u30c8\u30c3\u30d7\u30af\u30e9\u30a4\u30a2\u30f3\u30c8",
"no_clients_found": "\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u60c5\u5831\u306f\u3042\u308a\u307e\u305b\u3093",
"general_statistics": "\u5168\u822c\u7684\u306a\u7d71\u8a08",
"number_of_dns_query_24_hours": "\u904e\u53bb24\u6642\u9593\u306b\u51e6\u7406\u3055\u308c\u305fDNS\u30af\u30a8\u30ea\u306e\u6570",
"number_of_dns_query_blocked_24_hours": "\u5e83\u544a\u30d6\u30ed\u30c3\u30af\u30d5\u30a3\u30eb\u30bf\u3068hosts\u30d6\u30ed\u30c3\u30af\u30ea\u30b9\u30c8\u306b\u3088\u3063\u3066\u30d6\u30ed\u30c3\u30af\u3055\u308c\u305fDNS\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u6570",
"number_of_dns_query_blocked_24_hours_by_sec": "AdGuard\u30d6\u30e9\u30a6\u30b8\u30f3\u30b0\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30e2\u30b8\u30e5\u30fc\u30eb\u306b\u3088\u3063\u3066\u30d6\u30ed\u30c3\u30af\u3055\u308c\u305fDNS\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u6570",
"number_of_dns_query_blocked_24_hours_adult": "\u30d6\u30ed\u30c3\u30af\u3055\u308c\u305f\u30a2\u30c0\u30eb\u30c8\u30a6\u30a7\u30d6\u30b5\u30a4\u30c8\u306e\u6570",
"enforced_save_search": "\u5f37\u5236\u3055\u308c\u305f\u30bb\u30fc\u30d5\u30b5\u30fc\u30c1",
"number_of_dns_query_to_safe_search": "\u30bb\u30fc\u30d5\u30b5\u30fc\u30c1\u304c\u5f37\u5236\u3055\u308c\u305f\u691c\u7d22\u30a8\u30f3\u30b8\u30f3\u306b\u5bfe\u3059\u308bDNS\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u6570",
"average_processing_time": "\u5e73\u5747\u51e6\u7406\u6642\u9593",
"average_processing_time_hint": "DNS\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u51e6\u7406\u306b\u304b\u304b\u308b\u5e73\u5747\u6642\u9593\uff08\u30df\u30ea\u79d2\u5358\u4f4d\uff09",
"block_domain_use_filters_and_hosts": "\u30d5\u30a3\u30eb\u30bf\u3068hosts\u30d5\u30a1\u30a4\u30eb\u3092\u4f7f\u7528\u3057\u3066\u30c9\u30e1\u30a4\u30f3\u3092\u30d6\u30ed\u30c3\u30af\u3059\u308b",
"filters_block_toggle_hint": "<a href='#filters'>\u30d5\u30a3\u30eb\u30bf<\/a>\u306e\u8a2d\u5b9a\u3067\u30d6\u30ed\u30c3\u30af\u3059\u308b\u30eb\u30fc\u30eb\u3092\u8a2d\u5b9a\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002",
"use_adguard_browsing_sec": "AdGuard\u30d6\u30e9\u30a6\u30b8\u30f3\u30b0\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30fb\u30a6\u30a7\u30d6\u30b5\u30fc\u30d3\u30b9\u3092\u4f7f\u7528\u3059\u308b",
"use_adguard_browsing_sec_hint": "AdGuard Home\u306f\u3001\u30d6\u30e9\u30a6\u30b8\u30f3\u30b0\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30fb\u30a6\u30a7\u30d6\u30b5\u30fc\u30d3\u30b9\u306b\u3088\u3063\u3066\u30c9\u30e1\u30a4\u30f3\u304c\u30d6\u30e9\u30c3\u30af\u30ea\u30b9\u30c8\u306b\u767b\u9332\u3055\u308c\u3066\u3044\u308b\u304b\u3069\u3046\u304b\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002 \u3053\u308c\u306f\u30d7\u30e9\u30a4\u30d0\u30b7\u30fc\u3092\u8003\u616e\u3057\u305fAPI\u3092\u4f7f\u7528\u3057\u3066\u30c1\u30a7\u30c3\u30af\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002\u30c9\u30e1\u30a4\u30f3\u540dSHA256\u30cf\u30c3\u30b7\u30e5\u306e\u77ed\u3044\u30d7\u30ec\u30d5\u30a3\u30c3\u30af\u30b9\u306e\u307f\u304c\u30b5\u30fc\u30d0\u306b\u9001\u4fe1\u3055\u308c\u307e\u3059\u3002",
"use_adguard_parental": "AdGuard\u30da\u30a2\u30ec\u30f3\u30bf\u30eb\u30b3\u30f3\u30c8\u30ed\u30fc\u30eb\u30fb\u30a6\u30a7\u30d6\u30b5\u30fc\u30d3\u30b9\u3092\u4f7f\u7528\u3059\u308b",
"use_adguard_parental_hint": "AdGuard Home\u306f\u3001\u30c9\u30e1\u30a4\u30f3\u306b\u30a2\u30c0\u30eb\u30c8\u30b3\u30f3\u30c6\u30f3\u30c4\u304c\u542b\u307e\u308c\u3066\u3044\u308b\u304b\u3069\u3046\u304b\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002 \u30d6\u30e9\u30a6\u30b8\u30f3\u30b0\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30fb\u30a6\u30a7\u30d6\u30b5\u30fc\u30d3\u30b9\u3068\u540c\u3058\u30d7\u30e9\u30a4\u30d0\u30b7\u30fc\u306b\u512a\u3057\u3044API\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002",
"enforce_safe_search": "\u30bb\u30fc\u30d5\u30b5\u30fc\u30c1\u3092\u5f37\u5236\u3059\u308b",
"enforce_save_search_hint": "AdGuard Home\u306f\u3001Google\u3001Youtube\u3001Bing\u3001Yandex\u306e\u691c\u7d22\u30a8\u30f3\u30b8\u30f3\u3067\u30bb\u30fc\u30d5\u30b5\u30fc\u30c1\u3092\u5f37\u5236\u3067\u304d\u307e\u3059\u3002",
"no_servers_specified": "\u30b5\u30fc\u30d0\u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093",
"no_settings": "\u8a2d\u5b9a\u306a\u3057",
"general_settings": "\u4e00\u822c\u8a2d\u5b9a",
"upstream_dns": "\u4e0a\u6d41DNS\u30b5\u30fc\u30d0",
"upstream_dns_hint": "\u3053\u306e\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u672a\u5165\u529b\u306e\u307e\u307e\u306b\u3059\u308b\u3068\u3001AdGuard Home\u306f\u4e0a\u6d41\u3068\u3057\u3066<a href='https:\/\/1.1.1.1\/' target='_blank'>Cloudflare DNS<\/a>\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002DNS over TLS\u30b5\u30fc\u30d0\u306b\u306f\u3001\uff62tls:\/\/\u300d\u30d7\u30ec\u30d5\u30a3\u30c3\u30af\u30b9\u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044\u3002",
"test_upstream_btn": "\u4e0a\u6d41\u30b5\u30fc\u30d0\u3092\u30c6\u30b9\u30c8\u3059\u308b",
"apply_btn": "\u9069\u7528\u3059\u308b",
"disabled_filtering_toast": "\u30d5\u30a3\u30eb\u30bf\u30ea\u30f3\u30b0\u3092\u7121\u52b9\u306b\u3057\u307e\u3057\u305f",
"enabled_filtering_toast": "\u30d5\u30a3\u30eb\u30bf\u30ea\u30f3\u30b0\u3092\u6709\u52b9\u306b\u3057\u307e\u3057\u305f",
"disabled_safe_browsing_toast": "\u30bb\u30fc\u30d5\u30d6\u30e9\u30a6\u30b8\u30f3\u30b0\u3092\u7121\u52b9\u306b\u3057\u307e\u3057\u305f",
"enabled_safe_browsing_toast": "\u30bb\u30fc\u30d5\u30d6\u30e9\u30a6\u30b8\u30f3\u30b0\u3092\u6709\u52b9\u306b\u3057\u307e\u3057\u305f",
"disabled_parental_toast": "\u30da\u30a2\u30ec\u30f3\u30bf\u30eb\u30b3\u30f3\u30c8\u30ed\u30fc\u30eb\u3092\u7121\u52b9\u306b\u3057\u307e\u3057\u305f",
"enabled_parental_toast": "\u30da\u30a2\u30ec\u30f3\u30bf\u30eb\u30b3\u30f3\u30c8\u30ed\u30fc\u30eb\u3092\u6709\u52b9\u306b\u3057\u307e\u3057\u305f",
"disabled_safe_search_toast": "\u30bb\u30fc\u30d5\u30b5\u30fc\u30c1\u3092\u7121\u52b9\u306b\u3057\u307e\u3057\u305f",
"enabled_save_search_toast": "\u30bb\u30fc\u30d5\u30b5\u30fc\u30c1\u3092\u6709\u52b9\u306b\u3057\u307e\u3057\u305f",
"enabled_table_header": "\u6709\u52b9",
"name_table_header": "\u540d\u79f0",
"filter_url_table_header": "\u30d5\u30a3\u30eb\u30bf\u306eURL",
"rules_count_table_header": "\u30eb\u30fc\u30eb\u6570",
"last_time_updated_table_header": "\u6700\u7d42\u66f4\u65b0\u6642\u523b",
"actions_table_header": "\u64cd\u4f5c",
"delete_table_action": "\u524a\u9664\u3059\u308b",
"filters_and_hosts": "\u30d5\u30a3\u30eb\u30bf\u3068hosts\u30d6\u30ed\u30c3\u30af\u30ea\u30b9\u30c8",
"filters_and_hosts_hint": "AdGuard Home\u306f\u3001\u57fa\u672c\u7684\u306a\u5e83\u544a\u30d6\u30ed\u30c3\u30af\u30eb\u30fc\u30eb\u3068hosts\u30d5\u30a1\u30a4\u30eb\u306e\u69cb\u6587\u3092\u7406\u89e3\u3057\u307e\u3059\u3002",
"no_filters_added": "\u30d5\u30a3\u30eb\u30bf\u306f\u8ffd\u52a0\u3055\u308c\u307e\u305b\u3093\u3067\u3057\u305f",
"add_filter_btn": "\u30d5\u30a3\u30eb\u30bf\u3092\u8ffd\u52a0\u3059\u308b",
"cancel_btn": "\u30ad\u30e3\u30f3\u30bb\u30eb",
"enter_name_hint": "\u540d\u79f0\u3092\u5165\u529b",
"enter_url_hint": "URL\u3092\u5165\u529b",
"check_updates_btn": "\u30a2\u30c3\u30d7\u30c7\u30fc\u30c8\u3092\u78ba\u8a8d\u3059\u308b",
"new_filter_btn": "\u65b0\u3057\u3044\u30d5\u30a3\u30eb\u30bf\u30fb\u30b5\u30d6\u30b9\u30af\u30ea\u30d7\u30b7\u30e7\u30f3",
"enter_valid_filter_url": "\u30d5\u30a3\u30eb\u30bf\u30fb\u30b5\u30d6\u30b9\u30af\u30ea\u30d7\u30b7\u30e7\u30f3\u3082\u3057\u304f\u306fhosts\u30d5\u30a1\u30a4\u30eb\u306e\u6709\u52b9\u306aURL\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002",
"custom_filter_rules": "\u30ab\u30b9\u30bf\u30e0\u30fb\u30d5\u30a3\u30eb\u30bf\u30ea\u30f3\u30b0\u30eb\u30fc\u30eb",
"custom_filter_rules_hint": "1\u3064\u306e\u884c\u306b1\u3064\u306e\u30eb\u30fc\u30eb\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002 \u5e83\u544a\u30d6\u30ed\u30c3\u30af\u30eb\u30fc\u30eb\u3084hosts\u30d5\u30a1\u30a4\u30eb\u69cb\u6587\u3092\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002",
"examples_title": "\u4f8b",
"example_meaning_filter_block": "example.org\u30c9\u30e1\u30a4\u30f3\u3068\u305d\u306e\u3059\u3079\u3066\u306e\u30b5\u30d6\u30c9\u30e1\u30a4\u30f3\u3078\u306e\u30a2\u30af\u30bb\u30b9\u3092\u30d6\u30ed\u30c3\u30af\u3059\u308b",
"example_meaning_filter_whitelist": "example.org\u30c9\u30e1\u30a4\u30f3\u3068\u305d\u306e\u3059\u3079\u3066\u306e\u30b5\u30d6\u30c9\u30e1\u30a4\u30f3\u3078\u306e\u30a2\u30af\u30bb\u30b9\u306e\u30d6\u30ed\u30c3\u30af\u3092\u89e3\u9664\u3059\u308b",
"example_meaning_host_block": "AdGuard Home\u306f\u3001example.org\u30c9\u30e1\u30a4\u30f3\uff08\u30b5\u30d6\u30c9\u30e1\u30a4\u30f3\u3092\u9664\u304f\uff09\u306b\u5bfe\u3057\u3066127.0.0.1\u306e\u30a2\u30c9\u30ec\u30b9\u3092\u8fd4\u3059\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002",
"example_comment": "! \u3053\u3053\u306b\u306f\u30b3\u30e1\u30f3\u30c8\u304c\u5165\u308a\u307e\u3059",
"example_comment_meaning": "\u305f\u3060\u306e\u30b3\u30e1\u30f3\u30c8\u3067\u3059",
"example_comment_hash": "# \u3053\u3053\u3082\u30b3\u30e1\u30f3\u30c8\u3067\u3059",
"example_upstream_regular": "\u901a\u5e38\u306eDNS\uff08UDP\u3067\u306e\u554f\u3044\u5408\u308f\u305b\uff09",
"example_upstream_dot": "\u6697\u53f7\u5316\u3055\u308c\u3066\u3044\u308b <0>DNS-over-TLS<\/0>",
"example_upstream_doh": "\u6697\u53f7\u5316\u3055\u308c\u3066\u3044\u308b <0>DNS-over-HTTPS<\/0>",
"example_upstream_sdns": "<0>DNSCrypt<\/0> \u307e\u305f\u306f <1>DNS-over-HTTPS<\/1> \u30ea\u30be\u30eb\u30d0\u306e\u305f\u3081\u306b <2>DNS Stamps<\/2> \u3092\u4f7f\u3048\u307e\u3059",
"example_upstream_tcp": "\u901a\u5e38\u306eDNS\uff08TCP\u3067\u306e\u554f\u3044\u5408\u308f\u305b\uff09",
"all_filters_up_to_date_toast": "\u3059\u3079\u3066\u306e\u30d5\u30a3\u30eb\u30bf\u306f\u65e2\u306b\u6700\u65b0\u3067\u3059",
"updated_upstream_dns_toast": "\u4e0a\u6d41DNS\u30b5\u30fc\u30d0\u3092\u66f4\u65b0\u3057\u307e\u3057\u305f",
"dns_test_ok_toast": "\u6307\u5b9a\u3055\u308c\u305fDNS\u30b5\u30fc\u30d0\u306f\u6b63\u3057\u304f\u52d5\u4f5c\u3057\u3066\u3044\u307e\u3059",
"dns_test_not_ok_toast": "\u30b5\u30fc\u30d0 \"{{key}}\": \u4f7f\u7528\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002\u6b63\u3057\u304f\u5165\u529b\u3055\u308c\u3066\u3044\u308b\u304b\u3069\u3046\u304b\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044",
"unblock_btn": "\u30d6\u30ed\u30c3\u30af\u89e3\u9664",
"block_btn": "\u30d6\u30ed\u30c3\u30af\u3059\u308b",
"time_table_header": "\u6642\u523b",
"domain_name_table_header": "\u30c9\u30e1\u30a4\u30f3\u540d",
"type_table_header": "\u7a2e\u985e",
"response_table_header": "\u5fdc\u7b54",
"client_table_header": "\u30af\u30e9\u30a4\u30a2\u30f3\u30c8",
"empty_response_status": "\u672a\u5b9a\u7fa9",
"show_all_filter_type": "\u3059\u3079\u3066\u8868\u793a",
"show_filtered_type": "\u30d5\u30a3\u30eb\u30bf\u3055\u308c\u305f\u30ed\u30b0\u3092\u8868\u793a",
"no_logs_found": "\u30ed\u30b0\u306f\u3042\u308a\u307e\u305b\u3093",
"disabled_log_btn": "\u30ed\u30b0\u3092\u7121\u52b9\u306b\u3059\u308b",
"download_log_file_btn": "\u30ed\u30b0\u30d5\u30a1\u30a4\u30eb\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3059\u308b",
"refresh_btn": "\u6700\u65b0\u306b\u3059\u308b",
"enabled_log_btn": "\u30ed\u30b0\u3092\u6709\u52b9\u306b\u3059\u308b",
"last_dns_queries": "\u6700\u65b05000\u4ef6\u5206\u306eDNS\u30af\u30a8\u30ea",
"previous_btn": "\u524d\u3078",
"next_btn": "\u6b21\u3078",
"loading_table_status": "\u8aad\u307f\u8fbc\u307f\u4e2d\u2026",
"page_table_footer_text": "\u30da\u30fc\u30b8",
"of_table_footer_text": "\uff0f",
"rows_table_footer_text": "\u884c",
"updated_custom_filtering_toast": "\u30ab\u30b9\u30bf\u30e0\u30fb\u30d5\u30a3\u30eb\u30bf\u30ea\u30f3\u30b0\u30eb\u30fc\u30eb\u3092\u66f4\u65b0\u3057\u307e\u3057\u305f",
"rule_removed_from_custom_filtering_toast": "\u30eb\u30fc\u30eb\u3092\u30ab\u30b9\u30bf\u30e0\u30fb\u30d5\u30a3\u30eb\u30bf\u30ea\u30f3\u30b0\u30eb\u30fc\u30eb\u304b\u3089\u9664\u53bb\u3057\u307e\u3057\u305f",
"rule_added_to_custom_filtering_toast": "\u30eb\u30fc\u30eb\u3092\u30ab\u30b9\u30bf\u30e0\u30fb\u30d5\u30a3\u30eb\u30bf\u30ea\u30f3\u30b0\u30eb\u30fc\u30eb\u306b\u8ffd\u52a0\u3057\u307e\u3057\u305f",
"query_log_disabled_toast": "\u30af\u30a8\u30ea\u30fb\u30ed\u30b0\u3092\u7121\u52b9\u306b\u3057\u307e\u3057\u305f",
"query_log_enabled_toast": "\u30af\u30a8\u30ea\u30fb\u30ed\u30b0\u3092\u6709\u52b9\u306b\u3057\u307e\u3057\u305f",
"source_label": "\u30bd\u30fc\u30b9",
"found_in_known_domain_db": "\u65e2\u77e5\u306e\u30c9\u30e1\u30a4\u30f3\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u898b\u3064\u304b\u308a\u307e\u3057\u305f\u3002",
"category_label": "\u30ab\u30c6\u30b4\u30ea",
"rule_label": "\u30eb\u30fc\u30eb",
"filter_label": "\u30d5\u30a3\u30eb\u30bf",
"unknown_filter": "\u4e0d\u660e\u306a\u30d5\u30a3\u30eb\u30bf {{filterId}}"
"client_settings": "クライアント設定",
"example_upstream_reserved": "<0>特定のドメイン</0>に対してDNSアップストリームを指定できます",
"upstream_parallel": "並列リクエストを使用する(すべてのアップストリームサーバーを同時に照会することで解決スピードが向上します)",
"parallel_requests": "並列リクエスト",
"load_balancing": "ロードバランシング",
"load_balancing_desc": "一度に1つのサーバを照会します。 AdGuard Homeは、重み付きランダムアルゴリズムを使用してサーバを選択するため、最速のサーバがより頻繁に使用されます。",
"bootstrap_dns": "ブートストラップDNSサーバ",
"bootstrap_dns_desc": "ブートストラップDNSサーバは、上流として指定したDoHDoTリゾルバのIPアドレスを解決するために使用されます。",
"check_dhcp_servers": "DHCPサーバをチェックする",
"save_config": "設定を保存する",
"enabled_dhcp": "DHCPサーバを有効にしました",
"disabled_dhcp": "DHCPサーバを無効にしました",
"dhcp_title": "DHCPサーバ実験的",
"dhcp_description": "あなたのルータがDHCPの設定を提供していないのなら、AdGuardに内蔵されているDHCPサーバを利用できます。",
"dhcp_enable": "DHCPサーバを有効にする",
"dhcp_disable": "DHCPサーバを無効にする",
"dhcp_not_found": "ネットワーク内に動作しているDHCPサーバはありません。内蔵されているDHCPサーバを有効にしても安全です。",
"dhcp_found": "ネットワーク内に動作しているDHCPサーバが見つかりました。内臓されているDHCPサーバを有効にするのは安全ではありません。",
"dhcp_leases": "DHCP割り当て",
"dhcp_static_leases": "DHCP静的割り当て",
"dhcp_leases_not_found": "DHCP割当はありません",
"dhcp_config_saved": "DHCP設定の保存に成功しました",
"form_error_required": "必須項目",
"form_error_ip4_format": "IPv4フォーマットではありません",
"form_error_ip6_format": "IPv6フォーマットではありません",
"form_error_ip_format": "IPv4フォーマットではありません",
"form_error_mac_format": "MACフォーマットではありません",
"form_error_client_id_format": "Client IDの形式が無効です",
"form_error_positive": "0より大きい必要があります",
"form_error_negative": "0以上である必要があります",
"dhcp_form_gateway_input": "ゲートウェイIP",
"dhcp_form_subnet_input": "サブネットマスク",
"dhcp_form_range_title": "IPアドレスの範囲",
"dhcp_form_range_start": "範囲の開始",
"dhcp_form_range_end": "範囲の終了",
"dhcp_form_lease_title": "DHCP割当時間秒単位",
"dhcp_form_lease_input": "割当期間",
"dhcp_interface_select": "DHCPインタフェースの選択",
"dhcp_hardware_address": "MACアドレス",
"dhcp_ip_addresses": "IPアドレス",
"ip": "IP",
"dhcp_table_hostname": "ホスト名",
"dhcp_table_expires": "有効期限",
"dhcp_warning": "内蔵しているDHCPサーバを有効にしたい場合は、稼働中のDHCPサーバがないことを確認してください。そうでなければ、接続されたデバイスのためにインターネットを壊すかもしれません",
"dhcp_error": "ネットワーク内に別のDHCPサーバがあるかどうかを判断できませんでした。",
"dhcp_static_ip_error": "DHCPサーバを使用するには、静的IPアドレスを設定する必要があります。このネットワークインターフェイスが静的IPアドレスを使用するように設定されているかどうかを判断できませんでした。手動で静的IPアドレスを設定してください。",
"dhcp_dynamic_ip_found": "ご使用のシステムは、インターフェース<0>{{interfaceName}}</0>に動的IPアドレス構成が使用されています。DHCPサーバを使用するには、静的IPアドレスで設定する必要があります。あなたの現在のIPアドレスは<0>{{ipAddress}}</0>です。「DHCPサーバを有効にする」ボタンを押すと、このIPアドレスを静的IPアドレスに自動設定されます。",
"dhcp_lease_added": "静的割り当て \"{{key}}\" の追加に成功しました",
"dhcp_lease_deleted": "静的割り当て \"{{key}}\" の削除に成功しました",
"dhcp_new_static_lease": "新規静的割り当て",
"dhcp_static_leases_not_found": "DHCP静的割り当てはありません",
"dhcp_add_static_lease": "静的割り当てを追加する",
"dhcp_reset": "DHCP設定をリセットして良いですか",
"country": "",
"city": "街",
"delete_confirm": "\"{{key}}\" を削除してもよろしいですか?",
"form_enter_hostname": "ホスト名を入力してください",
"error_details": "エラー詳細",
"response_details": "応答の詳細",
"request_details": "要求の詳細",
"client_details": "クライアントの詳細",
"details": "詳細",
"back": "戻る",
"dashboard": "ダッシュボード",
"settings": "設定",
"filters": "フィルタ",
"filter": "フィルタ",
"query_log": "クエリ・ログ",
"compact": "コンパクト",
"nothing_found": "何も見つかりません",
"faq": "よくある質問",
"version": "バージョン",
"address": "アドレス",
"protocol": "プロトコル",
"on": "オン",
"off": "オフ",
"copyright": "著作権",
"homepage": "ホームページ",
"report_an_issue": "問題を報告する",
"privacy_policy": "プライバシーポリシー",
"enable_protection": "保護を有効にする",
"enabled_protection": "保護を有効にしました",
"disable_protection": "保護を無効にする",
"disabled_protection": "保護を無効にしました",
"refresh_statics": "統計データを最新にする",
"dns_query": "DNSクエリ",
"blocked_by": "<0>フィルタにブロックされたDNSクエリ</0>",
"stats_malware_phishing": "ブロックされたマルウェア/フィッシング",
"stats_adult": "ブロックされたアダルトウェブサイト",
"stats_query_domain": "最も問合せされたドメイン",
"for_last_24_hours": "過去24時間以内",
"for_last_days": "過去{{count}}日間以内",
"for_last_days_plural": "過去{{count}}日間以内",
"no_domains_found": "ドメイン情報はありません",
"requests_count": "リクエスト数",
"top_blocked_domains": "最もブロックされたドメイン",
"top_clients": "トップクライアント",
"no_clients_found": "クライアント情報はありません",
"general_statistics": "全般的な統計",
"number_of_dns_query_days": "過去{{count}}日間に処理されたDNSクエリの数",
"number_of_dns_query_days_plural": "過去{{count}}日間に処理されたDNSクエリの数",
"number_of_dns_query_24_hours": "過去24時間に処理されたDNSクエリの数",
"number_of_dns_query_blocked_24_hours": "広告ブロックフィルタとhostsブロックリストによってブロックされたDNSリクエストの数",
"number_of_dns_query_blocked_24_hours_by_sec": "AdGuardブラウジングセキュリティモジュールによってブロックされたDNSリクエストの数",
"number_of_dns_query_blocked_24_hours_adult": "ブロックされたアダルトウェブサイトの数",
"enforced_save_search": "強制されたセーフサーチ",
"number_of_dns_query_to_safe_search": "セーフサーチが強制された検索エンジンに対するDNSリクエストの数",
"average_processing_time": "平均処理時間",
"average_processing_time_hint": "DNSリクエストの処理にかかる平均時間ミリ秒単位",
"block_domain_use_filters_and_hosts": "フィルタとhostsファイルを使用してドメインをブロックする",
"filters_block_toggle_hint": "<a href='#filters'>フィルタ</a>の設定でブロックするルールを設定することができます。",
"use_adguard_browsing_sec": "AdGuardブラウジングセキュリティ・ウェブサービスを使用する",
"use_adguard_browsing_sec_hint": "AdGuard Homeは、ブラウジングセキュリティ・ウェブサービスによってドメインがブラックリストに登録されているかどうかを確認します。 これはプライバシーを考慮したAPIを使用してチェックを実行します。ドメイン名SHA256ハッシュの短いプレフィックスのみがサーバに送信されます。",
"use_adguard_parental": "AdGuardペアレンタルコントロール・ウェブサービスを使用する",
"use_adguard_parental_hint": "AdGuard Homeは、ドメインにアダルトコンテンツが含まれているかどうかを確認します。 ブラウジングセキュリティ・ウェブサービスと同じプライバシーに優しいAPIを使用します。",
"enforce_safe_search": "セーフサーチを強制する",
"enforce_save_search_hint": "AdGuard Homeは、Google、Youtube、Bing、DuckDuckGo、Yandexの検索エンジンでセーフサーチを強制できます。",
"no_servers_specified": "サーバが指定されていません",
"general_settings": "一般設定",
"dns_settings": "DNS設定",
"dns_blocklists": "DNSブロックリスト",
"dns_allowlists": "DNS許可リスト",
"dns_blocklists_desc": "AdGuard Homeは、ブロックリストに一致するドメインをブロックします。",
"dns_allowlists_desc": "DNS許可リストにあるドメインは、ブロックリストに含まれていても許可されます。",
"custom_filtering_rules": "カスタム・フィルタリングルール",
"encryption_settings": "暗号化設定",
"dhcp_settings": "DHCP設定",
"upstream_dns": "上流DNSサーバ",
"upstream_dns_hint": "このフィールドを未入力のままにすると、AdGuard Homeは上流として<a href='https://1.1.1.1/' target='_blank'>Cloudflare DNS</a>を使用します。DNS over TLSサーバには、「tls://」プレフィックスを使用してください。",
"test_upstream_btn": "上流サーバをテストする",
"upstreams": "上流",
"apply_btn": "適用する",
"disabled_filtering_toast": "フィルタリングを無効にしました",
"enabled_filtering_toast": "フィルタリングを有効にしました",
"disabled_safe_browsing_toast": "セーフブラウジングを無効にしました",
"enabled_safe_browsing_toast": "セーフブラウジングを有効にしました",
"disabled_parental_toast": "ペアレンタルコントロールを無効にしました",
"enabled_parental_toast": "ペアレンタルコントロールを有効にしました",
"disabled_safe_search_toast": "セーフサーチを無効にしました",
"enabled_save_search_toast": "セーフサーチを有効にしました",
"enabled_table_header": "有効",
"name_table_header": "名称",
"list_url_table_header": "URLリスト",
"rules_count_table_header": "ルール数",
"last_time_updated_table_header": "最終更新時刻",
"actions_table_header": "操作",
"request_table_header": "リクエスト",
"edit_table_action": "編集する",
"delete_table_action": "削除する",
"elapsed": "経過",
"filters_and_hosts_hint": "AdGuard Homeは、基本的な広告ブロックルールとhostsファイルの構文を理解します。",
"no_blocklist_added": "ブロックリストには何も追加されていません",
"no_whitelist_added": "許可リストには何も追加されていません",
"add_blocklist": "ブロックリストに追加する",
"add_allowlist": "許可リストに追加する",
"cancel_btn": "キャンセル",
"enter_name_hint": "名称を入力",
"enter_url_or_path_hint": "リストのURLまたは絶対パスを入力してください",
"check_updates_btn": "アップデートを確認する",
"new_blocklist": "新しいブロックリスト",
"new_allowlist": "新しい許可リスト",
"edit_blocklist": "ブロックリストの編集",
"edit_allowlist": "許可リストの編集",
"choose_blocklist": "ブロックリストの選択",
"choose_allowlist": "許可リストの選択",
"enter_valid_blocklist": "ブロックリストへ有効なURLを入力してください。",
"enter_valid_allowlist": "許可リストへ有効なURLを入力してください。",
"form_error_url_format": "URLフォーマットが間違っています",
"form_error_url_or_path_format": "リストのURLまたは絶対パスが無効です",
"custom_filter_rules": "カスタム・フィルタリングルール",
"custom_filter_rules_hint": "1つの行に1つのルールを入力してください。 広告ブロックルールやhostsファイル構文を使用できます。",
"examples_title": "例",
"example_meaning_filter_block": "example.orgドメインとそのすべてのサブドメインへのアクセスをブロックする",
"example_meaning_filter_whitelist": "example.orgドメインとそのすべてのサブドメインへのアクセスのブロックを解除する",
"example_meaning_host_block": "AdGuard Homeは、example.orgドメインサブドメインを除くに対して127.0.0.1のアドレスを返すようになります。",
"example_comment": "! ここにはコメントが入ります",
"example_comment_meaning": "ただのコメントです",
"example_comment_hash": "# ここもコメントです",
"example_regex_meaning": "指定の正規表現に一致するドメインへのアクセスをブロックします",
"example_upstream_regular": "通常のDNSUDPでの問い合わせ",
"example_upstream_dot": "暗号化されている <0>DNS-over-TLS</0>",
"example_upstream_doh": "暗号化されている <0>DNS-over-HTTPS</0>",
"example_upstream_sdns": "<1>DNSCrypt</1> または <2>DNS-over-HTTPS</2> リゾルバのために <0>DNS Stamps</0> を使えます",
"example_upstream_tcp": "通常のDNSTCPでの問い合わせ",
"all_lists_up_to_date_toast": "すべてのリストは既に最新です",
"updated_upstream_dns_toast": "上流DNSサーバを更新しました",
"dns_test_ok_toast": "指定されたDNSサーバは正しく動作しています",
"dns_test_not_ok_toast": "サーバ \"{{key}}\": 使用できませんでした。正しく入力されているかどうかを確認してください",
"unblock": "ブロック解除",
"block": "ブロック",
"time_table_header": "時刻",
"date": "購入日時",
"domain_name_table_header": "ドメイン名",
"domain_or_client": "ドメインまたはクライアント",
"type_table_header": "種類",
"response_table_header": "応答",
"response_code": "応答コード",
"client_table_header": "クライアント",
"empty_response_status": "未定義",
"show_all_filter_type": "すべて表示",
"show_filtered_type": "フィルタされたログを表示",
"no_logs_found": "ログはありません",
"refresh_btn": "最新にする",
"previous_btn": "前へ",
"next_btn": "次へ",
"loading_table_status": "読み込み中…",
"page_table_footer_text": "ページ",
"rows_table_footer_text": "行",
"updated_custom_filtering_toast": "カスタム・フィルタリングルールを更新しました",
"rule_removed_from_custom_filtering_toast": "ルールをカスタム・フィルタリングルールから除去しました",
"rule_added_to_custom_filtering_toast": "ルールをカスタム・フィルタリングルールに追加しました",
"query_log_response_status": "ステータス: {{value}}",
"query_log_filtered": "{{filter}}によるフィルタ",
"query_log_confirm_clear": "クエリ・ログ全体を消去してもよろしいですか?",
"query_log_cleared": "クエリ・ログの消去に成功しました",
"query_log_updated": "クエリ・ログの更新が成功しました",
"query_log_clear": "クエリ・ログを消去する",
"query_log_retention": "クエリ・ログの保持",
"query_log_enable": "ログを有効にする",
"query_log_configuration": "ログ設定",
"query_log_disabled": "クエリ・ログは無効になっており、<0>設定</0>で構成できます",
"query_log_strict_search": "完全一致検索には二重引用符を使用します",
"query_log_retention_confirm": "クエリ・ログの保持を変更してもよろしいですか? 期間を短くすると、一部のデータが失われます",
"anonymize_client_ip": "クライアントIPを匿名化する",
"anonymize_client_ip_desc": "ログと統計にクライアントの完全なIPアドレスを保存しない",
"dns_config": "DNSサーバ設定",
"dns_cache_config": "DNSキャッシュ設定",
"dns_cache_config_desc": "ここでDNSキャッシュを設定できます。",
"blocking_mode": "ブロックモード",
"default": "デフォルト",
"nxdomain": "NXDOMAIN",
"null_ip": "Null IP",
"custom_ip": "カスタムIP",
"blocking_ipv4": "ブロック中のIPv4",
"blocking_ipv6": "ブロック中のIPv6",
"dns_over_https": "DNS-over-HTTPS",
"dns_over_tls": "DNS-over-TLS",
"plain_dns": "通常のDNS",
"form_enter_rate_limit": "頻度制限を入力してください",
"rate_limit": "頻度制限",
"edns_enable": "EDNSクライアント・サブネットを有効にする",
"edns_cs_desc": "有効にすると、AdGuard HomeはクライアントのサブネットをDNSサーバへ送信します。",
"rate_limit_desc": "単一のクライアントに許可される1秒あたりのリクエスト数0無制限",
"blocking_ipv4_desc": "ブロックされたAリクエストに対して応答されるIPアドレス",
"blocking_ipv6_desc": "ブロックされたAAAAリクエストに対して応答されるIPアドレス",
"blocking_mode_default": "デフォルトAdblockスタイルのルールによってブロックされると、NXDOMAINで応答します。 /etc/hostsスタイルのルールによってブロックされると、ルールで指定されたIPアドレスで応答します",
"blocking_mode_nxdomain": "NXDOMAINNXDOMAINコードで応答します",
"blocking_mode_null_ip": "Null IPゼロのIPアドレスで応答しますAの場合は0.0.0.0; AAAAの場合は::",
"blocking_mode_custom_ip": "カスタムIP手動で設定されたIPアドレスで応答します",
"upstream_dns_client_desc": "このフィールドを未入力のままにすると、AdGuard Homeは<0>DNS設定</0>で構成されたサーバを使用します。",
"tracker_source": "追跡元",
"source_label": "ソース",
"found_in_known_domain_db": "既知のドメインデータベースに見つかりました。",
"category_label": "カテゴリ",
"rule_label": "ルール",
"list_label": "リスト",
"unknown_filter": "不明なフィルタ {{filterId}}",
"known_tracker": "既知のトラッカー",
"install_welcome_title": "ようこそ、AdGuard Home へ!",
"install_welcome_desc": "AdGuard Homeは、ネットワーク全体で広告と追跡をブロックするDNSサーバです。その目的は、ネットワークとデバイスのすべてをあなたが制御できるようにすることであり、クライアント側のプログラムを使用する必要はありません。",
"install_settings_title": "管理用ウェブインターフェイス",
"install_settings_listen": "待ち受けインターフェイス",
"install_settings_port": "ポート",
"install_settings_interface_link": "AdGuard Homeの管理ウェブインターフェイスは、次のアドレスで利用可能になります:",
"form_error_port": "有効なポート番号を入力してください",
"install_settings_dns": "DNSサーバ",
"install_settings_dns_desc": "次のアドレスでDNSサーバを使用するようにあなたのデバイスまたはルータを設定する必要があります:",
"install_settings_all_interfaces": "すべてのインターフェイス",
"install_auth_title": "認証",
"install_auth_desc": "AdGuard Homeの管理ウェブインターフェースにパスワード認証を設定することを強くお勧めします。ローカルネットワークでのみアクセス可能であっても、制限のないアクセスから保護することは重要です。",
"install_auth_username": "ユーザ名",
"install_auth_password": "パスワード",
"install_auth_confirm": "パスワード(確認用)",
"install_auth_username_enter": "ユーザ名を入力してください",
"install_auth_password_enter": "パスワードを入力してください",
"install_step": "手順",
"install_devices_title": "あなたのデバイスの設定",
"install_devices_desc": "AdGuard Homeの利用を開始するには、あなたのデバイスがAdGuard Homeを利用するように設定する必要があります。",
"install_submit_title": "おめでとうございます!",
"install_submit_desc": "設定手順は完了し、AdGuard Homeの利用を開始する準備が整いました。",
"install_devices_router": "ルータ",
"install_devices_router_desc": "この設定では、ルータに接続されているすべてのデバイスを自動的にカバーしますので、各デバイスを手動で設定する必要はありません。",
"install_devices_address": "AdGuard HomeのDNSサーバは次のアドレスで待ち受けています",
"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_3": "そこにAdGuard Homeサーバのアドレスを入力します。",
"install_devices_router_list_4": "一部のタイプのルータではカスタムDNSサーバを設定できません。この場合、AdGuard Homeを<0>DHCPサーバ</0>として設定するとお役に立ちます。それ以外の場合は、特定のルータモデルに合わせてDNSサーバをカスタマイズする方法に関するマニュアルを検索する必要があります。",
"install_devices_windows_list_1": "「スタート」メニューまたはWindowsの検索から「設定」を開きます。",
"install_devices_windows_list_2": "「ネットワークとインターネット」カテゴリに移動し、さらに「ネットワークと共有センター」へ移動します。",
"install_devices_windows_list_3": "画面の左側にある「アダプターの設定の変更」を見つけてクリックします。",
"install_devices_windows_list_4": "動作中の接続を選択して右クリックし、「プロパティ」を選択します。",
"install_devices_windows_list_5": "一覧から「インターネット プロトコル バージョン4TCP/IPv4」を見つけ、それを選択してから、もう一度プロパティをクリックします。",
"install_devices_windows_list_6": "「次のDNSサーバのアドレスを使う」を選択して、AdGuard Homeサーバのアドレスを入力します。",
"install_devices_macos_list_1": "Apple アイコンをクリックして「システム環境設定」へ行きます。",
"install_devices_macos_list_2": "「ネットワーク」をクリックします。",
"install_devices_macos_list_3": "一覧の最初の接続を選択して「詳細...」をクリックします。",
"install_devices_macos_list_4": "「DNS」タブを選択して、AdGuard Homeサーバのアドレスを入力します。",
"install_devices_android_list_1": "Androidメニューのホーム画面から、「設定」をタップします。",
"install_devices_android_list_2": "メニューの「Wi-Fi」をタップします。利用可能なすべてのネットワークの一覧が表示されますモバイル接続用にカスタムDNSを設定することは不可能です。",
"install_devices_android_list_3": "接続しているネットワークを長押しして、「ネットワークの変更」をタップします。",
"install_devices_android_list_4": "一部のデバイスでは、詳細設定のボックスをチェックして詳細設定を確認する必要があります。AndroidのDNS設定を調整するには、IP設定を「DHCP」から「静的IP」へ切り替える必要があります。",
"install_devices_android_list_5": "DNS 1とDNS 2の値をAdGuard Homeサーバのアドレスへ変更します。",
"install_devices_ios_list_1": "ホーム画面から「設定」をタップします。",
"install_devices_ios_list_2": "左側のメニューで「Wi-Fi」を選択しますモバイルネットワーク用にDNSを設定することは不可能です。",
"install_devices_ios_list_3": "現在使用中のネットワークの名前をタップします。",
"install_devices_ios_list_4": "「DNS」欄に、AdGuard Homeサーバのアドレスを入力します。",
"get_started": "始めましょう",
"next": "次へ",
"open_dashboard": "ダッシュボードを開きます",
"install_saved": "保存に成功しました",
"encryption_title": "暗号化",
"encryption_desc": "DNSと管理ウェブインターフェースの両方に対する暗号化HTTPSTLSをサポートします",
"encryption_config_saved": "暗号化の設定を保存しました",
"encryption_server": "サーバ名",
"encryption_server_enter": "ドメイン名を入力してください",
"encryption_server_desc": "HTTPSを使用するには、SSL証明書と一致するサーバ名を入力する必要があります。",
"encryption_redirect": "HTTPSに自動的にリダイレクト",
"encryption_redirect_desc": "チェックすると、AdGuard Homeは自動的にHTTPからHTTPSアドレスへリダイレクトします。",
"encryption_https": "HTTPS ポート",
"encryption_https_desc": "HTTPSポートが設定されていると、AdGuard Home 管理インターフェースはHTTPS経由でアクセス可能になり、そして「/dns-query」の場所にDNS-over-HTTPSも提供されます。",
"encryption_dot": "DNS-over-TLS ポート",
"encryption_dot_desc": "このポートが設定されていると、AdGuard HomeはこのポートでDNS-over-TLSサーバを実行します。",
"encryption_certificates": "証明書",
"encryption_certificates_desc": "暗号化を使用するには、ドメインに有効なSSL証明書チェーンを提供する必要があります。無料の証明書は<0> {{link}} </0>で入手できます。または、信頼できる認証局のいずれかから購入することもできます。",
"encryption_certificates_input": "ここにPEM形式の証明書をコピーペーストしてください。",
"encryption_status": "ステータス",
"encryption_expire": "有効期限",
"encryption_key": "秘密鍵",
"encryption_key_input": "ここに証明書のためのPEM形式の秘密鍵をコピーペーストしてください。",
"encryption_enable": "暗号化を有効にするHTTPS、DNS-over-HTTPS、DNS-over-TLS",
"encryption_enable_desc": "暗号化が有効になっていると、AdGuard Home 管理インターフェースはHTTPS経由で動作し、DNSサーバはDNS-over-HTTPSおよびDNS-over-TLS経由で要求を待ち受けます。",
"encryption_chain_valid": "証明書チェーンは有効です",
"encryption_chain_invalid": "証明書チェーンは無効です",
"encryption_key_valid": "これは有効な{{type}}秘密鍵です",
"encryption_key_invalid": "これは無効な{{type}}秘密鍵です",
"encryption_subject": "件名",
"encryption_issuer": "発行者",
"encryption_hostnames": "ホスト名",
"encryption_reset": "暗号化設定をリセットして良いですか?",
"topline_expiring_certificate": "SSL証明書は期限切れになります。<0>暗号化設定</0>を更新します。",
"topline_expired_certificate": "SSL証明書は期限切れです。<0>暗号化設定</0>を更新します。",
"form_error_port_range": "80〜65535の範囲でポート番号を入力してください",
"form_error_port_unsafe": "これは危険なポートです",
"form_error_equal": "等しくないはずです",
"form_error_password": "パスワードが不一致です",
"reset_settings": "設定をリセットする",
"update_announcement": "AdGuard Home {{version}}がリリースされました。詳しくは<0>こちらをクリック</0>してください。",
"setup_guide": "セットアップガイド",
"dns_addresses": "DNSアドレス",
"dns_start": "DNSサーバが起動処理中です",
"dns_status_error": "DNSサーバ・ステータスの取得エラー",
"down": "ダウン",
"fix": "改善",
"dns_providers": "こちらは、選択可能な<0>既知のDNSプロバイダの一覧</0>です。",
"update_now": "今すぐ更新する",
"update_failed": "自動更新に失敗しました。手動で更新するには、<a href='https://github.com/AdguardTeam/AdGuardHome/wiki/Getting-Started#update'>手順に従って</a>ください。",
"processing_update": "AdGuard Homeを更新しています。しばらくお待ちください",
"clients_title": "クライアント",
"clients_desc": "AdGuard Homeに接続されているデバイスを設定します",
"settings_global": "グローバル",
"settings_custom": "カスタム",
"table_client": "クライアント",
"table_name": "名前",
"save_btn": "保存する",
"client_add": "クライアントを追加する",
"client_new": "新規クライアント",
"client_edit": "クライアントの編集",
"client_identifier": "識別子",
"ip_address": "IPアドレス",
"client_identifier_desc": "クライアントはIPアドレスまたはMACアドレスで識別できます。AdGuard Homeが<0>DHCPサーバ</0>でもある場合にのみ、識別子としてMACを使用することが可能であることにご注意ください。",
"form_enter_ip": "IPアドレスを入力してください",
"form_enter_mac": "MACアドレスを入力してください",
"form_enter_id": "識別子を入力してください",
"form_add_id": "識別子を追加する",
"form_client_name": "クライアント名を入力してください",
"name": "名前",
"client_global_settings": "グローバル設定を使用する",
"client_deleted": "クライアント \"{{key}}\" の削除に成功しました",
"client_added": "クライアント \"{{key}}\" の追加に成功しました",
"client_updated": "クライアント \"{{key}}\" の更新に成功しました",
"clients_not_found": "クライアント情報はありません",
"client_confirm_delete": "クライアント \"{{key}}\" を削除してもよろしいですか?",
"list_confirm_delete": "このリストを削除してもよろしいですか?",
"auto_clients_title": "クライアント(実行時)",
"auto_clients_desc": "AdGuard Homeで使用しているが設定に保存されていないクライアント上のデータ",
"access_title": "アクセス設定",
"access_desc": "ここで、AdGuard Home DNSサーバのアクセスルールを設定できます。",
"access_allowed_title": "許可されたクライアント",
"access_allowed_desc": "CIDRまたはIPアドレスのリスト。設定されると、AdGuard HomeはこれらのIPアドレスからのリクエストのみを許可します。",
"access_disallowed_title": "拒否するクライアント",
"access_disallowed_desc": "CIDRまたはIPアドレスのリスト。設定されると、AdGuard HomeはこれらのIPアドレスからのリクエストを破棄します。",
"access_blocked_title": "拒否するドメイン",
"access_blocked_desc": "これをフィルタと混同しないでください。AdGuard Homeは、これらのドメインを含むDNSクエリを破棄します。",
"access_settings_saved": "アクセス設定の保存に成功しました",
"updates_checked": "アップデートの確認に成功しました",
"updates_version_equal": "AdGuard Homeは既に最新です",
"check_updates_now": "今すぐアップデートを確認する",
"dns_privacy": "DNSプライバシー",
"setup_dns_privacy_1": "<0>DNS-over-TLS:</0> <1>{{address}}</1>という文字列を使用してください。",
"setup_dns_privacy_2": "<0>DNS-over-HTTPS:</0> <1>{{address}}</1>という文字列を使用してください。",
"setup_dns_privacy_3": "<0>暗号化されたDNSプロトコルはAndroid 9でのみサポートされていることに注意してください。そのため、他のオペレーティングシステムでは追加のソフトウェアをインストールする必要があります。</0> <0>使用できるソフトウェアの一覧です。</0>",
"setup_dns_privacy_android_1": "Android 9はDNS-over-TLSをネイティブにサポートします。設定するには、設定 → ネットワークとインターネット → 詳細設定 → プライベートDNS へ遷移し、そこにドメイン名を入力してください。",
"setup_dns_privacy_android_2": "<0>AdGuard for Android</0>は、<1>DNS-over-HTTPS</1>と<1>DNS-over-TLS</1>をサポートしています。",
"setup_dns_privacy_android_3": "<0>Intra</0>は、Androidに<1>DNS-over-HTTPS</1>サポートを追加します。",
"setup_dns_privacy_ios_1": "<0>DNSCloak</0>は<1>DNS-over-HTTPS</1>をサポートしますが、自身のサーバで使用するように設定するには、<2>DNS Stamp</2>を生成する必要があります。",
"setup_dns_privacy_ios_2": "<0>AdGuard for iOS</0>は、<1>DNS-over-HTTPS</1>と<1>DNS-over-TLS</1>の設定をサポートしています。",
"setup_dns_privacy_other_title": "その他の機能",
"setup_dns_privacy_other_1": "AdGuard Home 自身は、どのプラットフォームでも安全なDNSクライアントになることができます。",
"setup_dns_privacy_other_2": "<0>dnsproxy</0>は、既知のすべてのセキュアDNSプロトコルをサポートしています。",
"setup_dns_privacy_other_3": "<0>dnscrypt-proxy</0>は<1>DNS-over-HTTPS</1>をサポートします。",
"setup_dns_privacy_other_4": "<0>Mozilla Firefox</0>は<1>DNS-over-HTTPS</1>をサポートしています。",
"setup_dns_privacy_other_5": "もっと多くの実装を<0>ここ</0>や<1>ここ</1>で見つけられます。",
"setup_dns_notice": "<1>DNS-over-HTTPS</1>または<1>DNS-over-TLS</1>を使用するには、AdGuard Home 設定の<0>暗号化設定</0>が必要です。",
"rewrite_added": "\"{{key}}\" のためのDNS書き換え情報を追加完了しました",
"rewrite_deleted": "\"{{key}}\" のためのDNS書き換え情報を削除完了しました",
"rewrite_add": "DNS書き換え情報を追加する",
"rewrite_not_found": "DNS書き換え情報はありません",
"rewrite_confirm_delete": "\"{{key}}\" のためのDNS書き換え情報を削除してもよろしいですか",
"rewrite_desc": "特定のドメイン名に対するDNS応答を簡単にカスタマイズすることを可能にします。",
"rewrite_applied": "書き換えルールを適用済み",
"rewrite_hosts_applied": "hostsファイルのルールによって書き換え済み",
"dns_rewrites": "DNS書き換え",
"form_domain": "ドメイン名を入力してください",
"form_answer": "IPアドレスかドメイン名を入力",
"form_error_domain_format": "ドメイン名のフォーマットが間違っています",
"form_error_answer_format": "応答フォーマットが間違っています",
"configure": "保存",
"main_settings": "メイン設定",
"block_services": "特定のサービスをブロックする",
"blocked_services": "ブロックするサービス",
"blocked_services_desc": "人気のあるサイトやサービスを一気にブロック。",
"blocked_services_saved": "ブロックするサービスを保存完了しました。",
"blocked_services_global": "ブロックするサービスに対しグローバル設定を使用する",
"blocked_service": "ブロックするサービス",
"block_all": "すべてブロック",
"unblock_all": "すべてのブロックを解除",
"encryption_certificate_path": "証明書のパスを入力してください",
"encryption_private_key_path": "秘密鍵のパスを入力してください",
"encryption_certificates_source_path": "証明書のパスを設定する",
"encryption_certificates_source_content": "証明書の内容をペーストする",
"encryption_key_source_path": "秘密鍵のパスを設定する",
"encryption_key_source_content": "秘密鍵の内容をペーストする",
"stats_params": "統計設定",
"config_successfully_saved": "設定の保存に成功しました",
"interval_24_hour": "24時間",
"interval_days": "{{count}}日",
"interval_days_plural": "{{count}}日",
"domain": "ドメイン",
"answer": "応答",
"filter_added_successfully": "フィルタの追加に成功しました",
"filter_removed_successfully": "リストの削除に成功しました。",
"filter_updated": "フィルタの更新に成功しました",
"statistics_configuration": "統計設定",
"statistics_retention": "統計保持",
"statistics_retention_desc": "期間を短くすると、一部のデータが失われます",
"statistics_clear": "統計を消去する",
"statistics_clear_confirm": "統計を消去してもよろしいですか?",
"statistics_retention_confirm": "統計の保持を変更してもよろしいですか? 期間を短くすると、一部のデータが失われます",
"statistics_cleared": "統計の消去に成功しました",
"interval_hours": "{{count}}時間",
"interval_hours_plural": "{{count}}時間",
"filters_configuration": "フィルタ設定",
"filters_enable": "フィルタを有効にする",
"filters_interval": "フィルタの更新間隔",
"disabled": "無効",
"username_label": "ユーザ名",
"username_placeholder": "ユーザ名を入力してください",
"password_label": "パスワード",
"password_placeholder": "パスワードを入力して下さい",
"sign_in": "サインイン",
"sign_out": "サインアウト",
"forgot_password": "パスワードをお忘れですか?",
"forgot_password_desc": "<0>こちらの手順</0>に従って、新しいパスワードを作成してください。",
"location": "ロケーション",
"orgname": "組織名",
"netname": "ネットワーク名",
"network": "ネットワーク",
"descr": "説明",
"whois": "Whois",
"filtering_rules_learn_more": "独自ホストリストの作成についての<0>詳細はこちら</0>。",
"blocked_by_response": "応答されたCNAMEかIPアドレスによるブロック",
"blocked_by_cname_or_ip": "CNAMEもしくはIPアドレスによってブロック済み",
"try_again": "再試行する",
"domain_desc": "DNSリライトしたいドメイン名やワイルドカードを入力してください。",
"example_rewrite_domain": "このドメイン名のみへのレスポンスをリライトする",
"example_rewrite_wildcard": "<0>example.org</0>のすべてのサブドメインへのレスポンスをリライトする",
"rewrite_ip_address": "IPアドレス入力した場合AまたはAAAA応答でこのIPが使用されます。",
"rewrite_domain_name": "ドメイン名入力した場合CNAME記録が追加されます。",
"rewrite_A": "<0>A</0>:特別な値、アップストリームからの<0>A</0>記録を保持します。",
"rewrite_AAAA": "<0>AAAA</0>:特別な値、アップストリームからの<0>AAAA</0>記録を保持します。",
"disable_ipv6": "IPv6を無効にする",
"disable_ipv6_desc": "チェックすると、IPv6アドレスタイプAAAAのすべてのDNSクエリは破棄されます。",
"fastest_addr": "最速のIPアドレス",
"fastest_addr_desc": "すべてのDNSサーバーを照会し、全応答の中で最速のIPアドレスを返します",
"autofix_warning_text": "\"改善\"をクリックすると、AdGuardHomeはAdGuardHome DNSサーバを使用するようにシステムを構成します。",
"autofix_warning_list": "次のタスクを実行します:<0>システムDNSStubListenerを非アクティブ化します</0> <0>DNSサーバのアドレスを127.0.0.1に設定します</0> <0>/etc/resolv.confのシンボリックリンクの対象を/run/systemd/resolve/resolv.confに置換します</0> <0>DNSStubListenerを停止しますsystemd-resolvedサービスをリロードします</0>",
"autofix_warning_result": "その結果、システムからのすべてのDNS要求は、デフォルトでAdGuardHomeによって処理されます。",
"tags_title": "タグ",
"tags_desc": "クライアントに対応するタグを選択できます。タグはフィルタリングルールに含めることができ、より正確に適用できます。 <0>詳細</0>",
"form_select_tags": "クライアントのタグを選択する",
"check_title": "フィルタのチェック",
"check_desc": "ホスト名がフィルタで処理されるかをチェックします",
"check": "チェックする",
"form_enter_host": "ホスト名を入力してください",
"filtered_custom_rules": "カスタム・フィルタリングルールによる処理されました",
"choose_from_list": "リストから選択する",
"add_custom_list": "カスタムリストを追加する",
"host_whitelisted": "ホストはホワイトリストに登録されています",
"check_ip": "IPアドレス: {{ip}}",
"check_cname": "CNAME: {{cname}}",
"check_reason": "理由: {{reason}}",
"check_rule": "ルール: {{rule}}",
"check_service": "サービス名: {{service}}",
"check_not_found": "フィルタ一覧には見つかりません",
"client_confirm_block": "クライアント\"{{ip}}\"をブロックしてもよろしいですか?",
"client_confirm_unblock": "クライアント\"{{ip}}\"のブロックを解除してもよろしいですか?",
"client_blocked": "クライアント\"{{ip}}\"のブロックに成功しました",
"client_unblocked": "クライアント\"{{ip}}\"のブロックの解除に成功しました",
"static_ip": "静的IPアドレス",
"static_ip_desc": "AdGuard Homeはサーバであり、正しく機能させるには静的IPアドレスが必要です。そうしないと、ある時点で、ルータがこのデバイスに異なるIPアドレスを割り当てるかもしれません。",
"set_static_ip": "静的IPアドレスを設定する",
"install_static_ok": "良いニュースです! 既に静的IPアドレスで構成されています",
"install_static_error": "AdGuard Homeは、このネットワークインターフェースを自動構成することはできません。手動で行う方法に関する取扱説明書を探してください。",
"install_static_configure": "動的IPアドレスが使用されていることを検出しました— <0>{{ip}}</0>。静的アドレスとして使用しますか?",
"confirm_static_ip": "AdGuard Homeは、{{ip}}を静的IPアドレスとして設定します。よろしいですか",
"list_updated": "{{count}}個のリストが更新されました",
"list_updated_plural": "{{count}}個のリストが更新されました",
"dnssec_enable": "DNSSECを有効にする",
"dnssec_enable_desc": "DNSクエリの応答にDNSSECフラグを設定し、結果を確認しますDNSSEC対応のリゾルバが必要です",
"validated_with_dnssec": "DNSSECにて検証済",
"all_queries": "すべてのクエリ",
"show_blocked_responses": "ブロック済",
"show_whitelisted_responses": "ホワイトリストにあり",
"show_processed_responses": "処理済",
"blocked_safebrowsing": "ブロックされたセーフブラウジング",
"blocked_adult_websites": "ブロックされたアダルトウェブサイト",
"blocked_threats": "ブロックされた脅威",
"allowed": "許可",
"filtered": "フィルタで処理",
"rewritten": "書換",
"safe_search": "セーフサーチ",
"blocklist": "ブロックリスト",
"milliseconds_abbreviation": "ms",
"cache_size": "キャッシュサイズ",
"cache_size_desc": "DNSキャッシュサイズバイト単位",
"cache_ttl_min_override": "最小TTLの上書き",
"cache_ttl_max_override": "最大TTLの上書き",
"enter_cache_size": "キャッシュサイズを入力してください",
"enter_cache_ttl_min_override": "最小TTLを入力してください",
"enter_cache_ttl_max_override": "最大TTLを入力してください",
"cache_ttl_min_override_desc": "上流サーバから受信したTTL値最小を上書き。この値は36001時間を超えることはできません。",
"cache_ttl_max_override_desc": "上流サーバから受信したTTL値最大を上書き。",
"min_exceeds_max_value": "最小値が最大値を超えています",
"value_not_larger_than": "値は{{maximum}}より大きくすることはできません",
"filter_category_general": "一般",
"filter_category_security": "セキュリティ",
"filter_category_regional": "地域別",
"filter_category_other": "その他",
"filter_category_general_desc": "ほとんどのデバイスにて追跡と広告をブロックするリストです。",
"filter_category_security_desc": "マルウェア、フィッシング、詐欺ドメインのブロック専用リストです。",
"filter_category_regional_desc": "それぞれの地域の広告と追跡サーバをターゲットするリストです。",
"filter_category_other_desc": "その他のブロックリストです。",
"original_response": "当初の応答",
"click_to_view_queries": "クエリを表示するにはクリックしてください"
}

View File

@@ -0,0 +1,566 @@
{
"client_settings": "클라이언트 설정",
"example_upstream_reserved": "<0>특정 도메인에 대한</0> DNS 업스트림을 지정할 수 있습니다.",
"upstream_parallel": "쿼리 처리 속도를 높이려면 모든 업스트림 서버에서 동시에 병렬 쿼리를 사용해주세요.",
"parallel_requests": "병렬 처리 요청",
"load_balancing": "로드 밸런싱",
"load_balancing_desc": "한 번에 하나의 서버씩 질의합니다. AdGuard Home은 가중 랜덤 알고리즘를 사용해서 가장 빠른 서버가 자주 사용되도록 서버를 선택합니다.",
"bootstrap_dns": "부트스트랩 DNS 서버",
"bootstrap_dns_desc": "부트스트랩 DNS 서버는 업스트림으로 지정한 DoH/DoT 서버의 IP 주소를 확인하는 데 사용합니다.",
"check_dhcp_servers": "DHCP 서버 체크",
"save_config": "구성 저장",
"enabled_dhcp": "DHCP 서버 활성화됨",
"disabled_dhcp": "DHCP 서버 비활성화됨",
"dhcp_title": "DHCP 서버 (시험!)",
"dhcp_description": "라우터가 DHCP 설정을 제공하지 않으면 AdGuard의 자체 기본 제공 DHCP 서버를 사용할 수 있습니다.",
"dhcp_enable": "DHCP 서버 활성화",
"dhcp_disable": "DHCP 서버 비활성화",
"dhcp_not_found": "네트워크에 활성 DHCP 서버가 없습니다. 기본 제공 DHCP 서버를 안전하게 사용할 수 있습니다. 하지만 자동 테스트에서 100% 보증이 되지 않으므로 네트워크에 활성 DHCP 서버가 있는지없는지 수동으로 다시 확인해 보세요.",
"dhcp_found": "네트워크에 활성 DHCP 서버가 있습니다. 기본 제공 DHCP 서버를 활성화하는 것은 안전하지 않습니다.",
"dhcp_leases": "DHCP 임대",
"dhcp_static_leases": "DHCP 고정 임대",
"dhcp_leases_not_found": "DHCP 임대를 찾을 수 없음",
"dhcp_config_saved": "DHCP 서버 설정 저장됨",
"form_error_required": "필수 필드",
"form_error_ip4_format": "잘못된 IPv4 형식",
"form_error_ip6_format": "잘못된 IPv6 형식",
"form_error_ip_format": "잘못된 IP 형식",
"form_error_mac_format": "잘못된 MAC 형식",
"form_error_client_id_format": "잘못된 클라이언트 ID 형식",
"form_error_positive": "0보다 커야 합니다",
"form_error_negative": "반드시 0 이상이여야 합니다",
"dhcp_form_gateway_input": "게이트웨이 IP",
"dhcp_form_subnet_input": "서브넷 마스크",
"dhcp_form_range_title": "IP 주소 범위",
"dhcp_form_range_start": "범위 시작",
"dhcp_form_range_end": "범위 끝",
"dhcp_form_lease_title": "DHCP 임대 시간 (초 단위로 표시됩니다)",
"dhcp_form_lease_input": "임대 기간",
"dhcp_interface_select": "DHCP 인터페이스 선택",
"dhcp_hardware_address": "하드웨어 주소",
"dhcp_ip_addresses": "IP 주소",
"ip": "IP",
"dhcp_table_hostname": "호스트 이름",
"dhcp_table_expires": "만료",
"dhcp_warning": "DHCP 서버를 사용하려면 네트워크에 다른 활성 DHCP 서버가 없는지 확인해주세요. 다른 활성 DHCP 서버가 있다면, 연결된 장치의 인터넷을 끊을 수 있습니다.",
"dhcp_error": "네트워크에 다른 DHCP 서버가 있는지 확인할 수 없습니다.",
"dhcp_static_ip_error": "DHCP 서버를 사용하려면 고정 IP 주소를 설정해야 합니다. 이 네트워크 인터페이스가 고정 IP 주소를 사용하고 있는지 확인할 수 없습니다. 고정 IP 주소를 수동으로 설정해주세요.",
"dhcp_dynamic_ip_found": "시스템은 <0>{{interfaceName}}</0> 인터페이스에 동적 IP 주소 구성을 사용합니다. DHCP 서버를 사용하기 위해서 고정 IP 주소를 설정해야합니다. <0>{{ipAddress}}</0> 현재 IP 주소입니다. DHCP 활성화 버튼을 누르면 이 IP 주소가 자동으로 고정 IP 주소로 설정됩니다.",
"dhcp_lease_added": "\"{{key}}\" 고정 임대 정상적으로 추가되었습니다",
"dhcp_lease_deleted": "\"{{key}}\" 고정 임대 정상적으로 삭제되었습니다",
"dhcp_new_static_lease": "새 고정 임대",
"dhcp_static_leases_not_found": "DHCP 고정 임대를 찾을 수 없음",
"dhcp_add_static_lease": "고정 임대 추가",
"dhcp_reset": "정말로 DHCP 설정을 초기화할까요?",
"country": "지역",
"city": "도시",
"delete_confirm": "\"{{key}}\"을 삭제하시겠습니까?",
"form_enter_hostname": "호스트 이름을 입력해주세요",
"error_details": "오류 상세 정보",
"response_details": "응답 정보",
"request_details": "요청 세부 사항",
"client_details": "클라이언트 정보",
"details": "정보",
"back": "뒤로",
"dashboard": "대시보드",
"settings": "설정",
"filters": "필터",
"filter": "필터",
"query_log": "쿼리 로그",
"compact": "콤팩트",
"nothing_found": "아무것도 찾을 수 없습니다",
"faq": "자주 묻는 질문",
"version": "버전",
"address": "주소",
"protocol": "프로토콜",
"on": "ON",
"off": "OFF",
"copyright": "Copyright",
"homepage": "홈페이지",
"report_an_issue": "문제를 보고합니다",
"privacy_policy": "개인정보취급방침",
"enable_protection": "보호 활성화",
"enabled_protection": "보호 활성화됨",
"disable_protection": "보호 비활성화",
"disabled_protection": "보호 비활성화됨",
"refresh_statics": "통계 새로 고침",
"dns_query": "DNS 쿼리",
"blocked_by": "<0>필터에 의해 차단됨</0>",
"stats_malware_phishing": "차단된 멀웨어/피싱",
"stats_adult": "차단된 성인 웹사이트",
"stats_query_domain": "쿼리 도메인",
"for_last_24_hours": "지난 24시간 동안",
"for_last_days": "마지막 {{count}} 일",
"for_last_days_plural": "마지막 {{count}} 일의 기록",
"no_domains_found": "도메인이 없습니다",
"requests_count": "요청 수",
"top_blocked_domains": "차단된 도메인",
"top_clients": "클라이언트",
"no_clients_found": "클라이언트가 없습니다",
"general_statistics": "일반 통계",
"number_of_dns_query_days": "최근 {{count}} 일 동안 처리된 DNS 쿼리의 수",
"number_of_dns_query_days_plural": "최근 {{count}} 일 동안 처리된 DNS 쿼리 수",
"number_of_dns_query_24_hours": "최근 24시간 동안 처리된 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_adult": "여러 성인 웹 사이트가 차단됨",
"enforced_save_search": "세이프 서치 강제",
"number_of_dns_query_to_safe_search": "Safe Search가 적용된 검색 엔진에 대해 DNS 요청",
"average_processing_time": "평균처리 시간",
"average_processing_time_hint": "DNS 요청 처리시 평균 시간(밀리초)",
"block_domain_use_filters_and_hosts": "필터 및 호스트 파일을 사용하여 도메인 차단",
"filters_block_toggle_hint": "차단규칙<a href='#filters'>필터</a>을 설정할 수 있습니다.",
"use_adguard_browsing_sec": "AdGuard 브라우징 보안 웹 서비스 사용",
"use_adguard_browsing_sec_hint": "AdGuard Home은 개인정보를 보호하는 API를 사용하여 브라우징 보안 웹 서비스를 통해 도메인이 블랙리스트에 올라 있는지 확인합니다. 참고: 도메인 이름의 SHA256 해시의 짧은 접두사만 서버로 전송됩니다.",
"use_adguard_parental": "AdGuard 자녀 보호 웹 서비스 사용",
"use_adguard_parental_hint": "AdGuard Home은 도메인에 성인 자료가 포함되어 있는지 확인합니다. 브라우징 보안 웹 서비스와 동일한 개인정보 보호 API를 사용함.",
"enforce_safe_search": "세이프서치 강제",
"enforce_save_search_hint": "AdGuard Home은 다음과 같은 검색엔진(구글, 유투브, 빙, 덕덕고, 얀덱스)에서 안전검색이 가능합니다.",
"no_servers_specified": "지정된 서버 없음",
"general_settings": "일반 설정",
"dns_settings": "DNS 설정",
"dns_blocklists": "DNS 차단 목록",
"dns_allowlists": "DNS 허용 목록",
"dns_blocklists_desc": "AdGuard Home은 차단 목록과 일치하는 도메인을 차단합니다.",
"dns_allowlists_desc": "DNS 허용 목록에 있는 도메인은 아무 차단 목록에 있어도 허용됩니다.",
"custom_filtering_rules": "커스텀 필터링 규칙",
"encryption_settings": "암호화 설정",
"dhcp_settings": "DHCP 설정",
"upstream_dns": "업스트림 DNS 서버",
"upstream_dns_hint": "이 항목을 비워 두면 AdGuard Home에서 <a href='https://1.1.1.1/' target='_blank'> Cloudflare DNS </a>를 업스트림으로 사용합니다.",
"test_upstream_btn": "업스트림 테스트",
"upstreams": "업스트림",
"apply_btn": "적용",
"disabled_filtering_toast": "필터링 비활성화됨",
"enabled_filtering_toast": "필터링 활성화됨",
"disabled_safe_browsing_toast": "세이프 브라우징 비활성화됨",
"enabled_safe_browsing_toast": "세이프 브라우징 활성화됨",
"disabled_parental_toast": "자녀 보호 비활성화됨",
"enabled_parental_toast": "자녀 보호 활성화됨",
"disabled_safe_search_toast": "세이프서치 비활성화됨",
"enabled_save_search_toast": "세이프서치 활성화됨",
"enabled_table_header": "활성화됨",
"name_table_header": "이름",
"list_url_table_header": "리스트 URL",
"rules_count_table_header": "규칙 개수",
"last_time_updated_table_header": "마지막 업데이트",
"actions_table_header": "가능한 동작",
"request_table_header": "요청",
"edit_table_action": "편집",
"delete_table_action": "삭제",
"elapsed": "소요",
"filters_and_hosts_hint": "AdGuard Home은 기본적인 광고 차단 규칙과 호스트 파일 문법을 읽을 수 있습니다",
"no_blocklist_added": "차단 목록이 추가되지 않음",
"no_whitelist_added": "허용 목록이 추가되지 않음",
"add_blocklist": "차단 목록 추가",
"add_allowlist": "허용 목록 추가",
"cancel_btn": "취소",
"enter_name_hint": "이름을 입력하세요",
"enter_url_or_path_hint": "URL 또는 목록의 절대 경로를 입력하세요",
"check_updates_btn": "업데이트 확인",
"new_blocklist": "새 차단 목록",
"new_allowlist": "새 허용 목록",
"edit_blocklist": "차단 목록 수정",
"edit_allowlist": "허용 목록 수정",
"choose_blocklist": "차단 목록 선택",
"choose_allowlist": "허용 목록 선택",
"enter_valid_blocklist": "차단 목록에 유효한 URL을 입력해주세요.",
"enter_valid_allowlist": "허용 목록에 유효한 URL을 입력해주세요.",
"form_error_url_format": "잘못된 URL 형식",
"form_error_url_or_path_format": "올바른 URL 또는 목록의 절대 경로가 아닙니다",
"custom_filter_rules": "커스텀 필터링 규칙",
"custom_filter_rules_hint": "한 라인에 한 규칙만 입력하세요. 광고 차단 규칙과 호스트 파일 문법 중 하나를 사용할 수 있습니다",
"examples_title": "예시",
"example_meaning_filter_block": "example.org 을 포함한 모든 서브 도메인 접근을 차단합니다",
"example_meaning_filter_whitelist": "example.org 을 포함한 모든 서브 도메인 접근을 차단 해제합니다.",
"example_meaning_host_block": "AdGuard Home은 example.org 접속 시 127.0.0.1으로 이동합니다. (서브 도메인은 포함되지 않습니다)",
"example_comment": "! 여기는 주석이 올 수 있습니다",
"example_comment_meaning": "말 그대로의 의미입니다",
"example_comment_hash": "# 이것 또한 주석입니다",
"example_regex_meaning": "<0>특정 정규 표현식</0>에 맞는 도메인 접근을 차단합니다",
"example_upstream_regular": "사용자 지정 DNS (UDP을 통한 접속)",
"example_upstream_dot": "암호화 된 <0>DNS-over-TLS</0>",
"example_upstream_doh": "암호화 된 <0>DNS-over-HTTPS</0>",
"example_upstream_sdns": "<1>DNSCrypt</1>나 <2>DNS-over-HTTPS</2> 리졸버를 위해 <0>DNS 스탬프</0>를 사용할 수 있습니다",
"example_upstream_tcp": "사용자 지정 DNS (TCP를 통한 접속)",
"all_lists_up_to_date_toast": "모든 리스트가 이미 최신입니다",
"updated_upstream_dns_toast": "업스트림 DNS 서버를 업데이트하였습니다",
"dns_test_ok_toast": "특정 DNS 서버들은 정상적으로 동작 중입니다",
"dns_test_not_ok_toast": "서버 \"{{key}}\": 사용할 수 없습니다, 제대로 작성했는지 확인하세요.",
"unblock": "차단 해제",
"block": "차단",
"time_table_header": "시간",
"date": "날짜",
"domain_name_table_header": "도메인명",
"domain_or_client": "도메인 또는 클라이언트",
"type_table_header": "유형",
"response_table_header": "응답",
"response_code": "응답 코드",
"client_table_header": "클라이언트",
"empty_response_status": "비어있음",
"show_all_filter_type": "모두 표시",
"show_filtered_type": "필터된 것 표시",
"no_logs_found": "로그 기록 찾을 수 없음",
"refresh_btn": "새로고침",
"previous_btn": "이전",
"next_btn": "다음",
"loading_table_status": "로딩중...",
"page_table_footer_text": "페이지",
"rows_table_footer_text": "행",
"updated_custom_filtering_toast": "사용자 정의 필터링 규칙 업데이트",
"rule_removed_from_custom_filtering_toast": "사용자 정의 필터링 규칙에서 규칙 제거",
"rule_added_to_custom_filtering_toast": "사용자 정의 필터링 규칙에 추가된 규칙",
"query_log_response_status": "상태: {{value}}",
"query_log_filtered": "필터: {{filter}}",
"query_log_confirm_clear": "정말로 모든 쿼리 로그를 비우시겠습니까?",
"query_log_cleared": "쿼리 로그를 성공적으로 초기화했습니다",
"query_log_updated": "질의 로그가 성공적으로 업데이트되었습니다",
"query_log_clear": "쿼리 로그 비우기",
"query_log_retention": "쿼리 로그 저장 기간",
"query_log_enable": "로그 활성화",
"query_log_configuration": "로그 구성",
"query_log_disabled": "쿼리 로그가 비활성화되어 있으며 <0>설정</0>에서 설정할 수 있습니다",
"query_log_strict_search": "검색을 제한하려면 쌍따옴표를 사용해주세요",
"query_log_retention_confirm": "정말로 쿼리 로그 저장 기간을 변경하시겠습니까? 저장 주기를 낮출 경우, 일부 데이터가 손실됩니다",
"anonymize_client_ip": "클라이언트 IP 익명화",
"anonymize_client_ip_desc": "클라이언트의 전체 IP 주소를 로그와 통계에 저장하지 않습니다.",
"dns_config": "DNS 서버 설정",
"dns_cache_config": "DNS 캐시 구성",
"dns_cache_config_desc": "여기에서 DNS 캐시를 구성 할 수 있습니다",
"blocking_mode": "차단 모드",
"default": "기본",
"nxdomain": "NXDOMAIN",
"null_ip": "빈 IP",
"custom_ip": "사용자 지정 IP",
"blocking_ipv4": "IPv4 차단",
"blocking_ipv6": "IPv6 차단",
"dns_over_https": "DNS-over-HTTPS",
"dns_over_tls": "DNS-over-TLS",
"plain_dns": "평문 DNS",
"form_enter_rate_limit": "한도 제한 입력하기",
"rate_limit": "한도 제한",
"edns_enable": "EDNS 클라이언트 서브넷 활성화",
"edns_cs_desc": "활성화되면 AdGuard Home은 클라이언트의 서브넷을 DNS 서버에 전달합니다.",
"rate_limit_desc": "단일 클라이언트에서 허용 가능한 초 당 요청 생성 숫자 (0: 무제한)",
"blocking_ipv4_desc": "차단된 A 요청에 대해서 반환할 IP 주소",
"blocking_ipv6_desc": "차단된 AAAA 요청에 대해서 반환할 IP 주소",
"blocking_mode_default": "기본: Adblock 스타일 규칙에 의해 차단되면 NXDOMAIN으로 응답합니다; /etc/hosts 스타일 규칙에 의해 차단되면 규칙에 정의된 IP 주소로 응답합니다",
"blocking_mode_nxdomain": "NXDOMAIN: NXDOMAIN 코드로 응답",
"blocking_mode_null_ip": "Null IP: 제로 IP 주소 (A는 0.0.0.0; AAAA는 ::) 로 응답합니다",
"blocking_mode_custom_ip": "커스텀 IP: 직접 설정한 IP 주소로 응답합니다",
"upstream_dns_client_desc": "이 값을 비워둔다면 AdGuard Home은 <0>DNS 설정</0>에 설정되어 있는 값을 사용합니다.",
"tracker_source": "추적기 소스",
"source_label": "소스",
"found_in_known_domain_db": "알려진 도메인 데이터베이스에서 발견됨.",
"category_label": "카테고리",
"rule_label": "규칙",
"list_label": "목록",
"unknown_filter": "알려지지 않은 필터 {{filterId}}",
"known_tracker": "알려진 추적기",
"install_welcome_title": "AdGuard Home에 오신 것을 환영합니다!",
"install_welcome_desc": "AdGuard Home은 광범위한 네트워크 광고와 추적 DNS 서버를 차단 합니다. 그것의 목적은 당신이 당신의 전체 네트워크와 당신의 모든 기기를 제어하는 것이며, 그것은 클라이언트의 프로그램을 사용할 필요가 없습니다.",
"install_settings_title": "관리자 웹 인터페이스",
"install_settings_listen": "네트워크 인터페이스",
"install_settings_port": "포트",
"install_settings_interface_link": "AdGuard Home 관리자 웹 인터페이스는 다음 주소로 제공됨:",
"form_error_port": "올바른 포트 값 입력",
"install_settings_dns": "DNS 서버",
"install_settings_dns_desc": "다음 주소의 DNS 서버를 사용하도록 장치 또는 라우터를 구성해야 합니다.",
"install_settings_all_interfaces": "모든 인터페이스",
"install_auth_title": "인증",
"install_auth_desc": "AdGuard Home 관리자 웹 인터페이스에 암호를 사용하는것이 권장됩니다. 로컬 네트워크에서만 액세스할 수 있더라도 혹시 모를 외부 액세스로부터 보호하는 것도 중요합니다.",
"install_auth_username": "사용자 이름",
"install_auth_password": "비밀번호",
"install_auth_confirm": "비밀번호 확인",
"install_auth_username_enter": "사용자 이름 입력",
"install_auth_password_enter": "비밀번호 입력",
"install_step": "단계",
"install_devices_title": "디바이스를 설정하기",
"install_devices_desc": "AdGuard Home을 사용하려면, 당신의 기기를 설정해야합니다.",
"install_submit_title": "축하합니다!",
"install_submit_desc": "구축 프로세스가 완료되었으며 이제 AdGuard Home을 사용할 준비가 되었습니다.",
"install_devices_router": "라우터",
"install_devices_router_desc": "이 설정은 이제 자동으로 당신의 집의 라우터에 연결된 모든 기기에 적용될 것이기에 수동으로 각각의 기기를 설정해줄 필요가 없습니다.",
"install_devices_address": "AdGuard Home DNS 서버는 다음의 주소를 받고 있습니다.",
"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_3": "AdGuard Home 서버 주소를 입력하세요",
"install_devices_router_list_4": "일부 라우터는 DNS서버의 커스텀 설정이 불가합니다. 간혹 AdGuard Home을 DHCP서버로 이용하여 문제를 해결하는 경우가 있지만 문제가 지속될 경우 사용하시는 라우터 모델의 매뉴얼을 참고하시어 <0>DNS</0>서버 커스텀 설정 방법을 직접 살펴보셔야 합니다.",
"install_devices_windows_list_1": "시작 메뉴 또는 윈도우 검색을 통해 제어판을 여세요",
"install_devices_windows_list_2": "네트워크 및 인터넷 카테고리로 이동한 다음 네트워크 및 공유 센터로 이동하세요.",
"install_devices_windows_list_3": "화면 왼쪽에서 어댑터 설정 변경을 찾아 클릭하세요.",
"install_devices_windows_list_4": "활성 연결을 선택한 후 우클릭으로 속성을 선택하세요.",
"install_devices_windows_list_5": "목록에서 인터넷 프로토콜 버전 4 (TCP/IP) 를 찾아 선택하고 속성을 다시 클릭하세요.",
"install_devices_windows_list_6": "다음 DNS 서버 주소 사용을 선택하고 AdGuard Home 서버 주소 입력하세요.",
"install_devices_macos_list_1": "Apple 아이콘을 클릭하고 시스템 기본 설정으로 이동하세요.",
"install_devices_macos_list_2": "네트워크를 클릭하세요.",
"install_devices_macos_list_3": "목록에서 첫 번째 연결을 선택하고 고급을 클릭해주세요.",
"install_devices_macos_list_4": "DNS 탭을 선택하고 AdGuard Home 서버 주소를 입력하세요.",
"install_devices_android_list_1": "안드로이드 메뉴 홈 화면에서 설정을 누르세요.",
"install_devices_android_list_2": "메뉴에서 Wi-Fi를 클릭하세요. 사용 가능한 모든 네트워크가 나열된 화면이 표시됩니다 (모바일 연결을 위해 사용자 지정 DNS를 설정할 수 없습니다).",
"install_devices_android_list_3": "연결된 네트워크를 길게 누르고 네트워크 수정을 누르세요.",
"install_devices_android_list_4": "일부 장치에서는 추가설정을 하려면 고급란을 설정해야합니다. 안드로이드 DNS 설정을 조절하려면 IP설정을 DHCP에서 고정(Static) 으로 전환하세요.",
"install_devices_android_list_5": "설정된 DNS 1 및 DNS 2 값을 AdGuard Home 서버 주소로 변경하세요.",
"install_devices_ios_list_1": "홈 화면에서 설정을 누르세요.\n",
"install_devices_ios_list_2": "왼쪽 메뉴에서 Wi-Fi 선택하세요 ( 모바일 네트워크에 대한 DNS를 구성할 수 없습니다).\n",
"install_devices_ios_list_3": "현재 활성 네트워크의 이름을 누르세요.",
"install_devices_ios_list_4": "DNS 필드에 AdGuard Home 서버 주소를 입력하세요.",
"get_started": "시작하기",
"next": "다음",
"open_dashboard": "대시보드 열기",
"install_saved": "성공적으로 저장되었습니다",
"encryption_title": "암호화",
"encryption_desc": "DNS 및 관리자 웹 인터페이스에 대한 암호화 (HTTPS/TLS) 지원입니다.",
"encryption_config_saved": "암호화 구성이 저장되었습니다.",
"encryption_server": "서버 이름",
"encryption_server_enter": "도메인 이름을 입력하세요.",
"encryption_server_desc": "HTTPS를 사용하려면 SSL 인증서와 일치하는 서버 이름을 입력해야 합니다.",
"encryption_redirect": "HTTPS로 자동 리디렉션",
"encryption_redirect_desc": "상자를 체크하면 AdGuard Home 자동으로 사용자를 HTTP에서 HTTPS 주소로 리디렉션합니다.",
"encryption_https": "HTTP 포트",
"encryption_https_desc": "HTTPS 포트가 구성되면 HTTPS를 통해 AdGuard Home 관리자 인터페이스에 액세스할 수 있으며, '/dns-query' 위치에 DNS-over-HTTPS도 제공합니다.",
"encryption_dot": "DNS-over-TLS 포트",
"encryption_dot_desc": "이 포트가 구성된 경우 AdGuard Home 이 포트에서 DNS-over-TLS 서버를 실행합니다.",
"encryption_certificates": "인증서",
"encryption_certificates_desc": "암호화를 사용하려면 도메인에 대해 올바른 SSL 인증서 체인을 제공해야 합니다. <0>{{link}}</0>에서 무료 증명서를 받을 수도 있고, 신뢰할 수있는 인증 기관에서 구입할 수 있습니다.",
"encryption_certificates_input": "PEM으로 인코딩된 인증서 여기에 복사/붙여넣기하세요.",
"encryption_status": "상태",
"encryption_expire": "만료",
"encryption_key": "개인 키",
"encryption_key_input": "PEM으로 인코딩된 개인 키를 여기에 복사/붙여넣기하세요.",
"encryption_enable": "암호화 활성화 (HTTPS, DNS-over-HTTPS 및 DNS-over-TLS)",
"encryption_enable_desc": "암호화가 활성화 된 경우 AdGuard Home 관리자 인터페이스는 HTTPS를 통해 작동하고 DNS 서버는 DNS-over-HTTPS 및 DNS-over-TLS를 통해 요청을 수신합니다.",
"encryption_chain_valid": "인증서 체인이 유효합니다",
"encryption_chain_invalid": "인증서 체인이 유효하지 않습니다",
"encryption_key_valid": "유효한 {{type}} 개인 키 입니다.",
"encryption_key_invalid": "유효하지 않는 {{type}} 개인 키 입니다.",
"encryption_subject": "대상",
"encryption_issuer": "발행자",
"encryption_hostnames": "호스트 이름",
"encryption_reset": "암호화 설정을 재설정하시겠습니까?",
"topline_expiring_certificate": "SSL 인증서가 곧 만료됩니다. 업데이트<0> 암호화 설정</0>.",
"topline_expired_certificate": "SSL 인증서가 만료되었습니다. 업데이트<0> 암호화 설정</0>.",
"form_error_port_range": "80-65535 범위에서 포트 값을 입력해주세요.",
"form_error_port_unsafe": "안전하지 않은 포트입니다",
"form_error_equal": "동일하지 않아야 함",
"form_error_password": "비밀번호 불일치",
"reset_settings": "설정 초기화",
"update_announcement": "AdGuard Home {{version}} 사용 가능합니다! <0>이곳</0>을 클릭하여 더 많은 정보를 확인하세요.",
"setup_guide": "설치 안내",
"dns_addresses": "DNS 주소",
"dns_start": "DNS 서버를 시작하고 있습니다",
"dns_status_error": "DNS 서버 상태를 가져오는 도중 오류가 발생했습니다",
"down": "다운로드",
"fix": "수정",
"dns_providers": "여기에 선택가능한 DNS 목록 </0>이 있습니다.",
"update_now": "지금 업데이트",
"update_failed": "자동 업데이트 실패 되었습니다. <a href='https://github.com/AdguardTeam/AdGuardHome/wiki/Getting-Started#update'> 단계를 따라 수동으로 업데이트하세요</a>",
"processing_update": "잠시만 기다려주세요, AdGuard Home가 업데이트 중입니다.",
"clients_title": "클라이언트",
"clients_desc": "AdGuard Home에 연결할 기기들을 설정",
"settings_global": "글로벌",
"settings_custom": "사용자",
"table_client": "클라이언트",
"table_name": "이름",
"save_btn": "저장",
"client_add": "클라이언트 추가",
"client_new": "새 클라이언트",
"client_edit": "클라이언트 수정",
"client_identifier": "식별자",
"ip_address": "IP 주소",
"client_identifier_desc": "사용자는 IP 주소 또는 MAC 주소로 식별할 수 있지만 AdGuard Home이 <0>DHCP 서버인 </0> 경우에만 사용자는 MAC 주소로 식별할 수 있습니다.",
"form_enter_ip": "IP 입력",
"form_enter_mac": "MAC 입력",
"form_enter_id": "식별자 입력",
"form_add_id": "식별자 추가",
"form_client_name": "클라이언트 이름 입력",
"name": "이름",
"client_global_settings": "글로벌 설정 사용",
"client_deleted": "클라이언트 \"{{key}}\"가 정상적으로 삭제되었습니다",
"client_added": "클라이언트 \"{{key}}\"가 정상적으로 추가되었습니다",
"client_updated": "클라이언트 \"{{key}}\"가 정상적으로 업데이트되었습니다",
"clients_not_found": "클라이언트 없음",
"client_confirm_delete": "정말 클라이언트 \"{{key}}\" 삭제하시겠습니까?",
"list_confirm_delete": "정말로 이 목록을 제거하시겠습니까?",
"auto_clients_title": "클라이언트 (런타임)",
"auto_clients_desc": "AdGuard Home을 사용하지만 구성에 저장되지 않은 클라이언트의 데이터입니다.",
"access_title": "접근 설정",
"access_desc": "여기에서 AdGuard Home DNS 서버에 대한 액세스 규칙을 구성할 수 있습니다.",
"access_allowed_title": "허용된 클라이언트",
"access_allowed_desc": "CIDR 또는 IP 주소 목록입니다. 구성된 경우 AdGuard Home은 이러한 IP 주소의 요청만 수락할 수 있습니다.",
"access_disallowed_title": "차단된 클라이언트",
"access_disallowed_desc": "CIDR 또는 IP 주소 목록입니다. 구성된 경우 AdGuard Home은 이러한 IP 주소의 요청을 삭제합니다.",
"access_blocked_title": "차단된 도메인",
"access_blocked_desc": "이 기능을 필터와 혼동하지 마세요. AdGuard Home은 지정된 도메인의 쿼리 요청에서 DNS 쿼리를 삭제합니다. 여기서 특정 도메인을 지정하거나, 와일드 카드 또는 URL 필터규칙을 설정해보세요. 예) 'example.org', '*.example.org' or '||example.org^'.",
"access_settings_saved": "액세스 설정이 성공적으로 저장되었습니다.",
"updates_checked": "업데이트가 성공적으로 확인되었습니다",
"updates_version_equal": "AdGuard Home 최신 상태입니다.",
"check_updates_now": "지금 업데이트 확인",
"dns_privacy": "DNS 프라이버시",
"setup_dns_privacy_1": "<0>DNS-over-TLS:</0> <1>{{address}}</1> 사용하세요.",
"setup_dns_privacy_2": "<0>DNS-over-HTTPS:</0> <1>{{address}}</1> 사용하세요.",
"setup_dns_privacy_3": "<0>암호화된 DNS 프로토콜은 Android 9에서만 지원됩니다. 다른 운영 체제를 위한 추가 소프트웨어를 설치해야 합니다.</0><0>사용할 수 있는 소프트웨어 목록입니다. </0>",
"setup_dns_privacy_android_1": "Android 9는 기본적으로 DNS-over-TLS를 지원합니다. 구성하려면 설정 → 네트워크 및 인터넷 → 고급 → 개인 DNS로 이동하여 도메인 이름을 입력하세요.",
"setup_dns_privacy_android_2": "<0>Android용 AdGuard</0>DNS-over-HTTPS <1>및</1> DNS-over-TLS <1>지원합니다</1>",
"setup_dns_privacy_android_3": "<0>인트라</0> 안드로이드에 <1>DNS-over-HTTPS </1>지원 추가합니다.",
"setup_dns_privacy_ios_1": "<0>DNSCloak은</0> <1>DNS-over-HTTPS를</1> 지원하지만, 자신의 서버를 사용하도록 구성하려면 <2>DNS 스탬프를</2> 생성해야 합니다.",
"setup_dns_privacy_ios_2": "<0>iOS용 AdGuard는</0> <1>DNS-over-HTTPS </1>및 <1>DNS-over-TLS</1> 설정을 지원합니다.",
"setup_dns_privacy_other_title": "기타 구현",
"setup_dns_privacy_other_1": "AdGuard Home 모든 플랫폼에서 안전한 DNS 클라이언트가 될 수 있습니다.",
"setup_dns_privacy_other_2": "<0>dnsproxy는</0> 알려진 모든 안전한 DNS 프로토콜을 지원합니다.",
"setup_dns_privacy_other_3": "<0>dnscrypt-proxy</0> <1>DNS-over-HTTPS</1> 지원합니다.",
"setup_dns_privacy_other_4": "<0>Mozilla Firefox</0><1>DNS-over-HTTPS</1>지원합니다.",
"setup_dns_privacy_other_5": "<0>이곳이나</0> <1>이곳을</1> 클릭하여 더 많은 구현에 대한 정보를 확인하세요.",
"setup_dns_notice": "<1>DNS-over-HTTPS</1> 또는 <1>DNS-over-TLS를</1> 사용하려면 AdGuard Home 설정에서 <0>암호화를 구성해야 합니다.</0>",
"rewrite_added": "\"{{key}}\"에 대한 DNS 수정 정보를 성공적으로 추가 됩니다.",
"rewrite_deleted": "\"{{key}}\"에 대한 DNS 수정 정보를 성공적으로 삭제 됩니다.",
"rewrite_add": "DNS 변환 정보를 추가합니다",
"rewrite_not_found": "DNS 변경 정보를 찾을 수 없습니다",
"rewrite_confirm_delete": "\"{{key}}\"에 대한 DNS 변경 정보를 삭제하시겠습니까?",
"rewrite_desc": "특정 도메인 이름에 대한 사용자 지정 DNS 응답을 쉽게 구성할 수 있습니다.",
"rewrite_applied": "리디렉션 규칙이 적용됩니다",
"rewrite_hosts_applied": "호스트 파일 규칙에 따라 재작성",
"dns_rewrites": "DNS 변경",
"form_domain": "도메인 이름 또는 와일드카드를 입력합니다",
"form_answer": "IP 주소 또는 도메인 이름을 입력하세요",
"form_error_domain_format": "도메인 형식이 잘못되었습니다",
"form_error_answer_format": "답변 형식이 잘못되었습니다. ",
"configure": "설정하기",
"main_settings": "기본 설정",
"block_services": "특정 서비스 차단",
"blocked_services": "차단된 서비스",
"blocked_services_desc": "인기 있는 사이트와 서비스를 빠르게 차단할 수 있습니다.",
"blocked_services_saved": "차단된 서비스가 성공적으로 저장되었습니다.",
"blocked_services_global": "글로벌 차단 서비스 사용",
"blocked_service": "차단된 서비스",
"block_all": "차단",
"unblock_all": "차단 해제",
"encryption_certificate_path": "인증서 경로",
"encryption_private_key_path": "비밀키 경로",
"encryption_certificates_source_path": "인증서 파일 경로 설정",
"encryption_certificates_source_content": "인증서 내용 붙여넣기",
"encryption_key_source_path": "비밀키 파일 경로 설정",
"encryption_key_source_content": "비밀키 내용 붙여넣기",
"stats_params": "통계 구성",
"config_successfully_saved": "설정이 성공적으로 저장되었습니다.",
"interval_24_hour": "24시간",
"interval_days": "{{count}} 일",
"interval_days_plural": "{{count}} 일",
"domain": "도메인",
"answer": "응답",
"filter_added_successfully": "목록이 성공적으로 추가됨",
"filter_removed_successfully": "목록이 성공적으로 제거되었습니다",
"filter_updated": "필터가 성공적으로 업데이트됨",
"statistics_configuration": "통계 구성",
"statistics_retention": "통계 저장 기간",
"statistics_retention_desc": "값을 줄이면 설정한 값보다 오래된 데이터가 소멸됩니다.",
"statistics_clear": " 통계 초기화",
"statistics_clear_confirm": "통계를 정말로 초기화하시겠습니까?",
"statistics_retention_confirm": "정말로 통계 저장 기간을 변경하시겠습니까? 저장 주기를 낮출 경우, 일부 데이터가 손실됩니다",
"statistics_cleared": "통계를 성공적으로 초기화했습니다.",
"interval_hours": "{{count}} 시간",
"interval_hours_plural": "{{count}} 시간",
"filters_configuration": "필터 구성",
"filters_enable": "필터 활성화",
"filters_interval": "필터 업데이트 주기",
"disabled": "비활성화 됨",
"username_label": "사용자 이름",
"username_placeholder": "사용자 이름 입력",
"password_label": "비밀번호",
"password_placeholder": "비밀번호 입력",
"sign_in": "로그인",
"sign_out": "로그아웃",
"forgot_password": "비밀번호를 잊어버렸나요?",
"forgot_password_desc": "다음과 같은 <0>단계</0>를 따라 귀하의 사용자 계정을 위한 새로운 비밀번호를 생성하세요.",
"location": "위치",
"orgname": "단체 이름",
"netname": "네트워크 이름",
"network": "네트워크",
"descr": "설명",
"whois": "후이즈",
"filtering_rules_learn_more": "차단 리스트를 직접 호스트하는 법을 <0>알아보세요</0>.",
"blocked_by_response": "응답 중 차단된 CNAME 또는 IP",
"blocked_by_cname_or_ip": "CNAME 또는 IP에 의해 차단됨",
"try_again": "다시 시도해주세요",
"domain_desc": "다시 작성할 도메인 이름 또는 와일드카드를 입력합니다.",
"example_rewrite_domain": "이 도메인 이름에 대한 응답을 변경합니다.",
"example_rewrite_wildcard": "모든 서브 도메인에 대한 <0>example.org</0> 응답을 변경합니다",
"rewrite_ip_address": "IP 주소: 이 IP를 A 또는 AAAA 응답에 사용합니다",
"rewrite_domain_name": "도메인 이름: CNAME 레코드 추가",
"rewrite_A": "<0> A</0>: 특수 값, 업스트림에서 <0> A</0> 기록 유지",
"rewrite_AAAA": "<0> AAAA</0>: 특수 값, 업스트림에서 <0> AAAA</0> 기록 유지",
"disable_ipv6": "IPv6 비활성화",
"disable_ipv6_desc": "이 기능이 활성화되면 IPv6 (타입 AAAA) 의 모든 DNS 쿼리가 드랍됩니다.",
"fastest_addr": "가장 빠른 IP 주소",
"fastest_addr_desc": "반응이 가장 빠른 IP주소를 가진 DNS서버에 쿼리를 수행합니다.",
"autofix_warning_text": "\"Fix\"를 클릭한다면 AdGuard Home은 시스템이 AdGuard Home의 DNS 서버를 사용하도록 설정합니다.",
"autofix_warning_list": "다음 작업을 진행합니다: <0>DNSStubListener 시스템 비활성화</0> <0>DNS 서버 주소를 127.0.0.1로 설정</0> <0>/etc/resolv.conf의 심볼릭 링크 타겟을 /run/systemd/resolve/resolv.conf로 변경</0> <0>DNSStubListener 중지 (systemd-resolved 서비스 새로고침)</0>",
"autofix_warning_result": "결과적으로 시스템의 모든 DNS 요청은 기본적으로 AdGuard Home에 의해 처리됩니다.",
"tags_title": "태그",
"tags_desc": "클라이언트에 해당하는 태그를 선택할 수 있습니다. 필터링 규칙에 태그를 포함시키면 더 정확하게 적용시킬 수 있습니다. <0>자세히 알아보기</0>",
"form_select_tags": "클라이언트 태그 선택",
"check_title": "필터링 확인",
"check_desc": "호스트 이름이 필터링되는지 확인",
"check": "확인",
"form_enter_host": "호스트 이름을 입력해주세요",
"filtered_custom_rules": "사용자 정의 필터링 규칙으로 필터링됨",
"choose_from_list": "목록에서 선택",
"add_custom_list": "사용자 정의 목록 추가",
"host_whitelisted": "예외 목록에 있는 호스트",
"check_ip": "IP 주소: {{ip}}",
"check_cname": "CNAME: {{cname}}",
"check_reason": "이유: {{reason}}",
"check_rule": "규칙: {{rule}}",
"check_service": "서비스 이름: {{service}}",
"check_not_found": "필터 목록에서 찾을 수 없음",
"client_confirm_block": "정말로 클라이언트 \"{{ip}}\"을(를) 차단하시겠습니까?",
"client_confirm_unblock": "정말로 클라이언트 \"{{ip}}\"의 차단을 해제하시겠습니까?",
"client_blocked": "클라이언트 \"{{ip}}\"(이)가 성공적으로 차단되었습니다",
"client_unblocked": "클라이언트 \"{{ip}}\"의 차단을 성공적으로 해제했습니다",
"static_ip": "고정 IP 주소",
"static_ip_desc": "AdGuard Home는 서버라서 정상적으로 작동하려면 고정 IP 주소가 필요합니다. 그렇지 않다면 라우터가 언젠가 이 기기에 다른 IP 주소를 할당할 수도 있습니다.",
"set_static_ip": "고정 IP 주소 설정",
"install_static_ok": "좋은 소식입니다! 고정 IP 주소가 이미 설정되어있네요",
"install_static_error": "AdGuard Home는 이 네트워크 인터페이스에서 자동 설정할 수 없습니다. 여기에서 어떻게 이걸 수동으로 할 수 있는지 확인해주세요.",
"install_static_configure": "동적 IP 주소를 사용하는 것을 감지했습니다 — <0>{{ip}}</0>. 정말로 이걸 고정 IP로 사용하시겠습니까?",
"confirm_static_ip": "AdGuard Home이 {{ip}}를 고정 IP 주소로 설정하려고 합니다. 계속하시겠습니까?",
"list_updated": "{{count}} 리스트 업데이트됨",
"list_updated_plural": "{{count}} 리스트 업데이트됨",
"dnssec_enable": "DNSSEC 활성화",
"dnssec_enable_desc": "발신 DNS 쿼리에서 DNSSEC 플래그를 설정하고 결과를 확인합니다 (DNSSEC-enabled resolver 필수)",
"validated_with_dnssec": "DNSSEC로 검증됨",
"all_queries": "모든 쿼리",
"show_blocked_responses": "차단됨",
"show_whitelisted_responses": "예외 적용됨",
"show_processed_responses": "처리됨",
"blocked_safebrowsing": "차단된 세이프 브라우징",
"blocked_adult_websites": "차단된 성인 웹사이트",
"blocked_threats": "차단된 위협",
"allowed": "허용됨",
"filtered": "필터링됨",
"rewritten": "재작성됨",
"safe_search": "세이프 서치",
"blocklist": "차단 목록",
"milliseconds_abbreviation": "ms",
"cache_size": "캐시 크기",
"cache_size_desc": "DNS 캐시 크기 (바이트)",
"cache_ttl_min_override": "최소 TTL 무시",
"cache_ttl_max_override": "최대 TTL 무시",
"enter_cache_size": "캐시 크기를 입력하세요",
"enter_cache_ttl_min_override": "최소 TTL을 입력하세요",
"enter_cache_ttl_max_override": "최대 TTL을 입력하세요",
"cache_ttl_min_override_desc": "업스트림 서버에서 수신한 TTL 값(최소)을 무시합니다. 이 값은 3600(1시간)보다 클 수 없습니다",
"cache_ttl_max_override_desc": "업스트림 서버에서 수신한 TTL 값(최대)을 무시합니다",
"min_exceeds_max_value": "최소값이 최대값을 초과합니다",
"value_not_larger_than": "값은 {{maximum}}보다 클 수 없습니다",
"filter_category_general": "일반 목록",
"filter_category_security": "보안 목록",
"filter_category_regional": "지역 목록",
"filter_category_other": "기타",
"filter_category_general_desc": "대부분의 기기에서 추적 및 광고를 차단하는 목록",
"filter_category_security_desc": "멀웨어, 피싱 또는 사기 도메인을 차단하는 목록",
"filter_category_regional_desc": "지역 광고 및 추적 서버에 중점을 둔 목록",
"filter_category_other_desc": "기타 차단 목록",
"original_response": "원래 응답",
"click_to_view_queries": "쿼리를 보려면 클릭합니다"
}

View File

@@ -0,0 +1,567 @@
{
"client_settings": "cliënt Instellingen",
"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",
"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_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",
"save_config": "Configuratie opslaan",
"enabled_dhcp": "DHCP server inschakelen",
"disabled_dhcp": "DHCP server uitschakelen",
"dhcp_title": "DHCP server (experimenteel!)",
"dhcp_description": "Indien je router geen DHCP instellingen heeft,kan je AdGuard's eigen ingebouwde DHCP server gebruiken.",
"dhcp_enable": "DHCP server inschakelen",
"dhcp_disable": "DHCP server uitschakelen",
"dhcp_not_found": "Geen actieve DHCP servers gevonden op het netwerk. Het is VEILIG om de ingebouwde DHCP server in te schakelen",
"dhcp_found": "Actieve DHCP server(s) gevonden op het netwerk. het is NIET veilig om de ingebouwde DHCP server in te schakelen.",
"dhcp_leases": "DHCP lease overzicht",
"dhcp_static_leases": "DHCP statische lease",
"dhcp_leases_not_found": "Geen DHCP lease gevonden",
"dhcp_config_saved": "DHCP server configuratie opgeslagen",
"form_error_required": "Vereist veld",
"form_error_ip4_format": "Ongeldig IPv4 formaat",
"form_error_ip6_format": "Ongeldig IPv6 formaat",
"form_error_ip_format": "Ongeldig IPv4 formaat",
"form_error_mac_format": "Ongeldig MAC formaat.",
"form_error_client_id_format": "Opmaak cliënt-ID is ongeldig",
"form_error_positive": "Moet groter zijn dan 0",
"form_error_negative": "Moet 0 of hoger dan 0 zijn",
"dhcp_form_gateway_input": "Gateway IP",
"dhcp_form_subnet_input": "Subnet mask",
"dhcp_form_range_title": "Bereik van IP adressen",
"dhcp_form_range_start": "Eerste adres",
"dhcp_form_range_end": "Laatste adres",
"dhcp_form_lease_title": "DHCP lease tijd (in seconden)",
"dhcp_form_lease_input": "Lease tijd totaal",
"dhcp_interface_select": "Selecteer DHCP interface",
"dhcp_hardware_address": "Hardware adres",
"dhcp_ip_addresses": "IP adressen",
"ip": "IP",
"dhcp_table_hostname": "Host naam",
"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_error": "We kunnen niet bepalen of er een andere DHCP server in het netwerk is.",
"dhcp_static_ip_error": "Om de DHCP server te gebruiken, moet een statisch IP-adres worden ingesteld. We hebben niet kunnen vaststellen of de netwerkinterface is geconfigureerd met een statisch IP-adres. Stel handmatig een statisch IP-adres in.",
"dhcp_dynamic_ip_found": "Om de DHCP server te gebruiken voor interface <0>{{interfaceName}}</0>, moet er een statisch IP-adres worden ingesteld. Uw huidige IP-adres is <0>{{ipAddress}}</0>. We stellen automatische dit IP-adres in, als statisch IP-adres, wanneer u op de knop DHCP inschakelen drukt.",
"dhcp_lease_added": "Statische uitgifte \"{{key}}\" met succes toegevoegd",
"dhcp_lease_deleted": "Statische uitgifte \"{{key}}\" met succes verwijderd",
"dhcp_new_static_lease": "Voeg static lease toe",
"dhcp_static_leases_not_found": "Geen DHCP static lease gevonden",
"dhcp_add_static_lease": "Voeg statische lease toe",
"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?",
"form_enter_hostname": "Vul hostnaam in",
"error_details": "Fout details",
"response_details": "Antwoorddetails",
"request_details": "Verzoekdetails",
"client_details": "Client details",
"details": "Details",
"back": "Terug",
"dashboard": "Dashboard",
"settings": "Instellingen",
"filters": "Filters",
"filter": "Filter",
"query_log": "Query log",
"compact": "Compact",
"nothing_found": "Niets gevonden",
"faq": "Veel gestelde vragen",
"version": "Versie",
"address": "Adres",
"protocol": "Protocol",
"on": "Aan",
"off": "Uit",
"copyright": "Copyright",
"homepage": "Startpagina",
"report_an_issue": "Rapporteer een probleem",
"privacy_policy": "Privacybeleid",
"enable_protection": "Schakel bescherming in",
"enabled_protection": "Bescherming ingeschakeld",
"disable_protection": "Schakel bescherming uit",
"disabled_protection": "Bescherming uitgeschakeld",
"refresh_statics": "Ververs statistieken",
"dns_query": "DNS-queries",
"blocked_by": "<0>Geblokkeerd door Filters</0>",
"stats_malware_phishing": "Geblokkeerde malware/phishing",
"stats_adult": "Geblokkeerde 18+ websites",
"stats_query_domain": "Meest bezochte domeinen",
"for_last_24_hours": "van de laatste 24-uur",
"for_last_days": "sinds de laatste {{count}} dagen",
"for_last_days_plural": "sinds de laatste {{count}} dagen",
"no_domains_found": "Geen domeinen gevonden",
"requests_count": "Verzoek teller",
"top_blocked_domains": "Top geblokkeerde domeinen",
"top_clients": "Top gebruikers",
"no_clients_found": "Geen gebruikers gevonden",
"general_statistics": "Generieke statistieken",
"number_of_dns_query_days": "Aantal verwerkte DNS aanvragen van de laatste {{count}} dagen",
"number_of_dns_query_days_plural": "Aantal verwerkte DNS aanvragen van de laatste {{count}} dagen",
"number_of_dns_query_24_hours": "Aantal verwerkte aanvragen van de laatste 24 uur",
"number_of_dns_query_blocked_24_hours": "Aantal geblokkeerde DNS aanvragen door advertentie blokkering en hosts blokkeerlijsten",
"number_of_dns_query_blocked_24_hours_by_sec": "Aantal geblokkeerde DNS aanvragen door AdGuard browsing security module",
"number_of_dns_query_blocked_24_hours_adult": "Opgevraagde 18+ websites",
"enforced_save_search": "Geforceerd veilig zoeken",
"number_of_dns_query_to_safe_search": "Aantal DNS aanvragen in zoekmachines dmv geforceerd veilig zoeken",
"average_processing_time": "Gemiddelde procestijd",
"average_processing_time_hint": "Gemiddelde verwerkingstijd in milliseconden van een DNS aanvraag",
"block_domain_use_filters_and_hosts": "Blokkeerd domeinen dmv filters en host bestanden",
"filters_block_toggle_hint": "Je kunt blokkeer regels toevoegen in de <a href='#filters'>Filters</a>instellingen",
"use_adguard_browsing_sec": "Gebruik AdGuardBrowsing Security web service",
"use_adguard_browsing_sec_hint": "AdGuard Home controleert of het domein in de blokkeerlijst voorkomt dmv Browsing Security web service. Dit gebeurt dmv een privacy vriendelijk API verzoek:een korte prefix van de domein naam met SHA256 hash wordt verzonden naar de server.",
"use_adguard_parental": "Gebruik AdGuard Ouderlijk toezicht web service",
"use_adguard_parental_hint": "AdGuard Home controleert of het domein 18+ content bevat. Dit gebeurt dmv dezelfde privacy vriendelijke API als de Browsing Security web service.",
"enforce_safe_search": "Forceer Veilig Zoeken",
"enforce_save_search_hint": "AdGuard Home kan veilig zoeken forceren voor de volgende zoekmachines: Google, Youtube, Bing, en Yandex.",
"no_servers_specified": "Geen servers gespecificeerd",
"general_settings": "Generieke instellingen",
"dns_settings": "DNS Instellingen",
"dns_blocklists": "DNS blokkeerlijsten",
"dns_allowlists": "DNS toestemmingslijsten",
"dns_blocklists_desc": "AdGuard Home zal domeinen blokkeren die voorkomen in de blokkeerlijsten.",
"dns_allowlists_desc": "Domeinen in de DNS toestemmingslijsten worden toegestaan zelfs al komen ze voor in de blokkeerlijsten.",
"custom_filtering_rules": "Aangepaste filter regels",
"encryption_settings": "Encryptie Instellingen",
"dhcp_settings": "DHCP Instellingen",
"upstream_dns": "Upstream DNS servers",
"upstream_dns_hint": "Indien je dit veld leeg laat, zal AdGuard Home <a href='https://1.1.1.1/' target='_blank'>Cloudflare DNS</a> gebruiken als upstream.",
"test_upstream_btn": "Test upstream",
"upstreams": "Upstreams",
"apply_btn": "Toepassen",
"disabled_filtering_toast": "Filters uitgeschakeld",
"enabled_filtering_toast": "Filters ingeschakeld",
"disabled_safe_browsing_toast": "Veilig browsen uitgeschakeld",
"enabled_safe_browsing_toast": "Veilig browsen ingeschakeld",
"disabled_parental_toast": "Ouderlijk toezicht uitgeschakeld",
"enabled_parental_toast": "Ouderlijk toezicht ingeschakeld",
"disabled_safe_search_toast": "Veilig zoeken uitgeschakeld",
"enabled_save_search_toast": "Veilig zoeken ingeschakeld",
"enabled_table_header": "Ingeschakeld",
"name_table_header": "Naam",
"list_url_table_header": "URL lijst",
"rules_count_table_header": "Aantal regels",
"last_time_updated_table_header": "Laatste update",
"actions_table_header": "Actie",
"request_table_header": "Verzoek",
"edit_table_action": "Bewerk",
"delete_table_action": "Verwijderen",
"elapsed": "Verstreken",
"filters_and_hosts_hint": "AdGuard Home kan overweg met basic adblock regels en hosts bestanden syntaxis.",
"no_blocklist_added": "Geen blokkeerlijsten toegevoegd",
"no_whitelist_added": "Geen toestemmingslijsten toegevoegd",
"add_blocklist": "Blokkeerlijst toevoegen",
"add_allowlist": "Toestemmingslijst toevoegen",
"cancel_btn": "Annuleren",
"enter_name_hint": "Voeg naam toe",
"enter_url_or_path_hint": "Voer een URL in of het pad van de lijst",
"check_updates_btn": "Controleer op updates",
"new_blocklist": "Nieuwe blokkeerlijst",
"new_allowlist": "Nieuwe toestemmingslijst",
"edit_blocklist": "Blokkeerlijst beheren",
"edit_allowlist": "Toestemmingslijst beheren",
"choose_blocklist": "Blokkeringslijsten selecteren",
"choose_allowlist": "Toestemmingslijsten selecteren",
"enter_valid_blocklist": "Voer een geldige URL in voor de blokkeerlijst.",
"enter_valid_allowlist": "Voer een geldige URL in voor de toestemmingslijst.",
"form_error_url_format": "Ongeldig URL formaat",
"form_error_url_or_path_format": "Ongeldig URL of pad van de lijst",
"custom_filter_rules": "Aangepaste filterregels",
"custom_filter_rules_hint": "Voer één regel op een regel in. U kunt adblock-regels gebruiken of de syntaxis van hosts-bestanden gebruiken.",
"examples_title": "Voorbeelden",
"example_meaning_filter_block": "blokkeer toegang tot het example.org domein en alle subdomeinen",
"example_meaning_filter_whitelist": "deblokkering van toegang tot het example.org-domein en alle bijbehorende subdomeinen",
"example_meaning_host_block": "AdGuard Home zal nu het adres 127.0.0.1 voor het domein example.org retourneren (maar niet de subdomeinen).",
"example_comment": "! Hier komt een opmerking",
"example_comment_meaning": "zomaar een opmerking",
"example_comment_hash": "# Nog een opmerking",
"example_regex_meaning": "blokkeer de toegang tot de domeinen die overeenkomen met de opgegeven reguliere expressie",
"example_upstream_regular": "standaard DNS (over UDP)",
"example_upstream_dot": "versleutelde <0>DNS_over_TLS</0>",
"example_upstream_doh": "versleutelde <0>DNS_over_HTTPS</0>",
"example_upstream_sdns": "je kunt <0>DNS Stamps</0> voor <1>DNSCrypt</1> of <2>DNS-over-HTTPS</2> resolvers",
"example_upstream_tcp": "standaard DNS (over TCP)",
"all_lists_up_to_date_toast": "Alle lijsten zijn reeds up-to-date",
"updated_upstream_dns_toast": "De upstream DNS-servers zijn bijgewerkt",
"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",
"unblock": "Deblokkeren",
"block": "Blokkeren",
"time_table_header": "Tijd",
"date": "Datum",
"domain_name_table_header": "Domein naam",
"domain_or_client": "Domein of cliënt",
"type_table_header": "Type",
"response_table_header": "Antwoord",
"response_code": "Reactie code",
"client_table_header": "Gebruiker",
"empty_response_status": "Leeg",
"show_all_filter_type": "Toon alles",
"show_filtered_type": "Toon gefilterde",
"no_logs_found": "Geen log bestanden gevonden",
"refresh_btn": "Verversen",
"previous_btn": "Vorige",
"next_btn": "Volgende",
"loading_table_status": "Laden...",
"page_table_footer_text": "Pagina",
"rows_table_footer_text": "rijen",
"updated_custom_filtering_toast": "Aangepaste filter regels zijn bijgewerkt",
"rule_removed_from_custom_filtering_toast": "Regel verwijderd uit de aangepaste filterregels",
"rule_added_to_custom_filtering_toast": "Regel toegevoegd aan de aangepaste filterregels",
"query_log_response_status": "Status: {{value}}",
"query_log_filtered": "Gefilterd door {{filter}}",
"query_log_confirm_clear": "Weet u zeker dat u het hele query logboek wilt legen?",
"query_log_cleared": "Het query logboek is succesvol geleegd",
"query_log_updated": "Het query logboek is succesvol bijgewerkt",
"query_log_clear": "Leeg query logs",
"query_log_retention": "Query logs bewaartermijn",
"query_log_enable": "Log bestanden inschakelen",
"query_log_configuration": "Logbestanden instellingen",
"query_log_disabled": "Het query logboek is uitgeschakeld en kan worden geconfigureerd in de <0>instellingen</0>",
"query_log_strict_search": "Gebruik dubbele aanhalingstekens voor strikt zoeken",
"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_desc": "Het volledige IP-adres van de cliënt niet opnemen in log- en statistiekbestanden",
"dns_config": "DNS server configuratie",
"dns_cache_config": "DNS cache configuratie",
"dns_cache_config_desc": "Hier kan de DNS cache geconfigureerd worden",
"blocking_mode": "Blocking modus",
"default": "Standaard",
"nxdomain": "NXDOMAIN",
"null_ip": "Nul IP",
"custom_ip": "Aangepast IP",
"blocking_ipv4": "Blokkeren IP4",
"blocking_ipv6": "Blokkeren IP6",
"dns_over_https": "DNS-via-HTTPS",
"dns_over_tls": "DNS-via-TLS",
"plain_dns": "Gewone DNS",
"form_enter_rate_limit": "Voer ratio limiet in",
"rate_limit": "Ratio limiet",
"edns_enable": "Zet EDNS client subnet aan",
"edns_cs_desc": "Indien ingeschakeld stuurt AdGuard Home het subnet van de client naar de DNS-servers.",
"rate_limit_desc": "Het aantal verzoeken per seconde die een enkele client mag doen (0: onbeperkt)",
"blocking_ipv4_desc": "IP-adres dat moet worden teruggegeven voor een geblokkeerd A-verzoek",
"blocking_ipv6_desc": "IP-adres dat moet worden teruggegeven voor een geblokkeerd A-verzoek",
"blocking_mode_default": "Standaard: Reageer met NXDOMAIN wanneer geblokkeerd door een Adblock-type regel; reageer met het IP-adres dat is opgegeven in de regel wanneer het wordt geblokkeerd door een /etc/hosts type regel",
"blocking_mode_nxdomain": "NXDOMAIN: Reageer met NXDOMAIN code",
"blocking_mode_null_ip": "Nul IP: Reageer met een nul IP address (0.0.0.0 voor A; :: voor AAAA)",
"blocking_mode_custom_ip": "Aangepast IP: Reageer met een handmatige ingesteld IP adres",
"upstream_dns_client_desc": "Indien je dit veld leeglaat zal AdGuard Home de servers welke zijn ingesteld in de <0>DNS instellingen</0> gebruiken.",
"tracker_source": "Bron volger",
"source_label": "Bron",
"found_in_known_domain_db": "Gevonden in de bekende domeingegevensbank.",
"category_label": "Categorie",
"rule_label": "Regel",
"list_label": "Lijst",
"unknown_filter": "Onbekend filter {{filterId}}",
"known_tracker": "Bekende volger",
"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_settings_title": "Admin webinterface",
"install_settings_listen": "Luister interface",
"install_settings_port": "Poort",
"install_settings_interface_link": "De webinterface van AdGuard Home admin is beschikbaar op de volgende adressen:",
"form_error_port": "Voer geldige poortwaarde in",
"install_settings_dns": "DNS server",
"install_settings_dns_desc": "U moet uw apparaten of router configureren om de DNS-server te gebruiken op de volgende adressen:",
"install_settings_all_interfaces": "Alle interfaces",
"install_auth_title": "Authenticatie",
"install_auth_desc": "Het wordt ten zeerste aanbevolen om wachtwoordverificatie te configureren voor de AdGuard Home admin webinterface. Zelfs als het alleen toegankelijk is in uw lokale netwerk, is het nog steeds belangrijk om het te beschermen tegen onbeperkte toegang.",
"install_auth_username": "Gebruikersnaam",
"install_auth_password": "Wachtwoord",
"install_auth_confirm": "Bevestig wachtwoord",
"install_auth_username_enter": "Voer gebruikersnaam in",
"install_auth_password_enter": "Voer wachtwoord in",
"install_step": "Stap",
"install_devices_title": "Configureer uw apparaten",
"install_devices_desc": "Om AdGuard Home te laten werken, moet u uw apparaten configureren om deze te gebruiken.",
"install_submit_title": "Gefeliciteerd!",
"install_submit_desc": "De instellingsprocedure is voltooid en u bent klaar om AdGuard Home te gebruiken.",
"install_devices_router": "Router",
"install_devices_router_desc": "Deze setup zal automatisch alle apparaten die op uw thuisrouter zijn aangesloten dekken en u hoeft ze niet allemaal handmatig te configureren.",
"install_devices_address": "AdGuard Home DNS-server luistert naar de volgende adressen",
"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_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 <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_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_4": "Selecteer uw actieve verbinding, klik er met de rechtermuisknop op en kies Eigenschappen.",
"install_devices_windows_list_5": "Zoek Internet Protocol versie 4 (TCP / IP) in de lijst, selecteer het en klik vervolgens opnieuw op Eigenschappen.",
"install_devices_windows_list_6": "Kies Gebruik de volgende DNS-serveradressen en voer uw AdGuard Home-serveradressen in.",
"install_devices_macos_list_1": "Klik op het Apple-pictogram en ga naar Systeemvoorkeuren.",
"install_devices_macos_list_2": "Klik op Netwerk.",
"install_devices_macos_list_3": "Selecteer de eerste verbinding in uw lijst en klik op Geavanceerd.",
"install_devices_macos_list_4": "Selecteer het tabblad DNS en voer uw AdGuard Home-serveradressen in.",
"install_devices_android_list_1": "Tik op het startscherm van het Android-menu op Instellingen.",
"install_devices_android_list_2": "Tik op wifi in het menu. Het scherm met alle beschikbare netwerken wordt getoond (het is niet mogelijk om een aangepaste DNS in te stellen voor een mobiele verbinding).",
"install_devices_android_list_3": "Druk lang op het netwerk waarmee je bent verbonden en tik op Netwerk instellingen aanpassen.",
"install_devices_android_list_4": "Op sommige apparaten moet u het vakje aanvinken voor Geavanceerd om verdere instellingen te bekijken. Om uw Android DNS-instellingen aan te passen, moet u de IP-instellingen wijzigen van DHCP in Statisch.",
"install_devices_android_list_5": "Wijzig de DNS 1-waarden en DNS 2-waarden in uw AdGuard Home-serveradressen.",
"install_devices_ios_list_1": "Tik op het startscherm op Instellingen.",
"install_devices_ios_list_2": "Kies Wi-Fi in het linkermenu (DNS kan niet worden geconfigureerd voor mobiele netwerken).",
"install_devices_ios_list_3": "Tik op de naam van het momenteel actieve netwerk.",
"install_devices_ios_list_4": "Voer in het DNS-veld uw AdGuard Home-serveradressen in.",
"get_started": "Beginnen",
"next": "Volgende",
"open_dashboard": "Open Dashboard",
"install_saved": "Succesvol opgeslagen",
"encryption_title": "Encryptie",
"encryption_desc": "Encryptie (HTTPS/TLS) ondersteuning voor DNS en admin web interface",
"encryption_config_saved": "Encryptie configuratie opgeslagen",
"encryption_server": "Server naam",
"encryption_server_enter": "Voer domein naam in",
"encryption_server_desc": "Om HTTPS te gebruiken, voer de naam in van de server overeenkomstig met het SSL certificaat.",
"encryption_redirect": "Herleid automatisch naar HTTPS",
"encryption_redirect_desc": "Indien ingeschakeld, zal AdGuard Home je automatisch herleiden van HTTP naar HTTPS.",
"encryption_https": "HTTPS poort",
"encryption_https_desc": "Als de HTTPS-poort is geconfigureerd, is de AdGuard Home beheerders interface toegankelijk via HTTPS en biedt deze ook DNS-over-HTTPS op de locatie '/ dns-query'.",
"encryption_dot": "DNS-over-TLS poort",
"encryption_dot_desc": "Indien deze poort is geconfigureerd, zal AdGuard Home gebruik maken van een DNS-over-TLS server via deze poort.",
"encryption_certificates": "Certificaten",
"encryption_certificates_desc": "Om encryptie te gebruiken, moet u een geldige SSL certificaat voor uw domein opgeven. U kunt een gratis certificaat krijgen op <0> {{link}} </0> of u kunt het kopen bij een van de vertrouwde certificaatautoriteiten.",
"encryption_certificates_input": "Kopieër en plak je PEM-gecodeerde certificaten hier.",
"encryption_status": "Status",
"encryption_expire": "Verloopt",
"encryption_key": "Prive sleutel",
"encryption_key_input": "Kopieër en plak je PEM-gecodeerde prive sleutel voor je certificaat hier.",
"encryption_enable": "Activeer encryptie (HTTPS, DNS-over-HTTPS, en DNS-over-TLS)",
"encryption_enable_desc": "Als encryptie is geactiveerd, is de AdGuard Home beheerders interface toegankelijk via HTTPS en de DNS-server zal luisteren naar aanvragen via DNS-over-HTTPS en DNS-over-TLS.",
"encryption_chain_valid": "certificaatketen is geldig",
"encryption_chain_invalid": "certificaatketen is ongeldig",
"encryption_key_valid": "Dit is een geldig {{type}} privé sleutel",
"encryption_key_invalid": "Dit is een ongeldig {{type}} privé sleutel",
"encryption_subject": "Onderwerp",
"encryption_issuer": "Uitgever",
"encryption_hostnames": "Hostnamen",
"encryption_reset": "Ben je zeker dat je de encryptie instellingen wil resetten?",
"topline_expiring_certificate": "Jouw SSL certificaat vervalt binnenkort. Update <0>Encryptie instellingen</0>.",
"topline_expired_certificate": "Jouw SSL certificaat is vervallen. Update <0>Encryptie instellingen</0>.",
"form_error_port_range": "Vul poort in tussen 80 en 65535",
"form_error_port_unsafe": "Dit is een onveilige poort",
"form_error_equal": "Zou niet gelijk mogen zijn",
"form_error_password": "Wachtwoord komt niet overeen",
"reset_settings": "Reset Instellingen",
"update_announcement": "AdGuard Home{{version}} is nu beschikbaar! <0>klik hier</0> voor meer info.",
"setup_guide": "Installatie gids",
"dns_addresses": "DNS adressen",
"dns_start": "DNS server aan het opstarten",
"dns_status_error": "Fout bij het oproepen van de DNS server status",
"down": "Uitgeschakeld",
"fix": "Los op",
"dns_providers": "hier is een <0>lijst of gekende DNS providers</0> waarvan je kan kiezen.",
"update_now": "Update nu",
"update_failed": "Auto-update is mislukt. Volg <a href='https://github.com/AdguardTeam/AdGuardHome/wiki/Getting-Started#update'>de volgende stappen</a> om manueel te updaten.",
"processing_update": "Even geduld, AdGuard Home wordt bijgewerkt",
"clients_title": "Gebruikers",
"clients_desc": "Configureer apparaten die gebruik maken van AdGuard Home",
"settings_global": "Globaal",
"settings_custom": "Aangepast",
"table_client": "Gebruiker",
"table_name": "Naam",
"save_btn": "Bewaar",
"client_add": "Voeg gebruiker toe",
"client_new": "Nieuwe gebruiker",
"client_edit": "Wijzig gebruiker",
"client_identifier": "Identificeer via",
"ip_address": "IP adres",
"client_identifier_desc": "Gebruikers kunnen worden geïdentificeerd door het IP-adres, CIDR of MAC-adres. Hou er rekening mee dat het gebruik van MAC als ID alleen mogelijk is als AdGuard Home ook een <0>DHCP-server</0> is",
"form_enter_ip": "Vul IP in",
"form_enter_mac": "Vul MAC in",
"form_enter_id": "ID invoeren",
"form_add_id": "ID toevoegen",
"form_client_name": "Vul gebruikersnaam in",
"name": "Naam",
"client_global_settings": "Gebruik globale instelling",
"client_deleted": "Gebruiker \"{{key}}\" met succes verwijderd",
"client_added": "Gebruiker \"{{key}}\" met succes toegevoegd",
"client_updated": "Gebruiker \"{{key}}\" met succes ge-updated",
"clients_not_found": "Geen gebruikers gevonden",
"client_confirm_delete": "Ben je zeker dat je deze gebruiker \"{{key}}\" wilt verwijderen?",
"list_confirm_delete": "Ben je zeker om deze lijst te verwijderen?",
"auto_clients_title": "Gebruikers (runtime)",
"auto_clients_desc": "Data over gebruikers die AdGuard Home gebruiken, maar niet geconfigureerd zijn",
"access_title": "Toegangs instellingen",
"access_desc": "Hier kan je toegangsregels voor de AdGuard Home DNS server instellen.",
"access_allowed_title": "Toegestane gebruikers",
"access_allowed_desc": "Een lijst van CIDR of IP adressen. Indien ingesteld, zal AdGuard Home alleen van deze IP adressen aanvragen accepteren.",
"access_disallowed_title": "Verworpen gebruikers",
"access_disallowed_desc": "Een lijst van CIDR of IP adressen. Indien ingesteld, zal AdGuard Home aanvragen van deze IP adressen verwerpen.",
"access_blocked_title": "Niet toegelaten domeinen",
"access_blocked_desc": "Verwar dit niet met filters. AdGuard Home zal deze DNS-zoekopdrachten niet uitvoeren die deze domeinen in de zoekopdracht bevatten. Hier kan je de domeinnamen, wildcards en url-filter-regels specifiëren, bijv. 'example.org', '*.example.org' or '||example.org^'.",
"access_settings_saved": "Toegangsinstellingen met succes opgeslagen",
"updates_checked": "Met succes op updates gecontroleerd",
"updates_version_equal": "AdGuard Home is up-to-date",
"check_updates_now": "Controleer op updates",
"dns_privacy": "DNS Privacy",
"setup_dns_privacy_1": "<0>DNS-over-TLS:</0> Gebruik <1>{{address}}</1> string.",
"setup_dns_privacy_2": "<0>DNS-over-HTTPS:</0> Gebruik <1>{{address}}</1> string.",
"setup_dns_privacy_3": "<0>Hou er rekening mee dat het beveiligde DNS protocol alleen beschikbaar is voor Android 9. U moet dus extra software installeren voor andere besturingssystemen.</0><0>Hier is een lijst van te gebruiken software.</0>",
"setup_dns_privacy_android_1": "Android 9 ondersteunt native DNS-over-TLS. Om het te configureren, ga naar Instellingen → Netwerk & internet → Geavanceerd → Privé DNS en voer daar uw domeinnaam in.",
"setup_dns_privacy_android_2": "<0>AdGuard voor Android</0>ondersteunt<1>DNS-over-HTTPS </1>en<1>DNS-over-TLS</1>.",
"setup_dns_privacy_android_3": "<0> Intra </0> voegt <1> DNS-over-HTTPS</1> ondersteuning toe aan Android.",
"setup_dns_privacy_ios_1": "<0>DNSCloak</0> ondersteunt <1> DNS-over-HTTPS </1>, maar om het te configureren om op uw eigen server te gebruiken moet er een <2> DNS-stempel </2> gegenereerd worden.",
"setup_dns_privacy_ios_2": "<0> AdGuard voor iOS </0> ondersteunt de instellingen <1> DNS-over-HTTPS </1> en <1> DNS-over-TLS </1>.",
"setup_dns_privacy_other_title": "Overig gebruik",
"setup_dns_privacy_other_1": "AdGuard Home kan op elk platform een veilige DNS-client zijn.",
"setup_dns_privacy_other_2": "<0>dnsproxy</0> ondersteunt alle bekende beveiligde DNS-protocollen.",
"setup_dns_privacy_other_3": "<0> dnscrypt-proxy </0> ondersteunt <1> DNS-over-HTTPS </1>.",
"setup_dns_privacy_other_4": "<0> Mozilla Firefox </0> ondersteunt <1> DNS-over-HTTPS </1>.",
"setup_dns_privacy_other_5": "U vindt meer implementaties <0> hier </0> en <1> hier </1>.",
"setup_dns_notice": "Om <1> DNS-over-HTTPS </1> of <1> DNS-over-TLS </1> te gebruiken, moet u <0> Codering </0> configureren in de AdGuard Home-instellingen.",
"rewrite_added": "DNS-herschrijving voor \"{{key}}\" met succes toegevoegd",
"rewrite_deleted": "DNS-herschrijving voor \"{{key}}\" met succes verwijderd",
"rewrite_add": "DNS-herschrijving toevoegen",
"rewrite_not_found": "Geen DNS-herschrijving gevonden",
"rewrite_confirm_delete": "Bent u zeker dat u DNS-herschrijving \"{{key}}\" wilt verwijderen?",
"rewrite_desc": "Hiermee kunt u eenvoudig aangepaste DNS-antwoorden configureren voor een specifieke domeinnaam.",
"rewrite_applied": "Herschrijf regel toegepast",
"rewrite_hosts_applied": "Geherdefinieerd door de filterregel van de host",
"dns_rewrites": "DNS herschrijvingen",
"form_domain": "Vul domein of wildcard in",
"form_answer": "Vul IP adres of domeinnaam in",
"form_error_domain_format": "Ongeldige domeinnaam",
"form_error_answer_format": "Ongeldig antwoord",
"configure": "Bewerk",
"main_settings": "Algemene instellingen",
"block_services": "Specifieke services blokkeren",
"blocked_services": "Geblokkeerde services",
"blocked_services_desc": "Hiermee kunt u populaire sites en services snel blokkeren.",
"blocked_services_saved": "Geblokkeerde services succesvol opgeslagen",
"blocked_services_global": "Gebruik algemeen geblokkeerde services",
"blocked_service": "Geblokkeerde service",
"block_all": "Blokkeer alles",
"unblock_all": "Deblokkeer alles",
"encryption_certificate_path": "Certificaat pad",
"encryption_private_key_path": "Privé sleutel pad",
"encryption_certificates_source_path": "Certificaten bestandspad instellen",
"encryption_certificates_source_content": "Inhoud certificaten plakken",
"encryption_key_source_path": "Privé sleutelbestand instellen",
"encryption_key_source_content": "Inhoud privé sleutel plakken",
"stats_params": "Statistieken configuratie",
"config_successfully_saved": "Configuratie succesvol opgeslagen",
"interval_24_hour": "24 uur",
"interval_days": "{{count}} dagen",
"interval_days_plural": "{{count}} dagen",
"domain": "Domein",
"answer": "Antwoord",
"filter_added_successfully": "De lijst is succesvol toegevoegd",
"filter_removed_successfully": "De lijst is succesvol verwijderd",
"filter_updated": "De lijst is succesvol geüpdatet",
"statistics_configuration": "Statistieken configuratie",
"statistics_retention": "Statistieken retentie",
"statistics_retention_desc": "Als je de interval waarde vermindert, zullen sommige gegevens verloren gaan",
"statistics_clear": " Statistieken wissen",
"statistics_clear_confirm": "Alle statistieken werkelijk wissen?",
"statistics_retention_confirm": "Weet u zeker dat u de bewaartermijn van de statistieken wilt wijzigen? Als u de intervalwaarde verlaagt, gaan sommige gegevens verloren",
"statistics_cleared": "Statistieken succesvol gewist",
"interval_hours": "{{count}} uur",
"interval_hours_plural": "{{count}} uren",
"filters_configuration": "Filters instellingen",
"filters_enable": "Filters inschakelen",
"filters_interval": "Filters update frequentie",
"disabled": "Uitgeschakeld",
"username_label": "Gebruikersnaam",
"username_placeholder": "Voer gebruikersnaam in",
"password_label": "Wachtwoord",
"password_placeholder": "Voer wachtwoord in",
"sign_in": "Aanmelden",
"sign_out": "Afmelden",
"forgot_password": "Wachtwoord vergeten?",
"forgot_password_desc": "Volg <0>deze stappen</0> om een nieuw wachtwoord voor uw gebruikersaccount te maken.",
"location": "Locatie",
"orgname": "Naam organisatie",
"netname": "Netwerk naam",
"network": "Netwerk",
"descr": "Beschrijving",
"whois": "Whois",
"filtering_rules_learn_more": "<0>Meer informatie</0> over het maken van je eigen host lijsten.",
"blocked_by_response": "Geblokkeerd door CNAME of IP als antwoord",
"blocked_by_cname_or_ip": "Geblokkeerd via CNAME of IP",
"try_again": "Probeer opnieuw",
"domain_desc": "Voer de domeinnaam of wildcard in die herschreven moet worden.",
"example_rewrite_domain": "herschrijf reacties uitsluitend voor deze domeinnaam.",
"example_rewrite_wildcard": "herschrijf reacties voor alle subdomeinen van <0>example.org</0>.",
"rewrite_ip_address": "IP adres: gebruik dit IP in een A of AAAA antwoord",
"rewrite_domain_name": "Domeinnaam: een CNAME record toevoegen",
"rewrite_A": "<0>A</0>: speciale waarde, <0>A</0> records uit de upstream bewaren",
"rewrite_AAAA": "<0>AAAA</0>: speciale waarde, <0>AAAA</0> records uit de upstream bewaren",
"disable_ipv6": "Zet IPv6 uit",
"disable_ipv6_desc": "Als deze functie is ingeschakeld, worden alle DNS-query's voor IPv6-adressen (type AAAA) verwijderd.",
"fastest_addr": "Snelste IP adres",
"fastest_addr_desc": "Alle DNS servers bevragen en het snelste IP adres terugkoppelen. Dit zal de DNS verzoeken vertragen omdat we moeten wachten op de antwoorden van alles DNS servers, maar verbetert wel de connectiviteit.",
"autofix_warning_text": "Als je op \"Repareren\" klikt, configureert AdGuard Home uw systeem om de AdGuard Home DNS-server te gebruiken.",
"autofix_warning_list": "De volgende taken worden uitgevoerd: <0> Deactiveren van Systeem DNSStubListener</0> <0> DNS-serveradres instellen op 127.0.0.1 </0> <0> Symbolisch koppelingsdoel van /etc/resolv.conf vervangen door /run/systemd/resolve/resolv.conf </0> <0> Stop DNSStubListener (herlaad systemd-resolved service) </0>",
"autofix_warning_result": "Als gevolg hiervan worden alle DNS-verzoeken van je systeem standaard door AdGuard Home verwerkt.",
"tags_title": "Labels",
"tags_desc": "Je kunt tags selecteren die overeenkomen met de client. Tags kunnen worden opgenomen in de filterregels en je kunt ze dan nauwkeuriger toepassen. <0> Meer informatie </0>",
"form_select_tags": "Kies client tags",
"check_title": "Controleer de filtering",
"check_desc": "Controleer of de hostnaam wordt gefilterd",
"check": "Controleren",
"form_enter_host": "Voer een hostnaam in",
"filtered_custom_rules": "Gefilterd door aangepaste filterregels",
"choose_from_list": "Uit de lijst selecteren",
"add_custom_list": "Aangepaste lijst toevoegen",
"host_whitelisted": "De host staat op de toestemmingslijst",
"check_ip": "IP-adressen: {{ip}}",
"check_cname": "CNAME: {{cname}}",
"check_reason": "Reden: {{reason}}",
"check_rule": "Regel: {{rule}}",
"check_service": "Servicenaam: {{service}}",
"check_not_found": "Niet in je lijst met filters gevonden",
"client_confirm_block": "Weet je zeker dat je client \"{{ip}}\" wil blokkeren?",
"client_confirm_unblock": "Weet je zeker dat je client \"{{ip}}\" niet meer wil blokkeren?",
"client_blocked": "Client \"{{ip}}\" wordt nu geblokkeerd",
"client_unblocked": "Client \"{{ip}}\" wordt niet meer geblokkeerd",
"static_ip": "Statisch IP-adres",
"static_ip_desc": "AdGuard Home is een server en heeft daarom een statisch IP-adres nodig om goed te kunnen functioneren, anders kan uw router op een bepaald moment een ander IP-adres aan dit apparaat toewijzen.",
"set_static_ip": "Stel een statisch IP-adres in",
"install_static_ok": "Goed nieuws! Het statische IP-adres was al geconfigureerd",
"install_static_error": "AdGuard Home kan dit niet automatisch configureren op deze netwerkinterface. Zoek een instructie om dit handmatig te doen.",
"install_static_configure": "We hebben vastgesteld dat er een dynamisch IP-adres wordt gebruikt - <0> {{ip}} </0>. Wil je dit als je statische adres gebruiken?",
"confirm_static_ip": "AdGuard Home configureert {{ip}} als jouw statische IP-adres. Wil je doorgaan?",
"list_updated": "{{count}} lijst geüpdatet",
"list_updated_plural": "{{count}} lijsten geüpdatet",
"dnssec_enable": "DNSSEC inschakelen",
"dnssec_enable_desc": "Zet de DNSSEC-vlag aan bij uitgaande DNS-query's en controleer het resultaat (DNSSEC-compatibele resolver is vereist)",
"validated_with_dnssec": "Gevalideerd met DNSSEC",
"all_queries": "Alle vragen",
"show_blocked_responses": "Geblokkeerd",
"show_whitelisted_responses": "Op toestemmingslijst",
"show_processed_responses": "Verwerkt",
"blocked_safebrowsing": "Geblokkeerd door Veilig Browsen",
"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",
"cache_size": "Cache grootte",
"cache_size_desc": "DNS cache grootte (in bytes)",
"cache_ttl_min_override": "Minimale TTL overschrijven",
"cache_ttl_max_override": "Maximale TTL overschrijven",
"enter_cache_size": "Cache grootte invoeren",
"enter_cache_ttl_min_override": "Minimale TTL invoeren",
"enter_cache_ttl_max_override": "Maximale TTL invoeren",
"cache_ttl_min_override_desc": "Overschrijft TTL waarde (minimaal) ontvangen van de upstream server. Deze waarde mag niet hoger als 3600 (1 uur) zijn",
"cache_ttl_max_override_desc": "Overschrijft TTL waarde (maximaal) ontvangen van de upstream server",
"min_exceeds_max_value": "Minimale waarde overschrijdt de maximale waarde",
"value_not_larger_than": "Waarde mag niet hoger zijn dan {{maximum}}",
"filter_category_general": "Algemeen",
"filter_category_security": "Beveiliging",
"filter_category_regional": "Regionaal",
"filter_category_other": "Overig",
"filter_category_general_desc": "Lijsten die volgers en advertenties op de meeste apparaten blokkeert",
"filter_category_security_desc": "Lijsten gespecialiseerd in het blokkeren van malware, phising of scam domeinen",
"filter_category_regional_desc": "Lijsten die focussen op regionale ads en tracking servers",
"filter_category_other_desc": "Overige blokkeerlijsten",
"original_response": "Oorspronkelijke reactie",
"click_to_view_queries": "Klik om queries te bekijken",
"port_53_faq_link": "Poort 53 wordt vaak gebruikt door services als DNSStubListener- of de systeem DNS-resolver. Lees a.u.b. <0>deze instructie</0> hoe dit is op te lossen."
}

View File

@@ -0,0 +1,543 @@
{
"client_settings": "Klientinnstillinger",
"example_upstream_reserved": "du kan bestemme en oppstrøms-DNS <0>for et spesifikt domene(r)</0>",
"upstream_parallel": "Bruk parallele forespørsler for å få oppfarten på behandlinger, ved å forespørre til alle oppstrømstjenerne samtidig",
"parallel_requests": "Parallelle forespørsler",
"load_balancing": "Pågangstrykk-utjevning",
"load_balancing_desc": "Forespør én tjener om gangen. AdGuard Home vil bruke en 'vektlagt tilfeldig valg'-algoritme for å velge tjener, slik at den raskeste tjeneren blir brukt oftere.",
"bootstrap_dns": "Bootstrap-DNS-tjenere",
"bootstrap_dns_desc": "Bootstrap-DNS-tjenere brukes til å oppklare IP-adressene til DoH/DoT-oppklarerene som du har valgt som oppstrømstjenere.",
"check_dhcp_servers": "Se etter DHCP-tjenere",
"save_config": "Lagre oppsettet",
"enabled_dhcp": "DHCP-tjeneren ble skrudd på",
"disabled_dhcp": "DHCP-tjeneren ble skrudd av",
"dhcp_title": "DHCP-tjener (eksperimentell!)",
"dhcp_description": "Dersom ruteren din ikke har DHCP-innstillinger, kan du bruke AdGuard Home sin egen innebygde DHCP-tjener.",
"dhcp_enable": "Skru på DHCP-tjeneren",
"dhcp_disable": "Skru av DHCP-tjeneren",
"dhcp_not_found": "Det er trygt å skru på den innebygde DHCP-tjeneren - vi kunne ikke finne noen aktive DHCP-tjenere i nettverket. Men vi oppfordrer deg til å dobbeltsjekke manuelt, siden vår automatiske test ikke gir 100% sikre svar ennå.",
"dhcp_found": "En aktiv DHCP-tjener ble oppdaget i nettverket. Det er ikke trygt å bruke den innebygde DHCP-tjeneren.",
"dhcp_leases": "DHCP-leieavtaler",
"dhcp_static_leases": "Statiske DHCP-leieavtaler",
"dhcp_leases_not_found": "Ingen DHCP-leieavtaler ble funnet",
"dhcp_config_saved": "Lagret DHCP-tjeneroppsettet",
"form_error_required": "Påkrevd felt",
"form_error_ip4_format": "Ugyldig IPv4-format",
"form_error_ip6_format": "Ugyldig IPv6-format",
"form_error_ip_format": "Ugyldig IPv4-format",
"form_error_mac_format": "Ugyldig MAC-format",
"form_error_client_id_format": "Ugyldig ID-klientformat",
"form_error_positive": "Må være høyere enn 0",
"form_error_negative": "Må være ≥0",
"dhcp_form_gateway_input": "Gateway-IP",
"dhcp_form_subnet_input": "Nettverksmaske",
"dhcp_form_range_title": "Spennvidden til IP-adressene",
"dhcp_form_range_start": "Rekkeviddestart",
"dhcp_form_range_end": "Rekkeviddeslutt",
"dhcp_form_lease_title": "DHCP-leieavtalevarighet (i sekunder)",
"dhcp_form_lease_input": "Leieavtalenes varighet",
"dhcp_interface_select": "Velg DHCP-grensesnitt",
"dhcp_hardware_address": "Maskinvareadresse",
"dhcp_ip_addresses": "IP-adresser",
"ip": "IP-adresse",
"dhcp_table_hostname": "Vertsnavn",
"dhcp_table_expires": "Utløper",
"dhcp_warning": "Hvis du vil aktivere DHCP-tjeneren likevel, så sørg for at det ikke er noen andre aktive DHCP-tjenere i nettverket ditt. Ellers kan det knekke internettilgangen til tilkoblede enheter!",
"dhcp_error": "Vi klarte ikke å fastslå om det er en annen DHCP-tjener i nettverket ditt eller ikke.",
"dhcp_static_ip_error": "For å kunne bruke DHCP-tjeneren, må det være satt en statisk IP-adresse. Vi klarte ikke å finne ut om dette nettverksgrensesnittet har blitt satt opp med en statisk IP-adresse. Vennligst sett opp en statisk IP-adresse manuelt.",
"dhcp_dynamic_ip_found": "Systemet ditt bruker et oppsett med dynamisk IP-adresse for grensesnittet <0>{{interfaceName}}</0>. For å kunne bruke DHCP-tjeneren, må en statisk IP-adresse ha blitt satt opp. Din nåværende IP-adresse er <0>{{ipAddress}}</0>. Vi vil automatisk gjøre denne IP-adressen statisk hvis du trykker på «Skru på DHCP»-knappen.",
"dhcp_lease_added": "Den statiske leieavtalen «{{key}}» ble vellykket lagt til",
"dhcp_lease_deleted": "Den statiske leieavtalen «{{key}}» ble vellykket lagt slettet",
"dhcp_new_static_lease": "Ny statisk leieavtale",
"dhcp_static_leases_not_found": "Ingen statiske DHCP-leieavtaler ble funnet",
"dhcp_add_static_lease": "Legg til statisk leieavtale",
"dhcp_reset": "Er du sikker på at du vil tilbakestille DHCP-oppsettet?",
"country": "Land",
"city": "By",
"delete_confirm": "Er du sikker på at du vil slette «{{key}}»?",
"form_enter_hostname": "Skriv inn vertsnavnet",
"error_details": "Feildetaljer",
"response_details": "Svardetaljer",
"request_details": "Detaljer over forespørsel",
"client_details": "Klientdetaljer",
"details": "Detaljer",
"back": "Tilbake",
"dashboard": "Kontrollsenter",
"settings": "Innstillinger",
"filters": "Filtre",
"filter": "Filter",
"query_log": "Forespørselslogg",
"compact": "Kompakt",
"nothing_found": "Ingenting ble funnet",
"faq": "OSS",
"version": "Versjon",
"address": "Adresse",
"protocol": "Protokoll",
"on": "PÅ",
"off": "AV",
"copyright": "Opphavsrett",
"homepage": "Hjemmeside",
"report_an_issue": "Send inn feilrapport",
"privacy_policy": "Personvernretningslinjer",
"enable_protection": "Skru på beskyttelse",
"enabled_protection": "Beskyttelse ble skrudd på",
"disable_protection": "Skru av beskyttelse",
"disabled_protection": "Beskyttelsen ble skrudd av",
"refresh_statics": "Oppfrisk statistikkene",
"dns_query": "DNS-forespørsler",
"blocked_by": "<0>Blokkert av filtre</0>",
"stats_malware_phishing": "Blokkert skadevare/phishing",
"stats_adult": "Blokkerte voksennettsteder",
"stats_query_domain": "Mest forespurte domener",
"for_last_24_hours": "de siste 24 timene",
"for_last_days": "det siste døgnet",
"for_last_days_plural": "de siste {{count}} dagene",
"no_domains_found": "Ingen domener ble funnet",
"requests_count": "Antall forespørsler",
"top_blocked_domains": "Mest blokkerte domener",
"top_clients": "Vanligste klienter",
"no_clients_found": "Ingen klienter ble funnet",
"general_statistics": "Generelle statistikker",
"number_of_dns_query_days": "Antall DNS-forespørsler som ble behandlet det siste døgnet",
"number_of_dns_query_days_plural": "Antall DNS-forespørsler som ble behandlet de siste {{count}} dagene",
"number_of_dns_query_24_hours": "Antall DNS-forespørsler som ble behandlet de siste 24 timene",
"number_of_dns_query_blocked_24_hours": "Antall DNS-forespørsler som ble blokkert av adblock-filtre, hosts-lister, og domene-lister",
"number_of_dns_query_blocked_24_hours_by_sec": "Antall DNS-forespørsler som ble blokkert av AdGuard sin nettlesersikkerhetsmodul",
"number_of_dns_query_blocked_24_hours_adult": "Antall voksennettsteder som ble blokkert",
"enforced_save_search": "Påtvungede barnevennlige søk",
"number_of_dns_query_to_safe_search": "Antall DNS-forespørsler til søkemotorer der \"Safe Search\" ble fremtvunget",
"average_processing_time": "Gjennomsnittlig behandlingstid",
"average_processing_time_hint": "Gjennomsnittstid for behandling av DNS-forespørsler i millisekunder",
"block_domain_use_filters_and_hosts": "Blokker domener ved hjelp av filtre, «hosts»-filer, og rå domener",
"filters_block_toggle_hint": "Du kan sette opp blokkeringsoppføringer i <a href='#filters'>Filtre</a>-innstillingene.",
"use_adguard_browsing_sec": "Benytt AdGuard sin nettlesersikkerhetstjeneste",
"use_adguard_browsing_sec_hint": "AdGuard Home vil sjekke om domenet har blitt svartelistet av nettlesersikkerhetstjenesten. Den vil bruke en privatlivsvennlig søke-API til å utføre sjekken: kun en kort prefiks av domenenavnet med SHA256-salting blir sendt til tjeneren.",
"use_adguard_parental": "Benytt AdGuard sin foreldrekontroll-nettjeneste",
"use_adguard_parental_hint": "AdGuard Home vil sjekke om domenet inneholder erotisk materiale. Den benytter den samme privatlivsvennlige API-en som nettlesersikkerhetstjenesten.",
"enforce_safe_search": "Påtving barnevennlige søk",
"enforce_save_search_hint": "AdGuard Home kan fremtvinge \"Safe Search\" i de følgende søkemotorene: Google, YouTube, Bing, DuckDuckGo, og Yandex.",
"no_servers_specified": "Ingen tjenere er spesifisert",
"general_settings": "Generelle innstillinger",
"dns_settings": "DNS-innstillinger",
"dns_blocklists": "DNS-blokkeringslister",
"dns_allowlists": "DNS-hvitelister",
"dns_blocklists_desc": "AdGuard Home vil blokkere domener som samsvarer med blokkeringslistene.",
"dns_allowlists_desc": "Domener fra DNS-hvitelistene vil bli sluppet gjennom, selv hvis de er i noen av blokkeringslistene.",
"custom_filtering_rules": "Selvvalgte filtreringsoppføringer",
"encryption_settings": "Krypteringsinnstillinger",
"dhcp_settings": "DHCP-innstillinger",
"upstream_dns": "Oppstrøms-DNS-tjenere",
"upstream_dns_hint": "Hvis du lar dette feltet stå tomt, vil AdGuard Home will bruke <a href='https://1.1.1.1/' target='_blank'>Cloudflare DNS</a> som en oppstrømstjener.",
"test_upstream_btn": "Test oppstrømstilkoblinger",
"upstreams": "Oppstrømstjenere",
"apply_btn": "Benytt",
"disabled_filtering_toast": "Skrudde av filtrering",
"enabled_filtering_toast": "Skrudde på filtrering",
"disabled_safe_browsing_toast": "Skrudde av barnevennlig nettlesing",
"enabled_safe_browsing_toast": "Skrudde på barnevennlig nettlesing",
"disabled_parental_toast": "Skrudde av foreldrekontroll",
"enabled_parental_toast": "Skrudde på foreldrekontroll",
"disabled_safe_search_toast": "Skrudde av barnevennlige søk",
"enabled_save_search_toast": "Skrudde på barnevennlige søk",
"enabled_table_header": "Skrudd på",
"name_table_header": "Navn",
"list_url_table_header": "Listens nettadresse",
"rules_count_table_header": "Antall oppføringer",
"last_time_updated_table_header": "Senest oppdatert",
"actions_table_header": "Handlinger",
"request_table_header": "Forespørsel",
"edit_table_action": "Rediger",
"delete_table_action": "Slett",
"elapsed": "Utløpt",
"filters_and_hosts_hint": "AdGuard Home forstår grunnleggende adblock-oppføringer, «hosts»-filsyntaks, og domenelister.",
"no_blocklist_added": "Ingen blokkeringslister er lagt til",
"no_whitelist_added": "Ingen hvitelister er lagt til",
"add_blocklist": "Legg til blokkeringsliste",
"add_allowlist": "Legg til hviteliste",
"cancel_btn": "Avbryt",
"enter_name_hint": "Skriv inn navn",
"enter_url_or_path_hint": "Skriv inn listens URL eller fulle filbane",
"check_updates_btn": "Se etter oppdateringer",
"new_blocklist": "Ny blokkeringsliste",
"new_allowlist": "Ny hviteliste",
"edit_blocklist": "Rediger blokkeringsliste",
"edit_allowlist": "Rediger hviteliste",
"choose_blocklist": "Velg blokkeringslister",
"enter_valid_blocklist": "Skriv inn en gyldig nettadresse til blokkeringslisten.",
"enter_valid_allowlist": "Skriv inn en gyldig nettadresse til hvitelisten.",
"form_error_url_format": "Ugyldig URL-format",
"form_error_url_or_path_format": "Listens URL eller fulle filbane er ugyldig",
"custom_filter_rules": "Selvvalgte filtreringsregler",
"custom_filter_rules_hint": "Skriv inn én oppføring per linje. Du kan bruke adblock-oppføringer, «hosts»-filsyntaks, eller rå domener.",
"examples_title": "Eksempler",
"example_meaning_filter_block": "blokker tilgang til 'example.org'-domenet og alle dens underdomener",
"example_meaning_filter_whitelist": "opphev blokkeringen av 'example.org'-domenet og alle dens underdomener",
"example_meaning_host_block": "AdGuard Home vil nå videresende 'example.org'-domenet (men ikke dens underdomener) til 127.0.0.1.",
"example_comment": "! Her er det en kommentar",
"example_comment_meaning": "bare en kommentar",
"example_comment_hash": "# Også en kommentar",
"example_regex_meaning": "blokker tilgang til domener som samsvarer med den valgte ordinære oppføringen",
"example_upstream_regular": "vanlig DNS (over UDP)",
"example_upstream_dot": "kryptert <0>DNS-over-TLS</0>",
"example_upstream_doh": "kryptert <0>DNS-over-HTTPS</0>",
"example_upstream_sdns": "du kan bruke <0>DNS-stempler</0> med <1>DNSCrypt</1> eller <2>DNS-over-HTTPS</2>-behandlere",
"example_upstream_tcp": "vanlig DNS (over TCP)",
"all_lists_up_to_date_toast": "Alle listene er allerede oppdatert",
"updated_upstream_dns_toast": "Oppdaterte oppstrøms-DNS-tjenerne",
"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",
"unblock": "Tillat",
"block": "Blokker",
"time_table_header": "Tidspunkt",
"date": "Dato",
"domain_name_table_header": "Domenenavn",
"domain_or_client": "Domene eller klient",
"type_table_header": "Type",
"response_table_header": "Respons",
"response_code": "Svarkode",
"client_table_header": "Klient",
"empty_response_status": "Tomt innhold",
"show_all_filter_type": "Vis alle",
"show_filtered_type": "Vis kun filtrerte",
"no_logs_found": "Ingen loggføringer ble funnet",
"refresh_btn": "Oppfrisk",
"previous_btn": "Forrige",
"next_btn": "Neste",
"loading_table_status": "Laster inn …",
"page_table_footer_text": "Side",
"rows_table_footer_text": "rekker",
"updated_custom_filtering_toast": "Oppdaterte de selvvalgte filtreringsreglene",
"rule_removed_from_custom_filtering_toast": "Oppføringen ble fjernet fra de selvvalgte filtreringsreglene",
"rule_added_to_custom_filtering_toast": "Oppføringen ble lagt til i de selvvalgte filtreringsreglene",
"query_log_response_status": "Status: {{value}}",
"query_log_filtered": "Filtrert av {{filter}}",
"query_log_confirm_clear": "Er du sikker på at du vil slette hele forespørselsloggen?",
"query_log_cleared": "Forespørselsloggen ble vellykket slettet",
"query_log_updated": "Forespørselsloggen ble vellykket oppdatert",
"query_log_clear": "Tøm forespørselsloggene",
"query_log_retention": "Beholding av forespørselsloggføringene",
"query_log_enable": "Skru på loggføring",
"query_log_configuration": "Loggføringskonfigurasjon",
"query_log_disabled": "Forespørselsloggen er skrudd av og kan bli satt opp i <0>innstillingene</0>",
"query_log_strict_search": "Bruk anførselstegn for strenge søk",
"query_log_retention_confirm": "Er du sikker på at du vil endre hvor lenge forespørselsloggføringene skal beholdes? Hvis du reduserer den interne verdien, vil noe av dataene gå tapt",
"anonymize_client_ip": "Anonymiser klient-IP-en",
"anonymize_client_ip_desc": "Ikke lagre den fulle IP-adressen til klienten i loggføringer eller statistikker",
"dns_config": "DNS-tjeneroppsett",
"blocking_mode": "Blokkeringsmodus",
"default": "Standardmodus",
"nxdomain": "NXDOMAIN",
"null_ip": "Null-IP",
"custom_ip": "Tilpasset IP",
"blocking_ipv4": "IPv4-blokkering",
"blocking_ipv6": "IPv6-blokkering",
"dns_over_https": "DNS-over-HTTPS",
"dns_over_tls": "DNS-over-TLS",
"plain_dns": "Ordinær DNS",
"form_enter_rate_limit": "Skriv inn forespørselsfrekvensgrense",
"rate_limit": "Forespørselsfrekvensgrense",
"edns_enable": "Aktiver EDNS-klientundernett",
"edns_cs_desc": "Hvis det er skrudd på, vil AdGuard Home sende klientenes undernett til DNS-tjenerne.",
"rate_limit_desc": "Antallet forespørsler per sekund som én enkelt klient har lov til å be om (0: ubegrenset)",
"blocking_ipv4_desc": "IP-adressen som det skal svares med for blokkerte A-forespørsler",
"blocking_ipv6_desc": "IP-adressen som det skal svares med for blokkerte AAAA-forespørsler",
"blocking_mode_default": "Standardmodus: Svar med NXDOMAIN når det blokkeres med en adblockoppføring; svar med IP-adressen spesifisert i oppføringen når det blokkeres av en «Hosts»-oppføring",
"blocking_mode_nxdomain": "NXDOMAIN: Svar med NXDOMAIN-koden",
"blocking_mode_null_ip": "Null IP: Svar med en 0-IP-adresse (0.0.0.0 for A; :: for AAAA)",
"blocking_mode_custom_ip": "Tilpasset IP: Svar med en manuelt valgt IP-adresse",
"upstream_dns_client_desc": "Hvis dette feltet holdes tomt, vil AdGuard Home bruke tjenerne som er satt opp i <0>DNS-innstillingene</0>.",
"tracker_source": "Sporerkilde",
"source_label": "Kilde",
"found_in_known_domain_db": "Funnet i databasen over kjente domener.",
"category_label": "Kategori",
"rule_label": "Oppføring",
"list_label": "Liste",
"unknown_filter": "Ukjent filter {{filterId}}",
"known_tracker": "Kjent sporer",
"install_welcome_title": "Velkommen til AdGuard Home!",
"install_welcome_desc": "AdGuard Home er en nettverksdekkende reklame-og-sporings-blokkerende DNS-tjener. Formålet dens er å la deg styre hele nettverket ditt og alle dine enheter, og den krever ikke at klientene bruker spesifikke programmer.",
"install_settings_title": "Admin-nettgrensesnitt",
"install_settings_listen": "Lytt til grensesnitt",
"install_settings_port": "Port",
"install_settings_interface_link": "Ditt AdGuard Home-admin-nettgrensesnitt vil være tilgjengelig på de følgende adressene:",
"form_error_port": "Skriv inn en gyldig portverdi",
"install_settings_dns": "DNS-tjener",
"install_settings_dns_desc": "Du vil måtte sette opp enhetene eller ruteren din(e) til å bruke DNS-tjeneren på disse adressene:",
"install_settings_all_interfaces": "Alle grensesnitt",
"install_auth_title": "Autentisering",
"install_auth_desc": "Det er høyst anbefalt å sette opp passordautentisering på ditt AdGuard Home-adminnettgrensesnitt. Selv om du velger å bare gjøre den tilgjengelig på ditt lokale nettverk, er det fortsatt viktig å beskytte den fra ubegrenset tilgang.",
"install_auth_username": "Brukernavn",
"install_auth_password": "Passord",
"install_auth_confirm": "Bekreft passord",
"install_auth_username_enter": "Skriv inn brukernavn",
"install_auth_password_enter": "Skriv inn passord",
"install_step": "Trinn",
"install_devices_title": "Sett opp enhetene dine",
"install_devices_desc": "For å begynne å bruke AdGuard Home, må du sette opp enhetene dine til å bruke den.",
"install_submit_title": "Gratulerer!",
"install_submit_desc": "Oppsettsprosedyren er ferdig, og du er klar til å begynne å bruke AdGuard Home.",
"install_devices_router": "Ruter",
"install_devices_router_desc": "Dette oppsettet vil automatisk dekke alle enhetene som er koblet til hjemmeruteren din, og du vil ikke måtte sette opp hver av dem manuelt.",
"install_devices_address": "AdGuard Home-DNS-tjeneren lytter til de følgende adressene",
"install_devices_router_list_1": "Åpne innstillingene til ruteren din. Vanligvis kan du få tilgang til den på nettleseren din gjennom en URL (f.eks. http://192.168.0.1/ eller http://192.168.1.1/). Du kan bli spurt om å skrive inn passordet ditt. Hvis du ikke husker det, kan du som oftest tilbakestille passordet ditt ved å trykke på knapp på selve ruteren. Noen rutere krever et spesifikt program, som i så fall er ment å allerede ha blitt installert på din PC/mobil.",
"install_devices_router_list_2": "Finn DHCP-/DNS-innstillingene. Se etter DNS-bokstavene ved siden av et felt som tillater to eller tre sett med sifre, som hver er delt opp i fire grupper på 1-3 sifre.",
"install_devices_router_list_3": "Skriv inn din AdGuard Home-tjeners adresser her.",
"install_devices_router_list_4": "På noen rutertyper, f.eks. Altibox sine hjemmesentraler, kan man ikke velge en selvvalgt DNS-tjener. I så fall kan det hjelpe på saken om du setter opp AdGuard Home som en <0>DHCP-tjener</0>. Alternativt, burde du se i bruksanvisningen til din spesifikke rutermodell om hvordan man tilpasser DNS-tjenerne.",
"install_devices_windows_list_1": "Åpne «Kontrollpanel» gjennom Start-menyen eller et Windows-søk.",
"install_devices_windows_list_2": "Gå til «Nettverk og internett»-kategorien, og så til «Nettverks- og delingssenter».",
"install_devices_windows_list_3": "På den venstre siden av skjermen, finn «Endre innstillinger for nettverkskort» og klikk på den.",
"install_devices_windows_list_4": "Velg din aktive tilkobling, høyreklikk på den, og velg «Egenskaper».",
"install_devices_windows_list_5": "Finn «Internet Protocol versjon 4 (TCP/IP)» i listen, velg den, og så klikk på «Egenskaper» igjen.",
"install_devices_windows_list_6": "Velg «Bruk følgende DNS-serveradresser» og så skriv inn din AdGuard Home-tjeners adresser.",
"install_devices_macos_list_1": "Klikk på Apple-ikonet og gå til Systeminnstillinger.",
"install_devices_macos_list_2": "Klikk på «Nettverk».",
"install_devices_macos_list_3": "Velg den første tilkoblingen i listen din, og klikk på «Avansert».",
"install_devices_macos_list_4": "Velg DNS-fanen og skriv inn din AdGuard Home-tjeners adresser der.",
"install_devices_android_list_1": "Fra Android-startskjermen, trykk på «Innstillinger».",
"install_devices_android_list_2": "Velg «Wi-Fi» i menyen. Skjermen som lister opp alle de tilgjengelige nettverkene vil bli vist (det er umulig å velge selvvalgte DNS-adresser for mobiltilkoblinger uten en DNS-endringsapp).",
"install_devices_android_list_3": "Langtrykk på nettverket du er koblet til, og så trykk «Endre nettverket».",
"install_devices_android_list_4": "På noen enheter, vil du måtte huke av boksen for Avansert for se flere innstillinger. For å justere dine Android-DNS-innstillinger, vil du måtte endre IP-innstillingene fra DHCP til Statisk.",
"install_devices_android_list_5": "Endre de forvalgte 'DNS 1' og 'DNS 2'-verdiene til din AdGuard Home-tjeners adresser.",
"install_devices_ios_list_1": "Fra startskjermen, trykk på «Innstillinger».",
"install_devices_ios_list_2": "Velg Wi-Fi i den venstre menyen (det er umulig å sette opp DNS for mobildata-nettverk).",
"install_devices_ios_list_3": "Trykk på navnet til det nettverket som er aktivt for øyeblikket.",
"install_devices_ios_list_4": "I DNS-feltet, skriv inn din AdGuard Home-tjeners adresser.",
"get_started": "Kom i gang",
"next": "Neste",
"open_dashboard": "Åpne kontrollsenteret",
"install_saved": "Lagringen var vellykket",
"encryption_title": "Kryptering",
"encryption_desc": "Krypteringsstøtte (HTTPS/TLS) for både DNS og admin-nettgrensesnittet",
"encryption_config_saved": "Krypteringsoppsettet ble lagret",
"encryption_server": "Tjenerens navn",
"encryption_server_enter": "Skriv inn domenenavnet ditt",
"encryption_server_desc": "For å kunne bruke HTTPS, må du skrive inn tjenernavnet som samsvarer med ditt SSL-sertifikat.",
"encryption_redirect": "Automatisk omdiriger til HTTPS",
"encryption_redirect_desc": "Dersom dette er valgt, vil AdGuard Home automatisk omdirigere deg fra HTTP til HTTPS-adresser.",
"encryption_https": "HTTPS-port",
"encryption_https_desc": "Dersom HTTPS-porten er satt opp, vil AdGuard Home sitt admin-grensesnitt være tilgjengelig gjennom HTTPS, og vil også sørge for DNS-over-HTTPS på «/dns-query»-plasseringen.",
"encryption_dot": "'DNS-over-TLS'-port",
"encryption_dot_desc": "Dersom denne porten er satt opp, vil AdGuard Home kjøre en 'DNS-over-TLS'-tjener på denne porten.",
"encryption_certificates": "Sertifikater",
"encryption_certificates_desc": "For å bruke kryptering, må du skrive inn et gyldig SSL-sertifikatkjede for domenet ditt. Du kan få et gratis sertifikat hos <0>{{link}}</0>, eller kjøpe et fra en av de troverdige sertifikatsautoritetene.",
"encryption_certificates_input": "Kopier / lim inn dine PEM-kodede sertifikater her.",
"encryption_status": "Status",
"encryption_expire": "Utløper",
"encryption_key": "Privat nøkkel",
"encryption_key_input": "Kopier / lim inn ditt sertifikats PEM-kodede private nøkkel her.",
"encryption_enable": "Skru på kryptering (HTTPS, DNS-over-HTTPS, og DNS-over-TLS)",
"encryption_enable_desc": "Dersom kryptering er skrudd på, vil AdGuard Home sitt admingrensesnitt virke over HTTPS, og DNS-tjeneren vil lytte etter forespørseler over DNS-over-HTTPS og DNS-over-TLS.",
"encryption_chain_valid": "Sertifikatskjeden er gyldig",
"encryption_chain_invalid": "Sertifikatskjeden er ugyldig",
"encryption_key_valid": "Dette er en gyldig {{type}}-type privat nøkkel",
"encryption_key_invalid": "Dette er en ugyldig {{type}}-type privat nøkkel",
"encryption_subject": "Tema",
"encryption_issuer": "Utsteder",
"encryption_hostnames": "Vertsnavn",
"encryption_reset": "Er du sikker på at du vil tilbakestille krypteringsinnstillingene?",
"topline_expiring_certificate": "Ditt SSL-sertifikat er i ferd med å utløpe. Oppdater <0>Krypteringsinnstillinger</0>.",
"topline_expired_certificate": "SSL-sertifikatet har utløpt. Oppdater <0>Krypteringsinnstillinger</0>.",
"form_error_port_range": "Skriv inn et portnummer i området 80-65535",
"form_error_port_unsafe": "Denne porten er ikke trygg",
"form_error_equal": "Burde ikke være de samme",
"form_error_password": "Passordet samsvarer ikke",
"reset_settings": "Tilbakestill innstillinger",
"update_announcement": "AdGuard Home {{version}} er nå tilgjengelig! <0>Klikk her</0> for mere informasjon.",
"setup_guide": "Oppsettsveiledning",
"dns_addresses": "DNS-adresser",
"dns_start": "DNS-tjeneren starter opp",
"dns_status_error": "Feil ved sjekk av DNS-tjenerstatusen",
"down": "Nedstrøm",
"fix": "Fiks",
"dns_providers": "Her er en <0>liste over kjente DNS-leverandører</0> som du kan velge blant.",
"update_now": "Oppdater nå",
"update_failed": "Auto-oppdatering mislyktes. Vennligst <a href='https://github.com/AdguardTeam/AdGuardHome/wiki/Getting-Started#update'>følg trinnene</a> for manuelle oppdateringer.",
"processing_update": "Vennligst vent, AdGuard Home blir oppdatert",
"clients_title": "Klienter",
"clients_desc": "Konfigurer enheter som er koblet til AdGuard Home",
"settings_global": "Overbestyrt",
"settings_custom": "Tilpasset",
"table_client": "Klient",
"table_name": "Navn",
"save_btn": "Lagre",
"client_add": "Legg til klient",
"client_new": "Ny klient",
"client_edit": "Rediger klienten",
"client_identifier": "Identifikator",
"ip_address": "IP-adresse",
"client_identifier_desc": "Klienter kan bli identifisert gjennom IP-adressen eller MAC-adressen. Vennligst bemerk at å bruke MAC som en identifikator, bare er mulig dersom AdGuard Home også er en <0>DHCP-tjener</0>",
"form_enter_ip": "Skriv inn IP",
"form_enter_mac": "Skriv inn MAC",
"form_enter_id": "Skriv inn identifikator",
"form_add_id": "Legg til identifikator",
"form_client_name": "Skriv inn klientnavnet",
"name": "Navn",
"client_global_settings": "Bruk de overbestyrte innstillingene",
"client_deleted": "Klienten «{{key}}» ble vellykket slettet",
"client_added": "Klienten «{{key}}» ble vellykket lagt til",
"client_updated": "Klienten «{{key}}» ble vellykket oppdatert",
"clients_not_found": "Ingen klienter ble funnet",
"client_confirm_delete": "Er du sikker på at du vil slette klienten «{{key}}»?",
"list_confirm_delete": "Er du sikker på at du vil slette denne listen?",
"auto_clients_title": "Klienter (kjørende)",
"auto_clients_desc": "Loggføring over klientene som bruker AdGuard Home, men som ikke har blitt lagret i oppsettet",
"access_title": "Tilgangsinnstillinger",
"access_desc": "Her kan du sette opp tilgangsregler for AdGuard Home-DNS-tjeneren.",
"access_allowed_title": "Tillatte klienter",
"access_allowed_desc": "En liste over CIDR- eller IP-adresser. Dersom dette er satt opp, vil AdGuard Home kun akseptere forespørsler fra disse IP-adressene.",
"access_disallowed_title": "Klienter som skal avvises",
"access_disallowed_desc": "En liste over CIDR- eller IP-adresser. Dersom dette er satt opp, vil AdGuard Home avslå forespørsler fra disse IP-adressene.",
"access_blocked_title": "Blokkerte domener",
"access_blocked_desc": "Ikke forveksle dette med filtre. AdGuard Home vil nekte å behandle DNS-forespørsler som har disse domenene i forespørselene.",
"access_settings_saved": "Tilgangsinnstillingene ble vellykket lagret",
"updates_checked": "Oppdateringene ble vellykket sett etter",
"updates_version_equal": "AdGuard Home er fullt oppdatert",
"check_updates_now": "Se etter oppdateringer nå",
"dns_privacy": "DNS-privatliv",
"setup_dns_privacy_1": "<0>DNS-over-TLS:</0> Benytt <1>{{address}}</1>-strengen.",
"setup_dns_privacy_2": "<0>DNS-over-HTTPS:</0> Benytt <1>{{address}}</1>-strengen.",
"setup_dns_privacy_3": "<0>Vennligst bemerk at krypterte DNS-protokoller bare er støttet på Android 9. Så du må installere ytterligere programvare for andre operativsystemer.</0><0>Her er en liste over programvare som du kan bruke.</0>",
"setup_dns_privacy_android_1": "Android 9 har innebygd støtte for DNS-over-TLS. For å sette det opp, gå til Innstillinger → Nettverk og internett → Avansert → Privat DNS, og skriv inn domenenavnet ditt der.",
"setup_dns_privacy_android_2": "<0>AdGuard for Android</0> støtter <1>DNS-over-HTTPS</1> og <1>DNS-over-TLS</1>.",
"setup_dns_privacy_android_3": "<0>Intra</0> legger til <1>DNS-over-HTTPS</1>-støtte i Android.",
"setup_dns_privacy_ios_1": "<0>DNSCloak</0> støtter <1>DNS-over-HTTPS</1>, men for å sette det opp til å bruke din egen tjener, vil du måtte generere et <2>DNS-stempel</2> for det.",
"setup_dns_privacy_ios_2": "<0>AdGuard for iOS</0> støtter <1>DNS-over-HTTPS</1>- og <1>DNS-over-TLS</1>-oppsett.",
"setup_dns_privacy_other_title": "Andre implementeringer",
"setup_dns_privacy_other_1": "AdGuard Home i seg selv kan brukes som en sikker DNS-klient for enhver plattform.",
"setup_dns_privacy_other_2": "<0>dnsproxy</0> støtter alle kjente sikre DNS-protokoller.",
"setup_dns_privacy_other_3": "<0>dnscrypt-proxy</0> støtter <1>DNS-over-HTTPS</1>.",
"setup_dns_privacy_other_4": "<0>Mozilla Firefox</0> støtter <1>DNS-over-HTTPS</1>.",
"setup_dns_privacy_other_5": "Du finner flere implementeringer <0>her</0> og <1>her</1>.",
"setup_dns_notice": "For å benytte <1>DNS-over-HTTPS</1> eller <1>DNS-over-TLS</1>, må du <0>sette opp Kryptering</0> i AdGuard Home-innstillingene.",
"rewrite_added": "DNS-omdirigeringen for «{{key}}» ble vellykket lagt til",
"rewrite_deleted": "DNS-omdirigeringen for «{{key}}» ble vellykket slettet",
"rewrite_add": "Legg til DNS-omdirigering",
"rewrite_not_found": "Ingen DNS-omdirigeringer ble funnet",
"rewrite_confirm_delete": "Er du sikker på at du vil slette DNS-omdirigeringen for «{{key}}»?",
"rewrite_desc": "Lar deg enkelt konfigurere selvvalgte DNS-tilbakemeldinger for et spesifikt domenenavn.",
"rewrite_applied": "Benyttet omdirigeringsregelen",
"rewrite_hosts_applied": "Omskrevet av 'hosts'-oppføringen",
"dns_rewrites": "DNS-omdirigeringer",
"form_domain": "Skriv inn domene",
"form_answer": "Skriv inn IP-adresse eller domenenavn",
"form_error_domain_format": "Ugyldig domeneformat",
"form_error_answer_format": "Ugyldig svarformat",
"configure": "Sett opp",
"main_settings": "Hovedinnstillinger",
"block_services": "Blokker spesifikke tjenester",
"blocked_services": "Blokkerte tjenester",
"blocked_services_desc": "Gjør det mulig å blokkere populære nettsteder og tjenester med letthet.",
"blocked_services_saved": "Tjenesteblokkeringene ble vellykket lagret",
"blocked_services_global": "Bruk de overbestyrt blokkerte tjenestene",
"blocked_service": "Blokkert tjeneste",
"block_all": "Blokker alt",
"unblock_all": "Tillat alt",
"encryption_certificate_path": "Filbanen til sertifikatet",
"encryption_private_key_path": "Filbanen til den private nøkkelen",
"encryption_certificates_source_path": "Bestem en filbane for sertifikater",
"encryption_certificates_source_content": "Lim inn innholdet til sertifikatet",
"encryption_key_source_path": "Bestem en privat nøkkelfil",
"encryption_key_source_content": "Lim inn innholdet til den private nøkkelen",
"stats_params": "Statistikk-oppsett",
"config_successfully_saved": "Oppsettet ble vellykket lagret",
"interval_24_hour": "24 timer",
"interval_days": "{{count}} dag",
"interval_days_plural": "{{count}} dager",
"domain": "Domene",
"answer": "Svar",
"filter_added_successfully": "Filteret har blitt vellykket lagt til",
"filter_updated": "Listen ble vellykket oppdatert",
"statistics_configuration": "Statistikk-oppsett",
"statistics_retention": "Statistikkbeholding",
"statistics_retention_desc": "Hvis du reduserer intervallverdien, vil noen av dataene gå tapt",
"statistics_clear": " Tøm statistikkene",
"statistics_clear_confirm": "Er du sikker på at du vil slette statistikkene?",
"statistics_retention_confirm": "Er du sikker på at du vil endre hvor lenge statistikkene skal beholdes? Hvis du reduserer den interne verdien, vil noe av dataene gå tapt",
"statistics_cleared": "Statistikkene ble vellykket tømt",
"interval_hours": "{{count}} time",
"interval_hours_plural": "{{count}} timer",
"filters_configuration": "Oppsett av filtre",
"filters_enable": "Skru på filtre",
"filters_interval": "Filteroppdateringsvanlighet",
"disabled": "Skrudd av",
"username_label": "Brukernavn",
"username_placeholder": "Skriv inn brukernavn",
"password_label": "Passord",
"password_placeholder": "Skriv inn passord",
"sign_in": "Logg på",
"sign_out": "Logg av",
"forgot_password": "Har du glemt passordet?",
"forgot_password_desc": "Vennligst følg <0>disse trinnene</0> for å lage et nytt passord til brukerkontoen din.",
"location": "Posisjon",
"orgname": "Firmanavn",
"netname": "Nettverksnavn",
"network": "Network",
"descr": "Beskrivelse",
"whois": "Whois",
"filtering_rules_learn_more": "<0>Lær mer</0> om å lage dine egne filterlister for AdGuard Home.",
"blocked_by_response": "Blokkert av responsens CNAME eller IP",
"try_again": "Prøv på nytt",
"domain_desc": "Skriv inn domenenavnet eller jokertegnet som du vil skal skrives om.",
"example_rewrite_domain": "omskriv svarene til kun dette domenenavnet.",
"example_rewrite_wildcard": "omskriv svarene til alle <0>example.org</0>-underdomener.",
"disable_ipv6": "Skru av IPv6",
"disable_ipv6_desc": "Hvis dette er skrudd på, vil alle DNS-forespørslene til IPv6-adresser (AAAA-type) bli droppet.",
"fastest_addr": "Raskeste IP-adresse",
"fastest_addr_desc": "Forespør alle DNS-tjenerne og hent den raskeste IP-adressen blant alle svarene. Dette vil gjøre DNS-forespørslene tregere, siden vi må vente på svar fra alle DNS-tjenerne, men det vil forbedre tilkoblingen generelt.",
"autofix_warning_text": "Hvis du klikker på «Fiks», vil AdGuard Home sette opp systemet ditt til å bruke 'AdGuard Home'-DNS-tjeneren.",
"autofix_warning_list": "Den vil utføre disse handlingene: <0>Skru av systemets DNSStubListener</0> <0>Sette DNS-tjeneradressen til 127.0.0.1</0> <0>Bytte ut det symbolske lenkemålet til /etc/resolv.conf med /run/systemd/resolve/resolv.conf</0> <0>Stoppe DNSStubListener (gjeninnlast 'systemd-resolved'-tjenesten)</0>",
"autofix_warning_result": "Som følge av det vil alle DNS-forespørsler fra systemet ditt bli behandlet av AdGuard Home som standard.",
"tags_title": "Stempler",
"tags_desc": "Du kan velge stemplene som passer til klienten. Stempler kan bli inkludert i filtreringsoppføringene, og lar deg benytte dem mer nøyaktig. <0>Lær mer</0>",
"form_select_tags": "Velg klientstempler",
"check_title": "Sjekk filtreringen",
"check_desc": "Sjekk om domenenavnet er filtrert",
"check": "Sjekk",
"form_enter_host": "Legg til et domenenavn",
"filtered_custom_rules": "Filtrert av Selvvalgte filtreringsoppføringer",
"choose_from_list": "Velg fra listen",
"add_custom_list": "Legg til en selvvalgt liste",
"host_whitelisted": "Domenet er hvitelistet",
"check_ip": "IP-adresser: {{ip}}",
"check_cname": "CNAME: {{cname}}",
"check_reason": "Årsak: {{reason}}",
"check_rule": "Oppføring: {{rule}}",
"check_service": "Tjenestenavn: {{service}}",
"check_not_found": "Ikke funnet i filterlistene dine",
"client_confirm_block": "Er du sikker på at du vil blokkere klienten «{{ip}}»?",
"client_confirm_unblock": "Er du sikker på at du vil oppheve blokkeringen av klienten «{{ip}}»?",
"client_blocked": "Klienten «{{ip}}» ble vellykket blokkert",
"client_unblocked": "Opphevingen av blokkeringen av klienten «{{ip}}» var vellykket",
"static_ip": "Statisk IP-adresse",
"static_ip_desc": "AdGuard Home er en tjener, så den trenger en statisk IP-adresse for å fungere ordentlig. Hvis ikke, kan ruteren din en dag kan tilegne en annen IP-adresse til denne enheten.",
"set_static_ip": "Velg en statisk IP-adresse",
"install_static_ok": "Gode nyheter! Den statiske IP-adressen er allerede satt opp",
"install_static_error": "AdGuard Home kan ikke sette opp automatisk i dette nettverksgrensesnitt. Vennligst let opp anvisningen for hvordan man gjør det manuellt.",
"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?",
"list_updated": "{{count}} liste oppdatert",
"list_updated_plural": "{{count}} lister oppdatert",
"dnssec_enable": "Skru på DNSSEC",
"dnssec_enable_desc": "Fest på DNSSEC-flagg til utgående DNS-forespørsler og sjekk resultatet (En DNS-oppstrømstjener med DNSSEC-støtte er påkrevd)",
"validated_with_dnssec": "Validert med DNSSEC",
"show_blocked_responses": "Blokkért",
"show_whitelisted_responses": "Hvitelistet",
"show_processed_responses": "Bearbeidet",
"blocked_safebrowsing": "Blokkert av barnevennlig nettlesing",
"blocked_adult_websites": "Blokkerte voksennettsteder",
"blocked_threats": "Blokkerte trusler",
"allowed": "Unntak",
"filtered": "Filtrert",
"rewritten": "Omskrevet",
"safe_search": "Trygge søk",
"blocklist": "Blokkeringsliste",
"milliseconds_abbreviation": "ms",
"cache_size": "Mellomlagerstørrelse",
"enter_cache_size": "Skriv inn mellomlagerstørrelse",
"filter_category_general": "Generelt",
"filter_category_security": "Sikkerhet",
"filter_category_regional": "Regional",
"filter_category_other": "Andre",
"filter_category_other_desc": "Andre blokkeringslister",
"click_to_view_queries": "Klikk for å vise forespørsler"
}

View File

@@ -0,0 +1,567 @@
{
"client_settings": "Ustawienia klienta",
"example_upstream_reserved": "możesz określić serwer DNS <0>dla konkretnych domen</0>",
"upstream_parallel": "Używaj równoległych żądań, aby przyspieszyć rozwiązywanie adresów domen, jednocześnie wysyłając zapytania do wszystkich głównych serwerów DNS",
"parallel_requests": "Równoległe żądania",
"load_balancing": "Równoważenie obciążenia",
"load_balancing_desc": "Zapytaj jeden serwer na raz. AdGuard Home wykorzysta losowy algorytm, aby użyć najczęściej najszybszego serwera.",
"bootstrap_dns": "Serwery DNS Bootstrap",
"bootstrap_dns_desc": "Serwery DNS Bootstrap są używane do ustalenia adresu IP serwerów DoH/DoT, które oznaczysz jako główne serwery DNS.",
"check_dhcp_servers": "Sprawdź serwery DHCP",
"save_config": "Zapisz konfigurację",
"enabled_dhcp": "Serwer DHCP włączony",
"disabled_dhcp": "Serwer DHCP wyłączony",
"dhcp_title": "Serwer DHCP ",
"dhcp_description": "Jeśli router nie zapewnia ustawień DHCP, możesz użyć wbudowanego serwera DHCP AdGuard.",
"dhcp_enable": "Włącz serwer DHCP",
"dhcp_disable": "Wyłącz serwer DHCP",
"dhcp_not_found": "Włączenie wbudowanego serwera DHCP jest bezpieczne - nie znaleźliśmy żadnych aktywnych serwerów DHCP w sieci. Sprawdź to jednak ręcznie, ponieważ nasz automatyczny test nie daje obecnie 100% gwarancji.",
"dhcp_found": "W sieci został znaleziony aktywny serwer DHCP. Włączenie wbudowanego serwera DHCP nie jest bezpieczne.",
"dhcp_leases": "Dzierżawa DHCP",
"dhcp_static_leases": "Dzierżawy statyczne DHCP",
"dhcp_leases_not_found": "Nie znaleziono dzierżaw DHCP",
"dhcp_config_saved": "Konfiguracja DHCP pomyślnie zapisana",
"form_error_required": "Pole jest wymagane",
"form_error_ip4_format": "Nieprawidłowy format IPv4",
"form_error_ip6_format": "Nieprawidłowy format IPv6",
"form_error_ip_format": "Nieprawidłowy format IP",
"form_error_mac_format": "Nieprawidłowy format MAC",
"form_error_client_id_format": "Nieprawidłowy format identyfikatora klienta",
"form_error_positive": "Musi być większa niż 0",
"form_error_negative": "Musi być równy 0 lub większy",
"dhcp_form_gateway_input": "Adres IP bramy",
"dhcp_form_subnet_input": "Maska podsieci",
"dhcp_form_range_title": "Zakres adresów IP",
"dhcp_form_range_start": "Początek zakresu",
"dhcp_form_range_end": "Koniec zakresu",
"dhcp_form_lease_title": "Czas dzierżawy DHCP (w sekundach)",
"dhcp_form_lease_input": "Czas trwania dzierżawy",
"dhcp_interface_select": "Wybierz interfejs DHCP",
"dhcp_hardware_address": "Adres sprzętowy",
"dhcp_ip_addresses": "Adresy IP",
"ip": "Adres IP",
"dhcp_table_hostname": "Nazwa hosta",
"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_error": "Nie udało się ustalić, czy w sieci jest inny serwer DHCP.",
"dhcp_static_ip_error": "Aby korzystać z serwera DHCP, należy ustawić statyczny adres IP. Nie udało się ustalić, czy ten interfejs sieciowy jest skonfigurowany przy użyciu statycznego adresu IP. Ustaw statyczny adres IP ręcznie.",
"dhcp_dynamic_ip_found": "Twój system używa dynamicznej konfiguracji adresu IP dla interfejsu <0>{{interfaceName}}</0>. Aby korzystać z serwera DHCP, należy ustawić statyczny adres IP. Twój aktualny adres IP to <0>{{ipAddress}}</0>. Automatycznie ustawimy ten adres IP jako statyczny, jeśli naciśniesz przycisk Włącz DHCP.",
"dhcp_lease_added": "Dzierżawa statyczna \"{{key}}\" pomyślnie dodana",
"dhcp_lease_deleted": "Dzierżawa statyczna \"{{key}}\" pomyślnie usunięta",
"dhcp_new_static_lease": "Nowa dzierżawa statyczna",
"dhcp_static_leases_not_found": "Nie znaleziono statycznych dzierżaw DHCP",
"dhcp_add_static_lease": "Dodaj dzierżawę statyczną",
"dhcp_reset": "Czy na pewno chcesz zresetować konfigurację DHCP?",
"country": "Kraj",
"city": "Miasto",
"delete_confirm": "Czy na pewno chcesz usunąć \"{{key}}\"?",
"form_enter_hostname": "Wpisz nazwę hosta",
"error_details": "Szczegóły błędu",
"response_details": "Szczegóły odpowiedzi",
"request_details": "Szczegóły żądania",
"client_details": "Szczegóły klienta",
"details": "Szczegóły",
"back": "Wróć",
"dashboard": "Panel kontrolny",
"settings": "Ustawienia",
"filters": "Filtry",
"filter": "Filtr",
"query_log": "Dziennik zapytań",
"compact": "Kompaktowy",
"nothing_found": "Nic nie znaleziono",
"faq": "FAQ",
"version": "wersja",
"address": "Adres",
"protocol": "Protokół",
"on": "WŁĄCZONY",
"off": "WYŁĄCZONY",
"copyright": "Prawo autorskie",
"homepage": "Strona główna",
"report_an_issue": "Zgłoś problem",
"privacy_policy": "Polityka prywatności",
"enable_protection": "Włącz ochronę",
"enabled_protection": "Ochrona włączona ",
"disable_protection": "Wyłącz ochronę",
"disabled_protection": "Ochrona wyłączona ",
"refresh_statics": "Odśwież statystyki",
"dns_query": "Zapytania DNS",
"blocked_by": "<0>Zablokowane przez filtry</0>",
"stats_malware_phishing": "Zablokowane złośliwe oprogramowanie/phishing",
"stats_adult": "Zablokowane witryny dla dorosłych",
"stats_query_domain": "Najczęściej wyszukiwane domeny",
"for_last_24_hours": "przez ostatnie 24 godziny",
"for_last_days": "z ostatniego dnia",
"for_last_days_plural": "z ostatnich {{count}} dni",
"no_domains_found": "Nie znaleziono domen",
"requests_count": "Licznik żądań",
"top_blocked_domains": "Najpopularniejsze zablokowane domeny",
"top_clients": "Główni klienci",
"no_clients_found": "Nie znaleziono klienta",
"general_statistics": "Ogólne statystyki",
"number_of_dns_query_days": "Liczba przetworzonych zapytań DNS w ciągu ostatnich {{count}} dni",
"number_of_dns_query_days_plural": "Liczba przetworzonych zapytań DNS w ciągu ostatnich {{count}} dni",
"number_of_dns_query_24_hours": "Liczba zapytań DNS przetworzonych w ciągu ostatnich 24 godzin",
"number_of_dns_query_blocked_24_hours": "Liczba żądań DNS zablokowanych przez filtry blokowania reklam i listy zablokowanych hostów",
"number_of_dns_query_blocked_24_hours_by_sec": "Liczba żądań DNS zablokowanych przez moduł AdGuard Bezpieczne Przeglądanie",
"number_of_dns_query_blocked_24_hours_adult": "Liczba zablokowanych witryn dla dorosłych",
"enforced_save_search": "Wymuszone bezpieczne wyszukiwanie",
"number_of_dns_query_to_safe_search": "Liczba żądań DNS do wyszukiwarek, dla których zastosowano wymuszenie bezpiecznego wyszukiwania",
"average_processing_time": "Średni czas przetwarzania",
"average_processing_time_hint": "Średni czas przetwarzania żądania DNS liczony w milisekundach",
"block_domain_use_filters_and_hosts": "Blokuj domeny za pomocą filtrów i plików host",
"filters_block_toggle_hint": "Możesz skonfigurować reguły blokowania w ustawieniach <a href='#filters'>Filtry</a> ",
"use_adguard_browsing_sec": "Użyj usługi sieciowej Bezpieczne Przeglądanie AdGuard",
"use_adguard_browsing_sec_hint": "AdGuard Home sprawdzi, czy domena jest na czarnej liście przez serwis internetowy Bezpieczne Przeglądanie. Będzie korzystać z interfejsu API przyjaznego dla prywatności w celu przeprowadzenia kontroli: na serwer wysyłany jest tylko krótki prefiks nazwy domeny SHA256.",
"use_adguard_parental": "Użyj usługi Kontrola Rodzicielska AdGuard",
"use_adguard_parental_hint": "AdGuard Home sprawdzi, czy domena zawiera materiały dla dorosłych. Używa tego samego interfejsu API przyjaznego prywatności, co usługa sieciowa Bezpieczne Przeglądanie. ",
"enforce_safe_search": "Wymuszaj bezpieczne wyszukiwanie",
"enforce_save_search_hint": "AdGuard Home może wymusić bezpieczne wyszukiwanie w następujących wyszukiwarkach: Google, Youtube, Bing, DuckDuckGo, Yandex, Pixabay.",
"no_servers_specified": "Nie określono serwerów",
"general_settings": "Ustawienia główne",
"dns_settings": "Ustawienia DNS",
"dns_blocklists": "Listy zablokowanych DNS",
"dns_allowlists": "Listy dozwolonych DNS",
"dns_blocklists_desc": "AdGuard Home zablokuje domeny pasujące do listy zablokowanych.",
"dns_allowlists_desc": "Domeny z listy dozwolonych DNS będą dozwolone, nawet jeśli znajdują się na jednej z zablokowanych list.",
"custom_filtering_rules": "Niestandardowe reguły filtrowania",
"encryption_settings": "Ustawienia szyfrowania",
"dhcp_settings": "Ustawienia DHCP",
"upstream_dns": "Główne serwery DNS",
"upstream_dns_hint": "Jeśli to pole pozostawisz puste, AdGuard Home wykorzysta usługę <a href='https://www.quad9.net/' target='_blank'>Quad9</a> jako główny serwer DNS.",
"test_upstream_btn": "Test głównych serwerów DNS",
"upstreams": "Główne serwery DNS",
"apply_btn": "Zastosuj",
"disabled_filtering_toast": "Wyłączone filtrowanie",
"enabled_filtering_toast": "Włączone filtrowanie",
"disabled_safe_browsing_toast": "Bezpieczne przeglądanie zostało wyłączone",
"enabled_safe_browsing_toast": "Bezpieczne przeglądanie zostało włączone",
"disabled_parental_toast": "Wyłączona Kontrola Rodzicielska",
"enabled_parental_toast": "Włączona Kontrola Rodzicielska",
"disabled_safe_search_toast": "Bezpieczne wyszukiwanie zostało włączone",
"enabled_save_search_toast": "Bezpieczne wyszukiwanie zostało włączone",
"enabled_table_header": "Włączone",
"name_table_header": "Nazwa",
"list_url_table_header": "Adres URL listy",
"rules_count_table_header": "Liczba reguł",
"last_time_updated_table_header": "Ostatnia aktualizacja",
"actions_table_header": "Akcje",
"request_table_header": "Żądanie",
"edit_table_action": "Edytuj",
"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.",
"no_blocklist_added": "Nie dodano list zablokowanych",
"no_whitelist_added": "Nie dodano list dozwolonych",
"add_blocklist": "Dodaj listę zablokowanych",
"add_allowlist": "Dodaj listę dozwolonych",
"cancel_btn": "Anuluj",
"enter_name_hint": "Wpisz nazwę",
"enter_url_or_path_hint": "Wpisz adres URL lub bezwzględną ścieżkę listy",
"check_updates_btn": "Sprawdź aktualizacje",
"new_blocklist": "Nowa lista zablokowanych",
"new_allowlist": "Nowa lista dozwolonych",
"edit_blocklist": "Edytuj listę zablokowanych",
"edit_allowlist": "Edytuj listę dozwolonych",
"choose_blocklist": "Wybierz listy zablokowanych",
"choose_allowlist": "Wybierz listy dozwolonych",
"enter_valid_blocklist": "Wpisz prawidłowy adres URL do listy zablokowanych.",
"enter_valid_allowlist": "Wpisz prawidłowy adres URL do listy dozwolonych.",
"form_error_url_format": "Format adresu URL jest nieprawidłowy",
"form_error_url_or_path_format": "Adres URL lub bezwzględna ścieżka listy jest nieprawidłowa",
"custom_filter_rules": "Niestandardowe reguły filtrowania",
"custom_filter_rules_hint": "Wpisz jedną regułę w jednej linii. Możesz użyć reguł adblock lub składni plików hostów.",
"examples_title": "Przykłady",
"example_meaning_filter_block": "zablokuj dostęp do domeny example.org i wszystkich jej subdomen",
"example_meaning_filter_whitelist": "odblokuj dostęp do domeny example.org i wszystkich jej subdomen",
"example_meaning_host_block": "AdGuard Home zwróci adres 127.0.0.1 dla domeny example.org (ale nie jej subdomen).",
"example_comment": "! Tutaj jest komentarz",
"example_comment_meaning": "komentarz",
"example_comment_hash": "# Również komentarz",
"example_regex_meaning": "blokuj dostęp do domen pasujących do określonego wyrażenia regularnego",
"example_upstream_regular": "normalny DNS (przez UDP)",
"example_upstream_dot": "zaszyfrowany <0>DNS-over-TLS</0>",
"example_upstream_doh": "zaszyfrowany <0>DNS-over-HTTPS</0>",
"example_upstream_sdns": "możesz użyć adresu <0>DNS Stamps</0> dla protokołu <1>DNSCrypt</1> lub <2>DNS-over-HTTPS</2>",
"example_upstream_tcp": "zwykły DNS (przez TCP)",
"all_lists_up_to_date_toast": "Wszystkie listy są już aktualne",
"updated_upstream_dns_toast": "Główne serwery DNS zostały zaktualizowane",
"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",
"unblock": "Odblokuj",
"block": "Zablokuj",
"time_table_header": "Czas",
"date": "Data",
"domain_name_table_header": "Nazwa domeny",
"domain_or_client": "Domena lub klient",
"type_table_header": "Typ",
"response_table_header": "Odpowiedź ",
"response_code": "Kod odpowiedzi",
"client_table_header": "Klient",
"empty_response_status": "Pusty",
"show_all_filter_type": "Pokaż wszystko",
"show_filtered_type": "Pokaż filtrowane",
"no_logs_found": "Nie znaleziono logów",
"refresh_btn": "Odśwież",
"previous_btn": "Poprzedni",
"next_btn": "Następny",
"loading_table_status": "Wczytuję...",
"page_table_footer_text": "Strona",
"rows_table_footer_text": "wierszy",
"updated_custom_filtering_toast": "Zaktualizowano niestandardowe reguły filtrowania",
"rule_removed_from_custom_filtering_toast": "Reguła usunięta z niestandardowych reguł filtrowania",
"rule_added_to_custom_filtering_toast": "Reguła dodana do niestandardowych reguł filtrowania",
"query_log_response_status": "Status: {{value}}",
"query_log_filtered": "Filtrowane przez {{filter}}",
"query_log_confirm_clear": "Czy na pewno chcesz wyczyścić cały dziennik zapytań?",
"query_log_cleared": "Dziennik zapytań został pomyślnie wyczyszczony",
"query_log_updated": "Dziennik zapytań został zaktualizowany",
"query_log_clear": "Wyczyść dzienniki zapytań",
"query_log_retention": "Przechowywanie dzienników zapytań",
"query_log_enable": "Włącz dziennik",
"query_log_configuration": "Konfiguracja dzienników",
"query_log_disabled": "Dziennik zapytań jest wyłączony i można go skonfigurować w <0>ustawieniach</0>",
"query_log_strict_search": "Używaj podwójnych cudzysłowów do ścisłego wyszukiwania",
"query_log_retention_confirm": "Czy na pewno chcesz zmienić sposób przechowywania dziennika zapytań? Jeśli zmniejszysz wartość interwału, niektóre dane zostaną utracone",
"anonymize_client_ip": "Anonimizuj adres IP klienta",
"anonymize_client_ip_desc": "Nie zapisuj pełnego adresu IP w dziennikach i statystykach",
"dns_config": "Konfiguracja serwera DNS",
"dns_cache_config": "Konfiguracja pamięci podręcznej DNS",
"dns_cache_config_desc": "Tutaj możesz skonfigurować pamięć podręczną DNS",
"blocking_mode": "Tryb blokowania",
"default": "Domyślny",
"nxdomain": "NXDOMAIN",
"null_ip": "Null IP",
"custom_ip": "Niestandardowy adres IP",
"blocking_ipv4": "Blokowanie IPv4",
"blocking_ipv6": "Blokowanie IPv6",
"dns_over_https": "DNS-over-HTTPS",
"dns_over_tls": "DNS-over-TLS",
"plain_dns": "Zwykły DNS",
"form_enter_rate_limit": "Wpisz limit ilościowy",
"rate_limit": "Limit ilościowy",
"edns_enable": "Włącz podsieć klienta EDNS",
"edns_cs_desc": "Po włączeniu AdGuard Home będzie wysyłał podsieci klientów na serwery DNS.",
"rate_limit_desc": "Liczba żądań na sekundę, które może wykonać pojedynczy klient (0: nieograniczona)",
"blocking_ipv4_desc": "Adres IP, który ma zostać zwrócony w przypadku zablokowanego żądania A",
"blocking_ipv6_desc": "Adres IP, który ma zostać zwrócony w przypadku zablokowanego żądania AAAA",
"blocking_mode_default": "Domyślny: Odpowiedz kodem NXDOMAIN, gdy zostanie zablokowany przez regułę w stylu Adblock; odpowiedz na adres IP określony w regule, gdy zostanie zablokowany przez regułę w stylu /etc/hosts",
"blocking_mode_nxdomain": "NXDOMAIN: Odpowiedz kodem NXDOMAIN",
"blocking_mode_null_ip": "Null IP: Odpowiedz z zerowym adresem IP (0.0.0.0 dla A; :: dla AAAA)",
"blocking_mode_custom_ip": "Niestandardowy adres IP: Odpowiedz ręcznie ustawionym adresem IP",
"upstream_dns_client_desc": "Jeśli to pole pozostanie puste, AdGuard Home użyje serwerów skonfigurowanych w <0>Ustawieniach DNS</0>.",
"tracker_source": "Źródło skryptu śledzącego",
"source_label": "Źródło",
"found_in_known_domain_db": "Znaleziono w bazie danych znanych domen.",
"category_label": "Kategoria",
"rule_label": "Reguła",
"list_label": "Lista",
"unknown_filter": "Nieznany filtr {{filterId}}",
"known_tracker": "Znany element śledzący",
"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_settings_title": "Interfejs internetowy administratora",
"install_settings_listen": "Interfejs sieciowy",
"install_settings_port": "Port",
"install_settings_interface_link": "Twój interfejs www AdGuard Home Admin będzie dostępny pod następującymi adresami:",
"form_error_port": "Wpisz poprawną wartość portu",
"install_settings_dns": "Serwer DNS",
"install_settings_dns_desc": "Konieczne będzie skonfigurowanie urządzenia lub routera do korzystania z serwera DNS pod następującymi adresami:",
"install_settings_all_interfaces": "Wszystkie interfejsy",
"install_auth_title": "Uwierzytelnianie",
"install_auth_desc": "Zalecamy skonfigurowanie strony AdGuard Home Admin, aby zweryfikować swoją tożsamość za pomocą hasła. Chociaż jest dostępny tylko w sieci lokalnej, nadal ważne jest, aby chronić go przed nieograniczonym dostępem.",
"install_auth_username": "Nazwa użytkownika",
"install_auth_password": "Hasło",
"install_auth_confirm": "Potwierdź hasło",
"install_auth_username_enter": "Wpisz nazwę użytkownika",
"install_auth_password_enter": "Wpisz hasło",
"install_step": "Krok",
"install_devices_title": "Skonfiguruj swoje urządzenia",
"install_devices_desc": "Aby usługa AdGuard Home mogła zacząć działać, musisz skonfigurować urządzenia, aby z niej korzystać.",
"install_submit_title": "Gratulacje!",
"install_submit_desc": "Procedura konfiguracji została zakończona i możesz rozpocząć korzystanie z AdGuard Home.",
"install_devices_router": "Router",
"install_devices_router_desc": "To ustawienie automatycznie obejmuje wszystkie urządzenia podłączone do routera domowego i nie trzeba ich konfigurować ręcznie.",
"install_devices_address": "Serwer DNS AdGuard Home używa następujących adresów",
"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_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 <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_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_4": "Wybierz aktywne połączenie, kliknij je prawym przyciskiem myszy i wybierz Właściwości.",
"install_devices_windows_list_5": "Znajdź na liście protokół internetowy w wersji 4 (TCP/IP), zaznacz go, a następnie ponownie kliknij Właściwości.",
"install_devices_windows_list_6": "Wybierz Użyj następujących adresów serwerów DNS i wpisz adresy serwerów AdGuard Home.",
"install_devices_macos_list_1": "Kliknij ikonę Apple i przejdź do Preferencje systemowe.",
"install_devices_macos_list_2": "Kliknij Sieć.",
"install_devices_macos_list_3": "Wybierz pierwsze połączenie z listy i kliknij Zaawansowane.",
"install_devices_macos_list_4": "Wybierz kartę DNS i wprowadź adresy serwerów AdGuard Home.",
"install_devices_android_list_1": "Na ekranie głównym Menu systemu Android stuknij Ustawienia.",
"install_devices_android_list_2": "Dotknij Wi-Fi w menu. Zostanie wyświetlony ekran z listą wszystkich dostępnych sieci (nie można ustawić niestandardowego DNS dla połączenia komórkowego).",
"install_devices_android_list_3": "Długo naciśnij sieć, do której jesteś podłączony, i dotknij Modyfikuj sieć.",
"install_devices_android_list_4": "W przypadku niektórych urządzeń może być konieczne zaznaczenie pola Zaawansowane, aby wyświetlić dalsze ustawienia. Aby dostosować ustawienia DNS Android, musisz zmienić ustawienia IP z DHCP na Statyczny.",
"install_devices_android_list_5": "Zmień wartości DNS 1 i DNS 2 na adresy serwerów AdGuard Home.",
"install_devices_ios_list_1": "Na ekranie głównym stuknij Ustawienia.",
"install_devices_ios_list_2": "Wybierz Wi-Fi w lewym menu (nie można skonfigurować DNS dla sieci komórkowych).",
"install_devices_ios_list_3": "Stuknij w nazwę aktualnie aktywnej sieci.",
"install_devices_ios_list_4": "W polu DNS wpisz adresy serwerów AdGuard Home.",
"get_started": "Zaczynamy",
"next": "Dalej",
"open_dashboard": "Otwórz panel sterowania",
"install_saved": "Pomyślnie zapisany",
"encryption_title": "Szyfrowanie",
"encryption_desc": "Obsługa szyfrowania (HTTPS/TLS) dla interfejsu sieciowego DNS i administratora",
"encryption_config_saved": "Zapisano konfigurację szyfrowania",
"encryption_server": "Nazwa serwera",
"encryption_server_enter": "Wpisz swoją nazwę domeny",
"encryption_server_desc": "Aby korzystać z protokołu HTTPS, musisz wprowadzić nazwę serwera zgodną z certyfikatem SSL.",
"encryption_redirect": "Przekieruj automatycznie do HTTPS",
"encryption_redirect_desc": "Jeśli zaznaczone, AdGuard Home automatycznie przekieruje Cię z adresów HTTP na HTTPS.",
"encryption_https": "Port HTTPS",
"encryption_https_desc": "Jeśli port HTTPS jest skonfigurowany, interfejs administratora AdGuard Home będzie dostępny za pośrednictwem protokołu HTTPS i zapewni DNS przez HTTPS w lokalizacji zapytania '/dns-query'.",
"encryption_dot": "Port DNS-over-TLS",
"encryption_dot_desc": "Jeśli ten port jest skonfigurowany, AdGuard Home uruchomi serwer DNS-over-TLS na tym porcie.",
"encryption_certificates": "Certyfikaty",
"encryption_certificates_desc": "Aby korzystać z szyfrowania, musisz podać prawidłowy łańcuch certyfikatów SSL dla swojej domeny. Możesz uzyskać bezpłatny certyfikat na <0>{{link}}</0> lub możesz go kupić od jednego z zaufanych urzędów certyfikacji.",
"encryption_certificates_input": "Kopiuj/wklej tutaj swoje zakodowane certyfikaty PEM.",
"encryption_status": "Stan",
"encryption_expire": "Wygasa",
"encryption_key": "Klucz prywatny",
"encryption_key_input": "Tutaj kopiuj/wklej klucze prywatne zakodowane w PEM do swojego certyfikatu.",
"encryption_enable": "Włącz szyfrowanie (HTTPS, DNS-over-HTTPS i DNS-over-TLS)",
"encryption_enable_desc": "Jeśli szyfrowanie jest włączone, interfejs administracyjny AdGuard Home będzie działał przez HTTPS, a serwer DNS będzie nasłuchiwał żądań przez DNS-over-HTTPS i DNS-over-TLS.",
"encryption_chain_valid": "Łańcuch certyfikatów jest prawidłowy",
"encryption_chain_invalid": "Łańcuch certyfikatu jest nieprawidłowy",
"encryption_key_valid": "Poprawny {{type}} klucz prywatny.",
"encryption_key_invalid": "Klucz prywatny {{type}} jest nieprawidłowy",
"encryption_subject": "Temat",
"encryption_issuer": "Zgłaszający",
"encryption_hostnames": "Nazwy hostów",
"encryption_reset": "Czy na pewno chcesz zresetować ustawienia szyfrowania?",
"topline_expiring_certificate": "Twój certyfikat SSL wkrótce wygaśnie. Zaktualizuj <0>Ustawienia szyfrowania</0>.",
"topline_expired_certificate": "Twój certyfikat SSL wygasł. Zaktualizuj <0>Ustawienia szyfrowania</0>.",
"form_error_port_range": "Wpisz wartość portu z zakresu 80-65535",
"form_error_port_unsafe": "To jest niebezpieczny port",
"form_error_equal": "Nie powinien być równy",
"form_error_password": "Hasło nie pasuje",
"reset_settings": "Resetowanie ustawień",
"update_announcement": "AdGuard Home {{version}} jest już dostępny! <0>Kliknij tutaj</0> aby uzyskać więcej informacji.",
"setup_guide": "Przewodnik instalacji",
"dns_addresses": "Adresy DNS",
"dns_start": "Serwer DNS uruchamia się",
"dns_status_error": "Błąd uzyskania statusu serwera DNS",
"down": "Utrata połączenia",
"fix": "Napraw",
"dns_providers": "Oto lista <0>znanych dostawców DNS</0> do wyboru.",
"update_now": "Aktualizuj teraz",
"update_failed": "Automatyczna aktualizacja nie powiodła się. Proszę <a href='https://github.com/AdguardTeam/AdGuardHome/wiki/Getting-Started#update'>wykonaj kroki</a> aby zaktualizować ręcznie.",
"processing_update": "Poczekaj, trwa aktualizacja AdGuard Home",
"clients_title": "Klienci",
"clients_desc": "Skonfiguruj urządzenia podłączone do AdGuard Home",
"settings_global": "Globalny",
"settings_custom": "Własne",
"table_client": "Klient",
"table_name": "Nazwa",
"save_btn": "Zapisz",
"client_add": "Dodaj klienta",
"client_new": "Nowy klient",
"client_edit": "Edytuj klienta",
"client_identifier": "Identyfikator",
"ip_address": "Adres IP",
"client_identifier_desc": "Klienci mogą być identyfikowani na podstawie adresu IP, CIDR, adresu MAC. Pamiętaj, że użycie MAC jako identyfikatora jest możliwe tylko wtedy, gdy AdGuard Home jest również <0>serwerem DHCP</0>",
"form_enter_ip": "Wpisz adres IP",
"form_enter_mac": "Wpisz adres MAC",
"form_enter_id": "Wpisz identyfikator",
"form_add_id": "Dodaj identyfikator",
"form_client_name": "Wpisz nazwę klienta",
"name": "Nazwa",
"client_global_settings": "Użyj ustawień globalnych",
"client_deleted": "Klient \"{{key}}\" został pomyślnie usunięty",
"client_added": "Klient \"{{key}}\" został pomyślnie dodany",
"client_updated": "Klient \"{{key}}\" został pomyślnie zaktualizowany",
"clients_not_found": "Nie znaleziono klientów",
"client_confirm_delete": "Czy na pewno chcesz usunąć klienta \"{{key}}\"?",
"list_confirm_delete": "Czy na pewno chcesz usunąć tę listę?",
"auto_clients_title": "Klienci (czas uruchamiania)",
"auto_clients_desc": "Dane klientów, które używają AdGuard Home, ale nie są przechowywane w konfiguracji",
"access_title": "Ustawienia dostępu",
"access_desc": "Tutaj możesz skonfigurować reguły dostępu dla serwera DNS AdGuard Home.",
"access_allowed_title": "Dozwoleni klienci",
"access_allowed_desc": "Lista adresów CIDR lub IP. Jeśli jest skonfigurowany, AdGuard Home akceptuje tylko żądania z tych adresów IP.",
"access_disallowed_title": "Niedozwoleni klienci",
"access_disallowed_desc": "Lista adresów CIDR lub IP. Po skonfigurowaniu AdGuard Home usunie żądania z tych adresów IP.",
"access_blocked_title": "Niedozwolone domeny",
"access_blocked_desc": "Nie myl go z filtrami. AdGuard Home zignoruje zapytanie DNS dotyczące tych domen w ramach przetwarzania zapytań. Tutaj możesz określić dokładne nazwy domen, subdomen i reguły adresów URL np. 'example.org', '*.example.org' lub '||example.org^'.",
"access_settings_saved": "Ustawienia dostępu zostały pomyślnie zapisane",
"updates_checked": "Aktualizacje pomyślnie sprawdzone",
"updates_version_equal": "AdGuard Home jest aktualny",
"check_updates_now": "Sprawdź aktualizacje teraz",
"dns_privacy": "Prywatny DNS",
"setup_dns_privacy_1": "<0>DNS-over-TLS:</0> Skorzystaj z adresu <1>{{address}}</1>.",
"setup_dns_privacy_2": "<0>DNS-over-HTTPS:</0> Skorzystaj z adresu <1>{{address}}</1>.",
"setup_dns_privacy_3": "<0>Należy pamiętać, że szyfrowane protokoły DNS są obsługiwane tylko w systemie Android 9. Musisz zainstalować dodatkowe oprogramowanie dla innych systemów operacyjnych.</0><0>Oto lista oprogramowania, którego możesz użyć.</0>",
"setup_dns_privacy_android_1": "System Android 9 obsługuje natywnie DNS-over-TLS. Aby go skonfigurować, przejdź do Ustawienia → Sieć i Internet → Zaawansowane → Prywatny DNS i wpisz tam swoją nazwę domeny.",
"setup_dns_privacy_android_2": "Aplikacja <0>AdGuard dla Androida</0> obsługuje <1>DNS-over-HTTPS</1> i <1>DNS-over-TLS</1>.",
"setup_dns_privacy_android_3": "Aplikacja <0>Intra</0> dodaje obsługę <1>DNS-over-HTTPS</1> dla Androida.",
"setup_dns_privacy_ios_1": "Aplikacja <0>DNSCloak</0> obsługuje <1>DNS-over-HTTPS</1>, ale musisz wygenerować znacznik, aby skonfigurować go do używania własnego serwera <2>DNS Stamp</2>.",
"setup_dns_privacy_ios_2": "Aplikacja <0>AdGuard dla iOS</0> obsługuje <1>DNS-over-HTTPS</1> i <1>DNS-over-TLS</1>.",
"setup_dns_privacy_other_title": "Inne implementacje",
"setup_dns_privacy_other_1": "Sam AdGuard Home może być bezpiecznym klientem DNS na dowolnej platformie.",
"setup_dns_privacy_other_2": "<0>dnsproxy</0> obsługuje wszystkie znane bezpieczne protokoły DNS.\n\n",
"setup_dns_privacy_other_3": "<0>dnscrypt-proxy</0> obsługuje <1>DNS-over-HTTPS</1>.",
"setup_dns_privacy_other_4": "<0>Mozilla Firefox</0> obsługuje <1>DNS-over-HTTPS</1>.",
"setup_dns_privacy_other_5": "Znajdziesz więcej implementacji <0>tutaj</0> i <1>tutaj</1>.",
"setup_dns_notice": "Aby skorzystać z <1>DNS-over-HTTPS</1> lub <1>DNS-over-TLS</1>, musisz w ustawieniach AdGuard Home <0>skonfigurować szyfrowanie</0>.",
"rewrite_added": "Pomyślnie dodano przepisanie DNS dla „{{key}}”",
"rewrite_deleted": "Przepisanie DNS dla „{{key}}” zostało pomyślnie usunięte",
"rewrite_add": "Dodaj przepisywanie DNS",
"rewrite_not_found": "Nie znaleziono przepisywania DNS",
"rewrite_confirm_delete": "Czy na pewno chcesz usunąć przepisywanie DNS dla „{{key}}”?",
"rewrite_desc": "Pozwala łatwo skonfigurować niestandardową odpowiedź DNS dla określonej nazwy domeny.",
"rewrite_applied": "Przepisano regułę",
"rewrite_hosts_applied": "Przepisana reguła w pliku hosts",
"dns_rewrites": "Przepisywanie DNS",
"form_domain": "Wpisz nazwę domeny lub symbol wieloznaczny",
"form_answer": "Wpisz adres IP lub nazwę domeny",
"form_error_domain_format": "Niepoprawny format domeny",
"form_error_answer_format": "Nieprawidłowy format odpowiedzi",
"configure": "Skonfiguruj",
"main_settings": "Ustawienia główne",
"block_services": "Blokuj określone usługi",
"blocked_services": "Zablokowane usługi",
"blocked_services_desc": "Pozwala szybko zablokować popularne witryny i usługi.",
"blocked_services_saved": "Zablokowane usługi zostały pomyślnie zapisane",
"blocked_services_global": "Użyj globalnych zablokowanych usług",
"blocked_service": "Zablokowana usługa",
"block_all": "Zablokuj wszystko",
"unblock_all": "Odblokuj wszystko",
"encryption_certificate_path": "Ścieżka certyfikatu",
"encryption_private_key_path": "Ścieżka klucza prywatnego",
"encryption_certificates_source_path": "Ustaw ścieżkę do pliku certyfikatów",
"encryption_certificates_source_content": "Wklej zawartość certyfikatów",
"encryption_key_source_path": "Ustaw plik klucza prywatnego",
"encryption_key_source_content": "Wklej zawartość klucza prywatnego",
"stats_params": "Konfiguracja statystyk",
"config_successfully_saved": "Konfiguracja została pomyślnie zapisana",
"interval_24_hour": "24 godziny",
"interval_days": "{{count}} dzień",
"interval_days_plural": "{{count}} dni",
"domain": "Domena",
"answer": "Odpowiedź",
"filter_added_successfully": "Lista została pomyślnie dodana",
"filter_removed_successfully": "Lista została usunięta",
"filter_updated": "Filtr został pomyślnie zaktualizowany",
"statistics_configuration": "Konfiguracja statystyk",
"statistics_retention": "Przechowywanie statystyk",
"statistics_retention_desc": "Jeśli zmniejszysz wartość interwału, niektóre dane zostaną utracone",
"statistics_clear": " Wyczyść statystyki",
"statistics_clear_confirm": "Czy na pewno chcesz wyczyścić statystyki?",
"statistics_retention_confirm": "Czy chcesz zmienić sposób przechowania statystyk? Jeżeli obniżysz wartość interwału, niektóre dane będą utracone",
"statistics_cleared": "Statystyki zostały pomyślnie wyczyszczone",
"interval_hours": "{{count}} godzina",
"interval_hours_plural": "{{count}} godziny",
"filters_configuration": "Konfiguracja filtrów",
"filters_enable": "Włącz filtry",
"filters_interval": "Częstotliwość aktualizacji filtrów",
"disabled": "Wyłączone",
"username_label": "Nazwa użytkownika",
"username_placeholder": "Wpisz nazwę użytkownika",
"password_label": "Hasło",
"password_placeholder": "Wpisz hasło",
"sign_in": "Zaloguj się",
"sign_out": "Wyloguj się",
"forgot_password": "Zapomniałeś hasła?",
"forgot_password_desc": "Wykonaj <0>te kroki</0>, aby utworzyć nowe hasło do konta użytkownika.",
"location": "Lokalizacja",
"orgname": "Nazwa firmy",
"netname": "Nazwa sieci",
"network": "Sieć",
"descr": "Opis",
"whois": "Whois",
"filtering_rules_learn_more": "<0>Dowiedz się więcej</0> o tworzeniu własnych list blokowania hostów.",
"blocked_by_response": "W odpowiedzi zablokowany przez CNAME lub IP",
"blocked_by_cname_or_ip": "Zablokowany przez rekord CNAME lub adres IP",
"try_again": "Spróbuj ponownie",
"domain_desc": "Wpisz nazwę domeny lub symbol wieloznaczny, który chcesz przepisać.",
"example_rewrite_domain": "przepisz odpowiedzi tylko dla tej nazwy domeny.",
"example_rewrite_wildcard": "przepisz odpowiedzi dla wszystkich subdomen <0>example.org</0>.",
"rewrite_ip_address": "Adres IP: użyj tego adresu IP w odpowiedzi A lub AAAA",
"rewrite_domain_name": "Nazwa domeny: dodaj rekord CNAME",
"rewrite_A": "<0>A</0>: wartość specjalna, zachowaj rekord <0>A</0> z głównego serwera DNS",
"rewrite_AAAA": "<0>AAAA</0>: wartość specjalna, zachowaj rekord <0>AAAA</0> z głównego serwera DNS",
"disable_ipv6": "Wyłącz IPv6",
"disable_ipv6_desc": "Jeśli ta funkcja jest włączona, wszystkie zapytania DNS dotyczące adresów IPv6 (typ AAAA) zostaną usunięte.",
"fastest_addr": "Najszybszy adres IP",
"fastest_addr_desc": "Zapytaj wszystkie serwery DNS i zwróć najszybszy adres IP spośród wszystkich odpowiedzi. Ta czynność spowolni zapytania DNS, ponieważ odpowiedź musi nadejść ze wszystkich serwerów DNS, ale poprawi ogólną stabilność połączenia.",
"autofix_warning_text": "Jeśli klikniesz „Napraw”, AdGuardHome skonfiguruje system do korzystania z serwera DNS AdGuardHome.",
"autofix_warning_list": "Wykona następujące zadania: <0>Dezaktywuj system DNSStubListener</0> <0>Ustaw adres serwera DNS na 127.0.0.1</0> <0>Zamień symboliczny cel łącza z /etc/resolv.conf na /run/systemd/resolve/resolv.conf</0> <0>Zatrzymaj DNSStubListener (przeładuj usługę systemową)</0>",
"autofix_warning_result": "W rezultacie wszystkie żądania DNS z Twojego systemu będą domyślnie przetwarzane przez AdGuardHome.",
"tags_title": "Tagi",
"tags_desc": "Możesz wybrać tagi odpowiadające klientowi. Tagi mogą być uwzględnione w regułach filtrowania i umożliwiają ich dokładniejsze stosowanie. <0>Dowiedz się więcej </0>",
"form_select_tags": "Wybierz tagi klienta",
"check_title": "Sprawdź filtrowanie",
"check_desc": "Sprawdź, czy nazwa hosta jest filtrowana",
"check": "Sprawdź",
"form_enter_host": "Wpisz nazwę hosta",
"filtered_custom_rules": "Filtrowane według niestandardowych reguł filtrowania",
"choose_from_list": "Wybierz z listy",
"add_custom_list": "Dodaj listę niestandardową",
"host_whitelisted": "Host znajduje się na białej liście",
"check_ip": "Adresy IP: {{ip}}",
"check_cname": "CNAME: {{cname}}",
"check_reason": "Powód: {{reason}}",
"check_rule": "Reguła: {{rule}}",
"check_service": "Nazwa usługi: {{service}}",
"check_not_found": "Nie znaleziono na Twoich listach filtrów",
"client_confirm_block": "Czy na pewno chcesz zablokować klienta \"{{ip}}\"?",
"client_confirm_unblock": "Czy na pewno chcesz odblokować klienta \"{{ip}}\"?",
"client_blocked": "Klient \"{{ip}}\" został pomyślnie zablokowany",
"client_unblocked": "Klient \"{{ip}}\" został pomyślnie odblokowany",
"static_ip": "Statyczny adres IP",
"static_ip_desc": "AdGuard Home to serwer, więc do poprawnego działania potrzebuje statycznego adresu IP. W przeciwnym razie router może przypisać temu urządzeniu inny adres IP.",
"set_static_ip": "Ustaw statyczny adres IP",
"install_static_ok": "Dobre wieści! Statyczny adres IP jest już skonfigurowany",
"install_static_error": "AdGuard Home nie może skonfigurować go automatycznie dla tego interfejsu sieciowego. Poszukaj instrukcji, jak to zrobić ręcznie.",
"install_static_configure": "Wykryliśmy, że używany jest dynamiczny adres IP — <0>{{ip}}</0>. Czy chcesz użyć go jako adresu statycznego?",
"confirm_static_ip": "AdGuard Home skonfiguruje {{ip}} aby był Twoim statycznym adresem IP. Czy chcesz kontynuować?",
"list_updated": "{{count}} lista zaktualizowana",
"list_updated_plural": "{{count}} list zaktualizowanych",
"dnssec_enable": "Włącz 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",
"all_queries": "Wszystkie zapytania",
"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",
"cache_size": "Rozmiar pamięci podręcznej",
"cache_size_desc": "Rozmiar pamięci podręcznej DNS (w bajtach)",
"cache_ttl_min_override": "Nadpisz minimalną wartość TTL",
"cache_ttl_max_override": "Nadpisz maksymalną wartość TTL",
"enter_cache_size": "Wpisz rozmiar pamięci podręcznej",
"enter_cache_ttl_min_override": "Wpisz minimalną wartość TTL",
"enter_cache_ttl_max_override": "Wpisz maksymalną wartość TTL",
"cache_ttl_min_override_desc": "Nadpisz wartość TTL (minimalną) otrzymaną od serwera nadrzędnego. Wartość nie może być większa niż 3600 (1 godzina)",
"cache_ttl_max_override_desc": "Nadpisz wartość TTL (maksymalną) otrzymaną od serwera nadrzędnego",
"min_exceeds_max_value": "Minimalna wartość przekracza maksymalną wartość",
"value_not_larger_than": "Wartość nie może być większa niż {{maximum}}",
"filter_category_general": "Ogólne",
"filter_category_security": "Bezpieczeństwo",
"filter_category_regional": "Regionalne",
"filter_category_other": "Inne",
"filter_category_general_desc": "Listy, które blokują skrypty śledzące i reklamy na większości urządzeń",
"filter_category_security_desc": "Listy, które specjalizują się w blokowaniu domen ze złośliwym oprogramowaniem, phishingiem lub oszustwami",
"filter_category_regional_desc": "Listy, które koncentrują się na reklamach regionalnych i serwerach ze skryptami śledzącymi",
"filter_category_other_desc": "Inne listy zablokowanych",
"original_response": "Oryginalna odpowiedź",
"click_to_view_queries": "Kliknij, aby wyświetlić zapytania",
"port_53_faq_link": "Port 53 jest często zajęty przez usługi \"DNSStubListener\" lub \"systemd-resolved\". Przeczytaj <0>tę instrukcję</0> jak to rozwiązać."
}

View File

@@ -1,250 +1,563 @@
{
"url_added_successfully": "URL adicionada com sucesso",
"client_settings": "Configurações do cliente",
"example_upstream_reserved": "Você pode especificar o DNS upstream <0>para o domínio(s) especifico</0>",
"upstream_parallel": "Usar consultas paralelas para acelerar a resolução consultando simultaneamente todos os servidores upstream",
"parallel_requests": "Solicitações paralelas",
"load_balancing": "Balanceamento de carga",
"load_balancing_desc": "Consulta um servidor de cada vez. O AdGuard Home usará o algoritmo aleatório ponderado para escolher o servidor, para que o servidor mais rápido seja usado com mais frequência.",
"bootstrap_dns": "Servidores DNS de inicialização",
"bootstrap_dns_desc": "Servidores DNS de inicialização são usados para resolver endereços IP dos resolvedores DoH/DoT que você especifica como upstreams.",
"check_dhcp_servers": "Verificar por servidores DHCP",
"save_config": "Salvar configura\u00e7\u00e3o",
"save_config": "Salvar configuração",
"enabled_dhcp": "Servidor DHCP ativado",
"disabled_dhcp": "Servidor DHCP desativado",
"dhcp_title": "Servidor DHCP (experimental)",
"dhcp_description": "Se o seu roteador n\u00e3o fornecer configura\u00e7\u00f5es de DHCP, voc\u00ea poder\u00e1 usar o servidor DHCP integrado do AdGuard.",
"dhcp_description": "Se o seu roteador não fornecer configurações de DHCP, você poderá usar o servidor DHCP integrado do AdGuard.",
"dhcp_enable": "Ativar servidor DHCP",
"dhcp_disable": "Desativar servidor DHCP",
"dhcp_not_found": "Nenhum servidor DHCP ativo foi encontrado na sua rede. \u00c9 seguro ativar o servidor DHCP integrado.",
"dhcp_found": "Foram encontrados servidores DHCP ativos na rede. N\u00e3o \u00e9 seguro ativar o servidor DHCP integrado.",
"dhcp_leases": "Concess\u00f5es DHCP",
"dhcp_leases_not_found": "Nenhuma concess\u00e3o DHCP encontrada",
"dhcp_config_saved": "Salvar configura\u00e7\u00f5es do servidor DHCP",
"form_error_required": "Campo obrigat\u00f3rio",
"form_error_ip_format": "formato de endere\u00e7o IPv4 inv\u00e1lido",
"dhcp_not_found": "É seguro ativar o servidor DHCP integrado - não encontramos nenhum servidor DHCP ativo na rede. No entanto, recomendamos que você faça manualmente uma nova verificação, pois nosso teste automático não oferece 100% de garantia.",
"dhcp_found": "Um servidor DHCP ativo foi encontrado na rede. Não é seguro ativar o servidor DHCP incorporado.",
"dhcp_leases": "Concessões DHCP",
"dhcp_static_leases": "Concessões de DHCP estático",
"dhcp_leases_not_found": "Nenhuma concessão DHCP encontrada",
"dhcp_config_saved": "Configurações DHCP salvas com sucesso",
"form_error_required": "Campo obrigatório",
"form_error_ip4_format": "Formato de endereço IPv4 inválido",
"form_error_ip6_format": "Formato de endereço IPv6 inválido",
"form_error_ip_format": "Formato de endereço IPv inválido",
"form_error_mac_format": "Formato do endereço MAC inválido",
"form_error_client_id_format": "Formato do ID de cliente inválido",
"form_error_positive": "Deve ser maior que 0",
"form_error_negative": "Deve ser igual ou superior a 0",
"dhcp_form_gateway_input": "IP do gateway",
"dhcp_form_subnet_input": "M\u00e1scara de sub-rede",
"dhcp_form_range_title": "Faixa de endere\u00e7os IP",
"dhcp_form_range_start": "In\u00edcio da faixa",
"dhcp_form_subnet_input": "Máscara de sub-rede",
"dhcp_form_range_title": "Faixa de endereços IP",
"dhcp_form_range_start": "Início da faixa",
"dhcp_form_range_end": "Final da faixa",
"dhcp_form_lease_title": "Tempo de concess\u00e3o do DHCP (em segundos)",
"dhcp_form_lease_input": "Dura\u00e7\u00e3o da concess\u00e3o",
"dhcp_form_lease_title": "Tempo de concessão do DHCP (em segundos)",
"dhcp_form_lease_input": "Duração da concessão",
"dhcp_interface_select": "Selecione a interface DHCP",
"dhcp_hardware_address": "Endere\u00e7o de hardware",
"dhcp_ip_addresses": "Endere\u00e7o de IP",
"dhcp_table_hostname": "Hostname",
"dhcp_hardware_address": "Endereço de hardware",
"dhcp_ip_addresses": "Endereço de IP",
"ip": "IP",
"dhcp_table_hostname": "Nome do servidor",
"dhcp_table_expires": "Expira",
"dhcp_warning": "Se voc\u00ea quiser ativar o servidor DHCP interno, certifique-se que n\u00e3o h\u00e1 outro servidor DHCP ativo. Caso contr\u00e1rio, isso pode impedir que outros dispositivos conectem \u00e1 internet!",
"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_error": "Não foi possível determinar se existe outro servidor DHCP na rede.",
"dhcp_static_ip_error": "Para usar o servidor DHCP, você deve definir um endereço IP estático. Não conseguimos determinar se essa interface de rede está configurada usando o endereço de IP estático. Por favor, defina um endereço IP estático manualmente.",
"dhcp_dynamic_ip_found": "Seu sistema usa a configuração de endereço IP dinâmico para a interface <0>{{interfaceName}}</0>. Para usar o servidor DHCP, você deve definir um endereço de IP estático. Seu endereço IP atual é <0> {{ipAddress}} </ 0>. Vamos definir automaticamente este endereço IP como estático se você pressionar o botão Ativar DHCP.",
"dhcp_lease_added": "Concessão estática \"{{key}}\" adicionada com sucesso",
"dhcp_lease_deleted": "Concessão estática \"{{key}}\" excluída com sucesso",
"dhcp_new_static_lease": "Nova concessão estática",
"dhcp_static_leases_not_found": "Nenhuma concessão DHCP estática foi encontrada",
"dhcp_add_static_lease": "Adicionar nova concessão estática",
"dhcp_reset": "Você tem certeza de que deseja redefinir a configuração DHCP?",
"country": "País",
"city": "Cidade",
"delete_confirm": "Você tem certeza de que deseja excluir \"{{key}}\"?",
"form_enter_hostname": "Digite o hostname",
"error_details": "Detalhes do erro",
"response_details": "Detalhes da resposta",
"request_details": "Detalhes da solicitação",
"client_details": "Detalhes do cliente",
"details": "Detalhes",
"back": "Voltar",
"dashboard": "Painel",
"settings": "Configura\u00e7\u00f5es",
"settings": "Configurações",
"filters": "Filtros",
"filter": "Filtro",
"query_log": "Registro de consultas",
"compact": "Compactar",
"nothing_found": "Nada encontrado",
"faq": "FAQ",
"version": "vers\u00e3o",
"address": "endere\u00e7o",
"on": "ON",
"off": "OFF",
"version": "Versão",
"address": "Endereço",
"protocol": "Protocolo",
"on": "Ligado",
"off": "Desligado",
"copyright": "Copyright",
"homepage": "P\u00e1gina inicial",
"homepage": "Página inicial",
"report_an_issue": "Reportar um problema",
"enable_protection": "Ativar prote\u00e7\u00e3o",
"enabled_protection": "Prote\u00e7\u00e3o ativada",
"disable_protection": "Desativar prote\u00e7\u00e3o",
"disabled_protection": "Prote\u00e7\u00e3o desativada",
"refresh_statics": "Atualizar estat\u00edsticas",
"privacy_policy": "Política de privacidade",
"enable_protection": "Ativar proteção",
"enabled_protection": "Proteção ativada",
"disable_protection": "Desativar proteção",
"disabled_protection": "Proteção desativada",
"refresh_statics": "Atualizar estatísticas",
"dns_query": "Consultas de DNS",
"blocked_by": "Bloqueador por filtros",
"stats_malware_phishing": "Bloqueado malware\/phishing",
"blocked_by": "<0>Bloqueador por filtros</0>",
"stats_malware_phishing": "Bloqueado malware/phishing",
"stats_adult": "Bloqueado sites adultos",
"stats_query_domain": "Principais dom\u00ednios consultados",
"for_last_24_hours": "nas \u00faltimas 24 horas",
"no_domains_found": "Nenhum dom\u00ednio encontrado",
"requests_count": "Contagem de solicita\u00e7\u00f5es",
"top_blocked_domains": "Principais dom\u00ednios bloqueados",
"stats_query_domain": "Principais domínios consultados",
"for_last_24_hours": "nas últimas 24 horas",
"for_last_days": "nos últimos {{count}} dias",
"for_last_days_plural": "nos últimos {{count}} dias",
"no_domains_found": "Nenhum domínio encontrado",
"requests_count": "Contagem de solicitações",
"top_blocked_domains": "Principais domínios bloqueados",
"top_clients": "Principais clientes",
"no_clients_found": "Nenhuma cliente encontrado",
"general_statistics": "Estat\u00edsticas gerais",
"number_of_dns_query_24_hours": "O n\u00famero de consultas DNS processadas nas \u00faltimas 24 horas",
"number_of_dns_query_blocked_24_hours": "V\u00e1rias solicita\u00e7\u00f5es DNS bloqueadas por filtros de bloqueio de an\u00fancios e listas de bloqueio de hosts",
"number_of_dns_query_blocked_24_hours_by_sec": "V\u00e1rias solicita\u00e7\u00f5es de DNS bloqueadas pelo m\u00f3dulo de seguran\u00e7a da navega\u00e7\u00e3o do AdGuard",
"number_of_dns_query_blocked_24_hours_adult": "V\u00e1rios sites adultos bloqueados",
"enforced_save_search": "For\u00e7ar pesquisa segura",
"number_of_dns_query_to_safe_search": "V\u00e1rias solicita\u00e7\u00f5es de DNS para motores de busca para os quais a pesquisa segura foi aplicada",
"average_processing_time": "Tempo m\u00e9dio de processamento",
"average_processing_time_hint": "Tempo m\u00e9dio em milissegundos no processamento de uma solicita\u00e7\u00e3o DNS",
"block_domain_use_filters_and_hosts": "Bloquear dom\u00ednios usando arquivos de filtros e hosts",
"filters_block_toggle_hint": "Voc\u00ea pode configurar as regras de bloqueio nas configura\u00e7\u00f5es de <a href='#filters'>Filtros<\/a>.",
"use_adguard_browsing_sec": "Usar o servi\u00e7o de seguran\u00e7a da navega\u00e7\u00e3o do AdGuard",
"use_adguard_browsing_sec_hint": "O AdGuard Home ir\u00e1 verificar se o dom\u00ednio est\u00e1 na lista negra do servi\u00e7o de seguran\u00e7a da navega\u00e7\u00e3o. Ele usar\u00e1 a API de pesquisa de privacidade para executar a verifica\u00e7\u00e3o: apenas um prefixo curto do hash do nome de dom\u00ednio SHA256 \u00e9 enviado para o servidor.",
"use_adguard_parental": "Usar o servi\u00e7o de controle parental do AdGuard",
"use_adguard_parental_hint": "O AdGuard Home ir\u00e1 verificar se o dom\u00ednio cont\u00e9m conte\u00fado adulto. Ele usa a mesma API amig\u00e1vel de privacidade que o servi\u00e7o de seguran\u00e7a da navega\u00e7\u00e3o.",
"enforce_safe_search": "For\u00e7ar pesquisa segura",
"enforce_save_search_hint": "O AdGuard Home pode for\u00e7ar a pesquisa segura nos seguintes motores de busca: Google, Youtube, Bing e Yandex.",
"general_statistics": "Estatísticas gerais",
"number_of_dns_query_days": "O número de consultas DNS processadas nos últimos {{count}} dias",
"number_of_dns_query_days_plural": "Número de consultas DNS processadas nos últimos {{count}} dias",
"number_of_dns_query_24_hours": "O número de consultas DNS processadas nas últimas 24 horas",
"number_of_dns_query_blocked_24_hours": "Várias solicitações DNS bloqueadas por filtros de bloqueio de anúncios e listas de bloqueio de hosts",
"number_of_dns_query_blocked_24_hours_by_sec": "Várias solicitações de DNS bloqueadas pelo módulo de segurança da navegação do AdGuard",
"number_of_dns_query_blocked_24_hours_adult": "Vários sites adultos bloqueados",
"enforced_save_search": "Forçar pesquisa segura",
"number_of_dns_query_to_safe_search": "Várias solicitações de DNS para motores de busca para os quais a pesquisa segura foi aplicada",
"average_processing_time": "Tempo médio de processamento",
"average_processing_time_hint": "Tempo médio em milissegundos no processamento de uma solicitação DNS",
"block_domain_use_filters_and_hosts": "Bloquear domínios usando arquivos de filtros e hosts",
"filters_block_toggle_hint": "Você pode configurar as regras de bloqueio nas configurações de <a href='#filters'>Filtros</a>.",
"use_adguard_browsing_sec": "Usar o serviço de segurança da navegação do AdGuard",
"use_adguard_browsing_sec_hint": "O AdGuard Home irá verificar se o domínio está na lista negra do serviço de segurança da navegação. Ele usa a API de pesquisa de privacidade para executar a verificação: apenas um prefixo curto do hash do nome de domínio SHA256 é enviado para o servidor.",
"use_adguard_parental": "Usar o serviço de controle parental do AdGuard",
"use_adguard_parental_hint": "O AdGuard Home irá verificar se o domínio contém conteúdo adulto. Ele usa a mesma API amigável de privacidade que o serviço de segurança da navegação.",
"enforce_safe_search": "Forçar pesquisa segura",
"enforce_save_search_hint": "O AdGuard Home pode forçar a pesquisa segura nos seguintes motores de busca: Google, YouTube, Bing, DuckDuckGo, Yandex, Pixabay.",
"no_servers_specified": "Nenhum servidor especificado",
"no_settings": "N\u00e3o configurado",
"general_settings": "Configura\u00e7\u00f5es gerais",
"general_settings": "Configurações gerais",
"dns_settings": "Configurações de DNS",
"dns_blocklists": "Listas negra de DNS",
"dns_allowlists": "Listas branca de DNS",
"dns_blocklists_desc": "O AdGuard Home bloqueará domínios que correspondam às listas negras.",
"dns_allowlists_desc": "Os domínios das listas branca de DNS serão permitidos mesmo que estejam em qualquer uma das listas negra.",
"custom_filtering_rules": "Regras de filtragem personalizadas",
"encryption_settings": "Configurações de criptografia",
"dhcp_settings": "Configurações de DHCP",
"upstream_dns": "Servidores DNS upstream",
"upstream_dns_hint": "Se voc\u00ea deixar este campo vazio, o AdGuard Home ir\u00e1 usar o<a href='https:\/\/1.1.1.1\/' target='_blank'>DNS da Cloudflare<\/a> como upstream. Use o prefixo tls:\/\/ para servidores DNS com TLS.",
"upstream_dns_hint": "Se você deixar este campo em branco, o AdGuard Home irá usar o <a href='https://www.quad9.net/' target='_blank'>Quad9</a> como upstream.",
"test_upstream_btn": "Testar upstreams",
"upstreams": "Upstreams",
"apply_btn": "Aplicar",
"disabled_filtering_toast": "Filtragem desativada",
"enabled_filtering_toast": "Filtragem ativada",
"disabled_safe_browsing_toast": "Navega\u00e7\u00e3o segura desativada",
"enabled_safe_browsing_toast": "Navega\u00e7\u00e3o segura ativada",
"disabled_safe_browsing_toast": "Navegação segura desativada",
"enabled_safe_browsing_toast": "Navegação segura ativada",
"disabled_parental_toast": "Controle parental desativado",
"enabled_parental_toast": "Controle parental ativado",
"disabled_safe_search_toast": "Pesquisa segura desativada",
"enabled_save_search_toast": "Pesquisa segura ativada",
"enabled_table_header": "Ativado",
"name_table_header": "Nome",
"filter_url_table_header": "URL do filtro",
"list_url_table_header": "URL da lista",
"rules_count_table_header": "Quantidade de regras",
"last_time_updated_table_header": "\u00daltima atualiza\u00e7\u00e3o",
"actions_table_header": "A\u00e7\u00f5es",
"last_time_updated_table_header": "Última atualização",
"actions_table_header": "Ações",
"request_table_header": "Solicitação",
"edit_table_action": "Editar",
"delete_table_action": "Excluir",
"filters_and_hosts": "Filtros e listas de bloqueio de hosts",
"filters_and_hosts_hint": "O AdGuard Home entende regras b\u00e1sicas de bloqueio de an\u00fancios e a sintaxe de arquivos de hosts.",
"no_filters_added": "Nenhum filtro adicionado",
"add_filter_btn": "Adicionar filtro",
"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.",
"no_blocklist_added": "Nenhuma lista negra foi adicionada",
"no_whitelist_added": "Nenhuma lista branca foi adicionada",
"add_blocklist": "Adicionar lista negra",
"add_allowlist": "Adicionar lista branca",
"cancel_btn": "Cancelar",
"enter_name_hint": "Digite o nome",
"enter_url_hint": "Digite a URL",
"check_updates_btn": "Verificar atualiza\u00e7\u00f5es",
"new_filter_btn": "Nova inscri\u00e7\u00e3o de filtro",
"enter_valid_filter_url": "Digite a URL v\u00e1lida para efetuar a inscri\u00e7\u00e3o de filtro ou um arquivo de hosts.",
"enter_url_or_path_hint": "Digite a URL ou o local da lista",
"check_updates_btn": "Verificar atualizações",
"new_blocklist": "Nova lista negra",
"new_allowlist": "Nova lista branca",
"edit_blocklist": "Editar lista negra",
"edit_allowlist": "Editar lista branca",
"choose_blocklist": "Escolha as listas negras",
"choose_allowlist": "Escolha as listas brancas",
"enter_valid_blocklist": "Digite uma URL válida para a lista negra.",
"enter_valid_allowlist": "Digite uma URL válida para a lista branca.",
"form_error_url_format": "Formato da URL inválida",
"form_error_url_or_path_format": "URL ou local da lista inválida",
"custom_filter_rules": "Regras de filtragem personalizadas",
"custom_filter_rules_hint": "Digite uma regra por linha. Voc\u00ea pode usar regras de bloqueio de an\u00fancios ou a sintaxe de arquivos de hosts.",
"custom_filter_rules_hint": "Digite uma regra por linha. Você pode usar regras de bloqueio de anúncios ou a sintaxe de arquivos de hosts.",
"examples_title": "Exemplos",
"example_meaning_filter_block": "bloqueia o acesso ao dom\u00ednio exemplo.org e a todos os seus subdom\u00ednios",
"example_meaning_filter_whitelist": "desbloqueia o acesso ao dom\u00ednio exemplo.org e a todos os seus subdom\u00ednios",
"example_meaning_host_block": "O AdGuard Home ir\u00e1 retornar o endere\u00e7o 127.0.0.1 para o dom\u00ednio exemplo.org (exceto seus subdom\u00ednios).",
"example_comment": "! Aqui vai um coment\u00e1rio",
"example_comment_meaning": "apenas um coment\u00e1rio",
"example_comment_hash": "# Tamb\u00e9m um coment\u00e1rio",
"example_regex_meaning": "bloqueia o acesso aos dom\u00ednios correspondentes \u00e0 express\u00e3o regular especificada",
"example_upstream_regular": "DNS regular (atrav\u00e9s do UDP)",
"example_upstream_dot": "DNS criptografado <0>atrav\u00e9s do TLS<\/0>",
"example_upstream_doh": "DNS criptografado <0>atrav\u00e9s do HTTPS<\/0>",
"example_upstream_sdns": "Voc\u00ea pode usar <0>DNS Stamps<\/0> para o <1>DNSCrypt<\/1> ou usar resolvedores <2>DNS-sobre-HTTPS<\/2>",
"example_upstream_tcp": "DNS regular (atrav\u00e9s do TCP)",
"all_filters_up_to_date_toast": "Todos os filtros j\u00e1 est\u00e3o atualizados",
"example_meaning_filter_block": "bloqueia o acesso ao domínio exemplo.org e a todos os seus subdomínios",
"example_meaning_filter_whitelist": "desbloqueia o acesso ao domínio exemplo.org e a todos os seus subdomínios",
"example_meaning_host_block": "O AdGuard Home irá retornar o endereço 127.0.0.1 para o domínio exemplo.org (exceto seus subdomínios).",
"example_comment": "! Aqui vai um comentário",
"example_comment_meaning": "apenas um comentário",
"example_comment_hash": "# Também um comentário",
"example_regex_meaning": "bloqueia o acesso aos domínios que correspondem à expressão regular especificada",
"example_upstream_regular": "DNS regular (através do UDP)",
"example_upstream_dot": "<0>DNS-sobre-TLS</0> criptografado",
"example_upstream_doh": "<0>DNS-sobre-HTTPS</0> criptografado",
"example_upstream_sdns": "Você pode usar <0>DNS Stamps</0>para o <1>DNSCrypt</1>ou usar os resolvedores <2>DNS-sobre-HTTPS</2>",
"example_upstream_tcp": "DNS regular (através do TCP)",
"all_lists_up_to_date_toast": "Todas as listas já estão atualizadas",
"updated_upstream_dns_toast": "Atualizado os servidores DNS upstream",
"dns_test_ok_toast": "Os servidores DNS especificados est\u00e3o funcionando corretamente",
"dns_test_not_ok_toast": "O servidor \"{{key}}\": n\u00e3o p\u00f4de ser utilizado. Por favor, verifique se voc\u00ea escreveu corretamente",
"unblock_btn": "Desbloquear",
"block_btn": "Bloquear",
"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",
"unblock": "Desbloquear",
"block": "Bloquear",
"time_table_header": "Data",
"domain_name_table_header": "Nome de dom\u00ednio",
"date": "Data",
"domain_name_table_header": "Nome de domínio",
"domain_or_client": "Domínio ou cliente",
"type_table_header": "Tipo",
"response_table_header": "Resposta",
"response_code": "Código de resposta",
"client_table_header": "Cliente",
"empty_response_status": "Vazio",
"show_all_filter_type": "Mostrar todos",
"show_filtered_type": "Mostrar filtrados",
"no_logs_found": "Nenhum registro encontrado",
"disabled_log_btn": "Desativar registros",
"download_log_file_btn": "Baixar arquivo de registros",
"refresh_btn": "Atualizar",
"enabled_log_btn": "Ativar registros",
"last_dns_queries": "\u00daltimas 5000 consultas DNS",
"previous_btn": "Anterior",
"next_btn": "Pr\u00f3ximo",
"next_btn": "Próximo",
"loading_table_status": "Carregando",
"page_table_footer_text": "P\u00e1gina",
"of_table_footer_text": "de",
"page_table_footer_text": "Página",
"rows_table_footer_text": "linhas",
"updated_custom_filtering_toast": "Regras de filtragem personalizadas atualizadas",
"rule_removed_from_custom_filtering_toast": "Regra removida das regras de filtragem personalizadas",
"rule_added_to_custom_filtering_toast": "Regra adicionada \u00e0s regras de filtragem personalizadas",
"query_log_disabled_toast": "Registros de consultas desativado",
"query_log_enabled_toast": "Registros de consultas ativado",
"rule_added_to_custom_filtering_toast": "Regra adicionada às regras de filtragem personalizadas",
"query_log_response_status": "Status: {{value}}",
"query_log_filtered": "Filtrado por {{filter}}",
"query_log_confirm_clear": "Você tem certeza que deseja limpar o registro de consulta?",
"query_log_cleared": "O registro de consulta foi limpo com sucesso",
"query_log_updated": "O registro da consulta foi atualizado com sucesso",
"query_log_clear": "Limpar registros de consulta",
"query_log_retention": "Arquivamento de registros de consultas",
"query_log_enable": "Ativar registro",
"query_log_configuration": "Configuração de registros",
"query_log_disabled": "O registro de consulta está desativado e pode ser configurado em <0>configurações</0>",
"query_log_strict_search": "Use aspas duplas para uma pesquisa mais criteriosa",
"query_log_retention_confirm": "Você tem certeza de que deseja alterar o arquivamento do registro de consulta? Se diminuir o valor de intervalo, alguns dados serão perdidos",
"anonymize_client_ip": "Tornar anônimo o IP do cliente",
"anonymize_client_ip_desc": "Não salva o endereço de IP completo do cliente em registros e estatísticas",
"dns_config": "Configuração do servidor DNS",
"dns_cache_config": "Configuração de cache DNS",
"dns_cache_config_desc": "Aqui você pode configurar o cache do DNS",
"blocking_mode": "Modo de bloqueio",
"default": "Padrão",
"nxdomain": "NXDOMAIN",
"null_ip": "IP nulo",
"custom_ip": "IP personalizado",
"blocking_ipv4": "Bloqueando IPv4",
"blocking_ipv6": "Bloqueando IPv6",
"dns_over_https": "DNS-sobre-HTTPS",
"dns_over_tls": "DNS-sobre-TLS",
"plain_dns": "DNS simples",
"form_enter_rate_limit": "Insira a taxa limite",
"rate_limit": "Taxa limite",
"edns_enable": "Ativar a sub-rede do cliente EDNS",
"edns_cs_desc": "Se ativado, o AdGuard Home estará enviando as sub-redes dos clientes para os servidores DNS.",
"rate_limit_desc": "O número de solicitações por segundo que um único cliente pode fazer (0: ilimitado)",
"blocking_ipv4_desc": "Endereço de IP a ser retornado para uma solicitação bloqueada",
"blocking_ipv6_desc": "Endereço de IP a ser retornado para uma solicitação AAAA bloqueada",
"blocking_mode_default": "Por padrão: Responder com NXDOMAIN quando bloqueado pela regra estilo Adblock e responde com o endereço de IP especificado na regra quando bloqueado pela regra estilo /etc/hosts-style",
"blocking_mode_nxdomain": "NXDOMAIN: Responder com o código NXDOMAIN",
"blocking_mode_null_ip": "IP nulo: Responder com endereço IP zero (0.0.0.0 para A; :: para AAAA)",
"blocking_mode_custom_ip": "IP personalizado: Responder com um endereço IP definido manualmente",
"upstream_dns_client_desc": "Se você mantiver este campo vazio, o AdGuard Home usará os servidores configurados nas configurações <0>DNS</0>.",
"tracker_source": "Fonte do rastreador",
"source_label": "Fonte",
"found_in_known_domain_db": "Encontrado no banco de dados de dom\u00ednios conhecidos.",
"found_in_known_domain_db": "Encontrado no banco de dados de domínios conhecidos.",
"category_label": "Categoria",
"rule_label": "Regra",
"filter_label": "Filtro",
"list_label": "Lista",
"unknown_filter": "Filtro desconhecido {{filterId}}",
"known_tracker": "Rastreador conhecido",
"install_welcome_title": "Bem-vindo(a) ao AdGuard Home!",
"install_welcome_desc": "O AdGuard Home \u00e9 um servidor de DNS para bloqueio de an\u00fancios e rastreamento em toda a rede. Sua finalidade \u00e9 permitir que voc\u00ea 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_listen": "Interface de escuta",
"install_settings_port": "Porta",
"install_settings_interface_link": "A interface web de administrador do AdGuard estar\u00e1 dispon\u00edvel nos seguintes endere\u00e7os:",
"form_error_port": "Digite uma porta v\u00e1lida",
"install_settings_interface_link": "A interface web de administrador do AdGuard estará disponível nos seguintes endereços:",
"form_error_port": "Digite uma porta válida",
"install_settings_dns": "Servidor DNS",
"install_settings_dns_desc": "Voc\u00ea precisa configurar seu dispositivo ou roteador para usar o servidor DNS nos seguintes endere\u00e7os:",
"install_settings_dns_desc": "Você precisa configurar seu dispositivo ou roteador para usar o servidor DNS nos seguintes endereços:",
"install_settings_all_interfaces": "Todas interfaces",
"install_auth_title": "Autentica\u00e7\u00e3o",
"install_auth_desc": "\u00c9 altamente recomend\u00e1vel configurar uma senha de autentica\u00e7\u00e3o na interface web de administrador do AdGuard Home. Mesmo que seja acess\u00edvel apenas em sua rede local, ainda \u00e9 importante proteg\u00ea-lo contra o acesso irrestrito.",
"install_auth_username": "Nome de usu\u00e1rio",
"install_auth_title": "Autenticação",
"install_auth_desc": "É altamente recomendável configurar a autenticação por senha na interface web de administração do AdGuard Home. Mesmo que ela seja acessível somente em sua rede local, ainda assim é importante protegê-la contra acesso irrestrito.",
"install_auth_username": "Nome de usuário",
"install_auth_password": "Senha",
"install_auth_confirm": "Confirmar senha",
"install_auth_username_enter": "Digite o nome de usu\u00e1rio",
"install_auth_username_enter": "Digite o nome de usuário",
"install_auth_password_enter": "Digite a senha",
"install_step": "Passo",
"install_devices_title": "Configure seus dispositivos",
"install_devices_desc": "Para que o AdGuard Home comece a funcionar, voc\u00ea precisa configurar seus dispositivos para us\u00e1-lo.",
"install_submit_title": "Parab\u00e9ns!",
"install_submit_desc": "O procedimento de configura\u00e7\u00e3o est\u00e1 conclu\u00eddo e voc\u00ea est\u00e1 pronto para come\u00e7ar a usar o AdGuard Home.",
"install_devices_desc": "Para que o AdGuard Home comece a funcionar, você precisa configurar seus dispositivos para usá-lo.",
"install_submit_title": "Parabéns!",
"install_submit_desc": "O procedimento de configuração está concluído e você está pronto para começar a usar o AdGuard Home.",
"install_devices_router": "Roteador",
"install_devices_router_desc": "Esta configura\u00e7\u00e3o cobrir\u00e1 automaticamente todos os dispositivos conectados ao seu roteador dom\u00e9stico e voc\u00ea n\u00e3o ir\u00e1 precisar configurar cada um deles manualmente.",
"install_devices_address": "O servidor de DNS do AdGuard Home est\u00e1 capturando os seguintes endere\u00e7os",
"install_devices_router_list_1": "Abra as configura\u00e7\u00f5es do seu roteador\nNo navegador digite o IP do roteador, o padr\u00e3o \u00e9 (http:\/\/192.168.0.1\/ ou http:\/\/192.168.1.1\/), e o login e senha \u00e9 admin\/admin; Se voc\u00ea n\u00e3o se lembra da senha, voc\u00ea pode redefinir a senha rapidamente pressionando um bot\u00e3o no pr\u00f3prio roteador. Alguns roteadores t\u00eam um aplicativo espec\u00edfico que j\u00e1 deve estar instalado em seu computador\/telefone.",
"install_devices_router_list_2": "Encontre as Configura\u00e7\u00f5es de DNS. Procure as letras DNS ao lado de um campo que permite dois ou tr\u00eas conjuntos de n\u00fameros, cada um dividido em quatro grupos de um a tr\u00eas n\u00fameros.",
"install_devices_router_desc": "Esta configuração cobrirá automaticamente todos os dispositivos conectados ao seu roteador doméstico e você não irá precisar configurar cada um deles manualmente.",
"install_devices_address": "O servidor de DNS do AdGuard Home está capturando os seguintes endereços",
"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_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 <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_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\u00e7\u00f5es do adaptador.",
"install_devices_windows_list_4": "Selecione sua atual conex\u00e3o, clique nela com o bot\u00e3o direito do mouse e depois clique em Propriedades.",
"install_devices_windows_list_5": "Procure na lista por Internet Protocol Version 4 (TCP\/IP), selecione e clique em Propriedades novamente.",
"install_devices_windows_list_6": "Marque usar os seguintes endere\u00e7os de servidor DNS e digite os endere\u00e7os do servidores do AdGuard Home.",
"install_devices_macos_list_1": "Clique na \u00edcone da Apple e depois em Prefer\u00eancias do Sistema.",
"install_devices_windows_list_3": "No lado esquerdo da janela clique em Alterar as configurações do adaptador.",
"install_devices_windows_list_4": "Selecione sua atual conexão, clique nela com o botão direito do mouse e depois clique em Propriedades.",
"install_devices_windows_list_5": "Procure na lista por Internet Protocol Version 4 (TCP/IP), selecione e clique em Propriedades novamente.",
"install_devices_windows_list_6": "Marque usar os seguintes endereços de servidor DNS e digite os endereços do servidores do AdGuard Home.",
"install_devices_macos_list_1": "Clique na ícone da Apple e depois em Preferências do Sistema.",
"install_devices_macos_list_2": "Clique em Rede.",
"install_devices_macos_list_3": "Selecione a primeira conex\u00e3o da lista e clique em Avan\u00e7ado.",
"install_devices_macos_list_4": "Selecione a guia DNS e digite os endere\u00e7os dos servidores do AdGuard Home.",
"install_devices_android_list_1": "Na tela inicial do menu Android, toque em Configura\u00e7\u00f5es.",
"install_devices_android_list_2": "Toque em Wi-Fi. A tela listando todas as redes ser\u00e1 exibida (n\u00e3o \u00e9 poss\u00edvel configurar DNS personalizado para uma conex\u00e3o de dados m\u00f3veis)",
"install_devices_android_list_3": "Pressione prolongadamente a rede para a qual voc\u00ea est\u00e1 conectado e toque em Modificar rede",
"install_devices_android_list_4": "Em alguns dispositivos, talvez seja necess\u00e1rio marcar a caixa Avan\u00e7ado para ver as outras configura\u00e7\u00f5es. Para ajustar suas configura\u00e7\u00f5es de DNS do Android, voc\u00ea precisar\u00e1 alternar as configura\u00e7\u00f5es de IP de DHCP para Est\u00e1tico.",
"install_devices_android_list_5": "Altere o conjunto dos valores DNS 1 e DNS 2 para os endere\u00e7os de servidores do AdGuard Home.",
"install_devices_macos_list_3": "Selecione a primeira conexão da lista e clique em Avançado.",
"install_devices_macos_list_4": "Selecione a guia DNS e digite os endereços dos servidores do AdGuard Home.",
"install_devices_android_list_1": "Na tela inicial do menu Android, toque em Configurações.",
"install_devices_android_list_2": "Toque em Wi-Fi. A tela listando todas as redes será exibida (não é possível configurar DNS personalizado para uma conexão de dados móveis)",
"install_devices_android_list_3": "Pressione prolongadamente a rede para a qual você está conectado e toque em Modificar rede",
"install_devices_android_list_4": "Em alguns dispositivos, talvez seja necessário marcar a caixa Avançado para ver as outras configurações. Para ajustar suas configurações de DNS do Android, você precisará alternar as configurações de IP de DHCP para Estático.",
"install_devices_android_list_5": "Altere o conjunto dos valores DNS 1 e DNS 2 para os endereços de servidores do AdGuard Home.",
"install_devices_ios_list_1": "Na tela incial, toque em Ajustes.",
"install_devices_ios_list_2": "Selecione Wi-Fi no menu esquerdo (n\u00e3o \u00e9 poss\u00edvel configurar o DNS em conex\u00f5es de dados m\u00f3veis).",
"install_devices_ios_list_2": "Selecione Wi-Fi no menu esquerdo (não é possível configurar o DNS em conexões de dados móveis).",
"install_devices_ios_list_3": "Toque no nome da rede atualmente ativa.",
"install_devices_ios_list_4": "No campo DNS, digite os endere\u00e7os dos servidores do AdGuard Home.",
"get_started": "Come\u00e7ar",
"next": "Pr\u00f3ximo",
"install_devices_ios_list_4": "No campo DNS, digite os endereços dos servidores do AdGuard Home.",
"get_started": "Começar",
"next": "Próximo",
"open_dashboard": "Abrir painel",
"install_saved": "Salvo com sucesso",
"encryption_title": "Criptografia",
"encryption_desc": "Encryption (HTTPS\/TLS) support for both DNS and admin web interface",
"encryption_config_saved": "Configura\u00e7\u00e3o de criptografia salva",
"encryption_desc": "Suporte a criptografia (HTTPS/TLS) para DNS e interface de administração web",
"encryption_config_saved": "Configuração de criptografia salva",
"encryption_server": "Nome do servidor",
"encryption_server_enter": "Digite seu nome de dom\u00ednio",
"encryption_server_desc": "In order to use HTTPS, you need to enter the server name that matches your SSL certificate.",
"encryption_server_enter": "Digite seu nome de domínio",
"encryption_server_desc": "Para usar o protocolo HTTPS, você precisa digitar o nome do servidor que corresponde ao seu certificado SSL.",
"encryption_redirect": "Redirecionar automaticamente para HTTPS",
"encryption_redirect_desc": "If checked, AdGuard Home will automatically redirect you from HTTP to HTTPS addresses.",
"encryption_redirect_desc": "Se marcado, o AdGuard Home irá redirecionar automaticamente os endereços HTTP para HTTPS.",
"encryption_https": "Porta HTTPS",
"encryption_https_desc": "If HTTPS port is configured, AdGuard Home admin interface will be accessible via HTTPS, and it will also provide DNS-over-HTTPS on '\/dns-query' location.",
"encryption_https_desc": "Se a porta HTTPS estiver configurada, a interface administrativa do AdGuard Home será acessível via HTTPS e também fornecerá o DNS-sobre-HTTPS no local '/dns-query'.",
"encryption_dot": "Porta DNS-sobre-TLS",
"encryption_dot_desc": "Se essa porta estiver configurada, o AdGuard Home ir\u00e1 executar o servidor DNS-sobre- TSL nesta porta.",
"encryption_dot_desc": "Se essa porta estiver configurada, o AdGuard Home irá executar o servidor DNS-sobre- TSL nesta porta.",
"encryption_certificates": "Certificados",
"encryption_certificates_desc": "In order to use encryption, you need to provide a valid SSL certificates chain for your domain. You can get a free certificate on <0>{{link}}<\/0> or you can buy it from one of the trusted Certificate Authorities.",
"encryption_certificates_input": "Copie\/cole aqui seu certificado codificado em PEM.",
"encryption_certificates_desc": "Para usar criptografia, você precisa fornecer uma cadeia de certificados SSL válida para seu domínio. Você pode obter um certificado gratuito em <0> {{link}}</0> ou pode comprá-lo de uma das autoridades de certificação confiáveis.",
"encryption_certificates_input": "Copie/cole aqui seu certificado codificado em PEM.",
"encryption_status": "Status",
"encryption_expire": "Expira",
"encryption_key": "Chave privada",
"encryption_key_input": "Copie\/cole aqui a chave privada codificada em PEM para seu certificado.",
"encryption_key_input": "Copie/cole aqui a chave privada codificada em PEM para seu certificado.",
"encryption_enable": "Ativar criptografia (HTTPS, DNS-sobre-HTTPS e DNS-sobre-TLS)",
"encryption_enable_desc": "If encryption is enabled, AdGuard Home admin interface will work over HTTPS, and the DNS server will listen for requests over DNS-over-HTTPS and DNS-over-TLS.",
"encryption_chain_valid": "Cadeia de chave v\u00e1lida.",
"encryption_chain_invalid": "A cadeia de certificado \u00e9 inv\u00e1lida",
"encryption_key_valid": "Esta \u00e9 uma chave privada {{type}} v\u00e1lida",
"encryption_key_invalid": "Esta \u00e9 uma chave privada {{type}} inv\u00e1lida",
"encryption_enable_desc": "Se a criptografia estiver ativada, a interface administrativa do AdGuard Home funcionará em HTTPS, o servidor DNS irá capturar as solicitações por meio do DNS-sobre-HTTPS e DNS-sobre-TLS.",
"encryption_chain_valid": "Cadeia de chave válida.",
"encryption_chain_invalid": "A cadeia de certificado é inválida",
"encryption_key_valid": "Esta é uma chave privada {{type}} válida",
"encryption_key_invalid": "Esta é uma chave privada {{type}} inválida",
"encryption_subject": "Assunto",
"encryption_issuer": "Emissor",
"encryption_hostnames": "Hostnames",
"encryption_reset": "Voc\u00ea tem certeza de que deseja redefinir a configura\u00e7\u00e3o de criptografia?",
"topline_expiring_certificate": "Seu certificado SSL est\u00e1 prestes a expirar. Atualize suas <0>configura\u00e7\u00f5es de criptografia<\/]0>",
"topline_expired_certificate": "Seu certificado SSL est\u00e1 expirado. Atualize suas <0>configura\u00e7\u00f5es de criptografia<\/0>",
"encryption_hostnames": "Nomes dos servidores",
"encryption_reset": "Você tem certeza de que deseja redefinir a configuração de criptografia?",
"topline_expiring_certificate": "Seu certificado SSL está prestes a expirar. Atualize suas <0>configurações de criptografia</]0>",
"topline_expired_certificate": "Seu certificado SSL está expirado. Atualize suas <0>configurações de criptografia</0>",
"form_error_port_range": "Digite um porta entre 80 e 65535",
"form_error_port_unsafe": "Esta porta n\u00e3o \u00e9 segura",
"form_error_equal": "N\u00e3o deve ser igual",
"form_error_password": "Senhas n\u00e3o coincidem",
"reset_settings": "Redefinir configura\u00e7\u00f5es",
"update_announcement": "AdGuard Home {{version}} est\u00e1 dispon\u00edvel!<0>Clique aqui<\/0> para mais informa\u00e7\u00f5es."
"form_error_port_unsafe": "Esta porta não é segura",
"form_error_equal": "Não deve ser igual",
"form_error_password": "Senhas não coincidem",
"reset_settings": "Redefinir configurações",
"update_announcement": "AdGuard Home {{version}} está disponível!<0>Clique aqui</0> para mais informações.",
"setup_guide": "Guia de configuração",
"dns_addresses": "Endereços DNS",
"dns_start": "O servidor DNS está iniciando",
"dns_status_error": "Ocorreu um erro ao obter o status do servidor DNS",
"down": "Caiu",
"fix": "Corrigido",
"dns_providers": "Aqui está uma <0>lista de provedores de DNS conhecidos</0> para escolher.",
"update_now": "Atualizar agora",
"update_failed": "A atualização automática falhou. Por favor, <a href='https://github.com/AdguardTeam/AdGuardHome/wiki/Getting-Started#update'>siga estes passos</a> para atualizar manualmente.",
"processing_update": "Por favor, aguarde enquanto o AdGuard Home está sendo atualizado",
"clients_title": "Clientes",
"clients_desc": "Configure dispositivos conectados ao AdGuard",
"settings_global": "Global",
"settings_custom": "Personalizado",
"table_client": "Cliente",
"table_name": "Nome",
"save_btn": "Salvar",
"client_add": "Adicionar cliente",
"client_new": "Novo cliente",
"client_edit": "Editar cliente",
"client_identifier": "Identificador",
"ip_address": "Endereço de IP",
"client_identifier_desc": "Clientes podem ser identificados pelo endereço de IP ou pelo endereço MAC. Observe que o uso do endereço MAC como identificador só é possível se o AdGuard Home também for um <0>servidor DHCP</0>",
"form_enter_ip": "Digite o endereço de IP",
"form_enter_mac": "Digite o endereço MAC",
"form_enter_id": "Inserir identificador",
"form_add_id": "Adicionar identificador",
"form_client_name": "Digite o nome do cliente",
"name": "Nome",
"client_global_settings": "Usar configurações global",
"client_deleted": "Cliente \"{{key}}\" excluído com sucesso",
"client_added": "Cliente \"{{key}}\" adicionado com sucesso",
"client_updated": "Cliente \"{{key}}\" atualizado com sucesso",
"clients_not_found": "Nenhum cliente foi encontrado",
"client_confirm_delete": "Você tem certeza de que deseja excluir o cliente \"{{key}}\"?",
"list_confirm_delete": "Você tem certeza de que deseja excluir essa lista?",
"auto_clients_title": "Clientes (tempo de execução)",
"auto_clients_desc": "Dados dos clientes que usam o AdGuard Home, que não são armazenados na configuração",
"access_title": "Configurações de acessos",
"access_desc": "Aqui você pode configurar as regras de acesso para o servidores de DNS do AdGuard Home.",
"access_allowed_title": "Clientes permitidos",
"access_allowed_desc": "Uma lista de endereços IP ou CIDR. Ao configurar, o AdGuard Home irá permitir solicitações apenas desses endereços de IP.",
"access_disallowed_title": "Clientes não permitidos",
"access_disallowed_desc": "Uma lista de endereços IP ou CIDR. Ao configurar, o AdGuard Home irá descartar as solicitações desses endereços de IP.",
"access_blocked_title": "Domínios bloqueados",
"access_blocked_desc": "Não confunda isso com filtros. O AdGuard Home deixará de fazer consultas de DNS com esses domínios na questão das consultas. Aqui você pode especificar os nomes exatos de domínio, wildcards e regras do filtro por url, por exemplo: 'exemplo.org', '*.exemplo.org' ou '||example.org^'.",
"access_settings_saved": "Configurações de acesso foram salvas com sucesso",
"updates_checked": "Atualizações verificadas com sucesso",
"updates_version_equal": "O AdGuard Home está atualizado.",
"check_updates_now": "Verificar atualizações",
"dns_privacy": "Privacidade de DNS",
"setup_dns_privacy_1": "<0>DNS-sobre-TLS:</0> Use <1>{{address}}</1> string.",
"setup_dns_privacy_2": "<0>DNS-sobre-HTTPS:</0> Use <1>{{address}}</1> string.",
"setup_dns_privacy_3": "<0>Por favor, note que os protocolos de DNS criptografados são suportados apenas no Android 9. Então, você irá precisa instalar um software adicional em outros sistemas operacionais.</0><0>Aqui está a lista de softwares que você pode usar.</0>",
"setup_dns_privacy_android_1": "O Android 9 suporta o DNS-sobre-TLS de forma nativa. Para configurá-lo, vá para Configurações → Rede e internet → Avançado → DNS privado e digite seu nome de domínio lá.",
"setup_dns_privacy_android_2": "O <0>AdGuard para Android</0> suporta <1>DNS-sobre-HTTPS</1> e <1>DNS-sobre-TLS</1>.",
"setup_dns_privacy_android_3": "<0>Intra</0> adiciona o suporte <1>DNS-sobre-HTTPS</1> para o Android.",
"setup_dns_privacy_ios_1": "<0>DNSCloak</0> suporta <1>DNS-sobre-HTTPS</1>, mas para configurá-lo para usar seu próprio servidor, você precisará gerar um <2>DNS Stamp</2>.",
"setup_dns_privacy_ios_2": "O <0>AdGuard para iOS</0> suporta a configuração do <1>DNS-sobre-HTTPS</1> e <1>DNS-sobre-TLS</1>.",
"setup_dns_privacy_other_title": "Outras implementações",
"setup_dns_privacy_other_1": "O próprio AdGuard Home pode ser usado como um cliente DNS seguro em qualquer plataforma.",
"setup_dns_privacy_other_2": "<0>dnsproxy</0> suporta todos os protocolos de DNS seguros conhecidos.",
"setup_dns_privacy_other_3": "<0>dnscrypt-proxy</0> suporta <1>DNS-sobre-HTTPS</1>",
"setup_dns_privacy_other_4": "<0>Mozilla Firefox</0> suporta <1>DNS-sobre-HTTPS</1>.",
"setup_dns_privacy_other_5": "Você encontrará mais implementações <0>aqui</0> e <1>aqui</1>.",
"setup_dns_notice": "Para usar o <1>DNS-sobre-HTTPS</1> ou <1>DNS-sobre-TLS</1>, você precisa <0>configurar a criptografia</0> nas configurações do AdGuard Home.",
"rewrite_added": "Reescrita de DNS para \"{{key}}\" adicionada com sucesso",
"rewrite_deleted": "Reescrita de DNS para \"{{key}}\" excluída com sucesso",
"rewrite_add": "Adicionar reescrita de DNS",
"rewrite_not_found": "Nenhuma reescrita de DNS foi encontrada",
"rewrite_confirm_delete": "Você tem certeza de que deseja excluir a reescrita de DNS para \"{{key}}\"?",
"rewrite_desc": "Permite configurar uma resposta personalizada do DNS para um nome de domínio específico.",
"rewrite_applied": "Regra de reescrita aplicada",
"rewrite_hosts_applied": "Reescrito pela regra do arquivo de hosts",
"dns_rewrites": "Reescritas de DNS",
"form_domain": "Digite o nome do domínio ou wildcard",
"form_answer": "Digite o endereço de IP ou nome de domínio",
"form_error_domain_format": "Formato de domínio inválido",
"form_error_answer_format": "Formato de resposta inválido",
"configure": "Configurar",
"main_settings": "Configurações principais",
"block_services": "Bloquear serviços específicos",
"blocked_services": "Serviços bloqueados",
"blocked_services_desc": "Permite o bloqueio rápido de sites e serviços populares.",
"blocked_services_saved": "Serviços bloqueados salvos com sucesso",
"blocked_services_global": "Usar serviços bloqueados globais",
"blocked_service": "Serviço bloqueado",
"block_all": "Bloquear tudo",
"unblock_all": "Desbloquear todos",
"encryption_certificate_path": "Caminho do certificado",
"encryption_private_key_path": "Caminho da chave privada",
"encryption_certificates_source_path": "Definir o caminho do arquivo de certificados",
"encryption_certificates_source_content": "Colar o conteúdo dos certificados",
"encryption_key_source_path": "Definir um arquivo de chave privada",
"encryption_key_source_content": "Colar o conteúdo da chave privada",
"stats_params": "Configuração de estatísticas",
"config_successfully_saved": "Configuração salva com sucesso",
"interval_24_hour": "24 horas",
"interval_days": "{{count}} dias",
"interval_days_plural": "{{count}} dias",
"domain": "Domínio",
"answer": "Resposta",
"filter_added_successfully": "O filtro foi adicionado com sucesso",
"filter_removed_successfully": "A lista foi removida com sucesso",
"filter_updated": "O filtro atualizado com sucesso",
"statistics_configuration": "Configurações de estatísticas",
"statistics_retention": "Permanência das estatísticas",
"statistics_retention_desc": "Se você diminuir o valor do intervalo, alguns dados serão perdidos",
"statistics_clear": " Limpar estatísticas",
"statistics_clear_confirm": "Você tem certeza de que deseja limpar as estatísticas?",
"statistics_retention_confirm": "Você tem certeza que quer alterar o arquivamento das estatísticas? Se diminuir o valor do intervalo, alguns dados serão perdidos",
"statistics_cleared": "As estatísticas foram limpas com sucesso",
"interval_hours": "{{count}} hora",
"interval_hours_plural": "{{count}} horas",
"filters_configuration": "Configuração de filtros",
"filters_enable": "Ativar filtros",
"filters_interval": "Intervalo de atualização de filtros",
"disabled": "Desativado",
"username_label": "Nome de usuário",
"username_placeholder": "Digite o nome de usuário",
"password_label": "Senha",
"password_placeholder": "Digite a senha",
"sign_in": "Entrar",
"sign_out": "Encerrar sessão",
"forgot_password": "Esqueceu sua senha?",
"forgot_password_desc": "Por favor, siga <0>estes passos</0> para criar uma nova senha para a sua conta.",
"location": "Localização",
"orgname": "Nome da organização",
"netname": "Nome da rede",
"network": "Rede",
"descr": "Descrição",
"whois": "Whois",
"filtering_rules_learn_more": "<0>Saiba mais</0> sobre como criar as suas próprias listas negras de servidores.",
"blocked_by_response": "Bloqueado por CNAME ou IP na resposta",
"try_again": "Tente novamente",
"domain_desc": "Digite o nome do domínio ou wildcard que pretende reescrever.",
"example_rewrite_domain": "reescrever respostas apenas para este nome de domínio.",
"example_rewrite_wildcard": "reescrever respostas para todos subdomínios <0>exemplo.org</0>.",
"rewrite_ip_address": "Endereço IP: use esse IP em uma resposta A ou AAAA",
"rewrite_domain_name": "Nome de domínio: adicione um registro CNAME",
"rewrite_A": "<0>A</0>: valor especial, mantenha <0>A</0> nos registros do upstream",
"rewrite_AAAA": "<0>AAAA</0>: valor especial, mantenha <0>AAAA</0> nos registros do upstream",
"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.",
"fastest_addr": "Endereço de IP mais rápido",
"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_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.",
"tags_title": "Marcadores",
"tags_desc": "Você pode selecionar as tags que correspondem ao cliente. As tags podem ser incluídas nas regras de filtragem e permitir que você as aplique com mais precisão. <0>Saiba mais</0>",
"form_select_tags": "Selecione as tags do cliente",
"check_title": "Verifique a filtragem",
"check_desc": "Verificar se o nome do host está sendo filtrado",
"check": "Verificar",
"form_enter_host": "Digite o nome do host",
"filtered_custom_rules": "Filtrado pelas regras de filtragem personalizadas",
"choose_from_list": "Escolha na lista",
"add_custom_list": "Adicionar uma lista personalizada",
"host_whitelisted": "O host está na lista branca",
"check_ip": "Endereços de IP: {{ip}}",
"check_cname": "CNAME: {{cname}}",
"check_reason": "Motivo: {{reason}}",
"check_rule": "Regra: {{rule}}",
"check_service": "Nome do serviço: {{service}}",
"check_not_found": "Não encontrado em suas listas de filtros",
"client_confirm_block": "Você tem certeza de que deseja bloquear o cliente \"{{ip}}\"?",
"client_confirm_unblock": "Você tem certeza de que deseja desbloquear o cliente \"{{ip}}\"?",
"client_blocked": "Cliente \"{{ip}}\" foi bloqueado com sucesso",
"client_unblocked": "Cliente \"{{ip}}\" foi desbloqueado com sucesso",
"static_ip": "Endereço de IP estático",
"static_ip_desc": "O AdGuard Home é um servidor, portanto, ele precisa de um endereço de IP estático para funcionar corretamente. Caso contrário, em algum momento, seu roteador poderá atribuir um novo endereço de IP neste dispositivo.",
"set_static_ip": "Definir um endereço de IP estático",
"install_static_ok": "Boas notícias! O endereço de IP estático já está configurado",
"install_static_error": "O AdGuard Home não pode configurar automaticamente para esta interface de rede. Por favor, procure uma instrução sobre como fazer isso manualmente.",
"install_static_configure": "Detectamos que um endereço de IP dinâmico é sendo usado — <0>{{ip}}</0>. Deseja utilizar como seu endereço estático?",
"confirm_static_ip": "O AdGuard Home irá configurar {{ip}} para ser seu endereço IP estático. Deseja continuar?",
"list_updated": "{{count}} lista atualizada",
"list_updated_plural": "{{count}} listas atualizadas",
"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)",
"validated_with_dnssec": "Validado com DNSSEC",
"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",
"cache_size": "Tamanho do cache",
"cache_size_desc": "Tamanho do cache do DNS (em bytes)",
"cache_ttl_min_override": "Sobrepor o TTL mínimo",
"cache_ttl_max_override": "Sobrepor o TTL máximo",
"enter_cache_size": "Digite o tamanho do cache",
"enter_cache_ttl_min_override": "Digite o TTL mínimo",
"enter_cache_ttl_max_override": "Digite o TTL máximo",
"cache_ttl_min_override_desc": "Substituição do valor TTL (mínimo) recebido do servidor servidor DNS primário. Esse valor não pode exceder 3600 (1 hora)",
"cache_ttl_max_override_desc": "Substituição do valor TTL (máximo) recebido do servidor de DNS primário",
"min_exceeds_max_value": "O valor mínimo excede o valor máximo",
"value_not_larger_than": "O valor não pode ser maior que {{maximum}}",
"filter_category_general": "Geral",
"filter_category_security": "Segurança",
"filter_category_regional": "Regional",
"filter_category_other": "Outro",
"filter_category_general_desc": "Listas que bloqueiam o rastreamento e a publicidade na maioria dos dispositivos",
"filter_category_security_desc": "Listas especializadas em bloquear domínios de malware, phishing ou fraude",
"filter_category_regional_desc": "Listas focadas em anúncios regionais e servidores de rastreamento",
"filter_category_other_desc": "Outras listas negras",
"click_to_view_queries": "Clique para ver as consultas"
}

View File

@@ -0,0 +1,430 @@
{
"client_settings": "Definições do cliente",
"example_upstream_reserved": "pode especificar um DNS upstream <0>para domínio(s) especifico(s)</0>",
"upstream_parallel": "Usar consultas paralelas para acelerar a resolução consultando simultaneamente todos os servidores upstream",
"bootstrap_dns": "Servidores DNS de inicialização",
"bootstrap_dns_desc": "Servidores DNS de inicialização são usados para resolver endereços IP dos resolvedores DoH/DoT que especifica como upstreams.",
"check_dhcp_servers": "Verificar por servidores DHCP",
"save_config": "Guardar configuração",
"enabled_dhcp": "Servidor DHCP activado",
"disabled_dhcp": "Servidor DHCP desactivado",
"dhcp_title": "Servidor DHCP (experimental)",
"dhcp_description": "Se o seu router não fornecer configurações de DHCP, poderá usar o servidor DHCP integrado do AdGuard.",
"dhcp_enable": "Activar servidor DHCP",
"dhcp_disable": "Desactivar servidor DHCP",
"dhcp_not_found": "É seguro activar o servidor DHCP integrado - não encontrámos nenhum servidor DHCP activo na rede. No entanto, recomendamos que faça manualmente uma nova verificação, pois o nosso teste automático não oferece 100% de garantia.",
"dhcp_found": "Um servidor DHCP activo foi encontrado na rede. Não é seguro activar o servidor DHCP incorporado.",
"dhcp_leases": "Concessões DHCP",
"dhcp_static_leases": "Concessões de DHCP estático",
"dhcp_leases_not_found": "Nenhuma concessão DHCP encontrada",
"dhcp_config_saved": "Configurações DHCP guardadas com sucesso",
"form_error_required": "Campo obrigatório",
"form_error_ip4_format": "Formato de endereço IPv4 inválido",
"form_error_ip6_format": "Formato de endereço IPv6 inválido",
"form_error_ip_format": "Formato de endereço IPv4 inválido",
"form_error_mac_format": "Formato do endereço MAC inválido",
"form_error_client_id_format": "Formato inválido",
"form_error_positive": "Deve ser maior que 0",
"form_error_negative": "Deve ser igual ou superior a 0",
"dhcp_form_gateway_input": "IP do gateway",
"dhcp_form_subnet_input": "Máscara de sub-rede",
"dhcp_form_range_title": "Faixa de endereços IP",
"dhcp_form_range_start": "Início da faixa",
"dhcp_form_range_end": "Final da faixa",
"dhcp_form_lease_title": "Tempo de concessão do DHCP (em segundos)",
"dhcp_form_lease_input": "Duração da concessão",
"dhcp_interface_select": "Seleccione a interface DHCP",
"dhcp_hardware_address": "Endereço de hardware",
"dhcp_ip_addresses": "Endereços de IP",
"dhcp_table_hostname": "Nome do servidor",
"dhcp_table_expires": "Expira",
"dhcp_warning": "Se quiser activar o servidor DHCP, verifique se não há outro servidor DHCP activo na sua rede. Caso contrário, a internet pode parar de funcionar noutros dispositivos ligados!",
"dhcp_error": "Não foi possível determinar se existe outro servidor DHCP na rede.",
"dhcp_static_ip_error": "Para usar o servidor DHCP, deve definir um endereço IP estático. Não conseguimos determinar se essa interface de rede está configurada usando o endereço de IP estático. Por favor, defina um endereço IP estático manualmente.",
"dhcp_dynamic_ip_found": "O seu sistema usa a configuração de endereço IP dinâmico para a interface <0>{{interfaceName}}</0>. Para usar o servidor DHCP, deve definir um endereço de IP estático. O seu endereço IP actual é <0> {{ipAddress}} </ 0>. Vamos definir automaticamente este endereço IP como estático se pressionar o botão Activar DHCP.",
"dhcp_lease_added": "Concessão estática \"{{key}}\" adicionada com sucesso",
"dhcp_lease_deleted": "Concessão estática \"{{key}}\" excluída com sucesso",
"dhcp_new_static_lease": "Nova concessão estática",
"dhcp_static_leases_not_found": "Nenhuma concessão DHCP estática foi encontrada",
"dhcp_add_static_lease": "Adicionar nova concessão estática",
"dhcp_reset": "Tem a certeza de que deseja redefinir a configuração DHCP?",
"delete_confirm": "Tem a certeza de que deseja excluir \"{{key}}\"?",
"form_enter_hostname": "Insira o hostname",
"error_details": "Detalhes do erro",
"back": "Retroceder",
"dashboard": "Painel",
"settings": "Definições",
"filters": "Filtros",
"query_log": "Registo de consultas",
"faq": "Perguntas frequentes",
"version": "Versão",
"address": "Endereço",
"on": "LIGADO",
"off": "DESLIGADO",
"copyright": "Copyright",
"homepage": "Página inicial",
"report_an_issue": "Comunicar um problema",
"privacy_policy": "Política de Privacidade",
"enable_protection": "Activar protecção",
"enabled_protection": "Activar protecção",
"disable_protection": "Desactivar protecção",
"disabled_protection": "Desactivar protecção",
"refresh_statics": "Repor estatísticas",
"dns_query": "Consultas de DNS",
"blocked_by": "<0>Bloqueado por Filtros</0>",
"stats_malware_phishing": "Malware/phishing bloqueados",
"stats_adult": "Sites adultos bloqueados",
"stats_query_domain": "Principais domínios consultados",
"for_last_24_hours": "nas últimas 24 horas",
"for_last_days": "nos últimos {{count}} dias",
"for_last_days_plural": "nos últimos {{count}} dias",
"no_domains_found": "Não foram encontrados domínios",
"requests_count": "Contagem de solicitações",
"top_blocked_domains": "Principais domínios bloqueados",
"top_clients": "Principais clientes",
"no_clients_found": "Nenhum cliente foi encontrado",
"general_statistics": "Estatísticas gerais",
"number_of_dns_query_days": "Número de consultas DNS processadas durante los últimos {{count}} días",
"number_of_dns_query_days_plural": "Número de consultas DNS processadas durante os últimos {{count}} dias",
"number_of_dns_query_24_hours": "O número de consultas DNS processadas nas últimas 24 horas",
"number_of_dns_query_blocked_24_hours": "Várias solicitações DNS bloqueadas por filtros de bloqueio de anúncios e listas de bloqueio de hosts",
"number_of_dns_query_blocked_24_hours_by_sec": "Várias solicitações de DNS bloqueadas pelo módulo de segurança da navegação do AdGuard",
"number_of_dns_query_blocked_24_hours_adult": "Vários sites adultos bloqueados",
"enforced_save_search": "Forçar pesquisa segura",
"number_of_dns_query_to_safe_search": "Várias solicitações de DNS para motores de busca para os quais a pesquisa segura foi aplicada",
"average_processing_time": "Tempo médio de processamento",
"average_processing_time_hint": "Tempo médio em milissegundos no processamento de uma solicitação DNS",
"block_domain_use_filters_and_hosts": "Bloquear domínios usando arquivos de filtros e hosts",
"filters_block_toggle_hint": "Pode configurar as regras de bloqueio nas configurações de <a href='#filters'>Filtros</a>.",
"use_adguard_browsing_sec": "Usar o serviço de segurança da navegação do AdGuard",
"use_adguard_browsing_sec_hint": "O AdGuard Home irá verificar se o domínio está na lista negra do serviço de segurança da navegação. Usará a API de pesquisa de privacidade para executar a verificação: apenas um prefixo curto do hash do nome de domínio SHA256 é enviado para o servidor.",
"use_adguard_parental": "Usar o serviço de controlo parental do AdGuard",
"use_adguard_parental_hint": "O AdGuard Home irá verificar se o domínio contém conteúdo adulto. Usa a mesma API amigável de privacidade que o serviço de segurança da navegação.",
"enforce_safe_search": "Forçar pesquisa segura",
"enforce_save_search_hint": "O AdGuard Home pode forçar a pesquisa segura nos seguintes motores de busca: Google, Youtube, Bing, DuckDuckGo, Yandex, Pixabay.",
"no_servers_specified": "Nenhum servidor especificado",
"general_settings": "Definições gerais",
"dns_settings": "Definições de DNS",
"encryption_settings": "Configurações de criptografia",
"dhcp_settings": "Configurações de DHCP",
"upstream_dns": "Servidores DNS upstream",
"upstream_dns_hint": "Se deixar este campo vazio, o AdGuard Home irá usar <a href='https://www.quad9.net/' target='_blank'>Quad9</a> como upstream.",
"test_upstream_btn": "Testar upstreams",
"upstreams": "Upstreams",
"apply_btn": "Aplicar",
"disabled_filtering_toast": "Filtragem desactivada",
"enabled_filtering_toast": "Filtragem activada",
"disabled_safe_browsing_toast": "Navegação segura desactivada",
"enabled_safe_browsing_toast": "Navegação segura activada",
"disabled_parental_toast": "Controlo parental desactivado",
"enabled_parental_toast": "Controlo parental activado",
"disabled_safe_search_toast": "Pesquisa segura desactivada",
"enabled_save_search_toast": "Pesquisa segura activada",
"enabled_table_header": "Activados",
"name_table_header": "Nome",
"rules_count_table_header": "Total de Regras",
"last_time_updated_table_header": "Última actualização",
"actions_table_header": "Acções",
"edit_table_action": "Editar",
"delete_table_action": "Apagar",
"filters_and_hosts_hint": "O AdGuard Home entende regras básicas de bloqueio de anúncios e a sintaxe de arquivos de hosts.",
"cancel_btn": "Cancelar",
"enter_name_hint": "Insira o nome",
"check_updates_btn": "Verificar actualizações",
"custom_filter_rules": "Regras de filtragem personalizadas",
"custom_filter_rules_hint": "Insira uma regra por linha. Pode usar regras de bloqueio de anúncios ou a sintaxe de arquivos de hosts.",
"examples_title": "Exemplos",
"example_meaning_filter_block": "bloqueia o acesso ao domínio exemplo.org e a todos os seus subdomínios",
"example_meaning_filter_whitelist": "desbloqueia o acesso ao domínio exemplo.org e a todos os seus subdomínios",
"example_meaning_host_block": "O AdGuard Home irá retornar o endereço 127.0.0.1 para o domínio exemplo.org (excepto os seus subdomínios).",
"example_comment": "! Aqui vai um comentário",
"example_comment_meaning": "apenas um comentário",
"example_comment_hash": "# Também um comentário",
"example_regex_meaning": "bloquear o acesso aos domínios que correspondam à expressão regular especificada",
"example_upstream_regular": "dNS regular (através do UDP)",
"example_upstream_dot": "<0>DNS-sobre-TLS</0> criptografado",
"example_upstream_doh": "<0>DNS-sobre-HTTPS</0> criptografado",
"example_upstream_sdns": "pode usar <0>DNS Stamps</0>para o <1>DNSCrypt</1>ou usar os resolvedores <2>DNS-sobre-HTTPS</2>",
"example_upstream_tcp": "dNS regular (através do TCP)",
"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_not_ok_toast": "O servidor \"{{key}}\": não pôde ser utilizado. Por favor, verifique se o escreveu correctamente",
"unblock": "Desbloquear",
"block": "Bloquear",
"time_table_header": "Data",
"date": "Data",
"domain_name_table_header": "Nome do domínio",
"type_table_header": "Tipo",
"response_table_header": "Resposta",
"client_table_header": "Cliente",
"empty_response_status": "Vazio",
"show_all_filter_type": "Mostrar todos",
"show_filtered_type": "Mostrar filtrados",
"no_logs_found": "Nenhum registo encontrado",
"refresh_btn": "Actualizar",
"previous_btn": "Anterior",
"next_btn": "Seguinte",
"loading_table_status": "A carregar...",
"page_table_footer_text": "Página",
"rows_table_footer_text": "linhas",
"updated_custom_filtering_toast": "Regras de filtragem personalizadas actualizadas",
"rule_removed_from_custom_filtering_toast": "Regra removida das regras de filtragem personalizadas",
"rule_added_to_custom_filtering_toast": "Regra adicionada às regras de filtragem personalizadas",
"query_log_response_status": "Status: {{value}}",
"query_log_filtered": "Filtrado por {{filter}}",
"query_log_confirm_clear": "Tem a certeza de que deseja limpar todo o registo de consulta?",
"query_log_cleared": "O registo de consulta foi limpo com sucesso",
"query_log_clear": "Limpar registos de consulta",
"query_log_retention": "Retenção de registos de consulta",
"query_log_enable": "Activar registo",
"query_log_configuration": "Definições do registo",
"query_log_disabled": "O registo de consulta está desactivado e pode ser configurado em <0>definições</0>",
"query_log_strict_search": "Usar aspas duplas para uma pesquisa rigorosa",
"query_log_retention_confirm": "Tem a certeza de que deseja alterar a retenção do registo de consulta? Se diminuir o valor do intervalo, alguns dados serão perdidos",
"dns_config": "Configuração do servidor DNS",
"blocking_mode": "Modo de bloqueio",
"nxdomain": "NXDOMAIN",
"null_ip": "IP nulo",
"custom_ip": "IP Personalizado",
"blocking_ipv4": "A bloquear IPv4",
"blocking_ipv6": "A bloquear IPv6",
"form_enter_rate_limit": "Insira o limite de taxa",
"rate_limit": "Limite de taxa",
"edns_enable": "Activar sub-rede do cliente EDNS",
"edns_cs_desc": "Se activado, o AdGuard Home enviará sub-redes dos clientes para os servidores DNS.",
"rate_limit_desc": "O número de solicitações por segundo que um único cliente pode fazer (0: ilimitado)",
"blocking_ipv4_desc": "Endereço IP a ser devolvido para uma solicitação A bloqueada",
"blocking_ipv6_desc": "Endereço IP a ser devolvido para uma solicitação AAAA bloqueada",
"upstream_dns_client_desc": "Se mantiver esse campo vazio, o AdGuard Home usará os servidores configurados nas <0>Definições de DNS</0>.",
"source_label": "Fonte",
"found_in_known_domain_db": "Encontrado no banco de dados de domínios conhecido.",
"category_label": "Categoria",
"rule_label": "Regra",
"unknown_filter": "Filtro desconhecido {{filterId}}",
"install_welcome_title": "Bem-vindo ao AdGuard Home!",
"install_welcome_desc": "O AdGuard Home é um servidor de DNS para bloqueio de anúncios e monitorização em toda a rede. A sua finalidade é permitir que controle toda a sua rede e os seus dispositivos sem precisar de ter um programa instalado.",
"install_settings_title": "Interface web de administrador",
"install_settings_listen": "Interface de escuta",
"install_settings_port": "Porta",
"install_settings_interface_link": "A interface web de administrador do AdGuard estará disponível nos seguintes endereços:",
"form_error_port": "Insira uma porta válida",
"install_settings_dns": "Servidor DNS",
"install_settings_dns_desc": "Precisa de configurar o seu dispositivo ou router para usar o servidor DNS nos seguintes endereços:",
"install_settings_all_interfaces": "Todas as interfaces",
"install_auth_title": "Autenticação",
"install_auth_desc": "É altamente recomendável configurar a autenticação por palavra-passe para a sua interface web de administrador do AdGuard Home. Mesmo que seja acessível apenas na sua rede local, ainda assim é importante protegê-lo contra o acesso irrestrito.",
"install_auth_username": "Nome do utilizador",
"install_auth_password": "Palavra-passe",
"install_auth_confirm": "Confirmar palavra-passe",
"install_auth_username_enter": "Insira o nome de utilizador",
"install_auth_password_enter": "Insira palavra-passe",
"install_step": "Passo",
"install_devices_title": "Configure os seus dispositivos",
"install_devices_desc": "Para que o AdGuard Home comece a funcionar, precisa de configurar os seus dispositivos para o poder usar.",
"install_submit_title": "Parabéns!",
"install_submit_desc": "O procedimento de configuração está concluído e está pronto para começar a usar o AdGuard Home.",
"install_devices_router": "Router",
"install_devices_router_desc": "Esta configuração cobrirá automaticamente todos os dispositivos ligados ao seu router doméstico e não irá precisar de configurar cada um deles manualmente.",
"install_devices_address": "O servidor de DNS do AdGuard Home está a capturar os seguintes endereços",
"install_devices_router_list_1": "Abra as configurações do seu router. No navegador insira o IP do router, o padrão é (http://192.168.0.1/ ou http://192.168.1.1/), e o login e a palavra-passe é admin/admin; Se não se lembra da palavra-passe, pode redefinir a palavra-passe rapidamente pressionando um botão no próprio router. Alguns routers têm um aplicação específica que já deve estar instalada no 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_3": "Insira aqui seu servidor do AdGuard Home.",
"install_devices_windows_list_1": "Abra o Painel de Controlo através do 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 Partilha.",
"install_devices_windows_list_3": "No lado esquerdo da janela clique em Alterar as definições do adaptador.",
"install_devices_windows_list_4": "Seleccione sua actual ligação, clique nela com o botão direito do rato e depois clique em Propriedades.",
"install_devices_windows_list_5": "Procure na lista por Internet Protocol Version 4 (TCP/IP), seleccione e clique novamente em Propriedades.",
"install_devices_windows_list_6": "Marque Usar os seguintes endereços de servidor DNS e insira os endereços do servidores do AdGuard Home.",
"install_devices_macos_list_1": "Clique na ícone da Apple e depois em Preferências do Sistema.",
"install_devices_macos_list_2": "Clique em Rede.",
"install_devices_macos_list_3": "Seleccione a primeira ligação da lista e clique em Avançado.",
"install_devices_macos_list_4": "Seleccione a guia DNS e insira os endereços dos servidores do AdGuard Home.",
"install_devices_android_list_1": "No painel inicial do menu Android, toque em Definições.",
"install_devices_android_list_2": "Toque em Wi-Fi no menu. O painel com todas as redes será exibida (não é possível configurar DNS personalizado para uma conexão de dados móveis).",
"install_devices_android_list_3": "Pressione prolongadamente a rede à qual está ligado e toque em Modificar Rede.",
"install_devices_android_list_4": "Toque em Wi-Fi no menu. O painel com todas as redes será exibida (não é possível configurar DNS personalizado para uma conexão de dados móveis).",
"install_devices_android_list_5": "Altere o conjunto dos valores DNS 1 e DNS 2 para os endereços de servidores do AdGuard Home.",
"install_devices_ios_list_1": "No painel inicial, toque em Definições.",
"install_devices_ios_list_2": "Seleccione Wi-Fi no menu esquerdo (não é possível configurar o DNS em conexões de dados móveis).",
"install_devices_ios_list_3": "Toque no nome da rede actualmente activa.",
"install_devices_ios_list_4": "No campo DNS, digite os endereços dos servidores do AdGuard Home.",
"get_started": "Vamos Começar",
"next": "Seguinte",
"open_dashboard": "Abrir Painel",
"install_saved": "Guardado com sucesso",
"encryption_title": "Encriptação",
"encryption_desc": "Suporta a criptografia (HTTPS/TLS) para DNS e interface de administração web",
"encryption_config_saved": "Configuração de criptografia guardada",
"encryption_server": "Nome do servidor",
"encryption_server_enter": "Insira o seu nome de domínio",
"encryption_server_desc": "Para usar o protocolo HTTPS, precisa de inserir o nome do servidor que corresponde ao seu certificado SSL.",
"encryption_redirect": "Redireccionar automaticamente para HTTPS",
"encryption_redirect_desc": "Se marcado, o AdGuard Home irá redireccionar automaticamente os endereços HTTP para HTTPS.",
"encryption_https": "Porta HTTPS",
"encryption_https_desc": "Se a porta HTTPS estiver configurada, a interface administrativa do AdGuard Home será acessível via HTTPS e também fornecerá o DNS-sobre-HTTPS no local '/dns-query'.",
"encryption_dot": "Porta DNS-sobre-TLS",
"encryption_dot_desc": "Se essa porta estiver configurada, o AdGuard Home irá executar o servidor DNS-sobre- TSL nesta porta.",
"encryption_certificates": "Certificados",
"encryption_certificates_desc": "Para usar criptografia, precisa de fornecer uma cadeia de certificados SSL válida para o seu domínio. Pode obter um certificado gratuito em <0> {{link}}</0> ou pode comprá-lo numa das autoridades de certificação confiáveis.",
"encryption_certificates_input": "Copie/cole aqui o seu certificado codificado em PEM.",
"encryption_status": "Estado",
"encryption_expire": "Expira",
"encryption_key": "Chave privada",
"encryption_key_input": "Copie/cole aqui a chave privada codificada em PEM para o seu certificado.",
"encryption_enable": "Activar criptografia (HTTPS, DNS-sobre-HTTPS e DNS-sobre-TLS)",
"encryption_enable_desc": "Se a criptografia estiver activada, a interface administrativa do AdGuard Home funcionará em HTTPS, o servidor DNS irá capturar as solicitações por meio do DNS-sobre-HTTPS e DNS-sobre-TLS.",
"encryption_chain_valid": "Cadeia de certificado válida",
"encryption_chain_invalid": "A cadeia de certificado é inválida",
"encryption_key_valid": "Esta é uma chave privada {{type}} válida",
"encryption_key_invalid": "Esta é uma chave privada {{type}} inválida",
"encryption_subject": "Assunto",
"encryption_issuer": "Emissor",
"encryption_hostnames": "Nomes dos servidores",
"encryption_reset": "Tem a certeza de que deseja redefinir a configuração de criptografia?",
"topline_expiring_certificate": "O seu certificado SSL está prestes a expirar. Actualize as suas <0>definições de criptografia</0>.",
"topline_expired_certificate": "O seu certificado SSL está expirado. Actualize as suas <0>definições de criptografia</0>.",
"form_error_port_range": "Digite um porta entre 80 e 65535",
"form_error_port_unsafe": "Esta porta não é segura",
"form_error_equal": "Não deve ser igual",
"form_error_password": "As palavras-passe não coincidem",
"reset_settings": "Redefinir configurações",
"update_announcement": "AdGuard Home {{version}} está disponível!<0>Clique aqui</0> para mais informações.",
"setup_guide": "Guia de instalação",
"dns_addresses": "Endereços DNS",
"dns_start": "O servidor DNS está a iniciar",
"dns_status_error": "Erro ao obter o estado do servidor DNS",
"down": "Caiu",
"fix": "Corrigido",
"dns_providers": "Aqui está uma <0>lista de provedores de DNS conhecidos</0> para escolher.",
"update_now": "Actualizar agora",
"update_failed": "A atualização automática falhou. Por favor, <a href='https://github.com/AdguardTeam/AdGuardHome/wiki/Getting-Started#update'>siga estes passos</a> para actualizar manualmente.",
"processing_update": "Por favor espere, o AdGuard Home está a actualizar-se",
"clients_title": "Clientes",
"clients_desc": "Configure os dispositivos ligados ao AdGuard",
"settings_global": "Global",
"settings_custom": "Personalizar",
"table_client": "Cliente",
"table_name": "Nome",
"save_btn": "Guardar",
"client_add": "Adicionar cliente",
"client_new": "Novo cliente",
"client_edit": "Editar cliente",
"client_identifier": "Identificador",
"ip_address": "Endereço de IP",
"client_identifier_desc": "Os clientes podem ser identificados pelo endereço de IP, CIDR, ou pelo endereço MAC. Observe que o uso do endereço MAC como identificador só é possível se o AdGuard Home também for um <0>servidor DHCP</0>",
"form_enter_ip": "Insira IP",
"form_enter_mac": "Insira o endereço MAC",
"form_enter_id": "Inserir identificador",
"form_add_id": "Adicionar identificador",
"form_client_name": "Insira o nome do cliente",
"name": "Nome",
"client_global_settings": "Usar configurações globais",
"client_deleted": "Cliente \"{{key}}\" excluído com sucesso",
"client_added": "Cliente \"{{key}}\" adicionado com sucesso",
"client_updated": "Cliente \"{{key}}\" actualizado com sucesso",
"clients_not_found": "Nenhum cliente foi encontrado",
"client_confirm_delete": "Tem a certeza de que deseja excluir o cliente \"{{key}}\"?",
"auto_clients_title": "Clientes (tempo de execução)",
"auto_clients_desc": "Dados dos clientes que usam o AdGuard Home, que não são armazenados na configuração",
"access_title": "Configurações de acesso",
"access_desc": "Aqui pode configurar as regras de acesso para o servidores de DNS do AdGuard Home.",
"access_allowed_title": "Clientes permitidos",
"access_allowed_desc": "Uma lista de endereços IP ou CIDR. Ao configurar, o AdGuard Home irá permitir solicitações apenas desses endereços de IP.",
"access_disallowed_title": "Clientes não permitidos",
"access_disallowed_desc": "Uma lista de endereços IP ou CIDR. Ao configurar, o AdGuard Home irá descartar as solicitações desses endereços de IP.",
"access_blocked_title": "Domínios bloqueados",
"access_blocked_desc": "Não confunda isso com os filtros. O AdGuard Home irá descartar as consultas DNS com esses domínios.",
"access_settings_saved": "Configurações de acesso foram guardadas com sucesso",
"updates_checked": "Actualizações verificadas com sucesso",
"updates_version_equal": "O AdGuard Home está actualizado",
"check_updates_now": "Verificar actualizações",
"dns_privacy": "Privacidade de DNS",
"setup_dns_privacy_1": "<0>DNS-sobre-TLS:</0> Use <1>{{address}}</1> string.",
"setup_dns_privacy_2": "<0>DNS-sobre-HTTPS:</0> Use <1>{{address}}</1> string.",
"setup_dns_privacy_3": "<0>Por favor, note que os protocolos de DNS criptografados são suportados apenas no Android 9. Então, irá precisar de instalar um software adicional noutros sistemas operacionais.</0><0>Aqui está a lista de software que pode usar.</0>",
"setup_dns_privacy_android_1": "O Android 9 suporta o DNS-sobre-TLS de forma nativa. Para o configurar, vá a Definições → Rede e internet → Avançado → DNS privado e digite o seu nome de domínio.",
"setup_dns_privacy_android_2": "O <0>AdGuard para Android</0> suporta <1>DNS-sobre-HTTPS</1> e <1>DNS-sobre-TLS</1>.",
"setup_dns_privacy_android_3": "<0>Intra</0> adiciona o suporte <1>DNS-sobre-HTTPS</1> para o Android.",
"setup_dns_privacy_ios_1": "<0>DNSCloak</0> suporta <1>DNS-sobre-HTTPS</1>, mas para o configurar para usar o seu próprio servidor, precisará de gerar um <2>DNS Stamp</2>.",
"setup_dns_privacy_ios_2": "O <0>AdGuard para iOS</0> suporta a configuração do <1>DNS-sobre-HTTPS</1> e <1>DNS-sobre-TLS</1>.",
"setup_dns_privacy_other_title": "Outras implementações",
"setup_dns_privacy_other_1": "O próprio AdGuard Home pode ser usado como um cliente DNS seguro em qualquer plataforma.",
"setup_dns_privacy_other_2": "<0>dnsproxy</0> suporta todos os protocolos de DNS seguros conhecidos.",
"setup_dns_privacy_other_3": "<0>dnscrypt-proxy</0> suporta <1>DNS-sobre-HTTPS</1>.",
"setup_dns_privacy_other_4": "<0>Mozilla Firefox</0> suporta <1>DNS-sobre-HTTPS</1>.",
"setup_dns_privacy_other_5": "Encontrará mais implementações <0>aqui</0> e <1>aqui</1>.",
"setup_dns_notice": "Para usar o <1>DNS-sobre-HTTPS</1> ou <1>DNS-sobre-TLS</1>, precisa de <0>configurar a criptografia</0> nas configurações do AdGuard Home.",
"rewrite_added": "Reescrita de DNS para \"{{key}}\" adicionada com sucesso",
"rewrite_deleted": "Reescrita de DNS para \"{{key}}\" excluída com sucesso",
"rewrite_add": "Adicionar reescrita de DNS",
"rewrite_not_found": "Nenhuma reescrita de DNS foi encontrada",
"rewrite_confirm_delete": "Tem a certeza de que deseja excluir a reescrita de DNS para \"{{key}}\"?",
"rewrite_desc": "Permite configurar uma resposta personalizada do DNS para um nome de domínio específico.",
"rewrite_applied": "Regra de reescrita aplicada",
"dns_rewrites": "Reescritas de DNS",
"form_domain": "Inserir domínio",
"form_answer": "Insira o endereço de IP ou nome de domínio",
"form_error_domain_format": "Formato de domínio inválido",
"form_error_answer_format": "Formato de resposta inválido",
"configure": "Configurar",
"main_settings": "Definições principais",
"block_services": "Bloquear serviços específicos",
"blocked_services": "Serviços bloqueados",
"blocked_services_desc": "Permite o bloqueio rápido de sites e serviços populares.",
"blocked_services_saved": "Serviços bloqueados guardados com sucesso",
"blocked_services_global": "Usar serviços bloqueados globais",
"blocked_service": "Serviço bloqueado",
"block_all": "Bloquear todos",
"unblock_all": "Desbloquear todos",
"encryption_certificate_path": "Caminho do certificado",
"encryption_private_key_path": "Caminho da chave privada",
"encryption_certificates_source_path": "Definir um caminho do arquivo de certificados",
"encryption_certificates_source_content": "Colar o conteúdo dos certificados",
"encryption_key_source_path": "Definir um arquivo de chave privada",
"encryption_key_source_content": "Colar o conteúdo da chave privada",
"stats_params": "Configuração de estatísticas",
"config_successfully_saved": "Configuração guardada com sucesso",
"interval_24_hour": "24 horas",
"interval_days": "{{count}} dias",
"interval_days_plural": "{{count}} dias",
"domain": "Domínio",
"answer": "Resposta",
"filter_added_successfully": "O filtro foi adicionado com sucesso",
"statistics_configuration": "Configuração das estatísticas",
"statistics_retention": "Retenção de estatísticas",
"statistics_retention_desc": "Se diminuir o valor do intervalo, alguns dados serão perdidos",
"statistics_clear": " Limpar estatísticas",
"statistics_clear_confirm": "Tem a certeza de que deseja limpar as estatísticas?",
"statistics_retention_confirm": "Tem a certeza que quer alterar a retenção de estatísticas? Se diminuir o valor do intervalo, alguns dados serão perdidos",
"statistics_cleared": "As estatísticas foram apagadas com sucesso",
"interval_hours": "{{count}} hora",
"interval_hours_plural": "{{count}} horas",
"filters_configuration": "Configuração dos filtros",
"filters_enable": "Activar filtros",
"filters_interval": "Intervalo de actualização de filtros",
"disabled": "Desactivado",
"username_label": "Nome do utilizador",
"username_placeholder": "Insira o nome de utilizador",
"password_label": "Palavra-passe",
"password_placeholder": "Insira palavra-passe",
"sign_in": "Entrar",
"sign_out": "Sair",
"forgot_password": "Não se lembra da palavra-passe?",
"forgot_password_desc": "Siga <0>estes passos</0> para criar uma nova palavra-passe para a sua conta de utilizador.",
"location": "Localização",
"orgname": "Nome da organização",
"netname": "Nome da rede",
"network": "Network",
"descr": "Descrição",
"whois": "Whois",
"filtering_rules_learn_more": "<0>Saiba mais</0>sobre como criar as suas próprias listas negras de servidores.",
"blocked_by_response": "Bloqueado por CNAME ou IP em resposta",
"try_again": "Tente novamente",
"domain_desc": "Insere o nome do domínio para ser reescrito.",
"example_rewrite_domain": "reescrever resposta apenas para este domínio.",
"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

@@ -0,0 +1,567 @@
{
"client_settings": "Setări client",
"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",
"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_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",
"save_config": "Salvare configurare",
"enabled_dhcp": "Server DHCP activat",
"disabled_dhcp": "Server DHCP dezactivat",
"dhcp_title": "Server DHCP (experimental!)",
"dhcp_description": "Dacă routerul dvs. nu furnizează setări DHCP, puteți utiliza serverul DHCP încorporat AdGuard.",
"dhcp_enable": "Activați serverul DHCP",
"dhcp_disable": "Dezactivați serverul DHCP",
"dhcp_not_found": "Este sigur să activați serverul DHCP încorporat - nu am găsit servere DHCP active în rețea. Cu toate acestea, vă recomandăm să-l verificați manual, deoarece testul nostru automat nu oferă în prezent 100% garanție.",
"dhcp_found": "În rețea se găsește un server DHCP activ. Nu este sigur să activați serverul DHCP încorporat.",
"dhcp_leases": "DHCP închiriate",
"dhcp_static_leases": "DHCP statice închiriate",
"dhcp_leases_not_found": "Nu s-au găsit DHCP închiriate",
"dhcp_config_saved": "Configurare DHCP salvată cu succes",
"form_error_required": "Câmp necesar",
"form_error_ip4_format": "Format IPv4 invalid",
"form_error_ip6_format": "Format IPv6 invalid",
"form_error_ip_format": "Format IP invalid",
"form_error_mac_format": "Format MAC invalid",
"form_error_client_id_format": "Format ID de client invalid",
"form_error_positive": "Trebuie să fie mai mare de 0",
"form_error_negative": "Trebuie să fie egală cu 0 sau mai mare",
"dhcp_form_gateway_input": "IP Gateway",
"dhcp_form_subnet_input": "Mască subnet",
"dhcp_form_range_title": "Interval de adrese IP",
"dhcp_form_range_start": "Start interval",
"dhcp_form_range_end": "Sfârșit interval",
"dhcp_form_lease_title": "Timp de închidere DHCP (în secunde)",
"dhcp_form_lease_input": "Durata locației",
"dhcp_interface_select": "Selectați interfața DHCP",
"dhcp_hardware_address": "Adresa mașinii",
"dhcp_ip_addresses": "Adrese IP",
"ip": "IP",
"dhcp_table_hostname": "Hostname",
"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_error": "Nu am putut determina dacă există un alt server DHCP în rețea.",
"dhcp_static_ip_error": "Pentru a utiliza serverul DHCP trebuie setată o adresă IP statică. Nu am reușit să stabilim dacă această interfață de rețea este configurată folosind adresa IP statică. Vă rugăm să setați manual o adresă IP statică.",
"dhcp_dynamic_ip_found": "Sistemul dvs. folosește configurația dinamică a adreselor IP pentru interfața <0>{{interfaceName}}</0>. Pentru a utiliza serverul DHCP trebuie setată o adresă IP statică. Adresa IP curentă este <0>{{ipAddress}}</0>. Vom seta automat această adresă IP ca statică dacă apăsați butonul Activați DHCP.",
"dhcp_lease_added": "\"{{key}}\" statică închiriată adăugată cu succes",
"dhcp_lease_deleted": "\"{{key}}\" statică închiriată eliminată cu succes",
"dhcp_new_static_lease": "Închiriere statică nouă",
"dhcp_static_leases_not_found": "Nu s-au găsit închirieri statice DHCP",
"dhcp_add_static_lease": "Adăugați închiriere statică",
"dhcp_reset": "Sunteți sigur că doriți să resetați configurația DHCP?",
"country": "Țara",
"city": "Oraș",
"delete_confirm": "Sunteți sigur că doriți să ștergeți \"{{key}}\"?",
"form_enter_hostname": "Introduceți hostname",
"error_details": "Detalii eroare",
"response_details": "Detalii răspuns",
"request_details": "Detalii solicitare",
"client_details": "Detalii client",
"details": "Detalii",
"back": "Înapoi",
"dashboard": "Tablou de bord",
"settings": "Setări",
"filters": "Filtre",
"filter": "Filtru",
"query_log": "Jurnal interogări",
"compact": "Compact",
"nothing_found": "Nimic găsit",
"faq": "FAQ",
"version": "Versiune",
"address": "Adresă",
"protocol": "Protocol",
"on": "ON",
"off": "OFF",
"copyright": "Copyright",
"homepage": "Homepage",
"report_an_issue": "Raportați o problemă",
"privacy_policy": "Politică confidențialitate",
"enable_protection": "Activați protecția",
"enabled_protection": "Protecție activată",
"disable_protection": "Dezactivați protecția",
"disabled_protection": "Protecție dezactivată",
"refresh_statics": "Actualizare statistici",
"dns_query": "Interogări DNS",
"blocked_by": "<0>Blocate de Filtre</0>",
"stats_malware_phishing": "Malware/phishing blocate",
"stats_adult": "Site-uri cu conținut adult blocate",
"stats_query_domain": "Domeniile cele mai căutate",
"for_last_24_hours": "în ultimele 24 ore",
"for_last_days": "în ultima {{count}} zi",
"for_last_days_plural": "pentru ultimele {{count}} zile",
"no_domains_found": "Nu s-au găsit domenii",
"requests_count": "Cont interogări",
"top_blocked_domains": "Domeniile blocate cel mai des",
"top_clients": "Clienți de top",
"no_clients_found": "Nu au fost găsiți clienți",
"general_statistics": "Statistici generale",
"number_of_dns_query_days": "Un număr de interogări DNS procesate în ultima {{count}} zi",
"number_of_dns_query_days_plural": "Un număr de interogări DNS procesate în ultimele {{count}} zile",
"number_of_dns_query_24_hours": "Un număr de interogări DNS procesate în ultimele 24 de ore",
"number_of_dns_query_blocked_24_hours": "Un număr de solicitări DNS blocate de filtrele de blocare și listele de blocaj de hosts",
"number_of_dns_query_blocked_24_hours_by_sec": "Un număr de solicitări DNS blocate de modulul de securitate de navigare AdGuard",
"number_of_dns_query_blocked_24_hours_adult": "Un număr de site-uri web pentru adulți blocate",
"enforced_save_search": "Căutare protejată întărită",
"number_of_dns_query_to_safe_search": "O serie de solicitări DNS făcute pe motoare de căutare cu Căutarea protejată activată",
"average_processing_time": "Timpul mediu de procesare",
"average_processing_time_hint": "Timp mediu în milisecunde la procesarea unei cereri DNS",
"block_domain_use_filters_and_hosts": "Blocați domenii folosind filtre și fișiere hosts",
"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_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_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_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",
"general_settings": "Setări Generale",
"dns_settings": "Setări DNS",
"dns_blocklists": "DNS liste blocări",
"dns_allowlists": "DNS liste autorizări",
"dns_blocklists_desc": "AdGuard Home blochează domenii incluse în liste de blocări.",
"dns_allowlists_desc": "Domeniile DNS autorizate vor fi permise, chiar dacă se află pe orice listă de blocări.",
"custom_filtering_rules": "Reguli filtrare personale",
"encryption_settings": "Setări de criptare",
"dhcp_settings": "Setări DHCP",
"upstream_dns": "Servere upstream DNS",
"upstream_dns_hint": "Dacă mențineți acest câmp gol, AdGuard Home va folosi <a href='https://www.quad9.net/' target='_blank'>Quad9</a> ca upstream.",
"test_upstream_btn": "Testați upstreams",
"upstreams": "Upstreams",
"apply_btn": "Aplică",
"disabled_filtering_toast": "Filtrare dezactivată",
"enabled_filtering_toast": "Filtrare activată",
"disabled_safe_browsing_toast": "Navigare securitară dezactivată",
"enabled_safe_browsing_toast": "Navigare securitară activată",
"disabled_parental_toast": "Control parental dezactivat",
"enabled_parental_toast": "Control parental activat",
"disabled_safe_search_toast": "Căutare protejată dezactivată",
"enabled_save_search_toast": "Căutare protejată activată",
"enabled_table_header": "Activat",
"name_table_header": "Nume",
"list_url_table_header": "Lista URL",
"rules_count_table_header": "Număr de reguli",
"last_time_updated_table_header": "Ultima aducere la zi",
"actions_table_header": "Acțiuni",
"request_table_header": "Solicitare",
"edit_table_action": "Editare",
"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.",
"no_blocklist_added": "Listă blocări goală",
"no_whitelist_added": "Listă autorizări goală",
"add_blocklist": "Adăugați blocaj",
"add_allowlist": "Adăugați autorizare",
"cancel_btn": "Anulare",
"enter_name_hint": "Introduceți numele",
"enter_url_or_path_hint": "Introduceți un URL sau o cale absolută a listei",
"check_updates_btn": "Caută actualizări",
"new_blocklist": "Nouă blocare",
"new_allowlist": "Nouă autorizare",
"edit_blocklist": "Editare blocare",
"edit_allowlist": "Editare autorizare",
"choose_blocklist": "Alegeți liste de blocări",
"choose_allowlist": "Alegeți liste de permisiuni",
"enter_valid_blocklist": "Introduceți un URL valid pentru blocare.",
"enter_valid_allowlist": "Introduceți un URL valid pentru autorizare.",
"form_error_url_format": "Format URL invalid",
"form_error_url_or_path_format": "Invalid URL sau o cale absolută a listei",
"custom_filter_rules": "Reguli de filtrare personalizate",
"custom_filter_rules_hint": "Introduceți o regulă pe linie. Puteți utiliza reguli de blocare sau sintaxa de fișiere hosts.",
"examples_title": "Exemple",
"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_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_meaning": "comentariu",
"example_comment_hash": "# Astfel putem lăsa comentarii",
"example_regex_meaning": "blocare acces la domenii care corespund expresiei obișnuite specificate",
"example_upstream_regular": "DNS clasic (over UDP)",
"example_upstream_dot": "<0>DNS-over-TLS</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_tcp": "DNS clasic (over TCP)",
"all_lists_up_to_date_toast": "Toate listele sunt deja la zi",
"updated_upstream_dns_toast": "Serverele DNS upstream aduse la zi",
"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",
"unblock": "Deblocați",
"block": "Blocați",
"time_table_header": "Ora",
"date": "Data",
"domain_name_table_header": "Nume domeniu",
"domain_or_client": "Domeniu sau client",
"type_table_header": "Tip",
"response_table_header": "Răspuns",
"response_code": "Cod de răspuns",
"client_table_header": "Client",
"empty_response_status": "Gol",
"show_all_filter_type": "Arată tot",
"show_filtered_type": "Arată cele filtrate",
"no_logs_found": "Nici un jurnal găsit",
"refresh_btn": "Actualizare",
"previous_btn": "Anterior",
"next_btn": "Următor",
"loading_table_status": "Se încarcă...",
"page_table_footer_text": "Pagina",
"rows_table_footer_text": "linii",
"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_added_to_custom_filtering_toast": "Regulă adăugată la regulile de filtrare personalizate",
"query_log_response_status": "Statut: {{value}}",
"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_cleared": "Jurnalul de interogare a fost șters cu succes",
"query_log_updated": "Jurnalul de solicitări a fost actualizat cu succes",
"query_log_clear": "Curăță jurnalele",
"query_log_retention": "Retenție jurnale interogare",
"query_log_enable": "Activați jurnal",
"query_log_configuration": "Configurația jurnalelor",
"query_log_disabled": "Jurnalul de interogare este dezactivat și poate fi configurat în <0>setări</0>",
"query_log_strict_search": "Utilizați ghilimele duble pentru căutare strictă",
"query_log_retention_confirm": "Sunteți sigur că doriți să schimbați retenția jurnalului de interogare? Reducând valoarea intervalului, unele date vor fi pierdute",
"anonymize_client_ip": "Anonimizare client IP",
"anonymize_client_ip_desc": "Nu salvați adresa IP completă a clientului în jurnale și statistici",
"dns_config": "Configurația serverului DNS",
"dns_cache_config": "Configurare cache DNS",
"dns_cache_config_desc": "Aici puteți configura cache-ul DNS",
"blocking_mode": "Modul de blocare",
"default": "Implicit",
"nxdomain": "NXDOMAIN",
"null_ip": "IP nul",
"custom_ip": "IP personalizat",
"blocking_ipv4": "Blocarea IPv4",
"blocking_ipv6": "Blocarea IPv6",
"dns_over_https": "DNS-over-HTTPS",
"dns_over_tls": "DNS-over-TLS",
"plain_dns": "DNS simplu",
"form_enter_rate_limit": "Introduceți limita ratei",
"rate_limit": "Limita ratei",
"edns_enable": "Activați clientul subnet EDNS",
"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)",
"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_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_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",
"upstream_dns_client_desc": "Dacă mențineți acest câmp gol, AdGuard Home va folosi serverele configurate în <0>setările DNS</0>.",
"tracker_source": "Sursă tracker",
"source_label": "Sursă",
"found_in_known_domain_db": "Găsit în baza de date de domenii cunoscută.",
"category_label": "Categorie",
"rule_label": "Regulă",
"list_label": "Listă",
"unknown_filter": "Filtru necunoscut {{filterId}}",
"known_tracker": "Tracker cunoscut",
"install_welcome_title": "Bun venit la AdGuard Home!",
"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_listen": "Interfață de ascultare",
"install_settings_port": "Port",
"install_settings_interface_link": "Interfața dvs. de administrare AdGuard Home va fi disponibilă pe următoarele adrese:",
"form_error_port": "Introduceți un port valid",
"install_settings_dns": "Server DNS",
"install_settings_dns_desc": "Va trebui să configurați aparatele sau routerul pentru a utiliza serverul DNS pe următoarele adrese:",
"install_settings_all_interfaces": "Toate interfețele",
"install_auth_title": "Autentificare",
"install_auth_desc": "Este foarte recomandat să configurați o parolă pentru accesul la interfața web de administrare AdGuard Home. Chiar dacă este accesibil numai în rețeaua dvs. locală, este încă important să îl protejați de accesul fără restricții.",
"install_auth_username": "Nume utilizator",
"install_auth_password": "Parola",
"install_auth_confirm": "Confirmați parola",
"install_auth_username_enter": "Introduceți nume utilizator",
"install_auth_password_enter": "Introduceți parola",
"install_step": "Etapa",
"install_devices_title": "Configurați aparatele dvs",
"install_devices_desc": "Pentru a începe să utilizați AdGuard Home, trebuie să configurați aparatele.",
"install_submit_title": "Felicitări!",
"install_submit_desc": "Etapa de instalare este terminată și sunteți gata să începeți utilizarea AdGuard Home.",
"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_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_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": "Introduceț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ă ați configura 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_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 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_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_macos_list_1": "Clicați pe icoana Apple și accesați Preferințele Sistemului.",
"install_devices_macos_list_2": "Clicați pe Network.",
"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_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_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 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_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_3": "Tapați numele rețelei active curente.",
"install_devices_ios_list_4": "În câmpul DNS, introduceți adresele serverului dvs. AdGuard Home.",
"get_started": "Să începem",
"next": "Următor",
"open_dashboard": "Deschideți Tabloul de bord",
"install_saved": "Salvat cu succes",
"encryption_title": "Criptare",
"encryption_desc": "Suport de Criptare (HTTPS/TLS) pentru DNS și interfața web administrator",
"encryption_config_saved": "Configurația de criptare salvată",
"encryption_server": "Nume de server",
"encryption_server_enter": "Introduceți numele domeniului",
"encryption_server_desc": "Pentru a utiliza HTTPS, trebuie introdus numele serverului care corespunde certificatului SSL.",
"encryption_redirect": "Redirecționați automat la HTTPS",
"encryption_redirect_desc": "Dacă este bifat, AdGuard Home vă va redirecționa automat de la adrese HTTP la HTTPS.",
"encryption_https": "Port HTTPS",
"encryption_https_desc": "Dacă portul HTTPS este configurat, interfața administrator AdGuard Home va fi accesibilă prin HTTPS și va oferi de asemenea DNS-over-HTTPS în locația '/DNS-query'.",
"encryption_dot": "Port DNS-over-TLS",
"encryption_dot_desc": "Dacă acest port este configurat, AdGuard Home va rula un server DNS-over-TLS pe acest port.",
"encryption_certificates": "Certificate",
"encryption_certificates_desc": "Pentru a utiliza criptarea, trebuie furnizate o serie de certificate SSL valabile pentru domeniul dvs.. Puteți obține un certificat gratuit pe <0>{{link}}</0> sau îl puteți cumpăra de la una din Autoritățile Certificate de încredere.",
"encryption_certificates_input": "Copiați/lipiți certificatele dvs. PEM-codate aici.",
"encryption_status": "Statut",
"encryption_expire": "Expiră",
"encryption_key": "Cheie privată",
"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_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ț de certificate valid",
"encryption_chain_invalid": "Lanț de certificate invalid",
"encryption_key_valid": "Aceasta este o cheie privată {{type}} validă",
"encryption_key_invalid": "Aceasta este o cheie privată {{type}} invalidă",
"encryption_subject": "Obiect",
"encryption_issuer": "Emitent",
"encryption_hostnames": "Nume de host",
"encryption_reset": "Sunteți sigur că doriți să resetați setările de criptare?",
"topline_expiring_certificate": "Certificatul dvs. SSL este pe cale să expire. Actualizați <0>Setările de criptare</0>.",
"topline_expired_certificate": "Certificatul dvs. SSL a expirat. Actualizați <0>Setările de criptare</0>.",
"form_error_port_range": "Introduceți valoarea portului între 80-65535",
"form_error_port_unsafe": "Acesta este un port nesigur",
"form_error_equal": "Nu trebuie să fie egale",
"form_error_password": "Parolele nu corespund",
"reset_settings": "Resetare setări",
"update_announcement": "AdGuard Home {{version}} este disponibil! <0>Clicați aici</0> pentru mai multe informații.",
"setup_guide": "Ghid de instalare",
"dns_addresses": "Adrese DNS",
"dns_start": "Serverul DNS demarează",
"dns_status_error": "Eroare la verificare statut server DNS",
"down": "Down",
"fix": "Fix",
"dns_providers": "Iată o <0>listă de furnizori DNS cunoscuți</0> ce pot fi aleși.",
"update_now": "Actualizați acum",
"update_failed": "Auto-actualizarea a eșuat. Vă rugăm să <a href='https://github.com/AdguardTeam/AdGuardHome/wiki/Getting-Started#update'>urmați aceste etape</a> pentru a actualiza manual.",
"processing_update": "Vă rugăm să așteptați, AdGuard Home se actualizează...",
"clients_title": "Clienți",
"clients_desc": "Configură aparatele conectate la AdGuard Home",
"settings_global": "General",
"settings_custom": "Personalizat",
"table_client": "Client",
"table_name": "Nume",
"save_btn": "Salvați",
"client_add": "Adăugați client",
"client_new": "Client nou",
"client_edit": "Editare client",
"client_identifier": "Identificator",
"ip_address": "Adresa IP",
"client_identifier_desc": "Clienții pot fi identificați prin adresa IP, CIDR, adresa MAC. Vă rugăm să rețineți că utilizarea MAC ca identificator este posibilă numai dacă AdGuard Home este și un <0>server DHCP</0>",
"form_enter_ip": "Introduceți IP",
"form_enter_mac": "Introduceți MAC",
"form_enter_id": "Introduceți identificator",
"form_add_id": "Adăugați identificator",
"form_client_name": "Introduceți nume client",
"name": "Nume",
"client_global_settings": "Folosiți setări globale",
"client_deleted": "Clientul \"{{key}}\" a fost șters cu succes",
"client_added": "Clientul \"{{key}}\" a fost adăugat cu succes",
"client_updated": "Clientul \"{{key}}\" a fost adus la zi cu succes",
"clients_not_found": "Nu au fost găsiți clienți",
"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ă?",
"auto_clients_title": "Clienți (runtime)",
"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_desc": "Aici puteți configura regulile de acces pentru serverul DNS AdGuard Home.",
"access_allowed_title": "Clienți autorizați",
"access_allowed_desc": "O listă de adrese CIDR sau IP. Dacă este configurat, AdGuard Home va accepta doar cereri de la aceste adrese IP.",
"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_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. 'exemplu.org', '*.exemplu.org' sau '||exemplu.org^'.",
"access_settings_saved": "Setările de acces au fost salvate cu succes",
"updates_checked": "Actualizările au fost verificate cu succes",
"updates_version_equal": "AdGuard Home este la zi",
"check_updates_now": "Verificați actualizările acum",
"dns_privacy": "Confidențialitate DNS",
"setup_dns_privacy_1": "<0>DNS-over-TLS:</0> Folosiț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 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ă DNS-over-TLS nativ. Pentru a-l configura, accesați Setări → Rețea și internet → Advanced → Private DNS și introduceț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_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ă generați 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_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_2": "<0>dnsproxy</0> acceptă toate protocoalele DNS securizate cunoscute.",
"setup_dns_privacy_other_3": "<0>dnscrypt-proxy</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_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_deleted": "Rescriere DNS pentru \"{{key}}\" ștearsă cu succes",
"rewrite_add": "Adăugați rescriere DNS",
"rewrite_not_found": "Nu s-au găsit rescrieri DNS",
"rewrite_confirm_delete": "Sunteți sigur că doriți să ștergeți rescrierea DNS pentru \"{{key}}\"?",
"rewrite_desc": "Permite configurarea cu ușurință a răspunsului personalizat DNS pentru un nume de domeniu specific.",
"rewrite_applied": "Regula de rescriere s-a aplicat",
"rewrite_hosts_applied": "Rescrisă de regula fișierului hosts",
"dns_rewrites": "Rescrieri DNS",
"form_domain": "Introduceți un nume de domeniu sau wildcard",
"form_answer": "Introduceți adresa IP sau numele de domeniu",
"form_error_domain_format": "Format de răspuns invalid",
"form_error_answer_format": "Format de răspuns invalid",
"configure": "Configurați",
"main_settings": "Setări principale",
"block_services": "Blochează anumite servicii",
"blocked_services": "Servicii blocate",
"blocked_services_desc": "Permite blocarea rapidă a site-urilor și serviciilor populare.",
"blocked_services_saved": "Serviciile blocate au fost salvate cu succes",
"blocked_services_global": "Folosiți servicii blocate globale",
"blocked_service": "Serviciu blocat",
"block_all": "Blocați tot",
"unblock_all": "Deblocați tot",
"encryption_certificate_path": "Locația certificatului",
"encryption_private_key_path": "Locația cheii private",
"encryption_certificates_source_path": "Precizați locația certificatelor",
"encryption_certificates_source_content": "Lipiți conținutul certificatelor",
"encryption_key_source_path": "Precizați un fișier cu cheie privată",
"encryption_key_source_content": "Lipiți conținutul cheii private",
"stats_params": "Configurația statisticilor",
"config_successfully_saved": "Configurarea a fost salvată cu succes",
"interval_24_hour": "24 ore",
"interval_days": "{{count}} zi",
"interval_days_plural": "{{count}} zile",
"domain": "Domeniu",
"answer": "Răspuns",
"filter_added_successfully": "Filtrul a fost adăugat cu succes",
"filter_removed_successfully": "Lista a fost eliminată cu succes",
"filter_updated": "Filtrul a fost actualizat cu succes",
"statistics_configuration": "Configurația statisticilor",
"statistics_retention": "Păstrarea statisticilor",
"statistics_retention_desc": "Dacă reduceți valoarea intervalului, unele date vor fi pierdute",
"statistics_clear": " Șterge 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 păstrarea statisticilor? Dacă reduceți valoarea intervalului, unele date vor fi pierdute",
"statistics_cleared": "Statisticile au fost șterse cu succes",
"interval_hours": "{{count}} oră",
"interval_hours_plural": "{{count}} ore",
"filters_configuration": "Configurația filtrelor",
"filters_enable": "Activați filtrele",
"filters_interval": "Interval de actualizare filtre",
"disabled": "Dezactivat",
"username_label": "Nume utilizator",
"username_placeholder": "Introduceți nume utilizator",
"password_label": "Parola",
"password_placeholder": "Introduceți parola",
"sign_in": "Conectare",
"sign_out": "Deconectare",
"forgot_password": "Ați uitat parola?",
"forgot_password_desc": "Vă rugăm să urmați <0>aceste etape</0> pentru a crea o nouă parolă pentru contul de utilizator.",
"location": "Locația",
"orgname": "Numele organizației",
"netname": "Numele rețelei",
"network": "Rețea",
"descr": "Descriere",
"whois": "Whois",
"filtering_rules_learn_more": "<0>Aflați mai multe</0> despre crearea propriilor liste hosts.",
"blocked_by_response": "Blocat de CNAME sau IP ca răspuns",
"blocked_by_cname_or_ip": "Blocat de CNAME sau IP",
"try_again": "Încercați din nou",
"domain_desc": "Introduceți un nume de domeniu sau wildcard care doriți să fie rescris.",
"example_rewrite_domain": "rescrie răspunsuri numai pentru acest nume de domeniu.",
"example_rewrite_wildcard": "rescrie răspunsuri pentru toate subdomeniile <0>exemplu.org</0>.",
"rewrite_ip_address": "Adresa IP: utilizați acest IP într-un răspuns A sau AAAA",
"rewrite_domain_name": "Nume de domeniu: adăugați o înregistrare CNAME",
"rewrite_A": "<0>A</0>: valoare specială, păstrați <0>A</0> înregistrări din amonte",
"rewrite_AAAA": "<0>AAAA</0>: valoare specială, păstrați <0>AAAA</0> înregistrări din amonte",
"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.",
"fastest_addr": "Cea mai rapidă adresă IP",
"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ă 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 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 ale sistemul dvs. vor fi procesate în mod implicit de AdGuardHome.",
"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>",
"form_select_tags": "Selectați etichete client",
"check_title": "Verificați filtrarea",
"check_desc": "Verificați dacă numele de host este filtrat",
"check": "Verificați",
"form_enter_host": "Introduceți un nume de host",
"filtered_custom_rules": "Filtrat prin reguli de filtrare personalizate",
"choose_from_list": "Alege din listă",
"add_custom_list": "Adăugați propria listă",
"host_whitelisted": "Numele de host este în lista albă",
"check_ip": "Adrese IP: {{ip}}",
"check_cname": "CNAME: {{cname}}",
"check_reason": "Cauza: {{reason}}",
"check_rule": "Regula: {{rule}}",
"check_service": "Nume servici: {{service}}",
"check_not_found": "Nu se găsește în listele de filtre",
"client_confirm_block": "Sunteți sigur că doriți să blocați clientul \"{{ip}}\"?",
"client_confirm_unblock": "Sunteți sigur că doriți să deblocați clientul \"{{ip}}\"?",
"client_blocked": "Clientul \"{{ip}}\" blocat cu succes",
"client_unblocked": "Clientul \"{{ip}}\" deblocat cu succes",
"static_ip": "Adresa IP Statică",
"static_ip_desc": "AdGuard Home este un server, deci are nevoie de o adresă IP statică pentru a funcționa corect. Altfel, routerul dvs. poate eventual să atribuie o adresă IP diferită acestui dispozitiv.",
"set_static_ip": "Setați o adresă IP statică",
"install_static_ok": "Vești bune! Adresa IP statică este deja configurată",
"install_static_error": "AdGuard Home nu o poate configura automat pentru această interfață de rețea. Vă rugăm să căutați instrucțiuni despre cum să faceți acest lucru manual.",
"install_static_configure": "Am detectat că se folosește o adresă IP dinamică - <0>{{ip}}</0>. Vreți să o folosiți pe aceasta ca adresă statică?",
"confirm_static_ip": "AdGuard Home va configura {{ip}} ca adresa dvs. IP statică. Doriți să continuați?",
"list_updated": "{{count}} listă actualizată",
"list_updated_plural": "{{count}} liste actualizate",
"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)",
"validated_with_dnssec": "Validat cu DNSSEC",
"all_queries": "Toate interogările",
"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",
"cache_size": "Mărime cache",
"cache_size_desc": "Mărime cache DNS (în octeți)",
"cache_ttl_min_override": "Suprascrieți TTL minim",
"cache_ttl_max_override": "Suprascrieți TTL maxim",
"enter_cache_size": "Introduceți mărime cache",
"enter_cache_ttl_min_override": "Introduceți TTL minim",
"enter_cache_ttl_max_override": "Introduceți TTL maxim",
"cache_ttl_min_override_desc": "Suprascrie valoarea TTL (minimă) primită de la serverul din amonte. valoare nu poate fi mai mare de 3600 (1 oră)",
"cache_ttl_max_override_desc": "Suprascrie valoarea TTL (maximă) primită de la serverul din amonte",
"min_exceeds_max_value": "Valoarea minimă depășește valoarea maximă",
"value_not_larger_than": "Valoarea nu poate fi mai mare decât {{maximum}}",
"filter_category_general": "General",
"filter_category_security": "Securitate",
"filter_category_regional": "Regional",
"filter_category_other": "Altele",
"filter_category_general_desc": "Liste care blochează urmărirea și publicitatea pe majoritatea aparatelor",
"filter_category_security_desc": "Liste specializate în blocarea domeniilor malware, phishing sau înșelătorie",
"filter_category_regional_desc": "Liste focalizate pe reclame regionale și servere de urmărire",
"filter_category_other_desc": "Alte liste de blocări",
"original_response": "Răspuns original",
"click_to_view_queries": "Clicați pentru a vizualiza interogări",
"port_53_faq_link": "Portul 53 este adesea ocupat de serviciile \"DNSStubListener\" sau \"systemd-resolved\". Vă rugăm să citiți <0>această instrucțiune</0> despre cum să rezolvați aceasta."
}

View File

@@ -1,159 +1,567 @@
{
"check_dhcp_servers": "\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c DHCP-\u0441\u0435\u0440\u0432\u0435\u0440\u044b",
"save_config": "\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e",
"enabled_dhcp": "DHCP-\u0441\u0435\u0440\u0432\u0435\u0440 \u0432\u043a\u043b\u044e\u0447\u0435\u043d",
"disabled_dhcp": "DHCP-\u0441\u0435\u0440\u0432\u0435\u0440 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d",
"dhcp_title": "DHCP-\u0441\u0435\u0440\u0432\u0435\u0440 (\u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u0439!)",
"dhcp_description": "\u0415\u0441\u043b\u0438 \u0432\u0430\u0448 \u0440\u043e\u0443\u0442\u0435\u0440 \u043d\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 DHCP, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 DHCP-\u0441\u0435\u0440\u0432\u0435\u0440 AdGuard.",
"dhcp_enable": "\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c DHCP-\u0441\u0435\u0440\u0432\u0435\u0440",
"dhcp_disable": "\u041e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c DHCP-\u0441\u0435\u0440\u0432\u0435\u0440",
"dhcp_not_found": "\u0410\u043a\u0442\u0438\u0432\u043d\u044b\u0435 DHCP-\u0441\u0435\u0440\u0432\u0435\u0440\u044b \u0432 \u0441\u0435\u0442\u0438 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u044b. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0435\u0440 DHCP.",
"dhcp_found": "\u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0435 DHCP-\u0441\u0435\u0440\u0432\u0435\u0440\u044b \u043d\u0430\u0439\u0434\u0435\u043d\u044b \u0432 \u0441\u0435\u0442\u0438. \u0412\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u0433\u043e DHCP-\u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u043d\u0435\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e.",
"dhcp_leases": "\u0410\u0440\u0435\u043d\u0434\u0430 DHCP",
"dhcp_leases_not_found": "\u0410\u0440\u0435\u043d\u0434\u0430 DHCP \u043d\u0435 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0430",
"dhcp_config_saved": "\u0421\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u043d\u0430\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f DHCP-\u0441\u0435\u0440\u0432\u0435\u0440\u0430",
"form_error_required": "\u041e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u043f\u043e\u043b\u0435",
"form_error_ip_format": "\u041d\u0435\u0432\u0435\u0440\u043d\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 IPv4",
"form_error_positive": "\u0414\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435 0",
"dhcp_form_gateway_input": "IP-\u0430\u0434\u0440\u0435\u0441 \u0448\u043b\u044e\u0437\u0430",
"dhcp_form_subnet_input": "\u041c\u0430\u0441\u043a\u0430 \u043f\u043e\u0434\u0441\u0435\u0442\u0438",
"dhcp_form_range_title": "\u0414\u0438\u0430\u043f\u0430\u0437\u043e\u043d IP-\u0430\u0434\u0440\u0435\u0441\u043e\u0432",
"dhcp_form_range_start": "\u041d\u0430\u0447\u0430\u043b\u043e \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0430",
"dhcp_form_range_end": "\u041a\u043e\u043d\u0435\u0446 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0430",
"dhcp_form_lease_title": "\u0412\u0440\u0435\u043c\u044f \u0430\u0440\u0435\u043d\u0434\u044b DHCP (\u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0430\u0445)",
"dhcp_form_lease_input": "\u0421\u0440\u043e\u043a \u0430\u0440\u0435\u043d\u0434\u044b",
"dhcp_interface_select": "\u0412\u044b\u0431\u0440\u0430\u0442\u044c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 DHCP",
"dhcp_hardware_address": "\u0410\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u0439 \u0430\u0434\u0440\u0435\u0441",
"dhcp_ip_addresses": "IP-\u0430\u0434\u0440\u0435\u0441\u0430",
"dhcp_table_hostname": "\u0418\u043c\u044f \u0445\u043e\u0441\u0442\u0430",
"dhcp_table_expires": "\u0418\u0441\u0442\u0435\u043a\u0430\u0435\u0442",
"back": "\u041d\u0430\u0437\u0430\u0434",
"dashboard": "\u041f\u0430\u043d\u0435\u043b\u044c \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f",
"settings": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438",
"filters": "\u0424\u0438\u043b\u044c\u0442\u0440\u044b",
"query_log": "\u0416\u0443\u0440\u043d\u0430\u043b",
"client_settings": "Настройки клиентов",
"example_upstream_reserved": "Вы можете указать DNS-сервер <0>для конкретного домена(-ов)</0>",
"upstream_parallel": "Использовать параллельные запросы ко всем серверам одновременно для ускорения обработки запроса",
"parallel_requests": "Параллельные запросы",
"load_balancing": "Распределение нагрузки\n",
"load_balancing_desc": "Запрашивайте по одному серверу за раз. AdGuard Home будет использовать случайный алгоритм для выбора сервера, так что самый быстрый сервер будет использоваться чаще.",
"bootstrap_dns": "Bootstrap DNS-серверы",
"bootstrap_dns_desc": "Bootstrap DNS-серверы используются для поиска IP-адресов DoH/DoT серверов, которые вы указали.",
"check_dhcp_servers": "Проверить DHCP-серверы",
"save_config": "Сохранить конфигурацию",
"enabled_dhcp": "DHCP-сервер включен",
"disabled_dhcp": "DHCP-сервер отключен",
"dhcp_title": "DHCP-сервер (экспериментальный!)",
"dhcp_description": "Если ваш роутер не предоставляет настройки DHCP, вы можете использовать собственный встроенный DHCP-сервер AdGuard.",
"dhcp_enable": "Включить DHCP-сервер",
"dhcp_disable": "Отключить DHCP-сервер",
"dhcp_not_found": "Активные DHCP-серверы в сети не найдены. Вы можете безопасно включить встроенный сервер DHCP.",
"dhcp_found": "Некоторые активные DHCP-серверы найдены в сети. Включение встроенного DHCP-сервера небезопасно.",
"dhcp_leases": "Аренда DHCP",
"dhcp_static_leases": "Статические аренды DHCP",
"dhcp_leases_not_found": "Аренда DHCP не обнаружена",
"dhcp_config_saved": "Конфигурация DHCP-сервера успешно сохранена",
"form_error_required": "Обязательное поле",
"form_error_ip4_format": "Неверный формат IPv4",
"form_error_ip6_format": "Неверный формат IPv6",
"form_error_ip_format": "Неверный формат IP-адреса",
"form_error_mac_format": "Некорректный формат MAC",
"form_error_client_id_format": "Неверный формат ID клиента",
"form_error_positive": "Должно быть больше 0",
"form_error_negative": "Должно быть не меньше 0",
"dhcp_form_gateway_input": "IP-адрес шлюза",
"dhcp_form_subnet_input": "Маска подсети",
"dhcp_form_range_title": "Диапазон IP-адресов",
"dhcp_form_range_start": "Начало диапазона",
"dhcp_form_range_end": "Конец диапазона",
"dhcp_form_lease_title": "Время аренды DHCP (в секундах)",
"dhcp_form_lease_input": "Срок аренды",
"dhcp_interface_select": "Выбрать интерфейс DHCP",
"dhcp_hardware_address": "Аппаратный адрес",
"dhcp_ip_addresses": "IP-адреса",
"ip": "IP-адрес",
"dhcp_table_hostname": "Имя хоста",
"dhcp_table_expires": "Истекает",
"dhcp_warning": "Если вы все равно хотите включить DHCP-сервер, убедитесь, что в сети больше нет активных DHCP-серверов. Иначе это может сломать доступ в сеть для подключенных устройств!",
"dhcp_error": "Мы не смогли определить присутствие других DHCP-серверов в сети.",
"dhcp_static_ip_error": "Для того, чтобы использовать DHCP-сервер, должен быть установлен статический IP-адрес. Мы не смогли определить, использует ли этот сетевой интерфейс статический IP-адрес. Пожалуйста, установите его вручную.",
"dhcp_dynamic_ip_found": "Ваша система использует динамический IP-адрес для интерфейса <0>{{interfaceName}}</0>. Чтобы использовать DHCP-сервер необходимо установить статический IP-адрес. Ваш текущий IP-адрес <0>{{ipAddress}}</0>. Мы автоматически установим его как статический, если вы нажмете кнопку Включить DHCP.",
"dhcp_lease_added": "Статическая аренда \"{{key}}\" успешно добавлена",
"dhcp_lease_deleted": "Статическая аренда \"{{key}}\" успешно удалена",
"dhcp_new_static_lease": "Новая статическая аренда",
"dhcp_static_leases_not_found": "Не найдено статических аренд DHCP",
"dhcp_add_static_lease": "Добавить статическую аренду",
"dhcp_reset": "Вы уверены, что хотите сбросить настройки DHCP?",
"country": "Страна",
"city": "Город",
"delete_confirm": "Are you sure you want to delete \"{{key}}\"?",
"form_enter_hostname": "Введите имя хоста",
"error_details": "Детализация ошибки",
"response_details": "Детали ответа",
"request_details": "Детали запроса",
"client_details": "Информация о клиенте",
"details": "Детали",
"back": "Назад",
"dashboard": "Панель управления",
"settings": "Настройки",
"filters": "Фильтры",
"filter": "Фильтр",
"query_log": "Журнал",
"compact": "Компактный",
"nothing_found": "Ничего не найдено",
"faq": "FAQ",
"version": "\u0432\u0435\u0440\u0441\u0438\u044f",
"address": "\u0430\u0434\u0440\u0435\u0441",
"on": "\u0412\u043a\u043b",
"off": "\u0412\u044b\u043a\u043b",
"copyright": "\u0412\u0441\u0435 \u043f\u0440\u0430\u0432\u0430 \u0437\u0430\u0449\u0438\u0449\u0435\u043d\u044b",
"homepage": "\u0413\u043b\u0430\u0432\u043d\u0430\u044f",
"report_an_issue": "\u0421\u043e\u043e\u0431\u0449\u0438\u0442\u044c \u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0435",
"enable_protection": "\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0437\u0430\u0449\u0438\u0442\u0443",
"enabled_protection": "\u0417\u0430\u0449\u0438\u0442\u0430 \u0432\u043a\u043b.",
"disable_protection": "\u041e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0437\u0430\u0449\u0438\u0442\u0443",
"disabled_protection": "\u0417\u0430\u0449\u0438\u0442\u0430 \u0432\u044b\u043a\u043b.",
"refresh_statics": "\u041e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0443",
"dns_query": "DNS-\u0437\u0430\u043f\u0440\u043e\u0441\u044b",
"blocked_by": "\u0417\u0430\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u043d\u043e \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u043c\u0438",
"stats_malware_phishing": "\u0417\u0430\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0432\u0440\u0435\u0434\u043e\u043d\u043e\u0441\u043d\u044b\u0435 \u0438 \u0444\u0438\u0448\u0438\u043d\u0433\u043e\u0432\u044b\u0435 \u0441\u0430\u0439\u0442\u044b",
"stats_adult": "\u0417\u0430\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \"\u0432\u0437\u0440\u043e\u0441\u043b\u044b\u0435\" \u0441\u0430\u0439\u0442\u044b",
"stats_query_domain": "\u0427\u0430\u0441\u0442\u043e \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u043c\u044b\u0435 \u0434\u043e\u043c\u0435\u043d\u044b",
"for_last_24_hours": "\u0437\u0430 24 \u0447\u0430\u0441\u0430",
"no_domains_found": "\u0414\u043e\u043c\u0435\u043d\u044b \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u044b",
"requests_count": "\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432",
"top_blocked_domains": "\u0427\u0430\u0441\u0442\u043e \u0431\u043b\u043e\u043a\u0438\u0440\u0443\u0435\u043c\u044b\u0435 \u0434\u043e\u043c\u0435\u043d\u044b",
"top_clients": "\u0427\u0430\u0441\u0442\u044b\u0435 \u043a\u043b\u0438\u0435\u043d\u0442\u044b",
"no_clients_found": "\u041a\u043b\u0438\u0435\u043d\u0442\u043e\u0432 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u043e",
"general_statistics": "\u041e\u0431\u0449\u0430\u044f \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0430",
"number_of_dns_query_24_hours": "\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e DNS-\u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0437\u0430 24 \u0447\u0430\u0441\u0430",
"number_of_dns_query_blocked_24_hours": "\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e DNS-\u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432, \u0437\u0430\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u043c\u0438 \u0438 \u0431\u043b\u043e\u043a-\u0441\u043f\u0438\u0441\u043a\u0430\u043c\u0438",
"number_of_dns_query_blocked_24_hours_by_sec": "\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e DNS-\u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432, \u0437\u0430\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u043c\u043e\u0434\u0443\u043b\u0435\u043c \u0410\u043d\u0442\u0438\u0444\u0438\u0448\u0438\u043d\u0433\u0430 AdGuard",
"number_of_dns_query_blocked_24_hours_adult": "\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0437\u0430\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \"\u0441\u0430\u0439\u0442\u043e\u0432 \u0434\u043b\u044f \u0432\u0437\u0440\u043e\u0441\u043b\u044b\u0445\"",
"enforced_save_search": "\u041f\u0440\u0438\u043c\u0435\u043d\u0435\u043d \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u0439 \u043f\u043e\u0438\u0441\u043a",
"number_of_dns_query_to_safe_search": "\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 DNS \u0434\u043b\u044f \u043f\u043e\u0438\u0441\u043a\u043e\u0432\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c, \u0434\u043b\u044f \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0431\u044b\u043b \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d \u0411\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u0439 \u043f\u043e\u0438\u0441\u043a",
"average_processing_time": "\u0421\u0440\u0435\u0434\u043d\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u0430",
"average_processing_time_hint": "\u0421\u0440\u0435\u0434\u043d\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 DNS \u0432 \u043c\u0438\u043b\u043b\u0438\u0441\u0435\u043a\u0443\u043d\u0434\u0430\u0445",
"block_domain_use_filters_and_hosts": "\u0411\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u043e\u043c\u0435\u043d\u044b \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432 \u0438 \u0444\u0430\u0439\u043b\u043e\u0432 \u0445\u043e\u0441\u0442\u043e\u0432",
"filters_block_toggle_hint": "\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0438 \u0432 <a href='#filters'> \"\u0424\u0438\u043b\u044c\u0442\u0440\u0430\u0445\"<\/a>.",
"use_adguard_browsing_sec": "\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0411\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u0443\u044e \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044e AdGuard",
"use_adguard_browsing_sec_hint": "AdGuard Home \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442, \u0432\u043a\u043b\u044e\u0447\u0435\u043d \u043b\u0438 \u0434\u043e\u043c\u0435\u043d \u0432 \u0432\u0435\u0431-\u0441\u043b\u0443\u0436\u0431\u0443 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430. \u041e\u043d \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c API, \u0447\u0442\u043e\u0431\u044b \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443: \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u0440\u043e\u0442\u043a\u0438\u0439 \u043f\u0440\u0435\u0444\u0438\u043a\u0441 \u0438\u043c\u0435\u043d\u0438 \u0434\u043e\u043c\u0435\u043d\u0430 SHA256.",
"use_adguard_parental": "\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u043c\u043e\u0434\u0443\u043b\u044c \u0420\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044f AdGuard ",
"use_adguard_parental_hint": "AdGuard Home \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442, \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043b\u0438 \u0434\u043e\u043c\u0435\u043d \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u044b 18+. \u041e\u043d \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0442\u043e\u0442 \u0436\u0435 API \u0434\u043b\u044f \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u0444\u0438\u0434\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438, \u0447\u0442\u043e \u0438 \u0432\u0435\u0431-\u0441\u043b\u0443\u0436\u0431\u0430 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430.",
"enforce_safe_search": "\u0423\u0441\u0438\u043b\u0438\u0442\u044c \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u0439 \u043f\u043e\u0438\u0441\u043a",
"enforce_save_search_hint": "AdGuard Home \u043c\u043e\u0436\u0435\u0442 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0442\u044c \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u0439 \u043f\u043e\u0438\u0441\u043a \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445: Google, Youtube, Bing \u0438 Yandex.",
"no_servers_specified": "\u041d\u0435\u0442 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0445 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432",
"no_settings": "\u041d\u0435\u0442 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a",
"general_settings": "\u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438",
"upstream_dns": "Upstream DNS-\u0441\u0435\u0440\u0432\u0435\u0440\u044b",
"upstream_dns_hint": "\u0415\u0441\u043b\u0438 \u0432\u044b \u043e\u0441\u0442\u0430\u0432\u0438\u0442\u0435 \u044d\u0442\u043e \u043f\u043e\u043b\u0435 \u043f\u0443\u0441\u0442\u044b\u043c, \u0442\u043e AdGuard Home \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 <a href='https:\/\/1.1.1.1\/' target='_blank'>Cloudflare DNS<\/a> \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 upstream. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 tls:\/\/ \u0434\u043b\u044f DNS \u0447\u0435\u0440\u0435\u0437 \u0441\u0435\u0440\u0432\u0435\u0440\u044b TLS.",
"test_upstream_btn": "\u0422\u0435\u0441\u0442 upstream \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432",
"apply_btn": "\u041f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c",
"disabled_filtering_toast": "\u0424\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u044f \u0432\u044b\u043a\u043b.",
"enabled_filtering_toast": "\u0424\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u044f \u0432\u043a\u043b.",
"disabled_safe_browsing_toast": "\u0411\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u0430\u044f \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044f \u0432\u044b\u043a\u043b.",
"enabled_safe_browsing_toast": "\u0411\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u0430\u044f \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044f \u0432\u043a\u043b.",
"disabled_parental_toast": "\u0420\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c \u0432\u044b\u043a\u043b.",
"enabled_parental_toast": "\u0420\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c \u0432\u043a\u043b.",
"disabled_safe_search_toast": "\u0411\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u0439 \u043f\u043e\u0438\u0441\u043a \u0432\u044b\u043a\u043b.",
"enabled_save_search_toast": "\u0411\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u0439 \u043f\u043e\u0438\u0441\u043a \u0432\u043a\u043b.",
"enabled_table_header": "\u0412\u043a\u043b.",
"name_table_header": "\u0418\u043c\u044f",
"filter_url_table_header": "URL \u0444\u0438\u043b\u044c\u0442\u0440\u0430",
"rules_count_table_header": "\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u0440\u0430\u0432\u0438\u043b:",
"last_time_updated_table_header": "\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435",
"actions_table_header": "\u0414\u0435\u0439\u0441\u0442\u0432\u0438\u044f",
"delete_table_action": "\u0423\u0434\u0430\u043b\u0438\u0442\u044c",
"filters_and_hosts": "\u0424\u0438\u043b\u044c\u0442\u0440\u044b \u0438 \u0447\u0435\u0440\u043d\u044b\u0435 \u0441\u043f\u0438\u0441\u043a\u0438 hosts",
"filters_and_hosts_hint": "AdGuard Home \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0435\u0442 \u0431\u0430\u0437\u043e\u0432\u044b\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0438 \u0438 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 \u0444\u0430\u0439\u043b\u043e\u0432 hosts.",
"no_filters_added": "\u0424\u0438\u043b\u044c\u0442\u0440\u044b \u043d\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u044b",
"add_filter_btn": "\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0444\u0438\u043b\u044c\u0442\u0440",
"cancel_btn": "\u041e\u0442\u043c\u0435\u043d\u0430",
"enter_name_hint": "\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0438\u043c\u044f",
"enter_url_hint": "\u0412\u0432\u0435\u0434\u0438\u0442\u0435 URL",
"check_updates_btn": "\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f",
"new_filter_btn": "\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043d\u043e\u0432\u043e\u0433\u043e \u0444\u0438\u043b\u044c\u0442\u0440\u0430",
"enter_valid_filter_url": "\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 URL \u0434\u043b\u044f \u043f\u043e\u0434\u043f\u0438\u0441\u043a\u0438 \u043d\u0430 \u0444\u0438\u043b\u044c\u0442\u0440 \u0438\u043b\u0438 \u0444\u0430\u0439\u043b hosts.",
"custom_filter_rules": "\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u043e \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u0438",
"custom_filter_rules_hint": "\u0412\u0432\u043e\u0434\u0438\u0442\u0435 \u043f\u043e \u043e\u0434\u043d\u043e\u043c\u0443 \u043f\u0440\u0430\u0432\u0438\u043b\u0443 \u043d\u0430 \u0441\u0442\u0440\u043e\u0447\u043a\u0443. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0438 \u0438\u043b\u0438 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 \u0444\u0430\u0439\u043b\u043e\u0432 hosts.",
"examples_title": "\u041f\u0440\u0438\u043c\u0435\u0440\u044b",
"example_meaning_filter_block": "\u0437\u0430\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0434\u043e\u043c\u0435\u043d\u0443 example.org \u0438 \u0432\u0441\u0435\u043c \u0435\u0433\u043e \u043f\u043e\u0434\u0434\u043e\u043c\u0435\u043d\u0430\u043c",
"example_meaning_filter_whitelist": "\u0440\u0430\u0437\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0434\u043e\u043c\u0435\u043d\u0443 example.org \u0438 \u0432\u0441\u0435\u043c \u0435\u0433\u043e \u043f\u043e\u0434\u0434\u043e\u043c\u0435\u043d\u0430\u043c",
"example_meaning_host_block": "\u0422\u0435\u043f\u0435\u0440\u044c AdGuard Home \u0432\u0435\u0440\u043d\u0435\u0442 127.0.0.1 \u0434\u043b\u044f \u0434\u043e\u043c\u0435\u043d\u0430 example.org (\u043d\u043e \u043d\u0435 \u0434\u043b\u044f \u0435\u0433\u043e \u043f\u043e\u0434\u0434\u043e\u043c\u0435\u043d\u043e\u0432).",
"example_comment": "! \u0422\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435",
"example_comment_meaning": "\u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439",
"example_comment_hash": "# \u0418 \u0432\u043e\u0442 \u0442\u0430\u043a \u0442\u043e\u0436\u0435",
"example_upstream_regular": "\u043e\u0431\u044b\u0447\u043d\u044b\u0439 DNS (\u043f\u043e\u0432\u0435\u0440\u0445 UDP)",
"example_upstream_dot": "\u0437\u0430\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 <0>DNS-\u043f\u043e\u0432\u0435\u0440\u0445-TLS<\/0>",
"example_upstream_doh": "\u0437\u0430\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 <0>DNS-\u043f\u043e\u0432\u0435\u0440\u0445-HTTPS<\/0>",
"example_upstream_sdns": "\u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c <0>DNS Stamps<\/0> \u0434\u043b\u044f <1>DNSCrypt<\/1> \u0438\u043b\u0438 <2>DNS-over-HTTPS<\/2> \u0440\u0435\u0437\u043e\u043b\u0432\u0435\u0440\u043e\u0432",
"example_upstream_tcp": "\u043e\u0431\u044b\u0447\u043d\u044b\u0439 DNS (\u043f\u043e\u0432\u0435\u0440\u0445 TCP)",
"all_filters_up_to_date_toast": "\u0412\u0441\u0435 \u0444\u0438\u043b\u044c\u0442\u0440\u044b \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u044b",
"updated_upstream_dns_toast": "Upstream DNS-\u0441\u0435\u0440\u0432\u0435\u0440\u044b \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u044b",
"dns_test_ok_toast": "\u0423\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u044b DNS \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e",
"dns_test_not_ok_toast": "\u0421\u0435\u0440\u0432\u0435\u0440 \"{{key}}\": \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c, \u043f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f",
"unblock_btn": "\u0420\u0430\u0437\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u0442\u044c",
"block_btn": "\u0417\u0430\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u0442\u044c",
"time_table_header": "\u0412\u0440\u0435\u043c\u044f",
"domain_name_table_header": "\u0414\u043e\u043c\u0435\u043d",
"type_table_header": "\u0422\u0438\u043f",
"response_table_header": "\u041e\u0442\u0432\u0435\u0442",
"client_table_header": "\u041a\u043b\u0438\u0435\u043d\u0442",
"empty_response_status": "\u041f\u0443\u0441\u0442\u043e",
"show_all_filter_type": "\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0432\u0441\u0435",
"show_filtered_type": "\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u043e\u0442\u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435",
"no_logs_found": "\u041b\u043e\u0433\u0438 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u044b",
"disabled_log_btn": "\u0416\u0443\u0440\u043d\u0430\u043b \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u0438 \u0432\u044b\u043a\u043b.",
"download_log_file_btn": "\u0417\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u043e\u0442\u0447\u0451\u0442",
"refresh_btn": "\u041e\u0431\u043d\u043e\u0432\u0438\u0442\u044c",
"enabled_log_btn": "\u0416\u0443\u0440\u043d\u0430\u043b \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u0438 \u0432\u043a\u043b.",
"last_dns_queries": "\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 5000 DNS-\u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432",
"previous_btn": "\u041d\u0430\u0437\u0430\u0434",
"next_btn": "\u0412\u043f\u0435\u0440\u0451\u0434",
"loading_table_status": "\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430...",
"page_table_footer_text": "\u0421\u0442\u0440\u0430\u043d\u0438\u0446\u0430",
"of_table_footer_text": "\u0438\u0437",
"rows_table_footer_text": "\u0441\u0442\u0440\u043e\u043a",
"updated_custom_filtering_toast": "\u0412\u043d\u0435\u0441\u0435\u043d\u044b \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u0430",
"rule_removed_from_custom_filtering_toast": "\u041f\u0440\u0430\u0432\u0438\u043b\u043e \u0443\u0434\u0430\u043b\u0435\u043d\u043e \u0438\u0437 \u0430\u0432\u0442\u043e\u0440\u0441\u043a\u043e\u0433\u043e \u0441\u043f\u0438\u0441\u043a\u0430 \u043f\u0440\u0430\u0432\u0438\u043b \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u0438",
"rule_added_to_custom_filtering_toast": "\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043e",
"query_log_disabled_toast": "\u0416\u0443\u0440\u043d\u0430\u043b \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0432\u044b\u043a\u043b.",
"query_log_enabled_toast": "\u0416\u0443\u0440\u043d\u0430\u043b \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0432\u043a\u043b.",
"source_label": "\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a",
"found_in_known_domain_db": "\u041d\u0430\u0439\u0434\u0435\u043d \u0432 \u0431\u0430\u0437\u0435 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0445 \u0434\u043e\u043c\u0435\u043d\u043e\u0432.",
"category_label": "\u041a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u044f",
"rule_label": "\u041f\u0440\u0430\u0432\u0438\u043b\u043e",
"filter_label": "\u0424\u0438\u043b\u044c\u0442\u0440",
"unknown_filter": "\u041d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0439 \u0444\u0438\u043b\u044c\u0442\u0440 {{filterId}}"
"version": "версия",
"address": "Адрес",
"protocol": "Протокол",
"on": "Вкл",
"off": "Выкл",
"copyright": "Все права защищены",
"homepage": "Главная",
"report_an_issue": "Сообщить о проблеме",
"privacy_policy": "Политика конфиденциальности",
"enable_protection": "Включить защиту",
"enabled_protection": "Защита вкл.",
"disable_protection": "Отключить защиту",
"disabled_protection": "Защита выкл.",
"refresh_statics": "Обновить статистику",
"dns_query": "DNS-запросы",
"blocked_by": "<0>Заблокировано фильтрами</0>",
"stats_malware_phishing": "Заблокированные вредоносные и фишинговые сайты",
"stats_adult": "Заблокированные \"взрослые\" сайты",
"stats_query_domain": "Часто запрашиваемые домены",
"for_last_24_hours": "за 24 часа",
"for_last_days": "за последний {{count}} день",
"for_last_days_plural": "за последние {{count}} дней",
"no_domains_found": "Домены не найдены",
"requests_count": "Количество запросов",
"top_blocked_domains": "Часто блокируемые домены",
"top_clients": "Частые клиенты",
"no_clients_found": "Клиентов не найдено",
"general_statistics": "Общая статистика",
"number_of_dns_query_days": "Количество DNS-запросов за последний {{count}} день",
"number_of_dns_query_days_plural": "Количество DNS запросов, обработанных за последние {{count}} дней",
"number_of_dns_query_24_hours": "Количество DNS-запросов за 24 часа",
"number_of_dns_query_blocked_24_hours": "Количество DNS-запросов, заблокированных фильтрами и блок-списками",
"number_of_dns_query_blocked_24_hours_by_sec": "Количество DNS-запросов, заблокированных модулем Антифишинга AdGuard",
"number_of_dns_query_blocked_24_hours_adult": "Количество заблокированных \"сайтов для взрослых\"",
"enforced_save_search": "Применен безопасный поиск",
"number_of_dns_query_to_safe_search": "Количество запросов DNS для поисковых систем, для которых был применен Безопасный поиск",
"average_processing_time": "Среднее время обработки запроса",
"average_processing_time_hint": "Среднее время для обработки запроса DNS в миллисекундах",
"block_domain_use_filters_and_hosts": "Блокировать домены с использованием фильтров и файлов хостов",
"filters_block_toggle_hint": "Вы можете настроить правила блокировки в <a href='#filters'> \"Фильтрах\"</a>.",
"use_adguard_browsing_sec": "Включить Безопасную навигацию AdGuard",
"use_adguard_browsing_sec_hint": "AdGuard Home проверит, включен ли домен в веб-службу безопасности браузера. Он будет использовать API, чтобы выполнить проверку: на сервер отправляется только короткий префикс имени домена SHA256.",
"use_adguard_parental": "Включить модуль Родительского контроля AdGuard ",
"use_adguard_parental_hint": "AdGuard Home проверит, содержит ли домен материалы 18+. Он использует тот же API для обеспечения конфиденциальности, что и веб-служба безопасности браузера.",
"enforce_safe_search": "Включить безопасный поиск",
"enforce_save_search_hint": "AdGuard Home может обеспечить безопасный поиск в следующих поисковых системах: Google, Youtube, Bing, DuckDuckGo, Yandex и Pixabay.",
"no_servers_specified": "Нет указанных серверов",
"general_settings": "Основные настройки",
"dns_settings": "Настройки DNS",
"dns_blocklists": "Черные списки DNS",
"dns_allowlists": "Белые списки DNS",
"dns_blocklists_desc": "AdGuard Home будет блокировать домены из черных списков.",
"dns_allowlists_desc": "Домены из белых списков DNS будут разрешены, даже если они находятся в любом из черных списков.",
"custom_filtering_rules": "Пользовательские правила фильтрации",
"encryption_settings": "Настройки шифрования",
"dhcp_settings": "Настройки DHCP",
"upstream_dns": "Upstream DNS-серверы",
"upstream_dns_hint": "Если вы оставите это поле пустым, то AdGuard Home использует <a href='https://www.quad9.net/' target='_blank'>Quad9</a> в качестве DNS сервера.",
"test_upstream_btn": "Тест upstream серверов",
"upstreams": "Upstreams",
"apply_btn": "Применить",
"disabled_filtering_toast": "Фильтрация выкл.",
"enabled_filtering_toast": "Фильтрация вкл.",
"disabled_safe_browsing_toast": "Безопасная навигация выкл.",
"enabled_safe_browsing_toast": "Безопасная навигация вкл.",
"disabled_parental_toast": "Родительский контроль выкл.",
"enabled_parental_toast": "Родительский контроль вкл.",
"disabled_safe_search_toast": "Безопасный поиск выкл.",
"enabled_save_search_toast": "Безопасный поиск вкл.",
"enabled_table_header": "Вкл.",
"name_table_header": "Имя",
"list_url_table_header": "URL-адрес списка",
"rules_count_table_header": "Количество правил:",
"last_time_updated_table_header": "Последнее обновление",
"actions_table_header": "Действия",
"request_table_header": "Запрос",
"edit_table_action": "Редактировать",
"delete_table_action": "Удалить",
"elapsed": "Затрачено",
"filters_and_hosts_hint": "AdGuard Home распознает базовые правила блокировки и синтаксис файлов hosts.",
"no_blocklist_added": "Черные списки не добавлены",
"no_whitelist_added": "Белые списки не добавлены",
"add_blocklist": "Добавить черный список",
"add_allowlist": "Добавить белый список",
"cancel_btn": "Отмена",
"enter_name_hint": "Введите имя",
"enter_url_or_path_hint": "Введите URL-адрес или абсолютный путь к списку",
"check_updates_btn": "Проверить обновления",
"new_blocklist": "Новый черный список",
"new_allowlist": "Новый белый список",
"edit_blocklist": "Редактировать черный список",
"edit_allowlist": "Редактировать белый список",
"choose_blocklist": "Выберите списки блокировки",
"choose_allowlist": "Выберите списки разрешённых",
"enter_valid_blocklist": "Добавьте действующий URL-адрес в черный список.",
"enter_valid_allowlist": "Добавьте действующий URL-адрес в белый список.",
"form_error_url_format": "Неверный формат URL",
"form_error_url_or_path_format": "Неверный URL или абсолютный путь к списку",
"custom_filter_rules": "Пользовательское правило фильтрации",
"custom_filter_rules_hint": "Вводите по одному правилу на строчку. Вы можете использовать правила блокировки или синтаксис файлов hosts.",
"examples_title": "Примеры",
"example_meaning_filter_block": "заблокировать доступ к домену example.org и всем его поддоменам",
"example_meaning_filter_whitelist": "разблокировать доступ к домену example.org и всем его поддоменам",
"example_meaning_host_block": "Теперь AdGuard Home вернет 127.0.0.1 для домена example.org (но не для его поддоменов).",
"example_comment": "! Так можно добавлять описание",
"example_comment_meaning": "комментарий",
"example_comment_hash": "# И вот так тоже",
"example_regex_meaning": "блокирует доступ к доменам, соответствующим <0>заданному регулярному выражению</0>",
"example_upstream_regular": "обычный DNS (поверх UDP)",
"example_upstream_dot": "зашифрованный <0>DNS-over-TLS</0>",
"example_upstream_doh": "зашифрованный <0>DNS-over-HTTPS</0>",
"example_upstream_sdns": "вы можете использовать <0>DNS Stamps</0> для <1>DNSCrypt</1> или <2>DNS-over-HTTPS</2> резолверов",
"example_upstream_tcp": "обычный DNS (поверх TCP)",
"all_lists_up_to_date_toast": "Все списки уже обновлены",
"updated_upstream_dns_toast": "Upstream DNS-серверы обновлены",
"dns_test_ok_toast": "Указанные серверы DNS работают корректно",
"dns_test_not_ok_toast": "Сервер \"{{key}}\": невозможно использовать, проверьте правильность написания",
"unblock": "Разблокировать",
"block": "Заблокировать",
"time_table_header": "Время",
"date": "Дата",
"domain_name_table_header": "Домен",
"domain_or_client": "Домен или клиент",
"type_table_header": "Тип",
"response_table_header": "Ответ",
"response_code": "Код ответа",
"client_table_header": "Клиент",
"empty_response_status": "Пусто",
"show_all_filter_type": "Показать все",
"show_filtered_type": "Показать отфильтрованные",
"no_logs_found": "Логи не найдены",
"refresh_btn": "Обновить",
"previous_btn": "Назад",
"next_btn": "Вперёд",
"loading_table_status": "Загрузка...",
"page_table_footer_text": "Страница",
"rows_table_footer_text": "строк",
"updated_custom_filtering_toast": "Внесены изменения в пользовательские правила",
"rule_removed_from_custom_filtering_toast": "Правило удалено из авторского списка правил фильтрации",
"rule_added_to_custom_filtering_toast": "Пользовательское правило добавлено",
"query_log_response_status": "Статус: {{value}}",
"query_log_filtered": "Отфильтровано с помощью {{filter}}",
"query_log_confirm_clear": "Вы уверены, что хотите очистить весь журнал запросов?",
"query_log_cleared": "Журнал запросов успешно очищен",
"query_log_updated": "Журнал запросов успешно обновлен",
"query_log_clear": "Очистить журнал запросов",
"query_log_retention": "Сохранение журнала запросов",
"query_log_enable": "Включить журнал",
"query_log_configuration": "Настройка журнала",
"query_log_disabled": "Журнал запросов выключен, его можно включить в <0>настройках</0>",
"query_log_strict_search": "Используйте двойные кавычки для строгого поиска",
"query_log_retention_confirm": "Вы уверены, что хотите изменить срок хранения запросов? При сокращении интервала данные могут быть утеряны",
"anonymize_client_ip": "Анонимизировать IP-адрес клиента",
"anonymize_client_ip_desc": "Не сохранять полный IP-адрес клиента в журналах и статистике",
"dns_config": "Настройки DNS-сервера",
"dns_cache_config": "Настройка кэша DNS",
"dns_cache_config_desc": "Здесь можно настроить кэш DNS",
"blocking_mode": "Режим блокировки",
"default": "Стандартный",
"nxdomain": "NXDOMAIN",
"null_ip": "Нулевой IP",
"custom_ip": "Свой IP",
"blocking_ipv4": "Блокировка IPv4",
"blocking_ipv6": "Блокировка IPv6",
"dns_over_https": "DNS-over-HTTPS",
"dns_over_tls": "DNS-over-TLS",
"plain_dns": "Нешифрованный DNS",
"form_enter_rate_limit": "Введите rate limit",
"rate_limit": "Rate limit",
"edns_enable": "Включить отправку EDNS Client Subnet",
"edns_cs_desc": "Если включить эту опцию, AdGuard Home будет отправлять подсети клиентов на DNS-сервера.",
"rate_limit_desc": "Ограничение на количество запросов в секунду для каждого клиента (0 — неограниченно)",
"blocking_ipv4_desc": "IP-адрес, возвращаемый при блокировке A-запроса",
"blocking_ipv6_desc": "IP-адрес, возвращаемый при блокировке AAAA-запроса",
"blocking_mode_default": "Стандартный: Отвечает с NXDOMAIN, когда заблокировано правилом в стиле Adblock; отвечает с IP-адресом, указанным в правиле, когда заблокировано правилом в стиле /etc/hosts\n",
"blocking_mode_nxdomain": "NXDOMAIN: Отвечает с кодом NXDOMAIN\n",
"blocking_mode_null_ip": "Нулевой IP: Отвечает с нулевым IP-адресом (0.0.0.0 для A; :: для AAAA)",
"blocking_mode_custom_ip": "Пользовательский IP: Отвечает с вручную настроенным IP-адресом",
"upstream_dns_client_desc": "Если оставить поле пустым, AdGuard Home будет обращаться к серверам, указанным в <0>настройках DNS</0>.",
"tracker_source": "Источник трекинга",
"source_label": "Источник",
"found_in_known_domain_db": "Найден в базе известных доменов.",
"category_label": "Категория",
"rule_label": "Правило",
"list_label": "Список",
"unknown_filter": "Неизвестный фильтр {{filterId}}",
"known_tracker": "Известный трекер",
"install_welcome_title": "Добро пожаловать в AdGuard Home!",
"install_welcome_desc": "AdGuard Home это DNS-сервер, блокирующий рекламу и трекинг. Его цель дать вам возможность контролировать всю вашу сеть и все подключенные устройства. Он не требует установки клиентских программ.",
"install_settings_title": "Веб-интерфейс администрирования",
"install_settings_listen": "Сетевой интерфейс",
"install_settings_port": "Порт",
"install_settings_interface_link": "Ваш веб-интерфейс администрирования AdGuard Home будет доступен по следующим адресам:",
"form_error_port": "Введите корректный порт",
"install_settings_dns": "DNS-сервер",
"install_settings_dns_desc": "Вам будет нужно настроить свои устройства или роутер на использование DNS-сервера на одном из следующих адресов:",
"install_settings_all_interfaces": "Все интерфейсы",
"install_auth_title": "Авторизация",
"install_auth_desc": "Настоятельно рекомендуется настроить аутентификацию паролем для веб-интерфейса AdGuard Home. Даже если он доступен только в вашей локальной сети, важно защитить его от неограниченного доступа.",
"install_auth_username": "Имя пользователя",
"install_auth_password": "Пароль",
"install_auth_confirm": "Подтвердить пароль",
"install_auth_username_enter": "Введите имя пользователя",
"install_auth_password_enter": "Введите пароль",
"install_step": "Шаг",
"install_devices_title": "Настройте ваши устройства",
"install_devices_desc": "Для того, чтобы использовать AdGuard Home, вам нужно настроить ваши устройства на его использование.",
"install_submit_title": "Поздравляем!",
"install_submit_desc": "Процедура настройки завершена и вы готовы начать использование AdGuard Home.",
"install_devices_router": "Роутер",
"install_devices_router_desc": "Такая настройка автоматически покроет все устройства, использующие ваш домашний роутер, и вам не нужно будет настраивать каждое из них в отдельности.",
"install_devices_address": "DNS-сервер AdGuard Home доступен по следующим адресам",
"install_devices_router_list_1": "Откройте настройки вашего роутера. Обычно вы можете открыть их в вашем браузере (например, http://192.168.0.1/ или http://192.168.1.1/). Вас могут попросить ввести пароль. Если вы не помните его, пароль часто можно сбросить, нажав на кнопку на самом роутере. Некоторые роутеры требуют специального приложения, которое в этом случае должно быть уже установлено на ваш компьютер или телефон.",
"install_devices_router_list_2": "Найдите настройки DHCP или DNS. Найдите буквы \"DNS\" рядом с текстовым полем, в которое можно ввести два или три ряда цифр, разделенных на 4 группы от одной до трёх цифр.",
"install_devices_router_list_3": "Введите туда адрес вашего AdGuard Home.",
"install_devices_router_list_4": "Вы не можете установить собственный DNS-сервер на некоторых типах маршрутизаторов. В этом случае может помочь настройка AdGuard Home в качестве <0>DHCP-сервера</0>. В противном случае вам следует обратиться к руководству по настройке DNS-серверов для вашей конкретной модели маршрутизатора.",
"install_devices_windows_list_1": "Откройте Панель управления через меню \"Пуск\" или через поиск Windows.",
"install_devices_windows_list_2": "Перейдите в \"Сеть и интернет\", а затем в \"Центр управления сетями и общим доступом\"",
"install_devices_windows_list_3": "В левой стороне экрана найдите \"Изменение параметров адаптера\" и кликните по нему.",
"install_devices_windows_list_4": "Выделите ваше активное подключение, затем кликните по нему правой клавишей мыши и выберите \"Свойства\".",
"install_devices_windows_list_5": "Найдите в списке пункт \"IP версии 4 (TCP/IP)\", выделите его и затем снова нажмите \"Свойства\".",
"install_devices_windows_list_6": "Выберите \"Использовать следующие адреса DNS-серверов\" и введите адрес AdGuard Home.",
"install_devices_macos_list_1": "Кликните по иконке Apple и перейдите в «Системные настройки».",
"install_devices_macos_list_2": "Кликните по иконке «Сеть».",
"install_devices_macos_list_3": "Выберите первое подключение в списке и нажмите кнопку «Дополнительно».",
"install_devices_macos_list_4": "Выберите вкладку «DNS» и добавьте адреса AdGuard Home.",
"install_devices_android_list_1": "В меню управления нажмите иконку «Настройки».",
"install_devices_android_list_2": "Выберите пункт «Wi-Fi». Появится экран со списком доступных сетей (настройка DNS недоступна для мобильных сетей).",
"install_devices_android_list_3": "Долгим нажатием по текущей сети вызовите меню, в котором нажмите «Изменить сеть».",
"install_devices_android_list_4": "На некоторых устройствах может потребоваться нажать «Расширенные настройки». Чтобы получить возможность изменять настройки DNS, вам потребуется переключить «Настройки IP» на «Пользовательские».",
"install_devices_android_list_5": "Теперь можно изменить поля «DNS 1» и «DNS 2». Введите в них адреса AdGuard Home.",
"install_devices_ios_list_1": "Войдите в меню настроек устройства.",
"install_devices_ios_list_2": "Выберите пункт «Wi-Fi» (для мобильных сетей ручная настройка DNS невозможна).",
"install_devices_ios_list_3": "Нажмите на название сети, к которой устройство подключено в данный момент.",
"install_devices_ios_list_4": "В поле «DNS» введите введите адреса AdGuard Home.",
"get_started": "Поехали",
"next": "Дальше",
"open_dashboard": "Открыть Панель управления",
"install_saved": "Успешно сохранено",
"encryption_title": "Шифрование",
"encryption_desc": "Поддержка шифрования (HTTPS/TLS) для DNS и веб-интерфейса администрирования",
"encryption_config_saved": "Настройки шифрования сохранены",
"encryption_server": "Имя сервера",
"encryption_server_enter": "Введите ваше доменное имя",
"encryption_server_desc": "Для использования HTTPS вам необходимо ввести имя сервера, которое подходит вашему SSL-сертификату.",
"encryption_redirect": "Автоматически перенаправлять на HTTPS",
"encryption_redirect_desc": "Если включено, AdGuard Home будет автоматически перенаправлять вас с HTTP на HTTPS адрес.",
"encryption_https": "Порт HTTPS",
"encryption_https_desc": "Если порт HTTPS настроен, веб-интерфейс администрирования AdGuard Home будет доступен через HTTPS, а также DNS-over-HTTPS сервер будет доступен по пути '/dns-query'.",
"encryption_dot": "Порт DNS-over-TLS",
"encryption_dot_desc": "Если этот порт настроен, AdGuard Home запустит DNS-over-TLS-сервер на этому порту.",
"encryption_certificates": "Сертификаты",
"encryption_certificates_desc": "Для использования шифрования вам необходимо предоставить валидную цепочку SSL-сертификатов для вашего домена. Вы можете получить бесплатный сертификат на <0>{{link}}</0> или вы можете купить его у одного из доверенных Центров Сертификации.",
"encryption_certificates_input": "Скопируйте сюда сертификаты в PEM-кодировке.",
"encryption_status": "Статус",
"encryption_expire": "Истекает",
"encryption_key": "Приватный ключ",
"encryption_key_input": "Скопируйте сюда приватный ключ в PEM-кодировке.",
"encryption_enable": "Включить шифрование (HTTPS, DNS-over-HTTPS и DNS-over-TLS)",
"encryption_enable_desc": "Если шифрование включено, веб-интерфейс AdGuard Home будет работать по HTTPS, а DNS-сервер будет также работать по DNS-over-HTTPS и DNS-over-TLS.",
"encryption_chain_valid": "Цепочка сертификатов валидна",
"encryption_chain_invalid": "Цепочка сертификатов не валидна",
"encryption_key_valid": "Валидный {{type}} приватный ключ",
"encryption_key_invalid": "Невалидный {{type}} приватный ключ",
"encryption_subject": "Субъект",
"encryption_issuer": "Издатель",
"encryption_hostnames": "Имена хостов",
"encryption_reset": "Вы уверены, что хотите сбросить настройки шифрования?",
"topline_expiring_certificate": "Ваш SSL-сертификат скоро истекает. Обновите <0>Настройки шифрования</0>.",
"topline_expired_certificate": "Ваш SSL-сертификат истек. Обновите <0>Настройки шифрования</0>.",
"form_error_port_range": "Введите значение порта из интервала 80-65535",
"form_error_port_unsafe": "Это небезопасный порт",
"form_error_equal": "Не должны быть равны",
"form_error_password": "Пароли не совпадают",
"reset_settings": "Сбросить настройки",
"update_announcement": "AdGuard Home {{version}} уже доступна! <0>Нажмите сюда</0>, чтобы узнать больше.",
"setup_guide": "Инструкция по настройке",
"dns_addresses": "Адреса DNS",
"dns_start": "DNS-сервер запускается",
"dns_status_error": "Ошибка при получении состояния DNS-сервера",
"down": "Вниз",
"fix": "Исправить",
"dns_providers": "<0>Список известных DNS-провайдеров</0> на выбор.",
"update_now": "Обновить сейчас",
"update_failed": "Ошибка авто-обновления. Пожалуйста, <a href='https://github.com/AdguardTeam/AdGuardHome/wiki/Getting-Started#update'>следуйте инструкции</a> для обновления вручную.",
"processing_update": "Пожалуйста, подождите, AdGuard Home обновляется",
"clients_title": "Клиенты",
"clients_desc": "Настройте устройства, использующие AdGuard Home",
"settings_global": "Глобальные",
"settings_custom": "Свои",
"table_client": "Клиент",
"table_name": "Имя",
"save_btn": "Сохранить",
"client_add": "Добавить клиента",
"client_new": "Новый клиент",
"client_edit": "Редактировать клиента",
"client_identifier": "Идентификатор",
"ip_address": "IP-адрес",
"client_identifier_desc": "Клиенты могут быть идентифицированы по IP-адресу, CIDR или MAC-адресу. Обратите внимание, что использование MAC как идентификатора возможно, только если AdGuard Home также является и <0>DHCP-сервером</0>",
"form_enter_ip": "Введите IP",
"form_enter_mac": "Введите MAC",
"form_enter_id": "Введите идентификатор",
"form_add_id": "Добавить идентификатор",
"form_client_name": "Введите имя клиента",
"name": "Имя",
"client_global_settings": "Использовать глобальные настройки",
"client_deleted": "Клиент \"{{key}}\" успешно удален",
"client_added": "Клиент \"{{key}}\" успешно добавлен",
"client_updated": "Клиент \"{{key}}\" успешно обновлен",
"clients_not_found": "Клиентов не найдено",
"client_confirm_delete": "Вы уверены, что хотите удалить клиента \"{{key}}\"?",
"list_confirm_delete": "Вы уверены, что хотите удалить этот список?",
"auto_clients_title": "Клиенты (runtime)",
"auto_clients_desc": "Данные о клиентах, которые используют AdGuard Home, но не хранятся в настройках",
"access_title": "Настройки доступа",
"access_desc": "Здесь вы можете настроить правила доступа к DNS-серверу AdGuard Home.",
"access_allowed_title": "Разрешенные клиенты",
"access_allowed_desc": "Список CIDR- или IP-адресов. Если он настроен, AdGuard Home будет принимать запросы только с этих IP-адресов.",
"access_disallowed_title": "Запрещенные клиенты",
"access_disallowed_desc": "Список CIDR- или IP-адресов. Если он настроен, AdGuard Home будет игнорировать запросы с этих IP-адресов.",
"access_blocked_title": "Неразрешенные домены",
"access_blocked_desc": "Не путайте это с фильтрами. AdGuard Home будет игнорировать DNS-запросы с этими доменами. Здесь вы можете уточнить точные имена доменов, шаблоны, правила URL-фильтрации, например, \"пример.org\", \"*.пример.org\" или \"||пример.org\".",
"access_settings_saved": "Настройки доступа успешно сохранены",
"updates_checked": "Проверка обновлений прошла успешно",
"updates_version_equal": "Версия AdGuard Home актуальна",
"check_updates_now": "Проверить обновления",
"dns_privacy": "Зашифрованный DNS",
"setup_dns_privacy_1": "<0>DNS-over-TLS:</0> Используйте строку <1>{{address}}</1>.",
"setup_dns_privacy_2": "<0>DNS-over-HTTPS:</0> Используйте строку <1>{{address}}</1>.",
"setup_dns_privacy_3": "<0>Обратите внимание, что зашифрованный DNS-протокол поддерживается только на Android 9. Для других операционных систем вам нужно будет установить дополнительное ПО.</0><0>Вот список ПО, которое вы можете использовать.</0>",
"setup_dns_privacy_android_1": "Android 9 нативно поддерживает DNS-over-TLS. Для настройки, перейдите в Настройки → Сеть и Интернет → Дополнительно → Персональный DNS сервер, и введите туда ваше доменное имя.",
"setup_dns_privacy_android_2": "<0>AdGuard для Android</0> поддерживает <1>DNS-over-HTTPS</1> и <1>DNS-over-TLS</1>.",
"setup_dns_privacy_android_3": "<0>Intra</0> добавляет поддержка <1>DNS-over-HTTPS</1> на Android.",
"setup_dns_privacy_ios_1": "<0>DNSCloak</0> поддерживает <1>DNS-over-HTTPS</1>, но для настройки его, вам будет нужно сгенерировать для него <2>DNS-отпечаток</2>.",
"setup_dns_privacy_ios_2": "<0>AdGuard для iOS</0> поддерживает <1>DNS-over-HTTPS</1> и <1>DNS-over-TLS</1>.",
"setup_dns_privacy_other_title": "Другие решения",
"setup_dns_privacy_other_1": "AdGuard Home сам может быть клиентом зашифрованного DNS на любой платформе.",
"setup_dns_privacy_other_2": "<0>dnsproxy</0> поддерживает все известные зашифрованные DNS-протоколы.",
"setup_dns_privacy_other_3": "<0>dnscrypt-proxy</0> поддерживает <1>DNS-over-HTTPS</1>.",
"setup_dns_privacy_other_4": "<0>Mozilla Firefox</0> поддерживает <1>DNS-over-HTTPS</1>.",
"setup_dns_privacy_other_5": "Вы можете найти еще варианты <0>тут</0> и <1>тут</1>.",
"setup_dns_notice": "Чтобы использовать <1>DNS-over-HTTPS</1> или <1>DNS-over-TLS</1>, вам нужно <0>настроить шифрование</0> в настройках AdGuard Home.",
"rewrite_added": "Правило перенаправления DNS для \"{{key}}\" успешно добавлено",
"rewrite_deleted": "Правило перенаправления DNS для \"{{key}}\" успешно удалено",
"rewrite_add": "Добавить правило перенаправления DNS",
"rewrite_not_found": "Не найдено правил перенаправления DNS",
"rewrite_confirm_delete": "Вы уверены, что хотите удалить правило перенаправления DNS для \"{{key}}\"?",
"rewrite_desc": "Позволяет легко настроить пользовательский DNS-ответ для определеннного домена.",
"rewrite_applied": "Применено правило перенаправления",
"rewrite_hosts_applied": "Переписано по правилу файла hosts",
"dns_rewrites": "Перенаправления DNS",
"form_domain": "Введите домен",
"form_answer": "Введите IP адрес или домен",
"form_error_domain_format": "Неверный формат домена",
"form_error_answer_format": "Неверный формат ответа",
"configure": "Настроить",
"main_settings": "Основные настройки",
"block_services": "Выбрать заблокированные сервисы",
"blocked_services": "Заблокированные сервисы",
"blocked_services_desc": "Позволяет быстро заблокировать популярные сайты и сервисы.",
"blocked_services_saved": "Заблокированные сервисы успешно сохранены",
"blocked_services_global": "Использовать глобальные заблокированные сервисы",
"blocked_service": "Заблокированный сервис",
"block_all": "Заблокировать все",
"unblock_all": "Разблокировать все",
"encryption_certificate_path": "Путь к сертификату",
"encryption_private_key_path": "Путь к закрытому ключу",
"encryption_certificates_source_path": "Указать путь к файлу сертификатов",
"encryption_certificates_source_content": "Вставить содержимое сертификатов",
"encryption_key_source_path": "Указать файл закрытого ключа",
"encryption_key_source_content": "Вставить содержимое закрытого ключа",
"stats_params": "Конфигурация статистики",
"config_successfully_saved": "Конфигурация успешно сохранена",
"interval_24_hour": "24 часа",
"interval_days": "{{count}} день",
"interval_days_plural": "{{count}} дней",
"domain": "Домен",
"answer": "Ответ",
"filter_added_successfully": "Список успешно добавлен",
"filter_removed_successfully": "Список успешно удален",
"filter_updated": "Список успешно обновлен",
"statistics_configuration": "Конфигурация статистики",
"statistics_retention": "Сохранение статистики",
"statistics_retention_desc": "Если вы уменьшите значение интервала, некоторые данные могут быть утеряны",
"statistics_clear": " Очистить статистику",
"statistics_clear_confirm": "Вы уверены, что хотите очистить статистику?",
"statistics_retention_confirm": "Вы уверены, что хотите изменить срок хранения статистики? При сокращении интервала данные могут быть утеряны",
"statistics_cleared": "Статистика успешно очищена",
"interval_hours": "{{count}} час",
"interval_hours_plural": "{{count}} часов",
"filters_configuration": "Настройка фильтров",
"filters_enable": "Включить фильтры",
"filters_interval": "Интервал обновления фильтров",
"disabled": "Выключено",
"username_label": "Имя пользователя",
"username_placeholder": "Введите имя пользователя",
"password_label": "Пароль",
"password_placeholder": "Введите пароль",
"sign_in": "Войти",
"sign_out": "Выйти",
"forgot_password": "Забыли пароль?",
"forgot_password_desc": "Пожалуйста, выполните <0>эти действия</0> для создания нового пароля к вашему аккаунту.",
"location": "Местоположение",
"orgname": "Название организации",
"netname": "Название сети",
"network": "Сеть",
"descr": "Описание",
"whois": "Whois",
"filtering_rules_learn_more": "<0>Узнайте больше</0> о создании собственных списков блокировки хостов.",
"blocked_by_response": "Заблокировано по CNAME или IP в ответе",
"blocked_by_cname_or_ip": "Заблокировано с помощью CNAME или IP",
"try_again": "Попробовать еще раз",
"domain_desc": "Введите имя или маску домена, который вы хотите перенаправить.",
"example_rewrite_domain": "перенаправляет ответы только для этого домена.",
"example_rewrite_wildcard": "перенаправляет ответы для всех поддоменов <0>example.org</0>.",
"rewrite_ip_address": "IP-адрес: используйте этот IP для А или АААА ответов",
"rewrite_domain_name": "Доменное имя: добавить запись CNAME",
"rewrite_A": "<0>A</0>: специальное значение, хранить записи <0>A</0> с upstream-сервера",
"rewrite_AAAA": "<0>AAAA</0>: специальное значение, хранить записи <0>AAAA</0> с upstream-сервера",
"disable_ipv6": "Отключить IPv6",
"disable_ipv6_desc": "Если эта опция включена, все DNS-запросы адресов IPv6 (тип AAAA) будут игнорироваться.",
"fastest_addr": "Самый быстрый IP-адрес",
"fastest_addr_desc": "Опросить все DNS-серверы и вернуть самый быстрый IP-адрес из полученных ответов",
"autofix_warning_text": "При нажатии \"Исправить\" AdGuard Home настроит вашу систему на использование DNS-сервера AdGuard Home.",
"autofix_warning_list": "Будут выполняться следующие задачи: <0>Деактивировать системный DNSStubListener</0> <0>Установить адрес сервера DNS на 127.0.0.1</0> <0>Создать символическую ссылку /etc/resolv.conf на /run/systemd/resolve/resolv.conf</0> <0>Остановить DNSStubListener (перезагрузить системную службу)</0>.",
"autofix_warning_result": "В результате все DNS-запросы от вашей системы будут по умолчанию обрабатываться AdGuard Home.\n",
"tags_title": "Теги",
"tags_desc": "Вы можете выбрать теги, которые соответствуют клиенту. Теги могут быть включены в правила фильтрации и позволят вам применять их более точно. <0>Узнать больше</0>.",
"form_select_tags": "Выбрать теги клиента",
"check_title": "Проверить фильтрацию",
"check_desc": "Проверить фильтрацию имени хоста",
"check": "Проверить",
"form_enter_host": "Введите имя хоста",
"filtered_custom_rules": "Отфильтрованы с помощью пользовательских правил фильтрации",
"choose_from_list": "Выбрать из списка",
"add_custom_list": "Добавить свой список",
"host_whitelisted": "Хост занесен в белый список",
"check_ip": "IP-адреса: {{ip}}",
"check_cname": "CNAME: {{cname}}",
"check_reason": "Причина: {{reason}}",
"check_rule": "Правило: {{rule}}",
"check_service": "Название сервиса: {{service}}",
"check_not_found": "Не найдено в вашем списке фильтров",
"client_confirm_block": "Вы уверены, что хотите заблокировать клиента \"{{ip}}\"?",
"client_confirm_unblock": "Вы уверены, что хотите разблокировать клиента \"{{ip}}\"?",
"client_blocked": "Клиент \"{{ip}}\" успешно заблокирован",
"client_unblocked": "Клиент \"{{ip}}\" успешно разблокирован",
"static_ip": "Статический IP-адрес",
"static_ip_desc": "AdGuard Home является сервером, поэтому для корректной работы ему необходим статический IP-адрес. В противном случае, в какой-то момент ваш роутер может присвоить этому устройству другой IP-адрес.",
"set_static_ip": "Установить статический IP-адрес",
"install_static_ok": "Хорошие новости! Ваш статический IP-адрес уже настроен",
"install_static_error": "AdGuard Home не может автоматически настроить его для этого сетевого интерфейса. Пожалуйста, посмотрите инструкцию о том, как это сделать вручную.",
"install_static_configure": "Мы обнаружили использование динамического IP-адреса — <0>{{ip}}</0>. Хотите использовать его в качестве статического адреса?",
"confirm_static_ip": "AdGuard Home настроит {{ip}} в качестве вашего статического IP-адреса. Хотите продолжить?",
"list_updated": "Обновлен {{count}} список",
"list_updated_plural": "Обновлено списков: {{count}}",
"dnssec_enable": "Включить DNSSEC",
"dnssec_enable_desc": "Установите флаг DNSSEC в исходящих DNS-запросах и проверьте результат (требуется резолвер с поддержкой DNSSEC)",
"validated_with_dnssec": "Подтверждено с помощью DNSSEC",
"all_queries": "Все запросы",
"show_blocked_responses": "Blocked",
"show_whitelisted_responses": "В белом списке",
"show_processed_responses": "Обработан",
"blocked_safebrowsing": "Заблокировано согласно базе данных Safebrowsing",
"blocked_adult_websites": "Заблокированные \"взрослые\" сайты",
"blocked_threats": "Заблокировано угроз",
"allowed": "Разрешенные",
"filtered": "Отфильтрованные",
"rewritten": "Переписанные",
"safe_search": "Безопасный поиск",
"blocklist": "Черный список",
"milliseconds_abbreviation": "мс",
"cache_size": "Размер кеша",
"cache_size_desc": "Размера кеша DNS (в байтах)",
"cache_ttl_min_override": "Переопределить минимальный TTL",
"cache_ttl_max_override": "Переопределить максимальный TTL",
"enter_cache_size": "Введите размер кеша",
"enter_cache_ttl_min_override": "Введите минимальный TTL",
"enter_cache_ttl_max_override": "Введите максимальный TTL",
"cache_ttl_min_override_desc": "Переопределить TTL-значение (минимальное), полученное с upstream-сервера. Это значение не может быть больше 3600 (1 часа)",
"cache_ttl_max_override_desc": "Переопределить TTL-значение (максимальное), полученное с upstream-сервера",
"min_exceeds_max_value": "Минимальное значение превышает максимальное значение",
"value_not_larger_than": "Значение не может быть больше {{maximum}}",
"filter_category_general": "Общие",
"filter_category_security": "Безопасность",
"filter_category_regional": "Региональные",
"filter_category_other": "Другие",
"filter_category_general_desc": "Списки, которые блокируют отслеживание и рекламу на большинстве устройств",
"filter_category_security_desc": "Списки, которые специализируются на блокировке вредоносных программ, фишинговых или мошеннических доменов",
"filter_category_regional_desc": "Списки, которые фокусируются на региональной рекламе и серверах отслеживания",
"filter_category_other_desc": "Другие списки блокировки",
"original_response": "Первоначальный ответ",
"click_to_view_queries": "Нажмите, чтобы просмотреть запросы",
"port_53_faq_link": "Порт 53 часто занят службами \"DNSStubListener\" или \"systemd-resolved\". Ознакомьтесь с <0>инструкцией</0> о том, как это разрешить."
}

View File

@@ -0,0 +1,566 @@
{
"client_settings": "Nastavenie klienta",
"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",
"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_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",
"save_config": "Uložiť konfiguráciu",
"enabled_dhcp": "DHCP server zapnutý",
"disabled_dhcp": "DHCP server vypnutý",
"dhcp_title": "DHCP server (experimentálne!)",
"dhcp_description": "Ak Váš smerovač neposkytuje možnosť nastaviť DHCP, môžete použiť vlastný zabudovaný DHCP server AdGuard.",
"dhcp_enable": "Zapnúť DHCP server",
"dhcp_disable": "Vypnúť DHCP server",
"dhcp_not_found": "Je bezpečné zapnúť vstavaný DHCP server - v sieti sme nenašli žiadne aktívne DHCP servery. Odporúčame Vám však, aby ste ho znova manuálne skontrolovali, pretože náš automatický test momentálne neposkytuje 100% záruku.",
"dhcp_found": "V sieti bol nájdený aktívny DHCP server. Nie je bezpečné povoliť vstavaný DHCP server.",
"dhcp_leases": "DHCP prenájom",
"dhcp_static_leases": "DHCP statické prenájmy",
"dhcp_leases_not_found": "Neboli nájdené žiadne DHCP prenájmy",
"dhcp_config_saved": "Konfigurácia DHCP servera uložená",
"form_error_required": "Povinná položka",
"form_error_ip4_format": "Nesprávny formát IPv4",
"form_error_ip6_format": "Nesprávny formát IPv6",
"form_error_ip_format": "Nesprávny formát IPv4",
"form_error_mac_format": "Nesprávny MAC formát",
"form_error_client_id_format": "Neplatný formát client ID",
"form_error_positive": "Musí byť väčšie ako 0",
"form_error_negative": "Musí byť číslo 0 alebo viac",
"dhcp_form_gateway_input": "IP brána",
"dhcp_form_subnet_input": "Maska podsiete",
"dhcp_form_range_title": "Rozsah IP adries",
"dhcp_form_range_start": "Začiatok rozsahu",
"dhcp_form_range_end": "Koniec rozsahu",
"dhcp_form_lease_title": "Doba prenájmu DHCP (v sekundách)",
"dhcp_form_lease_input": "Trvanie prenájmu",
"dhcp_interface_select": "Zvoľte DHCP rozhranie",
"dhcp_hardware_address": "Hardware adresa",
"dhcp_ip_addresses": "IP adresy",
"ip": "IP",
"dhcp_table_hostname": "Meno hostiteľa",
"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_error": "Nebolo možné určiť, či je v sieti iný DHCP server.",
"dhcp_static_ip_error": "Aby bolo možné používať DHCP server, musí byť nastavená statická IP adresa. Nepodarilo sa určiť, či je toto sieťové rozhranie nakonfigurované pomocou statickej adresy IP. Nastavte statickú adresu IP manuálne.",
"dhcp_dynamic_ip_found": "Váš systém používa dynamickú konfiguráciu IP adresy pre rozhranie <0{{interfaceName}}</0>. Aby bolo možné používať DHCP server, musí byť nastavená statická IP adresa. Vaša aktuálna adresa IP je <0>{{ipAddress}}</0>. Automaticky nastavíme túto IP adresu ako statickú, ak stlačíte tlačidlo Povoliť DHCP.",
"dhcp_lease_added": "Statický \"{{key}}\" prenájmu bol úspešne pridaný",
"dhcp_lease_deleted": "Statický \"{{key}}\" prenájmu bol úspešne vymazaný",
"dhcp_new_static_lease": "Nový statický prenájom",
"dhcp_static_leases_not_found": "Nebol nájdený žiadny statický DHCP prenájom",
"dhcp_add_static_lease": "Pridať statický prenájom",
"dhcp_reset": "Naozaj chcete obnoviť konfiguráciu DHCP?",
"country": "Krajina",
"city": "Mesto",
"delete_confirm": "Naozaj chcete vymazať \"{{key}}\"?",
"form_enter_hostname": "Zadajte meno hostiteľa",
"error_details": "Podrobnosti chyby",
"response_details": "Podrobnosti odpovede",
"request_details": "Podrobnosti požiadavky",
"client_details": "Podrobnosti klienta",
"details": "Podrobnosti",
"back": "Naspäť",
"dashboard": "Riadiaci panel",
"settings": "Nastavenia",
"filters": "Filtre",
"filter": "Filter",
"query_log": "Denník dopytov",
"compact": "Kompaktný",
"nothing_found": "Nič sa nenašlo",
"faq": "FAQ",
"version": "Verzia",
"address": "Adresa",
"protocol": "Protokol",
"on": "ZAP.",
"off": "VYP.",
"copyright": "Copyright",
"homepage": "Domovská stránka",
"report_an_issue": "Nahlásiť problém",
"privacy_policy": "Pravidlá ochrany súkromia",
"enable_protection": "Zapnúť ochranu",
"enabled_protection": "Ochrana zapnutá",
"disable_protection": "Vypnúť ochranu",
"disabled_protection": "Ochrana vypnutá",
"refresh_statics": "Obnoviť štatistiku",
"dns_query": "DNS dopyty",
"blocked_by": "<0>Blokované filtrami</0>",
"stats_malware_phishing": "Blokovaný škodlivý kód/pokus o podvod",
"stats_adult": "Blokovaná stránka pre dospelých",
"stats_query_domain": "Najčastejšie dopytované domény",
"for_last_24_hours": "za posledných 24 hodín",
"for_last_days": "za posledný {{count}} deň",
"for_last_days_plural": "za posledných {{count}} dní",
"no_domains_found": "Žiadna doména nebola nájdená",
"requests_count": "Počet dopytov",
"top_blocked_domains": "Najčastejšie zablokované domény",
"top_clients": "Najčastejší klienti",
"no_clients_found": "Neboli nájdení žiadni klienti",
"general_statistics": "Všeobecná štatistika",
"number_of_dns_query_days": "Počet DNS dopytov spracovaných za posledný {{count}} deň",
"number_of_dns_query_days_plural": "Počet DNS dopytov spracovaných za posledných {{count}} dní",
"number_of_dns_query_24_hours": "Počet DNS dopytov spracovaných za posledných 24 hodín",
"number_of_dns_query_blocked_24_hours": "Počet DNS dopytov zablokovaných filtrami reklamy a zoznamami adries",
"number_of_dns_query_blocked_24_hours_by_sec": "Počet DNS dopytov zablokovaných AdGuard modulom Bezpečné prehliadanie",
"number_of_dns_query_blocked_24_hours_adult": "Počet zablokovaných stránok pre dospelých",
"enforced_save_search": "Vynútené bezpečné vyhľadávanie",
"number_of_dns_query_to_safe_search": "Počet DNS dopytov na vyhľadávače, pri ktorých bolo vynútené bezpečné vyhľadávanie",
"average_processing_time": "Priemerný čas spracovania",
"average_processing_time_hint": "Priemerný čas spracovania DNS dopytu v milisekundách",
"block_domain_use_filters_and_hosts": "Blokovať domény pomocou filtrov a zoznamov adries",
"filters_block_toggle_hint": "Pravidlá blokovania môžete nastaviť v nastaveniach <a href='#filters'>Filtre</a>.",
"use_adguard_browsing_sec": "Použiť AdGuard službu Bezpečného prehliadania",
"use_adguard_browsing_sec_hint": "AdGuard Home skontroluje, či je doména na čiernej listine službou Bezpečného prehliadania. Použije API vyhľadávania priateľské k ochrane súkromia na vykonanie kontroly: na server je poslaná iba krátka predpona názvu domény SHA256 hash.",
"use_adguard_parental": "Použiť AdGuard službu Rodičovská kontrola",
"use_adguard_parental_hint": "AdGuard Home skontroluje, či doména obsahuje materiály pre dospelých. Používa rovnaké API priateľské k ochrane osobných údajov ako služba Bezpečného prehliadania.",
"enforce_safe_search": "Vynútiť bezpečné vyhľadávanie",
"enforce_save_search_hint": "AdGuard Home môže vynútiť bezpečné vyhľadávanie v nasledujúcich vyhľadávačoch: Google, Youtube, Bing, DuckDuckGo a Yandex.",
"no_servers_specified": "Neboli špecifikované žiadne servery",
"general_settings": "Všeobecné nastavenia",
"dns_settings": "Nastavenia DNS",
"dns_blocklists": "Zoznam blokovaných DNS",
"dns_allowlists": "Zoznam povolených DNS",
"dns_blocklists_desc": "AdGuard Home bude blokovať domény obsiahnuté v zozname blokovaných DNS.",
"dns_allowlists_desc": "Domény zo zoznamu povolených DNS budú povolené, aj keď sa nachádzajú v niektorom zo zoznamov blokovaných DNS.",
"custom_filtering_rules": "Vlastné filtračné pravidlá",
"encryption_settings": "Nastavenia šifrovania",
"dhcp_settings": "Nastavenia DHCP",
"upstream_dns": "Upstream DNS servery",
"upstream_dns_hint": "Ak toto pole ponecháte prázdne, AdGuard Home použije <a href='https://www.quad9.net/' target='_blank'>Quad9</a> ako upstream.",
"test_upstream_btn": "Test upstreamov",
"upstreams": "Upstreams",
"apply_btn": "Použiť",
"disabled_filtering_toast": "Vypnutá filtrácia",
"enabled_filtering_toast": "Zapnutá filtrácia",
"disabled_safe_browsing_toast": "Vypnuté Bezpečné prehliadanie",
"enabled_safe_browsing_toast": "Zapnuté Bezpečné prehliadanie",
"disabled_parental_toast": "Vypnutá Rodičovská kontrola",
"enabled_parental_toast": "Zapnutá Rodičovská kontrola",
"disabled_safe_search_toast": "Vypnuté bezpečné vyhľadávanie",
"enabled_save_search_toast": "Zapnuté bezpečné vyhľadávanie",
"enabled_table_header": "Zapnuté",
"name_table_header": "Meno",
"list_url_table_header": "Zoznam URL adries",
"rules_count_table_header": "Počet pravidiel",
"last_time_updated_table_header": "Posledná aktualizácia",
"actions_table_header": "Akcie",
"request_table_header": "Dopyt",
"edit_table_action": "Upraviť",
"delete_table_action": "Vymazať",
"elapsed": "Uplynuté",
"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_whitelist_added": "Nebol pridaný žiaden zoznam povolených DNS",
"add_blocklist": "Pridať zoznam blokovaných DNS",
"add_allowlist": "Pridať zoznam povolených DNS",
"cancel_btn": "Zrušiť",
"enter_name_hint": "Zadajte meno",
"enter_url_or_path_hint": "Zadajte URL adresu alebo absolútnu adresu zoznamu",
"check_updates_btn": "Skontrolovať aktualizácie",
"new_blocklist": "Nový zoznam blokovaných DNS",
"new_allowlist": "Nový zoznam povolených DNS",
"edit_blocklist": "Upraviť zoznam blokovaných DNS",
"edit_allowlist": "Upraviť zoznam povolených DNS",
"choose_blocklist": "Vybrať blokovací zoznam",
"choose_allowlist": "Vybrať povolený zoznam",
"enter_valid_blocklist": "Zadajte platnú URL adresu do zoznamu blokovaných DNS.",
"enter_valid_allowlist": "Zadajte platnú URL adresu do zoznamu povolených DNS.",
"form_error_url_format": "Neplatný URL formát",
"form_error_url_or_path_format": "Neplatná URL adresa alebo absolútna adresa zoznamu",
"custom_filter_rules": "Vlastné filtračné pravidlá",
"custom_filter_rules_hint": "Zadajte na každý riadok jedno pravidlo. Môžete použiť buď adblock pravidlá alebo syntax host súborov.",
"examples_title": "Príklady",
"example_meaning_filter_block": "zablokovať prístup k doméne example.org a všetkým jej subdoménam",
"example_meaning_filter_whitelist": "odblokovať prístup k doméne example.org a všetkým jej subdoménam",
"example_meaning_host_block": "AdGuard Home teraz vráti adresu 127.0.0.1 pre doménu example.org (ale nie pre jej subdomény).",
"example_comment": "! Sem sa pridáva komentár",
"example_comment_meaning": "len komentár",
"example_comment_hash": "# Tiež komentár",
"example_regex_meaning": "zablokovať prístup k doménam, ktoré zodpovedajú zadanému regulárnemu výrazu",
"example_upstream_regular": "radová DNS (cez UDP)",
"example_upstream_dot": "šifrované <0>DNS-over-TLS</0>",
"example_upstream_doh": "šifrované <0>DNS-over-HTTPS</0>",
"example_upstream_sdns": "môžete použiť <0>DNS pečiatky</0> pre <1>DNSCrypt</1> alebo <2>DNS-over-HTTPS</2>",
"example_upstream_tcp": "radová DNS (cez TCP)",
"all_lists_up_to_date_toast": "Všetky zoznamy sú už aktuálne",
"updated_upstream_dns_toast": "Aktualizované upstream DNS servery",
"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",
"unblock": "Odblokovať",
"block": "Blokovať",
"time_table_header": "Čas",
"date": "Dátum",
"domain_name_table_header": "Meno domény",
"domain_or_client": "Doména alebo klient",
"type_table_header": "Typ",
"response_table_header": "Odozva",
"response_code": "Kód odozvy",
"client_table_header": "Klient",
"empty_response_status": "Vyčistiť",
"show_all_filter_type": "Zobraziť všetko",
"show_filtered_type": "Zobraziť filtrované",
"no_logs_found": "Neboli nájdené žiadne denníky",
"refresh_btn": "Obnoviť",
"previous_btn": "Predošlé",
"next_btn": "Ďalšie",
"loading_table_status": "Načítavam...",
"page_table_footer_text": "Stránka",
"rows_table_footer_text": "riadky",
"updated_custom_filtering_toast": "Aktualizované vlastné filtračné pravidlá",
"rule_removed_from_custom_filtering_toast": "Pravidlo odstránené z vlastných filtračných pravidiel",
"rule_added_to_custom_filtering_toast": "Pravidlo pridané do vlastných filtračných pravidiel",
"query_log_response_status": "Stav: {{value}}",
"query_log_filtered": "Vyfiltrované pomocou {{filter}}",
"query_log_confirm_clear": "Naozaj chcete vymazať celý denník dopytov?",
"query_log_cleared": "Denník dopytov bol úspešne vymazaný",
"query_log_updated": "Denník dopytov bol úspešne aktualizovaný",
"query_log_clear": "Vymazať denníky dopytov",
"query_log_retention": "Obdobie záznamu denníka dopytov",
"query_log_enable": "Zapnúť denník",
"query_log_configuration": "Konfigurácia denníka",
"query_log_disabled": "Protokol dopytov je vypnutý a možno ho nakonfigurovať v <0>nastaveniach</0>",
"query_log_strict_search": "Na prísne vyhľadávanie použite dvojité úvodzovky",
"query_log_retention_confirm": "Naozaj chcete zmeniť uchovávanie denníku dopytov? Ak znížite hodnotu intervalu, niektoré údaje sa stratia",
"anonymize_client_ip": "Anonymizujte IP klienta",
"anonymize_client_ip_desc": "Neukladať úplnú IP adresu klienta do protokolov a štatistík",
"dns_config": "Konfigurácia DNS servera",
"dns_cache_config": "Konfigurácia DNS cache",
"dns_cache_config_desc": "Tu môžete nakonfigurovať DNS cache",
"blocking_mode": "Spôsob blokovania",
"default": "Predvolené",
"nxdomain": "NXDOMAIN",
"null_ip": "Nulová IP adresa",
"custom_ip": "Vlastná IP adresa",
"blocking_ipv4": "Blokovanie IPv4",
"blocking_ipv6": "Blokovanie IPv6",
"dns_over_https": "DNS-over-HTTPS",
"dns_over_tls": "DNS-over-TLS",
"plain_dns": "Obyčajné DNS",
"form_enter_rate_limit": "Zadajte rýchlostný limit",
"rate_limit": "Rýchlostný limit",
"edns_enable": "Povoliť klientsku podsiete EDNS",
"edns_cs_desc": "Ak je zapnuté, program AdGuard Home bude odosielať podsiete klientov na DNS servery.",
"rate_limit_desc": "Počet požiadaviek za sekundu, ktoré môže jeden klient vykonať (0: neobmedzene)",
"blocking_ipv4_desc": "IP adresa, ktorá sa má vrátiť v prípade blokovanej žiadosti A",
"blocking_ipv6_desc": "IP adresa, ktorá sa má vrátiť v prípade blokovanej žiadosti AAAA",
"blocking_mode_default": "Predvolená hodnota: Odpovedať pomocou NXDOMAIN, ak je blokovaný pravidlom v štýle Adblock; odpovedať pomocou IP adresy určenej v pravidle, ak je blokovaná pravidlom v štýle /etc/hosts",
"blocking_mode_nxdomain": "NXDOMAIN: Odpovedať kódom NXDOMAIN",
"blocking_mode_null_ip": "Null IP: Odpoveď s nulovou IP adresou (0.0.0.0 pre A; :: pre AAAA)",
"blocking_mode_custom_ip": "Vlastná IP adresa: Odpovedzte s manuálne nastavenou IP adresou",
"upstream_dns_client_desc": "Ak ponecháte toto pole prázdne, AdGuard Home použije servery nakonfigurované v <0>nastaveniach DNS</0>.",
"tracker_source": "Zdroj sledovania",
"source_label": "Zdroj",
"found_in_known_domain_db": "Nájdené v databáze známych domén.",
"category_label": "Kategória",
"rule_label": "Pravidlo",
"list_label": "Zoznam",
"unknown_filter": "Neznámy filter {{filterId}}",
"known_tracker": "Známy sledovač",
"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_settings_title": "Administrátorské webové rozhranie",
"install_settings_listen": "Sieťové rozhranie",
"install_settings_port": "Port",
"install_settings_interface_link": "Vaše administrátorské webové rozhranie AdGuard Home bude k dispozícii na týchto adresách:",
"form_error_port": "Zadajte platné číslo portu",
"install_settings_dns": "DNS server",
"install_settings_dns_desc": "Budete musieť konfigurovať Vaše zariadenia alebo smerovač, aby používali DNS server na nasledujúcich adresách:",
"install_settings_all_interfaces": "Všetky rozhrania",
"install_auth_title": "Overenie identity",
"install_auth_desc": "Odporúčame Vám nakonfigurovať na administrátorskom webovom rozhraní AdGuard Home overenie Vašej identity heslom. Aj keď je prístupné iba vo Vašej lokálnej sieti, je stále dôležité chrániť ho pred neobmedzeným prístupom.",
"install_auth_username": "Meno používateľa",
"install_auth_password": "Heslo",
"install_auth_confirm": "Potvrdenie hesla",
"install_auth_username_enter": "Zadajte meno používateľa",
"install_auth_password_enter": "Zadajte heslo",
"install_step": "Krok",
"install_devices_title": "Konfigurujte Vaše zariadenia",
"install_devices_desc": "Ak chcete začať používať službu AdGuard Home, musíte najskôr nakonfigurovať Vaše zariadenia.",
"install_submit_title": "Gratulujeme!",
"install_submit_desc": "Proces nastavenia je dokončený a ste pripravený začať používať službu AdGuard Home.",
"install_devices_router": "Smerovač",
"install_devices_router_desc": "Toto nastavenie automaticky pokryje všetky zariadenia pripojené k Vášmu domácemu smerovaču a nebudete ich musieť konfigurovať manuálne.",
"install_devices_address": "DNS server AdGuard Home používa nasledujúce adresy",
"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_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 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_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_4": "Zvoľte aktívne pripojený adaptér a pravým klikom otvorte Vlastnosti",
"install_devices_windows_list_5": "Vyhľadajte položku Protokol TCP/IPv4, zvoľte ju a dvojklikom otvorte jej vlastnosti.",
"install_devices_windows_list_6": "Zvoľte Použiť tieto adresy serverov DNS a zadajte adresy Vašich AdGuard Home serverov.",
"install_devices_macos_list_1": "Kliknite na ikonu Apple a prejdite na položku Systémové predvoľby.",
"install_devices_macos_list_2": "Kliknite na Sieť.",
"install_devices_macos_list_3": "Zvoľte prvé pripojenie vo Vašom zozname a kliknite na Pokročilé.",
"install_devices_macos_list_4": "Vyberte kartu DNS a zadajte adresy Vašich AdGuard Home serverov.",
"install_devices_android_list_1": "Na domovskej obrazovke ponuky Android klepnite na Nastavenia.",
"install_devices_android_list_2": "V ponuke klepnite na položku Wi-Fi. Zobrazí sa obrazovka so zoznamom všetkých dostupných sietí (nie je možné nastaviť vlastný DNS pre mobilné pripojenie).",
"install_devices_android_list_3": "Dlho stlačte sieť, ku ktorej ste pripojení, a klepnite na Modifikovať sieť.",
"install_devices_android_list_4": "Na niektorých zariadeniach možno budete musieť skontrolovať pole Pokročilé a zobraziť ďalšie nastavenia. Ak chcete upraviť nastavenia DNS systému Android, budete musieť prepnúť nastavenia IP z DHCP na Statické.",
"install_devices_android_list_5": "Zmeňte nastavené hodnoty DNS 1 a DNS 2 na adresy serverov AdGuard Home.",
"install_devices_ios_list_1": "Na domácej obrazovke ťuknite na položku Nastavenia.",
"install_devices_ios_list_2": "V ľavej ponuke vyberte Wi-Fi (nie je možné nakonfigurovať DNS pre mobilné siete).",
"install_devices_ios_list_3": "Klepnite na meno aktuálne aktívnej siete.",
"install_devices_ios_list_4": "Do poľa DNS zadajte adresy Vašich AdGuard Home serverov.",
"get_started": "Začíname",
"next": "Ďalej",
"open_dashboard": "Otvoriť riadiaci panel",
"install_saved": "Úspešne uložené",
"encryption_title": "Šifrovanie",
"encryption_desc": "Podpora šifrovania (HTTPS/TLS) pre webové rozhranie DNS aj administrátora",
"encryption_config_saved": "Konfigurácia šifrovania uložená",
"encryption_server": "Meno servera",
"encryption_server_enter": "Zadajte meno Vašej domény",
"encryption_server_desc": "Ak chcete používať HTTPS, musíte zadať meno servera, ktoré zodpovedá Vášmu SSL certifikátu.",
"encryption_redirect": "Automaticky presmerovať na HTTPS",
"encryption_redirect_desc": "Ak je táto možnosť začiarknutá, služba AdGuard Home Vás automaticky presmeruje z adresy HTTP na adresy HTTPS.",
"encryption_https": "HTTPS port",
"encryption_https_desc": "Ak je nakonfigurovaný HTTPS port, AdGuard Home administrátorské rozhranie bude prístupné cez HTTPS a bude tiež poskytovať DNS-cez-HTTPS na '/dns-query'.",
"encryption_dot": "Port DNS-cez-TLS",
"encryption_dot_desc": "Ak je tento port nakonfigurovaný, AdGuard Home bude na tomto porte spúšťať DNS-cez-TLS server.",
"encryption_certificates": "Certifikáty",
"encryption_certificates_desc": "Ak chcete používať šifrovanie, musíte pre svoju doménu poskytnúť platný reťazec certifikátov SSL. Certifikát môžete získať bezplatne na adrese <0>{{link}}</0> alebo si ho môžete kúpiť od jedného z dôveryhodných certifikačných orgánov.",
"encryption_certificates_input": "Skopírujte alebo prilepte sem certifikáty vo formáte PEM.",
"encryption_status": "Stav",
"encryption_expire": "Vyprší",
"encryption_key": "Súkromný kľúč",
"encryption_key_input": "Skopírujte a prilepte sem svoj súkromný kľúč vo formáte PEM pre Váš certifikát.",
"encryption_enable": "Zapnite šifrovanie (HTTPS, DNS-cez-HTTPS a DNS-cez-TLS)",
"encryption_enable_desc": "Ak je šifrovanie zapnuté, AdGuard Home administrátorské rozhranie bude pracovať cez HTTPS a DNS server bude počúvať požiadavky cez DNS-cez-HTTPS a DNS-cez-TLS.",
"encryption_chain_valid": "Certifikačný reťazec je platný",
"encryption_chain_invalid": "Certifikačný reťazec je neplatný",
"encryption_key_valid": "Toto je platný {{type}} súkromný kľúč",
"encryption_key_invalid": "Toto je neplatný {{type}} súkromný kľúč",
"encryption_subject": "Predmet",
"encryption_issuer": "Vydavateľ",
"encryption_hostnames": "Názvy hostiteľov",
"encryption_reset": "Naozaj chcete obnoviť nastavenia šifrovania?",
"topline_expiring_certificate": "Váš SSL certifikát čoskoro vyprší. Aktualizujte <0>Nastavenia šifrovania</0>.",
"topline_expired_certificate": "Váš SSL certifikát vypršal. Aktualizujte <0>Nastavenia šifrovania</0>.",
"form_error_port_range": "Zadajte číslo portu v rozsahu 80-65535",
"form_error_port_unsafe": "Toto nie je bezpečný port",
"form_error_equal": "Nemala by byť rovnaká",
"form_error_password": "Heslo sa nezhoduje",
"reset_settings": "Obnoviť nastavenia",
"update_announcement": "AdGuard Home {{version}} je teraz k dispozícii! <0>Viac informácií nájdete tu</0>.",
"setup_guide": "Sprievodca nastavením",
"dns_addresses": "DNS adresy",
"dns_start": "Spúšťa sa DNS server",
"dns_status_error": "Chyba pri zisťovaní stavu DNS servera",
"down": "Nadol",
"fix": "Opraviť",
"dns_providers": "Tu je <0>zoznam známych poskytovateľov DNS</0>, z ktorého si vyberiete.",
"update_now": "Aktualizovať teraz",
"update_failed": "Automatická aktualizácia zlyhala. Prosím <a href='https://github.com/AdguardTeam/AdGuardHome/wiki/Getting-Started#update'>sledujte postup</a> pre manuálnu aktualizáciu.",
"processing_update": "Čakajte prosím, AdGuard Home sa aktualizuje",
"clients_title": "Klienti",
"clients_desc": "Konfigurácia zariadení pripojených k AdGuard Home",
"settings_global": "Globálne",
"settings_custom": "Vlastné",
"table_client": "Klient",
"table_name": "Meno",
"save_btn": "Uložiť",
"client_add": "Pridať klienta",
"client_new": "Nový klient",
"client_edit": "Upraviť klienta",
"client_identifier": "Identifikátor",
"ip_address": "IP adresa",
"client_identifier_desc": "Klienti môžu byť identifikovaní podľa IP adresy, CIDR alebo MAC adresy. Upozorňujeme, že používanie MAC ako identifikátora je možné len vtedy, ak je AdGuard Home tiež <0>DHCP server</0>",
"form_enter_ip": "Zadajte IP adresu",
"form_enter_mac": "Zadajte MAC adresu",
"form_enter_id": "Zadajte identifikátor",
"form_add_id": "Pridajte identifikátor",
"form_client_name": "Zadajte meno klienta",
"name": "Meno",
"client_global_settings": "Použiť globálne nastavenia",
"client_deleted": "\"{{key}}\" klienta bol úspešne vymazaný",
"client_added": "\"{{key}}\" klienta bol úspešne pridaný",
"client_updated": "\"{{key}}\" klienta bol úspešne aktualizovaný",
"clients_not_found": "Nebol nájdený žiaden klient",
"client_confirm_delete": "Naozaj chcete vymazať \"{{key}}\" klienta?",
"list_confirm_delete": "Naozaj chcete vymazať tento zoznam?",
"auto_clients_title": "Klienti (runtime)",
"auto_clients_desc": "Údaje o klientoch, ktorí používajú AdGuard Home, ale nie sú uložení v konfigurácii",
"access_title": "Nastavenia prístupu",
"access_desc": "Tu môžete konfigurovať pravidlá prístupu pre server DNS AdGuard Home.",
"access_allowed_title": "Povolení klienti",
"access_allowed_desc": "Zoznam CIDR alebo IP adries. Ak je nakonfigurovaný, AdGuard Home akceptuje len dopyty z týchto IP adries",
"access_disallowed_title": "Nepovolení klienti",
"access_disallowed_desc": "Zoznam CIDR alebo IP adries. Ak je nakonfigurovaný, AdGuard Home bude ignorovať dopyty z týchto IP adries",
"access_blocked_title": "Nepovolené domény",
"access_blocked_desc": "Nezamieňajte si to s filtrami. Domovská stránka AdGuard zruší DNS dopyty obsahujúce tieto domény. Tu môžete zadať presné názvy domén, zástupné znaky a pravidlá URL adries, napr. 'example.org', '*.example.org' alebo '|| example.org ^'.",
"access_settings_saved": "Nastavenia prístupu úspešne uložené",
"updates_checked": "Aktualizácie úspešne skontrolované",
"updates_version_equal": "AdGuard Home je aktuálny",
"check_updates_now": "Skontrolovať aktualizácie teraz",
"dns_privacy": "DNS súkromie",
"setup_dns_privacy_1": "<0>DNS-over-TLS:</0> Použiť <1>{{address}}</1> reťazec.",
"setup_dns_privacy_2": "<0>DNS-over-HTTPS:</0> Použiť <1>{{address}}</1> reťazec.",
"setup_dns_privacy_3": "<0>Upozorňujeme, že šifrované protokoly DNS sú podporované iba v systéme Android 9. Preto je potrebné nainštalovať ďalší softvér pre iné operačné systémy.</0><0>Tu je zoznam softvéru, ktorý môžete používať.</0>",
"setup_dns_privacy_android_1": "Android 9 podporuje DNS-over-TLS natívne. Ak ho chcete konfigurovať, prejdite na Nastavenia → Sieť a internet → Pokročilé → Súkromné DNS a zadajte tam meno Vašej domény.",
"setup_dns_privacy_android_2": "<0>AdGuard pre Android</0> podporuje <1>DNS-over-HTTPS</1> a <1>DNS-over-TLS</1>.",
"setup_dns_privacy_android_3": "<0>Intra</0> pridáva <1>DNS-over-HTTPS</1> podporu pre Android.",
"setup_dns_privacy_ios_1": "<0>DNSCloak</0> podporuje funkciu <1>DNS-over-HTTPS</1>, ale aby ste ju mohli nakonfigurovať na používanie vlastného servera, musíte kvôli tomu vygenerovať značku <2>DNS Stamp</2>.",
"setup_dns_privacy_ios_2": "<0>AdGuard pre iOS</0> podporuje <1>DNS-over-HTTPS</1> a <1>DNS-over-TLS</1> nastavenie.",
"setup_dns_privacy_other_title": "Ostatné implementácie",
"setup_dns_privacy_other_1": "Samotný AdGuard Home môže byť bezpečným DNS klientom na ľubovoľnej platforme.",
"setup_dns_privacy_other_2": "<0>dnsproxy</0> podporuje všetky známe bezpečné DNS protokoly.",
"setup_dns_privacy_other_3": "<0>dnscrypt-proxy</0> podporuje <1>DNS-over-HTTPS</1>.",
"setup_dns_privacy_other_4": "<0>Mozilla Firefox</0> podporuje <1>DNS-over-HTTPS</1>.",
"setup_dns_privacy_other_5": "Viac implementácií nájdete <0>tu</0> a <1>tu</1>.",
"setup_dns_notice": "Pre použitie <1>DNS-over-HTTPS</1> alebo <1>DNS-over-TLS</1>, potrebujete v nastaveniach AdGuard Home <0>nakonfigurovať šifrovanie</0>.",
"rewrite_added": "DNS prepísanie pre \"{{key}}\" bolo úspešne pridané",
"rewrite_deleted": "DNS prepísanie pre \"{{key}}\" bolo úspešne vymazané",
"rewrite_add": "Pridať DNS prepísanie",
"rewrite_not_found": "Neboli nájdené žiadne DNS prepísania",
"rewrite_confirm_delete": "Naozaj chcete odstrániť prepísanie DNS pre \"{{key}}\"?",
"rewrite_desc": "Umožňuje ľahko nakonfigurovať vlastnú odpoveď DNS pre konkrétne meno domény.",
"rewrite_applied": "Použilo sa pravidlo prepisovania",
"rewrite_hosts_applied": "Prepísané pravidlom súboru hostiteľov",
"dns_rewrites": "DNS prepisovanie",
"form_domain": "Zadajte meno domény alebo zástupný znak",
"form_answer": "Zadajte IP adresu alebo meno domény",
"form_error_domain_format": "Neplatný formát domény",
"form_error_answer_format": "Neplatný formát odpovede",
"configure": "Konfigurovať",
"main_settings": "Hlavné nastavenia",
"block_services": "Blokovať vybrané služby",
"blocked_services": "Blokované služby",
"blocked_services_desc": "Umožňuje rýchlo blokovať populárne stránky a služby.",
"blocked_services_saved": "Blokované služby boli úspešne uložené",
"blocked_services_global": "Použite globálne blokované služby",
"blocked_service": "Blokované služby",
"block_all": "Blokovať všetko",
"unblock_all": "Odblokovať všetko",
"encryption_certificate_path": "Cesta k certifikátu",
"encryption_private_key_path": "Cesta k súkromného kľúču",
"encryption_certificates_source_path": "Nastavte cestu k súboru s certifikátom",
"encryption_certificates_source_content": "Vložte obsah certifikátu",
"encryption_key_source_path": "Nastaviť súbor s privátnym kľúčom",
"encryption_key_source_content": "Vložte obsah privátneho kľúča",
"stats_params": "Konfigurácia štatistiky",
"config_successfully_saved": "Konfigurácia bola úspešne uložená",
"interval_24_hour": "24 hodín",
"interval_days": "{{count}} deň",
"interval_days_plural": "{{count}} dní",
"domain": "Doména",
"answer": "Odpoveď",
"filter_added_successfully": "Filter bol úspešne pridaný",
"filter_removed_successfully": "Zoznam bol úspešne odstránený",
"filter_updated": "Filter bol úspešne aktualizovaný",
"statistics_configuration": "Konfigurácia štatistiky",
"statistics_retention": "Štatistika za obdobie",
"statistics_retention_desc": "Ak znížite hodnotu intervalu, niektoré údaje sa stratia",
"statistics_clear": " Vynulovať štatistiku",
"statistics_clear_confirm": "Naozaj chcete vynulovať štatistiku?",
"statistics_retention_confirm": "Naozaj chcete zmeniť uchovávanie štatistík? Ak znížite hodnotu intervalu, niektoré údaje sa stratia",
"statistics_cleared": "Štatistika bola úspešne vynulovaná",
"interval_hours": "{{count}} hodina",
"interval_hours_plural": "{{count}} hodín",
"filters_configuration": "Konfigurácia filtrov",
"filters_enable": "Zapnúť filtre",
"filters_interval": "Interval aktualizácie filtrov",
"disabled": "Vypnuté",
"username_label": "Meno používateľa",
"username_placeholder": "Zadajte meno používateľa",
"password_label": "Heslo",
"password_placeholder": "Zadajte heslo",
"sign_in": "Prihlásiť sa",
"sign_out": "Odhlásiť sa",
"forgot_password": "Zabudnuté heslo?",
"forgot_password_desc": "Postupujte podľa <0>týchto krokov</0> a vytvorte nové heslo pre svoj používateľský účet.",
"location": "Poloha",
"orgname": "Meno organizácie",
"netname": "Meno siete",
"network": "Sieť",
"descr": "Popis",
"whois": "Whois",
"filtering_rules_learn_more": "<0>Dozvedieť sa viac</0> o tvorbe vlastných zoznamov hostiteľov.",
"blocked_by_response": "Blokované pomocou CNAME alebo IP v odpovedi",
"blocked_by_cname_or_ip": "Zablokované na základe CNAME alebo IP",
"try_again": "Skúste znova",
"domain_desc": "Zadajte meno domény alebo zástupný znak, ktorý chcete prepísať.",
"example_rewrite_domain": "prepísať odpovede iba pre toto meno domény.",
"example_rewrite_wildcard": "prepísať odpovede pre všetky subdomény <0>example.org</0>.",
"rewrite_ip_address": "IP adresa: použite túto IP v odpovedi A alebo AAAA",
"rewrite_domain_name": "Meno domény: pridajte záznam CNAME",
"rewrite_A": "<0>A</0>: špeciálna hodnota, uchovávajte záznamy <0>A</0> z upstream",
"rewrite_AAAA": "<0>AAAA</0>: špeciálna hodnota, uchovávajte záznamy <0>AAAA</0> z upstream",
"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é.",
"fastest_addr": "Najrýchlejšia IP adresa",
"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_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.",
"tags_title": "Tagy",
"tags_desc": "Môžete vybrať tagy ktoré zodpovedajú klientovi. Tagy môžu byť súčasťou filtračných pravidiel a umožňujú Vám použiť ich presnejšie. <0>Viac informácií</0>",
"form_select_tags": "Zvoľte tagy klienta",
"check_title": "Skontrolujte filtráciu",
"check_desc": "Skontrolujte, či je názov hostiteľa filtrovaný",
"check": "Kontrola",
"form_enter_host": "Zadajte meno hostiteľa",
"filtered_custom_rules": "Filtrované podľa vlastných filtračných pravidiel",
"choose_from_list": "Vybrať zo zoznamu",
"add_custom_list": "Pridať vlastný zoznam",
"host_whitelisted": "Hostiteľ je na bielej listine",
"check_ip": "IP adresy: {{ip}}",
"check_cname": "CNAME: {{cname}}",
"check_reason": "Dôvod: {{reason}}",
"check_rule": "Pravidlo: {{rule}}",
"check_service": "Meno služby: {{service}}",
"check_not_found": "Nenašlo sa vo Vašom zozname filtrov",
"client_confirm_block": "Naozaj chcete zablokovať klienta \"{{ip}}\"?",
"client_confirm_unblock": "Naozaj chcete odblokovať klienta \"{{ip}}\"?",
"client_blocked": "Klient \"{{ip}}\" úspešne zablokovaný",
"client_unblocked": "Klient \"{{ip}}\" úspešne odblokovaný",
"static_ip": "Statická IP adresa",
"static_ip_desc": "AdGuard Home je server, takže na správne fungovanie potrebuje statickú IP adresu. V opačnom prípade môže smerovač tomuto zariadeniu prideliť inú IP adresu.",
"set_static_ip": "Nastaviť statickú IP adresu",
"install_static_ok": "Dobré správy! Statická IP adresa je už nakonfigurovaná",
"install_static_error": "AdGuard Home ho nemôže automaticky nakonfigurovať pre toto sieťové rozhranie. Vyhľadajte návod, ako to urobiť manuálne.",
"install_static_configure": "Zistili sme, že sa používa dynamická IP adresa — <0>{{ip}}</0>. Chcete ju použiť ako svoju statickú adresu?",
"confirm_static_ip": "AdGuard Home nakonfiguruje {{ip}} ako statickú IP adresu. Chcete pokračovať?",
"list_updated": "{{count}} zoznam aktualizovaný",
"list_updated_plural": "{{count}} zoznamov aktualizovaných",
"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)",
"validated_with_dnssec": "Overené pomocou DNSSEC",
"all_queries": "Všetky dopyty",
"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",
"cache_size": "Veľkosť cache",
"cache_size_desc": "Veľkosť DNS cache (v bajtoch)",
"cache_ttl_min_override": "Prepísať minimálne TTL",
"cache_ttl_max_override": "Prepísať maximálne TTL",
"enter_cache_size": "Zadať veľkosť cache",
"enter_cache_ttl_min_override": "Zadať minimálne TTL",
"enter_cache_ttl_max_override": "Zadať maximálne TTL",
"cache_ttl_min_override_desc": "Prepíše hodnotu TTL (minimálnu) prijatú z upstream servera. Táto hodnota nemôže byť väčšia ako 3600 (1 hodina)",
"cache_ttl_max_override_desc": "Prepíše hodnotu TTL (maximálnu) prijatú z upstream servera",
"min_exceeds_max_value": "Minimálna hodnota je väčšia ako maximálna",
"value_not_larger_than": "Hodnota nemôže byť väčšia ako {{maximum}}",
"filter_category_general": "Všeobecné",
"filter_category_security": "Bezpečnosť",
"filter_category_regional": "Regionálne",
"filter_category_other": "Iné",
"filter_category_general_desc": "Zoznamy, ktoré blokujú sledovanie a reklamu na väčšine zariadení",
"filter_category_security_desc": "Zoznamy, ktoré sa špecializujú na blokovanie domén škodlivého softvéru alebo podvodov",
"filter_category_regional_desc": "Zoznamy zamerané na regionálne reklamy a sledovacie servery",
"filter_category_other_desc": "Iné blokovacie zoznamy",
"original_response": "Pôvodná odozva",
"click_to_view_queries": "Kliknite pre zobrazenie dopytov"
}

View File

@@ -0,0 +1,567 @@
{
"client_settings": "Nastavitve odjemalca",
"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",
"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_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",
"save_config": "Shrani konfiguracijo",
"enabled_dhcp": "Strežnik DHCP je omogočen",
"disabled_dhcp": "Strežnik DHCP je onemogočen",
"dhcp_title": "Strežnik DHCP (poskusno!)",
"dhcp_description": "Če vaš usmerjevalnik ne nudi nastavitev DHCP, lahko uporabite AdGuardov vgrajen DHCP strežnik.",
"dhcp_enable": "Omogoči strežnik DHCP",
"dhcp_disable": "Onemogoči strežnik DHCP",
"dhcp_not_found": "Vgrajeni DHCP strežnik lahko varno vklopite - v omrežju nismo našli nobenih aktivnih strežnikov DHCP. Priporočamo, da ga znova ročno preverite, saj samodejni preizkus trenutno ne zagotavlja 100% garancije.",
"dhcp_found": "V omrežju je bil najden aktivni DHCP strežnik. Vgrajenega AdGuardovega DHCP strežnika ni varno vključiti.",
"dhcp_leases": "Najemi DHCP",
"dhcp_static_leases": "DHCP statični najemi",
"dhcp_leases_not_found": "Ni najdenih najemov DHCP",
"dhcp_config_saved": "Shranjena konfiguracija DHCP strežnika",
"form_error_required": "Zahtevano polje",
"form_error_ip4_format": "Neveljaven format IPv4",
"form_error_ip6_format": "Neveljaven format IPv6",
"form_error_ip_format": "Neveljaven format IP",
"form_error_mac_format": "Neveljaven MAC format",
"form_error_client_id_format": "Neveljaven format ID odjemalca",
"form_error_positive": "Mora biti večja od 0",
"form_error_negative": "Mora biti enako ali več kot 0",
"dhcp_form_gateway_input": "IP prehoda",
"dhcp_form_subnet_input": "Maska podomrežja",
"dhcp_form_range_title": "Razpon naslovov IP",
"dhcp_form_range_start": "Začetek razpona",
"dhcp_form_range_end": "Konec razpona",
"dhcp_form_lease_title": "Čas najema DHCP (v sekundah)",
"dhcp_form_lease_input": "Trajanje najema",
"dhcp_interface_select": "Izberite DHCP vmesnik",
"dhcp_hardware_address": "Naslov strojne opreme",
"dhcp_ip_addresses": "IP naslovi",
"ip": "IP",
"dhcp_table_hostname": "Ime gostitelja",
"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_error": "Ni mogoče ugotoviti, ali je v omrežju še en strežnik DHCP.",
"dhcp_static_ip_error": "Za uporabo strežnika DHCP, morate nastaviti statični naslov IP. Ni bilo mogoče ugotoviti, ali je ta omrežni vmesnik konfiguriran s statičnim naslovom IP. Ročno nastavite statični naslov IP.",
"dhcp_dynamic_ip_found": "Vaš sistem uporablja dinamično konfiguracijo IP-naslova za vmesnik <0>{{interfaceName}}</0>. Za uporabo DHCP strežnika mora biti nastavljen statični naslov IP. Vaš trenutni naslov IP je <0>{{ipAddress}}</0>. Ta IP naslov bomo samodejno nastavili kot statični, če pritisnete na gumb 'Omogoči DHCP'.",
"dhcp_lease_added": "Statičen najem \"{{key}}\" je uspešno dodan",
"dhcp_lease_deleted": "Statičen najem \"{{key}}\" je uspešno izbrisan",
"dhcp_new_static_lease": "Nov statični najem",
"dhcp_static_leases_not_found": "Ni najdenih statičnih najemov DHCP",
"dhcp_add_static_lease": "Dodaj statičen najem",
"dhcp_reset": "Ali ste prepričani, da želite ponastaviti konfiguracijo DHCP?",
"country": "Dežela",
"city": "Mesto",
"delete_confirm": "Ali ste prepričani, da želite izbrisati \"{{key}}\"?",
"form_enter_hostname": "Vnesite ime gostitelja",
"error_details": "Podrobnosti o napaki",
"response_details": "Podrobnosti o odzivu",
"request_details": "Podrobnosti o zahtevi",
"client_details": "Podatki o odjemalcu",
"details": "Podrobnosti",
"back": "Nazaj",
"dashboard": "Nadzorna plošča",
"settings": "Nastavitve",
"filters": "Filtri",
"filter": "Filtriraj",
"query_log": "Dnevnik poizvedb",
"compact": "Stisni",
"nothing_found": "Nič ni bilo najdeno",
"faq": "Pogosta vprašanja in odgovori (FAQ)",
"version": "različica",
"address": "Naslov",
"protocol": "Protokol",
"on": "VKL",
"off": "IZK",
"copyright": "Avtorske pravice",
"homepage": "Domača stran",
"report_an_issue": "Prijavi težavo",
"privacy_policy": "Politika zasebnosti",
"enable_protection": "Omogoči zaščito",
"enabled_protection": "Zaščita je omogočena",
"disable_protection": "Onemogoči zaščito",
"disabled_protection": "Zaščita je onemogočena",
"refresh_statics": "Osveži statistiko",
"dns_query": "Poizvedbe DNS",
"blocked_by": "<0>Onemogočeno s filtri</0>",
"stats_malware_phishing": "Onemogočeno zlonamernih programov/lažnih predstavljanj",
"stats_adult": "Onemogočeno spletnih strani za odrasle",
"stats_query_domain": "Najbolj poizvedovane domene",
"for_last_24_hours": "v zadnjih 24 urah",
"for_last_days": "zadnjega {{count}} dne",
"for_last_days_plural": "zadnjih {{count}} dni",
"no_domains_found": "Ni najdenih domen",
"requests_count": "Štavilo zahtev",
"top_blocked_domains": "Najbolj zavirane domene",
"top_clients": "Najpogostejši odjemalci",
"no_clients_found": "Ni najdenih odjemalcev",
"general_statistics": "Splošna statistika",
"number_of_dns_query_days": "Število poizvedb DNS, obdelanih zadnji {{count}} dan",
"number_of_dns_query_days_plural": "Število poizvedb DNS, obdelanih zadnjih {{count}} dni",
"number_of_dns_query_24_hours": "Število opravljenih DNS poizvedb v zadnjih 24 urah",
"number_of_dns_query_blocked_24_hours": "Število onemogočenih zahtev DNS s filtri oglasov, in seznami zaviranja gostiteljev",
"number_of_dns_query_blocked_24_hours_by_sec": "Število onemogočenih zahtev DNS z AdGuardovim modulom varnosti brskanja",
"number_of_dns_query_blocked_24_hours_adult": "Število onemogočenih spletnih strani za odrasle",
"enforced_save_search": "Prisilno varno iskanje",
"number_of_dns_query_to_safe_search": "Število zahtev DNS za iskalnike, ki jim je bilo vsiljeno varno iskanje",
"average_processing_time": "Povprečni čas obdelave",
"average_processing_time_hint": "Povprečni čas v milisekundah pri obdelavi zahteve DNS",
"block_domain_use_filters_and_hosts": "Onemogoči domene s filtri in gostiteljskimi datotekami",
"filters_block_toggle_hint": "Pravila zaviranja lahko nastavite v nastavitvah <a href='#filters'>Filtri</a>.",
"use_adguard_browsing_sec": "Uporabi AdGuardovo spletno storitev 'Varnost brskanja'",
"use_adguard_browsing_sec_hint": "AdGuard Home bo preveril s spletno storitivijo 'Varnost brskanja', ali je domena na seznamu nedovoljenih. Za preverjanje bo uporabila za zasebnost prijazno API povezavo: strežniku se pošlje le kratka predpona imena domene SHA256 hash.",
"use_adguard_parental": "Uporabi AdGuardovo spletno storitev 'Starševski nadzor'",
"use_adguard_parental_hint": "AdGuard Home bo preveril, če domena vsebuje vsebine za odrasle. Uporablja enako, za zasebnost prijazen API, kot spletno storitev za varnost brskanja.",
"enforce_safe_search": "Vsili varno iskanje",
"enforce_save_search_hint": "AdGuard Home lahko uveljavi varno iskanje v naslednjih iskalnikih: Google, Youtube, Bing, DuckDuckGo, Yandex, Pixabay.",
"no_servers_specified": "Ni določenih strežnikov",
"general_settings": "Splošne nastavitve",
"dns_settings": "Nastavitve DNS",
"dns_blocklists": "Seznam nedovoljenih DNS",
"dns_allowlists": "Seznam dovoljenih DNS",
"dns_blocklists_desc": "AdGuard Home bo onemogočil domene, ki ustrezajo seznamom.",
"dns_allowlists_desc": "Domene i dovoljenih seznamov DNS bodo dovoljene, tudi če so na katerem koli od seznamov nedovoljenih.",
"custom_filtering_rules": "Pravila filtriranja po meri",
"encryption_settings": "Nastavitve šifriranja",
"dhcp_settings": "Nastavitve DHCP",
"upstream_dns": "Zagonski DNS strežniki",
"upstream_dns_hint": "Če pustite to polje prazno, bo AdGuard Home uporabil <a href='https://www.quad9.net/' target='_blank'>Quad9</a> kot tok navzgor.",
"test_upstream_btn": "Preizkusi upstreame",
"upstreams": "Tokovi navzgor",
"apply_btn": "Uporabi",
"disabled_filtering_toast": "Onemogočeno filtriranje",
"enabled_filtering_toast": "Omogočeno filtriranje",
"disabled_safe_browsing_toast": "Onemogočeno varno brskanje",
"enabled_safe_browsing_toast": "Omogočeno varno brskanje",
"disabled_parental_toast": "Onemogočen starševski nadzor",
"enabled_parental_toast": "Omogočen starševski nadzor",
"disabled_safe_search_toast": "Onemogočeno varno iskanje",
"enabled_save_search_toast": "Omogočeno varno iskanje",
"enabled_table_header": "Omogočeno",
"name_table_header": "Ime",
"list_url_table_header": "Seznam URL naslovov",
"rules_count_table_header": "Število pravil",
"last_time_updated_table_header": "Zadnjič posodobljeno",
"actions_table_header": "Akcij",
"request_table_header": "Zahteva",
"edit_table_action": "Uredi",
"delete_table_action": "Izbriši",
"elapsed": "Potekla",
"filters_and_hosts_hint": "AdGuard Home razume osnovna pravila zaviranja oglasov in sintakso datotek gostiteljev.",
"no_blocklist_added": "Ni dodanih nobenih seznamov nedovoljenih",
"no_whitelist_added": "Ni dodanih nobenih dovoljenih seznamov",
"add_blocklist": "Dodaj seznam nedovoljenih",
"add_allowlist": "Dodaj seznam dovoljenih",
"cancel_btn": "Prekliči",
"enter_name_hint": "Vnesite ime",
"enter_url_or_path_hint": "Vnesite URL ali absolutno pot seznama",
"check_updates_btn": "Preveri obstoj posodobitev",
"new_blocklist": "Nov seznam nedovoljenih",
"new_allowlist": "Nov seznam dovoljenih",
"edit_blocklist": "Uredi seznam nedovoljenih",
"edit_allowlist": "Uredi seznam dovoljenih",
"choose_blocklist": "Izberite sezname za zaviranje",
"choose_allowlist": "Izberite sezname dovoljenih",
"enter_valid_blocklist": "Vnesite veljaven URL naslov seznama nedovoljenih.",
"enter_valid_allowlist": "Vnesite veljaven URL naslov seznama dovoljenih.",
"form_error_url_format": "Neveljaven format URL naslova",
"form_error_url_or_path_format": "Neveljaven URL ali absolutna pot seznama",
"custom_filter_rules": "Pravila filtriranja po meri",
"custom_filter_rules_hint": "V vrstico vnesite eno pravilo. Uporabite lahko pravila zaviranja oglasov ali sintakso gostiteljskih datotek.",
"examples_title": "Primeri",
"example_meaning_filter_block": "onemogoči dostop do domene example.org in vseh njenih poddomen",
"example_meaning_filter_whitelist": "omogoči dostop do domene example.org in vseh njenih poddomen",
"example_meaning_host_block": "AdGuard Home bo zdaj vrnil naslov 127.0.0.1 za domeno example.org (ne pa tudi njunih poddomen).",
"example_comment": "! Tukaj je komentar",
"example_comment_meaning": "samo komentar",
"example_comment_hash": "# Tudi komentar",
"example_regex_meaning": "onemogoča dostop do domen, ki se ujemajo z določenim regularnim izrazom",
"example_upstream_regular": "redni DNS (nad UDP)",
"example_upstream_dot": "šifriran <0>DNS-prek-TLS</0>",
"example_upstream_doh": "šifriran <0>DNS-prek-HTTPS</0>",
"example_upstream_sdns": "lahko uporabite <0>DNS Žige</0> za reševalce <1>DNSCrypt</1> ali <2>DNS-prek-HTTPS</2>",
"example_upstream_tcp": "redni DNS (nad TCP)",
"all_lists_up_to_date_toast": "Vsi seznami so že posodobljeni",
"updated_upstream_dns_toast": "Posodobljeni Zagonske strežnike DNS",
"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",
"unblock": "Omogoči",
"block": "Onemogoči",
"time_table_header": "Čas",
"date": "Datum",
"domain_name_table_header": "Ime domene",
"domain_or_client": "Domena ali odjemalec",
"type_table_header": "Vrsta",
"response_table_header": "Odgovor",
"response_code": "Koda odziva",
"client_table_header": "Odjemalec",
"empty_response_status": "Prazno",
"show_all_filter_type": "Prikaži vse",
"show_filtered_type": "Prikaži filtrirane",
"no_logs_found": "Ni najdenih dnevnikov",
"refresh_btn": "Osveži",
"previous_btn": "Prejšnja",
"next_btn": "Naslednja",
"loading_table_status": "Nalaganje...",
"page_table_footer_text": "Stran",
"rows_table_footer_text": "vrstic",
"updated_custom_filtering_toast": "Posodobljena pravila filtriranja po meri",
"rule_removed_from_custom_filtering_toast": "Pravilo je odstranjeno iz pravil filtriranja po meri",
"rule_added_to_custom_filtering_toast": "Pravilo je dodano pravilom filtriranja po meri",
"query_log_response_status": "Stanje: {{value}}",
"query_log_filtered": "Filtriran z {{filter}}",
"query_log_confirm_clear": "Ali ste prepričani, da želite počistiti celoten dnevnik poizvedb?",
"query_log_cleared": "Dnevnik poizvedb je uspešno izbrisan",
"query_log_updated": "Dnevnik poizvedb je bil uspešno posodobljen",
"query_log_clear": "Počisti dnevnike poizvedb",
"query_log_retention": "Zadrževanje dnevnikov poizvedb",
"query_log_enable": "Omogoči dnevni",
"query_log_configuration": "Konfiguracija dnevnikov",
"query_log_disabled": "Dnevnik poizvedb je onemogočen in ga je mogoče konfigurirati v <0>nastavitvah</0>",
"query_log_strict_search": "Za strogo iskanje uporabite dvojne narekovaje",
"query_log_retention_confirm": "Ali ste prepričani, da želite spremeniti zadrževanje dnevnika poizvedb? Če zmanjšate vrednost intervala, bodo nekateri podatki izgubljeni",
"anonymize_client_ip": "Anonimiziraj odjemalca IP",
"anonymize_client_ip_desc": "Ne shrani celotnega naslova IP odjemalca v dnevnikih in statistiki",
"dns_config": "Konfiguracija strežnika DNS",
"dns_cache_config": "Konfiguracija strežnika DNS",
"dns_cache_config_desc": "Tu lahko konfigurirate predpomnilnik DNS",
"blocking_mode": "Način zaviranja",
"default": "Privzeto",
"nxdomain": "NXDOMAIN",
"null_ip": "Prazen IP",
"custom_ip": "IP po meri",
"blocking_ipv4": "Onemogočanje IPv4",
"blocking_ipv6": "Onemogočanje IPv6",
"dns_over_https": "DNS-prek-HTTPS",
"dns_over_tls": "DNS-prek-TLS",
"plain_dns": "Navadni DNS",
"form_enter_rate_limit": "Vnesite omejitev hitrosti",
"rate_limit": "Omejitev hitrosti",
"edns_enable": "Omogoči podmrežje odjemalcev EDNS",
"edns_cs_desc": "Če je omogočeno, bo AdGuard Home pošiljal podmrežja odjemalca na strežnike DNS.",
"rate_limit_desc": "Število zahtev na sekundo, ki jih lahko pošlje posamezni odjemalec (0: neomejeno)",
"blocking_ipv4_desc": "IP naslov, ki mora biti vrnjen za onemogočeno zahtevo A",
"blocking_ipv6_desc": "IP naslov, ki mora biti vrnjen za onemogočeno zahtevo AAAA",
"blocking_mode_default": "Privzeto: odziv z NXDOMAIN, kadar je onemogočen s slogom pravila zaviranja oglasov; odziv z navedenim naslovom IP v pravilu, kadar je onemogočen s pravilom /etc/gostitelji",
"blocking_mode_nxdomain": "NXDOMAIN: Odziv s kodo NXDOMAIN",
"blocking_mode_null_ip": "Prazen IP: Odziv z ničelnim naslovom IP (0.0.0.0 za A; :: za AAAA)",
"blocking_mode_custom_ip": "IP po meri: Odziv z ročno nastavljenim naslovom IP",
"upstream_dns_client_desc": "Če pustite to polje prazno, bo AdGuard Home uporabil strežnike, konfigurirane v <0>nastavitvah DNS</0>.",
"tracker_source": "Vir sledilca",
"source_label": "Vir",
"found_in_known_domain_db": "Najdeno v zbirki podatkov znanih domen.",
"category_label": "Kategorija",
"rule_label": "Pravilo",
"list_label": "Seznam",
"unknown_filter": "Neznan filter {{filterId}}",
"known_tracker": "Znan sledilec",
"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_settings_title": "Skrbniški spletni vmesnik",
"install_settings_listen": "Poslušaj vmesnik",
"install_settings_port": "Vrata",
"install_settings_interface_link": "Vaš AdGuard Home Skrbniški spletni vmesnik bo na voljo na naslednjih naslovih:",
"form_error_port": "Vnesite veljavno vrednost vrat",
"install_settings_dns": "DNS strežnik",
"install_settings_dns_desc": "Vaše naprave ali usmerjevalnik boste morali konfigurirati za uporabo strežnika DNS na naslednjih naslovih:",
"install_settings_all_interfaces": "Vsi vmesniki",
"install_auth_title": "Preverjanje pristnosti",
"install_auth_desc": "Zelo priporočljivo je, da konfigurirate overovitev pristnosti gesla za vaš skrbniški spletni vmesnik AdGuard Home. Tudi če je dostopen v vašem lokalnem omrežju, je še vedno pomembno, da ga zaščitite pred neomejenim dostopom.",
"install_auth_username": "Uporabniško ime",
"install_auth_password": "Geslo",
"install_auth_confirm": "Potrdite geslo",
"install_auth_username_enter": "Vnesite uporabniško ime",
"install_auth_password_enter": "Vnesite geslo",
"install_step": "Korak",
"install_devices_title": "Konfigurirajte svoje naprave",
"install_devices_desc": "Če želite, da AdGuard Home začne delovati, morate konfigurirati vaše naprave, da jih bo uporabljal.",
"install_submit_title": "Čestitamo!",
"install_submit_desc": "Postopek namestitve je končan in pripravljeni ste začeti uporabljati AdGuard Home.",
"install_devices_router": "Usmerjevalnik",
"install_devices_router_desc": "Ta namestitev bo samodejno pokrila vse naprave, povezane z domačim usmerjevalnikom, zato vam jih ni treba ročno konfigurirati.",
"install_devices_address": "AdGuard Home strežnik DNS posluša naslednje naslove",
"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_3": "Tam vnesite svoje naslove strežnikov AdGuard Home.",
"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_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_4": "Izberite aktivno povezavo, kliknite na njo z desno miškino tipko in izberite 'Lastnosti'.",
"install_devices_windows_list_5": "Na seznamu poiščite različico 4 (TCP/IP) internetnega protokola, jo izberite in znova kliknite na 'Lastnosti'.",
"install_devices_windows_list_6": "Izberite 'Uporabi naslednje naslove DNS strežnikov' in vnesite vaše naslove strežnika AdGuard Home.",
"install_devices_macos_list_1": "Kliknite ikono Apple in pojdite na 'Nastavitve sistema'.",
"install_devices_macos_list_2": "Kliknite na 'Omrežje'",
"install_devices_macos_list_3": "Izberite prvo povezavo na seznamu in kliknite na 'Napredno'.",
"install_devices_macos_list_4": "Izberite zavihek DNS in vnesite vaše naslove AdGuard Home strežnika.",
"install_devices_android_list_1": "Na začetnem zaslonu menija Android tapnite 'Nastavitve'.",
"install_devices_android_list_2": "V meniju tapnite na 'Wi-Fi'. Prikazal se bo seznam vseh razpoložljivih omrežij (nemogoče je nastaviti DNS po meri za mobilno povezavo).",
"install_devices_android_list_3": "Dolgo pritisnite na omrežje, s katerim ste povezani, in tapnite 'Spremeni omrežje'.",
"install_devices_android_list_4": "Na nekaterih napravah boste morda morali potrditi polje 'Napredno', za prikaz dodatnih nastavitev. Če želite prilagoditi nastavitve DNS za Android, morate nastavitve IP preklopiti z DHCP na Statični.",
"install_devices_android_list_5": "Spremeni nastavitev vrednosti DNS 1 in DNS 2 na naslove strežnikov AdGuard Home.",
"install_devices_ios_list_1": "Na začetnem zaslonu izberite Nastavitve.",
"install_devices_ios_list_2": "V levem meniju izberite Wi-Fi (nemogoče je konfigurirati DNS za mobilna omrežja).",
"install_devices_ios_list_3": "Dotaknite se imena trenutno aktivnega omrežja.",
"install_devices_ios_list_4": "V polje DNS vnesite vaše naslove AdGuard Home strežnika.",
"get_started": "Začnimo",
"next": "Naprej",
"open_dashboard": "Odpri nadzorno ploščo",
"install_saved": "Shranjeno uspešno",
"encryption_title": "Šifriranje",
"encryption_desc": "Podpora za šifriranje (HTTPS/TLS) za DNS in skrbniški spletni vmesnik",
"encryption_config_saved": "Konfiguracija šifriranja je shranjena",
"encryption_server": "Ime strežnika",
"encryption_server_enter": "Vnesite ime vaše domene",
"encryption_server_desc": "Za uporabo HTTPS morate vnesti ime strežnika, ki se ujema z vašim digitalnim certifikatom SSL.\n",
"encryption_redirect": "Samodejno preusmeri na HTTPS",
"encryption_redirect_desc": "Če je označeno, vas bo AdGuard Home samodejno preusmeril iz naslovov HTTP na naslove HTTPS.",
"encryption_https": "Vrata HTTPS",
"encryption_https_desc": "Če so vrata HTTPS konfigurirana, bo skrbniški vmesnik AdGuard Home dostopen prek protokola HTTPS, prav tako pa bo zagotovil DNS-prek-HTTPS na mestu '/dns-query'.",
"encryption_dot": "Vrata DNS-prek-TLS",
"encryption_dot_desc": "Če so ta vrata konfigurirana, bo AdGuard Home na teh vratih zagnal DNS-prek-TLS strežnika.",
"encryption_certificates": "Digitalna potrdila",
"encryption_certificates_desc": "Za uporabo šifriranja morate za svojo domeno zagotoviti veljavno verigo potrdil SSL. Brezplačno digitalno potrdilo lahko dobite na <0>{{link}}</0> ali pa ga kupite pri enem od zaupanja vrednih overiteljev.\n\n",
"encryption_certificates_input": "Tukaj kopirajte/prilepite PEM šifrirana digitalna potrdila.",
"encryption_status": "Stanje",
"encryption_expire": "Poteče",
"encryption_key": "Zasebni ključ",
"encryption_key_input": "Tukaj kopirajte/prilepite PEM-kodiran zasebni ključ za vaše digitalno potrdilo.",
"encryption_enable": "Omogoči šifriranje (HTTPS, DNS-prek-HTTPS in DNS-prek-TLS)",
"encryption_enable_desc": "Če je omogočeno šifriranje, bo skrbniški vmesnik AdGuard Home deloval prek HTTPS, strežnik DNS pa bo poslušal zahteve prek DNS-prek-HTTPS in DNS-prek-TLS.",
"encryption_chain_valid": "Veriga digitalih potrdil je veljavna",
"encryption_chain_invalid": "Veriga digitalih potrdil ni veljavna",
"encryption_key_valid": "To je veljaven zasebni ključ {{type}}",
"encryption_key_invalid": "To je neveljaven zasebni ključ {{type}}",
"encryption_subject": "Predmet",
"encryption_issuer": "Izdajatelj",
"encryption_hostnames": "Imena gostiteljev",
"encryption_reset": "Ali ste prepričani, da želite ponastaviti nastavitve šifriranja?",
"topline_expiring_certificate": "Vaš e digitalno potrdilo SSL bo kmalu poteklol. Posodobite <0>Nastavitve šifriranja</0>.",
"topline_expired_certificate": "Vaše digitalno potrdilo SSL je poteklo. Posodobi <0>Nastavitve šifriranja</0>.",
"form_error_port_range": "Vnesite vrednost vrat v razponu med 80-65535",
"form_error_port_unsafe": "To so nevarna vrata",
"form_error_equal": "Ne bi smelo biti enako",
"form_error_password": "Geslo se ne ujema",
"reset_settings": "Ponastavi nastavitve",
"update_announcement": "Zdaj je na voljo AdGuard Home {{version}}! <0>Klinite tukaj</0> za več informacij.",
"setup_guide": "Navodila za nastavitev",
"dns_addresses": "DNS naslovi",
"dns_start": "Zaganja se strežnik DNS",
"dns_status_error": "Napaka pri pridobivanju stanja strežnika DNS",
"down": "Navzdol",
"fix": "Popravi",
"dns_providers": "Tukaj je <0>seznam znanih ponudnikov DNS</0>, med katerimi lahko izbirate.",
"update_now": "Posodobi zdaj",
"update_failed": "Samodejna posodobitev ni uspela. Prosimo <a href='https://github.com/AdguardTeam/AdGuardHome/wiki/Getting-Started#update'>sledite korakom</a> ra zočno posodobitev.",
"processing_update": "Prosimo, počakajte. AdGuard Home se posodablja!",
"clients_title": "Odjemalci",
"clients_desc": "Konfigurirajte naprave, ki so povezane z AdGuard Home",
"settings_global": "Splošno",
"settings_custom": "Po meri",
"table_client": "Odjemalec",
"table_name": "Ime",
"save_btn": "Shrani",
"client_add": "Dodaj odjemalca",
"client_new": "Nov odjemalec",
"client_edit": "Uredi odjemalca",
"client_identifier": "Identifikator",
"ip_address": "IP naslov",
"client_identifier_desc": "Odjemalce je mogoče identificirati po naslovu IP, CIDR, MAC naslovu. Upoštevajte, da je uporaba MAC kot identifikatorja mogoča le, če je AdGuard Home tudi <0>strežnik DHCP</0>",
"form_enter_ip": "Vnesite IP",
"form_enter_mac": "Vnesite MAC",
"form_enter_id": "Vnesi identifikatorja",
"form_add_id": "Dodaj identifikatorja",
"form_client_name": "Vnesite ime odjemalca",
"name": "Ime",
"client_global_settings": "Uporabi splošne nastavitve",
"client_deleted": "Odjemalec \"{{key}}\" je bil uspešno izbrisan",
"client_added": "Odjemalec \"{{key}}\" je bil uspešno dodan",
"client_updated": "Odjemalec \"{{key}}\" je bil uspešno posodobljen",
"clients_not_found": "Odjemalcev ni bilo mogoče najti",
"client_confirm_delete": "Ali ste prepričani, da želite izbrisati odjemalca \"{{key}}\"?",
"list_confirm_delete": "Ali ste prepričani, da želite izbrisati ta seznam?",
"auto_clients_title": "Odjemalci (čas izvajanja)",
"auto_clients_desc": "Podatki o odjemalcih, ki uporabljajo AdGuard Home, vendar niso shranjeni v konfiguraciji",
"access_title": "Nastavitve dostopa",
"access_desc": "Tukaj lahko nastavite pravila dostopa strežnika DNS AdGuard Home.",
"access_allowed_title": "Dovoljeni odjemalci",
"access_allowed_desc": "Seznam naslovov CIDR ali IP. Če je konfiguriran, bo AdGuard Home sprejel zahteve samo od teh teh IP naslovov.",
"access_disallowed_title": "Zavrnjeni odjemalci",
"access_disallowed_desc": "Seznam naslovov CIDR ali IP. Če je konfiguriran, bo AdGuard Home spustil zahteve iz teh IP naslovov.",
"access_blocked_title": "Nedovoljene domene",
"access_blocked_desc": "Tega ne zamenjujte s filtri. AdGuard Home bo v spustil poizvedbe DNS s temi domenami v vprašanju poizvedbe. Tu lahko določite natančna imena domen, nadomestne znake in pravila urlfilter, npr. 'primer.org', '*.primer.org' or '||primer.org^'.",
"access_settings_saved": "Nastavitve dostopa so uspešno shranjene",
"updates_checked": "Posodobitve so uspešno preverjene",
"updates_version_equal": "AdGuard Home je posodobljen",
"check_updates_now": "Preveri obstoj posodobitev zdaj",
"dns_privacy": "Zasebnost DNS",
"setup_dns_privacy_1": "<0>DNS-prek-TLS:</0> Uporabite niz <1>{{address}}</1>.",
"setup_dns_privacy_2": "<0>DNS-prek-HTTPS:</0> Uporabite niz <1>{{address}}</1>.",
"setup_dns_privacy_3": "<0>Upoštevajte, da so šifrirani protokoli DNS podprti samo v sistemu Android 9. Zato morate namestiti dodatni program za druge operacijske sisteme.</0><0>Tu je seznam programov, ki jih lahko uporabite..</0>",
"setup_dns_privacy_android_1": "Android 9 izvirno podpira DNS-prek-TLS. Če ga želite konfigurirati, pojdite v Nastavitve → Omrežje in internet → Napredno → Zasebni DNS, in tam vnesite svoje ime domene.",
"setup_dns_privacy_android_2": "<0>AdGuard za Android</0> podpira <1>DNS-prek-HTTPS</1> in <1>DNS-prek-TLS</1>.",
"setup_dns_privacy_android_3": "<0>Intra</0> doda podporo <1>DNS-prek-HTTPS</1> za Android.",
"setup_dns_privacy_ios_1": "<0>DNSCloak</0> podpira <1>DNS-prek-HTTPS</1> vendar za njegovo konfiguracijo, da bo uporabljal svoj strežnik, morate zanj ustvariti <2>DNS Stamp</2>.",
"setup_dns_privacy_ios_2": "<0>AdGuard za iOS</0> podpira nastavitev <1>DNS-prek-HTTPS</1> in <1>DNS-prek-TLS</1>.",
"setup_dns_privacy_other_title": "Druge izvedbe",
"setup_dns_privacy_other_1": "Sam AdGuard Home je lahko varen odjemalec DNS na kateri koli platformi.",
"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_4": "<0>Mozilla Firefox</0> podpira <1>DNS-prek-HTTPS</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.",
"rewrite_added": "Uspešno je dodano DNS prepisovanje za \"{{key}}\"",
"rewrite_deleted": "Uspešno je izbrisano DNS prepisovanje za \"{{key}}\"",
"rewrite_add": "Dodaj prepisovanje DNS",
"rewrite_not_found": "Ni bilo najdenih prepisovanj DNS",
"rewrite_confirm_delete": "Ali ste prepričani, da želite izbrisati prepisovanje DNS za \"{{key}}\"?",
"rewrite_desc": "Omogoča enostavno konfiguriranje odgovora DNS po meri za določeno ime domene.",
"rewrite_applied": "Uporabljeno Pravilo za prepisovanje",
"rewrite_hosts_applied": "Prepisano s pravilom gostiteljske datoteke",
"dns_rewrites": "Prepisovanja NDS",
"form_domain": "Vnesite domeno ali nadomestni znak",
"form_answer": "Vnesite IP naslov ali ime domene",
"form_error_domain_format": "Neveljavna oblika domene",
"form_error_answer_format": "Neveljavna oblika odgovora",
"configure": "Konfiguriraj",
"main_settings": "Glavne nastavitve",
"block_services": "Onemogoči določene storitve",
"blocked_services": "Onemogočene storitve",
"blocked_services_desc": "Omogoča hitro onemogočanje priljubljenih spletnih strani in storitev.",
"blocked_services_saved": "Onemogočene storitve so uspešno shranjene",
"blocked_services_global": "Uporabi splošne onemogočene storitve",
"blocked_service": "Onemogočena storitev",
"block_all": "Onemogoči vse",
"unblock_all": "Omogoči vse",
"encryption_certificate_path": "Pot digitalnega potrdila",
"encryption_private_key_path": "Pot zasebnega ključa",
"encryption_certificates_source_path": "Nastavi pot datoteke digitalnih potrdil",
"encryption_certificates_source_content": "Prilepi vsebino digitalnih potrdil",
"encryption_key_source_path": "Nastavi datoteko zasebnega ključa",
"encryption_key_source_content": "Prilepi vsebino zasebnega ključa",
"stats_params": "Nastavitve statistike",
"config_successfully_saved": "Nastavitve so uspešno shranjene",
"interval_24_hour": "24 ur",
"interval_days": "{{count}} dan",
"interval_days_plural": "{{count}} dni",
"domain": "Domena",
"answer": "Odgovor",
"filter_added_successfully": "Seznam je bil uspešno dodan",
"filter_removed_successfully": "Seznam je bil uspešno odstranjen",
"filter_updated": "Filter je bil uspešno posodobljen",
"statistics_configuration": "Nastavitve statistike",
"statistics_retention": "Statistika zadrževanja",
"statistics_retention_desc": "Če zmanjšate vrednost intervala, bodo nekateri podatki izgubljeni",
"statistics_clear": " Počisti statistiko",
"statistics_clear_confirm": "Ali ste prepričani, da želite počistiti statistiko?",
"statistics_retention_confirm": "Ali ste prepričani, da želite spremeniti zadrževanje statistike? Če zmanjšate vrednost intervala, bodo nekateri podatki izgubljeni",
"statistics_cleared": "Statistika je bila uspešno počiščena",
"interval_hours": "{{count}} ur",
"interval_hours_plural": "{{count}} ur",
"filters_configuration": "Nastavitve filtrov",
"filters_enable": "Omogoči filtre",
"filters_interval": "Interval posodabljanja filtrov",
"disabled": "Onemogočeno",
"username_label": "Uporabniško ime",
"username_placeholder": "Vnesite uporabniško ime",
"password_label": "Geslo",
"password_placeholder": "Vnesite geslo",
"sign_in": "Vpis",
"sign_out": "Izpis",
"forgot_password": "Izgubljeno geslo?",
"forgot_password_desc": "Prosimo, sledite <0>tem korakom</0>, da ustvarite novogeslo za uporabniški računa.",
"location": "Lokacija",
"orgname": "Ime organizacije",
"netname": "Ime omrežja",
"network": "Omrežje",
"descr": "Opis",
"whois": "Whois",
"filtering_rules_learn_more": "<0>Več o</0> ustvarjanju lastnih seznamov gostiteljev.",
"blocked_by_response": "Onemogočeno s CNAME ali IP v odgovoru",
"blocked_by_cname_or_ip": "Onemogočeno s CNAME ali IP naslovom",
"try_again": "Poskusi ponovno",
"domain_desc": "Vnesite ime domene ali nadomestni znak, ki ga želite prepisati.",
"example_rewrite_domain": "prepiše odgovore samo za to ime domene.",
"example_rewrite_wildcard": "prepiše odgovore za vse poddomene <0>example.org</0>.",
"rewrite_ip_address": "IP naslov: uporabi ta IP v odzivu A ali AAAA",
"rewrite_domain_name": "Ime domene: dodaj CNAME zapis",
"rewrite_A": ">A</0>: posebna vrednost, obdrži <0>A</0> zapise iz gorvodnega toka",
"rewrite_AAAA": ">A</0>: posebna vrednost, obdrži <0>AAAA</0> zapise iz gorvodnega toka",
"disable_ipv6": "Onemogoči IPv6",
"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_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_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.",
"tags_title": "Oznake",
"tags_desc": "Izberete lahko oznake, ki ustrezajo odjemalcu. Oznake lahko vključite v pravila filtriranja in vam omogočajo, da jih natančneje uporabite. <0>Več o tem</0>",
"form_select_tags": "Izberite odjemalske oznake",
"check_title": "Preveri filtriranje",
"check_desc": "Preverite, ali je ime gostitelja filtrirano",
"check": "Preveri",
"form_enter_host": "Vnesite ime gostitelja",
"filtered_custom_rules": "Filtrirano s pravili filtriranja po meri",
"choose_from_list": "Izberi s seznama",
"add_custom_list": "Dodaj seznam po meri",
"host_whitelisted": "Gostitelj je na seznamu dovoljenih",
"check_ip": "IP naslovi: {{ip}}",
"check_cname": "CNAME: {{cname}}",
"check_reason": "Razlog: {{reason}}",
"check_rule": "Pravilo: {{rule}}",
"check_service": "Ime storitve: {{service}}",
"check_not_found": "Ni najdeno na vašem seznamu filtrov",
"client_confirm_block": "Ali ste prepričani, da želite onemogočiti odjemalca \"{{ip}}\"?",
"client_confirm_unblock": "Ali ste prepričani, da želite omogočiti odjemalca \"{{ip}}\"?",
"client_blocked": "Odjemalec \"{{ip}}\" je uspešno onemogočen",
"client_unblocked": "Odjemalec \"{{ip}}\" je uspešno omogočen",
"static_ip": "Statičen IP naslov",
"static_ip_desc": "AdGuard Home je strežnik, zato za pravilno delovanje potrebuje statičen IP naslov. V nasprotnem primeru lahko vaš usmerjevalnik tej napravi v nekem trenutku dodeli drug IP naslov.",
"set_static_ip": "Nastavi statičen IP naslov",
"install_static_ok": "Dobra novica! Statičen IP naslov je že konfiguriran",
"install_static_error": "AdGuard Home tega omrežnega vmesnika ne more samodejno konfigurirati. Poiščite navodila, kako to storiti ročno.",
"install_static_configure": "Zaznali smo, da je uporabljen dinamičen IP naslov — <0>{{ip}}</0>. Ali ga želite uporabiti kot svoj statičen naslov?",
"confirm_static_ip": "AdGuard Home bo konfiguriral {{ip}}, da bo postal vas statičen IP naslov. Ali želite nadaljevati?",
"list_updated": "{{count}} posodobljen seznam",
"list_updated_plural": "{{count}} posodobljenih seznamov",
"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)",
"validated_with_dnssec": "Potrjen z DNSSEC",
"all_queries": "Vse poizvedbe",
"show_blocked_responses": "Onemogočen",
"show_whitelisted_responses": "Na seznamu dovoljenih",
"show_processed_responses": "Obdelana",
"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",
"cache_size": "Velikost predpomnilnika",
"cache_size_desc": "Velikost predpomnilnika DNS (v bajtih)",
"cache_ttl_min_override": "Preglasi najmanjši TTL",
"cache_ttl_max_override": "Preglasi največji TTL",
"enter_cache_size": "Vnesite velikost predpomnilnika",
"enter_cache_ttl_min_override": "Vnesite najmanjši TTL",
"enter_cache_ttl_max_override": "Vnesite največji TTL",
"cache_ttl_min_override_desc": "Vrednost preglasovanja TTL (najmanjša), prejeta od zgornjega strežnika. Ta vrednost ne sme presegati 3600 (1 ura)",
"cache_ttl_max_override_desc": "Vrednost preglasovanja TTL (največja), prejeta od zgornjega strežnika",
"min_exceeds_max_value": "Najmanjša vrednost presega največjo vrednost",
"value_not_larger_than": "Vrednost ne sme biti večja od {{maximum}}",
"filter_category_general": "Splošno",
"filter_category_security": "Varnost",
"filter_category_regional": "Področno",
"filter_category_other": "Drugo",
"filter_category_general_desc": "Seznami, ki zavirajo sledenje in oglaševanje na večini naprav",
"filter_category_security_desc": "Seznami, ki so specializirani za onemogočanje domen zlonamernih programov, lažnega predstavljanja ali prevar",
"filter_category_regional_desc": "Seznami, ki so osredotočeni na področne oglase in strežnike za sledenje",
"filter_category_other_desc": "Drugi seznami za zaviranje",
"original_response": "Izviren odgovor",
"click_to_view_queries": "Kliknite za prikaz poizvedb",
"port_53_faq_link": "Vrata 53 pogosto zasedajo storitve 'DNSStubListener' ali 'Sistemsko razrešene storitve'. Preberite <0>to navodilo</0> o tem, kako to rešiti."
}

View File

@@ -0,0 +1,566 @@
{
"client_settings": "Postavke klijenta",
"example_upstream_reserved": "možete odrediti DNS upstream <0>za određene domene</0>",
"upstream_parallel": "Koristite paralelne zahteve da ubrzate rešavanje istovremenim zahtevanjem svih servera",
"parallel_requests": "Paralelni zahtevi",
"load_balancing": "Load-balancing",
"load_balancing_desc": "Koristi jedan server. AdGuard Home će koristiti najnoviji nasumični algoritam da izabere server tako da će najbrži server biti češće korišćen.",
"bootstrap_dns": "Bootstrap DNS serveri",
"bootstrap_dns_desc": "Bootstrap DNS serveri se koriste da reše IP adrese od DoH/DoT razrešivača koje ste odredili kao upstream.",
"check_dhcp_servers": "Proveri DHCP servere",
"save_config": "Sačuvaj konfiguraciju",
"enabled_dhcp": "DHCP server uključen",
"disabled_dhcp": "DHCP server isključen",
"dhcp_title": "DHCP server (eksperimentalno!)",
"dhcp_description": "Ako vaš ruter nema DHCP postavke, možete koristiti AdGuard' ugrađen DHCP server.",
"dhcp_enable": "Uključi DHCP server",
"dhcp_disable": "Isključi DHCP server",
"dhcp_not_found": "Bezbedno je da uključite ugrađeni DHCP server. Nismo pronašli nijedan aktivan DHCP server na mreži. međutim, ohrabrujemo vas da to ponovo proverite ručno, jer naš automatski test trenutno nije 100% pouzdan.",
"dhcp_found": "Pronađen je aktivan DHCP server na mreži. Nije bezbedno da uključite ugrađeni DHCP server.",
"dhcp_leases": "DHCP pozajmljivanja",
"dhcp_static_leases": "DHCP statička pozajmljivanja",
"dhcp_leases_not_found": "DHCP pozajmljivanja nisu pronađena",
"dhcp_config_saved": "Sačuvaj DHCP konfiguraciju servera",
"form_error_required": "Obavezno polje",
"form_error_ip4_format": "Nevažeći IPv4 format",
"form_error_ip6_format": "Nevažeći IPv6 format",
"form_error_ip_format": "Nevažeći IPv4 oblik",
"form_error_mac_format": "Nevažeći MAC format",
"form_error_client_id_format": "Nevažeći format klijenta",
"form_error_positive": "Mora biti veće od 0",
"form_error_negative": "Mora biti 0 ili veće",
"dhcp_form_gateway_input": "IP mrežnog prolaza",
"dhcp_form_subnet_input": "Subnet mask",
"dhcp_form_range_title": "Opseg IP adresa",
"dhcp_form_range_start": "Početak opsega",
"dhcp_form_range_end": "Kraj opsega",
"dhcp_form_lease_title": "DHCP vreme pozajmljivanja (u sekundama)",
"dhcp_form_lease_input": "Trajanje iznajmljivanja",
"dhcp_interface_select": "Izaberite DHCP okruženje",
"dhcp_hardware_address": "Adresa hardvera",
"dhcp_ip_addresses": "IP adrese",
"ip": "IP",
"dhcp_table_hostname": "Ime hosta",
"dhcp_table_expires": "Ističe",
"dhcp_warning": "Ako svakako želite da uključite DHCP server, uverite se da nema drugih aktivnih DHCP servera u vašoj mreži. U suprotnom, to može pokvariti Internet za povezane uređaje!",
"dhcp_error": "Ne možemo da odredimo da li ima drugih DHCP servera na mreži.",
"dhcp_static_ip_error": "Kako biste koristili DHCP server, morate podesiti statičku IP adresu. Nismo mogli da odredimo da li je ovo mrežno okruženje podešeno za korišćenje statičke IP adrese. Molimo vas da podesite statičku IP adresu ručno.",
"dhcp_dynamic_ip_found": "Vaš sistem koristi dinamičku IP adresu za okruženje <0>{{interfaceName}}</0>. Kako biste koristili DHCP server, morate podesiti statičku IP adresu. Vaša trenutna IP adresa je <0>{{ipAddress}}</0>. Automatski ćemo podesiti ovu IP adresu kao statičku ako pritisnete Uključi DHCP dugme.",
"dhcp_lease_added": "Statičko iznajmljivanje \"{{key}}\" uspešno dodato",
"dhcp_lease_deleted": "Statičko iznajmljivanje lease \"{{key}}\" uspešno izbrisano",
"dhcp_new_static_lease": "Novo statičko iznajmljivanje",
"dhcp_static_leases_not_found": "Nisu pronađena statička DHCP iznajmljivanja",
"dhcp_add_static_lease": "Dodaj statičko iznajmljivanje",
"dhcp_reset": "Jeste li sigurni da želite da resetujete DHCP konfiguraciju?",
"country": "Zemlja",
"city": "Grad",
"delete_confirm": "Jeste li sigurni da želite da izbrišete \"{{key}}\"?",
"form_enter_hostname": "Unesite ime hosta",
"error_details": "Detalji greške",
"response_details": "Pojedinosti odgovora",
"request_details": "Pojedinosti zahteva",
"client_details": "Pojedinosti klijenta",
"details": "Detalji",
"back": "Nazad",
"dashboard": "Kontrolna tabla",
"settings": "Postavke",
"filters": "Filteri",
"filter": "Filter",
"query_log": "Dnevnik zahteva",
"compact": "Kompaktno",
"nothing_found": "Ništa nije pronađeno",
"faq": "ČPP",
"version": "Verzija",
"address": "Adresa",
"protocol": "Protokol",
"on": "Uključeno",
"off": "Isključeno",
"copyright": "Autorska prava",
"homepage": "Početna stranica",
"report_an_issue": "Prijavi poteškoću",
"privacy_policy": "Politika privatnosti",
"enable_protection": "Uključi zaštitu",
"enabled_protection": "Uključena zaštita",
"disable_protection": "Isključi zaštitu",
"disabled_protection": "Isključena zaštita",
"refresh_statics": "Osveži statistike",
"dns_query": "DNS zahtevi",
"blocked_by": "<0>blokirano od filtera</0>",
"stats_malware_phishing": "Blokiraj štetan softver i fišing",
"stats_adult": "Blokiraj sajtove za odrasle",
"stats_query_domain": "Najčešće unošeni domeni",
"for_last_24_hours": "u poslednja 24 časa",
"for_last_days": "u poslednjih {{count}} dana",
"for_last_days_plural": "u poslednjih {{count}} dana",
"no_domains_found": "Domeni nisu pronađeni",
"requests_count": "Broj zahteva",
"top_blocked_domains": "Najčešće blokirani domeni",
"top_clients": "Najčešći klijenti",
"no_clients_found": "Nema pronađenih klijenata",
"general_statistics": "Opšte statistike",
"number_of_dns_query_days": "Broj obrađenih DNS unosa u poslednjih {{count}} dan",
"number_of_dns_query_days_plural": "Broj obrađenih DNS unosa u poslednjih {{count}} dana",
"number_of_dns_query_24_hours": "Broj obrađenih DNS unosa u poslednja 24 časa",
"number_of_dns_query_blocked_24_hours": "Broj DNS zahteva blokiranih od filtera blokatora reklama i blok liste hostova",
"number_of_dns_query_blocked_24_hours_by_sec": "Broj DNS zahteva blokiranih od AdGuard-ovog podprograma za bezbedno pregledanje",
"number_of_dns_query_blocked_24_hours_adult": "Broj blokiranih sajtova za odrasle",
"enforced_save_search": "Nametni sigurno pretraživanje",
"number_of_dns_query_to_safe_search": "Broj DNS zahteva ka pretraživačima za koje je nametnuto sigurno pretraživanje",
"average_processing_time": "Prosečno vreme obrade",
"average_processing_time_hint": "Prosečno vreme u milisekundama za obradu DNS zahteva",
"block_domain_use_filters_and_hosts": "Blokiraj domene koristeći filtere i hosts datoteke",
"filters_block_toggle_hint": "Možete postaviti pravila blokiranja u <a href='#filters'>Filters</a> postavkama.",
"use_adguard_browsing_sec": "Koristi AdGuard-ovu uslugu bezbednog pregledanja",
"use_adguard_browsing_sec_hint": "AdGuard Home će proveriti da li je domen blokiran od strane usluge za bezbednosno pregledanje. Koristiće prijateljski API privatni pregled da izvrši proveru. Samo će se kratak prefiks domena SHA256 hash poslati na server.",
"use_adguard_parental": "Koristi AdGuard-ovu uslugu roditeljske kontrole",
"use_adguard_parental_hint": "AdGuard Home će proveriti da li domen sadrži sadržaj za odrasle. Koristi se isti privatni prijateljski API kao i kod usluge bezbednog pregledanja.",
"enforce_safe_search": "Nametni sigurno pretraživanje",
"enforce_save_search_hint": "AdGuard Home može nametnuti sigurno pretraživanje u sledećim pretraživačima: Google, Youtube, Bing, DuckDuckGo i Yandex.",
"no_servers_specified": "Serveri nisu određeni",
"general_settings": "Opšte postavke",
"dns_settings": "DNS postavke",
"dns_blocklists": "DNs blok liste",
"dns_allowlists": "DNS dozvoljene liste",
"dns_blocklists_desc": "AdGuard Home će blokirati domene koji se poklapaju sa blok listama.",
"dns_allowlists_desc": "Domeni sa liste dozvoljenih će uvek biti dozvoljeni, čak iako se neki od njih nalazi na blok listi.",
"custom_filtering_rules": "Prilagođena pravila filtriranja",
"encryption_settings": "Postavke šifrovanja",
"dhcp_settings": "DHCP postavke",
"upstream_dns": "Upstream DNS serveri",
"upstream_dns_hint": "Ako ovo polje ostavite prazno, AdGuard Home će koristiti <a href='https://www.quad9.net/' target='_blank'>Quad9</a> kao upstream.",
"test_upstream_btn": "Testiraj upstreams",
"upstreams": "Upstreams",
"apply_btn": "Primeni",
"disabled_filtering_toast": "Isključeno filtriranje",
"enabled_filtering_toast": "Uključeno filtriranje",
"disabled_safe_browsing_toast": "Isključeno sigurno pregledanje",
"enabled_safe_browsing_toast": "Uključeno sigurno pretraživanje",
"disabled_parental_toast": "Isključena roditeljska kontrola",
"enabled_parental_toast": "Uključena roditeljska kontrola",
"disabled_safe_search_toast": "Isključena sigurna pretraga",
"enabled_save_search_toast": "Uključeno sigurno pretraživanje",
"enabled_table_header": "Uključeno",
"name_table_header": "Ime",
"list_url_table_header": "URL do liste",
"rules_count_table_header": "Broj pravila",
"last_time_updated_table_header": "Poslednji put ažurirano",
"actions_table_header": "Radnje",
"request_table_header": "Zahtev",
"edit_table_action": "Izmeni",
"delete_table_action": "Izbriši",
"elapsed": "Proteklo",
"filters_and_hosts_hint": "AdGuard Home razume osnovna pravila blokiranja reklama i sintaksu hosts datoteke.",
"no_blocklist_added": "Blok liste nisu dodate",
"no_whitelist_added": "Liste dozvoljenih nisu dodate",
"add_blocklist": "Dodaj blok listu",
"add_allowlist": "Dodaj listu dozvoljenih",
"cancel_btn": "Otkaži",
"enter_name_hint": "Unesite ime",
"enter_url_or_path_hint": "Unesite URL ili apsolutnu putanju liste",
"check_updates_btn": "Proveri ažuriranja",
"new_blocklist": "Nova blok lista",
"new_allowlist": "Nova lista dozvoljenih",
"edit_blocklist": "Uredi blok listu",
"edit_allowlist": "Uredi listu dozvoljenih",
"choose_blocklist": "Izaberite liste blokiranja",
"choose_allowlist": "Izaberite liste dozvoljenih",
"enter_valid_blocklist": "Unesite važeći URL do blok liste.",
"enter_valid_allowlist": "Unesite važeći URL do liste dozvoljenih.",
"form_error_url_format": "Nevažeći format Url-a",
"form_error_url_or_path_format": "URL ili apsolutna putanja do liste nije valjana",
"custom_filter_rules": "Prilagođena pravila filtriranja",
"custom_filter_rules_hint": "Unesite jedno pravilo po redu. Možete koristiti pravila blokatora reklama ili sintaksu hosts datoteke.",
"examples_title": "Primeri",
"example_meaning_filter_block": "blokirajte pristup ka domenu primer.org i svim njegovim poddomenima",
"example_meaning_filter_whitelist": "dozvolite pristup ka domenu primer.org i svim njegovim poddomenima",
"example_meaning_host_block": "AdGuard Home će sada vratiti adresu 127.0.0.1 za domen primer.org (ali ne i za njegove poddomene).",
"example_comment": "! Ovde ide komentar",
"example_comment_meaning": "samo komentar",
"example_comment_hash": "# Takođe komentar",
"example_regex_meaning": "blokiranje pristupa domenima koji odgovaraju određenom uobičajenom izrazu",
"example_upstream_regular": "uobičajeno DNS (preko UDP)",
"example_upstream_dot": "šifrovano <0>DNS-over-TLS</0>",
"example_upstream_doh": "šifrovano <0>DNS-over-HTTPS</0>",
"example_upstream_sdns": "možete koristiti <0>DNS brojeve</0> za <1>DNSCrypt</1> ili <2>DNS-over-HTTPS</2>",
"example_upstream_tcp": "uobičajeni DNS (preko TCP)",
"all_lists_up_to_date_toast": "Sve liste su već ažurirane",
"updated_upstream_dns_toast": "Ažurirani upstream DNS serveri",
"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",
"unblock": "Odblokiraj",
"block": "Blokiraj",
"time_table_header": "Vreme",
"date": "Datum",
"domain_name_table_header": "Ime domena",
"domain_or_client": "Domen ili klijent",
"type_table_header": "Vrsta",
"response_table_header": "Odgovor",
"response_code": "Kod odgovora",
"client_table_header": "Klijent",
"empty_response_status": "Prazno",
"show_all_filter_type": "Pokaži sve",
"show_filtered_type": "Pokaži filtrirano",
"no_logs_found": "Dnevnici nisu pronađeni",
"refresh_btn": "Osveži",
"previous_btn": "Prethodno",
"next_btn": "Sledeće",
"loading_table_status": "Učitavanje...",
"page_table_footer_text": "Stranica",
"rows_table_footer_text": "redovi",
"updated_custom_filtering_toast": "Ažurirana prilagođena pravila filtriranja",
"rule_removed_from_custom_filtering_toast": "Pravilo uklonjeno iz prilagođenih pravila filtriranja",
"rule_added_to_custom_filtering_toast": "Pravilo dodato u prilagođena pravila filtriranja",
"query_log_response_status": "Stanje: {{value}}",
"query_log_filtered": "Filtrirano od {{filter}}",
"query_log_confirm_clear": "Jeste li sigurni da želite da očistite ceo dnevnik unosa?",
"query_log_cleared": "Dnevnik unosa je uspešno očišćen",
"query_log_updated": "Dnevnik zapisa je uspešno ažuriran",
"query_log_clear": "Očisti dnevnike unosa",
"query_log_retention": "Zadržavanje dnevnika unosa",
"query_log_enable": "Uključi dnevnik",
"query_log_configuration": "Konfiguracija dnevnika",
"query_log_disabled": "Dnevnik unosa je isključen ali se može konfigurisati u <0>postavkama</0>",
"query_log_strict_search": "Koristi duple navodnike za striktnu pretragu",
"query_log_retention_confirm": "Jeste li sigurni da želite da promenite zadržavanje dnevnika unosa? Ako smanjite vrednost intervala, neki podaci će biti izgubljeni",
"anonymize_client_ip": "Anonimizuj IP klijenta",
"anonymize_client_ip_desc": "Ne čuvaj punu IP adresu klijenta u dnevnicima i statistikama",
"dns_config": "Konfiguracija DNS servera",
"dns_cache_config": "Konfigurisanje DNS predmemorije",
"dns_cache_config_desc": "Ovde možete konfigurisati DNS predmemoriju",
"blocking_mode": "Način blokiranja",
"default": "Podrazumevano",
"nxdomain": "NXDOMAIN",
"null_ip": "Null IP",
"custom_ip": "Prilagođeni IP",
"blocking_ipv4": "Blokiranje IPv4",
"blocking_ipv6": "Blokiranje IPv6",
"dns_over_https": "DNS-over-HTTPS",
"dns_over_tls": "DNS-over-TLS",
"plain_dns": "Plain DNS",
"form_enter_rate_limit": "Unesite ograničenje brzine",
"rate_limit": "Ograničenje brzine",
"edns_enable": "Uključi EDNS Client Subnet",
"edns_cs_desc": "Ako je uključeno, AdGuard Home će slati klijente na DNS servere.",
"rate_limit_desc": "Broj zahteva po sekundi koje pojedinačni klijent dozvoljava (0: neograničeno)",
"blocking_ipv4_desc": "IP adresa koja će biti vraćena za blokirane zahteve",
"blocking_ipv6_desc": "IP adresa koja će biti vraćena za blokirane AAAA zahteve",
"blocking_mode_default": "Podrazumevano: Odgovara sa NXDOMAIN kada je blokirano od Adblock-style pravila; odgovara sa IP adresom koja je određena u pravilu kada je blokiran od /etc/hosts-style pravila",
"blocking_mode_nxdomain": "NXDOMAIN: Odgovara sa NXDOMAIN kodom",
"blocking_mode_null_ip": "Null IP: Odgovara sa zero IP adresom (0.0.0.0 za A; :: za AAAA)",
"blocking_mode_custom_ip": "Prilagođeni IP: Odgovara sa ručno podešenom IP adresom",
"upstream_dns_client_desc": "AKo ovo polje ostavite prazno, AdGuard Home će koristiti servere konfigurisane u <0>DNS postavkama</0>.",
"tracker_source": "Izvor praćenja",
"source_label": "Izvor",
"found_in_known_domain_db": "Pronađeno u poznatim bazama podataka domena.",
"category_label": "Kategorija",
"rule_label": "Pravilo",
"list_label": "Lista",
"unknown_filter": "Nepoznat filter {{filterId}}",
"known_tracker": "Poznato praćenje",
"install_welcome_title": "Dobrodošli u AdGuard home!",
"install_welcome_desc": "AdGuard Home je mrežni DNS server, blokator reklama i praćenja. Dopušta vam da kontrolišete svoju čitavu mrežu i sve vaše uređaje i ne zahteva korišćenje nikakvog klijentskog programa.",
"install_settings_title": "Administratorsko web okruženje",
"install_settings_listen": "Okruženje slušanja",
"install_settings_port": "Port",
"install_settings_interface_link": "Vaše AdGuard Home administratorsko web okruženje će biti dostupno na sledećim adresama:",
"form_error_port": "Unesite važeću vrednost za port",
"install_settings_dns": "DNS server",
"install_settings_dns_desc": "Potrebno je da konfigurišete vaše uređaje ili ruter da koristi DNS server sa sledećim adresama:",
"install_settings_all_interfaces": "Sva okruženja",
"install_auth_title": "Autentifikacija",
"install_auth_desc": "Preporučujemo vam da konfigurišete autentifikaciju lozinkom za vaše AdGuard Home administratorsko okruženje. Čak iako mu je moguće pristupiti samo iz vaše lokalne mreže,, i dalje je važno da ga zaštitite od neograničenog pristupa.",
"install_auth_username": "Korisničko ime",
"install_auth_password": "Lozinka",
"install_auth_confirm": "Potvrdite lozinku",
"install_auth_username_enter": "Unesite korisničko ime",
"install_auth_password_enter": "Unesite lozinku",
"install_step": "Korak",
"install_devices_title": "Konfigurišite vaše uređaje",
"install_devices_desc": "Za početak korišćenja AdGuard Home, potrebno je da konfigurišete vaše uređaje da ga koriste.",
"install_submit_title": "Čestitamo!",
"install_submit_desc": "Postavljanje je završeno i sada ste spremni da započnete sa korišćenjem AdGuard Home.",
"install_devices_router": "Ruter",
"install_devices_router_desc": "Ovo postavljanje će automatski pokriti sve uređaje koji su povezani na vaš kućni ruter pa nećete morati da konfigurišete svaki uređaj posebno.",
"install_devices_address": "AdGuard Home DNS server sluša na sledećim adresama",
"install_devices_router_list_1": "Otvorite podešavanja vašeg rutera. Obično im možete pristupiti iz vašeg preglednika preko URL (kao http://192.168.0.1/ ili http://192.168.1.1/). Možda će vam biti zatraženo da unesete lozinku. Ako je ne znate ili je se ne sećate, najčešće je možete resetovati pritiskom na dugme na samom ruteru. Neki ruteri zahtevaju određenu aplikaciju, koja bi u tom slučaju već trebalo da bude instalirana na vašem računaru ili telefonu.",
"install_devices_router_list_2": "Pronađite DHCP ili DNS postavke. Potražite DNS slova pored polja koje dozvoljava dve ili tri skupine brojeva, a svaka može da sadrži četiri grupe od jedne do tri cifre.",
"install_devices_router_list_3": "Tamo unesite adrese AdGuard home servera.",
"install_devices_router_list_4": "Na nekim ruterima ne možete postaviti prilagođeni DNS server.",
"install_devices_windows_list_1": "Otvorite kontrolnu tablu iz startnog menija ili kroz Windows pretragu.",
"install_devices_windows_list_2": "Otvorite kategoriju mreža i internet a onda otiđite u centar za mrežu i deljenje.",
"install_devices_windows_list_3": "Na levoj strani ekrana pronađite Promena postavke adaptera i kliknite tu.",
"install_devices_windows_list_4": "Izaberite vašu aktivnu vezu, desnim tasterom kliknite na nju i izaberite Svojstva.",
"install_devices_windows_list_5": "Na listi pronađite Internet Protokol verzija 4 (TCP/IP), izaberite ga pa kliknite ponovo na Svojstva.",
"install_devices_windows_list_6": "Izaberite Koristi sledeće adrese DNS servera pa unesite vaše adrese AdGuard Home servera.",
"install_devices_macos_list_1": "Kliknite na ikonicu jabuke pa otiđite na postavke sistema.",
"install_devices_macos_list_2": "Kliknite na mrežu.",
"install_devices_macos_list_3": "Izaberite prvu vezu sa liste pa kliknite na više opcija.",
"install_devices_macos_list_4": "Izaberite karticu DNS pa tu unesite adrese vašeg AdGuard Home servera.",
"install_devices_android_list_1": "Sa Android početnog ekrana, dodirnite Postavke.",
"install_devices_android_list_2": "Dodirnite Wi-Fi. Pojaviće se ekran sa svim dostupnim mrežama. Nije moguće da podesite prilagođeni DNS za mobilne veze).",
"install_devices_android_list_3": "Dugo pritisnite na mrežu na koju ste povezani, pa dodirnite Izmeni mrežu.",
"install_devices_android_list_4": "Na nekim uređajima će možda biti potrebno da označite kućicu za napredne opcije kako bi videli dalje postavke. Da biste prilagodili vaše Android DNS postavke, prebacite IP postavke sa DHCP na statičke.",
"install_devices_android_list_5": "Promenite DNS 1 i DNS 2 vrednosti na adrese vašeg AdGuard Home servera.",
"install_devices_ios_list_1": "Sa početnog ekrana, dodirnite postavke.",
"install_devices_ios_list_2": "U levom meniju izaberite Wi-Fi. Nije moguće da konfigurišete DNS za mobilne mreže).",
"install_devices_ios_list_3": "Dodirnite ime trenutno aktivne mreže.",
"install_devices_ios_list_4": "U DNS polje unesite adrese vašeg AdGuard Home servera.",
"get_started": "Počnimo",
"next": "Dalje",
"open_dashboard": "Otvori kontrolnu tablu",
"install_saved": "Uspešno sačuvano",
"encryption_title": "Šifrovanje",
"encryption_desc": "Šifrovanje (HTTPS/TLS) podrška za oba DNS i administratorsko okruženje",
"encryption_config_saved": "Konfiguracija šifrovanja je sačuvana",
"encryption_server": "Ime servera",
"encryption_server_enter": "Unesite vaše ime domena",
"encryption_server_desc": "Kako biste koristili HTTPS, potrebno je da unesete ime servera koje se podudara sa SSL sertifikatom.",
"encryption_redirect": "Automatski preusmeri na HTTPS",
"encryption_redirect_desc": "Ako je označeno, AdGuard Home će vas automatski preusmeravati sa HTTP na HTTPS adrese.",
"encryption_https": "HTTPS port",
"encryption_https_desc": "Ako je HTTPS port konfigurisan, AdGuard Home administratorskom okruženju će se moći pristupati preko HTTPS, a to će takođe omogućiti DNS-over-HTTPS na '/dns-query' lokaciji.",
"encryption_dot": "DNS-over-TLS port",
"encryption_dot_desc": "Ako je ovaj port konfigurisan, AdGuard Home će pokretati DNS-over-TLS server na ovom portu.",
"encryption_certificates": "Sertifikati",
"encryption_certificates_desc": "Da biste koristili šifrovanje, morate obezbediti važeći lanac SSL sertifikata za vaš domen. Besplatan sertifikat možete nabaviti na <0>{{link}}</0> ili ga možete kupiti od nekog od pouzdanih izdavalaca sertifikata.",
"encryption_certificates_input": "Kopirajte/nalepite vaše PEM-kodirane sertifikate ovde.",
"encryption_status": "Stanje",
"encryption_expire": "Ističe",
"encryption_key": "Privatni ključ",
"encryption_key_input": "Kopirajte/nalepite vaš PEM-kodirani privatni ključ za vaš sertifikat ovde.",
"encryption_enable": "Uključi šifrovanje (HTTPS, DNS-over-HTTPS, i DNS-over-TLS)",
"encryption_enable_desc": "Ako je šifrovanje uključeno, AdGuard Home administratorsko okruženje će raditi preko HTTPS, i DNS server će slušati zahteve preko DNS-over-HTTPS i DNS-over-TLS.",
"encryption_chain_valid": "Lanac sertifikata je važeći",
"encryption_chain_invalid": "Lanac sertifikata je nevažeći",
"encryption_key_valid": "Ovo je važeći {{type}} privatni ključ",
"encryption_key_invalid": "Ovo je nevažeći {{type}} privatni ključ",
"encryption_subject": "Predmet",
"encryption_issuer": "Izdavač",
"encryption_hostnames": "Imena hostova",
"encryption_reset": "Jeste li sigurni da želite dda resetujete postavke šifrovanja?",
"topline_expiring_certificate": "Vaš SSL sertifikat uskoro ističe. Ažurirajte <0>postavke šifrovanja</0>.",
"topline_expired_certificate": "Vaš SSL sertifikat je istekao. Ažurirajte <0>postavke šifrovanja</0>.",
"form_error_port_range": "Unesite vrednost porta u opsegu od 80-65535",
"form_error_port_unsafe": "Ovo nije siguran port",
"form_error_equal": "Ne bi trebalo da bude jednako",
"form_error_password": "Lozinke se ne podudaraju",
"reset_settings": "Vrati postavke na podrazumevano",
"update_announcement": "AdGuard Home {{version}} je sada dostupan! <0>Kliknite ovde</0> za više informacija.",
"setup_guide": "Uputstvo za podešavanje",
"dns_addresses": "DNS adrese",
"dns_start": "DNS server se pokreće",
"dns_status_error": "Greška prilikom pribavljanja stanja DNS servera",
"down": "Dole",
"fix": "Popravi",
"dns_providers": "Ovo je a <0>lista poznatih DNS dobavljača</0> sa koje možete da izaberete.",
"update_now": "Ažuriraj sada",
"update_failed": "Automatsko ažuriranje nije uspelo. Molimo vas <a href='https://github.com/AdguardTeam/AdGuardHome/wiki/Getting-Started#update'>pratite korake</a> za ručno ažuriranje.",
"processing_update": "Molimo sačekajte. AdGuard Home se ažurira",
"clients_title": "Klijenti",
"clients_desc": "Konfigurišite uređaje koji su povezani na AdGuard Home",
"settings_global": "Globalno",
"settings_custom": "Prilagođeno",
"table_client": "Klijent",
"table_name": "Ime",
"save_btn": "Sačuvaj",
"client_add": "Dodaj klijent",
"client_new": "Novi klijent",
"client_edit": "Izmeni klijent",
"client_identifier": "Identifikator",
"ip_address": "IP adresa",
"client_identifier_desc": "Klijenti mogu da budu prepoznati po IP adresi ili MAC adresi. Imajte na umu da je korišćenje MAC adrese kao identifikatora moguće samo ako je AdGuard Home takođe a <0>DHCP server</0>",
"form_enter_ip": "Unesite IP",
"form_enter_mac": "Unesite MAC",
"form_enter_id": "Unesite identifikator",
"form_add_id": "Dodaj identifikator",
"form_client_name": "Unesite ime klijenta",
"name": "Ime",
"client_global_settings": "Koristi globalne postavke",
"client_deleted": "Klijent \"{{key}}\" uspešno izbrisan",
"client_added": "Klijent \"{{key}}\" uspešno dodat",
"client_updated": "Klijent \"{{key}}\" uspešno ažuriran",
"clients_not_found": "Nema pronađenih klijenata",
"client_confirm_delete": "Jeste li sigurni da želite da izbrišete klijenta \"{{key}}\"?",
"list_confirm_delete": "Jeste li sigurni da želite da izbrišete ovu listu?",
"auto_clients_title": "Klijenti (runtime)",
"auto_clients_desc": "Podaci o klijentima koji koriste AdGuard Home, ali nisu sačuvani u konfiguraciji",
"access_title": "Postavke pristupa",
"access_desc": "Ovde možete konfigurisati pravila pristupa za AdGuard home DNS server.",
"access_allowed_title": "Dozvoljeni klijenti",
"access_allowed_desc": "Spisak CIDR ili IP adresa. Ako je podešeno, AdGuard Home će prihvatiti zahteve samo od ovih IP adresa.",
"access_disallowed_title": "Zabranjeni klijenti",
"access_disallowed_desc": "Lista CIDR ili IP adresa.. Ako je podešeno, AdGuard Home će odbijati zahteve od ovih IP adresa.",
"access_blocked_title": "Blokirani domeni",
"access_blocked_desc": "Nemojte ovo mešati sa filterima. AdGuard Home će odbijati DNS unose ka ovim domenima.",
"access_settings_saved": "Postavke pristupa su uspešno sačuvane",
"updates_checked": "Ažuriranja su uspešno proverena",
"updates_version_equal": "AdGuard Home je ažuriran na najnoviju verziju",
"check_updates_now": "Proveri da li postoje ispravke",
"dns_privacy": "DNS privatnost",
"setup_dns_privacy_1": "<0>DNS-over-TLS:</0> koristi <1>{{address}}</1> string.",
"setup_dns_privacy_2": "<0>DNS-over-HTTPS:</0> koristi <1>{{address}}</1> string.",
"setup_dns_privacy_3": "<0>Imajte na umu da su protokoli šifrovanog DNS-a podržani samo od Androida 9. Biće potrebno da instalirate dodatni softver za druge operativne sisteme.</0><0>Ovde je spisak softvera koje možete koristiti.</0>",
"setup_dns_privacy_android_1": "Android 9 podržava DNS-over-TLS. Za konfiguraciju, idite u postavke → mreža i internet → Napredno → Privatni DNS i tamo unesite ime vašeg domena.",
"setup_dns_privacy_android_2": "<0>AdGuard for Android</0> podržava <1>DNS-over-HTTPS</1> i <1>DNS-over-TLS</1>.",
"setup_dns_privacy_android_3": "<0>Intra</0> dodaje <1>DNS-over-HTTPS</1> podršku za Android.",
"setup_dns_privacy_ios_1": "<0>DNSCloak</0> podržava <1>DNS-over-HTTPS</1>, ali da biste mogli da ga konfigurišete da koristi vaš lični server, biće potrebno da generišete a <2>DNS Stamp</2> za njega.",
"setup_dns_privacy_ios_2": "<0>AdGuard za iOS</0> podržava <1>DNS-over-HTTPS</1> i <1>DNS-over-TLS</1>.",
"setup_dns_privacy_other_title": "Druge implementacije",
"setup_dns_privacy_other_1": "AdGuard home može biti bezbedan DNS server na bilo kojoj platformi.",
"setup_dns_privacy_other_2": "<0>dnsproxy</0> podržava sve poznate bezbedne DNS protokole.",
"setup_dns_privacy_other_3": "<0>dnscrypt-proxy</0> podržava <1>DNS-over-HTTPS</1>.",
"setup_dns_privacy_other_4": "<0>Mozilla Firefox</0> podržava <1>DNS-over-HTTPS</1>.",
"setup_dns_privacy_other_5": "Više implementacija ćete pronaći <0>ovde</0> i <1>ovde</1>.",
"setup_dns_notice": "Kako biste koristili <1>DNS-over-HTTPS</1> ili <1>DNS-over-TLS</1>, potrebno je da <0>konfigurišete šifrovanje</0> u AdGuard Home postavkama.",
"rewrite_added": "DNS prepisivanje za \"{{key}}\" je uspešno dodato",
"rewrite_deleted": "DNS prepisivanje za \"{{key}}\" uspešno izbrisano",
"rewrite_add": "Dodaj DNS prepisivanje",
"rewrite_not_found": "DNS prepisivanja nisu pronađena",
"rewrite_confirm_delete": "Jeste li sigurni da želite da izbrišete DNS prepisivanje za \"{{key}}\"?",
"rewrite_desc": "Dozvoljava da jednostavno konfigurišete prilagođeni DNS odgovor za određeni domen.",
"rewrite_applied": "Primenjeno pravilo prepisivanja",
"rewrite_hosts_applied": "Prepisano od pravila hosts datoteke",
"dns_rewrites": "DNS prepisivanja",
"form_domain": "Unesite domen",
"form_answer": "Unesite IP adresu ili domen",
"form_error_domain_format": "Nevažeći format domena",
"form_error_answer_format": "Nevažeći format odgovora",
"configure": "Konfiguriši",
"main_settings": "Glavne postavke",
"block_services": "Blokiraj određene usluge",
"blocked_services": "Blokiraj usluge",
"blocked_services_desc": "Dozvoljava vam da brzo blokirate popularne sajtove i usluge.",
"blocked_services_saved": "Blokirane usluge su uspešno sačuvane",
"blocked_services_global": "Koristi globalne blokirane usluge",
"blocked_service": "Blokirana usluga",
"block_all": "Blokiraj sve",
"unblock_all": "Odblokiraj sve",
"encryption_certificate_path": "Putanja sertifikata",
"encryption_private_key_path": "Putanja privatnog ključa",
"encryption_certificates_source_path": "Postavi putanju do datoteke sertifikata",
"encryption_certificates_source_content": "Nalepite sadržaj sertifikata",
"encryption_key_source_path": "Podesi datoteku privatnog ključa",
"encryption_key_source_content": "Nalepi sadržaj privatnog ključa",
"stats_params": "Konfiguracija statistike",
"config_successfully_saved": "Konfiguracija je uspešno sačuvana",
"interval_24_hour": "24 časa",
"interval_days": "{{count}} dan",
"interval_days_plural": "{{count}} dana",
"domain": "Domen",
"answer": "Odgovor",
"filter_added_successfully": "Filter je uspešno dodat",
"filter_removed_successfully": "Lista je uspešno uklonjena",
"filter_updated": "Filter je uspešno ažuriran",
"statistics_configuration": "Konfiguracija statistike",
"statistics_retention": "Zadržavanje statistike",
"statistics_retention_desc": "Ako smanjite vrednost intervala, neki podaci će biti izgubljeni",
"statistics_clear": " Očisti statistiku",
"statistics_clear_confirm": "Jeste li sigurni da želite da očistite statistiku?",
"statistics_retention_confirm": "Jeste li sigurni da želite da promenite zadržavanje statistike? Ako smanjite vrednost intervala, neki podaci će biti izgubljeni",
"statistics_cleared": "Statistika je uspešno očišćena",
"interval_hours": "{{count}} čas",
"interval_hours_plural": "{{count}} časova",
"filters_configuration": "Konfiguracija filtera",
"filters_enable": "Uključi filtere",
"filters_interval": "Interval ažuriranja filtera",
"disabled": "Isključeno",
"username_label": "Korisničko ime",
"username_placeholder": "Unesite korisničko ime",
"password_label": "Lozinka",
"password_placeholder": "Unesite lozinku",
"sign_in": "Prijavi se",
"sign_out": "Odjavi se",
"forgot_password": "Zaboravili ste lozinku?",
"forgot_password_desc": "Ispratite <0>ove korake</0> za stvaranje nove lozinke za vaš korisnički nalog.",
"location": "Lokacija",
"orgname": "Ime organizacije",
"netname": "Ime mreže",
"network": "Mreža",
"descr": "Opis",
"whois": "Whois",
"filtering_rules_learn_more": "<0>Saznajte više</0> o stvaranju vaše lične blokliste hostova.",
"blocked_by_response": "Blokirano od CNAME ili IP u odgovoru",
"blocked_by_cname_or_ip": "Blokirano od CNAME ili IP",
"try_again": "Pokušaj ponovo",
"domain_desc": "Unesite domen ili džoker koji želite da prepišete.",
"example_rewrite_domain": "prepiši odgovore samo za ovaj domen.",
"example_rewrite_wildcard": "prepiši odgovore za sve poddomene na <0>example.org</0>.",
"rewrite_ip_address": "IP adresa: kkoristite ovaj IP u A ili AAAA odgovoru",
"rewrite_domain_name": "Ime domena: dodajte CNAME zapis",
"rewrite_A": "<0>A</0>: posebna vrednost, zadrži <0>A</0> records iz apstrima",
"rewrite_AAAA": "<0>AAAA</0>: posebna vrednost, zadržite <0>AAAA</0> records iz apstrima",
"disable_ipv6": "Isključi IPv6",
"disable_ipv6_desc": "Ako je ovo uključeno, svi DNS unosi za IPv6 adrese (type AAAA) će biti odbačeni.",
"fastest_addr": "Najbrža IP adresa",
"fastest_addr_desc": "Pretražuje sve DNS servere i vraća najbržu IP adresu među svim odgovorima. Ovo će usporiti DNS pretragu jer moramo da čekamo na odgovore od svih DNS servera, ali će poboljšati sveukupnu povezanost.",
"autofix_warning_text": "Ako kliknete \"Popravi\", AdGuardHome će konfigurisati vaš sistem da koristi AdGuardHome DNS server.",
"autofix_warning_list": "To će izvršiti sledeće zadatke: <0>Deaktiviranje system DNSStubListener</0> <0>Set DNS server address to 127.0.0.1</0> <0>Replace symbolic link target of /etc/resolv.conf to /run/systemd/resolve/resolv.conf</0> <0>Stop DNSStubListener (reload systemd-resolved service)</0>",
"autofix_warning_result": "Kao rezultat, svi DNS zahtevi sa vašeg sistema će biti obrađeni od AdGuardHome.",
"tags_title": "Oznake",
"tags_desc": "Možete izabrati oznake koje odgovaraju klijentu. Oznake mogu biti uključene u pravila filtriranja i dozvoljavaju vam da ih preciznije primenite. <0>Saznajte više</0>",
"form_select_tags": "Izaberite oznake klijenta",
"check_title": "Proverite filtriranje",
"check_desc": "Proverite da li je host filtriran",
"check": "Proveri",
"form_enter_host": "Unesite host",
"filtered_custom_rules": "Filtrirano od strane prilagođenog pravila",
"choose_from_list": "Izaberite sa liste",
"add_custom_list": "Dodaj prilagođenu listu",
"host_whitelisted": "Host je na beloj listi",
"check_ip": "IP adrese: {{ip}}",
"check_cname": "CNAME: {{cname}}",
"check_reason": "Razlog: {{reason}}",
"check_rule": "Pravilo: {{rule}}",
"check_service": "Ime usluge: {{service}}",
"check_not_found": "Nije pronađeno na vašoj listi filtera",
"client_confirm_block": "Jeste li sigurni da želite da blokirate klijent \"{{ip}}\"?",
"client_confirm_unblock": "Jeste li sigurni da želite da odblokirate klijent \"{{ip}}\"?",
"client_blocked": "Klijent \"{{ip}}\" uspešno blokiran",
"client_unblocked": "Klijent \"{{ip}}\" uspešno odblokiran",
"static_ip": "Statička IP adresa",
"static_ip_desc": "AdGuard Home je server pa mu je zbog toga potrebna statička IP aadresa kako bi ispravno radio. Ako je nema, u nekim slučajevima, vaš ruter može dodeliti drugu IP adresu ovom uređaju.",
"set_static_ip": "Postavite statičku IP adresu",
"install_static_ok": "Dobre vesti! Statička IP adresa je već konfigurisana",
"install_static_error": "AdGuard Home se ne može automatski konfigurisati za ovo mrežno okruženje. Pogledajte uputstvo kako da to ručno uradite.",
"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?",
"list_updated": "{{count}} lista ažurirana",
"list_updated_plural": "{{count}} lista ažurirano",
"dnssec_enable": "Uključi DNSSEC",
"dnssec_enable_desc": "Postavlja DNSSEC zastavicu u odlaznim DNS zahtevima i proverava rezultat (DNSSEC rešavač je potreban)",
"validated_with_dnssec": "Potvrđeno sa DNSSEC",
"all_queries": "Svi zahtevi",
"show_blocked_responses": "Blokirano",
"show_whitelisted_responses": "Na beloj listi",
"show_processed_responses": "Obrađeno",
"blocked_safebrowsing": "Blokiralo bezbedno pregledanje",
"blocked_adult_websites": "Blokiraj sajtove za odrasle",
"blocked_threats": "Blokiranih pretnji",
"allowed": "Dozvoljeno",
"filtered": "Filtrirano",
"rewritten": "Prepisano",
"safe_search": "Sigurna pretraga",
"blocklist": "Lista blokiranih",
"milliseconds_abbreviation": "ms",
"cache_size": "Veličina predmemorije",
"cache_size_desc": "Veličina DNS predmemorije (u bitovima)",
"cache_ttl_min_override": "Prepiši najmanji TTL",
"cache_ttl_max_override": "Prepiši najveći TTL",
"enter_cache_size": "Unesite veličinu predmemorije",
"enter_cache_ttl_min_override": "Unesite najmanji TTL",
"enter_cache_ttl_max_override": "Unesite najveći TTL",
"cache_ttl_min_override_desc": "Prepiši TTL vrednost (minimum) dobijen od apstrim servera. Ova vrednost ne može biti veća od 3600 (1 sat)",
"cache_ttl_max_override_desc": "Prepiši TTL vrednost (maksimum) dobijen od apstrim servera",
"min_exceeds_max_value": "Najmanja vrednost je dosegla najveću vrednost",
"value_not_larger_than": "Vrednost ne može biti veća od {{maximum}}",
"filter_category_general": "Opšte",
"filter_category_security": "Bezbednost",
"filter_category_regional": "Region",
"filter_category_other": "Ostalo",
"filter_category_general_desc": "Lista koja blokira praćenja i reklame na većini uređaja",
"filter_category_security_desc": "Lista specijalizovana za blokiranje štetnog softvera, štetnih i fišing domena",
"filter_category_regional_desc": "Lista koja se usredsređuje na regionalne reklame i servere praćenja",
"filter_category_other_desc": "Ostale liste blokiranja",
"original_response": "Izvorni odgovor",
"click_to_view_queries": "Kliknite da pogledate zahteve"
}

View File

@@ -1,135 +1,153 @@
{
"url_added_successfully": "URL tillagd utan fel",
"client_settings": "Klientinställningar",
"example_upstream_reserved": "du kan specificera DNS-uppström <0>för en specifik domän</0>",
"upstream_parallel": "Använd parallella förfrågningar för att snabba upp dessa på uppströmsservrar.",
"bootstrap_dns": "Bootstrap-DNS-servrar",
"bootstrap_dns_desc": "Bootstrap-DNS-servrar används för att slå upp DoH/DoT-resolvrarnas IP-adresser som du specificerat som uppström.",
"check_dhcp_servers": "Letar efter DHCP-servrar",
"save_config": "Spara inst\u00e4llningar",
"save_config": "Spara inställningar",
"enabled_dhcp": "DHCP-server aktiverad",
"disabled_dhcp": "Dhcp-server avaktiverad",
"dhcp_title": "DHCP-server (experimentell)",
"dhcp_description": "Om din router inte har inst\u00e4llningar f\u00f6r DHCP kan du anv\u00e4nda AdGuards inbyggda server.",
"dhcp_description": "Om din router inte har inställningar för DHCP kan du använda AdGuards inbyggda server.",
"dhcp_enable": "Aktivera DHCP.-server",
"dhcp_disable": "Avaktivera DHCP-server",
"dhcp_not_found": "Ingen aktiv DHCP-server hittades i n\u00e4tverkat.",
"dhcp_found": "N\u00e5gra aktiva DHCP-servar uppt\u00e4cktes. Det \u00e4r inte s\u00e4kert att aktivera inbyggda DHCP-servrar.",
"dhcp_not_found": "Ingen aktiv DHCP-server hittades i nätverkat.",
"dhcp_found": "Några aktiva DHCP-servar upptäcktes. Det är inte säkert att aktivera inbyggda DHCP-servrar.",
"dhcp_leases": "DHCP-lease",
"dhcp_static_leases": "Statiska DHCP-leases",
"dhcp_leases_not_found": "Ingen DHCP-lease hittad",
"dhcp_config_saved": "Sparade inst\u00e4llningar f\u00f6r DHCP-servern",
"form_error_required": "Obligatoriskt f\u00e4lt",
"dhcp_config_saved": "Sparade inställningar för DHCP-servern",
"form_error_required": "Obligatoriskt fält",
"form_error_ip_format": "Ogiltigt IPv4-format",
"form_error_positive": "M\u00e5ste vara st\u00f6rre \u00e4n noll",
"form_error_mac_format": "Ogiltigt MAC-format",
"form_error_positive": "Måste vara större än noll",
"dhcp_form_gateway_input": "Gateway-IP",
"dhcp_form_subnet_input": "Subnetmask",
"dhcp_form_range_title": "IP-adressgr\u00e4nser",
"dhcp_form_range_start": "Startgr\u00e4ns",
"dhcp_form_range_end": "Gr\u00e4nsslut",
"dhcp_form_range_title": "IP-adressgränser",
"dhcp_form_range_start": "Startgräns",
"dhcp_form_range_end": "Gränsslut",
"dhcp_form_lease_title": "DHCP-leasetid (i sekunder)",
"dhcp_form_lease_input": "Leasetid",
"dhcp_interface_select": "V\u00e4lj DHCP-gr\u00e4nssnitt",
"dhcp_hardware_address": "H\u00e5rdvaruadress",
"dhcp_interface_select": "Välj DHCP-gränssnitt",
"dhcp_hardware_address": "Hårdvaruadress",
"dhcp_ip_addresses": "IP-adresser",
"dhcp_table_hostname": "V\u00e4rdnamn",
"dhcp_table_expires": "Utg\u00e5r",
"dhcp_warning": "Om du vill koppla in den inbyggda DHCP-servern m\u00e5ste du f\u00f6rs\u00e4kra dig om att det finns n\u00e5gra andra DHCP-servar som i s\u00e5 fall riskerar att orsaka avbrott p\u00e5 internet!",
"dhcp_table_hostname": "Värdnamn",
"dhcp_table_expires": "Utgår",
"dhcp_warning": "Om du vill använda den inbyggda DHCP-servern ändå, se till att det inte finns några andra aktiva DHCP-servrar. Annars kan den störa internetanslutningen för anslutna enheter!",
"dhcp_error": "Vi kunde inte avgöra om det finns en till DHCP-server på nätverket.",
"dhcp_static_ip_error": "För att kunna använda en DHCP-server måste det finnas en statisk IP-adress. Vi kunde inte avgöra om nätverksgränssnittet är konfigurerat med en statisk IP-adress. Ställ in en statistik IP-adress manuellt.",
"dhcp_dynamic_ip_found": "Din enhet använder en dynamisk IP-adress för gränssnittet <0>{{interfaceName}}</0>. För att kunna använda DHCP-servern behövs en statisk IP-adress. Din nuvarande IP-adress är <0>{{ipAddress}}</0>. Vi kommer att göra denna IP-adress statisk automatiskt om du trycker på knappen \"Aktivera DHCP\".",
"dhcp_lease_added": "Statisk lease \"{{key}}\" har lagts till",
"dhcp_lease_deleted": "Statisk lease \"{{key}}\" har raderats",
"dhcp_new_static_lease": "Ny statisk lease",
"dhcp_static_leases_not_found": "Inga statiska DHCP-leases hittade",
"dhcp_add_static_lease": "Lägg till statisk lease",
"delete_confirm": "Är du säker på att du vill ta bort \"{{key}}\"?",
"form_enter_hostname": "Skriv in värdnamn",
"error_details": "Felinformation",
"back": "Tiilbaka",
"dashboard": "Kontrollpanel",
"settings": "Inst\u00e4llningar",
"settings": "Inställningar",
"filters": "Filter",
"query_log": "F\u00f6rfr\u00e5gningslogg",
"query_log": "Förfrågningslogg",
"faq": "FAQ",
"version": "version",
"address": "adress",
"on": "P\u00c5",
"address": "Adress",
"on": "PÅ",
"off": "AV",
"copyright": "Copyright",
"homepage": "Hemsida",
"report_an_issue": "Rapportera ett problem",
"enable_protection": "Koppla p\u00e5 skydd",
"enabled_protection": "Kopplade p\u00e5 skydd",
"privacy_policy": "Integritetspolicy",
"enable_protection": "Koppla skydd",
"enabled_protection": "Kopplade på skydd",
"disable_protection": "Koppla bort skydd",
"disabled_protection": "Kopplade bort skydd",
"refresh_statics": "Uppdatera statistik",
"dns_query": "DNS-f\u00f6rfr\u00e5gningar",
"blocked_by": "Blockerat av filter",
"stats_malware_phishing": "Blockerad skadekod\/phising",
"dns_query": "DNS-förfrågningar",
"blocked_by": "<0>Blockerat av filter</0>",
"stats_malware_phishing": "Blockerad skadekod/phising",
"stats_adult": "Blockerade vuxensajter",
"stats_query_domain": "Mest efters\u00f6kta dom\u00e4ner",
"stats_query_domain": "Mest eftersökta domäner",
"for_last_24_hours": "under de senaste 24 timamrna",
"no_domains_found": "Inga dom\u00e4ner hittade",
"requests_count": "F\u00f6rfr\u00e5gningsantal",
"top_blocked_domains": "Flest blockerade dom\u00e4ner",
"for_last_days": "för den senaste {{count}} dagen",
"for_last_days_plural": "för de senaste {{count}} dagarna",
"no_domains_found": "Inga domäner hittade",
"requests_count": "Förfrågningsantal",
"top_blocked_domains": "Flest blockerade domäner",
"top_clients": "Toppklienter",
"no_clients_found": "Inga hitatde klienter",
"general_statistics": "Allm\u00e4n statistik",
"number_of_dns_query_24_hours": "Ett antal DNS-f\u00f6rfr\u00e5gningar utf\u00f6rdes under de senaste 244 timamrna",
"number_of_dns_query_blocked_24_hours": "Ett antal DNS-f\u00f6rfr\u00e5gningar blockerades av annonsfilter och v\u00e4rdens bloceringsklistor",
"number_of_dns_query_blocked_24_hours_by_sec": "Ett antal DNS-f\u00f6rfr\u00e5gningar blockerades av AdGuards modul f\u00f6r surfs\u00e4kerhet",
"general_statistics": "Allmän statistik",
"number_of_dns_query_days": "Ett antal DNS-förfrågningar utfördes under den senaste {{count}} dagen",
"number_of_dns_query_days_plural": "Ett antal DNS-förfrågningar utfördes under de senaste {{count}} dagarna",
"number_of_dns_query_24_hours": "Ett antal DNS-förfrågningar utfördes under de senaste 244 timamrna",
"number_of_dns_query_blocked_24_hours": "Ett antal DNS-förfrågningar blockerades av annonsfilter och värdens bloceringsklistor",
"number_of_dns_query_blocked_24_hours_by_sec": "Ett antal DNS-förfrågningar blockerades av AdGuards modul för surfsäkerhet",
"number_of_dns_query_blocked_24_hours_adult": "Ett anta vuxensajter blockerades",
"enforced_save_search": "Aktivering av S\u00e4ker surf",
"number_of_dns_query_to_safe_search": "Ett antal DNS-f\u00f6rfr\u00e5gningar genomf\u00f6rdes p\u00e5 s\u00f6kmotorer med S\u00e4ker surf aktiverat",
"enforced_save_search": "Aktivering av Säker surf",
"number_of_dns_query_to_safe_search": "Ett antal DNS-förfrågningar genomfördes på sökmotorer med Säker surf aktiverat",
"average_processing_time": "Genomsnittlig processtid",
"average_processing_time_hint": "Genomsnittlig processtid i millisekunder f\u00f6r DNS-f\u00f6rfr\u00e5gning",
"block_domain_use_filters_and_hosts": "Blockera dom\u00e4ner med filter- och v\u00e4rdfiler",
"filters_block_toggle_hint": "Du kan st\u00e4lla in egna blockerings regler i <a href='#filters'>Filterinst\u00e4llningar<\/a>.",
"use_adguard_browsing_sec": "Amv\u00e4nd AdGuards webbservice f\u00f6r surfs\u00e4kerhet",
"use_adguard_browsing_sec_hint": "AdGuard Home kommer att kontrollera om en dom\u00e4n \u00e4r svartlistad i webbservicens surfs\u00e4kerhet. Med en integritetsv\u00e4nlig metod g\u00f6rs en API-lookup f\u00f6r att kontrollera : endast en kort prefix i dom\u00e4nnamnet SHA256 hash skickas till servern.",
"use_adguard_parental": "Anv\u00e4nda AdGuards webbservice f\u00f6r f\u00e4r\u00e4ldrakontroll",
"use_adguard_parental_hint": "AdGuard Home kommer att kontrollera dom\u00e4ner f\u00f6r inneh\u00e5ll av vuxenmaterial . Samma integritetsv\u00e4nliga metod f\u00f6r API-lookup som till\u00e4mpas i webbservicens surfs\u00e4kerhet anv\u00e4nds.",
"enforce_safe_search": "Till\u00e4mpa S\u00e4ker surf",
"enforce_save_search_hint": "AdGuard Home kan framtvinga s\u00e4ker surf i f\u00f6ljande s\u00f6kmoterer: Google, Youtube, Bing, och Yandex.",
"average_processing_time_hint": "Genomsnittlig processtid i millisekunder för DNS-förfrågning",
"block_domain_use_filters_and_hosts": "Blockera domäner med filter- och värdfiler",
"filters_block_toggle_hint": "Du kan ställa in egna blockerings regler i <a href='#filters'>Filterinställningar</a>.",
"use_adguard_browsing_sec": "Amvänd AdGuards webbservice för surfsäkerhet",
"use_adguard_browsing_sec_hint": "AdGuard Home kommer att kontrollera om en domän är svartlistad i webbservicens surfsäkerhet. Med en integritetsvänlig metod görs en API-lookup för att kontrollera : endast en kort prefix i domännamnet SHA256 hash skickas till servern.",
"use_adguard_parental": "Använda AdGuards webbservice för färäldrakontroll",
"use_adguard_parental_hint": "AdGuard Home kommer att kontrollera domäner för innehåll av vuxenmaterial . Samma integritetsvänliga metod för API-lookup som tillämpas i webbservicens surfsäkerhet används.",
"enforce_safe_search": "Tillämpa Säker surf",
"enforce_save_search_hint": "AdGuard Home kan framtvinga säker surf i följande sökmoterer: Google, Youtube, Bing, och Yandex.",
"no_servers_specified": "Inga servrar angivna",
"no_settings": "Inga inst\u00e4llningar",
"general_settings": "Allm\u00e4nna inst\u00e4llningar",
"general_settings": "Allmänna inställningar",
"dns_settings": "DNS-inställningar",
"encryption_settings": "Krypteringsinställningar",
"dhcp_settings": "DHCP-inställningar",
"upstream_dns": "Upstream DNS-servrar",
"upstream_dns_hint": "Om du l\u00e5ter f\u00e4ltet vara tomt kommer AdGuard Home att anv\u00e4nda <a href='https:\/\/1.1.1.1\/' target='_blank'>Cloudflare DNS<\/a> f\u00f6r upstream. Anv\u00e4nd tls:\/\/ prefix f\u00f6r DNS \u00f6ver TLS-servrar.",
"test_upstream_btn": "Testa uppstr\u00f6mmar",
"apply_btn": "Till\u00e4mpa",
"upstream_dns_hint": "Om du låter fältet vara tomt kommer AdGuard Home att använda <a href='https://1.1.1.1/' target='_blank'>Cloudflare DNS</a> för uppström.",
"test_upstream_btn": "Testa uppströmmar",
"apply_btn": "Tillämpa",
"disabled_filtering_toast": "Filtrering bortkopplad",
"enabled_filtering_toast": "Filtrering inkopplad",
"disabled_safe_browsing_toast": "S\u00e4ker surfning bortkopplat",
"enabled_safe_browsing_toast": "S\u00e4ker surfning inkopplat",
"disabled_parental_toast": "F\u00f6r\u00e4ldrakontroll bortkopplat",
"enabled_parental_toast": "F\u00f6r\u00e4ldrakontroll inkopplat",
"disabled_safe_search_toast": "S\u00e4ker webbs\u00f6kning bortkopplat",
"enabled_save_search_toast": "S\u00e4ker webbs\u00f6kning inkopplat",
"disabled_safe_browsing_toast": "Säker surfning bortkopplat",
"enabled_safe_browsing_toast": "Säker surfning inkopplat",
"disabled_parental_toast": "Föräldrakontroll bortkopplat",
"enabled_parental_toast": "Föräldrakontroll inkopplat",
"disabled_safe_search_toast": "Säker webbsökning bortkopplat",
"enabled_save_search_toast": "Säker webbsökning inkopplat",
"enabled_table_header": "Inkopplat",
"name_table_header": "Namn",
"filter_url_table_header": "Filtrerar URL",
"rules_count_table_header": "Regelantal",
"last_time_updated_table_header": "Uppdaterades senast",
"actions_table_header": "\u00c5tg\u00e4rder",
"actions_table_header": "Åtgärder",
"edit_table_action": "Redigera",
"delete_table_action": "Ta bort",
"filters_and_hosts": "Filtrerings- och v\u00e4rdlistor f\u00f6r blockering",
"filters_and_hosts_hint": "AdGuard till\u00e4mpar grundl\u00e4ggande annonsblockeringsregler och v\u00e4rdfiltersyntaxer",
"no_filters_added": "Inga filter tillagda",
"add_filter_btn": "L\u00e4gg till filter",
"filters_and_hosts_hint": "AdGuard tillämpar grundläggande annonsblockeringsregler och värdfiltersyntaxer",
"cancel_btn": "Avbryt",
"enter_name_hint": "Skriv in namn",
"enter_url_hint": "Skriv in URL",
"check_updates_btn": "S\u00f6k efter uppdateringar",
"new_filter_btn": "Nytt filterabonemang",
"enter_valid_filter_url": "Skriv in en giltigt URL till ett filterabonnemang eller v\u00e4rdfil.",
"check_updates_btn": "Sök efter uppdateringar",
"custom_filter_rules": "Egna filterregler",
"custom_filter_rules_hint": "Skriv en regel per rad. Du kan anv\u00e4nda antingen annonsblockeringsregler eller v\u00e4rdfilssyntax.",
"custom_filter_rules_hint": "Skriv en regel per rad. Du kan använda antingen annonsblockeringsregler eller värdfilssyntax.",
"examples_title": "Exempel",
"example_meaning_filter_block": "blockera \u00e5tkomst till dom\u00e4n example.org domain och alla dess subdom\u00e4ner",
"example_meaning_filter_whitelist": "avblockera \u00e5tkomst till dom\u00e4n example.org domain och alla dess subdom\u00e4ner",
"example_meaning_host_block": "AdGuard Home kommer nu att returnera adress 127.0.0.1 f\u00f6r dom\u00e4nexemplet example.org (dock utan dess subdom\u00e4ner).",
"example_comment": "! H\u00e4r kommer en kommentar",
"example_meaning_filter_block": "blockera åtkomst till domän example.org domain och alla dess subdomäner",
"example_meaning_filter_whitelist": "avblockera åtkomst till domän example.org domain och alla dess subdomäner",
"example_meaning_host_block": "AdGuard Home kommer nu att returnera adress 127.0.0.1 för domänexemplet example.org (dock utan dess subdomäner).",
"example_comment": "! Här kommer en kommentar",
"example_comment_meaning": "Endast en kommentar",
"example_comment_hash": "# Ocks\u00e5 en kommentar",
"example_regex_meaning": "blockera \u00e5tkomst till en dom\u00e4n som matchar det angivna uttrycket",
"example_upstream_regular": "vanlig DNS (\u00f6ver UDP)",
"example_upstream_dot": "krypterat <0>DNS-over-TLS<\/0>",
"example_upstream_doh": "krypterat <0>DNS-over-HTTPS<\/0>",
"example_upstream_sdns": "Du kan anv\u00e4nda <0>DNS-stamps<\/0> f\u00f6r <1>DNSCrypt<\/1> eller <2>DNS-\u00f6ver-HTTPS<\/2>\n-resolvers",
"example_upstream_tcp": "vanlig DNS (\u00f6ver UDP)",
"all_filters_up_to_date_toast": "Alla filter \u00e4r redan aktuella",
"updated_upstream_dns_toast": "Uppdaterade uppstr\u00f6ms-dns-servrar",
"example_comment_hash": "# Också en kommentar",
"example_regex_meaning": "blockera åtkomst till domäner som matchar det angivna uttrycket",
"example_upstream_regular": "vanlig DNS (över UDP)",
"example_upstream_dot": "krypterat <0>DNS-over-TLS</0>",
"example_upstream_doh": "krypterat <0>DNS-over-HTTPS</0>",
"example_upstream_sdns": "Du kan använda <0>DNS-stamps</0> för <1>DNSCrypt</1> eller <2>DNS-over-HTTPS</2>-resolvers",
"example_upstream_tcp": "vanlig DNS (över UDP)",
"updated_upstream_dns_toast": "Uppdaterade uppströms-dns-servrar",
"dns_test_ok_toast": "Angivna DNS servrar fungerar korrekt",
"dns_test_not_ok_toast": "Server \"{{key}}\": kunde inte anv\u00e4ndas. Var sn\u00e4ll och kolla att du skrivit in r\u00e4tt",
"unblock_btn": "Avblockera",
"block_btn": "Blockera",
"dns_test_not_ok_toast": "Server \"{{key}}\": kunde inte användas. Var snäll och kolla att du skrivit in rätt",
"unblock": "Avblockera",
"block": "Blockera",
"time_table_header": "Tid",
"domain_name_table_header": "Dom\u00e4nnamn",
"date": "Datum",
"domain_name_table_header": "Domännamn",
"type_table_header": "Typ",
"response_table_header": "Svar",
"client_table_header": "Klient",
@@ -137,114 +155,210 @@
"show_all_filter_type": "Visa alla",
"show_filtered_type": "Visa filtrerade",
"no_logs_found": "Inga logga funna",
"disabled_log_btn": "Koppla bort logg",
"download_log_file_btn": "Ladda ner loggfil",
"refresh_btn": "L\u00e4s in igen",
"enabled_log_btn": "Koppla in logg",
"last_dns_queries": "De senaste 5000 DNS-anropen",
"previous_btn": "F\u00f6reg\u00e5ende",
"next_btn": "N\u00e4sta",
"loading_table_status": "L\u00e4ser in...",
"refresh_btn": "Läs in igen",
"previous_btn": "Föregående",
"next_btn": "Nästa",
"loading_table_status": "Läser in...",
"page_table_footer_text": "Sida",
"of_table_footer_text": "av",
"rows_table_footer_text": "rader",
"updated_custom_filtering_toast": "Uppdaterade de egna filterreglerna",
"rule_removed_from_custom_filtering_toast": "Regel borttagen fr\u00e5n de egna filterreglerna",
"rule_removed_from_custom_filtering_toast": "Regel borttagen från de egna filterreglerna",
"rule_added_to_custom_filtering_toast": "Regel tillagd till de egna filterreglerna",
"query_log_disabled_toast": "F\u00f6rfr\u00e5gningsloggen bortkopplad",
"query_log_enabled_toast": "F\u00f6rfr\u00e5gningsloggen inkopplad",
"source_label": "K\u00e4lla",
"found_in_known_domain_db": "Hittad i dom\u00e4ndatabas.",
"query_log_response_status": "Status: {{value}}",
"query_log_filtered": "Filtrerat av {{filter}}",
"query_log_confirm_clear": "Är du säker på att du vill rensa hela förfrågningsloggen?",
"query_log_cleared": "Förfrågningsloggen har rensats",
"query_log_clear": "Rensa förfrågningsloggar",
"query_log_retention": "Förfrågningsloggars retentionstid",
"query_log_enable": "Aktivera logg",
"query_log_configuration": "Logginställningar",
"query_log_disabled": "Förfrågningsloggen är avaktiverad och kan konfigureras i <0>inställningar</0>",
"query_log_strict_search": "Använd dubbla citattecken för strikt sökning",
"query_log_retention_confirm": "Är du säker på att du vill ändra förfrågningsloggars retentionstid? Om du minskar intervallet kommer viss data att gå förlorad",
"source_label": "Källa",
"found_in_known_domain_db": "Hittad i domändatabas.",
"category_label": "Kategori",
"rule_label": "Regel",
"filter_label": "Filter",
"unknown_filter": "Ok\u00e4nt filter {{filterId}}",
"install_welcome_title": "V\u00e4lkommen till AdGuard Home!",
"install_welcome_desc": "AdGuard Home \u00e4r en DNS-server f\u00f6r n\u00e4tverkst\u00e4ckande annons- och sp\u00e5rningsblockering. Dess syfte \u00e4r att de dig kontroll \u00f6ver hela n\u00e4tverket och alla dina enheter, utan behov av att anv\u00e4nda klientbaserade program.",
"install_settings_title": "Administrat\u00f6rens webbgr\u00e4nssnitt",
"install_settings_listen": "\u00d6vervakningsgr\u00e4nssnitt",
"unknown_filter": "Okänt filter {{filterId}}",
"install_welcome_title": "Välkommen till AdGuard Home!",
"install_welcome_desc": "AdGuard Home är en DNS-server för nätverkstäckande annons- och spårningsblockering. Dess syfte är att de dig kontroll över hela nätverket och alla dina enheter, utan behov av att använda klientbaserade program.",
"install_settings_title": "Administratörens webbgränssnitt",
"install_settings_listen": "Övervakningsgränssnitt",
"install_settings_port": "Port",
"install_settings_interface_link": "Din administrat\u00f6rssida f\u00f6r AdGuard Home finns p\u00e5 f\u00f6ljande adresser:",
"install_settings_interface_link": "Din administratörssida för AdGuard Home finns på följande adresser:",
"form_error_port": "Skriv in ett giltigt portnummer",
"install_settings_dns": "DNS-server",
"install_settings_dns_desc": "Du beh\u00f6ver st\u00e4lla in dina enheter eller din router f\u00f6r att anv\u00e4nda DNS-server p\u00e5 f\u00f6ljande adresser.",
"install_settings_all_interfaces": "Alla gr\u00e4nssnitt",
"install_settings_dns_desc": "Du behöver ställa in dina enheter eller din router för att använda DNS-server på följande adresser.",
"install_settings_all_interfaces": "Alla gränssnitt",
"install_auth_title": "Autentisering",
"install_auth_desc": "Det rekommenderas starkt att st\u00e4lla in l\u00f6senordsskydd till webbgr\u00e4nssnittets administrativa del i ditt AdGuard Home. \u00c4ven om den endast \u00e4r \u00e5tkomlig p\u00e5 ditt lokala n\u00e4tverk rekommenderas det \u00e4nd\u00e5 att skydda det mot o\u00f6nskad \u00e5tkomst.",
"install_auth_username": "Anv\u00e4ndarnamn",
"install_auth_password": "L\u00f6senord",
"install_auth_confirm": "Bekr\u00e4fta l\u00f6senord",
"install_auth_username_enter": "Skriv in anv\u00e4ndarnamn",
"install_auth_password_enter": "Skriv in l\u00f6senord",
"install_auth_desc": "Det rekommenderas starkt att ställa in lösenordsskydd till webbgränssnittets administrativa del i ditt AdGuard Home. Även om den endast är åtkomlig på ditt lokala nätverk rekommenderas det ändå att skydda det mot oönskad åtkomst.",
"install_auth_username": "Användarnamn",
"install_auth_password": "Lösenord",
"install_auth_confirm": "Bekräfta lösenord",
"install_auth_username_enter": "Skriv in användarnamn",
"install_auth_password_enter": "Skriv in lösenord",
"install_step": "Steg",
"install_devices_title": "St\u00e4ll in dina enheter",
"install_devices_desc": "F\u00f6r att kunna anv\u00e4nda AdGuard Home m\u00e5ste du s\u00e4lla in dina enheter f\u00f6r att utnyttja den.",
"install_devices_title": "Ställ in dina enheter",
"install_devices_desc": "För att kunna använda AdGuard Home måste du sälla in dina enheter för att utnyttja den.",
"install_submit_title": "Grattis!",
"install_submit_desc": "Inst\u00e4llningsproceduren \u00e4r klar och du kan b\u00f6rja anv\u00e4nda AdGuard Home.",
"install_submit_desc": "Inställningsproceduren är klar och du kan börja använda AdGuard Home.",
"install_devices_router": "Router",
"install_devices_router_desc": "Den h\u00e4r anpassningen kommer att automatiskt t\u00e4cka in alla de enheter som \u00e4r anslutna till din hemmarouter och du beh\u00f6ver d\u00e4rf\u00f6r inte konfigurera var och en individuellt.",
"install_devices_address": "AdGuard Home DNS-server t\u00e4cker f\u00f6ljande adresser",
"install_devices_router_list_1": "\u00d6ppna routern Inst\u00e4llningar. Vanligtvis f\u00e5r man \u00e5tkomst via en URL (http:\/\/192.168.0.1 eller 192.168.1.1)- Du kommer att bli ombes att ange ett l\u00f6senord. L\u00f6senordet kan st\u00e5 angivet p\u00e5 routerns bak- eller undersida. Om l\u00f6senordet \u00e4ndrats och du inte k\u00e4nner till det kan du \u00e5terst\u00e4lla med Reset-knappen. En del routrar kr\u00e4ver en s\u00e4rskild applikation som skall finnas p\u00e5 antingen din dator eller i din mobil.",
"install_devices_router_list_2": "Leta upp DHCP\/DNS-inst\u00e4llningarna. Titta efter DNS-tecken intill ett f\u00e4lt med tv\u00e5 eller tre upps\u00e4ttningar siffror, var och en uppdelade i grupper om fyra med en eller tre siffror.",
"install_devices_router_desc": "Den här anpassningen kommer att automatiskt täcka in alla de enheter som är anslutna till din hemmarouter och du behöver därför inte konfigurera var och en individuellt.",
"install_devices_address": "AdGuard Home DNS-server täcker följande adresser",
"install_devices_router_list_1": "Öppna routern Inställningar. Vanligtvis får man åtkomst via en URL (http://192.168.0.1 eller 192.168.1.1)- Du kommer att bli ombes att ange ett lösenord. Lösenordet kan stå angivet på routerns bak- eller undersida. Om lösenordet ändrats och du inte känner till det kan du återställa med Reset-knappen. En del routrar kräver en särskild applikation som skall finnas på antingen din dator eller i din mobil.",
"install_devices_router_list_2": "Leta upp DHCP/DNS-inställningarna. Titta efter DNS-tecken intill ett fält med två eller tre uppsättningar siffror, var och en uppdelade i grupper om fyra med en eller tre siffror.",
"install_devices_router_list_3": "Ange serveradressen till ditt AdGuard Home.",
"install_devices_windows_list_1": "\u00d6ppna Kontrollpanelen via Start eller Windows S\u00f6k.",
"install_devices_windows_list_2": "V\u00e4lj N\u00e4tverks och delningscenter, N\u00e4tverk och Internet.",
"install_devices_windows_list_3": "Leta upp \u00c4ndra n\u00e4tverkskortsalternativ",
"install_devices_windows_list_4": "Markera din aktiva anslutning. H\u00f6gerklicka p\u00e5 den och v\u00e4lj Egenskaper.",
"install_devices_windows_list_5": "Markera Internet Protocol Version 4 (TCP\/IP) och klicka p\u00e5 knappen Egenskaper.",
"install_devices_windows_list_6": "Markera Anv\u00e4nd f\u00f6ljande DNS-serveradresser och skriv in adresserna till ditt AdGuard Home.",
"install_devices_macos_list_1": "Klicka p\u00e5 Apple-ikonen och v\u00e4lj Systemalternativ.",
"install_devices_macos_list_2": "Klicka p\u00e5 N\u00e4tverk.",
"install_devices_macos_list_3": "V\u00e4lj den f\u00f6rsta anslutningen i listan och klicka p\u00e5 Avancerat.",
"install_devices_macos_list_4": "Klicka p\u00e5 DNS-fliken och skriv in AdGuard Homes serveradresser",
"install_devices_android_list_1": "V\u00e4lj Inst\u00e4llningar fr\u00e5n Androids hemknapp",
"install_devices_android_list_2": "Tryck p\u00e5 N\u00e4tverk och Internet, Wi-Fi. Alla tillg\u00e4ngliga n\u00e4tverk visas i en lista (det g\u00e5r inte all v\u00e4lja egen DNS p\u00e5 mobiln\u00e4tverk.",
"install_devices_android_list_3": "H\u00e5ll ner p\u00e5 n\u00e4tverksnamnet som du \u00e4r ansluten till och v\u00e4lj \u00c4ndra n\u00e4tverk.",
"install_devices_android_list_4": "P\u00e5 en del enheter kan du beh\u00f6va v\u00e4lja Avancerat f\u00f6r att komma \u00e5t ytterligare inst\u00e4llningar. F\u00f6r att \u00e4ndra p\u00e5 DNS-inst\u00e4llningar m\u00e5ste du byta IP-inst\u00e4llning fr\u00e5n DHCP till Statisk. P\u00e5 Android Pie v\u00e4ljs Privat DNS p\u00e5 N\u00e4tverk och internet.",
"install_devices_android_list_5": "\u00c4ndra DNS 1 och DNS 2 till serveradresserna f\u00f6r AdGuard Home.",
"install_devices_ios_list_1": "Tryck Inst\u00e4llningar fr\u00e5n hemsk\u00e4rmen.",
"install_devices_ios_list_2": "V\u00e4lj Wi_Fi p\u00e5 den v\u00e4nstra menyn (det g\u00e5r inte att st\u00e4lla in egen DNS f\u00f6r mobila n\u00e4tverk).",
"install_devices_ios_list_3": "Tryck p\u00e5 namnet p\u00e5 den aktiva anslutningen.",
"install_devices_ios_list_4": "Skriv in AdGuard Homes serveradresser i DNS-f\u00e4lten.",
"get_started": "Kom ig\u00e5ng",
"next": "N\u00e4sta",
"open_dashboard": "\u00d6ppna Kontrollbordet",
"install_devices_windows_list_1": "Öppna Kontrollpanelen via Start eller Windows Sök.",
"install_devices_windows_list_2": "Välj Nätverks och delningscenter, Nätverk och Internet.",
"install_devices_windows_list_3": "Leta upp Ändra nätverkskortsalternativ",
"install_devices_windows_list_4": "Markera din aktiva anslutning. Högerklicka på den och välj Egenskaper.",
"install_devices_windows_list_5": "Markera Internet Protocol Version 4 (TCP/IP) och klicka på knappen Egenskaper.",
"install_devices_windows_list_6": "Markera Använd följande DNS-serveradresser och skriv in adresserna till ditt AdGuard Home.",
"install_devices_macos_list_1": "Klicka på Apple-ikonen och välj Systemalternativ.",
"install_devices_macos_list_2": "Klicka på Nätverk.",
"install_devices_macos_list_3": "Välj den första anslutningen i listan och klicka på Avancerat.",
"install_devices_macos_list_4": "Klicka på DNS-fliken och skriv in AdGuard Homes serveradresser",
"install_devices_android_list_1": "Välj Inställningar från Androids hemknapp",
"install_devices_android_list_2": "Tryck på Nätverk och Internet, Wi-Fi. Alla tillgängliga nätverk visas i en lista (det går inte all välja egen DNS på mobilnätverk.",
"install_devices_android_list_3": "Håll ner på nätverksnamnet som du är ansluten till och välj Ändra nätverk.",
"install_devices_android_list_4": "På en del enheter kan du behöva välja Avancerat för att komma åt ytterligare inställningar. För att ändra på DNS-inställningar måste du byta IP-inställning från DHCP till Statisk. På Android Pie väljs Privat DNS på Nätverk och internet.",
"install_devices_android_list_5": "Ändra DNS 1 och DNS 2 till serveradresserna för AdGuard Home.",
"install_devices_ios_list_1": "Tryck Inställningar från hemskärmen.",
"install_devices_ios_list_2": "Välj Wi_Fi på den vänstra menyn (det går inte att ställa in egen DNS för mobila nätverk).",
"install_devices_ios_list_3": "Tryck på namnet på den aktiva anslutningen.",
"install_devices_ios_list_4": "Skriv in AdGuard Homes serveradresser i DNS-fälten.",
"get_started": "Kom igång",
"next": "Nästa",
"open_dashboard": "Öppna Kontrollbordet",
"install_saved": "Sparat utan fel",
"encryption_title": "Encryption",
"encryption_desc": "Encryption (HTTPS\/TLS) support for both DNS and admin web interface",
"encryption_config_saved": "Encryption config saved",
"encryption_server": "Server name",
"encryption_server_enter": "Enter your domain name",
"encryption_server_desc": "In order to use HTTPS, you need to enter the server name that matches your SSL certificate.",
"encryption_redirect": "Redirect to HTTPS automatically",
"encryption_redirect_desc": "If checked, AdGuard Home will automatically redirect you from HTTP to HTTPS addresses.",
"encryption_https": "HTTPS port",
"encryption_https_desc": "If HTTPS port is configured, AdGuard Home admin interface will be accessible via HTTPS, and it will also provide DNS-over-HTTPS on '\/dns-query' location.",
"encryption_dot": "DNS-over-TLS port",
"encryption_dot_desc": "If this port is configured, AdGuard Home will run a DNS-over-TLS server on this port.",
"encryption_certificates": "Certificates",
"encryption_certificates_desc": "In order to use encryption, you need to provide a valid SSL certificates chain for your domain. You can get a free certificate on <0>{{link}}<\/0> or you can buy it from one of the trusted Certificate Authorities.",
"encryption_certificates_input": "Copy\/paste your PEM-encoded certificates here.",
"encryption_title": "Kryptering",
"encryption_desc": "Krypteringsstöd (HTTPS/TLS) för både DNS och adminwebbgränssnitt.",
"encryption_config_saved": "Krypteringsinställningar sparade",
"encryption_server": "Servernamn",
"encryption_server_enter": "Skriv in ditt domännamn",
"encryption_server_desc": "För att använda HTTPS behöver du skriva in servernamnet som stämmer överens med ditt SSL-certifikat.",
"encryption_redirect": "Omdirigera till HTTPS automatiskt",
"encryption_redirect_desc": "Om bockad kommer AdGuard Home automatiskt att omdirigera dig från HTTP till HTTPS-adresser.",
"encryption_https": "HTTPS-port",
"encryption_https_desc": "Om en HTTPS-port är inställd kommer gränssnittet till AdGuard Home administrering att kunna nås via HTTPS och kommer också att erbjuda DNS-over-HTTPS '/dns-query' plats.",
"encryption_dot": "DNS-över-TLS port",
"encryption_dot_desc": "Om den här porten ställs in kommer AdGuard Home att använda DNS-over-TLS-server porten.",
"encryption_certificates": "Certifikat",
"encryption_certificates_desc": "För att använda kryptering måste du ange ett giltigt SSL-certifikat för din domän. Du kan skaffa ett certifikat gratis på <0>{{link}}</0> eller köpa ett från någon av de godkända certifikatutfärdare.",
"encryption_certificates_input": "Kopiera/klistra in dina PEM-kodade certifikat här.",
"encryption_status": "Status",
"encryption_expire": "Expires",
"encryption_key": "Private key",
"encryption_key_input": "Copy\/paste your PEM-encoded private key for your certificate here.",
"encryption_enable": "Enable Encryption (HTTPS, DNS-over-HTTPS, and DNS-over-TLS)",
"encryption_enable_desc": "If encryption is enabled, AdGuard Home admin interface will work over HTTPS, and the DNS server will listen for requests over DNS-over-HTTPS and DNS-over-TLS.",
"encryption_chain_valid": "Certificate chain is valid",
"encryption_chain_invalid": "Certificate chain is invalid",
"encryption_key_valid": "This is a valid {{type}} private key",
"encryption_key_invalid": "This is an invalid {{type}} private key",
"encryption_subject": "Subject",
"encryption_issuer": "Issuer",
"encryption_hostnames": "Hostnames",
"encryption_reset": "Are you sure you want to reset encryption settings?",
"topline_expiring_certificate": "Your SSL certificate is about to expire. Update <0>Encryption settings<\/0>.",
"topline_expired_certificate": "Your SSL certificate is expired. Update <0>Encryption settings<\/0>.",
"form_error_port_range": "Enter port value in the range of 80-65535",
"form_error_port_unsafe": "This is an unsafe port",
"form_error_equal": "Shouldn't be equal",
"form_error_password": "L\u00f6senorden \u00f6verensst\u00e4mmer inte",
"reset_settings": "Reset settings",
"update_announcement": "AdGuard Home {{version}} is now available! <0>Click here<\/0> for more info."
"encryption_expire": "Utgår",
"encryption_key": "Privat nyckel",
"encryption_key_input": "Kopiera/klistra in din PEM-kodade privata nyckel för ditt certifikat här.",
"encryption_enable": "Aktivera kryptering (HTTPS, DNS-över-HTTPS och DNS-över-TLS)",
"encryption_enable_desc": "Om kryptering är aktiverat kommer administratörsgränssnittet till AdGuard Home att köras över HTTPS och DNS-servern kommer att lyssna på förfrågningar över DNS-over-HTTPS och DNS-over-TLS.",
"encryption_chain_valid": "Certifikatkedjan är giltig",
"encryption_chain_invalid": "Certifikatkedjan är ogiltig",
"encryption_key_valid": "Det här är en giltig {{type}} privat nyckel",
"encryption_key_invalid": "Det här är en ogiltig {{type}} privat nyckel",
"encryption_subject": "Subjekt",
"encryption_issuer": "Utgivare",
"encryption_hostnames": "Värdnamn",
"encryption_reset": "Är du säker på att du vill återställa krypteringsinställningarna?",
"topline_expiring_certificate": "Ditt SSL-certifikat håller på att gå ut. <0>Krypteringsinställningar</0>.",
"topline_expired_certificate": "Ditt SSL-certifikat har gått ut. Uppdatera <0>Krypteringsinställningar</0>-",
"form_error_port_range": "Ange ett portnummer inom värdena 80-65535",
"form_error_port_unsafe": "Det här är en osäker port",
"form_error_equal": "Skall inte vara lika",
"form_error_password": "Lösenorden överensstämmer inte",
"reset_settings": "Återställ inställningar",
"update_announcement": "AdGuard Home {{version}} är nu tillgänglig! <0>Klicka här</0> för mer information.",
"setup_guide": "Inställningsguide",
"dns_addresses": "DNS-adresser",
"down": "Ner",
"fix": "Fixa",
"dns_providers": "Här är en <0>lista över kända DNS-leverantörer</0> att välja från.",
"update_now": "Uppdatera nu",
"update_failed": "Automatisk uppdatering misslyckad. Var god <a href='https://github.com/AdguardTeam/AdGuardHome/wiki/Getting-Started#update'>följ stegen</a> för att uppdatera manuellt.",
"processing_update": "Vänta, AdGuard Home uppdateras",
"clients_title": "Klienter",
"clients_desc": "Konfigurera enheter uppkopplade mot AdGuard Home",
"settings_global": "Global",
"settings_custom": "Anpassade",
"table_client": "Klient",
"table_name": "Namn",
"save_btn": "Spara",
"client_add": "Lägg till klient",
"client_new": "Ny klient",
"client_edit": "Redigera klient",
"client_identifier": "Identifikator",
"ip_address": "IP-adress",
"client_identifier_desc": "Klienter kan identifieras genom IP-adresser eller MAC-adresser. Notera att användning av MAC som identifierare bara är möjligt om AdGuard Home också är en <0>DHCP-server</0>",
"form_enter_ip": "Skriv in IP",
"form_enter_mac": "Skriv in MAC",
"form_client_name": "Skriv in klientnamn",
"client_global_settings": "Använda globala inställningar",
"client_deleted": "Klient \"{{key}}\" har raderats",
"client_added": "Klient \"{{key}}\" har lagts till",
"client_updated": "Klient \"{{key}}\" har uppdaterats",
"clients_not_found": "Inga klienter hittade",
"client_confirm_delete": "Är du säker på att du vill ta bort klient \"{{key}}\"?",
"auto_clients_title": "Klienter (körtid)",
"auto_clients_desc": "Data från klienter som använder AdGuard Home, men inte är sparade i konfigurationen",
"access_title": "Åtkomstinställningar",
"access_desc": "Här kan du konfigurera åtkomstregler för AdGuard Homes DNS-server.",
"access_allowed_title": "Tillåtna klienter",
"access_allowed_desc": "En lista över CIDR eller IP-adresser. Om konfigurerad kommer AdGuard Home endast acceptera förfrågningar från dessa IP-adresser.",
"access_disallowed_title": "Otillåtna klienter",
"access_disallowed_desc": "En lista över CIDR eller IP-adresser. Om konfigurerad kommer AdGuard Home inte acceptera förfrågningar från dessa IP-adresser.",
"access_blocked_title": "Blockerade domäner",
"access_blocked_desc": "Ej att blandas ihop med filter. AdGuard Home kommer inte accepter DNS-förfrågningar innehållande dessa domäner.",
"access_settings_saved": "Åtkomstinställningar sparade",
"updates_checked": "Sökning efter uppdateringar genomförd",
"updates_version_equal": "AdGuard Home är uppdaterat",
"check_updates_now": "Sök efter uppdateringar nu",
"dns_privacy": "DNS-Integritet",
"setup_dns_privacy_1": "<0>DNS-över-TLS:</0> Använd: <1>{{address}}</1>",
"setup_dns_privacy_2": "<0>DNS-över-HTTPS:</0> Använd: <1>{{address}}</1>",
"setup_dns_privacy_3": "<0>Notera att krypterade DNS-protokoll endast stöds på Android 9. Du behöver därför installera ytterligare mjukvara för andra operativsystem.</0><0>Här är en lista över program du kan använda.</0>",
"setup_dns_privacy_android_1": "Android 9 har inbyggt stöd för DNS-över-TLS. Konfigurera och uppge domännamn under Inställningar → Nätverk & Internet → Avancerat → Privat DNS.",
"setup_dns_privacy_android_2": "<0>AdGuard för Android</0> stödjer <1>DNS-över-HTTPS</1> samt <1>DNS-över-TLS</1>.",
"setup_dns_privacy_android_3": "<0>Intra</0> lägger till stöd för <1>DNS-ÖVER-HTTPS</1> till Android.",
"setup_dns_privacy_ios_1": "<0>DNSCloak</0> stödjer <1>DNS-ÖVER-HTTPS</1>, men för konfigurering krävs att du använder dig egen server. Du behöver generera en <2>DNS-Stämpel</2> till programmet.",
"setup_dns_privacy_ios_2": "<0>AdGuard för iOS</0> stödjer <1>DNS-över-HTTPS</1> samt <1>DNS-över-TLS</1>.",
"setup_dns_privacy_other_title": "Andra implementeringar",
"setup_dns_privacy_other_1": "AdGuard Home kan själv vara en säker DNS-klient på alla plattformar.",
"setup_dns_privacy_other_2": "<0>dnsproxy</0> stödjer alla bekräftat säkra DNS-protokoll.",
"setup_dns_privacy_other_3": "<0>dnscrypt-proxy</0> stödjer <1>DNS-over-HTTPS</1>.",
"setup_dns_privacy_other_4": "<0>Mozilla Firefox</0> stödjer <1>DNS-over-HTTPS</1>.",
"setup_dns_privacy_other_5": "Du kan hitta fler implementeringar <0>här</0> och <1>här</1>.",
"setup_dns_notice": "För att kunna använda <1>DNS-över-HTTPS</1> eller <1>DNS-över-TLS</1>, behöver du <0>konfigurera Kryptering</0> i AdGuard Home-inställningar.",
"rewrite_added": "DNS-omskrivning för \"{{key}}\" lyckad",
"rewrite_deleted": "DNS-omskrivning för \"{{key}}\" har tagits bort",
"interval_24_hour": "24 timmar",
"domain": "Domän",
"answer": "Svar",
"statistics_retention_desc": "Om du minskar intervallet kommer viss data att gå förlorad",
"statistics_clear": " Rensa statistik",
"statistics_clear_confirm": "Är du säker på att du vill radera statistiken?",
"statistics_retention_confirm": "Är du säker på att du vill ändra retentionstiden för statistik? Om du minskar intervallet kommer viss data att gå förlorad",
"statistics_cleared": "Statistiken har rensats",
"interval_hours": "{{count}} timme",
"interval_hours_plural": "{{count}} timmar",
"filters_configuration": "Filterinställningar",
"filters_enable": "Aktivera filter",
"filters_interval": "Filterppdateringsintervall",
"disabled": "Avaktiverad",
"username_label": "Användarnamn",
"username_placeholder": "Skriv in användarnamn",
"password_label": "Lösenord",
"password_placeholder": "Skriv in lösenord",
"sign_in": "Logga in",
"sign_out": "Logga ut",
"forgot_password": "Glömt lösenord?",
"forgot_password_desc": "Följ <0>dessa steg</0> för att skapa ett nytt lösenord till ditt konto.",
"location": "Plats",
"orgname": "Organisationsnamn",
"netname": "Nätverksnamn",
"descr": "Beskrivning",
"whois": "Whois",
"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

@@ -0,0 +1,417 @@
{
"client_settings": "การตั้งค่าไคลเอนต์",
"example_upstream_reserved": "คุณสามารถระบุ DNS อัปสตรีม <0>สำหรับโดเมนเฉพาะ</0>",
"upstream_parallel": "ใช้การสืบค้นแบบขนานเพื่อเพิ่มความเร็วในการแก้ไขโดยการสอบถามเซิร์ฟเวอร์ upstream ทั้งหมดพร้อมกัน",
"bootstrap_dns": "Bootstrap เซิร์ฟเวอร์ DNS",
"bootstrap_dns_desc": "เซิร์ฟเวอร์ Bootstrap DNS ใช้เพื่อแก้ไขที่อยู่ IP ของตัวแก้ไข DoH / DoT ที่คุณระบุว่าเป็น upstreams",
"check_dhcp_servers": "ตรวจสอบ DHCP servers",
"save_config": "บันทึกการตั้งค่า",
"enabled_dhcp": "เปิดการใช้งาน DHCP server แล้ว",
"disabled_dhcp": "ปิดการใช้งาน DHCP server แล้ว",
"dhcp_title": "DHCP server (ยังไม่สมบูรณ์)",
"dhcp_description": "ถ้าหากเราเตอร์ของคุณไม่รองรับการตั้งค่า DHCP คุณสามารถใช้ ADGuard's ทำ DHCP server ได้",
"dhcp_enable": "เปิด DHCP server",
"dhcp_disable": "ปิด DHCP server",
"dhcp_not_found": "มีความปลอดภัยในการเปิดใช้งานเซิร์ฟเวอร์ DHCP ในตัว - เราไม่พบเซิร์ฟเวอร์ DHCP ที่ใช้งานอยู่ในเครือข่าย อย่างไรก็ตามเราขอแนะนำให้คุณตรวจสอบด้วยตนเองอีกครั้งเนื่องจากการทดสอบอัตโนมัติของเราไม่ได้รับประกัน 100%",
"dhcp_found": "พบเซิร์ฟเวอร์ DHCP ที่ใช้งานอยู่ในเครือข่าย ไม่ปลอดภัยที่จะเปิดใช้งานเซิร์ฟเวอร์ DHCP ในตัว",
"dhcp_leases": "สัญญาเช่า DHCP",
"dhcp_static_leases": "DHCP แบบกำหนด",
"dhcp_leases_not_found": "ไม่พบสัญญาเช่า DHCP",
"dhcp_config_saved": "บันทึกการกำหนดค่า DHCP สำเร็จแล้ว",
"form_error_required": "ช่องที่ต้องกรอก",
"form_error_ip4_format": "รูปแบบ IPv4 ไม่ถูกต้อง",
"form_error_ip6_format": "รูปแบบ IPv6 ไม่ถูกต้อง",
"form_error_ip_format": "รูปแบบ IP ไม่ถูกต้อง",
"form_error_mac_format": "รูปแบบ MAC ไม่ถูกต้อง",
"form_error_client_id_format": "รูปแบบ ID ลูกค้าไม่ถูกต้อง",
"form_error_positive": "ต้องมากกว่า 0",
"form_error_negative": "ต้องเท่ากับ 0 หรือมากกว่า",
"dhcp_form_gateway_input": "IP ของเกตเวย์",
"dhcp_form_subnet_input": "ซับเน็ตมาสก์",
"dhcp_form_range_title": "ช่วงของที่อยู่ IP",
"dhcp_form_range_start": "ช่วงเริ่มต้น",
"dhcp_form_range_end": "ช่วงสิ้นสุด",
"dhcp_form_lease_title": "เวลาเช่า DHCP (เป็นวินาที)",
"dhcp_form_lease_input": "ระยะเวลาการเช่า",
"dhcp_interface_select": "เลือกอินเตอร์เฟส DHCP",
"dhcp_hardware_address": "ที่อยู่ฮาร์ดแวร์",
"dhcp_ip_addresses": "ที่อยู่ IP",
"dhcp_table_hostname": "ชื่อโฮสต์",
"dhcp_table_expires": "วันที่หมดอายุ",
"dhcp_warning": "หากคุณต้องการเปิดใช้งานเซิร์ฟเวอร์ DHCP ตรวจสอบให้แน่ใจว่าไม่มีเซิร์ฟเวอร์ DHCP ที่ใช้งานอยู่ในเครือข่ายของคุณ มิฉะนั้นจะทำให้อินเทอร์เน็ตสำหรับอุปกรณ์ที่เชื่อมต่อมีปัญหาได้!",
"dhcp_error": "เราไม่สามารถระบุได้ว่ามีเซิร์ฟเวอร์ DHCP อื่นในเครือข่ายหรือไม่",
"dhcp_static_ip_error": "ในการใช้เซิร์ฟเวอร์ DHCP จะต้องตั้งค่าที่อยู่ IP แบบคงที่ เราไม่สามารถระบุได้ว่ามีการกำหนดค่าอินเทอร์เฟซเครือข่ายนี้โดยใช้ที่อยู่ IP แบบคงที่หรือไม่ โปรดตั้งค่าที่อยู่ IP แบบคงที่ด้วยตนเอง",
"dhcp_dynamic_ip_found": "ระบบของคุณใช้การกำหนดค่าที่อยู่ IP แบบไดนามิกสำหรับอินเทอร์เฟซ <0>{{interfaceName}}</0> ในการใช้เซิร์ฟเวอร์ DHCP จะต้องตั้งค่าที่อยู่ IP แบบคงที่ ที่อยู่ IP ปัจจุบันของคุณคือ <0>{{ipAddress}}</0> เราจะตั้งค่าที่อยู่ IP นี้เป็นแบบคงที่โดยอัตโนมัติหากคุณกดปุ่มเปิดใช้งาน DHCP",
"dhcp_lease_added": "เพิ่มสัญญาเช่าคงที่ \"{{key}}\" สำเร็จแล้ว",
"dhcp_lease_deleted": "ลบสัญญาเช่าคงที่ \"{{key}}\" สำเร็จแล้ว",
"dhcp_new_static_lease": "เช่าใหม่คงที่",
"dhcp_static_leases_not_found": "ไม่พบสัญญาเช่า DHCP แบบคงที่",
"dhcp_add_static_lease": "เพิ่มสัญญาเช่าคงที่",
"dhcp_reset": "คุณแน่ใจหรือว่าต้องการรีเซ็ตการกำหนดค่า DHCP?",
"delete_confirm": "คุณแน่ใจหรือว่าต้องการลบ \"{{key}}\"?",
"form_enter_hostname": "ป้อนชื่อโฮสต์",
"error_details": "รายละเอียดข้อผิดพลาด",
"back": "กลับ",
"dashboard": "แผงควบคุม",
"settings": "การตั้งค่า",
"filters": "ตัวกรอง",
"query_log": "บันทึกการสืบค้น",
"faq": "คำถามที่พบบ่อย",
"version": "รุ่น",
"address": "ที่อยู่",
"on": "เปิด",
"off": "ปิด",
"copyright": "ลิขสิทธิ์",
"homepage": "หน้าหลัก",
"report_an_issue": "รายงานปัญหา",
"privacy_policy": "นโยบายความเป็นส่วนตัว",
"enable_protection": "เปิดใช้งานการป้องกัน",
"enabled_protection": "เปิดใช้งานการป้องกันแล้ว",
"disable_protection": "ปิดใช้งานการป้องกัน",
"disabled_protection": "ปิดใช้งานการป้องกันแล้ว",
"refresh_statics": "รีเฟรชสถิติ",
"dns_query": "การค้นหา DNS",
"blocked_by": "<0>ถูกปิดกั้นโดยตัวกรอง</0>",
"stats_malware_phishing": "ปิดกั้นมัลแวร์/ฟิชชิ่ง แล้ว",
"stats_adult": "ปิดกั้นเว็บไซต์สำหรับผู้ใหญ่แล้ว",
"stats_query_domain": "โดเมนที่เข้าบ่อยสุด",
"for_last_24_hours": "ในช่วง 24 ชั่วโมงที่ผ่านมา",
"for_last_days": "สำหรับ {{count}} วันสุดท้าย",
"for_last_days_plural": "สำหรับ {{count}} วันล่าสุด",
"no_domains_found": "ไม่พบโดเมน",
"requests_count": "จำนวนคำขอ",
"top_blocked_domains": "โดเมนที่ถูกปิดกั้นมากที่สุด",
"top_clients": "ลูกข่ายที่ใช้งานบ่อยสุด",
"no_clients_found": "ไม่มีเครื่องลูกข่าย",
"general_statistics": "สถิติทั่วไป",
"number_of_dns_query_days": "จำนวนการสืบค้น DNS ที่ประมวลผลสำหรับ {{count}} วันล่าสุด",
"number_of_dns_query_days_plural": "จำนวนการสืบค้น DNS ที่ดำเนินการในช่วง {{count}} วันล่าสุด",
"number_of_dns_query_24_hours": "มีการสืบค้น DNS จำนวนมากใน 24 ชั่วโมงที่ผ่านมา",
"number_of_dns_query_blocked_24_hours": "จำนวนคำขอ DNS ที่ถูกปิดกั้นโดยตัวกรองปิดกั้นและโฮสต์รายการปิดกั้น",
"number_of_dns_query_blocked_24_hours_by_sec": "คำขอ DNS จำนวนหนึ่งถูกปิดกั้นโดยโมดูลความปลอดภัยการเรียกดู AdGuard",
"number_of_dns_query_blocked_24_hours_adult": "มีการปิดกั้นเว็บไซต์สำหรับผู้ใหญ่จำนวนหนึ่ง",
"enforced_save_search": "บังคับใช้การค้นหาที่ปลอดภัย",
"number_of_dns_query_to_safe_search": "จำนวนคำขอ DNS ไปยังเครื่องมือค้นหาที่บังคับใช้การค้นหาปลอดภัย",
"average_processing_time": "เวลาประมวลผลโดยเฉลี่ย",
"average_processing_time_hint": "เวลาเฉลี่ยเป็นมิลลิวินาทีในการประมวลผลคำขอ DNS",
"block_domain_use_filters_and_hosts": "ปิดกั้นโดเมนโดยใช้ตัวกรองและไฟล์โฮสต์",
"filters_block_toggle_hint": "คุณสามารถตั้งค่ากฎการปิดกั้นในการตั้งค่า<a href='#filters'>ตัวกรอง</a>",
"use_adguard_browsing_sec": "ใช้บริการเว็บการรักษาความปลอดภัยการเรียกดู AdGuard",
"use_adguard_browsing_sec_hint": "AdGuard Home จะตรวจสอบว่าโดเมนอยู่ในรายการที่ไม่อนุญาตโดยเว็บเซอร์วิสความปลอดภัยการสืบค้นหรือไม่ จะใช้ API การค้นหาที่เป็นมิตรกับข้อมูลส่วนบุคคลเพื่อทำการตรวจสอบ: มีการส่งคำนำหน้าสั้น ๆ ของชื่อโดเมน SHA256 แฮชไปยังเซิร์ฟเวอร์",
"use_adguard_parental": "ใช้บริการเว็บการควบคุมโดยผู้ปกครองของ AdGuard",
"use_adguard_parental_hint": "AdGuard Home จะตรวจสอบว่าโดเมนมีเนื้อหาสำหรับผู้ใหญ่หรือไม่ มันใช้ API ความเป็นส่วนตัวเช่นเดียวกับบริการเว็บการรักษาความปลอดภัยการท่องเว็บ",
"enforce_safe_search": "บังคับใช้การค้นหาที่ปลอดภัย",
"enforce_save_search_hint": "AdGuard Home สามารถบังคับใช้การค้นหาที่ปลอดภัยในเครื่องมือค้นหาต่อไปนี้: Google, Youtube, Bing, DuckDuckGo, Yandex, Pixabay",
"no_servers_specified": "ไม่ได้ระบุเซิร์ฟเวอร์",
"general_settings": "การตั้งค่าทั่วไป",
"dns_settings": "การตั้งค่า DNS",
"encryption_settings": "การตั้งค่าการเข้ารหัส",
"dhcp_settings": "การตั้งค่า DHCP",
"upstream_dns": "เซิร์ฟเวอร์ DNS ต้นทาง",
"upstream_dns_hint": "The current approved translation is not correct, please review my translation:\n\"หากคุณเว้นช่องนี้ว่างไว้ AdGuard Home จะใช้ <a href='https://www.quad9.net/' target='_blank'>Quad9</a> เป็นต้นทาง\"",
"test_upstream_btn": "ทดสอบต้นทาง",
"upstreams": "ต้นทาง",
"apply_btn": "นำไปใช้",
"disabled_filtering_toast": "ปิดใช้งานการกรอง",
"enabled_filtering_toast": "เปิดใช้งานการกรอง",
"disabled_safe_browsing_toast": "ปิดใช้งานการเรียกดูอย่างปลอดภัย",
"enabled_safe_browsing_toast": "เปิดการใช้งาน safebrowsing",
"disabled_parental_toast": "ปิดใช้งานการควบคุมโดยผู้ปกครอง",
"enabled_parental_toast": "เปิดการใช้งานเข้าเว็บไม่พึงประสงค์",
"disabled_safe_search_toast": "ปิดใช้งานการค้นหาที่ปลอดภัย",
"enabled_save_search_toast": "เปิดใช้งานการค้นหาที่ปลอดภัย",
"enabled_table_header": "เปิดใช้งาน",
"name_table_header": "ชื่อ",
"rules_count_table_header": "กฎการนับ",
"last_time_updated_table_header": "ปรับปรุงครั้งล่าสุด",
"actions_table_header": "การกระทำ",
"edit_table_action": "แก้ไข",
"delete_table_action": "ลบ",
"filters_and_hosts_hint": "AdGuard Home เข้าใจกฎปิดกั้นโฆษณาพื้นฐานและโฮสต์ไฟล์ไวยากรณ์",
"cancel_btn": "ยกเลิก",
"enter_name_hint": "ป้อนชื่อ",
"check_updates_btn": "ตรวจสอบการปรับปรุง",
"custom_filter_rules": "กฎการกรองที่กำหนดเอง",
"custom_filter_rules_hint": "ป้อนหนึ่งกฎในหนึ่งบรรทัด คุณสามารถใช้กฎปิดกั้นโฆษณาหรือโฮสต์ไฟล์ไวยากรณ์",
"examples_title": "ตัวอย่าง",
"example_meaning_filter_block": "ปิดกั้นการเข้าถึงโดเมน example.org และโดเมนย่อยทั้งหมด",
"example_meaning_filter_whitelist": "เลิกปิดกั้นการเข้าถึงโดเมน example.org และโดเมนย่อยทั้งหมด",
"example_meaning_host_block": "ตอนนี้ AdGuard Home จะส่งคืนที่อยู่ 127.0.0.1 สำหรับโดเมน example.org (แต่ไม่ใช่โดเมนย่อย)",
"example_comment": "! นี่ความคิดเห็น",
"example_comment_meaning": "เพียงความคิดเห็น",
"example_comment_hash": "# นอกจากนี้ยังมีความคิดเห็น",
"example_regex_meaning": "ปิดกั้นการเข้าถึงโดเมนที่ตรงกับนิพจน์ทั่วไปที่ระบุ",
"example_upstream_regular": "DNS ปกติ (มากกว่า UDP)",
"example_upstream_dot": "encrypted <0>DNS-over-TLS</0> แล้ว",
"example_upstream_doh": "เข้ารหัส <0>DNS-over-HTTPS</0> แล้ว",
"example_upstream_sdns": "คุณสามรถใช้ <0>DNS Stamps</0> กับ <1>DNSCrypt</1> หรือ <2>DNS-over-HTTPS</2> ตัวแก้ปัญหา",
"example_upstream_tcp": "dNS ปกติ (ผ่าน TCP)",
"updated_upstream_dns_toast": "อัปเดตเซิร์ฟเวอร์ DNS ต้นทาง",
"dns_test_ok_toast": "เซิร์ฟเวอร์ DNS ที่ระบุทำงานอย่างถูกต้อง",
"dns_test_not_ok_toast": "เซิร์ฟเวอร์ \"{{key}}\": ไม่สามารถใช้งานได้ โปรดตรวจสอบว่าคุณเขียนถูกต้อง",
"unblock": "เลิกปิดกั้น",
"block": "ปิดกั้น",
"time_table_header": "เวลา",
"domain_name_table_header": "ชื่อโดเมน",
"type_table_header": "ประเภท",
"response_table_header": "การตอบสนอง",
"client_table_header": "เครื่องลูกข่าย",
"empty_response_status": "ว่างเปล่า",
"show_all_filter_type": "แสดงทั้งหมด",
"show_filtered_type": "แสดงเฉพาะที่กรองแล้ว",
"no_logs_found": "ไม่มีประวัติ",
"refresh_btn": "รีเฟรช",
"previous_btn": "ก่อนหน้า",
"next_btn": "ถัดไป",
"loading_table_status": "กำลังโหลด...",
"page_table_footer_text": "หน้า",
"rows_table_footer_text": "ตาราง",
"updated_custom_filtering_toast": "อัปเดตกฎการกรองที่กำหนดเอง",
"rule_removed_from_custom_filtering_toast": "ลบกฎออกจากกฎการกรองที่กำหนดเองแล้ว",
"rule_added_to_custom_filtering_toast": "เพิ่มกฎในกฎการกรองที่กำหนดเองแล้ว",
"query_log_response_status": "สถานะ: {{value}}",
"query_log_filtered": "กรองโดย {{filter}}",
"query_log_confirm_clear": "คุณแน่ใจหรือไม่ว่าต้องการลบบันทึกการใช้งานทั้งหมด?",
"query_log_cleared": "บันทึกการใช้งานได้รับการล้างเรียบร้อยแล้ว",
"query_log_clear": "ล้างบันทึกการสืบค้น",
"query_log_retention": "แบบสอบถามบันทึกการเก็บรักษา",
"query_log_enable": "เปิดใช้งานบันทึก",
"query_log_configuration": "บันทึกการกำหนดค่า",
"query_log_disabled": "บันทึกแบบสอบถามถูกปิดใช้งานและสามารถกำหนดค่าใน <0>การตั้งค่า</0>",
"query_log_strict_search": "ใช้เครื่องหมายคำพูดคู่เพื่อการค้นหาที่จำกัด",
"query_log_retention_confirm": "คุณแน่ใจหรือไม่ว่าต้องการเปลี่ยนการเก็บข้อมูลบันทึกแบบสอบถาม? หากคุณลดค่าช่วงเวลา ข้อมูลบางอย่างจะหายไป",
"dns_config": "การกำหนดค่าเซิร์ฟเวอร์ DNS",
"blocking_mode": "โหมดการปิดกั้น",
"default": "ค่าเริ่มต้น",
"nxdomain": "NXDOMAIN",
"null_ip": "IP ว่าง",
"custom_ip": "IP กำหนดเอง",
"blocking_ipv4": "ปิดกั้น IPv4",
"blocking_ipv6": "ปิดกั้น IPv6",
"form_enter_rate_limit": "ป้อนขีดจำกัดอัตรา",
"rate_limit": "จำกัดอัตรา",
"edns_enable": "เปิดใช้งานซับเน็ตไคลเอ็นต์ EDNS",
"edns_cs_desc": "หากเปิดใช้งาน AdGuard Home จะส่งซับเน็ตของไคลเอนต์ไปยังเซิร์ฟเวอร์ DNS",
"rate_limit_desc": "จำนวนการร้องขอต่อวินาทีที่อนุญาตให้ไคลเอนต์เดียวทำ (0: ไม่จำกัดจำนวน)",
"blocking_ipv4_desc": "ที่อยู่ IP ที่จะส่งคืนสำหรับคำขอที่ถูกปิดกั้น",
"blocking_ipv6_desc": "ที่อยู่ IP ที่จะส่งคืนสำหรับคำขอ AAAA ที่ถูกปิดกั้น",
"blocking_mode_default": "เริ่มต้น: ตอบสนองด้วย NXDOMAIN เมื่อถูกปิดกั้นโดยกฎสไตล์ปิดกั้นโฆษณา; ตอบกลับด้วยที่อยู่ IP ที่ระบุในกฎเมื่อถูกปิดกั้นโดยกฎ /etc/hosts-hosts",
"blocking_mode_nxdomain": "NXDOMAIN: ตอบสนองด้วยรหัส NXDOMAIN",
"blocking_mode_null_ip": "Null IP: ตอบกลับด้วยที่อยู่เลขศูนย์ IP (0.0.0.0 สำหรับ A; :: สำหรับ AAAA)",
"blocking_mode_custom_ip": "IP ที่กำหนดเอง: ตอบกลับด้วยที่อยู่ IP ที่ตั้งค่าด้วยตนเอง",
"upstream_dns_client_desc": "หากคุณเว้นช่องนี้ว่างไว้ AdGuard Home จะใช้เซิร์ฟเวอร์ที่กำหนดค่าใน <0>การตั้งค่า DNS</0>",
"source_label": "ที่มา",
"found_in_known_domain_db": "พบในฐานข้อมูลโดเมนที่รู้จัก",
"category_label": "ประเภท",
"rule_label": "กฎ",
"unknown_filter": "ตัวกรองที่ไม่รู้จัก {{filterId}}",
"install_welcome_title": "ยินดีต้อนรับสู่ AdGuard Home",
"install_welcome_desc": "AdGuard Home เป็นเซิร์ฟเวอร์ DNS ปิดกั้นโฆษณาและติดตามทั่วทั้งเครือข่าย วัตถุประสงค์คือเพื่อให้คุณควบคุมเครือข่ายทั้งหมดและอุปกรณ์ทั้งหมดของคุณและไม่จำเป็นต้องใช้โปรแกรมฝั่งไคลเอ็นต์",
"install_settings_title": "รูปแบบเว็บสำหรับผู้ดูแล",
"install_settings_listen": "รูปแบบการดักจับ",
"install_settings_port": "พอร์ต",
"install_settings_interface_link": "เว็บอินเตอร์เฟสผู้ดูแลระบบ AdGuard Home ของคุณจะพร้อมใช้งานตามที่อยู่ต่อไปนี้:",
"form_error_port": "ป้อนค่าพอร์ตที่ถูกต้อง",
"install_settings_dns": "เซิรฟ์เวอร์ DNS",
"install_settings_dns_desc": "คุณจะต้องกำหนดค่าอุปกรณ์หรือเราเตอร์ของคุณเพื่อใช้เซิร์ฟเวอร์ DNS ตามที่อยู่ต่อไปนี้:",
"install_settings_all_interfaces": "อินเทอร์เฟซทั้งหมด",
"install_auth_title": "การตรวจสอบสิทธิ์",
"install_auth_desc": "ขอแนะนำอย่างยิ่งให้กำหนดค่าการตรวจสอบรหัสผ่านให้กับส่วนต่อประสานเว็บผู้ดูแลระบบ AdGuard Home ของคุณ แม้ว่ามันจะสามารถเข้าถึงได้เฉพาะในเครือข่ายท้องถิ่นของคุณก็ยังคงเป็นสิ่งสำคัญที่จะปกป้องมันจากการเข้าถึงที่ไม่จำกัด",
"install_auth_username": "ชื่อผู้ใช้",
"install_auth_password": "รหัสผ่าน",
"install_auth_confirm": "ยืนยันรหัสผ่าน",
"install_auth_username_enter": "กรอกชื่อผู้ใช้",
"install_auth_password_enter": "กรอกรหัสผ่าน",
"install_step": "ขั้นตอน",
"install_devices_title": "กำหนดค่าอุปกรณ์ของคุณ",
"install_devices_desc": "ในการเริ่มใช้งาน AdGuard Home คุณต้องกำหนดค่าอุปกรณ์ของคุณเพื่อใช้งาน",
"install_submit_title": "ยินดีด้วย!",
"install_submit_desc": "ขั้นตอนการตั้งค่าเสร็จสิ้นและคุณพร้อมที่จะเริ่มใช้งาน AdGuard Home",
"install_devices_router": "เราเตอร์",
"install_devices_router_desc": "การตั้งค่านี้จะครอบคลุมอุปกรณ์ทั้งหมดที่เชื่อมต่อกับเราเตอร์ที่บ้านของคุณโดยอัตโนมัติและคุณไม่จำเป็นต้องกำหนดค่าแต่ละอุปกรณ์ด้วยตนเอง",
"install_devices_address": "เซิร์ฟเวอร์ DNS ของ AdGuard Home กำลังรับฟังตามที่อยู่ต่อไปนี้",
"install_devices_router_list_1": "เปิดการตั้งค่าสำหรับเราเตอร์ของคุณ โดยปกติแล้วคุณสามารถเข้าถึงได้จากเบราว์เซอร์ของคุณผ่าน URL (เช่น http://192.168.0.1/ หรือ http://192.168.1.1/) คุณอาจถูกขอให้ป้อนรหัสผ่าน หากคุณจำไม่ได้คุณสามารถรีเซ็ตรหัสผ่านได้บ่อยครั้งโดยกดปุ่มบนเราเตอร์เอง เราเตอร์บางตัวต้องการแอปพลิเคชั่นเฉพาะซึ่งในกรณีนี้ควรติดตั้งไว้ในคอมพิวเตอร์/โทรศัพท์ของคุณแล้ว",
"install_devices_router_list_2": "ค้นหาการตั้งค่า DHCP/DNS ค้นหาตัวอักษร DNS ที่อยู่ถัดจากช่องที่อนุญาตให้มีตัวเลขสองหรือสามชุดโดยแต่ละกลุ่มแบ่งออกเป็นสี่กลุ่มหนึ่งถึงสามหลัก",
"install_devices_router_list_3": "ป้อนที่อยู่เซิร์ฟเวอร์ AdGuard Home ของคุณที่นั่น",
"install_devices_windows_list_1": "เปิด Control Panel โดยใช้ Start menu หรือ Windows search",
"install_devices_windows_list_2": "ไปที่หมวด Network and Internet แล้วเลือก Network and Sharing Center",
"install_devices_windows_list_3": "ทางด้านซ้ายจะมีคำว่า Change adapter settings ให้กดเข้าไป",
"install_devices_windows_list_4": "เลือกการเชื่อมต่อที่ใช้งานอยู่ คลิกขวาแล้วเลือก Properties",
"install_devices_windows_list_5": "ค้นหา Internet Protocol Version 4 (TCP/IP) แล้วคลิก Properties อีกครั้ง",
"install_devices_windows_list_6": "ค้นหา DNS server addresses ให้ทำการกรอกหมายเลข AdGuard Home ลงไปในช่อง",
"install_devices_macos_list_1": "คลิกโลโก้แอปเปิ้ลแล้วกด System Preferences",
"install_devices_macos_list_2": "คลิก Network",
"install_devices_macos_list_3": "เลือกการเชื่อมต่อแล้วคลิก Advanced",
"install_devices_macos_list_4": "ค้นหาแท็บ DNS แล้วกรอกหมาเลย AdGuard Home",
"install_devices_android_list_1": "เข้าหน้าเมนู(บางรุ่นจะมีตรงแท็บการแจ้งเตือน) เลือกการตั้งค่า",
"install_devices_android_list_2": "เลือกเมนู Wi-Fi แล้วค้นหา Wi-Fi ที่จะเชื่อมต่อ (ไม่สารถตั้งค่ากับเน็ตมือถือได้)",
"install_devices_android_list_3": "แตะชื่อWi-Fi ที่จะเชื่อมต่อค้างไว้(บางรุ่นให้เลื่อนจอลงไปล่างสุด) เลือกการตั้งค่าเพิ่มเติม",
"install_devices_android_list_4": "ในอุปกรณ์บางอย่างคุณอาจต้องทำเครื่องหมายในช่องสำหรับขั้นสูงเพื่อดูการตั้งค่าเพิ่มเติม หากต้องการปรับการตั้งค่า Android DNS ของคุณคุณจะต้องเปลี่ยนการตั้งค่า IP จาก DHCP เป็นแบบคงที่",
"install_devices_android_list_5": "เปลี่ยนการตั้งค่า DNS ที่ 1 และค่า DNS 2 ถึงที่อยู่เซิร์ฟเวอร์ AdGuard Home ของคุณ",
"install_devices_ios_list_1": "เลือกการตั้งค่า",
"install_devices_ios_list_2": "เลือก Wi-Fi ด้านซ้าย (ไม่สามรถใช้งานได้กับดาต้ามือถือ)",
"install_devices_ios_list_3": "เลือกชื่อที่จะเชื่อมต่อ",
"install_devices_ios_list_4": "กรอก DNS AdGuard Home Server ลงไปในช่อง",
"get_started": "เริ่มต้นการใช้งาน",
"next": "ถัดไป",
"open_dashboard": "เปิดหน้าควบคุม",
"install_saved": "บันทึกเรียบร้อยแล้ว",
"encryption_title": "การเข้ารหัส",
"encryption_desc": "การดข้ารหัส (HTTPS/TLS) รองรับทั้ง DNS และหน้าเว็บแอดมิน",
"encryption_config_saved": "บันทึกการตั้งค่าเข้ารหัสเรียบร้อยแล้ว",
"encryption_server": "ชื่อเซิร์ฟเวอร์",
"encryption_server_enter": "ป้อนชื่อโดเมน",
"encryption_server_desc": "ในการใช้ HTTPS คุณต้องป้อนชื่อเซิร์ฟเวอร์ที่ตรงกับใบรับรอง SSL ของคุณ",
"encryption_redirect": "ไปเส้นทาง HTTPS อัตโนมัติ",
"encryption_redirect_desc": "หากเลือกตัวเลือกนี้ AdGuard Home จะเปลี่ยนเส้นทางคุณจากที่อยู่ HTTP ไปยัง HTTPS โดยอัตโนมัติ",
"encryption_https": "พอร์ท HTTPS",
"encryption_https_desc": "หากมีการกำหนดค่าพอร์ต HTTPS ส่วนติดต่อผู้ดูแลระบบของ AdGuard Home จะสามารถเข้าถึงได้ผ่าน HTTPS และจะให้ DNS-over-HTTPS ในตำแหน่ง '/dns-query'",
"encryption_dot": "พอร์ต DNS-over-TLS",
"encryption_dot_desc": "หากมีการกำหนดค่าพอร์ตนี้ AdGuard Home จะเรียกใช้เซิร์ฟเวอร์ DNS-over-TLS ในพอร์ตนี้",
"encryption_certificates": "ใบรับรอง",
"encryption_certificates_desc": "ในการใช้การเข้ารหัสคุณต้องระบุเชนใบรับรอง SSL ที่ถูกต้องสำหรับโดเมนของคุณ คุณสามารถรับใบรับรองฟรีได้ที่ <0>{{link}}</0> หรือคุณสามารถซื้อได้จากหนึ่งในผู้ออกใบรับรองที่เชื่อถือได้",
"encryption_certificates_input": "คัดลอก/วางใบรับรองที่เข้ารหัส PEM ของคุณที่นี่",
"encryption_status": "สถานะ",
"encryption_expire": "หมดอายุ",
"encryption_key": "รหัสส่วนตัว (Private key)",
"encryption_key_input": "คัดลอก/วาง PEM-encoded private key ของคุณตรงนี้",
"encryption_enable": "เปิดการเข้ารหัส (HTTPS, DNS-over-HTTPS, และ DNS-over-TLS)",
"encryption_enable_desc": "หากเปิดใช้งานการเข้ารหัสอินเทอร์เฟซผู้ดูแลระบบของ AdGuard Home จะทำงานผ่าน HTTPS และเซิร์ฟเวอร์ DNS จะรับฟังคำร้องขอผ่านทาง DNS-over-HTTPS และ DNS-over-TLS",
"encryption_chain_valid": "ใบรับรองมีความน่าเชื่อถือ",
"encryption_chain_invalid": "ใบรับรองไม่มีความน่าเชื่อถือแต่สามรถใช้ได้",
"encryption_key_valid": "นี่เป็นคีย์ส่วนตัว {{type}} ที่ถูกต้อง",
"encryption_key_invalid": "นี่เป็นคีย์ส่วนตัว {{type}} ที่ไม่ถูกต้อง",
"encryption_subject": "เรื่อง:",
"encryption_issuer": "ผู้ออกใบรับรอง:",
"encryption_hostnames": "ชื่อโฮส",
"encryption_reset": "คุณแน่ใจนะว่าจะล้างค่าการเข้ารหัส?",
"topline_expiring_certificate": "ใบรับรอง SSL ของคุณกำลังจะหมดอายุ กรุณาอัปเดท <0>การตั้งค่าเข้ารหัส</0>.",
"topline_expired_certificate": "ใบรับรอง SSL ของคุณหมดอายุแล้ว กรุณาอัปเดท <0>การตั้งค่าเข้ารหัส</0>.",
"form_error_port_range": "ป้อนค่าพอร์ตในช่วง 80-65535",
"form_error_port_unsafe": "เป็นพอร์ทที่ไม่ปลอดภัย",
"form_error_equal": "ไม่ควรตรงกัน",
"form_error_password": "รหัสผ่านไม่ตรงกัน",
"reset_settings": "รีเซ็ตการตั้งค่า",
"update_announcement": "AdGuard Home {{version}} พร้อมแล้ว <0>กดตรงนี้</0> สำหรับข้อมูลเพิ่มเติม",
"setup_guide": "วิธีการตั้งค่า",
"dns_addresses": "ที่อยู่ DNS",
"dns_start": "เซิร์ฟเวอร์ DNS เริ่มทำงาน",
"dns_status_error": "เกิดข้อผิดพลาดในการตรวจสอบสถานะเซิร์ฟเวอร์ DNS",
"down": "ดับ",
"fix": "ซ่อม",
"dns_providers": "นี่คือรายการ <0>ของผู้ให้บริการ DNS ที่เป็นที่รู้จัก</0> ให้เลือก",
"update_now": "อัปเดตตอนนี้",
"update_failed": "อัปเดทล้มเหลว กรุณา <a href='https://github.com/AdguardTeam/AdGuardHome/wiki/Getting-Started#update'> ทำตามขั้นตอน </a> เพื่ออัพเดทด้วยตนเอง",
"processing_update": "รอซักครู่ AdGuard Home กำลังอัปเดท",
"clients_title": "เครื่องลูกข่าย",
"clients_desc": "ตั้งค่าอุปกรณ์เพื่อเชื่อมต่อ AdGuard Home",
"settings_global": "ทั่วโลก",
"settings_custom": "กำหนดเอง",
"table_client": "เครื่องลูกข่าย",
"table_name": "ชื่อ",
"save_btn": "บันทึก",
"client_add": "เพิ่มเครื่องลูกข่าย",
"client_new": "สร้างเครื่องลูกข่าย",
"client_edit": "แก้ไขเครื่องลูกข่าย",
"client_identifier": "ตรวจสอบโดย",
"ip_address": "IP addresses",
"client_identifier_desc": "ลูกค้าสามารถระบุได้โดยที่อยู่ IP, CIDR, ที่อยู่ MAC โปรดทราบว่าการใช้ MAC เป็นตัวระบุเป็นไปได้ก็ต่อเมื่อ AdGuard Home เป็น <0>เซิร์ฟเวอร์ DHCP</0> ด้วย",
"form_enter_ip": "กรอก IP",
"form_enter_mac": "กรอก MAC",
"form_enter_id": "ป้อนตัวระบุ",
"form_add_id": "เพิ่มตัวระบุ",
"form_client_name": "กรอกชื่อเครื่องลูกข่าย",
"client_global_settings": "ใช้การตั้งค่าทั่วโลก",
"client_deleted": "เครื่อง \"{{key}}\" ลบเรียบร้อยแล้ว",
"client_added": "เครื่อง \"{{key}}\" เพิ่มเรียบร้อยแล้ว",
"client_updated": "อัปเดตเครื่อง \"{{key}}\" สำเร็จแล้ว",
"clients_not_found": "ไม่มีเครื่องลูกข่าย",
"client_confirm_delete": "คุณแน่ใจนะว่าจะลบเครื่อง \"{{key}}\"?",
"auto_clients_title": "เครื่อง (runtime)",
"auto_clients_desc": "ข้อมูลเกี่ยวกับไคลเอนต์ที่ใช้ AdGuard Home แต่ไม่ได้เก็บไว้ในการกำหนดค่า",
"access_title": "เข้าถึงการตั้งค่า",
"access_desc": "ที่นี่คุณสามารถกำหนดค่ากฎการเข้าถึงสำหรับเซิร์ฟเวอร์ AdGuard Home DNS",
"access_allowed_title": "ลูกค้าที่ได้รับอนุญาต",
"access_allowed_desc": "รายการ CIDR หรือที่อยู่ IP หากกำหนดค่า AdGuard Home จะยอมรับคำขอจากที่อยู่ IP เหล่านี้เท่านั้น",
"access_disallowed_title": "ลูกค้าไม่ได้รับอนุญาต",
"access_disallowed_desc": "รายการ CIDR หรือที่อยู่ IP หากกำหนดค่าไว้ AdGuard Home จะส่งคำขอจากที่อยู่ IP เหล่านี้",
"access_blocked_title": "โดเมนที่ถูกปิดกั้น",
"check_updates_now": "ตรวจสอบการปรับปรุง",
"setup_dns_privacy_other_title": "การใช้งานอื่น ๆ",
"setup_dns_privacy_other_1": "AdGuard Home จะส่ง DNS ที่ปลอดภัยทุกเครื่อทุกระบบ\n",
"setup_dns_privacy_other_2": "<0>dnsproxy</0> รองรับโปรโตคอล DNS ที่ปลอดภัยที่รู้จักทั้งหมด",
"rewrite_add": "เพิ่ม DNS rewrite",
"form_domain": "ป้อนชื่อโดเมน",
"form_answer": "ป้อนชื่อโดเมนหรือ IP",
"form_error_domain_format": "รูปแบบ Domain ไม่ถูกต้อง",
"form_error_answer_format": "รูปแบบคำตอบไม่ถูกต้อง",
"configure": "กำหนดค่า",
"main_settings": "ตั้งค่าหลัก",
"block_services": "ปิดกั้นบริการเฉพาะ",
"blocked_services": "ปิดกั้นบริการ",
"blocked_services_desc": "อนุญาตให้บล็อกเว็บไซต์และบริการยอดนิยมได้อย่างรวดเร็ว",
"blocked_services_saved": "บันทึกบริการที่ถูกปิดกั้นเรียบร้อยแล้ว",
"blocked_services_global": "ใช้บริการที่ถูกบล็อกทั่วโลก",
"blocked_service": "ปิดกั้นบริการ",
"block_all": "ปิดกั้นทั้งหมด",
"unblock_all": "ปลดล็อคทั้งหมด",
"encryption_certificate_path": "เส้นทางใบรับรอง",
"encryption_private_key_path": "เส้นทางกุญแจส่วนตัว",
"encryption_certificates_source_path": "ตั้งค่าเส้นทาง certificates ",
"encryption_certificates_source_content": "วางเนื้อหา certificates ",
"encryption_key_source_path": "ตั้งค่าไฟล์กุญแจส่วนตัว",
"encryption_key_source_content": "วางเนื้อหาคีย์ส่วนตัว",
"stats_params": "การกำหนดค่าสถิติ",
"config_successfully_saved": "บันทึกการตั้งค่าเรีบยร้อยแล้ว",
"interval_24_hour": "24 ชั่วโมง",
"interval_days": "{{count}} วัน",
"interval_days_plural": "{{count}} วัน",
"domain": "โดเมน",
"answer": "คำตอบ",
"filter_added_successfully": "ตัวกรองเพิ่มเรียบร้อยแล้ว",
"filter_updated": "อัปเดตตัวกรองสำเร็จแล้ว",
"statistics_configuration": "การกำหนดค่าสถิติ",
"statistics_retention": "การเก็บรักษาสถิติ",
"statistics_retention_desc": "หากคุณลดค่าช่วงเวลาข้อมูลบางอย่างจะหายไป",
"statistics_clear": " ล้างค่าสถิติ",
"statistics_clear_confirm": "คุณแน่ใจหรือไม่ว่าต้องการล้างสถิติ?",
"statistics_retention_confirm": "คุณแน่ใจหรือไม่ว่าต้องการเปลี่ยนการเก็บรักษาสถิติ? หากคุณลดค่าช่วงเวลา ข้อมูลบางอย่างจะหายไป",
"statistics_cleared": "สถิติได้ถูกล้างเรียบร้อยแล้ว",
"interval_hours": "{{count}} ชั่วโมง",
"interval_hours_plural": "{{count}} ชั่วโมง",
"filters_configuration": "การกำหนดค่าตัวกรอง",
"filters_enable": "เปิดใช้งานตัวกรอง",
"filters_interval": "ตัวกรองช่วงเวลาการอัปเดต",
"disabled": "ปิดใช้งาน",
"username_label": "ชื่อผู้ใช้",
"username_placeholder": "ป้อนชื่อผู้ใช้",
"password_label": "รหัสผ่าน",
"password_placeholder": "ใส่รหัสผ่าน",
"sign_in": "ลงชื่อเข้าใช้",
"sign_out": "ออกจากระบบ",
"forgot_password": "ลืมรหัสผ่าน?",
"forgot_password_desc": "โปรดปฏิบัติตาม <0>ขั้นตอนเหล่านี้</0> เพื่อสร้างรหัสผ่านใหม่สำหรับบัญชีผู้ใช้ของคุณ",
"location": "ตำแหน่ง",
"orgname": "ชื่อองค์กร",
"netname": "ชื่อเครือข่าย",
"network": "เครือข่าย",
"descr": "คำอธิบาย",
"whois": "Whois",
"filtering_rules_learn_more": "<0>เรียนรู้เพิ่มเติม</0> เกี่ยวกับการสร้างรายการปิดกั้นโฮสต์ของคุณเอง",
"blocked_by_response": "ปิดกั้นโดย CNAME หรือ IP ในการตอบกลับ",
"try_again": "ลองอีกครั้ง",
"domain_desc": "ป้อนชื่อโดเมนหรือไวด์การ์ดที่คุณต้องการเขียนใหม่",
"example_rewrite_domain": "เขียนคำตอบซ้ำสำหรับชื่อโดเมนนี้เท่านั้น",
"example_rewrite_wildcard": "เขียนคำตอบใหม่ทั้งหมดสำหรับ <0>example.org</0> โดเมนย่อย",
"disable_ipv6": "ปิดใช้งาน IPv6",
"disable_ipv6_desc": "หากเปิดใช้งานคุณสมบัตินี้การสืบค้น DNS ทั้งหมดสำหรับที่อยู่ IPv6 (ประเภท AAAA) จะถูกทิ้ง",
"autofix_warning_text": "หากคุณคลิก \"แก้ไข\" AdGuardHome จะกำหนดค่าระบบของคุณเพื่อใช้เซิร์ฟเวอร์ AdGuardHome",
"autofix_warning_list": "มันจะทำงานเหล่านี้: <0>ปิดการใช้งานระบบ DNSStubListener</0> <0>ตั้งที่อยู่เซิร์ฟเวอร์ DNS เป็น 127.0.0.1</0> <0>แทนที่เป้าหมายลิงก์สัญลักษณ์ของ /etc/resolv.conf เป็น /run/systemd/resolve/resolv.conf</0> <0>หยุด DNSStubListener (โหลดบริการแก้ไขระบบซ้ำ)</0>",
"autofix_warning_result": "ดังนั้น AdGuardHome จะประมวลผลคำขอ DNS ทั้งหมดจากระบบของคุณตามค่าเริ่มต้น",
"tags_title": "แท็ก",
"tags_desc": "คุณสามารถเลือกแท็กที่สอดคล้องกับลูกค้า แท็กสามารถรวมอยู่ในกฎการกรองและอนุญาตให้คุณใช้งานได้อย่างถูกต้องมากขึ้น <0>เรียนรู้เพิ่มเติม</0>",
"form_select_tags": "เลือกแท็กเครื่อง",
"check_title": "ตรวจสอบการกรอง",
"check_desc": "ตรวจสอบว่าชื่อโฮสต์ถูกกรอง",
"form_enter_host": "ป้อนชื่อโฮสต์"
}

View File

@@ -0,0 +1,510 @@
{
"client_settings": "İstemci ayarları",
"example_upstream_reserved": "<0>Belirli alan adları için</0> DNS üst sunucusu tanımlayabilirsiniz.",
"upstream_parallel": "Tüm üst sunucuları eş zamanlı sorgulayarak çözümü hızlandırmak için paralel sorguları kullan",
"parallel_requests": "Paralel istekler",
"bootstrap_dns": "DNS Önyükleme sunucuları",
"bootstrap_dns_desc": "DNS Önyükleme sunucuları, seçtiğiniz üst sunucuların DoH/DoT çözücülerine ait ip adreslerinin çözülmesi için kullanılır.",
"check_dhcp_servers": "DHCP sunucularını yokla",
"save_config": "Ayarları kaydet",
"enabled_dhcp": "DHCP sunucusu etkinleştirildi",
"disabled_dhcp": "DHCP sunucusu devre dışı bırakıldı",
"dhcp_title": "DHCP sunucusu (deneysel!)",
"dhcp_description": "Eğer router'ınız DHCP ayarlarını sunmuyorsa AdGuard'ın dahili DHCP sunucusunu kullanabilirsiniz.",
"dhcp_enable": "DHCP sunucusunu etkinleştir",
"dhcp_disable": "DHCP sunucusunu devre dışı bırak",
"dhcp_not_found": "Ağ üzerinde aktif bir DHCP sunucusu bulunamadı. Dahili DHCP sunucusunu etkinleştirebilirsiniz.",
"dhcp_found": "Ağ üzerinde bazı aktif DHCP sunucuları bulundu. Yerleşik DHCP sunucusunu aktif etmek sağlıklı olmayacaktır.",
"dhcp_leases": "DHCP kiralamaları",
"dhcp_static_leases": "Sabit DHCP kiralamaları",
"dhcp_leases_not_found": "DHCP kiralaması bulunamadı",
"dhcp_config_saved": "DHCP sunucusu ayarı kaydedildi",
"form_error_required": "Gerekli alan",
"form_error_ip4_format": "Geçersiz IPv4 formatı",
"form_error_ip6_format": "Geçersiz IPv6 formatı",
"form_error_ip_format": "Geçersiz IPv4 formatı",
"form_error_mac_format": "Geçersiz MAC biçimi",
"form_error_client_id_format": "Geçersiz müşteri kimliği formatı",
"form_error_positive": "0'dan büyük olmalı",
"form_error_negative": "0 veya daha büyük olmalıdır",
"dhcp_form_gateway_input": "Ağ Geçidi IP'si",
"dhcp_form_subnet_input": "Alt Ağ Maskesi",
"dhcp_form_range_title": "IP adres aralığı",
"dhcp_form_range_start": "Aralık başlangıcı",
"dhcp_form_range_end": "Aralık sonu",
"dhcp_form_lease_title": "DHCP kira süresi (saniye olarak)",
"dhcp_form_lease_input": "Kira süresi",
"dhcp_interface_select": "DHCP arayüzünü seç",
"dhcp_hardware_address": "Donanım adresi",
"dhcp_ip_addresses": "IP adresleri",
"ip": "IP Adresi",
"dhcp_table_hostname": "Bilgisayar Adı",
"dhcp_table_expires": "Geçerlilik Tarihi",
"dhcp_warning": "Dahili DHCP sunucusunu etkinleştirmek istiyorsanız başka aktif DHCP sunucusu olmadığından emin olun. Aksi takdirde cihazlar internete bağlanamayabilir.",
"dhcp_error": "Ağda başka bir DHCP sunucusu olup olmadığını belirleyemedik.",
"dhcp_static_ip_error": "DHCP sunucusunu kullanmak için statik bir IP adresi ayarlanmalıdır. Bu ağ arayüzünün statik IP adresi kullanılarak yapılandırılıp yapılandırılmadığını belirleyemedik. Lütfen statik bir IP adresini elle ayarlayın.",
"dhcp_dynamic_ip_found": "Sisteminiz <0>{{interfaceName}}</0> arayüzü için dinamik IP adresi yapılandırması kullanıyor. DHCP sunucusunu kullanmak için statik bir IP adresi ayarlanmalıdır. Geçerli IP adresiniz <0>{{ipAddress}}</0>. DHCP'yi etkinleştir düğmesine basarsanız bu IP adresini statik IP adresiniz olarak ayarlayacağız.",
"dhcp_lease_added": "Sabit kiralama \"{{key}}\" başarıyla eklendi",
"dhcp_lease_deleted": "Sabit kiralama \"{{key}}\" başarıyla silindi",
"dhcp_new_static_lease": "Yeni sabit kiralama",
"dhcp_static_leases_not_found": "Sabit DHCP kiralaması bulunamadı",
"dhcp_add_static_lease": "Sabit kiralama ekle",
"dhcp_reset": "DHCP yapılandırmasını sıfırlamak istediğinizden emin misiniz?",
"country": "Ülke",
"delete_confirm": "\"{{key}}\" silmek istediğinizden emin misiniz?",
"form_enter_hostname": "Cihaz ismi girin",
"error_details": "Hata detayları",
"client_details": "İstemci detayları",
"details": "Detaylar",
"back": "Geri",
"dashboard": "Pano",
"settings": "Ayarlar",
"filters": "Filtreler",
"filter": "Filtre",
"query_log": "Sorgu Günlüğü",
"faq": "SSS",
"version": "Sürüm",
"address": "Adres",
"on": "AÇIK",
"off": "KAPALI",
"copyright": "Tüm hakları saklıdır",
"homepage": "Anasayfa",
"report_an_issue": "Bir sorun bildir",
"privacy_policy": "Gizlilik sözleşmesi",
"enable_protection": "Korumayı etkinleştir",
"enabled_protection": "Koruma etkileştirildi",
"disable_protection": "Korumayı durdur",
"disabled_protection": "Koruma durduruldu",
"refresh_statics": "İstatistikleri yenile",
"dns_query": "DNS Sorguları",
"blocked_by": "Filtreler tarafından engellendi",
"stats_malware_phishing": "Zararlı yazılım/kimlik hırsızlığı engellendi",
"stats_adult": "Yetişkin içerikli site engellendi",
"stats_query_domain": "En fazla sorgulanan alan adları",
"for_last_24_hours": "son 24 saat içindekiler",
"for_last_days": "son {{count}} gün için",
"for_last_days_plural": "son {{count}} gün boyunca",
"no_domains_found": "Alan adı bulunamadı",
"requests_count": "İstek sayısı",
"top_blocked_domains": "En fazla engellenen alan adları",
"top_clients": "En aktif istemciler",
"no_clients_found": "İstemci bulunamadı",
"general_statistics": "Genel istatistikler",
"number_of_dns_query_days": "Son {{count}} gün boyunca işlenen DNS sorgularının sayısı",
"number_of_dns_query_days_plural": "Son {{count}} gün boyunca işlenen DNS sorgularının sayısı",
"number_of_dns_query_24_hours": "Son 24 saat içinde işlenen DNS sorgularının sayısı",
"number_of_dns_query_blocked_24_hours": "Reklam engelleme filtreleri ve hosts listeleri tarafından engellenmiş DNS isteklerinin sayısı",
"number_of_dns_query_blocked_24_hours_by_sec": "AdGuard gezinti koruması modülü tarafından engellenmiş DNS isteklerinin sayısı",
"number_of_dns_query_blocked_24_hours_adult": "Engellenmiş yetişkin içerikli web sitelerinin sayısı",
"enforced_save_search": "Etkin güvenli arama",
"number_of_dns_query_to_safe_search": "Güvenli Arama etkinleştirildiğinde arama motorlarına gönderilen DNS isteklerinin sayısı",
"average_processing_time": "Ortalama işlem süresi",
"average_processing_time_hint": "Bir DNS isteğinin mili saniye cinsinden ortalama işlem süresi",
"block_domain_use_filters_and_hosts": "Filtreleri ve hosts listelerini kullanarak alan adlarını engelle",
"filters_block_toggle_hint": "<a href='#filters'>Filtreler</a> sayfasından engelleme kurallarını ayarlayabilirsiniz.",
"use_adguard_browsing_sec": "AdGuard gezinti koruması web hizmetini kullan",
"use_adguard_browsing_sec_hint": "AdGuard Home, alan adının gezinti koruması web hizmetinde kara listede olup olmadığını kontrol edecek. Kontrol işlemi gizlilik dostu API kullanılarak yapılacak: yalnızca alan adının kısa bir ön eki SHA256 ile şifrelenip sunucuya gönderilecek.",
"use_adguard_parental": "AdGuard ebeveyn kontrolü web hizmetini kullan",
"use_adguard_parental_hint": "AdGuard Home, alan adının yetişkin içerik bulundurup bulundurmadığını kontrol edecek. Gezinti güvenliği web hizmeti ile kullandığımız aynı gizlilik dostu API'yi kullanıyoruz.",
"enforce_safe_search": "Güvenli aramayı zorunlu kıl",
"enforce_save_search_hint": "AdGuard Home şu arama motorlarında güvenli aramayı zorunlu kılabilir: Google, Youtube, Bing, DuckDuckGo ve Yandex.",
"no_servers_specified": "Sunucu adresi girilmedi",
"general_settings": "Genel ayarlar",
"dns_settings": "DNS ayarları",
"dns_blocklists": "DNS blok listeleri",
"dns_allowlists": "DNS izin listeleri",
"dns_blocklists_desc": "AdGuard Home, blok listelerle eşleşen alanları engeller.",
"dns_allowlists_desc": "DNS izin listelerindeki alanlara, engelleme listelerinden birinde olsalar bile izin verilir.",
"custom_filtering_rules": "Özel filtreleme kuralları",
"encryption_settings": "Şifreleme ayarları",
"dhcp_settings": "DHCP ayarları",
"upstream_dns": "Üst DNS sunucusu",
"upstream_dns_hint": "Eğer bu alanı boş bırakırsanız AdGuard Home üst sunucu olarak <a href='https://1.1.1.1/' target='_blank'>Cloudflare DNS</a> adresini kullanacaktır.",
"test_upstream_btn": "Üst sunucuyu test et",
"upstreams": "Upstreams",
"apply_btn": "Uygula",
"disabled_filtering_toast": "Filtreleme devre dışı",
"enabled_filtering_toast": "Filtreleme çalışıyor",
"disabled_safe_browsing_toast": "Güvenli gezinti devre dışı",
"enabled_safe_browsing_toast": "Güvenli gezinti çalışıyor",
"disabled_parental_toast": "Ebeveyn kontrolü devre dışı",
"enabled_parental_toast": "Ebeveyn kontrolü çalışıyor",
"disabled_safe_search_toast": "Güvenli arama devre dışı",
"enabled_save_search_toast": "Güvenli arama çalışıyor",
"enabled_table_header": "Etkin",
"name_table_header": "İsim",
"list_url_table_header": "Liste URL'si",
"rules_count_table_header": "Kural sayısı",
"last_time_updated_table_header": "Son güncelleme",
"actions_table_header": "Eylemler",
"request_table_header": "İstek",
"edit_table_action": "Düzenle",
"delete_table_action": "Sil",
"elapsed": "Geçen zaman",
"filters_and_hosts_hint": "AdGuard Home temel reklam engelleme kurallarını ve hosts dosyalarının söz dizim kurallarını anlamaktadır.",
"no_blocklist_added": "Hiçbir blok listesi eklenmedi",
"no_whitelist_added": "Hiçbir izin listesi eklenmedi",
"add_blocklist": "Engelleme listesi ekle",
"add_allowlist": "İzin listesi ekle",
"cancel_btn": "İptal",
"enter_name_hint": "İsim girin",
"enter_url_or_path_hint": "Bir URL ya da listenin tam yolunu girin",
"check_updates_btn": "Güncellemeleri denetle",
"new_blocklist": "Yeni engelleme listesi",
"new_allowlist": "Yeni izin listesi",
"edit_blocklist": "Engelleme listesini düzenle",
"edit_allowlist": "İzin listesini düzenle",
"enter_valid_blocklist": "Engelleme listesine geçerli bir URL girin.",
"enter_valid_allowlist": "İzin listesine geçerli bir URL girin.",
"form_error_url_format": "Geçersiz url biçim",
"form_error_url_or_path_format": "Geçersiz URL ya da listenin tam yolu",
"custom_filter_rules": "İsteğe bağlı filtreleme kuralları",
"custom_filter_rules_hint": "Her satıra bir kural girin. Reklama engelleme kuralı veya hosts dosyası söz dizimi kullanabilirsiniz.",
"examples_title": "Örnekler",
"example_meaning_filter_block": "example.org alan adına ve tüm alt alan adlarına olan erişimi engeller",
"example_meaning_filter_whitelist": "example.org alan adına ve tüm alt alan adlarına olan erişim engelini kaldırır",
"example_meaning_host_block": "AdGuard Home bu example.org adresi için 127.0.0.1 adresine yönlendirme yapacaktır (alt alan adları için geçerli değildir)",
"example_comment": "! Buraya bir yorum ekledim",
"example_comment_meaning": "yorum eklemek",
"example_comment_hash": "# Bir yorum daha ekledim",
"example_regex_meaning": "belirtilen düzenli ifadelerle eşleşen alan adlarına erişimi engelle",
"example_upstream_regular": "normal DNS (UDP üzerinden)",
"example_upstream_dot": "<0>DNS-over-TLS</0> şifrelemesi",
"example_upstream_doh": "<0>DNS-over-HTTPS</0> şifrelemesi",
"example_upstream_sdns": "<1>DNSCrypt</1> veya <2>DNS-over-HTTPS</2> çözücüleri için <0>DNS Damgaları</0> kullanabilirsiniz.",
"example_upstream_tcp": "normal DNS (TCP üzerinden)",
"all_lists_up_to_date_toast": "Tüm listeler zaten güncel",
"updated_upstream_dns_toast": "Üst DNS sunucuları güncellendi",
"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",
"unblock": "Engeli kaldır",
"block": "Engelle",
"time_table_header": "Saat",
"date": "Tarih",
"domain_name_table_header": "Alan adı",
"domain_or_client": "Alan adı veya istemci",
"type_table_header": "Tür",
"response_table_header": "Yanıt",
"client_table_header": "İstemci",
"empty_response_status": "Boş",
"show_all_filter_type": "Tümünü göster",
"show_filtered_type": "Filtrelenmişleri göster",
"no_logs_found": "Günlük kaydı bulunamadı",
"refresh_btn": "Yenile",
"previous_btn": "Önceki",
"next_btn": "Sonraki",
"loading_table_status": "Yükleniyor...",
"page_table_footer_text": "Sayfa",
"rows_table_footer_text": "satır",
"updated_custom_filtering_toast": "İsteğe bağlı filtreleme kuralları güncellendi",
"rule_removed_from_custom_filtering_toast": "Kural isteğe bağlı filtreleme kurallarından kaldırıldı",
"rule_added_to_custom_filtering_toast": "Kural isteğe bağlı filtreleme kurallarına eklendi",
"query_log_response_status": "Durum: {{value}}",
"query_log_filtered": "{{filter}} tarafından filtrelendi",
"query_log_confirm_clear": "Tüm sorgu günlüğünü temizlemek istediğinizden emin misiniz?",
"query_log_cleared": "Sorgu günlüğü başarıyla temizlendi",
"query_log_clear": "Sorgu kayıtlarını temizle",
"query_log_retention": "Sorgu kayıtlarının saklanması",
"query_log_enable": "Günlük kaydını etkinleştir",
"query_log_configuration": "Günlük yapılandırması",
"query_log_disabled": "Sorgu günlüğü devre dışı bırakıldı ve <0>ayarlar</0>da yapılandırılabilir",
"query_log_strict_search": "Katı arama için çift tırnak işareti kullanın",
"query_log_retention_confirm": "Sorgu günlüğü saklama süresini değiştirmek istediğinize emin misiniz? Aralık değerini azaltırsanız, bazı veriler kaybolacaktır",
"anonymize_client_ip": "İstemci IP'sini anonimize et",
"anonymize_client_ip_desc": "Tam IP adresini günlüğe ve istatistiklere kaydetme",
"dns_config": "DNS sunucusu yapılandırması",
"blocking_mode": "Engelleme modu",
"default": "Varsayılan",
"nxdomain": "NXDOMAIN",
"null_ip": "Boş IP",
"custom_ip": "Özel IP",
"blocking_ipv4": "IPv4 engelleme",
"blocking_ipv6": "IPv6 engelleme",
"dns_over_https": "DNS üzerinden HTTPS",
"form_enter_rate_limit": "Sıklık limitini girin",
"rate_limit": "Sıklık limiti",
"edns_enable": "EDNS İstemci Alt Ağını Etkinleştir",
"edns_cs_desc": "Etkinleştirilirse, AdGuard Home, istemcilerin alt ağlarını DNS sunucularına gönderir.",
"rate_limit_desc": "Tek bir istemcinin saniye başına yapmasına izin verilen istek sayısı (0: sınırsız)",
"blocking_ipv4_desc": "Engellenen bir A isteği için geri döndürülecek IP adresi",
"blocking_ipv6_desc": "Engellenen bir AAAA isteği için geri döndürülecek IP adresi",
"blocking_mode_default": "Varsayılan: Adblock tarzı kural tarafından engellendiğinde NXDOMAIN ile yanıt verin; / etc / hosts-style kuralı tarafından engellendiğinde kuralda belirtilen IP adresiyle yanıt ver",
"blocking_mode_nxdomain": "NXDOMAIN: NXDOMAIN koduyla yanıt",
"blocking_mode_null_ip": "Boş IP: Sıfır IP adresiyle yanıtlayın (A için 0.0.0.0; :: AAAA için)",
"blocking_mode_custom_ip": "Özel IP: Manuel olarak ayarlanmış bir IP adresiyle yanıt verin",
"upstream_dns_client_desc": "Bu alanı boş tutarsanız, AdGuard Home, <0>DNS ayarlarında</0> yapılandırılmış sunucuları kullanır.",
"source_label": "Kaynak",
"found_in_known_domain_db": "Bilinen alan adları veri tabanı içinde bulundu",
"category_label": "Kategori",
"rule_label": "Kural",
"list_label": "Liste",
"unknown_filter": "Bilinmeyen filtre {{filterId}}",
"install_welcome_title": "AdGuard Home'a hoşgeldiniz!",
"install_welcome_desc": "AdGuard Home, ağ genelinde reklam ve izleyicileri engelleyen bir DNS sunucusudur. Tüm ağınızı ve tüm cihazlarınızı kontrol etmenize yarayan bir araçtır, istemci tarafında bir program kullanmanıza gerek duymaz.",
"install_settings_title": "Yönetici Web Arayüzü",
"install_settings_listen": "Dinleme arayüzü",
"install_settings_port": "Port",
"install_settings_interface_link": "AdGuard Home yönetici web arayüzü sayfanız şu adresten erişilebilir olacaktır:",
"form_error_port": "Geçerli bir port değeri girin",
"install_settings_dns": "DNS sunucusu",
"install_settings_dns_desc": "Cihazlarınızı veya yönlendiricinizi şu adresteki DNS sunucusunu kullanması için ayarlamanız gerekecek:",
"install_settings_all_interfaces": "Tüm arayüzler",
"install_auth_title": "Kimlik Doğrulama",
"install_auth_desc": "AdAdGuard Home yönetici web arayüzüne erişim için kullanıcı adı ve şifresi oluşturmanız şiddetle tavsiye edilir. Sadece yerel ağınız erişilebilir olsa bile izinsiz giriş yapılmasını engellemek için şifrenizin olması önemlidir.",
"install_auth_username": "Kullanıcı adı",
"install_auth_password": "Şifre",
"install_auth_confirm": "Şifreyi onayla",
"install_auth_username_enter": "Kullanıcı adı girin",
"install_auth_password_enter": "Şifre girin",
"install_step": "Adım",
"install_devices_title": "Cihazlarınızı ayarlayın",
"install_devices_desc": "AdGuard Home'un çalışması için cihazlarınızı onu kullanacak şekilde ayarlamalısınız.",
"install_submit_title": "Tebrikler!",
"install_submit_desc": "Kurulum işlemi tamamlandı ve artık AdGuard Home'u kullanmak için hazırsınız.",
"install_devices_router": "Yönlendirici",
"install_devices_router_desc": "Bu kurulum evdeki yönlendiricinize bağlı tüm cihazlarınızı otomatik olarak kapsar ve her birini elle ayarlamanız gerekmez.",
"install_devices_address": "AdGuard Home DNS sunucusu şu adresi dinleyecektir",
"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_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 <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_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_4": "Aktif bağlantınızı seçin, sağ tıklayın ve Özellikler'e tıklayın.",
"install_devices_windows_list_5": "Listeden İnternet Protokolü Sürüm 4 (TCP/IP)'ye tıklayın ve Özellikler'e tıklayın.",
"install_devices_windows_list_6": "Aşağıdaki DNS sunucu adreslerini kullanın'ı seçin ve Tercih edilen DNS sunucusu alanına AdGuard Home sunucusunun adreslerini girin.",
"install_devices_macos_list_1": "Apple simgesine tıklayın ve Sistem Tercihleri'ne tıklayın.",
"install_devices_macos_list_2": "Ağ seçeneğine tıklayın.",
"install_devices_macos_list_3": "Listenizdeki ilk bağlantıyı seçin ve Gelişmiş'e tıklayın.",
"install_devices_macos_list_4": "DNS sekmesine tıklayın ve AdGuard Home sunucunuzun adreslerini girin.",
"install_devices_android_list_1": "Android cihazınızda Ayarlar simgesine dokunun.",
"install_devices_android_list_2": "Wi-Fi menüsüne dokunun. Mevcut tüm ağlar listelenecektir (mobil bağlantı için isteğe bağlı DNS sunucusu ayarlanamaz).",
"install_devices_android_list_3": "Bağlandığınız ağa basılı tutup \"Ağı Değiştir\"e dokunun.",
"install_devices_android_list_4": "Bazı cihazlarda diğer ayarları görmek için Gelişmiş kutucuğuna dokunmanız gerekebilir. Android cihazınızın DNS ayarlarını değiştirmek için IP ayarlarını DHCP yerine Statik olarak değiştirmeniz gerekebilir.",
"install_devices_android_list_5": "DNS 1 ve DNS 2 değerlerini AdGuard Home sunucusunun ip adresleri ile değiştirin.",
"install_devices_ios_list_1": "Ana ekrandaki Ayarlar simgesine dokunun.",
"install_devices_ios_list_2": "Sol menüdeki Wi-Fi bölümüne girin (mobil bağlantı için isteğe bağlı DNS sunucusu ayarlanamaz).",
"install_devices_ios_list_3": "Bağlı olduğunuz ağın ismine dokunun.",
"install_devices_ios_list_4": "DNS alanına AdGuard Home sunucunuzun adreslerini girin.",
"get_started": "Başlarken",
"next": "İleri",
"open_dashboard": "Panoyu Aç",
"install_saved": "Başarıyla kaydedildi",
"encryption_title": "Şifreleme",
"encryption_desc": "Hem DNS ve hem de yönetici web arayüzü için şifreleme (HTTPS/TLS) desteği",
"encryption_config_saved": "Şifreleme ayarı kaydedildi",
"encryption_server": "Sunucu adı",
"encryption_server_enter": "Alan adınızı girin",
"encryption_server_desc": "HTTPS kullanmak için SSL sertifikanızla eşleşen sunucu adını girmeniz gerekir",
"encryption_redirect": "Otomatik olarak HTTPS'e yönlendir",
"encryption_redirect_desc": "Etkinleştirirseniz AdGuard Home sizi HTTP yerine HTTPS adreslerine yönlendirir.",
"encryption_https": "HTTPS bağlantı noktası",
"encryption_https_desc": "Eğer HTTPS portu yapılandırılmışsa, AdGuard Home yönetici arayüzü HTTPS ile ulaşılabilir olacak, ayrıca '/dns-query' üzerinden DNS-over-HTTPS hizmeti de çalışacak.",
"encryption_dot": "DNS-over-TLS portu",
"encryption_dot_desc": "Eğer bu portu yapılandırırsanız AdGuard Home bu port üzerinden DNS-over-TLS sunucusu çalıştıracak.",
"encryption_certificates": "Sertifikalar",
"encryption_certificates_desc": "Şifrelemeyi kullanmak için alan adınız için geçerli bir SSL sertifika zinciri temin etmeniz gerekir. <0>{{link}}</0> adresinden ücretsiz temin edebilirsiniz veya güvenilir Sertifika Otoritelerinden satın alabilirsiniz.",
"encryption_certificates_input": "PEM formatındaki sertifikalarınızı buraya yapıştırın.",
"encryption_status": "Durum",
"encryption_expire": "Bitiş tarihi",
"encryption_key": "Özel anahtar",
"encryption_key_input": "Sertifikanızın PEM formatı özel anahtarını buraya yapıştırın.",
"encryption_enable": "Şifrelemeyi etkinleştir (HTTPS, DNS-over-HTTPS ve DNS-over-TLS)",
"encryption_enable_desc": "Şifrelemeyi etkinleştirirseniz AdGuard Home yönetici arayüzü HTTPS ile çalışacak, ayrıca DNS sunucusu DNS-over-HTTPS ve DNS-over-TLS üzerinden gelen istekleri dinleyecektir.",
"encryption_chain_valid": "Sertifika zinciri geçerli",
"encryption_chain_invalid": "Sertifika zinciri geçersiz",
"encryption_key_valid": "Bu geçerli bir {{type}} özel anahtar",
"encryption_key_invalid": "Bu geçersiz bir {{type}} özel anahtar",
"encryption_subject": "Konu",
"encryption_issuer": "Sertifikayı veren",
"encryption_hostnames": "Ana bilgisayar isimleri",
"encryption_reset": "Şifreleme ayarlarını sıfırlamak istediğinize emin misiniz?",
"topline_expiring_certificate": "SSL sertifikanızın süresi dolmak üzere. <0>Şifreleme ayarlarını</0> güncelleyin.",
"topline_expired_certificate": "SSL sertifikanızın süresi dolmuş. <0>Şifreleme ayarlarını</0> güncelleyin.",
"form_error_port_range": "80-65535 aralığında geçerli bir port değeri girin.",
"form_error_port_unsafe": "Bu güvenli olmayan bir port",
"form_error_equal": "Aynı olmamalı",
"form_error_password": "Şifreler uyuşmuyor",
"reset_settings": "Ayarları sıfırla",
"update_announcement": "AdGuard Home {{version}} şu an yüklenmeye hazır! Daha fazla bilgi için <0>buraya tıklayın.</0>",
"setup_guide": "Kurulum rehberi",
"dns_addresses": "DNS adresleri",
"dns_start": "DNS sunucusu başlatılıyor",
"dns_status_error": "DNS sunucusu durumunu alma hatası",
"down": "kapalı",
"fix": "Düzelt",
"dns_providers": "Aralarından seçim yapabileceğiniz bilinen <0>DNS sağlayıcıların listesi</0>.",
"update_now": "Şimdi güncelleyin",
"update_failed": "Otomatik güncelleme başarısız oldu. Lütfen elle güncellemek için <a href='https://github.com/AdguardTeam/AdGuardHome/wiki/Getting-Started#update'>talimatları uygulayın.</a>",
"processing_update": "Lütfen bekleyin. AdGuard Home güncelleniyor",
"clients_title": "İstemciler",
"clients_desc": "AdGuard Home'a bağlı cihazları yapılandırın",
"settings_global": "Genel",
"settings_custom": "Özel",
"table_client": "İstemci",
"table_name": "İsim",
"save_btn": "Kaydet",
"client_add": "İstemci ekle",
"client_new": "Yeni İstemci",
"client_edit": "İstemciyi düzenle",
"client_identifier": "Tanımlayıcı",
"ip_address": "IP adresi",
"client_identifier_desc": "İstemciler IP adresleri veya MAC adresleri ile tanımlanabilir. Lütfen not edin, MAC adresi ile tanımlamayı kullanmak için AdGuard Home'un <0>DHCP Sunucusu</0> olması gerekir.",
"form_enter_ip": "IP Girin",
"form_enter_mac": "MAC Girin",
"form_enter_id": "Tanımlayıcı girin",
"form_add_id": "Tanımlayıcı ekle",
"form_client_name": "İstemci ismi girin",
"client_global_settings": "Genel ayarları kullan",
"client_deleted": "\"{{key}}\" istemcisi başarıyla silindi",
"client_added": "\"{{key}}\" istemcisi başarıyla eklendi",
"client_updated": "\"{{key}}\" istemcisi başarıyla güncellendi",
"clients_not_found": "İstemci bulunamadı",
"client_confirm_delete": "\"{{key}}\" istemcisini silmek istediğinizden emin misiniz?",
"list_confirm_delete": "Bu listeyi silmek istediğinizden emin misiniz?",
"auto_clients_title": "İstemciler (çalışma zamanı)",
"auto_clients_desc": "AdGuard Home'u kullanan, ancak yapılandırmada saklanmayan istemcilerdeki veriler",
"access_title": "Erişim ayarları",
"access_desc": "Burada, AdGuard Home DNS sunucusu için erişim kurallarını yapılandırabilirsiniz.",
"access_allowed_title": "İzin verilen istemciler",
"access_allowed_desc": "CIDR veya IP adreslerinin listesi. Yapılandırılırsa, AdGuard Home yalnızca bu IP adreslerinden gelen istekleri kabul edecektir.",
"access_disallowed_title": "İzin verilmeyen istemciler",
"access_disallowed_desc": "CIDR veya IP adreslerinin listesi. Yapılandırılırsa, AdGuard Home yalnızca bu IP adreslerinden gelen istekleri cevapsız bırakacaktır.",
"access_blocked_title": "Engellenmiş alan adları",
"access_blocked_desc": "Bunu filtrelerle karıştırmayın. AdGuard Home, bu alan adları için gelen DNS sorgularını cevapsız bırakacaktır.",
"access_settings_saved": "Erişim ayarları başarıyla kaydedildi!",
"updates_checked": "Güncelleme kontrolü başarılı",
"updates_version_equal": "AdGuard Home yazılımı günceldir",
"check_updates_now": "Güncellemeleri şimdi denetle",
"dns_privacy": "DNS Gizliliği",
"setup_dns_privacy_1": "<0>DNS-over-TLS:</0> Kullanımı <1>{{address}}</1> string.",
"setup_dns_privacy_2": "<0>DNS-over-HTTPS:</0> Kullanımı <1>{{address}}</1> string.",
"setup_dns_privacy_3": "<0>Lütfen şifrelenmiş DNS protokollerinin yalnızca Android 9'da desteklendiğini unutmayın. Bu yüzden diğer işletim sistemleri için ek yazılım yüklemeniz gerekir..</0><0>İşte kullanabileceğiniz yazılımların bir listesi.</0>",
"setup_dns_privacy_android_1": "Android 9 aslen DNS-over-TLS desteklemektedir. Yapılandırmak için, Ayarlar → Ağ ve internet → Gelişmiş → Özel DNS seçeneğine gidin ve alan adınızı buraya girin.",
"setup_dns_privacy_android_2": "<0>AdGuard for Android</0>, <1>DNS-over-HTTPS</1> ve <1>DNS-over-TLS</1> desteklemektedir.",
"setup_dns_privacy_android_3": "<0>Intra</0> Android'e <1>DNS-over-HTTPS</1> desteğini ekler.",
"setup_dns_privacy_ios_1": "<0>DNSCloak</0>, <1>DNS-over-HTTPS</1> destekler, ancak kendi sunucunuzu kullanacak şekilde yapılandırmak için bir <2>DNS Damgası</2> oluşturmanız gerekir.",
"setup_dns_privacy_ios_2": "<0>AdGuard for iOS</0>, <1>DNS-over-HTTPS</1> ve <1>DNS-over-TLS</1> destekler.",
"setup_dns_privacy_other_title": "Diğer uygulamalar",
"setup_dns_privacy_other_1": "AdGuard Home'un kendisi herhangi bir platformda güvenli bir DNS istemcisi olabilir.",
"setup_dns_privacy_other_2": "<0>dnsproxy</0>, bilinen tüm güvenli DNS protokollerini destekler.",
"setup_dns_privacy_other_3": "<0>dnscrypt-proxy</0>, <1>DNS-over-HTTPS</1> destekler.",
"setup_dns_privacy_other_4": "<0>Mozilla Firefox</0>, <1>DNS-over-HTTPS</1> desteklemektedir.",
"setup_dns_privacy_other_5": "<0>Burada</0> ve <1>burada</1> daha fazla uygulama bulacaksınız.",
"setup_dns_notice": "<1>DNS-over-HTTPS</1> veya <1>DNS-over-TLS</1> kullanmak için, AdGuard Home ayarlarında <0>Şifreleme yapılandırmasını</0> yapmanız gerekir.",
"rewrite_added": "\"{{key}}\" için DNS yeniden yazımı başarıyla eklendi",
"rewrite_deleted": "\"{{key}}\" için DNS yeniden yazımı başarıyla silindi",
"rewrite_add": "DNS yeniden yazımı ekle",
"rewrite_not_found": "DNS yeniden yazımı bulunamadı",
"rewrite_confirm_delete": "\"{{key}}\" için DNS yeniden yazımını silmek istediğinize emin misiniz?",
"rewrite_desc": "Belirli bir alan adı için kolayca özel DNS yanıtı yapılandırmanıza olanak tanır.",
"rewrite_applied": "Uygulanan Yeniden Yazım kuralı",
"rewrite_hosts_applied": "Host dosyası kuralı tarafından yeniden yazıldı",
"dns_rewrites": "DNS yeniden yazımları",
"form_domain": "Alan adı girin",
"form_answer": "IP adresini veya alan adı girin",
"form_error_domain_format": "Geçersiz alan adı formatı",
"form_error_answer_format": "Geçersiz cevap formatı",
"configure": "Yapılandır",
"main_settings": "Ana ayarlar",
"block_services": "Belirli hizmetleri engelle",
"blocked_services": "Engellenen hizmetler",
"blocked_services_desc": "Popüler siteleri ve hizmetleri hızlı bir şekilde engellemenizi sağlar.",
"blocked_services_saved": "Engellenen servisler başarıyla kaydedildi",
"blocked_services_global": "Genel engellenen hizmetleri kullanın",
"blocked_service": "Engellenen hizmet",
"block_all": "Hepsini engelle",
"unblock_all": "Tüm engellemeyi kaldır",
"encryption_certificate_path": "Sertifika yolu",
"encryption_private_key_path": "Özel anahtar yolu",
"encryption_certificates_source_path": "Sertifika dosyalarının yolunu belirleyin",
"encryption_certificates_source_content": "Sertifikaların içeriklerini yapıştırın",
"encryption_key_source_path": "Özel bir anahtar dosyası belirleyin",
"encryption_key_source_content": "Özel anahtar içeriklerini yapıştırın",
"stats_params": "İstatistik yapılandırması",
"config_successfully_saved": "Yapılandırma başarıyla kaydedildi",
"interval_24_hour": "24 saat",
"interval_days": "{{count}} gün",
"interval_days_plural": "{{count}} gün",
"domain": "Alan adı",
"answer": "Cevap",
"filter_added_successfully": "Filtre başarıyla eklendi",
"filter_updated": "Filtre başarıyla güncellendi",
"statistics_configuration": "İstatistik yapılandırması",
"statistics_retention": "İstatistikleri depolama",
"statistics_retention_desc": "Zaman değerini azaltırsanız bazı veriler kaybolacaktır",
"statistics_clear": " İstatistikleri temizle",
"statistics_clear_confirm": "İstatistikleri temizlemeyi istediğinizden emin misiniz?",
"statistics_retention_confirm": "İstatistik saklama süresini değiştirmek istediğinize emin misiniz? Aralık değerini azaltırsanız, bazı veriler kaybolacaktır",
"statistics_cleared": "İstatistikler başarıyla temizlendi",
"interval_hours": "{{count}} saat",
"interval_hours_plural": "{{count}} saat",
"filters_configuration": "Filtre yapılandırması",
"filters_enable": "Filtreleri etkinleştir",
"filters_interval": "Filtreleri güncelleme sıklığı",
"disabled": "Devre dışı",
"username_label": "Kullanıcı adı",
"username_placeholder": "Kullanıcı adını girin",
"password_label": "Parola",
"password_placeholder": "Parolayı girin",
"sign_in": "Oturum aç",
"sign_out": "Oturumu kapat",
"forgot_password": "Parolanızı mı unuttunuz?",
"forgot_password_desc": "Kullanıcı hesabınız için yeni bir parola oluşturmak için lütfen <0>bu adımları</0> takip edin.",
"location": "Konum",
"orgname": "Organizasyon adı",
"netname": "Ağ adı",
"descr": "Açıklama",
"whois": "Whois",
"filtering_rules_learn_more": "Ana makinelere dair kendi kara listelerinizi oluşturmakla alakalı <0>daha fazla bilgi edinin</0>.",
"blocked_by_response": "Cevap olarak CNAME veya IP tarafından engellendi",
"try_again": "Tekrar deneyin",
"domain_desc": "Yeniden yazılmasını istediğiniz alan adını veya joker karakteri girin.",
"example_rewrite_domain": "cevapları yalnızca bu alan adı için yeniden yaz.",
"example_rewrite_wildcard": "tüm <0>example.org</0> alt alanları için cevapları yeniden yaz.",
"disable_ipv6": "IPv6'yı Devre Dışı Bırak",
"disable_ipv6_desc": "Bu özelliği etkinleştirirseniz, IPv6 adresleri (AAAA tipi) için gönderilen tüm DNS istekleri cevapsız bırakılacaktır.",
"fastest_addr": "En hızlı IP adresi",
"fastest_addr_desc": "Tüm DNS sunucularını sorgulayın ve tüm yanıtlar arasından en hızlı IP adresini döndürün",
"autofix_warning_text": "\"Düzelt\" i tıklatırsanız, AdGuardHome sisteminizi AdGuardHome DNS sunucusunu kullanacak şekilde yapılandırır.",
"autofix_warning_list": "Bu görevleri gerçekleştirecektir: <0> sistemi DNSStubListener'ı devre dışı bırakma </0> <0> DNS sunucu adresini 127.0.0.1 olarak ayarlayın </0> <0> /etc/resolv.conf / / run / systemd sembolik bağlantı hedefini değiştirin /resolve/resolv.conf </0> <0> durdur DNSStubListener (sistemde yeniden çözülmüş hizmeti yeniden yükle) </0>",
"autofix_warning_result": "Sonuç olarak, sisteminizden gelen tüm DNS istekleri varsayılan olarak AdGuardHome tarafından işlenir.",
"tags_title": "Etiketler",
"tags_desc": "İstemciye karşılık gelen etiketleri seçebilirsiniz. Etiketler, filtreleme kurallarına dahil edilebilir ve bunları daha doğru bir şekilde uygulamanıza olanak tanır. <0> Daha fazla bilgi edinin </0>",
"form_select_tags": "Müşteri etiketlerini seçin",
"check_title": "Filtrelemeyi kontrol edin",
"check_desc": "Ana bilgisayar adının filtrelenip filtrelenmediğini kontrol edin",
"check": "Kontrol",
"form_enter_host": "Bir ana bilgisayar adı girin",
"filtered_custom_rules": "Özel filtreleme kurallarına göre filtrelendi",
"host_whitelisted": "Ana makine beyaz listeye alındı",
"check_ip": "IP adresleri: {{ip}}",
"check_cname": "CNAME: {{cname}}",
"check_reason": "Sebep: {{reason}}",
"check_rule": "Kural: {{rule}}",
"check_service": "Hizmet adı: {{service}}",
"check_not_found": "Filtre listelerinizde bulunamadı",
"client_confirm_block": "\"{{ip}}\" istemcisini engellemek istediğinizden emin misiniz?",
"client_confirm_unblock": "\"{{ip}}\" istemcisinin engellemesini kaldırmak istediğinizden emin misiniz?",
"client_blocked": "\"{{ip}}\" istemcisi başarıyla engellendi",
"client_unblocked": "\"{{ip}}\" müşterisinin engellemesi başarıyla kaldırıldı",
"static_ip": "Statik IP adres",
"static_ip_desc": "AdGuard Home bir sunucudur, bu nedenle düzgün çalışması için statik bir IP adresine ihtiyaç duyar. Aksi takdirde, bir noktada yönlendiriciniz bu cihaza farklı bir IP adresi atayabilir.",
"set_static_ip": "Statik IP adresi ayarlama",
"install_static_ok": "İyi haberler! Statik IP adresi zaten yapılandırılmış",
"install_static_error": "AdGuard Home, bu ağ arayüzü için otomatik olarak yapılandıramaz. Lütfen bunu manuel olarak nasıl yapacağınıza ilişkin bir talimat arayın.",
"install_static_configure": "Dinamik bir IP adresi kullanıldığını tespit ettik - <0> {{ip}} </0>. Statik adresiniz olarak kullanmak ister misiniz?",
"confirm_static_ip": "AdGuard Home, {{ip}} adresini statik IP adresiniz olacak şekilde yapılandıracak. Devam etmek istiyor musunuz?",
"list_updated": "{{count}} liste güncellendi",
"list_updated_plural": "{{count}} liste güncellendi",
"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)",
"show_blocked_responses": "Engellendi",
"show_whitelisted_responses": "Beyazlisteye eklendi",
"blocked_adult_websites": "Yetişkin içerikli site engellendi",
"blocked_threats": "Engellenen Tehditler",
"allowed": "İzin verildi",
"blocklist": "Engellenen listesi",
"port_53_faq_link": "Port 53 genellikle \"DNSStubListener\" veya \"sistemd-resolved\" hizmetler tarafından kullanılır. Lütfen problemin nasıl çözüleceğine ilişkin <0>bu talimatı</0> okuyun."
}

View File

@@ -1,158 +1,448 @@
{
"check_dhcp_servers": "Ki\u1ec3m tra m\u00e1y ch\u1ee7 DHCP",
"save_config": "L\u01b0u thi\u1ebft l\u1eadp",
"enabled_dhcp": "M\u00e1y ch\u1ee7 DHCP \u0111\u00e3 k\u00edch ho\u1ea1t",
"disabled_dhcp": "M\u00e1y ch\u1ee7 DHCP \u0111\u00e3 t\u1eaft",
"dhcp_title": "M\u00e1y ch\u1ee7 DHCP (th\u1eed nghi\u1ec7m!)",
"dhcp_description": "N\u1ebfu b\u1ed9 \u0111\u1ecbnh tuy\u1ebfn kh\u00f4ng tr\u1ee3 c\u00e0i \u0111\u1eb7t DHCP, b\u1ea1n c\u00f3 th\u1ec3 d\u00f9ng m\u00e1y ch\u1ee7 DHCP d\u1ef1ng s\u1eb5n c\u1ee7a AdGuard",
"dhcp_enable": "B\u1eadt m\u00e1y ch\u1ee7 DHCP",
"dhcp_disable": "T\u1eaft m\u00e1y ch\u1ee7 DHCP",
"dhcp_not_found": "Kh\u00f4ng c\u00f3 m\u00e1y ch\u1ee7 DHCP n\u00e0o \u0111\u01b0\u1ee3c t\u00ecm th\u1ea5y trong m\u1ea1ng. C\u00f3 th\u1ec3 b\u1eadt m\u00e1y ch\u1ee7 DHCP m\u1ed9t c\u00e1ch an to\u00e0n",
"dhcp_found": "\u0110\u00e3 t\u00ecm th\u1ea5y m\u00e1y ch\u1ee7 DHCP trong m\u1ea1ng. C\u00f3 th\u1ec3 c\u00f3 r\u1ee7i ro n\u1ebfu k\u00edch ho\u1ea1t m\u00e1y ch\u1ee7 DHCP d\u1ef1ng s\u1eb5n",
"dhcp_leases": "DHCP leases",
"dhcp_leases_not_found": "No DHCP leases found",
"dhcp_config_saved": "Saved DHCP server config",
"form_error_required": "Required field",
"form_error_ip_format": "Invalid IPv4 format",
"form_error_positive": "Ph\u1ea3i l\u1edbn h\u01a1n 0",
"dhcp_form_gateway_input": "Gateway IP",
"dhcp_form_subnet_input": "Subnet mask",
"dhcp_form_range_title": "Range of IP addresses",
"dhcp_form_range_start": "Range start",
"dhcp_form_range_end": "IP k\u1ebft th\u00fac",
"dhcp_form_lease_title": "DHCP lease time (in seconds)",
"dhcp_form_lease_input": "Lease duration",
"dhcp_interface_select": "Ch\u1ecdn m\u1ed9t card m\u1ea1ng",
"dhcp_hardware_address": "Hardware address",
"dhcp_ip_addresses": "IP addresses",
"back": "Quay l\u1ea1i",
"dashboard": "T\u1ed5ng quan",
"settings": "C\u00e0i \u0111\u1eb7t",
"filters": "B\u1ed9 l\u1ecdc",
"query_log": "L\u1ecbch s\u1eed truy v\u1ea5n",
"faq": "H\u1ecfi \u0111\u00e1p",
"version": "phi\u00ean b\u1ea3n",
"address": "\u0111\u1ecba ch\u1ec9",
"on": "\u0110ang b\u1eadt",
"off": "\u0110ang t\u1eaft",
"copyright": "B\u1ea3n quy\u1ec1n",
"homepage": "Trang ch\u1ee7",
"report_an_issue": "B\u00e1o l\u1ed7i",
"enable_protection": "B\u1eadt b\u1ea3o v\u1ec7",
"enabled_protection": "\u0110\u00e3 b\u1eadt b\u1ea3o v\u1ec7",
"disable_protection": "T\u1eaft b\u1ea3o v\u1ec7",
"disabled_protection": "\u0110\u00e3 t\u1eaft b\u1ea3o v\u1ec7",
"refresh_statics": "L\u00e0m m\u1edbi th\u1ed1ng k\u00ea",
"dns_query": "Truy v\u1ea5n DNS",
"blocked_by": "Ch\u1eb7n b\u1edfi b\u1ed9 l\u1ecdc",
"stats_malware_phishing": "M\u00e3 \u0111\u1ed9c\/l\u1eeba \u0111\u1ea3o \u0111\u00e3 ch\u1eb7n",
"stats_adult": "Website ng\u01b0\u1eddi l\u1edbn \u0111\u00e3 ch\u1eb7n",
"stats_query_domain": "T\u00ean mi\u1ec1n truy v\u1ea5n nhi\u1ec1u",
"for_last_24_hours": "trong 24 gi\u1edd qua",
"no_domains_found": "Kh\u00f4ng c\u00f3 t\u00ean mi\u1ec1n n\u00e0o",
"requests_count": "S\u1ed1 l\u1ea7n y\u00eau c\u1ea7u",
"top_blocked_domains": "T\u00ean mi\u1ec1n ch\u1eb7n nhi\u1ec1u",
"top_clients": "Client d\u00f9ng nhi\u1ec1u",
"no_clients_found": "Kh\u00f4ng c\u00f3 client n\u00e0o",
"general_statistics": "Th\u1ed1ng k\u00ea chung",
"number_of_dns_query_24_hours": "S\u1ed1 y\u00eau c\u1ea7u DNS \u0111\u00e3 x\u1eed l\u00fd trong 24 gi\u1edd qua",
"number_of_dns_query_blocked_24_hours": "S\u1ed1 y\u00eau c\u1ea7u DNS b\u1ecb ch\u1eb7n b\u1edfi b\u1ed9 l\u1ecdc qu\u1ea3ng c\u00e1o v\u00e0 danh s\u00e1ch ch\u1eb7n host",
"number_of_dns_query_blocked_24_hours_by_sec": "S\u1ed1 y\u00eau c\u1ea7u DNS b\u1ecb ch\u1eb7n b\u1edfi ch\u1ebf \u0111\u1ed9 b\u1ea3o v\u1ec7 duy\u1ec7t web AdGuard",
"number_of_dns_query_blocked_24_hours_adult": "S\u1ed1 website ng\u01b0\u1eddi l\u1edbn \u0111\u00e3 ch\u1eb7n",
"enforced_save_search": "T\u00ecm ki\u1ebfm an to\u00e0n",
"number_of_dns_query_to_safe_search": "S\u1ed1 y\u00eau c\u1ea7u DNS t\u1edbi c\u00f4ng c\u1ee5 t\u00ecm ki\u1ebfm \u0111\u00e3 chuy\u1ec3n th\u00e0nh t\u00ecm ki\u1ebfm an to\u00e0n",
"average_processing_time": "Th\u1eddi gian x\u1eed l\u00fd trung b\u00ecnh",
"average_processing_time_hint": "Th\u1eddi gian trung b\u00ecnh cho m\u1ed9t y\u00eau c\u1ea7u DNS t\u00ednh b\u1eb1ng mili gi\u00e2y",
"block_domain_use_filters_and_hosts": "Ch\u1eb7n t\u00ean mi\u1ec1n s\u1eed d\u1ee5ng c\u00e1c b\u1ed9 l\u1ecdc v\u00e0 file hosts",
"filters_block_toggle_hint": "B\u1ea1n c\u00f3 th\u1ec3 thi\u1ebft l\u1eadp quy t\u1eafc ch\u1eb7n t\u1ea1i c\u00e0i \u0111\u1eb7t <a href='#filters'>B\u1ed9 l\u1ecdc<\/a>.",
"use_adguard_browsing_sec": "S\u1eed d\u1ee5ng d\u1ecbch v\u1ee5 b\u1ea3o v\u1ec7 duy\u1ec7t web AdGuard",
"use_adguard_browsing_sec_hint": "AdGuard Home s\u1ebd ki\u1ec3m tra t\u00ean mi\u1ec1n v\u1edbi d\u1ecbch v\u1ee5 b\u1ea3o v\u1ec7 duy\u1ec7t web. T\u00ednh n\u0103ng s\u1eed d\u1ee5ng m\u1ed9t API th\u00e2n thi\u1ec7n v\u1edbi quy\u1ec1n ri\u00eang t\u01b0: ch\u1ec9 m\u1ed9t ph\u1ea7n ng\u1eafn ti\u1ec1n t\u1ed1 m\u00e3 b\u0103m SHA256 \u0111\u01b0\u1ee3c g\u1eedi \u0111\u1ebfn m\u00e1y ch\u1ee7",
"use_adguard_parental": "S\u1eed d\u1ee5ng d\u1ecbch v\u1ee5 qu\u1ea3n l\u00fd c\u1ee7a ph\u1ee5 huynh AdGuard",
"use_adguard_parental_hint": "AdGuard Home s\u1ebd ki\u1ec3m tra n\u1ebfu t\u00ean mi\u1ec1n ch\u1ee9a t\u1eeb kho\u00e1 ng\u01b0\u1eddi l\u1edbn. T\u00ednh n\u0103ng s\u1eed d\u1ee5ng API th\u00e2n thi\u1ec7n v\u1edbi quy\u1ec1n ri\u00eang t\u01b0 t\u01b0\u01a1ng t\u1ef1 v\u1edbi d\u1ecbch v\u1ee5 b\u1ea3o v\u1ec7 duy\u1ec7t web",
"enforce_safe_search": "B\u1eaft bu\u1ed9c t\u00ecm ki\u1ebfm an to\u00e0n",
"enforce_save_search_hint": "AdGuard Home c\u00f3 th\u1ec3 b\u1eaft bu\u1ed9c t\u00ecm ki\u1ebfm an to\u00e0n v\u1edbi c\u00e1c d\u1ecbch v\u1ee5 t\u00ecm ki\u1ebfm: Google, Youtube, Bing, Yandex.",
"no_servers_specified": "Kh\u00f4ng c\u00f3 m\u00e1y ch\u1ee7 n\u00e0o \u0111\u01b0\u1ee3c li\u1ec7t k\u00ea",
"no_settings": "Kh\u00f4ng c\u00f3 c\u00e0i \u0111\u1eb7t n\u00e0o",
"general_settings": "C\u00e0i \u0111\u1eb7t chung",
"upstream_dns": "M\u00e1y ch\u1ee7 DNS t\u00ecm ki\u1ebfm",
"upstream_dns_hint": "N\u1ebfu b\u1ea1n \u0111\u1ec3 tr\u1ed1ng m\u1ee5c n\u00e0y, AdGuard Home s\u1ebd s\u1eed d\u1ee5ng <a href='https:\/\/1.1.1.1\/' target='_blank'>Cloudflare DNS<\/a> \u0111\u1ec3 t\u00ecm ki\u1ebfm. S\u1eed d\u1ee5ng ti\u1ec1n t\u1ed1 tls:\/\/ cho c\u00e1c m\u00e1y ch\u1ee7 DNS d\u1ef1a tr\u00ean TLS.",
"test_upstream_btn": "Ki\u1ec3m tra",
"apply_btn": "\u00c1p d\u1ee5ng",
"disabled_filtering_toast": "\u0110\u00e3 t\u1eaft ch\u1eb7n qu\u1ea3ng c\u00e1o",
"enabled_filtering_toast": "\u0110\u00e3 b\u1eadt ch\u1eb7n qu\u1ea3ng c\u00e1o",
"disabled_safe_browsing_toast": "\u0110\u00e3 t\u1eaft b\u1ea3o v\u1ec7 duy\u1ec7t web",
"enabled_safe_browsing_toast": "\u0110\u00e3 b\u1eadt b\u1ea3o v\u1ec7 duy\u1ec7t web",
"disabled_parental_toast": "\u0110\u00e3 t\u1eaft qu\u1ea3n l\u00fd c\u1ee7a ph\u1ee5 huynh",
"enabled_parental_toast": "\u0110\u00e3 b\u1eadt qu\u1ea3n l\u00fd c\u1ee7a ph\u1ee5 huynh",
"disabled_safe_search_toast": "\u0110\u00e3 t\u1eaft t\u00ecm ki\u1ebfm an to\u00e0n",
"enabled_save_search_toast": "\u0110\u00e3 b\u1eadt t\u00ecm ki\u1ebfm an to\u00e0n",
"enabled_table_header": "K\u00edch ho\u1ea1t",
"name_table_header": "T\u00ean",
"filter_url_table_header": "URL b\u1ed9 l\u1ecdc",
"rules_count_table_header": "S\u1ed1 quy t\u1eafc",
"last_time_updated_table_header": "C\u1eadp nh\u1eadt cu\u1ed1i",
"actions_table_header": "Thao t\u00e1c",
"delete_table_action": "Xo\u00e1",
"filters_and_hosts": "Danh s\u00e1ch b\u1ed9 l\u1ecdc v\u00e0 hosts",
"filters_and_hosts_hint": "AdGuard home hi\u1ec3u c\u00e1c quy t\u1eafc ch\u1eb7n qu\u1ea3ng c\u00e1o \u0111\u01a1n gi\u1ea3n v\u00e0 c\u00fa ph\u00e1p file hosts",
"no_filters_added": "Kh\u00f4ng c\u00f3 b\u1ed9 l\u1ecdc n\u00e0o \u0111\u01b0\u1ee3c th\u00eam",
"add_filter_btn": "Th\u00eam b\u1ed9 l\u1ecdc",
"cancel_btn": "Hu\u1ef7",
"enter_name_hint": "Nh\u1eadp t\u00ean",
"enter_url_hint": "Nh\u1eadp URL",
"check_updates_btn": "Ki\u1ec3m tra c\u1eadp nh\u1eadt",
"new_filter_btn": "\u0110\u0103ng k\u00fd b\u1ed9 l\u1ecdc m\u1edbi",
"enter_valid_filter_url": "Nh\u1eadp URL h\u1ee3p l\u1ec7 c\u1ee7a b\u1ed9 l\u1ecdc ho\u1eb7c file hosts",
"custom_filter_rules": "Quy t\u1eafc l\u1ecdc tu\u1ef3 ch\u1ec9nh",
"custom_filter_rules_hint": "Nh\u1eadp m\u1ed7i quy t\u1eafc 1 d\u00f2ng. C\u00f3 th\u1ec3 s\u1eed d\u1ee5ng quy t\u1eafc ch\u1eb7n qu\u1ea3ng c\u00e1o ho\u1eb7c c\u00fa ph\u00e1p file host",
"examples_title": "V\u00ed d\u1ee5",
"example_meaning_filter_block": "Ch\u1eb7n truy c\u1eadp t\u1edbi t\u00ean mi\u1ec1n example.org v\u00e0 t\u1ea5t c\u1ea3 t\u00ean mi\u1ec1n con",
"example_meaning_filter_whitelist": "Kh\u00f4ng ch\u1eb7n truy c\u1eadp t\u1edbi t\u00ean mi\u1ec1n example.org v\u00e0 t\u1ea5t c\u1ea3 t\u00ean mi\u1ec1n con",
"example_meaning_host_block": "AdGuard Home s\u1ebd ph\u1ea3n h\u1ed3i \u0111\u1ecba ch\u1ec9 IP 127.0.0.1 cho t\u00ean mi\u1ec1n example.org (kh\u00f4ng \u00e1p d\u1ee5ng t\u00ean mi\u1ec1n con)",
"example_comment": "! \u0110\u00e2y l\u00e0 m\u1ed9t ch\u00fa th\u00edch",
"example_comment_meaning": "Ch\u1ec9 l\u00e0 m\u1ed9t ch\u00fa th\u00edch",
"example_comment_hash": "# C\u0169ng l\u00e0 m\u1ed9t ch\u00fa th\u00edch",
"example_upstream_regular": "DNS th\u00f4ng th\u01b0\u1eddng (d\u00f9ng UDP)",
"example_upstream_dot": "\u0111\u01b0\u1ee3c m\u00e3 ho\u00e1 <0>DNS-over-TLS<\/0>",
"example_upstream_doh": "\u0111\u01b0\u1ee3c m\u00e3 ho\u00e1 <0>DNS-over-HTTPS<\/0>",
"example_upstream_sdns": "b\u1ea1n c\u00f3 th\u1ec3 s\u1eed d\u1ee5ng <0>DNS Stamps<\/0> for <1>DNSCrypt<\/1> ho\u1eb7c <2>DNS-over-HTTPS<\/2> ",
"example_upstream_tcp": "DNS th\u00f4ng th\u01b0\u1eddng(d\u00f9ng TCP)",
"all_filters_up_to_date_toast": "T\u1ea5t c\u1ea3 b\u1ed9 l\u1ecdc \u0111\u00e3 \u0111\u01b0\u1ee3c c\u1eadp nh\u1eadt",
"updated_upstream_dns_toast": "\u0110\u00e3 c\u1eadp nh\u1eadt m\u00e1y ch\u1ee7 DNS t\u00ecm ki\u1ebfm",
"dns_test_ok_toast": "M\u00e1y ch\u1ee7 DNS c\u00f3 th\u1ec3 s\u1eed d\u1ee5ng",
"dns_test_not_ok_toast": "M\u00e1y ch\u1ee7 '{{key}}': kh\u00f4ng th\u1ec3 s\u1eed d\u1ee5ng, vui l\u00f2ng ki\u1ec3m tra b\u1ea1n \u0111\u00e3 \u0111i\u1ec1n ch\u00ednh x\u00e1c",
"unblock_btn": "B\u1ecf ch\u1eb7n",
"block_btn": "Ch\u1eb7n",
"time_table_header": "Th\u1eddi gian",
"domain_name_table_header": "T\u00ean mi\u1ec1n",
"type_table_header": "Lo\u1ea1i",
"response_table_header": "Ph\u1ea3n h\u1ed3i",
"client_table_header": "Ng\u01b0\u1eddi d\u00f9ng cu\u1ed1i",
"empty_response_status": "R\u1ed7ng",
"show_all_filter_type": "Hi\u1ec7n t\u1ea5t c\u1ea3",
"show_filtered_type": "Ch\u1ec9 hi\u1ec7n \u0111\u00e3 l\u1ecdc",
"no_logs_found": "Kh\u00f4ng c\u00f3 l\u1ecbch s\u1eed truy v\u1ea5n",
"disabled_log_btn": "T\u1eaft l\u1ecbch s\u1eed truy v\u1ea5n",
"download_log_file_btn": "T\u1ea3i t\u1eadp tin l\u1ecbch s\u1eed truy v\u1ea5n",
"refresh_btn": "L\u00e0m m\u1edbi",
"enabled_log_btn": "B\u1eadt l\u1ecbch s\u1eed truy v\u1ea5n",
"last_dns_queries": "5000 truy v\u1ea5n DNS g\u1ea7n nh\u1ea5t",
"previous_btn": "Trang tr\u01b0\u1edbc",
"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>",
"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_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",
"save_config": "Lưu thiết lập",
"enabled_dhcp": "Máy chủ DHCP đã kích hoạt",
"disabled_dhcp": "Máy chủ DHCP đã tắt",
"dhcp_title": "Máy chủ DHCP (thử nghiệm!)",
"dhcp_description": "Nếu bộ định tuyến không trợ cài đặt DHCP, bạn có thể dùng máy chủ DHCP dựng sẵn của AdGuard",
"dhcp_enable": "Bật máy chủ DHCP",
"dhcp_disable": "Tắt máy chủ DHCP",
"dhcp_not_found": "Không có máy chủ DHCP nào được tìm thấy trong mạng. Có thể bật máy chủ DHCP một cách an toàn",
"dhcp_found": "Đã tìm thấy máy chủ DHCP trong mạng. Có thể có rủi ro nếu kích hoạt máy chủ DHCP dựng sẵn",
"dhcp_leases": "Thuê DHCP",
"dhcp_static_leases": "Thuê DHCP tĩnh",
"dhcp_leases_not_found": "Không tìm thấy DHCP cho thuê",
"dhcp_config_saved": "Đã lưu cấu hình máy chủ DHCP",
"form_error_required": "Trường bắt buộc",
"form_error_ip4_format": "Định dạng IPv4 không hợp lệ",
"form_error_ip6_format": "Định dạng IPv6 không hợp lệ",
"form_error_ip_format": "Định dạng IPv4 không hợp lệ",
"form_error_mac_format": "Định dạng MAC không hợp lệ",
"form_error_client_id_format": "Định dạng client ID không hợp lệ",
"form_error_positive": "Phải lớn hơn 0",
"form_error_negative": "Phải lớn hơn hoặc bằng 0",
"dhcp_form_gateway_input": "Cổng IP",
"dhcp_form_subnet_input": "Mặt nạ mạng con",
"dhcp_form_range_title": "Phạm vi của địa chỉ IP",
"dhcp_form_range_start": "Phạm vi bắt đầu",
"dhcp_form_range_end": "IP kết thúc",
"dhcp_form_lease_title": "Thời gian thuê DHCP (tính bằng giây)",
"dhcp_form_lease_input": "Thời hạn thuê",
"dhcp_interface_select": "Chọn một card mạng",
"dhcp_hardware_address": "Địa chỉ phần cứng",
"dhcp_ip_addresses": "Các địa chỉ IP",
"ip": "IP",
"dhcp_table_hostname": "Tên máy chủ",
"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_error": "Chúng tôi không thể xác định liệu có một máy chủ DHCP khác trong mạng hay không.",
"dhcp_static_ip_error": "Để sử dụng máy chủ DHCP, phải đặt địa chỉ IP tĩnh. Chúng tôi không thể xác định xem giao diện mạng này có được cấu hình bằng địa chỉ IP tĩnh hay không. Vui lòng đặt địa chỉ IP tĩnh theo cách thủ công.",
"dhcp_dynamic_ip_found": "Hệ thống của bạn sử dụng cấu hình địa chỉ IP động cho giao diện <0>{{interfaceName}}</0>. Để sử dụng máy chủ DHCP, phải đặt địa chỉ IP tĩnh. Địa chỉ IP hiện tại của bạn là <0>{{ipAddress}}</0>. Chúng tôi sẽ tự động đặt địa chỉ IP này thành tĩnh nếu bạn nhấn nút Bật DHCP.",
"dhcp_lease_added": "Cho thuê tĩnh \"{{key}}\" đã được thêm thành công",
"dhcp_lease_deleted": "Cho thuê tĩnh \"{{key}}\" đã xóa thành công",
"dhcp_new_static_lease": "Cho thuê tĩnh mới",
"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_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?",
"form_enter_hostname": "Nhập tên máy chủ",
"error_details": "Chi tiết lỗi",
"details": "Chi tiết",
"back": "Quay lại",
"dashboard": "Tổng quan",
"settings": "Cài đặt",
"filters": "Bộ lọc",
"query_log": "Lịch sử truy vấn",
"faq": "Hỏi đáp",
"version": "phiên bản",
"address": "địa chỉ",
"on": "Đang bật",
"off": "Đang tắt",
"copyright": "Bản quyền",
"homepage": "Trang chủ",
"report_an_issue": "Báo lỗi",
"privacy_policy": "Chính sách riêng tư",
"enable_protection": "Bật bảo vệ",
"enabled_protection": "Đã bật bảo vệ",
"disable_protection": "Tắt bảo vệ",
"disabled_protection": "Đã tắt bảo vệ",
"refresh_statics": "Làm mới thống kê",
"dns_query": "Truy vấn DNS",
"blocked_by": "<0>Chặn bởi Bộ lọc</0>",
"stats_malware_phishing": "Mã độc/lừa đảo đã chặn",
"stats_adult": "Website người lớn đã chặn",
"stats_query_domain": "Tên miền truy vấn nhiều",
"for_last_24_hours": "trong 24 giờ qua",
"for_last_days": "trong {{count}} ngày qua",
"for_last_days_plural": "trong {{count}} ngày qua",
"no_domains_found": "Không có tên miền nào",
"requests_count": "Số lần yêu cầu",
"top_blocked_domains": "Tên miền chặn nhiều",
"top_clients": "Client dùng nhiều",
"no_clients_found": "Không có client nào",
"general_statistics": "Thống kê chung",
"number_of_dns_query_days": "Một số truy vấn DNS được xử lý trong {{count}} ngày qua",
"number_of_dns_query_days_plural": "Một số truy vấn DNS được xử lý trong {{count}} ngày qua",
"number_of_dns_query_24_hours": "Số yêu cầu DNS đã xử lý trong 24 giờ qua",
"number_of_dns_query_blocked_24_hours": "Số yêu cầu DNS bị chặn bởi bộ lọc quảng cáo và danh sách chặn host",
"number_of_dns_query_blocked_24_hours_by_sec": "Số yêu cầu DNS bị chặn bởi chế độ bảo vệ duyệt web AdGuard",
"number_of_dns_query_blocked_24_hours_adult": "Số website người lớn đã chặn",
"enforced_save_search": "Tìm kiếm an toàn",
"number_of_dns_query_to_safe_search": "Số yêu cầu DNS tới công cụ tìm kiếm đã chuyển thành tìm kiếm an toàn",
"average_processing_time": "Thời gian xử lý trung bình",
"average_processing_time_hint": "Thời gian trung bình cho một yêu cầu DNS tính bằng mili giây",
"block_domain_use_filters_and_hosts": "Chặn tên miền sử dụng các bộ lọc và file hosts",
"filters_block_toggle_hint": "Bạn có thể thiết lập quy tắc chặn tại cài đặt <a href='#filters'>Bộ lọc</a>.",
"use_adguard_browsing_sec": "Sử dụng dịch vụ bảo vệ duyệt web AdGuard",
"use_adguard_browsing_sec_hint": "AdGuard Home sẽ kiểm tra tên miền với dịch vụ bảo vệ duyệt web. Tính năng sử dụng một API thân thiện với quyền riêng tư: chỉ một phần ngắn tiền tố mã băm SHA256 được gửi đến máy chủ",
"use_adguard_parental": "Sử dụng dịch vụ quản lý của phụ huynh AdGuard",
"use_adguard_parental_hint": "AdGuard Home sẽ kiểm tra nếu tên miền chứa từ khoá người lớn. Tính năng sử dụng API thân thiện với quyền riêng tư tương tự với dịch vụ bảo vệ duyệt web",
"enforce_safe_search": "Bắt buộc tìm kiếm an toàn",
"enforce_save_search_hint": "AdGuard Home có thể bắt buộc tìm kiếm an toàn với các dịch vụ tìm kiếm: Google, Youtube, Bing, Yandex.",
"no_servers_specified": "Không có máy chủ nào được liệt kê",
"general_settings": "Cài đặt chung",
"dns_settings": "Cài đặt DNS",
"encryption_settings": "Cài đặt mã hóa",
"dhcp_settings": "Cài đặt DHCP",
"upstream_dns": "Máy chủ DNS tìm kiếm",
"upstream_dns_hint": "Nếu bạn để trống mục này, AdGuard Home sẽ sử dụng <a href='https://1.1.1.1/' target='_blank'>Cloudflare DNS</a> để tìm kiếm. Sử dụng tiền tố tls:// cho các máy chủ DNS dựa trên TLS.",
"test_upstream_btn": "Kiểm tra",
"apply_btn": "Áp dụng",
"disabled_filtering_toast": "Đã tắt chặn quảng cáo",
"enabled_filtering_toast": "Đã bật chặn quảng cáo",
"disabled_safe_browsing_toast": "Đã tắt bảo vệ duyệt web",
"enabled_safe_browsing_toast": "Đã bật bảo vệ duyệt web",
"disabled_parental_toast": "Đã tắt quản lý của phụ huynh",
"enabled_parental_toast": "Đã bật quản lý của phụ huynh",
"disabled_safe_search_toast": "Đã tắ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",
"name_table_header": "Tên",
"list_url_table_header": "Danh sách liên kết",
"rules_count_table_header": "Số quy tắc",
"last_time_updated_table_header": "Cập nhật cuối",
"actions_table_header": "Thao tác",
"edit_table_action": "Chỉnh sửa",
"delete_table_action": "Xoá",
"filters_and_hosts_hint": "AdGuard home hiểu các quy tắc chặn quảng cáo đơn giản và cú pháp file hosts",
"cancel_btn": "Huỷ",
"enter_name_hint": "Nhập tên",
"check_updates_btn": "Kiểm tra cập nhật",
"custom_filter_rules": "Quy tắc lọc tuỳ chỉnh",
"custom_filter_rules_hint": "Nhập mỗi quy tắc 1 dòng. Có thể sử dụng quy tắc chặn quảng cáo hoặc cú pháp file host",
"examples_title": "Ví dụ",
"example_meaning_filter_block": "Chặn truy cập tới tên miền example.org và tất cả tên miền con",
"example_meaning_filter_whitelist": "Không chặn truy cập tới tên miền example.org và tất cả tên miền con",
"example_meaning_host_block": "AdGuard Home sẽ phản hồi địa chỉ IP 127.0.0.1 cho tên miền example.org (không áp dụng tên miền con)",
"example_comment": "! Đây là một chú thích",
"example_comment_meaning": "Chỉ là một chú thích",
"example_comment_hash": "# Cũng là một chú thích",
"example_regex_meaning": "chặn quyền truy cập vào các miền khớp với <0>biểu thức chính được quy định</0>",
"example_upstream_regular": "DNS thông thường (dùng UDP)",
"example_upstream_dot": "được mã hoá <0>DNS-over-TLS</0>",
"example_upstream_doh": "được mã hoá <0>DNS-over-HTTPS</0>",
"example_upstream_sdns": "bạn có thể sử dụng <0>DNS Stamps</0> for <1>DNSCrypt</1> hoặc <2>DNS-over-HTTPS</2> ",
"example_upstream_tcp": "DNS thông thường(dùng TCP)",
"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_not_ok_toast": "Máy chủ \"\"': không thể sử dụng, vui lòng kiểm tra lại",
"unblock": "Bỏ chặn",
"block": "Chặn",
"time_table_header": "Thời gian",
"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",
"response_table_header": "Phản hồi",
"client_table_header": "Người dùng cuối",
"empty_response_status": "Rỗng",
"show_all_filter_type": "Hiện tất cả",
"show_filtered_type": "Chỉ hiện đã lọc",
"no_logs_found": "Không có lịch sử truy vấn",
"refresh_btn": "Làm mới",
"previous_btn": "Trang trước",
"next_btn": "Trang sau",
"loading_table_status": "\u0110ang t\u1ea3i...",
"loading_table_status": "Đang tải...",
"page_table_footer_text": "Trang",
"of_table_footer_text": "c\u1ee7a",
"rows_table_footer_text": "h\u00e0ng",
"updated_custom_filtering_toast": "\u0110\u00e3 c\u1eadp nh\u1eadt quy t\u1eafc l\u1ecdc tu\u1ef3 ch\u1ec9nh",
"rule_removed_from_custom_filtering_toast": "Quy t\u1eafc \u0111\u00e3 \u0111\u01b0\u1ee3c xo\u00e1 kh\u1ecfi quy t\u1eafc l\u1ecdc tu\u1ef3 ch\u1ec9nh",
"rule_added_to_custom_filtering_toast": "Quy t\u1eafc \u0111\u00e3 \u0111\u01b0\u1ee3c th\u00eam v\u00e0o quy t\u1eafc l\u1ecdc tu\u1ef3 ch\u1ec9nh",
"query_log_disabled_toast": "\u0110\u00e3 t\u1eaft l\u1ecbch s\u1eed truy v\u1ea5n",
"query_log_enabled_toast": "\u0110\u00e3 b\u1eadt l\u1ecbch s\u1eed truy v\u1ea5n",
"source_label": "Ngu\u1ed3n",
"found_in_known_domain_db": "T\u00ecm th\u1ea5y trong c\u01a1 s\u1edf d\u1eef li\u1ec7u t\u00ean mi\u1ec1n",
"category_label": "Th\u1ec3 lo\u1ea1i",
"rule_label": "Quy t\u1eafc",
"filter_label": "B\u1ed9 l\u1ecdc",
"url_added_successfully": "Th\u00eam b\u1ed9 l\u1ecdc th\u00e0nh c\u00f4ng",
"unknown_filter": "B\u1ed9 l\u1ecdc kh\u00f4ng r\u00f5 {{filterId}}"
"rows_table_footer_text": "hàng",
"updated_custom_filtering_toast": "Đã cập nhật quy tắc lọc tuỳ chỉnh",
"rule_removed_from_custom_filtering_toast": "Quy tắc đã được xoá khỏi quy tắc lọc tuỳ chỉnh",
"rule_added_to_custom_filtering_toast": "Quy tắc đã được thêm vào quy tắc lọc tuỳ chỉnh",
"query_log_response_status": "Trạng thái: {{value}}",
"query_log_filtered": "Được lọc bởi {{filter}}",
"query_log_confirm_clear": "Bạn có chắc chắn muốn xóa toàn bộ nhật ký truy vấn không?",
"query_log_cleared": "Nhật ký truy vấn đã được xóa thành công",
"query_log_clear": "Xóa nhật ký truy vấn",
"query_log_retention": "Lưu giữ nhật ký truy vấn",
"query_log_enable": "Bật nhật ký",
"query_log_configuration": "Cấu hình nhật ký",
"query_log_disabled": "Nhật ký truy vấn bị vô hiệu hóa và có thể được định cấu hình trong <0>cài đặt</ 0>",
"query_log_strict_search": "Sử dụng dấu ngoặc kép để tìm kiếm nghiêm ngặt",
"query_log_retention_confirm": "Bạn có chắc chắn muốn thay đổi lưu giữ nhật ký truy vấn? Nếu bạn giảm giá trị khoảng, một số dữ liệu sẽ bị mất",
"anonymize_client_ip": "Ẩn danh IP khách",
"anonymize_client_ip_desc": "Không lưu địa chỉ IP đầy đủ của khách hàng trong nhật ký và thống kê",
"dns_config": "Thiết lập máy chủ DNS",
"blocking_mode": "Chế độ chặn",
"nxdomain": "NXDOMAIN",
"null_ip": "Địa chỉ IP rỗng",
"custom_ip": "IP tuỳ chỉnh",
"blocking_ipv4": "Chặn IPv4",
"blocking_ipv6": "Chặn IPv6",
"form_enter_rate_limit": "Nhập 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",
"blocking_mode_default": "Mặc định: Trả lời với NXDOMAIN khi bị chặn bởi quy tắc kiểu Adblock; phản hồi với địa chỉ IP được chỉ định trong quy tắc khi bị chặn bởi quy tắc / etc / hosts-style",
"source_label": "Nguồ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",
"rule_label": "Quy tắc",
"list_label": "Danh sách",
"unknown_filter": "Bộ lọc không rõ {{filterId}}",
"install_welcome_title": "Chào mừng bạn đến với AdGuard Home!",
"install_welcome_desc": "AdGuard Home là một máy chủ DNS chặn quảng cáo và theo dõi trên toàn mạng. Mục đích của nó là cho phép bạn kiểm soát toàn bộ mạng và tất cả các thiết bị của mình và không yêu cầu sử dụng chương trình phía máy khách.",
"install_settings_title": "Giao Diện Web Quản Trị",
"install_settings_listen": "Giao diện nghe",
"install_settings_port": "Cổng",
"install_settings_interface_link": "Giao diện web quản trị viên AdGuard Home của bạn sẽ có sẵn trên các địa chỉ sau:",
"form_error_port": "Nhập giá trị cổng hợp lệ",
"install_settings_dns": "Máy chủ DNS",
"install_settings_dns_desc": "Bạn sẽ cần định cấu hình thiết bị hoặc bộ định tuyến của mình để sử dụng máy chủ DNS trên các địa chỉ sau:",
"install_settings_all_interfaces": "Tất cả các giao diện",
"install_auth_title": "Xác thực",
"install_auth_desc": "Rất khuyến khích cấu hình xác thực mật khẩu cho giao diện web quản trị viên AdGuard Home của bạn. Ngay cả khi nó chỉ có thể truy cập được trong mạng cục bộ của bạn, điều quan trọng là phải bảo vệ nó khỏi sự truy cập không hạn chế.",
"install_auth_username": "Tên đăng nhập",
"install_auth_password": "Mật khẩu",
"install_auth_confirm": "Xác nhận mật khẩu",
"install_auth_username_enter": "Nhập tên đăng nhập",
"install_auth_password_enter": "Nhập mật khẩu",
"install_step": "Bước",
"install_devices_title": "Định cấu hình thiết bị của bạn",
"install_devices_desc": "Để bắt đầu sử dụng AdGuard Home, bạn cần định cấu hình thiết bị của mình để sử dụng nó.",
"install_submit_title": "Xin chúc mừng!",
"install_submit_desc": "Quy trình thiết lập đã kết thúc và bạn đã sẵn sàng bắt đầu sử dụng AdGuard Home.",
"install_devices_router": "Bộ định tuyến",
"install_devices_router_desc": "Thiết lập này sẽ tự động bao gồm tất cả các thiết bị được kết nối với bộ định tuyến gia đình của bạn và bạn sẽ không cần phải định cấu hình từng thiết bị theo cách thủ công.",
"install_devices_address": "Máy chủ DNS của AdGuard Home đang lắng nghe các địa chỉ sau",
"install_devices_router_list_1": "Mở các tùy chọn cho bộ định tuyến của bạn. Thông thường, bạn có thể truy cập nó từ trình duyệt của mình thông qua một URL (như http://192.168.0.1/ hoặc http://192.168.1.1/). Bạn có thể được yêu cầu nhập mật khẩu. Nếu bạn không nhớ nó, bạn có thể thường xuyên đặt lại mật khẩu bằng cách nhấn một nút trên chính bộ định tuyến. Một số bộ định tuyến yêu cầu một ứng dụng cụ thể, trong trường hợp đó nên được cài đặt trên máy tính/điện thoại của bạn.",
"install_devices_router_list_2": "Tìm cài đặt DHCP/DNS. Tìm các chữ cái DNS bên cạnh một trường cho phép hai hoặc ba bộ số, mỗi bộ được chia thành bốn nhóm từ một đến ba chữ số.",
"install_devices_router_list_3": "Nhập địa chỉ máy chủ AdGuard Home của bạn ở đó.",
"install_devices_windows_list_1": "Mở Control Panel thông qua Trình đơn Bắt đầu hoặc Tìm kiếm Windows.",
"install_devices_windows_list_2": "Chuyển đến danh mục Mạng và Internet, sau đó đến Trung tâm Mạng và Chia sẻ.",
"install_devices_windows_list_3": "Ở bên trái màn hình, tìm Thay đổi cài đặt bộ điều hợp và nhấp vào nó.",
"install_devices_windows_list_4": "Chọn kết nối hoạt động của bạn, nhấp chuột phải vào nó và chọn Thuộc tính.",
"install_devices_windows_list_5": "Tìm Giao Thức Internet Phiên Bản 4 (TCP/IP) trong danh sách, chọn nó và sau đó nhấp vào Thuộc tính một lần nữa.",
"install_devices_windows_list_6": "Chọn Sử dụng các địa chỉ máy chủ DNS sau và nhập địa chỉ máy chủ AdGuard Home của bạn.",
"install_devices_macos_list_1": "Nhấp vào biểu tượng Apple và đi đến Tùy Chọn Hệ Thống.",
"install_devices_macos_list_2": "Nhấp vào Mạng.",
"install_devices_macos_list_3": "Chọn kết nối đầu tiên trong danh sách của bạn và nhấp vào Nâng cao.",
"install_devices_macos_list_4": "Chọn thẻ DNS và nhập địa chỉ máy chủ AdGuard Home của bạn.",
"install_devices_android_list_1": "Từ màn hình chính của Trình Đơn Android, chạm Cài đặt.",
"install_devices_android_list_2": "Nhấp Wi-Fi trên trình đơn. Màn hình liệt kê tất cả các mạng khả dụng sẽ được hiển thị (không thể đặt DNS tùy chỉnh cho kết nối di động).",
"install_devices_android_list_3": "Nhấn và giữ mạng mà bạn đã kết nối và chạm Sửa Đổi Mạng.",
"install_devices_android_list_4": "Trên một số thiết bị, bạn có thể cần chọn hộp Nâng cao để xem thêm cài đặt. Để điều chỉnh cài đặt DNS Android của bạn, bạn sẽ cần chuyển cài đặt IP từ DHCP sang Tĩnh.",
"install_devices_android_list_5": "Thay đổi giá trị DNS 1 và DNS 2 thành địa chỉ máy chủ AdGuard Home của bạn.",
"install_devices_ios_list_1": "Từ màn hình chính, chạm Cài đặt.",
"install_devices_ios_list_2": "Chọn Wi-Fi trong trình đơn bên trái (không thể định cấu hình DNS cho mạng di động).",
"install_devices_ios_list_3": "Chạm vào tên của mạng hiện đang hoạt động.",
"install_devices_ios_list_4": "Trong trường DNS nhập địa chỉ máy chủ AdGuard Home của bạn.",
"get_started": "Bắt Đầu",
"next": "Tiếp",
"open_dashboard": "Mở Bảng Điều Khiển",
"install_saved": "Đã lưu thành công",
"encryption_title": "Mã hóa",
"encryption_desc": "Hỗ trợ mã hóa (HTTPS/TLS) cho cả giao diện web quản trị viên và DNS",
"encryption_config_saved": "Đã lưu cấu hình mã hóa",
"encryption_server": "Tên máy chủ",
"encryption_server_enter": "Nhập tên miền của bạn",
"encryption_server_desc": "Để sử dụng HTTPS, bạn cần nhập tên máy chủ phù hợp với chứng chỉ SSL của bạn.",
"encryption_redirect": "Tự động chuyển hướng đến HTTPS",
"encryption_redirect_desc": "Nếu được chọn, AdGuard Home sẽ tự động chuyển hướng bạn từ địa chỉ HTTP sang địa chỉ HTTPS.",
"encryption_https": "Cổng HTTPS",
"encryption_https_desc": "Nếu cổng HTTPS được định cấu hình, giao diện quản trị viên AdGuard Home sẽ có thể truy cập thông qua HTTPS và nó cũng sẽ cung cấp DNS-over-HTTPS trên vị trí '/dns-query'.",
"encryption_dot": "Cổng DNS-over-TLS",
"encryption_dot_desc": "Nếu cổng này được định cấu hình, AdGuard Home sẽ chạy máy chủ DNS-over-TLS trên cổng này.",
"encryption_certificates": "Giấy chứng nhận",
"encryption_certificates_desc": "Để sử dụng mã hóa, bạn cần cung cấp chuỗi chứng chỉ SSL hợp lệ cho miền của mình. Bạn có thể nhận chứng chỉ miễn phí trên <0>{{link}}</0> hoặc bạn có thể mua chứng chỉ từ một trong các Cơ Quan Chứng Nhận tin cậy.",
"encryption_certificates_input": "Sao chép/dán chứng chỉ được mã hóa PEM của bạn tại đây.",
"encryption_status": "Trạng thái",
"encryption_expire": "Hết hạn",
"encryption_key": "Khóa riêng",
"encryption_key_input": "Sao chép/dán khóa riêng được mã hóa PEM cho chứng chỉ của bạn tại đây.",
"encryption_enable": "Kích Hoạt Mã Hóa (HTTPS, DNS-over-HTTPS và DNS-over-TLS)",
"encryption_enable_desc": "Nếu mã hóa được bật, giao diện quản trị viên AdGuard Home sẽ hoạt động trên HTTPS và máy chủ DNS sẽ lắng nghe các yêu cầu qua DNS-over-HTTPS và DNS-over-TLS.",
"encryption_chain_valid": "Chuỗi chứng chỉ hợp lệ",
"encryption_chain_invalid": "Chuỗi chứng chỉ không hợp lệ",
"encryption_key_valid": "Đây là khóa riêng {{type}} hợp lệ",
"encryption_key_invalid": "Đây là khóa riêng {{type}} không hợp lệ",
"encryption_subject": "Chủ đề",
"encryption_issuer": "Phát hành",
"encryption_hostnames": "Tên máy chủ",
"encryption_reset": "Bạn có chắc chắn muốn đặt lại cài đặt mã hóa?",
"topline_expiring_certificate": "Chứng chỉ SSL của bạn sắp hết hạn. Cập nhật <0>Cài đặt mã hóa</0>.",
"topline_expired_certificate": "Chứng chỉ SSL của bạn đã hết hạn. Cập nhật <0>Cài đặt mã hóa</0>.",
"form_error_port_range": "Nhập giá trị cổng trong phạm vi 80-65535",
"form_error_port_unsafe": "Đây là một cổng không an toàn",
"form_error_equal": "Không nên bằng nhau",
"form_error_password": "Mật khẩu không khớp",
"reset_settings": "Đặt lại cài đặt",
"update_announcement": "AdGuard Home {{version}} hiện có sẵn! <0>Chạm vào đây</0> để biết thêm thông tin.",
"setup_guide": "Hướng dẫn thiết lập",
"dns_addresses": "Địa chỉ DNS",
"dns_start": "Máy chủ DNS đang khởi động",
"dns_status_error": "Có lỗi khi kiểm tra trạng thái máy chủ DNS",
"down": "Xuống",
"fix": "Sửa",
"dns_providers": "Dưới đây là một <0>danh sách của các nhà cung cấp DNS đã biết</0> để lựa chọn.",
"update_now": "Cập nhật ngay",
"update_failed": "Tự động cập nhật thất bại. Vui lòng <a href='https://github.com/AdguardTeam/AdGuardHome/wiki/Getting-Started#update'>làm theo các bước</a> để cập nhật thủ công.",
"processing_update": "Xin vui lòng chờ, AdGuard Home đang được cập nhật",
"clients_title": "Máy khách",
"clients_desc": "Định cấu hình thiết bị được kết nối với AdGuard Home",
"settings_global": "Toàn cầu",
"settings_custom": "Tùy chỉnh",
"table_client": "Máy khách",
"table_name": "Tên",
"save_btn": "Lưu",
"client_add": "Thêm Máy Khách",
"client_new": "Máy Khách Mới",
"client_edit": "Chỉnh Sửa Máy Khách",
"client_identifier": "Định danh",
"ip_address": "Địa chỉ IP",
"client_identifier_desc": "Các máy khách có thể được xác định bằng địa chỉ IP hoặc địa chỉ MAC. Xin lưu ý rằng chỉ có thể sử dụng MAC làm định danh nếu AdGuard Home cũng là <0>máy chủ DHCP</0>",
"form_enter_ip": "Nhập IP",
"form_enter_mac": "Nhập MAC",
"form_enter_id": "Nhập định danh",
"form_add_id": "Thêm định danh",
"form_client_name": "Nhập tên máy khách",
"client_global_settings": "Sử dụng cài đặt toàn cầu",
"client_deleted": "Máy khách \"{{key}}\" đã xóa thành công",
"client_added": "Máy khách \"{{key}}\" đã thêm thành công",
"client_updated": "Máy khách \"{{key}}\" đã cập nhật thành công",
"clients_not_found": "Không tìm thấy máy khách",
"client_confirm_delete": "Bạn có chắc chắn muốn xóa máy khách \"{{key}}\" không?",
"auto_clients_title": "Máy khách (thời gian chạy)",
"auto_clients_desc": "Dữ liệu trên các máy khách sử dụng AdGuard Home, nhưng không được lưu trong cấu hình",
"access_title": "Cài đặt truy cập",
"access_desc": "Tại đây bạn có thể định cấu hình quy tắc truy cập cho máy chủ AdGuard Home DNS.",
"access_allowed_title": "Máy chủ được phép",
"access_allowed_desc": "Một danh sách các địa chỉ CIDR hoặc IP. Nếu được định cấu hình, AdGuard Home sẽ chỉ chấp nhận các yêu cầu từ các địa chỉ IP này.",
"access_disallowed_title": "Máy chủ không được phép",
"access_disallowed_desc": "Một danh sách các địa chỉ CIDR hoặc IP. Nếu được định cấu hình, AdGuard Home sẽ bỏ yêu cầu từ các địa chỉ IP này.",
"access_blocked_title": "Tên miền bị chặn",
"access_blocked_desc": "Đừng nhầm lẫn điều này với các bộ lọc. AdGuard Home sẽ bỏ các truy vấn DNS với các tên miền này trong câu hỏi của truy vấn.",
"access_settings_saved": "Cài đặt truy cập đã lưu thành công",
"updates_checked": "Đã kiểm tra thành công cập nhật",
"updates_version_equal": "AdGuard Home đã được cập nhật",
"check_updates_now": "Kiểm tra cập nhật ngay bây giờ",
"dns_privacy": "DNS Riêng Tư",
"setup_dns_privacy_1": "<0>DNS-over-TLS:</0> Sử dụng chuỗi <1>{{address}}</1>.",
"setup_dns_privacy_2": "<0>DNS-over-HTTPS:</0> Sử dụng chuỗi <1>{{address}}</1>.",
"setup_dns_privacy_3": "<0>Xin lưu ý rằng các giao thức DNS được mã hóa chỉ được hỗ trợ trên Android 9. Vì vậy, bạn cần cài đặt phần mềm bổ sung cho các hệ điều hành khác.</0><0>Đây là danh sách các phần mềm bạn có thể sử dụng.</0>",
"setup_dns_privacy_android_1": "Android 9 hỗ trợ DNS trên TLS nguyên bản. Để định cấu hình, hãy đi tới Cài đặt → Mạng & internet → Nâng cao → DNS Riêng Tư và nhập tên miền của bạn vào đó.",
"setup_dns_privacy_android_2": "<0>AdGuard for Android</0> hỗ trợ <1>DNS-over-HTTPS</1> và <1>DNS-over-TLS</1>.",
"setup_dns_privacy_android_3": "<0>Intra</0> thêm <1>DNS-over-HTTPS</1> hỗ trợ cho Android.",
"setup_dns_privacy_ios_1": "<0>DNSCloak</0> hỗ trợ <1>DNS-over-HTTPS</1>, nhưng để định cấu hình nó để sử dụng máy chủ của riêng bạn, bạn sẽ cần phải tạo một <2>DNS Stamp</2> cho nó.",
"setup_dns_privacy_ios_2": "<0>AdGuard for iOS</0> hỗ trợ thiết lập <1>DNS-over-HTTPS</1> và <1>DNS-over-TLS</1>.",
"setup_dns_privacy_other_title": "Triển khai khác",
"setup_dns_privacy_other_1": "Bản thân AdGuard Home có thể là máy khách DNS an toàn trên mọi nền tảng.",
"setup_dns_privacy_other_2": "<0>dnsproxy</0> hỗ trợ tất cả các giao thức DNS bảo mật đã biết.",
"setup_dns_privacy_other_3": "<0>dnscrypt-proxy</0> hỗ trợ <1>DNS-over-HTTPS</1>.",
"setup_dns_privacy_other_4": "<0>Mozilla Firefox</0> hỗ trợ <1>DNS-over-HTTPS</1>.",
"setup_dns_privacy_other_5": "Bạn sẽ tìm thấy nhiều triển khai hơn <0>tại đây</0> và <1>tại đây</1>.",
"setup_dns_notice": "Để sử dụng <1>DNS-over-HTTPS</1> hoặc <1>DNS-over-TLS</1>, bạn cần <0>định cấu hình Mã hóa</0> trong cài đặt AdGuard Home.",
"rewrite_added": "DNS viết lại cho \"{{key}}\" đã thêm thành công",
"rewrite_deleted": "DNS viết lại cho \"{{key}}\" đã xóa thành công",
"rewrite_add": "Thêm DNS viết lại",
"rewrite_not_found": "Không tìm thấy DNS viết lại",
"rewrite_confirm_delete": "Bạn có chắc chắn muốn xóa DNS viết lại cho \"{{key}}\" không?",
"rewrite_desc": "Cho phép dễ dàng định cấu hình tùy chỉnh DNS phản hồi cho một tên miền cụ thể.",
"rewrite_applied": "Đã áp dụng quy tắc Viết lại",
"dns_rewrites": "DNS viết lại",
"form_domain": "Nhập tên miền",
"form_answer": "Nhập địa chỉ IP hoặc tên miền",
"form_error_domain_format": "Định dạng tên miền không hợp lệ",
"form_error_answer_format": "Định dạng câu trả lời không hợp lệ",
"configure": "Cấu hình",
"main_settings": "Cài đặt chính",
"block_services": "Chặn các dịch vụ cụ thể",
"blocked_services": "Dịch vụ bị chặn",
"blocked_services_desc": "Cho phép nhanh chóng chặn các trang web và dịch vụ phổ biến.",
"blocked_services_saved": "Dịch vụ bị chặn đã lưu thành công",
"blocked_services_global": "Sử dụng các dịch vụ bị chặn toàn cầu",
"blocked_service": "Dịch vụ bị chặn",
"block_all": "Chặn tất cả",
"unblock_all": "Bỏ chặn tất cả",
"encryption_certificate_path": "Đường dẫn chứng chỉ",
"encryption_private_key_path": "Đường dẫn khóa riêng",
"encryption_certificates_source_path": "Đặt đường dẫn tệp chứng chỉ",
"encryption_certificates_source_content": "Dán nội dung chứng chỉ",
"encryption_key_source_path": "Đặt tệp khóa riêng",
"encryption_key_source_content": "Dán nội dung khóa riêng",
"stats_params": "Cấu hình thống kê",
"config_successfully_saved": "Cấu hình được lưu thành công",
"interval_24_hour": "24 giờ",
"interval_days": "{{count}} ngày",
"interval_days_plural": "{{count}} ngày",
"domain": "Tên miền",
"answer": "Trả lời",
"filter_added_successfully": "Bộ lọc đã được thêm thành công",
"statistics_configuration": "Cấu hình thống kê",
"statistics_retention": "Duy trì thống kê",
"statistics_retention_desc": "Nếu bạn giảm giá trị khoảng, một số dữ liệu sẽ bị mất",
"statistics_clear": " Xoá thống kê",
"statistics_clear_confirm": "Bạn có chắc chắn muốn xóa số liệu thống kê?",
"statistics_retention_confirm": "Bạn có chắc chắn muốn thay đổi lưu giữ số liệu thống kê? Nếu bạn giảm giá trị khoảng, một số dữ liệu sẽ bị mất",
"statistics_cleared": "Xoá thống kê thành công",
"interval_hours": "{{count}} giờ",
"interval_hours_plural": "{{count}} giờ",
"filters_configuration": "Cấu hình bộ lọc",
"filters_enable": "Kích hoạt bộ lọc",
"filters_interval": "Khoảng thời gian cập nhật bộ lọc",
"disabled": "Đã vô hiệu",
"username_label": "Tên đăng nhập",
"username_placeholder": "Nhập tên đăng nhập",
"password_label": "Mật khẩu",
"password_placeholder": "Nhập mật khẩu",
"sign_in": "Đăng nhập",
"sign_out": "Đăng xuất",
"forgot_password": "Quên mật khẩu?",
"forgot_password_desc": "Vui lòng làm theo <0>các bước này</0> để tạo mật khẩu mới cho tài khoản người dùng của bạn.",
"location": "Vị trí",
"orgname": "Tên tổ chức",
"netname": "Tên mạng",
"descr": "Mô tả",
"whois": "Whois",
"filtering_rules_learn_more": "<0>Tìm hiểu thêm</0> về việc tạo danh sách chặn máy chủ của riêng bạn.",
"blocked_by_response": "Chặn bởi CNAME hoặc địa IP ở phản hồi",
"try_again": "Hãy thử lại",
"fastest_addr_desc": "Truy vấn tất cả các máy chủ DNS và trả về địa chỉ IP nhanh nhất trong số tất cả các phản hồi",
"autofix_warning_text": "Nếu bạn nhấp vào \"Khắc phục\", AdGuard Home sẽ định cấu hình hệ thống của bạn để sử dụng máy chủ DNS của AdGuard Home.",
"autofix_warning_result": "Do đó, tất cả các yêu cầu DNS từ hệ thống của bạn sẽ được AdGuard Home xử lý theo mặc định.",
"tags_title": "Thẻ",
"tags_desc": "Bạn có thể chọn các thẻ tương ứng với khách hàng. Thẻ có thể được bao gồm trong các quy tắc lọc và cho phép bạn áp dụng chúng chính xác hơn. <0>Tìm hiểu thêm</0>",
"form_select_tags": "Chọn thẻ khách hàng",
"check_title": "Kiểm tra bộ lọc",
"check_desc": "Kiểm tra xem tên máy chủ có được lọc không",
"check": "Kiểm tra",
"check_ip": "Địa chỉ IP: {{ip}}",
"check_rule": "Quy tắc: {{rule}}",
"check_not_found": "Không tìm thấy trong danh sách bộ lọc của bạn",
"static_ip": "Địa chỉ IP tĩnh",
"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)",
"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

@@ -1,253 +1,567 @@
{
"upstream_parallel": "\u901a\u8fc7\u540c\u65f6\u67e5\u8be2\u6240\u6709\u4e0a\u6d41\u670d\u52a1\u5668\u4ee5\u4f7f\u7528\u5e76\u884c\u67e5\u8be2\u52a0\u901f\u89e3\u6790",
"bootstrap_dns": "Bootstrap DNS \u670d\u52a1\u5668",
"bootstrap_dns_desc": "Bootstrap DNS servers are used to resolve IP addresses of the DoH\/DoT resolvers you specify as upstreams.",
"url_added_successfully": "\u7f51\u5740\u6dfb\u52a0\u6210\u529f",
"check_dhcp_servers": "\u68c0\u67e5 DHCP \u670d\u52a1\u5668",
"save_config": "\u4fdd\u5b58\u914d\u7f6e",
"enabled_dhcp": "DHCP \u670d\u52a1\u5668\u5df2\u542f\u7528",
"disabled_dhcp": "DHCP \u670d\u52a1\u5668\u5df2\u7981\u7528",
"dhcp_title": "DHCP \u670d\u52a1\u5668\uff08\u5b9e\u9a8c\u6027\uff09",
"dhcp_description": "\u5982\u679c\u4f60\u7684\u8def\u7531\u5668\u6ca1\u6709\u63d0\u4f9b\u52a8\u6001\u4e3b\u673a\u8bbe\u7f6e\u534f\u8bae\uff08DHCP\uff09\u8bbe\u7f6e\uff0c\u4f60\u53ef\u4ee5\u4f7f\u7528 AdGuard \u5185\u7f6e\u7684 DHCP \u670d\u52a1\u5668\u3002",
"dhcp_enable": "\u542f\u7528 DHCP \u670d\u52a1\u5668",
"dhcp_disable": "\u7981\u7528 DHCP \u670d\u52a1\u5668",
"dhcp_not_found": "\u5728\u5f53\u524d\u7f51\u7edc\u4e2d\u672a\u68c0\u6d4b\u5230 DHCP \u670d\u52a1\u5668\u3002\u60a8\u53ef\u4ee5\u5b89\u5168\u5730\u542f\u7528\u5185\u7f6e DHCP \u670d\u52a1\u5668\u3002",
"dhcp_found": "\u5728\u5f53\u524d\u7f51\u7edc\u4e2d\u68c0\u6d4b\u5230 DHCP \u670d\u52a1\u5668\u3002\u5982\u679c\u542f\u7528\u5185\u7f6e\u7684 DHCP \u670d\u52a1\u5668\u53ef\u80fd\u4e0d\u5b89\u5168\u3002",
"dhcp_leases": "DHCP \u79df\u7ea6",
"dhcp_leases_not_found": "\u672a\u68c0\u6d4b\u5230 DHCP \u79df\u7ea6",
"dhcp_config_saved": "\u4fdd\u5b58 DHCP \u670d\u52a1\u5668\u914d\u7f6e",
"form_error_required": "\u5fc5\u586b\u5b57\u6bb5",
"form_error_ip_format": "\u65e0\u6548\u7684 IPv4 \u683c\u5f0f",
"form_error_positive": "\u5fc5\u987b\u5927\u4e8e 0",
"dhcp_form_gateway_input": "\u7f51\u5173 IP",
"dhcp_form_subnet_input": "\u5b50\u7f51\u63a9\u7801",
"dhcp_form_range_title": "IP \u5730\u5740\u8303\u56f4",
"dhcp_form_range_start": "\u8d77\u59cb IP \u5730\u5740",
"dhcp_form_range_end": "\u672b\u5c3e IP \u5730\u5740",
"dhcp_form_lease_title": "DHCP \u79df\u7ea6\u65f6\u95f4\uff08\u79d2\uff09",
"dhcp_form_lease_input": "\u79df\u671f",
"dhcp_interface_select": "\u9009\u62e9 DHCP \u63a5\u53e3",
"dhcp_hardware_address": "\u786c\u4ef6\u5730\u5740",
"dhcp_ip_addresses": "IP \u5730\u5740",
"dhcp_table_hostname": "\u4e3b\u673a\u540d",
"dhcp_table_expires": "\u5230\u671f",
"dhcp_warning": "\u5982\u679c\u4f60\u60f3\u8981\u542f\u7528\u5185\u7f6e\u7684 DHCP \u670d\u52a1\u5668\uff0c\u8bf7\u786e\u4fdd\u5728\u5f53\u524d\u7f51\u7edc\u4e2d\u6ca1\u6709\u5176\u5b83\u6d3b\u52a8\u7684 DHCP \u670d\u52a1\u5668\u3002\u5426\u5219\uff0c\u6b64\u64cd\u4f5c\u53ef\u80fd\u4f1a\u7834\u574f\u5df2\u8fde\u63a5\u8bbe\u5907\u7684\u7f51\u7edc\u8fde\u63a5\uff01",
"back": "\u8fd4\u56de",
"dashboard": "\u4eea\u8868\u76d8",
"settings": "\u8bbe\u7f6e",
"filters": "\u8fc7\u6ee4\u5668",
"query_log": "\u67e5\u8be2\u65e5\u5fd7",
"faq": "\u5e38\u89c1\u95ee\u9898",
"version": "\u7248\u672c",
"address": "\u5730\u5740",
"on": "\u542f\u7528\u4e2d",
"off": "\u7981\u7528\u4e2d",
"copyright": "\u7248\u6743",
"homepage": "\u4e3b\u9875",
"report_an_issue": "\u95ee\u9898\u53cd\u9988",
"enable_protection": "\u542f\u7528\u4fdd\u62a4",
"enabled_protection": "\u4fdd\u62a4\u5df2\u542f\u7528",
"disable_protection": "\u7981\u7528\u4fdd\u62a4",
"disabled_protection": "\u4fdd\u62a4\u5df2\u7981\u7528",
"refresh_statics": "\u5237\u65b0\u72b6\u6001",
"dns_query": "DNS\u67e5\u8be2",
"blocked_by": "\u5df2\u88ab\u8fc7\u6ee4\u5668\u62e6\u622a",
"stats_malware_phishing": "\u88ab\u62e6\u622a\u7684\u6076\u610f\/\u9493\u9c7c\u7f51\u7ad9",
"stats_adult": "\u88ab\u62e6\u622a\u7684\u6210\u4eba\u7f51\u7ad9",
"stats_query_domain": "\u8bf7\u6c42\u57df\u540d\u6392\u884c",
"for_last_24_hours": "\u5728\u8fc7\u53bb 24 \u5c0f\u65f6",
"no_domains_found": "\u672a\u627e\u5230\u57df\u540d",
"requests_count": "\u8bf7\u6c42\u6570",
"top_blocked_domains": "\u88ab\u62e6\u622a\u57df\u540d\u6392\u884c",
"top_clients": "\u5ba2\u6237\u7aef\u6392\u884c",
"no_clients_found": "\u672a\u627e\u5230\u5ba2\u6237\u7aef",
"general_statistics": "\u6982\u51b5\u7edf\u8ba1",
"number_of_dns_query_24_hours": "\u8fc7\u53bb 24 \u5c0f\u65f6\u5185\u5904\u7406\u7684 DNS \u8bf7\u6c42\u603b\u6570",
"number_of_dns_query_blocked_24_hours": "\u88ab\u5e7f\u544a\u8fc7\u6ee4\u5668\u548c Hosts \u62e6\u622a\u6e05\u5355\u62e6\u622a\u7684 DNS \u8bf7\u6c42\u603b\u6570",
"number_of_dns_query_blocked_24_hours_by_sec": "\u88ab AdGuard \u5b89\u5168\u6d4f\u89c8\u6a21\u5757\u62e6\u622a\u7684 DNS \u8bf7\u6c42\u603b\u6570",
"number_of_dns_query_blocked_24_hours_adult": "\u88ab\u62e6\u622a\u7684\u6210\u4eba\u7f51\u7ad9\u603b\u6570",
"enforced_save_search": "\u5f3a\u5236\u5b89\u5168\u641c\u7d22",
"number_of_dns_query_to_safe_search": "\u542f\u7528\u5f3a\u5236\u5b89\u5168\u641c\u7d22\u540e\u5bf9\u641c\u7d22\u5f15\u64ce\u7684 DNS \u8bf7\u6c42\u603b\u6570",
"average_processing_time": "\u5e73\u5747\u5904\u7406\u65f6\u95f4",
"average_processing_time_hint": "\u5904\u7406 DNS \u8bf7\u6c42\u7684\u5e73\u5747\u65f6\u95f4\uff08\u6beb\u79d2\uff09",
"block_domain_use_filters_and_hosts": "\u4f7f\u7528\u8fc7\u6ee4\u5668\u548c Hosts \u6587\u4ef6\u4ee5\u62e6\u622a\u6307\u5b9a\u57df\u540d",
"filters_block_toggle_hint": "\u4f60\u53ef\u4ee5\u5728 <a href='#filters'>\u8fc7\u6ee4\u5668<\/a> \u8bbe\u7f6e\u4e2d\u6dfb\u52a0\u8fc7\u6ee4\u89c4\u5219\u3002",
"use_adguard_browsing_sec": "\u4f7f\u7528 AdGuard\u3010\u6d4f\u89c8\u5b89\u5168\u3011\u7f51\u9875\u670d\u52a1",
"use_adguard_browsing_sec_hint": "AdGuard Home \u5c06\u68c0\u67e5\u57df\u540d\u662f\u5426\u88ab\u6d4f\u89c8\u5b89\u5168\u670d\u52a1\u5217\u5165\u9ed1\u540d\u5355\u3002\u5b83\u5c06\u4f7f\u7528\u9690\u79c1\u6027\u5f3a\u7684\u68c0\u7d22 API \u6765\u6267\u884c\u68c0\u67e5\uff0c\u53ea\u6709\u57df\u540d\u7684 SHA256 \u7684\u77ed\u524d\u7f00\u4f1a\u88ab\u53d1\u9001\u5230\u670d\u52a1\u5668\u3002",
"use_adguard_parental": "\u4f7f\u7528 AdGuard \u3010\u5bb6\u957f\u63a7\u5236\u3011\u670d\u52a1",
"use_adguard_parental_hint": "AdGuard Home \u5c06\u4f7f\u7528\u4e0e\u6d4f\u89c8\u5b89\u5168\u670d\u52a1\u76f8\u540c\u7684\u9690\u79c1\u6027\u5f3a\u7684 API \u6765\u68c0\u67e5\u57df\u540d\u6307\u5411\u7684\u7f51\u7ad9\u662f\u5426\u5305\u542b\u6210\u4eba\u5185\u5bb9\u3002",
"enforce_safe_search": "\u5f3a\u5236\u5b89\u5168\u641c\u7d22",
"enforce_save_search_hint": "AdGuard Home \u5c06\u5bf9\u4ee5\u4e0b\u641c\u7d22\u5f15\u64ce\u5f3a\u5236\u542f\u7528\u5b89\u5168\u641c\u7d22\uff1aGoogle\u3001YouTube\u3001Bing \u548c Yandex\u3002",
"no_servers_specified": "\u672a\u627e\u5230\u6307\u5b9a\u7684\u670d\u52a1\u5668",
"no_settings": "\u672a\u627e\u5230\u8bbe\u7f6e",
"general_settings": "\u5e38\u89c4\u8bbe\u7f6e",
"upstream_dns": "\u4e0a\u6e38 DNS \u670d\u52a1\u5668",
"upstream_dns_hint": "\u5982\u679c\u6b64\u5904\u7559\u7a7a\uff0cAdGuard Home \u5c06\u4f1a\u4f7f\u7528 <a href='https:\/\/1.1.1.1\/' target='_blank'>Cloudflare DNS<\/a> \u4f5c\u4e3a\u4e0a\u6e38 DNS\u3002\u5982\u679c\u60f3\u8981\u4f7f\u7528\u4f7f\u7528 DNS over TLS\uff0c\u8bf7\u4ee5 tls:\/\/ \u4e3a\u5f00\u5934\u3002",
"test_upstream_btn": "\u6d4b\u8bd5\u4e0a\u6e38 DNS",
"apply_btn": "\u5e94\u7528",
"disabled_filtering_toast": "\u8fc7\u6ee4\u5668\u5df2\u7981\u7528",
"enabled_filtering_toast": "\u8fc7\u6ee4\u5668\u5df2\u542f\u7528",
"disabled_safe_browsing_toast": "\u5b89\u5168\u6d4f\u89c8\u5df2\u7981\u7528",
"enabled_safe_browsing_toast": "\u5b89\u5168\u6d4f\u89c8\u5df2\u542f\u7528",
"disabled_parental_toast": "\u5bb6\u957f\u63a7\u5236\u5df2\u7981\u7528",
"enabled_parental_toast": "\u5bb6\u957f\u63a7\u5236\u5df2\u542f\u7528",
"disabled_safe_search_toast": "\u5b89\u5168\u641c\u7d22\u5df2\u7981\u7528",
"enabled_save_search_toast": "\u5b89\u5168\u641c\u7d22\u5df2\u542f\u7528",
"enabled_table_header": "\u5df2\u542f\u7528",
"name_table_header": "\u540d\u79f0",
"filter_url_table_header": "\u8fc7\u6ee4\u5668\u5730\u5740",
"rules_count_table_header": "\u89c4\u5219\u6570",
"last_time_updated_table_header": "\u4e0a\u6b21\u66f4\u65b0\u65f6\u95f4",
"actions_table_header": "\u6d3b\u8dc3\u72b6\u6001",
"delete_table_action": "\u5220\u9664",
"filters_and_hosts": "\u8fc7\u6ee4\u5668\u548c Hosts \u62e6\u622a\u6e05\u5355",
"filters_and_hosts_hint": "AdGuard Home \u53ef\u4ee5\u89e3\u6790\u57fa\u7840\u7684 adblock \u89c4\u5219\u548c Hosts \u8bed\u6cd5\u3002",
"no_filters_added": "\u672a\u6dfb\u52a0\u4efb\u4f55\u8fc7\u6ee4\u5668",
"add_filter_btn": "\u6dfb\u52a0\u8fc7\u6ee4\u5668",
"cancel_btn": "\u53d6\u6d88",
"enter_name_hint": "\u8f93\u5165\u540d\u79f0",
"enter_url_hint": "\u8f93\u5165 URL",
"check_updates_btn": "\u68c0\u67e5\u66f4\u65b0",
"new_filter_btn": "\u8ba2\u9605\u65b0\u7684\u8fc7\u6ee4\u5668",
"enter_valid_filter_url": "\u8f93\u5165\u4e00\u4e2a\u8fc7\u6ee4\u5668\u8ba2\u9605\u6216 Hosts \u6587\u4ef6\u7684\u6709\u6548 URL",
"custom_filter_rules": "\u81ea\u5b9a\u4e49\u8fc7\u6ee4\u5668\u89c4\u5219",
"custom_filter_rules_hint": "\u8bf7\u786e\u4fdd\u6bcf\u884c\u53ea\u8f93\u5165\u4e00\u6761\u89c4\u5219\u3002\u4f60\u53ef\u4ee5\u8f93\u5165\u7b26\u5408 adblock \u8bed\u6cd5\u6216 Hosts \u8bed\u6cd5\u7684\u89c4\u5219\u3002",
"examples_title": "\u8303\u4f8b",
"example_meaning_filter_block": "\u62e6\u622a example.org \u57df\u540d\u53ca\u5176\u6240\u6709\u5b50\u57df\u540d",
"example_meaning_filter_whitelist": "\u653e\u884c example.org \u53ca\u5176\u6240\u6709\u5b50\u57df\u540d",
"example_meaning_host_block": "AdGuard Home \u73b0\u5728\u5c06\u4f1a\u628a example.org\uff08\u4f46\u4e0d\u5305\u62ec\u5b83\u7684\u5b50\u57df\u540d\uff09\u89e3\u6790\u5230 127.0.0.1\u3002",
"example_comment": "! \u8fd9\u662f\u4e00\u884c\u6ce8\u91ca",
"example_comment_meaning": "\u53ea\u662f\u4e00\u6761\u6ce8\u91ca",
"example_comment_hash": "# \u8fd9\u4e5f\u662f\u4e00\u884c\u6ce8\u91ca",
"example_regex_meaning": "\u963b\u6b62\u8bbf\u95ee\u4e0e\u6307\u5b9a\u7684\u6b63\u5219\u8868\u8fbe\u5f0f\u5339\u914d\u7684\u57df\u540d",
"example_upstream_regular": "\u5e38\u89c4 DNS\uff08\u57fa\u4e8e UDP\uff09",
"example_upstream_dot": "\u52a0\u5bc6 <0>DNS-over-TLS<\/0>",
"example_upstream_doh": "\u52a0\u5bc6 <0>DNS-over-HTTPS<\/0>",
"example_upstream_sdns": "\u4f60\u53ef\u4ee5\u4f7f\u7528 <0>DNSCrypt<\/0> \u7684 <1>DNS Stamps<\/1> \u6216\u8005 <2>DNS-over-HTTPS<\/2> \u89e3\u6790\u5668",
"example_upstream_tcp": "\u5e38\u89c4 DNS\uff08\u57fa\u4e8e TCP \uff09",
"all_filters_up_to_date_toast": "\u6240\u6709\u8fc7\u6ee4\u5668\u5df2\u66f4\u65b0\u81f3\u6700\u65b0",
"updated_upstream_dns_toast": "\u4e0a\u6e38 DNS \u5df2\u66f4\u65b0",
"dns_test_ok_toast": "\u6307\u5b9a\u7684 DNS \u670d\u52a1\u5668\u73b0\u5df2\u6b63\u5e38\u8fd0\u884c",
"dns_test_not_ok_toast": "\u670d\u52a1\u5668 \"{{key}}\"\uff1a\u65e0\u6cd5\u4f7f\u7528\uff0c\u8bf7\u68c0\u67e5\u4f60\u8f93\u5165\u7684\u662f\u5426\u6b63\u786e",
"unblock_btn": "\u653e\u884c",
"block_btn": "\u62e6\u622a",
"time_table_header": "\u65f6\u95f4",
"domain_name_table_header": "\u57df\u540d",
"type_table_header": "\u7c7b\u578b",
"response_table_header": "\u54cd\u5e94",
"client_table_header": "\u5ba2\u6237\u7aef",
"empty_response_status": "\u7a7a",
"show_all_filter_type": "\u663e\u793a\u6240\u6709",
"show_filtered_type": "\u663e\u793a\u88ab\u62e6\u622a\u7684",
"no_logs_found": "\u672a\u627e\u5230\u65e5\u5fd7",
"disabled_log_btn": "\u7981\u7528\u65e5\u5fd7",
"download_log_file_btn": "\u4e0b\u8f7d\u65e5\u5fd7\u6587\u4ef6",
"refresh_btn": "\u5237\u65b0",
"enabled_log_btn": "\u542f\u7528\u65e5\u5fd7",
"last_dns_queries": "\u6700\u8fd1\u7684 5000 \u4e2a DNS \u8bf7\u6c42",
"previous_btn": "\u4e0a\u4e00\u9875",
"next_btn": "\u4e0b\u4e00\u9875",
"loading_table_status": "\u52a0\u8f7d\u4e2d\u2026\u2026",
"page_table_footer_text": "\u9875",
"of_table_footer_text": "\u5728",
"rows_table_footer_text": "\u884c",
"updated_custom_filtering_toast": "\u81ea\u5b9a\u4e49\u8fc7\u6ee4\u89c4\u5219\u5df2\u66f4\u65b0",
"rule_removed_from_custom_filtering_toast": "\u89c4\u5219\u5df2\u4ece\u81ea\u5b9a\u4e49\u8fc7\u6ee4\u89c4\u5219\u5217\u8868\u4e2d\u79fb\u9664",
"rule_added_to_custom_filtering_toast": "\u89c4\u5219\u5df2\u6dfb\u52a0\u5230\u81ea\u5b9a\u4e49\u8fc7\u6ee4\u89c4\u5219\u5217\u8868\u4e2d",
"query_log_disabled_toast": "\u67e5\u8be2\u65e5\u5fd7\u5df2\u7981\u7528",
"query_log_enabled_toast": "\u67e5\u8be2\u65e5\u5fd7\u5df2\u542f\u7528",
"source_label": "\u6e90",
"found_in_known_domain_db": "\u6210\u529f\u5728\u5df2\u77e5\u57df\u540d\u6570\u636e\u5e93\u4e2d\u67e5\u8be2\u5230",
"category_label": "\u7c7b\u522b",
"rule_label": "\u89c4\u5219",
"filter_label": "\u8fc7\u6ee4\u5668",
"unknown_filter": "\u672a\u77e5\u8fc7\u6ee4\u5668 {{filterId}}",
"install_welcome_title": "\u6b22\u8fce\u4f7f\u7528 AdGuard Home\uff01",
"install_welcome_desc": "AdGuard Home \u662f\u4e00\u4e2a\u53ef\u5728\u7279\u5b9a\u7f51\u7edc\u8303\u56f4\u5185\u62e6\u622a\u6240\u6709\u5e7f\u544a\u548c\u8ddf\u8e2a\u5668\u7684 DNS \u670d\u52a1\u5668\u3002\u5b83\u7684\u76ee\u7684\u662f\u8ba9\u60a8\u63a7\u5236\u6574\u4e2a\u7f51\u7edc\u548c\u60a8\u7684\u6240\u6709\u8bbe\u5907\uff0c\u4e14\u4e0d\u9700\u8981\u4f7f\u7528\u4efb\u4f55\u5ba2\u6237\u7aef\u7a0b\u5e8f\u3002",
"install_settings_title": "\u7f51\u9875\u7ba1\u7406\u754c\u9762",
"install_settings_listen": "\u76d1\u542c\u63a5\u53e3",
"install_settings_port": "\u7aef\u53e3",
"install_settings_interface_link": "\u60a8\u53ef\u4ee5\u901a\u8fc7\u4ee5\u4e0b\u5730\u5740\u8bbf\u95ee\u60a8\u7684 AdGuard Home \u7f51\u9875\u7ba1\u7406\u754c\u9762\uff1a",
"form_error_port": "\u8f93\u5165\u6709\u6548\u7684\u7aef\u53e3\u503c",
"install_settings_dns": "DNS \u670d\u52a1\u5668",
"install_settings_dns_desc": "\u60a8\u5c06\u9700\u8981\u4f7f\u7528\u4ee5\u4e0b\u5730\u5740\u6765\u8bbe\u7f6e\u60a8\u7684\u8bbe\u5907\u6216\u8def\u7531\u5668\u7684 DNS \u670d\u52a1\u5668\uff1a",
"install_settings_all_interfaces": "\u6240\u6709\u63a5\u53e3",
"install_auth_title": "\u8eab\u4efd\u8ba4\u8bc1",
"install_auth_desc": "\u6211\u4eec\u5f3a\u70c8\u5efa\u8bae\u60a8\u4e3a AdGuard Home \u7684\u7f51\u9875\u7ba1\u7406\u754c\u9762\u914d\u7f6e\u5bc6\u7801\u3002\u5c3d\u7ba1\u8be5\u9875\u9762\u53ea\u80fd\u901a\u8fc7\u60a8\u7684\u672c\u5730\u7f51\u7edc\u8bbf\u95ee\uff0c\u4f46\u907f\u514d\u5b83\u88ab\u4e0d\u52a0\u9650\u5236\u5730\u8bbf\u95ee\u4ecd\u5341\u5206\u91cd\u8981\u3002",
"install_auth_username": "\u7528\u6237\u540d",
"install_auth_password": "\u5bc6\u7801",
"install_auth_confirm": "\u786e\u8ba4\u5bc6\u7801",
"install_auth_username_enter": "\u8f93\u5165\u7528\u6237\u540d",
"install_auth_password_enter": "\u8f93\u5165\u5bc6\u7801",
"install_step": "\u6b65\u9aa4",
"install_devices_title": "\u914d\u7f6e\u60a8\u7684\u8bbe\u5907",
"install_devices_desc": "\u4e3a\u4fdd\u8bc1 AdGuard Home \u53ef\u4ee5\u5f00\u59cb\u6b63\u5e38\u5de5\u4f5c\uff0c\u60a8\u9700\u8981\u5728\u8bbe\u5907\u4e0a\u5bf9\u5176\u8fdb\u884c\u914d\u7f6e\u3002",
"install_submit_title": "\u606d\u559c\u60a8\uff01",
"install_submit_desc": "\u5b89\u88c5\u8fc7\u7a0b\u5df2\u7ecf\u5b8c\u6210\uff0c\u60a8\u53ef\u4ee5\u5f00\u59cb\u4f7f\u7528 AdGuard Home \u4e86\u3002",
"install_devices_router": "\u8def\u7531\u5668",
"install_devices_router_desc": "\u6b64\u8bbe\u7f6e\u5c06\u81ea\u52a8\u8986\u76d6\u8fde\u63a5\u5230\u60a8\u7684\u5bb6\u5ead\u8def\u7531\u5668\u7684\u6240\u6709\u8bbe\u5907\uff0c\u60a8\u4e0d\u9700\u8981\u624b\u52a8\u914d\u7f6e\u5b83\u4eec\u3002",
"install_devices_address": "AdGuard Home DNS \u670d\u52a1\u5668\u6b63\u5728\u76d1\u542c\u4ee5\u4e0b\u5730\u5740",
"install_devices_router_list_1": "\u6253\u5f00\u60a8\u7684\u8def\u7531\u5668\u914d\u7f6e\u754c\u9762\u3002\u901a\u5e38\u60c5\u51b5\u4e0b\uff0c\u60a8\u53ef\u4ee5\u901a\u8fc7\u6d4f\u89c8\u5668\u8bbf\u95ee\u5730\u5740\uff08\u5982 http:\/\/192.168.0.1\/ \u6216 http:\/\/192.168.1.1 \uff09\u3002\u6253\u5f00\u540e\u60a8\u53ef\u80fd\u9700\u8981\u8f93\u5165\u5bc6\u7801\u4ee5\u8fdb\u5165\u914d\u7f6e\u754c\u9762\u3002\u5982\u679c\u60a8\u4e0d\u8bb0\u5f97\u5bc6\u7801\uff0c\u901a\u5e38\u53ef\u4ee5\u901a\u8fc7\u6309\u4e0b\u8def\u7531\u5668\u4e0a\u7684\u91cd\u7f6e\u6309\u94ae\u6765\u91cd\u8bbe\u5bc6\u7801\u3002\u4e00\u4e9b\u8def\u7531\u5668\u53ef\u80fd\u9700\u8981\u901a\u8fc7\u7279\u5b9a\u7684\u5e94\u7528\u6765\u8fdb\u884c\u8fd9\u4e00\u64cd\u4f5c\uff0c\u8bf7\u786e\u4fdd\u60a8\u5df2\u7ecf\u5728\u8ba1\u7b97\u673a\u6216\u624b\u673a\u4e0a\u5b89\u88c5\u4e86\u76f8\u5173\u5e94\u7528\u3002",
"install_devices_router_list_2": "\u627e\u5230\u8def\u7531\u5668\u7684 DHCP\/DNS \u8bbe\u7f6e\u9875\u9762\u3002\u60a8\u4f1a\u5728 DNS \u8fd9\u4e00\u5355\u8bcd\u65c1\u8fb9\u627e\u5230\u4e24\u5230\u4e09\u884c\u5141\u8bb8\u8f93\u5165\u7684\u8f93\u5165\u6846\uff0c\u6bcf\u4e00\u884c\u8f93\u5165\u6846\u5206\u4e3a\u56db\u7ec4\uff0c\u6bcf\u7ec4\u5141\u8bb8\u8f93\u5165\u4e00\u5230\u4e09\u4e2a\u6570\u5b57\u3002",
"install_devices_router_list_3": "\u8bf7\u5728\u6b64\u5904\u8f93\u5165\u60a8\u7684 AdGuard Home \u670d\u52a1\u5668\u5730\u5740\u3002",
"install_devices_windows_list_1": "\u901a\u8fc7\u5f00\u59cb\u83dc\u5355\u6216 Windows \u641c\u7d22\u529f\u80fd\u6253\u5f00\u63a7\u5236\u9762\u677f\u3002",
"install_devices_windows_list_2": "\u70b9\u51fb\u8fdb\u5165 \u201d\u7f51\u7edc\u548c Internet\u201c \u540e\uff0c\u518d\u6b21\u70b9\u51fb\u8fdb\u5165 \u201c\u7f51\u7edc\u548c\u5171\u4eab\u4e2d\u5fc3\u201d",
"install_devices_windows_list_3": "\u5728\u7a97\u53e3\u7684\u5de6\u4fa7\u627e\u5230 \u201d\u66f4\u6539\u9002\u914d\u5668\u8bbe\u7f6e\u201c \u5e76\u70b9\u51fb\u8fdb\u5165\u3002",
"install_devices_windows_list_4": "\u9009\u62e9\u60a8\u6b63\u5728\u8fde\u63a5\u7684\u7f51\u7edc\u8bbe\u5907\uff0c\u53f3\u51fb\u5b83\u5e76\u9009\u62e9 \u201d\u5c5e\u6027\u201c \u3002",
"install_devices_windows_list_5": "\u5728\u5217\u8868\u4e2d\u627e\u5230 \u201dInternet \u534f\u8bae\u7248\u672c 4 (TCP\/IPv4)\u201c \uff0c\u9009\u62e9\u5e76\u518d\u6b21\u70b9\u51fb \u201d\u5c5e\u6027\u201c \u3002",
"install_devices_windows_list_6": "\u9009\u62e9 \u201d\u4f7f\u7528\u4e0b\u9762\u7684 DNS \u670d\u52a1\u5668\u5730\u5740\u201c \uff0c\u5e76\u8f93\u5165\u60a8\u7684 AdGuard Home \u670d\u52a1\u5668\u5730\u5740\u3002",
"install_devices_macos_list_1": "\u70b9\u51fb\u82f9\u679c\u56fe\u6807\uff0c\u8fdb\u5165 \u201d\u7cfb\u7edf\u9996\u9009\u9879\u201c\u3002",
"install_devices_macos_list_2": "\u70b9\u51fb \u201d\u7f51\u7edc\u201c \u3002",
"install_devices_macos_list_3": "\u9009\u62e9\u5728\u5217\u8868\u4e2d\u7684\u7b2c\u4e00\u4e2a\u8fde\u63a5\uff0c\u5e76\u70b9\u51fb \u201d\u9ad8\u7ea7\u201c \u3002",
"install_devices_macos_list_4": "\u9009\u62e9 \u201dDNS\u201c \u9009\u9879\u5361\uff0c\u5e76\u8f93\u5165\u60a8\u7684 AdGuard Home \u670d\u52a1\u5668\u5730\u5740\u3002",
"install_devices_android_list_1": "\u5728\u5b89\u5353\u4e3b\u5c4f\u5e55\u83dc\u5355\u4e2d\u70b9\u51fb\u8bbe\u7f6e\u3002",
"install_devices_android_list_2": "\u70b9\u51fb\u83dc\u5355\u4e0a\u7684 \u201d\u65e0\u7ebf\u5c40\u57df\u7f51\u201c \u9009\u9879\u3002\u5728\u5c4f\u5e55\u4e0a\u5c06\u5217\u51fa\u6240\u6709\u53ef\u7528\u7684\u7f51\u7edc\uff08\u8702\u7a9d\u79fb\u52a8\u7f51\u7edc\u4e0d\u652f\u6301\u4fee\u6539 DNS \uff09\u3002",
"install_devices_android_list_3": "\u957f\u6309\u5f53\u524d\u5df2\u8fde\u63a5\u7684\u7f51\u7edc\uff0c\u7136\u540e\u70b9\u51fb \u201d\u4fee\u6539\u7f51\u7edc\u8bbe\u7f6e\u201c \u3002",
"install_devices_android_list_4": "\u5728\u67d0\u4e9b\u8bbe\u5907\u4e0a\uff0c\u60a8\u53ef\u80fd\u9700\u8981\u9009\u4e2d \u201d\u9ad8\u7ea7\u201c \u590d\u9009\u6846\u4ee5\u67e5\u770b\u8fdb\u4e00\u6b65\u7684\u8bbe\u7f6e\u3002\u60a8\u53ef\u80fd\u9700\u8981\u8c03\u6574\u60a8\u5b89\u5353\u8bbe\u5907\u7684 DNS \u8bbe\u7f6e\uff0c\u6216\u662f\u9700\u8981\u5c06 IP \u8bbe\u7f6e\u4ece DHCP \u5207\u6362\u5230\u9759\u6001\u3002",
"install_devices_android_list_5": "\u5c06 \"DNS 1 \/ \u4e3b DNS\" \u548c \u201dDNS 2 \/ \u526f DNS\u201c \u7684\u503c\u6539\u4e3a\u60a8\u7684 AdGuard Home \u670d\u52a1\u5668\u5730\u5740\u3002",
"install_devices_ios_list_1": "\u4ece\u4e3b\u5c4f\u5e55\u4e2d\u70b9\u51fb \u201d\u8bbe\u7f6e\u201c \u3002",
"install_devices_ios_list_2": "\u4ece\u5de6\u4fa7\u76ee\u5f55\u4e2d\u9009\u62e9 \u201d\u65e0\u7ebf\u5c40\u57df\u7f51\u201c\uff08\u79fb\u52a8\u6570\u636e\u7f51\u7edc\u73af\u5883\u4e0b\u4e0d\u652f\u6301\u4fee\u6539 DNS \uff09\u3002",
"install_devices_ios_list_3": "\u70b9\u51fb\u5f53\u524d\u5df2\u8fde\u63a5\u7f51\u7edc\u7684\u540d\u79f0\u3002",
"install_devices_ios_list_4": "\u5728 DNS \u5b57\u6bb5\u4e2d\u8f93\u5165\u60a8\u7684 AdGuard Home \u670d\u52a1\u5668\u5730\u5740\u3002",
"get_started": "\u5f00\u59cb\u914d\u7f6e",
"next": "\u4e0b\u4e00\u6b65",
"open_dashboard": "\u6253\u5f00\u4eea\u8868\u76d8",
"install_saved": "\u4fdd\u5b58\u6210\u529f",
"encryption_title": "\u52a0\u5bc6",
"encryption_desc": "\u4e3a DNS \u4e0e\u7f51\u9875\u7ba1\u7406\u754c\u9762\u542f\u7528\u52a0\u5bc6\uff08HTTPS\/TLS\uff09",
"encryption_config_saved": "\u52a0\u5bc6\u914d\u7f6e\u5df2\u4fdd\u5b58",
"encryption_server": "\u670d\u52a1\u5668\u540d\u79f0",
"encryption_server_enter": "\u8f93\u5165\u60a8\u7684\u57df\u540d",
"encryption_server_desc": "\u82e5\u8981\u4f7f\u7528 HTTPS \uff0c\u60a8\u9700\u8981\u8f93\u5165\u4e0e SSL \u8bc1\u4e66\u76f8\u5339\u914d\u7684\u670d\u52a1\u5668\u540d\u79f0\u3002",
"encryption_redirect": "HTTPS \u81ea\u52a8\u91cd\u5b9a\u5411",
"encryption_redirect_desc": "\u5982\u679c\u52fe\u9009\u6b64\u9009\u9879\uff0cAdGuard Home \u5c06\u81ea\u52a8\u5c06\u60a8\u4ece HTTP \u91cd\u5b9a\u5411\u5230 HTTPS \u5730\u5740\u3002",
"encryption_https": "HTTPS \u7aef\u53e3",
"encryption_https_desc": "\u5982\u679c\u914d\u7f6e\u4e86 HTTPS \u7aef\u53e3\uff0cAdGuard Home \u7ba1\u7406\u754c\u9762\u5c06\u53ef\u4ee5\u901a\u8fc7 HTTPS \u8bbf\u95ee\uff0c\u5b83\u8fd8\u5c06\u5728\u5728 '\/dns-query' \u4f4d\u7f6e\u63d0\u4f9b DNS-over-HTTPS \u3002",
"encryption_dot": "DNS-over-TLS \u7aef\u53e3",
"encryption_dot_desc": "\u5982\u679c\u914d\u7f6e\u4e86\u6b64\u7aef\u53e3\uff0cAdGuard Home \u5c06\u5728\u6b64\u7aef\u53e3\u4e0a\u8fd0\u884c\u4e00\u4e2a DNS-over-TLS \u670d\u52a1\u5668\u3002",
"encryption_certificates": "\u8bc1\u4e66",
"encryption_certificates_desc": "\u4e3a\u4e86\u4f7f\u7528\u52a0\u5bc6\uff0c\u60a8\u9700\u8981\u4e3a\u57df\u63d0\u4f9b\u6709\u6548\u7684 SSL \u8bc1\u4e66\u94fe\u3002\u60a8\u53ef\u4ee5\u5728 <0>{{link}}<\/0> \u4e0a\u83b7\u5f97\u514d\u8d39\u8bc1\u4e66\uff0c\u4e5f\u53ef\u4ee5\u4ece\u53d7\u4fe1\u4efb\u7684\u8bc1\u4e66\u9881\u53d1\u673a\u6784\u8d2d\u4e70\u8bc1\u4e66\u3002",
"encryption_certificates_input": "\u5c06\u60a8\u4ee5 PEM \u683c\u5f0f\u7f16\u7801\u7684\u8bc1\u4e66\u590d\u5236\u7c98\u8d34\u5230\u6b64\u5904\u3002",
"encryption_status": "\u72b6\u6001",
"encryption_expire": "\u6709\u6548\u671f",
"encryption_key": "\u79c1\u94a5",
"encryption_key_input": "\u5c06\u60a8\u4ee5 PEM \u683c\u5f0f\u7f16\u7801\u7684\u8bc1\u4e66\u79c1\u94a5\u590d\u5236\u7c98\u8d34\u5230\u6b64\u5904\u3002",
"encryption_enable": "\u542f\u7528\u52a0\u5bc6\uff08HTTPS\u3001DNS-over-HTTPS\u3001DNS-over-TLS\uff09",
"encryption_enable_desc": "\u5982\u679c\u542f\u7528\u52a0\u5bc6\u9009\u9879\uff0cAdGuard Home \u7684\u7f51\u9875\u7ba1\u7406\u754c\u9762\u5c06\u901a\u8fc7 HTTPS \u8fde\u63a5\u8bbf\u95ee\uff0c\u540c\u65f6 DNS \u670d\u52a1\u5668\u5c06\u76d1\u542c\u901a\u8fc7 DNS-over-HTTPS \u4e0e DNS-over-TLS \u53d1\u9001\u7684\u8bf7\u6c42\u3002",
"encryption_chain_valid": "\u8bc1\u4e66\u94fe\u9a8c\u8bc1\u6709\u6548",
"encryption_chain_invalid": "\u8bc1\u4e66\u94fe\u9a8c\u8bc1\u65e0\u6548",
"encryption_key_valid": "\u8be5 {{type}} \u79c1\u94a5\u9a8c\u8bc1\u6709\u6548",
"encryption_key_invalid": "\u8be5 {{type}} \u79c1\u94a5\u9a8c\u8bc1\u65e0\u6548",
"encryption_subject": "\u4f7f\u7528\u8005",
"encryption_issuer": "\u9881\u53d1\u8005",
"encryption_hostnames": "\u4e3b\u673a\u540d",
"encryption_reset": "\u60a8\u786e\u5b9a\u60f3\u8981\u91cd\u7f6e\u52a0\u5bc6\u8bbe\u7f6e\uff1f",
"topline_expiring_certificate": "\u60a8\u7684 SSL \u8bc1\u4e66\u5373\u5c06\u8fc7\u671f\u3002\u8bf7\u66f4\u65b0 <0>\u52a0\u5bc6\u8bbe\u7f6e<\/0> \u3002",
"topline_expired_certificate": "\u60a8\u7684 SSL \u8bc1\u4e66\u5df2\u8fc7\u671f\u3002\u8bf7\u66f4\u65b0 <0>\u52a0\u5bc6\u8bbe\u7f6e<\/0> \u3002",
"form_error_port_range": "\u8f93\u5165 80 - 65535 \u8303\u56f4\u5185\u7684\u7aef\u53e3\u503c",
"form_error_port_unsafe": "\u8fd9\u662f\u4e00\u4e2a\u4e0d\u5b89\u5168\u7684\u7aef\u53e3",
"form_error_equal": "\u4e0d\u5e94\u8be5\u76f8\u540c",
"form_error_password": "\u5bc6\u7801\u4e0d\u5339\u914d",
"reset_settings": "\u91cd\u7f6e\u8bbe\u7f6e",
"update_announcement": "AdGuard Home {{version}} \u73b0\u5df2\u53d1\u5e03\uff01 <0>\u70b9\u51fb\u6b64\u5904<\/0> \u4ee5\u83b7\u53d6\u8be6\u7ec6\u4fe1\u606f\u3002"
"client_settings": "客户端设置",
"example_upstream_reserved": "您可以将上游DNS 服务器<0>指定为特定域名</0>",
"upstream_parallel": "通过同时查询所有上游服务器,使用并行请求以加速解析",
"parallel_requests": "并行请求",
"load_balancing": "负载均衡",
"load_balancing_desc": "一次查询一台服务器。 AdGuard Home将使用加权随机算法来选择服务器以便更频繁地使用最快的服务器。",
"bootstrap_dns": "Bootstrap DNS 服务器",
"bootstrap_dns_desc": "Bootstrap DNS 服务器用于解析您指定为上游的 DoH / DoT 解析器的 IP 地址。",
"check_dhcp_servers": "检查 DHCP 服务器",
"save_config": "保存配置",
"enabled_dhcp": "DHCP 服务器已启用",
"disabled_dhcp": "DHCP 服务器已禁用",
"dhcp_title": "DHCP 服务器(实验性)",
"dhcp_description": "如果你的路由器没有提供 DHCP (动态主机配置协议)设置,你可以使用 AdGuard 内置的 DHCP 服务器。",
"dhcp_enable": "启用 DHCP 服务器",
"dhcp_disable": "停用 DHCP 服务器",
"dhcp_not_found": "您可以安全地启用内置 DHCP 服务器 - 在当前网络中未检测到任何起作用的 DHCP 服务器。然而我们鼓励您以手动方式重新检测因为当前我们的自动检测不能确保100%准确。",
"dhcp_found": "在当前网络中检测到 DHCP 服务器。如果启用内置的 DHCP 服务器可能不安全。",
"dhcp_leases": "DHCP 租约",
"dhcp_static_leases": "DHCP 静态租约",
"dhcp_leases_not_found": "未找到 DHCP 租约",
"dhcp_config_saved": "已保存 DHCP 服务器配置",
"form_error_required": "必填字段",
"form_error_ip4_format": "无效的 IPv4 格式",
"form_error_ip6_format": "无效的 IPv6 格式",
"form_error_ip_format": "无效的 IPv4 格式",
"form_error_mac_format": "无效的 MAC 格式",
"form_error_client_id_format": "无效的客户端 ID 格式",
"form_error_positive": "必须大于 0",
"form_error_negative": "必须大于等于 0",
"dhcp_form_gateway_input": "网关 IP",
"dhcp_form_subnet_input": "子网掩码",
"dhcp_form_range_title": "IP 地址范围",
"dhcp_form_range_start": "起始 IP 地址",
"dhcp_form_range_end": "末尾 IP 地址",
"dhcp_form_lease_title": "DHCP 租约时间(秒)",
"dhcp_form_lease_input": "租期",
"dhcp_interface_select": "选择 DHCP 接口",
"dhcp_hardware_address": "硬件地址",
"dhcp_ip_addresses": "IP 地址",
"ip": "IP地址",
"dhcp_table_hostname": "主机名",
"dhcp_table_expires": "到期",
"dhcp_warning": "如果你想要启用内置的 DHCP 服务器,请确保在当前网络中没有其它起作用的 DHCP 服务器。否则,此操作可能会破坏已连接设备的网络连接!",
"dhcp_error": "我们无法确定在当前网络中是否存在其它 DHCP 服务器。",
"dhcp_static_ip_error": "要使用 DHCP 服务器,则必须设置静态 IP 地址。我们无法确定此网络接口是否已被配置为使用静态 IP 地址。请手动为此网络接口设置静态 IP 地址。",
"dhcp_dynamic_ip_found": "您的系统对网络接口 <0>{{interfaceName}}</0> 使用了动态 IP 地址配置。要使用 DHCP 服务器,则必须对此网络接口使用静态 IP 地址配置。此网络接口当前的 IP 地址为 <0>{{ipAddress}}</0>。如您点击 启用 DHCP 按钮,我们将自动修改此网络接口以使用静态 IP 地址配置。",
"dhcp_lease_added": "静态租约 \"{{key}}\" 已成功添加",
"dhcp_lease_deleted": "静态租约 \"{{key}}\" 已成功删除",
"dhcp_new_static_lease": "新建静态租约",
"dhcp_static_leases_not_found": "未找到 DHCP 静态租约",
"dhcp_add_static_lease": "添加静态租约",
"dhcp_reset": "您确定要重置DHCP设定么",
"country": "国家",
"city": "城市",
"delete_confirm": "您确定要删除 \"{{key}}\"",
"form_enter_hostname": "输入主机名称",
"error_details": "详细错误信息",
"response_details": "响应细节",
"request_details": "请求详情",
"client_details": "客户端详情",
"details": "详细信息",
"back": "返回",
"dashboard": "仪表盘",
"settings": "设置",
"filters": "过滤器",
"filter": "过滤器",
"query_log": "查询日志",
"compact": "紧凑",
"nothing_found": "没找到",
"faq": "常见问题",
"version": "版本",
"address": "地址",
"protocol": "协议",
"on": "启用中",
"off": "禁用中",
"copyright": "版权",
"homepage": "主页",
"report_an_issue": "问题反馈",
"privacy_policy": "隐私策略",
"enable_protection": "启用保护",
"enabled_protection": "保护已启用",
"disable_protection": "禁用保护",
"disabled_protection": "保护已禁用",
"refresh_statics": "刷新状态",
"dns_query": "DNS查询",
"blocked_by": "<0>已被过滤器拦截</0>",
"stats_malware_phishing": "被拦截的恶意/钓鱼网站",
"stats_adult": "被拦截的成人网站",
"stats_query_domain": "请求域名排行",
"for_last_24_hours": "在过去 24 小时",
"for_last_days": "最近 {{count}} 天",
"for_last_days_plural": "最近 {{count}} 天",
"no_domains_found": "未找到域名",
"requests_count": "请求数",
"top_blocked_domains": "被拦截域名排行",
"top_clients": "客户端排行",
"no_clients_found": "未找到客户端",
"general_statistics": "概况统计",
"number_of_dns_query_days": "过去 {{count}} 天内 处理的DNS 查询总数",
"number_of_dns_query_days_plural": "在过去的 {{count}} 天内处理了多少个 DNS 查询",
"number_of_dns_query_24_hours": "过去 24 小时内处理的 DNS 请求总数",
"number_of_dns_query_blocked_24_hours": "被广告过滤器和 Hosts 拦截清单拦截的 DNS 请求总数",
"number_of_dns_query_blocked_24_hours_by_sec": "被 AdGuard 安全浏览模块拦截的 DNS 请求总数",
"number_of_dns_query_blocked_24_hours_adult": "被拦截的成人网站总数",
"enforced_save_search": "强制安全搜索",
"number_of_dns_query_to_safe_search": "启用强制安全搜索后对搜索引擎的 DNS 请求总数",
"average_processing_time": "平均处理时间",
"average_processing_time_hint": "处理 DNS 请求的平均时间(毫秒)",
"block_domain_use_filters_and_hosts": "使用过滤器和 Hosts 文件以拦截指定域名",
"filters_block_toggle_hint": "你可以在 <a href='#filters'>过滤器</a> 设置中添加过滤规则。",
"use_adguard_browsing_sec": "使用 AdGuard【浏览安全】网页服务",
"use_adguard_browsing_sec_hint": "AdGuard Home 将检查域名是否被浏览安全服务列入黑名单。它将使用隐私性强的检索 API 来执行检查,只有域名的 SHA256 的短前缀会被发送到服务器。",
"use_adguard_parental": "使用 AdGuard 【家长控制】服务",
"use_adguard_parental_hint": "AdGuard Home 将使用与浏览安全服务相同的隐私性强的 API 来检查域名指向的网站是否包含成人内容。",
"enforce_safe_search": "强制安全搜索",
"enforce_save_search_hint": "AdGuard Home 将对以下搜索引擎强制启用安全搜索Google、YouTube、Bing 和 Yandex。",
"no_servers_specified": "未找到指定的服务器",
"general_settings": "常规设置",
"dns_settings": "DNS 设置",
"dns_blocklists": "DNS封锁清单",
"dns_allowlists": "DNS允许清单",
"dns_blocklists_desc": "AdGuard Home将阻止匹配DNS拦截清单的域名",
"dns_allowlists_desc": "来自DNS允许列表的域将被允许即使它们位于任意阻止列表中也是如此",
"custom_filtering_rules": "自定义过滤规则",
"encryption_settings": "加密设置",
"dhcp_settings": "DHCP 设置",
"upstream_dns": "上游 DNS 服务器",
"upstream_dns_hint": "如果此处留空AdGuard Home 将会使用 <a href='https://www.quad9.net/' target='_blank'>Quad9</a> 作为上游。",
"test_upstream_btn": "测试上游 DNS",
"upstreams": "上游服务器",
"apply_btn": "应用",
"disabled_filtering_toast": "过滤器已禁用",
"enabled_filtering_toast": "过滤器已启用",
"disabled_safe_browsing_toast": "安全浏览已禁用",
"enabled_safe_browsing_toast": "安全浏览已启用",
"disabled_parental_toast": "家长控制已禁用",
"enabled_parental_toast": "家长控制已启用",
"disabled_safe_search_toast": "安全搜索已禁用",
"enabled_save_search_toast": "安全搜索已启用",
"enabled_table_header": "已启用",
"name_table_header": "名称",
"list_url_table_header": "清单网址",
"rules_count_table_header": "规则数",
"last_time_updated_table_header": "上次更新时间",
"actions_table_header": "活跃状态",
"request_table_header": "请求",
"edit_table_action": "编辑",
"delete_table_action": "删除",
"elapsed": "耗时",
"filters_and_hosts_hint": "AdGuard Home 可以解析基础的 adblock 规则和 Hosts 语法。",
"no_blocklist_added": "未添加阻止列表",
"no_whitelist_added": "未添加允许列表",
"add_blocklist": "添加阻止列表",
"add_allowlist": "添加允许列表",
"cancel_btn": "取消",
"enter_name_hint": "输入名称",
"enter_url_or_path_hint": "请输入URL或列表的绝对路径",
"check_updates_btn": "检查更新",
"new_blocklist": "新封锁清单",
"new_allowlist": "新的允许清单",
"edit_blocklist": "编辑阻止列表",
"edit_allowlist": "编辑允许列表",
"choose_blocklist": "选择拦截列表",
"choose_allowlist": "选择允许列表",
"enter_valid_blocklist": "输入有效的阻止列表URL",
"enter_valid_allowlist": "输入有效的允许列表URL",
"form_error_url_format": "无效的URL格式",
"form_error_url_or_path_format": "无效的URL或列表的绝对路径",
"custom_filter_rules": "自定义过滤器规则",
"custom_filter_rules_hint": "请确保每行只输入一条规则。你可以输入符合 adblock 语法或 Hosts 语法的规则。",
"examples_title": "范例",
"example_meaning_filter_block": "拦截 example.org 域名及其所有子域名",
"example_meaning_filter_whitelist": "放行 example.org 及其所有子域名",
"example_meaning_host_block": "AdGuard Home 现在将会把 example.org但不包括它的子域名解析到 127.0.0.1。",
"example_comment": "! 这是一行注释",
"example_comment_meaning": "只是一条注释",
"example_comment_hash": "# 这也是一行注释",
"example_regex_meaning": "阻止访问与<0>指定的正则表达式</0>匹配的域",
"example_upstream_regular": "常规 DNS基于 UDP",
"example_upstream_dot": "加密 <0>DNS-over-TLS</0>",
"example_upstream_doh": "加密 <0>DNS-over-HTTPS</0>",
"example_upstream_sdns": "你可以使用 <1>DNSCrypt</1> 的 <0>DNS Stamps</0> 或者 <2>DNS-over-HTTPS</2> 解析器",
"example_upstream_tcp": "常规 DNS基于 TCP ",
"all_lists_up_to_date_toast": "所有列表都是最新的",
"updated_upstream_dns_toast": "上游 DNS 已更新",
"dns_test_ok_toast": "指定的 DNS 服务器现已正常运行",
"dns_test_not_ok_toast": "服务器 \"{{key}}\":无法使用,请检查你输入的是否正确",
"unblock": "放行",
"block": "拦截",
"time_table_header": "时间",
"date": "日起",
"domain_name_table_header": "域名",
"domain_or_client": "域名或客户端",
"type_table_header": "类型",
"response_table_header": "响应",
"response_code": "响应代码",
"client_table_header": "客户端",
"empty_response_status": "空",
"show_all_filter_type": "显示所有",
"show_filtered_type": "显示被拦截的",
"no_logs_found": "未找到日志",
"refresh_btn": "刷新",
"previous_btn": "上一页",
"next_btn": "下一页",
"loading_table_status": "加载中……",
"page_table_footer_text": "页",
"rows_table_footer_text": "行",
"updated_custom_filtering_toast": "自定义过滤规则已更新",
"rule_removed_from_custom_filtering_toast": "规则已从自定义过滤规则列表中移除",
"rule_added_to_custom_filtering_toast": "规则已添加到自定义过滤规则列表中",
"query_log_response_status": "状态: {{value}}",
"query_log_filtered": "被 {{filter}} 过滤",
"query_log_confirm_clear": "你确定想要清除全部查询日志吗?",
"query_log_cleared": "查询日志已成功清除",
"query_log_updated": "已成功更新查询日志",
"query_log_clear": "清除查询日志",
"query_log_retention": "查询记录保留时间",
"query_log_enable": "启用日志",
"query_log_configuration": "日志配置",
"query_log_disabled": "查询日志已禁用,在<0>这些设置</0>中能配置它们",
"query_log_strict_search": "使用双引号进行严谨搜索",
"query_log_retention_confirm": "您确定要更改查询记录保留时间吗? 如果您减少间隔时间的值, 某些数据可能会丢失。",
"anonymize_client_ip": "匿名化客户端IP",
"anonymize_client_ip_desc": "不要在日志和统计信息中保存客户端的完整IP地址",
"dns_config": "DNS服务设定",
"dns_cache_config": "DNS缓存配置",
"dns_cache_config_desc": "你可以在此处配置 DNS缓存",
"blocking_mode": "拦截模式",
"default": "默认",
"nxdomain": "无效域名",
"null_ip": "无效 IP",
"custom_ip": "自定义 IP",
"blocking_ipv4": "拦截 IPv4",
"blocking_ipv6": "拦截 IPv6",
"dns_over_https": "DNS-over-HTTPS",
"dns_over_tls": "DNS-over-TLS",
"plain_dns": "无加密DNS",
"form_enter_rate_limit": "输入限制速率",
"rate_limit": "速度限制",
"edns_enable": "使用客户端的子网地址EDNS)",
"edns_cs_desc": "启用后AdGuard Home将会向DNS服务器发送客户端的子网地址进行查询",
"rate_limit_desc": "每个客户端每秒钟查询次数的限制 (0不限制)",
"blocking_ipv4_desc": "拦截 A 记录请求返回的 IP 地址",
"blocking_ipv6_desc": "拦截 AAAA 记录请求返回的 IP 地址",
"blocking_mode_default": "默认被Adblock规则拦截时以NXDOMAIN码响应被/etc/hosts规则拦截时返回规则中指定IP",
"blocking_mode_nxdomain": "NXDOMAIN以NXDOMAIN码响应",
"blocking_mode_null_ip": "空IP以零IP地址响应(A记录 0.0.0.0AAAA记录 ::)",
"blocking_mode_custom_ip": "自定IP以手动设置的IP地址响应",
"upstream_dns_client_desc": "如果将此字段留空AdGuard Home 将使用在<0>DNS设置</0>中配置的服务器。",
"tracker_source": "追踪器来源",
"source_label": "源",
"found_in_known_domain_db": "成功在已知域名数据库中查询到",
"category_label": "类别",
"rule_label": "规则",
"list_label": "列表",
"unknown_filter": "未知过滤器 {{filterId}}",
"known_tracker": "已知跟踪器",
"install_welcome_title": "欢迎使用 AdGuard Home",
"install_welcome_desc": "AdGuard Home 是一个可在特定网络范围内拦截所有广告和跟踪器的 DNS 服务器。它的目的是让您控制整个网络和您的所有设备,且不需要使用任何客户端程序。",
"install_settings_title": "网页管理界面",
"install_settings_listen": "监听接口",
"install_settings_port": "端口",
"install_settings_interface_link": "您可以通过以下地址访问您的 AdGuard Home 网页管理界面:",
"form_error_port": "输入有效的端口值",
"install_settings_dns": "DNS 服务器",
"install_settings_dns_desc": "您将需要使用以下地址来设置您的设备或路由器的 DNS 服务器:",
"install_settings_all_interfaces": "所有接口",
"install_auth_title": "身份认证",
"install_auth_desc": "我们强烈建议您为 AdGuard Home 的网页管理界面配置密码。即使该页面只能通过您的本地网络访问,但避免它被不加限制地访问仍十分重要。",
"install_auth_username": "用户名",
"install_auth_password": "密码",
"install_auth_confirm": "确认密码",
"install_auth_username_enter": "输入用户名",
"install_auth_password_enter": "输入密码",
"install_step": "步骤",
"install_devices_title": "配置您的设备",
"install_devices_desc": "为保证 AdGuard Home 可以开始正常工作,您需要在设备上对其进行配置。",
"install_submit_title": "恭喜您!",
"install_submit_desc": "安装过程已经完成,您可以开始使用 AdGuard Home 了。",
"install_devices_router": "路由器",
"install_devices_router_desc": "此设置将自动覆盖连接到您的家庭路由器的所有设备,您不需要手动配置它们。",
"install_devices_address": "AdGuard Home DNS 服务器正在监听以下地址",
"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_3": "请在此处输入您的 AdGuard Home 服务器地址。",
"install_devices_router_list_4": "在某些类型的路由器上无法设置自定义 DNS 服务器。在此情况下将 AdGuard Home 设置为 DHCP 服务器,可能会有所帮助。否则您应该查找如何根据特定路由器型号设置 DNS 服务器的使用手册。\n",
"install_devices_windows_list_1": "通过开始菜单或 Windows 搜索功能打开控制面板。",
"install_devices_windows_list_2": "点击进入 ”网络和 Internet“ 后,再次点击进入 “网络和共享中心”",
"install_devices_windows_list_3": "在窗口的左侧找到 ”更改适配器设置“ 并点击进入。",
"install_devices_windows_list_4": "选择您正在连接的网络设备,右击它并选择 ”属性“ 。",
"install_devices_windows_list_5": "在列表中找到 ”Internet 协议版本 4 (TCP/IPv4)“ ,选择并再次点击 ”属性“ 。",
"install_devices_windows_list_6": "选择 ”使用下面的 DNS 服务器地址“ ,并输入您的 AdGuard Home 服务器地址。",
"install_devices_macos_list_1": "点击苹果图标,进入 ”系统首选项“。",
"install_devices_macos_list_2": "点击 ”网络“ 。",
"install_devices_macos_list_3": "选择在列表中的第一个连接,并点击 ”高级“ 。",
"install_devices_macos_list_4": "选择 ”DNS“ 选项卡,并输入您的 AdGuard Home 服务器地址。",
"install_devices_android_list_1": "在安卓主屏幕菜单中点击设置。",
"install_devices_android_list_2": "点击菜单上的 ”无线局域网“ 选项。在屏幕上将列出所有可用的网络(蜂窝移动网络不支持修改 DNS )。",
"install_devices_android_list_3": "长按当前已连接的网络,然后点击 ”修改网络设置“ 。",
"install_devices_android_list_4": "在某些设备上,您可能需要选中 ”高级“ 复选框以查看进一步的设置。您可能需要调整您安卓设备的 DNS 设置,或是需要将 IP 设置从 DHCP 切换到静态。",
"install_devices_android_list_5": "将 \"DNS 1 / 主 DNS\" 和 ”DNS 2 / 副 DNS“ 的值改为您的 AdGuard Home 服务器地址。",
"install_devices_ios_list_1": "从主屏幕中点击 ”设置“ 。",
"install_devices_ios_list_2": "从左侧目录中选择 ”无线局域网“(移动数据网络环境下不支持修改 DNS )。",
"install_devices_ios_list_3": "点击当前已连接网络的名称。",
"install_devices_ios_list_4": "在 DNS 字段中输入您的 AdGuard Home 服务器地址。",
"get_started": "开始配置",
"next": "下一步",
"open_dashboard": "打开仪表盘",
"install_saved": "保存成功",
"encryption_title": "加密",
"encryption_desc": "为 DNS 与网页管理界面启用加密HTTPS/TLS",
"encryption_config_saved": "加密配置已保存",
"encryption_server": "服务器名称",
"encryption_server_enter": "输入您的域名",
"encryption_server_desc": "若要使用 HTTPS ,您需要输入与 SSL 证书相匹配的服务器名称。",
"encryption_redirect": "HTTPS 自动重定向",
"encryption_redirect_desc": "如果勾选此选项AdGuard Home 将自动将您从 HTTP 重定向到 HTTPS 地址。",
"encryption_https": "HTTPS 端口",
"encryption_https_desc": "如果配置了 HTTPS 端口AdGuard Home 管理界面将可以通过 HTTPS 访问,它还将在在 '/dns-query' 位置提供 DNS-over-HTTPS 。",
"encryption_dot": "DNS-over-TLS 端口",
"encryption_dot_desc": "如果配置了此端口AdGuard Home 将在此端口上运行一个 DNS-over-TLS 服务器。",
"encryption_certificates": "证书",
"encryption_certificates_desc": "为了使用加密,您需要为域提供有效的 SSL 证书链。您可以在 <0>{{link}}</0> 上获得免费证书,也可以从受信任的证书颁发机构购买证书。",
"encryption_certificates_input": "将您以 PEM 格式编码的证书复制粘贴到此处。",
"encryption_status": "状态",
"encryption_expire": "有效期",
"encryption_key": "私钥",
"encryption_key_input": "将您以 PEM 格式编码的证书私钥复制粘贴到此处。",
"encryption_enable": "启用加密HTTPS、DNS-over-HTTPS、DNS-over-TLS",
"encryption_enable_desc": "如果启用加密选项AdGuard Home 的网页管理界面将通过 HTTPS 连接访问,同时 DNS 服务器将监听通过 DNS-over-HTTPS 与 DNS-over-TLS 发送的请求。",
"encryption_chain_valid": "证书链验证有效",
"encryption_chain_invalid": "证书链验证无效",
"encryption_key_valid": "该 {{type}} 私钥验证有效",
"encryption_key_invalid": "该 {{type}} 私钥验证无效",
"encryption_subject": "使用者",
"encryption_issuer": "颁发者",
"encryption_hostnames": "主机名",
"encryption_reset": "您确定想要重置加密设置?",
"topline_expiring_certificate": "您的 SSL 证书即将过期。请更新 <0>加密设置</0> 。",
"topline_expired_certificate": "您的 SSL 证书已过期。请更新 <0>加密设置</0> 。",
"form_error_port_range": "输入 80 - 65535 范围内的端口值",
"form_error_port_unsafe": "这是一个不安全的端口",
"form_error_equal": "不应该相同",
"form_error_password": "密码不匹配",
"reset_settings": "重置设置",
"update_announcement": "AdGuard Home {{version}} 现已发布! <0>点击此处</0> 以获取详细信息。",
"setup_guide": "设置指导",
"dns_addresses": "DNS 地址",
"dns_start": "正在启动DNS服务",
"dns_status_error": "检查DNS服务器状态时出错",
"down": "下移",
"fix": "修复",
"dns_providers": "此为可从中选择的<0>已知 DNS 提供商列表</0>。",
"update_now": "立即更新",
"update_failed": "自动更新失败。请<a href='https://github.com/AdguardTeam/AdGuardHome/wiki/Getting-Started#update'>跟随这些步骤</a>以手动更新。",
"processing_update": "正在更新 AdGuard Home请稍侯",
"clients_title": "客户端",
"clients_desc": "配置已连接到 AdGuard Home 的设备",
"settings_global": "全局",
"settings_custom": "自定义",
"table_client": "客户端",
"table_name": "名称",
"save_btn": "保存",
"client_add": "添加客户端",
"client_new": "新建客户端",
"client_edit": "编辑客户端",
"client_identifier": "标识符",
"ip_address": "IP 地址",
"client_identifier_desc": "客户端可通过 IP 地址或 MAC 地址识别。请注意,如 AdGuard Home 也是 <0>DHCP 服务器</0>,则仅能将 MAC 用作标识符",
"form_enter_ip": "输入 IP",
"form_enter_mac": "输入 MAC",
"form_enter_id": "输入标识符",
"form_add_id": "添加标识符",
"form_client_name": "输入客户端名称",
"name": "名称",
"client_global_settings": "使用全局设置",
"client_deleted": "客户端 \"{{key}}\" 删除成功",
"client_added": "客户端 \"{{key}}\" 添加成功",
"client_updated": "客户端 \"{{key}}\" 更新成功",
"clients_not_found": "未找到客户端",
"client_confirm_delete": "您确定要删除客户端 \"{{key}}\"",
"list_confirm_delete": "您确定要删除此列表吗?",
"auto_clients_title": "客户端(运行时间)",
"auto_clients_desc": "使用 Adguard Home 但未存储在配置中的客户端上的数据",
"access_title": "访问设置",
"access_desc": "您可在此处配置 AdGuard Home DNS 服务器的访问规则。",
"access_allowed_title": "允许的客户端",
"access_allowed_desc": "CIDR 或 IP 地址列表。如配置,则 AdGuard Home 仅会接受源自这些 IP 地址的请求。",
"access_disallowed_title": "不允许的客户端",
"access_disallowed_desc": "CIDR 或 IP 地址列表。如配置,则 AdGuard Home 会放弃源自这些 IP 地址的请求。",
"access_blocked_title": "不允许的域名",
"access_blocked_desc": "不要将此功能与过滤器混淆。AdGuard Home 将在查询时删除具有这些网域的 DNS 查询。在此可以明确指定域名、通配符wildcard和网址过滤器规则例如 'example.org'、'*.example.org' 或 '||example.org^'。",
"access_settings_saved": "访问设置保存成功",
"updates_checked": "检查更新成功",
"updates_version_equal": "AdGuard Home已经是最新版本",
"check_updates_now": "立即检查更新",
"dns_privacy": "DNS 隐私",
"setup_dns_privacy_1": "<0>DNS-over-TLS:</0> 使用 <1>{{address}}</1> 字符串。",
"setup_dns_privacy_2": "<0>DNS-over-HTTPS:</0> 使用 <1>{{address}}</1> 字符串。",
"setup_dns_privacy_3": "<0>请注意,加密的 DNS 协议仅适用于 Android 9。所以您需要为其他操作系统上安装额外的软件。</0><0>以下是您可以使用软件的列表。</0>",
"setup_dns_privacy_android_1": "Android 9 原生支持 DNS-over-TLS。 要进行配置,请转到 设置 → 网络和互联网 → 高级 → 私有 DNS然后在那里输入您的域名。",
"setup_dns_privacy_android_2": "<0>AdGuard for Android</0> 支持 <1>DNS-over-HTTPS</1> 和 <1>DNS-over-TLS</1>。",
"setup_dns_privacy_android_3": "<0>Intra</0> 为 Android 提供了 <1>DNS-over-HTTPS</1> 的支持。",
"setup_dns_privacy_ios_1": "<0>DNSCloak</0> 支持 <1>DNS-over-HTTPS</1> ,但为了设置使用您自己的服务器,您需要为了它生成一个 <2>DNS Stamp</2> 。",
"setup_dns_privacy_ios_2": "<0>AdGuard for iOS</0> 支持 <1>DNS-over-HTTPS</1> 和 <1>DNS-over-TLS</1>。",
"setup_dns_privacy_other_title": "其他实施方案",
"setup_dns_privacy_other_1": "AdGuard Home 本身可以作为任何平台上的安全 DNS 客户端。",
"setup_dns_privacy_other_2": "<0>dnsproxy</0> 支持所有已知的安全 DNS 协议。",
"setup_dns_privacy_other_3": "<0>dnscrypt-proxy</0> 支持 <1>DNS-over-HTTPS</1>。",
"setup_dns_privacy_other_4": "<0>Mozilla Firefox</0> 支持 <1>DNS-over-HTTPS</1>。",
"setup_dns_privacy_other_5": "您可以从 <0>这里</0> 和 <1>这里</1> 找到更多的实施方案。",
"setup_dns_notice": "为了使用 <1>DNS-over-HTTPS</1> 或者 <1>DNS-over-TLS</1> ,您需要在 AdGuard Home 设置中 <0>配置加密</0> 。",
"rewrite_added": "已成功添加 \"{{key}}\" 的 DNS 重写",
"rewrite_deleted": "已成功删除 \"{{key}}\" 的 DNS 重写",
"rewrite_add": "添加 DNS 重写",
"rewrite_not_found": "未找到 DNS 重写",
"rewrite_confirm_delete": "您确定要删除 \"{{key}}\" 的 DNS 重写?",
"rewrite_desc": "可以轻松地配置特定的域名的自定义 DNS 响应。",
"rewrite_applied": " 重定向规则已应用",
"rewrite_hosts_applied": "根据hosts文件规则已被重写",
"dns_rewrites": "DNS 重写",
"form_domain": "输入域",
"form_answer": "输入 IP 地址或域名",
"form_error_domain_format": "无效的域格式",
"form_error_answer_format": "无效的响应格式",
"configure": "配置",
"main_settings": "主要设置",
"block_services": "阻止特定服务",
"blocked_services": "已阻止的服务",
"blocked_services_desc": "允许快速地阻止热门网站和服务。",
"blocked_services_saved": "已阻止服务的设置保存成功",
"blocked_services_global": "使用全局已阻止服务设置",
"blocked_service": "已阻止的服务",
"block_all": "阻止所有",
"unblock_all": "允许所有",
"encryption_certificate_path": "证书路径",
"encryption_private_key_path": "私钥路径",
"encryption_certificates_source_path": "设置证书路径",
"encryption_certificates_source_content": "粘贴证书内容",
"encryption_key_source_path": "设置私钥文件",
"encryption_key_source_content": "粘贴私钥内容",
"stats_params": "统计配置",
"config_successfully_saved": "配置保存成功",
"interval_24_hour": "24 小时",
"interval_days": "{{count}} 天",
"interval_days_plural": "{{count}} 天",
"domain": "域名",
"answer": "应答",
"filter_added_successfully": "已成功添加过滤器",
"filter_removed_successfully": "已成功删除该列表",
"filter_updated": "成功更新过滤器",
"statistics_configuration": "统计配置",
"statistics_retention": "统计保留",
"statistics_retention_desc": "如果您减少该间隔的数值, 某些数据可能会丢失",
"statistics_clear": " 清除统计数据",
"statistics_clear_confirm": "您确定要清除统计数据?",
"statistics_retention_confirm": "您确定要更改统计记录保留时间吗? 如果您减少间隔时间的值, 某些数据可能会丢失。",
"statistics_cleared": "统计数据已成功清除",
"interval_hours": "{{count}} 小时",
"interval_hours_plural": "{{count}} 小时",
"filters_configuration": "过滤器配置",
"filters_enable": "启用过滤器",
"filters_interval": "过滤器更新间隔",
"disabled": "已禁用",
"username_label": "用户名",
"username_placeholder": "输入用户名",
"password_label": "密码",
"password_placeholder": "输入密码",
"sign_in": "登入",
"sign_out": "登出",
"forgot_password": "忘记密码?",
"forgot_password_desc": "请遵从<0>这些步骤</0>来为你的用户账号创建一个新密码",
"location": "地址",
"orgname": "机构名称",
"netname": "网络名称",
"network": "网络",
"descr": "描述",
"whois": "Whois",
"filtering_rules_learn_more": "<0>了解更多</0>关于创建自己的hosts清单。",
"blocked_by_response": "因响应的CNAME或IP被屏蔽",
"blocked_by_cname_or_ip": "按CNAME或IP拦截",
"try_again": "重试",
"domain_desc": "输入您要重写的域名或通配符。",
"example_rewrite_domain": "仅重写此域名的响应。",
"example_rewrite_wildcard": "重写所有<0>example.org</0> 子域的响应。",
"rewrite_ip_address": "IP地址在 A或AAAA响应中使用这个IP",
"rewrite_domain_name": "域名 添加一个CNAME记录",
"rewrite_A": "<0>A</0>:特殊值,保持来自上游的<0>A</0>记录",
"rewrite_AAAA": "<0>AAAA</0>:特殊值,保持来自上游的<0>AAAA</0>记录",
"disable_ipv6": "禁用 IPv6",
"disable_ipv6_desc": "启用后所有IPv6地址 (type AAAA) 的DNS查询都会被丢弃。",
"fastest_addr": "最快的 IP 地址",
"fastest_addr_desc": "查询所有DNS服务器并返回所有响应中速度最快的IP地址。因必须等待全部DNS服务器均有所回应因而会降低DNS查询的速度但同时此举将会改善总体的连接。",
"autofix_warning_text": "若您单击“修复”AdGuardHome将会配置您的系统以使用AdGuardHome的DNS服务器",
"autofix_warning_list": "其将会进行如下工作:<0>停用系统DNSStubListener</0><0>设置DNS服务器地址为127.0.0.1</0><0>将/etc/resolv.conf的符号链接目标替换为/run/systemd/resolv/resolv.conf</0><0>停止DNSStubListener重新加载系统解析服务</0>",
"autofix_warning_result": "因此默认情况下所有来自系统的DNS请求都将由AdGuardHome处理。",
"tags_title": "标签",
"tags_desc": "您可以选择与客户端对应的标记。标签可以包含在过滤规则中,并允许您更准确地应用它们。<0>了解更多</0>",
"form_select_tags": "选择客户端标签",
"check_title": "检查过滤",
"check_desc": "检查主机名是否被过滤",
"check": "检查",
"form_enter_host": "输入主机名称",
"filtered_custom_rules": "被自定义过滤规则过滤",
"choose_from_list": "从列表中选择",
"add_custom_list": "添加一个自定义列表",
"host_whitelisted": "主机在白名单内",
"check_ip": "IP地址{{ip}}",
"check_cname": "CNAME: {{cname}}",
"check_reason": "原因:{{reason}}",
"check_rule": "规则:{{rule}}",
"check_service": "服务名称:{{service}}",
"check_not_found": "未在您的筛选列表中找到",
"client_confirm_block": "您确定要阻止客户端\"{{ip}}\"?",
"client_confirm_unblock": "您确定要解除对客户端\"{{ip}}\"的封锁吗?",
"client_blocked": "客户端 \"{{ip}}\"被成功拦截",
"client_unblocked": "成功解锁客户端\"{{ip}}\"",
"static_ip": "静态IP地址",
"static_ip_desc": "AdGuard Home 是一个服务器所以它需要一个静态IP地址才能正常工作。否则在某些情况下你的路由器可能会给这个设备分配一个不同的IP地址。",
"set_static_ip": "设置一个静态IP",
"install_static_ok": "好消息静态IP地址已经配置",
"install_static_error": "AdGuard Home 无法为这个网络接口自动配置它。请参阅如何手动完成此操作的说明。",
"install_static_configure": "我们检测到一个动态IP地址—<0>{{ip}}</0>被使用。您想把它作为您的静态地址吗?",
"confirm_static_ip": "AdGuard Home 将把{{ip}} 配置为您的静态IP地址。您想要继续吗",
"list_updated": "{{count}} 列表已更新",
"list_updated_plural": "{{count}} 条列表已更新",
"dnssec_enable": "启用DNSSEC",
"dnssec_enable_desc": "在发出DNS查询中设置DNSSEC标志并检查结果(需要启用DNSSEC的解析器)",
"validated_with_dnssec": "通过DNSSEC验证",
"all_queries": "所有查询记录",
"show_blocked_responses": "已拦截",
"show_whitelisted_responses": "已列入白名单",
"show_processed_responses": "已处理",
"blocked_safebrowsing": "被安全浏览阻止",
"blocked_adult_websites": "拦截的成人网站",
"blocked_threats": "拦截的威胁",
"allowed": "允许项",
"filtered": "已过滤",
"rewritten": "重写项",
"safe_search": "安全搜索",
"blocklist": "拦截列表",
"milliseconds_abbreviation": "毫秒",
"cache_size": "缓存大小",
"cache_size_desc": "DNS缓存大小 (单位:字节)",
"cache_ttl_min_override": "覆盖最小TTL值",
"cache_ttl_max_override": "覆盖最大TTL值",
"enter_cache_size": "输入缓存大小",
"enter_cache_ttl_min_override": "输入最小TTL值",
"enter_cache_ttl_max_override": "输入最大TTL值",
"cache_ttl_min_override_desc": "覆盖从上游服务器接收到的TTL值 (最小)。这个值不能超过3600秒(1小时)",
"cache_ttl_max_override_desc": "覆盖从上游服务器接收到的TTL值(最大)",
"min_exceeds_max_value": "最小值超过最大值",
"value_not_larger_than": "值不能大于{{maximum}}",
"filter_category_general": "常规",
"filter_category_security": "安全",
"filter_category_regional": "区域",
"filter_category_other": "其它",
"filter_category_general_desc": "在大多数设备上阻止跟踪和广告的列表",
"filter_category_security_desc": "专用于拦截恶意软件、钓鱼或欺诈域名的列表",
"filter_category_regional_desc": "专注于区域广告和跟踪服务器的列表",
"filter_category_other_desc": "其他阻止列表",
"original_response": "原始响应",
"click_to_view_queries": "点击查看查询",
"port_53_faq_link": "53端口常被DNSStubListener或systemdn解析的服务占用。请阅读<0>这份关于如何解决这一问题的说明</0>"
}

View File

@@ -1,255 +1,567 @@
{
"upstream_parallel": "\u900f\u904e\u540c\u6642\u5730\u67e5\u8a62\u6240\u6709\u4e0a\u6e38\u7684\u4f3a\u670d\u5668\uff0c\u4f7f\u7528\u4e26\u884c\u7684\u67e5\u8a62\u4ee5\u52a0\u901f\u89e3\u6790",
"bootstrap_dns": "\u81ea\u6211\u555f\u52d5\uff08Bootstrap\uff09DNS \u4f3a\u670d\u5668",
"bootstrap_dns_desc": "\u81ea\u6211\u555f\u52d5\uff08Bootstrap\uff09DNS\u4f3a\u670d\u5668\u88ab\u7528\u65bc\u89e3\u6790\u60a8\u660e\u78ba\u6307\u5b9a\u4f5c\u70ba\u4e0a\u6e38\u7684DoH\/DoT\u89e3\u6790\u5668\u4e4bIP\u4f4d\u5740\u3002",
"url_added_successfully": "\u7db2\u5740\u88ab\u6210\u529f\u5730\u52a0\u5165",
"check_dhcp_servers": "\u6aa2\u67e5\u52d5\u614b\u4e3b\u6a5f\u8a2d\u5b9a\u5354\u5b9a\uff08DHCP\uff09\u4f3a\u670d\u5668",
"save_config": "\u5132\u5b58\u914d\u7f6e",
"enabled_dhcp": "\u52d5\u614b\u4e3b\u6a5f\u8a2d\u5b9a\u5354\u5b9a\uff08DHCP\uff09\u4f3a\u670d\u5668\u88ab\u555f\u7528",
"disabled_dhcp": "\u52d5\u614b\u4e3b\u6a5f\u8a2d\u5b9a\u5354\u5b9a\uff08DHCP\uff09\u4f3a\u670d\u5668\u88ab\u7981\u7528",
"dhcp_title": "\u52d5\u614b\u4e3b\u6a5f\u8a2d\u5b9a\u5354\u5b9a\uff08DHCP\uff09\u4f3a\u670d\u5668\uff08\u5be6\u9a57\u6027\u7684\uff01\uff09",
"dhcp_description": "\u5982\u679c\u60a8\u7684\u8def\u7531\u5668\u672a\u63d0\u4f9b\u52d5\u614b\u4e3b\u6a5f\u8a2d\u5b9a\u5354\u5b9a\uff08DHCP\uff09\u8a2d\u5b9a\uff0c\u60a8\u53ef\u4f7f\u7528AdGuard\u81ea\u8eab\u5167\u5efa\u7684DHCP\u4f3a\u670d\u5668\u3002",
"dhcp_enable": "\u555f\u7528\u52d5\u614b\u4e3b\u6a5f\u8a2d\u5b9a\u5354\u5b9a\uff08DHCP\uff09\u4f3a\u670d\u5668",
"dhcp_disable": "\u7981\u7528\u52d5\u614b\u4e3b\u6a5f\u8a2d\u5b9a\u5354\u5b9a\uff08DHCP\uff09\u4f3a\u670d\u5668",
"dhcp_not_found": "\u65bc\u8a72\u7db2\u8def\u4e0a\u7121\u73fe\u884c\u7684\u52d5\u614b\u4e3b\u6a5f\u8a2d\u5b9a\u5354\u5b9a\uff08DHCP\uff09\u4f3a\u670d\u5668\u88ab\u767c\u73fe\u3002\u555f\u7528\u5167\u5efa\u7684DHCP\u4f3a\u670d\u5668\u70ba\u5b89\u5168\u7684\u3002",
"dhcp_found": "\u65bc\u8a72\u7db2\u8def\u4e0a\u67d0\u4e9b\u73fe\u884c\u7684\u52d5\u614b\u4e3b\u6a5f\u8a2d\u5b9a\u5354\u5b9a\uff08DHCP\uff09\u4f3a\u670d\u5668\u88ab\u767c\u73fe\u3002\u555f\u7528\u5167\u5efa\u7684DHCP\u4f3a\u670d\u5668\u70ba\u4e0d\u5b89\u5168\u7684\u3002",
"dhcp_leases": "\u52d5\u614b\u4e3b\u6a5f\u8a2d\u5b9a\u5354\u5b9a\uff08DHCP\uff09\u79df\u8cc3",
"dhcp_leases_not_found": "\u7121\u5df2\u767c\u73fe\u4e4b\u52d5\u614b\u4e3b\u6a5f\u8a2d\u5b9a\u5354\u5b9a\uff08DHCP\uff09\u79df\u8cc3",
"dhcp_config_saved": "\u5df2\u5132\u5b58\u52d5\u614b\u4e3b\u6a5f\u8a2d\u5b9a\u5354\u5b9a\uff08DHCP\uff09\u4f3a\u670d\u5668\u914d\u7f6e",
"form_error_required": "\u5fc5\u586b\u7684\u6b04\u4f4d",
"form_error_ip_format": "\u7121\u6548\u7684IPv4\u683c\u5f0f",
"form_error_positive": "\u5fc5\u9808\u5927\u65bc0",
"dhcp_form_gateway_input": "\u9598\u9053 IP",
"dhcp_form_subnet_input": "\u5b50\u7db2\u8def\u906e\u7f69",
"dhcp_form_range_title": "IP \u4f4d\u5740\u7bc4\u570d",
"dhcp_form_range_start": "\u7bc4\u570d\u958b\u59cb",
"dhcp_form_range_end": "\u7bc4\u570d\u7d50\u675f",
"dhcp_form_lease_title": "\u52d5\u614b\u4e3b\u6a5f\u8a2d\u5b9a\u5354\u5b9a\uff08DHCP\uff09\u79df\u8cc3\u6642\u9593\uff08\u4ee5\u79d2\u6578\uff09",
"dhcp_form_lease_input": "\u79df\u8cc3\u6301\u7e8c\u6642\u9593",
"dhcp_interface_select": "\u9078\u64c7\u52d5\u614b\u4e3b\u6a5f\u8a2d\u5b9a\u5354\u5b9a\uff08DHCP\uff09\u4ecb\u9762",
"dhcp_hardware_address": "\u786c\u9ad4\u4f4d\u5740",
"dhcp_ip_addresses": "IP \u4f4d\u5740",
"dhcp_table_hostname": "\u4e3b\u6a5f\u540d\u7a31",
"dhcp_table_expires": "\u5230\u671f",
"dhcp_warning": "\u5982\u679c\u60a8\u60f3\u8981\u555f\u7528\u5167\u5efa\u7684\u52d5\u614b\u4e3b\u6a5f\u8a2d\u5b9a\u5354\u5b9a\uff08DHCP\uff09\u4f3a\u670d\u5668\uff0c\u78ba\u4fdd\u7121\u5176\u5b83\u73fe\u884c\u7684DHCP\u4f3a\u670d\u5668\u3002\u5426\u5247\uff0c\u5b83\u53ef\u80fd\u6703\u7834\u58de\u4f9b\u5df2\u9023\u7dda\u7684\u88dd\u7f6e\u4e4b\u7db2\u969b\u7db2\u8def\uff01",
"back": "\u8fd4\u56de",
"dashboard": "\u5100\u8868\u677f",
"settings": "\u8a2d\u5b9a",
"filters": "\u904e\u6ffe\u5668",
"query_log": "\u67e5\u8a62\u8a18\u9304",
"faq": "\u5e38\u898b\u554f\u7b54\u96c6",
"version": "\u7248\u672c",
"address": "\u4f4d\u5740",
"on": "\u958b\u8457",
"off": "\u95dc\u8457",
"copyright": "\u7248\u6b0a",
"homepage": "\u9996\u9801",
"report_an_issue": "\u5831\u544a\u554f\u984c",
"enable_protection": "\u555f\u7528\u9632\u8b77",
"enabled_protection": "\u5df2\u555f\u7528\u9632\u8b77",
"disable_protection": "\u7981\u7528\u9632\u8b77",
"disabled_protection": "\u5df2\u7981\u7528\u9632\u8b77",
"refresh_statics": "\u91cd\u65b0\u6574\u7406\u7d71\u8a08\u8cc7\u6599",
"dns_query": "DNS \u67e5\u8a62",
"blocked_by": "\u5df2\u88ab\u904e\u6ffe\u5668\u5c01\u9396",
"stats_malware_phishing": "\u5df2\u5c01\u9396\u7684\u60e1\u610f\u8edf\u9ad4\/\u7db2\u8def\u91e3\u9b5a",
"stats_adult": "\u5df2\u5c01\u9396\u7684\u6210\u4eba\u7db2\u7ad9",
"stats_query_domain": "\u71b1\u9580\u5df2\u67e5\u8a62\u7684\u7db2\u57df",
"for_last_24_hours": "\u5728\u6700\u8fd1\u768424\u5c0f\u6642\u5167",
"no_domains_found": "\u7121\u5df2\u767c\u73fe\u4e4b\u7db2\u57df",
"requests_count": "\u8acb\u6c42\u7e3d\u6578",
"top_blocked_domains": "\u71b1\u9580\u5df2\u5c01\u9396\u7684\u7db2\u57df",
"top_clients": "\u71b1\u9580\u7528\u6236\u7aef",
"no_clients_found": "\u7121\u5df2\u767c\u73fe\u4e4b\u7528\u6236\u7aef",
"general_statistics": "\u4e00\u822c\u7684\u7d71\u8a08\u8cc7\u6599",
"number_of_dns_query_24_hours": "\u5728\u6700\u8fd1\u768424\u5c0f\u6642\u5167\u5df2\u8655\u7406\u7684DNS\u67e5\u8a62\u4e4b\u6578\u91cf",
"number_of_dns_query_blocked_24_hours": "\u5df2\u88ab\u5ee3\u544a\u5c01\u9396\u904e\u6ffe\u5668\u548c\u4e3b\u6a5f\u5c01\u9396\u6e05\u55ae\u5c01\u9396\u7684DNS\u8acb\u6c42\u4e4b\u6578\u91cf",
"number_of_dns_query_blocked_24_hours_by_sec": "\u5df2\u88abAdGuard\u700f\u89bd\u5b89\u5168\u6a21\u7d44\u5c01\u9396\u7684DNS\u8acb\u6c42\u4e4b\u6578\u91cf",
"number_of_dns_query_blocked_24_hours_adult": "\u5df2\u5c01\u9396\u7684\u6210\u4eba\u7db2\u7ad9\u4e4b\u6578\u91cf",
"enforced_save_search": "\u5df2\u5f37\u5236\u57f7\u884c\u7684\u5b89\u5168\u641c\u5c0b",
"number_of_dns_query_to_safe_search": "\u5c0d\u65bc\u90a3\u4e9b\u5b89\u5168\u641c\u5c0b\u5df2\u88ab\u5f37\u5236\u57f7\u884c\u4e4b\u5c6c\u65bc\u641c\u5c0b\u5f15\u64ce\u7684DNS\u8acb\u6c42\u4e4b\u6578\u91cf",
"average_processing_time": "\u5e73\u5747\u7684\u8655\u7406\u6642\u9593",
"average_processing_time_hint": "\u65bc\u8655\u7406\u4e00\u9805DNS\u8acb\u6c42\u4e0a\u4ee5\u6beb\u79d2\uff08ms\uff09\u8a08\u4e4b\u5e73\u5747\u7684\u6642\u9593",
"block_domain_use_filters_and_hosts": "\u900f\u904e\u904e\u6ffe\u5668\u548c\u4e3b\u6a5f\u6a94\u6848\u5c01\u9396\u7db2\u57df",
"filters_block_toggle_hint": "\u60a8\u53ef\u5728<a href='#filters'>\u904e\u6ffe\u5668<\/a>\u8a2d\u5b9a\u4e2d\u8a2d\u7f6e\u5c01\u9396\u898f\u5247\u3002",
"use_adguard_browsing_sec": "\u4f7f\u7528AdGuard\u700f\u89bd\u5b89\u5168\u7db2\u8def\u670d\u52d9",
"use_adguard_browsing_sec_hint": "AdGuard Home\u5c07\u6aa2\u67e5\u7db2\u57df\u662f\u5426\u88ab\u700f\u89bd\u5b89\u5168\u7db2\u8def\u670d\u52d9\u5217\u5165\u9ed1\u540d\u55ae\u3002\u5b83\u5c07\u4f7f\u7528\u53cb\u597d\u7684\u96b1\u79c1\u67e5\u627e\u61c9\u7528\u7a0b\u5f0f\u4ecb\u9762\uff08API\uff09\u4ee5\u57f7\u884c\u6aa2\u67e5\uff1a\u50c5\u57df\u540dSHA256\u96dc\u6e4a\u7684\u77ed\u524d\u7db4\u88ab\u50b3\u9001\u5230\u4f3a\u670d\u5668\u3002",
"use_adguard_parental": "\u4f7f\u7528AdGuard\u5bb6\u9577\u76e3\u63a7\u4e4b\u7db2\u8def\u670d\u52d9",
"use_adguard_parental_hint": "AdGuard Home\u5c07\u6aa2\u67e5\u7db2\u57df\u662f\u5426\u5305\u542b\u6210\u4eba\u8cc7\u6599\u3002\u5b83\u4f7f\u7528\u5982\u540c\u700f\u89bd\u5b89\u5168\u7db2\u8def\u670d\u52d9\u4e00\u6a23\u4e4b\u53cb\u597d\u7684\u96b1\u79c1\u61c9\u7528\u7a0b\u5f0f\u4ecb\u9762\uff08API\uff09\u3002",
"enforce_safe_search": "\u5f37\u5236\u57f7\u884c\u5b89\u5168\u641c\u5c0b",
"enforce_save_search_hint": "AdGuard Home\u53ef\u5728\u4e0b\u5217\u7684\u641c\u5c0b\u5f15\u64ce\uff1aGoogle\u3001YouTube\u3001Bing\u548cYandex\u4e2d\u5f37\u5236\u57f7\u884c\u5b89\u5168\u641c\u5c0b\u3002",
"no_servers_specified": "\u7121\u5df2\u660e\u78ba\u6307\u5b9a\u7684\u4f3a\u670d\u5668",
"no_settings": "\u7121\u8a2d\u5b9a",
"general_settings": "\u4e00\u822c\u7684\u8a2d\u5b9a",
"upstream_dns": "\u4e0a\u6e38\u7684DNS\u4f3a\u670d\u5668",
"upstream_dns_hint": "\u5982\u679c\u60a8\u5c07\u8a72\u6b04\u4f4d\u7559\u7a7a\uff0cAdGuard Home\u5c07\u4f7f\u7528<a href='https:\/\/1.1.1.1\/' target='_blank'>Cloudflare DNS<\/a>\u4f5c\u70ba\u4e0a\u6e38\u3002",
"test_upstream_btn": "\u6e2c\u8a66\u4e0a\u884c\u8cc7\u6599\u6d41",
"apply_btn": "\u5957\u7528",
"disabled_filtering_toast": "\u5df2\u7981\u7528\u904e\u6ffe",
"enabled_filtering_toast": "\u5df2\u555f\u7528\u904e\u6ffe",
"disabled_safe_browsing_toast": "\u5df2\u7981\u7528\u5b89\u5168\u700f\u89bd",
"enabled_safe_browsing_toast": "\u5df2\u555f\u7528\u5b89\u5168\u700f\u89bd",
"disabled_parental_toast": "\u5df2\u7981\u7528\u5bb6\u9577\u76e3\u63a7",
"enabled_parental_toast": "\u5df2\u555f\u7528\u5bb6\u9577\u76e3\u63a7",
"disabled_safe_search_toast": "\u5df2\u7981\u7528\u5b89\u5168\u641c\u5c0b",
"enabled_save_search_toast": "\u5df2\u555f\u7528\u5b89\u5168\u641c\u5c0b",
"enabled_table_header": "\u5df2\u555f\u7528\u7684",
"name_table_header": "\u540d\u7a31",
"filter_url_table_header": "\u904e\u6ffe\u5668\u7db2\u5740",
"rules_count_table_header": "\u898f\u5247\u7e3d\u6578",
"last_time_updated_table_header": "\u6700\u8fd1\u7684\u66f4\u65b0\u6642\u9593",
"actions_table_header": "\u884c\u52d5",
"delete_table_action": "\u522a\u9664",
"filters_and_hosts": "\u904e\u6ffe\u5668\u548c\u4e3b\u6a5f\u5c01\u9396\u6e05\u55ae",
"filters_and_hosts_hint": "AdGuard Home\u61c2\u5f97\u57fa\u672c\u7684\u5ee3\u544a\u5c01\u9396\u898f\u5247\u548c\u4e3b\u6a5f\u6a94\u6848\u8a9e\u6cd5\u3002",
"no_filters_added": "\u7121\u5df2\u52a0\u5165\u7684\u904e\u6ffe\u5668",
"add_filter_btn": "\u589e\u52a0\u904e\u6ffe\u5668",
"cancel_btn": "\u53d6\u6d88",
"enter_name_hint": "\u8f38\u5165\u540d\u7a31",
"enter_url_hint": "\u8f38\u5165\u7db2\u5740",
"check_updates_btn": "\u6aa2\u67e5\u66f4\u65b0",
"new_filter_btn": "\u65b0\u7684\u904e\u6ffe\u5668\u8a02\u95b1",
"enter_valid_filter_url": "\u8f38\u5165\u95dc\u65bc\u904e\u6ffe\u5668\u8a02\u95b1\u6216\u4e3b\u6a5f\u6a94\u6848\u4e4b\u6709\u6548\u7684\u7db2\u5740\u3002",
"custom_filter_rules": "\u81ea\u8a02\u7684\u904e\u6ffe\u898f\u5247",
"custom_filter_rules_hint": "\u65bc\u4e00\u884c\u4e0a\u8f38\u5165\u4e00\u500b\u898f\u5247\u3002\u60a8\u53ef\u4f7f\u7528\u5ee3\u544a\u5c01\u9396\u898f\u5247\u6216\u4e3b\u6a5f\u6a94\u6848\u8a9e\u6cd5\u3002",
"examples_title": "\u7bc4\u4f8b",
"example_meaning_filter_block": "\u5c01\u9396\u81f3example.org\u7db2\u57df\u53ca\u5176\u6240\u6709\u7684\u5b50\u7db2\u57df\u4e4b\u5b58\u53d6",
"example_meaning_filter_whitelist": "\u89e3\u9664\u5c01\u9396\u81f3example.org\u7db2\u57df\u53ca\u5176\u6240\u6709\u7684\u5b50\u7db2\u57df\u4e4b\u5b58\u53d6",
"example_meaning_host_block": "AdGuard Home\u73fe\u5728\u5c07\u5c0dexample.org\u7db2\u57df\u8fd4\u56de127.0.0.1\u4f4d\u5740\uff08\u4f46\u975e\u5176\u5b50\u7db2\u57df\uff09\u3002",
"example_comment": "! \u770b\uff0c\u4e00\u500b\u8a3b\u89e3",
"example_comment_meaning": "\u53ea\u662f\u4e00\u500b\u8a3b\u89e3",
"example_comment_hash": "# \u4e5f\u662f\u4e00\u500b\u8a3b\u89e3",
"example_regex_meaning": "\u5c01\u9396\u81f3\u8207\u5df2\u660e\u78ba\u6307\u5b9a\u7684\u898f\u5247\u904b\u7b97\u5f0f\uff08Regular Expression\uff09\u76f8\u7b26\u7684\u7db2\u57df\u4e4b\u5b58\u53d6",
"example_upstream_regular": "\u4e00\u822c\u7684 DNS\uff08\u900f\u904eUDP\uff09",
"example_upstream_dot": "\u52a0\u5bc6\u7684 <0>DNS-over-TLS<\/0>",
"example_upstream_doh": "\u52a0\u5bc6\u7684 <0>DNS-over-HTTPS <\/0>",
"example_upstream_sdns": "\u60a8\u53ef\u4f7f\u7528\u95dc\u65bc <0>DNSCrypt<\/0> \u6216 <1>DNS-over-HTTPS<\/1> \u89e3\u6790\u5668\u4e4b <2>DNS \u6233\u8a18<\/2>",
"example_upstream_tcp": "\u4e00\u822c\u7684 DNS\uff08\u900f\u904eTCP\uff09",
"all_filters_up_to_date_toast": "\u6240\u6709\u7684\u904e\u6ffe\u5668\u5df2\u662f\u6700\u65b0\u7684",
"updated_upstream_dns_toast": "\u5df2\u66f4\u65b0\u4e0a\u6e38\u7684DNS\u4f3a\u670d\u5668",
"dns_test_ok_toast": "\u5df2\u660e\u78ba\u6307\u5b9a\u7684DNS\u4f3a\u670d\u5668\u6b63\u5728\u6b63\u78ba\u5730\u904b\u4f5c",
"dns_test_not_ok_toast": "\u4f3a\u670d\u5668 \"{{key}}\"\uff1a\u7121\u6cd5\u88ab\u4f7f\u7528\uff0c\u8acb\u6aa2\u67e5\u60a8\u5df2\u6b63\u78ba\u5730\u586b\u5beb\u5b83",
"unblock_btn": "\u89e3\u9664\u5c01\u9396",
"block_btn": "\u5c01\u9396",
"time_table_header": "\u6642\u9593",
"domain_name_table_header": "\u57df\u540d",
"type_table_header": "\u985e\u578b",
"response_table_header": "\u56de\u61c9",
"client_table_header": "\u7528\u6236\u7aef",
"empty_response_status": "\u7a7a\u767d\u7684",
"show_all_filter_type": "\u986f\u793a\u5168\u90e8",
"show_filtered_type": "\u986f\u793a\u5df2\u904e\u6ffe\u7684",
"no_logs_found": "\u7121\u5df2\u767c\u73fe\u4e4b\u8a18\u9304",
"disabled_log_btn": "\u7981\u7528\u8a18\u9304",
"download_log_file_btn": "\u4e0b\u8f09\u8a18\u9304\u6a94\u6848",
"refresh_btn": "\u91cd\u65b0\u6574\u7406",
"enabled_log_btn": "\u555f\u7528\u8a18\u9304",
"last_dns_queries": "\u6700\u8fd1\u76845000\u7b46DNS\u67e5\u8a62",
"previous_btn": "\u4e0a\u4e00\u9801",
"next_btn": "\u4e0b\u4e00\u9801",
"loading_table_status": "\u6b63\u5728\u8f09\u5165...",
"page_table_footer_text": "\u9801\u9762",
"of_table_footer_text": "\u4e4b",
"rows_table_footer_text": "\u5217",
"updated_custom_filtering_toast": "\u5df2\u66f4\u65b0\u81ea\u8a02\u7684\u904e\u6ffe\u898f\u5247",
"rule_removed_from_custom_filtering_toast": "\u898f\u5247\u5f9e\u81ea\u8a02\u7684\u904e\u6ffe\u898f\u5247\u4e2d\u88ab\u79fb\u9664",
"rule_added_to_custom_filtering_toast": "\u898f\u5247\u88ab\u52a0\u81f3\u81ea\u8a02\u7684\u904e\u6ffe\u898f\u5247\u4e2d",
"query_log_disabled_toast": "\u67e5\u8a62\u8a18\u9304\u88ab\u7981\u7528",
"query_log_enabled_toast": "\u67e5\u8a62\u8a18\u9304\u88ab\u555f\u7528",
"source_label": "\u4f86\u6e90",
"found_in_known_domain_db": "\u5728\u5df2\u77e5\u7684\u57df\u540d\u8cc7\u6599\u5eab\u4e2d\u88ab\u767c\u73fe\u3002",
"category_label": "\u985e\u5225",
"rule_label": "\u898f\u5247",
"filter_label": "\u904e\u6ffe\u5668",
"unknown_filter": "\u672a\u77e5\u7684\u904e\u6ffe\u5668 {{filterId}}",
"install_welcome_title": "\u6b61\u8fce\u81f3AdGuard Home\uff01",
"install_welcome_desc": "AdGuard Home\u662f\u5168\u7db2\u8def\u7bc4\u570d\u5ee3\u544a\u548c\u8ffd\u8e64\u5668\u5c01\u9396\u7684DNS\u4f3a\u670d\u5668\u3002\u5b83\u7684\u76ee\u7684\u70ba\u8b93\u60a8\u63a7\u5236\u60a8\u6574\u500b\u7684\u7db2\u8def\u548c\u6240\u6709\u60a8\u7684\u88dd\u7f6e\uff0c\u4e14\u4e0d\u9700\u8981\u4f7f\u7528\u7528\u6236\u7aef\u7a0b\u5f0f\u3002",
"install_settings_title": "\u7ba1\u7406\u54e1\u7db2\u9801\u4ecb\u9762",
"install_settings_listen": "\u76e3\u807d\u4ecb\u9762",
"install_settings_port": "\u9023\u63a5\u57e0",
"install_settings_interface_link": "\u60a8\u7684AdGuard Home\u7ba1\u7406\u54e1\u7db2\u9801\u4ecb\u9762\u5c07\u65bc\u4e0b\u5217\u7684\u4f4d\u5740\u4e0a\u70ba\u53ef\u7528\u7684\uff1a",
"form_error_port": "\u8f38\u5165\u6709\u6548\u7684\u9023\u63a5\u57e0\u503c",
"install_settings_dns": "DNS \u4f3a\u670d\u5668",
"install_settings_dns_desc": "\u60a8\u5c07\u9700\u8981\u914d\u7f6e\u60a8\u7684\u88dd\u7f6e\u6216\u8def\u7531\u5668\u4ee5\u4f7f\u7528\u65bc\u4e0b\u5217\u7684\u4f4d\u5740\u4e0a\u4e4bDNS\u4f3a\u670d\u5668\uff1a",
"install_settings_all_interfaces": "\u6240\u6709\u7684\u4ecb\u9762",
"install_auth_title": "\u9a57\u8b49",
"install_auth_desc": "\u88ab\u975e\u5e38\u5efa\u8b70\u914d\u7f6e\u5c6c\u65bc\u60a8\u7684AdGuard Home\u7ba1\u7406\u54e1\u7db2\u9801\u4ecb\u9762\u4e4b\u5bc6\u78bc\u9a57\u8b49\u3002\u5373\u4f7f\u5b83\u50c5\u5728\u60a8\u7684\u5340\u57df\u7db2\u8def\u4e2d\u70ba\u53ef\u5b58\u53d6\u7684\uff0c\u8b93\u5b83\u53d7\u4fdd\u8b77\u514d\u65bc\u4e0d\u53d7\u9650\u5236\u7684\u5b58\u53d6\u70ba\u4ecd\u7136\u91cd\u8981\u7684\u3002",
"install_auth_username": "\u7528\u6236\u540d",
"install_auth_password": "\u5bc6\u78bc",
"install_auth_confirm": "\u78ba\u8a8d\u5bc6\u78bc",
"install_auth_username_enter": "\u8f38\u5165\u7528\u6236\u540d",
"install_auth_password_enter": "\u8f38\u5165\u5bc6\u78bc",
"install_step": "\u6b65\u9a5f",
"install_devices_title": "\u914d\u7f6e\u60a8\u7684\u88dd\u7f6e",
"install_devices_desc": "\u70ba\u4f7fAdGuard Home\u958b\u59cb\u904b\u4f5c\uff0c\u60a8\u9700\u8981\u914d\u7f6e\u60a8\u7684\u88dd\u7f6e\u4ee5\u4f7f\u7528\u5b83\u3002",
"install_submit_title": "\u606d\u559c\uff01",
"install_submit_desc": "\u8a72\u8a2d\u7f6e\u7a0b\u5e8f\u88ab\u5b8c\u6210\uff0c\u4e14\u60a8\u6e96\u5099\u597d\u958b\u59cb\u4f7f\u7528AdGuard Home\u3002",
"install_devices_router": "\u8def\u7531\u5668",
"install_devices_router_desc": "\u8a72\u8a2d\u7f6e\u5c07\u81ea\u52d5\u5730\u6db5\u84cb\u88ab\u9023\u7dda\u81f3\u60a8\u7684\u5bb6\u5ead\u8def\u7531\u5668\u4e4b\u6240\u6709\u7684\u88dd\u7f6e\uff0c\u4e14\u60a8\u5c07\u7121\u9700\u624b\u52d5\u5730\u914d\u7f6e\u5b83\u5011\u6bcf\u500b\u3002",
"install_devices_address": "AdGuard Home DNS\u4f3a\u670d\u5668\u6b63\u5728\u76e3\u807d\u4e0b\u5217\u7684\u4f4d\u5740",
"install_devices_router_list_1": "\u958b\u555f\u95dc\u65bc\u60a8\u7684\u8def\u7531\u5668\u4e4b\u504f\u597d\u8a2d\u5b9a\u3002\u901a\u5e38\u5730\uff0c\u60a8\u53ef\u900f\u904e\u7db2\u5740\uff08\u5982 http:\/\/192.168.0.1\/ \u6216 http:\/\/192.168.1.1\/\uff09\u5f9e\u60a8\u7684\u700f\u89bd\u5668\u4e2d\u5b58\u53d6\u5b83\u3002\u60a8\u53ef\u80fd\u88ab\u8981\u6c42\u8f38\u5165\u8a72\u5bc6\u78bc\u3002\u5982\u679c\u60a8\u4e0d\u8a18\u5f97\u5b83\uff0c\u60a8\u7d93\u5e38\u53ef\u900f\u904e\u6309\u58d3\u65bc\u8a72\u8def\u7531\u5668\u672c\u8eab\u4e0a\u7684\u6309\u9215\u4f86\u91cd\u7f6e\u5bc6\u78bc\u3002\u67d0\u4e9b\u8def\u7531\u5668\u9700\u8981\u7279\u5b9a\u7684\u61c9\u7528\u7a0b\u5f0f\uff0c\u65e2\u7136\u5982\u6b64\u5176\u61c9\u5df2\u88ab\u5b89\u88dd\u65bc\u60a8\u7684\u96fb\u8166\/\u624b\u6a5f\u4e0a\u3002",
"install_devices_router_list_2": "\u627e\u5230DHCP\/DNS\u8a2d\u5b9a\u3002\u5c0b\u627e\u7dca\u9130\u8457\u5141\u8a31\u5169\u7d44\u6216\u4e09\u7d44\u6578\u5b57\u96c6\u7684\u6b04\u4f4d\u4e4bDNS\u5b57\u6bcd\uff0c\u6bcf\u7d44\u88ab\u62c6\u6210\u56db\u500b\u542b\u6709\u4e00\u81f3\u4e09\u500b\u6578\u5b57\u7684\u7fa4\u96c6\u3002",
"install_devices_router_list_3": "\u5728\u90a3\u88e1\u8f38\u5165\u60a8\u7684AdGuard Home\u4f3a\u670d\u5668\u4f4d\u5740\u3002",
"install_devices_windows_list_1": "\u901a\u904e\u958b\u59cb\u529f\u80fd\u8868\u6216Windows \u641c\u5c0b\uff0c\u958b\u555f\u63a7\u5236\u53f0\u3002",
"install_devices_windows_list_2": "\u53bb\u7db2\u8def\u548c\u7db2\u969b\u7db2\u8def\u985e\u5225\uff0c\u7136\u5f8c\u53bb\u7db2\u8def\u548c\u5171\u7528\u4e2d\u5fc3\u3002",
"install_devices_windows_list_3": "\u65bc\u756b\u9762\u4e4b\u5de6\u5074\u4e0a\u627e\u5230\u8b8a\u66f4\u4ecb\u9762\u5361\u8a2d\u5b9a\u4e26\u65bc\u5b83\u4e0a\u9ede\u64ca\u3002",
"install_devices_windows_list_4": "\u9078\u64c7\u60a8\u73fe\u884c\u7684\u9023\u7dda\uff0c\u65bc\u5b83\u4e0a\u9ede\u64ca\u6ed1\u9f20\u53f3\u9375\uff0c\u7136\u5f8c\u9078\u64c7\u5167\u5bb9\u3002",
"install_devices_windows_list_5": "\u5728\u6e05\u55ae\u4e2d\u627e\u5230\u7db2\u969b\u7db2\u8def\u901a\u8a0a\u5354\u5b9a\u7b2c 4 \u7248\uff08TCP\/IPv4\uff09\uff0c\u9078\u64c7\u5b83\uff0c\u7136\u5f8c\u518d\u6b21\u65bc\u5167\u5bb9\u4e0a\u9ede\u64ca\u3002",
"install_devices_windows_list_6": "\u9078\u64c7\u4f7f\u7528\u4e0b\u5217\u7684DNS\u4f3a\u670d\u5668\u4f4d\u5740\uff0c\u7136\u5f8c\u8f38\u5165\u60a8\u7684AdGuard Home\u4f3a\u670d\u5668\u4f4d\u5740\u3002",
"install_devices_macos_list_1": "\u65bcApple\u5716\u50cf\u4e0a\u9ede\u64ca\uff0c\u7136\u5f8c\u53bb\u7cfb\u7d71\u504f\u597d\u8a2d\u5b9a\u3002",
"install_devices_macos_list_2": "\u65bc\u7db2\u8def\u4e0a\u9ede\u64ca\u3002",
"install_devices_macos_list_3": "\u9078\u64c7\u5728\u60a8\u7684\u6e05\u55ae\u4e2d\u4e4b\u9996\u8981\u7684\u9023\u7dda\uff0c\u7136\u5f8c\u9ede\u64ca\u9032\u968e\u7684\u3002",
"install_devices_macos_list_4": "\u9078\u64c7\u8a72DNS\u5206\u9801\uff0c\u7136\u5f8c\u8f38\u5165\u60a8\u7684AdGuard Home\u4f3a\u670d\u5668\u4f4d\u5740\u3002",
"install_devices_android_list_1": "\u5f9eAndroid\u9078\u55ae\u4e3b\u756b\u9762\u4e2d\uff0c\u8f15\u89f8\u8a2d\u5b9a\u3002",
"install_devices_android_list_2": "\u65bc\u8a72\u9078\u55ae\u4e0a\u8f15\u89f8Wi-Fi\u3002\u6b63\u5728\u5217\u51fa\u6240\u6709\u53ef\u7528\u7684\u7db2\u8def\u4e4b\u756b\u9762\u5c07\u88ab\u986f\u793a\uff08\u4e0d\u53ef\u80fd\u70ba\u884c\u52d5\u9023\u7dda\u8a2d\u5b9a\u81ea\u8a02\u7684DNS\uff09\u3002",
"install_devices_android_list_3": "\u9577\u6309\u60a8\u6240\u9023\u7dda\u81f3\u7684\u7db2\u8def\uff0c\u7136\u5f8c\u8f15\u89f8\u4fee\u6539\u7db2\u8def\u3002",
"install_devices_android_list_4": "\u65bc\u67d0\u4e9b\u88dd\u7f6e\u4e0a\uff0c\u60a8\u53ef\u80fd\u9700\u8981\u6aa2\u67e5\u95dc\u65bc\u9032\u968e\u7684\u65b9\u6846\u4ee5\u67e5\u770b\u9032\u4e00\u6b65\u7684\u8a2d\u5b9a\u3002\u70ba\u4e86\u8abf\u6574\u60a8\u7684Android DNS\u8a2d\u5b9a\uff0c\u60a8\u5c07\u9700\u8981\u628aIP \u8a2d\u5b9a\u5f9eDHCP\u8f49\u63db\u6210\u975c\u614b\u3002",
"install_devices_android_list_5": "\u4f7f\u8a2d\u5b9aDNS 1\u548cDNS 2\u503c\u66f4\u6539\u6210\u60a8\u7684AdGuard Home\u4f3a\u670d\u5668\u4f4d\u5740\u3002",
"install_devices_ios_list_1": "\u5f9e\u4e3b\u756b\u9762\u4e2d\uff0c\u8f15\u89f8\u8a2d\u5b9a\u3002",
"install_devices_ios_list_2": "\u5728\u5de6\u5074\u7684\u9078\u55ae\u4e2d\u9078\u64c7Wi-Fi\uff08\u4e0d\u53ef\u80fd\u70ba\u884c\u52d5\u7db2\u8def\u914d\u7f6eDNS\uff09\u3002",
"install_devices_ios_list_3": "\u65bc\u76ee\u524d\u73fe\u884c\u7684\u7db2\u8def\u4e4b\u540d\u7a31\u4e0a\u8f15\u89f8\u3002",
"install_devices_ios_list_4": "\u5728\u8a72DNS\u6b04\u4f4d\u4e2d\uff0c\u8f38\u5165\u60a8\u7684AdGuard Home\u4f3a\u670d\u5668\u4f4d\u5740\u3002",
"get_started": "\u958b\u59cb\u5427",
"next": "\u4e0b\u4e00\u6b65",
"open_dashboard": "\u958b\u555f\u5100\u8868\u677f",
"install_saved": "\u5df2\u6210\u529f\u5730\u5132\u5b58",
"encryption_title": "\u52a0\u5bc6",
"encryption_desc": "\u52a0\u5bc6\uff08HTTPS\/TLS\uff09\u652f\u63f4\u4f9bDNS\u548c\u7ba1\u7406\u54e1\u7db2\u9801\u4ecb\u9762\u5169\u8005",
"encryption_config_saved": "\u52a0\u5bc6\u914d\u7f6e\u5df2\u88ab\u5132\u5b58",
"encryption_server": "\u4f3a\u670d\u5668\u540d\u7a31",
"encryption_server_enter": "\u8f38\u5165\u60a8\u7684\u57df\u540d",
"encryption_server_desc": "\u70ba\u4e86\u4f7f\u7528HTTPS\uff0c\u60a8\u9700\u8981\u8f38\u5165\u8207\u60a8\u7684\u5b89\u5168\u901a\u8a0a\u7aef\u5c64\uff08SSL\uff09\u6191\u8b49\u76f8\u7b26\u7684\u4f3a\u670d\u5668\u540d\u7a31\u3002",
"encryption_redirect": "\u81ea\u52d5\u5730\u91cd\u5b9a\u5411\u5230HTTPS",
"encryption_redirect_desc": "\u5982\u679c\u88ab\u52fe\u9078\uff0cAdGuard Home\u5c07\u81ea\u52d5\u5730\u91cd\u5b9a\u5411\u60a8\u5f9eHTTP\u5230HTTPS\u4f4d\u5740\u3002",
"encryption_https": "HTTPS \u9023\u63a5\u57e0",
"encryption_https_desc": "\u5982\u679cHTTPS\u9023\u63a5\u57e0\u88ab\u914d\u7f6e\uff0cAdGuard Home\u7ba1\u7406\u54e1\u4ecb\u9762\u900f\u904eHTTPS\u5c07\u70ba\u53ef\u5b58\u53d6\u7684\uff0c\u4e14\u5b83\u4e5f\u5c07\u65bc '\/dns-query' \u4f4d\u7f6e\u4e0a\u63d0\u4f9bDNS-over-HTTPS\u3002",
"encryption_dot": "DNS-over-TLS \u9023\u63a5\u57e0",
"encryption_dot_desc": "\u5982\u679c\u8a72\u9023\u63a5\u57e0\u88ab\u914d\u7f6e\uff0cAdGuard Home\u5c07\u65bc\u6b64\u9023\u63a5\u57e0\u4e0a\u904b\u884cDNS-over-TLS\u4f3a\u670d\u5668\u3002",
"encryption_certificates": "\u6191\u8b49",
"encryption_certificates_desc": "\u70ba\u4e86\u4f7f\u7528\u52a0\u5bc6\uff0c\u60a8\u9700\u8981\u63d0\u4f9b\u6709\u6548\u7684\u5b89\u5168\u901a\u8a0a\u7aef\u5c64\uff08SSL\uff09\u6191\u8b49\u93c8\u7d50\u4f9b\u60a8\u7684\u7db2\u57df\u3002\u65bc <0>{{link}}<\/0> \u4e0a\u60a8\u53ef\u53d6\u5f97\u514d\u8cbb\u7684\u6191\u8b49\u6216\u60a8\u53ef\u5f9e\u53d7\u4fe1\u4efb\u7684\u6191\u8b49\u6388\u6b0a\u55ae\u4f4d\u4e4b\u4e00\u8cfc\u8cb7\u5b83\u3002",
"encryption_certificates_input": "\u65bc\u6b64\u8907\u88fd\/\u8cbc\u4e0a\u60a8\u7684\u96b1\u79c1\u589e\u5f37\u90f5\u4ef6\u7de8\u78bc\u4e4b\uff08PEM-encoded\uff09\u6191\u8b49\u3002",
"encryption_status": "\u72c0\u614b",
"encryption_expire": "\u5230\u671f",
"encryption_key": "\u79c1\u5bc6\u91d1\u9470",
"encryption_key_input": "\u65bc\u6b64\u8907\u88fd\/\u8cbc\u4e0a\u60a8\u7684\u96b1\u79c1\u589e\u5f37\u90f5\u4ef6\u7de8\u78bc\u4e4b\uff08PEM-encoded\uff09\u79c1\u5bc6\u91d1\u9470\u4f9b\u60a8\u7684\u6191\u8b49\u3002",
"encryption_enable": "\u555f\u7528\u52a0\u5bc6\uff08HTTPS\u3001DNS-over-HTTPS\u548cDNS-over-TLS\uff09",
"encryption_enable_desc": "\u5982\u679c\u52a0\u5bc6\u88ab\u555f\u7528\uff0cAdGuard Home\u7ba1\u7406\u54e1\u4ecb\u9762\u900f\u904eHTTPS\u5c07\u904b\u4f5c\uff0c\u4e14\u8a72DNS\u4f3a\u670d\u5668\u5c07\u7559\u5fc3\u76e3\u807d\u900f\u904eDNS-over-HTTPS\u548cDNS-over-TLS\u4e4b\u8acb\u6c42\u3002",
"encryption_chain_valid": "\u6191\u8b49\u93c8\u7d50\u70ba\u6709\u6548\u7684",
"encryption_chain_invalid": "\u6191\u8b49\u93c8\u7d50\u70ba\u7121\u6548\u7684",
"encryption_key_valid": "\u6b64\u70ba\u6709\u6548\u7684 {{type}} \u79c1\u5bc6\u91d1\u9470",
"encryption_key_invalid": "\u6b64\u70ba\u7121\u6548\u7684 {{type}} \u79c1\u5bc6\u91d1\u9470",
"encryption_subject": "\u7269\u4ef6",
"encryption_issuer": "\u7c3d\u767c\u8005",
"encryption_hostnames": "\u4e3b\u6a5f\u540d\u7a31",
"encryption_reset": "\u60a8\u78ba\u5b9a\u60a8\u60f3\u8981\u91cd\u7f6e\u52a0\u5bc6\u8a2d\u5b9a\u55ce\uff1f",
"topline_expiring_certificate": "\u60a8\u7684\u5b89\u5168\u901a\u8a0a\u7aef\u5c64\uff08SSL\uff09\u6191\u8b49\u5373\u5c07\u5230\u671f\u3002\u66f4\u65b0<0>\u52a0\u5bc6\u8a2d\u5b9a<\/0>\u3002",
"topline_expired_certificate": "\u60a8\u7684\u5b89\u5168\u901a\u8a0a\u7aef\u5c64\uff08SSL\uff09\u6191\u8b49\u70ba\u5df2\u5230\u671f\u7684\u3002\u66f4\u65b0<0>\u52a0\u5bc6\u8a2d\u5b9a<\/0>\u3002",
"form_error_port_range": "\u572880-65535\u4e4b\u7bc4\u570d\u5167\u8f38\u5165\u9023\u63a5\u57e0\u503c",
"form_error_port_unsafe": "\u6b64\u70ba\u4e0d\u5b89\u5168\u7684\u9023\u63a5\u57e0",
"form_error_equal": "\u4e0d\u61c9\u70ba\u76f8\u7b49\u7684",
"form_error_password": "\u4e0d\u76f8\u7b26\u7684\u5bc6\u78bc",
"reset_settings": "\u91cd\u7f6e\u8a2d\u5b9a",
"update_announcement": "AdGuard Home {{version}} \u73fe\u70ba\u53ef\u7528\u7684\uff01\u95dc\u65bc\u66f4\u591a\u7684\u8cc7\u8a0a\uff0c<0>\u9ede\u64ca\u9019\u88e1<\/0>\u3002",
"setup_guide": "\u5b89\u88dd\u6307\u5357",
"dns_addresses": "DNS \u4f4d\u5740"
"client_settings": "用戶端設定",
"example_upstream_reserved": "您可明確指定<0>用於特定的網域</0>之 DNS 上游",
"upstream_parallel": "透過同時地查詢所有上游的伺服器,使用並行的查詢以加速解析網域",
"parallel_requests": "並行的請求",
"load_balancing": "負載平衡",
"load_balancing_desc": "每次查詢一個伺服器。AdGuard Home 將使用加權隨機的演算法來選擇伺服器,以便最快的伺服器將被更常使用。",
"bootstrap_dns": "自我啟動BootstrapDNS 伺服器",
"bootstrap_dns_desc": "自我啟動BootstrapDNS 伺服器被用於解析您明確指定作為上游的 DoH/DoT 解析器之 IP 位址。",
"check_dhcp_servers": "檢查動態主機設定協定DHCP伺服器",
"save_config": "儲存配置",
"enabled_dhcp": "動態主機設定協定DHCP伺服器被啟用",
"disabled_dhcp": "動態主機設定協定DHCP伺服器被禁用",
"dhcp_title": "動態主機設定協定DHCP伺服器實驗性的",
"dhcp_description": "如果您的路由器未提供動態主機設定協定DHCP設定您可使用 AdGuard 自身內建的 DHCP 伺服器。",
"dhcp_enable": "啟用動態主機設定協定DHCP伺服器",
"dhcp_disable": "禁用動態主機設定協定DHCP伺服器",
"dhcp_not_found": "啟用內建的動態主機設定協定DHCP伺服器為安全的 - 於該網路上,我們未發現任何現行的 DHCP 伺服器。然而,我們鼓勵您手動地重新檢查它,因為我們的自動之測試目前不予 100 保證。",
"dhcp_found": "於該網路上一個現行的動態主機設定協定DHCP伺服器被發現。啟用內建的 DHCP 伺服器為不安全的。",
"dhcp_leases": "動態主機設定協定DHCP租約",
"dhcp_static_leases": "動態主機設定協定DHCP靜態租約",
"dhcp_leases_not_found": "無已發現之動態主機設定協定DHCP租約",
"dhcp_config_saved": "動態主機設定協定DHCP配置被成功地儲存",
"form_error_required": "必填的欄位",
"form_error_ip4_format": "無效的 IPv4 格式",
"form_error_ip6_format": "無效的 IPv6 格式",
"form_error_ip_format": "無效的 IP 格式",
"form_error_mac_format": "無效的媒體存取控制MAC格式",
"form_error_client_id_format": "無效的用戶端 ID 格式",
"form_error_positive": "必須大於 0",
"form_error_negative": "必須等於或大於 0",
"dhcp_form_gateway_input": "閘道 IP",
"dhcp_form_subnet_input": "子網路遮罩",
"dhcp_form_range_title": "IP 位址範圍",
"dhcp_form_range_start": "範圍開始",
"dhcp_form_range_end": "範圍結束",
"dhcp_form_lease_title": "動態主機設定協定DHCP租約時間以秒數",
"dhcp_form_lease_input": "租約期間",
"dhcp_interface_select": "選擇動態主機設定協定DHCP介面",
"dhcp_hardware_address": "硬體位址",
"dhcp_ip_addresses": "IP 位址",
"ip": "IP",
"dhcp_table_hostname": "主機名稱",
"dhcp_table_expires": "到期",
"dhcp_warning": "如果您無論如何想要啟用動態主機設定協定DHCP伺服器確保在您的網路中無其它現行的 DHCP 伺服器。否則,它可能會破壞供已連線的裝置之網際網路!",
"dhcp_error": "我們無法確定在該網路是否有另外的動態主機設定協定DHCP伺服器。",
"dhcp_static_ip_error": "為了使用動態主機設定協定DHCP伺服器靜態 IP 位址必須被設定。我們未能確定該網路介面是否被配置使用靜態 IP 位址。請手動地設定靜態 IP 位址。",
"dhcp_dynamic_ip_found": "您的系統使用動態 IP 位址配置供介面 <0>{{interfaceName}}</0>。為了使用動態主機設定協定DHCP伺服器靜態 IP 位址必須被設定。您現行的 IP 位址為 <0>{{ipAddress}}</0>。如果您按啟用 DHCP 按鈕,我們將自動地設定此 IP 位址作為靜態。",
"dhcp_lease_added": "靜態租約 \"{{key}}\" 被成功地加入",
"dhcp_lease_deleted": "靜態租約 \"{{key}}\" 被成功地刪除",
"dhcp_new_static_lease": "新的靜態租約",
"dhcp_static_leases_not_found": "無已發現之動態主機設定協定DHCP靜態租約",
"dhcp_add_static_lease": "增加靜態租約",
"dhcp_reset": "您確定您想要重置動態主機設定協定DHCP配置嗎",
"country": "國家",
"city": "城市",
"delete_confirm": "您確定您想要刪除 \"{{key}}\" 嗎?",
"form_enter_hostname": "輸入主機名稱",
"error_details": "錯誤細節",
"response_details": "回應細節",
"request_details": "請求細節",
"client_details": "用戶端細節",
"details": "細節",
"back": "返回",
"dashboard": "儀表板",
"settings": "設定",
"filters": "過濾器",
"filter": "過濾器",
"query_log": "查詢記錄",
"compact": "精簡的",
"nothing_found": "無什麼被找到",
"faq": "常見問答集",
"version": "版本",
"address": "位址",
"protocol": "協定",
"on": "開著",
"off": "關著",
"copyright": "版權",
"homepage": "首頁",
"report_an_issue": "報告問題",
"privacy_policy": "隱私政策",
"enable_protection": "啟用防護",
"enabled_protection": "已啟用防護",
"disable_protection": "禁用防護",
"disabled_protection": "已禁用防護",
"refresh_statics": "重新整理統計資料",
"dns_query": "DNS 查詢",
"blocked_by": "<0>被過濾器封鎖</0>",
"stats_malware_phishing": "已封鎖的惡意軟體/網路釣魚",
"stats_adult": "已封鎖的成人網站",
"stats_query_domain": "熱門已查詢的網域",
"for_last_24_hours": "在最近的 24 小時內",
"for_last_days": "在最近的 {{count}} 日內",
"for_last_days_plural": "在最近的 {{count}} 日內",
"no_domains_found": "無已發現之網域",
"requests_count": "請求總數",
"top_blocked_domains": "熱門已封鎖的網域",
"top_clients": "熱門用戶端",
"no_clients_found": "無已發現之用戶端",
"general_statistics": "一般的統計資料",
"number_of_dns_query_days": "在最近的 {{count}} 日內已處理的 DNS 查詢之數量",
"number_of_dns_query_days_plural": "在最近的 {{count}} 日內已處理的 DNS 查詢之數量",
"number_of_dns_query_24_hours": "在最近的 24 小時內已處理的 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_adult": "已封鎖的成人網站之數量",
"enforced_save_search": "已強制執行的安全搜尋",
"number_of_dns_query_to_safe_search": "安全搜尋已被強制執行之屬於搜尋引擎的 DNS 請求之數量",
"average_processing_time": "平均的處理時間",
"average_processing_time_hint": "於處理一項 DNS 請求上以毫秒ms計之平均的時間",
"block_domain_use_filters_and_hosts": "透過過濾器和主機檔案封鎖網域",
"filters_block_toggle_hint": "您可在<a href='#filters'>過濾器</a>設定中設置封鎖規則。",
"use_adguard_browsing_sec": "使用 AdGuard 瀏覽安全網路服務",
"use_adguard_browsing_sec_hint": "AdGuard Home 將檢查網域是否被瀏覽安全網路服務列入黑名單。它將使用友好的隱私查找應用程式介面API以執行檢查僅域名 SHA256 雜湊的短前綴被傳送到伺服器。",
"use_adguard_parental": "使用 AdGuard 家長監控之網路服務",
"use_adguard_parental_hint": "AdGuard Home 將檢查網域是否包含成人資料。它使用如同瀏覽安全網路服務一樣之友好的隱私應用程式介面API",
"enforce_safe_search": "強制執行安全搜尋",
"enforce_save_search_hint": "AdGuard Home 可在下列的搜尋引擎Google、YouTube、Bing、DuckDuckGo、Yandex 和 Pixabay 中強制執行安全搜尋。",
"no_servers_specified": "無已明確指定的伺服器",
"general_settings": "一般的設定",
"dns_settings": "DNS 設定",
"dns_blocklists": "DNS 封鎖清單",
"dns_allowlists": "DNS 允許清單",
"dns_blocklists_desc": "AdGuard Home 將阻擋與封鎖清單相符的網域。",
"dns_allowlists_desc": "即使來自 DNS 允許清單的網域在任何的封鎖清單中,它們將被允許。",
"custom_filtering_rules": "自訂的過濾規則",
"encryption_settings": "加密設定",
"dhcp_settings": "動態主機設定協定DHCP設定",
"upstream_dns": "上游的 DNS 伺服器",
"upstream_dns_hint": "如果您將該欄位留空AdGuard Home 將使用 <a href='https://www.quad9.net/' target='_blank'>Quad9</a> 作為上游。",
"test_upstream_btn": "測試上行資料流",
"upstreams": "上游",
"apply_btn": "套用",
"disabled_filtering_toast": "已禁用過濾",
"enabled_filtering_toast": "已啟用過濾",
"disabled_safe_browsing_toast": "已禁用安全瀏覽",
"enabled_safe_browsing_toast": "已啟用安全瀏覽",
"disabled_parental_toast": "已禁用家長監控",
"enabled_parental_toast": "已啟用家長監控",
"disabled_safe_search_toast": "已禁用安全搜尋",
"enabled_save_search_toast": "已啟用安全搜尋",
"enabled_table_header": "已啟用",
"name_table_header": "名稱",
"list_url_table_header": "清單網址",
"rules_count_table_header": "規則總數",
"last_time_updated_table_header": "最近的更新時間",
"actions_table_header": "動作",
"request_table_header": "請求",
"edit_table_action": "編輯",
"delete_table_action": "刪除",
"elapsed": "已經過",
"filters_and_hosts_hint": "AdGuard Home 懂得基本的廣告封鎖規則和主機檔案語法。",
"no_blocklist_added": "無已加入的封鎖清單",
"no_whitelist_added": "無已加入的允許清單",
"add_blocklist": "增加封鎖清單",
"add_allowlist": "增加允許清單",
"cancel_btn": "取消",
"enter_name_hint": "輸入名稱",
"enter_url_or_path_hint": "輸入一個該清單之網址或絕對的路徑",
"check_updates_btn": "檢查更新",
"new_blocklist": "新的封鎖清單",
"new_allowlist": "新的允許清單",
"edit_blocklist": "編輯封鎖清單",
"edit_allowlist": "編輯允許清單",
"choose_blocklist": "選擇封鎖清單",
"choose_allowlist": "選擇允許清單",
"enter_valid_blocklist": "輸入一個到該封鎖清單之有效的網址。",
"enter_valid_allowlist": "輸入一個到該允許清單之有效的網址。",
"form_error_url_format": "無效的網址格式",
"form_error_url_or_path_format": "該清單之網址或絕對的路徑為無效的",
"custom_filter_rules": "自訂的過濾規則",
"custom_filter_rules_hint": "於一行上輸入一項規則。您可使用廣告封鎖規則或主機檔案語法。",
"examples_title": "範例",
"example_meaning_filter_block": "封鎖至 example.org 網域及其所有的子網域之存取",
"example_meaning_filter_whitelist": "解除封鎖至 example.org 網域及其所有的子網域之存取",
"example_meaning_host_block": "AdGuard Home 現在將對 example.org 網域(但非其子網域)返回 127.0.0.1 位址。",
"example_comment": "! 看,一個註解",
"example_comment_meaning": "只是一個註解",
"example_comment_hash": "# 也是一個註解",
"example_regex_meaning": "封鎖至與該已明確指定的規則運算式Regular Expression相符的網域之存取",
"example_upstream_regular": "一般的 DNS透過 UDP",
"example_upstream_dot": "加密的 <0>DNS-over-TLS</0>",
"example_upstream_doh": "加密的 <0>DNS-over-HTTPS</0>",
"example_upstream_sdns": "您可使用關於 <1>DNSCrypt</1> 或 <2>DNS-over-HTTPS</2> 解析器之 <0>DNS 戳記</0>",
"example_upstream_tcp": "一般的 DNS透過 TCP",
"all_lists_up_to_date_toast": "所有的清單已是最新的",
"updated_upstream_dns_toast": "已更新上游的 DNS 伺服器",
"dns_test_ok_toast": "已明確指定的 DNS 伺服器正在正確地運作",
"dns_test_not_ok_toast": "伺服器 \"{{key}}\":無法被使用,請檢查您已正確地填寫它",
"unblock": "解除封鎖",
"block": "封鎖",
"time_table_header": "時間",
"date": "日期",
"domain_name_table_header": "域名",
"domain_or_client": "網域或用戶端",
"type_table_header": "類型",
"response_table_header": "回應",
"response_code": "回應碼",
"client_table_header": "用戶端",
"empty_response_status": "空無的",
"show_all_filter_type": "顯示全部",
"show_filtered_type": "顯示已過濾的",
"no_logs_found": "無已發現之記錄",
"refresh_btn": "重新整理",
"previous_btn": "上一頁",
"next_btn": "下一頁",
"loading_table_status": "正在載入…",
"page_table_footer_text": "頁面",
"rows_table_footer_text": "列",
"updated_custom_filtering_toast": "已更新自訂的過濾規則",
"rule_removed_from_custom_filtering_toast": "規則從自訂的過濾規則中被移除",
"rule_added_to_custom_filtering_toast": "規則被加至自訂的過濾規則中",
"query_log_response_status": "狀態:{{value}}",
"query_log_filtered": "被 {{filter}} 過濾",
"query_log_confirm_clear": "您確定您想要清除整個查詢記錄嗎?",
"query_log_cleared": "該查詢記錄已被成功地清除",
"query_log_updated": "該查詢記錄已被成功地更新",
"query_log_clear": "清除查詢記錄",
"query_log_retention": "查詢記錄保留",
"query_log_enable": "啟用記錄",
"query_log_configuration": "記錄配置",
"query_log_disabled": "查詢記錄被禁用並可在<0>設定</0>中被配置",
"query_log_strict_search": "使用雙引號於嚴謹的搜尋",
"query_log_retention_confirm": "您確定您想要更改查詢記錄保留嗎?如果您減少該間隔值,某些資料將被丟失",
"anonymize_client_ip": "將用戶端 IP 匿名",
"anonymize_client_ip_desc": "不要在記錄和統計資料中儲存用戶端之完整的 IP 位址",
"dns_config": "DNS 伺服器配置",
"dns_cache_config": "DNS 快取配置",
"dns_cache_config_desc": "於此您可配置 DNS 快取",
"blocking_mode": "封鎖模式",
"default": "預設",
"nxdomain": "不存在的網域NXDOMAIN",
"null_ip": "無效的 IP",
"custom_ip": "自訂的 IP",
"blocking_ipv4": "封鎖 IPv4",
"blocking_ipv6": "封鎖 IPv6",
"dns_over_https": "DNS-over-HTTPS",
"dns_over_tls": "DNS-over-TLS",
"plain_dns": "一般的 DNS",
"form_enter_rate_limit": "輸入速率限制",
"rate_limit": "速率限制",
"edns_enable": "啟用對於 DNS 的擴充機制EDNS用戶端子網路",
"edns_cs_desc": "如果被啟用AdGuard Home 將持續傳送用戶端的子網路到 DNS 伺服器。",
"rate_limit_desc": "單一的用戶端被允許傳送的每秒請求之數量0無限制的",
"blocking_ipv4_desc": "要被返回給已封鎖的 A 請求之 IP 位址",
"blocking_ipv6_desc": "要被返回給已封鎖的 AAAA 請求之 IP 位址",
"blocking_mode_default": "預設:當被廣告封鎖樣式的規則封鎖時,以 NXDOMAIN 回覆;當被 /etc/hosts 樣式的規則封鎖時,以在該規則中之已明確指定的 IP 位址回覆",
"blocking_mode_nxdomain": "不存在的網域NXDOMAIN以 NXDOMAIN 碼回覆",
"blocking_mode_null_ip": "無效的 IP以零值 IP 位址0.0.0.0 供 A:: 供 AAAA回覆",
"blocking_mode_custom_ip": "自訂的 IP以一組手動地被設定的 IP 位址回覆",
"upstream_dns_client_desc": "如果您將該欄位留空AdGuard Home 將使用在 <0>DNS 設定</0>中被配置的伺服器。",
"tracker_source": "追蹤器來源",
"source_label": "來源",
"found_in_known_domain_db": "在已知的域名資料庫中被發現。",
"category_label": "類別",
"rule_label": "規則",
"list_label": "清單",
"unknown_filter": "未知的過濾器 {{filterId}}",
"known_tracker": "已知的追蹤器",
"install_welcome_title": "歡迎至 AdGuard Home",
"install_welcome_desc": "AdGuard Home 是全網路範圍廣告和追蹤器封鎖的 DNS 伺服器。它的目的為讓您控制您的整個網路和所有您的裝置,且不需要使用用戶端程式。",
"install_settings_title": "管理員網路介面",
"install_settings_listen": "監聽介面",
"install_settings_port": "連接埠",
"install_settings_interface_link": "您的 AdGuard Home 管理員網路介面將於下列的位址上為可用的:",
"form_error_port": "輸入有效的連接埠值",
"install_settings_dns": "DNS 伺服器",
"install_settings_dns_desc": "您將需要配置您的裝置或路由器以使用於下列的位址上之 DNS 伺服器:",
"install_settings_all_interfaces": "所有的介面",
"install_auth_title": "驗證",
"install_auth_desc": "配置屬於您的 AdGuard Home 管理員網路介面之密碼驗證是被非常建議的。即使它僅在您的區域網路中為可存取的,保護它免於不受限制的存取為仍然重要的。",
"install_auth_username": "使用者名稱",
"install_auth_password": "密碼",
"install_auth_confirm": "確認密碼",
"install_auth_username_enter": "輸入使用者名稱",
"install_auth_password_enter": "輸入密碼",
"install_step": "步驟",
"install_devices_title": "配置您的裝置",
"install_devices_desc": "為了開始使用 AdGuard Home您需要配置您的裝置以使用它。",
"install_submit_title": "恭喜!",
"install_submit_desc": "該設置程序被完成,且您準備好開始使用 AdGuard Home。",
"install_devices_router": "路由器",
"install_devices_router_desc": "此設置將自動地涵蓋所有被連線至您的家庭路由器之裝置,且您將無需手動地配置它們每個。",
"install_devices_address": "AdGuard Home DNS 伺服器正在監聽下列的位址",
"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_3": "在那裡輸入您的 AdGuard Home 伺服器位址。",
"install_devices_router_list_4": "您無法於某些類型的路由器上設定自訂的 DNS 伺服器。在這種情況下,如果您設置 AdGuard Home 作為 <0>DHCP 伺服器</0>,其可能有所幫助。否則,您應搜尋有關如何為您的特定路由器型號自訂 DNS 伺服器之用法說明。",
"install_devices_windows_list_1": "通過開始功能表或 Windows 搜尋,開啟控制台。",
"install_devices_windows_list_2": "去網路和網際網路類別,然後去網路和共用中心。",
"install_devices_windows_list_3": "於畫面之左側上找到變更介面卡設定並於它上點擊。",
"install_devices_windows_list_4": "選擇您現行的連線,於它上點擊滑鼠右鍵,然後選擇內容。",
"install_devices_windows_list_5": "在清單中找到網際網路通訊協定第 4 版TCP/IPv4選擇它然後再次於內容上點擊。",
"install_devices_windows_list_6": "選擇使用下列的 DNS 伺服器位址,然後輸入您的 AdGuard Home 伺服器位址。",
"install_devices_macos_list_1": "於 Apple 圖像上點擊,然後去系統偏好設定。",
"install_devices_macos_list_2": "於網路上點擊。",
"install_devices_macos_list_3": "選擇在您的清單中之首要的連線,然後點擊進階的。",
"install_devices_macos_list_4": "選擇該 DNS 分頁,然後輸入您的 AdGuard Home 伺服器位址。",
"install_devices_android_list_1": "從 Android 選單主畫面中,輕觸設定。",
"install_devices_android_list_2": "於該選單上輕觸 Wi-Fi。正在列出所有可用的網路之畫面將被顯示不可能為行動連線設定自訂的 DNS。",
"install_devices_android_list_3": "長按您所連線至的網路,然後輕觸修改網路。",
"install_devices_android_list_4": "於某些裝置上,您可能需要檢查關於進階的方框以查看進一步的設定。為了調整您的 Android DNS 設定,您將需要把 IP 設定從 DHCP 轉換成靜態。",
"install_devices_android_list_5": "更改 DNS 1 和 DNS 2 位置的值為您的 AdGuard Home 伺服器位址。",
"install_devices_ios_list_1": "從主畫面中,輕觸設定。",
"install_devices_ios_list_2": "在左側的選單中選擇 Wi-Fi不可能為行動網路配置 DNS。",
"install_devices_ios_list_3": "於目前現行的網路之名稱上輕觸。",
"install_devices_ios_list_4": "在該 DNS 欄位中,輸入您的 AdGuard Home 伺服器位址。",
"get_started": "開始吧",
"next": "下一頁",
"open_dashboard": "開啟儀表板",
"install_saved": "被成功地儲存",
"encryption_title": "加密",
"encryption_desc": "供 DNS 和管理員網路介面兩者之加密HTTPS/TLS支援",
"encryption_config_saved": "加密配置被儲存",
"encryption_server": "伺服器名稱",
"encryption_server_enter": "輸入您的域名",
"encryption_server_desc": "為了使用 HTTPS您需要輸入與您的安全通訊端層SSL憑證相符的伺服器名稱。",
"encryption_redirect": "自動地重新導向到 HTTPS",
"encryption_redirect_desc": "如果被勾選AdGuard Home 將自動地重新導向您從 HTTP 到 HTTPS 位址。",
"encryption_https": "HTTPS 連接埠",
"encryption_https_desc": "如果 HTTPS 連接埠被配置AdGuard Home 管理員介面透過 HTTPS 將為可存取的,且它也將於 '/dns-query' 位置上提供 DNS-over-HTTPS。",
"encryption_dot": "DNS-over-TLS 連接埠",
"encryption_dot_desc": "如果該連接埠被配置AdGuard Home 將於此連接埠上運行 DNS-over-TLS 伺服器。",
"encryption_certificates": "憑證",
"encryption_certificates_desc": "為了使用加密您需要提供有效的安全通訊端層SSL憑證鏈結供您的網域。於 <0>{{link}}</0> 上您可取得免費的憑證或您可從受信任的憑證授權單位之一購買它。",
"encryption_certificates_input": "於此複製/貼上您的隱私增強郵件編碼之PEM-encoded憑證。",
"encryption_status": "狀態",
"encryption_expire": "到期",
"encryption_key": "私密金鑰",
"encryption_key_input": "於此複製/貼上您的隱私增強郵件編碼之PEM-encoded私密金鑰供您的憑證。",
"encryption_enable": "啟用加密HTTPS、DNS-over-HTTPS 和 DNS-over-TLS",
"encryption_enable_desc": "如果加密被啟用AdGuard Home 管理員介面透過 HTTPS 將運作,且該 DNS 伺服器將留心監聽透過 DNS-over-HTTPS 和 DNS-over-TLS 之請求。",
"encryption_chain_valid": "憑證鏈結為有效的",
"encryption_chain_invalid": "憑證鏈結為無效的",
"encryption_key_valid": "此為有效的 {{type}} 私密金鑰",
"encryption_key_invalid": "此為無效的 {{type}} 私密金鑰",
"encryption_subject": "物件",
"encryption_issuer": "簽發者",
"encryption_hostnames": "主機名稱",
"encryption_reset": "您確定您想要重置加密設定嗎?",
"topline_expiring_certificate": "您的安全通訊端層SSL憑證即將到期。更新<0>加密設定</0>。",
"topline_expired_certificate": "您的安全通訊端層SSL憑證為已到期的。更新<0>加密設定</0>。",
"form_error_port_range": "在 80-65535 之範圍內輸入連接埠值",
"form_error_port_unsafe": "此為不安全的連接埠",
"form_error_equal": "不應為相等的",
"form_error_password": "不相符的密碼",
"reset_settings": "重置設定",
"update_announcement": "AdGuard Home {{version}} 現為可用的!關於更多的資訊,<0>點擊這裡</0>。",
"setup_guide": "設置指南",
"dns_addresses": "DNS 位址",
"dns_start": "DNS 伺服器正在啟動",
"dns_status_error": "檢查 DNS 伺服器狀態出錯",
"down": "停止運作的",
"fix": "修復",
"dns_providers": "這裡是一個從中選擇之<0>已知的 DNS 供應商之清單</0>。",
"update_now": "立即更新",
"update_failed": "自動更新已失敗。請<a href='https://github.com/AdguardTeam/AdGuardHome/wiki/Getting-Started#update'>遵循這些步驟</a>以手動地更新。",
"processing_update": "請稍候AdGuard Home 正被更新",
"clients_title": "用戶端",
"clients_desc": "配置被連線到 AdGuard Home 的裝置",
"settings_global": "全域的",
"settings_custom": "自訂的",
"table_client": "用戶端",
"table_name": "名稱",
"save_btn": "儲存",
"client_add": "增加用戶端",
"client_new": "新的用戶端",
"client_edit": "編輯用戶端",
"client_identifier": "識別碼",
"ip_address": "IP 位址",
"client_identifier_desc": "用戶端可被 IP 位址、無類別網域間路由CIDR或媒體存取控制MAC位址識別。請注意只要 AdGuard Home 也是<0>動態主機設定協定DHCP伺服器</0>,使用 MAC 作為識別碼是可能的",
"form_enter_ip": "輸入 IP",
"form_enter_mac": "輸入媒體存取控制MAC",
"form_enter_id": "輸入識別碼",
"form_add_id": "增加識別碼",
"form_client_name": "輸入用戶端名稱",
"name": "名稱",
"client_global_settings": "使用全域的設定",
"client_deleted": "用戶端 \"{{key}}\" 被成功地刪除",
"client_added": "用戶端 \"{{key}}\" 被成功地加入",
"client_updated": "用戶端 \"{{key}}\" 被成功地更新",
"clients_not_found": "無已發現之用戶端",
"client_confirm_delete": "您確定您想要刪除用戶端 \"{{key}}\" 嗎?",
"list_confirm_delete": "您確定您想要刪除該清單嗎?",
"auto_clients_title": "用戶端(執行時期)",
"auto_clients_desc": "使用 AdGuard Home 但未被儲存在配置中之關於用戶端的資料",
"access_title": "存取設定",
"access_desc": "於此您可配置用於 AdGuard Home DNS 伺服器之存取規則。",
"access_allowed_title": "已允許的用戶端",
"access_allowed_desc": "無類別網域間路由CIDR或 IP 位址之清單。如果被配置AdGuard Home 將接受僅來自這些 IP 位址的請求。",
"access_disallowed_title": "不允許的用戶端",
"access_disallowed_desc": "無類別網域間路由CIDR或 IP 位址之清單。如果被配置AdGuard Home 將排除來自這些 IP 位址的請求。",
"access_blocked_title": "不允許的網域",
"access_blocked_desc": "不要把這個和過濾器混淆。AdGuard Home 將從查詢的詢問中排除有這些網域的 DNS 查詢。您可於此明確指定確切的域名、萬用字元wildcard和網址過濾器的規則例如'example.org'、'*.example.org' 或 '||example.org^'。",
"access_settings_saved": "存取設定被成功地儲存",
"updates_checked": "更新被成功地檢查",
"updates_version_equal": "AdGuard Home 為最新的",
"check_updates_now": "立即檢查更新",
"dns_privacy": "DNS 隱私",
"setup_dns_privacy_1": "<0>DNS-over-TLS</0>使用 <1>{{address}}</1> 字串。",
"setup_dns_privacy_2": "<0>DNS-over-HTTPS</0>使用 <1>{{address}}</1> 字串。",
"setup_dns_privacy_3": "<0>請注意,加密的 DNS 協定僅於 Android 9 上被支援。所以您需要安裝額外的軟體供其它的作業系統。</0><0>這裡是您可使用的軟體之清單。</0>",
"setup_dns_privacy_android_1": "Android 9 原生地支援 DNS-over-TLS。為了配置它去設定 → 網路 & 網際網路 → 進階 → 私人 DNS 並在那輸入您的域名。",
"setup_dns_privacy_android_2": "<0>AdGuard for Android</0> 支援 <1>DNS-over-HTTPS</1> 和 <1>DNS-over-TLS</1>。",
"setup_dns_privacy_android_3": "<0>Intra</0> 對 Android 增加 <1>DNS-over-HTTPS</1> 支援。",
"setup_dns_privacy_ios_1": "<0>DNSCloak</0> 支援 <1>DNS-over-HTTPS</1>,但為了配置它以使用您自己的伺服器,您將需要為它產生一個 <2>DNS 戳記</2>。",
"setup_dns_privacy_ios_2": "<0>AdGuard for iOS</0> 支援 <1>DNS-over-HTTPS</1> 和 <1>DNS-over-TLS</1> 設置。",
"setup_dns_privacy_other_title": "其它的執行",
"setup_dns_privacy_other_1": "於任何的平台上AdGuard Home 它本身可以是安全的 DNS 用戶端。",
"setup_dns_privacy_other_2": "<0>dnsproxy</0> 支援所有已知安全的 DNS 協定。",
"setup_dns_privacy_other_3": "<0>dnscrypt-proxy</0> 支援 <1>DNS-over-HTTPS</1>。",
"setup_dns_privacy_other_4": "<0>Mozilla Firefox</0> 支援 <1>DNS-over-HTTPS</1>。",
"setup_dns_privacy_other_5": "在<0>這裡</0>和<1>這裡</1>,您將發現更多的執行。",
"setup_dns_notice": "為了使用 <1>DNS-over-HTTPS</1> 或 <1>DNS-over-TLS</1>,您需要在 AdGuard Home 設定裡<0>配置加密</0>。",
"rewrite_added": "對於 \"{{key}}\" 之 DNS 改寫被成功地加入",
"rewrite_deleted": "對於 \"{{key}}\" 之 DNS 改寫被成功地刪除",
"rewrite_add": "增加 DNS 改寫",
"rewrite_not_found": "無已發現之 DNS 改寫",
"rewrite_confirm_delete": "您確定您想要刪除對於 \"{{key}}\" 之 DNS 改寫嗎?",
"rewrite_desc": "允許輕易地配置自訂的 DNS 回應供特定的域名。",
"rewrite_applied": "改寫規則被套用",
"rewrite_hosts_applied": "被該主機檔案規則改寫",
"dns_rewrites": "DNS 改寫",
"form_domain": "輸入域名或萬用字元wildcard",
"form_answer": "輸入 IP 位址或域名",
"form_error_domain_format": "無效的網域格式",
"form_error_answer_format": "無效的回應格式",
"configure": "配置",
"main_settings": "主設定",
"block_services": "封鎖特定的服務",
"blocked_services": "已封鎖的服務",
"blocked_services_desc": "允許立即封鎖熱門的網站和服務。",
"blocked_services_saved": "已封鎖的服務被成功地儲存",
"blocked_services_global": "使用全域已封鎖的服務",
"blocked_service": "已封鎖的服務",
"block_all": "封鎖全部",
"unblock_all": "解除封鎖全部",
"encryption_certificate_path": "憑證路徑",
"encryption_private_key_path": "私密金鑰路徑",
"encryption_certificates_source_path": "設定一個憑證檔案路徑",
"encryption_certificates_source_content": "貼上該憑證內容",
"encryption_key_source_path": "設定一個私密金鑰檔案",
"encryption_key_source_content": "貼上該私密金鑰內容",
"stats_params": "統計資料配置",
"config_successfully_saved": "配置被成功地儲存",
"interval_24_hour": "24 小時",
"interval_days": "{{count}} 日",
"interval_days_plural": "{{count}} 日",
"domain": "網域",
"answer": "回應",
"filter_added_successfully": "該清單已被成功地加入",
"filter_removed_successfully": "該清單已被成功地移除",
"filter_updated": "該清單已被成功地更新",
"statistics_configuration": "統計資料配置",
"statistics_retention": "統計資料保留",
"statistics_retention_desc": "如果您減少該間隔值,某些資料將被丟失",
"statistics_clear": " 清除統計資料",
"statistics_clear_confirm": "您確定您想要清除統計資料嗎?",
"statistics_retention_confirm": "您確定您想要更改統計資料保留嗎?如果您減少該間隔值,某些資料將被丟失",
"statistics_cleared": "統計資料被成功地清除",
"interval_hours": "{{count}} 小時",
"interval_hours_plural": "{{count}} 小時",
"filters_configuration": "過濾器配置",
"filters_enable": "啟用過濾器",
"filters_interval": "過濾器更新間隔",
"disabled": "已禁用",
"username_label": "使用者名稱",
"username_placeholder": "輸入使用者名稱",
"password_label": "密碼",
"password_placeholder": "輸入密碼",
"sign_in": "登入",
"sign_out": "登出",
"forgot_password": "忘了密碼嗎?",
"forgot_password_desc": "請遵循<0>這些步驟</0>以創建一組新的密碼供您的使用者帳戶。",
"location": "位置",
"orgname": "組織名稱",
"netname": "網路名稱",
"network": "網路",
"descr": "說明",
"whois": "Whois",
"filtering_rules_learn_more": "<0>了解更多</0>有關創建您自己的主機hosts清單。",
"blocked_by_response": "在回應過程中被正規名稱CNAME或 IP 封鎖",
"blocked_by_cname_or_ip": "被正規名稱CNAME或 IP 封鎖",
"try_again": "再次嘗試",
"domain_desc": "輸入您想要被改寫的域名或萬用字元wildcard。",
"example_rewrite_domain": "僅對於此域名改寫回應。",
"example_rewrite_wildcard": "對於所有的 <0>example.org</0> 子網域改寫回應。",
"rewrite_ip_address": "IP 位址:在一個 A 或 AAAA 回應中使用此 IP",
"rewrite_domain_name": "域名增加一筆正規名稱CNAME記錄",
"rewrite_A": "<0>A</0>:特殊的數值,阻止 <0>A</0> 記錄免於該上游",
"rewrite_AAAA": "<0>AAAA</0>:特殊的數值,阻止 <0>AAAA</0> 記錄免於該上游",
"disable_ipv6": "禁用 IPv6",
"disable_ipv6_desc": "如果此功能被啟用,所有對於 IPv6 位址(類型 AAAA的 DNS 查詢將被丟棄。",
"fastest_addr": "最快的 IP 位址",
"fastest_addr_desc": "查詢所有的 DNS 伺服器並返回在所有的回應之中最快的 IP 位址。因為我們必須等待來自所有的 DNS 伺服器之回應,這將使 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_result": "因此,預設下,來自您的系統之所有的 DNS 請求將被 AdGuard Home 處理。",
"tags_title": "標記",
"tags_desc": "您可選擇對應該用戶端的標記。標記可被包括在過濾規則中並允許您更準確地套用它們。<0>了解更多</0>",
"form_select_tags": "選擇用戶端標記",
"check_title": "檢查該過濾",
"check_desc": "檢查該主機名稱是否被過濾",
"check": "檢查",
"form_enter_host": "輸入主機名稱",
"filtered_custom_rules": "被自訂的過濾規則過濾",
"choose_from_list": "從該清單中選擇",
"add_custom_list": "增加一個自訂的清單",
"host_whitelisted": "該主機被列入白名單",
"check_ip": "IP 位址:{{ip}}",
"check_cname": "正規名稱CNAME{{cname}}",
"check_reason": "原因:{{reason}}",
"check_rule": "規則:{{rule}}",
"check_service": "服務名稱:{{service}}",
"check_not_found": "未在您的過濾器中被找到",
"client_confirm_block": "您確定您想要封鎖該用戶端 \"{{ip}}\" 嗎?",
"client_confirm_unblock": "您確定您想要解除封鎖該用戶端 \"{{ip}}\" 嗎?",
"client_blocked": "用戶端 \"{{ip}}\" 被成功地封鎖",
"client_unblocked": "用戶端 \"{{ip}}\" 被成功地解除封鎖",
"static_ip": "靜態 IP 位址",
"static_ip_desc": "AdGuard Home 是一台伺服器,因此它需要一組靜態 IP 位址以正確地運作。否則,在某些時候,您的路由器可能分配一組不同的 IP 位址給此裝置。",
"set_static_ip": "設定一組靜態 IP 位址",
"install_static_ok": "好消息!該靜態 IP 位址已被配置",
"install_static_error": "AdGuard Home 無法自動地配置它供此網路介面。請尋找有關如何手動地完成這個的用法說明。",
"install_static_configure": "我們已偵測到一組動態 IP 位址被使用 — <0>{{ip}}</0>。您想要使用它作為您的靜態位址嗎?",
"confirm_static_ip": "AdGuard Home 將配置 {{ip}} 為您的靜態 IP 位址。您想要繼續嗎?",
"list_updated": "{{count}} 清單被更新",
"list_updated_plural": "{{count}} 清單被更新",
"dnssec_enable": "啟用網域名稱系統安全性擴充功能DNSSEC",
"dnssec_enable_desc": "在發出的 DNS 查詢中設定 DNSSEC 標記並檢查該結果(已啟用 DNSSEC 的解析器是必須的)",
"validated_with_dnssec": "已用網域名稱系統安全性擴充功能DNSSEC驗證",
"all_queries": "所有的查詢",
"show_blocked_responses": "已封鎖的",
"show_whitelisted_responses": "已列入白名單的",
"show_processed_responses": "已處理的",
"blocked_safebrowsing": "被安全瀏覽封鎖",
"blocked_adult_websites": "已封鎖的成人網站",
"blocked_threats": "已封鎖的威脅",
"allowed": "已允許的",
"filtered": "已過濾的",
"rewritten": "已改寫的",
"safe_search": "安全搜尋",
"blocklist": "封鎖清單",
"milliseconds_abbreviation": "ms",
"cache_size": "快取大小",
"cache_size_desc": "DNS 快取大小(以位元組)",
"cache_ttl_min_override": "覆寫最小的存活時間TTL",
"cache_ttl_max_override": "覆寫最大的存活時間TTL",
"enter_cache_size": "輸入快取大小",
"enter_cache_ttl_min_override": "輸入最小的存活時間TTL",
"enter_cache_ttl_max_override": "輸入最大的存活時間TTL",
"cache_ttl_min_override_desc": "覆寫從上游的伺服器收到的存活時間TTL數值最小值。此數值不能大於 36001 小時)",
"cache_ttl_max_override_desc": "覆寫從上游的伺服器收到的存活時間TTL數值最大值",
"min_exceeds_max_value": "最小值超過最大值",
"value_not_larger_than": "數值不能大於 {{maximum}}",
"filter_category_general": "一般的",
"filter_category_security": "安全性",
"filter_category_regional": "區域性的",
"filter_category_other": "其它的",
"filter_category_general_desc": "封鎖大多數朝向裝置的追蹤和廣告之清單",
"filter_category_security_desc": "專精於封鎖惡意軟體、網路釣魚或詐騙網域之清單",
"filter_category_regional_desc": "專注於區域性的廣告和追蹤伺服器之清單",
"filter_category_other_desc": "其它的封鎖清單",
"original_response": "原始的回應",
"click_to_view_queries": "點擊以檢視查詢",
"port_53_faq_link": "連接埠 53 常被 \"DNSStubListener\" 或 \"systemd-resolved\" 服務佔用。請閱讀有關如何解決這個的<0>用法說明</0>。"
}

View File

@@ -1,9 +0,0 @@
import React from 'react';
import ReactDOM from 'react-dom';
import App from '../components/App';
it('renders without crashing', () => {
const div = document.createElement('div');
ReactDOM.render(<App />, div);
ReactDOM.unmountComponentAtNode(div);
});

View File

@@ -0,0 +1,131 @@
import { getIpMatchListStatus } from '../helpers/helpers';
import { IP_MATCH_LIST_STATUS } from '../helpers/constants';
describe('getIpMatchListStatus', () => {
describe('IPv4', () => {
test('should return EXACT on find the exact ip match', () => {
const list = `127.0.0.2
2001:db8:11a3:9d7:0:0:0:0
192.168.0.1/8
127.0.0.1
127.0.0.3`;
expect(getIpMatchListStatus('127.0.0.1', list))
.toEqual(IP_MATCH_LIST_STATUS.EXACT);
});
test('should return CIDR on find the cidr match', () => {
const list = `127.0.0.2
2001:db8:11a3:9d7:0:0:0:0
192.168.0.1/8
127.0.0.0/24
127.0.0.3`;
expect(getIpMatchListStatus('127.0.0.1', list))
.toEqual(IP_MATCH_LIST_STATUS.CIDR);
});
test('should return NOT_FOUND if the ip is not in the list', () => {
const list = `127.0.0.1
2001:db8:11a3:9d7:0:0:0:0
192.168.0.1/8
127.0.0.2
127.0.0.3`;
expect(getIpMatchListStatus('127.0.0.4', list))
.toEqual(IP_MATCH_LIST_STATUS.NOT_FOUND);
});
test('should return the first EXACT or CIDR match in the list', () => {
const list1 = `2001:db8:11a3:9d7:0:0:0:0
127.0.0.1
127.0.0.8/24
127.0.0.3`;
expect(getIpMatchListStatus('127.0.0.1', list1))
.toEqual(IP_MATCH_LIST_STATUS.EXACT);
const list2 = `2001:db8:11a3:9d7:ffff:ffff:ffff:ffff
2001:0db8:11a3:09d7:0000:0000:0000:0000/64
127.0.0.0/24
127.0.0.1
127.0.0.8/24
127.0.0.3`;
expect(getIpMatchListStatus('127.0.0.1', list2))
.toEqual(IP_MATCH_LIST_STATUS.CIDR);
});
});
describe('IPv6', () => {
test('should return EXACT on find the exact ip match', () => {
const list = `127.0.0.0
2001:db8:11a3:9d7:0:0:0:0
2001:db8:11a3:9d7:ffff:ffff:ffff:ffff
127.0.0.1`;
expect(getIpMatchListStatus('2001:db8:11a3:9d7:0:0:0:0', list))
.toEqual(IP_MATCH_LIST_STATUS.EXACT);
});
test('should return EXACT on find the exact ip match of short and long notation', () => {
const list = `127.0.0.0
192.168.0.1/8
2001:db8::
127.0.0.2`;
expect(getIpMatchListStatus('2001:db8:0:0:0:0:0:0', list))
.toEqual(IP_MATCH_LIST_STATUS.EXACT);
});
test('should return CIDR on find the cidr match', () => {
const list1 = `2001:0db8:11a3:09d7:0000:0000:0000:0000/64
127.0.0.1
127.0.0.2`;
expect(getIpMatchListStatus('2001:db8:11a3:9d7:0:0:0:0', list1))
.toEqual(IP_MATCH_LIST_STATUS.CIDR);
const list2 = `2001:0db8::/16
127.0.0.0
2001:db8:11a3:9d7:0:0:0:0
2001:db8::
2001:db8:11a3:9d7:ffff:ffff:ffff:ffff
127.0.0.1`;
expect(getIpMatchListStatus('2001:db1::', list2))
.toEqual(IP_MATCH_LIST_STATUS.CIDR);
});
test('should return NOT_FOUND if the ip is not in the list', () => {
const list = `2001:db8:11a3:9d7:0:0:0:0
2001:0db8:11a3:09d7:0000:0000:0000:0000/64
127.0.0.1
127.0.0.2`;
expect(getIpMatchListStatus('::', list))
.toEqual(IP_MATCH_LIST_STATUS.NOT_FOUND);
});
test('should return the first EXACT or CIDR match in the list', () => {
const list1 = `2001:db8:11a3:9d7:0:0:0:0
2001:0db8:11a3:09d7:0000:0000:0000:0000/64
127.0.0.3`;
expect(getIpMatchListStatus('2001:db8:11a3:9d7:0:0:0:0', list1))
.toEqual(IP_MATCH_LIST_STATUS.EXACT);
const list2 = `2001:0db8:11a3:09d7:0000:0000:0000:0000/64
2001:db8:11a3:9d7:0:0:0:0
127.0.0.3`;
expect(getIpMatchListStatus('2001:db8:11a3:9d7:0:0:0:0', list2))
.toEqual(IP_MATCH_LIST_STATUS.CIDR);
});
});
describe('Empty list or IP', () => {
test('should return NOT_FOUND on empty ip', () => {
const list = `127.0.0.0
2001:db8:11a3:9d7:0:0:0:0
2001:db8:11a3:9d7:ffff:ffff:ffff:ffff
127.0.0.1`;
expect(getIpMatchListStatus('', list))
.toEqual(IP_MATCH_LIST_STATUS.NOT_FOUND);
});
test('should return NOT_FOUND on empty list', () => {
const list = '';
expect(getIpMatchListStatus('127.0.0.1', list))
.toEqual(IP_MATCH_LIST_STATUS.NOT_FOUND);
});
});
});

View File

@@ -0,0 +1,84 @@
import { createAction } from 'redux-actions';
import i18next from 'i18next';
import apiClient from '../api/Api';
import { addErrorToast, addSuccessToast } from './toasts';
import { BLOCK_ACTIONS } from '../helpers/constants';
import { splitByNewLine } from '../helpers/helpers';
export const getAccessListRequest = createAction('GET_ACCESS_LIST_REQUEST');
export const getAccessListFailure = createAction('GET_ACCESS_LIST_FAILURE');
export const getAccessListSuccess = createAction('GET_ACCESS_LIST_SUCCESS');
export const getAccessList = () => async (dispatch) => {
dispatch(getAccessListRequest());
try {
const data = await apiClient.getAccessList();
dispatch(getAccessListSuccess(data));
} catch (error) {
dispatch(addErrorToast({ error }));
dispatch(getAccessListFailure());
}
};
export const setAccessListRequest = createAction('SET_ACCESS_LIST_REQUEST');
export const setAccessListFailure = createAction('SET_ACCESS_LIST_FAILURE');
export const setAccessListSuccess = createAction('SET_ACCESS_LIST_SUCCESS');
export const setAccessList = (config) => async (dispatch) => {
dispatch(setAccessListRequest());
try {
const { allowed_clients, disallowed_clients, blocked_hosts } = config;
const values = {
allowed_clients: splitByNewLine(allowed_clients),
disallowed_clients: splitByNewLine(disallowed_clients),
blocked_hosts: splitByNewLine(blocked_hosts),
};
await apiClient.setAccessList(values);
dispatch(setAccessListSuccess());
dispatch(addSuccessToast('access_settings_saved'));
} catch (error) {
dispatch(addErrorToast({ error }));
dispatch(setAccessListFailure());
}
};
export const toggleClientBlockRequest = createAction('TOGGLE_CLIENT_BLOCK_REQUEST');
export const toggleClientBlockFailure = createAction('TOGGLE_CLIENT_BLOCK_FAILURE');
export const toggleClientBlockSuccess = createAction('TOGGLE_CLIENT_BLOCK_SUCCESS');
export const toggleClientBlock = (type, ip) => async (dispatch) => {
dispatch(toggleClientBlockRequest());
try {
const {
allowed_clients, disallowed_clients, blocked_hosts,
} = await apiClient.getAccessList();
let updatedDisallowedClients = disallowed_clients || [];
if (type === BLOCK_ACTIONS.UNBLOCK && updatedDisallowedClients.includes(ip)) {
updatedDisallowedClients = updatedDisallowedClients.filter((client) => client !== ip);
} else if (type === BLOCK_ACTIONS.BLOCK && !updatedDisallowedClients.includes(ip)) {
updatedDisallowedClients.push(ip);
}
const values = {
allowed_clients,
blocked_hosts,
disallowed_clients: updatedDisallowedClients,
};
await apiClient.setAccessList(values);
dispatch(toggleClientBlockSuccess(values));
if (type === BLOCK_ACTIONS.UNBLOCK) {
dispatch(addSuccessToast(i18next.t('client_unblocked', { ip })));
} else if (type === BLOCK_ACTIONS.BLOCK) {
dispatch(addSuccessToast(i18next.t('client_blocked', { ip })));
}
} catch (error) {
dispatch(addErrorToast({ error }));
dispatch(toggleClientBlockFailure());
}
};

View File

@@ -0,0 +1,62 @@
import { createAction } from 'redux-actions';
import i18next from 'i18next';
import apiClient from '../api/Api';
import { getClients } from './index';
import { addErrorToast, addSuccessToast } from './toasts';
export const toggleClientModal = createAction('TOGGLE_CLIENT_MODAL');
export const addClientRequest = createAction('ADD_CLIENT_REQUEST');
export const addClientFailure = createAction('ADD_CLIENT_FAILURE');
export const addClientSuccess = createAction('ADD_CLIENT_SUCCESS');
export const addClient = (config) => async (dispatch) => {
dispatch(addClientRequest());
try {
await apiClient.addClient(config);
dispatch(addClientSuccess());
dispatch(toggleClientModal());
dispatch(addSuccessToast(i18next.t('client_added', { key: config.name })));
dispatch(getClients());
} catch (error) {
dispatch(addErrorToast({ error }));
dispatch(addClientFailure());
}
};
export const deleteClientRequest = createAction('DELETE_CLIENT_REQUEST');
export const deleteClientFailure = createAction('DELETE_CLIENT_FAILURE');
export const deleteClientSuccess = createAction('DELETE_CLIENT_SUCCESS');
export const deleteClient = (config) => async (dispatch) => {
dispatch(deleteClientRequest());
try {
await apiClient.deleteClient(config);
dispatch(deleteClientSuccess());
dispatch(addSuccessToast(i18next.t('client_deleted', { key: config.name })));
dispatch(getClients());
} catch (error) {
dispatch(addErrorToast({ error }));
dispatch(deleteClientFailure());
}
};
export const updateClientRequest = createAction('UPDATE_CLIENT_REQUEST');
export const updateClientFailure = createAction('UPDATE_CLIENT_FAILURE');
export const updateClientSuccess = createAction('UPDATE_CLIENT_SUCCESS');
export const updateClient = (config, name) => async (dispatch) => {
dispatch(updateClientRequest());
try {
const data = { name, data: { ...config } };
await apiClient.updateClient(data);
dispatch(updateClientSuccess());
dispatch(toggleClientModal());
dispatch(addSuccessToast(i18next.t('client_updated', { key: name })));
dispatch(getClients());
} catch (error) {
dispatch(addErrorToast({ error }));
dispatch(updateClientFailure());
}
};

View File

@@ -0,0 +1,54 @@
import { createAction } from 'redux-actions';
import apiClient from '../api/Api';
import { splitByNewLine } from '../helpers/helpers';
import { addErrorToast, addSuccessToast } from './toasts';
export const getDnsConfigRequest = createAction('GET_DNS_CONFIG_REQUEST');
export const getDnsConfigFailure = createAction('GET_DNS_CONFIG_FAILURE');
export const getDnsConfigSuccess = createAction('GET_DNS_CONFIG_SUCCESS');
export const getDnsConfig = () => async (dispatch) => {
dispatch(getDnsConfigRequest());
try {
const data = await apiClient.getDnsConfig();
dispatch(getDnsConfigSuccess(data));
} catch (error) {
dispatch(addErrorToast({ error }));
dispatch(getDnsConfigFailure());
}
};
export const setDnsConfigRequest = createAction('SET_DNS_CONFIG_REQUEST');
export const setDnsConfigFailure = createAction('SET_DNS_CONFIG_FAILURE');
export const setDnsConfigSuccess = createAction('SET_DNS_CONFIG_SUCCESS');
export const setDnsConfig = (config) => async (dispatch) => {
dispatch(setDnsConfigRequest());
try {
const data = { ...config };
let hasDnsSettings = false;
if (Object.prototype.hasOwnProperty.call(data, 'bootstrap_dns')) {
data.bootstrap_dns = splitByNewLine(config.bootstrap_dns);
hasDnsSettings = true;
}
if (Object.prototype.hasOwnProperty.call(data, 'upstream_dns')) {
data.upstream_dns = splitByNewLine(config.upstream_dns);
hasDnsSettings = true;
}
await apiClient.setDnsConfig(data);
if (hasDnsSettings) {
dispatch(addSuccessToast('updated_upstream_dns_toast'));
} else {
dispatch(addSuccessToast('config_successfully_saved'));
}
dispatch(setDnsConfigSuccess(config));
} catch (error) {
dispatch(addErrorToast({ error }));
dispatch(setDnsConfigFailure());
}
};

View File

@@ -1,9 +1,7 @@
import { createAction } from 'redux-actions';
import Api from '../api/Api';
import { addErrorToast, addSuccessToast } from './index';
import apiClient from '../api/Api';
import { redirectToCurrentProtocol } from '../helpers/helpers';
const apiClient = new Api();
import { addErrorToast, addSuccessToast } from './toasts';
export const getTlsStatusRequest = createAction('GET_TLS_STATUS_REQUEST');
export const getTlsStatusFailure = createAction('GET_TLS_STATUS_FAILURE');
@@ -27,7 +25,7 @@ export const setTlsConfigRequest = createAction('SET_TLS_CONFIG_REQUEST');
export const setTlsConfigFailure = createAction('SET_TLS_CONFIG_FAILURE');
export const setTlsConfigSuccess = createAction('SET_TLS_CONFIG_SUCCESS');
export const setTlsConfig = config => async (dispatch, getState) => {
export const setTlsConfig = (config) => async (dispatch, getState) => {
dispatch(setTlsConfigRequest());
try {
const { httpPort } = getState().dashboard;
@@ -53,7 +51,7 @@ export const validateTlsConfigRequest = createAction('VALIDATE_TLS_CONFIG_REQUES
export const validateTlsConfigFailure = createAction('VALIDATE_TLS_CONFIG_FAILURE');
export const validateTlsConfigSuccess = createAction('VALIDATE_TLS_CONFIG_SUCCESS');
export const validateTlsConfig = config => async (dispatch) => {
export const validateTlsConfig = (config) => async (dispatch) => {
dispatch(validateTlsConfigRequest());
try {
const values = { ...config };

View File

@@ -0,0 +1,195 @@
import { createAction } from 'redux-actions';
import { showLoading, hideLoading } from 'react-redux-loading-bar';
import i18next from 'i18next';
import { normalizeFilteringStatus, normalizeRulesTextarea } from '../helpers/helpers';
import apiClient from '../api/Api';
import { addErrorToast, addSuccessToast } from './toasts';
export const toggleFilteringModal = createAction('FILTERING_MODAL_TOGGLE');
export const handleRulesChange = createAction('HANDLE_RULES_CHANGE');
export const getFilteringStatusRequest = createAction('GET_FILTERING_STATUS_REQUEST');
export const getFilteringStatusFailure = createAction('GET_FILTERING_STATUS_FAILURE');
export const getFilteringStatusSuccess = createAction('GET_FILTERING_STATUS_SUCCESS');
export const getFilteringStatus = () => async (dispatch) => {
dispatch(getFilteringStatusRequest());
try {
const status = await apiClient.getFilteringStatus();
dispatch(getFilteringStatusSuccess({ ...normalizeFilteringStatus(status) }));
} catch (error) {
dispatch(addErrorToast({ error }));
dispatch(getFilteringStatusFailure());
}
};
export const setRulesRequest = createAction('SET_RULES_REQUEST');
export const setRulesFailure = createAction('SET_RULES_FAILURE');
export const setRulesSuccess = createAction('SET_RULES_SUCCESS');
export const setRules = (rules) => async (dispatch) => {
dispatch(setRulesRequest());
try {
const normalizedRules = normalizeRulesTextarea(rules);
await apiClient.setRules(normalizedRules);
dispatch(addSuccessToast('updated_custom_filtering_toast'));
dispatch(setRulesSuccess());
} catch (error) {
dispatch(addErrorToast({ error }));
dispatch(setRulesFailure());
}
};
export const addFilterRequest = createAction('ADD_FILTER_REQUEST');
export const addFilterFailure = createAction('ADD_FILTER_FAILURE');
export const addFilterSuccess = createAction('ADD_FILTER_SUCCESS');
export const addFilter = (url, name, whitelist = false) => async (dispatch, getState) => {
dispatch(addFilterRequest());
try {
await apiClient.addFilter({ url, name, whitelist });
dispatch(addFilterSuccess(url));
if (getState().filtering.isModalOpen) {
dispatch(toggleFilteringModal());
}
dispatch(addSuccessToast('filter_added_successfully'));
dispatch(getFilteringStatus());
} catch (error) {
dispatch(addErrorToast({ error }));
dispatch(addFilterFailure());
}
};
export const removeFilterRequest = createAction('REMOVE_FILTER_REQUEST');
export const removeFilterFailure = createAction('REMOVE_FILTER_FAILURE');
export const removeFilterSuccess = createAction('REMOVE_FILTER_SUCCESS');
export const removeFilter = (url, whitelist = false) => async (dispatch, getState) => {
dispatch(removeFilterRequest());
try {
await apiClient.removeFilter({ url, whitelist });
dispatch(removeFilterSuccess(url));
if (getState().filtering.isModalOpen) {
dispatch(toggleFilteringModal());
}
dispatch(addSuccessToast('filter_removed_successfully'));
dispatch(getFilteringStatus());
} catch (error) {
dispatch(addErrorToast({ error }));
dispatch(removeFilterFailure());
}
};
export const toggleFilterRequest = createAction('FILTER_TOGGLE_REQUEST');
export const toggleFilterFailure = createAction('FILTER_TOGGLE_FAILURE');
export const toggleFilterSuccess = createAction('FILTER_TOGGLE_SUCCESS');
export const toggleFilterStatus = (url, data, whitelist = false) => async (dispatch) => {
dispatch(toggleFilterRequest());
try {
await apiClient.setFilterUrl({ url, data, whitelist });
dispatch(toggleFilterSuccess(url));
dispatch(getFilteringStatus());
} catch (error) {
dispatch(addErrorToast({ error }));
dispatch(toggleFilterFailure());
}
};
export const editFilterRequest = createAction('EDIT_FILTER_REQUEST');
export const editFilterFailure = createAction('EDIT_FILTER_FAILURE');
export const editFilterSuccess = createAction('EDIT_FILTER_SUCCESS');
export const editFilter = (url, data, whitelist = false) => async (dispatch, getState) => {
dispatch(editFilterRequest());
try {
await apiClient.setFilterUrl({ url, data, whitelist });
dispatch(editFilterSuccess(url));
if (getState().filtering.isModalOpen) {
dispatch(toggleFilteringModal());
}
dispatch(addSuccessToast('filter_updated'));
dispatch(getFilteringStatus());
} catch (error) {
dispatch(addErrorToast({ error }));
dispatch(editFilterFailure());
}
};
export const refreshFiltersRequest = createAction('FILTERING_REFRESH_REQUEST');
export const refreshFiltersFailure = createAction('FILTERING_REFRESH_FAILURE');
export const refreshFiltersSuccess = createAction('FILTERING_REFRESH_SUCCESS');
export const refreshFilters = (config) => async (dispatch) => {
dispatch(refreshFiltersRequest());
dispatch(showLoading());
try {
const data = await apiClient.refreshFilters(config);
const { updated } = data;
dispatch(refreshFiltersSuccess());
if (updated > 0) {
dispatch(addSuccessToast(i18next.t('list_updated', { count: updated })));
} else {
dispatch(addSuccessToast('all_lists_up_to_date_toast'));
}
dispatch(getFilteringStatus());
dispatch(hideLoading());
} catch (error) {
dispatch(addErrorToast({ error }));
dispatch(refreshFiltersFailure());
dispatch(hideLoading());
}
};
export const setFiltersConfigRequest = createAction('SET_FILTERS_CONFIG_REQUEST');
export const setFiltersConfigFailure = createAction('SET_FILTERS_CONFIG_FAILURE');
export const setFiltersConfigSuccess = createAction('SET_FILTERS_CONFIG_SUCCESS');
export const setFiltersConfig = (config) => async (dispatch, getState) => {
dispatch(setFiltersConfigRequest());
try {
const { enabled } = config;
const prevEnabled = getState().filtering.enabled;
let successToastMessage = 'config_successfully_saved';
if (prevEnabled !== enabled) {
successToastMessage = enabled ? 'enabled_filtering_toast' : 'disabled_filtering_toast';
}
await apiClient.setFiltersConfig(config);
dispatch(addSuccessToast(successToastMessage));
dispatch(setFiltersConfigSuccess(config));
} catch (error) {
dispatch(addErrorToast({ error }));
dispatch(setFiltersConfigFailure());
}
};
export const checkHostRequest = createAction('CHECK_HOST_REQUEST');
export const checkHostFailure = createAction('CHECK_HOST_FAILURE');
export const checkHostSuccess = createAction('CHECK_HOST_SUCCESS');
/**
*
* @param {object} host
* @param {string} host.name
* @returns {undefined}
*/
export const checkHost = (host) => async (dispatch) => {
dispatch(checkHostRequest());
try {
const data = await apiClient.checkHost(host);
const { name: hostname } = host;
dispatch(checkHostSuccess({
hostname,
...data,
}));
} catch (error) {
dispatch(addErrorToast({ error }));
dispatch(checkHostFailure());
}
};

View File

@@ -1,17 +1,13 @@
import { createAction } from 'redux-actions';
import round from 'lodash/round';
import { t } from 'i18next';
import { showLoading, hideLoading } from 'react-redux-loading-bar';
import i18next from 'i18next';
import axios from 'axios';
import { normalizeHistory, normalizeFilteringStatus, normalizeLogs, normalizeTextarea } from '../helpers/helpers';
import { SETTINGS_NAMES } from '../helpers/constants';
import Api from '../api/Api';
const apiClient = new Api();
export const addErrorToast = createAction('ADD_ERROR_TOAST');
export const addSuccessToast = createAction('ADD_SUCCESS_TOAST');
export const removeToast = createAction('REMOVE_TOAST');
import { splitByNewLine, sortClients } from '../helpers/helpers';
import { CHECK_TIMEOUT, SETTINGS_NAMES } from '../helpers/constants';
import { areEqualVersions } from '../helpers/version';
import { getTlsStatus } from './encryption';
import apiClient from '../api/Api';
import { addErrorToast, addNoticeToast, addSuccessToast } from './toasts';
export const toggleSettingStatus = createAction('SETTING_STATUS_TOGGLE');
export const showSettingsFailure = createAction('SETTINGS_FAILURE_SHOW');
@@ -20,16 +16,6 @@ export const toggleSetting = (settingKey, status) => async (dispatch) => {
let successMessage = '';
try {
switch (settingKey) {
case SETTINGS_NAMES.filtering:
if (status) {
successMessage = 'disabled_filtering_toast';
await apiClient.disableFiltering();
} else {
successMessage = 'enabled_filtering_toast';
await apiClient.enableFiltering();
}
dispatch(toggleSettingStatus({ settingKey }));
break;
case SETTINGS_NAMES.safebrowsing:
if (status) {
successMessage = 'disabled_safe_browsing_toast';
@@ -73,24 +59,30 @@ export const initSettingsRequest = createAction('SETTINGS_INIT_REQUEST');
export const initSettingsFailure = createAction('SETTINGS_INIT_FAILURE');
export const initSettingsSuccess = createAction('SETTINGS_INIT_SUCCESS');
export const initSettings = settingsList => async (dispatch) => {
export const initSettings = (settingsList) => async (dispatch) => {
dispatch(initSettingsRequest());
try {
const filteringStatus = await apiClient.getFilteringStatus();
const safebrowsingStatus = await apiClient.getSafebrowsingStatus();
const parentalStatus = await apiClient.getParentalStatus();
const safesearchStatus = await apiClient.getSafesearchStatus();
const {
filtering,
safebrowsing,
parental,
safesearch,
} = settingsList;
const newSettingsList = {
filtering: { ...filtering, enabled: filteringStatus.enabled },
safebrowsing: { ...safebrowsing, enabled: safebrowsingStatus.enabled },
parental: { ...parental, enabled: parentalStatus.enabled },
safesearch: { ...safesearch, enabled: safesearchStatus.enabled },
safebrowsing: {
...safebrowsing,
enabled: safebrowsingStatus.enabled,
},
parental: {
...parental,
enabled: parentalStatus.enabled,
},
safesearch: {
...safesearch,
enabled: safesearchStatus.enabled,
},
};
dispatch(initSettingsSuccess({ settingsList: newSettingsList }));
} catch (error) {
@@ -99,38 +91,15 @@ export const initSettings = settingsList => async (dispatch) => {
}
};
export const getFilteringRequest = createAction('GET_FILTERING_REQUEST');
export const getFilteringFailure = createAction('GET_FILTERING_FAILURE');
export const getFilteringSuccess = createAction('GET_FILTERING_SUCCESS');
export const getFiltering = () => async (dispatch) => {
dispatch(getFilteringRequest());
try {
const filteringStatus = await apiClient.getFilteringStatus();
dispatch(getFilteringSuccess(filteringStatus.enabled));
} catch (error) {
dispatch(addErrorToast({ error }));
dispatch(getFilteringFailure());
}
};
export const toggleProtectionRequest = createAction('TOGGLE_PROTECTION_REQUEST');
export const toggleProtectionFailure = createAction('TOGGLE_PROTECTION_FAILURE');
export const toggleProtectionSuccess = createAction('TOGGLE_PROTECTION_SUCCESS');
export const toggleProtection = status => async (dispatch) => {
export const toggleProtection = (status) => async (dispatch) => {
dispatch(toggleProtectionRequest());
let successMessage = '';
try {
if (status) {
successMessage = 'disabled_protection';
await apiClient.disableGlobalProtection();
} else {
successMessage = 'enabled_protection';
await apiClient.enableGlobalProtection();
}
const successMessage = status ? 'disabled_protection' : 'enabled_protection';
await apiClient.setDnsConfig({ protection_enabled: !status });
dispatch(addSuccessToast(successMessage));
dispatch(toggleProtectionSuccess());
} catch (error) {
@@ -139,336 +108,167 @@ export const toggleProtection = status => async (dispatch) => {
}
};
export const dnsStatusRequest = createAction('DNS_STATUS_REQUEST');
export const dnsStatusFailure = createAction('DNS_STATUS_FAILURE');
export const dnsStatusSuccess = createAction('DNS_STATUS_SUCCESS');
export const getDnsStatus = () => async (dispatch) => {
dispatch(dnsStatusRequest());
try {
const dnsStatus = await apiClient.getGlobalStatus();
dispatch(dnsStatusSuccess(dnsStatus));
} catch (error) {
dispatch(addErrorToast({ error }));
dispatch(initSettingsFailure());
}
};
export const enableDnsRequest = createAction('ENABLE_DNS_REQUEST');
export const enableDnsFailure = createAction('ENABLE_DNS_FAILURE');
export const enableDnsSuccess = createAction('ENABLE_DNS_SUCCESS');
export const enableDns = () => async (dispatch) => {
dispatch(enableDnsRequest());
try {
await apiClient.startGlobalFiltering();
dispatch(enableDnsSuccess());
} catch (error) {
dispatch(addErrorToast({ error }));
dispatch(enableDnsFailure());
}
};
export const disableDnsRequest = createAction('DISABLE_DNS_REQUEST');
export const disableDnsFailure = createAction('DISABLE_DNS_FAILURE');
export const disableDnsSuccess = createAction('DISABLE_DNS_SUCCESS');
export const disableDns = () => async (dispatch) => {
dispatch(disableDnsRequest());
try {
await apiClient.stopGlobalFiltering();
dispatch(disableDnsSuccess());
} catch (error) {
dispatch(disableDnsFailure(error));
dispatch(addErrorToast({ error }));
}
};
export const getStatsRequest = createAction('GET_STATS_REQUEST');
export const getStatsFailure = createAction('GET_STATS_FAILURE');
export const getStatsSuccess = createAction('GET_STATS_SUCCESS');
export const getStats = () => async (dispatch) => {
dispatch(getStatsRequest());
try {
const stats = await apiClient.getGlobalStats();
const processedStats = {
...stats,
avg_processing_time: round(stats.avg_processing_time, 2),
};
dispatch(getStatsSuccess(processedStats));
} catch (error) {
dispatch(addErrorToast({ error }));
dispatch(getStatsFailure());
}
};
export const getVersionRequest = createAction('GET_VERSION_REQUEST');
export const getVersionFailure = createAction('GET_VERSION_FAILURE');
export const getVersionSuccess = createAction('GET_VERSION_SUCCESS');
export const getVersion = () => async (dispatch) => {
export const getVersion = (recheck = false) => async (dispatch, getState) => {
dispatch(getVersionRequest());
try {
const newVersion = await apiClient.getGlobalVersion();
dispatch(getVersionSuccess(newVersion));
const data = await apiClient.getGlobalVersion({ recheck_now: recheck });
dispatch(getVersionSuccess(data));
if (recheck) {
const { dnsVersion } = getState().dashboard;
const currentVersion = dnsVersion === 'undefined' ? 0 : dnsVersion;
if (data && !areEqualVersions(currentVersion, data.new_version)) {
dispatch(addSuccessToast('updates_checked'));
} else {
dispatch(addSuccessToast('updates_version_equal'));
}
}
} catch (error) {
dispatch(addErrorToast({ error }));
dispatch(getVersionFailure());
}
};
export const getTopStatsRequest = createAction('GET_TOP_STATS_REQUEST');
export const getTopStatsFailure = createAction('GET_TOP_STATS_FAILURE');
export const getTopStatsSuccess = createAction('GET_TOP_STATS_SUCCESS');
export const getUpdateRequest = createAction('GET_UPDATE_REQUEST');
export const getUpdateFailure = createAction('GET_UPDATE_FAILURE');
export const getUpdateSuccess = createAction('GET_UPDATE_SUCCESS');
export const getTopStats = () => async (dispatch, getState) => {
dispatch(getTopStatsRequest());
const timer = setInterval(async () => {
const state = getState();
if (state.dashboard.isCoreRunning) {
clearInterval(timer);
try {
const stats = await apiClient.getGlobalStatsTop();
dispatch(getTopStatsSuccess(stats));
} catch (error) {
dispatch(addErrorToast({ error }));
dispatch(getTopStatsFailure(error));
const checkStatus = async (handleRequestSuccess, handleRequestError, attempts = 60) => {
let timeout;
if (attempts === 0) {
handleRequestError();
}
const rmTimeout = (t) => t && clearTimeout(t);
try {
const response = await axios.get('control/status');
rmTimeout(timeout);
if (response?.status === 200) {
handleRequestSuccess(response);
if (response.data.running === false) {
timeout = setTimeout(
checkStatus,
CHECK_TIMEOUT,
handleRequestSuccess,
handleRequestError,
attempts - 1,
);
}
}
}, 100);
} catch (error) {
rmTimeout(timeout);
timeout = setTimeout(
checkStatus,
CHECK_TIMEOUT,
handleRequestSuccess,
handleRequestError,
attempts - 1,
);
}
};
export const getLogsRequest = createAction('GET_LOGS_REQUEST');
export const getLogsFailure = createAction('GET_LOGS_FAILURE');
export const getLogsSuccess = createAction('GET_LOGS_SUCCESS');
export const getUpdate = () => async (dispatch, getState) => {
const { dnsVersion } = getState().dashboard;
export const getLogs = () => async (dispatch, getState) => {
dispatch(getLogsRequest());
const timer = setInterval(async () => {
const state = getState();
if (state.dashboard.isCoreRunning) {
clearInterval(timer);
try {
const logs = normalizeLogs(await apiClient.getQueryLog());
dispatch(getLogsSuccess(logs));
} catch (error) {
dispatch(addErrorToast({ error }));
dispatch(getLogsFailure(error));
}
dispatch(getUpdateRequest());
const handleRequestError = () => {
dispatch(addNoticeToast({ error: 'update_failed' }));
dispatch(getUpdateFailure());
};
const handleRequestSuccess = (response) => {
const responseVersion = response.data?.version;
if (dnsVersion !== responseVersion) {
dispatch(getUpdateSuccess());
window.location.reload(true);
}
}, 100);
};
try {
await apiClient.getUpdate();
checkStatus(handleRequestSuccess, handleRequestError);
} catch (error) {
handleRequestError();
}
};
export const toggleLogStatusRequest = createAction('TOGGLE_LOGS_REQUEST');
export const toggleLogStatusFailure = createAction('TOGGLE_LOGS_FAILURE');
export const toggleLogStatusSuccess = createAction('TOGGLE_LOGS_SUCCESS');
export const getClientsRequest = createAction('GET_CLIENTS_REQUEST');
export const getClientsFailure = createAction('GET_CLIENTS_FAILURE');
export const getClientsSuccess = createAction('GET_CLIENTS_SUCCESS');
export const toggleLogStatus = queryLogEnabled => async (dispatch) => {
dispatch(toggleLogStatusRequest());
let toggleMethod;
let successMessage;
if (queryLogEnabled) {
toggleMethod = apiClient.disableQueryLog.bind(apiClient);
successMessage = 'query_log_disabled_toast';
} else {
toggleMethod = apiClient.enableQueryLog.bind(apiClient);
successMessage = 'query_log_enabled_toast';
}
export const getClients = () => async (dispatch) => {
dispatch(getClientsRequest());
try {
await toggleMethod();
dispatch(addSuccessToast(successMessage));
dispatch(toggleLogStatusSuccess());
const data = await apiClient.getClients();
const sortedClients = data.clients && sortClients(data.clients);
const sortedAutoClients = data.auto_clients && sortClients(data.auto_clients);
dispatch(getClientsSuccess({
clients: sortedClients || [],
autoClients: sortedAutoClients || [],
supportedTags: data.supported_tags || [],
}));
} catch (error) {
dispatch(addErrorToast({ error }));
dispatch(toggleLogStatusFailure());
dispatch(getClientsFailure());
}
};
export const setRulesRequest = createAction('SET_RULES_REQUEST');
export const setRulesFailure = createAction('SET_RULES_FAILURE');
export const setRulesSuccess = createAction('SET_RULES_SUCCESS');
export const getProfileRequest = createAction('GET_PROFILE_REQUEST');
export const getProfileFailure = createAction('GET_PROFILE_FAILURE');
export const getProfileSuccess = createAction('GET_PROFILE_SUCCESS');
export const setRules = rules => async (dispatch) => {
dispatch(setRulesRequest());
export const getProfile = () => async (dispatch) => {
dispatch(getProfileRequest());
try {
const replacedLineEndings = rules
.replace(/^\n/g, '')
.replace(/\n\s*\n/g, '\n');
await apiClient.setRules(replacedLineEndings);
dispatch(addSuccessToast('updated_custom_filtering_toast'));
dispatch(setRulesSuccess());
const profile = await apiClient.getProfile();
dispatch(getProfileSuccess(profile));
} catch (error) {
dispatch(addErrorToast({ error }));
dispatch(setRulesFailure());
dispatch(getProfileFailure());
}
};
export const getFilteringStatusRequest = createAction('GET_FILTERING_STATUS_REQUEST');
export const getFilteringStatusFailure = createAction('GET_FILTERING_STATUS_FAILURE');
export const getFilteringStatusSuccess = createAction('GET_FILTERING_STATUS_SUCCESS');
export const dnsStatusRequest = createAction('DNS_STATUS_REQUEST');
export const dnsStatusFailure = createAction('DNS_STATUS_FAILURE');
export const dnsStatusSuccess = createAction('DNS_STATUS_SUCCESS');
export const setDnsRunningStatus = createAction('SET_DNS_RUNNING_STATUS');
export const getFilteringStatus = () => async (dispatch) => {
dispatch(getFilteringStatusRequest());
try {
const status = await apiClient.getFilteringStatus();
dispatch(getFilteringStatusSuccess({ status: normalizeFilteringStatus(status) }));
} catch (error) {
dispatch(addErrorToast({ error }));
dispatch(getFilteringStatusFailure());
}
};
export const getDnsStatus = () => async (dispatch) => {
dispatch(dnsStatusRequest());
export const toggleFilterRequest = createAction('FILTER_ENABLE_REQUEST');
export const toggleFilterFailure = createAction('FILTER_ENABLE_FAILURE');
export const toggleFilterSuccess = createAction('FILTER_ENABLE_SUCCESS');
const handleRequestError = () => {
dispatch(addErrorToast({ error: 'dns_status_error' }));
dispatch(dnsStatusFailure());
window.location.reload(true);
};
export const toggleFilterStatus = url => async (dispatch, getState) => {
dispatch(toggleFilterRequest());
const state = getState();
const { filters } = state.filtering;
const filter = filters.filter(filter => filter.url === url)[0];
const { enabled } = filter;
let toggleStatusMethod;
if (enabled) {
toggleStatusMethod = apiClient.disableFilter.bind(apiClient);
} else {
toggleStatusMethod = apiClient.enableFilter.bind(apiClient);
}
try {
await toggleStatusMethod(url);
dispatch(toggleFilterSuccess(url));
dispatch(getFilteringStatus());
} catch (error) {
dispatch(addErrorToast({ error }));
dispatch(toggleFilterFailure());
}
};
export const refreshFiltersRequest = createAction('FILTERING_REFRESH_REQUEST');
export const refreshFiltersFailure = createAction('FILTERING_REFRESH_FAILURE');
export const refreshFiltersSuccess = createAction('FILTERING_REFRESH_SUCCESS');
export const refreshFilters = () => async (dispatch) => {
dispatch(refreshFiltersRequest());
dispatch(showLoading());
try {
const refreshText = await apiClient.refreshFilters();
dispatch(refreshFiltersSuccess());
if (refreshText.includes('OK')) {
if (refreshText.includes('OK 0')) {
dispatch(addSuccessToast('all_filters_up_to_date_toast'));
} else {
dispatch(addSuccessToast(refreshText.replace(/OK /g, '')));
}
const handleRequestSuccess = (response) => {
const dnsStatus = response.data;
const { running } = dnsStatus;
const runningStatus = dnsStatus && running;
if (runningStatus === true) {
dispatch(dnsStatusSuccess(dnsStatus));
dispatch(getVersion());
dispatch(getTlsStatus());
dispatch(getProfile());
} else {
dispatch(addErrorToast({ error: refreshText }));
dispatch(setDnsRunningStatus(running));
}
};
dispatch(getFilteringStatus());
dispatch(hideLoading());
} catch (error) {
dispatch(addErrorToast({ error }));
dispatch(refreshFiltersFailure());
dispatch(hideLoading());
}
};
export const handleRulesChange = createAction('HANDLE_RULES_CHANGE');
export const getStatsHistoryRequest = createAction('GET_STATS_HISTORY_REQUEST');
export const getStatsHistoryFailure = createAction('GET_STATS_HISTORY_FAILURE');
export const getStatsHistorySuccess = createAction('GET_STATS_HISTORY_SUCCESS');
export const getStatsHistory = () => async (dispatch) => {
dispatch(getStatsHistoryRequest());
try {
const statsHistory = await apiClient.getGlobalStatsHistory();
const normalizedHistory = normalizeHistory(statsHistory);
dispatch(getStatsHistorySuccess(normalizedHistory));
checkStatus(handleRequestSuccess, handleRequestError);
} catch (error) {
dispatch(addErrorToast({ error }));
dispatch(getStatsHistoryFailure());
}
};
export const addFilterRequest = createAction('ADD_FILTER_REQUEST');
export const addFilterFailure = createAction('ADD_FILTER_FAILURE');
export const addFilterSuccess = createAction('ADD_FILTER_SUCCESS');
export const addFilter = (url, name) => async (dispatch) => {
dispatch(addFilterRequest());
try {
await apiClient.addFilter(url, name);
dispatch(addFilterSuccess(url));
dispatch(getFilteringStatus());
} catch (error) {
dispatch(addErrorToast({ error }));
dispatch(addFilterFailure());
}
};
export const removeFilterRequest = createAction('ADD_FILTER_REQUEST');
export const removeFilterFailure = createAction('ADD_FILTER_FAILURE');
export const removeFilterSuccess = createAction('ADD_FILTER_SUCCESS');
export const removeFilter = url => async (dispatch) => {
dispatch(removeFilterRequest());
try {
await apiClient.removeFilter(url);
dispatch(removeFilterSuccess(url));
dispatch(getFilteringStatus());
} catch (error) {
dispatch(addErrorToast({ error }));
dispatch(removeFilterFailure());
}
};
export const toggleFilteringModal = createAction('FILTERING_MODAL_TOGGLE');
export const downloadQueryLogRequest = createAction('DOWNLOAD_QUERY_LOG_REQUEST');
export const downloadQueryLogFailure = createAction('DOWNLOAD_QUERY_LOG_FAILURE');
export const downloadQueryLogSuccess = createAction('DOWNLOAD_QUERY_LOG_SUCCESS');
export const downloadQueryLog = () => async (dispatch) => {
let data;
dispatch(downloadQueryLogRequest());
try {
data = await apiClient.downloadQueryLog();
dispatch(downloadQueryLogSuccess());
} catch (error) {
dispatch(addErrorToast({ error }));
dispatch(downloadQueryLogFailure());
}
return data;
};
export const handleUpstreamChange = createAction('HANDLE_UPSTREAM_CHANGE');
export const setUpstreamRequest = createAction('SET_UPSTREAM_REQUEST');
export const setUpstreamFailure = createAction('SET_UPSTREAM_FAILURE');
export const setUpstreamSuccess = createAction('SET_UPSTREAM_SUCCESS');
export const setUpstream = config => async (dispatch) => {
dispatch(setUpstreamRequest());
try {
const values = { ...config };
values.bootstrap_dns = (
values.bootstrap_dns && normalizeTextarea(values.bootstrap_dns)
) || [];
values.upstream_dns = (
values.upstream_dns && normalizeTextarea(values.upstream_dns)
) || [];
await apiClient.setUpstream(values);
dispatch(addSuccessToast('updated_upstream_dns_toast'));
dispatch(setUpstreamSuccess());
} catch (error) {
dispatch(addErrorToast({ error }));
dispatch(setUpstreamFailure());
handleRequestError(error);
}
};
@@ -476,27 +276,24 @@ export const testUpstreamRequest = createAction('TEST_UPSTREAM_REQUEST');
export const testUpstreamFailure = createAction('TEST_UPSTREAM_FAILURE');
export const testUpstreamSuccess = createAction('TEST_UPSTREAM_SUCCESS');
export const testUpstream = config => async (dispatch) => {
export const testUpstream = (config) => async (dispatch) => {
dispatch(testUpstreamRequest());
try {
const values = { ...config };
values.bootstrap_dns = (
values.bootstrap_dns && normalizeTextarea(values.bootstrap_dns)
) || [];
values.upstream_dns = (
values.upstream_dns && normalizeTextarea(values.upstream_dns)
) || [];
values.bootstrap_dns = splitByNewLine(values.bootstrap_dns);
values.upstream_dns = splitByNewLine(values.upstream_dns);
const upstreamResponse = await apiClient.testUpstream(values);
const testMessages = Object.keys(upstreamResponse).map((key) => {
const message = upstreamResponse[key];
if (message !== 'OK') {
dispatch(addErrorToast({ error: t('dns_test_not_ok_toast', { key }) }));
}
return message;
});
const testMessages = Object.keys(upstreamResponse)
.map((key) => {
const message = upstreamResponse[key];
if (message !== 'OK') {
dispatch(addErrorToast({ error: i18next.t('dns_test_not_ok_toast', { key }) }));
}
return message;
});
if (testMessages.every(message => message === 'OK')) {
if (testMessages.every((message) => message === 'OK')) {
dispatch(addSuccessToast('dns_test_ok_toast'));
}
@@ -511,7 +308,7 @@ export const changeLanguageRequest = createAction('CHANGE_LANGUAGE_REQUEST');
export const changeLanguageFailure = createAction('CHANGE_LANGUAGE_FAILURE');
export const changeLanguageSuccess = createAction('CHANGE_LANGUAGE_SUCCESS');
export const changeLanguage = lang => async (dispatch) => {
export const changeLanguage = (lang) => async (dispatch) => {
dispatch(changeLanguageRequest());
try {
await apiClient.changeLanguage(lang);
@@ -571,7 +368,7 @@ export const findActiveDhcpRequest = createAction('FIND_ACTIVE_DHCP_REQUEST');
export const findActiveDhcpSuccess = createAction('FIND_ACTIVE_DHCP_SUCCESS');
export const findActiveDhcpFailure = createAction('FIND_ACTIVE_DHCP_FAILURE');
export const findActiveDhcp = name => async (dispatch) => {
export const findActiveDhcp = (name) => async (dispatch) => {
dispatch(findActiveDhcpRequest());
try {
const activeDhcp = await apiClient.findActiveDhcp(name);
@@ -586,41 +383,18 @@ export const setDhcpConfigRequest = createAction('SET_DHCP_CONFIG_REQUEST');
export const setDhcpConfigSuccess = createAction('SET_DHCP_CONFIG_SUCCESS');
export const setDhcpConfigFailure = createAction('SET_DHCP_CONFIG_FAILURE');
// TODO rewrite findActiveDhcp part
export const setDhcpConfig = values => async (dispatch, getState) => {
export const setDhcpConfig = (values) => async (dispatch, getState) => {
const { config } = getState().dhcp;
const updatedConfig = { ...config, ...values };
dispatch(setDhcpConfigRequest());
if (values.interface_name) {
dispatch(findActiveDhcpRequest());
try {
const activeDhcp = await apiClient.findActiveDhcp(values.interface_name);
dispatch(findActiveDhcpSuccess(activeDhcp));
if (!activeDhcp.found) {
try {
await apiClient.setDhcpConfig(updatedConfig);
dispatch(setDhcpConfigSuccess(updatedConfig));
dispatch(addSuccessToast('dhcp_config_saved'));
} catch (error) {
dispatch(addErrorToast({ error }));
dispatch(setDhcpConfigFailure());
}
} else {
dispatch(addErrorToast({ error: 'dhcp_found' }));
}
} catch (error) {
dispatch(addErrorToast({ error }));
dispatch(findActiveDhcpFailure());
}
} else {
try {
await apiClient.setDhcpConfig(updatedConfig);
dispatch(setDhcpConfigSuccess(updatedConfig));
dispatch(addSuccessToast('dhcp_config_saved'));
} catch (error) {
dispatch(addErrorToast({ error }));
dispatch(setDhcpConfigFailure());
}
dispatch(findActiveDhcp(values.interface_name));
try {
await apiClient.setDhcpConfig(updatedConfig);
dispatch(setDhcpConfigSuccess(updatedConfig));
dispatch(addSuccessToast('dhcp_config_saved'));
} catch (error) {
dispatch(addErrorToast({ error }));
dispatch(setDhcpConfigFailure());
}
};
@@ -628,55 +402,84 @@ export const toggleDhcpRequest = createAction('TOGGLE_DHCP_REQUEST');
export const toggleDhcpFailure = createAction('TOGGLE_DHCP_FAILURE');
export const toggleDhcpSuccess = createAction('TOGGLE_DHCP_SUCCESS');
// TODO rewrite findActiveDhcp part
export const toggleDhcp = config => async (dispatch) => {
export const toggleDhcp = (values) => async (dispatch) => {
dispatch(toggleDhcpRequest());
let config = {
...values,
enabled: false,
};
let successMessage = 'disabled_dhcp';
if (config.enabled) {
try {
await apiClient.setDhcpConfig({ ...config, enabled: false });
dispatch(toggleDhcpSuccess());
dispatch(addSuccessToast('disabled_dhcp'));
} catch (error) {
dispatch(addErrorToast({ error }));
dispatch(toggleDhcpFailure());
}
} else {
dispatch(findActiveDhcpRequest());
try {
const activeDhcp = await apiClient.findActiveDhcp(config.interface_name);
dispatch(findActiveDhcpSuccess(activeDhcp));
if (!activeDhcp.found) {
try {
await apiClient.setDhcpConfig({ ...config, enabled: true });
dispatch(toggleDhcpSuccess());
dispatch(addSuccessToast('enabled_dhcp'));
} catch (error) {
dispatch(addErrorToast({ error }));
dispatch(toggleDhcpFailure());
}
} else {
dispatch(addErrorToast({ error: 'dhcp_found' }));
}
} catch (error) {
dispatch(addErrorToast({ error }));
dispatch(findActiveDhcpFailure());
}
if (!values.enabled) {
config = {
...values,
enabled: true,
};
successMessage = 'enabled_dhcp';
dispatch(findActiveDhcp(values.interface_name));
}
};
export const getClientsRequest = createAction('GET_CLIENTS_REQUEST');
export const getClientsFailure = createAction('GET_CLIENTS_FAILURE');
export const getClientsSuccess = createAction('GET_CLIENTS_SUCCESS');
export const getClients = () => async (dispatch) => {
dispatch(getClientsRequest());
try {
const clients = await apiClient.getGlobalClients();
dispatch(getClientsSuccess(clients));
await apiClient.setDhcpConfig(config);
dispatch(toggleDhcpSuccess());
dispatch(addSuccessToast(successMessage));
} catch (error) {
dispatch(addErrorToast({ error }));
dispatch(getClientsFailure());
dispatch(toggleDhcpFailure());
}
};
export const resetDhcpRequest = createAction('RESET_DHCP_REQUEST');
export const resetDhcpSuccess = createAction('RESET_DHCP_SUCCESS');
export const resetDhcpFailure = createAction('RESET_DHCP_FAILURE');
export const resetDhcp = () => async (dispatch) => {
dispatch(resetDhcpRequest());
try {
const status = await apiClient.resetDhcp();
dispatch(resetDhcpSuccess(status));
dispatch(addSuccessToast('dhcp_config_saved'));
} catch (error) {
dispatch(addErrorToast({ error }));
dispatch(resetDhcpFailure());
}
};
export const toggleLeaseModal = createAction('TOGGLE_LEASE_MODAL');
export const addStaticLeaseRequest = createAction('ADD_STATIC_LEASE_REQUEST');
export const addStaticLeaseFailure = createAction('ADD_STATIC_LEASE_FAILURE');
export const addStaticLeaseSuccess = createAction('ADD_STATIC_LEASE_SUCCESS');
export const addStaticLease = (config) => async (dispatch) => {
dispatch(addStaticLeaseRequest());
try {
const name = config.hostname || config.ip;
await apiClient.addStaticLease(config);
dispatch(addStaticLeaseSuccess(config));
dispatch(addSuccessToast(i18next.t('dhcp_lease_added', { key: name })));
dispatch(toggleLeaseModal());
} catch (error) {
dispatch(addErrorToast({ error }));
dispatch(addStaticLeaseFailure());
}
};
export const removeStaticLeaseRequest = createAction('REMOVE_STATIC_LEASE_REQUEST');
export const removeStaticLeaseFailure = createAction('REMOVE_STATIC_LEASE_FAILURE');
export const removeStaticLeaseSuccess = createAction('REMOVE_STATIC_LEASE_SUCCESS');
export const removeStaticLease = (config) => async (dispatch) => {
dispatch(removeStaticLeaseRequest());
try {
const name = config.hostname || config.ip;
await apiClient.removeStaticLease(config);
dispatch(removeStaticLeaseSuccess(config));
dispatch(addSuccessToast(i18next.t('dhcp_lease_deleted', { key: name })));
} catch (error) {
dispatch(addErrorToast({ error }));
dispatch(removeStaticLeaseFailure());
}
};
export const removeToast = createAction('REMOVE_TOAST');

View File

@@ -1,8 +1,6 @@
import { createAction } from 'redux-actions';
import Api from '../api/Api';
import { addErrorToast, addSuccessToast } from './index';
const apiClient = new Api();
import apiClient from '../api/Api';
import { addErrorToast, addSuccessToast } from './toasts';
export const nextStep = createAction('NEXT_STEP');
export const prevStep = createAction('PREV_STEP');
@@ -26,7 +24,7 @@ export const setAllSettingsRequest = createAction('SET_ALL_SETTINGS_REQUEST');
export const setAllSettingsFailure = createAction('SET_ALL_SETTINGS_FAILURE');
export const setAllSettingsSuccess = createAction('SET_ALL_SETTINGS_SUCCESS');
export const setAllSettings = values => async (dispatch) => {
export const setAllSettings = (values) => async (dispatch) => {
dispatch(setAllSettingsRequest());
try {
const {
@@ -44,3 +42,18 @@ export const setAllSettings = values => async (dispatch) => {
dispatch(prevStep());
}
};
export const checkConfigRequest = createAction('CHECK_CONFIG_REQUEST');
export const checkConfigFailure = createAction('CHECK_CONFIG_FAILURE');
export const checkConfigSuccess = createAction('CHECK_CONFIG_SUCCESS');
export const checkConfig = (values) => async (dispatch) => {
dispatch(checkConfigRequest());
try {
const check = await apiClient.checkConfig(values);
dispatch(checkConfigSuccess(check));
} catch (error) {
dispatch(addErrorToast({ error }));
dispatch(checkConfigFailure());
}
};

View File

@@ -0,0 +1,21 @@
import { createAction } from 'redux-actions';
import apiClient from '../api/Api';
import { addErrorToast } from './toasts';
export const processLoginRequest = createAction('PROCESS_LOGIN_REQUEST');
export const processLoginFailure = createAction('PROCESS_LOGIN_FAILURE');
export const processLoginSuccess = createAction('PROCESS_LOGIN_SUCCESS');
export const processLogin = (values) => async (dispatch) => {
dispatch(processLoginRequest());
try {
await apiClient.login(values);
const dashboardUrl = window.location.origin + window.location.pathname.replace('/login.html', '/');
window.location.replace(dashboardUrl);
dispatch(processLoginSuccess());
} catch (error) {
dispatch(addErrorToast({ error }));
dispatch(processLoginFailure());
}
};

View File

@@ -0,0 +1,196 @@
import { createAction } from 'redux-actions';
import apiClient from '../api/Api';
import { normalizeLogs, getParamsForClientsSearch, addClientInfo } from '../helpers/helpers';
import {
DEFAULT_LOGS_FILTER,
TABLE_DEFAULT_PAGE_SIZE,
TABLE_FIRST_PAGE,
} from '../helpers/constants';
import { addErrorToast, addSuccessToast } from './toasts';
const getLogsWithParams = async (config) => {
const { older_than, filter, ...values } = config;
const rawLogs = await apiClient.getQueryLog({
...filter,
older_than,
});
const { data, oldest } = rawLogs;
let logs = normalizeLogs(data);
const clientsParams = getParamsForClientsSearch(logs, 'client');
if (Object.keys(clientsParams).length > 0) {
const clients = await apiClient.findClients(clientsParams);
logs = addClientInfo(logs, clients, 'client');
}
return {
logs,
oldest,
older_than,
filter,
...values,
};
};
export const getAdditionalLogsRequest = createAction('GET_ADDITIONAL_LOGS_REQUEST');
export const getAdditionalLogsFailure = createAction('GET_ADDITIONAL_LOGS_FAILURE');
export const getAdditionalLogsSuccess = createAction('GET_ADDITIONAL_LOGS_SUCCESS');
const checkFilteredLogs = async (data, filter, dispatch, total) => {
const { logs, oldest } = data;
const totalData = total || { logs };
const needToGetAdditionalLogs = (logs.length < TABLE_DEFAULT_PAGE_SIZE
|| totalData.logs.length < TABLE_DEFAULT_PAGE_SIZE)
&& oldest !== '';
if (needToGetAdditionalLogs) {
dispatch(getAdditionalLogsRequest());
try {
const additionalLogs = await getLogsWithParams({
older_than: oldest,
filter,
});
if (additionalLogs.oldest.length > 0) {
return await checkFilteredLogs(additionalLogs, filter, dispatch, {
logs: [...totalData.logs, ...additionalLogs.logs],
oldest: additionalLogs.oldest,
});
}
dispatch(getAdditionalLogsSuccess());
return totalData;
} catch (error) {
dispatch(addErrorToast({ error }));
dispatch(getAdditionalLogsFailure(error));
}
}
dispatch(getAdditionalLogsSuccess());
return totalData;
};
export const setLogsPagination = createAction('LOGS_PAGINATION');
export const setLogsPage = createAction('SET_LOG_PAGE');
export const toggleDetailedLogs = createAction('TOGGLE_DETAILED_LOGS');
export const getLogsRequest = createAction('GET_LOGS_REQUEST');
export const getLogsFailure = createAction('GET_LOGS_FAILURE');
export const getLogsSuccess = createAction('GET_LOGS_SUCCESS');
export const getLogs = (config) => async (dispatch, getState) => {
dispatch(getLogsRequest());
try {
const { isFiltered, filter, page } = getState().queryLogs;
const data = await getLogsWithParams({
...config,
filter,
});
if (isFiltered) {
const additionalData = await checkFilteredLogs(data, filter, dispatch);
const updatedData = additionalData.logs ? { ...data, ...additionalData } : data;
dispatch(getLogsSuccess(updatedData));
dispatch(setLogsPagination({
page,
pageSize: TABLE_DEFAULT_PAGE_SIZE,
}));
} else {
dispatch(getLogsSuccess(data));
}
} catch (error) {
dispatch(addErrorToast({ error }));
dispatch(getLogsFailure(error));
}
};
export const setLogsFilterRequest = createAction('SET_LOGS_FILTER_REQUEST');
/**
*
* @param filter
* @param {string} filter.search
* @param {string} filter.response_status query field of RESPONSE_FILTER object
* @returns function
*/
export const setLogsFilter = (filter) => setLogsFilterRequest(filter);
export const setFilteredLogsRequest = createAction('SET_FILTERED_LOGS_REQUEST');
export const setFilteredLogsFailure = createAction('SET_FILTERED_LOGS_FAILURE');
export const setFilteredLogsSuccess = createAction('SET_FILTERED_LOGS_SUCCESS');
export const setFilteredLogs = (filter) => async (dispatch) => {
dispatch(setFilteredLogsRequest());
try {
const data = await getLogsWithParams({
older_than: '',
filter,
});
const additionalData = await checkFilteredLogs(data, filter, dispatch);
const updatedData = additionalData.logs ? { ...data, ...additionalData } : data;
dispatch(setFilteredLogsSuccess({
...updatedData,
filter,
}));
dispatch(setLogsPage(TABLE_FIRST_PAGE));
} catch (error) {
dispatch(addErrorToast({ error }));
dispatch(setFilteredLogsFailure(error));
}
};
export const resetFilteredLogs = () => setFilteredLogs(DEFAULT_LOGS_FILTER);
export const refreshFilteredLogs = () => async (dispatch, getState) => {
const { filter } = getState().queryLogs;
await dispatch(setFilteredLogs(filter));
};
export const clearLogsRequest = createAction('CLEAR_LOGS_REQUEST');
export const clearLogsFailure = createAction('CLEAR_LOGS_FAILURE');
export const clearLogsSuccess = createAction('CLEAR_LOGS_SUCCESS');
export const clearLogs = () => async (dispatch) => {
dispatch(clearLogsRequest());
try {
await apiClient.clearQueryLog();
dispatch(clearLogsSuccess());
dispatch(addSuccessToast('query_log_cleared'));
} catch (error) {
dispatch(addErrorToast({ error }));
dispatch(clearLogsFailure(error));
}
};
export const getLogsConfigRequest = createAction('GET_LOGS_CONFIG_REQUEST');
export const getLogsConfigFailure = createAction('GET_LOGS_CONFIG_FAILURE');
export const getLogsConfigSuccess = createAction('GET_LOGS_CONFIG_SUCCESS');
export const getLogsConfig = () => async (dispatch) => {
dispatch(getLogsConfigRequest());
try {
const data = await apiClient.getQueryLogInfo();
dispatch(getLogsConfigSuccess(data));
} catch (error) {
dispatch(addErrorToast({ error }));
dispatch(getLogsConfigFailure());
}
};
export const setLogsConfigRequest = createAction('SET_LOGS_CONFIG_REQUEST');
export const setLogsConfigFailure = createAction('SET_LOGS_CONFIG_FAILURE');
export const setLogsConfigSuccess = createAction('SET_LOGS_CONFIG_SUCCESS');
export const setLogsConfig = (config) => async (dispatch) => {
dispatch(setLogsConfigRequest());
try {
await apiClient.setQueryLogConfig(config);
dispatch(addSuccessToast('config_successfully_saved'));
dispatch(setLogsConfigSuccess(config));
} catch (error) {
dispatch(addErrorToast({ error }));
dispatch(setLogsConfigFailure());
}
};

View File

@@ -0,0 +1,56 @@
import { createAction } from 'redux-actions';
import i18next from 'i18next';
import apiClient from '../api/Api';
import { addErrorToast, addSuccessToast } from './toasts';
export const toggleRewritesModal = createAction('TOGGLE_REWRITES_MODAL');
export const getRewritesListRequest = createAction('GET_REWRITES_LIST_REQUEST');
export const getRewritesListFailure = createAction('GET_REWRITES_LIST_FAILURE');
export const getRewritesListSuccess = createAction('GET_REWRITES_LIST_SUCCESS');
export const getRewritesList = () => async (dispatch) => {
dispatch(getRewritesListRequest());
try {
const data = await apiClient.getRewritesList();
dispatch(getRewritesListSuccess(data));
} catch (error) {
dispatch(addErrorToast({ error }));
dispatch(getRewritesListFailure());
}
};
export const addRewriteRequest = createAction('ADD_REWRITE_REQUEST');
export const addRewriteFailure = createAction('ADD_REWRITE_FAILURE');
export const addRewriteSuccess = createAction('ADD_REWRITE_SUCCESS');
export const addRewrite = (config) => async (dispatch) => {
dispatch(addRewriteRequest());
try {
await apiClient.addRewrite(config);
dispatch(addRewriteSuccess(config));
dispatch(toggleRewritesModal());
dispatch(getRewritesList());
dispatch(addSuccessToast(i18next.t('rewrite_added', { key: config.domain })));
} catch (error) {
dispatch(addErrorToast({ error }));
dispatch(addRewriteFailure());
}
};
export const deleteRewriteRequest = createAction('DELETE_REWRITE_REQUEST');
export const deleteRewriteFailure = createAction('DELETE_REWRITE_FAILURE');
export const deleteRewriteSuccess = createAction('DELETE_REWRITE_SUCCESS');
export const deleteRewrite = (config) => async (dispatch) => {
dispatch(deleteRewriteRequest());
try {
await apiClient.deleteRewrite(config);
dispatch(deleteRewriteSuccess());
dispatch(getRewritesList());
dispatch(addSuccessToast(i18next.t('rewrite_deleted', { key: config.domain })));
} catch (error) {
dispatch(addErrorToast({ error }));
dispatch(deleteRewriteFailure());
}
};

View File

@@ -0,0 +1,35 @@
import { createAction } from 'redux-actions';
import apiClient from '../api/Api';
import { addErrorToast, addSuccessToast } from './toasts';
export const getBlockedServicesRequest = createAction('GET_BLOCKED_SERVICES_REQUEST');
export const getBlockedServicesFailure = createAction('GET_BLOCKED_SERVICES_FAILURE');
export const getBlockedServicesSuccess = createAction('GET_BLOCKED_SERVICES_SUCCESS');
export const getBlockedServices = () => async (dispatch) => {
dispatch(getBlockedServicesRequest());
try {
const data = await apiClient.getBlockedServices();
dispatch(getBlockedServicesSuccess(data));
} catch (error) {
dispatch(addErrorToast({ error }));
dispatch(getBlockedServicesFailure());
}
};
export const setBlockedServicesRequest = createAction('SET_BLOCKED_SERVICES_REQUEST');
export const setBlockedServicesFailure = createAction('SET_BLOCKED_SERVICES_FAILURE');
export const setBlockedServicesSuccess = createAction('SET_BLOCKED_SERVICES_SUCCESS');
export const setBlockedServices = (values) => async (dispatch) => {
dispatch(setBlockedServicesRequest());
try {
await apiClient.setBlockedServices(values);
dispatch(setBlockedServicesSuccess());
dispatch(getBlockedServices());
dispatch(addSuccessToast('blocked_services_saved'));
} catch (error) {
dispatch(addErrorToast({ error }));
dispatch(setBlockedServicesFailure());
}
};

View File

@@ -0,0 +1,82 @@
import { createAction } from 'redux-actions';
import apiClient from '../api/Api';
import {
normalizeTopStats, secondsToMilliseconds, getParamsForClientsSearch, addClientInfo,
} from '../helpers/helpers';
import { addErrorToast, addSuccessToast } from './toasts';
export const getStatsConfigRequest = createAction('GET_STATS_CONFIG_REQUEST');
export const getStatsConfigFailure = createAction('GET_STATS_CONFIG_FAILURE');
export const getStatsConfigSuccess = createAction('GET_STATS_CONFIG_SUCCESS');
export const getStatsConfig = () => async (dispatch) => {
dispatch(getStatsConfigRequest());
try {
const data = await apiClient.getStatsInfo();
dispatch(getStatsConfigSuccess(data));
} catch (error) {
dispatch(addErrorToast({ error }));
dispatch(getStatsConfigFailure());
}
};
export const setStatsConfigRequest = createAction('SET_STATS_CONFIG_REQUEST');
export const setStatsConfigFailure = createAction('SET_STATS_CONFIG_FAILURE');
export const setStatsConfigSuccess = createAction('SET_STATS_CONFIG_SUCCESS');
export const setStatsConfig = (config) => async (dispatch) => {
dispatch(setStatsConfigRequest());
try {
await apiClient.setStatsConfig(config);
dispatch(addSuccessToast('config_successfully_saved'));
dispatch(setStatsConfigSuccess(config));
} catch (error) {
dispatch(addErrorToast({ error }));
dispatch(setStatsConfigFailure());
}
};
export const getStatsRequest = createAction('GET_STATS_REQUEST');
export const getStatsFailure = createAction('GET_STATS_FAILURE');
export const getStatsSuccess = createAction('GET_STATS_SUCCESS');
export const getStats = () => async (dispatch) => {
dispatch(getStatsRequest());
try {
const stats = await apiClient.getStats();
const normalizedTopClients = normalizeTopStats(stats.top_clients);
const clientsParams = getParamsForClientsSearch(normalizedTopClients, 'name');
const clients = await apiClient.findClients(clientsParams);
const topClientsWithInfo = addClientInfo(normalizedTopClients, clients, 'name');
const normalizedStats = {
...stats,
top_blocked_domains: normalizeTopStats(stats.top_blocked_domains),
top_clients: topClientsWithInfo,
top_queried_domains: normalizeTopStats(stats.top_queried_domains),
avg_processing_time: secondsToMilliseconds(stats.avg_processing_time),
};
dispatch(getStatsSuccess(normalizedStats));
} catch (error) {
dispatch(addErrorToast({ error }));
dispatch(getStatsFailure());
}
};
export const resetStatsRequest = createAction('RESET_STATS_REQUEST');
export const resetStatsFailure = createAction('RESET_STATS_FAILURE');
export const resetStatsSuccess = createAction('RESET_STATS_SUCCESS');
export const resetStats = () => async (dispatch) => {
dispatch(getStatsRequest());
try {
await apiClient.resetStats();
dispatch(addSuccessToast('statistics_cleared'));
dispatch(resetStatsSuccess());
} catch (error) {
dispatch(addErrorToast({ error }));
dispatch(resetStatsFailure());
}
};

View File

@@ -0,0 +1,5 @@
import { createAction } from 'redux-actions';
export const addErrorToast = createAction('ADD_ERROR_TOAST');
export const addSuccessToast = createAction('ADD_SUCCESS_TOAST');
export const addNoticeToast = createAction('ADD_NOTICE_TOAST');

View File

@@ -1,8 +1,9 @@
import axios from 'axios';
import subHours from 'date-fns/sub_hours';
import dateFormat from 'date-fns/format';
export default class Api {
import { getPathWithQueryString } from '../helpers/helpers';
import { R_PATH_LAST_PART } from '../helpers/constants';
class Api {
baseUrl = 'control';
async makeRequest(path, method = 'POST', config) {
@@ -17,6 +18,12 @@ export default class Api {
console.error(error);
const errorPath = `${this.baseUrl}/${path}`;
if (error.response) {
if (error.response.status === 403) {
const loginPageUrl = window.location.href.replace(R_PATH_LAST_PART, '/login.html');
window.location.replace(loginPageUrl);
return false;
}
throw new Error(`${errorPath} | ${error.response.data} | ${error.response.status}`);
}
throw new Error(`${errorPath} | ${error.message ? error.message : error}`);
@@ -24,98 +31,19 @@ export default class Api {
}
// Global methods
GLOBAL_RESTART = { path: 'restart', method: 'POST' };
GLOBAL_START = { path: 'start', method: 'POST' };
GLOBAL_STATS = { path: 'stats', method: 'GET' };
GLOBAL_STATS_HISTORY = { path: 'stats_history', method: 'GET' };
GLOBAL_STATUS = { path: 'status', method: 'GET' };
GLOBAL_STOP = { path: 'stop', method: 'POST' };
GLOBAL_STATS_TOP = { path: 'stats_top', method: 'GET' };
GLOBAL_QUERY_LOG = { path: 'querylog', method: 'GET' };
GLOBAL_QUERY_LOG_ENABLE = { path: 'querylog_enable', method: 'POST' };
GLOBAL_QUERY_LOG_DISABLE = { path: 'querylog_disable', method: 'POST' };
GLOBAL_SET_UPSTREAM_DNS = { path: 'set_upstreams_config', method: 'POST' };
GLOBAL_TEST_UPSTREAM_DNS = { path: 'test_upstream_dns', method: 'POST' };
GLOBAL_VERSION = { path: 'version.json', method: 'GET' };
GLOBAL_ENABLE_PROTECTION = { path: 'enable_protection', method: 'POST' };
GLOBAL_DISABLE_PROTECTION = { path: 'disable_protection', method: 'POST' };
GLOBAL_CLIENTS = { path: 'clients', method: 'GET' }
restartGlobalFiltering() {
const { path, method } = this.GLOBAL_RESTART;
return this.makeRequest(path, method);
}
GLOBAL_VERSION = { path: 'version.json', method: 'POST' };
startGlobalFiltering() {
const { path, method } = this.GLOBAL_START;
return this.makeRequest(path, method);
}
stopGlobalFiltering() {
const { path, method } = this.GLOBAL_STOP;
return this.makeRequest(path, method);
}
getGlobalStats() {
const { path, method } = this.GLOBAL_STATS;
return this.makeRequest(path, method);
}
getGlobalStatsHistory() {
const { path, method } = this.GLOBAL_STATS_HISTORY;
const format = 'YYYY-MM-DDTHH:mm:ssZ';
const dateNow = Date.now();
const config = {
params: {
start_time: dateFormat(subHours(dateNow, 24), format),
end_time: dateFormat(dateNow, format),
time_unit: 'hours',
},
};
return this.makeRequest(path, method, config);
}
GLOBAL_UPDATE = { path: 'update', method: 'POST' };
getGlobalStatus() {
const { path, method } = this.GLOBAL_STATUS;
return this.makeRequest(path, method);
}
getGlobalStatsTop() {
const { path, method } = this.GLOBAL_STATS_TOP;
return this.makeRequest(path, method);
}
getQueryLog() {
const { path, method } = this.GLOBAL_QUERY_LOG;
return this.makeRequest(path, method);
}
downloadQueryLog() {
const { path, method } = this.GLOBAL_QUERY_LOG;
const queryString = '?download=1';
return this.makeRequest(path + queryString, method);
}
enableQueryLog() {
const { path, method } = this.GLOBAL_QUERY_LOG_ENABLE;
return this.makeRequest(path, method);
}
disableQueryLog() {
const { path, method } = this.GLOBAL_QUERY_LOG_DISABLE;
return this.makeRequest(path, method);
}
setUpstream(url) {
const { path, method } = this.GLOBAL_SET_UPSTREAM_DNS;
const config = {
data: url,
headers: { 'Content-Type': 'application/json' },
};
return this.makeRequest(path, method, config);
}
testUpstream(servers) {
const { path, method } = this.GLOBAL_TEST_UPSTREAM_DNS;
const config = {
@@ -125,78 +53,70 @@ export default class Api {
return this.makeRequest(path, method, config);
}
getGlobalVersion() {
getGlobalVersion(data) {
const { path, method } = this.GLOBAL_VERSION;
return this.makeRequest(path, method);
const config = {
data,
headers: { 'Content-Type': 'application/json' },
};
return this.makeRequest(path, method, config);
}
enableGlobalProtection() {
const { path, method } = this.GLOBAL_ENABLE_PROTECTION;
return this.makeRequest(path, method);
}
disableGlobalProtection() {
const { path, method } = this.GLOBAL_DISABLE_PROTECTION;
return this.makeRequest(path, method);
}
getGlobalClients() {
const { path, method } = this.GLOBAL_CLIENTS;
getUpdate() {
const { path, method } = this.GLOBAL_UPDATE;
return this.makeRequest(path, method);
}
// Filtering
FILTERING_STATUS = { path: 'filtering/status', method: 'GET' };
FILTERING_ENABLE = { path: 'filtering/enable', method: 'POST' };
FILTERING_DISABLE = { path: 'filtering/disable', method: 'POST' };
FILTERING_ADD_FILTER = { path: 'filtering/add_url', method: 'PUT' };
FILTERING_REMOVE_FILTER = { path: 'filtering/remove_url', method: 'DELETE' };
FILTERING_SET_RULES = { path: 'filtering/set_rules', method: 'PUT' };
FILTERING_ENABLE_FILTER = { path: 'filtering/enable_url', method: 'POST' };
FILTERING_DISABLE_FILTER = { path: 'filtering/disable_url', method: 'POST' };
FILTERING_ADD_FILTER = { path: 'filtering/add_url', method: 'POST' };
FILTERING_REMOVE_FILTER = { path: 'filtering/remove_url', method: 'POST' };
FILTERING_SET_RULES = { path: 'filtering/set_rules', method: 'POST' };
FILTERING_REFRESH = { path: 'filtering/refresh', method: 'POST' };
FILTERING_SET_URL = { path: 'filtering/set_url', method: 'POST' };
FILTERING_CONFIG = { path: 'filtering/config', method: 'POST' };
FILTERING_CHECK_HOST = { path: 'filtering/check_host', method: 'GET' };
getFilteringStatus() {
const { path, method } = this.FILTERING_STATUS;
return this.makeRequest(path, method);
}
enableFiltering() {
const { path, method } = this.FILTERING_ENABLE;
return this.makeRequest(path, method);
}
disableFiltering() {
const { path, method } = this.FILTERING_DISABLE;
return this.makeRequest(path, method);
}
// TODO find out when to use force parameter
refreshFilters() {
refreshFilters(config) {
const { path, method } = this.FILTERING_REFRESH;
return this.makeRequest(path, method);
const parameters = {
data: config,
headers: { 'Content-Type': 'application/json' },
};
return this.makeRequest(path, method, parameters);
}
addFilter(url, name) {
addFilter(config) {
const { path, method } = this.FILTERING_ADD_FILTER;
const config = {
data: {
name,
url,
},
const parameters = {
data: config,
headers: { 'Content-Type': 'application/json' },
};
return this.makeRequest(path, method, config);
return this.makeRequest(path, method, parameters);
}
removeFilter(url) {
removeFilter(config) {
const { path, method } = this.FILTERING_REMOVE_FILTER;
const parameter = 'url';
const requestBody = `${parameter}=${url}`;
const config = {
data: requestBody,
header: { 'Content-Type': 'text/plain' },
const parameters = {
data: config,
headers: { 'Content-Type': 'application/json' },
};
return this.makeRequest(path, method, config);
return this.makeRequest(path, method, parameters);
}
setRules(rules) {
@@ -208,31 +128,35 @@ export default class Api {
return this.makeRequest(path, method, parameters);
}
enableFilter(url) {
const { path, method } = this.FILTERING_ENABLE_FILTER;
const parameter = 'url';
const requestBody = `${parameter}=${url}`;
const config = {
data: requestBody,
header: { 'Content-Type': 'text/plain' },
setFiltersConfig(config) {
const { path, method } = this.FILTERING_CONFIG;
const parameters = {
data: config,
headers: { 'Content-Type': 'application/json' },
};
return this.makeRequest(path, method, config);
return this.makeRequest(path, method, parameters);
}
disableFilter(url) {
const { path, method } = this.FILTERING_DISABLE_FILTER;
const parameter = 'url';
const requestBody = `${parameter}=${url}`;
const config = {
data: requestBody,
header: { 'Content-Type': 'text/plain' },
setFilterUrl(config) {
const { path, method } = this.FILTERING_SET_URL;
const parameters = {
data: config,
headers: { 'Content-Type': 'application/json' },
};
return this.makeRequest(path, method, config);
return this.makeRequest(path, method, parameters);
}
checkHost(params) {
const { path, method } = this.FILTERING_CHECK_HOST;
const url = getPathWithQueryString(path, params);
return this.makeRequest(url, method);
}
// Parental
PARENTAL_STATUS = { path: 'parental/status', method: 'GET' };
PARENTAL_ENABLE = { path: 'parental/enable', method: 'POST' };
PARENTAL_DISABLE = { path: 'parental/disable', method: 'POST' };
getParentalStatus() {
@@ -257,7 +181,9 @@ export default class Api {
// Safebrowsing
SAFEBROWSING_STATUS = { path: 'safebrowsing/status', method: 'GET' };
SAFEBROWSING_ENABLE = { path: 'safebrowsing/enable', method: 'POST' };
SAFEBROWSING_DISABLE = { path: 'safebrowsing/disable', method: 'POST' };
getSafebrowsingStatus() {
@@ -277,7 +203,9 @@ export default class Api {
// Safesearch
SAFESEARCH_STATUS = { path: 'safesearch/status', method: 'GET' };
SAFESEARCH_ENABLE = { path: 'safesearch/enable', method: 'POST' };
SAFESEARCH_DISABLE = { path: 'safesearch/disable', method: 'POST' };
getSafesearchStatus() {
@@ -297,6 +225,7 @@ export default class Api {
// Language
CURRENT_LANGUAGE = { path: 'i18n/current_language', method: 'GET' };
CHANGE_LANGUAGE = { path: 'i18n/change_language', method: 'POST' };
getCurrentLanguage() {
@@ -315,10 +244,19 @@ export default class Api {
// DHCP
DHCP_STATUS = { path: 'dhcp/status', method: 'GET' };
DHCP_SET_CONFIG = { path: 'dhcp/set_config', method: 'POST' };
DHCP_FIND_ACTIVE = { path: 'dhcp/find_active_dhcp', method: 'POST' };
DHCP_INTERFACES = { path: 'dhcp/interfaces', method: 'GET' };
DHCP_ADD_STATIC_LEASE = { path: 'dhcp/add_static_lease', method: 'POST' };
DHCP_REMOVE_STATIC_LEASE = { path: 'dhcp/remove_static_lease', method: 'POST' };
DHCP_RESET = { path: 'dhcp/reset', method: 'POST' };
getDhcpStatus() {
const { path, method } = this.DHCP_STATUS;
return this.makeRequest(path, method);
@@ -347,10 +285,36 @@ export default class Api {
return this.makeRequest(path, method, parameters);
}
addStaticLease(config) {
const { path, method } = this.DHCP_ADD_STATIC_LEASE;
const parameters = {
data: config,
headers: { 'Content-Type': 'application/json' },
};
return this.makeRequest(path, method, parameters);
}
removeStaticLease(config) {
const { path, method } = this.DHCP_REMOVE_STATIC_LEASE;
const parameters = {
data: config,
headers: { 'Content-Type': 'application/json' },
};
return this.makeRequest(path, method, parameters);
}
resetDhcp() {
const { path, method } = this.DHCP_RESET;
return this.makeRequest(path, method);
}
// Installation
INSTALL_GET_ADDRESSES = { path: 'install/get_addresses', method: 'GET' };
INSTALL_CONFIGURE = { path: 'install/configure', method: 'POST' };
INSTALL_CHECK_CONFIG = { path: 'install/check_config', method: 'POST' };
getDefaultAddresses() {
const { path, method } = this.INSTALL_GET_ADDRESSES;
return this.makeRequest(path, method);
@@ -365,9 +329,20 @@ export default class Api {
return this.makeRequest(path, method, parameters);
}
checkConfig(config) {
const { path, method } = this.INSTALL_CHECK_CONFIG;
const parameters = {
data: config,
headers: { 'Content-Type': 'application/json' },
};
return this.makeRequest(path, method, parameters);
}
// DNS-over-HTTPS and DNS-over-TLS
TLS_STATUS = { path: 'tls/status', method: 'GET' };
TLS_CONFIG = { path: 'tls/configure', method: 'POST' };
TLS_VALIDATE = { path: 'tls/validate', method: 'POST' };
getTlsStatus() {
@@ -392,4 +367,230 @@ export default class Api {
};
return this.makeRequest(path, method, parameters);
}
// Per-client settings
GET_CLIENTS = { path: 'clients', method: 'GET' };
FIND_CLIENTS = { path: 'clients/find', method: 'GET' };
ADD_CLIENT = { path: 'clients/add', method: 'POST' };
DELETE_CLIENT = { path: 'clients/delete', method: 'POST' };
UPDATE_CLIENT = { path: 'clients/update', method: 'POST' };
getClients() {
const { path, method } = this.GET_CLIENTS;
return this.makeRequest(path, method);
}
addClient(config) {
const { path, method } = this.ADD_CLIENT;
const parameters = {
data: config,
headers: { 'Content-Type': 'application/json' },
};
return this.makeRequest(path, method, parameters);
}
deleteClient(config) {
const { path, method } = this.DELETE_CLIENT;
const parameters = {
data: config,
headers: { 'Content-Type': 'application/json' },
};
return this.makeRequest(path, method, parameters);
}
updateClient(config) {
const { path, method } = this.UPDATE_CLIENT;
const parameters = {
data: config,
headers: { 'Content-Type': 'application/json' },
};
return this.makeRequest(path, method, parameters);
}
findClients(params) {
const { path, method } = this.FIND_CLIENTS;
const url = getPathWithQueryString(path, params);
return this.makeRequest(url, method);
}
// DNS access settings
ACCESS_LIST = { path: 'access/list', method: 'GET' };
ACCESS_SET = { path: 'access/set', method: 'POST' };
getAccessList() {
const { path, method } = this.ACCESS_LIST;
return this.makeRequest(path, method);
}
setAccessList(config) {
const { path, method } = this.ACCESS_SET;
const parameters = {
data: config,
headers: { 'Content-Type': 'application/json' },
};
return this.makeRequest(path, method, parameters);
}
// DNS rewrites
REWRITES_LIST = { path: 'rewrite/list', method: 'GET' };
REWRITE_ADD = { path: 'rewrite/add', method: 'POST' };
REWRITE_DELETE = { path: 'rewrite/delete', method: 'POST' };
getRewritesList() {
const { path, method } = this.REWRITES_LIST;
return this.makeRequest(path, method);
}
addRewrite(config) {
const { path, method } = this.REWRITE_ADD;
const parameters = {
data: config,
headers: { 'Content-Type': 'application/json' },
};
return this.makeRequest(path, method, parameters);
}
deleteRewrite(config) {
const { path, method } = this.REWRITE_DELETE;
const parameters = {
data: config,
headers: { 'Content-Type': 'application/json' },
};
return this.makeRequest(path, method, parameters);
}
// Blocked services
BLOCKED_SERVICES_LIST = { path: 'blocked_services/list', method: 'GET' };
BLOCKED_SERVICES_SET = { path: 'blocked_services/set', method: 'POST' };
getBlockedServices() {
const { path, method } = this.BLOCKED_SERVICES_LIST;
return this.makeRequest(path, method);
}
setBlockedServices(config) {
const { path, method } = this.BLOCKED_SERVICES_SET;
const parameters = {
data: config,
headers: { 'Content-Type': 'application/json' },
};
return this.makeRequest(path, method, parameters);
}
// Settings for statistics
GET_STATS = { path: 'stats', method: 'GET' };
STATS_INFO = { path: 'stats_info', method: 'GET' };
STATS_CONFIG = { path: 'stats_config', method: 'POST' };
STATS_RESET = { path: 'stats_reset', method: 'POST' };
getStats() {
const { path, method } = this.GET_STATS;
return this.makeRequest(path, method);
}
getStatsInfo() {
const { path, method } = this.STATS_INFO;
return this.makeRequest(path, method);
}
setStatsConfig(data) {
const { path, method } = this.STATS_CONFIG;
const config = {
data,
headers: { 'Content-Type': 'application/json' },
};
return this.makeRequest(path, method, config);
}
resetStats() {
const { path, method } = this.STATS_RESET;
return this.makeRequest(path, method);
}
// Query log
GET_QUERY_LOG = { path: 'querylog', method: 'GET' };
QUERY_LOG_CONFIG = { path: 'querylog_config', method: 'POST' };
QUERY_LOG_INFO = { path: 'querylog_info', method: 'GET' };
QUERY_LOG_CLEAR = { path: 'querylog_clear', method: 'POST' };
getQueryLog(params) {
const { path, method } = this.GET_QUERY_LOG;
const url = getPathWithQueryString(path, params);
return this.makeRequest(url, method);
}
getQueryLogInfo() {
const { path, method } = this.QUERY_LOG_INFO;
return this.makeRequest(path, method);
}
setQueryLogConfig(data) {
const { path, method } = this.QUERY_LOG_CONFIG;
const config = {
data,
headers: { 'Content-Type': 'application/json' },
};
return this.makeRequest(path, method, config);
}
clearQueryLog() {
const { path, method } = this.QUERY_LOG_CLEAR;
return this.makeRequest(path, method);
}
// Login
LOGIN = { path: 'login', method: 'POST' };
login(data) {
const { path, method } = this.LOGIN;
const config = {
data,
headers: { 'Content-Type': 'application/json' },
};
return this.makeRequest(path, method, config);
}
// Profile
GET_PROFILE = { path: 'profile', method: 'GET' };
getProfile() {
const { path, method } = this.GET_PROFILE;
return this.makeRequest(path, method);
}
// DNS config
GET_DNS_CONFIG = { path: 'dns_info', method: 'GET' };
SET_DNS_CONFIG = { path: 'dns_config', method: 'POST' };
getDnsConfig() {
const { path, method } = this.GET_DNS_CONFIG;
return this.makeRequest(path, method);
}
setDnsConfig(data) {
const { path, method } = this.SET_DNS_CONFIG;
const config = {
data,
headers: { 'Content-Type': 'application/json' },
};
return this.makeRequest(path, method, config);
}
}
const apiClient = new Api();
export default apiClient;

View File

@@ -1,3 +1,12 @@
: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;
}
body {
margin: 0;
padding: 0;
@@ -18,6 +27,16 @@ body {
}
}
@media screen and (max-width: 992px) {
.container {
padding: 0 !important;
}
.container--wrap {
min-height: calc(100vh);
}
}
.loading-bar {
position: fixed;
top: 0;
@@ -27,6 +46,26 @@ body {
background: linear-gradient(45deg, rgba(99, 125, 120, 1) 0%, rgba(88, 177, 101, 1) 100%);
}
.hidden {
display: none;
@media (max-width: 575px) {
.container {
padding-right: 0;
padding-left: 0;
}
}
.modal-body--medium {
max-height: 20rem;
overflow-y: scroll;
}
.modal-body__item:not(:first-child) {
padding-top: 1.5rem;
}
.font-monospace {
font-family: var(--font-family-monospace);
}
.mw-75 {
max-width: 75% !important;
}

View File

@@ -1,7 +1,7 @@
import React, { Component, Fragment } from 'react';
import { HashRouter, Route } from 'react-router-dom';
import PropTypes from 'prop-types';
import { withNamespaces } from 'react-i18next';
import { withTranslation } from 'react-i18next';
import LoadingBar from 'react-redux-loading-bar';
import 'react-table/react-table.css';
@@ -12,21 +12,35 @@ import './index.css';
import Header from '../../containers/Header';
import Dashboard from '../../containers/Dashboard';
import Settings from '../../containers/Settings';
import Filters from '../../containers/Filters';
import CustomRules from '../../containers/CustomRules';
import DnsBlocklist from '../../containers/DnsBlocklist';
import DnsAllowlist from '../../containers/DnsAllowlist';
import DnsRewrites from '../../containers/DnsRewrites';
import Dns from '../../containers/Dns';
import Encryption from '../../containers/Encryption';
import Dhcp from '../../containers/Dhcp';
import Clients from '../../containers/Clients';
import Logs from '../../containers/Logs';
import SetupGuide from '../../containers/SetupGuide';
import Toasts from '../Toasts';
import Footer from '../ui/Footer';
import Status from '../ui/Status';
import UpdateTopline from '../ui/UpdateTopline';
import UpdateOverlay from '../ui/UpdateOverlay';
import EncryptionTopline from '../ui/EncryptionTopline';
import Icons from '../ui/Icons';
import i18n from '../../i18n';
import Loading from '../ui/Loading';
import { FILTERS_URLS, MENU_URLS, SETTINGS_URLS } from '../../helpers/constants';
import Services from '../Filters/Services';
import { getLogsUrlParams, setHtmlLangAttr } from '../../helpers/helpers';
class App extends Component {
componentDidMount() {
this.props.getDnsStatus();
this.props.getVersion();
this.props.getClients();
}
componentDidUpdate(prevProps) {
@@ -35,8 +49,12 @@ class App extends Component {
}
}
handleStatusChange = () => {
this.props.enableDns();
reloadPage = () => {
window.location.reload();
};
handleUpdate = () => {
this.props.getUpdate();
};
setLanguage = () => {
@@ -45,55 +63,82 @@ class App extends Component {
if (!processing) {
if (language) {
i18n.changeLanguage(language);
setHtmlLangAttr(language);
}
}
i18n.on('languageChanged', (lang) => {
this.props.changeLanguage(lang);
});
}
};
render() {
const { dashboard, encryption } = this.props;
const updateAvailable =
!dashboard.processingVersions &&
dashboard.isCoreRunning &&
dashboard.isUpdateAvailable;
const { dashboard, encryption, getVersion } = this.props;
const updateAvailable = dashboard.isCoreRunning && dashboard.isUpdateAvailable;
return (
<HashRouter hashType='noslash'>
<HashRouter hashType="noslash">
<Fragment>
{updateAvailable &&
<UpdateTopline
url={dashboard.announcementUrl}
version={dashboard.version}
/>
}
{!encryption.processing &&
{updateAvailable && (
<Fragment>
<UpdateTopline
url={dashboard.announcementUrl}
version={dashboard.newVersion}
canAutoUpdate={dashboard.canAutoUpdate}
getUpdate={this.handleUpdate}
processingUpdate={dashboard.processingUpdate}
/>
<UpdateOverlay processingUpdate={dashboard.processingUpdate} />
</Fragment>
)}
{!encryption.processing && (
<EncryptionTopline notAfter={encryption.not_after} />
}
)}
<LoadingBar className="loading-bar" updateTime={1000} />
<Route component={Header} />
<div className="container container--wrap">
{!dashboard.processing && !dashboard.isCoreRunning &&
<div className="container container--wrap pb-5">
{dashboard.processing && <Loading />}
{!dashboard.isCoreRunning && (
<div className="row row-cards">
<div className="col-lg-12">
<Status handleStatusChange={this.handleStatusChange} />
<Status reloadPage={this.reloadPage}
message="dns_start"
/>
<Loading />
</div>
</div>
}
{!dashboard.processing && dashboard.isCoreRunning &&
<Fragment>
<Route path="/" exact component={Dashboard} />
<Route path="/settings" component={Settings} />
<Route path="/filters" component={Filters} />
<Route path="/logs" component={Logs} />
<Route path="/guide" component={SetupGuide} />
</Fragment>
}
)}
{!dashboard.processing && dashboard.isCoreRunning && (
<>
<Route path={MENU_URLS.root} exact component={Dashboard} />
<Route
path={[`${MENU_URLS.logs}${getLogsUrlParams(':search?', ':response_status?')}`, MENU_URLS.logs]}
component={Logs} />
<Route path={MENU_URLS.guide} component={SetupGuide} />
<Route path={SETTINGS_URLS.settings} component={Settings} />
<Route path={SETTINGS_URLS.dns} component={Dns} />
<Route path={SETTINGS_URLS.encryption} component={Encryption} />
<Route path={SETTINGS_URLS.dhcp} component={Dhcp} />
<Route path={SETTINGS_URLS.clients} component={Clients} />
<Route path={FILTERS_URLS.dns_blocklists}
component={DnsBlocklist} />
<Route path={FILTERS_URLS.dns_allowlists}
component={DnsAllowlist} />
<Route path={FILTERS_URLS.dns_rewrites} component={DnsRewrites} />
<Route path={FILTERS_URLS.custom_rules} component={CustomRules} />
<Route path={FILTERS_URLS.blocked_services} component={Services} />
</>
)}
</div>
<Footer />
<Footer
dnsVersion={dashboard.dnsVersion}
dnsPort={dashboard.dnsPort}
processingVersion={dashboard.processingVersion}
getVersion={getVersion}
checkUpdateFlag={dashboard.checkUpdateFlag}
/>
<Toasts />
<Icons />
</Fragment>
</HashRouter>
);
@@ -102,14 +147,14 @@ class App extends Component {
App.propTypes = {
getDnsStatus: PropTypes.func,
getUpdate: PropTypes.func,
enableDns: PropTypes.func,
dashboard: PropTypes.object,
isCoreRunning: PropTypes.bool,
error: PropTypes.string,
getVersion: PropTypes.func,
changeLanguage: PropTypes.func,
encryption: PropTypes.object,
getClients: PropTypes.func,
getVersion: PropTypes.func,
};
export default withNamespaces()(App);
export default withTranslation()(App);

View File

@@ -1,79 +1,80 @@
import React, { Component } from 'react';
import React from 'react';
import ReactTable from 'react-table';
import PropTypes from 'prop-types';
import map from 'lodash/map';
import { withNamespaces, Trans } from 'react-i18next';
import { withTranslation, Trans } from 'react-i18next';
import Card from '../ui/Card';
import Cell from '../ui/Cell';
import Popover from '../ui/Popover';
import DomainCell from './DomainCell';
import { getTrackerData } from '../../helpers/trackers/trackers';
import { getPercent } from '../../helpers/helpers';
import { STATUS_COLORS } from '../../helpers/constants';
class BlockedDomains extends Component {
columns = [{
Header: 'IP',
accessor: 'ip',
Cell: (row) => {
const { value } = row;
const trackerData = getTrackerData(value);
const CountCell = (totalBlocked) => function cell(row) {
const { value } = row;
const percent = getPercent(totalBlocked, value);
return (
<div className="logs__row">
<div className="logs__text" title={value}>
{value}
</div>
{trackerData && <Popover data={trackerData} />}
</div>
);
},
}, {
Header: <Trans>requests_count</Trans>,
accessor: 'domain',
maxWidth: 190,
Cell: ({ value }) => {
const {
blockedFiltering,
replacedSafebrowsing,
replacedParental,
} = this.props;
const blocked = blockedFiltering + replacedSafebrowsing + replacedParental;
const percent = getPercent(blocked, value);
return <Cell value={value}
percent={percent}
color={STATUS_COLORS.red}
search={row.original.domain}
/>;
};
return (
<Cell value={value} percent={percent} color={STATUS_COLORS.red} />
);
},
}];
const BlockedDomains = ({
t,
refreshButton,
topBlockedDomains,
subtitle,
blockedFiltering,
replacedSafebrowsing,
replacedParental,
}) => {
const totalBlocked = blockedFiltering + replacedSafebrowsing + replacedParental;
render() {
const { t } = this.props;
return (
<Card title={ t('top_blocked_domains') } subtitle={ t('for_last_24_hours') } bodyType="card-table" refresh={this.props.refreshButton}>
<ReactTable
data={map(this.props.topBlockedDomains, (value, prop) => (
{ ip: prop, domain: value }
))}
columns={this.columns}
showPagination={false}
noDataText={ t('no_domains_found') }
minRows={6}
className="-striped -highlight card-table-overflow stats__table"
/>
</Card>
);
}
}
return (
<Card
title={t('top_blocked_domains')}
subtitle={subtitle}
bodyType="card-table"
refresh={refreshButton}
>
<ReactTable
data={topBlockedDomains.map(({ name: domain, count }) => ({
domain,
count,
}))}
columns={[
{
Header: <Trans>domain</Trans>,
accessor: 'domain',
Cell: DomainCell,
},
{
Header: <Trans>requests_count</Trans>,
accessor: 'count',
maxWidth: 190,
Cell: CountCell(totalBlocked),
},
]}
showPagination={false}
noDataText={t('no_domains_found')}
minRows={6}
defaultPageSize={100}
className="-highlight card-table-overflow--limited stats__table"
/>
</Card>
);
};
BlockedDomains.propTypes = {
topBlockedDomains: PropTypes.object.isRequired,
topBlockedDomains: PropTypes.array.isRequired,
blockedFiltering: PropTypes.number.isRequired,
replacedSafebrowsing: PropTypes.number.isRequired,
replacedParental: PropTypes.number.isRequired,
refreshButton: PropTypes.node.isRequired,
t: PropTypes.func,
subtitle: PropTypes.string.isRequired,
t: PropTypes.func.isRequired,
};
export default withNamespaces()(BlockedDomains);
export default withTranslation()(BlockedDomains);

View File

@@ -1,85 +1,145 @@
import React, { Component } from 'react';
import React from 'react';
import ReactTable from 'react-table';
import PropTypes from 'prop-types';
import map from 'lodash/map';
import { Trans, withNamespaces } from 'react-i18next';
import { Trans, withTranslation } from 'react-i18next';
import Card from '../ui/Card';
import Cell from '../ui/Cell';
import { getPercent, getClientName } from '../../helpers/helpers';
import { STATUS_COLORS } from '../../helpers/constants';
import { getPercent, getIpMatchListStatus } from '../../helpers/helpers';
import { IP_MATCH_LIST_STATUS, STATUS_COLORS } from '../../helpers/constants';
import { formatClientCell } from '../../helpers/formatClientCell';
class Clients extends Component {
getPercentColor = (percent) => {
if (percent > 50) {
return STATUS_COLORS.green;
} else if (percent > 10) {
return STATUS_COLORS.yellow;
const getClientsPercentColor = (percent) => {
if (percent > 50) {
return STATUS_COLORS.green;
}
if (percent > 10) {
return STATUS_COLORS.yellow;
}
return STATUS_COLORS.red;
};
const countCell = (dnsQueries) => function cell(row) {
const { value } = row;
const percent = getPercent(dnsQueries, value);
const percentColor = getClientsPercentColor(percent);
return <Cell value={value} percent={percent} color={percentColor} search={row.original.ip} />;
};
const renderBlockingButton = (ipMatchListStatus, ip, handleClick, processing) => {
const buttonProps = ipMatchListStatus === IP_MATCH_LIST_STATUS.NOT_FOUND
? {
className: 'btn-outline-danger',
text: 'block',
type: 'block',
}
return STATUS_COLORS.red;
}
: {
className: 'btn-outline-secondary',
text: 'unblock',
type: 'unblock',
};
columns = [{
Header: 'IP',
accessor: 'ip',
Cell: ({ value }) => {
const clientName = getClientName(this.props.clients, value);
let client;
return (
<div className="table__action button__action">
<button
type="button"
className={`btn btn-sm ${buttonProps.className}`}
onClick={() => handleClick(buttonProps.type, ip)}
disabled={processing}
>
<Trans>{buttonProps.text}</Trans>
</button>
</div>
);
};
if (clientName) {
client = <span>{clientName} <small>({value})</small></span>;
} else {
client = value;
}
const clientCell = (t, toggleClientStatus, processing, disallowedClients) => function cell(row) {
const { value } = row;
const ipMatchListStatus = getIpMatchListStatus(value, disallowedClients);
return (
<div className="logs__row logs__row--overflow">
<span className="logs__text" title={value}>
{client}
</span>
</div>
);
},
sortMethod: (a, b) => parseInt(a.replace(/\./g, ''), 10) - parseInt(b.replace(/\./g, ''), 10),
}, {
Header: <Trans>requests_count</Trans>,
accessor: 'count',
Cell: ({ value }) => {
const percent = getPercent(this.props.dnsQueries, value);
const percentColor = this.getPercentColor(percent);
return (
<>
<div className="logs__row logs__row--overflow logs__row--column">
{formatClientCell(row, true, false)}
</div>
{ipMatchListStatus !== IP_MATCH_LIST_STATUS.CIDR
&& renderBlockingButton(ipMatchListStatus, value, toggleClientStatus, processing)}
</>
);
};
return (
<Cell value={value} percent={percent} color={percentColor} />
);
},
}];
const Clients = ({
t,
refreshButton,
topClients,
subtitle,
dnsQueries,
toggleClientStatus,
processingAccessSet,
disallowedClients,
}) => (
<Card
title={t('top_clients')}
subtitle={subtitle}
bodyType="card-table"
refresh={refreshButton}
>
<ReactTable
data={topClients.map(({
name: ip, count, info, blocked,
}) => ({
ip,
count,
info,
blocked,
}))}
columns={[
{
Header: 'IP',
accessor: 'ip',
sortMethod: (a, b) => parseInt(a.replace(/\./g, ''), 10) - parseInt(b.replace(/\./g, ''), 10),
Cell: clientCell(t, toggleClientStatus, processingAccessSet, disallowedClients),
},
{
Header: <Trans>requests_count</Trans>,
accessor: 'count',
minWidth: 180,
maxWidth: 200,
Cell: countCell(dnsQueries),
},
]}
showPagination={false}
noDataText={t('no_clients_found')}
minRows={6}
defaultPageSize={100}
className="-highlight card-table-overflow--limited clients__table"
getTrProps={(_state, rowInfo) => {
if (!rowInfo) {
return {};
}
render() {
const { t } = this.props;
return (
<Card title={ t('top_clients') } subtitle={ t('for_last_24_hours') } bodyType="card-table" refresh={this.props.refreshButton}>
<ReactTable
data={map(this.props.topClients, (value, prop) => (
{ ip: prop, count: value }
))}
columns={this.columns}
showPagination={false}
noDataText={ t('no_clients_found') }
minRows={6}
className="-striped -highlight card-table-overflow"
/>
</Card>
);
}
}
const { ip } = rowInfo.original;
return getIpMatchListStatus(ip, disallowedClients)
=== IP_MATCH_LIST_STATUS.NOT_FOUND ? {} : { className: 'red' };
}}
/>
</Card>
);
Clients.propTypes = {
topClients: PropTypes.object.isRequired,
topClients: PropTypes.array.isRequired,
dnsQueries: PropTypes.number.isRequired,
refreshButton: PropTypes.node.isRequired,
clients: PropTypes.array.isRequired,
t: PropTypes.func,
autoClients: PropTypes.array.isRequired,
subtitle: PropTypes.string.isRequired,
t: PropTypes.func.isRequired,
toggleClientStatus: PropTypes.func.isRequired,
processingAccessSet: PropTypes.bool.isRequired,
disallowedClients: PropTypes.string.isRequired,
};
export default withNamespaces()(Clients);
export default withTranslation()(Clients);

View File

@@ -1,98 +1,111 @@
import React from 'react';
import PropTypes from 'prop-types';
import { Trans, withNamespaces } from 'react-i18next';
import propTypes from 'prop-types';
import { Trans, useTranslation } from 'react-i18next';
import round from 'lodash/round';
import { shallowEqual, useSelector } from 'react-redux';
import Card from '../ui/Card';
import { formatNumber } from '../../helpers/helpers';
import LogsSearchLink from '../ui/LogsSearchLink';
import { RESPONSE_FILTER } from '../../helpers/constants';
import Tooltip from '../ui/Tooltip';
const tooltipType = 'tooltip-custom--narrow';
const Row = ({
label, count, response_status, tooltipTitle, translationComponents,
}) => {
const content = response_status
? <LogsSearchLink response_status={response_status}>{formatNumber(count)}</LogsSearchLink>
: count;
const Counters = props => (
<Card title={ props.t('general_statistics') } subtitle={ props.t('for_last_24_hours') } bodyType="card-table" refresh={props.refreshButton}>
<table className="table card-table">
<tbody>
<tr>
<td>
<Trans>dns_query</Trans>
<Tooltip text={ props.t('number_of_dns_query_24_hours') } type={tooltipType} />
</td>
<td className="text-right">
<span className="text-muted">
{props.dnsQueries}
</span>
</td>
</tr>
<tr>
<td>
<a href="#filters">
<Trans>blocked_by</Trans>
</a>
<Tooltip text={ props.t('number_of_dns_query_blocked_24_hours') } type={tooltipType} />
</td>
<td className="text-right">
<span className="text-muted">
{props.blockedFiltering}
</span>
</td>
</tr>
<tr>
<td>
<Trans>stats_malware_phishing</Trans>
<Tooltip text={ props.t('number_of_dns_query_blocked_24_hours_by_sec') } type={tooltipType} />
</td>
<td className="text-right">
<span className="text-muted">
{props.replacedSafebrowsing}
</span>
</td>
</tr>
<tr>
<td>
<Trans>stats_adult</Trans>
<Tooltip text={ props.t('number_of_dns_query_blocked_24_hours_adult') } type={tooltipType} />
</td>
<td className="text-right">
<span className="text-muted">
{props.replacedParental}
</span>
</td>
</tr>
<tr>
<td>
<Trans>enforced_save_search</Trans>
<Tooltip text={ props.t('number_of_dns_query_to_safe_search') } type={tooltipType} />
</td>
<td className="text-right">
<span className="text-muted">
{props.replacedSafesearch}
</span>
</td>
</tr>
<tr>
<td>
<Trans>average_processing_time</Trans>
<Tooltip text={ props.t('average_processing_time_hint') } type={tooltipType} />
</td>
<td className="text-right">
<span className="text-muted">
{props.avgProcessingTime}
</span>
</td>
</tr>
</tbody>
</table>
</Card>
);
Counters.propTypes = {
dnsQueries: PropTypes.number.isRequired,
blockedFiltering: PropTypes.number.isRequired,
replacedSafebrowsing: PropTypes.number.isRequired,
replacedParental: PropTypes.number.isRequired,
replacedSafesearch: PropTypes.number.isRequired,
avgProcessingTime: PropTypes.number.isRequired,
refreshButton: PropTypes.node.isRequired,
t: PropTypes.func.isRequired,
return <tr key={label}>
<td>
<Trans components={translationComponents}>{label}</Trans>
<Tooltip content={tooltipTitle} placement="top"
className="tooltip-container tooltip-custom--narrow text-center">
<svg className="icons icon--20 icon--lightgray ml-1">
<use xlinkHref="#question" />
</svg>
</Tooltip>
</td>
<td className="text-right"><strong>{content}</strong></td>
</tr>;
};
export default withNamespaces()(Counters);
const Counters = ({ refreshButton, subtitle }) => {
const {
interval,
numDnsQueries,
numBlockedFiltering,
numReplacedSafebrowsing,
numReplacedParental,
numReplacedSafesearch,
avgProcessingTime,
} = useSelector((state) => state.stats, shallowEqual);
const { t } = useTranslation();
const rows = [
{
label: 'dns_query',
count: numDnsQueries,
tooltipTitle: interval === 1 ? 'number_of_dns_query_24_hours' : t('number_of_dns_query_days', { count: interval }),
response_status: RESPONSE_FILTER.ALL.query,
},
{
label: 'blocked_by',
count: numBlockedFiltering,
tooltipTitle: 'number_of_dns_query_blocked_24_hours',
response_status: RESPONSE_FILTER.BLOCKED.query,
translationComponents: [<a href="#filters" key="0">link</a>],
},
{
label: 'stats_malware_phishing',
count: numReplacedSafebrowsing,
tooltipTitle: 'number_of_dns_query_blocked_24_hours_by_sec',
response_status: RESPONSE_FILTER.BLOCKED_THREATS.query,
},
{
label: 'stats_adult',
count: numReplacedParental,
tooltipTitle: 'number_of_dns_query_blocked_24_hours_adult',
response_status: RESPONSE_FILTER.BLOCKED_ADULT_WEBSITES.query,
},
{
label: 'enforced_save_search',
count: numReplacedSafesearch,
tooltipTitle: 'number_of_dns_query_to_safe_search',
response_status: RESPONSE_FILTER.SAFE_SEARCH.query,
},
{
label: 'average_processing_time',
count: avgProcessingTime ? `${round(avgProcessingTime)} ms` : 0,
tooltipTitle: 'average_processing_time_hint',
},
];
return (
<Card
title={t('general_statistics')}
subtitle={subtitle}
bodyType="card-table"
refresh={refreshButton}
>
<table className="table card-table">
<tbody>{rows.map(Row)}</tbody>
</table>
</Card>
);
};
Row.propTypes = {
label: propTypes.string.isRequired,
count: propTypes.string.isRequired,
response_status: propTypes.string,
tooltipTitle: propTypes.string.isRequired,
translationComponents: propTypes.arrayOf(propTypes.element),
};
Counters.propTypes = {
refreshButton: propTypes.node.isRequired,
subtitle: propTypes.string.isRequired,
};
export default Counters;

View File

@@ -1,10 +1,11 @@
.stats__table .popover__body {
left: 0;
left: -10px;
min-width: 270px;
transform: none;
}
.stats__table .popover__body:after {
left: 13px;
left: 23px;
}
.stats__table .rt-tr-group:first-child .popover__body,
@@ -20,3 +21,8 @@
border-top: 6px solid transparent;
border-bottom: 6px solid #585965;
}
.card-chart-bg {
left: -20px;
width: calc(100% + 20px);
}

View File

@@ -0,0 +1,78 @@
import React from 'react';
import PropTypes from 'prop-types';
import { Trans } from 'react-i18next';
import { getSourceData, getTrackerData } from '../../helpers/trackers/trackers';
import Tooltip from '../ui/Tooltip';
import { captitalizeWords } from '../../helpers/helpers';
const renderLabel = (value) => <strong><Trans>{value}</Trans></strong>;
const renderLink = ({ url, name }) => <a
className="tooltip-custom__content-link"
target="_blank"
rel="noopener noreferrer"
href={url}
>
<strong>{name}</strong>
</a>;
const getTrackerInfo = (trackerData) => [{
key: 'name_table_header',
value: trackerData,
render: renderLink,
},
{
key: 'category_label',
value: captitalizeWords(trackerData.category),
render: renderLabel,
},
{
key: 'source_label',
value: getSourceData(trackerData),
render: renderLink,
}];
const DomainCell = ({ value }) => {
const trackerData = getTrackerData(value);
const content = trackerData && <div className="popover__list">
<div className="tooltip-custom__content-title mb-1">
<Trans>found_in_known_domain_db</Trans>
</div>
{getTrackerInfo(trackerData)
.map(({ key, value, render }) => <div
key={key}
className="tooltip-custom__content-item"
>
<Trans>{key}</Trans>: {render(value)}
</div>)}
</div>;
return (
<div className="logs__row">
<div className="logs__text" title={value}>
{value}
</div>
{trackerData
&& <Tooltip content={content} placement="top"
className="tooltip-container tooltip-custom--wide">
<svg className="icons icon--24 icon--green ml-1">
<use xlinkHref="#privacy" />
</svg>
</Tooltip>}
</div>
);
};
DomainCell.propTypes = {
value: PropTypes.string.isRequired,
};
renderLink.propTypes = {
url: PropTypes.string.isRequired,
name: PropTypes.string.isRequired,
};
export default DomainCell;

View File

@@ -1,81 +1,76 @@
import React, { Component } from 'react';
import React from 'react';
import ReactTable from 'react-table';
import PropTypes from 'prop-types';
import map from 'lodash/map';
import { withNamespaces, Trans } from 'react-i18next';
import { withTranslation, Trans } from 'react-i18next';
import Card from '../ui/Card';
import Cell from '../ui/Cell';
import Popover from '../ui/Popover';
import DomainCell from './DomainCell';
import { getTrackerData } from '../../helpers/trackers/trackers';
import { getPercent } from '../../helpers/helpers';
import { STATUS_COLORS } from '../../helpers/constants';
import { getPercent } from '../../helpers/helpers';
class QueriedDomains extends Component {
getPercentColor = (percent) => {
if (percent > 10) {
return STATUS_COLORS.red;
} else if (percent > 5) {
return STATUS_COLORS.yellow;
}
return STATUS_COLORS.green;
const getQueriedPercentColor = (percent) => {
if (percent > 10) {
return STATUS_COLORS.red;
}
columns = [{
Header: 'IP',
accessor: 'ip',
Cell: (row) => {
const { value } = row;
const trackerData = getTrackerData(value);
return (
<div className="logs__row">
<div className="logs__text" title={value}>
{value}
</div>
{trackerData && <Popover data={trackerData} />}
</div>
);
},
}, {
Header: <Trans>requests_count</Trans>,
accessor: 'count',
maxWidth: 190,
Cell: ({ value }) => {
const percent = getPercent(this.props.dnsQueries, value);
const percentColor = this.getPercentColor(percent);
return (
<Cell value={value} percent={percent} color={percentColor} />
);
},
}];
render() {
const { t } = this.props;
return (
<Card title={ t('stats_query_domain') } subtitle={ t('for_last_24_hours') } bodyType="card-table" refresh={this.props.refreshButton}>
<ReactTable
data={map(this.props.topQueriedDomains, (value, prop) => (
{ ip: prop, count: value }
))}
columns={this.columns}
showPagination={false}
noDataText={ t('no_domains_found') }
minRows={6}
className="-striped -highlight card-table-overflow stats__table"
/>
</Card>
);
if (percent > 5) {
return STATUS_COLORS.yellow;
}
}
QueriedDomains.propTypes = {
topQueriedDomains: PropTypes.object.isRequired,
dnsQueries: PropTypes.number.isRequired,
refreshButton: PropTypes.node.isRequired,
t: PropTypes.func,
return STATUS_COLORS.green;
};
export default withNamespaces()(QueriedDomains);
const countCell = (dnsQueries) => function cell(row) {
const { value } = row;
const percent = getPercent(dnsQueries, value);
const percentColor = getQueriedPercentColor(percent);
return <Cell value={value} percent={percent} color={percentColor}
search={row.original.domain} />;
};
const QueriedDomains = ({
t, refreshButton, topQueriedDomains, subtitle, dnsQueries,
}) => (
<Card
title={t('stats_query_domain')}
subtitle={subtitle}
bodyType="card-table"
refresh={refreshButton}
>
<ReactTable
data={topQueriedDomains.map(({ name: domain, count }) => ({
domain,
count,
}))}
columns={[
{
Header: <Trans>domain</Trans>,
accessor: 'domain',
Cell: DomainCell,
},
{
Header: <Trans>requests_count</Trans>,
accessor: 'count',
maxWidth: 190,
Cell: countCell(dnsQueries),
},
]}
showPagination={false}
noDataText={t('no_domains_found')}
minRows={6}
defaultPageSize={100}
className="-highlight card-table-overflow--limited stats__table"
/>
</Card>
);
QueriedDomains.propTypes = {
topQueriedDomains: PropTypes.array.isRequired,
dnsQueries: PropTypes.number.isRequired,
refreshButton: PropTypes.node.isRequired,
subtitle: PropTypes.string.isRequired,
t: PropTypes.func.isRequired,
};
export default withTranslation()(QueriedDomains);

View File

@@ -1,112 +1,79 @@
import React, { Component } from 'react';
import React from 'react';
import PropTypes from 'prop-types';
import { Trans, withNamespaces } from 'react-i18next';
import { withTranslation, Trans } from 'react-i18next';
import Card from '../ui/Card';
import Line from '../ui/Line';
import StatsCard from './StatsCard';
import { getPercent, normalizeHistory } from '../../helpers/helpers';
import { getPercent } from '../../helpers/helpers';
import { STATUS_COLORS } from '../../helpers/constants';
const getNormalizedHistory = (data, interval, id) => [
{ data: normalizeHistory(data, interval), id },
];
class Statistics extends Component {
render() {
const {
dnsQueries,
blockedFiltering,
replacedSafebrowsing,
replacedParental,
} = this.props;
const filteringData = [this.props.history[1]];
const queriesData = [this.props.history[2]];
const parentalData = [this.props.history[3]];
const safebrowsingData = [this.props.history[4]];
return (
<div className="row">
<div className="col-sm-6 col-lg-3">
<Card type="card--full" bodyType="card-wrap">
<div className="card-body-stats">
<div className="card-value card-value-stats text-blue">
{dnsQueries}
</div>
<div className="card-title-stats">
<Trans>dns_query</Trans>
</div>
</div>
<div className="card-chart-bg">
<Line data={queriesData} color={STATUS_COLORS.blue}/>
</div>
</Card>
</div>
<div className="col-sm-6 col-lg-3">
<Card type="card--full" bodyType="card-wrap">
<div className="card-body-stats">
<div className="card-value card-value-stats text-red">
{blockedFiltering}
</div>
<div className="card-value card-value-percent text-red">
{getPercent(dnsQueries, blockedFiltering)}
</div>
<div className="card-title-stats">
<a href="#filters">
<Trans>blocked_by</Trans>
</a>
</div>
</div>
<div className="card-chart-bg">
<Line data={filteringData} color={STATUS_COLORS.red}/>
</div>
</Card>
</div>
<div className="col-sm-6 col-lg-3">
<Card type="card--full" bodyType="card-wrap">
<div className="card-body-stats">
<div className="card-value card-value-stats text-green">
{replacedSafebrowsing}
</div>
<div className="card-value card-value-percent text-green">
{getPercent(dnsQueries, replacedSafebrowsing)}
</div>
<div className="card-title-stats">
<Trans>stats_malware_phishing</Trans>
</div>
</div>
<div className="card-chart-bg">
<Line data={safebrowsingData} color={STATUS_COLORS.green}/>
</div>
</Card>
</div>
<div className="col-sm-6 col-lg-3">
<Card type="card--full" bodyType="card-wrap">
<div className="card-body-stats">
<div className="card-value card-value-stats text-yellow">
{replacedParental}
</div>
<div className="card-value card-value-percent text-yellow">
{getPercent(dnsQueries, replacedParental)}
</div>
<div className="card-title-stats">
<Trans>stats_adult</Trans>
</div>
</div>
<div className="card-chart-bg">
<Line data={parentalData} color={STATUS_COLORS.yellow}/>
</div>
</Card>
</div>
</div>
);
}
}
const Statistics = ({
interval,
dnsQueries,
blockedFiltering,
replacedSafebrowsing,
replacedParental,
numDnsQueries,
numBlockedFiltering,
numReplacedSafebrowsing,
numReplacedParental,
}) => (
<div className="row">
<div className="col-sm-6 col-lg-3">
<StatsCard
total={numDnsQueries}
lineData={getNormalizedHistory(dnsQueries, interval, 'dnsQuery')}
title={<Trans>dns_query</Trans>}
color="blue"
/>
</div>
<div className="col-sm-6 col-lg-3">
<StatsCard
total={numBlockedFiltering}
lineData={getNormalizedHistory(blockedFiltering, interval, 'blockedFiltering')}
percent={getPercent(numDnsQueries, numBlockedFiltering)}
title={<Trans components={[<a href="#filters" key="0">link</a>]}>blocked_by</Trans>}
color="red"
/>
</div>
<div className="col-sm-6 col-lg-3">
<StatsCard
total={numReplacedSafebrowsing}
lineData={getNormalizedHistory(
replacedSafebrowsing,
interval,
'replacedSafebrowsing',
)}
percent={getPercent(numDnsQueries, numReplacedSafebrowsing)}
title={<Trans>stats_malware_phishing</Trans>}
color="green"
/>
</div>
<div className="col-sm-6 col-lg-3">
<StatsCard
total={numReplacedParental}
lineData={getNormalizedHistory(replacedParental, interval, 'replacedParental')}
percent={getPercent(numDnsQueries, numReplacedParental)}
title={<Trans>stats_adult</Trans>}
color="yellow"
/>
</div>
</div>
);
Statistics.propTypes = {
history: PropTypes.array.isRequired,
dnsQueries: PropTypes.number.isRequired,
blockedFiltering: PropTypes.number.isRequired,
replacedSafebrowsing: PropTypes.number.isRequired,
replacedParental: PropTypes.number.isRequired,
interval: PropTypes.number.isRequired,
dnsQueries: PropTypes.array.isRequired,
blockedFiltering: PropTypes.array.isRequired,
replacedSafebrowsing: PropTypes.array.isRequired,
replacedParental: PropTypes.array.isRequired,
numDnsQueries: PropTypes.number.isRequired,
numBlockedFiltering: PropTypes.number.isRequired,
numReplacedSafebrowsing: PropTypes.number.isRequired,
numReplacedParental: PropTypes.number.isRequired,
refreshButton: PropTypes.node.isRequired,
};
export default withNamespaces()(Statistics);
export default withTranslation()(Statistics);

View File

@@ -0,0 +1,38 @@
import React from 'react';
import PropTypes from 'prop-types';
import { STATUS_COLORS } from '../../helpers/constants';
import { formatNumber } from '../../helpers/helpers';
import Card from '../ui/Card';
import Line from '../ui/Line';
const StatsCard = ({
total, lineData, percent, title, color,
}) => (
<Card type="card--full" bodyType="card-wrap">
<div className="card-body-stats">
<div className={`card-value card-value-stats text-${color}`}>
{formatNumber(total)}
</div>
<div className="card-title-stats">{title}</div>
</div>
{percent >= 0 && (
<div className={`card-value card-value-percent text-${color}`}>
{percent}
</div>
)}
<div className="card-chart-bg">
<Line data={lineData} color={STATUS_COLORS[color]} />
</div>
</Card>
);
StatsCard.propTypes = {
total: PropTypes.number.isRequired,
lineData: PropTypes.array.isRequired,
title: PropTypes.object.isRequired,
color: PropTypes.string.isRequired,
percent: PropTypes.number,
};
export default StatsCard;

View File

@@ -1,6 +1,6 @@
import React, { Component, Fragment } from 'react';
import PropTypes from 'prop-types';
import { Trans, withNamespaces } from 'react-i18next';
import { Trans, withTranslation } from 'react-i18next';
import Statistics from './Statistics';
import Counters from './Counters';
@@ -10,6 +10,7 @@ import BlockedDomains from './BlockedDomains';
import PageTitle from '../ui/PageTitle';
import Loading from '../ui/Loading';
import { BLOCK_ACTIONS } from '../../helpers/constants';
import './Dashboard.css';
class Dashboard extends Component {
@@ -18,10 +19,10 @@ class Dashboard extends Component {
}
getAllStats = () => {
this.props.getAccessList();
this.props.getStats();
this.props.getStatsHistory();
this.props.getTopStats();
}
this.props.getStatsConfig();
};
getToggleFilteringButton = () => {
const { protectionEnabled, processingProtection } = this.props.dashboard;
@@ -38,101 +39,130 @@ class Dashboard extends Component {
<Trans>{buttonText}</Trans>
</button>
);
}
};
toggleClientStatus = (type, ip) => {
const confirmMessage = type === BLOCK_ACTIONS.BLOCK ? 'client_confirm_block' : 'client_confirm_unblock';
if (window.confirm(this.props.t(confirmMessage, { ip }))) {
this.props.toggleClientBlock(type, ip);
}
};
render() {
const { dashboard, t } = this.props;
const dashboardProcessing =
dashboard.processing ||
dashboard.processingStats ||
dashboard.processingStatsHistory ||
dashboard.processingClients ||
dashboard.processingTopStats;
const {
dashboard, stats, access, t,
} = this.props;
const statsProcessing = stats.processingStats
|| stats.processingGetConfig
|| access.processing;
const refreshFullButton = <button type="button" className="btn btn-outline-primary btn-sm" onClick={() => this.getAllStats()}><Trans>refresh_statics</Trans></button>;
const refreshButton = <button type="button" className="btn btn-outline-primary btn-sm card-refresh" onClick={() => this.getAllStats()} />;
const subtitle = stats.interval === 1
? t('for_last_24_hours')
: t('for_last_days', { count: stats.interval });
const refreshFullButton = (
<button
type="button"
className="btn btn-outline-primary btn-sm"
onClick={() => this.getAllStats()}
>
<Trans>refresh_statics</Trans>
</button>
);
const refreshButton = (
<button
type="button"
className="btn btn-icon btn-outline-primary btn-sm"
onClick={() => this.getAllStats()}
>
<svg className="icons">
<use xlinkHref="#refresh" />
</svg>
</button>
);
return (
<Fragment>
<PageTitle title={ t('dashboard') }>
<PageTitle title={t('dashboard')}>
<div className="page-title__actions">
{this.getToggleFilteringButton()}
{refreshFullButton}
</div>
</PageTitle>
{dashboardProcessing && <Loading />}
{!dashboardProcessing &&
{statsProcessing && <Loading />}
{!statsProcessing && (
<div className="row row-cards">
{dashboard.statsHistory &&
<div className="col-lg-12">
<Statistics
history={dashboard.statsHistory}
refreshButton={refreshButton}
dnsQueries={dashboard.stats.dns_queries}
blockedFiltering={dashboard.stats.blocked_filtering}
replacedSafebrowsing={dashboard.stats.replaced_safebrowsing}
replacedParental={dashboard.stats.replaced_parental}
/>
</div>
}
<div className="col-lg-6">
{dashboard.stats &&
<Counters
refreshButton={refreshButton}
dnsQueries={dashboard.stats.dns_queries}
blockedFiltering={dashboard.stats.blocked_filtering}
replacedSafebrowsing={dashboard.stats.replaced_safebrowsing}
replacedParental={dashboard.stats.replaced_parental}
replacedSafesearch={dashboard.stats.replaced_safesearch}
avgProcessingTime={dashboard.stats.avg_processing_time}
/>
}
<div className="col-lg-12">
<Statistics
interval={stats.interval}
dnsQueries={stats.dnsQueries}
blockedFiltering={stats.blockedFiltering}
replacedSafebrowsing={stats.replacedSafebrowsing}
replacedParental={stats.replacedParental}
numDnsQueries={stats.numDnsQueries}
numBlockedFiltering={stats.numBlockedFiltering}
numReplacedSafebrowsing={stats.numReplacedSafebrowsing}
numReplacedParental={stats.numReplacedParental}
refreshButton={refreshButton}
/>
</div>
<div className="col-lg-6">
<Counters
subtitle={subtitle}
refreshButton={refreshButton}
/>
</div>
<div className="col-lg-6">
<Clients
subtitle={subtitle}
dnsQueries={stats.numDnsQueries}
topClients={stats.topClients}
clients={dashboard.clients}
autoClients={dashboard.autoClients}
refreshButton={refreshButton}
toggleClientStatus={this.toggleClientStatus}
processingAccessSet={access.processingSet}
disallowedClients={access.disallowed_clients}
/>
</div>
<div className="col-lg-6">
<QueriedDomains
subtitle={subtitle}
dnsQueries={stats.numDnsQueries}
topQueriedDomains={stats.topQueriedDomains}
refreshButton={refreshButton}
/>
</div>
<div className="col-lg-6">
<BlockedDomains
subtitle={subtitle}
topBlockedDomains={stats.topBlockedDomains}
blockedFiltering={stats.numBlockedFiltering}
replacedSafebrowsing={stats.numReplacedSafebrowsing}
replacedParental={stats.numReplacedParental}
refreshButton={refreshButton}
/>
</div>
{dashboard.topStats &&
<Fragment>
<div className="col-lg-6">
<Clients
dnsQueries={dashboard.stats.dns_queries}
refreshButton={refreshButton}
topClients={dashboard.topStats.top_clients}
clients={dashboard.clients}
/>
</div>
<div className="col-lg-6">
<QueriedDomains
dnsQueries={dashboard.stats.dns_queries}
refreshButton={refreshButton}
topQueriedDomains={dashboard.topStats.top_queried_domains}
/>
</div>
<div className="col-lg-6">
<BlockedDomains
refreshButton={refreshButton}
topBlockedDomains={dashboard.topStats.top_blocked_domains}
blockedFiltering={dashboard.stats.blocked_filtering}
replacedSafebrowsing={dashboard.stats.replaced_safebrowsing}
replacedParental={dashboard.stats.replaced_parental}
/>
</div>
</Fragment>
}
</div>
}
)}
</Fragment>
);
}
}
Dashboard.propTypes = {
getStats: PropTypes.func,
getStatsHistory: PropTypes.func,
getTopStats: PropTypes.func,
dashboard: PropTypes.object,
isCoreRunning: PropTypes.bool,
getFiltering: PropTypes.func,
toggleProtection: PropTypes.func,
processingProtection: PropTypes.bool,
t: PropTypes.func,
dashboard: PropTypes.object.isRequired,
stats: PropTypes.object.isRequired,
access: PropTypes.object.isRequired,
getStats: PropTypes.func.isRequired,
getStatsConfig: PropTypes.func.isRequired,
toggleProtection: PropTypes.func.isRequired,
getClients: PropTypes.func.isRequired,
t: PropTypes.func.isRequired,
toggleClientBlock: PropTypes.func.isRequired,
getAccessList: PropTypes.func.isRequired,
};
export default withNamespaces()(Dashboard);
export default withTranslation()(Dashboard);

View File

@@ -0,0 +1,38 @@
import React from 'react';
import PropTypes from 'prop-types';
import { withTranslation, Trans } from 'react-i18next';
const Actions = ({
handleAdd, handleRefresh, processingRefreshFilters, whitelist,
}) => (
<div className="card-actions">
<button
className="btn btn-success btn-standard mr-2 btn-large"
type="submit"
onClick={handleAdd}
>
{whitelist ? (
<Trans>add_allowlist</Trans>
) : (
<Trans>add_blocklist</Trans>
)}
</button>
<button
className="btn btn-primary btn-standard"
type="submit"
onClick={handleRefresh}
disabled={processingRefreshFilters}
>
<Trans>check_updates_btn</Trans>
</button>
</div>
);
Actions.propTypes = {
handleAdd: PropTypes.func.isRequired,
handleRefresh: PropTypes.func.isRequired,
processingRefreshFilters: PropTypes.bool.isRequired,
whitelist: PropTypes.bool,
};
export default withTranslation()(Actions);

View File

@@ -0,0 +1,165 @@
import React, { Fragment } from 'react';
import PropTypes from 'prop-types';
import { withTranslation } from 'react-i18next';
import {
checkFiltered,
checkRewrite,
checkRewriteHosts,
checkBlackList,
checkNotFilteredNotFound,
checkWhiteList,
checkSafeSearch,
checkSafeBrowsing,
checkParental,
} from '../../../helpers/helpers';
import { FILTERED } from '../../../helpers/constants';
const getFilterName = (id, filters, whitelistFilters, t) => {
if (id === 0) {
return t('filtered_custom_rules');
}
const filter = filters.find((filter) => filter.id === id)
|| whitelistFilters.find((filter) => filter.id === id);
if (filter && filter.name) {
return t('query_log_filtered', { filter: filter.name });
}
return '';
};
const getTitle = (reason, filterName, t, onlyFiltered) => {
if (checkNotFilteredNotFound(reason)) {
return t('check_not_found');
}
if (checkRewrite(reason)) {
return t('rewrite_applied');
}
if (checkRewriteHosts(reason)) {
return t('rewrite_hosts_applied');
}
if (checkBlackList(reason)) {
return filterName;
}
if (checkWhiteList(reason)) {
return (
<div>
{filterName}
</div>
);
}
if (onlyFiltered) {
const filterKey = reason.replace(FILTERED, '');
return (
<div>
{t('query_log_filtered', { filter: filterKey })}
</div>
);
}
return (
<Fragment>
<div>
{t('check_reason', { reason })}
</div>
<div>
{filterName}
</div>
</Fragment>
);
};
const getColor = (reason) => {
if (checkFiltered(reason)) {
return 'red';
} if (checkRewrite(reason) || checkRewriteHosts(reason)) {
return 'blue';
} if (checkWhiteList(reason)) {
return 'green';
}
return '';
};
const Info = ({
filters,
whitelistFilters,
hostname,
reason,
filter_id,
rule,
service_name,
cname,
ip_addrs,
t,
}) => {
const filterName = getFilterName(filter_id, filters, whitelistFilters, t);
const onlyFiltered = checkSafeSearch(reason)
|| checkSafeBrowsing(reason)
|| checkParental(reason);
const title = getTitle(reason, filterName, t, onlyFiltered);
const color = getColor(reason);
if (onlyFiltered) {
return (
<div className={`card mb-0 p-3 ${color}`}>
<div>
<strong>{hostname}</strong>
</div>
<div>{title}</div>
</div>
);
}
return (
<div className={`card mb-0 p-3 ${color}`}>
<div>
<strong>{hostname}</strong>
</div>
<div>{title}</div>
{rule && (
<div>{t('check_rule', { rule })}</div>
)}
{service_name && (
<div>{t('check_service', { service: service_name })}</div>
)}
{cname && (
<div>{t('check_cname', { cname })}</div>
)}
{ip_addrs && (
<div>
{t('check_ip', { ip: ip_addrs.join(', ') })}
</div>
)}
</div>
);
};
Info.propTypes = {
filters: PropTypes.array.isRequired,
whitelistFilters: PropTypes.array.isRequired,
hostname: PropTypes.string.isRequired,
reason: PropTypes.string.isRequired,
filter_id: PropTypes.number,
rule: PropTypes.string,
service_name: PropTypes.string,
cname: PropTypes.string,
ip_addrs: PropTypes.array,
t: PropTypes.func.isRequired,
};
export default withTranslation()(Info);

View File

@@ -0,0 +1,99 @@
import React, { Fragment } from 'react';
import PropTypes from 'prop-types';
import { Trans, withTranslation } from 'react-i18next';
import { Field, reduxForm } from 'redux-form';
import flow from 'lodash/flow';
import Card from '../../ui/Card';
import { renderInputField } from '../../../helpers/form';
import Info from './Info';
import { FORM_NAME } from '../../../helpers/constants';
const Check = (props) => {
const {
t,
handleSubmit,
pristine,
invalid,
processing,
check,
filters,
whitelistFilters,
} = props;
const {
hostname,
reason,
filter_id,
rule,
service_name,
cname,
ip_addrs,
} = check;
return (
<Card
title={t('check_title')}
subtitle={t('check_desc')}
>
<form onSubmit={handleSubmit}>
<div className="row">
<div className="col-12 col-md-6">
<div className="input-group">
<Field
id="name"
name="name"
component={renderInputField}
type="text"
className="form-control"
placeholder={t('form_enter_host')}
/>
<span className="input-group-append">
<button
className="btn btn-success btn-standard btn-large"
type="submit"
onClick={handleSubmit}
disabled={pristine || invalid || processing}
>
<Trans>check</Trans>
</button>
</span>
</div>
{check.hostname && (
<Fragment>
<hr />
<Info
filters={filters}
whitelistFilters={whitelistFilters}
hostname={hostname}
reason={reason}
filter_id={filter_id}
rule={rule}
service_name={service_name}
cname={cname}
ip_addrs={ip_addrs}
/>
</Fragment>
)}
</div>
</div>
</form>
</Card>
);
};
Check.propTypes = {
t: PropTypes.func.isRequired,
handleSubmit: PropTypes.func.isRequired,
pristine: PropTypes.bool.isRequired,
invalid: PropTypes.bool.isRequired,
processing: PropTypes.bool.isRequired,
check: PropTypes.object.isRequired,
filters: PropTypes.array.isRequired,
whitelistFilters: PropTypes.array.isRequired,
};
export default flow([
withTranslation(),
reduxForm({ form: FORM_NAME.DOMAIN_CHECK }),
])(Check);

View File

@@ -0,0 +1,95 @@
import React, { Component, Fragment } from 'react';
import PropTypes from 'prop-types';
import { Trans, withTranslation } from 'react-i18next';
import Card from '../ui/Card';
import PageTitle from '../ui/PageTitle';
import Examples from './Examples';
import Check from './Check';
class CustomRules extends Component {
componentDidMount() {
this.props.getFilteringStatus();
}
handleChange = (e) => {
const { value } = e.currentTarget;
this.handleRulesChange(value);
};
handleSubmit = (e) => {
e.preventDefault();
this.handleRulesSubmit();
};
handleRulesChange = (value) => {
this.props.handleRulesChange({ userRules: value });
};
handleRulesSubmit = () => {
this.props.setRules(this.props.filtering.userRules);
};
handleCheck = (values) => {
this.props.checkHost(values);
};
render() {
const {
t,
filtering: {
filters,
whitelistFilters,
userRules,
processingCheck,
check,
},
} = this.props;
return (
<Fragment>
<PageTitle title={t('custom_filtering_rules')} />
<Card
subtitle={t('custom_filter_rules_hint')}
>
<form onSubmit={this.handleSubmit}>
<textarea
className="form-control form-control--textarea-large font-monospace"
value={userRules}
onChange={this.handleChange}
/>
<div className="card-actions">
<button
className="btn btn-success btn-standard btn-large"
type="submit"
onClick={this.handleSubmit}
>
<Trans>apply_btn</Trans>
</button>
</div>
</form>
<hr />
<Examples />
</Card>
<Check
filters={filters}
whitelistFilters={whitelistFilters}
check={check}
onSubmit={this.handleCheck}
processing={processingCheck}
/>
</Fragment>
);
}
}
CustomRules.propTypes = {
filtering: PropTypes.object.isRequired,
setRules: PropTypes.func.isRequired,
checkHost: PropTypes.func.isRequired,
getFilteringStatus: PropTypes.func.isRequired,
handleRulesChange: PropTypes.func.isRequired,
t: PropTypes.func.isRequired,
};
export default withTranslation()(CustomRules);

View File

@@ -0,0 +1,139 @@
import React, { Component } from 'react';
import PropTypes from 'prop-types';
import { withTranslation } from 'react-i18next';
import PageTitle from '../ui/PageTitle';
import Card from '../ui/Card';
import Modal from './Modal';
import Actions from './Actions';
import Table from './Table';
import { MODAL_TYPE } from '../../helpers/constants';
import { getCurrentFilter } from '../../helpers/helpers';
class DnsAllowlist extends Component {
componentDidMount() {
this.props.getFilteringStatus();
}
handleSubmit = (values) => {
const { name, url } = values;
const { filtering } = this.props;
const whitelist = true;
if (filtering.modalType === MODAL_TYPE.EDIT_FILTERS) {
this.props.editFilter(filtering.modalFilterUrl, values, whitelist);
} else {
this.props.addFilter(url, name, whitelist);
}
};
handleDelete = (url) => {
if (window.confirm(this.props.t('list_confirm_delete'))) {
const whitelist = true;
this.props.removeFilter(url, whitelist);
}
};
toggleFilter = (url, data) => {
const whitelist = true;
this.props.toggleFilterStatus(url, data, whitelist);
};
handleRefresh = () => {
this.props.refreshFilters({ whitelist: true });
};
openAddFiltersModal = () => {
this.props.toggleFilteringModal({ type: MODAL_TYPE.ADD_FILTERS });
};
render() {
const {
t,
toggleFilteringModal,
addFilter,
toggleFilterStatus,
filtering: {
whitelistFilters,
isModalOpen,
isFilterAdded,
processingRefreshFilters,
processingRemoveFilter,
processingAddFilter,
processingConfigFilter,
processingFilters,
modalType,
modalFilterUrl,
},
} = this.props;
const currentFilterData = getCurrentFilter(modalFilterUrl, whitelistFilters);
const loading = processingConfigFilter
|| processingFilters
|| processingAddFilter
|| processingRemoveFilter
|| processingRefreshFilters;
const whitelist = true;
return (
<>
<PageTitle
title={t('dns_allowlists')}
subtitle={t('dns_allowlists_desc')}
/>
<div className="content">
<div className="row">
<div className="col-md-12">
<Card subtitle={t('filters_and_hosts_hint')}>
<Table
filters={whitelistFilters}
loading={loading}
processingConfigFilter={processingConfigFilter}
toggleFilteringModal={toggleFilteringModal}
toggleFilterStatus={toggleFilterStatus}
handleDelete={this.handleDelete}
toggleFilter={this.toggleFilter}
whitelist={whitelist}
/>
<Actions
handleAdd={this.openAddFiltersModal}
handleRefresh={this.handleRefresh}
processingRefreshFilters={processingRefreshFilters}
whitelist={whitelist}
/>
</Card>
</div>
</div>
</div>
<Modal
filters={whitelistFilters}
isOpen={isModalOpen}
toggleFilteringModal={toggleFilteringModal}
addFilter={addFilter}
isFilterAdded={isFilterAdded}
processingAddFilter={processingAddFilter}
processingConfigFilter={processingConfigFilter}
handleSubmit={this.handleSubmit}
modalType={modalType}
currentFilterData={currentFilterData}
whitelist={whitelist}
/>
</>
);
}
}
DnsAllowlist.propTypes = {
getFilteringStatus: PropTypes.func.isRequired,
filtering: PropTypes.object.isRequired,
removeFilter: PropTypes.func.isRequired,
toggleFilterStatus: PropTypes.func.isRequired,
addFilter: PropTypes.func.isRequired,
toggleFilteringModal: PropTypes.func.isRequired,
handleRulesChange: PropTypes.func.isRequired,
refreshFilters: PropTypes.func.isRequired,
editFilter: PropTypes.func.isRequired,
t: PropTypes.func.isRequired,
};
export default withTranslation()(DnsAllowlist);

View File

@@ -0,0 +1,154 @@
import React, { Component } from 'react';
import PropTypes from 'prop-types';
import { withTranslation } from 'react-i18next';
import PageTitle from '../ui/PageTitle';
import Card from '../ui/Card';
import Modal from './Modal';
import Actions from './Actions';
import Table from './Table';
import { MODAL_TYPE } from '../../helpers/constants';
import {
getCurrentFilter,
getObjDiff,
} from '../../helpers/helpers';
const filtersCatalog = require('../../helpers/filters/filters.json');
class DnsBlocklist extends Component {
componentDidMount() {
this.props.getFilteringStatus();
}
handleSubmit = (values, _, { initialValues }) => {
const { filtering: { modalFilterUrl, modalType } } = this.props;
switch (modalType) {
case MODAL_TYPE.EDIT_FILTERS:
this.props.editFilter(modalFilterUrl, values);
break;
case MODAL_TYPE.ADD_FILTERS: {
const { name, url } = values;
this.props.addFilter(url, name);
break;
}
case MODAL_TYPE.CHOOSE_FILTERING_LIST: {
const changedValues = getObjDiff(initialValues, values);
Object.keys(changedValues)
.forEach((fieldName) => {
// filterId is actually in the field name
const { source, name } = filtersCatalog.filters[fieldName];
this.props.addFilter(source, name);
});
break;
}
default:
break;
}
};
handleDelete = (url) => {
if (window.confirm(this.props.t('list_confirm_delete'))) {
this.props.removeFilter(url);
}
};
toggleFilter = (url, data) => {
this.props.toggleFilterStatus(url, data);
};
handleRefresh = () => {
this.props.refreshFilters({ whitelist: false });
};
openSelectTypeModal = () => {
this.props.toggleFilteringModal({ type: MODAL_TYPE.SELECT_MODAL_TYPE });
};
render() {
const {
t,
toggleFilteringModal,
addFilter,
filtering: {
filters,
isModalOpen,
isFilterAdded,
processingRefreshFilters,
processingRemoveFilter,
processingAddFilter,
processingConfigFilter,
processingFilters,
modalType,
modalFilterUrl,
},
} = this.props;
const currentFilterData = getCurrentFilter(modalFilterUrl, filters);
const loading = processingConfigFilter
|| processingFilters
|| processingAddFilter
|| processingRemoveFilter
|| processingRefreshFilters;
return (
<>
<PageTitle
title={t('dns_blocklists')}
subtitle={t('dns_blocklists_desc')}
/>
<div className="content">
<div className="row">
<div className="col-md-12">
<Card subtitle={t('filters_and_hosts_hint')}>
<Table
filters={filters}
loading={loading}
processingConfigFilter={processingConfigFilter}
toggleFilteringModal={toggleFilteringModal}
handleDelete={this.handleDelete}
toggleFilter={this.toggleFilter}
/>
<Actions
handleAdd={this.openSelectTypeModal}
handleRefresh={this.handleRefresh}
processingRefreshFilters={processingRefreshFilters}
/>
</Card>
</div>
</div>
</div>
<Modal
filtersCatalog={filtersCatalog}
filters={filters}
isOpen={isModalOpen}
toggleFilteringModal={toggleFilteringModal}
addFilter={addFilter}
isFilterAdded={isFilterAdded}
processingAddFilter={processingAddFilter}
processingConfigFilter={processingConfigFilter}
handleSubmit={this.handleSubmit}
modalType={modalType}
currentFilterData={currentFilterData}
/>
</>
);
}
}
DnsBlocklist.propTypes = {
getFilteringStatus: PropTypes.func.isRequired,
filtering: PropTypes.object.isRequired,
removeFilter: PropTypes.func.isRequired,
toggleFilterStatus: PropTypes.func.isRequired,
addFilter: PropTypes.func.isRequired,
toggleFilteringModal: PropTypes.func.isRequired,
handleRulesChange: PropTypes.func.isRequired,
refreshFilters: PropTypes.func.isRequired,
editFilter: PropTypes.func.isRequired,
t: PropTypes.func.isRequired,
};
export default withTranslation()(DnsBlocklist);

View File

@@ -0,0 +1,54 @@
import React, { Fragment } from 'react';
import { withTranslation, Trans } from 'react-i18next';
const Examples = () => (
<Fragment>
<div className="list leading-loose">
<Trans>examples_title</Trans>:
<ol className="leading-loose">
<li>
<code>||example.org^</code> &nbsp;
<Trans>example_meaning_filter_block</Trans>
</li>
<li>
<code> @@||example.org^</code> &nbsp;
<Trans>example_meaning_filter_whitelist</Trans>
</li>
<li>
<code>127.0.0.1 example.org</code> &nbsp;
<Trans>example_meaning_host_block</Trans>
</li>
<li>
<code><Trans>example_comment</Trans></code> &nbsp;
<Trans>example_comment_meaning</Trans>
</li>
<li>
<code><Trans>example_comment_hash</Trans></code> &nbsp;
<Trans>example_comment_meaning</Trans>
</li>
<li>
<code>/REGEX/</code> &nbsp;
<Trans>example_regex_meaning</Trans>
</li>
</ol>
</div>
<p className="mt-1">
<Trans
components={[
<a
href="https://github.com/AdguardTeam/AdGuardHome/wiki/Hosts-Blocklists"
target="_blank"
rel="noopener noreferrer"
key="0"
>
link
</a>,
]}
>
filtering_rules_learn_more
</Trans>
</p>
</Fragment>
);
export default withTranslation()(Examples);

View File

@@ -1,13 +0,0 @@
.remove-icon {
position: relative;
top: 2px;
display: inline-block;
width: 20px;
height: 18px;
opacity: 0.6;
}
.remove-icon:hover {
cursor: pointer;
opacity: 1;
}

View File

@@ -0,0 +1,178 @@
import React from 'react';
import PropTypes from 'prop-types';
import { Field, reduxForm } from 'redux-form';
import { withTranslation } from 'react-i18next';
import flow from 'lodash/flow';
import classNames from 'classnames';
import { validatePath, validateRequiredValue } from '../../helpers/validators';
import { renderInputField, renderSelectField } from '../../helpers/form';
import { MODAL_OPEN_TIMEOUT, MODAL_TYPE, FORM_NAME } from '../../helpers/constants';
const getIconsData = (homepage, source) => ([
{
iconName: 'dashboard',
href: homepage,
className: 'ml-1',
},
{
iconName: 'info',
href: source,
},
]);
const renderIcons = (iconsData) => iconsData.map(({
iconName,
href,
className = '',
}) => <a key={iconName} href={href} target="_blank" rel="noopener noreferrer"
className={classNames('d-flex align-items-center', className)}
>
<svg className="nav-icon nav-icon--gray">
<use xlinkHref={`#${iconName}`} />
</svg>
</a>);
const renderFilters = ({ categories, filters }, selectedSources, t) => Object.keys(categories)
.map((categoryId) => {
const category = categories[categoryId];
const categoryFilters = [];
Object.keys(filters)
.sort()
.forEach((key) => {
const filter = filters[key];
filter.id = key;
if (filter.categoryId === categoryId) {
categoryFilters.push(filter);
}
});
return <div key={category.name} className="modal-body__item">
<h6 className="font-weight-bold mb-1">{t(category.name)}</h6>
<p className="mb-3">{t(category.description)}</p>
{categoryFilters.map((filter) => {
const { homepage, source, name } = filter;
const isSelected = Object.prototype.hasOwnProperty.call(selectedSources, source);
const iconsData = getIconsData(homepage, source);
return <div key={name} className="d-flex align-items-center pb-1">
<Field
name={`${filter.id}`}
type="checkbox"
component={renderSelectField}
placeholder={t(name)}
disabled={isSelected}
checked={isSelected}
/>
{renderIcons(iconsData)}
</div>;
})}
</div>;
});
const Form = (props) => {
const {
t,
closeModal,
handleSubmit,
processingAddFilter,
processingConfigFilter,
whitelist,
modalType,
toggleFilteringModal,
selectedSources,
filtersCatalog,
} = props;
const openModal = (modalType, timeout = MODAL_OPEN_TIMEOUT) => {
toggleFilteringModal();
setTimeout(() => toggleFilteringModal({ type: modalType }), timeout);
};
const openFilteringListModal = () => openModal(MODAL_TYPE.CHOOSE_FILTERING_LIST);
const openAddFiltersModal = () => openModal(MODAL_TYPE.ADD_FILTERS);
return <form onSubmit={handleSubmit}>
<div className="modal-body modal-body--medium">
{modalType === MODAL_TYPE.SELECT_MODAL_TYPE
&& <div className="d-flex justify-content-around">
<button onClick={openFilteringListModal}
className="btn btn-success btn-standard mr-2 btn-large">
{t('choose_from_list')}
</button>
<button onClick={openAddFiltersModal} className="btn btn-primary btn-standard">
{t('add_custom_list')}
</button>
</div>}
{modalType === MODAL_TYPE.CHOOSE_FILTERING_LIST
&& renderFilters(filtersCatalog, selectedSources, t)}
{modalType !== MODAL_TYPE.CHOOSE_FILTERING_LIST
&& modalType !== MODAL_TYPE.SELECT_MODAL_TYPE
&& <>
<div className="form__group">
<Field
id="name"
name="name"
type="text"
component={renderInputField}
className="form-control"
placeholder={t('enter_name_hint')}
validate={[validateRequiredValue]}
normalizeOnBlur={(data) => data.trim()}
/>
</div>
<div className="form__group">
<Field
id="url"
name="url"
type="text"
component={renderInputField}
className="form-control"
placeholder={t('enter_url_or_path_hint')}
validate={[validateRequiredValue, validatePath]}
normalizeOnBlur={(data) => data.trim()}
/>
</div>
<div className="form__description">
{whitelist ? t('enter_valid_allowlist') : t('enter_valid_blocklist')}
</div>
</>}
</div>
<div className="modal-footer">
<button
type="button"
className="btn btn-secondary"
onClick={closeModal}
>
{t('cancel_btn')}
</button>
<button
type="submit"
className="btn btn-success"
disabled={processingAddFilter || processingConfigFilter}
>
{t('save_btn')}
</button>
</div>
</form>;
};
Form.propTypes = {
t: PropTypes.func.isRequired,
closeModal: PropTypes.func.isRequired,
handleSubmit: PropTypes.func.isRequired,
processingAddFilter: PropTypes.bool.isRequired,
processingConfigFilter: PropTypes.bool.isRequired,
whitelist: PropTypes.bool,
modalType: PropTypes.string.isRequired,
toggleFilteringModal: PropTypes.func.isRequired,
filtersCatalog: PropTypes.object,
selectedSources: PropTypes.object,
};
export default flow([
withTranslation(),
reduxForm({ form: FORM_NAME.FILTER }),
])(Form);

View File

@@ -0,0 +1,133 @@
import React, { Component } from 'react';
import PropTypes from 'prop-types';
import ReactModal from 'react-modal';
import { withTranslation } from 'react-i18next';
import { MODAL_TYPE } from '../../helpers/constants';
import Form from './Form';
import '../ui/Modal.css';
import { getMap } from '../../helpers/helpers';
ReactModal.setAppElement('#root');
const MODAL_TYPE_TO_TITLE_TYPE_MAP = {
[MODAL_TYPE.EDIT_FILTERS]: 'edit',
[MODAL_TYPE.ADD_FILTERS]: 'new',
[MODAL_TYPE.SELECT_MODAL_TYPE]: 'new',
[MODAL_TYPE.CHOOSE_FILTERING_LIST]: 'choose',
};
/**
* @param modalType {'EDIT_FILTERS' | 'ADD_FILTERS' | 'CHOOSE_FILTERING_LIST'}
* @param whitelist {boolean}
* @returns {'new_allowlist' | 'edit_allowlist' | 'choose_allowlist' |
* 'new_blocklist' | 'edit_blocklist' | 'choose_blocklist' | null}
*/
const getTitle = (modalType, whitelist) => {
const titleType = MODAL_TYPE_TO_TITLE_TYPE_MAP[modalType];
if (!titleType) {
return null;
}
return `${titleType}_${whitelist ? 'allowlist' : 'blocklist'}`;
};
const getSelectedValues = (filters, catalogSourcesToIdMap) => filters.reduce((acc, { url }) => {
if (Object.prototype.hasOwnProperty.call(catalogSourcesToIdMap, url)) {
const fieldId = `filter${catalogSourcesToIdMap[url]}`;
acc.selectedFilterIds[fieldId] = true;
acc.selectedSources[url] = true;
}
return acc;
}, {
selectedFilterIds: {},
selectedSources: {},
});
class Modal extends Component {
closeModal = () => {
this.props.toggleFilteringModal();
};
render() {
const {
isOpen,
processingAddFilter,
processingConfigFilter,
handleSubmit,
modalType,
currentFilterData,
whitelist,
toggleFilteringModal,
filters,
t,
filtersCatalog,
} = this.props;
let initialValues;
let selectedSources;
switch (modalType) {
case MODAL_TYPE.EDIT_FILTERS:
initialValues = currentFilterData;
break;
case MODAL_TYPE.CHOOSE_FILTERING_LIST: {
const catalogSourcesToIdMap = getMap(Object.values(filtersCatalog.filters), 'source', 'id');
const selectedValues = getSelectedValues(filters, catalogSourcesToIdMap);
initialValues = selectedValues.selectedFilterIds;
selectedSources = selectedValues.selectedSources;
break;
}
default:
}
const title = t(getTitle(modalType, whitelist));
return (
<ReactModal
className="Modal__Bootstrap modal-dialog modal-dialog-centered"
closeTimeoutMS={0}
isOpen={isOpen}
onRequestClose={this.closeModal}
>
<div className="modal-content">
<div className="modal-header">
{title && <h4 className="modal-title">{title}</h4>}
<button type="button" className="close" onClick={this.closeModal}>
<span className="sr-only">Close</span>
</button>
</div>
<Form
selectedSources={selectedSources}
initialValues={initialValues}
filtersCatalog={filtersCatalog}
modalType={modalType}
onSubmit={handleSubmit}
processingAddFilter={processingAddFilter}
processingConfigFilter={processingConfigFilter}
closeModal={this.closeModal}
whitelist={whitelist}
toggleFilteringModal={toggleFilteringModal}
/>
</div>
</ReactModal>
);
}
}
Modal.propTypes = {
toggleFilteringModal: PropTypes.func.isRequired,
isOpen: PropTypes.bool.isRequired,
addFilter: PropTypes.func.isRequired,
isFilterAdded: PropTypes.bool.isRequired,
processingAddFilter: PropTypes.bool.isRequired,
processingConfigFilter: PropTypes.bool.isRequired,
handleSubmit: PropTypes.func.isRequired,
modalType: PropTypes.string.isRequired,
currentFilterData: PropTypes.object.isRequired,
t: PropTypes.func.isRequired,
whitelist: PropTypes.bool,
filters: PropTypes.array.isRequired,
filtersCatalog: PropTypes.object,
};
export default withTranslation()(Modal);

Some files were not shown because too many files have changed in this diff Show More