Compare commits
445 Commits
1228-proxy
...
v0.105.2-b
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1789c96c7f | ||
|
|
8811c8817e | ||
|
|
5aa0ca9319 | ||
|
|
90054974bc | ||
|
|
9f774d776c | ||
|
|
8ead755b67 | ||
|
|
90ebc4d8c9 | ||
|
|
400b76d47b | ||
|
|
8aa8be2921 | ||
|
|
52575d0247 | ||
|
|
7e1b4ca6fe | ||
|
|
a234b63da1 | ||
|
|
94e783d572 | ||
|
|
91403d0b95 | ||
|
|
d6a059e395 | ||
|
|
e31c0c456a | ||
|
|
836d0db563 | ||
|
|
a0abad6644 | ||
|
|
1122e71cf3 | ||
|
|
e32c18faab | ||
|
|
f68f6c9b37 | ||
|
|
dbcc55f528 | ||
|
|
66b549a565 | ||
|
|
a1c9e9d36b | ||
|
|
ab81ff03f6 | ||
|
|
d295621352 | ||
|
|
aebcd74efe | ||
|
|
7d1ca48ae4 | ||
|
|
8a0bc5468b | ||
|
|
e272e19516 | ||
|
|
10f03b7527 | ||
|
|
0d44822c43 | ||
|
|
e83b919dbd | ||
|
|
2eb21ef409 | ||
|
|
7b014082ab | ||
|
|
6b8a46ef3b | ||
|
|
a623ac694b | ||
|
|
7dd2d0af96 | ||
|
|
7e08565212 | ||
|
|
841bb9bc35 | ||
|
|
f016ae172c | ||
|
|
44168292d5 | ||
|
|
e64df20e74 | ||
|
|
890f0322d8 | ||
|
|
2bf2d5a19d | ||
|
|
771a32cc9d | ||
|
|
9df0935781 | ||
|
|
a3dddd72c1 | ||
|
|
6471504555 | ||
|
|
1fa4d55ae3 | ||
|
|
63e4adc0e7 | ||
|
|
55bde69691 | ||
|
|
00700c13e4 | ||
|
|
aff936141c | ||
|
|
dd64d19c3d | ||
|
|
c9d883daad | ||
|
|
e84effffc3 | ||
|
|
42b88c32fc | ||
|
|
bc01f4f8bc | ||
|
|
cbceab0f65 | ||
|
|
245f197f95 | ||
|
|
c9d2436d77 | ||
|
|
8aec08727c | ||
|
|
fa33568fab | ||
|
|
676f8c7671 | ||
|
|
5081ead0f4 | ||
|
|
fca566631a | ||
|
|
2638e271fe | ||
|
|
0c127039cf | ||
|
|
9cd9054cdb | ||
|
|
c82ebf5903 | ||
|
|
6fe227646b | ||
|
|
28b9abf1dd | ||
|
|
f5c47b6193 | ||
|
|
39f6689b39 | ||
|
|
8fdd021ed7 | ||
|
|
3e0238aa99 | ||
|
|
adb76aa9b8 | ||
|
|
6f155f78b6 | ||
|
|
a83c3cf2ea | ||
|
|
3f050a750d | ||
|
|
a32f8118b1 | ||
|
|
7042811ee6 | ||
|
|
cd88137333 | ||
|
|
4aa6f77a61 | ||
|
|
510573a904 | ||
|
|
0d0a419bd3 | ||
|
|
eeeb03839a | ||
|
|
3af079a81b | ||
|
|
154c9c1c26 | ||
|
|
a76fb2cd52 | ||
|
|
fc9ddcf941 | ||
|
|
3e9edd9eac | ||
|
|
1c1a7683ef | ||
|
|
c215b82004 | ||
|
|
44c7221ae9 | ||
|
|
abf8f65f05 | ||
|
|
e71019a1f3 | ||
|
|
fb9acf4cbd | ||
|
|
684017a75f | ||
|
|
5dffef53cd | ||
|
|
ecd9ef47b0 | ||
|
|
d9482b7588 | ||
|
|
7fab31beae | ||
|
|
5a50efadb2 | ||
|
|
715df4cd92 | ||
|
|
9f75725dfa | ||
|
|
679bbcdc26 | ||
|
|
56cb8a4dde | ||
|
|
f2c6e1c682 | ||
|
|
4474e9fcf9 | ||
|
|
e8c1f5c8d3 | ||
|
|
0d67aa251d | ||
|
|
bba74859e2 | ||
|
|
18097edee1 | ||
|
|
18be0ad80b | ||
|
|
89915e35bd | ||
|
|
ce55625d70 | ||
|
|
d1434408e5 | ||
|
|
76d9560292 | ||
|
|
2298a9ed09 | ||
|
|
933ca2af2a | ||
|
|
cfd492cf7c | ||
|
|
3706f559c1 | ||
|
|
e20e94ddd4 | ||
|
|
0e84962fde | ||
|
|
5e20ac7ed5 | ||
|
|
aef4659e93 | ||
|
|
455efd60f4 | ||
|
|
fa96d49dcb | ||
|
|
483f02c92a | ||
|
|
8a1d86aa7d | ||
|
|
93ffed7809 | ||
|
|
338209f32b | ||
|
|
15d8f979b1 | ||
|
|
67ad07d69a | ||
|
|
ace7c1c892 | ||
|
|
e5780fa308 | ||
|
|
644a9b5565 | ||
|
|
955b735c8b | ||
|
|
1191a9acb7 | ||
|
|
cbdf80727f | ||
|
|
0801c89234 | ||
|
|
4bc1337cc9 | ||
|
|
664ef85c6c | ||
|
|
39268c754a | ||
|
|
18b5f6e5e4 | ||
|
|
9fb6bf82c7 | ||
|
|
8e793261e6 | ||
|
|
6f50a4c964 | ||
|
|
6a5bd99eed | ||
|
|
ab1cefca4b | ||
|
|
5b3dfe3274 | ||
|
|
fa1056b424 | ||
|
|
a560dafa37 | ||
|
|
bc9be8d9ee | ||
|
|
334b3fc636 | ||
|
|
1f649b9799 | ||
|
|
e829e7a064 | ||
|
|
fc79e2e8f8 | ||
|
|
1c754788f9 | ||
|
|
925c5df801 | ||
|
|
f893df7e64 | ||
|
|
4cc6834186 | ||
|
|
07497beb78 | ||
|
|
7eb3e00b35 | ||
|
|
c62dd03921 | ||
|
|
ab63b6e131 | ||
|
|
a8677c082b | ||
|
|
026cc2ecbf | ||
|
|
bdff46ec1d | ||
|
|
e393acf5eb | ||
|
|
e7f7799b3e | ||
|
|
da9e92ad6d | ||
|
|
61691fdedb | ||
|
|
2f265f249e | ||
|
|
f165fd91c0 | ||
|
|
49c55e356f | ||
|
|
5f84cb1afe | ||
|
|
66d593bb0c | ||
|
|
fd7b061dd6 | ||
|
|
2e8352d31c | ||
|
|
2c56a68597 | ||
|
|
a2d39c810a | ||
|
|
0cddf4c11d | ||
|
|
2c2a359d0a | ||
|
|
e2738fdf3f | ||
|
|
e02308dd42 | ||
|
|
ef178610d6 | ||
|
|
5c7b6bbf5c | ||
|
|
7f9a3a73b4 | ||
|
|
73c30590e0 | ||
|
|
b7bf7f78df | ||
|
|
6aacb2105c | ||
|
|
88d44b4370 | ||
|
|
2313eda123 | ||
|
|
e4383189a5 | ||
|
|
09b6eba7d9 | ||
|
|
9b963fc777 | ||
|
|
7f29d4e546 | ||
|
|
a572876775 | ||
|
|
63e513e33e | ||
|
|
dfd28b45ab | ||
|
|
a86172fda4 | ||
|
|
8501a85292 | ||
|
|
4134220c54 | ||
|
|
ab8defdb08 | ||
|
|
7d1d87d6ec | ||
|
|
641db73a86 | ||
|
|
6e615c6eaa | ||
|
|
60d72fb9c3 | ||
|
|
a6e18c4700 | ||
|
|
f9e4e7b024 | ||
|
|
96e83a133f | ||
|
|
b4a35fa887 | ||
|
|
36c7735b85 | ||
|
|
284da7c91b | ||
|
|
e685d81c92 | ||
|
|
1cf9848044 | ||
|
|
c129361e55 | ||
|
|
046ec13fdc | ||
|
|
3045da1742 | ||
|
|
642dcd647c | ||
|
|
62a8fe0b73 | ||
|
|
b1c71a1284 | ||
|
|
4690229d81 | ||
|
|
de257b73aa | ||
|
|
40614d9a7b | ||
|
|
f2eda6d192 | ||
|
|
8a9c6e8a02 | ||
|
|
bf4c256c72 | ||
|
|
6358240e9b | ||
|
|
a19523b258 | ||
|
|
394fc5a9d8 | ||
|
|
09196118e9 | ||
|
|
e802e6645e | ||
|
|
13f708b483 | ||
|
|
979874c92b | ||
|
|
3cc5bf210d | ||
|
|
1e583315a8 | ||
|
|
ee8a033472 | ||
|
|
b85c0b3bf7 | ||
|
|
859ed209a0 | ||
|
|
c6a6f05b1b | ||
|
|
5bf330bf14 | ||
|
|
eefa553100 | ||
|
|
298f74ba81 | ||
|
|
3e1f922252 | ||
|
|
7e16fda57b | ||
|
|
11e794f554 | ||
|
|
2baa33fb1f | ||
|
|
02d16a0b40 | ||
|
|
84ca2f58a8 | ||
|
|
bc20917840 | ||
|
|
62cc334f46 | ||
|
|
d398e4b01c | ||
|
|
3d19f91bed | ||
|
|
df34ee5c09 | ||
|
|
64c1a68fb9 | ||
|
|
d747185b45 | ||
|
|
8afdc049ef | ||
|
|
812b43a4b3 | ||
|
|
ae8de95d89 | ||
|
|
df3fa595a2 | ||
|
|
98f6843aab | ||
|
|
9761f13399 | ||
|
|
a376bf915a | ||
|
|
da5c1ebbbf | ||
|
|
40ebccaab4 | ||
|
|
d1e55c31af | ||
|
|
6b64bfac00 | ||
|
|
e37ccdbb70 | ||
|
|
0b43bf4cd9 | ||
|
|
fe87bdc9cd | ||
|
|
f75a0f8719 | ||
|
|
2ba85ba8e1 | ||
|
|
052a9ae196 | ||
|
|
32b24ce093 | ||
|
|
3acfaa162f | ||
|
|
345a97c4af | ||
|
|
a7cf717116 | ||
|
|
8315b46f30 | ||
|
|
e0ddb1c0ea | ||
|
|
3a96fdd01b | ||
|
|
56e7b2f6b3 | ||
|
|
20226edbe3 | ||
|
|
72ab51bce0 | ||
|
|
1a3d98d3bf | ||
|
|
be82502ba7 | ||
|
|
398da7e2d3 | ||
|
|
65acfb75dd | ||
|
|
eb91c6cfe4 | ||
|
|
8fc1862863 | ||
|
|
fc4a557610 | ||
|
|
f3118c5e2a | ||
|
|
fb7ca94243 | ||
|
|
d21535683c | ||
|
|
78814064bd | ||
|
|
c98f18747c | ||
|
|
0ae00932e9 | ||
|
|
8856dd6e4c | ||
|
|
a7d2dd7bdb | ||
|
|
69a740714f | ||
|
|
128229ad73 | ||
|
|
2f6f65a81f | ||
|
|
8c411c4630 | ||
|
|
990f531f54 | ||
|
|
6222d17d86 | ||
|
|
c72cd58f69 | ||
|
|
c1f5fdaee4 | ||
|
|
10f67bd383 | ||
|
|
dc61744d47 | ||
|
|
805bd41c4d | ||
|
|
1d36abd11a | ||
|
|
756f97ede1 | ||
|
|
bf23aa4d9b | ||
|
|
3a71374f9f | ||
|
|
9fd74748bb | ||
|
|
f694a40c57 | ||
|
|
38066151a6 | ||
|
|
deeaca5de1 | ||
|
|
b7607216d2 | ||
|
|
835f3b911b | ||
|
|
d38068289c | ||
|
|
ad6c43c4a3 | ||
|
|
380ce34ce6 | ||
|
|
da1e235052 | ||
|
|
9651243347 | ||
|
|
a5e189bdf3 | ||
|
|
2a5b0b8da1 | ||
|
|
99b556aab3 | ||
|
|
726d8eec2c | ||
|
|
cbc1ef4558 | ||
|
|
625f1dffe1 | ||
|
|
a22db5f358 | ||
|
|
1c88667306 | ||
|
|
b3a68bb806 | ||
|
|
6fddccfb65 | ||
|
|
8533081da7 | ||
|
|
cb8afde629 | ||
|
|
caee4b86fa | ||
|
|
67e6b7d3e8 | ||
|
|
bce69809bc | ||
|
|
75d680ff30 | ||
|
|
c5773577bc | ||
|
|
071a1f77a4 | ||
|
|
7177361016 | ||
|
|
b6e5863058 | ||
|
|
88c67764b9 | ||
|
|
f8010902ce | ||
|
|
0818d51493 | ||
|
|
7720d0dfbc | ||
|
|
90e4316cfc | ||
|
|
e781ff0cae | ||
|
|
9a49161f15 | ||
|
|
382cddea47 | ||
|
|
317e030554 | ||
|
|
1fadc27615 | ||
|
|
ccb903c9a0 | ||
|
|
7d7609cf7a | ||
|
|
314867734a | ||
|
|
120d5304c2 | ||
|
|
abc08b7572 | ||
|
|
3c85b994d3 | ||
|
|
7be0cc72df | ||
|
|
c826c976af | ||
|
|
22d0341a4c | ||
|
|
3c2481f91d | ||
|
|
c588b89197 | ||
|
|
b04e12e189 | ||
|
|
c5ca2e60c6 | ||
|
|
366fdab605 | ||
|
|
2c12d5f860 | ||
|
|
49a5bab267 | ||
|
|
06594bde8f | ||
|
|
84938c5603 | ||
|
|
9f3c27c03a | ||
|
|
458d9f49cb | ||
|
|
c1c8abdd0f | ||
|
|
71213bcbf3 | ||
|
|
4d1666eff1 | ||
|
|
14bc5297ac | ||
|
|
12ed67ab11 | ||
|
|
90ef204d04 | ||
|
|
9e87f0afed | ||
|
|
d3428ca46c | ||
|
|
03506df25d | ||
|
|
15a82233f3 | ||
|
|
8dc0108868 | ||
|
|
fc43e2ac6f | ||
|
|
1a6bd29462 | ||
|
|
340052090c | ||
|
|
dd3027afe7 | ||
|
|
d53e32259a | ||
|
|
07b6cc24b7 | ||
|
|
dfab6597cd | ||
|
|
b6193c32ce | ||
|
|
f0ebec545e | ||
|
|
8f017d2c0e | ||
|
|
474306d465 | ||
|
|
b54ce85d3d | ||
|
|
9e33bd5259 | ||
|
|
050e996a35 | ||
|
|
07db05dd80 | ||
|
|
4efc464e98 | ||
|
|
e56c746b60 | ||
|
|
7b9cef3a08 | ||
|
|
f363c95ef5 | ||
|
|
729f4b1766 | ||
|
|
67bf027616 | ||
|
|
7931e50673 | ||
|
|
6b61429572 | ||
|
|
0a4781be97 | ||
|
|
268d90b5bc | ||
|
|
7d3a72e626 | ||
|
|
c822297065 | ||
|
|
f04acaf92e | ||
|
|
facf72f774 | ||
|
|
c2ba8e4c09 | ||
|
|
1531175da2 | ||
|
|
fa252ac2ec | ||
|
|
98b6eb320f | ||
|
|
d23acd2016 | ||
|
|
8cdef18358 | ||
|
|
9634ef9c03 | ||
|
|
704291e88d | ||
|
|
9c999f98fb | ||
|
|
06af130bb7 | ||
|
|
719ef16b93 | ||
|
|
cb6ca3b0c4 | ||
|
|
eb3999a261 | ||
|
|
546a02b49e | ||
|
|
f8924f0785 | ||
|
|
888c9d5714 | ||
|
|
1806816d9c | ||
|
|
fcc34ca80b | ||
|
|
1d35d73fc5 | ||
|
|
c9f58ce4a7 | ||
|
|
dd46cd5f36 | ||
|
|
e7bef3a448 | ||
|
|
23752377b7 | ||
|
|
6090400ea0 | ||
|
|
ec24d18f83 | ||
|
|
89c3926ba5 | ||
|
|
a3317c08c4 |
16
.codecov.yml
16
.codecov.yml
@@ -1,8 +1,8 @@
|
||||
coverage:
|
||||
status:
|
||||
project:
|
||||
default:
|
||||
target: 40%
|
||||
threshold: null
|
||||
patch: false
|
||||
changes: false
|
||||
'coverage':
|
||||
'status':
|
||||
'project':
|
||||
'default':
|
||||
'target': '40%'
|
||||
'threshold': null
|
||||
'patch': false
|
||||
'changes': false
|
||||
|
||||
@@ -1,40 +1,3 @@
|
||||
.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
|
||||
# Ignore everything except for explicitly allowed stuff.
|
||||
*
|
||||
!dist/docker
|
||||
|
||||
@@ -1,12 +0,0 @@
|
||||
#!/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;
|
||||
12
.github/ISSUE_TEMPLATE/Bug_report.md
vendored
12
.github/ISSUE_TEMPLATE/Bug_report.md
vendored
@@ -1,11 +1,9 @@
|
||||
---
|
||||
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.
|
||||
-->
|
||||
Have a question or an idea? Please search it [on our forum](https://github.com/AdguardTeam/AdGuardHome/discussions) to make sure it was not yet asked. If you cannot find what you had in mind, please [submit it here](https://github.com/AdguardTeam/AdGuardHome/discussions/new).
|
||||
|
||||
### Prerequisites
|
||||
|
||||
@@ -17,14 +15,18 @@ Please answer the following questions for yourself before submitting an issue. *
|
||||
|
||||
### Issue Details
|
||||
|
||||
<!--- Please include all relevant details about the environment you experienced the bug in -->
|
||||
<!-- Please include all relevant details about the environment you experienced the bug in. -->
|
||||
|
||||
* **Version of AdGuard Home server:**
|
||||
* <!-- (e.g. v1.0) -->
|
||||
* <!-- (e.g. v0.123.4) -->
|
||||
* **How did you install AdGuard Home:**
|
||||
* <!-- (e.g. Built from source, Snapcraft, Docker, Github releases, etc.) -->
|
||||
* **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) -->
|
||||
* **CPU architecture:**
|
||||
* <!-- (e.g. AMD64, MIPS, etc.) -->
|
||||
* **Operating system and version:**
|
||||
* <!-- (e.g. Ubuntu 18.04.1) -->
|
||||
|
||||
|
||||
6
.github/ISSUE_TEMPLATE/Feature_request.md
vendored
6
.github/ISSUE_TEMPLATE/Feature_request.md
vendored
@@ -1,11 +1,9 @@
|
||||
---
|
||||
name: Feature request
|
||||
about: Suggest an idea for AdGuard Home
|
||||
|
||||
about: Suggest a feature request 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.
|
||||
-->
|
||||
Have a question or an idea? Please search it [on our forum](https://github.com/AdguardTeam/AdGuardHome/discussions) to make sure it was not yet asked. If you cannot find what you had in mind, please [submit it here](https://github.com/AdguardTeam/AdGuardHome/discussions/new).
|
||||
|
||||
### Prerequisites
|
||||
|
||||
|
||||
37
.github/stale.yml
vendored
37
.github/stale.yml
vendored
@@ -1,19 +1,22 @@
|
||||
# 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: >
|
||||
# Number of days of inactivity before an issue becomes stale.
|
||||
'daysUntilStale': 90
|
||||
# Number of days of inactivity before a stale issue is closed.
|
||||
'daysUntilClose': 15
|
||||
# Issues with these labels will never be considered stale.
|
||||
'exemptLabels':
|
||||
- 'bug'
|
||||
- 'enhancement'
|
||||
- 'feature request'
|
||||
- 'localization'
|
||||
- 'needs investigation'
|
||||
- 'recurrent'
|
||||
- 'research'
|
||||
# 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
|
||||
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
|
||||
# Comment to post when closing a stale issue. Set to `false` to disable.
|
||||
'closeComment': false
|
||||
|
||||
303
.github/workflows/build.yml
vendored
303
.github/workflows/build.yml
vendored
@@ -1,172 +1,139 @@
|
||||
name: build
|
||||
'name': 'build'
|
||||
|
||||
env:
|
||||
GO_VERSION: 1.14
|
||||
NODE_VERSION: 13
|
||||
'env':
|
||||
'GO_VERSION': '1.14'
|
||||
'NODE_VERSION': '14'
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- '*'
|
||||
tags:
|
||||
- v*
|
||||
pull_request:
|
||||
'on':
|
||||
'push':
|
||||
'branches':
|
||||
- '*'
|
||||
'tags':
|
||||
- 'v*'
|
||||
'pull_request':
|
||||
|
||||
jobs:
|
||||
'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'
|
||||
# TODO(a.garipov): Update when they fix the macOS issue. The issue is
|
||||
# most probably https://github.com/actions/cache/issues/527.
|
||||
'uses': 'actions/cache@v2.1.3'
|
||||
'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'
|
||||
# TODO(a.garipov): Update when they fix the macOS issue. The issue is
|
||||
# most probably https://github.com/actions/cache/issues/527.
|
||||
'uses': 'actions/cache@v2.1.3'
|
||||
'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 VERBOSE=1 ci'
|
||||
- 'name': 'Upload coverage'
|
||||
'uses': 'codecov/codecov-action@v1'
|
||||
'if': "success() && matrix.os == 'ubuntu-latest'"
|
||||
'with':
|
||||
'token': '${{ secrets.CODECOV_TOKEN }}'
|
||||
'file': './coverage.txt'
|
||||
'build-release':
|
||||
'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'
|
||||
# TODO(a.garipov): Update when they fix the macOS issue. The issue is
|
||||
# most probably https://github.com/actions/cache/issues/527.
|
||||
'uses': 'actions/cache@v2.1.3'
|
||||
'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'
|
||||
# TODO(a.garipov): Update when they fix the macOS issue. The issue is
|
||||
# most probably https://github.com/actions/cache/issues/527.
|
||||
'uses': 'actions/cache@v2.1.3'
|
||||
'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 QEMU'
|
||||
'uses': 'docker/setup-qemu-action@v1'
|
||||
- 'name': 'Set up Docker Buildx'
|
||||
'uses': 'docker/setup-buildx-action@v1'
|
||||
- 'name': 'Run snapshot build'
|
||||
'run': 'make SIGN=0 VERBOSE=1 build-release build-docker'
|
||||
|
||||
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 }}
|
||||
'notify':
|
||||
'needs':
|
||||
- 'build-release'
|
||||
# Secrets are not passed to workflows that are triggered by a pull request
|
||||
# from a fork.
|
||||
#
|
||||
# Use always() to signal to the runner that this job must run even if the
|
||||
# previous ones failed.
|
||||
'if':
|
||||
${{ always() &&
|
||||
(
|
||||
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, workflow'
|
||||
'env':
|
||||
'GITHUB_TOKEN': '${{ secrets.GITHUB_TOKEN }}'
|
||||
'SLACK_WEBHOOK_URL': '${{ secrets.SLACK_WEBHOOK_URL }}'
|
||||
|
||||
99
.github/workflows/lint.yml
vendored
99
.github/workflows/lint.yml
vendored
@@ -1,47 +1,52 @@
|
||||
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 }}
|
||||
'name': 'lint'
|
||||
'on':
|
||||
'push':
|
||||
'tags':
|
||||
- 'v*'
|
||||
'branches':
|
||||
- '*'
|
||||
'pull_request':
|
||||
'jobs':
|
||||
'go-lint':
|
||||
'runs-on': 'ubuntu-latest'
|
||||
'steps':
|
||||
- 'uses': 'actions/checkout@v2'
|
||||
- 'name': 'run-lint'
|
||||
'run': >
|
||||
make go-deps go-tools go-lint
|
||||
'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':
|
||||
- 'go-lint'
|
||||
- 'eslint'
|
||||
# Secrets are not passed to workflows that are triggered by a pull request
|
||||
# from a fork.
|
||||
#
|
||||
# Use always() to signal to the runner that this job must run even if the
|
||||
# previous ones failed.
|
||||
'if':
|
||||
${{ always() &&
|
||||
(
|
||||
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, workflow'
|
||||
'env':
|
||||
'GITHUB_TOKEN': '${{ secrets.GITHUB_TOKEN }}'
|
||||
'SLACK_WEBHOOK_URL': '${{ secrets.SLACK_WEBHOOK_URL }}'
|
||||
|
||||
53
.gitignore
vendored
53
.gitignore
vendored
@@ -1,30 +1,25 @@
|
||||
.DS_Store
|
||||
/.vscode
|
||||
.idea
|
||||
/AdGuardHome
|
||||
/AdGuardHome.exe
|
||||
/AdGuardHome.yaml
|
||||
/AdGuardHome.log
|
||||
/data/
|
||||
/build/
|
||||
/dist/
|
||||
/client/node_modules/
|
||||
/querylog.json
|
||||
/querylog.json.1
|
||||
coverage.txt
|
||||
|
||||
# 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
|
||||
# Please, DO NOT put your text editors' temporary files here. The more are
|
||||
# added, the harder it gets to maintain and manage projects' gitignores. Put
|
||||
# them into your global gitignore file instead.
|
||||
#
|
||||
# See https://stackoverflow.com/a/7335487/1892060.
|
||||
#
|
||||
# Only build, run, and test outputs here. Sorted.
|
||||
*-packr.go
|
||||
*.db
|
||||
*.log
|
||||
*.snap
|
||||
/bin/
|
||||
/build/
|
||||
/build2/
|
||||
/data/
|
||||
/dist/
|
||||
/dnsfilter/tests/dnsfilter.TestLotsOfRules*.pprof
|
||||
/dnsfilter/tests/top-1m.csv
|
||||
/launchpad_credentials
|
||||
/querylog.json*
|
||||
/snapcraft_login
|
||||
AdGuardHome*
|
||||
coverage.txt
|
||||
leases.db
|
||||
node_modules/
|
||||
|
||||
@@ -1,79 +0,0 @@
|
||||
# options for analysis running
|
||||
run:
|
||||
# default concurrency is a available CPU number
|
||||
concurrency: 4
|
||||
|
||||
# timeout for analysis, e.g. 30s, 5m, default is 1m
|
||||
deadline: 2m
|
||||
|
||||
# which files to skip: they will be analyzed, but issues from them
|
||||
# won't be reported. Default value is empty list, but there is
|
||||
# no need to include all autogenerated files, we confidently recognize
|
||||
# autogenerated files. If it's not please let us know.
|
||||
skip-files:
|
||||
- ".*generated.*"
|
||||
- dnsfilter/rule_to_regexp.go
|
||||
- util/pprof.go
|
||||
- ".*_test.go"
|
||||
- client/.*
|
||||
- build/.*
|
||||
- dist/.*
|
||||
|
||||
|
||||
# all available settings of specific linters
|
||||
linters-settings:
|
||||
errcheck:
|
||||
# [deprecated] comma-separated list of pairs of the form pkg:regex
|
||||
# the regex is used to ignore names within pkg. (default "fmt:.*").
|
||||
# see https://github.com/kisielk/errcheck#the-deprecated-method for details
|
||||
ignore: fmt:.*,net:SetReadDeadline,net/http:^Write
|
||||
gocyclo:
|
||||
min-complexity: 20
|
||||
lll:
|
||||
line-length: 200
|
||||
|
||||
linters:
|
||||
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:
|
||||
# List of regexps of issue texts to exclude, empty list by default.
|
||||
# But independently from this option we use default exclude patterns,
|
||||
# it can be disabled by `exclude-use-default: false`. To list all
|
||||
# excluded by default patterns execute `golangci-lint run --help`
|
||||
exclude:
|
||||
# structcheck cannot detect usages while they're there
|
||||
- .parentalServer. is unused
|
||||
- .safeBrowsingServer. is unused
|
||||
# errcheck
|
||||
- Error return value of .s.closeConn. is not checked
|
||||
- Error return value of ..*.Shutdown.
|
||||
# goconst
|
||||
- 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
|
||||
100
.goreleaser.yml
100
.goreleaser.yml
@@ -1,100 +0,0 @@
|
||||
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'
|
||||
24
.twosky.json
24
.twosky.json
@@ -4,35 +4,39 @@
|
||||
"base_locale": "en",
|
||||
"localizable_files": ["client/src/__locales/en.json"],
|
||||
"languages": {
|
||||
"be": "Беларуская",
|
||||
"bg": "Български",
|
||||
"cs": "Český",
|
||||
"da": "Dansk",
|
||||
"de": "Deutsch",
|
||||
"nl": "Dutch",
|
||||
"en": "English",
|
||||
"es": "Español",
|
||||
"fa": "فارسی",
|
||||
"fr": "Français",
|
||||
"hr": "Hrvatski",
|
||||
"hu": "Magyar",
|
||||
"id": "Indonesian",
|
||||
"it": "Italiano",
|
||||
"ja": "日本語",
|
||||
"ko": "한국어",
|
||||
"nl": "Dutch",
|
||||
"no": "Norsk",
|
||||
"pl": "Polski",
|
||||
"pt-br": "Português (BR)",
|
||||
"pt-pt": "Português (PT)",
|
||||
"ro": "Română",
|
||||
"ru": "Русский",
|
||||
"si-lk": "සිංහල",
|
||||
"sk": "Slovenčina",
|
||||
"sl": "Slovenščina",
|
||||
"sr-cs": "Srpski",
|
||||
"sv": "Svenska",
|
||||
"vi": "Tiếng Việt",
|
||||
"th": "ภาษาไทย",
|
||||
"tr": "Türkçe",
|
||||
"cs": "Český",
|
||||
"bg": "Български",
|
||||
"ru": "Русский",
|
||||
"fa": "فارسی",
|
||||
"ja": "日本語",
|
||||
"zh-tw": "正體中文",
|
||||
"vi": "Tiếng Việt",
|
||||
"zh-cn": "简体中文",
|
||||
"ko": "한국어",
|
||||
"th": "ภาษาไทย"
|
||||
"zh-hk": "繁體中文(香港)",
|
||||
"zh-tw": "正體中文(台灣)"
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
305
AGHTechDoc.md
305
AGHTechDoc.md
@@ -12,6 +12,7 @@ Contents:
|
||||
* Updating
|
||||
* Get version command
|
||||
* Update command
|
||||
* API: Get global status
|
||||
* TLS
|
||||
* API: Get TLS configuration
|
||||
* API: Set TLS configuration
|
||||
@@ -24,12 +25,15 @@ Contents:
|
||||
* API: Find clients by IP
|
||||
* DHCP server
|
||||
* DHCP server in DNS
|
||||
* "Show DHCP status" command
|
||||
* "Check DHCP" command
|
||||
* "Enable DHCP" command
|
||||
* DHCP Custom Options
|
||||
* API: Show DHCP interfaces
|
||||
* API: Show DHCP status
|
||||
* API: Check DHCP
|
||||
* API: Enable DHCP
|
||||
* Static IP check/set
|
||||
* Add a static lease
|
||||
* API: Add a static lease
|
||||
* API: Reset DHCP configuration
|
||||
* RA+SLAAC
|
||||
* DNS general settings
|
||||
* API: Get DNS general settings
|
||||
* API: Set DNS general settings
|
||||
@@ -66,6 +70,7 @@ Contents:
|
||||
* API: Log out
|
||||
* API: Get current user info
|
||||
* Safe services
|
||||
* ipset
|
||||
|
||||
|
||||
## Relations between subsystems
|
||||
@@ -376,6 +381,28 @@ Error response:
|
||||
UI shows error message "Auto-update has failed"
|
||||
|
||||
|
||||
## API: Get global status
|
||||
|
||||
Request:
|
||||
|
||||
GET /control/status
|
||||
|
||||
Response:
|
||||
|
||||
200 OK
|
||||
|
||||
{
|
||||
"dns_addresses":["..."],
|
||||
"dns_port":53,
|
||||
"http_port":3000,
|
||||
"language":"en",
|
||||
"protection_enabled":true,
|
||||
"running":true,
|
||||
"dhcp_available":true,
|
||||
"version":"undefined"
|
||||
}
|
||||
|
||||
|
||||
## DHCP server
|
||||
|
||||
Enable DHCP server algorithm:
|
||||
@@ -405,7 +432,43 @@ DHCP leases are used in several ways by DNS module.
|
||||
> PTR 100.1.168.192.in-addr.arpa. = bills-notebook.
|
||||
|
||||
|
||||
### "Show DHCP status" command
|
||||
### DHCP Custom Options
|
||||
|
||||
Option with arbitrary hexadecimal data:
|
||||
|
||||
DEC_CODE hex HEX_DATA
|
||||
|
||||
where DEC_CODE is a decimal DHCPv4 option code in range [1..255]
|
||||
|
||||
Option with IP data (only 1 IP is supported):
|
||||
|
||||
DEC_CODE ip IP_ADDR
|
||||
|
||||
|
||||
### API: Show DHCP interfaces
|
||||
|
||||
Request:
|
||||
|
||||
GET /control/dhcp/interfaces
|
||||
|
||||
Response:
|
||||
|
||||
200 OK
|
||||
|
||||
{
|
||||
"iface_name":{
|
||||
"name":"iface_name",
|
||||
"hardware_address":"...",
|
||||
"ipv4_addresses":["ipv4 addr", ...],
|
||||
"ipv6_addresses":["ipv6 addr", ...],
|
||||
"gateway_ip":"...",
|
||||
"flags":"up|broadcast|multicast"
|
||||
}
|
||||
...
|
||||
}
|
||||
|
||||
|
||||
### API: Show DHCP status
|
||||
|
||||
Request:
|
||||
|
||||
@@ -416,16 +479,19 @@ Response:
|
||||
200 OK
|
||||
|
||||
{
|
||||
"config":{
|
||||
"enabled":false,
|
||||
"interface_name":"...",
|
||||
"enabled":false,
|
||||
"interface_name":"...",
|
||||
"v4":{
|
||||
"gateway_ip":"...",
|
||||
"subnet_mask":"...",
|
||||
"range_start":"...",
|
||||
"range_start":"...", // if empty: DHCPv4 won't be enabled
|
||||
"range_end":"...",
|
||||
"lease_duration":60,
|
||||
"icmp_timeout_msec":0
|
||||
},
|
||||
"v6":{
|
||||
"range_start":"...", // if empty: DHCPv6 won't be enabled
|
||||
"lease_duration":60,
|
||||
}
|
||||
"leases":[
|
||||
{"ip":"...","mac":"...","hostname":"...","expires":"..."}
|
||||
...
|
||||
@@ -437,7 +503,7 @@ Response:
|
||||
}
|
||||
|
||||
|
||||
### "Check DHCP" command
|
||||
### API: Check DHCP
|
||||
|
||||
Request:
|
||||
|
||||
@@ -450,13 +516,21 @@ Response:
|
||||
200 OK
|
||||
|
||||
{
|
||||
"other_server": {
|
||||
"found": "yes|no|error",
|
||||
"error": "Error message", // set if found=error
|
||||
},
|
||||
"static_ip": {
|
||||
"static": "yes|no|error",
|
||||
"ip": "<Current dynamic IP address>", // set if static=no
|
||||
v4: {
|
||||
"other_server": {
|
||||
"found": "yes|no|error",
|
||||
"error": "Error message", // set if found=error
|
||||
},
|
||||
"static_ip": {
|
||||
"static": "yes|no|error",
|
||||
"ip": "<Current dynamic IP address>", // set if static=no
|
||||
}
|
||||
}
|
||||
v6: {
|
||||
"other_server": {
|
||||
"found": "yes|no|error",
|
||||
"error": "Error message", // set if found=error
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
@@ -477,21 +551,26 @@ If `static_ip.static` is:
|
||||
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.
|
||||
|
||||
|
||||
### "Enable DHCP" command
|
||||
### API: Enable DHCP
|
||||
|
||||
Request:
|
||||
|
||||
POST /control/dhcp/set_config
|
||||
|
||||
{
|
||||
"enabled":true,
|
||||
"interface_name":"vboxnet0",
|
||||
"enabled":true,
|
||||
"interface_name":"vboxnet0",
|
||||
"v4":{
|
||||
"gateway_ip":"192.169.56.1",
|
||||
"subnet_mask":"255.255.255.0",
|
||||
"range_start":"192.169.56.3",
|
||||
"range_end":"192.169.56.3",
|
||||
"range_start":"192.169.56.100",
|
||||
"range_end":"192.169.56.200", // Note: first 3 octects must match "range_start"
|
||||
"lease_duration":60,
|
||||
"icmp_timeout_msec":0
|
||||
},
|
||||
"v6":{
|
||||
"range_start":"...",
|
||||
"lease_duration":60,
|
||||
}
|
||||
}
|
||||
|
||||
Response:
|
||||
@@ -500,6 +579,10 @@ Response:
|
||||
|
||||
OK
|
||||
|
||||
For v4, if range_start = "1.2.3.4", the range_end must be "1.2.3.X" where X > 4.
|
||||
|
||||
For v6, if range_start = "2001::1", the last IP is "2001:ff".
|
||||
|
||||
|
||||
### Static IP check/set
|
||||
|
||||
@@ -595,7 +678,7 @@ or:
|
||||
systemctl restart system-networkd
|
||||
|
||||
|
||||
### Add a static lease
|
||||
### API: Add a static lease
|
||||
|
||||
Request:
|
||||
|
||||
@@ -643,6 +726,53 @@ Response:
|
||||
200 OK
|
||||
|
||||
|
||||
### RA+SLAAC
|
||||
|
||||
There are 3 options for a client to get IPv6 address:
|
||||
|
||||
1. via DHCPv6.
|
||||
Client doesn't receive any `ICMPv6.RouterAdvertisement` packets, so it tries to use DHCPv6.
|
||||
2. via SLAAC.
|
||||
Client receives a `ICMPv6.RouterAdvertisement` packet with `Managed=false` flag and IPv6 prefix.
|
||||
Client then assigns to itself an IPv6 address using this prefix and its MAC address.
|
||||
DHCPv6 server won't be started in this case.
|
||||
3. via DHCPv6 or SLAAC.
|
||||
Client receives a `ICMPv6.RouterAdvertisement` packet with `Managed=true` flag and IPv6 prefix.
|
||||
Client may choose to use SLAAC or DHCPv6 to obtain an IPv6 address.
|
||||
|
||||
Configuration:
|
||||
|
||||
dhcp:
|
||||
...
|
||||
dhcpv6:
|
||||
...
|
||||
ra_slaac_only: false
|
||||
ra_allow_slaac: false
|
||||
|
||||
* `ra_slaac_only:false; ra_allow_slaac:false`: use option #1.
|
||||
Don't send any `ICMPv6.RouterAdvertisement` packets.
|
||||
* `ra_slaac_only:true; ra_allow_slaac:false`: use option #2.
|
||||
Periodically send `ICMPv6.RouterAdvertisement(Flags=(Managed=false,Other=false))` packets.
|
||||
* `ra_slaac_only:false; ra_allow_slaac:true`: use option #3.
|
||||
Periodically send `ICMPv6.RouterAdvertisement(Flags=(Managed=true,Other=true))` packets.
|
||||
|
||||
ICMPv6.RouterAdvertisement packet description:
|
||||
|
||||
ICMPv6:
|
||||
Type=RouterAdvertisement(134)
|
||||
Flags
|
||||
Managed=<BOOL>
|
||||
Other=<BOOL>
|
||||
Option=Prefix information(3)
|
||||
<IPv6 address prefix (/64) of the network interface>
|
||||
Option=MTU(5)
|
||||
<...>
|
||||
Option=Source link-layer address(1)
|
||||
<MAC address>
|
||||
Option=Recursive DNS Server(25)
|
||||
<IPv6 address of DNS server>
|
||||
|
||||
|
||||
## TLS
|
||||
|
||||
|
||||
@@ -661,6 +791,7 @@ Response:
|
||||
"server_name":"...",
|
||||
"port_https":443,
|
||||
"port_dns_over_tls":853,
|
||||
"port_dns_over_quic":784,
|
||||
"certificate_chain":"...",
|
||||
"private_key":"...",
|
||||
"certificate_path":"...",
|
||||
@@ -692,12 +823,43 @@ Request:
|
||||
"force_https":false,
|
||||
"port_https":443,
|
||||
"port_dns_over_tls":853,
|
||||
"port_dns_over_quic":784,
|
||||
"certificate_chain":"...",
|
||||
"private_key":"...",
|
||||
"certificate_path":"...", // if set, certificate_chain must be empty
|
||||
"private_key_path":"..." // if set, private_key must be empty
|
||||
}
|
||||
|
||||
Response:
|
||||
|
||||
200 OK
|
||||
|
||||
### API: Validate TLS configuration
|
||||
|
||||
Request:
|
||||
|
||||
POST /control/tls/validate
|
||||
|
||||
{
|
||||
"enabled":true,
|
||||
"port_https":443,
|
||||
"port_dns_over_tls":853,
|
||||
"port_dns_over_quic":784,
|
||||
"allow_unencrypted_doh":false,
|
||||
"certificate_chain":"...",
|
||||
"private_key":"...",
|
||||
"certificate_path":"...",
|
||||
"private_key_path":"...",
|
||||
"valid_cert":true,
|
||||
"valid_chain":false,
|
||||
"not_before":"2019-03-19T08:23:45Z",
|
||||
"not_after":"2029-03-16T08:23:45Z",
|
||||
"dns_names":null,
|
||||
"valid_key":true,
|
||||
"valid_pair":true
|
||||
}
|
||||
|
||||
|
||||
Response:
|
||||
|
||||
200 OK
|
||||
@@ -858,7 +1020,7 @@ Error response (Client not found):
|
||||
### API: Find clients by IP
|
||||
|
||||
This method returns the list of clients (manual and auto-clients) matching the IP list.
|
||||
For auto-clients only `name`, `ids` and `whois_info` fields are set. Other fields are empty.
|
||||
For auto-clients only `name`, `ids`, `whois_info`, `disallowed`, and `disallowed_rule` fields are set. Other fields are empty.
|
||||
|
||||
Request:
|
||||
|
||||
@@ -884,11 +1046,16 @@ Response:
|
||||
key: "value"
|
||||
...
|
||||
}
|
||||
|
||||
"disallowed": false,
|
||||
"disallowed_rule": "..."
|
||||
}
|
||||
}
|
||||
...
|
||||
]
|
||||
|
||||
* `disallowed` - whether the client's IP is blocked or not.
|
||||
* `disallowed_rule` - the rule due to which the client is disallowed. If `disallowed` is `true`, and this string is empty - it means that the client IP is disallowed by the "allowed IP list", i.e. it is not included in allowed.
|
||||
|
||||
## DNS general settings
|
||||
|
||||
@@ -904,11 +1071,12 @@ Response:
|
||||
|
||||
{
|
||||
"upstream_dns": ["tls://...", ...],
|
||||
"upstream_dns_file": "",
|
||||
"bootstrap_dns": ["1.2.3.4", ...],
|
||||
|
||||
"protection_enabled": true | false,
|
||||
"ratelimit": 1234,
|
||||
"blocking_mode": "default" | "nxdomain" | "null_ip" | "custom_ip",
|
||||
"blocking_mode": "default" | "refused" | "nxdomain" | "null_ip" | "custom_ip",
|
||||
"blocking_ipv4": "1.2.3.4",
|
||||
"blocking_ipv6": "1:2:3::4",
|
||||
"edns_cs_enabled": true | false,
|
||||
@@ -929,11 +1097,12 @@ Request:
|
||||
|
||||
{
|
||||
"upstream_dns": ["tls://...", ...],
|
||||
"upstream_dns_file": "",
|
||||
"bootstrap_dns": ["1.2.3.4", ...],
|
||||
|
||||
"protection_enabled": true | false,
|
||||
"ratelimit": 1234,
|
||||
"blocking_mode": "default" | "nxdomain" | "null_ip" | "custom_ip",
|
||||
"blocking_mode": "default" | "refused" | "nxdomain" | "null_ip" | "custom_ip",
|
||||
"blocking_ipv4": "1.2.3.4",
|
||||
"blocking_ipv6": "1:2:3::4",
|
||||
"edns_cs_enabled": true | false,
|
||||
@@ -1016,7 +1185,7 @@ and `value` is either:
|
||||
* IPv4 address: use this IP in A response
|
||||
* IPv6 address: use this IP in AAAA response
|
||||
* canonical name: add CNAME record
|
||||
* "<key>": CNAME exception - pass request to upstream
|
||||
* "`key`": CNAME exception - pass request to upstream
|
||||
* "A": A exception - pass A request to upstream
|
||||
* "AAAA": AAAA exception - pass AAAA request to upstream
|
||||
|
||||
@@ -1337,6 +1506,7 @@ When a new DNS request is received and processed, we store information about thi
|
||||
"Reason":3,
|
||||
"Rule":"...",
|
||||
"FilterID":1,
|
||||
"ServiceName":"..."
|
||||
},
|
||||
"Elapsed":12345,
|
||||
"Upstream":"...",
|
||||
@@ -1357,6 +1527,11 @@ When UI asks for data from query log (see "API: Get query log"), server reads th
|
||||
|
||||
We store data for a limited amount of time - the log file is automatically rotated.
|
||||
|
||||
* On AGH startup read the first line from query logs and store its time value
|
||||
* If there's no log file yet, set the time value of the first log event when the file is created
|
||||
* If this time value is older than our time limit, perform file rotate procedure
|
||||
* While AGH is running, check the previous condition every 24 hours
|
||||
|
||||
|
||||
### API: Get query log
|
||||
|
||||
@@ -1379,7 +1554,8 @@ Strict matching can be enabled by enclosing the value in double quotes: e.g. `"a
|
||||
`response_status`:
|
||||
* all
|
||||
* filtered - all kinds of filtering
|
||||
* blocked - blocked or blocked service
|
||||
* blocked - blocked or blocked services
|
||||
* blocked_services - blocked services
|
||||
* blocked_safebrowsing - blocked by safebrowsing
|
||||
* blocked_parental - blocked by parental control
|
||||
* whitelisted - whitelisted
|
||||
@@ -1411,7 +1587,7 @@ Response:
|
||||
"upstream":"...", // Upstream URL starting with tcp://, tls://, https://, or with an IP address
|
||||
"answer_dnssec": true,
|
||||
"client":"127.0.0.1",
|
||||
"client_proto": "" (plain) | "doh" | "dot",
|
||||
"client_proto": "" (plain) | "doh" | "dot" | "doq",
|
||||
"elapsedMs":"0.098403",
|
||||
"filterId":1,
|
||||
"question":{
|
||||
@@ -1657,16 +1833,22 @@ Response:
|
||||
200 OK
|
||||
|
||||
{
|
||||
"reason":"FilteredBlackList",
|
||||
"filter_id":1,
|
||||
"rule":"||doubleclick.net^",
|
||||
"service_name": "...", // set if reason=FilteredBlockedService
|
||||
|
||||
// if reason=ReasonRewrite:
|
||||
"cname": "...",
|
||||
"ip_addrs": ["1.2.3.4", ...],
|
||||
"reason":"FilteredBlackList",
|
||||
"rules":{
|
||||
"filter_list_id":42,
|
||||
"text":"||doubleclick.net^",
|
||||
},
|
||||
// If we have "reason":"FilteredBlockedService".
|
||||
"service_name": "...",
|
||||
// If we have "reason":"Rewrite".
|
||||
"cname": "...",
|
||||
"ip_addrs": ["1.2.3.4", ...]
|
||||
}
|
||||
|
||||
There are also deprecated properties `filter_id` and `rule` on the top level of
|
||||
the response object. Their usage should be replaced with
|
||||
`rules[*].filter_list_id` and `rules[*].text` correspondingly. See the
|
||||
_OpenAPI_ documentation and the `./openapi/CHANGELOG.md` file.
|
||||
|
||||
## Log-in page
|
||||
|
||||
@@ -1801,3 +1983,48 @@ Check if host name is blocked by SB/PC service:
|
||||
sha256(host.com)[0..1] -> hashes[0],hashes[1],...
|
||||
sha256(sub.host.com)[0..1] -> hashes[2],...
|
||||
...
|
||||
|
||||
## API: Get DNS over HTTPS .mobileconfig
|
||||
|
||||
Request:
|
||||
|
||||
GET /apple/doh.mobileconfig
|
||||
|
||||
Response:
|
||||
|
||||
200 OK
|
||||
|
||||
DOH plist file
|
||||
|
||||
## API: Get DNS over TLS .mobileconfig
|
||||
|
||||
Request:
|
||||
|
||||
GET /apple/dot.mobileconfig
|
||||
|
||||
Response:
|
||||
|
||||
200 OK
|
||||
|
||||
DOT plist file
|
||||
|
||||
## ipset
|
||||
|
||||
AGH can add IP addresses of the specified in configuration domain names to an ipset list.
|
||||
|
||||
Prepare: user creates an ipset list and configures AGH for using it.
|
||||
|
||||
1. User --( ipset create my_ipset hash:ip ) -> OS
|
||||
2. User --( ipset: host.com,host2.com/my_ipset )-> AGH
|
||||
|
||||
Syntax:
|
||||
|
||||
ipset: "DOMAIN[,DOMAIN].../IPSET1_NAME[,IPSET2_NAME]..."
|
||||
|
||||
IPv4 addresses are added to an ipset list with `ipv4` family, IPv6 addresses - to `ipv6` ipset list.
|
||||
|
||||
Run-time: AGH adds IP addresses of a domain name to a corresponding ipset list.
|
||||
|
||||
1. AGH --( resolve host.com )-> upstream
|
||||
2. AGH <-( host.com:[1.1.1.1,2.2.2.2] )-- upstream
|
||||
3. AGH --( ipset.add(my_ipset, [1.1.1.1,2.2.2.2] ))-> OS
|
||||
|
||||
235
CHANGELOG.md
Normal file
235
CHANGELOG.md
Normal file
@@ -0,0 +1,235 @@
|
||||
# AdGuard Home Changelog
|
||||
|
||||
All notable changes to this project will be documented in this file.
|
||||
|
||||
The format is based on
|
||||
[*Keep a Changelog*](https://keepachangelog.com/en/1.0.0/),
|
||||
and this project adheres to
|
||||
[Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||
|
||||
## [Unreleased]
|
||||
|
||||
<!--
|
||||
## [v0.106.0] - 2021-04-26
|
||||
-->
|
||||
|
||||
## [v0.105.2] - 2021-03-10
|
||||
|
||||
### Fixed
|
||||
|
||||
- Incomplete hostnames with trailing zero-bytes handling ([#2582]).
|
||||
- Wrong DNS-over-TLS ALPN configuration ([#2681]).
|
||||
- Inconsistent responses for messages with EDNS0 and AD when DNS caching is
|
||||
enabled ([#2600]).
|
||||
- Incomplete OpenWRT detection ([#2757]).
|
||||
- DHCP lease's `expired` field incorrect time format ([#2692]).
|
||||
- Incomplete DNS upstreams validation ([#2674]).
|
||||
- Wrong parsing of DHCP options of the `ip` type ([#2688]).
|
||||
|
||||
[#2582]: https://github.com/AdguardTeam/AdGuardHome/issues/2582
|
||||
[#2600]: https://github.com/AdguardTeam/AdGuardHome/issues/2600
|
||||
[#2674]: https://github.com/AdguardTeam/AdGuardHome/issues/2674
|
||||
[#2681]: https://github.com/AdguardTeam/AdGuardHome/issues/2681
|
||||
[#2688]: https://github.com/AdguardTeam/AdGuardHome/issues/2688
|
||||
[#2692]: https://github.com/AdguardTeam/AdGuardHome/issues/2692
|
||||
[#2757]: https://github.com/AdguardTeam/AdGuardHome/issues/2757
|
||||
|
||||
### Security
|
||||
|
||||
- Session token doesn't contain user's information anymore ([#2470]).
|
||||
|
||||
[#2470]: https://github.com/AdguardTeam/AdGuardHome/issues/2470
|
||||
|
||||
|
||||
|
||||
## [v0.105.1] - 2021-02-15
|
||||
|
||||
### Changed
|
||||
|
||||
- Increased HTTP API timeouts ([#2671], [#2682]).
|
||||
- "Permission denied" errors when checking if the machine has a static IP no
|
||||
longer prevent the DHCP server from starting ([#2667]).
|
||||
- The server name sent by clients of TLS APIs is not only checked when
|
||||
`strict_sni_check` is enabled ([#2664]).
|
||||
- HTTP API request body size limit for the `POST /control/access/set` and `POST
|
||||
/control/filtering/set_rules` HTTP APIs is increased ([#2666], [#2675]).
|
||||
|
||||
### Fixed
|
||||
|
||||
- Error when enabling the DHCP server when AdGuard Home couldn't determine if
|
||||
the machine has a static IP.
|
||||
- Optical issue on custom rules ([#2641]).
|
||||
- Occasional crashes during startup.
|
||||
- The field `"range_start"` in the `GET /control/dhcp/status` HTTP API response
|
||||
is now correctly named again ([#2678]).
|
||||
- DHCPv6 server's `ra_slaac_only` and `ra_allow_slaac` settings aren't reset to
|
||||
`false` on update any more ([#2653]).
|
||||
- The `Vary` header is now added along with `Access-Control-Allow-Origin` to
|
||||
prevent cache-related and other issues in browsers ([#2658]).
|
||||
- The request body size limit is now set for HTTPS requests as well.
|
||||
- Incorrect version tag in the Docker release ([#2663]).
|
||||
- DNSCrypt queries weren't marked as such in logs ([#2662]).
|
||||
|
||||
[#2641]: https://github.com/AdguardTeam/AdGuardHome/issues/2641
|
||||
[#2653]: https://github.com/AdguardTeam/AdGuardHome/issues/2653
|
||||
[#2658]: https://github.com/AdguardTeam/AdGuardHome/issues/2658
|
||||
[#2662]: https://github.com/AdguardTeam/AdGuardHome/issues/2662
|
||||
[#2663]: https://github.com/AdguardTeam/AdGuardHome/issues/2663
|
||||
[#2664]: https://github.com/AdguardTeam/AdGuardHome/issues/2664
|
||||
[#2666]: https://github.com/AdguardTeam/AdGuardHome/issues/2666
|
||||
[#2667]: https://github.com/AdguardTeam/AdGuardHome/issues/2667
|
||||
[#2671]: https://github.com/AdguardTeam/AdGuardHome/issues/2671
|
||||
[#2675]: https://github.com/AdguardTeam/AdGuardHome/issues/2675
|
||||
[#2678]: https://github.com/AdguardTeam/AdGuardHome/issues/2678
|
||||
[#2682]: https://github.com/AdguardTeam/AdGuardHome/issues/2682
|
||||
|
||||
|
||||
|
||||
## [v0.105.0] - 2021-02-10
|
||||
|
||||
### Added
|
||||
|
||||
- Added more services to the "Blocked services" list ([#2224], [#2401]).
|
||||
- `ipset` subdomain matching, just like `dnsmasq` does ([#2179]).
|
||||
- Client ID support for DNS-over-HTTPS, DNS-over-QUIC, and DNS-over-TLS
|
||||
([#1383]).
|
||||
- `$dnsrewrite` modifier for filters ([#2102]).
|
||||
- The host checking API and the query logs API can now return multiple matched
|
||||
rules ([#2102]).
|
||||
- Detecting of network interface configured to have static IP address via
|
||||
`/etc/network/interfaces` ([#2302]).
|
||||
- DNSCrypt protocol support ([#1361]).
|
||||
- A 5 second wait period until a DHCP server's network interface gets an IP
|
||||
address ([#2304]).
|
||||
- `$dnstype` modifier for filters ([#2337]).
|
||||
- HTTP API request body size limit ([#2305]).
|
||||
|
||||
### Changed
|
||||
|
||||
- `Access-Control-Allow-Origin` is now only set to the same origin as the
|
||||
domain, but with an HTTP scheme as opposed to `*` ([#2484]).
|
||||
- `workDir` now supports symlinks.
|
||||
- Stopped mounting together the directories `/opt/adguardhome/conf` and
|
||||
`/opt/adguardhome/work` in our Docker images ([#2589]).
|
||||
- When `dns.bogus_nxdomain` option is used, the server will now transform
|
||||
responses if there is at least one bogus address instead of all of them
|
||||
([#2394]). The new behavior is the same as in `dnsmasq`.
|
||||
- Post-updating relaunch possibility is now determined OS-dependently ([#2231],
|
||||
[#2391]).
|
||||
- Made the mobileconfig HTTP API more robust and predictable, add parameters and
|
||||
improve error response ([#2358]).
|
||||
- Improved HTTP requests handling and timeouts ([#2343]).
|
||||
- Our snap package now uses the `core20` image as its base ([#2306]).
|
||||
- New build system and various internal improvements ([#2271], [#2276], [#2297],
|
||||
[#2509], [#2552], [#2639], [#2646]).
|
||||
|
||||
### Deprecated
|
||||
|
||||
- Go 1.14 support. v0.106.0 will require at least Go 1.15 to build.
|
||||
- The `darwin/386` port. It will be removed in v0.106.0.
|
||||
- The `"rule"` and `"filter_id"` fields in `GET /filtering/check_host` and
|
||||
`GET /querylog` responses. They will be removed in v0.106.0 ([#2102]).
|
||||
|
||||
### Fixed
|
||||
|
||||
- Autoupdate bug in the Darwin (macOS) version ([#2630]).
|
||||
- Unnecessary conversions from `string` to `net.IP`, and vice versa ([#2508]).
|
||||
- Inability to set DNS cache TTL limits ([#2459]).
|
||||
- Possible freezes on slower machines ([#2225]).
|
||||
- A mitigation against records being shown in the wrong order on the query log
|
||||
page ([#2293]).
|
||||
- A JSON parsing error in query log ([#2345]).
|
||||
- Incorrect detection of the IPv6 address of an interface as well as another
|
||||
infinite loop in the `/dhcp/find_active_dhcp` HTTP API ([#2355]).
|
||||
|
||||
### Removed
|
||||
|
||||
- The undocumented ability to use hostnames as any of `bind_host` values in
|
||||
configuration. Documentation requires them to be valid IP addresses, and now
|
||||
the implementation makes sure that that is the case ([#2508]).
|
||||
- `Dockerfile` ([#2276]). Replaced with the script
|
||||
`scripts/make/build-docker.sh` which uses `scripts/make/Dockerfile`.
|
||||
- Support for pre-v0.99.3 format of query logs ([#2102]).
|
||||
|
||||
[#1361]: https://github.com/AdguardTeam/AdGuardHome/issues/1361
|
||||
[#1383]: https://github.com/AdguardTeam/AdGuardHome/issues/1383
|
||||
[#2102]: https://github.com/AdguardTeam/AdGuardHome/issues/2102
|
||||
[#2179]: https://github.com/AdguardTeam/AdGuardHome/issues/2179
|
||||
[#2224]: https://github.com/AdguardTeam/AdGuardHome/issues/2224
|
||||
[#2225]: https://github.com/AdguardTeam/AdGuardHome/issues/2225
|
||||
[#2231]: https://github.com/AdguardTeam/AdGuardHome/issues/2231
|
||||
[#2271]: https://github.com/AdguardTeam/AdGuardHome/issues/2271
|
||||
[#2276]: https://github.com/AdguardTeam/AdGuardHome/issues/2276
|
||||
[#2293]: https://github.com/AdguardTeam/AdGuardHome/issues/2293
|
||||
[#2297]: https://github.com/AdguardTeam/AdGuardHome/issues/2297
|
||||
[#2302]: https://github.com/AdguardTeam/AdGuardHome/issues/2302
|
||||
[#2304]: https://github.com/AdguardTeam/AdGuardHome/issues/2304
|
||||
[#2305]: https://github.com/AdguardTeam/AdGuardHome/issues/2305
|
||||
[#2306]: https://github.com/AdguardTeam/AdGuardHome/issues/2306
|
||||
[#2337]: https://github.com/AdguardTeam/AdGuardHome/issues/2337
|
||||
[#2343]: https://github.com/AdguardTeam/AdGuardHome/issues/2343
|
||||
[#2345]: https://github.com/AdguardTeam/AdGuardHome/issues/2345
|
||||
[#2355]: https://github.com/AdguardTeam/AdGuardHome/issues/2355
|
||||
[#2358]: https://github.com/AdguardTeam/AdGuardHome/issues/2358
|
||||
[#2391]: https://github.com/AdguardTeam/AdGuardHome/issues/2391
|
||||
[#2394]: https://github.com/AdguardTeam/AdGuardHome/issues/2394
|
||||
[#2401]: https://github.com/AdguardTeam/AdGuardHome/issues/2401
|
||||
[#2459]: https://github.com/AdguardTeam/AdGuardHome/issues/2459
|
||||
[#2484]: https://github.com/AdguardTeam/AdGuardHome/issues/2484
|
||||
[#2508]: https://github.com/AdguardTeam/AdGuardHome/issues/2508
|
||||
[#2509]: https://github.com/AdguardTeam/AdGuardHome/issues/2509
|
||||
[#2552]: https://github.com/AdguardTeam/AdGuardHome/issues/2552
|
||||
[#2589]: https://github.com/AdguardTeam/AdGuardHome/issues/2589
|
||||
[#2630]: https://github.com/AdguardTeam/AdGuardHome/issues/2630
|
||||
[#2639]: https://github.com/AdguardTeam/AdGuardHome/issues/2639
|
||||
[#2646]: https://github.com/AdguardTeam/AdGuardHome/issues/2646
|
||||
|
||||
## [v0.104.3] - 2020-11-19
|
||||
|
||||
### Fixed
|
||||
|
||||
- The accidentally exposed profiler HTTP API ([#2336]).
|
||||
|
||||
[#2336]: https://github.com/AdguardTeam/AdGuardHome/issues/2336
|
||||
|
||||
|
||||
|
||||
## [v0.104.2] - 2020-11-19
|
||||
|
||||
### Added
|
||||
|
||||
- This changelog :-) ([#2294]).
|
||||
- `HACKING.md`, a guide for developers.
|
||||
|
||||
### Changed
|
||||
|
||||
- Improved tests output ([#2273]).
|
||||
|
||||
### Fixed
|
||||
|
||||
- Query logs from file not loading after the ones buffered in memory ([#2325]).
|
||||
- Unnecessary errors in query logs when switching between log files ([#2324]).
|
||||
- `404 Not Found` errors on the DHCP settings page on Windows. The page now
|
||||
correctly shows that DHCP is not currently available on that OS ([#2295]).
|
||||
- Infinite loop in `/dhcp/find_active_dhcp` ([#2301]).
|
||||
|
||||
[#2273]: https://github.com/AdguardTeam/AdGuardHome/issues/2273
|
||||
[#2294]: https://github.com/AdguardTeam/AdGuardHome/issues/2294
|
||||
[#2295]: https://github.com/AdguardTeam/AdGuardHome/issues/2295
|
||||
[#2301]: https://github.com/AdguardTeam/AdGuardHome/issues/2301
|
||||
[#2324]: https://github.com/AdguardTeam/AdGuardHome/issues/2324
|
||||
[#2325]: https://github.com/AdguardTeam/AdGuardHome/issues/2325
|
||||
|
||||
|
||||
|
||||
<!--
|
||||
[Unreleased]: https://github.com/AdguardTeam/AdGuardHome/compare/v0.106.0...HEAD
|
||||
[v0.106.0]: https://github.com/AdguardTeam/AdGuardHome/compare/v0.105.2...v0.106.0
|
||||
-->
|
||||
|
||||
[Unreleased]: https://github.com/AdguardTeam/AdGuardHome/compare/v0.105.2...HEAD
|
||||
[v0.105.2]: https://github.com/AdguardTeam/AdGuardHome/compare/v0.105.1...v0.105.2
|
||||
[v0.105.1]: https://github.com/AdguardTeam/AdGuardHome/compare/v0.105.0...v0.105.1
|
||||
[v0.105.0]: https://github.com/AdguardTeam/AdGuardHome/compare/v0.104.3...v0.105.0
|
||||
[v0.104.3]: https://github.com/AdguardTeam/AdGuardHome/compare/v0.104.2...v0.104.3
|
||||
[v0.104.2]: https://github.com/AdguardTeam/AdGuardHome/compare/v0.104.1...v0.104.2
|
||||
78
Dockerfile
78
Dockerfile
@@ -1,78 +0,0 @@
|
||||
FROM --platform=${BUILDPLATFORM:-linux/amd64} tonistiigi/xx:golang AS xgo
|
||||
FROM --platform=${BUILDPLATFORM:-linux/amd64} golang:1.14-alpine as builder
|
||||
|
||||
ARG BUILD_DATE
|
||||
ARG VCS_REF
|
||||
ARG VERSION=dev
|
||||
ARG CHANNEL=release
|
||||
|
||||
ENV CGO_ENABLED 0
|
||||
ENV GO111MODULE on
|
||||
ENV GOPROXY https://goproxy.io
|
||||
|
||||
COPY --from=xgo / /
|
||||
RUN go env
|
||||
|
||||
RUN apk --update --no-cache add \
|
||||
build-base \
|
||||
gcc \
|
||||
git \
|
||||
npm \
|
||||
&& rm -rf /tmp/* /var/cache/apk/*
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
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 ["-h", "0.0.0.0", "-c", "/opt/adguardhome/conf/AdGuardHome.yaml", "-w", "/opt/adguardhome/work", "--no-check-update"]
|
||||
315
HACKING.md
Normal file
315
HACKING.md
Normal file
@@ -0,0 +1,315 @@
|
||||
# AdGuard Home Developer Guidelines
|
||||
|
||||
As of **February 2021**, this document is partially a work-in-progress, but
|
||||
should still be followed. Some of the rules aren't enforced as thoroughly or
|
||||
remain broken in old code, but this is still the place to find out about what we
|
||||
**want** our code to look like.
|
||||
|
||||
The rules are mostly sorted in the alphabetical order.
|
||||
|
||||
## Contents
|
||||
|
||||
* [Git](#git)
|
||||
* [Go](#go)
|
||||
* [Code And Naming](#code-and-naming)
|
||||
* [Commenting](#commenting)
|
||||
* [Formatting](#formatting)
|
||||
* [Recommended Reading](#recommended-reading)
|
||||
* [Markdown](#markdown)
|
||||
* [Shell Scripting](#shell-scripting)
|
||||
* [Text, Including Comments](#text-including-comments)
|
||||
* [YAML](#yaml)
|
||||
|
||||
<!-- NOTE: Use the IDs that GitHub would generate in order for this to work both
|
||||
on GitHub and most other Markdown renderers. -->
|
||||
|
||||
## <a id="git" href="#git">Git</a>
|
||||
|
||||
* Call your branches either `NNNN-fix-foo` (where `NNNN` is the ID of the
|
||||
GitHub issue you worked on in this branch) or just `fix-foo` if there was no
|
||||
GitHub issue.
|
||||
|
||||
* Follow the commit message header format:
|
||||
|
||||
```none
|
||||
pkg: fix the network error logging issue
|
||||
```
|
||||
|
||||
Where `pkg` is the directory or Go package (without the `internal/` part)
|
||||
where most changes took place. If there are several such packages, or the
|
||||
change is top-level only, write `all`.
|
||||
|
||||
* Keep your commit messages, including headers, to eighty (**80**) columns.
|
||||
|
||||
* Only use lowercase letters in your commit message headers. The rest of the
|
||||
message should follow the plain text conventions below.
|
||||
|
||||
The only exceptions are direct mentions of identifiers from the source code
|
||||
and filenames like `HACKING.md`.
|
||||
|
||||
## <a id="go" href="#go">Go</a>
|
||||
|
||||
> Not Golang, not GO, not GOLANG, not GoLang. It is Go in natural language,
|
||||
> golang for others.
|
||||
|
||||
— [@rakyll](https://twitter.com/rakyll/status/1229850223184269312)
|
||||
|
||||
### <a id="code-and-naming" href="#code-and-naming">Code And Naming</a>
|
||||
|
||||
* Avoid `goto`.
|
||||
|
||||
* Avoid `init` and use explicit initialization functions instead.
|
||||
|
||||
* Avoid `new`, especially with structs.
|
||||
|
||||
* Check against empty strings like this:
|
||||
|
||||
```go
|
||||
if s == "" {
|
||||
// …
|
||||
}
|
||||
```
|
||||
|
||||
* Constructors should validate their arguments and return meaningful errors.
|
||||
As a corollary, avoid lazy initialization.
|
||||
|
||||
* Don't use naked `return`s.
|
||||
|
||||
* Don't use underscores in file and package names, unless they're build tags
|
||||
or for tests. This is to prevent accidental build errors with weird tags.
|
||||
|
||||
* Don't write non-test code with more than four (**4**) levels of indentation.
|
||||
Just like [Linus said], plus an additional level for an occasional error
|
||||
check or struct initialization.
|
||||
|
||||
The exception proving the rule is the table-driven test code, where an
|
||||
additional level of indentation is allowed.
|
||||
|
||||
* Eschew external dependencies, including transitive, unless
|
||||
absolutely necessary.
|
||||
|
||||
* Name benchmarks and tests using the same convention as examples. For
|
||||
example:
|
||||
|
||||
```go
|
||||
func TestFunction(t *testing.T) { /* … */ }
|
||||
func TestFunction_suffix(t *testing.T) { /* … */ }
|
||||
func TestType_Method(t *testing.T) { /* … */ }
|
||||
func TestType_Method_suffix(t *testing.T) { /* … */ }
|
||||
```
|
||||
|
||||
* Name parameters in interface definitions:
|
||||
|
||||
```go
|
||||
type Frobulator interface {
|
||||
Frobulate(f Foo, b Bar) (r Result, err error)
|
||||
}
|
||||
```
|
||||
|
||||
* Name the deferred errors (e.g. when closing something) `cerr`.
|
||||
|
||||
* No shadowing, since it can often lead to subtle bugs, especially with
|
||||
errors.
|
||||
|
||||
* Prefer constants to variables where possible. Reduce global variables. Use
|
||||
[constant errors] instead of `errors.New`.
|
||||
|
||||
* Program code lines should not be longer than one hundred (**100**) columns.
|
||||
For comments, see the text section below.
|
||||
|
||||
* Unused arguments in anonymous functions must be called `_`:
|
||||
|
||||
```go
|
||||
v.onSuccess = func(_ int, msg string) {
|
||||
// …
|
||||
}
|
||||
```
|
||||
|
||||
* Use linters.
|
||||
|
||||
* Use named returns to improve readability of function signatures.
|
||||
|
||||
* Write logs and error messages in lowercase only to make it easier to `grep`
|
||||
logs and error messages without using the `-i` flag.
|
||||
|
||||
### <a id="commenting" href="#commenting">Commenting</a>
|
||||
|
||||
* See also the “[Text, Including Comments]” section below.
|
||||
|
||||
* Document everything, including unexported top-level identifiers, to build
|
||||
a habit of writing documentation.
|
||||
|
||||
* Don't put identifiers into any kind of quotes.
|
||||
|
||||
* Put comments above the documented entity, **not** to the side, to improve
|
||||
readability.
|
||||
|
||||
* When a method implements an interface, start the doc comment with the
|
||||
standard template:
|
||||
|
||||
```go
|
||||
// Foo implements the Fooer interface for *foo.
|
||||
func (f *foo) Foo() {
|
||||
// …
|
||||
}
|
||||
```
|
||||
|
||||
When the implemented interface is unexported:
|
||||
|
||||
```go
|
||||
// Unwrap implements the hidden wrapper interface for *fooError.
|
||||
func (err *fooError) Unwrap() (unwrapped error) {
|
||||
// …
|
||||
}
|
||||
```
|
||||
|
||||
### <a id="formatting" href="#formatting">Formatting</a>
|
||||
|
||||
* Add an empty line before `break`, `continue`, `fallthrough`, and `return`,
|
||||
unless it's the only statement in that block.
|
||||
|
||||
* Use `gofumpt --extra -s`.
|
||||
|
||||
* Write slices of struct like this:
|
||||
|
||||
```go
|
||||
ts := []T{{
|
||||
Field: Value0,
|
||||
// …
|
||||
}, {
|
||||
Field: Value1,
|
||||
// …
|
||||
}, {
|
||||
Field: Value2,
|
||||
// …
|
||||
}}
|
||||
```
|
||||
|
||||
### <a id="recommended-reading" href="#recommended-reading">Recommended Reading</a>
|
||||
|
||||
* <https://github.com/golang/go/wiki/CodeReviewComments>.
|
||||
|
||||
* <https://github.com/golang/go/wiki/TestComments>.
|
||||
|
||||
* <https://go-proverbs.github.io/>
|
||||
|
||||
[constant errors]: https://dave.cheney.net/2016/04/07/constant-errors
|
||||
[Linus said]: https://www.kernel.org/doc/html/v4.17/process/coding-style.html#indentation
|
||||
[Text, Including Comments]: #text-including-comments
|
||||
|
||||
## <a id="markdown" href="#markdown">Markdown</a>
|
||||
|
||||
* **TODO(a.garipov):** Define more Markdown conventions.
|
||||
|
||||
* Prefer triple-backtick preformatted code blocks to indented code blocks.
|
||||
|
||||
* Use asterisks and not underscores for bold and italic.
|
||||
|
||||
* Use either link references or link destinations only. Put all link
|
||||
reference definitions at the end of the second-level block.
|
||||
|
||||
## <a id="shell-scripting" href="#shell-scripting">Shell Scripting</a>
|
||||
|
||||
* Avoid bashisms and GNUisms, prefer POSIX features only.
|
||||
|
||||
* Prefer `'raw strings'` to `"double quoted strings"` whenever possible.
|
||||
|
||||
* Put spaces within `$( cmd )`, `$(( expr ))`, and `{ cmd; }`.
|
||||
|
||||
* Put utility flags in the ASCII order and **don't** group them together. For
|
||||
example, `ls -1 -A -q`.
|
||||
|
||||
* `snake_case`, not `camelCase` for variables. `kebab-case` for filenames.
|
||||
|
||||
* UPPERCASE names for external exported variables, lowercase for local,
|
||||
unexported ones.
|
||||
|
||||
* Use `set -e -f -u` and also `set -x` in verbose mode.
|
||||
|
||||
* Use `readonly` liberally.
|
||||
|
||||
* Use the `"$var"` form instead of the `$var` form, unless word splitting is
|
||||
required.
|
||||
|
||||
* When concatenating, always use the form with curly braces to prevent
|
||||
accidental bad variable names. That is, `"${var}_tmp.txt"` and **not**
|
||||
`"$var_tmp.txt"`. The latter will try to lookup variable `var_tmp`.
|
||||
|
||||
* When concatenating, surround the whole string with quotes. That is, use
|
||||
this:
|
||||
|
||||
```sh
|
||||
dir="${TOP_DIR}/sub"
|
||||
```
|
||||
|
||||
And **not** this:
|
||||
|
||||
```sh
|
||||
# Bad!
|
||||
dir="${TOP_DIR}"/sub
|
||||
```
|
||||
|
||||
## <a id="text-including-comments" href="#text-including-comments">Text, Including Comments</a>
|
||||
|
||||
* End sentences with appropriate punctuation.
|
||||
|
||||
* Headers should be written with all initial letters capitalized, except for
|
||||
references to variable names that start with a lowercase letter.
|
||||
|
||||
* Start sentences with a capital letter, unless the first word is a reference
|
||||
to a variable name that starts with a lowercase letter.
|
||||
|
||||
* Text should wrap at eighty (**80**) columns to be more readable, to use
|
||||
a common standard, and to allow editing or diffing side-by-side without
|
||||
wrapping.
|
||||
|
||||
The only exception are long hyperlinks.
|
||||
|
||||
* Use U.S. English, as it is the most widely used variety of English in the
|
||||
code right now as well as generally.
|
||||
|
||||
* Use double spacing between sentences to make sentence borders more clear.
|
||||
|
||||
* Use the serial comma (a.k.a. Oxford comma) to improve comprehension,
|
||||
decrease ambiguity, and use a common standard.
|
||||
|
||||
* Write todos like this:
|
||||
|
||||
```go
|
||||
// TODO(usr1): Fix the frobulation issue.
|
||||
```
|
||||
|
||||
Or, if several people need to look at the code:
|
||||
|
||||
```go
|
||||
// TODO(usr1, usr2): Fix the frobulation issue.
|
||||
```
|
||||
|
||||
## <a id="yaml" href="#yaml">YAML</a>
|
||||
|
||||
* **TODO(a.garipov):** Define naming conventions for schema names in our
|
||||
OpenAPI YAML file. And just generally OpenAPI conventions.
|
||||
|
||||
* **TODO(a.garipov):** Find a YAML formatter or write our own.
|
||||
|
||||
* All strings, including keys, must be quoted. Reason: the “[NO-rway Law]”.
|
||||
|
||||
* Indent with two (**2**) spaces. YAML documents can get pretty
|
||||
deeply-nested.
|
||||
|
||||
* No extra indentation in multiline arrays:
|
||||
|
||||
```yaml
|
||||
'values':
|
||||
- 'value-1'
|
||||
- 'value-2'
|
||||
- 'value-3'
|
||||
```
|
||||
|
||||
* Prefer single quotes for strings to prevent accidental escaping, unless
|
||||
escaping is required or there are single quotes inside the string (e.g. for
|
||||
GitHub Actions).
|
||||
|
||||
* Use `>` for multiline strings, unless you need to keep the line breaks.
|
||||
|
||||
[NO-rway Law]: https://news.ycombinator.com/item?id=17359376
|
||||
405
Makefile
405
Makefile
@@ -1,340 +1,103 @@
|
||||
# Keep the Makefile POSIX-compliant. We currently allow hyphens in
|
||||
# target names, but that may change in the future.
|
||||
#
|
||||
# Available targets
|
||||
# See https://pubs.opengroup.org/onlinepubs/9699919799/utilities/make.html.
|
||||
.POSIX:
|
||||
|
||||
CHANNEL = development
|
||||
CLIENT_BETA_DIR = client2
|
||||
CLIENT_DIR = client
|
||||
COMMIT = $$(git rev-parse --short HEAD)
|
||||
DIST_DIR = dist
|
||||
GO = go
|
||||
# TODO(a.garipov): Add more default proxies using pipes after update to
|
||||
# Go 1.15.
|
||||
#
|
||||
# * 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).
|
||||
# * release_and_sign -- builds AdGuard Home distros and signs the binary files.
|
||||
# CHANNEL must be specified (edge, release or beta).
|
||||
# * sign -- Repacks all release archive files and signs the binary files inside them.
|
||||
# For signing to work, the public+private key pair for $(GPG_KEY) must be imported:
|
||||
# gpg --import public.txt
|
||||
# gpg --import private.txt
|
||||
# GPG_KEY_PASSPHRASE must contain the GPG key passphrase
|
||||
# * 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
|
||||
# GOPROXY = https://goproxy.io|https://goproxy.cn|direct
|
||||
GOPROXY = https://goproxy.cn,https://goproxy.io,direct
|
||||
GPG_KEY = devteam@adguard.com
|
||||
GPG_KEY_PASSPHRASE = not-a-real-password
|
||||
NPM = npm
|
||||
NPM_FLAGS = --prefix $(CLIENT_DIR)
|
||||
SIGN = 1
|
||||
VERBOSE = 0
|
||||
VERSION = v0.0.0
|
||||
YARN = yarn
|
||||
YARN_FLAGS = --cwd $(CLIENT_BETA_DIR)
|
||||
|
||||
GOPATH := $(shell go env GOPATH)
|
||||
PWD := $(shell pwd)
|
||||
TARGET=AdGuardHome
|
||||
BASE_URL="https://static.adguard.com/adguardhome/$(CHANNEL)"
|
||||
GPG_KEY := devteam@adguard.com
|
||||
GPG_KEY_PASSPHRASE :=
|
||||
GPG_CMD := gpg --detach-sig --default-key $(GPG_KEY) --pinentry-mode loopback --passphrase $(GPG_KEY_PASSPHRASE)
|
||||
ENV = env\
|
||||
COMMIT='$(COMMIT)'\
|
||||
CHANNEL='$(CHANNEL)'\
|
||||
GPG_KEY='$(GPG_KEY)'\
|
||||
GPG_KEY_PASSPHRASE='$(GPG_KEY_PASSPHRASE)'\
|
||||
DIST_DIR='$(DIST_DIR)'\
|
||||
GO='$(GO)'\
|
||||
GOPROXY='$(GOPROXY)'\
|
||||
PATH="$${PWD}/bin:$$($(GO) env GOPATH)/bin:$${PATH}"\
|
||||
SIGN='$(SIGN)'\
|
||||
VERBOSE='$(VERBOSE)'\
|
||||
VERSION='$(VERSION)'\
|
||||
|
||||
# See release target
|
||||
DIST_DIR=dist
|
||||
# Keep the line above blank.
|
||||
|
||||
# Update channel. Can be release, beta or edge. Uses edge by default.
|
||||
CHANNEL ?= edge
|
||||
# Keep this target first, so that a naked make invocation triggers
|
||||
# a full build.
|
||||
build: deps quick-build
|
||||
|
||||
# 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
|
||||
quick-build: js-build go-build
|
||||
|
||||
# Version history URL (see
|
||||
VERSION_HISTORY_URL="https://github.com/AdguardTeam/AdGuardHome/releases"
|
||||
ifeq ($(CHANNEL),edge)
|
||||
VERSION_HISTORY_URL="https://github.com/AdguardTeam/AdGuardHome/commits/master"
|
||||
endif
|
||||
ci: deps test
|
||||
|
||||
# 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
|
||||
deps: js-deps go-deps
|
||||
lint: js-lint go-lint
|
||||
test: js-test go-test
|
||||
|
||||
# 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)
|
||||
# Here and below, keep $(SHELL) in quotes, because on Windows this will
|
||||
# expand to something like "C:/Program Files/Git/usr/bin/sh.exe".
|
||||
build-docker: ; $(ENV) "$(SHELL)" ./scripts/make/build-docker.sh
|
||||
|
||||
# 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
|
||||
build-release: deps js-build
|
||||
$(ENV) "$(SHELL)" ./scripts/make/build-release.sh
|
||||
|
||||
# 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')
|
||||
clean: ; $(ENV) "$(SHELL)" ./scripts/make/clean.sh
|
||||
init: ; git config core.hooksPath ./scripts/hooks
|
||||
|
||||
# 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
|
||||
js-build:
|
||||
$(NPM) $(NPM_FLAGS) run build-prod
|
||||
$(YARN) $(YARN_FLAGS) build
|
||||
js-deps:
|
||||
$(NPM) $(NPM_FLAGS) ci
|
||||
$(YARN) $(YARN_FLAGS) install
|
||||
|
||||
# Validate docker build arguments
|
||||
ifndef DOCKER_IMAGE_NAME
|
||||
$(error DOCKER_IMAGE_NAME value is not set)
|
||||
endif
|
||||
# TODO(a.garipov): Remove the legacy client tasks support once the new
|
||||
# client is done and the old one is removed.
|
||||
js-lint: ; $(NPM) $(NPM_FLAGS) run lint
|
||||
js-test: ; $(NPM) $(NPM_FLAGS) run test
|
||||
js-beta-lint: ; $(YARN) $(YARN_FLAGS) lint
|
||||
js-beta-test: ; # TODO(v.abdulmyanov): Add tests for the new client.
|
||||
|
||||
.PHONY: all build client client-watch docker lint lint-js lint-go test dependencies clean release docker-multi-arch
|
||||
all: build
|
||||
go-build: ; $(ENV) "$(SHELL)" ./scripts/make/go-build.sh
|
||||
go-deps: ; $(ENV) "$(SHELL)" ./scripts/make/go-deps.sh
|
||||
go-lint: ; $(ENV) "$(SHELL)" ./scripts/make/go-lint.sh
|
||||
go-test: ; $(ENV) "$(SHELL)" ./scripts/make/go-test.sh
|
||||
go-tools: ; $(ENV) "$(SHELL)" ./scripts/make/go-tools.sh
|
||||
|
||||
init:
|
||||
git config core.hooksPath .githooks
|
||||
go-check: go-tools go-lint go-test
|
||||
|
||||
build: client_with_deps
|
||||
go mod download
|
||||
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
|
||||
|
||||
client:
|
||||
npm --prefix client run build-prod
|
||||
|
||||
client_with_deps:
|
||||
npm --prefix client ci
|
||||
npm --prefix client run build-prod
|
||||
|
||||
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 JS unit-tests
|
||||
npm run test --prefix client
|
||||
@echo Running Go unit-tests
|
||||
go test -race -v -bench=. -coverprofile=coverage.txt -covermode=atomic ./...
|
||||
|
||||
ci: client_with_deps
|
||||
go mod download
|
||||
$(MAKE) test
|
||||
openapi-lint: ; cd ./openapi/ && $(YARN) test
|
||||
openapi-show: ; cd ./openapi/ && $(YARN) start
|
||||
|
||||
# TODO(a.garipov): Remove the legacy targets once the build
|
||||
# infrastructure stops using them.
|
||||
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
|
||||
|
||||
@ echo "use make deps instead"
|
||||
@ $(MAKE) deps
|
||||
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: client_with_deps
|
||||
go mod download
|
||||
@echo Starting release build: version $(VERSION), channel $(CHANNEL)
|
||||
CHANNEL=$(CHANNEL) $(GORELEASER_COMMAND)
|
||||
$(call write_version_file,$(VERSION))
|
||||
PATH=$(GOPATH)/bin:$(PATH) packr clean
|
||||
|
||||
release_and_sign: client_with_deps
|
||||
$(MAKE) release
|
||||
$(call repack_dist)
|
||||
|
||||
sign:
|
||||
$(call repack_dist)
|
||||
|
||||
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\": \"$(VERSION_HISTORY_URL)\"," >> $(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
|
||||
|
||||
# Windows builds
|
||||
$(call zip_repack_windows,AdGuardHome_windows_amd64.zip)
|
||||
$(call zip_repack_windows,AdGuardHome_windows_386.zip)
|
||||
|
||||
# MacOS builds
|
||||
$(call zip_repack,AdGuardHome_darwin_amd64.zip)
|
||||
$(call zip_repack,AdGuardHome_darwin_386.zip)
|
||||
|
||||
# Linux
|
||||
$(call tar_repack,AdGuardHome_linux_amd64.tar.gz)
|
||||
$(call tar_repack,AdGuardHome_linux_386.tar.gz)
|
||||
|
||||
# Linux, all kinds of ARM
|
||||
$(call tar_repack,AdGuardHome_linux_armv5.tar.gz)
|
||||
$(call tar_repack,AdGuardHome_linux_armv6.tar.gz)
|
||||
$(call tar_repack,AdGuardHome_linux_armv7.tar.gz)
|
||||
$(call tar_repack,AdGuardHome_linux_arm64.tar.gz)
|
||||
|
||||
# Linux, MIPS
|
||||
$(call tar_repack,AdGuardHome_linux_mips_softfloat.tar.gz)
|
||||
$(call tar_repack,AdGuardHome_linux_mipsle_softfloat.tar.gz)
|
||||
$(call tar_repack,AdGuardHome_linux_mips64_softfloat.tar.gz)
|
||||
$(call tar_repack,AdGuardHome_linux_mips64le_softfloat.tar.gz)
|
||||
|
||||
# FreeBSD
|
||||
$(call tar_repack,AdGuardHome_freebsd_386.tar.gz)
|
||||
$(call tar_repack,AdGuardHome_freebsd_amd64.tar.gz)
|
||||
|
||||
# FreeBSD, all kinds of ARM
|
||||
$(call tar_repack,AdGuardHome_freebsd_armv5.tar.gz)
|
||||
$(call tar_repack,AdGuardHome_freebsd_armv6.tar.gz)
|
||||
$(call tar_repack,AdGuardHome_freebsd_armv7.tar.gz)
|
||||
$(call tar_repack,AdGuardHome_freebsd_arm64.tar.gz)
|
||||
endef
|
||||
|
||||
define zip_repack_windows
|
||||
$(eval ARC := $(1))
|
||||
cd $(DIST_DIR) && \
|
||||
unzip $(ARC) && \
|
||||
$(GPG_CMD) AdGuardHome/AdGuardHome.exe && \
|
||||
zip -r $(ARC) AdGuardHome/ && \
|
||||
rm -rf AdGuardHome
|
||||
endef
|
||||
|
||||
define zip_repack
|
||||
$(eval ARC := $(1))
|
||||
cd $(DIST_DIR) && \
|
||||
unzip $(ARC) && \
|
||||
$(GPG_CMD) AdGuardHome/AdGuardHome && \
|
||||
zip -r $(ARC) AdGuardHome/ && \
|
||||
rm -rf AdGuardHome
|
||||
endef
|
||||
|
||||
define tar_repack
|
||||
$(eval ARC := $(1))
|
||||
cd $(DIST_DIR) && \
|
||||
tar xzf $(ARC) && \
|
||||
$(GPG_CMD) AdGuardHome/AdGuardHome && \
|
||||
tar czf $(ARC) AdGuardHome/ && \
|
||||
rm -rf AdGuardHome
|
||||
endef
|
||||
@ echo "use make build-docker instead"
|
||||
@ $(MAKE) build-docker
|
||||
go-install-tools:
|
||||
@ echo "use make go-tools instead"
|
||||
@ $(MAKE) go-tools
|
||||
release:
|
||||
@ echo "use make build-release instead"
|
||||
@ $(MAKE) build-release
|
||||
|
||||
161
README.md
161
README.md
@@ -20,8 +20,11 @@
|
||||
<a href="https://goreportcard.com/report/AdguardTeam/AdGuardHome">
|
||||
<img src="https://goreportcard.com/badge/github.com/AdguardTeam/AdGuardHome" alt="Go Report Card" />
|
||||
</a>
|
||||
<a href="https://golangci.com/r/github.com/AdguardTeam/AdGuardHome">
|
||||
<img src="https://golangci.com/badges/github.com/AdguardTeam/AdGuardHome.svg" alt="GolangCI" />
|
||||
<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>
|
||||
<br />
|
||||
<a href="https://github.com/AdguardTeam/AdGuardHome/releases">
|
||||
@@ -30,12 +33,6 @@
|
||||
<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 />
|
||||
@@ -48,7 +45,7 @@
|
||||
|
||||
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](https://adguard.com/en/adguard-dns/overview.html) servers -- both share a lot of common code.
|
||||
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)
|
||||
@@ -61,25 +58,50 @@ It operates as a DNS server that re-routes tracking domains to a "black hole," t
|
||||
* [Reporting issues](#reporting-issues)
|
||||
* [Help with translations](#translate)
|
||||
* [Other](#help-other)
|
||||
* [Projects that use AdGuardHome](#uses)
|
||||
* [Projects that use AdGuard Home](#uses)
|
||||
* [Acknowledgments](#acknowledgments)
|
||||
* [Privacy](#privacy)
|
||||
|
||||
<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.
|
||||
### Automated install (Linux and Mac)
|
||||
Run the following command in your terminal:
|
||||
```
|
||||
curl -sSL https://raw.githubusercontent.com/AdguardTeam/AdGuardHome/master/scripts/install.sh | sh
|
||||
```
|
||||
|
||||
### Alternative methods
|
||||
|
||||
#### Manual installation
|
||||
|
||||
Please read the **[Getting Started](https://github.com/AdguardTeam/AdGuardHome/wiki/Getting-Started)** article on our Wiki to learn how to install AdGuard Home manually, and how to configure your devices to use it.
|
||||
|
||||
#### Docker
|
||||
|
||||
You can use our [official Docker image](https://hub.docker.com/r/adguard/adguardhome).
|
||||
|
||||
#### Snap Store
|
||||
|
||||
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).
|
||||
|
||||
### Guides
|
||||
|
||||
* [Configuration](https://github.com/AdguardTeam/AdGuardHome/wiki/Configuration)
|
||||
* [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)
|
||||
* [Getting Started](https://github.com/AdguardTeam/AdGuardHome/wiki/Getting-Started)
|
||||
* [FAQ](https://github.com/AdguardTeam/AdGuardHome/wiki/FAQ)
|
||||
* [How to Write Hosts Blocklists](https://github.com/AdguardTeam/AdGuardHome/wiki/Hosts-Blocklists)
|
||||
* [Comparing AdGuard Home to Other Solutions](https://github.com/AdguardTeam/AdGuardHome/wiki/Comparison)
|
||||
* Configuring AdGuard
|
||||
* [Configuration](https://github.com/AdguardTeam/AdGuardHome/wiki/Configuration)
|
||||
* [Configuring AdGuard Home Clients](https://github.com/AdguardTeam/AdGuardHome/wiki/Clients)
|
||||
* [AdGuard Home as a DoH, DoT, or DoQ Server](https://github.com/AdguardTeam/AdGuardHome/wiki/Encryption)
|
||||
* [AdGuard Home as a DNSCrypt Server](https://github.com/AdguardTeam/AdGuardHome/wiki/DNSCrypt)
|
||||
* [AdGuard Home as a DHCP Server](https://github.com/AdguardTeam/AdGuardHome/wiki/DHCP)
|
||||
* Installing AdGuard Home
|
||||
* [Docker](https://github.com/AdguardTeam/AdGuardHome/wiki/Docker)
|
||||
* [How to Install and Run AdGuard Home on a 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)
|
||||
* [Verifying Releases](https://github.com/AdguardTeam/AdGuardHome/wiki/Verify-Releases)
|
||||
|
||||
### API
|
||||
|
||||
@@ -110,20 +132,21 @@ AdGuard Home provides a lot of features out-of-the-box with no need to install a
|
||||
|
||||
> 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 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) | ✅ | ❌ |
|
||||
| Feature | AdGuard 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) | ✅ | ❌ |
|
||||
| Running [without root privileges](https://github.com/AdguardTeam/AdGuardHome/wiki/Getting-Started#running-without-superuser) | ✅ | ❌ |
|
||||
|
||||
<a id="comparison-adblock"></a>
|
||||
### How does AdGuard Home compare to traditional ad blockers
|
||||
@@ -132,7 +155,7 @@ 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).
|
||||
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 traditional ad blockers).
|
||||
|
||||
**Known limitations**
|
||||
|
||||
@@ -156,11 +179,9 @@ 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.16.2 or later.
|
||||
* [npm](https://www.npmjs.com/) v6.14 or later.
|
||||
* [npm](https://www.npmjs.com/) v6.14 or later (temporary requirement, TODO: remove when redesign is finished).
|
||||
* [yarn](https://yarnpkg.com/) v1.22.5 or later.
|
||||
|
||||
Optionally, for Go devs:
|
||||
* [golangci-lint](https://github.com/golangci/golangci-lint)
|
||||
|
||||
### Building
|
||||
|
||||
Open Terminal and execute these commands:
|
||||
@@ -171,33 +192,41 @@ cd AdGuardHome
|
||||
make
|
||||
```
|
||||
|
||||
Please note, that the non-standard `-j` flag is currently not supported, so
|
||||
building with `make -j 4` or setting your `MAKEFLAGS` to include, for example,
|
||||
`-j 4` is likely to break the build. If you do have your `MAKEFLAGS` set to
|
||||
that, and you don't want to change it, you can override it by running
|
||||
`make -j 1`.
|
||||
|
||||
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.
|
||||
**Building for a different platform.** You can build AdGuard for any OS/ARCH just like any other Go project.
|
||||
In order to do this, specify `GOOS` and `GOARCH` env variables before running make.
|
||||
|
||||
For example:
|
||||
```
|
||||
GOOS=linux GOARCH=arm64 make
|
||||
env GOOS='linux' GOARCH='arm64' make
|
||||
```
|
||||
Or:
|
||||
```
|
||||
make GOOS='linux' GOARCH='arm64'
|
||||
```
|
||||
|
||||
#### 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.
|
||||
```
|
||||
make build-release CHANNEL='...' VERSION='...'
|
||||
```
|
||||
|
||||
#### 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).
|
||||
* Run `make build-docker` to build the Docker image locally (the one that we publish to DockerHub).
|
||||
|
||||
Please note, that we're using [Docker Buildx](https://docs.docker.com/buildx/working-with-buildx/) to build our official image.
|
||||
|
||||
@@ -217,7 +246,7 @@ You may need to prepare before using these builds:
|
||||
|
||||
You are welcome to fork this repository, make your changes and submit a pull request — https://github.com/AdguardTeam/AdGuardHome/pulls
|
||||
|
||||
Please note, that we don't expect people to contribute to both UI and golang parts of the program simultaneously. Ideally, the golang part is implemented first, i.e. configuration, API, and the functionality itself. The UI part can be implemented later in a different pull request by a different person.
|
||||
Please note that we don't expect people to contribute to both UI and golang parts of the program simultaneously. Ideally, the golang part is implemented first, i.e. configuration, API, and the functionality itself. The UI part can be implemented later in a different pull request by a different person.
|
||||
|
||||
<a id="test-unstable-versions"></a>
|
||||
### Test unstable versions
|
||||
@@ -231,17 +260,21 @@ 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.
|
||||
3. Standalone builds. Use the automated installation script or look for the available builds below.
|
||||
|
||||
There are three options how you can install an unstable version.
|
||||
Beta:
|
||||
```
|
||||
curl -sSL https://raw.githubusercontent.com/AdguardTeam/AdGuardHome/master/scripts/install.sh | sh -s beta
|
||||
```
|
||||
|
||||
1. You can either install a beta or edge version of AdGuard Home which we update periodically. If you're already using stable version of AdGuard Home, just replace the executable with a new one.
|
||||
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.
|
||||
Edge:
|
||||
```
|
||||
curl -sSL https://raw.githubusercontent.com/AdguardTeam/AdGuardHome/master/scripts/install.sh | sh -s edge
|
||||
```
|
||||
|
||||
* 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 ARM: [32-bit ARMv6](https://static.adguard.com/adguardhome/beta/AdGuardHome_linux_armv6.tar.gz) (recommended for Raspberry 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)
|
||||
@@ -250,7 +283,7 @@ There are three options how you can install an unstable version.
|
||||
|
||||
* 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 ARM: [32-bit ARMv6](https://static.adguard.com/adguardhome/edge/AdGuardHome_linux_armv6.tar.gz) (recommended for Raspberry 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)
|
||||
@@ -276,17 +309,20 @@ Here is a link to AdGuard Home project: https://crowdin.com/project/adguard-appl
|
||||
Here's what you can also do to contribute:
|
||||
|
||||
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).
|
||||
2. Actualize the list of *Blocked services*. It it can be found in [dnsfilter/blocked.go](https://github.com/AdguardTeam/AdGuardHome/blob/master/internal/dnsfilter/blocked.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).
|
||||
|
||||
<a id="uses"></a>
|
||||
## Projects that use AdGuardHome
|
||||
|
||||
* 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)
|
||||
## Projects that use AdGuard Home
|
||||
|
||||
* [AdGuard Home Remote](https://apps.apple.com/app/apple-store/id1543143740) - iOS app by [Joost](https://rocketscience-it.nl/)
|
||||
* [Python library](https://github.com/frenck/python-adguardhome) by [@frenck](https://github.com/frenck)
|
||||
* [Home Assistant add-on](https://github.com/hassio-addons/addon-adguard-home) by [@frenck](https://github.com/frenck)
|
||||
* [OpenWrt LUCI app](https://github.com/kongfl888/luci-app-adguardhome) by [@kongfl888](https://github.com/kongfl888) (originally by [@rufengsuixing](https://github.com/rufengsuixing))
|
||||
* [Prometheus exporter for AdGuard Home](https://github.com/ebrianne/adguard-exporter) by [@ebrianne](https://github.com/ebrianne)
|
||||
* [AdGuard Home on GLInet routers](https://forum.gl-inet.com/t/adguardhome-on-gl-routers/10664) by [Gl-Inet](https://gl-inet.com/)
|
||||
* [Cloudron app](https://git.cloudron.io/cloudron/adguard-home-app) by [@gramakri](https://github.com/gramakri)
|
||||
|
||||
<a id="acknowledgments"></a>
|
||||
## Acknowledgments
|
||||
@@ -307,6 +343,11 @@ This software wouldn't have been possible without:
|
||||
* And many more node.js packages.
|
||||
* [whotracks.me data](https://github.com/cliqz-oss/whotracks.me)
|
||||
|
||||
You might have seen that [CoreDNS](https://coredns.io) was mentioned here before — we've stopped using it in AdGuardHome. While we still use it on our servers for [AdGuard DNS](https://adguard.com/adguard-dns/overview.html) service, it seemed like an overkill for Home as it impeded with Home features that we plan to implement.
|
||||
You might have seen that [CoreDNS](https://coredns.io) was mentioned here before — we've stopped using it in AdGuard Home. While we still use it on our servers for [AdGuard DNS](https://adguard.com/adguard-dns/overview.html) service, it seemed like an overkill for Home as it impeded with Home features that we plan to implement.
|
||||
|
||||
For a full list of all node.js packages in use, please take a look at [client/package.json](https://github.com/AdguardTeam/AdGuardHome/blob/master/client/package.json) file.
|
||||
|
||||
<a id="privacy"></a>
|
||||
## Privacy
|
||||
|
||||
Our main idea is that you are the one, who should be in control of your data. So it is only natural, that AdGuard Home does not collect any usage statistics, and does not use any web services unless you configure it to do so. Full policy with every bit that _could in theory be_ sent by AdGuard Home is available [here](https://adguard.com/en/privacy/home.html).
|
||||
|
||||
83
client/.eslintrc.json
vendored
83
client/.eslintrc.json
vendored
@@ -1,18 +1,15 @@
|
||||
{
|
||||
"parser": "babel-eslint",
|
||||
|
||||
"extends": [
|
||||
"plugin:react/recommended",
|
||||
"airbnb-base"
|
||||
],
|
||||
|
||||
"env": {
|
||||
"jest": true,
|
||||
"node": true,
|
||||
"browser": true,
|
||||
"commonjs": true
|
||||
},
|
||||
|
||||
"settings": {
|
||||
"react": {
|
||||
"pragma": "React",
|
||||
@@ -24,35 +21,65 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
"rules": {
|
||||
"indent": ["error", 4, {
|
||||
"SwitchCase": 1,
|
||||
"VariableDeclarator": 1,
|
||||
"outerIIFEBody": 1,
|
||||
"FunctionDeclaration": {
|
||||
"parameters": 1,
|
||||
"body": 1
|
||||
},
|
||||
"FunctionExpression": {
|
||||
"parameters": 1,
|
||||
"body": 1
|
||||
},
|
||||
"CallExpression": {
|
||||
"arguments": 1
|
||||
},
|
||||
"ArrayExpression": 1,
|
||||
"ObjectExpression": 1,
|
||||
"ImportDeclaration": 1,
|
||||
"flatTernaryExpressions": false,
|
||||
"ignoredNodes": ["JSXElement", "JSXElement > *", "JSXAttribute", "JSXIdentifier", "JSXNamespacedName", "JSXMemberExpression", "JSXSpreadAttribute", "JSXExpressionContainer", "JSXOpeningElement", "JSXClosingElement", "JSXText", "JSXEmptyExpression", "JSXSpreadChild"],
|
||||
"ignoreComments": false
|
||||
}],
|
||||
"indent": [
|
||||
"error",
|
||||
4,
|
||||
{
|
||||
"SwitchCase": 1,
|
||||
"VariableDeclarator": 1,
|
||||
"outerIIFEBody": 1,
|
||||
"FunctionDeclaration": {
|
||||
"parameters": 1,
|
||||
"body": 1
|
||||
},
|
||||
"FunctionExpression": {
|
||||
"parameters": 1,
|
||||
"body": 1
|
||||
},
|
||||
"CallExpression": {
|
||||
"arguments": 1
|
||||
},
|
||||
"ArrayExpression": 1,
|
||||
"ObjectExpression": 1,
|
||||
"ImportDeclaration": 1,
|
||||
"flatTernaryExpressions": false,
|
||||
"ignoredNodes": [
|
||||
"JSXElement",
|
||||
"JSXElement > *",
|
||||
"JSXAttribute",
|
||||
"JSXIdentifier",
|
||||
"JSXNamespacedName",
|
||||
"JSXMemberExpression",
|
||||
"JSXSpreadAttribute",
|
||||
"JSXExpressionContainer",
|
||||
"JSXOpeningElement",
|
||||
"JSXClosingElement",
|
||||
"JSXText",
|
||||
"JSXEmptyExpression",
|
||||
"JSXSpreadChild"
|
||||
],
|
||||
"ignoreComments": false
|
||||
}
|
||||
],
|
||||
"class-methods-use-this": "off",
|
||||
"no-shadow": "off",
|
||||
"camelcase": "off",
|
||||
"no-console": ["warn", { "allow": ["warn", "error"] }],
|
||||
"import/no-extraneous-dependencies": ["error", { "devDependencies": true }],
|
||||
"no-console": [
|
||||
"warn",
|
||||
{
|
||||
"allow": [
|
||||
"warn",
|
||||
"error"
|
||||
]
|
||||
}
|
||||
],
|
||||
"import/no-extraneous-dependencies": [
|
||||
"error",
|
||||
{
|
||||
"devDependencies": true
|
||||
}
|
||||
],
|
||||
"import/prefer-default-export": "off",
|
||||
"no-alert": "off"
|
||||
}
|
||||
|
||||
2
client/constants.js
vendored
2
client/constants.js
vendored
@@ -3,7 +3,7 @@ const BUILD_ENVS = {
|
||||
prod: 'production',
|
||||
};
|
||||
|
||||
const BASE_URL = '/control';
|
||||
const BASE_URL = 'control';
|
||||
|
||||
module.exports = {
|
||||
BUILD_ENVS,
|
||||
|
||||
489
client/package-lock.json
generated
vendored
489
client/package-lock.json
generated
vendored
@@ -1356,17 +1356,6 @@
|
||||
"resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz",
|
||||
"integrity": "sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA=="
|
||||
},
|
||||
"@hot-loader/react-dom": {
|
||||
"version": "16.13.0",
|
||||
"resolved": "https://registry.npmjs.org/@hot-loader/react-dom/-/react-dom-16.13.0.tgz",
|
||||
"integrity": "sha512-lJZrmkucz2MrQJTQtJobx5MICXcfQvKihszqv655p557HPi0hMOWxrNpiHv3DWD8ugNWjtWcVWqRnFvwsHq1mQ==",
|
||||
"requires": {
|
||||
"loose-envify": "^1.1.0",
|
||||
"object-assign": "^4.1.1",
|
||||
"prop-types": "^15.6.2",
|
||||
"scheduler": "^0.19.0"
|
||||
}
|
||||
},
|
||||
"@istanbuljs/load-nyc-config": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz",
|
||||
@@ -2025,72 +2014,168 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"@nivo/axes": {
|
||||
"version": "0.49.1",
|
||||
"resolved": "https://registry.npmjs.org/@nivo/axes/-/axes-0.49.1.tgz",
|
||||
"integrity": "sha512-2ZqpKtnZ9HE30H+r565VCrypKRQzAoMbAg1hsht88dlNQRtghBSxbAS0Y4IUW/wgN/AzvOIBJHvxH7bgaB8Oow==",
|
||||
"@nivo/annotations": {
|
||||
"version": "0.64.0",
|
||||
"resolved": "https://registry.npmjs.org/@nivo/annotations/-/annotations-0.64.0.tgz",
|
||||
"integrity": "sha512-b9VAVuAn2HztOZckU2GcBwptjCobYV5VgX/jwZTSFeZFLtjZza+QinNL2AbQ2cnmeU3nVCw1dTbJMMZ9fTCCNQ==",
|
||||
"requires": {
|
||||
"@nivo/core": "0.49.0",
|
||||
"d3-format": "^1.3.2",
|
||||
"@nivo/colors": "0.64.0",
|
||||
"lodash": "^4.17.11",
|
||||
"react-spring": "^8.0.27"
|
||||
}
|
||||
},
|
||||
"@nivo/axes": {
|
||||
"version": "0.64.0",
|
||||
"resolved": "https://registry.npmjs.org/@nivo/axes/-/axes-0.64.0.tgz",
|
||||
"integrity": "sha512-Pm+Y3C67OuBb3JqHpyFKWAoPAnNojb1s5/LFQYVYN1QpKyjeqilGAoLCjHK6ckgfzreiGf7NG+oBgpH8Ncz2fQ==",
|
||||
"requires": {
|
||||
"@nivo/scales": "0.64.0",
|
||||
"d3-format": "^1.4.4",
|
||||
"d3-time": "^1.0.11",
|
||||
"d3-time-format": "^2.1.3",
|
||||
"lodash": "^4.17.4",
|
||||
"react-motion": "^0.5.2",
|
||||
"recompose": "^0.26.0"
|
||||
"react-spring": "^8.0.27"
|
||||
},
|
||||
"dependencies": {
|
||||
"d3-format": {
|
||||
"version": "1.4.5",
|
||||
"resolved": "https://registry.npmjs.org/d3-format/-/d3-format-1.4.5.tgz",
|
||||
"integrity": "sha512-J0piedu6Z8iB6TbIGfZgDzfXxUFN3qQRMofy2oPdXzQibYGqPB/9iMcxr/TGalU+2RsyDO+U4f33id8tbnSRMQ=="
|
||||
},
|
||||
"d3-time": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/d3-time/-/d3-time-1.1.0.tgz",
|
||||
"integrity": "sha512-Xh0isrZ5rPYYdqhAVk8VLnMEidhz5aP7htAADH6MfzgmmicPkTo8LhkLxci61/lCB7n7UmE3bN0leRt+qvkLxA=="
|
||||
},
|
||||
"d3-time-format": {
|
||||
"version": "2.3.0",
|
||||
"resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-2.3.0.tgz",
|
||||
"integrity": "sha512-guv6b2H37s2Uq/GefleCDtbe0XZAuy7Wa49VGkPVPMfLL9qObgBST3lEHJBMUp8S7NdLQAGIvr2KXk8Hc98iKQ==",
|
||||
"requires": {
|
||||
"d3-time": "1"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"@nivo/colors": {
|
||||
"version": "0.64.0",
|
||||
"resolved": "https://registry.npmjs.org/@nivo/colors/-/colors-0.64.0.tgz",
|
||||
"integrity": "sha512-3CKIkSjKgwSgBsiJoTlZpFUUpaGTl60pF6rFsIiFT30os9jMxP/J4ikQGQ/vMLPTXskZYoxByaMHGKJy5wypqg==",
|
||||
"requires": {
|
||||
"d3-color": "^1.2.3",
|
||||
"d3-scale": "^3.0.0",
|
||||
"d3-scale-chromatic": "^1.3.3",
|
||||
"lodash.get": "^4.4.2",
|
||||
"lodash.isplainobject": "^4.0.6",
|
||||
"react-motion": "^0.5.2"
|
||||
}
|
||||
},
|
||||
"@nivo/core": {
|
||||
"version": "0.49.0",
|
||||
"resolved": "https://registry.npmjs.org/@nivo/core/-/core-0.49.0.tgz",
|
||||
"integrity": "sha512-TCPMUO2aJ7fI+ZB6t3d3EBQtNxJnTzaxLJsrVyn/3AQIjUwccAeo2aIy81wLBGWGtlGNUDNdAbnFzXiJosH0yg==",
|
||||
"version": "0.64.0",
|
||||
"resolved": "https://registry.npmjs.org/@nivo/core/-/core-0.64.0.tgz",
|
||||
"integrity": "sha512-tupETbvxgv4B9y3pcXy/lErMwY2aZht+FKSyah1dPFd88LnMD/DOL+to6ociBHmpLQNUMA7wid6R7BlXRY/bmg==",
|
||||
"requires": {
|
||||
"d3-color": "^1.0.3",
|
||||
"d3-format": "^1.3.2",
|
||||
"d3-color": "^1.2.3",
|
||||
"d3-format": "^1.4.4",
|
||||
"d3-hierarchy": "^1.1.8",
|
||||
"d3-interpolate": "^1.3.2",
|
||||
"d3-scale": "^2.1.2",
|
||||
"d3-interpolate": "^2.0.1",
|
||||
"d3-scale": "^3.0.0",
|
||||
"d3-scale-chromatic": "^1.3.3",
|
||||
"d3-shape": "^1.2.2",
|
||||
"d3-shape": "^1.3.5",
|
||||
"d3-time-format": "^2.1.3",
|
||||
"lodash": "^4.17.4",
|
||||
"react-measure": "^2.0.2",
|
||||
"react-motion": "^0.5.2",
|
||||
"recompose": "^0.26.0"
|
||||
"lodash": "^4.17.11",
|
||||
"react-spring": "^8.0.27",
|
||||
"recompose": "^0.30.0",
|
||||
"resize-observer-polyfill": "^1.5.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"d3-format": {
|
||||
"version": "1.4.5",
|
||||
"resolved": "https://registry.npmjs.org/d3-format/-/d3-format-1.4.5.tgz",
|
||||
"integrity": "sha512-J0piedu6Z8iB6TbIGfZgDzfXxUFN3qQRMofy2oPdXzQibYGqPB/9iMcxr/TGalU+2RsyDO+U4f33id8tbnSRMQ=="
|
||||
},
|
||||
"d3-time": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/d3-time/-/d3-time-1.1.0.tgz",
|
||||
"integrity": "sha512-Xh0isrZ5rPYYdqhAVk8VLnMEidhz5aP7htAADH6MfzgmmicPkTo8LhkLxci61/lCB7n7UmE3bN0leRt+qvkLxA=="
|
||||
},
|
||||
"d3-time-format": {
|
||||
"version": "2.3.0",
|
||||
"resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-2.3.0.tgz",
|
||||
"integrity": "sha512-guv6b2H37s2Uq/GefleCDtbe0XZAuy7Wa49VGkPVPMfLL9qObgBST3lEHJBMUp8S7NdLQAGIvr2KXk8Hc98iKQ==",
|
||||
"requires": {
|
||||
"d3-time": "1"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"@nivo/legends": {
|
||||
"version": "0.49.0",
|
||||
"resolved": "https://registry.npmjs.org/@nivo/legends/-/legends-0.49.0.tgz",
|
||||
"integrity": "sha512-8KbUFYozqwD+/rj4in0mnF9b9CuyNFjVgXqm2KW3ODVlWIgYgjTVlEhlg9VZIArFPlIyyAjEYC88YSRcALHugg==",
|
||||
"version": "0.64.0",
|
||||
"resolved": "https://registry.npmjs.org/@nivo/legends/-/legends-0.64.0.tgz",
|
||||
"integrity": "sha512-L7Mp/of/jY4qE7ef6PXJ8/e3aASBTfsf5BTOh3imSXZT6I4hXa5ppmGAgZ0gOSpcPXuMEjBc0aSIEJoeoytQ/g==",
|
||||
"requires": {
|
||||
"lodash": "^4.17.4",
|
||||
"recompose": "^0.26.0"
|
||||
"@nivo/core": "0.64.0",
|
||||
"lodash": "^4.17.11",
|
||||
"recompose": "^0.30.0"
|
||||
}
|
||||
},
|
||||
"@nivo/line": {
|
||||
"version": "0.49.1",
|
||||
"resolved": "https://registry.npmjs.org/@nivo/line/-/line-0.49.1.tgz",
|
||||
"integrity": "sha512-wKkOmpnwK2psmZbJReDq+Eh/WV9r1JA8V4Vl4eIRuf971CW0KUT9nCAoc/FcKio0qsiq5wyFt3J5LuAhfzlV/w==",
|
||||
"version": "0.64.0",
|
||||
"resolved": "https://registry.npmjs.org/@nivo/line/-/line-0.64.0.tgz",
|
||||
"integrity": "sha512-WkQU28ZL9Mxq42AdmybWe+2qFh/TiUXu+7e6nj41e/8DO95Guxg1XQ+i5zQKuw/UZlqXZs6WOsMW8EMNE4GzXw==",
|
||||
"requires": {
|
||||
"@nivo/axes": "0.49.1",
|
||||
"@nivo/core": "0.49.0",
|
||||
"@nivo/legends": "0.49.0",
|
||||
"@nivo/scales": "0.49.0",
|
||||
"d3-format": "^1.3.2",
|
||||
"d3-scale": "^2.1.2",
|
||||
"d3-shape": "^1.2.2",
|
||||
"lodash": "^4.17.4",
|
||||
"react-motion": "^0.5.2",
|
||||
"recompose": "^0.26.0"
|
||||
"@nivo/annotations": "0.64.0",
|
||||
"@nivo/axes": "0.64.0",
|
||||
"@nivo/colors": "0.64.0",
|
||||
"@nivo/legends": "0.64.0",
|
||||
"@nivo/scales": "0.64.0",
|
||||
"@nivo/tooltip": "0.64.0",
|
||||
"@nivo/voronoi": "0.64.0",
|
||||
"d3-shape": "^1.3.5",
|
||||
"react-spring": "^8.0.27"
|
||||
}
|
||||
},
|
||||
"@nivo/scales": {
|
||||
"version": "0.49.0",
|
||||
"resolved": "https://registry.npmjs.org/@nivo/scales/-/scales-0.49.0.tgz",
|
||||
"integrity": "sha512-+5Leu4zX6mDSAunf4ZJHeqVlT+ZsqiKXLB6hT/u7r3GjxZP9A+n3rHePhIzikBiBRMlLjyiBlylLzhKBAYbGWQ==",
|
||||
"version": "0.64.0",
|
||||
"resolved": "https://registry.npmjs.org/@nivo/scales/-/scales-0.64.0.tgz",
|
||||
"integrity": "sha512-Jbr1rlfe/gLCippndPaCM7doJzzx1K9oXPxS4JiyvrIUkQoMWiozymZQdEp8kgigI6uwWu5xvPwCOFXalCIhKg==",
|
||||
"requires": {
|
||||
"d3-scale": "^2.1.2",
|
||||
"d3-scale": "^3.0.0",
|
||||
"d3-time-format": "^2.1.3",
|
||||
"lodash": "^4.17.4"
|
||||
"lodash": "^4.17.11"
|
||||
},
|
||||
"dependencies": {
|
||||
"d3-time": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/d3-time/-/d3-time-1.1.0.tgz",
|
||||
"integrity": "sha512-Xh0isrZ5rPYYdqhAVk8VLnMEidhz5aP7htAADH6MfzgmmicPkTo8LhkLxci61/lCB7n7UmE3bN0leRt+qvkLxA=="
|
||||
},
|
||||
"d3-time-format": {
|
||||
"version": "2.3.0",
|
||||
"resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-2.3.0.tgz",
|
||||
"integrity": "sha512-guv6b2H37s2Uq/GefleCDtbe0XZAuy7Wa49VGkPVPMfLL9qObgBST3lEHJBMUp8S7NdLQAGIvr2KXk8Hc98iKQ==",
|
||||
"requires": {
|
||||
"d3-time": "1"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"@nivo/tooltip": {
|
||||
"version": "0.64.0",
|
||||
"resolved": "https://registry.npmjs.org/@nivo/tooltip/-/tooltip-0.64.0.tgz",
|
||||
"integrity": "sha512-iGsuCi42uw/8F7OVvPyWdQgxJXVOPTEdtl2WK2FlSJIH7bfnEsZ+R/lTdElY2JAvGHuNW6hQwpNUZdC/2rOatg==",
|
||||
"requires": {
|
||||
"react-spring": "^8.0.27"
|
||||
}
|
||||
},
|
||||
"@nivo/voronoi": {
|
||||
"version": "0.64.0",
|
||||
"resolved": "https://registry.npmjs.org/@nivo/voronoi/-/voronoi-0.64.0.tgz",
|
||||
"integrity": "sha512-YdNRzD2rFc1NcAZe9D8gxos+IT2CRPOV/7fUfBCG9SoNw1TtSwSKtEs4xsxmUFmLT1FadWcyKeKuhgJUQnof/A==",
|
||||
"requires": {
|
||||
"@nivo/core": "0.64.0",
|
||||
"d3-delaunay": "^5.1.1",
|
||||
"d3-scale": "^3.0.0",
|
||||
"recompose": "^0.30.0"
|
||||
}
|
||||
},
|
||||
"@nodelib/fs.scandir": {
|
||||
@@ -2981,12 +3066,6 @@
|
||||
"pkg-up": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"caniuse-lite": {
|
||||
"version": "1.0.30001062",
|
||||
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001062.tgz",
|
||||
"integrity": "sha512-ei9ZqeOnN7edDrb24QfJ0OZicpEbsWxv7WusOiQGz/f2SfvBgHHbOEwBJ8HKGVSyx8Z6ndPjxzR6m0NQq+0bfw==",
|
||||
"dev": true
|
||||
},
|
||||
"postcss": {
|
||||
"version": "7.0.30",
|
||||
"resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.30.tgz",
|
||||
@@ -3843,9 +3922,9 @@
|
||||
}
|
||||
},
|
||||
"caniuse-lite": {
|
||||
"version": "1.0.30001059",
|
||||
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001059.tgz",
|
||||
"integrity": "sha512-oOrc+jPJWooKIA0IrNZ5sYlsXc7NP7KLhNWrSGEJhnfSzDvDJ0zd3i6HXsslExY9bbu+x0FQ5C61LcqmPt7bOQ==",
|
||||
"version": "1.0.30001165",
|
||||
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001165.tgz",
|
||||
"integrity": "sha512-8cEsSMwXfx7lWSUMA2s08z9dIgsnR5NAqjXP23stdsU3AUWkCr/rr4s4OFtHXn5XXr6+7kam3QFVoYyXNPdJPA==",
|
||||
"dev": true
|
||||
},
|
||||
"capture-exit": {
|
||||
@@ -4692,24 +4771,27 @@
|
||||
"dev": true
|
||||
},
|
||||
"d3-array": {
|
||||
"version": "1.2.4",
|
||||
"resolved": "https://registry.npmjs.org/d3-array/-/d3-array-1.2.4.tgz",
|
||||
"integrity": "sha512-KHW6M86R+FUPYGb3R5XiYjXPq7VzwxZ22buHhAEVG5ztoEcZZMLov530mmccaqA1GghZArjQV46fuc8kUqhhHw=="
|
||||
},
|
||||
"d3-collection": {
|
||||
"version": "1.0.7",
|
||||
"resolved": "https://registry.npmjs.org/d3-collection/-/d3-collection-1.0.7.tgz",
|
||||
"integrity": "sha512-ii0/r5f4sjKNTfh84Di+DpztYwqKhEyUlKoPrzUFfeSkWxjW49xU2QzO9qrPrNkpdI0XJkfzvmTu8V2Zylln6A=="
|
||||
"version": "2.8.0",
|
||||
"resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.8.0.tgz",
|
||||
"integrity": "sha512-6V272gsOeg7+9pTW1jSYOR1QE37g95I3my1hBmY+vOUNHRrk9yt4OTz/gK7PMkVAVDrYYq4mq3grTiZ8iJdNIw=="
|
||||
},
|
||||
"d3-color": {
|
||||
"version": "1.4.1",
|
||||
"resolved": "https://registry.npmjs.org/d3-color/-/d3-color-1.4.1.tgz",
|
||||
"integrity": "sha512-p2sTHSLCJI2QKunbGb7ocOh7DgTAn8IrLx21QRc/BSnodXM4sv6aLQlnfpvehFMLZEfBc6g9pH9SWQccFYfJ9Q=="
|
||||
},
|
||||
"d3-delaunay": {
|
||||
"version": "5.3.0",
|
||||
"resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-5.3.0.tgz",
|
||||
"integrity": "sha512-amALSrOllWVLaHTnDLHwMIiz0d1bBu9gZXd1FiLfXf8sHcX9jrcj81TVZOqD4UX7MgBZZ07c8GxzEgBpJqc74w==",
|
||||
"requires": {
|
||||
"delaunator": "4"
|
||||
}
|
||||
},
|
||||
"d3-format": {
|
||||
"version": "1.4.4",
|
||||
"resolved": "https://registry.npmjs.org/d3-format/-/d3-format-1.4.4.tgz",
|
||||
"integrity": "sha512-TWks25e7t8/cqctxCmxpUuzZN11QxIA7YrMbram94zMQ0PXjE4LVIMe/f6a4+xxL8HQ3OsAFULOINQi1pE62Aw=="
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/d3-format/-/d3-format-2.0.0.tgz",
|
||||
"integrity": "sha512-Ab3S6XuE/Q+flY96HXT0jOXcM4EAClYFnRGY5zsjRGNy6qCYrQsMffs7cV5Q9xejb35zxW5hf/guKw34kvIKsA=="
|
||||
},
|
||||
"d3-hierarchy": {
|
||||
"version": "1.1.9",
|
||||
@@ -4717,11 +4799,11 @@
|
||||
"integrity": "sha512-j8tPxlqh1srJHAtxfvOUwKNYJkQuBFdM1+JAUfq6xqH5eAqf93L7oG1NVqDa4CpFZNvnNKtCYEUC8KY9yEn9lQ=="
|
||||
},
|
||||
"d3-interpolate": {
|
||||
"version": "1.4.0",
|
||||
"resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-1.4.0.tgz",
|
||||
"integrity": "sha512-V9znK0zc3jOPV4VD2zZn0sDhZU3WAE2bmlxdIwwQPPzPjvyLkd8B3JUVdS1IDUFDkWZ72c9qnv1GK2ZagTZ8EA==",
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-2.0.1.tgz",
|
||||
"integrity": "sha512-c5UhwwTs/yybcmTpAVqwSFl6vrQ8JZJoT5F7xNFK9pymv5C0Ymcc9/LIJHtYIggg/yS9YHw8i8O8tgb9pupjeQ==",
|
||||
"requires": {
|
||||
"d3-color": "1"
|
||||
"d3-color": "1 - 2"
|
||||
}
|
||||
},
|
||||
"d3-path": {
|
||||
@@ -4730,16 +4812,15 @@
|
||||
"integrity": "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg=="
|
||||
},
|
||||
"d3-scale": {
|
||||
"version": "2.2.2",
|
||||
"resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-2.2.2.tgz",
|
||||
"integrity": "sha512-LbeEvGgIb8UMcAa0EATLNX0lelKWGYDQiPdHj+gLblGVhGLyNbaCn3EvrJf0A3Y/uOOU5aD6MTh5ZFCdEwGiCw==",
|
||||
"version": "3.2.3",
|
||||
"resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-3.2.3.tgz",
|
||||
"integrity": "sha512-8E37oWEmEzj57bHcnjPVOBS3n4jqakOeuv1EDdQSiSrYnMCBdMd3nc4HtKk7uia8DUHcY/CGuJ42xxgtEYrX0g==",
|
||||
"requires": {
|
||||
"d3-array": "^1.2.0",
|
||||
"d3-collection": "1",
|
||||
"d3-format": "1",
|
||||
"d3-interpolate": "1",
|
||||
"d3-time": "1",
|
||||
"d3-time-format": "2"
|
||||
"d3-array": "^2.3.0",
|
||||
"d3-format": "1 - 2",
|
||||
"d3-interpolate": "1.2.0 - 2",
|
||||
"d3-time": "1 - 2",
|
||||
"d3-time-format": "2 - 3"
|
||||
}
|
||||
},
|
||||
"d3-scale-chromatic": {
|
||||
@@ -4749,6 +4830,16 @@
|
||||
"requires": {
|
||||
"d3-color": "1",
|
||||
"d3-interpolate": "1"
|
||||
},
|
||||
"dependencies": {
|
||||
"d3-interpolate": {
|
||||
"version": "1.4.0",
|
||||
"resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-1.4.0.tgz",
|
||||
"integrity": "sha512-V9znK0zc3jOPV4VD2zZn0sDhZU3WAE2bmlxdIwwQPPzPjvyLkd8B3JUVdS1IDUFDkWZ72c9qnv1GK2ZagTZ8EA==",
|
||||
"requires": {
|
||||
"d3-color": "1"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"d3-shape": {
|
||||
@@ -4760,16 +4851,16 @@
|
||||
}
|
||||
},
|
||||
"d3-time": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/d3-time/-/d3-time-1.1.0.tgz",
|
||||
"integrity": "sha512-Xh0isrZ5rPYYdqhAVk8VLnMEidhz5aP7htAADH6MfzgmmicPkTo8LhkLxci61/lCB7n7UmE3bN0leRt+qvkLxA=="
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/d3-time/-/d3-time-2.0.0.tgz",
|
||||
"integrity": "sha512-2mvhstTFcMvwStWd9Tj3e6CEqtOivtD8AUiHT8ido/xmzrI9ijrUUihZ6nHuf/vsScRBonagOdj0Vv+SEL5G3Q=="
|
||||
},
|
||||
"d3-time-format": {
|
||||
"version": "2.2.3",
|
||||
"resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-2.2.3.tgz",
|
||||
"integrity": "sha512-RAHNnD8+XvC4Zc4d2A56Uw0yJoM7bsvOlJR33bclxq399Rak/b9bhvu/InjxdWhPtkgU53JJcleJTGkNRnN6IA==",
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-3.0.0.tgz",
|
||||
"integrity": "sha512-UXJh6EKsHBTjopVqZBhFysQcoXSv/5yLONZvkQ5Kk3qbwiUYkdX17Xa1PT6U1ZWXGGfB1ey5L8dKMlFq2DO0Ag==",
|
||||
"requires": {
|
||||
"d3-time": "1"
|
||||
"d3-time": "1 - 2"
|
||||
}
|
||||
},
|
||||
"damerau-levenshtein": {
|
||||
@@ -4974,6 +5065,11 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"delaunator": {
|
||||
"version": "4.0.1",
|
||||
"resolved": "https://registry.npmjs.org/delaunator/-/delaunator-4.0.1.tgz",
|
||||
"integrity": "sha512-WNPWi1IRKZfCt/qIDMfERkDp93+iZEmOxN2yy4Jg+Xhv8SLk2UTqqbe1sfiipn0and9QrE914/ihdx82Y/Giag=="
|
||||
},
|
||||
"delayed-stream": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
|
||||
@@ -5264,11 +5360,21 @@
|
||||
"dev": true
|
||||
},
|
||||
"encoding": {
|
||||
"version": "0.1.12",
|
||||
"resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz",
|
||||
"integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=",
|
||||
"version": "0.1.13",
|
||||
"resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz",
|
||||
"integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==",
|
||||
"requires": {
|
||||
"iconv-lite": "~0.4.13"
|
||||
"iconv-lite": "^0.6.2"
|
||||
},
|
||||
"dependencies": {
|
||||
"iconv-lite": {
|
||||
"version": "0.6.2",
|
||||
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.2.tgz",
|
||||
"integrity": "sha512-2y91h5OpQlolefMPmUlivelittSWy0rP+oYVpn6A7GwVHNE8AWzoYOBNmlwks3LobaJxgHCYZAnyNo2GgpNRNQ==",
|
||||
"requires": {
|
||||
"safer-buffer": ">= 2.1.2 < 3.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"end-of-stream": {
|
||||
@@ -6777,11 +6883,6 @@
|
||||
"integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
|
||||
"dev": true
|
||||
},
|
||||
"get-node-dimensions": {
|
||||
"version": "1.2.1",
|
||||
"resolved": "https://registry.npmjs.org/get-node-dimensions/-/get-node-dimensions-1.2.1.tgz",
|
||||
"integrity": "sha512-2MSPMu7S1iOTL+BOa6K1S62hB2zUAYNF/lV0gSVlOaacd087lc6nR1H1r0e3B1CerTo+RceOmi1iJW+vp21xcQ=="
|
||||
},
|
||||
"get-package-type": {
|
||||
"version": "0.1.0",
|
||||
"resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz",
|
||||
@@ -7412,11 +7513,21 @@
|
||||
"dev": true
|
||||
},
|
||||
"i18next": {
|
||||
"version": "19.4.4",
|
||||
"resolved": "https://registry.npmjs.org/i18next/-/i18next-19.4.4.tgz",
|
||||
"integrity": "sha512-ofaHtdsDdX3A5nYur1HWblB7J4hIcjr2ACdnwTAJgc8hTfPbyzZfGX0hVkKpI3vzDIgO6Uzc4v1ffW2W6gG6zw==",
|
||||
"version": "19.6.2",
|
||||
"resolved": "https://registry.npmjs.org/i18next/-/i18next-19.6.2.tgz",
|
||||
"integrity": "sha512-Zyd/Z32FY+sD+Eg6sLj5DeDSlrIN3WZ4onuOBRGcjDx/rvodsyUZ9TJ2Y+3aD9Vu8MPbiMU2WesIER/rs1ioyw==",
|
||||
"requires": {
|
||||
"@babel/runtime": "^7.3.1"
|
||||
"@babel/runtime": "^7.10.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"@babel/runtime": {
|
||||
"version": "7.10.5",
|
||||
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.10.5.tgz",
|
||||
"integrity": "sha512-otddXKhdNn7d0ptoFRHtMLa8LqDxLYwTjB4nYgM1yy5N6gU/MUf8zqyyLltCH3yAVitBzmwK4us+DD0l/MauAg==",
|
||||
"requires": {
|
||||
"regenerator-runtime": "^0.13.4"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"i18next-browser-languagedetector": {
|
||||
@@ -7431,6 +7542,7 @@
|
||||
"version": "0.4.24",
|
||||
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
|
||||
"integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"safer-buffer": ">= 2.1.2 < 3"
|
||||
}
|
||||
@@ -10195,6 +10307,16 @@
|
||||
"resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.15.tgz",
|
||||
"integrity": "sha512-rlrc3yU3+JNOpZ9zj5pQtxnx2THmvRykwL4Xlxoa8I9lHBlVbbyPhgyPMioxVZ4NqyxaVVtaJnzsyOidQIhyyQ=="
|
||||
},
|
||||
"lodash.get": {
|
||||
"version": "4.4.2",
|
||||
"resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz",
|
||||
"integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk="
|
||||
},
|
||||
"lodash.isplainobject": {
|
||||
"version": "4.0.6",
|
||||
"resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
|
||||
"integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs="
|
||||
},
|
||||
"lodash.sortby": {
|
||||
"version": "4.7.0",
|
||||
"resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz",
|
||||
@@ -10774,6 +10896,24 @@
|
||||
"yallist": "^4.0.0"
|
||||
}
|
||||
},
|
||||
"mississippi": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz",
|
||||
"integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"concat-stream": "^1.5.0",
|
||||
"duplexify": "^3.4.2",
|
||||
"end-of-stream": "^1.1.0",
|
||||
"flush-write-stream": "^1.0.0",
|
||||
"from2": "^2.1.0",
|
||||
"parallel-transform": "^1.1.0",
|
||||
"pump": "^3.0.0",
|
||||
"pumpify": "^1.3.3",
|
||||
"stream-each": "^1.1.0",
|
||||
"through2": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"mixin-deep": {
|
||||
"version": "1.3.2",
|
||||
"resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz",
|
||||
@@ -12159,9 +12299,9 @@
|
||||
}
|
||||
},
|
||||
"pump": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz",
|
||||
"integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==",
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
|
||||
"integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"end-of-stream": "^1.1.0",
|
||||
@@ -12177,6 +12317,18 @@
|
||||
"duplexify": "^3.6.0",
|
||||
"inherits": "^2.0.3",
|
||||
"pump": "^2.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"pump": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz",
|
||||
"integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"end-of-stream": "^1.1.0",
|
||||
"once": "^1.3.1"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"punycode": {
|
||||
@@ -12348,9 +12500,9 @@
|
||||
}
|
||||
},
|
||||
"react-i18next": {
|
||||
"version": "11.4.0",
|
||||
"resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-11.4.0.tgz",
|
||||
"integrity": "sha512-lyOZSSQkif4H9HnHN3iEKVkryLI+WkdZSEw3VAZzinZLopfYRMHVY5YxCopdkXPLEHs6S5GjKYPh3+j0j336Fg==",
|
||||
"version": "11.7.2",
|
||||
"resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-11.7.2.tgz",
|
||||
"integrity": "sha512-Djj3K3hh5Tecla2CI9rLO3TZBYGMFrGilm0JY4cLofAQONCi5TK6nVmUPKoB59n1ZffgjfgJt6zlbE9aGF6Q0Q==",
|
||||
"requires": {
|
||||
"@babel/runtime": "^7.3.1",
|
||||
"html-parse-stringify2": "2.0.1"
|
||||
@@ -12374,17 +12526,6 @@
|
||||
"resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz",
|
||||
"integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA=="
|
||||
},
|
||||
"react-measure": {
|
||||
"version": "2.3.0",
|
||||
"resolved": "https://registry.npmjs.org/react-measure/-/react-measure-2.3.0.tgz",
|
||||
"integrity": "sha512-dwAvmiOeblj5Dvpnk8Jm7Q8B4THF/f1l1HtKVi0XDecsG6LXwGvzV5R1H32kq3TW6RW64OAf5aoQxpIgLa4z8A==",
|
||||
"requires": {
|
||||
"@babel/runtime": "^7.2.0",
|
||||
"get-node-dimensions": "^1.2.1",
|
||||
"prop-types": "^15.6.2",
|
||||
"resize-observer-polyfill": "^1.5.0"
|
||||
}
|
||||
},
|
||||
"react-modal": {
|
||||
"version": "3.11.2",
|
||||
"resolved": "https://registry.npmjs.org/react-modal/-/react-modal-3.11.2.tgz",
|
||||
@@ -12547,6 +12688,15 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"react-spring": {
|
||||
"version": "8.0.27",
|
||||
"resolved": "https://registry.npmjs.org/react-spring/-/react-spring-8.0.27.tgz",
|
||||
"integrity": "sha512-nDpWBe3ZVezukNRandTeLSPcwwTMjNVu1IDq9qA/AMiUqHuRN4BeSWvKr3eIxxg1vtiYiOLy4FqdfCP5IoP77g==",
|
||||
"requires": {
|
||||
"@babel/runtime": "^7.3.1",
|
||||
"prop-types": "^15.5.8"
|
||||
}
|
||||
},
|
||||
"react-table": {
|
||||
"version": "6.11.4",
|
||||
"resolved": "https://registry.npmjs.org/react-table/-/react-table-6.11.4.tgz",
|
||||
@@ -12634,13 +12784,15 @@
|
||||
}
|
||||
},
|
||||
"recompose": {
|
||||
"version": "0.26.0",
|
||||
"resolved": "https://registry.npmjs.org/recompose/-/recompose-0.26.0.tgz",
|
||||
"integrity": "sha512-KwOu6ztO0mN5vy3+zDcc45lgnaUoaQse/a5yLVqtzTK13czSWnFGmXbQVmnoMgDkI5POd1EwIKSbjU1V7xdZog==",
|
||||
"version": "0.30.0",
|
||||
"resolved": "https://registry.npmjs.org/recompose/-/recompose-0.30.0.tgz",
|
||||
"integrity": "sha512-ZTrzzUDa9AqUIhRk4KmVFihH0rapdCSMFXjhHbNrjAWxBuUD/guYlyysMnuHjlZC/KRiOKRtB4jf96yYSkKE8w==",
|
||||
"requires": {
|
||||
"@babel/runtime": "^7.0.0",
|
||||
"change-emitter": "^0.1.2",
|
||||
"fbjs": "^0.8.1",
|
||||
"hoist-non-react-statics": "^2.3.1",
|
||||
"react-lifecycles-compat": "^3.0.2",
|
||||
"symbol-observable": "^1.0.4"
|
||||
}
|
||||
},
|
||||
@@ -13271,10 +13423,13 @@
|
||||
}
|
||||
},
|
||||
"serialize-javascript": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-3.0.0.tgz",
|
||||
"integrity": "sha512-skZcHYw2vEX4bw90nAr2iTTsz6x2SrHEnfxgKYmZlvJYBEZrvbKtobJWlQ20zczKb3bsHHXXTYt48zBA7ni9cw==",
|
||||
"dev": true
|
||||
"version": "3.1.0",
|
||||
"resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-3.1.0.tgz",
|
||||
"integrity": "sha512-JIJT1DGiWmIKhzRsG91aS6Ze4sFUrYbltlkg2onR5OrnNM02Kl/hnY/T4FN2omvyeBbQmMJv+K4cPOpGzOTFBg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"randombytes": "^2.1.0"
|
||||
}
|
||||
},
|
||||
"serve-index": {
|
||||
"version": "1.9.1",
|
||||
@@ -14609,16 +14764,16 @@
|
||||
}
|
||||
},
|
||||
"terser-webpack-plugin": {
|
||||
"version": "1.4.3",
|
||||
"resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.3.tgz",
|
||||
"integrity": "sha512-QMxecFz/gHQwteWwSo5nTc6UaICqN1bMedC5sMtUc7y3Ha3Q8y6ZO0iCR8pq4RJC8Hjf0FEPEHZqcMB/+DFCrA==",
|
||||
"version": "1.4.5",
|
||||
"resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz",
|
||||
"integrity": "sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"cacache": "^12.0.2",
|
||||
"find-cache-dir": "^2.1.0",
|
||||
"is-wsl": "^1.1.0",
|
||||
"schema-utils": "^1.0.0",
|
||||
"serialize-javascript": "^2.1.2",
|
||||
"serialize-javascript": "^4.0.0",
|
||||
"source-map": "^0.6.1",
|
||||
"terser": "^4.1.2",
|
||||
"webpack-sources": "^1.4.0",
|
||||
@@ -14678,15 +14833,6 @@
|
||||
"path-exists": "^3.0.0"
|
||||
}
|
||||
},
|
||||
"lru-cache": {
|
||||
"version": "5.1.1",
|
||||
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
|
||||
"integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"yallist": "^3.0.2"
|
||||
}
|
||||
},
|
||||
"make-dir": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz",
|
||||
@@ -14697,24 +14843,6 @@
|
||||
"semver": "^5.6.0"
|
||||
}
|
||||
},
|
||||
"mississippi": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz",
|
||||
"integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"concat-stream": "^1.5.0",
|
||||
"duplexify": "^3.4.2",
|
||||
"end-of-stream": "^1.1.0",
|
||||
"flush-write-stream": "^1.0.0",
|
||||
"from2": "^2.1.0",
|
||||
"parallel-transform": "^1.1.0",
|
||||
"pump": "^3.0.0",
|
||||
"pumpify": "^1.3.3",
|
||||
"stream-each": "^1.1.0",
|
||||
"through2": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"p-limit": {
|
||||
"version": "2.3.0",
|
||||
"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
|
||||
@@ -14754,22 +14882,15 @@
|
||||
"find-up": "^3.0.0"
|
||||
}
|
||||
},
|
||||
"pump": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
|
||||
"integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
|
||||
"serialize-javascript": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz",
|
||||
"integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"end-of-stream": "^1.1.0",
|
||||
"once": "^1.3.1"
|
||||
"randombytes": "^2.1.0"
|
||||
}
|
||||
},
|
||||
"serialize-javascript": {
|
||||
"version": "2.1.2",
|
||||
"resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-2.1.2.tgz",
|
||||
"integrity": "sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ==",
|
||||
"dev": true
|
||||
},
|
||||
"source-map": {
|
||||
"version": "0.6.1",
|
||||
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
|
||||
@@ -14784,12 +14905,6 @@
|
||||
"requires": {
|
||||
"figgy-pudding": "^3.5.1"
|
||||
}
|
||||
},
|
||||
"yallist": {
|
||||
"version": "3.1.1",
|
||||
"resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
|
||||
"integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -15075,9 +15190,9 @@
|
||||
}
|
||||
},
|
||||
"ua-parser-js": {
|
||||
"version": "0.7.21",
|
||||
"resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.21.tgz",
|
||||
"integrity": "sha512-+O8/qh/Qj8CgC6eYBVBykMrNtp5Gebn4dlGD/kKXVkJNDwyrAwSIqwz8CDf+tsAIWVycKcku6gIXJ0qwx/ZXaQ=="
|
||||
"version": "0.7.22",
|
||||
"resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.22.tgz",
|
||||
"integrity": "sha512-YUxzMjJ5T71w6a8WWVcMGM6YWOTX27rCoIQgLXiWaxqXSx9D7DNjiGWn1aJIRSQ5qr0xuhra77bSIh6voR/46Q=="
|
||||
},
|
||||
"unherit": {
|
||||
"version": "1.1.3",
|
||||
@@ -16094,9 +16209,9 @@
|
||||
}
|
||||
},
|
||||
"whatwg-fetch": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz",
|
||||
"integrity": "sha512-9GSJUgz1D4MfyKU7KRqwOjXCXTqWdFNvEr7eUBYchQiVc744mqK/MzXPNR2WsPkmkOa4ywfg8C2n8h+13Bey1Q=="
|
||||
"version": "3.5.0",
|
||||
"resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.5.0.tgz",
|
||||
"integrity": "sha512-jXkLtsR42xhXg7akoDKvKWE40eJeI+2KZqcp2h3NsOrRnDvtWX36KcKl30dy+hxECivdk2BVUHVNrPtoMBUx6A=="
|
||||
},
|
||||
"whatwg-mimetype": {
|
||||
"version": "2.3.0",
|
||||
|
||||
7
client/package.json
vendored
7
client/package.json
vendored
@@ -13,12 +13,11 @@
|
||||
"test:watch": "jest --watch"
|
||||
},
|
||||
"dependencies": {
|
||||
"@hot-loader/react-dom": "^16.13.0",
|
||||
"@nivo/line": "^0.49.1",
|
||||
"@nivo/line": "^0.64.0",
|
||||
"axios": "^0.19.2",
|
||||
"classnames": "^2.2.6",
|
||||
"date-fns": "^1.29.0",
|
||||
"i18next": "^19.4.4",
|
||||
"i18next": "^19.6.2",
|
||||
"i18next-browser-languagedetector": "^4.2.0",
|
||||
"ipaddr.js": "^1.9.1",
|
||||
"js-yaml": "^3.14.0",
|
||||
@@ -29,7 +28,7 @@
|
||||
"react": "^16.13.1",
|
||||
"react-click-outside": "^3.0.1",
|
||||
"react-dom": "^16.13.1",
|
||||
"react-i18next": "^11.4.0",
|
||||
"react-i18next": "^11.7.2",
|
||||
"react-modal": "^3.11.2",
|
||||
"react-popper-tooltip": "^2.11.1",
|
||||
"react-redux": "^7.2.0",
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
<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="viewport" content="width=device-width, initial-scale=1.0, shrink-to-fit=no">
|
||||
<meta name="theme-color" content="#000000">
|
||||
<meta name="google" content="notranslate">
|
||||
<meta http-equiv="x-dns-prefetch-control" content="off">
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
<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="viewport" content="width=device-width, initial-scale=1.0, shrink-to-fit=no">
|
||||
<meta name="theme-color" content="#000000">
|
||||
<meta name="google" content="notranslate">
|
||||
<meta name="mobile-web-app-capable" content="yes" />
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
<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="viewport" content="width=device-width, initial-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" />
|
||||
|
||||
597
client/src/__locales/be.json
Normal file
597
client/src/__locales/be.json
Normal file
@@ -0,0 +1,597 @@
|
||||
{
|
||||
"client_settings": "Налады кліентаў",
|
||||
"example_upstream_reserved": "Вы можаце паказаць DNS-сервер <0>для канкрэтнага дамена(аў)</0>",
|
||||
"example_upstream_comment": "Вы можаце паказаць каментар",
|
||||
"upstream_parallel": "Ужыць адначасныя запыты да ўсіх сервераў для паскарэння апрацоўкі запыту",
|
||||
"parallel_requests": "Паралельныя запыты",
|
||||
"load_balancing": "Размеркаванне нагрузкі",
|
||||
"load_balancing_desc": "Запытвайце па адным серверы за раз. AdGuard Home будзе выкарыстоўваць выпадковы алгарытм для выбару сервера, так што самы хуткі сервер будзе выкарыстоўвацца часцей.",
|
||||
"bootstrap_dns": "Bootstrap DNS-серверы",
|
||||
"bootstrap_dns_desc": "Bootstrap DNS-серверы выкарыстоўваюцца для пошуку IP-адрасоў DoH/DoT сервераў, якія вы паказалі.",
|
||||
"check_dhcp_servers": "Праверыць DHCP-серверы",
|
||||
"save_config": "Захаваць канфігурацыю",
|
||||
"enabled_dhcp": "DHCP-сервер улучаны",
|
||||
"disabled_dhcp": "DHCP-сервер адключаны",
|
||||
"unavailable_dhcp": "DHCP недаступна",
|
||||
"unavailable_dhcp_desc": "AdGuard Home не можа запусціць DHCP-сервер на вашай АС",
|
||||
"dhcp_title": "DHCP-сервер (эксперыментальны!)",
|
||||
"dhcp_description": "Калі ваш роўтар не падае налады DHCP, вы можаце выкарыстоўваць уласны ўбудаваны DHCP-сервер AdGuard.",
|
||||
"dhcp_enable": "Уключыць DHCP-сервер",
|
||||
"dhcp_disable": "Адключыць DHCP-сервер",
|
||||
"dhcp_not_found": "Актыўныя DHCP-серверы ў сеціве не знойдзены. Вы можаце бяспечна ўключыць убудаваны сервер DHCP.",
|
||||
"dhcp_found": "Некаторыя актыўныя DHCP-серверы знойдзены ў сеціве. Улучэнне ўбудаванага DHCP-сервера небяспечнае.",
|
||||
"dhcp_leases": "Арэнда DHCP",
|
||||
"dhcp_static_leases": "Статычныя арэнды DHCP",
|
||||
"dhcp_leases_not_found": "Арэнда DHCP не выяўлена",
|
||||
"dhcp_config_saved": "Канфігурацыя DHCP-сервера паспяхова захавана",
|
||||
"dhcp_ipv4_settings": "Налады DHCP IPv4",
|
||||
"dhcp_ipv6_settings": "Налады DHCP IPv6",
|
||||
"form_error_required": "Абавязковае поле",
|
||||
"form_error_ip4_format": "Няслушны фармат IPv4",
|
||||
"form_error_ip6_format": "Няслушны фармат IPv6",
|
||||
"form_error_ip_format": "Няслушны фармат IP-адраса",
|
||||
"form_error_mac_format": "Некарэктны фармат MAC",
|
||||
"form_error_client_id_format": "Няслушны фармат ID кліента",
|
||||
"form_error_server_name": "Няслушнае імя сервера",
|
||||
"form_error_positive": "Павінна быць больш 0",
|
||||
"form_error_negative": "Павінна быць не менш 0",
|
||||
"range_end_error": "Павінен перавышаць пачатак дыяпазону",
|
||||
"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": "Вы ўпэўнены, што хочаце выдаліць \"{{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": "версія",
|
||||
"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> \"Фільтрах\"</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_help": "Увядзіце адрасы сервераў па адным у радку. <a>Даведацца больш </a> пра наладжванне DNS-сервераў.",
|
||||
"upstream_dns_configured_in_file": "Наладжаны ў {{path}}",
|
||||
"test_upstream_btn": "Тэст upstream сервераў",
|
||||
"upstreams": "Upstreams",
|
||||
"apply_btn": "Ужыць",
|
||||
"disabled_filtering_toast": "Фільтрацыя выкл.",
|
||||
"enabled_filtering_toast": "Фільтрацыя ўкл.",
|
||||
"disabled_safe_browsing_toast": "Бяспечная навігацыя выкл.",
|
||||
"enabled_safe_browsing_toast": "Бяспечная навігацыя ўкл.",
|
||||
"disabled_parental_toast": "Бацькоўскі кантроль выкл.",
|
||||
"enabled_parental_toast": "Бацькоўскі кантроль укл.",
|
||||
"disabled_safe_search_toast": "Бяспечны пошук выкл.",
|
||||
"enabled_save_search_toast": "Бяспечны пошук укл.",
|
||||
"enabled_table_header": "УКЛ.",
|
||||
"name_table_header": "Імя",
|
||||
"list_url_table_header": "URL-адрас спіса",
|
||||
"rules_count_table_header": "Колькасць правілаў:",
|
||||
"last_time_updated_table_header": "Апошняе абнаўленне",
|
||||
"actions_table_header": "Дзеянні",
|
||||
"request_table_header": "Запыт",
|
||||
"edit_table_action": "Рэдагаваць",
|
||||
"delete_table_action": "Выдаліць",
|
||||
"elapsed": "Прайшло",
|
||||
"filters_and_hosts_hint": "AdGuard Home распазнае базавыя правілы блакавання і сінтаксіс файлаў hosts.",
|
||||
"no_blocklist_added": "Чорныя спісы не дададзены",
|
||||
"no_whitelist_added": "Белыя спісы не дададзены",
|
||||
"add_blocklist": "Дадаць чорны спіс",
|
||||
"add_allowlist": "Дадаць белы спіс",
|
||||
"cancel_btn": "Адмена",
|
||||
"enter_name_hint": "Увядзіце імя",
|
||||
"enter_url_or_path_hint": "Увядзіце URL-адрас ці абсалютны шлях да спіса",
|
||||
"check_updates_btn": "Праверыць абнаўленні",
|
||||
"new_blocklist": "Новы чорны спіс",
|
||||
"new_allowlist": "Новы белы спіс",
|
||||
"edit_blocklist": "Рэдагаваць чорны спіс",
|
||||
"edit_allowlist": "Рэдагаваць белы спіс",
|
||||
"choose_blocklist": "Абярыце спісы блакаванняў",
|
||||
"choose_allowlist": "Выберите списки разрешённых",
|
||||
"enter_valid_blocklist": "Дадайце дзейны URL-адрас у чорны спіс.",
|
||||
"enter_valid_allowlist": "Дадайце дзейны URL-адрас у белы спіс.",
|
||||
"form_error_url_format": "Няслушны фармат URL",
|
||||
"form_error_url_or_path_format": "Няслушны URL ці абсалютны шлях да спіса",
|
||||
"custom_filter_rules": "Карыстацкае рэдагавала фільтрацыі",
|
||||
"custom_filter_rules_hint": "Уводзьце па адным правіле на радок. Вы можаце выкарыстоўваць правілы блакавання ці сінтаксіс файлаў hosts.",
|
||||
"examples_title": "Прыклады",
|
||||
"example_meaning_filter_block": "заблакаваць доступ да дамена example.org і ўсім яго паддаменам",
|
||||
"example_meaning_filter_whitelist": "адблакаваць доступ да дамена example.org і ўсім яго паддаменам",
|
||||
"example_meaning_host_block": "Зараз AdGuard Home верне 127.0.0.1 для дамена example.org (але не для яго паддаменаў).",
|
||||
"example_comment": "! Так можна дадаваць апісанне",
|
||||
"example_comment_meaning": "каментар",
|
||||
"example_comment_hash": "# І вось так таксама",
|
||||
"example_regex_meaning": "блакуе доступ да даменаў, што адпавядаюць <0>зададзенаму рэгулярнаму выразу</0>",
|
||||
"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-over-HTTPS</a>",
|
||||
"example_upstream_doq": "зашыфраваны <0>DNS-over-QUIC</0>",
|
||||
"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> рэзалвераў",
|
||||
"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": "Заблакаваць",
|
||||
"disallow_this_client": "Забараніць доступ гэтаму кліенту",
|
||||
"allow_this_client": "Дазволіць доступ гэтаму кліенту",
|
||||
"block_for_this_client_only": "Заблакаваць толькі для гэтага кліента",
|
||||
"unblock_for_this_client_only": "Адблакаваць толькі для гэтага кліента",
|
||||
"time_table_header": "Час",
|
||||
"date": "Дата",
|
||||
"domain_name_table_header": "Дамен",
|
||||
"domain_or_client": "Дамен ці кліент",
|
||||
"type_table_header": "Тып",
|
||||
"response_table_header": "Адказ",
|
||||
"response_code": "Код адказа",
|
||||
"client_table_header": "Кліент",
|
||||
"empty_response_status": "Пуста",
|
||||
"show_all_filter_type": "Паказаць усё",
|
||||
"show_filtered_type": "Паказаць адфільтраваныя",
|
||||
"no_logs_found": "Логі не знойдзены",
|
||||
"refresh_btn": "Абнавіць",
|
||||
"previous_btn": "Назад",
|
||||
"next_btn": "Наперад",
|
||||
"loading_table_status": "Загрузка...",
|
||||
"page_table_footer_text": "Старонка",
|
||||
"rows_table_footer_text": "радкоў",
|
||||
"updated_custom_filtering_toast": "Занесены змены ў карыстацкія правілы",
|
||||
"rule_removed_from_custom_filtering_toast": "Карыстацкае правіла выдалена: {{rule}}",
|
||||
"rule_added_to_custom_filtering_toast": "Карыстацкае правіла дададзена: {{rule}}",
|
||||
"query_log_response_status": "Статус: {{value}}",
|
||||
"query_log_filtered": "Адфільтравана з дапамогай {{filter}}",
|
||||
"query_log_confirm_clear": "Вы ўпэўнены, што хочаце ачысціць увесь часопіс запытаў?",
|
||||
"query_log_cleared": "Часопіс запытаў паспяхова вычышчаны",
|
||||
"query_log_updated": "Часопіс запытаў паспяхова абноўлены",
|
||||
"query_log_clear": "Ачысціць часопіс запытаў",
|
||||
"query_log_retention": "Захаванне часопіса запытаў",
|
||||
"query_log_enable": "Уключыць часопіс",
|
||||
"query_log_configuration": "Налада часопіса",
|
||||
"query_log_disabled": "Часопіс запытаў выключаны, яго можна ўключыць у <0>наладах</0>",
|
||||
"query_log_strict_search": "Ужывайце падвойныя двукоссі для строгага пошуку",
|
||||
"query_log_retention_confirm": "Вы ўпэўнены, што хочаце змяніць тэрмін захоўвання запытаў? Пры скарачэнні інтэрвалу дадзеныя могуць быць згублены",
|
||||
"anonymize_client_ip": "Ананімізацыя IP-адрасы кліента",
|
||||
"anonymize_client_ip_desc": "Не захоўвайце поўны IP-адрас кліента ў часопісах і статыстыцы",
|
||||
"dns_config": "Налады DNS-сервера",
|
||||
"dns_cache_config": "Налада кэша DNS",
|
||||
"dns_cache_config_desc": "Тут можна наладзіць кэш DNS",
|
||||
"blocking_mode": "Рэжым блакавання",
|
||||
"default": "Стандартны",
|
||||
"nxdomain": "NXDOMAIN",
|
||||
"refused": "REFUSED",
|
||||
"null_ip": "Нулёвы IP",
|
||||
"custom_ip": "Свой IP",
|
||||
"blocking_ipv4": "Блакаванне IPv4",
|
||||
"blocking_ipv6": "Блакаванне IPv6",
|
||||
"dnscrypt": "DNSCrypt",
|
||||
"dns_over_https": "DNS-over-HTTPS",
|
||||
"dns_over_tls": "DNS-over-TLS",
|
||||
"dns_over_quic": "DNS-over-QUIC",
|
||||
"client_id": "Ідэнтыфікатар кліента",
|
||||
"client_id_placeholder": "Увядзіце ідэнтыфікатар кліента",
|
||||
"client_id_desc": "Розныя кліенты могуць ідэнтыфікавацца па адмысловым ідэнтыфікатары кліента. <a>Тут</a> вы можаце даведацца больш пра ідэнтыфікацыю кліентаў.",
|
||||
"download_mobileconfig_doh": "Спампаваць .mobileconfig для DNS-over-HTTPS",
|
||||
"download_mobileconfig_dot": "Спампаваць .mobileconfig для DNS-over-TLS",
|
||||
"download_mobileconfig": "Загрузіць файл канфігурацыі",
|
||||
"plain_dns": "Нешыфраваны DNS",
|
||||
"form_enter_rate_limit": "Увядзіце rate limit",
|
||||
"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": "Стандартны: Адказвае з нулёвым IP-адрасам (0.0.0.0 для A; :: для AAAA), калі заблакавана правілам у стылі Adblock; адказвае з IP-адрасам, паказаным у правіле, калі заблакавана правілам у стылі /etc/hosts-style",
|
||||
"blocking_mode_refused": "REFUSED: Адказвае з кодам REFUSED",
|
||||
"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 у якасці <a href='#dhcp'>DHCP-сервера</a>. У адваротным выпадку вам трэба звярнуцца да кіраўніцтва па наладзе 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_doq": "Порт DNS-over-QUIC",
|
||||
"encryption_doq_desc": "Калі гэты порт наладжаны, AdGuard Home запусціць сервер DNS-over-QUIC на гэтым порце. Гэта эксперыментальна і можа быць ненадзейна. Апроч таго, не так шмат кліентаў падтрымвае гэты спосаб цяпер.",
|
||||
"encryption_certificates": "Сертыфікаты",
|
||||
"encryption_certificates_desc": "Для выкарыстання шыфравання вам трэба падаць валідны ланцужок SSL-сертыфікатаў для вашага дамена. Вы можаце атрымаць дармовы сертыфікат на <0>{{link}}</0> ці вы можаце купіць яго ў аднаго з давераных Цэнтраў Сертыфікацыі.",
|
||||
"encryption_certificates_input": "Скапіюйце сюды сертыфікаты ў PEM-кадоўцы.",
|
||||
"encryption_status": "Статус",
|
||||
"encryption_expire": "Мінае",
|
||||
"encryption_key": "Прыватны ключ",
|
||||
"encryption_key_input": "Скапіюйце сюды прыватны ключ у PEM-кадоўцы.",
|
||||
"encryption_enable": "Уключыць шыфраванне (HTTPS, DNS-over-HTTPS і DNS-over-TLS)",
|
||||
"encryption_enable_desc": "Калі шыфраванне ўлучана, ўэб-інтэрфейс AdGuard Home будзе працаваць па HTTPS, а DNS-сервер будзе таксама працаваць па DNS-over-HTTPS і DNS-over-TLS.",
|
||||
"encryption_chain_valid": "Ланцужок сертыфікатаў валідны",
|
||||
"encryption_chain_invalid": "Ланцужок сертыфікатаў не валідны",
|
||||
"encryption_key_valid": "Валідны {{type}} прыватны ключ",
|
||||
"encryption_key_invalid": "Нявалідны {{type}} прыватны ключ",
|
||||
"encryption_subject": "Суб'ект",
|
||||
"encryption_issuer": "Выдавец",
|
||||
"encryption_hostnames": "Імёны хастоў",
|
||||
"encryption_reset": "Вы ўпэўнены, што хочаце скінуць налады шыфравання?",
|
||||
"topline_expiring_certificate": "Ваш SSL-сертыфікат хутка мінае. Абновіце <0>Налады шыфравання</0>.",
|
||||
"topline_expired_certificate": "Ваш SSL-сертыфікат мінуў. Абновіце <0>Налады шыфравання</0>.",
|
||||
"form_error_port_range": "Увядзіце значэнне порта з інтэрвалу 80-65535",
|
||||
"form_error_port_unsafe": "Гэта небяспечны порт",
|
||||
"form_error_equal": "Не павінны быць роўныя",
|
||||
"form_error_password": "Паролі не супадаюць",
|
||||
"reset_settings": "Скінуць налады",
|
||||
"update_announcement": "AdGuard Home {{version}} ужо даступная! <0>Націсніце сюды</0>, каб даведацца больш.",
|
||||
"setup_guide": "Інструкцыя па наладзе",
|
||||
"dns_addresses": "Адрасы DNS",
|
||||
"dns_start": "DNS-сервер запускаецца",
|
||||
"dns_status_error": "Памылка пры атрыманні стану DNS-сервера",
|
||||
"down": "Уніз",
|
||||
"fix": "Выправіць",
|
||||
"dns_providers": "<0>Спіс вядомых DNS-правайдараў</0> на выбар.",
|
||||
"update_now": "Абнавіць цяпер",
|
||||
"update_failed": "Памылка аўто-абнаўлення. Калі ласка, <a>кіруйцеся інструкцыі</a> для абнаўлення ручна.",
|
||||
"processing_update": "Калі ласка, пачакайце, AdGuard Home абнаўляецца",
|
||||
"clients_title": "Кліенты",
|
||||
"clients_desc": "Наладзьце прылады, што выкарыстоўваюць AdGuard Home",
|
||||
"settings_global": "Глабальныя",
|
||||
"settings_custom": "Свае",
|
||||
"table_client": "Кліент",
|
||||
"table_name": "Імя",
|
||||
"save_btn": "Захаваць",
|
||||
"client_add": "Дадаць кліента",
|
||||
"client_new": "Новы кліент",
|
||||
"client_edit": "Рэдагаваць кліента",
|
||||
"client_identifier": "Ідэнтыфікатар",
|
||||
"ip_address": "IP-адрас",
|
||||
"client_identifier_desc": "Кліенты могуць быць ідэнтыфікаваны па IP-адрасе, CIDR ці MAC-адрасу. Звярніце ўвагу, што выкарыстанне 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-запыты з гэтымі даменамі.",
|
||||
"access_settings_saved": "Налады доступу паспяхова захаваны",
|
||||
"updates_checked": "Праверка абнаўленняў прайшла паспяхова",
|
||||
"updates_version_equal": "Версія AdGuard Home актуальная",
|
||||
"check_updates_now": "Праверыць абнаўленні",
|
||||
"dns_privacy": "Зашыфраваны DNS",
|
||||
"setup_dns_privacy_1": "<0>DNS-over-TLS:</0> Ужывайце радок <1>{{address}}</1>.",
|
||||
"setup_dns_privacy_2": "<0>DNS-over-HTTPS:</0> Ужывайце радок <1>{{address}}</1>.",
|
||||
"setup_dns_privacy_3": "<0>Вось спіс ПА, якое вы можаце выкарыстоўваць.</0>",
|
||||
"setup_dns_privacy_4": "На прыладах з iOS 14 і macOS Big Sur вы можаце спампаваць адмысловы файл '.mobileconfig', які дадае <highlight>DNS-over-HTTPS</highlight> ці <highlight>DNS-over-TLS</highlight> серверы ў налады DNS.",
|
||||
"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_privacy_ioc_mac": "Канфігурацыя для iOS і macOS",
|
||||
"setup_dns_notice": "Каб выкарыстоўваць <1>DNS-over-HTTPS</1> ці <1>DNS-over-TLS</1>, вам патрэбна <0>наладзіць шыфраванне</0> у наладах AdGuard Home.",
|
||||
"rewrite_added": "Правіла перанакіравання DNS для \"{{key}}\" паспяхова дададзена",
|
||||
"rewrite_deleted": "Правіла перанакіравання DNS для \"{{key}}\" паспяхова выдалена",
|
||||
"rewrite_add": "Дадаць правіла перанакіравання DNS",
|
||||
"rewrite_not_found": "Не знойдзена правілаў перанакіравання DNS",
|
||||
"rewrite_confirm_delete": "Вы ўпэўнены, што хочаце выдаліць правіла перанакіравання DNS для \"{{key}}\"?",
|
||||
"rewrite_desc": "Дазваляе лёгка наладзіць карыстацкі DNS-адказ для пэўнага дамена.",
|
||||
"rewrite_applied": "Ужыта правіла перанакіравання",
|
||||
"rewrite_hosts_applied": "Перапісана па правіле файла hosts",
|
||||
"dns_rewrites": "Перанакіраванні DNS",
|
||||
"form_domain": "Увядзіце дамен",
|
||||
"form_answer": "Увядзіце IP адрас ці дамен",
|
||||
"form_error_domain_format": "Няслушны фармат дамена",
|
||||
"form_error_answer_format": "Няслушны фармат адказу",
|
||||
"configure": "Наладзіць",
|
||||
"main_settings": "Асноўныя налады",
|
||||
"block_services": "Выбраць заблакаваныя сэрвісы",
|
||||
"blocked_services": "Заблакаваныя сэрвісы",
|
||||
"blocked_services_desc": "Дазваляе хутка заблакаваць папулярныя сайты і сэрвісы.",
|
||||
"blocked_services_saved": "Заблакаваныя сэрвісы паспяхова захаваны",
|
||||
"blocked_services_global": "Выкарыстаць глабальныя заблакаваныя сэрвісы",
|
||||
"blocked_service": "Заблакаваны сэрвіс",
|
||||
"block_all": "Заблакаваць усё",
|
||||
"unblock_all": "Адблакаваць усё",
|
||||
"encryption_certificate_path": "Шлях да сертыфіката",
|
||||
"encryption_private_key_path": "Шлях да зачыненага ключа",
|
||||
"encryption_certificates_source_path": "Паказаць шлях да файла сертыфікатаў",
|
||||
"encryption_certificates_source_content": "Уставіць змесціва сертыфікатаў",
|
||||
"encryption_key_source_path": "Паказаць файл зачыненага ключа",
|
||||
"encryption_key_source_content": "Уставіць змесціва зачыненага ключа",
|
||||
"stats_params": "Канфігурацыя статыстыкі",
|
||||
"config_successfully_saved": "Канфігурацыя паспяхова захавана",
|
||||
"interval_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 у выглядзе А ці АААА адказу",
|
||||
"rewrite_domain_name": "Даменавае імя: дадаць запіс CNAME",
|
||||
"rewrite_A": "<0>A</0>: адмысловае значэнне, захоўваць запісы <0>A</0> з сервера для выгрузкі даных",
|
||||
"rewrite_AAAA": "<0>AAAA</0>: адмысловае значэнне, захоўваць запісы <0>AAAA</0> з сервера для выгрузкі даных",
|
||||
"disable_ipv6": "Адключыць IPv6",
|
||||
"disable_ipv6_desc": "Калі гэта опцыя ўлучана, усе DNS-запыты адрасоў IPv6 (тып AAAA) будуць ігнаравацца.",
|
||||
"fastest_addr": "Найхуткі IP-адрас",
|
||||
"fastest_addr_desc": "Апытайце ўсе DNS-серверы і вярніце самы хуткі IP-адрас сярод усіх адказаў. Гэта замарудзіць выкананне DNS-запытаў, бо нам давядзецца чакаць адказаў ад усіх DNS-сервераў, але палепшыць агульную ўзаемасувязь.",
|
||||
"autofix_warning_text": "Пры націску \"Выправіць\" AdGuard Home наладзіць вашу сістэму на выкарыстанне DNS-сервера AdGuard Home.",
|
||||
"autofix_warning_list": "Будуць выконвацца наступныя заданні: <0>Дэактываваць сістэмны DNSStubListener</0> <0>Усталяваць адрас сервера DNS на 127.0.0.1</0> <0>Стварыць сімвалічную спасылку /etc/resolv.conf на /run/systemd/resolve/resolv.conf</0> <0>Спыніць DNSStubListener (перазагрузіць сістэмную службу)</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_service": "Назва сэрвісу: {{service}}",
|
||||
"service_name": "Назва сэрвіса",
|
||||
"check_not_found": "Не знойдзена ў вашым спісе фільтраў",
|
||||
"client_confirm_block": "Вы ўпэўнены, што хочаце заблакаваць кліента \"{{ip}}\"?",
|
||||
"client_confirm_unblock": "Вы ўпэўнены, што хочаце адблакаваць кліента \"{{ip}}\"?",
|
||||
"client_blocked": "Кліент \"{{ip}}\" паспяхова заблакаваны",
|
||||
"client_unblocked": "Кліент \"{{ip}}\" паспяхова адблакаваны",
|
||||
"static_ip": "Статычны IP-адрас",
|
||||
"static_ip_desc": "AdGuard Home з'яўляецца серверам, таму для карэктнай працы яму патрэбен статычны IP-адрас. У адваротным выпадку, у нейкі момант ваш роўтар можа прысвоіць гэтай прыладзе іншы IP-адрас.",
|
||||
"set_static_ip": "Усталяваць статычны IP-адрас",
|
||||
"install_static_ok": "Добрыя навіны! Ваш статычны IP-адрас ужо наладжаны",
|
||||
"install_static_error": "AdGuard Home не можа аўтаматычна наладзіць яго для гэтага інтэрфейса сеціва. Калі ласка, паглядзіце інструкцыю пра тое, як гэта зрабіць ручна.",
|
||||
"install_static_configure": "Мы выявілі выкарыстанне дынамічнага IP-адраса — <0>{{ip}}</0>. Хочаце выкарыстоўваць яго ў якасці статычнага адраса?",
|
||||
"confirm_static_ip": "AdGuard Home наладзіць {{ip}} у якасці вашага статычнага IP-адраса. Хочаце працягнуць?",
|
||||
"list_updated": "Абноўлены {{count}} спіс",
|
||||
"list_updated_plural": "Абноўлена спісаў: {{count}}",
|
||||
"dnssec_enable": "Уключыць DNSSEC",
|
||||
"dnssec_enable_desc": "Усталюйце сцяг DNSSEC у выходных DNS-запытах і праверце вынік (патрабуецца распазнальнік з падтрымкай DNSSEC)",
|
||||
"validated_with_dnssec": "Проверено с помощью DNSSEC",
|
||||
"all_queries": "Усе запыты",
|
||||
"show_blocked_responses": "Заблакавана",
|
||||
"show_whitelisted_responses": "Белы спіс",
|
||||
"show_processed_responses": "Апрацавана",
|
||||
"blocked_safebrowsing": "Заблакавана згодна базе дадзеных 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-сервера",
|
||||
"cache_ttl_max_override_desc": "Усталюйце максімальнае TTL-значэнне (секунды) для запісаў у кэшы DNS",
|
||||
"ttl_cache_validation": "Мінімальнае значэнне TTL кэша павінна быць менш ці роўна максімальнаму значэнню",
|
||||
"filter_category_general": "Галоўныя",
|
||||
"filter_category_security": "Бяспека",
|
||||
"filter_category_regional": "Рэгіянальныя",
|
||||
"filter_category_other": "Іншае",
|
||||
"filter_category_general_desc": "Спісы, якія блакуюць асочванне і рэкламу на большасці прылад",
|
||||
"filter_category_security_desc": "Спісы, якія спецыялізуюцца на блакаванні шкодных праграм, фішынгавых ці махлярскіх даменаў",
|
||||
"filter_category_regional_desc": "Спісы, якія факусуюцца на рэгіянальнай рэкламе і серверах асочвання",
|
||||
"filter_category_other_desc": "Іншыя спісы блакавання",
|
||||
"setup_config_to_enable_dhcp_server": "Наладзіць канфігурацыю для ўключэння DHCP-сервера",
|
||||
"original_response": "Першапачатковы адказ",
|
||||
"click_to_view_queries": "Націсніце, каб прагледзець запыты",
|
||||
"port_53_faq_link": "Порт 53 часта заняты службамі \"DNSStubListener\" ці \"systemd-resolved\". Азнаёмцеся з <0>інструкцыяй</0> пра тое, як гэта дазволіць.",
|
||||
"adg_will_drop_dns_queries": "AdGuard Home скіне ўсе DNS-запыты ад гэтага кліента.",
|
||||
"client_not_in_allowed_clients": "Кліент не дазволены, бо яго няма ў спісе \"Дазволеных кліентаў\".",
|
||||
"experimental": "Эксперыментальны"
|
||||
}
|
||||
@@ -71,7 +71,7 @@
|
||||
"average_processing_time": "Средно време за обработка",
|
||||
"average_processing_time_hint": "Средно време за обработка на DNS заявки в милисекунди",
|
||||
"block_domain_use_filters_and_hosts": "Блокирани домейни - общи и местни филтри",
|
||||
"filters_block_toggle_hint": "Може да зададете собствени настройки в <a href='#filters'>Филтри</a>.",
|
||||
"filters_block_toggle_hint": "Може да зададете собствени настройки в <a>Филтри</a>.",
|
||||
"use_adguard_browsing_sec": "Използвайте AdGuard модул за сигурността",
|
||||
"use_adguard_browsing_sec_hint": "Модул Сигурност в AdGuard Home проверява всяка страница която отваряте дали е в черните списъци застрашаващи вашата сигурност. Използва се програмен интерфейс който защитава вашата анонимност и изпраща само SHA256 сума базирана на част от домейна който посещавате.",
|
||||
"use_adguard_parental": "Включи AdGuard Родителски Надзор",
|
||||
@@ -81,7 +81,6 @@
|
||||
"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": "Забрани филтрирането",
|
||||
@@ -139,13 +138,12 @@
|
||||
"page_table_footer_text": "Страница",
|
||||
"rows_table_footer_text": "редове",
|
||||
"updated_custom_filtering_toast": "Обновени местни правила за филтриране",
|
||||
"rule_removed_from_custom_filtering_toast": "Премахнато от местни правила за филтриране",
|
||||
"rule_added_to_custom_filtering_toast": "Добавено до местни правила за филтриране",
|
||||
"rule_removed_from_custom_filtering_toast": "Премахнато от местни правила за филтриране: {{rule}}",
|
||||
"rule_added_to_custom_filtering_toast": "Добавено до местни правила за филтриране: {{rule}}",
|
||||
"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 ниво. Създадено е за да ви даде пълен контрол над мрежата и всичките ви устройства, без да е необходимо допълнително инсталиране на друг софтуер.",
|
||||
@@ -203,7 +201,6 @@
|
||||
"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 порт",
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"client_settings": "Nastavení klienta",
|
||||
"example_upstream_reserved": "Můžete zadat DNS upstream <0>pro konkrétní doménu(y)</0>",
|
||||
"example_upstream_comment": "Můžete zadat komentář",
|
||||
"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í",
|
||||
@@ -11,6 +12,8 @@
|
||||
"save_config": "Uložit konfiguraci",
|
||||
"enabled_dhcp": "DHCP server zapnutý",
|
||||
"disabled_dhcp": "DHCP server vypnutý",
|
||||
"unavailable_dhcp": "DHCP není k dispozici",
|
||||
"unavailable_dhcp_desc": "AdGuard Home nemůže na vašem operačním systému provozovat DHCP server",
|
||||
"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",
|
||||
@@ -21,14 +24,18 @@
|
||||
"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",
|
||||
"dhcp_ipv4_settings": "Nastavení DHCP IPv4",
|
||||
"dhcp_ipv6_settings": "Nastavení DHCP IPv6",
|
||||
"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_server_name": "Neplatný název serveru",
|
||||
"form_error_positive": "Musí být větší než 0",
|
||||
"form_error_negative": "Musí být rovno nebo větší než 0",
|
||||
"range_end_error": "Musí být větší než začátek rozsahu",
|
||||
"dhcp_form_gateway_input": "IP brána",
|
||||
"dhcp_form_subnet_input": "Maska podsítě",
|
||||
"dhcp_form_range_title": "Rozsah IP adres",
|
||||
@@ -109,7 +116,7 @@
|
||||
"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>.",
|
||||
"filters_block_toggle_hint": "Pravidla blokování můžete nastavit v nastavení <a>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",
|
||||
@@ -127,7 +134,8 @@
|
||||
"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.",
|
||||
"upstream_dns_help": "Zadejte adresy serverů, jedno připojení na řádek. <a>Zjistěte více</a> o konfiguraci odchozích DNS serverů.",
|
||||
"upstream_dns_configured_in_file": "Konfigurováno v {{path}}",
|
||||
"test_upstream_btn": "Test upstreamů",
|
||||
"upstreams": "Odesláno",
|
||||
"apply_btn": "Použít",
|
||||
@@ -181,6 +189,7 @@
|
||||
"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_doq": "šifrovaný <0>DNS přes QUIC</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í",
|
||||
@@ -189,6 +198,10 @@
|
||||
"dns_test_not_ok_toast": "Server \"{{key}}\": nemohl být použit, zkontrolujte, zda jste ho správně napsali",
|
||||
"unblock": "Odblokovat",
|
||||
"block": "Blokovat",
|
||||
"disallow_this_client": "Blokovat tohoto klienta",
|
||||
"allow_this_client": "Povolit tohoto klienta",
|
||||
"block_for_this_client_only": "Blokovat pouze pro tohoto klienta",
|
||||
"unblock_for_this_client_only": "Odblokovat pouze pro tohoto klienta",
|
||||
"time_table_header": "Čas",
|
||||
"date": "Datum",
|
||||
"domain_name_table_header": "Název domény",
|
||||
@@ -208,8 +221,8 @@
|
||||
"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í",
|
||||
"rule_removed_from_custom_filtering_toast": "Pravidlo odstraněno z vlastních pravidel filtrování: {{rule}}",
|
||||
"rule_added_to_custom_filtering_toast": "Pravidlo přidáno do vlastních pravidel filtrování: {{rule}}",
|
||||
"query_log_response_status": "Status: {{value}}",
|
||||
"query_log_filtered": "Filtrováno pomocí {{filter}}",
|
||||
"query_log_confirm_clear": "Opravdu chcete vymazat celý protokol dotazů?",
|
||||
@@ -230,12 +243,21 @@
|
||||
"blocking_mode": "Režim blokování",
|
||||
"default": "Výchozí",
|
||||
"nxdomain": "NXDOMAIN",
|
||||
"refused": "REFUSED",
|
||||
"null_ip": "Nulová IP",
|
||||
"custom_ip": "Vlastní IP",
|
||||
"blocking_ipv4": "Blokování IPv4",
|
||||
"blocking_ipv6": "Blokování IPv6",
|
||||
"dnscrypt": "DNSCrypt",
|
||||
"dns_over_https": "DNS přes HTTPS",
|
||||
"dns_over_tls": "DNS přes TLS",
|
||||
"dns_over_quic": "DNS skrze QUIC",
|
||||
"client_id": "ID klienta",
|
||||
"client_id_placeholder": "Zadejte ID klienta",
|
||||
"client_id_desc": "Různé klienty lze identifikovat pomocí speciálního ID klienta. <a>Zde</a> se můžete dozvědět více o tom, jak klienty identifikovat.",
|
||||
"download_mobileconfig_doh": "Stáhnout .mobileconfig pro DNS skrze HTTPS",
|
||||
"download_mobileconfig_dot": "Stáhnout .mobileconfig pro DNS skrze TLS",
|
||||
"download_mobileconfig": "Stáhnout konfigurační soubor",
|
||||
"plain_dns": "Čisté DNS",
|
||||
"form_enter_rate_limit": "Zadejte rychlostní limit",
|
||||
"rate_limit": "Rychlostní limit",
|
||||
@@ -244,7 +266,8 @@
|
||||
"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_default": "Výchozí: Odezva s nulovou IP adresou (0.0.0.0 pro A; :: pro AAAA), 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_refused": "REFUSED: Odezva pomocí kódu REFUSED",
|
||||
"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",
|
||||
@@ -253,7 +276,7 @@
|
||||
"source_label": "Zdroj",
|
||||
"found_in_known_domain_db": "Nalezeno v databázi známých domén",
|
||||
"category_label": "Kategorie",
|
||||
"rule_label": "Pravidlo",
|
||||
"rule_label": "Pravidla",
|
||||
"list_label": "Seznam",
|
||||
"unknown_filter": "Neznámý filtr {{filterId}}",
|
||||
"known_tracker": "Známý slídič",
|
||||
@@ -314,13 +337,15 @@
|
||||
"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_server_desc": "Abyste mohli používat HTTPS, musíte zadat název serveru, který odpovídá vašemu certifikátu SSL nebo zástupnému certifikátu. Pokud není pole nastaveno, bude přijímat připojení TLS pro libovolnou doménu.",
|
||||
"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_doq": "DNS přes QUIC port",
|
||||
"encryption_doq_desc": "Pokud je tento port nakonfigurován, AdGuard Home spustí na tomto portu server DNS přes QUIC. Je to experimentální a nemusí být spolehlivé. V současnosti také není příliš mnoho klientů, kteří to podporují.",
|
||||
"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.",
|
||||
@@ -354,7 +379,7 @@
|
||||
"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ě.",
|
||||
"update_failed": "Automatická aktualizace selhala. Prosím <a>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",
|
||||
@@ -368,7 +393,7 @@
|
||||
"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>",
|
||||
"client_identifier_desc": "Klienti můžou být identifikováni podle IP adresy, CIDR, MAC adresy nebo speciálního ID klienta (může být použito pro DoT/DoH/DoQ). <0>Zde</0> se můžete dozvědět více o tom, jak klienty identifikovat.",
|
||||
"form_enter_ip": "Zadejte IP",
|
||||
"form_enter_mac": "Zadejte MAC",
|
||||
"form_enter_id": "Zadejte identifikátor",
|
||||
@@ -388,7 +413,7 @@
|
||||
"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_title": "Blokovaní 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^'.",
|
||||
@@ -399,7 +424,8 @@
|
||||
"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_3": "<0>Zde je seznam softwaru, který můžete použít.</0>",
|
||||
"setup_dns_privacy_4": "Na zařízení se systémem iOS 14 nebo macOS Big Sur si můžete stáhnout speciální soubor '.mobileconfig', který do nastavení DNS přidává servery <highlight>DNS skrze HTTPS</highlight> nebo <highlight> DNS skrze TLS</highlight>.",
|
||||
"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.",
|
||||
@@ -411,6 +437,7 @@
|
||||
"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_privacy_ioc_mac": "Konfigurace pro iOS a macOS",
|
||||
"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",
|
||||
@@ -510,8 +537,8 @@
|
||||
"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}}",
|
||||
"service_name": "Název služby",
|
||||
"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}}“?",
|
||||
@@ -546,13 +573,12 @@
|
||||
"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}}",
|
||||
"enter_cache_size": "Zadejte velikost mezipaměti (v bajtech)",
|
||||
"enter_cache_ttl_min_override": "Zadejte minimální hodnotu TTL (v sekundách)",
|
||||
"enter_cache_ttl_max_override": "Zadejte maximální hodnotu TTL (v sekundách)",
|
||||
"cache_ttl_min_override_desc": "Prodlužte nejkratší hodnotu TTL (v sekundách) obdrženou z odchozího serveru při ukládání DNS odpovědí do mezipaměti",
|
||||
"cache_ttl_max_override_desc": "Nastavte maximální hodnotu TTL (v sekundách) pro položky v mezipaměti DNS",
|
||||
"ttl_cache_validation": "Minimální hodnota TTL mezipaměti musí být menší nebo rovna maximální hodnotě",
|
||||
"filter_category_general": "Obecné",
|
||||
"filter_category_security": "Bezpečnost",
|
||||
"filter_category_regional": "Regionální",
|
||||
@@ -561,7 +587,11 @@
|
||||
"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",
|
||||
"setup_config_to_enable_dhcp_server": "Nastavte konfiguraci pro aktivaci DHCP serveru",
|
||||
"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."
|
||||
"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.",
|
||||
"adg_will_drop_dns_queries": "AdGuard Home zruší všechny DNS dotazy tohoto klienta.",
|
||||
"client_not_in_allowed_clients": "Tento klient není povolen, protože není na seznamu \"Povolení klienti\".",
|
||||
"experimental": "Experimentální"
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"client_settings": "Klient-indstillinger",
|
||||
"example_upstream_reserved": "Du kan specificere DNS upstream <0>for det(de) specifikke domæne(r)</0>",
|
||||
"example_upstream_comment": "Du kan uddybe kommentaren",
|
||||
"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",
|
||||
@@ -11,6 +12,8 @@
|
||||
"save_config": "Gem konfiguration",
|
||||
"enabled_dhcp": "DHCP-server aktiveret",
|
||||
"disabled_dhcp": "DHCP-server deaktiveret",
|
||||
"unavailable_dhcp": "DHCP er ikke tilgængelig",
|
||||
"unavailable_dhcp_desc": "AdGuard Home kan ikke køre en DHCP-server på dit OS",
|
||||
"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",
|
||||
@@ -21,14 +24,18 @@
|
||||
"dhcp_static_leases": "DHCP static leases",
|
||||
"dhcp_leases_not_found": "Ingen DHCP-leases fundet",
|
||||
"dhcp_config_saved": "DHCP-konfiguration gemt",
|
||||
"dhcp_ipv4_settings": "DHCP IPv4 Indstillinger",
|
||||
"dhcp_ipv6_settings": "DHCP IPv6 Indstillinger",
|
||||
"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_server_name": "Ugyldigt servernavn",
|
||||
"form_error_positive": "Skal være større end 0",
|
||||
"form_error_negative": "Skal være lig med 0 eller større",
|
||||
"range_end_error": "Skal være større end starten af intervallet",
|
||||
"dhcp_form_gateway_input": "Gateway IP",
|
||||
"dhcp_form_subnet_input": "Subnet mask",
|
||||
"dhcp_form_range_title": "Interval af IP-adresser",
|
||||
@@ -109,7 +116,7 @@
|
||||
"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>.",
|
||||
"filters_block_toggle_hint": "Du kan oprette blokeringsregler i <a>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",
|
||||
@@ -127,7 +134,8 @@
|
||||
"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.",
|
||||
"upstream_dns_help": "Indtast serveradresserne en pr. linje. <a>Lær mere</a> om konfiguration af upstream DNS-servere.",
|
||||
"upstream_dns_configured_in_file": "Konfigureret i {{path}}",
|
||||
"test_upstream_btn": "Test upstreams",
|
||||
"upstreams": "Upstreams",
|
||||
"apply_btn": "Anvend",
|
||||
@@ -181,6 +189,7 @@
|
||||
"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_doq": "krypteret <0>DNS-over-QUIC</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",
|
||||
@@ -189,6 +198,10 @@
|
||||
"dns_test_not_ok_toast": "Server \"{{key}}\": kunne ikke bruges, kontroller venligst at du har skrevet det korrekt",
|
||||
"unblock": "Fjern blokering",
|
||||
"block": "Bloker",
|
||||
"disallow_this_client": "Afvis denne klient",
|
||||
"allow_this_client": "Tillad denne klient",
|
||||
"block_for_this_client_only": "Bloker kun for denne klient",
|
||||
"unblock_for_this_client_only": "Fjern blokering kun for denne klient",
|
||||
"time_table_header": "Tid",
|
||||
"date": "Dato",
|
||||
"domain_name_table_header": "Domænenavn",
|
||||
@@ -208,8 +221,8 @@
|
||||
"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",
|
||||
"rule_removed_from_custom_filtering_toast": "Regel fjernet fra de brugerdefinerede filtreringsregler: {{rule}}",
|
||||
"rule_added_to_custom_filtering_toast": "Regel tilføjet til de brugerdefinerede filtreringsregler: {{rule}}",
|
||||
"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?",
|
||||
@@ -230,21 +243,31 @@
|
||||
"blocking_mode": "Blokeringstilstand",
|
||||
"default": "Standard",
|
||||
"nxdomain": "NXDOMAIN",
|
||||
"refused": "REFUSED",
|
||||
"null_ip": "Null IP",
|
||||
"custom_ip": "Tilpasset IP",
|
||||
"blocking_ipv4": "IPv4-blokering",
|
||||
"blocking_ipv6": "IPv6-blokering",
|
||||
"dnscrypt": "DNSCrypt",
|
||||
"dns_over_https": "DNS-over-HTTPS",
|
||||
"dns_over_tls": "DNS-over-TLS",
|
||||
"dns_over_quic": "DNS-over-Quic",
|
||||
"client_id": "Klient-ID",
|
||||
"client_id_placeholder": "Indtast klient-ID",
|
||||
"client_id_desc": "Forskellige klienter kan identificeres ved hjælp af et specielt klient-ID. <a>Her</a> kan du lære mere om, hvordan du identificerer klienter.",
|
||||
"download_mobileconfig_doh": "Download .mobileconfig til DNS-over-HTTPS",
|
||||
"download_mobileconfig_dot": "Download .mobileconfig til DNS-over-TLS",
|
||||
"download_mobileconfig": "Download konfigurationsfil",
|
||||
"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)",
|
||||
"rate_limit_desc": "Antallet af anmodninger pr. sekund, som en enkelt klient får lov til at fremsætte (indstilles den til 0 betyder det 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_default": "Standard: Svar med nul IP-adresse (0.0.0.0 for A; :: for AAAA), når den 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_refused": "REFUSED: Svar med en REFUSED kode",
|
||||
"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",
|
||||
@@ -253,7 +276,7 @@
|
||||
"source_label": "Kilde",
|
||||
"found_in_known_domain_db": "Fundet i databasen med kendte domæner.",
|
||||
"category_label": "Kategori",
|
||||
"rule_label": "Regel",
|
||||
"rule_label": "Regel(regler)",
|
||||
"list_label": "Liste",
|
||||
"unknown_filter": "Ukendt filter {{filterId}}",
|
||||
"known_tracker": "Kendt tracker",
|
||||
@@ -314,13 +337,15 @@
|
||||
"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_server_desc": "For at kunne bruge HTTPS skal du indtaste det servernavn, der matcher dit SSL-certifikat eller wildcard-certifikat. Hvis feltet ikke er indstillet, accepterer det TLS-forbindelser til ethvert domæne.",
|
||||
"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_doq": "DNS-over-QUIC port",
|
||||
"encryption_doq_desc": "Hvis denne port er konfigureret, vil AdGuard Home køre en DNS-over-QUIC server på denne port. Den er eksperimentel og er måske ikke pålidelig. Der er heller ikke mange klienter, der understøtter den i øjeblikket.",
|
||||
"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.",
|
||||
@@ -354,7 +379,7 @@
|
||||
"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.",
|
||||
"update_failed": "Automatisk opdatering mislykkedes. Følg <a>disse trin</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",
|
||||
@@ -368,7 +393,7 @@
|
||||
"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>",
|
||||
"client_identifier_desc": "Klienter kan identificeres ud fra IP-adressen, CIDR eller MAC-adressen eller et specielt klient-ID (kan bruges til DoT/DoH/DoQ). <0>Her</0> kan du lære mere om, hvordan du identificerer klienter.",
|
||||
"form_enter_ip": "Indtast IP",
|
||||
"form_enter_mac": "Indtast MAC",
|
||||
"form_enter_id": "Indtast identifikator",
|
||||
@@ -399,7 +424,8 @@
|
||||
"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_3": "<0>Her er en liste over software, du kan bruge.</0>",
|
||||
"setup_dns_privacy_4": "På en iOS 14 eller macOS Big Sur-enhed kan du downloade en særlig '.mobileconfig' -fil, der tilføjer <highlight>DNS-over-HTTPS</highlight> eller <highlight>DNS-over-TLS</highlight> servere til DNS-indstillingerne.",
|
||||
"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.",
|
||||
@@ -411,6 +437,7 @@
|
||||
"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_privacy_ioc_mac": "iOS- og macOS-konfiguration",
|
||||
"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",
|
||||
@@ -510,8 +537,8 @@
|
||||
"check_ip": "IP-adresser: {{ip}}",
|
||||
"check_cname": "CNAME: {{cname}}",
|
||||
"check_reason": "Årsag: {{reason}}",
|
||||
"check_rule": "Regel: {{rule}}",
|
||||
"check_service": "Servicenavn: {{service}}",
|
||||
"service_name": "Navn på tjeneste",
|
||||
"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}}\"?",
|
||||
@@ -546,13 +573,12 @@
|
||||
"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}}",
|
||||
"enter_cache_size": "Indtast cache-størrelse (bytes)",
|
||||
"enter_cache_ttl_min_override": "Indtast minimum TTL (sekunder)",
|
||||
"enter_cache_ttl_max_override": "Indtast maksimum TTL (sekunder)",
|
||||
"cache_ttl_min_override_desc": "Udvid korte time-to-live værdier (sekunder) modtaget fra upstream-serveren, når DNS-svar cachelagres",
|
||||
"cache_ttl_max_override_desc": "Indstil en maksimal time-to-live (sekunder) for registreringer i DNS-cachen",
|
||||
"ttl_cache_validation": "Minimum cache TTL-værdi skal være mindre end eller lig med den maksimale værdi",
|
||||
"filter_category_general": "Generelt",
|
||||
"filter_category_security": "Sikkerhed",
|
||||
"filter_category_regional": "Regional",
|
||||
@@ -561,7 +587,11 @@
|
||||
"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",
|
||||
"setup_config_to_enable_dhcp_server": "Opsætningskonfiguration for at aktivere DHCP-server",
|
||||
"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."
|
||||
"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.",
|
||||
"adg_will_drop_dns_queries": "AdGuard Home vil afbryde alle DNS-forespørgsler fra denne klient.",
|
||||
"client_not_in_allowed_clients": "Klienten er ikke tilladt, fordi den ikke er på listen \"Tilladte klienter\".",
|
||||
"experimental": "Eksperimentel"
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"client_settings": "Client-Einstellungen",
|
||||
"example_upstream_reserved": "Sie können DNS-Upstream <0>für bestimmte Domain(s)</0> angeben",
|
||||
"example_upstream_comment": "Sie können den Kommentar 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",
|
||||
@@ -11,6 +12,8 @@
|
||||
"save_config": "Konfiguration speichern",
|
||||
"enabled_dhcp": "DHCP-Server aktiviert",
|
||||
"disabled_dhcp": "DHCP-Server deaktiviert",
|
||||
"unavailable_dhcp": "DHCP ist nicht verfügbar",
|
||||
"unavailable_dhcp_desc": "AdGuard Home konnte keinen DHCP-Server auf Ihrem Betriebssystem ausführen",
|
||||
"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",
|
||||
@@ -21,14 +24,18 @@
|
||||
"dhcp_static_leases": "DHCP statische Leases",
|
||||
"dhcp_leases_not_found": "Keine DHCP-Leasingverträge gefunden\n",
|
||||
"dhcp_config_saved": "Gespeicherte DHCP-Server-Konfiguration",
|
||||
"dhcp_ipv4_settings": "DHCP-IPv4-Einstellungen",
|
||||
"dhcp_ipv6_settings": "DHCP-IPv6-Einstellungen",
|
||||
"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_server_name": "Ungültiger Servername",
|
||||
"form_error_positive": "Muss größer als 0 sein.",
|
||||
"form_error_negative": "Muss gleich oder größer als 0 (Null) sein",
|
||||
"range_end_error": "Muss größer als der Bereichsbeginn sein",
|
||||
"dhcp_form_gateway_input": "Gateway-IP",
|
||||
"dhcp_form_subnet_input": "Subnetz-Maske",
|
||||
"dhcp_form_range_title": "Bereich von IP-Adressen",
|
||||
@@ -45,7 +52,7 @@
|
||||
"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_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",
|
||||
@@ -76,7 +83,7 @@
|
||||
"on": "AN",
|
||||
"off": "AUS",
|
||||
"copyright": "Urheberrecht",
|
||||
"homepage": "Startseite",
|
||||
"homepage": "Homepage",
|
||||
"report_an_issue": "Fehlerbericht senden",
|
||||
"privacy_policy": "Datenschutzerklärung",
|
||||
"enable_protection": "Schutz aktivieren",
|
||||
@@ -85,35 +92,35 @@
|
||||
"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",
|
||||
"blocked_by": "<0>Durch Filter gesperrt</0>",
|
||||
"stats_malware_phishing": "Gesperrte Schädliche/Phishing-Webseiten",
|
||||
"stats_adult": "Gesperrte jugendgefährdende Webseiten",
|
||||
"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_blocked_domains": "Am häufigsten gesperrte 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_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",
|
||||
"number_of_dns_query_blocked_24_hours_by_sec": "Anzahl der durch das AdGuard-Modul „Internetsicherheit” gesperrten DNS-Anfragen",
|
||||
"number_of_dns_query_blocked_24_hours_adult": "Anzahl der gesperrten Webseiten mit jugendgefährdenden Inhalten",
|
||||
"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.",
|
||||
"block_domain_use_filters_and_hosts": "Domains durch Filter und Host-Dateien sperren",
|
||||
"filters_block_toggle_hint": "Sie können Blockierregeln in den <a>Filter</a>einstellungen erstellen.",
|
||||
"use_adguard_browsing_sec": "AdGuard Webservice für Internetsicherheit nutzen",
|
||||
"use_adguard_browsing_sec_hint": "AdGuard Home prüft, ob die Domain durch den Webdienst für Internetsicherheit auf eine Sperrliste gesetzt wurde. 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.",
|
||||
"use_adguard_parental_hint": "AdGuard Home wird prüfen, ob die Domain jugendgefährdende Inhalte enthält. Zum Schutz Ihrer Privatsphäre wird die selbe API wie für den Webservice für Internetsicherheit 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",
|
||||
@@ -127,7 +134,8 @@
|
||||
"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.",
|
||||
"upstream_dns_help": "Geben Sie pro Zeile eine Serveradresse ein. <a>Weitere Informationen</a> zur Konfiguration von Upstream-DNS-Servern.",
|
||||
"upstream_dns_configured_in_file": "Konfiguriert in {{path}}",
|
||||
"test_upstream_btn": "Upstreams testen",
|
||||
"upstreams": "Upstreams",
|
||||
"apply_btn": "Anwenden",
|
||||
@@ -163,9 +171,9 @@
|
||||
"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.",
|
||||
"choose_allowlist": "Freigabeliste wählen",
|
||||
"enter_valid_blocklist": "Gültige Webadresse der Sperrliste eingeben.",
|
||||
"enter_valid_allowlist": "Gültige Webadresse der Positivliste eingeben.",
|
||||
"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",
|
||||
@@ -177,10 +185,11 @@
|
||||
"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_regex_meaning": "Zugriff auf die Domains sperren, die dem <0>angegebenen regulärem 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_doq": "verschlüsseltes <0>DNS-over-QUIC</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",
|
||||
@@ -188,7 +197,11 @@
|
||||
"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",
|
||||
"block": "Sperren",
|
||||
"disallow_this_client": "Diesen Client sperren",
|
||||
"allow_this_client": "Diesen Client zulassen",
|
||||
"block_for_this_client_only": "Nur für diesen Client sperren",
|
||||
"unblock_for_this_client_only": "Nur für diesen Client freigeben",
|
||||
"time_table_header": "Zeit",
|
||||
"date": "Datum",
|
||||
"domain_name_table_header": "Domainname",
|
||||
@@ -204,12 +217,12 @@
|
||||
"refresh_btn": "Aktualisieren",
|
||||
"previous_btn": "Vorherige",
|
||||
"next_btn": "Nächste",
|
||||
"loading_table_status": "Laden...",
|
||||
"loading_table_status": "Wird geladen …",
|
||||
"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",
|
||||
"rule_removed_from_custom_filtering_toast": "Regel wurde aus den benutzerdefinierten Filterregeln entfernt: {{rule}}",
|
||||
"rule_added_to_custom_filtering_toast": "Regel wurde zu den benutzerdefinierten Filterregeln hinzugefügt: {{rule}}",
|
||||
"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?",
|
||||
@@ -230,12 +243,21 @@
|
||||
"blocking_mode": "Sperrmodus",
|
||||
"default": "Standard",
|
||||
"nxdomain": "NXDomain",
|
||||
"refused": "REFUSED",
|
||||
"null_ip": "Null-IP-Adresse",
|
||||
"custom_ip": "Benutzerdefinierte IP",
|
||||
"blocking_ipv4": "IPv4-Sperren",
|
||||
"blocking_ipv6": "IPv6-Sperren",
|
||||
"dnscrypt": "DNSCrypt",
|
||||
"dns_over_https": "DNS-over-HTTPS (DNS-Abrage über HTTPS)",
|
||||
"dns_over_tls": "DNS-over-TLS (DNS-Abrage über TLS)",
|
||||
"dns_over_quic": "DNS-over-QUIC",
|
||||
"client_id": "Client-ID",
|
||||
"client_id_placeholder": "Client-ID eingeben",
|
||||
"client_id_desc": "Verschiedene Clients können durch eine spezielle Client-ID identifiziert werden. <a>Hier</a> können Sie mehr darüber erfahren, wie Sie Clients identifizieren können.",
|
||||
"download_mobileconfig_doh": ".mobileconfig für DNS-über-HTTPS herunterladen",
|
||||
"download_mobileconfig_dot": ".mobileconfig für DNS-über-TLS herunterladen",
|
||||
"download_mobileconfig": "Konfigurationsdatei herunterladen",
|
||||
"plain_dns": "Einfaches DNS",
|
||||
"form_enter_rate_limit": "Begrenzungswert eingeben",
|
||||
"rate_limit": "Begrenzungswert",
|
||||
@@ -244,7 +266,8 @@
|
||||
"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_default": "Standard: Mit Null IP Adress (0.0.0.0 for A; :: for AAAA) 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_refused": "REFUSED: mit abgelehntem Code REFUSED",
|
||||
"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",
|
||||
@@ -253,7 +276,7 @@
|
||||
"source_label": "Quelle",
|
||||
"found_in_known_domain_db": "In der Datenbank der bekannten Domains gefunden.",
|
||||
"category_label": "Kategorie",
|
||||
"rule_label": "Regel",
|
||||
"rule_label": "Regel(n)",
|
||||
"list_label": "Liste",
|
||||
"unknown_filter": "Unbekannter Filter {{filterId}}",
|
||||
"known_tracker": "Bekannte Tracker",
|
||||
@@ -321,6 +344,8 @@
|
||||
"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_doq": "Port für DNS-over-QUIC",
|
||||
"encryption_doq_desc": "Wenn dieser Port eingerichtet ist, wird AdGuard Home einen DNS-over-QUIC-Server auf diesem Port ausführen. Es ist experimentell und möglicherweise nicht zuverlässig. Außerdem gibt es im Moment nicht allzu viele Clients, die ihn unterstützen.",
|
||||
"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.",
|
||||
@@ -354,7 +379,7 @@
|
||||
"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.",
|
||||
"update_failed": "Das automatische Aktualisieren ist fehlgeschlagen. Bitte <a>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",
|
||||
@@ -399,7 +424,8 @@
|
||||
"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_3": "<0>Hier ist eine Liste von Software, die Sie verwenden können.</0>",
|
||||
"setup_dns_privacy_4": "Auf einem iOS 14 oder macOS Big Sur-Gerät können Sie eine spezielle Datei „.mobileconfig” herunterladen, die Server für <highlight>DNS-über-HTTPS</highlight> oder <highlight>DNS-über-TLS</highlight> zu den DNS-Einstellungen hinzufügt.",
|
||||
"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.",
|
||||
@@ -411,6 +437,7 @@
|
||||
"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_privacy_ioc_mac": "Konfiguration für iOS und macOS",
|
||||
"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",
|
||||
@@ -479,7 +506,7 @@
|
||||
"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_response": "Gesperrt nach Antwort von CNAME oder IP",
|
||||
"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.",
|
||||
@@ -510,8 +537,8 @@
|
||||
"check_ip": "IP-Adressen: {{ip}}",
|
||||
"check_cname": "CNAME: {{cname}}",
|
||||
"check_reason": "Grund: {{reason}}",
|
||||
"check_rule": "Regel: {{rule}}",
|
||||
"check_service": "Dienstname: {{service}}",
|
||||
"service_name": "Name des Dienstes",
|
||||
"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?",
|
||||
@@ -544,15 +571,14 @@
|
||||
"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",
|
||||
"cache_ttl_min_override": "TTL-Minimalwert überschreiben (in Sekunden)",
|
||||
"cache_ttl_max_override": "TTL-Höchstwert überschreiben (in Sekunden)",
|
||||
"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_min_override_desc": "Überschreibt den TTL-Minimalwert, der vom vorgeschalteten Server empfangen wurde. Dieser Wert darf nicht mehr 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",
|
||||
"ttl_cache_validation": "Der minimale Cache des TTL-Wertes muss kleiner oder gleich dem maximalen Wert sein",
|
||||
"filter_category_general": "Allgemein",
|
||||
"filter_category_security": "Sicherheit",
|
||||
"filter_category_regional": "Regional",
|
||||
@@ -561,7 +587,11 @@
|
||||
"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",
|
||||
"setup_config_to_enable_dhcp_server": "Einrichten der Konfiguration zur Aktivierung des DHCP-Servers",
|
||||
"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."
|
||||
"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.",
|
||||
"adg_will_drop_dns_queries": "AdGuard Home wird alle DNS-Abfragen von diesem Client verwerfen.",
|
||||
"client_not_in_allowed_clients": "Diese Anwendung ist nicht erlaubt, weil diese nicht in der Liste „Erlaubte Anwendungen” aufgeführt ist.",
|
||||
"experimental": "Experimentell"
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"client_settings": "Client settings",
|
||||
"example_upstream_reserved": "You can specify DNS upstream <0>for the specific domain(s)</0>",
|
||||
"example_upstream_comment": "You can specify the comment",
|
||||
"upstream_parallel": "Use parallel requests to speed up resolving by simultaneously querying all upstream servers",
|
||||
"parallel_requests": "Parallel requests",
|
||||
"load_balancing": "Load-balancing",
|
||||
@@ -11,6 +12,8 @@
|
||||
"save_config": "Save config",
|
||||
"enabled_dhcp": "DHCP server enabled",
|
||||
"disabled_dhcp": "DHCP server disabled",
|
||||
"unavailable_dhcp": "DHCP is unavailable",
|
||||
"unavailable_dhcp_desc": "AdGuard Home cannot run a DHCP server on your OS",
|
||||
"dhcp_title": "DHCP server (experimental!)",
|
||||
"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",
|
||||
@@ -21,14 +24,18 @@
|
||||
"dhcp_static_leases": "DHCP static leases",
|
||||
"dhcp_leases_not_found": "No DHCP leases found",
|
||||
"dhcp_config_saved": "DHCP config successfully saved",
|
||||
"dhcp_ipv4_settings": "DHCP IPv4 Settings",
|
||||
"dhcp_ipv6_settings": "DHCP IPv6 Settings",
|
||||
"form_error_required": "Required field",
|
||||
"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_server_name": "Invalid server name",
|
||||
"form_error_positive": "Must be greater than 0",
|
||||
"form_error_negative": "Must be equal to 0 or greater",
|
||||
"range_end_error": "Must be greater than range start",
|
||||
"dhcp_form_gateway_input": "Gateway IP",
|
||||
"dhcp_form_subnet_input": "Subnet mask",
|
||||
"dhcp_form_range_title": "Range of IP addresses",
|
||||
@@ -109,7 +116,7 @@
|
||||
"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>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",
|
||||
@@ -127,7 +134,8 @@
|
||||
"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://www.quad9.net/' target='_blank'>Quad9</a> as an upstream.",
|
||||
"upstream_dns_help": "Enter servers addresses one per line. <a>Learn more</a> about configuring upstream DNS servers.",
|
||||
"upstream_dns_configured_in_file": "Configured in {{path}}",
|
||||
"test_upstream_btn": "Test upstreams",
|
||||
"upstreams": "Upstreams",
|
||||
"apply_btn": "Apply",
|
||||
@@ -181,6 +189,7 @@
|
||||
"example_upstream_regular": "regular DNS (over UDP)",
|
||||
"example_upstream_dot": "encrypted <0>DNS-over-TLS</0>",
|
||||
"example_upstream_doh": "encrypted <0>DNS-over-HTTPS</0>",
|
||||
"example_upstream_doq": "encrypted <0>DNS-over-QUIC</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)",
|
||||
"all_lists_up_to_date_toast": "All lists are already up-to-date",
|
||||
@@ -189,6 +198,10 @@
|
||||
"dns_test_not_ok_toast": "Server \"{{key}}\": could not be used, please check that you've written it correctly",
|
||||
"unblock": "Unblock",
|
||||
"block": "Block",
|
||||
"disallow_this_client": "Disallow this client",
|
||||
"allow_this_client": "Allow this client",
|
||||
"block_for_this_client_only": "Block for this client only",
|
||||
"unblock_for_this_client_only": "Unblock for this client only",
|
||||
"time_table_header": "Time",
|
||||
"date": "Date",
|
||||
"domain_name_table_header": "Domain name",
|
||||
@@ -208,8 +221,8 @@
|
||||
"page_table_footer_text": "Page",
|
||||
"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",
|
||||
"rule_removed_from_custom_filtering_toast": "Rule removed from the custom filtering rules: {{rule}}",
|
||||
"rule_added_to_custom_filtering_toast": "Rule added to the custom filtering rules: {{rule}}",
|
||||
"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?",
|
||||
@@ -230,21 +243,31 @@
|
||||
"blocking_mode": "Blocking mode",
|
||||
"default": "Default",
|
||||
"nxdomain": "NXDOMAIN",
|
||||
"refused": "REFUSED",
|
||||
"null_ip": "Null IP",
|
||||
"custom_ip": "Custom IP",
|
||||
"blocking_ipv4": "Blocking IPv4",
|
||||
"blocking_ipv6": "Blocking IPv6",
|
||||
"dnscrypt": "DNSCrypt",
|
||||
"dns_over_https": "DNS-over-HTTPS",
|
||||
"dns_over_tls": "DNS-over-TLS",
|
||||
"dns_over_quic": "DNS-over-QUIC",
|
||||
"client_id": "Client ID",
|
||||
"client_id_placeholder": "Enter client ID",
|
||||
"client_id_desc": "Different clients can be identified by a special client ID. <a>Here</a> you can learn more about how to identify clients.",
|
||||
"download_mobileconfig_doh": "Download .mobileconfig for DNS-over-HTTPS",
|
||||
"download_mobileconfig_dot": "Download .mobileconfig for DNS-over-TLS",
|
||||
"download_mobileconfig": "Download configuration file",
|
||||
"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)",
|
||||
"rate_limit_desc": "The number of requests per second that a single client is allowed to make (setting it to 0 means 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_default": "Default: Respond with zero IP address (0.0.0.0 for A; :: for AAAA) when blocked by Adblock-style rule; respond with the IP address specified in the rule when blocked by /etc/hosts-style rule",
|
||||
"blocking_mode_refused": "REFUSED: Respond with REFUSED code",
|
||||
"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",
|
||||
@@ -253,7 +276,7 @@
|
||||
"source_label": "Source",
|
||||
"found_in_known_domain_db": "Found in the known domains database.",
|
||||
"category_label": "Category",
|
||||
"rule_label": "Rule",
|
||||
"rule_label": "Rule(s)",
|
||||
"list_label": "List",
|
||||
"unknown_filter": "Unknown filter {{filterId}}",
|
||||
"known_tracker": "Known tracker",
|
||||
@@ -314,13 +337,15 @@
|
||||
"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_server_desc": "In order to use HTTPS, you need to enter the server name that matches your SSL certificate or wildcard certificate. If the field is not set, it will accept TLS connections for any domain.",
|
||||
"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_doq": "DNS-over-QUIC port",
|
||||
"encryption_doq_desc": "If this port is configured, AdGuard Home will run a DNS-over-QUIC server on this port. It's experimental and may not be reliable. Also, there are not too many clients that support it at the moment.",
|
||||
"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.",
|
||||
@@ -354,7 +379,7 @@
|
||||
"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.",
|
||||
"update_failed": "Auto-update failed. Please <a>follow these 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",
|
||||
@@ -368,7 +393,7 @@
|
||||
"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>",
|
||||
"client_identifier_desc": "Clients can be identified by the IP address, CIDR, MAC address or a special client ID (can be used for DoT/DoH/DoQ). <0>Here</0> you can learn more about how to identify clients.",
|
||||
"form_enter_ip": "Enter IP",
|
||||
"form_enter_mac": "Enter MAC",
|
||||
"form_enter_id": "Enter identifier",
|
||||
@@ -399,7 +424,8 @@
|
||||
"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_3": "<0>Here's a list of software you can use.</0>",
|
||||
"setup_dns_privacy_4": "On an iOS 14 or macOS Big Sur device you can download special '.mobileconfig' file that adds <highlight>DNS-over-HTTPS</highlight> or <highlight>DNS-over-TLS</highlight> servers to the DNS settings.",
|
||||
"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.",
|
||||
@@ -411,6 +437,7 @@
|
||||
"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_privacy_ioc_mac": "iOS and macOS configuration",
|
||||
"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",
|
||||
@@ -510,8 +537,8 @@
|
||||
"check_ip": "IP addresses: {{ip}}",
|
||||
"check_cname": "CNAME: {{cname}}",
|
||||
"check_reason": "Reason: {{reason}}",
|
||||
"check_rule": "Rule: {{rule}}",
|
||||
"check_service": "Service name: {{service}}",
|
||||
"service_name": "Service name",
|
||||
"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}}\"?",
|
||||
@@ -546,13 +573,12 @@
|
||||
"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}}",
|
||||
"enter_cache_size": "Enter cache size (bytes)",
|
||||
"enter_cache_ttl_min_override": "Enter minimum TTL (seconds)",
|
||||
"enter_cache_ttl_max_override": "Enter maximum TTL (seconds)",
|
||||
"cache_ttl_min_override_desc": "Extend short time-to-live values (seconds) received from the upstream server when caching DNS responses",
|
||||
"cache_ttl_max_override_desc": "Set a maximum time-to-live value (seconds) for entries in the DNS cache",
|
||||
"ttl_cache_validation": "Minimum cache TTL value must be less than or equal to the maximum value",
|
||||
"filter_category_general": "General",
|
||||
"filter_category_security": "Security",
|
||||
"filter_category_regional": "Regional",
|
||||
@@ -561,7 +587,11 @@
|
||||
"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",
|
||||
"setup_config_to_enable_dhcp_server": "Setup config to enable DHCP server",
|
||||
"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."
|
||||
"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.",
|
||||
"adg_will_drop_dns_queries": "AdGuard Home will be dropping all DNS queries from this client.",
|
||||
"client_not_in_allowed_clients": "The client is not allowed because it is not in the \"Allowed clients\" list.",
|
||||
"experimental": "Experimental"
|
||||
}
|
||||
@@ -1,16 +1,19 @@
|
||||
{
|
||||
"client_settings": "Configuración de clientes",
|
||||
"example_upstream_reserved": "puedes especificar el DNS de subida <0>para un dominio específico</0>",
|
||||
"example_upstream_comment": "puedes especificar el comentario",
|
||||
"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.",
|
||||
"bootstrap_dns_desc": "Los servidores DNS de arranque se utilizan para resolver las direcciones IP de los resolutores DoH/DoT que especifiques 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",
|
||||
"unavailable_dhcp": "DHCP no disponible",
|
||||
"unavailable_dhcp_desc": "AdGuard Home no puede ejecutar un servidor DHCP en tu SO",
|
||||
"dhcp_title": "Servidor DHCP (experimental)",
|
||||
"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",
|
||||
@@ -21,14 +24,18 @@
|
||||
"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",
|
||||
"dhcp_ipv4_settings": "Configuración DHCP IPv4",
|
||||
"dhcp_ipv6_settings": "Configuración DHCP IPv6",
|
||||
"form_error_required": "Campo obligatorio",
|
||||
"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_server_name": "Nombre de servidor no válido",
|
||||
"form_error_positive": "Debe ser mayor que 0",
|
||||
"form_error_negative": "Debe ser igual o mayor que 0",
|
||||
"range_end_error": "Debe ser mayor que el inicio de rango",
|
||||
"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",
|
||||
@@ -44,7 +51,7 @@
|
||||
"dhcp_table_expires": "Expira",
|
||||
"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_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 establece 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",
|
||||
@@ -109,7 +116,7 @@
|
||||
"average_processing_time": "Tiempo promedio de procesamiento",
|
||||
"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": "Puedes configurar las reglas de bloqueo en la configuración de <a href='#filters'>filtros</a>.",
|
||||
"filters_block_toggle_hint": "Puedes configurar las reglas de bloqueo en la configuración de <a>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",
|
||||
@@ -127,7 +134,8 @@
|
||||
"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.",
|
||||
"upstream_dns_help": "Ingresa las direcciones de los servidores una por línea. <a>Más información</a> sobre la configuración de los servidores DNS de subida.",
|
||||
"upstream_dns_configured_in_file": "Configurado en {{path}}",
|
||||
"test_upstream_btn": "Probar DNS de subida",
|
||||
"upstreams": "DNS de subida",
|
||||
"apply_btn": "Aplicar",
|
||||
@@ -181,6 +189,7 @@
|
||||
"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_doq": "cifrado <0>DNS mediante QUIC</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",
|
||||
@@ -189,6 +198,10 @@
|
||||
"dns_test_not_ok_toast": "Servidor \"{{key}}\": no se puede utilizar, por favor revisa si lo has escrito correctamente",
|
||||
"unblock": "Desbloquear",
|
||||
"block": "Bloquear",
|
||||
"disallow_this_client": "No permitir a este cliente",
|
||||
"allow_this_client": "Permitir a este cliente",
|
||||
"block_for_this_client_only": "Bloquear solo para este cliente",
|
||||
"unblock_for_this_client_only": "Desbloquear solo para este cliente",
|
||||
"time_table_header": "Hora",
|
||||
"date": "Fecha",
|
||||
"domain_name_table_header": "Nombre del dominio",
|
||||
@@ -208,8 +221,8 @@
|
||||
"page_table_footer_text": "Página",
|
||||
"rows_table_footer_text": "filas",
|
||||
"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",
|
||||
"rule_removed_from_custom_filtering_toast": "Regla eliminada de las reglas de filtrado personalizado: {{rule}}",
|
||||
"rule_added_to_custom_filtering_toast": "Regla añadida a las reglas de filtrado personalizado: {{rule}}",
|
||||
"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?",
|
||||
@@ -230,21 +243,31 @@
|
||||
"blocking_mode": "Modo de bloqueo",
|
||||
"default": "Predeterminado",
|
||||
"nxdomain": "NXDOMAIN",
|
||||
"refused": "REFUSED",
|
||||
"null_ip": "IP nulo",
|
||||
"custom_ip": "IP personalizada",
|
||||
"blocking_ipv4": "Bloqueo de IPv4",
|
||||
"blocking_ipv6": "Bloqueo de IPv6",
|
||||
"dnscrypt": "DNSCrypt",
|
||||
"dns_over_https": "DNS mediante HTTPS",
|
||||
"dns_over_tls": "DNS mediante TLS",
|
||||
"dns_over_quic": "DNS mediante QUIC",
|
||||
"client_id": "ID de cliente",
|
||||
"client_id_placeholder": "Ingresa el ID del cliente",
|
||||
"client_id_desc": "Diferentes clientes pueden ser identificados por un ID de cliente especial. <a>Aquí</a> puedes obtener más información sobre cómo identificar clientes.",
|
||||
"download_mobileconfig_doh": "Descargar .mobileconfig para DNS mediante HTTPS",
|
||||
"download_mobileconfig_dot": "Descargar .mobileconfig para DNS mediante TLS",
|
||||
"download_mobileconfig": "Descargar archivo de configuración",
|
||||
"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)",
|
||||
"rate_limit_desc": "Número de peticiones por segundo que un solo cliente puede hacer (establecerlo en 0 significa 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_default": "Predeterminado: Responde con dirección IP cero (0.0.0.0 para A; :: para AAAA) 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_refused": "REFUSED: Responde con el código REFUSED",
|
||||
"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",
|
||||
@@ -278,7 +301,7 @@
|
||||
"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_submit_desc": "El proceso de configuración ha finalizado y estás 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",
|
||||
@@ -314,13 +337,15 @@
|
||||
"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_server_desc": "Para utilizar HTTPS, debes ingresar el nombre del servidor que coincida con tu certificado SSL o certificado comodín. Si el campo no está establecido, el servidor aceptará conexiones TLS para cualquier dominio.",
|
||||
"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_doq": "Puerto DNS mediante QUIC",
|
||||
"encryption_doq_desc": "Si este puerto está configurado, AdGuard Home ejecutará un servidor DNS mediante QUIC en este puerto. Es experimental y puede no ser confiable. Además, no hay muchos clientes que lo soporten por el momento.",
|
||||
"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.",
|
||||
@@ -338,14 +363,14 @@
|
||||
"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>.",
|
||||
"topline_expiring_certificate": "Tu certificado SSL está a punto de expirar. Actualiza la <0>configuración de cifrado</0>.",
|
||||
"topline_expired_certificate": "Tu certificado SSL ha expirado. Actualiza 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.",
|
||||
"update_announcement": "¡AdGuard Home {{version}} ya está disponible! <0>Haz 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",
|
||||
@@ -354,7 +379,7 @@
|
||||
"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.",
|
||||
"update_failed": "Error en la actualización automática. Por favor <a>sigue estos 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",
|
||||
@@ -368,7 +393,7 @@
|
||||
"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>",
|
||||
"client_identifier_desc": "Los clientes pueden ser identificados por la dirección IP, MAC, CIDR o un ID de cliente especial (puede ser utilizado para DoT/DoH/DoQ). <0>Aquí</0> puedes obtener más información sobre cómo identificar clientes.",
|
||||
"form_enter_ip": "Ingresa la IP",
|
||||
"form_enter_mac": "Ingresa la MAC",
|
||||
"form_enter_id": "Ingresa el identificador",
|
||||
@@ -397,9 +422,10 @@
|
||||
"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_1": "<0>DNS mediante TLS:</0> Utiliza la cadena <1>{{address}}</1>.",
|
||||
"setup_dns_privacy_2": "<0>DNS mediante HTTPS:</0> Utiliza la cadena <1>{{address}}</1>.",
|
||||
"setup_dns_privacy_3": "<0>Aquí hay una lista de software que puedes usar.</0>",
|
||||
"setup_dns_privacy_4": "En un dispositivo iOS 14 o macOS Big Sur puedes descargar el archivo especial '.mobileconfig' que añade servidores <highlight>DNS mediante HTTPS</highlight> o <highlight>DNS mediante TLS</highlight> a la configuración del DNS.",
|
||||
"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>.",
|
||||
@@ -410,7 +436,8 @@
|
||||
"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_privacy_other_5": "Encontrarás más implementaciones <0>aquí</0> y <1>aquí</1>.",
|
||||
"setup_dns_privacy_ioc_mac": "Configuración de iOS y macOS",
|
||||
"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",
|
||||
@@ -453,7 +480,7 @@
|
||||
"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_retention_desc": "Si disminuye el valor del intervalo, se perderán algunos datos",
|
||||
"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",
|
||||
@@ -490,7 +517,7 @@
|
||||
"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).",
|
||||
"disable_ipv6_desc": "Si esta función está habilitada, se descartará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.",
|
||||
@@ -510,8 +537,8 @@
|
||||
"check_ip": "Direcciones IP: {{ip}}",
|
||||
"check_cname": "CNAME: {{cname}}",
|
||||
"check_reason": "Razón: {{reason}}",
|
||||
"check_rule": "Regla: {{rule}}",
|
||||
"check_service": "Nombre del servicio: {{service}}",
|
||||
"service_name": "Nombre del servicio",
|
||||
"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}}\"?",
|
||||
@@ -546,13 +573,12 @@
|
||||
"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}}",
|
||||
"enter_cache_size": "Ingresa el tamaño de la caché (bytes)",
|
||||
"enter_cache_ttl_min_override": "Ingresa el TTL mínimo (en segundos)",
|
||||
"enter_cache_ttl_max_override": "Ingresa el TTL máximo (en segundos)",
|
||||
"cache_ttl_min_override_desc": "Amplia el corto tiempo de vida de los valores recibidos del servidor DNS de subida al almacenar en caché las respuestas DNS",
|
||||
"cache_ttl_max_override_desc": "Establece un valor de tiempo de vida máximo para las entradas en la caché DNS",
|
||||
"ttl_cache_validation": "El valor TTL mínimo de la caché debe ser menor o igual al valor máximo",
|
||||
"filter_category_general": "General",
|
||||
"filter_category_security": "Seguridad",
|
||||
"filter_category_regional": "Regional",
|
||||
@@ -561,7 +587,11 @@
|
||||
"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",
|
||||
"setup_config_to_enable_dhcp_server": "Configuración para habilitar el servidor DHCP",
|
||||
"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."
|
||||
"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.",
|
||||
"adg_will_drop_dns_queries": "AdGuard Home descartará todas las consultas DNS de este cliente.",
|
||||
"client_not_in_allowed_clients": "El cliente no está permitido porque no está en la lista de \"Clientes permitidos\".",
|
||||
"experimental": "experimental"
|
||||
}
|
||||
@@ -106,7 +106,7 @@
|
||||
"average_processing_time": "میانگین زمان پردازش",
|
||||
"average_processing_time_hint": "زمان میانگین بر هزارم ثانیه در پردازش درخواست DNS",
|
||||
"block_domain_use_filters_and_hosts": "مسدودسازی دامنه ها توسط فیلترها و فایل های میزبان",
|
||||
"filters_block_toggle_hint": "میتوانید دستورات مسدودسازی را در تنظیمات <a href='#filters'>فیلترها</a> راه اندازی کنید.",
|
||||
"filters_block_toggle_hint": "میتوانید دستورات مسدودسازی را در تنظیمات <a>فیلترها</a> راه اندازی کنید.",
|
||||
"use_adguard_browsing_sec": "استفاده از سرویس وب امنیت وب گردی AdGuard",
|
||||
"use_adguard_browsing_sec_hint": "AdGuard Home بررسی می کند اگر دامنه در سرویس وب امنیت وب گردی در لیست سیاه است.آن از اِی پی آی دارای حریم خصوصی برای بررسی استفاده می کند:فقط پیشوند کوتاه نام دامنه هش SHA256 به سرور ارسال خواهد شد.",
|
||||
"use_adguard_parental": "از سرویس وب نظارت والدین AdGuard استفاده کن",
|
||||
@@ -124,7 +124,6 @@
|
||||
"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": "اِعمال",
|
||||
@@ -202,8 +201,8 @@
|
||||
"page_table_footer_text": "صفحه",
|
||||
"rows_table_footer_text": "سطر",
|
||||
"updated_custom_filtering_toast": "دستورات فیلترینگ دستی بروز رسانی شده است",
|
||||
"rule_removed_from_custom_filtering_toast": "دستور از دستورات فیلترینگ دستی حذف شد",
|
||||
"rule_added_to_custom_filtering_toast": "دستور به دستورات فیلترینگ دستی اضافه شد",
|
||||
"rule_removed_from_custom_filtering_toast": "دستور از دستورات فیلترینگ دستی حذف شد {{rule}}",
|
||||
"rule_added_to_custom_filtering_toast": "دستور به دستورات فیلترینگ دستی اضافه شد {{rule}}",
|
||||
"query_log_response_status": "وضعیت: {{value}}",
|
||||
"query_log_filtered": "فیلتر شده با {{filter}}",
|
||||
"query_log_confirm_clear": "آیا واقعا میخواهید کل وقایع جستار را پاک کنید؟",
|
||||
@@ -231,10 +230,8 @@
|
||||
"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": "آی پی دستی: پاسخ با آدرس آی پی دستی تنظیم شده",
|
||||
@@ -242,7 +239,6 @@
|
||||
"source_label": "منبع",
|
||||
"found_in_known_domain_db": "در پایگاه داده دامنه های شناخته شده پیدا شد",
|
||||
"category_label": "دسته بندی",
|
||||
"rule_label": "دستور",
|
||||
"list_label": "لیست",
|
||||
"unknown_filter": "فیلتر ناشناخته {{filterId}}",
|
||||
"known_tracker": "ردیاب های شناخته شده",
|
||||
@@ -303,7 +299,6 @@
|
||||
"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",
|
||||
@@ -357,7 +352,6 @@
|
||||
"client_edit": "ویرایش کلاینت",
|
||||
"client_identifier": "احراز با",
|
||||
"ip_address": "آدرس آی پی",
|
||||
"client_identifier_desc": "کلاینت میتواند با آدرس آی پی یا آدرس مَک احراز شود. لطفا توجه کنید،که استفاده از مَک بعنوان عامل احراز زمانی امکان دارد که AdGuard Home نیز <0>سرور DHCP </0> باشد",
|
||||
"form_enter_ip": "آی پی را وارد کنید",
|
||||
"form_enter_mac": "مَک را وارد کنید",
|
||||
"form_enter_id": "خطای احرازکننده",
|
||||
@@ -388,7 +382,6 @@
|
||||
"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> را به آندروئید اضافه می کند.",
|
||||
@@ -491,7 +484,6 @@
|
||||
"check_ip": "آدرس آی پی: {{ip}}",
|
||||
"check_cname": "CNAME: {{cname}}",
|
||||
"check_reason": "علت: {{reason}}",
|
||||
"check_rule": "دستور: {{rule}}",
|
||||
"check_service": "نام سرویس: {{service}}",
|
||||
"check_not_found": "در لیست فیلترهای شما یافت نشد",
|
||||
"client_confirm_block": "آیا واقعا میخواهید کلاینت \"{{ip}}\" را مسدود کنید؟",
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"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>",
|
||||
"example_upstream_comment": "Vous pouvez spécifier un commentaire",
|
||||
"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",
|
||||
@@ -11,6 +12,8 @@
|
||||
"save_config": "Sauvegarder la configuration",
|
||||
"enabled_dhcp": "Serveur DHCP activé",
|
||||
"disabled_dhcp": "Serveur DHCP désactivé",
|
||||
"unavailable_dhcp": "Le DHCP n’est pas disponible",
|
||||
"unavailable_dhcp_desc": "AdGuard Home ne peut pas exécuter un serveur DHCP sur votre système d’exploitation",
|
||||
"dhcp_title": "Serveur DHCP (experimental !)",
|
||||
"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",
|
||||
@@ -19,16 +22,20 @@
|
||||
"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_static_leases": "Baux statiques DHCP",
|
||||
"dhcp_leases_not_found": "Aucune location des serveurs DHCP trouvée",
|
||||
"dhcp_leases_not_found": "Aucun bail DHCP trouvé",
|
||||
"dhcp_config_saved": "La configuration du serveur DHCP est sauvegardée",
|
||||
"dhcp_ipv4_settings": "Paramètres IPv4 du DHCP",
|
||||
"dhcp_ipv6_settings": "Paramètres IPv6 du DHCP",
|
||||
"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_mac_format": "Format MAC invalide",
|
||||
"form_error_client_id_format": "Format d'ID client non valide",
|
||||
"form_error_server_name": "Nom de serveur invalide",
|
||||
"form_error_positive": "Doit être supérieur à 0",
|
||||
"form_error_negative": "Doit être égal à 0 ou supérieur",
|
||||
"range_end_error": "Doit être supérieur au début de la gamme",
|
||||
"dhcp_form_gateway_input": "IP de la passerelle",
|
||||
"dhcp_form_subnet_input": "Masque de sous-réseau",
|
||||
"dhcp_form_range_title": "Rangée des adresses IP",
|
||||
@@ -86,7 +93,7 @@
|
||||
"refresh_statics": "Renouveler les statistiques",
|
||||
"dns_query": "Requêtes DNS",
|
||||
"blocked_by": "<0>Bloqué par Filtres</0>",
|
||||
"stats_malware_phishing": "Tentative de malware/hammeçonnage bloquée",
|
||||
"stats_malware_phishing": "Tentative de malware/hameç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",
|
||||
@@ -104,12 +111,12 @@
|
||||
"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",
|
||||
"enforced_save_search": "Recherche sécurisée forcé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ê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>.",
|
||||
"filters_block_toggle_hint": "Vous pouvez configurer les règles de filtrage dans les paramètres des <a>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",
|
||||
@@ -127,7 +134,8 @@
|
||||
"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://www.quad9.net/' target='_blank'>Quad9</a> comme upstream.",
|
||||
"upstream_dns_help": "Saisissez les adresses des serveurs, une par ligne. <a>En savoir plus</a> sur la configuration des serveurs DNS en amont.",
|
||||
"upstream_dns_configured_in_file": "Configuré dans {{path}}",
|
||||
"test_upstream_btn": "Tester les upstreams",
|
||||
"upstreams": "En amont",
|
||||
"apply_btn": "Appliquer",
|
||||
@@ -171,16 +179,17 @@
|
||||
"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é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_filter_block": "bloque l’accès au domaine example.org et à tous ses sous-domaines",
|
||||
"example_meaning_filter_whitelist": "débloque l’accès au domaine example.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éscription",
|
||||
"example_comment_meaning": "commentaire",
|
||||
"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_regex_meaning": "bloque 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-over-TLS</0> chiffré",
|
||||
"example_upstream_doh": "<0>DNS-over-HTTPS</0> chiffré",
|
||||
"example_upstream_doq": "<0>DNS-over-QUIC</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_lists_up_to_date_toast": "Toutes les listes sont déjà à jour",
|
||||
@@ -189,6 +198,10 @@
|
||||
"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",
|
||||
"disallow_this_client": "Interdire ce client",
|
||||
"allow_this_client": "Autoriser ce client",
|
||||
"block_for_this_client_only": "Bloquer uniquement pour ce client",
|
||||
"unblock_for_this_client_only": "Débloquer uniquement pour ce client",
|
||||
"time_table_header": "Temps",
|
||||
"date": "Date",
|
||||
"domain_name_table_header": "Nom de domaine",
|
||||
@@ -208,8 +221,8 @@
|
||||
"page_table_footer_text": "Page",
|
||||
"rows_table_footer_text": "lignes",
|
||||
"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",
|
||||
"rule_removed_from_custom_filtering_toast": "Règle retirée des règles d'utilisateur: {{rule}}",
|
||||
"rule_added_to_custom_filtering_toast": "Règle ajoutée aux règles d'utilisateur: {{rule}}",
|
||||
"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 ?",
|
||||
@@ -230,21 +243,31 @@
|
||||
"blocking_mode": "Mode du blocage",
|
||||
"default": "Par défaut",
|
||||
"nxdomain": "NXDOMAIN",
|
||||
"refused": "REFUSED",
|
||||
"null_ip": "IP nulle",
|
||||
"custom_ip": "IP personnalisée",
|
||||
"blocking_ipv4": "Blocage IPv4",
|
||||
"blocking_ipv6": "Blocage IPv6",
|
||||
"dnscrypt": "DNSCrypt",
|
||||
"dns_over_https": "DNS-over-HTTPS",
|
||||
"dns_over_tls": "DNS-over-TLS",
|
||||
"dns_over_quic": "DNS-over-QUIC",
|
||||
"client_id": "ID du client",
|
||||
"client_id_placeholder": "Saisissez le ID du client",
|
||||
"client_id_desc": "Les clients différents peuvent être identifiés par aide d'un ID client spécial. Vous trouverez plus d'information sur l'identification des clients <a>ici</a> .",
|
||||
"download_mobileconfig_doh": "Télécharger .mobileconfig pour DNS-sur-HTTPS",
|
||||
"download_mobileconfig_dot": "Télécharger .mobileconfig pour DNS-sur-TLS",
|
||||
"download_mobileconfig": "Télécharger le fichier de configuration",
|
||||
"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 qu’un seul client est autorisé à faire (0 : illimité)",
|
||||
"rate_limit_desc": "Le nombre de requêtes par seconde qu’un seul client est autorisé à faire (le réglage 0 fait 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 l’adresse IP spécifiée dans la règle lorsque bloquée par la règle de style /etc/hosts",
|
||||
"blocking_mode_default": "Par défaut : Répondre avec adresse IP zéro (0.0.0.0 pour A; :: pour AAAA) lorsque bloqué par la règle de style Adblock; répondre avec l’adresse IP spécifiée dans la règle lorsque bloquée par la règle du style /etc/hosts",
|
||||
"blocking_mode_refused": "REFUSED: Répondre avec le code REFUSED",
|
||||
"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",
|
||||
@@ -253,7 +276,7 @@
|
||||
"source_label": "Source",
|
||||
"found_in_known_domain_db": "Trouvé dans la base de données des domaines connus",
|
||||
"category_label": "Catégorie",
|
||||
"rule_label": "Règle",
|
||||
"rule_label": "Règle(s)",
|
||||
"list_label": "Liste",
|
||||
"unknown_filter": "Filtre inconnu {{filterId}}",
|
||||
"known_tracker": "Pisteur connu",
|
||||
@@ -314,13 +337,15 @@
|
||||
"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_server_desc": "Pour utiliser HTTPS, vous devez saisir le nom du serveur qui correspond à votre certificat SSL ou wildcard. Si le champ n'est pas configuré, les connexions TLS pour tous les domaines seront acceptées.",
|
||||
"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_doq": "Port DNS sur QUIC",
|
||||
"encryption_doq_desc": "Si ce port est configuré, AdGuard Home exécutera un serveur DNS sur QUIC sur ce port. Ceci est expérimental et possiblement pas entièrement fiable. Peu de clients le prennent en charge actuellement.",
|
||||
"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.",
|
||||
@@ -368,7 +393,7 @@
|
||||
"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>",
|
||||
"client_identifier_desc": "Les clients peuvent être identifiés par les adresses IP, CIDR, MAC ou un ID client spécial (qui peut être utilisé pour DoT/DoH/DoQ). Vous trouverez plus d'information sur l'identification des clients <0>ici</0> .",
|
||||
"form_enter_ip": "Saisissez l'IP",
|
||||
"form_enter_mac": "Saisissez MAC",
|
||||
"form_enter_id": "Entrer identifiant",
|
||||
@@ -399,7 +424,8 @@
|
||||
"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_3": "<0>Voici une liste de logiciels que vous pouvez utiliser.</0>",
|
||||
"setup_dns_privacy_4": "Si vous utilisez un appareil sur iOS 14 ou macOS Big Sur, vous pouvez télécharger un fichier spécial '.mobileconfig' pour ajouter les serveurs <highlight>DNS-sur-HTTPS</highlight> ou <highlight>DNS-sur-TLS</highlight> aux configurations DNS.",
|
||||
"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.",
|
||||
@@ -411,7 +437,8 @@
|
||||
"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.",
|
||||
"setup_dns_privacy_ioc_mac": "Configuration sur iOS et macOS",
|
||||
"setup_dns_notice": "Pour utiliser le <1>DNS-over-HTTPS</1> ou le <1>DNS-over-TLS</1>, vous devez <0>configurer le Chiffrement</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",
|
||||
@@ -480,6 +507,7 @@
|
||||
"whois": "Whois",
|
||||
"filtering_rules_learn_more": "<0>Apprenez-en plus</0> à propos de la création de vos propres listes de blocage d’hôtes.",
|
||||
"blocked_by_response": "Bloqué par un CNAME ou une réponse IP",
|
||||
"blocked_by_cname_or_ip": "Bloqué par CNAME ou adresse 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.",
|
||||
@@ -509,8 +537,8 @@
|
||||
"check_ip": "Adresses IP : {{ip}}",
|
||||
"check_cname": "CNAME : {{cname}}",
|
||||
"check_reason": "Raison : {{reason}}",
|
||||
"check_rule": "Règle : {{rule}}",
|
||||
"check_service": "Nom du service : {{service}}",
|
||||
"service_name": "Nom du 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}} »?",
|
||||
@@ -528,6 +556,7 @@
|
||||
"dnssec_enable": "Activer DNSSEC",
|
||||
"dnssec_enable_desc": "Définir l’indicateur DNSSEC dans les requêtes DNS sortantes et vérifier le résultat (résolveur compatible DNSSEC requis)",
|
||||
"validated_with_dnssec": "Validé avec DNSSEC",
|
||||
"all_queries": "Toutes les requêtes",
|
||||
"show_blocked_responses": "Bloqué",
|
||||
"show_whitelisted_responses": "Ajouté à la liste blanche",
|
||||
"show_processed_responses": "Traité",
|
||||
@@ -544,13 +573,12 @@
|
||||
"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}}",
|
||||
"enter_cache_size": "Entrer la taille du cache (octets)",
|
||||
"enter_cache_ttl_min_override": "Entrez le TTL minimum (secondes)",
|
||||
"enter_cache_ttl_max_override": "Entrez le TTL maximum (secondes)",
|
||||
"cache_ttl_min_override_desc": "Prolonger les valeurs courtes de durée de vie (en secondes) reçues du serveur en amont lors de la mise en cache des réponses DNS",
|
||||
"cache_ttl_max_override_desc": "Établir la valeur de durée de vie TTL maximale (en secondes) pour les saisies dans le cache du DNS",
|
||||
"ttl_cache_validation": "La valeur TTL minimale du cache doit être inférieure ou égale à la valeur maximale",
|
||||
"filter_category_general": "Général",
|
||||
"filter_category_security": "Sécurité",
|
||||
"filter_category_regional": "Régional",
|
||||
@@ -559,6 +587,11 @@
|
||||
"filter_category_security_desc": "Listes spécialisées dans le blocage de logiciels malveillants, d’hameç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",
|
||||
"setup_config_to_enable_dhcp_server": "Configurer les paramètres pour activer le serveur DHCP",
|
||||
"original_response": "Réponse originale",
|
||||
"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."
|
||||
"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.",
|
||||
"adg_will_drop_dns_queries": "AdGuard Home ignorera toutes les requêtes DNS de ce client.",
|
||||
"client_not_in_allowed_clients": "Le client n’est pas autorisé car il ne figure pas dans la liste « Clients autorisés ».",
|
||||
"experimental": "Expérimental"
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"client_settings": "Postavke klijenta",
|
||||
"example_upstream_reserved": "VI možete odrediti DNS upstream-ove <0>za određene domene</0>",
|
||||
"example_upstream_comment": "Možete odrediti komentar",
|
||||
"upstream_parallel": "Koristi paralelne upite kako bi ubrzali rješavanje istovremenim ispitavanjem svih upstream poslužitelja",
|
||||
"parallel_requests": "Paralelni zahtjevi",
|
||||
"load_balancing": "Load-balancing",
|
||||
@@ -11,6 +12,8 @@
|
||||
"save_config": "Spremi konfiguraciju",
|
||||
"enabled_dhcp": "DHCP poslužitelj je omogućen",
|
||||
"disabled_dhcp": "DHCP poslužitelj je onemogućen",
|
||||
"unavailable_dhcp": "DHCP je nedostupan",
|
||||
"unavailable_dhcp_desc": "AdGuard Home ne može pokrenuti DHCP poslužitelj na vašem OS-u",
|
||||
"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",
|
||||
@@ -21,14 +24,18 @@
|
||||
"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",
|
||||
"dhcp_ipv4_settings": "DHCP IPv4 postavke",
|
||||
"dhcp_ipv6_settings": "DHCP IPv6 postavke",
|
||||
"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_server_name": "Nevažeće ime poslužitelja",
|
||||
"form_error_positive": "Mora biti veće od 0",
|
||||
"form_error_negative": "Mora biti jednako ili veće od 0",
|
||||
"range_end_error": "Mora biti veće od početne vrijednosti raspona",
|
||||
"dhcp_form_gateway_input": "Gateway IP",
|
||||
"dhcp_form_subnet_input": "Subnet maskiranje",
|
||||
"dhcp_form_range_title": "Raspon IP adresa",
|
||||
@@ -101,7 +108,7 @@
|
||||
"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": "Broj DNS zahtjeva koji su blokirani od strane filtara za blokiranje oglasa i lista nedopuštenih 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",
|
||||
@@ -109,9 +116,9 @@
|
||||
"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>.",
|
||||
"filters_block_toggle_hint": "Pravila blokiranja možete postaviti u postavkama <a>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 od naziva domene se šalje poslužitelju.",
|
||||
"use_adguard_browsing_sec_hint": "AdGuard Home će provjeriti nalazi li se domena na popisu nedopuštenih 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 od naziva 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",
|
||||
@@ -119,15 +126,16 @@
|
||||
"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.",
|
||||
"dns_blocklists": "DNS popisi nedopuštenih",
|
||||
"dns_allowlists": "DNS popisi dopuštenih",
|
||||
"dns_blocklists_desc": "AdGuard Home će blokirati domene koje odgovaraju popisu nedopuštenih.",
|
||||
"dns_allowlists_desc": "Domene iz DNS popisa dopuštenih će biti omogućene čak i kada se nalaze na nekoj listi nedopuštenih.",
|
||||
"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.",
|
||||
"upstream_dns_help": "Unesite adrese poslužitelja po jednu u retku. <a>Saznajte više</a> o postavljanju uzlaznih DNS poslužitelja.",
|
||||
"upstream_dns_configured_in_file": "Postavljeno u {{path}}",
|
||||
"test_upstream_btn": "Testiraj upstream-ove",
|
||||
"upstreams": "Upstreams",
|
||||
"apply_btn": "Primijeni",
|
||||
@@ -150,22 +158,22 @@
|
||||
"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",
|
||||
"no_blocklist_added": "Nema dodanih popisa nedopuštenih",
|
||||
"no_whitelist_added": "Nema dodanih popisa dopuštenih",
|
||||
"add_blocklist": "Dodaj popis nedopuštenih",
|
||||
"add_allowlist": "Dodaj popis dopuštenih",
|
||||
"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",
|
||||
"new_blocklist": "Novi popis nedopuštenih",
|
||||
"new_allowlist": "Novi popis dopuštenih",
|
||||
"edit_blocklist": "Uredi popis nedopuštenih",
|
||||
"edit_allowlist": "Uredi popis dopuštenih",
|
||||
"choose_blocklist": "Odaberite popis nedopuštenih",
|
||||
"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.",
|
||||
"enter_valid_blocklist": "Unesite valjani URL za popis nedopuštenih.",
|
||||
"enter_valid_allowlist": "Unesite valjani URL za popis dopuštenih.",
|
||||
"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",
|
||||
@@ -181,6 +189,7 @@
|
||||
"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_doq": "šifrirano <0>DNS-over-QUIC</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",
|
||||
@@ -189,6 +198,10 @@
|
||||
"dns_test_not_ok_toast": "\"{{key}}\" poslužitelja: ne može se upotrijebiti, provjerite jeste li to ispravno napisali",
|
||||
"unblock": "Odblokiraj",
|
||||
"block": "Blokiraj",
|
||||
"disallow_this_client": "Onemogući ovog klijenta",
|
||||
"allow_this_client": "Omogući ovog klijenta",
|
||||
"block_for_this_client_only": "Blokiraj samo za ovog klijenta",
|
||||
"unblock_for_this_client_only": "Odblokiraj samo za ovog klijenta",
|
||||
"time_table_header": "Vrijeme",
|
||||
"date": "Datum",
|
||||
"domain_name_table_header": "Naziv domene",
|
||||
@@ -208,8 +221,8 @@
|
||||
"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",
|
||||
"rule_removed_from_custom_filtering_toast": "Pravilo je uklonjeno iz prilagođenih pravila filtriranja: {{rule}}",
|
||||
"rule_added_to_custom_filtering_toast": "Pravilo je dodano u prilagođena pravila filtriranja: {{rule}}",
|
||||
"query_log_response_status": "Status: {{value}}",
|
||||
"query_log_filtered": "Filtrirao {{filter}}",
|
||||
"query_log_confirm_clear": "Jeste li sigurni da želite ukloniti zapise upita?",
|
||||
@@ -230,21 +243,31 @@
|
||||
"blocking_mode": "Način blokiranja",
|
||||
"default": "Zadano",
|
||||
"nxdomain": "NXDOMAIN",
|
||||
"refused": "REFUSED",
|
||||
"null_ip": "Null IP",
|
||||
"custom_ip": "Prilagođen IP",
|
||||
"blocking_ipv4": "Blokiranje IPv4",
|
||||
"blocking_ipv6": "Blokiranje IPv6",
|
||||
"dnscrypt": "DNSCrypt",
|
||||
"dns_over_https": "DNS-over-HTTPS",
|
||||
"dns_over_tls": "DNS-over-TLS",
|
||||
"dns_over_quic": "DNS-over-Quic",
|
||||
"client_id": "ID klijenta",
|
||||
"client_id_placeholder": "Unesite ID klijenta",
|
||||
"client_id_desc": "Razni klijenti mogu biti prepoznati po specijalnom identifikatoru. <a>Ovdje</a> možete saznati više kako možete identificirati klijente.",
|
||||
"download_mobileconfig_doh": "Preuzmi .mobileconfig za DNS-over-HTTPS",
|
||||
"download_mobileconfig_dot": "Preuzmi .mobileconfig za DNS-over-TLS",
|
||||
"download_mobileconfig": "Preuzmite konfiguracijsku datoteku",
|
||||
"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)",
|
||||
"rate_limit_desc": "Broj zahtjeva u sekundi koji su dopušteni po jednom klijentu (postavljanje na 0 znači 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_default": "Zadano: Odgovori s nultom IP adresom (0.0.0.0 za A; :: za AAAA) kada ga blokira Adblock slično pravilo; odgovorite s IP adresom definiranom u pravilu kada je blokirano od /etc/hosts sličnog pravila",
|
||||
"blocking_mode_refused": "REFUSED: Odgovorite s REFUSED kôdom",
|
||||
"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",
|
||||
@@ -321,6 +344,8 @@
|
||||
"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_doq": "DNS-over-QUIC port",
|
||||
"encryption_doq_desc": "Ako je ovaj port postavljen, AdGuard Home će na ovom portu pokrenuti DNS-over-QUIC poslužitelj. Eksperimentalno je i možda nije pouzdano. Također, trenutno nema previše klijenata koji to podržavaju.",
|
||||
"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.",
|
||||
@@ -354,7 +379,7 @@
|
||||
"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.",
|
||||
"update_failed": "Neuspješno automatsko ažuriranje. Molimo <a>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",
|
||||
@@ -399,7 +424,8 @@
|
||||
"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_3": "<0>Evo popisa programa koje možete koristiti.</0>",
|
||||
"setup_dns_privacy_4": "Na iOS 14 ili macOS Big Sur uređaju možete preuzeti posebnu datoteku '.mobileconfig' koja dodaje <highlight>DNS-over-HTTPS</highlight> ili <highlight>DNS-over-TLS</highlight> poslužitelje u postavke DNS-a.",
|
||||
"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.",
|
||||
@@ -411,6 +437,7 @@
|
||||
"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_privacy_ioc_mac": "konfiguracija za iOS i macOS",
|
||||
"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",
|
||||
@@ -510,8 +537,8 @@
|
||||
"check_ip": "IP adrese: {{ip}}",
|
||||
"check_cname": "CNAME: {{cname}}",
|
||||
"check_reason": "Razlog: {{reason}}",
|
||||
"check_rule": "Pravilo: {{rule}}",
|
||||
"check_service": "Naziv usluge: {{service}}",
|
||||
"service_name": "Naziv usluge",
|
||||
"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?",
|
||||
@@ -540,19 +567,18 @@
|
||||
"filtered": "Filtrirano",
|
||||
"rewritten": "Prepisano",
|
||||
"safe_search": "Sigurno pretraživanje",
|
||||
"blocklist": "Popis neželjenih",
|
||||
"blocklist": "Popis nedopuštenih",
|
||||
"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}}",
|
||||
"cache_ttl_min_override": "Nadjačaj minimum TTL-a",
|
||||
"cache_ttl_max_override": "Nadjačaj maksimum TTL-a",
|
||||
"enter_cache_size": "Unesite veličinu predmemorije (u bajtovima)",
|
||||
"enter_cache_ttl_min_override": "Unesite minimalni TTL (u sekundama)",
|
||||
"enter_cache_ttl_max_override": "Unesite maksimalni TTL (u sekundama)",
|
||||
"cache_ttl_min_override_desc": "Povećajte kratke vrijednosti TTL-a (u sekundama) primljene od upstream poslužitelja prilikom predmemoriranja DNS odgovora",
|
||||
"cache_ttl_max_override_desc": "Postavite maksimalnu vrijednost TTL-a (u sekundama) za zapise u DNS predmemoriju",
|
||||
"ttl_cache_validation": "Minimalna vrijednost TTL predmemorije mora biti manja ili jednaka maksimalnoj vrijednosti",
|
||||
"filter_category_general": "Općenito",
|
||||
"filter_category_security": "Sigurnost",
|
||||
"filter_category_regional": "Regionalno",
|
||||
@@ -560,8 +586,12 @@
|
||||
"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",
|
||||
"filter_category_other_desc": "Ostali popisi nedopuštenih",
|
||||
"setup_config_to_enable_dhcp_server": "Postavite postavke za omogućavanje DHCP poslužitelja",
|
||||
"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."
|
||||
"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.",
|
||||
"adg_will_drop_dns_queries": "AdGuard Home odbaciti će sve DNS upite od ovog klijenta.",
|
||||
"client_not_in_allowed_clients": "Klijent nije dopušten jer nije na popisu \"Dopuštenih klijenata\".",
|
||||
"experimental": "Eksperimentalno"
|
||||
}
|
||||
586
client/src/__locales/hu.json
Normal file
586
client/src/__locales/hu.json
Normal file
@@ -0,0 +1,586 @@
|
||||
{
|
||||
"client_settings": "Kliens beállítások",
|
||||
"example_upstream_reserved": "Megadhat egy DNS kiszolgálót <0>egy adott domainhez vagy domainekhez</0>",
|
||||
"example_upstream_comment": "Megadhat egy megjegyzést",
|
||||
"upstream_parallel": "Használjon párhuzamos lekéréseket a domainek feloldásának felgyorsításához az összes upstream kiszolgálóra való egyidejű lekérdezéssel",
|
||||
"parallel_requests": "Párhuzamos lekérések",
|
||||
"load_balancing": "Terheléselosztás",
|
||||
"load_balancing_desc": "Egyszerre csak egy szerverről történjen lekérdezés. Az AdGuard Home egy súlyozott, véletlenszerű algoritmust fog használni a megfelelő szerver kiválasztására, így a leggyorsabb szervert gyakrabban fogja használni.",
|
||||
"bootstrap_dns": "Bootstrap DNS kiszolgálók",
|
||||
"bootstrap_dns_desc": "A Bootstrap DNS szerverek a DoH/DoT feloldók IP-címeinek feloldására szolgálnak.",
|
||||
"check_dhcp_servers": "DHCP szerverek keresése",
|
||||
"save_config": "Konfiguráció mentése",
|
||||
"enabled_dhcp": "DHCP szerver engedélyezve",
|
||||
"disabled_dhcp": "DHCP szerver letiltva",
|
||||
"unavailable_dhcp": "A DHCP nem elérhető",
|
||||
"unavailable_dhcp_desc": "Az AdGuard Home nem tud DHCP szervert futtatni az operációs rendszerén",
|
||||
"dhcp_title": "DHCP szerver (kísérleti!)",
|
||||
"dhcp_description": "Ha a router nem nyújt DHCP beállításokat, akkor használhatja helyette az AdGuard saját, beépített DHCP szerverét.",
|
||||
"dhcp_enable": "DHCP szerver engedélyezése",
|
||||
"dhcp_disable": "DHCP szerver letiltása",
|
||||
"dhcp_not_found": "Biztonságos a beépített DHCP szerver engedélyezése - ugyanis nem találtunk aktív DHCP szervert a hálózaton. Javasoljuk azonban, hogy ellenőrizze kézileg is, mivel az automatikus tesztünk jelenleg nem ad 100%-os garanciát.",
|
||||
"dhcp_found": "Egy aktív DHCP szerver található a hálózaton. Nem biztonságos a beépített DHCP szerver engedélyezése.",
|
||||
"dhcp_leases": "DHCP bérletek",
|
||||
"dhcp_static_leases": "Statikus DHCP bérletek",
|
||||
"dhcp_leases_not_found": "Nem találhatóak DHCP bérletek",
|
||||
"dhcp_config_saved": "DHCP beállítások elmentve",
|
||||
"dhcp_ipv4_settings": "DHCP IPv4 Beállítások",
|
||||
"dhcp_ipv6_settings": "DHCP IPv6 Beállítások",
|
||||
"form_error_required": "Kötelező mező",
|
||||
"form_error_ip4_format": "Érvénytelen IPv4 formátum",
|
||||
"form_error_ip6_format": "Érvénytelen IPv6 formátum",
|
||||
"form_error_ip_format": "Érvénytelen IP formátum",
|
||||
"form_error_mac_format": "Érvénytelen MAC formátum",
|
||||
"form_error_client_id_format": "Érvénytelen kliens ID formátum",
|
||||
"form_error_positive": "0-nál nagyobbnak kell lennie",
|
||||
"form_error_negative": "Legalább 0-nak kell lennie",
|
||||
"range_end_error": "Nagyobbnak kell lennie, mint a tartomány kezdete",
|
||||
"dhcp_form_gateway_input": "Átjáró IP",
|
||||
"dhcp_form_subnet_input": "Alhálózati maszk",
|
||||
"dhcp_form_range_title": "IP-címek tartománya",
|
||||
"dhcp_form_range_start": "Tartomány kezdete",
|
||||
"dhcp_form_range_end": "Tartomány vége",
|
||||
"dhcp_form_lease_title": "DHCP bérlési ideje (másodpercben)",
|
||||
"dhcp_form_lease_input": "Bérlési idő",
|
||||
"dhcp_interface_select": "DHCP interfész kiválasztása",
|
||||
"dhcp_hardware_address": "Hardvercím",
|
||||
"dhcp_ip_addresses": "IP-címek",
|
||||
"ip": "IP",
|
||||
"dhcp_table_hostname": "Hosztnév",
|
||||
"dhcp_table_expires": "Lejár",
|
||||
"dhcp_warning": "Ha mindenképpen engedélyezni szeretné a DHCP szervert, akkor győződjön meg arról, hogy nincs-e más aktív DHCP szerver a hálózaton. Ellenkező esetben tönkreteheti az eszközei internetkapcsolatát!",
|
||||
"dhcp_error": "Nem tudtuk meghatározni, hogy van-e másik DHCP szerver a hálózaton.",
|
||||
"dhcp_static_ip_error": "A DHCP szerver használatához statikus IP-címet kell beállítani. Nem sikerült meghatározni, hogy ez a hálózati interfész statikus IP-cím használatával van-e beállítva. Állítson be kézzel egy statikus IP-címet.",
|
||||
"dhcp_dynamic_ip_found": "A rendszer dinamikus IP-cím konfigurációt használ az <0>{{interfaceName}}</0> interfészhez. A DHCP szerver használatához statikus IP-címet kell beállítani. Jelenlegi IP-címe: <0>{{ipAddress}}</0>. Automatikusan beállítjuk ezt az IP címet statikusnak, ha rányom a DHCP engedélyezése gombra.",
|
||||
"dhcp_lease_added": "Statikus bérlet \"{{key}}\" sikeresen hozzáadva",
|
||||
"dhcp_lease_deleted": "Statikus bérlet \"{{key}}\" sikeresen törölve",
|
||||
"dhcp_new_static_lease": "Új statikus bérlet",
|
||||
"dhcp_static_leases_not_found": "Nem találhatóak statikus DHCP bérletek",
|
||||
"dhcp_add_static_lease": "Statikus bérlet hozzáadása",
|
||||
"dhcp_reset": "Biztosan visszaállítja a DHCP beállításokat?",
|
||||
"country": "Ország",
|
||||
"city": "Város",
|
||||
"delete_confirm": "Biztosan törli a \"{{key}}\" -t?",
|
||||
"form_enter_hostname": "Adja meg a hosztnevet",
|
||||
"error_details": "Hiba részletei",
|
||||
"response_details": "Válasz részletei",
|
||||
"request_details": "Kérés részletei",
|
||||
"client_details": "Kliens részletei",
|
||||
"details": "Részletek",
|
||||
"back": "Vissza",
|
||||
"dashboard": "Irányítópult",
|
||||
"settings": "Beállítások",
|
||||
"filters": "Szűrők",
|
||||
"filter": "Szűrő",
|
||||
"query_log": "Lekérdezési napló",
|
||||
"compact": "Kompakt",
|
||||
"nothing_found": "Nincs találat",
|
||||
"faq": "GYIK",
|
||||
"version": "Verzió",
|
||||
"address": "Cím",
|
||||
"protocol": "Protokoll",
|
||||
"on": "BE",
|
||||
"off": "KI",
|
||||
"copyright": "Copyright",
|
||||
"homepage": "Honlap",
|
||||
"report_an_issue": "Probléma bejelentése",
|
||||
"privacy_policy": "Adatvédelmi irányelvek",
|
||||
"enable_protection": "Védelem engedélyezése",
|
||||
"enabled_protection": "Védelem engedélyezve",
|
||||
"disable_protection": "Védelem letiltása",
|
||||
"disabled_protection": "Védelem letiltva",
|
||||
"refresh_statics": "Statisztikák frissítése",
|
||||
"dns_query": "DNS lekérdezés",
|
||||
"blocked_by": "<0>Szűrők által blokkolt</0>",
|
||||
"stats_malware_phishing": "Blokkolt kártevő/adathalászat",
|
||||
"stats_adult": "Blokkolt felnőtt tartalom",
|
||||
"stats_query_domain": "Leglátogatottabb domainek",
|
||||
"for_last_24_hours": "az utóbbi 24 órában",
|
||||
"for_last_days": "az utóbbi {{count}} napban",
|
||||
"for_last_days_plural": "az utóbbi {{count}} napban",
|
||||
"no_domains_found": "Nem található domain",
|
||||
"requests_count": "Kérések száma",
|
||||
"top_blocked_domains": "Legtöbbet blokkolt domainek",
|
||||
"top_clients": "Legaktívabb kliensek",
|
||||
"no_clients_found": "Nem található kliens",
|
||||
"general_statistics": "Általános statisztikák",
|
||||
"number_of_dns_query_days": "Lekérdezések száma az utolsó {{count}} napban",
|
||||
"number_of_dns_query_days_plural": "Feldolgozott DNS lekérdezések száma az utolsó {{count}} napban",
|
||||
"number_of_dns_query_24_hours": "Az elmúlt 24 órában feldolgozott DNS lekérdezések száma",
|
||||
"number_of_dns_query_blocked_24_hours": "A hirdetésblokkoló szűrők és a hosztfájlok által letiltott DNS kérések száma",
|
||||
"number_of_dns_query_blocked_24_hours_by_sec": "Az AdGuard böngészési biztonság modulja által letiltott DNS kérések száma",
|
||||
"number_of_dns_query_blocked_24_hours_adult": "Blokkolt felnőtt tartalmak száma",
|
||||
"enforced_save_search": "Kényszerített biztonságos keresés",
|
||||
"number_of_dns_query_to_safe_search": "A biztonságos keresésre kényszerített DNS lekérdezések száma",
|
||||
"average_processing_time": "Átlagos feldolgozási idő",
|
||||
"average_processing_time_hint": "A DNS lekérdezések feldolgozásához szükséges átlagos idő milliszekundumban",
|
||||
"block_domain_use_filters_and_hosts": "Domainek blokkolása szűrők és hosztfájlok használatával",
|
||||
"filters_block_toggle_hint": "A <a> szűrőbeállításoknál</a> megadhatja a blokkolási szabályokat.",
|
||||
"use_adguard_browsing_sec": "Használja az AdGuard böngészési biztonság webszolgáltatását",
|
||||
"use_adguard_browsing_sec_hint": "Az AdGuard Home ellenőrzi, hogy a böngészési biztonsági modul a domaint tiltólistára tette-e. Az ellenőrzés elvégzéséhez egy adatvédelmet tiszteletben tartó API-t fog használni: a domain név egy rövid előtagját elküldi SHA256 kódolással a szerver felé.",
|
||||
"use_adguard_parental": "Használja az AdGuard szülői felügyelet webszolgáltatását",
|
||||
"use_adguard_parental_hint": "Az AdGuard Home ellenőrzi, hogy a domain tartalmaz-e felnőtteknek szóló anyagokat. Ugyanazokat az adatvédelmi API-kat használja, mint a böngésző biztonsági webszolgáltatás.",
|
||||
"enforce_safe_search": "Biztonságos keresés kényszerítése",
|
||||
"enforce_save_search_hint": "Az AdGuard Home a következő keresőmotorokban biztosíthatja a biztonságos keresést: Google, Youtube, Bing, DuckDuckGo és Yandex.",
|
||||
"no_servers_specified": "Nincsenek megadott kiszolgálók",
|
||||
"general_settings": "Általános beállítások",
|
||||
"dns_settings": "DNS beállítások",
|
||||
"dns_blocklists": "DNS blokkolási listák",
|
||||
"dns_allowlists": "DNS engedélyezési listák",
|
||||
"dns_blocklists_desc": "Az AdGuard Home blokkolni fogja azokat a domaineket, amik szerepelnek a blokkolási listán.",
|
||||
"dns_allowlists_desc": "A DNS engedélyezési listán szereplő domainek engedélyezve lesznek, akkor is, ha szerepelnek bármelyik blokkolási listán.",
|
||||
"custom_filtering_rules": "Egyéni szűrési szabályok",
|
||||
"encryption_settings": "Titkosítási beállítások",
|
||||
"dhcp_settings": "DHCP beállítások",
|
||||
"upstream_dns": "Upstream DNS-kiszolgálók",
|
||||
"upstream_dns_help": "Adja meg a szerverek címeit soronként. <a>Tudjon meg többet</a> a DNS szerverek bekonfigurálásáról.",
|
||||
"upstream_dns_configured_in_file": "Beállítva itt: {{path}}",
|
||||
"test_upstream_btn": "Upstreamek tesztelése",
|
||||
"upstreams": "Upstream-ek",
|
||||
"apply_btn": "Alkalmaz",
|
||||
"disabled_filtering_toast": "Szűrés letiltva",
|
||||
"enabled_filtering_toast": "Szűrés engedélyezve",
|
||||
"disabled_safe_browsing_toast": "Bbiztonságos böngészés letiltva",
|
||||
"enabled_safe_browsing_toast": "Biztonságos böngészés engedélyezve",
|
||||
"disabled_parental_toast": "Szülői felügyelet letiltva",
|
||||
"enabled_parental_toast": "Szülői felügyelet engedélyezve",
|
||||
"disabled_safe_search_toast": "Biztonságos keresés letiltva",
|
||||
"enabled_save_search_toast": "Biztonságos keresés engedélyezve",
|
||||
"enabled_table_header": "Engedélyezve",
|
||||
"name_table_header": "Név",
|
||||
"list_url_table_header": "Lista URL-je",
|
||||
"rules_count_table_header": "Szabályok száma",
|
||||
"last_time_updated_table_header": "Utoljára frissítve",
|
||||
"actions_table_header": "Műveletek",
|
||||
"request_table_header": "Kérés",
|
||||
"edit_table_action": "Szerkesztés",
|
||||
"delete_table_action": "Törlés",
|
||||
"elapsed": "Eltelt",
|
||||
"filters_and_hosts_hint": "Az AdGuard Home tudja értelmezni az alapvető hirdetésblokkolási szabályok, valamint a hosztfájlok szintaxisát.",
|
||||
"no_blocklist_added": "Nincsnek blokkolási listák hozzáadva",
|
||||
"no_whitelist_added": "Nincsenek engedélyezési listák hozzáadva",
|
||||
"add_blocklist": "Blokkolási lista hozzáadása",
|
||||
"add_allowlist": "Engedélyezési lista hozzáadása",
|
||||
"cancel_btn": "Mégse",
|
||||
"enter_name_hint": "Adja meg a nevet",
|
||||
"enter_url_or_path_hint": "Írjon be egy URL-t vagy egy útvonalat a listához",
|
||||
"check_updates_btn": "Frissítések keresése",
|
||||
"new_blocklist": "Új blokkolási lista",
|
||||
"new_allowlist": "Új engedélyezési lista",
|
||||
"edit_blocklist": "Blokkolási lista módosítása",
|
||||
"edit_allowlist": "Engedélyezési lista módosítása",
|
||||
"choose_blocklist": "Blokkolási lista választás",
|
||||
"choose_allowlist": "Engedélyezési lista választás",
|
||||
"enter_valid_blocklist": "Adjon meg egy érvényes URL-t a blokkolási listához.",
|
||||
"enter_valid_allowlist": "Adjon meg egy érvényes URL-t az engedélyezési listához.",
|
||||
"form_error_url_format": "Érvénytelen URL formátum",
|
||||
"form_error_url_or_path_format": "Helytelen URL vagy elérési út a listához",
|
||||
"custom_filter_rules": "Egyéni szűrési szabályok",
|
||||
"custom_filter_rules_hint": "Adjon meg egy szabályt egy sorban. Használhat egyszerű hirdetésblokkolási szabályokat vagy hosztfájl szintaxist.",
|
||||
"examples_title": "Példák",
|
||||
"example_meaning_filter_block": "letiltja a hozzáférést az example.org domainhez, valamint annak az összes aldomainjéhez is",
|
||||
"example_meaning_filter_whitelist": "feloldja a hozzáférést az example.org domainhez, valamint annak az összes aldomainjéhez is",
|
||||
"example_meaning_host_block": "Az AdGuard Home mostantol a 127.0.0.1 címre irányítja az example.org domaint (de az aldomaineket nem).",
|
||||
"example_comment": "! Ide írhat egy megjegyzést",
|
||||
"example_comment_meaning": "csak egy megjegyzés",
|
||||
"example_comment_hash": "# Ez is egy megjegyzés",
|
||||
"example_regex_meaning": "megakadályozza a hozzáférést a reguláris kifejezéssel egyező domaineknél",
|
||||
"example_upstream_regular": "hagyományos DNS (UDP felett)",
|
||||
"example_upstream_dot": "titkosított <0>DNS-over-TLS</0>",
|
||||
"example_upstream_doh": "titkosított <0>DNS-over-HTTPS</0>",
|
||||
"example_upstream_doq": "titkosított <0>DNS-over-QUIC</0>",
|
||||
"example_upstream_sdns": "használhatja a <0> DNS Stamps</0>-ot a <1>DNSCrypt</1> vagy a <2>DNS-over-HTTPS</2> feloldások érdekében",
|
||||
"example_upstream_tcp": "hagyományos DNS (TCP felett)",
|
||||
"all_lists_up_to_date_toast": "Már minden lista naprakész",
|
||||
"updated_upstream_dns_toast": "Frissítette az upstream DNS-kiszolgálókat",
|
||||
"dns_test_ok_toast": "A megadott DNS-kiszolgálók megfelelően működnek",
|
||||
"dns_test_not_ok_toast": "Szerver \"{{key}}\": nem használható, ellenőrizze, hogy helyesen írta-e be",
|
||||
"unblock": "Feloldás",
|
||||
"block": "Blokkolás",
|
||||
"disallow_this_client": "Tiltás ennek a kliensnek",
|
||||
"allow_this_client": "Engedélyezés ennek a kliensnek",
|
||||
"block_for_this_client_only": "Tiltás csak ennek a kliensnek",
|
||||
"unblock_for_this_client_only": "Feloldás csak ennek a kliensnek",
|
||||
"time_table_header": "Idő",
|
||||
"date": "Dátum",
|
||||
"domain_name_table_header": "Domain név",
|
||||
"domain_or_client": "Domain vagy kliens",
|
||||
"type_table_header": "Típus",
|
||||
"response_table_header": "Válasz",
|
||||
"response_code": "Válaszkód",
|
||||
"client_table_header": "Kliens",
|
||||
"empty_response_status": "Üres",
|
||||
"show_all_filter_type": "Összes mutatása",
|
||||
"show_filtered_type": "Szűrtek megjelenítése",
|
||||
"no_logs_found": "Nem található napló",
|
||||
"refresh_btn": "Frissítés",
|
||||
"previous_btn": "Előző",
|
||||
"next_btn": "Következő",
|
||||
"loading_table_status": "Betöltés...",
|
||||
"page_table_footer_text": "Oldal",
|
||||
"rows_table_footer_text": "sor",
|
||||
"updated_custom_filtering_toast": "Egyéni szűrőszabályok frissítve",
|
||||
"rule_removed_from_custom_filtering_toast": "Szabály eltávolítva az egyéni szűrőszabályok közül: {{rule}}",
|
||||
"rule_added_to_custom_filtering_toast": "Szabály hozzáadva az egyéni szűrőszabályokhoz: {{rule}}",
|
||||
"query_log_response_status": "Állapot: {{value}}",
|
||||
"query_log_filtered": "{{filter}} által szűrve",
|
||||
"query_log_confirm_clear": "Biztosan törölni szerené a lekérdezési naplót?",
|
||||
"query_log_cleared": "A lekérdezési napló sikeresen törölve",
|
||||
"query_log_updated": "A lekérdezési napló sikeresen frissítve lett",
|
||||
"query_log_clear": "Lekérdezési napló törlése",
|
||||
"query_log_retention": "Lekérdezési naplók megtartása",
|
||||
"query_log_enable": "Naplózás engedélyezése",
|
||||
"query_log_configuration": "Naplózás beállítása",
|
||||
"query_log_disabled": "Lekérdezési napló kikapcsolva. Bekapcsolható a <0>beállításokban</0>",
|
||||
"query_log_strict_search": "Használjon \"dupla idézőjelet\" a pontos kereséshez",
|
||||
"query_log_retention_confirm": "Biztos benne, hogy megváltoztatja a kérések naplójának megőrzési idejét? Ha csökkentette az értéket, a megadottnál korábbi adatok elvesznek",
|
||||
"anonymize_client_ip": "Kliens IP-címének anonimizálása",
|
||||
"anonymize_client_ip_desc": "Ne mentse el a kliens teljes IP-címét a naplókban és a statisztikákban",
|
||||
"dns_config": "DNS szerver beállításai",
|
||||
"dns_cache_config": "DNS gyorsítótár beállításai",
|
||||
"dns_cache_config_desc": "Itt tudja konfigurálni a DNS gyorsítótárat",
|
||||
"blocking_mode": "Blokkolás módja",
|
||||
"default": "Alapértelmezett",
|
||||
"nxdomain": "NXDOMAIN",
|
||||
"refused": "REFUSED",
|
||||
"null_ip": "Null IP-cím",
|
||||
"custom_ip": "Egyedi IP",
|
||||
"blocking_ipv4": "IPv4 blokkolása",
|
||||
"blocking_ipv6": "IPv6 blokkolása",
|
||||
"dns_over_https": "DNS-over-HTTPS",
|
||||
"dns_over_tls": "DNS-over-TLS",
|
||||
"download_mobileconfig_doh": ".mobileconfig letöltése DNS-over-HTTPS-hez",
|
||||
"download_mobileconfig_dot": ".mobileconfig letöltése DNS-over-TLS-hez",
|
||||
"plain_dns": "Egyszerű DNS",
|
||||
"form_enter_rate_limit": "Adja meg a kérések maximális számát",
|
||||
"rate_limit": "Kérések korlátozása",
|
||||
"edns_enable": "EDNS kliens alhálózat engedélyezése",
|
||||
"edns_cs_desc": "Ha engedélyezve van, az AdGuard Home a kliensek alhálózatait küldi el a DNS-kiszolgálóknak.",
|
||||
"rate_limit_desc": "Maximálisan hány kérést küldhet egy kliens másodpercenként (0: korlátlan)",
|
||||
"blocking_ipv4_desc": "A blokkolt A kéréshez visszaadandó IP-cím",
|
||||
"blocking_ipv6_desc": "A blokkolt AAAA kéréshez visszaadandó IP-cím",
|
||||
"blocking_mode_default": "Alapértelmezés: Válaszoljon nulla IP-címmel (vagyis 0.0.0.0 az A-hoz, :: pedig az AAAA-hoz), amikor a blokkolás egy adblock-stílusú szabállyal történik; illetve válaszoljon egy, a szabály által meghatározott IP címmel, amikor a blokkolás egy /etc/hosts stílusú szabállyal történik",
|
||||
"blocking_mode_refused": "REFUSED: Válaszoljon REFUSED kóddal",
|
||||
"blocking_mode_nxdomain": "NXDOMAIN: Az NXDOMAIN kóddal fog válaszolni",
|
||||
"blocking_mode_null_ip": "Null IP: Nullákból álló IP-címmel válaszol (0.0.0.0 for A; :: for AAAA)",
|
||||
"blocking_mode_custom_ip": "Egyedi IP: Válasz egy kézzel beállított IP címmel",
|
||||
"upstream_dns_client_desc": "Ha üresen hagyja ezt a mezőt, az AdGuard Home azokat a szervereket fogja használni, amik a <0>DNS beállításokban</0> vannak beállítva.",
|
||||
"tracker_source": "Követő forrása",
|
||||
"source_label": "Forrás",
|
||||
"found_in_known_domain_db": "Benne van az ismert domainek listájában.",
|
||||
"category_label": "Kategória",
|
||||
"list_label": "Lista",
|
||||
"unknown_filter": "Ismeretlen szűrő: {{filterId}}",
|
||||
"known_tracker": "Ismert követő",
|
||||
"install_welcome_title": "Üdvözli az AdGuard Home!",
|
||||
"install_welcome_desc": "Az AdGuard Home egy, a teljes hálózatot lefedő DNS szerver, amely blokkolja a hirdetéseket és a nyomkövető rendszereket. Az a célja, hogy lehetővé tegye a teljes hálózat és az összes eszköz felügyeletét, emellett pedig nem igényel kliensoldali programot.",
|
||||
"install_settings_title": "Webes admin felület",
|
||||
"install_settings_listen": "Figyelő felület",
|
||||
"install_settings_port": "Port",
|
||||
"install_settings_interface_link": "Az AdGuard Home webes admin felülete elérhető a következő címe(ke)n:",
|
||||
"form_error_port": "Adjon meg egy érvényes portot",
|
||||
"install_settings_dns": "DNS szerver",
|
||||
"install_settings_dns_desc": "Be kell állítania az eszközeit vagy a routerét, hogy használni tudja a DNS szervert a következő címeken:",
|
||||
"install_settings_all_interfaces": "Minden felület",
|
||||
"install_auth_title": "Hitelesítés",
|
||||
"install_auth_desc": "Erősen ajánlott a jelszavas hitelesítés beállítása az AdGuard Home webes admin felületéhez. Még akkor is, ha csak a helyi hálózaton érhető el, óvja meg az illetéktelen hozzáférésektől.",
|
||||
"install_auth_username": "Felhasználónév",
|
||||
"install_auth_password": "Jelszó",
|
||||
"install_auth_confirm": "Jelszó megerősítése",
|
||||
"install_auth_username_enter": "Felhasználónév megadása",
|
||||
"install_auth_password_enter": "Jelszó megadása",
|
||||
"install_step": "Lépés",
|
||||
"install_devices_title": "Állítsa be az eszközeit",
|
||||
"install_devices_desc": "Az AdGuard Home használatának megkezdéséhez be kell állítania az eszközeit, hogy azok használni tudják.",
|
||||
"install_submit_title": "Gratulálunk!",
|
||||
"install_submit_desc": "A telepítési folyamat befejeződött, minden készen áll az AdGuard Home használatára.",
|
||||
"install_devices_router": "Router",
|
||||
"install_devices_router_desc": "Ez a beállítás lefed minden eszközt, amik az Ön routeréhez csatlakoznak, így azokat nem kell külön, kézzel beállítania.",
|
||||
"install_devices_address": "Az AdGuard DNS szerver a következő címeket figyeli",
|
||||
"install_devices_router_list_1": "Nyissa meg a router beállításait. Ez általában a böngészőn keresztül történik egy URL megadásával (pl. http://192.168.0.1/ vagy http://192.168.1.1/). Ez az oldal valószínűleg felhasználónevet és jelszót fog kérni. Ha nem tudja a belépési adatokat, nézze meg a router dobozát, a router alján levő fehér címkét vagy a technikai dokumentációt az interneten, végső esetben pedig visszaállíthatja a routert. Néhány router speciális alkalmazást igényel, amik lehetséges, hogy már telepítve vannak a számítógépére vagy a mobil eszközére.",
|
||||
"install_devices_router_list_2": "Keresse meg a DHCP/DNS beállításokat. Keresse a DNS szót egy olyan mező mellett, amely egy 4 csoportból álló, 1-3 számjegyű számsort vár.",
|
||||
"install_devices_router_list_3": "Adja meg az AdGuard Home szerver címét itt.",
|
||||
"install_devices_router_list_4": "Bizonyos típusú routereknél nem állíthat be egyéni DNS-kiszolgálót. Ebben az esetben segíthet, ha az AdGuard Home-t DHCP-szerverként állítja be. Ellenkező esetben keresse meg az adott router kézikönyvében a DNS-kiszolgálók testreszabását.",
|
||||
"install_devices_windows_list_1": "Nyissa meg a Vezérlőpultot a Start menün vagy a Windows keresőn keresztül.",
|
||||
"install_devices_windows_list_2": "Válassza a Hálózat és internet kategóriát, majd pedig a Hálózati és megosztási központot.",
|
||||
"install_devices_windows_list_3": "A képernyő bal oldalán keresse meg az Adapterbeállítások módosítása lehetőséget és kattintson rá.",
|
||||
"install_devices_windows_list_4": "Válassza ki a jelenleg is használt kapcsolatot, majd jobb egérgombbal kattintson rá és a megjelenő menüből válassza a Tulajdonságok elemet.",
|
||||
"install_devices_windows_list_5": "Keresse meg az Internet Protocol Version 4 (TCP/IP) elemet a listában, válassza ki, majd ismét kattintson a Tulajdonságokra.",
|
||||
"install_devices_windows_list_6": "Válassza a Következő DNS címek használata lehetőséget és adja meg az AdGuard Home szerver címeit.",
|
||||
"install_devices_macos_list_1": "Kattintson az Apple ikonra és válassza a Rendszerbeállításokat.",
|
||||
"install_devices_macos_list_2": "Kattintson a Hálózat lehetőségre.",
|
||||
"install_devices_macos_list_3": "Válassza ki az első kapcsolatot a listából és kattintson a Haladó beállításokra.",
|
||||
"install_devices_macos_list_4": "Válassza ki a DNS fület és adja meg az AdGuard Home szerver címeit.",
|
||||
"install_devices_android_list_1": "Az Android kezdőképernyőjén érintse meg a Beállítások gombot.",
|
||||
"install_devices_android_list_2": "Érintse meg a Wi-Fi gombot a menüben. Ekkor a képernyőre kerül az összes elérhető hálózat (mobilinternethez nem lehet egyedi DNS-t megadni).",
|
||||
"install_devices_android_list_3": "Nyomjon hosszan arra a hálózatra a listából, amelyikre éppen csatlakozva van, majd válassza a Hálózat módosítása lehetőséget.",
|
||||
"install_devices_android_list_4": "Egyes eszközökön előfordulhat, hogy a további beállítások megtekintéséhez a Speciális/haladó beállítások részt kell megnyitni. Az Android DNS-beállításainak módosításához ekkor az IP-beállításokat DHCP-ről statikusra kell váltania.",
|
||||
"install_devices_android_list_5": "Változtassa meg a DNS 1 és a DNS 2 értékét az AdGuard Home szerver címeire.",
|
||||
"install_devices_ios_list_1": "A kezdőképernyőn érintse meg a Beállítások gombot.",
|
||||
"install_devices_ios_list_2": "Válassza ki a Wi-Fi-t a bal oldali menüből (mobilinternetnél nem lehetséges a DNS beállítása).",
|
||||
"install_devices_ios_list_3": "Érintse meg a jelenleg használt hálózat nevét.",
|
||||
"install_devices_ios_list_4": "A DNS mezőbe adja meg az AdGuard Home szerver címeit.",
|
||||
"get_started": "Kezdés",
|
||||
"next": "Következő",
|
||||
"open_dashboard": "Irányítópult megnyitása",
|
||||
"install_saved": "Sikeres mentés",
|
||||
"encryption_title": "Titkosítás",
|
||||
"encryption_desc": "Titkosítás (HTTPS/TLS) támogatása mind a DNS, mind pedig a webes admin felület számára",
|
||||
"encryption_config_saved": "Titkosítási beállítások mentve",
|
||||
"encryption_server": "Szerver neve",
|
||||
"encryption_server_enter": "Adja meg az Ön domain címét",
|
||||
"encryption_redirect": "Automatikus átirányítás HTTPS kapcsolatra",
|
||||
"encryption_redirect_desc": "Ha be van jelölve, az AdGuard Home automatikusan átirányítja a HTTP kapcsolatokat a biztonságos HTTPS protokollra.",
|
||||
"encryption_https": "HTTPS port",
|
||||
"encryption_https_desc": "Ha a HTTPS port konfigurálva van, akkor az AdGuard Home admin felülete elérhető lesz a HTTPS-en keresztül, és ezenkívül DNS-over-HTTPS-t is biztosít a '/dns-query' helyen.",
|
||||
"encryption_dot": "DNS-over-TLS port",
|
||||
"encryption_dot_desc": "Ha ez a port be van állítva, az AdGuard Home DNS-over-TLS szerverként tud futni ezen a porton.",
|
||||
"encryption_doq": "DNS-over-TLS port",
|
||||
"encryption_doq_desc": "Ha ez a port be van állítva, akkor az AdGuard Home egy DNS-over-QUIC szerverként fog futni ezen a porton. Ez egy kísérleti funkció és nem biztos, hogy megbízható. Emellett nincs sok olyan kliens, ami támogatná ezt jelenleg.",
|
||||
"encryption_certificates": "Tanúsítványok",
|
||||
"encryption_certificates_desc": "A titkosítás használatához érvényes SSL tanúsítványláncot kell megadnia a domainjéhez. Ingyenes tanúsítványt kaphat a <0>{{link}}</0> webhelyen, vagy megvásárolhatja az egyik megbízható tanúsítványkibocsátó hatóságtól.",
|
||||
"encryption_certificates_input": "Másolja be ide a PEM-kódolt tanúsítványt.",
|
||||
"encryption_status": "Állapot",
|
||||
"encryption_expire": "Lejár",
|
||||
"encryption_key": "Privát kulcs",
|
||||
"encryption_key_input": "Másolja ki és illessze be ide a tanúsítványa PEM-kódolt privát kulcsát.",
|
||||
"encryption_enable": "Titkosítás engedélyezése (HTTPS, DNS-over-HTTPS, és DNS-over-TLS)",
|
||||
"encryption_enable_desc": "Ha a titkosítás engedélyezve van, az AdGuard Home admin felülete működik HTTPS-en keresztül, és a DNS szerver is várja a kéréseket DNS-over-HTTPS-en, valamint DNS-over-TLS-en keresztül.",
|
||||
"encryption_chain_valid": "A tanúsítványlánc érvényes",
|
||||
"encryption_chain_invalid": "A tanúsítványlánc érvénytelen",
|
||||
"encryption_key_valid": "Ez egy érvényes {{type}} privát kulcs",
|
||||
"encryption_key_invalid": "Ez egy érvénytelen {{type}} privát kulcs",
|
||||
"encryption_subject": "Tárgy",
|
||||
"encryption_issuer": "Kibocsátó",
|
||||
"encryption_hostnames": "Hosztnevek",
|
||||
"encryption_reset": "Biztosan visszaállítja a titkosítási beállításokat?",
|
||||
"topline_expiring_certificate": "Az SSL-tanúsítványa hamarosan lejár. Frissítse a <0>Titkosítási beállításokat</0>.",
|
||||
"topline_expired_certificate": "Az SSL-tanúsítványa lejárt. Frissítse a <0>Titkosítási beállításokat</0>.",
|
||||
"form_error_port_range": "A port értékét a 80-65535 tartományban adja meg",
|
||||
"form_error_port_unsafe": "Ez a port nem biztonságos",
|
||||
"form_error_equal": "Nem egyezhetnek",
|
||||
"form_error_password": "A jelszavak nem egyeznek",
|
||||
"reset_settings": "Beállítások visszaállítása",
|
||||
"update_announcement": "Az AdGuard Home {{version}} verziója elérhető! <0>Kattintson ide</0> további információkért.",
|
||||
"setup_guide": "Beállítási útmutató",
|
||||
"dns_addresses": "DNS címek",
|
||||
"dns_start": "A DNS szerver indul",
|
||||
"dns_status_error": "Hiba történt a DNS szerver állapotának ellenőrzésekor",
|
||||
"down": "Nem elérhető",
|
||||
"fix": "Állandó",
|
||||
"dns_providers": "Itt van az <0>ismert DNS szolgáltatók listája</0>, amelyekből választhat.",
|
||||
"update_now": "Frissítés most",
|
||||
"update_failed": "Az automatikus frissítés nem sikerült. Kérjük, hogy <a>kövesse ezeket a lépéseket</a> a manuális frissítéshez.",
|
||||
"processing_update": "Kérjük várjon, az AdGuard Home frissítése folyamatban van",
|
||||
"clients_title": "Kliensek",
|
||||
"clients_desc": "Az AdGuard Home-hoz csatlakozó eszközök kezelése",
|
||||
"settings_global": "Globális",
|
||||
"settings_custom": "Egyéni",
|
||||
"table_client": "Kliens",
|
||||
"table_name": "Név",
|
||||
"save_btn": "Mentés",
|
||||
"client_add": "Kliens hozzáadása",
|
||||
"client_new": "Új kliens",
|
||||
"client_edit": "Kliens módosítása",
|
||||
"client_identifier": "Azonosító",
|
||||
"ip_address": "IP cím",
|
||||
"form_enter_ip": "IP-cím megadása",
|
||||
"form_enter_mac": "MAC-cím megadása",
|
||||
"form_enter_id": "Azonosító megadása",
|
||||
"form_add_id": "Azonosító hozzáadása",
|
||||
"form_client_name": "Adja meg a kliens nevét",
|
||||
"name": "Név",
|
||||
"client_global_settings": "Globális beállítások használata",
|
||||
"client_deleted": "A(z) \"{{key}}\" kliens sikeresen el lett távolítva",
|
||||
"client_added": "A(z) \"{{key}}\" kliens sikeresen hozzá lett adva",
|
||||
"client_updated": "A(z) \"{{key}}\" kliens sikeresen frissítve lett",
|
||||
"clients_not_found": "Nem található kliens",
|
||||
"client_confirm_delete": "Biztosan törölni szeretné a(z) \"{{key}}\" klienst?",
|
||||
"list_confirm_delete": "Biztosan törölni kívánja ezt a listát?",
|
||||
"auto_clients_title": "Kliensek (futási idő)",
|
||||
"auto_clients_desc": "Az AdGuard Home-ot használó, de a konfigurációban nem tárolt kliensek adatai",
|
||||
"access_title": "Hozzáférési beállítások",
|
||||
"access_desc": "Itt konfigurálhatja az AdGuard Home DNS-kiszolgáló hozzáférési szabályait.",
|
||||
"access_allowed_title": "Engedélyezett kliensek",
|
||||
"access_allowed_desc": "A CIDR vagy IP címek listája. Ha konfigurálva van, az AdGuard Home csak az ezekről az IP-címekről fogadja el a kéréseket.",
|
||||
"access_disallowed_title": "Nem engedélyezett kliensek",
|
||||
"access_disallowed_desc": "A CIDR vagy IP címek listája. Ha konfigurálva van, az AdGuard Home eldobja a lekérdezéseket ezekről az IP-címekről.",
|
||||
"access_blocked_title": "Nem engedélyezett domainek",
|
||||
"access_blocked_desc": "Ne keverje össze ezt a szűrőkkel. Az AdGuard Home az összes DNS kérést el fogja dobni, ami ezekkel a domainekkel kapcsolatos. Itt megadhatja a pontos domainneveket, a helyettesítő karaktereket és az urlfilter-szabályokat, pl. 'example.org', '*.example.org' vagy '||example.org^'.",
|
||||
"access_settings_saved": "A hozzáférési beállítások sikeresen mentésre kerültek",
|
||||
"updates_checked": "A frissítések sikeresen ellenőrizve lettek",
|
||||
"updates_version_equal": "Az AdGuard Home naprakész",
|
||||
"check_updates_now": "Frissítések ellenőrzése most",
|
||||
"dns_privacy": "DNS Adatvédelem",
|
||||
"setup_dns_privacy_1": "<0>DNS-over-TLS:</0> Használja a(z) <1>{{address}}</1> szöveget.",
|
||||
"setup_dns_privacy_2": "<0>DNS-over-HTTPS:</0> Használja a(z) <1>{{address}}</1> szöveget.",
|
||||
"setup_dns_privacy_3": "<0>Azon szoftverek listája, amelyeket használhat.</0>",
|
||||
"setup_dns_privacy_4": "Az iOS14-en vagy a macOS Big Sur eszközökön le tud tölteni egy speciális, '.mobileconfig' nevű fájlt, ami hozzáadja a <highlight>DNS-over-HTTPS</highlight> vagy a <highlight>DNS-over-TLS</highlight> szervereket a DNS beállításokhoz.",
|
||||
"setup_dns_privacy_android_1": "Az Android 9 natív módon támogatja a DNS-over-TLS-t. A beállításához menjen a Beállítások → Hálózat & internet → Speciális → Privát DNS menübe, és adja meg itt a domaint.",
|
||||
"setup_dns_privacy_android_2": "Az <0>AdGuard for Android</0> támogatja a <1>DNS-over-HTTPS</1>-t és a <1>DNS-over-TLS</1>-t.",
|
||||
"setup_dns_privacy_android_3": "Az <0>Intra</0> hozzáadja a <1>DNS-over-HTTPS</1> támogatást az Androidhoz.",
|
||||
"setup_dns_privacy_ios_1": "A <0>DNSCloak</0> támogatja a <1>DNS-over-HTTPS</1>-t, de ahhoz, hogy a saját szerverhez konfigurálhassa, létre kell hoznia egy <2>DNS bélyeget</2> hozzá.",
|
||||
"setup_dns_privacy_ios_2": "Az <0>AdGuard for iOS</0> támogatja a <1>DNS-over-HTTPS</1> és a <1>DNS-over-TLS</1> beállításokat.",
|
||||
"setup_dns_privacy_other_title": "Egyéb megvalósítások",
|
||||
"setup_dns_privacy_other_1": "Maga az AdGuard Home bármilyen platformon biztonságos DNS-kliens lehet.",
|
||||
"setup_dns_privacy_other_2": "A <0>dnsproxy</0> támogatja az összes ismert biztonságos DNS protokollt.",
|
||||
"setup_dns_privacy_other_3": "A <0>dnscrypt-proxy</0> támogatja a <1>DNS-over-HTTPS</1>-t.",
|
||||
"setup_dns_privacy_other_4": "A <0>Mozilla Firefox</0> támogatja a <1>DNS-over-HTTPS</1>-t.",
|
||||
"setup_dns_privacy_other_5": "További megvalósításokat találhat <0>ide</0> és <1>ide</1> kattintva.",
|
||||
"setup_dns_notice": "Ahhoz, hogy a <1>DNS-over-HTTPS</1> vagy a <1>DNS-over-TLS</1> valamelyikét használja, muszáj <0>beállítania a titkosítást</0> az AdGuard Home beállításaiban.",
|
||||
"rewrite_added": "DNS átírás a(z) \"{{key}}\" kulcshoz sikeresen hozzáadva",
|
||||
"rewrite_deleted": "DNS átírás a(z) \"{{key}}\" kulcshoz sikeresen törölve",
|
||||
"rewrite_add": "DNS átírás hozzáadása",
|
||||
"rewrite_not_found": "Nem találhatók DNS átírások",
|
||||
"rewrite_confirm_delete": "Biztosan törölni szeretné a DNS átírást ehhez: \"{{key}}\"?",
|
||||
"rewrite_desc": "Lehetővé teszi, hogy egyszerűen beállítson egyéni DNS választ egy adott domain névhez.",
|
||||
"rewrite_applied": "Alkalmazott átírási szabály",
|
||||
"rewrite_hosts_applied": "Átírva egy hoszt szabály által",
|
||||
"dns_rewrites": "DNS átírások",
|
||||
"form_domain": "Adja meg a domain nevet vagy a helyettesítő karaktert",
|
||||
"form_answer": "Adjon meg egy IP-címet vagy egy domain nevet",
|
||||
"form_error_domain_format": "Érvénytelen domain formátum",
|
||||
"form_error_answer_format": "Érvénytelen válasz formátum",
|
||||
"configure": "Beállítás",
|
||||
"main_settings": "Fő beállítások",
|
||||
"block_services": "Speciális szolgáltatások blokkolása",
|
||||
"blocked_services": "Blokkolt szolgáltatások",
|
||||
"blocked_services_desc": "Lehetővé teszi a népszerű oldalak és szolgáltatások blokkolását.",
|
||||
"blocked_services_saved": "Blokkolt szolgáltatások sikeresen mentve",
|
||||
"blocked_services_global": "A globálisan tiltott szolgáltatások használata",
|
||||
"blocked_service": "Blokkolt szolgáltatás",
|
||||
"block_all": "Összes blokkolása",
|
||||
"unblock_all": "Összes feloldása",
|
||||
"encryption_certificate_path": "Tanúsítvány útvonala",
|
||||
"encryption_private_key_path": "Privát kulcs útvonala",
|
||||
"encryption_certificates_source_path": "Tanúsítványfájl útvonalának megadása",
|
||||
"encryption_certificates_source_content": "Tanúsítvány tartalmának megadása",
|
||||
"encryption_key_source_path": "Privát kulcsfájl beállítása",
|
||||
"encryption_key_source_content": "Privát kulcs tartalmának megadása",
|
||||
"stats_params": "Statisztikai beállítások",
|
||||
"config_successfully_saved": "A beállítások sikeresen el lettek mentve",
|
||||
"interval_24_hour": "24 óra",
|
||||
"interval_days": "{{count}} nap",
|
||||
"interval_days_plural": "{{count}} nap",
|
||||
"domain": "Domain",
|
||||
"answer": "Válasz",
|
||||
"filter_added_successfully": "A lista sikeresen hozzá lett adva",
|
||||
"filter_removed_successfully": "A lista sikeresen el lett távolítva",
|
||||
"filter_updated": "A lista sikeresen frissítve lett",
|
||||
"statistics_configuration": "Statisztikai beállítások",
|
||||
"statistics_retention": "Statisztika megőrzése",
|
||||
"statistics_retention_desc": "Ha csökkenti az intervallum értékét, az előtte levő adatok elvesznek",
|
||||
"statistics_clear": " Statisztikák visszaállítása",
|
||||
"statistics_clear_confirm": "Biztosan vissza akarja állítani a statisztikákat?",
|
||||
"statistics_retention_confirm": "Biztos benne, hogy megváltoztatja a statisztika megőrzési idejét? Ha csökkentette az értéket, a megadottnál korábbi adatok elvesznek",
|
||||
"statistics_cleared": "A statisztikák sikeresen vissza lettek állítva",
|
||||
"interval_hours": "{{count}} óra",
|
||||
"interval_hours_plural": "{{count}} óra",
|
||||
"filters_configuration": "Szűrők beállításai",
|
||||
"filters_enable": "Szűrők engedélyezése",
|
||||
"filters_interval": "Szűrőfrissítési gyakoriság",
|
||||
"disabled": "Kikapcsolva",
|
||||
"username_label": "Felhasználónév",
|
||||
"username_placeholder": "Felhasználónév megadása",
|
||||
"password_label": "Jelszó",
|
||||
"password_placeholder": "Jelszó megadása",
|
||||
"sign_in": "Bejelentkezés",
|
||||
"sign_out": "Kijelentkezés",
|
||||
"forgot_password": "Elfelejtette a jelszót?",
|
||||
"forgot_password_desc": "Kérjük, hogy kövesse <0>ezeket a lépéseket</0> a jelszó visszaállításához.",
|
||||
"location": "Helyzet",
|
||||
"orgname": "Szervezet neve",
|
||||
"netname": "Hálózat neve",
|
||||
"network": "Hálózat",
|
||||
"descr": "Leírás",
|
||||
"whois": "Whois",
|
||||
"filtering_rules_learn_more": "<0>Tudjon meg többet</0> a saját hosztlisták létrehozásáról.",
|
||||
"blocked_by_response": "Blokkolva a CNAME vagy a válasz IP-címe alapján",
|
||||
"blocked_by_cname_or_ip": "CNAME vagy IP által blokkolva",
|
||||
"try_again": "Próbálja újra",
|
||||
"domain_desc": "Adja meg a domain nevet vagy a helyettesítő karaktert ahhoz a címhez, amit át kíván íratni.",
|
||||
"example_rewrite_domain": "csak ehhez a domainhez írja át a válaszokat.",
|
||||
"example_rewrite_wildcard": "az <0>example.org</0> összes aldomainjéhez átírja a válaszokat.",
|
||||
"rewrite_ip_address": "IP-cím: használja ezt az IP-t A vagy AAAA válaszban",
|
||||
"rewrite_domain_name": "Domain név: CNAME rekord hozzáadása",
|
||||
"rewrite_A": "<0>A</0>: speciális érték, megtartja az upstream felől érkező <0>A</0> rekordokat",
|
||||
"rewrite_AAAA": "<0>AAAA</0>: speciális érték, megtartja az upstream felől érkező <0>AAAA</0> rekordokat",
|
||||
"disable_ipv6": "IPv6 letiltása",
|
||||
"disable_ipv6_desc": "Ha ez a szolgáltatás engedélyezve van, akkor az összes IPv6-cím (AAAA típus) DNS-lekérdezése elveszik.",
|
||||
"fastest_addr": "Leggyorsabb IP-cím",
|
||||
"fastest_addr_desc": "Kérdezze le az összes DNS-kiszolgálót, és adja vissza a leggyorsabb IP-címet a válaszok közül. Ez lelassítja a DNS-lekérdezéseket, mivel az összes DNS-kiszolgáló esetében meg kell várnunk a válaszokat, de javítja az összeköttetést.",
|
||||
"autofix_warning_text": "Ha a \"Javítás\" lehetőségre kattint, az AdGuard Home megpróbálja beállítani a rendszerét, hogy használja az AdGuard Home DNS szervert.",
|
||||
"autofix_warning_list": "A következő feladatokat hajtja végre: <0>A DNSStubListener rendszer kikapcsolása</0><0>Beállítja a DNS-kiszolgáló címét 127.0.0.1-re.</0><0>Lecseréli az /etc/resolv.conf szimbolikus útvonalat erre: /run/systemd/resolve/resolv.conf</0><0>A DNSStubListener leállítása (a rendszer által feloldott szolgáltatás újratöltése)</0>",
|
||||
"autofix_warning_result": "Mindennek eredményeként az Ön rendszeréből származó összes DNS-kérést alapértelmezés szerint az AdGuard Home dolgozza fel.",
|
||||
"tags_title": "Címkék",
|
||||
"tags_desc": "Kiválaszthatja a klienseknek megfelelő címkéket. A címkék beilleszthetők a szűrési szabályokba, és lehetővé teszik azok pontosabb alkalmazását. <0>További információ</0>",
|
||||
"form_select_tags": "Válasszon kliens címkéket",
|
||||
"check_title": "Szűrés ellenőrzése",
|
||||
"check_desc": "Ellenőrzi, hogy a hosztnév szűrve van-e",
|
||||
"check": "Ellenőrzés",
|
||||
"form_enter_host": "Adja meg a hosztnevet",
|
||||
"filtered_custom_rules": "Szűrve van az egyéni szűrési szabályok alapján",
|
||||
"choose_from_list": "Választás a listából",
|
||||
"add_custom_list": "Egyedi lista hozzáadása",
|
||||
"host_whitelisted": "Ez a hoszt a kivételek között szerepel",
|
||||
"check_ip": "IP-címek: {{ip}}",
|
||||
"check_cname": "CNAME: {{cname}}",
|
||||
"check_reason": "Indok: {{reason}}",
|
||||
"check_service": "Szolgáltatás neve: {{service}}",
|
||||
"service_name": "Szolgáltatás neve",
|
||||
"check_not_found": "Nem található az Ön szűrőlistái között",
|
||||
"client_confirm_block": "Biztosan blokkolni szeretné a(z) \"{{ip}}\" klienst?",
|
||||
"client_confirm_unblock": "Biztosan fel szeretné oldani a(z) \"{{ip}}\" kliens blokkolását?",
|
||||
"client_blocked": "A(z) \"{{ip}}\" kliens sikeresen blokkolva",
|
||||
"client_unblocked": "A(z) \"{{ip}}\" kliens blokkolása sikeresen feloldva",
|
||||
"static_ip": "Statikus IP-cím",
|
||||
"static_ip_desc": "Az AdGuard Home egy szerver, tehát statikus IP-címre van szüksége a megfelelő működéshez. Ellenkező esetben a router valamikor más IP-címet rendelhet ehhez az eszközhöz.",
|
||||
"set_static_ip": "Statikus IP-cím beállítása",
|
||||
"install_static_ok": "Jó hír! A statikus IP-cím már be van állítva",
|
||||
"install_static_error": "Az AdGuard Home nem tudja automatikusan konfigurálni ezt a hálózati felületet. Kérjük, nézzen utána, hogyan kell ezt manuálisan elvégezni.",
|
||||
"install_static_configure": "Úgy észleltük, hogy dinamikus IP-cím van használatban — <0>{{ip}}</0>. Szeretné ezt statikus IP-címként használni?",
|
||||
"confirm_static_ip": "Az AdGuard Home beállítja az {{ip}} IP-címet az Ön statikus IP-címének. Biztosan folytatni kívánja?",
|
||||
"list_updated": "{{count}} lista frissítve lett",
|
||||
"list_updated_plural": "{{count}} lista frissítve lett",
|
||||
"dnssec_enable": "DNSSEC engedélyezése",
|
||||
"dnssec_enable_desc": "Állítsa be a DNSSEC jelzőt a kimenő DNS-lekérdezésekbe, és ellenőrizze az eredményt (szükséges a DNSSEC-kompatibilis feloldás)",
|
||||
"validated_with_dnssec": "DNSSEC által ellenőrizve",
|
||||
"all_queries": "Minden kérés",
|
||||
"show_blocked_responses": "Blokkolva",
|
||||
"show_whitelisted_responses": "Kivételezett",
|
||||
"show_processed_responses": "Feldolgozva",
|
||||
"blocked_safebrowsing": "Blokkolva a biztonságos böngészés által",
|
||||
"blocked_adult_websites": "Blokkolva a felnőtt tartalmak által",
|
||||
"blocked_threats": "Blokkolt fenyegetések",
|
||||
"allowed": "Engedve",
|
||||
"filtered": "Megszűrt",
|
||||
"rewritten": "Átírt",
|
||||
"safe_search": "Biztonságos keresés",
|
||||
"blocklist": "Tiltólista",
|
||||
"milliseconds_abbreviation": "ms",
|
||||
"cache_size": "Gyorsítótár mérete",
|
||||
"cache_size_desc": "DNS gyorsítótár mérete (bájtokban)",
|
||||
"cache_ttl_min_override": "A minimális TTL felülírása",
|
||||
"cache_ttl_max_override": "A maximális TTL felülírása",
|
||||
"enter_cache_size": "Adja meg a gyorsítótár méretét",
|
||||
"enter_cache_ttl_min_override": "Adja meg a minimális TTL-t (másodpercben)",
|
||||
"enter_cache_ttl_max_override": "Adja meg a maximális TTL-t (másodpercben)",
|
||||
"cache_ttl_min_override_desc": "Megnöveli a DNS kiszolgálótól kapott rövid TTL értékeket (másodpercben), ha gyorsítótárazza a DNS kéréseket",
|
||||
"cache_ttl_max_override_desc": "Állítson be egy maximális TTL értéket (másodpercben) a DNS gyorsítótár bejegyzéseihez",
|
||||
"ttl_cache_validation": "A minimális gyorsítótár TTL értéknek kisebbnek vagy egyenlőnek kell lennie a maximum értékkel",
|
||||
"filter_category_general": "Általános",
|
||||
"filter_category_security": "Biztonság",
|
||||
"filter_category_regional": "Regionális",
|
||||
"filter_category_other": "Egyéb",
|
||||
"filter_category_general_desc": "Olyan listák, amelyek blokkolják a nyomkövetést és a hirdetéseket a legtöbb eszközön",
|
||||
"filter_category_security_desc": "Olyan listák, amelyek a kártékony, adathalász vagy átverős oldalak tiltására vannak kifejlesztve",
|
||||
"filter_category_regional_desc": "Olyan listák, amelyek a regionális hirdetések, valamint a nyomkövető szerverek ellen vannak kifejlesztve",
|
||||
"filter_category_other_desc": "További tiltólisták",
|
||||
"setup_config_to_enable_dhcp_server": "Konfiguráció beállítása a DHCP-kiszolgáló engedélyezéséhez",
|
||||
"original_response": "Eredeti válasz",
|
||||
"click_to_view_queries": "Kattintson a lekérésekért",
|
||||
"port_53_faq_link": "Az 53-as portot gyakran a \"DNSStubListener\" vagy a \"systemd-resolved\" (rendszer által feloldott) szolgáltatások használják. Kérjük, olvassa el <0>ezt az útmutatót</0> a probléma megoldásához.",
|
||||
"adg_will_drop_dns_queries": "Az AdGuard Home eldobja az összes DNS kérést erről a kliensről.",
|
||||
"client_not_in_allowed_clients": "Ez a kliens nincs engedélyezve, mivel nincs rajta az \"Engedélyezett kliensek\" listáján.",
|
||||
"experimental": "Kísérleti"
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"client_settings": "Pengaturan klien",
|
||||
"example_upstream_reserved": "Anda dapat menetapkan DNS upstream <0>untuk domain spesifik</0>",
|
||||
"example_upstream_comment": "Anda dapat menentukan komentar",
|
||||
"upstream_parallel": "Gunakan kueri paralel untuk mempercepat resoluasi dengan menanyakan semua server upstream secara bersamaan",
|
||||
"parallel_requests": "Permintaan paralel",
|
||||
"load_balancing": "Penyeimbang beban",
|
||||
@@ -11,6 +12,8 @@
|
||||
"save_config": "Simpan pengaturan",
|
||||
"enabled_dhcp": "Server DHCP diaktifkan",
|
||||
"disabled_dhcp": "Server DHCP dinonaktifkan",
|
||||
"unavailable_dhcp": "DHCP tidak tersedia",
|
||||
"unavailable_dhcp_desc": "Adguard Home tidak dapat menjalankan server DHCP pada OS Anda",
|
||||
"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",
|
||||
@@ -21,6 +24,8 @@
|
||||
"dhcp_static_leases": "DHCP static leases",
|
||||
"dhcp_leases_not_found": "DHCP lease tidak ditemukan",
|
||||
"dhcp_config_saved": "Pengaturan server DHCP tersimpan",
|
||||
"dhcp_ipv4_settings": "Pengaturan DHCP IPv4",
|
||||
"dhcp_ipv6_settings": "Pengaturan DHCP IPv6",
|
||||
"form_error_required": "Kolom yang harus diisi",
|
||||
"form_error_ip4_format": "Format IPv4 tidak valid",
|
||||
"form_error_ip6_format": "Format IPv6 tidak valid",
|
||||
@@ -29,6 +34,7 @@
|
||||
"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",
|
||||
"range_end_error": "Harus lebih besar dari rentang awal",
|
||||
"dhcp_form_gateway_input": "IP gateway",
|
||||
"dhcp_form_subnet_input": "Subnet mask",
|
||||
"dhcp_form_range_title": "Rentang alamat IP",
|
||||
@@ -109,7 +115,7 @@
|
||||
"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>.",
|
||||
"filters_block_toggle_hint": "Anda dapat menyiapkan aturan pemblokiran di pengaturan <a>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",
|
||||
@@ -127,7 +133,8 @@
|
||||
"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.",
|
||||
"upstream_dns_help": "Masukkan alamat server per baris. <a>Pelajari lebih</a> mengenai konfigurasi upstream server DNS.",
|
||||
"upstream_dns_configured_in_file": "Diatur dalam {{path}}",
|
||||
"test_upstream_btn": "Uji hulu",
|
||||
"upstreams": "Upstream",
|
||||
"apply_btn": "Terapkan",
|
||||
@@ -181,6 +188,7 @@
|
||||
"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_doq": "terenkripsi <0>DNS-over-QUIC</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)",
|
||||
"all_lists_up_to_date_toast": "Semua daftar sudah diperbarui",
|
||||
@@ -189,6 +197,10 @@
|
||||
"dns_test_not_ok_toast": "Server \"{{key}}\": tidak dapat digunakan, mohon cek bahwa Anda telah menulisnya dengan benar",
|
||||
"unblock": "Buka Blokir",
|
||||
"block": "Blok",
|
||||
"disallow_this_client": "Cabut ijin untuk klien ini",
|
||||
"allow_this_client": "Ijinkan klien ini",
|
||||
"block_for_this_client_only": "Blok hanya untuk klien ini",
|
||||
"unblock_for_this_client_only": "Jangan diblok hanya untuk klien ini",
|
||||
"time_table_header": "Waktu",
|
||||
"date": "Tanggal",
|
||||
"domain_name_table_header": "Nama domain",
|
||||
@@ -208,8 +220,8 @@
|
||||
"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",
|
||||
"rule_removed_from_custom_filtering_toast": "Aturan dihapus dari aturan penyaringan khusus: {{rule}}",
|
||||
"rule_added_to_custom_filtering_toast": "Aturan ditambah ke aturan penyaringan khusus: {{rule}}",
|
||||
"query_log_response_status": "Status: {{value}}",
|
||||
"query_log_filtered": "Difilter oleh {{filter}}",
|
||||
"query_log_confirm_clear": "Apakah Anda yakin ingin menghapus seluruh kueri log?",
|
||||
@@ -230,21 +242,25 @@
|
||||
"blocking_mode": "Mode blokir",
|
||||
"default": "Standar",
|
||||
"nxdomain": "NXDOMAIN",
|
||||
"refused": "DITOLAK",
|
||||
"null_ip": "Null IP",
|
||||
"custom_ip": "Custom IP",
|
||||
"blocking_ipv4": "Blokiran IPv4",
|
||||
"blocking_ipv6": "Blokiran IPv6",
|
||||
"dns_over_https": "DNS-over-HTTPS",
|
||||
"dns_over_tls": "DNS-over-TLS",
|
||||
"download_mobileconfig_doh": "Unduh .mobileconfig untuk DNS-over-HTTPS",
|
||||
"download_mobileconfig_dot": "Unduh .mobileconfig untuk DNS-over-TLS",
|
||||
"plain_dns": "Plain DNS",
|
||||
"form_enter_rate_limit": "Masukkan batas nilai",
|
||||
"rate_limit": "Batas nilai",
|
||||
"edns_enable": "Aktifkan EDNS Klien Subnet",
|
||||
"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)",
|
||||
"rate_limit_desc": "Jumlah permintaan per detik yang diperbolehkan untuk satu klien (atur ke 0 untuk tidak terbatas)",
|
||||
"blocking_ipv4_desc": "Alamat IP akan dikembalikan untuk permintaan A yang diblokir",
|
||||
"blocking_ipv6_desc": "Alamat IP akan dipulihkan untuk permintaan AAAA yang diblokir",
|
||||
"blocking_mode_default": "Standar: Respon pakai NXDOMAIN saat diblokir oleh aturan gaya Adblock; membalas dengan alamat IP yang ditentukan dalam aturan ketika diblokir oleh /et /aturan hosts-style",
|
||||
"blocking_mode_default": "Default: Tanggapi dengan alamat IP nol (0.0.0.0 untuk A; :: untuk AAAA) saat diblokir oleh aturan gaya Adblock; tanggapi dengan alamat IP yang ditentukan dalam aturan ketika diblokir oleh aturan gaya host /etc/",
|
||||
"blocking_mode_refused": "DITOLAK: Respon dengan kode DITOLAK",
|
||||
"blocking_mode_nxdomain": "NXDOMAIN: Respon pakai kode NXDOMAIN",
|
||||
"blocking_mode_null_ip": "Null IP: Respon pakai alamat IP kosong (0.0.0.0 untuk A; :: untuk AAAA)",
|
||||
"blocking_mode_custom_ip": "IP kustom: respon dengan alamat IP yang diset secara manual",
|
||||
@@ -253,7 +269,6 @@
|
||||
"source_label": "Sumber",
|
||||
"found_in_known_domain_db": "Ditemukan di database domain dikenal",
|
||||
"category_label": "Kategori",
|
||||
"rule_label": "Aturan",
|
||||
"list_label": "Daftar",
|
||||
"unknown_filter": "Penyaringan {{filterId}} tidak dikenal",
|
||||
"known_tracker": "Pelacak yang dikenal",
|
||||
@@ -314,13 +329,14 @@
|
||||
"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_doq": "Port DNS-lewat-QUIC",
|
||||
"encryption_doq_desc": "Jika port ini diatur secara sepesifik, AdGuard Home akan menjalankan server DNS-lewat-QUIC pada port ini. Ini adalah eksperimental dan mungkin tidak dapat diandalkan. Juga, tidak banyak klien yang mendukungnya saat 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.",
|
||||
@@ -354,7 +370,7 @@
|
||||
"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.",
|
||||
"update_failed": "Pembaruan otomatis gagal. Silahkan <a>ikuti petunjuk ini</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",
|
||||
@@ -368,7 +384,6 @@
|
||||
"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_enter_id": "Masukkan pengenal",
|
||||
@@ -399,7 +414,8 @@
|
||||
"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_3": "<0>Berikut daftar perangkat lunak yang dapat Anda gunakan.</0>",
|
||||
"setup_dns_privacy_4": "Di perangkat iOS 14 atau macOS Big Sur, Anda dapat mengunduh file '.mobileconfig' khusus yang menambahkan server <highlight>DNS-over-HTTPS</highlight> atau <highlight>DNS-over-TLS</highlight> ke pengaturan DNS.",
|
||||
"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.",
|
||||
@@ -510,8 +526,8 @@
|
||||
"check_ip": "Alamat IP: {{ip}}",
|
||||
"check_cname": "CNAME: {{cname}}",
|
||||
"check_reason": "Alasan: {{reason}}",
|
||||
"check_rule": "Aturan: {{rule}}",
|
||||
"check_service": "Nama layanan: {{service}}",
|
||||
"service_name": "Nama layanan",
|
||||
"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}}\"?",
|
||||
@@ -546,13 +562,12 @@
|
||||
"cache_size_desc": "Ukuran DNS cache (dalam bit)",
|
||||
"cache_ttl_min_override": "Tumpuk TTL minimum",
|
||||
"cache_ttl_max_override": "Tumpuk TTL maksimum",
|
||||
"enter_cache_size": "Masukkan ukuran cache",
|
||||
"enter_cache_ttl_min_override": "Masukkan TTL minimum",
|
||||
"enter_cache_ttl_max_override": "Masukkan TTL maksimum",
|
||||
"cache_ttl_min_override_desc": "Ganti nilai TTL (minimum) yang diterima dari server upstream. Nilai ini tidak boleh lebih dari 3600 (1 jam)",
|
||||
"cache_ttl_max_override_desc": "Ganti nilai TTL (maksimum) yang diterima dari server upstream",
|
||||
"min_exceeds_max_value": "Nilai minimum melebihi nilai maksimum",
|
||||
"value_not_larger_than": "Nilai tidak bisa lebih dari {{maximum}}",
|
||||
"enter_cache_size": "Masukkan ukuran cache (bytes)",
|
||||
"enter_cache_ttl_min_override": "Masukkan TTL minimum (detik)",
|
||||
"enter_cache_ttl_max_override": "Masukkan TTL maksimum (detik)",
|
||||
"cache_ttl_min_override_desc": "Perpanjang nilai waktu-online singkat (detik) yang diterima dari server upstream saat menyimpan respons DNS",
|
||||
"cache_ttl_max_override_desc": "Tetapkan nilai waktu-online maksimum (detik) untuk entri di cache DNS",
|
||||
"ttl_cache_validation": "Nilai TTL cache minimum harus kurang dari atau sama dengan nilai maksimum",
|
||||
"filter_category_general": "Umum",
|
||||
"filter_category_security": "Keamanan",
|
||||
"filter_category_regional": "Wilayah",
|
||||
@@ -561,7 +576,11 @@
|
||||
"filter_category_security_desc": "Daftar yang khusus pada pemblokiran malware, phishing, atau domain penipuan",
|
||||
"filter_category_regional_desc": "Daftar yang berfokus pada iklan regional dan server pelacakan",
|
||||
"filter_category_other_desc": "Daftar hitam lain",
|
||||
"setup_config_to_enable_dhcp_server": "Setel konfigurasi untuk aktifkan server DHCP",
|
||||
"original_response": "Respon asli",
|
||||
"click_to_view_queries": "Klik untuk lihat permintaan",
|
||||
"port_53_faq_link": "Port 53 sering ditempati oleh layanan \"DNSStubListener\" atau \"systemd-resolved\". Silakan baca <0>instruksi ini</0> tentang cara menyelesaikan ini."
|
||||
"port_53_faq_link": "Port 53 sering ditempati oleh layanan \"DNSStubListener\" atau \"systemd-resolved\". Silakan baca <0>instruksi ini</0> tentang cara menyelesaikan ini.",
|
||||
"adg_will_drop_dns_queries": "AdGuard Home akan menghapus semua permintaan DNS dari klien ini.",
|
||||
"client_not_in_allowed_clients": "Klien tidak diizinkan karena tidak ada dalam daftar \"Klien yang diizinkan\".",
|
||||
"experimental": "Eksperimental"
|
||||
}
|
||||
@@ -1,34 +1,41 @@
|
||||
{
|
||||
"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",
|
||||
"example_upstream_comment": "Puoi specificare il commento",
|
||||
"upstream_parallel": "Utilizza richieste 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.",
|
||||
"load_balancing_desc": "Interroga un server per volta. AdGuard Home utilizzerà un algoritmo casuale per la selezione del server, in maniera tale da propendere il maggior numero di volte per quello più veloce.",
|
||||
"bootstrap_dns": "Server DNS bootstrap",
|
||||
"bootstrap_dns_desc": "Server DNS bootstrap sono utilizzati per risolvere gli indirizzi IP dei risolutori DoH/DoT specificati come upstream.",
|
||||
"check_dhcp_servers": "Controlla la presenza di server DHCP",
|
||||
"save_config": "Salva configurazione",
|
||||
"enabled_dhcp": "Server DHCP abilitato",
|
||||
"disabled_dhcp": "Server DHCP disabilitato",
|
||||
"enabled_dhcp": "Server DHCP attivo",
|
||||
"disabled_dhcp": "Server DHCP disattivato",
|
||||
"unavailable_dhcp": "DHCP non disponibile",
|
||||
"unavailable_dhcp_desc": "AdGuard Home non può eseguire un server DHCP sul tuo sistema operativo",
|
||||
"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_description": "Se il tuo router non supporta la configurazione delle impostazioni del DHCP puoi utilizzare il server DHCP incluso in AdGuard.",
|
||||
"dhcp_enable": "Attiva server DHCP",
|
||||
"dhcp_disable": "Disattiva 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",
|
||||
"dhcp_ipv4_settings": "Impostazioni DHCP IPv4",
|
||||
"dhcp_ipv6_settings": "Impostazioni DHCP IPv6",
|
||||
"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_server_name": "Nome server non valido",
|
||||
"form_error_positive": "Deve essere maggiore di 0",
|
||||
"form_error_negative": "Deve essere maggiore o uguale a 0 (zero)",
|
||||
"range_end_error": "Deve essere maggiore dell'intervallo di inizio",
|
||||
"dhcp_form_gateway_input": "IP Gateway",
|
||||
"dhcp_form_subnet_input": "Subnet mask",
|
||||
"dhcp_form_range_title": "Range indirizzi IP",
|
||||
@@ -42,10 +49,10 @@
|
||||
"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_warning": "Se si desidera attivare 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_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 Attiva DHCP.",
|
||||
"dhcp_lease_added": "Lease statici \"{{key}}\" aggiunti correttamente",
|
||||
"dhcp_lease_deleted": "Lease statico \"{{key}}\" eliminato correttamente",
|
||||
"dhcp_new_static_lease": "Nuovo lease statico",
|
||||
@@ -66,11 +73,11 @@
|
||||
"settings": "Impostazioni",
|
||||
"filters": "Filtri",
|
||||
"filter": "Filtro",
|
||||
"query_log": "Query Log",
|
||||
"query_log": "Registro Richieste",
|
||||
"compact": "Compatto",
|
||||
"nothing_found": "Non è stato trovato nulla",
|
||||
"faq": "FAQ",
|
||||
"version": "versione",
|
||||
"version": "Versione",
|
||||
"address": "Indirizzo",
|
||||
"protocol": "Protocollo",
|
||||
"on": "ATTIVO",
|
||||
@@ -78,13 +85,13 @@
|
||||
"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",
|
||||
"privacy_policy": "Politica sulla riservatezza",
|
||||
"enable_protection": "Attiva protezione",
|
||||
"enabled_protection": "Protezione attiva",
|
||||
"disable_protection": "Disattiva protezione",
|
||||
"disabled_protection": "Protezione disattivata",
|
||||
"refresh_statics": "Aggiorna statistiche",
|
||||
"dns_query": "Query DNS",
|
||||
"dns_query": "Richieste DNS",
|
||||
"blocked_by": "<0>Bloccato dai Filtri</0>",
|
||||
"stats_malware_phishing": "Malware/phishing bloccati",
|
||||
"stats_adult": "Siti per adulti bloccati",
|
||||
@@ -98,47 +105,48 @@
|
||||
"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_days": "Numero di richieste DNS elaborate negli ultimi {{count}} giorni",
|
||||
"number_of_dns_query_days_plural": "Numero di richieste DNS elaborate negli ultimi {{count}} giorni",
|
||||
"number_of_dns_query_24_hours": "Numero di richieste DNS elaborate nelle ultime 24 ore",
|
||||
"number_of_dns_query_blocked_24_hours": "Numero di richieste DNS bloccate dai filtri per annunci e dalle liste di host bloccati",
|
||||
"number_of_dns_query_blocked_24_hours_by_sec": "Numero di richieste DNS bloccate dal modulo AdGuard \"sicurezza di navigazione\"",
|
||||
"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.",
|
||||
"filters_block_toggle_hint": "Puoi impostare le regole di blocco nelle impostazioni dei <a>Filtri</a>.",
|
||||
"use_adguard_browsing_sec": "Utilizza il servizio web AdGuard \"sicurezza di navigazione\"",
|
||||
"use_adguard_browsing_sec_hint": "AdGuard Home verificherà se il dominio è stato bloccato dal servizio web \"sicurezza di navigazione\". Per eseguire il controllo utilizzerà delle API privacy-friendly: verrà inviato al server solo un breve prefisso dell'hash SHA256 del nome del dominio.",
|
||||
"use_adguard_parental": "Utilizza il Controllo Parentale di AdGuard",
|
||||
"use_adguard_parental_hint": "AdGuard Home verificherà se il dominio contiene materiale per adulti. Utilizza le stesse API privacy-friendly del servizio web \"sicurezza di navigazione\".",
|
||||
"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_blocklists": "Lista Nera DNS",
|
||||
"dns_allowlists": "Lista Bianca DNS",
|
||||
"dns_blocklists_desc": "AdGuard Home bloccherà i domini che corrispondenti alla lista nera.",
|
||||
"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",
|
||||
"encryption_settings": "Impostazioni di crittografia",
|
||||
"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",
|
||||
"upstream_dns_help": "Immetti un indirizzo server per linea. <a>Per saperne di più</a> sulla configurazione dei server DNS upstream.",
|
||||
"upstream_dns_configured_in_file": "Configurato su {{path}}",
|
||||
"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",
|
||||
"disabled_filtering_toast": "Disattiva filtri",
|
||||
"enabled_filtering_toast": "Attiva filtri",
|
||||
"disabled_safe_browsing_toast": "Disattiva navigazione sicura",
|
||||
"enabled_safe_browsing_toast": "Attiva navigazione sicura",
|
||||
"disabled_parental_toast": "Disattiva il Controllo Parentale",
|
||||
"enabled_parental_toast": "Attiva Controllo Parentale",
|
||||
"disabled_safe_search_toast": "Disattiva Ricerca Sicura",
|
||||
"enabled_save_search_toast": "Attiva Ricerca Sicura",
|
||||
"enabled_table_header": "Attivo",
|
||||
"name_table_header": "Nome",
|
||||
"list_url_table_header": "Elenco URL",
|
||||
@@ -149,9 +157,9 @@
|
||||
"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",
|
||||
"filters_and_hosts_hint": "AdGuard Home è in grado di comprendere la sintassi delle regole di blocco per annunci 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",
|
||||
"no_whitelist_added": "Non è stata aggiunta alcuna lista bianca",
|
||||
"add_blocklist": "Aggiungi lista di blocco",
|
||||
"add_allowlist": "Aggiungi lista dei consentiti",
|
||||
"cancel_btn": "Annulla",
|
||||
@@ -169,7 +177,7 @@
|
||||
"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.",
|
||||
"custom_filter_rules_hint": "Inserisci una regola per riga. Puoi utilizzare la sintassi delle regole di blocco per annunci 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",
|
||||
@@ -179,16 +187,21 @@
|
||||
"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_dot": "<0>DNS su TLS</0> crittografato",
|
||||
"example_upstream_doh": "<0>DNS su HTTPS</0> crittografato",
|
||||
"example_upstream_doq": "<0>DNS su QUIC</0> crittografato",
|
||||
"example_upstream_sdns": "puoi utilizzare <0>DNS Stamps</0> per <1>DNSCrypt</1> oppure dei resolver con <2>DNS su 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",
|
||||
"dns_test_not_ok_toast": "Server \"{{key}}\": non può essere utilizzato, assicurati di averlo digitato correttamente",
|
||||
"unblock": "Sblocca",
|
||||
"block": "Blocca",
|
||||
"disallow_this_client": "Blocca questo client",
|
||||
"allow_this_client": "Consenti questo client",
|
||||
"block_for_this_client_only": "Blocca solo per questo client",
|
||||
"unblock_for_this_client_only": "Sblocca solo per questo client",
|
||||
"time_table_header": "Ora",
|
||||
"date": "Data",
|
||||
"domain_name_table_header": "Nome dominio",
|
||||
@@ -200,7 +213,7 @@
|
||||
"empty_response_status": "Vuoto",
|
||||
"show_all_filter_type": "Mostra tutti",
|
||||
"show_filtered_type": "Mostra filtrati",
|
||||
"no_logs_found": "Nessun log trovato",
|
||||
"no_logs_found": "Nessun registro trovato",
|
||||
"refresh_btn": "Aggiorna",
|
||||
"previous_btn": "Precedente",
|
||||
"next_btn": "Successivo",
|
||||
@@ -208,43 +221,53 @@
|
||||
"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}}",
|
||||
"rule_removed_from_custom_filtering_toast": "Regola rimossa dalle regole dei filtri personalizzate: {{rule}}",
|
||||
"rule_added_to_custom_filtering_toast": "Regola aggiunta alle regole dei filtri personalizzate: {{rule}}",
|
||||
"query_log_response_status": "Stato: {{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",
|
||||
"query_log_confirm_clear": "Sei sicuro di voler eliminare il registro richieste?",
|
||||
"query_log_cleared": "Il registro richieste è stato correttamente cancellato",
|
||||
"query_log_updated": "Il registro richieste è stato aggiornato con successo",
|
||||
"query_log_clear": "Cancella registri richieste",
|
||||
"query_log_retention": "Conservazione dei registri richieste",
|
||||
"query_log_enable": "Attiva registro",
|
||||
"query_log_configuration": "Configurazione registri",
|
||||
"query_log_disabled": "Il registro richieste è stato disattivato e può essere configurata dalle <0>impostazioni</0>",
|
||||
"query_log_strict_search": "Utilizzare le doppie virgolette per una ricerca precisa",
|
||||
"query_log_retention_confirm": "Sei sicuro di voler modificare il registro delle richieste? Se il valore di intervallo dovesse diminuire, alcuni dati andranno persi",
|
||||
"anonymize_client_ip": "Anonimizza client IP",
|
||||
"anonymize_client_ip_desc": "Non salvare l'indirizzo IP completo del client nei log e nelle statistiche",
|
||||
"anonymize_client_ip_desc": "Non salvare l'indirizzo IP completo del client nel registro 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",
|
||||
"refused": "REFUSED",
|
||||
"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",
|
||||
"dnscrypt": "DNSCrypt",
|
||||
"dns_over_https": "DNS su HTTPS",
|
||||
"dns_over_tls": "DNS su TLS",
|
||||
"dns_over_quic": "DNS su Quic",
|
||||
"client_id": "ID client",
|
||||
"client_id_placeholder": "Inserisci ID client",
|
||||
"client_id_desc": "Client differenti possono essere identificati da uno speciale ID. <a>Qui</a> potrai saperne di più sui metodi per identificarli.",
|
||||
"download_mobileconfig_doh": "Scarica .mobileconfig per DNS su HTTPS",
|
||||
"download_mobileconfig_dot": "Scarica .mobileconfig per DNS su TLS",
|
||||
"download_mobileconfig": "Scarica file di configurazione",
|
||||
"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)",
|
||||
"edns_enable": "Attiva client di sottorete EDNS",
|
||||
"edns_cs_desc": "Se attivato, AdGuard Home invierà le sottoreti dei client ai server DNS.",
|
||||
"rate_limit_desc": "Il numero di richieste al secondo che un 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_default": "Predefinito: Rispondi con IP address zero (0.0.0.0 per A; :: per AAAA) quando bloccato da una regola di blocco annunci; rispondi con l'indirizzo IP specificato nella regola quando bloccato dalla regola /etc/hosts-style",
|
||||
"blocking_mode_refused": "REFUSED: Risposta con codice di REFUSED",
|
||||
"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",
|
||||
@@ -253,7 +276,7 @@
|
||||
"source_label": "Fonte",
|
||||
"found_in_known_domain_db": "Trovato nel database dei domini conosciuti.",
|
||||
"category_label": "Categoria",
|
||||
"rule_label": "Regola",
|
||||
"rule_label": "Regola(e)",
|
||||
"list_label": "Lista",
|
||||
"unknown_filter": "Filtro sconosciuto {{filterId}}",
|
||||
"known_tracker": "Tracker conosciuto",
|
||||
@@ -286,12 +309,12 @@
|
||||
"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_1": "Apri 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_windows_list_6": "Scegli \"Utilizza i seguenti indirizzi del server DNS\" ed 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.",
|
||||
@@ -302,7 +325,7 @@
|
||||
"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_2": "Scegli Wi-Fi nel menu a sinistra (impossibile configurare DNS per reti mobile).",
|
||||
"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",
|
||||
@@ -314,22 +337,24 @@
|
||||
"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_server_desc": "Per utilizzare HTTPS, è necessario immettere il nome del server che corrisponde al certificato SSL o al certificato wildcard. Se il campo risulterà vuoto, accetterà connessioni TLS per qualsiasi dominio.",
|
||||
"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_https_desc": "Se la porta HTTPS è configurata, l'interfaccia di amministrazione di AdGuard Home sarà accessibile tramite HTTPS e fornirà anche DNS su HTTPS nella posizione \"/ dns-query\".",
|
||||
"encryption_dot": "DNS su porta TLS",
|
||||
"encryption_dot_desc": "Se questa porta è configurata, AdGuard Home eseguirà un server DNS su TLS su questa porta.",
|
||||
"encryption_doq": "DNS su porta QUIC",
|
||||
"encryption_doq_desc": "Se questa porta è configurata, AdGuard Home eseguirà un server DNS su porta QUIC. Questa opzione è sperimentale e potrebbe non risultare affidabile. Inoltre, al momento non sono molti i client a supportarla.",
|
||||
"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_key_input": "Copia/Incolla qui la tua chiave privata codificata PEM per il tuo certificato.",
|
||||
"encryption_enable": "Attiva crittografia (HTTPS, DNS su HTTPS e DNS su TLS)",
|
||||
"encryption_enable_desc": "Se la crittografia è attiva, l'interfaccia di amministrazione di AdGuard Home funzionerà su HTTPS e il server DNS ascolterà le richieste su DNS su HTTPS e DNS su 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",
|
||||
@@ -354,7 +379,7 @@
|
||||
"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.",
|
||||
"update_failed": "Aggiornamento automatico non riuscito. Si prega di <a>seguire 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",
|
||||
@@ -368,14 +393,14 @@
|
||||
"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>",
|
||||
"client_identifier_desc": "I client possono essere identificati dall'indirizzo IP, CIDR, indirizzo MAC o un ID speciale (che può essere utilizzato per DoT/DoH/DoQ). <0>Qui</0> potrai saperne di più sui metodi per identificarli.",
|
||||
"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_global_settings": "Utilizza le impostazioni globali",
|
||||
"client_deleted": "Client \"{{key}}\" eliminato correttamente",
|
||||
"client_added": "Client \"{{key}}\" aggiunto correttamente",
|
||||
"client_updated": "Client \"{{key}}\" aggiornato correttamente",
|
||||
@@ -391,27 +416,29 @@
|
||||
"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_blocked_desc": "Non confondere questi elementi con i filtri. AdGuard Home eliminerà le richieste DNS con questi domini in fase di elaborazione della richiesta.",
|
||||
"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_1": "<0>DNS su TLS:</0> Utilizza la stringa <1>{{address}}</1>.",
|
||||
"setup_dns_privacy_2": "<0>DNS su HTTPS:</0> Utilizza la stringa <1>{{address}}</1>.",
|
||||
"setup_dns_privacy_3": "<0>Ecco un elenco di software che è possibile utilizzare.</0>",
|
||||
"setup_dns_privacy_4": "Si usa un dispositivo iOS 14 o macOS Big Sur puoi scaricare uno file speciale.mobileconfig' che aggiunge i server <highlight>DNS su HTTPS</highlight> or <highlight>DNS su TLS</highlight> alle configurazioni DNS.",
|
||||
"setup_dns_privacy_android_1": "Android 9 supporta DNS su 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 su HTTPS</1> e <1>DNS su TLS</1>.",
|
||||
"setup_dns_privacy_android_3": "<0>Intra</0> aggiunge <1>DNS su HTTPS</1> il supporto ad Android.",
|
||||
"setup_dns_privacy_ios_1": "<0>DNSCloak</0> supporta <1>DNS su 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 su HTTPS</1> e <1>DNS su 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_3": "<0>dnscrypt-proxy</0> supporta <1>DNS su HTTPS</1>.",
|
||||
"setup_dns_privacy_other_4": "<0>Mozilla Firefox</0> supporta <1>DNS su 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.",
|
||||
"setup_dns_privacy_ioc_mac": "configurazione iOS e macOS",
|
||||
"setup_dns_notice": "Per utilizzare <1>DNS su HTTPS</1> o <1>DNS su 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",
|
||||
@@ -452,18 +479,18 @@
|
||||
"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_retention": "Conservazione delle statistiche",
|
||||
"statistics_retention_desc": "Se il valore di intervallo dovesse diminuire, alcuni dati andranno 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_retention_confirm": "Sei sicuro di voler modificare la conservazione delle statistiche? Se il valore di intervallo dovesse diminuire, alcuni dati andranno 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_enable": "Attiva i filtri",
|
||||
"filters_interval": "Intervallo aggiornamento filtri",
|
||||
"disabled": "Disabilitato",
|
||||
"disabled": "Disattivato",
|
||||
"username_label": "Nome utente",
|
||||
"username_placeholder": "Inserisci nome utente",
|
||||
"password_label": "Password",
|
||||
@@ -478,8 +505,9 @@
|
||||
"network": "Rete",
|
||||
"descr": "Descrizione",
|
||||
"whois": "Chi è",
|
||||
"filtering_rules_learn_more": "<0>Leggi altro</0> su come creare i tuoi host blacklist.",
|
||||
"filtering_rules_learn_more": "<0>Leggi altro</0> su come creare le tue liste host.",
|
||||
"blocked_by_response": "Bloccato per CNAME o IP in risposta",
|
||||
"blocked_by_cname_or_ip": "Bloccato da CNAME o IP",
|
||||
"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.",
|
||||
@@ -488,8 +516,8 @@
|
||||
"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.",
|
||||
"disable_ipv6": "Disattiva IPv6",
|
||||
"disable_ipv6_desc": "Se questa funzionalità attiva, tutte le richieste 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.",
|
||||
@@ -505,12 +533,12 @@
|
||||
"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",
|
||||
"host_whitelisted": "L'host è stato aggiunto alla lista bianca",
|
||||
"check_ip": "Indirizzi IP: {{ip}}",
|
||||
"check_cname": "CNAME: {{cname}}",
|
||||
"check_reason": "Motivo: {{reason}}",
|
||||
"check_rule": "Regola: {{rule}}",
|
||||
"check_service": "Nome servizio: {{service}}",
|
||||
"service_name": "Nome servizio",
|
||||
"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}}\"?",
|
||||
@@ -521,15 +549,16 @@
|
||||
"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?",
|
||||
"install_static_configure": "Abbiamo rilevato l'utilizzo di un indirizzo IP dinamico - <0> {{ip}} </0>. Desideri impostarlo come indirizzo statico?",
|
||||
"confirm_static_ip": "AdGuard Home configurerà {{ip}} come indirizzo IP statico. Desideri 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)",
|
||||
"dnssec_enable": "Attiva DNSSEC",
|
||||
"dnssec_enable_desc": "Spunta l'opzione DNSSEC nelle interrogazioni DNS in uscita e verifica il risultato (è richiesta l'attivazione del risolutore DNSSEC)",
|
||||
"validated_with_dnssec": "Verificato con DNSSEC",
|
||||
"all_queries": "Tutte le richieste",
|
||||
"show_blocked_responses": "Bloccato",
|
||||
"show_whitelisted_responses": "Nella whitelist",
|
||||
"show_whitelisted_responses": "Nella Lista Bianca",
|
||||
"show_processed_responses": "Processato",
|
||||
"blocked_safebrowsing": "Blocco Navigazione sicura",
|
||||
"blocked_adult_websites": "Siti per adulti bloccati",
|
||||
@@ -544,20 +573,25 @@
|
||||
"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",
|
||||
"enter_cache_size": "Immetti dimensioni cache (in byte)",
|
||||
"enter_cache_ttl_min_override": "Immetti TTL minimo (in secondi)",
|
||||
"enter_cache_ttl_max_override": "Immetti TTL massimo (in secondi)",
|
||||
"cache_ttl_min_override_desc": "Estende i valori brevi (in secondi) ricevuti dal server upstream durante la memorizzazione nella cache delle risposte DNS",
|
||||
"cache_ttl_max_override_desc": "Imposta un periodo massimo di attivazione (in secondi) per le voci nella cache DNS",
|
||||
"ttl_cache_validation": "Il valore minimo della cache TTL deve essere inferiore o uguale al valore massimo",
|
||||
"filter_category_general": "Generali",
|
||||
"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_general_desc": "Liste per blocco tracciamenti e annunci 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_regional_desc": "Liste focalizzate su annunci regionali e server traccianti",
|
||||
"filter_category_other_desc": "Altre liste di blocco",
|
||||
"click_to_view_queries": "Clicca per visualizzare query"
|
||||
"setup_config_to_enable_dhcp_server": "Configurazione dell'installazione per abilitare il server DHCP",
|
||||
"original_response": "Responso originale",
|
||||
"click_to_view_queries": "Clicca per visualizzare le richieste",
|
||||
"port_53_faq_link": "La Porta 53 è spesso occupata dai servizi \"DNSStubListener\" o \"systemd-resolved\". Si prega di leggere <0>queste istruzioni</0> per risolvere il problema.",
|
||||
"adg_will_drop_dns_queries": "AdGuard Home eliminerà tutte le richieste DNS da questo client.",
|
||||
"client_not_in_allowed_clients": "Il client non è consentito perché non è nell'elenco \"Client consentiti\".",
|
||||
"experimental": "Sperimentale"
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"client_settings": "クライアント設定",
|
||||
"example_upstream_reserved": "<0>特定のドメイン</0>に対してDNSアップストリームを指定できます",
|
||||
"example_upstream_comment": "コメントを指定できます",
|
||||
"upstream_parallel": "並列リクエストを使用する(すべてのアップストリームサーバーを同時に照会することで解決スピードが向上します)",
|
||||
"parallel_requests": "並列リクエスト",
|
||||
"load_balancing": "ロードバランシング",
|
||||
@@ -11,6 +12,8 @@
|
||||
"save_config": "設定を保存する",
|
||||
"enabled_dhcp": "DHCPサーバを有効にしました",
|
||||
"disabled_dhcp": "DHCPサーバを無効にしました",
|
||||
"unavailable_dhcp": "DHCPは利用できません",
|
||||
"unavailable_dhcp_desc": "AdGuard Homeはお使いのOS上でDHCPサーバを実行できません。",
|
||||
"dhcp_title": "DHCPサーバ(実験的!)",
|
||||
"dhcp_description": "あなたのルータがDHCPの設定を提供していないのなら、AdGuardに内蔵されているDHCPサーバを利用できます。",
|
||||
"dhcp_enable": "DHCPサーバを有効にする",
|
||||
@@ -21,14 +24,18 @@
|
||||
"dhcp_static_leases": "DHCP静的割り当て",
|
||||
"dhcp_leases_not_found": "DHCP割当はありません",
|
||||
"dhcp_config_saved": "DHCP設定の保存に成功しました",
|
||||
"dhcp_ipv4_settings": "DHCP IPv4 設定",
|
||||
"dhcp_ipv6_settings": "DHCP IPv6 設定",
|
||||
"form_error_required": "必須項目",
|
||||
"form_error_ip4_format": "IPv4フォーマットではありません",
|
||||
"form_error_ip6_format": "IPv6フォーマットではありません",
|
||||
"form_error_ip_format": "IPv4フォーマットではありません",
|
||||
"form_error_mac_format": "MACフォーマットではありません",
|
||||
"form_error_client_id_format": "Client IDの形式が無効です",
|
||||
"form_error_server_name": "サーバ名が無効です",
|
||||
"form_error_positive": "0より大きい必要があります",
|
||||
"form_error_negative": "0以上である必要があります",
|
||||
"range_end_error": "範囲開始よりも大きくなければなりません",
|
||||
"dhcp_form_gateway_input": "ゲートウェイIP",
|
||||
"dhcp_form_subnet_input": "サブネットマスク",
|
||||
"dhcp_form_range_title": "IPアドレスの範囲",
|
||||
@@ -109,7 +116,7 @@
|
||||
"average_processing_time": "平均処理時間",
|
||||
"average_processing_time_hint": "DNSリクエストの処理にかかる平均時間(ミリ秒単位)",
|
||||
"block_domain_use_filters_and_hosts": "フィルタとhostsファイルを使用してドメインをブロックする",
|
||||
"filters_block_toggle_hint": "<a href='#filters'>フィルタ</a>の設定でブロックするルールを設定することができます。",
|
||||
"filters_block_toggle_hint": "<a>フィルタ</a>の設定でブロックするルールを設定することができます。",
|
||||
"use_adguard_browsing_sec": "AdGuardブラウジングセキュリティ・ウェブサービスを使用する",
|
||||
"use_adguard_browsing_sec_hint": "AdGuard Homeは、ブラウジングセキュリティ・ウェブサービスによってドメインがブラックリストに登録されているかどうかを確認します。 これはプライバシーを考慮したAPIを使用してチェックを実行します。ドメイン名SHA256ハッシュの短いプレフィックスのみがサーバに送信されます。",
|
||||
"use_adguard_parental": "AdGuardペアレンタルコントロール・ウェブサービスを使用する",
|
||||
@@ -127,7 +134,8 @@
|
||||
"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://」プレフィックスを使用してください。",
|
||||
"upstream_dns_help": "サーバのアドレスは1行に1つずつ入力してください。上流DNSサーバの構成についての詳細は<a>こちら</a>をご確認ください。",
|
||||
"upstream_dns_configured_in_file": "{{path}} にて設定されています",
|
||||
"test_upstream_btn": "上流サーバをテストする",
|
||||
"upstreams": "上流",
|
||||
"apply_btn": "適用する",
|
||||
@@ -148,7 +156,7 @@
|
||||
"request_table_header": "リクエスト",
|
||||
"edit_table_action": "編集する",
|
||||
"delete_table_action": "削除する",
|
||||
"elapsed": "経過",
|
||||
"elapsed": "経過時間",
|
||||
"filters_and_hosts_hint": "AdGuard Homeは、基本的な広告ブロックルールとhostsファイルの構文を理解します。",
|
||||
"no_blocklist_added": "ブロックリストには何も追加されていません",
|
||||
"no_whitelist_added": "許可リストには何も追加されていません",
|
||||
@@ -181,6 +189,7 @@
|
||||
"example_upstream_regular": "通常のDNS(UDPでの問い合わせ)",
|
||||
"example_upstream_dot": "暗号化されている <0>DNS-over-TLS</0>",
|
||||
"example_upstream_doh": "暗号化されている <0>DNS-over-HTTPS</0>",
|
||||
"example_upstream_doq": "暗号化されている <0>DNS-over-QUIC</0>",
|
||||
"example_upstream_sdns": "<1>DNSCrypt</1> または <2>DNS-over-HTTPS</2> リゾルバのために <0>DNS Stamps</0> を使えます",
|
||||
"example_upstream_tcp": "通常のDNS(TCPでの問い合わせ)",
|
||||
"all_lists_up_to_date_toast": "すべてのリストは既に最新です",
|
||||
@@ -189,6 +198,10 @@
|
||||
"dns_test_not_ok_toast": "サーバ \"{{key}}\": 使用できませんでした。正しく入力されているかどうかを確認してください",
|
||||
"unblock": "ブロック解除",
|
||||
"block": "ブロック",
|
||||
"disallow_this_client": "このクライアントを拒否する",
|
||||
"allow_this_client": "このクライアントを許可する",
|
||||
"block_for_this_client_only": "このクライアントに対してのみブロックする",
|
||||
"unblock_for_this_client_only": "このクライアントに対してのみブロックを解除する",
|
||||
"time_table_header": "時刻",
|
||||
"date": "購入日時",
|
||||
"domain_name_table_header": "ドメイン名",
|
||||
@@ -208,8 +221,8 @@
|
||||
"page_table_footer_text": "ページ",
|
||||
"rows_table_footer_text": "行",
|
||||
"updated_custom_filtering_toast": "カスタム・フィルタリングルールを更新しました",
|
||||
"rule_removed_from_custom_filtering_toast": "ルールをカスタム・フィルタリングルールから除去しました",
|
||||
"rule_added_to_custom_filtering_toast": "ルールをカスタム・フィルタリングルールに追加しました",
|
||||
"rule_removed_from_custom_filtering_toast": "ルールをカスタム・フィルタリングルールから除去しました {{rule}}",
|
||||
"rule_added_to_custom_filtering_toast": "ルールをカスタム・フィルタリングルールに追加しました {{rule}}",
|
||||
"query_log_response_status": "ステータス: {{value}}",
|
||||
"query_log_filtered": "{{filter}}によるフィルタ",
|
||||
"query_log_confirm_clear": "クエリ・ログ全体を消去してもよろしいですか?",
|
||||
@@ -230,21 +243,31 @@
|
||||
"blocking_mode": "ブロックモード",
|
||||
"default": "デフォルト",
|
||||
"nxdomain": "NXDOMAIN",
|
||||
"refused": "REFUSED",
|
||||
"null_ip": "Null IP",
|
||||
"custom_ip": "カスタムIP",
|
||||
"blocking_ipv4": "ブロック中のIPv4",
|
||||
"blocking_ipv6": "ブロック中のIPv6",
|
||||
"dnscrypt": "DNSCrypt",
|
||||
"dns_over_https": "DNS-over-HTTPS",
|
||||
"dns_over_tls": "DNS-over-TLS",
|
||||
"dns_over_quic": "DNS-over-QUIC",
|
||||
"client_id": "Client ID(クライアントID)",
|
||||
"client_id_placeholder": "クライアントIDを入力してください",
|
||||
"client_id_desc": "それぞれのクライアントは、特別なクライアントIDで識別できます。 <a>ここ</a>では、クライアントを特定する方法について詳しく知ることができます。",
|
||||
"download_mobileconfig_doh": "DNS-over-HTTPS用の .mobileconfig をダウンロード",
|
||||
"download_mobileconfig_dot": "DNS-over-TLS用の .mobileconfig をダウンロード",
|
||||
"download_mobileconfig": "設定ファイルをダウンロードする",
|
||||
"plain_dns": "通常のDNS",
|
||||
"form_enter_rate_limit": "頻度制限を入力してください",
|
||||
"rate_limit": "頻度制限",
|
||||
"edns_enable": "EDNSクライアント・サブネットを有効にする",
|
||||
"edns_cs_desc": "有効にすると、AdGuard HomeはクライアントのサブネットをDNSサーバへ送信します。",
|
||||
"rate_limit_desc": "単一のクライアントに許可される1秒あたりのリクエスト数(0:無制限)",
|
||||
"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_default": "デフォルト:Adblock系ルールによってブロックされると、ゼロIPアドレス(Aに対しては「0.0.0.0」、AAAAに対しては「::」)で応答します。/etc/hosts系ルールによってブロックされると、ルールにて指定されているIPアドレスで応答します。",
|
||||
"blocking_mode_refused": "REFUSED: 「REFUSED」コードで応答します",
|
||||
"blocking_mode_nxdomain": "NXDOMAIN:NXDOMAINコードで応答します",
|
||||
"blocking_mode_null_ip": "Null IP:ゼロのIPアドレスで応答します(Aの場合は0.0.0.0; AAAAの場合は::)",
|
||||
"blocking_mode_custom_ip": "カスタムIP:手動で設定されたIPアドレスで応答します",
|
||||
@@ -314,13 +337,15 @@
|
||||
"encryption_config_saved": "暗号化の設定を保存しました",
|
||||
"encryption_server": "サーバ名",
|
||||
"encryption_server_enter": "ドメイン名を入力してください",
|
||||
"encryption_server_desc": "HTTPSを使用するには、SSL証明書と一致するサーバ名を入力する必要があります。",
|
||||
"encryption_server_desc": "HTTPSを使用するには、SSL証明書またはワイルドカード証明書と一致するサーバー名を入力する必要があります。このフィールドが設定されていない場合は、任意のドメインのTLS接続を受け入れます。",
|
||||
"encryption_redirect": "HTTPSに自動的にリダイレクト",
|
||||
"encryption_redirect_desc": "チェックすると、AdGuard Homeは自動的にHTTPからHTTPSアドレスへリダイレクトします。",
|
||||
"encryption_https": "HTTPS ポート",
|
||||
"encryption_https_desc": "HTTPSポートが設定されていると、AdGuard Home 管理インターフェースはHTTPS経由でアクセス可能になり、そして「/dns-query」の場所にDNS-over-HTTPSも提供されます。",
|
||||
"encryption_dot": "DNS-over-TLS ポート",
|
||||
"encryption_dot_desc": "このポートが設定されていると、AdGuard HomeはこのポートでDNS-over-TLSサーバを実行します。",
|
||||
"encryption_doq": "DNS-over-QUIC ポート",
|
||||
"encryption_doq_desc": "このポートが設定されていると、AdGuard HomeはこのポートにてDNS-over-QUICサーバーを実行します。これは実験的なものであり、頼りにならない可能性があります。また、現時点ではこのサーバーをサポートするクライアントも少ないです。",
|
||||
"encryption_certificates": "証明書",
|
||||
"encryption_certificates_desc": "暗号化を使用するには、ドメインに有効なSSL証明書チェーンを提供する必要があります。無料の証明書は<0> {{link}} </0>で入手できます。または、信頼できる認証局のいずれかから購入することもできます。",
|
||||
"encryption_certificates_input": "ここにPEM形式の証明書をコピー/ペーストしてください。",
|
||||
@@ -354,7 +379,7 @@
|
||||
"fix": "改善",
|
||||
"dns_providers": "こちらは、選択可能な<0>既知のDNSプロバイダの一覧</0>です。",
|
||||
"update_now": "今すぐ更新する",
|
||||
"update_failed": "自動更新に失敗しました。手動で更新するには、<a href='https://github.com/AdguardTeam/AdGuardHome/wiki/Getting-Started#update'>手順に従って</a>ください。",
|
||||
"update_failed": "自動更新に失敗しました。手動で更新するには、<a>手順に従って</a>ください。",
|
||||
"processing_update": "AdGuard Homeを更新しています。しばらくお待ちください",
|
||||
"clients_title": "クライアント",
|
||||
"clients_desc": "AdGuard Homeに接続されているデバイスを設定します",
|
||||
@@ -368,7 +393,7 @@
|
||||
"client_edit": "クライアントの編集",
|
||||
"client_identifier": "識別子",
|
||||
"ip_address": "IPアドレス",
|
||||
"client_identifier_desc": "クライアントはIPアドレスまたはMACアドレスで識別できます。AdGuard Homeが<0>DHCPサーバ</0>でもある場合にのみ、識別子としてMACを使用することが可能であることにご注意ください。",
|
||||
"client_identifier_desc": "クライアントは、IPアドレス、CIDR、MACアドレス、または特別なクライアントID(DoT/DoH/DoQで使用可能)によって識別することができます。<0>ここ</0>では、クライアントの識別方法についてより詳しく説明しています。",
|
||||
"form_enter_ip": "IPアドレスを入力してください",
|
||||
"form_enter_mac": "MACアドレスを入力してください",
|
||||
"form_enter_id": "識別子を入力してください",
|
||||
@@ -399,7 +424,8 @@
|
||||
"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_3": "<0>使用できるソフトウェアのリストは次の通りです。</0>",
|
||||
"setup_dns_privacy_4": "iOS 14 または macOS Big Sur デバイスにて、<highlight>DNS-over-HTTPS</highlight>または<highlight>DNS-over-TLS</highlight>サーバをDNS設定へ追加する特別な「.mobileconfig」ファイルをダウンロードできます。",
|
||||
"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>サポートを追加します。",
|
||||
@@ -411,6 +437,7 @@
|
||||
"setup_dns_privacy_other_3": "<0>dnscrypt-proxy</0>は<1>DNS-over-HTTPS</1>をサポートします。",
|
||||
"setup_dns_privacy_other_4": "<0>Mozilla Firefox</0>は<1>DNS-over-HTTPS</1>をサポートしています。",
|
||||
"setup_dns_privacy_other_5": "もっと多くの実装を<0>ここ</0>や<1>ここ</1>で見つけられます。",
|
||||
"setup_dns_privacy_ioc_mac": "iOS と macOS での設定",
|
||||
"setup_dns_notice": "<1>DNS-over-HTTPS</1>または<1>DNS-over-TLS</1>を使用するには、AdGuard Home 設定の<0>暗号化設定</0>が必要です。",
|
||||
"rewrite_added": "\"{{key}}\" のためのDNS書き換え情報を追加完了しました",
|
||||
"rewrite_deleted": "\"{{key}}\" のためのDNS書き換え情報を削除完了しました",
|
||||
@@ -495,7 +522,7 @@
|
||||
"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によって処理されます。",
|
||||
"autofix_warning_result": "その結果、システムからのすべてのDNSリクエストは、デフォルトでAdGuard Homeによって処理されます。",
|
||||
"tags_title": "タグ",
|
||||
"tags_desc": "クライアントに対応するタグを選択できます。タグはフィルタリングルールに含めることができ、より正確に適用できます。 <0>詳細</0>",
|
||||
"form_select_tags": "クライアントのタグを選択する",
|
||||
@@ -510,8 +537,8 @@
|
||||
"check_ip": "IPアドレス: {{ip}}",
|
||||
"check_cname": "CNAME: {{cname}}",
|
||||
"check_reason": "理由: {{reason}}",
|
||||
"check_rule": "ルール: {{rule}}",
|
||||
"check_service": "サービス名: {{service}}",
|
||||
"service_name": "サービス名",
|
||||
"check_not_found": "フィルタ一覧には見つかりません",
|
||||
"client_confirm_block": "クライアント\"{{ip}}\"をブロックしてもよろしいですか?",
|
||||
"client_confirm_unblock": "クライアント\"{{ip}}\"のブロックを解除してもよろしいですか?",
|
||||
@@ -544,15 +571,14 @@
|
||||
"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}}より大きくすることはできません",
|
||||
"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": "DNS応答をキャッシュするとき、上流サーバから受信した短いTTL(秒単位)を延長します",
|
||||
"cache_ttl_max_override_desc": "DNSキャッシュ内のエントリの最大TTL(秒単位)を設定します",
|
||||
"ttl_cache_validation": "最小キャッシュTTL値は最大値以下にする必要があります",
|
||||
"filter_category_general": "一般",
|
||||
"filter_category_security": "セキュリティ",
|
||||
"filter_category_regional": "地域別",
|
||||
@@ -561,7 +587,11 @@
|
||||
"filter_category_security_desc": "マルウェア、フィッシング、詐欺ドメインのブロック専用リストです。",
|
||||
"filter_category_regional_desc": "それぞれの地域の広告と追跡サーバをターゲットするリストです。",
|
||||
"filter_category_other_desc": "その他のブロックリストです。",
|
||||
"setup_config_to_enable_dhcp_server": "DHCPサーバを有効にするには構成を設定してください",
|
||||
"original_response": "当初の応答",
|
||||
"click_to_view_queries": "クエリを表示するにはクリックしてください",
|
||||
"port_53_faq_link": "多くの場合、ポート53は \"DNSStubListener\" または \"systemd-resolved\" サービスによって利用されています。これを解決する方法については、<0>この手順</0>をお読みください。"
|
||||
"port_53_faq_link": "多くの場合、ポート53は \"DNSStubListener\" または \"systemd-resolved\" サービスによって利用されています。これを解決する方法については、<0>この手順</0>をお読みください。",
|
||||
"adg_will_drop_dns_queries": "AdGuard Homeは、このクライアントからすべてのDNSクエリを落とします。",
|
||||
"client_not_in_allowed_clients": "「許可されたクライアント」リストにないため、このクライアントは許可されていません。",
|
||||
"experimental": "実験用"
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"client_settings": "클라이언트 설정",
|
||||
"example_upstream_reserved": "<0>특정 도메인에 대한</0> DNS 업스트림을 지정할 수 있습니다.",
|
||||
"example_upstream_comment": "설명을 맞춤 지정할 수 있습니다.",
|
||||
"upstream_parallel": "쿼리 처리 속도를 높이려면 모든 업스트림 서버에서 동시에 병렬 쿼리를 사용해주세요.",
|
||||
"parallel_requests": "병렬 처리 요청",
|
||||
"load_balancing": "로드 밸런싱",
|
||||
@@ -11,6 +12,8 @@
|
||||
"save_config": "구성 저장",
|
||||
"enabled_dhcp": "DHCP 서버 활성화됨",
|
||||
"disabled_dhcp": "DHCP 서버 비활성화됨",
|
||||
"unavailable_dhcp": "DHCP가 사용 불가능합니다.",
|
||||
"unavailable_dhcp_desc": "AdGuard Home은 이 OS에서 DHCP 서버를 구동할 수 없습니다.",
|
||||
"dhcp_title": "DHCP 서버 (시험!)",
|
||||
"dhcp_description": "라우터가 DHCP 설정을 제공하지 않으면 AdGuard의 자체 기본 제공 DHCP 서버를 사용할 수 있습니다.",
|
||||
"dhcp_enable": "DHCP 서버 활성화",
|
||||
@@ -21,14 +24,18 @@
|
||||
"dhcp_static_leases": "DHCP 고정 임대",
|
||||
"dhcp_leases_not_found": "DHCP 임대를 찾을 수 없음",
|
||||
"dhcp_config_saved": "DHCP 서버 설정 저장됨",
|
||||
"dhcp_ipv4_settings": "DHCP IPv4 설정",
|
||||
"dhcp_ipv6_settings": "DHCP IPv6 설정",
|
||||
"form_error_required": "필수 필드",
|
||||
"form_error_ip4_format": "잘못된 IPv4 형식",
|
||||
"form_error_ip6_format": "잘못된 IPv6 형식",
|
||||
"form_error_ip_format": "잘못된 IP 형식",
|
||||
"form_error_mac_format": "잘못된 MAC 형식",
|
||||
"form_error_client_id_format": "잘못된 클라이언트 ID 형식",
|
||||
"form_error_server_name": "유효하지 않은 서버 이름입니다",
|
||||
"form_error_positive": "0보다 커야 합니다",
|
||||
"form_error_negative": "반드시 0 이상이여야 합니다",
|
||||
"range_end_error": "입력 값은 범위의 시작 지점보다 큰 값 이여야 합니다.",
|
||||
"dhcp_form_gateway_input": "게이트웨이 IP",
|
||||
"dhcp_form_subnet_input": "서브넷 마스크",
|
||||
"dhcp_form_range_title": "IP 주소 범위",
|
||||
@@ -109,7 +116,7 @@
|
||||
"average_processing_time": "평균처리 시간",
|
||||
"average_processing_time_hint": "DNS 요청 처리시 평균 시간(밀리초)",
|
||||
"block_domain_use_filters_and_hosts": "필터 및 호스트 파일을 사용하여 도메인 차단",
|
||||
"filters_block_toggle_hint": "차단규칙<a href='#filters'>필터</a>을 설정할 수 있습니다.",
|
||||
"filters_block_toggle_hint": "차단규칙<a>필터</a>을 설정할 수 있습니다.",
|
||||
"use_adguard_browsing_sec": "AdGuard 브라우징 보안 웹 서비스 사용",
|
||||
"use_adguard_browsing_sec_hint": "AdGuard Home은 개인정보를 보호하는 API를 사용하여 브라우징 보안 웹 서비스를 통해 도메인이 블랙리스트에 올라 있는지 확인합니다. 참고: 도메인 이름의 SHA256 해시의 짧은 접두사만 서버로 전송됩니다.",
|
||||
"use_adguard_parental": "AdGuard 자녀 보호 웹 서비스 사용",
|
||||
@@ -127,7 +134,8 @@
|
||||
"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>를 업스트림으로 사용합니다.",
|
||||
"upstream_dns_help": "서버 주소를 한 줄에 하나씩 입력해주십시오. 업스트림 DNS 서버 구성에 대해 <a>자세히 알아보십시오</a>.",
|
||||
"upstream_dns_configured_in_file": "{{path}}에서 구성됨",
|
||||
"test_upstream_btn": "업스트림 테스트",
|
||||
"upstreams": "업스트림",
|
||||
"apply_btn": "적용",
|
||||
@@ -181,6 +189,7 @@
|
||||
"example_upstream_regular": "사용자 지정 DNS (UDP을 통한 접속)",
|
||||
"example_upstream_dot": "암호화 된 <0>DNS-over-TLS</0>",
|
||||
"example_upstream_doh": "암호화 된 <0>DNS-over-HTTPS</0>",
|
||||
"example_upstream_doq": "암호화된 <0>DNS-over-QUIC</0>",
|
||||
"example_upstream_sdns": "<1>DNSCrypt</1>나 <2>DNS-over-HTTPS</2> 리졸버를 위해 <0>DNS 스탬프</0>를 사용할 수 있습니다",
|
||||
"example_upstream_tcp": "사용자 지정 DNS (TCP를 통한 접속)",
|
||||
"all_lists_up_to_date_toast": "모든 리스트가 이미 최신입니다",
|
||||
@@ -189,6 +198,10 @@
|
||||
"dns_test_not_ok_toast": "서버 \"{{key}}\": 사용할 수 없습니다, 제대로 작성했는지 확인하세요.",
|
||||
"unblock": "차단 해제",
|
||||
"block": "차단",
|
||||
"disallow_this_client": "클라이언트 거부",
|
||||
"allow_this_client": "클라이언트 허용",
|
||||
"block_for_this_client_only": "이 클라이언트에 대해서만 차단",
|
||||
"unblock_for_this_client_only": "이 클라이언트에 대해서만 차단 해제",
|
||||
"time_table_header": "시간",
|
||||
"date": "날짜",
|
||||
"domain_name_table_header": "도메인명",
|
||||
@@ -208,8 +221,8 @@
|
||||
"page_table_footer_text": "페이지",
|
||||
"rows_table_footer_text": "행",
|
||||
"updated_custom_filtering_toast": "사용자 정의 필터링 규칙 업데이트",
|
||||
"rule_removed_from_custom_filtering_toast": "사용자 정의 필터링 규칙에서 규칙 제거",
|
||||
"rule_added_to_custom_filtering_toast": "사용자 정의 필터링 규칙에 추가된 규칙",
|
||||
"rule_removed_from_custom_filtering_toast": "사용자 정의 필터링 규칙에서 규칙 제거 {{rule}}",
|
||||
"rule_added_to_custom_filtering_toast": "사용자 정의 필터링 규칙에 추가된 규칙 {{rule}}",
|
||||
"query_log_response_status": "상태: {{value}}",
|
||||
"query_log_filtered": "필터: {{filter}}",
|
||||
"query_log_confirm_clear": "정말로 모든 쿼리 로그를 비우시겠습니까?",
|
||||
@@ -230,12 +243,21 @@
|
||||
"blocking_mode": "차단 모드",
|
||||
"default": "기본",
|
||||
"nxdomain": "NXDOMAIN",
|
||||
"refused": "REFUSED",
|
||||
"null_ip": "빈 IP",
|
||||
"custom_ip": "사용자 지정 IP",
|
||||
"blocking_ipv4": "IPv4 차단",
|
||||
"blocking_ipv6": "IPv6 차단",
|
||||
"dnscrypt": "DNSCrypt",
|
||||
"dns_over_https": "DNS-over-HTTPS",
|
||||
"dns_over_tls": "DNS-over-TLS",
|
||||
"dns_over_quic": "DNS-over-QUIC",
|
||||
"client_id": "클라이언트 ID",
|
||||
"client_id_placeholder": "클라이언트 ID 입력",
|
||||
"client_id_desc": "클라이언트는 특별한 클라이언트 ID를 기반으로 구분됩니다. <a>여기</a>에서 클라이언트를 구분하는 방법을 자세히 알아보세요.",
|
||||
"download_mobileconfig_doh": "DNS-over-HTTPS용 .mobileconfig 다운로드",
|
||||
"download_mobileconfig_dot": "DNS-over-TLS용 .mobileconfig 다운로드",
|
||||
"download_mobileconfig": "설정 파일 내려받기",
|
||||
"plain_dns": "평문 DNS",
|
||||
"form_enter_rate_limit": "한도 제한 입력하기",
|
||||
"rate_limit": "한도 제한",
|
||||
@@ -244,7 +266,8 @@
|
||||
"rate_limit_desc": "단일 클라이언트에서 허용 가능한 초 당 요청 생성 숫자 (0: 무제한)",
|
||||
"blocking_ipv4_desc": "차단된 A 요청에 대해서 반환할 IP 주소",
|
||||
"blocking_ipv6_desc": "차단된 AAAA 요청에 대해서 반환할 IP 주소",
|
||||
"blocking_mode_default": "기본: Adblock 스타일 규칙에 의해 차단되면 NXDOMAIN으로 응답합니다; /etc/hosts 스타일 규칙에 의해 차단되면 규칙에 정의된 IP 주소로 응답합니다",
|
||||
"blocking_mode_default": "기본: Adblock 스타일 규칙에 의해 차단되면 제로 IP 주소(A는 0.0.0.0; AAAA는 ::)로 응답합니다; /etc/hosts 스타일 규칙에 의해 차단되면 규칙에 정의된 IP 주소로 응답합니다",
|
||||
"blocking_mode_refused": "REFUSED: REFUSED 코드로 응답",
|
||||
"blocking_mode_nxdomain": "NXDOMAIN: NXDOMAIN 코드로 응답",
|
||||
"blocking_mode_null_ip": "Null IP: 제로 IP 주소 (A는 0.0.0.0; AAAA는 ::) 로 응답합니다",
|
||||
"blocking_mode_custom_ip": "커스텀 IP: 직접 설정한 IP 주소로 응답합니다",
|
||||
@@ -285,7 +308,7 @@
|
||||
"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_router_list_4": "일부 라우터 유형에서는 사용자 정의 DNS 서버를 설정할 수 없습니다. 이 경우에는 AdGuard Home을 <0>DHCP 서버</0>로 설정할 수 있습니다. 그렇지 않으면 특정 라우터 모델에 맞게 DNS 서버를 설정하는 방법을 찾아야 합니다.",
|
||||
"install_devices_windows_list_1": "시작 메뉴 또는 윈도우 검색을 통해 제어판을 여세요",
|
||||
"install_devices_windows_list_2": "네트워크 및 인터넷 카테고리로 이동한 다음 네트워크 및 공유 센터로 이동하세요.",
|
||||
"install_devices_windows_list_3": "화면 왼쪽에서 어댑터 설정 변경을 찾아 클릭하세요.",
|
||||
@@ -321,6 +344,8 @@
|
||||
"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_doq": "DNS-over-QUIC 포트",
|
||||
"encryption_doq_desc": "이 포트가 설정된 경우 AdGuard Home은 해당 포트에서 DNS-over-QUIC 서버를 실행합니다. 이것은 실험적이며 신뢰할 수 없습니다. 또한 현재 이를 지원하는 클라이언트가 많지 않습니다.",
|
||||
"encryption_certificates": "인증서",
|
||||
"encryption_certificates_desc": "암호화를 사용하려면 도메인에 대해 올바른 SSL 인증서 체인을 제공해야 합니다. <0>{{link}}</0>에서 무료 증명서를 받을 수도 있고, 신뢰할 수있는 인증 기관에서 구입할 수 있습니다.",
|
||||
"encryption_certificates_input": "PEM으로 인코딩된 인증서 여기에 복사/붙여넣기하세요.",
|
||||
@@ -352,9 +377,9 @@
|
||||
"dns_status_error": "DNS 서버 상태를 가져오는 도중 오류가 발생했습니다",
|
||||
"down": "다운로드",
|
||||
"fix": "수정",
|
||||
"dns_providers": "여기에 선택가능한 DNS 목록 </0>이 있습니다.",
|
||||
"dns_providers": "다음은 선택할 수 있는 <0>알려진 DNS 공급자 목록</0>입니다.",
|
||||
"update_now": "지금 업데이트",
|
||||
"update_failed": "자동 업데이트 실패 되었습니다. <a href='https://github.com/AdguardTeam/AdGuardHome/wiki/Getting-Started#update'> 단계를 따라 수동으로 업데이트하세요</a>",
|
||||
"update_failed": "자동 업데이트 실패 되었습니다. <a> 단계를 따라 수동으로 업데이트하세요</a>",
|
||||
"processing_update": "잠시만 기다려주세요, AdGuard Home가 업데이트 중입니다.",
|
||||
"clients_title": "클라이언트",
|
||||
"clients_desc": "AdGuard Home에 연결할 기기들을 설정",
|
||||
@@ -368,7 +393,7 @@
|
||||
"client_edit": "클라이언트 수정",
|
||||
"client_identifier": "식별자",
|
||||
"ip_address": "IP 주소",
|
||||
"client_identifier_desc": "사용자는 IP 주소 또는 MAC 주소로 식별할 수 있지만 AdGuard Home이 <0>DHCP 서버인 </0> 경우에만 사용자는 MAC 주소로 식별할 수 있습니다.",
|
||||
"client_identifier_desc": "클라이언트는 IP 주소, CIDR, MAC 주소 또는 특수 클라이언트 ID로 식별할 수 있습니다 (DoT/DoH/DoQ에 사용 가능). <0>여기에서</0> 클라이언트를 식별하는 방법에 대한 자세한 내용은 확인하실 수 있습니다.",
|
||||
"form_enter_ip": "IP 입력",
|
||||
"form_enter_mac": "MAC 입력",
|
||||
"form_enter_id": "식별자 입력",
|
||||
@@ -399,7 +424,8 @@
|
||||
"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_3": "<0>사용할 수 있는 소프트웨어는 다음과 같습니다.</0>",
|
||||
"setup_dns_privacy_4": "iOS 14 또는 macOS Big Sur 기기에서 DNS 설정에 <highlight>DNS-over-HTTPS</highlight> 또는 <highlight>DNS-over-TLS</highlight> 서버를 추가하는 특수 '.mobileconfig' 파일을 다운로드할 수 있습니다.",
|
||||
"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>지원 추가합니다.",
|
||||
@@ -411,6 +437,7 @@
|
||||
"setup_dns_privacy_other_3": "<0>dnscrypt-proxy</0> <1>DNS-over-HTTPS</1> 지원합니다.",
|
||||
"setup_dns_privacy_other_4": "<0>Mozilla Firefox</0><1>DNS-over-HTTPS</1>지원합니다.",
|
||||
"setup_dns_privacy_other_5": "<0>이곳이나</0> <1>이곳을</1> 클릭하여 더 많은 구현에 대한 정보를 확인하세요.",
|
||||
"setup_dns_privacy_ioc_mac": "iOS 및 macOS 설정",
|
||||
"setup_dns_notice": "<1>DNS-over-HTTPS</1> 또는 <1>DNS-over-TLS를</1> 사용하려면 AdGuard Home 설정에서 <0>암호화를 구성해야 합니다.</0>",
|
||||
"rewrite_added": "\"{{key}}\"에 대한 DNS 수정 정보를 성공적으로 추가 됩니다.",
|
||||
"rewrite_deleted": "\"{{key}}\"에 대한 DNS 수정 정보를 성공적으로 삭제 됩니다.",
|
||||
@@ -510,8 +537,8 @@
|
||||
"check_ip": "IP 주소: {{ip}}",
|
||||
"check_cname": "CNAME: {{cname}}",
|
||||
"check_reason": "이유: {{reason}}",
|
||||
"check_rule": "규칙: {{rule}}",
|
||||
"check_service": "서비스 이름: {{service}}",
|
||||
"service_name": "서비스 이름",
|
||||
"check_not_found": "필터 목록에서 찾을 수 없음",
|
||||
"client_confirm_block": "정말로 클라이언트 \"{{ip}}\"을(를) 차단하시겠습니까?",
|
||||
"client_confirm_unblock": "정말로 클라이언트 \"{{ip}}\"의 차단을 해제하시겠습니까?",
|
||||
@@ -544,15 +571,14 @@
|
||||
"milliseconds_abbreviation": "ms",
|
||||
"cache_size": "캐시 크기",
|
||||
"cache_size_desc": "DNS 캐시 크기 (바이트)",
|
||||
"cache_ttl_min_override": "최소 TTL 무시",
|
||||
"cache_ttl_max_override": "최대 TTL 무시",
|
||||
"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_min_override_desc": "업스트림 서버에서 수신한 TTL 값(최소)을 무시합니다",
|
||||
"cache_ttl_max_override_desc": "업스트림 서버에서 수신한 TTL 값(최대)을 무시합니다",
|
||||
"min_exceeds_max_value": "최소값이 최대값을 초과합니다",
|
||||
"value_not_larger_than": "값은 {{maximum}}보다 클 수 없습니다",
|
||||
"ttl_cache_validation": "최소 캐시 TTL 값은 최대 값보다 이하여야 합니다",
|
||||
"filter_category_general": "일반 목록",
|
||||
"filter_category_security": "보안 목록",
|
||||
"filter_category_regional": "지역 목록",
|
||||
@@ -561,6 +587,11 @@
|
||||
"filter_category_security_desc": "멀웨어, 피싱 또는 사기 도메인을 차단하는 목록",
|
||||
"filter_category_regional_desc": "지역 광고 및 추적 서버에 중점을 둔 목록",
|
||||
"filter_category_other_desc": "기타 차단 목록",
|
||||
"setup_config_to_enable_dhcp_server": "DHCP 서버를 활성화하기 위한 초기 설정",
|
||||
"original_response": "원래 응답",
|
||||
"click_to_view_queries": "쿼리를 보려면 클릭합니다"
|
||||
"click_to_view_queries": "쿼리를 보려면 클릭합니다",
|
||||
"port_53_faq_link": "53번 포트는 보통 \"DNSStubListener\"나 \"systemd-resolved\" 서비스가 이미 사용하고 있습니다. 이 문제에 대한 해결 방법을 <0>설명</0>에서 찾아보세요.",
|
||||
"adg_will_drop_dns_queries": "AdGuard Home은 이 클라이언트에서 모든 DNS 쿼리를 삭제합니다.",
|
||||
"client_not_in_allowed_clients": "이 클라이언트는 허용된 클라이언트 목록에 없으므로 허용되지 않습니다.",
|
||||
"experimental": "실험"
|
||||
}
|
||||
@@ -1,16 +1,19 @@
|
||||
{
|
||||
"client_settings": "cliënt Instellingen",
|
||||
"client_settings": "Cliënt Instellingen",
|
||||
"example_upstream_reserved": "Je kan DNS upstream <0>specifiëren voor specifieke domein(en)</0>",
|
||||
"example_upstream_comment": "Het commentaar kan gespecificeerd worden",
|
||||
"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": "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",
|
||||
"unavailable_dhcp": "DHCP is niet beschikbaar",
|
||||
"unavailable_dhcp_desc": "AdGuard Home kan geen DHCP-server draaien op uw OS",
|
||||
"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",
|
||||
@@ -20,15 +23,19 @@
|
||||
"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",
|
||||
"dhcp_config_saved": "DHCP configuratie succesvol opgeslagen",
|
||||
"dhcp_ipv4_settings": "DHCP IPv4 instellingen",
|
||||
"dhcp_ipv6_settings": "DHCP IPv6 instellingen",
|
||||
"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_server_name": "Ongeldige servernaam",
|
||||
"form_error_positive": "Moet groter zijn dan 0",
|
||||
"form_error_negative": "Moet 0 of hoger dan 0 zijn",
|
||||
"range_end_error": "Moet groter zijn dan het startbereik",
|
||||
"dhcp_form_gateway_input": "Gateway IP",
|
||||
"dhcp_form_subnet_input": "Subnet mask",
|
||||
"dhcp_form_range_title": "Bereik van IP adressen",
|
||||
@@ -36,7 +43,7 @@
|
||||
"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_interface_select": "DHCP interface selecteren",
|
||||
"dhcp_hardware_address": "Hardware adres",
|
||||
"dhcp_ip_addresses": "IP adressen",
|
||||
"ip": "IP",
|
||||
@@ -109,7 +116,7 @@
|
||||
"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",
|
||||
"filters_block_toggle_hint": "Je kan blokkeringsregels toevoegen in de <a>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",
|
||||
@@ -126,8 +133,9 @@
|
||||
"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.",
|
||||
"upstream_dns": "Upstream DNS-servers",
|
||||
"upstream_dns_help": "Server adressen invoeren, een per regel. <a>Meer weten</a> over het configureren van upstream DNS-servers.",
|
||||
"upstream_dns_configured_in_file": "Geconfigureerd in {{path}}",
|
||||
"test_upstream_btn": "Test upstream",
|
||||
"upstreams": "Upstreams",
|
||||
"apply_btn": "Toepassen",
|
||||
@@ -179,16 +187,21 @@
|
||||
"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_dot": "versleutelde <0>DNS-via-TLS</0>",
|
||||
"example_upstream_doh": "versleutelde <0>DNS-via-HTTPS</0>",
|
||||
"example_upstream_doq": "versleutelde <0>DNS-via-QUIC</0>",
|
||||
"example_upstream_sdns": "je kunt <0>DNS Stamps</0> voor <1>DNSCrypt</1> of <2>DNS-via-HTTPS</2> oplossingen gebruiken",
|
||||
"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",
|
||||
"dns_test_not_ok_toast": "Server \"{{key}}\": kon niet worden gebruikt, controleer of je het correct hebt geschreven",
|
||||
"unblock": "Deblokkeren",
|
||||
"block": "Blokkeren",
|
||||
"disallow_this_client": "Toepassing/systeem niet toelaten",
|
||||
"allow_this_client": "Toepassing/systeem toelaten",
|
||||
"block_for_this_client_only": "Alleen voor deze toepassing/dit systeem blokkeren",
|
||||
"unblock_for_this_client_only": "Alleen voor deze toepassing/dit systeem deblokkeren",
|
||||
"time_table_header": "Tijd",
|
||||
"date": "Datum",
|
||||
"domain_name_table_header": "Domein naam",
|
||||
@@ -200,7 +213,7 @@
|
||||
"empty_response_status": "Leeg",
|
||||
"show_all_filter_type": "Toon alles",
|
||||
"show_filtered_type": "Toon gefilterde",
|
||||
"no_logs_found": "Geen log bestanden gevonden",
|
||||
"no_logs_found": "Geen logboeken gevonden",
|
||||
"refresh_btn": "Verversen",
|
||||
"previous_btn": "Vorige",
|
||||
"next_btn": "Volgende",
|
||||
@@ -208,8 +221,8 @@
|
||||
"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",
|
||||
"rule_removed_from_custom_filtering_toast": "Regel verwijderd uit de aangepaste filterregels: {{rule}}",
|
||||
"rule_added_to_custom_filtering_toast": "Regel toegevoegd aan de aangepaste filterregels: {{rule}}",
|
||||
"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?",
|
||||
@@ -223,28 +236,38 @@
|
||||
"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",
|
||||
"anonymize_client_ip_desc": "Het volledige IP-adres van de cliënt niet opnemen in logboeken 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",
|
||||
"refused": "REFUSED",
|
||||
"null_ip": "Nul IP",
|
||||
"custom_ip": "Aangepast IP",
|
||||
"blocking_ipv4": "Blokkeren IP4",
|
||||
"blocking_ipv6": "Blokkeren IP6",
|
||||
"dnscrypt": "DNSCrypt",
|
||||
"dns_over_https": "DNS-via-HTTPS",
|
||||
"dns_over_tls": "DNS-via-TLS",
|
||||
"dns_over_quic": "DNS-via-QUIC",
|
||||
"client_id": "Apparaat-ID",
|
||||
"client_id_placeholder": "Apparaat-ID invoeren",
|
||||
"client_id_desc": "Verschillende apparaten kunnen worden geïdentificeerd door hun specifiek apparaat-ID. <a>Hier</a> vind je meer informatie over het identificeren van apparaten.",
|
||||
"download_mobileconfig_doh": ".mobileconfig voor DNS-via-HTTPS downloaden",
|
||||
"download_mobileconfig_dot": ".mobileconfig voor DNS-via-TLS downloaden",
|
||||
"download_mobileconfig": "Configuratiebestand downloaden",
|
||||
"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)",
|
||||
"rate_limit_desc": "Het aantal verzoeken per seconde die een enkele client mag doen (0 betekent 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_default": "Standaard: Reageer met een nul IP adres (0.0.0.0 for A; :: voor AAAA) wanneer geblokkeerd door een Adblock-type regel; reageer met het IP-adres dat is opgegeven in de regel wanneer geblokkeerd door een /etc/hosts type regel",
|
||||
"blocking_mode_refused": "REFUSED: Antwoorden met REFUSED code",
|
||||
"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",
|
||||
@@ -253,19 +276,19 @@
|
||||
"source_label": "Bron",
|
||||
"found_in_known_domain_db": "Gevonden in de bekende domeingegevensbank.",
|
||||
"category_label": "Categorie",
|
||||
"rule_label": "Regel",
|
||||
"rule_label": "Regel(s)",
|
||||
"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_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_dns": "DNS-server",
|
||||
"install_settings_dns_desc": "Je moet jouw 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.",
|
||||
@@ -285,26 +308,26 @@
|
||||
"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_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_4": "Selecteer jouw 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_windows_list_6": "Kies Gebruik de volgende DNS-server adressen en voer jouw AdGuard Home server adressen 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_macos_list_3": "Selecteer de eerste verbinding in jouw lijst en klik op Geavanceerd.",
|
||||
"install_devices_macos_list_4": "Selecteer het tabblad DNS en voer jouw AdGuard Home server adressen 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_android_list_5": "Wijzig de DNS 1-waarden en DNS 2-waarden in jouw AdGuard Home server adressen.",
|
||||
"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.",
|
||||
"install_devices_ios_list_4": "Voer in het DNS veld jouw AdGuard Home server adressen in.",
|
||||
"get_started": "Beginnen",
|
||||
"next": "Volgende",
|
||||
"open_dashboard": "Open Dashboard",
|
||||
@@ -314,13 +337,15 @@
|
||||
"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_server_desc": "Om HTTPS te gebruiken, moet je de servernaam invoeren die overeenkomt met je SSL-certificaat of jokerteken-certificaat. Als het veld niet is ingesteld, accepteert het TLS-verbindingen voor elk domein.",
|
||||
"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_https_desc": "Als de HTTPS-poort is geconfigureerd, is de AdGuard Home beheerders interface toegankelijk via HTTPS en biedt deze ook DNS-via-HTTPS op de locatie '/ dns-query'.",
|
||||
"encryption_dot": "DNS-via-TLS poort",
|
||||
"encryption_dot_desc": "Indien deze poort is geconfigureerd, zal AdGuard Home gebruik maken van een DNS-via-TLS server via deze poort.",
|
||||
"encryption_doq": "DNS-via-QUIC poort",
|
||||
"encryption_doq_desc": "Als deze poort is geconfigureerd, zal AdGuard Home een DNS-via-QUIC server gebruiken via deze poort. Dit is experimenteel en kan onbetrouwbaar zijn. Er zijn overigens nog niet veel systemen die dit nu al ondersteunen.",
|
||||
"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.",
|
||||
@@ -328,8 +353,8 @@
|
||||
"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_enable": "Activeer encryptie (HTTPS, DNS-via-HTTPS, en DNS-via-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-via-HTTPS en DNS-via-TLS.",
|
||||
"encryption_chain_valid": "certificaatketen is geldig",
|
||||
"encryption_chain_invalid": "certificaatketen is ongeldig",
|
||||
"encryption_key_valid": "Dit is een geldig {{type}} privé sleutel",
|
||||
@@ -348,13 +373,13 @@
|
||||
"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",
|
||||
"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.",
|
||||
"update_failed": "Auto-update is mislukt. <a>Volg deze 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",
|
||||
@@ -362,13 +387,13 @@
|
||||
"settings_custom": "Aangepast",
|
||||
"table_client": "Gebruiker",
|
||||
"table_name": "Naam",
|
||||
"save_btn": "Bewaar",
|
||||
"save_btn": "Opslaan",
|
||||
"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",
|
||||
"client_identifier_desc": "Apparaten kunnen worden geïdentificeerd door hun IP-adres, CIDR, MAC-adres of een speciaal apparaat-ID (kan gebruikt worden voor DoT/DoH/DoQ). <0>Hier</0> kan je meer lezen over het identificeren van apparaten.",
|
||||
"form_enter_ip": "Vul IP in",
|
||||
"form_enter_mac": "Vul MAC in",
|
||||
"form_enter_id": "ID invoeren",
|
||||
@@ -385,33 +410,35 @@
|
||||
"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_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",
|
||||
"access_settings_saved": "Toegangsinstellingen succesvol 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_1": "<0>DNS-via-TLS:</0> Gebruik <1>{{address}}</1> string.",
|
||||
"setup_dns_privacy_2": "<0>DNS-via-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_4": "Op een iOS 14 of macOS Big Sur apparaat kan je een speciaal '.mobileconfig'-bestand downloaden dat <highlight>DNS-via-HTTPS</highlight> of <highlight>DNS-via-TLS</highlight> servers aan de DNS-instellingen toevoegt.",
|
||||
"setup_dns_privacy_android_1": "Android 9 ondersteunt native DNS-via-TLS. Om het te configureren, ga naar Instellingen → Netwerk & internet → Geavanceerd → Privé DNS en voer daar je domeinnaam in.",
|
||||
"setup_dns_privacy_android_2": "<0>AdGuard voor Android</0>ondersteunt<1>DNS-via-HTTPS </1>en<1>DNS-via-TLS</1>.",
|
||||
"setup_dns_privacy_android_3": "<0> Intra </0> voegt <1> DNS-via-HTTPS</1> ondersteuning toe aan Android.",
|
||||
"setup_dns_privacy_ios_1": "<0>DNSCloak</0> ondersteunt <1> DNS-via-HTTPS </1>, maar om het te configureren op jouw eigen server moet er een <2> DNS-stempel </2> gegenereerd worden.",
|
||||
"setup_dns_privacy_ios_2": "<0> AdGuard voor iOS </0> ondersteunt de instellingen <1> DNS-via-HTTPS </1> en <1> DNS-via-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_3": "<0>dnscrypt-proxy</0> ondersteunt <1>DNS-via-HTTPS</1>.",
|
||||
"setup_dns_privacy_other_4": "<0>Mozilla Firefox</0> ondersteunt <1>DNS-via-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.",
|
||||
"setup_dns_privacy_ioc_mac": "iOS en macOS configuratie",
|
||||
"setup_dns_notice": "Om <1>DNS-via-HTTPS</1> of <1>DNS-via-TLS</1> te gebruiken, moet je <0>Versleuteling configureren</0> 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",
|
||||
@@ -492,13 +519,13 @@
|
||||
"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.",
|
||||
"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 jouw 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",
|
||||
"form_select_tags": "Client tags selecteren",
|
||||
"check_title": "Controleer de filtering",
|
||||
"check_desc": "Controleer of de hostnaam wordt gefilterd",
|
||||
"check": "Controleren",
|
||||
@@ -510,8 +537,8 @@
|
||||
"check_ip": "IP-adressen: {{ip}}",
|
||||
"check_cname": "CNAME: {{cname}}",
|
||||
"check_reason": "Reden: {{reason}}",
|
||||
"check_rule": "Regel: {{rule}}",
|
||||
"check_service": "Servicenaam: {{service}}",
|
||||
"service_name": "Naam 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?",
|
||||
@@ -546,13 +573,12 @@
|
||||
"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}}",
|
||||
"enter_cache_size": "Cache grootte invoeren (bytes)",
|
||||
"enter_cache_ttl_min_override": "Minimum TTL invoeren (seconden)",
|
||||
"enter_cache_ttl_max_override": "Maximum TTL invoeren (seconden)",
|
||||
"cache_ttl_min_override_desc": "Uitbreiden van korte Time-To-Live waardes (seconden) ontvangen van de upstream server bij het cachen van DNS antwoorden",
|
||||
"cache_ttl_max_override_desc": "Instellen van maximum time-to-live waarde (seconden) voor opslag in de DNS cache",
|
||||
"ttl_cache_validation": "Minimale waarde TTL-cache moet kleiner dan of gelijk zijn aan de maximale waarde",
|
||||
"filter_category_general": "Algemeen",
|
||||
"filter_category_security": "Beveiliging",
|
||||
"filter_category_regional": "Regionaal",
|
||||
@@ -561,7 +587,11 @@
|
||||
"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",
|
||||
"setup_config_to_enable_dhcp_server": "Configuratie instelling om DHCP-server in te schakelen",
|
||||
"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."
|
||||
"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.",
|
||||
"adg_will_drop_dns_queries": "AdGuard Home zal alle DNS verzoeken van deze toepassing/dit systeem negeren.",
|
||||
"client_not_in_allowed_clients": "De toepassing is niet toegestaan omdat deze niet in de lijst \"Toegestane toepassingen\" voorkomt.",
|
||||
"experimental": "Experimenteel"
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"client_settings": "Klientinnstillinger",
|
||||
"example_upstream_reserved": "du kan bestemme en oppstrøms-DNS <0>for et spesifikt domene(r)</0>",
|
||||
"example_upstream_comment": "Du kan spesifisere kommentaren",
|
||||
"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",
|
||||
@@ -11,6 +12,8 @@
|
||||
"save_config": "Lagre oppsettet",
|
||||
"enabled_dhcp": "DHCP-tjeneren ble skrudd på",
|
||||
"disabled_dhcp": "DHCP-tjeneren ble skrudd av",
|
||||
"unavailable_dhcp": "DHCP er utilgjengelig",
|
||||
"unavailable_dhcp_desc": "AdGuard Home kan ikke kjøre en DHCP-tjener på ditt OS",
|
||||
"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",
|
||||
@@ -21,14 +24,18 @@
|
||||
"dhcp_static_leases": "Statiske DHCP-leieavtaler",
|
||||
"dhcp_leases_not_found": "Ingen DHCP-leieavtaler ble funnet",
|
||||
"dhcp_config_saved": "Lagret DHCP-tjeneroppsettet",
|
||||
"dhcp_ipv4_settings": "DHCP IPv4-innstillinger",
|
||||
"dhcp_ipv6_settings": "DHCP IPv6-innstillinger",
|
||||
"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_server_name": "Ugyldig tjenernavn",
|
||||
"form_error_positive": "Må være høyere enn 0",
|
||||
"form_error_negative": "Må være ≥0",
|
||||
"range_end_error": "Må være høyere enn rekkeviddens start",
|
||||
"dhcp_form_gateway_input": "Gateway-IP",
|
||||
"dhcp_form_subnet_input": "Nettverksmaske",
|
||||
"dhcp_form_range_title": "Spennvidden til IP-adressene",
|
||||
@@ -109,7 +116,7 @@
|
||||
"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.",
|
||||
"filters_block_toggle_hint": "Du kan sette opp blokkeringsoppføringer i <a>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",
|
||||
@@ -127,7 +134,8 @@
|
||||
"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.",
|
||||
"upstream_dns_help": "Skriv inn tjeneradresser, én per linje. <a>Lær mer</a> om å konfigurere oppstrøms-DNS-tjenere.",
|
||||
"upstream_dns_configured_in_file": "Satt opp i {{path}}",
|
||||
"test_upstream_btn": "Test oppstrømstilkoblinger",
|
||||
"upstreams": "Oppstrømstjenere",
|
||||
"apply_btn": "Benytt",
|
||||
@@ -163,6 +171,7 @@
|
||||
"edit_blocklist": "Rediger blokkeringsliste",
|
||||
"edit_allowlist": "Rediger hviteliste",
|
||||
"choose_blocklist": "Velg blokkeringslister",
|
||||
"choose_allowlist": "Velg hvitelister",
|
||||
"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",
|
||||
@@ -180,6 +189,7 @@
|
||||
"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_doq": "kryptert <0>DNS-over-QUIC</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",
|
||||
@@ -188,6 +198,10 @@
|
||||
"dns_test_not_ok_toast": "Tjeneren «{{key}}» kunne ikke brukes, vennligst dobbeltsjekk at du har skrevet den riktig",
|
||||
"unblock": "Tillat",
|
||||
"block": "Blokker",
|
||||
"disallow_this_client": "Ikke tillat denne klienten",
|
||||
"allow_this_client": "Tillat denne klienten",
|
||||
"block_for_this_client_only": "Blokker kun for denne klienten",
|
||||
"unblock_for_this_client_only": "Opphev blokkering kun for denne enheten",
|
||||
"time_table_header": "Tidspunkt",
|
||||
"date": "Dato",
|
||||
"domain_name_table_header": "Domenenavn",
|
||||
@@ -207,8 +221,8 @@
|
||||
"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",
|
||||
"rule_removed_from_custom_filtering_toast": "Oppføringen ble fjernet fra de selvvalgte filtreringsreglene: {{rule}}",
|
||||
"rule_added_to_custom_filtering_toast": "Oppføringen ble lagt til i de selvvalgte filtreringsreglene: {{rule}}",
|
||||
"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?",
|
||||
@@ -224,15 +238,23 @@
|
||||
"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",
|
||||
"dns_cache_config": "DNS-mellomlageroppsett",
|
||||
"dns_cache_config_desc": "Her kan du justere DNS-mellomlageret",
|
||||
"blocking_mode": "Blokkeringsmodus",
|
||||
"default": "Standardmodus",
|
||||
"nxdomain": "NXDOMAIN",
|
||||
"refused": "REFUSED",
|
||||
"null_ip": "Null-IP",
|
||||
"custom_ip": "Tilpasset IP",
|
||||
"blocking_ipv4": "IPv4-blokkering",
|
||||
"blocking_ipv6": "IPv6-blokkering",
|
||||
"dnscrypt": "DNSCrypt",
|
||||
"dns_over_https": "DNS-over-HTTPS",
|
||||
"dns_over_tls": "DNS-over-TLS",
|
||||
"dns_over_quic": "DNS-over-QUIC",
|
||||
"client_id": "Klient-ID",
|
||||
"download_mobileconfig_doh": "Last ned .mobileconfig for DNS-over-HTTPS",
|
||||
"download_mobileconfig_dot": "Last ned .mobileconfig for DNS-over-TLS",
|
||||
"plain_dns": "Ordinær DNS",
|
||||
"form_enter_rate_limit": "Skriv inn forespørselsfrekvensgrense",
|
||||
"rate_limit": "Forespørselsfrekvensgrense",
|
||||
@@ -241,7 +263,8 @@
|
||||
"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_default": "Standard: Svar med null-IP-adresse (0.0.0.0 for A; :: for AAAA) når den blokkeres av adblock-aktige oppføringer; svar med IP-adressen som er spesifisert i oppføringen når den blokkeres av /etc/hosts-typeoppføringer",
|
||||
"blocking_mode_refused": "REFUSED: Svar med REFUSED-koden",
|
||||
"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",
|
||||
@@ -250,7 +273,6 @@
|
||||
"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",
|
||||
@@ -311,13 +333,14 @@
|
||||
"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_doq": "'DNS-over-QUIC'-port",
|
||||
"encryption_doq_desc": "Dersom denne porten er satt opp, vil AdGuard Home kjøre en DNS-over-QUIC-tjener på denne porten. Den er eksperimentell og vil kanskje ikke være pålitelig. I tillegg er det ikke så altfor mange klienter som støtter det for øyeblikket.",
|
||||
"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.",
|
||||
@@ -351,7 +374,7 @@
|
||||
"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.",
|
||||
"update_failed": "Auto-oppdatering mislyktes. Vennligst <a>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",
|
||||
@@ -365,7 +388,6 @@
|
||||
"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",
|
||||
@@ -396,7 +418,7 @@
|
||||
"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_3": "<0>Her er en liste over programvarer 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.",
|
||||
@@ -446,6 +468,7 @@
|
||||
"domain": "Domene",
|
||||
"answer": "Svar",
|
||||
"filter_added_successfully": "Filteret har blitt vellykket lagt til",
|
||||
"filter_removed_successfully": "Listen ble vellykket fjernet",
|
||||
"filter_updated": "Listen ble vellykket oppdatert",
|
||||
"statistics_configuration": "Statistikk-oppsett",
|
||||
"statistics_retention": "Statistikkbeholding",
|
||||
@@ -476,10 +499,15 @@
|
||||
"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",
|
||||
"blocked_by_cname_or_ip": "Blokkert av 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.",
|
||||
"rewrite_ip_address": "IP-adresse: Bruk denne IP-en i en A- eller AAAA-respons",
|
||||
"rewrite_domain_name": "Domenenavn: Legg til en CNAME-statutt",
|
||||
"rewrite_A": "<0>A</0>: spesialverdi, behold <0>A</0>-statutter fra oppstrømstjeneren",
|
||||
"rewrite_AAAA": "<0>AAAA</0>: spesialverdi, behold <0>AAAA</0>-statutter fra oppstrømstjeneren",
|
||||
"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",
|
||||
@@ -501,8 +529,8 @@
|
||||
"check_ip": "IP-adresser: {{ip}}",
|
||||
"check_cname": "CNAME: {{cname}}",
|
||||
"check_reason": "Årsak: {{reason}}",
|
||||
"check_rule": "Oppføring: {{rule}}",
|
||||
"check_service": "Tjenestenavn: {{service}}",
|
||||
"service_name": "Tjenestenavn",
|
||||
"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}}»?",
|
||||
@@ -520,6 +548,7 @@
|
||||
"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",
|
||||
"all_queries": "Alle forespørsler",
|
||||
"show_blocked_responses": "Blokkért",
|
||||
"show_whitelisted_responses": "Hvitelistet",
|
||||
"show_processed_responses": "Bearbeidet",
|
||||
@@ -533,11 +562,28 @@
|
||||
"blocklist": "Blokkeringsliste",
|
||||
"milliseconds_abbreviation": "ms",
|
||||
"cache_size": "Mellomlagerstørrelse",
|
||||
"enter_cache_size": "Skriv inn mellomlagerstørrelse",
|
||||
"cache_size_desc": "DNS-mellomlagerstørrelse (i bytes)",
|
||||
"cache_ttl_min_override": "Overstyr minimumslevetiden",
|
||||
"cache_ttl_max_override": "Overstyr maksimallevetiden",
|
||||
"enter_cache_size": "Skriv inn mellomlagerstørrelse (i bytes)",
|
||||
"enter_cache_ttl_min_override": "Skriv inn minimumslevetiden (i sekunder)",
|
||||
"enter_cache_ttl_max_override": "Skriv inn maksimallevetiden (i sekunder)",
|
||||
"cache_ttl_min_override_desc": "Overstyr korte levetidsverdier (i sekunder) som mottas fra oppstrømstjeneren under mellomlagring av DNS-responser",
|
||||
"cache_ttl_max_override_desc": "Velg en maks-levetidsverdi (i sekunder) for oppføringer i DNS-mellomlageret",
|
||||
"ttl_cache_validation": "Minimums-mellomlagringslevetidsverdien må være mindre enn eller det samme som maksverdien",
|
||||
"filter_category_general": "Generelt",
|
||||
"filter_category_security": "Sikkerhet",
|
||||
"filter_category_regional": "Regional",
|
||||
"filter_category_other": "Andre",
|
||||
"filter_category_general_desc": "Lister som blokkerer sporing og reklamer på de fleste enheter",
|
||||
"filter_category_security_desc": "Lister som spesialiserer seg på å blokkere skadevare-, phishing- eller svindeldomener",
|
||||
"filter_category_regional_desc": "Lister som fokuserer på regionale reklamer og sporingstjenere",
|
||||
"filter_category_other_desc": "Andre blokkeringslister",
|
||||
"click_to_view_queries": "Klikk for å vise forespørsler"
|
||||
"setup_config_to_enable_dhcp_server": "Oppsett for å skru på DHCP-tjeneren",
|
||||
"original_response": "Opprinnelig svar",
|
||||
"click_to_view_queries": "Klikk for å vise forespørsler",
|
||||
"port_53_faq_link": "Port 53 er ofte opptatt av «DNSStubListener»- eller «systemd-resolved»-tjenestene. Vennligst les <0>denne instruksjonen</0> om hvordan man løser dette.",
|
||||
"adg_will_drop_dns_queries": "AdGuard Home vil droppe alle DNS-forespørsler fra denne klienten.",
|
||||
"client_not_in_allowed_clients": "Klienten er ikke tillatt, fordi den ikke er i «Tillatte klienter»-listen.",
|
||||
"experimental": "Eksperimentell"
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"client_settings": "Ustawienia klienta",
|
||||
"example_upstream_reserved": "możesz określić serwer DNS <0>dla konkretnych domen</0>",
|
||||
"example_upstream_comment": "Możesz wpisać komentarz",
|
||||
"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",
|
||||
@@ -11,6 +12,8 @@
|
||||
"save_config": "Zapisz konfigurację",
|
||||
"enabled_dhcp": "Serwer DHCP włączony",
|
||||
"disabled_dhcp": "Serwer DHCP wyłączony",
|
||||
"unavailable_dhcp": "Serwer DHCP jest niedostępny",
|
||||
"unavailable_dhcp_desc": "AdGuard Home nie może uruchomić serwera DHCP na Twoim systemie operacyjnym",
|
||||
"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",
|
||||
@@ -21,14 +24,18 @@
|
||||
"dhcp_static_leases": "Dzierżawy statyczne DHCP",
|
||||
"dhcp_leases_not_found": "Nie znaleziono dzierżaw DHCP",
|
||||
"dhcp_config_saved": "Konfiguracja DHCP pomyślnie zapisana",
|
||||
"dhcp_ipv4_settings": "Ustawienia serwera DHCP IPv4",
|
||||
"dhcp_ipv6_settings": "Ustawienia serwera DHCP IPv6",
|
||||
"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_server_name": "Nieprawidłowa nazwa serwera",
|
||||
"form_error_positive": "Musi być większa niż 0",
|
||||
"form_error_negative": "Musi być równy 0 lub większy",
|
||||
"range_end_error": "Zakres musi być większy niż początkowy",
|
||||
"dhcp_form_gateway_input": "Adres IP bramy",
|
||||
"dhcp_form_subnet_input": "Maska podsieci",
|
||||
"dhcp_form_range_title": "Zakres adresów IP",
|
||||
@@ -109,7 +116,7 @@
|
||||
"average_processing_time": "Średni czas przetwarzania",
|
||||
"average_processing_time_hint": "Średni czas przetwarzania żądania DNS liczony w milisekundach",
|
||||
"block_domain_use_filters_and_hosts": "Zablokuj 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> ",
|
||||
"filters_block_toggle_hint": "Możesz skonfigurować reguły blokowania w ustawieniach <a>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",
|
||||
@@ -127,7 +134,8 @@
|
||||
"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.",
|
||||
"upstream_dns_help": "Wpisz adresy serwerów po jednym w każdym wierszu. <a>Dowiedz się więcej </a> o konfigurowaniu głównych serwerów DNS.",
|
||||
"upstream_dns_configured_in_file": "Skonfigurowano w {{path}}",
|
||||
"test_upstream_btn": "Test głównych serwerów DNS",
|
||||
"upstreams": "Główne serwery DNS",
|
||||
"apply_btn": "Zastosuj",
|
||||
@@ -181,6 +189,7 @@
|
||||
"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_doq": "zaszyfrowany <0>DNS-over-QUIC</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",
|
||||
@@ -189,6 +198,10 @@
|
||||
"dns_test_not_ok_toast": "Serwer \"{{key}}\": nie można go użyć, sprawdź, czy napisałeś go poprawnie",
|
||||
"unblock": "Odblokuj",
|
||||
"block": "Zablokuj",
|
||||
"disallow_this_client": "Odrzuć tego klienta",
|
||||
"allow_this_client": "Pozwól temu klientowi",
|
||||
"block_for_this_client_only": "Zablokuj tylko tego klienta",
|
||||
"unblock_for_this_client_only": "Odblokuj tylko tego klienta",
|
||||
"time_table_header": "Czas",
|
||||
"date": "Data",
|
||||
"domain_name_table_header": "Nazwa domeny",
|
||||
@@ -208,8 +221,8 @@
|
||||
"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",
|
||||
"rule_removed_from_custom_filtering_toast": "Reguła usunięta z niestandardowych reguł filtrowania: {{rule}}",
|
||||
"rule_added_to_custom_filtering_toast": "Reguła dodana do niestandardowych reguł filtrowania: {{rule}}",
|
||||
"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ń?",
|
||||
@@ -230,21 +243,31 @@
|
||||
"blocking_mode": "Tryb blokowania",
|
||||
"default": "Domyślny",
|
||||
"nxdomain": "NXDOMAIN",
|
||||
"refused": "REFUSED",
|
||||
"null_ip": "Null IP",
|
||||
"custom_ip": "Niestandardowy adres IP",
|
||||
"blocking_ipv4": "Blokowanie IPv4",
|
||||
"blocking_ipv6": "Blokowanie IPv6",
|
||||
"dnscrypt": "DNSCrypt",
|
||||
"dns_over_https": "DNS-over-HTTPS",
|
||||
"dns_over_tls": "DNS-over-TLS",
|
||||
"dns_over_quic": "DNS-over-QUIC",
|
||||
"client_id": "ID klienta",
|
||||
"client_id_placeholder": "Wpisz ID klienta",
|
||||
"client_id_desc": "Różnych klientów można zidentyfikować za pomocą specjalnego ID klienta. <a>Tutaj</a> możesz dowiedzieć się więcej o tym, jak identyfikować klientów.",
|
||||
"download_mobileconfig_doh": "Pobierz plik .mobileconfig dla DNS-over-HTTPS",
|
||||
"download_mobileconfig_dot": "Pobierz plik .mobileconfig dla DNS-over-TLS",
|
||||
"download_mobileconfig": "Pobierz plik konfiguracyjny",
|
||||
"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)",
|
||||
"rate_limit_desc": "Liczba żądań na sekundę, które może wykonać pojedynczy klient (ustawienie 0 oznacza nieograniczoną liczbę)",
|
||||
"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_default": "Domyślna: Odpowiedz z zerowym adresem IP (0.0.0.0 dla A; :: dla AAAA) po zablokowaniu przez regułę Adblock; odpowiedź adresem IP wpisanym w regule, jeśli jest blokowany przez regułę w stylu /etc/hosts",
|
||||
"blocking_mode_refused": "REFUSED: Odpowiedz kodem REFUSED",
|
||||
"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",
|
||||
@@ -253,7 +276,7 @@
|
||||
"source_label": "Źródło",
|
||||
"found_in_known_domain_db": "Znaleziono w bazie danych znanych domen.",
|
||||
"category_label": "Kategoria",
|
||||
"rule_label": "Reguła",
|
||||
"rule_label": "Reguła(y)",
|
||||
"list_label": "Lista",
|
||||
"unknown_filter": "Nieznany filtr {{filterId}}",
|
||||
"known_tracker": "Znany element śledzący",
|
||||
@@ -314,13 +337,15 @@
|
||||
"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_server_desc": "Aby korzystać z protokołu HTTPS, musisz wprowadzić nazwę serwera, która jest zgodna z certyfikatem SSL lub certyfikatem typu wildcard. Jeśli pole nie jest ustawione, będzie akceptować połączenia TLS dla dowolnej domeny.",
|
||||
"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_doq": "Port DNS-over-QUIC",
|
||||
"encryption_doq_desc": "Jeśli ten port jest skonfigurowany, AdGuard Home uruchomi serwer DNS-over-QUIC na tym porcie. Jest to funkcja eksperymentalna i może nie być stabilna. Ponadto, w tej chwili nie ma zbyt wielu klientów, którzy go obsługują.",
|
||||
"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.",
|
||||
@@ -354,7 +379,7 @@
|
||||
"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.",
|
||||
"update_failed": "Automatyczna aktualizacja nie powiodła się. Proszę <a>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",
|
||||
@@ -368,7 +393,7 @@
|
||||
"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>",
|
||||
"client_identifier_desc": "Klientów można zidentyfikować po adresie IP, CIDR, adresie MAC lub specjalnym identyfikatorze klienta (może służyć do DoT/DoH/DoQ). <0>Tutaj</0> możesz dowiedzieć się więcej o tym, jak identyfikować klientów.",
|
||||
"form_enter_ip": "Wpisz adres IP",
|
||||
"form_enter_mac": "Wpisz adres MAC",
|
||||
"form_enter_id": "Wpisz identyfikator",
|
||||
@@ -399,7 +424,8 @@
|
||||
"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_3": "<0>Oto lista oprogramowania, którego możesz użyć.</0>",
|
||||
"setup_dns_privacy_4": "Na urządzeniu iOS 14 lub macOS Big Sur możesz pobrać specjalny plik '.mobileconfig', który dodaje serwery <highlight>DNS-over-HTTPS</highlight> lub <highlight>DNS-over-TLS</highlight> do ustawień DNS.",
|
||||
"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.",
|
||||
@@ -411,6 +437,7 @@
|
||||
"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_privacy_ioc_mac": "Konfiguracja iOS i macOS",
|
||||
"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",
|
||||
@@ -510,8 +537,8 @@
|
||||
"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}}",
|
||||
"service_name": "Nazwa usługi",
|
||||
"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}}\"?",
|
||||
@@ -546,13 +573,12 @@
|
||||
"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}}",
|
||||
"enter_cache_size": "Wpisz rozmiar pamięci podręcznej (w bajtach)",
|
||||
"enter_cache_ttl_min_override": "Wpisz minimalną wartość TTL (w sekundach)",
|
||||
"enter_cache_ttl_max_override": "Wpisz maksymalną wartość TTL (w sekundach)",
|
||||
"cache_ttl_min_override_desc": "Zastąp wartość TTL (w sekundach) otrzymaną z serwera nadrzędnego podczas buforowania odpowiedzi DNS",
|
||||
"cache_ttl_max_override_desc": "Ustaw maksymalną wartość TTL (w sekundach) dla wpisów w pamięci podręcznej DNS",
|
||||
"ttl_cache_validation": "Minimalna pamięć podręczna wartości TTL musi być mniejsza lub równa maksymalnej wartości",
|
||||
"filter_category_general": "Ogólne",
|
||||
"filter_category_security": "Bezpieczeństwo",
|
||||
"filter_category_regional": "Regionalne",
|
||||
@@ -561,7 +587,11 @@
|
||||
"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",
|
||||
"setup_config_to_enable_dhcp_server": "Ustaw konfigurację serwera DHCP, aby go włączyć",
|
||||
"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ć."
|
||||
"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ć.",
|
||||
"adg_will_drop_dns_queries": "AdGuard Home odrzuci zapytanie DNS od tego klienta.",
|
||||
"client_not_in_allowed_clients": "Klient nie jest dozwolony, ponieważ nie ma go na liście „Dozwoleni klienci”.",
|
||||
"experimental": "Funkcja eksperymentalna"
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"client_settings": "Configurações do cliente",
|
||||
"example_upstream_reserved": "Você pode especificar o DNS upstream <0>para o domínio(s) especifico</0>",
|
||||
"example_upstream_reserved": "Você pode especificar o DNS primário <0>para o domínio(s) especifico</0>",
|
||||
"example_upstream_comment": "Você pode especificar o comentário",
|
||||
"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",
|
||||
@@ -11,6 +12,8 @@
|
||||
"save_config": "Salvar configuração",
|
||||
"enabled_dhcp": "Servidor DHCP ativado",
|
||||
"disabled_dhcp": "Servidor DHCP desativado",
|
||||
"unavailable_dhcp": "DHCP não está disponível",
|
||||
"unavailable_dhcp_desc": "O AdGuard Home não pode executar um servidor DHCP em seu sistema operacional",
|
||||
"dhcp_title": "Servidor DHCP (experimental)",
|
||||
"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",
|
||||
@@ -21,14 +24,18 @@
|
||||
"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",
|
||||
"dhcp_ipv4_settings": "Configurações DHCP IPv4",
|
||||
"dhcp_ipv6_settings": "Configurações DHCP IPv6",
|
||||
"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_server_name": "Nome de servidor inválido",
|
||||
"form_error_positive": "Deve ser maior que 0",
|
||||
"form_error_negative": "Deve ser igual ou superior a 0",
|
||||
"range_end_error": "Deve ser maior que o início do intervalo",
|
||||
"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",
|
||||
@@ -67,7 +74,7 @@
|
||||
"filters": "Filtros",
|
||||
"filter": "Filtro",
|
||||
"query_log": "Registro de consultas",
|
||||
"compact": "Compactar",
|
||||
"compact": "Compacto",
|
||||
"nothing_found": "Nada encontrado",
|
||||
"faq": "FAQ",
|
||||
"version": "Versão",
|
||||
@@ -109,7 +116,7 @@
|
||||
"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>.",
|
||||
"filters_block_toggle_hint": "Você pode configurar as regras de bloqueio nas configurações de <a>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 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 controle parental do AdGuard",
|
||||
@@ -119,17 +126,18 @@
|
||||
"no_servers_specified": "Nenhum servidor especificado",
|
||||
"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.",
|
||||
"dns_blocklists": "Listas de bloqueio de DNS",
|
||||
"dns_allowlists": "Listas de permissões de DNS",
|
||||
"dns_blocklists_desc": "O AdGuard Home bloqueará domínios que correspondam às listas de bloqueio.",
|
||||
"dns_allowlists_desc": "Os domínios das listas de permissões de DNS serão permitidos mesmo que estejam em qualquer uma das listas de bloqueio.",
|
||||
"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ê 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",
|
||||
"upstream_dns": "Servidores DNS primário",
|
||||
"upstream_dns_help": "Insira os endereços dos servidores, um por linha. <a>Saber mais</a> sobre a configuração de servidores DNS primários.",
|
||||
"upstream_dns_configured_in_file": "Configurado em {{path}}",
|
||||
"test_upstream_btn": "Testar DNS primário",
|
||||
"upstreams": "DNS primário",
|
||||
"apply_btn": "Aplicar",
|
||||
"disabled_filtering_toast": "Filtragem desativada",
|
||||
"enabled_filtering_toast": "Filtragem ativada",
|
||||
@@ -150,22 +158,22 @@
|
||||
"delete_table_action": "Excluir",
|
||||
"elapsed": "Tempo decorrido",
|
||||
"filters_and_hosts_hint": "O AdGuard Home entende regras básicas de bloqueio de anúncios e a sintaxe de arquivos de hosts.",
|
||||
"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",
|
||||
"no_blocklist_added": "Nenhuma lista de bloqueio adicionada",
|
||||
"no_whitelist_added": "Nenhuma lista de permissões foi adicionada",
|
||||
"add_blocklist": "Adicionar lista de bloqueio",
|
||||
"add_allowlist": "Adicionar lista de permissões",
|
||||
"cancel_btn": "Cancelar",
|
||||
"enter_name_hint": "Digite o nome",
|
||||
"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.",
|
||||
"new_blocklist": "Nova lista de bloqueio",
|
||||
"new_allowlist": "Nova lista de permissão",
|
||||
"edit_blocklist": "Editar lista de bloqueio",
|
||||
"edit_allowlist": "Editar lista de permissões",
|
||||
"choose_blocklist": "Escolher as listasde bloqueio",
|
||||
"choose_allowlist": "Escolher as listas de permissões",
|
||||
"enter_valid_blocklist": "Digite um URL válido para a lista de bloqueio.",
|
||||
"enter_valid_allowlist": "Digite uma URL válida para a lista de permissões.",
|
||||
"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",
|
||||
@@ -181,6 +189,7 @@
|
||||
"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_doq": "<0>DNS-sobre-QUIC</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",
|
||||
@@ -189,6 +198,10 @@
|
||||
"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",
|
||||
"disallow_this_client": "Não permitir este cliente",
|
||||
"allow_this_client": "Permitir este cliente",
|
||||
"block_for_this_client_only": "Bloquear apenas para este cliente",
|
||||
"unblock_for_this_client_only": "Desbloquear apenas para este cliente",
|
||||
"time_table_header": "Data",
|
||||
"date": "Data",
|
||||
"domain_name_table_header": "Nome de domínio",
|
||||
@@ -208,8 +221,8 @@
|
||||
"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 às regras de filtragem personalizadas",
|
||||
"rule_removed_from_custom_filtering_toast": "Regra removida das regras de filtragem personalizadas: {{rule}}",
|
||||
"rule_added_to_custom_filtering_toast": "Regra adicionada às regras de filtragem personalizadas: {{rule}}",
|
||||
"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?",
|
||||
@@ -230,12 +243,21 @@
|
||||
"blocking_mode": "Modo de bloqueio",
|
||||
"default": "Padrão",
|
||||
"nxdomain": "NXDOMAIN",
|
||||
"refused": "REFUSED",
|
||||
"null_ip": "IP nulo",
|
||||
"custom_ip": "IP personalizado",
|
||||
"blocking_ipv4": "Bloqueando IPv4",
|
||||
"blocking_ipv6": "Bloqueando IPv6",
|
||||
"dnscrypt": "DNSCrypt",
|
||||
"dns_over_https": "DNS-sobre-HTTPS",
|
||||
"dns_over_tls": "DNS-sobre-TLS",
|
||||
"dns_over_quic": "DNS-sobre-QUIC",
|
||||
"client_id": "ID do cliente",
|
||||
"client_id_placeholder": "Digite o ID do cliente",
|
||||
"client_id_desc": "Diferentes clientes podem ser identificados por um ID de cliente especial. <a>Aqui</a> você pode aprender mais sobre como identificar clientes.",
|
||||
"download_mobileconfig_doh": "BAixar .mobileconfig para DNS-sobre-HTTPS",
|
||||
"download_mobileconfig_dot": "BAixar .mobileconfig para DNS-sobre-TLS",
|
||||
"download_mobileconfig": "Baixar arquivo de configuração",
|
||||
"plain_dns": "DNS simples",
|
||||
"form_enter_rate_limit": "Insira a taxa limite",
|
||||
"rate_limit": "Taxa limite",
|
||||
@@ -244,7 +266,8 @@
|
||||
"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_default": "Padrão: Responder com zero endereço IP (0.0.0.0 para A; :: para AAAA) quando bloqueado pela regra de estilo Adblock; responde com o endereço IP especificado na regra quando bloqueado pela regra /etc/hosts-style",
|
||||
"blocking_mode_refused": "REFUSED: responder com o código REFUSED",
|
||||
"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",
|
||||
@@ -253,7 +276,7 @@
|
||||
"source_label": "Fonte",
|
||||
"found_in_known_domain_db": "Encontrado no banco de dados de domínios conhecidos.",
|
||||
"category_label": "Categoria",
|
||||
"rule_label": "Regra",
|
||||
"rule_label": "Regra(s)",
|
||||
"list_label": "Lista",
|
||||
"unknown_filter": "Filtro desconhecido {{filterId}}",
|
||||
"known_tracker": "Rastreador conhecido",
|
||||
@@ -314,13 +337,15 @@
|
||||
"encryption_config_saved": "Configuração de criptografia salva",
|
||||
"encryption_server": "Nome do servidor",
|
||||
"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_server_desc": "Para usar HTTPS, você precisa inserir o nome do servidor que corresponda ao seu certificado SSL ou certificado curinga. Se o campo não estiver definido, ele aceitará conexões TLS para qualquer domínio.",
|
||||
"encryption_redirect": "Redirecionar automaticamente para HTTPS",
|
||||
"encryption_redirect_desc": "Se marcado, o AdGuard Home irá redirecionar 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_doq": "Porta DNS-sobre-QUIC",
|
||||
"encryption_doq_desc": "Se esta porta estiver configurada, o AdGuard Home executará um servidor DNS-sobre-QUIC nesta porta. É experimental e pode não ser confiável. Além disso, não há muitos clientes que ofereçam suporte no momento.",
|
||||
"encryption_certificates": "Certificados",
|
||||
"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.",
|
||||
@@ -354,7 +379,7 @@
|
||||
"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.",
|
||||
"update_failed": "A atualização automática falhou. Por favor, <a>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",
|
||||
@@ -368,7 +393,7 @@
|
||||
"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>",
|
||||
"client_identifier_desc": "Os clientes podem ser identificados pelo endereço IP, CIDR, Endereço MAC ou um ID de cliente especial (pode ser usado para DoT/DoH/DoQ). <0>Aqui</0> você pode aprender mais sobre como identificar clientes.",
|
||||
"form_enter_ip": "Digite o endereço de IP",
|
||||
"form_enter_mac": "Digite o endereço MAC",
|
||||
"form_enter_id": "Inserir identificador",
|
||||
@@ -399,7 +424,8 @@
|
||||
"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_3": "<0>Aqui está uma lista de softwares que você pode usar.</0>",
|
||||
"setup_dns_privacy_4": "Em um dispositivo iOS 14 ou macOS Big Sur, você pode baixar o arquivo especial '.mobileconfig' que adiciona os servidores <highlight>DNS-sobre-HTTPS</highlight> ou <highlight>DNS-sobre-TLS</highlight> nas configurações de DNS.",
|
||||
"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.",
|
||||
@@ -411,6 +437,7 @@
|
||||
"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_privacy_ioc_mac": "configuração para iOS e macOS",
|
||||
"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",
|
||||
@@ -480,6 +507,7 @@
|
||||
"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",
|
||||
"blocked_by_cname_or_ip": "Bloqueado por CNAME ou IP",
|
||||
"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.",
|
||||
@@ -487,14 +515,14 @@
|
||||
"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",
|
||||
"rewrite_AAAA": "<0>AAAA</0>: valor especial, mantenha <0>AAAA</0> nos registros do servidor DNS primário",
|
||||
"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.",
|
||||
"autofix_warning_result": "Como resultado, todos as solicitações DNS do seu sistema serão processadas pelo AdGuard Home 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",
|
||||
@@ -509,8 +537,8 @@
|
||||
"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}}",
|
||||
"service_name": "Nome do serviço",
|
||||
"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}}\"?",
|
||||
@@ -528,6 +556,7 @@
|
||||
"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",
|
||||
"all_queries": "Todas as consultas",
|
||||
"show_blocked_responses": "Bloqueado",
|
||||
"show_whitelisted_responses": "Na lista branca",
|
||||
"show_processed_responses": "Processado",
|
||||
@@ -538,19 +567,18 @@
|
||||
"filtered": "Filtrado",
|
||||
"rewritten": "Reescrito",
|
||||
"safe_search": "Pesquisa segura",
|
||||
"blocklist": "Lista negra",
|
||||
"blocklist": "Lista de bloqueio",
|
||||
"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}}",
|
||||
"enter_cache_size": "Digite o tamanho do cache (bytes)",
|
||||
"enter_cache_ttl_min_override": "Digite o TTL máximo (segundos)",
|
||||
"enter_cache_ttl_max_override": "Digite o TTL máximo (segundos)",
|
||||
"cache_ttl_min_override_desc": "Prolongue os valores de curta duração (segundos) recebidos do servidor primário ao armazenar em cache as respostas DNS",
|
||||
"cache_ttl_max_override_desc": "Defina um valor máximo de tempo de vida (segundos) para entradas no cache DNS",
|
||||
"ttl_cache_validation": "O valor TTL mínimo do cache deve ser menor ou igual ao valor máximo",
|
||||
"filter_category_general": "Geral",
|
||||
"filter_category_security": "Segurança",
|
||||
"filter_category_regional": "Regional",
|
||||
@@ -558,6 +586,12 @@
|
||||
"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"
|
||||
"filter_category_other_desc": "Outras listas de bloqueio",
|
||||
"setup_config_to_enable_dhcp_server": "Configure a configuração para habilitar o servidor DHCP",
|
||||
"original_response": "Resposta original",
|
||||
"click_to_view_queries": "Clique para ver as consultas",
|
||||
"port_53_faq_link": "A porta 53 é frequentemente ocupada por serviços \"DNSStubListener\" ou \"systemd-resolved\". Por favor leia <0>essa instrução</0> para resolver isso.",
|
||||
"adg_will_drop_dns_queries": "O AdGuard Home descartará todas as consultas DNS deste cliente.",
|
||||
"client_not_in_allowed_clients": "O cliente não é permitido porque não está na lista \"Clientes permitidos\".",
|
||||
"experimental": "Experimental"
|
||||
}
|
||||
@@ -1,13 +1,19 @@
|
||||
{
|
||||
"client_settings": "Definições do cliente",
|
||||
"example_upstream_reserved": "pode especificar um DNS upstream <0>para domínio(s) especifico(s)</0>",
|
||||
"example_upstream_reserved": "Podes especificar um DNS primário <0>para domínio(s) especifico(s)</0>",
|
||||
"example_upstream_comment": "Tu podes especificar o comentário",
|
||||
"upstream_parallel": "Usar consultas paralelas para acelerar a resolução consultando simultaneamente todos os servidores upstream",
|
||||
"bootstrap_dns": "Servidores DNS de inicialização",
|
||||
"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 arranque",
|
||||
"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",
|
||||
"save_config": "Guardar definição",
|
||||
"enabled_dhcp": "Servidor DHCP activado",
|
||||
"disabled_dhcp": "Servidor DHCP desactivado",
|
||||
"unavailable_dhcp": "DHCP não está disponível",
|
||||
"unavailable_dhcp_desc": "O AdGuard Home não pode executar um servidor DHCP em seu sistema operacional",
|
||||
"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",
|
||||
@@ -17,15 +23,19 @@
|
||||
"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",
|
||||
"dhcp_config_saved": "Definições DHCP guardadas com sucesso",
|
||||
"dhcp_ipv4_settings": "Definições DHCP IPv4",
|
||||
"dhcp_ipv6_settings": "Definições DHCP IPv6",
|
||||
"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_server_name": "Nome de servidor inválido",
|
||||
"form_error_positive": "Deve ser maior que 0",
|
||||
"form_error_negative": "Deve ser igual ou superior a 0",
|
||||
"range_end_error": "Deve ser maior que o início do intervalo",
|
||||
"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",
|
||||
@@ -36,6 +46,7 @@
|
||||
"dhcp_interface_select": "Seleccione a interface DHCP",
|
||||
"dhcp_hardware_address": "Endereço de hardware",
|
||||
"dhcp_ip_addresses": "Endereços de IP",
|
||||
"ip": "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!",
|
||||
@@ -47,18 +58,28 @@
|
||||
"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?",
|
||||
"dhcp_reset": "Tem a certeza de que deseja repor a definição de DHCP?",
|
||||
"country": "País",
|
||||
"city": "Cidade",
|
||||
"delete_confirm": "Tem a certeza de que deseja excluir \"{{key}}\"?",
|
||||
"form_enter_hostname": "Insira 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": "Retroceder",
|
||||
"dashboard": "Painel",
|
||||
"settings": "Definições",
|
||||
"filters": "Filtros",
|
||||
"filter": "Filtro",
|
||||
"query_log": "Registo de consultas",
|
||||
"faq": "Perguntas frequentes",
|
||||
"compact": "Compacto",
|
||||
"nothing_found": "Nada encontrado",
|
||||
"faq": "FAQ",
|
||||
"version": "Versão",
|
||||
"address": "Endereço",
|
||||
"protocol": "Protocolo",
|
||||
"on": "LIGADO",
|
||||
"off": "DESLIGADO",
|
||||
"copyright": "Copyright",
|
||||
@@ -71,7 +92,7 @@
|
||||
"disabled_protection": "Desactivar protecção",
|
||||
"refresh_statics": "Repor estatísticas",
|
||||
"dns_query": "Consultas de DNS",
|
||||
"blocked_by": "<0>Bloqueado por Filtros</0>",
|
||||
"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",
|
||||
@@ -95,7 +116,7 @@
|
||||
"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>.",
|
||||
"filters_block_toggle_hint": "Pode configurar as regras de bloqueio nas configurações de <a>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",
|
||||
@@ -105,12 +126,18 @@
|
||||
"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",
|
||||
"dns_blocklists": "Lista de bloqueio de DNS",
|
||||
"dns_allowlists": "Listas de permissões de DNS",
|
||||
"dns_blocklists_desc": "O AdGuard Home bloqueará domínios que correspondam às listas de bloqueio.",
|
||||
"dns_allowlists_desc": "Os domínios das listas de permissões de DNS serão permitidos mesmo que estejam em qualquer uma das listas de bloqueio.",
|
||||
"custom_filtering_rules": "Regras de filtragem personalizadas",
|
||||
"encryption_settings": "Definições de criptografia",
|
||||
"dhcp_settings": "Definições de DHCP",
|
||||
"upstream_dns": "Servidores DNS primário",
|
||||
"upstream_dns_help": "Insira os endereços dos servidores, um por linha. <a>Saber mais</a> sobre a definição de servidores DNS primários.",
|
||||
"upstream_dns_configured_in_file": "Configurado em {{path}}",
|
||||
"test_upstream_btn": "Testar DNS primário",
|
||||
"upstreams": "DNS primário",
|
||||
"apply_btn": "Aplicar",
|
||||
"disabled_filtering_toast": "Filtragem desactivada",
|
||||
"enabled_filtering_toast": "Filtragem activada",
|
||||
@@ -122,15 +149,33 @@
|
||||
"enabled_save_search_toast": "Pesquisa segura activada",
|
||||
"enabled_table_header": "Activados",
|
||||
"name_table_header": "Nome",
|
||||
"list_url_table_header": "URL da lista",
|
||||
"rules_count_table_header": "Total de Regras",
|
||||
"last_time_updated_table_header": "Última actualização",
|
||||
"actions_table_header": "Acções",
|
||||
"request_table_header": "Solicitação",
|
||||
"edit_table_action": "Editar",
|
||||
"delete_table_action": "Apagar",
|
||||
"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 de bloqueio foi adicionada",
|
||||
"no_whitelist_added": "Nenhuma lista de permissões foi adicionada",
|
||||
"add_blocklist": "Adicionar lista de bloqueio",
|
||||
"add_allowlist": "Adicionar lista de permissões",
|
||||
"cancel_btn": "Cancelar",
|
||||
"enter_name_hint": "Insira o nome",
|
||||
"enter_url_or_path_hint": "Digite a URL ou o local da lista",
|
||||
"check_updates_btn": "Verificar actualizações",
|
||||
"new_blocklist": "Nova lista de bloqueio",
|
||||
"new_allowlist": "Nova lista de permissões",
|
||||
"edit_blocklist": "Editar lista de bloqueio",
|
||||
"edit_allowlist": "Editar lista de permissões",
|
||||
"choose_blocklist": "Escolher as listas de bloqueio",
|
||||
"choose_allowlist": "Escolher as listas de permissões",
|
||||
"enter_valid_blocklist": "Digite uma URL válida para a lista de bloqueio.",
|
||||
"enter_valid_allowlist": "Digite uma URL válida para a lista de permissões.",
|
||||
"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": "Insira uma regra por linha. Pode usar regras de bloqueio de anúncios ou a sintaxe de arquivos de hosts.",
|
||||
"examples_title": "Exemplos",
|
||||
@@ -141,21 +186,29 @@
|
||||
"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_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_doq": "<0>DNS-sobre-QUIC</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)",
|
||||
"all_lists_up_to_date_toast": "Todas as listas já estão atualizadas",
|
||||
"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",
|
||||
"disallow_this_client": "Não permitir este cliente",
|
||||
"allow_this_client": "Permitir este cliente",
|
||||
"block_for_this_client_only": "Bloquear apenas para este cliente",
|
||||
"unblock_for_this_client_only": "Desbloquear apenas para este cliente",
|
||||
"time_table_header": "Data",
|
||||
"date": "Data",
|
||||
"domain_name_table_header": "Nome do 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",
|
||||
@@ -168,12 +221,13 @@
|
||||
"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",
|
||||
"rule_removed_from_custom_filtering_toast": "Regra removida das regras de filtragem personalizadas: {{rule}}",
|
||||
"rule_added_to_custom_filtering_toast": "Regra adicionada às regras de filtragem personalizadas: {{rule}}",
|
||||
"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_updated": "O registro da consulta foi actualizado com sucesso",
|
||||
"query_log_clear": "Limpar registos de consulta",
|
||||
"query_log_retention": "Retenção de registos de consulta",
|
||||
"query_log_enable": "Activar registo",
|
||||
@@ -181,13 +235,30 @@
|
||||
"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",
|
||||
"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": "Definição do servidor DNS",
|
||||
"dns_cache_config": "Definiçã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",
|
||||
"refused": "REFUSED",
|
||||
"null_ip": "IP nulo",
|
||||
"custom_ip": "IP Personalizado",
|
||||
"blocking_ipv4": "A bloquear IPv4",
|
||||
"blocking_ipv6": "A bloquear IPv6",
|
||||
"dnscrypt": "DNSCrypt",
|
||||
"dns_over_https": "DNS-sobre-HTTPS",
|
||||
"dns_over_tls": "DNS-sobre-TLS",
|
||||
"dns_over_quic": "DNS-sobre-QUIC",
|
||||
"client_id": "ID do cliente",
|
||||
"client_id_placeholder": "Insira o ID do cliente",
|
||||
"client_id_desc": "Diferentes clientes podem ser identificados por um ID de cliente especial. <a>Aqui</a> você pode aprender mais sobre como identificar clientes.",
|
||||
"download_mobileconfig_doh": "Transferir .mobileconfig para DNS-sobre-HTTPS",
|
||||
"download_mobileconfig_dot": "Transferir .mobileconfig para DNS-sobre-TLS",
|
||||
"download_mobileconfig": "Transferir arquivo de configuração",
|
||||
"plain_dns": "DNS simples",
|
||||
"form_enter_rate_limit": "Insira o limite de taxa",
|
||||
"rate_limit": "Limite de taxa",
|
||||
"edns_enable": "Activar sub-rede do cliente EDNS",
|
||||
@@ -195,12 +266,20 @@
|
||||
"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",
|
||||
"blocking_mode_default": "Padrão: Responder com zero endereço IP (0.0.0.0 para A; :: para AAAA) quando bloqueado pela regra de estilo Adblock; responde com o endereço IP especificado na regra quando bloqueado pela regra /etc/hosts-style",
|
||||
"blocking_mode_refused": "REFUSED: responder com o código REFUSED",
|
||||
"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 mantiver esse campo vazio, o AdGuard Home usará os servidores configurados nas <0>Definições de DNS</0>.",
|
||||
"tracker_source": "Fonte do rastreador",
|
||||
"source_label": "Fonte",
|
||||
"found_in_known_domain_db": "Encontrado no banco de dados de domínios conhecido.",
|
||||
"category_label": "Categoria",
|
||||
"rule_label": "Regra",
|
||||
"rule_label": "Regra(s)",
|
||||
"list_label": "Lista",
|
||||
"unknown_filter": "Filtro desconhecido {{filterId}}",
|
||||
"known_tracker": "Rastreador conhecido",
|
||||
"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",
|
||||
@@ -222,13 +301,14 @@
|
||||
"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_submit_desc": "O procedimento de definiçã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_router_desc": "Esta definiçã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_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 repor 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_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 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.",
|
||||
@@ -254,16 +334,18 @@
|
||||
"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_config_saved": "Definiçã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_server_desc": "Para usar HTTPS, você precisa inserir o nome do servidor que corresponda ao seu certificado SSL ou certificado curinga. Se o campo não estiver definido, ele aceitará conexões TLS para qualquer domínio.",
|
||||
"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_doq": "Porta DNS-sobre-QUIC",
|
||||
"encryption_doq_desc": "Se esta porta estiver configurada, o AdGuard Home executará um servidor DNS-sobre-QUIC nesta porta. É experimental e pode não ser confiável. Além disso, não há demasiados clientes que ofereçam suporte no momento.",
|
||||
"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.",
|
||||
@@ -280,14 +362,14 @@
|
||||
"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?",
|
||||
"encryption_reset": "Tem a certeza de que deseja repor a definiçã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",
|
||||
"reset_settings": "Repor definiçõ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",
|
||||
@@ -297,7 +379,7 @@
|
||||
"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.",
|
||||
"update_failed": "A actualização automática falhou. Por favor, <a>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",
|
||||
@@ -311,22 +393,23 @@
|
||||
"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>",
|
||||
"client_identifier_desc": "Os clientes podem ser identificados pelo endereço IP, CIDR, Endereço MAC ou um ID de cliente especial (pode ser usado para DoT/DoH/DoQ). <0>Aqui</0> você pode aprender mais sobre como identificar clientes.",
|
||||
"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_global_settings": "Usar definiçõ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}}\"?",
|
||||
"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 acesso",
|
||||
"auto_clients_desc": "Dados dos clientes que usam o AdGuard Home, que não são armazenados na definição",
|
||||
"access_title": "Definiçõ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.",
|
||||
@@ -334,25 +417,27 @@
|
||||
"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",
|
||||
"access_settings_saved": "Definiçõ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_3": "<0>Aqui está uma lista de softwares que você pode usar.</0>",
|
||||
"setup_dns_privacy_4": "Em um dispositivo iOS 14 ou macOS Big Sur, você pode transferir o ficheiro especial '.mobileconfig' que adiciona os servidores <highlight>DNS-sobre-HTTPS</highlight> ou <highlight>DNS-sobre-TLS</highlight> nas definições de DNS.",
|
||||
"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_ios_2": "O <0>AdGuard para iOS</0> suporta a definiçã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_privacy_ioc_mac": "configuração para iOS e macOS",
|
||||
"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",
|
||||
@@ -361,6 +446,7 @@
|
||||
"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",
|
||||
"rewrite_hosts_applied": "Reescrito pela regra do arquivo de hosts",
|
||||
"dns_rewrites": "Reescritas de DNS",
|
||||
"form_domain": "Inserir domínio",
|
||||
"form_answer": "Insira o endereço de IP ou nome de domínio",
|
||||
@@ -382,15 +468,17 @@
|
||||
"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",
|
||||
"stats_params": "Definição de estatísticas",
|
||||
"config_successfully_saved": "Definiçã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",
|
||||
"filter_removed_successfully": "A lista foi removida com sucesso",
|
||||
"filter_updated": "O filtro atualizado com sucesso",
|
||||
"statistics_configuration": "Definiçã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",
|
||||
@@ -399,7 +487,7 @@
|
||||
"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_configuration": "Definição dos filtros",
|
||||
"filters_enable": "Activar filtros",
|
||||
"filters_interval": "Intervalo de actualização de filtros",
|
||||
"disabled": "Desactivado",
|
||||
@@ -407,7 +495,7 @@
|
||||
"username_placeholder": "Insira o nome de utilizador",
|
||||
"password_label": "Palavra-passe",
|
||||
"password_placeholder": "Insira palavra-passe",
|
||||
"sign_in": "Entrar",
|
||||
"sign_in": "Iniciar sessão",
|
||||
"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.",
|
||||
@@ -419,12 +507,91 @@
|
||||
"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",
|
||||
"blocked_by_cname_or_ip": "Bloqueado por CNAME ou IP",
|
||||
"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.",
|
||||
"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 servidor DNS primário",
|
||||
"disable_ipv6": "Desactivar 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>Desactivar 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 AdGuard Home por padrão.",
|
||||
"tags_title": "Etiquetas",
|
||||
"tags_desc": "Você pode selecionar as etiquetas 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": "Seleccione 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": "Insira o hostname",
|
||||
"filtered_custom_rules": "Filtrado pelas regras de filtragem personalizadas",
|
||||
"choose_from_list": "Escolher 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_service": "Nome do serviço: {{service}}",
|
||||
"service_name": "Nome do serviço",
|
||||
"check_not_found": "Não encontrado nas tuas 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 actualizada",
|
||||
"list_updated_plural": "{{count}} listas actualizadas",
|
||||
"dnssec_enable": "Activar 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",
|
||||
"all_queries": "Todas as consultas",
|
||||
"show_blocked_responses": "Bloqueado",
|
||||
"show_whitelisted_responses": "Lista Branca",
|
||||
"show_processed_responses": "Processado"
|
||||
"show_whitelisted_responses": "Na lista branca",
|
||||
"show_processed_responses": "Processado",
|
||||
"blocked_safebrowsing": "Bloqueado pela navegação segura",
|
||||
"blocked_adult_websites": "Sítios adultos bloqueados",
|
||||
"blocked_threats": "Ameaças bloqueadas",
|
||||
"allowed": "Permitido",
|
||||
"filtered": "Filtrado",
|
||||
"rewritten": "Reescrito",
|
||||
"safe_search": "Pesquisa segura",
|
||||
"blocklist": "Lista de bloqueio",
|
||||
"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 (bytes)",
|
||||
"enter_cache_ttl_min_override": "Digite o TTL máximo (segundos)",
|
||||
"enter_cache_ttl_max_override": "Digite o TTL máximo (segundos)",
|
||||
"cache_ttl_min_override_desc": "Prolongue os valores de curta duração (segundos) recebidos do servidor primário ao armazenar em cache as respostas DNS",
|
||||
"cache_ttl_max_override_desc": "Defina um valor máximo de tempo de vida (segundos) para entradas no cache DNS",
|
||||
"ttl_cache_validation": "O valor TTL mínimo do cache deve ser menor ou igual ao valor máximo",
|
||||
"filter_category_general": "Geral",
|
||||
"filter_category_security": "Segurança",
|
||||
"filter_category_regional": "Regional",
|
||||
"filter_category_other": "Noutro",
|
||||
"filter_category_general_desc": "Listas que bloqueiam o monitorização 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 monitorização",
|
||||
"filter_category_other_desc": "Outras listas de bloqueio",
|
||||
"setup_config_to_enable_dhcp_server": "Defina a definição para habilitar o servidor DHCP",
|
||||
"original_response": "Resposta original",
|
||||
"click_to_view_queries": "Clique para ver as consultas",
|
||||
"port_53_faq_link": "A porta 53 é frequentemente ocupada por serviços \"DNSStubListener\" ou \"systemd-resolved\". Por favor leia <0>essa instrução</0> para resolver isso.",
|
||||
"adg_will_drop_dns_queries": "O AdGuard Home descartará todas as consultas DNS deste cliente.",
|
||||
"client_not_in_allowed_clients": "O cliente não é permitido porque não está na lista \"Clientes permitidos\".",
|
||||
"experimental": "Experimental"
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"client_settings": "Setări client",
|
||||
"example_upstream_reserved": "Puteți preciza un DNS upstream <0>de domeniu(ii) specific(e)</0>",
|
||||
"example_upstream_reserved": "Puteți preciza un DNS în amonte <0>de domeniu(ii) specific(e)</0>",
|
||||
"example_upstream_comment": "Puteți specifica comentariul",
|
||||
"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",
|
||||
@@ -11,6 +12,8 @@
|
||||
"save_config": "Salvare configurare",
|
||||
"enabled_dhcp": "Server DHCP activat",
|
||||
"disabled_dhcp": "Server DHCP dezactivat",
|
||||
"unavailable_dhcp": "DHCP este indisponibil",
|
||||
"unavailable_dhcp_desc": "AdGuard Home nu poate rula un server DHCP pe OS-ul dvs.",
|
||||
"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",
|
||||
@@ -21,14 +24,18 @@
|
||||
"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",
|
||||
"dhcp_ipv4_settings": "Setări DHCP IPv4",
|
||||
"dhcp_ipv6_settings": "Setări DHCP IPv6",
|
||||
"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_server_name": "Nume de server nevalid",
|
||||
"form_error_positive": "Trebuie să fie mai mare de 0",
|
||||
"form_error_negative": "Trebuie să fie egală cu 0 sau mai mare",
|
||||
"range_end_error": "Trebuie să fie mai mare decât începutul intervalului",
|
||||
"dhcp_form_gateway_input": "IP Gateway",
|
||||
"dhcp_form_subnet_input": "Mască subnet",
|
||||
"dhcp_form_range_title": "Interval de adrese IP",
|
||||
@@ -101,7 +108,7 @@
|
||||
"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": "Un număr de solicitări DNS blocate de filtrele de blocare și lista de blocaje din 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ă",
|
||||
@@ -109,9 +116,9 @@
|
||||
"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>.",
|
||||
"filters_block_toggle_hint": "Puteți configura regulile de blocare în setările <a>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_browsing_sec_hint": "AdGuard Home va verifica dacă domeniul este în lista de blocări 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ă",
|
||||
@@ -119,15 +126,16 @@
|
||||
"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": "Liste de blocări DNS",
|
||||
"dns_allowlists": "Listă de DNS-uri autorizate",
|
||||
"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.",
|
||||
"upstream_dns": "Servere DNS în amonte",
|
||||
"upstream_dns_help": "Introduceți adresele serverelor una pe linie. <a>Aflați mai multe</a> despre configurarea serverelor DNS în amonte.",
|
||||
"upstream_dns_configured_in_file": "Configurat în {{path}}",
|
||||
"test_upstream_btn": "Testați upstreams",
|
||||
"upstreams": "Upstreams",
|
||||
"apply_btn": "Aplică",
|
||||
@@ -163,7 +171,7 @@
|
||||
"edit_blocklist": "Editare blocare",
|
||||
"edit_allowlist": "Editare autorizare",
|
||||
"choose_blocklist": "Alegeți liste de blocări",
|
||||
"choose_allowlist": "Alegeți liste de permisiuni",
|
||||
"choose_allowlist": "Alegeți liste de autorizări",
|
||||
"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",
|
||||
@@ -181,14 +189,19 @@
|
||||
"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_doq": "<0>DNS-over-QUIC</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",
|
||||
"updated_upstream_dns_toast": "Serverele DNS în amonte 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",
|
||||
"disallow_this_client": "Nu permiteți acest client",
|
||||
"allow_this_client": "Permiteți acest client",
|
||||
"block_for_this_client_only": "Blocați numai pentru acest client",
|
||||
"unblock_for_this_client_only": "Deblocați numai pentru acest client",
|
||||
"time_table_header": "Ora",
|
||||
"date": "Data",
|
||||
"domain_name_table_header": "Nume domeniu",
|
||||
@@ -200,7 +213,7 @@
|
||||
"empty_response_status": "Gol",
|
||||
"show_all_filter_type": "Arată tot",
|
||||
"show_filtered_type": "Arată cele filtrate",
|
||||
"no_logs_found": "Nici un jurnal găsit",
|
||||
"no_logs_found": "Niciun jurnal găsit",
|
||||
"refresh_btn": "Actualizare",
|
||||
"previous_btn": "Anterior",
|
||||
"next_btn": "Următor",
|
||||
@@ -208,8 +221,8 @@
|
||||
"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",
|
||||
"rule_removed_from_custom_filtering_toast": "Regulă scoasă din regullei personalizate de filtrare: {{rule}}",
|
||||
"rule_added_to_custom_filtering_toast": "Regulă adăugată la regulile de filtrare personalizate: {{rule}}",
|
||||
"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?",
|
||||
@@ -230,21 +243,31 @@
|
||||
"blocking_mode": "Modul de blocare",
|
||||
"default": "Implicit",
|
||||
"nxdomain": "NXDOMAIN",
|
||||
"refused": "REFUZAT",
|
||||
"null_ip": "IP nul",
|
||||
"custom_ip": "IP personalizat",
|
||||
"blocking_ipv4": "Blocarea IPv4",
|
||||
"blocking_ipv6": "Blocarea IPv6",
|
||||
"dnscrypt": "DNSCrypt",
|
||||
"dns_over_https": "DNS-over-HTTPS",
|
||||
"dns_over_tls": "DNS-over-TLS",
|
||||
"dns_over_quic": "DNS-over-QUIC",
|
||||
"client_id": "ID Client",
|
||||
"client_id_placeholder": "Introduceți ID client",
|
||||
"client_id_desc": "Diferiți clienți pot fi identificați printr-un ID special al clientului. <a>Aici</a> puteți afla mai multe despre cum să identificați clienții.",
|
||||
"download_mobileconfig_doh": "Descărcați .mobileconfig pentru DNS-over-HTTPS",
|
||||
"download_mobileconfig_dot": "Descărcați .mobileconfig pentru DNS-over-TLS",
|
||||
"download_mobileconfig": "Descărcați fișierul de configurare",
|
||||
"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)",
|
||||
"rate_limit_desc": "Numărul de solicitări pe secundă pe care un singur client este permis să le facă (setând-o la 0 înseamnă 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_default": "Implicit: Răspunde cu adresa IP (0.0.0.0 for A; :: pentru AAAA) 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_refused": "REFUZAT: Răspunde cu codul REFUZAT",
|
||||
"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",
|
||||
@@ -253,7 +276,7 @@
|
||||
"source_label": "Sursă",
|
||||
"found_in_known_domain_db": "Găsit în baza de date de domenii cunoscută.",
|
||||
"category_label": "Categorie",
|
||||
"rule_label": "Regulă",
|
||||
"rule_label": "Regulă(reguli)",
|
||||
"list_label": "Listă",
|
||||
"unknown_filter": "Filtru necunoscut {{filterId}}",
|
||||
"known_tracker": "Tracker cunoscut",
|
||||
@@ -314,13 +337,15 @@
|
||||
"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_server_desc": "Pentru a utiliza HTTPS, trebuie să introduceți numele serverului care se potrivește cu certificatul SSL sau certificatul wildcard al dvs. În cazul în care câmpul nu este setat, va accepta conexiuni TLS pentru orice domeniu.",
|
||||
"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_doq": "Port DNS-over-QUIC",
|
||||
"encryption_doq_desc": "Dacă acest port este configurat, AdGuard Home va rula un server DNS-over-QUIC pe acest port. Este experimental și este posibil să nu fie fiabil. De asemenea, nu există prea mulți clienți care să-l susțină în acest moment.",
|
||||
"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.",
|
||||
@@ -354,7 +379,7 @@
|
||||
"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.",
|
||||
"update_failed": "Auto-actualizarea a eșuat. Vă rugăm să <a>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",
|
||||
@@ -368,7 +393,7 @@
|
||||
"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>",
|
||||
"client_identifier_desc": "Clienții pot fi identificați prin adresa IP, CIDR, adresa MAC sau un ID special al clientului (poate fi folosit pentru DoT/DoH/DoQ). <0>Aici</0> puteți afla mai multe despre cum să identificați clienții.",
|
||||
"form_enter_ip": "Introduceți IP",
|
||||
"form_enter_mac": "Introduceți MAC",
|
||||
"form_enter_id": "Introduceți identificator",
|
||||
@@ -399,7 +424,8 @@
|
||||
"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_3": "<0>lată o listă de software pe care le puteți utiliza.</0>",
|
||||
"setup_dns_privacy_4": "Pe un dispozitiv iOS 14 sau macOS Big Sur puteți descărca fișierul special '.mobileconfig' care adaugă servere <highlight>DNS-over-HTTPS</highlight> sau <highlight>DNS-over-TLS</highlight> la setările DNS.",
|
||||
"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.",
|
||||
@@ -411,6 +437,7 @@
|
||||
"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_privacy_ioc_mac": "Configurarea iOS și macOS",
|
||||
"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",
|
||||
@@ -510,8 +537,8 @@
|
||||
"check_ip": "Adrese IP: {{ip}}",
|
||||
"check_cname": "CNAME: {{cname}}",
|
||||
"check_reason": "Cauza: {{reason}}",
|
||||
"check_rule": "Regula: {{rule}}",
|
||||
"check_service": "Nume servici: {{service}}",
|
||||
"service_name": "Numele serviciului",
|
||||
"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}}\"?",
|
||||
@@ -540,19 +567,18 @@
|
||||
"filtered": "Filtrate",
|
||||
"rewritten": "Rescrise",
|
||||
"safe_search": "Căutare sigură",
|
||||
"blocklist": "Lista neagră",
|
||||
"blocklist": "Lista de blocări",
|
||||
"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}}",
|
||||
"cache_ttl_min_override": "Suprascrieți minimum TTL",
|
||||
"cache_ttl_max_override": "Suprascrieți maximum TTL",
|
||||
"enter_cache_size": "Introduceți mărimea cache-ului (bytes)",
|
||||
"enter_cache_ttl_min_override": "Introduceți minimum TTL (secunde)",
|
||||
"enter_cache_ttl_max_override": "Introduceți maximum TTL (secunde)",
|
||||
"cache_ttl_min_override_desc": "Extinde valorile timp-de-viață scurte (secunde) primite de la serverul din amonte la stocarea în cache a răspunsurilor DNS",
|
||||
"cache_ttl_max_override_desc": "Setează o valoare maximă a timpului-de-viață (secunde) pentru intrările din memoria cache DNS",
|
||||
"ttl_cache_validation": "Valoarea TTL cache minimă trebuie să fie mai mică sau egală cu valoarea maximă",
|
||||
"filter_category_general": "General",
|
||||
"filter_category_security": "Securitate",
|
||||
"filter_category_regional": "Regional",
|
||||
@@ -561,7 +587,11 @@
|
||||
"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",
|
||||
"setup_config_to_enable_dhcp_server": "Setați configurația pentru a activa serverul DHCP",
|
||||
"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."
|
||||
"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.",
|
||||
"adg_will_drop_dns_queries": "AdGuard Home va renunța la toate interogările DNS de la acest client.",
|
||||
"client_not_in_allowed_clients": "Clientul nu este permis deoarece nu este în lista de \"Clienți permiși\".",
|
||||
"experimental": "Experimental"
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"client_settings": "Настройки клиентов",
|
||||
"example_upstream_reserved": "Вы можете указать DNS-сервер <0>для конкретного домена(-ов)</0>",
|
||||
"example_upstream_comment": "Вы можете указать комментарий",
|
||||
"upstream_parallel": "Использовать параллельные запросы ко всем серверам одновременно для ускорения обработки запроса",
|
||||
"parallel_requests": "Параллельные запросы",
|
||||
"load_balancing": "Распределение нагрузки\n",
|
||||
@@ -11,6 +12,8 @@
|
||||
"save_config": "Сохранить конфигурацию",
|
||||
"enabled_dhcp": "DHCP-сервер включен",
|
||||
"disabled_dhcp": "DHCP-сервер отключен",
|
||||
"unavailable_dhcp": "DHCP недоступен",
|
||||
"unavailable_dhcp_desc": "AdGuard Home не может запустить DHCP-сервер на вашей ОС",
|
||||
"dhcp_title": "DHCP-сервер (экспериментальный!)",
|
||||
"dhcp_description": "Если ваш роутер не предоставляет настройки DHCP, вы можете использовать собственный встроенный DHCP-сервер AdGuard.",
|
||||
"dhcp_enable": "Включить DHCP-сервер",
|
||||
@@ -21,14 +24,18 @@
|
||||
"dhcp_static_leases": "Статические аренды DHCP",
|
||||
"dhcp_leases_not_found": "Аренда DHCP не обнаружена",
|
||||
"dhcp_config_saved": "Конфигурация DHCP-сервера успешно сохранена",
|
||||
"dhcp_ipv4_settings": "Настройки DHCP IPv4",
|
||||
"dhcp_ipv6_settings": "Настройки DHCP IPv6",
|
||||
"form_error_required": "Обязательное поле",
|
||||
"form_error_ip4_format": "Неверный формат IPv4",
|
||||
"form_error_ip6_format": "Неверный формат IPv6",
|
||||
"form_error_ip_format": "Неверный формат IP-адреса",
|
||||
"form_error_mac_format": "Некорректный формат MAC",
|
||||
"form_error_client_id_format": "Неверный формат ID клиента",
|
||||
"form_error_server_name": "Неверное имя сервера",
|
||||
"form_error_positive": "Должно быть больше 0",
|
||||
"form_error_negative": "Должно быть не меньше 0",
|
||||
"range_end_error": "Должно превышать начало диапазона",
|
||||
"dhcp_form_gateway_input": "IP-адрес шлюза",
|
||||
"dhcp_form_subnet_input": "Маска подсети",
|
||||
"dhcp_form_range_title": "Диапазон IP-адресов",
|
||||
@@ -109,7 +116,7 @@
|
||||
"average_processing_time": "Среднее время обработки запроса",
|
||||
"average_processing_time_hint": "Среднее время для обработки запроса DNS в миллисекундах",
|
||||
"block_domain_use_filters_and_hosts": "Блокировать домены с использованием фильтров и файлов хостов",
|
||||
"filters_block_toggle_hint": "Вы можете настроить правила блокировки в <a href='#filters'> \"Фильтрах\"</a>.",
|
||||
"filters_block_toggle_hint": "Вы можете настроить правила блокировки в <a>\"Фильтрах\"</a>.",
|
||||
"use_adguard_browsing_sec": "Включить Безопасную навигацию AdGuard",
|
||||
"use_adguard_browsing_sec_hint": "AdGuard Home проверит, включен ли домен в веб-службу безопасности браузера. Он будет использовать API, чтобы выполнить проверку: на сервер отправляется только короткий префикс имени домена SHA256.",
|
||||
"use_adguard_parental": "Включить модуль Родительского контроля AdGuard ",
|
||||
@@ -127,7 +134,8 @@
|
||||
"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 сервера.",
|
||||
"upstream_dns_help": "Введите адреса серверов по одному на строке. <a>Узнать больше</a> о настройке upstream DNS-серверов.",
|
||||
"upstream_dns_configured_in_file": "Настроен в {{path}}",
|
||||
"test_upstream_btn": "Тест upstream серверов",
|
||||
"upstreams": "Upstreams",
|
||||
"apply_btn": "Применить",
|
||||
@@ -181,6 +189,7 @@
|
||||
"example_upstream_regular": "обычный DNS (поверх UDP)",
|
||||
"example_upstream_dot": "зашифрованный <0>DNS-over-TLS</0>",
|
||||
"example_upstream_doh": "зашифрованный <0>DNS-over-HTTPS</0>",
|
||||
"example_upstream_doq": "зашифрован <0>DNS-over-QUIC</0>",
|
||||
"example_upstream_sdns": "вы можете использовать <0>DNS Stamps</0> для <1>DNSCrypt</1> или <2>DNS-over-HTTPS</2> резолверов",
|
||||
"example_upstream_tcp": "обычный DNS (поверх TCP)",
|
||||
"all_lists_up_to_date_toast": "Все списки уже обновлены",
|
||||
@@ -189,6 +198,10 @@
|
||||
"dns_test_not_ok_toast": "Сервер \"{{key}}\": невозможно использовать, проверьте правильность написания",
|
||||
"unblock": "Разблокировать",
|
||||
"block": "Заблокировать",
|
||||
"disallow_this_client": "Запретить доступ клиенту",
|
||||
"allow_this_client": "Разрешить доступ клиенту",
|
||||
"block_for_this_client_only": "Заблокировать только для этого клиента",
|
||||
"unblock_for_this_client_only": "Разблокировать только для этого клиента",
|
||||
"time_table_header": "Время",
|
||||
"date": "Дата",
|
||||
"domain_name_table_header": "Домен",
|
||||
@@ -208,8 +221,8 @@
|
||||
"page_table_footer_text": "Страница",
|
||||
"rows_table_footer_text": "строк",
|
||||
"updated_custom_filtering_toast": "Внесены изменения в пользовательские правила",
|
||||
"rule_removed_from_custom_filtering_toast": "Правило удалено из авторского списка правил фильтрации",
|
||||
"rule_added_to_custom_filtering_toast": "Пользовательское правило добавлено",
|
||||
"rule_removed_from_custom_filtering_toast": "Пользовательское правило удалено: {{rule}}",
|
||||
"rule_added_to_custom_filtering_toast": "Пользовательское правило добавлено: {{rule}}",
|
||||
"query_log_response_status": "Статус: {{value}}",
|
||||
"query_log_filtered": "Отфильтровано с помощью {{filter}}",
|
||||
"query_log_confirm_clear": "Вы уверены, что хотите очистить весь журнал запросов?",
|
||||
@@ -230,12 +243,21 @@
|
||||
"blocking_mode": "Режим блокировки",
|
||||
"default": "Стандартный",
|
||||
"nxdomain": "NXDOMAIN",
|
||||
"refused": "REFUSED",
|
||||
"null_ip": "Нулевой IP",
|
||||
"custom_ip": "Свой IP",
|
||||
"blocking_ipv4": "Блокировка IPv4",
|
||||
"blocking_ipv6": "Блокировка IPv6",
|
||||
"dnscrypt": "DNSCrypt",
|
||||
"dns_over_https": "DNS-over-HTTPS",
|
||||
"dns_over_tls": "DNS-over-TLS",
|
||||
"dns_over_quic": "DNS-over-QUIC",
|
||||
"client_id": "Идентификатор клиента",
|
||||
"client_id_placeholder": "Введите идентификатор клиента",
|
||||
"client_id_desc": "Различные клиенты могут идентифицироваться по специальному идентификатору клиента. <a>Здесь</a> вы можете узнать больше об идентификации клиентов.",
|
||||
"download_mobileconfig_doh": "Скачать .mobileconfig для DNS-over-HTTPS",
|
||||
"download_mobileconfig_dot": "Скачать .mobileconfig для DNS-over-TLS",
|
||||
"download_mobileconfig": "Загрузить файл конфигурации",
|
||||
"plain_dns": "Нешифрованный DNS",
|
||||
"form_enter_rate_limit": "Введите rate limit",
|
||||
"rate_limit": "Rate limit",
|
||||
@@ -244,7 +266,8 @@
|
||||
"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_default": "Стандартный: Отвечает с нулевым IP-адресом, (0.0.0.0 для A; :: для AAAA) когда заблокировано правилом в стиле Adblock; отвечает с IP-адресом, указанным в правиле, когда заблокировано правилом в стиле /etc/hosts-style",
|
||||
"blocking_mode_refused": "REFUSED: Отвечает с кодом REFUSED",
|
||||
"blocking_mode_nxdomain": "NXDOMAIN: Отвечает с кодом NXDOMAIN\n",
|
||||
"blocking_mode_null_ip": "Нулевой IP: Отвечает с нулевым IP-адресом (0.0.0.0 для A; :: для AAAA)",
|
||||
"blocking_mode_custom_ip": "Пользовательский IP: Отвечает с вручную настроенным IP-адресом",
|
||||
@@ -253,7 +276,7 @@
|
||||
"source_label": "Источник",
|
||||
"found_in_known_domain_db": "Найден в базе известных доменов.",
|
||||
"category_label": "Категория",
|
||||
"rule_label": "Правило",
|
||||
"rule_label": "Правило(-а)",
|
||||
"list_label": "Список",
|
||||
"unknown_filter": "Неизвестный фильтр {{filterId}}",
|
||||
"known_tracker": "Известный трекер",
|
||||
@@ -314,13 +337,15 @@
|
||||
"encryption_config_saved": "Настройки шифрования сохранены",
|
||||
"encryption_server": "Имя сервера",
|
||||
"encryption_server_enter": "Введите ваше доменное имя",
|
||||
"encryption_server_desc": "Для использования HTTPS вам необходимо ввести имя сервера, которое подходит вашему SSL-сертификату.",
|
||||
"encryption_server_desc": "Для использования HTTPS вам необходимо ввести имя сервера, которое подходит вашему SSL-сертификату или сертификату с поддержкой поддоменов. Если это поле не задано, сервер будет принимать TLS-соединения для любого домена.",
|
||||
"encryption_redirect": "Автоматически перенаправлять на HTTPS",
|
||||
"encryption_redirect_desc": "Если включено, AdGuard Home будет автоматически перенаправлять вас с HTTP на HTTPS адрес.",
|
||||
"encryption_https": "Порт HTTPS",
|
||||
"encryption_https_desc": "Если порт HTTPS настроен, веб-интерфейс администрирования AdGuard Home будет доступен через HTTPS, а также DNS-over-HTTPS сервер будет доступен по пути '/dns-query'.",
|
||||
"encryption_dot": "Порт DNS-over-TLS",
|
||||
"encryption_dot_desc": "Если этот порт настроен, AdGuard Home запустит DNS-over-TLS-сервер на этому порту.",
|
||||
"encryption_doq": "Порт DNS-over-QUIC",
|
||||
"encryption_doq_desc": "Если этот порт настроен, AdGuard Home запустит сервер DNS-over-QUIC на этом порте. Это экспериментально и может быть ненадежно. Кроме того, не так много клиентов поддерживает этот способ в настоящий момент.",
|
||||
"encryption_certificates": "Сертификаты",
|
||||
"encryption_certificates_desc": "Для использования шифрования вам необходимо предоставить валидную цепочку SSL-сертификатов для вашего домена. Вы можете получить бесплатный сертификат на <0>{{link}}</0> или вы можете купить его у одного из доверенных Центров Сертификации.",
|
||||
"encryption_certificates_input": "Скопируйте сюда сертификаты в PEM-кодировке.",
|
||||
@@ -354,7 +379,7 @@
|
||||
"fix": "Исправить",
|
||||
"dns_providers": "<0>Список известных DNS-провайдеров</0> на выбор.",
|
||||
"update_now": "Обновить сейчас",
|
||||
"update_failed": "Ошибка авто-обновления. Пожалуйста, <a href='https://github.com/AdguardTeam/AdGuardHome/wiki/Getting-Started#update'>следуйте инструкции</a> для обновления вручную.",
|
||||
"update_failed": "Ошибка авто-обновления. Пожалуйста, <a>следуйте инструкции</a> для обновления вручную.",
|
||||
"processing_update": "Пожалуйста, подождите, AdGuard Home обновляется",
|
||||
"clients_title": "Клиенты",
|
||||
"clients_desc": "Настройте устройства, использующие AdGuard Home",
|
||||
@@ -368,7 +393,7 @@
|
||||
"client_edit": "Редактировать клиента",
|
||||
"client_identifier": "Идентификатор",
|
||||
"ip_address": "IP-адрес",
|
||||
"client_identifier_desc": "Клиенты могут быть идентифицированы по IP-адресу, CIDR или MAC-адресу. Обратите внимание, что использование MAC как идентификатора возможно, только если AdGuard Home также является и <0>DHCP-сервером</0>",
|
||||
"client_identifier_desc": "Клиенты могут быть идентифицированы по IP-адресу, CIDR или MAC-адресу или специальному ID (можно использовать для DoT/DoH/DoQ). <0>Здесь</0> вы можете узнать больше об идентификации клиентов.",
|
||||
"form_enter_ip": "Введите IP",
|
||||
"form_enter_mac": "Введите MAC",
|
||||
"form_enter_id": "Введите идентификатор",
|
||||
@@ -399,7 +424,8 @@
|
||||
"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_3": "<0>Вот список ПО, которое вы можете использовать.</0>",
|
||||
"setup_dns_privacy_4": "На устройствах с iOS 14 и macOS Big Sur вы можете скачать специальный файл '.mobileconfig', который добавляет <highlight>DNS-over-HTTPS</highlight> или <highlight>DNS-over-TLS</highlight> серверы в настройки DNS.",
|
||||
"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.",
|
||||
@@ -411,6 +437,7 @@
|
||||
"setup_dns_privacy_other_3": "<0>dnscrypt-proxy</0> поддерживает <1>DNS-over-HTTPS</1>.",
|
||||
"setup_dns_privacy_other_4": "<0>Mozilla Firefox</0> поддерживает <1>DNS-over-HTTPS</1>.",
|
||||
"setup_dns_privacy_other_5": "Вы можете найти еще варианты <0>тут</0> и <1>тут</1>.",
|
||||
"setup_dns_privacy_ioc_mac": "Конфигурация для iOS и macOS",
|
||||
"setup_dns_notice": "Чтобы использовать <1>DNS-over-HTTPS</1> или <1>DNS-over-TLS</1>, вам нужно <0>настроить шифрование</0> в настройках AdGuard Home.",
|
||||
"rewrite_added": "Правило перенаправления DNS для \"{{key}}\" успешно добавлено",
|
||||
"rewrite_deleted": "Правило перенаправления DNS для \"{{key}}\" успешно удалено",
|
||||
@@ -492,7 +519,7 @@
|
||||
"disable_ipv6": "Отключить IPv6",
|
||||
"disable_ipv6_desc": "Если эта опция включена, все DNS-запросы адресов IPv6 (тип AAAA) будут игнорироваться.",
|
||||
"fastest_addr": "Самый быстрый IP-адрес",
|
||||
"fastest_addr_desc": "Опросить все DNS-серверы и вернуть самый быстрый IP-адрес из полученных ответов",
|
||||
"fastest_addr_desc": "Опросить все DNS-серверы и вернуть самый быстрый IP-адрес из полученных ответов. Это замедлит DNS-запросы, так как нужно будет дождаться ответов со всех DNS-серверов, но улучшит соединение.",
|
||||
"autofix_warning_text": "При нажатии \"Исправить\" AdGuard Home настроит вашу систему на использование DNS-сервера AdGuard Home.",
|
||||
"autofix_warning_list": "Будут выполняться следующие задачи: <0>Деактивировать системный DNSStubListener</0> <0>Установить адрес сервера DNS на 127.0.0.1</0> <0>Создать символическую ссылку /etc/resolv.conf на /run/systemd/resolve/resolv.conf</0> <0>Остановить DNSStubListener (перезагрузить системную службу)</0>.",
|
||||
"autofix_warning_result": "В результате все DNS-запросы от вашей системы будут по умолчанию обрабатываться AdGuard Home.\n",
|
||||
@@ -510,8 +537,8 @@
|
||||
"check_ip": "IP-адреса: {{ip}}",
|
||||
"check_cname": "CNAME: {{cname}}",
|
||||
"check_reason": "Причина: {{reason}}",
|
||||
"check_rule": "Правило: {{rule}}",
|
||||
"check_service": "Название сервиса: {{service}}",
|
||||
"service_name": "Имя сервиса",
|
||||
"check_not_found": "Не найдено в вашем списке фильтров",
|
||||
"client_confirm_block": "Вы уверены, что хотите заблокировать клиента \"{{ip}}\"?",
|
||||
"client_confirm_unblock": "Вы уверены, что хотите разблокировать клиента \"{{ip}}\"?",
|
||||
@@ -544,15 +571,14 @@
|
||||
"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}}",
|
||||
"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-сервера при кешировании DNS-ответов",
|
||||
"cache_ttl_max_override_desc": "Установить максимальное TTL-значение (в секундах) для записей в DNS-кэше",
|
||||
"ttl_cache_validation": "Минимальное значение TTL кеша должно быть меньше или равно максимальному значению",
|
||||
"filter_category_general": "Общие",
|
||||
"filter_category_security": "Безопасность",
|
||||
"filter_category_regional": "Региональные",
|
||||
@@ -561,7 +587,11 @@
|
||||
"filter_category_security_desc": "Списки, которые специализируются на блокировке вредоносных программ, фишинговых или мошеннических доменов",
|
||||
"filter_category_regional_desc": "Списки, которые фокусируются на региональной рекламе и серверах отслеживания",
|
||||
"filter_category_other_desc": "Другие списки блокировки",
|
||||
"setup_config_to_enable_dhcp_server": "Настроить конфигурацию для включения DHCP-сервера",
|
||||
"original_response": "Первоначальный ответ",
|
||||
"click_to_view_queries": "Нажмите, чтобы просмотреть запросы",
|
||||
"port_53_faq_link": "Порт 53 часто занят службами \"DNSStubListener\" или \"systemd-resolved\". Ознакомьтесь с <0>инструкцией</0> о том, как это разрешить."
|
||||
"port_53_faq_link": "Порт 53 часто занят службами \"DNSStubListener\" или \"systemd-resolved\". Ознакомьтесь с <0>инструкцией</0> о том, как это разрешить.",
|
||||
"adg_will_drop_dns_queries": "AdGuard Home AdGuard Home сбросит все DNS-запросы от этого клиента.",
|
||||
"client_not_in_allowed_clients": "Клиент не разрешён, так как его нет в списке \"Разрешённых клиентов\".",
|
||||
"experimental": "Экспериментальный"
|
||||
}
|
||||
515
client/src/__locales/si-lk.json
Normal file
515
client/src/__locales/si-lk.json
Normal file
@@ -0,0 +1,515 @@
|
||||
{
|
||||
"client_settings": "අනුග්රාහක සැකසුම්",
|
||||
"example_upstream_comment": "ඔබට අදහසක් සඳහන් කළ හැකිය",
|
||||
"parallel_requests": "සමාන්තර ඉල්ලීම්",
|
||||
"load_balancing": "ධාරිතාව තුලනය",
|
||||
"check_dhcp_servers": "ග.ධා.වි.කෙ. සේවාදායකයන් සඳහා පරීක්ෂා කරන්න",
|
||||
"save_config": "වින්යාසය සුරකින්න",
|
||||
"enabled_dhcp": "ග.ධා.වි.කෙ. සේවාදායකය සබල කර ඇත",
|
||||
"disabled_dhcp": "ග.ධා.වි.කෙ. සේවාදායකය අබල කර ඇත",
|
||||
"unavailable_dhcp_desc": "ඇඩ්ගාර්ඩ් හෝම් හට ඔබගේ මෙහෙයුම් පද්ධතියේ ග.ධා.වි.කෙ. සේවාදායකයක් ධාවනය කළ නොහැක",
|
||||
"dhcp_title": "ග.ධා.වි.කෙ. සේවාදායකය (පර්යේෂණාත්මක!)",
|
||||
"dhcp_description": "ඔබගේ මාර්ගකාරකය ග.ධා.වි.කෙ. (DHCP) සැකසුම් ලබා නොදෙන්නේ නම්, ඔබට ඇඩ්ගාර්ඩ් හි ඇති ග.ධා.වි.කෙ. සේවාදායකය භාවිතා කළ හැකිය.",
|
||||
"dhcp_enable": "ග.ධා.වි.කෙ. සේවාදායකය සබල කරන්න",
|
||||
"dhcp_disable": "ග.ධා.වි.කෙ. සේවාදායකය අබල කරන්න",
|
||||
"dhcp_config_saved": "ග.ධා.වි.කෙ. වින්යාසය සාර්ථකව සුරකින ලදි",
|
||||
"dhcp_ipv4_settings": "ග.ධා.වි.කෙ. අයිපීවී 4 සැකසුම්",
|
||||
"dhcp_ipv6_settings": "ග.ධා.වි.කෙ. අයිපීවී 6 සැකසුම්",
|
||||
"form_error_required": "අවශ්ය ක්ෂේත්රයකි",
|
||||
"form_error_ip4_format": "වලංගු නොවන IPv4 ආකෘතියකි",
|
||||
"form_error_ip6_format": "වලංගු නොවන IPv6 ආකෘතියකි",
|
||||
"form_error_ip_format": "වලංගු නොවන අ.ජා. කෙ. (IP) ආකෘතියකි",
|
||||
"form_error_mac_format": "වලංගු නොවන මා.ප්ර.පා. ආකෘතියකි",
|
||||
"form_error_client_id_format": "වලංගු නොවන අනුග්රාහක හැඳුනුම් ආකෘතියකි",
|
||||
"form_error_positive": "0 ට වඩා වැඩි විය යුතුය",
|
||||
"form_error_negative": "0 හෝ ඊට වැඩි විය යුතුය",
|
||||
"dhcp_form_range_title": "අ.ජා. කෙ. (IP) ලිපින පරාසය",
|
||||
"dhcp_form_range_start": "පරාසය ආරම්භය",
|
||||
"dhcp_form_range_end": "පරාසය අවසානය",
|
||||
"dhcp_interface_select": "ග.ධා.වි.කෙ. අතුරුමුහුණත තෝරන්න",
|
||||
"dhcp_hardware_address": "දෘඩාංග ලිපිනය",
|
||||
"dhcp_ip_addresses": "අ.ජා. කෙ. (IP) ලිපින",
|
||||
"ip": "අ.ජා. කෙ. (IP)",
|
||||
"dhcp_table_hostname": "ධාරක නාමය",
|
||||
"dhcp_table_expires": "කල් ඉකුත් වීම",
|
||||
"dhcp_warning": "ඔබට කෙසේ හෝ ග.ධා.වි.කෙ. සේවාදායකය සබල කිරීමට අවශ්ය නම්, ඔබේ ජාලයේ වෙනත් ක්රියාකාරී ග.ධා.වි.කෙ. සේවාදායකයක් නොමැති බව තහවුරු කරගන්න. එසේ නොමැති නම්, එය සම්බන්ධිත උපාංග සඳහා අන්තර්ජාලය බිඳ දැමිය හැකිය!",
|
||||
"dhcp_error": "ජාලයේ තවත් ග.ධා.වි.කෙ. සේවාදායකයක් තිබේද යන්න අපට තීරණය කළ නොහැකි විය.",
|
||||
"dhcp_static_ip_error": "ග.ධා.වි.කෙ. සේවාදායකය භාවිතා කිරීම සඳහා ස්ථිතික අන්තර්ජාල කෙටුම්පත් (IP) ලිපිනයක් සැකසිය යුතුය. මෙම ජාල අතුරුමුහුණත ස්ථිතික අ.ජා. කෙ. ලිපිනයක් භාවිතයෙන් වින්යාසගත කර තිබේද යන්න තීරණය කිරීමට අප අසමත් විය. කරුණාකර ස්ථිතික අ.ජා. කෙ. ලිපිනයක් අතින් සකසන්න.",
|
||||
"dhcp_dynamic_ip_found": "ඔබේ පද්ධතිය <0>{{interfaceName}}</0> අතුරු මුහුණත සඳහා ගතික අන්තර්ජාල කෙටුම්පත් (IP) ලිපින වින්යාසය භාවිතා කරයි. ග.ධා.වි.කෙ. සේවාදායකය භාවිතා කිරීම සඳහා ස්ථිතික අ.ජා. කෙ. ලිපිනයක් සැකසිය යුතුය. ඔබගේ වර්තමාන අ.ජා. කෙ. ලිපිනය <0>{{ipAddress}}</0> වේ. ඔබ ග.ධා.වි.කෙ. සබල කරන්න බොත්තම එබුවහොත් අපි ස්වයංක්රීයව මෙම අ.ජා. කෙ. ලිපිනය ස්ථිතික ලෙස සකසන්නෙමු.",
|
||||
"dhcp_reset": "ග.ධා.වි.කෙ. වින්යාසය යළි පිහිටුවීමට අවශ්ය බව ඔබට විශ්වාස ද?",
|
||||
"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": "ජනප්රිය අනුග්රාහකයන්",
|
||||
"general_statistics": "පොදු සංඛ්යාලේඛන",
|
||||
"number_of_dns_query_blocked_24_hours": "දැන්වීම් වාරණ පෙරහන් සහ ධාරක වාරණ ලැයිස්තු මගින් අවහිර කරන ලද ව.නා.ප. ඉල්ලීම් ගණන",
|
||||
"number_of_dns_query_blocked_24_hours_by_sec": "ඇඩ්ගාර්ඩ් පිරික්සුම් ආරක්ෂණ ඒකකය මගින් අවහිර කරන ලද ව.නා.ප. ඉල්ලීම් ගණන",
|
||||
"number_of_dns_query_blocked_24_hours_adult": "අවහිර කළ වැඩිහිටි වියමන අඩවි ගණන",
|
||||
"enforced_save_search": "ආරක්ෂිත සෙවීම බලාත්මක කරන ලද",
|
||||
"number_of_dns_query_to_safe_search": "ආරක්ෂිත සෙවීම බලාත්මක කළ සෙවුම් යන්ත්ර සඳහා ව.නා.ප. ඉල්ලීම් ගණන",
|
||||
"average_processing_time": "සාමාන්ය සැකසුම් කාලය",
|
||||
"average_processing_time_hint": "ව.නා.ප. ඉල්ලීමක් සැකසීමේ සාමාන්ය කාලය මිලි තත්පර වලින්",
|
||||
"block_domain_use_filters_and_hosts": "පෙරහන් සහ ධාරක ගොනු භාවිතා කරමින් වසම් අවහිර කරන්න",
|
||||
"filters_block_toggle_hint": "ඔබට අවහිර කිරීමේ නීති <a>පෙරහන්</a> තුළ පිහිටුවිය හැකිය.",
|
||||
"use_adguard_browsing_sec": "ඇඩ්ගාර්ඩ් පිරික්සුම් ආරක්ෂණ වියමන සේවාව භාවිතා කරන්න",
|
||||
"use_adguard_parental": "ඇඩ්ගාර්ඩ් දෙමාපිය පාලන වියමන සේවාව භාවිතා කරන්න",
|
||||
"use_adguard_parental_hint": "වසමේ වැඩිහිටියන්ට අදාල කරුණු අඩංගු දැයි ඇඩ්ගාර්ඩ් හෝම් විසින් පරීක්ෂා කරනු ඇත. එය පිරික්සුම් ආරක්ෂණ වියමන සේවාව මෙන් රහස්යතා හිතකාමී යෙ.ක්ර. අ.මු. (API) භාවිතා කරයි.",
|
||||
"enforce_safe_search": "ආරක්ෂිත සෙවීම බලාත්මක කරන්න",
|
||||
"enforce_save_search_hint": "ඇඩ්ගාර්ඩ් හෝම් හට පහත සෙවුම් යන්ත්ර තුළ ආරක්ෂිත සෙවීම බලාත්මක කළ හැකිය: ගූගල්, යූටියුබ්, බින්ග්, ඩක්ඩක්ගෝ, යාන්ඩෙක්ස් සහ පික්සාබේ.",
|
||||
"no_servers_specified": "සේවාදායක කිසිවක් නිශ්චිතව දක්වා නැත",
|
||||
"general_settings": "පොදු සැකසුම්",
|
||||
"dns_settings": "ව.නා.ප. සැකසුම්",
|
||||
"dns_blocklists": "ව.නා.ප. අවහිර කිරීමේ ලැයිස්තු",
|
||||
"dns_allowlists": "ව.නා.ප. අවසර දීමේ ලැයිස්තු",
|
||||
"dns_blocklists_desc": "ඇඩ්ගාර්ඩ් හෝම් විසින් අවහිර කිරීමේ ලැයිස්තු වලට ගැලපෙන වසම් අවහිර කරනු ඇත.",
|
||||
"dns_allowlists_desc": "අවසර දීමේ ව.නා.ප. ලැයිස්තුවල වසම් කිසියම් අවහිර කිරීමේ ලැයිස්තුවක අඩංගු වුවද එය නොසලකා හැර අවසර දෙනු ලැබේ.",
|
||||
"custom_filtering_rules": "අභිරුචි පෙරීමේ නීති",
|
||||
"encryption_settings": "සංකේතාංකන සැකසුම්",
|
||||
"dhcp_settings": "ග.ධා.වි.කෙ. සැකසුම්",
|
||||
"upstream_dns": "Upstream ව.නා.ප. සේවාදායකයන්",
|
||||
"upstream_dns_help": "පේළියකට එක් සේවාදායක ලිපිනය බැගින් ඇතුළත් කරන්න. upstream ව.නා.ප. (DNS) \n සේවාදායකයන් වින්යාසගත කිරීම ගැන <a>තව දැනගන්න</a>.",
|
||||
"apply_btn": "යොදන්න",
|
||||
"disabled_filtering_toast": "පෙරීම අබල කර ඇත",
|
||||
"enabled_filtering_toast": "පෙරීම සබල කර ඇත",
|
||||
"disabled_safe_browsing_toast": "ආරක්ෂිත සෙවීම අබල කර ඇත",
|
||||
"enabled_safe_browsing_toast": "ආරක්ෂිත සෙවීම සබල කර ඇත",
|
||||
"disabled_parental_toast": "Parental control අබල කර ඇත",
|
||||
"enabled_parental_toast": "Parental control සබල කර ඇත",
|
||||
"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": "ඇඩ්ගාර්ඩ් හෝම් මූලික දැන්වීම් වාරණ නීති සහ ධාරක ගොනු පද ගැලපුම් තේරුම් ගනී.",
|
||||
"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": "ඇඩ්ගාර්ඩ් හෝම් දැන් example.org වසම සඳහා 127.0.0.1 ලිපිනය ලබා දෙනු ඇත (නමුත් එහි උප ලිපින නොවේ).",
|
||||
"example_comment": "! මෙතැන අදහස් දැක්වීමක්",
|
||||
"example_comment_meaning": "විස්තර කිරීමක්",
|
||||
"example_comment_hash": "# එසේම අදහස් දැක්වීමක්",
|
||||
"example_regex_meaning": "නිශ්චිතව දක්වා ඇති නිත්ය වාක්යවිධියට ගැලපෙන වසම් වෙත පිවිසීම අවහිර කරයි",
|
||||
"example_upstream_regular": "සාමාන්ය ව.නා.ප. (UDP හරහා)",
|
||||
"example_upstream_dot": "සංකේතාංකනය කළ <0>DNS-over-TLS</0>",
|
||||
"example_upstream_doh": "සංකේතාංකනය කළ <0>DNS-over-HTTPS</0>",
|
||||
"example_upstream_doq": "සංකේතාංකනය කළ <0>DNS-over-QUIC</0>",
|
||||
"example_upstream_tcp": "සාමාන්ය ව.නා.ප. (TCP/ස.පා.කෙ. හරහා) ",
|
||||
"all_lists_up_to_date_toast": "සියලුම ලැයිස්තු දැනටමත් යාවත්කාලීනයි",
|
||||
"dns_test_ok_toast": "සඳහන් කළ ව.නා.ප. සේවාදායකයන් නිවැරදිව ක්රියා කරයි",
|
||||
"dns_test_not_ok_toast": "සේවාදායක \"{{key}}\": භාවිතා කළ නොහැකි විය, කරුණාකර ඔබ එය නිවැරදිව ලියා ඇත්දැයි පරීක්ෂා කරන්න",
|
||||
"unblock": "අනවහිර",
|
||||
"block": "අවහිර",
|
||||
"disallow_this_client": "මෙම අනුග්රාහකයට අවසර නොදෙන්න",
|
||||
"allow_this_client": "මෙම අනුග්රාහකයට අවසර දෙන්න",
|
||||
"block_for_this_client_only": "මෙම අනුග්රාහකයට පමණක් අවහිර කරන්න",
|
||||
"unblock_for_this_client_only": "මෙම අනුග්රාහකයට පමණක් අනවහිර කරන්න",
|
||||
"time_table_header": "වේලාව",
|
||||
"date": "දිනය",
|
||||
"domain_name_table_header": "වසම් නාමය",
|
||||
"domain_or_client": "වසම හෝ අනුග්රාහකය",
|
||||
"type_table_header": "වර්ගය",
|
||||
"response_table_header": "ප්රතිචාරය",
|
||||
"response_code": "ප්රතිචාර කේතය",
|
||||
"client_table_header": "අනුග්රාහකය",
|
||||
"empty_response_status": "හිස්",
|
||||
"show_all_filter_type": "සියල්ල පෙන්වන්න",
|
||||
"refresh_btn": "නැවුම් කරන්න",
|
||||
"previous_btn": "පෙර",
|
||||
"next_btn": "ඊළඟ",
|
||||
"loading_table_status": "පූරණය වෙමින්...",
|
||||
"page_table_footer_text": "පිටුව",
|
||||
"rows_table_footer_text": "පේළි",
|
||||
"updated_custom_filtering_toast": "අභිරුචි පෙරීමේ නීති යාවත්කාල කරන ලදි",
|
||||
"rule_removed_from_custom_filtering_toast": "අභිරුචි පෙරීමේ නීති තුළින් නීතියක් ඉවත් කරන ලදි {{rule}}",
|
||||
"rule_added_to_custom_filtering_toast": "අභිරුචි පෙරීමේ නීති තුළට මෙම නීතිය එකතු කරන ලදි {{rule}}",
|
||||
"query_log_response_status": "තත්ත්වය: {{value}}",
|
||||
"query_log_filtered": "{{filter}} මගින් පෙරහන් කරන ලදි",
|
||||
"query_log_confirm_clear": "සම්පූර්ණ විමසුම් ලොගය ඉවත් කිරීමට අවශ්ය යැයි ඔබට විශ්වාසද?",
|
||||
"query_log_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": "ලොග සහ සංඛ්යාලේඛන තුළ අනුග්රාහකයේ සම්පූර්ණ අ.ජා. කෙ. ලිපිනය සුරකීමෙන් වලකින්න",
|
||||
"dns_config": "ව.නා.ප. සේවාදායක වින්යාසය",
|
||||
"dns_cache_config": "ව.නා.ප. නිහිත වින්යාසය",
|
||||
"dns_cache_config_desc": "මෙහිදී ඔබට ව.නා.ප. නිහිතය වින්යාසගත කළ හැකිය",
|
||||
"blocking_mode": "අවහිර කරන ආකාරය",
|
||||
"default": "සුපුරුදු",
|
||||
"nxdomain": "නොපවතින වසම",
|
||||
"refused": "REFUSED",
|
||||
"null_ip": "අභිශූන්යය අ.ජා. කෙ.",
|
||||
"custom_ip": "අභිරුචි අ.ජා. කෙ.",
|
||||
"blocking_ipv4": "අයි.පී.වී.4 අවහිර කිරීම\n",
|
||||
"blocking_ipv6": "අයි.පී.වී.6 අවහිර කිරීම",
|
||||
"form_enter_rate_limit": "අනුපාත සීමාව ඇතුළත් කරන්න",
|
||||
"rate_limit": "අනුපාත සීමාව",
|
||||
"edns_enable": "EDNS අනුග්රාහක අනුජාලය සබල කරන්න",
|
||||
"blocking_ipv4_desc": "අවහිර කළ A ඉල්ලීමක් සඳහා ආපසු එවිය යුතු අ.ජා. කෙ. (IP) ලිපිනය",
|
||||
"blocking_ipv6_desc": "අවහිර කළ AAAA ඉල්ලීමක් සඳහා ආපසු එවිය යුතු අ.ජා. කෙ. (IP) ලිපිනය",
|
||||
"blocking_mode_default": "පොදු: දැන්වීම් අවහිර කරන ආකාරයේ නීතියක් මගින් අවහිර කළ විට REFUSED සමඟ ප්රතිචාර දක්වයි; /etc/host-style ආකාරයේ නීතියක් මගින් අවහිර කළ විට නීතියේ දක්වා ඇති අ.ජා. කෙ. ලිපිනය සමඟ ප්රතිචාර දක්වයි",
|
||||
"blocking_mode_refused": "REFUSED: REFUSED කේතය සමඟ ප්රතිචාර දක්වයි",
|
||||
"blocking_mode_nxdomain": "නොපවතින වසම (NXDOMAIN): NXDOMAIN කේතය සමඟ ප්රතිචාර දක්වයි",
|
||||
"blocking_mode_null_ip": "අභිශූන්යය අ.ජා. කෙ. : ශුන්ය අ.ජා. කෙ. ලිපිනය සමඟ ප්රතිචාර දක්වයි (A සඳහා 0.0.0.0; AAAA සඳහා ::)",
|
||||
"blocking_mode_custom_ip": "අභිරුචි අන්තර්ජාල කෙටුම්පත: අතින් සැකසූ අ.ජා. කෙ. ලිපිනයක් සමඟ ප්රතිචාර දක්වයි",
|
||||
"upstream_dns_client_desc": "ඔබ මෙම ක්ෂේත්රය හිස්ව තබා ගන්නේ නම්, ඇඩ්ගාර්ඩ් හෝම් විසින් <0>ව.නා.ප. සැකසුම්</0> හි වින්යාසගත කර ඇති සේවාදායකයන් භාවිතා කරනු ඇත.",
|
||||
"tracker_source": "ලුහුබැඳීම් මූලාශ්රය",
|
||||
"source_label": "මූලාශ්රය",
|
||||
"found_in_known_domain_db": "දැනුවත් වසම් දත්ත ගබඩාවේ හමු විය.",
|
||||
"category_label": "ප්රවර්ගය",
|
||||
"list_label": "ලැයිස්තුව",
|
||||
"unknown_filter": "{{filterId}} නොදන්නා පෙරහනකි",
|
||||
"known_tracker": "දැනුවත් ලුහුබැඳීමක්",
|
||||
"install_welcome_title": "ඇඩ්ගාර්ඩ් හෝම් වෙත සාදරයෙන් පිළිගනිමු!",
|
||||
"install_welcome_desc": "ඇඩ්ගාර්ඩ් හෝම් යනු ජාලය පුරා ඇති දැන්වීම් සහ ලුහුබැඳීම අවහිර කරන ව.නා.ප. සේවාදායකි. ඔබගේ මුළු ජාලය සහ සියලුම උපාංග පාලනය කිරීමට ඉඩ සලසා දීම එහි පරමාර්ථය යි, එයට අනුග්රාහක පාර්ශවීය වැඩසටහනක් භාවිතා කිරීම අවශ්ය නොවේ.",
|
||||
"install_settings_title": "පරිපාලක වියමන අතුරු මුහුණත",
|
||||
"install_settings_listen": "සවන් දෙන අතුරු මුහුණත",
|
||||
"install_settings_port": "කවුළුව",
|
||||
"install_settings_interface_link": "ඔබගේ ඇඩ්ගාර්ඩ් හෝම් පරිපාලක වියමන අතුරු මුහුණත පහත ලිපිනයන්ගෙන් ප්රවේශ විය හැකිය:",
|
||||
"form_error_port": "වලංගු කවුළුවක අගයක් ඇතුළත් කරන්න",
|
||||
"install_settings_dns": "ව.නා.ප. සේවාදායකය",
|
||||
"install_settings_dns_desc": "පහත ලිපිනයන්හි ව.නා.ප. සේවාදායකය භාවිතා කිරීම සඳහා ඔබගේ උපාංග හෝ මාර්ගකාරකය වින්යාසගත කිරීමට අවශ්ය වනු ඇත:",
|
||||
"install_settings_all_interfaces": "සියලුම අතුරුමුහුණත්",
|
||||
"install_auth_title": "සත්යාපනය",
|
||||
"install_auth_desc": "ඔබගේ ඇඩ්ගාර්ඩ් හෝම් පරිපාලක වියමන අතුරු මුහුණතට මුරපද සත්යාපනය වින්යාසගත කිරීම අතිශයින් නිර්දේශ කෙරේ. එය ඔබගේ ස්ථානීය ජාලයෙන් පමණක් ප්රවේශ විය හැකි වුවද, එය තව දුරටත් සීමා රහිත ප්රවේශයකින් ආරක්ෂා කර ගැනීම වැදගත් ය.",
|
||||
"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": "ඇඩ්ගාර්ඩ් හෝම් භාවිතා කිරීම ආරම්භයට, ඔබගේ උපාංග එය පරිශ්රීලනයට වින්යාසගත කිරීම අවශ්ය වේ.",
|
||||
"install_submit_title": "සුභ පැතුම්!",
|
||||
"install_submit_desc": "පිහිටුවීමේ ක්රියා පටිපාටිය අවසන් වී ඇති අතර ඔබ ඇඩ්ගාර්ඩ් හෝම් භාවිතය ආරම්භ කිරීමට සූදානම්ය.",
|
||||
"install_devices_router": "මාර්ගකාරකය",
|
||||
"install_devices_router_desc": "මෙම පිහිටුම ඔබගේ නිවසේ මාර්ගකාරකයට සම්බන්ධ සියලුම උපාංග ස්වයංක්රීයව ආවරණය කරන අතර ඔබට ඒවා අතින් වින්යාසගත කිරීමට අවශ්ය නොවනු ඇත.",
|
||||
"install_devices_address": "ඇඩ්ගාර්ඩ් හෝම් ව.නා.ප. සේවාදායකය පහත ලිපිනයන්ට සවන් දෙමින් පවතී",
|
||||
"install_devices_router_list_1": "ඔබේ මාර්ගකාරකය සඳහා වූ මනාපයන් විවෘත කරන්න. සාමාන්යයෙන්, එය ඔබගේ අතිරික්සුවෙන් ඒ.ස.නි.(URL) ක් හරහා (http://192.168.0.1/ හෝ http://192.168.1.1/ වැනි) පිවිසිය හැකිය. මුර පදය ඇතුළත් කිරීමට ඔබෙන් ඉල්ලා සිටිය හැකිය. ඔබට එය මතක නැතිනම්, බොහෝ විට මාර්ගකාරකයේ බොත්තමක් එබීමෙන් මුරපදය නැවත සැකසිය හැක. සමහර මාර්ගකාරක සඳහා විශේෂිත යෙදුමක් අවශ්ය වන අතර, එය දැනටමත් ඔබේ පරිගණකයේ/දුරකථනයේ ස්ථාපනය කර තිබිය යුතුය.",
|
||||
"install_devices_router_list_2": "ග.ධා.වි.කෙ. (DHCP)/ ව.නා.ප. (DNS) සැකසුම් සොයා ගන්න. ඉලක්කම් කට්ටල දෙකකට හෝ තුනකට ඉඩ දෙන ක්ෂේත්රයක් අසල ඇති ව.නා.ප. අක්ෂර සොයන්න, සෑම එකක්ම ඉලක්කම් එකේ සිට තුන දක්වා කාණ්ඩ හතරකට බෙදා ඇත.",
|
||||
"install_devices_router_list_3": "ඔබගේ ඇඩ්ගාර්ඩ් හෝම් සේවාදායක ලිපින එහි ඇතුළත් කරන්න.",
|
||||
"install_devices_router_list_4": "ඔබට සමහර වර්ගයේ මාර්ගකාරකය වල අභිරුචි ව.නා.ප. සේවාදායකයක් සැකසිය නොහැක. මෙම අවස්ථාවේදී ඇඩ්ගාර්ඩ් හෝම් <0>ග.ධා.වි.කෙ. සේවාදායකයක්</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": "'පහත සඳහන් ව.නා.ප. සේවාදායක ලිපින භාවිතා කරන්න' යන්න තෝරා ඔබගේ ඇඩ්ගාර්ඩ් හෝම් සේවාදායක ලිපින ඇතුළත් කරන්න.",
|
||||
"install_devices_macos_list_1": "ඇපල් අයිකනය මත ක්ලික් කර පද්ධති මනාපයන් වෙත යන්න.",
|
||||
"install_devices_macos_list_2": "ජාලය මත ක්ලික් කරන්න.",
|
||||
"install_devices_macos_list_3": "ඔබගේ ලැයිස්තුවේ පළමු සම්බන්ධතාවය තෝරා උසස් මත ක්ලික් කරන්න.",
|
||||
"install_devices_macos_list_4": "ව.නා.ප. (DNS) තීරුව තෝරා ඔබගේ ඇඩ්ගාර්ඩ් හෝම් සේවාදායක ලිපින ඇතුළත් කරන්න.",
|
||||
"install_devices_android_list_1": "ඇන්ඩ්රොයිඩ් මෙනුවෙහි මුල් තිරයෙන්, සැකසීම් මත තට්ටු කරන්න.",
|
||||
"install_devices_android_list_2": "මෙනුවේ වයි-ෆයි මත තට්ටු කරන්න. පවතින සියලුම ජාල ලැයිස්තුගත කර ඇති තිරය පෙන්වනු ඇත (ජංගම සම්බන්ධතාවය සඳහා අභිරුචි ව.නා.ප. සැකසිය නොහැක).",
|
||||
"install_devices_android_list_3": "ඔබ සම්බන්ධ වී ඇති ජාලය මත දිගු වේලාවක් ඔබන්න, ඉන්පසුව ජාලය වෙනස් කිරීම මත තට්ටු කරන්න.",
|
||||
"install_devices_android_list_4": "ඔබට සමහර උපාංගවල වැඩිදුර සැකසුම් බැලීමට \"උසස්\" සඳහා වූ කොටුව සලකුණු කිරීමට අවශ්ය විය හැකිය. එමෙන්ම ඔබගේ ඇන්ඩ්රොයිඩ් ව.නා.ප. (DNS) සැකසුම් වෙනස් කිරීමට අ.ජා. කෙ. (IP) සැකසුම්, ග.ධා.වි.කෙ. (DHCP) සිට ස්ථිතික වෙත මාරු කළ යුතුය.",
|
||||
"install_devices_android_list_5": "ව.නා.ප. 1 සහ ව.නා.ප. 2 පිහිටුවීම් අගයන් ඔබගේ ඇඩ්ගාර්ඩ් හෝම් සේවාදායක ලිපින වලට වෙනස් කරන්න.",
|
||||
"install_devices_ios_list_1": "මුල් තිරයේ සිට, සැකසුම් මත තට්ටු කරන්න.",
|
||||
"install_devices_ios_list_2": "වම්පස මෙනුවෙහි වයි-ෆයි තෝරන්න (ජංගම දුරකථන සඳහා ව.නා.ප. වින්යාසගත කිරීමට නොහැකිය).",
|
||||
"install_devices_ios_list_3": "දැනට ක්රියාකාරී ජාලයයහෙි නම මත තට්ටු කරන්න.",
|
||||
"install_devices_ios_list_4": "ව.නා.ප. (DNS) ක්ෂේත්රය තුළ ඔබගේ ඇඩ්ගාර්ඩ් හෝම් සේවාදායක ලිපින ඇතුළත් කරන්න.",
|
||||
"get_started": "ආරම්භ කර ගන්න",
|
||||
"next": "ඊළඟ",
|
||||
"open_dashboard": "උපකරණ පුවරුව විවෘත කරන්න",
|
||||
"install_saved": "සාර්ථකව සුරකින ලදි",
|
||||
"encryption_title": "සංකේතාංකනය",
|
||||
"encryption_desc": "ගුප්තකේතනය (HTTPS/TLS) සඳහා ව.නා.ප. සහ පරිපාලක වියමන අතුරු මුහුණත සහය දක්වයි",
|
||||
"encryption_config_saved": "සංකේතාංකන වින්යාසය සුරකින ලදි",
|
||||
"encryption_server": "සේවාදායකයේ නම",
|
||||
"encryption_server_enter": "ඔබගේ වසම් නාමය ඇතුළත් කරන්න",
|
||||
"encryption_redirect": "ස්වයංක්රීයව HTTPS වෙත හරවා යවන්න",
|
||||
"encryption_redirect_desc": "සබල කර ඇත්නම්, ඇඩ්ගාර්ඩ් හෝම් ඔබව ස්වයංක්රීයව HTTP සිට HTTPS ලිපින වෙත හරවා යවනු ඇත.",
|
||||
"encryption_https": "HTTPS කවුළුව",
|
||||
"encryption_https_desc": "HTTPS කවුළුව වින්යාසගත කර ඇත්නම්, ඇඩ්ගාර්ඩ් හෝම් පරිපාලක අතුරුමුහුණත HTTPS හරහා ප්රවේශ විය හැකි අතර එය '/dns-query' ස්ථානයේ DNS-over-HTTPS ද ලබා දෙනු ඇත.",
|
||||
"encryption_dot": "DNS-over-TLS කවුළුව",
|
||||
"encryption_dot_desc": "මෙම කවුළුව වින්යාසගත කර ඇත්නම්, ඇඩ්ගාර්ඩ් හෝම් විසින් මෙම කවුළුව හරහා DNS-over-TLS සේවාදායකයක් ක්රියාත්මක කරනු ඇත.",
|
||||
"encryption_doq": "DNS-over-QUIC කවුළුව",
|
||||
"encryption_doq_desc": "මෙම කවුළුව වින්යාසගත කර ඇත්නම්, ඇඩ්ගාර්ඩ් හෝම් විසින් මෙම කවුළුව හරහා DNS-over-QUIC සේවාදායකයක් ක්රියාත්මක කරනු ඇත. එය පර්යේෂණාත්මක වන අතර විශ්වාසදායක නොවිය හැකිය. එසේම, මේ වන විට එයට සහාය දක්වන බොහෝ අනුග්රාහකයින් නොමැත.",
|
||||
"encryption_certificates": "සහතික",
|
||||
"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": "සංකේතාංකනය සබල කර ඇත්නම්, ඇඩ්ගාර්ඩ් හෝම් පරිපාලක අතුරුමුහුණත HTTPS හරහා ක්රියා කරනු ඇති අතර ව.නා.ප. සේවාදායකය DNS-over-HTTPS සහ DNS-over-TLS හරහා ලැබෙන ඉල්ලීම් සඳහා සවන් දෙනු ඇත.",
|
||||
"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": "ඇඩ්ගාර්ඩ් හෝම් {{version}} දැන් ලබා ගත හැකිය! වැඩි විස්තර සඳහා <0>මෙහි ක්ලික් කරන්න</0>.",
|
||||
"setup_guide": "පිහිටුවීමේ මාර්ගෝපදේශය",
|
||||
"dns_addresses": "ව.නා.ප. ලිපින",
|
||||
"dns_start": "ව.නා.ප. සේවාදායකය ආරම්භ වෙමින් පවතී",
|
||||
"dns_status_error": "ව.නා.ප. සේවාදායකයේ තත්වය පරීක්ෂා කිරීමේදී දෝෂයකි",
|
||||
"down": "පහත",
|
||||
"fix": "නිරාකරණය කරන්න",
|
||||
"dns_providers": "මෙහි තෝරා ගැනීමට <0>දැනුවත් ව.නා.ප. සපයන්නන්ගේ ලැයිස්තුවක්</0> ඇත.",
|
||||
"update_now": "දැන් \tයාවත්කාල කරන්න",
|
||||
"update_failed": "ස්වයංක්රීය යාවත්කාල කිරීම අසාර්ථක විය. අතින් යාවත්කාල කිරීමට කරුණාකර <a>පියවර අනුගමනය කරන්න</a>.",
|
||||
"processing_update": "කරුණාකර රැඳී සිටින්න, ඇඩ්ගාර්ඩ් හෝම් යාවත්කාලීන වෙමින් පවතී",
|
||||
"clients_title": "අනුග්රාහකයන්",
|
||||
"clients_desc": "ඇඩ්ගාර්ඩ් හෝම් වෙත සම්බන්ධ කර ඇති උපාංග වින්යාසගත කරන්න",
|
||||
"settings_global": "ගෝලීය",
|
||||
"settings_custom": "අභිරුචි",
|
||||
"table_client": "අනුග්රාහකය",
|
||||
"table_name": "නම",
|
||||
"save_btn": "සුරකින්න",
|
||||
"client_add": "අනුග්රාහකයක් එකතු කරන්න",
|
||||
"client_new": "නව අනුග්රාහකය",
|
||||
"client_edit": "අනුග්රාහකය සංස්කරණය කරන්න",
|
||||
"client_identifier": "හඳුන්වනය",
|
||||
"ip_address": "අ.ජා. කෙ. (IP) ලිපිනය",
|
||||
"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}}\" අනුග්රාහකය සාර්ථකව යාවත්කාල කරන ලදි",
|
||||
"client_confirm_delete": "\"{{key}}\" අනුග්රාහකය ඉවත් කිරීමට අවශ්ය බව ඔබට විශ්වාසද?",
|
||||
"list_confirm_delete": "මෙම ලැයිස්තුව ඉවත් කිරීමට අවශ්ය බව ඔබට විශ්වාස ද?",
|
||||
"auto_clients_desc": "ඇඩ්ගාර්ඩ් හෝම් භාවිතා කරන අනුග්රාහකයන්ගේ දත්ත, නමුත් වින්යාසය තුළ ගබඩා කර නොමැති",
|
||||
"access_title": "ප්රවේශවීමට සැකසුම්",
|
||||
"access_desc": "මෙහිදී ඔබට ඇඩ්ගාර්ඩ් හෝම් ව.නා.ප. සේවාදායකය සඳහා ප්රවේශ වීමේ නීති වින්යාසගත කළ හැකිය.",
|
||||
"access_allowed_title": "අවසර ලත් අනුග්රාහකයන්",
|
||||
"access_allowed_desc": "CIDR හෝ අ.ජා. කෙ. ලිපින ලැයිස්තුවක් වින්යාසගත කර ඇත්නම්, AdGuard Home විසින් එම අ.ජා. කෙ. ලිපින වලින් පමණක් ඉල්ලීම් පිළිගනු ඇත.",
|
||||
"access_disallowed_title": "අවසර නොලත් අනුග්රාහකයන්",
|
||||
"access_disallowed_desc": "CIDR හෝ අ.ජා. කෙ. ලිපින ලැයිස්තුවක් වින්යාසගත කර ඇත්නම්, ඇඩ්ගාර්ඩ් හෝම් විසින් එම අ.ජා. කෙ. ලිපින වලින් ඉල්ලීම් අත්හරිනු ඇත.",
|
||||
"access_blocked_title": "අවහිර කළ වසම්",
|
||||
"access_settings_saved": "ප්රවේශ වීමේ සැකසුම් සාර්ථකව සුරකින ලදි",
|
||||
"updates_checked": "යාවත්කාලීන කිරීම් සාර්ථකව පරික්ෂා කර ඇත",
|
||||
"updates_version_equal": "ඇඩ්ගාර්ඩ් හෝම් යාවත්කාලීනයි",
|
||||
"check_updates_now": "යාවත්කාල කිරීම සඳහා දැන් පරීක්ෂා කරන්න",
|
||||
"dns_privacy": "ව.නා.ප. රහස්යතා",
|
||||
"setup_dns_privacy_3": "<0>මෙහි ඔබට භාවිතා කළ හැකි මෘදුකාංග ලැයිස්තුවක් ඇත.</0>",
|
||||
"setup_dns_privacy_other_2": "<0>ඩීඑන්එස්ප්රොක්සි</0> දන්නා සියලුම ආරක්ෂිත ව.නා.ප. කෙටුම්පත් සඳහා සහය දක්වයි.",
|
||||
"setup_dns_privacy_other_3": "<1>DNS-over-HTTPS</1> සඳහා <0>dnscrypt-පෙරකලාසිය</0> සහය දක්වයි.",
|
||||
"setup_dns_privacy_other_4": "<1>DNS-over-HTTPS</1> සඳහා <0>මොසිල්ලා ෆයර්ෆොක්ස්</0> සහය දක්වයි.",
|
||||
"setup_dns_notice": "ඔබට <1>DNS-over-HTTPS</1> හෝ <1>DNS-over-TLS</1> භාවිතා කිරීම සඳහා ඇඩ්ගාර්ඩ් හෝම් සැකසුම් තුළ <0>සංකේතාංකනය වින්යාසගත</0> කිරීමට අවශ්ය වේ.",
|
||||
"rewrite_added": "\"{{key}}\" සඳහා ව.නා.ප. නැවත ලිවීම සාර්ථකව එකතු කරන ලදි",
|
||||
"rewrite_add": "ව.නා.ප. නැවත ලිවීමක් එකතු කරන්න",
|
||||
"rewrite_not_found": "ව.නා.ප. නැවත ලිවීම් හමු නොවීය",
|
||||
"rewrite_confirm_delete": "\"{{key}}\" සඳහා ව.නා.ප. නැවත ලිවීම ඉවත් කිරීමට අවශ්ය බව ඔබට විශ්වාසද?",
|
||||
"rewrite_desc": "විශේෂිත වසම් නාමයක් සඳහා අභිරුචි ව.නා.ප. ප්රතිචාර පහසුවෙන් වින්යාසගත කිරීමට ඉඩ දෙයි.",
|
||||
"rewrite_applied": "නැවත ලිවීමේ නීතිය යොදා ඇත",
|
||||
"rewrite_hosts_applied": "ධාරක ගොනු නීතිය මගින් නැවත ලියා ඇත",
|
||||
"dns_rewrites": "ව.නා.ප. නැවත ලිවීම්",
|
||||
"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) හෝ අ.ජා. කෙ. මගින් අවහිර කර ඇත",
|
||||
"blocked_by_cname_or_ip": "අන්. නාමයක් (CNAME) හෝ අ.ජා. කෙ. මගින් අවහිර කර ඇත",
|
||||
"try_again": "නැවත උත්සහා කරන්න",
|
||||
"example_rewrite_domain": "මෙම වසම් නාමය සඳහා පමණක් ප්රතිචාර නැවත ලියන්න.",
|
||||
"example_rewrite_wildcard": "<0>example.org</0> සහ එහි සියලුම උප වසම් සඳහා ප්රතිචාර නැවත ලියයි.",
|
||||
"rewrite_ip_address": "අ.ජා. කෙ. ලිපිනය: මෙම අ.ජා. කෙටුම්පත A හෝ AAAA ප්රතිචාරයකට භාවිතා කරන්න",
|
||||
"rewrite_domain_name": "වසම් නාමය: අන්. නා. (CNAME) වාර්තාවක් එක් කරන්න",
|
||||
"disable_ipv6": "IPv6 අබල කරන්න",
|
||||
"disable_ipv6_desc": "මෙම අංගය සක්රීය කර ඇත්නම්, IPv6 ලිපින සඳහා වන සියලුම ව.නා.ප. විමසුම් (AAAA වර්ගය) අතහැර දමනු ලැබේ.",
|
||||
"fastest_addr": "වේගවත්ම අන්තර්ජාල කෙටුම්පත් (IP) ලිපිනය",
|
||||
"fastest_addr_desc": "සියලුම ව.නා.ප. සේවාදායකයන් හරහා විමසා සියලු ප්රතිචාර අතරින් වේගවත්ම අ.ජා. කෙ. ලිපිනය ලබා දෙයි. සියලුම ව.නා.ප. සේවාදායකයන්ගේ ප්රතිචාර සඳහා අප බලා සිටිය යුතු බැවින් මෙය ව.නා.ප. විමසුම් මන්දගාමී කරන නමුත් සමස්ත සම්බන්ධතාවය වැඩි දියුණු කරයි.",
|
||||
"autofix_warning_text": "ඔබ \"නිරාකරණය කරන්න\" බොත්තම එබුවහොත්, ඔබගේ පද්ධතිය ඇඩ්ගාර්ඩ් හෝම් ව.නා.ප. සේවාදායකය භාවිතා කිරීමට වින්යාසගත කරනු ඇත.",
|
||||
"tags_title": "හැඳුනුම් සංකේත",
|
||||
"tags_desc": "අනුග්රාහකයට අනුරූප වන හැඳුනුම් සංකේත ඔබට තෝරා ගත හැකිය. පෙරහන් නීති වලට හැඳුනුම් සංකේත ඇතුළත් කළ හැකි අතර ඒවා වඩාත් නිවැරදිව යෙදීමට ඔබට ඉඩ සලසයි. <0>වැඩිදුර ඉගෙන ගන්න</0>",
|
||||
"form_select_tags": "අනුග්රාහක හැඳුනුම් සංකේත",
|
||||
"check_title": "පෙරීම පරීක්ෂා කරන්න",
|
||||
"check_desc": "ධාරක නාමය පෙරහන් කර ඇත්දැයි පරීක්ෂා කරන්න",
|
||||
"check": "පරීක්ෂා කරන්න",
|
||||
"form_enter_host": "ධාරක නාමයක් ඇතුළත් කරන්න",
|
||||
"filtered_custom_rules": "අභිරුචි පෙරීමේ නීති මගින් පෙරහන් කරන ලදි",
|
||||
"choose_from_list": "ලැයිස්තුවෙන් තෝරන්න",
|
||||
"add_custom_list": "අභිරුචි ලැයිස්තුවක් එකතු කරන්න",
|
||||
"host_whitelisted": "ධාරකය සුදු ලැයිස්තු ගත කර ඇත",
|
||||
"check_ip": "අ.ජා. කෙ. (IP) ලිපින: {{ip}}",
|
||||
"check_cname": "අන්. නාමය (CNAME): {{cname}}",
|
||||
"check_reason": "හේතුව: {{reason}}",
|
||||
"check_service": "සේවාවෙහි නම: {{service}}",
|
||||
"service_name": "සේවාවේ නම",
|
||||
"check_not_found": "ඔබගේ පෙරහන් ලැයිස්තු තුළ සොයා ගත නොහැක",
|
||||
"client_confirm_block": "{{ip}} අනුග්රාහකය අවහිර කිරීමට අවශ්ය බව ඔබට විශ්වාසද?",
|
||||
"client_confirm_unblock": "{{ip}} අනුග්රාහකය අනවහිර කිරීමට අවශ්ය බව ඔබට විශ්වාසද?",
|
||||
"client_blocked": "අනුග්රාහකය \"{{ip}}\" සාර්ථකව අවහිර කරන ලදි",
|
||||
"client_unblocked": "අනුග්රාහකය \"{{ip}}\" සාර්ථකව අනවහිර කරන ලදි",
|
||||
"static_ip": "ස්ථිතික අ.ජා. කෙ. ලිපිනය",
|
||||
"static_ip_desc": "ඇඩ්ගාර්ඩ් හෝම් යනු සේවාදායකයක් බැවින් එය නිසි ලෙස ක්රියා කිරීමට ස්ථිතික අන්තර්ජාල කෙටුම්පත් (IP) ලිපිනයක් අවශ්ය වේ. එසේ නොමැතිනම්, යම් අවස්ථාවක දී ඔබගේ මාර්ගකාරකය මෙම උපාංගයට වෙනත් අ.ජා. කෙ. ලිපිනයක් ලබා දිය හැකිය.",
|
||||
"set_static_ip": "ස්ථිතික අ.ජා. කෙ. (IP) ලිපිනයක් සකසන්න",
|
||||
"install_static_ok": "සුභ තොරතුරක්! ස්ථිතික අන්තර්ජාල කෙටුම්පත් (IP) ලිපිනය දැනටමත් වින්යාසගත කර ඇත",
|
||||
"install_static_error": "මෙම ජාල අතුරුමුහුණත සඳහා ඇඩ්ගාර්ඩ් හෝම් හට එය ස්වයංක්රීයව වින්යාසගත කළ නොහැක. කරුණාකර මෙය අතින් කරන්නේ කෙසේද යන්න පිළිබඳ උපදෙස් සොයා ගන්න.",
|
||||
"install_static_configure": "ගතික අ.ජා. කෙ. (IP) ලිපිනයක් භාවිතා කරන බව අපි අනාවරණය කර ගෙන ඇත්තෙමු - <0>{{ip}}</0>. එය ඔබගේ ස්ථිතික ලිපිනය ලෙස භාවිතා කිරීමට අවශ්යද?",
|
||||
"confirm_static_ip": "ඇඩ්ගාර්ඩ් හෝම් ඔබේ ස්ථිතික අ.ජා. කෙ. (IP) ලිපිනය ලෙස {{ip}} වින්යාසගත කරනු ඇත. ඔබට ඉදිරියට යාමට අවශ්යද?",
|
||||
"list_updated": "{{count}} ලැයිස්තුව යාවත්කාලීන කරන ලදි",
|
||||
"list_updated_plural": "ලැයිස්තු {{count}} ක් යාවත්කාලීන කරන ලදි",
|
||||
"all_queries": "සියලුම විමසුම්",
|
||||
"show_blocked_responses": "අවහිර කර ඇත",
|
||||
"show_whitelisted_responses": "සුදු ලැයිස්තුගත කර ඇත",
|
||||
"blocked_safebrowsing": "ආරක්ෂිත සෙවීම මගින් අවහිර කරන ලද",
|
||||
"blocked_adult_websites": "අවහිර කළ වැඩිහිටි වියමන අඩවි",
|
||||
"blocked_threats": "අවහිර කළ තර්ජන",
|
||||
"allowed": "අවසර ලත්",
|
||||
"filtered": "පෙරහන් කරන ලද",
|
||||
"rewritten": "නැවත ලියන ලද",
|
||||
"safe_search": "ආරක්ෂිත සෙවීම",
|
||||
"blocklist": "අවහිර කිරීමේ ලැයිස්තුව",
|
||||
"milliseconds_abbreviation": "මිලි තත්.",
|
||||
"cache_size": "නිහිතයෙහි ප්රමාණය",
|
||||
"cache_size_desc": "ව.නා.ප. නිහිතයෙහි ප්රමාණය (බයිට වලින්)",
|
||||
"cache_ttl_min_override": "අවම පව. කා. අභිබවන්න",
|
||||
"cache_ttl_max_override": "උපරිම පව. කා. අභිබවන්න",
|
||||
"enter_cache_size": "ව.නා.ප. නිහිතයෙහි ප්රමාණය ඇතුළත් කරන්න (බයිට)",
|
||||
"enter_cache_ttl_min_override": "අවම පව. කා. (TTL) ඇතුළත් කරන්න",
|
||||
"enter_cache_ttl_max_override": "උපරිම පව. කා. (TTL) ඇතුළත් කරන්න",
|
||||
"cache_ttl_max_override_desc": "ව.නා.ප. නිහිතයෙහි ඇති ඇතුළත් කිරීම් සඳහා ඉතා වැඩි පවත්නා කාලයක අගයක් (තත්පර) සකසන්න",
|
||||
"ttl_cache_validation": "නිහිතයෙහි අවම පව. කා. (TTL) අගය උපරිම අගයට වඩා අඩු හෝ සමාන විය යුතුය",
|
||||
"filter_category_general": "පොදු",
|
||||
"filter_category_security": "ආරක්ෂණ",
|
||||
"filter_category_regional": "ප්රාදේශ්රීය",
|
||||
"filter_category_other": "වෙනත්",
|
||||
"filter_category_general_desc": "බොහෝ උපාංගවල ලුහුබැඳීම් සහ දැන්වීම් අවහිර කරන ලැයිස්තු",
|
||||
"filter_category_security_desc": "අනිෂ්ට මෘදුකාංග, තතුබෑම් හෝ වංචනික වසම් අවහිර කිරීමට විශේෂ වූ ලැයිස්තු",
|
||||
"filter_category_regional_desc": "ප්රාදේශ්රීය දැන්වීම් සහ ලුහුබැඳීමේ සේවාදායකයන් කෙරෙහි අවධානය යොමු කරන ලැයිස්තු",
|
||||
"filter_category_other_desc": "වෙනත් අවහිර කිරීමේ ලැයිස්තු",
|
||||
"setup_config_to_enable_dhcp_server": "ග.ධා.වි.කෙ. සේවාදායකය සක්රීය කිරීම සඳහා වින්යාසය පිහිටුවන්න",
|
||||
"original_response": "මුල් ප්රතිචාරය",
|
||||
"click_to_view_queries": "විමසුම් බැලීමට ඔබන්න",
|
||||
"port_53_faq_link": "53 කවුළුව බොහෝ විට \"DNSStubListener\" හෝ \"systemd-resolved\" සේවාවන් භාවිතයට ගනු ලැබේ. කරුණාකර මෙය විසඳන්නේ කෙසේද යන්න පිළිබඳ <0>මෙම උපදෙස්</0> කියවන්න.",
|
||||
"adg_will_drop_dns_queries": "ඇඩ්ගාර්ඩ් හෝම් විසින් මෙම අනුග්රාහකයේ සියලුම ව.නා.ප. විමසුම් අතහැර දමනු ඇත.",
|
||||
"client_not_in_allowed_clients": "\"අවසර ලත් අනුග්රාහකයින්\" ලැයිස්තුවේ නොමැති නිසා අනුග්රාහකයට අවසර නැත.",
|
||||
"experimental": "පරීක්ෂණාත්මක"
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"client_settings": "Nastavenie klienta",
|
||||
"example_upstream_reserved": "Môžete zadať DNS upstream <0>pre konkrétnu doménu (domény)</0>",
|
||||
"example_upstream_comment": "Môžete napísať komentár",
|
||||
"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",
|
||||
@@ -11,6 +12,8 @@
|
||||
"save_config": "Uložiť konfiguráciu",
|
||||
"enabled_dhcp": "DHCP server zapnutý",
|
||||
"disabled_dhcp": "DHCP server vypnutý",
|
||||
"unavailable_dhcp": "DHCP nie je dostupné",
|
||||
"unavailable_dhcp_desc": "AdGuard Home nemôže vo vašom OS prevádzkovať DHCP server",
|
||||
"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",
|
||||
@@ -21,14 +24,18 @@
|
||||
"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á",
|
||||
"dhcp_ipv4_settings": "Nastavenia DHCP IPv4",
|
||||
"dhcp_ipv6_settings": "Nastavenia DHCP IPv6",
|
||||
"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_server_name": "Neplatné meno servera",
|
||||
"form_error_positive": "Musí byť väčšie ako 0",
|
||||
"form_error_negative": "Musí byť číslo 0 alebo viac",
|
||||
"range_end_error": "Musí byť väčšie ako začiatok rozsahu",
|
||||
"dhcp_form_gateway_input": "IP brána",
|
||||
"dhcp_form_subnet_input": "Maska podsiete",
|
||||
"dhcp_form_range_title": "Rozsah IP adries",
|
||||
@@ -44,7 +51,7 @@
|
||||
"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_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ú IP adresu 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ý",
|
||||
@@ -109,7 +116,7 @@
|
||||
"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>.",
|
||||
"filters_block_toggle_hint": "Pravidlá blokovania môžete nastaviť v nastaveniach <a>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",
|
||||
@@ -127,7 +134,8 @@
|
||||
"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.",
|
||||
"upstream_dns_help": "Zadajte adresy serverov jednu na riadok. <a>Získajte viac informácií</a> o konfigurácii DNS serverov na strane servera.",
|
||||
"upstream_dns_configured_in_file": "Konfigurované v {{path}}",
|
||||
"test_upstream_btn": "Test upstreamov",
|
||||
"upstreams": "Upstreams",
|
||||
"apply_btn": "Použiť",
|
||||
@@ -181,6 +189,7 @@
|
||||
"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_doq": "šifrované <0>DNS-over-QUIC</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",
|
||||
@@ -189,6 +198,10 @@
|
||||
"dns_test_not_ok_toast": "Server \"{{key}}\": nemohol byť použitý, skontrolujte, či ste ho správne napísali",
|
||||
"unblock": "Odblokovať",
|
||||
"block": "Blokovať",
|
||||
"disallow_this_client": "Zablokovať tohto klienta",
|
||||
"allow_this_client": "Povoliť tohto klienta",
|
||||
"block_for_this_client_only": "Blokovať len pre tohto klienta",
|
||||
"unblock_for_this_client_only": "Odblokovať len pre tohto klienta",
|
||||
"time_table_header": "Čas",
|
||||
"date": "Dátum",
|
||||
"domain_name_table_header": "Meno domény",
|
||||
@@ -208,8 +221,8 @@
|
||||
"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",
|
||||
"rule_removed_from_custom_filtering_toast": "Pravidlo odstránené z vlastných filtračných pravidiel: {{rule}}",
|
||||
"rule_added_to_custom_filtering_toast": "Pravidlo pridané do vlastných filtračných pravidiel: {{rule}}",
|
||||
"query_log_response_status": "Stav: {{value}}",
|
||||
"query_log_filtered": "Vyfiltrované pomocou {{filter}}",
|
||||
"query_log_confirm_clear": "Naozaj chcete vymazať celý denník dopytov?",
|
||||
@@ -230,21 +243,31 @@
|
||||
"blocking_mode": "Spôsob blokovania",
|
||||
"default": "Predvolené",
|
||||
"nxdomain": "NXDOMAIN",
|
||||
"refused": "REFUSED",
|
||||
"null_ip": "Nulová IP adresa",
|
||||
"custom_ip": "Vlastná IP adresa",
|
||||
"blocking_ipv4": "Blokovanie IPv4",
|
||||
"blocking_ipv6": "Blokovanie IPv6",
|
||||
"dnscrypt": "DNSCrypt",
|
||||
"dns_over_https": "DNS-over-HTTPS",
|
||||
"dns_over_tls": "DNS-over-TLS",
|
||||
"dns_over_quic": "DNS-over-QUIC",
|
||||
"client_id": "ID klienta",
|
||||
"client_id_placeholder": "Zadať ID klienta",
|
||||
"client_id_desc": "Rôznych klientov možno identifikovať podľa špeciálneho ID klienta. <a>Tu</a> sa dozviete viac o tom, ako identifikovať klientov.",
|
||||
"download_mobileconfig_doh": "Prevziať .mobileconfig pre DNS-over-HTTPS",
|
||||
"download_mobileconfig_dot": "Prevziať .mobileconfig pre DNS-over-TLS",
|
||||
"download_mobileconfig": "Stiahnuť konfiguračný súbor",
|
||||
"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)",
|
||||
"rate_limit_desc": "Počet požiadaviek za sekundu, ktoré môže jeden klient vykonať (nastavenie na hodnotu 0 znamená 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_default": "Predvolené: Odpovedať nulovou adresou IP (0,0.0.0 pre A; :: pre AAAA), keď je blokovaná pravidlom v štýle Adblock; odpovedať IP adresou uvedenou v pravidle, keď je blokovaná pravidlom v štýle /etc/hosts",
|
||||
"blocking_mode_refused": "REFUSED: Odpovedať kódom REFUSED",
|
||||
"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",
|
||||
@@ -253,7 +276,6 @@
|
||||
"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č",
|
||||
@@ -314,13 +336,14 @@
|
||||
"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_doq": "Port DNS-cez-QUIC",
|
||||
"encryption_doq_desc": "Ak je tento port nakonfigurovaný, AdGuard Home na tomto porte spustí server DNS-over-QUIC. Je to experimentálne a nemusí to byť spoľahlivé. Momentálne tiež nie je príliš veľa klientov, ktorí by ju podporovali.",
|
||||
"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.",
|
||||
@@ -354,7 +377,7 @@
|
||||
"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.",
|
||||
"update_failed": "Automatická aktualizácia zlyhala. Prosím <a>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",
|
||||
@@ -368,7 +391,6 @@
|
||||
"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",
|
||||
@@ -399,7 +421,8 @@
|
||||
"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_3": "<0>Tu je zoznam softvéru, ktorý môžete použiť.</0>",
|
||||
"setup_dns_privacy_4": "Na zariadení so systémom iOS 14 alebo macOS Big Sur si môžete stiahnuť špeciálny súbor „.mobileconfig“, ktorý do nastavení DNS pridáva servery <highlight> DNS-over-HTTPS </highlight> alebo <highlight> DNS-over-TLS </highlight>.",
|
||||
"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.",
|
||||
@@ -411,6 +434,7 @@
|
||||
"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_privacy_ioc_mac": "Konfigurácia iOS a macOS",
|
||||
"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é",
|
||||
@@ -510,8 +534,8 @@
|
||||
"check_ip": "IP adresy: {{ip}}",
|
||||
"check_cname": "CNAME: {{cname}}",
|
||||
"check_reason": "Dôvod: {{reason}}",
|
||||
"check_rule": "Pravidlo: {{rule}}",
|
||||
"check_service": "Meno služby: {{service}}",
|
||||
"service_name": "Názov služby",
|
||||
"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}}\"?",
|
||||
@@ -546,13 +570,12 @@
|
||||
"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}}",
|
||||
"enter_cache_size": "Zadať veľkosť cache (v bajtoch)",
|
||||
"enter_cache_ttl_min_override": "Zadať minimálne TTL (v sekundách)",
|
||||
"enter_cache_ttl_max_override": "Zadať maximálne TTL (v sekundách)",
|
||||
"cache_ttl_min_override_desc": "Predĺži krátke hodnoty TTL (v sekundách) prijaté od servera typu upstream pri ukladaní odpovedí DNS do cache pamäte",
|
||||
"cache_ttl_max_override_desc": "Nastaví maximálnu hodnotu TTL (v sekundách) pre záznamy v DNS cache pamäti",
|
||||
"ttl_cache_validation": "Minimálna hodnota TTL cache musí byť menšia alebo rovná maximálnej hodnote",
|
||||
"filter_category_general": "Všeobecné",
|
||||
"filter_category_security": "Bezpečnosť",
|
||||
"filter_category_regional": "Regionálne",
|
||||
@@ -561,7 +584,11 @@
|
||||
"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",
|
||||
"setup_config_to_enable_dhcp_server": "K zapnutiu DHCP servera je potrebné nastaviť konfiguráciu",
|
||||
"original_response": "Pôvodná odozva",
|
||||
"click_to_view_queries": "Kliknite pre zobrazenie dopytov",
|
||||
"port_53_faq_link": "Port 53 je často obsadený službami \"DNSStubListener\" alebo \"systemd-resolved\". Prečítajte si <0>tento návod</0> o tom, ako to vyriešiť."
|
||||
"port_53_faq_link": "Port 53 je často obsadený službami \"DNSStubListener\" alebo \"systemd-resolved\". Prečítajte si <0>tento návod</0> o tom, ako to vyriešiť.",
|
||||
"adg_will_drop_dns_queries": "AdGuard Home zruší všetky DNS dopyty od tohto klienta.",
|
||||
"client_not_in_allowed_clients": "Klient nemá povolenie, pretože sa nenachádza v zozname „Povolení klienti“.",
|
||||
"experimental": "Experimentálne"
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"client_settings": "Nastavitve odjemalca",
|
||||
"example_upstream_reserved": "lahko določite nazgornji DNS <0>za določene domene</0>",
|
||||
"example_upstream_comment": "Lahko določite komentar",
|
||||
"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",
|
||||
@@ -11,6 +12,8 @@
|
||||
"save_config": "Shrani konfiguracijo",
|
||||
"enabled_dhcp": "Strežnik DHCP je omogočen",
|
||||
"disabled_dhcp": "Strežnik DHCP je onemogočen",
|
||||
"unavailable_dhcp": "DHCP ni na voljo",
|
||||
"unavailable_dhcp_desc": "AdGuard Home ne more zagnati strežnika DHCP v vašem operacijskem sistemu",
|
||||
"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",
|
||||
@@ -21,14 +24,18 @@
|
||||
"dhcp_static_leases": "DHCP statični najemi",
|
||||
"dhcp_leases_not_found": "Ni najdenih najemov DHCP",
|
||||
"dhcp_config_saved": "Shranjena konfiguracija DHCP strežnika",
|
||||
"dhcp_ipv4_settings": "Nastavitve DHCP IPv4",
|
||||
"dhcp_ipv6_settings": "Nastavitve DHCP IPv6",
|
||||
"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_server_name": "Neveljavno ime strežnika",
|
||||
"form_error_positive": "Mora biti večja od 0",
|
||||
"form_error_negative": "Mora biti enako ali več kot 0",
|
||||
"range_end_error": "Mora biti večji od začtka razpona",
|
||||
"dhcp_form_gateway_input": "IP prehoda",
|
||||
"dhcp_form_subnet_input": "Maska podomrežja",
|
||||
"dhcp_form_range_title": "Razpon naslovov IP",
|
||||
@@ -109,7 +116,7 @@
|
||||
"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>.",
|
||||
"filters_block_toggle_hint": "Pravila zaviranja lahko nastavite v nastavitvah <a>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'",
|
||||
@@ -127,7 +134,8 @@
|
||||
"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.",
|
||||
"upstream_dns_help": "Vnesite naslove strežnikov, enega na vrstico. <a>Več o tem</a> o konfiguriranju zgornjih strežnikov DNS.",
|
||||
"upstream_dns_configured_in_file": "Nastavljen v {{path}}",
|
||||
"test_upstream_btn": "Preizkusi upstreame",
|
||||
"upstreams": "Tokovi navzgor",
|
||||
"apply_btn": "Uporabi",
|
||||
@@ -181,6 +189,7 @@
|
||||
"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_doq": "šifriran <0>DNS-prek-QUIC</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",
|
||||
@@ -189,6 +198,10 @@
|
||||
"dns_test_not_ok_toast": "Ni mogoče uporabiti: strežnika \"{{key}}\". Preverite, ali ste ga pravilno napisali",
|
||||
"unblock": "Omogoči",
|
||||
"block": "Onemogoči",
|
||||
"disallow_this_client": "Onemogoči tega odjemalca",
|
||||
"allow_this_client": "Dovoli tega odjemalca",
|
||||
"block_for_this_client_only": "Onemogoči samo za tega odjemalca",
|
||||
"unblock_for_this_client_only": "Omogoči samo za tega odjemalca",
|
||||
"time_table_header": "Čas",
|
||||
"date": "Datum",
|
||||
"domain_name_table_header": "Ime domene",
|
||||
@@ -208,8 +221,8 @@
|
||||
"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",
|
||||
"rule_removed_from_custom_filtering_toast": "Pravilo je odstranjeno iz pravil filtriranja po meri: {{rule}}",
|
||||
"rule_added_to_custom_filtering_toast": "Pravilo je dodano pravilom filtriranja po meri: {{rule}}",
|
||||
"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?",
|
||||
@@ -230,21 +243,31 @@
|
||||
"blocking_mode": "Način zaviranja",
|
||||
"default": "Privzeto",
|
||||
"nxdomain": "NXDOMAIN",
|
||||
"refused": "REFUSED",
|
||||
"null_ip": "Prazen IP",
|
||||
"custom_ip": "IP po meri",
|
||||
"blocking_ipv4": "Onemogočanje IPv4",
|
||||
"blocking_ipv6": "Onemogočanje IPv6",
|
||||
"dnscrypt": "DNSCrypt",
|
||||
"dns_over_https": "DNS-prek-HTTPS",
|
||||
"dns_over_tls": "DNS-prek-TLS",
|
||||
"dns_over_quic": "DNS-prek-QIUC",
|
||||
"client_id": "ID odjemalca",
|
||||
"client_id_placeholder": "Vnesite ID odjemalca",
|
||||
"client_id_desc": "Različne odjemalce je mogoče prepoznati s posebnim ID-jem odjemalca. <a>Tukaj</a> lahko izveste več o prepoznavanju odjemalcev.",
|
||||
"download_mobileconfig_doh": "Prenos .mobileconfig za DNS-preko-HTTPS",
|
||||
"download_mobileconfig_dot": "Prenos .mobileconfig za DNS-preko-TLS",
|
||||
"download_mobileconfig": "Prenesi nastavitveno datoteko",
|
||||
"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)",
|
||||
"rate_limit_desc": "Število zahtev na sekundo, ki jih sme narediti posamezen odjemalec (nastavitev na 0 pomeni 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_default": "Privzeto: odgovori z ničelnim naslovom IP (0.0.0.0 za A; :: za AAAA), ko je onemogočen s pravilom v slogu Adblocka; odgovor z naslovom IP, določenim v pravilu, ko je onemogočen s pravilom /etc/hosts",
|
||||
"blocking_mode_refused": "REFUSED: Odziv s kodo REFUSED",
|
||||
"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",
|
||||
@@ -253,7 +276,7 @@
|
||||
"source_label": "Vir",
|
||||
"found_in_known_domain_db": "Najdeno v zbirki podatkov znanih domen.",
|
||||
"category_label": "Kategorija",
|
||||
"rule_label": "Pravilo",
|
||||
"rule_label": "Pravila",
|
||||
"list_label": "Seznam",
|
||||
"unknown_filter": "Neznan filter {{filterId}}",
|
||||
"known_tracker": "Znan sledilec",
|
||||
@@ -321,6 +344,8 @@
|
||||
"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_doq": "DNS-prek-vrat QUIC",
|
||||
"encryption_doq_desc": "Če so nastavljena ta vrata bo AdGuard Home na teh vratih zagnal strežnik DNS-prek-QUIC. To je eksperimentalno in morda ni zanesljivo. Prav tako trenutno ni preveč odjemalcev, ki to podpirajo.",
|
||||
"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.",
|
||||
@@ -354,7 +379,7 @@
|
||||
"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.",
|
||||
"update_failed": "Samodejna posodobitev ni uspela. Prosimo <a>sledite korakom</a>, da ročno posodobite.",
|
||||
"processing_update": "Prosimo, počakajte. AdGuard Home se posodablja!",
|
||||
"clients_title": "Odjemalci",
|
||||
"clients_desc": "Konfigurirajte naprave, ki so povezane z AdGuard Home",
|
||||
@@ -368,7 +393,7 @@
|
||||
"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>",
|
||||
"client_identifier_desc": "Odjemalce je mogoče prepoznati po naslovu IP, CIDR, naslovu MAC ali posebnem ID-ju odjemalca (lahko se uporablja za DoT/DoH/DoQ). <0>Tukaj</0> lahko izveste več o prepoznavanju odjemalcev.",
|
||||
"form_enter_ip": "Vnesite IP",
|
||||
"form_enter_mac": "Vnesite MAC",
|
||||
"form_enter_id": "Vnesi identifikatorja",
|
||||
@@ -390,7 +415,7 @@
|
||||
"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_title": "Prepovedane 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",
|
||||
@@ -399,7 +424,8 @@
|
||||
"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_3": "<0>Tu je seznam programov, ki jo lahko uporabite.</0>",
|
||||
"setup_dns_privacy_4": "Na napravo iOS 14 ali macOS Big Sur lahko prenesete posebno datoteko '.mobileconfig', ki v nastavitve DNS doda strežnike <highlight>DNS-preko-HTTPS</highlight> ali <highlight>DNS-preko-TLS</highlight>.",
|
||||
"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.",
|
||||
@@ -411,6 +437,7 @@
|
||||
"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_privacy_ioc_mac": "Nastavitve iOS in macOS",
|
||||
"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}}\"",
|
||||
@@ -510,8 +537,8 @@
|
||||
"check_ip": "IP naslovi: {{ip}}",
|
||||
"check_cname": "CNAME: {{cname}}",
|
||||
"check_reason": "Razlog: {{reason}}",
|
||||
"check_rule": "Pravilo: {{rule}}",
|
||||
"check_service": "Ime storitve: {{service}}",
|
||||
"service_name": "Ime storitve",
|
||||
"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}}\"?",
|
||||
@@ -546,13 +573,12 @@
|
||||
"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}}",
|
||||
"enter_cache_size": "Vnesite velikost predpomnilnika (v bajtih)",
|
||||
"enter_cache_ttl_min_override": "Vnesite najmanjši TTL (v sekundah)",
|
||||
"enter_cache_ttl_max_override": "Vnesite največji TTL (v sekundah)",
|
||||
"cache_ttl_min_override_desc": "Razširite kratke vrednosti časa v živo (v sekundah), ki jih prejme strežnik za predpomnjenje, ko predpomni odzive DNS",
|
||||
"cache_ttl_max_override_desc": "Nastavi največjo vrednost časa v živo (v sekundah) za vnose v predpomnilnik DNS",
|
||||
"ttl_cache_validation": "Najmanjša vrednost predpomnilnika TTL mora biti manjša ali enaka največji vrednosti",
|
||||
"filter_category_general": "Splošno",
|
||||
"filter_category_security": "Varnost",
|
||||
"filter_category_regional": "Področno",
|
||||
@@ -561,7 +587,11 @@
|
||||
"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",
|
||||
"setup_config_to_enable_dhcp_server": "Nastavitve za omogočanje strežnika DHCP",
|
||||
"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."
|
||||
"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.",
|
||||
"adg_will_drop_dns_queries": "AdGuard Home bo izpustil vse poizvedbe DNS iz tega odjemalca.",
|
||||
"client_not_in_allowed_clients": "Odjemalec ni dovoljen, ker ga ni na seznamu \"Dovoljeni odjemalci\".",
|
||||
"experimental": "Eksperimentalno"
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"client_settings": "Postavke klijenta",
|
||||
"example_upstream_reserved": "možete odrediti DNS upstream <0>za određene domene</0>",
|
||||
"example_upstream_comment": "Možete upisati komentar",
|
||||
"upstream_parallel": "Koristite paralelne zahteve da ubrzate rešavanje istovremenim zahtevanjem svih servera",
|
||||
"parallel_requests": "Paralelni zahtevi",
|
||||
"load_balancing": "Load-balancing",
|
||||
@@ -11,6 +12,8 @@
|
||||
"save_config": "Sačuvaj konfiguraciju",
|
||||
"enabled_dhcp": "DHCP server uključen",
|
||||
"disabled_dhcp": "DHCP server isključen",
|
||||
"unavailable_dhcp": "DHCP nije dostupan",
|
||||
"unavailable_dhcp_desc": "AdGuard Home Ne može da pokrene DHCP na vašem OS",
|
||||
"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",
|
||||
@@ -21,6 +24,8 @@
|
||||
"dhcp_static_leases": "DHCP statička pozajmljivanja",
|
||||
"dhcp_leases_not_found": "DHCP pozajmljivanja nisu pronađena",
|
||||
"dhcp_config_saved": "Sačuvaj DHCP konfiguraciju servera",
|
||||
"dhcp_ipv4_settings": "DHCP IPv4 postavke",
|
||||
"dhcp_ipv6_settings": "DHCP IPv6 postavke",
|
||||
"form_error_required": "Obavezno polje",
|
||||
"form_error_ip4_format": "Nevažeći IPv4 format",
|
||||
"form_error_ip6_format": "Nevažeći IPv6 format",
|
||||
@@ -29,6 +34,7 @@
|
||||
"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",
|
||||
"range_end_error": "Mora biti veće od početnog opsega",
|
||||
"dhcp_form_gateway_input": "IP mrežnog prolaza",
|
||||
"dhcp_form_subnet_input": "Subnet mask",
|
||||
"dhcp_form_range_title": "Opseg IP adresa",
|
||||
@@ -109,7 +115,7 @@
|
||||
"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.",
|
||||
"filters_block_toggle_hint": "Možete postaviti pravila blokiranja u <a>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",
|
||||
@@ -127,7 +133,8 @@
|
||||
"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.",
|
||||
"upstream_dns_help": "Unesite adrese servera, jednu po redu. <a>Saznajte više</a> o konfigurisanju upstream DNS servera.",
|
||||
"upstream_dns_configured_in_file": "Konfiguriši u {{path}}",
|
||||
"test_upstream_btn": "Testiraj upstreams",
|
||||
"upstreams": "Upstreams",
|
||||
"apply_btn": "Primeni",
|
||||
@@ -181,6 +188,7 @@
|
||||
"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_doq": "šifrovano <0>DNS-over-QUIC</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",
|
||||
@@ -189,6 +197,10 @@
|
||||
"dns_test_not_ok_toast": "Server \"{{key}}\": se ne može koristiti. Proverite da li ste ga ispravno uneli",
|
||||
"unblock": "Odblokiraj",
|
||||
"block": "Blokiraj",
|
||||
"disallow_this_client": "Zabrani ovaj klijent",
|
||||
"allow_this_client": "Dozvoli ovaj klijent",
|
||||
"block_for_this_client_only": "Blokiraj samo za ovaj klijent",
|
||||
"unblock_for_this_client_only": "Odblokiraj samo za ovaj klijent",
|
||||
"time_table_header": "Vreme",
|
||||
"date": "Datum",
|
||||
"domain_name_table_header": "Ime domena",
|
||||
@@ -208,8 +220,8 @@
|
||||
"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",
|
||||
"rule_removed_from_custom_filtering_toast": "Pravilo uklonjeno iz prilagođenih pravila filtriranja: {{rule}}",
|
||||
"rule_added_to_custom_filtering_toast": "Pravilo dodato u prilagođena pravila filtriranja: {{rule}}",
|
||||
"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?",
|
||||
@@ -230,12 +242,15 @@
|
||||
"blocking_mode": "Način blokiranja",
|
||||
"default": "Podrazumevano",
|
||||
"nxdomain": "NXDOMAIN",
|
||||
"refused": "Odbijeno",
|
||||
"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",
|
||||
"download_mobileconfig_doh": "Preuzimanja",
|
||||
"download_mobileconfig_dot": "Preuzmi .mobileconfig za DNS-over-TLS",
|
||||
"plain_dns": "Plain DNS",
|
||||
"form_enter_rate_limit": "Unesite ograničenje brzine",
|
||||
"rate_limit": "Ograničenje brzine",
|
||||
@@ -244,7 +259,8 @@
|
||||
"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_default": "Podrazumevano: Odgovara sa REFUSED 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_refused": "Odbijeno: Odgovor sa kodom odbijanja",
|
||||
"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",
|
||||
@@ -253,7 +269,6 @@
|
||||
"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",
|
||||
@@ -314,13 +329,14 @@
|
||||
"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_doq": "DNS-over-QUIC port",
|
||||
"encryption_doq_desc": "Ako je ovaj port konfigurisan, AdGuard Home će pokrenuti DNS-over-QUIC server na tom portu. To je eksperiment i možda neće biti stabilno. Takođe, u ovom trenutku ne postoji puno klijenata koji ovo podržavaju.",
|
||||
"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.",
|
||||
@@ -354,7 +370,7 @@
|
||||
"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.",
|
||||
"update_failed": "Automatsko ažuriranje nije uspelo. Molimo vas <a>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",
|
||||
@@ -368,7 +384,6 @@
|
||||
"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",
|
||||
@@ -399,7 +414,8 @@
|
||||
"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_3": "<0>Ovde je lista softvera koje možete koristiti.</0>",
|
||||
"setup_dns_privacy_4": "Na iOS 14 ili macOS Big Sur uređaju možete preuzeti posebnu '.mobileconfig' datotteku koja dodaje <highlight>DNS-over-HTTPS</highlight> ili <highlight>DNS-over-TLS</highlight> servere u DNS postavke.",
|
||||
"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.",
|
||||
@@ -510,8 +526,8 @@
|
||||
"check_ip": "IP adrese: {{ip}}",
|
||||
"check_cname": "CNAME: {{cname}}",
|
||||
"check_reason": "Razlog: {{reason}}",
|
||||
"check_rule": "Pravilo: {{rule}}",
|
||||
"check_service": "Ime usluge: {{service}}",
|
||||
"service_name": "Ime usluge",
|
||||
"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}}\"?",
|
||||
@@ -551,8 +567,7 @@
|
||||
"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}}",
|
||||
"ttl_cache_validation": "Minimalna TTL vrednost mora biti manja ili jednaka najvišij vrednosti",
|
||||
"filter_category_general": "Opšte",
|
||||
"filter_category_security": "Bezbednost",
|
||||
"filter_category_regional": "Region",
|
||||
@@ -561,7 +576,11 @@
|
||||
"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",
|
||||
"setup_config_to_enable_dhcp_server": "Podesite konfiguraciju kako biste omogućili DHCP server",
|
||||
"original_response": "Izvorni odgovor",
|
||||
"click_to_view_queries": "Kliknite da pogledate zahteve",
|
||||
"port_53_faq_link": "Port 53 je najčešće zauzet od \"DNSStubListener\" ili \"systemd-resolved\" usluga. Pročitajte <0>ovo uputstvo</0> kako da to rešite."
|
||||
"port_53_faq_link": "Port 53 je najčešće zauzet od \"DNSStubListener\" ili \"systemd-resolved\" usluga. Pročitajte <0>ovo uputstvo</0> kako da to rešite.",
|
||||
"adg_will_drop_dns_queries": "AdGuard Home će odbacivati sve DNS unose od ovog klijenta.",
|
||||
"client_not_in_allowed_clients": "Klijent nije dozvoljen zato što se ne nalazi na spisku dozvoljenih klijenata.",
|
||||
"experimental": "Eksperimentalno"
|
||||
}
|
||||
@@ -90,7 +90,7 @@
|
||||
"average_processing_time": "Genomsnittlig processtid",
|
||||
"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>.",
|
||||
"filters_block_toggle_hint": "Du kan ställa in egna blockerings regler i <a>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",
|
||||
@@ -103,7 +103,6 @@
|
||||
"encryption_settings": "Krypteringsinställningar",
|
||||
"dhcp_settings": "DHCP-inställningar",
|
||||
"upstream_dns": "Upstream DNS-servrar",
|
||||
"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",
|
||||
@@ -162,8 +161,8 @@
|
||||
"page_table_footer_text": "Sida",
|
||||
"rows_table_footer_text": "rader",
|
||||
"updated_custom_filtering_toast": "Uppdaterade 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",
|
||||
"rule_removed_from_custom_filtering_toast": "Regel borttagen från de egna filterreglerna: {{rule}}",
|
||||
"rule_added_to_custom_filtering_toast": "Regel tillagd till de egna filterreglerna: {{rule}}",
|
||||
"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?",
|
||||
@@ -178,7 +177,6 @@
|
||||
"source_label": "Källa",
|
||||
"found_in_known_domain_db": "Hittad i domändatabas.",
|
||||
"category_label": "Kategori",
|
||||
"rule_label": "Regel",
|
||||
"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.",
|
||||
@@ -236,7 +234,6 @@
|
||||
"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",
|
||||
@@ -274,7 +271,7 @@
|
||||
"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.",
|
||||
"update_failed": "Automatisk uppdatering misslyckad. Var god <a>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",
|
||||
@@ -288,7 +285,6 @@
|
||||
"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",
|
||||
@@ -315,7 +311,6 @@
|
||||
"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.",
|
||||
|
||||
@@ -95,7 +95,7 @@
|
||||
"average_processing_time": "เวลาประมวลผลโดยเฉลี่ย",
|
||||
"average_processing_time_hint": "เวลาเฉลี่ยเป็นมิลลิวินาทีในการประมวลผลคำขอ DNS",
|
||||
"block_domain_use_filters_and_hosts": "ปิดกั้นโดเมนโดยใช้ตัวกรองและไฟล์โฮสต์",
|
||||
"filters_block_toggle_hint": "คุณสามารถตั้งค่ากฎการปิดกั้นในการตั้งค่า<a href='#filters'>ตัวกรอง</a>",
|
||||
"filters_block_toggle_hint": "คุณสามารถตั้งค่ากฎการปิดกั้นในการตั้งค่า<a>ตัวกรอง</a>",
|
||||
"use_adguard_browsing_sec": "ใช้บริการเว็บการรักษาความปลอดภัยการเรียกดู AdGuard",
|
||||
"use_adguard_browsing_sec_hint": "AdGuard Home จะตรวจสอบว่าโดเมนอยู่ในรายการที่ไม่อนุญาตโดยเว็บเซอร์วิสความปลอดภัยการสืบค้นหรือไม่ จะใช้ API การค้นหาที่เป็นมิตรกับข้อมูลส่วนบุคคลเพื่อทำการตรวจสอบ: มีการส่งคำนำหน้าสั้น ๆ ของชื่อโดเมน SHA256 แฮชไปยังเซิร์ฟเวอร์",
|
||||
"use_adguard_parental": "ใช้บริการเว็บการควบคุมโดยผู้ปกครองของ AdGuard",
|
||||
@@ -108,7 +108,6 @@
|
||||
"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": "นำไปใช้",
|
||||
@@ -167,8 +166,8 @@
|
||||
"page_table_footer_text": "หน้า",
|
||||
"rows_table_footer_text": "ตาราง",
|
||||
"updated_custom_filtering_toast": "อัปเดตกฎการกรองที่กำหนดเอง",
|
||||
"rule_removed_from_custom_filtering_toast": "ลบกฎออกจากกฎการกรองที่กำหนดเองแล้ว",
|
||||
"rule_added_to_custom_filtering_toast": "เพิ่มกฎในกฎการกรองที่กำหนดเองแล้ว",
|
||||
"rule_removed_from_custom_filtering_toast": "ลบกฎออกจากกฎการกรองที่กำหนดเองแล้ว {{rule}}",
|
||||
"rule_added_to_custom_filtering_toast": "เพิ่มกฎในกฎการกรองที่กำหนดเองแล้ว {{rule}}",
|
||||
"query_log_response_status": "สถานะ: {{value}}",
|
||||
"query_log_filtered": "กรองโดย {{filter}}",
|
||||
"query_log_confirm_clear": "คุณแน่ใจหรือไม่ว่าต้องการลบบันทึกการใช้งานทั้งหมด?",
|
||||
@@ -192,10 +191,8 @@
|
||||
"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 ที่ตั้งค่าด้วยตนเอง",
|
||||
@@ -203,7 +200,6 @@
|
||||
"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 ปิดกั้นโฆษณาและติดตามทั่วทั้งเครือข่าย วัตถุประสงค์คือเพื่อให้คุณควบคุมเครือข่ายทั้งหมดและอุปกรณ์ทั้งหมดของคุณและไม่จำเป็นต้องใช้โปรแกรมฝั่งไคลเอ็นต์",
|
||||
@@ -261,7 +257,6 @@
|
||||
"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",
|
||||
@@ -301,7 +296,7 @@
|
||||
"fix": "ซ่อม",
|
||||
"dns_providers": "นี่คือรายการ <0>ของผู้ให้บริการ DNS ที่เป็นที่รู้จัก</0> ให้เลือก",
|
||||
"update_now": "อัปเดตตอนนี้",
|
||||
"update_failed": "อัปเดทล้มเหลว กรุณา <a href='https://github.com/AdguardTeam/AdGuardHome/wiki/Getting-Started#update'> ทำตามขั้นตอน </a> เพื่ออัพเดทด้วยตนเอง",
|
||||
"update_failed": "อัปเดทล้มเหลว กรุณา <a> ทำตามขั้นตอน </a> เพื่ออัพเดทด้วยตนเอง",
|
||||
"processing_update": "รอซักครู่ AdGuard Home กำลังอัปเดท",
|
||||
"clients_title": "เครื่องลูกข่าย",
|
||||
"clients_desc": "ตั้งค่าอุปกรณ์เพื่อเชื่อมต่อ AdGuard Home",
|
||||
@@ -315,7 +310,6 @@
|
||||
"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": "ป้อนตัวระบุ",
|
||||
|
||||
@@ -1,32 +1,41 @@
|
||||
{
|
||||
"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",
|
||||
"example_upstream_comment": "Bir yorum belirtebilirsiniz",
|
||||
"upstream_parallel": "Tüm üst sunucuları eş zamanlı sorgulayarak çözümü hızlandırmak için paralel istekleri kullan",
|
||||
"parallel_requests": "Paralel istekler",
|
||||
"load_balancing": "Yük dengeleme",
|
||||
"load_balancing_desc": "Her seferinde bir sunucuyu sorgulayın. AdGuard Home, sunucuyu seçmek için ağırlıklı rastgele algoritmayı kullanacak, böylece en hızlı sunucu daha sık kullanılacak.",
|
||||
"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",
|
||||
"check_dhcp_servers": "DHCP sunucularını denetle",
|
||||
"save_config": "Yapılandırmayı kaydet",
|
||||
"enabled_dhcp": "DHCP sunucusu etkinleştirildi",
|
||||
"disabled_dhcp": "DHCP sunucusu devre dışı bırakıldı",
|
||||
"unavailable_dhcp": "DHCP kullanılamıyor",
|
||||
"unavailable_dhcp_desc": "AdGuard Home, işletim sisteminizde DHCP sunucusu çalıştıramıyor",
|
||||
"dhcp_title": "DHCP sunucusu (deneysel!)",
|
||||
"dhcp_description": "Eğer router'ınız DHCP ayarlarını sunmuyorsa AdGuard'ın dahili DHCP sunucusunu kullanabilirsiniz.",
|
||||
"dhcp_description": "Yönlendiriciniz DHCP ayarlarını sağlamıyorsa, AdGuard'ın kendi yerleşik 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_not_found": "Yerleşik DHCP sunucusunu etkinleştirmek güvenlidir - Ağ üzerinde herhangi bir aktif DHCP sunucusu bulamadık. Ancak, otomatik testimiz şu anda %100 garanti vermediği için el ile tekrar kontrol etmenizi öneririz.",
|
||||
"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",
|
||||
"dhcp_config_saved": "DHCP sunucusu yapılandırması kaydedildi",
|
||||
"dhcp_ipv4_settings": "DHCP IPv4 Ayarları",
|
||||
"dhcp_ipv6_settings": "DHCP IPv6 Ayarları",
|
||||
"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_ip4_format": "Geçersiz IPv4 biçimi",
|
||||
"form_error_ip6_format": "Geçersiz IPv6 biçimi",
|
||||
"form_error_ip_format": "Geçersiz IP biçimi",
|
||||
"form_error_mac_format": "Geçersiz MAC biçimi",
|
||||
"form_error_client_id_format": "Geçersiz müşteri kimliği formatı",
|
||||
"form_error_client_id_format": "Geçersiz istemci kimliği biçimi",
|
||||
"form_error_server_name": "Geçersiz sunucu adı",
|
||||
"form_error_positive": "0'dan büyük olmalı",
|
||||
"form_error_negative": "0 veya daha büyük olmalıdır",
|
||||
"range_end_error": "Başlangıç aralığından daha büyük olmalı",
|
||||
"dhcp_form_gateway_input": "Ağ Geçidi IP'si",
|
||||
"dhcp_form_subnet_input": "Alt Ağ Maskesi",
|
||||
"dhcp_form_range_title": "IP adres aralığı",
|
||||
@@ -37,10 +46,10 @@
|
||||
"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ı",
|
||||
"ip": "IP",
|
||||
"dhcp_table_hostname": "Ana 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_warning": "DHCP sunucusunu yine de etkinleştirmek istiyorsanız, ağınızda başka bir aktif DHCP sunucusu olmadığından emin olun. Aksi takdirde, bağlı cihazlar için interneti kırabilir!",
|
||||
"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.",
|
||||
@@ -51,9 +60,12 @@
|
||||
"dhcp_add_static_lease": "Sabit kiralama ekle",
|
||||
"dhcp_reset": "DHCP yapılandırmasını sıfırlamak istediğinizden emin misiniz?",
|
||||
"country": "Ülke",
|
||||
"city": "Şehir",
|
||||
"delete_confirm": "\"{{key}}\" silmek istediğinizden emin misiniz?",
|
||||
"form_enter_hostname": "Cihaz ismi girin",
|
||||
"form_enter_hostname": "Ana bilgisayar adı girin",
|
||||
"error_details": "Hata detayları",
|
||||
"response_details": "Yanıt ayrıntıları",
|
||||
"request_details": "İstek ayrıntıları",
|
||||
"client_details": "İstemci detayları",
|
||||
"details": "Detaylar",
|
||||
"back": "Geri",
|
||||
@@ -62,23 +74,26 @@
|
||||
"filters": "Filtreler",
|
||||
"filter": "Filtre",
|
||||
"query_log": "Sorgu Günlüğü",
|
||||
"compact": "Kompakt",
|
||||
"nothing_found": "Hiçbir şey bulunamadı",
|
||||
"faq": "SSS",
|
||||
"version": "Sürüm",
|
||||
"address": "Adres",
|
||||
"protocol": "Protokol",
|
||||
"on": "AÇIK",
|
||||
"off": "KAPALI",
|
||||
"copyright": "Tüm hakları saklıdır",
|
||||
"copyright": "Telif hakkı",
|
||||
"homepage": "Anasayfa",
|
||||
"report_an_issue": "Bir sorun bildir",
|
||||
"privacy_policy": "Gizlilik sözleşmesi",
|
||||
"privacy_policy": "Gizlilik politikası",
|
||||
"enable_protection": "Korumayı etkinleştir",
|
||||
"enabled_protection": "Koruma etkileştirildi",
|
||||
"disable_protection": "Korumayı durdur",
|
||||
"disabled_protection": "Koruma durduruldu",
|
||||
"disabled_protection": "Koruma devre dışı",
|
||||
"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",
|
||||
"blocked_by": "<0>Filtreler tarafından engellendi</0>",
|
||||
"stats_malware_phishing": "Kötü amaçlı yazılım/kimlik avı 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",
|
||||
@@ -93,35 +108,36 @@
|
||||
"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": "Reklam engelleme filtreleri ve ana bilgisayar engelleme listeleri tarafından engellenen 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ı",
|
||||
"enforced_save_search": "Zorunlu kılınmış güvenli arama",
|
||||
"number_of_dns_query_to_safe_search": "Güvenli Aramanın zorunlu kıldığı 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.",
|
||||
"block_domain_use_filters_and_hosts": "Filtre ve ana bilgisayar listelerini kullanarak alan adlarını engelle",
|
||||
"filters_block_toggle_hint": "<a>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.",
|
||||
"enforce_save_search_hint": "AdGuard Home şu arama motorlarında güvenli aramayı zorunlu kılabilir: Google, Youtube, Bing, DuckDuckGo, Yandex ve Pixabay.",
|
||||
"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.",
|
||||
"dns_blocklists": "DNS engelleme listeleri",
|
||||
"dns_allowlists": "DNS izin verilen listeleri",
|
||||
"dns_blocklists_desc": "AdGuard Home, engelleme listeleriyle eşleşen alanları engeller.",
|
||||
"dns_allowlists_desc": "DNS izin verilen 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.",
|
||||
"upstream_dns_help": "Her satıra bir sunucu adresi girin. Üst DNS sunucularını yapılandırma hakkında <a>daha fazla bilgi edinin</a>.",
|
||||
"upstream_dns_configured_in_file": "{{path}} içinde yapılandırıldı",
|
||||
"test_upstream_btn": "Üst sunucuyu test et",
|
||||
"upstreams": "Upstreams",
|
||||
"upstreams": "Üst kaynak",
|
||||
"apply_btn": "Uygula",
|
||||
"disabled_filtering_toast": "Filtreleme devre dışı",
|
||||
"enabled_filtering_toast": "Filtreleme çalışıyor",
|
||||
@@ -141,36 +157,39 @@
|
||||
"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",
|
||||
"filters_and_hosts_hint": "AdGuard Home temel reklam engelleme kuralları ve ana bilgisayar dosyalarının sözdizim kurallarını anlamaktadır.",
|
||||
"no_blocklist_added": "Engelleme listesi eklenmedi",
|
||||
"no_whitelist_added": "İzin verilen listesi eklenmedi",
|
||||
"add_blocklist": "Engelleme listesi ekle",
|
||||
"add_allowlist": "İzin listesi ekle",
|
||||
"add_allowlist": "İzin verilen listesine 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",
|
||||
"new_allowlist": "Yeni izin verilen listesi",
|
||||
"edit_blocklist": "Engelleme listesini düzenle",
|
||||
"edit_allowlist": "İzin listesini düzenle",
|
||||
"edit_allowlist": "İzin verilen listesini düzenle",
|
||||
"choose_blocklist": "Engelleme listelerini seçin",
|
||||
"choose_allowlist": "İzin verilen listelerini seç",
|
||||
"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",
|
||||
"enter_valid_allowlist": "İzin verilen listesine geçerli bir URL girin.",
|
||||
"form_error_url_format": "Geçersiz URL biçimi",
|
||||
"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.",
|
||||
"custom_filter_rules": "Özel filtreleme kuralları",
|
||||
"custom_filter_rules_hint": "Her satıra bir kural girin. Reklama engelleme kuralı veya ana bilgisayar dosyası sözdizimi 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_meaning": "sadece bir yorum",
|
||||
"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_dot": "şifrelenmiş <0>DNS-over-TLS</0>",
|
||||
"example_upstream_doh": "şifrelenmiş <0>DNS-over-HTTPS</0>",
|
||||
"example_upstream_doq": "şifrelenmiş <0>DNS-over-QUIC</0>",
|
||||
"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",
|
||||
@@ -179,12 +198,17 @@
|
||||
"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",
|
||||
"disallow_this_client": "Bu istemciye izin verme",
|
||||
"allow_this_client": "Bu istemciye izin ver",
|
||||
"block_for_this_client_only": "Yalnızca bu istemci için engelle",
|
||||
"unblock_for_this_client_only": "Yalnızca bu müşteri için engellemeyi kaldır",
|
||||
"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",
|
||||
"response_code": "Yanıt kodu",
|
||||
"client_table_header": "İstemci",
|
||||
"empty_response_status": "Boş",
|
||||
"show_all_filter_type": "Tümünü göster",
|
||||
@@ -196,64 +220,81 @@
|
||||
"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",
|
||||
"updated_custom_filtering_toast": "Özel filtreleme kuralları güncellendi",
|
||||
"rule_removed_from_custom_filtering_toast": "Özel filtreleme kurallarından kural kaldırıldı: {{rule}}",
|
||||
"rule_added_to_custom_filtering_toast": "Özel filtreleme kurallarına kural eklendi: {{rule}}",
|
||||
"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_updated": "Sorgu günlüğü başarıyla güncellendi",
|
||||
"query_log_clear": "Sorgu günlüklerini temizle",
|
||||
"query_log_retention": "Sorgu günlüklerinin saklanması",
|
||||
"query_log_enable": "Günlüğü 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",
|
||||
"anonymize_client_ip_desc": "İstemcinin tam IP adresini günlüklere ve istatistiklere kaydetmeyin",
|
||||
"dns_config": "DNS sunucusu yapılandırması",
|
||||
"dns_cache_config": "DNS önbelleği yapılandırması",
|
||||
"dns_cache_config_desc": "Burada DNS önbelleğini yapılandırabilirsiniz",
|
||||
"blocking_mode": "Engelleme modu",
|
||||
"default": "Varsayılan",
|
||||
"nxdomain": "NXDOMAIN",
|
||||
"refused": "REFUSED",
|
||||
"null_ip": "Boş IP",
|
||||
"custom_ip": "Özel IP",
|
||||
"blocking_ipv4": "IPv4 engelleme",
|
||||
"blocking_ipv6": "IPv6 engelleme",
|
||||
"dns_over_https": "DNS üzerinden HTTPS",
|
||||
"dnscrypt": "DNSCrypt",
|
||||
"dns_over_https": "DNS-over-HTTPS",
|
||||
"dns_over_tls": "DNS-over-TLS",
|
||||
"dns_over_quic": "DNS-over-QUIC",
|
||||
"client_id": "İstemci Kimliği",
|
||||
"client_id_placeholder": "İstemci Kimliği girin",
|
||||
"client_id_desc": "Farklı istemciler, özel bir istemci kimliği ile tanımlanabilir. <a>Burada</a> istemcileri nasıl belirleyeceğiniz hakkında daha fazla bilgi edinebilirsiniz.",
|
||||
"download_mobileconfig_doh": "DNS-over-HTTPS için .mobileconfig dosyasını indir",
|
||||
"download_mobileconfig_dot": "DNS-over-TLS için .mobileconfig dosyasını indir",
|
||||
"download_mobileconfig": "Yapılandırma dosyasını indir",
|
||||
"plain_dns": "Sade DNS",
|
||||
"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)",
|
||||
"rate_limit_desc": "Tek bir istemcinin yapmasına izin verilen saniye başına istek sayısı (0'a ayarlamak sınırsız anlamına gelir)",
|
||||
"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_default": "Varsayılan: Reklam engelleme stili kuralı tarafından engellendiğinde sıfır IP adresiyle (A için 0.0.0.0; AAAA için) yanıt verin; /etc/hosts-style kuralı tarafından engellendiğinde, kuralda belirtilen IP adresiyle yanıt verin",
|
||||
"blocking_mode_refused": "REFUSED: REFUSED kod ile yanıt verin",
|
||||
"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",
|
||||
"blocking_mode_null_ip": "Boş IP: Sıfır IP adresiyle yanıt verin (A için 0.0.0.0; :: AAAA için)",
|
||||
"blocking_mode_custom_ip": "Özel IP: El ile ayarlanmış bir IP adresi ile 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.",
|
||||
"tracker_source": "İzleyici kaynağı",
|
||||
"source_label": "Kaynak",
|
||||
"found_in_known_domain_db": "Bilinen alan adları veri tabanı içinde bulundu",
|
||||
"found_in_known_domain_db": "Bilinen alan adları veritabanı içinde bulundu.",
|
||||
"category_label": "Kategori",
|
||||
"rule_label": "Kural",
|
||||
"list_label": "Liste",
|
||||
"unknown_filter": "Bilinmeyen filtre {{filterId}}",
|
||||
"known_tracker": "Bilinen izleyici",
|
||||
"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_port": "Bağlantı noktası",
|
||||
"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",
|
||||
"form_error_port": "Geçerli bir bağlantı noktası 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_password": "Parola",
|
||||
"install_auth_confirm": "Parolayı onayla",
|
||||
"install_auth_username_enter": "Kullanıcı adı girin",
|
||||
"install_auth_password_enter": "Şifre girin",
|
||||
"install_step": "Adım",
|
||||
@@ -264,7 +305,7 @@
|
||||
"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_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 parola 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.",
|
||||
@@ -280,7 +321,7 @@
|
||||
"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_3": "Bağlı olduğunuz ağa uzun basın ve 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.",
|
||||
@@ -288,7 +329,7 @@
|
||||
"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",
|
||||
"next": "Sonraki",
|
||||
"open_dashboard": "Panoyu Aç",
|
||||
"install_saved": "Başarıyla kaydedildi",
|
||||
"encryption_title": "Şifreleme",
|
||||
@@ -296,34 +337,36 @@
|
||||
"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_server_desc": "HTTPS kullanmak için, SSL sertifikanız veya joker karakter sertifikanızla eşleşen sunucu adını girmeniz gerekir. Alan ayarlanmazsa, herhangi bir alan adı için TKG bağlantılarını kabul eder.",
|
||||
"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": "DNS-over-TLS bağlantı noktası",
|
||||
"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_doq": "DNS-over-QUIC bağlantı noktası",
|
||||
"encryption_doq_desc": "Bu bağlantı noktası yapılandırılırsa, AdGuard Home bu bağlantı noktasında DNS-over-QUIC sunucusu çalıştıracaktır. Deneysel ve güvenilir olmayabilir. Ayrıca, şu anda bunu destekleyen çok fazla istemci yok.",
|
||||
"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_certificates_input": "PEM biçimindeki 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_key_input": "Sertifikanızın PEM biçimi ö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_enable_desc": "Şifrelemeyi etkinleştirirseniz, AdGuard Home yönetici arayüzü HTTPS üzerinden çalışır ve DNS sunucusu DNS-over-HTTPS ve DNS-over-TLS üzerinden gelen istekleri dinler.",
|
||||
"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_hostnames": "Ana bilgisayar adları",
|
||||
"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_port_range": "80-65535 aralığında geçerli bir bağlantı noktası değeri girin",
|
||||
"form_error_port_unsafe": "Bu güvenli olmayan bir bağlantı noktası",
|
||||
"form_error_equal": "Aynı olmamalı",
|
||||
"form_error_password": "Şifreler uyuşmuyor",
|
||||
"reset_settings": "Ayarları sıfırla",
|
||||
@@ -336,7 +379,7 @@
|
||||
"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>",
|
||||
"update_failed": "Otomatik güncelleme başarısız oldu. Lütfen elle güncellemek için <a>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",
|
||||
@@ -350,12 +393,13 @@
|
||||
"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.",
|
||||
"client_identifier_desc": "İstemciler IP adresi, CIDR, MAC adresi veya özel bir istemci kimliği ile tanımlanabilir (DoT/DoH/DoQ için kullanılabilir). <0>Burada</0> istemcileri nasıl belirleyeceğiniz hakkında daha fazla bilgi edinebilirsiniz.",
|
||||
"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",
|
||||
"name": "İsim",
|
||||
"client_global_settings": "Genel ayarları kullan",
|
||||
"client_deleted": "\"{{key}}\" istemcisi başarıyla silindi",
|
||||
"client_added": "\"{{key}}\" istemcisi başarıyla eklendi",
|
||||
@@ -378,9 +422,10 @@
|
||||
"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_1": "<0>DNS-over-TLS:</0> <1>{{address}}</1> dizesini kullan.",
|
||||
"setup_dns_privacy_2": "<0>DNS-over-HTTPS:</0> <1>{{address}}</1> dizesini kullan.",
|
||||
"setup_dns_privacy_3": "<0>İşte kullanabileceğiniz yazılımların bir listesi.</0>",
|
||||
"setup_dns_privacy_4": "Bir iOS 14 veya macOS Big Sur cihazında, DNS ayarlarına <highlight>DNS-over-HTTPS</highlight> veya <highlight>DNS-over-TLS</highlight> sunucuları ekleyen özel '.mobileconfig' dosyasını indirebilirsiniz.",
|
||||
"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.",
|
||||
@@ -392,6 +437,7 @@
|
||||
"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_privacy_ioc_mac": "iOS ve macOS yapılandırması",
|
||||
"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",
|
||||
@@ -400,12 +446,12 @@
|
||||
"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ı",
|
||||
"rewrite_hosts_applied": "Ana bilgisayar 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ı",
|
||||
"form_error_domain_format": "Geçersiz alan adı biçimi",
|
||||
"form_error_answer_format": "Geçersiz cevap biçimi",
|
||||
"configure": "Yapılandır",
|
||||
"main_settings": "Ana ayarlar",
|
||||
"block_services": "Belirli hizmetleri engelle",
|
||||
@@ -430,6 +476,7 @@
|
||||
"domain": "Alan adı",
|
||||
"answer": "Cevap",
|
||||
"filter_added_successfully": "Filtre başarıyla eklendi",
|
||||
"filter_removed_successfully": "Filtre başarıyla kaldırıldı",
|
||||
"filter_updated": "Filtre başarıyla güncellendi",
|
||||
"statistics_configuration": "İstatistik yapılandırması",
|
||||
"statistics_retention": "İstatistikleri depolama",
|
||||
@@ -448,47 +495,55 @@
|
||||
"username_placeholder": "Kullanıcı adını girin",
|
||||
"password_label": "Parola",
|
||||
"password_placeholder": "Parolayı girin",
|
||||
"sign_in": "Oturum aç",
|
||||
"sign_in": "Giriş yap",
|
||||
"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ı",
|
||||
"network": "Ağ",
|
||||
"descr": "Açıklama",
|
||||
"whois": "Whois",
|
||||
"filtering_rules_learn_more": "Ana makinelere dair kendi kara listelerinizi oluşturmakla alakalı <0>daha fazla bilgi edinin</0>.",
|
||||
"filtering_rules_learn_more": "Kendi ana bilgisayar listelerinizi oluşturma hakkında <0>daha fazla bilgi edinin</0></0>.",
|
||||
"blocked_by_response": "Cevap olarak CNAME veya IP tarafından engellendi",
|
||||
"blocked_by_cname_or_ip": "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.",
|
||||
"rewrite_ip_address": "IP adresi: bu IP'yi A veya AAAA yanıtında kullanın",
|
||||
"rewrite_domain_name": "Alan adı: bir CNAME kaydı ekleyin",
|
||||
"rewrite_A": "<0>A</0>: özel değer, üst sunucudan gelen <0>A</0> kayıtlarını tut",
|
||||
"rewrite_AAAA": "<0>AAA</0>: özel değer, üst sunucudan gelen <0>AAA</0> kayıtlarını tut",
|
||||
"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",
|
||||
"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. Bu, tüm DNS sunucularından yanıt beklememiz gerektiğinden DNS sorgularını yavaşlatacak ancak genel bağlantıyı iyileştirecektir.",
|
||||
"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.",
|
||||
"autofix_warning_list": "Bu görevleri gerçekleştirecek: <0>Sistem DNSStubListener'ı devre dışı bırakın</0> <0>DNS sunucusu adresini 127.0.0.1 olarak ayarlayın</0> <0>/etc/resolv.conf'un sembolik bağlantı hedefini /run/systemd/resolve/resolv.conf ile değiştirin<0> <0>DNSStubListener'ı durdurun (systemd çözümlenmiş hizmeti yeniden yükleyin)</0>",
|
||||
"autofix_warning_result": "Sonuç olarak, sisteminizden gelen tüm DNS istekleri varsayılan olarak AdGuard Home tarafından işlenecektir.",
|
||||
"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",
|
||||
"tags_desc": "Müşteriye karşılık gelen etiketleri seçebilirsiniz. Etiketler filtreleme kurallarına dahil edilebilir ve bunları daha doğru uygulamanıza olanak tanır. <0>Daha fazla bilgi edinin</0>",
|
||||
"form_select_tags": "İstemci etiketlerini seçin",
|
||||
"check_title": "Filtrelemeyi denetleyin",
|
||||
"check_desc": "Ana bilgisayar adının filtrelenip filtrelenmediğini kontrol edin",
|
||||
"check": "Kontrol",
|
||||
"form_enter_host": "Bir ana bilgisayar adı girin",
|
||||
"check": "Denetle",
|
||||
"form_enter_host": "Ana bilgisayar adı girin",
|
||||
"filtered_custom_rules": "Özel filtreleme kurallarına göre filtrelendi",
|
||||
"host_whitelisted": "Ana makine beyaz listeye alındı",
|
||||
"choose_from_list": "Listeden seç",
|
||||
"add_custom_list": "Özel bir liste ekle",
|
||||
"host_whitelisted": "Ana bilgisayar beyaz listeye eklendi",
|
||||
"check_ip": "IP adresleri: {{ip}}",
|
||||
"check_cname": "CNAME: {{cname}}",
|
||||
"check_reason": "Sebep: {{reason}}",
|
||||
"check_rule": "Kural: {{rule}}",
|
||||
"check_service": "Hizmet adı: {{service}}",
|
||||
"service_name": "Servis adı",
|
||||
"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ı",
|
||||
"client_unblocked": "\"{{ip}}\" istemcinin 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",
|
||||
@@ -500,11 +555,43 @@
|
||||
"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)",
|
||||
"validated_with_dnssec": "DNSSEC ile doğrulandı",
|
||||
"all_queries": "Tüm sorgular",
|
||||
"show_blocked_responses": "Engellendi",
|
||||
"show_whitelisted_responses": "Beyazlisteye eklendi",
|
||||
"show_whitelisted_responses": "Beyaz listeye eklendi",
|
||||
"show_processed_responses": "İşlendi",
|
||||
"blocked_safebrowsing": "Güvenli gezinti tarafından engellendi",
|
||||
"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."
|
||||
"filtered": "Filtrelenmiş",
|
||||
"rewritten": "Yeniden yazılan",
|
||||
"safe_search": "Güvenli arama",
|
||||
"blocklist": "Engelleme listesi",
|
||||
"milliseconds_abbreviation": "ms",
|
||||
"cache_size": "Önbellek boyutu",
|
||||
"cache_size_desc": "DNS önbelleği boyutu (byte cinsinden)",
|
||||
"cache_ttl_min_override": "Minimum TTL'yi değiştir",
|
||||
"cache_ttl_max_override": "Maksimum TTL'yi değiştir",
|
||||
"enter_cache_size": "Önbellek boyutunu girin (byte)",
|
||||
"enter_cache_ttl_min_override": "Minimum TTL değerini girin (saniye)",
|
||||
"enter_cache_ttl_max_override": "Maksimum TTL değerini girin (saniye)",
|
||||
"cache_ttl_min_override_desc": "DNS yanıtlarını önbelleğe alırken üst sunucusundan alınan kullanım süresi değerini (saniye) uzatın",
|
||||
"cache_ttl_max_override_desc": "DNS önbelleğindeki girişler için maksimum kullanım süresi değerini (saniye) ayarlayın",
|
||||
"ttl_cache_validation": "Minimum önbellek TTL değeri, maksimum değerden küçük veya bu değere eşit olmalıdır",
|
||||
"filter_category_general": "Genel",
|
||||
"filter_category_security": "Güvenlik",
|
||||
"filter_category_regional": "Bölgesel",
|
||||
"filter_category_other": "Diğer",
|
||||
"filter_category_general_desc": "Çoğu cihazda izlemeyi ve reklamları engelleyen listeler",
|
||||
"filter_category_security_desc": "Kötü amaçlı yazılım, kimlik avı veya dolandırıcılık alanlarını engelleme konusunda özelleştirilmiş listeler",
|
||||
"filter_category_regional_desc": "Bölgesel reklamlara ve izleme sunucularına odaklanan listeler",
|
||||
"filter_category_other_desc": "Diğer engelleme listeleri",
|
||||
"setup_config_to_enable_dhcp_server": "DHCP sunucusunu etkinleştirmek için kurulum yapılandırması",
|
||||
"original_response": "Esas yanıt",
|
||||
"click_to_view_queries": "Sorguları görmek için tıklayın",
|
||||
"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.",
|
||||
"adg_will_drop_dns_queries": "AdGuard Home, bu istemciden gelen tüm DNS sorgularını iptal eder.",
|
||||
"client_not_in_allowed_clients": "İstemciye \"İzin verilen istemciler\" listesinde olmadığı için izin verilmiyor.",
|
||||
"experimental": "Deneysel"
|
||||
}
|
||||
@@ -1,14 +1,19 @@
|
||||
{
|
||||
"client_settings": "Cài đặt máy khách",
|
||||
"example_upstream_reserved": "bạn có thể chỉ định DNS ngược tuyến <0>cho một tên miền cụ thể(hoặc nhiều)</0>",
|
||||
"example_upstream_comment": "Bạn có thể thêm chú thích cụ thể",
|
||||
"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",
|
||||
"load_balancing": "Cân bằng tải",
|
||||
"load_balancing_desc": "Chỉ truy xuất một máy chủ trong cùng thời điểm. AdGuard Home sẽ sử dụng thuật toán trọng số ngẫu nhiên để chọn một máy chủ nhanh nhất và sử dụng máy chủ đó thường xuyên hơn.",
|
||||
"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",
|
||||
"unavailable_dhcp": "DHCP không khả dụng",
|
||||
"unavailable_dhcp_desc": "AdGuard Home không thể chạy máy chủ DHCP trên hệ điều hành của bạn",
|
||||
"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",
|
||||
@@ -19,14 +24,18 @@
|
||||
"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",
|
||||
"dhcp_ipv4_settings": "Cài đặt DHCP IPv4",
|
||||
"dhcp_ipv6_settings": "Cài đặt DHCP IPv6",
|
||||
"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_server_name": "Tên máy chủ 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",
|
||||
"range_end_error": "Phải lớn hơn khoảng bắt đầu",
|
||||
"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",
|
||||
@@ -51,18 +60,26 @@
|
||||
"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",
|
||||
"city": "Thành phố",
|
||||
"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",
|
||||
"response_details": "Chi tiết về phản hồi",
|
||||
"request_details": "Chi tiết về yêu cầu",
|
||||
"client_details": "Thông tin máy khách",
|
||||
"details": "Chi tiết",
|
||||
"back": "Quay lại",
|
||||
"dashboard": "Tổng quan",
|
||||
"settings": "Cài đặt",
|
||||
"filters": "Bộ lọc",
|
||||
"filter": "Bộ lọc",
|
||||
"query_log": "Lịch sử truy vấn",
|
||||
"compact": "Thu gọn",
|
||||
"nothing_found": "Không tìm thấy",
|
||||
"faq": "Hỏi đáp",
|
||||
"version": "phiên bản",
|
||||
"address": "địa chỉ",
|
||||
"protocol": "Giao thức",
|
||||
"on": "Đang bật",
|
||||
"off": "Đang tắt",
|
||||
"copyright": "Bản quyền",
|
||||
@@ -85,8 +102,8 @@
|
||||
"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",
|
||||
"top_clients": "Người dùng hàng đầu",
|
||||
"no_clients_found": "Không có người dùng",
|
||||
"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",
|
||||
@@ -94,12 +111,12 @@
|
||||
"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",
|
||||
"enforced_save_search": "Bắt buộc 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>.",
|
||||
"filters_block_toggle_hint": "Bạn có thể thiết lập quy tắc chặn tại cài đặt <a>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",
|
||||
@@ -109,11 +126,18 @@
|
||||
"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",
|
||||
"dns_blocklists": "Danh sách chặn",
|
||||
"dns_allowlists": "Danh sách cho phép",
|
||||
"dns_blocklists_desc": "AdGuard Home sẽ chặn tên miền nằm trong danh sách bị chặn.",
|
||||
"dns_allowlists_desc": "Tên miền nằm trong danh sách cho phép sẽ không bị chặn cho dù nó có nằm trong bất kì danh sách bị chặn nào.",
|
||||
"custom_filtering_rules": "Bộ lọc tùy chỉnh",
|
||||
"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.",
|
||||
"upstream_dns_help": "Nhập địa chỉ máy chủ một trên mỗi dòng. <a>Tìm hiểu thêm</a> về cách định cấu hình máy chủ DNS ngược dòng.",
|
||||
"upstream_dns_configured_in_file": "Cấu hình tại {{path}}",
|
||||
"test_upstream_btn": "Kiểm tra",
|
||||
"upstreams": "Nguồn",
|
||||
"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",
|
||||
@@ -125,16 +149,33 @@
|
||||
"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",
|
||||
"list_url_table_header": "URL bộ lọc",
|
||||
"rules_count_table_header": "Số quy tắc",
|
||||
"last_time_updated_table_header": "Cập nhật cuối",
|
||||
"last_time_updated_table_header": "Cập nhật lần cuối",
|
||||
"actions_table_header": "Thao tác",
|
||||
"request_table_header": "Yêu cầu",
|
||||
"edit_table_action": "Chỉnh sửa",
|
||||
"delete_table_action": "Xoá",
|
||||
"elapsed": "Đã tốn",
|
||||
"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",
|
||||
"no_blocklist_added": "Chưa có danh sách chặn được thêm vào",
|
||||
"no_whitelist_added": "Chưa có danh sách cho phép được thêm vào",
|
||||
"add_blocklist": "Thêm danh sách",
|
||||
"add_allowlist": "Thêm danh sách",
|
||||
"cancel_btn": "Huỷ",
|
||||
"enter_name_hint": "Nhập tên",
|
||||
"enter_url_or_path_hint": "Nhập địa chỉ hoặc đường dẫn tới danh sách",
|
||||
"check_updates_btn": "Kiểm tra cập nhật",
|
||||
"new_blocklist": "Danh sách chặn mới",
|
||||
"new_allowlist": "Danh sách cho phép mới",
|
||||
"edit_blocklist": "Chỉnh sửa danh sách chặn",
|
||||
"edit_allowlist": "Chỉnh sửa danh sách cho phép",
|
||||
"choose_blocklist": "Chọn danh sách chặn",
|
||||
"choose_allowlist": "Chọn danh sách cho phép",
|
||||
"enter_valid_blocklist": "Điền địa chỉ URL của danh sách chặn.",
|
||||
"enter_valid_allowlist": "Điề địa chỉ URL của danh sách cho phép.",
|
||||
"form_error_url_format": "ĐỊnh dạng URL không hợp lệ",
|
||||
"form_error_url_or_path_format": "Định dạng URL hoặc đường dẫn tới danh sách không hợp lệ",
|
||||
"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ụ",
|
||||
@@ -148,36 +189,45 @@
|
||||
"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_doq": "được mã hoá <0>DNS-over-QUIC</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)",
|
||||
"all_lists_up_to_date_toast": "Tất cả danh sách đã ở phiên bản mới nhất",
|
||||
"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",
|
||||
"disallow_this_client": "Không cho phép client này",
|
||||
"allow_this_client": "Cho phép ứng dụng khách này",
|
||||
"block_for_this_client_only": "Chỉ chặn ứng dụng khách này",
|
||||
"unblock_for_this_client_only": "Chỉ hủy chặn ứng dụng khách này",
|
||||
"time_table_header": "Thời gian",
|
||||
"date": "Ngày",
|
||||
"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",
|
||||
"response_code": "Mã phản hồi",
|
||||
"client_table_header": "Người dùng",
|
||||
"empty_response_status": "Trố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",
|
||||
"previous_btn": "Trước",
|
||||
"next_btn": "Trang sau",
|
||||
"loading_table_status": "Đang tải...",
|
||||
"page_table_footer_text": "Trang",
|
||||
"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",
|
||||
"updated_custom_filtering_toast": "Đã cập nhật bộ lọc tùy chỉnh",
|
||||
"rule_removed_from_custom_filtering_toast": "Quy tắc đã được xoá khỏi quy tắc lọc tuỳ chỉnh {{rule}}",
|
||||
"rule_added_to_custom_filtering_toast": "Quy tắc đã được thêm vào quy tắc lọc tuỳ chỉnh: {{rule}}",
|
||||
"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_updated": "Cập nhật thành công nhật kí truy xuất",
|
||||
"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ý",
|
||||
@@ -188,24 +238,47 @@
|
||||
"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",
|
||||
"dns_cache_config": "Cấu hình cache DNS",
|
||||
"dns_cache_config_desc": "Bạn có thể cấu hình cache cho DNS tại đây",
|
||||
"blocking_mode": "Chế độ chặn",
|
||||
"default": "Mặc định",
|
||||
"nxdomain": "NXDOMAIN",
|
||||
"refused": "REFUSED",
|
||||
"null_ip": "Địa chỉ IP rỗng",
|
||||
"custom_ip": "IP tuỳ chỉnh",
|
||||
"blocking_ipv4": "Chặn IPv4",
|
||||
"blocking_ipv6": "Chặn IPv6",
|
||||
"dnscrypt": "DNSCrypt",
|
||||
"dns_over_https": "DNS-over-HTTPS",
|
||||
"dns_over_tls": "DNS-over-TLS",
|
||||
"dns_over_quic": "DNS-over-QUIC",
|
||||
"client_id": "ID khách hàng",
|
||||
"client_id_placeholder": "Nhập ID khách hàng",
|
||||
"client_id_desc": "Các khách hàng khác nhau có thể được xác định bằng một ID khách hàng đặc biệt. <a>Tại đây</a> bạn có thể tìm hiểu thêm về cách xác định khách hàng.",
|
||||
"download_mobileconfig_doh": "Tải xuống .mobileconfig cho DNS-over-HTTPS",
|
||||
"download_mobileconfig_dot": "Tải xuống .mobileconfig cho DNS-over-TLS",
|
||||
"download_mobileconfig": "Tải xuống tệp cấu hình",
|
||||
"plain_dns": "DNS thuần",
|
||||
"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_enable": "Bật mạng con EDNS Client",
|
||||
"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_ipv6_desc": "Địa chỉ IP được trả lại cho một yêu cầu AAA 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",
|
||||
"blocking_mode_refused": "REFUSED: Trả lời bằng mã REFUSED",
|
||||
"blocking_mode_nxdomain": "NXDOMAIN: Phản hổi với mã NXDOMAIN",
|
||||
"blocking_mode_null_ip": "Null IP: Trả lời bằng không địa chỉ IP (0.0.0.0 cho A; :: cho AAAA)",
|
||||
"blocking_mode_custom_ip": "IP tùy chỉnh: Phản hồi với địa chỉ IP đã được tiết lập",
|
||||
"upstream_dns_client_desc": "Nếu để trống trường này, AdGuardHome sẽ sử dụng nhũng máy chủ được cấu hình ở <0>Cấu hình DNS</0>.",
|
||||
"tracker_source": "Nguồn theo dõi",
|
||||
"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}}",
|
||||
"known_tracker": "Theo dõi đã biết",
|
||||
"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ị",
|
||||
@@ -234,6 +307,7 @@
|
||||
"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_router_list_4": "Bạn không thể đặt máy chủ DNS tùy chỉnh trên một số loại bộ định tuyến. Trong trường hợp này, có thể hữu ích nếu bạn thiết lập AdGuard Home làm <0> máy chủ DHCP </0>. Nếu không, bạn nên tìm kiếm hướng dẫn về cách tùy chỉnh máy chủ DNS cho kiểu bộ định tuyến cụ thể của mình.",
|
||||
"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ó.",
|
||||
@@ -255,21 +329,22 @@
|
||||
"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",
|
||||
"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_doq": "Cổng DNS-over-QUIC",
|
||||
"encryption_doq_desc": "Nếu cổng này được định cấu hình, AdGuard Home sẽ chạy máy chủ DNS qua QUIC trên cổng này. Đó là thử nghiệm và có thể không đáng tin cậy. Ngoài ra, không có quá nhiều khách hàng hỗ trợ nó vào lúc này.",
|
||||
"encryption_certificates": "Chứng chỉ",
|
||||
"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",
|
||||
@@ -278,8 +353,8 @@
|
||||
"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_chain_valid": "Chứng chỉ hợp lệ",
|
||||
"encryption_chain_invalid": "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ủ đề",
|
||||
@@ -302,7 +377,7 @@
|
||||
"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.",
|
||||
"update_failed": "Tự động cập nhật thất bại. Vui lòng <a>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",
|
||||
@@ -316,18 +391,19 @@
|
||||
"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",
|
||||
"name": "Tên",
|
||||
"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?",
|
||||
"list_confirm_delete": "Bạn có muốn xóa bộ lọc này?",
|
||||
"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",
|
||||
@@ -345,7 +421,8 @@
|
||||
"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_3": "<0>Đây là danh sách phần mềm bạn có thể sử dụng.</0>",
|
||||
"setup_dns_privacy_4": "Trên thiết bị chạy iOS 14 hoặc macOS Big Sur bạn có thể tải tệp '.mobileconfig' đặc biệt có chứa máy chủ <highlight>DNS-over-HTTPS</highlight> hoặc <highlight>DNS-over-TLS</highlight> trong thiết lập DNS.",
|
||||
"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.",
|
||||
@@ -357,6 +434,7 @@
|
||||
"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_privacy_ioc_mac": "Cấu hình iOS và macOS",
|
||||
"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",
|
||||
@@ -365,6 +443,7 @@
|
||||
"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",
|
||||
"rewrite_hosts_applied": "Viết lại bởi quy tắc tệp máy chủ",
|
||||
"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",
|
||||
@@ -393,7 +472,9 @@
|
||||
"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",
|
||||
"filter_added_successfully": "Thêm bộ lọc thành công",
|
||||
"filter_removed_successfully": "Xóa bộ lọc thành công",
|
||||
"filter_updated": "Cập nhật bộ lọc 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",
|
||||
@@ -418,31 +499,96 @@
|
||||
"location": "Vị trí",
|
||||
"orgname": "Tên tổ chức",
|
||||
"netname": "Tên mạng",
|
||||
"network": "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",
|
||||
"blocked_by_cname_or_ip": "Đã bị chặn bởi CNAME hoặc IP",
|
||||
"try_again": "Hãy thử lại",
|
||||
"domain_desc": "Nhập tên miền hoặc ký tự đại diện mà bạn muốn được viết lại.",
|
||||
"example_rewrite_domain": "chỉ viết lại phản hồi cho tên miền này.",
|
||||
"example_rewrite_wildcard": "viết lại câu trả lời cho tất cả các tên miền phụ <0> example.org </0>.",
|
||||
"rewrite_ip_address": "Địa chỉ IP: sử dụng IP này trong phản hồi A hoặc AAAA",
|
||||
"rewrite_domain_name": "Tên miền: thêm bản ghi CNAME",
|
||||
"rewrite_A": "<0>A</0>: giá trị đặc biệt, giữ bản ghi <0>A</0> từ nguồn",
|
||||
"rewrite_AAAA": "<0>A</0>: giá trị đặc biệt, giữ bản ghi <0>A</0> từ nguồn",
|
||||
"disable_ipv6": "Tắt IPv6",
|
||||
"disable_ipv6_desc": "Nếu tính năng này được bật, tất cả các truy vấn DNS cho địa chỉ IPv6 (loại AAAA) sẽ bị loại bỏ.",
|
||||
"fastest_addr": "Địa chỉ IP nhanh nhất",
|
||||
"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_list": "Nó sẽ thực hiện các tác vụ sau: <0> Hủy kích hoạt hệ thống DNSStubListener </0> <0> Đặt địa chỉ máy chủ DNS thành 127.0.0.1 </0> <0> Thay thế mục tiêu liên kết tượng trưng của /etc/resolv.conf bằng / run / systemd /resolve/resolv.conf </0> <0> Dừng DNSStubListener (tải lại dịch vụ do hệ thống phân giải) </0>",
|
||||
"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_desc": "Kiểm tra xem tên miền có tồn tại trong các bộ lọc không",
|
||||
"check": "Kiểm tra",
|
||||
"form_enter_host": "Nhập tên máy chủ",
|
||||
"filtered_custom_rules": "Được lọc bởi các quy tắc lọc tùy chỉnh",
|
||||
"choose_from_list": "Chọn từ danh sách",
|
||||
"add_custom_list": "Thêm bộ lọc tùy chọn",
|
||||
"host_whitelisted": "Trang đã được thêm vào danh sách được cho phép",
|
||||
"check_ip": "Địa chỉ IP: {{ip}}",
|
||||
"check_rule": "Quy tắc: {{rule}}",
|
||||
"check_cname": "CNAME: {{cname}}",
|
||||
"check_reason": "Lý do: {{reason}}",
|
||||
"check_service": "Tên dịch vụ: {{service}}",
|
||||
"service_name": "Tên dịch vụ",
|
||||
"check_not_found": "Không tìm thấy trong danh sách bộ lọc của bạn",
|
||||
"client_confirm_block": "Bạn có muốn chặn người dùng {{ip}}?",
|
||||
"client_confirm_unblock": "Bạn có muốn bỏ chặn người dùng {{ip}}?",
|
||||
"client_blocked": "Đã chặn người dùng {{ip}}",
|
||||
"client_unblocked": "Đã bỏ chặn người dùng {{ip}}",
|
||||
"static_ip": "Địa chỉ IP tĩnh",
|
||||
"static_ip_desc": "AdGuard Home là một máy chủ nên nó cần một địa chỉ IP tĩnh để hoạt động bình thường. Nếu không, tại một số thời điểm, bộ định tuyến của bạn có thể gán một địa chỉ IP khác cho thiết bị này.",
|
||||
"set_static_ip": "Thiết lập địa chỉ IP tĩnh",
|
||||
"install_static_ok": "Địa chỉ IP tĩnh đã được thiết lập",
|
||||
"install_static_error": "AdGuard Home không thể cấu hình tự động cho giao diện mạng này. Vui lòng tìm hướng dẫn về cách thực hiện việc này theo cách thủ công.",
|
||||
"install_static_configure": "Chúng tôi đã phát hiện thấy rằng một địa chỉ IP động được sử dụng - <0> {{ip}} </0>. Bạn có muốn sử dụng nó làm địa chỉ tĩnh của mình không?",
|
||||
"confirm_static_ip": "AdGuard Home sẽ lấy {{ip}} làm địa chỉ IP tĩnh. Bạn có muốn tiếp tục?",
|
||||
"list_updated": "Đã cập nhật {{count}} bộ lọc",
|
||||
"list_updated_plural": "Đã cập nhật {{count}} bộ lọc",
|
||||
"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)",
|
||||
"validated_with_dnssec": "Xác thực bỏi DNSSEC",
|
||||
"all_queries": "Tất cả truy vấn",
|
||||
"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_safebrowsing": "Chặn bởi Safebrowsing",
|
||||
"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"
|
||||
"filtered": "Đã lọc",
|
||||
"rewritten": "Đã viết lại",
|
||||
"safe_search": "Tìm kiếm an toàn",
|
||||
"blocklist": "Danh sách chặn",
|
||||
"milliseconds_abbreviation": "ms",
|
||||
"cache_size": "Kích thước cache",
|
||||
"cache_size_desc": "Kích thước cache DNS (bytes)",
|
||||
"cache_ttl_min_override": "Ghi đè TTL tối thiểu",
|
||||
"cache_ttl_max_override": "Ghi đè TTL tối đa",
|
||||
"enter_cache_size": "Nhập kích thước bộ nhớ cache (byte)",
|
||||
"enter_cache_ttl_min_override": "Nhập TTL tối thiểu (giây)",
|
||||
"enter_cache_ttl_max_override": "Nhập TTL tối đa (giây)",
|
||||
"cache_ttl_min_override_desc": "Mở rộng giá trị thời gian tồn tại ngắn (giây) nhận được từ máy chủ ngược dòng khi phản hồi DNS vào bộ nhớ đệm",
|
||||
"cache_ttl_max_override_desc": "Đặt giá trị thời gian tồn tại tối đa (giây) cho các mục nhập trong bộ nhớ cache DNS",
|
||||
"ttl_cache_validation": "Giá trị TTL trong bộ nhớ cache tối thiểu phải nhỏ hơn hoặc bằng giá trị lớn nhất",
|
||||
"filter_category_general": "Chung",
|
||||
"filter_category_security": "Bảo mật",
|
||||
"filter_category_regional": "Khu vực",
|
||||
"filter_category_other": "Khác",
|
||||
"filter_category_general_desc": "Bộ lọc chặn quảng cáo và theo dõi cho hầu hết các thiết bị",
|
||||
"filter_category_security_desc": "Bộ lọc chuyên biệt chặn tên miền chứa mã độc và lừa đảo",
|
||||
"filter_category_regional_desc": "Bộ lọc tập trung vào từng khu vực",
|
||||
"filter_category_other_desc": "Bộ lọc chặn khác",
|
||||
"setup_config_to_enable_dhcp_server": "Thiết lập cấu hình để bật máy chủ DHCP",
|
||||
"original_response": "Phản hồi gốc",
|
||||
"click_to_view_queries": "Nhấp để xem truy xuất",
|
||||
"port_53_faq_link": "Cổng 53 thường được sử dụng \"DNSStubListener\" hoặc \"systemd-resolved\". Vui lòng đọc <0>hướng dẫn</0> để giải quyết vấn đề này.",
|
||||
"adg_will_drop_dns_queries": "AdGuard Home sẽ loại bỏ tất cả các truy vấn DNS từ ứng dụng khách này.",
|
||||
"client_not_in_allowed_clients": "Ứng dụng khách không được phép vì nó không có trong danh sách \"Ứng dụng khách được phép\".",
|
||||
"experimental": "Thử nghiệm"
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"client_settings": "客户端设置",
|
||||
"example_upstream_reserved": "您可以将上游DNS 服务器<0>指定为特定域名</0>",
|
||||
"example_upstream_reserved": "您可以<0>为特定域名</0>指定上游 DNS 服务器",
|
||||
"example_upstream_comment": "您可以指定注解",
|
||||
"upstream_parallel": "通过同时查询所有上游服务器,使用并行请求以加速解析",
|
||||
"parallel_requests": "并行请求",
|
||||
"load_balancing": "负载均衡",
|
||||
@@ -11,6 +12,8 @@
|
||||
"save_config": "保存配置",
|
||||
"enabled_dhcp": "DHCP 服务器已启用",
|
||||
"disabled_dhcp": "DHCP 服务器已禁用",
|
||||
"unavailable_dhcp": "DHCP 无法使用",
|
||||
"unavailable_dhcp_desc": "AdGuard Home 无法在您的操作系统上运行 DHCP 服务器",
|
||||
"dhcp_title": "DHCP 服务器(实验性)",
|
||||
"dhcp_description": "如果你的路由器没有提供 DHCP (动态主机配置协议)设置,你可以使用 AdGuard 内置的 DHCP 服务器。",
|
||||
"dhcp_enable": "启用 DHCP 服务器",
|
||||
@@ -21,14 +24,18 @@
|
||||
"dhcp_static_leases": "DHCP 静态租约",
|
||||
"dhcp_leases_not_found": "未找到 DHCP 租约",
|
||||
"dhcp_config_saved": "已保存 DHCP 服务器配置",
|
||||
"dhcp_ipv4_settings": "DHCP IPv4设置",
|
||||
"dhcp_ipv6_settings": "DHCP IPv6设置",
|
||||
"form_error_required": "必填字段",
|
||||
"form_error_ip4_format": "无效的 IPv4 格式",
|
||||
"form_error_ip6_format": "无效的 IPv6 格式",
|
||||
"form_error_ip_format": "无效的 IPv4 格式",
|
||||
"form_error_mac_format": "无效的 MAC 格式",
|
||||
"form_error_client_id_format": "无效的客户端 ID 格式",
|
||||
"form_error_server_name": "无效的服务器名",
|
||||
"form_error_positive": "必须大于 0",
|
||||
"form_error_negative": "必须大于等于 0",
|
||||
"range_end_error": "必须大于范围起始值",
|
||||
"dhcp_form_gateway_input": "网关 IP",
|
||||
"dhcp_form_subnet_input": "子网掩码",
|
||||
"dhcp_form_range_title": "IP 地址范围",
|
||||
@@ -83,7 +90,7 @@
|
||||
"enabled_protection": "保护已启用",
|
||||
"disable_protection": "禁用保护",
|
||||
"disabled_protection": "保护已禁用",
|
||||
"refresh_statics": "刷新状态",
|
||||
"refresh_statics": "刷新统计数据",
|
||||
"dns_query": "DNS查询",
|
||||
"blocked_by": "<0>已被过滤器拦截</0>",
|
||||
"stats_malware_phishing": "被拦截的恶意/钓鱼网站",
|
||||
@@ -109,7 +116,7 @@
|
||||
"average_processing_time": "平均处理时间",
|
||||
"average_processing_time_hint": "处理 DNS 请求的平均时间(毫秒)",
|
||||
"block_domain_use_filters_and_hosts": "使用过滤器和 Hosts 文件以拦截指定域名",
|
||||
"filters_block_toggle_hint": "你可以在 <a href='#filters'>过滤器</a> 设置中添加过滤规则。",
|
||||
"filters_block_toggle_hint": "你可以在 <a>过滤器</a> 设置中添加过滤规则。",
|
||||
"use_adguard_browsing_sec": "使用 AdGuard【浏览安全】网页服务",
|
||||
"use_adguard_browsing_sec_hint": "AdGuard Home 将检查域名是否被浏览安全服务列入黑名单。它将使用隐私性强的检索 API 来执行检查,只有域名的 SHA256 的短前缀会被发送到服务器。",
|
||||
"use_adguard_parental": "使用 AdGuard 【家长控制】服务",
|
||||
@@ -127,7 +134,8 @@
|
||||
"encryption_settings": "加密设置",
|
||||
"dhcp_settings": "DHCP 设置",
|
||||
"upstream_dns": "上游 DNS 服务器",
|
||||
"upstream_dns_hint": "如果此处留空,AdGuard Home 将会使用 <a href='https://www.quad9.net/' target='_blank'>Quad9</a> 作为上游。",
|
||||
"upstream_dns_help": "每行输入一个服务器地址。<a>了解更多</a>关于配置上游DNS服务器的内容",
|
||||
"upstream_dns_configured_in_file": "配置路径{{path}}",
|
||||
"test_upstream_btn": "测试上游 DNS",
|
||||
"upstreams": "上游服务器",
|
||||
"apply_btn": "应用",
|
||||
@@ -181,6 +189,7 @@
|
||||
"example_upstream_regular": "常规 DNS(基于 UDP)",
|
||||
"example_upstream_dot": "加密 <0>DNS-over-TLS</0>",
|
||||
"example_upstream_doh": "加密 <0>DNS-over-HTTPS</0>",
|
||||
"example_upstream_doq": "加密的<0>DNS-over-QUIC</0>",
|
||||
"example_upstream_sdns": "你可以使用 <1>DNSCrypt</1> 的 <0>DNS Stamps</0> 或者 <2>DNS-over-HTTPS</2> 解析器",
|
||||
"example_upstream_tcp": "常规 DNS(基于 TCP )",
|
||||
"all_lists_up_to_date_toast": "所有列表都是最新的",
|
||||
@@ -189,8 +198,12 @@
|
||||
"dns_test_not_ok_toast": "服务器 \"{{key}}\":无法使用,请检查你输入的是否正确",
|
||||
"unblock": "放行",
|
||||
"block": "拦截",
|
||||
"disallow_this_client": "不允许这个客户端",
|
||||
"allow_this_client": "允许这个客户端",
|
||||
"block_for_this_client_only": "仅对此客户端拦截",
|
||||
"unblock_for_this_client_only": "仅解除对此客户端的拦截",
|
||||
"time_table_header": "时间",
|
||||
"date": "日起",
|
||||
"date": "日期",
|
||||
"domain_name_table_header": "域名",
|
||||
"domain_or_client": "域名或客户端",
|
||||
"type_table_header": "类型",
|
||||
@@ -208,8 +221,8 @@
|
||||
"page_table_footer_text": "页",
|
||||
"rows_table_footer_text": "行",
|
||||
"updated_custom_filtering_toast": "自定义过滤规则已更新",
|
||||
"rule_removed_from_custom_filtering_toast": "规则已从自定义过滤规则列表中移除",
|
||||
"rule_added_to_custom_filtering_toast": "规则已添加到自定义过滤规则列表中",
|
||||
"rule_removed_from_custom_filtering_toast": "规则已从自定义过滤规则列表中移除 {{rule}}",
|
||||
"rule_added_to_custom_filtering_toast": "规则已添加到自定义过滤规则列表中 {{rule}}",
|
||||
"query_log_response_status": "状态: {{value}}",
|
||||
"query_log_filtered": "被 {{filter}} 过滤",
|
||||
"query_log_confirm_clear": "你确定想要清除全部查询日志吗?",
|
||||
@@ -230,21 +243,31 @@
|
||||
"blocking_mode": "拦截模式",
|
||||
"default": "默认",
|
||||
"nxdomain": "无效域名",
|
||||
"refused": "REFUSED",
|
||||
"null_ip": "无效 IP",
|
||||
"custom_ip": "自定义 IP",
|
||||
"blocking_ipv4": "拦截 IPv4",
|
||||
"blocking_ipv6": "拦截 IPv6",
|
||||
"dnscrypt": "DNSCrypt",
|
||||
"dns_over_https": "DNS-over-HTTPS",
|
||||
"dns_over_tls": "DNS-over-TLS",
|
||||
"dns_over_quic": "DNS-over-QUIC",
|
||||
"client_id": "客户端 ID",
|
||||
"client_id_placeholder": "输入客户端 ID",
|
||||
"client_id_desc": "可根据一个特殊的客户端 ID 识别不同客户端。在 <a>这里</a>你可以了解到更多关于如何识别客户端的信息。",
|
||||
"download_mobileconfig_doh": "下载适用于 DNS-over-HTTPS 的 .mobileconfig",
|
||||
"download_mobileconfig_dot": "下载适用于 DNS-over-TLS 的 .mobileconfig",
|
||||
"download_mobileconfig": "下载配置文件",
|
||||
"plain_dns": "无加密DNS",
|
||||
"form_enter_rate_limit": "输入限制速率",
|
||||
"rate_limit": "速度限制",
|
||||
"edns_enable": "使用客户端的子网地址(EDNS)",
|
||||
"edns_cs_desc": "启用后AdGuard Home将会向DNS服务器发送客户端的子网地址进行查询",
|
||||
"rate_limit_desc": "每个客户端每秒钟查询次数的限制 (0:不限制)",
|
||||
"rate_limit_desc": "每个客户端每秒钟查询次数的限制 (设置为 0 意味着不限制)",
|
||||
"blocking_ipv4_desc": "拦截 A 记录请求返回的 IP 地址",
|
||||
"blocking_ipv6_desc": "拦截 AAAA 记录请求返回的 IP 地址",
|
||||
"blocking_mode_default": "默认:被Adblock规则拦截时以NXDOMAIN码响应;被/etc/hosts规则拦截时返回规则中指定IP",
|
||||
"blocking_mode_default": "默认:被 Adblock 规则拦截时反应为零 IP 地址(A记录:0.0.0.0;AAAA记录:::);被/etc/hosts 规则拦截时反应为规则中指定 IP 地址",
|
||||
"blocking_mode_refused": "REFUSED:以 REFUSED 码响应请求",
|
||||
"blocking_mode_nxdomain": "NXDOMAIN:以NXDOMAIN码响应",
|
||||
"blocking_mode_null_ip": "空IP:以零IP地址响应(A记录 0.0.0.0;AAAA记录 ::)",
|
||||
"blocking_mode_custom_ip": "自定IP:以手动设置的IP地址响应",
|
||||
@@ -300,7 +323,7 @@
|
||||
"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_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": "点击当前已连接网络的名称。",
|
||||
@@ -314,13 +337,15 @@
|
||||
"encryption_config_saved": "加密配置已保存",
|
||||
"encryption_server": "服务器名称",
|
||||
"encryption_server_enter": "输入您的域名",
|
||||
"encryption_server_desc": "若要使用 HTTPS ,您需要输入与 SSL 证书相匹配的服务器名称。",
|
||||
"encryption_server_desc": "为了使用 HTTPS,请您输入与 SSL 证书或通配证书相匹配的服务器名称。如此字段未设置,服务器将要为所有域名接受 TLS 连接。",
|
||||
"encryption_redirect": "HTTPS 自动重定向",
|
||||
"encryption_redirect_desc": "如果勾选此选项,AdGuard Home 将自动将您从 HTTP 重定向到 HTTPS 地址。",
|
||||
"encryption_https": "HTTPS 端口",
|
||||
"encryption_https_desc": "如果配置了 HTTPS 端口,AdGuard Home 管理界面将可以通过 HTTPS 访问,它还将在在 '/dns-query' 位置提供 DNS-over-HTTPS 。",
|
||||
"encryption_dot": "DNS-over-TLS 端口",
|
||||
"encryption_dot_desc": "如果配置了此端口,AdGuard Home 将在此端口上运行一个 DNS-over-TLS 服务器。",
|
||||
"encryption_doq": "DNS-over-QUIC 端口",
|
||||
"encryption_doq_desc": "如果配置了此端口,AdGuard Home将在此端口上运行一个DNS-over-QUIC服务器。这是实验性的,可能不可靠。而且,支持此特性的客户端并不多。",
|
||||
"encryption_certificates": "证书",
|
||||
"encryption_certificates_desc": "为了使用加密,您需要为域提供有效的 SSL 证书链。您可以在 <0>{{link}}</0> 上获得免费证书,也可以从受信任的证书颁发机构购买证书。",
|
||||
"encryption_certificates_input": "将您以 PEM 格式编码的证书复制粘贴到此处。",
|
||||
@@ -354,7 +379,7 @@
|
||||
"fix": "修复",
|
||||
"dns_providers": "此为可从中选择的<0>已知 DNS 提供商列表</0>。",
|
||||
"update_now": "立即更新",
|
||||
"update_failed": "自动更新失败。请<a href='https://github.com/AdguardTeam/AdGuardHome/wiki/Getting-Started#update'>跟随这些步骤</a>以手动更新。",
|
||||
"update_failed": "自动更新失败。请<a>跟随这些步骤</a>以手动更新。",
|
||||
"processing_update": "正在更新 AdGuard Home,请稍侯",
|
||||
"clients_title": "客户端",
|
||||
"clients_desc": "配置已连接到 AdGuard Home 的设备",
|
||||
@@ -368,7 +393,7 @@
|
||||
"client_edit": "编辑客户端",
|
||||
"client_identifier": "标识符",
|
||||
"ip_address": "IP 地址",
|
||||
"client_identifier_desc": "客户端可通过 IP 地址或 MAC 地址识别。请注意,如 AdGuard Home 也是 <0>DHCP 服务器</0>,则仅能将 MAC 用作标识符",
|
||||
"client_identifier_desc": "客户端可通过 IP 、MAC 地址、CIDR 或特殊 ID(可用于 DoT/DoH/DoQ)被识别。<0>这里</0>您可多了解如何识别客户端。",
|
||||
"form_enter_ip": "输入 IP",
|
||||
"form_enter_mac": "输入 MAC",
|
||||
"form_enter_id": "输入标识符",
|
||||
@@ -399,7 +424,8 @@
|
||||
"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_3": "<0>以下是您可以使用软件的列表</0>",
|
||||
"setup_dns_privacy_4": "在 iOS 14 或 macOS Big Sur 设备上,您可以下载特定的 '.mobileconfig' 文件。此文件将<highlight>DNS-over-HTTPS</highlight> 或 <highlight>DNS-over-TLS</highlight> 服务器添加于 DNS 设置。",
|
||||
"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> 的支持。",
|
||||
@@ -411,6 +437,7 @@
|
||||
"setup_dns_privacy_other_3": "<0>dnscrypt-proxy</0> 支持 <1>DNS-over-HTTPS</1>。",
|
||||
"setup_dns_privacy_other_4": "<0>Mozilla Firefox</0> 支持 <1>DNS-over-HTTPS</1>。",
|
||||
"setup_dns_privacy_other_5": "您可以从 <0>这里</0> 和 <1>这里</1> 找到更多的实施方案。",
|
||||
"setup_dns_privacy_ioc_mac": "iOS 和 macOS 配置",
|
||||
"setup_dns_notice": "为了使用 <1>DNS-over-HTTPS</1> 或者 <1>DNS-over-TLS</1> ,您需要在 AdGuard Home 设置中 <0>配置加密</0> 。",
|
||||
"rewrite_added": "已成功添加 \"{{key}}\" 的 DNS 重写",
|
||||
"rewrite_deleted": "已成功删除 \"{{key}}\" 的 DNS 重写",
|
||||
@@ -510,8 +537,8 @@
|
||||
"check_ip": "IP地址:{{ip}}",
|
||||
"check_cname": "CNAME: {{cname}}",
|
||||
"check_reason": "原因:{{reason}}",
|
||||
"check_rule": "规则:{{rule}}",
|
||||
"check_service": "服务名称:{{service}}",
|
||||
"service_name": "服务名称",
|
||||
"check_not_found": "未在您的筛选列表中找到",
|
||||
"client_confirm_block": "您确定要阻止客户端\"{{ip}}\"?",
|
||||
"client_confirm_unblock": "您确定要解除对客户端\"{{ip}}\"的封锁吗?",
|
||||
@@ -546,13 +573,12 @@
|
||||
"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}}",
|
||||
"enter_cache_size": "输入缓存大小(字节)",
|
||||
"enter_cache_ttl_min_override": "输入最小 TTL 值(秒)",
|
||||
"enter_cache_ttl_max_override": "输入最大 TTL 值(秒)",
|
||||
"cache_ttl_min_override_desc": "缓存 DNS 响应时,延长从上游服务器接收到的 TTL 值 (秒)",
|
||||
"cache_ttl_max_override_desc": "设定 DNS 缓存条目的最大 TTL 值(秒)",
|
||||
"ttl_cache_validation": "最小缓存TTL值必须小于或等于最大值",
|
||||
"filter_category_general": "常规",
|
||||
"filter_category_security": "安全",
|
||||
"filter_category_regional": "区域",
|
||||
@@ -561,7 +587,11 @@
|
||||
"filter_category_security_desc": "专用于拦截恶意软件、钓鱼或欺诈域名的列表",
|
||||
"filter_category_regional_desc": "专注于区域广告和跟踪服务器的列表",
|
||||
"filter_category_other_desc": "其他阻止列表",
|
||||
"setup_config_to_enable_dhcp_server": "设置配置以启用DHCP服务器",
|
||||
"original_response": "原始响应",
|
||||
"click_to_view_queries": "点击查看查询",
|
||||
"port_53_faq_link": "53端口常被DNSStubListener或systemdn解析的服务占用。请阅读<0>这份关于如何解决这一问题的说明</0>"
|
||||
"port_53_faq_link": "53端口常被DNSStubListener或systemdn解析的服务占用。请阅读<0>这份关于如何解决这一问题的说明</0>",
|
||||
"adg_will_drop_dns_queries": "AdGuard Home 会终止所有来自此客户端的DNS查询。",
|
||||
"client_not_in_allowed_clients": "此客户端不被允许,因为它不在“允许的客户端”列表中。",
|
||||
"experimental": "实验性的"
|
||||
}
|
||||
586
client/src/__locales/zh-hk.json
Normal file
586
client/src/__locales/zh-hk.json
Normal file
@@ -0,0 +1,586 @@
|
||||
{
|
||||
"client_settings": "用戶端設定",
|
||||
"example_upstream_reserved": "您可以<0>指定網域</0>使用特定 DNS 查詢",
|
||||
"example_upstream_comment": "您可以指定註解",
|
||||
"upstream_parallel": "使用平行查詢,同時查詢所有上游伺服器來加速解析結果",
|
||||
"parallel_requests": "平行處理",
|
||||
"load_balancing": "負載平衡",
|
||||
"load_balancing_desc": "一次只查詢一個伺服器。AdGuard Home 會使用加權隨機取樣來選擇使用的查詢結果,以確保速度最快的伺服器能被充分運用。",
|
||||
"bootstrap_dns": "引導(Boostrap) DNS 伺服器",
|
||||
"bootstrap_dns_desc": "Bootstrap DNS 伺服器用於解析您所設定的上游 DoH/DoT 解析器的 IP 地址",
|
||||
"check_dhcp_servers": "檢查 DHCP 伺服器",
|
||||
"save_config": "儲存設定",
|
||||
"enabled_dhcp": "DHCP 伺服器已啟動",
|
||||
"disabled_dhcp": "DHCP 伺服器已關閉",
|
||||
"unavailable_dhcp": "DHCP 無法使用",
|
||||
"unavailable_dhcp_desc": "AdGuard Home 無法在您的作業系統上運行 DHCP 伺服器",
|
||||
"dhcp_title": "DHCP 伺服器(實驗性功能!)",
|
||||
"dhcp_description": "如果你的路由器沒有提供 DHCP 設定,您可以使用 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 設定已儲存",
|
||||
"dhcp_ipv4_settings": "DHCP IPv4 設定",
|
||||
"dhcp_ipv6_settings": "DHCP IPv6 設定",
|
||||
"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",
|
||||
"range_end_error": "必須大於起始值",
|
||||
"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": "如果無論如何您都想要啟動 AdGuard 內建 DHCP 伺服器,請先確保同一網路下沒有正在運作的 DHCP 伺服器,否則很有可能會破壞其他已連線至網際網路的裝置。",
|
||||
"dhcp_error": "無法偵測到同一網路下使否有其他 DHCP 伺服器。",
|
||||
"dhcp_static_ip_error": "使用 DHCP 伺服器必須先指定靜態 IP 位置給 AdGuard。無法偵測到有效的靜態 IP 設定,請先手動設定。",
|
||||
"dhcp_dynamic_ip_found": "您的網路介面 <0>{{interfaceName}}</0> 正在使用動態 IP,要使用 DHCP 伺服器必須指定靜態 IP 給 AdGuard。\n目前您的 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>被過濾器封鎖</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": "已強制使用安全搜尋總數",
|
||||
"average_processing_time": "平均的處理時間",
|
||||
"average_processing_time_hint": "處理 DNS 請求的平均時間(毫秒)",
|
||||
"block_domain_use_filters_and_hosts": "使用過濾器與 hosts 檔案阻擋網域查詢",
|
||||
"filters_block_toggle_hint": "您可在<a>過濾器</a>設定中設定封鎖規則。",
|
||||
"use_adguard_browsing_sec": "使用 AdGuard 瀏覽安全網路服務",
|
||||
"use_adguard_browsing_sec_hint": "AdGuard Home 將比對查詢網域是否在瀏覽安全服務黑名單內。AdGuard Home 選擇使用尊重個人隱私的 API 進行比對,先透過 SHA256 將網域編碼,取前置字串傳送到伺服器進行比對。",
|
||||
"use_adguard_parental": "使用 AdGuard 家長監護功能",
|
||||
"use_adguard_parental_hint": "AdGuard Home 將比對查詢網域是否含有成人內容。它使用與 AdGuard 瀏覽安全一樣的尊重個人隱私的 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": "在白名單內的網域無論如何都會被允許,即使他在其他黑名單內也一樣。",
|
||||
"custom_filtering_rules": "自訂過濾規則",
|
||||
"encryption_settings": "加密設定",
|
||||
"dhcp_settings": "DHCP 設定",
|
||||
"upstream_dns": "上游 DNS 伺服器",
|
||||
"upstream_dns_help": "每行輸入一個伺服器位址。<a>了解更多</a>有關設定上游 DNS 伺服器的內容",
|
||||
"upstream_dns_configured_in_file": "設定在 {{path}}",
|
||||
"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": "清單 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 接受「adblock」以及「host檔案」語法。",
|
||||
"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": "! Here goes a comment",
|
||||
"example_comment_meaning": "註解",
|
||||
"example_comment_hash": "# Also a comment",
|
||||
"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_doq": "加密 <0>DNS-over-QUIC</0>",
|
||||
"example_upstream_sdns": "您可以使透過 <0>DNS Stamps</0> 來解析 <1>DNSCrypt</1> 或 <2>DNS-over-HTTPS</2>",
|
||||
"example_upstream_tcp": "一般 DNS(透過 TCP)",
|
||||
"all_lists_up_to_date_toast": "所有清單已更新至最新",
|
||||
"updated_upstream_dns_toast": "已更新上游 DNS 伺服器",
|
||||
"dns_test_ok_toast": "設定中的 DNS 上游運作正常",
|
||||
"dns_test_not_ok_toast": "DNS 設定中的 \"{{key}}\" 出現錯誤,請確認是否正確輸入",
|
||||
"unblock": "解除封鎖",
|
||||
"block": "封鎖",
|
||||
"disallow_this_client": "不允許此用戶端",
|
||||
"allow_this_client": "允許此用戶端",
|
||||
"block_for_this_client_only": "僅封鎖此用戶端",
|
||||
"unblock_for_this_client_only": "僅解除封鎖此用戶端",
|
||||
"time_table_header": "時間",
|
||||
"date": "日期",
|
||||
"domain_name_table_header": "域名",
|
||||
"domain_or_client": "網域或用戶端",
|
||||
"type_table_header": "類型",
|
||||
"response_table_header": "回應",
|
||||
"response_code": "回應代碼",
|
||||
"client_table_header": "用戶端",
|
||||
"empty_response_status": "空白",
|
||||
"show_all_filter_type": "顯示全部",
|
||||
"show_filtered_type": "僅顯示已過濾",
|
||||
"no_logs_found": "找不到記錄",
|
||||
"refresh_btn": "重新整理",
|
||||
"previous_btn": "上一頁",
|
||||
"next_btn": "下一頁",
|
||||
"loading_table_status": "正在載入...",
|
||||
"page_table_footer_text": "頁",
|
||||
"rows_table_footer_text": "列",
|
||||
"updated_custom_filtering_toast": "自訂過濾規則已更新",
|
||||
"rule_removed_from_custom_filtering_toast": "已從自訂過濾規則中移除:{{rule}}",
|
||||
"rule_added_to_custom_filtering_toast": "已新增至自訂規則中:{{rule}}",
|
||||
"query_log_response_status": "狀態:{{value}}",
|
||||
"query_log_filtered": "被 {{filter}} 過濾",
|
||||
"query_log_confirm_clear": "您確定要清除整個查詢記錄嗎?",
|
||||
"query_log_cleared": "已清除查詢記錄",
|
||||
"query_log_updated": "已成功更新查詢記錄",
|
||||
"query_log_clear": "清除查詢記錄",
|
||||
"query_log_retention": "查詢記錄保留時間",
|
||||
"query_log_enable": "開啟記錄",
|
||||
"query_log_configuration": "記錄檔設定",
|
||||
"query_log_disabled": "查詢記錄未開啟,可以在<0>設定</0>中開啟",
|
||||
"query_log_strict_search": "使用雙引號來強調搜尋結果",
|
||||
"query_log_retention_confirm": "您確定要更改記錄檔保存期限嗎?如果您縮短期限部分資料可能將會遺失",
|
||||
"anonymize_client_ip": "將用戶端 IP 匿名化",
|
||||
"anonymize_client_ip_desc": "不要將用戶端完整 IP 位址儲存在記錄檔與統計資料",
|
||||
"dns_config": "DNS 伺服器設定",
|
||||
"dns_cache_config": "DNS 快取設定",
|
||||
"dns_cache_config_desc": "在這裡您可以設定 DNS 快取",
|
||||
"blocking_mode": "封鎖模式",
|
||||
"default": "預設",
|
||||
"nxdomain": "NXDOMAIN",
|
||||
"refused": "REFUSED",
|
||||
"null_ip": "Null IP",
|
||||
"custom_ip": "自訂 IP 位址",
|
||||
"blocking_ipv4": "封鎖 IPv4",
|
||||
"blocking_ipv6": "封鎖 IPv6",
|
||||
"dns_over_https": "DNS-over-HTTPS",
|
||||
"dns_over_tls": "DNS-over-TLS",
|
||||
"download_mobileconfig_doh": "下載適用於 DNS-over-HTTPS 的 .mobileconfig",
|
||||
"download_mobileconfig_dot": "下載適用於 DNS-over-TLS 的 .mobileconfig",
|
||||
"plain_dns": "一般未加密 DNS",
|
||||
"form_enter_rate_limit": "輸入速率限制",
|
||||
"rate_limit": "速率限制",
|
||||
"edns_enable": "啟用 EDNS Client Subnet",
|
||||
"edns_cs_desc": "開啟後 AdGuard Home 將會傳送用戶端的子網路給 DNS 伺服器。",
|
||||
"rate_limit_desc": "限制單一裝置每秒發出的查詢次數(設定為 0 即表示無限制)",
|
||||
"blocking_ipv4_desc": "回覆指定 IPv4 位址給被封鎖的網域的 A 紀錄查詢",
|
||||
"blocking_ipv6_desc": "回覆指定 IPv6 位址給被封鎖的網域的 AAAA 紀錄查詢",
|
||||
"blocking_mode_default": "預設:被 Adblock 規則封鎖時回應零值的 IP 位址(A 紀錄回應 0.0.0.0 ,AAAA 紀錄回應 ::);被 /etc/hosts 規則封鎖時回應規則中指定 IP 位址",
|
||||
"blocking_mode_refused": "REFUSED:以 REFUSED 碼回應",
|
||||
"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> 內的設定的 DNS 伺服器。",
|
||||
"tracker_source": "追蹤器來源",
|
||||
"source_label": "來源",
|
||||
"found_in_known_domain_db": "在已知網域資料庫中找到。",
|
||||
"category_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": "您可以從以下 IP 位址來訪問 AdGuard Home 管理介面:",
|
||||
"form_error_port": "輸入有效的連接埠",
|
||||
"install_settings_dns": "DNS 伺服器",
|
||||
"install_settings_dns_desc": "您需要將您的裝置或路由器設定以下的 IP 位址為 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)。接著您可能會被要求驗證登入,如果忘記密碼可以按壓路由器的 REST 重設按鈕來重設。部分路由器可能需要安裝特定應用程式,在這種情況下應該已經安裝在您的電腦或手機上。",
|
||||
"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 Icon,接著點擊「系統偏好設定」。",
|
||||
"install_devices_macos_list_2": "點擊「網路」。",
|
||||
"install_devices_macos_list_3": "選擇清單中第一個連線接著點選「進階設定」。",
|
||||
"install_devices_macos_list_4": "選擇 DNS 分頁,接著輸入您的 AdGuard Home 伺服器位址。",
|
||||
"install_devices_android_list_1": "在 Android 主選單中點選設定。",
|
||||
"install_devices_android_list_2": "在 Wi-Fi 選單中會列出所有可用的網路(在行動網路時無法使用自訂 DNS)。",
|
||||
"install_devices_android_list_3": "長按您正在使用的網路,接著點選修改網路。",
|
||||
"install_devices_android_list_4": "在某些裝置上您需要勾選進階方塊才能接著設定。要設定自訂 DNS 必須先將 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": "加密(HTTPS/TLS)提供給 DNS 和「管理介面網頁介面」兩者",
|
||||
"encryption_config_saved": "加密設定已儲存",
|
||||
"encryption_server": "伺服器名稱",
|
||||
"encryption_server_enter": "輸入您的網域名稱",
|
||||
"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_doq": "DNS-over-QUIC 連接埠",
|
||||
"encryption_doq_desc": "若設定此連接埠,AdGuard Home 將在此連接埠上運行 DNS-over-QUIC 服務。此功能還是實驗性功能,可能並不可靠。此外目前還沒有太多客戶端支援。",
|
||||
"encryption_certificates": "憑證",
|
||||
"encryption_certificates_desc": "要使用加密連線,必須擁有一個有效的 SSL 憑證對應您的網域。您可以從<0>{{link}}</0>取得免費的 SSL 憑證或從受信任的 SSL 憑證簽發機構購買。",
|
||||
"encryption_certificates_input": "在這裡複製/貼上您的 PEM 憑證。",
|
||||
"encryption_status": "狀態",
|
||||
"encryption_expire": "到期",
|
||||
"encryption_key": "私密金鑰",
|
||||
"encryption_key_input": "在這裡複製/貼上您的 PEM 憑證。",
|
||||
"encryption_enable": "開啟加密(HTTPS、DNS-over-HTTPS 和 DNS-over-TLS)",
|
||||
"encryption_enable_desc": "如果加密開啟 AdGuard Home 網頁管理介面將使用 HTTPS 提供存取,DNS 伺服器也提供 DNS-over-HTTPS 和 DNS-over-TLS 查詢請求。",
|
||||
"encryption_chain_valid": "憑證鏈結有效",
|
||||
"encryption_chain_invalid": "憑證連結無效",
|
||||
"encryption_key_valid": "{{type}} 私密金鑰有效",
|
||||
"encryption_key_invalid": "{{type}} 私密金鑰無效",
|
||||
"encryption_subject": "主體",
|
||||
"encryption_issuer": "簽發者",
|
||||
"encryption_hostnames": "主機名稱",
|
||||
"encryption_reset": "您確定要重設加密設定嗎?",
|
||||
"topline_expiring_certificate": "您的 SSL 憑證即將到期。請前往<0>加密設定</0>更新。",
|
||||
"topline_expired_certificate": "您的 SSL 憑證已到期。請前往<0>加密設定</0>更新。",
|
||||
"form_error_port_range": "輸入範圍 80-65535 中的值",
|
||||
"form_error_port_unsafe": "這個連接埠不安全",
|
||||
"form_error_equal": "不可相同",
|
||||
"form_error_password": "密碼不相符",
|
||||
"reset_settings": "重設設定",
|
||||
"update_announcement": "有新版的 AdGuard Home {{version}} 可供更新!詳細資訊請<0>點擊這裡</0>。",
|
||||
"setup_guide": "安裝導覽",
|
||||
"dns_addresses": "DNS 位址",
|
||||
"dns_start": "DNS 伺服器正在啟動",
|
||||
"dns_status_error": "檢查 DNS 伺服器狀態錯誤",
|
||||
"down": "離線",
|
||||
"fix": "修正",
|
||||
"dns_providers": "下列為常見的<0> DNS 伺服器</0>。",
|
||||
"update_now": "立即更新",
|
||||
"update_failed": "自動更新發生錯誤。請嘗試依照<a>以下步驟</a> 來手動更新。",
|
||||
"processing_update": "請稍候,AdGuard Home 正在更新",
|
||||
"clients_title": "用戶端",
|
||||
"clients_desc": "對已連接到 AdGuard Home 的裝置進行設定",
|
||||
"settings_global": "全域",
|
||||
"settings_custom": "自訂",
|
||||
"table_client": "用戶端",
|
||||
"table_name": "名稱",
|
||||
"save_btn": "儲存",
|
||||
"client_add": "新增用戶端",
|
||||
"client_new": "設定新用戶端",
|
||||
"client_edit": "編輯用戶端",
|
||||
"client_identifier": "識別碼",
|
||||
"ip_address": "IP 位址",
|
||||
"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 將對這些網域執行過濾檢查,而是直接拒絕查詢。您可以輸入特定網域名稱來使用設定,或使用萬用字元,例如:「example.org」、「*.example.org」或「||example.org^」。",
|
||||
"access_settings_saved": "存取設定已儲存",
|
||||
"updates_checked": "檢查更新成功",
|
||||
"updates_version_equal": "AdGuard Home 是最新的版本",
|
||||
"check_updates_now": "立即檢查更新",
|
||||
"dns_privacy": "DNS 隱私",
|
||||
"setup_dns_privacy_1": "<0>DNS-over-TLS:</0>使用 <1>{{address}}</1>。",
|
||||
"setup_dns_privacy_2": "<0>DNS-over-HTTPS:</0>使用 <1>{{address}}</1>。",
|
||||
"setup_dns_privacy_3": "<0>以下是您可以使用軟體的列表</0>",
|
||||
"setup_dns_privacy_4": "在 iOS 14 或 macOS Big Sur 裝置上,您可以下載特定的 '.mobileconfig' 檔案。此檔案將<highlight>DNS-over-HTTPS</highlight> 或 <highlight>DNS-over-TLS</highlight> 伺服器新增至 DNS 設定。",
|
||||
"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": "已套用 DNS 覆寫規則",
|
||||
"rewrite_hosts_applied": "由「hosts 檔案」覆寫",
|
||||
"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": "DNS 覆寫只套用在這個域名。",
|
||||
"example_rewrite_wildcard": "DNS 覆寫會套用在 <0>example.org</0> 及所有子域名。",
|
||||
"rewrite_ip_address": "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)的查詢。",
|
||||
"fastest_addr": "Fastest IP 位址",
|
||||
"fastest_addr_desc": "從所有 DNS 伺服器查詢中回應最快的 IP 位址。但這操作會等待所有 DNS 查詢結果後才能回應,導致速度有所降低,不過同時卻也改善了整體連線品質。",
|
||||
"autofix_warning_text": "如果您點擊「修復」,AdGuard Home 將更改您的系統 DNS 設定更改為 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": "可在此指定用戶端的標籤。標籤可包含在過濾規則內,並且在指定上更為精確。\n<0>進一步了解</0>",
|
||||
"form_select_tags": "選擇用戶端標籤",
|
||||
"check_title": "過濾檢查",
|
||||
"check_desc": "檢查網域是否被封鎖",
|
||||
"check": "檢查",
|
||||
"form_enter_host": "輸入網域",
|
||||
"filtered_custom_rules": "已套用自訂規則",
|
||||
"choose_from_list": "從清單中選取",
|
||||
"add_custom_list": "新增自訂清單",
|
||||
"host_whitelisted": "主機已列入白名單",
|
||||
"check_ip": "IP 位址:{{ip}}",
|
||||
"check_cname": "CNAME:{{cname}}",
|
||||
"check_reason": "原因:{{reason}}",
|
||||
"check_service": "服務名稱:{{service}}",
|
||||
"service_name": "服務名稱",
|
||||
"check_not_found": "未在您的過濾清單中找到",
|
||||
"client_confirm_block": "您確定要封鎖「{{ip}}」用戶端?",
|
||||
"client_confirm_unblock": "您確定要將「{{ip}}」解除封鎖嗎?",
|
||||
"client_blocked": "已封鎖「{{ip}}」",
|
||||
"client_unblocked": "已解除封鎖「{{ip}}」",
|
||||
"static_ip": "靜態 IP 位址",
|
||||
"static_ip_desc": "由於 AdGuard Home 是個伺服器,因此需要一組靜態 IP 位址使它正常運作。否則在某些時候您的路由器可能會發派不同的 IP 位址給 AdGuard Home。",
|
||||
"set_static_ip": "設定一組靜態 IP 位址",
|
||||
"install_static_ok": "好消息!靜態 IP 位址設定完成了",
|
||||
"install_static_error": "AdGuard Home 無法在這個網路介面上執行自動設定。請尋找有關如何手動更改設定的說明。",
|
||||
"install_static_configure": "我們偵測到 <0>{{ip}}</0> 動態 IP 已被使用。您想要將它當作靜態 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 解析器)",
|
||||
"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 快取大小(bytes)",
|
||||
"cache_ttl_min_override": "覆寫最小 TTL 值",
|
||||
"cache_ttl_max_override": "覆寫最大 TTL 值",
|
||||
"enter_cache_size": "輸入快取大小(bytes)",
|
||||
"enter_cache_ttl_min_override": "輸入最小 TTL 值(秒)",
|
||||
"enter_cache_ttl_max_override": "輸入最大 TTL 值(秒)",
|
||||
"cache_ttl_min_override_desc": "快取 DNS 回應時,延長從上游伺服器收到的 TTL 值 (秒)",
|
||||
"cache_ttl_max_override_desc": "設定 DNS 快取條目的最大 TTL 值(秒)",
|
||||
"ttl_cache_validation": "最小快取 TTL 值必須小於或等於最大值",
|
||||
"filter_category_general": "一般",
|
||||
"filter_category_security": "安全性",
|
||||
"filter_category_regional": "區域性",
|
||||
"filter_category_other": "其他",
|
||||
"filter_category_general_desc": "封鎖大多數裝置的廣告與追蹤器清單",
|
||||
"filter_category_security_desc": "針對惡意軟體、網路釣魚或詐騙網域的封鎖清單",
|
||||
"filter_category_regional_desc": "針對地區性廣告與追蹤器伺服器的封鎖清單",
|
||||
"filter_category_other_desc": "其他封鎖清單",
|
||||
"setup_config_to_enable_dhcp_server": "建立設定檔來使用 DHCP 伺服器",
|
||||
"original_response": "原始回應",
|
||||
"click_to_view_queries": "按一下以檢視查詢結果",
|
||||
"port_53_faq_link": "連接埠 53 經常被「DNSStubListener」或「systemd-resolved」服務佔用。請閱讀下列有關解決<0>這個問題</0>的說明",
|
||||
"adg_will_drop_dns_queries": "AdGuard Home 將停止回應此用戶端的所有 DNS 查詢。",
|
||||
"client_not_in_allowed_clients": "此用戶端不被允許,它不在\"允許的用戶端\"列表中。",
|
||||
"experimental": "實驗性"
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"client_settings": "用戶端設定",
|
||||
"example_upstream_reserved": "您可明確指定<0>用於特定的網域</0>之 DNS 上游",
|
||||
"example_upstream_reserved": "您可<0>對於特定的網域</0>明確指定 DNS 上游",
|
||||
"example_upstream_comment": "您可明確指定註解",
|
||||
"upstream_parallel": "透過同時地查詢所有上游的伺服器,使用並行的查詢以加速解析網域",
|
||||
"parallel_requests": "並行的請求",
|
||||
"load_balancing": "負載平衡",
|
||||
@@ -11,6 +12,8 @@
|
||||
"save_config": "儲存配置",
|
||||
"enabled_dhcp": "動態主機設定協定(DHCP)伺服器被啟用",
|
||||
"disabled_dhcp": "動態主機設定協定(DHCP)伺服器被禁用",
|
||||
"unavailable_dhcp": "DHCP 為不可用的",
|
||||
"unavailable_dhcp_desc": "AdGuard Home 無法於您的作業系統上執行 DHCP 伺服器",
|
||||
"dhcp_title": "動態主機設定協定(DHCP)伺服器(實驗性的!)",
|
||||
"dhcp_description": "如果您的路由器未提供動態主機設定協定(DHCP)設定,您可使用 AdGuard 自身內建的 DHCP 伺服器。",
|
||||
"dhcp_enable": "啟用動態主機設定協定(DHCP)伺服器",
|
||||
@@ -21,19 +24,23 @@
|
||||
"dhcp_static_leases": "動態主機設定協定(DHCP)靜態租約",
|
||||
"dhcp_leases_not_found": "無已發現之動態主機設定協定(DHCP)租約",
|
||||
"dhcp_config_saved": "動態主機設定協定(DHCP)配置被成功地儲存",
|
||||
"dhcp_ipv4_settings": "DHCP IPv4 設定",
|
||||
"dhcp_ipv6_settings": "DHCP IPv6 設定",
|
||||
"form_error_required": "必填的欄位",
|
||||
"form_error_ip4_format": "無效的 IPv4 格式",
|
||||
"form_error_ip6_format": "無效的 IPv6 格式",
|
||||
"form_error_ip_format": "無效的 IP 格式",
|
||||
"form_error_mac_format": "無效的媒體存取控制(MAC)格式",
|
||||
"form_error_client_id_format": "無效的用戶端 ID 格式",
|
||||
"form_error_server_name": "無效的伺服器名稱",
|
||||
"form_error_positive": "必須大於 0",
|
||||
"form_error_negative": "必須等於或大於 0",
|
||||
"range_end_error": "必須大於起始範圍",
|
||||
"dhcp_form_gateway_input": "閘道 IP",
|
||||
"dhcp_form_subnet_input": "子網路遮罩",
|
||||
"dhcp_form_range_title": "IP 位址範圍",
|
||||
"dhcp_form_range_start": "範圍開始",
|
||||
"dhcp_form_range_end": "範圍結束",
|
||||
"dhcp_form_range_start": "起始範圍",
|
||||
"dhcp_form_range_end": "結束範圍",
|
||||
"dhcp_form_lease_title": "動態主機設定協定(DHCP)租約時間(以秒數)",
|
||||
"dhcp_form_lease_input": "租約期間",
|
||||
"dhcp_interface_select": "選擇動態主機設定協定(DHCP)介面",
|
||||
@@ -68,7 +75,7 @@
|
||||
"filter": "過濾器",
|
||||
"query_log": "查詢記錄",
|
||||
"compact": "精簡的",
|
||||
"nothing_found": "無什麼被找到",
|
||||
"nothing_found": "沒找到什麼",
|
||||
"faq": "常見問答集",
|
||||
"version": "版本",
|
||||
"address": "位址",
|
||||
@@ -107,9 +114,9 @@
|
||||
"enforced_save_search": "已強制執行的安全搜尋",
|
||||
"number_of_dns_query_to_safe_search": "安全搜尋已被強制執行之屬於搜尋引擎的 DNS 請求之數量",
|
||||
"average_processing_time": "平均的處理時間",
|
||||
"average_processing_time_hint": "於處理一項 DNS 請求上以毫秒(ms)計之平均的時間",
|
||||
"average_processing_time_hint": "在處理一項 DNS 請求時以毫秒(ms)計的平均時間",
|
||||
"block_domain_use_filters_and_hosts": "透過過濾器和主機檔案封鎖網域",
|
||||
"filters_block_toggle_hint": "您可在<a href='#filters'>過濾器</a>設定中設置封鎖規則。",
|
||||
"filters_block_toggle_hint": "您可在<a>過濾器</a>設定中設置封鎖規則。",
|
||||
"use_adguard_browsing_sec": "使用 AdGuard 瀏覽安全網路服務",
|
||||
"use_adguard_browsing_sec_hint": "AdGuard Home 將檢查網域是否被瀏覽安全網路服務列入黑名單。它將使用友好的隱私查找應用程式介面(API)以執行檢查:僅域名 SHA256 雜湊的短前綴被傳送到伺服器。",
|
||||
"use_adguard_parental": "使用 AdGuard 家長監控之網路服務",
|
||||
@@ -127,7 +134,8 @@
|
||||
"encryption_settings": "加密設定",
|
||||
"dhcp_settings": "動態主機設定協定(DHCP)設定",
|
||||
"upstream_dns": "上游的 DNS 伺服器",
|
||||
"upstream_dns_hint": "如果您將該欄位留空,AdGuard Home 將使用 <a href='https://www.quad9.net/' target='_blank'>Quad9</a> 作為上游。",
|
||||
"upstream_dns_help": "輸入伺服器位址,每行一個。<a>了解更多</a>有關配置上游的 DNS 伺服器。",
|
||||
"upstream_dns_configured_in_file": "被配置在 {{path}}",
|
||||
"test_upstream_btn": "測試上行資料流",
|
||||
"upstreams": "上游",
|
||||
"apply_btn": "套用",
|
||||
@@ -181,6 +189,7 @@
|
||||
"example_upstream_regular": "一般的 DNS(透過 UDP)",
|
||||
"example_upstream_dot": "加密的 <0>DNS-over-TLS</0>",
|
||||
"example_upstream_doh": "加密的 <0>DNS-over-HTTPS</0>",
|
||||
"example_upstream_doq": "加密的 <0>DNS-over-QUIC</0>",
|
||||
"example_upstream_sdns": "您可使用關於 <1>DNSCrypt</1> 或 <2>DNS-over-HTTPS</2> 解析器之 <0>DNS 戳記</0>",
|
||||
"example_upstream_tcp": "一般的 DNS(透過 TCP)",
|
||||
"all_lists_up_to_date_toast": "所有的清單已是最新的",
|
||||
@@ -189,6 +198,10 @@
|
||||
"dns_test_not_ok_toast": "伺服器 \"{{key}}\":無法被使用,請檢查您已正確地填寫它",
|
||||
"unblock": "解除封鎖",
|
||||
"block": "封鎖",
|
||||
"disallow_this_client": "不允許此用戶端",
|
||||
"allow_this_client": "允許此用戶端",
|
||||
"block_for_this_client_only": "僅封鎖此用戶端",
|
||||
"unblock_for_this_client_only": "僅解除封鎖此用戶端",
|
||||
"time_table_header": "時間",
|
||||
"date": "日期",
|
||||
"domain_name_table_header": "域名",
|
||||
@@ -199,7 +212,7 @@
|
||||
"client_table_header": "用戶端",
|
||||
"empty_response_status": "空無的",
|
||||
"show_all_filter_type": "顯示全部",
|
||||
"show_filtered_type": "顯示已過濾的",
|
||||
"show_filtered_type": "顯示受過濾的",
|
||||
"no_logs_found": "無已發現之記錄",
|
||||
"refresh_btn": "重新整理",
|
||||
"previous_btn": "上一頁",
|
||||
@@ -208,8 +221,8 @@
|
||||
"page_table_footer_text": "頁面",
|
||||
"rows_table_footer_text": "列",
|
||||
"updated_custom_filtering_toast": "已更新自訂的過濾規則",
|
||||
"rule_removed_from_custom_filtering_toast": "規則從自訂的過濾規則中被移除",
|
||||
"rule_added_to_custom_filtering_toast": "規則被加至自訂的過濾規則中",
|
||||
"rule_removed_from_custom_filtering_toast": "從自訂的過濾規則中被移除的規則:{{rule}}",
|
||||
"rule_added_to_custom_filtering_toast": "被加至自訂的過濾規則中的規則:{{rule}}",
|
||||
"query_log_response_status": "狀態:{{value}}",
|
||||
"query_log_filtered": "被 {{filter}} 過濾",
|
||||
"query_log_confirm_clear": "您確定您想要清除整個查詢記錄嗎?",
|
||||
@@ -230,25 +243,35 @@
|
||||
"blocking_mode": "封鎖模式",
|
||||
"default": "預設",
|
||||
"nxdomain": "不存在的網域(NXDOMAIN)",
|
||||
"refused": "已拒絕(REFUSED)",
|
||||
"null_ip": "無效的 IP",
|
||||
"custom_ip": "自訂的 IP",
|
||||
"blocking_ipv4": "封鎖 IPv4",
|
||||
"blocking_ipv6": "封鎖 IPv6",
|
||||
"dnscrypt": "DNSCrypt",
|
||||
"dns_over_https": "DNS-over-HTTPS",
|
||||
"dns_over_tls": "DNS-over-TLS",
|
||||
"dns_over_quic": "DNS-over-QUIC",
|
||||
"client_id": "用戶端 ID",
|
||||
"client_id_placeholder": "輸入用戶端 ID",
|
||||
"client_id_desc": "不同的用戶端可根據特殊的用戶端 ID 被識別。<0>於此</0>,您可了解更多關於如何識別用戶端。",
|
||||
"download_mobileconfig_doh": "下載用於 DNS-over-HTTPS 的 .mobileconfig",
|
||||
"download_mobileconfig_dot": "下載用於 DNS-over-TLS 的 .mobileconfig",
|
||||
"download_mobileconfig": "下載配置檔案",
|
||||
"plain_dns": "一般的 DNS",
|
||||
"form_enter_rate_limit": "輸入速率限制",
|
||||
"rate_limit": "速率限制",
|
||||
"edns_enable": "啟用對於 DNS 的擴充機制(EDNS)用戶端子網路",
|
||||
"edns_cs_desc": "如果被啟用,AdGuard Home 將持續傳送用戶端的子網路到 DNS 伺服器。",
|
||||
"rate_limit_desc": "單一的用戶端被允許傳送的每秒請求之數量(0:無限制的)",
|
||||
"rate_limit_desc": "單一的用戶端被允許傳送的每秒請求之數量(設定它為 0 表示無限制的)",
|
||||
"blocking_ipv4_desc": "要被返回給已封鎖的 A 請求之 IP 位址",
|
||||
"blocking_ipv6_desc": "要被返回給已封鎖的 AAAA 請求之 IP 位址",
|
||||
"blocking_mode_default": "預設:當被廣告封鎖樣式的規則封鎖時,以 NXDOMAIN 回覆;當被 /etc/hosts 樣式的規則封鎖時,以在該規則中之已明確指定的 IP 位址回覆",
|
||||
"blocking_mode_default": "預設:當被 AdBlock 樣式的規則封鎖時,以零值 IP 位址(0.0.0.0 供 A;:: 供 AAAA)回覆;當被 /etc/hosts 樣式的規則封鎖時,以在該規則中之已明確指定的 IP 位址回覆",
|
||||
"blocking_mode_refused": "已拒絕(REFUSED):以 REFUSED 碼回覆",
|
||||
"blocking_mode_nxdomain": "不存在的網域(NXDOMAIN):以 NXDOMAIN 碼回覆",
|
||||
"blocking_mode_null_ip": "無效的 IP:以零值 IP 位址(0.0.0.0 供 A;:: 供 AAAA)回覆",
|
||||
"blocking_mode_custom_ip": "自訂的 IP:以一組手動地被設定的 IP 位址回覆",
|
||||
"upstream_dns_client_desc": "如果您將該欄位留空,AdGuard Home 將使用在 <0>DNS 設定</0>中被配置的伺服器。",
|
||||
"upstream_dns_client_desc": "如果您將此欄位留空,AdGuard Home 將使用在 <0>DNS 設定</0>中被配置的伺服器。",
|
||||
"tracker_source": "追蹤器來源",
|
||||
"source_label": "來源",
|
||||
"found_in_known_domain_db": "在已知的域名資料庫中被發現。",
|
||||
@@ -268,7 +291,7 @@
|
||||
"install_settings_dns_desc": "您將需要配置您的裝置或路由器以使用於下列的位址上之 DNS 伺服器:",
|
||||
"install_settings_all_interfaces": "所有的介面",
|
||||
"install_auth_title": "驗證",
|
||||
"install_auth_desc": "配置屬於您的 AdGuard Home 管理員網路介面之密碼驗證是被非常建議的。即使它僅在您的區域網路中為可存取的,保護它免於不受限制的存取為仍然重要的。",
|
||||
"install_auth_desc": "我們強烈建議您設定 AdGuard Home 管理員網路介面密碼。即使它僅能在您的區域網路中使用,保護它免於不受限制的存取仍然很重要。",
|
||||
"install_auth_username": "使用者名稱",
|
||||
"install_auth_password": "密碼",
|
||||
"install_auth_confirm": "確認密碼",
|
||||
@@ -288,12 +311,12 @@
|
||||
"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_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_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 選單主畫面中,輕觸設定。",
|
||||
@@ -303,7 +326,7 @@
|
||||
"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_3": "向目前現行的網路之名稱輕觸。",
|
||||
"install_devices_ios_list_4": "在該 DNS 欄位中,輸入您的 AdGuard Home 伺服器位址。",
|
||||
"get_started": "開始吧",
|
||||
"next": "下一頁",
|
||||
@@ -314,13 +337,15 @@
|
||||
"encryption_config_saved": "加密配置被儲存",
|
||||
"encryption_server": "伺服器名稱",
|
||||
"encryption_server_enter": "輸入您的域名",
|
||||
"encryption_server_desc": "為了使用 HTTPS,您需要輸入與您的安全通訊端層(SSL)憑證相符的伺服器名稱。",
|
||||
"encryption_server_desc": "為了使用 HTTPS,您需要輸入與您的安全通訊端層(SSL)憑證或萬用字元憑證相符的伺服器名稱。如果此欄位未被設定,它將接受向任何網域的傳輸層安全性協定(TLS)連線。",
|
||||
"encryption_redirect": "自動地重新導向到 HTTPS",
|
||||
"encryption_redirect_desc": "如果被勾選,AdGuard Home 將自動地重新導向您從 HTTP 到 HTTPS 位址。",
|
||||
"encryption_https": "HTTPS 連接埠",
|
||||
"encryption_https_desc": "如果 HTTPS 連接埠被配置,AdGuard Home 管理員介面透過 HTTPS 將為可存取的,且它也將於 '/dns-query' 位置上提供 DNS-over-HTTPS。",
|
||||
"encryption_dot": "DNS-over-TLS 連接埠",
|
||||
"encryption_dot_desc": "如果該連接埠被配置,AdGuard Home 將於此連接埠上運行 DNS-over-TLS 伺服器。",
|
||||
"encryption_doq": "DNS-over-QUIC 連接埠",
|
||||
"encryption_doq_desc": "如果此連接埠被配置,AdGuard Home 將於此連接埠上運行 DNS-over-QUIC 伺服器。它是實驗性的並可能為不可靠的。再者,此刻沒有太多支援它的用戶端。",
|
||||
"encryption_certificates": "憑證",
|
||||
"encryption_certificates_desc": "為了使用加密,您需要提供有效的安全通訊端層(SSL)憑證鏈結供您的網域。於 <0>{{link}}</0> 上您可取得免費的憑證或您可從受信任的憑證授權單位之一購買它。",
|
||||
"encryption_certificates_input": "於此複製/貼上您的隱私增強郵件編碼之(PEM-encoded)憑證。",
|
||||
@@ -354,7 +379,7 @@
|
||||
"fix": "修復",
|
||||
"dns_providers": "這裡是一個從中選擇之<0>已知的 DNS 供應商之清單</0>。",
|
||||
"update_now": "立即更新",
|
||||
"update_failed": "自動更新已失敗。請<a href='https://github.com/AdguardTeam/AdGuardHome/wiki/Getting-Started#update'>遵循這些步驟</a>以手動地更新。",
|
||||
"update_failed": "自動更新已失敗。請<a>遵循這些步驟</a>以手動地更新。",
|
||||
"processing_update": "請稍候,AdGuard Home 正被更新",
|
||||
"clients_title": "用戶端",
|
||||
"clients_desc": "配置被連線到 AdGuard Home 的裝置",
|
||||
@@ -368,7 +393,7 @@
|
||||
"client_edit": "編輯用戶端",
|
||||
"client_identifier": "識別碼",
|
||||
"ip_address": "IP 位址",
|
||||
"client_identifier_desc": "用戶端可被 IP 位址、無類別網域間路由(CIDR)或媒體存取控制(MAC)位址識別。請注意,只要 AdGuard Home 也是<0>動態主機設定協定(DHCP)伺服器</0>,使用 MAC 作為識別碼是可能的",
|
||||
"client_identifier_desc": "用戶端可根據 IP 位址、無類別網域間路由(CIDR)、媒體存取控制(MAC)位址或特殊的用戶端 ID(可被用於 DoT/DoH/DoQ)被識別。<0>於此</0>,您可了解更多關於如何識別用戶端。",
|
||||
"form_enter_ip": "輸入 IP",
|
||||
"form_enter_mac": "輸入媒體存取控制(MAC)",
|
||||
"form_enter_id": "輸入識別碼",
|
||||
@@ -399,7 +424,8 @@
|
||||
"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_3": "<0>這裡是您可使用的軟體之清單。</0>",
|
||||
"setup_dns_privacy_4": "於 iOS 14 或 macOS Big Sur 裝置上,您可下載增加 <highlight>DNS-over-HTTPS</highlight> 或 <highlight>DNS-over-TLS</highlight> 伺服器到 DNS 設定之特殊的 '.mobileconfig' 檔案。",
|
||||
"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> 支援。",
|
||||
@@ -411,6 +437,7 @@
|
||||
"setup_dns_privacy_other_3": "<0>dnscrypt-proxy</0> 支援 <1>DNS-over-HTTPS</1>。",
|
||||
"setup_dns_privacy_other_4": "<0>Mozilla Firefox</0> 支援 <1>DNS-over-HTTPS</1>。",
|
||||
"setup_dns_privacy_other_5": "在<0>這裡</0>和<1>這裡</1>,您將發現更多的執行。",
|
||||
"setup_dns_privacy_ioc_mac": "iOS 和 macOS 配置",
|
||||
"setup_dns_notice": "為了使用 <1>DNS-over-HTTPS</1> 或 <1>DNS-over-TLS</1>,您需要在 AdGuard Home 設定裡<0>配置加密</0>。",
|
||||
"rewrite_added": "對於 \"{{key}}\" 之 DNS 改寫被成功地加入",
|
||||
"rewrite_deleted": "對於 \"{{key}}\" 之 DNS 改寫被成功地刪除",
|
||||
@@ -510,8 +537,8 @@
|
||||
"check_ip": "IP 位址:{{ip}}",
|
||||
"check_cname": "正規名稱(CNAME):{{cname}}",
|
||||
"check_reason": "原因:{{reason}}",
|
||||
"check_rule": "規則:{{rule}}",
|
||||
"check_service": "服務名稱:{{service}}",
|
||||
"service_name": "服務名稱",
|
||||
"check_not_found": "未在您的過濾器中被找到",
|
||||
"client_confirm_block": "您確定您想要封鎖該用戶端 \"{{ip}}\" 嗎?",
|
||||
"client_confirm_unblock": "您確定您想要解除封鎖該用戶端 \"{{ip}}\" 嗎?",
|
||||
@@ -537,22 +564,21 @@
|
||||
"blocked_adult_websites": "已封鎖的成人網站",
|
||||
"blocked_threats": "已封鎖的威脅",
|
||||
"allowed": "已允許的",
|
||||
"filtered": "已過濾的",
|
||||
"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}}",
|
||||
"cache_ttl_min_override": "覆寫最小的存活時間(TTL)",
|
||||
"cache_ttl_max_override": "覆寫最大的存活時間(TTL)",
|
||||
"enter_cache_size": "輸入快取大小(位元組)",
|
||||
"enter_cache_ttl_min_override": "輸入最小的存活時間(秒)",
|
||||
"enter_cache_ttl_max_override": "輸入最大的存活時間(秒)",
|
||||
"cache_ttl_min_override_desc": "當快取 DNS 回應時,延長從上游的伺服器收到的短存活時間數值(秒)",
|
||||
"cache_ttl_max_override_desc": "設定最大的存活時間數值(秒)供在 DNS 快取中的項目",
|
||||
"ttl_cache_validation": "最小的快取存活時間(TTL)數值必須小於或等於最大的數值",
|
||||
"filter_category_general": "一般的",
|
||||
"filter_category_security": "安全性",
|
||||
"filter_category_regional": "區域性的",
|
||||
@@ -561,7 +587,11 @@
|
||||
"filter_category_security_desc": "專精於封鎖惡意軟體、網路釣魚或詐騙網域之清單",
|
||||
"filter_category_regional_desc": "專注於區域性的廣告和追蹤伺服器之清單",
|
||||
"filter_category_other_desc": "其它的封鎖清單",
|
||||
"setup_config_to_enable_dhcp_server": "設置配置以啟用 DHCP 伺服器",
|
||||
"original_response": "原始的回應",
|
||||
"click_to_view_queries": "點擊以檢視查詢",
|
||||
"port_53_faq_link": "連接埠 53 常被 \"DNSStubListener\" 或 \"systemd-resolved\" 服務佔用。請閱讀有關如何解決這個的<0>用法說明</0>。"
|
||||
"port_53_faq_link": "連接埠 53 常被 \"DNSStubListener\" 或 \"systemd-resolved\" 服務佔用。請閱讀有關如何解決這個的<0>用法說明</0>。",
|
||||
"adg_will_drop_dns_queries": "AdGuard Home 將持續排除來自此用戶端之所有的 DNS 查詢。",
|
||||
"client_not_in_allowed_clients": "該用戶端未被允許,因為它不在\"已允許的用戶端\"清單中。",
|
||||
"experimental": "實驗性的"
|
||||
}
|
||||
@@ -1,134 +1,5 @@
|
||||
import { getIpMatchListStatus, sortIp } 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);
|
||||
});
|
||||
});
|
||||
});
|
||||
import { sortIp, countClientsStatistics, findAddressType } from '../helpers/helpers';
|
||||
import { ADDRESS_TYPES } from '../helpers/constants';
|
||||
|
||||
describe('sortIp', () => {
|
||||
describe('ipv4', () => {
|
||||
@@ -402,15 +273,15 @@ describe('sortIp', () => {
|
||||
});
|
||||
});
|
||||
describe('invalid input', () => {
|
||||
const originalError = console.error;
|
||||
const originalWarn = console.warn;
|
||||
|
||||
beforeEach(() => {
|
||||
console.error = jest.fn();
|
||||
console.warn = jest.fn();
|
||||
});
|
||||
|
||||
afterEach(() => {
|
||||
expect(console.error).toHaveBeenCalled();
|
||||
console.error = originalError;
|
||||
expect(console.warn).toHaveBeenCalled();
|
||||
console.warn = originalWarn;
|
||||
});
|
||||
|
||||
test('invalid strings', () => {
|
||||
@@ -482,3 +353,56 @@ describe('sortIp', () => {
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe('findAddressType', () => {
|
||||
describe('ip', () => {
|
||||
expect(findAddressType('127.0.0.1')).toStrictEqual(ADDRESS_TYPES.IP);
|
||||
});
|
||||
describe('cidr', () => {
|
||||
expect(findAddressType('127.0.0.1/8')).toStrictEqual(ADDRESS_TYPES.CIDR);
|
||||
});
|
||||
describe('mac', () => {
|
||||
expect(findAddressType('00:1B:44:11:3A:B7')).toStrictEqual(ADDRESS_TYPES.UNKNOWN);
|
||||
});
|
||||
});
|
||||
|
||||
describe('countClientsStatistics', () => {
|
||||
test('single ip', () => {
|
||||
expect(countClientsStatistics(['127.0.0.1'], {
|
||||
'127.0.0.1': 1,
|
||||
})).toStrictEqual(1);
|
||||
});
|
||||
test('multiple ip', () => {
|
||||
expect(countClientsStatistics(['127.0.0.1', '127.0.0.2'], {
|
||||
'127.0.0.1': 1,
|
||||
'127.0.0.2': 2,
|
||||
})).toStrictEqual(1 + 2);
|
||||
});
|
||||
test('cidr', () => {
|
||||
expect(countClientsStatistics(['127.0.0.0/8'], {
|
||||
'127.0.0.1': 1,
|
||||
'127.0.0.2': 2,
|
||||
})).toStrictEqual(1 + 2);
|
||||
});
|
||||
test('cidr and multiple ip', () => {
|
||||
expect(countClientsStatistics(['1.1.1.1', '2.2.2.2', '3.3.3.0/24'], {
|
||||
'1.1.1.1': 1,
|
||||
'2.2.2.2': 2,
|
||||
'3.3.3.3': 3,
|
||||
})).toStrictEqual(1 + 2 + 3);
|
||||
});
|
||||
test('mac', () => {
|
||||
expect(countClientsStatistics(['00:1B:44:11:3A:B7', '2.2.2.2', '3.3.3.0/24'], {
|
||||
'1.1.1.1': 1,
|
||||
'2.2.2.2': 2,
|
||||
'3.3.3.3': 3,
|
||||
})).toStrictEqual(2 + 3);
|
||||
});
|
||||
test('not found', () => {
|
||||
expect(countClientsStatistics(['4.4.4.4', '5.5.5.5', '6.6.6.6'], {
|
||||
'1.1.1.1': 1,
|
||||
'2.2.2.2': 2,
|
||||
'3.3.3.3': 3,
|
||||
})).toStrictEqual(0);
|
||||
});
|
||||
});
|
||||
|
||||
@@ -3,7 +3,6 @@ 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');
|
||||
@@ -49,19 +48,17 @@ export const toggleClientBlockRequest = createAction('TOGGLE_CLIENT_BLOCK_REQUES
|
||||
export const toggleClientBlockFailure = createAction('TOGGLE_CLIENT_BLOCK_FAILURE');
|
||||
export const toggleClientBlockSuccess = createAction('TOGGLE_CLIENT_BLOCK_SUCCESS');
|
||||
|
||||
export const toggleClientBlock = (type, ip) => async (dispatch) => {
|
||||
export const toggleClientBlock = (ip, disallowed, disallowed_rule) => async (dispatch) => {
|
||||
dispatch(toggleClientBlockRequest());
|
||||
try {
|
||||
const {
|
||||
allowed_clients, disallowed_clients, blocked_hosts,
|
||||
} = await apiClient.getAccessList();
|
||||
let updatedDisallowedClients = disallowed_clients || [];
|
||||
const accessList = await apiClient.getAccessList();
|
||||
const allowed_clients = accessList.allowed_clients ?? [];
|
||||
const blocked_hosts = accessList.blocked_hosts ?? [];
|
||||
const disallowed_clients = accessList.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 updatedDisallowedClients = disallowed
|
||||
? disallowed_clients.filter((client) => client !== disallowed_rule)
|
||||
: disallowed_clients.concat(ip);
|
||||
|
||||
const values = {
|
||||
allowed_clients,
|
||||
@@ -72,9 +69,9 @@ export const toggleClientBlock = (type, ip) => async (dispatch) => {
|
||||
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) {
|
||||
if (disallowed) {
|
||||
dispatch(addSuccessToast(i18next.t('client_unblocked', { ip: disallowed_rule })));
|
||||
} else {
|
||||
dispatch(addSuccessToast(i18next.t('client_blocked', { ip })));
|
||||
}
|
||||
} catch (error) {
|
||||
|
||||
@@ -34,6 +34,7 @@ export const setTlsConfig = (config) => async (dispatch, getState) => {
|
||||
values.private_key = btoa(values.private_key);
|
||||
values.port_https = values.port_https || 0;
|
||||
values.port_dns_over_tls = values.port_dns_over_tls || 0;
|
||||
values.port_dns_over_quic = values.port_dns_over_quic || 0;
|
||||
|
||||
const response = await apiClient.setTlsConfig(values);
|
||||
response.certificate_chain = atob(response.certificate_chain);
|
||||
@@ -59,6 +60,7 @@ export const validateTlsConfig = (config) => async (dispatch) => {
|
||||
values.private_key = btoa(values.private_key);
|
||||
values.port_https = values.port_https || 0;
|
||||
values.port_dns_over_tls = values.port_dns_over_tls || 0;
|
||||
values.port_dns_over_quic = values.port_dns_over_quic || 0;
|
||||
|
||||
const response = await apiClient.validateTlsConfig(values);
|
||||
response.certificate_chain = atob(response.certificate_chain);
|
||||
|
||||
@@ -2,12 +2,24 @@ import { createAction } from 'redux-actions';
|
||||
import i18next from 'i18next';
|
||||
import axios from 'axios';
|
||||
|
||||
import { splitByNewLine, sortClients } from '../helpers/helpers';
|
||||
import { CHECK_TIMEOUT, SETTINGS_NAMES } from '../helpers/constants';
|
||||
import endsWith from 'lodash/endsWith';
|
||||
import escapeRegExp from 'lodash/escapeRegExp';
|
||||
import React from 'react';
|
||||
import { compose } from 'redux';
|
||||
import { splitByNewLine, sortClients, filterOutComments } from '../helpers/helpers';
|
||||
import {
|
||||
BLOCK_ACTIONS,
|
||||
CHECK_TIMEOUT,
|
||||
STATUS_RESPONSE,
|
||||
SETTINGS_NAMES,
|
||||
FORM_NAME,
|
||||
GETTING_STARTED_LINK,
|
||||
} from '../helpers/constants';
|
||||
import { areEqualVersions } from '../helpers/version';
|
||||
import { getTlsStatus } from './encryption';
|
||||
import apiClient from '../api/Api';
|
||||
import { addErrorToast, addNoticeToast, addSuccessToast } from './toasts';
|
||||
import { getFilteringStatus, setRules } from './filtering';
|
||||
|
||||
export const toggleSettingStatus = createAction('SETTING_STATUS_TOGGLE');
|
||||
export const showSettingsFailure = createAction('SETTINGS_FAILURE_SHOW');
|
||||
@@ -179,7 +191,14 @@ export const getUpdate = () => async (dispatch, getState) => {
|
||||
|
||||
dispatch(getUpdateRequest());
|
||||
const handleRequestError = () => {
|
||||
dispatch(addNoticeToast({ error: 'update_failed' }));
|
||||
const options = {
|
||||
components: {
|
||||
a: <a href={GETTING_STARTED_LINK} target="_blank"
|
||||
rel="noopener noreferrer" />,
|
||||
},
|
||||
};
|
||||
|
||||
dispatch(addNoticeToast({ error: 'update_failed', options }));
|
||||
dispatch(getUpdateFailure());
|
||||
};
|
||||
|
||||
@@ -268,7 +287,7 @@ export const getDnsStatus = () => async (dispatch) => {
|
||||
try {
|
||||
checkStatus(handleRequestSuccess, handleRequestError);
|
||||
} catch (error) {
|
||||
handleRequestError(error);
|
||||
handleRequestError();
|
||||
}
|
||||
};
|
||||
|
||||
@@ -276,14 +295,21 @@ 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 = (
|
||||
{ bootstrap_dns, upstream_dns }, upstream_dns_file,
|
||||
) => async (dispatch) => {
|
||||
dispatch(testUpstreamRequest());
|
||||
try {
|
||||
const values = { ...config };
|
||||
values.bootstrap_dns = splitByNewLine(values.bootstrap_dns);
|
||||
values.upstream_dns = splitByNewLine(values.upstream_dns);
|
||||
const removeComments = compose(filterOutComments, splitByNewLine);
|
||||
|
||||
const upstreamResponse = await apiClient.testUpstream(values);
|
||||
const config = {
|
||||
bootstrap_dns: splitByNewLine(bootstrap_dns),
|
||||
...(upstream_dns_file ? null : {
|
||||
upstream_dns: removeComments(upstream_dns),
|
||||
}),
|
||||
};
|
||||
|
||||
const upstreamResponse = await apiClient.testUpstream(config);
|
||||
const testMessages = Object.keys(upstreamResponse)
|
||||
.map((key) => {
|
||||
const message = upstreamResponse[key];
|
||||
@@ -304,6 +330,12 @@ export const testUpstream = (config) => async (dispatch) => {
|
||||
}
|
||||
};
|
||||
|
||||
export const testUpstreamWithFormValues = () => async (dispatch, getState) => {
|
||||
const { upstream_dns_file } = getState().dnsConfig;
|
||||
const { bootstrap_dns, upstream_dns } = getState().form[FORM_NAME.UPSTREAM].values;
|
||||
return dispatch(testUpstream({ bootstrap_dns, upstream_dns }, upstream_dns_file));
|
||||
};
|
||||
|
||||
export const changeLanguageRequest = createAction('CHANGE_LANGUAGE_REQUEST');
|
||||
export const changeLanguageFailure = createAction('CHANGE_LANGUAGE_FAILURE');
|
||||
export const changeLanguageSuccess = createAction('CHANGE_LANGUAGE_SUCCESS');
|
||||
@@ -341,8 +373,14 @@ export const getDhcpStatusFailure = createAction('GET_DHCP_STATUS_FAILURE');
|
||||
export const getDhcpStatus = () => async (dispatch) => {
|
||||
dispatch(getDhcpStatusRequest());
|
||||
try {
|
||||
const status = await apiClient.getDhcpStatus();
|
||||
dispatch(getDhcpStatusSuccess(status));
|
||||
const globalStatus = await apiClient.getGlobalStatus();
|
||||
if (globalStatus.dhcp_available) {
|
||||
const status = await apiClient.getDhcpStatus();
|
||||
status.dhcp_available = globalStatus.dhcp_available;
|
||||
dispatch(getDhcpStatusSuccess(status));
|
||||
} else {
|
||||
dispatch(getDhcpStatusFailure());
|
||||
}
|
||||
} catch (error) {
|
||||
dispatch(addErrorToast({ error }));
|
||||
dispatch(getDhcpStatusFailure());
|
||||
@@ -368,11 +406,69 @@ 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, getState) => {
|
||||
dispatch(findActiveDhcpRequest());
|
||||
try {
|
||||
const activeDhcp = await apiClient.findActiveDhcp(name);
|
||||
dispatch(findActiveDhcpSuccess(activeDhcp));
|
||||
const { check, interface_name, interfaces } = getState().dhcp;
|
||||
const selectedInterface = getState().form[FORM_NAME.DHCP_INTERFACES].values.interface_name;
|
||||
const v4 = check?.v4 ?? { static_ip: {}, other_server: {} };
|
||||
const v6 = check?.v6 ?? { other_server: {} };
|
||||
|
||||
let isError = false;
|
||||
let isStaticIPError = false;
|
||||
|
||||
const hasV4Interface = !!interfaces[selectedInterface]?.ipv4_addresses;
|
||||
const hasV6Interface = !!interfaces[selectedInterface]?.ipv6_addresses;
|
||||
|
||||
if (hasV4Interface && v4.other_server.found === STATUS_RESPONSE.ERROR) {
|
||||
isError = true;
|
||||
if (v4.other_server.error) {
|
||||
dispatch(addErrorToast({ error: v4.other_server.error }));
|
||||
}
|
||||
}
|
||||
|
||||
if (hasV6Interface && v6.other_server.found === STATUS_RESPONSE.ERROR) {
|
||||
isError = true;
|
||||
if (v6.other_server.error) {
|
||||
dispatch(addErrorToast({ error: v6.other_server.error }));
|
||||
}
|
||||
}
|
||||
|
||||
if (hasV4Interface && v4.static_ip.static === STATUS_RESPONSE.ERROR) {
|
||||
isStaticIPError = true;
|
||||
dispatch(addErrorToast({ error: 'dhcp_static_ip_error' }));
|
||||
}
|
||||
|
||||
|
||||
if (isError) {
|
||||
dispatch(addErrorToast({ error: 'dhcp_error' }));
|
||||
}
|
||||
|
||||
if (isStaticIPError || isError) {
|
||||
// No need to proceed if there was an error discovering DHCP server
|
||||
return;
|
||||
}
|
||||
|
||||
if ((hasV4Interface && v4.other_server.found === STATUS_RESPONSE.YES)
|
||||
|| (hasV6Interface && v6.other_server.found === STATUS_RESPONSE.YES)) {
|
||||
dispatch(addErrorToast({ error: 'dhcp_found' }));
|
||||
} else if (hasV4Interface && v4.static_ip.static === STATUS_RESPONSE.NO
|
||||
&& v4.static_ip.ip
|
||||
&& interface_name) {
|
||||
const warning = i18next.t('dhcp_dynamic_ip_found', {
|
||||
interfaceName: interface_name,
|
||||
ipAddress: v4.static_ip.ip,
|
||||
interpolation: {
|
||||
prefix: '<0>{{',
|
||||
suffix: '}}</0>',
|
||||
},
|
||||
});
|
||||
dispatch(addErrorToast({ error: warning }));
|
||||
} else {
|
||||
dispatch(addSuccessToast('dhcp_not_found'));
|
||||
}
|
||||
} catch (error) {
|
||||
dispatch(addErrorToast({ error }));
|
||||
dispatch(findActiveDhcpFailure());
|
||||
@@ -383,14 +479,11 @@ export const setDhcpConfigRequest = createAction('SET_DHCP_CONFIG_REQUEST');
|
||||
export const setDhcpConfigSuccess = createAction('SET_DHCP_CONFIG_SUCCESS');
|
||||
export const setDhcpConfigFailure = createAction('SET_DHCP_CONFIG_FAILURE');
|
||||
|
||||
export const setDhcpConfig = (values) => async (dispatch, getState) => {
|
||||
const { config } = getState().dhcp;
|
||||
const updatedConfig = { ...config, ...values };
|
||||
export const setDhcpConfig = (values) => async (dispatch) => {
|
||||
dispatch(setDhcpConfigRequest());
|
||||
dispatch(findActiveDhcp(values.interface_name));
|
||||
try {
|
||||
await apiClient.setDhcpConfig(updatedConfig);
|
||||
dispatch(setDhcpConfigSuccess(updatedConfig));
|
||||
await apiClient.setDhcpConfig(values);
|
||||
dispatch(setDhcpConfigSuccess(values));
|
||||
dispatch(addSuccessToast('dhcp_config_saved'));
|
||||
} catch (error) {
|
||||
dispatch(addErrorToast({ error }));
|
||||
@@ -416,7 +509,6 @@ export const toggleDhcp = (values) => async (dispatch) => {
|
||||
enabled: true,
|
||||
};
|
||||
successMessage = 'enabled_dhcp';
|
||||
dispatch(findActiveDhcp(values.interface_name));
|
||||
}
|
||||
|
||||
try {
|
||||
@@ -483,3 +575,44 @@ export const removeStaticLease = (config) => async (dispatch) => {
|
||||
};
|
||||
|
||||
export const removeToast = createAction('REMOVE_TOAST');
|
||||
|
||||
export const toggleBlocking = (
|
||||
type, domain, baseRule, baseUnblocking,
|
||||
) => async (dispatch, getState) => {
|
||||
const baseBlockingRule = baseRule || `||${domain}^$important`;
|
||||
const baseUnblockingRule = baseUnblocking || `@@${baseBlockingRule}`;
|
||||
const { userRules } = getState().filtering;
|
||||
|
||||
const lineEnding = !endsWith(userRules, '\n') ? '\n' : '';
|
||||
|
||||
const blockingRule = type === BLOCK_ACTIONS.BLOCK ? baseUnblockingRule : baseBlockingRule;
|
||||
const unblockingRule = type === BLOCK_ACTIONS.BLOCK ? baseBlockingRule : baseUnblockingRule;
|
||||
const preparedBlockingRule = new RegExp(`(^|\n)${escapeRegExp(blockingRule)}($|\n)`);
|
||||
const preparedUnblockingRule = new RegExp(`(^|\n)${escapeRegExp(unblockingRule)}($|\n)`);
|
||||
|
||||
const matchPreparedBlockingRule = userRules.match(preparedBlockingRule);
|
||||
const matchPreparedUnblockingRule = userRules.match(preparedUnblockingRule);
|
||||
|
||||
if (matchPreparedBlockingRule) {
|
||||
await dispatch(setRules(userRules.replace(`${blockingRule}`, '')));
|
||||
dispatch(addSuccessToast(i18next.t('rule_removed_from_custom_filtering_toast', { rule: blockingRule })));
|
||||
} else if (!matchPreparedUnblockingRule) {
|
||||
await dispatch(setRules(`${userRules}${lineEnding}${unblockingRule}\n`));
|
||||
dispatch(addSuccessToast(i18next.t('rule_added_to_custom_filtering_toast', { rule: unblockingRule })));
|
||||
} else if (matchPreparedUnblockingRule) {
|
||||
dispatch(addSuccessToast(i18next.t('rule_added_to_custom_filtering_toast', { rule: unblockingRule })));
|
||||
return;
|
||||
} else if (!matchPreparedBlockingRule) {
|
||||
dispatch(addSuccessToast(i18next.t('rule_removed_from_custom_filtering_toast', { rule: blockingRule })));
|
||||
return;
|
||||
}
|
||||
|
||||
dispatch(getFilteringStatus());
|
||||
};
|
||||
|
||||
export const toggleBlockingForClient = (type, domain, client) => {
|
||||
const baseRule = `||${domain}^$client='${client.replace(/'/g, '/\'')}'`;
|
||||
const baseUnblocking = `@@${baseRule}`;
|
||||
|
||||
return toggleBlocking(type, domain, baseRule, baseUnblocking);
|
||||
};
|
||||
|
||||
@@ -2,6 +2,7 @@ import { createAction } from 'redux-actions';
|
||||
|
||||
import apiClient from '../api/Api';
|
||||
import { addErrorToast } from './toasts';
|
||||
import { HTML_PAGES } from '../helpers/constants';
|
||||
|
||||
export const processLoginRequest = createAction('PROCESS_LOGIN_REQUEST');
|
||||
export const processLoginFailure = createAction('PROCESS_LOGIN_FAILURE');
|
||||
@@ -11,7 +12,8 @@ export const processLogin = (values) => async (dispatch) => {
|
||||
dispatch(processLoginRequest());
|
||||
try {
|
||||
await apiClient.login(values);
|
||||
const dashboardUrl = window.location.origin + window.location.pathname.replace('/login.html', '/');
|
||||
const dashboardUrl = window.location.origin
|
||||
+ window.location.pathname.replace(HTML_PAGES.LOGIN, HTML_PAGES.MAIN);
|
||||
window.location.replace(dashboardUrl);
|
||||
dispatch(processLoginSuccess());
|
||||
} catch (error) {
|
||||
|
||||
@@ -3,12 +3,21 @@ 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,
|
||||
DEFAULT_LOGS_FILTER, FORM_NAME, QUERY_LOGS_PAGE_LIMIT,
|
||||
} from '../helpers/constants';
|
||||
import { addErrorToast, addSuccessToast } from './toasts';
|
||||
|
||||
const enrichWithClientInfo = async (logs) => {
|
||||
const clientsParams = getParamsForClientsSearch(logs, 'client', 'client_id');
|
||||
|
||||
if (Object.keys(clientsParams).length > 0) {
|
||||
const clients = await apiClient.findClients(clientsParams);
|
||||
return addClientInfo(logs, clients, 'client_id', 'client');
|
||||
}
|
||||
|
||||
return logs;
|
||||
};
|
||||
|
||||
const getLogsWithParams = async (config) => {
|
||||
const { older_than, filter, ...values } = config;
|
||||
const rawLogs = await apiClient.getQueryLog({
|
||||
@@ -16,13 +25,8 @@ const getLogsWithParams = async (config) => {
|
||||
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');
|
||||
}
|
||||
const normalizedLogs = normalizeLogs(data);
|
||||
const logs = await enrichWithClientInfo(normalizedLogs);
|
||||
|
||||
return {
|
||||
logs,
|
||||
@@ -37,15 +41,22 @@ export const getAdditionalLogsRequest = createAction('GET_ADDITIONAL_LOGS_REQUES
|
||||
export const getAdditionalLogsFailure = createAction('GET_ADDITIONAL_LOGS_FAILURE');
|
||||
export const getAdditionalLogsSuccess = createAction('GET_ADDITIONAL_LOGS_SUCCESS');
|
||||
|
||||
const checkFilteredLogs = async (data, filter, dispatch, total) => {
|
||||
const shortPollQueryLogs = async (data, filter, dispatch, getState, 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 !== '';
|
||||
const queryForm = getState().form[FORM_NAME.LOGS_FILTER];
|
||||
const currentQuery = queryForm && queryForm.values.search;
|
||||
const previousQuery = filter?.search;
|
||||
const isQueryTheSame = typeof previousQuery === 'string'
|
||||
&& typeof currentQuery === 'string'
|
||||
&& previousQuery === currentQuery;
|
||||
|
||||
if (needToGetAdditionalLogs) {
|
||||
const isShortPollingNeeded = (logs.length < QUERY_LOGS_PAGE_LIMIT
|
||||
|| totalData.logs.length < QUERY_LOGS_PAGE_LIMIT)
|
||||
&& oldest !== '' && isQueryTheSame;
|
||||
|
||||
if (isShortPollingNeeded) {
|
||||
dispatch(getAdditionalLogsRequest());
|
||||
|
||||
try {
|
||||
@@ -54,7 +65,7 @@ const checkFilteredLogs = async (data, filter, dispatch, total) => {
|
||||
filter,
|
||||
});
|
||||
if (additionalLogs.oldest.length > 0) {
|
||||
return await checkFilteredLogs(additionalLogs, filter, dispatch, {
|
||||
return await shortPollQueryLogs(additionalLogs, filter, dispatch, getState, {
|
||||
logs: [...totalData.logs, ...additionalLogs.logs],
|
||||
oldest: additionalLogs.oldest,
|
||||
});
|
||||
@@ -71,31 +82,42 @@ const checkFilteredLogs = async (data, filter, dispatch, total) => {
|
||||
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) => {
|
||||
export const updateLogs = () => async (dispatch, getState) => {
|
||||
try {
|
||||
const { logs, oldest, older_than } = getState().queryLogs;
|
||||
|
||||
const enrichedLogs = await enrichWithClientInfo(logs);
|
||||
|
||||
dispatch(getLogsSuccess({
|
||||
logs: enrichedLogs,
|
||||
oldest,
|
||||
older_than,
|
||||
}));
|
||||
} catch (error) {
|
||||
dispatch(addErrorToast({ error }));
|
||||
dispatch(getLogsFailure(error));
|
||||
}
|
||||
};
|
||||
|
||||
export const getLogs = () => async (dispatch, getState) => {
|
||||
dispatch(getLogsRequest());
|
||||
try {
|
||||
const { isFiltered, filter, page } = getState().queryLogs;
|
||||
const { isFiltered, filter, oldest } = getState().queryLogs;
|
||||
const data = await getLogsWithParams({
|
||||
...config,
|
||||
older_than: oldest,
|
||||
filter,
|
||||
});
|
||||
|
||||
if (isFiltered) {
|
||||
const additionalData = await checkFilteredLogs(data, filter, dispatch);
|
||||
const additionalData = await shortPollQueryLogs(data, filter, dispatch, getState);
|
||||
const updatedData = additionalData.logs ? { ...data, ...additionalData } : data;
|
||||
dispatch(getLogsSuccess(updatedData));
|
||||
dispatch(setLogsPagination({
|
||||
page,
|
||||
pageSize: TABLE_DEFAULT_PAGE_SIZE,
|
||||
}));
|
||||
} else {
|
||||
dispatch(getLogsSuccess(data));
|
||||
}
|
||||
@@ -111,7 +133,7 @@ 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
|
||||
* @param {string} filter.response_status 'QUERY' field of RESPONSE_FILTER object
|
||||
* @returns function
|
||||
*/
|
||||
export const setLogsFilter = (filter) => setLogsFilterRequest(filter);
|
||||
@@ -120,21 +142,20 @@ 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) => {
|
||||
export const setFilteredLogs = (filter) => async (dispatch, getState) => {
|
||||
dispatch(setFilteredLogsRequest());
|
||||
try {
|
||||
const data = await getLogsWithParams({
|
||||
older_than: '',
|
||||
filter,
|
||||
});
|
||||
const additionalData = await checkFilteredLogs(data, filter, dispatch);
|
||||
const additionalData = await shortPollQueryLogs(data, filter, dispatch, getState);
|
||||
const updatedData = additionalData.logs ? { ...data, ...additionalData } : data;
|
||||
|
||||
dispatch(setFilteredLogsSuccess({
|
||||
...updatedData,
|
||||
filter,
|
||||
}));
|
||||
dispatch(setLogsPage(TABLE_FIRST_PAGE));
|
||||
} catch (error) {
|
||||
dispatch(addErrorToast({ error }));
|
||||
dispatch(setFilteredLogsFailure(error));
|
||||
|
||||
@@ -1,26 +1,32 @@
|
||||
import axios from 'axios';
|
||||
|
||||
import { getPathWithQueryString } from '../helpers/helpers';
|
||||
import { R_PATH_LAST_PART } from '../helpers/constants';
|
||||
import { QUERY_LOGS_PAGE_LIMIT, HTML_PAGES, R_PATH_LAST_PART } from '../helpers/constants';
|
||||
import { BASE_URL } from '../../constants';
|
||||
|
||||
class Api {
|
||||
baseUrl = BASE_URL;
|
||||
|
||||
async makeRequest(path, method = 'POST', config) {
|
||||
const url = `${this.baseUrl}/${path}`;
|
||||
|
||||
try {
|
||||
const response = await axios({
|
||||
url: `${this.baseUrl}/${path}`,
|
||||
url,
|
||||
method,
|
||||
...config,
|
||||
});
|
||||
return response.data;
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
const errorPath = `${this.baseUrl}/${path}`;
|
||||
const errorPath = url;
|
||||
if (error.response) {
|
||||
if (error.response.status === 403) {
|
||||
const loginPageUrl = window.location.href.replace(R_PATH_LAST_PART, '/login.html');
|
||||
const { pathname } = document.location;
|
||||
const shouldRedirect = pathname !== HTML_PAGES.LOGIN
|
||||
&& pathname !== HTML_PAGES.INSTALL;
|
||||
|
||||
if (error.response.status === 403 && shouldRedirect) {
|
||||
const loginPageUrl = window.location.href
|
||||
.replace(R_PATH_LAST_PART, HTML_PAGES.LOGIN);
|
||||
window.location.replace(loginPageUrl);
|
||||
return false;
|
||||
}
|
||||
@@ -32,25 +38,13 @@ class Api {
|
||||
}
|
||||
|
||||
// Global methods
|
||||
GLOBAL_STATUS = {
|
||||
path: 'status',
|
||||
method: 'GET',
|
||||
};
|
||||
GLOBAL_STATUS = { path: 'status', method: 'GET' }
|
||||
|
||||
GLOBAL_TEST_UPSTREAM_DNS = {
|
||||
path: 'test_upstream_dns',
|
||||
method: 'POST',
|
||||
};
|
||||
GLOBAL_TEST_UPSTREAM_DNS = { path: 'test_upstream_dns', method: 'POST' };
|
||||
|
||||
GLOBAL_VERSION = {
|
||||
path: 'version.json',
|
||||
method: 'POST',
|
||||
};
|
||||
GLOBAL_VERSION = { path: 'version.json', method: 'POST' };
|
||||
|
||||
GLOBAL_UPDATE = {
|
||||
path: 'update',
|
||||
method: 'POST',
|
||||
};
|
||||
GLOBAL_UPDATE = { path: 'update', method: 'POST' };
|
||||
|
||||
getGlobalStatus() {
|
||||
const { path, method } = this.GLOBAL_STATUS;
|
||||
@@ -81,45 +75,21 @@ class Api {
|
||||
}
|
||||
|
||||
// Filtering
|
||||
FILTERING_STATUS = {
|
||||
path: 'filtering/status',
|
||||
method: 'GET',
|
||||
};
|
||||
FILTERING_STATUS = { path: 'filtering/status', method: 'GET' };
|
||||
|
||||
FILTERING_ADD_FILTER = {
|
||||
path: 'filtering/add_url',
|
||||
method: 'POST',
|
||||
};
|
||||
FILTERING_ADD_FILTER = { path: 'filtering/add_url', method: 'POST' };
|
||||
|
||||
FILTERING_REMOVE_FILTER = {
|
||||
path: 'filtering/remove_url',
|
||||
method: 'POST',
|
||||
};
|
||||
FILTERING_REMOVE_FILTER = { path: 'filtering/remove_url', method: 'POST' };
|
||||
|
||||
FILTERING_SET_RULES = {
|
||||
path: 'filtering/set_rules',
|
||||
method: 'POST',
|
||||
};
|
||||
FILTERING_SET_RULES = { path: 'filtering/set_rules', method: 'POST' };
|
||||
|
||||
FILTERING_REFRESH = {
|
||||
path: 'filtering/refresh',
|
||||
method: 'POST',
|
||||
};
|
||||
FILTERING_REFRESH = { path: 'filtering/refresh', method: 'POST' };
|
||||
|
||||
FILTERING_SET_URL = {
|
||||
path: 'filtering/set_url',
|
||||
method: 'POST',
|
||||
};
|
||||
FILTERING_SET_URL = { path: 'filtering/set_url', method: 'POST' };
|
||||
|
||||
FILTERING_CONFIG = {
|
||||
path: 'filtering/config',
|
||||
method: 'POST',
|
||||
};
|
||||
FILTERING_CONFIG = { path: 'filtering/config', method: 'POST' };
|
||||
|
||||
FILTERING_CHECK_HOST = {
|
||||
path: 'filtering/check_host',
|
||||
method: 'GET',
|
||||
};
|
||||
FILTERING_CHECK_HOST = { path: 'filtering/check_host', method: 'GET' };
|
||||
|
||||
getFilteringStatus() {
|
||||
const { path, method } = this.FILTERING_STATUS;
|
||||
@@ -190,20 +160,11 @@ class Api {
|
||||
}
|
||||
|
||||
// Parental
|
||||
PARENTAL_STATUS = {
|
||||
path: 'parental/status',
|
||||
method: 'GET',
|
||||
};
|
||||
PARENTAL_STATUS = { path: 'parental/status', method: 'GET' };
|
||||
|
||||
PARENTAL_ENABLE = {
|
||||
path: 'parental/enable',
|
||||
method: 'POST',
|
||||
};
|
||||
PARENTAL_ENABLE = { path: 'parental/enable', method: 'POST' };
|
||||
|
||||
PARENTAL_DISABLE = {
|
||||
path: 'parental/disable',
|
||||
method: 'POST',
|
||||
};
|
||||
PARENTAL_DISABLE = { path: 'parental/disable', method: 'POST' };
|
||||
|
||||
getParentalStatus() {
|
||||
const { path, method } = this.PARENTAL_STATUS;
|
||||
@@ -226,20 +187,11 @@ class Api {
|
||||
}
|
||||
|
||||
// Safebrowsing
|
||||
SAFEBROWSING_STATUS = {
|
||||
path: 'safebrowsing/status',
|
||||
method: 'GET',
|
||||
};
|
||||
SAFEBROWSING_STATUS = { path: 'safebrowsing/status', method: 'GET' };
|
||||
|
||||
SAFEBROWSING_ENABLE = {
|
||||
path: 'safebrowsing/enable',
|
||||
method: 'POST',
|
||||
};
|
||||
SAFEBROWSING_ENABLE = { path: 'safebrowsing/enable', method: 'POST' };
|
||||
|
||||
SAFEBROWSING_DISABLE = {
|
||||
path: 'safebrowsing/disable',
|
||||
method: 'POST',
|
||||
};
|
||||
SAFEBROWSING_DISABLE = { path: 'safebrowsing/disable', method: 'POST' };
|
||||
|
||||
getSafebrowsingStatus() {
|
||||
const { path, method } = this.SAFEBROWSING_STATUS;
|
||||
@@ -257,20 +209,11 @@ class Api {
|
||||
}
|
||||
|
||||
// Safesearch
|
||||
SAFESEARCH_STATUS = {
|
||||
path: 'safesearch/status',
|
||||
method: 'GET',
|
||||
};
|
||||
SAFESEARCH_STATUS = { path: 'safesearch/status', method: 'GET' };
|
||||
|
||||
SAFESEARCH_ENABLE = {
|
||||
path: 'safesearch/enable',
|
||||
method: 'POST',
|
||||
};
|
||||
SAFESEARCH_ENABLE = { path: 'safesearch/enable', method: 'POST' };
|
||||
|
||||
SAFESEARCH_DISABLE = {
|
||||
path: 'safesearch/disable',
|
||||
method: 'POST',
|
||||
};
|
||||
SAFESEARCH_DISABLE = { path: 'safesearch/disable', method: 'POST' };
|
||||
|
||||
getSafesearchStatus() {
|
||||
const { path, method } = this.SAFESEARCH_STATUS;
|
||||
@@ -288,15 +231,9 @@ class Api {
|
||||
}
|
||||
|
||||
// Language
|
||||
CURRENT_LANGUAGE = {
|
||||
path: 'i18n/current_language',
|
||||
method: 'GET',
|
||||
};
|
||||
CURRENT_LANGUAGE = { path: 'i18n/current_language', method: 'GET' };
|
||||
|
||||
CHANGE_LANGUAGE = {
|
||||
path: 'i18n/change_language',
|
||||
method: 'POST',
|
||||
};
|
||||
CHANGE_LANGUAGE = { path: 'i18n/change_language', method: 'POST' };
|
||||
|
||||
getCurrentLanguage() {
|
||||
const { path, method } = this.CURRENT_LANGUAGE;
|
||||
@@ -313,40 +250,19 @@ class Api {
|
||||
}
|
||||
|
||||
// DHCP
|
||||
DHCP_STATUS = {
|
||||
path: 'dhcp/status',
|
||||
method: 'GET',
|
||||
};
|
||||
DHCP_STATUS = { path: 'dhcp/status', method: 'GET' };
|
||||
|
||||
DHCP_SET_CONFIG = {
|
||||
path: 'dhcp/set_config',
|
||||
method: 'POST',
|
||||
};
|
||||
DHCP_SET_CONFIG = { path: 'dhcp/set_config', method: 'POST' };
|
||||
|
||||
DHCP_FIND_ACTIVE = {
|
||||
path: 'dhcp/find_active_dhcp',
|
||||
method: 'POST',
|
||||
};
|
||||
DHCP_FIND_ACTIVE = { path: 'dhcp/find_active_dhcp', method: 'POST' };
|
||||
|
||||
DHCP_INTERFACES = {
|
||||
path: 'dhcp/interfaces',
|
||||
method: 'GET',
|
||||
};
|
||||
DHCP_INTERFACES = { path: 'dhcp/interfaces', method: 'GET' };
|
||||
|
||||
DHCP_ADD_STATIC_LEASE = {
|
||||
path: 'dhcp/add_static_lease',
|
||||
method: 'POST',
|
||||
};
|
||||
DHCP_ADD_STATIC_LEASE = { path: 'dhcp/add_static_lease', method: 'POST' };
|
||||
|
||||
DHCP_REMOVE_STATIC_LEASE = {
|
||||
path: 'dhcp/remove_static_lease',
|
||||
method: 'POST',
|
||||
};
|
||||
DHCP_REMOVE_STATIC_LEASE = { path: 'dhcp/remove_static_lease', method: 'POST' };
|
||||
|
||||
DHCP_RESET = {
|
||||
path: 'dhcp/reset',
|
||||
method: 'POST',
|
||||
};
|
||||
DHCP_RESET = { path: 'dhcp/reset', method: 'POST' };
|
||||
|
||||
getDhcpStatus() {
|
||||
const { path, method } = this.DHCP_STATUS;
|
||||
@@ -400,20 +316,11 @@ class Api {
|
||||
}
|
||||
|
||||
// Installation
|
||||
INSTALL_GET_ADDRESSES = {
|
||||
path: 'install/get_addresses',
|
||||
method: 'GET',
|
||||
};
|
||||
INSTALL_GET_ADDRESSES = { path: 'install/get_addresses', method: 'GET' };
|
||||
|
||||
INSTALL_CONFIGURE = {
|
||||
path: 'install/configure',
|
||||
method: 'POST',
|
||||
};
|
||||
INSTALL_CONFIGURE = { path: 'install/configure', method: 'POST' };
|
||||
|
||||
INSTALL_CHECK_CONFIG = {
|
||||
path: 'install/check_config',
|
||||
method: 'POST',
|
||||
};
|
||||
INSTALL_CHECK_CONFIG = { path: 'install/check_config', method: 'POST' };
|
||||
|
||||
getDefaultAddresses() {
|
||||
const { path, method } = this.INSTALL_GET_ADDRESSES;
|
||||
@@ -439,20 +346,11 @@ class Api {
|
||||
}
|
||||
|
||||
// DNS-over-HTTPS and DNS-over-TLS
|
||||
TLS_STATUS = {
|
||||
path: 'tls/status',
|
||||
method: 'GET',
|
||||
};
|
||||
TLS_STATUS = { path: 'tls/status', method: 'GET' };
|
||||
|
||||
TLS_CONFIG = {
|
||||
path: 'tls/configure',
|
||||
method: 'POST',
|
||||
};
|
||||
TLS_CONFIG = { path: 'tls/configure', method: 'POST' };
|
||||
|
||||
TLS_VALIDATE = {
|
||||
path: 'tls/validate',
|
||||
method: 'POST',
|
||||
};
|
||||
TLS_VALIDATE = { path: 'tls/validate', method: 'POST' };
|
||||
|
||||
getTlsStatus() {
|
||||
const { path, method } = this.TLS_STATUS;
|
||||
@@ -478,30 +376,15 @@ class Api {
|
||||
}
|
||||
|
||||
// Per-client settings
|
||||
GET_CLIENTS = {
|
||||
path: 'clients',
|
||||
method: 'GET',
|
||||
};
|
||||
GET_CLIENTS = { path: 'clients', method: 'GET' };
|
||||
|
||||
FIND_CLIENTS = {
|
||||
path: 'clients/find',
|
||||
method: 'GET',
|
||||
};
|
||||
FIND_CLIENTS = { path: 'clients/find', method: 'GET' };
|
||||
|
||||
ADD_CLIENT = {
|
||||
path: 'clients/add',
|
||||
method: 'POST',
|
||||
};
|
||||
ADD_CLIENT = { path: 'clients/add', method: 'POST' };
|
||||
|
||||
DELETE_CLIENT = {
|
||||
path: 'clients/delete',
|
||||
method: 'POST',
|
||||
};
|
||||
DELETE_CLIENT = { path: 'clients/delete', method: 'POST' };
|
||||
|
||||
UPDATE_CLIENT = {
|
||||
path: 'clients/update',
|
||||
method: 'POST',
|
||||
};
|
||||
UPDATE_CLIENT = { path: 'clients/update', method: 'POST' };
|
||||
|
||||
getClients() {
|
||||
const { path, method } = this.GET_CLIENTS;
|
||||
@@ -542,15 +425,9 @@ class Api {
|
||||
}
|
||||
|
||||
// DNS access settings
|
||||
ACCESS_LIST = {
|
||||
path: 'access/list',
|
||||
method: 'GET',
|
||||
};
|
||||
ACCESS_LIST = { path: 'access/list', method: 'GET' };
|
||||
|
||||
ACCESS_SET = {
|
||||
path: 'access/set',
|
||||
method: 'POST',
|
||||
};
|
||||
ACCESS_SET = { path: 'access/set', method: 'POST' };
|
||||
|
||||
getAccessList() {
|
||||
const { path, method } = this.ACCESS_LIST;
|
||||
@@ -567,20 +444,11 @@ class Api {
|
||||
}
|
||||
|
||||
// DNS rewrites
|
||||
REWRITES_LIST = {
|
||||
path: 'rewrite/list',
|
||||
method: 'GET',
|
||||
};
|
||||
REWRITES_LIST = { path: 'rewrite/list', method: 'GET' };
|
||||
|
||||
REWRITE_ADD = {
|
||||
path: 'rewrite/add',
|
||||
method: 'POST',
|
||||
};
|
||||
REWRITE_ADD = { path: 'rewrite/add', method: 'POST' };
|
||||
|
||||
REWRITE_DELETE = {
|
||||
path: 'rewrite/delete',
|
||||
method: 'POST',
|
||||
};
|
||||
REWRITE_DELETE = { path: 'rewrite/delete', method: 'POST' };
|
||||
|
||||
getRewritesList() {
|
||||
const { path, method } = this.REWRITES_LIST;
|
||||
@@ -606,15 +474,9 @@ class Api {
|
||||
}
|
||||
|
||||
// Blocked services
|
||||
BLOCKED_SERVICES_LIST = {
|
||||
path: 'blocked_services/list',
|
||||
method: 'GET',
|
||||
};
|
||||
BLOCKED_SERVICES_LIST = { path: 'blocked_services/list', method: 'GET' };
|
||||
|
||||
BLOCKED_SERVICES_SET = {
|
||||
path: 'blocked_services/set',
|
||||
method: 'POST',
|
||||
};
|
||||
BLOCKED_SERVICES_SET = { path: 'blocked_services/set', method: 'POST' };
|
||||
|
||||
getBlockedServices() {
|
||||
const { path, method } = this.BLOCKED_SERVICES_LIST;
|
||||
@@ -631,25 +493,13 @@ class Api {
|
||||
}
|
||||
|
||||
// Settings for statistics
|
||||
GET_STATS = {
|
||||
path: 'stats',
|
||||
method: 'GET',
|
||||
};
|
||||
GET_STATS = { path: 'stats', method: 'GET' };
|
||||
|
||||
STATS_INFO = {
|
||||
path: 'stats_info',
|
||||
method: 'GET',
|
||||
};
|
||||
STATS_INFO = { path: 'stats_info', method: 'GET' };
|
||||
|
||||
STATS_CONFIG = {
|
||||
path: 'stats_config',
|
||||
method: 'POST',
|
||||
};
|
||||
STATS_CONFIG = { path: 'stats_config', method: 'POST' };
|
||||
|
||||
STATS_RESET = {
|
||||
path: 'stats_reset',
|
||||
method: 'POST',
|
||||
};
|
||||
STATS_RESET = { path: 'stats_reset', method: 'POST' };
|
||||
|
||||
getStats() {
|
||||
const { path, method } = this.GET_STATS;
|
||||
@@ -676,28 +526,18 @@ class Api {
|
||||
}
|
||||
|
||||
// Query log
|
||||
GET_QUERY_LOG = {
|
||||
path: 'querylog',
|
||||
method: 'GET',
|
||||
};
|
||||
GET_QUERY_LOG = { path: 'querylog', method: 'GET' };
|
||||
|
||||
QUERY_LOG_CONFIG = {
|
||||
path: 'querylog_config',
|
||||
method: 'POST',
|
||||
};
|
||||
QUERY_LOG_CONFIG = { path: 'querylog_config', method: 'POST' };
|
||||
|
||||
QUERY_LOG_INFO = {
|
||||
path: 'querylog_info',
|
||||
method: 'GET',
|
||||
};
|
||||
QUERY_LOG_INFO = { path: 'querylog_info', method: 'GET' };
|
||||
|
||||
QUERY_LOG_CLEAR = {
|
||||
path: 'querylog_clear',
|
||||
method: 'POST',
|
||||
};
|
||||
QUERY_LOG_CLEAR = { path: 'querylog_clear', method: 'POST' };
|
||||
|
||||
getQueryLog(params) {
|
||||
const { path, method } = this.GET_QUERY_LOG;
|
||||
// eslint-disable-next-line no-param-reassign
|
||||
params.limit = QUERY_LOGS_PAGE_LIMIT;
|
||||
const url = getPathWithQueryString(path, params);
|
||||
return this.makeRequest(url, method);
|
||||
}
|
||||
@@ -722,10 +562,7 @@ class Api {
|
||||
}
|
||||
|
||||
// Login
|
||||
LOGIN = {
|
||||
path: 'login',
|
||||
method: 'POST',
|
||||
};
|
||||
LOGIN = { path: 'login', method: 'POST' };
|
||||
|
||||
login(data) {
|
||||
const { path, method } = this.LOGIN;
|
||||
@@ -737,10 +574,7 @@ class Api {
|
||||
}
|
||||
|
||||
// Profile
|
||||
GET_PROFILE = {
|
||||
path: 'profile',
|
||||
method: 'GET',
|
||||
};
|
||||
GET_PROFILE = { path: 'profile', method: 'GET' };
|
||||
|
||||
getProfile() {
|
||||
const { path, method } = this.GET_PROFILE;
|
||||
@@ -748,15 +582,9 @@ class Api {
|
||||
}
|
||||
|
||||
// DNS config
|
||||
GET_DNS_CONFIG = {
|
||||
path: 'dns_info',
|
||||
method: 'GET',
|
||||
};
|
||||
GET_DNS_CONFIG = { path: 'dns_info', method: 'GET' };
|
||||
|
||||
SET_DNS_CONFIG = {
|
||||
path: 'dns_config',
|
||||
method: 'POST',
|
||||
};
|
||||
SET_DNS_CONFIG = { path: 'dns_config', method: 'POST' };
|
||||
|
||||
getDnsConfig() {
|
||||
const { path, method } = this.GET_DNS_CONFIG;
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
:root {
|
||||
--yellow-pale: rgba(247, 181, 0, 0.1);
|
||||
--green79: #67B279;
|
||||
--green79: #67b279;
|
||||
--gray-a5: #a5a5a5;
|
||||
--gray-d8: #d8d8d8;
|
||||
--gray-f3: #F3F3F3;
|
||||
--gray-f3: #f3f3f3;
|
||||
--font-family-monospace: Monaco, Menlo, "Ubuntu Mono", Consolas, source-code-pro, monospace;
|
||||
--font-size-disable-autozoom: 1rem;
|
||||
}
|
||||
|
||||
body {
|
||||
@@ -13,6 +14,13 @@ body {
|
||||
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue", Arial, sans-serif;
|
||||
}
|
||||
|
||||
/* Disable Auto Zoom in Input - Safari on iPhone https://stackoverflow.com/a/6394497 */
|
||||
@media screen and (max-width: 767px) {
|
||||
input, select, textarea {
|
||||
font-size: var(--font-size-disable-autozoom);
|
||||
}
|
||||
}
|
||||
|
||||
.status {
|
||||
margin-top: 30px;
|
||||
}
|
||||
@@ -42,13 +50,6 @@ body {
|
||||
background: linear-gradient(45deg, rgba(99, 125, 120, 1) 0%, rgba(88, 177, 101, 1) 100%);
|
||||
}
|
||||
|
||||
@media (max-width: 575px) {
|
||||
.container {
|
||||
padding-right: 0;
|
||||
padding-left: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.modal-body--medium {
|
||||
max-height: 20rem;
|
||||
overflow-y: scroll;
|
||||
@@ -65,3 +66,24 @@ body {
|
||||
.mw-75 {
|
||||
max-width: 75% !important;
|
||||
}
|
||||
|
||||
.cursor--not-allowed {
|
||||
cursor: not-allowed;
|
||||
}
|
||||
|
||||
.button-action {
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
.logs__row:hover .button-action,
|
||||
.button-action--active {
|
||||
visibility: visible;
|
||||
}
|
||||
|
||||
.ReactModal__Body--open {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
a.btn-success.disabled {
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
@@ -26,18 +26,19 @@ import Header from '../Header';
|
||||
import { changeLanguage, getDnsStatus } from '../../actions';
|
||||
|
||||
import Dashboard from '../../containers/Dashboard';
|
||||
import Logs from '../../containers/Logs';
|
||||
import SetupGuide from '../../containers/SetupGuide';
|
||||
import Settings from '../../containers/Settings';
|
||||
import Dns from '../../containers/Dns';
|
||||
import Encryption from '../../containers/Encryption';
|
||||
import Dhcp from '../../containers/Dhcp';
|
||||
import Dhcp from '../Settings/Dhcp';
|
||||
import Clients from '../../containers/Clients';
|
||||
import DnsBlocklist from '../../containers/DnsBlocklist';
|
||||
import DnsAllowlist from '../../containers/DnsAllowlist';
|
||||
import DnsRewrites from '../../containers/DnsRewrites';
|
||||
import CustomRules from '../../containers/CustomRules';
|
||||
import Services from '../Filters/Services';
|
||||
import Logs from '../Logs';
|
||||
|
||||
|
||||
const ROUTES = [
|
||||
{
|
||||
@@ -96,10 +97,10 @@ const ROUTES = [
|
||||
];
|
||||
|
||||
const renderRoute = ({ path, component, exact }, idx) => <Route
|
||||
key={idx}
|
||||
exact={exact}
|
||||
path={path}
|
||||
component={component}
|
||||
key={idx}
|
||||
exact={exact}
|
||||
path={path}
|
||||
component={component}
|
||||
/>;
|
||||
|
||||
const App = () => {
|
||||
@@ -142,34 +143,28 @@ const App = () => {
|
||||
window.location.reload();
|
||||
};
|
||||
|
||||
return (
|
||||
<HashRouter hashType="noslash">
|
||||
<>
|
||||
{updateAvailable && <>
|
||||
<UpdateTopline />
|
||||
<UpdateOverlay />
|
||||
</>}
|
||||
{!processingEncryption && <EncryptionTopline />}
|
||||
<LoadingBar className="loading-bar" updateTime={1000} />
|
||||
<Header />
|
||||
<div className="container container--wrap pb-5">
|
||||
{processing && <Loading />}
|
||||
{!isCoreRunning && (
|
||||
<div className="row row-cards">
|
||||
<div className="col-lg-12">
|
||||
<Status reloadPage={reloadPage} message="dns_start" />
|
||||
<Loading />
|
||||
</div>
|
||||
</div>
|
||||
)}
|
||||
{!processing && isCoreRunning && ROUTES.map(renderRoute)}
|
||||
return <HashRouter hashType="noslash">
|
||||
{updateAvailable && <>
|
||||
<UpdateTopline />
|
||||
<UpdateOverlay />
|
||||
</>}
|
||||
{!processingEncryption && <EncryptionTopline />}
|
||||
<LoadingBar className="loading-bar" updateTime={1000} />
|
||||
<Header />
|
||||
<div className="container container--wrap pb-5">
|
||||
{processing && <Loading />}
|
||||
{!isCoreRunning && <div className="row row-cards">
|
||||
<div className="col-lg-12">
|
||||
<Status reloadPage={reloadPage} message="dns_start" />
|
||||
<Loading />
|
||||
</div>
|
||||
<Footer />
|
||||
<Toasts />
|
||||
<Icons />
|
||||
</>
|
||||
</HashRouter>
|
||||
);
|
||||
</div>}
|
||||
{!processing && isCoreRunning && ROUTES.map(renderRoute)}
|
||||
</div>
|
||||
<Footer />
|
||||
<Toasts />
|
||||
<Icons />
|
||||
</HashRouter>;
|
||||
};
|
||||
|
||||
renderRoute.propTypes = {
|
||||
|
||||
@@ -1,14 +1,18 @@
|
||||
import React from 'react';
|
||||
import ReactTable from 'react-table';
|
||||
import PropTypes from 'prop-types';
|
||||
import { Trans, withTranslation } from 'react-i18next';
|
||||
import { Trans, useTranslation } from 'react-i18next';
|
||||
|
||||
import { shallowEqual, useDispatch, useSelector } from 'react-redux';
|
||||
import classNames from 'classnames';
|
||||
import Card from '../ui/Card';
|
||||
import Cell from '../ui/Cell';
|
||||
|
||||
import { getPercent, getIpMatchListStatus, sortIp } from '../../helpers/helpers';
|
||||
import { IP_MATCH_LIST_STATUS, STATUS_COLORS } from '../../helpers/constants';
|
||||
import { formatClientCell } from '../../helpers/formatClientCell';
|
||||
import { getPercent, sortIp } from '../../helpers/helpers';
|
||||
import { BLOCK_ACTIONS, R_CLIENT_ID, STATUS_COLORS } from '../../helpers/constants';
|
||||
import { toggleClientBlock } from '../../actions/access';
|
||||
import { renderFormattedClientCell } from '../../helpers/renderFormattedClientCell';
|
||||
import { getStats } from '../../actions/stats';
|
||||
|
||||
const getClientsPercentColor = (percent) => {
|
||||
if (percent > 50) {
|
||||
@@ -20,126 +24,131 @@ const getClientsPercentColor = (percent) => {
|
||||
return STATUS_COLORS.red;
|
||||
};
|
||||
|
||||
const countCell = (dnsQueries) => function cell(row) {
|
||||
const { value } = row;
|
||||
const percent = getPercent(dnsQueries, value);
|
||||
const CountCell = (row) => {
|
||||
const { value, original: { ip } } = row;
|
||||
const numDnsQueries = useSelector((state) => state.stats.numDnsQueries, shallowEqual);
|
||||
|
||||
const percent = getPercent(numDnsQueries, value);
|
||||
const percentColor = getClientsPercentColor(percent);
|
||||
|
||||
return <Cell value={value} percent={percent} color={percentColor} search={row.original.ip} />;
|
||||
return <Cell value={value} percent={percent} color={percentColor} search={ip} />;
|
||||
};
|
||||
|
||||
const renderBlockingButton = (ipMatchListStatus, ip, handleClick, processing) => {
|
||||
const buttonProps = ipMatchListStatus === IP_MATCH_LIST_STATUS.NOT_FOUND
|
||||
? {
|
||||
className: 'btn-outline-danger',
|
||||
text: 'block',
|
||||
type: 'block',
|
||||
}
|
||||
: {
|
||||
className: 'btn-outline-secondary',
|
||||
text: 'unblock',
|
||||
type: 'unblock',
|
||||
};
|
||||
const renderBlockingButton = (ip, disallowed, disallowed_rule) => {
|
||||
if (R_CLIENT_ID.test(ip)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
const dispatch = useDispatch();
|
||||
const { t } = useTranslation();
|
||||
const processingSet = useSelector((state) => state.access.processingSet);
|
||||
|
||||
const buttonClass = classNames('button-action button-action--main', {
|
||||
'button-action--unblock': disallowed,
|
||||
});
|
||||
|
||||
const toggleClientStatus = async (ip, disallowed, disallowed_rule) => {
|
||||
const confirmMessage = disallowed
|
||||
? t('client_confirm_unblock', { ip: disallowed_rule })
|
||||
: `${t('adg_will_drop_dns_queries')} ${t('client_confirm_block', { ip })}`;
|
||||
|
||||
if (window.confirm(confirmMessage)) {
|
||||
await dispatch(toggleClientBlock(ip, disallowed, disallowed_rule));
|
||||
await dispatch(getStats());
|
||||
}
|
||||
};
|
||||
|
||||
const onClick = () => toggleClientStatus(ip, disallowed, disallowed_rule);
|
||||
|
||||
const text = disallowed ? BLOCK_ACTIONS.UNBLOCK : BLOCK_ACTIONS.BLOCK;
|
||||
|
||||
const isNotInAllowedList = disallowed && disallowed_rule === '';
|
||||
return (
|
||||
<div className="table__action button__action">
|
||||
<div className="table__action pl-4">
|
||||
<button
|
||||
type="button"
|
||||
className={`btn btn-sm ${buttonProps.className}`}
|
||||
onClick={() => handleClick(buttonProps.type, ip)}
|
||||
disabled={processing}
|
||||
className={buttonClass}
|
||||
onClick={isNotInAllowedList ? undefined : onClick}
|
||||
disabled={isNotInAllowedList || processingSet}
|
||||
title={t(isNotInAllowedList ? 'client_not_in_allowed_clients' : text)}
|
||||
>
|
||||
<Trans>{buttonProps.text}</Trans>
|
||||
<Trans>{text}</Trans>
|
||||
</button>
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
const clientCell = (t, toggleClientStatus, processing, disallowedClients) => function cell(row) {
|
||||
const { value } = row;
|
||||
const ipMatchListStatus = getIpMatchListStatus(value, disallowedClients);
|
||||
const ClientCell = (row) => {
|
||||
const { value, original: { info, info: { disallowed, disallowed_rule } } } = row;
|
||||
|
||||
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 <>
|
||||
<div className="logs__row logs__row--overflow logs__row--column d-flex align-items-center">
|
||||
{renderFormattedClientCell(value, info, true)}
|
||||
{renderBlockingButton(value, disallowed, disallowed_rule)}
|
||||
</div>
|
||||
</>;
|
||||
};
|
||||
|
||||
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: sortIp,
|
||||
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 {};
|
||||
}
|
||||
}) => {
|
||||
const { t } = useTranslation();
|
||||
const topClients = useSelector((state) => state.stats.topClients, shallowEqual);
|
||||
|
||||
const { ip } = rowInfo.original;
|
||||
return (
|
||||
<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: <Trans>client_table_header</Trans>,
|
||||
accessor: 'ip',
|
||||
sortMethod: sortIp,
|
||||
Cell: ClientCell,
|
||||
},
|
||||
{
|
||||
Header: <Trans>requests_count</Trans>,
|
||||
accessor: 'count',
|
||||
minWidth: 180,
|
||||
maxWidth: 200,
|
||||
Cell: CountCell,
|
||||
},
|
||||
]}
|
||||
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 {};
|
||||
}
|
||||
|
||||
return getIpMatchListStatus(ip, disallowedClients)
|
||||
=== IP_MATCH_LIST_STATUS.NOT_FOUND ? {} : { className: 'red' };
|
||||
}}
|
||||
/>
|
||||
</Card>
|
||||
);
|
||||
const { info: { disallowed } } = rowInfo.original;
|
||||
|
||||
Clients.propTypes = {
|
||||
topClients: PropTypes.array.isRequired,
|
||||
dnsQueries: PropTypes.number.isRequired,
|
||||
refreshButton: PropTypes.node.isRequired,
|
||||
clients: PropTypes.array.isRequired,
|
||||
autoClients: PropTypes.array.isRequired,
|
||||
subtitle: PropTypes.string.isRequired,
|
||||
t: PropTypes.func.isRequired,
|
||||
toggleClientStatus: PropTypes.func.isRequired,
|
||||
processingAccessSet: PropTypes.bool.isRequired,
|
||||
disallowedClients: PropTypes.string.isRequired,
|
||||
return disallowed ? { className: 'logs__row--red' } : {};
|
||||
}}
|
||||
/>
|
||||
</Card>
|
||||
);
|
||||
};
|
||||
|
||||
export default withTranslation()(Clients);
|
||||
Clients.propTypes = {
|
||||
refreshButton: PropTypes.node.isRequired,
|
||||
subtitle: PropTypes.string.isRequired,
|
||||
};
|
||||
|
||||
export default Clients;
|
||||
|
||||
@@ -47,32 +47,32 @@ const Counters = ({ refreshButton, subtitle }) => {
|
||||
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,
|
||||
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,
|
||||
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,
|
||||
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,
|
||||
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,
|
||||
response_status: RESPONSE_FILTER.SAFE_SEARCH.QUERY,
|
||||
},
|
||||
{
|
||||
label: 'average_processing_time',
|
||||
|
||||
@@ -22,7 +22,30 @@
|
||||
border-bottom: 6px solid #585965;
|
||||
}
|
||||
|
||||
.card-chart-bg {
|
||||
left: -20px;
|
||||
width: calc(100% + 20px);
|
||||
@media (max-width: 1279.98px) {
|
||||
.table__action {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.page-title--dashboard {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.dashboard-title__button {
|
||||
margin: 0 0.5rem;
|
||||
}
|
||||
|
||||
@media (max-width: 767.98px) {
|
||||
.page-title--dashboard {
|
||||
flex-direction: column;
|
||||
align-items: flex-start;
|
||||
}
|
||||
|
||||
.dashboard-title__button {
|
||||
margin: 0.5rem 0;
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import React, { Component, Fragment } from 'react';
|
||||
import React, { useEffect } from 'react';
|
||||
import PropTypes from 'prop-types';
|
||||
import { Trans, withTranslation } from 'react-i18next';
|
||||
|
||||
import { Trans, useTranslation } from 'react-i18next';
|
||||
import classNames from 'classnames';
|
||||
import Statistics from './Statistics';
|
||||
import Counters from './Counters';
|
||||
import Clients from './Clients';
|
||||
@@ -10,147 +10,129 @@ 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 {
|
||||
componentDidMount() {
|
||||
this.getAllStats();
|
||||
}
|
||||
const Dashboard = ({
|
||||
getAccessList,
|
||||
getStats,
|
||||
getStatsConfig,
|
||||
dashboard,
|
||||
dashboard: { protectionEnabled, processingProtection },
|
||||
toggleProtection,
|
||||
stats,
|
||||
access,
|
||||
}) => {
|
||||
const { t } = useTranslation();
|
||||
|
||||
getAllStats = () => {
|
||||
this.props.getAccessList();
|
||||
this.props.getStats();
|
||||
this.props.getStatsConfig();
|
||||
const getAllStats = () => {
|
||||
getAccessList();
|
||||
getStats();
|
||||
getStatsConfig();
|
||||
};
|
||||
|
||||
getToggleFilteringButton = () => {
|
||||
const { protectionEnabled, processingProtection } = this.props.dashboard;
|
||||
const buttonText = protectionEnabled ? 'disable_protection' : 'enable_protection';
|
||||
const buttonClass = protectionEnabled ? 'btn-gray' : 'btn-success';
|
||||
useEffect(() => {
|
||||
getAllStats();
|
||||
}, []);
|
||||
|
||||
return (
|
||||
<button
|
||||
type="button"
|
||||
className={`btn btn-sm mr-2 ${buttonClass}`}
|
||||
onClick={() => this.props.toggleProtection(protectionEnabled)}
|
||||
disabled={processingProtection}
|
||||
>
|
||||
<Trans>{buttonText}</Trans>
|
||||
</button>
|
||||
);
|
||||
};
|
||||
const buttonText = protectionEnabled ? 'disable_protection' : 'enable_protection';
|
||||
|
||||
toggleClientStatus = (type, ip) => {
|
||||
const confirmMessage = type === BLOCK_ACTIONS.BLOCK ? 'client_confirm_block' : 'client_confirm_unblock';
|
||||
const buttonClass = classNames('btn btn-sm dashboard-title__button', {
|
||||
'btn-gray': protectionEnabled,
|
||||
'btn-success': !protectionEnabled,
|
||||
});
|
||||
|
||||
if (window.confirm(this.props.t(confirmMessage, { ip }))) {
|
||||
this.props.toggleClientBlock(type, ip);
|
||||
}
|
||||
};
|
||||
const refreshButton = <button
|
||||
type="button"
|
||||
className="btn btn-icon btn-outline-primary btn-sm"
|
||||
title={t('refresh_btn')}
|
||||
onClick={() => getAllStats()}
|
||||
>
|
||||
<svg className="icons">
|
||||
<use xlinkHref="#refresh" />
|
||||
</svg>
|
||||
</button>;
|
||||
|
||||
render() {
|
||||
const {
|
||||
dashboard, stats, access, t,
|
||||
} = this.props;
|
||||
const statsProcessing = stats.processingStats
|
||||
const subtitle = stats.interval === 1
|
||||
? t('for_last_24_hours')
|
||||
: t('for_last_days', { count: stats.interval });
|
||||
|
||||
const statsProcessing = stats.processingStats
|
||||
|| stats.processingGetConfig
|
||||
|| access.processing;
|
||||
|
||||
const subtitle = stats.interval === 1
|
||||
? t('for_last_24_hours')
|
||||
: t('for_last_days', { count: stats.interval });
|
||||
|
||||
const refreshFullButton = (
|
||||
return <>
|
||||
<PageTitle title={t('dashboard')} containerClass="page-title--dashboard">
|
||||
<button
|
||||
type="button"
|
||||
className="btn btn-outline-primary btn-sm"
|
||||
onClick={() => this.getAllStats()}
|
||||
type="button"
|
||||
className={buttonClass}
|
||||
onClick={() => toggleProtection(protectionEnabled)}
|
||||
disabled={processingProtection}
|
||||
>
|
||||
<Trans>{buttonText}</Trans>
|
||||
</button>
|
||||
<button
|
||||
type="button"
|
||||
className="btn btn-outline-primary btn-sm"
|
||||
onClick={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')}>
|
||||
<div className="page-title__actions">
|
||||
{this.getToggleFilteringButton()}
|
||||
{refreshFullButton}
|
||||
</div>
|
||||
</PageTitle>
|
||||
{statsProcessing && <Loading />}
|
||||
{!statsProcessing && (
|
||||
<div className="row row-cards">
|
||||
<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>
|
||||
</div>
|
||||
)}
|
||||
</Fragment>
|
||||
);
|
||||
}
|
||||
}
|
||||
</PageTitle>
|
||||
{statsProcessing && <Loading />}
|
||||
{!statsProcessing && <div className="row row-cards dashboard">
|
||||
<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}
|
||||
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>
|
||||
</div>}
|
||||
</>;
|
||||
};
|
||||
|
||||
Dashboard.propTypes = {
|
||||
dashboard: PropTypes.object.isRequired,
|
||||
@@ -160,9 +142,7 @@ Dashboard.propTypes = {
|
||||
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 withTranslation()(Dashboard);
|
||||
export default Dashboard;
|
||||
|
||||
@@ -4,29 +4,23 @@ 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"
|
||||
}) => <div className="card-actions">
|
||||
<button
|
||||
className="btn btn-success btn-standard mr-2 btn-large mb-2"
|
||||
type="submit"
|
||||
onClick={handleAdd}
|
||||
>
|
||||
{whitelist ? (
|
||||
<Trans>add_allowlist</Trans>
|
||||
) : (
|
||||
<Trans>add_blocklist</Trans>
|
||||
)}
|
||||
</button>
|
||||
<button
|
||||
className="btn btn-primary btn-standard"
|
||||
>
|
||||
{whitelist ? <Trans>add_allowlist</Trans> : <Trans>add_blocklist</Trans>}
|
||||
</button>
|
||||
<button
|
||||
className="btn btn-primary btn-standard mb-2"
|
||||
type="submit"
|
||||
onClick={handleRefresh}
|
||||
disabled={processingRefreshFilters}
|
||||
>
|
||||
<Trans>check_updates_btn</Trans>
|
||||
</button>
|
||||
</div>
|
||||
);
|
||||
>
|
||||
<Trans>check_updates_btn</Trans>
|
||||
</button>
|
||||
</div>;
|
||||
|
||||
Actions.propTypes = {
|
||||
handleAdd: PropTypes.func.isRequired,
|
||||
|
||||
@@ -1,165 +1,121 @@
|
||||
import React, { Fragment } from 'react';
|
||||
import PropTypes from 'prop-types';
|
||||
import { withTranslation } from 'react-i18next';
|
||||
import React from 'react';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import classNames from 'classnames';
|
||||
|
||||
import i18next from 'i18next';
|
||||
import { shallowEqual, useDispatch, useSelector } from 'react-redux';
|
||||
import {
|
||||
checkFiltered,
|
||||
checkRewrite,
|
||||
checkRewriteHosts,
|
||||
checkBlackList,
|
||||
checkNotFilteredNotFound,
|
||||
checkWhiteList,
|
||||
checkSafeSearch,
|
||||
checkSafeBrowsing,
|
||||
checkParental,
|
||||
getRulesToFilterList,
|
||||
} from '../../../helpers/helpers';
|
||||
import { FILTERED } from '../../../helpers/constants';
|
||||
import { BLOCK_ACTIONS, FILTERED, FILTERED_STATUS } from '../../../helpers/constants';
|
||||
import { toggleBlocking } from '../../../actions';
|
||||
|
||||
const getFilterName = (id, filters, whitelistFilters, t) => {
|
||||
if (id === 0) {
|
||||
return t('filtered_custom_rules');
|
||||
}
|
||||
const renderBlockingButton = (isFiltered, domain) => {
|
||||
const processingRules = useSelector((state) => state.filtering.processingRules);
|
||||
const dispatch = useDispatch();
|
||||
const { t } = useTranslation();
|
||||
|
||||
const filter = filters.find((filter) => filter.id === id)
|
||||
|| whitelistFilters.find((filter) => filter.id === id);
|
||||
const buttonType = isFiltered ? BLOCK_ACTIONS.UNBLOCK : BLOCK_ACTIONS.BLOCK;
|
||||
|
||||
if (filter && filter.name) {
|
||||
return t('query_log_filtered', { filter: filter.name });
|
||||
}
|
||||
const onClick = async () => {
|
||||
await dispatch(toggleBlocking(buttonType, domain));
|
||||
};
|
||||
|
||||
return '';
|
||||
const buttonClass = classNames('mt-3 button-action button-action--main button-action--active button-action--small', {
|
||||
'button-action--unblock': isFiltered,
|
||||
});
|
||||
|
||||
return <button type="button"
|
||||
className={buttonClass}
|
||||
onClick={onClick}
|
||||
disabled={processingRules}
|
||||
>
|
||||
{t(buttonType)}
|
||||
</button>;
|
||||
};
|
||||
|
||||
const getTitle = (reason, filterName, t, onlyFiltered) => {
|
||||
if (checkNotFilteredNotFound(reason)) {
|
||||
return t('check_not_found');
|
||||
}
|
||||
const getTitle = () => {
|
||||
const { t } = useTranslation();
|
||||
|
||||
if (checkRewrite(reason)) {
|
||||
return t('rewrite_applied');
|
||||
}
|
||||
const filters = useSelector((state) => state.filtering.filters, shallowEqual);
|
||||
const whitelistFilters = useSelector((state) => state.filtering.whitelistFilters, shallowEqual);
|
||||
const rules = useSelector((state) => state.filtering.check.rules, shallowEqual);
|
||||
const reason = useSelector((state) => state.filtering.check.reason);
|
||||
|
||||
if (checkRewriteHosts(reason)) {
|
||||
return t('rewrite_hosts_applied');
|
||||
}
|
||||
|
||||
if (checkBlackList(reason)) {
|
||||
return filterName;
|
||||
}
|
||||
|
||||
if (checkWhiteList(reason)) {
|
||||
return (
|
||||
<div>
|
||||
{filterName}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
if (onlyFiltered) {
|
||||
const getReasonFiltered = (reason) => {
|
||||
const filterKey = reason.replace(FILTERED, '');
|
||||
return i18next.t('query_log_filtered', { filter: filterKey });
|
||||
};
|
||||
|
||||
return (
|
||||
<div>
|
||||
{t('query_log_filtered', { filter: filterKey })}
|
||||
</div>
|
||||
);
|
||||
const ruleAndFilterNames = getRulesToFilterList(rules, filters, whitelistFilters);
|
||||
|
||||
const REASON_TO_TITLE_MAP = {
|
||||
[FILTERED_STATUS.NOT_FILTERED_NOT_FOUND]: t('check_not_found'),
|
||||
[FILTERED_STATUS.REWRITE]: t('rewrite_applied'),
|
||||
[FILTERED_STATUS.REWRITE_HOSTS]: t('rewrite_hosts_applied'),
|
||||
[FILTERED_STATUS.FILTERED_BLACK_LIST]: ruleAndFilterNames,
|
||||
[FILTERED_STATUS.NOT_FILTERED_WHITE_LIST]: ruleAndFilterNames,
|
||||
[FILTERED_STATUS.FILTERED_SAFE_SEARCH]: getReasonFiltered(reason),
|
||||
[FILTERED_STATUS.FILTERED_SAFE_BROWSING]: getReasonFiltered(reason),
|
||||
[FILTERED_STATUS.FILTERED_PARENTAL]: getReasonFiltered(reason),
|
||||
};
|
||||
|
||||
if (Object.prototype.hasOwnProperty.call(REASON_TO_TITLE_MAP, reason)) {
|
||||
return REASON_TO_TITLE_MAP[reason];
|
||||
}
|
||||
|
||||
return (
|
||||
<Fragment>
|
||||
<div>
|
||||
{t('check_reason', { reason })}
|
||||
</div>
|
||||
<div>
|
||||
{filterName}
|
||||
</div>
|
||||
</Fragment>
|
||||
);
|
||||
return <>
|
||||
<div>{t('check_reason', { reason })}</div>
|
||||
<div>
|
||||
{t('rule_label')}:
|
||||
|
||||
{ruleAndFilterNames}
|
||||
</div>
|
||||
</>;
|
||||
};
|
||||
|
||||
const getColor = (reason) => {
|
||||
if (checkFiltered(reason)) {
|
||||
return 'red';
|
||||
} if (checkRewrite(reason) || checkRewriteHosts(reason)) {
|
||||
return 'blue';
|
||||
} if (checkWhiteList(reason)) {
|
||||
return 'green';
|
||||
}
|
||||
const Info = () => {
|
||||
const {
|
||||
hostname,
|
||||
reason,
|
||||
service_name,
|
||||
cname,
|
||||
ip_addrs,
|
||||
} = useSelector((state) => state.filtering.check, shallowEqual);
|
||||
const { t } = useTranslation();
|
||||
|
||||
return '';
|
||||
};
|
||||
const title = getTitle();
|
||||
|
||||
const className = classNames('card mb-0 p-3', {
|
||||
'logs__row--red': checkFiltered(reason),
|
||||
'logs__row--blue': checkRewrite(reason) || checkRewriteHosts(reason),
|
||||
'logs__row--green': checkWhiteList(reason),
|
||||
});
|
||||
|
||||
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>
|
||||
const isFiltered = checkFiltered(reason);
|
||||
|
||||
<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>
|
||||
);
|
||||
return <div className={className}>
|
||||
<div><strong>{hostname}</strong></div>
|
||||
<div>{title}</div>
|
||||
{!onlyFiltered
|
||||
&& <>
|
||||
{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>}
|
||||
{renderBlockingButton(isFiltered, hostname)}
|
||||
</>}
|
||||
</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);
|
||||
export default Info;
|
||||
|
||||
@@ -1,99 +1,66 @@
|
||||
import React, { Fragment } from 'react';
|
||||
import React from 'react';
|
||||
import PropTypes from 'prop-types';
|
||||
import { Trans, withTranslation } from 'react-i18next';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { Field, reduxForm } from 'redux-form';
|
||||
import flow from 'lodash/flow';
|
||||
import { useSelector } from 'react-redux';
|
||||
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,
|
||||
handleSubmit,
|
||||
} = props;
|
||||
|
||||
const {
|
||||
hostname,
|
||||
reason,
|
||||
filter_id,
|
||||
rule,
|
||||
service_name,
|
||||
cname,
|
||||
ip_addrs,
|
||||
} = check;
|
||||
const { t } = useTranslation();
|
||||
|
||||
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>
|
||||
)}
|
||||
const processingCheck = useSelector((state) => state.filtering.processingCheck);
|
||||
const hostname = useSelector((state) => state.filtering.check.hostname);
|
||||
|
||||
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 || processingCheck}
|
||||
>
|
||||
{t('check')}
|
||||
</button>
|
||||
</span>
|
||||
</div>
|
||||
{hostname && <>
|
||||
<hr />
|
||||
<Info />
|
||||
</>}
|
||||
</div>
|
||||
</form>
|
||||
</Card>
|
||||
);
|
||||
</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);
|
||||
export default reduxForm({ form: FORM_NAME.DOMAIN_CHECK })(Check);
|
||||
|
||||
@@ -1,13 +1,18 @@
|
||||
import React, { Component, Fragment } from 'react';
|
||||
import React, { Component } from 'react';
|
||||
import PropTypes from 'prop-types';
|
||||
import { Trans, withTranslation } from 'react-i18next';
|
||||
|
||||
import classnames from 'classnames';
|
||||
import Card from '../ui/Card';
|
||||
import PageTitle from '../ui/PageTitle';
|
||||
import Examples from './Examples';
|
||||
import Check from './Check';
|
||||
import { getTextareaCommentsHighlight, syncScroll } from '../../helpers/highlightTextareaComments';
|
||||
import { COMMENT_LINE_DEFAULT_TOKEN, isFirefox } from '../../helpers/constants';
|
||||
import '../ui/texareaCommentsHighlight.css';
|
||||
|
||||
class CustomRules extends Component {
|
||||
ref = React.createRef();
|
||||
|
||||
componentDidMount() {
|
||||
this.props.getFilteringStatus();
|
||||
}
|
||||
@@ -34,30 +39,42 @@ class CustomRules extends Component {
|
||||
this.props.checkHost(values);
|
||||
};
|
||||
|
||||
onScroll = (e) => syncScroll(e, this.ref)
|
||||
|
||||
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}>
|
||||
<div className={classnames('col-12 text-edit-container form-control--textarea-large', {
|
||||
'mb-4': !isFirefox,
|
||||
'mb-6': isFirefox,
|
||||
})}>
|
||||
<textarea
|
||||
className="form-control form-control--textarea-large font-monospace"
|
||||
value={userRules}
|
||||
onChange={this.handleChange}
|
||||
className={classnames('form-control font-monospace text-input form-control--textarea-large', {
|
||||
'text-input--largest': isFirefox,
|
||||
})}
|
||||
value={userRules}
|
||||
onChange={this.handleChange}
|
||||
onScroll={this.onScroll}
|
||||
/>
|
||||
{getTextareaCommentsHighlight(
|
||||
this.ref,
|
||||
userRules,
|
||||
classnames({ 'form-control--textarea-large': isFirefox }),
|
||||
[COMMENT_LINE_DEFAULT_TOKEN, '!'],
|
||||
)}
|
||||
</div>
|
||||
<div className="card-actions">
|
||||
<button
|
||||
className="btn btn-success btn-standard btn-large"
|
||||
@@ -71,14 +88,8 @@ class CustomRules extends Component {
|
||||
<hr />
|
||||
<Examples />
|
||||
</Card>
|
||||
<Check
|
||||
filters={filters}
|
||||
whitelistFilters={whitelistFilters}
|
||||
check={check}
|
||||
onSubmit={this.handleCheck}
|
||||
processing={processingCheck}
|
||||
/>
|
||||
</Fragment>
|
||||
<Check onSubmit={this.handleCheck} />
|
||||
</>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,7 +23,7 @@ class DnsBlocklist extends Component {
|
||||
}
|
||||
|
||||
handleSubmit = (values, _, { initialValues }) => {
|
||||
const { filtering: { modalFilterUrl, modalType } } = this.props;
|
||||
const { modalFilterUrl, modalType } = this.props.filtering;
|
||||
|
||||
switch (modalType) {
|
||||
case MODAL_TYPE.EDIT_FILTERS:
|
||||
|
||||
@@ -5,9 +5,11 @@ 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 { CheckboxField, renderInputField } from '../../helpers/form';
|
||||
import { MODAL_OPEN_TIMEOUT, MODAL_TYPE, FORM_NAME } from '../../helpers/constants';
|
||||
|
||||
const filtersCatalog = require('../../helpers/filters/filters.json');
|
||||
|
||||
const getIconsData = (homepage, source) => ([
|
||||
{
|
||||
iconName: 'dashboard',
|
||||
@@ -32,6 +34,22 @@ const renderIcons = (iconsData) => iconsData.map(({
|
||||
</svg>
|
||||
</a>);
|
||||
|
||||
const renderCheckboxField = (
|
||||
props,
|
||||
) => <CheckboxField
|
||||
{...props}
|
||||
input={{
|
||||
...props.input,
|
||||
checked: props.disabled || props.input.checked,
|
||||
}}
|
||||
/>;
|
||||
|
||||
renderCheckboxField.propTypes = {
|
||||
// https://redux-form.com/8.3.0/docs/api/field.md/#props
|
||||
input: PropTypes.object.isRequired,
|
||||
disabled: PropTypes.bool.isRequired,
|
||||
};
|
||||
|
||||
const renderFilters = ({ categories, filters }, selectedSources, t) => Object.keys(categories)
|
||||
.map((categoryId) => {
|
||||
const category = categories[categoryId];
|
||||
@@ -58,12 +76,11 @@ const renderFilters = ({ categories, filters }, selectedSources, t) => Object.ke
|
||||
|
||||
return <div key={name} className="d-flex align-items-center pb-1">
|
||||
<Field
|
||||
name={`${filter.id}`}
|
||||
name={filter.id}
|
||||
type="checkbox"
|
||||
component={renderSelectField}
|
||||
component={renderCheckboxField}
|
||||
placeholder={t(name)}
|
||||
disabled={isSelected}
|
||||
checked={isSelected}
|
||||
/>
|
||||
{renderIcons(iconsData)}
|
||||
</div>;
|
||||
@@ -82,7 +99,6 @@ const Form = (props) => {
|
||||
modalType,
|
||||
toggleFilteringModal,
|
||||
selectedSources,
|
||||
filtersCatalog,
|
||||
} = props;
|
||||
|
||||
const openModal = (modalType, timeout = MODAL_OPEN_TIMEOUT) => {
|
||||
@@ -148,13 +164,13 @@ const Form = (props) => {
|
||||
>
|
||||
{t('cancel_btn')}
|
||||
</button>
|
||||
<button
|
||||
{modalType !== MODAL_TYPE.SELECT_MODAL_TYPE && <button
|
||||
type="submit"
|
||||
className="btn btn-success"
|
||||
disabled={processingAddFilter || processingConfigFilter}
|
||||
>
|
||||
{t('save_btn')}
|
||||
</button>
|
||||
</button>}
|
||||
</div>
|
||||
</form>;
|
||||
};
|
||||
@@ -168,7 +184,6 @@ Form.propTypes = {
|
||||
whitelist: PropTypes.bool,
|
||||
modalType: PropTypes.string.isRequired,
|
||||
toggleFilteringModal: PropTypes.func.isRequired,
|
||||
filtersCatalog: PropTypes.object,
|
||||
selectedSources: PropTypes.object,
|
||||
};
|
||||
|
||||
|
||||
@@ -78,6 +78,7 @@ class Modal extends Component {
|
||||
break;
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
const title = t(getTitle(modalType, whitelist));
|
||||
@@ -99,7 +100,6 @@ class Modal extends Component {
|
||||
<Form
|
||||
selectedSources={selectedSources}
|
||||
initialValues={initialValues}
|
||||
filtersCatalog={filtersCatalog}
|
||||
modalType={modalType}
|
||||
onSubmit={handleSubmit}
|
||||
processingAddFilter={processingAddFilter}
|
||||
|
||||
@@ -2,6 +2,7 @@ import React, { Component } from 'react';
|
||||
import PropTypes from 'prop-types';
|
||||
import ReactTable from 'react-table';
|
||||
import { withTranslation } from 'react-i18next';
|
||||
import { sortIp } from '../../../helpers/helpers';
|
||||
|
||||
class Table extends Component {
|
||||
cellWrap = ({ value }) => (
|
||||
@@ -21,6 +22,7 @@ class Table extends Component {
|
||||
{
|
||||
Header: this.props.t('answer'),
|
||||
accessor: 'answer',
|
||||
sortMethod: sortIp,
|
||||
Cell: this.cellWrap,
|
||||
},
|
||||
{
|
||||
|
||||
@@ -48,7 +48,7 @@ class Table extends Component {
|
||||
accessor: 'url',
|
||||
minWidth: 200,
|
||||
Cell: ({ value }) => (
|
||||
<div className="logs__row o-hidden">
|
||||
<div className="logs__row">
|
||||
{isValidAbsolutePath(value) ? value
|
||||
: <a
|
||||
href={value}
|
||||
|
||||
@@ -164,6 +164,10 @@
|
||||
color: #9aa0ac;
|
||||
}
|
||||
|
||||
.nav-icon--white {
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.header-brand-img {
|
||||
height: 32px;
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import React, { useState } from 'react';
|
||||
import { Link, useLocation } from 'react-router-dom';
|
||||
import { shallowEqual, useSelector } from 'react-redux';
|
||||
import { Trans } from 'react-i18next';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import classnames from 'classnames';
|
||||
import Menu from './Menu';
|
||||
import logo from '../ui/svg/logo.svg';
|
||||
@@ -9,6 +9,7 @@ import './Header.css';
|
||||
|
||||
const Header = () => {
|
||||
const [isMenuOpen, setIsMenuOpen] = useState(false);
|
||||
const { t } = useTranslation();
|
||||
|
||||
const {
|
||||
protectionEnabled,
|
||||
@@ -33,45 +34,42 @@ const Header = () => {
|
||||
'badge-danger': !protectionEnabled,
|
||||
});
|
||||
|
||||
return (
|
||||
<div className="header">
|
||||
<div className="header__container">
|
||||
<div className="header__row">
|
||||
<div
|
||||
className="header-toggler d-lg-none ml-lg-0 collapsed"
|
||||
onClick={toggleMenuOpen}
|
||||
>
|
||||
<span className="header-toggler-icon" />
|
||||
return <div className="header">
|
||||
<div className="header__container">
|
||||
<div className="header__row">
|
||||
<div
|
||||
className="header-toggler d-lg-none ml-lg-0 collapsed"
|
||||
onClick={toggleMenuOpen}
|
||||
>
|
||||
<span className="header-toggler-icon" />
|
||||
</div>
|
||||
<div className="header__column">
|
||||
<div className="d-flex align-items-center">
|
||||
<Link to="/" className="nav-link pl-0 pr-1">
|
||||
<img src={logo} alt="AdGuard Home logo" className="header-brand-img" />
|
||||
</Link>
|
||||
{!processing && isCoreRunning
|
||||
&& <span className={badgeClass}
|
||||
>{t(protectionEnabled ? 'on' : 'off')}
|
||||
</span>}
|
||||
</div>
|
||||
<div className="header__column">
|
||||
<div className="d-flex align-items-center">
|
||||
<Link to="/" className="nav-link pl-0 pr-1">
|
||||
<img src={logo} alt="" className="header-brand-img" />
|
||||
</Link>
|
||||
{!processing && isCoreRunning && (
|
||||
<span className={badgeClass}>
|
||||
<Trans>{protectionEnabled ? 'on' : 'off'}</Trans>
|
||||
</span>
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
<Menu
|
||||
pathname={pathname}
|
||||
isMenuOpen={isMenuOpen}
|
||||
closeMenu={closeMenu}
|
||||
/>
|
||||
<div className="header__column">
|
||||
<div className="header__right">
|
||||
{!processingProfile && name
|
||||
&& <a href="control/logout" className="btn btn-sm btn-outline-secondary">
|
||||
<Trans>sign_out</Trans>
|
||||
</a>}
|
||||
</div>
|
||||
</div>
|
||||
<Menu
|
||||
pathname={pathname}
|
||||
isMenuOpen={isMenuOpen}
|
||||
closeMenu={closeMenu}
|
||||
/>
|
||||
<div className="header__column">
|
||||
<div className="header__right">
|
||||
{!processingProfile && name
|
||||
&& <a href="control/logout" className="btn btn-sm btn-outline-secondary">
|
||||
{t('sign_out')}
|
||||
</a>}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
</div>;
|
||||
};
|
||||
|
||||
export default Header;
|
||||
|
||||
219
client/src/components/Logs/Cells/ClientCell.js
Normal file
219
client/src/components/Logs/Cells/ClientCell.js
Normal file
@@ -0,0 +1,219 @@
|
||||
import React, { useState } from 'react';
|
||||
import { shallowEqual, useDispatch, useSelector } from 'react-redux';
|
||||
import { nanoid } from 'nanoid';
|
||||
import classNames from 'classnames';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import propTypes from 'prop-types';
|
||||
import { checkFiltered, getBlockingClientName } from '../../../helpers/helpers';
|
||||
import { BLOCK_ACTIONS } from '../../../helpers/constants';
|
||||
import { toggleBlocking, toggleBlockingForClient } from '../../../actions';
|
||||
import IconTooltip from './IconTooltip';
|
||||
import { renderFormattedClientCell } from '../../../helpers/renderFormattedClientCell';
|
||||
import { toggleClientBlock } from '../../../actions/access';
|
||||
import { getBlockClientInfo } from './helpers';
|
||||
import { getStats } from '../../../actions/stats';
|
||||
import { updateLogs } from '../../../actions/queryLogs';
|
||||
|
||||
const ClientCell = ({
|
||||
client,
|
||||
client_id,
|
||||
domain,
|
||||
info,
|
||||
info: {
|
||||
name, whois_info, disallowed, disallowed_rule,
|
||||
},
|
||||
reason,
|
||||
}) => {
|
||||
const { t } = useTranslation();
|
||||
const dispatch = useDispatch();
|
||||
const autoClients = useSelector((state) => state.dashboard.autoClients, shallowEqual);
|
||||
const processingRules = useSelector((state) => state.filtering.processingRules);
|
||||
const isDetailed = useSelector((state) => state.queryLogs.isDetailed);
|
||||
const [isOptionsOpened, setOptionsOpened] = useState(false);
|
||||
|
||||
const autoClient = autoClients.find((autoClient) => autoClient.name === client);
|
||||
const source = autoClient?.source;
|
||||
const whoisAvailable = whois_info && Object.keys(whois_info).length > 0;
|
||||
const clientName = name || client_id;
|
||||
const clientInfo = { ...info, name: clientName };
|
||||
|
||||
const id = nanoid();
|
||||
|
||||
const data = {
|
||||
address: client,
|
||||
name: clientName,
|
||||
country: whois_info?.country,
|
||||
city: whois_info?.city,
|
||||
network: whois_info?.orgname,
|
||||
source_label: source,
|
||||
};
|
||||
|
||||
const processedData = Object.entries(data);
|
||||
|
||||
const isFiltered = checkFiltered(reason);
|
||||
|
||||
const nameClass = classNames('w-90 o-hidden d-flex flex-column', {
|
||||
'mt-2': isDetailed && !name && !whoisAvailable,
|
||||
'white-space--nowrap': isDetailed,
|
||||
});
|
||||
|
||||
const hintClass = classNames('icons mr-4 icon--24 icon--lightgray', {
|
||||
'my-3': isDetailed,
|
||||
});
|
||||
|
||||
const renderBlockingButton = (isFiltered, domain) => {
|
||||
const buttonType = isFiltered ? BLOCK_ACTIONS.UNBLOCK : BLOCK_ACTIONS.BLOCK;
|
||||
const clients = useSelector((state) => state.dashboard.clients);
|
||||
|
||||
const {
|
||||
confirmMessage,
|
||||
buttonKey: blockingClientKey,
|
||||
isNotInAllowedList,
|
||||
} = getBlockClientInfo(client, disallowed, disallowed_rule);
|
||||
|
||||
const blockingForClientKey = isFiltered ? 'unblock_for_this_client_only' : 'block_for_this_client_only';
|
||||
const clientNameBlockingFor = getBlockingClientName(clients, client);
|
||||
|
||||
const BUTTON_OPTIONS = [
|
||||
{
|
||||
name: blockingForClientKey,
|
||||
onClick: () => {
|
||||
dispatch(toggleBlockingForClient(buttonType, domain, clientNameBlockingFor));
|
||||
},
|
||||
},
|
||||
{
|
||||
name: blockingClientKey,
|
||||
onClick: async () => {
|
||||
if (window.confirm(confirmMessage)) {
|
||||
await dispatch(toggleClientBlock(client, disallowed, disallowed_rule));
|
||||
await dispatch(updateLogs());
|
||||
}
|
||||
},
|
||||
disabled: isNotInAllowedList,
|
||||
},
|
||||
];
|
||||
|
||||
const onClick = async () => {
|
||||
await dispatch(toggleBlocking(buttonType, domain));
|
||||
await dispatch(getStats());
|
||||
};
|
||||
|
||||
const getOptions = (options) => {
|
||||
if (options.length === 0) {
|
||||
return null;
|
||||
}
|
||||
return (
|
||||
<>
|
||||
{options.map(({ name, onClick, disabled }) => (
|
||||
<button
|
||||
key={name}
|
||||
className="button-action--arrow-option px-4 py-2"
|
||||
onClick={onClick}
|
||||
disabled={disabled}
|
||||
>
|
||||
{t(name)}
|
||||
</button>
|
||||
))}
|
||||
</>
|
||||
);
|
||||
};
|
||||
|
||||
const content = getOptions(BUTTON_OPTIONS);
|
||||
|
||||
const buttonClass = classNames('button-action button-action--main', {
|
||||
'button-action--unblock': isFiltered,
|
||||
'button-action--with-options': content,
|
||||
'button-action--active': isOptionsOpened,
|
||||
});
|
||||
|
||||
const buttonArrowClass = classNames('button-action button-action--arrow', {
|
||||
'button-action--unblock': isFiltered,
|
||||
'button-action--active': isOptionsOpened,
|
||||
});
|
||||
|
||||
const containerClass = classNames('button-action__container', {
|
||||
'button-action__container--detailed': isDetailed,
|
||||
});
|
||||
|
||||
return (
|
||||
<div className={containerClass}>
|
||||
<button
|
||||
type="button"
|
||||
className={buttonClass}
|
||||
onClick={onClick}
|
||||
disabled={processingRules}
|
||||
>
|
||||
{t(buttonType)}
|
||||
</button>
|
||||
{content && (
|
||||
<button className={buttonArrowClass} disabled={processingRules}>
|
||||
<IconTooltip
|
||||
className="h-100"
|
||||
tooltipClass="button-action--arrow-option-container"
|
||||
xlinkHref="chevron-down"
|
||||
triggerClass="button-action--icon"
|
||||
content={content}
|
||||
placement="bottom-end"
|
||||
trigger="click"
|
||||
onVisibilityChange={setOptionsOpened}
|
||||
/>
|
||||
</button>
|
||||
)}
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
return (
|
||||
<div
|
||||
className="o-hidden h-100 logs__cell logs__cell--client"
|
||||
role="gridcell"
|
||||
>
|
||||
<IconTooltip
|
||||
className={hintClass}
|
||||
columnClass="grid grid--limited"
|
||||
tooltipClass="px-5 pb-5 pt-4"
|
||||
xlinkHref="question"
|
||||
contentItemClass="text-truncate key-colon o-hidden"
|
||||
title="client_details"
|
||||
content={processedData}
|
||||
placement="bottom"
|
||||
/>
|
||||
<div className={nameClass}>
|
||||
<div data-tip={true} data-for={id}>
|
||||
{renderFormattedClientCell(client, clientInfo, isDetailed, true)}
|
||||
</div>
|
||||
{isDetailed && clientName && !whoisAvailable && (
|
||||
<div
|
||||
className="detailed-info d-none d-sm-block logs__text"
|
||||
title={clientName}
|
||||
>
|
||||
{clientName}
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
{renderBlockingButton(isFiltered, domain)}
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
ClientCell.propTypes = {
|
||||
client: propTypes.string.isRequired,
|
||||
client_id: propTypes.string,
|
||||
domain: propTypes.string.isRequired,
|
||||
info: propTypes.oneOfType([
|
||||
propTypes.string,
|
||||
propTypes.shape({
|
||||
name: propTypes.string.isRequired,
|
||||
whois_info: propTypes.shape({
|
||||
country: propTypes.string,
|
||||
city: propTypes.string,
|
||||
orgname: propTypes.string,
|
||||
}),
|
||||
disallowed: propTypes.bool.isRequired,
|
||||
disallowed_rule: propTypes.string.isRequired,
|
||||
}),
|
||||
]),
|
||||
reason: propTypes.string.isRequired,
|
||||
};
|
||||
|
||||
export default ClientCell;
|
||||
29
client/src/components/Logs/Cells/DateCell.js
Normal file
29
client/src/components/Logs/Cells/DateCell.js
Normal file
@@ -0,0 +1,29 @@
|
||||
import React from 'react';
|
||||
import { useSelector } from 'react-redux';
|
||||
import propTypes from 'prop-types';
|
||||
import { formatDateTime, formatTime } from '../../../helpers/helpers';
|
||||
import { DEFAULT_SHORT_DATE_FORMAT_OPTIONS, DEFAULT_TIME_FORMAT } from '../../../helpers/constants';
|
||||
|
||||
const DateCell = ({ time }) => {
|
||||
const isDetailed = useSelector((state) => state.queryLogs.isDetailed);
|
||||
|
||||
if (!time) {
|
||||
return '–';
|
||||
}
|
||||
|
||||
const formattedTime = formatTime(time, DEFAULT_TIME_FORMAT);
|
||||
const formattedDate = formatDateTime(time, DEFAULT_SHORT_DATE_FORMAT_OPTIONS);
|
||||
|
||||
return <div className="logs__cell logs__cell logs__cell--date text-truncate" role="gridcell">
|
||||
<div className="logs__time" title={formattedTime}>{formattedTime}</div>
|
||||
{isDetailed
|
||||
&& <div className="detailed-info d-none d-sm-block text-truncate"
|
||||
title={formattedDate}>{formattedDate}</div>}
|
||||
</div>;
|
||||
};
|
||||
|
||||
DateCell.propTypes = {
|
||||
time: propTypes.string.isRequired,
|
||||
};
|
||||
|
||||
export default DateCell;
|
||||
@@ -1,7 +1,8 @@
|
||||
import React from 'react';
|
||||
import { useSelector } from 'react-redux';
|
||||
import classNames from 'classnames';
|
||||
import PropTypes from 'prop-types';
|
||||
import getIconTooltip from './getIconTooltip';
|
||||
import propTypes from 'prop-types';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import {
|
||||
DEFAULT_SHORT_DATE_FORMAT_OPTIONS,
|
||||
LONG_TIME_FORMAT,
|
||||
@@ -9,15 +10,19 @@ import {
|
||||
} from '../../../helpers/constants';
|
||||
import { captitalizeWords, formatDateTime, formatTime } from '../../../helpers/helpers';
|
||||
import { getSourceData } from '../../../helpers/trackers/trackers';
|
||||
import IconTooltip from './IconTooltip';
|
||||
|
||||
const getDomainCell = (props) => {
|
||||
const {
|
||||
row, t, isDetailed, dnssec_enabled,
|
||||
} = props;
|
||||
|
||||
const {
|
||||
tracker, type, answer_dnssec, client_proto, domain, time,
|
||||
} = row.original;
|
||||
const DomainCell = ({
|
||||
answer_dnssec,
|
||||
client_proto,
|
||||
domain,
|
||||
time,
|
||||
tracker,
|
||||
type,
|
||||
}) => {
|
||||
const { t } = useTranslation();
|
||||
const dnssec_enabled = useSelector((state) => state.dnsConfig.dnssec_enabled);
|
||||
const isDetailed = useSelector((state) => state.queryLogs.isDetailed);
|
||||
|
||||
const hasTracker = !!tracker;
|
||||
|
||||
@@ -50,8 +55,8 @@ const getDomainCell = (props) => {
|
||||
name_table_header: tracker?.name,
|
||||
category_label: hasTracker && captitalizeWords(tracker.category),
|
||||
source_label: sourceData
|
||||
&& <a href={sourceData.url} target="_blank" rel="noopener noreferrer"
|
||||
className="link--green">{sourceData.name}</a>,
|
||||
&& <a href={sourceData.url} target="_blank" rel="noopener noreferrer"
|
||||
className="link--green">{sourceData.name}</a>,
|
||||
};
|
||||
|
||||
const renderGrid = (content, idx) => {
|
||||
@@ -72,51 +77,42 @@ const getDomainCell = (props) => {
|
||||
|
||||
const renderContent = hasTracker ? requestDetails.concat(getGrid(knownTrackerDataObj, 'known_tracker', 'pt-4')) : requestDetails;
|
||||
|
||||
const trackerHint = getIconTooltip({
|
||||
className: privacyIconClass,
|
||||
tooltipClass: 'pt-4 pb-5 px-5 mw-75',
|
||||
xlinkHref: 'privacy',
|
||||
contentItemClass: 'key-colon',
|
||||
renderContent,
|
||||
place: 'bottom',
|
||||
});
|
||||
|
||||
const valueClass = classNames('w-100', {
|
||||
const valueClass = classNames('w-100 text-truncate', {
|
||||
'px-2 d-flex justify-content-center flex-column': isDetailed,
|
||||
});
|
||||
|
||||
const details = [ip, protocol].filter(Boolean)
|
||||
.join(', ');
|
||||
|
||||
return (
|
||||
<div className="logs__row o-hidden">
|
||||
{dnssec_enabled && getIconTooltip({
|
||||
className: lockIconClass,
|
||||
tooltipClass: 'py-4 px-5 pb-45',
|
||||
canShowTooltip: answer_dnssec,
|
||||
xlinkHref: 'lock',
|
||||
columnClass: 'w-100',
|
||||
content: 'validated_with_dnssec',
|
||||
placement: 'bottom',
|
||||
})}
|
||||
{trackerHint}
|
||||
<div className={valueClass}>
|
||||
<div className="text-truncate" title={domain}>{domain}</div>
|
||||
{details && isDetailed
|
||||
&& <div className="detailed-info d-none d-sm-block text-truncate"
|
||||
title={details}>{details}</div>}
|
||||
</div>
|
||||
return <div className="d-flex o-hidden logs__cell logs__cell logs__cell--domain" role="gridcell">
|
||||
{dnssec_enabled && <IconTooltip
|
||||
className={lockIconClass}
|
||||
tooltipClass='py-4 px-5 pb-45'
|
||||
canShowTooltip={!!answer_dnssec}
|
||||
xlinkHref='lock'
|
||||
columnClass='w-100'
|
||||
content='validated_with_dnssec'
|
||||
placement='bottom'
|
||||
/>}
|
||||
<IconTooltip className={privacyIconClass} tooltipClass='pt-4 pb-5 px-5 mw-75'
|
||||
xlinkHref='privacy' contentItemClass='key-colon' renderContent={renderContent}
|
||||
place='bottom' />
|
||||
<div className={valueClass}>
|
||||
<div className="text-truncate" title={domain}>{domain}</div>
|
||||
{details && isDetailed
|
||||
&& <div className="detailed-info d-none d-sm-block text-truncate"
|
||||
title={details}>{details}</div>}
|
||||
</div>
|
||||
);
|
||||
</div>;
|
||||
};
|
||||
|
||||
getDomainCell.propTypes = {
|
||||
row: PropTypes.object.isRequired,
|
||||
t: PropTypes.func.isRequired,
|
||||
isDetailed: PropTypes.bool.isRequired,
|
||||
toggleBlocking: PropTypes.func.isRequired,
|
||||
autoClients: PropTypes.array.isRequired,
|
||||
dnssec_enabled: PropTypes.bool.isRequired,
|
||||
DomainCell.propTypes = {
|
||||
answer_dnssec: propTypes.bool.isRequired,
|
||||
client_proto: propTypes.string.isRequired,
|
||||
domain: propTypes.string.isRequired,
|
||||
time: propTypes.string.isRequired,
|
||||
type: propTypes.string.isRequired,
|
||||
tracker: propTypes.object,
|
||||
};
|
||||
|
||||
export default getDomainCell;
|
||||
export default DomainCell;
|
||||
54
client/src/components/Logs/Cells/Header.js
Normal file
54
client/src/components/Logs/Cells/Header.js
Normal file
@@ -0,0 +1,54 @@
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { useDispatch, useSelector } from 'react-redux';
|
||||
import classNames from 'classnames';
|
||||
import React from 'react';
|
||||
import { toggleDetailedLogs } from '../../../actions/queryLogs';
|
||||
import HeaderCell from './HeaderCell';
|
||||
|
||||
const Header = () => {
|
||||
const { t } = useTranslation();
|
||||
const dispatch = useDispatch();
|
||||
const isDetailed = useSelector((state) => state.queryLogs.isDetailed);
|
||||
const disableDetailedMode = () => dispatch(toggleDetailedLogs(false));
|
||||
const enableDetailedMode = () => dispatch(toggleDetailedLogs(true));
|
||||
|
||||
const HEADERS = [
|
||||
{
|
||||
className: 'logs__cell--date',
|
||||
content: 'time_table_header',
|
||||
},
|
||||
{
|
||||
className: 'logs__cell--domain',
|
||||
content: 'request_table_header',
|
||||
},
|
||||
{
|
||||
className: 'logs__cell--response',
|
||||
content: 'response_table_header',
|
||||
},
|
||||
{
|
||||
className: 'logs__cell--client',
|
||||
content: <>
|
||||
{t('client_table_header')}
|
||||
{<span>
|
||||
<svg className={classNames('icons icon--24 icon--green cursor--pointer mr-2', { 'icon--selected': !isDetailed })}
|
||||
onClick={disableDetailedMode}
|
||||
>
|
||||
<title>{t('compact')}</title>
|
||||
<use xlinkHref='#list' /></svg>
|
||||
<svg className={classNames('icons icon--24 icon--green cursor--pointer', { 'icon--selected': isDetailed })}
|
||||
onClick={enableDetailedMode}
|
||||
>
|
||||
<title>{t('default')}</title>
|
||||
<use xlinkHref='#detailed_list' />
|
||||
</svg>
|
||||
</span>}
|
||||
</>,
|
||||
},
|
||||
];
|
||||
|
||||
return <div className="logs__cell--header__container px-5" role="row">
|
||||
{HEADERS.map(HeaderCell)}
|
||||
</div>;
|
||||
};
|
||||
|
||||
export default Header;
|
||||
22
client/src/components/Logs/Cells/HeaderCell.js
Normal file
22
client/src/components/Logs/Cells/HeaderCell.js
Normal file
@@ -0,0 +1,22 @@
|
||||
import classNames from 'classnames';
|
||||
import React from 'react';
|
||||
import propTypes from 'prop-types';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
|
||||
const HeaderCell = ({ content, className }, idx) => {
|
||||
const { t } = useTranslation();
|
||||
return <div
|
||||
key={idx}
|
||||
className={classNames('logs__cell--header__item logs__cell logs__text--bold', className)}
|
||||
role="columnheader"
|
||||
>
|
||||
{typeof content === 'string' ? t(content) : content}
|
||||
</div>;
|
||||
};
|
||||
|
||||
HeaderCell.propTypes = {
|
||||
content: propTypes.oneOfType([propTypes.string, propTypes.element]).isRequired,
|
||||
className: propTypes.string,
|
||||
};
|
||||
|
||||
export default HeaderCell;
|
||||
@@ -35,7 +35,7 @@
|
||||
}
|
||||
|
||||
.grid--title {
|
||||
font-weight: bold;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.grid--title:not(:first-child) {
|
||||
@@ -65,12 +65,12 @@
|
||||
}
|
||||
|
||||
.grid .key-colon, .grid .title--border {
|
||||
font-weight: bold;
|
||||
font-weight: 600;
|
||||
}
|
||||
}
|
||||
|
||||
.grid .key-colon:nth-child(odd)::after {
|
||||
content: ':';
|
||||
content: ":";
|
||||
}
|
||||
|
||||
.grid__one-row {
|
||||
@@ -95,7 +95,7 @@
|
||||
}
|
||||
|
||||
.title--border:before {
|
||||
content: '';
|
||||
content: "";
|
||||
position: absolute;
|
||||
left: 0;
|
||||
border-top: 0.5px solid var(--gray-d8) !important;
|
||||
|
||||
@@ -6,17 +6,21 @@ import { processContent } from '../../../helpers/helpers';
|
||||
import Tooltip from '../../ui/Tooltip';
|
||||
import 'react-popper-tooltip/dist/styles.css';
|
||||
import './IconTooltip.css';
|
||||
import { SHOW_TOOLTIP_DELAY } from '../../../helpers/constants';
|
||||
|
||||
const getIconTooltip = ({
|
||||
const IconTooltip = ({
|
||||
className,
|
||||
contentItemClass,
|
||||
columnClass,
|
||||
triggerClass,
|
||||
canShowTooltip = true,
|
||||
xlinkHref,
|
||||
title,
|
||||
placement,
|
||||
tooltipClass,
|
||||
content,
|
||||
trigger,
|
||||
onVisibilityChange,
|
||||
renderContent = content ? React.Children.map(
|
||||
processContent(content),
|
||||
(item, idx) => <div key={idx} className={contentItemClass}>
|
||||
@@ -36,6 +40,10 @@ const getIconTooltip = ({
|
||||
className={tooltipClassName}
|
||||
content={tooltipContent}
|
||||
placement={placement}
|
||||
triggerClass={triggerClass}
|
||||
trigger={trigger}
|
||||
onVisibilityChange={onVisibilityChange}
|
||||
delayShow={trigger === 'click' ? 0 : SHOW_TOOLTIP_DELAY}
|
||||
>
|
||||
{xlinkHref && <svg className={className}>
|
||||
<use xlinkHref={`#${xlinkHref}`} />
|
||||
@@ -43,20 +51,20 @@ const getIconTooltip = ({
|
||||
</Tooltip>;
|
||||
};
|
||||
|
||||
getIconTooltip.propTypes = {
|
||||
IconTooltip.propTypes = {
|
||||
className: PropTypes.string,
|
||||
trigger: PropTypes.string,
|
||||
triggerClass: PropTypes.string,
|
||||
contentItemClass: PropTypes.string,
|
||||
columnClass: PropTypes.string,
|
||||
tooltipClass: PropTypes.string,
|
||||
title: PropTypes.string,
|
||||
placement: PropTypes.string,
|
||||
canShowTooltip: PropTypes.string,
|
||||
canShowTooltip: PropTypes.bool,
|
||||
xlinkHref: PropTypes.string,
|
||||
content: PropTypes.oneOfType([
|
||||
PropTypes.string,
|
||||
PropTypes.array,
|
||||
]),
|
||||
content: PropTypes.node,
|
||||
renderContent: PropTypes.arrayOf(PropTypes.element),
|
||||
onVisibilityChange: PropTypes.func,
|
||||
};
|
||||
|
||||
export default getIconTooltip;
|
||||
export default IconTooltip;
|
||||
127
client/src/components/Logs/Cells/ResponseCell.js
Normal file
127
client/src/components/Logs/Cells/ResponseCell.js
Normal file
@@ -0,0 +1,127 @@
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { shallowEqual, useSelector } from 'react-redux';
|
||||
import classNames from 'classnames';
|
||||
import React from 'react';
|
||||
import propTypes from 'prop-types';
|
||||
import {
|
||||
getRulesToFilterList,
|
||||
formatElapsedMs,
|
||||
getFilterNames,
|
||||
getServiceName,
|
||||
} from '../../../helpers/helpers';
|
||||
import { FILTERED_STATUS, FILTERED_STATUS_TO_META_MAP } from '../../../helpers/constants';
|
||||
import IconTooltip from './IconTooltip';
|
||||
|
||||
const ResponseCell = ({
|
||||
elapsedMs,
|
||||
originalResponse,
|
||||
reason,
|
||||
response,
|
||||
status,
|
||||
upstream,
|
||||
rules,
|
||||
service_name,
|
||||
}) => {
|
||||
const { t } = useTranslation();
|
||||
const filters = useSelector((state) => state.filtering.filters, shallowEqual);
|
||||
const whitelistFilters = useSelector((state) => state.filtering.whitelistFilters, shallowEqual);
|
||||
const isDetailed = useSelector((state) => state.queryLogs.isDetailed);
|
||||
|
||||
const formattedElapsedMs = formatElapsedMs(elapsedMs, t);
|
||||
|
||||
const isBlocked = reason === FILTERED_STATUS.FILTERED_BLACK_LIST
|
||||
|| reason === FILTERED_STATUS.FILTERED_BLOCKED_SERVICE;
|
||||
|
||||
const isBlockedByResponse = originalResponse.length > 0 && isBlocked;
|
||||
|
||||
const statusLabel = t(isBlockedByResponse ? 'blocked_by_cname_or_ip' : FILTERED_STATUS_TO_META_MAP[reason]?.LABEL || reason);
|
||||
const boldStatusLabel = <span className="font-weight-bold">{statusLabel}</span>;
|
||||
|
||||
const renderResponses = (responseArr) => {
|
||||
if (!responseArr || responseArr.length === 0) {
|
||||
return '';
|
||||
}
|
||||
|
||||
return <div>{responseArr.map((response) => {
|
||||
const className = classNames('white-space--nowrap', {
|
||||
'overflow-break': response.length > 100,
|
||||
});
|
||||
|
||||
return <div key={response} className={className}>{`${response}\n`}</div>;
|
||||
})}</div>;
|
||||
};
|
||||
|
||||
const COMMON_CONTENT = {
|
||||
encryption_status: boldStatusLabel,
|
||||
install_settings_dns: upstream,
|
||||
elapsed: formattedElapsedMs,
|
||||
response_code: status,
|
||||
...(service_name
|
||||
&& { service_name: getServiceName(service_name) }
|
||||
),
|
||||
...(rules.length > 0
|
||||
&& { rule_label: getRulesToFilterList(rules, filters, whitelistFilters) }
|
||||
),
|
||||
response_table_header: renderResponses(response),
|
||||
original_response: renderResponses(originalResponse),
|
||||
};
|
||||
|
||||
const content = rules.length > 0
|
||||
? Object.entries(COMMON_CONTENT)
|
||||
: Object.entries({
|
||||
...COMMON_CONTENT,
|
||||
filter: '',
|
||||
});
|
||||
|
||||
const getDetailedInfo = (reason) => {
|
||||
switch (reason) {
|
||||
case FILTERED_STATUS.FILTERED_BLOCKED_SERVICE:
|
||||
if (!service_name) {
|
||||
return formattedElapsedMs;
|
||||
}
|
||||
return getServiceName(service_name);
|
||||
case FILTERED_STATUS.FILTERED_BLACK_LIST:
|
||||
case FILTERED_STATUS.NOT_FILTERED_WHITE_LIST:
|
||||
return getFilterNames(rules, filters, whitelistFilters).join(', ');
|
||||
default:
|
||||
return formattedElapsedMs;
|
||||
}
|
||||
};
|
||||
|
||||
const detailedInfo = getDetailedInfo(reason);
|
||||
|
||||
return <div className="logs__cell logs__cell--response" role="gridcell">
|
||||
<IconTooltip
|
||||
className={classNames('icons mr-4 icon--24 icon--lightgray', { 'my-3': isDetailed })}
|
||||
columnClass='grid grid--limited'
|
||||
tooltipClass='px-5 pb-5 pt-4 mw-75 custom-tooltip__response-details'
|
||||
contentItemClass='text-truncate key-colon o-hidden'
|
||||
xlinkHref='question'
|
||||
title='response_details'
|
||||
content={content}
|
||||
placement='bottom'
|
||||
/>
|
||||
<div className="text-truncate">
|
||||
<div className="text-truncate" title={statusLabel}>{statusLabel}</div>
|
||||
{isDetailed && <div
|
||||
className="detailed-info d-none d-sm-block pt-1 text-truncate"
|
||||
title={detailedInfo}>{detailedInfo}</div>}
|
||||
</div>
|
||||
</div>;
|
||||
};
|
||||
|
||||
ResponseCell.propTypes = {
|
||||
elapsedMs: propTypes.string.isRequired,
|
||||
originalResponse: propTypes.array.isRequired,
|
||||
reason: propTypes.string.isRequired,
|
||||
response: propTypes.array.isRequired,
|
||||
status: propTypes.string.isRequired,
|
||||
upstream: propTypes.string.isRequired,
|
||||
rules: propTypes.arrayOf(propTypes.shape({
|
||||
text: propTypes.string.isRequired,
|
||||
filter_list_id: propTypes.number.isRequired,
|
||||
})),
|
||||
service_name: propTypes.string,
|
||||
};
|
||||
|
||||
export default ResponseCell;
|
||||
@@ -1,110 +0,0 @@
|
||||
import React from 'react';
|
||||
import { nanoid } from 'nanoid';
|
||||
import classNames from 'classnames';
|
||||
import PropTypes from 'prop-types';
|
||||
import { formatClientCell } from '../../../helpers/formatClientCell';
|
||||
import getIconTooltip from './getIconTooltip';
|
||||
import { checkFiltered } from '../../../helpers/helpers';
|
||||
import { BLOCK_ACTIONS } from '../../../helpers/constants';
|
||||
|
||||
const getClientCell = ({
|
||||
row, t, isDetailed, toggleBlocking, autoClients, processingRules,
|
||||
}) => {
|
||||
const {
|
||||
reason, client, domain, info: { name, whois_info },
|
||||
} = row.original;
|
||||
|
||||
const autoClient = autoClients.find((autoClient) => autoClient.name === client);
|
||||
const source = autoClient?.source;
|
||||
const whoisAvailable = whois_info && Object.keys(whois_info).length > 0;
|
||||
|
||||
const id = nanoid();
|
||||
|
||||
const data = {
|
||||
address: client,
|
||||
name,
|
||||
country: whois_info?.country,
|
||||
city: whois_info?.city,
|
||||
network: whois_info?.orgname,
|
||||
source_label: source,
|
||||
};
|
||||
|
||||
const processedData = Object.entries(data);
|
||||
|
||||
const isFiltered = checkFiltered(reason);
|
||||
|
||||
const nameClass = classNames('w-90 o-hidden d-flex flex-column', {
|
||||
'mt-2': isDetailed && !name && !whoisAvailable,
|
||||
'white-space--nowrap': isDetailed,
|
||||
});
|
||||
|
||||
const hintClass = classNames('icons mr-4 icon--24 icon--lightgray', {
|
||||
'my-3': isDetailed,
|
||||
});
|
||||
|
||||
const renderBlockingButton = (isFiltered, domain) => {
|
||||
const buttonType = isFiltered ? BLOCK_ACTIONS.UNBLOCK : BLOCK_ACTIONS.BLOCK;
|
||||
|
||||
const buttonClass = classNames('logs__action button__action', {
|
||||
'btn-outline-secondary': isFiltered,
|
||||
'btn-outline-danger': !isFiltered,
|
||||
'logs__action--detailed': isDetailed,
|
||||
});
|
||||
|
||||
const onClick = () => toggleBlocking(buttonType, domain);
|
||||
|
||||
return (
|
||||
<div className={buttonClass}>
|
||||
<button
|
||||
type="button"
|
||||
className={`btn btn-sm ${buttonClass}`}
|
||||
onClick={onClick}
|
||||
disabled={processingRules}
|
||||
>
|
||||
{t(buttonType)}
|
||||
</button>
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
return (
|
||||
<div className="logs__row o-hidden h-100">
|
||||
{getIconTooltip({
|
||||
className: hintClass,
|
||||
columnClass: 'grid grid--limited',
|
||||
tooltipClass: 'px-5 pb-5 pt-4 mw-75',
|
||||
xlinkHref: 'question',
|
||||
contentItemClass: 'text-truncate key-colon',
|
||||
title: 'client_details',
|
||||
content: processedData,
|
||||
placement: 'bottom',
|
||||
})}
|
||||
<div className={nameClass}>
|
||||
<div data-tip={true} data-for={id}>
|
||||
{formatClientCell(row, isDetailed)}
|
||||
</div>
|
||||
|
||||
{isDetailed && name && !whoisAvailable && (
|
||||
<div
|
||||
className="detailed-info d-none d-sm-block logs__text"
|
||||
title={name}
|
||||
>
|
||||
{name}
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
{renderBlockingButton(isFiltered, domain)}
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
getClientCell.propTypes = {
|
||||
row: PropTypes.object.isRequired,
|
||||
t: PropTypes.func.isRequired,
|
||||
isDetailed: PropTypes.bool.isRequired,
|
||||
toggleBlocking: PropTypes.func.isRequired,
|
||||
autoClients: PropTypes.array.isRequired,
|
||||
processingRules: PropTypes.bool.isRequired,
|
||||
};
|
||||
|
||||
export default getClientCell;
|
||||
@@ -1,28 +0,0 @@
|
||||
import React from 'react';
|
||||
|
||||
import { formatTime, formatDateTime } from '../../../helpers/helpers';
|
||||
import {
|
||||
DEFAULT_SHORT_DATE_FORMAT_OPTIONS,
|
||||
DEFAULT_TIME_FORMAT,
|
||||
} from '../../../helpers/constants';
|
||||
|
||||
const getDateCell = (row, isDetailed) => {
|
||||
const { time } = row.original;
|
||||
|
||||
if (!time) {
|
||||
return '–';
|
||||
}
|
||||
|
||||
const formattedTime = formatTime(time, DEFAULT_TIME_FORMAT);
|
||||
const formattedDate = formatDateTime(time, DEFAULT_SHORT_DATE_FORMAT_OPTIONS);
|
||||
|
||||
return (
|
||||
<div className="logs__cell">
|
||||
<div className="logs__time" title={formattedTime}>{formattedTime}</div>
|
||||
{isDetailed && <div className="detailed-info d-none d-sm-block text-truncate"
|
||||
title={formattedDate}>{formattedDate}</div>}
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
export default getDateCell;
|
||||
@@ -1,79 +0,0 @@
|
||||
import React from 'react';
|
||||
import classNames from 'classnames';
|
||||
import { formatElapsedMs } from '../../../helpers/helpers';
|
||||
import {
|
||||
FILTERED_STATUS,
|
||||
FILTERED_STATUS_TO_META_MAP,
|
||||
} from '../../../helpers/constants';
|
||||
import getIconTooltip from './getIconTooltip';
|
||||
|
||||
const getResponseCell = (row, filtering, t, isDetailed, getFilterName) => {
|
||||
const {
|
||||
reason, filterId, rule, status, upstream, elapsedMs, response, originalResponse,
|
||||
} = row.original;
|
||||
|
||||
const { filters, whitelistFilters } = filtering;
|
||||
const formattedElapsedMs = formatElapsedMs(elapsedMs, t);
|
||||
|
||||
const isBlocked = reason === FILTERED_STATUS.FILTERED_BLACK_LIST
|
||||
|| reason === FILTERED_STATUS.FILTERED_BLOCKED_SERVICE;
|
||||
|
||||
const isBlockedByResponse = originalResponse.length > 0 && isBlocked;
|
||||
|
||||
const statusLabel = t(isBlockedByResponse ? 'blocked_by_cname_or_ip' : FILTERED_STATUS_TO_META_MAP[reason]?.label || reason);
|
||||
const boldStatusLabel = <span className="font-weight-bold">{statusLabel}</span>;
|
||||
const filter = getFilterName(filters, whitelistFilters, filterId, t);
|
||||
|
||||
const renderResponses = (responseArr) => {
|
||||
if (responseArr?.length === 0) {
|
||||
return '';
|
||||
}
|
||||
|
||||
return <div>{responseArr.map((response) => {
|
||||
const className = classNames('white-space--nowrap', {
|
||||
'overflow-break': response.length > 100,
|
||||
});
|
||||
|
||||
return <div key={response} className={className}>{`${response}\n`}</div>;
|
||||
})}</div>;
|
||||
};
|
||||
|
||||
const COMMON_CONTENT = {
|
||||
encryption_status: boldStatusLabel,
|
||||
install_settings_dns: upstream,
|
||||
elapsed: formattedElapsedMs,
|
||||
response_code: status,
|
||||
filter,
|
||||
rule_label: rule,
|
||||
response_table_header: renderResponses(response),
|
||||
original_response: renderResponses(originalResponse),
|
||||
};
|
||||
|
||||
const content = rule
|
||||
? Object.entries(COMMON_CONTENT)
|
||||
: Object.entries({ ...COMMON_CONTENT, filter: '' });
|
||||
const detailedInfo = isBlocked ? filter : formattedElapsedMs;
|
||||
|
||||
return (
|
||||
<div className="logs__row">
|
||||
{getIconTooltip({
|
||||
className: classNames('icons mr-4 icon--24 icon--lightgray', { 'my-3': isDetailed }),
|
||||
columnClass: 'grid grid--limited',
|
||||
tooltipClass: 'px-5 pb-5 pt-4 mw-75 custom-tooltip__response-details',
|
||||
contentItemClass: 'text-truncate key-colon o-hidden',
|
||||
xlinkHref: 'question',
|
||||
title: 'response_details',
|
||||
content,
|
||||
placement: 'bottom',
|
||||
})}
|
||||
<div className="text-truncate">
|
||||
<div className="text-truncate" title={statusLabel}>{statusLabel}</div>
|
||||
{isDetailed && <div
|
||||
className="detailed-info d-none d-sm-block pt-1 text-truncate"
|
||||
title={detailedInfo}>{detailedInfo}</div>}
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
export default getResponseCell;
|
||||
18
client/src/components/Logs/Cells/helpers/index.js
Normal file
18
client/src/components/Logs/Cells/helpers/index.js
Normal file
@@ -0,0 +1,18 @@
|
||||
import i18next from 'i18next';
|
||||
|
||||
export const BUTTON_PREFIX = 'btn_';
|
||||
|
||||
export const getBlockClientInfo = (ip, disallowed, disallowed_rule) => {
|
||||
const confirmMessage = disallowed
|
||||
? i18next.t('client_confirm_unblock', { ip: disallowed_rule })
|
||||
: `${i18next.t('adg_will_drop_dns_queries')} ${i18next.t('client_confirm_block', { ip })}`;
|
||||
|
||||
const buttonKey = i18next.t(disallowed ? 'allow_this_client' : 'disallow_this_client');
|
||||
const isNotInAllowedList = disallowed && disallowed_rule === '';
|
||||
|
||||
return {
|
||||
confirmMessage,
|
||||
buttonKey,
|
||||
isNotInAllowedList,
|
||||
};
|
||||
};
|
||||
252
client/src/components/Logs/Cells/index.js
Normal file
252
client/src/components/Logs/Cells/index.js
Normal file
@@ -0,0 +1,252 @@
|
||||
import React, { memo } from 'react';
|
||||
import classNames from 'classnames';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { shallowEqual, useDispatch, useSelector } from 'react-redux';
|
||||
import propTypes from 'prop-types';
|
||||
import {
|
||||
captitalizeWords,
|
||||
checkFiltered,
|
||||
getRulesToFilterList,
|
||||
formatDateTime,
|
||||
formatElapsedMs,
|
||||
formatTime,
|
||||
getBlockingClientName,
|
||||
getServiceName,
|
||||
processContent,
|
||||
} from '../../../helpers/helpers';
|
||||
import {
|
||||
BLOCK_ACTIONS,
|
||||
DEFAULT_SHORT_DATE_FORMAT_OPTIONS,
|
||||
FILTERED_STATUS,
|
||||
FILTERED_STATUS_TO_META_MAP,
|
||||
LONG_TIME_FORMAT,
|
||||
QUERY_STATUS_COLORS,
|
||||
SCHEME_TO_PROTOCOL_MAP,
|
||||
} from '../../../helpers/constants';
|
||||
import { getSourceData } from '../../../helpers/trackers/trackers';
|
||||
import { toggleBlocking, toggleBlockingForClient } from '../../../actions';
|
||||
import DateCell from './DateCell';
|
||||
import DomainCell from './DomainCell';
|
||||
import ResponseCell from './ResponseCell';
|
||||
import ClientCell from './ClientCell';
|
||||
import '../Logs.css';
|
||||
import { toggleClientBlock } from '../../../actions/access';
|
||||
import { getBlockClientInfo, BUTTON_PREFIX } from './helpers';
|
||||
import { updateLogs } from '../../../actions/queryLogs';
|
||||
|
||||
const Row = memo(({
|
||||
style,
|
||||
rowProps,
|
||||
rowProps: { reason },
|
||||
isSmallScreen,
|
||||
setDetailedDataCurrent,
|
||||
setButtonType,
|
||||
setModalOpened,
|
||||
}) => {
|
||||
const dispatch = useDispatch();
|
||||
const { t } = useTranslation();
|
||||
const dnssec_enabled = useSelector((state) => state.dnsConfig.dnssec_enabled);
|
||||
const filters = useSelector((state) => state.filtering.filters, shallowEqual);
|
||||
const whitelistFilters = useSelector((state) => state.filtering.whitelistFilters, shallowEqual);
|
||||
const autoClients = useSelector((state) => state.dashboard.autoClients, shallowEqual);
|
||||
|
||||
const clients = useSelector((state) => state.dashboard.clients);
|
||||
|
||||
const onClick = () => {
|
||||
if (!isSmallScreen) {
|
||||
return;
|
||||
}
|
||||
const {
|
||||
answer_dnssec,
|
||||
client,
|
||||
domain,
|
||||
elapsedMs,
|
||||
info,
|
||||
info: { disallowed, disallowed_rule },
|
||||
reason,
|
||||
response,
|
||||
time,
|
||||
tracker,
|
||||
upstream,
|
||||
type,
|
||||
client_proto,
|
||||
client_id,
|
||||
rules,
|
||||
originalResponse,
|
||||
status,
|
||||
service_name,
|
||||
} = rowProps;
|
||||
|
||||
const hasTracker = !!tracker;
|
||||
|
||||
const autoClient = autoClients
|
||||
.find((autoClient) => autoClient.name === client);
|
||||
|
||||
const { whois_info } = info;
|
||||
const country = whois_info?.country;
|
||||
const city = whois_info?.city;
|
||||
const network = whois_info?.orgname;
|
||||
|
||||
const source = autoClient?.source;
|
||||
|
||||
const formattedElapsedMs = formatElapsedMs(elapsedMs, t);
|
||||
const isFiltered = checkFiltered(reason);
|
||||
|
||||
const isBlocked = reason === FILTERED_STATUS.FILTERED_BLACK_LIST
|
||||
|| reason === FILTERED_STATUS.FILTERED_BLOCKED_SERVICE;
|
||||
|
||||
const buttonType = isFiltered ? BLOCK_ACTIONS.UNBLOCK : BLOCK_ACTIONS.BLOCK;
|
||||
const onToggleBlock = () => {
|
||||
dispatch(toggleBlocking(buttonType, domain));
|
||||
};
|
||||
|
||||
const isBlockedByResponse = originalResponse.length > 0 && isBlocked;
|
||||
const requestStatus = t(isBlockedByResponse ? 'blocked_by_cname_or_ip' : FILTERED_STATUS_TO_META_MAP[reason]?.LABEL || reason);
|
||||
|
||||
const protocol = t(SCHEME_TO_PROTOCOL_MAP[client_proto]) || '';
|
||||
|
||||
const sourceData = getSourceData(tracker);
|
||||
|
||||
const {
|
||||
confirmMessage,
|
||||
buttonKey: blockingClientKey,
|
||||
isNotInAllowedList,
|
||||
} = getBlockClientInfo(client, disallowed, disallowed_rule);
|
||||
|
||||
const blockingForClientKey = isFiltered ? 'unblock_for_this_client_only' : 'block_for_this_client_only';
|
||||
const clientNameBlockingFor = getBlockingClientName(clients, client);
|
||||
|
||||
const onBlockingForClientClick = () => {
|
||||
dispatch(toggleBlockingForClient(buttonType, domain, clientNameBlockingFor));
|
||||
};
|
||||
|
||||
const onBlockingClientClick = async () => {
|
||||
if (window.confirm(confirmMessage)) {
|
||||
await dispatch(toggleClientBlock(client, disallowed, disallowed_rule));
|
||||
await dispatch(updateLogs());
|
||||
setModalOpened(false);
|
||||
}
|
||||
};
|
||||
|
||||
const blockButton = <button
|
||||
className={classNames('title--border text-center button-action--arrow-option', { 'bg--danger': !isBlocked })}
|
||||
onClick={onToggleBlock}>
|
||||
{t(buttonType)}
|
||||
</button>;
|
||||
|
||||
const blockForClientButton = <button
|
||||
className='text-center font-weight-bold py-2 button-action--arrow-option'
|
||||
onClick={onBlockingForClientClick}>
|
||||
{t(blockingForClientKey)}
|
||||
</button>;
|
||||
|
||||
const blockClientButton = <button
|
||||
className='text-center font-weight-bold py-2 button-action--arrow-option'
|
||||
onClick={onBlockingClientClick}
|
||||
disabled={isNotInAllowedList}>
|
||||
{t(blockingClientKey)}
|
||||
</button>;
|
||||
|
||||
const detailedData = {
|
||||
time_table_header: formatTime(time, LONG_TIME_FORMAT),
|
||||
date: formatDateTime(time, DEFAULT_SHORT_DATE_FORMAT_OPTIONS),
|
||||
encryption_status: isBlocked
|
||||
? <div className="bg--danger">{requestStatus}</div> : requestStatus,
|
||||
...(FILTERED_STATUS.FILTERED_BLOCKED_SERVICE && service_name
|
||||
&& { service_name: getServiceName(service_name) }),
|
||||
domain,
|
||||
type_table_header: type,
|
||||
protocol,
|
||||
known_tracker: hasTracker && 'title',
|
||||
table_name: tracker?.name,
|
||||
category_label: hasTracker && captitalizeWords(tracker.category),
|
||||
tracker_source: hasTracker && sourceData
|
||||
&& <a
|
||||
href={sourceData.url}
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
className="link--green">{sourceData.name}
|
||||
</a>,
|
||||
response_details: 'title',
|
||||
install_settings_dns: upstream,
|
||||
elapsed: formattedElapsedMs,
|
||||
...(rules.length > 0
|
||||
&& { rule_label: getRulesToFilterList(rules, filters, whitelistFilters) }
|
||||
),
|
||||
response_table_header: response?.join('\n'),
|
||||
response_code: status,
|
||||
client_details: 'title',
|
||||
ip_address: client,
|
||||
name: info?.name || client_id,
|
||||
country,
|
||||
city,
|
||||
network,
|
||||
source_label: source,
|
||||
validated_with_dnssec: dnssec_enabled ? Boolean(answer_dnssec) : false,
|
||||
original_response: originalResponse?.join('\n'),
|
||||
[BUTTON_PREFIX + buttonType]: blockButton,
|
||||
[BUTTON_PREFIX + blockingForClientKey]: blockForClientButton,
|
||||
[BUTTON_PREFIX + blockingClientKey]: blockClientButton,
|
||||
};
|
||||
|
||||
setDetailedDataCurrent(processContent(detailedData));
|
||||
setButtonType(buttonType);
|
||||
setModalOpened(true);
|
||||
};
|
||||
|
||||
const isDetailed = useSelector((state) => state.queryLogs.isDetailed);
|
||||
|
||||
const className = classNames('d-flex px-5 logs__row',
|
||||
`logs__row--${FILTERED_STATUS_TO_META_MAP?.[reason]?.COLOR ?? QUERY_STATUS_COLORS.WHITE}`, {
|
||||
'logs__cell--detailed': isDetailed,
|
||||
});
|
||||
|
||||
return <div style={style} className={className} onClick={onClick} role="row">
|
||||
<DateCell {...rowProps} />
|
||||
<DomainCell {...rowProps} />
|
||||
<ResponseCell {...rowProps} />
|
||||
<ClientCell {...rowProps} />
|
||||
</div>;
|
||||
});
|
||||
|
||||
Row.displayName = 'Row';
|
||||
|
||||
Row.propTypes = {
|
||||
style: propTypes.object,
|
||||
rowProps: propTypes.shape({
|
||||
reason: propTypes.string.isRequired,
|
||||
answer_dnssec: propTypes.bool.isRequired,
|
||||
client: propTypes.string.isRequired,
|
||||
domain: propTypes.string.isRequired,
|
||||
elapsedMs: propTypes.string.isRequired,
|
||||
info: propTypes.oneOfType([
|
||||
propTypes.string,
|
||||
propTypes.shape({
|
||||
whois_info: propTypes.shape({
|
||||
country: propTypes.string,
|
||||
city: propTypes.string,
|
||||
orgname: propTypes.string,
|
||||
}),
|
||||
})]),
|
||||
response: propTypes.array.isRequired,
|
||||
time: propTypes.string.isRequired,
|
||||
tracker: propTypes.object,
|
||||
upstream: propTypes.string.isRequired,
|
||||
type: propTypes.string.isRequired,
|
||||
client_proto: propTypes.string.isRequired,
|
||||
client_id: propTypes.string,
|
||||
rules: propTypes.arrayOf(propTypes.shape({
|
||||
text: propTypes.string.isRequired,
|
||||
filter_list_id: propTypes.number.isRequired,
|
||||
})),
|
||||
originalResponse: propTypes.array,
|
||||
status: propTypes.string.isRequired,
|
||||
service_name: propTypes.string,
|
||||
}).isRequired,
|
||||
isSmallScreen: propTypes.bool.isRequired,
|
||||
setDetailedDataCurrent: propTypes.func.isRequired,
|
||||
setButtonType: propTypes.func.isRequired,
|
||||
setModalOpened: propTypes.func.isRequired,
|
||||
};
|
||||
|
||||
export default Row;
|
||||
@@ -107,7 +107,7 @@ const Form = (props) => {
|
||||
|
||||
const {
|
||||
response_status, search,
|
||||
} = useSelector((state) => state.form[FORM_NAME.LOGS_FILTER].values, shallowEqual);
|
||||
} = useSelector((state) => state?.form[FORM_NAME.LOGS_FILTER].values, shallowEqual);
|
||||
|
||||
const [
|
||||
debouncedSearch,
|
||||
@@ -171,14 +171,14 @@ const Form = (props) => {
|
||||
>
|
||||
{Object.values(RESPONSE_FILTER)
|
||||
.map(({
|
||||
query, label, disabled,
|
||||
QUERY, LABEL, disabled,
|
||||
}) => (
|
||||
<option
|
||||
key={label}
|
||||
value={query}
|
||||
key={LABEL}
|
||||
value={QUERY}
|
||||
disabled={disabled}
|
||||
>
|
||||
{t(label)}
|
||||
{t(LABEL)}
|
||||
</option>
|
||||
))
|
||||
}
|
||||
@@ -197,5 +197,4 @@ Form.propTypes = {
|
||||
|
||||
export default reduxForm({
|
||||
form: FORM_NAME.LOGS_FILTER,
|
||||
enableReinitialize: true,
|
||||
})(Form);
|
||||
|
||||
@@ -1,33 +1,46 @@
|
||||
import React from 'react';
|
||||
import PropTypes from 'prop-types';
|
||||
import { Trans } from 'react-i18next';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { useDispatch } from 'react-redux';
|
||||
import Form from './Form';
|
||||
import { refreshFilteredLogs } from '../../../actions/queryLogs';
|
||||
import { addSuccessToast } from '../../../actions/toasts';
|
||||
|
||||
const Filters = ({ filter, refreshLogs, setIsLoading }) => (
|
||||
<div className="page-header page-header--logs">
|
||||
<h1 className="page-title page-title--large">
|
||||
<Trans>query_log</Trans>
|
||||
<button
|
||||
const Filters = ({ filter, setIsLoading }) => {
|
||||
const { t } = useTranslation();
|
||||
const dispatch = useDispatch();
|
||||
|
||||
const refreshLogs = async () => {
|
||||
setIsLoading(true);
|
||||
await dispatch(refreshFilteredLogs());
|
||||
dispatch(addSuccessToast('query_log_updated'));
|
||||
setIsLoading(false);
|
||||
};
|
||||
|
||||
return <div className="page-header page-header--logs">
|
||||
<h1 className="page-title page-title--large">
|
||||
{t('query_log')}
|
||||
<button
|
||||
type="button"
|
||||
className="btn btn-icon--green logs__refresh"
|
||||
title={t('refresh_btn')}
|
||||
onClick={refreshLogs}
|
||||
>
|
||||
<svg className="icons icon--24">
|
||||
<use xlinkHref="#update" />
|
||||
</svg>
|
||||
</button>
|
||||
</h1>
|
||||
<Form
|
||||
>
|
||||
<svg className="icons icon--24">
|
||||
<use xlinkHref="#update" />
|
||||
</svg>
|
||||
</button>
|
||||
</h1>
|
||||
<Form
|
||||
responseStatusClass="d-sm-block"
|
||||
initialValues={filter}
|
||||
setIsLoading={setIsLoading}
|
||||
/>
|
||||
</div>
|
||||
);
|
||||
/>
|
||||
</div>;
|
||||
};
|
||||
|
||||
Filters.propTypes = {
|
||||
filter: PropTypes.object.isRequired,
|
||||
refreshLogs: PropTypes.func.isRequired,
|
||||
processingGetLogs: PropTypes.bool.isRequired,
|
||||
setIsLoading: PropTypes.func.isRequired,
|
||||
};
|
||||
|
||||
89
client/src/components/Logs/InfiniteTable.js
Normal file
89
client/src/components/Logs/InfiniteTable.js
Normal file
@@ -0,0 +1,89 @@
|
||||
import React, {
|
||||
useCallback,
|
||||
useEffect,
|
||||
useRef,
|
||||
} from 'react';
|
||||
import { useDispatch, useSelector } from 'react-redux';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import propTypes from 'prop-types';
|
||||
import throttle from 'lodash/throttle';
|
||||
import Loading from '../ui/Loading';
|
||||
import Header from './Cells/Header';
|
||||
import { getLogs } from '../../actions/queryLogs';
|
||||
import Row from './Cells';
|
||||
import { isScrolledIntoView } from '../../helpers/helpers';
|
||||
import { QUERY_LOGS_PAGE_LIMIT } from '../../helpers/constants';
|
||||
|
||||
const InfiniteTable = ({
|
||||
isLoading,
|
||||
items,
|
||||
isSmallScreen,
|
||||
setDetailedDataCurrent,
|
||||
setButtonType,
|
||||
setModalOpened,
|
||||
}) => {
|
||||
const { t } = useTranslation();
|
||||
const dispatch = useDispatch();
|
||||
const loader = useRef(null);
|
||||
const loadingRef = useRef(null);
|
||||
|
||||
const isEntireLog = useSelector((state) => state.queryLogs.isEntireLog);
|
||||
const processingGetLogs = useSelector((state) => state.queryLogs.processingGetLogs);
|
||||
const loading = isLoading || processingGetLogs;
|
||||
|
||||
const listener = useCallback(() => {
|
||||
if (!loadingRef.current && loader.current && isScrolledIntoView(loader.current)) {
|
||||
dispatch(getLogs());
|
||||
}
|
||||
}, []);
|
||||
|
||||
useEffect(() => {
|
||||
loadingRef.current = processingGetLogs;
|
||||
}, [processingGetLogs]);
|
||||
|
||||
useEffect(() => {
|
||||
listener();
|
||||
}, [items.length < QUERY_LOGS_PAGE_LIMIT]);
|
||||
|
||||
useEffect(() => {
|
||||
const THROTTLE_TIME = 100;
|
||||
const throttledListener = throttle(listener, THROTTLE_TIME);
|
||||
|
||||
window.addEventListener('scroll', throttledListener);
|
||||
return () => {
|
||||
window.removeEventListener('scroll', throttledListener);
|
||||
};
|
||||
}, []);
|
||||
|
||||
const renderRow = (row, idx) => <Row
|
||||
key={idx}
|
||||
rowProps={row}
|
||||
isSmallScreen={isSmallScreen}
|
||||
setDetailedDataCurrent={setDetailedDataCurrent}
|
||||
setButtonType={setButtonType}
|
||||
setModalOpened={setModalOpened}
|
||||
/>;
|
||||
|
||||
const isNothingFound = items.length === 0 && !processingGetLogs;
|
||||
|
||||
return <div className='logs__table' role='grid'>
|
||||
{loading && <Loading />}
|
||||
<Header />
|
||||
{isNothingFound
|
||||
? <label className="logs__no-data">{t('nothing_found')}</label>
|
||||
: <>{items.map(renderRow)}
|
||||
{!isEntireLog && <div ref={loader} className="logs__loading text-center">{t('loading_table_status')}</div>}
|
||||
</>}
|
||||
</div>;
|
||||
};
|
||||
|
||||
InfiniteTable.propTypes = {
|
||||
isLoading: propTypes.bool.isRequired,
|
||||
items: propTypes.array.isRequired,
|
||||
isSmallScreen: propTypes.bool.isRequired,
|
||||
setDetailedDataCurrent: propTypes.func.isRequired,
|
||||
setButtonType: propTypes.func.isRequired,
|
||||
setModalOpened: propTypes.func.isRequired,
|
||||
};
|
||||
|
||||
export default InfiniteTable;
|
||||
@@ -1,44 +1,30 @@
|
||||
:root {
|
||||
--gray-4d: #4D4D4D;
|
||||
--blue: #e5effd;
|
||||
--green-pale: rgba(103, 178, 121, 0.1);
|
||||
--red: rgba(223, 56, 18, 0.05);
|
||||
--white: #fff;
|
||||
--yellow: rgba(247, 181, 0, 0.1);
|
||||
--size-date: 70;
|
||||
--size-domain: 180;
|
||||
--size-response: 150;
|
||||
--size-client: 123;
|
||||
--gray-216: rgba(216, 216, 216, 0.23);
|
||||
--gray-4d: #4d4d4d;
|
||||
--gray-f3: #f3f3f3;
|
||||
--gray-8: #888;
|
||||
--danger: #DF3812;
|
||||
--gray-3: #333;
|
||||
--danger: #df3812;
|
||||
--white80: rgba(255, 255, 255, 0.8);
|
||||
--btn-block: #c23814;
|
||||
--btn-block-disabled: #e3b3a6;
|
||||
--btn-block-active: #a62200;
|
||||
--btn-unblock: #888888;
|
||||
--btn-unblock-disabled: #d8d8d8;
|
||||
--btn-unblock-active: #4d4d4d;
|
||||
--option-border-radius: 4px;
|
||||
}
|
||||
|
||||
.logs__row {
|
||||
position: relative;
|
||||
display: flex;
|
||||
min-height: 26px;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
|
||||
.card-table .logs__row {
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
|
||||
.logs__row--center {
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.logs__row--column {
|
||||
flex-direction: column;
|
||||
align-items: flex-start;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.logs__row--icons {
|
||||
max-width: 180px;
|
||||
flex-flow: row wrap;
|
||||
}
|
||||
|
||||
.logs__row .list-unstyled {
|
||||
margin-bottom: 0;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.logs__text,
|
||||
.logs__row .list-unstyled li {
|
||||
.logs__text {
|
||||
padding: 0 1px;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
@@ -51,238 +37,7 @@
|
||||
}
|
||||
|
||||
.logs__text--bold {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.logs__text--full {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.logs__text--wrap {
|
||||
line-height: 1.4;
|
||||
white-space: normal;
|
||||
}
|
||||
|
||||
.logs__text--nowrap {
|
||||
line-height: 1.4;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.logs__text--whois {
|
||||
line-height: 1.2;
|
||||
color: #9aa0ac;
|
||||
}
|
||||
|
||||
.logs__row .tooltip-custom {
|
||||
top: 0;
|
||||
margin-left: 0;
|
||||
margin-right: 5px;
|
||||
}
|
||||
|
||||
.tooltip__option {
|
||||
height: 2.5rem !important;
|
||||
width: 10.5rem;
|
||||
padding: 0.3125rem 1.5rem 0.6875rem;
|
||||
}
|
||||
|
||||
.tooltip__option:hover {
|
||||
background-color: var(--gray-f3);
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.button__action {
|
||||
background-color: #fff;
|
||||
border-radius: 4px;
|
||||
transition: opacity 0.2s ease, visibility 0.2s ease;
|
||||
visibility: hidden;
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
.table__action {
|
||||
position: absolute;
|
||||
top: 11px;
|
||||
right: 15px;
|
||||
}
|
||||
|
||||
.logs__action {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 1rem;
|
||||
}
|
||||
|
||||
.logs__action--detailed {
|
||||
top: 5px;
|
||||
}
|
||||
|
||||
.logs__table .rt-td,
|
||||
.clients__table .rt-td {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.logs__table .rt-thead, .logs__table .rt-tbody {
|
||||
min-width: 100% !important;
|
||||
}
|
||||
|
||||
.logs__table .rt-tr:hover .logs__action,
|
||||
.clients__table .rt-tr:hover .table__action {
|
||||
visibility: visible;
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.logs__table .rt-tr-group:first-child .tooltip-custom:before {
|
||||
top: calc(100% + 12px);
|
||||
bottom: initial;
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
.logs__table .rt-tr-group:first-child .tooltip-custom:after {
|
||||
top: initial;
|
||||
bottom: -4px;
|
||||
border-top: 6px solid transparent;
|
||||
border-bottom: 6px solid #585965;
|
||||
}
|
||||
|
||||
.logs__table .rt-tr-group:first-child .popover__body {
|
||||
top: calc(100% + 5px);
|
||||
bottom: initial;
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
.logs__table .rt-tr-group:first-child .popover__body:after {
|
||||
top: -11px;
|
||||
border-top: 6px solid transparent;
|
||||
border-bottom: 6px solid #585965;
|
||||
}
|
||||
|
||||
.logs__table .rt-thead.-filters input,
|
||||
.logs__table .rt-thead.-filters select {
|
||||
padding: 6px 7px;
|
||||
border-radius: 3px;
|
||||
font-size: 0.9375rem;
|
||||
line-height: 1.6;
|
||||
color: #495057;
|
||||
border: 1px solid rgba(0, 40, 100, 0.12);
|
||||
}
|
||||
|
||||
.logs__table .rt-thead.-filters select {
|
||||
background: #fff url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCAxMCA1Jz48cGF0aCBmaWxsPScjOTk5JyBkPSdNMCAwTDEwIDBMNSA1TDAgMCcvPjwvc3ZnPg==") no-repeat right 0.75rem center;
|
||||
background-size: 8px 10px;
|
||||
}
|
||||
|
||||
.logs__table .rt-thead.-filters input:focus,
|
||||
.logs__table .rt-thead.-filters select:focus {
|
||||
border-color: #1991eb;
|
||||
box-shadow: 0 0 0 2px rgba(70, 127, 207, 0.25);
|
||||
}
|
||||
|
||||
.logs__text-wrap {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
.logs__list-wrap {
|
||||
display: flex;
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
.logs__list-item {
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.logs__input-wrap {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.logs__whois {
|
||||
display: inline;
|
||||
font-size: 12px;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.logs__whois::after {
|
||||
content: "|";
|
||||
padding: 0 5px;
|
||||
opacity: 0.3;
|
||||
}
|
||||
|
||||
.logs__whois:last-child::after {
|
||||
content: "";
|
||||
}
|
||||
|
||||
.logs__whois-icon.icons {
|
||||
position: relative;
|
||||
top: -2px;
|
||||
width: 12px;
|
||||
height: 12px;
|
||||
margin-right: 1px;
|
||||
opacity: 0.5;
|
||||
}
|
||||
|
||||
/* New logs */
|
||||
.logs__table {
|
||||
background-color: #fff;
|
||||
border: 0;
|
||||
border-radius: 8px;
|
||||
min-height: 42rem;
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
.logs__table--detailed {
|
||||
min-height: 50rem;
|
||||
}
|
||||
|
||||
.logs__table .rt-thead.-header {
|
||||
box-shadow: none;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.logs__table .rt-thead .rt-th {
|
||||
padding: 0.9375rem 0.9375rem 0.875rem 0;
|
||||
text-align: left;
|
||||
border-right: 0;
|
||||
}
|
||||
|
||||
.logs__table .rt-tbody .rt-td {
|
||||
padding: 1rem 1rem 0.5rem 0;
|
||||
border-right: 0;
|
||||
}
|
||||
|
||||
.logs__table .rt-thead .rt-th:last-child,
|
||||
.logs__table .rt-tbody .rt-td:last-child {
|
||||
padding-right: 0;
|
||||
}
|
||||
|
||||
.logs__table .rt-tbody .rt-tr-group {
|
||||
border-bottom: 0;
|
||||
}
|
||||
|
||||
.logs__table .rt-tr {
|
||||
position: relative;
|
||||
padding: 0 24px;
|
||||
}
|
||||
|
||||
.logs__table .rt-tr {
|
||||
position: relative;
|
||||
padding: 0 1.5rem;
|
||||
}
|
||||
|
||||
.logs__table .rt-tr-group:not(:first-child) .rt-tr:before {
|
||||
content: "";
|
||||
position: absolute;
|
||||
left: 1.5rem;
|
||||
right: 1.5rem;
|
||||
top: 0;
|
||||
width: calc(100% - 3rem);
|
||||
height: 2px;
|
||||
background-color: rgba(216, 216, 216, 0.23);
|
||||
}
|
||||
|
||||
.logs__table .rt-tr-group:last-child .rt-tr:after,
|
||||
.logs__table .rt-thead .rt-tr:after {
|
||||
display: none;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.logs__time {
|
||||
@@ -302,132 +57,24 @@
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
/* Hide 3 and 4 column on mobile */
|
||||
.logs__table .rt-thead .rt-th:nth-child(3),
|
||||
.logs__table .rt-thead .rt-th:nth-child(4),
|
||||
.logs__table .rt-tbody .rt-td:nth-child(3),
|
||||
.logs__table .rt-tbody .rt-td:nth-child(4) {
|
||||
display: none;
|
||||
}
|
||||
|
||||
@media screen and (min-width: 768px) {
|
||||
.logs__table .rt-thead .rt-th:nth-child(3),
|
||||
.logs__table .rt-thead .rt-th:nth-child(4),
|
||||
.logs__table .rt-tbody .rt-td:nth-child(3),
|
||||
.logs__table .rt-tbody .rt-td:nth-child(4) {
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
|
||||
.text-pre {
|
||||
white-space: pre-wrap !important;
|
||||
overflow-wrap: break-word;
|
||||
overflow: visible;
|
||||
}
|
||||
|
||||
.custom-pagination {
|
||||
width: 11.875rem !important;
|
||||
background-color: transparent;
|
||||
box-shadow: none !important;
|
||||
border: none !important;
|
||||
align-items: center !important;
|
||||
}
|
||||
|
||||
.custom-pagination--padding {
|
||||
padding: 2.5rem 0 2.5rem !important;
|
||||
}
|
||||
|
||||
.custom-pagination .-btn {
|
||||
--side-size: 2rem;
|
||||
background-color: transparent !important;
|
||||
border: 1px solid var(--gray-d8) !important;
|
||||
border-radius: 4px !important;
|
||||
width: var(--side-size) !important;
|
||||
height: var(--side-size) !important;
|
||||
}
|
||||
|
||||
.custom-pagination .-btn:enabled:hover {
|
||||
background-color: var(--gray-f3) !important;
|
||||
}
|
||||
|
||||
.custom-pagination .-previous {
|
||||
flex: 0 1 !important;
|
||||
}
|
||||
|
||||
.custom-pagination .-next {
|
||||
flex: 0 1 !important;
|
||||
}
|
||||
|
||||
.custom-pagination .-btn {
|
||||
display: flex !important;
|
||||
}
|
||||
|
||||
.logs__table .-pageInfo {
|
||||
--side-size: 2rem;
|
||||
font-variant-numeric: tabular-nums !important;
|
||||
background-color: transparent !important;
|
||||
border: 1px solid var(--gray-d8) !important;
|
||||
border-radius: 4px !important;
|
||||
width: var(--side-size) !important;
|
||||
height: var(--side-size) !important;
|
||||
margin: 0 !important;
|
||||
display: flex !important;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.logs__table .pagination-bottom {
|
||||
justify-content: center !important;
|
||||
display: flex !important;
|
||||
}
|
||||
|
||||
.logs__table .-center:before {
|
||||
content: '...';
|
||||
transform: translateY(-0.25rem);
|
||||
margin: auto;
|
||||
}
|
||||
|
||||
.logs__table .-center:after {
|
||||
content: '...';
|
||||
transform: translateY(-0.25rem);
|
||||
margin: auto;
|
||||
}
|
||||
|
||||
.icon--detailed-info {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 0.5rem;
|
||||
}
|
||||
|
||||
.link--green {
|
||||
color: var(--green79);
|
||||
}
|
||||
|
||||
.row--detailed {
|
||||
height: 4.9rem
|
||||
}
|
||||
|
||||
.w-90 {
|
||||
max-width: 90% !important;
|
||||
}
|
||||
|
||||
.h-85 {
|
||||
height: 85% !important;
|
||||
}
|
||||
|
||||
.pt-45 {
|
||||
padding-top: 1.25rem !important;
|
||||
}
|
||||
|
||||
.pb-45 {
|
||||
padding-bottom: 1.25rem !important;
|
||||
}
|
||||
|
||||
.py-45 {
|
||||
padding-top: 1.25rem !important;
|
||||
padding-bottom: 1.25rem !important;
|
||||
}
|
||||
|
||||
.mh-100 {
|
||||
max-height: 100% !important;
|
||||
}
|
||||
@@ -437,7 +84,7 @@
|
||||
}
|
||||
|
||||
.custom-select__arrow--left {
|
||||
background: var(--white) url('../ui/svg/chevron-down.svg') no-repeat;
|
||||
background: var(--white) url("../ui/svg/chevron-down.svg") no-repeat;
|
||||
background-position: 5px 9px;
|
||||
background-size: 22px;
|
||||
}
|
||||
@@ -447,7 +94,7 @@
|
||||
}
|
||||
|
||||
.bg--danger {
|
||||
color: var(--danger);
|
||||
color: var(--danger) !important;
|
||||
}
|
||||
|
||||
.form-control--search {
|
||||
@@ -493,14 +140,6 @@
|
||||
}
|
||||
|
||||
@media (max-width: 767.98px) {
|
||||
.rt-tr .logs__row .logs__text {
|
||||
max-width: calc(100% - 1.5rem);
|
||||
}
|
||||
|
||||
.ml-small {
|
||||
margin-left: 1.5rem;
|
||||
}
|
||||
|
||||
.form-control--container {
|
||||
width: 100%;
|
||||
flex-direction: column;
|
||||
@@ -517,27 +156,11 @@
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 575px) {
|
||||
.logs__table .rt-tr {
|
||||
height: 3.125rem;
|
||||
@media screen and (max-width: 767.98px) {
|
||||
.logs__table .logs__cell--response,
|
||||
.logs__table .logs__cell--client {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
.logs__table .rt-tbody .rt-td {
|
||||
padding: 0.625rem 1rem 0.875rem 0;
|
||||
}
|
||||
|
||||
.logs__table {
|
||||
min-height: 42rem;
|
||||
}
|
||||
}
|
||||
|
||||
.loading__container > .-loading-inner {
|
||||
top: 10rem !important;
|
||||
bottom: initial !important;
|
||||
}
|
||||
|
||||
.loading__text {
|
||||
transform: translateY(3rem);
|
||||
}
|
||||
|
||||
.logs__refresh {
|
||||
@@ -546,9 +169,273 @@
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
|
||||
--size: 2.5rem;
|
||||
width: var(--size);
|
||||
height: var(--size);
|
||||
padding: 0;
|
||||
margin-left: 15px;
|
||||
margin-left: 0.9375rem;
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
.logs__cell {
|
||||
padding: 1rem 1rem 0.5rem 0;
|
||||
}
|
||||
|
||||
.logs__cell--date {
|
||||
width: 4.375rem;
|
||||
flex: var(--size-date) 0 auto;
|
||||
}
|
||||
|
||||
.logs__cell--domain {
|
||||
width: 11.25rem;
|
||||
flex: var(--size-domain) 0 auto;
|
||||
}
|
||||
|
||||
.logs__cell--response {
|
||||
width: 9.375rem;
|
||||
flex: var(--size-response) 0 auto;
|
||||
}
|
||||
|
||||
.logs__cell--client {
|
||||
width: 7.6875rem;
|
||||
flex: var(--size-client) 0 auto;
|
||||
padding-right: 0;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.logs__cell--header__container > .logs__cell--header__item {
|
||||
border-right: 0;
|
||||
font-size: 1rem;
|
||||
}
|
||||
|
||||
.logs__cell--header__container > .logs__cell--header__item:last-child {
|
||||
padding-right: 0;
|
||||
}
|
||||
|
||||
.button-action__container {
|
||||
display: flex;
|
||||
position: absolute;
|
||||
right: 0;
|
||||
bottom: 0.5rem;
|
||||
height: 1.6rem;
|
||||
}
|
||||
|
||||
.button-action__container--detailed {
|
||||
bottom: 1.3rem;
|
||||
}
|
||||
|
||||
.button-action {
|
||||
outline: 0 !important;
|
||||
background: var(--btn-block);
|
||||
border-radius: var(--option-border-radius);
|
||||
font-size: 0.8rem;
|
||||
color: var(--white);
|
||||
letter-spacing: 0;
|
||||
text-align: center;
|
||||
line-height: 28px;
|
||||
border: 0;
|
||||
}
|
||||
|
||||
.button-action--small {
|
||||
width: fit-content;
|
||||
}
|
||||
|
||||
.button-action--unblock {
|
||||
background: var(--btn-unblock);
|
||||
}
|
||||
|
||||
.button-action--main {
|
||||
padding: 0 1rem;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.button-action--with-options {
|
||||
border-top-right-radius: 0;
|
||||
border-bottom-right-radius: 0;
|
||||
}
|
||||
|
||||
.button-action--arrow {
|
||||
border-top-left-radius: 0;
|
||||
border-bottom-left-radius: 0;
|
||||
border-left: 1px solid var(--white);
|
||||
width: 1.5625rem;
|
||||
padding: 0;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.button-action:hover {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.button-action--arrow .button-action--icon {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.button-action:active {
|
||||
background: var(--btn-block-active);
|
||||
}
|
||||
|
||||
.button-action--unblock:active {
|
||||
background: var(--btn-unblock-active);
|
||||
}
|
||||
|
||||
.button-action:disabled {
|
||||
background: var(--btn-block-disabled);
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
.button-action--unblock:disabled {
|
||||
background: var(--btn-unblock-disabled);
|
||||
}
|
||||
|
||||
.button-action--arrow-option {
|
||||
background: transparent;
|
||||
border: 0;
|
||||
display: block;
|
||||
width: 100%;
|
||||
text-align: left;
|
||||
color: inherit;
|
||||
}
|
||||
|
||||
.button-action--arrow-option:disabled {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.tooltip-custom__container .button-action--arrow-option:not(:disabled):hover {
|
||||
cursor: pointer;
|
||||
background: var(--gray-f3);
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.button-action--arrow-option-container {
|
||||
overflow: visible;
|
||||
transform-origin: left;
|
||||
padding: 1rem 0;
|
||||
}
|
||||
|
||||
.logs__row {
|
||||
position: relative;
|
||||
display: flex;
|
||||
min-height: 26px;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
|
||||
.logs__table .logs__row {
|
||||
border-bottom: 2px solid var(--gray-216);
|
||||
}
|
||||
|
||||
/* QUERY_STATUS_COLORS */
|
||||
.logs__row--blue {
|
||||
background-color: var(--blue);
|
||||
}
|
||||
|
||||
.logs__row--green {
|
||||
background-color: var(--green-pale);
|
||||
}
|
||||
|
||||
.logs__row--red {
|
||||
background-color: var(--red) !important;
|
||||
}
|
||||
|
||||
.logs__row--white {
|
||||
background-color: var(--white);
|
||||
}
|
||||
|
||||
.logs__row--yellow {
|
||||
background-color: var(--yellow);
|
||||
}
|
||||
|
||||
.logs__no-data {
|
||||
color: var(--gray-4d);
|
||||
background-color: var(--white80);
|
||||
pointer-events: none;
|
||||
font-weight: 600;
|
||||
text-align: center;
|
||||
padding-top: 21rem;
|
||||
display: block;
|
||||
}
|
||||
|
||||
.logs__loading {
|
||||
padding: 1rem 0;
|
||||
}
|
||||
|
||||
.logs__table {
|
||||
background-color: var(--white);
|
||||
border: 0;
|
||||
border-radius: 8px;
|
||||
min-height: 43rem;
|
||||
max-width: 100%;
|
||||
align-items: stretch;
|
||||
width: 100%;
|
||||
border-collapse: collapse;
|
||||
contain: layout;
|
||||
overflow-x: hidden;
|
||||
overflow-y: scroll;
|
||||
will-change: scroll-position;
|
||||
}
|
||||
|
||||
.logs__table .logs__cell--response,
|
||||
.logs__table .logs__cell--client {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.logs__cell--header__container {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.logs__table > .logs__cell--header__container > .logs__cell--client {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
}
|
||||
|
||||
.logs__table .loading:after {
|
||||
top: 10%;
|
||||
}
|
||||
|
||||
.logs__table .loading:before {
|
||||
min-height: 100%;
|
||||
}
|
||||
|
||||
.logs__whois {
|
||||
display: inline;
|
||||
font-size: 12px;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.logs__whois::after {
|
||||
content: "|";
|
||||
padding: 0 5px;
|
||||
opacity: 0.3;
|
||||
}
|
||||
|
||||
.logs__whois:last-child::after {
|
||||
content: "";
|
||||
}
|
||||
|
||||
.logs__whois-icon.icons {
|
||||
position: relative;
|
||||
top: -2px;
|
||||
width: 12px;
|
||||
height: 12px;
|
||||
margin-right: 1px;
|
||||
opacity: 0.5;
|
||||
}
|
||||
|
||||
.filteringRules__rule {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.filteringRules__filter {
|
||||
font-style: italic;
|
||||
font-weight: normal;
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
|
||||
@@ -1,414 +0,0 @@
|
||||
import React from 'react';
|
||||
import PropTypes from 'prop-types';
|
||||
import { useTranslation, Trans } from 'react-i18next';
|
||||
import ReactTable from 'react-table';
|
||||
import classNames from 'classnames';
|
||||
import endsWith from 'lodash/endsWith';
|
||||
import escapeRegExp from 'lodash/escapeRegExp';
|
||||
import {
|
||||
BLOCK_ACTIONS,
|
||||
DEFAULT_SHORT_DATE_FORMAT_OPTIONS,
|
||||
LONG_TIME_FORMAT,
|
||||
FILTERED_STATUS_TO_META_MAP,
|
||||
TABLE_DEFAULT_PAGE_SIZE,
|
||||
SCHEME_TO_PROTOCOL_MAP,
|
||||
CUSTOM_FILTERING_RULES_ID, FILTERED_STATUS,
|
||||
} from '../../helpers/constants';
|
||||
import getDateCell from './Cells/getDateCell';
|
||||
import getDomainCell from './Cells/getDomainCell';
|
||||
import getClientCell from './Cells/getClientCell';
|
||||
import getResponseCell from './Cells/getResponseCell';
|
||||
|
||||
import {
|
||||
captitalizeWords,
|
||||
checkFiltered,
|
||||
formatDateTime,
|
||||
formatElapsedMs,
|
||||
formatTime,
|
||||
processContent,
|
||||
} from '../../helpers/helpers';
|
||||
import Loading from '../ui/Loading';
|
||||
import { getSourceData } from '../../helpers/trackers/trackers';
|
||||
|
||||
const Table = (props) => {
|
||||
const {
|
||||
setDetailedDataCurrent,
|
||||
setButtonType,
|
||||
setModalOpened,
|
||||
isSmallScreen,
|
||||
setIsLoading,
|
||||
filtering,
|
||||
isDetailed,
|
||||
toggleDetailedLogs,
|
||||
setLogsPage,
|
||||
setLogsPagination,
|
||||
processingGetLogs,
|
||||
logs,
|
||||
pages,
|
||||
page,
|
||||
isLoading,
|
||||
} = props;
|
||||
|
||||
const { t } = useTranslation();
|
||||
|
||||
const toggleBlocking = (type, domain) => {
|
||||
const {
|
||||
setRules, getFilteringStatus, addSuccessToast,
|
||||
} = props;
|
||||
const { userRules } = filtering;
|
||||
|
||||
const lineEnding = !endsWith(userRules, '\n') ? '\n' : '';
|
||||
const baseRule = `||${domain}^$important`;
|
||||
const baseUnblocking = `@@${baseRule}`;
|
||||
|
||||
const blockingRule = type === BLOCK_ACTIONS.BLOCK ? baseUnblocking : baseRule;
|
||||
const unblockingRule = type === BLOCK_ACTIONS.BLOCK ? baseRule : baseUnblocking;
|
||||
const preparedBlockingRule = new RegExp(`(^|\n)${escapeRegExp(blockingRule)}($|\n)`);
|
||||
const preparedUnblockingRule = new RegExp(`(^|\n)${escapeRegExp(unblockingRule)}($|\n)`);
|
||||
|
||||
const matchPreparedBlockingRule = userRules.match(preparedBlockingRule);
|
||||
const matchPreparedUnblockingRule = userRules.match(preparedUnblockingRule);
|
||||
|
||||
if (matchPreparedBlockingRule) {
|
||||
setRules(userRules.replace(`${blockingRule}`, ''));
|
||||
addSuccessToast(`${t('rule_removed_from_custom_filtering_toast')}: ${blockingRule}`);
|
||||
} else if (!matchPreparedUnblockingRule) {
|
||||
setRules(`${userRules}${lineEnding}${unblockingRule}\n`);
|
||||
addSuccessToast(`${t('rule_added_to_custom_filtering_toast')}: ${unblockingRule}`);
|
||||
} else if (matchPreparedUnblockingRule) {
|
||||
addSuccessToast(`${t('rule_added_to_custom_filtering_toast')}: ${unblockingRule}`);
|
||||
return;
|
||||
} else if (!matchPreparedBlockingRule) {
|
||||
addSuccessToast(`${t('rule_removed_from_custom_filtering_toast')}: ${blockingRule}`);
|
||||
return;
|
||||
}
|
||||
|
||||
getFilteringStatus();
|
||||
};
|
||||
|
||||
const getFilterName = (filters, whitelistFilters, filterId, t) => {
|
||||
if (filterId === CUSTOM_FILTERING_RULES_ID) {
|
||||
return t('custom_filter_rules');
|
||||
}
|
||||
|
||||
const filter = filters.find((filter) => filter.id === filterId)
|
||||
|| whitelistFilters.find((filter) => filter.id === filterId);
|
||||
let filterName = '';
|
||||
|
||||
if (filter) {
|
||||
filterName = filter.name;
|
||||
}
|
||||
|
||||
if (!filterName) {
|
||||
filterName = t('unknown_filter', { filterId });
|
||||
}
|
||||
|
||||
return filterName;
|
||||
};
|
||||
|
||||
|
||||
const columns = [
|
||||
{
|
||||
Header: t('time_table_header'),
|
||||
accessor: 'time',
|
||||
Cell: (row) => getDateCell(row, isDetailed),
|
||||
minWidth: 70,
|
||||
maxHeight: 60,
|
||||
headerClassName: 'logs__text',
|
||||
},
|
||||
{
|
||||
Header: t('request_table_header'),
|
||||
accessor: 'domain',
|
||||
Cell: (row) => {
|
||||
const {
|
||||
isDetailed,
|
||||
autoClients,
|
||||
dnssec_enabled,
|
||||
} = props;
|
||||
|
||||
return getDomainCell({
|
||||
row,
|
||||
t,
|
||||
isDetailed,
|
||||
toggleBlocking,
|
||||
autoClients,
|
||||
dnssec_enabled,
|
||||
});
|
||||
},
|
||||
minWidth: 180,
|
||||
maxHeight: 60,
|
||||
headerClassName: 'logs__text',
|
||||
},
|
||||
{
|
||||
Header: t('response_table_header'),
|
||||
accessor: 'response',
|
||||
Cell: (row) => getResponseCell(
|
||||
row,
|
||||
filtering,
|
||||
t,
|
||||
isDetailed,
|
||||
getFilterName,
|
||||
),
|
||||
minWidth: 150,
|
||||
maxHeight: 60,
|
||||
headerClassName: 'logs__text',
|
||||
},
|
||||
{
|
||||
Header: function Header() {
|
||||
return <div className="d-flex justify-content-between">
|
||||
{t('client_table_header')}
|
||||
{<span>
|
||||
<svg
|
||||
className={classNames('icons icon--24 icon--green mr-2 cursor--pointer', {
|
||||
'icon--selected': !isDetailed,
|
||||
})}
|
||||
onClick={() => toggleDetailedLogs(false)}
|
||||
>
|
||||
<title><Trans>compact</Trans></title>
|
||||
<use xlinkHref='#list' />
|
||||
</svg>
|
||||
<svg
|
||||
className={classNames('icons icon--24 icon--green cursor--pointer', {
|
||||
'icon--selected': isDetailed,
|
||||
})}
|
||||
onClick={() => toggleDetailedLogs(true)}
|
||||
>
|
||||
<title><Trans>default</Trans></title>
|
||||
<use xlinkHref='#detailed_list' />
|
||||
</svg>
|
||||
</span>}
|
||||
</div>;
|
||||
},
|
||||
accessor: 'client',
|
||||
Cell: (row) => {
|
||||
const {
|
||||
isDetailed,
|
||||
autoClients,
|
||||
filtering: { processingRules },
|
||||
} = props;
|
||||
|
||||
return getClientCell({
|
||||
row,
|
||||
t,
|
||||
isDetailed,
|
||||
toggleBlocking,
|
||||
autoClients,
|
||||
processingRules,
|
||||
});
|
||||
},
|
||||
minWidth: 123,
|
||||
maxHeight: 60,
|
||||
headerClassName: 'logs__text',
|
||||
className: 'pb-0',
|
||||
},
|
||||
];
|
||||
|
||||
const changePage = async (page) => {
|
||||
setIsLoading(true);
|
||||
|
||||
const { oldest, getLogs, pages } = props;
|
||||
const isLastPage = pages && (page + 1 === pages);
|
||||
|
||||
await Promise.all([
|
||||
setLogsPage(page),
|
||||
setLogsPagination({
|
||||
page,
|
||||
pageSize: TABLE_DEFAULT_PAGE_SIZE,
|
||||
}),
|
||||
].concat(isLastPage ? getLogs(oldest, page) : []));
|
||||
|
||||
setIsLoading(false);
|
||||
};
|
||||
|
||||
const tableClass = classNames('logs__table', {
|
||||
'logs__table--detailed': isDetailed,
|
||||
});
|
||||
|
||||
return (
|
||||
<ReactTable
|
||||
manual
|
||||
minRows={0}
|
||||
page={page}
|
||||
pages={pages}
|
||||
columns={columns}
|
||||
filterable={false}
|
||||
sortable={false}
|
||||
resizable={false}
|
||||
data={logs || []}
|
||||
loading={isLoading || processingGetLogs}
|
||||
showPageJump={false}
|
||||
showPageSizeOptions={false}
|
||||
onPageChange={changePage}
|
||||
className={tableClass}
|
||||
defaultPageSize={TABLE_DEFAULT_PAGE_SIZE}
|
||||
loadingText={
|
||||
<>
|
||||
<Loading />
|
||||
<h6 className="loading__text">{t('loading_table_status')}</h6>
|
||||
</>
|
||||
}
|
||||
getLoadingProps={() => ({ className: 'loading__container' })}
|
||||
rowsText={t('rows_table_footer_text')}
|
||||
noDataText={!processingGetLogs
|
||||
&& <label className="logs__text logs__text--bold">{t('nothing_found')}</label>}
|
||||
pageText=''
|
||||
ofText=''
|
||||
showPagination={logs.length > 0}
|
||||
getPaginationProps={() => ({ className: 'custom-pagination custom-pagination--padding' })}
|
||||
getTbodyProps={() => ({ className: 'd-block' })}
|
||||
previousText={
|
||||
<svg className="icons icon--24 icon--gray w-100 h-100 cursor--pointer">
|
||||
<title><Trans>previous_btn</Trans></title>
|
||||
<use xlinkHref="#arrow-left" />
|
||||
</svg>}
|
||||
nextText={
|
||||
<svg className="icons icon--24 icon--gray w-100 h-100 cursor--pointer">
|
||||
<title><Trans>next_btn</Trans></title>
|
||||
<use xlinkHref="#arrow-right" />
|
||||
</svg>}
|
||||
renderTotalPagesCount={() => false}
|
||||
getTrGroupProps={(_state, rowInfo) => {
|
||||
if (!rowInfo) {
|
||||
return {};
|
||||
}
|
||||
|
||||
const { reason } = rowInfo.original;
|
||||
const colorClass = FILTERED_STATUS_TO_META_MAP[reason] ? FILTERED_STATUS_TO_META_MAP[reason].color : 'white';
|
||||
|
||||
return { className: colorClass };
|
||||
}}
|
||||
getTrProps={(state, rowInfo) => ({
|
||||
className: isDetailed ? 'row--detailed' : '',
|
||||
onClick: () => {
|
||||
if (isSmallScreen) {
|
||||
const { dnssec_enabled, autoClients } = props;
|
||||
const {
|
||||
answer_dnssec,
|
||||
client,
|
||||
domain,
|
||||
elapsedMs,
|
||||
info,
|
||||
reason,
|
||||
response,
|
||||
time,
|
||||
tracker,
|
||||
upstream,
|
||||
type,
|
||||
client_proto,
|
||||
filterId,
|
||||
rule,
|
||||
originalResponse,
|
||||
status,
|
||||
} = rowInfo.original;
|
||||
|
||||
const hasTracker = !!tracker;
|
||||
|
||||
const autoClient = autoClients
|
||||
.find((autoClient) => autoClient.name === client);
|
||||
|
||||
const { whois_info } = info;
|
||||
const country = whois_info?.country;
|
||||
const city = whois_info?.city;
|
||||
const network = whois_info?.orgname;
|
||||
|
||||
const source = autoClient?.source;
|
||||
|
||||
const formattedElapsedMs = formatElapsedMs(elapsedMs, t);
|
||||
const isFiltered = checkFiltered(reason);
|
||||
|
||||
const isBlocked = reason === FILTERED_STATUS.FILTERED_BLACK_LIST
|
||||
|| reason === FILTERED_STATUS.FILTERED_BLOCKED_SERVICE;
|
||||
|
||||
const buttonType = isFiltered ? BLOCK_ACTIONS.UNBLOCK : BLOCK_ACTIONS.BLOCK;
|
||||
const onToggleBlock = () => {
|
||||
toggleBlocking(buttonType, domain);
|
||||
};
|
||||
|
||||
const isBlockedByResponse = originalResponse.length > 0 && isBlocked;
|
||||
const requestStatus = t(isBlockedByResponse ? 'blocked_by_cname_or_ip' : FILTERED_STATUS_TO_META_MAP[reason]?.label || reason);
|
||||
|
||||
const protocol = t(SCHEME_TO_PROTOCOL_MAP[client_proto]) || '';
|
||||
|
||||
const sourceData = getSourceData(tracker);
|
||||
|
||||
const { filters, whitelistFilters } = filtering;
|
||||
const filter = getFilterName(filters, whitelistFilters, filterId, t);
|
||||
|
||||
const detailedData = {
|
||||
time_table_header: formatTime(time, LONG_TIME_FORMAT),
|
||||
date: formatDateTime(time, DEFAULT_SHORT_DATE_FORMAT_OPTIONS),
|
||||
encryption_status: isBlocked
|
||||
? <div className="bg--danger">{requestStatus}</div> : requestStatus,
|
||||
domain,
|
||||
type_table_header: type,
|
||||
protocol,
|
||||
known_tracker: hasTracker && 'title',
|
||||
table_name: tracker?.name,
|
||||
category_label: hasTracker && captitalizeWords(tracker.category),
|
||||
tracker_source: hasTracker && sourceData
|
||||
&& <a
|
||||
href={sourceData.url}
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
className="link--green">{sourceData.name}
|
||||
</a>,
|
||||
response_details: 'title',
|
||||
install_settings_dns: upstream,
|
||||
elapsed: formattedElapsedMs,
|
||||
filter: rule ? filter : null,
|
||||
rule_label: rule,
|
||||
response_table_header: response?.join('\n'),
|
||||
response_code: status,
|
||||
client_details: 'title',
|
||||
ip_address: client,
|
||||
name: info?.name,
|
||||
country,
|
||||
city,
|
||||
network,
|
||||
source_label: source,
|
||||
validated_with_dnssec: dnssec_enabled ? Boolean(answer_dnssec) : false,
|
||||
original_response: originalResponse?.join('\n'),
|
||||
[buttonType]: <div onClick={onToggleBlock}
|
||||
className={classNames('title--border text-center', {
|
||||
'bg--danger': isBlocked,
|
||||
})}>{t(buttonType)}</div>,
|
||||
};
|
||||
|
||||
setDetailedDataCurrent(processContent(detailedData));
|
||||
setButtonType(buttonType);
|
||||
setModalOpened(true);
|
||||
}
|
||||
},
|
||||
})}
|
||||
/>
|
||||
);
|
||||
};
|
||||
|
||||
Table.propTypes = {
|
||||
logs: PropTypes.array.isRequired,
|
||||
pages: PropTypes.number.isRequired,
|
||||
page: PropTypes.number.isRequired,
|
||||
autoClients: PropTypes.array.isRequired,
|
||||
defaultPageSize: PropTypes.number,
|
||||
oldest: PropTypes.string.isRequired,
|
||||
filtering: PropTypes.object.isRequired,
|
||||
processingGetLogs: PropTypes.bool.isRequired,
|
||||
processingGetConfig: PropTypes.bool.isRequired,
|
||||
isDetailed: PropTypes.bool.isRequired,
|
||||
setLogsPage: PropTypes.func.isRequired,
|
||||
setLogsPagination: PropTypes.func.isRequired,
|
||||
getLogs: PropTypes.func.isRequired,
|
||||
toggleDetailedLogs: PropTypes.func.isRequired,
|
||||
setRules: PropTypes.func.isRequired,
|
||||
addSuccessToast: PropTypes.func.isRequired,
|
||||
getFilteringStatus: PropTypes.func.isRequired,
|
||||
isLoading: PropTypes.bool.isRequired,
|
||||
setIsLoading: PropTypes.func.isRequired,
|
||||
dnssec_enabled: PropTypes.bool.isRequired,
|
||||
setDetailedDataCurrent: PropTypes.func.isRequired,
|
||||
setButtonType: PropTypes.func.isRequired,
|
||||
setModalOpened: PropTypes.func.isRequired,
|
||||
isSmallScreen: PropTypes.bool.isRequired,
|
||||
};
|
||||
|
||||
export default Table;
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user