mirror of
https://github.com/henrygd/beszel.git
synced 2026-04-14 17:01:51 +02:00
Compare commits
451 Commits
v0.12.10
...
61faee2450
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
61faee2450 | ||
|
|
d0be54f47c | ||
|
|
cc2be97055 | ||
|
|
2fc1565b75 | ||
|
|
f5421eff3c | ||
|
|
fc01ca1cad | ||
|
|
e2923126d2 | ||
|
|
972ce62ff5 | ||
|
|
05d9297ca3 | ||
|
|
ffc35b3c51 | ||
|
|
a547de8bf0 | ||
|
|
d8d1a89256 | ||
|
|
c29ba1c353 | ||
|
|
474d860929 | ||
|
|
fb57a57e77 | ||
|
|
02e5a8e9fc | ||
|
|
c0f6f64aa7 | ||
|
|
3077ed045d | ||
|
|
f7b62a2868 | ||
|
|
5daa0d3576 | ||
|
|
a6b9fa2aa9 | ||
|
|
5195e6d675 | ||
|
|
93e71dcf30 | ||
|
|
826227f3af | ||
|
|
cfe8645c18 | ||
|
|
681184b444 | ||
|
|
6d759cbe9f | ||
|
|
75480f66fa | ||
|
|
416c237ef3 | ||
|
|
ff64ac7a37 | ||
|
|
555f668b54 | ||
|
|
0dedc634a7 | ||
|
|
5500e45951 | ||
|
|
e7574a927f | ||
|
|
83fbaa7a3f | ||
|
|
cf3efa1f9f | ||
|
|
24093e33a9 | ||
|
|
075fad1da4 | ||
|
|
a35631415a | ||
|
|
8e99d67174 | ||
|
|
cf37c9a93c | ||
|
|
402d1d9fec | ||
|
|
b4f2afa4b6 | ||
|
|
beff2eb43f | ||
|
|
2e0d12a02d | ||
|
|
bc2fd34ac5 | ||
|
|
333cfae109 | ||
|
|
8cf8dd492d | ||
|
|
9b664b6400 | ||
|
|
c30d2fbe39 | ||
|
|
f1a4fae659 | ||
|
|
32675e403f | ||
|
|
d92d67eece | ||
|
|
ed1fc63ce2 | ||
|
|
0e2b1675fa | ||
|
|
ee8f901918 | ||
|
|
7dc2a86b1e | ||
|
|
51699ddc12 | ||
|
|
e0675567b8 | ||
|
|
61b3102eda | ||
|
|
7cc8f2b933 | ||
|
|
d38e3eab9c | ||
|
|
4ceb06b0c5 | ||
|
|
b1a468a0ab | ||
|
|
c6755183a8 | ||
|
|
cdc9f11ac0 | ||
|
|
6ccaaee57e | ||
|
|
214ee4a75a | ||
|
|
a506d3c84a | ||
|
|
812e849769 | ||
|
|
774eef1f3f | ||
|
|
fc85c50f2f | ||
|
|
fad22eee61 | ||
|
|
e84dbd639b | ||
|
|
2dd59b4e11 | ||
|
|
bb649971dc | ||
|
|
3f82ee0330 | ||
|
|
a26fde66e6 | ||
|
|
ed9b576bde | ||
|
|
aea463f5da | ||
|
|
45e00c70ab | ||
|
|
7fc4655f13 | ||
|
|
7dcaeaa2b4 | ||
|
|
d07293bf1a | ||
|
|
38298bbeab | ||
|
|
0124ccfac1 | ||
|
|
5f62ebcd7b | ||
|
|
ac354e9d6b | ||
|
|
5572cad7f6 | ||
|
|
5fa6a7c4e4 | ||
|
|
0f9442eaf8 | ||
|
|
6094d8d92d | ||
|
|
1469710166 | ||
|
|
c1df7edddc | ||
|
|
e70f06285c | ||
|
|
c5efa9b20c | ||
|
|
29a948ece4 | ||
|
|
d9b587c67b | ||
|
|
f806ae58b6 | ||
|
|
8b5dd8dedd | ||
|
|
222e5addef | ||
|
|
21e7bae720 | ||
|
|
a13d90d794 | ||
|
|
6e900d0f26 | ||
|
|
112f1853ee | ||
|
|
7aa9e3a6d3 | ||
|
|
6e9bc6a53b | ||
|
|
12eb884b1e | ||
|
|
270afa1c00 | ||
|
|
35505f2d50 | ||
|
|
5a28ba3a74 | ||
|
|
08d9126883 | ||
|
|
e9829229b6 | ||
|
|
6d7bb7ceee | ||
|
|
60a8b06b72 | ||
|
|
c4a145836b | ||
|
|
ea37451c98 | ||
|
|
1faad84cc2 | ||
|
|
d0b6200c5b | ||
|
|
fb66760665 | ||
|
|
480f1596bb | ||
|
|
6c11e2954e | ||
|
|
6a5f6530ef | ||
|
|
a4ee88bf7f | ||
|
|
d9f1f06b15 | ||
|
|
4c00988a37 | ||
|
|
193fbe9d31 | ||
|
|
ca6b6394ef | ||
|
|
1600b94846 | ||
|
|
b5aa66224a | ||
|
|
5a14eafae5 | ||
|
|
0b11dcdb1b | ||
|
|
fc1c135e71 | ||
|
|
7cb6966335 | ||
|
|
c090cf9e3e | ||
|
|
224bce7616 | ||
|
|
7fc3afb82b | ||
|
|
affdd66065 | ||
|
|
466c5a237b | ||
|
|
827758c97f | ||
|
|
fb4a35b054 | ||
|
|
ba561ec34c | ||
|
|
a94f85794c | ||
|
|
aa408f82c6 | ||
|
|
e8045a3438 | ||
|
|
7afd678f54 | ||
|
|
77e2b98470 | ||
|
|
70e894caf4 | ||
|
|
433bd6dde1 | ||
|
|
f60ee6a839 | ||
|
|
56e6dbf0a8 | ||
|
|
7ae179764d | ||
|
|
e54cac2c7b | ||
|
|
6bc8878408 | ||
|
|
0f6d85f124 | ||
|
|
b6717c11ae | ||
|
|
3cff9ccff8 | ||
|
|
3fb5f065b8 | ||
|
|
73e397abbf | ||
|
|
38f63b02bd | ||
|
|
879e84bb34 | ||
|
|
79b709d53c | ||
|
|
97e188a619 | ||
|
|
9459b59b14 | ||
|
|
c281a0717f | ||
|
|
b274261d3e | ||
|
|
63a78f2829 | ||
|
|
31aa6df5b2 | ||
|
|
74d8f685bd | ||
|
|
43a32ef0ce | ||
|
|
4426b53f47 | ||
|
|
6902e90ca7 | ||
|
|
9aeb80ce88 | ||
|
|
60c557055f | ||
|
|
0a6020b6b8 | ||
|
|
7f85b8f2a9 | ||
|
|
5ca388d855 | ||
|
|
34d74b3bcd | ||
|
|
86ff86aa99 | ||
|
|
d9a463e465 | ||
|
|
a5d0690a81 | ||
|
|
eef4092b16 | ||
|
|
a4e89676df | ||
|
|
3f083686fe | ||
|
|
cf2ccc1eb4 | ||
|
|
43c44a085b | ||
|
|
e90dfde12e | ||
|
|
a1bb77f4f2 | ||
|
|
ef582ec1ef | ||
|
|
2c30bdb2e4 | ||
|
|
5bfbc0420a | ||
|
|
b7a3222d31 | ||
|
|
d4955af3ba | ||
|
|
bde88dda26 | ||
|
|
3f51bd5ec6 | ||
|
|
092e8c9948 | ||
|
|
c35762de98 | ||
|
|
7c43e9e27c | ||
|
|
ee07a0d181 | ||
|
|
3178587f20 | ||
|
|
b07a791d6a | ||
|
|
8b6918b4a5 | ||
|
|
c7733146b7 | ||
|
|
8f23bbd436 | ||
|
|
7ca3cca15d | ||
|
|
dd553ec7b6 | ||
|
|
1a8dd0ab32 | ||
|
|
48e0c1efbf | ||
|
|
8cdddc9f5e | ||
|
|
756c5eab3e | ||
|
|
cf8102d547 | ||
|
|
156a54f26c | ||
|
|
ad1e7772af | ||
|
|
62edf55a37 | ||
|
|
223b627619 | ||
|
|
d3bc1a6764 | ||
|
|
5157144504 | ||
|
|
cdb396408f | ||
|
|
ca7c68140a | ||
|
|
5af7afb970 | ||
|
|
fd053fc8e5 | ||
|
|
f1f01657c0 | ||
|
|
1c9f03c848 | ||
|
|
82b5ee0424 | ||
|
|
0885bf2ba4 | ||
|
|
d541b42bef | ||
|
|
29599cd59c | ||
|
|
5fff9bd3ac | ||
|
|
81b6198ee7 | ||
|
|
01f58a328e | ||
|
|
6ffef3c33b | ||
|
|
3d50d0cbba | ||
|
|
a8ec54f5a5 | ||
|
|
3c44f51671 | ||
|
|
449642fdd2 | ||
|
|
bb324258d6 | ||
|
|
693117724a | ||
|
|
008dd9d184 | ||
|
|
f171ec9932 | ||
|
|
9e6e1771d1 | ||
|
|
bde6264d11 | ||
|
|
ae61acbedd | ||
|
|
af392c8084 | ||
|
|
ce8d206004 | ||
|
|
5a15e7c048 | ||
|
|
3a360f3ede | ||
|
|
7cf2493af7 | ||
|
|
d71a0083bb | ||
|
|
6f6aeeb315 | ||
|
|
7845d25c83 | ||
|
|
3320707567 | ||
|
|
e0df2a1e60 | ||
|
|
881c0cd137 | ||
|
|
5bde9500b6 | ||
|
|
b43541ea60 | ||
|
|
339e443bca | ||
|
|
8643fb2fd5 | ||
|
|
8dcf03fb15 | ||
|
|
53c3b0c359 | ||
|
|
1701947b26 | ||
|
|
c8cb041855 | ||
|
|
032d06601e | ||
|
|
1507825c16 | ||
|
|
073fc308bb | ||
|
|
9d5aaaf989 | ||
|
|
0f6063ebe5 | ||
|
|
742c217b5f | ||
|
|
85589e1e07 | ||
|
|
6ceb58254b | ||
|
|
10e21993ce | ||
|
|
ccff653ef1 | ||
|
|
323705aced | ||
|
|
774ddaa726 | ||
|
|
e75ada4483 | ||
|
|
14e8b28b85 | ||
|
|
1f7f764fca | ||
|
|
2757e51040 | ||
|
|
1233e6bee6 | ||
|
|
e4619b303e | ||
|
|
3abb7a2a29 | ||
|
|
045c3cfdf8 | ||
|
|
4b5e1cc5fa | ||
|
|
7600a47d08 | ||
|
|
47827c09f6 | ||
|
|
c8c84ca0ad | ||
|
|
309860f9d0 | ||
|
|
2a76cf4a1f | ||
|
|
6d6b6891e1 | ||
|
|
bdd24b95d2 | ||
|
|
9ae2bee9e3 | ||
|
|
b2396de0d9 | ||
|
|
d85e3bc26f | ||
|
|
2a3220be5a | ||
|
|
92910faca0 | ||
|
|
d596474426 | ||
|
|
db471ea619 | ||
|
|
f6e30b1c9f | ||
|
|
dcc013330e | ||
|
|
d6feda8a91 | ||
|
|
310892d401 | ||
|
|
302e951bb9 | ||
|
|
6810270f51 | ||
|
|
1403f75781 | ||
|
|
660a7967f8 | ||
|
|
5ad420a6bc | ||
|
|
7403f67109 | ||
|
|
626b865c3b | ||
|
|
ebbddef0d9 | ||
|
|
a528ddfea3 | ||
|
|
9c6a4873b2 | ||
|
|
82e976ff0b | ||
|
|
5342f2cbbc | ||
|
|
c7838f744f | ||
|
|
74e41851cf | ||
|
|
f1342a305c | ||
|
|
7f926c687b | ||
|
|
496cc67390 | ||
|
|
e4b300bc71 | ||
|
|
cee20d701a | ||
|
|
0cd5f3696d | ||
|
|
3686df0f9d | ||
|
|
f58f555367 | ||
|
|
adfa14ccbe | ||
|
|
26a147e2e5 | ||
|
|
b9a74e1284 | ||
|
|
21d2b3ec7b | ||
|
|
69d94b0bf9 | ||
|
|
5e49fca60e | ||
|
|
9babff17d1 | ||
|
|
be86983f00 | ||
|
|
907bb4dc52 | ||
|
|
9a34a3700d | ||
|
|
fdb468abf4 | ||
|
|
0de0326778 | ||
|
|
30db58b94f | ||
|
|
8e40b1013b | ||
|
|
aa96521696 | ||
|
|
17f40d58ac | ||
|
|
bdcdda4e9c | ||
|
|
c36d57f962 | ||
|
|
542ac4bfc0 | ||
|
|
68a684f3d6 | ||
|
|
b9bcb372f7 | ||
|
|
3d94451124 | ||
|
|
0af952d66c | ||
|
|
e46bc1ee36 | ||
|
|
5d297be871 | ||
|
|
6c0bc90f96 | ||
|
|
db0b6f77e3 | ||
|
|
7f42ab68d2 | ||
|
|
c4f6e81c56 | ||
|
|
3bf595959b | ||
|
|
5af1e058b0 | ||
|
|
ec62d1597b | ||
|
|
fa06a2935b | ||
|
|
2cdd521a10 | ||
|
|
90ac853e4f | ||
|
|
007fe0c0af | ||
|
|
f3afcd351a | ||
|
|
8eb161171e | ||
|
|
413f829107 | ||
|
|
7f09474f33 | ||
|
|
28386c58db | ||
|
|
e79aae7925 | ||
|
|
fabadf998b | ||
|
|
2f0d158ed8 | ||
|
|
b5f08d4e4c | ||
|
|
fce10da7f6 | ||
|
|
d59937dba7 | ||
|
|
0eb2bfab12 | ||
|
|
bb4111671f | ||
|
|
5e50d791fd | ||
|
|
cfaf0712d6 | ||
|
|
9cb2d694fe | ||
|
|
9f4c6b30d8 | ||
|
|
b9055a5d22 | ||
|
|
aa0d1e7f61 | ||
|
|
35a8cb1d36 | ||
|
|
92ba8a0ca3 | ||
|
|
acbc02162f | ||
|
|
8da777b6f4 | ||
|
|
e62ec1d993 | ||
|
|
4fa11b4c79 | ||
|
|
c9dba873ee | ||
|
|
3e2e897f34 | ||
|
|
9658fba5aa | ||
|
|
1c00c39eac | ||
|
|
2d3f186c18 | ||
|
|
983a471e6f | ||
|
|
7a228f553c | ||
|
|
007dfa9519 | ||
|
|
f3a74b1f46 | ||
|
|
4a76b620e7 | ||
|
|
25210d031d | ||
|
|
87b55fd4cf | ||
|
|
b4430ac76f | ||
|
|
5f9aa78b72 | ||
|
|
7537f6bd5c | ||
|
|
83dee5e554 | ||
|
|
036b4495e6 | ||
|
|
31cd36fcc1 | ||
|
|
0a2aaf3260 | ||
|
|
6e2e90120a | ||
|
|
23f95d6ebd | ||
|
|
56dc1096d9 | ||
|
|
9dd203f85a | ||
|
|
adac9cf79d | ||
|
|
efd2ba04c5 | ||
|
|
a9055e216d | ||
|
|
f64130029b | ||
|
|
6d172bac82 | ||
|
|
354cba5690 | ||
|
|
e65cde9675 | ||
|
|
fbd2fbb6a6 | ||
|
|
01bf64083a | ||
|
|
103856121d | ||
|
|
8a798c7e3f | ||
|
|
beeec5c39e | ||
|
|
6d43045d79 | ||
|
|
88ea94f5b0 | ||
|
|
3b8d333f8e | ||
|
|
3a06982502 | ||
|
|
b820b46042 | ||
|
|
fab799f177 | ||
|
|
5eaf9b9157 | ||
|
|
1eed3c53c8 | ||
|
|
90729a7a95 | ||
|
|
d450f6df10 | ||
|
|
7aa2bcf761 | ||
|
|
a7a86f46c3 | ||
|
|
17e30aff60 | ||
|
|
66008e47f3 | ||
|
|
56788b1e5b | ||
|
|
b72371487a | ||
|
|
7656b4189e | ||
|
|
8e6731c102 | ||
|
|
e86fa40fe4 | ||
|
|
f0e728a1ed | ||
|
|
bb076eb439 | ||
|
|
2f0b16367a | ||
|
|
aa33124e18 | ||
|
|
42f404c80a | ||
|
|
5056fddd40 | ||
|
|
2296202ea1 | ||
|
|
c034e9b0fa | ||
|
|
2d45119a98 | ||
|
|
63be4f1ab5 | ||
|
|
6d2259100e | ||
|
|
142af6e7b6 | ||
|
|
5c1e009188 | ||
|
|
27b2cb84d6 |
8
.github/workflows/docker-images.yml
vendored
8
.github/workflows/docker-images.yml
vendored
@@ -33,14 +33,6 @@ jobs:
|
|||||||
registry: docker.io
|
registry: docker.io
|
||||||
username_secret: DOCKERHUB_USERNAME
|
username_secret: DOCKERHUB_USERNAME
|
||||||
password_secret: DOCKERHUB_TOKEN
|
password_secret: DOCKERHUB_TOKEN
|
||||||
|
|
||||||
- image: henrygd/beszel-agent-intel
|
|
||||||
context: ./
|
|
||||||
dockerfile: ./internal/dockerfile_agent_intel
|
|
||||||
platforms: linux/amd64
|
|
||||||
registry: docker.io
|
|
||||||
username_secret: DOCKERHUB_USERNAME
|
|
||||||
password_secret: DOCKERHUB_TOKEN
|
|
||||||
|
|
||||||
- image: ghcr.io/${{ github.repository }}/beszel
|
- image: ghcr.io/${{ github.repository }}/beszel
|
||||||
context: ./
|
context: ./
|
||||||
|
|||||||
2
Makefile
2
Makefile
@@ -77,7 +77,7 @@ dev-hub: export ENV=dev
|
|||||||
dev-hub:
|
dev-hub:
|
||||||
mkdir -p ./internal/site/dist && touch ./internal/site/dist/index.html
|
mkdir -p ./internal/site/dist && touch ./internal/site/dist/index.html
|
||||||
@if command -v entr >/dev/null 2>&1; then \
|
@if command -v entr >/dev/null 2>&1; then \
|
||||||
find ./internal -type f -name '*.go' | entr -r -s "cd ./internal/cmd/hub && go run -tags development . serve --http 0.0.0.0:8090"; \
|
find ./internal/cmd/hub/*.go ./internal/{alerts,hub,records,users}/*.go | entr -r -s "cd ./internal/cmd/hub && go run -tags development . serve --http 0.0.0.0:8090"; \
|
||||||
else \
|
else \
|
||||||
cd ./internal/cmd/hub && go run -tags development . serve --http 0.0.0.0:8090; \
|
cd ./internal/cmd/hub && go run -tags development . serve --http 0.0.0.0:8090; \
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -20,8 +20,9 @@ func HasReadableBattery() bool {
|
|||||||
}
|
}
|
||||||
haveCheckedBattery = true
|
haveCheckedBattery = true
|
||||||
bat, err := battery.Get(0)
|
bat, err := battery.Get(0)
|
||||||
systemHasBattery = err == nil && bat != nil && bat.Design != 0 && bat.Full != 0
|
if err == nil && bat != nil {
|
||||||
if !systemHasBattery {
|
systemHasBattery = true
|
||||||
|
} else {
|
||||||
slog.Debug("No battery found", "err", err)
|
slog.Debug("No battery found", "err", err)
|
||||||
}
|
}
|
||||||
return systemHasBattery
|
return systemHasBattery
|
||||||
|
|||||||
@@ -85,7 +85,7 @@ func getToken() (string, error) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "", err
|
||||||
}
|
}
|
||||||
return strings.TrimSpace(string(tokenBytes)), nil
|
return string(tokenBytes), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// getOptions returns the WebSocket client options, creating them if necessary.
|
// getOptions returns the WebSocket client options, creating them if necessary.
|
||||||
|
|||||||
@@ -537,25 +537,4 @@ func TestGetToken(t *testing.T) {
|
|||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
assert.Equal(t, "", token, "Empty file should return empty string")
|
assert.Equal(t, "", token, "Empty file should return empty string")
|
||||||
})
|
})
|
||||||
|
|
||||||
t.Run("strips whitespace from TOKEN_FILE", func(t *testing.T) {
|
|
||||||
unsetEnvVars()
|
|
||||||
|
|
||||||
tokenWithWhitespace := " test-token-with-whitespace \n\t"
|
|
||||||
expectedToken := "test-token-with-whitespace"
|
|
||||||
tokenFile, err := os.CreateTemp("", "token-test-*.txt")
|
|
||||||
require.NoError(t, err)
|
|
||||||
defer os.Remove(tokenFile.Name())
|
|
||||||
|
|
||||||
_, err = tokenFile.WriteString(tokenWithWhitespace)
|
|
||||||
require.NoError(t, err)
|
|
||||||
tokenFile.Close()
|
|
||||||
|
|
||||||
os.Setenv("TOKEN_FILE", tokenFile.Name())
|
|
||||||
defer os.Unsetenv("TOKEN_FILE")
|
|
||||||
|
|
||||||
token, err := getToken()
|
|
||||||
assert.NoError(t, err)
|
|
||||||
assert.Equal(t, expectedToken, token, "Whitespace should be stripped from token file content")
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,21 +9,19 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/henrygd/beszel/agent/health"
|
"github.com/henrygd/beszel/agent/health"
|
||||||
"github.com/henrygd/beszel/internal/entities/system"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// ConnectionManager manages the connection state and events for the agent.
|
// ConnectionManager manages the connection state and events for the agent.
|
||||||
// It handles both WebSocket and SSH connections, automatically switching between
|
// It handles both WebSocket and SSH connections, automatically switching between
|
||||||
// them based on availability and managing reconnection attempts.
|
// them based on availability and managing reconnection attempts.
|
||||||
type ConnectionManager struct {
|
type ConnectionManager struct {
|
||||||
agent *Agent // Reference to the parent agent
|
agent *Agent // Reference to the parent agent
|
||||||
State ConnectionState // Current connection state
|
State ConnectionState // Current connection state
|
||||||
eventChan chan ConnectionEvent // Channel for connection events
|
eventChan chan ConnectionEvent // Channel for connection events
|
||||||
wsClient *WebSocketClient // WebSocket client for hub communication
|
wsClient *WebSocketClient // WebSocket client for hub communication
|
||||||
serverOptions ServerOptions // Configuration for SSH server
|
serverOptions ServerOptions // Configuration for SSH server
|
||||||
wsTicker *time.Ticker // Ticker for WebSocket connection attempts
|
wsTicker *time.Ticker // Ticker for WebSocket connection attempts
|
||||||
isConnecting bool // Prevents multiple simultaneous reconnection attempts
|
isConnecting bool // Prevents multiple simultaneous reconnection attempts
|
||||||
ConnectionType system.ConnectionType
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// ConnectionState represents the current connection state of the agent.
|
// ConnectionState represents the current connection state of the agent.
|
||||||
@@ -146,18 +144,15 @@ func (c *ConnectionManager) handleStateChange(newState ConnectionState) {
|
|||||||
switch newState {
|
switch newState {
|
||||||
case WebSocketConnected:
|
case WebSocketConnected:
|
||||||
slog.Info("WebSocket connected", "host", c.wsClient.hubURL.Host)
|
slog.Info("WebSocket connected", "host", c.wsClient.hubURL.Host)
|
||||||
c.ConnectionType = system.ConnectionTypeWebSocket
|
|
||||||
c.stopWsTicker()
|
c.stopWsTicker()
|
||||||
_ = c.agent.StopServer()
|
_ = c.agent.StopServer()
|
||||||
c.isConnecting = false
|
c.isConnecting = false
|
||||||
case SSHConnected:
|
case SSHConnected:
|
||||||
// stop new ws connection attempts
|
// stop new ws connection attempts
|
||||||
slog.Info("SSH connection established")
|
slog.Info("SSH connection established")
|
||||||
c.ConnectionType = system.ConnectionTypeSSH
|
|
||||||
c.stopWsTicker()
|
c.stopWsTicker()
|
||||||
c.isConnecting = false
|
c.isConnecting = false
|
||||||
case Disconnected:
|
case Disconnected:
|
||||||
c.ConnectionType = system.ConnectionTypeNone
|
|
||||||
if c.isConnecting {
|
if c.isConnecting {
|
||||||
// Already handling reconnection, avoid duplicate attempts
|
// Already handling reconnection, avoid duplicate attempts
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -1,81 +0,0 @@
|
|||||||
// Package deltatracker provides a tracker for calculating differences in numeric values over time.
|
|
||||||
package deltatracker
|
|
||||||
|
|
||||||
import (
|
|
||||||
"sync"
|
|
||||||
|
|
||||||
"golang.org/x/exp/constraints"
|
|
||||||
)
|
|
||||||
|
|
||||||
// Numeric is a constraint that permits any integer or floating-point type.
|
|
||||||
type Numeric interface {
|
|
||||||
constraints.Integer | constraints.Float
|
|
||||||
}
|
|
||||||
|
|
||||||
// DeltaTracker is a generic, thread-safe tracker for calculating differences
|
|
||||||
// in numeric values over time.
|
|
||||||
// K is the key type (e.g., int, string).
|
|
||||||
// V is the value type (e.g., int, int64, float32, float64).
|
|
||||||
type DeltaTracker[K comparable, V Numeric] struct {
|
|
||||||
sync.RWMutex
|
|
||||||
current map[K]V
|
|
||||||
previous map[K]V
|
|
||||||
}
|
|
||||||
|
|
||||||
// NewDeltaTracker creates a new generic tracker.
|
|
||||||
func NewDeltaTracker[K comparable, V Numeric]() *DeltaTracker[K, V] {
|
|
||||||
return &DeltaTracker[K, V]{
|
|
||||||
current: make(map[K]V),
|
|
||||||
previous: make(map[K]V),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Set records the current value for a given ID.
|
|
||||||
func (t *DeltaTracker[K, V]) Set(id K, value V) {
|
|
||||||
t.Lock()
|
|
||||||
defer t.Unlock()
|
|
||||||
t.current[id] = value
|
|
||||||
}
|
|
||||||
|
|
||||||
// Deltas returns a map of all calculated deltas for the current interval.
|
|
||||||
func (t *DeltaTracker[K, V]) Deltas() map[K]V {
|
|
||||||
t.RLock()
|
|
||||||
defer t.RUnlock()
|
|
||||||
|
|
||||||
deltas := make(map[K]V)
|
|
||||||
for id, currentVal := range t.current {
|
|
||||||
if previousVal, ok := t.previous[id]; ok {
|
|
||||||
deltas[id] = currentVal - previousVal
|
|
||||||
} else {
|
|
||||||
deltas[id] = 0
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return deltas
|
|
||||||
}
|
|
||||||
|
|
||||||
// Delta returns the delta for a single key.
|
|
||||||
// Returns 0 if the key doesn't exist or has no previous value.
|
|
||||||
func (t *DeltaTracker[K, V]) Delta(id K) V {
|
|
||||||
t.RLock()
|
|
||||||
defer t.RUnlock()
|
|
||||||
|
|
||||||
currentVal, currentOk := t.current[id]
|
|
||||||
if !currentOk {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
previousVal, previousOk := t.previous[id]
|
|
||||||
if !previousOk {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
return currentVal - previousVal
|
|
||||||
}
|
|
||||||
|
|
||||||
// Cycle prepares the tracker for the next interval.
|
|
||||||
func (t *DeltaTracker[K, V]) Cycle() {
|
|
||||||
t.Lock()
|
|
||||||
defer t.Unlock()
|
|
||||||
t.previous = t.current
|
|
||||||
t.current = make(map[K]V)
|
|
||||||
}
|
|
||||||
@@ -1,217 +0,0 @@
|
|||||||
package deltatracker
|
|
||||||
|
|
||||||
import (
|
|
||||||
"fmt"
|
|
||||||
"testing"
|
|
||||||
|
|
||||||
"github.com/stretchr/testify/assert"
|
|
||||||
)
|
|
||||||
|
|
||||||
func ExampleDeltaTracker() {
|
|
||||||
tracker := NewDeltaTracker[string, int]()
|
|
||||||
tracker.Set("key1", 10)
|
|
||||||
tracker.Set("key2", 20)
|
|
||||||
tracker.Cycle()
|
|
||||||
tracker.Set("key1", 15)
|
|
||||||
tracker.Set("key2", 30)
|
|
||||||
fmt.Println(tracker.Delta("key1"))
|
|
||||||
fmt.Println(tracker.Delta("key2"))
|
|
||||||
fmt.Println(tracker.Deltas())
|
|
||||||
// Output: 5
|
|
||||||
// 10
|
|
||||||
// map[key1:5 key2:10]
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestNewDeltaTracker(t *testing.T) {
|
|
||||||
tracker := NewDeltaTracker[string, int]()
|
|
||||||
assert.NotNil(t, tracker)
|
|
||||||
assert.Empty(t, tracker.current)
|
|
||||||
assert.Empty(t, tracker.previous)
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestSet(t *testing.T) {
|
|
||||||
tracker := NewDeltaTracker[string, int]()
|
|
||||||
tracker.Set("key1", 10)
|
|
||||||
|
|
||||||
tracker.RLock()
|
|
||||||
defer tracker.RUnlock()
|
|
||||||
|
|
||||||
assert.Equal(t, 10, tracker.current["key1"])
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestDeltas(t *testing.T) {
|
|
||||||
tracker := NewDeltaTracker[string, int]()
|
|
||||||
|
|
||||||
// Test with no previous values
|
|
||||||
tracker.Set("key1", 10)
|
|
||||||
tracker.Set("key2", 20)
|
|
||||||
|
|
||||||
deltas := tracker.Deltas()
|
|
||||||
assert.Equal(t, 0, deltas["key1"])
|
|
||||||
assert.Equal(t, 0, deltas["key2"])
|
|
||||||
|
|
||||||
// Cycle to move current to previous
|
|
||||||
tracker.Cycle()
|
|
||||||
|
|
||||||
// Set new values and check deltas
|
|
||||||
tracker.Set("key1", 15) // Delta should be 5 (15-10)
|
|
||||||
tracker.Set("key2", 25) // Delta should be 5 (25-20)
|
|
||||||
tracker.Set("key3", 30) // New key, delta should be 0
|
|
||||||
|
|
||||||
deltas = tracker.Deltas()
|
|
||||||
assert.Equal(t, 5, deltas["key1"])
|
|
||||||
assert.Equal(t, 5, deltas["key2"])
|
|
||||||
assert.Equal(t, 0, deltas["key3"])
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestCycle(t *testing.T) {
|
|
||||||
tracker := NewDeltaTracker[string, int]()
|
|
||||||
|
|
||||||
tracker.Set("key1", 10)
|
|
||||||
tracker.Set("key2", 20)
|
|
||||||
|
|
||||||
// Verify current has values
|
|
||||||
tracker.RLock()
|
|
||||||
assert.Equal(t, 10, tracker.current["key1"])
|
|
||||||
assert.Equal(t, 20, tracker.current["key2"])
|
|
||||||
assert.Empty(t, tracker.previous)
|
|
||||||
tracker.RUnlock()
|
|
||||||
|
|
||||||
tracker.Cycle()
|
|
||||||
|
|
||||||
// After cycle, previous should have the old current values
|
|
||||||
// and current should be empty
|
|
||||||
tracker.RLock()
|
|
||||||
assert.Empty(t, tracker.current)
|
|
||||||
assert.Equal(t, 10, tracker.previous["key1"])
|
|
||||||
assert.Equal(t, 20, tracker.previous["key2"])
|
|
||||||
tracker.RUnlock()
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestCompleteWorkflow(t *testing.T) {
|
|
||||||
tracker := NewDeltaTracker[string, int]()
|
|
||||||
|
|
||||||
// First interval
|
|
||||||
tracker.Set("server1", 100)
|
|
||||||
tracker.Set("server2", 200)
|
|
||||||
|
|
||||||
// Get deltas for first interval (should be zero)
|
|
||||||
firstDeltas := tracker.Deltas()
|
|
||||||
assert.Equal(t, 0, firstDeltas["server1"])
|
|
||||||
assert.Equal(t, 0, firstDeltas["server2"])
|
|
||||||
|
|
||||||
// Cycle to next interval
|
|
||||||
tracker.Cycle()
|
|
||||||
|
|
||||||
// Second interval
|
|
||||||
tracker.Set("server1", 150) // Delta: 50
|
|
||||||
tracker.Set("server2", 180) // Delta: -20
|
|
||||||
tracker.Set("server3", 300) // New server, delta: 300
|
|
||||||
|
|
||||||
secondDeltas := tracker.Deltas()
|
|
||||||
assert.Equal(t, 50, secondDeltas["server1"])
|
|
||||||
assert.Equal(t, -20, secondDeltas["server2"])
|
|
||||||
assert.Equal(t, 0, secondDeltas["server3"])
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestDeltaTrackerWithDifferentTypes(t *testing.T) {
|
|
||||||
// Test with int64
|
|
||||||
intTracker := NewDeltaTracker[string, int64]()
|
|
||||||
intTracker.Set("pid1", 1000)
|
|
||||||
intTracker.Cycle()
|
|
||||||
intTracker.Set("pid1", 1200)
|
|
||||||
intDeltas := intTracker.Deltas()
|
|
||||||
assert.Equal(t, int64(200), intDeltas["pid1"])
|
|
||||||
|
|
||||||
// Test with float64
|
|
||||||
floatTracker := NewDeltaTracker[string, float64]()
|
|
||||||
floatTracker.Set("cpu1", 1.5)
|
|
||||||
floatTracker.Cycle()
|
|
||||||
floatTracker.Set("cpu1", 2.7)
|
|
||||||
floatDeltas := floatTracker.Deltas()
|
|
||||||
assert.InDelta(t, 1.2, floatDeltas["cpu1"], 0.0001)
|
|
||||||
|
|
||||||
// Test with int keys
|
|
||||||
pidTracker := NewDeltaTracker[int, int64]()
|
|
||||||
pidTracker.Set(101, 20000)
|
|
||||||
pidTracker.Cycle()
|
|
||||||
pidTracker.Set(101, 22500)
|
|
||||||
pidDeltas := pidTracker.Deltas()
|
|
||||||
assert.Equal(t, int64(2500), pidDeltas[101])
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestDelta(t *testing.T) {
|
|
||||||
tracker := NewDeltaTracker[string, int]()
|
|
||||||
|
|
||||||
// Test getting delta for non-existent key
|
|
||||||
result := tracker.Delta("nonexistent")
|
|
||||||
assert.Equal(t, 0, result)
|
|
||||||
|
|
||||||
// Test getting delta for key with no previous value
|
|
||||||
tracker.Set("key1", 10)
|
|
||||||
result = tracker.Delta("key1")
|
|
||||||
assert.Equal(t, 0, result)
|
|
||||||
|
|
||||||
// Cycle to move current to previous
|
|
||||||
tracker.Cycle()
|
|
||||||
|
|
||||||
// Test getting delta for key with previous value
|
|
||||||
tracker.Set("key1", 15)
|
|
||||||
result = tracker.Delta("key1")
|
|
||||||
assert.Equal(t, 5, result)
|
|
||||||
|
|
||||||
// Test getting delta for key that exists in previous but not current
|
|
||||||
result = tracker.Delta("key1")
|
|
||||||
assert.Equal(t, 5, result) // Should still return 5
|
|
||||||
|
|
||||||
// Test getting delta for key that exists in current but not previous
|
|
||||||
tracker.Set("key2", 20)
|
|
||||||
result = tracker.Delta("key2")
|
|
||||||
assert.Equal(t, 0, result)
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestDeltaWithDifferentTypes(t *testing.T) {
|
|
||||||
// Test with int64
|
|
||||||
intTracker := NewDeltaTracker[string, int64]()
|
|
||||||
intTracker.Set("pid1", 1000)
|
|
||||||
intTracker.Cycle()
|
|
||||||
intTracker.Set("pid1", 1200)
|
|
||||||
result := intTracker.Delta("pid1")
|
|
||||||
assert.Equal(t, int64(200), result)
|
|
||||||
|
|
||||||
// Test with float64
|
|
||||||
floatTracker := NewDeltaTracker[string, float64]()
|
|
||||||
floatTracker.Set("cpu1", 1.5)
|
|
||||||
floatTracker.Cycle()
|
|
||||||
floatTracker.Set("cpu1", 2.7)
|
|
||||||
floatResult := floatTracker.Delta("cpu1")
|
|
||||||
assert.InDelta(t, 1.2, floatResult, 0.0001)
|
|
||||||
|
|
||||||
// Test with int keys
|
|
||||||
pidTracker := NewDeltaTracker[int, int64]()
|
|
||||||
pidTracker.Set(101, 20000)
|
|
||||||
pidTracker.Cycle()
|
|
||||||
pidTracker.Set(101, 22500)
|
|
||||||
pidResult := pidTracker.Delta(101)
|
|
||||||
assert.Equal(t, int64(2500), pidResult)
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestDeltaConcurrentAccess(t *testing.T) {
|
|
||||||
tracker := NewDeltaTracker[string, int]()
|
|
||||||
|
|
||||||
// Set initial values
|
|
||||||
tracker.Set("key1", 10)
|
|
||||||
tracker.Set("key2", 20)
|
|
||||||
tracker.Cycle()
|
|
||||||
|
|
||||||
// Set new values
|
|
||||||
tracker.Set("key1", 15)
|
|
||||||
tracker.Set("key2", 25)
|
|
||||||
|
|
||||||
// Test concurrent access safety
|
|
||||||
result1 := tracker.Delta("key1")
|
|
||||||
result2 := tracker.Delta("key2")
|
|
||||||
|
|
||||||
assert.Equal(t, 5, result1)
|
|
||||||
assert.Equal(t, 5, result2)
|
|
||||||
}
|
|
||||||
74
agent/gpu.go
74
agent/gpu.go
@@ -27,10 +27,13 @@ const (
|
|||||||
nvidiaSmiInterval string = "4" // in seconds
|
nvidiaSmiInterval string = "4" // in seconds
|
||||||
tegraStatsInterval string = "3700" // in milliseconds
|
tegraStatsInterval string = "3700" // in milliseconds
|
||||||
rocmSmiInterval time.Duration = 4300 * time.Millisecond
|
rocmSmiInterval time.Duration = 4300 * time.Millisecond
|
||||||
|
|
||||||
// Command retry and timeout constants
|
// Command retry and timeout constants
|
||||||
retryWaitTime time.Duration = 5 * time.Second
|
retryWaitTime time.Duration = 5 * time.Second
|
||||||
maxFailureRetries int = 5
|
maxFailureRetries int = 5
|
||||||
|
|
||||||
|
cmdBufferSize uint16 = 10 * 1024
|
||||||
|
|
||||||
// Unit Conversions
|
// Unit Conversions
|
||||||
mebibytesInAMegabyte float64 = 1.024 // nvidia-smi reports memory in MiB
|
mebibytesInAMegabyte float64 = 1.024 // nvidia-smi reports memory in MiB
|
||||||
milliwattsInAWatt float64 = 1000.0 // tegrastats reports power in mW
|
milliwattsInAWatt float64 = 1000.0 // tegrastats reports power in mW
|
||||||
@@ -39,11 +42,10 @@ const (
|
|||||||
// GPUManager manages data collection for GPUs (either Nvidia or AMD)
|
// GPUManager manages data collection for GPUs (either Nvidia or AMD)
|
||||||
type GPUManager struct {
|
type GPUManager struct {
|
||||||
sync.Mutex
|
sync.Mutex
|
||||||
nvidiaSmi bool
|
nvidiaSmi bool
|
||||||
rocmSmi bool
|
rocmSmi bool
|
||||||
tegrastats bool
|
tegrastats bool
|
||||||
intelGpuStats bool
|
GpuDataMap map[string]*system.GPUData
|
||||||
GpuDataMap map[string]*system.GPUData
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// RocmSmiJson represents the JSON structure of rocm-smi output
|
// RocmSmiJson represents the JSON structure of rocm-smi output
|
||||||
@@ -64,7 +66,6 @@ type gpuCollector struct {
|
|||||||
cmdArgs []string
|
cmdArgs []string
|
||||||
parse func([]byte) bool // returns true if valid data was found
|
parse func([]byte) bool // returns true if valid data was found
|
||||||
buf []byte
|
buf []byte
|
||||||
bufSize uint16
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var errNoValidData = fmt.Errorf("no valid GPU data found") // Error for missing data
|
var errNoValidData = fmt.Errorf("no valid GPU data found") // Error for missing data
|
||||||
@@ -98,7 +99,7 @@ func (c *gpuCollector) collect() error {
|
|||||||
|
|
||||||
scanner := bufio.NewScanner(stdout)
|
scanner := bufio.NewScanner(stdout)
|
||||||
if c.buf == nil {
|
if c.buf == nil {
|
||||||
c.buf = make([]byte, 0, c.bufSize)
|
c.buf = make([]byte, 0, cmdBufferSize)
|
||||||
}
|
}
|
||||||
scanner.Buffer(c.buf, bufio.MaxScanTokenSize)
|
scanner.Buffer(c.buf, bufio.MaxScanTokenSize)
|
||||||
|
|
||||||
@@ -243,31 +244,20 @@ func (gm *GPUManager) GetCurrentData() map[string]system.GPUData {
|
|||||||
// copy / reset the data
|
// copy / reset the data
|
||||||
gpuData := make(map[string]system.GPUData, len(gm.GpuDataMap))
|
gpuData := make(map[string]system.GPUData, len(gm.GpuDataMap))
|
||||||
for id, gpu := range gm.GpuDataMap {
|
for id, gpu := range gm.GpuDataMap {
|
||||||
// avoid division by zero
|
|
||||||
count := max(gpu.Count, 1)
|
|
||||||
|
|
||||||
// average the data
|
|
||||||
gpuAvg := *gpu
|
gpuAvg := *gpu
|
||||||
gpuAvg.Temperature = twoDecimals(gpu.Temperature)
|
|
||||||
gpuAvg.Power = twoDecimals(gpu.Power / count)
|
|
||||||
|
|
||||||
// intel gpu stats doesn't provide usage, memory used, or memory total
|
gpuAvg.Temperature = twoDecimals(gpu.Temperature)
|
||||||
if gpu.Engines != nil {
|
gpuAvg.MemoryUsed = twoDecimals(gpu.MemoryUsed)
|
||||||
maxEngineUsage := 0.0
|
gpuAvg.MemoryTotal = twoDecimals(gpu.MemoryTotal)
|
||||||
for name, engine := range gpu.Engines {
|
|
||||||
gpuAvg.Engines[name] = twoDecimals(engine / count)
|
// avoid division by zero
|
||||||
maxEngineUsage = max(maxEngineUsage, engine/count)
|
if gpu.Count > 0 {
|
||||||
}
|
gpuAvg.Usage = twoDecimals(gpu.Usage / gpu.Count)
|
||||||
gpuAvg.Usage = twoDecimals(maxEngineUsage)
|
gpuAvg.Power = twoDecimals(gpu.Power / gpu.Count)
|
||||||
} else {
|
|
||||||
gpuAvg.Usage = twoDecimals(gpu.Usage / count)
|
|
||||||
gpuAvg.MemoryUsed = twoDecimals(gpu.MemoryUsed)
|
|
||||||
gpuAvg.MemoryTotal = twoDecimals(gpu.MemoryTotal)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// reset accumulators in the original gpu data for next collection
|
// reset accumulators in the original
|
||||||
gpu.Usage, gpu.Power, gpu.Count = gpuAvg.Usage, gpuAvg.Power, 1
|
gpu.Usage, gpu.Power, gpu.Count = 0, 0, 0
|
||||||
gpu.Engines = gpuAvg.Engines
|
|
||||||
|
|
||||||
// append id to the name if there are multiple GPUs with the same name
|
// append id to the name if there are multiple GPUs with the same name
|
||||||
if nameCounts[gpu.Name] > 1 {
|
if nameCounts[gpu.Name] > 1 {
|
||||||
@@ -294,37 +284,18 @@ func (gm *GPUManager) detectGPUs() error {
|
|||||||
gm.tegrastats = true
|
gm.tegrastats = true
|
||||||
gm.nvidiaSmi = false
|
gm.nvidiaSmi = false
|
||||||
}
|
}
|
||||||
if _, err := exec.LookPath(intelGpuStatsCmd); err == nil {
|
if gm.nvidiaSmi || gm.rocmSmi || gm.tegrastats {
|
||||||
gm.intelGpuStats = true
|
|
||||||
}
|
|
||||||
if gm.nvidiaSmi || gm.rocmSmi || gm.tegrastats || gm.intelGpuStats {
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
return fmt.Errorf("no GPU found - install nvidia-smi, rocm-smi, tegrastats, or intel_gpu_top")
|
return fmt.Errorf("no GPU found - install nvidia-smi, rocm-smi, or tegrastats")
|
||||||
}
|
}
|
||||||
|
|
||||||
// startCollector starts the appropriate GPU data collector based on the command
|
// startCollector starts the appropriate GPU data collector based on the command
|
||||||
func (gm *GPUManager) startCollector(command string) {
|
func (gm *GPUManager) startCollector(command string) {
|
||||||
collector := gpuCollector{
|
collector := gpuCollector{
|
||||||
name: command,
|
name: command,
|
||||||
bufSize: 10 * 1024,
|
|
||||||
}
|
}
|
||||||
switch command {
|
switch command {
|
||||||
case intelGpuStatsCmd:
|
|
||||||
go func() {
|
|
||||||
failures := 0
|
|
||||||
for {
|
|
||||||
if err := gm.collectIntelStats(); err != nil {
|
|
||||||
failures++
|
|
||||||
if failures > maxFailureRetries {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
slog.Warn("Error collecting Intel GPU data; see https://beszel.dev/guide/gpu", "err", err)
|
|
||||||
time.Sleep(retryWaitTime)
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}()
|
|
||||||
case nvidiaSmiCmd:
|
case nvidiaSmiCmd:
|
||||||
collector.cmdArgs = []string{
|
collector.cmdArgs = []string{
|
||||||
"-l", nvidiaSmiInterval,
|
"-l", nvidiaSmiInterval,
|
||||||
@@ -373,9 +344,6 @@ func NewGPUManager() (*GPUManager, error) {
|
|||||||
if gm.tegrastats {
|
if gm.tegrastats {
|
||||||
gm.startCollector(tegraStatsCmd)
|
gm.startCollector(tegraStatsCmd)
|
||||||
}
|
}
|
||||||
if gm.intelGpuStats {
|
|
||||||
gm.startCollector(intelGpuStatsCmd)
|
|
||||||
}
|
|
||||||
|
|
||||||
return &gm, nil
|
return &gm, nil
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,102 +0,0 @@
|
|||||||
package agent
|
|
||||||
|
|
||||||
import (
|
|
||||||
"encoding/json"
|
|
||||||
"fmt"
|
|
||||||
"os/exec"
|
|
||||||
|
|
||||||
"github.com/henrygd/beszel/internal/entities/system"
|
|
||||||
)
|
|
||||||
|
|
||||||
const (
|
|
||||||
intelGpuStatsCmd string = "intel_gpu_top"
|
|
||||||
intelGpuStatsInterval string = "3300" // in milliseconds
|
|
||||||
)
|
|
||||||
|
|
||||||
type intelGpuStats struct {
|
|
||||||
Power struct {
|
|
||||||
GPU float64 `json:"GPU"`
|
|
||||||
} `json:"power"`
|
|
||||||
Engines map[string]struct {
|
|
||||||
Busy float64 `json:"busy"`
|
|
||||||
} `json:"engines"`
|
|
||||||
}
|
|
||||||
|
|
||||||
// updateIntelFromStats updates aggregated GPU data from a single intelGpuStats sample
|
|
||||||
func (gm *GPUManager) updateIntelFromStats(sample *intelGpuStats) bool {
|
|
||||||
gm.Lock()
|
|
||||||
defer gm.Unlock()
|
|
||||||
|
|
||||||
// only one gpu for now - cmd doesn't provide all by default
|
|
||||||
gpuData, ok := gm.GpuDataMap["0"]
|
|
||||||
if !ok {
|
|
||||||
gpuData = &system.GPUData{Name: "GPU", Engines: make(map[string]float64)}
|
|
||||||
gm.GpuDataMap["0"] = gpuData
|
|
||||||
}
|
|
||||||
|
|
||||||
if sample.Power.GPU > 0 {
|
|
||||||
gpuData.Power += sample.Power.GPU
|
|
||||||
}
|
|
||||||
|
|
||||||
if gpuData.Engines == nil {
|
|
||||||
gpuData.Engines = make(map[string]float64, len(sample.Engines))
|
|
||||||
}
|
|
||||||
for name, engine := range sample.Engines {
|
|
||||||
gpuData.Engines[name] += engine.Busy
|
|
||||||
}
|
|
||||||
|
|
||||||
gpuData.Count++
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
// collectIntelStats executes intel_gpu_top in JSON mode and stream-decodes the array of samples
|
|
||||||
func (gm *GPUManager) collectIntelStats() error {
|
|
||||||
cmd := exec.Command(intelGpuStatsCmd, "-s", intelGpuStatsInterval, "-J")
|
|
||||||
stdout, err := cmd.StdoutPipe()
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
if err := cmd.Start(); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
dec := json.NewDecoder(stdout)
|
|
||||||
|
|
||||||
// Expect a JSON array stream: [ { ... }, { ... }, ... ]
|
|
||||||
tok, err := dec.Token()
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
if delim, ok := tok.(json.Delim); !ok || delim != '[' {
|
|
||||||
return fmt.Errorf("unexpected JSON start token: %v", tok)
|
|
||||||
}
|
|
||||||
|
|
||||||
var sample intelGpuStats
|
|
||||||
for {
|
|
||||||
if dec.More() {
|
|
||||||
// Clear the engines map before decoding
|
|
||||||
if sample.Engines != nil {
|
|
||||||
for k := range sample.Engines {
|
|
||||||
delete(sample.Engines, k)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if err := dec.Decode(&sample); err != nil {
|
|
||||||
return fmt.Errorf("decode intel gpu: %w", err)
|
|
||||||
}
|
|
||||||
gm.updateIntelFromStats(&sample)
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
// Attempt to read closing bracket (will only be present when process exits)
|
|
||||||
tok, err = dec.Token()
|
|
||||||
if err != nil {
|
|
||||||
// When the process is still running, decoder will block in More/Decode; any error here is terminal
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
if delim, ok := tok.(json.Delim); ok && delim == ']' {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return cmd.Wait()
|
|
||||||
}
|
|
||||||
@@ -379,12 +379,12 @@ func TestGetCurrentData(t *testing.T) {
|
|||||||
assert.InDelta(t, 60.0, result["1"].Power, 0.01)
|
assert.InDelta(t, 60.0, result["1"].Power, 0.01)
|
||||||
|
|
||||||
// Verify that accumulators in the original map are reset
|
// Verify that accumulators in the original map are reset
|
||||||
assert.EqualValues(t, float64(1), gm.GpuDataMap["0"].Count, "GPU 0 Count should be reset")
|
assert.Equal(t, float64(0), gm.GpuDataMap["0"].Count, "GPU 0 Count should be reset")
|
||||||
assert.EqualValues(t, float64(50.0), gm.GpuDataMap["0"].Usage, "GPU 0 Usage should be reset")
|
assert.Equal(t, float64(0), gm.GpuDataMap["0"].Usage, "GPU 0 Usage should be reset")
|
||||||
assert.Equal(t, float64(100.0), gm.GpuDataMap["0"].Power, "GPU 0 Power should be reset")
|
assert.Equal(t, float64(0), gm.GpuDataMap["0"].Power, "GPU 0 Power should be reset")
|
||||||
assert.Equal(t, float64(1), gm.GpuDataMap["1"].Count, "GPU 1 Count should be reset")
|
assert.Equal(t, float64(0), gm.GpuDataMap["1"].Count, "GPU 1 Count should be reset")
|
||||||
assert.Equal(t, float64(30), gm.GpuDataMap["1"].Usage, "GPU 1 Usage should be reset")
|
assert.Equal(t, float64(0), gm.GpuDataMap["1"].Usage, "GPU 1 Usage should be reset")
|
||||||
assert.Equal(t, float64(60), gm.GpuDataMap["1"].Power, "GPU 1 Power should be reset")
|
assert.Equal(t, float64(0), gm.GpuDataMap["1"].Power, "GPU 1 Power should be reset")
|
||||||
})
|
})
|
||||||
|
|
||||||
t.Run("handles zero count without panicking", func(t *testing.T) {
|
t.Run("handles zero count without panicking", func(t *testing.T) {
|
||||||
@@ -409,7 +409,7 @@ func TestGetCurrentData(t *testing.T) {
|
|||||||
assert.Equal(t, 0.0, result["0"].Power)
|
assert.Equal(t, 0.0, result["0"].Power)
|
||||||
|
|
||||||
// Verify reset count
|
// Verify reset count
|
||||||
assert.EqualValues(t, 1, gm.GpuDataMap["0"].Count)
|
assert.Equal(t, float64(0), gm.GpuDataMap["0"].Count)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -779,109 +779,16 @@ func TestAccumulation(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Verify that accumulators in the original map are reset
|
// Verify that accumulators in the original map are reset
|
||||||
for id, expected := range tt.expectedValues {
|
for id := range tt.expectedValues {
|
||||||
gpu, exists := gm.GpuDataMap[id]
|
gpu, exists := gm.GpuDataMap[id]
|
||||||
assert.True(t, exists, "GPU with ID %s should still exist after GetCurrentData", id)
|
assert.True(t, exists, "GPU with ID %s should still exist after GetCurrentData", id)
|
||||||
if !exists {
|
if !exists {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
assert.EqualValues(t, 1, gpu.Count, "Count should be reset for GPU ID %s", id)
|
assert.Equal(t, float64(0), gpu.Count, "Count should be reset for GPU ID %s", id)
|
||||||
assert.EqualValues(t, expected.avgUsage, gpu.Usage, "Usage should be reset for GPU ID %s", id)
|
assert.Equal(t, float64(0), gpu.Usage, "Usage should be reset for GPU ID %s", id)
|
||||||
assert.EqualValues(t, expected.avgPower, gpu.Power, "Power should be reset for GPU ID %s", id)
|
assert.Equal(t, float64(0), gpu.Power, "Power should be reset for GPU ID %s", id)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestIntelUpdateFromStats(t *testing.T) {
|
|
||||||
gm := &GPUManager{
|
|
||||||
GpuDataMap: make(map[string]*system.GPUData),
|
|
||||||
}
|
|
||||||
|
|
||||||
// First sample with power and two engines
|
|
||||||
sample1 := intelGpuStats{
|
|
||||||
Engines: map[string]struct {
|
|
||||||
Busy float64 `json:"busy"`
|
|
||||||
}{
|
|
||||||
"Render/3D": {Busy: 20.0},
|
|
||||||
"Video": {Busy: 5.0},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
sample1.Power.GPU = 10.5
|
|
||||||
|
|
||||||
ok := gm.updateIntelFromStats(&sample1)
|
|
||||||
assert.True(t, ok)
|
|
||||||
|
|
||||||
gpu := gm.GpuDataMap["0"]
|
|
||||||
require.NotNil(t, gpu)
|
|
||||||
assert.Equal(t, "GPU", gpu.Name)
|
|
||||||
assert.InDelta(t, 10.5, gpu.Power, 0.001)
|
|
||||||
assert.InDelta(t, 20.0, gpu.Engines["Render/3D"], 0.001)
|
|
||||||
assert.InDelta(t, 5.0, gpu.Engines["Video"], 0.001)
|
|
||||||
assert.Equal(t, float64(1), gpu.Count)
|
|
||||||
|
|
||||||
// Second sample with zero power (should not add) and additional engine busy
|
|
||||||
sample2 := intelGpuStats{
|
|
||||||
Engines: map[string]struct {
|
|
||||||
Busy float64 `json:"busy"`
|
|
||||||
}{
|
|
||||||
"Render/3D": {Busy: 10.0},
|
|
||||||
"Video": {Busy: 2.5},
|
|
||||||
"Blitter": {Busy: 1.0},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
// zero power should not increment power accumulator
|
|
||||||
sample2.Power.GPU = 0.0
|
|
||||||
|
|
||||||
ok = gm.updateIntelFromStats(&sample2)
|
|
||||||
assert.True(t, ok)
|
|
||||||
|
|
||||||
gpu = gm.GpuDataMap["0"]
|
|
||||||
require.NotNil(t, gpu)
|
|
||||||
assert.InDelta(t, 10.5, gpu.Power, 0.001)
|
|
||||||
assert.InDelta(t, 30.0, gpu.Engines["Render/3D"], 0.001) // 20 + 10
|
|
||||||
assert.InDelta(t, 7.5, gpu.Engines["Video"], 0.001) // 5 + 2.5
|
|
||||||
assert.InDelta(t, 1.0, gpu.Engines["Blitter"], 0.001)
|
|
||||||
assert.Equal(t, float64(2), gpu.Count)
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestIntelCollectorStreaming(t *testing.T) {
|
|
||||||
// Save and override PATH
|
|
||||||
origPath := os.Getenv("PATH")
|
|
||||||
defer os.Setenv("PATH", origPath)
|
|
||||||
|
|
||||||
dir := t.TempDir()
|
|
||||||
os.Setenv("PATH", dir)
|
|
||||||
|
|
||||||
// Create a fake intel_gpu_top that prints a JSON array with two samples and exits
|
|
||||||
scriptPath := filepath.Join(dir, "intel_gpu_top")
|
|
||||||
script := `#!/bin/sh
|
|
||||||
# Ignore args -s and -J
|
|
||||||
# Emit a JSON array with two objects, separated by a comma, then exit
|
|
||||||
(echo '['; \
|
|
||||||
echo '{"power":{"GPU":1.5},"engines":{"Render/3D":{"busy":12.34}}},'; \
|
|
||||||
echo '{"power":{"GPU":2.0},"engines":{"Video":{"busy":5}}}'; \
|
|
||||||
echo ']')`
|
|
||||||
if err := os.WriteFile(scriptPath, []byte(script), 0755); err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
gm := &GPUManager{
|
|
||||||
GpuDataMap: make(map[string]*system.GPUData),
|
|
||||||
}
|
|
||||||
|
|
||||||
// Run the collector once; it should read two samples and return
|
|
||||||
if err := gm.collectIntelStats(); err != nil {
|
|
||||||
t.Fatalf("collectIntelStats error: %v", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
gpu := gm.GpuDataMap["0"]
|
|
||||||
require.NotNil(t, gpu)
|
|
||||||
// Power should be sum of non-zero samples: 1.5 + 2.0 = 3.5
|
|
||||||
assert.InDelta(t, 3.5, gpu.Power, 0.001)
|
|
||||||
// Engines aggregated
|
|
||||||
assert.InDelta(t, 12.34, gpu.Engines["Render/3D"], 0.001)
|
|
||||||
assert.InDelta(t, 5.0, gpu.Engines["Video"], 0.001)
|
|
||||||
// Count should be 2 samples
|
|
||||||
assert.Equal(t, float64(2), gpu.Count)
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -1,90 +1,13 @@
|
|||||||
package agent
|
package agent
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
|
||||||
"log/slog"
|
"log/slog"
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/henrygd/beszel/agent/deltatracker"
|
|
||||||
"github.com/henrygd/beszel/internal/entities/system"
|
|
||||||
psutilNet "github.com/shirou/gopsutil/v4/net"
|
psutilNet "github.com/shirou/gopsutil/v4/net"
|
||||||
)
|
)
|
||||||
|
|
||||||
var netInterfaceDeltaTracker = deltatracker.NewDeltaTracker[string, uint64]()
|
|
||||||
|
|
||||||
func (a *Agent) updateNetworkStats(systemStats *system.Stats) {
|
|
||||||
// network stats
|
|
||||||
if len(a.netInterfaces) == 0 {
|
|
||||||
// if no network interfaces, initialize again
|
|
||||||
// this is a fix if agent started before network is online (#466)
|
|
||||||
// maybe refactor this in the future to not cache interface names at all so we
|
|
||||||
// don't miss an interface that's been added after agent started in any circumstance
|
|
||||||
a.initializeNetIoStats()
|
|
||||||
}
|
|
||||||
|
|
||||||
if systemStats.NetworkInterfaces == nil {
|
|
||||||
systemStats.NetworkInterfaces = make(map[string][4]uint64, 0)
|
|
||||||
}
|
|
||||||
|
|
||||||
if netIO, err := psutilNet.IOCounters(true); err == nil {
|
|
||||||
msElapsed := uint64(time.Since(a.netIoStats.Time).Milliseconds())
|
|
||||||
a.netIoStats.Time = time.Now()
|
|
||||||
totalBytesSent := uint64(0)
|
|
||||||
totalBytesRecv := uint64(0)
|
|
||||||
netInterfaceDeltaTracker.Cycle()
|
|
||||||
// sum all bytes sent and received
|
|
||||||
for _, v := range netIO {
|
|
||||||
// skip if not in valid network interfaces list
|
|
||||||
if _, exists := a.netInterfaces[v.Name]; !exists {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
totalBytesSent += v.BytesSent
|
|
||||||
totalBytesRecv += v.BytesRecv
|
|
||||||
|
|
||||||
// track deltas for each network interface
|
|
||||||
var upDelta, downDelta uint64
|
|
||||||
upKey, downKey := fmt.Sprintf("%sup", v.Name), fmt.Sprintf("%sdown", v.Name)
|
|
||||||
netInterfaceDeltaTracker.Set(upKey, v.BytesSent)
|
|
||||||
netInterfaceDeltaTracker.Set(downKey, v.BytesRecv)
|
|
||||||
if msElapsed > 0 {
|
|
||||||
upDelta = netInterfaceDeltaTracker.Delta(upKey) * 1000 / msElapsed
|
|
||||||
downDelta = netInterfaceDeltaTracker.Delta(downKey) * 1000 / msElapsed
|
|
||||||
}
|
|
||||||
// add interface to systemStats
|
|
||||||
systemStats.NetworkInterfaces[v.Name] = [4]uint64{upDelta, downDelta, v.BytesSent, v.BytesRecv}
|
|
||||||
}
|
|
||||||
|
|
||||||
// add to systemStats
|
|
||||||
var bytesSentPerSecond, bytesRecvPerSecond uint64
|
|
||||||
if msElapsed > 0 {
|
|
||||||
bytesSentPerSecond = (totalBytesSent - a.netIoStats.BytesSent) * 1000 / msElapsed
|
|
||||||
bytesRecvPerSecond = (totalBytesRecv - a.netIoStats.BytesRecv) * 1000 / msElapsed
|
|
||||||
}
|
|
||||||
networkSentPs := bytesToMegabytes(float64(bytesSentPerSecond))
|
|
||||||
networkRecvPs := bytesToMegabytes(float64(bytesRecvPerSecond))
|
|
||||||
// add check for issue (#150) where sent is a massive number
|
|
||||||
if networkSentPs > 10_000 || networkRecvPs > 10_000 {
|
|
||||||
slog.Warn("Invalid net stats. Resetting.", "sent", networkSentPs, "recv", networkRecvPs)
|
|
||||||
for _, v := range netIO {
|
|
||||||
if _, exists := a.netInterfaces[v.Name]; !exists {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
slog.Info(v.Name, "recv", v.BytesRecv, "sent", v.BytesSent)
|
|
||||||
}
|
|
||||||
// reset network I/O stats
|
|
||||||
a.initializeNetIoStats()
|
|
||||||
} else {
|
|
||||||
systemStats.NetworkSent = networkSentPs
|
|
||||||
systemStats.NetworkRecv = networkRecvPs
|
|
||||||
systemStats.Bandwidth[0], systemStats.Bandwidth[1] = bytesSentPerSecond, bytesRecvPerSecond
|
|
||||||
// update netIoStats
|
|
||||||
a.netIoStats.BytesSent = totalBytesSent
|
|
||||||
a.netIoStats.BytesRecv = totalBytesRecv
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (a *Agent) initializeNetIoStats() {
|
func (a *Agent) initializeNetIoStats() {
|
||||||
// reset valid network interfaces
|
// reset valid network interfaces
|
||||||
a.netInterfaces = make(map[string]struct{}, 0)
|
a.netInterfaces = make(map[string]struct{}, 0)
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ import (
|
|||||||
"github.com/shirou/gopsutil/v4/host"
|
"github.com/shirou/gopsutil/v4/host"
|
||||||
"github.com/shirou/gopsutil/v4/load"
|
"github.com/shirou/gopsutil/v4/load"
|
||||||
"github.com/shirou/gopsutil/v4/mem"
|
"github.com/shirou/gopsutil/v4/mem"
|
||||||
|
psutilNet "github.com/shirou/gopsutil/v4/net"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Sets initial / non-changing values about the host system
|
// Sets initial / non-changing values about the host system
|
||||||
@@ -31,7 +32,7 @@ func (a *Agent) initializeSystemInfo() {
|
|||||||
a.systemInfo.KernelVersion = version
|
a.systemInfo.KernelVersion = version
|
||||||
a.systemInfo.Os = system.Darwin
|
a.systemInfo.Os = system.Darwin
|
||||||
} else if strings.Contains(platform, "indows") {
|
} else if strings.Contains(platform, "indows") {
|
||||||
a.systemInfo.KernelVersion = fmt.Sprintf("%s %s", strings.Replace(platform, "Microsoft ", "", 1), version)
|
a.systemInfo.KernelVersion = strings.Replace(platform, "Microsoft ", "", 1) + " " + version
|
||||||
a.systemInfo.Os = system.Windows
|
a.systemInfo.Os = system.Windows
|
||||||
} else if platform == "freebsd" {
|
} else if platform == "freebsd" {
|
||||||
a.systemInfo.Os = system.Freebsd
|
a.systemInfo.Os = system.Freebsd
|
||||||
@@ -69,7 +70,7 @@ func (a *Agent) initializeSystemInfo() {
|
|||||||
|
|
||||||
// Returns current info, stats about the host system
|
// Returns current info, stats about the host system
|
||||||
func (a *Agent) getSystemStats() system.Stats {
|
func (a *Agent) getSystemStats() system.Stats {
|
||||||
var systemStats system.Stats
|
systemStats := system.Stats{}
|
||||||
|
|
||||||
// battery
|
// battery
|
||||||
if battery.HasReadableBattery() {
|
if battery.HasReadableBattery() {
|
||||||
@@ -172,7 +173,55 @@ func (a *Agent) getSystemStats() system.Stats {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// network stats
|
// network stats
|
||||||
a.updateNetworkStats(&systemStats)
|
if len(a.netInterfaces) == 0 {
|
||||||
|
// if no network interfaces, initialize again
|
||||||
|
// this is a fix if agent started before network is online (#466)
|
||||||
|
// maybe refactor this in the future to not cache interface names at all so we
|
||||||
|
// don't miss an interface that's been added after agent started in any circumstance
|
||||||
|
a.initializeNetIoStats()
|
||||||
|
}
|
||||||
|
if netIO, err := psutilNet.IOCounters(true); err == nil {
|
||||||
|
msElapsed := uint64(time.Since(a.netIoStats.Time).Milliseconds())
|
||||||
|
a.netIoStats.Time = time.Now()
|
||||||
|
totalBytesSent := uint64(0)
|
||||||
|
totalBytesRecv := uint64(0)
|
||||||
|
// sum all bytes sent and received
|
||||||
|
for _, v := range netIO {
|
||||||
|
// skip if not in valid network interfaces list
|
||||||
|
if _, exists := a.netInterfaces[v.Name]; !exists {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
totalBytesSent += v.BytesSent
|
||||||
|
totalBytesRecv += v.BytesRecv
|
||||||
|
}
|
||||||
|
// add to systemStats
|
||||||
|
var bytesSentPerSecond, bytesRecvPerSecond uint64
|
||||||
|
if msElapsed > 0 {
|
||||||
|
bytesSentPerSecond = (totalBytesSent - a.netIoStats.BytesSent) * 1000 / msElapsed
|
||||||
|
bytesRecvPerSecond = (totalBytesRecv - a.netIoStats.BytesRecv) * 1000 / msElapsed
|
||||||
|
}
|
||||||
|
networkSentPs := bytesToMegabytes(float64(bytesSentPerSecond))
|
||||||
|
networkRecvPs := bytesToMegabytes(float64(bytesRecvPerSecond))
|
||||||
|
// add check for issue (#150) where sent is a massive number
|
||||||
|
if networkSentPs > 10_000 || networkRecvPs > 10_000 {
|
||||||
|
slog.Warn("Invalid net stats. Resetting.", "sent", networkSentPs, "recv", networkRecvPs)
|
||||||
|
for _, v := range netIO {
|
||||||
|
if _, exists := a.netInterfaces[v.Name]; !exists {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
slog.Info(v.Name, "recv", v.BytesRecv, "sent", v.BytesSent)
|
||||||
|
}
|
||||||
|
// reset network I/O stats
|
||||||
|
a.initializeNetIoStats()
|
||||||
|
} else {
|
||||||
|
systemStats.NetworkSent = networkSentPs
|
||||||
|
systemStats.NetworkRecv = networkRecvPs
|
||||||
|
systemStats.Bandwidth[0], systemStats.Bandwidth[1] = bytesSentPerSecond, bytesRecvPerSecond
|
||||||
|
// update netIoStats
|
||||||
|
a.netIoStats.BytesSent = totalBytesSent
|
||||||
|
a.netIoStats.BytesRecv = totalBytesRecv
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// temperatures
|
// temperatures
|
||||||
// TODO: maybe refactor to methods on systemStats
|
// TODO: maybe refactor to methods on systemStats
|
||||||
@@ -212,7 +261,6 @@ func (a *Agent) getSystemStats() system.Stats {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// update base system info
|
// update base system info
|
||||||
a.systemInfo.ConnectionType = a.connectionManager.ConnectionType
|
|
||||||
a.systemInfo.Cpu = systemStats.Cpu
|
a.systemInfo.Cpu = systemStats.Cpu
|
||||||
a.systemInfo.LoadAvg = systemStats.LoadAvg
|
a.systemInfo.LoadAvg = systemStats.LoadAvg
|
||||||
// TODO: remove these in future release in favor of load avg array
|
// TODO: remove these in future release in favor of load avg array
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import "github.com/blang/semver"
|
|||||||
|
|
||||||
const (
|
const (
|
||||||
// Version is the current version of the application.
|
// Version is the current version of the application.
|
||||||
Version = "0.12.10"
|
Version = "0.12.7"
|
||||||
// AppName is the name of the application.
|
// AppName is the name of the application.
|
||||||
AppName = "beszel"
|
AppName = "beszel"
|
||||||
)
|
)
|
||||||
|
|||||||
38
go.mod
38
go.mod
@@ -3,7 +3,7 @@ module github.com/henrygd/beszel
|
|||||||
go 1.25.1
|
go 1.25.1
|
||||||
|
|
||||||
// lock shoutrrr to specific version to allow review before updating
|
// lock shoutrrr to specific version to allow review before updating
|
||||||
replace github.com/nicholas-fedor/shoutrrr => github.com/nicholas-fedor/shoutrrr v0.9.1
|
replace github.com/nicholas-fedor/shoutrrr => github.com/nicholas-fedor/shoutrrr v0.8.8
|
||||||
|
|
||||||
require (
|
require (
|
||||||
github.com/blang/semver v3.5.1+incompatible
|
github.com/blang/semver v3.5.1+incompatible
|
||||||
@@ -12,16 +12,16 @@ require (
|
|||||||
github.com/gliderlabs/ssh v0.3.8
|
github.com/gliderlabs/ssh v0.3.8
|
||||||
github.com/google/uuid v1.6.0
|
github.com/google/uuid v1.6.0
|
||||||
github.com/lxzan/gws v1.8.9
|
github.com/lxzan/gws v1.8.9
|
||||||
github.com/nicholas-fedor/shoutrrr v0.9.1
|
github.com/nicholas-fedor/shoutrrr v0.8.17
|
||||||
github.com/pocketbase/dbx v1.11.0
|
github.com/pocketbase/dbx v1.11.0
|
||||||
github.com/pocketbase/pocketbase v0.30.0
|
github.com/pocketbase/pocketbase v0.29.3
|
||||||
github.com/shirou/gopsutil/v4 v4.25.8
|
github.com/shirou/gopsutil/v4 v4.25.6
|
||||||
github.com/spf13/cast v1.10.0
|
github.com/spf13/cast v1.9.2
|
||||||
github.com/spf13/cobra v1.10.1
|
github.com/spf13/cobra v1.9.1
|
||||||
github.com/spf13/pflag v1.0.10
|
github.com/spf13/pflag v1.0.7
|
||||||
github.com/stretchr/testify v1.11.1
|
github.com/stretchr/testify v1.11.0
|
||||||
golang.org/x/crypto v0.42.0
|
golang.org/x/crypto v0.41.0
|
||||||
golang.org/x/exp v0.0.0-20250911091902-df9299821621
|
golang.org/x/exp v0.0.0-20250819193227-8b4c13bb791b
|
||||||
gopkg.in/yaml.v3 v3.0.1
|
gopkg.in/yaml.v3 v3.0.1
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -33,9 +33,9 @@ require (
|
|||||||
github.com/dolthub/maphash v0.1.0 // indirect
|
github.com/dolthub/maphash v0.1.0 // indirect
|
||||||
github.com/domodwyer/mailyak/v3 v3.6.2 // indirect
|
github.com/domodwyer/mailyak/v3 v3.6.2 // indirect
|
||||||
github.com/dustin/go-humanize v1.0.1 // indirect
|
github.com/dustin/go-humanize v1.0.1 // indirect
|
||||||
github.com/ebitengine/purego v0.9.0 // indirect
|
github.com/ebitengine/purego v0.8.4 // indirect
|
||||||
github.com/fatih/color v1.18.0 // indirect
|
github.com/fatih/color v1.18.0 // indirect
|
||||||
github.com/gabriel-vasile/mimetype v1.4.10 // indirect
|
github.com/gabriel-vasile/mimetype v1.4.9 // indirect
|
||||||
github.com/ganigeorgiev/fexpr v0.5.0 // indirect
|
github.com/ganigeorgiev/fexpr v0.5.0 // indirect
|
||||||
github.com/go-ole/go-ole v1.3.0 // indirect
|
github.com/go-ole/go-ole v1.3.0 // indirect
|
||||||
github.com/go-ozzo/ozzo-validation/v4 v4.3.0 // indirect
|
github.com/go-ozzo/ozzo-validation/v4 v4.3.0 // indirect
|
||||||
@@ -43,7 +43,7 @@ require (
|
|||||||
github.com/golang-jwt/jwt/v5 v5.3.0 // indirect
|
github.com/golang-jwt/jwt/v5 v5.3.0 // indirect
|
||||||
github.com/inconshreveable/mousetrap v1.1.0 // indirect
|
github.com/inconshreveable/mousetrap v1.1.0 // indirect
|
||||||
github.com/klauspost/compress v1.18.0 // indirect
|
github.com/klauspost/compress v1.18.0 // indirect
|
||||||
github.com/lufia/plan9stats v0.0.0-20250827001030-24949be3fa54 // indirect
|
github.com/lufia/plan9stats v0.0.0-20250821153705-5981dea3221d // indirect
|
||||||
github.com/mattn/go-colorable v0.1.14 // indirect
|
github.com/mattn/go-colorable v0.1.14 // indirect
|
||||||
github.com/mattn/go-isatty v0.0.20 // indirect
|
github.com/mattn/go-isatty v0.0.20 // indirect
|
||||||
github.com/ncruces/go-strftime v0.1.9 // indirect
|
github.com/ncruces/go-strftime v0.1.9 // indirect
|
||||||
@@ -54,12 +54,12 @@ require (
|
|||||||
github.com/tklauser/numcpus v0.10.0 // indirect
|
github.com/tklauser/numcpus v0.10.0 // indirect
|
||||||
github.com/x448/float16 v0.8.4 // indirect
|
github.com/x448/float16 v0.8.4 // indirect
|
||||||
github.com/yusufpapurcu/wmi v1.2.4 // indirect
|
github.com/yusufpapurcu/wmi v1.2.4 // indirect
|
||||||
golang.org/x/image v0.31.0 // indirect
|
golang.org/x/image v0.30.0 // indirect
|
||||||
golang.org/x/net v0.44.0 // indirect
|
golang.org/x/net v0.43.0 // indirect
|
||||||
golang.org/x/oauth2 v0.31.0 // indirect
|
golang.org/x/oauth2 v0.30.0 // indirect
|
||||||
golang.org/x/sync v0.17.0 // indirect
|
golang.org/x/sync v0.16.0 // indirect
|
||||||
golang.org/x/sys v0.36.0 // indirect
|
golang.org/x/sys v0.35.0 // indirect
|
||||||
golang.org/x/text v0.29.0 // indirect
|
golang.org/x/text v0.28.0 // indirect
|
||||||
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 // indirect
|
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 // indirect
|
||||||
howett.net/plist v1.0.1 // indirect
|
howett.net/plist v1.0.1 // indirect
|
||||||
modernc.org/libc v1.66.3 // indirect
|
modernc.org/libc v1.66.3 // indirect
|
||||||
|
|||||||
128
go.sum
128
go.sum
@@ -1,7 +1,5 @@
|
|||||||
filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA=
|
filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA=
|
||||||
filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4=
|
filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4=
|
||||||
github.com/Masterminds/semver/v3 v3.4.0 h1:Zog+i5UMtVoCU8oKka5P7i9q9HgrJeGzI9SA1Xbatp0=
|
|
||||||
github.com/Masterminds/semver/v3 v3.4.0/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM=
|
|
||||||
github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be h1:9AeTilPcZAjCFIImctFaOjnTIavg87rW78vTPkQqLI8=
|
github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be h1:9AeTilPcZAjCFIImctFaOjnTIavg87rW78vTPkQqLI8=
|
||||||
github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be/go.mod h1:ySMOLuWl6zY27l47sB3qLNK6tF2fkHG55UZxx8oIVo4=
|
github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be/go.mod h1:ySMOLuWl6zY27l47sB3qLNK6tF2fkHG55UZxx8oIVo4=
|
||||||
github.com/asaskevich/govalidator v0.0.0-20200108200545-475eaeb16496/go.mod h1:oGkLhpf+kjZl6xBf758TQhh5XrAeiJv/7FRz/2spLIg=
|
github.com/asaskevich/govalidator v0.0.0-20200108200545-475eaeb16496/go.mod h1:oGkLhpf+kjZl6xBf758TQhh5XrAeiJv/7FRz/2spLIg=
|
||||||
@@ -23,22 +21,22 @@ github.com/domodwyer/mailyak/v3 v3.6.2 h1:x3tGMsyFhTCaxp6ycgR0FE/bu5QiNp+hetUuCO
|
|||||||
github.com/domodwyer/mailyak/v3 v3.6.2/go.mod h1:lOm/u9CyCVWHeaAmHIdF4RiKVxKUT/H5XX10lIKAL6c=
|
github.com/domodwyer/mailyak/v3 v3.6.2/go.mod h1:lOm/u9CyCVWHeaAmHIdF4RiKVxKUT/H5XX10lIKAL6c=
|
||||||
github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY=
|
github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY=
|
||||||
github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto=
|
github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto=
|
||||||
github.com/ebitengine/purego v0.9.0 h1:mh0zpKBIXDceC63hpvPuGLiJ8ZAa3DfrFTudmfi8A4k=
|
github.com/ebitengine/purego v0.8.4 h1:CF7LEKg5FFOsASUj0+QwaXf8Ht6TlFxg09+S9wz0omw=
|
||||||
github.com/ebitengine/purego v0.9.0/go.mod h1:iIjxzd6CiRiOG0UyXP+V1+jWqUXVjPKLAI0mRfJZTmQ=
|
github.com/ebitengine/purego v0.8.4/go.mod h1:iIjxzd6CiRiOG0UyXP+V1+jWqUXVjPKLAI0mRfJZTmQ=
|
||||||
github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM=
|
github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM=
|
||||||
github.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU=
|
github.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU=
|
||||||
github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8=
|
github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8=
|
||||||
github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0=
|
github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0=
|
||||||
github.com/fxamacker/cbor/v2 v2.9.0 h1:NpKPmjDBgUfBms6tr6JZkTHtfFGcMKsw3eGcmD/sapM=
|
github.com/fxamacker/cbor/v2 v2.9.0 h1:NpKPmjDBgUfBms6tr6JZkTHtfFGcMKsw3eGcmD/sapM=
|
||||||
github.com/fxamacker/cbor/v2 v2.9.0/go.mod h1:vM4b+DJCtHn+zz7h3FFp/hDAI9WNWCsZj23V5ytsSxQ=
|
github.com/fxamacker/cbor/v2 v2.9.0/go.mod h1:vM4b+DJCtHn+zz7h3FFp/hDAI9WNWCsZj23V5ytsSxQ=
|
||||||
github.com/gabriel-vasile/mimetype v1.4.10 h1:zyueNbySn/z8mJZHLt6IPw0KoZsiQNszIpU+bX4+ZK0=
|
github.com/gabriel-vasile/mimetype v1.4.9 h1:5k+WDwEsD9eTLL8Tz3L0VnmVh9QxGjRmjBvAG7U/oYY=
|
||||||
github.com/gabriel-vasile/mimetype v1.4.10/go.mod h1:d+9Oxyo1wTzWdyVUPMmXFvp4F9tea18J8ufA774AB3s=
|
github.com/gabriel-vasile/mimetype v1.4.9/go.mod h1:WnSQhFKJuBlRyLiKohA/2DtIlPFAbguNaG7QCHcyGok=
|
||||||
github.com/ganigeorgiev/fexpr v0.5.0 h1:XA9JxtTE/Xm+g/JFI6RfZEHSiQlk+1glLvRK1Lpv/Tk=
|
github.com/ganigeorgiev/fexpr v0.5.0 h1:XA9JxtTE/Xm+g/JFI6RfZEHSiQlk+1glLvRK1Lpv/Tk=
|
||||||
github.com/ganigeorgiev/fexpr v0.5.0/go.mod h1:RyGiGqmeXhEQ6+mlGdnUleLHgtzzu/VGO2WtJkF5drE=
|
github.com/ganigeorgiev/fexpr v0.5.0/go.mod h1:RyGiGqmeXhEQ6+mlGdnUleLHgtzzu/VGO2WtJkF5drE=
|
||||||
github.com/gliderlabs/ssh v0.3.8 h1:a4YXD1V7xMF9g5nTkdfnja3Sxy1PVDCj1Zg4Wb8vY6c=
|
github.com/gliderlabs/ssh v0.3.8 h1:a4YXD1V7xMF9g5nTkdfnja3Sxy1PVDCj1Zg4Wb8vY6c=
|
||||||
github.com/gliderlabs/ssh v0.3.8/go.mod h1:xYoytBv1sV0aL3CavoDuJIQNURXkkfPA/wxQ1pL1fAU=
|
github.com/gliderlabs/ssh v0.3.8/go.mod h1:xYoytBv1sV0aL3CavoDuJIQNURXkkfPA/wxQ1pL1fAU=
|
||||||
github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI=
|
github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY=
|
||||||
github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
|
github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
|
||||||
github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0=
|
github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0=
|
||||||
github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE=
|
github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE=
|
||||||
github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78=
|
github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78=
|
||||||
@@ -54,14 +52,14 @@ github.com/golang-jwt/jwt/v5 v5.3.0/go.mod h1:fxCRLWMO43lRc8nhHWY6LGqRcf+1gQWArs
|
|||||||
github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
||||||
github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
|
github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
|
||||||
github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=
|
github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=
|
||||||
github.com/google/pprof v0.0.0-20250820193118-f64d9cf942d6 h1:EEHtgt9IwisQ2AZ4pIsMjahcegHh6rmhqxzIRQIyepY=
|
github.com/google/pprof v0.0.0-20250403155104-27863c87afa6 h1:BHT72Gu3keYf3ZEu2J0b1vyeLSOYI8bm5wbJM/8yDe8=
|
||||||
github.com/google/pprof v0.0.0-20250820193118-f64d9cf942d6/go.mod h1:I6V7YzU0XDpsHqbsyrghnFZLO1gwK6NPTNvmetQIk9U=
|
github.com/google/pprof v0.0.0-20250403155104-27863c87afa6/go.mod h1:boTsfXsheKC2y+lKOCMpSfarhxDeIzfZG1jqGcPl3cA=
|
||||||
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
|
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
|
||||||
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||||
github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8=
|
github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8=
|
||||||
github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=
|
github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=
|
||||||
github.com/jarcoal/httpmock v1.4.1 h1:0Ju+VCFuARfFlhVXFc2HxlcQkfB+Xq12/EotHko+x2A=
|
github.com/jarcoal/httpmock v1.4.0 h1:BvhqnH0JAYbNudL2GMJKgOHe2CtKlzJ/5rWKyp+hc2k=
|
||||||
github.com/jarcoal/httpmock v1.4.1/go.mod h1:ftW1xULwo+j0R0JJkJIIi7UKigZUXCLLanykgjwBXL0=
|
github.com/jarcoal/httpmock v1.4.0/go.mod h1:ftW1xULwo+j0R0JJkJIIi7UKigZUXCLLanykgjwBXL0=
|
||||||
github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI=
|
github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI=
|
||||||
github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo=
|
github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo=
|
||||||
github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ=
|
github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ=
|
||||||
@@ -69,8 +67,8 @@ github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
|
|||||||
github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
|
github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
|
||||||
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
|
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
|
||||||
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
|
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
|
||||||
github.com/lufia/plan9stats v0.0.0-20250827001030-24949be3fa54 h1:mFWunSatvkQQDhpdyuFAYwyAan3hzCuma+Pz8sqvOfg=
|
github.com/lufia/plan9stats v0.0.0-20250821153705-5981dea3221d h1:vFzYZc8yji+9DmNRhpEbs8VBK4CgV/DPfGzeVJSSp/8=
|
||||||
github.com/lufia/plan9stats v0.0.0-20250827001030-24949be3fa54/go.mod h1:autxFIvghDt3jPTLoqZ9OZ7s9qTGNAWmYCjVFWPX/zg=
|
github.com/lufia/plan9stats v0.0.0-20250821153705-5981dea3221d/go.mod h1:autxFIvghDt3jPTLoqZ9OZ7s9qTGNAWmYCjVFWPX/zg=
|
||||||
github.com/lxzan/gws v1.8.9 h1:VU3SGUeWlQrEwfUSfokcZep8mdg/BrUF+y73YYshdBM=
|
github.com/lxzan/gws v1.8.9 h1:VU3SGUeWlQrEwfUSfokcZep8mdg/BrUF+y73YYshdBM=
|
||||||
github.com/lxzan/gws v1.8.9/go.mod h1:d9yHaR1eDTBHagQC6KY7ycUOaz5KWeqQtP3xu7aMK8Y=
|
github.com/lxzan/gws v1.8.9/go.mod h1:d9yHaR1eDTBHagQC6KY7ycUOaz5KWeqQtP3xu7aMK8Y=
|
||||||
github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE=
|
github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE=
|
||||||
@@ -79,19 +77,19 @@ github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWE
|
|||||||
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
|
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
|
||||||
github.com/ncruces/go-strftime v0.1.9 h1:bY0MQC28UADQmHmaF5dgpLmImcShSi2kHU9XLdhx/f4=
|
github.com/ncruces/go-strftime v0.1.9 h1:bY0MQC28UADQmHmaF5dgpLmImcShSi2kHU9XLdhx/f4=
|
||||||
github.com/ncruces/go-strftime v0.1.9/go.mod h1:Fwc5htZGVVkseilnfgOVb9mKy6w1naJmn9CehxcKcls=
|
github.com/ncruces/go-strftime v0.1.9/go.mod h1:Fwc5htZGVVkseilnfgOVb9mKy6w1naJmn9CehxcKcls=
|
||||||
github.com/nicholas-fedor/shoutrrr v0.9.1 h1:SEBhM6P1favzILO0f55CY3P9JwvM9RZ7B1ZMCl+Injs=
|
github.com/nicholas-fedor/shoutrrr v0.8.8 h1:F/oyoatWK5cbHPPgkjRZrA0262TP7KWuUQz9KskRtR8=
|
||||||
github.com/nicholas-fedor/shoutrrr v0.9.1/go.mod h1:khue5m8LYyMzdPWuJxDTJeT89l9gjwjA+a+r0e8qxxk=
|
github.com/nicholas-fedor/shoutrrr v0.8.8/go.mod h1:T30Y+eoZFEjDk4HtOItcHQioZSOe3Z6a6aNfSz6jc5c=
|
||||||
github.com/onsi/ginkgo/v2 v2.25.3 h1:Ty8+Yi/ayDAGtk4XxmmfUy4GabvM+MegeB4cDLRi6nw=
|
github.com/onsi/ginkgo/v2 v2.23.4 h1:ktYTpKJAVZnDT4VjxSbiBenUjmlL/5QkBEocaWXiQus=
|
||||||
github.com/onsi/ginkgo/v2 v2.25.3/go.mod h1:43uiyQC4Ed2tkOzLsEYm7hnrb7UJTWHYNsuy3bG/snE=
|
github.com/onsi/ginkgo/v2 v2.23.4/go.mod h1:Bt66ApGPBFzHyR+JO10Zbt0Gsp4uWxu5mIOTusL46e8=
|
||||||
github.com/onsi/gomega v1.38.2 h1:eZCjf2xjZAqe+LeWvKb5weQ+NcPwX84kqJ0cZNxok2A=
|
github.com/onsi/gomega v1.37.0 h1:CdEG8g0S133B4OswTDC/5XPSzE1OeP29QOioj2PID2Y=
|
||||||
github.com/onsi/gomega v1.38.2/go.mod h1:W2MJcYxRGV63b418Ai34Ud0hEdTVXq9NW9+Sx6uXf3k=
|
github.com/onsi/gomega v1.37.0/go.mod h1:8D9+Txp43QWKhM24yyOBEdpkzN8FvJyAwecBgsU4KU0=
|
||||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||||
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U=
|
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U=
|
||||||
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||||
github.com/pocketbase/dbx v1.11.0 h1:LpZezioMfT3K4tLrqA55wWFw1EtH1pM4tzSVa7kgszU=
|
github.com/pocketbase/dbx v1.11.0 h1:LpZezioMfT3K4tLrqA55wWFw1EtH1pM4tzSVa7kgszU=
|
||||||
github.com/pocketbase/dbx v1.11.0/go.mod h1:xXRCIAKTHMgUCyCKZm55pUOdvFziJjQfXaWKhu2vhMs=
|
github.com/pocketbase/dbx v1.11.0/go.mod h1:xXRCIAKTHMgUCyCKZm55pUOdvFziJjQfXaWKhu2vhMs=
|
||||||
github.com/pocketbase/pocketbase v0.30.0 h1:7v9O3hBYyHyptnnFjdP8tEJIuyHEfjhG6PC4gjf5eoE=
|
github.com/pocketbase/pocketbase v0.29.3 h1:Mj8o5awsbVJIdIoTuQNhfC2oL/c4aImQ3RyfFZlzFVg=
|
||||||
github.com/pocketbase/pocketbase v0.30.0/go.mod h1:gZIwampw4VqMcEdGHwBZgSa54xWIDgVJb4uINUMXLmA=
|
github.com/pocketbase/pocketbase v0.29.3/go.mod h1:oGpT67LObxCFK4V2fSL7J9YnPbBnnshOpJ5v3zcneww=
|
||||||
github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 h1:o4JXh1EVt9k/+g42oCprj/FisM4qX9L3sZB3upGN2ZU=
|
github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 h1:o4JXh1EVt9k/+g42oCprj/FisM4qX9L3sZB3upGN2ZU=
|
||||||
github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE=
|
github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE=
|
||||||
github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec h1:W09IVJc94icq4NjY3clb7Lk8O1qJ8BdBEF8z0ibU0rE=
|
github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec h1:W09IVJc94icq4NjY3clb7Lk8O1qJ8BdBEF8z0ibU0rE=
|
||||||
@@ -99,19 +97,19 @@ github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec/go.mod h1:qq
|
|||||||
github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8=
|
github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8=
|
||||||
github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs=
|
github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs=
|
||||||
github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
|
github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
|
||||||
github.com/shirou/gopsutil/v4 v4.25.8 h1:NnAsw9lN7587WHxjJA9ryDnqhJpFH6A+wagYWTOH970=
|
github.com/shirou/gopsutil/v4 v4.25.6 h1:kLysI2JsKorfaFPcYmcJqbzROzsBWEOAtw6A7dIfqXs=
|
||||||
github.com/shirou/gopsutil/v4 v4.25.8/go.mod h1:q9QdMmfAOVIw7a+eF86P7ISEU6ka+NLgkUxlopV4RwI=
|
github.com/shirou/gopsutil/v4 v4.25.6/go.mod h1:PfybzyydfZcN+JMMjkF6Zb8Mq1A/VcogFFg7hj50W9c=
|
||||||
github.com/spf13/cast v1.10.0 h1:h2x0u2shc1QuLHfxi+cTJvs30+ZAHOGRic8uyGTDWxY=
|
github.com/spf13/cast v1.9.2 h1:SsGfm7M8QOFtEzumm7UZrZdLLquNdzFYfIbEXntcFbE=
|
||||||
github.com/spf13/cast v1.10.0/go.mod h1:jNfB8QC9IA6ZuY2ZjDp0KtFO2LZZlg4S/7bzP6qqeHo=
|
github.com/spf13/cast v1.9.2/go.mod h1:jNfB8QC9IA6ZuY2ZjDp0KtFO2LZZlg4S/7bzP6qqeHo=
|
||||||
github.com/spf13/cobra v1.10.1 h1:lJeBwCfmrnXthfAupyUTzJ/J4Nc1RsHC/mSRU2dll/s=
|
github.com/spf13/cobra v1.9.1 h1:CXSaggrXdbHK9CF+8ywj8Amf7PBRmPCOJugH954Nnlo=
|
||||||
github.com/spf13/cobra v1.10.1/go.mod h1:7SmJGaTHFVBY0jW4NXGluQoLvhqFQM+6XSKD+P4XaB0=
|
github.com/spf13/cobra v1.9.1/go.mod h1:nDyEzZ8ogv936Cinf6g1RU9MRY64Ir93oCnqb9wxYW0=
|
||||||
github.com/spf13/pflag v1.0.9/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
|
github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
|
||||||
github.com/spf13/pflag v1.0.10 h1:4EBh2KAYBwaONj6b2Ye1GiHfwjqyROoF4RwYO+vPwFk=
|
github.com/spf13/pflag v1.0.7 h1:vN6T9TfwStFPFM5XzjsvmzZkLuaLX+HS+0SeFLRgU6M=
|
||||||
github.com/spf13/pflag v1.0.10/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
|
github.com/spf13/pflag v1.0.7/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
|
||||||
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||||
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
|
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
|
||||||
github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U=
|
github.com/stretchr/testify v1.11.0 h1:ib4sjIrwZKxE5u/Japgo/7SJV3PvgjGiRNAvTVGqQl8=
|
||||||
github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U=
|
github.com/stretchr/testify v1.11.0/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U=
|
||||||
github.com/tklauser/go-sysconf v0.3.15 h1:VE89k0criAymJ/Os65CSn1IXaol+1wrsFHEB8Ol49K4=
|
github.com/tklauser/go-sysconf v0.3.15 h1:VE89k0criAymJ/Os65CSn1IXaol+1wrsFHEB8Ol49K4=
|
||||||
github.com/tklauser/go-sysconf v0.3.15/go.mod h1:Dmjwr6tYFIseJw7a3dRLJfsHAMXZ3nEnL/aZY+0IuI4=
|
github.com/tklauser/go-sysconf v0.3.15/go.mod h1:Dmjwr6tYFIseJw7a3dRLJfsHAMXZ3nEnL/aZY+0IuI4=
|
||||||
github.com/tklauser/numcpus v0.10.0 h1:18njr6LDBk1zuna922MgdjQuJFjrdppsZG60sHGfjso=
|
github.com/tklauser/numcpus v0.10.0 h1:18njr6LDBk1zuna922MgdjQuJFjrdppsZG60sHGfjso=
|
||||||
@@ -122,44 +120,42 @@ github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo
|
|||||||
github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0=
|
github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0=
|
||||||
go.uber.org/automaxprocs v1.6.0 h1:O3y2/QNTOdbF+e/dpXNNW7Rx2hZ4sTIPyybbxyNqTUs=
|
go.uber.org/automaxprocs v1.6.0 h1:O3y2/QNTOdbF+e/dpXNNW7Rx2hZ4sTIPyybbxyNqTUs=
|
||||||
go.uber.org/automaxprocs v1.6.0/go.mod h1:ifeIMSnPZuznNm6jmdzmU3/bfk01Fe2fotchwEFJ8r8=
|
go.uber.org/automaxprocs v1.6.0/go.mod h1:ifeIMSnPZuznNm6jmdzmU3/bfk01Fe2fotchwEFJ8r8=
|
||||||
go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc=
|
|
||||||
go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg=
|
|
||||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||||
golang.org/x/crypto v0.42.0 h1:chiH31gIWm57EkTXpwnqf8qeuMUi0yekh6mT2AvFlqI=
|
golang.org/x/crypto v0.41.0 h1:WKYxWedPGCTVVl5+WHSSrOBT0O8lx32+zxmHxijgXp4=
|
||||||
golang.org/x/crypto v0.42.0/go.mod h1:4+rDnOTJhQCx2q7/j6rAN5XDw8kPjeaXEUR2eL94ix8=
|
golang.org/x/crypto v0.41.0/go.mod h1:pO5AFd7FA68rFak7rOAGVuygIISepHftHnr8dr6+sUc=
|
||||||
golang.org/x/exp v0.0.0-20250911091902-df9299821621 h1:2id6c1/gto0kaHYyrixvknJ8tUK/Qs5IsmBtrc+FtgU=
|
golang.org/x/exp v0.0.0-20250819193227-8b4c13bb791b h1:DXr+pvt3nC887026GRP39Ej11UATqWDmWuS99x26cD0=
|
||||||
golang.org/x/exp v0.0.0-20250911091902-df9299821621/go.mod h1:TwQYMMnGpvZyc+JpB/UAuTNIsVJifOlSkrZkhcvpVUk=
|
golang.org/x/exp v0.0.0-20250819193227-8b4c13bb791b/go.mod h1:4QTo5u+SEIbbKW1RacMZq1YEfOBqeXa19JeshGi+zc4=
|
||||||
golang.org/x/image v0.0.0-20191009234506-e7c1f5e7dbb8/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
|
golang.org/x/image v0.0.0-20191009234506-e7c1f5e7dbb8/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
|
||||||
golang.org/x/image v0.31.0 h1:mLChjE2MV6g1S7oqbXC0/UcKijjm5fnJLUYKIYrLESA=
|
golang.org/x/image v0.30.0 h1:jD5RhkmVAnjqaCUXfbGBrn3lpxbknfN9w2UhHHU+5B4=
|
||||||
golang.org/x/image v0.31.0/go.mod h1:R9ec5Lcp96v9FTF+ajwaH3uGxPH4fKfHHAVbUILxghA=
|
golang.org/x/image v0.30.0/go.mod h1:SAEUTxCCMWSrJcCy/4HwavEsfZZJlYxeHLc6tTiAe/c=
|
||||||
golang.org/x/mod v0.28.0 h1:gQBtGhjxykdjY9YhZpSlZIsbnaE2+PgjfLWUQTnoZ1U=
|
golang.org/x/mod v0.27.0 h1:kb+q2PyFnEADO2IEF935ehFUXlWiNjJWtRNgBLSfbxQ=
|
||||||
golang.org/x/mod v0.28.0/go.mod h1:yfB/L0NOf/kmEbXjzCPOx1iK1fRutOydrCMsqRhEBxI=
|
golang.org/x/mod v0.27.0/go.mod h1:rWI627Fq0DEoudcK+MBkNkCe0EetEaDSwJJkCcjpazc=
|
||||||
golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=
|
golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=
|
||||||
golang.org/x/net v0.44.0 h1:evd8IRDyfNBMBTTY5XRF1vaZlD+EmWx6x8PkhR04H/I=
|
golang.org/x/net v0.43.0 h1:lat02VYK2j4aLzMzecihNvTlJNQUq316m2Mr9rnM6YE=
|
||||||
golang.org/x/net v0.44.0/go.mod h1:ECOoLqd5U3Lhyeyo/QDCEVQ4sNgYsqvCZ722XogGieY=
|
golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg=
|
||||||
golang.org/x/oauth2 v0.31.0 h1:8Fq0yVZLh4j4YA47vHKFTa9Ew5XIrCP8LC6UeNZnLxo=
|
golang.org/x/oauth2 v0.30.0 h1:dnDm7JmhM45NNpd8FDDeLhK6FwqbOf4MLCM9zb1BOHI=
|
||||||
golang.org/x/oauth2 v0.31.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA=
|
golang.org/x/oauth2 v0.30.0/go.mod h1:B++QgG3ZKulg6sRPGD/mqlHQs5rB3Ml9erfeDY7xKlU=
|
||||||
golang.org/x/sync v0.17.0 h1:l60nONMj9l5drqw6jlhIELNv9I0A4OFgRsG9k2oT9Ug=
|
golang.org/x/sync v0.16.0 h1:ycBJEhp9p4vXvUZNszeOq0kGTPghopOL8q0fq3vstxw=
|
||||||
golang.org/x/sync v0.17.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI=
|
golang.org/x/sync v0.16.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA=
|
||||||
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||||
golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
golang.org/x/sys v0.36.0 h1:KVRy2GtZBrk1cBYA7MKu5bEZFxQk4NIDV6RLVcC8o0k=
|
golang.org/x/sys v0.35.0 h1:vz1N37gP5bs89s7He8XuIYXpyY0+QlsKmzipCbUtyxI=
|
||||||
golang.org/x/sys v0.36.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks=
|
golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
|
||||||
golang.org/x/term v0.35.0 h1:bZBVKBudEyhRcajGcNc3jIfWPqV4y/Kt2XcoigOWtDQ=
|
golang.org/x/term v0.34.0 h1:O/2T7POpk0ZZ7MAzMeWFSg6S5IpWd/RXDlM9hgM3DR4=
|
||||||
golang.org/x/term v0.35.0/go.mod h1:TPGtkTLesOwf2DE8CgVYiZinHAOuy5AYUYT1lENIZnA=
|
golang.org/x/term v0.34.0/go.mod h1:5jC53AEywhIVebHgPVeg0mj8OD3VO9OzclacVrqpaAw=
|
||||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||||
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
|
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
|
||||||
golang.org/x/text v0.29.0 h1:1neNs90w9YzJ9BocxfsQNHKuAT4pkghyXc4nhZ6sJvk=
|
golang.org/x/text v0.28.0 h1:rhazDwis8INMIwQ4tpjLDzUhx6RlXqZNPEM0huQojng=
|
||||||
golang.org/x/text v0.29.0/go.mod h1:7MhJOA9CD2qZyOKYazxdYMF85OwPdEr9jTtBpO7ydH4=
|
golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU=
|
||||||
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||||
golang.org/x/tools v0.37.0 h1:DVSRzp7FwePZW356yEAChSdNcQo6Nsp+fex1SUW09lE=
|
golang.org/x/tools v0.36.0 h1:kWS0uv/zsvHEle1LbV5LE8QujrxB3wfQyxHfhOk0Qkg=
|
||||||
golang.org/x/tools v0.37.0/go.mod h1:MBN5QPQtLMHVdvsbtarmTNukZDdgwdwlO5qGacAzF0w=
|
golang.org/x/tools v0.36.0/go.mod h1:WBDiHKJK8YgLHlcQPYQzNCkUxUypCaa5ZegCVutKm+s=
|
||||||
google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
|
google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
|
||||||
google.golang.org/protobuf v1.36.7 h1:IgrO7UwFQGJdRNXH/sQux4R1Dj1WAKcLElzeeRaXV2A=
|
google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY=
|
||||||
google.golang.org/protobuf v1.36.7/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY=
|
google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY=
|
||||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||||
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY=
|
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY=
|
||||||
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||||
@@ -169,20 +165,18 @@ gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
|
|||||||
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||||
howett.net/plist v1.0.1 h1:37GdZ8tP09Q35o9ych3ehygcsL+HqKSwzctveSlarvM=
|
howett.net/plist v1.0.1 h1:37GdZ8tP09Q35o9ych3ehygcsL+HqKSwzctveSlarvM=
|
||||||
howett.net/plist v1.0.1/go.mod h1:lqaXoTrLY4hg8tnEzNru53gicrbv7rrk+2xJA/7hw9g=
|
howett.net/plist v1.0.1/go.mod h1:lqaXoTrLY4hg8tnEzNru53gicrbv7rrk+2xJA/7hw9g=
|
||||||
modernc.org/cc/v4 v4.26.4 h1:jPhG8oNjtTYuP2FA4YefTJ/wioNUGALmGuEWt7SUR6s=
|
modernc.org/cc/v4 v4.26.2 h1:991HMkLjJzYBIfha6ECZdjrIYz2/1ayr+FL8GN+CNzM=
|
||||||
modernc.org/cc/v4 v4.26.4/go.mod h1:uVtb5OGqUKpoLWhqwNQo/8LwvoiEBLvZXIQ/SmO6mL0=
|
modernc.org/cc/v4 v4.26.2/go.mod h1:uVtb5OGqUKpoLWhqwNQo/8LwvoiEBLvZXIQ/SmO6mL0=
|
||||||
modernc.org/ccgo/v4 v4.28.1 h1:wPKYn5EC/mYTqBO373jKjvX2n+3+aK7+sICCv4Fjy1A=
|
modernc.org/ccgo/v4 v4.28.0 h1:rjznn6WWehKq7dG4JtLRKxb52Ecv8OUGah8+Z/SfpNU=
|
||||||
modernc.org/ccgo/v4 v4.28.1/go.mod h1:uD+4RnfrVgE6ec9NGguUNdhqzNIeeomeXf6CL0GTE5Q=
|
modernc.org/ccgo/v4 v4.28.0/go.mod h1:JygV3+9AV6SmPhDasu4JgquwU81XAKLd3OKTUDNOiKE=
|
||||||
modernc.org/fileutil v1.3.28 h1:Vp156KUA2nPu9F1NEv036x9UGOjg2qsi5QlWTjZmtMk=
|
modernc.org/fileutil v1.3.8 h1:qtzNm7ED75pd1C7WgAGcK4edm4fvhtBsEiI/0NQ54YM=
|
||||||
modernc.org/fileutil v1.3.28/go.mod h1:HxmghZSZVAz/LXcMNwZPA/DRrQZEVP9VX0V4LQGQFOc=
|
modernc.org/fileutil v1.3.8/go.mod h1:HxmghZSZVAz/LXcMNwZPA/DRrQZEVP9VX0V4LQGQFOc=
|
||||||
modernc.org/gc/v2 v2.6.5 h1:nyqdV8q46KvTpZlsw66kWqwXRHdjIlJOhG6kxiV/9xI=
|
modernc.org/gc/v2 v2.6.5 h1:nyqdV8q46KvTpZlsw66kWqwXRHdjIlJOhG6kxiV/9xI=
|
||||||
modernc.org/gc/v2 v2.6.5/go.mod h1:YgIahr1ypgfe7chRuJi2gD7DBQiKSLMPgBQe9oIiito=
|
modernc.org/gc/v2 v2.6.5/go.mod h1:YgIahr1ypgfe7chRuJi2gD7DBQiKSLMPgBQe9oIiito=
|
||||||
modernc.org/goabi0 v0.2.0 h1:HvEowk7LxcPd0eq6mVOAEMai46V+i7Jrj13t4AzuNks=
|
modernc.org/goabi0 v0.2.0 h1:HvEowk7LxcPd0eq6mVOAEMai46V+i7Jrj13t4AzuNks=
|
||||||
modernc.org/goabi0 v0.2.0/go.mod h1:CEFRnnJhKvWT1c1JTI3Avm+tgOWbkOu5oPA8eH8LnMI=
|
modernc.org/goabi0 v0.2.0/go.mod h1:CEFRnnJhKvWT1c1JTI3Avm+tgOWbkOu5oPA8eH8LnMI=
|
||||||
modernc.org/libc v1.66.3 h1:cfCbjTUcdsKyyZZfEUKfoHcP3S0Wkvz3jgSzByEWVCQ=
|
modernc.org/libc v1.66.3 h1:cfCbjTUcdsKyyZZfEUKfoHcP3S0Wkvz3jgSzByEWVCQ=
|
||||||
modernc.org/libc v1.66.3/go.mod h1:XD9zO8kt59cANKvHPXpx7yS2ELPheAey0vjIuZOhOU8=
|
modernc.org/libc v1.66.3/go.mod h1:XD9zO8kt59cANKvHPXpx7yS2ELPheAey0vjIuZOhOU8=
|
||||||
modernc.org/libc v1.66.9 h1:YkHp7E1EWrN2iyNav7JE/nHasmshPvlGkon1VxGqOw0=
|
|
||||||
modernc.org/libc v1.66.9/go.mod h1:aVdcY7udcawRqauu0HukYYxtBSizV+R80n/6aQe9D5k=
|
|
||||||
modernc.org/mathutil v1.7.1 h1:GCZVGXdaN8gTqB1Mf/usp1Y/hSqgI2vAGGP4jZMCxOU=
|
modernc.org/mathutil v1.7.1 h1:GCZVGXdaN8gTqB1Mf/usp1Y/hSqgI2vAGGP4jZMCxOU=
|
||||||
modernc.org/mathutil v1.7.1/go.mod h1:4p5IwJITfppl0G4sUEDtCr4DthTaT47/N3aT6MhfgJg=
|
modernc.org/mathutil v1.7.1/go.mod h1:4p5IwJITfppl0G4sUEDtCr4DthTaT47/N3aT6MhfgJg=
|
||||||
modernc.org/memory v1.11.0 h1:o4QC8aMQzmcwCK3t3Ux/ZHmwFPzE6hf2Y5LbkRs+hbI=
|
modernc.org/memory v1.11.0 h1:o4QC8aMQzmcwCK3t3Ux/ZHmwFPzE6hf2Y5LbkRs+hbI=
|
||||||
|
|||||||
@@ -25,12 +25,7 @@ type alertInfo struct {
|
|||||||
// startWorker is a long-running goroutine that processes alert tasks
|
// startWorker is a long-running goroutine that processes alert tasks
|
||||||
// every x seconds. It must be running to process status alerts.
|
// every x seconds. It must be running to process status alerts.
|
||||||
func (am *AlertManager) startWorker() {
|
func (am *AlertManager) startWorker() {
|
||||||
processPendingAlerts := time.Tick(15 * time.Second)
|
tick := time.Tick(15 * time.Second)
|
||||||
|
|
||||||
// check for status alerts that are not resolved when system comes up
|
|
||||||
// (can be removed if we figure out core bug in #1052)
|
|
||||||
checkStatusAlerts := time.Tick(561 * time.Second)
|
|
||||||
|
|
||||||
for {
|
for {
|
||||||
select {
|
select {
|
||||||
case <-am.stopChan:
|
case <-am.stopChan:
|
||||||
@@ -46,9 +41,7 @@ func (am *AlertManager) startWorker() {
|
|||||||
case "cancel":
|
case "cancel":
|
||||||
am.pendingAlerts.Delete(task.alertRecord.Id)
|
am.pendingAlerts.Delete(task.alertRecord.Id)
|
||||||
}
|
}
|
||||||
case <-checkStatusAlerts:
|
case <-tick:
|
||||||
resolveStatusAlerts(am.hub)
|
|
||||||
case <-processPendingAlerts:
|
|
||||||
// Check for expired alerts every tick
|
// Check for expired alerts every tick
|
||||||
now := time.Now()
|
now := time.Now()
|
||||||
for key, value := range am.pendingAlerts.Range {
|
for key, value := range am.pendingAlerts.Range {
|
||||||
@@ -177,35 +170,3 @@ func (am *AlertManager) sendStatusAlert(alertStatus string, systemName string, a
|
|||||||
LinkText: "View " + systemName,
|
LinkText: "View " + systemName,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
// resolveStatusAlerts resolves any status alerts that weren't resolved
|
|
||||||
// when system came up (https://github.com/henrygd/beszel/issues/1052)
|
|
||||||
func resolveStatusAlerts(app core.App) error {
|
|
||||||
db := app.DB()
|
|
||||||
// Find all active status alerts where the system is actually up
|
|
||||||
var alertIds []string
|
|
||||||
err := db.NewQuery(`
|
|
||||||
SELECT a.id
|
|
||||||
FROM alerts a
|
|
||||||
JOIN systems s ON a.system = s.id
|
|
||||||
WHERE a.name = 'Status'
|
|
||||||
AND a.triggered = true
|
|
||||||
AND s.status = 'up'
|
|
||||||
`).Column(&alertIds)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
// resolve all matching alert records
|
|
||||||
for _, alertId := range alertIds {
|
|
||||||
alert, err := app.FindRecordById("alerts", alertId)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
alert.Set("triggered", false)
|
|
||||||
err = app.Save(alert)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -13,7 +13,6 @@ import (
|
|||||||
"testing/synctest"
|
"testing/synctest"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/henrygd/beszel/internal/alerts"
|
|
||||||
beszelTests "github.com/henrygd/beszel/internal/tests"
|
beszelTests "github.com/henrygd/beszel/internal/tests"
|
||||||
|
|
||||||
"github.com/pocketbase/dbx"
|
"github.com/pocketbase/dbx"
|
||||||
@@ -370,9 +369,33 @@ func TestUserAlertsApi(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func getHubWithUser(t *testing.T) (*beszelTests.TestHub, *core.Record) {
|
||||||
|
hub, err := beszelTests.NewTestHub(t.TempDir())
|
||||||
|
assert.NoError(t, err)
|
||||||
|
hub.StartHub()
|
||||||
|
|
||||||
|
// Manually initialize the system manager to bind event hooks
|
||||||
|
err = hub.GetSystemManager().Initialize()
|
||||||
|
assert.NoError(t, err)
|
||||||
|
|
||||||
|
// Create a test user
|
||||||
|
user, err := beszelTests.CreateUser(hub, "test@example.com", "password")
|
||||||
|
assert.NoError(t, err)
|
||||||
|
|
||||||
|
// Create user settings for the test user (required for alert notifications)
|
||||||
|
userSettingsData := map[string]any{
|
||||||
|
"user": user.Id,
|
||||||
|
"settings": `{"emails":[test@example.com],"webhooks":[]}`,
|
||||||
|
}
|
||||||
|
_, err = beszelTests.CreateRecord(hub, "user_settings", userSettingsData)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
|
||||||
|
return hub, user
|
||||||
|
}
|
||||||
|
|
||||||
func TestStatusAlerts(t *testing.T) {
|
func TestStatusAlerts(t *testing.T) {
|
||||||
synctest.Test(t, func(t *testing.T) {
|
synctest.Test(t, func(t *testing.T) {
|
||||||
hub, user := beszelTests.GetHubWithUser(t)
|
hub, user := getHubWithUser(t)
|
||||||
defer hub.Cleanup()
|
defer hub.Cleanup()
|
||||||
|
|
||||||
systems, err := beszelTests.CreateSystems(hub, 4, user.Id, "paused")
|
systems, err := beszelTests.CreateSystems(hub, 4, user.Id, "paused")
|
||||||
@@ -453,7 +476,7 @@ func TestStatusAlerts(t *testing.T) {
|
|||||||
|
|
||||||
func TestAlertsHistory(t *testing.T) {
|
func TestAlertsHistory(t *testing.T) {
|
||||||
synctest.Test(t, func(t *testing.T) {
|
synctest.Test(t, func(t *testing.T) {
|
||||||
hub, user := beszelTests.GetHubWithUser(t)
|
hub, user := getHubWithUser(t)
|
||||||
defer hub.Cleanup()
|
defer hub.Cleanup()
|
||||||
|
|
||||||
// Create systems and alerts
|
// Create systems and alerts
|
||||||
@@ -579,102 +602,3 @@ func TestAlertsHistory(t *testing.T) {
|
|||||||
assert.EqualValues(t, 2, totalHistoryCount, "Should have 2 total alert history records")
|
assert.EqualValues(t, 2, totalHistoryCount, "Should have 2 total alert history records")
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
func TestResolveStatusAlerts(t *testing.T) {
|
|
||||||
hub, user := beszelTests.GetHubWithUser(t)
|
|
||||||
defer hub.Cleanup()
|
|
||||||
|
|
||||||
// Create a systemUp
|
|
||||||
systemUp, err := beszelTests.CreateRecord(hub, "systems", map[string]any{
|
|
||||||
"name": "test-system",
|
|
||||||
"users": []string{user.Id},
|
|
||||||
"host": "127.0.0.1",
|
|
||||||
"status": "up",
|
|
||||||
})
|
|
||||||
assert.NoError(t, err)
|
|
||||||
|
|
||||||
systemDown, err := beszelTests.CreateRecord(hub, "systems", map[string]any{
|
|
||||||
"name": "test-system-2",
|
|
||||||
"users": []string{user.Id},
|
|
||||||
"host": "127.0.0.2",
|
|
||||||
"status": "up",
|
|
||||||
})
|
|
||||||
assert.NoError(t, err)
|
|
||||||
|
|
||||||
// Create a status alertUp for the system
|
|
||||||
alertUp, err := beszelTests.CreateRecord(hub, "alerts", map[string]any{
|
|
||||||
"name": "Status",
|
|
||||||
"system": systemUp.Id,
|
|
||||||
"user": user.Id,
|
|
||||||
"min": 1,
|
|
||||||
})
|
|
||||||
assert.NoError(t, err)
|
|
||||||
|
|
||||||
alertDown, err := beszelTests.CreateRecord(hub, "alerts", map[string]any{
|
|
||||||
"name": "Status",
|
|
||||||
"system": systemDown.Id,
|
|
||||||
"user": user.Id,
|
|
||||||
"min": 1,
|
|
||||||
})
|
|
||||||
assert.NoError(t, err)
|
|
||||||
|
|
||||||
// Verify alert is not triggered initially
|
|
||||||
assert.False(t, alertUp.GetBool("triggered"), "Alert should not be triggered initially")
|
|
||||||
|
|
||||||
// Set the system to 'up' (this should not trigger the alert)
|
|
||||||
systemUp.Set("status", "up")
|
|
||||||
err = hub.SaveNoValidate(systemUp)
|
|
||||||
assert.NoError(t, err)
|
|
||||||
|
|
||||||
systemDown.Set("status", "down")
|
|
||||||
err = hub.SaveNoValidate(systemDown)
|
|
||||||
assert.NoError(t, err)
|
|
||||||
|
|
||||||
// Wait a moment for any processing
|
|
||||||
time.Sleep(10 * time.Millisecond)
|
|
||||||
|
|
||||||
// Verify alertUp is still not triggered after setting system to up
|
|
||||||
alertUp, err = hub.FindFirstRecordByFilter("alerts", "id={:id}", dbx.Params{"id": alertUp.Id})
|
|
||||||
assert.NoError(t, err)
|
|
||||||
assert.False(t, alertUp.GetBool("triggered"), "Alert should not be triggered when system is up")
|
|
||||||
|
|
||||||
// Manually set both alerts triggered to true
|
|
||||||
alertUp.Set("triggered", true)
|
|
||||||
err = hub.SaveNoValidate(alertUp)
|
|
||||||
assert.NoError(t, err)
|
|
||||||
alertDown.Set("triggered", true)
|
|
||||||
err = hub.SaveNoValidate(alertDown)
|
|
||||||
assert.NoError(t, err)
|
|
||||||
|
|
||||||
// Verify we have exactly one alert with triggered true
|
|
||||||
triggeredCount, err := hub.CountRecords("alerts", dbx.HashExp{"triggered": true})
|
|
||||||
assert.NoError(t, err)
|
|
||||||
assert.EqualValues(t, 2, triggeredCount, "Should have exactly two alerts with triggered true")
|
|
||||||
|
|
||||||
// Verify the specific alertUp is triggered
|
|
||||||
alertUp, err = hub.FindFirstRecordByFilter("alerts", "id={:id}", dbx.Params{"id": alertUp.Id})
|
|
||||||
assert.NoError(t, err)
|
|
||||||
assert.True(t, alertUp.GetBool("triggered"), "Alert should be triggered")
|
|
||||||
|
|
||||||
// Verify we have two unresolved alert history records
|
|
||||||
alertHistoryCount, err := hub.CountRecords("alerts_history", dbx.HashExp{"resolved": ""})
|
|
||||||
assert.NoError(t, err)
|
|
||||||
assert.EqualValues(t, 2, alertHistoryCount, "Should have exactly two unresolved alert history records")
|
|
||||||
|
|
||||||
err = alerts.ResolveStatusAlerts(hub)
|
|
||||||
assert.NoError(t, err)
|
|
||||||
|
|
||||||
// Verify alertUp is not triggered after resolving
|
|
||||||
alertUp, err = hub.FindFirstRecordByFilter("alerts", "id={:id}", dbx.Params{"id": alertUp.Id})
|
|
||||||
assert.NoError(t, err)
|
|
||||||
assert.False(t, alertUp.GetBool("triggered"), "Alert should not be triggered after resolving")
|
|
||||||
// Verify alertDown is still triggered
|
|
||||||
alertDown, err = hub.FindFirstRecordByFilter("alerts", "id={:id}", dbx.Params{"id": alertDown.Id})
|
|
||||||
assert.NoError(t, err)
|
|
||||||
assert.True(t, alertDown.GetBool("triggered"), "Alert should still be triggered after resolving")
|
|
||||||
|
|
||||||
// Verify we have one unresolved alert history record
|
|
||||||
alertHistoryCount, err = hub.CountRecords("alerts_history", dbx.HashExp{"resolved": ""})
|
|
||||||
assert.NoError(t, err)
|
|
||||||
assert.EqualValues(t, 1, alertHistoryCount, "Should have exactly one unresolved alert history record")
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -1,6 +1,3 @@
|
|||||||
//go:build testing
|
|
||||||
// +build testing
|
|
||||||
|
|
||||||
package alerts
|
package alerts
|
||||||
|
|
||||||
import (
|
import (
|
||||||
@@ -56,7 +53,3 @@ func (am *AlertManager) ForceExpirePendingAlerts() {
|
|||||||
return true
|
return true
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func ResolveStatusAlerts(app core.App) error {
|
|
||||||
return resolveStatusAlerts(app)
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -1,25 +0,0 @@
|
|||||||
FROM --platform=$BUILDPLATFORM golang:alpine AS builder
|
|
||||||
|
|
||||||
WORKDIR /app
|
|
||||||
|
|
||||||
COPY ../go.mod ../go.sum ./
|
|
||||||
RUN go mod download
|
|
||||||
|
|
||||||
# Copy source files
|
|
||||||
COPY . ./
|
|
||||||
|
|
||||||
# Build
|
|
||||||
ARG TARGETOS TARGETARCH
|
|
||||||
RUN CGO_ENABLED=0 GOGC=75 GOOS=$TARGETOS GOARCH=$TARGETARCH go build -ldflags "-w -s" -o /agent ./internal/cmd/agent
|
|
||||||
|
|
||||||
# --------------------------
|
|
||||||
# Final image: default scratch-based agent
|
|
||||||
# Note: must cap_add: [CAP_PERFMON] in docker-compose.yml
|
|
||||||
# --------------------------
|
|
||||||
FROM alpine:edge
|
|
||||||
|
|
||||||
COPY --from=builder /agent /agent
|
|
||||||
|
|
||||||
RUN apk add --no-cache -X https://dl-cdn.alpinelinux.org/alpine/edge/testing igt-gpu-tools
|
|
||||||
|
|
||||||
ENTRYPOINT ["/agent"]
|
|
||||||
@@ -2,18 +2,15 @@ FROM --platform=$BUILDPLATFORM golang:alpine AS builder
|
|||||||
|
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
|
||||||
|
COPY go.mod go.sum ./
|
||||||
COPY ../go.mod ../go.sum ./
|
# RUN go mod download
|
||||||
RUN go mod download
|
COPY *.go ./
|
||||||
|
COPY cmd ./cmd
|
||||||
# Copy source files
|
COPY internal ./internal
|
||||||
COPY . ./
|
|
||||||
|
|
||||||
# Build
|
# Build
|
||||||
ARG TARGETOS TARGETARCH
|
ARG TARGETOS TARGETARCH
|
||||||
RUN CGO_ENABLED=0 GOGC=75 GOOS=$TARGETOS GOARCH=$TARGETARCH go build -ldflags "-w -s" -o /agent ./internal/cmd/agent
|
RUN CGO_ENABLED=0 GOGC=75 GOOS=$TARGETOS GOARCH=$TARGETARCH go build -ldflags "-w -s" -o /agent ./cmd/agent
|
||||||
|
|
||||||
RUN rm -rf /tmp/*
|
|
||||||
|
|
||||||
# --------------------------
|
# --------------------------
|
||||||
# Final image: GPU-enabled agent with nvidia-smi
|
# Final image: GPU-enabled agent with nvidia-smi
|
||||||
@@ -21,7 +18,4 @@ RUN rm -rf /tmp/*
|
|||||||
FROM nvidia/cuda:12.2.2-base-ubuntu22.04
|
FROM nvidia/cuda:12.2.2-base-ubuntu22.04
|
||||||
COPY --from=builder /agent /agent
|
COPY --from=builder /agent /agent
|
||||||
|
|
||||||
# this is so we don't need to create the /tmp directory in the scratch container
|
|
||||||
COPY --from=builder /tmp /tmp
|
|
||||||
|
|
||||||
ENTRYPOINT ["/agent"]
|
ENTRYPOINT ["/agent"]
|
||||||
|
|||||||
@@ -38,21 +38,19 @@ type Stats struct {
|
|||||||
Bandwidth [2]uint64 `json:"b,omitzero" cbor:"26,keyasint,omitzero"` // [sent bytes, recv bytes]
|
Bandwidth [2]uint64 `json:"b,omitzero" cbor:"26,keyasint,omitzero"` // [sent bytes, recv bytes]
|
||||||
MaxBandwidth [2]uint64 `json:"bm,omitzero" cbor:"27,keyasint,omitzero"` // [sent bytes, recv bytes]
|
MaxBandwidth [2]uint64 `json:"bm,omitzero" cbor:"27,keyasint,omitzero"` // [sent bytes, recv bytes]
|
||||||
// TODO: remove other load fields in future release in favor of load avg array
|
// TODO: remove other load fields in future release in favor of load avg array
|
||||||
LoadAvg [3]float64 `json:"la,omitempty" cbor:"28,keyasint"`
|
LoadAvg [3]float64 `json:"la,omitempty" cbor:"28,keyasint"`
|
||||||
Battery [2]uint8 `json:"bat,omitzero" cbor:"29,keyasint,omitzero"` // [percent, charge state, current]
|
Battery [2]uint8 `json:"bat,omitzero" cbor:"29,keyasint,omitzero"` // [percent, charge state, current]
|
||||||
MaxMem float64 `json:"mm,omitempty" cbor:"30,keyasint,omitempty"`
|
MaxMem float64 `json:"mm,omitempty" cbor:"30,keyasint,omitempty"`
|
||||||
NetworkInterfaces map[string][4]uint64 `json:"ni,omitempty" cbor:"31,keyasint,omitempty"` // [upload bytes, download bytes, total upload, total download]
|
|
||||||
}
|
}
|
||||||
|
|
||||||
type GPUData struct {
|
type GPUData struct {
|
||||||
Name string `json:"n" cbor:"0,keyasint"`
|
Name string `json:"n" cbor:"0,keyasint"`
|
||||||
Temperature float64 `json:"-"`
|
Temperature float64 `json:"-"`
|
||||||
MemoryUsed float64 `json:"mu,omitempty,omitzero" cbor:"1,keyasint,omitempty,omitzero"`
|
MemoryUsed float64 `json:"mu,omitempty" cbor:"1,keyasint,omitempty"`
|
||||||
MemoryTotal float64 `json:"mt,omitempty,omitzero" cbor:"2,keyasint,omitempty,omitzero"`
|
MemoryTotal float64 `json:"mt,omitempty" cbor:"2,keyasint,omitempty"`
|
||||||
Usage float64 `json:"u" cbor:"3,keyasint,omitempty"`
|
Usage float64 `json:"u" cbor:"3,keyasint"`
|
||||||
Power float64 `json:"p,omitempty" cbor:"4,keyasint,omitempty"`
|
Power float64 `json:"p,omitempty" cbor:"4,keyasint,omitempty"`
|
||||||
Count float64 `json:"-"`
|
Count float64 `json:"-"`
|
||||||
Engines map[string]float64 `json:"e,omitempty" cbor:"5,keyasint,omitempty"`
|
|
||||||
}
|
}
|
||||||
|
|
||||||
type FsStats struct {
|
type FsStats struct {
|
||||||
@@ -85,14 +83,6 @@ const (
|
|||||||
Freebsd
|
Freebsd
|
||||||
)
|
)
|
||||||
|
|
||||||
type ConnectionType = uint8
|
|
||||||
|
|
||||||
const (
|
|
||||||
ConnectionTypeNone ConnectionType = iota
|
|
||||||
ConnectionTypeSSH
|
|
||||||
ConnectionTypeWebSocket
|
|
||||||
)
|
|
||||||
|
|
||||||
type Info struct {
|
type Info struct {
|
||||||
Hostname string `json:"h" cbor:"0,keyasint"`
|
Hostname string `json:"h" cbor:"0,keyasint"`
|
||||||
KernelVersion string `json:"k,omitempty" cbor:"1,keyasint,omitempty"`
|
KernelVersion string `json:"k,omitempty" cbor:"1,keyasint,omitempty"`
|
||||||
@@ -114,8 +104,7 @@ type Info struct {
|
|||||||
LoadAvg15 float64 `json:"l15,omitempty" cbor:"17,keyasint,omitempty"`
|
LoadAvg15 float64 `json:"l15,omitempty" cbor:"17,keyasint,omitempty"`
|
||||||
BandwidthBytes uint64 `json:"bb" cbor:"18,keyasint"`
|
BandwidthBytes uint64 `json:"bb" cbor:"18,keyasint"`
|
||||||
// TODO: remove load fields in future release in favor of load avg array
|
// TODO: remove load fields in future release in favor of load avg array
|
||||||
LoadAvg [3]float64 `json:"la,omitempty" cbor:"19,keyasint"`
|
LoadAvg [3]float64 `json:"la,omitempty" cbor:"19,keyasint"`
|
||||||
ConnectionType ConnectionType `json:"ct,omitempty" cbor:"20,keyasint,omitempty,omitzero"`
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Final data structure to return to the hub
|
// Final data structure to return to the hub
|
||||||
|
|||||||
@@ -175,31 +175,35 @@ func (h *Hub) registerCronJobs(_ *core.ServeEvent) error {
|
|||||||
|
|
||||||
// custom middlewares
|
// custom middlewares
|
||||||
func (h *Hub) registerMiddlewares(se *core.ServeEvent) {
|
func (h *Hub) registerMiddlewares(se *core.ServeEvent) {
|
||||||
// authorizes request with user matching the provided email
|
|
||||||
authorizeRequestWithEmail := func(e *core.RequestEvent, email string) (err error) {
|
|
||||||
if e.Auth != nil || email == "" {
|
|
||||||
return e.Next()
|
|
||||||
}
|
|
||||||
isAuthRefresh := e.Request.URL.Path == "/api/collections/users/auth-refresh" && e.Request.Method == http.MethodPost
|
|
||||||
e.Auth, err = e.App.FindFirstRecordByData("users", "email", email)
|
|
||||||
if err != nil || !isAuthRefresh {
|
|
||||||
return e.Next()
|
|
||||||
}
|
|
||||||
// auth refresh endpoint, make sure token is set in header
|
|
||||||
token, _ := e.Auth.NewAuthToken()
|
|
||||||
e.Request.Header.Set("Authorization", token)
|
|
||||||
return e.Next()
|
|
||||||
}
|
|
||||||
// authenticate with trusted header
|
|
||||||
if autoLogin, _ := GetEnv("AUTO_LOGIN"); autoLogin != "" {
|
|
||||||
se.Router.BindFunc(func(e *core.RequestEvent) error {
|
|
||||||
return authorizeRequestWithEmail(e, autoLogin)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
// authenticate with trusted header
|
// authenticate with trusted header
|
||||||
if trustedHeader, _ := GetEnv("TRUSTED_AUTH_HEADER"); trustedHeader != "" {
|
if trustedHeader, _ := GetEnv("TRUSTED_AUTH_HEADER"); trustedHeader != "" {
|
||||||
se.Router.BindFunc(func(e *core.RequestEvent) error {
|
se.Router.BindFunc(func(e *core.RequestEvent) error {
|
||||||
return authorizeRequestWithEmail(e, e.Request.Header.Get(trustedHeader))
|
if e.Auth != nil {
|
||||||
|
return e.Next()
|
||||||
|
}
|
||||||
|
trustedEmail := e.Request.Header.Get(trustedHeader)
|
||||||
|
if trustedEmail == "" {
|
||||||
|
return e.Next()
|
||||||
|
}
|
||||||
|
isAuthRefresh := e.Request.URL.Path == "/api/collections/users/auth-refresh" && e.Request.Method == http.MethodPost
|
||||||
|
if !isAuthRefresh {
|
||||||
|
authRecord, err := e.App.FindAuthRecordByEmail("users", trustedEmail)
|
||||||
|
if err == nil {
|
||||||
|
e.Auth = authRecord
|
||||||
|
}
|
||||||
|
return e.Next()
|
||||||
|
}
|
||||||
|
// if auth refresh endpoint, find user record directly and generate token
|
||||||
|
user, err := e.App.FindFirstRecordByData("users", "email", trustedEmail)
|
||||||
|
if err != nil {
|
||||||
|
return e.Next()
|
||||||
|
}
|
||||||
|
e.Auth = user
|
||||||
|
// need to set the authorization header for the client sdk to pick up the token
|
||||||
|
if token, err := user.NewAuthToken(); err == nil {
|
||||||
|
e.Request.Header.Set("Authorization", token)
|
||||||
|
}
|
||||||
|
return e.Next()
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -712,60 +712,6 @@ func TestCreateUserEndpointAvailability(t *testing.T) {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestAutoLoginMiddleware(t *testing.T) {
|
|
||||||
var hubs []*beszelTests.TestHub
|
|
||||||
|
|
||||||
defer func() {
|
|
||||||
defer os.Unsetenv("AUTO_LOGIN")
|
|
||||||
for _, hub := range hubs {
|
|
||||||
hub.Cleanup()
|
|
||||||
}
|
|
||||||
}()
|
|
||||||
|
|
||||||
os.Setenv("AUTO_LOGIN", "user@test.com")
|
|
||||||
|
|
||||||
testAppFactory := func(t testing.TB) *pbTests.TestApp {
|
|
||||||
hub, _ := beszelTests.NewTestHub(t.TempDir())
|
|
||||||
hubs = append(hubs, hub)
|
|
||||||
hub.StartHub()
|
|
||||||
return hub.TestApp
|
|
||||||
}
|
|
||||||
|
|
||||||
scenarios := []beszelTests.ApiScenario{
|
|
||||||
{
|
|
||||||
Name: "GET /getkey - without auto login should fail",
|
|
||||||
Method: http.MethodGet,
|
|
||||||
URL: "/api/beszel/getkey",
|
|
||||||
ExpectedStatus: 401,
|
|
||||||
ExpectedContent: []string{"requires valid"},
|
|
||||||
TestAppFactory: testAppFactory,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
Name: "GET /getkey - with auto login should fail if no matching user",
|
|
||||||
Method: http.MethodGet,
|
|
||||||
URL: "/api/beszel/getkey",
|
|
||||||
ExpectedStatus: 401,
|
|
||||||
ExpectedContent: []string{"requires valid"},
|
|
||||||
TestAppFactory: testAppFactory,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
Name: "GET /getkey - with auto login should succeed",
|
|
||||||
Method: http.MethodGet,
|
|
||||||
URL: "/api/beszel/getkey",
|
|
||||||
ExpectedStatus: 200,
|
|
||||||
ExpectedContent: []string{"\"key\":", "\"v\":"},
|
|
||||||
TestAppFactory: testAppFactory,
|
|
||||||
BeforeTestFunc: func(t testing.TB, app *pbTests.TestApp, e *core.ServeEvent) {
|
|
||||||
beszelTests.CreateUser(app, "user@test.com", "password123")
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
for _, scenario := range scenarios {
|
|
||||||
scenario.Test(t)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestTrustedHeaderMiddleware(t *testing.T) {
|
func TestTrustedHeaderMiddleware(t *testing.T) {
|
||||||
var hubs []*beszelTests.TestHub
|
var hubs []*beszelTests.TestHub
|
||||||
|
|
||||||
|
|||||||
@@ -225,19 +225,6 @@ func (rm *RecordManager) AverageSystemStats(db dbx.Builder, records RecordIds) *
|
|||||||
sum.MaxBandwidth[0] = max(sum.MaxBandwidth[0], stats.MaxBandwidth[0], stats.Bandwidth[0])
|
sum.MaxBandwidth[0] = max(sum.MaxBandwidth[0], stats.MaxBandwidth[0], stats.Bandwidth[0])
|
||||||
sum.MaxBandwidth[1] = max(sum.MaxBandwidth[1], stats.MaxBandwidth[1], stats.Bandwidth[1])
|
sum.MaxBandwidth[1] = max(sum.MaxBandwidth[1], stats.MaxBandwidth[1], stats.Bandwidth[1])
|
||||||
|
|
||||||
// Accumulate network interfaces
|
|
||||||
if sum.NetworkInterfaces == nil {
|
|
||||||
sum.NetworkInterfaces = make(map[string][4]uint64, len(stats.NetworkInterfaces))
|
|
||||||
}
|
|
||||||
for key, value := range stats.NetworkInterfaces {
|
|
||||||
sum.NetworkInterfaces[key] = [4]uint64{
|
|
||||||
sum.NetworkInterfaces[key][0] + value[0],
|
|
||||||
sum.NetworkInterfaces[key][1] + value[1],
|
|
||||||
max(sum.NetworkInterfaces[key][2], value[2]),
|
|
||||||
max(sum.NetworkInterfaces[key][3], value[3]),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Accumulate temperatures
|
// Accumulate temperatures
|
||||||
if stats.Temperatures != nil {
|
if stats.Temperatures != nil {
|
||||||
if sum.Temperatures == nil {
|
if sum.Temperatures == nil {
|
||||||
@@ -284,16 +271,6 @@ func (rm *RecordManager) AverageSystemStats(db dbx.Builder, records RecordIds) *
|
|||||||
gpu.Usage += value.Usage
|
gpu.Usage += value.Usage
|
||||||
gpu.Power += value.Power
|
gpu.Power += value.Power
|
||||||
gpu.Count += value.Count
|
gpu.Count += value.Count
|
||||||
|
|
||||||
if value.Engines != nil {
|
|
||||||
if gpu.Engines == nil {
|
|
||||||
gpu.Engines = make(map[string]float64, len(value.Engines))
|
|
||||||
}
|
|
||||||
for engineKey, engineValue := range value.Engines {
|
|
||||||
gpu.Engines[engineKey] += engineValue
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
sum.GPUData[id] = gpu
|
sum.GPUData[id] = gpu
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -322,19 +299,6 @@ func (rm *RecordManager) AverageSystemStats(db dbx.Builder, records RecordIds) *
|
|||||||
sum.Bandwidth[0] = sum.Bandwidth[0] / uint64(count)
|
sum.Bandwidth[0] = sum.Bandwidth[0] / uint64(count)
|
||||||
sum.Bandwidth[1] = sum.Bandwidth[1] / uint64(count)
|
sum.Bandwidth[1] = sum.Bandwidth[1] / uint64(count)
|
||||||
sum.Battery[0] = uint8(batterySum / int(count))
|
sum.Battery[0] = uint8(batterySum / int(count))
|
||||||
|
|
||||||
// Average network interfaces
|
|
||||||
if sum.NetworkInterfaces != nil {
|
|
||||||
for key := range sum.NetworkInterfaces {
|
|
||||||
sum.NetworkInterfaces[key] = [4]uint64{
|
|
||||||
sum.NetworkInterfaces[key][0] / uint64(count),
|
|
||||||
sum.NetworkInterfaces[key][1] / uint64(count),
|
|
||||||
sum.NetworkInterfaces[key][2],
|
|
||||||
sum.NetworkInterfaces[key][3],
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Average temperatures
|
// Average temperatures
|
||||||
if sum.Temperatures != nil && tempCount > 0 {
|
if sum.Temperatures != nil && tempCount > 0 {
|
||||||
for key := range sum.Temperatures {
|
for key := range sum.Temperatures {
|
||||||
@@ -363,13 +327,6 @@ func (rm *RecordManager) AverageSystemStats(db dbx.Builder, records RecordIds) *
|
|||||||
gpu.Usage = twoDecimals(gpu.Usage / count)
|
gpu.Usage = twoDecimals(gpu.Usage / count)
|
||||||
gpu.Power = twoDecimals(gpu.Power / count)
|
gpu.Power = twoDecimals(gpu.Power / count)
|
||||||
gpu.Count = twoDecimals(gpu.Count / count)
|
gpu.Count = twoDecimals(gpu.Count / count)
|
||||||
|
|
||||||
if gpu.Engines != nil {
|
|
||||||
for engineKey := range gpu.Engines {
|
|
||||||
gpu.Engines[engineKey] = twoDecimals(gpu.Engines[engineKey] / count)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
sum.GPUData[id] = gpu
|
sum.GPUData[id] = gpu
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -175,7 +175,7 @@ func TestDeleteOldSystemStats(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Run deletion
|
// Run deletion
|
||||||
err = records.DeleteOldSystemStats(hub)
|
err = records.TestDeleteOldSystemStats(hub)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
// Verify results
|
// Verify results
|
||||||
@@ -268,7 +268,7 @@ func TestDeleteOldAlertsHistory(t *testing.T) {
|
|||||||
assert.Equal(t, int64(tc.alertCount), countBefore, "Initial count should match")
|
assert.Equal(t, int64(tc.alertCount), countBefore, "Initial count should match")
|
||||||
|
|
||||||
// Run deletion
|
// Run deletion
|
||||||
err = records.DeleteOldAlertsHistory(hub, tc.countToKeep, tc.countBeforeDeletion)
|
err = records.TestDeleteOldAlertsHistory(hub, tc.countToKeep, tc.countBeforeDeletion)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
// Count after deletion
|
// Count after deletion
|
||||||
@@ -332,7 +332,7 @@ func TestDeleteOldAlertsHistoryEdgeCases(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Should not error and should not delete anything
|
// Should not error and should not delete anything
|
||||||
err = records.DeleteOldAlertsHistory(hub, 10, 20)
|
err = records.TestDeleteOldAlertsHistory(hub, 10, 20)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
count, err := hub.CountRecords("alerts_history")
|
count, err := hub.CountRecords("alerts_history")
|
||||||
@@ -346,7 +346,7 @@ func TestDeleteOldAlertsHistoryEdgeCases(t *testing.T) {
|
|||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
// Should not error with empty table
|
// Should not error with empty table
|
||||||
err = records.DeleteOldAlertsHistory(hub, 10, 20)
|
err = records.TestDeleteOldAlertsHistory(hub, 10, 20)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@@ -376,7 +376,7 @@ func TestTwoDecimals(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
for _, tc := range testCases {
|
for _, tc := range testCases {
|
||||||
result := records.TwoDecimals(tc.input)
|
result := records.TestTwoDecimals(tc.input)
|
||||||
assert.InDelta(t, tc.expected, result, 0.02, "twoDecimals(%f) should equal %f", tc.input, tc.expected)
|
assert.InDelta(t, tc.expected, result, 0.02, "twoDecimals(%f) should equal %f", tc.input, tc.expected)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,17 +7,17 @@ import (
|
|||||||
"github.com/pocketbase/pocketbase/core"
|
"github.com/pocketbase/pocketbase/core"
|
||||||
)
|
)
|
||||||
|
|
||||||
// DeleteOldSystemStats exposes deleteOldSystemStats for testing
|
// TestDeleteOldSystemStats exposes deleteOldSystemStats for testing
|
||||||
func DeleteOldSystemStats(app core.App) error {
|
func TestDeleteOldSystemStats(app core.App) error {
|
||||||
return deleteOldSystemStats(app)
|
return deleteOldSystemStats(app)
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeleteOldAlertsHistory exposes deleteOldAlertsHistory for testing
|
// TestDeleteOldAlertsHistory exposes deleteOldAlertsHistory for testing
|
||||||
func DeleteOldAlertsHistory(app core.App, countToKeep, countBeforeDeletion int) error {
|
func TestDeleteOldAlertsHistory(app core.App, countToKeep, countBeforeDeletion int) error {
|
||||||
return deleteOldAlertsHistory(app, countToKeep, countBeforeDeletion)
|
return deleteOldAlertsHistory(app, countToKeep, countBeforeDeletion)
|
||||||
}
|
}
|
||||||
|
|
||||||
// TwoDecimals exposes twoDecimals for testing
|
// TestTwoDecimals exposes twoDecimals for testing
|
||||||
func TwoDecimals(value float64) float64 {
|
func TestTwoDecimals(value float64) float64 {
|
||||||
return twoDecimals(value)
|
return twoDecimals(value)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,10 +17,7 @@
|
|||||||
"linter": {
|
"linter": {
|
||||||
"enabled": true,
|
"enabled": true,
|
||||||
"rules": {
|
"rules": {
|
||||||
"recommended": true,
|
"recommended": true
|
||||||
"correctness": {
|
|
||||||
"useUniqueElementIds": "off"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"javascript": {
|
"javascript": {
|
||||||
@@ -38,4 +35,4 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
186
internal/site/package-lock.json
generated
186
internal/site/package-lock.json
generated
@@ -1,12 +1,12 @@
|
|||||||
{
|
{
|
||||||
"name": "beszel",
|
"name": "beszel",
|
||||||
"version": "0.12.10",
|
"version": "0.12.7",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "beszel",
|
"name": "beszel",
|
||||||
"version": "0.12.10",
|
"version": "0.12.7",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@henrygd/queue": "^1.0.7",
|
"@henrygd/queue": "^1.0.7",
|
||||||
"@henrygd/semaphore": "^0.0.2",
|
"@henrygd/semaphore": "^0.0.2",
|
||||||
@@ -46,7 +46,6 @@
|
|||||||
"valibot": "^0.42.1"
|
"valibot": "^0.42.1"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@biomejs/biome": "2.2.3",
|
|
||||||
"@lingui/cli": "^5.4.1",
|
"@lingui/cli": "^5.4.1",
|
||||||
"@lingui/swc-plugin": "^5.6.1",
|
"@lingui/swc-plugin": "^5.6.1",
|
||||||
"@lingui/vite-plugin": "^5.4.1",
|
"@lingui/vite-plugin": "^5.4.1",
|
||||||
@@ -331,169 +330,6 @@
|
|||||||
"node": ">=6.9.0"
|
"node": ">=6.9.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@biomejs/biome": {
|
|
||||||
"version": "2.2.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/@biomejs/biome/-/biome-2.2.3.tgz",
|
|
||||||
"integrity": "sha512-9w0uMTvPrIdvUrxazZ42Ib7t8Y2yoGLKLdNne93RLICmaHw7mcLv4PPb5LvZLJF3141gQHiCColOh/v6VWlWmg==",
|
|
||||||
"dev": true,
|
|
||||||
"license": "MIT OR Apache-2.0",
|
|
||||||
"bin": {
|
|
||||||
"biome": "bin/biome"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=14.21.3"
|
|
||||||
},
|
|
||||||
"funding": {
|
|
||||||
"type": "opencollective",
|
|
||||||
"url": "https://opencollective.com/biome"
|
|
||||||
},
|
|
||||||
"optionalDependencies": {
|
|
||||||
"@biomejs/cli-darwin-arm64": "2.2.3",
|
|
||||||
"@biomejs/cli-darwin-x64": "2.2.3",
|
|
||||||
"@biomejs/cli-linux-arm64": "2.2.3",
|
|
||||||
"@biomejs/cli-linux-arm64-musl": "2.2.3",
|
|
||||||
"@biomejs/cli-linux-x64": "2.2.3",
|
|
||||||
"@biomejs/cli-linux-x64-musl": "2.2.3",
|
|
||||||
"@biomejs/cli-win32-arm64": "2.2.3",
|
|
||||||
"@biomejs/cli-win32-x64": "2.2.3"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@biomejs/cli-darwin-arm64": {
|
|
||||||
"version": "2.2.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/@biomejs/cli-darwin-arm64/-/cli-darwin-arm64-2.2.3.tgz",
|
|
||||||
"integrity": "sha512-OrqQVBpadB5eqzinXN4+Q6honBz+tTlKVCsbEuEpljK8ASSItzIRZUA02mTikl3H/1nO2BMPFiJ0nkEZNy3B1w==",
|
|
||||||
"cpu": [
|
|
||||||
"arm64"
|
|
||||||
],
|
|
||||||
"dev": true,
|
|
||||||
"license": "MIT OR Apache-2.0",
|
|
||||||
"optional": true,
|
|
||||||
"os": [
|
|
||||||
"darwin"
|
|
||||||
],
|
|
||||||
"engines": {
|
|
||||||
"node": ">=14.21.3"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@biomejs/cli-darwin-x64": {
|
|
||||||
"version": "2.2.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/@biomejs/cli-darwin-x64/-/cli-darwin-x64-2.2.3.tgz",
|
|
||||||
"integrity": "sha512-OCdBpb1TmyfsTgBAM1kPMXyYKTohQ48WpiN9tkt9xvU6gKVKHY4oVwteBebiOqyfyzCNaSiuKIPjmHjUZ2ZNMg==",
|
|
||||||
"cpu": [
|
|
||||||
"x64"
|
|
||||||
],
|
|
||||||
"dev": true,
|
|
||||||
"license": "MIT OR Apache-2.0",
|
|
||||||
"optional": true,
|
|
||||||
"os": [
|
|
||||||
"darwin"
|
|
||||||
],
|
|
||||||
"engines": {
|
|
||||||
"node": ">=14.21.3"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@biomejs/cli-linux-arm64": {
|
|
||||||
"version": "2.2.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/@biomejs/cli-linux-arm64/-/cli-linux-arm64-2.2.3.tgz",
|
|
||||||
"integrity": "sha512-g/Uta2DqYpECxG+vUmTAmUKlVhnGEcY7DXWgKP8ruLRa8Si1QHsWknPY3B/wCo0KgYiFIOAZ9hjsHfNb9L85+g==",
|
|
||||||
"cpu": [
|
|
||||||
"arm64"
|
|
||||||
],
|
|
||||||
"dev": true,
|
|
||||||
"license": "MIT OR Apache-2.0",
|
|
||||||
"optional": true,
|
|
||||||
"os": [
|
|
||||||
"linux"
|
|
||||||
],
|
|
||||||
"engines": {
|
|
||||||
"node": ">=14.21.3"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@biomejs/cli-linux-arm64-musl": {
|
|
||||||
"version": "2.2.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/@biomejs/cli-linux-arm64-musl/-/cli-linux-arm64-musl-2.2.3.tgz",
|
|
||||||
"integrity": "sha512-q3w9jJ6JFPZPeqyvwwPeaiS/6NEszZ+pXKF+IczNo8Xj6fsii45a4gEEicKyKIytalV+s829ACZujQlXAiVLBQ==",
|
|
||||||
"cpu": [
|
|
||||||
"arm64"
|
|
||||||
],
|
|
||||||
"dev": true,
|
|
||||||
"license": "MIT OR Apache-2.0",
|
|
||||||
"optional": true,
|
|
||||||
"os": [
|
|
||||||
"linux"
|
|
||||||
],
|
|
||||||
"engines": {
|
|
||||||
"node": ">=14.21.3"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@biomejs/cli-linux-x64": {
|
|
||||||
"version": "2.2.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/@biomejs/cli-linux-x64/-/cli-linux-x64-2.2.3.tgz",
|
|
||||||
"integrity": "sha512-LEtyYL1fJsvw35CxrbQ0gZoxOG3oZsAjzfRdvRBRHxOpQ91Q5doRVjvWW/wepgSdgk5hlaNzfeqpyGmfSD0Eyw==",
|
|
||||||
"cpu": [
|
|
||||||
"x64"
|
|
||||||
],
|
|
||||||
"dev": true,
|
|
||||||
"license": "MIT OR Apache-2.0",
|
|
||||||
"optional": true,
|
|
||||||
"os": [
|
|
||||||
"linux"
|
|
||||||
],
|
|
||||||
"engines": {
|
|
||||||
"node": ">=14.21.3"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@biomejs/cli-linux-x64-musl": {
|
|
||||||
"version": "2.2.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/@biomejs/cli-linux-x64-musl/-/cli-linux-x64-musl-2.2.3.tgz",
|
|
||||||
"integrity": "sha512-y76Dn4vkP1sMRGPFlNc+OTETBhGPJ90jY3il6jAfur8XWrYBQV3swZ1Jo0R2g+JpOeeoA0cOwM7mJG6svDz79w==",
|
|
||||||
"cpu": [
|
|
||||||
"x64"
|
|
||||||
],
|
|
||||||
"dev": true,
|
|
||||||
"license": "MIT OR Apache-2.0",
|
|
||||||
"optional": true,
|
|
||||||
"os": [
|
|
||||||
"linux"
|
|
||||||
],
|
|
||||||
"engines": {
|
|
||||||
"node": ">=14.21.3"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@biomejs/cli-win32-arm64": {
|
|
||||||
"version": "2.2.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/@biomejs/cli-win32-arm64/-/cli-win32-arm64-2.2.3.tgz",
|
|
||||||
"integrity": "sha512-Ms9zFYzjcJK7LV+AOMYnjN3pV3xL8Prxf9aWdDVL74onLn5kcvZ1ZMQswE5XHtnd/r/0bnUd928Rpbs14BzVmA==",
|
|
||||||
"cpu": [
|
|
||||||
"arm64"
|
|
||||||
],
|
|
||||||
"dev": true,
|
|
||||||
"license": "MIT OR Apache-2.0",
|
|
||||||
"optional": true,
|
|
||||||
"os": [
|
|
||||||
"win32"
|
|
||||||
],
|
|
||||||
"engines": {
|
|
||||||
"node": ">=14.21.3"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@biomejs/cli-win32-x64": {
|
|
||||||
"version": "2.2.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/@biomejs/cli-win32-x64/-/cli-win32-x64-2.2.3.tgz",
|
|
||||||
"integrity": "sha512-gvCpewE7mBwBIpqk1YrUqNR4mCiyJm6UI3YWQQXkedSSEwzRdodRpaKhbdbHw1/hmTWOVXQ+Eih5Qctf4TCVOQ==",
|
|
||||||
"cpu": [
|
|
||||||
"x64"
|
|
||||||
],
|
|
||||||
"dev": true,
|
|
||||||
"license": "MIT OR Apache-2.0",
|
|
||||||
"optional": true,
|
|
||||||
"os": [
|
|
||||||
"win32"
|
|
||||||
],
|
|
||||||
"engines": {
|
|
||||||
"node": ">=14.21.3"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@esbuild/aix-ppc64": {
|
"node_modules/@esbuild/aix-ppc64": {
|
||||||
"version": "0.25.6",
|
"version": "0.25.6",
|
||||||
"resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.6.tgz",
|
"resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.6.tgz",
|
||||||
@@ -5927,14 +5763,14 @@
|
|||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/tinyglobby": {
|
"node_modules/tinyglobby": {
|
||||||
"version": "0.2.15",
|
"version": "0.2.14",
|
||||||
"resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz",
|
"resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.14.tgz",
|
||||||
"integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==",
|
"integrity": "sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"fdir": "^6.5.0",
|
"fdir": "^6.4.4",
|
||||||
"picomatch": "^4.0.3"
|
"picomatch": "^4.0.2"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=12.0.0"
|
"node": ">=12.0.0"
|
||||||
@@ -6121,9 +5957,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/vite": {
|
"node_modules/vite": {
|
||||||
"version": "7.1.5",
|
"version": "7.1.3",
|
||||||
"resolved": "https://registry.npmjs.org/vite/-/vite-7.1.5.tgz",
|
"resolved": "https://registry.npmjs.org/vite/-/vite-7.1.3.tgz",
|
||||||
"integrity": "sha512-4cKBO9wR75r0BeIWWWId9XK9Lj6La5X846Zw9dFfzMRw38IlTk2iCcUt6hsyiDRcPidc55ZParFYDXi0nXOeLQ==",
|
"integrity": "sha512-OOUi5zjkDxYrKhTV3V7iKsoS37VUM7v40+HuwEmcrsf11Cdx9y3DIr2Px6liIcZFwt3XSRpQvFpL3WVy7ApkGw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@@ -6132,7 +5968,7 @@
|
|||||||
"picomatch": "^4.0.3",
|
"picomatch": "^4.0.3",
|
||||||
"postcss": "^8.5.6",
|
"postcss": "^8.5.6",
|
||||||
"rollup": "^4.43.0",
|
"rollup": "^4.43.0",
|
||||||
"tinyglobby": "^0.2.15"
|
"tinyglobby": "^0.2.14"
|
||||||
},
|
},
|
||||||
"bin": {
|
"bin": {
|
||||||
"vite": "bin/vite.js"
|
"vite": "bin/vite.js"
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "beszel",
|
"name": "beszel",
|
||||||
"private": true,
|
"private": true,
|
||||||
"version": "0.12.10",
|
"version": "0.12.7",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "vite --host",
|
"dev": "vite --host",
|
||||||
@@ -76,4 +76,4 @@
|
|||||||
"optionalDependencies": {
|
"optionalDependencies": {
|
||||||
"@esbuild/linux-arm64": "^0.21.5"
|
"@esbuild/linux-arm64": "^0.21.5"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,9 +1,5 @@
|
|||||||
import { t } from "@lingui/core/macro"
|
|
||||||
import { Trans } from "@lingui/react/macro"
|
import { Trans } from "@lingui/react/macro"
|
||||||
import { useStore } from "@nanostores/react"
|
import { t } from "@lingui/core/macro"
|
||||||
import { getPagePath } from "@nanostores/router"
|
|
||||||
import { ChevronDownIcon, ExternalLinkIcon, PlusIcon } from "lucide-react"
|
|
||||||
import { memo, useEffect, useRef, useState } from "react"
|
|
||||||
import { Button } from "@/components/ui/button"
|
import { Button } from "@/components/ui/button"
|
||||||
import {
|
import {
|
||||||
Dialog,
|
Dialog,
|
||||||
@@ -14,30 +10,34 @@ import {
|
|||||||
DialogTitle,
|
DialogTitle,
|
||||||
DialogTrigger,
|
DialogTrigger,
|
||||||
} from "@/components/ui/dialog"
|
} from "@/components/ui/dialog"
|
||||||
|
import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"
|
||||||
import { Input } from "@/components/ui/input"
|
import { Input } from "@/components/ui/input"
|
||||||
import { Label } from "@/components/ui/label"
|
import { Label } from "@/components/ui/label"
|
||||||
import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"
|
|
||||||
import { isReadOnlyUser, pb } from "@/lib/api"
|
|
||||||
import { SystemStatus } from "@/lib/enums"
|
|
||||||
import { $publicKey } from "@/lib/stores"
|
import { $publicKey } from "@/lib/stores"
|
||||||
import { cn, generateToken, tokenMap, useBrowserStorage } from "@/lib/utils"
|
import { cn, generateToken, tokenMap, useBrowserStorage } from "@/lib/utils"
|
||||||
import type { SystemRecord } from "@/types"
|
import { pb, isReadOnlyUser } from "@/lib/api"
|
||||||
|
import { useStore } from "@nanostores/react"
|
||||||
|
import { ChevronDownIcon, ExternalLinkIcon, PlusIcon } from "lucide-react"
|
||||||
|
import { memo, useEffect, useRef, useState } from "react"
|
||||||
|
import { $router, basePath, Link, navigate } from "./router"
|
||||||
|
import { SystemRecord } from "@/types"
|
||||||
|
import { SystemStatus } from "@/lib/enums"
|
||||||
|
import { AppleIcon, DockerIcon, TuxIcon, WindowsIcon } from "./ui/icons"
|
||||||
|
import { InputCopy } from "./ui/input-copy"
|
||||||
|
import { getPagePath } from "@nanostores/router"
|
||||||
import {
|
import {
|
||||||
copyDockerCompose,
|
copyDockerCompose,
|
||||||
copyDockerRun,
|
copyDockerRun,
|
||||||
copyLinuxCommand,
|
copyLinuxCommand,
|
||||||
copyWindowsCommand,
|
copyWindowsCommand,
|
||||||
type DropdownItem,
|
DropdownItem,
|
||||||
InstallDropdown,
|
InstallDropdown,
|
||||||
} from "./install-dropdowns"
|
} from "./install-dropdowns"
|
||||||
import { $router, basePath, Link, navigate } from "./router"
|
|
||||||
import { DropdownMenu, DropdownMenuTrigger } from "./ui/dropdown-menu"
|
import { DropdownMenu, DropdownMenuTrigger } from "./ui/dropdown-menu"
|
||||||
import { AppleIcon, DockerIcon, FreeBsdIcon, TuxIcon, WindowsIcon } from "./ui/icons"
|
|
||||||
import { InputCopy } from "./ui/input-copy"
|
|
||||||
|
|
||||||
export function AddSystemButton({ className }: { className?: string }) {
|
export function AddSystemButton({ className }: { className?: string }) {
|
||||||
const [open, setOpen] = useState(false)
|
const [open, setOpen] = useState(false)
|
||||||
const opened = useRef(false)
|
let opened = useRef(false)
|
||||||
if (open) {
|
if (open) {
|
||||||
opened.current = true
|
opened.current = true
|
||||||
}
|
}
|
||||||
@@ -253,12 +253,6 @@ export const SystemDialog = ({ setOpen, system }: { setOpen: (open: boolean) =>
|
|||||||
copyWindowsCommand(isUnixSocket ? hostValue : port.current?.value, publicKey, token),
|
copyWindowsCommand(isUnixSocket ? hostValue : port.current?.value, publicKey, token),
|
||||||
icons: [WindowsIcon],
|
icons: [WindowsIcon],
|
||||||
},
|
},
|
||||||
{
|
|
||||||
text: t({ message: "FreeBSD command", context: "Button to copy install command" }),
|
|
||||||
onClick: async () =>
|
|
||||||
copyLinuxCommand(isUnixSocket ? hostValue : port.current?.value, publicKey, token),
|
|
||||||
icons: [FreeBsdIcon],
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
text: t`Manual setup instructions`,
|
text: t`Manual setup instructions`,
|
||||||
url: "https://beszel.dev/guide/agent-installation#binary",
|
url: "https://beszel.dev/guide/agent-installation#binary",
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
import { t } from "@lingui/core/macro"
|
import { ColumnDef } from "@tanstack/react-table"
|
||||||
import { Trans } from "@lingui/react/macro"
|
import { AlertsHistoryRecord } from "@/types"
|
||||||
import type { ColumnDef } from "@tanstack/react-table"
|
|
||||||
import { Badge } from "@/components/ui/badge"
|
|
||||||
import { Button } from "@/components/ui/button"
|
import { Button } from "@/components/ui/button"
|
||||||
|
import { Badge } from "@/components/ui/badge"
|
||||||
|
import { formatShortDate, toFixedFloat, formatDuration, cn } from "@/lib/utils"
|
||||||
import { alertInfo } from "@/lib/alerts"
|
import { alertInfo } from "@/lib/alerts"
|
||||||
import { cn, formatDuration, formatShortDate, toFixedFloat } from "@/lib/utils"
|
import { Trans } from "@lingui/react/macro"
|
||||||
import type { AlertsHistoryRecord } from "@/types"
|
import { t } from "@lingui/core/macro"
|
||||||
|
|
||||||
export const alertsHistoryColumns: ColumnDef<AlertsHistoryRecord>[] = [
|
export const alertsHistoryColumns: ColumnDef<AlertsHistoryRecord>[] = [
|
||||||
{
|
{
|
||||||
@@ -38,7 +38,7 @@ export const alertsHistoryColumns: ColumnDef<AlertsHistoryRecord>[] = [
|
|||||||
</Button>
|
</Button>
|
||||||
),
|
),
|
||||||
cell: ({ getValue, row }) => {
|
cell: ({ getValue, row }) => {
|
||||||
const name = getValue() as string
|
let name = getValue() as string
|
||||||
const info = alertInfo[row.original.name]
|
const info = alertInfo[row.original.name]
|
||||||
const Icon = info?.icon
|
const Icon = info?.icon
|
||||||
|
|
||||||
|
|||||||
@@ -1,13 +1,13 @@
|
|||||||
import { t } from "@lingui/core/macro"
|
import { t } from "@lingui/core/macro"
|
||||||
import { useStore } from "@nanostores/react"
|
|
||||||
import { BellIcon } from "lucide-react"
|
|
||||||
import { memo, useMemo, useState } from "react"
|
import { memo, useMemo, useState } from "react"
|
||||||
import { Button } from "@/components/ui/button"
|
import { useStore } from "@nanostores/react"
|
||||||
import { Sheet, SheetContent, SheetTrigger } from "@/components/ui/sheet"
|
|
||||||
import { $alerts } from "@/lib/stores"
|
import { $alerts } from "@/lib/stores"
|
||||||
|
import { BellIcon } from "lucide-react"
|
||||||
import { cn } from "@/lib/utils"
|
import { cn } from "@/lib/utils"
|
||||||
import type { SystemRecord } from "@/types"
|
import { Button } from "@/components/ui/button"
|
||||||
|
import { SystemRecord } from "@/types"
|
||||||
import { AlertDialogContent } from "./alerts-sheet"
|
import { AlertDialogContent } from "./alerts-sheet"
|
||||||
|
import { Sheet, SheetContent, SheetTrigger } from "@/components/ui/sheet"
|
||||||
|
|
||||||
export default memo(function AlertsButton({ system }: { system: SystemRecord }) {
|
export default memo(function AlertsButton({ system }: { system: SystemRecord }) {
|
||||||
const [opened, setOpened] = useState(false)
|
const [opened, setOpened] = useState(false)
|
||||||
|
|||||||
@@ -1,20 +1,21 @@
|
|||||||
import { t } from "@lingui/core/macro"
|
import { t } from "@lingui/core/macro"
|
||||||
import { Plural, Trans } from "@lingui/react/macro"
|
import { Trans, Plural } from "@lingui/react/macro"
|
||||||
import { useStore } from "@nanostores/react"
|
|
||||||
import { getPagePath } from "@nanostores/router"
|
|
||||||
import { GlobeIcon, ServerIcon } from "lucide-react"
|
|
||||||
import { lazy, memo, Suspense, useMemo, useState } from "react"
|
|
||||||
import { $router, Link } from "@/components/router"
|
|
||||||
import { Checkbox } from "@/components/ui/checkbox"
|
|
||||||
import { DialogDescription, DialogHeader, DialogTitle } from "@/components/ui/dialog"
|
|
||||||
import { Switch } from "@/components/ui/switch"
|
|
||||||
import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"
|
|
||||||
import { toast } from "@/components/ui/use-toast"
|
|
||||||
import { alertInfo } from "@/lib/alerts"
|
|
||||||
import { pb } from "@/lib/api"
|
|
||||||
import { $alerts, $systems } from "@/lib/stores"
|
import { $alerts, $systems } from "@/lib/stores"
|
||||||
import { cn, debounce } from "@/lib/utils"
|
import { cn, debounce } from "@/lib/utils"
|
||||||
import type { AlertInfo, AlertRecord, SystemRecord } from "@/types"
|
import { alertInfo } from "@/lib/alerts"
|
||||||
|
import { Switch } from "@/components/ui/switch"
|
||||||
|
import { AlertInfo, AlertRecord, SystemRecord } from "@/types"
|
||||||
|
import { lazy, memo, Suspense, useMemo, useState } from "react"
|
||||||
|
import { toast } from "@/components/ui/use-toast"
|
||||||
|
import { useStore } from "@nanostores/react"
|
||||||
|
import { getPagePath } from "@nanostores/router"
|
||||||
|
import { Checkbox } from "@/components/ui/checkbox"
|
||||||
|
import { DialogTitle, DialogDescription } from "@/components/ui/dialog"
|
||||||
|
import { Tabs, TabsList, TabsTrigger, TabsContent } from "@/components/ui/tabs"
|
||||||
|
import { ServerIcon, GlobeIcon } from "lucide-react"
|
||||||
|
import { $router, Link } from "@/components/router"
|
||||||
|
import { DialogHeader } from "@/components/ui/dialog"
|
||||||
|
import { pb } from "@/lib/api"
|
||||||
|
|
||||||
const Slider = lazy(() => import("@/components/ui/slider"))
|
const Slider = lazy(() => import("@/components/ui/slider"))
|
||||||
|
|
||||||
@@ -171,7 +172,7 @@ export function AlertContent({
|
|||||||
|
|
||||||
const [checked, setChecked] = useState(global ? false : !!alert)
|
const [checked, setChecked] = useState(global ? false : !!alert)
|
||||||
const [min, setMin] = useState(alert?.min || 10)
|
const [min, setMin] = useState(alert?.min || 10)
|
||||||
const [value, setValue] = useState(alert?.value || (singleDescription ? 0 : (alertData.start ?? 80)))
|
const [value, setValue] = useState(alert?.value || (singleDescription ? 0 : alertData.start ?? 80))
|
||||||
|
|
||||||
const Icon = alertData.icon
|
const Icon = alertData.icon
|
||||||
|
|
||||||
|
|||||||
@@ -1,16 +1,9 @@
|
|||||||
import { useMemo } from "react"
|
|
||||||
import { Area, AreaChart, CartesianGrid, YAxis } from "recharts"
|
import { Area, AreaChart, CartesianGrid, YAxis } from "recharts"
|
||||||
import {
|
import { ChartContainer, ChartTooltip, ChartTooltipContent, xAxis } from "@/components/ui/chart"
|
||||||
ChartContainer,
|
import { cn, formatShortDate, chartMargin } from "@/lib/utils"
|
||||||
ChartLegend,
|
|
||||||
ChartLegendContent,
|
|
||||||
ChartTooltip,
|
|
||||||
ChartTooltipContent,
|
|
||||||
xAxis,
|
|
||||||
} from "@/components/ui/chart"
|
|
||||||
import { chartMargin, cn, formatShortDate } from "@/lib/utils"
|
|
||||||
import type { ChartData, SystemStatsRecord } from "@/types"
|
|
||||||
import { useYAxisWidth } from "./hooks"
|
import { useYAxisWidth } from "./hooks"
|
||||||
|
import { ChartData, SystemStatsRecord } from "@/types"
|
||||||
|
import { useMemo } from "react"
|
||||||
|
|
||||||
export type DataPoint = {
|
export type DataPoint = {
|
||||||
label: string
|
label: string
|
||||||
@@ -27,8 +20,6 @@ export default function AreaChartDefault({
|
|||||||
contentFormatter,
|
contentFormatter,
|
||||||
dataPoints,
|
dataPoints,
|
||||||
domain,
|
domain,
|
||||||
legend,
|
|
||||||
itemSorter,
|
|
||||||
}: // logRender = false,
|
}: // logRender = false,
|
||||||
{
|
{
|
||||||
chartData: ChartData
|
chartData: ChartData
|
||||||
@@ -38,13 +29,10 @@ export default function AreaChartDefault({
|
|||||||
contentFormatter: ({ value, payload }: { value: number; payload: SystemStatsRecord }) => string
|
contentFormatter: ({ value, payload }: { value: number; payload: SystemStatsRecord }) => string
|
||||||
dataPoints?: DataPoint[]
|
dataPoints?: DataPoint[]
|
||||||
domain?: [number, number]
|
domain?: [number, number]
|
||||||
legend?: boolean
|
|
||||||
itemSorter?: (a: any, b: any) => number
|
|
||||||
// logRender?: boolean
|
// logRender?: boolean
|
||||||
}) {
|
}) {
|
||||||
const { yAxisWidth, updateYAxisWidth } = useYAxisWidth()
|
const { yAxisWidth, updateYAxisWidth } = useYAxisWidth()
|
||||||
|
|
||||||
// biome-ignore lint/correctness/useExhaustiveDependencies: ignore
|
|
||||||
return useMemo(() => {
|
return useMemo(() => {
|
||||||
if (chartData.systemStats.length === 0) {
|
if (chartData.systemStats.length === 0) {
|
||||||
return null
|
return null
|
||||||
@@ -75,8 +63,6 @@ export default function AreaChartDefault({
|
|||||||
<ChartTooltip
|
<ChartTooltip
|
||||||
animationEasing="ease-out"
|
animationEasing="ease-out"
|
||||||
animationDuration={150}
|
animationDuration={150}
|
||||||
// @ts-expect-error
|
|
||||||
itemSorter={itemSorter}
|
|
||||||
content={
|
content={
|
||||||
<ChartTooltipContent
|
<ChartTooltipContent
|
||||||
labelFormatter={(_, data) => formatShortDate(data[0].payload.created)}
|
labelFormatter={(_, data) => formatShortDate(data[0].payload.created)}
|
||||||
@@ -84,14 +70,11 @@ export default function AreaChartDefault({
|
|||||||
/>
|
/>
|
||||||
}
|
}
|
||||||
/>
|
/>
|
||||||
{dataPoints?.map((dataPoint) => {
|
{dataPoints?.map((dataPoint, i) => {
|
||||||
let { color } = dataPoint
|
const color = `var(--chart-${dataPoint.color})`
|
||||||
if (typeof color === "number") {
|
|
||||||
color = `var(--chart-${color})`
|
|
||||||
}
|
|
||||||
return (
|
return (
|
||||||
<Area
|
<Area
|
||||||
key={dataPoint.label}
|
key={i}
|
||||||
dataKey={dataPoint.dataKey}
|
dataKey={dataPoint.dataKey}
|
||||||
name={dataPoint.label}
|
name={dataPoint.label}
|
||||||
type="monotoneX"
|
type="monotoneX"
|
||||||
@@ -102,7 +85,7 @@ export default function AreaChartDefault({
|
|||||||
/>
|
/>
|
||||||
)
|
)
|
||||||
})}
|
})}
|
||||||
{legend && <ChartLegend content={<ChartLegendContent />} />}
|
{/* <ChartLegend content={<ChartLegendContent />} /> */}
|
||||||
</AreaChart>
|
</AreaChart>
|
||||||
</ChartContainer>
|
</ChartContainer>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
import { useStore } from "@nanostores/react"
|
|
||||||
import { HistoryIcon } from "lucide-react"
|
|
||||||
import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select"
|
import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select"
|
||||||
import { $chartTime } from "@/lib/stores"
|
import { $chartTime } from "@/lib/stores"
|
||||||
import { chartTimeData, cn } from "@/lib/utils"
|
import { chartTimeData, cn } from "@/lib/utils"
|
||||||
import type { ChartTimes } from "@/types"
|
import { ChartTimes } from "@/types"
|
||||||
|
import { useStore } from "@nanostores/react"
|
||||||
|
import { HistoryIcon } from "lucide-react"
|
||||||
|
|
||||||
export default function ChartTimeSelect({ className }: { className?: string }) {
|
export default function ChartTimeSelect({ className }: { className?: string }) {
|
||||||
const chartTime = useStore($chartTime)
|
const chartTime = useStore($chartTime)
|
||||||
|
|||||||
@@ -1,13 +1,13 @@
|
|||||||
// import Spinner from '../spinner'
|
|
||||||
import { useStore } from "@nanostores/react"
|
|
||||||
import { memo, useMemo } from "react"
|
|
||||||
import { Area, AreaChart, CartesianGrid, YAxis } from "recharts"
|
import { Area, AreaChart, CartesianGrid, YAxis } from "recharts"
|
||||||
import { type ChartConfig, ChartContainer, ChartTooltip, ChartTooltipContent, xAxis } from "@/components/ui/chart"
|
import { type ChartConfig, ChartContainer, ChartTooltip, ChartTooltipContent, xAxis } from "@/components/ui/chart"
|
||||||
import { ChartType, Unit } from "@/lib/enums"
|
import { memo, useMemo } from "react"
|
||||||
|
import { cn, formatShortDate, chartMargin, toFixedFloat, formatBytes, decimalString } from "@/lib/utils"
|
||||||
|
// import Spinner from '../spinner'
|
||||||
|
import { useStore } from "@nanostores/react"
|
||||||
import { $containerFilter, $userSettings } from "@/lib/stores"
|
import { $containerFilter, $userSettings } from "@/lib/stores"
|
||||||
import { chartMargin, cn, decimalString, formatBytes, formatShortDate, toFixedFloat } from "@/lib/utils"
|
|
||||||
import type { ChartData } from "@/types"
|
import type { ChartData } from "@/types"
|
||||||
import { Separator } from "../ui/separator"
|
import { Separator } from "../ui/separator"
|
||||||
|
import { ChartType, Unit } from "@/lib/enums"
|
||||||
import { useYAxisWidth } from "./hooks"
|
import { useYAxisWidth } from "./hooks"
|
||||||
|
|
||||||
export default memo(function ContainerChart({
|
export default memo(function ContainerChart({
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
import { useLingui } from "@lingui/react/macro"
|
|
||||||
import { memo } from "react"
|
|
||||||
import { Area, AreaChart, CartesianGrid, YAxis } from "recharts"
|
import { Area, AreaChart, CartesianGrid, YAxis } from "recharts"
|
||||||
import { ChartContainer, ChartTooltip, ChartTooltipContent, xAxis } from "@/components/ui/chart"
|
import { ChartContainer, ChartTooltip, ChartTooltipContent, xAxis } from "@/components/ui/chart"
|
||||||
|
import { cn, formatShortDate, decimalString, chartMargin, formatBytes, toFixedFloat } from "@/lib/utils"
|
||||||
|
import { ChartData } from "@/types"
|
||||||
|
import { memo } from "react"
|
||||||
|
import { useLingui } from "@lingui/react/macro"
|
||||||
import { Unit } from "@/lib/enums"
|
import { Unit } from "@/lib/enums"
|
||||||
import { chartMargin, cn, decimalString, formatBytes, formatShortDate, toFixedFloat } from "@/lib/utils"
|
|
||||||
import type { ChartData } from "@/types"
|
|
||||||
import { useYAxisWidth } from "./hooks"
|
import { useYAxisWidth } from "./hooks"
|
||||||
|
|
||||||
export default memo(function DiskChart({
|
export default memo(function DiskChart({
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { memo, useMemo } from "react"
|
|
||||||
import { CartesianGrid, Line, LineChart, YAxis } from "recharts"
|
import { CartesianGrid, Line, LineChart, YAxis } from "recharts"
|
||||||
|
|
||||||
import {
|
import {
|
||||||
ChartContainer,
|
ChartContainer,
|
||||||
ChartLegend,
|
ChartLegend,
|
||||||
@@ -8,8 +8,9 @@ import {
|
|||||||
ChartTooltipContent,
|
ChartTooltipContent,
|
||||||
xAxis,
|
xAxis,
|
||||||
} from "@/components/ui/chart"
|
} from "@/components/ui/chart"
|
||||||
import { chartMargin, cn, decimalString, formatShortDate, toFixedFloat } from "@/lib/utils"
|
import { cn, formatShortDate, toFixedFloat, decimalString, chartMargin } from "@/lib/utils"
|
||||||
import type { ChartData } from "@/types"
|
import { ChartData } from "@/types"
|
||||||
|
import { memo, useMemo } from "react"
|
||||||
import { useYAxisWidth } from "./hooks"
|
import { useYAxisWidth } from "./hooks"
|
||||||
|
|
||||||
export default memo(function GpuPowerChart({ chartData }: { chartData: ChartData }) {
|
export default memo(function GpuPowerChart({ chartData }: { chartData: ChartData }) {
|
||||||
@@ -26,10 +27,10 @@ export default memo(function GpuPowerChart({ chartData }: { chartData: ChartData
|
|||||||
colors: Record<string, string>
|
colors: Record<string, string>
|
||||||
}
|
}
|
||||||
const powerSums = {} as Record<string, number>
|
const powerSums = {} as Record<string, number>
|
||||||
for (const data of chartData.systemStats) {
|
for (let data of chartData.systemStats) {
|
||||||
const newData = { created: data.created } as Record<string, number | string>
|
let newData = { created: data.created } as Record<string, number | string>
|
||||||
|
|
||||||
for (const gpu of Object.values(data.stats?.g ?? {})) {
|
for (let gpu of Object.values(data.stats?.g ?? {})) {
|
||||||
if (gpu.p) {
|
if (gpu.p) {
|
||||||
const name = gpu.n
|
const name = gpu.n
|
||||||
newData[name] = gpu.p
|
newData[name] = gpu.p
|
||||||
@@ -39,7 +40,7 @@ export default memo(function GpuPowerChart({ chartData }: { chartData: ChartData
|
|||||||
newChartData.data.push(newData)
|
newChartData.data.push(newData)
|
||||||
}
|
}
|
||||||
const keys = Object.keys(powerSums).sort((a, b) => powerSums[b] - powerSums[a])
|
const keys = Object.keys(powerSums).sort((a, b) => powerSums[b] - powerSums[a])
|
||||||
for (const key of keys) {
|
for (let key of keys) {
|
||||||
newChartData.colors[key] = `hsl(${((keys.indexOf(key) * 360) / keys.length) % 360}, 60%, 55%)`
|
newChartData.colors[key] = `hsl(${((keys.indexOf(key) * 360) / keys.length) % 360}, 60%, 55%)`
|
||||||
}
|
}
|
||||||
return newChartData
|
return newChartData
|
||||||
@@ -66,7 +67,7 @@ export default memo(function GpuPowerChart({ chartData }: { chartData: ChartData
|
|||||||
width={yAxisWidth}
|
width={yAxisWidth}
|
||||||
tickFormatter={(value) => {
|
tickFormatter={(value) => {
|
||||||
const val = toFixedFloat(value, 2)
|
const val = toFixedFloat(value, 2)
|
||||||
return updateYAxisWidth(`${val}W`)
|
return updateYAxisWidth(val + "W")
|
||||||
}}
|
}}
|
||||||
tickLine={false}
|
tickLine={false}
|
||||||
axisLine={false}
|
axisLine={false}
|
||||||
@@ -75,12 +76,12 @@ export default memo(function GpuPowerChart({ chartData }: { chartData: ChartData
|
|||||||
<ChartTooltip
|
<ChartTooltip
|
||||||
animationEasing="ease-out"
|
animationEasing="ease-out"
|
||||||
animationDuration={150}
|
animationDuration={150}
|
||||||
// @ts-expect-error
|
// @ts-ignore
|
||||||
itemSorter={(a, b) => b.value - a.value}
|
itemSorter={(a, b) => b.value - a.value}
|
||||||
content={
|
content={
|
||||||
<ChartTooltipContent
|
<ChartTooltipContent
|
||||||
labelFormatter={(_, data) => formatShortDate(data[0].payload.created)}
|
labelFormatter={(_, data) => formatShortDate(data[0].payload.created)}
|
||||||
contentFormatter={(item) => `${decimalString(item.value)}W`}
|
contentFormatter={(item) => decimalString(item.value) + "W"}
|
||||||
// indicator="line"
|
// indicator="line"
|
||||||
/>
|
/>
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { useMemo, useState } from "react"
|
import { useMemo, useState } from "react"
|
||||||
import type { ChartConfig } from "@/components/ui/chart"
|
import { ChartConfig } from "@/components/ui/chart"
|
||||||
import type { ChartData, SystemStats, SystemStatsRecord } from "@/types"
|
import { ChartData } from "@/types"
|
||||||
|
|
||||||
/** Chart configurations for CPU, memory, and network usage charts */
|
/** Chart configurations for CPU, memory, and network usage charts */
|
||||||
export interface ContainerChartConfigs {
|
export interface ContainerChartConfigs {
|
||||||
@@ -105,21 +105,3 @@ export function useYAxisWidth() {
|
|||||||
}
|
}
|
||||||
return { yAxisWidth, updateYAxisWidth }
|
return { yAxisWidth, updateYAxisWidth }
|
||||||
}
|
}
|
||||||
|
|
||||||
// Assures consistent colors for network interfaces
|
|
||||||
export function useNetworkInterfaces(interfaces: SystemStats["ni"]) {
|
|
||||||
const keys = Object.keys(interfaces ?? {})
|
|
||||||
const sortedKeys = keys.sort((a, b) => (interfaces?.[b]?.[3] ?? 0) - (interfaces?.[a]?.[3] ?? 0))
|
|
||||||
return {
|
|
||||||
length: sortedKeys.length,
|
|
||||||
data: (index = 3) => {
|
|
||||||
return sortedKeys.map((key) => ({
|
|
||||||
label: key,
|
|
||||||
dataKey: ({ stats }: SystemStatsRecord) => stats?.ni?.[key]?.[index],
|
|
||||||
color: `hsl(${220 + (((sortedKeys.indexOf(key) * 360) / sortedKeys.length) % 360)}, 70%, 50%)`,
|
|
||||||
|
|
||||||
opacity: 0.3,
|
|
||||||
}))
|
|
||||||
},
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,110 +0,0 @@
|
|||||||
import { useMemo } from "react"
|
|
||||||
import { CartesianGrid, Line, LineChart, YAxis } from "recharts"
|
|
||||||
import {
|
|
||||||
ChartContainer,
|
|
||||||
ChartLegend,
|
|
||||||
ChartLegendContent,
|
|
||||||
ChartTooltip,
|
|
||||||
ChartTooltipContent,
|
|
||||||
xAxis,
|
|
||||||
} from "@/components/ui/chart"
|
|
||||||
import { chartMargin, cn, formatShortDate } from "@/lib/utils"
|
|
||||||
import type { ChartData, SystemStatsRecord } from "@/types"
|
|
||||||
import { useYAxisWidth } from "./hooks"
|
|
||||||
|
|
||||||
export type DataPoint = {
|
|
||||||
label: string
|
|
||||||
dataKey: (data: SystemStatsRecord) => number | undefined
|
|
||||||
color: number | string
|
|
||||||
}
|
|
||||||
|
|
||||||
export default function LineChartDefault({
|
|
||||||
chartData,
|
|
||||||
max,
|
|
||||||
maxToggled,
|
|
||||||
tickFormatter,
|
|
||||||
contentFormatter,
|
|
||||||
dataPoints,
|
|
||||||
domain,
|
|
||||||
legend,
|
|
||||||
itemSorter,
|
|
||||||
}: // logRender = false,
|
|
||||||
{
|
|
||||||
chartData: ChartData
|
|
||||||
max?: number
|
|
||||||
maxToggled?: boolean
|
|
||||||
tickFormatter: (value: number, index: number) => string
|
|
||||||
contentFormatter: ({ value, payload }: { value: number; payload: SystemStatsRecord }) => string
|
|
||||||
dataPoints?: DataPoint[]
|
|
||||||
domain?: [number, number]
|
|
||||||
legend?: boolean
|
|
||||||
itemSorter?: (a: any, b: any) => number
|
|
||||||
// logRender?: boolean
|
|
||||||
}) {
|
|
||||||
const { yAxisWidth, updateYAxisWidth } = useYAxisWidth()
|
|
||||||
|
|
||||||
// biome-ignore lint/correctness/useExhaustiveDependencies: ignore
|
|
||||||
return useMemo(() => {
|
|
||||||
if (chartData.systemStats.length === 0) {
|
|
||||||
return null
|
|
||||||
}
|
|
||||||
// if (logRender) {
|
|
||||||
// console.log("Rendered at", new Date())
|
|
||||||
// }
|
|
||||||
return (
|
|
||||||
<div>
|
|
||||||
<ChartContainer
|
|
||||||
className={cn("h-full w-full absolute aspect-auto bg-card opacity-0 transition-opacity", {
|
|
||||||
"opacity-100": yAxisWidth,
|
|
||||||
})}
|
|
||||||
>
|
|
||||||
<LineChart accessibilityLayer data={chartData.systemStats} margin={chartMargin}>
|
|
||||||
<CartesianGrid vertical={false} />
|
|
||||||
<YAxis
|
|
||||||
direction="ltr"
|
|
||||||
orientation={chartData.orientation}
|
|
||||||
className="tracking-tighter"
|
|
||||||
width={yAxisWidth}
|
|
||||||
domain={domain ?? [0, max ?? "auto"]}
|
|
||||||
tickFormatter={(value, index) => updateYAxisWidth(tickFormatter(value, index))}
|
|
||||||
tickLine={false}
|
|
||||||
axisLine={false}
|
|
||||||
/>
|
|
||||||
{xAxis(chartData)}
|
|
||||||
<ChartTooltip
|
|
||||||
animationEasing="ease-out"
|
|
||||||
animationDuration={150}
|
|
||||||
// @ts-expect-error
|
|
||||||
itemSorter={itemSorter}
|
|
||||||
content={
|
|
||||||
<ChartTooltipContent
|
|
||||||
labelFormatter={(_, data) => formatShortDate(data[0].payload.created)}
|
|
||||||
contentFormatter={contentFormatter}
|
|
||||||
/>
|
|
||||||
}
|
|
||||||
/>
|
|
||||||
{dataPoints?.map((dataPoint) => {
|
|
||||||
let { color } = dataPoint
|
|
||||||
if (typeof color === "number") {
|
|
||||||
color = `var(--chart-${color})`
|
|
||||||
}
|
|
||||||
return (
|
|
||||||
<Line
|
|
||||||
key={dataPoint.label}
|
|
||||||
dataKey={dataPoint.dataKey}
|
|
||||||
name={dataPoint.label}
|
|
||||||
type="monotoneX"
|
|
||||||
dot={false}
|
|
||||||
strokeWidth={1.5}
|
|
||||||
stroke={color}
|
|
||||||
isAnimationActive={false}
|
|
||||||
/>
|
|
||||||
)
|
|
||||||
})}
|
|
||||||
{legend && <ChartLegend content={<ChartLegendContent />} />}
|
|
||||||
</LineChart>
|
|
||||||
</ChartContainer>
|
|
||||||
</div>
|
|
||||||
)
|
|
||||||
}, [chartData.systemStats.at(-1), yAxisWidth, maxToggled])
|
|
||||||
}
|
|
||||||
@@ -1,6 +1,5 @@
|
|||||||
import { t } from "@lingui/core/macro"
|
|
||||||
import { memo } from "react"
|
|
||||||
import { CartesianGrid, Line, LineChart, YAxis } from "recharts"
|
import { CartesianGrid, Line, LineChart, YAxis } from "recharts"
|
||||||
|
|
||||||
import {
|
import {
|
||||||
ChartContainer,
|
ChartContainer,
|
||||||
ChartLegend,
|
ChartLegend,
|
||||||
@@ -9,8 +8,10 @@ import {
|
|||||||
ChartTooltipContent,
|
ChartTooltipContent,
|
||||||
xAxis,
|
xAxis,
|
||||||
} from "@/components/ui/chart"
|
} from "@/components/ui/chart"
|
||||||
import { chartMargin, cn, decimalString, formatShortDate, toFixedFloat } from "@/lib/utils"
|
import { cn, formatShortDate, toFixedFloat, decimalString, chartMargin } from "@/lib/utils"
|
||||||
import type { ChartData, SystemStats } from "@/types"
|
import { ChartData, SystemStats } from "@/types"
|
||||||
|
import { memo } from "react"
|
||||||
|
import { t } from "@lingui/core/macro"
|
||||||
import { useYAxisWidth } from "./hooks"
|
import { useYAxisWidth } from "./hooks"
|
||||||
|
|
||||||
export default memo(function LoadAverageChart({ chartData }: { chartData: ChartData }) {
|
export default memo(function LoadAverageChart({ chartData }: { chartData: ChartData }) {
|
||||||
@@ -59,7 +60,7 @@ export default memo(function LoadAverageChart({ chartData }: { chartData: ChartD
|
|||||||
<ChartTooltip
|
<ChartTooltip
|
||||||
animationEasing="ease-out"
|
animationEasing="ease-out"
|
||||||
animationDuration={150}
|
animationDuration={150}
|
||||||
// @ts-expect-error
|
// @ts-ignore
|
||||||
// itemSorter={(a, b) => b.value - a.value}
|
// itemSorter={(a, b) => b.value - a.value}
|
||||||
content={
|
content={
|
||||||
<ChartTooltipContent
|
<ChartTooltipContent
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
import { useLingui } from "@lingui/react/macro"
|
|
||||||
import { memo } from "react"
|
|
||||||
import { Area, AreaChart, CartesianGrid, YAxis } from "recharts"
|
import { Area, AreaChart, CartesianGrid, YAxis } from "recharts"
|
||||||
import { ChartContainer, ChartTooltip, ChartTooltipContent, xAxis } from "@/components/ui/chart"
|
import { ChartContainer, ChartTooltip, ChartTooltipContent, xAxis } from "@/components/ui/chart"
|
||||||
|
import { cn, decimalString, formatShortDate, chartMargin, formatBytes, toFixedFloat } from "@/lib/utils"
|
||||||
|
import { memo } from "react"
|
||||||
|
import { ChartData } from "@/types"
|
||||||
|
import { useLingui } from "@lingui/react/macro"
|
||||||
import { Unit } from "@/lib/enums"
|
import { Unit } from "@/lib/enums"
|
||||||
import { chartMargin, cn, decimalString, formatBytes, formatShortDate, toFixedFloat } from "@/lib/utils"
|
|
||||||
import type { ChartData } from "@/types"
|
|
||||||
import { useYAxisWidth } from "./hooks"
|
import { useYAxisWidth } from "./hooks"
|
||||||
|
|
||||||
export default memo(function MemChart({ chartData, showMax }: { chartData: ChartData; showMax: boolean }) {
|
export default memo(function MemChart({ chartData, showMax }: { chartData: ChartData; showMax: boolean }) {
|
||||||
@@ -53,7 +53,7 @@ export default memo(function MemChart({ chartData, showMax }: { chartData: Chart
|
|||||||
animationDuration={150}
|
animationDuration={150}
|
||||||
content={
|
content={
|
||||||
<ChartTooltipContent
|
<ChartTooltipContent
|
||||||
// @ts-expect-error
|
// @ts-ignore
|
||||||
itemSorter={(a, b) => a.order - b.order}
|
itemSorter={(a, b) => a.order - b.order}
|
||||||
labelFormatter={(_, data) => formatShortDate(data[0].payload.created)}
|
labelFormatter={(_, data) => formatShortDate(data[0].payload.created)}
|
||||||
contentFormatter={({ value }) => {
|
contentFormatter={({ value }) => {
|
||||||
|
|||||||
@@ -1,11 +1,12 @@
|
|||||||
import { t } from "@lingui/core/macro"
|
import { t } from "@lingui/core/macro"
|
||||||
import { useStore } from "@nanostores/react"
|
|
||||||
import { memo } from "react"
|
|
||||||
import { Area, AreaChart, CartesianGrid, YAxis } from "recharts"
|
import { Area, AreaChart, CartesianGrid, YAxis } from "recharts"
|
||||||
import { ChartContainer, ChartTooltip, ChartTooltipContent, xAxis } from "@/components/ui/chart"
|
import { ChartContainer, ChartTooltip, ChartTooltipContent, xAxis } from "@/components/ui/chart"
|
||||||
|
import { cn, formatShortDate, decimalString, chartMargin, formatBytes, toFixedFloat } from "@/lib/utils"
|
||||||
|
import { ChartData } from "@/types"
|
||||||
|
import { memo } from "react"
|
||||||
import { $userSettings } from "@/lib/stores"
|
import { $userSettings } from "@/lib/stores"
|
||||||
import { chartMargin, cn, decimalString, formatBytes, formatShortDate, toFixedFloat } from "@/lib/utils"
|
import { useStore } from "@nanostores/react"
|
||||||
import type { ChartData } from "@/types"
|
|
||||||
import { useYAxisWidth } from "./hooks"
|
import { useYAxisWidth } from "./hooks"
|
||||||
|
|
||||||
export default memo(function SwapChart({ chartData }: { chartData: ChartData }) {
|
export default memo(function SwapChart({ chartData }: { chartData: ChartData }) {
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
import { useStore } from "@nanostores/react"
|
|
||||||
import { memo, useMemo } from "react"
|
|
||||||
import { CartesianGrid, Line, LineChart, YAxis } from "recharts"
|
import { CartesianGrid, Line, LineChart, YAxis } from "recharts"
|
||||||
|
|
||||||
import {
|
import {
|
||||||
ChartContainer,
|
ChartContainer,
|
||||||
ChartLegend,
|
ChartLegend,
|
||||||
@@ -9,9 +8,11 @@ import {
|
|||||||
ChartTooltipContent,
|
ChartTooltipContent,
|
||||||
xAxis,
|
xAxis,
|
||||||
} from "@/components/ui/chart"
|
} from "@/components/ui/chart"
|
||||||
|
import { cn, formatShortDate, toFixedFloat, chartMargin, formatTemperature, decimalString } from "@/lib/utils"
|
||||||
|
import { ChartData } from "@/types"
|
||||||
|
import { memo, useMemo } from "react"
|
||||||
import { $temperatureFilter, $userSettings } from "@/lib/stores"
|
import { $temperatureFilter, $userSettings } from "@/lib/stores"
|
||||||
import { chartMargin, cn, decimalString, formatShortDate, formatTemperature, toFixedFloat } from "@/lib/utils"
|
import { useStore } from "@nanostores/react"
|
||||||
import type { ChartData } from "@/types"
|
|
||||||
import { useYAxisWidth } from "./hooks"
|
import { useYAxisWidth } from "./hooks"
|
||||||
|
|
||||||
export default memo(function TemperatureChart({ chartData }: { chartData: ChartData }) {
|
export default memo(function TemperatureChart({ chartData }: { chartData: ChartData }) {
|
||||||
@@ -30,18 +31,18 @@ export default memo(function TemperatureChart({ chartData }: { chartData: ChartD
|
|||||||
colors: Record<string, string>
|
colors: Record<string, string>
|
||||||
}
|
}
|
||||||
const tempSums = {} as Record<string, number>
|
const tempSums = {} as Record<string, number>
|
||||||
for (const data of chartData.systemStats) {
|
for (let data of chartData.systemStats) {
|
||||||
const newData = { created: data.created } as Record<string, number | string>
|
let newData = { created: data.created } as Record<string, number | string>
|
||||||
const keys = Object.keys(data.stats?.t ?? {})
|
let keys = Object.keys(data.stats?.t ?? {})
|
||||||
for (let i = 0; i < keys.length; i++) {
|
for (let i = 0; i < keys.length; i++) {
|
||||||
const key = keys[i]
|
let key = keys[i]
|
||||||
newData[key] = data.stats.t![key]
|
newData[key] = data.stats.t![key]
|
||||||
tempSums[key] = (tempSums[key] ?? 0) + newData[key]
|
tempSums[key] = (tempSums[key] ?? 0) + newData[key]
|
||||||
}
|
}
|
||||||
newChartData.data.push(newData)
|
newChartData.data.push(newData)
|
||||||
}
|
}
|
||||||
const keys = Object.keys(tempSums).sort((a, b) => tempSums[b] - tempSums[a])
|
const keys = Object.keys(tempSums).sort((a, b) => tempSums[b] - tempSums[a])
|
||||||
for (const key of keys) {
|
for (let key of keys) {
|
||||||
newChartData.colors[key] = `hsl(${((keys.indexOf(key) * 360) / keys.length) % 360}, 60%, 55%)`
|
newChartData.colors[key] = `hsl(${((keys.indexOf(key) * 360) / keys.length) % 360}, 60%, 55%)`
|
||||||
}
|
}
|
||||||
return newChartData
|
return newChartData
|
||||||
@@ -77,7 +78,7 @@ export default memo(function TemperatureChart({ chartData }: { chartData: ChartD
|
|||||||
<ChartTooltip
|
<ChartTooltip
|
||||||
animationEasing="ease-out"
|
animationEasing="ease-out"
|
||||||
animationDuration={150}
|
animationDuration={150}
|
||||||
// @ts-expect-error
|
// @ts-ignore
|
||||||
itemSorter={(a, b) => b.value - a.value}
|
itemSorter={(a, b) => b.value - a.value}
|
||||||
content={
|
content={
|
||||||
<ChartTooltipContent
|
<ChartTooltipContent
|
||||||
@@ -92,7 +93,7 @@ export default memo(function TemperatureChart({ chartData }: { chartData: ChartD
|
|||||||
/>
|
/>
|
||||||
{colors.map((key) => {
|
{colors.map((key) => {
|
||||||
const filtered = filter && !key.toLowerCase().includes(filter.toLowerCase())
|
const filtered = filter && !key.toLowerCase().includes(filter.toLowerCase())
|
||||||
const strokeOpacity = filtered ? 0.1 : 1
|
let strokeOpacity = filtered ? 0.1 : 1
|
||||||
return (
|
return (
|
||||||
<Line
|
<Line
|
||||||
key={key}
|
key={key}
|
||||||
|
|||||||
@@ -1,7 +1,3 @@
|
|||||||
import { t } from "@lingui/core/macro"
|
|
||||||
import { Trans } from "@lingui/react/macro"
|
|
||||||
import { getPagePath } from "@nanostores/router"
|
|
||||||
import { DialogDescription } from "@radix-ui/react-dialog"
|
|
||||||
import {
|
import {
|
||||||
AlertOctagonIcon,
|
AlertOctagonIcon,
|
||||||
BookIcon,
|
BookIcon,
|
||||||
@@ -14,7 +10,7 @@ import {
|
|||||||
SettingsIcon,
|
SettingsIcon,
|
||||||
UsersIcon,
|
UsersIcon,
|
||||||
} from "lucide-react"
|
} from "lucide-react"
|
||||||
import { memo, useEffect, useMemo } from "react"
|
|
||||||
import {
|
import {
|
||||||
CommandDialog,
|
CommandDialog,
|
||||||
CommandEmpty,
|
CommandEmpty,
|
||||||
@@ -25,10 +21,15 @@ import {
|
|||||||
CommandSeparator,
|
CommandSeparator,
|
||||||
CommandShortcut,
|
CommandShortcut,
|
||||||
} from "@/components/ui/command"
|
} from "@/components/ui/command"
|
||||||
import { isAdmin } from "@/lib/api"
|
import { memo, useEffect, useMemo } from "react"
|
||||||
import { $systems } from "@/lib/stores"
|
import { $systems } from "@/lib/stores"
|
||||||
import { getHostDisplayValue, listen } from "@/lib/utils"
|
import { getHostDisplayValue, listen } from "@/lib/utils"
|
||||||
import { $router, basePath, navigate, prependBasePath } from "./router"
|
import { $router, basePath, navigate, prependBasePath } from "./router"
|
||||||
|
import { Trans } from "@lingui/react/macro"
|
||||||
|
import { t } from "@lingui/core/macro"
|
||||||
|
import { getPagePath } from "@nanostores/router"
|
||||||
|
import { DialogDescription } from "@radix-ui/react-dialog"
|
||||||
|
import { isAdmin } from "@/lib/api"
|
||||||
|
|
||||||
export default memo(function CommandPalette({ open, setOpen }: { open: boolean; setOpen: (open: boolean) => void }) {
|
export default memo(function CommandPalette({ open, setOpen }: { open: boolean; setOpen: (open: boolean) => void }) {
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
import { Trans } from "@lingui/react/macro"
|
import { Trans } from "@lingui/react/macro";
|
||||||
import { useEffect, useMemo, useRef } from "react"
|
import { useEffect, useMemo, useRef } from "react"
|
||||||
import { $copyContent } from "@/lib/stores"
|
|
||||||
import { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle } from "./ui/dialog"
|
import { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle } from "./ui/dialog"
|
||||||
import { Textarea } from "./ui/textarea"
|
import { Textarea } from "./ui/textarea"
|
||||||
|
import { $copyContent } from "@/lib/stores"
|
||||||
|
|
||||||
export default function CopyToClipboard({ content }: { content: string }) {
|
export default function CopyToClipboard({ content }: { content: string }) {
|
||||||
return (
|
return (
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import { i18n } from "@lingui/core"
|
|
||||||
import { memo } from "react"
|
import { memo } from "react"
|
||||||
import { copyToClipboard, getHubURL } from "@/lib/utils"
|
|
||||||
import { DropdownMenuContent, DropdownMenuItem } from "./ui/dropdown-menu"
|
import { DropdownMenuContent, DropdownMenuItem } from "./ui/dropdown-menu"
|
||||||
|
import { copyToClipboard, getHubURL } from "@/lib/utils"
|
||||||
|
import { i18n } from "@lingui/core"
|
||||||
|
|
||||||
// const isbeta = beszel.hub_version.includes("beta")
|
// const isbeta = beszel.hub_version.includes("beta")
|
||||||
// const imagetag = isbeta ? ":edge" : ""
|
// const imagetag = isbeta ? ":edge" : ""
|
||||||
|
|||||||
@@ -1,10 +1,11 @@
|
|||||||
import { useLingui } from "@lingui/react/macro"
|
|
||||||
import { LanguagesIcon } from "lucide-react"
|
import { LanguagesIcon } from "lucide-react"
|
||||||
|
|
||||||
import { Button } from "@/components/ui/button"
|
import { Button } from "@/components/ui/button"
|
||||||
import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger } from "@/components/ui/dropdown-menu"
|
import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger } from "@/components/ui/dropdown-menu"
|
||||||
import { dynamicActivate } from "@/lib/i18n"
|
|
||||||
import languages from "@/lib/languages"
|
import languages from "@/lib/languages"
|
||||||
import { cn } from "@/lib/utils"
|
import { cn } from "@/lib/utils"
|
||||||
|
import { useLingui } from "@lingui/react/macro"
|
||||||
|
import { dynamicActivate } from "@/lib/i18n"
|
||||||
|
|
||||||
export function LangToggle() {
|
export function LangToggle() {
|
||||||
const { i18n } = useLingui()
|
const { i18n } = useLingui()
|
||||||
|
|||||||
@@ -1,19 +1,19 @@
|
|||||||
import { t } from "@lingui/core/macro"
|
import { t } from "@lingui/core/macro"
|
||||||
import { Trans } from "@lingui/react/macro"
|
import { Trans } from "@lingui/react/macro"
|
||||||
import { getPagePath } from "@nanostores/router"
|
import { cn } from "@/lib/utils"
|
||||||
import { KeyIcon, LoaderCircle, LockIcon, LogInIcon, MailIcon } from "lucide-react"
|
|
||||||
import type { AuthMethodsList, AuthProviderInfo, OAuth2AuthConfig } from "pocketbase"
|
|
||||||
import { useCallback, useEffect, useState } from "react"
|
|
||||||
import * as v from "valibot"
|
|
||||||
import { buttonVariants } from "@/components/ui/button"
|
import { buttonVariants } from "@/components/ui/button"
|
||||||
import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogTrigger } from "@/components/ui/dialog"
|
|
||||||
import { Input } from "@/components/ui/input"
|
import { Input } from "@/components/ui/input"
|
||||||
import { Label } from "@/components/ui/label"
|
import { Label } from "@/components/ui/label"
|
||||||
import { pb } from "@/lib/api"
|
import { KeyIcon, LoaderCircle, LockIcon, LogInIcon, MailIcon } from "lucide-react"
|
||||||
import { $authenticated } from "@/lib/stores"
|
import { $authenticated } from "@/lib/stores"
|
||||||
import { cn } from "@/lib/utils"
|
import * as v from "valibot"
|
||||||
import { $router, Link, prependBasePath } from "../router"
|
|
||||||
import { toast } from "../ui/use-toast"
|
import { toast } from "../ui/use-toast"
|
||||||
|
import { Dialog, DialogContent, DialogTrigger, DialogHeader, DialogTitle } from "@/components/ui/dialog"
|
||||||
|
import { useCallback, useEffect, useState } from "react"
|
||||||
|
import { AuthMethodsList, AuthProviderInfo, OAuth2AuthConfig } from "pocketbase"
|
||||||
|
import { $router, Link, prependBasePath } from "../router"
|
||||||
|
import { getPagePath } from "@nanostores/router"
|
||||||
|
import { pb } from "@/lib/api"
|
||||||
import { OtpInputForm } from "./otp-forms"
|
import { OtpInputForm } from "./otp-forms"
|
||||||
|
|
||||||
const honeypot = v.literal("")
|
const honeypot = v.literal("")
|
||||||
@@ -83,9 +83,9 @@ export function UserAuthForm({
|
|||||||
const result = v.safeParse(Schema, data)
|
const result = v.safeParse(Schema, data)
|
||||||
if (!result.success) {
|
if (!result.success) {
|
||||||
console.log(result)
|
console.log(result)
|
||||||
const errors = {}
|
let errors = {}
|
||||||
for (const issue of result.issues) {
|
for (const issue of result.issues) {
|
||||||
// @ts-expect-error
|
// @ts-ignore
|
||||||
errors[issue.path[0].key] = issue.message
|
errors[issue.path[0].key] = issue.message
|
||||||
}
|
}
|
||||||
setErrors(errors)
|
setErrors(errors)
|
||||||
@@ -96,7 +96,7 @@ export function UserAuthForm({
|
|||||||
if (isFirstRun) {
|
if (isFirstRun) {
|
||||||
// check that passwords match
|
// check that passwords match
|
||||||
if (password !== passwordConfirm) {
|
if (password !== passwordConfirm) {
|
||||||
const msg = "Passwords do not match"
|
let msg = "Passwords do not match"
|
||||||
setErrors({ passwordConfirm: msg })
|
setErrors({ passwordConfirm: msg })
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,14 +1,15 @@
|
|||||||
import { t } from "@lingui/core/macro"
|
|
||||||
import { Trans } from "@lingui/react/macro"
|
import { Trans } from "@lingui/react/macro"
|
||||||
|
import { t } from "@lingui/core/macro"
|
||||||
import { LoaderCircle, MailIcon, SendHorizonalIcon } from "lucide-react"
|
import { LoaderCircle, MailIcon, SendHorizonalIcon } from "lucide-react"
|
||||||
import { useCallback, useState } from "react"
|
|
||||||
import { pb } from "@/lib/api"
|
|
||||||
import { cn } from "@/lib/utils"
|
|
||||||
import { buttonVariants } from "../ui/button"
|
|
||||||
import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogTrigger } from "../ui/dialog"
|
|
||||||
import { Input } from "../ui/input"
|
import { Input } from "../ui/input"
|
||||||
import { Label } from "../ui/label"
|
import { Label } from "../ui/label"
|
||||||
|
import { useCallback, useState } from "react"
|
||||||
import { toast } from "../ui/use-toast"
|
import { toast } from "../ui/use-toast"
|
||||||
|
import { buttonVariants } from "../ui/button"
|
||||||
|
import { cn } from "@/lib/utils"
|
||||||
|
import { Dialog, DialogHeader } from "../ui/dialog"
|
||||||
|
import { DialogContent, DialogTrigger, DialogTitle } from "../ui/dialog"
|
||||||
|
import { pb } from "@/lib/api"
|
||||||
|
|
||||||
const showLoginFaliedToast = () => {
|
const showLoginFaliedToast = () => {
|
||||||
toast({
|
toast({
|
||||||
|
|||||||
@@ -1,14 +1,14 @@
|
|||||||
import { t } from "@lingui/core/macro"
|
import { t } from "@lingui/core/macro"
|
||||||
import { useStore } from "@nanostores/react"
|
|
||||||
import type { AuthMethodsList } from "pocketbase"
|
|
||||||
import { useEffect, useMemo, useState } from "react"
|
|
||||||
import { UserAuthForm } from "@/components/login/auth-form"
|
import { UserAuthForm } from "@/components/login/auth-form"
|
||||||
import { pb } from "@/lib/api"
|
|
||||||
import { Logo } from "../logo"
|
import { Logo } from "../logo"
|
||||||
import { ModeToggle } from "../mode-toggle"
|
import { useEffect, useMemo, useState } from "react"
|
||||||
import { $router } from "../router"
|
import { useStore } from "@nanostores/react"
|
||||||
import { useTheme } from "../theme-provider"
|
|
||||||
import ForgotPassword from "./forgot-pass-form"
|
import ForgotPassword from "./forgot-pass-form"
|
||||||
|
import { $router } from "../router"
|
||||||
|
import { AuthMethodsList } from "pocketbase"
|
||||||
|
import { useTheme } from "../theme-provider"
|
||||||
|
import { pb } from "@/lib/api"
|
||||||
|
import { ModeToggle } from "../mode-toggle"
|
||||||
import { OtpRequestForm } from "./otp-forms"
|
import { OtpRequestForm } from "./otp-forms"
|
||||||
|
|
||||||
export default function () {
|
export default function () {
|
||||||
@@ -53,7 +53,7 @@ export default function () {
|
|||||||
<div className="min-h-svh grid items-center py-12">
|
<div className="min-h-svh grid items-center py-12">
|
||||||
<div
|
<div
|
||||||
className="grid gap-5 w-full px-4 mx-auto"
|
className="grid gap-5 w-full px-4 mx-auto"
|
||||||
// @ts-expect-error
|
// @ts-ignore
|
||||||
style={{ maxWidth: "21.5em", "--border": theme == "light" ? "hsl(30, 8%, 70%)" : "hsl(220, 3%, 25%)" }}
|
style={{ maxWidth: "21.5em", "--border": theme == "light" ? "hsl(30, 8%, 70%)" : "hsl(220, 3%, 25%)" }}
|
||||||
>
|
>
|
||||||
<div className="absolute top-3 right-3">
|
<div className="absolute top-3 right-3">
|
||||||
|
|||||||
@@ -1,15 +1,15 @@
|
|||||||
import { Trans } from "@lingui/react/macro"
|
|
||||||
import { LoaderCircle, MailIcon, SendHorizonalIcon } from "lucide-react"
|
|
||||||
import { useCallback, useState } from "react"
|
import { useCallback, useState } from "react"
|
||||||
import { InputOTP, InputOTPGroup, InputOTPSlot } from "@/components/ui/otp"
|
|
||||||
import { pb } from "@/lib/api"
|
import { pb } from "@/lib/api"
|
||||||
import { $authenticated } from "@/lib/stores"
|
import { $authenticated } from "@/lib/stores"
|
||||||
|
import { InputOTP, InputOTPGroup, InputOTPSlot } from "@/components/ui/otp"
|
||||||
|
import { Trans } from "@lingui/react/macro"
|
||||||
|
import { showLoginFaliedToast } from "./auth-form"
|
||||||
import { cn } from "@/lib/utils"
|
import { cn } from "@/lib/utils"
|
||||||
import { $router } from "../router"
|
import { MailIcon, LoaderCircle, SendHorizonalIcon } from "lucide-react"
|
||||||
|
import { Label } from "../ui/label"
|
||||||
import { buttonVariants } from "../ui/button"
|
import { buttonVariants } from "../ui/button"
|
||||||
import { Input } from "../ui/input"
|
import { Input } from "../ui/input"
|
||||||
import { Label } from "../ui/label"
|
import { $router } from "../router"
|
||||||
import { showLoginFaliedToast } from "./auth-form"
|
|
||||||
|
|
||||||
export function OtpInputForm({ otpId, mfaId }: { otpId: string; mfaId: string }) {
|
export function OtpInputForm({ otpId, mfaId }: { otpId: string; mfaId: string }) {
|
||||||
const [value, setValue] = useState("")
|
const [value, setValue] = useState("")
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
import { t } from "@lingui/core/macro"
|
import { t } from "@lingui/core/macro"
|
||||||
import { MoonStarIcon, SunIcon } from "lucide-react"
|
import { MoonStarIcon, SunIcon } from "lucide-react"
|
||||||
import { useTheme } from "@/components/theme-provider"
|
|
||||||
import { Button } from "@/components/ui/button"
|
import { Button } from "@/components/ui/button"
|
||||||
|
import { useTheme } from "@/components/theme-provider"
|
||||||
|
|
||||||
export function ModeToggle() {
|
export function ModeToggle() {
|
||||||
const { theme, setTheme } = useTheme()
|
const { theme, setTheme } = useTheme()
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
import { Trans } from "@lingui/react/macro"
|
import { Trans } from "@lingui/react/macro"
|
||||||
import { getPagePath } from "@nanostores/router"
|
import { useState, lazy, Suspense } from "react"
|
||||||
|
import { Button, buttonVariants } from "@/components/ui/button"
|
||||||
import {
|
import {
|
||||||
DatabaseBackupIcon,
|
DatabaseBackupIcon,
|
||||||
LogOutIcon,
|
LogOutIcon,
|
||||||
@@ -10,24 +11,23 @@ import {
|
|||||||
UserIcon,
|
UserIcon,
|
||||||
UsersIcon,
|
UsersIcon,
|
||||||
} from "lucide-react"
|
} from "lucide-react"
|
||||||
import { lazy, Suspense, useState } from "react"
|
import { $router, basePath, Link, prependBasePath } from "./router"
|
||||||
import { Button, buttonVariants } from "@/components/ui/button"
|
import { LangToggle } from "./lang-toggle"
|
||||||
|
import { ModeToggle } from "./mode-toggle"
|
||||||
|
import { Logo } from "./logo"
|
||||||
|
import { cn, runOnce } from "@/lib/utils"
|
||||||
|
import { isReadOnlyUser, isAdmin, logOut, pb } from "@/lib/api"
|
||||||
import {
|
import {
|
||||||
DropdownMenu,
|
DropdownMenu,
|
||||||
|
DropdownMenuTrigger,
|
||||||
DropdownMenuContent,
|
DropdownMenuContent,
|
||||||
DropdownMenuGroup,
|
|
||||||
DropdownMenuItem,
|
|
||||||
DropdownMenuLabel,
|
DropdownMenuLabel,
|
||||||
DropdownMenuSeparator,
|
DropdownMenuSeparator,
|
||||||
DropdownMenuTrigger,
|
DropdownMenuGroup,
|
||||||
|
DropdownMenuItem,
|
||||||
} from "@/components/ui/dropdown-menu"
|
} from "@/components/ui/dropdown-menu"
|
||||||
import { isAdmin, isReadOnlyUser, logOut, pb } from "@/lib/api"
|
|
||||||
import { cn, runOnce } from "@/lib/utils"
|
|
||||||
import { AddSystemButton } from "./add-system"
|
import { AddSystemButton } from "./add-system"
|
||||||
import { LangToggle } from "./lang-toggle"
|
import { getPagePath } from "@nanostores/router"
|
||||||
import { Logo } from "./logo"
|
|
||||||
import { ModeToggle } from "./mode-toggle"
|
|
||||||
import { $router, basePath, Link, prependBasePath } from "./router"
|
|
||||||
|
|
||||||
const CommandPalette = lazy(() => import("./command-palette"))
|
const CommandPalette = lazy(() => import("./command-palette"))
|
||||||
|
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ export const prependBasePath = (path: string) => (basePath + path).replaceAll("/
|
|||||||
|
|
||||||
// prepend base path to routes
|
// prepend base path to routes
|
||||||
for (const route in routes) {
|
for (const route in routes) {
|
||||||
// @ts-expect-error need as const above to get nanostores to parse types properly
|
// @ts-ignore need as const above to get nanostores to parse types properly
|
||||||
routes[route] = prependBasePath(routes[route])
|
routes[route] = prependBasePath(routes[route])
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,6 @@ import { Trans, useLingui } from "@lingui/react/macro"
|
|||||||
import { redirectPage } from "@nanostores/router"
|
import { redirectPage } from "@nanostores/router"
|
||||||
import {
|
import {
|
||||||
CopyIcon,
|
CopyIcon,
|
||||||
ExternalLinkIcon,
|
|
||||||
FingerprintIcon,
|
FingerprintIcon,
|
||||||
KeyIcon,
|
KeyIcon,
|
||||||
MoreHorizontalIcon,
|
MoreHorizontalIcon,
|
||||||
@@ -29,7 +28,7 @@ import {
|
|||||||
DropdownMenuSeparator,
|
DropdownMenuSeparator,
|
||||||
DropdownMenuTrigger,
|
DropdownMenuTrigger,
|
||||||
} from "@/components/ui/dropdown-menu"
|
} from "@/components/ui/dropdown-menu"
|
||||||
import { AppleIcon, DockerIcon, FreeBsdIcon, TuxIcon, WindowsIcon } from "@/components/ui/icons"
|
import { AppleIcon, DockerIcon, TuxIcon, WindowsIcon } from "@/components/ui/icons"
|
||||||
import { Separator } from "@/components/ui/separator"
|
import { Separator } from "@/components/ui/separator"
|
||||||
import { Switch } from "@/components/ui/switch"
|
import { Switch } from "@/components/ui/switch"
|
||||||
import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from "@/components/ui/table"
|
import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from "@/components/ui/table"
|
||||||
@@ -151,7 +150,6 @@ const SectionUniversalToken = memo(() => {
|
|||||||
setIsLoading(false)
|
setIsLoading(false)
|
||||||
}
|
}
|
||||||
|
|
||||||
// biome-ignore lint/correctness/useExhaustiveDependencies: only on mount
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
updateToken()
|
updateToken()
|
||||||
}, [])
|
}, [])
|
||||||
@@ -223,16 +221,6 @@ const ActionsButtonUniversalToken = memo(({ token, checked }: { token: string; c
|
|||||||
onClick: () => copyWindowsCommand(port, publicKey, token),
|
onClick: () => copyWindowsCommand(port, publicKey, token),
|
||||||
icons: [WindowsIcon],
|
icons: [WindowsIcon],
|
||||||
},
|
},
|
||||||
{
|
|
||||||
text: t({ message: "FreeBSD command", context: "Button to copy install command" }),
|
|
||||||
onClick: () => copyLinuxCommand(port, publicKey, token),
|
|
||||||
icons: [FreeBsdIcon],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
text: t`Manual setup instructions`,
|
|
||||||
url: "https://beszel.dev/guide/agent-installation#binary",
|
|
||||||
icons: [ExternalLinkIcon],
|
|
||||||
},
|
|
||||||
]
|
]
|
||||||
return (
|
return (
|
||||||
<div className="flex items-center gap-2">
|
<div className="flex items-center gap-2">
|
||||||
@@ -303,8 +291,8 @@ const SectionTable = memo(({ fingerprints = [] }: { fingerprints: FingerprintRec
|
|||||||
</tr>
|
</tr>
|
||||||
</TableHeader>
|
</TableHeader>
|
||||||
<TableBody className="whitespace-pre">
|
<TableBody className="whitespace-pre">
|
||||||
{fingerprints.map((fingerprint) => (
|
{fingerprints.map((fingerprint, i) => (
|
||||||
<TableRow key={fingerprint.id}>
|
<TableRow key={i}>
|
||||||
<TableCell className="font-medium ps-5 py-2 max-w-60 truncate">
|
<TableCell className="font-medium ps-5 py-2 max-w-60 truncate">
|
||||||
{fingerprint.expand.system.name}
|
{fingerprint.expand.system.name}
|
||||||
</TableCell>
|
</TableCell>
|
||||||
@@ -329,10 +317,10 @@ async function updateFingerprint(fingerprint: FingerprintRecord, rotateToken = f
|
|||||||
fingerprint: "",
|
fingerprint: "",
|
||||||
token: rotateToken ? generateToken() : fingerprint.token,
|
token: rotateToken ? generateToken() : fingerprint.token,
|
||||||
})
|
})
|
||||||
} catch (error: unknown) {
|
} catch (error: any) {
|
||||||
toast({
|
toast({
|
||||||
title: t`Error`,
|
title: t`Error`,
|
||||||
description: (error as Error).message,
|
description: error.message,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,15 +3,7 @@ import { Plural, Trans, useLingui } from "@lingui/react/macro"
|
|||||||
import { useStore } from "@nanostores/react"
|
import { useStore } from "@nanostores/react"
|
||||||
import { getPagePath } from "@nanostores/router"
|
import { getPagePath } from "@nanostores/router"
|
||||||
import { timeTicks } from "d3-time"
|
import { timeTicks } from "d3-time"
|
||||||
import {
|
import { ClockArrowUp, CpuIcon, GlobeIcon, LayoutGridIcon, MonitorIcon, XIcon } from "lucide-react"
|
||||||
ChevronRightSquareIcon,
|
|
||||||
ClockArrowUp,
|
|
||||||
CpuIcon,
|
|
||||||
GlobeIcon,
|
|
||||||
LayoutGridIcon,
|
|
||||||
MonitorIcon,
|
|
||||||
XIcon,
|
|
||||||
} from "lucide-react"
|
|
||||||
import { subscribeKeys } from "nanostores"
|
import { subscribeKeys } from "nanostores"
|
||||||
import React, { type JSX, memo, useCallback, useEffect, useMemo, useRef, useState } from "react"
|
import React, { type JSX, memo, useCallback, useEffect, useMemo, useRef, useState } from "react"
|
||||||
import AreaChartDefault from "@/components/charts/area-chart"
|
import AreaChartDefault from "@/components/charts/area-chart"
|
||||||
@@ -24,7 +16,7 @@ import MemChart from "@/components/charts/mem-chart"
|
|||||||
import SwapChart from "@/components/charts/swap-chart"
|
import SwapChart from "@/components/charts/swap-chart"
|
||||||
import TemperatureChart from "@/components/charts/temperature-chart"
|
import TemperatureChart from "@/components/charts/temperature-chart"
|
||||||
import { getPbTimestamp, pb } from "@/lib/api"
|
import { getPbTimestamp, pb } from "@/lib/api"
|
||||||
import { ChartType, ConnectionType, Os, SystemStatus, Unit } from "@/lib/enums"
|
import { ChartType, Os, SystemStatus, Unit } from "@/lib/enums"
|
||||||
import { batteryStateTranslations } from "@/lib/i18n"
|
import { batteryStateTranslations } from "@/lib/i18n"
|
||||||
import {
|
import {
|
||||||
$allSystemsByName,
|
$allSystemsByName,
|
||||||
@@ -55,13 +47,11 @@ import { $router, navigate } from "../router"
|
|||||||
import Spinner from "../spinner"
|
import Spinner from "../spinner"
|
||||||
import { Button } from "../ui/button"
|
import { Button } from "../ui/button"
|
||||||
import { Card, CardDescription, CardHeader, CardTitle } from "../ui/card"
|
import { Card, CardDescription, CardHeader, CardTitle } from "../ui/card"
|
||||||
import { AppleIcon, ChartAverage, ChartMax, FreeBsdIcon, Rows, TuxIcon, WebSocketIcon, WindowsIcon } from "../ui/icons"
|
import { AppleIcon, ChartAverage, ChartMax, FreeBsdIcon, Rows, TuxIcon, WindowsIcon } from "../ui/icons"
|
||||||
import { Input } from "../ui/input"
|
import { Input } from "../ui/input"
|
||||||
import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "../ui/select"
|
import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "../ui/select"
|
||||||
import { Separator } from "../ui/separator"
|
import { Separator } from "../ui/separator"
|
||||||
import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "../ui/tooltip"
|
import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "../ui/tooltip"
|
||||||
import NetworkSheet from "./system/network-sheet"
|
|
||||||
import LineChartDefault from "../charts/line-chart"
|
|
||||||
|
|
||||||
type ChartTimeData = {
|
type ChartTimeData = {
|
||||||
time: number
|
time: number
|
||||||
@@ -139,7 +129,7 @@ async function getStats<T extends SystemStatsRecord | ContainerStatsRecord>(
|
|||||||
|
|
||||||
function dockerOrPodman(str: string, system: SystemRecord) {
|
function dockerOrPodman(str: string, system: SystemRecord) {
|
||||||
if (system.info.p) {
|
if (system.info.p) {
|
||||||
return str.replace("docker", "podman").replace("Docker", "Podman")
|
str = str.replace("docker", "podman").replace("Docker", "Podman")
|
||||||
}
|
}
|
||||||
return str
|
return str
|
||||||
}
|
}
|
||||||
@@ -399,7 +389,6 @@ export default memo(function SystemDetail({ name }: { name: string }) {
|
|||||||
const lastGpuVals = Object.values(systemStats.at(-1)?.stats.g ?? {})
|
const lastGpuVals = Object.values(systemStats.at(-1)?.stats.g ?? {})
|
||||||
const hasGpuData = lastGpuVals.length > 0
|
const hasGpuData = lastGpuVals.length > 0
|
||||||
const hasGpuPowerData = lastGpuVals.some((gpu) => gpu.p !== undefined)
|
const hasGpuPowerData = lastGpuVals.some((gpu) => gpu.p !== undefined)
|
||||||
const hasGpuEnginesData = lastGpuVals.some((gpu) => gpu.e !== undefined)
|
|
||||||
|
|
||||||
let translatedStatus: string = system.status
|
let translatedStatus: string = system.status
|
||||||
if (system.status === SystemStatus.Up) {
|
if (system.status === SystemStatus.Up) {
|
||||||
@@ -417,45 +406,25 @@ export default memo(function SystemDetail({ name }: { name: string }) {
|
|||||||
<div>
|
<div>
|
||||||
<h1 className="text-[1.6rem] font-semibold mb-1.5">{system.name}</h1>
|
<h1 className="text-[1.6rem] font-semibold mb-1.5">{system.name}</h1>
|
||||||
<div className="flex flex-wrap items-center gap-3 gap-y-2 text-sm opacity-90">
|
<div className="flex flex-wrap items-center gap-3 gap-y-2 text-sm opacity-90">
|
||||||
<TooltipProvider>
|
<div className="capitalize flex gap-2 items-center">
|
||||||
<Tooltip>
|
<span className={cn("relative flex h-3 w-3")}>
|
||||||
<TooltipTrigger asChild>
|
{system.status === SystemStatus.Up && (
|
||||||
<div className="capitalize flex gap-2 items-center">
|
<span
|
||||||
<span className={cn("relative flex h-3 w-3")}>
|
className="animate-ping absolute inline-flex h-full w-full rounded-full bg-green-400 opacity-75"
|
||||||
{system.status === SystemStatus.Up && (
|
style={{ animationDuration: "1.5s" }}
|
||||||
<span
|
></span>
|
||||||
className="animate-ping absolute inline-flex h-full w-full rounded-full bg-green-400 opacity-75"
|
|
||||||
style={{ animationDuration: "1.5s" }}
|
|
||||||
></span>
|
|
||||||
)}
|
|
||||||
<span
|
|
||||||
className={cn("relative inline-flex rounded-full h-3 w-3", {
|
|
||||||
"bg-green-500": system.status === SystemStatus.Up,
|
|
||||||
"bg-red-500": system.status === SystemStatus.Down,
|
|
||||||
"bg-primary/40": system.status === SystemStatus.Paused,
|
|
||||||
"bg-yellow-500": system.status === SystemStatus.Pending,
|
|
||||||
})}
|
|
||||||
></span>
|
|
||||||
</span>
|
|
||||||
{translatedStatus}
|
|
||||||
</div>
|
|
||||||
</TooltipTrigger>
|
|
||||||
{system.info.ct && (
|
|
||||||
<TooltipContent>
|
|
||||||
{system.info.ct === ConnectionType.WebSocket ? (
|
|
||||||
<div className="flex gap-1 items-center">
|
|
||||||
<WebSocketIcon className="size-4" /> WebSocket
|
|
||||||
</div>
|
|
||||||
) : (
|
|
||||||
<div className="flex gap-1 items-center">
|
|
||||||
<ChevronRightSquareIcon className="size-4" strokeWidth={2} /> SSH
|
|
||||||
</div>
|
|
||||||
)}
|
|
||||||
</TooltipContent>
|
|
||||||
)}
|
)}
|
||||||
</Tooltip>
|
<span
|
||||||
</TooltipProvider>
|
className={cn("relative inline-flex rounded-full h-3 w-3", {
|
||||||
|
"bg-green-500": system.status === SystemStatus.Up,
|
||||||
|
"bg-red-500": system.status === SystemStatus.Down,
|
||||||
|
"bg-primary/40": system.status === SystemStatus.Paused,
|
||||||
|
"bg-yellow-500": system.status === SystemStatus.Pending,
|
||||||
|
})}
|
||||||
|
></span>
|
||||||
|
</span>
|
||||||
|
{translatedStatus}
|
||||||
|
</div>
|
||||||
{systemInfo.map(({ value, label, Icon, hide }) => {
|
{systemInfo.map(({ value, label, Icon, hide }) => {
|
||||||
if (hide || !value) {
|
if (hide || !value) {
|
||||||
return null
|
return null
|
||||||
@@ -595,13 +564,13 @@ export default memo(function SystemDetail({ name }: { name: string }) {
|
|||||||
dataPoints={[
|
dataPoints={[
|
||||||
{
|
{
|
||||||
label: t({ message: "Write", comment: "Disk write" }),
|
label: t({ message: "Write", comment: "Disk write" }),
|
||||||
dataKey: ({ stats }: SystemStatsRecord) => (showMax ? stats?.dwm : stats?.dw),
|
dataKey: ({ stats }) => (showMax ? stats?.dwm : stats?.dw),
|
||||||
color: 3,
|
color: 3,
|
||||||
opacity: 0.3,
|
opacity: 0.3,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: t({ message: "Read", comment: "Disk read" }),
|
label: t({ message: "Read", comment: "Disk read" }),
|
||||||
dataKey: ({ stats }: SystemStatsRecord) => (showMax ? stats?.drm : stats?.dr),
|
dataKey: ({ stats }) => (showMax ? stats?.drm : stats?.dr),
|
||||||
color: 1,
|
color: 1,
|
||||||
opacity: 0.3,
|
opacity: 0.3,
|
||||||
},
|
},
|
||||||
@@ -621,12 +590,7 @@ export default memo(function SystemDetail({ name }: { name: string }) {
|
|||||||
empty={dataEmpty}
|
empty={dataEmpty}
|
||||||
grid={grid}
|
grid={grid}
|
||||||
title={t`Bandwidth`}
|
title={t`Bandwidth`}
|
||||||
cornerEl={
|
cornerEl={maxValSelect}
|
||||||
<div className="flex gap-2">
|
|
||||||
{maxValSelect}
|
|
||||||
<NetworkSheet chartData={chartData} dataEmpty={dataEmpty} grid={grid} maxValues={maxValues} />
|
|
||||||
</div>
|
|
||||||
}
|
|
||||||
description={t`Network traffic of public interfaces`}
|
description={t`Network traffic of public interfaces`}
|
||||||
>
|
>
|
||||||
<AreaChartDefault
|
<AreaChartDefault
|
||||||
@@ -636,7 +600,7 @@ export default memo(function SystemDetail({ name }: { name: string }) {
|
|||||||
{
|
{
|
||||||
label: t`Sent`,
|
label: t`Sent`,
|
||||||
// use bytes if available, otherwise multiply old MB (can remove in future)
|
// use bytes if available, otherwise multiply old MB (can remove in future)
|
||||||
dataKey(data: SystemStatsRecord) {
|
dataKey(data) {
|
||||||
if (showMax) {
|
if (showMax) {
|
||||||
return data?.stats?.bm?.[0] ?? (data?.stats?.nsm ?? 0) * 1024 * 1024
|
return data?.stats?.bm?.[0] ?? (data?.stats?.nsm ?? 0) * 1024 * 1024
|
||||||
}
|
}
|
||||||
@@ -647,7 +611,7 @@ export default memo(function SystemDetail({ name }: { name: string }) {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: t`Received`,
|
label: t`Received`,
|
||||||
dataKey(data: SystemStatsRecord) {
|
dataKey(data) {
|
||||||
if (showMax) {
|
if (showMax) {
|
||||||
return data?.stats?.bm?.[1] ?? (data?.stats?.nrm ?? 0) * 1024 * 1024
|
return data?.stats?.bm?.[1] ?? (data?.stats?.nrm ?? 0) * 1024 * 1024
|
||||||
}
|
}
|
||||||
@@ -656,9 +620,7 @@ export default memo(function SystemDetail({ name }: { name: string }) {
|
|||||||
color: 2,
|
color: 2,
|
||||||
opacity: 0.2,
|
opacity: 0.2,
|
||||||
},
|
},
|
||||||
]
|
]}
|
||||||
// try to place the lesser number in front for better visibility
|
|
||||||
.sort(() => (systemStats.at(-1)?.stats.b?.[1] ?? 0) - (systemStats.at(-1)?.stats.b?.[0] ?? 0))}
|
|
||||||
tickFormatter={(val) => {
|
tickFormatter={(val) => {
|
||||||
const { value, unit } = formatBytes(val, true, userSettings.unitNet, false)
|
const { value, unit } = formatBytes(val, true, userSettings.unitNet, false)
|
||||||
return `${toFixedFloat(value, value >= 10 ? 0 : 1)} ${unit}`
|
return `${toFixedFloat(value, value >= 10 ? 0 : 1)} ${unit}`
|
||||||
@@ -712,7 +674,6 @@ export default memo(function SystemDetail({ name }: { name: string }) {
|
|||||||
grid={grid}
|
grid={grid}
|
||||||
title={t`Load Average`}
|
title={t`Load Average`}
|
||||||
description={t`System load averages over time`}
|
description={t`System load averages over time`}
|
||||||
legend={true}
|
|
||||||
>
|
>
|
||||||
<LoadAverageChart chartData={chartData} />
|
<LoadAverageChart chartData={chartData} />
|
||||||
</ChartCard>
|
</ChartCard>
|
||||||
@@ -726,7 +687,6 @@ export default memo(function SystemDetail({ name }: { name: string }) {
|
|||||||
title={t`Temperature`}
|
title={t`Temperature`}
|
||||||
description={t`Temperatures of system sensors`}
|
description={t`Temperatures of system sensors`}
|
||||||
cornerEl={<FilterBar store={$temperatureFilter} />}
|
cornerEl={<FilterBar store={$temperatureFilter} />}
|
||||||
legend={Object.keys(systemStats.at(-1)?.stats.t ?? {}).length < 12}
|
|
||||||
>
|
>
|
||||||
<TemperatureChart chartData={chartData} />
|
<TemperatureChart chartData={chartData} />
|
||||||
</ChartCard>
|
</ChartCard>
|
||||||
@@ -760,6 +720,7 @@ export default memo(function SystemDetail({ name }: { name: string }) {
|
|||||||
/>
|
/>
|
||||||
</ChartCard>
|
</ChartCard>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
{/* GPU power draw chart */}
|
{/* GPU power draw chart */}
|
||||||
{hasGpuPowerData && (
|
{hasGpuPowerData && (
|
||||||
<ChartCard
|
<ChartCard
|
||||||
@@ -773,26 +734,14 @@ export default memo(function SystemDetail({ name }: { name: string }) {
|
|||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{/* Non-power GPU charts */}
|
{/* GPU charts */}
|
||||||
{hasGpuData && (
|
{hasGpuData && (
|
||||||
<div className="grid xl:grid-cols-2 gap-4">
|
<div className="grid xl:grid-cols-2 gap-4">
|
||||||
{hasGpuEnginesData && (
|
|
||||||
<ChartCard
|
|
||||||
legend={true}
|
|
||||||
empty={dataEmpty}
|
|
||||||
grid={grid}
|
|
||||||
title={t`GPU Engines`}
|
|
||||||
description={t`Average utilization of GPU engines`}
|
|
||||||
>
|
|
||||||
<GpuEnginesChart chartData={chartData} />
|
|
||||||
</ChartCard>
|
|
||||||
)}
|
|
||||||
{Object.keys(systemStats.at(-1)?.stats.g ?? {}).map((id) => {
|
{Object.keys(systemStats.at(-1)?.stats.g ?? {}).map((id) => {
|
||||||
const gpu = systemStats.at(-1)?.stats.g?.[id] as GPUData
|
const gpu = systemStats.at(-1)?.stats.g?.[id] as GPUData
|
||||||
return (
|
return (
|
||||||
<div key={id} className="contents">
|
<div key={id} className="contents">
|
||||||
<ChartCard
|
<ChartCard
|
||||||
className="!col-span-1"
|
|
||||||
empty={dataEmpty}
|
empty={dataEmpty}
|
||||||
grid={grid}
|
grid={grid}
|
||||||
title={`${gpu.n} ${t`Usage`}`}
|
title={`${gpu.n} ${t`Usage`}`}
|
||||||
@@ -812,36 +761,33 @@ export default memo(function SystemDetail({ name }: { name: string }) {
|
|||||||
contentFormatter={({ value }) => `${decimalString(value)}%`}
|
contentFormatter={({ value }) => `${decimalString(value)}%`}
|
||||||
/>
|
/>
|
||||||
</ChartCard>
|
</ChartCard>
|
||||||
|
<ChartCard
|
||||||
{(gpu.mt ?? 0) > 0 && (
|
empty={dataEmpty}
|
||||||
<ChartCard
|
grid={grid}
|
||||||
empty={dataEmpty}
|
title={`${gpu.n} VRAM`}
|
||||||
grid={grid}
|
description={t`Precise utilization at the recorded time`}
|
||||||
title={`${gpu.n} VRAM`}
|
>
|
||||||
description={t`Precise utilization at the recorded time`}
|
<AreaChartDefault
|
||||||
>
|
chartData={chartData}
|
||||||
<AreaChartDefault
|
dataPoints={[
|
||||||
chartData={chartData}
|
{
|
||||||
dataPoints={[
|
label: t`Usage`,
|
||||||
{
|
dataKey: ({ stats }) => stats?.g?.[id]?.mu ?? 0,
|
||||||
label: t`Usage`,
|
color: 2,
|
||||||
dataKey: ({ stats }) => stats?.g?.[id]?.mu ?? 0,
|
opacity: 0.25,
|
||||||
color: 2,
|
},
|
||||||
opacity: 0.25,
|
]}
|
||||||
},
|
max={gpu.mt}
|
||||||
]}
|
tickFormatter={(val) => {
|
||||||
max={gpu.mt}
|
const { value, unit } = formatBytes(val, false, Unit.Bytes, true)
|
||||||
tickFormatter={(val) => {
|
return `${toFixedFloat(value, value >= 10 ? 0 : 1)} ${unit}`
|
||||||
const { value, unit } = formatBytes(val, false, Unit.Bytes, true)
|
}}
|
||||||
return `${toFixedFloat(value, value >= 10 ? 0 : 1)} ${unit}`
|
contentFormatter={({ value }) => {
|
||||||
}}
|
const { value: convertedValue, unit } = formatBytes(value, false, Unit.Bytes, true)
|
||||||
contentFormatter={({ value }) => {
|
return `${decimalString(convertedValue)} ${unit}`
|
||||||
const { value: convertedValue, unit } = formatBytes(value, false, Unit.Bytes, true)
|
}}
|
||||||
return `${decimalString(convertedValue)} ${unit}`
|
/>
|
||||||
}}
|
</ChartCard>
|
||||||
/>
|
|
||||||
</ChartCard>
|
|
||||||
)}
|
|
||||||
</div>
|
</div>
|
||||||
)
|
)
|
||||||
})}
|
})}
|
||||||
@@ -913,28 +859,6 @@ export default memo(function SystemDetail({ name }: { name: string }) {
|
|||||||
)
|
)
|
||||||
})
|
})
|
||||||
|
|
||||||
function GpuEnginesChart({ chartData }: { chartData: ChartData }) {
|
|
||||||
const dataPoints = []
|
|
||||||
const engines = Object.keys(chartData.systemStats?.at(-1)?.stats.g?.[0]?.e ?? {}).sort()
|
|
||||||
for (const engine of engines) {
|
|
||||||
dataPoints.push({
|
|
||||||
label: engine,
|
|
||||||
dataKey: ({ stats }: SystemStatsRecord) => stats?.g?.[0]?.e?.[engine] ?? 0,
|
|
||||||
color: `hsl(${140 + (((engines.indexOf(engine) * 360) / engines.length) % 360)}, 65%, 52%)`,
|
|
||||||
opacity: 0.35,
|
|
||||||
})
|
|
||||||
}
|
|
||||||
return (
|
|
||||||
<LineChartDefault
|
|
||||||
legend={true}
|
|
||||||
chartData={chartData}
|
|
||||||
dataPoints={dataPoints}
|
|
||||||
tickFormatter={(val) => `${toFixedFloat(val, 2)}%`}
|
|
||||||
contentFormatter={({ value }) => `${decimalString(value)}%`}
|
|
||||||
/>
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
function FilterBar({ store = $containerFilter }: { store?: typeof $containerFilter }) {
|
function FilterBar({ store = $containerFilter }: { store?: typeof $containerFilter }) {
|
||||||
const containerFilter = useStore(store)
|
const containerFilter = useStore(store)
|
||||||
const { t } = useLingui()
|
const { t } = useLingui()
|
||||||
@@ -955,7 +879,7 @@ function FilterBar({ store = $containerFilter }: { store?: typeof $containerFilt
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<Input placeholder={t`Filter...`} className="ps-4 pe-8 w-full sm:w-44" onChange={handleChange} ref={inputRef} />
|
<Input placeholder={t`Filter...`} className="ps-4 pe-8" onChange={handleChange} ref={inputRef} />
|
||||||
{containerFilter && (
|
{containerFilter && (
|
||||||
<Button
|
<Button
|
||||||
type="button"
|
type="button"
|
||||||
@@ -981,7 +905,7 @@ const SelectAvgMax = memo(({ max }: { max: boolean }) => {
|
|||||||
const Icon = max ? ChartMax : ChartAverage
|
const Icon = max ? ChartMax : ChartAverage
|
||||||
return (
|
return (
|
||||||
<Select value={max ? "max" : "avg"} onValueChange={(e) => $maxValues.set(e === "max")}>
|
<Select value={max ? "max" : "avg"} onValueChange={(e) => $maxValues.set(e === "max")}>
|
||||||
<SelectTrigger className="relative ps-10 pe-5 w-full sm:w-44">
|
<SelectTrigger className="relative ps-10 pe-5">
|
||||||
<Icon className="h-4 w-4 absolute start-4 top-1/2 -translate-y-1/2 opacity-85" />
|
<Icon className="h-4 w-4 absolute start-4 top-1/2 -translate-y-1/2 opacity-85" />
|
||||||
<SelectValue />
|
<SelectValue />
|
||||||
</SelectTrigger>
|
</SelectTrigger>
|
||||||
@@ -997,15 +921,13 @@ const SelectAvgMax = memo(({ max }: { max: boolean }) => {
|
|||||||
)
|
)
|
||||||
})
|
})
|
||||||
|
|
||||||
export function ChartCard({
|
function ChartCard({
|
||||||
title,
|
title,
|
||||||
description,
|
description,
|
||||||
children,
|
children,
|
||||||
grid,
|
grid,
|
||||||
empty,
|
empty,
|
||||||
cornerEl,
|
cornerEl,
|
||||||
legend,
|
|
||||||
className,
|
|
||||||
}: {
|
}: {
|
||||||
title: string
|
title: string
|
||||||
description: string
|
description: string
|
||||||
@@ -1013,22 +935,17 @@ export function ChartCard({
|
|||||||
grid?: boolean
|
grid?: boolean
|
||||||
empty?: boolean
|
empty?: boolean
|
||||||
cornerEl?: JSX.Element | null
|
cornerEl?: JSX.Element | null
|
||||||
legend?: boolean
|
|
||||||
className?: string
|
|
||||||
}) {
|
}) {
|
||||||
const { isIntersecting, ref } = useIntersectionObserver()
|
const { isIntersecting, ref } = useIntersectionObserver()
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Card
|
<Card className={cn("pb-2 sm:pb-4 odd:last-of-type:col-span-full", { "col-span-full": !grid })} ref={ref}>
|
||||||
className={cn("pb-2 sm:pb-4 odd:last-of-type:col-span-full min-h-full", { "col-span-full": !grid }, className)}
|
|
||||||
ref={ref}
|
|
||||||
>
|
|
||||||
<CardHeader className="pb-5 pt-4 gap-1 relative max-sm:py-3 max-sm:px-4">
|
<CardHeader className="pb-5 pt-4 gap-1 relative max-sm:py-3 max-sm:px-4">
|
||||||
<CardTitle className="text-xl sm:text-2xl">{title}</CardTitle>
|
<CardTitle className="text-xl sm:text-2xl">{title}</CardTitle>
|
||||||
<CardDescription>{description}</CardDescription>
|
<CardDescription>{description}</CardDescription>
|
||||||
{cornerEl && <div className="py-1 grid sm:justify-end sm:absolute sm:top-3.5 sm:end-3.5">{cornerEl}</div>}
|
{cornerEl && <div className="relative py-1 block sm:w-44 sm:absolute sm:top-3.5 sm:end-3.5">{cornerEl}</div>}
|
||||||
</CardHeader>
|
</CardHeader>
|
||||||
<div className={cn("ps-0 w-[calc(100%-1.5em)] relative group", legend ? "h-54 md:h-56" : "h-48 md:h-52")}>
|
<div className="ps-0 w-[calc(100%-1.5em)] h-48 md:h-52 relative group">
|
||||||
{
|
{
|
||||||
<Spinner
|
<Spinner
|
||||||
msg={empty ? t`Waiting for enough records to display` : undefined}
|
msg={empty ? t`Waiting for enough records to display` : undefined}
|
||||||
|
|||||||
@@ -1,154 +0,0 @@
|
|||||||
import { t } from "@lingui/core/macro"
|
|
||||||
import { useStore } from "@nanostores/react"
|
|
||||||
import { MoreHorizontalIcon } from "lucide-react"
|
|
||||||
import { memo, useRef, useState } from "react"
|
|
||||||
import AreaChartDefault from "@/components/charts/area-chart"
|
|
||||||
import ChartTimeSelect from "@/components/charts/chart-time-select"
|
|
||||||
import { useNetworkInterfaces } from "@/components/charts/hooks"
|
|
||||||
import { Button } from "@/components/ui/button"
|
|
||||||
import { Sheet, SheetContent, SheetTrigger } from "@/components/ui/sheet"
|
|
||||||
import { $userSettings } from "@/lib/stores"
|
|
||||||
import { decimalString, formatBytes, toFixedFloat } from "@/lib/utils"
|
|
||||||
import type { ChartData } from "@/types"
|
|
||||||
import { ChartCard } from "../system"
|
|
||||||
|
|
||||||
export default memo(function NetworkSheet({
|
|
||||||
chartData,
|
|
||||||
dataEmpty,
|
|
||||||
grid,
|
|
||||||
maxValues,
|
|
||||||
}: {
|
|
||||||
chartData: ChartData
|
|
||||||
dataEmpty: boolean
|
|
||||||
grid: boolean
|
|
||||||
maxValues: boolean
|
|
||||||
}) {
|
|
||||||
const [netInterfacesOpen, setNetInterfacesOpen] = useState(false)
|
|
||||||
const userSettings = useStore($userSettings)
|
|
||||||
const netInterfaces = useNetworkInterfaces(chartData.systemStats.at(-1)?.stats?.ni ?? {})
|
|
||||||
const showNetLegend = netInterfaces.length > 0
|
|
||||||
const hasOpened = useRef(false)
|
|
||||||
|
|
||||||
if (netInterfacesOpen && !hasOpened.current) {
|
|
||||||
hasOpened.current = true
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!netInterfaces.length) {
|
|
||||||
return null
|
|
||||||
}
|
|
||||||
|
|
||||||
return (
|
|
||||||
<Sheet open={netInterfacesOpen} onOpenChange={setNetInterfacesOpen}>
|
|
||||||
<SheetTrigger asChild>
|
|
||||||
<Button
|
|
||||||
aria-label={t`View more`}
|
|
||||||
variant="outline"
|
|
||||||
size="icon"
|
|
||||||
className="shrink-0 max-sm:absolute max-sm:top-3 max-sm:end-3"
|
|
||||||
>
|
|
||||||
<MoreHorizontalIcon />
|
|
||||||
</Button>
|
|
||||||
</SheetTrigger>
|
|
||||||
{hasOpened.current && (
|
|
||||||
<SheetContent className="overflow-auto w-200 !max-w-full p-4 sm:p-6">
|
|
||||||
<ChartTimeSelect className="w-[calc(100%-2em)]" />
|
|
||||||
<ChartCard
|
|
||||||
empty={dataEmpty}
|
|
||||||
grid={grid}
|
|
||||||
title={t`Download`}
|
|
||||||
description={t`Network traffic of public interfaces`}
|
|
||||||
legend={showNetLegend}
|
|
||||||
className="min-h-auto"
|
|
||||||
>
|
|
||||||
<AreaChartDefault
|
|
||||||
chartData={chartData}
|
|
||||||
maxToggled={maxValues}
|
|
||||||
itemSorter={(a, b) => b.value - a.value}
|
|
||||||
dataPoints={netInterfaces.data(1)}
|
|
||||||
legend={showNetLegend}
|
|
||||||
tickFormatter={(val) => {
|
|
||||||
const { value, unit } = formatBytes(val, true, userSettings.unitNet, false)
|
|
||||||
return `${toFixedFloat(value, value >= 10 ? 0 : 1)} ${unit}`
|
|
||||||
}}
|
|
||||||
contentFormatter={({ value }) => {
|
|
||||||
const { value: convertedValue, unit } = formatBytes(value, true, userSettings.unitNet, false)
|
|
||||||
return `${decimalString(convertedValue, convertedValue >= 100 ? 1 : 2)} ${unit}`
|
|
||||||
}}
|
|
||||||
/>
|
|
||||||
</ChartCard>
|
|
||||||
|
|
||||||
<ChartCard
|
|
||||||
empty={dataEmpty}
|
|
||||||
grid={grid}
|
|
||||||
title={t`Upload`}
|
|
||||||
description={t`Network traffic of public interfaces`}
|
|
||||||
legend={showNetLegend}
|
|
||||||
className="min-h-auto"
|
|
||||||
>
|
|
||||||
<AreaChartDefault
|
|
||||||
chartData={chartData}
|
|
||||||
maxToggled={maxValues}
|
|
||||||
itemSorter={(a, b) => b.value - a.value}
|
|
||||||
legend={showNetLegend}
|
|
||||||
dataPoints={netInterfaces.data(0)}
|
|
||||||
tickFormatter={(val) => {
|
|
||||||
const { value, unit } = formatBytes(val, true, userSettings.unitNet, false)
|
|
||||||
return `${toFixedFloat(value, value >= 10 ? 0 : 1)} ${unit}`
|
|
||||||
}}
|
|
||||||
contentFormatter={({ value }) => {
|
|
||||||
const { value: convertedValue, unit } = formatBytes(value, true, userSettings.unitNet, false)
|
|
||||||
return `${decimalString(convertedValue, convertedValue >= 100 ? 1 : 2)} ${unit}`
|
|
||||||
}}
|
|
||||||
/>
|
|
||||||
</ChartCard>
|
|
||||||
|
|
||||||
<ChartCard
|
|
||||||
empty={dataEmpty}
|
|
||||||
grid={grid}
|
|
||||||
title={t`Cumulative Download`}
|
|
||||||
description={t`Total data received for each interface`}
|
|
||||||
legend={showNetLegend}
|
|
||||||
className="min-h-auto"
|
|
||||||
>
|
|
||||||
<AreaChartDefault
|
|
||||||
chartData={chartData}
|
|
||||||
legend={showNetLegend}
|
|
||||||
dataPoints={netInterfaces.data(3)}
|
|
||||||
tickFormatter={(val) => {
|
|
||||||
const { value, unit } = formatBytes(val, false, userSettings.unitNet, false)
|
|
||||||
return `${toFixedFloat(value, value >= 10 ? 0 : 1)} ${unit}`
|
|
||||||
}}
|
|
||||||
contentFormatter={({ value }) => {
|
|
||||||
const { value: convertedValue, unit } = formatBytes(value, false, userSettings.unitNet, false)
|
|
||||||
return `${decimalString(convertedValue, convertedValue >= 100 ? 1 : 2)} ${unit}`
|
|
||||||
}}
|
|
||||||
/>
|
|
||||||
</ChartCard>
|
|
||||||
|
|
||||||
<ChartCard
|
|
||||||
empty={dataEmpty}
|
|
||||||
grid={grid}
|
|
||||||
title={t`Cumulative Upload`}
|
|
||||||
description={t`Total data sent for each interface`}
|
|
||||||
legend={showNetLegend}
|
|
||||||
className="min-h-auto"
|
|
||||||
>
|
|
||||||
<AreaChartDefault
|
|
||||||
chartData={chartData}
|
|
||||||
legend={showNetLegend}
|
|
||||||
dataPoints={netInterfaces.data(2)}
|
|
||||||
tickFormatter={(val) => {
|
|
||||||
const { value, unit } = formatBytes(val, false, userSettings.unitNet, false)
|
|
||||||
return `${toFixedFloat(value, value >= 10 ? 0 : 1)} ${unit}`
|
|
||||||
}}
|
|
||||||
contentFormatter={({ value }) => {
|
|
||||||
const { value: convertedValue, unit } = formatBytes(value, false, userSettings.unitNet, false)
|
|
||||||
return `${decimalString(convertedValue, convertedValue >= 100 ? 1 : 2)} ${unit}`
|
|
||||||
}}
|
|
||||||
/>
|
|
||||||
</ChartCard>
|
|
||||||
</SheetContent>
|
|
||||||
)}
|
|
||||||
</Sheet>
|
|
||||||
)
|
|
||||||
})
|
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
import { LoaderCircleIcon } from "lucide-react"
|
|
||||||
import { cn } from "@/lib/utils"
|
import { cn } from "@/lib/utils"
|
||||||
|
import { LoaderCircleIcon } from "lucide-react"
|
||||||
|
|
||||||
export default function ({ msg, className }: { msg?: string; className?: string }) {
|
export default function ({ msg, className }: { msg?: string; className?: string }) {
|
||||||
return (
|
return (
|
||||||
|
|||||||
@@ -1,12 +1,8 @@
|
|||||||
import { t } from "@lingui/core/macro"
|
import { SystemRecord } from "@/types"
|
||||||
import { Trans, useLingui } from "@lingui/react/macro"
|
import { CellContext, ColumnDef, HeaderContext } from "@tanstack/react-table"
|
||||||
import { useStore } from "@nanostores/react"
|
import { ClassValue } from "clsx"
|
||||||
import { getPagePath } from "@nanostores/router"
|
|
||||||
import type { CellContext, ColumnDef, HeaderContext } from "@tanstack/react-table"
|
|
||||||
import type { ClassValue } from "clsx"
|
|
||||||
import {
|
import {
|
||||||
ArrowUpDownIcon,
|
ArrowUpDownIcon,
|
||||||
ChevronRightSquareIcon,
|
|
||||||
CopyIcon,
|
CopyIcon,
|
||||||
CpuIcon,
|
CpuIcon,
|
||||||
HardDriveIcon,
|
HardDriveIcon,
|
||||||
@@ -19,10 +15,7 @@ import {
|
|||||||
Trash2Icon,
|
Trash2Icon,
|
||||||
WifiIcon,
|
WifiIcon,
|
||||||
} from "lucide-react"
|
} from "lucide-react"
|
||||||
import { memo, useMemo, useRef, useState } from "react"
|
import { Button } from "../ui/button"
|
||||||
import { isReadOnlyUser, pb } from "@/lib/api"
|
|
||||||
import { ConnectionType, MeterState, SystemStatus } from "@/lib/enums"
|
|
||||||
import { $longestSystemNameLen, $userSettings } from "@/lib/stores"
|
|
||||||
import {
|
import {
|
||||||
cn,
|
cn,
|
||||||
copyToClipboard,
|
copyToClipboard,
|
||||||
@@ -32,12 +25,24 @@ import {
|
|||||||
getMeterState,
|
getMeterState,
|
||||||
parseSemVer,
|
parseSemVer,
|
||||||
} from "@/lib/utils"
|
} from "@/lib/utils"
|
||||||
import type { SystemRecord } from "@/types"
|
import { EthernetIcon, GpuIcon, HourglassIcon, ThermometerIcon } from "../ui/icons"
|
||||||
import { SystemDialog } from "../add-system"
|
import { useStore } from "@nanostores/react"
|
||||||
import AlertButton from "../alerts/alert-button"
|
import { $longestSystemNameLen, $userSettings } from "@/lib/stores"
|
||||||
import { $router, Link } from "../router"
|
import { Trans, useLingui } from "@lingui/react/macro"
|
||||||
|
import { useMemo, useRef, useState } from "react"
|
||||||
|
import { memo } from "react"
|
||||||
|
import {
|
||||||
|
DropdownMenu,
|
||||||
|
DropdownMenuContent,
|
||||||
|
DropdownMenuItem,
|
||||||
|
DropdownMenuSeparator,
|
||||||
|
DropdownMenuTrigger,
|
||||||
|
} from "../ui/dropdown-menu"
|
||||||
|
import AlertButton from "../alerts/alert-button"
|
||||||
|
import { Dialog } from "../ui/dialog"
|
||||||
|
import { SystemDialog } from "../add-system"
|
||||||
|
import { AlertDialog } from "../ui/alert-dialog"
|
||||||
import {
|
import {
|
||||||
AlertDialog,
|
|
||||||
AlertDialogAction,
|
AlertDialogAction,
|
||||||
AlertDialogCancel,
|
AlertDialogCancel,
|
||||||
AlertDialogContent,
|
AlertDialogContent,
|
||||||
@@ -46,16 +51,12 @@ import {
|
|||||||
AlertDialogHeader,
|
AlertDialogHeader,
|
||||||
AlertDialogTitle,
|
AlertDialogTitle,
|
||||||
} from "../ui/alert-dialog"
|
} from "../ui/alert-dialog"
|
||||||
import { Button, buttonVariants } from "../ui/button"
|
import { buttonVariants } from "../ui/button"
|
||||||
import { Dialog } from "../ui/dialog"
|
import { t } from "@lingui/core/macro"
|
||||||
import {
|
import { MeterState, SystemStatus } from "@/lib/enums"
|
||||||
DropdownMenu,
|
import { $router, Link } from "../router"
|
||||||
DropdownMenuContent,
|
import { getPagePath } from "@nanostores/router"
|
||||||
DropdownMenuItem,
|
import { isReadOnlyUser, pb } from "@/lib/api"
|
||||||
DropdownMenuSeparator,
|
|
||||||
DropdownMenuTrigger,
|
|
||||||
} from "../ui/dropdown-menu"
|
|
||||||
import { EthernetIcon, GpuIcon, HourglassIcon, ThermometerIcon, WebSocketIcon } from "../ui/icons"
|
|
||||||
|
|
||||||
const STATUS_COLORS = {
|
const STATUS_COLORS = {
|
||||||
[SystemStatus.Up]: "bg-green-500",
|
[SystemStatus.Up]: "bg-green-500",
|
||||||
@@ -272,24 +273,24 @@ export default function SystemsTableColumns(viewMode: "table" | "grid"): ColumnD
|
|||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
const system = info.row.original
|
const system = info.row.original
|
||||||
const color = {
|
|
||||||
"text-green-500": version === globalThis.BESZEL.HUB_VERSION,
|
|
||||||
"text-yellow-500": version !== globalThis.BESZEL.HUB_VERSION,
|
|
||||||
"text-red-500": system.status !== SystemStatus.Up,
|
|
||||||
}
|
|
||||||
return (
|
return (
|
||||||
<div className={cn("flex gap-1.5 items-center md:pe-5 tabular-nums", viewMode === "table" && "ps-0.5")}>
|
<span className={cn("flex gap-1.5 items-center md:pe-5 tabular-nums", viewMode === "table" && "ps-0.5")}>
|
||||||
{system.info.ct === ConnectionType.WebSocket && <WebSocketIcon className={cn("size-3", color)} />}
|
<IndicatorDot
|
||||||
{system.info.ct === ConnectionType.SSH && <ChevronRightSquareIcon className={cn("size-3", color)} />}
|
system={system}
|
||||||
{!system.info.ct && <IndicatorDot system={system} className={cn(color, "bg-current mx-0.5")} />}
|
className={
|
||||||
|
(system.status !== SystemStatus.Up && STATUS_COLORS[SystemStatus.Paused]) ||
|
||||||
|
(version === globalThis.BESZEL.HUB_VERSION && STATUS_COLORS[SystemStatus.Up]) ||
|
||||||
|
STATUS_COLORS[SystemStatus.Pending]
|
||||||
|
}
|
||||||
|
/>
|
||||||
<span className="truncate max-w-14">{info.getValue() as string}</span>
|
<span className="truncate max-w-14">{info.getValue() as string}</span>
|
||||||
</div>
|
</span>
|
||||||
)
|
)
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: "actions",
|
id: "actions",
|
||||||
// @ts-expect-error
|
// @ts-ignore
|
||||||
name: () => t({ message: "Actions", comment: "Table column" }),
|
name: () => t({ message: "Actions", comment: "Table column" }),
|
||||||
size: 50,
|
size: 50,
|
||||||
cell: ({ row }) => (
|
cell: ({ row }) => (
|
||||||
@@ -304,13 +305,12 @@ export default function SystemsTableColumns(viewMode: "table" | "grid"): ColumnD
|
|||||||
|
|
||||||
function sortableHeader(context: HeaderContext<SystemRecord, unknown>) {
|
function sortableHeader(context: HeaderContext<SystemRecord, unknown>) {
|
||||||
const { column } = context
|
const { column } = context
|
||||||
// @ts-expect-error
|
// @ts-ignore
|
||||||
const { Icon, hideSort, name }: { Icon: React.ElementType; name: () => string; hideSort: boolean } = column.columnDef
|
const { Icon, hideSort, name }: { Icon: React.ElementType; name: () => string; hideSort: boolean } = column.columnDef
|
||||||
const isSorted = column.getIsSorted()
|
|
||||||
return (
|
return (
|
||||||
<Button
|
<Button
|
||||||
variant="ghost"
|
variant="ghost"
|
||||||
className={cn("h-9 px-3 flex duration-50", isSorted && "bg-accent/70 light:bg-accent text-accent-foreground/90")}
|
className="h-9 px-3 flex"
|
||||||
onClick={() => column.toggleSorting(column.getIsSorted() === "asc")}
|
onClick={() => column.toggleSorting(column.getIsSorted() === "asc")}
|
||||||
>
|
>
|
||||||
{Icon && <Icon className="me-2 size-4" />}
|
{Icon && <Icon className="me-2 size-4" />}
|
||||||
@@ -353,7 +353,7 @@ export function IndicatorDot({ system, className }: { system: SystemRecord; clas
|
|||||||
export const ActionsButton = memo(({ system }: { system: SystemRecord }) => {
|
export const ActionsButton = memo(({ system }: { system: SystemRecord }) => {
|
||||||
const [deleteOpen, setDeleteOpen] = useState(false)
|
const [deleteOpen, setDeleteOpen] = useState(false)
|
||||||
const [editOpen, setEditOpen] = useState(false)
|
const [editOpen, setEditOpen] = useState(false)
|
||||||
const editOpened = useRef(false)
|
let editOpened = useRef(false)
|
||||||
const { t } = useLingui()
|
const { t } = useLingui()
|
||||||
const { id, status, host, name } = system
|
const { id, status, host, name } = system
|
||||||
|
|
||||||
|
|||||||
@@ -1,31 +1,17 @@
|
|||||||
import { Trans, useLingui } from "@lingui/react/macro"
|
|
||||||
import { useStore } from "@nanostores/react"
|
|
||||||
import { getPagePath } from "@nanostores/router"
|
|
||||||
import {
|
import {
|
||||||
type ColumnDef,
|
ColumnDef,
|
||||||
type ColumnFiltersState,
|
ColumnFiltersState,
|
||||||
flexRender,
|
|
||||||
getCoreRowModel,
|
|
||||||
getFilteredRowModel,
|
getFilteredRowModel,
|
||||||
|
SortingState,
|
||||||
getSortedRowModel,
|
getSortedRowModel,
|
||||||
type Row,
|
flexRender,
|
||||||
type SortingState,
|
VisibilityState,
|
||||||
type Table as TableType,
|
getCoreRowModel,
|
||||||
useReactTable,
|
useReactTable,
|
||||||
type VisibilityState,
|
Row,
|
||||||
|
Table as TableType,
|
||||||
} from "@tanstack/react-table"
|
} from "@tanstack/react-table"
|
||||||
import { useVirtualizer, type VirtualItem } from "@tanstack/react-virtual"
|
import { TableBody, TableCell, TableHead, TableHeader, TableRow } from "@/components/ui/table"
|
||||||
import {
|
|
||||||
ArrowDownIcon,
|
|
||||||
ArrowUpDownIcon,
|
|
||||||
ArrowUpIcon,
|
|
||||||
EyeIcon,
|
|
||||||
FilterIcon,
|
|
||||||
LayoutGridIcon,
|
|
||||||
LayoutListIcon,
|
|
||||||
Settings2Icon,
|
|
||||||
} from "lucide-react"
|
|
||||||
import { memo, useEffect, useMemo, useRef, useState } from "react"
|
|
||||||
import { Button } from "@/components/ui/button"
|
import { Button } from "@/components/ui/button"
|
||||||
import {
|
import {
|
||||||
DropdownMenu,
|
DropdownMenu,
|
||||||
@@ -38,16 +24,30 @@ import {
|
|||||||
DropdownMenuSeparator,
|
DropdownMenuSeparator,
|
||||||
DropdownMenuTrigger,
|
DropdownMenuTrigger,
|
||||||
} from "@/components/ui/dropdown-menu"
|
} from "@/components/ui/dropdown-menu"
|
||||||
import { Input } from "@/components/ui/input"
|
import { SystemRecord } from "@/types"
|
||||||
import { TableBody, TableCell, TableHead, TableHeader, TableRow } from "@/components/ui/table"
|
import {
|
||||||
import { SystemStatus } from "@/lib/enums"
|
ArrowUpDownIcon,
|
||||||
import { $downSystems, $pausedSystems, $systems, $upSystems } from "@/lib/stores"
|
LayoutGridIcon,
|
||||||
|
LayoutListIcon,
|
||||||
|
ArrowDownIcon,
|
||||||
|
ArrowUpIcon,
|
||||||
|
Settings2Icon,
|
||||||
|
EyeIcon,
|
||||||
|
FilterIcon,
|
||||||
|
} from "lucide-react"
|
||||||
|
import { memo, useEffect, useMemo, useRef, useState } from "react"
|
||||||
|
import { $pausedSystems, $downSystems, $upSystems, $systems } from "@/lib/stores"
|
||||||
|
import { useStore } from "@nanostores/react"
|
||||||
import { cn, runOnce, useBrowserStorage } from "@/lib/utils"
|
import { cn, runOnce, useBrowserStorage } from "@/lib/utils"
|
||||||
import type { SystemRecord } from "@/types"
|
|
||||||
import AlertButton from "../alerts/alert-button"
|
|
||||||
import { $router, Link } from "../router"
|
import { $router, Link } from "../router"
|
||||||
|
import { useLingui, Trans } from "@lingui/react/macro"
|
||||||
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "../ui/card"
|
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "../ui/card"
|
||||||
|
import { Input } from "@/components/ui/input"
|
||||||
|
import { getPagePath } from "@nanostores/router"
|
||||||
import SystemsTableColumns, { ActionsButton, IndicatorDot } from "./systems-table-columns"
|
import SystemsTableColumns, { ActionsButton, IndicatorDot } from "./systems-table-columns"
|
||||||
|
import AlertButton from "../alerts/alert-button"
|
||||||
|
import { SystemStatus } from "@/lib/enums"
|
||||||
|
import { useVirtualizer, VirtualItem } from "@tanstack/react-virtual"
|
||||||
|
|
||||||
type ViewMode = "table" | "grid"
|
type ViewMode = "table" | "grid"
|
||||||
type StatusFilter = "all" | SystemRecord["status"]
|
type StatusFilter = "all" | SystemRecord["status"]
|
||||||
@@ -309,121 +309,128 @@ export default function SystemsTable() {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
const AllSystemsTable = memo(
|
const AllSystemsTable = memo(function ({
|
||||||
({ table, rows, colLength }: { table: TableType<SystemRecord>; rows: Row<SystemRecord>[]; colLength: number }) => {
|
table,
|
||||||
// The virtualizer will need a reference to the scrollable container element
|
rows,
|
||||||
const scrollRef = useRef<HTMLDivElement>(null)
|
colLength,
|
||||||
|
}: {
|
||||||
|
table: TableType<SystemRecord>
|
||||||
|
rows: Row<SystemRecord>[]
|
||||||
|
colLength: number
|
||||||
|
}) {
|
||||||
|
// The virtualizer will need a reference to the scrollable container element
|
||||||
|
const scrollRef = useRef<HTMLDivElement>(null)
|
||||||
|
|
||||||
const virtualizer = useVirtualizer<HTMLDivElement, HTMLTableRowElement>({
|
const virtualizer = useVirtualizer<HTMLDivElement, HTMLTableRowElement>({
|
||||||
count: rows.length,
|
count: rows.length,
|
||||||
estimateSize: () => (rows.length > 10 ? 56 : 60),
|
estimateSize: () => (rows.length > 10 ? 56 : 60),
|
||||||
getScrollElement: () => scrollRef.current,
|
getScrollElement: () => scrollRef.current,
|
||||||
overscan: 5,
|
overscan: 5,
|
||||||
})
|
})
|
||||||
const virtualRows = virtualizer.getVirtualItems()
|
const virtualRows = virtualizer.getVirtualItems()
|
||||||
|
|
||||||
const paddingTop = Math.max(0, virtualRows[0]?.start ?? 0 - virtualizer.options.scrollMargin)
|
const paddingTop = Math.max(0, virtualRows[0]?.start ?? 0 - virtualizer.options.scrollMargin)
|
||||||
const paddingBottom = Math.max(0, virtualizer.getTotalSize() - (virtualRows[virtualRows.length - 1]?.end ?? 0))
|
const paddingBottom = Math.max(0, virtualizer.getTotalSize() - (virtualRows[virtualRows.length - 1]?.end ?? 0))
|
||||||
|
|
||||||
return (
|
|
||||||
<div
|
|
||||||
className={cn(
|
|
||||||
"h-min max-h-[calc(100dvh-17rem)] max-w-full relative overflow-auto border rounded-md",
|
|
||||||
// don't set min height if there are less than 2 rows, do set if we need to display the empty state
|
|
||||||
(!rows.length || rows.length > 2) && "min-h-50"
|
|
||||||
)}
|
|
||||||
ref={scrollRef}
|
|
||||||
>
|
|
||||||
{/* add header height to table size */}
|
|
||||||
<div style={{ height: `${virtualizer.getTotalSize() + 50}px`, paddingTop, paddingBottom }}>
|
|
||||||
<table className="text-sm w-full h-full">
|
|
||||||
<SystemsTableHead table={table} />
|
|
||||||
<TableBody onMouseEnter={preloadSystemDetail}>
|
|
||||||
{rows.length ? (
|
|
||||||
virtualRows.map((virtualRow) => {
|
|
||||||
const row = rows[virtualRow.index] as Row<SystemRecord>
|
|
||||||
return (
|
|
||||||
<SystemTableRow
|
|
||||||
key={row.id}
|
|
||||||
row={row}
|
|
||||||
virtualRow={virtualRow}
|
|
||||||
length={rows.length}
|
|
||||||
colLength={colLength}
|
|
||||||
/>
|
|
||||||
)
|
|
||||||
})
|
|
||||||
) : (
|
|
||||||
<TableRow>
|
|
||||||
<TableCell colSpan={colLength} className="h-37 text-center pointer-events-none">
|
|
||||||
<Trans>No systems found.</Trans>
|
|
||||||
</TableCell>
|
|
||||||
</TableRow>
|
|
||||||
)}
|
|
||||||
</TableBody>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
)
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
function SystemsTableHead({ table }: { table: TableType<SystemRecord> }) {
|
|
||||||
const { t } = useLingui()
|
|
||||||
return (
|
return (
|
||||||
<TableHeader className="sticky top-0 z-20 w-full border-b-2">
|
<div
|
||||||
{table.getHeaderGroups().map((headerGroup) => (
|
className={cn(
|
||||||
<tr key={headerGroup.id}>
|
"h-min max-h-[calc(100dvh-17rem)] max-w-full relative overflow-auto border rounded-md",
|
||||||
{headerGroup.headers.map((header) => {
|
// don't set min height if there are less than 2 rows, do set if we need to display the empty state
|
||||||
return (
|
(!rows.length || rows.length > 2) && "min-h-50"
|
||||||
<TableHead className="px-1.5" key={header.id}>
|
)}
|
||||||
{flexRender(header.column.columnDef.header, header.getContext())}
|
ref={scrollRef}
|
||||||
</TableHead>
|
>
|
||||||
)
|
{/* add header height to table size */}
|
||||||
})}
|
<div style={{ height: `${virtualizer.getTotalSize() + 50}px`, paddingTop, paddingBottom }}>
|
||||||
</tr>
|
<table className="text-sm w-full h-full">
|
||||||
))}
|
<SystemsTableHead table={table} colLength={colLength} />
|
||||||
</TableHeader>
|
<TableBody onMouseEnter={preloadSystemDetail}>
|
||||||
|
{rows.length ? (
|
||||||
|
virtualRows.map((virtualRow) => {
|
||||||
|
const row = rows[virtualRow.index] as Row<SystemRecord>
|
||||||
|
return (
|
||||||
|
<SystemTableRow
|
||||||
|
key={row.id}
|
||||||
|
row={row}
|
||||||
|
virtualRow={virtualRow}
|
||||||
|
length={rows.length}
|
||||||
|
colLength={colLength}
|
||||||
|
/>
|
||||||
|
)
|
||||||
|
})
|
||||||
|
) : (
|
||||||
|
<TableRow>
|
||||||
|
<TableCell colSpan={colLength} className="h-37 text-center pointer-events-none">
|
||||||
|
<Trans>No systems found.</Trans>
|
||||||
|
</TableCell>
|
||||||
|
</TableRow>
|
||||||
|
)}
|
||||||
|
</TableBody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
)
|
)
|
||||||
|
})
|
||||||
|
|
||||||
|
function SystemsTableHead({ table, colLength }: { table: TableType<SystemRecord>; colLength: number }) {
|
||||||
|
const { i18n } = useLingui()
|
||||||
|
|
||||||
|
return useMemo(() => {
|
||||||
|
return (
|
||||||
|
<TableHeader className="sticky top-0 z-20 w-full border-b-2">
|
||||||
|
{table.getHeaderGroups().map((headerGroup) => (
|
||||||
|
<tr key={headerGroup.id}>
|
||||||
|
{headerGroup.headers.map((header) => {
|
||||||
|
return (
|
||||||
|
<TableHead className="px-1.5" key={header.id}>
|
||||||
|
{flexRender(header.column.columnDef.header, header.getContext())}
|
||||||
|
</TableHead>
|
||||||
|
)
|
||||||
|
})}
|
||||||
|
</tr>
|
||||||
|
))}
|
||||||
|
</TableHeader>
|
||||||
|
)
|
||||||
|
}, [i18n.locale, colLength])
|
||||||
}
|
}
|
||||||
|
|
||||||
const SystemTableRow = memo(
|
const SystemTableRow = memo(function ({
|
||||||
({
|
row,
|
||||||
row,
|
virtualRow,
|
||||||
virtualRow,
|
colLength,
|
||||||
colLength,
|
}: {
|
||||||
}: {
|
row: Row<SystemRecord>
|
||||||
row: Row<SystemRecord>
|
virtualRow: VirtualItem
|
||||||
virtualRow: VirtualItem
|
length: number
|
||||||
length: number
|
colLength: number
|
||||||
colLength: number
|
}) {
|
||||||
}) => {
|
const system = row.original
|
||||||
const system = row.original
|
const { t } = useLingui()
|
||||||
const { t } = useLingui()
|
return useMemo(() => {
|
||||||
return useMemo(() => {
|
return (
|
||||||
return (
|
<TableRow
|
||||||
<TableRow
|
// data-state={row.getIsSelected() && "selected"}
|
||||||
// data-state={row.getIsSelected() && "selected"}
|
className={cn("cursor-pointer transition-opacity relative safari:transform-3d", {
|
||||||
className={cn("cursor-pointer transition-opacity relative safari:transform-3d", {
|
"opacity-50": system.status === SystemStatus.Paused,
|
||||||
"opacity-50": system.status === SystemStatus.Paused,
|
})}
|
||||||
})}
|
>
|
||||||
>
|
{row.getVisibleCells().map((cell) => (
|
||||||
{row.getVisibleCells().map((cell) => (
|
<TableCell
|
||||||
<TableCell
|
key={cell.id}
|
||||||
key={cell.id}
|
style={{
|
||||||
style={{
|
width: cell.column.getSize(),
|
||||||
width: cell.column.getSize(),
|
height: virtualRow.size,
|
||||||
height: virtualRow.size,
|
}}
|
||||||
}}
|
className="py-0"
|
||||||
className="py-0"
|
>
|
||||||
>
|
{flexRender(cell.column.columnDef.cell, cell.getContext())}
|
||||||
{flexRender(cell.column.columnDef.cell, cell.getContext())}
|
</TableCell>
|
||||||
</TableCell>
|
))}
|
||||||
))}
|
</TableRow>
|
||||||
</TableRow>
|
)
|
||||||
)
|
}, [system, system.status, colLength, t])
|
||||||
}, [system, system.status, colLength, t])
|
})
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
const SystemCard = memo(
|
const SystemCard = memo(
|
||||||
({ row, table, colLength }: { row: Row<SystemRecord>; table: TableType<SystemRecord>; colLength: number }) => {
|
({ row, table, colLength }: { row: Row<SystemRecord>; table: TableType<SystemRecord>; colLength: number }) => {
|
||||||
@@ -464,7 +471,7 @@ const SystemCard = memo(
|
|||||||
if (!column.getIsVisible() || column.id === "system" || column.id === "actions") return null
|
if (!column.getIsVisible() || column.id === "system" || column.id === "actions") return null
|
||||||
const cell = row.getAllCells().find((cell) => cell.column.id === column.id)
|
const cell = row.getAllCells().find((cell) => cell.column.id === column.id)
|
||||||
if (!cell) return null
|
if (!cell) return null
|
||||||
// @ts-expect-error
|
// @ts-ignore
|
||||||
const { Icon, name } = column.columnDef as ColumnDef<SystemRecord, unknown>
|
const { Icon, name } = column.columnDef as ColumnDef<SystemRecord, unknown>
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
|
|||||||
@@ -130,12 +130,3 @@ export function HourglassIcon(props: SVGProps<SVGSVGElement>) {
|
|||||||
</svg>
|
</svg>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
export function WebSocketIcon(props: SVGProps<SVGSVGElement>) {
|
|
||||||
return (
|
|
||||||
<svg viewBox="0 0 256 193" {...props} fill="currentColor">
|
|
||||||
<title>WebSocket</title>
|
|
||||||
<path d="M192 145h32V68l-36-35-22 22 26 27zm32 16H113l-26-27 11-11 22 22h45l-44-45 11-11 44 44V88l-21-22 11-11-55-55H0l32 32h65l24 23-34 34-24-23V48H32v31l55 55-23 22 36 36h156z" />
|
|
||||||
</svg>
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -53,9 +53,3 @@ export enum HourFormat {
|
|||||||
"12h" = "12h",
|
"12h" = "12h",
|
||||||
"24h" = "24h",
|
"24h" = "24h",
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Connection type */
|
|
||||||
export enum ConnectionType {
|
|
||||||
SSH = 1,
|
|
||||||
WebSocket,
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
/** biome-ignore-all lint/suspicious/noAssignInExpressions: it's fine :) */
|
|
||||||
import type { PreinitializedMapStore } from "nanostores"
|
import type { PreinitializedMapStore } from "nanostores"
|
||||||
import { pb, verifyAuth } from "@/lib/api"
|
import { pb, verifyAuth } from "@/lib/api"
|
||||||
import {
|
import {
|
||||||
@@ -17,10 +16,9 @@ const COLLECTION = pb.collection<SystemRecord>("systems")
|
|||||||
const FIELDS_DEFAULT = "id,name,host,port,info,status"
|
const FIELDS_DEFAULT = "id,name,host,port,info,status"
|
||||||
|
|
||||||
/** Maximum system name length for display purposes */
|
/** Maximum system name length for display purposes */
|
||||||
const MAX_SYSTEM_NAME_LENGTH = 22
|
const MAX_SYSTEM_NAME_LENGTH = 20
|
||||||
|
|
||||||
let initialized = false
|
let initialized = false
|
||||||
// biome-ignore lint/suspicious/noConfusingVoidType: typescript rocks
|
|
||||||
let unsub: (() => void) | undefined | void
|
let unsub: (() => void) | undefined | void
|
||||||
|
|
||||||
/** Initialize the systems manager and set up listeners */
|
/** Initialize the systems manager and set up listeners */
|
||||||
@@ -106,37 +104,20 @@ async function fetchSystems(): Promise<SystemRecord[]> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Makes sure the system has valid info object and throws if not */
|
|
||||||
function validateSystemInfo(system: SystemRecord) {
|
|
||||||
if (!("cpu" in system.info)) {
|
|
||||||
throw new Error(`${system.name} has no CPU info`)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Add system to both name and ID stores */
|
/** Add system to both name and ID stores */
|
||||||
export function add(system: SystemRecord) {
|
export function add(system: SystemRecord) {
|
||||||
try {
|
$allSystemsByName.setKey(system.name, system)
|
||||||
validateSystemInfo(system)
|
$allSystemsById.setKey(system.id, system)
|
||||||
$allSystemsByName.setKey(system.name, system)
|
|
||||||
$allSystemsById.setKey(system.id, system)
|
|
||||||
} catch (error) {
|
|
||||||
console.error(error)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Update system in stores */
|
/** Update system in stores */
|
||||||
export function update(system: SystemRecord) {
|
export function update(system: SystemRecord) {
|
||||||
try {
|
// if name changed, make sure old name is removed from the name store
|
||||||
validateSystemInfo(system)
|
const oldName = $allSystemsById.get()[system.id]?.name
|
||||||
// if name changed, make sure old name is removed from the name store
|
if (oldName !== system.name) {
|
||||||
const oldName = $allSystemsById.get()[system.id]?.name
|
$allSystemsByName.setKey(oldName, undefined as any)
|
||||||
if (oldName !== system.name) {
|
|
||||||
$allSystemsByName.setKey(oldName, undefined as unknown as SystemRecord)
|
|
||||||
}
|
|
||||||
add(system)
|
|
||||||
} catch (error) {
|
|
||||||
console.error(error)
|
|
||||||
}
|
}
|
||||||
|
add(system)
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Remove system from stores */
|
/** Remove system from stores */
|
||||||
@@ -151,7 +132,7 @@ export function remove(system: SystemRecord) {
|
|||||||
/** Remove system from specific store */
|
/** Remove system from specific store */
|
||||||
function removeFromStore(system: SystemRecord, store: PreinitializedMapStore<Record<string, SystemRecord>>) {
|
function removeFromStore(system: SystemRecord, store: PreinitializedMapStore<Record<string, SystemRecord>>) {
|
||||||
const key = store === $allSystemsByName ? system.name : system.id
|
const key = store === $allSystemsByName ? system.name : system.id
|
||||||
store.setKey(key, undefined as unknown as SystemRecord)
|
store.setKey(key, undefined as any)
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Action functions for subscription */
|
/** Action functions for subscription */
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
import { t } from "@lingui/core/macro"
|
import { t } from "@lingui/core/macro"
|
||||||
import { type ClassValue, clsx } from "clsx"
|
import { type ClassValue, clsx } from "clsx"
|
||||||
import { timeDay, timeHour } from "d3-time"
|
import { timeDay, timeHour } from "d3-time"
|
||||||
import { listenKeys } from "nanostores"
|
|
||||||
import { useEffect, useState } from "react"
|
import { useEffect, useState } from "react"
|
||||||
import { twMerge } from "tailwind-merge"
|
import { twMerge } from "tailwind-merge"
|
||||||
import { prependBasePath } from "@/components/router"
|
import { prependBasePath } from "@/components/router"
|
||||||
@@ -9,6 +8,7 @@ import { toast } from "@/components/ui/use-toast"
|
|||||||
import type { ChartTimeData, FingerprintRecord, SemVer, SystemRecord } from "@/types"
|
import type { ChartTimeData, FingerprintRecord, SemVer, SystemRecord } from "@/types"
|
||||||
import { HourFormat, MeterState, Unit } from "./enums"
|
import { HourFormat, MeterState, Unit } from "./enums"
|
||||||
import { $copyContent, $userSettings } from "./stores"
|
import { $copyContent, $userSettings } from "./stores"
|
||||||
|
import { listenKeys } from "nanostores"
|
||||||
|
|
||||||
export const FAVICON_DEFAULT = "favicon.svg"
|
export const FAVICON_DEFAULT = "favicon.svg"
|
||||||
export const FAVICON_GREEN = "favicon-green.svg"
|
export const FAVICON_GREEN = "favicon-green.svg"
|
||||||
@@ -179,8 +179,8 @@ export function formatTemperature(celsius: number, unit?: Unit): { value: number
|
|||||||
if (!unit) {
|
if (!unit) {
|
||||||
unit = $userSettings.get().unitTemp || Unit.Celsius
|
unit = $userSettings.get().unitTemp || Unit.Celsius
|
||||||
}
|
}
|
||||||
// biome-ignore lint/suspicious/noDoubleEquals: need loose equality check due to form data being strings
|
// need loose equality check due to form data being strings
|
||||||
if (unit == Unit.Fahrenheit) {
|
if (unit === Unit.Fahrenheit) {
|
||||||
return {
|
return {
|
||||||
value: celsius * 1.8 + 32,
|
value: celsius * 1.8 + 32,
|
||||||
unit: "°F",
|
unit: "°F",
|
||||||
@@ -202,8 +202,8 @@ export function formatBytes(
|
|||||||
// Convert MB to bytes if isMegabytes is true
|
// Convert MB to bytes if isMegabytes is true
|
||||||
if (isMegabytes) size *= 1024 * 1024
|
if (isMegabytes) size *= 1024 * 1024
|
||||||
|
|
||||||
// biome-ignore lint/suspicious/noDoubleEquals: need loose equality check due to form data being strings
|
// need loose equality check due to form data being strings
|
||||||
if (unit == Unit.Bits) {
|
if (unit === Unit.Bits) {
|
||||||
const bits = size * 8
|
const bits = size * 8
|
||||||
const suffix = perSecond ? "ps" : ""
|
const suffix = perSecond ? "ps" : ""
|
||||||
if (bits < 1000) return { value: bits, unit: `b${suffix}` }
|
if (bits < 1000) return { value: bits, unit: `b${suffix}` }
|
||||||
|
|||||||
@@ -8,30 +8,15 @@ msgstr ""
|
|||||||
"Language: ar\n"
|
"Language: ar\n"
|
||||||
"Project-Id-Version: beszel\n"
|
"Project-Id-Version: beszel\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"PO-Revision-Date: 2025-08-28 23:21\n"
|
"PO-Revision-Date: 2025-12-02 23:17\n"
|
||||||
"Last-Translator: \n"
|
"Last-Translator: \n"
|
||||||
"Language-Team: Arabic\n"
|
"Language-Team: Arabic\n"
|
||||||
"Plural-Forms: nplurals=6; plural=(n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5);\n"
|
"Plural-Forms: nplurals=6; plural=(n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5);\n"
|
||||||
"X-Crowdin-Project: beszel\n"
|
"X-Crowdin-Project: beszel\n"
|
||||||
"X-Crowdin-Project-ID: 733311\n"
|
"X-Crowdin-Project-ID: 733311\n"
|
||||||
"X-Crowdin-Language: ar\n"
|
"X-Crowdin-Language: ar\n"
|
||||||
"X-Crowdin-File: /main/beszel/site/src/locales/en/en.po\n"
|
"X-Crowdin-File: /main/internal/site/src/locales/en/en.po\n"
|
||||||
"X-Crowdin-File-ID: 16\n"
|
"X-Crowdin-File-ID: 32\n"
|
||||||
|
|
||||||
#. placeholder {0}: Math.trunc(system.info?.u / 86400)
|
|
||||||
#: src/components/routes/system.tsx
|
|
||||||
msgid "{0, plural, one {# day} other {# days}}"
|
|
||||||
msgstr "{0, plural, one {# يوم} other {# أيام}}"
|
|
||||||
|
|
||||||
#. placeholder {0}: Math.trunc(system.info.u / 3600)
|
|
||||||
#: src/components/routes/system.tsx
|
|
||||||
msgid "{0, plural, one {# hour} other {# hours}}"
|
|
||||||
msgstr "{0, plural, one {# ساعة} other {# ساعات}}"
|
|
||||||
|
|
||||||
#. placeholder {0}: Math.trunc(system.info.u / 60)
|
|
||||||
#: src/components/routes/system.tsx
|
|
||||||
msgid "{0, plural, one {# minute} few {# minutes} many {# minutes} other {# minutes}}"
|
|
||||||
msgstr "{0, plural, one {# دقيقة} few {# دقائق} many {# دقيقة} other {# دقيقة}}"
|
|
||||||
|
|
||||||
#. placeholder {0}: table.getFilteredSelectedRowModel().rows.length
|
#. placeholder {0}: table.getFilteredSelectedRowModel().rows.length
|
||||||
#. placeholder {1}: table.getFilteredRowModel().rows.length
|
#. placeholder {1}: table.getFilteredRowModel().rows.length
|
||||||
@@ -39,6 +24,18 @@ msgstr "{0, plural, one {# دقيقة} few {# دقائق} many {# دقيقة} ot
|
|||||||
msgid "{0} of {1} row(s) selected."
|
msgid "{0} of {1} row(s) selected."
|
||||||
msgstr "تم تحديد {0} من {1} صف"
|
msgstr "تم تحديد {0} من {1} صف"
|
||||||
|
|
||||||
|
#: src/lib/utils.ts
|
||||||
|
msgid "{count, plural, one {{countString} day} other {{countString} days}}"
|
||||||
|
msgstr "{count, plural, one {{countString} يوم} other {{countString} أيام}}"
|
||||||
|
|
||||||
|
#: src/lib/utils.ts
|
||||||
|
msgid "{count, plural, one {{countString} hour} other {{countString} hours}}"
|
||||||
|
msgstr "{count, plural, one {{countString} ساعة} other {{countString} ساعات}}"
|
||||||
|
|
||||||
|
#: src/lib/utils.ts
|
||||||
|
msgid "{count, plural, one {{countString} minute} few {{countString} minutes} many {{countString} minutes} other {{countString} minutes}}"
|
||||||
|
msgstr "{count, plural, one {{countString} دقيقة} few {{countString} دقائق} many {{countString} دقيقة} other {{countString} دقيقة}}"
|
||||||
|
|
||||||
#: src/lib/utils.ts
|
#: src/lib/utils.ts
|
||||||
msgid "1 hour"
|
msgid "1 hour"
|
||||||
msgstr "1 ساعة"
|
msgstr "1 ساعة"
|
||||||
@@ -48,6 +45,10 @@ msgstr "1 ساعة"
|
|||||||
msgid "1 min"
|
msgid "1 min"
|
||||||
msgstr "دقيقة واحدة"
|
msgstr "دقيقة واحدة"
|
||||||
|
|
||||||
|
#: src/lib/utils.ts
|
||||||
|
msgid "1 minute"
|
||||||
|
msgstr "1 دقيقة"
|
||||||
|
|
||||||
#: src/lib/utils.ts
|
#: src/lib/utils.ts
|
||||||
msgid "1 week"
|
msgid "1 week"
|
||||||
msgstr "1 أسبوع"
|
msgstr "1 أسبوع"
|
||||||
@@ -75,28 +76,37 @@ msgid "5 min"
|
|||||||
msgstr "5 دقائق"
|
msgstr "5 دقائق"
|
||||||
|
|
||||||
#. Table column
|
#. Table column
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
msgid "Actions"
|
msgid "Actions"
|
||||||
msgstr "إجراءات"
|
msgstr "إجراءات"
|
||||||
|
|
||||||
#: src/components/alerts-history-columns.tsx
|
#: src/components/alerts-history-columns.tsx
|
||||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
msgid "Active"
|
msgid "Active"
|
||||||
msgstr "نشط"
|
msgstr "نشط"
|
||||||
|
|
||||||
#: src/components/routes/home.tsx
|
#: src/components/active-alerts.tsx
|
||||||
msgid "Active Alerts"
|
msgid "Active Alerts"
|
||||||
msgstr "التنبيهات النشطة"
|
msgstr "التنبيهات النشطة"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Active state"
|
||||||
|
msgstr "الحالة النشطة"
|
||||||
|
|
||||||
|
#: src/components/add-system.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "Add {foo}"
|
||||||
|
msgstr "إضافة {foo}"
|
||||||
|
|
||||||
#: src/components/add-system.tsx
|
#: src/components/add-system.tsx
|
||||||
msgid "Add <0>System</0>"
|
msgid "Add <0>System</0>"
|
||||||
msgstr "إضافة <0>نظام</0>"
|
msgstr "إضافة <0>نظام</0>"
|
||||||
|
|
||||||
#: src/components/add-system.tsx
|
|
||||||
msgid "Add New System"
|
|
||||||
msgstr "إضافة نظام جديد"
|
|
||||||
|
|
||||||
#: src/components/add-system.tsx
|
#: src/components/add-system.tsx
|
||||||
msgid "Add system"
|
msgid "Add system"
|
||||||
msgstr "إضافة نظام"
|
msgstr "إضافة نظام"
|
||||||
@@ -109,11 +119,19 @@ msgstr "إضافة رابط"
|
|||||||
msgid "Adjust display options for charts."
|
msgid "Adjust display options for charts."
|
||||||
msgstr "تعديل خيارات العرض للرسوم البيانية."
|
msgstr "تعديل خيارات العرض للرسوم البيانية."
|
||||||
|
|
||||||
|
#: src/components/routes/settings/general.tsx
|
||||||
|
msgid "Adjust the width of the main layout"
|
||||||
|
msgstr "تعديل عرض التخطيط الرئيسي"
|
||||||
|
|
||||||
#: src/components/command-palette.tsx
|
#: src/components/command-palette.tsx
|
||||||
#: src/components/command-palette.tsx
|
#: src/components/command-palette.tsx
|
||||||
msgid "Admin"
|
msgid "Admin"
|
||||||
msgstr "مسؤول"
|
msgstr "مسؤول"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "After"
|
||||||
|
msgstr "بعد"
|
||||||
|
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
msgid "Agent"
|
msgid "Agent"
|
||||||
msgstr "وكيل"
|
msgstr "وكيل"
|
||||||
@@ -129,7 +147,16 @@ msgstr "سجل التنبيهات"
|
|||||||
msgid "Alerts"
|
msgid "Alerts"
|
||||||
msgstr "التنبيهات"
|
msgstr "التنبيهات"
|
||||||
|
|
||||||
|
#: src/components/command-palette.tsx
|
||||||
|
#: src/components/containers-table/containers-table.tsx
|
||||||
|
#: src/components/routes/containers.tsx
|
||||||
|
msgid "All Containers"
|
||||||
|
msgstr "جميع الحاويات"
|
||||||
|
|
||||||
#: src/components/alerts/alerts-sheet.tsx
|
#: src/components/alerts/alerts-sheet.tsx
|
||||||
|
#: src/components/command-palette.tsx
|
||||||
|
#: src/components/routes/home.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
#: src/components/systems-table/systems-table.tsx
|
#: src/components/systems-table/systems-table.tsx
|
||||||
#: src/components/systems-table/systems-table.tsx
|
#: src/components/systems-table/systems-table.tsx
|
||||||
msgid "All Systems"
|
msgid "All Systems"
|
||||||
@@ -191,6 +218,18 @@ msgstr "عرض النطاق الترددي"
|
|||||||
msgid "Battery"
|
msgid "Battery"
|
||||||
msgstr "البطارية"
|
msgstr "البطارية"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Became active"
|
||||||
|
msgstr "أصبح نشطًا"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Became inactive"
|
||||||
|
msgstr "أصبح غير نشط"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Before"
|
||||||
|
msgstr "قبل"
|
||||||
|
|
||||||
#: src/components/login/auth-form.tsx
|
#: src/components/login/auth-form.tsx
|
||||||
msgid "Beszel supports OpenID Connect and many OAuth2 authentication providers."
|
msgid "Beszel supports OpenID Connect and many OAuth2 authentication providers."
|
||||||
msgstr "يدعم بيزيل بروتوكول OpenID Connect والعديد من مزوّدي المصادقة عبر بروتوكول OAuth2."
|
msgstr "يدعم بيزيل بروتوكول OpenID Connect والعديد من مزوّدي المصادقة عبر بروتوكول OAuth2."
|
||||||
@@ -208,6 +247,10 @@ msgstr "ثنائي"
|
|||||||
msgid "Bits (Kbps, Mbps, Gbps)"
|
msgid "Bits (Kbps, Mbps, Gbps)"
|
||||||
msgstr "بت (كيلوبت/ثانية، ميجابت/ثانية، جيجابت/ثانية)"
|
msgstr "بت (كيلوبت/ثانية، ميجابت/ثانية، جيجابت/ثانية)"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Boot state"
|
||||||
|
msgstr "حالة التمهيد"
|
||||||
|
|
||||||
#: src/components/routes/settings/general.tsx
|
#: src/components/routes/settings/general.tsx
|
||||||
#: src/components/routes/settings/general.tsx
|
#: src/components/routes/settings/general.tsx
|
||||||
msgid "Bytes (KB/s, MB/s, GB/s)"
|
msgid "Bytes (KB/s, MB/s, GB/s)"
|
||||||
@@ -217,11 +260,32 @@ msgstr "بايت (كيلوبايت/ثانية، ميجابايت/ثانية، ج
|
|||||||
msgid "Cache / Buffers"
|
msgid "Cache / Buffers"
|
||||||
msgstr "ذاكرة التخزين المؤقت / المخازن المؤقتة"
|
msgstr "ذاكرة التخزين المؤقت / المخازن المؤقتة"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Can reload"
|
||||||
|
msgstr "يمكن إعادة التحميل"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Can start"
|
||||||
|
msgstr "يمكن البدء"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Can stop"
|
||||||
|
msgstr "يمكن الإيقاف"
|
||||||
|
|
||||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "إلغاء"
|
msgstr "إلغاء"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Capabilities"
|
||||||
|
msgstr "القدرات"
|
||||||
|
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
msgid "Capacity"
|
||||||
|
msgstr "السعة"
|
||||||
|
|
||||||
#: src/components/routes/settings/config-yaml.tsx
|
#: src/components/routes/settings/config-yaml.tsx
|
||||||
msgid "Caution - potential data loss"
|
msgid "Caution - potential data loss"
|
||||||
msgstr "تحذير - فقدان محتمل للبيانات"
|
msgstr "تحذير - فقدان محتمل للبيانات"
|
||||||
@@ -263,6 +327,20 @@ msgstr "تحقق من السجلات لمزيد من التفاصيل."
|
|||||||
msgid "Check your notification service"
|
msgid "Check your notification service"
|
||||||
msgstr "تحقق من خدمة الإشعارات الخاصة بك"
|
msgstr "تحقق من خدمة الإشعارات الخاصة بك"
|
||||||
|
|
||||||
|
#: src/components/containers-table/containers-table.tsx
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
#: src/components/systems-table/systems-table.tsx
|
||||||
|
msgid "Clear"
|
||||||
|
msgstr "مسح"
|
||||||
|
|
||||||
|
#: src/components/containers-table/containers-table.tsx
|
||||||
|
msgid "Click on a container to view more information."
|
||||||
|
msgstr "انقر على حاوية لعرض مزيد من المعلومات."
|
||||||
|
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
msgid "Click on a device to view more information."
|
||||||
|
msgstr "انقر على جهاز لعرض مزيد من المعلومات."
|
||||||
|
|
||||||
#: src/components/systems-table/systems-table.tsx
|
#: src/components/systems-table/systems-table.tsx
|
||||||
msgid "Click on a system to view more information."
|
msgid "Click on a system to view more information."
|
||||||
msgstr "انقر على نظام لعرض مزيد من المعلومات."
|
msgstr "انقر على نظام لعرض مزيد من المعلومات."
|
||||||
@@ -285,7 +363,11 @@ msgstr "هيئ التنبيهات الواردة"
|
|||||||
msgid "Confirm password"
|
msgid "Confirm password"
|
||||||
msgstr "تأكيد كلمة المرور"
|
msgstr "تأكيد كلمة المرور"
|
||||||
|
|
||||||
#: src/components/routes/home.tsx
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Conflicts"
|
||||||
|
msgstr "التعارضات"
|
||||||
|
|
||||||
|
#: src/components/active-alerts.tsx
|
||||||
msgid "Connection is down"
|
msgid "Connection is down"
|
||||||
msgstr "الاتصال مقطوع"
|
msgstr "الاتصال مقطوع"
|
||||||
|
|
||||||
@@ -344,16 +426,39 @@ msgstr "انسخ محتوى <0>docker-compose.yml</0> للوكيل أدناه،
|
|||||||
msgid "Copy YAML"
|
msgid "Copy YAML"
|
||||||
msgstr "نسخ YAML"
|
msgstr "نسخ YAML"
|
||||||
|
|
||||||
|
#: src/components/containers-table/containers-table-columns.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table-columns.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
msgid "CPU"
|
msgid "CPU"
|
||||||
msgstr "المعالج"
|
msgstr "المعالج"
|
||||||
|
|
||||||
|
#: src/components/routes/system/cpu-sheet.tsx
|
||||||
|
msgid "CPU Cores"
|
||||||
|
msgstr "نوى المعالج"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table-columns.tsx
|
||||||
|
msgid "CPU Peak"
|
||||||
|
msgstr "ذروة المعالج"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "CPU time"
|
||||||
|
msgstr "وقت المعالج"
|
||||||
|
|
||||||
|
#: src/components/routes/system/cpu-sheet.tsx
|
||||||
|
msgid "CPU Time Breakdown"
|
||||||
|
msgstr "تفصيل وقت المعالج"
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
|
#: src/components/routes/system/cpu-sheet.tsx
|
||||||
#: src/lib/alerts.ts
|
#: src/lib/alerts.ts
|
||||||
msgid "CPU Usage"
|
msgid "CPU Usage"
|
||||||
msgstr "استخدام وحدة المعالجة المركزية"
|
msgstr "استخدام وحدة المعالجة المركزية"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "Create"
|
||||||
|
msgstr "إنشاء"
|
||||||
|
|
||||||
#: src/components/login/auth-form.tsx
|
#: src/components/login/auth-form.tsx
|
||||||
msgid "Create account"
|
msgid "Create account"
|
||||||
msgstr "إنشاء حساب"
|
msgstr "إنشاء حساب"
|
||||||
@@ -380,16 +485,23 @@ msgstr "الرفع التراكمي"
|
|||||||
msgid "Current state"
|
msgid "Current state"
|
||||||
msgstr "الحالة الحالية"
|
msgstr "الحالة الحالية"
|
||||||
|
|
||||||
#: src/components/command-palette.tsx
|
#. Power Cycles
|
||||||
#: src/components/routes/home.tsx
|
#: src/components/routes/system/smart-table.tsx
|
||||||
msgid "Dashboard"
|
msgid "Cycles"
|
||||||
msgstr "لوحة التحكم"
|
msgstr "الدورات"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "Daily"
|
||||||
|
msgstr "يوميًا"
|
||||||
|
|
||||||
#: src/components/routes/settings/general.tsx
|
#: src/components/routes/settings/general.tsx
|
||||||
msgid "Default time period"
|
msgid "Default time period"
|
||||||
msgstr "الفترة الزمنية الافتراضية"
|
msgstr "الفترة الزمنية الافتراضية"
|
||||||
|
|
||||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
msgid "Delete"
|
msgid "Delete"
|
||||||
msgstr "حذف"
|
msgstr "حذف"
|
||||||
@@ -398,6 +510,18 @@ msgstr "حذف"
|
|||||||
msgid "Delete fingerprint"
|
msgid "Delete fingerprint"
|
||||||
msgstr "حذف البصمة"
|
msgstr "حذف البصمة"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Description"
|
||||||
|
msgstr "الوصف"
|
||||||
|
|
||||||
|
#: src/components/containers-table/containers-table.tsx
|
||||||
|
msgid "Detail"
|
||||||
|
msgstr "التفاصيل"
|
||||||
|
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
msgid "Device"
|
||||||
|
msgstr "الجهاز"
|
||||||
|
|
||||||
#. Context: Battery state
|
#. Context: Battery state
|
||||||
#: src/lib/i18n.ts
|
#: src/lib/i18n.ts
|
||||||
msgid "Discharging"
|
msgid "Discharging"
|
||||||
@@ -438,6 +562,7 @@ msgid "Docker Network I/O"
|
|||||||
msgstr "إدخال/إخراج الشبكة للدوكر"
|
msgstr "إدخال/إخراج الشبكة للدوكر"
|
||||||
|
|
||||||
#: src/components/command-palette.tsx
|
#: src/components/command-palette.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
msgid "Documentation"
|
msgid "Documentation"
|
||||||
msgstr "التوثيق"
|
msgstr "التوثيق"
|
||||||
|
|
||||||
@@ -461,11 +586,16 @@ msgstr "تنزيل"
|
|||||||
msgid "Duration"
|
msgid "Duration"
|
||||||
msgstr "المدة"
|
msgstr "المدة"
|
||||||
|
|
||||||
#: src/components/add-system.tsx
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
msgid "Edit"
|
msgid "Edit"
|
||||||
msgstr "تعديل"
|
msgstr "تعديل"
|
||||||
|
|
||||||
|
#: src/components/add-system.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "Edit {foo}"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/components/login/auth-form.tsx
|
#: src/components/login/auth-form.tsx
|
||||||
#: src/components/login/forgot-pass-form.tsx
|
#: src/components/login/forgot-pass-form.tsx
|
||||||
#: src/components/login/otp-forms.tsx
|
#: src/components/login/otp-forms.tsx
|
||||||
@@ -481,6 +611,11 @@ msgstr "إشعارات البريد الإشباكي"
|
|||||||
msgid "Empty"
|
msgid "Empty"
|
||||||
msgstr "فارغة"
|
msgstr "فارغة"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "End Time"
|
||||||
|
msgstr "وقت النهاية"
|
||||||
|
|
||||||
#: src/components/login/login.tsx
|
#: src/components/login/login.tsx
|
||||||
msgid "Enter email address to reset password"
|
msgid "Enter email address to reset password"
|
||||||
msgstr "أدخل عنوان البريد الإشباكي لإعادة تعيين كلمة المرور"
|
msgstr "أدخل عنوان البريد الإشباكي لإعادة تعيين كلمة المرور"
|
||||||
@@ -497,21 +632,32 @@ msgstr "أدخل كلمة المرور لمرة واحدة الخاصة بك."
|
|||||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||||
#: src/components/routes/settings/config-yaml.tsx
|
#: src/components/routes/settings/config-yaml.tsx
|
||||||
#: src/components/routes/settings/notifications.tsx
|
#: src/components/routes/settings/notifications.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
msgid "Error"
|
msgid "Error"
|
||||||
msgstr "خطأ"
|
msgstr "خطأ"
|
||||||
|
|
||||||
#. placeholder {0}: alert.value
|
#. placeholder {0}: alert.value
|
||||||
#. placeholder {1}: info.unit
|
#. placeholder {1}: info.unit
|
||||||
#. placeholder {2}: alert.min
|
#. placeholder {2}: alert.min
|
||||||
#: src/components/routes/home.tsx
|
#: src/components/active-alerts.tsx
|
||||||
msgid "Exceeds {0}{1} in last {2, plural, one {# minute} other {# minutes}}"
|
msgid "Exceeds {0}{1} in last {2, plural, one {# minute} other {# minutes}}"
|
||||||
msgstr "يتجاوز {0}{1} في آخر {2, plural, one {# دقيقة} other {# دقائق}}"
|
msgstr "يتجاوز {0}{1} في آخر {2, plural, one {# دقيقة} other {# دقائق}}"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Exec main PID"
|
||||||
|
msgstr "معرف العملية الرئيسي للتنفيذ"
|
||||||
|
|
||||||
#: src/components/routes/settings/config-yaml.tsx
|
#: src/components/routes/settings/config-yaml.tsx
|
||||||
msgid "Existing systems not defined in <0>config.yml</0> will be deleted. Please make regular backups."
|
msgid "Existing systems not defined in <0>config.yml</0> will be deleted. Please make regular backups."
|
||||||
msgstr "سيتم حذف الأنظمة الحالية غير المعرفة في <0>config.yml</0>. يرجى عمل نسخ احتياطية بانتظام."
|
msgstr "سيتم حذف الأنظمة الحالية غير المعرفة في <0>config.yml</0>. يرجى عمل نسخ احتياطية بانتظام."
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Exited active"
|
||||||
|
msgstr "خرج نشطًا"
|
||||||
|
|
||||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||||
msgid "Export"
|
msgid "Export"
|
||||||
msgstr "تصدير"
|
msgstr "تصدير"
|
||||||
@@ -528,12 +674,21 @@ msgstr "تصدير تكوين الأنظمة الحالية الخاصة بك."
|
|||||||
msgid "Fahrenheit (°F)"
|
msgid "Fahrenheit (°F)"
|
||||||
msgstr "فهرنهايت (°ف)"
|
msgstr "فهرنهايت (°ف)"
|
||||||
|
|
||||||
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
|
msgid "Failed"
|
||||||
|
msgstr "فشل"
|
||||||
|
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
msgid "Failed Attributes:"
|
||||||
|
msgstr "السمات الفاشلة:"
|
||||||
|
|
||||||
#: src/lib/api.ts
|
#: src/lib/api.ts
|
||||||
msgid "Failed to authenticate"
|
msgid "Failed to authenticate"
|
||||||
msgstr "فشل في المصادقة"
|
msgstr "فشل في المصادقة"
|
||||||
|
|
||||||
#: src/components/routes/settings/layout.tsx
|
#: src/components/routes/settings/layout.tsx
|
||||||
#: src/components/routes/settings/notifications.tsx
|
#: src/components/routes/settings/notifications.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
msgid "Failed to save settings"
|
msgid "Failed to save settings"
|
||||||
msgstr "فشل في حفظ الإعدادات"
|
msgstr "فشل في حفظ الإعدادات"
|
||||||
|
|
||||||
@@ -545,8 +700,16 @@ msgstr "فشل في إرسال إشعار الاختبار"
|
|||||||
msgid "Failed to update alert"
|
msgid "Failed to update alert"
|
||||||
msgstr "فشل في تحديث التنبيه"
|
msgstr "فشل في تحديث التنبيه"
|
||||||
|
|
||||||
|
#. placeholder {0}: statusTotals[ServiceStatus.Failed]
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Failed: {0}"
|
||||||
|
msgstr "فشل: {0}"
|
||||||
|
|
||||||
|
#: src/components/containers-table/containers-table.tsx
|
||||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
#: src/components/systems-table/systems-table.tsx
|
#: src/components/systems-table/systems-table.tsx
|
||||||
msgid "Filter..."
|
msgid "Filter..."
|
||||||
msgstr "تصفية..."
|
msgstr "تصفية..."
|
||||||
@@ -555,6 +718,10 @@ msgstr "تصفية..."
|
|||||||
msgid "Fingerprint"
|
msgid "Fingerprint"
|
||||||
msgstr "البصمة"
|
msgstr "البصمة"
|
||||||
|
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
msgid "Firmware"
|
||||||
|
msgstr "البرمجيات الثابتة"
|
||||||
|
|
||||||
#: src/components/alerts/alerts-sheet.tsx
|
#: src/components/alerts/alerts-sheet.tsx
|
||||||
msgid "For <0>{min}</0> {min, plural, one {minute} other {minutes}}"
|
msgid "For <0>{min}</0> {min, plural, one {minute} other {minutes}}"
|
||||||
msgstr "لمدة <0>{min}</0> {min, plural, one {دقيقة} other {دقائق}}"
|
msgstr "لمدة <0>{min}</0> {min, plural, one {دقيقة} other {دقائق}}"
|
||||||
@@ -580,6 +747,10 @@ msgstr "ممتلئة"
|
|||||||
msgid "General"
|
msgid "General"
|
||||||
msgstr "عام"
|
msgstr "عام"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "Global"
|
||||||
|
msgstr "عالمي"
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
msgid "GPU Engines"
|
msgid "GPU Engines"
|
||||||
msgstr "محركات GPU"
|
msgstr "محركات GPU"
|
||||||
@@ -588,10 +759,18 @@ msgstr "محركات GPU"
|
|||||||
msgid "GPU Power Draw"
|
msgid "GPU Power Draw"
|
||||||
msgstr "استهلاك طاقة وحدة معالجة الرسوميات"
|
msgstr "استهلاك طاقة وحدة معالجة الرسوميات"
|
||||||
|
|
||||||
|
#: src/lib/alerts.ts
|
||||||
|
msgid "GPU Usage"
|
||||||
|
msgstr "استخدام وحدة معالجة الرسوميات"
|
||||||
|
|
||||||
#: src/components/systems-table/systems-table.tsx
|
#: src/components/systems-table/systems-table.tsx
|
||||||
msgid "Grid"
|
msgid "Grid"
|
||||||
msgstr "شبكة"
|
msgstr "شبكة"
|
||||||
|
|
||||||
|
#: src/components/containers-table/containers-table-columns.tsx
|
||||||
|
msgid "Health"
|
||||||
|
msgstr "الصحة"
|
||||||
|
|
||||||
#: src/components/add-system.tsx
|
#: src/components/add-system.tsx
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
msgctxt "Button to copy install command"
|
msgctxt "Button to copy install command"
|
||||||
@@ -611,6 +790,15 @@ msgstr "خاملة"
|
|||||||
msgid "If you've lost the password to your admin account, you may reset it using the following command."
|
msgid "If you've lost the password to your admin account, you may reset it using the following command."
|
||||||
msgstr "إذا فقدت كلمة المرور لحساب المسؤول الخاص بك، يمكنك إعادة تعيينها باستخدام الأمر التالي."
|
msgstr "إذا فقدت كلمة المرور لحساب المسؤول الخاص بك، يمكنك إعادة تعيينها باستخدام الأمر التالي."
|
||||||
|
|
||||||
|
#: src/components/containers-table/containers-table-columns.tsx
|
||||||
|
msgctxt "Docker image"
|
||||||
|
msgid "Image"
|
||||||
|
msgstr "صورة"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "Inactive"
|
||||||
|
msgstr "غير نشط"
|
||||||
|
|
||||||
#: src/components/login/auth-form.tsx
|
#: src/components/login/auth-form.tsx
|
||||||
msgid "Invalid email address."
|
msgid "Invalid email address."
|
||||||
msgstr "عنوان البريد الإشباكي غير صالح."
|
msgstr "عنوان البريد الإشباكي غير صالح."
|
||||||
@@ -628,6 +816,19 @@ msgstr "اللغة"
|
|||||||
msgid "Layout"
|
msgid "Layout"
|
||||||
msgstr "التخطيط"
|
msgstr "التخطيط"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/general.tsx
|
||||||
|
msgid "Layout width"
|
||||||
|
msgstr "عرض التخطيط"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Lifecycle"
|
||||||
|
msgstr "دورة الحياة"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "limit"
|
||||||
|
msgstr "الحد"
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
msgid "Load Average"
|
msgid "Load Average"
|
||||||
msgstr "متوسط التحميل"
|
msgstr "متوسط التحميل"
|
||||||
@@ -649,6 +850,14 @@ msgstr "متوسط التحميل 5 دقائق"
|
|||||||
msgid "Load Avg"
|
msgid "Load Avg"
|
||||||
msgstr "متوسط التحميل"
|
msgstr "متوسط التحميل"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Load state"
|
||||||
|
msgstr "حالة التحميل"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Loading..."
|
||||||
|
msgstr "جاري التحميل..."
|
||||||
|
|
||||||
#: src/components/navbar.tsx
|
#: src/components/navbar.tsx
|
||||||
msgid "Log Out"
|
msgid "Log Out"
|
||||||
msgstr "تسجيل الخروج"
|
msgstr "تسجيل الخروج"
|
||||||
@@ -663,6 +872,7 @@ msgid "Login attempt failed"
|
|||||||
msgstr "فشل محاولة تسجيل الدخول"
|
msgstr "فشل محاولة تسجيل الدخول"
|
||||||
|
|
||||||
#: src/components/command-palette.tsx
|
#: src/components/command-palette.tsx
|
||||||
|
#: src/components/containers-table/containers-table.tsx
|
||||||
#: src/components/navbar.tsx
|
#: src/components/navbar.tsx
|
||||||
msgid "Logs"
|
msgid "Logs"
|
||||||
msgstr "السجلات"
|
msgstr "السجلات"
|
||||||
@@ -671,6 +881,10 @@ msgstr "السجلات"
|
|||||||
msgid "Looking instead for where to create alerts? Click the bell <0/> icons in the systems table."
|
msgid "Looking instead for where to create alerts? Click the bell <0/> icons in the systems table."
|
||||||
msgstr "هل تبحث عن مكان لإنشاء التنبيهات؟ انقر على أيقونات الجرس <0/> في جدول الأنظمة."
|
msgstr "هل تبحث عن مكان لإنشاء التنبيهات؟ انقر على أيقونات الجرس <0/> في جدول الأنظمة."
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Main PID"
|
||||||
|
msgstr "معرف العملية الرئيسي"
|
||||||
|
|
||||||
#: src/components/routes/settings/layout.tsx
|
#: src/components/routes/settings/layout.tsx
|
||||||
msgid "Manage display and notification preferences."
|
msgid "Manage display and notification preferences."
|
||||||
msgstr "إدارة تفضيلات العرض والإشعارات."
|
msgstr "إدارة تفضيلات العرض والإشعارات."
|
||||||
@@ -685,10 +899,22 @@ msgstr "تعليمات الإعداد اليدوي"
|
|||||||
msgid "Max 1 min"
|
msgid "Max 1 min"
|
||||||
msgstr "الحد الأقصى دقيقة"
|
msgstr "الحد الأقصى دقيقة"
|
||||||
|
|
||||||
|
#: src/components/containers-table/containers-table-columns.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table-columns.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
msgid "Memory"
|
msgid "Memory"
|
||||||
msgstr "الذاكرة"
|
msgstr "الذاكرة"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Memory limit"
|
||||||
|
msgstr "حد الذاكرة"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table-columns.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Memory Peak"
|
||||||
|
msgstr "ذروة الذاكرة"
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
#: src/lib/alerts.ts
|
#: src/lib/alerts.ts
|
||||||
msgid "Memory Usage"
|
msgid "Memory Usage"
|
||||||
@@ -698,11 +924,19 @@ msgstr "استخدام الذاكرة"
|
|||||||
msgid "Memory usage of docker containers"
|
msgid "Memory usage of docker containers"
|
||||||
msgstr "استخدام الذاكرة لحاويات دوكر"
|
msgstr "استخدام الذاكرة لحاويات دوكر"
|
||||||
|
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
msgid "Model"
|
||||||
|
msgstr "الموديل"
|
||||||
|
|
||||||
#: src/components/add-system.tsx
|
#: src/components/add-system.tsx
|
||||||
#: src/components/alerts-history-columns.tsx
|
#: src/components/alerts-history-columns.tsx
|
||||||
|
#: src/components/containers-table/containers-table-columns.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table-columns.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
msgid "Name"
|
msgid "Name"
|
||||||
msgstr "الاسم"
|
msgstr "الاسم"
|
||||||
|
|
||||||
|
#: src/components/containers-table/containers-table-columns.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
msgid "Net"
|
msgid "Net"
|
||||||
msgstr "الشبكة"
|
msgstr "الشبكة"
|
||||||
@@ -714,6 +948,7 @@ msgstr "حركة مرور الشبكة لحاويات الدوكر"
|
|||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
#: src/components/routes/system/network-sheet.tsx
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
#: src/components/routes/system/network-sheet.tsx
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
msgid "Network traffic of public interfaces"
|
msgid "Network traffic of public interfaces"
|
||||||
msgstr "حركة مرور الشبكة للواجهات العامة"
|
msgstr "حركة مرور الشبكة للواجهات العامة"
|
||||||
|
|
||||||
@@ -722,14 +957,30 @@ msgstr "حركة مرور الشبكة للواجهات العامة"
|
|||||||
msgid "Network unit"
|
msgid "Network unit"
|
||||||
msgstr "وحدة الشبكة"
|
msgstr "وحدة الشبكة"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "No"
|
||||||
|
msgstr "لا"
|
||||||
|
|
||||||
#: src/components/command-palette.tsx
|
#: src/components/command-palette.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
msgid "No results found."
|
msgid "No results found."
|
||||||
msgstr "لم يتم العثور على نتائج."
|
msgstr "لم يتم العثور على نتائج."
|
||||||
|
|
||||||
|
#: src/components/containers-table/containers-table.tsx
|
||||||
|
#: src/components/containers-table/containers-table.tsx
|
||||||
|
#: src/components/containers-table/containers-table.tsx
|
||||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
msgid "No results."
|
msgid "No results."
|
||||||
msgstr "لا توجد نتائج."
|
msgstr "لا توجد نتائج."
|
||||||
|
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
msgid "No S.M.A.R.T. attributes available for this device."
|
||||||
|
msgstr "لا توجد سمات S.M.A.R.T. متاحة لهذا الجهاز."
|
||||||
|
|
||||||
#: src/components/systems-table/systems-table.tsx
|
#: src/components/systems-table/systems-table.tsx
|
||||||
#: src/components/systems-table/systems-table.tsx
|
#: src/components/systems-table/systems-table.tsx
|
||||||
msgid "No systems found."
|
msgid "No systems found."
|
||||||
@@ -749,12 +1000,19 @@ msgstr "دعم OAuth 2 / OIDC"
|
|||||||
msgid "On each restart, systems in the database will be updated to match the systems defined in the file."
|
msgid "On each restart, systems in the database will be updated to match the systems defined in the file."
|
||||||
msgstr "في كل إعادة تشغيل، سيتم تحديث الأنظمة في قاعدة البيانات لتتطابق مع الأنظمة المعرفة في الملف."
|
msgstr "في كل إعادة تشغيل، سيتم تحديث الأنظمة في قاعدة البيانات لتتطابق مع الأنظمة المعرفة في الملف."
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "One-time"
|
||||||
|
msgstr "مرة واحدة"
|
||||||
|
|
||||||
#: src/components/login/auth-form.tsx
|
#: src/components/login/auth-form.tsx
|
||||||
msgid "One-time password"
|
msgid "One-time password"
|
||||||
msgstr "كلمة مرور لمرة واحدة"
|
msgstr "كلمة مرور لمرة واحدة"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
msgid "Open menu"
|
msgid "Open menu"
|
||||||
msgstr "فتح القائمة"
|
msgstr "فتح القائمة"
|
||||||
@@ -763,10 +1021,16 @@ msgstr "فتح القائمة"
|
|||||||
msgid "Or continue with"
|
msgid "Or continue with"
|
||||||
msgstr "أو المتابعة باستخدام"
|
msgstr "أو المتابعة باستخدام"
|
||||||
|
|
||||||
|
#: src/components/routes/system/cpu-sheet.tsx
|
||||||
|
msgid "Other"
|
||||||
|
msgstr "أخرى"
|
||||||
|
|
||||||
#: src/components/alerts/alerts-sheet.tsx
|
#: src/components/alerts/alerts-sheet.tsx
|
||||||
msgid "Overwrite existing alerts"
|
msgid "Overwrite existing alerts"
|
||||||
msgstr "الكتابة فوق التنبيهات الحالية"
|
msgstr "الكتابة فوق التنبيهات الحالية"
|
||||||
|
|
||||||
|
#: src/components/command-palette.tsx
|
||||||
|
#: src/components/command-palette.tsx
|
||||||
#: src/components/command-palette.tsx
|
#: src/components/command-palette.tsx
|
||||||
msgid "Page"
|
msgid "Page"
|
||||||
msgstr "صفحة"
|
msgstr "صفحة"
|
||||||
@@ -798,6 +1062,10 @@ msgstr "يجب أن تكون كلمة المرور أقل من 72 بايت."
|
|||||||
msgid "Password reset request received"
|
msgid "Password reset request received"
|
||||||
msgstr "تم استلام طلب إعادة تعيين كلمة المرور"
|
msgstr "تم استلام طلب إعادة تعيين كلمة المرور"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "Past"
|
||||||
|
msgstr "الماضي"
|
||||||
|
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
msgid "Pause"
|
msgid "Pause"
|
||||||
msgstr "إيقاف مؤقت"
|
msgstr "إيقاف مؤقت"
|
||||||
@@ -810,6 +1078,15 @@ msgstr "متوقف مؤقتا"
|
|||||||
msgid "Paused ({pausedSystemsLength})"
|
msgid "Paused ({pausedSystemsLength})"
|
||||||
msgstr "متوقف مؤقتا ({pausedSystemsLength})"
|
msgstr "متوقف مؤقتا ({pausedSystemsLength})"
|
||||||
|
|
||||||
|
#: src/components/routes/system/cpu-sheet.tsx
|
||||||
|
#: src/components/routes/system/cpu-sheet.tsx
|
||||||
|
msgid "Per-core average utilization"
|
||||||
|
msgstr "متوسط الاستخدام لكل نواة"
|
||||||
|
|
||||||
|
#: src/components/routes/system/cpu-sheet.tsx
|
||||||
|
msgid "Percentage of time spent in each state"
|
||||||
|
msgstr "النسبة المئوية للوقت المقضي في كل حالة"
|
||||||
|
|
||||||
#: src/components/routes/settings/notifications.tsx
|
#: src/components/routes/settings/notifications.tsx
|
||||||
msgid "Please <0>configure an SMTP server</0> to ensure alerts are delivered."
|
msgid "Please <0>configure an SMTP server</0> to ensure alerts are delivered."
|
||||||
msgstr "يرجى <0>تكوين خادم SMTP</0> لضمان تسليم التنبيهات."
|
msgstr "يرجى <0>تكوين خادم SMTP</0> لضمان تسليم التنبيهات."
|
||||||
@@ -847,6 +1124,11 @@ msgstr "يرجى تسجيل الدخول إلى حسابك"
|
|||||||
msgid "Port"
|
msgid "Port"
|
||||||
msgstr "المنفذ"
|
msgstr "المنفذ"
|
||||||
|
|
||||||
|
#. Power On Time
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
msgid "Power On"
|
||||||
|
msgstr "تشغيل الطاقة"
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
msgid "Precise utilization at the recorded time"
|
msgid "Precise utilization at the recorded time"
|
||||||
@@ -856,11 +1138,19 @@ msgstr "الاستخدام الدقيق في الوقت المسجل"
|
|||||||
msgid "Preferred Language"
|
msgid "Preferred Language"
|
||||||
msgstr "اللغة المفضلة"
|
msgstr "اللغة المفضلة"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Process started"
|
||||||
|
msgstr "تم بدء العملية"
|
||||||
|
|
||||||
#. Use 'Key' if your language requires many more characters
|
#. Use 'Key' if your language requires many more characters
|
||||||
#: src/components/add-system.tsx
|
#: src/components/add-system.tsx
|
||||||
msgid "Public Key"
|
msgid "Public Key"
|
||||||
msgstr "المفتاح العام"
|
msgstr "المفتاح العام"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "Quiet Hours"
|
||||||
|
msgstr "ساعات الهدوء"
|
||||||
|
|
||||||
#. Disk read
|
#. Disk read
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
@@ -871,6 +1161,16 @@ msgstr "قراءة"
|
|||||||
msgid "Received"
|
msgid "Received"
|
||||||
msgstr "تم الاستلام"
|
msgstr "تم الاستلام"
|
||||||
|
|
||||||
|
#: src/components/containers-table/containers-table.tsx
|
||||||
|
#: src/components/containers-table/containers-table.tsx
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
msgid "Refresh"
|
||||||
|
msgstr "تحديث"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Relationships"
|
||||||
|
msgstr "العلاقات"
|
||||||
|
|
||||||
#: src/components/login/login.tsx
|
#: src/components/login/login.tsx
|
||||||
msgid "Request a one-time password"
|
msgid "Request a one-time password"
|
||||||
msgstr "طلب كلمة مرور لمرة واحدة"
|
msgstr "طلب كلمة مرور لمرة واحدة"
|
||||||
@@ -879,6 +1179,14 @@ msgstr "طلب كلمة مرور لمرة واحدة"
|
|||||||
msgid "Request OTP"
|
msgid "Request OTP"
|
||||||
msgstr "طلب OTP"
|
msgstr "طلب OTP"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Required by"
|
||||||
|
msgstr "مطلوب من قبل"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Requires"
|
||||||
|
msgstr "يتطلب"
|
||||||
|
|
||||||
#: src/components/login/forgot-pass-form.tsx
|
#: src/components/login/forgot-pass-form.tsx
|
||||||
msgid "Reset Password"
|
msgid "Reset Password"
|
||||||
msgstr "إعادة تعيين كلمة المرور"
|
msgstr "إعادة تعيين كلمة المرور"
|
||||||
@@ -889,10 +1197,19 @@ msgstr "إعادة تعيين كلمة المرور"
|
|||||||
msgid "Resolved"
|
msgid "Resolved"
|
||||||
msgstr "تم حلها"
|
msgstr "تم حلها"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Restarts"
|
||||||
|
msgstr "إعادة التشغيل"
|
||||||
|
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
msgid "Resume"
|
msgid "Resume"
|
||||||
msgstr "استئناف"
|
msgstr "استئناف"
|
||||||
|
|
||||||
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
|
msgctxt "Root disk label"
|
||||||
|
msgid "Root"
|
||||||
|
msgstr "الجذر"
|
||||||
|
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
msgid "Rotate token"
|
msgid "Rotate token"
|
||||||
msgstr "تدوير الرمز المميز"
|
msgstr "تدوير الرمز المميز"
|
||||||
@@ -901,6 +1218,18 @@ msgstr "تدوير الرمز المميز"
|
|||||||
msgid "Rows per page"
|
msgid "Rows per page"
|
||||||
msgstr "صفوف لكل صفحة"
|
msgstr "صفوف لكل صفحة"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Runtime Metrics"
|
||||||
|
msgstr "مقاييس وقت التشغيل"
|
||||||
|
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
msgid "S.M.A.R.T. Details"
|
||||||
|
msgstr "تفاصيل S.M.A.R.T."
|
||||||
|
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
msgid "S.M.A.R.T. Self-Test"
|
||||||
|
msgstr "اختبار S.M.A.R.T. الذاتي"
|
||||||
|
|
||||||
#: src/components/routes/settings/notifications.tsx
|
#: src/components/routes/settings/notifications.tsx
|
||||||
msgid "Save address using enter key or comma. Leave blank to disable email notifications."
|
msgid "Save address using enter key or comma. Leave blank to disable email notifications."
|
||||||
msgstr "احفظ العنوان باستخدام مفتاح الإدخال أو الفاصلة. اتركه فارغًا لتعطيل إشعارات البريد الإشباكي."
|
msgstr "احفظ العنوان باستخدام مفتاح الإدخال أو الفاصلة. اتركه فارغًا لتعطيل إشعارات البريد الإشباكي."
|
||||||
@@ -914,6 +1243,18 @@ msgstr "حفظ الإعدادات"
|
|||||||
msgid "Save system"
|
msgid "Save system"
|
||||||
msgstr "احفظ النظام"
|
msgstr "احفظ النظام"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "Schedule"
|
||||||
|
msgstr "جدولة"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "Schedule quiet hours where notifications will not be sent, such as during maintenance periods."
|
||||||
|
msgstr "جدولة ساعات الهدوء حيث لن يتم إرسال الإشعارات، مثل أثناء فترات الصيانة."
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "Schedule quiet hours where notifications will not be sent."
|
||||||
|
msgstr "جدولة ساعات الهدوء حيث لن يتم إرسال الإشعارات."
|
||||||
|
|
||||||
#: src/components/navbar.tsx
|
#: src/components/navbar.tsx
|
||||||
msgid "Search"
|
msgid "Search"
|
||||||
msgstr "بحث"
|
msgstr "بحث"
|
||||||
@@ -926,10 +1267,26 @@ msgstr "البحث عن الأنظمة أو الإعدادات..."
|
|||||||
msgid "See <0>notification settings</0> to configure how you receive alerts."
|
msgid "See <0>notification settings</0> to configure how you receive alerts."
|
||||||
msgstr "راجع <0>إعدادات الإشعارات</0> لتكوين كيفية تلقي التنبيهات."
|
msgstr "راجع <0>إعدادات الإشعارات</0> لتكوين كيفية تلقي التنبيهات."
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "Select {foo}"
|
||||||
|
msgstr "تحديد {foo}"
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
msgid "Sent"
|
msgid "Sent"
|
||||||
msgstr "تم الإرسال"
|
msgstr "تم الإرسال"
|
||||||
|
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
msgid "Serial Number"
|
||||||
|
msgstr "الرقم التسلسلي"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Service Details"
|
||||||
|
msgstr "تفاصيل الخدمة"
|
||||||
|
|
||||||
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
|
msgid "Services"
|
||||||
|
msgstr "الخدمات"
|
||||||
|
|
||||||
#: src/components/routes/settings/general.tsx
|
#: src/components/routes/settings/general.tsx
|
||||||
msgid "Set percentage thresholds for meter colors."
|
msgid "Set percentage thresholds for meter colors."
|
||||||
msgstr "تعيين عتبات النسبة المئوية لألوان العداد."
|
msgstr "تعيين عتبات النسبة المئوية لألوان العداد."
|
||||||
@@ -957,16 +1314,30 @@ msgstr "إعدادات SMTP"
|
|||||||
msgid "Sort By"
|
msgid "Sort By"
|
||||||
msgstr "الترتيب حسب"
|
msgstr "الترتيب حسب"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "Start Time"
|
||||||
|
msgstr "وقت البدء"
|
||||||
|
|
||||||
#. Context: alert state (active or resolved)
|
#. Context: alert state (active or resolved)
|
||||||
#: src/components/alerts-history-columns.tsx
|
#: src/components/alerts-history-columns.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table-columns.tsx
|
||||||
msgid "State"
|
msgid "State"
|
||||||
msgstr "الحالة"
|
msgstr "الحالة"
|
||||||
|
|
||||||
|
#: src/components/containers-table/containers-table-columns.tsx
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
#: src/components/systems-table/systems-table.tsx
|
#: src/components/systems-table/systems-table.tsx
|
||||||
#: src/lib/alerts.ts
|
#: src/lib/alerts.ts
|
||||||
msgid "Status"
|
msgid "Status"
|
||||||
msgstr "الحالة"
|
msgstr "الحالة"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table-columns.tsx
|
||||||
|
msgid "Sub State"
|
||||||
|
msgstr "الحالة الفرعية"
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
msgid "Swap space used by the system"
|
msgid "Swap space used by the system"
|
||||||
msgstr "مساحة التبديل المستخدمة من قبل النظام"
|
msgstr "مساحة التبديل المستخدمة من قبل النظام"
|
||||||
@@ -975,8 +1346,15 @@ msgstr "مساحة التبديل المستخدمة من قبل النظام"
|
|||||||
msgid "Swap Usage"
|
msgid "Swap Usage"
|
||||||
msgstr "استخدام التبديل"
|
msgstr "استخدام التبديل"
|
||||||
|
|
||||||
|
#: src/components/add-system.tsx
|
||||||
#: src/components/alerts-history-columns.tsx
|
#: src/components/alerts-history-columns.tsx
|
||||||
|
#: src/components/containers-table/containers-table-columns.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
#: src/lib/alerts.ts
|
#: src/lib/alerts.ts
|
||||||
msgid "System"
|
msgid "System"
|
||||||
@@ -986,6 +1364,10 @@ msgstr "النظام"
|
|||||||
msgid "System load averages over time"
|
msgid "System load averages over time"
|
||||||
msgstr "متوسط تحميل النظام مع مرور الوقت"
|
msgstr "متوسط تحميل النظام مع مرور الوقت"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Systemd Services"
|
||||||
|
msgstr "خدمات systemd"
|
||||||
|
|
||||||
#: src/components/navbar.tsx
|
#: src/components/navbar.tsx
|
||||||
msgid "Systems"
|
msgid "Systems"
|
||||||
msgstr "الأنظمة"
|
msgstr "الأنظمة"
|
||||||
@@ -998,7 +1380,12 @@ msgstr "يمكن إدارة الأنظمة في ملف <0>config.yml</0> داخ
|
|||||||
msgid "Table"
|
msgid "Table"
|
||||||
msgstr "جدول"
|
msgstr "جدول"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Tasks"
|
||||||
|
msgstr "المهام"
|
||||||
|
|
||||||
#. Temperature label in systems table
|
#. Temperature label in systems table
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
msgid "Temp"
|
msgid "Temp"
|
||||||
msgstr "درجة الحرارة"
|
msgstr "درجة الحرارة"
|
||||||
@@ -1080,6 +1467,11 @@ msgstr "تسمح الرموز المميزة للوكلاء بالاتصال و
|
|||||||
msgid "Tokens and fingerprints are used to authenticate WebSocket connections to the hub."
|
msgid "Tokens and fingerprints are used to authenticate WebSocket connections to the hub."
|
||||||
msgstr "تُستخدم الرموز المميزة والبصمات للمصادقة على اتصالات WebSocket إلى المحور."
|
msgstr "تُستخدم الرموز المميزة والبصمات للمصادقة على اتصالات WebSocket إلى المحور."
|
||||||
|
|
||||||
|
#: src/components/ui/chart.tsx
|
||||||
|
#: src/components/ui/chart.tsx
|
||||||
|
msgid "Total"
|
||||||
|
msgstr "الإجمالي"
|
||||||
|
|
||||||
#: src/components/routes/system/network-sheet.tsx
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
msgid "Total data received for each interface"
|
msgid "Total data received for each interface"
|
||||||
msgstr "إجمالي البيانات المستلمة لكل واجهة"
|
msgstr "إجمالي البيانات المستلمة لكل واجهة"
|
||||||
@@ -1088,6 +1480,19 @@ msgstr "إجمالي البيانات المستلمة لكل واجهة"
|
|||||||
msgid "Total data sent for each interface"
|
msgid "Total data sent for each interface"
|
||||||
msgstr "إجمالي البيانات المرسلة لكل واجهة"
|
msgstr "إجمالي البيانات المرسلة لكل واجهة"
|
||||||
|
|
||||||
|
#. placeholder {0}: data.length
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Total: {0}"
|
||||||
|
msgstr "الإجمالي: {0}"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Triggered by"
|
||||||
|
msgstr "تم التفعيل بواسطة"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Triggers"
|
||||||
|
msgstr "المحفزات"
|
||||||
|
|
||||||
#: src/lib/alerts.ts
|
#: src/lib/alerts.ts
|
||||||
msgid "Triggers when 1 minute load average exceeds a threshold"
|
msgid "Triggers when 1 minute load average exceeds a threshold"
|
||||||
msgstr "يتم التفعيل عندما يتجاوز متوسط التحميل لمدة دقيقة واحدة عتبة معينة"
|
msgstr "يتم التفعيل عندما يتجاوز متوسط التحميل لمدة دقيقة واحدة عتبة معينة"
|
||||||
@@ -1112,6 +1517,10 @@ msgstr "يتم التفعيل عندما يتجاوز الجمع بين الصع
|
|||||||
msgid "Triggers when CPU usage exceeds a threshold"
|
msgid "Triggers when CPU usage exceeds a threshold"
|
||||||
msgstr "يتم التفعيل عندما يتجاوز استخدام وحدة المعالجة المركزية عتبة معينة"
|
msgstr "يتم التفعيل عندما يتجاوز استخدام وحدة المعالجة المركزية عتبة معينة"
|
||||||
|
|
||||||
|
#: src/lib/alerts.ts
|
||||||
|
msgid "Triggers when GPU usage exceeds a threshold"
|
||||||
|
msgstr "يتم التفعيل عندما يتجاوز استخدام وحدة معالجة الرسوميات عتبة معينة"
|
||||||
|
|
||||||
#: src/lib/alerts.ts
|
#: src/lib/alerts.ts
|
||||||
msgid "Triggers when memory usage exceeds a threshold"
|
msgid "Triggers when memory usage exceeds a threshold"
|
||||||
msgstr "يتم التفعيل عندما يتجاوز استخدام الذاكرة عتبة معينة"
|
msgstr "يتم التفعيل عندما يتجاوز استخدام الذاكرة عتبة معينة"
|
||||||
@@ -1124,6 +1533,16 @@ msgstr "يتم التفعيل عندما يتغير الحالة بين التش
|
|||||||
msgid "Triggers when usage of any disk exceeds a threshold"
|
msgid "Triggers when usage of any disk exceeds a threshold"
|
||||||
msgstr "يتم التفعيل عندما يتجاوز استخدام أي قرص عتبة معينة"
|
msgstr "يتم التفعيل عندما يتجاوز استخدام أي قرص عتبة معينة"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
msgid "Type"
|
||||||
|
msgstr "النوع"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Unit file"
|
||||||
|
msgstr "ملف الوحدة"
|
||||||
|
|
||||||
#. Temperature / network units
|
#. Temperature / network units
|
||||||
#: src/components/routes/settings/general.tsx
|
#: src/components/routes/settings/general.tsx
|
||||||
msgid "Unit preferences"
|
msgid "Unit preferences"
|
||||||
@@ -1139,6 +1558,11 @@ msgstr "رمز مميز عالمي"
|
|||||||
msgid "Unknown"
|
msgid "Unknown"
|
||||||
msgstr "غير معروفة"
|
msgstr "غير معروفة"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Unlimited"
|
||||||
|
msgstr "غير محدود"
|
||||||
|
|
||||||
#. Context: System is up
|
#. Context: System is up
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
@@ -1149,6 +1573,20 @@ msgstr "قيد التشغيل"
|
|||||||
msgid "Up ({upSystemsLength})"
|
msgid "Up ({upSystemsLength})"
|
||||||
msgstr "قيد التشغيل ({upSystemsLength})"
|
msgstr "قيد التشغيل ({upSystemsLength})"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "Update"
|
||||||
|
msgstr "تحديث"
|
||||||
|
|
||||||
|
#: src/components/containers-table/containers-table-columns.tsx
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table-columns.tsx
|
||||||
|
msgid "Updated"
|
||||||
|
msgstr "تم التحديث"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Updated every 10 minutes."
|
||||||
|
msgstr "يتم التحديث كل 10 دقائق."
|
||||||
|
|
||||||
#: src/components/routes/system/network-sheet.tsx
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
msgid "Upload"
|
msgid "Upload"
|
||||||
msgstr "رفع"
|
msgstr "رفع"
|
||||||
@@ -1161,6 +1599,7 @@ msgstr "مدة التشغيل"
|
|||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
|
#: src/components/routes/system/cpu-sheet.tsx
|
||||||
msgid "Usage"
|
msgid "Usage"
|
||||||
msgstr "الاستخدام"
|
msgstr "الاستخدام"
|
||||||
|
|
||||||
@@ -1186,6 +1625,7 @@ msgstr "القيمة"
|
|||||||
msgid "View"
|
msgid "View"
|
||||||
msgstr "عرض"
|
msgstr "عرض"
|
||||||
|
|
||||||
|
#: src/components/routes/system/cpu-sheet.tsx
|
||||||
#: src/components/routes/system/network-sheet.tsx
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
msgid "View more"
|
msgid "View more"
|
||||||
msgstr "عرض المزيد"
|
msgstr "عرض المزيد"
|
||||||
@@ -1206,6 +1646,10 @@ msgstr "في انتظار وجود سجلات كافية للعرض"
|
|||||||
msgid "Want to help improve our translations? Check <0>Crowdin</0> for details."
|
msgid "Want to help improve our translations? Check <0>Crowdin</0> for details."
|
||||||
msgstr "هل تريد مساعدتنا في تحسين ترجماتنا؟ تحقق من <0>Crowdin</0> لمزيد من التفاصيل."
|
msgstr "هل تريد مساعدتنا في تحسين ترجماتنا؟ تحقق من <0>Crowdin</0> لمزيد من التفاصيل."
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Wants"
|
||||||
|
msgstr "يريد"
|
||||||
|
|
||||||
#: src/components/routes/settings/general.tsx
|
#: src/components/routes/settings/general.tsx
|
||||||
msgid "Warning (%)"
|
msgid "Warning (%)"
|
||||||
msgstr "تحذير (%)"
|
msgstr "تحذير (%)"
|
||||||
@@ -1242,6 +1686,13 @@ msgstr "تكوين YAML"
|
|||||||
msgid "YAML Configuration"
|
msgid "YAML Configuration"
|
||||||
msgstr "تكوين YAML"
|
msgstr "تكوين YAML"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Yes"
|
||||||
|
msgstr "نعم"
|
||||||
|
|
||||||
#: src/components/routes/settings/layout.tsx
|
#: src/components/routes/settings/layout.tsx
|
||||||
msgid "Your user settings have been updated."
|
msgid "Your user settings have been updated."
|
||||||
msgstr "تم تحديث إعدادات المستخدم الخاصة بك."
|
msgstr "تم تحديث إعدادات المستخدم الخاصة بك."
|
||||||
|
|
||||||
|
|||||||
@@ -8,30 +8,15 @@ msgstr ""
|
|||||||
"Language: bg\n"
|
"Language: bg\n"
|
||||||
"Project-Id-Version: beszel\n"
|
"Project-Id-Version: beszel\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"PO-Revision-Date: 2025-08-28 23:21\n"
|
"PO-Revision-Date: 2025-12-02 23:17\n"
|
||||||
"Last-Translator: \n"
|
"Last-Translator: \n"
|
||||||
"Language-Team: Bulgarian\n"
|
"Language-Team: Bulgarian\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
"X-Crowdin-Project: beszel\n"
|
"X-Crowdin-Project: beszel\n"
|
||||||
"X-Crowdin-Project-ID: 733311\n"
|
"X-Crowdin-Project-ID: 733311\n"
|
||||||
"X-Crowdin-Language: bg\n"
|
"X-Crowdin-Language: bg\n"
|
||||||
"X-Crowdin-File: /main/beszel/site/src/locales/en/en.po\n"
|
"X-Crowdin-File: /main/internal/site/src/locales/en/en.po\n"
|
||||||
"X-Crowdin-File-ID: 16\n"
|
"X-Crowdin-File-ID: 32\n"
|
||||||
|
|
||||||
#. placeholder {0}: Math.trunc(system.info?.u / 86400)
|
|
||||||
#: src/components/routes/system.tsx
|
|
||||||
msgid "{0, plural, one {# day} other {# days}}"
|
|
||||||
msgstr "{0, plural, one {# ден} other {# дни}}"
|
|
||||||
|
|
||||||
#. placeholder {0}: Math.trunc(system.info.u / 3600)
|
|
||||||
#: src/components/routes/system.tsx
|
|
||||||
msgid "{0, plural, one {# hour} other {# hours}}"
|
|
||||||
msgstr "{0, plural, one {# час} other {# часа}}"
|
|
||||||
|
|
||||||
#. placeholder {0}: Math.trunc(system.info.u / 60)
|
|
||||||
#: src/components/routes/system.tsx
|
|
||||||
msgid "{0, plural, one {# minute} few {# minutes} many {# minutes} other {# minutes}}"
|
|
||||||
msgstr "{0, plural, one {# минута} few {# минути} many {# минути} other {# минути}}"
|
|
||||||
|
|
||||||
#. placeholder {0}: table.getFilteredSelectedRowModel().rows.length
|
#. placeholder {0}: table.getFilteredSelectedRowModel().rows.length
|
||||||
#. placeholder {1}: table.getFilteredRowModel().rows.length
|
#. placeholder {1}: table.getFilteredRowModel().rows.length
|
||||||
@@ -39,6 +24,18 @@ msgstr "{0, plural, one {# минута} few {# минути} many {# минут
|
|||||||
msgid "{0} of {1} row(s) selected."
|
msgid "{0} of {1} row(s) selected."
|
||||||
msgstr "{0} от {1} селектирани."
|
msgstr "{0} от {1} селектирани."
|
||||||
|
|
||||||
|
#: src/lib/utils.ts
|
||||||
|
msgid "{count, plural, one {{countString} day} other {{countString} days}}"
|
||||||
|
msgstr "{count, plural, one {{countString} ден} other {{countString} дни}}"
|
||||||
|
|
||||||
|
#: src/lib/utils.ts
|
||||||
|
msgid "{count, plural, one {{countString} hour} other {{countString} hours}}"
|
||||||
|
msgstr "{count, plural, one {{countString} час} other {{countString} часа}}"
|
||||||
|
|
||||||
|
#: src/lib/utils.ts
|
||||||
|
msgid "{count, plural, one {{countString} minute} few {{countString} minutes} many {{countString} minutes} other {{countString} minutes}}"
|
||||||
|
msgstr "{count, plural, one {{countString} минута} few {{countString} минути} many {{countString} минути} other {{countString} минути}}"
|
||||||
|
|
||||||
#: src/lib/utils.ts
|
#: src/lib/utils.ts
|
||||||
msgid "1 hour"
|
msgid "1 hour"
|
||||||
msgstr "1 час"
|
msgstr "1 час"
|
||||||
@@ -48,6 +45,10 @@ msgstr "1 час"
|
|||||||
msgid "1 min"
|
msgid "1 min"
|
||||||
msgstr "1 минута"
|
msgstr "1 минута"
|
||||||
|
|
||||||
|
#: src/lib/utils.ts
|
||||||
|
msgid "1 minute"
|
||||||
|
msgstr "1 минута"
|
||||||
|
|
||||||
#: src/lib/utils.ts
|
#: src/lib/utils.ts
|
||||||
msgid "1 week"
|
msgid "1 week"
|
||||||
msgstr "1 седмица"
|
msgstr "1 седмица"
|
||||||
@@ -75,28 +76,37 @@ msgid "5 min"
|
|||||||
msgstr "5 минути"
|
msgstr "5 минути"
|
||||||
|
|
||||||
#. Table column
|
#. Table column
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
msgid "Actions"
|
msgid "Actions"
|
||||||
msgstr "Действия"
|
msgstr "Действия"
|
||||||
|
|
||||||
#: src/components/alerts-history-columns.tsx
|
#: src/components/alerts-history-columns.tsx
|
||||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
msgid "Active"
|
msgid "Active"
|
||||||
msgstr "Активен"
|
msgstr "Активен"
|
||||||
|
|
||||||
#: src/components/routes/home.tsx
|
#: src/components/active-alerts.tsx
|
||||||
msgid "Active Alerts"
|
msgid "Active Alerts"
|
||||||
msgstr "Активни тревоги"
|
msgstr "Активни тревоги"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Active state"
|
||||||
|
msgstr "Активно състояние"
|
||||||
|
|
||||||
|
#: src/components/add-system.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "Add {foo}"
|
||||||
|
msgstr "Добави {foo}"
|
||||||
|
|
||||||
#: src/components/add-system.tsx
|
#: src/components/add-system.tsx
|
||||||
msgid "Add <0>System</0>"
|
msgid "Add <0>System</0>"
|
||||||
msgstr "Добави <0>Система</0>"
|
msgstr "Добави <0>Система</0>"
|
||||||
|
|
||||||
#: src/components/add-system.tsx
|
|
||||||
msgid "Add New System"
|
|
||||||
msgstr "Добави нова система"
|
|
||||||
|
|
||||||
#: src/components/add-system.tsx
|
#: src/components/add-system.tsx
|
||||||
msgid "Add system"
|
msgid "Add system"
|
||||||
msgstr "Добави система"
|
msgstr "Добави система"
|
||||||
@@ -109,11 +119,19 @@ msgstr "Добави URL"
|
|||||||
msgid "Adjust display options for charts."
|
msgid "Adjust display options for charts."
|
||||||
msgstr "Настрой опциите за показване на диаграмите."
|
msgstr "Настрой опциите за показване на диаграмите."
|
||||||
|
|
||||||
|
#: src/components/routes/settings/general.tsx
|
||||||
|
msgid "Adjust the width of the main layout"
|
||||||
|
msgstr "Настройка ширината на основния макет"
|
||||||
|
|
||||||
#: src/components/command-palette.tsx
|
#: src/components/command-palette.tsx
|
||||||
#: src/components/command-palette.tsx
|
#: src/components/command-palette.tsx
|
||||||
msgid "Admin"
|
msgid "Admin"
|
||||||
msgstr "Администратор"
|
msgstr "Администратор"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "After"
|
||||||
|
msgstr "След"
|
||||||
|
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
msgid "Agent"
|
msgid "Agent"
|
||||||
msgstr "Агент"
|
msgstr "Агент"
|
||||||
@@ -129,7 +147,16 @@ msgstr "История на нотификациите"
|
|||||||
msgid "Alerts"
|
msgid "Alerts"
|
||||||
msgstr "Тревоги"
|
msgstr "Тревоги"
|
||||||
|
|
||||||
|
#: src/components/command-palette.tsx
|
||||||
|
#: src/components/containers-table/containers-table.tsx
|
||||||
|
#: src/components/routes/containers.tsx
|
||||||
|
msgid "All Containers"
|
||||||
|
msgstr "Всички контейнери"
|
||||||
|
|
||||||
#: src/components/alerts/alerts-sheet.tsx
|
#: src/components/alerts/alerts-sheet.tsx
|
||||||
|
#: src/components/command-palette.tsx
|
||||||
|
#: src/components/routes/home.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
#: src/components/systems-table/systems-table.tsx
|
#: src/components/systems-table/systems-table.tsx
|
||||||
#: src/components/systems-table/systems-table.tsx
|
#: src/components/systems-table/systems-table.tsx
|
||||||
msgid "All Systems"
|
msgid "All Systems"
|
||||||
@@ -191,6 +218,18 @@ msgstr "Bandwidth на мрежата"
|
|||||||
msgid "Battery"
|
msgid "Battery"
|
||||||
msgstr "Батерия"
|
msgstr "Батерия"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Became active"
|
||||||
|
msgstr "Стана активен"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Became inactive"
|
||||||
|
msgstr "Стана неактивен"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Before"
|
||||||
|
msgstr "Преди"
|
||||||
|
|
||||||
#: src/components/login/auth-form.tsx
|
#: src/components/login/auth-form.tsx
|
||||||
msgid "Beszel supports OpenID Connect and many OAuth2 authentication providers."
|
msgid "Beszel supports OpenID Connect and many OAuth2 authentication providers."
|
||||||
msgstr "Beszel поддържа OpenID Connect и много други OAuth2 доставчици за удостоверяване."
|
msgstr "Beszel поддържа OpenID Connect и много други OAuth2 доставчици за удостоверяване."
|
||||||
@@ -208,6 +247,10 @@ msgstr "Двоичен код"
|
|||||||
msgid "Bits (Kbps, Mbps, Gbps)"
|
msgid "Bits (Kbps, Mbps, Gbps)"
|
||||||
msgstr "Бита (Kbps, Mbps, Gbps)"
|
msgstr "Бита (Kbps, Mbps, Gbps)"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Boot state"
|
||||||
|
msgstr "Състояние при зареждане"
|
||||||
|
|
||||||
#: src/components/routes/settings/general.tsx
|
#: src/components/routes/settings/general.tsx
|
||||||
#: src/components/routes/settings/general.tsx
|
#: src/components/routes/settings/general.tsx
|
||||||
msgid "Bytes (KB/s, MB/s, GB/s)"
|
msgid "Bytes (KB/s, MB/s, GB/s)"
|
||||||
@@ -217,11 +260,32 @@ msgstr "Байта (KB/s, MB/s, GB/s)"
|
|||||||
msgid "Cache / Buffers"
|
msgid "Cache / Buffers"
|
||||||
msgstr "Кеш / Буфери"
|
msgstr "Кеш / Буфери"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Can reload"
|
||||||
|
msgstr "Може да се презареди"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Can start"
|
||||||
|
msgstr "Може да се стартира"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Can stop"
|
||||||
|
msgstr "Може да се спре"
|
||||||
|
|
||||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "Откажи"
|
msgstr "Откажи"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Capabilities"
|
||||||
|
msgstr "Възможности"
|
||||||
|
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
msgid "Capacity"
|
||||||
|
msgstr "Капацитет"
|
||||||
|
|
||||||
#: src/components/routes/settings/config-yaml.tsx
|
#: src/components/routes/settings/config-yaml.tsx
|
||||||
msgid "Caution - potential data loss"
|
msgid "Caution - potential data loss"
|
||||||
msgstr "Внимание - възможност за загуба на данни"
|
msgstr "Внимание - възможност за загуба на данни"
|
||||||
@@ -263,6 +327,20 @@ msgstr "Провери log-овете за повече информация."
|
|||||||
msgid "Check your notification service"
|
msgid "Check your notification service"
|
||||||
msgstr "Провери услугата си за удостоверяване"
|
msgstr "Провери услугата си за удостоверяване"
|
||||||
|
|
||||||
|
#: src/components/containers-table/containers-table.tsx
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
#: src/components/systems-table/systems-table.tsx
|
||||||
|
msgid "Clear"
|
||||||
|
msgstr "Изчисти"
|
||||||
|
|
||||||
|
#: src/components/containers-table/containers-table.tsx
|
||||||
|
msgid "Click on a container to view more information."
|
||||||
|
msgstr "Кликнете върху контейнер, за да видите повече информация."
|
||||||
|
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
msgid "Click on a device to view more information."
|
||||||
|
msgstr "Кликнете върху устройство, за да видите повече информация."
|
||||||
|
|
||||||
#: src/components/systems-table/systems-table.tsx
|
#: src/components/systems-table/systems-table.tsx
|
||||||
msgid "Click on a system to view more information."
|
msgid "Click on a system to view more information."
|
||||||
msgstr "Кликнете върху система, за да видите повече информация."
|
msgstr "Кликнете върху система, за да видите повече информация."
|
||||||
@@ -285,7 +363,11 @@ msgstr "Настрой как получаваш нотификации за т
|
|||||||
msgid "Confirm password"
|
msgid "Confirm password"
|
||||||
msgstr "Потвърди парола"
|
msgstr "Потвърди парола"
|
||||||
|
|
||||||
#: src/components/routes/home.tsx
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Conflicts"
|
||||||
|
msgstr "Конфликти"
|
||||||
|
|
||||||
|
#: src/components/active-alerts.tsx
|
||||||
msgid "Connection is down"
|
msgid "Connection is down"
|
||||||
msgstr "Връзката е прекъсната"
|
msgstr "Връзката е прекъсната"
|
||||||
|
|
||||||
@@ -344,16 +426,39 @@ msgstr "Копирайте съдържанието на<0>docker-compose.yml</0
|
|||||||
msgid "Copy YAML"
|
msgid "Copy YAML"
|
||||||
msgstr "Копирай YAML"
|
msgstr "Копирай YAML"
|
||||||
|
|
||||||
|
#: src/components/containers-table/containers-table-columns.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table-columns.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
msgid "CPU"
|
msgid "CPU"
|
||||||
msgstr "Процесор"
|
msgstr "Процесор"
|
||||||
|
|
||||||
|
#: src/components/routes/system/cpu-sheet.tsx
|
||||||
|
msgid "CPU Cores"
|
||||||
|
msgstr "CPU ядра"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table-columns.tsx
|
||||||
|
msgid "CPU Peak"
|
||||||
|
msgstr "Пик на CPU"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "CPU time"
|
||||||
|
msgstr "Време на CPU"
|
||||||
|
|
||||||
|
#: src/components/routes/system/cpu-sheet.tsx
|
||||||
|
msgid "CPU Time Breakdown"
|
||||||
|
msgstr "Разбивка на времето на CPU"
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
|
#: src/components/routes/system/cpu-sheet.tsx
|
||||||
#: src/lib/alerts.ts
|
#: src/lib/alerts.ts
|
||||||
msgid "CPU Usage"
|
msgid "CPU Usage"
|
||||||
msgstr "Употреба на процесор"
|
msgstr "Употреба на процесор"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "Create"
|
||||||
|
msgstr "Създай"
|
||||||
|
|
||||||
#: src/components/login/auth-form.tsx
|
#: src/components/login/auth-form.tsx
|
||||||
msgid "Create account"
|
msgid "Create account"
|
||||||
msgstr "Създай акаунт"
|
msgstr "Създай акаунт"
|
||||||
@@ -380,16 +485,23 @@ msgstr "Кумулативно качване"
|
|||||||
msgid "Current state"
|
msgid "Current state"
|
||||||
msgstr "Текущо състояние"
|
msgstr "Текущо състояние"
|
||||||
|
|
||||||
#: src/components/command-palette.tsx
|
#. Power Cycles
|
||||||
#: src/components/routes/home.tsx
|
#: src/components/routes/system/smart-table.tsx
|
||||||
msgid "Dashboard"
|
msgid "Cycles"
|
||||||
msgstr "Табло"
|
msgstr "Цикли"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "Daily"
|
||||||
|
msgstr "Дневно"
|
||||||
|
|
||||||
#: src/components/routes/settings/general.tsx
|
#: src/components/routes/settings/general.tsx
|
||||||
msgid "Default time period"
|
msgid "Default time period"
|
||||||
msgstr "Времеви диапазон по подразбиране"
|
msgstr "Времеви диапазон по подразбиране"
|
||||||
|
|
||||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
msgid "Delete"
|
msgid "Delete"
|
||||||
msgstr "Изтрий"
|
msgstr "Изтрий"
|
||||||
@@ -398,6 +510,18 @@ msgstr "Изтрий"
|
|||||||
msgid "Delete fingerprint"
|
msgid "Delete fingerprint"
|
||||||
msgstr "Изтрий пръстов отпечатък"
|
msgstr "Изтрий пръстов отпечатък"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Description"
|
||||||
|
msgstr "Описание"
|
||||||
|
|
||||||
|
#: src/components/containers-table/containers-table.tsx
|
||||||
|
msgid "Detail"
|
||||||
|
msgstr "Подробности"
|
||||||
|
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
msgid "Device"
|
||||||
|
msgstr "Устройство"
|
||||||
|
|
||||||
#. Context: Battery state
|
#. Context: Battery state
|
||||||
#: src/lib/i18n.ts
|
#: src/lib/i18n.ts
|
||||||
msgid "Discharging"
|
msgid "Discharging"
|
||||||
@@ -438,6 +562,7 @@ msgid "Docker Network I/O"
|
|||||||
msgstr "Мрежов I/O използван от docker"
|
msgstr "Мрежов I/O използван от docker"
|
||||||
|
|
||||||
#: src/components/command-palette.tsx
|
#: src/components/command-palette.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
msgid "Documentation"
|
msgid "Documentation"
|
||||||
msgstr "Документация"
|
msgstr "Документация"
|
||||||
|
|
||||||
@@ -461,11 +586,16 @@ msgstr "Изтегляне"
|
|||||||
msgid "Duration"
|
msgid "Duration"
|
||||||
msgstr "Продължителност"
|
msgstr "Продължителност"
|
||||||
|
|
||||||
#: src/components/add-system.tsx
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
msgid "Edit"
|
msgid "Edit"
|
||||||
msgstr "Редактирай"
|
msgstr "Редактирай"
|
||||||
|
|
||||||
|
#: src/components/add-system.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "Edit {foo}"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/components/login/auth-form.tsx
|
#: src/components/login/auth-form.tsx
|
||||||
#: src/components/login/forgot-pass-form.tsx
|
#: src/components/login/forgot-pass-form.tsx
|
||||||
#: src/components/login/otp-forms.tsx
|
#: src/components/login/otp-forms.tsx
|
||||||
@@ -481,6 +611,11 @@ msgstr "Имейл нотификации"
|
|||||||
msgid "Empty"
|
msgid "Empty"
|
||||||
msgstr "Празна"
|
msgstr "Празна"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "End Time"
|
||||||
|
msgstr "Крайно време"
|
||||||
|
|
||||||
#: src/components/login/login.tsx
|
#: src/components/login/login.tsx
|
||||||
msgid "Enter email address to reset password"
|
msgid "Enter email address to reset password"
|
||||||
msgstr "Въведи имейл адрес за да нулираш паролата"
|
msgstr "Въведи имейл адрес за да нулираш паролата"
|
||||||
@@ -497,21 +632,32 @@ msgstr "Въведете Вашата еднократна парола."
|
|||||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||||
#: src/components/routes/settings/config-yaml.tsx
|
#: src/components/routes/settings/config-yaml.tsx
|
||||||
#: src/components/routes/settings/notifications.tsx
|
#: src/components/routes/settings/notifications.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
msgid "Error"
|
msgid "Error"
|
||||||
msgstr "Грешка"
|
msgstr "Грешка"
|
||||||
|
|
||||||
#. placeholder {0}: alert.value
|
#. placeholder {0}: alert.value
|
||||||
#. placeholder {1}: info.unit
|
#. placeholder {1}: info.unit
|
||||||
#. placeholder {2}: alert.min
|
#. placeholder {2}: alert.min
|
||||||
#: src/components/routes/home.tsx
|
#: src/components/active-alerts.tsx
|
||||||
msgid "Exceeds {0}{1} in last {2, plural, one {# minute} other {# minutes}}"
|
msgid "Exceeds {0}{1} in last {2, plural, one {# minute} other {# minutes}}"
|
||||||
msgstr "Надвишава {0}{1} в последните {2, plural, one {# минута} other {# минути}}"
|
msgstr "Надвишава {0}{1} в последните {2, plural, one {# минута} other {# минути}}"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Exec main PID"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/components/routes/settings/config-yaml.tsx
|
#: src/components/routes/settings/config-yaml.tsx
|
||||||
msgid "Existing systems not defined in <0>config.yml</0> will be deleted. Please make regular backups."
|
msgid "Existing systems not defined in <0>config.yml</0> will be deleted. Please make regular backups."
|
||||||
msgstr "Съществуващи системи които не са дефинирани в <0>config.yml</0> ще бъдат изтрити. Моля прави чести архиви."
|
msgstr "Съществуващи системи които не са дефинирани в <0>config.yml</0> ще бъдат изтрити. Моля прави чести архиви."
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Exited active"
|
||||||
|
msgstr "Излезе активно"
|
||||||
|
|
||||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||||
msgid "Export"
|
msgid "Export"
|
||||||
msgstr "Експортиране"
|
msgstr "Експортиране"
|
||||||
@@ -528,12 +674,21 @@ msgstr "Експортирай конфигурацията на системи
|
|||||||
msgid "Fahrenheit (°F)"
|
msgid "Fahrenheit (°F)"
|
||||||
msgstr "Фаренхайт (°F)"
|
msgstr "Фаренхайт (°F)"
|
||||||
|
|
||||||
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
|
msgid "Failed"
|
||||||
|
msgstr "Неуспешно"
|
||||||
|
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
msgid "Failed Attributes:"
|
||||||
|
msgstr "Неуспешни атрибути:"
|
||||||
|
|
||||||
#: src/lib/api.ts
|
#: src/lib/api.ts
|
||||||
msgid "Failed to authenticate"
|
msgid "Failed to authenticate"
|
||||||
msgstr "Неуспешно удостоверяване"
|
msgstr "Неуспешно удостоверяване"
|
||||||
|
|
||||||
#: src/components/routes/settings/layout.tsx
|
#: src/components/routes/settings/layout.tsx
|
||||||
#: src/components/routes/settings/notifications.tsx
|
#: src/components/routes/settings/notifications.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
msgid "Failed to save settings"
|
msgid "Failed to save settings"
|
||||||
msgstr "Неуспешно запазване на настройки"
|
msgstr "Неуспешно запазване на настройки"
|
||||||
|
|
||||||
@@ -545,8 +700,16 @@ msgstr "Неуспешно изпрати тестова нотификация"
|
|||||||
msgid "Failed to update alert"
|
msgid "Failed to update alert"
|
||||||
msgstr "Неуспешно обнови тревога"
|
msgstr "Неуспешно обнови тревога"
|
||||||
|
|
||||||
|
#. placeholder {0}: statusTotals[ServiceStatus.Failed]
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Failed: {0}"
|
||||||
|
msgstr "Неуспешни: {0}"
|
||||||
|
|
||||||
|
#: src/components/containers-table/containers-table.tsx
|
||||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
#: src/components/systems-table/systems-table.tsx
|
#: src/components/systems-table/systems-table.tsx
|
||||||
msgid "Filter..."
|
msgid "Filter..."
|
||||||
msgstr "Филтрирай..."
|
msgstr "Филтрирай..."
|
||||||
@@ -555,6 +718,10 @@ msgstr "Филтрирай..."
|
|||||||
msgid "Fingerprint"
|
msgid "Fingerprint"
|
||||||
msgstr "Пръстов отпечатък"
|
msgstr "Пръстов отпечатък"
|
||||||
|
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
msgid "Firmware"
|
||||||
|
msgstr "Фърмуер"
|
||||||
|
|
||||||
#: src/components/alerts/alerts-sheet.tsx
|
#: src/components/alerts/alerts-sheet.tsx
|
||||||
msgid "For <0>{min}</0> {min, plural, one {minute} other {minutes}}"
|
msgid "For <0>{min}</0> {min, plural, one {minute} other {minutes}}"
|
||||||
msgstr "За <0>{min}</0> {min, plural, one {минута} other {минути}}"
|
msgstr "За <0>{min}</0> {min, plural, one {минута} other {минути}}"
|
||||||
@@ -580,6 +747,10 @@ msgstr "Пълна"
|
|||||||
msgid "General"
|
msgid "General"
|
||||||
msgstr "Общо"
|
msgstr "Общо"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "Global"
|
||||||
|
msgstr "Глобален"
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
msgid "GPU Engines"
|
msgid "GPU Engines"
|
||||||
msgstr "GPU двигатели"
|
msgstr "GPU двигатели"
|
||||||
@@ -588,10 +759,18 @@ msgstr "GPU двигатели"
|
|||||||
msgid "GPU Power Draw"
|
msgid "GPU Power Draw"
|
||||||
msgstr "Консумация на ток от графична карта"
|
msgstr "Консумация на ток от графична карта"
|
||||||
|
|
||||||
|
#: src/lib/alerts.ts
|
||||||
|
msgid "GPU Usage"
|
||||||
|
msgstr "Употреба на GPU"
|
||||||
|
|
||||||
#: src/components/systems-table/systems-table.tsx
|
#: src/components/systems-table/systems-table.tsx
|
||||||
msgid "Grid"
|
msgid "Grid"
|
||||||
msgstr "Мрежово"
|
msgstr "Мрежово"
|
||||||
|
|
||||||
|
#: src/components/containers-table/containers-table-columns.tsx
|
||||||
|
msgid "Health"
|
||||||
|
msgstr "Здраве"
|
||||||
|
|
||||||
#: src/components/add-system.tsx
|
#: src/components/add-system.tsx
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
msgctxt "Button to copy install command"
|
msgctxt "Button to copy install command"
|
||||||
@@ -611,6 +790,15 @@ msgstr "Неактивна"
|
|||||||
msgid "If you've lost the password to your admin account, you may reset it using the following command."
|
msgid "If you've lost the password to your admin account, you may reset it using the following command."
|
||||||
msgstr "Ако си загубил паролата до администраторския акаунт, можеш да я нулираш със следващата команда."
|
msgstr "Ако си загубил паролата до администраторския акаунт, можеш да я нулираш със следващата команда."
|
||||||
|
|
||||||
|
#: src/components/containers-table/containers-table-columns.tsx
|
||||||
|
msgctxt "Docker image"
|
||||||
|
msgid "Image"
|
||||||
|
msgstr "Образ"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "Inactive"
|
||||||
|
msgstr "Неактивен"
|
||||||
|
|
||||||
#: src/components/login/auth-form.tsx
|
#: src/components/login/auth-form.tsx
|
||||||
msgid "Invalid email address."
|
msgid "Invalid email address."
|
||||||
msgstr "Невалиден имейл адрес."
|
msgstr "Невалиден имейл адрес."
|
||||||
@@ -628,6 +816,19 @@ msgstr "Език"
|
|||||||
msgid "Layout"
|
msgid "Layout"
|
||||||
msgstr "Подреждане"
|
msgstr "Подреждане"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/general.tsx
|
||||||
|
msgid "Layout width"
|
||||||
|
msgstr "Ширина на макета"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Lifecycle"
|
||||||
|
msgstr "Жизнен цикъл"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "limit"
|
||||||
|
msgstr "лимит"
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
msgid "Load Average"
|
msgid "Load Average"
|
||||||
msgstr "Средно натоварване"
|
msgstr "Средно натоварване"
|
||||||
@@ -649,6 +850,14 @@ msgstr "Средно натоварване 5 минути"
|
|||||||
msgid "Load Avg"
|
msgid "Load Avg"
|
||||||
msgstr "Средно натоварване"
|
msgstr "Средно натоварване"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Load state"
|
||||||
|
msgstr "Състояние на зареждане"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Loading..."
|
||||||
|
msgstr "Зареждане..."
|
||||||
|
|
||||||
#: src/components/navbar.tsx
|
#: src/components/navbar.tsx
|
||||||
msgid "Log Out"
|
msgid "Log Out"
|
||||||
msgstr "Изход"
|
msgstr "Изход"
|
||||||
@@ -663,6 +872,7 @@ msgid "Login attempt failed"
|
|||||||
msgstr "Неуспешен опит за вход"
|
msgstr "Неуспешен опит за вход"
|
||||||
|
|
||||||
#: src/components/command-palette.tsx
|
#: src/components/command-palette.tsx
|
||||||
|
#: src/components/containers-table/containers-table.tsx
|
||||||
#: src/components/navbar.tsx
|
#: src/components/navbar.tsx
|
||||||
msgid "Logs"
|
msgid "Logs"
|
||||||
msgstr "Логове"
|
msgstr "Логове"
|
||||||
@@ -671,6 +881,10 @@ msgstr "Логове"
|
|||||||
msgid "Looking instead for where to create alerts? Click the bell <0/> icons in the systems table."
|
msgid "Looking instead for where to create alerts? Click the bell <0/> icons in the systems table."
|
||||||
msgstr "Търсиш къде да създадеш тревоги? Натисни емотиконата за звънец <0/> в таблицата за системи."
|
msgstr "Търсиш къде да създадеш тревоги? Натисни емотиконата за звънец <0/> в таблицата за системи."
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Main PID"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/components/routes/settings/layout.tsx
|
#: src/components/routes/settings/layout.tsx
|
||||||
msgid "Manage display and notification preferences."
|
msgid "Manage display and notification preferences."
|
||||||
msgstr "Управление на предпочитанията за показване и уведомяване."
|
msgstr "Управление на предпочитанията за показване и уведомяване."
|
||||||
@@ -685,10 +899,22 @@ msgstr "Инструкции за ръчна настройка"
|
|||||||
msgid "Max 1 min"
|
msgid "Max 1 min"
|
||||||
msgstr "Максимум 1 минута"
|
msgstr "Максимум 1 минута"
|
||||||
|
|
||||||
|
#: src/components/containers-table/containers-table-columns.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table-columns.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
msgid "Memory"
|
msgid "Memory"
|
||||||
msgstr "Памет"
|
msgstr "Памет"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Memory limit"
|
||||||
|
msgstr "Лимит на памет"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table-columns.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Memory Peak"
|
||||||
|
msgstr "Пик на памет"
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
#: src/lib/alerts.ts
|
#: src/lib/alerts.ts
|
||||||
msgid "Memory Usage"
|
msgid "Memory Usage"
|
||||||
@@ -698,11 +924,19 @@ msgstr "Употреба на паметта"
|
|||||||
msgid "Memory usage of docker containers"
|
msgid "Memory usage of docker containers"
|
||||||
msgstr "Използването на памет от docker контейнерите"
|
msgstr "Използването на памет от docker контейнерите"
|
||||||
|
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
msgid "Model"
|
||||||
|
msgstr "Модел"
|
||||||
|
|
||||||
#: src/components/add-system.tsx
|
#: src/components/add-system.tsx
|
||||||
#: src/components/alerts-history-columns.tsx
|
#: src/components/alerts-history-columns.tsx
|
||||||
|
#: src/components/containers-table/containers-table-columns.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table-columns.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
msgid "Name"
|
msgid "Name"
|
||||||
msgstr "Име"
|
msgstr "Име"
|
||||||
|
|
||||||
|
#: src/components/containers-table/containers-table-columns.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
msgid "Net"
|
msgid "Net"
|
||||||
msgstr "Мрежа"
|
msgstr "Мрежа"
|
||||||
@@ -714,6 +948,7 @@ msgstr "Мрежов трафик на docker контейнери"
|
|||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
#: src/components/routes/system/network-sheet.tsx
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
#: src/components/routes/system/network-sheet.tsx
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
msgid "Network traffic of public interfaces"
|
msgid "Network traffic of public interfaces"
|
||||||
msgstr "Мрежов трафик на публични интерфейси"
|
msgstr "Мрежов трафик на публични интерфейси"
|
||||||
|
|
||||||
@@ -722,14 +957,30 @@ msgstr "Мрежов трафик на публични интерфейси"
|
|||||||
msgid "Network unit"
|
msgid "Network unit"
|
||||||
msgstr "Единица за измерване на скорост"
|
msgstr "Единица за измерване на скорост"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "No"
|
||||||
|
msgstr "Не"
|
||||||
|
|
||||||
#: src/components/command-palette.tsx
|
#: src/components/command-palette.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
msgid "No results found."
|
msgid "No results found."
|
||||||
msgstr "Няма намерени резултати."
|
msgstr "Няма намерени резултати."
|
||||||
|
|
||||||
|
#: src/components/containers-table/containers-table.tsx
|
||||||
|
#: src/components/containers-table/containers-table.tsx
|
||||||
|
#: src/components/containers-table/containers-table.tsx
|
||||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
msgid "No results."
|
msgid "No results."
|
||||||
msgstr "Няма резултати."
|
msgstr "Няма резултати."
|
||||||
|
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
msgid "No S.M.A.R.T. attributes available for this device."
|
||||||
|
msgstr "Няма налични S.M.A.R.T. атрибути за това устройство."
|
||||||
|
|
||||||
#: src/components/systems-table/systems-table.tsx
|
#: src/components/systems-table/systems-table.tsx
|
||||||
#: src/components/systems-table/systems-table.tsx
|
#: src/components/systems-table/systems-table.tsx
|
||||||
msgid "No systems found."
|
msgid "No systems found."
|
||||||
@@ -749,12 +1000,19 @@ msgstr "Поддръжка на OAuth 2 / OIDC"
|
|||||||
msgid "On each restart, systems in the database will be updated to match the systems defined in the file."
|
msgid "On each restart, systems in the database will be updated to match the systems defined in the file."
|
||||||
msgstr "На всеки рестарт, системите в датабазата ще бъдат обновени да съвпадат със системите зададени във файла."
|
msgstr "На всеки рестарт, системите в датабазата ще бъдат обновени да съвпадат със системите зададени във файла."
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "One-time"
|
||||||
|
msgstr "Еднократен"
|
||||||
|
|
||||||
#: src/components/login/auth-form.tsx
|
#: src/components/login/auth-form.tsx
|
||||||
msgid "One-time password"
|
msgid "One-time password"
|
||||||
msgstr "Еднократна парола"
|
msgstr "Еднократна парола"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
msgid "Open menu"
|
msgid "Open menu"
|
||||||
msgstr "Отвори менюто"
|
msgstr "Отвори менюто"
|
||||||
@@ -763,10 +1021,16 @@ msgstr "Отвори менюто"
|
|||||||
msgid "Or continue with"
|
msgid "Or continue with"
|
||||||
msgstr "Или продължи с"
|
msgstr "Или продължи с"
|
||||||
|
|
||||||
|
#: src/components/routes/system/cpu-sheet.tsx
|
||||||
|
msgid "Other"
|
||||||
|
msgstr "Други"
|
||||||
|
|
||||||
#: src/components/alerts/alerts-sheet.tsx
|
#: src/components/alerts/alerts-sheet.tsx
|
||||||
msgid "Overwrite existing alerts"
|
msgid "Overwrite existing alerts"
|
||||||
msgstr "Презапиши съществуващи тревоги"
|
msgstr "Презапиши съществуващи тревоги"
|
||||||
|
|
||||||
|
#: src/components/command-palette.tsx
|
||||||
|
#: src/components/command-palette.tsx
|
||||||
#: src/components/command-palette.tsx
|
#: src/components/command-palette.tsx
|
||||||
msgid "Page"
|
msgid "Page"
|
||||||
msgstr "Страница"
|
msgstr "Страница"
|
||||||
@@ -798,6 +1062,10 @@ msgstr "Паролата трябва да е по-малка от 72 байта
|
|||||||
msgid "Password reset request received"
|
msgid "Password reset request received"
|
||||||
msgstr "Получено е искането за нулиране на паролата"
|
msgstr "Получено е искането за нулиране на паролата"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "Past"
|
||||||
|
msgstr "Минал"
|
||||||
|
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
msgid "Pause"
|
msgid "Pause"
|
||||||
msgstr "Пауза"
|
msgstr "Пауза"
|
||||||
@@ -810,6 +1078,15 @@ msgstr "На пауза"
|
|||||||
msgid "Paused ({pausedSystemsLength})"
|
msgid "Paused ({pausedSystemsLength})"
|
||||||
msgstr "На пауза ({pausedSystemsLength})"
|
msgstr "На пауза ({pausedSystemsLength})"
|
||||||
|
|
||||||
|
#: src/components/routes/system/cpu-sheet.tsx
|
||||||
|
#: src/components/routes/system/cpu-sheet.tsx
|
||||||
|
msgid "Per-core average utilization"
|
||||||
|
msgstr "Средно използване на ядро"
|
||||||
|
|
||||||
|
#: src/components/routes/system/cpu-sheet.tsx
|
||||||
|
msgid "Percentage of time spent in each state"
|
||||||
|
msgstr "Процент време, прекарано във всяко състояние"
|
||||||
|
|
||||||
#: src/components/routes/settings/notifications.tsx
|
#: src/components/routes/settings/notifications.tsx
|
||||||
msgid "Please <0>configure an SMTP server</0> to ensure alerts are delivered."
|
msgid "Please <0>configure an SMTP server</0> to ensure alerts are delivered."
|
||||||
msgstr "Моля <0>конфигурурай SMTP сървър</0> за да се подсигуриш, че тревогите са доставени."
|
msgstr "Моля <0>конфигурурай SMTP сървър</0> за да се подсигуриш, че тревогите са доставени."
|
||||||
@@ -847,6 +1124,11 @@ msgstr "Моля влез в акаунта ти"
|
|||||||
msgid "Port"
|
msgid "Port"
|
||||||
msgstr "Порт"
|
msgstr "Порт"
|
||||||
|
|
||||||
|
#. Power On Time
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
msgid "Power On"
|
||||||
|
msgstr "Включване"
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
msgid "Precise utilization at the recorded time"
|
msgid "Precise utilization at the recorded time"
|
||||||
@@ -856,11 +1138,19 @@ msgstr "Точно използване в записаното време"
|
|||||||
msgid "Preferred Language"
|
msgid "Preferred Language"
|
||||||
msgstr "Предпочитан език"
|
msgstr "Предпочитан език"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Process started"
|
||||||
|
msgstr "Процесът стартира"
|
||||||
|
|
||||||
#. Use 'Key' if your language requires many more characters
|
#. Use 'Key' if your language requires many more characters
|
||||||
#: src/components/add-system.tsx
|
#: src/components/add-system.tsx
|
||||||
msgid "Public Key"
|
msgid "Public Key"
|
||||||
msgstr "Публичен ключ"
|
msgstr "Публичен ключ"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "Quiet Hours"
|
||||||
|
msgstr "Тихи часове"
|
||||||
|
|
||||||
#. Disk read
|
#. Disk read
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
@@ -871,6 +1161,16 @@ msgstr "Прочети"
|
|||||||
msgid "Received"
|
msgid "Received"
|
||||||
msgstr "Получени"
|
msgstr "Получени"
|
||||||
|
|
||||||
|
#: src/components/containers-table/containers-table.tsx
|
||||||
|
#: src/components/containers-table/containers-table.tsx
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
msgid "Refresh"
|
||||||
|
msgstr "Опресни"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Relationships"
|
||||||
|
msgstr "Връзки"
|
||||||
|
|
||||||
#: src/components/login/login.tsx
|
#: src/components/login/login.tsx
|
||||||
msgid "Request a one-time password"
|
msgid "Request a one-time password"
|
||||||
msgstr "Заявка за еднократна парола"
|
msgstr "Заявка за еднократна парола"
|
||||||
@@ -879,6 +1179,14 @@ msgstr "Заявка за еднократна парола"
|
|||||||
msgid "Request OTP"
|
msgid "Request OTP"
|
||||||
msgstr "Заявка OTP"
|
msgstr "Заявка OTP"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Required by"
|
||||||
|
msgstr "Изисква се от"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Requires"
|
||||||
|
msgstr "Изисква"
|
||||||
|
|
||||||
#: src/components/login/forgot-pass-form.tsx
|
#: src/components/login/forgot-pass-form.tsx
|
||||||
msgid "Reset Password"
|
msgid "Reset Password"
|
||||||
msgstr "Нулиране на парола"
|
msgstr "Нулиране на парола"
|
||||||
@@ -889,10 +1197,19 @@ msgstr "Нулиране на парола"
|
|||||||
msgid "Resolved"
|
msgid "Resolved"
|
||||||
msgstr "Решен"
|
msgstr "Решен"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Restarts"
|
||||||
|
msgstr "Рестартирания"
|
||||||
|
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
msgid "Resume"
|
msgid "Resume"
|
||||||
msgstr "Възобнови"
|
msgstr "Възобнови"
|
||||||
|
|
||||||
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
|
msgctxt "Root disk label"
|
||||||
|
msgid "Root"
|
||||||
|
msgstr "Корен"
|
||||||
|
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
msgid "Rotate token"
|
msgid "Rotate token"
|
||||||
msgstr "Пресъздаване на идентификатора"
|
msgstr "Пресъздаване на идентификатора"
|
||||||
@@ -901,6 +1218,18 @@ msgstr "Пресъздаване на идентификатора"
|
|||||||
msgid "Rows per page"
|
msgid "Rows per page"
|
||||||
msgstr "Редове на страница"
|
msgstr "Редове на страница"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Runtime Metrics"
|
||||||
|
msgstr "Метрики на изпълнение"
|
||||||
|
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
msgid "S.M.A.R.T. Details"
|
||||||
|
msgstr "S.M.A.R.T. Детайли"
|
||||||
|
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
msgid "S.M.A.R.T. Self-Test"
|
||||||
|
msgstr "S.M.A.R.T. Самотест"
|
||||||
|
|
||||||
#: src/components/routes/settings/notifications.tsx
|
#: src/components/routes/settings/notifications.tsx
|
||||||
msgid "Save address using enter key or comma. Leave blank to disable email notifications."
|
msgid "Save address using enter key or comma. Leave blank to disable email notifications."
|
||||||
msgstr "Запази адреса с enter или запетая. Остави празно за да изключиш нотификациите чрез имейл."
|
msgstr "Запази адреса с enter или запетая. Остави празно за да изключиш нотификациите чрез имейл."
|
||||||
@@ -914,6 +1243,18 @@ msgstr "Запази настройките"
|
|||||||
msgid "Save system"
|
msgid "Save system"
|
||||||
msgstr "Запази система"
|
msgstr "Запази система"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "Schedule"
|
||||||
|
msgstr "График"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "Schedule quiet hours where notifications will not be sent, such as during maintenance periods."
|
||||||
|
msgstr "Планирай тихи часове, когато няма да се изпращат известия, като например по време на периоди на поддръжка."
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "Schedule quiet hours where notifications will not be sent."
|
||||||
|
msgstr "Планирай тихи часове, когато няма да се изпращат известия."
|
||||||
|
|
||||||
#: src/components/navbar.tsx
|
#: src/components/navbar.tsx
|
||||||
msgid "Search"
|
msgid "Search"
|
||||||
msgstr "Търси"
|
msgstr "Търси"
|
||||||
@@ -926,10 +1267,26 @@ msgstr "Търси за системи или настройки..."
|
|||||||
msgid "See <0>notification settings</0> to configure how you receive alerts."
|
msgid "See <0>notification settings</0> to configure how you receive alerts."
|
||||||
msgstr "Виж <0>настройките за нотификациите</0> за да конфигурираш как получаваш тревоги."
|
msgstr "Виж <0>настройките за нотификациите</0> за да конфигурираш как получаваш тревоги."
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "Select {foo}"
|
||||||
|
msgstr "Избери {foo}"
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
msgid "Sent"
|
msgid "Sent"
|
||||||
msgstr "Изпратени"
|
msgstr "Изпратени"
|
||||||
|
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
msgid "Serial Number"
|
||||||
|
msgstr "Сериен номер"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Service Details"
|
||||||
|
msgstr "Детайли на услугата"
|
||||||
|
|
||||||
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
|
msgid "Services"
|
||||||
|
msgstr "Услуги"
|
||||||
|
|
||||||
#: src/components/routes/settings/general.tsx
|
#: src/components/routes/settings/general.tsx
|
||||||
msgid "Set percentage thresholds for meter colors."
|
msgid "Set percentage thresholds for meter colors."
|
||||||
msgstr "Задайте процентни прагове за цветовете на измервателните уреди."
|
msgstr "Задайте процентни прагове за цветовете на измервателните уреди."
|
||||||
@@ -957,16 +1314,30 @@ msgstr "Настройки за SMTP"
|
|||||||
msgid "Sort By"
|
msgid "Sort By"
|
||||||
msgstr "Сортиране по"
|
msgstr "Сортиране по"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "Start Time"
|
||||||
|
msgstr "Начален час"
|
||||||
|
|
||||||
#. Context: alert state (active or resolved)
|
#. Context: alert state (active or resolved)
|
||||||
#: src/components/alerts-history-columns.tsx
|
#: src/components/alerts-history-columns.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table-columns.tsx
|
||||||
msgid "State"
|
msgid "State"
|
||||||
msgstr "Състояние"
|
msgstr "Състояние"
|
||||||
|
|
||||||
|
#: src/components/containers-table/containers-table-columns.tsx
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
#: src/components/systems-table/systems-table.tsx
|
#: src/components/systems-table/systems-table.tsx
|
||||||
#: src/lib/alerts.ts
|
#: src/lib/alerts.ts
|
||||||
msgid "Status"
|
msgid "Status"
|
||||||
msgstr "Статус"
|
msgstr "Статус"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table-columns.tsx
|
||||||
|
msgid "Sub State"
|
||||||
|
msgstr "Подсъстояние"
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
msgid "Swap space used by the system"
|
msgid "Swap space used by the system"
|
||||||
msgstr "Изполван swap от системата"
|
msgstr "Изполван swap от системата"
|
||||||
@@ -975,8 +1346,15 @@ msgstr "Изполван swap от системата"
|
|||||||
msgid "Swap Usage"
|
msgid "Swap Usage"
|
||||||
msgstr "Използване на swap"
|
msgstr "Използване на swap"
|
||||||
|
|
||||||
|
#: src/components/add-system.tsx
|
||||||
#: src/components/alerts-history-columns.tsx
|
#: src/components/alerts-history-columns.tsx
|
||||||
|
#: src/components/containers-table/containers-table-columns.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
#: src/lib/alerts.ts
|
#: src/lib/alerts.ts
|
||||||
msgid "System"
|
msgid "System"
|
||||||
@@ -986,6 +1364,10 @@ msgstr "Система"
|
|||||||
msgid "System load averages over time"
|
msgid "System load averages over time"
|
||||||
msgstr "Средно натоварване на системата във времето"
|
msgstr "Средно натоварване на системата във времето"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Systemd Services"
|
||||||
|
msgstr "Услуги на systemd"
|
||||||
|
|
||||||
#: src/components/navbar.tsx
|
#: src/components/navbar.tsx
|
||||||
msgid "Systems"
|
msgid "Systems"
|
||||||
msgstr "Системи"
|
msgstr "Системи"
|
||||||
@@ -998,7 +1380,12 @@ msgstr "Системите могат да бъдат управлявани в
|
|||||||
msgid "Table"
|
msgid "Table"
|
||||||
msgstr "Таблица"
|
msgstr "Таблица"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Tasks"
|
||||||
|
msgstr "Задачи"
|
||||||
|
|
||||||
#. Temperature label in systems table
|
#. Temperature label in systems table
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
msgid "Temp"
|
msgid "Temp"
|
||||||
msgstr "Температура"
|
msgstr "Температура"
|
||||||
@@ -1080,6 +1467,11 @@ msgstr "Токените позволяват на агентите да се с
|
|||||||
msgid "Tokens and fingerprints are used to authenticate WebSocket connections to the hub."
|
msgid "Tokens and fingerprints are used to authenticate WebSocket connections to the hub."
|
||||||
msgstr "Токените и пръстовите отпечатъци се използват за удостоверяване на WebSocket връзките към концентратора."
|
msgstr "Токените и пръстовите отпечатъци се използват за удостоверяване на WebSocket връзките към концентратора."
|
||||||
|
|
||||||
|
#: src/components/ui/chart.tsx
|
||||||
|
#: src/components/ui/chart.tsx
|
||||||
|
msgid "Total"
|
||||||
|
msgstr "Общо"
|
||||||
|
|
||||||
#: src/components/routes/system/network-sheet.tsx
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
msgid "Total data received for each interface"
|
msgid "Total data received for each interface"
|
||||||
msgstr "Общо получени данни за всеки интерфейс"
|
msgstr "Общо получени данни за всеки интерфейс"
|
||||||
@@ -1088,6 +1480,19 @@ msgstr "Общо получени данни за всеки интерфейс"
|
|||||||
msgid "Total data sent for each interface"
|
msgid "Total data sent for each interface"
|
||||||
msgstr "Общо изпратени данни за всеки интерфейс"
|
msgstr "Общо изпратени данни за всеки интерфейс"
|
||||||
|
|
||||||
|
#. placeholder {0}: data.length
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Total: {0}"
|
||||||
|
msgstr "Общо: {0}"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Triggered by"
|
||||||
|
msgstr "Активиран от"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Triggers"
|
||||||
|
msgstr "Активатори"
|
||||||
|
|
||||||
#: src/lib/alerts.ts
|
#: src/lib/alerts.ts
|
||||||
msgid "Triggers when 1 minute load average exceeds a threshold"
|
msgid "Triggers when 1 minute load average exceeds a threshold"
|
||||||
msgstr "Задейства се, когато употребата на паметта за 1 минута надвиши зададен праг"
|
msgstr "Задейства се, когато употребата на паметта за 1 минута надвиши зададен праг"
|
||||||
@@ -1112,6 +1517,10 @@ msgstr "Задейства се, когато комбинираното кач
|
|||||||
msgid "Triggers when CPU usage exceeds a threshold"
|
msgid "Triggers when CPU usage exceeds a threshold"
|
||||||
msgstr "Задейства се, когато употребата на процесора надвиши зададен праг"
|
msgstr "Задейства се, когато употребата на процесора надвиши зададен праг"
|
||||||
|
|
||||||
|
#: src/lib/alerts.ts
|
||||||
|
msgid "Triggers when GPU usage exceeds a threshold"
|
||||||
|
msgstr "Задейства се, когато използването на GPU надвиши праг"
|
||||||
|
|
||||||
#: src/lib/alerts.ts
|
#: src/lib/alerts.ts
|
||||||
msgid "Triggers when memory usage exceeds a threshold"
|
msgid "Triggers when memory usage exceeds a threshold"
|
||||||
msgstr "Задейства се, когато употребата на паметта надвиши зададен праг"
|
msgstr "Задейства се, когато употребата на паметта надвиши зададен праг"
|
||||||
@@ -1124,6 +1533,16 @@ msgstr "Задейства се, когато статуса превключв
|
|||||||
msgid "Triggers when usage of any disk exceeds a threshold"
|
msgid "Triggers when usage of any disk exceeds a threshold"
|
||||||
msgstr "Задейства се, когато употребата на някой диск надивши зададен праг"
|
msgstr "Задейства се, когато употребата на някой диск надивши зададен праг"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
msgid "Type"
|
||||||
|
msgstr "Тип"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Unit file"
|
||||||
|
msgstr "Файл на единица"
|
||||||
|
|
||||||
#. Temperature / network units
|
#. Temperature / network units
|
||||||
#: src/components/routes/settings/general.tsx
|
#: src/components/routes/settings/general.tsx
|
||||||
msgid "Unit preferences"
|
msgid "Unit preferences"
|
||||||
@@ -1139,6 +1558,11 @@ msgstr "Универсален тоукън"
|
|||||||
msgid "Unknown"
|
msgid "Unknown"
|
||||||
msgstr "Неизвестна"
|
msgstr "Неизвестна"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Unlimited"
|
||||||
|
msgstr "Неограничено"
|
||||||
|
|
||||||
#. Context: System is up
|
#. Context: System is up
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
@@ -1149,6 +1573,20 @@ msgstr "Нагоре"
|
|||||||
msgid "Up ({upSystemsLength})"
|
msgid "Up ({upSystemsLength})"
|
||||||
msgstr "Нагоре ({upSystemsLength})"
|
msgstr "Нагоре ({upSystemsLength})"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "Update"
|
||||||
|
msgstr "Актуализирай"
|
||||||
|
|
||||||
|
#: src/components/containers-table/containers-table-columns.tsx
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table-columns.tsx
|
||||||
|
msgid "Updated"
|
||||||
|
msgstr "Актуализирано"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Updated every 10 minutes."
|
||||||
|
msgstr "Актуализира се на всеки 10 минути."
|
||||||
|
|
||||||
#: src/components/routes/system/network-sheet.tsx
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
msgid "Upload"
|
msgid "Upload"
|
||||||
msgstr "Качване"
|
msgstr "Качване"
|
||||||
@@ -1161,6 +1599,7 @@ msgstr "Време на работа"
|
|||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
|
#: src/components/routes/system/cpu-sheet.tsx
|
||||||
msgid "Usage"
|
msgid "Usage"
|
||||||
msgstr "Употреба"
|
msgstr "Употреба"
|
||||||
|
|
||||||
@@ -1186,6 +1625,7 @@ msgstr "Стойност"
|
|||||||
msgid "View"
|
msgid "View"
|
||||||
msgstr "Изглед"
|
msgstr "Изглед"
|
||||||
|
|
||||||
|
#: src/components/routes/system/cpu-sheet.tsx
|
||||||
#: src/components/routes/system/network-sheet.tsx
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
msgid "View more"
|
msgid "View more"
|
||||||
msgstr "Виж повече"
|
msgstr "Виж повече"
|
||||||
@@ -1206,6 +1646,10 @@ msgstr "Изчаква се за достатъчно записи за пока
|
|||||||
msgid "Want to help improve our translations? Check <0>Crowdin</0> for details."
|
msgid "Want to help improve our translations? Check <0>Crowdin</0> for details."
|
||||||
msgstr "Искаш да помогнеш да направиш преводите още по-добри? Провери нашия <0>Crowdin</0> за повече детайли."
|
msgstr "Искаш да помогнеш да направиш преводите още по-добри? Провери нашия <0>Crowdin</0> за повече детайли."
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Wants"
|
||||||
|
msgstr "Иска"
|
||||||
|
|
||||||
#: src/components/routes/settings/general.tsx
|
#: src/components/routes/settings/general.tsx
|
||||||
msgid "Warning (%)"
|
msgid "Warning (%)"
|
||||||
msgstr "Предупреждение (%)"
|
msgstr "Предупреждение (%)"
|
||||||
@@ -1242,6 +1686,13 @@ msgstr "YAML конфигурация"
|
|||||||
msgid "YAML Configuration"
|
msgid "YAML Configuration"
|
||||||
msgstr "YAML конфигурация"
|
msgstr "YAML конфигурация"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Yes"
|
||||||
|
msgstr "Да"
|
||||||
|
|
||||||
#: src/components/routes/settings/layout.tsx
|
#: src/components/routes/settings/layout.tsx
|
||||||
msgid "Your user settings have been updated."
|
msgid "Your user settings have been updated."
|
||||||
msgstr "Настройките за потребителя ти са обновени."
|
msgstr "Настройките за потребителя ти са обновени."
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
1296
internal/site/src/locales/el/el.po
Normal file
1296
internal/site/src/locales/el/el.po
Normal file
File diff suppressed because it is too large
Load Diff
@@ -168,10 +168,6 @@ msgstr "Average system-wide CPU utilization"
|
|||||||
msgid "Average utilization of {0}"
|
msgid "Average utilization of {0}"
|
||||||
msgstr "Average utilization of {0}"
|
msgstr "Average utilization of {0}"
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
|
||||||
msgid "Average utilization of GPU engines"
|
|
||||||
msgstr "Average utilization of GPU engines"
|
|
||||||
|
|
||||||
#: src/components/command-palette.tsx
|
#: src/components/command-palette.tsx
|
||||||
#: src/components/navbar.tsx
|
#: src/components/navbar.tsx
|
||||||
msgid "Backups"
|
msgid "Backups"
|
||||||
@@ -362,14 +358,6 @@ msgstr "Created"
|
|||||||
msgid "Critical (%)"
|
msgid "Critical (%)"
|
||||||
msgstr "Critical (%)"
|
msgstr "Critical (%)"
|
||||||
|
|
||||||
#: src/components/routes/system/network-sheet.tsx
|
|
||||||
msgid "Cumulative Download"
|
|
||||||
msgstr "Cumulative Download"
|
|
||||||
|
|
||||||
#: src/components/routes/system/network-sheet.tsx
|
|
||||||
msgid "Cumulative Upload"
|
|
||||||
msgstr "Cumulative Upload"
|
|
||||||
|
|
||||||
#. Context: Battery state
|
#. Context: Battery state
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
msgid "Current state"
|
msgid "Current state"
|
||||||
@@ -448,10 +436,6 @@ msgstr "Down"
|
|||||||
msgid "Down ({downSystemsLength})"
|
msgid "Down ({downSystemsLength})"
|
||||||
msgstr "Down ({downSystemsLength})"
|
msgstr "Down ({downSystemsLength})"
|
||||||
|
|
||||||
#: src/components/routes/system/network-sheet.tsx
|
|
||||||
msgid "Download"
|
|
||||||
msgstr "Download"
|
|
||||||
|
|
||||||
#: src/components/alerts-history-columns.tsx
|
#: src/components/alerts-history-columns.tsx
|
||||||
msgid "Duration"
|
msgid "Duration"
|
||||||
msgstr "Duration"
|
msgstr "Duration"
|
||||||
@@ -463,7 +447,6 @@ msgstr "Edit"
|
|||||||
|
|
||||||
#: src/components/login/auth-form.tsx
|
#: src/components/login/auth-form.tsx
|
||||||
#: src/components/login/forgot-pass-form.tsx
|
#: src/components/login/forgot-pass-form.tsx
|
||||||
#: src/components/login/otp-forms.tsx
|
|
||||||
msgid "Email"
|
msgid "Email"
|
||||||
msgstr "Email"
|
msgstr "Email"
|
||||||
|
|
||||||
@@ -484,10 +467,6 @@ msgstr "Enter email address to reset password"
|
|||||||
msgid "Enter email address..."
|
msgid "Enter email address..."
|
||||||
msgstr "Enter email address..."
|
msgstr "Enter email address..."
|
||||||
|
|
||||||
#: src/components/login/otp-forms.tsx
|
|
||||||
msgid "Enter your one-time password."
|
|
||||||
msgstr "Enter your one-time password."
|
|
||||||
|
|
||||||
#: src/components/login/auth-form.tsx
|
#: src/components/login/auth-form.tsx
|
||||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||||
#: src/components/routes/settings/config-yaml.tsx
|
#: src/components/routes/settings/config-yaml.tsx
|
||||||
@@ -558,12 +537,6 @@ msgstr "For <0>{min}</0> {min, plural, one {minute} other {minutes}}"
|
|||||||
msgid "Forgot password?"
|
msgid "Forgot password?"
|
||||||
msgstr "Forgot password?"
|
msgstr "Forgot password?"
|
||||||
|
|
||||||
#: src/components/add-system.tsx
|
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
|
||||||
msgctxt "Button to copy install command"
|
|
||||||
msgid "FreeBSD command"
|
|
||||||
msgstr "FreeBSD command"
|
|
||||||
|
|
||||||
#. Context: Battery state
|
#. Context: Battery state
|
||||||
#: src/lib/i18n.ts
|
#: src/lib/i18n.ts
|
||||||
msgid "Full"
|
msgid "Full"
|
||||||
@@ -575,10 +548,6 @@ msgstr "Full"
|
|||||||
msgid "General"
|
msgid "General"
|
||||||
msgstr "General"
|
msgstr "General"
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
|
||||||
msgid "GPU Engines"
|
|
||||||
msgstr "GPU Engines"
|
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
msgid "GPU Power Draw"
|
msgid "GPU Power Draw"
|
||||||
msgstr "GPU Power Draw"
|
msgstr "GPU Power Draw"
|
||||||
@@ -671,7 +640,6 @@ msgid "Manage display and notification preferences."
|
|||||||
msgstr "Manage display and notification preferences."
|
msgstr "Manage display and notification preferences."
|
||||||
|
|
||||||
#: src/components/add-system.tsx
|
#: src/components/add-system.tsx
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
|
||||||
msgid "Manual setup instructions"
|
msgid "Manual setup instructions"
|
||||||
msgstr "Manual setup instructions"
|
msgstr "Manual setup instructions"
|
||||||
|
|
||||||
@@ -707,8 +675,6 @@ msgid "Network traffic of docker containers"
|
|||||||
msgstr "Network traffic of docker containers"
|
msgstr "Network traffic of docker containers"
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
#: src/components/routes/system/network-sheet.tsx
|
|
||||||
#: src/components/routes/system/network-sheet.tsx
|
|
||||||
msgid "Network traffic of public interfaces"
|
msgid "Network traffic of public interfaces"
|
||||||
msgstr "Network traffic of public interfaces"
|
msgstr "Network traffic of public interfaces"
|
||||||
|
|
||||||
@@ -744,10 +710,6 @@ msgstr "OAuth 2 / OIDC support"
|
|||||||
msgid "On each restart, systems in the database will be updated to match the systems defined in the file."
|
msgid "On each restart, systems in the database will be updated to match the systems defined in the file."
|
||||||
msgstr "On each restart, systems in the database will be updated to match the systems defined in the file."
|
msgstr "On each restart, systems in the database will be updated to match the systems defined in the file."
|
||||||
|
|
||||||
#: src/components/login/auth-form.tsx
|
|
||||||
msgid "One-time password"
|
|
||||||
msgstr "One-time password"
|
|
||||||
|
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
@@ -866,14 +828,6 @@ msgstr "Read"
|
|||||||
msgid "Received"
|
msgid "Received"
|
||||||
msgstr "Received"
|
msgstr "Received"
|
||||||
|
|
||||||
#: src/components/login/login.tsx
|
|
||||||
msgid "Request a one-time password"
|
|
||||||
msgstr "Request a one-time password"
|
|
||||||
|
|
||||||
#: src/components/login/otp-forms.tsx
|
|
||||||
msgid "Request OTP"
|
|
||||||
msgstr "Request OTP"
|
|
||||||
|
|
||||||
#: src/components/login/forgot-pass-form.tsx
|
#: src/components/login/forgot-pass-form.tsx
|
||||||
msgid "Reset Password"
|
msgid "Reset Password"
|
||||||
msgstr "Reset Password"
|
msgstr "Reset Password"
|
||||||
@@ -929,6 +883,10 @@ msgstr "Sent"
|
|||||||
msgid "Set percentage thresholds for meter colors."
|
msgid "Set percentage thresholds for meter colors."
|
||||||
msgstr "Set percentage thresholds for meter colors."
|
msgstr "Set percentage thresholds for meter colors."
|
||||||
|
|
||||||
|
#: src/components/routes/settings/general.tsx
|
||||||
|
msgid "Sets the default time range for charts when a system is viewed."
|
||||||
|
msgstr "Sets the default time range for charts when a system is viewed."
|
||||||
|
|
||||||
#: src/components/command-palette.tsx
|
#: src/components/command-palette.tsx
|
||||||
#: src/components/command-palette.tsx
|
#: src/components/command-palette.tsx
|
||||||
#: src/components/routes/settings/layout.tsx
|
#: src/components/routes/settings/layout.tsx
|
||||||
@@ -1039,10 +997,6 @@ msgstr "Throughput of {extraFsName}"
|
|||||||
msgid "Throughput of root filesystem"
|
msgid "Throughput of root filesystem"
|
||||||
msgstr "Throughput of root filesystem"
|
msgstr "Throughput of root filesystem"
|
||||||
|
|
||||||
#: src/components/routes/settings/general.tsx
|
|
||||||
msgid "Time format"
|
|
||||||
msgstr "Time format"
|
|
||||||
|
|
||||||
#: src/components/routes/settings/notifications.tsx
|
#: src/components/routes/settings/notifications.tsx
|
||||||
msgid "To email(s)"
|
msgid "To email(s)"
|
||||||
msgstr "To email(s)"
|
msgstr "To email(s)"
|
||||||
@@ -1075,14 +1029,6 @@ msgstr "Tokens allow agents to connect and register. Fingerprints are stable ide
|
|||||||
msgid "Tokens and fingerprints are used to authenticate WebSocket connections to the hub."
|
msgid "Tokens and fingerprints are used to authenticate WebSocket connections to the hub."
|
||||||
msgstr "Tokens and fingerprints are used to authenticate WebSocket connections to the hub."
|
msgstr "Tokens and fingerprints are used to authenticate WebSocket connections to the hub."
|
||||||
|
|
||||||
#: src/components/routes/system/network-sheet.tsx
|
|
||||||
msgid "Total data received for each interface"
|
|
||||||
msgstr "Total data received for each interface"
|
|
||||||
|
|
||||||
#: src/components/routes/system/network-sheet.tsx
|
|
||||||
msgid "Total data sent for each interface"
|
|
||||||
msgstr "Total data sent for each interface"
|
|
||||||
|
|
||||||
#: src/lib/alerts.ts
|
#: src/lib/alerts.ts
|
||||||
msgid "Triggers when 1 minute load average exceeds a threshold"
|
msgid "Triggers when 1 minute load average exceeds a threshold"
|
||||||
msgstr "Triggers when 1 minute load average exceeds a threshold"
|
msgstr "Triggers when 1 minute load average exceeds a threshold"
|
||||||
@@ -1144,10 +1090,6 @@ msgstr "Up"
|
|||||||
msgid "Up ({upSystemsLength})"
|
msgid "Up ({upSystemsLength})"
|
||||||
msgstr "Up ({upSystemsLength})"
|
msgstr "Up ({upSystemsLength})"
|
||||||
|
|
||||||
#: src/components/routes/system/network-sheet.tsx
|
|
||||||
msgid "Upload"
|
|
||||||
msgstr "Upload"
|
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
msgid "Uptime"
|
msgid "Uptime"
|
||||||
msgstr "Uptime"
|
msgstr "Uptime"
|
||||||
@@ -1181,10 +1123,6 @@ msgstr "Value"
|
|||||||
msgid "View"
|
msgid "View"
|
||||||
msgstr "View"
|
msgstr "View"
|
||||||
|
|
||||||
#: src/components/routes/system/network-sheet.tsx
|
|
||||||
msgid "View more"
|
|
||||||
msgstr "View more"
|
|
||||||
|
|
||||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||||
msgid "View your 200 most recent alerts."
|
msgid "View your 200 most recent alerts."
|
||||||
msgstr "View your 200 most recent alerts."
|
msgstr "View your 200 most recent alerts."
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -8,30 +8,15 @@ msgstr ""
|
|||||||
"Language: fa\n"
|
"Language: fa\n"
|
||||||
"Project-Id-Version: beszel\n"
|
"Project-Id-Version: beszel\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"PO-Revision-Date: 2025-08-28 23:21\n"
|
"PO-Revision-Date: 2025-12-02 23:18\n"
|
||||||
"Last-Translator: \n"
|
"Last-Translator: \n"
|
||||||
"Language-Team: Persian\n"
|
"Language-Team: Persian\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
"X-Crowdin-Project: beszel\n"
|
"X-Crowdin-Project: beszel\n"
|
||||||
"X-Crowdin-Project-ID: 733311\n"
|
"X-Crowdin-Project-ID: 733311\n"
|
||||||
"X-Crowdin-Language: fa\n"
|
"X-Crowdin-Language: fa\n"
|
||||||
"X-Crowdin-File: /main/beszel/site/src/locales/en/en.po\n"
|
"X-Crowdin-File: /main/internal/site/src/locales/en/en.po\n"
|
||||||
"X-Crowdin-File-ID: 16\n"
|
"X-Crowdin-File-ID: 32\n"
|
||||||
|
|
||||||
#. placeholder {0}: Math.trunc(system.info?.u / 86400)
|
|
||||||
#: src/components/routes/system.tsx
|
|
||||||
msgid "{0, plural, one {# day} other {# days}}"
|
|
||||||
msgstr "{0, plural, one {# روز} other {# روز}}"
|
|
||||||
|
|
||||||
#. placeholder {0}: Math.trunc(system.info.u / 3600)
|
|
||||||
#: src/components/routes/system.tsx
|
|
||||||
msgid "{0, plural, one {# hour} other {# hours}}"
|
|
||||||
msgstr "{0, plural, one {# ساعت} other {# ساعت}}"
|
|
||||||
|
|
||||||
#. placeholder {0}: Math.trunc(system.info.u / 60)
|
|
||||||
#: src/components/routes/system.tsx
|
|
||||||
msgid "{0, plural, one {# minute} few {# minutes} many {# minutes} other {# minutes}}"
|
|
||||||
msgstr "{0, plural, one {# دقیقه} few {# دقیقه} many {# دقیقه} other {# دقیقه}}"
|
|
||||||
|
|
||||||
#. placeholder {0}: table.getFilteredSelectedRowModel().rows.length
|
#. placeholder {0}: table.getFilteredSelectedRowModel().rows.length
|
||||||
#. placeholder {1}: table.getFilteredRowModel().rows.length
|
#. placeholder {1}: table.getFilteredRowModel().rows.length
|
||||||
@@ -39,6 +24,18 @@ msgstr "{0, plural, one {# دقیقه} few {# دقیقه} many {# دقیقه} ot
|
|||||||
msgid "{0} of {1} row(s) selected."
|
msgid "{0} of {1} row(s) selected."
|
||||||
msgstr "{0} از {1} ردیف انتخاب شده است."
|
msgstr "{0} از {1} ردیف انتخاب شده است."
|
||||||
|
|
||||||
|
#: src/lib/utils.ts
|
||||||
|
msgid "{count, plural, one {{countString} day} other {{countString} days}}"
|
||||||
|
msgstr "{count, plural, one {{countString} روز} other {{countString} روز}}"
|
||||||
|
|
||||||
|
#: src/lib/utils.ts
|
||||||
|
msgid "{count, plural, one {{countString} hour} other {{countString} hours}}"
|
||||||
|
msgstr "{count, plural, one {{countString} ساعت} other {{countString} ساعت}}"
|
||||||
|
|
||||||
|
#: src/lib/utils.ts
|
||||||
|
msgid "{count, plural, one {{countString} minute} few {{countString} minutes} many {{countString} minutes} other {{countString} minutes}}"
|
||||||
|
msgstr "{count, plural, one {{countString} دقیقه} few {{countString} دقیقه} many {{countString} دقیقه} other {{countString} دقیقه}}"
|
||||||
|
|
||||||
#: src/lib/utils.ts
|
#: src/lib/utils.ts
|
||||||
msgid "1 hour"
|
msgid "1 hour"
|
||||||
msgstr "۱ ساعت"
|
msgstr "۱ ساعت"
|
||||||
@@ -48,6 +45,10 @@ msgstr "۱ ساعت"
|
|||||||
msgid "1 min"
|
msgid "1 min"
|
||||||
msgstr "۱ دقیقه"
|
msgstr "۱ دقیقه"
|
||||||
|
|
||||||
|
#: src/lib/utils.ts
|
||||||
|
msgid "1 minute"
|
||||||
|
msgstr "1 دقیقه"
|
||||||
|
|
||||||
#: src/lib/utils.ts
|
#: src/lib/utils.ts
|
||||||
msgid "1 week"
|
msgid "1 week"
|
||||||
msgstr "۱ هفته"
|
msgstr "۱ هفته"
|
||||||
@@ -75,28 +76,37 @@ msgid "5 min"
|
|||||||
msgstr "۵ دقیقه"
|
msgstr "۵ دقیقه"
|
||||||
|
|
||||||
#. Table column
|
#. Table column
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
msgid "Actions"
|
msgid "Actions"
|
||||||
msgstr "عملیات"
|
msgstr "عملیات"
|
||||||
|
|
||||||
#: src/components/alerts-history-columns.tsx
|
#: src/components/alerts-history-columns.tsx
|
||||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
msgid "Active"
|
msgid "Active"
|
||||||
msgstr "فعال"
|
msgstr "فعال"
|
||||||
|
|
||||||
#: src/components/routes/home.tsx
|
#: src/components/active-alerts.tsx
|
||||||
msgid "Active Alerts"
|
msgid "Active Alerts"
|
||||||
msgstr " هشدارهای فعال"
|
msgstr " هشدارهای فعال"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Active state"
|
||||||
|
msgstr "وضعیت فعال"
|
||||||
|
|
||||||
|
#: src/components/add-system.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "Add {foo}"
|
||||||
|
msgstr "افزودن {foo}"
|
||||||
|
|
||||||
#: src/components/add-system.tsx
|
#: src/components/add-system.tsx
|
||||||
msgid "Add <0>System</0>"
|
msgid "Add <0>System</0>"
|
||||||
msgstr "افزودن <0>سیستم</0>"
|
msgstr "افزودن <0>سیستم</0>"
|
||||||
|
|
||||||
#: src/components/add-system.tsx
|
|
||||||
msgid "Add New System"
|
|
||||||
msgstr "افزودن سیستم جدید"
|
|
||||||
|
|
||||||
#: src/components/add-system.tsx
|
#: src/components/add-system.tsx
|
||||||
msgid "Add system"
|
msgid "Add system"
|
||||||
msgstr "افزودن سیستم"
|
msgstr "افزودن سیستم"
|
||||||
@@ -109,11 +119,19 @@ msgstr "افزودن آدرس اینترنتی"
|
|||||||
msgid "Adjust display options for charts."
|
msgid "Adjust display options for charts."
|
||||||
msgstr "تنظیم گزینههای نمایش برای نمودارها."
|
msgstr "تنظیم گزینههای نمایش برای نمودارها."
|
||||||
|
|
||||||
|
#: src/components/routes/settings/general.tsx
|
||||||
|
msgid "Adjust the width of the main layout"
|
||||||
|
msgstr "تنظیم عرض چیدمان اصلی"
|
||||||
|
|
||||||
#: src/components/command-palette.tsx
|
#: src/components/command-palette.tsx
|
||||||
#: src/components/command-palette.tsx
|
#: src/components/command-palette.tsx
|
||||||
msgid "Admin"
|
msgid "Admin"
|
||||||
msgstr "مدیر"
|
msgstr "مدیر"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "After"
|
||||||
|
msgstr "بعد از"
|
||||||
|
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
msgid "Agent"
|
msgid "Agent"
|
||||||
msgstr "عامل"
|
msgstr "عامل"
|
||||||
@@ -129,7 +147,16 @@ msgstr "تاریخچه هشدارها"
|
|||||||
msgid "Alerts"
|
msgid "Alerts"
|
||||||
msgstr "هشدارها"
|
msgstr "هشدارها"
|
||||||
|
|
||||||
|
#: src/components/command-palette.tsx
|
||||||
|
#: src/components/containers-table/containers-table.tsx
|
||||||
|
#: src/components/routes/containers.tsx
|
||||||
|
msgid "All Containers"
|
||||||
|
msgstr "همه کانتینرها"
|
||||||
|
|
||||||
#: src/components/alerts/alerts-sheet.tsx
|
#: src/components/alerts/alerts-sheet.tsx
|
||||||
|
#: src/components/command-palette.tsx
|
||||||
|
#: src/components/routes/home.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
#: src/components/systems-table/systems-table.tsx
|
#: src/components/systems-table/systems-table.tsx
|
||||||
#: src/components/systems-table/systems-table.tsx
|
#: src/components/systems-table/systems-table.tsx
|
||||||
msgid "All Systems"
|
msgid "All Systems"
|
||||||
@@ -191,6 +218,18 @@ msgstr "پهنای باند"
|
|||||||
msgid "Battery"
|
msgid "Battery"
|
||||||
msgstr "باتری"
|
msgstr "باتری"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Became active"
|
||||||
|
msgstr "فعال شد"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Became inactive"
|
||||||
|
msgstr "غیرفعال شد"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Before"
|
||||||
|
msgstr "قبل از"
|
||||||
|
|
||||||
#: src/components/login/auth-form.tsx
|
#: src/components/login/auth-form.tsx
|
||||||
msgid "Beszel supports OpenID Connect and many OAuth2 authentication providers."
|
msgid "Beszel supports OpenID Connect and many OAuth2 authentication providers."
|
||||||
msgstr "بِزل از OpenID Connect و بسیاری از ارائهدهندگان احراز هویت OAuth2 پشتیبانی میکند."
|
msgstr "بِزل از OpenID Connect و بسیاری از ارائهدهندگان احراز هویت OAuth2 پشتیبانی میکند."
|
||||||
@@ -208,6 +247,10 @@ msgstr "دودویی"
|
|||||||
msgid "Bits (Kbps, Mbps, Gbps)"
|
msgid "Bits (Kbps, Mbps, Gbps)"
|
||||||
msgstr "بیت (کیلوبیت بر ثانیه، مگابیت بر ثانیه، گیگابیت بر ثانیه)"
|
msgstr "بیت (کیلوبیت بر ثانیه، مگابیت بر ثانیه، گیگابیت بر ثانیه)"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Boot state"
|
||||||
|
msgstr "وضعیت بوت"
|
||||||
|
|
||||||
#: src/components/routes/settings/general.tsx
|
#: src/components/routes/settings/general.tsx
|
||||||
#: src/components/routes/settings/general.tsx
|
#: src/components/routes/settings/general.tsx
|
||||||
msgid "Bytes (KB/s, MB/s, GB/s)"
|
msgid "Bytes (KB/s, MB/s, GB/s)"
|
||||||
@@ -217,11 +260,32 @@ msgstr "بایت (کیلوبایت بر ثانیه، مگابایت بر ثان
|
|||||||
msgid "Cache / Buffers"
|
msgid "Cache / Buffers"
|
||||||
msgstr "حافظه پنهان / بافرها"
|
msgstr "حافظه پنهان / بافرها"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Can reload"
|
||||||
|
msgstr "میتواند بارگذاری مجدد شود"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Can start"
|
||||||
|
msgstr "میتواند شروع شود"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Can stop"
|
||||||
|
msgstr "میتواند متوقف شود"
|
||||||
|
|
||||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "لغو"
|
msgstr "لغو"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Capabilities"
|
||||||
|
msgstr "قابلیتها"
|
||||||
|
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
msgid "Capacity"
|
||||||
|
msgstr "ظرفیت"
|
||||||
|
|
||||||
#: src/components/routes/settings/config-yaml.tsx
|
#: src/components/routes/settings/config-yaml.tsx
|
||||||
msgid "Caution - potential data loss"
|
msgid "Caution - potential data loss"
|
||||||
msgstr "احتیاط - احتمال از دست رفتن دادهها"
|
msgstr "احتیاط - احتمال از دست رفتن دادهها"
|
||||||
@@ -263,6 +327,20 @@ msgstr "برای جزئیات بیشتر، لاگها را بررسی کنی
|
|||||||
msgid "Check your notification service"
|
msgid "Check your notification service"
|
||||||
msgstr "سرویس اطلاعرسانی خود را بررسی کنید"
|
msgstr "سرویس اطلاعرسانی خود را بررسی کنید"
|
||||||
|
|
||||||
|
#: src/components/containers-table/containers-table.tsx
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
#: src/components/systems-table/systems-table.tsx
|
||||||
|
msgid "Clear"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/components/containers-table/containers-table.tsx
|
||||||
|
msgid "Click on a container to view more information."
|
||||||
|
msgstr "برای مشاهده اطلاعات بیشتر روی کانتینر کلیک کنید."
|
||||||
|
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
msgid "Click on a device to view more information."
|
||||||
|
msgstr "برای مشاهده اطلاعات بیشتر روی دستگاه کلیک کنید."
|
||||||
|
|
||||||
#: src/components/systems-table/systems-table.tsx
|
#: src/components/systems-table/systems-table.tsx
|
||||||
msgid "Click on a system to view more information."
|
msgid "Click on a system to view more information."
|
||||||
msgstr "برای مشاهده اطلاعات بیشتر روی یک سیستم کلیک کنید."
|
msgstr "برای مشاهده اطلاعات بیشتر روی یک سیستم کلیک کنید."
|
||||||
@@ -285,7 +363,11 @@ msgstr "نحوه دریافت هشدارهای اطلاعرسانی را پی
|
|||||||
msgid "Confirm password"
|
msgid "Confirm password"
|
||||||
msgstr "تأیید رمز عبور"
|
msgstr "تأیید رمز عبور"
|
||||||
|
|
||||||
#: src/components/routes/home.tsx
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Conflicts"
|
||||||
|
msgstr "تعارضها"
|
||||||
|
|
||||||
|
#: src/components/active-alerts.tsx
|
||||||
msgid "Connection is down"
|
msgid "Connection is down"
|
||||||
msgstr "اتصال قطع است"
|
msgstr "اتصال قطع است"
|
||||||
|
|
||||||
@@ -344,16 +426,39 @@ msgstr "محتوای <0>docker-compose.yml</0> عامل زیر را کپی کن
|
|||||||
msgid "Copy YAML"
|
msgid "Copy YAML"
|
||||||
msgstr "کپی YAML"
|
msgstr "کپی YAML"
|
||||||
|
|
||||||
|
#: src/components/containers-table/containers-table-columns.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table-columns.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
msgid "CPU"
|
msgid "CPU"
|
||||||
msgstr "پردازنده"
|
msgstr "پردازنده"
|
||||||
|
|
||||||
|
#: src/components/routes/system/cpu-sheet.tsx
|
||||||
|
msgid "CPU Cores"
|
||||||
|
msgstr "هستههای CPU"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table-columns.tsx
|
||||||
|
msgid "CPU Peak"
|
||||||
|
msgstr "حداکثر CPU"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "CPU time"
|
||||||
|
msgstr "زمان CPU"
|
||||||
|
|
||||||
|
#: src/components/routes/system/cpu-sheet.tsx
|
||||||
|
msgid "CPU Time Breakdown"
|
||||||
|
msgstr "تجزیه زمان CPU"
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
|
#: src/components/routes/system/cpu-sheet.tsx
|
||||||
#: src/lib/alerts.ts
|
#: src/lib/alerts.ts
|
||||||
msgid "CPU Usage"
|
msgid "CPU Usage"
|
||||||
msgstr "میزان استفاده از پردازنده"
|
msgstr "میزان استفاده از پردازنده"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "Create"
|
||||||
|
msgstr "ایجاد"
|
||||||
|
|
||||||
#: src/components/login/auth-form.tsx
|
#: src/components/login/auth-form.tsx
|
||||||
msgid "Create account"
|
msgid "Create account"
|
||||||
msgstr "ایجاد حساب کاربری"
|
msgstr "ایجاد حساب کاربری"
|
||||||
@@ -380,16 +485,23 @@ msgstr "آپلود تجمعی"
|
|||||||
msgid "Current state"
|
msgid "Current state"
|
||||||
msgstr "وضعیت فعلی"
|
msgstr "وضعیت فعلی"
|
||||||
|
|
||||||
#: src/components/command-palette.tsx
|
#. Power Cycles
|
||||||
#: src/components/routes/home.tsx
|
#: src/components/routes/system/smart-table.tsx
|
||||||
msgid "Dashboard"
|
msgid "Cycles"
|
||||||
msgstr "داشبورد"
|
msgstr "چرخهها"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "Daily"
|
||||||
|
msgstr "روزانه"
|
||||||
|
|
||||||
#: src/components/routes/settings/general.tsx
|
#: src/components/routes/settings/general.tsx
|
||||||
msgid "Default time period"
|
msgid "Default time period"
|
||||||
msgstr "بازه زمانی پیشفرض"
|
msgstr "بازه زمانی پیشفرض"
|
||||||
|
|
||||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
msgid "Delete"
|
msgid "Delete"
|
||||||
msgstr "حذف"
|
msgstr "حذف"
|
||||||
@@ -398,6 +510,18 @@ msgstr "حذف"
|
|||||||
msgid "Delete fingerprint"
|
msgid "Delete fingerprint"
|
||||||
msgstr "حذف اثر انگشت"
|
msgstr "حذف اثر انگشت"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Description"
|
||||||
|
msgstr "توضیحات"
|
||||||
|
|
||||||
|
#: src/components/containers-table/containers-table.tsx
|
||||||
|
msgid "Detail"
|
||||||
|
msgstr "جزئیات"
|
||||||
|
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
msgid "Device"
|
||||||
|
msgstr "دستگاه"
|
||||||
|
|
||||||
#. Context: Battery state
|
#. Context: Battery state
|
||||||
#: src/lib/i18n.ts
|
#: src/lib/i18n.ts
|
||||||
msgid "Discharging"
|
msgid "Discharging"
|
||||||
@@ -438,6 +562,7 @@ msgid "Docker Network I/O"
|
|||||||
msgstr "ورودی/خروجی شبکه داکر"
|
msgstr "ورودی/خروجی شبکه داکر"
|
||||||
|
|
||||||
#: src/components/command-palette.tsx
|
#: src/components/command-palette.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
msgid "Documentation"
|
msgid "Documentation"
|
||||||
msgstr "مستندات"
|
msgstr "مستندات"
|
||||||
|
|
||||||
@@ -461,11 +586,16 @@ msgstr "دانلود"
|
|||||||
msgid "Duration"
|
msgid "Duration"
|
||||||
msgstr "مدت زمان"
|
msgstr "مدت زمان"
|
||||||
|
|
||||||
#: src/components/add-system.tsx
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
msgid "Edit"
|
msgid "Edit"
|
||||||
msgstr "ویرایش"
|
msgstr "ویرایش"
|
||||||
|
|
||||||
|
#: src/components/add-system.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "Edit {foo}"
|
||||||
|
msgstr "ویرایش {foo}"
|
||||||
|
|
||||||
#: src/components/login/auth-form.tsx
|
#: src/components/login/auth-form.tsx
|
||||||
#: src/components/login/forgot-pass-form.tsx
|
#: src/components/login/forgot-pass-form.tsx
|
||||||
#: src/components/login/otp-forms.tsx
|
#: src/components/login/otp-forms.tsx
|
||||||
@@ -481,6 +611,11 @@ msgstr "اعلانهای ایمیلی"
|
|||||||
msgid "Empty"
|
msgid "Empty"
|
||||||
msgstr "خالی"
|
msgstr "خالی"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "End Time"
|
||||||
|
msgstr "زمان پایان"
|
||||||
|
|
||||||
#: src/components/login/login.tsx
|
#: src/components/login/login.tsx
|
||||||
msgid "Enter email address to reset password"
|
msgid "Enter email address to reset password"
|
||||||
msgstr "آدرس ایمیل را برای بازنشانی رمز عبور وارد کنید"
|
msgstr "آدرس ایمیل را برای بازنشانی رمز عبور وارد کنید"
|
||||||
@@ -497,21 +632,32 @@ msgstr "رمز عبور یکبار مصرف خود را وارد کنید."
|
|||||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||||
#: src/components/routes/settings/config-yaml.tsx
|
#: src/components/routes/settings/config-yaml.tsx
|
||||||
#: src/components/routes/settings/notifications.tsx
|
#: src/components/routes/settings/notifications.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
msgid "Error"
|
msgid "Error"
|
||||||
msgstr "خطا"
|
msgstr "خطا"
|
||||||
|
|
||||||
#. placeholder {0}: alert.value
|
#. placeholder {0}: alert.value
|
||||||
#. placeholder {1}: info.unit
|
#. placeholder {1}: info.unit
|
||||||
#. placeholder {2}: alert.min
|
#. placeholder {2}: alert.min
|
||||||
#: src/components/routes/home.tsx
|
#: src/components/active-alerts.tsx
|
||||||
msgid "Exceeds {0}{1} in last {2, plural, one {# minute} other {# minutes}}"
|
msgid "Exceeds {0}{1} in last {2, plural, one {# minute} other {# minutes}}"
|
||||||
msgstr "در {2, plural, one {# دقیقه} other {# دقیقه}} گذشته از {0}{1} بیشتر است"
|
msgstr "در {2, plural, one {# دقیقه} other {# دقیقه}} گذشته از {0}{1} بیشتر است"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Exec main PID"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/components/routes/settings/config-yaml.tsx
|
#: src/components/routes/settings/config-yaml.tsx
|
||||||
msgid "Existing systems not defined in <0>config.yml</0> will be deleted. Please make regular backups."
|
msgid "Existing systems not defined in <0>config.yml</0> will be deleted. Please make regular backups."
|
||||||
msgstr "سیستمهای موجود که در <0>config.yml</0> تعریف نشدهاند حذف خواهند شد. لطفاً به طور منظم پشتیبانگیری کنید."
|
msgstr "سیستمهای موجود که در <0>config.yml</0> تعریف نشدهاند حذف خواهند شد. لطفاً به طور منظم پشتیبانگیری کنید."
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Exited active"
|
||||||
|
msgstr "خروج فعال"
|
||||||
|
|
||||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||||
msgid "Export"
|
msgid "Export"
|
||||||
msgstr "خروجی گرفتن"
|
msgstr "خروجی گرفتن"
|
||||||
@@ -528,12 +674,21 @@ msgstr "پیکربندی سیستمهای فعلی خود را خارج کن
|
|||||||
msgid "Fahrenheit (°F)"
|
msgid "Fahrenheit (°F)"
|
||||||
msgstr "فارنهایت (°F)"
|
msgstr "فارنهایت (°F)"
|
||||||
|
|
||||||
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
|
msgid "Failed"
|
||||||
|
msgstr "ناموفق"
|
||||||
|
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
msgid "Failed Attributes:"
|
||||||
|
msgstr "ویژگیهای ناموفق:"
|
||||||
|
|
||||||
#: src/lib/api.ts
|
#: src/lib/api.ts
|
||||||
msgid "Failed to authenticate"
|
msgid "Failed to authenticate"
|
||||||
msgstr "احراز هویت ناموفق بود"
|
msgstr "احراز هویت ناموفق بود"
|
||||||
|
|
||||||
#: src/components/routes/settings/layout.tsx
|
#: src/components/routes/settings/layout.tsx
|
||||||
#: src/components/routes/settings/notifications.tsx
|
#: src/components/routes/settings/notifications.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
msgid "Failed to save settings"
|
msgid "Failed to save settings"
|
||||||
msgstr "ذخیره تنظیمات ناموفق بود"
|
msgstr "ذخیره تنظیمات ناموفق بود"
|
||||||
|
|
||||||
@@ -545,8 +700,16 @@ msgstr "ارسال اعلان آزمایشی ناموفق بود"
|
|||||||
msgid "Failed to update alert"
|
msgid "Failed to update alert"
|
||||||
msgstr "بهروزرسانی هشدار ناموفق بود"
|
msgstr "بهروزرسانی هشدار ناموفق بود"
|
||||||
|
|
||||||
|
#. placeholder {0}: statusTotals[ServiceStatus.Failed]
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Failed: {0}"
|
||||||
|
msgstr "ناموفق: {0}"
|
||||||
|
|
||||||
|
#: src/components/containers-table/containers-table.tsx
|
||||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
#: src/components/systems-table/systems-table.tsx
|
#: src/components/systems-table/systems-table.tsx
|
||||||
msgid "Filter..."
|
msgid "Filter..."
|
||||||
msgstr "فیلتر..."
|
msgstr "فیلتر..."
|
||||||
@@ -555,6 +718,10 @@ msgstr "فیلتر..."
|
|||||||
msgid "Fingerprint"
|
msgid "Fingerprint"
|
||||||
msgstr "اثر انگشت"
|
msgstr "اثر انگشت"
|
||||||
|
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
msgid "Firmware"
|
||||||
|
msgstr "فرمویر"
|
||||||
|
|
||||||
#: src/components/alerts/alerts-sheet.tsx
|
#: src/components/alerts/alerts-sheet.tsx
|
||||||
msgid "For <0>{min}</0> {min, plural, one {minute} other {minutes}}"
|
msgid "For <0>{min}</0> {min, plural, one {minute} other {minutes}}"
|
||||||
msgstr "برای <0>{min}</0> {min, plural, one {دقیقه} other {دقیقه}}"
|
msgstr "برای <0>{min}</0> {min, plural, one {دقیقه} other {دقیقه}}"
|
||||||
@@ -580,6 +747,10 @@ msgstr "پر"
|
|||||||
msgid "General"
|
msgid "General"
|
||||||
msgstr "عمومی"
|
msgstr "عمومی"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "Global"
|
||||||
|
msgstr "جهانی"
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
msgid "GPU Engines"
|
msgid "GPU Engines"
|
||||||
msgstr "موتورهای GPU"
|
msgstr "موتورهای GPU"
|
||||||
@@ -588,10 +759,18 @@ msgstr "موتورهای GPU"
|
|||||||
msgid "GPU Power Draw"
|
msgid "GPU Power Draw"
|
||||||
msgstr "مصرف برق پردازنده گرافیکی"
|
msgstr "مصرف برق پردازنده گرافیکی"
|
||||||
|
|
||||||
|
#: src/lib/alerts.ts
|
||||||
|
msgid "GPU Usage"
|
||||||
|
msgstr "میزان استفاده از GPU"
|
||||||
|
|
||||||
#: src/components/systems-table/systems-table.tsx
|
#: src/components/systems-table/systems-table.tsx
|
||||||
msgid "Grid"
|
msgid "Grid"
|
||||||
msgstr "جدول"
|
msgstr "جدول"
|
||||||
|
|
||||||
|
#: src/components/containers-table/containers-table-columns.tsx
|
||||||
|
msgid "Health"
|
||||||
|
msgstr "سلامتی"
|
||||||
|
|
||||||
#: src/components/add-system.tsx
|
#: src/components/add-system.tsx
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
msgctxt "Button to copy install command"
|
msgctxt "Button to copy install command"
|
||||||
@@ -611,6 +790,15 @@ msgstr "بیکار"
|
|||||||
msgid "If you've lost the password to your admin account, you may reset it using the following command."
|
msgid "If you've lost the password to your admin account, you may reset it using the following command."
|
||||||
msgstr "اگر رمز عبور حساب مدیر خود را گم کردهاید، میتوانید آن را با استفاده از دستور زیر بازنشانی کنید."
|
msgstr "اگر رمز عبور حساب مدیر خود را گم کردهاید، میتوانید آن را با استفاده از دستور زیر بازنشانی کنید."
|
||||||
|
|
||||||
|
#: src/components/containers-table/containers-table-columns.tsx
|
||||||
|
msgctxt "Docker image"
|
||||||
|
msgid "Image"
|
||||||
|
msgstr "تصویر"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "Inactive"
|
||||||
|
msgstr "غیرفعال"
|
||||||
|
|
||||||
#: src/components/login/auth-form.tsx
|
#: src/components/login/auth-form.tsx
|
||||||
msgid "Invalid email address."
|
msgid "Invalid email address."
|
||||||
msgstr "آدرس ایمیل نامعتبر است."
|
msgstr "آدرس ایمیل نامعتبر است."
|
||||||
@@ -628,6 +816,19 @@ msgstr "زبان"
|
|||||||
msgid "Layout"
|
msgid "Layout"
|
||||||
msgstr "طرحبندی"
|
msgstr "طرحبندی"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/general.tsx
|
||||||
|
msgid "Layout width"
|
||||||
|
msgstr "عرض چیدمان"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Lifecycle"
|
||||||
|
msgstr "چرخه حیات"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "limit"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
msgid "Load Average"
|
msgid "Load Average"
|
||||||
msgstr "میانگین بار"
|
msgstr "میانگین بار"
|
||||||
@@ -649,6 +850,14 @@ msgstr "میانگین بار ۵ دقیقه"
|
|||||||
msgid "Load Avg"
|
msgid "Load Avg"
|
||||||
msgstr "میانگین بار"
|
msgstr "میانگین بار"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Load state"
|
||||||
|
msgstr "وضعیت بارگذاری"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Loading..."
|
||||||
|
msgstr "در حال بارگذاری..."
|
||||||
|
|
||||||
#: src/components/navbar.tsx
|
#: src/components/navbar.tsx
|
||||||
msgid "Log Out"
|
msgid "Log Out"
|
||||||
msgstr "خروج"
|
msgstr "خروج"
|
||||||
@@ -663,6 +872,7 @@ msgid "Login attempt failed"
|
|||||||
msgstr "تلاش برای ورود ناموفق بود"
|
msgstr "تلاش برای ورود ناموفق بود"
|
||||||
|
|
||||||
#: src/components/command-palette.tsx
|
#: src/components/command-palette.tsx
|
||||||
|
#: src/components/containers-table/containers-table.tsx
|
||||||
#: src/components/navbar.tsx
|
#: src/components/navbar.tsx
|
||||||
msgid "Logs"
|
msgid "Logs"
|
||||||
msgstr "لاگها"
|
msgstr "لاگها"
|
||||||
@@ -671,6 +881,10 @@ msgstr "لاگها"
|
|||||||
msgid "Looking instead for where to create alerts? Click the bell <0/> icons in the systems table."
|
msgid "Looking instead for where to create alerts? Click the bell <0/> icons in the systems table."
|
||||||
msgstr "به دنبال جایی برای ایجاد هشدار هستید؟ روی آیکونهای زنگ <0/> در جدول سیستمها کلیک کنید."
|
msgstr "به دنبال جایی برای ایجاد هشدار هستید؟ روی آیکونهای زنگ <0/> در جدول سیستمها کلیک کنید."
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Main PID"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/components/routes/settings/layout.tsx
|
#: src/components/routes/settings/layout.tsx
|
||||||
msgid "Manage display and notification preferences."
|
msgid "Manage display and notification preferences."
|
||||||
msgstr "مدیریت تنظیمات نمایش و اعلانها."
|
msgstr "مدیریت تنظیمات نمایش و اعلانها."
|
||||||
@@ -685,10 +899,22 @@ msgstr "دستورالعملهای راهاندازی دستی"
|
|||||||
msgid "Max 1 min"
|
msgid "Max 1 min"
|
||||||
msgstr "حداکثر ۱ دقیقه"
|
msgstr "حداکثر ۱ دقیقه"
|
||||||
|
|
||||||
|
#: src/components/containers-table/containers-table-columns.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table-columns.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
msgid "Memory"
|
msgid "Memory"
|
||||||
msgstr "حافظه"
|
msgstr "حافظه"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Memory limit"
|
||||||
|
msgstr "محدودیت حافظه"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table-columns.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Memory Peak"
|
||||||
|
msgstr "حداکثر حافظه"
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
#: src/lib/alerts.ts
|
#: src/lib/alerts.ts
|
||||||
msgid "Memory Usage"
|
msgid "Memory Usage"
|
||||||
@@ -698,11 +924,19 @@ msgstr "میزان استفاده از حافظه"
|
|||||||
msgid "Memory usage of docker containers"
|
msgid "Memory usage of docker containers"
|
||||||
msgstr "میزان استفاده از حافظه کانتینرهای داکر"
|
msgstr "میزان استفاده از حافظه کانتینرهای داکر"
|
||||||
|
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
msgid "Model"
|
||||||
|
msgstr "مدل"
|
||||||
|
|
||||||
#: src/components/add-system.tsx
|
#: src/components/add-system.tsx
|
||||||
#: src/components/alerts-history-columns.tsx
|
#: src/components/alerts-history-columns.tsx
|
||||||
|
#: src/components/containers-table/containers-table-columns.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table-columns.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
msgid "Name"
|
msgid "Name"
|
||||||
msgstr "نام"
|
msgstr "نام"
|
||||||
|
|
||||||
|
#: src/components/containers-table/containers-table-columns.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
msgid "Net"
|
msgid "Net"
|
||||||
msgstr "شبکه"
|
msgstr "شبکه"
|
||||||
@@ -714,6 +948,7 @@ msgstr "ترافیک شبکه کانتینرهای داکر"
|
|||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
#: src/components/routes/system/network-sheet.tsx
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
#: src/components/routes/system/network-sheet.tsx
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
msgid "Network traffic of public interfaces"
|
msgid "Network traffic of public interfaces"
|
||||||
msgstr "ترافیک شبکه رابطهای عمومی"
|
msgstr "ترافیک شبکه رابطهای عمومی"
|
||||||
|
|
||||||
@@ -722,14 +957,30 @@ msgstr "ترافیک شبکه رابطهای عمومی"
|
|||||||
msgid "Network unit"
|
msgid "Network unit"
|
||||||
msgstr "واحد شبکه"
|
msgstr "واحد شبکه"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "No"
|
||||||
|
msgstr "خیر"
|
||||||
|
|
||||||
#: src/components/command-palette.tsx
|
#: src/components/command-palette.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
msgid "No results found."
|
msgid "No results found."
|
||||||
msgstr "هیچ نتیجهای یافت نشد."
|
msgstr "هیچ نتیجهای یافت نشد."
|
||||||
|
|
||||||
|
#: src/components/containers-table/containers-table.tsx
|
||||||
|
#: src/components/containers-table/containers-table.tsx
|
||||||
|
#: src/components/containers-table/containers-table.tsx
|
||||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
msgid "No results."
|
msgid "No results."
|
||||||
msgstr "نتیجهای یافت نشد."
|
msgstr "نتیجهای یافت نشد."
|
||||||
|
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
msgid "No S.M.A.R.T. attributes available for this device."
|
||||||
|
msgstr "هیچ ویژگی S.M.A.R.T برای این دستگاه موجود نیست."
|
||||||
|
|
||||||
#: src/components/systems-table/systems-table.tsx
|
#: src/components/systems-table/systems-table.tsx
|
||||||
#: src/components/systems-table/systems-table.tsx
|
#: src/components/systems-table/systems-table.tsx
|
||||||
msgid "No systems found."
|
msgid "No systems found."
|
||||||
@@ -749,12 +1000,19 @@ msgstr "پشتیبانی از OAuth 2 / OIDC"
|
|||||||
msgid "On each restart, systems in the database will be updated to match the systems defined in the file."
|
msgid "On each restart, systems in the database will be updated to match the systems defined in the file."
|
||||||
msgstr "در هر بار راهاندازی مجدد، سیستمهای موجود در پایگاه داده با سیستمهای تعریف شده در فایل مطابقت داده میشوند."
|
msgstr "در هر بار راهاندازی مجدد، سیستمهای موجود در پایگاه داده با سیستمهای تعریف شده در فایل مطابقت داده میشوند."
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "One-time"
|
||||||
|
msgstr "یکبار مصرف"
|
||||||
|
|
||||||
#: src/components/login/auth-form.tsx
|
#: src/components/login/auth-form.tsx
|
||||||
msgid "One-time password"
|
msgid "One-time password"
|
||||||
msgstr "رمز عبور یکبار مصرف"
|
msgstr "رمز عبور یکبار مصرف"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
msgid "Open menu"
|
msgid "Open menu"
|
||||||
msgstr "باز کردن منو"
|
msgstr "باز کردن منو"
|
||||||
@@ -763,10 +1021,16 @@ msgstr "باز کردن منو"
|
|||||||
msgid "Or continue with"
|
msgid "Or continue with"
|
||||||
msgstr "یا ادامه با"
|
msgstr "یا ادامه با"
|
||||||
|
|
||||||
|
#: src/components/routes/system/cpu-sheet.tsx
|
||||||
|
msgid "Other"
|
||||||
|
msgstr "سایر"
|
||||||
|
|
||||||
#: src/components/alerts/alerts-sheet.tsx
|
#: src/components/alerts/alerts-sheet.tsx
|
||||||
msgid "Overwrite existing alerts"
|
msgid "Overwrite existing alerts"
|
||||||
msgstr "بازنویسی هشدارهای موجود"
|
msgstr "بازنویسی هشدارهای موجود"
|
||||||
|
|
||||||
|
#: src/components/command-palette.tsx
|
||||||
|
#: src/components/command-palette.tsx
|
||||||
#: src/components/command-palette.tsx
|
#: src/components/command-palette.tsx
|
||||||
msgid "Page"
|
msgid "Page"
|
||||||
msgstr "صفحه"
|
msgstr "صفحه"
|
||||||
@@ -798,6 +1062,10 @@ msgstr "رمز عبور باید کمتر از ۷۲ بایت باشد."
|
|||||||
msgid "Password reset request received"
|
msgid "Password reset request received"
|
||||||
msgstr "درخواست بازنشانی رمز عبور دریافت شد"
|
msgstr "درخواست بازنشانی رمز عبور دریافت شد"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "Past"
|
||||||
|
msgstr "گذشته"
|
||||||
|
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
msgid "Pause"
|
msgid "Pause"
|
||||||
msgstr "توقف"
|
msgstr "توقف"
|
||||||
@@ -810,6 +1078,15 @@ msgstr "مکث شده"
|
|||||||
msgid "Paused ({pausedSystemsLength})"
|
msgid "Paused ({pausedSystemsLength})"
|
||||||
msgstr "مکث شده ({pausedSystemsLength})"
|
msgstr "مکث شده ({pausedSystemsLength})"
|
||||||
|
|
||||||
|
#: src/components/routes/system/cpu-sheet.tsx
|
||||||
|
#: src/components/routes/system/cpu-sheet.tsx
|
||||||
|
msgid "Per-core average utilization"
|
||||||
|
msgstr "میانگین استفاده در هر هسته"
|
||||||
|
|
||||||
|
#: src/components/routes/system/cpu-sheet.tsx
|
||||||
|
msgid "Percentage of time spent in each state"
|
||||||
|
msgstr "درصد زمان صرف شده در هر حالت"
|
||||||
|
|
||||||
#: src/components/routes/settings/notifications.tsx
|
#: src/components/routes/settings/notifications.tsx
|
||||||
msgid "Please <0>configure an SMTP server</0> to ensure alerts are delivered."
|
msgid "Please <0>configure an SMTP server</0> to ensure alerts are delivered."
|
||||||
msgstr "لطفاً برای اطمینان از تحویل هشدارها، یک <0>سرور SMTP پیکربندی کنید</0>."
|
msgstr "لطفاً برای اطمینان از تحویل هشدارها، یک <0>سرور SMTP پیکربندی کنید</0>."
|
||||||
@@ -847,6 +1124,11 @@ msgstr "لطفاً به حساب کاربری خود وارد شوید"
|
|||||||
msgid "Port"
|
msgid "Port"
|
||||||
msgstr "پورت"
|
msgstr "پورت"
|
||||||
|
|
||||||
|
#. Power On Time
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
msgid "Power On"
|
||||||
|
msgstr "روشن کردن"
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
msgid "Precise utilization at the recorded time"
|
msgid "Precise utilization at the recorded time"
|
||||||
@@ -856,11 +1138,19 @@ msgstr "میزان دقیق استفاده در زمان ثبت شده"
|
|||||||
msgid "Preferred Language"
|
msgid "Preferred Language"
|
||||||
msgstr "زبان ترجیحی"
|
msgstr "زبان ترجیحی"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Process started"
|
||||||
|
msgstr "فرآیند شروع شد"
|
||||||
|
|
||||||
#. Use 'Key' if your language requires many more characters
|
#. Use 'Key' if your language requires many more characters
|
||||||
#: src/components/add-system.tsx
|
#: src/components/add-system.tsx
|
||||||
msgid "Public Key"
|
msgid "Public Key"
|
||||||
msgstr "کلید عمومی"
|
msgstr "کلید عمومی"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "Quiet Hours"
|
||||||
|
msgstr "ساعات آرام"
|
||||||
|
|
||||||
#. Disk read
|
#. Disk read
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
@@ -871,6 +1161,16 @@ msgstr "خواندن"
|
|||||||
msgid "Received"
|
msgid "Received"
|
||||||
msgstr "دریافت شد"
|
msgstr "دریافت شد"
|
||||||
|
|
||||||
|
#: src/components/containers-table/containers-table.tsx
|
||||||
|
#: src/components/containers-table/containers-table.tsx
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
msgid "Refresh"
|
||||||
|
msgstr "تازهسازی"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Relationships"
|
||||||
|
msgstr "روابط"
|
||||||
|
|
||||||
#: src/components/login/login.tsx
|
#: src/components/login/login.tsx
|
||||||
msgid "Request a one-time password"
|
msgid "Request a one-time password"
|
||||||
msgstr "درخواست رمز عبور یکبار مصرف"
|
msgstr "درخواست رمز عبور یکبار مصرف"
|
||||||
@@ -879,6 +1179,14 @@ msgstr "درخواست رمز عبور یکبار مصرف"
|
|||||||
msgid "Request OTP"
|
msgid "Request OTP"
|
||||||
msgstr "درخواست OTP"
|
msgstr "درخواست OTP"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Required by"
|
||||||
|
msgstr "مورد نیاز توسط"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Requires"
|
||||||
|
msgstr "نیازمند"
|
||||||
|
|
||||||
#: src/components/login/forgot-pass-form.tsx
|
#: src/components/login/forgot-pass-form.tsx
|
||||||
msgid "Reset Password"
|
msgid "Reset Password"
|
||||||
msgstr "بازنشانی رمز عبور"
|
msgstr "بازنشانی رمز عبور"
|
||||||
@@ -889,10 +1197,19 @@ msgstr "بازنشانی رمز عبور"
|
|||||||
msgid "Resolved"
|
msgid "Resolved"
|
||||||
msgstr "حل شده"
|
msgstr "حل شده"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Restarts"
|
||||||
|
msgstr "راهاندازی مجدد"
|
||||||
|
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
msgid "Resume"
|
msgid "Resume"
|
||||||
msgstr "ادامه"
|
msgstr "ادامه"
|
||||||
|
|
||||||
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
|
msgctxt "Root disk label"
|
||||||
|
msgid "Root"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
msgid "Rotate token"
|
msgid "Rotate token"
|
||||||
msgstr "چرخش توکن"
|
msgstr "چرخش توکن"
|
||||||
@@ -901,6 +1218,18 @@ msgstr "چرخش توکن"
|
|||||||
msgid "Rows per page"
|
msgid "Rows per page"
|
||||||
msgstr "ردیف در هر صفحه"
|
msgstr "ردیف در هر صفحه"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Runtime Metrics"
|
||||||
|
msgstr "معیارهای زمان اجرا"
|
||||||
|
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
msgid "S.M.A.R.T. Details"
|
||||||
|
msgstr "جزئیات S.M.A.R.T"
|
||||||
|
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
msgid "S.M.A.R.T. Self-Test"
|
||||||
|
msgstr "تست خود S.M.A.R.T"
|
||||||
|
|
||||||
#: src/components/routes/settings/notifications.tsx
|
#: src/components/routes/settings/notifications.tsx
|
||||||
msgid "Save address using enter key or comma. Leave blank to disable email notifications."
|
msgid "Save address using enter key or comma. Leave blank to disable email notifications."
|
||||||
msgstr "آدرس را با استفاده از کلید Enter یا کاما ذخیره کنید. برای غیرفعال کردن اعلانهای ایمیلی، خالی بگذارید."
|
msgstr "آدرس را با استفاده از کلید Enter یا کاما ذخیره کنید. برای غیرفعال کردن اعلانهای ایمیلی، خالی بگذارید."
|
||||||
@@ -914,6 +1243,18 @@ msgstr "ذخیره تنظیمات"
|
|||||||
msgid "Save system"
|
msgid "Save system"
|
||||||
msgstr "ذخیره سیستم"
|
msgstr "ذخیره سیستم"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "Schedule"
|
||||||
|
msgstr "برنامهریزی"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "Schedule quiet hours where notifications will not be sent, such as during maintenance periods."
|
||||||
|
msgstr "برنامهریزی ساعات آرام که در آن اعلانها ارسال نخواهند شد، مانند در طول دورههای تعمیر و نگهداری."
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "Schedule quiet hours where notifications will not be sent."
|
||||||
|
msgstr "برنامهریزی ساعات آرام که در آن اعلانها ارسال نخواهند شد."
|
||||||
|
|
||||||
#: src/components/navbar.tsx
|
#: src/components/navbar.tsx
|
||||||
msgid "Search"
|
msgid "Search"
|
||||||
msgstr "جستجو"
|
msgstr "جستجو"
|
||||||
@@ -926,10 +1267,26 @@ msgstr "جستجو برای سیستمها یا تنظیمات..."
|
|||||||
msgid "See <0>notification settings</0> to configure how you receive alerts."
|
msgid "See <0>notification settings</0> to configure how you receive alerts."
|
||||||
msgstr "برای پیکربندی نحوه دریافت هشدارها، به <0>تنظیمات اعلان</0> مراجعه کنید."
|
msgstr "برای پیکربندی نحوه دریافت هشدارها، به <0>تنظیمات اعلان</0> مراجعه کنید."
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "Select {foo}"
|
||||||
|
msgstr "انتخاب {foo}"
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
msgid "Sent"
|
msgid "Sent"
|
||||||
msgstr "ارسال شد"
|
msgstr "ارسال شد"
|
||||||
|
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
msgid "Serial Number"
|
||||||
|
msgstr "شماره سریال"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Service Details"
|
||||||
|
msgstr "جزئیات سرویس"
|
||||||
|
|
||||||
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
|
msgid "Services"
|
||||||
|
msgstr "سرویسها"
|
||||||
|
|
||||||
#: src/components/routes/settings/general.tsx
|
#: src/components/routes/settings/general.tsx
|
||||||
msgid "Set percentage thresholds for meter colors."
|
msgid "Set percentage thresholds for meter colors."
|
||||||
msgstr "آستانه های درصدی را برای رنگ های متر تنظیم کنید."
|
msgstr "آستانه های درصدی را برای رنگ های متر تنظیم کنید."
|
||||||
@@ -957,16 +1314,30 @@ msgstr "تنظیمات SMTP"
|
|||||||
msgid "Sort By"
|
msgid "Sort By"
|
||||||
msgstr "مرتبسازی بر اساس"
|
msgstr "مرتبسازی بر اساس"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "Start Time"
|
||||||
|
msgstr "زمان شروع"
|
||||||
|
|
||||||
#. Context: alert state (active or resolved)
|
#. Context: alert state (active or resolved)
|
||||||
#: src/components/alerts-history-columns.tsx
|
#: src/components/alerts-history-columns.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table-columns.tsx
|
||||||
msgid "State"
|
msgid "State"
|
||||||
msgstr "وضعیت"
|
msgstr "وضعیت"
|
||||||
|
|
||||||
|
#: src/components/containers-table/containers-table-columns.tsx
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
#: src/components/systems-table/systems-table.tsx
|
#: src/components/systems-table/systems-table.tsx
|
||||||
#: src/lib/alerts.ts
|
#: src/lib/alerts.ts
|
||||||
msgid "Status"
|
msgid "Status"
|
||||||
msgstr "وضعیت"
|
msgstr "وضعیت"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table-columns.tsx
|
||||||
|
msgid "Sub State"
|
||||||
|
msgstr "وضعیت فرعی"
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
msgid "Swap space used by the system"
|
msgid "Swap space used by the system"
|
||||||
msgstr "فضای Swap استفاده شده توسط سیستم"
|
msgstr "فضای Swap استفاده شده توسط سیستم"
|
||||||
@@ -975,8 +1346,15 @@ msgstr "فضای Swap استفاده شده توسط سیستم"
|
|||||||
msgid "Swap Usage"
|
msgid "Swap Usage"
|
||||||
msgstr "میزان استفاده از Swap"
|
msgstr "میزان استفاده از Swap"
|
||||||
|
|
||||||
|
#: src/components/add-system.tsx
|
||||||
#: src/components/alerts-history-columns.tsx
|
#: src/components/alerts-history-columns.tsx
|
||||||
|
#: src/components/containers-table/containers-table-columns.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
#: src/lib/alerts.ts
|
#: src/lib/alerts.ts
|
||||||
msgid "System"
|
msgid "System"
|
||||||
@@ -986,6 +1364,10 @@ msgstr "سیستم"
|
|||||||
msgid "System load averages over time"
|
msgid "System load averages over time"
|
||||||
msgstr "میانگین بار سیستم در طول زمان"
|
msgstr "میانگین بار سیستم در طول زمان"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Systemd Services"
|
||||||
|
msgstr "خدمات Systemd"
|
||||||
|
|
||||||
#: src/components/navbar.tsx
|
#: src/components/navbar.tsx
|
||||||
msgid "Systems"
|
msgid "Systems"
|
||||||
msgstr "سیستمها"
|
msgstr "سیستمها"
|
||||||
@@ -998,7 +1380,12 @@ msgstr "سیستمها ممکن است در یک فایل <0>config.yml</0>
|
|||||||
msgid "Table"
|
msgid "Table"
|
||||||
msgstr "جدول"
|
msgstr "جدول"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Tasks"
|
||||||
|
msgstr "وظایف"
|
||||||
|
|
||||||
#. Temperature label in systems table
|
#. Temperature label in systems table
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
msgid "Temp"
|
msgid "Temp"
|
||||||
msgstr "دما"
|
msgstr "دما"
|
||||||
@@ -1080,6 +1467,11 @@ msgstr "توکنها به عاملها اجازه اتصال و ثبت
|
|||||||
msgid "Tokens and fingerprints are used to authenticate WebSocket connections to the hub."
|
msgid "Tokens and fingerprints are used to authenticate WebSocket connections to the hub."
|
||||||
msgstr "توکنها و اثرات انگشت برای احراز هویت اتصالات WebSocket به هاب استفاده میشوند."
|
msgstr "توکنها و اثرات انگشت برای احراز هویت اتصالات WebSocket به هاب استفاده میشوند."
|
||||||
|
|
||||||
|
#: src/components/ui/chart.tsx
|
||||||
|
#: src/components/ui/chart.tsx
|
||||||
|
msgid "Total"
|
||||||
|
msgstr "کل"
|
||||||
|
|
||||||
#: src/components/routes/system/network-sheet.tsx
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
msgid "Total data received for each interface"
|
msgid "Total data received for each interface"
|
||||||
msgstr "دادههای کل دریافت شده برای هر رابط"
|
msgstr "دادههای کل دریافت شده برای هر رابط"
|
||||||
@@ -1088,6 +1480,19 @@ msgstr "دادههای کل دریافت شده برای هر رابط"
|
|||||||
msgid "Total data sent for each interface"
|
msgid "Total data sent for each interface"
|
||||||
msgstr "دادههای کل ارسال شده برای هر رابط"
|
msgstr "دادههای کل ارسال شده برای هر رابط"
|
||||||
|
|
||||||
|
#. placeholder {0}: data.length
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Total: {0}"
|
||||||
|
msgstr "کل: {0}"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Triggered by"
|
||||||
|
msgstr "فعال شده توسط"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Triggers"
|
||||||
|
msgstr "محرکها"
|
||||||
|
|
||||||
#: src/lib/alerts.ts
|
#: src/lib/alerts.ts
|
||||||
msgid "Triggers when 1 minute load average exceeds a threshold"
|
msgid "Triggers when 1 minute load average exceeds a threshold"
|
||||||
msgstr "هنگامی که میانگین بار ۱ دقیقهای از یک آستانه فراتر رود، فعال میشود"
|
msgstr "هنگامی که میانگین بار ۱ دقیقهای از یک آستانه فراتر رود، فعال میشود"
|
||||||
@@ -1112,6 +1517,10 @@ msgstr "هنگامی که مجموع بالا/پایین از یک آستانه
|
|||||||
msgid "Triggers when CPU usage exceeds a threshold"
|
msgid "Triggers when CPU usage exceeds a threshold"
|
||||||
msgstr "هنگامی که میزان استفاده از CPU از یک آستانه فراتر رود، فعال میشود"
|
msgstr "هنگامی که میزان استفاده از CPU از یک آستانه فراتر رود، فعال میشود"
|
||||||
|
|
||||||
|
#: src/lib/alerts.ts
|
||||||
|
msgid "Triggers when GPU usage exceeds a threshold"
|
||||||
|
msgstr "هنگامی که میزان استفاده از GPU از یک آستانه فراتر رود، فعال میشود"
|
||||||
|
|
||||||
#: src/lib/alerts.ts
|
#: src/lib/alerts.ts
|
||||||
msgid "Triggers when memory usage exceeds a threshold"
|
msgid "Triggers when memory usage exceeds a threshold"
|
||||||
msgstr "هنگامی که میزان استفاده از حافظه از یک آستانه فراتر رود، فعال میشود"
|
msgstr "هنگامی که میزان استفاده از حافظه از یک آستانه فراتر رود، فعال میشود"
|
||||||
@@ -1124,6 +1533,16 @@ msgstr "هنگامی که وضعیت بین بالا و پایین تغییر م
|
|||||||
msgid "Triggers when usage of any disk exceeds a threshold"
|
msgid "Triggers when usage of any disk exceeds a threshold"
|
||||||
msgstr "هنگامی که استفاده از هر دیسکی از یک آستانه فراتر رود، فعال میشود"
|
msgstr "هنگامی که استفاده از هر دیسکی از یک آستانه فراتر رود، فعال میشود"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
msgid "Type"
|
||||||
|
msgstr "نوع"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Unit file"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#. Temperature / network units
|
#. Temperature / network units
|
||||||
#: src/components/routes/settings/general.tsx
|
#: src/components/routes/settings/general.tsx
|
||||||
msgid "Unit preferences"
|
msgid "Unit preferences"
|
||||||
@@ -1139,6 +1558,11 @@ msgstr "توکن جهانی"
|
|||||||
msgid "Unknown"
|
msgid "Unknown"
|
||||||
msgstr "ناشناخته"
|
msgstr "ناشناخته"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Unlimited"
|
||||||
|
msgstr "نامحدود"
|
||||||
|
|
||||||
#. Context: System is up
|
#. Context: System is up
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
@@ -1149,6 +1573,20 @@ msgstr "فعال"
|
|||||||
msgid "Up ({upSystemsLength})"
|
msgid "Up ({upSystemsLength})"
|
||||||
msgstr "فعال ({upSystemsLength})"
|
msgstr "فعال ({upSystemsLength})"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "Update"
|
||||||
|
msgstr "بهروزرسانی"
|
||||||
|
|
||||||
|
#: src/components/containers-table/containers-table-columns.tsx
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table-columns.tsx
|
||||||
|
msgid "Updated"
|
||||||
|
msgstr "بهروزرسانی شد"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Updated every 10 minutes."
|
||||||
|
msgstr "هر ۱۰ دقیقه بهروزرسانی میشود."
|
||||||
|
|
||||||
#: src/components/routes/system/network-sheet.tsx
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
msgid "Upload"
|
msgid "Upload"
|
||||||
msgstr "آپلود"
|
msgstr "آپلود"
|
||||||
@@ -1161,6 +1599,7 @@ msgstr "آپتایم"
|
|||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
|
#: src/components/routes/system/cpu-sheet.tsx
|
||||||
msgid "Usage"
|
msgid "Usage"
|
||||||
msgstr "میزان استفاده"
|
msgstr "میزان استفاده"
|
||||||
|
|
||||||
@@ -1186,6 +1625,7 @@ msgstr "مقدار"
|
|||||||
msgid "View"
|
msgid "View"
|
||||||
msgstr "مشاهده"
|
msgstr "مشاهده"
|
||||||
|
|
||||||
|
#: src/components/routes/system/cpu-sheet.tsx
|
||||||
#: src/components/routes/system/network-sheet.tsx
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
msgid "View more"
|
msgid "View more"
|
||||||
msgstr "مشاهده بیشتر"
|
msgstr "مشاهده بیشتر"
|
||||||
@@ -1206,6 +1646,10 @@ msgstr "در انتظار رکوردهای کافی برای نمایش"
|
|||||||
msgid "Want to help improve our translations? Check <0>Crowdin</0> for details."
|
msgid "Want to help improve our translations? Check <0>Crowdin</0> for details."
|
||||||
msgstr "میخواهید به ما کمک کنید تا ترجمههای خود را بهتر کنیم؟ برای جزئیات بیشتر به <0>Crowdin</0> مراجعه کنید."
|
msgstr "میخواهید به ما کمک کنید تا ترجمههای خود را بهتر کنیم؟ برای جزئیات بیشتر به <0>Crowdin</0> مراجعه کنید."
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Wants"
|
||||||
|
msgstr "میخواهد"
|
||||||
|
|
||||||
#: src/components/routes/settings/general.tsx
|
#: src/components/routes/settings/general.tsx
|
||||||
msgid "Warning (%)"
|
msgid "Warning (%)"
|
||||||
msgstr "هشدار (%)"
|
msgstr "هشدار (%)"
|
||||||
@@ -1242,6 +1686,13 @@ msgstr "پیکربندی YAML"
|
|||||||
msgid "YAML Configuration"
|
msgid "YAML Configuration"
|
||||||
msgstr "پیکربندی YAML"
|
msgstr "پیکربندی YAML"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Yes"
|
||||||
|
msgstr "بله"
|
||||||
|
|
||||||
#: src/components/routes/settings/layout.tsx
|
#: src/components/routes/settings/layout.tsx
|
||||||
msgid "Your user settings have been updated."
|
msgid "Your user settings have been updated."
|
||||||
msgstr "تنظیمات کاربری شما بهروزرسانی شد."
|
msgstr "تنظیمات کاربری شما بهروزرسانی شد."
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
1698
internal/site/src/locales/he/he.po
Normal file
1698
internal/site/src/locales/he/he.po
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
1698
internal/site/src/locales/id/id.po
Normal file
1698
internal/site/src/locales/id/id.po
Normal file
File diff suppressed because it is too large
Load Diff
@@ -8,15 +8,15 @@ msgstr ""
|
|||||||
"Language: is\n"
|
"Language: is\n"
|
||||||
"Project-Id-Version: beszel\n"
|
"Project-Id-Version: beszel\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"PO-Revision-Date: 2025-08-28 23:21\n"
|
"PO-Revision-Date: 2025-09-22 23:10\n"
|
||||||
"Last-Translator: \n"
|
"Last-Translator: \n"
|
||||||
"Language-Team: Icelandic\n"
|
"Language-Team: Icelandic\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
"X-Crowdin-Project: beszel\n"
|
"X-Crowdin-Project: beszel\n"
|
||||||
"X-Crowdin-Project-ID: 733311\n"
|
"X-Crowdin-Project-ID: 733311\n"
|
||||||
"X-Crowdin-Language: is\n"
|
"X-Crowdin-Language: is\n"
|
||||||
"X-Crowdin-File: /main/beszel/site/src/locales/en/en.po\n"
|
"X-Crowdin-File: /main/internal/site/src/locales/en/en.po\n"
|
||||||
"X-Crowdin-File-ID: 16\n"
|
"X-Crowdin-File-ID: 32\n"
|
||||||
|
|
||||||
#. placeholder {0}: Math.trunc(system.info?.u / 86400)
|
#. placeholder {0}: Math.trunc(system.info?.u / 86400)
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
@@ -112,7 +112,7 @@ msgstr ""
|
|||||||
#: src/components/command-palette.tsx
|
#: src/components/command-palette.tsx
|
||||||
#: src/components/command-palette.tsx
|
#: src/components/command-palette.tsx
|
||||||
msgid "Admin"
|
msgid "Admin"
|
||||||
msgstr "Admin"
|
msgstr ""
|
||||||
|
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
msgid "Agent"
|
msgid "Agent"
|
||||||
@@ -201,7 +201,7 @@ msgstr "Beszel notar <0>Shoutrrr</0> til að tengjast vinsælum tilkynningaþjó
|
|||||||
|
|
||||||
#: src/components/add-system.tsx
|
#: src/components/add-system.tsx
|
||||||
msgid "Binary"
|
msgid "Binary"
|
||||||
msgstr "Binary"
|
msgstr ""
|
||||||
|
|
||||||
#: src/components/routes/settings/general.tsx
|
#: src/components/routes/settings/general.tsx
|
||||||
#: src/components/routes/settings/general.tsx
|
#: src/components/routes/settings/general.tsx
|
||||||
@@ -572,7 +572,7 @@ msgstr ""
|
|||||||
#. Context: Battery state
|
#. Context: Battery state
|
||||||
#: src/lib/i18n.ts
|
#: src/lib/i18n.ts
|
||||||
msgid "Full"
|
msgid "Full"
|
||||||
msgstr "Full"
|
msgstr ""
|
||||||
|
|
||||||
#. Context: General settings
|
#. Context: General settings
|
||||||
#: src/components/routes/settings/general.tsx
|
#: src/components/routes/settings/general.tsx
|
||||||
@@ -600,7 +600,7 @@ msgstr "Homebrew skipun"
|
|||||||
|
|
||||||
#: src/components/add-system.tsx
|
#: src/components/add-system.tsx
|
||||||
msgid "Host / IP"
|
msgid "Host / IP"
|
||||||
msgstr "Host / IP"
|
msgstr ""
|
||||||
|
|
||||||
#. Context: Battery state
|
#. Context: Battery state
|
||||||
#: src/lib/i18n.ts
|
#: src/lib/i18n.ts
|
||||||
@@ -705,7 +705,7 @@ msgstr "Nafn"
|
|||||||
|
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
msgid "Net"
|
msgid "Net"
|
||||||
msgstr "Net"
|
msgstr ""
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
msgid "Network traffic of docker containers"
|
msgid "Network traffic of docker containers"
|
||||||
@@ -845,7 +845,7 @@ msgstr "Vinsamlegast skráðu þig inn á aðganginn þinn"
|
|||||||
|
|
||||||
#: src/components/add-system.tsx
|
#: src/components/add-system.tsx
|
||||||
msgid "Port"
|
msgid "Port"
|
||||||
msgstr "Port"
|
msgstr ""
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
@@ -928,7 +928,7 @@ msgstr ""
|
|||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
msgid "Sent"
|
msgid "Sent"
|
||||||
msgstr "Sent"
|
msgstr ""
|
||||||
|
|
||||||
#: src/components/routes/settings/general.tsx
|
#: src/components/routes/settings/general.tsx
|
||||||
msgid "Set percentage thresholds for meter colors."
|
msgid "Set percentage thresholds for meter colors."
|
||||||
@@ -1245,3 +1245,4 @@ msgstr ""
|
|||||||
#: src/components/routes/settings/layout.tsx
|
#: src/components/routes/settings/layout.tsx
|
||||||
msgid "Your user settings have been updated."
|
msgid "Your user settings have been updated."
|
||||||
msgstr "Notenda stillingar vistaðar."
|
msgstr "Notenda stillingar vistaðar."
|
||||||
|
|
||||||
|
|||||||
@@ -8,30 +8,15 @@ msgstr ""
|
|||||||
"Language: it\n"
|
"Language: it\n"
|
||||||
"Project-Id-Version: beszel\n"
|
"Project-Id-Version: beszel\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"PO-Revision-Date: 2025-08-28 23:21\n"
|
"PO-Revision-Date: 2025-12-02 23:17\n"
|
||||||
"Last-Translator: \n"
|
"Last-Translator: \n"
|
||||||
"Language-Team: Italian\n"
|
"Language-Team: Italian\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
"X-Crowdin-Project: beszel\n"
|
"X-Crowdin-Project: beszel\n"
|
||||||
"X-Crowdin-Project-ID: 733311\n"
|
"X-Crowdin-Project-ID: 733311\n"
|
||||||
"X-Crowdin-Language: it\n"
|
"X-Crowdin-Language: it\n"
|
||||||
"X-Crowdin-File: /main/beszel/site/src/locales/en/en.po\n"
|
"X-Crowdin-File: /main/internal/site/src/locales/en/en.po\n"
|
||||||
"X-Crowdin-File-ID: 16\n"
|
"X-Crowdin-File-ID: 32\n"
|
||||||
|
|
||||||
#. placeholder {0}: Math.trunc(system.info?.u / 86400)
|
|
||||||
#: src/components/routes/system.tsx
|
|
||||||
msgid "{0, plural, one {# day} other {# days}}"
|
|
||||||
msgstr "{0, plural, one {# giorno} other {# giorni}}"
|
|
||||||
|
|
||||||
#. placeholder {0}: Math.trunc(system.info.u / 3600)
|
|
||||||
#: src/components/routes/system.tsx
|
|
||||||
msgid "{0, plural, one {# hour} other {# hours}}"
|
|
||||||
msgstr "{0, plural, one {# ora} other {# ore}}"
|
|
||||||
|
|
||||||
#. placeholder {0}: Math.trunc(system.info.u / 60)
|
|
||||||
#: src/components/routes/system.tsx
|
|
||||||
msgid "{0, plural, one {# minute} few {# minutes} many {# minutes} other {# minutes}}"
|
|
||||||
msgstr "{0, plural, one {# minuto} other {# minuti}}"
|
|
||||||
|
|
||||||
#. placeholder {0}: table.getFilteredSelectedRowModel().rows.length
|
#. placeholder {0}: table.getFilteredSelectedRowModel().rows.length
|
||||||
#. placeholder {1}: table.getFilteredRowModel().rows.length
|
#. placeholder {1}: table.getFilteredRowModel().rows.length
|
||||||
@@ -39,6 +24,18 @@ msgstr "{0, plural, one {# minuto} other {# minuti}}"
|
|||||||
msgid "{0} of {1} row(s) selected."
|
msgid "{0} of {1} row(s) selected."
|
||||||
msgstr "{0} di {1} righe selezionate."
|
msgstr "{0} di {1} righe selezionate."
|
||||||
|
|
||||||
|
#: src/lib/utils.ts
|
||||||
|
msgid "{count, plural, one {{countString} day} other {{countString} days}}"
|
||||||
|
msgstr "{count, plural, one {{countString} giorno} other {{countString} giorni}}"
|
||||||
|
|
||||||
|
#: src/lib/utils.ts
|
||||||
|
msgid "{count, plural, one {{countString} hour} other {{countString} hours}}"
|
||||||
|
msgstr "{count, plural, one {{countString} ora} other {{countString} ore}}"
|
||||||
|
|
||||||
|
#: src/lib/utils.ts
|
||||||
|
msgid "{count, plural, one {{countString} minute} few {{countString} minutes} many {{countString} minutes} other {{countString} minutes}}"
|
||||||
|
msgstr "{count, plural, one {{countString} minuto} other {{countString} minuti}}"
|
||||||
|
|
||||||
#: src/lib/utils.ts
|
#: src/lib/utils.ts
|
||||||
msgid "1 hour"
|
msgid "1 hour"
|
||||||
msgstr "1 ora"
|
msgstr "1 ora"
|
||||||
@@ -48,6 +45,10 @@ msgstr "1 ora"
|
|||||||
msgid "1 min"
|
msgid "1 min"
|
||||||
msgstr "1 min"
|
msgstr "1 min"
|
||||||
|
|
||||||
|
#: src/lib/utils.ts
|
||||||
|
msgid "1 minute"
|
||||||
|
msgstr "1 minuto"
|
||||||
|
|
||||||
#: src/lib/utils.ts
|
#: src/lib/utils.ts
|
||||||
msgid "1 week"
|
msgid "1 week"
|
||||||
msgstr "1 settimana"
|
msgstr "1 settimana"
|
||||||
@@ -75,28 +76,37 @@ msgid "5 min"
|
|||||||
msgstr "5 min"
|
msgstr "5 min"
|
||||||
|
|
||||||
#. Table column
|
#. Table column
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
msgid "Actions"
|
msgid "Actions"
|
||||||
msgstr "Azioni"
|
msgstr "Azioni"
|
||||||
|
|
||||||
#: src/components/alerts-history-columns.tsx
|
#: src/components/alerts-history-columns.tsx
|
||||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
msgid "Active"
|
msgid "Active"
|
||||||
msgstr "Attivo"
|
msgstr "Attivo"
|
||||||
|
|
||||||
#: src/components/routes/home.tsx
|
#: src/components/active-alerts.tsx
|
||||||
msgid "Active Alerts"
|
msgid "Active Alerts"
|
||||||
msgstr "Avvisi Attivi"
|
msgstr "Avvisi Attivi"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Active state"
|
||||||
|
msgstr "Stato attivo"
|
||||||
|
|
||||||
|
#: src/components/add-system.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "Add {foo}"
|
||||||
|
msgstr "Aggiungi {foo}"
|
||||||
|
|
||||||
#: src/components/add-system.tsx
|
#: src/components/add-system.tsx
|
||||||
msgid "Add <0>System</0>"
|
msgid "Add <0>System</0>"
|
||||||
msgstr "Aggiungi <0>Sistema</0>"
|
msgstr "Aggiungi <0>Sistema</0>"
|
||||||
|
|
||||||
#: src/components/add-system.tsx
|
|
||||||
msgid "Add New System"
|
|
||||||
msgstr "Aggiungi Nuovo Sistema"
|
|
||||||
|
|
||||||
#: src/components/add-system.tsx
|
#: src/components/add-system.tsx
|
||||||
msgid "Add system"
|
msgid "Add system"
|
||||||
msgstr "Aggiungi sistema"
|
msgstr "Aggiungi sistema"
|
||||||
@@ -109,11 +119,19 @@ msgstr "Aggiungi URL"
|
|||||||
msgid "Adjust display options for charts."
|
msgid "Adjust display options for charts."
|
||||||
msgstr "Regola le opzioni di visualizzazione per i grafici."
|
msgstr "Regola le opzioni di visualizzazione per i grafici."
|
||||||
|
|
||||||
|
#: src/components/routes/settings/general.tsx
|
||||||
|
msgid "Adjust the width of the main layout"
|
||||||
|
msgstr "Regola la larghezza del layout principale"
|
||||||
|
|
||||||
#: src/components/command-palette.tsx
|
#: src/components/command-palette.tsx
|
||||||
#: src/components/command-palette.tsx
|
#: src/components/command-palette.tsx
|
||||||
msgid "Admin"
|
msgid "Admin"
|
||||||
msgstr "Amministratore"
|
msgstr "Amministratore"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "After"
|
||||||
|
msgstr "Dopo"
|
||||||
|
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
msgid "Agent"
|
msgid "Agent"
|
||||||
msgstr "Agente"
|
msgstr "Agente"
|
||||||
@@ -129,7 +147,16 @@ msgstr "Cronologia Avvisi"
|
|||||||
msgid "Alerts"
|
msgid "Alerts"
|
||||||
msgstr "Avvisi"
|
msgstr "Avvisi"
|
||||||
|
|
||||||
|
#: src/components/command-palette.tsx
|
||||||
|
#: src/components/containers-table/containers-table.tsx
|
||||||
|
#: src/components/routes/containers.tsx
|
||||||
|
msgid "All Containers"
|
||||||
|
msgstr "Tutti i contenitori"
|
||||||
|
|
||||||
#: src/components/alerts/alerts-sheet.tsx
|
#: src/components/alerts/alerts-sheet.tsx
|
||||||
|
#: src/components/command-palette.tsx
|
||||||
|
#: src/components/routes/home.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
#: src/components/systems-table/systems-table.tsx
|
#: src/components/systems-table/systems-table.tsx
|
||||||
#: src/components/systems-table/systems-table.tsx
|
#: src/components/systems-table/systems-table.tsx
|
||||||
msgid "All Systems"
|
msgid "All Systems"
|
||||||
@@ -191,6 +218,18 @@ msgstr "Larghezza di banda"
|
|||||||
msgid "Battery"
|
msgid "Battery"
|
||||||
msgstr "Batteria"
|
msgstr "Batteria"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Became active"
|
||||||
|
msgstr "Diventato attivo"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Became inactive"
|
||||||
|
msgstr "Diventato inattivo"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Before"
|
||||||
|
msgstr "Prima"
|
||||||
|
|
||||||
#: src/components/login/auth-form.tsx
|
#: src/components/login/auth-form.tsx
|
||||||
msgid "Beszel supports OpenID Connect and many OAuth2 authentication providers."
|
msgid "Beszel supports OpenID Connect and many OAuth2 authentication providers."
|
||||||
msgstr "Beszel supporta OpenID Connect e molti provider di autenticazione OAuth2."
|
msgstr "Beszel supporta OpenID Connect e molti provider di autenticazione OAuth2."
|
||||||
@@ -208,6 +247,10 @@ msgstr "Binario"
|
|||||||
msgid "Bits (Kbps, Mbps, Gbps)"
|
msgid "Bits (Kbps, Mbps, Gbps)"
|
||||||
msgstr "Bit (Kbps, Mbps, Gbps)"
|
msgstr "Bit (Kbps, Mbps, Gbps)"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Boot state"
|
||||||
|
msgstr "Stato di avvio"
|
||||||
|
|
||||||
#: src/components/routes/settings/general.tsx
|
#: src/components/routes/settings/general.tsx
|
||||||
#: src/components/routes/settings/general.tsx
|
#: src/components/routes/settings/general.tsx
|
||||||
msgid "Bytes (KB/s, MB/s, GB/s)"
|
msgid "Bytes (KB/s, MB/s, GB/s)"
|
||||||
@@ -217,11 +260,32 @@ msgstr "Byte (KB/s, MB/s, GB/s)"
|
|||||||
msgid "Cache / Buffers"
|
msgid "Cache / Buffers"
|
||||||
msgstr "Cache / Buffer"
|
msgstr "Cache / Buffer"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Can reload"
|
||||||
|
msgstr "Può ricaricare"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Can start"
|
||||||
|
msgstr "Può avviare"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Can stop"
|
||||||
|
msgstr "Può fermare"
|
||||||
|
|
||||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "Annulla"
|
msgstr "Annulla"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Capabilities"
|
||||||
|
msgstr "Funzionalità"
|
||||||
|
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
msgid "Capacity"
|
||||||
|
msgstr "Capacità"
|
||||||
|
|
||||||
#: src/components/routes/settings/config-yaml.tsx
|
#: src/components/routes/settings/config-yaml.tsx
|
||||||
msgid "Caution - potential data loss"
|
msgid "Caution - potential data loss"
|
||||||
msgstr "Attenzione - possibile perdita di dati"
|
msgstr "Attenzione - possibile perdita di dati"
|
||||||
@@ -263,6 +327,20 @@ msgstr "Controlla i log per maggiori dettagli."
|
|||||||
msgid "Check your notification service"
|
msgid "Check your notification service"
|
||||||
msgstr "Controlla il tuo servizio di notifica"
|
msgstr "Controlla il tuo servizio di notifica"
|
||||||
|
|
||||||
|
#: src/components/containers-table/containers-table.tsx
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
#: src/components/systems-table/systems-table.tsx
|
||||||
|
msgid "Clear"
|
||||||
|
msgstr "Cancella"
|
||||||
|
|
||||||
|
#: src/components/containers-table/containers-table.tsx
|
||||||
|
msgid "Click on a container to view more information."
|
||||||
|
msgstr "Fare clic su un contenitore per visualizzare ulteriori informazioni."
|
||||||
|
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
msgid "Click on a device to view more information."
|
||||||
|
msgstr "Fare clic su un dispositivo per visualizzare più informazioni."
|
||||||
|
|
||||||
#: src/components/systems-table/systems-table.tsx
|
#: src/components/systems-table/systems-table.tsx
|
||||||
msgid "Click on a system to view more information."
|
msgid "Click on a system to view more information."
|
||||||
msgstr "Clicca su un sistema per visualizzare più informazioni."
|
msgstr "Clicca su un sistema per visualizzare più informazioni."
|
||||||
@@ -285,7 +363,11 @@ msgstr "Configura come ricevere le notifiche di avviso."
|
|||||||
msgid "Confirm password"
|
msgid "Confirm password"
|
||||||
msgstr "Conferma password"
|
msgstr "Conferma password"
|
||||||
|
|
||||||
#: src/components/routes/home.tsx
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Conflicts"
|
||||||
|
msgstr "Conflitti"
|
||||||
|
|
||||||
|
#: src/components/active-alerts.tsx
|
||||||
msgid "Connection is down"
|
msgid "Connection is down"
|
||||||
msgstr "La connessione è interrotta"
|
msgstr "La connessione è interrotta"
|
||||||
|
|
||||||
@@ -344,16 +426,39 @@ msgstr "Copia il contenuto<0>docker-compose.yml</0> per l'agente qui sotto, o re
|
|||||||
msgid "Copy YAML"
|
msgid "Copy YAML"
|
||||||
msgstr "Copia YAML"
|
msgstr "Copia YAML"
|
||||||
|
|
||||||
|
#: src/components/containers-table/containers-table-columns.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table-columns.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
msgid "CPU"
|
msgid "CPU"
|
||||||
msgstr "CPU"
|
msgstr "CPU"
|
||||||
|
|
||||||
|
#: src/components/routes/system/cpu-sheet.tsx
|
||||||
|
msgid "CPU Cores"
|
||||||
|
msgstr "Core CPU"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table-columns.tsx
|
||||||
|
msgid "CPU Peak"
|
||||||
|
msgstr "Picco CPU"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "CPU time"
|
||||||
|
msgstr "Tempo CPU"
|
||||||
|
|
||||||
|
#: src/components/routes/system/cpu-sheet.tsx
|
||||||
|
msgid "CPU Time Breakdown"
|
||||||
|
msgstr "Suddivisione tempo CPU"
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
|
#: src/components/routes/system/cpu-sheet.tsx
|
||||||
#: src/lib/alerts.ts
|
#: src/lib/alerts.ts
|
||||||
msgid "CPU Usage"
|
msgid "CPU Usage"
|
||||||
msgstr "Utilizzo CPU"
|
msgstr "Utilizzo CPU"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "Create"
|
||||||
|
msgstr "Crea"
|
||||||
|
|
||||||
#: src/components/login/auth-form.tsx
|
#: src/components/login/auth-form.tsx
|
||||||
msgid "Create account"
|
msgid "Create account"
|
||||||
msgstr "Crea account"
|
msgstr "Crea account"
|
||||||
@@ -380,16 +485,23 @@ msgstr "Upload cumulativo"
|
|||||||
msgid "Current state"
|
msgid "Current state"
|
||||||
msgstr "Stato attuale"
|
msgstr "Stato attuale"
|
||||||
|
|
||||||
#: src/components/command-palette.tsx
|
#. Power Cycles
|
||||||
#: src/components/routes/home.tsx
|
#: src/components/routes/system/smart-table.tsx
|
||||||
msgid "Dashboard"
|
msgid "Cycles"
|
||||||
msgstr "Cruscotto"
|
msgstr "Cicli"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "Daily"
|
||||||
|
msgstr "Giornaliero"
|
||||||
|
|
||||||
#: src/components/routes/settings/general.tsx
|
#: src/components/routes/settings/general.tsx
|
||||||
msgid "Default time period"
|
msgid "Default time period"
|
||||||
msgstr "Periodo di tempo predefinito"
|
msgstr "Periodo di tempo predefinito"
|
||||||
|
|
||||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
msgid "Delete"
|
msgid "Delete"
|
||||||
msgstr "Elimina"
|
msgstr "Elimina"
|
||||||
@@ -398,6 +510,18 @@ msgstr "Elimina"
|
|||||||
msgid "Delete fingerprint"
|
msgid "Delete fingerprint"
|
||||||
msgstr "Elimina impronta digitale"
|
msgstr "Elimina impronta digitale"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Description"
|
||||||
|
msgstr "Descrizione"
|
||||||
|
|
||||||
|
#: src/components/containers-table/containers-table.tsx
|
||||||
|
msgid "Detail"
|
||||||
|
msgstr "Dettagli"
|
||||||
|
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
msgid "Device"
|
||||||
|
msgstr "Dispositivo"
|
||||||
|
|
||||||
#. Context: Battery state
|
#. Context: Battery state
|
||||||
#: src/lib/i18n.ts
|
#: src/lib/i18n.ts
|
||||||
msgid "Discharging"
|
msgid "Discharging"
|
||||||
@@ -438,6 +562,7 @@ msgid "Docker Network I/O"
|
|||||||
msgstr "I/O di Rete Docker"
|
msgstr "I/O di Rete Docker"
|
||||||
|
|
||||||
#: src/components/command-palette.tsx
|
#: src/components/command-palette.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
msgid "Documentation"
|
msgid "Documentation"
|
||||||
msgstr "Documentazione"
|
msgstr "Documentazione"
|
||||||
|
|
||||||
@@ -461,11 +586,16 @@ msgstr "Scarica"
|
|||||||
msgid "Duration"
|
msgid "Duration"
|
||||||
msgstr "Durata"
|
msgstr "Durata"
|
||||||
|
|
||||||
#: src/components/add-system.tsx
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
msgid "Edit"
|
msgid "Edit"
|
||||||
msgstr "Modifica"
|
msgstr "Modifica"
|
||||||
|
|
||||||
|
#: src/components/add-system.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "Edit {foo}"
|
||||||
|
msgstr "Modifica {foo}"
|
||||||
|
|
||||||
#: src/components/login/auth-form.tsx
|
#: src/components/login/auth-form.tsx
|
||||||
#: src/components/login/forgot-pass-form.tsx
|
#: src/components/login/forgot-pass-form.tsx
|
||||||
#: src/components/login/otp-forms.tsx
|
#: src/components/login/otp-forms.tsx
|
||||||
@@ -481,6 +611,11 @@ msgstr "Notifiche email"
|
|||||||
msgid "Empty"
|
msgid "Empty"
|
||||||
msgstr "Vuota"
|
msgstr "Vuota"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "End Time"
|
||||||
|
msgstr "Ora di fine"
|
||||||
|
|
||||||
#: src/components/login/login.tsx
|
#: src/components/login/login.tsx
|
||||||
msgid "Enter email address to reset password"
|
msgid "Enter email address to reset password"
|
||||||
msgstr "Inserisci l'indirizzo email per reimpostare la password"
|
msgstr "Inserisci l'indirizzo email per reimpostare la password"
|
||||||
@@ -497,21 +632,32 @@ msgstr "Inserisci la tua password monouso."
|
|||||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||||
#: src/components/routes/settings/config-yaml.tsx
|
#: src/components/routes/settings/config-yaml.tsx
|
||||||
#: src/components/routes/settings/notifications.tsx
|
#: src/components/routes/settings/notifications.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
msgid "Error"
|
msgid "Error"
|
||||||
msgstr "Errore"
|
msgstr "Errore"
|
||||||
|
|
||||||
#. placeholder {0}: alert.value
|
#. placeholder {0}: alert.value
|
||||||
#. placeholder {1}: info.unit
|
#. placeholder {1}: info.unit
|
||||||
#. placeholder {2}: alert.min
|
#. placeholder {2}: alert.min
|
||||||
#: src/components/routes/home.tsx
|
#: src/components/active-alerts.tsx
|
||||||
msgid "Exceeds {0}{1} in last {2, plural, one {# minute} other {# minutes}}"
|
msgid "Exceeds {0}{1} in last {2, plural, one {# minute} other {# minutes}}"
|
||||||
msgstr "Supera {0}{1} negli ultimi {2, plural, one {# minuto} other {# minuti}}"
|
msgstr "Supera {0}{1} negli ultimi {2, plural, one {# minuto} other {# minuti}}"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Exec main PID"
|
||||||
|
msgstr "PID principale exec"
|
||||||
|
|
||||||
#: src/components/routes/settings/config-yaml.tsx
|
#: src/components/routes/settings/config-yaml.tsx
|
||||||
msgid "Existing systems not defined in <0>config.yml</0> will be deleted. Please make regular backups."
|
msgid "Existing systems not defined in <0>config.yml</0> will be deleted. Please make regular backups."
|
||||||
msgstr "I sistemi esistenti non definiti in <0>config.yml</0> verranno eliminati. Si prega di effettuare backup regolari."
|
msgstr "I sistemi esistenti non definiti in <0>config.yml</0> verranno eliminati. Si prega di effettuare backup regolari."
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Exited active"
|
||||||
|
msgstr "Uscito attivo"
|
||||||
|
|
||||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||||
msgid "Export"
|
msgid "Export"
|
||||||
msgstr "Esporta"
|
msgstr "Esporta"
|
||||||
@@ -528,12 +674,21 @@ msgstr "Esporta la configurazione attuale dei tuoi sistemi."
|
|||||||
msgid "Fahrenheit (°F)"
|
msgid "Fahrenheit (°F)"
|
||||||
msgstr "Fahrenheit (°F)"
|
msgstr "Fahrenheit (°F)"
|
||||||
|
|
||||||
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
|
msgid "Failed"
|
||||||
|
msgstr "Fallito"
|
||||||
|
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
msgid "Failed Attributes:"
|
||||||
|
msgstr "Attributi falliti:"
|
||||||
|
|
||||||
#: src/lib/api.ts
|
#: src/lib/api.ts
|
||||||
msgid "Failed to authenticate"
|
msgid "Failed to authenticate"
|
||||||
msgstr "Autenticazione fallita"
|
msgstr "Autenticazione fallita"
|
||||||
|
|
||||||
#: src/components/routes/settings/layout.tsx
|
#: src/components/routes/settings/layout.tsx
|
||||||
#: src/components/routes/settings/notifications.tsx
|
#: src/components/routes/settings/notifications.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
msgid "Failed to save settings"
|
msgid "Failed to save settings"
|
||||||
msgstr "Salvataggio delle impostazioni fallito"
|
msgstr "Salvataggio delle impostazioni fallito"
|
||||||
|
|
||||||
@@ -545,8 +700,16 @@ msgstr "Invio della notifica di test fallito"
|
|||||||
msgid "Failed to update alert"
|
msgid "Failed to update alert"
|
||||||
msgstr "Aggiornamento dell'avviso fallito"
|
msgstr "Aggiornamento dell'avviso fallito"
|
||||||
|
|
||||||
|
#. placeholder {0}: statusTotals[ServiceStatus.Failed]
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Failed: {0}"
|
||||||
|
msgstr "Fallito: {0}"
|
||||||
|
|
||||||
|
#: src/components/containers-table/containers-table.tsx
|
||||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
#: src/components/systems-table/systems-table.tsx
|
#: src/components/systems-table/systems-table.tsx
|
||||||
msgid "Filter..."
|
msgid "Filter..."
|
||||||
msgstr "Filtra..."
|
msgstr "Filtra..."
|
||||||
@@ -555,6 +718,10 @@ msgstr "Filtra..."
|
|||||||
msgid "Fingerprint"
|
msgid "Fingerprint"
|
||||||
msgstr "Impronta digitale"
|
msgstr "Impronta digitale"
|
||||||
|
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
msgid "Firmware"
|
||||||
|
msgstr "Firmware"
|
||||||
|
|
||||||
#: src/components/alerts/alerts-sheet.tsx
|
#: src/components/alerts/alerts-sheet.tsx
|
||||||
msgid "For <0>{min}</0> {min, plural, one {minute} other {minutes}}"
|
msgid "For <0>{min}</0> {min, plural, one {minute} other {minutes}}"
|
||||||
msgstr "Per <0>{min}</0> {min, plural, one {minuto} other {minuti}}"
|
msgstr "Per <0>{min}</0> {min, plural, one {minuto} other {minuti}}"
|
||||||
@@ -580,6 +747,10 @@ msgstr "Piena"
|
|||||||
msgid "General"
|
msgid "General"
|
||||||
msgstr "Generale"
|
msgstr "Generale"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "Global"
|
||||||
|
msgstr "Globale"
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
msgid "GPU Engines"
|
msgid "GPU Engines"
|
||||||
msgstr "Motori GPU"
|
msgstr "Motori GPU"
|
||||||
@@ -588,10 +759,18 @@ msgstr "Motori GPU"
|
|||||||
msgid "GPU Power Draw"
|
msgid "GPU Power Draw"
|
||||||
msgstr "Consumo della GPU"
|
msgstr "Consumo della GPU"
|
||||||
|
|
||||||
|
#: src/lib/alerts.ts
|
||||||
|
msgid "GPU Usage"
|
||||||
|
msgstr "Utilizzo GPU"
|
||||||
|
|
||||||
#: src/components/systems-table/systems-table.tsx
|
#: src/components/systems-table/systems-table.tsx
|
||||||
msgid "Grid"
|
msgid "Grid"
|
||||||
msgstr "Griglia"
|
msgstr "Griglia"
|
||||||
|
|
||||||
|
#: src/components/containers-table/containers-table-columns.tsx
|
||||||
|
msgid "Health"
|
||||||
|
msgstr "Stato"
|
||||||
|
|
||||||
#: src/components/add-system.tsx
|
#: src/components/add-system.tsx
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
msgctxt "Button to copy install command"
|
msgctxt "Button to copy install command"
|
||||||
@@ -611,6 +790,15 @@ msgstr "Inattiva"
|
|||||||
msgid "If you've lost the password to your admin account, you may reset it using the following command."
|
msgid "If you've lost the password to your admin account, you may reset it using the following command."
|
||||||
msgstr "Se hai perso la password del tuo account amministratore, puoi reimpostarla utilizzando il seguente comando."
|
msgstr "Se hai perso la password del tuo account amministratore, puoi reimpostarla utilizzando il seguente comando."
|
||||||
|
|
||||||
|
#: src/components/containers-table/containers-table-columns.tsx
|
||||||
|
msgctxt "Docker image"
|
||||||
|
msgid "Image"
|
||||||
|
msgstr "Immagine"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "Inactive"
|
||||||
|
msgstr "Inattivo"
|
||||||
|
|
||||||
#: src/components/login/auth-form.tsx
|
#: src/components/login/auth-form.tsx
|
||||||
msgid "Invalid email address."
|
msgid "Invalid email address."
|
||||||
msgstr "Indirizzo email non valido."
|
msgstr "Indirizzo email non valido."
|
||||||
@@ -628,6 +816,19 @@ msgstr "Lingua"
|
|||||||
msgid "Layout"
|
msgid "Layout"
|
||||||
msgstr "Aspetto"
|
msgstr "Aspetto"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/general.tsx
|
||||||
|
msgid "Layout width"
|
||||||
|
msgstr "Larghezza del layout"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Lifecycle"
|
||||||
|
msgstr "Ciclo di vita"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "limit"
|
||||||
|
msgstr "limite"
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
msgid "Load Average"
|
msgid "Load Average"
|
||||||
msgstr "Carico medio"
|
msgstr "Carico medio"
|
||||||
@@ -649,6 +850,14 @@ msgstr "Caricamento medio 5m"
|
|||||||
msgid "Load Avg"
|
msgid "Load Avg"
|
||||||
msgstr "Carico Medio"
|
msgstr "Carico Medio"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Load state"
|
||||||
|
msgstr "Stato di caricamento"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Loading..."
|
||||||
|
msgstr "Caricamento..."
|
||||||
|
|
||||||
#: src/components/navbar.tsx
|
#: src/components/navbar.tsx
|
||||||
msgid "Log Out"
|
msgid "Log Out"
|
||||||
msgstr "Disconnetti"
|
msgstr "Disconnetti"
|
||||||
@@ -663,6 +872,7 @@ msgid "Login attempt failed"
|
|||||||
msgstr "Tentativo di accesso fallito"
|
msgstr "Tentativo di accesso fallito"
|
||||||
|
|
||||||
#: src/components/command-palette.tsx
|
#: src/components/command-palette.tsx
|
||||||
|
#: src/components/containers-table/containers-table.tsx
|
||||||
#: src/components/navbar.tsx
|
#: src/components/navbar.tsx
|
||||||
msgid "Logs"
|
msgid "Logs"
|
||||||
msgstr "Log"
|
msgstr "Log"
|
||||||
@@ -671,6 +881,10 @@ msgstr "Log"
|
|||||||
msgid "Looking instead for where to create alerts? Click the bell <0/> icons in the systems table."
|
msgid "Looking instead for where to create alerts? Click the bell <0/> icons in the systems table."
|
||||||
msgstr "Cerchi invece dove creare avvisi? Clicca sulle icone della campana <0/> nella tabella dei sistemi."
|
msgstr "Cerchi invece dove creare avvisi? Clicca sulle icone della campana <0/> nella tabella dei sistemi."
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Main PID"
|
||||||
|
msgstr "PID principale"
|
||||||
|
|
||||||
#: src/components/routes/settings/layout.tsx
|
#: src/components/routes/settings/layout.tsx
|
||||||
msgid "Manage display and notification preferences."
|
msgid "Manage display and notification preferences."
|
||||||
msgstr "Gestisci le preferenze di visualizzazione e notifica."
|
msgstr "Gestisci le preferenze di visualizzazione e notifica."
|
||||||
@@ -685,10 +899,22 @@ msgstr "Istruzioni di configurazione manuale"
|
|||||||
msgid "Max 1 min"
|
msgid "Max 1 min"
|
||||||
msgstr "Max 1 min"
|
msgstr "Max 1 min"
|
||||||
|
|
||||||
|
#: src/components/containers-table/containers-table-columns.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table-columns.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
msgid "Memory"
|
msgid "Memory"
|
||||||
msgstr "Memoria"
|
msgstr "Memoria"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Memory limit"
|
||||||
|
msgstr "Limite memoria"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table-columns.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Memory Peak"
|
||||||
|
msgstr "Picco memoria"
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
#: src/lib/alerts.ts
|
#: src/lib/alerts.ts
|
||||||
msgid "Memory Usage"
|
msgid "Memory Usage"
|
||||||
@@ -698,11 +924,19 @@ msgstr "Utilizzo Memoria"
|
|||||||
msgid "Memory usage of docker containers"
|
msgid "Memory usage of docker containers"
|
||||||
msgstr "Utilizzo della memoria dei container Docker"
|
msgstr "Utilizzo della memoria dei container Docker"
|
||||||
|
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
msgid "Model"
|
||||||
|
msgstr "Modello"
|
||||||
|
|
||||||
#: src/components/add-system.tsx
|
#: src/components/add-system.tsx
|
||||||
#: src/components/alerts-history-columns.tsx
|
#: src/components/alerts-history-columns.tsx
|
||||||
|
#: src/components/containers-table/containers-table-columns.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table-columns.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
msgid "Name"
|
msgid "Name"
|
||||||
msgstr "Nome"
|
msgstr "Nome"
|
||||||
|
|
||||||
|
#: src/components/containers-table/containers-table-columns.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
msgid "Net"
|
msgid "Net"
|
||||||
msgstr "Rete"
|
msgstr "Rete"
|
||||||
@@ -714,6 +948,7 @@ msgstr "Traffico di rete dei container Docker"
|
|||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
#: src/components/routes/system/network-sheet.tsx
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
#: src/components/routes/system/network-sheet.tsx
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
msgid "Network traffic of public interfaces"
|
msgid "Network traffic of public interfaces"
|
||||||
msgstr "Traffico di rete delle interfacce pubbliche"
|
msgstr "Traffico di rete delle interfacce pubbliche"
|
||||||
|
|
||||||
@@ -722,14 +957,30 @@ msgstr "Traffico di rete delle interfacce pubbliche"
|
|||||||
msgid "Network unit"
|
msgid "Network unit"
|
||||||
msgstr "Unità rete"
|
msgstr "Unità rete"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "No"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/components/command-palette.tsx
|
#: src/components/command-palette.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
msgid "No results found."
|
msgid "No results found."
|
||||||
msgstr "Nessun risultato trovato."
|
msgstr "Nessun risultato trovato."
|
||||||
|
|
||||||
|
#: src/components/containers-table/containers-table.tsx
|
||||||
|
#: src/components/containers-table/containers-table.tsx
|
||||||
|
#: src/components/containers-table/containers-table.tsx
|
||||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
msgid "No results."
|
msgid "No results."
|
||||||
msgstr "Nessun risultato."
|
msgstr "Nessun risultato."
|
||||||
|
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
msgid "No S.M.A.R.T. attributes available for this device."
|
||||||
|
msgstr "Nessun attributo S.M.A.R.T. disponibile per questo dispositivo."
|
||||||
|
|
||||||
#: src/components/systems-table/systems-table.tsx
|
#: src/components/systems-table/systems-table.tsx
|
||||||
#: src/components/systems-table/systems-table.tsx
|
#: src/components/systems-table/systems-table.tsx
|
||||||
msgid "No systems found."
|
msgid "No systems found."
|
||||||
@@ -749,12 +1000,19 @@ msgstr "Supporto OAuth 2 / OIDC"
|
|||||||
msgid "On each restart, systems in the database will be updated to match the systems defined in the file."
|
msgid "On each restart, systems in the database will be updated to match the systems defined in the file."
|
||||||
msgstr "Ad ogni riavvio, i sistemi nel database verranno aggiornati per corrispondere ai sistemi definiti nel file."
|
msgstr "Ad ogni riavvio, i sistemi nel database verranno aggiornati per corrispondere ai sistemi definiti nel file."
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "One-time"
|
||||||
|
msgstr "Una volta"
|
||||||
|
|
||||||
#: src/components/login/auth-form.tsx
|
#: src/components/login/auth-form.tsx
|
||||||
msgid "One-time password"
|
msgid "One-time password"
|
||||||
msgstr "Password monouso"
|
msgstr "Password monouso"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
msgid "Open menu"
|
msgid "Open menu"
|
||||||
msgstr "Apri menu"
|
msgstr "Apri menu"
|
||||||
@@ -763,10 +1021,16 @@ msgstr "Apri menu"
|
|||||||
msgid "Or continue with"
|
msgid "Or continue with"
|
||||||
msgstr "Oppure continua con"
|
msgstr "Oppure continua con"
|
||||||
|
|
||||||
|
#: src/components/routes/system/cpu-sheet.tsx
|
||||||
|
msgid "Other"
|
||||||
|
msgstr "Altro"
|
||||||
|
|
||||||
#: src/components/alerts/alerts-sheet.tsx
|
#: src/components/alerts/alerts-sheet.tsx
|
||||||
msgid "Overwrite existing alerts"
|
msgid "Overwrite existing alerts"
|
||||||
msgstr "Sovrascrivi avvisi esistenti"
|
msgstr "Sovrascrivi avvisi esistenti"
|
||||||
|
|
||||||
|
#: src/components/command-palette.tsx
|
||||||
|
#: src/components/command-palette.tsx
|
||||||
#: src/components/command-palette.tsx
|
#: src/components/command-palette.tsx
|
||||||
msgid "Page"
|
msgid "Page"
|
||||||
msgstr "Pagina"
|
msgstr "Pagina"
|
||||||
@@ -798,6 +1062,10 @@ msgstr "La password deve essere inferiore a 72 byte."
|
|||||||
msgid "Password reset request received"
|
msgid "Password reset request received"
|
||||||
msgstr "Richiesta di reimpostazione password ricevuta"
|
msgstr "Richiesta di reimpostazione password ricevuta"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "Past"
|
||||||
|
msgstr "Passato"
|
||||||
|
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
msgid "Pause"
|
msgid "Pause"
|
||||||
msgstr "Pausa"
|
msgstr "Pausa"
|
||||||
@@ -810,6 +1078,15 @@ msgstr "In pausa"
|
|||||||
msgid "Paused ({pausedSystemsLength})"
|
msgid "Paused ({pausedSystemsLength})"
|
||||||
msgstr "In pausa ({pausedSystemsLength})"
|
msgstr "In pausa ({pausedSystemsLength})"
|
||||||
|
|
||||||
|
#: src/components/routes/system/cpu-sheet.tsx
|
||||||
|
#: src/components/routes/system/cpu-sheet.tsx
|
||||||
|
msgid "Per-core average utilization"
|
||||||
|
msgstr "Utilizzo medio per core"
|
||||||
|
|
||||||
|
#: src/components/routes/system/cpu-sheet.tsx
|
||||||
|
msgid "Percentage of time spent in each state"
|
||||||
|
msgstr "Percentuale di tempo trascorso in ogni stato"
|
||||||
|
|
||||||
#: src/components/routes/settings/notifications.tsx
|
#: src/components/routes/settings/notifications.tsx
|
||||||
msgid "Please <0>configure an SMTP server</0> to ensure alerts are delivered."
|
msgid "Please <0>configure an SMTP server</0> to ensure alerts are delivered."
|
||||||
msgstr "Si prega di <0>configurare un server SMTP</0> per garantire la consegna degli avvisi."
|
msgstr "Si prega di <0>configurare un server SMTP</0> per garantire la consegna degli avvisi."
|
||||||
@@ -847,6 +1124,11 @@ msgstr "Si prega di accedere al proprio account"
|
|||||||
msgid "Port"
|
msgid "Port"
|
||||||
msgstr "Porta"
|
msgstr "Porta"
|
||||||
|
|
||||||
|
#. Power On Time
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
msgid "Power On"
|
||||||
|
msgstr "Accensione"
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
msgid "Precise utilization at the recorded time"
|
msgid "Precise utilization at the recorded time"
|
||||||
@@ -856,11 +1138,19 @@ msgstr "Utilizzo preciso al momento registrato"
|
|||||||
msgid "Preferred Language"
|
msgid "Preferred Language"
|
||||||
msgstr "Lingua Preferita"
|
msgstr "Lingua Preferita"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Process started"
|
||||||
|
msgstr "Processo avviato"
|
||||||
|
|
||||||
#. Use 'Key' if your language requires many more characters
|
#. Use 'Key' if your language requires many more characters
|
||||||
#: src/components/add-system.tsx
|
#: src/components/add-system.tsx
|
||||||
msgid "Public Key"
|
msgid "Public Key"
|
||||||
msgstr "Chiave Pub"
|
msgstr "Chiave Pub"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "Quiet Hours"
|
||||||
|
msgstr "Ore silenziose"
|
||||||
|
|
||||||
#. Disk read
|
#. Disk read
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
@@ -871,6 +1161,16 @@ msgstr "Lettura"
|
|||||||
msgid "Received"
|
msgid "Received"
|
||||||
msgstr "Ricevuto"
|
msgstr "Ricevuto"
|
||||||
|
|
||||||
|
#: src/components/containers-table/containers-table.tsx
|
||||||
|
#: src/components/containers-table/containers-table.tsx
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
msgid "Refresh"
|
||||||
|
msgstr "Aggiorna"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Relationships"
|
||||||
|
msgstr "Relazioni"
|
||||||
|
|
||||||
#: src/components/login/login.tsx
|
#: src/components/login/login.tsx
|
||||||
msgid "Request a one-time password"
|
msgid "Request a one-time password"
|
||||||
msgstr "Richiedi una password monouso"
|
msgstr "Richiedi una password monouso"
|
||||||
@@ -879,6 +1179,14 @@ msgstr "Richiedi una password monouso"
|
|||||||
msgid "Request OTP"
|
msgid "Request OTP"
|
||||||
msgstr "Richiedi OTP"
|
msgstr "Richiedi OTP"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Required by"
|
||||||
|
msgstr "Richiesto da"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Requires"
|
||||||
|
msgstr "Richiede"
|
||||||
|
|
||||||
#: src/components/login/forgot-pass-form.tsx
|
#: src/components/login/forgot-pass-form.tsx
|
||||||
msgid "Reset Password"
|
msgid "Reset Password"
|
||||||
msgstr "Reimposta Password"
|
msgstr "Reimposta Password"
|
||||||
@@ -889,10 +1197,19 @@ msgstr "Reimposta Password"
|
|||||||
msgid "Resolved"
|
msgid "Resolved"
|
||||||
msgstr "Risolto"
|
msgstr "Risolto"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Restarts"
|
||||||
|
msgstr "Riavvii"
|
||||||
|
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
msgid "Resume"
|
msgid "Resume"
|
||||||
msgstr "Riprendi"
|
msgstr "Riprendi"
|
||||||
|
|
||||||
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
|
msgctxt "Root disk label"
|
||||||
|
msgid "Root"
|
||||||
|
msgstr "Root"
|
||||||
|
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
msgid "Rotate token"
|
msgid "Rotate token"
|
||||||
msgstr "Ruota token"
|
msgstr "Ruota token"
|
||||||
@@ -901,6 +1218,18 @@ msgstr "Ruota token"
|
|||||||
msgid "Rows per page"
|
msgid "Rows per page"
|
||||||
msgstr "Righe per pagina"
|
msgstr "Righe per pagina"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Runtime Metrics"
|
||||||
|
msgstr "Metriche di runtime"
|
||||||
|
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
msgid "S.M.A.R.T. Details"
|
||||||
|
msgstr "Dettagli S.M.A.R.T."
|
||||||
|
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
msgid "S.M.A.R.T. Self-Test"
|
||||||
|
msgstr "Autotest S.M.A.R.T."
|
||||||
|
|
||||||
#: src/components/routes/settings/notifications.tsx
|
#: src/components/routes/settings/notifications.tsx
|
||||||
msgid "Save address using enter key or comma. Leave blank to disable email notifications."
|
msgid "Save address using enter key or comma. Leave blank to disable email notifications."
|
||||||
msgstr "Salva l'indirizzo usando il tasto invio o la virgola. Lascia vuoto per disabilitare le notifiche email."
|
msgstr "Salva l'indirizzo usando il tasto invio o la virgola. Lascia vuoto per disabilitare le notifiche email."
|
||||||
@@ -914,6 +1243,18 @@ msgstr "Salva Impostazioni"
|
|||||||
msgid "Save system"
|
msgid "Save system"
|
||||||
msgstr "Salva sistema"
|
msgstr "Salva sistema"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "Schedule"
|
||||||
|
msgstr "Pianifica"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "Schedule quiet hours where notifications will not be sent, such as during maintenance periods."
|
||||||
|
msgstr "Pianifica le ore silenziose in cui le notifiche non verranno inviate, ad esempio durante i periodi di manutenzione."
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "Schedule quiet hours where notifications will not be sent."
|
||||||
|
msgstr "Pianifica le ore silenziose in cui le notifiche non verranno inviate."
|
||||||
|
|
||||||
#: src/components/navbar.tsx
|
#: src/components/navbar.tsx
|
||||||
msgid "Search"
|
msgid "Search"
|
||||||
msgstr "Cerca"
|
msgstr "Cerca"
|
||||||
@@ -926,10 +1267,26 @@ msgstr "Cerca sistemi o impostazioni..."
|
|||||||
msgid "See <0>notification settings</0> to configure how you receive alerts."
|
msgid "See <0>notification settings</0> to configure how you receive alerts."
|
||||||
msgstr "Vedi <0>impostazioni di notifica</0> per configurare come ricevere gli avvisi."
|
msgstr "Vedi <0>impostazioni di notifica</0> per configurare come ricevere gli avvisi."
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "Select {foo}"
|
||||||
|
msgstr "Seleziona {foo}"
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
msgid "Sent"
|
msgid "Sent"
|
||||||
msgstr "Inviato"
|
msgstr "Inviato"
|
||||||
|
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
msgid "Serial Number"
|
||||||
|
msgstr "Numero di serie"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Service Details"
|
||||||
|
msgstr "Dettagli servizio"
|
||||||
|
|
||||||
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
|
msgid "Services"
|
||||||
|
msgstr "Servizi"
|
||||||
|
|
||||||
#: src/components/routes/settings/general.tsx
|
#: src/components/routes/settings/general.tsx
|
||||||
msgid "Set percentage thresholds for meter colors."
|
msgid "Set percentage thresholds for meter colors."
|
||||||
msgstr "Imposta le soglie percentuali per i colori dei contatori."
|
msgstr "Imposta le soglie percentuali per i colori dei contatori."
|
||||||
@@ -957,16 +1314,30 @@ msgstr "Impostazioni SMTP"
|
|||||||
msgid "Sort By"
|
msgid "Sort By"
|
||||||
msgstr "Ordina per"
|
msgstr "Ordina per"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "Start Time"
|
||||||
|
msgstr "Ora di inizio"
|
||||||
|
|
||||||
#. Context: alert state (active or resolved)
|
#. Context: alert state (active or resolved)
|
||||||
#: src/components/alerts-history-columns.tsx
|
#: src/components/alerts-history-columns.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table-columns.tsx
|
||||||
msgid "State"
|
msgid "State"
|
||||||
msgstr "Stato"
|
msgstr "Stato"
|
||||||
|
|
||||||
|
#: src/components/containers-table/containers-table-columns.tsx
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
#: src/components/systems-table/systems-table.tsx
|
#: src/components/systems-table/systems-table.tsx
|
||||||
#: src/lib/alerts.ts
|
#: src/lib/alerts.ts
|
||||||
msgid "Status"
|
msgid "Status"
|
||||||
msgstr "Stato"
|
msgstr "Stato"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table-columns.tsx
|
||||||
|
msgid "Sub State"
|
||||||
|
msgstr "Sotto-stato"
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
msgid "Swap space used by the system"
|
msgid "Swap space used by the system"
|
||||||
msgstr "Spazio di swap utilizzato dal sistema"
|
msgstr "Spazio di swap utilizzato dal sistema"
|
||||||
@@ -975,8 +1346,15 @@ msgstr "Spazio di swap utilizzato dal sistema"
|
|||||||
msgid "Swap Usage"
|
msgid "Swap Usage"
|
||||||
msgstr "Utilizzo Swap"
|
msgstr "Utilizzo Swap"
|
||||||
|
|
||||||
|
#: src/components/add-system.tsx
|
||||||
#: src/components/alerts-history-columns.tsx
|
#: src/components/alerts-history-columns.tsx
|
||||||
|
#: src/components/containers-table/containers-table-columns.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
#: src/lib/alerts.ts
|
#: src/lib/alerts.ts
|
||||||
msgid "System"
|
msgid "System"
|
||||||
@@ -986,6 +1364,10 @@ msgstr "Sistema"
|
|||||||
msgid "System load averages over time"
|
msgid "System load averages over time"
|
||||||
msgstr "Medie di carico del sistema nel tempo"
|
msgstr "Medie di carico del sistema nel tempo"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Systemd Services"
|
||||||
|
msgstr "Servizi Systemd"
|
||||||
|
|
||||||
#: src/components/navbar.tsx
|
#: src/components/navbar.tsx
|
||||||
msgid "Systems"
|
msgid "Systems"
|
||||||
msgstr "Sistemi"
|
msgstr "Sistemi"
|
||||||
@@ -998,7 +1380,12 @@ msgstr "I sistemi possono essere gestiti in un file <0>config.yml</0> all'intern
|
|||||||
msgid "Table"
|
msgid "Table"
|
||||||
msgstr "Tabella"
|
msgstr "Tabella"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Tasks"
|
||||||
|
msgstr "Attività"
|
||||||
|
|
||||||
#. Temperature label in systems table
|
#. Temperature label in systems table
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
msgid "Temp"
|
msgid "Temp"
|
||||||
msgstr "Temperatura"
|
msgstr "Temperatura"
|
||||||
@@ -1080,6 +1467,11 @@ msgstr "I token consentono agli agenti di connettersi e registrarsi. Le impronte
|
|||||||
msgid "Tokens and fingerprints are used to authenticate WebSocket connections to the hub."
|
msgid "Tokens and fingerprints are used to authenticate WebSocket connections to the hub."
|
||||||
msgstr "I token e le impronte digitali vengono utilizzati per autenticare le connessioni WebSocket all'hub."
|
msgstr "I token e le impronte digitali vengono utilizzati per autenticare le connessioni WebSocket all'hub."
|
||||||
|
|
||||||
|
#: src/components/ui/chart.tsx
|
||||||
|
#: src/components/ui/chart.tsx
|
||||||
|
msgid "Total"
|
||||||
|
msgstr "Totale"
|
||||||
|
|
||||||
#: src/components/routes/system/network-sheet.tsx
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
msgid "Total data received for each interface"
|
msgid "Total data received for each interface"
|
||||||
msgstr "Dati totali ricevuti per ogni interfaccia"
|
msgstr "Dati totali ricevuti per ogni interfaccia"
|
||||||
@@ -1088,6 +1480,19 @@ msgstr "Dati totali ricevuti per ogni interfaccia"
|
|||||||
msgid "Total data sent for each interface"
|
msgid "Total data sent for each interface"
|
||||||
msgstr "Dati totali inviati per ogni interfaccia"
|
msgstr "Dati totali inviati per ogni interfaccia"
|
||||||
|
|
||||||
|
#. placeholder {0}: data.length
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Total: {0}"
|
||||||
|
msgstr "Totale: {0}"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Triggered by"
|
||||||
|
msgstr "Attivato da"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Triggers"
|
||||||
|
msgstr "Trigger"
|
||||||
|
|
||||||
#: src/lib/alerts.ts
|
#: src/lib/alerts.ts
|
||||||
msgid "Triggers when 1 minute load average exceeds a threshold"
|
msgid "Triggers when 1 minute load average exceeds a threshold"
|
||||||
msgstr "Si attiva quando la media di carico di 1 minuto supera una soglia"
|
msgstr "Si attiva quando la media di carico di 1 minuto supera una soglia"
|
||||||
@@ -1112,6 +1517,10 @@ msgstr "Attiva quando il combinato up/down supera una soglia"
|
|||||||
msgid "Triggers when CPU usage exceeds a threshold"
|
msgid "Triggers when CPU usage exceeds a threshold"
|
||||||
msgstr "Attiva quando l'utilizzo della CPU supera una soglia"
|
msgstr "Attiva quando l'utilizzo della CPU supera una soglia"
|
||||||
|
|
||||||
|
#: src/lib/alerts.ts
|
||||||
|
msgid "Triggers when GPU usage exceeds a threshold"
|
||||||
|
msgstr "Si attiva quando l'utilizzo della GPU supera una soglia"
|
||||||
|
|
||||||
#: src/lib/alerts.ts
|
#: src/lib/alerts.ts
|
||||||
msgid "Triggers when memory usage exceeds a threshold"
|
msgid "Triggers when memory usage exceeds a threshold"
|
||||||
msgstr "Attiva quando l'utilizzo della memoria supera una soglia"
|
msgstr "Attiva quando l'utilizzo della memoria supera una soglia"
|
||||||
@@ -1124,6 +1533,16 @@ msgstr "Attiva quando lo stato passa tra up e down"
|
|||||||
msgid "Triggers when usage of any disk exceeds a threshold"
|
msgid "Triggers when usage of any disk exceeds a threshold"
|
||||||
msgstr "Attiva quando l'utilizzo di un disco supera una soglia"
|
msgstr "Attiva quando l'utilizzo di un disco supera una soglia"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
msgid "Type"
|
||||||
|
msgstr "Tipo"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Unit file"
|
||||||
|
msgstr "File unit"
|
||||||
|
|
||||||
#. Temperature / network units
|
#. Temperature / network units
|
||||||
#: src/components/routes/settings/general.tsx
|
#: src/components/routes/settings/general.tsx
|
||||||
msgid "Unit preferences"
|
msgid "Unit preferences"
|
||||||
@@ -1139,6 +1558,11 @@ msgstr "Token universale"
|
|||||||
msgid "Unknown"
|
msgid "Unknown"
|
||||||
msgstr "Sconosciuta"
|
msgstr "Sconosciuta"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Unlimited"
|
||||||
|
msgstr "Illimitato"
|
||||||
|
|
||||||
#. Context: System is up
|
#. Context: System is up
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
@@ -1149,6 +1573,20 @@ msgstr "Attivo"
|
|||||||
msgid "Up ({upSystemsLength})"
|
msgid "Up ({upSystemsLength})"
|
||||||
msgstr "Attivo ({upSystemsLength})"
|
msgstr "Attivo ({upSystemsLength})"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "Update"
|
||||||
|
msgstr "Aggiorna"
|
||||||
|
|
||||||
|
#: src/components/containers-table/containers-table-columns.tsx
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table-columns.tsx
|
||||||
|
msgid "Updated"
|
||||||
|
msgstr "Aggiornato"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Updated every 10 minutes."
|
||||||
|
msgstr "Aggiornato ogni 10 minuti."
|
||||||
|
|
||||||
#: src/components/routes/system/network-sheet.tsx
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
msgid "Upload"
|
msgid "Upload"
|
||||||
msgstr "Carica"
|
msgstr "Carica"
|
||||||
@@ -1161,6 +1599,7 @@ msgstr "Tempo di attività"
|
|||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
|
#: src/components/routes/system/cpu-sheet.tsx
|
||||||
msgid "Usage"
|
msgid "Usage"
|
||||||
msgstr "Utilizzo"
|
msgstr "Utilizzo"
|
||||||
|
|
||||||
@@ -1186,6 +1625,7 @@ msgstr "Valore"
|
|||||||
msgid "View"
|
msgid "View"
|
||||||
msgstr "Vista"
|
msgstr "Vista"
|
||||||
|
|
||||||
|
#: src/components/routes/system/cpu-sheet.tsx
|
||||||
#: src/components/routes/system/network-sheet.tsx
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
msgid "View more"
|
msgid "View more"
|
||||||
msgstr "Visualizza altro"
|
msgstr "Visualizza altro"
|
||||||
@@ -1206,6 +1646,10 @@ msgstr "In attesa di abbastanza record da visualizzare"
|
|||||||
msgid "Want to help improve our translations? Check <0>Crowdin</0> for details."
|
msgid "Want to help improve our translations? Check <0>Crowdin</0> for details."
|
||||||
msgstr "Vuoi aiutarci a migliorare ulteriormente le nostre traduzioni? Dai un'occhiata a <0>Crowdin</0> per maggiori dettagli."
|
msgstr "Vuoi aiutarci a migliorare ulteriormente le nostre traduzioni? Dai un'occhiata a <0>Crowdin</0> per maggiori dettagli."
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Wants"
|
||||||
|
msgstr "Desidera"
|
||||||
|
|
||||||
#: src/components/routes/settings/general.tsx
|
#: src/components/routes/settings/general.tsx
|
||||||
msgid "Warning (%)"
|
msgid "Warning (%)"
|
||||||
msgstr "Avviso (%)"
|
msgstr "Avviso (%)"
|
||||||
@@ -1242,6 +1686,13 @@ msgstr "Configurazione YAML"
|
|||||||
msgid "YAML Configuration"
|
msgid "YAML Configuration"
|
||||||
msgstr "Configurazione YAML"
|
msgstr "Configurazione YAML"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Yes"
|
||||||
|
msgstr "Sì"
|
||||||
|
|
||||||
#: src/components/routes/settings/layout.tsx
|
#: src/components/routes/settings/layout.tsx
|
||||||
msgid "Your user settings have been updated."
|
msgid "Your user settings have been updated."
|
||||||
msgstr "Le impostazioni utente sono state aggiornate."
|
msgstr "Le impostazioni utente sono state aggiornate."
|
||||||
|
|
||||||
|
|||||||
@@ -8,30 +8,15 @@ msgstr ""
|
|||||||
"Language: ja\n"
|
"Language: ja\n"
|
||||||
"Project-Id-Version: beszel\n"
|
"Project-Id-Version: beszel\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"PO-Revision-Date: 2025-08-28 23:21\n"
|
"PO-Revision-Date: 2025-12-02 23:18\n"
|
||||||
"Last-Translator: \n"
|
"Last-Translator: \n"
|
||||||
"Language-Team: Japanese\n"
|
"Language-Team: Japanese\n"
|
||||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||||
"X-Crowdin-Project: beszel\n"
|
"X-Crowdin-Project: beszel\n"
|
||||||
"X-Crowdin-Project-ID: 733311\n"
|
"X-Crowdin-Project-ID: 733311\n"
|
||||||
"X-Crowdin-Language: ja\n"
|
"X-Crowdin-Language: ja\n"
|
||||||
"X-Crowdin-File: /main/beszel/site/src/locales/en/en.po\n"
|
"X-Crowdin-File: /main/internal/site/src/locales/en/en.po\n"
|
||||||
"X-Crowdin-File-ID: 16\n"
|
"X-Crowdin-File-ID: 32\n"
|
||||||
|
|
||||||
#. placeholder {0}: Math.trunc(system.info?.u / 86400)
|
|
||||||
#: src/components/routes/system.tsx
|
|
||||||
msgid "{0, plural, one {# day} other {# days}}"
|
|
||||||
msgstr "{0, plural, one {# 日} other {# 日}}"
|
|
||||||
|
|
||||||
#. placeholder {0}: Math.trunc(system.info.u / 3600)
|
|
||||||
#: src/components/routes/system.tsx
|
|
||||||
msgid "{0, plural, one {# hour} other {# hours}}"
|
|
||||||
msgstr "{0, plural, one {# 時間} other {# 時間}}"
|
|
||||||
|
|
||||||
#. placeholder {0}: Math.trunc(system.info.u / 60)
|
|
||||||
#: src/components/routes/system.tsx
|
|
||||||
msgid "{0, plural, one {# minute} few {# minutes} many {# minutes} other {# minutes}}"
|
|
||||||
msgstr "{0, plural, one {# 分} few {# 分} many {# 分} other {# 分}}"
|
|
||||||
|
|
||||||
#. placeholder {0}: table.getFilteredSelectedRowModel().rows.length
|
#. placeholder {0}: table.getFilteredSelectedRowModel().rows.length
|
||||||
#. placeholder {1}: table.getFilteredRowModel().rows.length
|
#. placeholder {1}: table.getFilteredRowModel().rows.length
|
||||||
@@ -39,6 +24,18 @@ msgstr "{0, plural, one {# 分} few {# 分} many {# 分} other {# 分}}"
|
|||||||
msgid "{0} of {1} row(s) selected."
|
msgid "{0} of {1} row(s) selected."
|
||||||
msgstr "{1}行のうち{0}行が選択されました。"
|
msgstr "{1}行のうち{0}行が選択されました。"
|
||||||
|
|
||||||
|
#: src/lib/utils.ts
|
||||||
|
msgid "{count, plural, one {{countString} day} other {{countString} days}}"
|
||||||
|
msgstr "{count, plural, one {{countString} 日} other {{countString} 日}}"
|
||||||
|
|
||||||
|
#: src/lib/utils.ts
|
||||||
|
msgid "{count, plural, one {{countString} hour} other {{countString} hours}}"
|
||||||
|
msgstr "{count, plural, one {{countString} 時間} other {{countString} 時間}}"
|
||||||
|
|
||||||
|
#: src/lib/utils.ts
|
||||||
|
msgid "{count, plural, one {{countString} minute} few {{countString} minutes} many {{countString} minutes} other {{countString} minutes}}"
|
||||||
|
msgstr "{count, plural, one {{countString} 分} few {{countString} 分} many {{countString} 分} other {{countString} 分}}"
|
||||||
|
|
||||||
#: src/lib/utils.ts
|
#: src/lib/utils.ts
|
||||||
msgid "1 hour"
|
msgid "1 hour"
|
||||||
msgstr "1時間"
|
msgstr "1時間"
|
||||||
@@ -48,6 +45,10 @@ msgstr "1時間"
|
|||||||
msgid "1 min"
|
msgid "1 min"
|
||||||
msgstr "1分"
|
msgstr "1分"
|
||||||
|
|
||||||
|
#: src/lib/utils.ts
|
||||||
|
msgid "1 minute"
|
||||||
|
msgstr "1分"
|
||||||
|
|
||||||
#: src/lib/utils.ts
|
#: src/lib/utils.ts
|
||||||
msgid "1 week"
|
msgid "1 week"
|
||||||
msgstr "1週間"
|
msgstr "1週間"
|
||||||
@@ -75,28 +76,37 @@ msgid "5 min"
|
|||||||
msgstr "5分"
|
msgstr "5分"
|
||||||
|
|
||||||
#. Table column
|
#. Table column
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
msgid "Actions"
|
msgid "Actions"
|
||||||
msgstr "アクション"
|
msgstr "アクション"
|
||||||
|
|
||||||
#: src/components/alerts-history-columns.tsx
|
#: src/components/alerts-history-columns.tsx
|
||||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
msgid "Active"
|
msgid "Active"
|
||||||
msgstr "アクティブ"
|
msgstr "アクティブ"
|
||||||
|
|
||||||
#: src/components/routes/home.tsx
|
#: src/components/active-alerts.tsx
|
||||||
msgid "Active Alerts"
|
msgid "Active Alerts"
|
||||||
msgstr "アクティブなアラート"
|
msgstr "アクティブなアラート"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Active state"
|
||||||
|
msgstr "アクティブ状態"
|
||||||
|
|
||||||
|
#: src/components/add-system.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "Add {foo}"
|
||||||
|
msgstr "{foo}を追加"
|
||||||
|
|
||||||
#: src/components/add-system.tsx
|
#: src/components/add-system.tsx
|
||||||
msgid "Add <0>System</0>"
|
msgid "Add <0>System</0>"
|
||||||
msgstr "<0>システム</0>を追加"
|
msgstr "<0>システム</0>を追加"
|
||||||
|
|
||||||
#: src/components/add-system.tsx
|
|
||||||
msgid "Add New System"
|
|
||||||
msgstr "新しいシステムを追加"
|
|
||||||
|
|
||||||
#: src/components/add-system.tsx
|
#: src/components/add-system.tsx
|
||||||
msgid "Add system"
|
msgid "Add system"
|
||||||
msgstr "システムを追加"
|
msgstr "システムを追加"
|
||||||
@@ -109,11 +119,19 @@ msgstr "URLを追加"
|
|||||||
msgid "Adjust display options for charts."
|
msgid "Adjust display options for charts."
|
||||||
msgstr "チャートの表示オプションを調整します。"
|
msgstr "チャートの表示オプションを調整します。"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/general.tsx
|
||||||
|
msgid "Adjust the width of the main layout"
|
||||||
|
msgstr "メインレイアウトの幅を調整"
|
||||||
|
|
||||||
#: src/components/command-palette.tsx
|
#: src/components/command-palette.tsx
|
||||||
#: src/components/command-palette.tsx
|
#: src/components/command-palette.tsx
|
||||||
msgid "Admin"
|
msgid "Admin"
|
||||||
msgstr "管理者"
|
msgstr "管理者"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "After"
|
||||||
|
msgstr "後"
|
||||||
|
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
msgid "Agent"
|
msgid "Agent"
|
||||||
msgstr "エージェント"
|
msgstr "エージェント"
|
||||||
@@ -129,7 +147,16 @@ msgstr "アラート履歴"
|
|||||||
msgid "Alerts"
|
msgid "Alerts"
|
||||||
msgstr "アラート"
|
msgstr "アラート"
|
||||||
|
|
||||||
|
#: src/components/command-palette.tsx
|
||||||
|
#: src/components/containers-table/containers-table.tsx
|
||||||
|
#: src/components/routes/containers.tsx
|
||||||
|
msgid "All Containers"
|
||||||
|
msgstr "すべてのコンテナ"
|
||||||
|
|
||||||
#: src/components/alerts/alerts-sheet.tsx
|
#: src/components/alerts/alerts-sheet.tsx
|
||||||
|
#: src/components/command-palette.tsx
|
||||||
|
#: src/components/routes/home.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
#: src/components/systems-table/systems-table.tsx
|
#: src/components/systems-table/systems-table.tsx
|
||||||
#: src/components/systems-table/systems-table.tsx
|
#: src/components/systems-table/systems-table.tsx
|
||||||
msgid "All Systems"
|
msgid "All Systems"
|
||||||
@@ -191,6 +218,18 @@ msgstr "帯域幅"
|
|||||||
msgid "Battery"
|
msgid "Battery"
|
||||||
msgstr "バッテリー"
|
msgstr "バッテリー"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Became active"
|
||||||
|
msgstr "アクティブになった"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Became inactive"
|
||||||
|
msgstr "非アクティブになった"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Before"
|
||||||
|
msgstr "前"
|
||||||
|
|
||||||
#: src/components/login/auth-form.tsx
|
#: src/components/login/auth-form.tsx
|
||||||
msgid "Beszel supports OpenID Connect and many OAuth2 authentication providers."
|
msgid "Beszel supports OpenID Connect and many OAuth2 authentication providers."
|
||||||
msgstr "BeszelはOpenID Connectと多くのOAuth2認証プロバイダーをサポートしています。"
|
msgstr "BeszelはOpenID Connectと多くのOAuth2認証プロバイダーをサポートしています。"
|
||||||
@@ -208,6 +247,10 @@ msgstr "バイナリ"
|
|||||||
msgid "Bits (Kbps, Mbps, Gbps)"
|
msgid "Bits (Kbps, Mbps, Gbps)"
|
||||||
msgstr "ビット (Kbps, Mbps, Gbps)"
|
msgstr "ビット (Kbps, Mbps, Gbps)"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Boot state"
|
||||||
|
msgstr "ブート状態"
|
||||||
|
|
||||||
#: src/components/routes/settings/general.tsx
|
#: src/components/routes/settings/general.tsx
|
||||||
#: src/components/routes/settings/general.tsx
|
#: src/components/routes/settings/general.tsx
|
||||||
msgid "Bytes (KB/s, MB/s, GB/s)"
|
msgid "Bytes (KB/s, MB/s, GB/s)"
|
||||||
@@ -217,11 +260,32 @@ msgstr "バイト (KB/s, MB/s, GB/s)"
|
|||||||
msgid "Cache / Buffers"
|
msgid "Cache / Buffers"
|
||||||
msgstr "キャッシュ / バッファ"
|
msgstr "キャッシュ / バッファ"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Can reload"
|
||||||
|
msgstr "リロード可能"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Can start"
|
||||||
|
msgstr "開始可能"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Can stop"
|
||||||
|
msgstr "停止可能"
|
||||||
|
|
||||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "キャンセル"
|
msgstr "キャンセル"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Capabilities"
|
||||||
|
msgstr "機能"
|
||||||
|
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
msgid "Capacity"
|
||||||
|
msgstr "容量"
|
||||||
|
|
||||||
#: src/components/routes/settings/config-yaml.tsx
|
#: src/components/routes/settings/config-yaml.tsx
|
||||||
msgid "Caution - potential data loss"
|
msgid "Caution - potential data loss"
|
||||||
msgstr "注意 - データ損失の可能性"
|
msgstr "注意 - データ損失の可能性"
|
||||||
@@ -263,6 +327,20 @@ msgstr "詳細についてはログを確認してください。"
|
|||||||
msgid "Check your notification service"
|
msgid "Check your notification service"
|
||||||
msgstr "通知サービスを確認してください"
|
msgstr "通知サービスを確認してください"
|
||||||
|
|
||||||
|
#: src/components/containers-table/containers-table.tsx
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
#: src/components/systems-table/systems-table.tsx
|
||||||
|
msgid "Clear"
|
||||||
|
msgstr "クリア"
|
||||||
|
|
||||||
|
#: src/components/containers-table/containers-table.tsx
|
||||||
|
msgid "Click on a container to view more information."
|
||||||
|
msgstr "詳細情報を表示するにはコンテナをクリックしてください。"
|
||||||
|
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
msgid "Click on a device to view more information."
|
||||||
|
msgstr "詳細情報を表示するにはデバイスをクリックしてください。"
|
||||||
|
|
||||||
#: src/components/systems-table/systems-table.tsx
|
#: src/components/systems-table/systems-table.tsx
|
||||||
msgid "Click on a system to view more information."
|
msgid "Click on a system to view more information."
|
||||||
msgstr "システムをクリックして詳細を表示します。"
|
msgstr "システムをクリックして詳細を表示します。"
|
||||||
@@ -285,7 +363,11 @@ msgstr "アラート通知の受信方法を設定します。"
|
|||||||
msgid "Confirm password"
|
msgid "Confirm password"
|
||||||
msgstr "パスワードを確認"
|
msgstr "パスワードを確認"
|
||||||
|
|
||||||
#: src/components/routes/home.tsx
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Conflicts"
|
||||||
|
msgstr "競合"
|
||||||
|
|
||||||
|
#: src/components/active-alerts.tsx
|
||||||
msgid "Connection is down"
|
msgid "Connection is down"
|
||||||
msgstr "接続が切断されました"
|
msgstr "接続が切断されました"
|
||||||
|
|
||||||
@@ -344,16 +426,39 @@ msgstr "下記のエージェントの<0>docker-compose.yml</0>内容をコピ
|
|||||||
msgid "Copy YAML"
|
msgid "Copy YAML"
|
||||||
msgstr "YAMLをコピー"
|
msgstr "YAMLをコピー"
|
||||||
|
|
||||||
|
#: src/components/containers-table/containers-table-columns.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table-columns.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
msgid "CPU"
|
msgid "CPU"
|
||||||
msgstr "CPU"
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/components/routes/system/cpu-sheet.tsx
|
||||||
|
msgid "CPU Cores"
|
||||||
|
msgstr "CPU コア"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table-columns.tsx
|
||||||
|
msgid "CPU Peak"
|
||||||
|
msgstr "CPUピーク"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "CPU time"
|
||||||
|
msgstr "CPU時間"
|
||||||
|
|
||||||
|
#: src/components/routes/system/cpu-sheet.tsx
|
||||||
|
msgid "CPU Time Breakdown"
|
||||||
|
msgstr "CPU 時間の内訳"
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
|
#: src/components/routes/system/cpu-sheet.tsx
|
||||||
#: src/lib/alerts.ts
|
#: src/lib/alerts.ts
|
||||||
msgid "CPU Usage"
|
msgid "CPU Usage"
|
||||||
msgstr "CPU使用率"
|
msgstr "CPU使用率"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "Create"
|
||||||
|
msgstr "作成"
|
||||||
|
|
||||||
#: src/components/login/auth-form.tsx
|
#: src/components/login/auth-form.tsx
|
||||||
msgid "Create account"
|
msgid "Create account"
|
||||||
msgstr "アカウントを作成"
|
msgstr "アカウントを作成"
|
||||||
@@ -380,16 +485,23 @@ msgstr "累積アップロード"
|
|||||||
msgid "Current state"
|
msgid "Current state"
|
||||||
msgstr "現在の状態"
|
msgstr "現在の状態"
|
||||||
|
|
||||||
#: src/components/command-palette.tsx
|
#. Power Cycles
|
||||||
#: src/components/routes/home.tsx
|
#: src/components/routes/system/smart-table.tsx
|
||||||
msgid "Dashboard"
|
msgid "Cycles"
|
||||||
msgstr "ダッシュボード"
|
msgstr "サイクル"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "Daily"
|
||||||
|
msgstr "毎日"
|
||||||
|
|
||||||
#: src/components/routes/settings/general.tsx
|
#: src/components/routes/settings/general.tsx
|
||||||
msgid "Default time period"
|
msgid "Default time period"
|
||||||
msgstr "デフォルトの期間"
|
msgstr "デフォルトの期間"
|
||||||
|
|
||||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
msgid "Delete"
|
msgid "Delete"
|
||||||
msgstr "削除"
|
msgstr "削除"
|
||||||
@@ -398,6 +510,18 @@ msgstr "削除"
|
|||||||
msgid "Delete fingerprint"
|
msgid "Delete fingerprint"
|
||||||
msgstr "フィンガープリントを削除"
|
msgstr "フィンガープリントを削除"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Description"
|
||||||
|
msgstr "説明"
|
||||||
|
|
||||||
|
#: src/components/containers-table/containers-table.tsx
|
||||||
|
msgid "Detail"
|
||||||
|
msgstr "詳細"
|
||||||
|
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
msgid "Device"
|
||||||
|
msgstr "デバイス"
|
||||||
|
|
||||||
#. Context: Battery state
|
#. Context: Battery state
|
||||||
#: src/lib/i18n.ts
|
#: src/lib/i18n.ts
|
||||||
msgid "Discharging"
|
msgid "Discharging"
|
||||||
@@ -438,6 +562,7 @@ msgid "Docker Network I/O"
|
|||||||
msgstr "DockerネットワークI/O"
|
msgstr "DockerネットワークI/O"
|
||||||
|
|
||||||
#: src/components/command-palette.tsx
|
#: src/components/command-palette.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
msgid "Documentation"
|
msgid "Documentation"
|
||||||
msgstr "ドキュメント"
|
msgstr "ドキュメント"
|
||||||
|
|
||||||
@@ -461,11 +586,16 @@ msgstr "ダウンロード"
|
|||||||
msgid "Duration"
|
msgid "Duration"
|
||||||
msgstr "期間"
|
msgstr "期間"
|
||||||
|
|
||||||
#: src/components/add-system.tsx
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
msgid "Edit"
|
msgid "Edit"
|
||||||
msgstr "編集"
|
msgstr "編集"
|
||||||
|
|
||||||
|
#: src/components/add-system.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "Edit {foo}"
|
||||||
|
msgstr "{foo}を編集"
|
||||||
|
|
||||||
#: src/components/login/auth-form.tsx
|
#: src/components/login/auth-form.tsx
|
||||||
#: src/components/login/forgot-pass-form.tsx
|
#: src/components/login/forgot-pass-form.tsx
|
||||||
#: src/components/login/otp-forms.tsx
|
#: src/components/login/otp-forms.tsx
|
||||||
@@ -481,6 +611,11 @@ msgstr "メール通知"
|
|||||||
msgid "Empty"
|
msgid "Empty"
|
||||||
msgstr "空"
|
msgstr "空"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "End Time"
|
||||||
|
msgstr "終了時間"
|
||||||
|
|
||||||
#: src/components/login/login.tsx
|
#: src/components/login/login.tsx
|
||||||
msgid "Enter email address to reset password"
|
msgid "Enter email address to reset password"
|
||||||
msgstr "パスワードをリセットするためにメールアドレスを入力してください"
|
msgstr "パスワードをリセットするためにメールアドレスを入力してください"
|
||||||
@@ -497,21 +632,32 @@ msgstr "ワンタイムパスワードを入力してください。"
|
|||||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||||
#: src/components/routes/settings/config-yaml.tsx
|
#: src/components/routes/settings/config-yaml.tsx
|
||||||
#: src/components/routes/settings/notifications.tsx
|
#: src/components/routes/settings/notifications.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
msgid "Error"
|
msgid "Error"
|
||||||
msgstr "エラー"
|
msgstr "エラー"
|
||||||
|
|
||||||
#. placeholder {0}: alert.value
|
#. placeholder {0}: alert.value
|
||||||
#. placeholder {1}: info.unit
|
#. placeholder {1}: info.unit
|
||||||
#. placeholder {2}: alert.min
|
#. placeholder {2}: alert.min
|
||||||
#: src/components/routes/home.tsx
|
#: src/components/active-alerts.tsx
|
||||||
msgid "Exceeds {0}{1} in last {2, plural, one {# minute} other {# minutes}}"
|
msgid "Exceeds {0}{1} in last {2, plural, one {# minute} other {# minutes}}"
|
||||||
msgstr "過去{2, plural, one {# 分} other {# 分}}で{0}{1}を超えています"
|
msgstr "過去{2, plural, one {# 分} other {# 分}}で{0}{1}を超えています"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Exec main PID"
|
||||||
|
msgstr "実行メインPID"
|
||||||
|
|
||||||
#: src/components/routes/settings/config-yaml.tsx
|
#: src/components/routes/settings/config-yaml.tsx
|
||||||
msgid "Existing systems not defined in <0>config.yml</0> will be deleted. Please make regular backups."
|
msgid "Existing systems not defined in <0>config.yml</0> will be deleted. Please make regular backups."
|
||||||
msgstr "<0>config.yml</0>に定義されていない既存のシステムは削除されます。定期的にバックアップを作成してください。"
|
msgstr "<0>config.yml</0>に定義されていない既存のシステムは削除されます。定期的にバックアップを作成してください。"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Exited active"
|
||||||
|
msgstr "アクティブ状態で終了"
|
||||||
|
|
||||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||||
msgid "Export"
|
msgid "Export"
|
||||||
msgstr "エクスポート"
|
msgstr "エクスポート"
|
||||||
@@ -528,12 +674,21 @@ msgstr "現在のシステム設定をエクスポートします。"
|
|||||||
msgid "Fahrenheit (°F)"
|
msgid "Fahrenheit (°F)"
|
||||||
msgstr "華氏 (°F)"
|
msgstr "華氏 (°F)"
|
||||||
|
|
||||||
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
|
msgid "Failed"
|
||||||
|
msgstr "失敗"
|
||||||
|
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
msgid "Failed Attributes:"
|
||||||
|
msgstr "失敗した属性:"
|
||||||
|
|
||||||
#: src/lib/api.ts
|
#: src/lib/api.ts
|
||||||
msgid "Failed to authenticate"
|
msgid "Failed to authenticate"
|
||||||
msgstr "認証に失敗しました"
|
msgstr "認証に失敗しました"
|
||||||
|
|
||||||
#: src/components/routes/settings/layout.tsx
|
#: src/components/routes/settings/layout.tsx
|
||||||
#: src/components/routes/settings/notifications.tsx
|
#: src/components/routes/settings/notifications.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
msgid "Failed to save settings"
|
msgid "Failed to save settings"
|
||||||
msgstr "設定の保存に失敗しました"
|
msgstr "設定の保存に失敗しました"
|
||||||
|
|
||||||
@@ -545,8 +700,16 @@ msgstr "テスト通知の送信に失敗しました"
|
|||||||
msgid "Failed to update alert"
|
msgid "Failed to update alert"
|
||||||
msgstr "アラートの更新に失敗しました"
|
msgstr "アラートの更新に失敗しました"
|
||||||
|
|
||||||
|
#. placeholder {0}: statusTotals[ServiceStatus.Failed]
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Failed: {0}"
|
||||||
|
msgstr "失敗: {0}"
|
||||||
|
|
||||||
|
#: src/components/containers-table/containers-table.tsx
|
||||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
#: src/components/systems-table/systems-table.tsx
|
#: src/components/systems-table/systems-table.tsx
|
||||||
msgid "Filter..."
|
msgid "Filter..."
|
||||||
msgstr "フィルター..."
|
msgstr "フィルター..."
|
||||||
@@ -555,6 +718,10 @@ msgstr "フィルター..."
|
|||||||
msgid "Fingerprint"
|
msgid "Fingerprint"
|
||||||
msgstr "フィンガープリント"
|
msgstr "フィンガープリント"
|
||||||
|
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
msgid "Firmware"
|
||||||
|
msgstr "ファームウェア"
|
||||||
|
|
||||||
#: src/components/alerts/alerts-sheet.tsx
|
#: src/components/alerts/alerts-sheet.tsx
|
||||||
msgid "For <0>{min}</0> {min, plural, one {minute} other {minutes}}"
|
msgid "For <0>{min}</0> {min, plural, one {minute} other {minutes}}"
|
||||||
msgstr "<0>{min}</0> {min, plural, one {分} other {分}}の間"
|
msgstr "<0>{min}</0> {min, plural, one {分} other {分}}の間"
|
||||||
@@ -580,6 +747,10 @@ msgstr "満充電"
|
|||||||
msgid "General"
|
msgid "General"
|
||||||
msgstr "一般"
|
msgstr "一般"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "Global"
|
||||||
|
msgstr "グローバル"
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
msgid "GPU Engines"
|
msgid "GPU Engines"
|
||||||
msgstr "GPUエンジン"
|
msgstr "GPUエンジン"
|
||||||
@@ -588,10 +759,18 @@ msgstr "GPUエンジン"
|
|||||||
msgid "GPU Power Draw"
|
msgid "GPU Power Draw"
|
||||||
msgstr "GPUの消費電力"
|
msgstr "GPUの消費電力"
|
||||||
|
|
||||||
|
#: src/lib/alerts.ts
|
||||||
|
msgid "GPU Usage"
|
||||||
|
msgstr "GPU使用率"
|
||||||
|
|
||||||
#: src/components/systems-table/systems-table.tsx
|
#: src/components/systems-table/systems-table.tsx
|
||||||
msgid "Grid"
|
msgid "Grid"
|
||||||
msgstr "グリッド"
|
msgstr "グリッド"
|
||||||
|
|
||||||
|
#: src/components/containers-table/containers-table-columns.tsx
|
||||||
|
msgid "Health"
|
||||||
|
msgstr "ヘルス"
|
||||||
|
|
||||||
#: src/components/add-system.tsx
|
#: src/components/add-system.tsx
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
msgctxt "Button to copy install command"
|
msgctxt "Button to copy install command"
|
||||||
@@ -611,6 +790,15 @@ msgstr "アイドル"
|
|||||||
msgid "If you've lost the password to your admin account, you may reset it using the following command."
|
msgid "If you've lost the password to your admin account, you may reset it using the following command."
|
||||||
msgstr "管理者アカウントのパスワードを忘れた場合は、次のコマンドを使用してリセットできます。"
|
msgstr "管理者アカウントのパスワードを忘れた場合は、次のコマンドを使用してリセットできます。"
|
||||||
|
|
||||||
|
#: src/components/containers-table/containers-table-columns.tsx
|
||||||
|
msgctxt "Docker image"
|
||||||
|
msgid "Image"
|
||||||
|
msgstr "イメージ"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "Inactive"
|
||||||
|
msgstr "非アクティブ"
|
||||||
|
|
||||||
#: src/components/login/auth-form.tsx
|
#: src/components/login/auth-form.tsx
|
||||||
msgid "Invalid email address."
|
msgid "Invalid email address."
|
||||||
msgstr "無効なメールアドレスです。"
|
msgstr "無効なメールアドレスです。"
|
||||||
@@ -628,6 +816,19 @@ msgstr "言語"
|
|||||||
msgid "Layout"
|
msgid "Layout"
|
||||||
msgstr "レイアウト"
|
msgstr "レイアウト"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/general.tsx
|
||||||
|
msgid "Layout width"
|
||||||
|
msgstr "レイアウト幅"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Lifecycle"
|
||||||
|
msgstr "ライフサイクル"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "limit"
|
||||||
|
msgstr "制限"
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
msgid "Load Average"
|
msgid "Load Average"
|
||||||
msgstr "負荷平均"
|
msgstr "負荷平均"
|
||||||
@@ -649,6 +850,14 @@ msgstr "負荷平均 (5分)"
|
|||||||
msgid "Load Avg"
|
msgid "Load Avg"
|
||||||
msgstr "負荷平均"
|
msgstr "負荷平均"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Load state"
|
||||||
|
msgstr "ロード状態"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Loading..."
|
||||||
|
msgstr "読み込み中..."
|
||||||
|
|
||||||
#: src/components/navbar.tsx
|
#: src/components/navbar.tsx
|
||||||
msgid "Log Out"
|
msgid "Log Out"
|
||||||
msgstr "ログアウト"
|
msgstr "ログアウト"
|
||||||
@@ -663,6 +872,7 @@ msgid "Login attempt failed"
|
|||||||
msgstr "ログイン試行に失敗しました"
|
msgstr "ログイン試行に失敗しました"
|
||||||
|
|
||||||
#: src/components/command-palette.tsx
|
#: src/components/command-palette.tsx
|
||||||
|
#: src/components/containers-table/containers-table.tsx
|
||||||
#: src/components/navbar.tsx
|
#: src/components/navbar.tsx
|
||||||
msgid "Logs"
|
msgid "Logs"
|
||||||
msgstr "ログ"
|
msgstr "ログ"
|
||||||
@@ -671,6 +881,10 @@ msgstr "ログ"
|
|||||||
msgid "Looking instead for where to create alerts? Click the bell <0/> icons in the systems table."
|
msgid "Looking instead for where to create alerts? Click the bell <0/> icons in the systems table."
|
||||||
msgstr "アラートを作成する場所を探していますか?システムテーブルのベル<0/>アイコンをクリックしてください。"
|
msgstr "アラートを作成する場所を探していますか?システムテーブルのベル<0/>アイコンをクリックしてください。"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Main PID"
|
||||||
|
msgstr "メインPID"
|
||||||
|
|
||||||
#: src/components/routes/settings/layout.tsx
|
#: src/components/routes/settings/layout.tsx
|
||||||
msgid "Manage display and notification preferences."
|
msgid "Manage display and notification preferences."
|
||||||
msgstr "表示と通知の設定を管理します。"
|
msgstr "表示と通知の設定を管理します。"
|
||||||
@@ -685,10 +899,22 @@ msgstr "手動セットアップの手順"
|
|||||||
msgid "Max 1 min"
|
msgid "Max 1 min"
|
||||||
msgstr "最大1分"
|
msgstr "最大1分"
|
||||||
|
|
||||||
|
#: src/components/containers-table/containers-table-columns.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table-columns.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
msgid "Memory"
|
msgid "Memory"
|
||||||
msgstr "メモリ"
|
msgstr "メモリ"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Memory limit"
|
||||||
|
msgstr "メモリ制限"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table-columns.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Memory Peak"
|
||||||
|
msgstr "メモリピーク"
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
#: src/lib/alerts.ts
|
#: src/lib/alerts.ts
|
||||||
msgid "Memory Usage"
|
msgid "Memory Usage"
|
||||||
@@ -698,11 +924,19 @@ msgstr "メモリ使用率"
|
|||||||
msgid "Memory usage of docker containers"
|
msgid "Memory usage of docker containers"
|
||||||
msgstr "Dockerコンテナのメモリ使用率"
|
msgstr "Dockerコンテナのメモリ使用率"
|
||||||
|
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
msgid "Model"
|
||||||
|
msgstr "モデル"
|
||||||
|
|
||||||
#: src/components/add-system.tsx
|
#: src/components/add-system.tsx
|
||||||
#: src/components/alerts-history-columns.tsx
|
#: src/components/alerts-history-columns.tsx
|
||||||
|
#: src/components/containers-table/containers-table-columns.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table-columns.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
msgid "Name"
|
msgid "Name"
|
||||||
msgstr "名前"
|
msgstr "名前"
|
||||||
|
|
||||||
|
#: src/components/containers-table/containers-table-columns.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
msgid "Net"
|
msgid "Net"
|
||||||
msgstr "帯域"
|
msgstr "帯域"
|
||||||
@@ -714,6 +948,7 @@ msgstr "Dockerコンテナのネットワークトラフィック"
|
|||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
#: src/components/routes/system/network-sheet.tsx
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
#: src/components/routes/system/network-sheet.tsx
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
msgid "Network traffic of public interfaces"
|
msgid "Network traffic of public interfaces"
|
||||||
msgstr "パブリックインターフェースのネットワークトラフィック"
|
msgstr "パブリックインターフェースのネットワークトラフィック"
|
||||||
|
|
||||||
@@ -722,14 +957,30 @@ msgstr "パブリックインターフェースのネットワークトラフィ
|
|||||||
msgid "Network unit"
|
msgid "Network unit"
|
||||||
msgstr "ネットワーク単位"
|
msgstr "ネットワーク単位"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "No"
|
||||||
|
msgstr "いいえ"
|
||||||
|
|
||||||
#: src/components/command-palette.tsx
|
#: src/components/command-palette.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
msgid "No results found."
|
msgid "No results found."
|
||||||
msgstr "結果が見つかりませんでした。"
|
msgstr "結果が見つかりませんでした。"
|
||||||
|
|
||||||
|
#: src/components/containers-table/containers-table.tsx
|
||||||
|
#: src/components/containers-table/containers-table.tsx
|
||||||
|
#: src/components/containers-table/containers-table.tsx
|
||||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
msgid "No results."
|
msgid "No results."
|
||||||
msgstr "結果がありません。"
|
msgstr "結果がありません。"
|
||||||
|
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
msgid "No S.M.A.R.T. attributes available for this device."
|
||||||
|
msgstr "このデバイスのS.M.A.R.T.属性は利用できません。"
|
||||||
|
|
||||||
#: src/components/systems-table/systems-table.tsx
|
#: src/components/systems-table/systems-table.tsx
|
||||||
#: src/components/systems-table/systems-table.tsx
|
#: src/components/systems-table/systems-table.tsx
|
||||||
msgid "No systems found."
|
msgid "No systems found."
|
||||||
@@ -749,12 +1000,19 @@ msgstr "OAuth 2 / OIDCサポート"
|
|||||||
msgid "On each restart, systems in the database will be updated to match the systems defined in the file."
|
msgid "On each restart, systems in the database will be updated to match the systems defined in the file."
|
||||||
msgstr "再起動のたびに、データベース内のシステムはファイルに定義されたシステムに一致するように更新されます。"
|
msgstr "再起動のたびに、データベース内のシステムはファイルに定義されたシステムに一致するように更新されます。"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "One-time"
|
||||||
|
msgstr "1回限り"
|
||||||
|
|
||||||
#: src/components/login/auth-form.tsx
|
#: src/components/login/auth-form.tsx
|
||||||
msgid "One-time password"
|
msgid "One-time password"
|
||||||
msgstr "ワンタイムパスワード"
|
msgstr "ワンタイムパスワード"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
msgid "Open menu"
|
msgid "Open menu"
|
||||||
msgstr "メニューを開く"
|
msgstr "メニューを開く"
|
||||||
@@ -763,10 +1021,16 @@ msgstr "メニューを開く"
|
|||||||
msgid "Or continue with"
|
msgid "Or continue with"
|
||||||
msgstr "または、以下の方法でログイン"
|
msgstr "または、以下の方法でログイン"
|
||||||
|
|
||||||
|
#: src/components/routes/system/cpu-sheet.tsx
|
||||||
|
msgid "Other"
|
||||||
|
msgstr "その他"
|
||||||
|
|
||||||
#: src/components/alerts/alerts-sheet.tsx
|
#: src/components/alerts/alerts-sheet.tsx
|
||||||
msgid "Overwrite existing alerts"
|
msgid "Overwrite existing alerts"
|
||||||
msgstr "既存のアラートを上書き"
|
msgstr "既存のアラートを上書き"
|
||||||
|
|
||||||
|
#: src/components/command-palette.tsx
|
||||||
|
#: src/components/command-palette.tsx
|
||||||
#: src/components/command-palette.tsx
|
#: src/components/command-palette.tsx
|
||||||
msgid "Page"
|
msgid "Page"
|
||||||
msgstr "ページ"
|
msgstr "ページ"
|
||||||
@@ -798,6 +1062,10 @@ msgstr "パスワードは72バイト未満でなければなりません。"
|
|||||||
msgid "Password reset request received"
|
msgid "Password reset request received"
|
||||||
msgstr "パスワードリセットのリクエストを受け取りました"
|
msgstr "パスワードリセットのリクエストを受け取りました"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "Past"
|
||||||
|
msgstr "過去"
|
||||||
|
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
msgid "Pause"
|
msgid "Pause"
|
||||||
msgstr "一時停止"
|
msgstr "一時停止"
|
||||||
@@ -810,6 +1078,15 @@ msgstr "一時停止中"
|
|||||||
msgid "Paused ({pausedSystemsLength})"
|
msgid "Paused ({pausedSystemsLength})"
|
||||||
msgstr "一時停止 ({pausedSystemsLength})"
|
msgstr "一時停止 ({pausedSystemsLength})"
|
||||||
|
|
||||||
|
#: src/components/routes/system/cpu-sheet.tsx
|
||||||
|
#: src/components/routes/system/cpu-sheet.tsx
|
||||||
|
msgid "Per-core average utilization"
|
||||||
|
msgstr "コアごとの平均使用率"
|
||||||
|
|
||||||
|
#: src/components/routes/system/cpu-sheet.tsx
|
||||||
|
msgid "Percentage of time spent in each state"
|
||||||
|
msgstr "各状態で費やした時間の割合"
|
||||||
|
|
||||||
#: src/components/routes/settings/notifications.tsx
|
#: src/components/routes/settings/notifications.tsx
|
||||||
msgid "Please <0>configure an SMTP server</0> to ensure alerts are delivered."
|
msgid "Please <0>configure an SMTP server</0> to ensure alerts are delivered."
|
||||||
msgstr "アラートが配信されるように<0>SMTPサーバーを設定</0>してください。"
|
msgstr "アラートが配信されるように<0>SMTPサーバーを設定</0>してください。"
|
||||||
@@ -847,6 +1124,11 @@ msgstr "アカウントにサインインしてください"
|
|||||||
msgid "Port"
|
msgid "Port"
|
||||||
msgstr "ポート"
|
msgstr "ポート"
|
||||||
|
|
||||||
|
#. Power On Time
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
msgid "Power On"
|
||||||
|
msgstr "電源オン"
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
msgid "Precise utilization at the recorded time"
|
msgid "Precise utilization at the recorded time"
|
||||||
@@ -856,11 +1138,19 @@ msgstr "記録された時点での正確な利用"
|
|||||||
msgid "Preferred Language"
|
msgid "Preferred Language"
|
||||||
msgstr "優先言語"
|
msgstr "優先言語"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Process started"
|
||||||
|
msgstr "プロセス開始"
|
||||||
|
|
||||||
#. Use 'Key' if your language requires many more characters
|
#. Use 'Key' if your language requires many more characters
|
||||||
#: src/components/add-system.tsx
|
#: src/components/add-system.tsx
|
||||||
msgid "Public Key"
|
msgid "Public Key"
|
||||||
msgstr "公開鍵"
|
msgstr "公開鍵"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "Quiet Hours"
|
||||||
|
msgstr "サイレント時間"
|
||||||
|
|
||||||
#. Disk read
|
#. Disk read
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
@@ -871,6 +1161,16 @@ msgstr "読み取り"
|
|||||||
msgid "Received"
|
msgid "Received"
|
||||||
msgstr "受信"
|
msgstr "受信"
|
||||||
|
|
||||||
|
#: src/components/containers-table/containers-table.tsx
|
||||||
|
#: src/components/containers-table/containers-table.tsx
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
msgid "Refresh"
|
||||||
|
msgstr "更新"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Relationships"
|
||||||
|
msgstr "関係"
|
||||||
|
|
||||||
#: src/components/login/login.tsx
|
#: src/components/login/login.tsx
|
||||||
msgid "Request a one-time password"
|
msgid "Request a one-time password"
|
||||||
msgstr "ワンタイムパスワードをリクエスト"
|
msgstr "ワンタイムパスワードをリクエスト"
|
||||||
@@ -879,6 +1179,14 @@ msgstr "ワンタイムパスワードをリクエスト"
|
|||||||
msgid "Request OTP"
|
msgid "Request OTP"
|
||||||
msgstr "OTP をリクエスト"
|
msgstr "OTP をリクエスト"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Required by"
|
||||||
|
msgstr "必要とされる"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Requires"
|
||||||
|
msgstr "必要とする"
|
||||||
|
|
||||||
#: src/components/login/forgot-pass-form.tsx
|
#: src/components/login/forgot-pass-form.tsx
|
||||||
msgid "Reset Password"
|
msgid "Reset Password"
|
||||||
msgstr "パスワードをリセット"
|
msgstr "パスワードをリセット"
|
||||||
@@ -889,10 +1197,19 @@ msgstr "パスワードをリセット"
|
|||||||
msgid "Resolved"
|
msgid "Resolved"
|
||||||
msgstr "解決済み"
|
msgstr "解決済み"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Restarts"
|
||||||
|
msgstr "再起動"
|
||||||
|
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
msgid "Resume"
|
msgid "Resume"
|
||||||
msgstr "再開"
|
msgstr "再開"
|
||||||
|
|
||||||
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
|
msgctxt "Root disk label"
|
||||||
|
msgid "Root"
|
||||||
|
msgstr "ルート"
|
||||||
|
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
msgid "Rotate token"
|
msgid "Rotate token"
|
||||||
msgstr "トークンをローテート"
|
msgstr "トークンをローテート"
|
||||||
@@ -901,6 +1218,18 @@ msgstr "トークンをローテート"
|
|||||||
msgid "Rows per page"
|
msgid "Rows per page"
|
||||||
msgstr "ページあたりの行数"
|
msgstr "ページあたりの行数"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Runtime Metrics"
|
||||||
|
msgstr "ランタイムメトリクス"
|
||||||
|
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
msgid "S.M.A.R.T. Details"
|
||||||
|
msgstr "S.M.A.R.T.詳細"
|
||||||
|
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
msgid "S.M.A.R.T. Self-Test"
|
||||||
|
msgstr "S.M.A.R.T.セルフテスト"
|
||||||
|
|
||||||
#: src/components/routes/settings/notifications.tsx
|
#: src/components/routes/settings/notifications.tsx
|
||||||
msgid "Save address using enter key or comma. Leave blank to disable email notifications."
|
msgid "Save address using enter key or comma. Leave blank to disable email notifications."
|
||||||
msgstr "Enterキーまたはカンマを使用してアドレスを保存します。空白のままにするとメール通知が無効になります。"
|
msgstr "Enterキーまたはカンマを使用してアドレスを保存します。空白のままにするとメール通知が無効になります。"
|
||||||
@@ -914,6 +1243,18 @@ msgstr "設定を保存"
|
|||||||
msgid "Save system"
|
msgid "Save system"
|
||||||
msgstr "システムを保存"
|
msgstr "システムを保存"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "Schedule"
|
||||||
|
msgstr "スケジュール"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "Schedule quiet hours where notifications will not be sent, such as during maintenance periods."
|
||||||
|
msgstr "メンテナンス期間中などの通知が送信されないサイレント時間をスケジュールします。"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "Schedule quiet hours where notifications will not be sent."
|
||||||
|
msgstr "通知が送信されないサイレント時間をスケジュールします。"
|
||||||
|
|
||||||
#: src/components/navbar.tsx
|
#: src/components/navbar.tsx
|
||||||
msgid "Search"
|
msgid "Search"
|
||||||
msgstr "検索"
|
msgstr "検索"
|
||||||
@@ -926,10 +1267,26 @@ msgstr "システムまたは設定を検索..."
|
|||||||
msgid "See <0>notification settings</0> to configure how you receive alerts."
|
msgid "See <0>notification settings</0> to configure how you receive alerts."
|
||||||
msgstr "アラートの受信方法を設定するには<0>通知設定</0>を参照してください。"
|
msgstr "アラートの受信方法を設定するには<0>通知設定</0>を参照してください。"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "Select {foo}"
|
||||||
|
msgstr "{foo}を選択"
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
msgid "Sent"
|
msgid "Sent"
|
||||||
msgstr "送信"
|
msgstr "送信"
|
||||||
|
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
msgid "Serial Number"
|
||||||
|
msgstr "シリアル番号"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Service Details"
|
||||||
|
msgstr "サービス詳細"
|
||||||
|
|
||||||
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
|
msgid "Services"
|
||||||
|
msgstr "サービス"
|
||||||
|
|
||||||
#: src/components/routes/settings/general.tsx
|
#: src/components/routes/settings/general.tsx
|
||||||
msgid "Set percentage thresholds for meter colors."
|
msgid "Set percentage thresholds for meter colors."
|
||||||
msgstr "メーターの色を変更するしきい値(パーセンテージ)を設定します。"
|
msgstr "メーターの色を変更するしきい値(パーセンテージ)を設定します。"
|
||||||
@@ -957,16 +1314,30 @@ msgstr "SMTP設定"
|
|||||||
msgid "Sort By"
|
msgid "Sort By"
|
||||||
msgstr "並び替え基準"
|
msgstr "並び替え基準"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "Start Time"
|
||||||
|
msgstr "開始時間"
|
||||||
|
|
||||||
#. Context: alert state (active or resolved)
|
#. Context: alert state (active or resolved)
|
||||||
#: src/components/alerts-history-columns.tsx
|
#: src/components/alerts-history-columns.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table-columns.tsx
|
||||||
msgid "State"
|
msgid "State"
|
||||||
msgstr "状態"
|
msgstr "状態"
|
||||||
|
|
||||||
|
#: src/components/containers-table/containers-table-columns.tsx
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
#: src/components/systems-table/systems-table.tsx
|
#: src/components/systems-table/systems-table.tsx
|
||||||
#: src/lib/alerts.ts
|
#: src/lib/alerts.ts
|
||||||
msgid "Status"
|
msgid "Status"
|
||||||
msgstr "ステータス"
|
msgstr "ステータス"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table-columns.tsx
|
||||||
|
msgid "Sub State"
|
||||||
|
msgstr "サブ状態"
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
msgid "Swap space used by the system"
|
msgid "Swap space used by the system"
|
||||||
msgstr "システムが使用するスワップ領域"
|
msgstr "システムが使用するスワップ領域"
|
||||||
@@ -975,8 +1346,15 @@ msgstr "システムが使用するスワップ領域"
|
|||||||
msgid "Swap Usage"
|
msgid "Swap Usage"
|
||||||
msgstr "スワップ使用量"
|
msgstr "スワップ使用量"
|
||||||
|
|
||||||
|
#: src/components/add-system.tsx
|
||||||
#: src/components/alerts-history-columns.tsx
|
#: src/components/alerts-history-columns.tsx
|
||||||
|
#: src/components/containers-table/containers-table-columns.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
#: src/lib/alerts.ts
|
#: src/lib/alerts.ts
|
||||||
msgid "System"
|
msgid "System"
|
||||||
@@ -986,6 +1364,10 @@ msgstr "システム"
|
|||||||
msgid "System load averages over time"
|
msgid "System load averages over time"
|
||||||
msgstr "システムの負荷平均の推移"
|
msgstr "システムの負荷平均の推移"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Systemd Services"
|
||||||
|
msgstr "Systemdサービス"
|
||||||
|
|
||||||
#: src/components/navbar.tsx
|
#: src/components/navbar.tsx
|
||||||
msgid "Systems"
|
msgid "Systems"
|
||||||
msgstr "システム"
|
msgstr "システム"
|
||||||
@@ -998,7 +1380,12 @@ msgstr "システムはデータディレクトリ内の<0>config.yml</0>ファ
|
|||||||
msgid "Table"
|
msgid "Table"
|
||||||
msgstr "テーブル"
|
msgstr "テーブル"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Tasks"
|
||||||
|
msgstr "タスク"
|
||||||
|
|
||||||
#. Temperature label in systems table
|
#. Temperature label in systems table
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
msgid "Temp"
|
msgid "Temp"
|
||||||
msgstr "温度"
|
msgstr "温度"
|
||||||
@@ -1080,6 +1467,11 @@ msgstr "トークンはエージェントの接続と登録を可能にします
|
|||||||
msgid "Tokens and fingerprints are used to authenticate WebSocket connections to the hub."
|
msgid "Tokens and fingerprints are used to authenticate WebSocket connections to the hub."
|
||||||
msgstr "トークンとフィンガープリントは、ハブへのWebSocket接続の認証に使用されます。"
|
msgstr "トークンとフィンガープリントは、ハブへのWebSocket接続の認証に使用されます。"
|
||||||
|
|
||||||
|
#: src/components/ui/chart.tsx
|
||||||
|
#: src/components/ui/chart.tsx
|
||||||
|
msgid "Total"
|
||||||
|
msgstr "総数"
|
||||||
|
|
||||||
#: src/components/routes/system/network-sheet.tsx
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
msgid "Total data received for each interface"
|
msgid "Total data received for each interface"
|
||||||
msgstr "各インターフェースの総受信データ量"
|
msgstr "各インターフェースの総受信データ量"
|
||||||
@@ -1088,6 +1480,19 @@ msgstr "各インターフェースの総受信データ量"
|
|||||||
msgid "Total data sent for each interface"
|
msgid "Total data sent for each interface"
|
||||||
msgstr "各インターフェースの総送信データ量"
|
msgstr "各インターフェースの総送信データ量"
|
||||||
|
|
||||||
|
#. placeholder {0}: data.length
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Total: {0}"
|
||||||
|
msgstr "合計: {0}"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Triggered by"
|
||||||
|
msgstr "トリガー元"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Triggers"
|
||||||
|
msgstr "トリガー"
|
||||||
|
|
||||||
#: src/lib/alerts.ts
|
#: src/lib/alerts.ts
|
||||||
msgid "Triggers when 1 minute load average exceeds a threshold"
|
msgid "Triggers when 1 minute load average exceeds a threshold"
|
||||||
msgstr "1分間の負荷平均がしきい値を超えたときにトリガーされます"
|
msgstr "1分間の負荷平均がしきい値を超えたときにトリガーされます"
|
||||||
@@ -1112,6 +1517,10 @@ msgstr "上り/下りの合計がしきい値を超えたときにトリガー
|
|||||||
msgid "Triggers when CPU usage exceeds a threshold"
|
msgid "Triggers when CPU usage exceeds a threshold"
|
||||||
msgstr "CPU使用率がしきい値を超えたときにトリガーされます"
|
msgstr "CPU使用率がしきい値を超えたときにトリガーされます"
|
||||||
|
|
||||||
|
#: src/lib/alerts.ts
|
||||||
|
msgid "Triggers when GPU usage exceeds a threshold"
|
||||||
|
msgstr "GPU使用率がしきい値を超えたときにトリガーされます"
|
||||||
|
|
||||||
#: src/lib/alerts.ts
|
#: src/lib/alerts.ts
|
||||||
msgid "Triggers when memory usage exceeds a threshold"
|
msgid "Triggers when memory usage exceeds a threshold"
|
||||||
msgstr "メモリ使用率がしきい値を超えたときにトリガーされます"
|
msgstr "メモリ使用率がしきい値を超えたときにトリガーされます"
|
||||||
@@ -1124,6 +1533,16 @@ msgstr "ステータスが上から下に切り替わるときにトリガーさ
|
|||||||
msgid "Triggers when usage of any disk exceeds a threshold"
|
msgid "Triggers when usage of any disk exceeds a threshold"
|
||||||
msgstr "ディスクの使用量がしきい値を超えたときにトリガーされます"
|
msgstr "ディスクの使用量がしきい値を超えたときにトリガーされます"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
msgid "Type"
|
||||||
|
msgstr "タイプ"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Unit file"
|
||||||
|
msgstr "ユニットファイル"
|
||||||
|
|
||||||
#. Temperature / network units
|
#. Temperature / network units
|
||||||
#: src/components/routes/settings/general.tsx
|
#: src/components/routes/settings/general.tsx
|
||||||
msgid "Unit preferences"
|
msgid "Unit preferences"
|
||||||
@@ -1139,6 +1558,11 @@ msgstr "ユニバーサルトークン"
|
|||||||
msgid "Unknown"
|
msgid "Unknown"
|
||||||
msgstr "不明"
|
msgstr "不明"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Unlimited"
|
||||||
|
msgstr "無制限"
|
||||||
|
|
||||||
#. Context: System is up
|
#. Context: System is up
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
@@ -1149,6 +1573,20 @@ msgstr "正常"
|
|||||||
msgid "Up ({upSystemsLength})"
|
msgid "Up ({upSystemsLength})"
|
||||||
msgstr "正常 ({upSystemsLength})"
|
msgstr "正常 ({upSystemsLength})"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "Update"
|
||||||
|
msgstr "更新"
|
||||||
|
|
||||||
|
#: src/components/containers-table/containers-table-columns.tsx
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table-columns.tsx
|
||||||
|
msgid "Updated"
|
||||||
|
msgstr "更新済み"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Updated every 10 minutes."
|
||||||
|
msgstr "10分ごとに更新されます。"
|
||||||
|
|
||||||
#: src/components/routes/system/network-sheet.tsx
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
msgid "Upload"
|
msgid "Upload"
|
||||||
msgstr "アップロード"
|
msgstr "アップロード"
|
||||||
@@ -1161,6 +1599,7 @@ msgstr "稼働時間"
|
|||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
|
#: src/components/routes/system/cpu-sheet.tsx
|
||||||
msgid "Usage"
|
msgid "Usage"
|
||||||
msgstr "使用量"
|
msgstr "使用量"
|
||||||
|
|
||||||
@@ -1186,6 +1625,7 @@ msgstr "値"
|
|||||||
msgid "View"
|
msgid "View"
|
||||||
msgstr "表示"
|
msgstr "表示"
|
||||||
|
|
||||||
|
#: src/components/routes/system/cpu-sheet.tsx
|
||||||
#: src/components/routes/system/network-sheet.tsx
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
msgid "View more"
|
msgid "View more"
|
||||||
msgstr "もっと見る"
|
msgstr "もっと見る"
|
||||||
@@ -1206,6 +1646,10 @@ msgstr "表示するのに十分なレコードを待っています"
|
|||||||
msgid "Want to help improve our translations? Check <0>Crowdin</0> for details."
|
msgid "Want to help improve our translations? Check <0>Crowdin</0> for details."
|
||||||
msgstr "翻訳をさらに良くするためにご協力をお願いします。詳細については<0>Crowdin</0>をご覧ください。"
|
msgstr "翻訳をさらに良くするためにご協力をお願いします。詳細については<0>Crowdin</0>をご覧ください。"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Wants"
|
||||||
|
msgstr "要求"
|
||||||
|
|
||||||
#: src/components/routes/settings/general.tsx
|
#: src/components/routes/settings/general.tsx
|
||||||
msgid "Warning (%)"
|
msgid "Warning (%)"
|
||||||
msgstr "警告 (%)"
|
msgstr "警告 (%)"
|
||||||
@@ -1242,6 +1686,13 @@ msgstr "YAML設定"
|
|||||||
msgid "YAML Configuration"
|
msgid "YAML Configuration"
|
||||||
msgstr "YAML設定"
|
msgstr "YAML設定"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Yes"
|
||||||
|
msgstr "はい"
|
||||||
|
|
||||||
#: src/components/routes/settings/layout.tsx
|
#: src/components/routes/settings/layout.tsx
|
||||||
msgid "Your user settings have been updated."
|
msgid "Your user settings have been updated."
|
||||||
msgstr "ユーザー設定が更新されました。"
|
msgstr "ユーザー設定が更新されました。"
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -8,7 +8,7 @@ msgstr ""
|
|||||||
"Language: pl\n"
|
"Language: pl\n"
|
||||||
"Project-Id-Version: beszel\n"
|
"Project-Id-Version: beszel\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"PO-Revision-Date: 2025-09-18 15:36\n"
|
"PO-Revision-Date: 2025-12-02 23:18\n"
|
||||||
"Last-Translator: \n"
|
"Last-Translator: \n"
|
||||||
"Language-Team: Polish\n"
|
"Language-Team: Polish\n"
|
||||||
"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n"
|
"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n"
|
||||||
@@ -18,27 +18,24 @@ msgstr ""
|
|||||||
"X-Crowdin-File: /main/internal/site/src/locales/en/en.po\n"
|
"X-Crowdin-File: /main/internal/site/src/locales/en/en.po\n"
|
||||||
"X-Crowdin-File-ID: 32\n"
|
"X-Crowdin-File-ID: 32\n"
|
||||||
|
|
||||||
#. placeholder {0}: Math.trunc(system.info?.u / 86400)
|
|
||||||
#: src/components/routes/system.tsx
|
|
||||||
msgid "{0, plural, one {# day} other {# days}}"
|
|
||||||
msgstr "{0, plural, one {# dzień} few {# dni} many {# dni} other {# dni}}"
|
|
||||||
|
|
||||||
#. placeholder {0}: Math.trunc(system.info.u / 3600)
|
|
||||||
#: src/components/routes/system.tsx
|
|
||||||
msgid "{0, plural, one {# hour} other {# hours}}"
|
|
||||||
msgstr "{0, plural, one {godzinę} few {# godziny} many {# godzin} other {# godziny}}"
|
|
||||||
|
|
||||||
#. placeholder {0}: Math.trunc(system.info.u / 60)
|
|
||||||
#: src/components/routes/system.tsx
|
|
||||||
msgid "{0, plural, one {# minute} few {# minutes} many {# minutes} other {# minutes}}"
|
|
||||||
msgstr "{0, plural, one {# minuta} few {# minuty} many {# minut} other {# minut}}"
|
|
||||||
|
|
||||||
#. placeholder {0}: table.getFilteredSelectedRowModel().rows.length
|
#. placeholder {0}: table.getFilteredSelectedRowModel().rows.length
|
||||||
#. placeholder {1}: table.getFilteredRowModel().rows.length
|
#. placeholder {1}: table.getFilteredRowModel().rows.length
|
||||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||||
msgid "{0} of {1} row(s) selected."
|
msgid "{0} of {1} row(s) selected."
|
||||||
msgstr "{0} z {1} wybranych wierszy."
|
msgstr "{0} z {1} wybranych wierszy."
|
||||||
|
|
||||||
|
#: src/lib/utils.ts
|
||||||
|
msgid "{count, plural, one {{countString} day} other {{countString} days}}"
|
||||||
|
msgstr "{count, plural, one {{countString} dzień} few {{countString} dni} many {{countString} dni} other {{countString} dni}}"
|
||||||
|
|
||||||
|
#: src/lib/utils.ts
|
||||||
|
msgid "{count, plural, one {{countString} hour} other {{countString} hours}}"
|
||||||
|
msgstr "{count, plural, one {godzinę} few {{countString} godziny} many {{countString} godzin} other {{countString} godziny}}"
|
||||||
|
|
||||||
|
#: src/lib/utils.ts
|
||||||
|
msgid "{count, plural, one {{countString} minute} few {{countString} minutes} many {{countString} minutes} other {{countString} minutes}}"
|
||||||
|
msgstr "{count, plural, one {{countString} minuta} few {{countString} minuty} many {{countString} minut} other {{countString} minut}}"
|
||||||
|
|
||||||
#: src/lib/utils.ts
|
#: src/lib/utils.ts
|
||||||
msgid "1 hour"
|
msgid "1 hour"
|
||||||
msgstr "1 godzina"
|
msgstr "1 godzina"
|
||||||
@@ -48,6 +45,10 @@ msgstr "1 godzina"
|
|||||||
msgid "1 min"
|
msgid "1 min"
|
||||||
msgstr "1 min"
|
msgstr "1 min"
|
||||||
|
|
||||||
|
#: src/lib/utils.ts
|
||||||
|
msgid "1 minute"
|
||||||
|
msgstr "1 minuta"
|
||||||
|
|
||||||
#: src/lib/utils.ts
|
#: src/lib/utils.ts
|
||||||
msgid "1 week"
|
msgid "1 week"
|
||||||
msgstr "1 tydzień"
|
msgstr "1 tydzień"
|
||||||
@@ -75,28 +76,37 @@ msgid "5 min"
|
|||||||
msgstr "5 min"
|
msgstr "5 min"
|
||||||
|
|
||||||
#. Table column
|
#. Table column
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
msgid "Actions"
|
msgid "Actions"
|
||||||
msgstr "Akcje"
|
msgstr "Akcje"
|
||||||
|
|
||||||
#: src/components/alerts-history-columns.tsx
|
#: src/components/alerts-history-columns.tsx
|
||||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
msgid "Active"
|
msgid "Active"
|
||||||
msgstr "Aktywny"
|
msgstr "Aktywny"
|
||||||
|
|
||||||
#: src/components/routes/home.tsx
|
#: src/components/active-alerts.tsx
|
||||||
msgid "Active Alerts"
|
msgid "Active Alerts"
|
||||||
msgstr "Aktywne alerty"
|
msgstr "Aktywne alerty"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Active state"
|
||||||
|
msgstr "Stan aktywny"
|
||||||
|
|
||||||
|
#: src/components/add-system.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "Add {foo}"
|
||||||
|
msgstr "Dodaj {foo}"
|
||||||
|
|
||||||
#: src/components/add-system.tsx
|
#: src/components/add-system.tsx
|
||||||
msgid "Add <0>System</0>"
|
msgid "Add <0>System</0>"
|
||||||
msgstr "Dodaj <0>system</0>"
|
msgstr "Dodaj <0>system</0>"
|
||||||
|
|
||||||
#: src/components/add-system.tsx
|
|
||||||
msgid "Add New System"
|
|
||||||
msgstr "Dodaj nowy system"
|
|
||||||
|
|
||||||
#: src/components/add-system.tsx
|
#: src/components/add-system.tsx
|
||||||
msgid "Add system"
|
msgid "Add system"
|
||||||
msgstr "Dodaj system"
|
msgstr "Dodaj system"
|
||||||
@@ -109,11 +119,19 @@ msgstr "Dodaj URL"
|
|||||||
msgid "Adjust display options for charts."
|
msgid "Adjust display options for charts."
|
||||||
msgstr "Dostosuj opcje wyświetlania wykresów."
|
msgstr "Dostosuj opcje wyświetlania wykresów."
|
||||||
|
|
||||||
|
#: src/components/routes/settings/general.tsx
|
||||||
|
msgid "Adjust the width of the main layout"
|
||||||
|
msgstr "Dostosuj szerokość głównego układu"
|
||||||
|
|
||||||
#: src/components/command-palette.tsx
|
#: src/components/command-palette.tsx
|
||||||
#: src/components/command-palette.tsx
|
#: src/components/command-palette.tsx
|
||||||
msgid "Admin"
|
msgid "Admin"
|
||||||
msgstr "Admin"
|
msgstr "Admin"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "After"
|
||||||
|
msgstr "Po"
|
||||||
|
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
msgid "Agent"
|
msgid "Agent"
|
||||||
msgstr "Agent"
|
msgstr "Agent"
|
||||||
@@ -129,7 +147,16 @@ msgstr "Historia alertów"
|
|||||||
msgid "Alerts"
|
msgid "Alerts"
|
||||||
msgstr "Alerty"
|
msgstr "Alerty"
|
||||||
|
|
||||||
|
#: src/components/command-palette.tsx
|
||||||
|
#: src/components/containers-table/containers-table.tsx
|
||||||
|
#: src/components/routes/containers.tsx
|
||||||
|
msgid "All Containers"
|
||||||
|
msgstr "Wszystkie kontenery"
|
||||||
|
|
||||||
#: src/components/alerts/alerts-sheet.tsx
|
#: src/components/alerts/alerts-sheet.tsx
|
||||||
|
#: src/components/command-palette.tsx
|
||||||
|
#: src/components/routes/home.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
#: src/components/systems-table/systems-table.tsx
|
#: src/components/systems-table/systems-table.tsx
|
||||||
#: src/components/systems-table/systems-table.tsx
|
#: src/components/systems-table/systems-table.tsx
|
||||||
msgid "All Systems"
|
msgid "All Systems"
|
||||||
@@ -191,6 +218,18 @@ msgstr "Przepustowość"
|
|||||||
msgid "Battery"
|
msgid "Battery"
|
||||||
msgstr "Bateria"
|
msgstr "Bateria"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Became active"
|
||||||
|
msgstr "Stało się aktywnym"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Became inactive"
|
||||||
|
msgstr "Stało się nieaktywnym"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Before"
|
||||||
|
msgstr "Przed"
|
||||||
|
|
||||||
#: src/components/login/auth-form.tsx
|
#: src/components/login/auth-form.tsx
|
||||||
msgid "Beszel supports OpenID Connect and many OAuth2 authentication providers."
|
msgid "Beszel supports OpenID Connect and many OAuth2 authentication providers."
|
||||||
msgstr "Beszel obsługuje OpenID Connect i wielu dostawców uwierzytelniania OAuth2."
|
msgstr "Beszel obsługuje OpenID Connect i wielu dostawców uwierzytelniania OAuth2."
|
||||||
@@ -208,6 +247,10 @@ msgstr "Plik binarny"
|
|||||||
msgid "Bits (Kbps, Mbps, Gbps)"
|
msgid "Bits (Kbps, Mbps, Gbps)"
|
||||||
msgstr "Bity (Kbps, Mbps, Gbps)"
|
msgstr "Bity (Kbps, Mbps, Gbps)"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Boot state"
|
||||||
|
msgstr "Stan rozruchu"
|
||||||
|
|
||||||
#: src/components/routes/settings/general.tsx
|
#: src/components/routes/settings/general.tsx
|
||||||
#: src/components/routes/settings/general.tsx
|
#: src/components/routes/settings/general.tsx
|
||||||
msgid "Bytes (KB/s, MB/s, GB/s)"
|
msgid "Bytes (KB/s, MB/s, GB/s)"
|
||||||
@@ -217,11 +260,32 @@ msgstr "Bajty (KB/s, MB/s, GB/s)"
|
|||||||
msgid "Cache / Buffers"
|
msgid "Cache / Buffers"
|
||||||
msgstr "Pamięć podręczna / Bufory"
|
msgstr "Pamięć podręczna / Bufory"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Can reload"
|
||||||
|
msgstr "Może przeładować"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Can start"
|
||||||
|
msgstr "Może uruchomić"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Can stop"
|
||||||
|
msgstr "Może zatrzymać"
|
||||||
|
|
||||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "Anuluj"
|
msgstr "Anuluj"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Capabilities"
|
||||||
|
msgstr "Możliwości"
|
||||||
|
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
msgid "Capacity"
|
||||||
|
msgstr "Pojemność"
|
||||||
|
|
||||||
#: src/components/routes/settings/config-yaml.tsx
|
#: src/components/routes/settings/config-yaml.tsx
|
||||||
msgid "Caution - potential data loss"
|
msgid "Caution - potential data loss"
|
||||||
msgstr "Uwaga- potencjalna utrata danych."
|
msgstr "Uwaga- potencjalna utrata danych."
|
||||||
@@ -263,6 +327,20 @@ msgstr "Sprawdź logi, aby uzyskać więcej informacji."
|
|||||||
msgid "Check your notification service"
|
msgid "Check your notification service"
|
||||||
msgstr "Sprawdź swój serwis powiadomień"
|
msgstr "Sprawdź swój serwis powiadomień"
|
||||||
|
|
||||||
|
#: src/components/containers-table/containers-table.tsx
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
#: src/components/systems-table/systems-table.tsx
|
||||||
|
msgid "Clear"
|
||||||
|
msgstr "Wyczyść"
|
||||||
|
|
||||||
|
#: src/components/containers-table/containers-table.tsx
|
||||||
|
msgid "Click on a container to view more information."
|
||||||
|
msgstr "Kliknij na kontener, aby wyświetlić więcej informacji."
|
||||||
|
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
msgid "Click on a device to view more information."
|
||||||
|
msgstr "Kliknij na urządzenie, aby wyświetlić więcej informacji."
|
||||||
|
|
||||||
#: src/components/systems-table/systems-table.tsx
|
#: src/components/systems-table/systems-table.tsx
|
||||||
msgid "Click on a system to view more information."
|
msgid "Click on a system to view more information."
|
||||||
msgstr "Kliknij na system, aby zobaczyć więcej informacji."
|
msgstr "Kliknij na system, aby zobaczyć więcej informacji."
|
||||||
@@ -285,7 +363,11 @@ msgstr "Skonfiguruj sposób otrzymywania powiadomień."
|
|||||||
msgid "Confirm password"
|
msgid "Confirm password"
|
||||||
msgstr "Potwierdź hasło"
|
msgstr "Potwierdź hasło"
|
||||||
|
|
||||||
#: src/components/routes/home.tsx
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Conflicts"
|
||||||
|
msgstr "Konflikty"
|
||||||
|
|
||||||
|
#: src/components/active-alerts.tsx
|
||||||
msgid "Connection is down"
|
msgid "Connection is down"
|
||||||
msgstr "Brak połączenia"
|
msgstr "Brak połączenia"
|
||||||
|
|
||||||
@@ -344,16 +426,39 @@ msgstr "Skopiuj poniżej zawartość pliku <0>docker-compose.yml</0> dla agenta
|
|||||||
msgid "Copy YAML"
|
msgid "Copy YAML"
|
||||||
msgstr "Kopiuj YAML"
|
msgstr "Kopiuj YAML"
|
||||||
|
|
||||||
|
#: src/components/containers-table/containers-table-columns.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table-columns.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
msgid "CPU"
|
msgid "CPU"
|
||||||
msgstr "Procesor"
|
msgstr "Procesor"
|
||||||
|
|
||||||
|
#: src/components/routes/system/cpu-sheet.tsx
|
||||||
|
msgid "CPU Cores"
|
||||||
|
msgstr "Rdzenie CPU"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table-columns.tsx
|
||||||
|
msgid "CPU Peak"
|
||||||
|
msgstr "Szczyt CPU"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "CPU time"
|
||||||
|
msgstr "Czas CPU"
|
||||||
|
|
||||||
|
#: src/components/routes/system/cpu-sheet.tsx
|
||||||
|
msgid "CPU Time Breakdown"
|
||||||
|
msgstr "Podział czasu CPU"
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
|
#: src/components/routes/system/cpu-sheet.tsx
|
||||||
#: src/lib/alerts.ts
|
#: src/lib/alerts.ts
|
||||||
msgid "CPU Usage"
|
msgid "CPU Usage"
|
||||||
msgstr "Użycie procesora"
|
msgstr "Użycie procesora"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "Create"
|
||||||
|
msgstr "Utwórz"
|
||||||
|
|
||||||
#: src/components/login/auth-form.tsx
|
#: src/components/login/auth-form.tsx
|
||||||
msgid "Create account"
|
msgid "Create account"
|
||||||
msgstr "Utwórz konto"
|
msgstr "Utwórz konto"
|
||||||
@@ -380,16 +485,23 @@ msgstr "Wysyłanie skumulowane"
|
|||||||
msgid "Current state"
|
msgid "Current state"
|
||||||
msgstr "Aktualny stan"
|
msgstr "Aktualny stan"
|
||||||
|
|
||||||
#: src/components/command-palette.tsx
|
#. Power Cycles
|
||||||
#: src/components/routes/home.tsx
|
#: src/components/routes/system/smart-table.tsx
|
||||||
msgid "Dashboard"
|
msgid "Cycles"
|
||||||
msgstr "Panel kontrolny"
|
msgstr "Cykle"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "Daily"
|
||||||
|
msgstr "Codziennie"
|
||||||
|
|
||||||
#: src/components/routes/settings/general.tsx
|
#: src/components/routes/settings/general.tsx
|
||||||
msgid "Default time period"
|
msgid "Default time period"
|
||||||
msgstr "Domyślny przedział czasu"
|
msgstr "Domyślny przedział czasu"
|
||||||
|
|
||||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
msgid "Delete"
|
msgid "Delete"
|
||||||
msgstr "Usuń"
|
msgstr "Usuń"
|
||||||
@@ -398,6 +510,18 @@ msgstr "Usuń"
|
|||||||
msgid "Delete fingerprint"
|
msgid "Delete fingerprint"
|
||||||
msgstr "Usuń odcisk palca"
|
msgstr "Usuń odcisk palca"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Description"
|
||||||
|
msgstr "Opis"
|
||||||
|
|
||||||
|
#: src/components/containers-table/containers-table.tsx
|
||||||
|
msgid "Detail"
|
||||||
|
msgstr "Szczegół"
|
||||||
|
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
msgid "Device"
|
||||||
|
msgstr "Urządzenie"
|
||||||
|
|
||||||
#. Context: Battery state
|
#. Context: Battery state
|
||||||
#: src/lib/i18n.ts
|
#: src/lib/i18n.ts
|
||||||
msgid "Discharging"
|
msgid "Discharging"
|
||||||
@@ -438,6 +562,7 @@ msgid "Docker Network I/O"
|
|||||||
msgstr "Sieć Docker I/O"
|
msgstr "Sieć Docker I/O"
|
||||||
|
|
||||||
#: src/components/command-palette.tsx
|
#: src/components/command-palette.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
msgid "Documentation"
|
msgid "Documentation"
|
||||||
msgstr "Dokumentacja"
|
msgstr "Dokumentacja"
|
||||||
|
|
||||||
@@ -461,11 +586,16 @@ msgstr "Pobieranie"
|
|||||||
msgid "Duration"
|
msgid "Duration"
|
||||||
msgstr "Czas trwania"
|
msgstr "Czas trwania"
|
||||||
|
|
||||||
#: src/components/add-system.tsx
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
msgid "Edit"
|
msgid "Edit"
|
||||||
msgstr "Edytuj"
|
msgstr "Edytuj"
|
||||||
|
|
||||||
|
#: src/components/add-system.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "Edit {foo}"
|
||||||
|
msgstr "Edytuj {foo}"
|
||||||
|
|
||||||
#: src/components/login/auth-form.tsx
|
#: src/components/login/auth-form.tsx
|
||||||
#: src/components/login/forgot-pass-form.tsx
|
#: src/components/login/forgot-pass-form.tsx
|
||||||
#: src/components/login/otp-forms.tsx
|
#: src/components/login/otp-forms.tsx
|
||||||
@@ -481,6 +611,11 @@ msgstr "Powiadomienia e-mail"
|
|||||||
msgid "Empty"
|
msgid "Empty"
|
||||||
msgstr "Pusta"
|
msgstr "Pusta"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "End Time"
|
||||||
|
msgstr "Czas zakończenia"
|
||||||
|
|
||||||
#: src/components/login/login.tsx
|
#: src/components/login/login.tsx
|
||||||
msgid "Enter email address to reset password"
|
msgid "Enter email address to reset password"
|
||||||
msgstr "Wprowadź adres e-mail, aby zresetować hasło"
|
msgstr "Wprowadź adres e-mail, aby zresetować hasło"
|
||||||
@@ -497,21 +632,32 @@ msgstr "Wprowadź swoje jednorazowe hasło."
|
|||||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||||
#: src/components/routes/settings/config-yaml.tsx
|
#: src/components/routes/settings/config-yaml.tsx
|
||||||
#: src/components/routes/settings/notifications.tsx
|
#: src/components/routes/settings/notifications.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
msgid "Error"
|
msgid "Error"
|
||||||
msgstr "Błąd"
|
msgstr "Błąd"
|
||||||
|
|
||||||
#. placeholder {0}: alert.value
|
#. placeholder {0}: alert.value
|
||||||
#. placeholder {1}: info.unit
|
#. placeholder {1}: info.unit
|
||||||
#. placeholder {2}: alert.min
|
#. placeholder {2}: alert.min
|
||||||
#: src/components/routes/home.tsx
|
#: src/components/active-alerts.tsx
|
||||||
msgid "Exceeds {0}{1} in last {2, plural, one {# minute} other {# minutes}}"
|
msgid "Exceeds {0}{1} in last {2, plural, one {# minute} other {# minutes}}"
|
||||||
msgstr "Przekracza {0}{1} w ciągu ostatnich {2, plural, one {# minuty} other {# minut}}"
|
msgstr "Przekracza {0}{1} w ciągu ostatnich {2, plural, one {# minuty} other {# minut}}"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Exec main PID"
|
||||||
|
msgstr "Główny PID wykonania"
|
||||||
|
|
||||||
#: src/components/routes/settings/config-yaml.tsx
|
#: src/components/routes/settings/config-yaml.tsx
|
||||||
msgid "Existing systems not defined in <0>config.yml</0> will be deleted. Please make regular backups."
|
msgid "Existing systems not defined in <0>config.yml</0> will be deleted. Please make regular backups."
|
||||||
msgstr "Istniejące systemy, które nie są zdefiniowane w <0>config.yml</0>, zostaną usunięte. Proszę regularnie tworzyć kopie zapasowe."
|
msgstr "Istniejące systemy, które nie są zdefiniowane w <0>config.yml</0>, zostaną usunięte. Proszę regularnie tworzyć kopie zapasowe."
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Exited active"
|
||||||
|
msgstr "Zakończono aktywnie"
|
||||||
|
|
||||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||||
msgid "Export"
|
msgid "Export"
|
||||||
msgstr "Eksport"
|
msgstr "Eksport"
|
||||||
@@ -528,12 +674,21 @@ msgstr "Eksportuj aktualną konfigurację systemów."
|
|||||||
msgid "Fahrenheit (°F)"
|
msgid "Fahrenheit (°F)"
|
||||||
msgstr "Fahrenheit (°F)"
|
msgstr "Fahrenheit (°F)"
|
||||||
|
|
||||||
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
|
msgid "Failed"
|
||||||
|
msgstr "Nieudane"
|
||||||
|
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
msgid "Failed Attributes:"
|
||||||
|
msgstr "Nieudane atrybuty:"
|
||||||
|
|
||||||
#: src/lib/api.ts
|
#: src/lib/api.ts
|
||||||
msgid "Failed to authenticate"
|
msgid "Failed to authenticate"
|
||||||
msgstr "Błąd autoryzacji"
|
msgstr "Błąd autoryzacji"
|
||||||
|
|
||||||
#: src/components/routes/settings/layout.tsx
|
#: src/components/routes/settings/layout.tsx
|
||||||
#: src/components/routes/settings/notifications.tsx
|
#: src/components/routes/settings/notifications.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
msgid "Failed to save settings"
|
msgid "Failed to save settings"
|
||||||
msgstr "Nie udało się zapisać ustawień"
|
msgstr "Nie udało się zapisać ustawień"
|
||||||
|
|
||||||
@@ -545,8 +700,16 @@ msgstr "Nie udało się wysłać testowego powiadomienia"
|
|||||||
msgid "Failed to update alert"
|
msgid "Failed to update alert"
|
||||||
msgstr "Nie udało się zaktualizować powiadomienia"
|
msgstr "Nie udało się zaktualizować powiadomienia"
|
||||||
|
|
||||||
|
#. placeholder {0}: statusTotals[ServiceStatus.Failed]
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Failed: {0}"
|
||||||
|
msgstr "Nieudane: {0}"
|
||||||
|
|
||||||
|
#: src/components/containers-table/containers-table.tsx
|
||||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
#: src/components/systems-table/systems-table.tsx
|
#: src/components/systems-table/systems-table.tsx
|
||||||
msgid "Filter..."
|
msgid "Filter..."
|
||||||
msgstr "Filtruj..."
|
msgstr "Filtruj..."
|
||||||
@@ -555,6 +718,10 @@ msgstr "Filtruj..."
|
|||||||
msgid "Fingerprint"
|
msgid "Fingerprint"
|
||||||
msgstr "Odcisk palca"
|
msgstr "Odcisk palca"
|
||||||
|
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
msgid "Firmware"
|
||||||
|
msgstr "Oprogramowanie sprzętowe"
|
||||||
|
|
||||||
#: src/components/alerts/alerts-sheet.tsx
|
#: src/components/alerts/alerts-sheet.tsx
|
||||||
msgid "For <0>{min}</0> {min, plural, one {minute} other {minutes}}"
|
msgid "For <0>{min}</0> {min, plural, one {minute} other {minutes}}"
|
||||||
msgstr "Na <0>{min}</0> {min, plural, one {minutę} other {minut}}"
|
msgstr "Na <0>{min}</0> {min, plural, one {minutę} other {minut}}"
|
||||||
@@ -580,6 +747,10 @@ msgstr "Pełna"
|
|||||||
msgid "General"
|
msgid "General"
|
||||||
msgstr "Ogólne"
|
msgstr "Ogólne"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "Global"
|
||||||
|
msgstr "Globalny"
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
msgid "GPU Engines"
|
msgid "GPU Engines"
|
||||||
msgstr "Silniki GPU"
|
msgstr "Silniki GPU"
|
||||||
@@ -588,10 +759,18 @@ msgstr "Silniki GPU"
|
|||||||
msgid "GPU Power Draw"
|
msgid "GPU Power Draw"
|
||||||
msgstr "Moc GPU"
|
msgstr "Moc GPU"
|
||||||
|
|
||||||
|
#: src/lib/alerts.ts
|
||||||
|
msgid "GPU Usage"
|
||||||
|
msgstr "Użycie GPU"
|
||||||
|
|
||||||
#: src/components/systems-table/systems-table.tsx
|
#: src/components/systems-table/systems-table.tsx
|
||||||
msgid "Grid"
|
msgid "Grid"
|
||||||
msgstr "Siatka"
|
msgstr "Siatka"
|
||||||
|
|
||||||
|
#: src/components/containers-table/containers-table-columns.tsx
|
||||||
|
msgid "Health"
|
||||||
|
msgstr "Zdrowie"
|
||||||
|
|
||||||
#: src/components/add-system.tsx
|
#: src/components/add-system.tsx
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
msgctxt "Button to copy install command"
|
msgctxt "Button to copy install command"
|
||||||
@@ -611,6 +790,15 @@ msgstr "Bezczynna"
|
|||||||
msgid "If you've lost the password to your admin account, you may reset it using the following command."
|
msgid "If you've lost the password to your admin account, you may reset it using the following command."
|
||||||
msgstr "Jeśli utraciłeś hasło do swojego konta administratora, możesz je zresetować, używając następującego polecenia."
|
msgstr "Jeśli utraciłeś hasło do swojego konta administratora, możesz je zresetować, używając następującego polecenia."
|
||||||
|
|
||||||
|
#: src/components/containers-table/containers-table-columns.tsx
|
||||||
|
msgctxt "Docker image"
|
||||||
|
msgid "Image"
|
||||||
|
msgstr "Obraz"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "Inactive"
|
||||||
|
msgstr "Nieaktywny"
|
||||||
|
|
||||||
#: src/components/login/auth-form.tsx
|
#: src/components/login/auth-form.tsx
|
||||||
msgid "Invalid email address."
|
msgid "Invalid email address."
|
||||||
msgstr "Nieprawidłowy adres e-mail."
|
msgstr "Nieprawidłowy adres e-mail."
|
||||||
@@ -628,6 +816,19 @@ msgstr "Język"
|
|||||||
msgid "Layout"
|
msgid "Layout"
|
||||||
msgstr "Układ"
|
msgstr "Układ"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/general.tsx
|
||||||
|
msgid "Layout width"
|
||||||
|
msgstr "Szerokość układu"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Lifecycle"
|
||||||
|
msgstr "Cykl życia"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "limit"
|
||||||
|
msgstr "limit"
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
msgid "Load Average"
|
msgid "Load Average"
|
||||||
msgstr "Średnie obciążenie"
|
msgstr "Średnie obciążenie"
|
||||||
@@ -649,6 +850,14 @@ msgstr "Średnie obciążenie 5 m"
|
|||||||
msgid "Load Avg"
|
msgid "Load Avg"
|
||||||
msgstr "Śr. obciążenie"
|
msgstr "Śr. obciążenie"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Load state"
|
||||||
|
msgstr "Stan obciążenia"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Loading..."
|
||||||
|
msgstr "Ładowanie..."
|
||||||
|
|
||||||
#: src/components/navbar.tsx
|
#: src/components/navbar.tsx
|
||||||
msgid "Log Out"
|
msgid "Log Out"
|
||||||
msgstr "Wyloguj"
|
msgstr "Wyloguj"
|
||||||
@@ -663,6 +872,7 @@ msgid "Login attempt failed"
|
|||||||
msgstr "Próba logowania nie powiodła się"
|
msgstr "Próba logowania nie powiodła się"
|
||||||
|
|
||||||
#: src/components/command-palette.tsx
|
#: src/components/command-palette.tsx
|
||||||
|
#: src/components/containers-table/containers-table.tsx
|
||||||
#: src/components/navbar.tsx
|
#: src/components/navbar.tsx
|
||||||
msgid "Logs"
|
msgid "Logs"
|
||||||
msgstr "Logi"
|
msgstr "Logi"
|
||||||
@@ -671,6 +881,10 @@ msgstr "Logi"
|
|||||||
msgid "Looking instead for where to create alerts? Click the bell <0/> icons in the systems table."
|
msgid "Looking instead for where to create alerts? Click the bell <0/> icons in the systems table."
|
||||||
msgstr "Szukasz, gdzie utworzyć powiadomienia? Kliknij ikonę dzwonka <0/> w tabeli systemów."
|
msgstr "Szukasz, gdzie utworzyć powiadomienia? Kliknij ikonę dzwonka <0/> w tabeli systemów."
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Main PID"
|
||||||
|
msgstr "Główny PID"
|
||||||
|
|
||||||
#: src/components/routes/settings/layout.tsx
|
#: src/components/routes/settings/layout.tsx
|
||||||
msgid "Manage display and notification preferences."
|
msgid "Manage display and notification preferences."
|
||||||
msgstr "Zarządzaj preferencjami wyświetlania i powiadomień."
|
msgstr "Zarządzaj preferencjami wyświetlania i powiadomień."
|
||||||
@@ -685,10 +899,22 @@ msgstr "Instrukcja ręcznej konfiguracji"
|
|||||||
msgid "Max 1 min"
|
msgid "Max 1 min"
|
||||||
msgstr "Maks. 1 min"
|
msgstr "Maks. 1 min"
|
||||||
|
|
||||||
|
#: src/components/containers-table/containers-table-columns.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table-columns.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
msgid "Memory"
|
msgid "Memory"
|
||||||
msgstr "Pamięć"
|
msgstr "Pamięć"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Memory limit"
|
||||||
|
msgstr "Limit pamięci"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table-columns.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Memory Peak"
|
||||||
|
msgstr "Szczyt pamięci"
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
#: src/lib/alerts.ts
|
#: src/lib/alerts.ts
|
||||||
msgid "Memory Usage"
|
msgid "Memory Usage"
|
||||||
@@ -698,11 +924,19 @@ msgstr "Wykorzystanie pamięci"
|
|||||||
msgid "Memory usage of docker containers"
|
msgid "Memory usage of docker containers"
|
||||||
msgstr "Użycie pamięci przez kontenery Docker."
|
msgstr "Użycie pamięci przez kontenery Docker."
|
||||||
|
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
msgid "Model"
|
||||||
|
msgstr "Model"
|
||||||
|
|
||||||
#: src/components/add-system.tsx
|
#: src/components/add-system.tsx
|
||||||
#: src/components/alerts-history-columns.tsx
|
#: src/components/alerts-history-columns.tsx
|
||||||
|
#: src/components/containers-table/containers-table-columns.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table-columns.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
msgid "Name"
|
msgid "Name"
|
||||||
msgstr "Nazwa"
|
msgstr "Nazwa"
|
||||||
|
|
||||||
|
#: src/components/containers-table/containers-table-columns.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
msgid "Net"
|
msgid "Net"
|
||||||
msgstr "Sieć"
|
msgstr "Sieć"
|
||||||
@@ -714,6 +948,7 @@ msgstr "Ruch sieciowy kontenerów Docker."
|
|||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
#: src/components/routes/system/network-sheet.tsx
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
#: src/components/routes/system/network-sheet.tsx
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
msgid "Network traffic of public interfaces"
|
msgid "Network traffic of public interfaces"
|
||||||
msgstr "Ruch sieciowy interfejsów publicznych"
|
msgstr "Ruch sieciowy interfejsów publicznych"
|
||||||
|
|
||||||
@@ -722,14 +957,30 @@ msgstr "Ruch sieciowy interfejsów publicznych"
|
|||||||
msgid "Network unit"
|
msgid "Network unit"
|
||||||
msgstr "Jednostka sieciowa"
|
msgstr "Jednostka sieciowa"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "No"
|
||||||
|
msgstr "Nie"
|
||||||
|
|
||||||
#: src/components/command-palette.tsx
|
#: src/components/command-palette.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
msgid "No results found."
|
msgid "No results found."
|
||||||
msgstr "Brak wyników."
|
msgstr "Brak wyników."
|
||||||
|
|
||||||
|
#: src/components/containers-table/containers-table.tsx
|
||||||
|
#: src/components/containers-table/containers-table.tsx
|
||||||
|
#: src/components/containers-table/containers-table.tsx
|
||||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
msgid "No results."
|
msgid "No results."
|
||||||
msgstr "Brak wyników."
|
msgstr "Brak wyników."
|
||||||
|
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
msgid "No S.M.A.R.T. attributes available for this device."
|
||||||
|
msgstr "Brak dostępnych atrybutów S.M.A.R.T. dla tego urządzenia."
|
||||||
|
|
||||||
#: src/components/systems-table/systems-table.tsx
|
#: src/components/systems-table/systems-table.tsx
|
||||||
#: src/components/systems-table/systems-table.tsx
|
#: src/components/systems-table/systems-table.tsx
|
||||||
msgid "No systems found."
|
msgid "No systems found."
|
||||||
@@ -749,12 +1000,19 @@ msgstr "Wsparcie OAuth 2 / OIDC"
|
|||||||
msgid "On each restart, systems in the database will be updated to match the systems defined in the file."
|
msgid "On each restart, systems in the database will be updated to match the systems defined in the file."
|
||||||
msgstr "Przy każdym ponownym uruchomieniu systemy w bazie danych będą aktualizowane, aby odpowiadały systemom zdefiniowanym w pliku."
|
msgstr "Przy każdym ponownym uruchomieniu systemy w bazie danych będą aktualizowane, aby odpowiadały systemom zdefiniowanym w pliku."
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "One-time"
|
||||||
|
msgstr "Jednorazowy"
|
||||||
|
|
||||||
#: src/components/login/auth-form.tsx
|
#: src/components/login/auth-form.tsx
|
||||||
msgid "One-time password"
|
msgid "One-time password"
|
||||||
msgstr "Hasło jednorazowe"
|
msgstr "Hasło jednorazowe"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
msgid "Open menu"
|
msgid "Open menu"
|
||||||
msgstr "Otwórz menu"
|
msgstr "Otwórz menu"
|
||||||
@@ -763,10 +1021,16 @@ msgstr "Otwórz menu"
|
|||||||
msgid "Or continue with"
|
msgid "Or continue with"
|
||||||
msgstr "Lub kontynuuj z"
|
msgstr "Lub kontynuuj z"
|
||||||
|
|
||||||
|
#: src/components/routes/system/cpu-sheet.tsx
|
||||||
|
msgid "Other"
|
||||||
|
msgstr "Inne"
|
||||||
|
|
||||||
#: src/components/alerts/alerts-sheet.tsx
|
#: src/components/alerts/alerts-sheet.tsx
|
||||||
msgid "Overwrite existing alerts"
|
msgid "Overwrite existing alerts"
|
||||||
msgstr "Nadpisz istniejące alerty"
|
msgstr "Nadpisz istniejące alerty"
|
||||||
|
|
||||||
|
#: src/components/command-palette.tsx
|
||||||
|
#: src/components/command-palette.tsx
|
||||||
#: src/components/command-palette.tsx
|
#: src/components/command-palette.tsx
|
||||||
msgid "Page"
|
msgid "Page"
|
||||||
msgstr "Strona"
|
msgstr "Strona"
|
||||||
@@ -798,6 +1062,10 @@ msgstr "Hasło musi być mniejsze niż 72 bajty."
|
|||||||
msgid "Password reset request received"
|
msgid "Password reset request received"
|
||||||
msgstr "Otrzymane żądanie resetowania hasła"
|
msgstr "Otrzymane żądanie resetowania hasła"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "Past"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
msgid "Pause"
|
msgid "Pause"
|
||||||
msgstr "Pauza"
|
msgstr "Pauza"
|
||||||
@@ -810,6 +1078,15 @@ msgstr "Wstrzymane"
|
|||||||
msgid "Paused ({pausedSystemsLength})"
|
msgid "Paused ({pausedSystemsLength})"
|
||||||
msgstr "Wstrzymane ({pausedSystemsLength})"
|
msgstr "Wstrzymane ({pausedSystemsLength})"
|
||||||
|
|
||||||
|
#: src/components/routes/system/cpu-sheet.tsx
|
||||||
|
#: src/components/routes/system/cpu-sheet.tsx
|
||||||
|
msgid "Per-core average utilization"
|
||||||
|
msgstr "Średnie wykorzystanie na rdzeń"
|
||||||
|
|
||||||
|
#: src/components/routes/system/cpu-sheet.tsx
|
||||||
|
msgid "Percentage of time spent in each state"
|
||||||
|
msgstr "Procent czasu spędzonego w każdym stanie"
|
||||||
|
|
||||||
#: src/components/routes/settings/notifications.tsx
|
#: src/components/routes/settings/notifications.tsx
|
||||||
msgid "Please <0>configure an SMTP server</0> to ensure alerts are delivered."
|
msgid "Please <0>configure an SMTP server</0> to ensure alerts are delivered."
|
||||||
msgstr "Proszę <0>skonfigurować serwer SMTP</0>, aby zapewnić dostarczanie powiadomień."
|
msgstr "Proszę <0>skonfigurować serwer SMTP</0>, aby zapewnić dostarczanie powiadomień."
|
||||||
@@ -847,6 +1124,11 @@ msgstr "Zaloguj się na swoje konto"
|
|||||||
msgid "Port"
|
msgid "Port"
|
||||||
msgstr "Port"
|
msgstr "Port"
|
||||||
|
|
||||||
|
#. Power On Time
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
msgid "Power On"
|
||||||
|
msgstr "Włączony"
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
msgid "Precise utilization at the recorded time"
|
msgid "Precise utilization at the recorded time"
|
||||||
@@ -856,11 +1138,19 @@ msgstr "Dokładne wykorzystanie w zarejestrowanym czasie"
|
|||||||
msgid "Preferred Language"
|
msgid "Preferred Language"
|
||||||
msgstr "Preferowany język"
|
msgstr "Preferowany język"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Process started"
|
||||||
|
msgstr "Proces uruchomiony"
|
||||||
|
|
||||||
#. Use 'Key' if your language requires many more characters
|
#. Use 'Key' if your language requires many more characters
|
||||||
#: src/components/add-system.tsx
|
#: src/components/add-system.tsx
|
||||||
msgid "Public Key"
|
msgid "Public Key"
|
||||||
msgstr "Klucz publiczny"
|
msgstr "Klucz publiczny"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "Quiet Hours"
|
||||||
|
msgstr "Godziny ciszy"
|
||||||
|
|
||||||
#. Disk read
|
#. Disk read
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
@@ -871,6 +1161,16 @@ msgstr "Odczyt"
|
|||||||
msgid "Received"
|
msgid "Received"
|
||||||
msgstr "Otrzymane"
|
msgstr "Otrzymane"
|
||||||
|
|
||||||
|
#: src/components/containers-table/containers-table.tsx
|
||||||
|
#: src/components/containers-table/containers-table.tsx
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
msgid "Refresh"
|
||||||
|
msgstr "Odśwież"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Relationships"
|
||||||
|
msgstr "Relacje"
|
||||||
|
|
||||||
#: src/components/login/login.tsx
|
#: src/components/login/login.tsx
|
||||||
msgid "Request a one-time password"
|
msgid "Request a one-time password"
|
||||||
msgstr "Zażądaj jednorazowego hasła"
|
msgstr "Zażądaj jednorazowego hasła"
|
||||||
@@ -879,6 +1179,14 @@ msgstr "Zażądaj jednorazowego hasła"
|
|||||||
msgid "Request OTP"
|
msgid "Request OTP"
|
||||||
msgstr "Zażądaj OTP"
|
msgstr "Zażądaj OTP"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Required by"
|
||||||
|
msgstr "Wymagane przez"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Requires"
|
||||||
|
msgstr "Wymaga"
|
||||||
|
|
||||||
#: src/components/login/forgot-pass-form.tsx
|
#: src/components/login/forgot-pass-form.tsx
|
||||||
msgid "Reset Password"
|
msgid "Reset Password"
|
||||||
msgstr "Resetuj hasło"
|
msgstr "Resetuj hasło"
|
||||||
@@ -889,10 +1197,19 @@ msgstr "Resetuj hasło"
|
|||||||
msgid "Resolved"
|
msgid "Resolved"
|
||||||
msgstr "Rozwiązany"
|
msgstr "Rozwiązany"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Restarts"
|
||||||
|
msgstr "Ponowne uruchomienia"
|
||||||
|
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
msgid "Resume"
|
msgid "Resume"
|
||||||
msgstr "Wznów"
|
msgstr "Wznów"
|
||||||
|
|
||||||
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
|
msgctxt "Root disk label"
|
||||||
|
msgid "Root"
|
||||||
|
msgstr "Root"
|
||||||
|
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
msgid "Rotate token"
|
msgid "Rotate token"
|
||||||
msgstr "Zmień token"
|
msgstr "Zmień token"
|
||||||
@@ -901,6 +1218,18 @@ msgstr "Zmień token"
|
|||||||
msgid "Rows per page"
|
msgid "Rows per page"
|
||||||
msgstr "Wiersze na stronę"
|
msgstr "Wiersze na stronę"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Runtime Metrics"
|
||||||
|
msgstr "Metryki czasu wykonania"
|
||||||
|
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
msgid "S.M.A.R.T. Details"
|
||||||
|
msgstr "Szczegóły S.M.A.R.T."
|
||||||
|
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
msgid "S.M.A.R.T. Self-Test"
|
||||||
|
msgstr "Samodiagnostyka S.M.A.R.T."
|
||||||
|
|
||||||
#: src/components/routes/settings/notifications.tsx
|
#: src/components/routes/settings/notifications.tsx
|
||||||
msgid "Save address using enter key or comma. Leave blank to disable email notifications."
|
msgid "Save address using enter key or comma. Leave blank to disable email notifications."
|
||||||
msgstr "Zapisz adres, używając klawisza enter lub przecinka. Pozostaw puste, aby wyłączyć powiadomienia e-mail."
|
msgstr "Zapisz adres, używając klawisza enter lub przecinka. Pozostaw puste, aby wyłączyć powiadomienia e-mail."
|
||||||
@@ -914,6 +1243,18 @@ msgstr "Zapisz ustawienia"
|
|||||||
msgid "Save system"
|
msgid "Save system"
|
||||||
msgstr "Zapisz system"
|
msgstr "Zapisz system"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "Schedule"
|
||||||
|
msgstr "Harmonogram"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "Schedule quiet hours where notifications will not be sent, such as during maintenance periods."
|
||||||
|
msgstr "Zaplanuj godziny ciszy, w których powiadomienia nie będą wysyłane, na przykład podczas okresów konserwacji."
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "Schedule quiet hours where notifications will not be sent."
|
||||||
|
msgstr "Zaplanuj godziny ciszy, w których powiadomienia nie będą wysyłane."
|
||||||
|
|
||||||
#: src/components/navbar.tsx
|
#: src/components/navbar.tsx
|
||||||
msgid "Search"
|
msgid "Search"
|
||||||
msgstr "Szukaj"
|
msgstr "Szukaj"
|
||||||
@@ -926,10 +1267,26 @@ msgstr "Szukaj systemów lub ustawień..."
|
|||||||
msgid "See <0>notification settings</0> to configure how you receive alerts."
|
msgid "See <0>notification settings</0> to configure how you receive alerts."
|
||||||
msgstr "Zobacz <0>ustawienia powiadomień</0>, aby skonfigurować sposób, w jaki otrzymujesz powiadomienia."
|
msgstr "Zobacz <0>ustawienia powiadomień</0>, aby skonfigurować sposób, w jaki otrzymujesz powiadomienia."
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "Select {foo}"
|
||||||
|
msgstr "Wybierz {foo}"
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
msgid "Sent"
|
msgid "Sent"
|
||||||
msgstr "Wysłane"
|
msgstr "Wysłane"
|
||||||
|
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
msgid "Serial Number"
|
||||||
|
msgstr "Numer seryjny"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Service Details"
|
||||||
|
msgstr "Szczegóły usługi"
|
||||||
|
|
||||||
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
|
msgid "Services"
|
||||||
|
msgstr "Usługi"
|
||||||
|
|
||||||
#: src/components/routes/settings/general.tsx
|
#: src/components/routes/settings/general.tsx
|
||||||
msgid "Set percentage thresholds for meter colors."
|
msgid "Set percentage thresholds for meter colors."
|
||||||
msgstr "Ustaw progi procentowe dla kolorów mierników."
|
msgstr "Ustaw progi procentowe dla kolorów mierników."
|
||||||
@@ -957,16 +1314,30 @@ msgstr "Ustawienia SMTP"
|
|||||||
msgid "Sort By"
|
msgid "Sort By"
|
||||||
msgstr "Sortuj według"
|
msgstr "Sortuj według"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "Start Time"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#. Context: alert state (active or resolved)
|
#. Context: alert state (active or resolved)
|
||||||
#: src/components/alerts-history-columns.tsx
|
#: src/components/alerts-history-columns.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table-columns.tsx
|
||||||
msgid "State"
|
msgid "State"
|
||||||
msgstr "Stan"
|
msgstr "Stan"
|
||||||
|
|
||||||
|
#: src/components/containers-table/containers-table-columns.tsx
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
#: src/components/systems-table/systems-table.tsx
|
#: src/components/systems-table/systems-table.tsx
|
||||||
#: src/lib/alerts.ts
|
#: src/lib/alerts.ts
|
||||||
msgid "Status"
|
msgid "Status"
|
||||||
msgstr "Status"
|
msgstr "Status"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table-columns.tsx
|
||||||
|
msgid "Sub State"
|
||||||
|
msgstr "Stan podrzędny"
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
msgid "Swap space used by the system"
|
msgid "Swap space used by the system"
|
||||||
msgstr "Pamięć wymiany używana przez system"
|
msgstr "Pamięć wymiany używana przez system"
|
||||||
@@ -975,8 +1346,15 @@ msgstr "Pamięć wymiany używana przez system"
|
|||||||
msgid "Swap Usage"
|
msgid "Swap Usage"
|
||||||
msgstr "Użycie pamięci wymiany"
|
msgstr "Użycie pamięci wymiany"
|
||||||
|
|
||||||
|
#: src/components/add-system.tsx
|
||||||
#: src/components/alerts-history-columns.tsx
|
#: src/components/alerts-history-columns.tsx
|
||||||
|
#: src/components/containers-table/containers-table-columns.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
#: src/lib/alerts.ts
|
#: src/lib/alerts.ts
|
||||||
msgid "System"
|
msgid "System"
|
||||||
@@ -986,6 +1364,10 @@ msgstr "System"
|
|||||||
msgid "System load averages over time"
|
msgid "System load averages over time"
|
||||||
msgstr "Średnie obciążenie systemu w czasie"
|
msgstr "Średnie obciążenie systemu w czasie"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Systemd Services"
|
||||||
|
msgstr "Usługi systemd"
|
||||||
|
|
||||||
#: src/components/navbar.tsx
|
#: src/components/navbar.tsx
|
||||||
msgid "Systems"
|
msgid "Systems"
|
||||||
msgstr "Systemy"
|
msgstr "Systemy"
|
||||||
@@ -998,7 +1380,12 @@ msgstr "Systemy mogą być zarządzane w pliku <0>config.yml</0> znajdującym si
|
|||||||
msgid "Table"
|
msgid "Table"
|
||||||
msgstr "Tabela"
|
msgstr "Tabela"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Tasks"
|
||||||
|
msgstr "Zadania"
|
||||||
|
|
||||||
#. Temperature label in systems table
|
#. Temperature label in systems table
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
msgid "Temp"
|
msgid "Temp"
|
||||||
msgstr "Temperatura"
|
msgstr "Temperatura"
|
||||||
@@ -1080,6 +1467,11 @@ msgstr "Tokeny umożliwiają agentom łączenie się i rejestrację. Odciski pal
|
|||||||
msgid "Tokens and fingerprints are used to authenticate WebSocket connections to the hub."
|
msgid "Tokens and fingerprints are used to authenticate WebSocket connections to the hub."
|
||||||
msgstr "Tokeny i odciski palców (fingerprinty) służą do uwierzytelniania połączeń WebSocket z hubem."
|
msgstr "Tokeny i odciski palców (fingerprinty) służą do uwierzytelniania połączeń WebSocket z hubem."
|
||||||
|
|
||||||
|
#: src/components/ui/chart.tsx
|
||||||
|
#: src/components/ui/chart.tsx
|
||||||
|
msgid "Total"
|
||||||
|
msgstr "Łącznie"
|
||||||
|
|
||||||
#: src/components/routes/system/network-sheet.tsx
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
msgid "Total data received for each interface"
|
msgid "Total data received for each interface"
|
||||||
msgstr "Całkowita ilość danych odebranych dla każdego interfejsu"
|
msgstr "Całkowita ilość danych odebranych dla każdego interfejsu"
|
||||||
@@ -1088,6 +1480,19 @@ msgstr "Całkowita ilość danych odebranych dla każdego interfejsu"
|
|||||||
msgid "Total data sent for each interface"
|
msgid "Total data sent for each interface"
|
||||||
msgstr "Całkowita ilość danych wysłanych dla każdego interfejsu"
|
msgstr "Całkowita ilość danych wysłanych dla każdego interfejsu"
|
||||||
|
|
||||||
|
#. placeholder {0}: data.length
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Total: {0}"
|
||||||
|
msgstr "Łącznie: {0}"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Triggered by"
|
||||||
|
msgstr "Wyzwalane przez"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Triggers"
|
||||||
|
msgstr "Wyzwalacze"
|
||||||
|
|
||||||
#: src/lib/alerts.ts
|
#: src/lib/alerts.ts
|
||||||
msgid "Triggers when 1 minute load average exceeds a threshold"
|
msgid "Triggers when 1 minute load average exceeds a threshold"
|
||||||
msgstr "Uruchamia się, gdy 1-minutowe średnie obciążenie systemu przekroczy ustawiony próg"
|
msgstr "Uruchamia się, gdy 1-minutowe średnie obciążenie systemu przekroczy ustawiony próg"
|
||||||
@@ -1112,6 +1517,10 @@ msgstr "Wyzwalane, gdy łączna wartość w górę/w dół przekroczy próg"
|
|||||||
msgid "Triggers when CPU usage exceeds a threshold"
|
msgid "Triggers when CPU usage exceeds a threshold"
|
||||||
msgstr "Wyzwalane, gdy użycie procesora przekracza próg"
|
msgstr "Wyzwalane, gdy użycie procesora przekracza próg"
|
||||||
|
|
||||||
|
#: src/lib/alerts.ts
|
||||||
|
msgid "Triggers when GPU usage exceeds a threshold"
|
||||||
|
msgstr "Wyzwalane, gdy użycie GPU przekroczy próg"
|
||||||
|
|
||||||
#: src/lib/alerts.ts
|
#: src/lib/alerts.ts
|
||||||
msgid "Triggers when memory usage exceeds a threshold"
|
msgid "Triggers when memory usage exceeds a threshold"
|
||||||
msgstr "Wyzwalane, wykorzystanie pamięci przekroczy ustalony próg."
|
msgstr "Wyzwalane, wykorzystanie pamięci przekroczy ustalony próg."
|
||||||
@@ -1124,6 +1533,16 @@ msgstr "Wyzwalane, gdy status przełącza się między stanem aktywnym a nieakty
|
|||||||
msgid "Triggers when usage of any disk exceeds a threshold"
|
msgid "Triggers when usage of any disk exceeds a threshold"
|
||||||
msgstr "Wyzwalane, gdy wykorzystanie któregokolwiek dysku przekroczy ustalony próg"
|
msgstr "Wyzwalane, gdy wykorzystanie któregokolwiek dysku przekroczy ustalony próg"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
msgid "Type"
|
||||||
|
msgstr "Typ"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Unit file"
|
||||||
|
msgstr "Plik jednostki"
|
||||||
|
|
||||||
#. Temperature / network units
|
#. Temperature / network units
|
||||||
#: src/components/routes/settings/general.tsx
|
#: src/components/routes/settings/general.tsx
|
||||||
msgid "Unit preferences"
|
msgid "Unit preferences"
|
||||||
@@ -1139,6 +1558,11 @@ msgstr "Uniwersalny token"
|
|||||||
msgid "Unknown"
|
msgid "Unknown"
|
||||||
msgstr "Nieznana"
|
msgstr "Nieznana"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Unlimited"
|
||||||
|
msgstr "Bez limitu"
|
||||||
|
|
||||||
#. Context: System is up
|
#. Context: System is up
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
@@ -1149,6 +1573,20 @@ msgstr "Działa"
|
|||||||
msgid "Up ({upSystemsLength})"
|
msgid "Up ({upSystemsLength})"
|
||||||
msgstr "Działa ({upSystemsLength})"
|
msgstr "Działa ({upSystemsLength})"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "Update"
|
||||||
|
msgstr "Aktualizuj"
|
||||||
|
|
||||||
|
#: src/components/containers-table/containers-table-columns.tsx
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table-columns.tsx
|
||||||
|
msgid "Updated"
|
||||||
|
msgstr "Zaktualizowano"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Updated every 10 minutes."
|
||||||
|
msgstr "Aktualizowane co 10 minut."
|
||||||
|
|
||||||
#: src/components/routes/system/network-sheet.tsx
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
msgid "Upload"
|
msgid "Upload"
|
||||||
msgstr "Wysyłanie"
|
msgstr "Wysyłanie"
|
||||||
@@ -1161,6 +1599,7 @@ msgstr "Czas pracy"
|
|||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
|
#: src/components/routes/system/cpu-sheet.tsx
|
||||||
msgid "Usage"
|
msgid "Usage"
|
||||||
msgstr "Wykorzystanie"
|
msgstr "Wykorzystanie"
|
||||||
|
|
||||||
@@ -1186,6 +1625,7 @@ msgstr "Wartość"
|
|||||||
msgid "View"
|
msgid "View"
|
||||||
msgstr "Widok"
|
msgstr "Widok"
|
||||||
|
|
||||||
|
#: src/components/routes/system/cpu-sheet.tsx
|
||||||
#: src/components/routes/system/network-sheet.tsx
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
msgid "View more"
|
msgid "View more"
|
||||||
msgstr "Zobacz więcej"
|
msgstr "Zobacz więcej"
|
||||||
@@ -1206,6 +1646,10 @@ msgstr "Oczekiwanie na wystarczającą liczbę rekordów do wyświetlenia"
|
|||||||
msgid "Want to help improve our translations? Check <0>Crowdin</0> for details."
|
msgid "Want to help improve our translations? Check <0>Crowdin</0> for details."
|
||||||
msgstr "Chcesz pomóc nam uczynić nasze tłumaczenia jeszcze lepszymi? Sprawdź <0>Crowdin</0> po więcej szczegółów."
|
msgstr "Chcesz pomóc nam uczynić nasze tłumaczenia jeszcze lepszymi? Sprawdź <0>Crowdin</0> po więcej szczegółów."
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Wants"
|
||||||
|
msgstr "Wymaga"
|
||||||
|
|
||||||
#: src/components/routes/settings/general.tsx
|
#: src/components/routes/settings/general.tsx
|
||||||
msgid "Warning (%)"
|
msgid "Warning (%)"
|
||||||
msgstr "Ostrzeżenie (%)"
|
msgstr "Ostrzeżenie (%)"
|
||||||
@@ -1242,6 +1686,13 @@ msgstr "Konf. YAML"
|
|||||||
msgid "YAML Configuration"
|
msgid "YAML Configuration"
|
||||||
msgstr "Konfiguracja YAML"
|
msgstr "Konfiguracja YAML"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Yes"
|
||||||
|
msgstr "Tak"
|
||||||
|
|
||||||
#: src/components/routes/settings/layout.tsx
|
#: src/components/routes/settings/layout.tsx
|
||||||
msgid "Your user settings have been updated."
|
msgid "Your user settings have been updated."
|
||||||
msgstr "Twoje ustawienia użytkownika zostały zaktualizowane."
|
msgstr "Twoje ustawienia użytkownika zostały zaktualizowane."
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
1698
internal/site/src/locales/ro/ro.po
Normal file
1698
internal/site/src/locales/ro/ro.po
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
1698
internal/site/src/locales/sr/sr.po
Normal file
1698
internal/site/src/locales/sr/sr.po
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -8,30 +8,15 @@ msgstr ""
|
|||||||
"Language: uk\n"
|
"Language: uk\n"
|
||||||
"Project-Id-Version: beszel\n"
|
"Project-Id-Version: beszel\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"PO-Revision-Date: 2025-08-30 16:20\n"
|
"PO-Revision-Date: 2025-12-02 23:18\n"
|
||||||
"Last-Translator: \n"
|
"Last-Translator: \n"
|
||||||
"Language-Team: Ukrainian\n"
|
"Language-Team: Ukrainian\n"
|
||||||
"Plural-Forms: nplurals=4; plural=((n%10==1 && n%100!=11) ? 0 : ((n%10 >= 2 && n%10 <=4 && (n%100 < 12 || n%100 > 14)) ? 1 : ((n%10 == 0 || (n%10 >= 5 && n%10 <=9)) || (n%100 >= 11 && n%100 <= 14)) ? 2 : 3));\n"
|
"Plural-Forms: nplurals=4; plural=((n%10==1 && n%100!=11) ? 0 : ((n%10 >= 2 && n%10 <=4 && (n%100 < 12 || n%100 > 14)) ? 1 : ((n%10 == 0 || (n%10 >= 5 && n%10 <=9)) || (n%100 >= 11 && n%100 <= 14)) ? 2 : 3));\n"
|
||||||
"X-Crowdin-Project: beszel\n"
|
"X-Crowdin-Project: beszel\n"
|
||||||
"X-Crowdin-Project-ID: 733311\n"
|
"X-Crowdin-Project-ID: 733311\n"
|
||||||
"X-Crowdin-Language: uk\n"
|
"X-Crowdin-Language: uk\n"
|
||||||
"X-Crowdin-File: /main/beszel/site/src/locales/en/en.po\n"
|
"X-Crowdin-File: /main/internal/site/src/locales/en/en.po\n"
|
||||||
"X-Crowdin-File-ID: 16\n"
|
"X-Crowdin-File-ID: 32\n"
|
||||||
|
|
||||||
#. placeholder {0}: Math.trunc(system.info?.u / 86400)
|
|
||||||
#: src/components/routes/system.tsx
|
|
||||||
msgid "{0, plural, one {# day} other {# days}}"
|
|
||||||
msgstr "{0, plural, one {# день} few {# дні} many {# днів} other {# дня}}"
|
|
||||||
|
|
||||||
#. placeholder {0}: Math.trunc(system.info.u / 3600)
|
|
||||||
#: src/components/routes/system.tsx
|
|
||||||
msgid "{0, plural, one {# hour} other {# hours}}"
|
|
||||||
msgstr "{0, plural, one {# година} few {# години} many {# годин} other {# години}}"
|
|
||||||
|
|
||||||
#. placeholder {0}: Math.trunc(system.info.u / 60)
|
|
||||||
#: src/components/routes/system.tsx
|
|
||||||
msgid "{0, plural, one {# minute} few {# minutes} many {# minutes} other {# minutes}}"
|
|
||||||
msgstr "{0, plural, one {# хвилина} few {# хвилини} many {# хвилин} other {# хвилини}}"
|
|
||||||
|
|
||||||
#. placeholder {0}: table.getFilteredSelectedRowModel().rows.length
|
#. placeholder {0}: table.getFilteredSelectedRowModel().rows.length
|
||||||
#. placeholder {1}: table.getFilteredRowModel().rows.length
|
#. placeholder {1}: table.getFilteredRowModel().rows.length
|
||||||
@@ -39,6 +24,18 @@ msgstr "{0, plural, one {# хвилина} few {# хвилини} many {# хви
|
|||||||
msgid "{0} of {1} row(s) selected."
|
msgid "{0} of {1} row(s) selected."
|
||||||
msgstr "Вибрано {0} з {1} рядків."
|
msgstr "Вибрано {0} з {1} рядків."
|
||||||
|
|
||||||
|
#: src/lib/utils.ts
|
||||||
|
msgid "{count, plural, one {{countString} day} other {{countString} days}}"
|
||||||
|
msgstr "{count, plural, one {{countString} день} few {{countString} дні} many {{countString} днів} other {{countString} дня}}"
|
||||||
|
|
||||||
|
#: src/lib/utils.ts
|
||||||
|
msgid "{count, plural, one {{countString} hour} other {{countString} hours}}"
|
||||||
|
msgstr "{count, plural, one {{countString} година} few {{countString} години} many {{countString} годин} other {{countString} години}}"
|
||||||
|
|
||||||
|
#: src/lib/utils.ts
|
||||||
|
msgid "{count, plural, one {{countString} minute} few {{countString} minutes} many {{countString} minutes} other {{countString} minutes}}"
|
||||||
|
msgstr "{count, plural, one {{countString} хвилина} few {{countString} хвилини} many {{countString} хвилин} other {{countString} хвилини}}"
|
||||||
|
|
||||||
#: src/lib/utils.ts
|
#: src/lib/utils.ts
|
||||||
msgid "1 hour"
|
msgid "1 hour"
|
||||||
msgstr "1 година"
|
msgstr "1 година"
|
||||||
@@ -48,6 +45,10 @@ msgstr "1 година"
|
|||||||
msgid "1 min"
|
msgid "1 min"
|
||||||
msgstr "1 хв"
|
msgstr "1 хв"
|
||||||
|
|
||||||
|
#: src/lib/utils.ts
|
||||||
|
msgid "1 minute"
|
||||||
|
msgstr "1 хвилина"
|
||||||
|
|
||||||
#: src/lib/utils.ts
|
#: src/lib/utils.ts
|
||||||
msgid "1 week"
|
msgid "1 week"
|
||||||
msgstr "1 тиждень"
|
msgstr "1 тиждень"
|
||||||
@@ -75,28 +76,37 @@ msgid "5 min"
|
|||||||
msgstr "5 хв"
|
msgstr "5 хв"
|
||||||
|
|
||||||
#. Table column
|
#. Table column
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
msgid "Actions"
|
msgid "Actions"
|
||||||
msgstr "Дії"
|
msgstr "Дії"
|
||||||
|
|
||||||
#: src/components/alerts-history-columns.tsx
|
#: src/components/alerts-history-columns.tsx
|
||||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
msgid "Active"
|
msgid "Active"
|
||||||
msgstr "Активне"
|
msgstr "Активне"
|
||||||
|
|
||||||
#: src/components/routes/home.tsx
|
#: src/components/active-alerts.tsx
|
||||||
msgid "Active Alerts"
|
msgid "Active Alerts"
|
||||||
msgstr "Активні сповіщення"
|
msgstr "Активні сповіщення"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Active state"
|
||||||
|
msgstr "Активний стан"
|
||||||
|
|
||||||
|
#: src/components/add-system.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "Add {foo}"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/components/add-system.tsx
|
#: src/components/add-system.tsx
|
||||||
msgid "Add <0>System</0>"
|
msgid "Add <0>System</0>"
|
||||||
msgstr "Додати <0>Систему</0>"
|
msgstr "Додати <0>Систему</0>"
|
||||||
|
|
||||||
#: src/components/add-system.tsx
|
|
||||||
msgid "Add New System"
|
|
||||||
msgstr "Додати нову систему"
|
|
||||||
|
|
||||||
#: src/components/add-system.tsx
|
#: src/components/add-system.tsx
|
||||||
msgid "Add system"
|
msgid "Add system"
|
||||||
msgstr "Додати систему"
|
msgstr "Додати систему"
|
||||||
@@ -109,11 +119,19 @@ msgstr "Додати URL"
|
|||||||
msgid "Adjust display options for charts."
|
msgid "Adjust display options for charts."
|
||||||
msgstr "Налаштуйте параметри відображення для графіків."
|
msgstr "Налаштуйте параметри відображення для графіків."
|
||||||
|
|
||||||
|
#: src/components/routes/settings/general.tsx
|
||||||
|
msgid "Adjust the width of the main layout"
|
||||||
|
msgstr "Налаштувати ширину основного макету"
|
||||||
|
|
||||||
#: src/components/command-palette.tsx
|
#: src/components/command-palette.tsx
|
||||||
#: src/components/command-palette.tsx
|
#: src/components/command-palette.tsx
|
||||||
msgid "Admin"
|
msgid "Admin"
|
||||||
msgstr "Адміністратор"
|
msgstr "Адміністратор"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "After"
|
||||||
|
msgstr "Після"
|
||||||
|
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
msgid "Agent"
|
msgid "Agent"
|
||||||
msgstr "Агент"
|
msgstr "Агент"
|
||||||
@@ -129,7 +147,16 @@ msgstr "Історія сповіщень"
|
|||||||
msgid "Alerts"
|
msgid "Alerts"
|
||||||
msgstr "Сповіщення"
|
msgstr "Сповіщення"
|
||||||
|
|
||||||
|
#: src/components/command-palette.tsx
|
||||||
|
#: src/components/containers-table/containers-table.tsx
|
||||||
|
#: src/components/routes/containers.tsx
|
||||||
|
msgid "All Containers"
|
||||||
|
msgstr "Всі контейнери"
|
||||||
|
|
||||||
#: src/components/alerts/alerts-sheet.tsx
|
#: src/components/alerts/alerts-sheet.tsx
|
||||||
|
#: src/components/command-palette.tsx
|
||||||
|
#: src/components/routes/home.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
#: src/components/systems-table/systems-table.tsx
|
#: src/components/systems-table/systems-table.tsx
|
||||||
#: src/components/systems-table/systems-table.tsx
|
#: src/components/systems-table/systems-table.tsx
|
||||||
msgid "All Systems"
|
msgid "All Systems"
|
||||||
@@ -191,6 +218,18 @@ msgstr "Пропускна здатність"
|
|||||||
msgid "Battery"
|
msgid "Battery"
|
||||||
msgstr "Батарея"
|
msgstr "Батарея"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Became active"
|
||||||
|
msgstr "Стало активним"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Became inactive"
|
||||||
|
msgstr "Стало неактивним"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Before"
|
||||||
|
msgstr "До"
|
||||||
|
|
||||||
#: src/components/login/auth-form.tsx
|
#: src/components/login/auth-form.tsx
|
||||||
msgid "Beszel supports OpenID Connect and many OAuth2 authentication providers."
|
msgid "Beszel supports OpenID Connect and many OAuth2 authentication providers."
|
||||||
msgstr "Beszel підтримує OpenID Connect та багато постачальників автентифікації OAuth2."
|
msgstr "Beszel підтримує OpenID Connect та багато постачальників автентифікації OAuth2."
|
||||||
@@ -208,6 +247,10 @@ msgstr "Двійковий"
|
|||||||
msgid "Bits (Kbps, Mbps, Gbps)"
|
msgid "Bits (Kbps, Mbps, Gbps)"
|
||||||
msgstr "Біти (Кбіт/с, Мбіт/с, Гбіт/с)"
|
msgstr "Біти (Кбіт/с, Мбіт/с, Гбіт/с)"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Boot state"
|
||||||
|
msgstr "Стан завантаження"
|
||||||
|
|
||||||
#: src/components/routes/settings/general.tsx
|
#: src/components/routes/settings/general.tsx
|
||||||
#: src/components/routes/settings/general.tsx
|
#: src/components/routes/settings/general.tsx
|
||||||
msgid "Bytes (KB/s, MB/s, GB/s)"
|
msgid "Bytes (KB/s, MB/s, GB/s)"
|
||||||
@@ -217,11 +260,32 @@ msgstr "Байти (КБ/с, МБ/с, ГБ/с)"
|
|||||||
msgid "Cache / Buffers"
|
msgid "Cache / Buffers"
|
||||||
msgstr "Кеш / Буфери"
|
msgstr "Кеш / Буфери"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Can reload"
|
||||||
|
msgstr "Може перезавантажити"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Can start"
|
||||||
|
msgstr "Може запустити"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Can stop"
|
||||||
|
msgstr "Може зупинити"
|
||||||
|
|
||||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "Скасувати"
|
msgstr "Скасувати"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Capabilities"
|
||||||
|
msgstr "Можливості"
|
||||||
|
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
msgid "Capacity"
|
||||||
|
msgstr "Ємність"
|
||||||
|
|
||||||
#: src/components/routes/settings/config-yaml.tsx
|
#: src/components/routes/settings/config-yaml.tsx
|
||||||
msgid "Caution - potential data loss"
|
msgid "Caution - potential data loss"
|
||||||
msgstr "Увага - можливе втрата даних"
|
msgstr "Увага - можливе втрата даних"
|
||||||
@@ -263,6 +327,20 @@ msgstr "Перевірте журнали для отримання додатк
|
|||||||
msgid "Check your notification service"
|
msgid "Check your notification service"
|
||||||
msgstr "Перевірте свій сервіс сповіщень"
|
msgstr "Перевірте свій сервіс сповіщень"
|
||||||
|
|
||||||
|
#: src/components/containers-table/containers-table.tsx
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
#: src/components/systems-table/systems-table.tsx
|
||||||
|
msgid "Clear"
|
||||||
|
msgstr "Очистити"
|
||||||
|
|
||||||
|
#: src/components/containers-table/containers-table.tsx
|
||||||
|
msgid "Click on a container to view more information."
|
||||||
|
msgstr "Натисніть на контейнер, щоб переглянути більше інформації."
|
||||||
|
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
msgid "Click on a device to view more information."
|
||||||
|
msgstr "Натисніть на пристрій, щоб переглянути більше інформації."
|
||||||
|
|
||||||
#: src/components/systems-table/systems-table.tsx
|
#: src/components/systems-table/systems-table.tsx
|
||||||
msgid "Click on a system to view more information."
|
msgid "Click on a system to view more information."
|
||||||
msgstr "Натисніть на систему, щоб переглянути більше інформації."
|
msgstr "Натисніть на систему, щоб переглянути більше інформації."
|
||||||
@@ -285,7 +363,11 @@ msgstr "Налаштуйте, як ви отримуєте сповіщення
|
|||||||
msgid "Confirm password"
|
msgid "Confirm password"
|
||||||
msgstr "Підтвердьте пароль"
|
msgstr "Підтвердьте пароль"
|
||||||
|
|
||||||
#: src/components/routes/home.tsx
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Conflicts"
|
||||||
|
msgstr "Конфлікти"
|
||||||
|
|
||||||
|
#: src/components/active-alerts.tsx
|
||||||
msgid "Connection is down"
|
msgid "Connection is down"
|
||||||
msgstr "З'єднання розірвано"
|
msgstr "З'єднання розірвано"
|
||||||
|
|
||||||
@@ -344,16 +426,39 @@ msgstr "Скопіюйте вміст <0>docker-compose.yml</0> для аген
|
|||||||
msgid "Copy YAML"
|
msgid "Copy YAML"
|
||||||
msgstr "Копіювати YAML"
|
msgstr "Копіювати YAML"
|
||||||
|
|
||||||
|
#: src/components/containers-table/containers-table-columns.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table-columns.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
msgid "CPU"
|
msgid "CPU"
|
||||||
msgstr "ЦП"
|
msgstr "ЦП"
|
||||||
|
|
||||||
|
#: src/components/routes/system/cpu-sheet.tsx
|
||||||
|
msgid "CPU Cores"
|
||||||
|
msgstr "Ядра ЦП"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table-columns.tsx
|
||||||
|
msgid "CPU Peak"
|
||||||
|
msgstr "Пік ЦП"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "CPU time"
|
||||||
|
msgstr "Час ЦП"
|
||||||
|
|
||||||
|
#: src/components/routes/system/cpu-sheet.tsx
|
||||||
|
msgid "CPU Time Breakdown"
|
||||||
|
msgstr "Розподіл часу ЦП"
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
|
#: src/components/routes/system/cpu-sheet.tsx
|
||||||
#: src/lib/alerts.ts
|
#: src/lib/alerts.ts
|
||||||
msgid "CPU Usage"
|
msgid "CPU Usage"
|
||||||
msgstr "Використання ЦП"
|
msgstr "Використання ЦП"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "Create"
|
||||||
|
msgstr "Створити"
|
||||||
|
|
||||||
#: src/components/login/auth-form.tsx
|
#: src/components/login/auth-form.tsx
|
||||||
msgid "Create account"
|
msgid "Create account"
|
||||||
msgstr "Створити обліковий запис"
|
msgstr "Створити обліковий запис"
|
||||||
@@ -380,16 +485,23 @@ msgstr "Кумулятивне відвантаження"
|
|||||||
msgid "Current state"
|
msgid "Current state"
|
||||||
msgstr "Поточний стан"
|
msgstr "Поточний стан"
|
||||||
|
|
||||||
#: src/components/command-palette.tsx
|
#. Power Cycles
|
||||||
#: src/components/routes/home.tsx
|
#: src/components/routes/system/smart-table.tsx
|
||||||
msgid "Dashboard"
|
msgid "Cycles"
|
||||||
msgstr "Панель управління"
|
msgstr "Цикли"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "Daily"
|
||||||
|
msgstr "Щодня"
|
||||||
|
|
||||||
#: src/components/routes/settings/general.tsx
|
#: src/components/routes/settings/general.tsx
|
||||||
msgid "Default time period"
|
msgid "Default time period"
|
||||||
msgstr "Стандартний період часу"
|
msgstr "Стандартний період часу"
|
||||||
|
|
||||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
msgid "Delete"
|
msgid "Delete"
|
||||||
msgstr "Видалити"
|
msgstr "Видалити"
|
||||||
@@ -398,6 +510,18 @@ msgstr "Видалити"
|
|||||||
msgid "Delete fingerprint"
|
msgid "Delete fingerprint"
|
||||||
msgstr "Видалити відбиток"
|
msgstr "Видалити відбиток"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Description"
|
||||||
|
msgstr "Опис"
|
||||||
|
|
||||||
|
#: src/components/containers-table/containers-table.tsx
|
||||||
|
msgid "Detail"
|
||||||
|
msgstr "Деталі"
|
||||||
|
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
msgid "Device"
|
||||||
|
msgstr "Пристрій"
|
||||||
|
|
||||||
#. Context: Battery state
|
#. Context: Battery state
|
||||||
#: src/lib/i18n.ts
|
#: src/lib/i18n.ts
|
||||||
msgid "Discharging"
|
msgid "Discharging"
|
||||||
@@ -438,6 +562,7 @@ msgid "Docker Network I/O"
|
|||||||
msgstr "Мережевий ввід/вивід Docker"
|
msgstr "Мережевий ввід/вивід Docker"
|
||||||
|
|
||||||
#: src/components/command-palette.tsx
|
#: src/components/command-palette.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
msgid "Documentation"
|
msgid "Documentation"
|
||||||
msgstr "Документація"
|
msgstr "Документація"
|
||||||
|
|
||||||
@@ -461,11 +586,16 @@ msgstr "Завантажити"
|
|||||||
msgid "Duration"
|
msgid "Duration"
|
||||||
msgstr "Тривалість"
|
msgstr "Тривалість"
|
||||||
|
|
||||||
#: src/components/add-system.tsx
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
msgid "Edit"
|
msgid "Edit"
|
||||||
msgstr "Редагувати"
|
msgstr "Редагувати"
|
||||||
|
|
||||||
|
#: src/components/add-system.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "Edit {foo}"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/components/login/auth-form.tsx
|
#: src/components/login/auth-form.tsx
|
||||||
#: src/components/login/forgot-pass-form.tsx
|
#: src/components/login/forgot-pass-form.tsx
|
||||||
#: src/components/login/otp-forms.tsx
|
#: src/components/login/otp-forms.tsx
|
||||||
@@ -481,6 +611,11 @@ msgstr "Сповіщення електронною поштою"
|
|||||||
msgid "Empty"
|
msgid "Empty"
|
||||||
msgstr "Порожня"
|
msgstr "Порожня"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "End Time"
|
||||||
|
msgstr "Час завершення"
|
||||||
|
|
||||||
#: src/components/login/login.tsx
|
#: src/components/login/login.tsx
|
||||||
msgid "Enter email address to reset password"
|
msgid "Enter email address to reset password"
|
||||||
msgstr "Введіть адресу електронної пошти для скидання пароля"
|
msgstr "Введіть адресу електронної пошти для скидання пароля"
|
||||||
@@ -497,21 +632,32 @@ msgstr "Введіть ваш одноразовий пароль."
|
|||||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||||
#: src/components/routes/settings/config-yaml.tsx
|
#: src/components/routes/settings/config-yaml.tsx
|
||||||
#: src/components/routes/settings/notifications.tsx
|
#: src/components/routes/settings/notifications.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
msgid "Error"
|
msgid "Error"
|
||||||
msgstr "Помилка"
|
msgstr "Помилка"
|
||||||
|
|
||||||
#. placeholder {0}: alert.value
|
#. placeholder {0}: alert.value
|
||||||
#. placeholder {1}: info.unit
|
#. placeholder {1}: info.unit
|
||||||
#. placeholder {2}: alert.min
|
#. placeholder {2}: alert.min
|
||||||
#: src/components/routes/home.tsx
|
#: src/components/active-alerts.tsx
|
||||||
msgid "Exceeds {0}{1} in last {2, plural, one {# minute} other {# minutes}}"
|
msgid "Exceeds {0}{1} in last {2, plural, one {# minute} other {# minutes}}"
|
||||||
msgstr "Перевищує {0}{1} протягом {2, plural, one {останньої # хвилини} other {останніх # хвилин}}"
|
msgstr "Перевищує {0}{1} протягом {2, plural, one {останньої # хвилини} other {останніх # хвилин}}"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Exec main PID"
|
||||||
|
msgstr "Основний PID процесу"
|
||||||
|
|
||||||
#: src/components/routes/settings/config-yaml.tsx
|
#: src/components/routes/settings/config-yaml.tsx
|
||||||
msgid "Existing systems not defined in <0>config.yml</0> will be deleted. Please make regular backups."
|
msgid "Existing systems not defined in <0>config.yml</0> will be deleted. Please make regular backups."
|
||||||
msgstr "Існуючі системи, не визначені в <0>config.yml</0>, будуть видалені. Будь ласка, робіть регулярні резервні копії."
|
msgstr "Існуючі системи, не визначені в <0>config.yml</0>, будуть видалені. Будь ласка, робіть регулярні резервні копії."
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Exited active"
|
||||||
|
msgstr "Завершилося активно"
|
||||||
|
|
||||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||||
msgid "Export"
|
msgid "Export"
|
||||||
msgstr "Експорт"
|
msgstr "Експорт"
|
||||||
@@ -528,12 +674,21 @@ msgstr "Експортуйте поточну конфігурацію сист
|
|||||||
msgid "Fahrenheit (°F)"
|
msgid "Fahrenheit (°F)"
|
||||||
msgstr "Фаренгейт (°F)"
|
msgstr "Фаренгейт (°F)"
|
||||||
|
|
||||||
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
|
msgid "Failed"
|
||||||
|
msgstr "Не вдалося"
|
||||||
|
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
msgid "Failed Attributes:"
|
||||||
|
msgstr "Невдалі атрибути:"
|
||||||
|
|
||||||
#: src/lib/api.ts
|
#: src/lib/api.ts
|
||||||
msgid "Failed to authenticate"
|
msgid "Failed to authenticate"
|
||||||
msgstr "Не вдалося автентифікувати"
|
msgstr "Не вдалося автентифікувати"
|
||||||
|
|
||||||
#: src/components/routes/settings/layout.tsx
|
#: src/components/routes/settings/layout.tsx
|
||||||
#: src/components/routes/settings/notifications.tsx
|
#: src/components/routes/settings/notifications.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
msgid "Failed to save settings"
|
msgid "Failed to save settings"
|
||||||
msgstr "Не вдалося зберегти налаштування"
|
msgstr "Не вдалося зберегти налаштування"
|
||||||
|
|
||||||
@@ -545,8 +700,16 @@ msgstr "Не вдалося надіслати тестове сповіщенн
|
|||||||
msgid "Failed to update alert"
|
msgid "Failed to update alert"
|
||||||
msgstr "Не вдалося оновити сповіщення"
|
msgstr "Не вдалося оновити сповіщення"
|
||||||
|
|
||||||
|
#. placeholder {0}: statusTotals[ServiceStatus.Failed]
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Failed: {0}"
|
||||||
|
msgstr "Невдало: {0}"
|
||||||
|
|
||||||
|
#: src/components/containers-table/containers-table.tsx
|
||||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
#: src/components/systems-table/systems-table.tsx
|
#: src/components/systems-table/systems-table.tsx
|
||||||
msgid "Filter..."
|
msgid "Filter..."
|
||||||
msgstr "Фільтр..."
|
msgstr "Фільтр..."
|
||||||
@@ -555,6 +718,10 @@ msgstr "Фільтр..."
|
|||||||
msgid "Fingerprint"
|
msgid "Fingerprint"
|
||||||
msgstr "Відбиток"
|
msgstr "Відбиток"
|
||||||
|
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
msgid "Firmware"
|
||||||
|
msgstr "Прошивка"
|
||||||
|
|
||||||
#: src/components/alerts/alerts-sheet.tsx
|
#: src/components/alerts/alerts-sheet.tsx
|
||||||
msgid "For <0>{min}</0> {min, plural, one {minute} other {minutes}}"
|
msgid "For <0>{min}</0> {min, plural, one {minute} other {minutes}}"
|
||||||
msgstr "Протягом <0>{min}</0> {min, plural, one {хвилини} other {хвилин}}"
|
msgstr "Протягом <0>{min}</0> {min, plural, one {хвилини} other {хвилин}}"
|
||||||
@@ -580,6 +747,10 @@ msgstr "Повна"
|
|||||||
msgid "General"
|
msgid "General"
|
||||||
msgstr "Загальні"
|
msgstr "Загальні"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "Global"
|
||||||
|
msgstr "Глобально"
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
msgid "GPU Engines"
|
msgid "GPU Engines"
|
||||||
msgstr "Рушії GPU"
|
msgstr "Рушії GPU"
|
||||||
@@ -588,10 +759,18 @@ msgstr "Рушії GPU"
|
|||||||
msgid "GPU Power Draw"
|
msgid "GPU Power Draw"
|
||||||
msgstr "Енергоспоживання GPU"
|
msgstr "Енергоспоживання GPU"
|
||||||
|
|
||||||
|
#: src/lib/alerts.ts
|
||||||
|
msgid "GPU Usage"
|
||||||
|
msgstr "Використання GPU"
|
||||||
|
|
||||||
#: src/components/systems-table/systems-table.tsx
|
#: src/components/systems-table/systems-table.tsx
|
||||||
msgid "Grid"
|
msgid "Grid"
|
||||||
msgstr "Сітка"
|
msgstr "Сітка"
|
||||||
|
|
||||||
|
#: src/components/containers-table/containers-table-columns.tsx
|
||||||
|
msgid "Health"
|
||||||
|
msgstr "Здоров'я"
|
||||||
|
|
||||||
#: src/components/add-system.tsx
|
#: src/components/add-system.tsx
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
msgctxt "Button to copy install command"
|
msgctxt "Button to copy install command"
|
||||||
@@ -611,6 +790,15 @@ msgstr "Неактивна"
|
|||||||
msgid "If you've lost the password to your admin account, you may reset it using the following command."
|
msgid "If you've lost the password to your admin account, you may reset it using the following command."
|
||||||
msgstr "Якщо ви втратили пароль до свого адміністративного облікового запису, ви можете скинути його за допомогою наступної команди."
|
msgstr "Якщо ви втратили пароль до свого адміністративного облікового запису, ви можете скинути його за допомогою наступної команди."
|
||||||
|
|
||||||
|
#: src/components/containers-table/containers-table-columns.tsx
|
||||||
|
msgctxt "Docker image"
|
||||||
|
msgid "Image"
|
||||||
|
msgstr "Образ"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "Inactive"
|
||||||
|
msgstr "Неактивне"
|
||||||
|
|
||||||
#: src/components/login/auth-form.tsx
|
#: src/components/login/auth-form.tsx
|
||||||
msgid "Invalid email address."
|
msgid "Invalid email address."
|
||||||
msgstr "Неправильна адреса електронної пошти."
|
msgstr "Неправильна адреса електронної пошти."
|
||||||
@@ -628,6 +816,19 @@ msgstr "Мова"
|
|||||||
msgid "Layout"
|
msgid "Layout"
|
||||||
msgstr "Макет"
|
msgstr "Макет"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/general.tsx
|
||||||
|
msgid "Layout width"
|
||||||
|
msgstr "Ширина макету"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Lifecycle"
|
||||||
|
msgstr "Життєвий цикл"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "limit"
|
||||||
|
msgstr "обмеження"
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
msgid "Load Average"
|
msgid "Load Average"
|
||||||
msgstr "Середнє навантаження"
|
msgstr "Середнє навантаження"
|
||||||
@@ -649,6 +850,14 @@ msgstr "Середнє навантаження за 5 хв"
|
|||||||
msgid "Load Avg"
|
msgid "Load Avg"
|
||||||
msgstr "Сер. навантаження"
|
msgstr "Сер. навантаження"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Load state"
|
||||||
|
msgstr "Стан завантаження"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Loading..."
|
||||||
|
msgstr "Завантаження..."
|
||||||
|
|
||||||
#: src/components/navbar.tsx
|
#: src/components/navbar.tsx
|
||||||
msgid "Log Out"
|
msgid "Log Out"
|
||||||
msgstr "Вийти"
|
msgstr "Вийти"
|
||||||
@@ -663,6 +872,7 @@ msgid "Login attempt failed"
|
|||||||
msgstr "Спроба входу не вдалася"
|
msgstr "Спроба входу не вдалася"
|
||||||
|
|
||||||
#: src/components/command-palette.tsx
|
#: src/components/command-palette.tsx
|
||||||
|
#: src/components/containers-table/containers-table.tsx
|
||||||
#: src/components/navbar.tsx
|
#: src/components/navbar.tsx
|
||||||
msgid "Logs"
|
msgid "Logs"
|
||||||
msgstr "Журнали"
|
msgstr "Журнали"
|
||||||
@@ -671,6 +881,10 @@ msgstr "Журнали"
|
|||||||
msgid "Looking instead for where to create alerts? Click the bell <0/> icons in the systems table."
|
msgid "Looking instead for where to create alerts? Click the bell <0/> icons in the systems table."
|
||||||
msgstr "Шукаєте, де створити сповіщення? Натисніть на іконки дзвінка <0/> в таблиці систем."
|
msgstr "Шукаєте, де створити сповіщення? Натисніть на іконки дзвінка <0/> в таблиці систем."
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Main PID"
|
||||||
|
msgstr "Основний PID"
|
||||||
|
|
||||||
#: src/components/routes/settings/layout.tsx
|
#: src/components/routes/settings/layout.tsx
|
||||||
msgid "Manage display and notification preferences."
|
msgid "Manage display and notification preferences."
|
||||||
msgstr "Керуйте параметрами відображення та сповіщень."
|
msgstr "Керуйте параметрами відображення та сповіщень."
|
||||||
@@ -685,10 +899,22 @@ msgstr "Інструкції з ручного налаштування"
|
|||||||
msgid "Max 1 min"
|
msgid "Max 1 min"
|
||||||
msgstr "Макс 1 хв"
|
msgstr "Макс 1 хв"
|
||||||
|
|
||||||
|
#: src/components/containers-table/containers-table-columns.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table-columns.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
msgid "Memory"
|
msgid "Memory"
|
||||||
msgstr "Пам'ять"
|
msgstr "Пам'ять"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Memory limit"
|
||||||
|
msgstr "Обмеження пам'яті"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table-columns.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Memory Peak"
|
||||||
|
msgstr "Пік пам'яті"
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
#: src/lib/alerts.ts
|
#: src/lib/alerts.ts
|
||||||
msgid "Memory Usage"
|
msgid "Memory Usage"
|
||||||
@@ -698,11 +924,19 @@ msgstr "Використання пам'яті"
|
|||||||
msgid "Memory usage of docker containers"
|
msgid "Memory usage of docker containers"
|
||||||
msgstr "Використання пам'яті контейнерами Docker"
|
msgstr "Використання пам'яті контейнерами Docker"
|
||||||
|
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
msgid "Model"
|
||||||
|
msgstr "Модель"
|
||||||
|
|
||||||
#: src/components/add-system.tsx
|
#: src/components/add-system.tsx
|
||||||
#: src/components/alerts-history-columns.tsx
|
#: src/components/alerts-history-columns.tsx
|
||||||
|
#: src/components/containers-table/containers-table-columns.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table-columns.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
msgid "Name"
|
msgid "Name"
|
||||||
msgstr "Ім'я"
|
msgstr "Ім'я"
|
||||||
|
|
||||||
|
#: src/components/containers-table/containers-table-columns.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
msgid "Net"
|
msgid "Net"
|
||||||
msgstr "Мережа"
|
msgstr "Мережа"
|
||||||
@@ -714,6 +948,7 @@ msgstr "Мережевий трафік контейнерів Docker"
|
|||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
#: src/components/routes/system/network-sheet.tsx
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
#: src/components/routes/system/network-sheet.tsx
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
msgid "Network traffic of public interfaces"
|
msgid "Network traffic of public interfaces"
|
||||||
msgstr "Мережевий трафік публічних інтерфейсів"
|
msgstr "Мережевий трафік публічних інтерфейсів"
|
||||||
|
|
||||||
@@ -722,14 +957,30 @@ msgstr "Мережевий трафік публічних інтерфейсі
|
|||||||
msgid "Network unit"
|
msgid "Network unit"
|
||||||
msgstr "Одиниця виміру мережі"
|
msgstr "Одиниця виміру мережі"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "No"
|
||||||
|
msgstr "Ні"
|
||||||
|
|
||||||
#: src/components/command-palette.tsx
|
#: src/components/command-palette.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
msgid "No results found."
|
msgid "No results found."
|
||||||
msgstr "Результатів не знайдено."
|
msgstr "Результатів не знайдено."
|
||||||
|
|
||||||
|
#: src/components/containers-table/containers-table.tsx
|
||||||
|
#: src/components/containers-table/containers-table.tsx
|
||||||
|
#: src/components/containers-table/containers-table.tsx
|
||||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
msgid "No results."
|
msgid "No results."
|
||||||
msgstr "Немає результатів."
|
msgstr "Немає результатів."
|
||||||
|
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
msgid "No S.M.A.R.T. attributes available for this device."
|
||||||
|
msgstr "Для цього пристрою немає доступних атрибутів S.M.A.R.T."
|
||||||
|
|
||||||
#: src/components/systems-table/systems-table.tsx
|
#: src/components/systems-table/systems-table.tsx
|
||||||
#: src/components/systems-table/systems-table.tsx
|
#: src/components/systems-table/systems-table.tsx
|
||||||
msgid "No systems found."
|
msgid "No systems found."
|
||||||
@@ -749,12 +1000,19 @@ msgstr "Підтримка OAuth 2 / OIDC"
|
|||||||
msgid "On each restart, systems in the database will be updated to match the systems defined in the file."
|
msgid "On each restart, systems in the database will be updated to match the systems defined in the file."
|
||||||
msgstr "При кожному перезапуску системи в базі даних будуть оновлені, щоб відповідати системам, визначеним у файлі."
|
msgstr "При кожному перезапуску системи в базі даних будуть оновлені, щоб відповідати системам, визначеним у файлі."
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "One-time"
|
||||||
|
msgstr "Одноразовий"
|
||||||
|
|
||||||
#: src/components/login/auth-form.tsx
|
#: src/components/login/auth-form.tsx
|
||||||
msgid "One-time password"
|
msgid "One-time password"
|
||||||
msgstr "Одноразовий пароль"
|
msgstr "Одноразовий пароль"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
msgid "Open menu"
|
msgid "Open menu"
|
||||||
msgstr "Відкрити меню"
|
msgstr "Відкрити меню"
|
||||||
@@ -763,10 +1021,16 @@ msgstr "Відкрити меню"
|
|||||||
msgid "Or continue with"
|
msgid "Or continue with"
|
||||||
msgstr "Або продовжити з"
|
msgstr "Або продовжити з"
|
||||||
|
|
||||||
|
#: src/components/routes/system/cpu-sheet.tsx
|
||||||
|
msgid "Other"
|
||||||
|
msgstr "Інше"
|
||||||
|
|
||||||
#: src/components/alerts/alerts-sheet.tsx
|
#: src/components/alerts/alerts-sheet.tsx
|
||||||
msgid "Overwrite existing alerts"
|
msgid "Overwrite existing alerts"
|
||||||
msgstr "Перезаписати існуючі сповіщення"
|
msgstr "Перезаписати існуючі сповіщення"
|
||||||
|
|
||||||
|
#: src/components/command-palette.tsx
|
||||||
|
#: src/components/command-palette.tsx
|
||||||
#: src/components/command-palette.tsx
|
#: src/components/command-palette.tsx
|
||||||
msgid "Page"
|
msgid "Page"
|
||||||
msgstr "Сторінка"
|
msgstr "Сторінка"
|
||||||
@@ -798,6 +1062,10 @@ msgstr "Пароль не повинен перевищувати 72 байти.
|
|||||||
msgid "Password reset request received"
|
msgid "Password reset request received"
|
||||||
msgstr "Запит на скидання пароля отримано"
|
msgstr "Запит на скидання пароля отримано"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "Past"
|
||||||
|
msgstr "Минуле"
|
||||||
|
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
msgid "Pause"
|
msgid "Pause"
|
||||||
msgstr "Призупинити"
|
msgstr "Призупинити"
|
||||||
@@ -810,6 +1078,15 @@ msgstr "Призупинено"
|
|||||||
msgid "Paused ({pausedSystemsLength})"
|
msgid "Paused ({pausedSystemsLength})"
|
||||||
msgstr "Призупинено ({pausedSystemsLength})"
|
msgstr "Призупинено ({pausedSystemsLength})"
|
||||||
|
|
||||||
|
#: src/components/routes/system/cpu-sheet.tsx
|
||||||
|
#: src/components/routes/system/cpu-sheet.tsx
|
||||||
|
msgid "Per-core average utilization"
|
||||||
|
msgstr "Середнє використання на ядро"
|
||||||
|
|
||||||
|
#: src/components/routes/system/cpu-sheet.tsx
|
||||||
|
msgid "Percentage of time spent in each state"
|
||||||
|
msgstr "Відсоток часу, проведеного в кожному стані"
|
||||||
|
|
||||||
#: src/components/routes/settings/notifications.tsx
|
#: src/components/routes/settings/notifications.tsx
|
||||||
msgid "Please <0>configure an SMTP server</0> to ensure alerts are delivered."
|
msgid "Please <0>configure an SMTP server</0> to ensure alerts are delivered."
|
||||||
msgstr "Будь ласка, <0>налаштуйте SMTP сервер</0>, щоб забезпечити доставку сповіщень."
|
msgstr "Будь ласка, <0>налаштуйте SMTP сервер</0>, щоб забезпечити доставку сповіщень."
|
||||||
@@ -847,6 +1124,11 @@ msgstr "Будь ласка, увійдіть у свій обліковий з
|
|||||||
msgid "Port"
|
msgid "Port"
|
||||||
msgstr "Порт"
|
msgstr "Порт"
|
||||||
|
|
||||||
|
#. Power On Time
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
msgid "Power On"
|
||||||
|
msgstr "Увімкнення живлення"
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
msgid "Precise utilization at the recorded time"
|
msgid "Precise utilization at the recorded time"
|
||||||
@@ -856,11 +1138,19 @@ msgstr "Точне використання в записаний час"
|
|||||||
msgid "Preferred Language"
|
msgid "Preferred Language"
|
||||||
msgstr "Бажана мова"
|
msgstr "Бажана мова"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Process started"
|
||||||
|
msgstr "Процес запущено"
|
||||||
|
|
||||||
#. Use 'Key' if your language requires many more characters
|
#. Use 'Key' if your language requires many more characters
|
||||||
#: src/components/add-system.tsx
|
#: src/components/add-system.tsx
|
||||||
msgid "Public Key"
|
msgid "Public Key"
|
||||||
msgstr "Ключ"
|
msgstr "Ключ"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "Quiet Hours"
|
||||||
|
msgstr "Тихі години"
|
||||||
|
|
||||||
#. Disk read
|
#. Disk read
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
@@ -871,6 +1161,16 @@ msgstr "Читання"
|
|||||||
msgid "Received"
|
msgid "Received"
|
||||||
msgstr "Отримано"
|
msgstr "Отримано"
|
||||||
|
|
||||||
|
#: src/components/containers-table/containers-table.tsx
|
||||||
|
#: src/components/containers-table/containers-table.tsx
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
msgid "Refresh"
|
||||||
|
msgstr "Оновити"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Relationships"
|
||||||
|
msgstr "Зв'язки"
|
||||||
|
|
||||||
#: src/components/login/login.tsx
|
#: src/components/login/login.tsx
|
||||||
msgid "Request a one-time password"
|
msgid "Request a one-time password"
|
||||||
msgstr "Запит одноразового пароля"
|
msgstr "Запит одноразового пароля"
|
||||||
@@ -879,6 +1179,14 @@ msgstr "Запит одноразового пароля"
|
|||||||
msgid "Request OTP"
|
msgid "Request OTP"
|
||||||
msgstr "Запит OTP"
|
msgstr "Запит OTP"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Required by"
|
||||||
|
msgstr "Потрібно для"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Requires"
|
||||||
|
msgstr "Потребує"
|
||||||
|
|
||||||
#: src/components/login/forgot-pass-form.tsx
|
#: src/components/login/forgot-pass-form.tsx
|
||||||
msgid "Reset Password"
|
msgid "Reset Password"
|
||||||
msgstr "Скинути пароль"
|
msgstr "Скинути пароль"
|
||||||
@@ -889,10 +1197,19 @@ msgstr "Скинути пароль"
|
|||||||
msgid "Resolved"
|
msgid "Resolved"
|
||||||
msgstr "Вирішено"
|
msgstr "Вирішено"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Restarts"
|
||||||
|
msgstr "Перезапуски"
|
||||||
|
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
msgid "Resume"
|
msgid "Resume"
|
||||||
msgstr "Відновити"
|
msgstr "Відновити"
|
||||||
|
|
||||||
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
|
msgctxt "Root disk label"
|
||||||
|
msgid "Root"
|
||||||
|
msgstr "Корінь"
|
||||||
|
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
msgid "Rotate token"
|
msgid "Rotate token"
|
||||||
msgstr "Оновити токен"
|
msgstr "Оновити токен"
|
||||||
@@ -901,6 +1218,18 @@ msgstr "Оновити токен"
|
|||||||
msgid "Rows per page"
|
msgid "Rows per page"
|
||||||
msgstr "Рядків на сторінку"
|
msgstr "Рядків на сторінку"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Runtime Metrics"
|
||||||
|
msgstr "Метрики виконання"
|
||||||
|
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
msgid "S.M.A.R.T. Details"
|
||||||
|
msgstr "Деталі S.M.A.R.T."
|
||||||
|
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
msgid "S.M.A.R.T. Self-Test"
|
||||||
|
msgstr "Самодіагностика S.M.A.R.T."
|
||||||
|
|
||||||
#: src/components/routes/settings/notifications.tsx
|
#: src/components/routes/settings/notifications.tsx
|
||||||
msgid "Save address using enter key or comma. Leave blank to disable email notifications."
|
msgid "Save address using enter key or comma. Leave blank to disable email notifications."
|
||||||
msgstr "Збережіть адресу, використовуючи клавішу Enter або кому. Залиште порожнім, щоб вимкнути сповіщення електронною поштою."
|
msgstr "Збережіть адресу, використовуючи клавішу Enter або кому. Залиште порожнім, щоб вимкнути сповіщення електронною поштою."
|
||||||
@@ -914,6 +1243,18 @@ msgstr "Зберегти налаштування"
|
|||||||
msgid "Save system"
|
msgid "Save system"
|
||||||
msgstr "Зберегти систему"
|
msgstr "Зберегти систему"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "Schedule"
|
||||||
|
msgstr "Розклад"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "Schedule quiet hours where notifications will not be sent, such as during maintenance periods."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "Schedule quiet hours where notifications will not be sent."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/components/navbar.tsx
|
#: src/components/navbar.tsx
|
||||||
msgid "Search"
|
msgid "Search"
|
||||||
msgstr "Пошук"
|
msgstr "Пошук"
|
||||||
@@ -926,10 +1267,26 @@ msgstr "Шукати системи або налаштування..."
|
|||||||
msgid "See <0>notification settings</0> to configure how you receive alerts."
|
msgid "See <0>notification settings</0> to configure how you receive alerts."
|
||||||
msgstr "Перегляньте <0>налаштування сповіщень</0>, щоб налаштувати, як ви отримуєте сповіщення."
|
msgstr "Перегляньте <0>налаштування сповіщень</0>, щоб налаштувати, як ви отримуєте сповіщення."
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "Select {foo}"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
msgid "Sent"
|
msgid "Sent"
|
||||||
msgstr "Відправлено"
|
msgstr "Відправлено"
|
||||||
|
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
msgid "Serial Number"
|
||||||
|
msgstr "Серійний номер"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Service Details"
|
||||||
|
msgstr "Деталі служби"
|
||||||
|
|
||||||
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
|
msgid "Services"
|
||||||
|
msgstr "Служби"
|
||||||
|
|
||||||
#: src/components/routes/settings/general.tsx
|
#: src/components/routes/settings/general.tsx
|
||||||
msgid "Set percentage thresholds for meter colors."
|
msgid "Set percentage thresholds for meter colors."
|
||||||
msgstr "Встановіть відсоткові пороги для кольорів лічильників."
|
msgstr "Встановіть відсоткові пороги для кольорів лічильників."
|
||||||
@@ -957,16 +1314,30 @@ msgstr "Налаштування SMTP"
|
|||||||
msgid "Sort By"
|
msgid "Sort By"
|
||||||
msgstr "Сортувати за"
|
msgstr "Сортувати за"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "Start Time"
|
||||||
|
msgstr "Час початку"
|
||||||
|
|
||||||
#. Context: alert state (active or resolved)
|
#. Context: alert state (active or resolved)
|
||||||
#: src/components/alerts-history-columns.tsx
|
#: src/components/alerts-history-columns.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table-columns.tsx
|
||||||
msgid "State"
|
msgid "State"
|
||||||
msgstr "Стан"
|
msgstr "Стан"
|
||||||
|
|
||||||
|
#: src/components/containers-table/containers-table-columns.tsx
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
#: src/components/systems-table/systems-table.tsx
|
#: src/components/systems-table/systems-table.tsx
|
||||||
#: src/lib/alerts.ts
|
#: src/lib/alerts.ts
|
||||||
msgid "Status"
|
msgid "Status"
|
||||||
msgstr "Статус"
|
msgstr "Статус"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table-columns.tsx
|
||||||
|
msgid "Sub State"
|
||||||
|
msgstr "Підстан"
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
msgid "Swap space used by the system"
|
msgid "Swap space used by the system"
|
||||||
msgstr "Область підкачки, використана системою"
|
msgstr "Область підкачки, використана системою"
|
||||||
@@ -975,8 +1346,15 @@ msgstr "Область підкачки, використана системою
|
|||||||
msgid "Swap Usage"
|
msgid "Swap Usage"
|
||||||
msgstr "Використання підкачки"
|
msgstr "Використання підкачки"
|
||||||
|
|
||||||
|
#: src/components/add-system.tsx
|
||||||
#: src/components/alerts-history-columns.tsx
|
#: src/components/alerts-history-columns.tsx
|
||||||
|
#: src/components/containers-table/containers-table-columns.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
#: src/lib/alerts.ts
|
#: src/lib/alerts.ts
|
||||||
msgid "System"
|
msgid "System"
|
||||||
@@ -986,6 +1364,10 @@ msgstr "Система"
|
|||||||
msgid "System load averages over time"
|
msgid "System load averages over time"
|
||||||
msgstr "Середнє навантаження системи з часом"
|
msgstr "Середнє навантаження системи з часом"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Systemd Services"
|
||||||
|
msgstr "Служби Systemd"
|
||||||
|
|
||||||
#: src/components/navbar.tsx
|
#: src/components/navbar.tsx
|
||||||
msgid "Systems"
|
msgid "Systems"
|
||||||
msgstr "Системи"
|
msgstr "Системи"
|
||||||
@@ -998,7 +1380,12 @@ msgstr "Системи можуть керуватися у файлі <0>config
|
|||||||
msgid "Table"
|
msgid "Table"
|
||||||
msgstr "Таблиця"
|
msgstr "Таблиця"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Tasks"
|
||||||
|
msgstr "Завдання"
|
||||||
|
|
||||||
#. Temperature label in systems table
|
#. Temperature label in systems table
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
msgid "Temp"
|
msgid "Temp"
|
||||||
msgstr "Температура"
|
msgstr "Температура"
|
||||||
@@ -1080,6 +1467,11 @@ msgstr "Токени дозволяють агентам підключатис
|
|||||||
msgid "Tokens and fingerprints are used to authenticate WebSocket connections to the hub."
|
msgid "Tokens and fingerprints are used to authenticate WebSocket connections to the hub."
|
||||||
msgstr "Токени та відбитки використовуються для автентифікації WebSocket з'єднань до хабу."
|
msgstr "Токени та відбитки використовуються для автентифікації WebSocket з'єднань до хабу."
|
||||||
|
|
||||||
|
#: src/components/ui/chart.tsx
|
||||||
|
#: src/components/ui/chart.tsx
|
||||||
|
msgid "Total"
|
||||||
|
msgstr "Разом"
|
||||||
|
|
||||||
#: src/components/routes/system/network-sheet.tsx
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
msgid "Total data received for each interface"
|
msgid "Total data received for each interface"
|
||||||
msgstr "Загальний обсяг отриманих даних для кожного інтерфейсу"
|
msgstr "Загальний обсяг отриманих даних для кожного інтерфейсу"
|
||||||
@@ -1088,6 +1480,19 @@ msgstr "Загальний обсяг отриманих даних для ко
|
|||||||
msgid "Total data sent for each interface"
|
msgid "Total data sent for each interface"
|
||||||
msgstr "Загальний обсяг відправлених даних для кожного інтерфейсу"
|
msgstr "Загальний обсяг відправлених даних для кожного інтерфейсу"
|
||||||
|
|
||||||
|
#. placeholder {0}: data.length
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Total: {0}"
|
||||||
|
msgstr "Всього: {0}"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Triggered by"
|
||||||
|
msgstr "Запущено через"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Triggers"
|
||||||
|
msgstr "Тригери"
|
||||||
|
|
||||||
#: src/lib/alerts.ts
|
#: src/lib/alerts.ts
|
||||||
msgid "Triggers when 1 minute load average exceeds a threshold"
|
msgid "Triggers when 1 minute load average exceeds a threshold"
|
||||||
msgstr "Спрацьовує, коли середнє навантаження за 1 хвилину перевищує поріг"
|
msgstr "Спрацьовує, коли середнє навантаження за 1 хвилину перевищує поріг"
|
||||||
@@ -1112,6 +1517,10 @@ msgstr "Спрацьовує, коли відправлення/отриманн
|
|||||||
msgid "Triggers when CPU usage exceeds a threshold"
|
msgid "Triggers when CPU usage exceeds a threshold"
|
||||||
msgstr "Спрацьовує, коли використання ЦП перевищує поріг"
|
msgstr "Спрацьовує, коли використання ЦП перевищує поріг"
|
||||||
|
|
||||||
|
#: src/lib/alerts.ts
|
||||||
|
msgid "Triggers when GPU usage exceeds a threshold"
|
||||||
|
msgstr "Спрацьовує, коли використання GPU перевищує поріг"
|
||||||
|
|
||||||
#: src/lib/alerts.ts
|
#: src/lib/alerts.ts
|
||||||
msgid "Triggers when memory usage exceeds a threshold"
|
msgid "Triggers when memory usage exceeds a threshold"
|
||||||
msgstr "Спрацьовує, коли використання пам'яті перевищує поріг"
|
msgstr "Спрацьовує, коли використання пам'яті перевищує поріг"
|
||||||
@@ -1124,6 +1533,16 @@ msgstr "Спрацьовує, коли статус перемикається
|
|||||||
msgid "Triggers when usage of any disk exceeds a threshold"
|
msgid "Triggers when usage of any disk exceeds a threshold"
|
||||||
msgstr "Спрацьовує, коли використання будь-якого диска перевищує поріг"
|
msgstr "Спрацьовує, коли використання будь-якого диска перевищує поріг"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
msgid "Type"
|
||||||
|
msgstr "Тип"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Unit file"
|
||||||
|
msgstr "Файл юніта"
|
||||||
|
|
||||||
#. Temperature / network units
|
#. Temperature / network units
|
||||||
#: src/components/routes/settings/general.tsx
|
#: src/components/routes/settings/general.tsx
|
||||||
msgid "Unit preferences"
|
msgid "Unit preferences"
|
||||||
@@ -1139,6 +1558,11 @@ msgstr "Універсальний токен"
|
|||||||
msgid "Unknown"
|
msgid "Unknown"
|
||||||
msgstr "Невідома"
|
msgstr "Невідома"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Unlimited"
|
||||||
|
msgstr "Необмежено"
|
||||||
|
|
||||||
#. Context: System is up
|
#. Context: System is up
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
@@ -1149,6 +1573,20 @@ msgstr "Працює"
|
|||||||
msgid "Up ({upSystemsLength})"
|
msgid "Up ({upSystemsLength})"
|
||||||
msgstr "Працює ({upSystemsLength})"
|
msgstr "Працює ({upSystemsLength})"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "Update"
|
||||||
|
msgstr "Оновити"
|
||||||
|
|
||||||
|
#: src/components/containers-table/containers-table-columns.tsx
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table-columns.tsx
|
||||||
|
msgid "Updated"
|
||||||
|
msgstr "Оновлено"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Updated every 10 minutes."
|
||||||
|
msgstr "Оновлюється кожні 10 хвилин."
|
||||||
|
|
||||||
#: src/components/routes/system/network-sheet.tsx
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
msgid "Upload"
|
msgid "Upload"
|
||||||
msgstr "Відвантажити"
|
msgstr "Відвантажити"
|
||||||
@@ -1161,6 +1599,7 @@ msgstr "Час роботи"
|
|||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
|
#: src/components/routes/system/cpu-sheet.tsx
|
||||||
msgid "Usage"
|
msgid "Usage"
|
||||||
msgstr "Використання"
|
msgstr "Використання"
|
||||||
|
|
||||||
@@ -1186,6 +1625,7 @@ msgstr "Значення"
|
|||||||
msgid "View"
|
msgid "View"
|
||||||
msgstr "Вигляд"
|
msgstr "Вигляд"
|
||||||
|
|
||||||
|
#: src/components/routes/system/cpu-sheet.tsx
|
||||||
#: src/components/routes/system/network-sheet.tsx
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
msgid "View more"
|
msgid "View more"
|
||||||
msgstr "Переглянути більше"
|
msgstr "Переглянути більше"
|
||||||
@@ -1206,6 +1646,10 @@ msgstr "Очікування достатньої кількості запис
|
|||||||
msgid "Want to help improve our translations? Check <0>Crowdin</0> for details."
|
msgid "Want to help improve our translations? Check <0>Crowdin</0> for details."
|
||||||
msgstr "Хочете допомогти покращити наші переклади? Подробиці на <0>Crowdin</0>."
|
msgstr "Хочете допомогти покращити наші переклади? Подробиці на <0>Crowdin</0>."
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Wants"
|
||||||
|
msgstr "Потребує"
|
||||||
|
|
||||||
#: src/components/routes/settings/general.tsx
|
#: src/components/routes/settings/general.tsx
|
||||||
msgid "Warning (%)"
|
msgid "Warning (%)"
|
||||||
msgstr "Попередження (%)"
|
msgstr "Попередження (%)"
|
||||||
@@ -1242,6 +1686,13 @@ msgstr "Конфігурація YAML"
|
|||||||
msgid "YAML Configuration"
|
msgid "YAML Configuration"
|
||||||
msgstr "Конфігурація YAML"
|
msgstr "Конфігурація YAML"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Yes"
|
||||||
|
msgstr "Так"
|
||||||
|
|
||||||
#: src/components/routes/settings/layout.tsx
|
#: src/components/routes/settings/layout.tsx
|
||||||
msgid "Your user settings have been updated."
|
msgid "Your user settings have been updated."
|
||||||
msgstr "Ваші налаштування користувача були оновлені."
|
msgstr "Ваші налаштування користувача були оновлені."
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -8,30 +8,15 @@ msgstr ""
|
|||||||
"Language: zh\n"
|
"Language: zh\n"
|
||||||
"Project-Id-Version: beszel\n"
|
"Project-Id-Version: beszel\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"PO-Revision-Date: 2025-09-05 08:15\n"
|
"PO-Revision-Date: 2025-12-02 23:18\n"
|
||||||
"Last-Translator: \n"
|
"Last-Translator: \n"
|
||||||
"Language-Team: Chinese Simplified\n"
|
"Language-Team: Chinese Simplified\n"
|
||||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||||
"X-Crowdin-Project: beszel\n"
|
"X-Crowdin-Project: beszel\n"
|
||||||
"X-Crowdin-Project-ID: 733311\n"
|
"X-Crowdin-Project-ID: 733311\n"
|
||||||
"X-Crowdin-Language: zh-CN\n"
|
"X-Crowdin-Language: zh-CN\n"
|
||||||
"X-Crowdin-File: /main/beszel/site/src/locales/en/en.po\n"
|
"X-Crowdin-File: /main/internal/site/src/locales/en/en.po\n"
|
||||||
"X-Crowdin-File-ID: 16\n"
|
"X-Crowdin-File-ID: 32\n"
|
||||||
|
|
||||||
#. placeholder {0}: Math.trunc(system.info?.u / 86400)
|
|
||||||
#: src/components/routes/system.tsx
|
|
||||||
msgid "{0, plural, one {# day} other {# days}}"
|
|
||||||
msgstr "{0, plural, one {# 天} other {# 天}}"
|
|
||||||
|
|
||||||
#. placeholder {0}: Math.trunc(system.info.u / 3600)
|
|
||||||
#: src/components/routes/system.tsx
|
|
||||||
msgid "{0, plural, one {# hour} other {# hours}}"
|
|
||||||
msgstr "{0, plural, one {# 小时} other {# 小时}}"
|
|
||||||
|
|
||||||
#. placeholder {0}: Math.trunc(system.info.u / 60)
|
|
||||||
#: src/components/routes/system.tsx
|
|
||||||
msgid "{0, plural, one {# minute} few {# minutes} many {# minutes} other {# minutes}}"
|
|
||||||
msgstr "{0, plural, one {# 分钟} few {# 分钟} many {# 分钟} other {# 分钟}}"
|
|
||||||
|
|
||||||
#. placeholder {0}: table.getFilteredSelectedRowModel().rows.length
|
#. placeholder {0}: table.getFilteredSelectedRowModel().rows.length
|
||||||
#. placeholder {1}: table.getFilteredRowModel().rows.length
|
#. placeholder {1}: table.getFilteredRowModel().rows.length
|
||||||
@@ -39,6 +24,18 @@ msgstr "{0, plural, one {# 分钟} few {# 分钟} many {# 分钟} other {# 分
|
|||||||
msgid "{0} of {1} row(s) selected."
|
msgid "{0} of {1} row(s) selected."
|
||||||
msgstr "已选择 {0} / {1} 行"
|
msgstr "已选择 {0} / {1} 行"
|
||||||
|
|
||||||
|
#: src/lib/utils.ts
|
||||||
|
msgid "{count, plural, one {{countString} day} other {{countString} days}}"
|
||||||
|
msgstr "{count, plural, one {{countString} 天} other {{countString} 天}}"
|
||||||
|
|
||||||
|
#: src/lib/utils.ts
|
||||||
|
msgid "{count, plural, one {{countString} hour} other {{countString} hours}}"
|
||||||
|
msgstr "{count, plural, one {{countString} 小时} other {{countString} 小时}}"
|
||||||
|
|
||||||
|
#: src/lib/utils.ts
|
||||||
|
msgid "{count, plural, one {{countString} minute} few {{countString} minutes} many {{countString} minutes} other {{countString} minutes}}"
|
||||||
|
msgstr "{count, plural, one {{countString} 分钟} few {{countString} 分钟} many {{countString} 分钟} other {{countString} 分钟}}"
|
||||||
|
|
||||||
#: src/lib/utils.ts
|
#: src/lib/utils.ts
|
||||||
msgid "1 hour"
|
msgid "1 hour"
|
||||||
msgstr "1 小时"
|
msgstr "1 小时"
|
||||||
@@ -48,6 +45,10 @@ msgstr "1 小时"
|
|||||||
msgid "1 min"
|
msgid "1 min"
|
||||||
msgstr "1 分钟"
|
msgstr "1 分钟"
|
||||||
|
|
||||||
|
#: src/lib/utils.ts
|
||||||
|
msgid "1 minute"
|
||||||
|
msgstr "1 分钟"
|
||||||
|
|
||||||
#: src/lib/utils.ts
|
#: src/lib/utils.ts
|
||||||
msgid "1 week"
|
msgid "1 week"
|
||||||
msgstr "1 周"
|
msgstr "1 周"
|
||||||
@@ -75,27 +76,36 @@ msgid "5 min"
|
|||||||
msgstr "5 分钟"
|
msgstr "5 分钟"
|
||||||
|
|
||||||
#. Table column
|
#. Table column
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
msgid "Actions"
|
msgid "Actions"
|
||||||
msgstr "操作"
|
msgstr "操作"
|
||||||
|
|
||||||
#: src/components/alerts-history-columns.tsx
|
#: src/components/alerts-history-columns.tsx
|
||||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
msgid "Active"
|
msgid "Active"
|
||||||
msgstr "活跃"
|
msgstr "活跃"
|
||||||
|
|
||||||
#: src/components/routes/home.tsx
|
#: src/components/active-alerts.tsx
|
||||||
msgid "Active Alerts"
|
msgid "Active Alerts"
|
||||||
msgstr "启用的警报"
|
msgstr "启用的警报"
|
||||||
|
|
||||||
#: src/components/add-system.tsx
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
msgid "Add <0>System</0>"
|
msgid "Active state"
|
||||||
msgstr "添加<0>客户端</0>"
|
msgstr "活动状态"
|
||||||
|
|
||||||
#: src/components/add-system.tsx
|
#: src/components/add-system.tsx
|
||||||
msgid "Add New System"
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
msgstr "添加新客户端"
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "Add {foo}"
|
||||||
|
msgstr "添加 {foo}"
|
||||||
|
|
||||||
|
#: src/components/add-system.tsx
|
||||||
|
msgid "Add <0>System</0>"
|
||||||
|
msgstr "<0>添加客户端</0>"
|
||||||
|
|
||||||
#: src/components/add-system.tsx
|
#: src/components/add-system.tsx
|
||||||
msgid "Add system"
|
msgid "Add system"
|
||||||
@@ -109,11 +119,19 @@ msgstr "添加 URL"
|
|||||||
msgid "Adjust display options for charts."
|
msgid "Adjust display options for charts."
|
||||||
msgstr "调整图表的显示选项。"
|
msgstr "调整图表的显示选项。"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/general.tsx
|
||||||
|
msgid "Adjust the width of the main layout"
|
||||||
|
msgstr "调整主布局宽度"
|
||||||
|
|
||||||
#: src/components/command-palette.tsx
|
#: src/components/command-palette.tsx
|
||||||
#: src/components/command-palette.tsx
|
#: src/components/command-palette.tsx
|
||||||
msgid "Admin"
|
msgid "Admin"
|
||||||
msgstr "管理员"
|
msgstr "管理员"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "After"
|
||||||
|
msgstr "之后"
|
||||||
|
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
msgid "Agent"
|
msgid "Agent"
|
||||||
msgstr "客户端"
|
msgstr "客户端"
|
||||||
@@ -129,7 +147,16 @@ msgstr "警报历史"
|
|||||||
msgid "Alerts"
|
msgid "Alerts"
|
||||||
msgstr "警报"
|
msgstr "警报"
|
||||||
|
|
||||||
|
#: src/components/command-palette.tsx
|
||||||
|
#: src/components/containers-table/containers-table.tsx
|
||||||
|
#: src/components/routes/containers.tsx
|
||||||
|
msgid "All Containers"
|
||||||
|
msgstr "所有容器"
|
||||||
|
|
||||||
#: src/components/alerts/alerts-sheet.tsx
|
#: src/components/alerts/alerts-sheet.tsx
|
||||||
|
#: src/components/command-palette.tsx
|
||||||
|
#: src/components/routes/home.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
#: src/components/systems-table/systems-table.tsx
|
#: src/components/systems-table/systems-table.tsx
|
||||||
#: src/components/systems-table/systems-table.tsx
|
#: src/components/systems-table/systems-table.tsx
|
||||||
msgid "All Systems"
|
msgid "All Systems"
|
||||||
@@ -191,6 +218,18 @@ msgstr "带宽"
|
|||||||
msgid "Battery"
|
msgid "Battery"
|
||||||
msgstr "电池"
|
msgstr "电池"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Became active"
|
||||||
|
msgstr "变为活动"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Became inactive"
|
||||||
|
msgstr "变为非活动"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Before"
|
||||||
|
msgstr "之前"
|
||||||
|
|
||||||
#: src/components/login/auth-form.tsx
|
#: src/components/login/auth-form.tsx
|
||||||
msgid "Beszel supports OpenID Connect and many OAuth2 authentication providers."
|
msgid "Beszel supports OpenID Connect and many OAuth2 authentication providers."
|
||||||
msgstr "Beszel 支持 OpenID Connect 和其他 OAuth2 认证方式。"
|
msgstr "Beszel 支持 OpenID Connect 和其他 OAuth2 认证方式。"
|
||||||
@@ -208,6 +247,10 @@ msgstr "二进制"
|
|||||||
msgid "Bits (Kbps, Mbps, Gbps)"
|
msgid "Bits (Kbps, Mbps, Gbps)"
|
||||||
msgstr "比特 (Kbps, Mbps, Gbps)"
|
msgstr "比特 (Kbps, Mbps, Gbps)"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Boot state"
|
||||||
|
msgstr "启动状态"
|
||||||
|
|
||||||
#: src/components/routes/settings/general.tsx
|
#: src/components/routes/settings/general.tsx
|
||||||
#: src/components/routes/settings/general.tsx
|
#: src/components/routes/settings/general.tsx
|
||||||
msgid "Bytes (KB/s, MB/s, GB/s)"
|
msgid "Bytes (KB/s, MB/s, GB/s)"
|
||||||
@@ -217,11 +260,32 @@ msgstr "字节 (KB/s, MB/s, GB/s)"
|
|||||||
msgid "Cache / Buffers"
|
msgid "Cache / Buffers"
|
||||||
msgstr "缓存/缓冲区"
|
msgstr "缓存/缓冲区"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Can reload"
|
||||||
|
msgstr "可重载"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Can start"
|
||||||
|
msgstr "可启动"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Can stop"
|
||||||
|
msgstr "可停止"
|
||||||
|
|
||||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "取消"
|
msgstr "取消"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Capabilities"
|
||||||
|
msgstr "能力"
|
||||||
|
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
msgid "Capacity"
|
||||||
|
msgstr "容量"
|
||||||
|
|
||||||
#: src/components/routes/settings/config-yaml.tsx
|
#: src/components/routes/settings/config-yaml.tsx
|
||||||
msgid "Caution - potential data loss"
|
msgid "Caution - potential data loss"
|
||||||
msgstr "注意 - 数据可能已经丢失"
|
msgstr "注意 - 数据可能已经丢失"
|
||||||
@@ -263,6 +327,20 @@ msgstr "检查日志以获取更多详细信息。"
|
|||||||
msgid "Check your notification service"
|
msgid "Check your notification service"
|
||||||
msgstr "检查您的通知服务"
|
msgstr "检查您的通知服务"
|
||||||
|
|
||||||
|
#: src/components/containers-table/containers-table.tsx
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
#: src/components/systems-table/systems-table.tsx
|
||||||
|
msgid "Clear"
|
||||||
|
msgstr "清除"
|
||||||
|
|
||||||
|
#: src/components/containers-table/containers-table.tsx
|
||||||
|
msgid "Click on a container to view more information."
|
||||||
|
msgstr "点击容器查看更多信息。"
|
||||||
|
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
msgid "Click on a device to view more information."
|
||||||
|
msgstr "点击设备查看更多信息。"
|
||||||
|
|
||||||
#: src/components/systems-table/systems-table.tsx
|
#: src/components/systems-table/systems-table.tsx
|
||||||
msgid "Click on a system to view more information."
|
msgid "Click on a system to view more information."
|
||||||
msgstr "点击系统查看更多信息。"
|
msgstr "点击系统查看更多信息。"
|
||||||
@@ -285,7 +363,11 @@ msgstr "配置您接收警报通知的方式。"
|
|||||||
msgid "Confirm password"
|
msgid "Confirm password"
|
||||||
msgstr "确认密码"
|
msgstr "确认密码"
|
||||||
|
|
||||||
#: src/components/routes/home.tsx
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Conflicts"
|
||||||
|
msgstr "冲突"
|
||||||
|
|
||||||
|
#: src/components/active-alerts.tsx
|
||||||
msgid "Connection is down"
|
msgid "Connection is down"
|
||||||
msgstr "连接已断开"
|
msgstr "连接已断开"
|
||||||
|
|
||||||
@@ -344,16 +426,39 @@ msgstr "复制下面的客户端<0>docker-compose.yml</0>内容,或使用<1>
|
|||||||
msgid "Copy YAML"
|
msgid "Copy YAML"
|
||||||
msgstr "复制 YAML"
|
msgstr "复制 YAML"
|
||||||
|
|
||||||
|
#: src/components/containers-table/containers-table-columns.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table-columns.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
msgid "CPU"
|
msgid "CPU"
|
||||||
msgstr "CPU"
|
msgstr "CPU"
|
||||||
|
|
||||||
|
#: src/components/routes/system/cpu-sheet.tsx
|
||||||
|
msgid "CPU Cores"
|
||||||
|
msgstr "CPU 核心"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table-columns.tsx
|
||||||
|
msgid "CPU Peak"
|
||||||
|
msgstr "CPU 峰值"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "CPU time"
|
||||||
|
msgstr "CPU 时间"
|
||||||
|
|
||||||
|
#: src/components/routes/system/cpu-sheet.tsx
|
||||||
|
msgid "CPU Time Breakdown"
|
||||||
|
msgstr "CPU 时间细分"
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
|
#: src/components/routes/system/cpu-sheet.tsx
|
||||||
#: src/lib/alerts.ts
|
#: src/lib/alerts.ts
|
||||||
msgid "CPU Usage"
|
msgid "CPU Usage"
|
||||||
msgstr "CPU 使用率"
|
msgstr "CPU 使用率"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "Create"
|
||||||
|
msgstr "创建"
|
||||||
|
|
||||||
#: src/components/login/auth-form.tsx
|
#: src/components/login/auth-form.tsx
|
||||||
msgid "Create account"
|
msgid "Create account"
|
||||||
msgstr "创建账户"
|
msgstr "创建账户"
|
||||||
@@ -380,16 +485,23 @@ msgstr "累计上传"
|
|||||||
msgid "Current state"
|
msgid "Current state"
|
||||||
msgstr "当前状态"
|
msgstr "当前状态"
|
||||||
|
|
||||||
#: src/components/command-palette.tsx
|
#. Power Cycles
|
||||||
#: src/components/routes/home.tsx
|
#: src/components/routes/system/smart-table.tsx
|
||||||
msgid "Dashboard"
|
msgid "Cycles"
|
||||||
msgstr "仪表板"
|
msgstr "循环次数"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "Daily"
|
||||||
|
msgstr "每日"
|
||||||
|
|
||||||
#: src/components/routes/settings/general.tsx
|
#: src/components/routes/settings/general.tsx
|
||||||
msgid "Default time period"
|
msgid "Default time period"
|
||||||
msgstr "默认时间段"
|
msgstr "默认时间段"
|
||||||
|
|
||||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
msgid "Delete"
|
msgid "Delete"
|
||||||
msgstr "删除"
|
msgstr "删除"
|
||||||
@@ -398,6 +510,18 @@ msgstr "删除"
|
|||||||
msgid "Delete fingerprint"
|
msgid "Delete fingerprint"
|
||||||
msgstr "删除指纹"
|
msgstr "删除指纹"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Description"
|
||||||
|
msgstr "描述"
|
||||||
|
|
||||||
|
#: src/components/containers-table/containers-table.tsx
|
||||||
|
msgid "Detail"
|
||||||
|
msgstr "详情"
|
||||||
|
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
msgid "Device"
|
||||||
|
msgstr "设备"
|
||||||
|
|
||||||
#. Context: Battery state
|
#. Context: Battery state
|
||||||
#: src/lib/i18n.ts
|
#: src/lib/i18n.ts
|
||||||
msgid "Discharging"
|
msgid "Discharging"
|
||||||
@@ -438,6 +562,7 @@ msgid "Docker Network I/O"
|
|||||||
msgstr "Docker 网络 I/O"
|
msgstr "Docker 网络 I/O"
|
||||||
|
|
||||||
#: src/components/command-palette.tsx
|
#: src/components/command-palette.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
msgid "Documentation"
|
msgid "Documentation"
|
||||||
msgstr "文档"
|
msgstr "文档"
|
||||||
|
|
||||||
@@ -461,11 +586,16 @@ msgstr "下载"
|
|||||||
msgid "Duration"
|
msgid "Duration"
|
||||||
msgstr "持续时间"
|
msgstr "持续时间"
|
||||||
|
|
||||||
#: src/components/add-system.tsx
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
msgid "Edit"
|
msgid "Edit"
|
||||||
msgstr "编辑"
|
msgstr "编辑"
|
||||||
|
|
||||||
|
#: src/components/add-system.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "Edit {foo}"
|
||||||
|
msgstr "编辑 {foo}"
|
||||||
|
|
||||||
#: src/components/login/auth-form.tsx
|
#: src/components/login/auth-form.tsx
|
||||||
#: src/components/login/forgot-pass-form.tsx
|
#: src/components/login/forgot-pass-form.tsx
|
||||||
#: src/components/login/otp-forms.tsx
|
#: src/components/login/otp-forms.tsx
|
||||||
@@ -481,6 +611,11 @@ msgstr "电子邮件通知"
|
|||||||
msgid "Empty"
|
msgid "Empty"
|
||||||
msgstr "空电"
|
msgstr "空电"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "End Time"
|
||||||
|
msgstr "结束时间"
|
||||||
|
|
||||||
#: src/components/login/login.tsx
|
#: src/components/login/login.tsx
|
||||||
msgid "Enter email address to reset password"
|
msgid "Enter email address to reset password"
|
||||||
msgstr "输入电子邮件地址以重置密码"
|
msgstr "输入电子邮件地址以重置密码"
|
||||||
@@ -497,21 +632,32 @@ msgstr "输入您的一次性密码。"
|
|||||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||||
#: src/components/routes/settings/config-yaml.tsx
|
#: src/components/routes/settings/config-yaml.tsx
|
||||||
#: src/components/routes/settings/notifications.tsx
|
#: src/components/routes/settings/notifications.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
msgid "Error"
|
msgid "Error"
|
||||||
msgstr "错误"
|
msgstr "错误"
|
||||||
|
|
||||||
#. placeholder {0}: alert.value
|
#. placeholder {0}: alert.value
|
||||||
#. placeholder {1}: info.unit
|
#. placeholder {1}: info.unit
|
||||||
#. placeholder {2}: alert.min
|
#. placeholder {2}: alert.min
|
||||||
#: src/components/routes/home.tsx
|
#: src/components/active-alerts.tsx
|
||||||
msgid "Exceeds {0}{1} in last {2, plural, one {# minute} other {# minutes}}"
|
msgid "Exceeds {0}{1} in last {2, plural, one {# minute} other {# minutes}}"
|
||||||
msgstr "在过去的{2, plural, one {# 分钟} other {# 分钟}}中超过{0}{1}"
|
msgstr "在过去的{2, plural, one {# 分钟} other {# 分钟}}中超过{0}{1}"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Exec main PID"
|
||||||
|
msgstr "执行主进程 ID"
|
||||||
|
|
||||||
#: src/components/routes/settings/config-yaml.tsx
|
#: src/components/routes/settings/config-yaml.tsx
|
||||||
msgid "Existing systems not defined in <0>config.yml</0> will be deleted. Please make regular backups."
|
msgid "Existing systems not defined in <0>config.yml</0> will be deleted. Please make regular backups."
|
||||||
msgstr "未在<0>config.yml</0>中定义的客户端将被删除。请定期备份。"
|
msgstr "未在<0>config.yml</0>中定义的客户端将被删除。请定期备份。"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Exited active"
|
||||||
|
msgstr "退出活动状态"
|
||||||
|
|
||||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||||
msgid "Export"
|
msgid "Export"
|
||||||
msgstr "导出"
|
msgstr "导出"
|
||||||
@@ -528,12 +674,21 @@ msgstr "导出您当前的系统配置。"
|
|||||||
msgid "Fahrenheit (°F)"
|
msgid "Fahrenheit (°F)"
|
||||||
msgstr "华氏度 (°F)"
|
msgstr "华氏度 (°F)"
|
||||||
|
|
||||||
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
|
msgid "Failed"
|
||||||
|
msgstr "失败"
|
||||||
|
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
msgid "Failed Attributes:"
|
||||||
|
msgstr "失败属性:"
|
||||||
|
|
||||||
#: src/lib/api.ts
|
#: src/lib/api.ts
|
||||||
msgid "Failed to authenticate"
|
msgid "Failed to authenticate"
|
||||||
msgstr "认证失败"
|
msgstr "认证失败"
|
||||||
|
|
||||||
#: src/components/routes/settings/layout.tsx
|
#: src/components/routes/settings/layout.tsx
|
||||||
#: src/components/routes/settings/notifications.tsx
|
#: src/components/routes/settings/notifications.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
msgid "Failed to save settings"
|
msgid "Failed to save settings"
|
||||||
msgstr "保存设置失败"
|
msgstr "保存设置失败"
|
||||||
|
|
||||||
@@ -545,8 +700,16 @@ msgstr "发送测试通知失败"
|
|||||||
msgid "Failed to update alert"
|
msgid "Failed to update alert"
|
||||||
msgstr "更新警报失败"
|
msgstr "更新警报失败"
|
||||||
|
|
||||||
|
#. placeholder {0}: statusTotals[ServiceStatus.Failed]
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Failed: {0}"
|
||||||
|
msgstr "失败: {0}"
|
||||||
|
|
||||||
|
#: src/components/containers-table/containers-table.tsx
|
||||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
#: src/components/systems-table/systems-table.tsx
|
#: src/components/systems-table/systems-table.tsx
|
||||||
msgid "Filter..."
|
msgid "Filter..."
|
||||||
msgstr "过滤..."
|
msgstr "过滤..."
|
||||||
@@ -555,6 +718,10 @@ msgstr "过滤..."
|
|||||||
msgid "Fingerprint"
|
msgid "Fingerprint"
|
||||||
msgstr "指纹"
|
msgstr "指纹"
|
||||||
|
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
msgid "Firmware"
|
||||||
|
msgstr "固件"
|
||||||
|
|
||||||
#: src/components/alerts/alerts-sheet.tsx
|
#: src/components/alerts/alerts-sheet.tsx
|
||||||
msgid "For <0>{min}</0> {min, plural, one {minute} other {minutes}}"
|
msgid "For <0>{min}</0> {min, plural, one {minute} other {minutes}}"
|
||||||
msgstr "持续<0>{min}</0> {min, plural, one {分钟} other {分钟}}"
|
msgstr "持续<0>{min}</0> {min, plural, one {分钟} other {分钟}}"
|
||||||
@@ -580,6 +747,10 @@ msgstr "满电"
|
|||||||
msgid "General"
|
msgid "General"
|
||||||
msgstr "常规"
|
msgstr "常规"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "Global"
|
||||||
|
msgstr "全局"
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
msgid "GPU Engines"
|
msgid "GPU Engines"
|
||||||
msgstr "GPU 引擎"
|
msgstr "GPU 引擎"
|
||||||
@@ -588,10 +759,18 @@ msgstr "GPU 引擎"
|
|||||||
msgid "GPU Power Draw"
|
msgid "GPU Power Draw"
|
||||||
msgstr "GPU 功耗"
|
msgstr "GPU 功耗"
|
||||||
|
|
||||||
|
#: src/lib/alerts.ts
|
||||||
|
msgid "GPU Usage"
|
||||||
|
msgstr "GPU 使用率"
|
||||||
|
|
||||||
#: src/components/systems-table/systems-table.tsx
|
#: src/components/systems-table/systems-table.tsx
|
||||||
msgid "Grid"
|
msgid "Grid"
|
||||||
msgstr "网格"
|
msgstr "网格"
|
||||||
|
|
||||||
|
#: src/components/containers-table/containers-table-columns.tsx
|
||||||
|
msgid "Health"
|
||||||
|
msgstr "健康"
|
||||||
|
|
||||||
#: src/components/add-system.tsx
|
#: src/components/add-system.tsx
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
msgctxt "Button to copy install command"
|
msgctxt "Button to copy install command"
|
||||||
@@ -611,6 +790,15 @@ msgstr "闲置"
|
|||||||
msgid "If you've lost the password to your admin account, you may reset it using the following command."
|
msgid "If you've lost the password to your admin account, you may reset it using the following command."
|
||||||
msgstr "如果您丢失了管理员账户的密码,可以使用以下命令重置。"
|
msgstr "如果您丢失了管理员账户的密码,可以使用以下命令重置。"
|
||||||
|
|
||||||
|
#: src/components/containers-table/containers-table-columns.tsx
|
||||||
|
msgctxt "Docker image"
|
||||||
|
msgid "Image"
|
||||||
|
msgstr "镜像"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "Inactive"
|
||||||
|
msgstr "非活跃"
|
||||||
|
|
||||||
#: src/components/login/auth-form.tsx
|
#: src/components/login/auth-form.tsx
|
||||||
msgid "Invalid email address."
|
msgid "Invalid email address."
|
||||||
msgstr "无效的电子邮件地址。"
|
msgstr "无效的电子邮件地址。"
|
||||||
@@ -628,6 +816,19 @@ msgstr "语言"
|
|||||||
msgid "Layout"
|
msgid "Layout"
|
||||||
msgstr "布局"
|
msgstr "布局"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/general.tsx
|
||||||
|
msgid "Layout width"
|
||||||
|
msgstr "布局宽度"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Lifecycle"
|
||||||
|
msgstr "生命周期"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "limit"
|
||||||
|
msgstr "限制"
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
msgid "Load Average"
|
msgid "Load Average"
|
||||||
msgstr "系统负载"
|
msgstr "系统负载"
|
||||||
@@ -649,6 +850,14 @@ msgstr "5 分钟内的平均负载"
|
|||||||
msgid "Load Avg"
|
msgid "Load Avg"
|
||||||
msgstr "负载"
|
msgstr "负载"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Load state"
|
||||||
|
msgstr "加载状态"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Loading..."
|
||||||
|
msgstr "加载中..."
|
||||||
|
|
||||||
#: src/components/navbar.tsx
|
#: src/components/navbar.tsx
|
||||||
msgid "Log Out"
|
msgid "Log Out"
|
||||||
msgstr "登出"
|
msgstr "登出"
|
||||||
@@ -663,6 +872,7 @@ msgid "Login attempt failed"
|
|||||||
msgstr "登录尝试失败"
|
msgstr "登录尝试失败"
|
||||||
|
|
||||||
#: src/components/command-palette.tsx
|
#: src/components/command-palette.tsx
|
||||||
|
#: src/components/containers-table/containers-table.tsx
|
||||||
#: src/components/navbar.tsx
|
#: src/components/navbar.tsx
|
||||||
msgid "Logs"
|
msgid "Logs"
|
||||||
msgstr "日志"
|
msgstr "日志"
|
||||||
@@ -671,6 +881,10 @@ msgstr "日志"
|
|||||||
msgid "Looking instead for where to create alerts? Click the bell <0/> icons in the systems table."
|
msgid "Looking instead for where to create alerts? Click the bell <0/> icons in the systems table."
|
||||||
msgstr "在寻找创建警报的位置吗?点击系统表中的铃铛<0/>图标。"
|
msgstr "在寻找创建警报的位置吗?点击系统表中的铃铛<0/>图标。"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Main PID"
|
||||||
|
msgstr "主进程 ID"
|
||||||
|
|
||||||
#: src/components/routes/settings/layout.tsx
|
#: src/components/routes/settings/layout.tsx
|
||||||
msgid "Manage display and notification preferences."
|
msgid "Manage display and notification preferences."
|
||||||
msgstr "管理显示和通知偏好。"
|
msgstr "管理显示和通知偏好。"
|
||||||
@@ -685,10 +899,22 @@ msgstr "手动设置说明"
|
|||||||
msgid "Max 1 min"
|
msgid "Max 1 min"
|
||||||
msgstr "1分钟内最大值"
|
msgstr "1分钟内最大值"
|
||||||
|
|
||||||
|
#: src/components/containers-table/containers-table-columns.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table-columns.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
msgid "Memory"
|
msgid "Memory"
|
||||||
msgstr "内存"
|
msgstr "内存"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Memory limit"
|
||||||
|
msgstr "内存限制"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table-columns.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Memory Peak"
|
||||||
|
msgstr "内存峰值"
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
#: src/lib/alerts.ts
|
#: src/lib/alerts.ts
|
||||||
msgid "Memory Usage"
|
msgid "Memory Usage"
|
||||||
@@ -698,11 +924,19 @@ msgstr "内存使用率"
|
|||||||
msgid "Memory usage of docker containers"
|
msgid "Memory usage of docker containers"
|
||||||
msgstr "Docker 容器的内存使用率"
|
msgstr "Docker 容器的内存使用率"
|
||||||
|
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
msgid "Model"
|
||||||
|
msgstr "型号"
|
||||||
|
|
||||||
#: src/components/add-system.tsx
|
#: src/components/add-system.tsx
|
||||||
#: src/components/alerts-history-columns.tsx
|
#: src/components/alerts-history-columns.tsx
|
||||||
|
#: src/components/containers-table/containers-table-columns.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table-columns.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
msgid "Name"
|
msgid "Name"
|
||||||
msgstr "名称"
|
msgstr "名称"
|
||||||
|
|
||||||
|
#: src/components/containers-table/containers-table-columns.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
msgid "Net"
|
msgid "Net"
|
||||||
msgstr "网络"
|
msgstr "网络"
|
||||||
@@ -714,6 +948,7 @@ msgstr "Docker 容器的网络流量"
|
|||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
#: src/components/routes/system/network-sheet.tsx
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
#: src/components/routes/system/network-sheet.tsx
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
msgid "Network traffic of public interfaces"
|
msgid "Network traffic of public interfaces"
|
||||||
msgstr "公共接口的网络流量"
|
msgstr "公共接口的网络流量"
|
||||||
|
|
||||||
@@ -722,14 +957,30 @@ msgstr "公共接口的网络流量"
|
|||||||
msgid "Network unit"
|
msgid "Network unit"
|
||||||
msgstr "网络单位"
|
msgstr "网络单位"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "No"
|
||||||
|
msgstr "否"
|
||||||
|
|
||||||
#: src/components/command-palette.tsx
|
#: src/components/command-palette.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
msgid "No results found."
|
msgid "No results found."
|
||||||
msgstr "未找到结果。"
|
msgstr "未找到结果。"
|
||||||
|
|
||||||
|
#: src/components/containers-table/containers-table.tsx
|
||||||
|
#: src/components/containers-table/containers-table.tsx
|
||||||
|
#: src/components/containers-table/containers-table.tsx
|
||||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
msgid "No results."
|
msgid "No results."
|
||||||
msgstr "无结果。"
|
msgstr "无结果。"
|
||||||
|
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
msgid "No S.M.A.R.T. attributes available for this device."
|
||||||
|
msgstr "此设备没有可用的 S.M.A.R.T. 属性。"
|
||||||
|
|
||||||
#: src/components/systems-table/systems-table.tsx
|
#: src/components/systems-table/systems-table.tsx
|
||||||
#: src/components/systems-table/systems-table.tsx
|
#: src/components/systems-table/systems-table.tsx
|
||||||
msgid "No systems found."
|
msgid "No systems found."
|
||||||
@@ -749,12 +1000,19 @@ msgstr "支持 OAuth 2/OIDC"
|
|||||||
msgid "On each restart, systems in the database will be updated to match the systems defined in the file."
|
msgid "On each restart, systems in the database will be updated to match the systems defined in the file."
|
||||||
msgstr "每次重启时,数据库中的系统将更新以匹配文件中定义的系统。"
|
msgstr "每次重启时,数据库中的系统将更新以匹配文件中定义的系统。"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "One-time"
|
||||||
|
msgstr "一次性"
|
||||||
|
|
||||||
#: src/components/login/auth-form.tsx
|
#: src/components/login/auth-form.tsx
|
||||||
msgid "One-time password"
|
msgid "One-time password"
|
||||||
msgstr "一次性密码"
|
msgstr "一次性密码"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
msgid "Open menu"
|
msgid "Open menu"
|
||||||
msgstr "打开菜单"
|
msgstr "打开菜单"
|
||||||
@@ -763,10 +1021,16 @@ msgstr "打开菜单"
|
|||||||
msgid "Or continue with"
|
msgid "Or continue with"
|
||||||
msgstr "或使用以下方式登录"
|
msgstr "或使用以下方式登录"
|
||||||
|
|
||||||
|
#: src/components/routes/system/cpu-sheet.tsx
|
||||||
|
msgid "Other"
|
||||||
|
msgstr "其他"
|
||||||
|
|
||||||
#: src/components/alerts/alerts-sheet.tsx
|
#: src/components/alerts/alerts-sheet.tsx
|
||||||
msgid "Overwrite existing alerts"
|
msgid "Overwrite existing alerts"
|
||||||
msgstr "覆盖现有警报"
|
msgstr "覆盖现有警报"
|
||||||
|
|
||||||
|
#: src/components/command-palette.tsx
|
||||||
|
#: src/components/command-palette.tsx
|
||||||
#: src/components/command-palette.tsx
|
#: src/components/command-palette.tsx
|
||||||
msgid "Page"
|
msgid "Page"
|
||||||
msgstr "页面"
|
msgstr "页面"
|
||||||
@@ -798,6 +1062,10 @@ msgstr "密码必须小于 72 字节。"
|
|||||||
msgid "Password reset request received"
|
msgid "Password reset request received"
|
||||||
msgstr "已收到密码重置请求"
|
msgstr "已收到密码重置请求"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "Past"
|
||||||
|
msgstr "过去"
|
||||||
|
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
msgid "Pause"
|
msgid "Pause"
|
||||||
msgstr "暂停"
|
msgstr "暂停"
|
||||||
@@ -810,6 +1078,15 @@ msgstr "已暂停"
|
|||||||
msgid "Paused ({pausedSystemsLength})"
|
msgid "Paused ({pausedSystemsLength})"
|
||||||
msgstr "已暂停 ({pausedSystemsLength})"
|
msgstr "已暂停 ({pausedSystemsLength})"
|
||||||
|
|
||||||
|
#: src/components/routes/system/cpu-sheet.tsx
|
||||||
|
#: src/components/routes/system/cpu-sheet.tsx
|
||||||
|
msgid "Per-core average utilization"
|
||||||
|
msgstr "每个核心的平均利用率"
|
||||||
|
|
||||||
|
#: src/components/routes/system/cpu-sheet.tsx
|
||||||
|
msgid "Percentage of time spent in each state"
|
||||||
|
msgstr "在每个状态下花费的时间百分比"
|
||||||
|
|
||||||
#: src/components/routes/settings/notifications.tsx
|
#: src/components/routes/settings/notifications.tsx
|
||||||
msgid "Please <0>configure an SMTP server</0> to ensure alerts are delivered."
|
msgid "Please <0>configure an SMTP server</0> to ensure alerts are delivered."
|
||||||
msgstr "请<0>配置 SMTP 服务器</0>以确保警报被传递。"
|
msgstr "请<0>配置 SMTP 服务器</0>以确保警报被传递。"
|
||||||
@@ -847,6 +1124,11 @@ msgstr "请登录您的账户"
|
|||||||
msgid "Port"
|
msgid "Port"
|
||||||
msgstr "端口"
|
msgstr "端口"
|
||||||
|
|
||||||
|
#. Power On Time
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
msgid "Power On"
|
||||||
|
msgstr "开机时间"
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
msgid "Precise utilization at the recorded time"
|
msgid "Precise utilization at the recorded time"
|
||||||
@@ -856,11 +1138,19 @@ msgstr "采集时间下的精确内存使用率"
|
|||||||
msgid "Preferred Language"
|
msgid "Preferred Language"
|
||||||
msgstr "首选语言"
|
msgstr "首选语言"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Process started"
|
||||||
|
msgstr "进程启动"
|
||||||
|
|
||||||
#. Use 'Key' if your language requires many more characters
|
#. Use 'Key' if your language requires many more characters
|
||||||
#: src/components/add-system.tsx
|
#: src/components/add-system.tsx
|
||||||
msgid "Public Key"
|
msgid "Public Key"
|
||||||
msgstr "公钥"
|
msgstr "公钥"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "Quiet Hours"
|
||||||
|
msgstr "静默时间"
|
||||||
|
|
||||||
#. Disk read
|
#. Disk read
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
@@ -871,6 +1161,16 @@ msgstr "读取"
|
|||||||
msgid "Received"
|
msgid "Received"
|
||||||
msgstr "接收"
|
msgstr "接收"
|
||||||
|
|
||||||
|
#: src/components/containers-table/containers-table.tsx
|
||||||
|
#: src/components/containers-table/containers-table.tsx
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
msgid "Refresh"
|
||||||
|
msgstr "刷新"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Relationships"
|
||||||
|
msgstr "关系"
|
||||||
|
|
||||||
#: src/components/login/login.tsx
|
#: src/components/login/login.tsx
|
||||||
msgid "Request a one-time password"
|
msgid "Request a one-time password"
|
||||||
msgstr "请求一次性密码"
|
msgstr "请求一次性密码"
|
||||||
@@ -879,6 +1179,14 @@ msgstr "请求一次性密码"
|
|||||||
msgid "Request OTP"
|
msgid "Request OTP"
|
||||||
msgstr "请求 OTP"
|
msgstr "请求 OTP"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Required by"
|
||||||
|
msgstr "被需要"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Requires"
|
||||||
|
msgstr "需要"
|
||||||
|
|
||||||
#: src/components/login/forgot-pass-form.tsx
|
#: src/components/login/forgot-pass-form.tsx
|
||||||
msgid "Reset Password"
|
msgid "Reset Password"
|
||||||
msgstr "重置密码"
|
msgstr "重置密码"
|
||||||
@@ -889,10 +1197,19 @@ msgstr "重置密码"
|
|||||||
msgid "Resolved"
|
msgid "Resolved"
|
||||||
msgstr "已解决"
|
msgstr "已解决"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Restarts"
|
||||||
|
msgstr "重启次数"
|
||||||
|
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
msgid "Resume"
|
msgid "Resume"
|
||||||
msgstr "恢复"
|
msgstr "恢复"
|
||||||
|
|
||||||
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
|
msgctxt "Root disk label"
|
||||||
|
msgid "Root"
|
||||||
|
msgstr "根"
|
||||||
|
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
msgid "Rotate token"
|
msgid "Rotate token"
|
||||||
msgstr "轮换令牌"
|
msgstr "轮换令牌"
|
||||||
@@ -901,6 +1218,18 @@ msgstr "轮换令牌"
|
|||||||
msgid "Rows per page"
|
msgid "Rows per page"
|
||||||
msgstr "每页行数"
|
msgstr "每页行数"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Runtime Metrics"
|
||||||
|
msgstr "运行时指标"
|
||||||
|
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
msgid "S.M.A.R.T. Details"
|
||||||
|
msgstr "S.M.A.R.T. 详情"
|
||||||
|
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
msgid "S.M.A.R.T. Self-Test"
|
||||||
|
msgstr "S.M.A.R.T. 自检"
|
||||||
|
|
||||||
#: src/components/routes/settings/notifications.tsx
|
#: src/components/routes/settings/notifications.tsx
|
||||||
msgid "Save address using enter key or comma. Leave blank to disable email notifications."
|
msgid "Save address using enter key or comma. Leave blank to disable email notifications."
|
||||||
msgstr "使用回车键或逗号保存地址。留空以禁用电子邮件通知。"
|
msgstr "使用回车键或逗号保存地址。留空以禁用电子邮件通知。"
|
||||||
@@ -914,6 +1243,18 @@ msgstr "保存设置"
|
|||||||
msgid "Save system"
|
msgid "Save system"
|
||||||
msgstr "保存系统"
|
msgstr "保存系统"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "Schedule"
|
||||||
|
msgstr "计划"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "Schedule quiet hours where notifications will not be sent, such as during maintenance periods."
|
||||||
|
msgstr "安排静默时间,在此期间不会发送通知,例如在维护期间。"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "Schedule quiet hours where notifications will not be sent."
|
||||||
|
msgstr "安排静默时间,在此期间不会发送通知。"
|
||||||
|
|
||||||
#: src/components/navbar.tsx
|
#: src/components/navbar.tsx
|
||||||
msgid "Search"
|
msgid "Search"
|
||||||
msgstr "搜索"
|
msgstr "搜索"
|
||||||
@@ -926,10 +1267,26 @@ msgstr "搜索系统或设置..."
|
|||||||
msgid "See <0>notification settings</0> to configure how you receive alerts."
|
msgid "See <0>notification settings</0> to configure how you receive alerts."
|
||||||
msgstr "查看<0>通知设置</0>以配置您接收警报的方式。"
|
msgstr "查看<0>通知设置</0>以配置您接收警报的方式。"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "Select {foo}"
|
||||||
|
msgstr "选择 {foo}"
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
msgid "Sent"
|
msgid "Sent"
|
||||||
msgstr "发送"
|
msgstr "发送"
|
||||||
|
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
msgid "Serial Number"
|
||||||
|
msgstr "序列号"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Service Details"
|
||||||
|
msgstr "服务详情"
|
||||||
|
|
||||||
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
|
msgid "Services"
|
||||||
|
msgstr "服务"
|
||||||
|
|
||||||
#: src/components/routes/settings/general.tsx
|
#: src/components/routes/settings/general.tsx
|
||||||
msgid "Set percentage thresholds for meter colors."
|
msgid "Set percentage thresholds for meter colors."
|
||||||
msgstr "设置仪表颜色的百分比阈值。"
|
msgstr "设置仪表颜色的百分比阈值。"
|
||||||
@@ -957,16 +1314,30 @@ msgstr "SMTP 设置"
|
|||||||
msgid "Sort By"
|
msgid "Sort By"
|
||||||
msgstr "排序依据"
|
msgstr "排序依据"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "Start Time"
|
||||||
|
msgstr "开始时间"
|
||||||
|
|
||||||
#. Context: alert state (active or resolved)
|
#. Context: alert state (active or resolved)
|
||||||
#: src/components/alerts-history-columns.tsx
|
#: src/components/alerts-history-columns.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table-columns.tsx
|
||||||
msgid "State"
|
msgid "State"
|
||||||
msgstr "状态"
|
msgstr "状态"
|
||||||
|
|
||||||
|
#: src/components/containers-table/containers-table-columns.tsx
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
#: src/components/systems-table/systems-table.tsx
|
#: src/components/systems-table/systems-table.tsx
|
||||||
#: src/lib/alerts.ts
|
#: src/lib/alerts.ts
|
||||||
msgid "Status"
|
msgid "Status"
|
||||||
msgstr "状态"
|
msgstr "状态"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table-columns.tsx
|
||||||
|
msgid "Sub State"
|
||||||
|
msgstr "子状态"
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
msgid "Swap space used by the system"
|
msgid "Swap space used by the system"
|
||||||
msgstr "系统使用的 SWAP 空间"
|
msgstr "系统使用的 SWAP 空间"
|
||||||
@@ -975,8 +1346,15 @@ msgstr "系统使用的 SWAP 空间"
|
|||||||
msgid "Swap Usage"
|
msgid "Swap Usage"
|
||||||
msgstr "SWAP 使用率"
|
msgstr "SWAP 使用率"
|
||||||
|
|
||||||
|
#: src/components/add-system.tsx
|
||||||
#: src/components/alerts-history-columns.tsx
|
#: src/components/alerts-history-columns.tsx
|
||||||
|
#: src/components/containers-table/containers-table-columns.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
#: src/lib/alerts.ts
|
#: src/lib/alerts.ts
|
||||||
msgid "System"
|
msgid "System"
|
||||||
@@ -986,6 +1364,10 @@ msgstr "系统"
|
|||||||
msgid "System load averages over time"
|
msgid "System load averages over time"
|
||||||
msgstr "系统负载平均值随时间变化"
|
msgstr "系统负载平均值随时间变化"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Systemd Services"
|
||||||
|
msgstr "Systemd 服务"
|
||||||
|
|
||||||
#: src/components/navbar.tsx
|
#: src/components/navbar.tsx
|
||||||
msgid "Systems"
|
msgid "Systems"
|
||||||
msgstr "系统"
|
msgstr "系统"
|
||||||
@@ -998,7 +1380,12 @@ msgstr "系统可以在数据目录中的<0>config.yml</0>文件中管理。"
|
|||||||
msgid "Table"
|
msgid "Table"
|
||||||
msgstr "表格"
|
msgstr "表格"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Tasks"
|
||||||
|
msgstr "任务数"
|
||||||
|
|
||||||
#. Temperature label in systems table
|
#. Temperature label in systems table
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
msgid "Temp"
|
msgid "Temp"
|
||||||
msgstr "温度"
|
msgstr "温度"
|
||||||
@@ -1080,6 +1467,11 @@ msgstr "令牌允许客户端连接和注册。指纹是每个系统唯一的稳
|
|||||||
msgid "Tokens and fingerprints are used to authenticate WebSocket connections to the hub."
|
msgid "Tokens and fingerprints are used to authenticate WebSocket connections to the hub."
|
||||||
msgstr "令牌与指纹用于验证到中心的 WebSocket 连接。"
|
msgstr "令牌与指纹用于验证到中心的 WebSocket 连接。"
|
||||||
|
|
||||||
|
#: src/components/ui/chart.tsx
|
||||||
|
#: src/components/ui/chart.tsx
|
||||||
|
msgid "Total"
|
||||||
|
msgstr "总计"
|
||||||
|
|
||||||
#: src/components/routes/system/network-sheet.tsx
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
msgid "Total data received for each interface"
|
msgid "Total data received for each interface"
|
||||||
msgstr "每个接口的总接收数据量"
|
msgstr "每个接口的总接收数据量"
|
||||||
@@ -1088,6 +1480,19 @@ msgstr "每个接口的总接收数据量"
|
|||||||
msgid "Total data sent for each interface"
|
msgid "Total data sent for each interface"
|
||||||
msgstr "每个接口的总发送数据量"
|
msgstr "每个接口的总发送数据量"
|
||||||
|
|
||||||
|
#. placeholder {0}: data.length
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Total: {0}"
|
||||||
|
msgstr "总计: {0}"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Triggered by"
|
||||||
|
msgstr "由...触发"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Triggers"
|
||||||
|
msgstr "触发器"
|
||||||
|
|
||||||
#: src/lib/alerts.ts
|
#: src/lib/alerts.ts
|
||||||
msgid "Triggers when 1 minute load average exceeds a threshold"
|
msgid "Triggers when 1 minute load average exceeds a threshold"
|
||||||
msgstr "当 1 分钟负载平均值超过阈值时触发"
|
msgstr "当 1 分钟负载平均值超过阈值时触发"
|
||||||
@@ -1112,6 +1517,10 @@ msgstr "当网络的上/下行速度超过阈值时触发"
|
|||||||
msgid "Triggers when CPU usage exceeds a threshold"
|
msgid "Triggers when CPU usage exceeds a threshold"
|
||||||
msgstr "当 CPU 使用率超过阈值时触发"
|
msgstr "当 CPU 使用率超过阈值时触发"
|
||||||
|
|
||||||
|
#: src/lib/alerts.ts
|
||||||
|
msgid "Triggers when GPU usage exceeds a threshold"
|
||||||
|
msgstr "当 GPU 使用率超过阈值时触发"
|
||||||
|
|
||||||
#: src/lib/alerts.ts
|
#: src/lib/alerts.ts
|
||||||
msgid "Triggers when memory usage exceeds a threshold"
|
msgid "Triggers when memory usage exceeds a threshold"
|
||||||
msgstr "当内存使用率超过阈值时触发"
|
msgstr "当内存使用率超过阈值时触发"
|
||||||
@@ -1124,6 +1533,16 @@ msgstr "当状态在上线与掉线之间切换时触发"
|
|||||||
msgid "Triggers when usage of any disk exceeds a threshold"
|
msgid "Triggers when usage of any disk exceeds a threshold"
|
||||||
msgstr "当任何磁盘的使用率超过阈值时触发"
|
msgstr "当任何磁盘的使用率超过阈值时触发"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
msgid "Type"
|
||||||
|
msgstr "类型"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Unit file"
|
||||||
|
msgstr "单元文件"
|
||||||
|
|
||||||
#. Temperature / network units
|
#. Temperature / network units
|
||||||
#: src/components/routes/settings/general.tsx
|
#: src/components/routes/settings/general.tsx
|
||||||
msgid "Unit preferences"
|
msgid "Unit preferences"
|
||||||
@@ -1139,6 +1558,11 @@ msgstr "通用令牌"
|
|||||||
msgid "Unknown"
|
msgid "Unknown"
|
||||||
msgstr "未知"
|
msgstr "未知"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Unlimited"
|
||||||
|
msgstr "无限制"
|
||||||
|
|
||||||
#. Context: System is up
|
#. Context: System is up
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
@@ -1149,6 +1573,20 @@ msgstr "在线"
|
|||||||
msgid "Up ({upSystemsLength})"
|
msgid "Up ({upSystemsLength})"
|
||||||
msgstr "在线 ({upSystemsLength})"
|
msgstr "在线 ({upSystemsLength})"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/quiet-hours.tsx
|
||||||
|
msgid "Update"
|
||||||
|
msgstr "更新"
|
||||||
|
|
||||||
|
#: src/components/containers-table/containers-table-columns.tsx
|
||||||
|
#: src/components/routes/system/smart-table.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table-columns.tsx
|
||||||
|
msgid "Updated"
|
||||||
|
msgstr "更新于"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Updated every 10 minutes."
|
||||||
|
msgstr "每 10 分钟更新一次。"
|
||||||
|
|
||||||
#: src/components/routes/system/network-sheet.tsx
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
msgid "Upload"
|
msgid "Upload"
|
||||||
msgstr "上传"
|
msgstr "上传"
|
||||||
@@ -1161,6 +1599,7 @@ msgstr "正常运行时间"
|
|||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
|
#: src/components/routes/system/cpu-sheet.tsx
|
||||||
msgid "Usage"
|
msgid "Usage"
|
||||||
msgstr "使用"
|
msgstr "使用"
|
||||||
|
|
||||||
@@ -1186,6 +1625,7 @@ msgstr "值"
|
|||||||
msgid "View"
|
msgid "View"
|
||||||
msgstr "视图"
|
msgstr "视图"
|
||||||
|
|
||||||
|
#: src/components/routes/system/cpu-sheet.tsx
|
||||||
#: src/components/routes/system/network-sheet.tsx
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
msgid "View more"
|
msgid "View more"
|
||||||
msgstr "查看更多"
|
msgstr "查看更多"
|
||||||
@@ -1206,6 +1646,10 @@ msgstr "正在收集足够的数据来显示"
|
|||||||
msgid "Want to help improve our translations? Check <0>Crowdin</0> for details."
|
msgid "Want to help improve our translations? Check <0>Crowdin</0> for details."
|
||||||
msgstr "想帮助我们改进翻译吗?查看<0>Crowdin</0>以获取更多详细信息。"
|
msgstr "想帮助我们改进翻译吗?查看<0>Crowdin</0>以获取更多详细信息。"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Wants"
|
||||||
|
msgstr "希望"
|
||||||
|
|
||||||
#: src/components/routes/settings/general.tsx
|
#: src/components/routes/settings/general.tsx
|
||||||
msgid "Warning (%)"
|
msgid "Warning (%)"
|
||||||
msgstr "警告 (%)"
|
msgstr "警告 (%)"
|
||||||
@@ -1242,6 +1686,13 @@ msgstr "YAML 配置"
|
|||||||
msgid "YAML Configuration"
|
msgid "YAML Configuration"
|
||||||
msgstr "YAML 配置"
|
msgstr "YAML 配置"
|
||||||
|
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
#: src/components/systemd-table/systemd-table.tsx
|
||||||
|
msgid "Yes"
|
||||||
|
msgstr "是"
|
||||||
|
|
||||||
#: src/components/routes/settings/layout.tsx
|
#: src/components/routes/settings/layout.tsx
|
||||||
msgid "Your user settings have been updated."
|
msgid "Your user settings have been updated."
|
||||||
msgstr "您的用户设置已更新。"
|
msgstr "您的用户设置已更新。"
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
8
internal/site/src/types.d.ts
vendored
8
internal/site/src/types.d.ts
vendored
@@ -1,5 +1,5 @@
|
|||||||
import type { RecordModel } from "pocketbase"
|
import type { RecordModel } from "pocketbase"
|
||||||
import type { Unit, Os, BatteryState, HourFormat, ConnectionType } from "@/lib/enums"
|
import type { Unit, Os, BatteryState, HourFormat } from "./lib/enums"
|
||||||
|
|
||||||
// global window properties
|
// global window properties
|
||||||
declare global {
|
declare global {
|
||||||
@@ -75,8 +75,6 @@ export interface SystemInfo {
|
|||||||
dt?: number
|
dt?: number
|
||||||
/** operating system */
|
/** operating system */
|
||||||
os?: Os
|
os?: Os
|
||||||
/** connection type */
|
|
||||||
ct?: ConnectionType
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface SystemStats {
|
export interface SystemStats {
|
||||||
@@ -143,8 +141,6 @@ export interface SystemStats {
|
|||||||
g?: Record<string, GPUData>
|
g?: Record<string, GPUData>
|
||||||
/** battery percent and state */
|
/** battery percent and state */
|
||||||
bat?: [number, BatteryState]
|
bat?: [number, BatteryState]
|
||||||
/** network interfaces [upload bytes, download bytes, total upload bytes, total download bytes] */
|
|
||||||
ni?: Record<string, [number, number, number, number]>
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface GPUData {
|
export interface GPUData {
|
||||||
@@ -158,8 +154,6 @@ export interface GPUData {
|
|||||||
u: number
|
u: number
|
||||||
/** power (w) */
|
/** power (w) */
|
||||||
p?: number
|
p?: number
|
||||||
/** engines */
|
|
||||||
e?: Record<string, number>
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface ExtraFsStats {
|
export interface ExtraFsStats {
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user