Compare commits

...
63 Commits
Author SHA1 Message Date
hank 820e1d5de5 New translations en.po (Chinese Simplified)
[ci skip]
2026-09-25 03:01:12 -04:00
hank f2bf04f111 New translations en.po (Chinese Simplified)
[ci skip]
2026-09-25 02:03:32 -04:00
hank c32d962f9f New translations en.po (Norwegian)
[ci skip]
2026-09-24 14:40:13 -04:00
hank f85b5ba3bf New translations en.po (Uyghur)
[ci skip]
2026-09-24 13:29:49 -04:00
hank 79ebf54bbc New translations en.po (Thai)
[ci skip]
2026-09-24 13:29:48 -04:00
hank 6fb22b7205 New translations en.po (German)
[ci skip]
2026-09-24 13:29:46 -04:00
hank d9a7897dbe New translations en.po (Arabic)
[ci skip]
2026-09-24 13:29:44 -04:00
hank c7b72cc101 New translations en.po (Romanian)
[ci skip]
2026-09-24 13:29:42 -04:00
hank 53fcd9bdff New translations en.po (Uzbek)
[ci skip]
2026-09-24 13:29:41 -04:00
hank 43ecac1155 New translations en.po (Chinese Traditional, Hong Kong)
[ci skip]
2026-09-24 13:29:39 -04:00
hank b4c9e2237a New translations en.po (Croatian)
[ci skip]
2026-09-24 13:29:37 -04:00
hank c23a4d313f New translations en.po (Persian)
[ci skip]
2026-09-24 13:29:36 -04:00
hank f99ba28b5e New translations en.po (Indonesian)
[ci skip]
2026-09-24 13:29:34 -04:00
hank ebe0428445 New translations en.po (Vietnamese)
[ci skip]
2026-09-24 13:29:32 -04:00
hank 36d864e797 New translations en.po (Chinese Traditional)
[ci skip]
2026-09-24 13:29:31 -04:00
hank bd295dbd49 New translations en.po (Chinese Simplified)
[ci skip]
2026-09-24 13:29:29 -04:00
hank 960224aeca New translations en.po (Ukrainian)
[ci skip]
2026-09-24 13:29:27 -04:00
hank 6265bc58c7 New translations en.po (Turkish)
[ci skip]
2026-09-24 13:29:26 -04:00
hank e99e0d8cfa New translations en.po (Swedish)
[ci skip]
2026-09-24 13:29:24 -04:00
hank 7f187a895a New translations en.po (Serbian (Cyrillic))
[ci skip]
2026-09-24 13:29:23 -04:00
hank 45dde45e54 New translations en.po (Slovenian)
[ci skip]
2026-09-24 13:29:21 -04:00
hank ab55501768 New translations en.po (Russian)
[ci skip]
2026-09-24 13:29:19 -04:00
hank 209fcd59f6 New translations en.po (Portuguese)
[ci skip]
2026-09-24 13:29:17 -04:00
hank 7c95bb1efd New translations en.po (Polish)
[ci skip]
2026-09-24 13:29:16 -04:00
hank c1ea72b66c New translations en.po (Norwegian)
[ci skip]
2026-09-24 13:29:14 -04:00
hank 02278df9c7 New translations en.po (Dutch)
[ci skip]
2026-09-24 13:29:12 -04:00
hank a4eb214f26 New translations en.po (Korean)
[ci skip]
2026-09-24 13:29:10 -04:00
hank afc8827744 New translations en.po (Japanese)
[ci skip]
2026-09-24 13:29:09 -04:00
hank 6f781d37b2 New translations en.po (Italian)
[ci skip]
2026-09-24 13:29:07 -04:00
hank 12011d54f5 New translations en.po (Hungarian)
[ci skip]
2026-09-24 13:29:05 -04:00
hank 8602c82ff2 New translations en.po (Hebrew)
[ci skip]
2026-09-24 13:29:04 -04:00
hank 234d10ae7a New translations en.po (Greek)
[ci skip]
2026-09-24 13:29:02 -04:00
hank a203315ae3 New translations en.po (Danish)
[ci skip]
2026-09-24 13:29:00 -04:00
hank ac3f859ea5 New translations en.po (Czech)
[ci skip]
2026-09-24 13:28:58 -04:00
hank a06fed4d2b New translations en.po (Bulgarian)
[ci skip]
2026-09-24 13:28:57 -04:00
hank 2d1624e37a New translations en.po (Spanish)
[ci skip]
2026-09-24 13:28:55 -04:00
hank e7c27a2bd5 New translations en.po (French)
[ci skip]
2026-09-24 13:28:54 -04:00
henrygd c21412f45d i18n: update strings 2026-09-24 12:29:12 -04:00
spatiumstasandGitHub 367d2f39da fix(i18n): translate system actions as complete phrases (#2403) 2026-09-24 12:23:42 -04:00
hankandGitHub eabd9a950a New Crowdin updates (#2384) 2026-09-24 12:21:49 -04:00
0be9882b34 feat(ui): simplify Services column in systems table (#2399)
Co-authored-by: hank <hank@henrygd.me>
2026-09-24 12:05:26 -04:00
e4b84b72ab fix(site): measure the longest string width instead of estimating it (#2411)
Co-authored-by: henrygd <hank@henrygd.me>
2026-09-24 11:32:21 -04:00
Mario MoharandGitHub fc33e62736 fix(hub): restart beszel-hub.service after update (#2410)
restartService only looked for beszel.service, but install-hub.sh installs
the unit as beszel-hub.service, so the restart was skipped on a standard
install and the hub kept running the old binary.

Try the installer's name first and keep beszel.service as a fallback for
hand written units. Same for the OpenRC branch.
2026-09-24 10:00:18 -04:00
a99fe5e997 feat: add TLS certificate expiry check to HTTPS network monitors (#2401)
Co-authored-by: henrygd <hank@henrygd.me>
2026-09-23 17:07:29 -04:00
spatiumstasandGitHub 0870716052 fix(i18n): extract bulk monitor format hint for translation (#2362) 2026-09-23 15:19:30 -04:00
Sven van GinkelandGitHub b1270e341c feat(ui): Add view settings to network monitors table (#2396) 2026-09-23 13:47:42 -04:00
9042a8c5c8 fix(site): handle missing default chart time (#2397)
Co-authored-by: henrygd <hank@henrygd.me>
2026-09-23 12:29:31 -04:00
henrygd 8bf6917fe0 fix: prevent WebSocket reconnect loops on slow agent collections (#2294)
The hub waited only 5s (the request manager default) for stats over
WebSocket and closed the connection on any error. On hosts where
`zpool list` stalls (seen on Proxmox, up to its 10s timeout), collection
exceeded that limit, so the hub sent a close (code 1000) and the agent
reconnected. The refresh ran every other cycle, which caused a
disconnect roughly every 2 minutes.

Hub:
- Wait up to 30s for WebSocket stats responses.
- Keep the connection open when a stats request times out; only close
  it (and fall back to SSH) for other errors.

Agent:
- After the first collection, refresh `zpool list` pool stats and
  `zfs list` dataset usage in the background and serve cached values
  meanwhile, so a hung utility cannot delay the stats response.
2026-09-23 11:21:51 -04:00
spatiumstasandGitHub 2d5ea3fa08 fix: preserve status alerts through pending recovery (#2375) 2026-09-22 19:14:54 -04:00
Sven van GinkelandGitHub 627d364071 fix(ui): disable Add Monitor button when no eligible systems exist (#2392) 2026-09-22 19:04:48 -04:00
Sven van GinkelandGitHub 8047f005d4 fix(ui): preserve paused systems in network monitors table (#2391) 2026-09-22 18:40:46 -04:00
4a4610bbc3 fix(ui): reflect target response status in network monitor status dot (#2390)
Co-authored-by: henrygd <hank@henrygd.me>
2026-09-22 18:12:19 -04:00
henrygd 1aaabfc255 fix(agent): check all image repository digests (#2393) 2026-09-22 18:00:13 -04:00
henrygd 97ea3c16cb add custom user agent to HTTP monitors 2026-09-21 19:53:53 -04:00
Sven van GinkelandGitHub c9de35fad2 feat: change network packet loss to a red line (#2377) 2026-09-21 14:49:11 -04:00
henrygd a5f216f425 exit 0 without key on Windows to avoid Winget Validation-Executable-Error (#2376, #2247) 2026-09-21 11:27:37 -04:00
henrygd cbe4824ac3 add env var to disable container image update checks (#2371) 2026-09-21 10:49:53 -04:00
henrygd 2c69197d2d fix(install): improve handling of openwrt user account (#2370)
- Allocate unused UID/GIDs instead of using 999
- Detect existing ID collisions and repair missing shadow entries
- Support userdel and deluser during uninstall
- Fix Docker group membership handling
2026-09-20 18:04:07 -04:00
henrygd 97e6f64bdc fix(ui): swap usage chart shown twice in tabs view (#2356) 2026-09-19 13:27:00 -04:00
henrygd 4a5915b141 add SMART to readme features 2026-09-19 12:11:10 -04:00
henrygd e68372dce4 update readme features 2026-09-19 12:09:26 -04:00
henrygd c52f3acb94 fix(docker): enable Debian contrib for ZFS utilities in slim NVIDIA image 2026-09-19 12:03:05 -04:00
hankGitHubgithub-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
c09eb8c6df chore(helm): update app version to 0.20.0 (#2355)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-09-19 11:39:13 -04:00
87 changed files with 3899 additions and 667 deletions
+12 -8
View File
@@ -68,10 +68,11 @@ type dockerManager struct {
excludeContainers []string // Patterns to exclude containers by name excludeContainers []string // Patterns to exclude containers by name
usingPodman bool // Whether the Docker Engine API is running on Podman usingPodman bool // Whether the Docker Engine API is running on Podman
registryClient *http.Client // Client for registry requests; nil uses a client with a 10-second timeout registryClient *http.Client // Client for registry requests; nil uses a client with a 10-second timeout
imageUpdatesMutex sync.RWMutex // Protects imageUpdates, its entries, and imageUpdatesRunning imageUpdatesDisabled bool // Whether image update checks are disabled by configuration
imageUpdates map[string]*imageUpdateStatus // Shared update status keyed by normalized image reference imageUpdatesMutex sync.RWMutex // Protects imageUpdates, its entries, and imageUpdatesRunning
imageUpdatesRunning bool // Whether a background image-update batch is in progress imageUpdates map[string]*imageUpdateStatus // Shared update status keyed by normalized image reference
imageUpdatesRunning bool // Whether a background image-update batch is in progress
// Cache-time-aware tracking for CPU stats (similar to cpu.go) // Cache-time-aware tracking for CPU stats (similar to cpu.go)
// Maps cache time intervals to container-specific CPU usage tracking // Maps cache time intervals to container-specific CPU usage tracking
@@ -688,6 +689,8 @@ func newDockerManager(agent *Agent) *dockerManager {
userAgent: "Docker-Client/", userAgent: "Docker-Client/",
} }
dockerImageCheck, _ := utils.GetEnv("DOCKER_IMAGE_CHECK")
// Read container exclusion patterns from environment variable // Read container exclusion patterns from environment variable
var excludeContainers []string var excludeContainers []string
if excludeStr, set := utils.GetEnv("EXCLUDE_CONTAINERS"); set && excludeStr != "" { if excludeStr, set := utils.GetEnv("EXCLUDE_CONTAINERS"); set && excludeStr != "" {
@@ -707,10 +710,11 @@ func newDockerManager(agent *Agent) *dockerManager {
Timeout: timeout, Timeout: timeout,
Transport: userAgentTransport, Transport: userAgentTransport,
}, },
containerStatsMap: make(map[string]*container.Stats), containerStatsMap: make(map[string]*container.Stats),
sem: make(chan struct{}, 5), sem: make(chan struct{}, 5),
apiContainerList: []*container.ApiInfo{}, apiContainerList: []*container.ApiInfo{},
excludeContainers: excludeContainers, excludeContainers: excludeContainers,
imageUpdatesDisabled: dockerImageCheck == "false",
// Initialize cache-time-aware tracking structures // Initialize cache-time-aware tracking structures
lastCpuContainer: make(map[uint16]map[string]uint64), lastCpuContainer: make(map[uint16]map[string]uint64),
+3
View File
@@ -31,6 +31,9 @@ func normalizedImageReference(image string) string {
// refreshImageUpdates starts at most one background batch. Neither its network // refreshImageUpdates starts at most one background batch. Neither its network
// work nor its completion is part of the container metrics wait group. // work nor its completion is part of the container metrics wait group.
func (dm *dockerManager) refreshImageUpdates(containers []*container.ApiInfo, now time.Time) { func (dm *dockerManager) refreshImageUpdates(containers []*container.ApiInfo, now time.Time) {
if dm.imageUpdatesDisabled {
return
}
dm.imageUpdatesMutex.Lock() dm.imageUpdatesMutex.Lock()
defer dm.imageUpdatesMutex.Unlock() defer dm.imageUpdatesMutex.Unlock()
if dm.imageUpdatesRunning { if dm.imageUpdatesRunning {
+23
View File
@@ -27,6 +27,29 @@ func waitForImageUpdates(t *testing.T, dm *dockerManager) {
}, time.Second*3, time.Millisecond) }, time.Second*3, time.Millisecond)
} }
func TestDisableDockerImageUpdateCheck(t *testing.T) {
t.Setenv("BESZEL_AGENT_DOCKER_IMAGE_CHECK", "false")
server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
if r.URL.Path == "/version" {
fmt.Fprint(w, `{"Version":"25.0.0"}`)
return
}
http.NotFound(w, r)
}))
defer server.Close()
t.Setenv("BESZEL_AGENT_DOCKER_HOST", server.URL)
dm := newDockerManager(nil)
require.True(t, dm.imageUpdatesDisabled)
dm.registryClient = &http.Client{Transport: roundTripFunc(func(*http.Request) (*http.Response, error) {
t.Fatal("disabled image update check made a registry request")
return nil, nil
})}
dm.refreshImageUpdates([]*container.ApiInfo{{Image: "nginx", Names: []string{"/nginx"}}}, time.Now())
require.False(t, dm.imageUpdatesRunning)
require.Nil(t, dm.imageUpdates)
}
func TestImageUpdateCacheAndStats(t *testing.T) { func TestImageUpdateCacheAndStats(t *testing.T) {
local := "sha256:" + strings.Repeat("a", 64) local := "sha256:" + strings.Repeat("a", 64)
remote := "sha256:" + strings.Repeat("b", 64) remote := "sha256:" + strings.Repeat("b", 64)
+21 -19
View File
@@ -6,6 +6,7 @@ import (
"fmt" "fmt"
"net/http" "net/http"
"net/url" "net/url"
"slices"
"strings" "strings"
"time" "time"
@@ -37,7 +38,7 @@ func (dm *dockerManager) checkImageUpdate(image string) (bool, error) {
repository := reference.Path(named) repository := reference.Path(named)
tag := named.(reference.Tagged).Tag() tag := named.(reference.Tagged).Tag()
localDigest, err := dm.inspectImageDigest(image, registry, repository) localDigests, err := dm.inspectImageDigests(image, registry, repository)
if err != nil { if err != nil {
return false, err return false, err
} }
@@ -47,48 +48,49 @@ func (dm *dockerManager) checkImageUpdate(image string) (bool, error) {
return false, err return false, err
} }
return remoteDigest != localDigest, nil return !slices.Contains(localDigests, remoteDigest), nil
} }
// inspectImageDigest reads Docker's image metadata without using dm.decode. // inspectImageDigests reads Docker's image metadata without using dm.decode.
// The checker runs in the image-discovery goroutine, so it must not hold any // The checker runs in the image-discovery goroutine, so it must not hold any
// of the container statistics locks while waiting on the Docker API. // of the container statistics locks while waiting on the Docker API.
func (dm *dockerManager) inspectImageDigest(image, registry, repository string) (string, error) { func (dm *dockerManager) inspectImageDigests(image, registry, repository string) ([]string, error) {
if dm.client == nil { if dm.client == nil {
return "", fmt.Errorf("inspect image %q: Docker client is unavailable", image) return nil, fmt.Errorf("inspect image %q: Docker client is unavailable", image)
} }
endpoint := "http://localhost/images/" + url.PathEscape(image) + "/json" endpoint := "http://localhost/images/" + url.PathEscape(image) + "/json"
resp, err := dm.client.Get(endpoint) resp, err := dm.client.Get(endpoint)
if err != nil { if err != nil {
return "", fmt.Errorf("inspect image %q: %w", image, err) return nil, fmt.Errorf("inspect image %q: %w", image, err)
} }
defer resp.Body.Close() defer resp.Body.Close()
if resp.StatusCode != http.StatusOK { if resp.StatusCode != http.StatusOK {
return "", fmt.Errorf("inspect image %q failed: %s", image, responseStatus(resp)) return nil, fmt.Errorf("inspect image %q failed: %s", image, responseStatus(resp))
} }
var inspect struct { var inspect struct {
RepoDigests []string `json:"RepoDigests"` RepoDigests []string `json:"RepoDigests"`
} }
if err := json.NewDecoder(resp.Body).Decode(&inspect); err != nil { if err := json.NewDecoder(resp.Body).Decode(&inspect); err != nil {
return "", fmt.Errorf("decode image inspect %q: %w", image, err) return nil, fmt.Errorf("decode image inspect %q: %w", image, err)
} }
if len(inspect.RepoDigests) == 0 { if len(inspect.RepoDigests) == 0 {
return "", fmt.Errorf("inspect image %q returned no repository digests", image) return nil, fmt.Errorf("inspect image %q returned no repository digests", image)
} }
localDigest, ok := matchingRepositoryDigest(inspect.RepoDigests, registry, repository) localDigests := matchingRepositoryDigests(inspect.RepoDigests, registry, repository)
if !ok { if len(localDigests) == 0 {
return "", fmt.Errorf("inspect image %q returned no valid digest for %s/%s", image, registry, repository) return nil, fmt.Errorf("inspect image %q returned no valid digest for %s/%s", image, registry, repository)
} }
return localDigest, nil return localDigests, nil
} }
// matchingRepositoryDigest returns a valid digest belonging to the requested // matchingRepositoryDigests returns all valid digests belonging to the requested
// repository. Docker can return multiple RepoDigests for one local image; an // repository. Container engines can return both index and platform manifest digests for one
// unrelated first entry must never be used for the comparison. // local image, in either order.
func matchingRepositoryDigest(repoDigests []string, registry, repository string) (string, bool) { func matchingRepositoryDigests(repoDigests []string, registry, repository string) []string {
var digests []string
for _, repoDigest := range repoDigests { for _, repoDigest := range repoDigests {
repoDigest = strings.TrimSpace(repoDigest) repoDigest = strings.TrimSpace(repoDigest)
at := strings.LastIndexByte(repoDigest, '@') at := strings.LastIndexByte(repoDigest, '@')
@@ -108,9 +110,9 @@ func matchingRepositoryDigest(repoDigests []string, registry, repository string)
if err != nil { if err != nil {
continue continue
} }
return d.String(), true digests = append(digests, d.String())
} }
return "", false return digests
} }
func sameRegistry(left, right string) bool { func sameRegistry(left, right string) bool {
+39
View File
@@ -80,6 +80,45 @@ func TestCheckImageUpdateUsesInspectAndManifestDigests(t *testing.T) {
require.EqualValues(t, 1, manifestCalls.Load()) require.EqualValues(t, 1, manifestCalls.Load())
} }
func TestCheckImageUpdateMatchesAnyRepositoryDigest(t *testing.T) {
platform := registryDigest('a')
index := registryDigest('b')
other := registryDigest('c')
for _, test := range []struct {
name string
digests []string
remote string
available bool
}{
{name: "platform then index, remote index", digests: []string{platform, index}, remote: index},
{name: "index then platform, remote index", digests: []string{index, platform}, remote: index},
{name: "platform then index, remote platform", digests: []string{platform, index}, remote: platform},
{name: "index then platform, remote platform", digests: []string{index, platform}, remote: platform},
{name: "neither matches", digests: []string{platform, index}, remote: other, available: true},
} {
t.Run(test.name, func(t *testing.T) {
inspect := fmt.Sprintf(`{"RepoDigests":["docker.io/library/busybox@%s","docker.io/library/alpine@%s","docker.io/library/alpine@sha256:invalid","docker.io/library/alpine@%s"]}`, test.remote, test.digests[0], test.digests[1])
var manifestCalls atomic.Int32
dm := newRegistryChecker(t, inspect, registryTransportFunc(func(req *http.Request) (*http.Response, error) {
if req.Method == http.MethodGet {
return registryResponse(http.StatusOK, `{"token":"test"}`), nil
}
manifestCalls.Add(1)
require.Equal(t, http.MethodHead, req.Method)
resp := registryResponse(http.StatusOK, "")
resp.Header.Set("Docker-Content-Digest", test.remote)
return resp, nil
}))
available, err := dm.checkImageUpdate("alpine")
require.NoError(t, err)
require.Equal(t, test.available, available)
require.EqualValues(t, 1, manifestCalls.Load())
})
}
}
func TestCheckImageUpdateReportsUnknownInspectState(t *testing.T) { func TestCheckImageUpdateReportsUnknownInspectState(t *testing.T) {
for _, test := range []struct { for _, test := range []struct {
name string name string
+22 -3
View File
@@ -15,6 +15,7 @@ type MonitorManager struct {
mu sync.RWMutex mu sync.RWMutex
monitors map[string]*monitorTask // keyed by monitor ID monitors map[string]*monitorTask // keyed by monitor ID
probe monitorProbe probe monitorProbe
certCheck certChecker
resumeGuard monitorResumeGuard resumeGuard monitorResumeGuard
} }
@@ -23,7 +24,7 @@ func newMonitorManager() *MonitorManager {
} }
func newMonitorManagerWithProbe(probe monitorProbe) *MonitorManager { func newMonitorManagerWithProbe(probe monitorProbe) *MonitorManager {
return &MonitorManager{monitors: make(map[string]*monitorTask), probe: probe} return &MonitorManager{monitors: make(map[string]*monitorTask), probe: probe, certCheck: checkCert}
} }
// SyncMonitors replaces all monitor tasks with the given configs. // SyncMonitors replaces all monitor tasks with the given configs.
@@ -107,7 +108,7 @@ func (pm *MonitorManager) UpsertMonitor(config monitor.Config, runNow bool) (*mo
if !runNow { if !runNow {
return nil, nil return nil, nil
} }
return task.runProbe(pm.probe), nil return pm.runNow(task), nil
} }
if exists { if exists {
task.cancel() task.cancel()
@@ -119,7 +120,7 @@ func (pm *MonitorManager) UpsertMonitor(config monitor.Config, runNow bool) (*mo
pm.mu.Unlock() pm.mu.Unlock()
if runNow { if runNow {
result := task.runProbe(pm.probe) result := pm.runNow(task)
pm.startMonitor(task) pm.startMonitor(task)
return result, nil return result, nil
} }
@@ -127,6 +128,19 @@ func (pm *MonitorManager) UpsertMonitor(config monitor.Config, runNow bool) (*mo
return nil, nil return nil, nil
} }
// runNow runs a probe and any due certificate check concurrently, so the
// response fits within the hub's single probe timeout budget.
func (pm *MonitorManager) runNow(task *monitorTask) *monitor.Result {
var wg sync.WaitGroup
wg.Go(func() { task.refreshCert(pm.certCheck) })
result := task.runProbe(pm.probe)
wg.Wait()
if result != nil {
result.Cert = task.certInfo()
}
return result
}
// DeleteMonitor stops and removes a single monitor task. // DeleteMonitor stops and removes a single monitor task.
func (pm *MonitorManager) DeleteMonitor(id string) { func (pm *MonitorManager) DeleteMonitor(id string) {
if id == "" { if id == "" {
@@ -158,6 +172,11 @@ func (pm *MonitorManager) GetResults(durationMs uint16) map[string]monitor.Resul
if !ok { if !ok {
continue continue
} }
// Only the default interval updates monitor records on the hub, so
// realtime requests must not consume the unsent certificate.
if durationMs == defaultDataCacheTimeMs {
result.Cert = task.takeUnsentCert()
}
results[task.config.ID] = result results[task.config.ID] = result
} }
+74
View File
@@ -0,0 +1,74 @@
package agent
import (
"context"
"crypto/tls"
"errors"
"fmt"
"net"
"net/url"
"strings"
"time"
"github.com/henrygd/beszel/internal/entities/monitor"
)
const (
certCheckInterval = 24 * time.Hour
certCheckRetryInterval = time.Hour
)
// certChecker fetches the leaf certificate for an HTTPS target.
type certChecker func(context.Context, string) (monitor.CertInfo, error)
// certCheckEnabled reports whether a monitor's certificate is checked, which is
// the case for every HTTP monitor with an https target.
func certCheckEnabled(config monitor.Config) bool {
return config.Protocol == "http" && len(config.Target) > 8 && strings.EqualFold(config.Target[:8], "https://")
}
// checkCert reads the leaf certificate presented by an HTTPS target. The chain is
// not verified, so expired or self-signed certificates are still reported.
func checkCert(ctx context.Context, target string) (monitor.CertInfo, error) {
address, host, err := certAddress(target)
if err != nil {
return monitor.CertInfo{}, err
}
ctx, cancel := context.WithTimeout(ctx, monitor.MaxProbeTimeout)
defer cancel()
dialer := tls.Dialer{Config: &tls.Config{ServerName: host, InsecureSkipVerify: true}}
conn, err := dialer.DialContext(ctx, "tcp", address)
if err != nil {
return monitor.CertInfo{}, err
}
defer conn.Close()
certs := conn.(*tls.Conn).ConnectionState().PeerCertificates
if len(certs) == 0 {
return monitor.CertInfo{}, errors.New("no peer certificates")
}
leaf := certs[0]
return monitor.CertInfo{
Expires: leaf.NotAfter.UnixMilli(),
Issuer: leaf.Issuer.CommonName,
}, nil
}
// certAddress returns the dial address and server name for an HTTPS URL.
func certAddress(target string) (address, host string, err error) {
u, err := url.Parse(target)
if err != nil {
return "", "", err
}
if !strings.EqualFold(u.Scheme, "https") {
return "", "", fmt.Errorf("certificate check requires an https target: %s", target)
}
host = u.Hostname()
if host == "" {
return "", "", fmt.Errorf("missing host in target: %s", target)
}
port := u.Port()
if port == "" {
port = "443"
}
return net.JoinHostPort(host, port), host, nil
}
+184
View File
@@ -0,0 +1,184 @@
//go:build testing
package agent
import (
"context"
"errors"
"net/http"
"net/http/httptest"
"testing"
"testing/synctest"
"time"
"github.com/henrygd/beszel/internal/entities/monitor"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestCheckCertReadsUnverifiedLeaf(t *testing.T) {
server := httptest.NewTLSServer(http.HandlerFunc(func(http.ResponseWriter, *http.Request) {}))
defer server.Close()
// httptest uses a self-signed certificate, which must still be reported.
info, err := checkCert(context.Background(), server.URL)
require.NoError(t, err)
leaf := server.Certificate()
assert.Equal(t, leaf.NotAfter.UnixMilli(), info.Expires)
assert.Equal(t, leaf.Issuer.CommonName, info.Issuer)
}
func TestCertAddress(t *testing.T) {
tests := []struct {
target, address, host string
wantErr bool
}{
{target: "https://example.com", address: "example.com:443", host: "example.com"},
{target: "https://example.com:8443/path?q=1", address: "example.com:8443", host: "example.com"},
{target: "HTTPS://[::1]:9443", address: "[::1]:9443", host: "::1"},
{target: "http://example.com", wantErr: true},
{target: "https://", wantErr: true},
}
for _, tt := range tests {
address, host, err := certAddress(tt.target)
if tt.wantErr {
assert.Error(t, err, tt.target)
continue
}
require.NoError(t, err, tt.target)
assert.Equal(t, tt.address, address)
assert.Equal(t, tt.host, host)
}
}
func TestRefreshCertCadence(t *testing.T) {
synctest.Test(t, func(t *testing.T) {
task := newMonitorTask(monitor.Config{ID: "test", Target: "https://example.test", Protocol: "http"})
defer task.cancel()
var calls int
var fail error
// Far enough out that the regular interval applies for the whole test.
expires := time.Now().Add(365 * 24 * time.Hour).UnixMilli()
check := func(context.Context, string) (monitor.CertInfo, error) {
calls++
if fail != nil {
return monitor.CertInfo{}, fail
}
return monitor.CertInfo{Expires: expires + int64(calls)}, nil
}
task.refreshCert(check)
require.NotNil(t, task.certInfo())
assert.Equal(t, expires+1, task.certInfo().Expires)
// Not due again until the check interval passes.
time.Sleep(certCheckInterval - time.Second)
task.refreshCert(check)
assert.Equal(t, 1, calls)
time.Sleep(time.Second)
task.refreshCert(check)
assert.Equal(t, 2, calls)
// Failures keep the last known certificate and retry sooner.
fail = errors.New("connection refused")
time.Sleep(certCheckInterval)
task.refreshCert(check)
assert.Equal(t, 3, calls)
assert.Equal(t, expires+2, task.certInfo().Expires)
time.Sleep(certCheckRetryInterval)
fail = nil
task.refreshCert(check)
assert.Equal(t, 4, calls)
assert.Equal(t, expires+4, task.certInfo().Expires)
})
}
func TestRefreshCertRetriesSoonerNearExpiry(t *testing.T) {
for _, tc := range []struct {
name string
expires time.Duration // relative to the check
interval time.Duration
}{
{"expired", -time.Hour, certCheckRetryInterval},
{"expires before next regular check", certCheckInterval - time.Minute, certCheckRetryInterval},
{"expires after next regular check", certCheckInterval + time.Minute, certCheckInterval},
} {
t.Run(tc.name, func(t *testing.T) {
synctest.Test(t, func(t *testing.T) {
task := newMonitorTask(monitor.Config{ID: "test", Target: "https://example.test", Protocol: "http"})
defer task.cancel()
var calls int
check := func(context.Context, string) (monitor.CertInfo, error) {
calls++
return monitor.CertInfo{Expires: time.Now().Add(tc.expires).UnixMilli()}, nil
}
task.refreshCert(check)
time.Sleep(tc.interval - time.Second)
task.refreshCert(check)
assert.Equal(t, 1, calls)
time.Sleep(time.Second)
task.refreshCert(check)
assert.Equal(t, 2, calls)
})
})
}
}
func TestCertCheckEnabled(t *testing.T) {
tests := []struct {
protocol, target string
want bool
}{
{"http", "https://example.com", true},
{"http", "HTTPS://example.com:8443/path", true},
{"http", "http://example.com", false},
{"http", "https://", false},
{"tcp", "https://example.com", false},
{"icmp", "example.com", false},
}
for _, tt := range tests {
assert.Equal(t, tt.want, certCheckEnabled(monitor.Config{Protocol: tt.protocol, Target: tt.target}), tt.protocol+" "+tt.target)
}
}
func TestRefreshCertSkipsNonHTTPS(t *testing.T) {
task := newMonitorTask(monitor.Config{ID: "test", Target: "http://example.test", Protocol: "http"})
defer task.cancel()
task.refreshCert(func(context.Context, string) (monitor.CertInfo, error) {
t.Fatal("certificate check must not run for non-https targets")
return monitor.CertInfo{}, nil
})
assert.Nil(t, task.certInfo())
}
func TestUpsertMonitorRunNowIncludesCert(t *testing.T) {
server := httptest.NewTLSServer(http.HandlerFunc(func(http.ResponseWriter, *http.Request) {}))
defer server.Close()
pm := newMonitorManagerWithProbe(func(context.Context, monitor.Config) (int64, error) { return 100, nil })
defer pm.Stop()
config := monitor.Config{ID: "cert", Target: server.URL, Protocol: "http", Interval: 60}
result, err := pm.UpsertMonitor(config, true)
require.NoError(t, err)
require.NotNil(t, result)
require.NotNil(t, result.Cert)
assert.Equal(t, server.Certificate().NotAfter.UnixMilli(), result.Cert.Expires)
// Realtime results never carry the certificate, and the default interval
// sends it only once per check.
assert.Nil(t, pm.GetResults(1000)["cert"].Cert)
results := pm.GetResults(defaultDataCacheTimeMs)
require.NotNil(t, results["cert"].Cert)
assert.Equal(t, result.Cert.Expires, results["cert"].Cert.Expires)
assert.Nil(t, pm.GetResults(defaultDataCacheTimeMs)["cert"].Cert)
// Changing the interval keeps the known certificate without resending it.
config.Interval = 30
_, err = pm.UpsertMonitor(config, false)
require.NoError(t, err)
pm.mu.RLock()
task := pm.monitors["cert"]
pm.mu.RUnlock()
assert.NotNil(t, task.certInfo())
assert.Nil(t, pm.GetResults(defaultDataCacheTimeMs)["cert"].Cert)
}
+4
View File
@@ -8,9 +8,12 @@ import (
"net/http" "net/http"
"time" "time"
"github.com/henrygd/beszel"
"github.com/henrygd/beszel/internal/entities/monitor" "github.com/henrygd/beszel/internal/entities/monitor"
) )
const networkMonitorUserAgent = "Beszel-Agent/" + beszel.Version + " (+https://beszel.dev)"
// monitorProbe performs one check. Errors are recorded as loss by the task runner. // monitorProbe performs one check. Errors are recorded as loss by the task runner.
// Implementations must honor cancellation and bound their execution time. // Implementations must honor cancellation and bound their execution time.
type monitorProbe func(context.Context, monitor.Config) (int64, error) type monitorProbe func(context.Context, monitor.Config) (int64, error)
@@ -93,6 +96,7 @@ func monitorHTTP(ctx context.Context, client *http.Client, url string) (int64, e
if err != nil { if err != nil {
return -1, err return -1, err
} }
req.Header.Set("User-Agent", networkMonitorUserAgent)
resp, err := client.Do(req) resp, err := client.Do(req)
if err != nil { if err != nil {
return -1, err return -1, err
+3
View File
@@ -14,9 +14,12 @@ func (pm *MonitorManager) startMonitor(task *monitorTask) {
} }
delay := getStagger(interval.Milliseconds()) delay := getStagger(interval.Milliseconds())
slog.Debug("starting monitor task", "target", task.config.Target, "delay", delay, "interval", interval) slog.Debug("starting monitor task", "target", task.config.Target, "delay", delay, "interval", interval)
// Certificate checks piggyback on probe ticks, so they run at most once per
// probe interval after they become due.
go runMonitorSchedule(task.ctx, interval, delay, func() { go runMonitorSchedule(task.ctx, interval, delay, func() {
if _, allowed := task.resumeGuard.snapshot(); allowed { if _, allowed := task.resumeGuard.snapshot(); allowed {
task.runProbe(pm.probe) task.runProbe(pm.probe)
task.refreshCert(pm.certCheck)
} }
}) })
} }
+75
View File
@@ -21,6 +21,12 @@ type monitorTask struct {
runMu sync.Mutex runMu sync.Mutex
inflight *monitorRun inflight *monitorRun
lastFailureLog int64 // Unix nanoseconds lastFailureLog int64 // Unix nanoseconds
certMu sync.Mutex
cert *monitor.CertInfo
certUnsent bool // cert has not been included in a stats result yet
certChecking bool
nextCertCheck time.Time
} }
type monitorRun struct { type monitorRun struct {
@@ -45,6 +51,11 @@ func newMonitorTaskFromExisting(config monitor.Config, existing *monitorTask) *m
task := newMonitorTask(config) task := newMonitorTask(config)
if existing != nil { if existing != nil {
task.history = existing.history.clone() task.history = existing.history.clone()
// Keep the last known certificate, but check again soon for the new config.
// The hub already stores it, so it is not marked unsent.
if config.Target == existing.config.Target {
task.cert = existing.certInfo()
}
} }
return task return task
} }
@@ -107,6 +118,70 @@ func (task *monitorTask) runProbe(probe monitorProbe) *monitor.Result {
return copyMonitorResult(run.result) return copyMonitorResult(run.result)
} }
// refreshCert checks the certificate of an HTTPS target when due. A failed
// check keeps the last known certificate and retries sooner, as does a
// certificate that expires before the next regular check, so renewals show up
// quickly. Concurrent callers skip rather than wait, and no lock is held during
// network I/O.
func (task *monitorTask) refreshCert(check certChecker) {
if check == nil || !certCheckEnabled(task.config) {
return
}
task.certMu.Lock()
if task.certChecking || time.Now().Before(task.nextCertCheck) {
task.certMu.Unlock()
return
}
task.certChecking = true
task.certMu.Unlock()
info, err := check(task.ctx, task.config.Target)
task.certMu.Lock()
defer task.certMu.Unlock()
task.certChecking = false
if task.ctx.Err() != nil {
return
}
if err != nil {
task.nextCertCheck = time.Now().Add(certCheckRetryInterval)
slog.Warn("certificate check failed", "err", err, "target", task.config.Target)
return
}
task.cert = &info
task.certUnsent = true
now := time.Now()
interval := certCheckInterval
if time.UnixMilli(info.Expires).Before(now.Add(certCheckInterval)) {
interval = certCheckRetryInterval
}
task.nextCertCheck = now.Add(interval)
}
// certInfo returns a copy of the latest certificate info, or nil if unknown.
func (task *monitorTask) certInfo() *monitor.CertInfo {
task.certMu.Lock()
defer task.certMu.Unlock()
if task.cert == nil {
return nil
}
cert := *task.cert
return &cert
}
// takeUnsentCert returns the latest certificate info once after each successful
// check, so unchanged info is not resent with every stats result.
func (task *monitorTask) takeUnsentCert() *monitor.CertInfo {
task.certMu.Lock()
defer task.certMu.Unlock()
if !task.certUnsent {
return nil
}
task.certUnsent = false
cert := *task.cert
return &cert
}
func copyMonitorResult(result *monitor.Result) *monitor.Result { func copyMonitorResult(result *monitor.Result) *monitor.Result {
if result == nil { if result == nil {
return nil return nil
+2
View File
@@ -10,6 +10,7 @@ import (
"testing" "testing"
"time" "time"
"github.com/henrygd/beszel"
"github.com/henrygd/beszel/internal/entities/monitor" "github.com/henrygd/beszel/internal/entities/monitor"
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require" "github.com/stretchr/testify/require"
@@ -240,6 +241,7 @@ func TestMonitorManagerGetRandomDelay(t *testing.T) {
func TestMonitorHTTP(t *testing.T) { func TestMonitorHTTP(t *testing.T) {
t.Run("success", func(t *testing.T) { t.Run("success", func(t *testing.T) {
server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
assert.Equal(t, "Beszel-Agent/"+beszel.Version+" (+https://beszel.dev)", r.Header.Get("User-Agent"))
w.WriteHeader(http.StatusNoContent) w.WriteHeader(http.StatusNoContent)
})) }))
defer server.Close() defer server.Close()
+71 -21
View File
@@ -54,12 +54,18 @@ type poolBackend struct {
kernelStatsFn func() ([]zfs.PoolKernelStat, error) // procfs pool state/I/O source kernelStatsFn func() ([]zfs.PoolKernelStat, error) // procfs pool state/I/O source
poolStatusesFn func() ([]zfs.PoolStatus, error) // scrub/vdev detail source poolStatusesFn func() ([]zfs.PoolStatus, error) // scrub/vdev detail source
poolData []zfs.PoolStat // cached pool inventory (TTL below) // Utility-backed caches below are refreshed in the background after the
lastPoolStats time.Time // first collection, so cacheMu guards them against those goroutines.
kernelSamples map[string]poolKernelSample cacheMu sync.Mutex
poolData []zfs.PoolStat // cached pool inventory (TTL below)
lastPoolStats time.Time
poolRefreshing bool
datasetUsage map[string]zfsDatasetUsage // mountpoint -> usage datasetUsage map[string]zfsDatasetUsage // mountpoint -> usage
lastUsageRefresh time.Time lastUsageRefresh time.Time
usageRefreshing bool
kernelSamples map[string]poolKernelSample
// Detail data (pools, vdevs, scrub, datasets) is cached and refreshed on // Detail data (pools, vdevs, scrub, datasets) is cached and refreshed on
// an interval. Accessed from handler goroutines, so it is mutex-protected. // an interval. Accessed from handler goroutines, so it is mutex-protected.
@@ -177,21 +183,42 @@ func (b *poolBackend) updateBackendStats(systemStats *system.Stats) {
} }
// poolStats returns the cached pool inventory, calling its collector at most // poolStats returns the cached pool inventory, calling its collector at most
// every poolStatsRefreshInterval. On failure the previous inventory is // every poolStatsRefreshInterval. Only the first collection blocks; later
// retained and the refresh is retried on the next cadence. // refreshes run in the background because utilities like `zpool list` can hang
// for seconds on busy hosts, which would otherwise delay the hub's stats
// response. On failure the previous inventory is retained and the refresh is
// retried on the next cadence.
func (b *poolBackend) poolStats() []zfs.PoolStat { func (b *poolBackend) poolStats() []zfs.PoolStat {
if b.lastPoolStats.IsZero() || time.Since(b.lastPoolStats) >= poolStatsRefreshInterval { b.cacheMu.Lock()
pools, err := b.poolStatsFn() defer b.cacheMu.Unlock()
if err != nil { if b.poolRefreshing || (!b.lastPoolStats.IsZero() && time.Since(b.lastPoolStats) < poolStatsRefreshInterval) {
slog.Debug("Storage pool stats unavailable", "backend", b.name, "err", err) return b.poolData
} else {
b.poolData = pools
}
b.lastPoolStats = time.Now()
} }
if b.lastPoolStats.IsZero() {
b.storePoolStats(b.poolStatsFn())
return b.poolData
}
b.poolRefreshing = true
go func() {
pools, err := b.poolStatsFn()
b.cacheMu.Lock()
defer b.cacheMu.Unlock()
b.poolRefreshing = false
b.storePoolStats(pools, err)
}()
return b.poolData return b.poolData
} }
// storePoolStats records a pool inventory result. Callers must hold cacheMu.
func (b *poolBackend) storePoolStats(pools []zfs.PoolStat, err error) {
if err != nil {
slog.Debug("Storage pool stats unavailable", "backend", b.name, "err", err)
} else {
b.poolData = pools
}
b.lastPoolStats = time.Now()
}
// kernelStats reads cumulative pool counters and converts them to per-second // kernelStats reads cumulative pool counters and converts them to per-second
// rates. Counter decreases indicate a pool export/import and reset the // rates. Counter decreases indicate a pool export/import and reset the
// baseline instead of producing an underflow spike. // baseline instead of producing an underflow spike.
@@ -225,12 +252,33 @@ func (b *poolBackend) kernelStats() (map[string]zfs.PoolKernelStat, map[string]z
} }
// refreshDatasetUsage re-runs `zfs list` when the refresh window has elapsed // refreshDatasetUsage re-runs `zfs list` when the refresh window has elapsed
// and rebuilds the mountpoint-keyed usage map. // and returns the mountpoint-keyed usage map. Like poolStats, only the first
func (b *poolBackend) refreshDatasetUsage() { // collection blocks and later refreshes run in the background.
if !b.lastUsageRefresh.IsZero() && time.Since(b.lastUsageRefresh) < datasetUsageRefreshInterval { func (b *poolBackend) refreshDatasetUsage() map[string]zfsDatasetUsage {
return b.cacheMu.Lock()
defer b.cacheMu.Unlock()
if b.usageRefreshing || (!b.lastUsageRefresh.IsZero() && time.Since(b.lastUsageRefresh) < datasetUsageRefreshInterval) {
return b.datasetUsage
} }
datasets, err := b.datasets() if b.lastUsageRefresh.IsZero() {
b.storeDatasetUsage(b.datasets())
return b.datasetUsage
}
b.usageRefreshing = true
go func() {
datasets, err := b.datasets()
b.cacheMu.Lock()
defer b.cacheMu.Unlock()
b.usageRefreshing = false
b.storeDatasetUsage(datasets, err)
}()
return b.datasetUsage
}
// storeDatasetUsage rebuilds the usage map from a dataset listing. The map is
// replaced rather than mutated so returned references stay safe to read.
// Callers must hold cacheMu.
func (b *poolBackend) storeDatasetUsage(datasets []zfs.Dataset, err error) {
if err != nil { if err != nil {
slog.Debug("Storage pool dataset usage unavailable", "backend", b.name, "err", err) slog.Debug("Storage pool dataset usage unavailable", "backend", b.name, "err", err)
} else { } else {
@@ -251,8 +299,7 @@ func (b *poolBackend) refreshDatasetUsage() {
func (m *StoragePoolManager) DatasetUsage() map[string]zfsDatasetUsage { func (m *StoragePoolManager) DatasetUsage() map[string]zfsDatasetUsage {
for _, backend := range m.backends { for _, backend := range m.backends {
if backend.name == "zfs" { if backend.name == "zfs" {
backend.refreshDatasetUsage() return backend.refreshDatasetUsage()
return backend.datasetUsage
} }
} }
return nil return nil
@@ -442,7 +489,10 @@ func (m *StoragePoolManager) markDuplicateCharts(stats *system.Stats, filesystem
} }
} }
for _, backend := range m.backends { for _, backend := range m.backends {
for _, pool := range backend.poolData { backend.cacheMu.Lock()
pools := backend.poolData
backend.cacheMu.Unlock()
for _, pool := range pools {
sample := stats.ZfsPools[pool.Name] sample := stats.ZfsPools[pool.Name]
if sample == nil || pool.MountID == "" { if sample == nil || pool.MountID == "" {
continue continue
+28
View File
@@ -518,3 +518,31 @@ func TestBtrfsPoolIdentities(t *testing.T) {
assert.Equal(t, first, zm.GetDetail(true).Pools[1].Name) assert.Equal(t, first, zm.GetDetail(true).Pools[1].Name)
assert.Equal(t, "renamed", zm.GetDetail(true).Pools[1].DisplayName) assert.Equal(t, "renamed", zm.GetDetail(true).Pools[1].DisplayName)
} }
func TestStaleUtilityCachesRefreshInBackground(t *testing.T) {
release := make(chan struct{})
b := &poolBackend{name: "zfs"}
b.poolStatsFn = func() ([]zfs.PoolStat, error) {
<-release
return []zfs.PoolStat{{Name: "new"}}, nil
}
b.datasetsFn = func() ([]zfs.Dataset, error) {
<-release
return []zfs.Dataset{{Name: "new", Mountpoint: "/new"}}, nil
}
b.poolData = []zfs.PoolStat{{Name: "old"}}
b.lastPoolStats = time.Now().Add(-2 * poolStatsRefreshInterval)
b.datasetUsage = map[string]zfsDatasetUsage{"/old": {}}
b.lastUsageRefresh = time.Now().Add(-2 * datasetUsageRefreshInterval)
// A hung utility must not block collection; cached data is served meanwhile.
for range 2 {
assert.Equal(t, "old", b.poolStats()[0].Name)
assert.Contains(t, b.refreshDatasetUsage(), "/old")
}
close(release)
require.Eventually(t, func() bool {
return b.poolStats()[0].Name == "new" && b.refreshDatasetUsage()["/new"] == zfsDatasetUsage{}
}, time.Second, time.Millisecond)
}
+23 -1
View File
@@ -1,9 +1,11 @@
package main package main
import ( import (
"errors"
"fmt" "fmt"
"log" "log"
"os" "os"
"runtime"
"strings" "strings"
"github.com/henrygd/beszel" "github.com/henrygd/beszel"
@@ -14,6 +16,12 @@ import (
"golang.org/x/crypto/ssh" "golang.org/x/crypto/ssh"
) )
type noKeyProvidedError struct{}
func (noKeyProvidedError) Error() string {
return "no key provided: must set -key flag, KEY env var, or KEY_FILE env var. Use 'beszel-agent help' for usage"
}
// cli options // cli options
type cmdOptions struct { type cmdOptions struct {
key string // key is the public key(s) for SSH authentication. key string // key is the public key(s) for SSH authentication.
@@ -124,7 +132,7 @@ func (opts *cmdOptions) loadPublicKeys() ([]ssh.PublicKey, error) {
// Try key file // Try key file
keyFile, ok := utils.GetEnv("KEY_FILE") keyFile, ok := utils.GetEnv("KEY_FILE")
if !ok { if !ok {
return nil, fmt.Errorf("no key provided: must set -key flag, KEY env var, or KEY_FILE env var. Use 'beszel-agent help' for usage") return nil, noKeyProvidedError{}
} }
pubKey, err := os.ReadFile(keyFile) pubKey, err := os.ReadFile(keyFile)
@@ -138,6 +146,14 @@ func (opts *cmdOptions) getAddress() string {
return agent.GetAddress(opts.listen) return agent.GetAddress(opts.listen)
} }
func isBenignStartupError(err error, goos string) bool {
if goos != "windows" {
return false
}
var noKeyErr noKeyProvidedError
return errors.As(err, &noKeyErr)
}
// handleFingerprint handles the "fingerprint" command with subcommands "view" and "reset". // handleFingerprint handles the "fingerprint" command with subcommands "view" and "reset".
func handleFingerprint() { func handleFingerprint() {
subCmd := "" subCmd := ""
@@ -182,6 +198,12 @@ func main() {
var err error var err error
serverConfig.Keys, err = opts.loadPublicKeys() serverConfig.Keys, err = opts.loadPublicKeys()
if err != nil { if err != nil {
if isBenignStartupError(err, runtime.GOOS) {
// WinGet launches the executable without configuration during validation.
// Exit successfully in that case while retaining the error on other platforms.
log.Print("Failed to load public keys:", err)
return
}
log.Fatal("Failed to load public keys:", err) log.Fatal("Failed to load public keys:", err)
} }
+21
View File
@@ -2,6 +2,7 @@ package main
import ( import (
"crypto/ed25519" "crypto/ed25519"
"errors"
"os" "os"
"path/filepath" "path/filepath"
"testing" "testing"
@@ -187,6 +188,26 @@ func TestLoadPublicKeys(t *testing.T) {
} }
} }
func TestIsBenignStartupError(t *testing.T) {
tests := []struct {
name string
err error
goos string
want bool
}{
{name: "missing key on windows", err: noKeyProvidedError{}, goos: "windows", want: true},
{name: "wrapped missing key on windows", err: errors.Join(errors.New("startup failed"), noKeyProvidedError{}), goos: "windows", want: true},
{name: "missing key on linux", err: noKeyProvidedError{}, goos: "linux", want: false},
{name: "different error on windows", err: errors.New("invalid key"), goos: "windows", want: false},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
assert.Equal(t, tt.want, isBenignStartupError(tt.err, tt.goos))
})
}
}
func TestGetNetwork(t *testing.T) { func TestGetNetwork(t *testing.T) {
tests := []struct { tests := []struct {
name string name string
+3 -1
View File
@@ -70,7 +70,9 @@ RUN set -eux; \
# -------------------------- # --------------------------
FROM --platform=$TARGETPLATFORM debian:bookworm-slim AS zfsutils-builder FROM --platform=$TARGETPLATFORM debian:bookworm-slim AS zfsutils-builder
RUN apt-get update && apt-get install -y --no-install-recommends \ # zfsutils-linux is distributed in Debian's contrib component.
RUN sed -i 's/Components: main/Components: main contrib/' /etc/apt/sources.list.d/debian.sources \
&& apt-get update && apt-get install -y --no-install-recommends \
zfsutils-linux \ zfsutils-linux \
&& rm -rf /var/lib/apt/lists/* && rm -rf /var/lib/apt/lists/*
+9
View File
@@ -27,6 +27,13 @@ type Config struct {
Interval uint16 `cbor:"4,keyasint"` // seconds Interval uint16 `cbor:"4,keyasint"` // seconds
} }
// CertInfo holds details of the leaf TLS certificate presented by a target.
type CertInfo struct {
// Expires is the certificate's NotAfter Unix timestamp in milliseconds.
Expires int64 `cbor:"0,keyasint" json:"expires"`
Issuer string `cbor:"1,keyasint,omitempty" json:"issuer,omitempty"`
}
// SyncRequest defines an incremental or full monitor sync request sent to the agent. // SyncRequest defines an incremental or full monitor sync request sent to the agent.
type SyncRequest struct { type SyncRequest struct {
Action SyncAction `cbor:"0,keyasint"` Action SyncAction `cbor:"0,keyasint"`
@@ -76,6 +83,8 @@ type Result struct {
TotalCount int64 `cbor:"10,keyasint"` TotalCount int64 `cbor:"10,keyasint"`
SuccessCount int64 `cbor:"11,keyasint"` SuccessCount int64 `cbor:"11,keyasint"`
ResponseSum int64 `cbor:"12,keyasint"` ResponseSum int64 `cbor:"12,keyasint"`
// Cert is set for HTTPS targets when a certificate check has new info the hub has not stored yet.
Cert *CertInfo `cbor:"13,keyasint,omitempty"`
} }
// Stats holds response times in microseconds and packet loss percentage (0-100). // Stats holds response times in microseconds and packet loss percentage (0-100).
+3
View File
@@ -114,6 +114,9 @@ func setMonitorResultFields(record *core.Record, result monitor.Result) {
record.Set("resMin1h", result.MinResponse1h) record.Set("resMin1h", result.MinResponse1h)
record.Set("resMax1h", result.MaxResponse1h) record.Set("resMax1h", result.MaxResponse1h)
record.Set("loss1h", result.PacketLoss1h) record.Set("loss1h", result.PacketLoss1h)
if result.Cert != nil {
record.Set("certInfo", result.Cert)
}
record.Set("updated", nowString) record.Set("updated", nowString)
} }
+2
View File
@@ -206,6 +206,7 @@ func TestCopyMonitorToNewRecordDropsResultFields(t *testing.T) {
"resMin1h": 900, "resMin1h": 900,
"resMax1h": 1600, "resMax1h": 1600,
"loss1h": 5, "loss1h": 5,
"certInfo": map[string]any{"expires": 1800000000000},
"updated": "2026-04-29 12:00:00.000Z", "updated": "2026-04-29 12:00:00.000Z",
}) })
@@ -216,6 +217,7 @@ func TestCopyMonitorToNewRecordDropsResultFields(t *testing.T) {
assert.Equal(t, "http", newRecord.GetString("protocol")) assert.Equal(t, "http", newRecord.GetString("protocol"))
assert.Equal(t, 443, newRecord.GetInt("port")) assert.Equal(t, 443, newRecord.GetInt("port"))
assert.True(t, newRecord.GetBool("enabled")) assert.True(t, newRecord.GetBool("enabled"))
assert.Contains(t, []string{"", "null"}, newRecord.GetString("certInfo"))
assert.Zero(t, newRecord.GetFloat("res")) assert.Zero(t, newRecord.GetFloat("res"))
assert.Zero(t, newRecord.GetFloat("resAvg1h")) assert.Zero(t, newRecord.GetFloat("resAvg1h"))
assert.Zero(t, newRecord.GetFloat("resMin1h")) assert.Zero(t, newRecord.GetFloat("resMin1h"))
@@ -222,3 +222,49 @@ func TestNetworkMonitorAlertsAfterCommit(t *testing.T) {
}) })
} }
} }
func TestNetworkMonitorCertPersistence(t *testing.T) {
for _, realtime := range []bool{false, true} {
name := "sql"
if realtime {
name = "realtime"
}
t.Run(name, func(t *testing.T) {
sys, app := newTestSystemWithHub(t)
if realtime {
client := subscriptions.NewDefaultClient()
client.Subscribe("network_monitors/*")
app.SubscriptionsBroker().Register(client)
t.Cleanup(func() { app.SubscriptionsBroker().Unregister(client.Id()) })
}
col, err := app.FindCachedCollectionByNameOrId("network_monitors")
require.NoError(t, err)
record := core.NewRecord(col)
record.Id = "monitor1"
record.Set("system", sys.Id)
require.NoError(t, app.SaveNoValidate(record))
storedCert := func() monitor.CertInfo {
t.Helper()
record, err := app.FindRecordById("network_monitors", "monitor1")
require.NoError(t, err)
var cert monitor.CertInfo
require.NoError(t, record.UnmarshalJSONField("certInfo", &cert))
return cert
}
cert := &monitor.CertInfo{Expires: 1_800_000_000_000, Issuer: "Test CA"}
_, err = sys.createRecords(&system.CombinedData{Monitors: map[string]monitor.Result{
"monitor1": {LastProbeAt: 1000, Cert: cert},
}})
require.NoError(t, err)
assert.Equal(t, *cert, storedCert())
// Results without cert info keep the stored certificate.
_, err = sys.createRecords(&system.CombinedData{Monitors: map[string]monitor.Result{
"monitor1": {LastProbeAt: 2000},
}})
require.NoError(t, err)
assert.Equal(t, *cert, storedCert())
})
}
}
+28 -2
View File
@@ -433,6 +433,8 @@ func (sys *System) updateNetworkMonitorsRecords(app core.App, monitorResults map
for i, f := range monitorFields { for i, f := range monitorFields {
setClauses[i] = fmt.Sprintf("%s={:%s}", f, f) setClauses[i] = fmt.Sprintf("%s={:%s}", f, f)
} }
// Results omit certInfo unless it changed, so keep the stored value.
setClauses = append(setClauses, "certInfo=COALESCE({:certInfo}, certInfo)")
queryString := fmt.Sprintf("UPDATE %s SET %s WHERE id={:id}", monitorCollectionName, strings.Join(setClauses, ", ")) queryString := fmt.Sprintf("UPDATE %s SET %s WHERE id={:id}", monitorCollectionName, strings.Join(setClauses, ", "))
updateQuery = db.NewQuery(queryString) updateQuery = db.NewQuery(queryString)
} }
@@ -453,11 +455,23 @@ func (sys *System) updateNetworkMonitorsRecords(app core.App, monitorResults map
var record *core.Record var record *core.Record
record, err = app.FindRecordById(monitorCollectionName, id) record, err = app.FindRecordById(monitorCollectionName, id)
if err == nil { if err == nil {
if result.Cert != nil {
monitorData["certInfo"] = result.Cert
}
record.Load(monitorData) record.Load(monitorData)
err = app.SaveNoValidate(record) err = app.SaveNoValidate(record)
} }
default: default:
_, err = updateQuery.Bind(dbx.Params(monitorData)).Execute() monitorData["certInfo"] = nil
if result.Cert != nil {
var cert []byte
if cert, err = json.Marshal(result.Cert); err == nil {
monitorData["certInfo"] = string(cert)
}
}
if err == nil {
_, err = updateQuery.Bind(dbx.Params(monitorData)).Execute()
}
} }
if err != nil { if err != nil {
app.Logger().Warn("Failed to update monitor", "system", systemId, "monitor", id, "err", err) app.Logger().Warn("Failed to update monitor", "system", systemId, "monitor", id, "err", err)
@@ -697,6 +711,11 @@ func (sys *System) fetchDataFromAgent(options common.DataRequestOptions) (*syste
sys.syncPendingNetworkMonitors() sys.syncPendingNetworkMonitors()
return wsData, nil return wsData, nil
} }
// A slow collection doesn't mean the connection is broken. Closing it
// would force the agent into a reconnect loop, so only report the error.
if errors.Is(err, context.DeadlineExceeded) {
return nil, err
}
// close the WebSocket connection if error and try SSH // close the WebSocket connection if error and try SSH
sys.closeWebSocketConnection() sys.closeWebSocketConnection()
} }
@@ -709,12 +728,19 @@ func (sys *System) fetchDataFromAgent(options common.DataRequestOptions) (*syste
return sshData, nil return sshData, nil
} }
// wsDataRequestTimeout bounds how long to wait for stats over WebSocket. Agent
// collection can legitimately take several seconds (e.g. a slow `zpool list`),
// so this must be well above the request manager's 5s default.
var wsDataRequestTimeout = 30 * time.Second
func (sys *System) fetchDataViaWebSocket(options common.DataRequestOptions) (*system.CombinedData, error) { func (sys *System) fetchDataViaWebSocket(options common.DataRequestOptions) (*system.CombinedData, error) {
if sys.WsConn == nil || !sys.WsConn.IsConnected() { if sys.WsConn == nil || !sys.WsConn.IsConnected() {
return nil, errors.New("no websocket connection") return nil, errors.New("no websocket connection")
} }
ctx, cancel := context.WithTimeout(context.Background(), wsDataRequestTimeout)
defer cancel()
wsTransport := transport.NewWebSocketTransport(sys.WsConn) wsTransport := transport.NewWebSocketTransport(sys.WsConn)
err := wsTransport.Request(context.Background(), common.GetData, options, sys.data) err := wsTransport.Request(ctx, common.GetData, options, sys.data)
if err != nil { if err != nil {
return nil, err return nil, err
} }
+18 -8
View File
@@ -190,7 +190,9 @@ func (sm *SystemManager) onRecordAfterCreateSuccess(e *core.RecordEvent) error {
// It clears system info when the status is changed to paused. // It clears system info when the status is changed to paused.
func (sm *SystemManager) onRecordUpdate(e *core.RecordEvent) error { func (sm *SystemManager) onRecordUpdate(e *core.RecordEvent) error {
if e.Record.GetString("status") == paused { if e.Record.GetString("status") == paused {
e.Record.Set("info", system.Info{}) var prevInfo system.Info
e.Record.UnmarshalJSONField("info", &prevInfo)
e.Record.Set("info", system.Info{AgentVersion: prevInfo.AgentVersion})
} }
return e.Next() return e.Next()
} }
@@ -217,11 +219,15 @@ func (sm *SystemManager) onRecordAfterUpdateSuccess(e *core.RecordEvent) error {
// Pause monitoring but keep system in manager for potential resume // Pause monitoring but keep system in manager for potential resume
system.closeSSHConnection() system.closeSSHConnection()
} }
_ = deactivateAlerts(e.App, e.Record.Id) _ = deactivateAlerts(e.App, e.Record.Id, false)
sm.hub.CancelPendingStatusAlerts(e.Record.Id) sm.hub.CancelPendingStatusAlerts(e.Record.Id)
sm.hub.CancelPendingContainerAlerts(e.Record.Id) sm.hub.CancelPendingContainerAlerts(e.Record.Id)
return e.Next() return e.Next()
case pending: case pending:
// Keep an active status alert until connectivity is confirmed. This lets
// pending -> up resolve it and send the recovery notification after a
// system address or other connection setting is changed.
_ = deactivateAlerts(e.App, e.Record.Id, true)
// Resume monitoring, preferring existing WebSocket connection // Resume monitoring, preferring existing WebSocket connection
if ok && system.WsConn != nil { if ok && system.WsConn != nil {
go system.update() go system.update()
@@ -231,7 +237,6 @@ func (sm *SystemManager) onRecordAfterUpdateSuccess(e *core.RecordEvent) error {
if err := sm.AddRecord(e.Record, nil); err != nil { if err := sm.AddRecord(e.Record, nil); err != nil {
e.App.Logger().Error("Error adding record", "err", err) e.App.Logger().Error("Error adding record", "err", err)
} }
_ = deactivateAlerts(e.App, e.Record.Id)
return e.Next() return e.Next()
case down: case down:
// Docker state is unknown while the system is unreachable. Do not let a // Docker state is unknown while the system is unreachable. Do not let a
@@ -254,8 +259,9 @@ func (sm *SystemManager) onRecordAfterUpdateSuccess(e *core.RecordEvent) error {
} }
} }
// Trigger status change alerts for up/down transitions // A connection-setting update moves a down system through pending before it
if (newStatus == down && prevStatus == up) || (newStatus == up && prevStatus == down) { // comes up, so recover active status alerts on any non-up -> up transition.
if (newStatus == down && prevStatus == up) || (newStatus == up && prevStatus != up) {
if err := sm.hub.HandleStatusAlerts(newStatus, e.Record); err != nil { if err := sm.hub.HandleStatusAlerts(newStatus, e.Record); err != nil {
e.App.Logger().Error("Error handling status alerts", "err", err) e.App.Logger().Error("Error handling status alerts", "err", err)
} }
@@ -413,10 +419,11 @@ func (sm *SystemManager) createSSHClientConfig() error {
return nil return nil
} }
// deactivateAlerts finds all triggered alerts for a system and sets them to inactive. // deactivateAlerts finds triggered alerts for a system and sets them to inactive.
// This is called when a system is paused or goes offline to prevent continued alerts. // Status alerts can be preserved while connection changes are pending so that a
// confirmed recovery still produces an "up" notification.
// Monitor incidents remain open: a missing observation does not establish recovery. // Monitor incidents remain open: a missing observation does not establish recovery.
func deactivateAlerts(app core.App, systemID string) error { func deactivateAlerts(app core.App, systemID string, preserveStatusAlert bool) error {
// Note: Direct SQL updates don't trigger SSE, so we use the PocketBase API // Note: Direct SQL updates don't trigger SSE, so we use the PocketBase API
// _, err := app.DB().NewQuery(fmt.Sprintf("UPDATE alerts SET triggered = false WHERE system = '%s'", systemID)).Execute() // _, err := app.DB().NewQuery(fmt.Sprintf("UPDATE alerts SET triggered = false WHERE system = '%s'", systemID)).Execute()
@@ -426,6 +433,9 @@ func deactivateAlerts(app core.App, systemID string) error {
} }
for _, alert := range alerts { for _, alert := range alerts {
if preserveStatusAlert && alert.GetString("name") == "Status" {
continue
}
alert.Set("triggered", false) alert.Set("triggered", false)
if err := app.SaveNoValidate(alert); err != nil { if err := app.SaveNoValidate(alert); err != nil {
return err return err
+81
View File
@@ -18,6 +18,38 @@ import (
"github.com/stretchr/testify/require" "github.com/stretchr/testify/require"
) )
func TestPauseSystemPreservesAgentVersion(t *testing.T) {
hub, user := tests.GetHubWithUser(t)
defer hub.Cleanup()
record, err := tests.CreateRecord(hub, "systems", map[string]any{
"name": "pause-info-test",
"host": "localhost",
"port": "33914",
"users": []string{user.Id},
})
require.NoError(t, err)
record.Set("info", system.Info{
AgentVersion: "0.20.0",
Cpu: 42.5,
MemPct: 60,
Uptime: 3600,
Services: []uint16{3, 1},
})
require.NoError(t, hub.Save(record))
record.Set("status", "paused")
require.NoError(t, hub.Save(record))
pausedRecord, err := hub.FindRecordById("systems", record.Id)
require.NoError(t, err)
assert.Equal(t, "paused", pausedRecord.GetString("status"))
var info system.Info
require.NoError(t, pausedRecord.UnmarshalJSONField("info", &info))
assert.Equal(t, system.Info{AgentVersion: "0.20.0"}, info)
}
func TestSystemManagerNew(t *testing.T) { func TestSystemManagerNew(t *testing.T) {
hub, err := tests.NewTestHub(t.TempDir()) hub, err := tests.NewTestHub(t.TempDir())
if err != nil { if err != nil {
@@ -133,6 +165,55 @@ func TestSystemManagerNew(t *testing.T) {
}) })
} }
func TestStatusAlertRecoveryAfterPendingTransition(t *testing.T) {
hub, user := tests.GetHubWithUser(t)
defer hub.Cleanup()
userSettings, err := hub.FindFirstRecordByFilter("user_settings", "user={:user}", map[string]any{"user": user.Id})
require.NoError(t, err)
userSettings.Set("settings", map[string]any{
"emails": []string{"test@example.com"},
"webhooks": []string{},
})
require.NoError(t, hub.Save(userSettings))
record, err := tests.CreateRecord(hub, "systems", map[string]any{
"name": "changed-address",
"host": "192.0.2.1",
"port": "33914",
"users": []string{user.Id},
})
require.NoError(t, err)
record.Set("status", "down")
require.NoError(t, hub.Save(record))
alert, err := tests.CreateRecord(hub, "alerts", map[string]any{
"name": "Status",
"system": record.Id,
"user": user.Id,
"min": 1,
"triggered": true,
})
require.NoError(t, err)
initialEmailCount := hub.TestMailer.TotalSend()
// The edit dialog temporarily moves the system through pending. The active
// status alert must remain active until the new connection is confirmed.
record.Set("host", "192.0.2.2")
record.Set("status", "pending")
require.NoError(t, hub.Save(record))
alert, err = hub.FindRecordById("alerts", alert.Id)
require.NoError(t, err)
assert.True(t, alert.GetBool("triggered"), "pending connection update should preserve the active status alert")
record.Set("status", "up")
require.NoError(t, hub.Save(record))
alert, err = hub.FindRecordById("alerts", alert.Id)
require.NoError(t, err)
assert.False(t, alert.GetBool("triggered"), "pending -> up should resolve the active status alert")
assert.Equal(t, initialEmailCount+1, hub.TestMailer.TotalSend(), "recovery should send an up notification")
}
func testOld(t *testing.T, hub *tests.TestHub) { func testOld(t *testing.T, hub *tests.TestHub) {
user, err := tests.CreateUser(hub, "test@testy.com", "testtesttest") user, err := tests.CreateUser(hub, "test@testy.com", "testtesttest")
require.NoError(t, err) require.NoError(t, err)
@@ -0,0 +1,82 @@
//go:build testing
package systems
import (
"context"
"net/http"
"net/http/httptest"
"strings"
"testing"
"time"
"github.com/blang/semver"
"github.com/fxamacker/cbor/v2"
"github.com/henrygd/beszel/internal/common"
esystem "github.com/henrygd/beszel/internal/entities/system"
"github.com/henrygd/beszel/internal/hub/ws"
"github.com/lxzan/gws"
"github.com/stretchr/testify/require"
)
// slowDataClient answers GetData only after release is closed, simulating an
// agent whose collection outlasts the hub's request timeout.
type slowDataClient struct {
gws.BuiltinEventHandler
release chan struct{}
}
func (c *slowDataClient) OnMessage(conn *gws.Conn, message *gws.Message) {
defer message.Close()
var req common.HubRequest[cbor.RawMessage]
if err := cbor.Unmarshal(message.Bytes(), &req); err != nil || req.Action != common.GetData {
return
}
<-c.release
response, _ := cbor.Marshal(common.AgentResponse{Id: req.Id, SystemData: &esystem.CombinedData{}})
_ = conn.WriteMessage(gws.OpcodeBinary, response)
}
func TestFetchDataTimeoutKeepsWebSocketOpen(t *testing.T) {
originalTimeout := wsDataRequestTimeout
wsDataRequestTimeout = 50 * time.Millisecond
t.Cleanup(func() { wsDataRequestTimeout = originalTimeout })
connections := make(chan *ws.WsConn, 1)
upgrader := gws.NewUpgrader(&monitorSyncServer{}, nil)
server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
conn, err := upgrader.Upgrade(w, r)
if err != nil {
t.Error(err)
return
}
wsConn := ws.NewWsConnection(conn, semver.MustParse("0.20.0"))
conn.Session().Store("wsConn", wsConn)
connections <- wsConn
conn.ReadLoop()
}))
t.Cleanup(server.Close)
client := &slowDataClient{release: make(chan struct{})}
conn, _, err := gws.NewClient(client, &gws.ClientOption{Addr: "ws" + strings.TrimPrefix(server.URL, "http")})
require.NoError(t, err)
t.Cleanup(func() { _ = conn.NetConn().Close() })
go conn.ReadLoop()
var sys *System
select {
case wsConn := <-connections:
sys = &System{WsConn: wsConn}
case <-time.After(3 * time.Second):
t.Fatal("websocket connection was not established")
}
_, err = sys.fetchDataFromAgent(common.DataRequestOptions{})
require.ErrorIs(t, err, context.DeadlineExceeded)
require.True(t, sys.WsConn.IsConnected(), "a slow collection must not close the connection")
// The late response is discarded and the next request still succeeds.
close(client.release)
_, err = sys.fetchDataFromAgent(common.DataRequestOptions{})
require.NoError(t, err)
}
+21 -19
View File
@@ -58,36 +58,38 @@ func Update(cmd *cobra.Command, _ []string) {
func restartService() { func restartService() {
// Check if we're running as a service by looking for systemd // Check if we're running as a service by looking for systemd
if _, err := exec.LookPath("systemctl"); err == nil { if _, err := exec.LookPath("systemctl"); err == nil {
// Check if beszel service exists and is active // install-hub.sh names the unit beszel-hub.service. beszel.service is
cmd := exec.Command("systemctl", "is-active", "beszel.service") // kept as a fallback for hand written units.
if err := cmd.Run(); err == nil { for _, unit := range []string{"beszel-hub.service", "beszel.service"} {
ghupdate.ColorPrint(ghupdate.ColorYellow, "Restarting beszel service...") if err := exec.Command("systemctl", "is-active", unit).Run(); err != nil {
restartCmd := exec.Command("systemctl", "restart", "beszel.service") continue
if err := restartCmd.Run(); err != nil {
ghupdate.ColorPrintf(ghupdate.ColorYellow, "Warning: Failed to restart service: %v\n", err)
ghupdate.ColorPrint(ghupdate.ColorYellow, "Please restart the service manually: sudo systemctl restart beszel")
} else {
ghupdate.ColorPrint(ghupdate.ColorGreen, "Service restarted successfully")
} }
reportRestart(exec.Command("systemctl", "restart", unit), "sudo systemctl restart "+unit)
return return
} }
} }
// Check for OpenRC (Alpine Linux) // Check for OpenRC (Alpine Linux)
if _, err := exec.LookPath("rc-service"); err == nil { if _, err := exec.LookPath("rc-service"); err == nil {
cmd := exec.Command("rc-service", "beszel", "status") for _, service := range []string{"beszel-hub", "beszel"} {
if err := cmd.Run(); err == nil { if err := exec.Command("rc-service", service, "status").Run(); err != nil {
ghupdate.ColorPrint(ghupdate.ColorYellow, "Restarting beszel service...") continue
restartCmd := exec.Command("rc-service", "beszel", "restart")
if err := restartCmd.Run(); err != nil {
ghupdate.ColorPrintf(ghupdate.ColorYellow, "Warning: Failed to restart service: %v\n", err)
ghupdate.ColorPrint(ghupdate.ColorYellow, "Please restart the service manually: sudo rc-service beszel restart")
} else {
ghupdate.ColorPrint(ghupdate.ColorGreen, "Service restarted successfully")
} }
reportRestart(exec.Command("rc-service", service, "restart"), "sudo rc-service "+service+" restart")
return return
} }
} }
ghupdate.ColorPrint(ghupdate.ColorYellow, "Service restart not attempted. If running as a service, restart manually.") ghupdate.ColorPrint(ghupdate.ColorYellow, "Service restart not attempted. If running as a service, restart manually.")
} }
// reportRestart runs the restart command and prints the result.
func reportRestart(cmd *exec.Cmd, manualCommand string) {
ghupdate.ColorPrint(ghupdate.ColorYellow, "Restarting beszel service...")
if err := cmd.Run(); err != nil {
ghupdate.ColorPrintf(ghupdate.ColorYellow, "Warning: Failed to restart service: %v\n", err)
ghupdate.ColorPrint(ghupdate.ColorYellow, "Please restart the service manually: "+manualCommand)
} else {
ghupdate.ColorPrint(ghupdate.ColorGreen, "Service restarted successfully")
}
}
@@ -0,0 +1,24 @@
package migrations
import (
"github.com/pocketbase/pocketbase/core"
m "github.com/pocketbase/pocketbase/migrations"
)
func init() {
m.Register(func(app core.App) error {
collection, err := app.FindCollectionByNameOrId("network_monitors")
if err != nil {
return err
}
collection.Fields.Add(&core.JSONField{Name: "certInfo"})
return app.Save(collection)
}, func(app core.App) error {
collection, err := app.FindCollectionByNameOrId("network_monitors")
if err != nil {
return err
}
collection.Fields.RemoveByName("certInfo")
return app.Save(collection)
})
}
+4 -6
View File
@@ -116,8 +116,6 @@ export const SystemDialog = ({ setOpen, system }: { setOpen: (open: boolean) =>
} }
} }
const systemTranslation = t`System`
return ( return (
<DialogContent <DialogContent
className="w-[90%] sm:w-auto sm:ns-dialog max-w-full rounded-lg" className="w-[90%] sm:w-auto sm:ns-dialog max-w-full rounded-lg"
@@ -129,9 +127,9 @@ export const SystemDialog = ({ setOpen, system }: { setOpen: (open: boolean) =>
<DialogHeader> <DialogHeader>
<DialogTitle className="mb-1 pb-1 max-w-100 truncate pr-8"> <DialogTitle className="mb-1 pb-1 max-w-100 truncate pr-8">
{system ? ( {system ? (
<Trans>Edit {{ foo: systemTranslation }}</Trans> <Trans>Edit System</Trans>
) : ( ) : (
<Trans>Add {{ foo: systemTranslation }}</Trans> <Trans>Add System</Trans>
)} )}
</DialogTitle> </DialogTitle>
<TabsList className="grid w-full grid-cols-2"> <TabsList className="grid w-full grid-cols-2">
@@ -268,9 +266,9 @@ export const SystemDialog = ({ setOpen, system }: { setOpen: (open: boolean) =>
{/* Save */} {/* Save */}
<Button> <Button>
{system ? ( {system ? (
<Trans>Save {{ foo: systemTranslation }}</Trans> <Trans>Save System</Trans>
) : ( ) : (
<Trans>Add {{ foo: systemTranslation }}</Trans> <Trans>Add System</Trans>
)} )}
</Button> </Button>
</DialogFooter> </DialogFooter>
+2 -5
View File
@@ -1,4 +1,3 @@
import { t } from "@lingui/core/macro"
import { Trans } from "@lingui/react/macro" import { Trans } from "@lingui/react/macro"
import { getPagePath } from "@nanostores/router" import { getPagePath } from "@nanostores/router"
import { import {
@@ -48,8 +47,6 @@ export default function Navbar() {
const AdminLinks = AdminDropdownGroup() const AdminLinks = AdminDropdownGroup()
const systemTranslation = t`System`
return ( return (
<div className="flex items-center h-14 md:h-16 bg-card px-4 pe-3 sm:px-6 border border-border/60 bt-0 rounded-md my-4"> <div className="flex items-center h-14 md:h-16 bg-card px-4 pe-3 sm:px-6 border border-border/60 bt-0 rounded-md my-4">
<Suspense> <Suspense>
@@ -140,7 +137,7 @@ export default function Navbar() {
}} }}
> >
<PlusIcon className="h-4 w-4 me-2.5" /> <PlusIcon className="h-4 w-4 me-2.5" />
<Trans>Add {{ foo: systemTranslation }}</Trans> <Trans>Add System</Trans>
</DropdownMenuItem> </DropdownMenuItem>
)} )}
</DropdownMenuGroup> </DropdownMenuGroup>
@@ -243,7 +240,7 @@ export default function Navbar() {
{!isReadOnlyUser() && ( {!isReadOnlyUser() && (
<Button variant="outline" className="flex gap-1 ms-2" onClick={() => setAddSystemDialogOpen(true)}> <Button variant="outline" className="flex gap-1 ms-2" onClick={() => setAddSystemDialogOpen(true)}>
<PlusIcon className="h-4 w-4 -ms-1" /> <PlusIcon className="h-4 w-4 -ms-1" />
<Trans>Add {{ foo: systemTranslation }}</Trans> <Trans>Add System</Trans>
</Button> </Button>
)} )}
</div> </div>
@@ -23,7 +23,7 @@ import { Input } from "@/components/ui/input"
import { Label } from "@/components/ui/label" import { Label } from "@/components/ui/label"
import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select" import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select"
import { Textarea } from "@/components/ui/textarea" import { Textarea } from "@/components/ui/textarea"
import { ChevronDownIcon, ListIcon, SearchIcon, ServerIcon } from "lucide-react" import { ChevronDownIcon, ListIcon, PlusIcon, SearchIcon, ServerIcon } from "lucide-react"
import { useToast } from "@/components/ui/use-toast" import { useToast } from "@/components/ui/use-toast"
import { $systems } from "@/lib/stores" import { $systems } from "@/lib/stores"
import { cn, supportsNetworkMonitors } from "@/lib/utils" import { cn, supportsNetworkMonitors } from "@/lib/utils"
@@ -353,6 +353,8 @@ export function AddMonitorDialog({ systemId, monitors }: { systemId?: string; mo
const bulkFormRef = useRef<HTMLFormElement>(null) const bulkFormRef = useRef<HTMLFormElement>(null)
const { toast } = useToast() const { toast } = useToast()
const { t } = useLingui() const { t } = useLingui()
const systems = useStore($systems)
const hasEligibleSystems = systemId ? true : systems.some(supportsNetworkMonitors)
const resetBulkForm = () => { const resetBulkForm = () => {
setBulkInput("") setBulkInput("")
@@ -443,14 +445,24 @@ export function AddMonitorDialog({ systemId, monitors }: { systemId?: string; mo
return ( return (
<> <>
<div className="flex gap-0 rounded-lg"> <div className="flex gap-0 rounded-lg">
<Button variant="outline" onClick={openAdd} className="rounded-e-none grow"> <Button variant="outline" onClick={openAdd} className="rounded-e-none grow" disabled={!hasEligibleSystems}>
{/* <PlusIcon className="size-4 me-1" /> */} <PlusIcon className="size-4 me-1" />
<Trans>Add {{ foo: t`Monitor` }}</Trans> <span className="sm:hidden">
<Trans>Add</Trans>
</span>
<span className="hidden sm:inline">
<Trans>Add {{ foo: t`Monitor` }}</Trans>
</span>
</Button> </Button>
<div className="w-px h-full bg-muted"></div> <div className="w-px h-full bg-muted"></div>
<DropdownMenu> <DropdownMenu>
<DropdownMenuTrigger asChild> <DropdownMenuTrigger asChild>
<Button variant="outline" className="px-2 rounded-s-none border-s-0" aria-label={`More actions`}> <Button
variant="outline"
className="px-2 rounded-s-none border-s-0"
aria-label={`More actions`}
disabled={!hasEligibleSystems}
>
<ChevronDownIcon className="size-4" /> <ChevronDownIcon className="size-4" />
</Button> </Button>
</DropdownMenuTrigger> </DropdownMenuTrigger>
@@ -485,7 +497,9 @@ export function AddMonitorDialog({ systemId, monitors }: { systemId?: string; mo
<SheetTitle> <SheetTitle>
<Trans>Bulk Add {{ foo: t`Network Monitors` }}</Trans> <Trans>Bulk Add {{ foo: t`Network Monitors` }}</Trans>
</SheetTitle> </SheetTitle>
<SheetDescription>target[,protocol[,port[,interval]]]</SheetDescription> <SheetDescription>
<Trans>target[,protocol[,port[,interval]]]</Trans>
</SheetDescription>
</SheetHeader> </SheetHeader>
<form ref={bulkFormRef} onSubmit={handleBulkSubmit} className="flex h-full flex-col overflow-hidden"> <form ref={bulkFormRef} onSubmit={handleBulkSubmit} className="flex h-full flex-col overflow-hidden">
<div className="flex-1 flex flex-col space-y-4 overflow-auto p-4"> <div className="flex-1 flex flex-col space-y-4 overflow-auto p-4">
@@ -521,7 +535,9 @@ export function AddMonitorDialog({ systemId, monitors }: { systemId?: string; mo
placeholder={["1.1.1.1", "example.com,tcp", "https://example.com,http,,60"].join("\n")} placeholder={["1.1.1.1", "example.com,tcp", "https://example.com,http,,60"].join("\n")}
required required
/> />
<p className="text-xs text-muted-foreground">target[,protocol[,port[,interval]]]</p> <p className="text-xs text-muted-foreground">
<Trans>target[,protocol[,port[,interval]]]</Trans>
</p>
</div> </div>
</div> </div>
<SheetFooter className="border-t"> <SheetFooter className="border-t">
@@ -16,6 +16,7 @@ import {
PlayCircleIcon, PlayCircleIcon,
CopyIcon, CopyIcon,
CopyPlusIcon, CopyPlusIcon,
ShieldCheckIcon,
} from "lucide-react" } from "lucide-react"
import { t } from "@lingui/core/macro" import { t } from "@lingui/core/macro"
import type { NetworkMonitorRecord, SystemRecord } from "@/types" import type { NetworkMonitorRecord, SystemRecord } from "@/types"
@@ -29,7 +30,7 @@ import {
DropdownMenuSubTrigger, DropdownMenuSubTrigger,
DropdownMenuTrigger, DropdownMenuTrigger,
} from "@/components/ui/dropdown-menu" } from "@/components/ui/dropdown-menu"
import { Trans } from "@lingui/react/macro" import { Plural, Trans } from "@lingui/react/macro"
import { $allSystemsById, $longestSystemName } from "@/lib/stores" import { $allSystemsById, $longestSystemName } from "@/lib/stores"
import { useStore } from "@nanostores/react" import { useStore } from "@nanostores/react"
import { SystemStatus } from "@/lib/enums" import { SystemStatus } from "@/lib/enums"
@@ -37,9 +38,17 @@ import { Checkbox } from "@/components/ui/checkbox"
import { useMemo } from "react" import { useMemo } from "react"
import { formatBulkMonitorLine } from "@/components/network-monitors-table/monitor-dialog" import { formatBulkMonitorLine } from "@/components/network-monitors-table/monitor-dialog"
import { Badge } from "../ui/badge" import { Badge } from "../ui/badge"
import { getMonitorTarget } from "@/lib/network-monitor-utils" import { getCertDaysLeft, getCertExpiryLevel, getMonitorTarget } from "@/lib/network-monitor-utils"
import { pb } from "@/lib/api" import { pb } from "@/lib/api"
const certExpiryDotColors = { ok: "bg-green-500", warning: "bg-yellow-500", critical: "bg-red-500" }
declare module "@tanstack/react-table" {
interface ColumnMeta<TData, TValue> {
label?: string
}
}
const protocolColors: Record<string, string> = { const protocolColors: Record<string, string> = {
icmp: "bg-blue-500/15! text-blue-600 dark:text-blue-400", icmp: "bg-blue-500/15! text-blue-600 dark:text-blue-400",
tcp: "bg-purple-500/15! text-purple-600 dark:text-purple-400", tcp: "bg-purple-500/15! text-purple-600 dark:text-purple-400",
@@ -98,6 +107,7 @@ export function getMonitorColumns(
}, },
{ {
id: "system", id: "system",
meta: { label: t`System` },
accessorFn: (record) => record.system, accessorFn: (record) => record.system,
sortingFn: (a, b) => { sortingFn: (a, b) => {
const allSystems = $allSystemsById.get() const allSystems = $allSystemsById.get()
@@ -128,12 +138,13 @@ export function getMonitorColumns(
</div> </div>
</div> </div>
), ),
[status, name] [status, name, longestSystemName]
) )
}, },
}, },
{ {
id: "target", id: "target",
meta: { label: t`Target` },
sortingFn: (a, b) => a.original.target.localeCompare(b.original.target), sortingFn: (a, b) => a.original.target.localeCompare(b.original.target),
accessorFn: (record) => getMonitorTarget(record), accessorFn: (record) => getMonitorTarget(record),
header: ({ column }) => <HeaderButton column={column} name={t`Target`} Icon={GlobeIcon} />, header: ({ column }) => <HeaderButton column={column} name={t`Target`} Icon={GlobeIcon} />,
@@ -146,6 +157,8 @@ export function getMonitorColumns(
color = "bg-primary/40" color = "bg-primary/40"
} else if (status === SystemStatus.Down || status === SystemStatus.Pending) { } else if (status === SystemStatus.Down || status === SystemStatus.Pending) {
color = "bg-yellow-500" color = "bg-yellow-500"
} else if (monitor.updated && !monitor.res) {
color = "bg-red-500"
} }
return ( return (
<div className="ms-1.5 max-w-64 flex gap-2 items-center tabular-nums"> <div className="ms-1.5 max-w-64 flex gap-2 items-center tabular-nums">
@@ -162,6 +175,7 @@ export function getMonitorColumns(
}, },
{ {
id: "protocol", id: "protocol",
meta: { label: t`Protocol` },
accessorFn: (record) => record.protocol, accessorFn: (record) => record.protocol,
header: ({ column }) => <HeaderButton column={column} name={t`Protocol`} Icon={ArrowLeftRightIcon} />, header: ({ column }) => <HeaderButton column={column} name={t`Protocol`} Icon={ArrowLeftRightIcon} />,
cell: ({ getValue }) => { cell: ({ getValue }) => {
@@ -171,6 +185,7 @@ export function getMonitorColumns(
}, },
{ {
id: "interval", id: "interval",
meta: { label: t`Interval` },
accessorFn: (record) => record.interval, accessorFn: (record) => record.interval,
invertSorting: true, invertSorting: true,
header: ({ column }) => <HeaderButton column={column} name={t`Interval`} Icon={RefreshCwIcon} />, header: ({ column }) => <HeaderButton column={column} name={t`Interval`} Icon={RefreshCwIcon} />,
@@ -178,6 +193,7 @@ export function getMonitorColumns(
}, },
{ {
id: "res", id: "res",
meta: { label: t`Response` },
accessorFn: (record) => record.res, accessorFn: (record) => record.res,
invertSorting: true, invertSorting: true,
header: ({ column }) => <HeaderButton column={column} name={t`Response`} Icon={TimerIcon} />, header: ({ column }) => <HeaderButton column={column} name={t`Response`} Icon={TimerIcon} />,
@@ -185,6 +201,7 @@ export function getMonitorColumns(
}, },
{ {
id: "res1h", id: "res1h",
meta: { label: t`Avg 1h` },
accessorFn: (record) => record.resAvg1h, accessorFn: (record) => record.resAvg1h,
invertSorting: true, invertSorting: true,
header: ({ column }) => <HeaderButton column={column} name={t`Avg 1h`} Icon={TimerIcon} />, header: ({ column }) => <HeaderButton column={column} name={t`Avg 1h`} Icon={TimerIcon} />,
@@ -192,6 +209,7 @@ export function getMonitorColumns(
}, },
{ {
id: "max1h", id: "max1h",
meta: { label: t`Max 1h` },
accessorFn: (record) => record.resMax1h, accessorFn: (record) => record.resMax1h,
invertSorting: true, invertSorting: true,
header: ({ column }) => <HeaderButton column={column} name={t`Max 1h`} Icon={TimerIcon} />, header: ({ column }) => <HeaderButton column={column} name={t`Max 1h`} Icon={TimerIcon} />,
@@ -199,6 +217,7 @@ export function getMonitorColumns(
}, },
{ {
id: "min1h", id: "min1h",
meta: { label: t`Min 1h` },
accessorFn: (record) => record.resMin1h, accessorFn: (record) => record.resMin1h,
invertSorting: true, invertSorting: true,
header: ({ column }) => <HeaderButton column={column} name={t`Min 1h`} Icon={TimerIcon} />, header: ({ column }) => <HeaderButton column={column} name={t`Min 1h`} Icon={TimerIcon} />,
@@ -206,6 +225,7 @@ export function getMonitorColumns(
}, },
{ {
id: "loss", id: "loss",
meta: { label: t`Loss 1h` },
accessorFn: (record) => record.loss1h, accessorFn: (record) => record.loss1h,
invertSorting: true, invertSorting: true,
header: ({ column }) => <HeaderButton column={column} name={t`Loss 1h`} Icon={WifiOffIcon} />, header: ({ column }) => <HeaderButton column={column} name={t`Loss 1h`} Icon={WifiOffIcon} />,
@@ -232,8 +252,34 @@ export function getMonitorColumns(
) )
}, },
}, },
{
id: "cert",
meta: { label: t`Certificate` },
accessorFn: (record) => record.certInfo?.expires,
header: ({ column }) => <HeaderButton column={column} name={t`Certificate`} Icon={ShieldCheckIcon} />,
cell: ({ row }) => {
const { certInfo, system } = row.original
const systemRecord = useStore($allSystemsById)[system]
if (!certInfo?.expires) {
return <span className="ms-1.5 text-muted-foreground">-</span>
}
const daysLeft = getCertDaysLeft(certInfo)
const color = isMuted(row.original, systemRecord)
? "bg-muted-foreground/50"
: certExpiryDotColors[getCertExpiryLevel(daysLeft)]
return (
<span className="ms-1.5 tabular-nums flex gap-2 items-center">
<span className={cn("shrink-0 size-2 rounded-full", color)} />
{daysLeft < 0 ? <Trans>Expired</Trans> : <Plural value={daysLeft} one="# day" other="# days" />}
</span>
)
},
},
{ {
id: "updated", id: "updated",
meta: { label: t`Updated` },
invertSorting: true, invertSorting: true,
accessorFn: (record) => record.updated, accessorFn: (record) => record.updated,
header: ({ column }) => <HeaderButton column={column} name={t`Updated`} Icon={ClockIcon} />, header: ({ column }) => <HeaderButton column={column} name={t`Updated`} Icon={ClockIcon} />,
@@ -1,6 +1,6 @@
import { getMonitorTarget } from "@/lib/network-monitor-utils" import { getCertDaysLeft, getCertExpiryLevel, getMonitorTarget } from "@/lib/network-monitor-utils"
import { t } from "@lingui/core/macro" import { t } from "@lingui/core/macro"
import { Trans } from "@lingui/react/macro" import { Plural, Trans } from "@lingui/react/macro"
import { import {
type ColumnFiltersState, type ColumnFiltersState,
flexRender, flexRender,
@@ -26,26 +26,43 @@ import {
AlertDialogTitle, AlertDialogTitle,
} from "@/components/ui/alert-dialog" } from "@/components/ui/alert-dialog"
import { Button, buttonVariants } from "@/components/ui/button" import { Button, buttonVariants } from "@/components/ui/button"
import { memo, useCallback, useMemo, useRef, useState } from "react" import { memo, useCallback, useEffect, useMemo, useRef, useState } from "react"
import { subscribeKeys } from "nanostores"
import { getMonitorColumns } from "@/components/network-monitors-table/network-monitors-columns" import { getMonitorColumns } from "@/components/network-monitors-table/network-monitors-columns"
import { Card, CardHeader, CardTitle } from "@/components/ui/card" import { Card, CardHeader, CardTitle } from "@/components/ui/card"
import { Input } from "@/components/ui/input" import { Input } from "@/components/ui/input"
import { TableBody, TableCell, TableHead, TableHeader, TableRow } from "@/components/ui/table" import { TableBody, TableCell, TableHead, TableHeader, TableRow } from "@/components/ui/table"
import { useToast } from "@/components/ui/use-toast" import { useToast } from "@/components/ui/use-toast"
import { isReadOnlyUser } from "@/lib/api" import { isReadOnlyUser, queueUserSettings } from "@/lib/api"
import { pb } from "@/lib/api" import { pb } from "@/lib/api"
import { $allSystemsById, $direction, $userSettings } from "@/lib/stores" import { SystemStatus } from "@/lib/enums"
import { import { $allSystemsById, $direction, $textMeasureVersion, $userSettings, getUserChartTime } from "@/lib/stores"
cn, import { cn, formatShortDate, isVisuallyLonger, matchesFilterGroups, parseFilterGroups, parseSemVer } from "@/lib/utils"
isVisuallyLonger, import type { ChartData, MonitorCertInfo, NetworkMonitorRecord } from "@/types"
matchesFilterGroups,
parseFilterGroups,
parseSemVer,
useBrowserStorage,
} from "@/lib/utils"
import type { ChartData, NetworkMonitorRecord } from "@/types"
import { AddMonitorDialog, EditMonitorDialog } from "./monitor-dialog" import { AddMonitorDialog, EditMonitorDialog } from "./monitor-dialog"
import { ArrowLeftRightIcon, EthernetPortIcon, LoaderCircleIcon, ServerIcon, XIcon } from "lucide-react" import {
ArrowDownIcon,
ArrowLeftRightIcon,
ArrowUpDownIcon,
ArrowUpIcon,
EthernetPortIcon,
EyeIcon,
LandmarkIcon,
LoaderCircleIcon,
ServerIcon,
Settings2Icon,
ShieldCheckIcon,
XIcon,
} from "lucide-react"
import {
DropdownMenu,
DropdownMenuCheckboxItem,
DropdownMenuContent,
DropdownMenuItem,
DropdownMenuLabel,
DropdownMenuSeparator,
DropdownMenuTrigger,
} from "@/components/ui/dropdown-menu"
import { Sheet, SheetContent, SheetDescription, SheetHeader, SheetTitle } from "@/components/ui/sheet" import { Sheet, SheetContent, SheetDescription, SheetHeader, SheetTitle } from "@/components/ui/sheet"
import ChartTimeSelect from "@/components/charts/chart-time-select" import ChartTimeSelect from "@/components/charts/chart-time-select"
import { LossChart, AvgMinMaxResponseChart } from "@/components/routes/system/charts/monitors-charts" import { LossChart, AvgMinMaxResponseChart } from "@/components/routes/system/charts/monitors-charts"
@@ -65,13 +82,19 @@ export default function NetworkMonitorsTableNew({
monitors: NetworkMonitorRecord[] monitors: NetworkMonitorRecord[]
isLoading: boolean isLoading: boolean
}) { }) {
const [sorting, setSorting] = useBrowserStorage<SortingState>( const sortSettingsKey = systemId ? "monitorSortModeSystem" : "monitorSortMode"
`sort-np-target-${systemId ? 1 : 0}`, const sortStorageKey = `besz-sort-np-target-${systemId ? 1 : 0}`
[{ id: systemId ? "target" : "system", desc: false }], const [sorting, setSorting] = useState<SortingState>(
sessionStorage () =>
$userSettings.get()[sortSettingsKey] ??
JSON.parse(sessionStorage.getItem(sortStorageKey) || "null") ?? [
{ id: systemId ? "target" : "system", desc: false },
]
) )
const [columnFilters, setColumnFilters] = useState<ColumnFiltersState>([]) const [columnFilters, setColumnFilters] = useState<ColumnFiltersState>([])
const [columnVisibility, setColumnVisibility] = useState<VisibilityState>({}) const [columnVisibility, setColumnVisibility] = useState<VisibilityState>(
() => $userSettings.get().monitorCols ?? JSON.parse(localStorage.getItem("besz-monitor-cols") || "{}")
)
const [rowSelection, setRowSelection] = useState<RowSelectionState>({}) const [rowSelection, setRowSelection] = useState<RowSelectionState>({})
const [globalFilter, setGlobalFilter] = useState("") const [globalFilter, setGlobalFilter] = useState("")
const [deleteOpen, setDeleteOpen] = useState(false) const [deleteOpen, setDeleteOpen] = useState(false)
@@ -81,6 +104,49 @@ export default function NetworkMonitorsTableNew({
const { toast } = useToast() const { toast } = useToast()
const canManageMonitors = !isReadOnlyUser() const canManageMonitors = !isReadOnlyUser()
// Apply settings from server once they load (handles incognito / new devices)
const appliedSettings = useRef(new Set<string>())
useEffect(() => {
return subscribeKeys($userSettings, ["monitorCols", sortSettingsKey], (vals) => {
if (!appliedSettings.current.has("monitorCols") && vals.monitorCols !== undefined) {
appliedSettings.current.add("monitorCols")
setColumnVisibility(vals.monitorCols)
}
if (!appliedSettings.current.has(sortSettingsKey) && vals[sortSettingsKey] !== undefined) {
appliedSettings.current.add(sortSettingsKey)
setSorting(vals[sortSettingsKey] as SortingState)
}
})
}, [sortSettingsKey])
const handleColumnVisibilityChange = useCallback(
(updater: VisibilityState | ((prev: VisibilityState) => VisibilityState)) => {
setColumnVisibility((prev) => {
const next = typeof updater === "function" ? updater(prev) : updater
localStorage.setItem("besz-monitor-cols", JSON.stringify(next))
$userSettings.setKey("monitorCols", next)
queueUserSettings({ monitorCols: next })
return next
})
},
[]
)
const handleSortingChange = useCallback(
(updater: SortingState | ((prev: SortingState) => SortingState)) => {
setSorting((prev) => {
const next = typeof updater === "function" ? updater(prev) : updater
sessionStorage.setItem(sortStorageKey, JSON.stringify(next))
$userSettings.setKey(sortSettingsKey, next)
queueUserSettings({ [sortSettingsKey]: next })
return next
})
},
[sortSettingsKey, sortStorageKey]
)
// recompute when measured widths are invalidated (e.g. web font finished loading)
const textMeasureVersion = useStore($textMeasureVersion)
const longestTarget = useMemo(() => { const longestTarget = useMemo(() => {
let longestTarget = "" let longestTarget = ""
for (const p of monitors) { for (const p of monitors) {
@@ -89,7 +155,7 @@ export default function NetworkMonitorsTableNew({
} }
} }
return longestTarget return longestTarget
}, [monitors]) }, [monitors, textMeasureVersion])
const runMonitorBatch = useCallback( const runMonitorBatch = useCallback(
async (ids: string[], enqueue: (batch: ReturnType<typeof pb.createBatch>, id: string) => void) => { async (ids: string[], enqueue: (batch: ReturnType<typeof pb.createBatch>, id: string) => void) => {
@@ -207,9 +273,9 @@ export default function NetworkMonitorsTableNew({
getCoreRowModel: getCoreRowModel(), getCoreRowModel: getCoreRowModel(),
getSortedRowModel: getSortedRowModel(), getSortedRowModel: getSortedRowModel(),
getFilteredRowModel: getFilteredRowModel(), getFilteredRowModel: getFilteredRowModel(),
onSortingChange: setSorting, onSortingChange: handleSortingChange,
onColumnFiltersChange: setColumnFilters, onColumnFiltersChange: setColumnFilters,
onColumnVisibilityChange: setColumnVisibility, onColumnVisibilityChange: handleColumnVisibilityChange,
onRowSelectionChange: setRowSelection, onRowSelectionChange: setRowSelection,
defaultColumn: { defaultColumn: {
sortUndefined: "last", sortUndefined: "last",
@@ -236,11 +302,12 @@ export default function NetworkMonitorsTableNew({
const rows = table.getRowModel().rows const rows = table.getRowModel().rows
const visibleColumns = table.getVisibleLeafColumns() const visibleColumns = table.getVisibleLeafColumns()
const visibleColumnsKey = visibleColumns.map((column) => column.id).join(",")
return ( return (
<Card className="@container w-full px-3 py-5 sm:py-6 sm:px-6"> <Card className="@container w-full px-3 py-5 sm:py-6 sm:px-6">
<CardHeader className="p-0 mb-3 sm:mb-4"> <CardHeader className="p-0 mb-3 sm:mb-4">
<div className="grid md:flex gap-x-5 gap-y-3 w-full items-end"> <div className="grid md-lg:flex gap-x-5 gap-y-3 w-full items-end">
<div className="px-2 sm:px-1"> <div className="px-2 sm:px-1">
<CardTitle className="mb-2"> <CardTitle className="mb-2">
<Trans>Network Monitors</Trans> <Trans>Network Monitors</Trans>
@@ -249,14 +316,14 @@ export default function NetworkMonitorsTableNew({
<Trans>Response time monitoring from agents.</Trans> <Trans>Response time monitoring from agents.</Trans>
</div> </div>
</div> </div>
<div className="md:ms-auto flex items-center gap-2"> <div className="md-lg:ms-auto flex items-center gap-2">
{monitors.length > 0 && ( {monitors.length > 0 && (
<div className="relative"> <div className="relative grow">
<Input <Input
placeholder={t`Filter...`} placeholder={t`Filter...`}
value={globalFilter} value={globalFilter}
onChange={(e) => setGlobalFilter(e.target.value)} onChange={(e) => setGlobalFilter(e.target.value)}
className="ms-auto px-4 w-full max-w-full md:w-50" className="ms-auto px-4 w-full max-w-full md-lg:w-50"
/> />
{globalFilter && ( {globalFilter && (
<Button <Button
@@ -272,6 +339,74 @@ export default function NetworkMonitorsTableNew({
)} )}
</div> </div>
)} )}
<DropdownMenu>
<DropdownMenuTrigger asChild>
<Button variant="outline">
<Settings2Icon className="me-1.5 size-4 opacity-80" />
<Trans>View</Trans>
</Button>
</DropdownMenuTrigger>
<DropdownMenuContent className="h-72 md:h-auto min-w-48 md:min-w-auto overflow-y-auto">
<div className="grid grid-cols-2 divide-y md:divide-s md:divide-y-0">
<div className="border-r">
<DropdownMenuLabel className="pt-2 px-3.5 flex items-center gap-2">
<ArrowUpDownIcon className="size-4" />
<Trans>Sort By</Trans>
</DropdownMenuLabel>
<DropdownMenuSeparator />
<div className="px-1 pb-1">
{table.getAllColumns().map((column) => {
if (!column.getCanSort()) return null
let Icon = <span className="w-6"></span>
if (sorting[0]?.id === column.id) {
Icon = sorting[0]?.desc ? (
<ArrowUpIcon className="me-2 size-4" />
) : (
<ArrowDownIcon className="me-2 size-4" />
)
}
return (
<DropdownMenuItem
onSelect={(e) => {
e.preventDefault()
handleSortingChange([
{ id: column.id, desc: sorting[0]?.id === column.id && !sorting[0]?.desc },
])
}}
key={column.id}
>
{Icon}
{column.columnDef.meta?.label ?? column.id}
</DropdownMenuItem>
)
})}
</div>
</div>
<div>
<DropdownMenuLabel className="pt-2 px-3.5 flex items-center gap-2">
<EyeIcon className="size-4" />
<Trans>Visible Fields</Trans>
</DropdownMenuLabel>
<DropdownMenuSeparator />
<div className="px-1.5 pb-1">
{table
.getAllColumns()
.filter((column) => column.getCanHide())
.map((column) => (
<DropdownMenuCheckboxItem
key={column.id}
onSelect={(e) => e.preventDefault()}
checked={column.getIsVisible()}
onCheckedChange={(value) => column.toggleVisibility(!!value)}
>
{column.columnDef.meta?.label ?? column.id}
</DropdownMenuCheckboxItem>
))}
</div>
</div>
</div>
</DropdownMenuContent>
</DropdownMenu>
{canManageMonitors ? <AddMonitorDialog systemId={systemId} monitors={monitors} /> : null} {canManageMonitors ? <AddMonitorDialog systemId={systemId} monitors={monitors} /> : null}
{canManageMonitors ? ( {canManageMonitors ? (
<EditMonitorDialog <EditMonitorDialog
@@ -324,6 +459,7 @@ export default function NetworkMonitorsTableNew({
table={table} table={table}
rows={rows} rows={rows}
colLength={visibleColumns.length} colLength={visibleColumns.length}
visibleColumnsKey={visibleColumnsKey}
rowSelection={rowSelection} rowSelection={rowSelection}
isLoading={isLoading} isLoading={isLoading}
/> />
@@ -336,12 +472,14 @@ const NetworkMonitorsTable = memo(function NetworkMonitorTable({
table, table,
rows, rows,
colLength, colLength,
visibleColumnsKey,
rowSelection, rowSelection,
isLoading, isLoading,
}: { }: {
table: TableType<NetworkMonitorRecord> table: TableType<NetworkMonitorRecord>
rows: Row<NetworkMonitorRecord>[] rows: Row<NetworkMonitorRecord>[]
colLength: number colLength: number
visibleColumnsKey: string
rowSelection: RowSelectionState rowSelection: RowSelectionState
isLoading: boolean isLoading: boolean
}) { }) {
@@ -389,6 +527,7 @@ const NetworkMonitorsTable = memo(function NetworkMonitorTable({
virtualRow={virtualRow} virtualRow={virtualRow}
isSelected={row.getIsSelected()} isSelected={row.getIsSelected()}
rowSelection={rowSelection} rowSelection={rowSelection}
visibleColumnsKey={visibleColumnsKey}
openSheet={openSheet} openSheet={openSheet}
/> />
) )
@@ -441,6 +580,9 @@ const NetworkMonitorTableRow = memo(function NetworkMonitorTableRow({
virtualRow, virtualRow,
isSelected, isSelected,
rowSelection: _rowSelection, rowSelection: _rowSelection,
// Column visibility doesn't change the row object identity, so this prop exists only
// to force a re-render (and a fresh row.getVisibleCells() read) when columns are toggled.
visibleColumnsKey: _visibleColumnsKey,
openSheet, openSheet,
}: { }: {
row: Row<NetworkMonitorRecord> row: Row<NetworkMonitorRecord>
@@ -448,12 +590,16 @@ const NetworkMonitorTableRow = memo(function NetworkMonitorTableRow({
isSelected: boolean isSelected: boolean
// Menus depend on the entire selection, including changes to other rows. // Menus depend on the entire selection, including changes to other rows.
rowSelection: RowSelectionState rowSelection: RowSelectionState
visibleColumnsKey: string
openSheet: (monitor: NetworkMonitorRecord) => void openSheet: (monitor: NetworkMonitorRecord) => void
}) { }) {
const system = useStore($allSystemsById)[row.original.system]
return ( return (
<TableRow <TableRow
data-state={isSelected && "selected"} data-state={isSelected && "selected"}
className="cursor-pointer transition-opacity" className={cn("cursor-pointer transition-opacity", {
"opacity-50": system?.status === SystemStatus.Paused,
})}
onClick={() => openSheet(row.original)} onClick={() => openSheet(row.original)}
> >
{row.getVisibleCells().map((cell) => ( {row.getVisibleCells().map((cell) => (
@@ -488,6 +634,36 @@ function NetworkMonitorSheet({
return <NetworkMonitorSheetContent key={monitor.system} open={open} onOpenChange={onOpenChange} monitor={monitor} /> return <NetworkMonitorSheetContent key={monitor.system} open={open} onOpenChange={onOpenChange} monitor={monitor} />
} }
const certExpiryTextColors = { ok: "", warning: "text-yellow-600 dark:text-yellow-500", critical: "text-red-500" }
function CertExpiry({ cert }: { cert: MonitorCertInfo }) {
const daysLeft = getCertDaysLeft(cert)
const expires = formatShortDate(new Date(cert.expires).toISOString())
const level = getCertExpiryLevel(daysLeft)
return (
<>
<Separator orientation="vertical" className="h-2.5 bg-muted-foreground opacity-70" />
<ShieldCheckIcon className={cn("size-3.5 text-muted-foreground -me-1", certExpiryTextColors[level])} />
<span className={certExpiryTextColors[level]}>
{daysLeft < 0 ? (
<Trans>Certificate expired {expires}</Trans>
) : (
<Trans>
Certificate expires {expires}
</Trans>
)}
</span>
{cert.issuer && (
<>
<Separator orientation="vertical" className="h-2.5 bg-muted-foreground opacity-70" />
<LandmarkIcon className="size-3.5 text-muted-foreground -me-0.5" />
<span>{cert.issuer}</span>
</>
)}
</>
)
}
function NetworkMonitorSheetContent({ function NetworkMonitorSheetContent({
open, open,
onOpenChange, onOpenChange,
@@ -499,7 +675,7 @@ function NetworkMonitorSheetContent({
}) { }) {
// Keep monitor exploration independent of the system charts' time range. // Keep monitor exploration independent of the system charts' time range.
const [chartTimeStore] = useState(() => { const [chartTimeStore] = useState(() => {
const defaultTime = $userSettings.get().chartTime const defaultTime = getUserChartTime()
return atom(defaultTime === "1m" ? "1h" : defaultTime) return atom(defaultTime === "1m" ? "1h" : defaultTime)
}) })
const chartTime = useStore(chartTimeStore) const chartTime = useStore(chartTimeStore)
@@ -535,7 +711,7 @@ function NetworkMonitorSheetContent({
{system?.name ?? ""} {system?.name ?? ""}
</Link> </Link>
<Separator orientation="vertical" className="h-2.5 bg-muted-foreground opacity-70" /> <Separator orientation="vertical" className="h-2.5 bg-muted-foreground opacity-70" />
<ArrowLeftRightIcon className="size-3.5 text-muted-foreground" /> <ArrowLeftRightIcon className="size-3.5 text-muted-foreground -me-0.5" />
{monitor.protocol.toUpperCase()} {monitor.protocol.toUpperCase()}
{monitor.protocol === "tcp" && monitor.port > 0 && ( {monitor.protocol === "tcp" && monitor.port > 0 && (
<> <>
@@ -544,6 +720,7 @@ function NetworkMonitorSheetContent({
<span>{monitor.port}</span> <span>{monitor.port}</span>
</> </>
)} )}
{monitor.certInfo?.expires ? <CertExpiry cert={monitor.certInfo} /> : null}
</SheetDescription> </SheetDescription>
</SheetHeader> </SheetHeader>
<div className="grid gap-4"> <div className="grid gap-4">
@@ -12,7 +12,7 @@ import Slider from "@/components/ui/slider"
import { HourFormat, Unit } from "@/lib/enums" import { HourFormat, Unit } from "@/lib/enums"
import { dynamicActivate } from "@/lib/i18n" import { dynamicActivate } from "@/lib/i18n"
import languages from "@/lib/languages" import languages from "@/lib/languages"
import { $userSettings, defaultLayoutWidth } from "@/lib/stores" import { $chartTime, $userSettings, defaultLayoutWidth, getUserChartTime } from "@/lib/stores"
import { chartTimeData, currentHour12 } from "@/lib/utils" import { chartTimeData, currentHour12 } from "@/lib/utils"
import type { UserSettings } from "@/types" import type { UserSettings } from "@/types"
import { saveSettings } from "./layout" import { saveSettings } from "./layout"
@@ -22,6 +22,9 @@ export default function SettingsProfilePage({ userSettings }: { userSettings: Us
const { i18n } = useLingui() const { i18n } = useLingui()
const currentUserSettings = useStore($userSettings) const currentUserSettings = useStore($userSettings)
const layoutWidth = currentUserSettings.layoutWidth ?? defaultLayoutWidth const layoutWidth = currentUserSettings.layoutWidth ?? defaultLayoutWidth
// without a value the hidden select submits an empty string, which would persist
// a chart time that no longer loads any data (#2104)
const chartTime = getUserChartTime(userSettings)
async function handleSubmit(e: React.FormEvent<HTMLFormElement>) { async function handleSubmit(e: React.FormEvent<HTMLFormElement>) {
e.preventDefault() e.preventDefault()
@@ -29,6 +32,8 @@ export default function SettingsProfilePage({ userSettings }: { userSettings: Us
const formData = new FormData(e.target as HTMLFormElement) const formData = new FormData(e.target as HTMLFormElement)
const data = Object.fromEntries(formData) as Partial<UserSettings> const data = Object.fromEntries(formData) as Partial<UserSettings>
await saveSettings(data) await saveSettings(data)
// apply the saved default time period to the active charts
$chartTime.set(getUserChartTime())
setIsLoading(false) setIsLoading(false)
} }
@@ -122,7 +127,7 @@ export default function SettingsProfilePage({ userSettings }: { userSettings: Us
<Label className="block" htmlFor="chartTime"> <Label className="block" htmlFor="chartTime">
<Trans>Default time period</Trans> <Trans>Default time period</Trans>
</Label> </Label>
<Select name="chartTime" key={userSettings.chartTime} defaultValue={userSettings.chartTime}> <Select name="chartTime" key={chartTime} defaultValue={chartTime}>
<SelectTrigger id="chartTime"> <SelectTrigger id="chartTime">
<SelectValue /> <SelectValue />
</SelectTrigger> </SelectTrigger>
@@ -211,7 +211,6 @@ export default memo(function SystemDetail({ id }: { id: string }) {
<TemperatureChart {...coreProps} setPageBottomExtraMargin={setPageBottomExtraMargin} /> <TemperatureChart {...coreProps} setPageBottomExtraMargin={setPageBottomExtraMargin} />
<FanChart {...coreProps} /> <FanChart {...coreProps} />
<BatteryChart system={system} {...coreProps} /> <BatteryChart system={system} {...coreProps} />
<SwapChart chartData={chartData} grid={grid} dataEmpty={dataEmpty} systemStats={systemStats} />
{pageBottomExtraMargin > 0 && <div style={{ marginBottom: pageBottomExtraMargin }}></div>} {pageBottomExtraMargin > 0 && <div style={{ marginBottom: pageBottomExtraMargin }}></div>}
</div> </div>
</TabsContent> </TabsContent>
@@ -27,6 +27,8 @@ type MonitorChartBaseProps = MonitorChartProps & {
tickFormatter: (value: number) => string tickFormatter: (value: number) => string
contentFormatter: ({ value }: { value: number | string }) => string | number contentFormatter: ({ value }: { value: number | string }) => string | number
domain?: [number | "auto", number | "auto"] domain?: [number | "auto", number | "auto"]
/** Overrides the per-monitor line colors (e.g. a fixed color for single-monitor charts). */
color?: string
} }
function MonitorChart({ function MonitorChart({
@@ -41,6 +43,7 @@ function MonitorChart({
tickFormatter, tickFormatter,
contentFormatter, contentFormatter,
domain, domain,
color,
showFilter = monitors.length > 1, showFilter = monitors.length > 1,
}: MonitorChartBaseProps) { }: MonitorChartBaseProps) {
const storedFilter = useStore($monitorFilter) const storedFilter = useStore($monitorFilter)
@@ -67,11 +70,12 @@ function MonitorChart({
label, label,
dataKey: (record: NetworkMonitorStatsRecord) => record.stats?.[p.id]?.[metric] ?? null, dataKey: (record: NetworkMonitorStatsRecord) => record.stats?.[p.id]?.[metric] ?? null,
dot, dot,
color: count <= 5 ? i + 1 : `hsl(${(i * 360) / count}, var(--chart-saturation), var(--chart-lightness))`, color:
color ?? (count <= 5 ? i + 1 : `hsl(${(i * 360) / count}, var(--chart-saturation), var(--chart-lightness))`),
}) })
} }
return { dataPoints: points, visibleKeys: visibleIDs } return { dataPoints: points, visibleKeys: visibleIDs }
}, [monitors, filter, metric, chartData.chartTime]) }, [monitors, filter, metric, chartData.chartTime, color])
const filteredMonitorStats = useMemo(() => { const filteredMonitorStats = useMemo(() => {
if (!visibleKeys.length) return monitorStats if (!visibleKeys.length) return monitorStats
@@ -200,6 +204,7 @@ export function LossChart({ monitorStats, grid, monitors, chartData, empty, titl
title={title} title={title}
description={t`Packet loss (%)`} description={t`Packet loss (%)`}
domain={[0, 100]} domain={[0, 100]}
color="var(--destructive)"
tickFormatter={(value) => `${toFixedFloat(value, value >= 10 ? 0 : 1)}%`} tickFormatter={(value) => `${toFixedFloat(value, value >= 10 ? 0 : 1)}%`}
contentFormatter={({ value }) => { contentFormatter={({ value }) => {
if (typeof value !== "number") { if (typeof value !== "number") {
@@ -14,6 +14,7 @@ import {
$maxValues, $maxValues,
$systems, $systems,
$userSettings, $userSettings,
getUserChartTime,
} from "@/lib/stores" } from "@/lib/stores"
import { chartTimeData, listen, parseSemVer } from "@/lib/utils" import { chartTimeData, listen, parseSemVer } from "@/lib/utils"
import type { import type {
@@ -90,7 +91,7 @@ export function useSystemData(id: string) {
useEffect(() => { useEffect(() => {
return () => { return () => {
if (!persistChartTime.current) { if (!persistChartTime.current) {
$chartTime.set($userSettings.get().chartTime) $chartTime.set(getUserChartTime())
} }
persistChartTime.current = false persistChartTime.current = false
setSystemStats([]) setSystemStats([])
@@ -1,5 +1,5 @@
/** biome-ignore-all lint/correctness/useHookAtTopLevel: Hooks live inside memoized column definitions */ /** biome-ignore-all lint/correctness/useHookAtTopLevel: Hooks live inside memoized column definitions */
import { t } from "@lingui/core/macro" import { plural, t } from "@lingui/core/macro"
import { Trans, useLingui } from "@lingui/react/macro" import { 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"
@@ -345,11 +345,13 @@ export function SystemsTableColumns(viewMode: "table" | "grid"): ColumnDef<Syste
header: sortableHeader, header: sortableHeader,
hideSort: true, hideSort: true,
sortingFn: (a, b) => { sortingFn: (a, b) => {
// sort priorities: 1) failed services, 2) total services // sort priorities: 1) has failed services (dot color), 2) total services
const [totalCountA, numFailedA] = a.original.info.sv ?? [0, 0] const [totalCountA, numFailedA] = a.original.info.sv ?? [0, 0]
const [totalCountB, numFailedB] = b.original.info.sv ?? [0, 0] const [totalCountB, numFailedB] = b.original.info.sv ?? [0, 0]
if (numFailedA !== numFailedB) { const hasFailedA = numFailedA > 0 ? 1 : 0
return numFailedA - numFailedB const hasFailedB = numFailedB > 0 ? 1 : 0
if (hasFailedA !== hasFailedB) {
return hasFailedA - hasFailedB
} }
return totalCountA - totalCountB return totalCountA - totalCountB
}, },
@@ -359,20 +361,36 @@ export function SystemsTableColumns(viewMode: "table" | "grid"): ColumnDef<Syste
if (sys.status !== SystemStatus.Up || totalCount === 0) { if (sys.status !== SystemStatus.Up || totalCount === 0) {
return null return null
} }
return ( const content = (
<span className="tabular-nums whitespace-nowrap flex gap-1.5 items-center"> <span className="tabular-nums whitespace-nowrap flex gap-1.5 items-center">
<span <span
className={cn("block size-2 rounded-full", { className={cn("block size-2 rounded-full", {
[STATUS_COLORS[SystemStatus.Down]]: numFailed > 0, [STATUS_COLORS.pending]: numFailed > 0,
[STATUS_COLORS[SystemStatus.Up]]: numFailed === 0, [STATUS_COLORS.up]: numFailed === 0,
})} })}
/> />
{totalCount}{" "} {plural(totalCount, { one: "# service", other: "# services" })}
<span className="text-muted-foreground text-sm -ms-0.5">
({t`Failed`.toLowerCase()}: {numFailed})
</span>
</span> </span>
) )
if (numFailed === 0) {
return content
}
return (
<Tooltip>
<TooltipTrigger asChild>
<Link
href={getPagePath($router, "system", { id: sys.id })}
tabIndex={-1}
className="relative z-10 w-fit block"
>
{content}
</Link>
</TooltipTrigger>
<TooltipContent>
{plural(numFailed, { one: "# failed service", other: "# failed services" })}
</TooltipContent>
</Tooltip>
)
}, },
}, },
{ {
+6 -3
View File
@@ -68,6 +68,7 @@
--breakpoint-xs: 26.6rem; --breakpoint-xs: 26.6rem;
--breakpoint-450: 28rem; --breakpoint-450: 28rem;
--breakpoint-md-lg: 53rem;
--breakpoint-2xl: 90rem; --breakpoint-2xl: 90rem;
--radius-sm: calc(var(--radius) - 4px); --radius-sm: calc(var(--radius) - 4px);
@@ -117,6 +118,7 @@
} }
@layer utilities { @layer utilities {
/* Fonts */ /* Fonts */
@supports (font-variation-settings: normal) { @supports (font-variation-settings: normal) {
:root { :root {
@@ -147,11 +149,11 @@
button { button {
cursor: pointer; cursor: pointer;
} }
/* cosmetic patch for half pixel gap in table headers when scrolling content shows at top */ /* cosmetic patch for half pixel gap in table headers when scrolling content shows at top */
thead.sticky:before { thead.sticky:before {
content: ""; content: "";
@apply absolute -top-2 left-0 w-full h-4 bg-table-header z-50 @apply absolute -top-2 left-0 w-full h-4 bg-table-header z-50
} }
} }
@@ -172,6 +174,7 @@
@utility scrollbar-hide { @utility scrollbar-hide {
-ms-overflow-style: none; -ms-overflow-style: none;
scrollbar-width: none; scrollbar-width: none;
&::-webkit-scrollbar { &::-webkit-scrollbar {
display: none; display: none;
} }
@@ -188,4 +191,4 @@
.recharts-yAxis { .recharts-yAxis {
@apply tabular-nums; @apply tabular-nums;
} }
+3 -3
View File
@@ -4,7 +4,7 @@ import { basePath } from "@/components/router"
import { toast } from "@/components/ui/use-toast" import { toast } from "@/components/ui/use-toast"
import { dynamicActivate, getLocale } from "@/lib/i18n" import { dynamicActivate, getLocale } from "@/lib/i18n"
import type { ChartTimes, UserSettings } from "@/types" import type { ChartTimes, UserSettings } from "@/types"
import { $alerts, $allSystemsById, $allSystemsByName, $userSettings } from "./stores" import { $alerts, $allSystemsById, $allSystemsByName, $userSettings, hydrateUserSettings } from "./stores"
import { chartTimeData, debounce } from "./utils" import { chartTimeData, debounce } from "./utils"
/** PocketBase JS Client */ /** PocketBase JS Client */
@@ -90,7 +90,7 @@ export function queueUserSettings(newSettings: Partial<UserSettings>) {
export async function updateUserSettings() { export async function updateUserSettings() {
try { try {
const req = await pb.collection("user_settings").getFirstListItem("", { fields: "settings" }) const req = await pb.collection("user_settings").getFirstListItem("", { fields: "settings" })
$userSettings.set(req.settings) hydrateUserSettings(req.settings)
dynamicActivate(req.settings.lang || getLocale()) dynamicActivate(req.settings.lang || getLocale())
return return
} catch (e) { } catch (e) {
@@ -99,7 +99,7 @@ export async function updateUserSettings() {
// create user settings if error fetching existing // create user settings if error fetching existing
try { try {
const createdSettings = await pb.collection("user_settings").create({ user: pb.authStore.record?.id }) const createdSettings = await pb.collection("user_settings").create({ user: pb.authStore.record?.id })
$userSettings.set(createdSettings.settings) hydrateUserSettings(createdSettings.settings)
dynamicActivate(createdSettings.settings.lang || getLocale()) dynamicActivate(createdSettings.settings.lang || getLocale())
} catch (e) { } catch (e) {
console.error("create settings", e) console.error("create settings", e)
+13 -1
View File
@@ -1,4 +1,4 @@
import type { MonitorStats, NetworkMonitorRecord, RawMonitorStatsRecord } from "@/types" import type { MonitorCertInfo, MonitorStats, NetworkMonitorRecord, RawMonitorStatsRecord } from "@/types"
/** Derive chart metrics from the counts and response sum stored at every retention tier. */ /** Derive chart metrics from the counts and response sum stored at every retention tier. */
export function getMonitorStats(record: RawMonitorStatsRecord): MonitorStats { export function getMonitorStats(record: RawMonitorStatsRecord): MonitorStats {
@@ -15,3 +15,15 @@ export function getMonitorTarget(monitor: Pick<NetworkMonitorRecord, "target" |
const host = monitor.target.includes(":") && !monitor.target.startsWith("[") ? `[${monitor.target}]` : monitor.target const host = monitor.target.includes(":") && !monitor.target.startsWith("[") ? `[${monitor.target}]` : monitor.target
return `${host}:${monitor.port}` return `${host}:${monitor.port}`
} }
/** Whole days until the certificate expires; negative once expired. */
export function getCertDaysLeft(cert: Pick<MonitorCertInfo, "expires">, now = Date.now()) {
return Math.floor((cert.expires - now) / 86_400_000)
}
/** Expiry severity used for certificate colors. */
export function getCertExpiryLevel(daysLeft: number): "ok" | "warning" | "critical" {
if (daysLeft < 7) return "critical"
if (daysLeft < 14) return "warning"
return "ok"
}
+25 -5
View File
@@ -1,4 +1,4 @@
import { atom, computed, listenKeys, map, type ReadableAtom } from "nanostores" import { atom, computed, map, type ReadableAtom } from "nanostores"
import type { AlertMap, ChartTimes, SystemRecord, UpdateInfo, UserSettings } from "@/types" import type { AlertMap, ChartTimes, SystemRecord, UpdateInfo, UserSettings } from "@/types"
import { pb } from "./api" import { pb } from "./api"
import { Unit } from "./enums" import { Unit } from "./enums"
@@ -31,8 +31,11 @@ export const $publicKey = atom("")
/** New version info if an update is available, otherwise undefined */ /** New version info if an update is available, otherwise undefined */
export const $newVersion = atom<UpdateInfo | undefined>() export const $newVersion = atom<UpdateInfo | undefined>()
/** Chart time period used when user settings don't provide one */
export const defaultChartTime: ChartTimes = "1h"
/** Chart time period */ /** Chart time period */
export const $chartTime = atom<ChartTimes>("1h") export const $chartTime = atom<ChartTimes>(defaultChartTime)
/** Whether to display average or max chart values */ /** Whether to display average or max chart values */
export const $maxValues = atom(false) export const $maxValues = atom(false)
@@ -50,13 +53,25 @@ export const $maxValues = atom(false)
/** User settings */ /** User settings */
export const $userSettings = map<UserSettings>({ export const $userSettings = map<UserSettings>({
chartTime: "1h", chartTime: defaultChartTime,
emails: [pb.authStore.record?.email || ""], emails: [pb.authStore.record?.email || ""],
unitNet: Unit.Bytes, unitNet: Unit.Bytes,
unitTemp: Unit.Celsius, unitTemp: Unit.Celsius,
}) })
// update chart time on change
listenKeys($userSettings, ["chartTime"], ({ chartTime }) => $chartTime.set(chartTime)) /** Chart time period stored in user settings, or the default if it's missing */
export function getUserChartTime(settings: UserSettings = $userSettings.get()): ChartTimes {
return settings.chartTime || defaultChartTime
}
/**
* Apply settings loaded from the database, including the default chart time.
* Other settings writes don't touch $chartTime so they can't reset the active chart range.
*/
export function hydrateUserSettings(settings: UserSettings) {
$userSettings.set(settings)
$chartTime.set(getUserChartTime(settings))
}
/** Container chart filter */ /** Container chart filter */
export const $containerFilter = atom("") export const $containerFilter = atom("")
@@ -78,3 +93,8 @@ export const $direction = atom<"ltr" | "rtl">("ltr")
/** Longest system name string. Used to reserve width in virtualized tables. */ /** Longest system name string. Used to reserve width in virtualized tables. */
export const $longestSystemName = atom("") export const $longestSystemName = atom("")
/** Incremented when measured text widths are invalidated (e.g. web font finished loading).
* Anything that caches a comparison from isVisuallyLonger should recompute when this changes.
*/
export const $textMeasureVersion = atom(0)
+18 -7
View File
@@ -7,6 +7,7 @@ import {
$downSystems, $downSystems,
$longestSystemName, $longestSystemName,
$pausedSystems, $pausedSystems,
$textMeasureVersion,
$upSystems, $upSystems,
} from "@/lib/stores" } from "@/lib/stores"
import { isVisuallyLonger, updateFavicon } from "@/lib/utils" import { isVisuallyLonger, updateFavicon } from "@/lib/utils"
@@ -67,6 +68,11 @@ export function init() {
// run things that need to be done when systems change // run things that need to be done when systems change
onSystemsChanged(newSystems, newSystem, oldSystem) onSystemsChanged(newSystems, newSystem, oldSystem)
}) })
// widths measured with the fallback font may rank names differently, so recompute once they're invalidated
$textMeasureVersion.listen(() => {
$longestSystemName.set(findLongestName($allSystemsById.get()))
})
} }
/** Update the longest system name string and favicon based on system status */ /** Update the longest system name string and favicon based on system status */
@@ -78,13 +84,7 @@ function onSystemsChanged(systems: Record<string, SystemRecord>, newSystem?: Sys
// otherwise, if the changed system's new name is longer than the current longest, update it // otherwise, if the changed system's new name is longer than the current longest, update it
const longestName = $longestSystemName.get() const longestName = $longestSystemName.get()
if (oldSystem?.name === longestName && oldSystem.name !== newSystem?.name) { if (oldSystem?.name === longestName && oldSystem.name !== newSystem?.name) {
let newLongest = "" $longestSystemName.set(findLongestName(systems))
for (const id in systems) {
if (isVisuallyLonger(systems[id].name, newLongest)) {
newLongest = systems[id].name
}
}
$longestSystemName.set(newLongest)
} else if (newSystem && newSystem.name !== longestName && isVisuallyLonger(newSystem.name, longestName)) { } else if (newSystem && newSystem.name !== longestName && isVisuallyLonger(newSystem.name, longestName)) {
$longestSystemName.set(newSystem.name) $longestSystemName.set(newSystem.name)
} }
@@ -92,6 +92,17 @@ function onSystemsChanged(systems: Record<string, SystemRecord>, newSystem?: Sys
updateFavicon(downSystems.length) updateFavicon(downSystems.length)
} }
/** Find the visually longest system name */
function findLongestName(systems: Record<string, SystemRecord>): string {
let longest = ""
for (const id in systems) {
if (isVisuallyLonger(systems[id].name, longest)) {
longest = systems[id].name
}
}
return longest
}
/** Fetch systems from collection */ /** Fetch systems from collection */
async function fetchSystems(): Promise<SystemRecord[]> { async function fetchSystems(): Promise<SystemRecord[]> {
try { try {
@@ -74,7 +74,7 @@ async function fetchMonitorStats(
} }
const NETWORK_MONITOR_FIELDS = const NETWORK_MONITOR_FIELDS =
"id,system,target,protocol,port,interval,res,resMin1h,resMax1h,resAvg1h,loss1h,enabled,updated" "id,system,target,protocol,port,interval,res,resMin1h,resMax1h,resAvg1h,loss1h,enabled,certInfo,updated"
interface UseNetworkMonitorsProps { interface UseNetworkMonitorsProps {
systemId?: string systemId?: string
+45 -1
View File
@@ -7,7 +7,7 @@ import { twMerge } from "tailwind-merge"
import { toast } from "@/components/ui/use-toast" 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, Unit } from "./enums" import { HourFormat, Unit } from "./enums"
import { $copyContent, $userSettings } from "./stores" import { $copyContent, $textMeasureVersion, $userSettings } from "./stores"
export function cn(...inputs: ClassValue[]) { export function cn(...inputs: ClassValue[]) {
return twMerge(clsx(inputs)) return twMerge(clsx(inputs))
@@ -451,6 +451,45 @@ export function runOnce<T extends (...args: any[]) => any>(fn: T): T {
const visualWidthCache = new Map<string, number>() const visualWidthCache = new Map<string, number>()
let measureContext: CanvasRenderingContext2D | null | undefined
let measureFont = ""
/** Canvas context for measuring text in the font the app renders with, or null where canvas is unavailable.
* Only relative widths matter here, so the font size is arbitrary.
*/
function getMeasureContext(): CanvasRenderingContext2D | null {
if (measureContext === undefined) {
measureContext = document.createElement("canvas").getContext("2d")
// the fallback font has different metrics, so re-measure whenever a font finishes loading.
// loadingdone also covers fonts that start loading after the first measurement,
// which fonts.ready does not if it has already resolved.
if (measureContext && "fonts" in document) {
document.fonts.addEventListener("loadingdone", invalidateVisualWidths)
}
}
if (measureContext) {
const { fontFamily, fontWeight } = getComputedStyle(document.body)
const font = `${fontWeight} 16px ${fontFamily}`
if (font !== measureFont) {
const isFirstFont = !measureFont
measureFont = font
measureContext.font = font
visualWidthCache.clear()
// defer so stores aren't updated in the middle of a comparison or a render
if (!isFirstFont) {
queueMicrotask(invalidateVisualWidths)
}
}
}
return measureContext
}
/** Drop cached widths and notify anything holding a result from isVisuallyLonger */
function invalidateVisualWidths() {
visualWidthCache.clear()
$textMeasureVersion.set($textMeasureVersion.get() + 1)
}
/** Get the visual width of a string, accounting for full-width and narrow punctuation characters. /** Get the visual width of a string, accounting for full-width and narrow punctuation characters.
* Don't use for monospaced fonts, use .length instead * Don't use for monospaced fonts, use .length instead
*/ */
@@ -459,6 +498,11 @@ function getVisualStringWidth(str: string): number {
if (cached !== undefined) { if (cached !== undefined) {
return cached return cached
} }
const measured = getMeasureContext()?.measureText(str).width
if (measured !== undefined) {
visualWidthCache.set(str, measured)
return measured
}
let width = 0 let width = 0
for (const char of str) { for (const char of str) {
if (char === ".") { if (char === ".") {
+68 -13
View File
@@ -8,7 +8,7 @@ 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: 2026-09-18 19:22\n" "PO-Revision-Date: 2026-09-24 17:29\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"
@@ -52,14 +52,26 @@ msgstr "{count, plural, one {{countString} ساعة} other {{countString} ساع
msgid "{count, plural, one {{countString} minute} few {{countString} minutes} many {{countString} minutes} other {{countString} minutes}}" 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} دقيقة}}" msgstr "{count, plural, one {{countString} دقيقة} few {{countString} دقائق} many {{countString} دقيقة} other {{countString} دقيقة}}"
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "{daysLeft, plural, one {# day} other {# days}}"
msgstr ""
#: src/components/routes/system/charts/disk-charts.tsx #: src/components/routes/system/charts/disk-charts.tsx
msgid "{diskName} I/O" msgid "{diskName} I/O"
msgstr "{diskName} إدخال/إخراج" msgstr "{diskName} إدخال/إخراج"
#: src/components/systems-table/systems-table-columns.tsx
msgid "{numFailed, plural, one {# failed service} other {# failed services}}"
msgstr ""
#: src/components/routes/system/info-bar.tsx #: src/components/routes/system/info-bar.tsx
msgid "{threads, plural, one {# thread} other {# threads}}" msgid "{threads, plural, one {# thread} other {# threads}}"
msgstr "{threads, plural, one {# خيط} other {# خيط}}" msgstr "{threads, plural, one {# خيط} other {# خيط}}"
#: src/components/systems-table/systems-table-columns.tsx
msgid "{totalCount, plural, one {# service} other {# services}}"
msgstr ""
#: src/lib/utils.ts #: src/lib/utils.ts
msgid "1 hour" msgid "1 hour"
msgstr "1 ساعة" msgstr "1 ساعة"
@@ -123,10 +135,10 @@ msgstr "التنبيهات النشطة"
msgid "Active state" msgid "Active state"
msgstr "الحالة النشطة" msgstr "الحالة النشطة"
#: src/components/add-system.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/add-system.tsx msgid "Add"
#: src/components/navbar.tsx msgstr ""
#: src/components/navbar.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
@@ -136,6 +148,13 @@ msgstr "الحالة النشطة"
msgid "Add {foo}" msgid "Add {foo}"
msgstr "إضافة {foo}" msgstr "إضافة {foo}"
#: src/components/add-system.tsx
#: src/components/add-system.tsx
#: src/components/navbar.tsx
#: src/components/navbar.tsx
msgid "Add System"
msgstr "إضافة النظام"
#: src/components/routes/settings/notifications.tsx #: src/components/routes/settings/notifications.tsx
msgid "Add URL" msgid "Add URL"
msgstr "إضافة رابط" msgstr "إضافة رابط"
@@ -260,6 +279,7 @@ msgstr "متوسط استغلال محركات GPU"
msgid "Average, minimum, and maximum response time" msgid "Average, minimum, and maximum response time"
msgstr "متوسط زمن الاستجابة والأدنى والأقصى" msgstr "متوسط زمن الاستجابة والأدنى والأقصى"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Avg 1h" msgid "Avg 1h"
msgstr "متوسط 1h" msgstr "متوسط 1h"
@@ -383,6 +403,19 @@ msgstr "تحذير - فقدان محتمل للبيانات"
msgid "Celsius (°C)" msgid "Celsius (°C)"
msgstr "درجة مئوية (°م)" msgstr "درجة مئوية (°م)"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Certificate"
msgstr ""
#: src/components/network-monitors-table/network-monitors-table.tsx
msgid "Certificate expired {expires}"
msgstr ""
#: src/components/network-monitors-table/network-monitors-table.tsx
msgid "Certificate expires {expires}"
msgstr ""
#: src/components/routes/settings/general.tsx #: src/components/routes/settings/general.tsx
msgid "Change display units for metrics." msgid "Change display units for metrics."
msgstr "تغيير وحدات عرض المقاييس." msgstr "تغيير وحدات عرض المقاييس."
@@ -776,12 +809,15 @@ msgstr "المدة"
msgid "Edit" msgid "Edit"
msgstr "تعديل" msgstr "تعديل"
#: src/components/add-system.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/routes/settings/quiet-hours.tsx #: src/components/routes/settings/quiet-hours.tsx
msgid "Edit {foo}" msgid "Edit {foo}"
msgstr "إضافة {foo}" msgstr "إضافة {foo}"
#: src/components/add-system.tsx
msgid "Edit System"
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
@@ -867,6 +903,10 @@ msgstr "سيتم حذف الأنظمة الحالية غير المعرفة في
msgid "Exited active" msgid "Exited active"
msgstr "خرج نشطًا" msgstr "خرج نشطًا"
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Expired"
msgstr ""
#: src/components/routes/settings/tokens-fingerprints.tsx #: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Expires after one hour or on hub restart." msgid "Expires after one hour or on hub restart."
msgstr "ينتهي بعد ساعة واحدة أو عند إعادة تشغيل المحور." msgstr "ينتهي بعد ساعة واحدة أو عند إعادة تشغيل المحور."
@@ -887,10 +927,6 @@ 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 #: src/components/routes/system/smart-table.tsx
msgid "Failed Attributes:" msgid "Failed Attributes:"
msgstr "السمات الفاشلة:" msgstr "السمات الفاشلة:"
@@ -1090,6 +1126,7 @@ msgstr "يتوفر تحديث للصورة"
msgid "Inactive" msgid "Inactive"
msgstr "غير نشط" msgstr "غير نشط"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/routes/settings/heartbeat.tsx #: src/components/routes/settings/heartbeat.tsx
msgid "Interval" msgid "Interval"
@@ -1182,6 +1219,7 @@ msgctxt "Packet loss"
msgid "Loss" msgid "Loss"
msgstr "الفقد" msgstr "الفقد"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Loss 1h" msgid "Loss 1h"
msgstr "الفقد 1h" msgstr "الفقد 1h"
@@ -1204,6 +1242,7 @@ msgstr "تعليمات الإعداد اليدوي"
msgid "Max 1 min" msgid "Max 1 min"
msgstr "الحد الأقصى دقيقة" msgstr "الحد الأقصى دقيقة"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Max 1h" msgid "Max 1h"
msgstr "الأقصى 1h" msgstr "الأقصى 1h"
@@ -1234,6 +1273,7 @@ msgstr "استخدام الذاكرة"
msgid "Memory usage of containers" msgid "Memory usage of containers"
msgstr "استخدام الذاكرة للحاويات" msgstr "استخدام الذاكرة للحاويات"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Min 1h" msgid "Min 1h"
msgstr "الأدنى 1h" msgstr "الأدنى 1h"
@@ -1565,6 +1605,7 @@ msgstr "تم بدء العملية"
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Protocol" msgid "Protocol"
msgstr "البروتوكول" msgstr "البروتوكول"
@@ -1653,6 +1694,7 @@ msgstr "إعادة تعيين كلمة المرور"
msgid "Resolved" msgid "Resolved"
msgstr "تم حلها" msgstr "تم حلها"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/routes/system/charts/monitors-charts.tsx #: src/components/routes/system/charts/monitors-charts.tsx
msgid "Response" msgid "Response"
@@ -1698,7 +1740,6 @@ msgstr "تفاصيل S.M.A.R.T."
msgid "S.M.A.R.T. Self-Test" msgid "S.M.A.R.T. Self-Test"
msgstr "اختبار S.M.A.R.T. الذاتي" msgstr "اختبار S.M.A.R.T. الذاتي"
#: src/components/add-system.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
msgid "Save {foo}" msgid "Save {foo}"
msgstr "حفظ {foo}" msgstr "حفظ {foo}"
@@ -1712,6 +1753,10 @@ msgstr "احفظ العنوان باستخدام مفتاح الإدخال أو
msgid "Save Settings" msgid "Save Settings"
msgstr "حفظ الإعدادات" msgstr "حفظ الإعدادات"
#: src/components/add-system.tsx
msgid "Save System"
msgstr "حفظ النظام"
#: src/components/routes/settings/tokens-fingerprints.tsx #: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Saved in the database and does not expire until you disable it." msgid "Saved in the database and does not expire until you disable it."
msgstr "محفوظ في قاعدة البيانات ولا ينتهي حتى تقوم بتعطيله." msgstr "محفوظ في قاعدة البيانات ولا ينتهي حتى تقوم بتعطيله."
@@ -1833,6 +1878,7 @@ msgstr "تسجيل الدخول"
msgid "SMTP settings" msgid "SMTP settings"
msgstr "إعدادات SMTP" msgstr "إعدادات SMTP"
#: src/components/network-monitors-table/network-monitors-table.tsx
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "Sort By" msgid "Sort By"
msgstr "الترتيب حسب" msgstr "الترتيب حسب"
@@ -1875,12 +1921,11 @@ msgstr "استخدام التبديل"
msgid "Switch theme" msgid "Switch theme"
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/containers-table/containers-table-columns.tsx
#: src/components/navbar.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-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/quiet-hours.tsx #: src/components/routes/settings/quiet-hours.tsx
@@ -1925,9 +1970,15 @@ msgstr "تبويبات"
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Target" msgid "Target"
msgstr "الهدف" msgstr "الهدف"
#: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx
msgid "target[,protocol[,port[,interval]]]"
msgstr ""
#: src/components/systemd-table/systemd-table.tsx #: src/components/systemd-table/systemd-table.tsx
msgid "Tasks" msgid "Tasks"
msgstr "المهام" msgstr "المهام"
@@ -2162,6 +2213,7 @@ msgstr "تحديث"
#: src/components/containers-table/containers-table-columns.tsx #: src/components/containers-table/containers-table-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/routes/system/smart-table.tsx #: src/components/routes/system/smart-table.tsx
#: src/components/routes/system/storage-pools-table.tsx #: src/components/routes/system/storage-pools-table.tsx
#: src/components/systemd-table/systemd-table-columns.tsx #: src/components/systemd-table/systemd-table-columns.tsx
@@ -2217,6 +2269,7 @@ msgstr "الاستخدام"
msgid "Value" msgid "Value"
msgstr "القيمة" msgstr "القيمة"
#: src/components/network-monitors-table/network-monitors-table.tsx
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "View" msgid "View"
msgstr "عرض" msgstr "عرض"
@@ -2231,6 +2284,7 @@ msgstr "عرض المزيد"
msgid "View your 200 most recent alerts." msgid "View your 200 most recent alerts."
msgstr "عرض أحدث 200 تنبيه." msgstr "عرض أحدث 200 تنبيه."
#: src/components/network-monitors-table/network-monitors-table.tsx
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "Visible Fields" msgid "Visible Fields"
msgstr "الأعمدة الظاهرة" msgstr "الأعمدة الظاهرة"
@@ -2305,3 +2359,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 "تم تحديث إعدادات المستخدم الخاصة بك." msgstr "تم تحديث إعدادات المستخدم الخاصة بك."
+68 -13
View File
@@ -8,7 +8,7 @@ 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: 2026-09-18 19:21\n" "PO-Revision-Date: 2026-09-24 17:28\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"
@@ -52,14 +52,26 @@ msgstr "{count, plural, one {{countString} час} other {{countString} часа
msgid "{count, plural, one {{countString} minute} few {{countString} minutes} many {{countString} minutes} other {{countString} minutes}}" 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} минути}}" msgstr "{count, plural, one {{countString} минута} few {{countString} минути} many {{countString} минути} other {{countString} минути}}"
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "{daysLeft, plural, one {# day} other {# days}}"
msgstr ""
#: src/components/routes/system/charts/disk-charts.tsx #: src/components/routes/system/charts/disk-charts.tsx
msgid "{diskName} I/O" msgid "{diskName} I/O"
msgstr "В/И на {diskName}" msgstr "В/И на {diskName}"
#: src/components/systems-table/systems-table-columns.tsx
msgid "{numFailed, plural, one {# failed service} other {# failed services}}"
msgstr ""
#: src/components/routes/system/info-bar.tsx #: src/components/routes/system/info-bar.tsx
msgid "{threads, plural, one {# thread} other {# threads}}" msgid "{threads, plural, one {# thread} other {# threads}}"
msgstr "{threads, plural, one {# нишка} other {# нишки}}" msgstr "{threads, plural, one {# нишка} other {# нишки}}"
#: src/components/systems-table/systems-table-columns.tsx
msgid "{totalCount, plural, one {# service} other {# services}}"
msgstr ""
#: src/lib/utils.ts #: src/lib/utils.ts
msgid "1 hour" msgid "1 hour"
msgstr "1 час" msgstr "1 час"
@@ -123,10 +135,10 @@ msgstr "Активни тревоги"
msgid "Active state" msgid "Active state"
msgstr "Активно състояние" msgstr "Активно състояние"
#: src/components/add-system.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/add-system.tsx msgid "Add"
#: src/components/navbar.tsx msgstr ""
#: src/components/navbar.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
@@ -136,6 +148,13 @@ msgstr "Активно състояние"
msgid "Add {foo}" msgid "Add {foo}"
msgstr "Добави {foo}" msgstr "Добави {foo}"
#: src/components/add-system.tsx
#: src/components/add-system.tsx
#: src/components/navbar.tsx
#: src/components/navbar.tsx
msgid "Add System"
msgstr "Добави Система"
#: src/components/routes/settings/notifications.tsx #: src/components/routes/settings/notifications.tsx
msgid "Add URL" msgid "Add URL"
msgstr "Добави URL" msgstr "Добави URL"
@@ -260,6 +279,7 @@ msgstr "Средно използване на GPU двигатели"
msgid "Average, minimum, and maximum response time" msgid "Average, minimum, and maximum response time"
msgstr "Средно, минимално и максимално време за отговор" msgstr "Средно, минимално и максимално време за отговор"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Avg 1h" msgid "Avg 1h"
msgstr "Средно 1h" msgstr "Средно 1h"
@@ -383,6 +403,19 @@ msgstr "Внимание - възможност за загуба на данн
msgid "Celsius (°C)" msgid "Celsius (°C)"
msgstr "Целзий (°C)" msgstr "Целзий (°C)"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Certificate"
msgstr ""
#: src/components/network-monitors-table/network-monitors-table.tsx
msgid "Certificate expired {expires}"
msgstr ""
#: src/components/network-monitors-table/network-monitors-table.tsx
msgid "Certificate expires {expires}"
msgstr ""
#: src/components/routes/settings/general.tsx #: src/components/routes/settings/general.tsx
msgid "Change display units for metrics." msgid "Change display units for metrics."
msgstr "Промяна на единиците за показване на метриките." msgstr "Промяна на единиците за показване на метриките."
@@ -776,12 +809,15 @@ msgstr "Продължителност"
msgid "Edit" msgid "Edit"
msgstr "Редактирай" msgstr "Редактирай"
#: src/components/add-system.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/routes/settings/quiet-hours.tsx #: src/components/routes/settings/quiet-hours.tsx
msgid "Edit {foo}" msgid "Edit {foo}"
msgstr "Редактиране на {foo}" msgstr "Редактиране на {foo}"
#: src/components/add-system.tsx
msgid "Edit System"
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
@@ -867,6 +903,10 @@ msgstr "Съществуващи системи които не са дефин
msgid "Exited active" msgid "Exited active"
msgstr "Излезе активно" msgstr "Излезе активно"
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Expired"
msgstr ""
#: src/components/routes/settings/tokens-fingerprints.tsx #: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Expires after one hour or on hub restart." msgid "Expires after one hour or on hub restart."
msgstr "Изтича след един час или при рестартиране на хъба." msgstr "Изтича след един час или при рестартиране на хъба."
@@ -887,10 +927,6 @@ 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 #: src/components/routes/system/smart-table.tsx
msgid "Failed Attributes:" msgid "Failed Attributes:"
msgstr "Неуспешни атрибути:" msgstr "Неуспешни атрибути:"
@@ -1090,6 +1126,7 @@ msgstr "Налична актуализация на образа"
msgid "Inactive" msgid "Inactive"
msgstr "Неактивен" msgstr "Неактивен"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/routes/settings/heartbeat.tsx #: src/components/routes/settings/heartbeat.tsx
msgid "Interval" msgid "Interval"
@@ -1182,6 +1219,7 @@ msgctxt "Packet loss"
msgid "Loss" msgid "Loss"
msgstr "Загуба" msgstr "Загуба"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Loss 1h" msgid "Loss 1h"
msgstr "Загуба 1h" msgstr "Загуба 1h"
@@ -1204,6 +1242,7 @@ msgstr "Инструкции за ръчна настройка"
msgid "Max 1 min" msgid "Max 1 min"
msgstr "Максимум 1 минута" msgstr "Максимум 1 минута"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Max 1h" msgid "Max 1h"
msgstr "Макс. 1h" msgstr "Макс. 1h"
@@ -1234,6 +1273,7 @@ msgstr "Употреба на паметта"
msgid "Memory usage of containers" msgid "Memory usage of containers"
msgstr "Използване на паметта от контейнерите" msgstr "Използване на паметта от контейнерите"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Min 1h" msgid "Min 1h"
msgstr "Мин. 1h" msgstr "Мин. 1h"
@@ -1565,6 +1605,7 @@ msgstr "Процесът стартира"
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Protocol" msgid "Protocol"
msgstr "Протокол" msgstr "Протокол"
@@ -1653,6 +1694,7 @@ msgstr "Нулиране на парола"
msgid "Resolved" msgid "Resolved"
msgstr "Решен" msgstr "Решен"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/routes/system/charts/monitors-charts.tsx #: src/components/routes/system/charts/monitors-charts.tsx
msgid "Response" msgid "Response"
@@ -1698,7 +1740,6 @@ msgstr "S.M.A.R.T. Детайли"
msgid "S.M.A.R.T. Self-Test" msgid "S.M.A.R.T. Self-Test"
msgstr "S.M.A.R.T. Самотест" msgstr "S.M.A.R.T. Самотест"
#: src/components/add-system.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
msgid "Save {foo}" msgid "Save {foo}"
msgstr "Запази {foo}" msgstr "Запази {foo}"
@@ -1712,6 +1753,10 @@ msgstr "Запази адреса с enter или запетая. Остави
msgid "Save Settings" msgid "Save Settings"
msgstr "Запази настройките" msgstr "Запази настройките"
#: src/components/add-system.tsx
msgid "Save System"
msgstr "Запази Система"
#: src/components/routes/settings/tokens-fingerprints.tsx #: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Saved in the database and does not expire until you disable it." msgid "Saved in the database and does not expire until you disable it."
msgstr "Запазен е в базата данни и не изтича, докато не го деактивирате." msgstr "Запазен е в базата данни и не изтича, докато не го деактивирате."
@@ -1833,6 +1878,7 @@ msgstr "Влез"
msgid "SMTP settings" msgid "SMTP settings"
msgstr "Настройки за SMTP" msgstr "Настройки за SMTP"
#: src/components/network-monitors-table/network-monitors-table.tsx
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "Sort By" msgid "Sort By"
msgstr "Сортиране по" msgstr "Сортиране по"
@@ -1875,12 +1921,11 @@ msgstr "Използване на swap"
msgid "Switch theme" msgid "Switch theme"
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/containers-table/containers-table-columns.tsx
#: src/components/navbar.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-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/quiet-hours.tsx #: src/components/routes/settings/quiet-hours.tsx
@@ -1925,9 +1970,15 @@ msgstr "Табове"
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Target" msgid "Target"
msgstr "Цел" msgstr "Цел"
#: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx
msgid "target[,protocol[,port[,interval]]]"
msgstr ""
#: src/components/systemd-table/systemd-table.tsx #: src/components/systemd-table/systemd-table.tsx
msgid "Tasks" msgid "Tasks"
msgstr "Задачи" msgstr "Задачи"
@@ -2162,6 +2213,7 @@ msgstr "Актуализирай"
#: src/components/containers-table/containers-table-columns.tsx #: src/components/containers-table/containers-table-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/routes/system/smart-table.tsx #: src/components/routes/system/smart-table.tsx
#: src/components/routes/system/storage-pools-table.tsx #: src/components/routes/system/storage-pools-table.tsx
#: src/components/systemd-table/systemd-table-columns.tsx #: src/components/systemd-table/systemd-table-columns.tsx
@@ -2217,6 +2269,7 @@ msgstr "Натоварване"
msgid "Value" msgid "Value"
msgstr "Стойност" msgstr "Стойност"
#: src/components/network-monitors-table/network-monitors-table.tsx
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "View" msgid "View"
msgstr "Изглед" msgstr "Изглед"
@@ -2231,6 +2284,7 @@ msgstr "Виж повече"
msgid "View your 200 most recent alerts." msgid "View your 200 most recent alerts."
msgstr "Прегледайте последните си 200 сигнала." msgstr "Прегледайте последните си 200 сигнала."
#: src/components/network-monitors-table/network-monitors-table.tsx
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "Visible Fields" msgid "Visible Fields"
msgstr "Видими полета" msgstr "Видими полета"
@@ -2305,3 +2359,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 "Настройките за потребителя ти са обновени." msgstr "Настройките за потребителя ти са обновени."
+68 -13
View File
@@ -8,7 +8,7 @@ msgstr ""
"Language: cs\n" "Language: cs\n"
"Project-Id-Version: beszel\n" "Project-Id-Version: beszel\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-09-18 19:21\n" "PO-Revision-Date: 2026-09-24 17:28\n"
"Last-Translator: \n" "Last-Translator: \n"
"Language-Team: Czech\n" "Language-Team: Czech\n"
"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 3;\n" "Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 3;\n"
@@ -52,14 +52,26 @@ msgstr "{count, plural, one {{countString} Hodina} few {{countString} Hodiny} ma
msgid "{count, plural, one {{countString} minute} few {{countString} minutes} many {{countString} minutes} other {{countString} minutes}}" 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}}" msgstr "{count, plural, one {{countString} minuta} few {{countString} minuty} many {{countString} minut} other {{countString} minut}}"
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "{daysLeft, plural, one {# day} other {# days}}"
msgstr ""
#: src/components/routes/system/charts/disk-charts.tsx #: src/components/routes/system/charts/disk-charts.tsx
msgid "{diskName} I/O" msgid "{diskName} I/O"
msgstr "I/O {diskName}" msgstr "I/O {diskName}"
#: src/components/systems-table/systems-table-columns.tsx
msgid "{numFailed, plural, one {# failed service} other {# failed services}}"
msgstr ""
#: src/components/routes/system/info-bar.tsx #: src/components/routes/system/info-bar.tsx
msgid "{threads, plural, one {# thread} other {# threads}}" msgid "{threads, plural, one {# thread} other {# threads}}"
msgstr "{threads, plural, one {# vlákno} few {# vlákna} many {# vláken} other {# vláken}}" msgstr "{threads, plural, one {# vlákno} few {# vlákna} many {# vláken} other {# vláken}}"
#: src/components/systems-table/systems-table-columns.tsx
msgid "{totalCount, plural, one {# service} other {# services}}"
msgstr ""
#: src/lib/utils.ts #: src/lib/utils.ts
msgid "1 hour" msgid "1 hour"
msgstr "1 hodina" msgstr "1 hodina"
@@ -123,10 +135,10 @@ msgstr "Aktivní výstrahy"
msgid "Active state" msgid "Active state"
msgstr "Aktivní stav" msgstr "Aktivní stav"
#: src/components/add-system.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/add-system.tsx msgid "Add"
#: src/components/navbar.tsx msgstr ""
#: src/components/navbar.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
@@ -136,6 +148,13 @@ msgstr "Aktivní stav"
msgid "Add {foo}" msgid "Add {foo}"
msgstr "Přidat {foo}" msgstr "Přidat {foo}"
#: src/components/add-system.tsx
#: src/components/add-system.tsx
#: src/components/navbar.tsx
#: src/components/navbar.tsx
msgid "Add System"
msgstr "Přidat Systém"
#: src/components/routes/settings/notifications.tsx #: src/components/routes/settings/notifications.tsx
msgid "Add URL" msgid "Add URL"
msgstr "Přidat URL" msgstr "Přidat URL"
@@ -260,6 +279,7 @@ msgstr "Průměrné využití GPU engine"
msgid "Average, minimum, and maximum response time" msgid "Average, minimum, and maximum response time"
msgstr "Průměrná, minimální a maximální doba odezvy" msgstr "Průměrná, minimální a maximální doba odezvy"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Avg 1h" msgid "Avg 1h"
msgstr "Prům. 1h" msgstr "Prům. 1h"
@@ -383,6 +403,19 @@ msgstr "Upozornění - možná ztráta dat"
msgid "Celsius (°C)" msgid "Celsius (°C)"
msgstr "Celsia (°C)" msgstr "Celsia (°C)"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Certificate"
msgstr ""
#: src/components/network-monitors-table/network-monitors-table.tsx
msgid "Certificate expired {expires}"
msgstr ""
#: src/components/network-monitors-table/network-monitors-table.tsx
msgid "Certificate expires {expires}"
msgstr ""
#: src/components/routes/settings/general.tsx #: src/components/routes/settings/general.tsx
msgid "Change display units for metrics." msgid "Change display units for metrics."
msgstr "Změnit jednotky zobrazení metrik." msgstr "Změnit jednotky zobrazení metrik."
@@ -776,12 +809,15 @@ msgstr "Doba trvání"
msgid "Edit" msgid "Edit"
msgstr "Upravit" msgstr "Upravit"
#: src/components/add-system.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/routes/settings/quiet-hours.tsx #: src/components/routes/settings/quiet-hours.tsx
msgid "Edit {foo}" msgid "Edit {foo}"
msgstr "Upravit {foo}" msgstr "Upravit {foo}"
#: src/components/add-system.tsx
msgid "Edit System"
msgstr "Upravit Systém"
#: 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
@@ -867,6 +903,10 @@ msgstr "Stávající systémy, které nejsou definovány v <0>config.yml</0>, bu
msgid "Exited active" msgid "Exited active"
msgstr "Ukončeno aktivně" msgstr "Ukončeno aktivně"
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Expired"
msgstr ""
#: src/components/routes/settings/tokens-fingerprints.tsx #: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Expires after one hour or on hub restart." msgid "Expires after one hour or on hub restart."
msgstr "Vyprší po jedné hodině nebo při restartu hubu." msgstr "Vyprší po jedné hodině nebo při restartu hubu."
@@ -887,10 +927,6 @@ msgstr "Exportovat aktuální konfiguraci systémů."
msgid "Fahrenheit (°F)" msgid "Fahrenheit (°F)"
msgstr "Fahrenheita (°F)" msgstr "Fahrenheita (°F)"
#: src/components/systems-table/systems-table-columns.tsx
msgid "Failed"
msgstr "Selhalo"
#: src/components/routes/system/smart-table.tsx #: src/components/routes/system/smart-table.tsx
msgid "Failed Attributes:" msgid "Failed Attributes:"
msgstr "Neúspěšné atributy:" msgstr "Neúspěšné atributy:"
@@ -1090,6 +1126,7 @@ msgstr "K dispozici je aktualizace obrazu"
msgid "Inactive" msgid "Inactive"
msgstr "Neaktivní" msgstr "Neaktivní"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/routes/settings/heartbeat.tsx #: src/components/routes/settings/heartbeat.tsx
msgid "Interval" msgid "Interval"
@@ -1182,6 +1219,7 @@ msgctxt "Packet loss"
msgid "Loss" msgid "Loss"
msgstr "Ztráta" msgstr "Ztráta"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Loss 1h" msgid "Loss 1h"
msgstr "Ztráta 1h" msgstr "Ztráta 1h"
@@ -1204,6 +1242,7 @@ msgstr "Pokyny k manuálnímu nastavení"
msgid "Max 1 min" msgid "Max 1 min"
msgstr "Max. 1 min" msgstr "Max. 1 min"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Max 1h" msgid "Max 1h"
msgstr "Max. 1h" msgstr "Max. 1h"
@@ -1234,6 +1273,7 @@ msgstr "Využití paměti"
msgid "Memory usage of containers" msgid "Memory usage of containers"
msgstr "Využití paměti kontejnery" msgstr "Využití paměti kontejnery"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Min 1h" msgid "Min 1h"
msgstr "Min. 1h" msgstr "Min. 1h"
@@ -1565,6 +1605,7 @@ msgstr "Proces spuštěn"
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Protocol" msgid "Protocol"
msgstr "Protokol" msgstr "Protokol"
@@ -1653,6 +1694,7 @@ msgstr "Obnovit heslo"
msgid "Resolved" msgid "Resolved"
msgstr "Vyřešeno" msgstr "Vyřešeno"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/routes/system/charts/monitors-charts.tsx #: src/components/routes/system/charts/monitors-charts.tsx
msgid "Response" msgid "Response"
@@ -1698,7 +1740,6 @@ msgstr "S.M.A.R.T. Detaily"
msgid "S.M.A.R.T. Self-Test" msgid "S.M.A.R.T. Self-Test"
msgstr "S.M.A.R.T. Vlastní test" msgstr "S.M.A.R.T. Vlastní test"
#: src/components/add-system.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
msgid "Save {foo}" msgid "Save {foo}"
msgstr "Uložit {foo}" msgstr "Uložit {foo}"
@@ -1712,6 +1753,10 @@ msgstr "Adresu uložte pomocí klávesy enter nebo čárky. Pro deaktivaci e-mai
msgid "Save Settings" msgid "Save Settings"
msgstr "Uložit nastavení" msgstr "Uložit nastavení"
#: src/components/add-system.tsx
msgid "Save System"
msgstr "Uložit Systém"
#: src/components/routes/settings/tokens-fingerprints.tsx #: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Saved in the database and does not expire until you disable it." msgid "Saved in the database and does not expire until you disable it."
msgstr "Uložen v databázi a nevyprší, dokud jej nezablokujete." msgstr "Uložen v databázi a nevyprší, dokud jej nezablokujete."
@@ -1833,6 +1878,7 @@ msgstr "Přihlásit se"
msgid "SMTP settings" msgid "SMTP settings"
msgstr "Nastavení SMTP" msgstr "Nastavení SMTP"
#: src/components/network-monitors-table/network-monitors-table.tsx
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "Sort By" msgid "Sort By"
msgstr "Seřadit podle" msgstr "Seřadit podle"
@@ -1875,12 +1921,11 @@ msgstr "Swap využití"
msgid "Switch theme" msgid "Switch theme"
msgstr "Přepnout motiv" msgstr "Přepnout motiv"
#: 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/containers-table/containers-table-columns.tsx
#: src/components/navbar.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-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/quiet-hours.tsx #: src/components/routes/settings/quiet-hours.tsx
@@ -1925,9 +1970,15 @@ msgstr "Karty"
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Target" msgid "Target"
msgstr "Cíl" msgstr "Cíl"
#: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx
msgid "target[,protocol[,port[,interval]]]"
msgstr ""
#: src/components/systemd-table/systemd-table.tsx #: src/components/systemd-table/systemd-table.tsx
msgid "Tasks" msgid "Tasks"
msgstr "Úlohy" msgstr "Úlohy"
@@ -2162,6 +2213,7 @@ msgstr "Aktualizovat"
#: src/components/containers-table/containers-table-columns.tsx #: src/components/containers-table/containers-table-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/routes/system/smart-table.tsx #: src/components/routes/system/smart-table.tsx
#: src/components/routes/system/storage-pools-table.tsx #: src/components/routes/system/storage-pools-table.tsx
#: src/components/systemd-table/systemd-table-columns.tsx #: src/components/systemd-table/systemd-table-columns.tsx
@@ -2217,6 +2269,7 @@ msgstr "Využití"
msgid "Value" msgid "Value"
msgstr "Hodnota" msgstr "Hodnota"
#: src/components/network-monitors-table/network-monitors-table.tsx
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "View" msgid "View"
msgstr "Zobrazení" msgstr "Zobrazení"
@@ -2231,6 +2284,7 @@ msgstr "Zobrazit více"
msgid "View your 200 most recent alerts." msgid "View your 200 most recent alerts."
msgstr "Zobrazit vašich 200 nejnovějších upozornění." msgstr "Zobrazit vašich 200 nejnovějších upozornění."
#: src/components/network-monitors-table/network-monitors-table.tsx
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "Visible Fields" msgid "Visible Fields"
msgstr "Viditelné sloupce" msgstr "Viditelné sloupce"
@@ -2305,3 +2359,4 @@ msgstr "Ano"
#: 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 "Vaše uživatelská nastavení byla aktualizována." msgstr "Vaše uživatelská nastavení byla aktualizována."
+68 -13
View File
@@ -8,7 +8,7 @@ msgstr ""
"Language: da\n" "Language: da\n"
"Project-Id-Version: beszel\n" "Project-Id-Version: beszel\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-09-18 19:21\n" "PO-Revision-Date: 2026-09-24 17:28\n"
"Last-Translator: \n" "Last-Translator: \n"
"Language-Team: Danish\n" "Language-Team: Danish\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -52,14 +52,26 @@ msgstr "{count, plural, one {{countString} time} other {{countString} timer}}"
msgid "{count, plural, one {{countString} minute} few {{countString} minutes} many {{countString} minutes} other {{countString} minutes}}" msgid "{count, plural, one {{countString} minute} few {{countString} minutes} many {{countString} minutes} other {{countString} minutes}}"
msgstr "{count, plural, one {{countString} minut} other {{countString} minutter}}" msgstr "{count, plural, one {{countString} minut} other {{countString} minutter}}"
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "{daysLeft, plural, one {# day} other {# days}}"
msgstr ""
#: src/components/routes/system/charts/disk-charts.tsx #: src/components/routes/system/charts/disk-charts.tsx
msgid "{diskName} I/O" msgid "{diskName} I/O"
msgstr "{diskName} I/O" msgstr "{diskName} I/O"
#: src/components/systems-table/systems-table-columns.tsx
msgid "{numFailed, plural, one {# failed service} other {# failed services}}"
msgstr ""
#: src/components/routes/system/info-bar.tsx #: src/components/routes/system/info-bar.tsx
msgid "{threads, plural, one {# thread} other {# threads}}" msgid "{threads, plural, one {# thread} other {# threads}}"
msgstr "{threads, plural, one {# tråd} other {# tråde}}" msgstr "{threads, plural, one {# tråd} other {# tråde}}"
#: src/components/systems-table/systems-table-columns.tsx
msgid "{totalCount, plural, one {# service} other {# services}}"
msgstr ""
#: src/lib/utils.ts #: src/lib/utils.ts
msgid "1 hour" msgid "1 hour"
msgstr "1 time" msgstr "1 time"
@@ -123,10 +135,10 @@ msgstr "Aktive Alarmer"
msgid "Active state" msgid "Active state"
msgstr "Aktiv tilstand" msgstr "Aktiv tilstand"
#: src/components/add-system.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/add-system.tsx msgid "Add"
#: src/components/navbar.tsx msgstr ""
#: src/components/navbar.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
@@ -136,6 +148,13 @@ msgstr "Aktiv tilstand"
msgid "Add {foo}" msgid "Add {foo}"
msgstr "Tilføj {foo}" msgstr "Tilføj {foo}"
#: src/components/add-system.tsx
#: src/components/add-system.tsx
#: src/components/navbar.tsx
#: src/components/navbar.tsx
msgid "Add System"
msgstr "Tilføj System"
#: src/components/routes/settings/notifications.tsx #: src/components/routes/settings/notifications.tsx
msgid "Add URL" msgid "Add URL"
msgstr "Tilføj URL" msgstr "Tilføj URL"
@@ -260,6 +279,7 @@ msgstr "Gennemsnitlig udnyttelse af GPU-enheder"
msgid "Average, minimum, and maximum response time" msgid "Average, minimum, and maximum response time"
msgstr "Gennemsnitlig, minimum og maksimum svartid" msgstr "Gennemsnitlig, minimum og maksimum svartid"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Avg 1h" msgid "Avg 1h"
msgstr "Gns 1h" msgstr "Gns 1h"
@@ -383,6 +403,19 @@ msgstr "Forsigtig - muligt tab af data"
msgid "Celsius (°C)" msgid "Celsius (°C)"
msgstr "Celsius (°C)" msgstr "Celsius (°C)"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Certificate"
msgstr ""
#: src/components/network-monitors-table/network-monitors-table.tsx
msgid "Certificate expired {expires}"
msgstr ""
#: src/components/network-monitors-table/network-monitors-table.tsx
msgid "Certificate expires {expires}"
msgstr ""
#: src/components/routes/settings/general.tsx #: src/components/routes/settings/general.tsx
msgid "Change display units for metrics." msgid "Change display units for metrics."
msgstr "Ændre viste enheder for målinger." msgstr "Ændre viste enheder for målinger."
@@ -776,12 +809,15 @@ msgstr "Varighed"
msgid "Edit" msgid "Edit"
msgstr "Rediger" msgstr "Rediger"
#: src/components/add-system.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/routes/settings/quiet-hours.tsx #: src/components/routes/settings/quiet-hours.tsx
msgid "Edit {foo}" msgid "Edit {foo}"
msgstr "Rediger {foo}" msgstr "Rediger {foo}"
#: src/components/add-system.tsx
msgid "Edit System"
msgstr "Rediger System"
#: 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
@@ -867,6 +903,10 @@ msgstr "Eksisterende systemer ikke defineret i <0>config.yml</0> vil blive slett
msgid "Exited active" msgid "Exited active"
msgstr "Afsluttet aktiv" msgstr "Afsluttet aktiv"
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Expired"
msgstr ""
#: src/components/routes/settings/tokens-fingerprints.tsx #: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Expires after one hour or on hub restart." msgid "Expires after one hour or on hub restart."
msgstr "Udløber efter en time eller ved hub-genstart." msgstr "Udløber efter en time eller ved hub-genstart."
@@ -887,10 +927,6 @@ msgstr "Eksporter din nuværende systemkonfiguration."
msgid "Fahrenheit (°F)" msgid "Fahrenheit (°F)"
msgstr "Fahrenheit (°F)" msgstr "Fahrenheit (°F)"
#: src/components/systems-table/systems-table-columns.tsx
msgid "Failed"
msgstr "Mislykkedes"
#: src/components/routes/system/smart-table.tsx #: src/components/routes/system/smart-table.tsx
msgid "Failed Attributes:" msgid "Failed Attributes:"
msgstr "Mislykkede attributter:" msgstr "Mislykkede attributter:"
@@ -1090,6 +1126,7 @@ msgstr "Imageopdatering tilgængelig"
msgid "Inactive" msgid "Inactive"
msgstr "Inaktiv" msgstr "Inaktiv"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/routes/settings/heartbeat.tsx #: src/components/routes/settings/heartbeat.tsx
msgid "Interval" msgid "Interval"
@@ -1182,6 +1219,7 @@ msgctxt "Packet loss"
msgid "Loss" msgid "Loss"
msgstr "Tab" msgstr "Tab"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Loss 1h" msgid "Loss 1h"
msgstr "Tab 1h" msgstr "Tab 1h"
@@ -1204,6 +1242,7 @@ msgstr "Manuel opsætningsvejledning"
msgid "Max 1 min" msgid "Max 1 min"
msgstr "Maks. 1 min" msgstr "Maks. 1 min"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Max 1h" msgid "Max 1h"
msgstr "Maks 1h" msgstr "Maks 1h"
@@ -1234,6 +1273,7 @@ msgstr "Hukommelsesforbrug"
msgid "Memory usage of containers" msgid "Memory usage of containers"
msgstr "Containeres hukommelsesforbrug" msgstr "Containeres hukommelsesforbrug"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Min 1h" msgid "Min 1h"
msgstr "" msgstr ""
@@ -1565,6 +1605,7 @@ msgstr "Proces startet"
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Protocol" msgid "Protocol"
msgstr "Protokol" msgstr "Protokol"
@@ -1653,6 +1694,7 @@ msgstr "Nulstil adgangskode"
msgid "Resolved" msgid "Resolved"
msgstr "Løst" msgstr "Løst"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/routes/system/charts/monitors-charts.tsx #: src/components/routes/system/charts/monitors-charts.tsx
msgid "Response" msgid "Response"
@@ -1698,7 +1740,6 @@ msgstr "S.M.A.R.T.-detaljer"
msgid "S.M.A.R.T. Self-Test" msgid "S.M.A.R.T. Self-Test"
msgstr "S.M.A.R.T. selvtest" msgstr "S.M.A.R.T. selvtest"
#: src/components/add-system.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
msgid "Save {foo}" msgid "Save {foo}"
msgstr "Gem {foo}" msgstr "Gem {foo}"
@@ -1712,6 +1753,10 @@ msgstr "Gem adresse ved hjælp af enter eller komma. Lad feltet stå tomt for at
msgid "Save Settings" msgid "Save Settings"
msgstr "Gem indstillinger" msgstr "Gem indstillinger"
#: src/components/add-system.tsx
msgid "Save System"
msgstr "Gem System"
#: src/components/routes/settings/tokens-fingerprints.tsx #: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Saved in the database and does not expire until you disable it." msgid "Saved in the database and does not expire until you disable it."
msgstr "Gemt i databasen og udløber ikke, før du deaktiverer det." msgstr "Gemt i databasen og udløber ikke, før du deaktiverer det."
@@ -1833,6 +1878,7 @@ msgstr "Log ind"
msgid "SMTP settings" msgid "SMTP settings"
msgstr "SMTP-indstillinger" msgstr "SMTP-indstillinger"
#: src/components/network-monitors-table/network-monitors-table.tsx
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "Sort By" msgid "Sort By"
msgstr "Sorter efter" msgstr "Sorter efter"
@@ -1875,12 +1921,11 @@ msgstr "Swap forbrug"
msgid "Switch theme" msgid "Switch theme"
msgstr "Skift tema" msgstr "Skift tema"
#: 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/containers-table/containers-table-columns.tsx
#: src/components/navbar.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-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/quiet-hours.tsx #: src/components/routes/settings/quiet-hours.tsx
@@ -1925,9 +1970,15 @@ msgstr "Faner"
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Target" msgid "Target"
msgstr "Mål" msgstr "Mål"
#: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx
msgid "target[,protocol[,port[,interval]]]"
msgstr ""
#: src/components/systemd-table/systemd-table.tsx #: src/components/systemd-table/systemd-table.tsx
msgid "Tasks" msgid "Tasks"
msgstr "Opgaver" msgstr "Opgaver"
@@ -2162,6 +2213,7 @@ msgstr "Opdater"
#: src/components/containers-table/containers-table-columns.tsx #: src/components/containers-table/containers-table-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/routes/system/smart-table.tsx #: src/components/routes/system/smart-table.tsx
#: src/components/routes/system/storage-pools-table.tsx #: src/components/routes/system/storage-pools-table.tsx
#: src/components/systemd-table/systemd-table-columns.tsx #: src/components/systemd-table/systemd-table-columns.tsx
@@ -2217,6 +2269,7 @@ msgstr "Udnyttelse"
msgid "Value" msgid "Value"
msgstr "Værdi" msgstr "Værdi"
#: src/components/network-monitors-table/network-monitors-table.tsx
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "View" msgid "View"
msgstr "Vis" msgstr "Vis"
@@ -2231,6 +2284,7 @@ msgstr "Se mere"
msgid "View your 200 most recent alerts." msgid "View your 200 most recent alerts."
msgstr "Se dine 200 nyeste alarmer." msgstr "Se dine 200 nyeste alarmer."
#: src/components/network-monitors-table/network-monitors-table.tsx
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "Visible Fields" msgid "Visible Fields"
msgstr "Synlige felter" msgstr "Synlige felter"
@@ -2305,3 +2359,4 @@ msgstr "Ja"
#: 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 "Dine brugerindstillinger er opdateret." msgstr "Dine brugerindstillinger er opdateret."
+68 -13
View File
@@ -8,7 +8,7 @@ msgstr ""
"Language: de\n" "Language: de\n"
"Project-Id-Version: beszel\n" "Project-Id-Version: beszel\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-09-18 19:22\n" "PO-Revision-Date: 2026-09-24 17:29\n"
"Last-Translator: \n" "Last-Translator: \n"
"Language-Team: German\n" "Language-Team: German\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -52,14 +52,26 @@ msgstr "{count, plural, one {{countString} Stunde} other {{countString} Stunden}
msgid "{count, plural, one {{countString} minute} few {{countString} minutes} many {{countString} minutes} other {{countString} minutes}}" msgid "{count, plural, one {{countString} minute} few {{countString} minutes} many {{countString} minutes} other {{countString} minutes}}"
msgstr "{count, plural, one {{countString} Minute} other {{countString} Minuten}}" msgstr "{count, plural, one {{countString} Minute} other {{countString} Minuten}}"
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "{daysLeft, plural, one {# day} other {# days}}"
msgstr ""
#: src/components/routes/system/charts/disk-charts.tsx #: src/components/routes/system/charts/disk-charts.tsx
msgid "{diskName} I/O" msgid "{diskName} I/O"
msgstr "{diskName} E/A" msgstr "{diskName} E/A"
#: src/components/systems-table/systems-table-columns.tsx
msgid "{numFailed, plural, one {# failed service} other {# failed services}}"
msgstr ""
#: src/components/routes/system/info-bar.tsx #: src/components/routes/system/info-bar.tsx
msgid "{threads, plural, one {# thread} other {# threads}}" msgid "{threads, plural, one {# thread} other {# threads}}"
msgstr "{threads, plural, one {# Thread} other {# Threads}}" msgstr "{threads, plural, one {# Thread} other {# Threads}}"
#: src/components/systems-table/systems-table-columns.tsx
msgid "{totalCount, plural, one {# service} other {# services}}"
msgstr ""
#: src/lib/utils.ts #: src/lib/utils.ts
msgid "1 hour" msgid "1 hour"
msgstr "1 Stunde" msgstr "1 Stunde"
@@ -123,10 +135,10 @@ msgstr "Aktive Warnungen"
msgid "Active state" msgid "Active state"
msgstr "Aktiver Zustand" msgstr "Aktiver Zustand"
#: src/components/add-system.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/add-system.tsx msgid "Add"
#: src/components/navbar.tsx msgstr ""
#: src/components/navbar.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
@@ -136,6 +148,13 @@ msgstr "Aktiver Zustand"
msgid "Add {foo}" msgid "Add {foo}"
msgstr "{foo} hinzufügen" msgstr "{foo} hinzufügen"
#: src/components/add-system.tsx
#: src/components/add-system.tsx
#: src/components/navbar.tsx
#: src/components/navbar.tsx
msgid "Add System"
msgstr "System hinzufügen"
#: src/components/routes/settings/notifications.tsx #: src/components/routes/settings/notifications.tsx
msgid "Add URL" msgid "Add URL"
msgstr "URL hinzufügen" msgstr "URL hinzufügen"
@@ -260,6 +279,7 @@ msgstr "Durchschnittliche Auslastung der GPU-Engines"
msgid "Average, minimum, and maximum response time" msgid "Average, minimum, and maximum response time"
msgstr "Durchschnittliche, minimale und maximale Antwortzeit" msgstr "Durchschnittliche, minimale und maximale Antwortzeit"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Avg 1h" msgid "Avg 1h"
msgstr "Ø 1h" msgstr "Ø 1h"
@@ -383,6 +403,19 @@ msgstr "Vorsicht - potenzieller Datenverlust"
msgid "Celsius (°C)" msgid "Celsius (°C)"
msgstr "Celsius (°C)" msgstr "Celsius (°C)"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Certificate"
msgstr ""
#: src/components/network-monitors-table/network-monitors-table.tsx
msgid "Certificate expired {expires}"
msgstr ""
#: src/components/network-monitors-table/network-monitors-table.tsx
msgid "Certificate expires {expires}"
msgstr ""
#: src/components/routes/settings/general.tsx #: src/components/routes/settings/general.tsx
msgid "Change display units for metrics." msgid "Change display units for metrics."
msgstr "Anzeigeeinheiten der Werte ändern." msgstr "Anzeigeeinheiten der Werte ändern."
@@ -776,12 +809,15 @@ msgstr "Dauer"
msgid "Edit" msgid "Edit"
msgstr "Bearbeiten" msgstr "Bearbeiten"
#: src/components/add-system.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/routes/settings/quiet-hours.tsx #: src/components/routes/settings/quiet-hours.tsx
msgid "Edit {foo}" msgid "Edit {foo}"
msgstr "{foo} bearbeiten" msgstr "{foo} bearbeiten"
#: src/components/add-system.tsx
msgid "Edit System"
msgstr "System bearbeiten"
#: 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
@@ -867,6 +903,10 @@ msgstr "Bestehende Systeme, die nicht in der <0>config.yml</0> definiert sind, w
msgid "Exited active" msgid "Exited active"
msgstr "Beendet aktiv" msgstr "Beendet aktiv"
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Expired"
msgstr ""
#: src/components/routes/settings/tokens-fingerprints.tsx #: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Expires after one hour or on hub restart." msgid "Expires after one hour or on hub restart."
msgstr "Läuft nach einer Stunde oder bei Hub-Neustart ab." msgstr "Läuft nach einer Stunde oder bei Hub-Neustart ab."
@@ -887,10 +927,6 @@ msgstr "Exportiere die aktuelle Systemkonfiguration."
msgid "Fahrenheit (°F)" msgid "Fahrenheit (°F)"
msgstr "Fahrenheit (°F)" msgstr "Fahrenheit (°F)"
#: src/components/systems-table/systems-table-columns.tsx
msgid "Failed"
msgstr "Fehlgeschlagen"
#: src/components/routes/system/smart-table.tsx #: src/components/routes/system/smart-table.tsx
msgid "Failed Attributes:" msgid "Failed Attributes:"
msgstr "Fehlgeschlagene Attribute:" msgstr "Fehlgeschlagene Attribute:"
@@ -1090,6 +1126,7 @@ msgstr "Image-Update verfügbar"
msgid "Inactive" msgid "Inactive"
msgstr "Inaktiv" msgstr "Inaktiv"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/routes/settings/heartbeat.tsx #: src/components/routes/settings/heartbeat.tsx
msgid "Interval" msgid "Interval"
@@ -1182,6 +1219,7 @@ msgctxt "Packet loss"
msgid "Loss" msgid "Loss"
msgstr "Verlust" msgstr "Verlust"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Loss 1h" msgid "Loss 1h"
msgstr "Verlust 1h" msgstr "Verlust 1h"
@@ -1204,6 +1242,7 @@ msgstr "Anleitung zur manuellen Einrichtung"
msgid "Max 1 min" msgid "Max 1 min"
msgstr "Max 1 Min" msgstr "Max 1 Min"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Max 1h" msgid "Max 1h"
msgstr "" msgstr ""
@@ -1234,6 +1273,7 @@ msgstr "Arbeitsspeichernutzung"
msgid "Memory usage of containers" msgid "Memory usage of containers"
msgstr "Speichernutzung der Container" msgstr "Speichernutzung der Container"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Min 1h" msgid "Min 1h"
msgstr "" msgstr ""
@@ -1565,6 +1605,7 @@ msgstr "Prozess gestartet"
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Protocol" msgid "Protocol"
msgstr "Protokoll" msgstr "Protokoll"
@@ -1653,6 +1694,7 @@ msgstr "Passwort zurücksetzen"
msgid "Resolved" msgid "Resolved"
msgstr "Gelöst" msgstr "Gelöst"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/routes/system/charts/monitors-charts.tsx #: src/components/routes/system/charts/monitors-charts.tsx
msgid "Response" msgid "Response"
@@ -1698,7 +1740,6 @@ msgstr "S.M.A.R.T.-Details"
msgid "S.M.A.R.T. Self-Test" msgid "S.M.A.R.T. Self-Test"
msgstr "S.M.A.R.T.-Selbsttest" msgstr "S.M.A.R.T.-Selbsttest"
#: src/components/add-system.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
msgid "Save {foo}" msgid "Save {foo}"
msgstr "{foo} speichern" msgstr "{foo} speichern"
@@ -1712,6 +1753,10 @@ msgstr "Adresse mit der Enter-Taste oder Komma speichern. Leer lassen, um E-Mail
msgid "Save Settings" msgid "Save Settings"
msgstr "Einstellungen speichern" msgstr "Einstellungen speichern"
#: src/components/add-system.tsx
msgid "Save System"
msgstr "System speichern"
#: src/components/routes/settings/tokens-fingerprints.tsx #: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Saved in the database and does not expire until you disable it." msgid "Saved in the database and does not expire until you disable it."
msgstr "In der Datenbank gespeichert und läuft nicht ab, bis Sie es deaktivieren." msgstr "In der Datenbank gespeichert und läuft nicht ab, bis Sie es deaktivieren."
@@ -1833,6 +1878,7 @@ msgstr "Anmelden"
msgid "SMTP settings" msgid "SMTP settings"
msgstr "SMTP-Einstellungen" msgstr "SMTP-Einstellungen"
#: src/components/network-monitors-table/network-monitors-table.tsx
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "Sort By" msgid "Sort By"
msgstr "Sortieren nach" msgstr "Sortieren nach"
@@ -1875,12 +1921,11 @@ msgstr "Swap-Nutzung"
msgid "Switch theme" msgid "Switch theme"
msgstr "Design wechseln" msgstr "Design wechseln"
#: 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/containers-table/containers-table-columns.tsx
#: src/components/navbar.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-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/quiet-hours.tsx #: src/components/routes/settings/quiet-hours.tsx
@@ -1925,9 +1970,15 @@ msgstr "Tabs"
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Target" msgid "Target"
msgstr "Ziel" msgstr "Ziel"
#: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx
msgid "target[,protocol[,port[,interval]]]"
msgstr ""
#: src/components/systemd-table/systemd-table.tsx #: src/components/systemd-table/systemd-table.tsx
msgid "Tasks" msgid "Tasks"
msgstr "Aufgaben" msgstr "Aufgaben"
@@ -2162,6 +2213,7 @@ msgstr "Aktualisieren"
#: src/components/containers-table/containers-table-columns.tsx #: src/components/containers-table/containers-table-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/routes/system/smart-table.tsx #: src/components/routes/system/smart-table.tsx
#: src/components/routes/system/storage-pools-table.tsx #: src/components/routes/system/storage-pools-table.tsx
#: src/components/systemd-table/systemd-table-columns.tsx #: src/components/systemd-table/systemd-table-columns.tsx
@@ -2217,6 +2269,7 @@ msgstr "Auslastung"
msgid "Value" msgid "Value"
msgstr "Wert" msgstr "Wert"
#: src/components/network-monitors-table/network-monitors-table.tsx
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "View" msgid "View"
msgstr "Ansicht" msgstr "Ansicht"
@@ -2231,6 +2284,7 @@ msgstr "Mehr anzeigen"
msgid "View your 200 most recent alerts." msgid "View your 200 most recent alerts."
msgstr "Sieh dir die neusten 200 Alarme an." msgstr "Sieh dir die neusten 200 Alarme an."
#: src/components/network-monitors-table/network-monitors-table.tsx
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "Visible Fields" msgid "Visible Fields"
msgstr "Sichtbare Spalten" msgstr "Sichtbare Spalten"
@@ -2305,3 +2359,4 @@ msgstr "Ja"
#: 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 "Deine Benutzereinstellungen wurden aktualisiert." msgstr "Deine Benutzereinstellungen wurden aktualisiert."
+68 -13
View File
@@ -8,7 +8,7 @@ msgstr ""
"Language: el\n" "Language: el\n"
"Project-Id-Version: beszel\n" "Project-Id-Version: beszel\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-09-18 19:21\n" "PO-Revision-Date: 2026-09-24 17:29\n"
"Last-Translator: \n" "Last-Translator: \n"
"Language-Team: Greek\n" "Language-Team: Greek\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -52,14 +52,26 @@ msgstr "{count, plural, one {{countString} ώρα} other {{countString} ώρες
msgid "{count, plural, one {{countString} minute} few {{countString} minutes} many {{countString} minutes} other {{countString} minutes}}" msgid "{count, plural, one {{countString} minute} few {{countString} minutes} many {{countString} minutes} other {{countString} minutes}}"
msgstr "{count, plural, one {{countString} λεπτό} other {{countString} λεπτά}}" msgstr "{count, plural, one {{countString} λεπτό} other {{countString} λεπτά}}"
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "{daysLeft, plural, one {# day} other {# days}}"
msgstr ""
#: src/components/routes/system/charts/disk-charts.tsx #: src/components/routes/system/charts/disk-charts.tsx
msgid "{diskName} I/O" msgid "{diskName} I/O"
msgstr "I/O {diskName}" msgstr "I/O {diskName}"
#: src/components/systems-table/systems-table-columns.tsx
msgid "{numFailed, plural, one {# failed service} other {# failed services}}"
msgstr ""
#: src/components/routes/system/info-bar.tsx #: src/components/routes/system/info-bar.tsx
msgid "{threads, plural, one {# thread} other {# threads}}" msgid "{threads, plural, one {# thread} other {# threads}}"
msgstr "{threads, plural, one {# thread} other {# threads}}" msgstr "{threads, plural, one {# thread} other {# threads}}"
#: src/components/systems-table/systems-table-columns.tsx
msgid "{totalCount, plural, one {# service} other {# services}}"
msgstr ""
#: src/lib/utils.ts #: src/lib/utils.ts
msgid "1 hour" msgid "1 hour"
msgstr "1 ώρα" msgstr "1 ώρα"
@@ -123,10 +135,10 @@ msgstr "Ενεργές ειδοποιήσεις"
msgid "Active state" msgid "Active state"
msgstr "Ενεργή κατάσταση" msgstr "Ενεργή κατάσταση"
#: src/components/add-system.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/add-system.tsx msgid "Add"
#: src/components/navbar.tsx msgstr ""
#: src/components/navbar.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
@@ -136,6 +148,13 @@ msgstr "Ενεργή κατάσταση"
msgid "Add {foo}" msgid "Add {foo}"
msgstr "Προσθήκη {foo}" msgstr "Προσθήκη {foo}"
#: src/components/add-system.tsx
#: src/components/add-system.tsx
#: src/components/navbar.tsx
#: src/components/navbar.tsx
msgid "Add System"
msgstr "Προσθήκη Σύστημα"
#: src/components/routes/settings/notifications.tsx #: src/components/routes/settings/notifications.tsx
msgid "Add URL" msgid "Add URL"
msgstr "Προσθήκη URL" msgstr "Προσθήκη URL"
@@ -260,6 +279,7 @@ msgstr "Μέση χρήση των μηχανών GPU"
msgid "Average, minimum, and maximum response time" msgid "Average, minimum, and maximum response time"
msgstr "Μέσος, ελάχιστος και μέγιστος χρόνος απόκρισης" msgstr "Μέσος, ελάχιστος και μέγιστος χρόνος απόκρισης"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Avg 1h" msgid "Avg 1h"
msgstr "Μέσος όρος 1ώρου" msgstr "Μέσος όρος 1ώρου"
@@ -383,6 +403,19 @@ msgstr "Προσοχή - πιθανή απώλεια δεδομένων"
msgid "Celsius (°C)" msgid "Celsius (°C)"
msgstr "Κελσίου (°C)" msgstr "Κελσίου (°C)"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Certificate"
msgstr ""
#: src/components/network-monitors-table/network-monitors-table.tsx
msgid "Certificate expired {expires}"
msgstr ""
#: src/components/network-monitors-table/network-monitors-table.tsx
msgid "Certificate expires {expires}"
msgstr ""
#: src/components/routes/settings/general.tsx #: src/components/routes/settings/general.tsx
msgid "Change display units for metrics." msgid "Change display units for metrics."
msgstr "Αλλάξτε τις μονάδες εμφάνισης των μετρήσεων." msgstr "Αλλάξτε τις μονάδες εμφάνισης των μετρήσεων."
@@ -776,12 +809,15 @@ msgstr "Διάρκεια"
msgid "Edit" msgid "Edit"
msgstr "Επεξεργασία" msgstr "Επεξεργασία"
#: src/components/add-system.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/routes/settings/quiet-hours.tsx #: src/components/routes/settings/quiet-hours.tsx
msgid "Edit {foo}" msgid "Edit {foo}"
msgstr "Επεξεργασία {foo}" msgstr "Επεξεργασία {foo}"
#: src/components/add-system.tsx
msgid "Edit System"
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
@@ -867,6 +903,10 @@ msgstr "Τα υπάρχοντα συστήματα που δεν ορίζοντ
msgid "Exited active" msgid "Exited active"
msgstr "Ενεργό μετά την έξοδο" msgstr "Ενεργό μετά την έξοδο"
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Expired"
msgstr ""
#: src/components/routes/settings/tokens-fingerprints.tsx #: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Expires after one hour or on hub restart." msgid "Expires after one hour or on hub restart."
msgstr "Λήγει μετά από μία ώρα ή με επανεκκίνηση του κόμβου." msgstr "Λήγει μετά από μία ώρα ή με επανεκκίνηση του κόμβου."
@@ -887,10 +927,6 @@ 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 #: src/components/routes/system/smart-table.tsx
msgid "Failed Attributes:" msgid "Failed Attributes:"
msgstr "Αποτυχημένα χαρακτηριστικά:" msgstr "Αποτυχημένα χαρακτηριστικά:"
@@ -1090,6 +1126,7 @@ msgstr "Διατίθεται ενημέρωση εικόνας"
msgid "Inactive" msgid "Inactive"
msgstr "Ανενεργό" msgstr "Ανενεργό"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/routes/settings/heartbeat.tsx #: src/components/routes/settings/heartbeat.tsx
msgid "Interval" msgid "Interval"
@@ -1182,6 +1219,7 @@ msgctxt "Packet loss"
msgid "Loss" msgid "Loss"
msgstr "Απώλεια" msgstr "Απώλεια"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Loss 1h" msgid "Loss 1h"
msgstr "Απώλεια 1ώρου" msgstr "Απώλεια 1ώρου"
@@ -1204,6 +1242,7 @@ msgstr "Οδηγίες χειροκίνητης εγκατάστασης"
msgid "Max 1 min" msgid "Max 1 min"
msgstr "Μέγ. 1 λ" msgstr "Μέγ. 1 λ"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Max 1h" msgid "Max 1h"
msgstr "Μέγιστο 1ώρου" msgstr "Μέγιστο 1ώρου"
@@ -1234,6 +1273,7 @@ msgstr "Χρήση μνήμης"
msgid "Memory usage of containers" msgid "Memory usage of containers"
msgstr "Χρήση μνήμης των κοντέινερ" msgstr "Χρήση μνήμης των κοντέινερ"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Min 1h" msgid "Min 1h"
msgstr "Ελάχιστο 1ώρου" msgstr "Ελάχιστο 1ώρου"
@@ -1565,6 +1605,7 @@ msgstr "Η διεργασία ξεκίνησε"
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Protocol" msgid "Protocol"
msgstr "Πρωτόκολλο" msgstr "Πρωτόκολλο"
@@ -1653,6 +1694,7 @@ msgstr "Επαναφορά κωδικού πρόσβασης"
msgid "Resolved" msgid "Resolved"
msgstr "Επιλύθηκε" msgstr "Επιλύθηκε"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/routes/system/charts/monitors-charts.tsx #: src/components/routes/system/charts/monitors-charts.tsx
msgid "Response" msgid "Response"
@@ -1698,7 +1740,6 @@ msgstr "Λεπτομέρειες S.M.A.R.T."
msgid "S.M.A.R.T. Self-Test" msgid "S.M.A.R.T. Self-Test"
msgstr "Αυτοέλεγχος S.M.A.R.T." msgstr "Αυτοέλεγχος S.M.A.R.T."
#: src/components/add-system.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
msgid "Save {foo}" msgid "Save {foo}"
msgstr "Αποθήκευση {foo}" msgstr "Αποθήκευση {foo}"
@@ -1712,6 +1753,10 @@ msgstr "Αποθηκεύστε τη διεύθυνση με Enter ή κόμμα.
msgid "Save Settings" msgid "Save Settings"
msgstr "Αποθήκευση ρυθμίσεων" msgstr "Αποθήκευση ρυθμίσεων"
#: src/components/add-system.tsx
msgid "Save System"
msgstr "Αποθήκευση Σύστημα"
#: src/components/routes/settings/tokens-fingerprints.tsx #: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Saved in the database and does not expire until you disable it." msgid "Saved in the database and does not expire until you disable it."
msgstr "Αποθηκεύεται στη βάση δεδομένων και δεν λήγει μέχρι να το απενεργοποιήσετε." msgstr "Αποθηκεύεται στη βάση δεδομένων και δεν λήγει μέχρι να το απενεργοποιήσετε."
@@ -1833,6 +1878,7 @@ msgstr "Σύνδεση"
msgid "SMTP settings" msgid "SMTP settings"
msgstr "Ρυθμίσεις SMTP" msgstr "Ρυθμίσεις SMTP"
#: src/components/network-monitors-table/network-monitors-table.tsx
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "Sort By" msgid "Sort By"
msgstr "Ταξινόμηση κατά" msgstr "Ταξινόμηση κατά"
@@ -1875,12 +1921,11 @@ msgstr "Χρήση swap"
msgid "Switch theme" msgid "Switch theme"
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/containers-table/containers-table-columns.tsx
#: src/components/navbar.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-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/quiet-hours.tsx #: src/components/routes/settings/quiet-hours.tsx
@@ -1925,9 +1970,15 @@ msgstr "Καρτέλες"
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Target" msgid "Target"
msgstr "Στόχος" msgstr "Στόχος"
#: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx
msgid "target[,protocol[,port[,interval]]]"
msgstr ""
#: src/components/systemd-table/systemd-table.tsx #: src/components/systemd-table/systemd-table.tsx
msgid "Tasks" msgid "Tasks"
msgstr "Εργασίες" msgstr "Εργασίες"
@@ -2162,6 +2213,7 @@ msgstr "Ενημέρωση"
#: src/components/containers-table/containers-table-columns.tsx #: src/components/containers-table/containers-table-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/routes/system/smart-table.tsx #: src/components/routes/system/smart-table.tsx
#: src/components/routes/system/storage-pools-table.tsx #: src/components/routes/system/storage-pools-table.tsx
#: src/components/systemd-table/systemd-table-columns.tsx #: src/components/systemd-table/systemd-table-columns.tsx
@@ -2217,6 +2269,7 @@ msgstr "Χρήση"
msgid "Value" msgid "Value"
msgstr "Τιμή" msgstr "Τιμή"
#: src/components/network-monitors-table/network-monitors-table.tsx
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "View" msgid "View"
msgstr "Προβολή" msgstr "Προβολή"
@@ -2231,6 +2284,7 @@ msgstr "Προβολή περισσότερων"
msgid "View your 200 most recent alerts." msgid "View your 200 most recent alerts."
msgstr "Προβάλετε τις 200 πιο πρόσφατες ειδοποιήσεις σας." msgstr "Προβάλετε τις 200 πιο πρόσφατες ειδοποιήσεις σας."
#: src/components/network-monitors-table/network-monitors-table.tsx
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "Visible Fields" msgid "Visible Fields"
msgstr "Ορατά πεδία" msgstr "Ορατά πεδία"
@@ -2305,3 +2359,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 "Οι ρυθμίσεις χρήστη σας ενημερώθηκαν." msgstr "Οι ρυθμίσεις χρήστη σας ενημερώθηκαν."
+66 -12
View File
@@ -47,14 +47,26 @@ msgstr "{count, plural, one {{countString} hour} other {{countString} hours}}"
msgid "{count, plural, one {{countString} minute} few {{countString} minutes} many {{countString} minutes} other {{countString} minutes}}" msgid "{count, plural, one {{countString} minute} few {{countString} minutes} many {{countString} minutes} other {{countString} minutes}}"
msgstr "{count, plural, one {{countString} minute} few {{countString} minutes} many {{countString} minutes} other {{countString} minutes}}" msgstr "{count, plural, one {{countString} minute} few {{countString} minutes} many {{countString} minutes} other {{countString} minutes}}"
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "{daysLeft, plural, one {# day} other {# days}}"
msgstr "{daysLeft, plural, one {# day} other {# days}}"
#: src/components/routes/system/charts/disk-charts.tsx #: src/components/routes/system/charts/disk-charts.tsx
msgid "{diskName} I/O" msgid "{diskName} I/O"
msgstr "{diskName} I/O" msgstr "{diskName} I/O"
#: src/components/systems-table/systems-table-columns.tsx
msgid "{numFailed, plural, one {# failed service} other {# failed services}}"
msgstr "{numFailed, plural, one {# failed service} other {# failed services}}"
#: src/components/routes/system/info-bar.tsx #: src/components/routes/system/info-bar.tsx
msgid "{threads, plural, one {# thread} other {# threads}}" msgid "{threads, plural, one {# thread} other {# threads}}"
msgstr "{threads, plural, one {# thread} other {# threads}}" msgstr "{threads, plural, one {# thread} other {# threads}}"
#: src/components/systems-table/systems-table-columns.tsx
msgid "{totalCount, plural, one {# service} other {# services}}"
msgstr "{totalCount, plural, one {# service} other {# services}}"
#: src/lib/utils.ts #: src/lib/utils.ts
msgid "1 hour" msgid "1 hour"
msgstr "1 hour" msgstr "1 hour"
@@ -118,10 +130,10 @@ msgstr "Active Alerts"
msgid "Active state" msgid "Active state"
msgstr "Active state" msgstr "Active state"
#: src/components/add-system.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/add-system.tsx msgid "Add"
#: src/components/navbar.tsx msgstr "Add"
#: src/components/navbar.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
@@ -131,6 +143,13 @@ msgstr "Active state"
msgid "Add {foo}" msgid "Add {foo}"
msgstr "Add {foo}" msgstr "Add {foo}"
#: src/components/add-system.tsx
#: src/components/add-system.tsx
#: src/components/navbar.tsx
#: src/components/navbar.tsx
msgid "Add System"
msgstr "Add System"
#: src/components/routes/settings/notifications.tsx #: src/components/routes/settings/notifications.tsx
msgid "Add URL" msgid "Add URL"
msgstr "Add URL" msgstr "Add URL"
@@ -255,6 +274,7 @@ msgstr "Average utilization of GPU engines"
msgid "Average, minimum, and maximum response time" msgid "Average, minimum, and maximum response time"
msgstr "Average, minimum, and maximum response time" msgstr "Average, minimum, and maximum response time"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Avg 1h" msgid "Avg 1h"
msgstr "Avg 1h" msgstr "Avg 1h"
@@ -378,6 +398,19 @@ msgstr "Caution - potential data loss"
msgid "Celsius (°C)" msgid "Celsius (°C)"
msgstr "Celsius (°C)" msgstr "Celsius (°C)"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Certificate"
msgstr "Certificate"
#: src/components/network-monitors-table/network-monitors-table.tsx
msgid "Certificate expired {expires}"
msgstr "Certificate expired {expires}"
#: src/components/network-monitors-table/network-monitors-table.tsx
msgid "Certificate expires {expires}"
msgstr "Certificate expires {expires}"
#: src/components/routes/settings/general.tsx #: src/components/routes/settings/general.tsx
msgid "Change display units for metrics." msgid "Change display units for metrics."
msgstr "Change display units for metrics." msgstr "Change display units for metrics."
@@ -771,12 +804,15 @@ msgstr "Duration"
msgid "Edit" msgid "Edit"
msgstr "Edit" msgstr "Edit"
#: src/components/add-system.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/routes/settings/quiet-hours.tsx #: src/components/routes/settings/quiet-hours.tsx
msgid "Edit {foo}" msgid "Edit {foo}"
msgstr "Edit {foo}" msgstr "Edit {foo}"
#: src/components/add-system.tsx
msgid "Edit System"
msgstr "Edit System"
#: 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
@@ -862,6 +898,10 @@ msgstr "Existing systems not defined in <0>config.yml</0> will be deleted. Pleas
msgid "Exited active" msgid "Exited active"
msgstr "Exited active" msgstr "Exited active"
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Expired"
msgstr "Expired"
#: src/components/routes/settings/tokens-fingerprints.tsx #: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Expires after one hour or on hub restart." msgid "Expires after one hour or on hub restart."
msgstr "Expires after one hour or on hub restart." msgstr "Expires after one hour or on hub restart."
@@ -882,10 +922,6 @@ msgstr "Export your current systems configuration."
msgid "Fahrenheit (°F)" msgid "Fahrenheit (°F)"
msgstr "Fahrenheit (°F)" msgstr "Fahrenheit (°F)"
#: src/components/systems-table/systems-table-columns.tsx
msgid "Failed"
msgstr "Failed"
#: src/components/routes/system/smart-table.tsx #: src/components/routes/system/smart-table.tsx
msgid "Failed Attributes:" msgid "Failed Attributes:"
msgstr "Failed Attributes:" msgstr "Failed Attributes:"
@@ -1085,6 +1121,7 @@ msgstr "Image update available"
msgid "Inactive" msgid "Inactive"
msgstr "Inactive" msgstr "Inactive"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/routes/settings/heartbeat.tsx #: src/components/routes/settings/heartbeat.tsx
msgid "Interval" msgid "Interval"
@@ -1177,6 +1214,7 @@ msgctxt "Packet loss"
msgid "Loss" msgid "Loss"
msgstr "Loss" msgstr "Loss"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Loss 1h" msgid "Loss 1h"
msgstr "Loss 1h" msgstr "Loss 1h"
@@ -1199,6 +1237,7 @@ msgstr "Manual setup instructions"
msgid "Max 1 min" msgid "Max 1 min"
msgstr "Max 1 min" msgstr "Max 1 min"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Max 1h" msgid "Max 1h"
msgstr "Max 1h" msgstr "Max 1h"
@@ -1229,6 +1268,7 @@ msgstr "Memory Usage"
msgid "Memory usage of containers" msgid "Memory usage of containers"
msgstr "Memory usage of containers" msgstr "Memory usage of containers"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Min 1h" msgid "Min 1h"
msgstr "Min 1h" msgstr "Min 1h"
@@ -1560,6 +1600,7 @@ msgstr "Process started"
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Protocol" msgid "Protocol"
msgstr "Protocol" msgstr "Protocol"
@@ -1648,6 +1689,7 @@ msgstr "Reset Password"
msgid "Resolved" msgid "Resolved"
msgstr "Resolved" msgstr "Resolved"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/routes/system/charts/monitors-charts.tsx #: src/components/routes/system/charts/monitors-charts.tsx
msgid "Response" msgid "Response"
@@ -1693,7 +1735,6 @@ msgstr "S.M.A.R.T. Details"
msgid "S.M.A.R.T. Self-Test" msgid "S.M.A.R.T. Self-Test"
msgstr "S.M.A.R.T. Self-Test" msgstr "S.M.A.R.T. Self-Test"
#: src/components/add-system.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
msgid "Save {foo}" msgid "Save {foo}"
msgstr "Save {foo}" msgstr "Save {foo}"
@@ -1707,6 +1748,10 @@ msgstr "Save address using enter key or comma. Leave blank to disable email noti
msgid "Save Settings" msgid "Save Settings"
msgstr "Save Settings" msgstr "Save Settings"
#: src/components/add-system.tsx
msgid "Save System"
msgstr "Save System"
#: src/components/routes/settings/tokens-fingerprints.tsx #: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Saved in the database and does not expire until you disable it." msgid "Saved in the database and does not expire until you disable it."
msgstr "Saved in the database and does not expire until you disable it." msgstr "Saved in the database and does not expire until you disable it."
@@ -1828,6 +1873,7 @@ msgstr "Sign in"
msgid "SMTP settings" msgid "SMTP settings"
msgstr "SMTP settings" msgstr "SMTP settings"
#: src/components/network-monitors-table/network-monitors-table.tsx
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "Sort By" msgid "Sort By"
msgstr "Sort By" msgstr "Sort By"
@@ -1870,12 +1916,11 @@ msgstr "Swap Usage"
msgid "Switch theme" msgid "Switch theme"
msgstr "Switch theme" msgstr "Switch theme"
#: 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/containers-table/containers-table-columns.tsx
#: src/components/navbar.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-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/quiet-hours.tsx #: src/components/routes/settings/quiet-hours.tsx
@@ -1920,9 +1965,15 @@ msgstr "Tabs"
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Target" msgid "Target"
msgstr "Target" msgstr "Target"
#: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx
msgid "target[,protocol[,port[,interval]]]"
msgstr "target[,protocol[,port[,interval]]]"
#: src/components/systemd-table/systemd-table.tsx #: src/components/systemd-table/systemd-table.tsx
msgid "Tasks" msgid "Tasks"
msgstr "Tasks" msgstr "Tasks"
@@ -2157,6 +2208,7 @@ msgstr "Update"
#: src/components/containers-table/containers-table-columns.tsx #: src/components/containers-table/containers-table-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/routes/system/smart-table.tsx #: src/components/routes/system/smart-table.tsx
#: src/components/routes/system/storage-pools-table.tsx #: src/components/routes/system/storage-pools-table.tsx
#: src/components/systemd-table/systemd-table-columns.tsx #: src/components/systemd-table/systemd-table-columns.tsx
@@ -2212,6 +2264,7 @@ msgstr "Utilization"
msgid "Value" msgid "Value"
msgstr "Value" msgstr "Value"
#: src/components/network-monitors-table/network-monitors-table.tsx
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "View" msgid "View"
msgstr "View" msgstr "View"
@@ -2226,6 +2279,7 @@ msgstr "View more"
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."
#: src/components/network-monitors-table/network-monitors-table.tsx
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "Visible Fields" msgid "Visible Fields"
msgstr "Visible Fields" msgstr "Visible Fields"
+68 -13
View File
@@ -8,7 +8,7 @@ msgstr ""
"Language: es\n" "Language: es\n"
"Project-Id-Version: beszel\n" "Project-Id-Version: beszel\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-09-18 19:21\n" "PO-Revision-Date: 2026-09-24 17:28\n"
"Last-Translator: \n" "Last-Translator: \n"
"Language-Team: Spanish\n" "Language-Team: Spanish\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -52,14 +52,26 @@ msgstr "{count, plural, one {{countString} hora} other {{countString} horas}}"
msgid "{count, plural, one {{countString} minute} few {{countString} minutes} many {{countString} minutes} other {{countString} minutes}}" msgid "{count, plural, one {{countString} minute} few {{countString} minutes} many {{countString} minutes} other {{countString} minutes}}"
msgstr "{count, plural, one {{countString} minuto} other {{countString} minutos}}" msgstr "{count, plural, one {{countString} minuto} other {{countString} minutos}}"
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "{daysLeft, plural, one {# day} other {# days}}"
msgstr ""
#: src/components/routes/system/charts/disk-charts.tsx #: src/components/routes/system/charts/disk-charts.tsx
msgid "{diskName} I/O" msgid "{diskName} I/O"
msgstr "E/S de {diskName}" msgstr "E/S de {diskName}"
#: src/components/systems-table/systems-table-columns.tsx
msgid "{numFailed, plural, one {# failed service} other {# failed services}}"
msgstr ""
#: src/components/routes/system/info-bar.tsx #: src/components/routes/system/info-bar.tsx
msgid "{threads, plural, one {# thread} other {# threads}}" msgid "{threads, plural, one {# thread} other {# threads}}"
msgstr "{threads, plural, one {# hilo} other {# hilos}}" msgstr "{threads, plural, one {# hilo} other {# hilos}}"
#: src/components/systems-table/systems-table-columns.tsx
msgid "{totalCount, plural, one {# service} other {# services}}"
msgstr ""
#: src/lib/utils.ts #: src/lib/utils.ts
msgid "1 hour" msgid "1 hour"
msgstr "1 hora" msgstr "1 hora"
@@ -123,10 +135,10 @@ msgstr "Alertas activas"
msgid "Active state" msgid "Active state"
msgstr "Estado activo" msgstr "Estado activo"
#: src/components/add-system.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/add-system.tsx msgid "Add"
#: src/components/navbar.tsx msgstr ""
#: src/components/navbar.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
@@ -136,6 +148,13 @@ msgstr "Estado activo"
msgid "Add {foo}" msgid "Add {foo}"
msgstr "Agregar {foo}" msgstr "Agregar {foo}"
#: src/components/add-system.tsx
#: src/components/add-system.tsx
#: src/components/navbar.tsx
#: src/components/navbar.tsx
msgid "Add System"
msgstr "Agregar Sistema"
#: src/components/routes/settings/notifications.tsx #: src/components/routes/settings/notifications.tsx
msgid "Add URL" msgid "Add URL"
msgstr "Agregar URL" msgstr "Agregar URL"
@@ -260,6 +279,7 @@ msgstr "Utilización promedio de motores GPU"
msgid "Average, minimum, and maximum response time" msgid "Average, minimum, and maximum response time"
msgstr "Tiempo de respuesta medio, mínimo y máximo" msgstr "Tiempo de respuesta medio, mínimo y máximo"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Avg 1h" msgid "Avg 1h"
msgstr "Prom. 1 h" msgstr "Prom. 1 h"
@@ -383,6 +403,19 @@ msgstr "Precaución - posible pérdida de datos"
msgid "Celsius (°C)" msgid "Celsius (°C)"
msgstr "Celsius (°C)" msgstr "Celsius (°C)"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Certificate"
msgstr ""
#: src/components/network-monitors-table/network-monitors-table.tsx
msgid "Certificate expired {expires}"
msgstr ""
#: src/components/network-monitors-table/network-monitors-table.tsx
msgid "Certificate expires {expires}"
msgstr ""
#: src/components/routes/settings/general.tsx #: src/components/routes/settings/general.tsx
msgid "Change display units for metrics." msgid "Change display units for metrics."
msgstr "Cambiar las unidades de visualización de las métricas." msgstr "Cambiar las unidades de visualización de las métricas."
@@ -776,12 +809,15 @@ msgstr "Duración"
msgid "Edit" msgid "Edit"
msgstr "Editar" msgstr "Editar"
#: src/components/add-system.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/routes/settings/quiet-hours.tsx #: src/components/routes/settings/quiet-hours.tsx
msgid "Edit {foo}" msgid "Edit {foo}"
msgstr "Editar {foo}" msgstr "Editar {foo}"
#: src/components/add-system.tsx
msgid "Edit System"
msgstr "Editar Sistema"
#: 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
@@ -867,6 +903,10 @@ msgstr "Los sistemas existentes no definidos en <0>config.yml</0> serán elimina
msgid "Exited active" msgid "Exited active"
msgstr "Salió activo" msgstr "Salió activo"
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Expired"
msgstr ""
#: src/components/routes/settings/tokens-fingerprints.tsx #: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Expires after one hour or on hub restart." msgid "Expires after one hour or on hub restart."
msgstr "Expira después de una hora o al reiniciar el hub." msgstr "Expira después de una hora o al reiniciar el hub."
@@ -887,10 +927,6 @@ msgstr "Exporta la configuración actual de sus sistemas."
msgid "Fahrenheit (°F)" msgid "Fahrenheit (°F)"
msgstr "Fahrenheit (°F)" msgstr "Fahrenheit (°F)"
#: src/components/systems-table/systems-table-columns.tsx
msgid "Failed"
msgstr "Fallido"
#: src/components/routes/system/smart-table.tsx #: src/components/routes/system/smart-table.tsx
msgid "Failed Attributes:" msgid "Failed Attributes:"
msgstr "Atributos fallidos:" msgstr "Atributos fallidos:"
@@ -1090,6 +1126,7 @@ msgstr "Actualización de imagen disponible"
msgid "Inactive" msgid "Inactive"
msgstr "Inactivo" msgstr "Inactivo"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/routes/settings/heartbeat.tsx #: src/components/routes/settings/heartbeat.tsx
msgid "Interval" msgid "Interval"
@@ -1182,6 +1219,7 @@ msgctxt "Packet loss"
msgid "Loss" msgid "Loss"
msgstr "Pérdida" msgstr "Pérdida"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Loss 1h" msgid "Loss 1h"
msgstr "Pérdida 1 h" msgstr "Pérdida 1 h"
@@ -1204,6 +1242,7 @@ msgstr "Instrucciones manuales de configuración"
msgid "Max 1 min" msgid "Max 1 min"
msgstr "Máx. 1 min" msgstr "Máx. 1 min"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Max 1h" msgid "Max 1h"
msgstr "Máx. 1 h" msgstr "Máx. 1 h"
@@ -1234,6 +1273,7 @@ msgstr "Uso de memoria"
msgid "Memory usage of containers" msgid "Memory usage of containers"
msgstr "Uso de memoria de los contenedores" msgstr "Uso de memoria de los contenedores"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Min 1h" msgid "Min 1h"
msgstr "Mín. 1 h" msgstr "Mín. 1 h"
@@ -1565,6 +1605,7 @@ msgstr "Proceso iniciado"
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Protocol" msgid "Protocol"
msgstr "Protocolo" msgstr "Protocolo"
@@ -1653,6 +1694,7 @@ msgstr "Restablecer contraseña"
msgid "Resolved" msgid "Resolved"
msgstr "Resuelto" msgstr "Resuelto"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/routes/system/charts/monitors-charts.tsx #: src/components/routes/system/charts/monitors-charts.tsx
msgid "Response" msgid "Response"
@@ -1698,7 +1740,6 @@ msgstr "Detalles S.M.A.R.T."
msgid "S.M.A.R.T. Self-Test" msgid "S.M.A.R.T. Self-Test"
msgstr "Autoprueba S.M.A.R.T." msgstr "Autoprueba S.M.A.R.T."
#: src/components/add-system.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
msgid "Save {foo}" msgid "Save {foo}"
msgstr "Guardar {foo}" msgstr "Guardar {foo}"
@@ -1712,6 +1753,10 @@ msgstr "Guarda la dirección usando la tecla enter o coma. Deja en blanco para d
msgid "Save Settings" msgid "Save Settings"
msgstr "Guardar configuración" msgstr "Guardar configuración"
#: src/components/add-system.tsx
msgid "Save System"
msgstr "Guardar Sistema"
#: src/components/routes/settings/tokens-fingerprints.tsx #: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Saved in the database and does not expire until you disable it." msgid "Saved in the database and does not expire until you disable it."
msgstr "Guardado en la base de datos y no expira hasta que lo desactives." msgstr "Guardado en la base de datos y no expira hasta que lo desactives."
@@ -1833,6 +1878,7 @@ msgstr "Iniciar sesión"
msgid "SMTP settings" msgid "SMTP settings"
msgstr "Configuración SMTP" msgstr "Configuración SMTP"
#: src/components/network-monitors-table/network-monitors-table.tsx
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "Sort By" msgid "Sort By"
msgstr "Ordenar por" msgstr "Ordenar por"
@@ -1875,12 +1921,11 @@ msgstr "Uso de swap"
msgid "Switch theme" msgid "Switch theme"
msgstr "Cambiar tema" msgstr "Cambiar tema"
#: 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/containers-table/containers-table-columns.tsx
#: src/components/navbar.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-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/quiet-hours.tsx #: src/components/routes/settings/quiet-hours.tsx
@@ -1925,9 +1970,15 @@ msgstr "Pestañas"
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Target" msgid "Target"
msgstr "Objetivo" msgstr "Objetivo"
#: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx
msgid "target[,protocol[,port[,interval]]]"
msgstr ""
#: src/components/systemd-table/systemd-table.tsx #: src/components/systemd-table/systemd-table.tsx
msgid "Tasks" msgid "Tasks"
msgstr "Tareas" msgstr "Tareas"
@@ -2162,6 +2213,7 @@ msgstr "Actualizar"
#: src/components/containers-table/containers-table-columns.tsx #: src/components/containers-table/containers-table-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/routes/system/smart-table.tsx #: src/components/routes/system/smart-table.tsx
#: src/components/routes/system/storage-pools-table.tsx #: src/components/routes/system/storage-pools-table.tsx
#: src/components/systemd-table/systemd-table-columns.tsx #: src/components/systemd-table/systemd-table-columns.tsx
@@ -2217,6 +2269,7 @@ msgstr "Utilización"
msgid "Value" msgid "Value"
msgstr "Valor" msgstr "Valor"
#: src/components/network-monitors-table/network-monitors-table.tsx
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "View" msgid "View"
msgstr "Vista" msgstr "Vista"
@@ -2231,6 +2284,7 @@ msgstr "Ver más"
msgid "View your 200 most recent alerts." msgid "View your 200 most recent alerts."
msgstr "Ver tus 200 alertas más recientes." msgstr "Ver tus 200 alertas más recientes."
#: src/components/network-monitors-table/network-monitors-table.tsx
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "Visible Fields" msgid "Visible Fields"
msgstr "Columnas visibles" msgstr "Columnas visibles"
@@ -2305,3 +2359,4 @@ 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 "Tu configuración de usuario ha sido actualizada." msgstr "Tu configuración de usuario ha sido actualizada."
+68 -13
View File
@@ -8,7 +8,7 @@ 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: 2026-09-18 19:22\n" "PO-Revision-Date: 2026-09-24 17:29\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"
@@ -52,14 +52,26 @@ msgstr "{count, plural, one {{countString} ساعت} other {{countString} ساع
msgid "{count, plural, one {{countString} minute} few {{countString} minutes} many {{countString} minutes} other {{countString} minutes}}" 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} دقیقه}}" msgstr "{count, plural, one {{countString} دقیقه} few {{countString} دقیقه} many {{countString} دقیقه} other {{countString} دقیقه}}"
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "{daysLeft, plural, one {# day} other {# days}}"
msgstr ""
#: src/components/routes/system/charts/disk-charts.tsx #: src/components/routes/system/charts/disk-charts.tsx
msgid "{diskName} I/O" msgid "{diskName} I/O"
msgstr "ورودی/خروجی {diskName}" msgstr "ورودی/خروجی {diskName}"
#: src/components/systems-table/systems-table-columns.tsx
msgid "{numFailed, plural, one {# failed service} other {# failed services}}"
msgstr ""
#: src/components/routes/system/info-bar.tsx #: src/components/routes/system/info-bar.tsx
msgid "{threads, plural, one {# thread} other {# threads}}" msgid "{threads, plural, one {# thread} other {# threads}}"
msgstr "{threads, plural, one {# رشته} other {# رشته}}" msgstr "{threads, plural, one {# رشته} other {# رشته}}"
#: src/components/systems-table/systems-table-columns.tsx
msgid "{totalCount, plural, one {# service} other {# services}}"
msgstr ""
#: src/lib/utils.ts #: src/lib/utils.ts
msgid "1 hour" msgid "1 hour"
msgstr "۱ ساعت" msgstr "۱ ساعت"
@@ -123,10 +135,10 @@ msgstr " هشدارهای فعال"
msgid "Active state" msgid "Active state"
msgstr "وضعیت فعال" msgstr "وضعیت فعال"
#: src/components/add-system.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/add-system.tsx msgid "Add"
#: src/components/navbar.tsx msgstr ""
#: src/components/navbar.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
@@ -136,6 +148,13 @@ msgstr "وضعیت فعال"
msgid "Add {foo}" msgid "Add {foo}"
msgstr "افزودن {foo}" msgstr "افزودن {foo}"
#: src/components/add-system.tsx
#: src/components/add-system.tsx
#: src/components/navbar.tsx
#: src/components/navbar.tsx
msgid "Add System"
msgstr "افزودن سیستم"
#: src/components/routes/settings/notifications.tsx #: src/components/routes/settings/notifications.tsx
msgid "Add URL" msgid "Add URL"
msgstr "افزودن آدرس اینترنتی" msgstr "افزودن آدرس اینترنتی"
@@ -260,6 +279,7 @@ msgstr "میانگین استفاده از موتورهای GPU"
msgid "Average, minimum, and maximum response time" msgid "Average, minimum, and maximum response time"
msgstr "میانگین، حداقل و حداکثر زمان پاسخ" msgstr "میانگین، حداقل و حداکثر زمان پاسخ"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Avg 1h" msgid "Avg 1h"
msgstr "میانگین ۱ ساعت" msgstr "میانگین ۱ ساعت"
@@ -383,6 +403,19 @@ msgstr "احتیاط - احتمال از دست رفتن داده‌ها"
msgid "Celsius (°C)" msgid "Celsius (°C)"
msgstr "سلسیوس (°C)" msgstr "سلسیوس (°C)"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Certificate"
msgstr ""
#: src/components/network-monitors-table/network-monitors-table.tsx
msgid "Certificate expired {expires}"
msgstr ""
#: src/components/network-monitors-table/network-monitors-table.tsx
msgid "Certificate expires {expires}"
msgstr ""
#: src/components/routes/settings/general.tsx #: src/components/routes/settings/general.tsx
msgid "Change display units for metrics." msgid "Change display units for metrics."
msgstr "تغییر واحدهای نمایش برای معیارها." msgstr "تغییر واحدهای نمایش برای معیارها."
@@ -776,12 +809,15 @@ msgstr "مدت زمان"
msgid "Edit" msgid "Edit"
msgstr "ویرایش" msgstr "ویرایش"
#: src/components/add-system.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/routes/settings/quiet-hours.tsx #: src/components/routes/settings/quiet-hours.tsx
msgid "Edit {foo}" msgid "Edit {foo}"
msgstr "ویرایش {foo}" msgstr "ویرایش {foo}"
#: src/components/add-system.tsx
msgid "Edit System"
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
@@ -867,6 +903,10 @@ msgstr "سیستم‌های موجود که در <0>config.yml</0> تعریف ن
msgid "Exited active" msgid "Exited active"
msgstr "خروج فعال" msgstr "خروج فعال"
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Expired"
msgstr ""
#: src/components/routes/settings/tokens-fingerprints.tsx #: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Expires after one hour or on hub restart." msgid "Expires after one hour or on hub restart."
msgstr "پس از یک ساعت یا راه‌اندازی مجدد هاب منقضی می‌شود." msgstr "پس از یک ساعت یا راه‌اندازی مجدد هاب منقضی می‌شود."
@@ -887,10 +927,6 @@ 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 #: src/components/routes/system/smart-table.tsx
msgid "Failed Attributes:" msgid "Failed Attributes:"
msgstr "ویژگی‌های ناموفق:" msgstr "ویژگی‌های ناموفق:"
@@ -1090,6 +1126,7 @@ msgstr "به‌روزرسانی image موجود است"
msgid "Inactive" msgid "Inactive"
msgstr "غیرفعال" msgstr "غیرفعال"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/routes/settings/heartbeat.tsx #: src/components/routes/settings/heartbeat.tsx
msgid "Interval" msgid "Interval"
@@ -1182,6 +1219,7 @@ msgctxt "Packet loss"
msgid "Loss" msgid "Loss"
msgstr "افت" msgstr "افت"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Loss 1h" msgid "Loss 1h"
msgstr "افت ۱ ساعت" msgstr "افت ۱ ساعت"
@@ -1204,6 +1242,7 @@ msgstr "دستورالعمل‌های راه‌اندازی دستی"
msgid "Max 1 min" msgid "Max 1 min"
msgstr "حداکثر ۱ دقیقه" msgstr "حداکثر ۱ دقیقه"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Max 1h" msgid "Max 1h"
msgstr "حداکثر ۱ ساعت" msgstr "حداکثر ۱ ساعت"
@@ -1234,6 +1273,7 @@ msgstr "میزان استفاده از حافظه"
msgid "Memory usage of containers" msgid "Memory usage of containers"
msgstr "میزان استفاده حافظه کانتینرها" msgstr "میزان استفاده حافظه کانتینرها"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Min 1h" msgid "Min 1h"
msgstr "حداقل ۱ ساعت" msgstr "حداقل ۱ ساعت"
@@ -1565,6 +1605,7 @@ msgstr "فرآیند شروع شد"
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Protocol" msgid "Protocol"
msgstr "پروتکل" msgstr "پروتکل"
@@ -1653,6 +1694,7 @@ msgstr "بازنشانی رمز عبور"
msgid "Resolved" msgid "Resolved"
msgstr "حل شده" msgstr "حل شده"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/routes/system/charts/monitors-charts.tsx #: src/components/routes/system/charts/monitors-charts.tsx
msgid "Response" msgid "Response"
@@ -1698,7 +1740,6 @@ msgstr "جزئیات S.M.A.R.T"
msgid "S.M.A.R.T. Self-Test" msgid "S.M.A.R.T. Self-Test"
msgstr "تست خود S.M.A.R.T" msgstr "تست خود S.M.A.R.T"
#: src/components/add-system.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
msgid "Save {foo}" msgid "Save {foo}"
msgstr "ذخیره {foo}" msgstr "ذخیره {foo}"
@@ -1712,6 +1753,10 @@ msgstr "آدرس را با استفاده از کلید Enter یا کاما ذخ
msgid "Save Settings" msgid "Save Settings"
msgstr "ذخیره تنظیمات" msgstr "ذخیره تنظیمات"
#: src/components/add-system.tsx
msgid "Save System"
msgstr "ذخیره سیستم"
#: src/components/routes/settings/tokens-fingerprints.tsx #: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Saved in the database and does not expire until you disable it." msgid "Saved in the database and does not expire until you disable it."
msgstr "در پایگاه داده ذخیره شده و تا زمانی که آن را غیرفعال نکنید، منقضی نمی‌شود." msgstr "در پایگاه داده ذخیره شده و تا زمانی که آن را غیرفعال نکنید، منقضی نمی‌شود."
@@ -1833,6 +1878,7 @@ msgstr "ورود"
msgid "SMTP settings" msgid "SMTP settings"
msgstr "تنظیمات SMTP" msgstr "تنظیمات SMTP"
#: src/components/network-monitors-table/network-monitors-table.tsx
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "Sort By" msgid "Sort By"
msgstr "مرتب‌سازی بر اساس" msgstr "مرتب‌سازی بر اساس"
@@ -1875,12 +1921,11 @@ msgstr "میزان استفاده از Swap"
msgid "Switch theme" msgid "Switch theme"
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/containers-table/containers-table-columns.tsx
#: src/components/navbar.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-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/quiet-hours.tsx #: src/components/routes/settings/quiet-hours.tsx
@@ -1925,9 +1970,15 @@ msgstr "تب‌ها"
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Target" msgid "Target"
msgstr "هدف" msgstr "هدف"
#: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx
msgid "target[,protocol[,port[,interval]]]"
msgstr ""
#: src/components/systemd-table/systemd-table.tsx #: src/components/systemd-table/systemd-table.tsx
msgid "Tasks" msgid "Tasks"
msgstr "وظایف" msgstr "وظایف"
@@ -2162,6 +2213,7 @@ msgstr "به‌روزرسانی"
#: src/components/containers-table/containers-table-columns.tsx #: src/components/containers-table/containers-table-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/routes/system/smart-table.tsx #: src/components/routes/system/smart-table.tsx
#: src/components/routes/system/storage-pools-table.tsx #: src/components/routes/system/storage-pools-table.tsx
#: src/components/systemd-table/systemd-table-columns.tsx #: src/components/systemd-table/systemd-table-columns.tsx
@@ -2217,6 +2269,7 @@ msgstr "بهره‌وری"
msgid "Value" msgid "Value"
msgstr "مقدار" msgstr "مقدار"
#: src/components/network-monitors-table/network-monitors-table.tsx
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "View" msgid "View"
msgstr "مشاهده" msgstr "مشاهده"
@@ -2231,6 +2284,7 @@ msgstr "مشاهده بیشتر"
msgid "View your 200 most recent alerts." msgid "View your 200 most recent alerts."
msgstr "۲۰۰ هشدار اخیر خود را مشاهده کنید." msgstr "۲۰۰ هشدار اخیر خود را مشاهده کنید."
#: src/components/network-monitors-table/network-monitors-table.tsx
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "Visible Fields" msgid "Visible Fields"
msgstr "فیلدهای قابل مشاهده" msgstr "فیلدهای قابل مشاهده"
@@ -2305,3 +2359,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 "تنظیمات کاربری شما به‌روزرسانی شد." msgstr "تنظیمات کاربری شما به‌روزرسانی شد."
+68 -13
View File
@@ -8,7 +8,7 @@ msgstr ""
"Language: fr\n" "Language: fr\n"
"Project-Id-Version: beszel\n" "Project-Id-Version: beszel\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-09-18 19:21\n" "PO-Revision-Date: 2026-09-24 17:28\n"
"Last-Translator: \n" "Last-Translator: \n"
"Language-Team: French\n" "Language-Team: French\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n"
@@ -52,14 +52,26 @@ msgstr "{count, plural, one {{countString} heure} other {{countString} heures}}"
msgid "{count, plural, one {{countString} minute} few {{countString} minutes} many {{countString} minutes} other {{countString} minutes}}" msgid "{count, plural, one {{countString} minute} few {{countString} minutes} many {{countString} minutes} other {{countString} minutes}}"
msgstr "{count, plural, one {{countString} minute} other {{countString} minutes}}" msgstr "{count, plural, one {{countString} minute} other {{countString} minutes}}"
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "{daysLeft, plural, one {# day} other {# days}}"
msgstr ""
#: src/components/routes/system/charts/disk-charts.tsx #: src/components/routes/system/charts/disk-charts.tsx
msgid "{diskName} I/O" msgid "{diskName} I/O"
msgstr "E/S {diskName}" msgstr "E/S {diskName}"
#: src/components/systems-table/systems-table-columns.tsx
msgid "{numFailed, plural, one {# failed service} other {# failed services}}"
msgstr ""
#: src/components/routes/system/info-bar.tsx #: src/components/routes/system/info-bar.tsx
msgid "{threads, plural, one {# thread} other {# threads}}" msgid "{threads, plural, one {# thread} other {# threads}}"
msgstr "{threads, plural, one {# thread} other {# threads}}" msgstr "{threads, plural, one {# thread} other {# threads}}"
#: src/components/systems-table/systems-table-columns.tsx
msgid "{totalCount, plural, one {# service} other {# services}}"
msgstr ""
#: src/lib/utils.ts #: src/lib/utils.ts
msgid "1 hour" msgid "1 hour"
msgstr "1 heure" msgstr "1 heure"
@@ -123,10 +135,10 @@ msgstr "Alertes actives"
msgid "Active state" msgid "Active state"
msgstr "État actif" msgstr "État actif"
#: src/components/add-system.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/add-system.tsx msgid "Add"
#: src/components/navbar.tsx msgstr ""
#: src/components/navbar.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
@@ -136,6 +148,13 @@ msgstr "État actif"
msgid "Add {foo}" msgid "Add {foo}"
msgstr "Ajouter {foo}" msgstr "Ajouter {foo}"
#: src/components/add-system.tsx
#: src/components/add-system.tsx
#: src/components/navbar.tsx
#: src/components/navbar.tsx
msgid "Add System"
msgstr "Ajouter Système"
#: src/components/routes/settings/notifications.tsx #: src/components/routes/settings/notifications.tsx
msgid "Add URL" msgid "Add URL"
msgstr "Ajouter l’URL" msgstr "Ajouter l’URL"
@@ -260,6 +279,7 @@ msgstr "Utilisation moyenne des moteurs GPU"
msgid "Average, minimum, and maximum response time" msgid "Average, minimum, and maximum response time"
msgstr "Temps de réponse moyen, minimal et maximal" msgstr "Temps de réponse moyen, minimal et maximal"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Avg 1h" msgid "Avg 1h"
msgstr "Moy. 1 h" msgstr "Moy. 1 h"
@@ -383,6 +403,19 @@ msgstr "Attention - perte de données potentielle"
msgid "Celsius (°C)" msgid "Celsius (°C)"
msgstr "Celsius (°C)" msgstr "Celsius (°C)"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Certificate"
msgstr ""
#: src/components/network-monitors-table/network-monitors-table.tsx
msgid "Certificate expired {expires}"
msgstr ""
#: src/components/network-monitors-table/network-monitors-table.tsx
msgid "Certificate expires {expires}"
msgstr ""
#: src/components/routes/settings/general.tsx #: src/components/routes/settings/general.tsx
msgid "Change display units for metrics." msgid "Change display units for metrics."
msgstr "Ajuster les unités d'affichage pour les métriques." msgstr "Ajuster les unités d'affichage pour les métriques."
@@ -776,12 +809,15 @@ msgstr "Durée"
msgid "Edit" msgid "Edit"
msgstr "Éditer" msgstr "Éditer"
#: src/components/add-system.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/routes/settings/quiet-hours.tsx #: src/components/routes/settings/quiet-hours.tsx
msgid "Edit {foo}" msgid "Edit {foo}"
msgstr "Modifier {foo}" msgstr "Modifier {foo}"
#: src/components/add-system.tsx
msgid "Edit System"
msgstr "Modifier Système"
#: 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
@@ -867,6 +903,10 @@ msgstr "Les systèmes existants non définis dans <0>config.yml</0> seront suppr
msgid "Exited active" msgid "Exited active"
msgstr "Sorti actif" msgstr "Sorti actif"
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Expired"
msgstr ""
#: src/components/routes/settings/tokens-fingerprints.tsx #: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Expires after one hour or on hub restart." msgid "Expires after one hour or on hub restart."
msgstr "Expire après une heure ou au redémarrage du hub." msgstr "Expire après une heure ou au redémarrage du hub."
@@ -887,10 +927,6 @@ msgstr "Exportez la configuration actuelle de vos systèmes."
msgid "Fahrenheit (°F)" msgid "Fahrenheit (°F)"
msgstr "Fahrenheit (°F)" msgstr "Fahrenheit (°F)"
#: src/components/systems-table/systems-table-columns.tsx
msgid "Failed"
msgstr "Échoué"
#: src/components/routes/system/smart-table.tsx #: src/components/routes/system/smart-table.tsx
msgid "Failed Attributes:" msgid "Failed Attributes:"
msgstr "Attributs défaillants :" msgstr "Attributs défaillants :"
@@ -1090,6 +1126,7 @@ msgstr "Mise à jour de l’image disponible"
msgid "Inactive" msgid "Inactive"
msgstr "Inactif" msgstr "Inactif"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/routes/settings/heartbeat.tsx #: src/components/routes/settings/heartbeat.tsx
msgid "Interval" msgid "Interval"
@@ -1182,6 +1219,7 @@ msgctxt "Packet loss"
msgid "Loss" msgid "Loss"
msgstr "Perte" msgstr "Perte"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Loss 1h" msgid "Loss 1h"
msgstr "Perte 1 h" msgstr "Perte 1 h"
@@ -1204,6 +1242,7 @@ msgstr "Guide pour une installation manuelle"
msgid "Max 1 min" msgid "Max 1 min"
msgstr "Max 1 min" msgstr "Max 1 min"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Max 1h" msgid "Max 1h"
msgstr "Max. 1 h" msgstr "Max. 1 h"
@@ -1234,6 +1273,7 @@ msgstr "Utilisation de la mémoire"
msgid "Memory usage of containers" msgid "Memory usage of containers"
msgstr "Utilisation de la mémoire des conteneurs" msgstr "Utilisation de la mémoire des conteneurs"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Min 1h" msgid "Min 1h"
msgstr "Min. 1 h" msgstr "Min. 1 h"
@@ -1565,6 +1605,7 @@ msgstr "Processus démarré"
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Protocol" msgid "Protocol"
msgstr "Protocole" msgstr "Protocole"
@@ -1653,6 +1694,7 @@ msgstr "Réinitialiser le mot de passe"
msgid "Resolved" msgid "Resolved"
msgstr "Résolu" msgstr "Résolu"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/routes/system/charts/monitors-charts.tsx #: src/components/routes/system/charts/monitors-charts.tsx
msgid "Response" msgid "Response"
@@ -1698,7 +1740,6 @@ msgstr "Détails S.M.A.R.T."
msgid "S.M.A.R.T. Self-Test" msgid "S.M.A.R.T. Self-Test"
msgstr "Auto-test S.M.A.R.T." msgstr "Auto-test S.M.A.R.T."
#: src/components/add-system.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
msgid "Save {foo}" msgid "Save {foo}"
msgstr "Enregistrer {foo}" msgstr "Enregistrer {foo}"
@@ -1712,6 +1753,10 @@ msgstr "Enregistrez l'adresse en utilisant la touche Entrée ou la virgule. Lais
msgid "Save Settings" msgid "Save Settings"
msgstr "Enregistrer les paramètres" msgstr "Enregistrer les paramètres"
#: src/components/add-system.tsx
msgid "Save System"
msgstr "Enregistrer Système"
#: src/components/routes/settings/tokens-fingerprints.tsx #: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Saved in the database and does not expire until you disable it." msgid "Saved in the database and does not expire until you disable it."
msgstr "Enregistré dans la base de données et n'expire pas tant que vous ne le désactivez pas." msgstr "Enregistré dans la base de données et n'expire pas tant que vous ne le désactivez pas."
@@ -1833,6 +1878,7 @@ msgstr "Se connecter"
msgid "SMTP settings" msgid "SMTP settings"
msgstr "Paramètres SMTP" msgstr "Paramètres SMTP"
#: src/components/network-monitors-table/network-monitors-table.tsx
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "Sort By" msgid "Sort By"
msgstr "Trier par" msgstr "Trier par"
@@ -1875,12 +1921,11 @@ msgstr "Utilisation du swap"
msgid "Switch theme" msgid "Switch theme"
msgstr "Changer de thème" msgstr "Changer de thème"
#: 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/containers-table/containers-table-columns.tsx
#: src/components/navbar.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-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/quiet-hours.tsx #: src/components/routes/settings/quiet-hours.tsx
@@ -1925,9 +1970,15 @@ msgstr "Onglets"
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Target" msgid "Target"
msgstr "Cible" msgstr "Cible"
#: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx
msgid "target[,protocol[,port[,interval]]]"
msgstr ""
#: src/components/systemd-table/systemd-table.tsx #: src/components/systemd-table/systemd-table.tsx
msgid "Tasks" msgid "Tasks"
msgstr "Tâches" msgstr "Tâches"
@@ -2162,6 +2213,7 @@ msgstr "Mettre à jour"
#: src/components/containers-table/containers-table-columns.tsx #: src/components/containers-table/containers-table-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/routes/system/smart-table.tsx #: src/components/routes/system/smart-table.tsx
#: src/components/routes/system/storage-pools-table.tsx #: src/components/routes/system/storage-pools-table.tsx
#: src/components/systemd-table/systemd-table-columns.tsx #: src/components/systemd-table/systemd-table-columns.tsx
@@ -2217,6 +2269,7 @@ msgstr "Utilisation"
msgid "Value" msgid "Value"
msgstr "Valeur" msgstr "Valeur"
#: src/components/network-monitors-table/network-monitors-table.tsx
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "View" msgid "View"
msgstr "Vue" msgstr "Vue"
@@ -2231,6 +2284,7 @@ msgstr "Voir plus"
msgid "View your 200 most recent alerts." msgid "View your 200 most recent alerts."
msgstr "Voir vos 200 dernières alertes." msgstr "Voir vos 200 dernières alertes."
#: src/components/network-monitors-table/network-monitors-table.tsx
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "Visible Fields" msgid "Visible Fields"
msgstr "Colonnes visibles" msgstr "Colonnes visibles"
@@ -2305,3 +2359,4 @@ msgstr "Oui"
#: 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 "Vos paramètres utilisateur ont été mis à jour." msgstr "Vos paramètres utilisateur ont été mis à jour."
+68 -13
View File
@@ -8,7 +8,7 @@ msgstr ""
"Language: he\n" "Language: he\n"
"Project-Id-Version: beszel\n" "Project-Id-Version: beszel\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-09-18 19:21\n" "PO-Revision-Date: 2026-09-24 17:29\n"
"Last-Translator: \n" "Last-Translator: \n"
"Language-Team: Hebrew\n" "Language-Team: Hebrew\n"
"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n==2 ? 1 : 2);\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n==2 ? 1 : 2);\n"
@@ -52,14 +52,26 @@ msgstr "{count, plural, one {{countString} שעה} two {{countString} שעות}
msgid "{count, plural, one {{countString} minute} few {{countString} minutes} many {{countString} minutes} other {{countString} minutes}}" msgid "{count, plural, one {{countString} minute} few {{countString} minutes} many {{countString} minutes} other {{countString} minutes}}"
msgstr "{count, plural, one {{countString} דקה} two {{countString} דקות} other {{countString} דקות}}" msgstr "{count, plural, one {{countString} דקה} two {{countString} דקות} other {{countString} דקות}}"
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "{daysLeft, plural, one {# day} other {# days}}"
msgstr ""
#: src/components/routes/system/charts/disk-charts.tsx #: src/components/routes/system/charts/disk-charts.tsx
msgid "{diskName} I/O" msgid "{diskName} I/O"
msgstr "קלט/פלט של {diskName}" msgstr "קלט/פלט של {diskName}"
#: src/components/systems-table/systems-table-columns.tsx
msgid "{numFailed, plural, one {# failed service} other {# failed services}}"
msgstr ""
#: src/components/routes/system/info-bar.tsx #: src/components/routes/system/info-bar.tsx
msgid "{threads, plural, one {# thread} other {# threads}}" msgid "{threads, plural, one {# thread} other {# threads}}"
msgstr "{threads, plural, one {# תהליכון} other {# תהליכונים}}" msgstr "{threads, plural, one {# תהליכון} other {# תהליכונים}}"
#: src/components/systems-table/systems-table-columns.tsx
msgid "{totalCount, plural, one {# service} other {# services}}"
msgstr ""
#: src/lib/utils.ts #: src/lib/utils.ts
msgid "1 hour" msgid "1 hour"
msgstr "שעה" msgstr "שעה"
@@ -123,10 +135,10 @@ msgstr "התראות פעילות"
msgid "Active state" msgid "Active state"
msgstr "מצב פעיל" msgstr "מצב פעיל"
#: src/components/add-system.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/add-system.tsx msgid "Add"
#: src/components/navbar.tsx msgstr ""
#: src/components/navbar.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
@@ -136,6 +148,13 @@ msgstr "מצב פעיל"
msgid "Add {foo}" msgid "Add {foo}"
msgstr "הוסף {foo}" msgstr "הוסף {foo}"
#: src/components/add-system.tsx
#: src/components/add-system.tsx
#: src/components/navbar.tsx
#: src/components/navbar.tsx
msgid "Add System"
msgstr "הוסף מערכת"
#: src/components/routes/settings/notifications.tsx #: src/components/routes/settings/notifications.tsx
msgid "Add URL" msgid "Add URL"
msgstr "הוסף URL" msgstr "הוסף URL"
@@ -260,6 +279,7 @@ msgstr "ניצול ממוצע של מנועי GPU"
msgid "Average, minimum, and maximum response time" msgid "Average, minimum, and maximum response time"
msgstr "זמן תגובה ממוצע, מינימלי ומקסימלי" msgstr "זמן תגובה ממוצע, מינימלי ומקסימלי"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Avg 1h" msgid "Avg 1h"
msgstr "ממוצע שעה אחת" msgstr "ממוצע שעה אחת"
@@ -383,6 +403,19 @@ msgstr "זהירות - אפשרות לאובדן נתונים"
msgid "Celsius (°C)" msgid "Celsius (°C)"
msgstr "צלזיוס (°C)" msgstr "צלזיוס (°C)"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Certificate"
msgstr ""
#: src/components/network-monitors-table/network-monitors-table.tsx
msgid "Certificate expired {expires}"
msgstr ""
#: src/components/network-monitors-table/network-monitors-table.tsx
msgid "Certificate expires {expires}"
msgstr ""
#: src/components/routes/settings/general.tsx #: src/components/routes/settings/general.tsx
msgid "Change display units for metrics." msgid "Change display units for metrics."
msgstr "שנה יחידות תצוגה עבור מדדים." msgstr "שנה יחידות תצוגה עבור מדדים."
@@ -776,12 +809,15 @@ msgstr "משך זמן"
msgid "Edit" msgid "Edit"
msgstr "ערוך" msgstr "ערוך"
#: src/components/add-system.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/routes/settings/quiet-hours.tsx #: src/components/routes/settings/quiet-hours.tsx
msgid "Edit {foo}" msgid "Edit {foo}"
msgstr "ערוך {foo}" msgstr "ערוך {foo}"
#: src/components/add-system.tsx
msgid "Edit System"
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
@@ -867,6 +903,10 @@ msgstr "מערכות קיימות שלא מוגדרות ב-<0>config.yml</0> י
msgid "Exited active" msgid "Exited active"
msgstr "יצא פעיל" msgstr "יצא פעיל"
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Expired"
msgstr ""
#: src/components/routes/settings/tokens-fingerprints.tsx #: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Expires after one hour or on hub restart." msgid "Expires after one hour or on hub restart."
msgstr "התוקף פג לאחר שעה או לאחר הפעלת ה־hub מחדש." msgstr "התוקף פג לאחר שעה או לאחר הפעלת ה־hub מחדש."
@@ -887,10 +927,6 @@ 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 #: src/components/routes/system/smart-table.tsx
msgid "Failed Attributes:" msgid "Failed Attributes:"
msgstr "מאפיינים שנכשלו:" msgstr "מאפיינים שנכשלו:"
@@ -1090,6 +1126,7 @@ msgstr "עדכון תמונה זמין"
msgid "Inactive" msgid "Inactive"
msgstr "לא פעיל" msgstr "לא פעיל"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/routes/settings/heartbeat.tsx #: src/components/routes/settings/heartbeat.tsx
msgid "Interval" msgid "Interval"
@@ -1182,6 +1219,7 @@ msgctxt "Packet loss"
msgid "Loss" msgid "Loss"
msgstr "אובדן" msgstr "אובדן"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Loss 1h" msgid "Loss 1h"
msgstr "אובדן שעה אחת" msgstr "אובדן שעה אחת"
@@ -1204,6 +1242,7 @@ msgstr "הוראות התקנה ידניות"
msgid "Max 1 min" msgid "Max 1 min"
msgstr "מקס 1 דק'" msgstr "מקס 1 דק'"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Max 1h" msgid "Max 1h"
msgstr "מקסימום שעה אחת" msgstr "מקסימום שעה אחת"
@@ -1234,6 +1273,7 @@ msgstr "שימוש בזיכרון"
msgid "Memory usage of containers" msgid "Memory usage of containers"
msgstr "שימוש בזיכרון של קונטיינרים" msgstr "שימוש בזיכרון של קונטיינרים"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Min 1h" msgid "Min 1h"
msgstr "מינימום שעה אחת" msgstr "מינימום שעה אחת"
@@ -1565,6 +1605,7 @@ msgstr "תהליך התחיל"
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Protocol" msgid "Protocol"
msgstr "פרוטוקול" msgstr "פרוטוקול"
@@ -1653,6 +1694,7 @@ msgstr "איפוס סיסמה"
msgid "Resolved" msgid "Resolved"
msgstr "נפתר" msgstr "נפתר"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/routes/system/charts/monitors-charts.tsx #: src/components/routes/system/charts/monitors-charts.tsx
msgid "Response" msgid "Response"
@@ -1698,7 +1740,6 @@ msgstr "פרטי S.M.A.R.T."
msgid "S.M.A.R.T. Self-Test" msgid "S.M.A.R.T. Self-Test"
msgstr "בדיקה עצמית S.M.A.R.T." msgstr "בדיקה עצמית S.M.A.R.T."
#: src/components/add-system.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
msgid "Save {foo}" msgid "Save {foo}"
msgstr "שמור {foo}" msgstr "שמור {foo}"
@@ -1712,6 +1753,10 @@ msgstr "שמור כתובת באמצעות מקש enter או פסיק. השאר
msgid "Save Settings" msgid "Save Settings"
msgstr "שמור הגדרות" msgstr "שמור הגדרות"
#: src/components/add-system.tsx
msgid "Save System"
msgstr "שמור מערכת"
#: src/components/routes/settings/tokens-fingerprints.tsx #: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Saved in the database and does not expire until you disable it." msgid "Saved in the database and does not expire until you disable it."
msgstr "נשמר במסד הנתונים ולא פג תוקף עד שתבטל אותו." msgstr "נשמר במסד הנתונים ולא פג תוקף עד שתבטל אותו."
@@ -1833,6 +1878,7 @@ msgstr "התחבר"
msgid "SMTP settings" msgid "SMTP settings"
msgstr "הגדרות SMTP" msgstr "הגדרות SMTP"
#: src/components/network-monitors-table/network-monitors-table.tsx
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "Sort By" msgid "Sort By"
msgstr "מיין לפי" msgstr "מיין לפי"
@@ -1875,12 +1921,11 @@ msgstr "שימוש ב-Swap"
msgid "Switch theme" msgid "Switch theme"
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/containers-table/containers-table-columns.tsx
#: src/components/navbar.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-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/quiet-hours.tsx #: src/components/routes/settings/quiet-hours.tsx
@@ -1925,9 +1970,15 @@ msgstr "לשוניות"
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Target" msgid "Target"
msgstr "יעד" msgstr "יעד"
#: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx
msgid "target[,protocol[,port[,interval]]]"
msgstr ""
#: src/components/systemd-table/systemd-table.tsx #: src/components/systemd-table/systemd-table.tsx
msgid "Tasks" msgid "Tasks"
msgstr "משימות" msgstr "משימות"
@@ -2162,6 +2213,7 @@ msgstr "עדכן"
#: src/components/containers-table/containers-table-columns.tsx #: src/components/containers-table/containers-table-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/routes/system/smart-table.tsx #: src/components/routes/system/smart-table.tsx
#: src/components/routes/system/storage-pools-table.tsx #: src/components/routes/system/storage-pools-table.tsx
#: src/components/systemd-table/systemd-table-columns.tsx #: src/components/systemd-table/systemd-table-columns.tsx
@@ -2217,6 +2269,7 @@ msgstr "ניצולת"
msgid "Value" msgid "Value"
msgstr "ערך" msgstr "ערך"
#: src/components/network-monitors-table/network-monitors-table.tsx
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "View" msgid "View"
msgstr "צפה" msgstr "צפה"
@@ -2231,6 +2284,7 @@ msgstr "צפה בעוד"
msgid "View your 200 most recent alerts." msgid "View your 200 most recent alerts."
msgstr "צפה ב-200 ההתראות האחרונות שלך." msgstr "צפה ב-200 ההתראות האחרונות שלך."
#: src/components/network-monitors-table/network-monitors-table.tsx
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "Visible Fields" msgid "Visible Fields"
msgstr "שדות גלויים" msgstr "שדות גלויים"
@@ -2305,3 +2359,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 "הגדרות המשתמש שלך עודכנו." msgstr "הגדרות המשתמש שלך עודכנו."
+68 -13
View File
@@ -8,7 +8,7 @@ msgstr ""
"Language: hr\n" "Language: hr\n"
"Project-Id-Version: beszel\n" "Project-Id-Version: beszel\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-09-18 19:22\n" "PO-Revision-Date: 2026-09-24 17:29\n"
"Last-Translator: \n" "Last-Translator: \n"
"Language-Team: Croatian\n" "Language-Team: Croatian\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
@@ -52,14 +52,26 @@ msgstr "{count, plural, one {{countString} sat} other {{countString} sati}}"
msgid "{count, plural, one {{countString} minute} few {{countString} minutes} many {{countString} minutes} other {{countString} minutes}}" msgid "{count, plural, one {{countString} minute} few {{countString} minutes} many {{countString} minutes} other {{countString} minutes}}"
msgstr "{count, plural, one {{countString} minuta} few {{countString} minuta} many {{countString} minuta} other {{countString} minute}}" msgstr "{count, plural, one {{countString} minuta} few {{countString} minuta} many {{countString} minuta} other {{countString} minute}}"
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "{daysLeft, plural, one {# day} other {# days}}"
msgstr ""
#: src/components/routes/system/charts/disk-charts.tsx #: src/components/routes/system/charts/disk-charts.tsx
msgid "{diskName} I/O" msgid "{diskName} I/O"
msgstr "I/O za {diskName}" msgstr "I/O za {diskName}"
#: src/components/systems-table/systems-table-columns.tsx
msgid "{numFailed, plural, one {# failed service} other {# failed services}}"
msgstr ""
#: src/components/routes/system/info-bar.tsx #: src/components/routes/system/info-bar.tsx
msgid "{threads, plural, one {# thread} other {# threads}}" msgid "{threads, plural, one {# thread} other {# threads}}"
msgstr "{threads, plural, one {# nit} few {# niti} other {# niti}}" msgstr "{threads, plural, one {# nit} few {# niti} other {# niti}}"
#: src/components/systems-table/systems-table-columns.tsx
msgid "{totalCount, plural, one {# service} other {# services}}"
msgstr ""
#: src/lib/utils.ts #: src/lib/utils.ts
msgid "1 hour" msgid "1 hour"
msgstr "1 sat" msgstr "1 sat"
@@ -123,10 +135,10 @@ msgstr "Aktivna Upozorenja"
msgid "Active state" msgid "Active state"
msgstr "Aktivno stanje" msgstr "Aktivno stanje"
#: src/components/add-system.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/add-system.tsx msgid "Add"
#: src/components/navbar.tsx msgstr ""
#: src/components/navbar.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
@@ -136,6 +148,13 @@ msgstr "Aktivno stanje"
msgid "Add {foo}" msgid "Add {foo}"
msgstr "Dodaj {foo}" msgstr "Dodaj {foo}"
#: src/components/add-system.tsx
#: src/components/add-system.tsx
#: src/components/navbar.tsx
#: src/components/navbar.tsx
msgid "Add System"
msgstr "Dodaj Sustav"
#: src/components/routes/settings/notifications.tsx #: src/components/routes/settings/notifications.tsx
msgid "Add URL" msgid "Add URL"
msgstr "Dodaj URL" msgstr "Dodaj URL"
@@ -260,6 +279,7 @@ msgstr "Prosječna iskorištenost grafičkih procesora"
msgid "Average, minimum, and maximum response time" msgid "Average, minimum, and maximum response time"
msgstr "Prosječno, minimalno i maksimalno vrijeme odziva" msgstr "Prosječno, minimalno i maksimalno vrijeme odziva"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Avg 1h" msgid "Avg 1h"
msgstr "Prosjek 1 h" msgstr "Prosjek 1 h"
@@ -383,6 +403,19 @@ msgstr "Oprez - mogući gubitak podataka"
msgid "Celsius (°C)" msgid "Celsius (°C)"
msgstr "Celsius (°C)" msgstr "Celsius (°C)"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Certificate"
msgstr ""
#: src/components/network-monitors-table/network-monitors-table.tsx
msgid "Certificate expired {expires}"
msgstr ""
#: src/components/network-monitors-table/network-monitors-table.tsx
msgid "Certificate expires {expires}"
msgstr ""
#: src/components/routes/settings/general.tsx #: src/components/routes/settings/general.tsx
msgid "Change display units for metrics." msgid "Change display units for metrics."
msgstr "Promijenite mjerene jedinice korištene za prikazivanje podataka." msgstr "Promijenite mjerene jedinice korištene za prikazivanje podataka."
@@ -776,12 +809,15 @@ msgstr "Trajanje"
msgid "Edit" msgid "Edit"
msgstr "Uredi" msgstr "Uredi"
#: src/components/add-system.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/routes/settings/quiet-hours.tsx #: src/components/routes/settings/quiet-hours.tsx
msgid "Edit {foo}" msgid "Edit {foo}"
msgstr "Uredi {foo}" msgstr "Uredi {foo}"
#: src/components/add-system.tsx
msgid "Edit System"
msgstr "Uredi Sustav"
#: 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
@@ -867,6 +903,10 @@ msgstr "Postojeći sustavi koji nisu definirani u <0>config.yml</0> datoteci bit
msgid "Exited active" msgid "Exited active"
msgstr "Izašlo aktivno" msgstr "Izašlo aktivno"
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Expired"
msgstr ""
#: src/components/routes/settings/tokens-fingerprints.tsx #: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Expires after one hour or on hub restart." msgid "Expires after one hour or on hub restart."
msgstr "Istječe nakon jednog sata ili ponovnog pokretanja huba." msgstr "Istječe nakon jednog sata ili ponovnog pokretanja huba."
@@ -887,10 +927,6 @@ msgstr "Izvoz trenutne sistemske konfiguracije."
msgid "Fahrenheit (°F)" msgid "Fahrenheit (°F)"
msgstr "Farenhajt (°F)" msgstr "Farenhajt (°F)"
#: src/components/systems-table/systems-table-columns.tsx
msgid "Failed"
msgstr "Neuspješno"
#: src/components/routes/system/smart-table.tsx #: src/components/routes/system/smart-table.tsx
msgid "Failed Attributes:" msgid "Failed Attributes:"
msgstr "Neuspjeli atributi:" msgstr "Neuspjeli atributi:"
@@ -1090,6 +1126,7 @@ msgstr "Dostupno je ažuriranje slike"
msgid "Inactive" msgid "Inactive"
msgstr "Neaktivno" msgstr "Neaktivno"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/routes/settings/heartbeat.tsx #: src/components/routes/settings/heartbeat.tsx
msgid "Interval" msgid "Interval"
@@ -1182,6 +1219,7 @@ msgctxt "Packet loss"
msgid "Loss" msgid "Loss"
msgstr "Gubitak" msgstr "Gubitak"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Loss 1h" msgid "Loss 1h"
msgstr "Gubitak 1 h" msgstr "Gubitak 1 h"
@@ -1204,6 +1242,7 @@ msgstr "Upute za ručno postavljanje"
msgid "Max 1 min" msgid "Max 1 min"
msgstr "Maksimalno 1 minuta" msgstr "Maksimalno 1 minuta"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Max 1h" msgid "Max 1h"
msgstr "Maks. 1 h" msgstr "Maks. 1 h"
@@ -1234,6 +1273,7 @@ msgstr "Iskorištenost memorije"
msgid "Memory usage of containers" msgid "Memory usage of containers"
msgstr "Upotreba memorije spremnika" msgstr "Upotreba memorije spremnika"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Min 1h" msgid "Min 1h"
msgstr "Min. 1 h" msgstr "Min. 1 h"
@@ -1565,6 +1605,7 @@ msgstr "Proces pokrenut"
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Protocol" msgid "Protocol"
msgstr "Protokol" msgstr "Protokol"
@@ -1653,6 +1694,7 @@ msgstr "Resetiraj Lozinku"
msgid "Resolved" msgid "Resolved"
msgstr "Razrješeno" msgstr "Razrješeno"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/routes/system/charts/monitors-charts.tsx #: src/components/routes/system/charts/monitors-charts.tsx
msgid "Response" msgid "Response"
@@ -1698,7 +1740,6 @@ msgstr "S.M.A.R.T. Detalji"
msgid "S.M.A.R.T. Self-Test" msgid "S.M.A.R.T. Self-Test"
msgstr "S.M.A.R.T. Samotestiranje" msgstr "S.M.A.R.T. Samotestiranje"
#: src/components/add-system.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
msgid "Save {foo}" msgid "Save {foo}"
msgstr "Spremi {foo}" msgstr "Spremi {foo}"
@@ -1712,6 +1753,10 @@ msgstr "Spremite adresu pomoću tipke enter ili zarez. Ostavite prazno kako bist
msgid "Save Settings" msgid "Save Settings"
msgstr "Spremi Postavke" msgstr "Spremi Postavke"
#: src/components/add-system.tsx
msgid "Save System"
msgstr "Spremi Sustav"
#: src/components/routes/settings/tokens-fingerprints.tsx #: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Saved in the database and does not expire until you disable it." msgid "Saved in the database and does not expire until you disable it."
msgstr "Spremljeno u bazi podataka i ne istječe dok ga ne onemogućite." msgstr "Spremljeno u bazi podataka i ne istječe dok ga ne onemogućite."
@@ -1833,6 +1878,7 @@ msgstr "Prijava"
msgid "SMTP settings" msgid "SMTP settings"
msgstr "SMTP postavke" msgstr "SMTP postavke"
#: src/components/network-monitors-table/network-monitors-table.tsx
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "Sort By" msgid "Sort By"
msgstr "Sortiraj po" msgstr "Sortiraj po"
@@ -1875,12 +1921,11 @@ msgstr "Swap Iskorištenost"
msgid "Switch theme" msgid "Switch theme"
msgstr "Promijeni temu" msgstr "Promijeni temu"
#: 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/containers-table/containers-table-columns.tsx
#: src/components/navbar.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-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/quiet-hours.tsx #: src/components/routes/settings/quiet-hours.tsx
@@ -1925,9 +1970,15 @@ msgstr "Kartice"
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Target" msgid "Target"
msgstr "Cilj" msgstr "Cilj"
#: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx
msgid "target[,protocol[,port[,interval]]]"
msgstr ""
#: src/components/systemd-table/systemd-table.tsx #: src/components/systemd-table/systemd-table.tsx
msgid "Tasks" msgid "Tasks"
msgstr "Zadaci" msgstr "Zadaci"
@@ -2162,6 +2213,7 @@ msgstr "Ažuriraj"
#: src/components/containers-table/containers-table-columns.tsx #: src/components/containers-table/containers-table-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/routes/system/smart-table.tsx #: src/components/routes/system/smart-table.tsx
#: src/components/routes/system/storage-pools-table.tsx #: src/components/routes/system/storage-pools-table.tsx
#: src/components/systemd-table/systemd-table-columns.tsx #: src/components/systemd-table/systemd-table-columns.tsx
@@ -2217,6 +2269,7 @@ msgstr "Iskorištenost"
msgid "Value" msgid "Value"
msgstr "Vrijednost" msgstr "Vrijednost"
#: src/components/network-monitors-table/network-monitors-table.tsx
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "View" msgid "View"
msgstr "Prikaz" msgstr "Prikaz"
@@ -2231,6 +2284,7 @@ msgstr "Prikaži više"
msgid "View your 200 most recent alerts." msgid "View your 200 most recent alerts."
msgstr "Pogledajte posljednjih 200 upozorenja." msgstr "Pogledajte posljednjih 200 upozorenja."
#: src/components/network-monitors-table/network-monitors-table.tsx
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "Visible Fields" msgid "Visible Fields"
msgstr "Vidljiva polja" msgstr "Vidljiva polja"
@@ -2305,3 +2359,4 @@ msgstr "Da"
#: 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 "Vaše korisničke postavke su ažurirane." msgstr "Vaše korisničke postavke su ažurirane."
+68 -13
View File
@@ -8,7 +8,7 @@ msgstr ""
"Language: hu\n" "Language: hu\n"
"Project-Id-Version: beszel\n" "Project-Id-Version: beszel\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-09-18 19:21\n" "PO-Revision-Date: 2026-09-24 17:29\n"
"Last-Translator: \n" "Last-Translator: \n"
"Language-Team: Hungarian\n" "Language-Team: Hungarian\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -52,14 +52,26 @@ msgstr "{count, plural, one {{countString} óra} other {{countString} óra}}"
msgid "{count, plural, one {{countString} minute} few {{countString} minutes} many {{countString} minutes} other {{countString} minutes}}" msgid "{count, plural, one {{countString} minute} few {{countString} minutes} many {{countString} minutes} other {{countString} minutes}}"
msgstr "{count, plural, one {{countString} perc} few {{countString} perc} many {{countString} perc} other {{countString} perc}}" msgstr "{count, plural, one {{countString} perc} few {{countString} perc} many {{countString} perc} other {{countString} perc}}"
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "{daysLeft, plural, one {# day} other {# days}}"
msgstr ""
#: src/components/routes/system/charts/disk-charts.tsx #: src/components/routes/system/charts/disk-charts.tsx
msgid "{diskName} I/O" msgid "{diskName} I/O"
msgstr "{diskName} I/O" msgstr "{diskName} I/O"
#: src/components/systems-table/systems-table-columns.tsx
msgid "{numFailed, plural, one {# failed service} other {# failed services}}"
msgstr ""
#: src/components/routes/system/info-bar.tsx #: src/components/routes/system/info-bar.tsx
msgid "{threads, plural, one {# thread} other {# threads}}" msgid "{threads, plural, one {# thread} other {# threads}}"
msgstr "{threads, plural, one {# szál} other {# szál}}" msgstr "{threads, plural, one {# szál} other {# szál}}"
#: src/components/systems-table/systems-table-columns.tsx
msgid "{totalCount, plural, one {# service} other {# services}}"
msgstr ""
#: src/lib/utils.ts #: src/lib/utils.ts
msgid "1 hour" msgid "1 hour"
msgstr "1 óra" msgstr "1 óra"
@@ -123,10 +135,10 @@ msgstr "Aktív riasztások"
msgid "Active state" msgid "Active state"
msgstr "Aktív állapot" msgstr "Aktív állapot"
#: src/components/add-system.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/add-system.tsx msgid "Add"
#: src/components/navbar.tsx msgstr ""
#: src/components/navbar.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
@@ -136,6 +148,13 @@ msgstr "Aktív állapot"
msgid "Add {foo}" msgid "Add {foo}"
msgstr "Hozzáadás {foo}" msgstr "Hozzáadás {foo}"
#: src/components/add-system.tsx
#: src/components/add-system.tsx
#: src/components/navbar.tsx
#: src/components/navbar.tsx
msgid "Add System"
msgstr "Hozzáadás Rendszer"
#: src/components/routes/settings/notifications.tsx #: src/components/routes/settings/notifications.tsx
msgid "Add URL" msgid "Add URL"
msgstr "URL hozzáadása" msgstr "URL hozzáadása"
@@ -260,6 +279,7 @@ msgstr "GPU-k átlagos kihasználtsága"
msgid "Average, minimum, and maximum response time" msgid "Average, minimum, and maximum response time"
msgstr "Átlagos, minimális és maximális válaszidő" msgstr "Átlagos, minimális és maximális válaszidő"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Avg 1h" msgid "Avg 1h"
msgstr "Átl. 1 óra" msgstr "Átl. 1 óra"
@@ -383,6 +403,19 @@ msgstr "Figyelem - potenciális adatvesztés"
msgid "Celsius (°C)" msgid "Celsius (°C)"
msgstr "Celsius (°C)" msgstr "Celsius (°C)"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Certificate"
msgstr ""
#: src/components/network-monitors-table/network-monitors-table.tsx
msgid "Certificate expired {expires}"
msgstr ""
#: src/components/network-monitors-table/network-monitors-table.tsx
msgid "Certificate expires {expires}"
msgstr ""
#: src/components/routes/settings/general.tsx #: src/components/routes/settings/general.tsx
msgid "Change display units for metrics." msgid "Change display units for metrics."
msgstr "A mértékegységek megjelenítésének megváltoztatása." msgstr "A mértékegységek megjelenítésének megváltoztatása."
@@ -776,12 +809,15 @@ msgstr "Időtartam"
msgid "Edit" msgid "Edit"
msgstr "Szerkesztés" msgstr "Szerkesztés"
#: src/components/add-system.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/routes/settings/quiet-hours.tsx #: src/components/routes/settings/quiet-hours.tsx
msgid "Edit {foo}" msgid "Edit {foo}"
msgstr "Szerkesztés {foo}" msgstr "Szerkesztés {foo}"
#: src/components/add-system.tsx
msgid "Edit System"
msgstr "Szerkesztés Rendszer"
#: 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
@@ -867,6 +903,10 @@ msgstr "A <0>config.yml</0> fájlban nem definiált meglévő rendszerek törlé
msgid "Exited active" msgid "Exited active"
msgstr "Aktívként kilépett" msgstr "Aktívként kilépett"
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Expired"
msgstr ""
#: src/components/routes/settings/tokens-fingerprints.tsx #: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Expires after one hour or on hub restart." msgid "Expires after one hour or on hub restart."
msgstr "Lejár egy óra után vagy a hub újraindításakor." msgstr "Lejár egy óra után vagy a hub újraindításakor."
@@ -887,10 +927,6 @@ msgstr "Exportálja a jelenlegi rendszerkonfigurációt."
msgid "Fahrenheit (°F)" msgid "Fahrenheit (°F)"
msgstr "Fahrenheit (°F)" msgstr "Fahrenheit (°F)"
#: src/components/systems-table/systems-table-columns.tsx
msgid "Failed"
msgstr "Sikertelen"
#: src/components/routes/system/smart-table.tsx #: src/components/routes/system/smart-table.tsx
msgid "Failed Attributes:" msgid "Failed Attributes:"
msgstr "Sikertelen attribútumok:" msgstr "Sikertelen attribútumok:"
@@ -1090,6 +1126,7 @@ msgstr "Képfrissítés érhető el"
msgid "Inactive" msgid "Inactive"
msgstr "Inaktív" msgstr "Inaktív"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/routes/settings/heartbeat.tsx #: src/components/routes/settings/heartbeat.tsx
msgid "Interval" msgid "Interval"
@@ -1182,6 +1219,7 @@ msgctxt "Packet loss"
msgid "Loss" msgid "Loss"
msgstr "Veszteség" msgstr "Veszteség"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Loss 1h" msgid "Loss 1h"
msgstr "Veszteség 1 óra" msgstr "Veszteség 1 óra"
@@ -1204,6 +1242,7 @@ msgstr "Manuális beállítási lépések"
msgid "Max 1 min" msgid "Max 1 min"
msgstr "Maximum 1 perc" msgstr "Maximum 1 perc"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Max 1h" msgid "Max 1h"
msgstr "Max. 1 óra" msgstr "Max. 1 óra"
@@ -1234,6 +1273,7 @@ msgstr "Memóriahasználat"
msgid "Memory usage of containers" msgid "Memory usage of containers"
msgstr "Konténerek memóriahasználata" msgstr "Konténerek memóriahasználata"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Min 1h" msgid "Min 1h"
msgstr "Min. 1 óra" msgstr "Min. 1 óra"
@@ -1565,6 +1605,7 @@ msgstr "Folyamat elindítva"
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Protocol" msgid "Protocol"
msgstr "Protokoll" msgstr "Protokoll"
@@ -1653,6 +1694,7 @@ msgstr "Jelszó visszaállítása"
msgid "Resolved" msgid "Resolved"
msgstr "Megoldva" msgstr "Megoldva"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/routes/system/charts/monitors-charts.tsx #: src/components/routes/system/charts/monitors-charts.tsx
msgid "Response" msgid "Response"
@@ -1698,7 +1740,6 @@ msgstr "S.M.A.R.T. Részletek"
msgid "S.M.A.R.T. Self-Test" msgid "S.M.A.R.T. Self-Test"
msgstr "S.M.A.R.T. Önteszt" msgstr "S.M.A.R.T. Önteszt"
#: src/components/add-system.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
msgid "Save {foo}" msgid "Save {foo}"
msgstr "{foo} mentése" msgstr "{foo} mentése"
@@ -1712,6 +1753,10 @@ msgstr "Mentse el a címet az Enter billentyű vagy a vessző használatával. H
msgid "Save Settings" msgid "Save Settings"
msgstr "Beállítások mentése" msgstr "Beállítások mentése"
#: src/components/add-system.tsx
msgid "Save System"
msgstr "Rendszer mentése"
#: src/components/routes/settings/tokens-fingerprints.tsx #: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Saved in the database and does not expire until you disable it." msgid "Saved in the database and does not expire until you disable it."
msgstr "Elmentve az adatbázisban és nem jár le, amíg ki nem kapcsolod." msgstr "Elmentve az adatbázisban és nem jár le, amíg ki nem kapcsolod."
@@ -1833,6 +1878,7 @@ msgstr "Bejelentkezés"
msgid "SMTP settings" msgid "SMTP settings"
msgstr "SMTP beállítások" msgstr "SMTP beállítások"
#: src/components/network-monitors-table/network-monitors-table.tsx
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "Sort By" msgid "Sort By"
msgstr "Rendezés" msgstr "Rendezés"
@@ -1875,12 +1921,11 @@ msgstr "Swap használat"
msgid "Switch theme" msgid "Switch theme"
msgstr "Téma váltása" msgstr "Téma váltása"
#: 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/containers-table/containers-table-columns.tsx
#: src/components/navbar.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-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/quiet-hours.tsx #: src/components/routes/settings/quiet-hours.tsx
@@ -1925,9 +1970,15 @@ msgstr "Lapok"
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Target" msgid "Target"
msgstr "Cél" msgstr "Cél"
#: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx
msgid "target[,protocol[,port[,interval]]]"
msgstr ""
#: src/components/systemd-table/systemd-table.tsx #: src/components/systemd-table/systemd-table.tsx
msgid "Tasks" msgid "Tasks"
msgstr "Feladatok" msgstr "Feladatok"
@@ -2162,6 +2213,7 @@ msgstr "Frissítés"
#: src/components/containers-table/containers-table-columns.tsx #: src/components/containers-table/containers-table-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/routes/system/smart-table.tsx #: src/components/routes/system/smart-table.tsx
#: src/components/routes/system/storage-pools-table.tsx #: src/components/routes/system/storage-pools-table.tsx
#: src/components/systemd-table/systemd-table-columns.tsx #: src/components/systemd-table/systemd-table-columns.tsx
@@ -2217,6 +2269,7 @@ msgstr "Kihasználtság"
msgid "Value" msgid "Value"
msgstr "Érték" msgstr "Érték"
#: src/components/network-monitors-table/network-monitors-table.tsx
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "View" msgid "View"
msgstr "Nézet" msgstr "Nézet"
@@ -2231,6 +2284,7 @@ msgstr "Továbbiak megjelenítése"
msgid "View your 200 most recent alerts." msgid "View your 200 most recent alerts."
msgstr "Legfrissebb 200 riasztásod áttekintése." msgstr "Legfrissebb 200 riasztásod áttekintése."
#: src/components/network-monitors-table/network-monitors-table.tsx
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "Visible Fields" msgid "Visible Fields"
msgstr "Látható mezők" msgstr "Látható mezők"
@@ -2305,3 +2359,4 @@ msgstr "Igen"
#: 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 "A felhasználói beállítások frissítésre kerültek." msgstr "A felhasználói beállítások frissítésre kerültek."
+68 -13
View File
@@ -8,7 +8,7 @@ msgstr ""
"Language: id\n" "Language: id\n"
"Project-Id-Version: beszel\n" "Project-Id-Version: beszel\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-09-18 19:22\n" "PO-Revision-Date: 2026-09-24 17:29\n"
"Last-Translator: \n" "Last-Translator: \n"
"Language-Team: Indonesian\n" "Language-Team: Indonesian\n"
"Plural-Forms: nplurals=1; plural=0;\n" "Plural-Forms: nplurals=1; plural=0;\n"
@@ -52,14 +52,26 @@ msgstr "{count, plural, one {{countString} jam} other {{countString} jam}}"
msgid "{count, plural, one {{countString} minute} few {{countString} minutes} many {{countString} minutes} other {{countString} minutes}}" msgid "{count, plural, one {{countString} minute} few {{countString} minutes} many {{countString} minutes} other {{countString} minutes}}"
msgstr "{count, plural, one {{countString} menit} few {{countString} menit} many {{countString} menit} other {{countString} menit}}" msgstr "{count, plural, one {{countString} menit} few {{countString} menit} many {{countString} menit} other {{countString} menit}}"
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "{daysLeft, plural, one {# day} other {# days}}"
msgstr ""
#: src/components/routes/system/charts/disk-charts.tsx #: src/components/routes/system/charts/disk-charts.tsx
msgid "{diskName} I/O" msgid "{diskName} I/O"
msgstr "I/O {diskName}" msgstr "I/O {diskName}"
#: src/components/systems-table/systems-table-columns.tsx
msgid "{numFailed, plural, one {# failed service} other {# failed services}}"
msgstr ""
#: src/components/routes/system/info-bar.tsx #: src/components/routes/system/info-bar.tsx
msgid "{threads, plural, one {# thread} other {# threads}}" msgid "{threads, plural, one {# thread} other {# threads}}"
msgstr "{threads, plural, one {# thread} other {# thread}}" msgstr "{threads, plural, one {# thread} other {# thread}}"
#: src/components/systems-table/systems-table-columns.tsx
msgid "{totalCount, plural, one {# service} other {# services}}"
msgstr ""
#: src/lib/utils.ts #: src/lib/utils.ts
msgid "1 hour" msgid "1 hour"
msgstr "1 jam" msgstr "1 jam"
@@ -123,10 +135,10 @@ msgstr "Peringatan Aktif"
msgid "Active state" msgid "Active state"
msgstr "Status aktif" msgstr "Status aktif"
#: src/components/add-system.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/add-system.tsx msgid "Add"
#: src/components/navbar.tsx msgstr ""
#: src/components/navbar.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
@@ -136,6 +148,13 @@ msgstr "Status aktif"
msgid "Add {foo}" msgid "Add {foo}"
msgstr "Tambah {foo}" msgstr "Tambah {foo}"
#: src/components/add-system.tsx
#: src/components/add-system.tsx
#: src/components/navbar.tsx
#: src/components/navbar.tsx
msgid "Add System"
msgstr "Tambah Sistem"
#: src/components/routes/settings/notifications.tsx #: src/components/routes/settings/notifications.tsx
msgid "Add URL" msgid "Add URL"
msgstr "Tambah URL" msgstr "Tambah URL"
@@ -260,6 +279,7 @@ msgstr "Rata-rata utilisasi GPU"
msgid "Average, minimum, and maximum response time" msgid "Average, minimum, and maximum response time"
msgstr "Waktu respons rata-rata, minimum, dan maksimum" msgstr "Waktu respons rata-rata, minimum, dan maksimum"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Avg 1h" msgid "Avg 1h"
msgstr "Rata-rata 1 jam" msgstr "Rata-rata 1 jam"
@@ -383,6 +403,19 @@ msgstr "Perhatian - potensi kehilangan data"
msgid "Celsius (°C)" msgid "Celsius (°C)"
msgstr "Celsius (°C)" msgstr "Celsius (°C)"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Certificate"
msgstr ""
#: src/components/network-monitors-table/network-monitors-table.tsx
msgid "Certificate expired {expires}"
msgstr ""
#: src/components/network-monitors-table/network-monitors-table.tsx
msgid "Certificate expires {expires}"
msgstr ""
#: src/components/routes/settings/general.tsx #: src/components/routes/settings/general.tsx
msgid "Change display units for metrics." msgid "Change display units for metrics."
msgstr "Ubah tampilan satuan untuk metrik." msgstr "Ubah tampilan satuan untuk metrik."
@@ -776,12 +809,15 @@ msgstr "Durasi"
msgid "Edit" msgid "Edit"
msgstr "Ubah" msgstr "Ubah"
#: src/components/add-system.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/routes/settings/quiet-hours.tsx #: src/components/routes/settings/quiet-hours.tsx
msgid "Edit {foo}" msgid "Edit {foo}"
msgstr "Ubah {foo}" msgstr "Ubah {foo}"
#: src/components/add-system.tsx
msgid "Edit System"
msgstr "Ubah Sistem"
#: 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
@@ -867,6 +903,10 @@ msgstr "Sistem yang ada yang tidak didefinisikan dalam <0>config.yml</0> akan di
msgid "Exited active" msgid "Exited active"
msgstr "Keluar aktif" msgstr "Keluar aktif"
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Expired"
msgstr ""
#: src/components/routes/settings/tokens-fingerprints.tsx #: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Expires after one hour or on hub restart." msgid "Expires after one hour or on hub restart."
msgstr "Kedaluwarsa setelah satu jam atau saat restart hub." msgstr "Kedaluwarsa setelah satu jam atau saat restart hub."
@@ -887,10 +927,6 @@ msgstr "Export konfigurasi sistem anda saat ini."
msgid "Fahrenheit (°F)" msgid "Fahrenheit (°F)"
msgstr "Fahrenheit (°F)" msgstr "Fahrenheit (°F)"
#: src/components/systems-table/systems-table-columns.tsx
msgid "Failed"
msgstr "Gagal"
#: src/components/routes/system/smart-table.tsx #: src/components/routes/system/smart-table.tsx
msgid "Failed Attributes:" msgid "Failed Attributes:"
msgstr "Atribut yang Gagal:" msgstr "Atribut yang Gagal:"
@@ -1090,6 +1126,7 @@ msgstr "Pembaruan gambar tersedia"
msgid "Inactive" msgid "Inactive"
msgstr "Tidak aktif" msgstr "Tidak aktif"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/routes/settings/heartbeat.tsx #: src/components/routes/settings/heartbeat.tsx
msgid "Interval" msgid "Interval"
@@ -1182,6 +1219,7 @@ msgctxt "Packet loss"
msgid "Loss" msgid "Loss"
msgstr "Kehilangan paket" msgstr "Kehilangan paket"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Loss 1h" msgid "Loss 1h"
msgstr "Kehilangan paket 1 jam" msgstr "Kehilangan paket 1 jam"
@@ -1204,6 +1242,7 @@ msgstr "Instruksi setup manual"
msgid "Max 1 min" msgid "Max 1 min"
msgstr "Maks 1 mnt" msgstr "Maks 1 mnt"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Max 1h" msgid "Max 1h"
msgstr "Maks. 1 jam" msgstr "Maks. 1 jam"
@@ -1234,6 +1273,7 @@ msgstr "Penggunaan Memori"
msgid "Memory usage of containers" msgid "Memory usage of containers"
msgstr "Penggunaan memori container" msgstr "Penggunaan memori container"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Min 1h" msgid "Min 1h"
msgstr "Min. 1 jam" msgstr "Min. 1 jam"
@@ -1565,6 +1605,7 @@ msgstr "Proses dimulai"
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Protocol" msgid "Protocol"
msgstr "Protokol" msgstr "Protokol"
@@ -1653,6 +1694,7 @@ msgstr "Reset Kata Sandi"
msgid "Resolved" msgid "Resolved"
msgstr "Diselesaikan" msgstr "Diselesaikan"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/routes/system/charts/monitors-charts.tsx #: src/components/routes/system/charts/monitors-charts.tsx
msgid "Response" msgid "Response"
@@ -1698,7 +1740,6 @@ msgstr "Detail S.M.A.R.T."
msgid "S.M.A.R.T. Self-Test" msgid "S.M.A.R.T. Self-Test"
msgstr "Self-Test S.M.A.R.T." msgstr "Self-Test S.M.A.R.T."
#: src/components/add-system.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
msgid "Save {foo}" msgid "Save {foo}"
msgstr "Simpan {foo}" msgstr "Simpan {foo}"
@@ -1712,6 +1753,10 @@ msgstr "Simpan alamat menggunakan tombol enter atau koma. Biarkan kosong untuk m
msgid "Save Settings" msgid "Save Settings"
msgstr "Simpan Pengaturan" msgstr "Simpan Pengaturan"
#: src/components/add-system.tsx
msgid "Save System"
msgstr "Simpan Sistem"
#: src/components/routes/settings/tokens-fingerprints.tsx #: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Saved in the database and does not expire until you disable it." msgid "Saved in the database and does not expire until you disable it."
msgstr "Disimpan di database dan tidak kedaluwarsa sampai Anda menonaktifkannya." msgstr "Disimpan di database dan tidak kedaluwarsa sampai Anda menonaktifkannya."
@@ -1833,6 +1878,7 @@ msgstr "Masuk"
msgid "SMTP settings" msgid "SMTP settings"
msgstr "Pengaturan SMTP" msgstr "Pengaturan SMTP"
#: src/components/network-monitors-table/network-monitors-table.tsx
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "Sort By" msgid "Sort By"
msgstr "Urutkan Berdasarkan" msgstr "Urutkan Berdasarkan"
@@ -1875,12 +1921,11 @@ msgstr "Penggunaan Swap"
msgid "Switch theme" msgid "Switch theme"
msgstr "Ganti tema" msgstr "Ganti tema"
#: 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/containers-table/containers-table-columns.tsx
#: src/components/navbar.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-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/quiet-hours.tsx #: src/components/routes/settings/quiet-hours.tsx
@@ -1925,9 +1970,15 @@ msgstr "Tab"
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Target" msgid "Target"
msgstr "Target" msgstr "Target"
#: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx
msgid "target[,protocol[,port[,interval]]]"
msgstr ""
#: src/components/systemd-table/systemd-table.tsx #: src/components/systemd-table/systemd-table.tsx
msgid "Tasks" msgid "Tasks"
msgstr "Tugas" msgstr "Tugas"
@@ -2162,6 +2213,7 @@ msgstr "Perbarui"
#: src/components/containers-table/containers-table-columns.tsx #: src/components/containers-table/containers-table-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/routes/system/smart-table.tsx #: src/components/routes/system/smart-table.tsx
#: src/components/routes/system/storage-pools-table.tsx #: src/components/routes/system/storage-pools-table.tsx
#: src/components/systemd-table/systemd-table-columns.tsx #: src/components/systemd-table/systemd-table-columns.tsx
@@ -2217,6 +2269,7 @@ msgstr "Utilisasi"
msgid "Value" msgid "Value"
msgstr "Nilai" msgstr "Nilai"
#: src/components/network-monitors-table/network-monitors-table.tsx
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "View" msgid "View"
msgstr "Lihat" msgstr "Lihat"
@@ -2231,6 +2284,7 @@ msgstr "Lihat lebih banyak"
msgid "View your 200 most recent alerts." msgid "View your 200 most recent alerts."
msgstr "Lihat 200 peringatan terbaru anda." msgstr "Lihat 200 peringatan terbaru anda."
#: src/components/network-monitors-table/network-monitors-table.tsx
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "Visible Fields" msgid "Visible Fields"
msgstr "Metrik yang Terlihat" msgstr "Metrik yang Terlihat"
@@ -2305,3 +2359,4 @@ msgstr "Ya"
#: 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 "Pengaturan pengguna anda telah diperbarui." msgstr "Pengaturan pengguna anda telah diperbarui."
+68 -13
View File
@@ -8,7 +8,7 @@ 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: 2026-09-18 19:21\n" "PO-Revision-Date: 2026-09-24 17:29\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"
@@ -52,14 +52,26 @@ msgstr "{count, plural, one {{countString} ora} other {{countString} ore}}"
msgid "{count, plural, one {{countString} minute} few {{countString} minutes} many {{countString} minutes} other {{countString} minutes}}" msgid "{count, plural, one {{countString} minute} few {{countString} minutes} many {{countString} minutes} other {{countString} minutes}}"
msgstr "{count, plural, one {{countString} minuto} other {{countString} minuti}}" msgstr "{count, plural, one {{countString} minuto} other {{countString} minuti}}"
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "{daysLeft, plural, one {# day} other {# days}}"
msgstr ""
#: src/components/routes/system/charts/disk-charts.tsx #: src/components/routes/system/charts/disk-charts.tsx
msgid "{diskName} I/O" msgid "{diskName} I/O"
msgstr "I/O di {diskName}" msgstr "I/O di {diskName}"
#: src/components/systems-table/systems-table-columns.tsx
msgid "{numFailed, plural, one {# failed service} other {# failed services}}"
msgstr ""
#: src/components/routes/system/info-bar.tsx #: src/components/routes/system/info-bar.tsx
msgid "{threads, plural, one {# thread} other {# threads}}" msgid "{threads, plural, one {# thread} other {# threads}}"
msgstr "{threads, plural, one {# thread} other {# thread}}" msgstr "{threads, plural, one {# thread} other {# thread}}"
#: src/components/systems-table/systems-table-columns.tsx
msgid "{totalCount, plural, one {# service} other {# services}}"
msgstr ""
#: src/lib/utils.ts #: src/lib/utils.ts
msgid "1 hour" msgid "1 hour"
msgstr "1 ora" msgstr "1 ora"
@@ -123,10 +135,10 @@ msgstr "Avvisi Attivi"
msgid "Active state" msgid "Active state"
msgstr "Stato attivo" msgstr "Stato attivo"
#: src/components/add-system.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/add-system.tsx msgid "Add"
#: src/components/navbar.tsx msgstr ""
#: src/components/navbar.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
@@ -136,6 +148,13 @@ msgstr "Stato attivo"
msgid "Add {foo}" msgid "Add {foo}"
msgstr "Aggiungi {foo}" msgstr "Aggiungi {foo}"
#: src/components/add-system.tsx
#: src/components/add-system.tsx
#: src/components/navbar.tsx
#: src/components/navbar.tsx
msgid "Add System"
msgstr "Aggiungi Sistema"
#: src/components/routes/settings/notifications.tsx #: src/components/routes/settings/notifications.tsx
msgid "Add URL" msgid "Add URL"
msgstr "Aggiungi URL" msgstr "Aggiungi URL"
@@ -260,6 +279,7 @@ msgstr "Utilizzo medio dei motori GPU"
msgid "Average, minimum, and maximum response time" msgid "Average, minimum, and maximum response time"
msgstr "Tempo di risposta medio, minimo e massimo" msgstr "Tempo di risposta medio, minimo e massimo"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Avg 1h" msgid "Avg 1h"
msgstr "Media 1 h" msgstr "Media 1 h"
@@ -383,6 +403,19 @@ msgstr "Attenzione - possibile perdita di dati"
msgid "Celsius (°C)" msgid "Celsius (°C)"
msgstr "Celsius (°C)" msgstr "Celsius (°C)"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Certificate"
msgstr ""
#: src/components/network-monitors-table/network-monitors-table.tsx
msgid "Certificate expired {expires}"
msgstr ""
#: src/components/network-monitors-table/network-monitors-table.tsx
msgid "Certificate expires {expires}"
msgstr ""
#: src/components/routes/settings/general.tsx #: src/components/routes/settings/general.tsx
msgid "Change display units for metrics." msgid "Change display units for metrics."
msgstr "Modifica le unità di visualizzazione per le metriche." msgstr "Modifica le unità di visualizzazione per le metriche."
@@ -776,12 +809,15 @@ msgstr "Durata"
msgid "Edit" msgid "Edit"
msgstr "Modifica" msgstr "Modifica"
#: src/components/add-system.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/routes/settings/quiet-hours.tsx #: src/components/routes/settings/quiet-hours.tsx
msgid "Edit {foo}" msgid "Edit {foo}"
msgstr "Modifica {foo}" msgstr "Modifica {foo}"
#: src/components/add-system.tsx
msgid "Edit System"
msgstr "Modifica Sistema"
#: 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
@@ -867,6 +903,10 @@ msgstr "I sistemi esistenti non definiti in <0>config.yml</0> verranno eliminati
msgid "Exited active" msgid "Exited active"
msgstr "Uscito attivo" msgstr "Uscito attivo"
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Expired"
msgstr ""
#: src/components/routes/settings/tokens-fingerprints.tsx #: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Expires after one hour or on hub restart." msgid "Expires after one hour or on hub restart."
msgstr "Scade dopo un'ora o al riavvio dell'hub." msgstr "Scade dopo un'ora o al riavvio dell'hub."
@@ -887,10 +927,6 @@ 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 #: src/components/routes/system/smart-table.tsx
msgid "Failed Attributes:" msgid "Failed Attributes:"
msgstr "Attributi falliti:" msgstr "Attributi falliti:"
@@ -1090,6 +1126,7 @@ msgstr "Aggiornamento dell’immagine disponibile"
msgid "Inactive" msgid "Inactive"
msgstr "Inattivo" msgstr "Inattivo"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/routes/settings/heartbeat.tsx #: src/components/routes/settings/heartbeat.tsx
msgid "Interval" msgid "Interval"
@@ -1182,6 +1219,7 @@ msgctxt "Packet loss"
msgid "Loss" msgid "Loss"
msgstr "Perdita" msgstr "Perdita"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Loss 1h" msgid "Loss 1h"
msgstr "Perdita 1 h" msgstr "Perdita 1 h"
@@ -1204,6 +1242,7 @@ msgstr "Istruzioni di configurazione manuale"
msgid "Max 1 min" msgid "Max 1 min"
msgstr "Max 1 min" msgstr "Max 1 min"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Max 1h" msgid "Max 1h"
msgstr "Max 1 h" msgstr "Max 1 h"
@@ -1234,6 +1273,7 @@ msgstr "Utilizzo Memoria"
msgid "Memory usage of containers" msgid "Memory usage of containers"
msgstr "Utilizzo della memoria dei container" msgstr "Utilizzo della memoria dei container"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Min 1h" msgid "Min 1h"
msgstr "Min 1 h" msgstr "Min 1 h"
@@ -1565,6 +1605,7 @@ msgstr "Processo avviato"
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Protocol" msgid "Protocol"
msgstr "Protocollo" msgstr "Protocollo"
@@ -1653,6 +1694,7 @@ msgstr "Reimposta Password"
msgid "Resolved" msgid "Resolved"
msgstr "Risolto" msgstr "Risolto"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/routes/system/charts/monitors-charts.tsx #: src/components/routes/system/charts/monitors-charts.tsx
msgid "Response" msgid "Response"
@@ -1698,7 +1740,6 @@ msgstr "Dettagli S.M.A.R.T."
msgid "S.M.A.R.T. Self-Test" msgid "S.M.A.R.T. Self-Test"
msgstr "Autotest S.M.A.R.T." msgstr "Autotest S.M.A.R.T."
#: src/components/add-system.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
msgid "Save {foo}" msgid "Save {foo}"
msgstr "Salva {foo}" msgstr "Salva {foo}"
@@ -1712,6 +1753,10 @@ msgstr "Salva l'indirizzo usando il tasto invio o la virgola. Lascia vuoto per d
msgid "Save Settings" msgid "Save Settings"
msgstr "Salva Impostazioni" msgstr "Salva Impostazioni"
#: src/components/add-system.tsx
msgid "Save System"
msgstr "Salva Sistema"
#: src/components/routes/settings/tokens-fingerprints.tsx #: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Saved in the database and does not expire until you disable it." msgid "Saved in the database and does not expire until you disable it."
msgstr "Salvato nel database e non scade finché non lo disabiliti." msgstr "Salvato nel database e non scade finché non lo disabiliti."
@@ -1833,6 +1878,7 @@ msgstr "Accedi"
msgid "SMTP settings" msgid "SMTP settings"
msgstr "Impostazioni SMTP" msgstr "Impostazioni SMTP"
#: src/components/network-monitors-table/network-monitors-table.tsx
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "Sort By" msgid "Sort By"
msgstr "Ordina per" msgstr "Ordina per"
@@ -1875,12 +1921,11 @@ msgstr "Utilizzo Swap"
msgid "Switch theme" msgid "Switch theme"
msgstr "Cambia tema" msgstr "Cambia tema"
#: 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/containers-table/containers-table-columns.tsx
#: src/components/navbar.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-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/quiet-hours.tsx #: src/components/routes/settings/quiet-hours.tsx
@@ -1925,9 +1970,15 @@ msgstr "Schede"
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Target" msgid "Target"
msgstr "Destinazione" msgstr "Destinazione"
#: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx
msgid "target[,protocol[,port[,interval]]]"
msgstr ""
#: src/components/systemd-table/systemd-table.tsx #: src/components/systemd-table/systemd-table.tsx
msgid "Tasks" msgid "Tasks"
msgstr "Attività" msgstr "Attività"
@@ -2162,6 +2213,7 @@ msgstr "Aggiorna"
#: src/components/containers-table/containers-table-columns.tsx #: src/components/containers-table/containers-table-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/routes/system/smart-table.tsx #: src/components/routes/system/smart-table.tsx
#: src/components/routes/system/storage-pools-table.tsx #: src/components/routes/system/storage-pools-table.tsx
#: src/components/systemd-table/systemd-table-columns.tsx #: src/components/systemd-table/systemd-table-columns.tsx
@@ -2217,6 +2269,7 @@ msgstr "Utilizzo"
msgid "Value" msgid "Value"
msgstr "Valore" msgstr "Valore"
#: src/components/network-monitors-table/network-monitors-table.tsx
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "View" msgid "View"
msgstr "Vista" msgstr "Vista"
@@ -2231,6 +2284,7 @@ msgstr "Visualizza altro"
msgid "View your 200 most recent alerts." msgid "View your 200 most recent alerts."
msgstr "Visualizza i tuoi 200 avvisi più recenti." msgstr "Visualizza i tuoi 200 avvisi più recenti."
#: src/components/network-monitors-table/network-monitors-table.tsx
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "Visible Fields" msgid "Visible Fields"
msgstr "Colonne visibili" msgstr "Colonne visibili"
@@ -2305,3 +2359,4 @@ 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."
+69 -14
View File
@@ -8,7 +8,7 @@ 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: 2026-09-18 19:21\n" "PO-Revision-Date: 2026-09-24 17:29\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"
@@ -52,14 +52,26 @@ msgstr "{count, plural, one {{countString} 時間} other {{countString} 時間}}
msgid "{count, plural, one {{countString} minute} few {{countString} minutes} many {{countString} minutes} other {{countString} minutes}}" 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} 分}}" msgstr "{count, plural, one {{countString} 分} few {{countString} 分} many {{countString} 分} other {{countString} 分}}"
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "{daysLeft, plural, one {# day} other {# days}}"
msgstr ""
#: src/components/routes/system/charts/disk-charts.tsx #: src/components/routes/system/charts/disk-charts.tsx
msgid "{diskName} I/O" msgid "{diskName} I/O"
msgstr "{diskName} の I/O" msgstr "{diskName} の I/O"
#: src/components/systems-table/systems-table-columns.tsx
msgid "{numFailed, plural, one {# failed service} other {# failed services}}"
msgstr ""
#: src/components/routes/system/info-bar.tsx #: src/components/routes/system/info-bar.tsx
msgid "{threads, plural, one {# thread} other {# threads}}" msgid "{threads, plural, one {# thread} other {# threads}}"
msgstr "{threads, plural, one {# スレッド} other {# スレッド}}" msgstr "{threads, plural, one {# スレッド} other {# スレッド}}"
#: src/components/systems-table/systems-table-columns.tsx
msgid "{totalCount, plural, one {# service} other {# services}}"
msgstr ""
#: src/lib/utils.ts #: src/lib/utils.ts
msgid "1 hour" msgid "1 hour"
msgstr "1時間" msgstr "1時間"
@@ -123,10 +135,10 @@ msgstr "アクティブなアラート"
msgid "Active state" msgid "Active state"
msgstr "アクティブ状態" msgstr "アクティブ状態"
#: src/components/add-system.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/add-system.tsx msgid "Add"
#: src/components/navbar.tsx msgstr ""
#: src/components/navbar.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
@@ -136,6 +148,13 @@ msgstr "アクティブ状態"
msgid "Add {foo}" msgid "Add {foo}"
msgstr "{foo}を追加" msgstr "{foo}を追加"
#: src/components/add-system.tsx
#: src/components/add-system.tsx
#: src/components/navbar.tsx
#: src/components/navbar.tsx
msgid "Add System"
msgstr "システムを追加"
#: src/components/routes/settings/notifications.tsx #: src/components/routes/settings/notifications.tsx
msgid "Add URL" msgid "Add URL"
msgstr "URLを追加" msgstr "URLを追加"
@@ -260,6 +279,7 @@ msgstr "GPUエンジンの平均使用率"
msgid "Average, minimum, and maximum response time" msgid "Average, minimum, and maximum response time"
msgstr "応答時間の平均、最小、最大" msgstr "応答時間の平均、最小、最大"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Avg 1h" msgid "Avg 1h"
msgstr "1時間平均" msgstr "1時間平均"
@@ -383,6 +403,19 @@ msgstr "注意 - データ損失の可能性"
msgid "Celsius (°C)" msgid "Celsius (°C)"
msgstr "摂氏 (°C)" msgstr "摂氏 (°C)"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Certificate"
msgstr ""
#: src/components/network-monitors-table/network-monitors-table.tsx
msgid "Certificate expired {expires}"
msgstr ""
#: src/components/network-monitors-table/network-monitors-table.tsx
msgid "Certificate expires {expires}"
msgstr ""
#: src/components/routes/settings/general.tsx #: src/components/routes/settings/general.tsx
msgid "Change display units for metrics." msgid "Change display units for metrics."
msgstr "メトリックの表示単位を変更します。" msgstr "メトリックの表示単位を変更します。"
@@ -776,12 +809,15 @@ msgstr "期間"
msgid "Edit" msgid "Edit"
msgstr "編集" msgstr "編集"
#: src/components/add-system.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/routes/settings/quiet-hours.tsx #: src/components/routes/settings/quiet-hours.tsx
msgid "Edit {foo}" msgid "Edit {foo}"
msgstr "{foo}を編集" msgstr "{foo}を編集"
#: src/components/add-system.tsx
msgid "Edit System"
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
@@ -867,6 +903,10 @@ msgstr "<0>config.yml</0>に定義されていない既存のシステムは削
msgid "Exited active" msgid "Exited active"
msgstr "アクティブ状態で終了" msgstr "アクティブ状態で終了"
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Expired"
msgstr ""
#: src/components/routes/settings/tokens-fingerprints.tsx #: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Expires after one hour or on hub restart." msgid "Expires after one hour or on hub restart."
msgstr "1時間後、またはハブの再起動時に有効期限が切れます。" msgstr "1時間後、またはハブの再起動時に有効期限が切れます。"
@@ -887,10 +927,6 @@ 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 #: src/components/routes/system/smart-table.tsx
msgid "Failed Attributes:" msgid "Failed Attributes:"
msgstr "失敗した属性:" msgstr "失敗した属性:"
@@ -1090,6 +1126,7 @@ msgstr "イメージの更新があります"
msgid "Inactive" msgid "Inactive"
msgstr "非アクティブ" msgstr "非アクティブ"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/routes/settings/heartbeat.tsx #: src/components/routes/settings/heartbeat.tsx
msgid "Interval" msgid "Interval"
@@ -1182,6 +1219,7 @@ msgctxt "Packet loss"
msgid "Loss" msgid "Loss"
msgstr "パケットロス" msgstr "パケットロス"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Loss 1h" msgid "Loss 1h"
msgstr "1時間のパケットロス" msgstr "1時間のパケットロス"
@@ -1204,6 +1242,7 @@ msgstr "手動セットアップの手順"
msgid "Max 1 min" msgid "Max 1 min"
msgstr "最大1分" msgstr "最大1分"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Max 1h" msgid "Max 1h"
msgstr "1時間最大" msgstr "1時間最大"
@@ -1234,6 +1273,7 @@ msgstr "メモリ使用率"
msgid "Memory usage of containers" msgid "Memory usage of containers"
msgstr "コンテナのメモリ使用量" msgstr "コンテナのメモリ使用量"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Min 1h" msgid "Min 1h"
msgstr "1時間最小" msgstr "1時間最小"
@@ -1565,6 +1605,7 @@ msgstr "プロセス開始"
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Protocol" msgid "Protocol"
msgstr "プロトコル" msgstr "プロトコル"
@@ -1653,6 +1694,7 @@ msgstr "パスワードをリセット"
msgid "Resolved" msgid "Resolved"
msgstr "解決済み" msgstr "解決済み"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/routes/system/charts/monitors-charts.tsx #: src/components/routes/system/charts/monitors-charts.tsx
msgid "Response" msgid "Response"
@@ -1698,7 +1740,6 @@ msgstr "S.M.A.R.T.詳細"
msgid "S.M.A.R.T. Self-Test" msgid "S.M.A.R.T. Self-Test"
msgstr "S.M.A.R.T.セルフテスト" msgstr "S.M.A.R.T.セルフテスト"
#: src/components/add-system.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
msgid "Save {foo}" msgid "Save {foo}"
msgstr "{foo} を保存" msgstr "{foo} を保存"
@@ -1712,6 +1753,10 @@ msgstr "Enterキーまたはカンマを使用してアドレスを保存しま
msgid "Save Settings" msgid "Save Settings"
msgstr "設定を保存" msgstr "設定を保存"
#: src/components/add-system.tsx
msgid "Save System"
msgstr "システム を保存"
#: src/components/routes/settings/tokens-fingerprints.tsx #: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Saved in the database and does not expire until you disable it." msgid "Saved in the database and does not expire until you disable it."
msgstr "データベースに保存され、無効にするまで有効期限が切れません。" msgstr "データベースに保存され、無効にするまで有効期限が切れません。"
@@ -1833,6 +1878,7 @@ msgstr "サインイン"
msgid "SMTP settings" msgid "SMTP settings"
msgstr "SMTP設定" msgstr "SMTP設定"
#: src/components/network-monitors-table/network-monitors-table.tsx
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "Sort By" msgid "Sort By"
msgstr "並び替え基準" msgstr "並び替え基準"
@@ -1875,12 +1921,11 @@ msgstr "スワップ使用量"
msgid "Switch theme" msgid "Switch theme"
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/containers-table/containers-table-columns.tsx
#: src/components/navbar.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-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/quiet-hours.tsx #: src/components/routes/settings/quiet-hours.tsx
@@ -1925,9 +1970,15 @@ msgstr "タブ"
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Target" msgid "Target"
msgstr "対象" msgstr "対象"
#: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx
msgid "target[,protocol[,port[,interval]]]"
msgstr ""
#: src/components/systemd-table/systemd-table.tsx #: src/components/systemd-table/systemd-table.tsx
msgid "Tasks" msgid "Tasks"
msgstr "タスク" msgstr "タスク"
@@ -2104,7 +2155,7 @@ msgstr "1時間のパケットロス率がしきい値を超えるとトリガ
#: src/lib/alerts.ts #: src/lib/alerts.ts
msgid "Triggers when status switches between up and down" msgid "Triggers when status switches between up and down"
msgstr "ステータスが上から下に切り替わるときにトリガーされます" msgstr "ステータスが稼働中と停止中の間で切り替わったときにトリガーされます"
#: src/lib/alerts.ts #: src/lib/alerts.ts
msgid "Triggers when usage of any disk exceeds a threshold" msgid "Triggers when usage of any disk exceeds a threshold"
@@ -2162,6 +2213,7 @@ msgstr "更新"
#: src/components/containers-table/containers-table-columns.tsx #: src/components/containers-table/containers-table-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/routes/system/smart-table.tsx #: src/components/routes/system/smart-table.tsx
#: src/components/routes/system/storage-pools-table.tsx #: src/components/routes/system/storage-pools-table.tsx
#: src/components/systemd-table/systemd-table-columns.tsx #: src/components/systemd-table/systemd-table-columns.tsx
@@ -2217,6 +2269,7 @@ msgstr "利用率"
msgid "Value" msgid "Value"
msgstr "値" msgstr "値"
#: src/components/network-monitors-table/network-monitors-table.tsx
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "View" msgid "View"
msgstr "表示" msgstr "表示"
@@ -2231,6 +2284,7 @@ msgstr "もっと見る"
msgid "View your 200 most recent alerts." msgid "View your 200 most recent alerts."
msgstr "直近200件のアラートを表示します。" msgstr "直近200件のアラートを表示します。"
#: src/components/network-monitors-table/network-monitors-table.tsx
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "Visible Fields" msgid "Visible Fields"
msgstr "表示列" msgstr "表示列"
@@ -2305,3 +2359,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 "ユーザー設定が更新されました。" msgstr "ユーザー設定が更新されました。"
+68 -13
View File
@@ -8,7 +8,7 @@ msgstr ""
"Language: ko\n" "Language: ko\n"
"Project-Id-Version: beszel\n" "Project-Id-Version: beszel\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-09-18 19:21\n" "PO-Revision-Date: 2026-09-24 17:29\n"
"Last-Translator: \n" "Last-Translator: \n"
"Language-Team: Korean\n" "Language-Team: Korean\n"
"Plural-Forms: nplurals=1; plural=0;\n" "Plural-Forms: nplurals=1; plural=0;\n"
@@ -52,14 +52,26 @@ msgstr "{count, plural, one {{countString} 시간} other {{countString} 시간}}
msgid "{count, plural, one {{countString} minute} few {{countString} minutes} many {{countString} minutes} other {{countString} minutes}}" 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} 분}}" msgstr "{count, plural, one {{countString} 분} few {{countString} 분} many {{countString} 분} other {{countString} 분}}"
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "{daysLeft, plural, one {# day} other {# days}}"
msgstr ""
#: src/components/routes/system/charts/disk-charts.tsx #: src/components/routes/system/charts/disk-charts.tsx
msgid "{diskName} I/O" msgid "{diskName} I/O"
msgstr "{diskName} I/O" msgstr "{diskName} I/O"
#: src/components/systems-table/systems-table-columns.tsx
msgid "{numFailed, plural, one {# failed service} other {# failed services}}"
msgstr ""
#: src/components/routes/system/info-bar.tsx #: src/components/routes/system/info-bar.tsx
msgid "{threads, plural, one {# thread} other {# threads}}" msgid "{threads, plural, one {# thread} other {# threads}}"
msgstr "{threads, plural, one {# 스레드} other {# 스레드}}" msgstr "{threads, plural, one {# 스레드} other {# 스레드}}"
#: src/components/systems-table/systems-table-columns.tsx
msgid "{totalCount, plural, one {# service} other {# services}}"
msgstr ""
#: src/lib/utils.ts #: src/lib/utils.ts
msgid "1 hour" msgid "1 hour"
msgstr "1시간" msgstr "1시간"
@@ -123,10 +135,10 @@ msgstr "활성화된 알림들"
msgid "Active state" msgid "Active state"
msgstr "활성 상태" msgstr "활성 상태"
#: src/components/add-system.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/add-system.tsx msgid "Add"
#: src/components/navbar.tsx msgstr ""
#: src/components/navbar.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
@@ -136,6 +148,13 @@ msgstr "활성 상태"
msgid "Add {foo}" msgid "Add {foo}"
msgstr "{foo} 추가" msgstr "{foo} 추가"
#: src/components/add-system.tsx
#: src/components/add-system.tsx
#: src/components/navbar.tsx
#: src/components/navbar.tsx
msgid "Add System"
msgstr "시스템 추가"
#: src/components/routes/settings/notifications.tsx #: src/components/routes/settings/notifications.tsx
msgid "Add URL" msgid "Add URL"
msgstr "URL 추가" msgstr "URL 추가"
@@ -260,6 +279,7 @@ msgstr "GPU 엔진 평균 사용량"
msgid "Average, minimum, and maximum response time" msgid "Average, minimum, and maximum response time"
msgstr "평균, 최소 및 최대 응답 시간" msgstr "평균, 최소 및 최대 응답 시간"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Avg 1h" msgid "Avg 1h"
msgstr "1시간 평균" msgstr "1시간 평균"
@@ -383,6 +403,19 @@ msgstr "주의 - 데이터 손실 가능성"
msgid "Celsius (°C)" msgid "Celsius (°C)"
msgstr "섭씨 (°C)" msgstr "섭씨 (°C)"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Certificate"
msgstr ""
#: src/components/network-monitors-table/network-monitors-table.tsx
msgid "Certificate expired {expires}"
msgstr ""
#: src/components/network-monitors-table/network-monitors-table.tsx
msgid "Certificate expires {expires}"
msgstr ""
#: src/components/routes/settings/general.tsx #: src/components/routes/settings/general.tsx
msgid "Change display units for metrics." msgid "Change display units for metrics."
msgstr "메트릭의 표시 단위를 변경합니다." msgstr "메트릭의 표시 단위를 변경합니다."
@@ -776,12 +809,15 @@ msgstr "기간"
msgid "Edit" msgid "Edit"
msgstr "수정" msgstr "수정"
#: src/components/add-system.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/routes/settings/quiet-hours.tsx #: src/components/routes/settings/quiet-hours.tsx
msgid "Edit {foo}" msgid "Edit {foo}"
msgstr "{foo} 수정" msgstr "{foo} 수정"
#: src/components/add-system.tsx
msgid "Edit System"
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
@@ -867,6 +903,10 @@ msgstr "<0>config.yml</0>에 정의되지 않은 기존 시스템은 삭제됩
msgid "Exited active" msgid "Exited active"
msgstr "활성 종료됨" msgstr "활성 종료됨"
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Expired"
msgstr ""
#: src/components/routes/settings/tokens-fingerprints.tsx #: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Expires after one hour or on hub restart." msgid "Expires after one hour or on hub restart."
msgstr "한 시간 후 또는 허브 재시작 시 만료됩니다." msgstr "한 시간 후 또는 허브 재시작 시 만료됩니다."
@@ -887,10 +927,6 @@ 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 #: src/components/routes/system/smart-table.tsx
msgid "Failed Attributes:" msgid "Failed Attributes:"
msgstr "실패한 속성:" msgstr "실패한 속성:"
@@ -1090,6 +1126,7 @@ msgstr "이미지 업데이트 사용 가능"
msgid "Inactive" msgid "Inactive"
msgstr "비활성" msgstr "비활성"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/routes/settings/heartbeat.tsx #: src/components/routes/settings/heartbeat.tsx
msgid "Interval" msgid "Interval"
@@ -1182,6 +1219,7 @@ msgctxt "Packet loss"
msgid "Loss" msgid "Loss"
msgstr "패킷 손실" msgstr "패킷 손실"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Loss 1h" msgid "Loss 1h"
msgstr "1시간 패킷 손실" msgstr "1시간 패킷 손실"
@@ -1204,6 +1242,7 @@ msgstr "수동 설정 방법"
msgid "Max 1 min" msgid "Max 1 min"
msgstr "1분간 최댓값" msgstr "1분간 최댓값"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Max 1h" msgid "Max 1h"
msgstr "1시간 최대" msgstr "1시간 최대"
@@ -1234,6 +1273,7 @@ msgstr "메모리 사용량"
msgid "Memory usage of containers" msgid "Memory usage of containers"
msgstr "컨테이너 메모리 사용량" msgstr "컨테이너 메모리 사용량"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Min 1h" msgid "Min 1h"
msgstr "1시간 최소" msgstr "1시간 최소"
@@ -1565,6 +1605,7 @@ msgstr "프로세스 시작됨"
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Protocol" msgid "Protocol"
msgstr "프로토콜" msgstr "프로토콜"
@@ -1653,6 +1694,7 @@ msgstr "비밀번호 재설정"
msgid "Resolved" msgid "Resolved"
msgstr "해결됨" msgstr "해결됨"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/routes/system/charts/monitors-charts.tsx #: src/components/routes/system/charts/monitors-charts.tsx
msgid "Response" msgid "Response"
@@ -1698,7 +1740,6 @@ msgstr "S.M.A.R.T. 세부 정보"
msgid "S.M.A.R.T. Self-Test" msgid "S.M.A.R.T. Self-Test"
msgstr "S.M.A.R.T. 자체 테스트" msgstr "S.M.A.R.T. 자체 테스트"
#: src/components/add-system.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
msgid "Save {foo}" msgid "Save {foo}"
msgstr "{foo} 저장" msgstr "{foo} 저장"
@@ -1712,6 +1753,10 @@ msgstr "Enter 키 또는 쉼표를 사용하여 주소를 저장하세요. 이
msgid "Save Settings" msgid "Save Settings"
msgstr "설정 저장" msgstr "설정 저장"
#: src/components/add-system.tsx
msgid "Save System"
msgstr "시스템 저장"
#: src/components/routes/settings/tokens-fingerprints.tsx #: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Saved in the database and does not expire until you disable it." msgid "Saved in the database and does not expire until you disable it."
msgstr "데이터베이스에 저장되며 비활성화할 때까지 만료되지 않습니다." msgstr "데이터베이스에 저장되며 비활성화할 때까지 만료되지 않습니다."
@@ -1833,6 +1878,7 @@ msgstr "로그인"
msgid "SMTP settings" msgid "SMTP settings"
msgstr "SMTP 설정" msgstr "SMTP 설정"
#: src/components/network-monitors-table/network-monitors-table.tsx
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "Sort By" msgid "Sort By"
msgstr "정렬 기준" msgstr "정렬 기준"
@@ -1875,12 +1921,11 @@ msgstr "스왑 사용량"
msgid "Switch theme" msgid "Switch theme"
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/containers-table/containers-table-columns.tsx
#: src/components/navbar.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-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/quiet-hours.tsx #: src/components/routes/settings/quiet-hours.tsx
@@ -1925,9 +1970,15 @@ msgstr "탭"
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Target" msgid "Target"
msgstr "대상" msgstr "대상"
#: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx
msgid "target[,protocol[,port[,interval]]]"
msgstr ""
#: src/components/systemd-table/systemd-table.tsx #: src/components/systemd-table/systemd-table.tsx
msgid "Tasks" msgid "Tasks"
msgstr "작업" msgstr "작업"
@@ -2162,6 +2213,7 @@ msgstr "업데이트"
#: src/components/containers-table/containers-table-columns.tsx #: src/components/containers-table/containers-table-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/routes/system/smart-table.tsx #: src/components/routes/system/smart-table.tsx
#: src/components/routes/system/storage-pools-table.tsx #: src/components/routes/system/storage-pools-table.tsx
#: src/components/systemd-table/systemd-table-columns.tsx #: src/components/systemd-table/systemd-table-columns.tsx
@@ -2217,6 +2269,7 @@ msgstr "사용률"
msgid "Value" msgid "Value"
msgstr "값" msgstr "값"
#: src/components/network-monitors-table/network-monitors-table.tsx
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "View" msgid "View"
msgstr "보기" msgstr "보기"
@@ -2231,6 +2284,7 @@ msgstr "더 보기"
msgid "View your 200 most recent alerts." msgid "View your 200 most recent alerts."
msgstr "최근 200개의 알림을 봅니다." msgstr "최근 200개의 알림을 봅니다."
#: src/components/network-monitors-table/network-monitors-table.tsx
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "Visible Fields" msgid "Visible Fields"
msgstr "표시할 열" msgstr "표시할 열"
@@ -2305,3 +2359,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 "사용자 설정이 업데이트되었습니다." msgstr "사용자 설정이 업데이트되었습니다."
+68 -13
View File
@@ -8,7 +8,7 @@ msgstr ""
"Language: nl\n" "Language: nl\n"
"Project-Id-Version: beszel\n" "Project-Id-Version: beszel\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-09-18 19:21\n" "PO-Revision-Date: 2026-09-24 17:29\n"
"Last-Translator: \n" "Last-Translator: \n"
"Language-Team: Dutch\n" "Language-Team: Dutch\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -52,14 +52,26 @@ msgstr "{count, plural, one {{countString} uur} other {{countString} uren}}"
msgid "{count, plural, one {{countString} minute} few {{countString} minutes} many {{countString} minutes} other {{countString} minutes}}" msgid "{count, plural, one {{countString} minute} few {{countString} minutes} many {{countString} minutes} other {{countString} minutes}}"
msgstr "{count, plural, one {{countString} minuut} other {{countString} minuten}}" msgstr "{count, plural, one {{countString} minuut} other {{countString} minuten}}"
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "{daysLeft, plural, one {# day} other {# days}}"
msgstr ""
#: src/components/routes/system/charts/disk-charts.tsx #: src/components/routes/system/charts/disk-charts.tsx
msgid "{diskName} I/O" msgid "{diskName} I/O"
msgstr "I/O van {diskName}" msgstr "I/O van {diskName}"
#: src/components/systems-table/systems-table-columns.tsx
msgid "{numFailed, plural, one {# failed service} other {# failed services}}"
msgstr ""
#: src/components/routes/system/info-bar.tsx #: src/components/routes/system/info-bar.tsx
msgid "{threads, plural, one {# thread} other {# threads}}" msgid "{threads, plural, one {# thread} other {# threads}}"
msgstr "{threads, plural, one {# thread} other {# threads}}" msgstr "{threads, plural, one {# thread} other {# threads}}"
#: src/components/systems-table/systems-table-columns.tsx
msgid "{totalCount, plural, one {# service} other {# services}}"
msgstr ""
#: src/lib/utils.ts #: src/lib/utils.ts
msgid "1 hour" msgid "1 hour"
msgstr "1 uur" msgstr "1 uur"
@@ -123,10 +135,10 @@ msgstr "Actieve waarschuwingen"
msgid "Active state" msgid "Active state"
msgstr "Actieve status" msgstr "Actieve status"
#: src/components/add-system.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/add-system.tsx msgid "Add"
#: src/components/navbar.tsx msgstr ""
#: src/components/navbar.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
@@ -136,6 +148,13 @@ msgstr "Actieve status"
msgid "Add {foo}" msgid "Add {foo}"
msgstr "Voeg {foo} toe" msgstr "Voeg {foo} toe"
#: src/components/add-system.tsx
#: src/components/add-system.tsx
#: src/components/navbar.tsx
#: src/components/navbar.tsx
msgid "Add System"
msgstr "Voeg Systeem toe"
#: src/components/routes/settings/notifications.tsx #: src/components/routes/settings/notifications.tsx
msgid "Add URL" msgid "Add URL"
msgstr "Voeg URL toe" msgstr "Voeg URL toe"
@@ -260,6 +279,7 @@ msgstr "Gemiddeld gebruik van GPU-engines"
msgid "Average, minimum, and maximum response time" msgid "Average, minimum, and maximum response time"
msgstr "Gemiddelde, minimale en maximale reactietijd" msgstr "Gemiddelde, minimale en maximale reactietijd"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Avg 1h" msgid "Avg 1h"
msgstr "Gem. 1 u" msgstr "Gem. 1 u"
@@ -383,6 +403,19 @@ msgstr "Opgelet - potentieel gegevensverlies"
msgid "Celsius (°C)" msgid "Celsius (°C)"
msgstr "Celsius (°C)" msgstr "Celsius (°C)"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Certificate"
msgstr ""
#: src/components/network-monitors-table/network-monitors-table.tsx
msgid "Certificate expired {expires}"
msgstr ""
#: src/components/network-monitors-table/network-monitors-table.tsx
msgid "Certificate expires {expires}"
msgstr ""
#: src/components/routes/settings/general.tsx #: src/components/routes/settings/general.tsx
msgid "Change display units for metrics." msgid "Change display units for metrics."
msgstr "Verander statistiek eenheden." msgstr "Verander statistiek eenheden."
@@ -776,12 +809,15 @@ msgstr "Duur"
msgid "Edit" msgid "Edit"
msgstr "Bewerken" msgstr "Bewerken"
#: src/components/add-system.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/routes/settings/quiet-hours.tsx #: src/components/routes/settings/quiet-hours.tsx
msgid "Edit {foo}" msgid "Edit {foo}"
msgstr "Bewerk {foo}" msgstr "Bewerk {foo}"
#: src/components/add-system.tsx
msgid "Edit System"
msgstr "Bewerk Systeem"
#: 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
@@ -867,6 +903,10 @@ msgstr "Bestaande systemen die niet gedefinieerd zijn in <0>config.yml</0> zulle
msgid "Exited active" msgid "Exited active"
msgstr "Beëindigd actief" msgstr "Beëindigd actief"
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Expired"
msgstr ""
#: src/components/routes/settings/tokens-fingerprints.tsx #: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Expires after one hour or on hub restart." msgid "Expires after one hour or on hub restart."
msgstr "Verloopt na één uur of bij hub-herstart." msgstr "Verloopt na één uur of bij hub-herstart."
@@ -887,10 +927,6 @@ msgstr "Exporteer je huidige systeemconfiguratie."
msgid "Fahrenheit (°F)" msgid "Fahrenheit (°F)"
msgstr "Fahrenheit (°F)" msgstr "Fahrenheit (°F)"
#: src/components/systems-table/systems-table-columns.tsx
msgid "Failed"
msgstr "Mislukt"
#: src/components/routes/system/smart-table.tsx #: src/components/routes/system/smart-table.tsx
msgid "Failed Attributes:" msgid "Failed Attributes:"
msgstr "Mislukte kenmerken:" msgstr "Mislukte kenmerken:"
@@ -1090,6 +1126,7 @@ msgstr "Image-update beschikbaar"
msgid "Inactive" msgid "Inactive"
msgstr "Inactief" msgstr "Inactief"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/routes/settings/heartbeat.tsx #: src/components/routes/settings/heartbeat.tsx
msgid "Interval" msgid "Interval"
@@ -1182,6 +1219,7 @@ msgctxt "Packet loss"
msgid "Loss" msgid "Loss"
msgstr "Verlies" msgstr "Verlies"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Loss 1h" msgid "Loss 1h"
msgstr "Verlies 1 h" msgstr "Verlies 1 h"
@@ -1204,6 +1242,7 @@ msgstr "Handmatige installatie-instructies"
msgid "Max 1 min" msgid "Max 1 min"
msgstr "Max 1 min" msgstr "Max 1 min"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Max 1h" msgid "Max 1h"
msgstr "Max. 1 u" msgstr "Max. 1 u"
@@ -1234,6 +1273,7 @@ msgstr "Geheugengebruik"
msgid "Memory usage of containers" msgid "Memory usage of containers"
msgstr "Geheugengebruik van containers" msgstr "Geheugengebruik van containers"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Min 1h" msgid "Min 1h"
msgstr "Min. 1 u" msgstr "Min. 1 u"
@@ -1565,6 +1605,7 @@ msgstr "Proces gestart"
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Protocol" msgid "Protocol"
msgstr "Protocol" msgstr "Protocol"
@@ -1653,6 +1694,7 @@ msgstr "Wachtwoord resetten"
msgid "Resolved" msgid "Resolved"
msgstr "Opgelost" msgstr "Opgelost"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/routes/system/charts/monitors-charts.tsx #: src/components/routes/system/charts/monitors-charts.tsx
msgid "Response" msgid "Response"
@@ -1698,7 +1740,6 @@ msgstr "S.M.A.R.T.-details"
msgid "S.M.A.R.T. Self-Test" msgid "S.M.A.R.T. Self-Test"
msgstr "S.M.A.R.T. Zelf-test" msgstr "S.M.A.R.T. Zelf-test"
#: src/components/add-system.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
msgid "Save {foo}" msgid "Save {foo}"
msgstr "{foo} opslaan" msgstr "{foo} opslaan"
@@ -1712,6 +1753,10 @@ msgstr "Bewaar het adres met de enter-toets of komma. Laat leeg om e-mailmelding
msgid "Save Settings" msgid "Save Settings"
msgstr "Instellingen opslaan" msgstr "Instellingen opslaan"
#: src/components/add-system.tsx
msgid "Save System"
msgstr "Systeem opslaan"
#: src/components/routes/settings/tokens-fingerprints.tsx #: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Saved in the database and does not expire until you disable it." msgid "Saved in the database and does not expire until you disable it."
msgstr "Opgeslagen in de database en verloopt niet totdat u het uitschakelt." msgstr "Opgeslagen in de database en verloopt niet totdat u het uitschakelt."
@@ -1833,6 +1878,7 @@ msgstr "Aanmelden"
msgid "SMTP settings" msgid "SMTP settings"
msgstr "SMTP-instellingen" msgstr "SMTP-instellingen"
#: src/components/network-monitors-table/network-monitors-table.tsx
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "Sort By" msgid "Sort By"
msgstr "Sorteren op" msgstr "Sorteren op"
@@ -1875,12 +1921,11 @@ msgstr "Swap gebruik"
msgid "Switch theme" msgid "Switch theme"
msgstr "Wissel thema" msgstr "Wissel thema"
#: 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/containers-table/containers-table-columns.tsx
#: src/components/navbar.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-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/quiet-hours.tsx #: src/components/routes/settings/quiet-hours.tsx
@@ -1925,9 +1970,15 @@ msgstr "Tabbladen"
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Target" msgid "Target"
msgstr "Doel" msgstr "Doel"
#: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx
msgid "target[,protocol[,port[,interval]]]"
msgstr ""
#: src/components/systemd-table/systemd-table.tsx #: src/components/systemd-table/systemd-table.tsx
msgid "Tasks" msgid "Tasks"
msgstr "Taken" msgstr "Taken"
@@ -2162,6 +2213,7 @@ msgstr "Bijwerken"
#: src/components/containers-table/containers-table-columns.tsx #: src/components/containers-table/containers-table-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/routes/system/smart-table.tsx #: src/components/routes/system/smart-table.tsx
#: src/components/routes/system/storage-pools-table.tsx #: src/components/routes/system/storage-pools-table.tsx
#: src/components/systemd-table/systemd-table-columns.tsx #: src/components/systemd-table/systemd-table-columns.tsx
@@ -2217,6 +2269,7 @@ msgstr "Gebruik"
msgid "Value" msgid "Value"
msgstr "Waarde" msgstr "Waarde"
#: src/components/network-monitors-table/network-monitors-table.tsx
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "View" msgid "View"
msgstr "Weergave" msgstr "Weergave"
@@ -2231,6 +2284,7 @@ msgstr "Meer weergeven"
msgid "View your 200 most recent alerts." msgid "View your 200 most recent alerts."
msgstr "Bekijk je 200 meest recente meldingen." msgstr "Bekijk je 200 meest recente meldingen."
#: src/components/network-monitors-table/network-monitors-table.tsx
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "Visible Fields" msgid "Visible Fields"
msgstr "Zichtbare kolommen" msgstr "Zichtbare kolommen"
@@ -2305,3 +2359,4 @@ msgstr "Ja"
#: 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 "Je gebruikersinstellingen zijn bijgewerkt." msgstr "Je gebruikersinstellingen zijn bijgewerkt."
+68 -13
View File
@@ -8,7 +8,7 @@ msgstr ""
"Language: no\n" "Language: no\n"
"Project-Id-Version: beszel\n" "Project-Id-Version: beszel\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-09-18 19:21\n" "PO-Revision-Date: 2026-09-24 18:40\n"
"Last-Translator: \n" "Last-Translator: \n"
"Language-Team: Norwegian\n" "Language-Team: Norwegian\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -52,14 +52,26 @@ msgstr "{count, plural, one {{countString} time} other {{countString} timer}}"
msgid "{count, plural, one {{countString} minute} few {{countString} minutes} many {{countString} minutes} other {{countString} minutes}}" msgid "{count, plural, one {{countString} minute} few {{countString} minutes} many {{countString} minutes} other {{countString} minutes}}"
msgstr "{count, plural, one {{countString} minutt} other {{countString} minutter}}" msgstr "{count, plural, one {{countString} minutt} other {{countString} minutter}}"
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "{daysLeft, plural, one {# day} other {# days}}"
msgstr "{daysLeft, plural, one {# dag} other {# dager}}"
#: src/components/routes/system/charts/disk-charts.tsx #: src/components/routes/system/charts/disk-charts.tsx
msgid "{diskName} I/O" msgid "{diskName} I/O"
msgstr "I/O for {diskName}" msgstr "I/O for {diskName}"
#: src/components/systems-table/systems-table-columns.tsx
msgid "{numFailed, plural, one {# failed service} other {# failed services}}"
msgstr "{numFailed, plural, one {# feilet tjeneste} other {# feilede tjenester}}"
#: src/components/routes/system/info-bar.tsx #: src/components/routes/system/info-bar.tsx
msgid "{threads, plural, one {# thread} other {# threads}}" msgid "{threads, plural, one {# thread} other {# threads}}"
msgstr "{threads, plural, one {# tråd} other {# tråder}}" msgstr "{threads, plural, one {# tråd} other {# tråder}}"
#: src/components/systems-table/systems-table-columns.tsx
msgid "{totalCount, plural, one {# service} other {# services}}"
msgstr "{totalCount, plural, one {# tjeneste} other {# tjenester}}"
#: src/lib/utils.ts #: src/lib/utils.ts
msgid "1 hour" msgid "1 hour"
msgstr "1 time" msgstr "1 time"
@@ -123,10 +135,10 @@ msgstr "Aktive Alarmer"
msgid "Active state" msgid "Active state"
msgstr "Aktiv tilstand" msgstr "Aktiv tilstand"
#: src/components/add-system.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/add-system.tsx msgid "Add"
#: src/components/navbar.tsx msgstr "Legg til"
#: src/components/navbar.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
@@ -136,6 +148,13 @@ msgstr "Aktiv tilstand"
msgid "Add {foo}" msgid "Add {foo}"
msgstr "Legg til {foo}" msgstr "Legg til {foo}"
#: src/components/add-system.tsx
#: src/components/add-system.tsx
#: src/components/navbar.tsx
#: src/components/navbar.tsx
msgid "Add System"
msgstr "Legg til System"
#: src/components/routes/settings/notifications.tsx #: src/components/routes/settings/notifications.tsx
msgid "Add URL" msgid "Add URL"
msgstr "Legg Til URL" msgstr "Legg Til URL"
@@ -260,6 +279,7 @@ msgstr "Gjennomsnittlig utnyttelse av GPU-motorer"
msgid "Average, minimum, and maximum response time" msgid "Average, minimum, and maximum response time"
msgstr "Gjennomsnittlig, minste og høyeste svartid" msgstr "Gjennomsnittlig, minste og høyeste svartid"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Avg 1h" msgid "Avg 1h"
msgstr "Gj.sn. 1 t" msgstr "Gj.sn. 1 t"
@@ -383,6 +403,19 @@ msgstr "Advarsel - potensielt tap av data"
msgid "Celsius (°C)" msgid "Celsius (°C)"
msgstr "Celsius (°C)" msgstr "Celsius (°C)"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Certificate"
msgstr "Sertifikat"
#: src/components/network-monitors-table/network-monitors-table.tsx
msgid "Certificate expired {expires}"
msgstr "Sertifikatet utløper {expires}"
#: src/components/network-monitors-table/network-monitors-table.tsx
msgid "Certificate expires {expires}"
msgstr "Sertifikatet utløper {expires}"
#: src/components/routes/settings/general.tsx #: src/components/routes/settings/general.tsx
msgid "Change display units for metrics." msgid "Change display units for metrics."
msgstr "Endre måleenheter for målinger." msgstr "Endre måleenheter for målinger."
@@ -776,12 +809,15 @@ msgstr "Varighet"
msgid "Edit" msgid "Edit"
msgstr "Rediger" msgstr "Rediger"
#: src/components/add-system.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/routes/settings/quiet-hours.tsx #: src/components/routes/settings/quiet-hours.tsx
msgid "Edit {foo}" msgid "Edit {foo}"
msgstr "Rediger {foo}" msgstr "Rediger {foo}"
#: src/components/add-system.tsx
msgid "Edit System"
msgstr "Rediger System"
#: 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
@@ -867,6 +903,10 @@ msgstr "Eksisterende systemer som ikke er er definert i <0>config.yml</0> vil bl
msgid "Exited active" msgid "Exited active"
msgstr "Avsluttet aktiv" msgstr "Avsluttet aktiv"
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Expired"
msgstr "Utløpt"
#: src/components/routes/settings/tokens-fingerprints.tsx #: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Expires after one hour or on hub restart." msgid "Expires after one hour or on hub restart."
msgstr "Utløper etter en time eller ved hub-omstart." msgstr "Utløper etter en time eller ved hub-omstart."
@@ -887,10 +927,6 @@ msgstr "Eksporter din nåværende systemkonfigurasjon"
msgid "Fahrenheit (°F)" msgid "Fahrenheit (°F)"
msgstr "Fahrenheit (°F)" msgstr "Fahrenheit (°F)"
#: src/components/systems-table/systems-table-columns.tsx
msgid "Failed"
msgstr "Mislyktes"
#: src/components/routes/system/smart-table.tsx #: src/components/routes/system/smart-table.tsx
msgid "Failed Attributes:" msgid "Failed Attributes:"
msgstr "Mislykkede attributter:" msgstr "Mislykkede attributter:"
@@ -1090,6 +1126,7 @@ msgstr "Bildeoppdatering tilgjengelig"
msgid "Inactive" msgid "Inactive"
msgstr "Inaktiv" msgstr "Inaktiv"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/routes/settings/heartbeat.tsx #: src/components/routes/settings/heartbeat.tsx
msgid "Interval" msgid "Interval"
@@ -1182,6 +1219,7 @@ msgctxt "Packet loss"
msgid "Loss" msgid "Loss"
msgstr "Tap" msgstr "Tap"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Loss 1h" msgid "Loss 1h"
msgstr "Tap 1 h" msgstr "Tap 1 h"
@@ -1204,6 +1242,7 @@ msgstr "Instruks for Manuell Installasjon"
msgid "Max 1 min" msgid "Max 1 min"
msgstr "Maks 1 min" msgstr "Maks 1 min"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Max 1h" msgid "Max 1h"
msgstr "Maks. 1 t" msgstr "Maks. 1 t"
@@ -1234,6 +1273,7 @@ msgstr "Minnebruk"
msgid "Memory usage of containers" msgid "Memory usage of containers"
msgstr "Minnebruk for containere" msgstr "Minnebruk for containere"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Min 1h" msgid "Min 1h"
msgstr "Min. 1 t" msgstr "Min. 1 t"
@@ -1565,6 +1605,7 @@ msgstr "Prosess startet"
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Protocol" msgid "Protocol"
msgstr "Protokoll" msgstr "Protokoll"
@@ -1653,6 +1694,7 @@ msgstr "Nullstill Passord"
msgid "Resolved" msgid "Resolved"
msgstr "Løst" msgstr "Løst"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/routes/system/charts/monitors-charts.tsx #: src/components/routes/system/charts/monitors-charts.tsx
msgid "Response" msgid "Response"
@@ -1698,7 +1740,6 @@ msgstr "S.M.A.R.T.-detaljer"
msgid "S.M.A.R.T. Self-Test" msgid "S.M.A.R.T. Self-Test"
msgstr "S.M.A.R.T. selvtest" msgstr "S.M.A.R.T. selvtest"
#: src/components/add-system.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
msgid "Save {foo}" msgid "Save {foo}"
msgstr "Lagre {foo}" msgstr "Lagre {foo}"
@@ -1712,6 +1753,10 @@ msgstr "Lagre adressen med Enter-tasten eller komma. La feltet være tomt for å
msgid "Save Settings" msgid "Save Settings"
msgstr "Lagre Innstillinger" msgstr "Lagre Innstillinger"
#: src/components/add-system.tsx
msgid "Save System"
msgstr "Lagre System"
#: src/components/routes/settings/tokens-fingerprints.tsx #: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Saved in the database and does not expire until you disable it." msgid "Saved in the database and does not expire until you disable it."
msgstr "Lagret i databasen og utløper ikke før du deaktiverer det." msgstr "Lagret i databasen og utløper ikke før du deaktiverer det."
@@ -1833,6 +1878,7 @@ msgstr "Logg inn"
msgid "SMTP settings" msgid "SMTP settings"
msgstr "SMTP-innstillinger" msgstr "SMTP-innstillinger"
#: src/components/network-monitors-table/network-monitors-table.tsx
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "Sort By" msgid "Sort By"
msgstr "Sorter Etter" msgstr "Sorter Etter"
@@ -1875,12 +1921,11 @@ msgstr "Swap-bruk"
msgid "Switch theme" msgid "Switch theme"
msgstr "Bytt tema" msgstr "Bytt tema"
#: 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/containers-table/containers-table-columns.tsx
#: src/components/navbar.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-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/quiet-hours.tsx #: src/components/routes/settings/quiet-hours.tsx
@@ -1925,9 +1970,15 @@ msgstr "Faner"
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Target" msgid "Target"
msgstr "Mål" msgstr "Mål"
#: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx
msgid "target[,protocol[,port[,interval]]]"
msgstr "mål [,protokoll[,port[,interval]]"
#: src/components/systemd-table/systemd-table.tsx #: src/components/systemd-table/systemd-table.tsx
msgid "Tasks" msgid "Tasks"
msgstr "Oppgaver" msgstr "Oppgaver"
@@ -2162,6 +2213,7 @@ msgstr "Oppdater"
#: src/components/containers-table/containers-table-columns.tsx #: src/components/containers-table/containers-table-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/routes/system/smart-table.tsx #: src/components/routes/system/smart-table.tsx
#: src/components/routes/system/storage-pools-table.tsx #: src/components/routes/system/storage-pools-table.tsx
#: src/components/systemd-table/systemd-table-columns.tsx #: src/components/systemd-table/systemd-table-columns.tsx
@@ -2217,6 +2269,7 @@ msgstr "Utnyttelse"
msgid "Value" msgid "Value"
msgstr "Verdi" msgstr "Verdi"
#: src/components/network-monitors-table/network-monitors-table.tsx
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "View" msgid "View"
msgstr "Visning" msgstr "Visning"
@@ -2231,6 +2284,7 @@ msgstr "Se mer"
msgid "View your 200 most recent alerts." msgid "View your 200 most recent alerts."
msgstr "Vis de 200 siste varslene." msgstr "Vis de 200 siste varslene."
#: src/components/network-monitors-table/network-monitors-table.tsx
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "Visible Fields" msgid "Visible Fields"
msgstr "Synlige Felter" msgstr "Synlige Felter"
@@ -2305,3 +2359,4 @@ msgstr "Ja"
#: 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 "Dine brukerinnstillinger har blitt oppdatert." msgstr "Dine brukerinnstillinger har blitt oppdatert."
+68 -13
View File
@@ -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: 2026-09-18 19:21\n" "PO-Revision-Date: 2026-09-24 17:29\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"
@@ -52,14 +52,26 @@ msgstr "{count, plural, one {godzina} few {{countString} godziny} many {{countSt
msgid "{count, plural, one {{countString} minute} few {{countString} minutes} many {{countString} minutes} other {{countString} minutes}}" 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}}" msgstr "{count, plural, one {{countString} minuta} few {{countString} minuty} many {{countString} minut} other {{countString} minut}}"
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "{daysLeft, plural, one {# day} other {# days}}"
msgstr ""
#: src/components/routes/system/charts/disk-charts.tsx #: src/components/routes/system/charts/disk-charts.tsx
msgid "{diskName} I/O" msgid "{diskName} I/O"
msgstr "I/O {diskName}" msgstr "I/O {diskName}"
#: src/components/systems-table/systems-table-columns.tsx
msgid "{numFailed, plural, one {# failed service} other {# failed services}}"
msgstr ""
#: src/components/routes/system/info-bar.tsx #: src/components/routes/system/info-bar.tsx
msgid "{threads, plural, one {# thread} other {# threads}}" msgid "{threads, plural, one {# thread} other {# threads}}"
msgstr "{threads, plural, one {# wątek} few {# wątki} many {# wątków} other {# wątków}}" msgstr "{threads, plural, one {# wątek} few {# wątki} many {# wątków} other {# wątków}}"
#: src/components/systems-table/systems-table-columns.tsx
msgid "{totalCount, plural, one {# service} other {# services}}"
msgstr ""
#: src/lib/utils.ts #: src/lib/utils.ts
msgid "1 hour" msgid "1 hour"
msgstr "1 godzina" msgstr "1 godzina"
@@ -123,10 +135,10 @@ msgstr "Aktywne alerty"
msgid "Active state" msgid "Active state"
msgstr "Status aktywny" msgstr "Status aktywny"
#: src/components/add-system.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/add-system.tsx msgid "Add"
#: src/components/navbar.tsx msgstr ""
#: src/components/navbar.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
@@ -136,6 +148,13 @@ msgstr "Status aktywny"
msgid "Add {foo}" msgid "Add {foo}"
msgstr "Dodaj {foo}" msgstr "Dodaj {foo}"
#: src/components/add-system.tsx
#: src/components/add-system.tsx
#: src/components/navbar.tsx
#: src/components/navbar.tsx
msgid "Add System"
msgstr "Dodaj System"
#: src/components/routes/settings/notifications.tsx #: src/components/routes/settings/notifications.tsx
msgid "Add URL" msgid "Add URL"
msgstr "Dodaj URL" msgstr "Dodaj URL"
@@ -260,6 +279,7 @@ msgstr "Średnie wykorzystanie silników GPU"
msgid "Average, minimum, and maximum response time" msgid "Average, minimum, and maximum response time"
msgstr "Średni, minimalny i maksymalny czas odpowiedzi" msgstr "Średni, minimalny i maksymalny czas odpowiedzi"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Avg 1h" msgid "Avg 1h"
msgstr "Śr. 1 godz." msgstr "Śr. 1 godz."
@@ -383,6 +403,19 @@ msgstr "Uwaga - ryzyko utraty danych"
msgid "Celsius (°C)" msgid "Celsius (°C)"
msgstr "Celsjusza (°C)" msgstr "Celsjusza (°C)"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Certificate"
msgstr ""
#: src/components/network-monitors-table/network-monitors-table.tsx
msgid "Certificate expired {expires}"
msgstr ""
#: src/components/network-monitors-table/network-monitors-table.tsx
msgid "Certificate expires {expires}"
msgstr ""
#: src/components/routes/settings/general.tsx #: src/components/routes/settings/general.tsx
msgid "Change display units for metrics." msgid "Change display units for metrics."
msgstr "Zmień jednostki wyświetlania dla metryk." msgstr "Zmień jednostki wyświetlania dla metryk."
@@ -776,12 +809,15 @@ msgstr "Czas trwania"
msgid "Edit" msgid "Edit"
msgstr "Edytuj" msgstr "Edytuj"
#: src/components/add-system.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/routes/settings/quiet-hours.tsx #: src/components/routes/settings/quiet-hours.tsx
msgid "Edit {foo}" msgid "Edit {foo}"
msgstr "Edytuj {foo}" msgstr "Edytuj {foo}"
#: src/components/add-system.tsx
msgid "Edit System"
msgstr "Edytuj System"
#: 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
@@ -867,6 +903,10 @@ msgstr "Istniejące systemy, które nie są zdefiniowane w <0>config.yml</0>, zo
msgid "Exited active" msgid "Exited active"
msgstr "Zakończono aktywnie" msgstr "Zakończono aktywnie"
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Expired"
msgstr ""
#: src/components/routes/settings/tokens-fingerprints.tsx #: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Expires after one hour or on hub restart." msgid "Expires after one hour or on hub restart."
msgstr "Wygasa po godzinie lub przy ponownym uruchomieniu huba." msgstr "Wygasa po godzinie lub przy ponownym uruchomieniu huba."
@@ -887,10 +927,6 @@ 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 #: src/components/routes/system/smart-table.tsx
msgid "Failed Attributes:" msgid "Failed Attributes:"
msgstr "Nieudane atrybuty:" msgstr "Nieudane atrybuty:"
@@ -1090,6 +1126,7 @@ msgstr "Dostępna aktualizacja obrazu"
msgid "Inactive" msgid "Inactive"
msgstr "Nieaktywny" msgstr "Nieaktywny"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/routes/settings/heartbeat.tsx #: src/components/routes/settings/heartbeat.tsx
msgid "Interval" msgid "Interval"
@@ -1182,6 +1219,7 @@ msgctxt "Packet loss"
msgid "Loss" msgid "Loss"
msgstr "Strata" msgstr "Strata"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Loss 1h" msgid "Loss 1h"
msgstr "Strata 1 h" msgstr "Strata 1 h"
@@ -1204,6 +1242,7 @@ msgstr "Instrukcja ręcznej konfiguracji"
msgid "Max 1 min" msgid "Max 1 min"
msgstr "Maks. 1 min" msgstr "Maks. 1 min"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Max 1h" msgid "Max 1h"
msgstr "Maks. 1 godz." msgstr "Maks. 1 godz."
@@ -1234,6 +1273,7 @@ msgstr "Użycie pamięci"
msgid "Memory usage of containers" msgid "Memory usage of containers"
msgstr "Zużycie pamięci przez kontenery" msgstr "Zużycie pamięci przez kontenery"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Min 1h" msgid "Min 1h"
msgstr "Min. 1 godz." msgstr "Min. 1 godz."
@@ -1565,6 +1605,7 @@ msgstr "Proces uruchomiony"
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Protocol" msgid "Protocol"
msgstr "Protokół" msgstr "Protokół"
@@ -1653,6 +1694,7 @@ msgstr "Resetuj hasło"
msgid "Resolved" msgid "Resolved"
msgstr "Rozwiązany" msgstr "Rozwiązany"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/routes/system/charts/monitors-charts.tsx #: src/components/routes/system/charts/monitors-charts.tsx
msgid "Response" msgid "Response"
@@ -1698,7 +1740,6 @@ msgstr "Szczegóły S.M.A.R.T."
msgid "S.M.A.R.T. Self-Test" msgid "S.M.A.R.T. Self-Test"
msgstr "Samodiagnostyka S.M.A.R.T." msgstr "Samodiagnostyka S.M.A.R.T."
#: src/components/add-system.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
msgid "Save {foo}" msgid "Save {foo}"
msgstr "Zapisz {foo}" msgstr "Zapisz {foo}"
@@ -1712,6 +1753,10 @@ msgstr "Zapisz adres, używając klawisza enter lub przecinka. Pozostaw puste, a
msgid "Save Settings" msgid "Save Settings"
msgstr "Zapisz ustawienia" msgstr "Zapisz ustawienia"
#: src/components/add-system.tsx
msgid "Save System"
msgstr "Zapisz System"
#: src/components/routes/settings/tokens-fingerprints.tsx #: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Saved in the database and does not expire until you disable it." msgid "Saved in the database and does not expire until you disable it."
msgstr "Zapisany w bazie danych. Nie wygasa, dopóki go nie wyłączysz." msgstr "Zapisany w bazie danych. Nie wygasa, dopóki go nie wyłączysz."
@@ -1833,6 +1878,7 @@ msgstr "Zaloguj się"
msgid "SMTP settings" msgid "SMTP settings"
msgstr "Ustawienia SMTP" msgstr "Ustawienia SMTP"
#: src/components/network-monitors-table/network-monitors-table.tsx
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "Sort By" msgid "Sort By"
msgstr "Sortuj według" msgstr "Sortuj według"
@@ -1875,12 +1921,11 @@ msgstr "Użycie pamięci wymiany"
msgid "Switch theme" msgid "Switch theme"
msgstr "Zmień motyw" msgstr "Zmień motyw"
#: 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/containers-table/containers-table-columns.tsx
#: src/components/navbar.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-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/quiet-hours.tsx #: src/components/routes/settings/quiet-hours.tsx
@@ -1925,9 +1970,15 @@ msgstr "Karty"
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Target" msgid "Target"
msgstr "Cel" msgstr "Cel"
#: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx
msgid "target[,protocol[,port[,interval]]]"
msgstr ""
#: src/components/systemd-table/systemd-table.tsx #: src/components/systemd-table/systemd-table.tsx
msgid "Tasks" msgid "Tasks"
msgstr "Zadania" msgstr "Zadania"
@@ -2162,6 +2213,7 @@ msgstr "Aktualizuj"
#: src/components/containers-table/containers-table-columns.tsx #: src/components/containers-table/containers-table-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/routes/system/smart-table.tsx #: src/components/routes/system/smart-table.tsx
#: src/components/routes/system/storage-pools-table.tsx #: src/components/routes/system/storage-pools-table.tsx
#: src/components/systemd-table/systemd-table-columns.tsx #: src/components/systemd-table/systemd-table-columns.tsx
@@ -2217,6 +2269,7 @@ msgstr "Użycie"
msgid "Value" msgid "Value"
msgstr "Wartość" msgstr "Wartość"
#: src/components/network-monitors-table/network-monitors-table.tsx
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "View" msgid "View"
msgstr "Widok" msgstr "Widok"
@@ -2231,6 +2284,7 @@ msgstr "Zobacz więcej"
msgid "View your 200 most recent alerts." msgid "View your 200 most recent alerts."
msgstr "Wyświetl 200 ostatnich alertów." msgstr "Wyświetl 200 ostatnich alertów."
#: src/components/network-monitors-table/network-monitors-table.tsx
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "Visible Fields" msgid "Visible Fields"
msgstr "Widoczne kolumny" msgstr "Widoczne kolumny"
@@ -2305,3 +2359,4 @@ 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."
+68 -13
View File
@@ -8,7 +8,7 @@ msgstr ""
"Language: pt\n" "Language: pt\n"
"Project-Id-Version: beszel\n" "Project-Id-Version: beszel\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-09-18 19:21\n" "PO-Revision-Date: 2026-09-24 17:29\n"
"Last-Translator: \n" "Last-Translator: \n"
"Language-Team: Portuguese\n" "Language-Team: Portuguese\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -52,14 +52,26 @@ msgstr "{count, plural, one {{countString} hora} other {{countString} horas}}"
msgid "{count, plural, one {{countString} minute} few {{countString} minutes} many {{countString} minutes} other {{countString} minutes}}" msgid "{count, plural, one {{countString} minute} few {{countString} minutes} many {{countString} minutes} other {{countString} minutes}}"
msgstr "{count, plural, one {{countString} minuto} other {{countString} minutos}}" msgstr "{count, plural, one {{countString} minuto} other {{countString} minutos}}"
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "{daysLeft, plural, one {# day} other {# days}}"
msgstr ""
#: src/components/routes/system/charts/disk-charts.tsx #: src/components/routes/system/charts/disk-charts.tsx
msgid "{diskName} I/O" msgid "{diskName} I/O"
msgstr "E/S de {diskName}" msgstr "E/S de {diskName}"
#: src/components/systems-table/systems-table-columns.tsx
msgid "{numFailed, plural, one {# failed service} other {# failed services}}"
msgstr ""
#: src/components/routes/system/info-bar.tsx #: src/components/routes/system/info-bar.tsx
msgid "{threads, plural, one {# thread} other {# threads}}" msgid "{threads, plural, one {# thread} other {# threads}}"
msgstr "{threads, plural, one {# thread} other {# threads}}" msgstr "{threads, plural, one {# thread} other {# threads}}"
#: src/components/systems-table/systems-table-columns.tsx
msgid "{totalCount, plural, one {# service} other {# services}}"
msgstr ""
#: src/lib/utils.ts #: src/lib/utils.ts
msgid "1 hour" msgid "1 hour"
msgstr "1 hora" msgstr "1 hora"
@@ -123,10 +135,10 @@ msgstr "Alertas Ativos"
msgid "Active state" msgid "Active state"
msgstr "Estado ativo" msgstr "Estado ativo"
#: src/components/add-system.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/add-system.tsx msgid "Add"
#: src/components/navbar.tsx msgstr ""
#: src/components/navbar.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
@@ -136,6 +148,13 @@ msgstr "Estado ativo"
msgid "Add {foo}" msgid "Add {foo}"
msgstr "Adicionar {foo}" msgstr "Adicionar {foo}"
#: src/components/add-system.tsx
#: src/components/add-system.tsx
#: src/components/navbar.tsx
#: src/components/navbar.tsx
msgid "Add System"
msgstr "Adicionar Sistema"
#: src/components/routes/settings/notifications.tsx #: src/components/routes/settings/notifications.tsx
msgid "Add URL" msgid "Add URL"
msgstr "Adicionar URL" msgstr "Adicionar URL"
@@ -260,6 +279,7 @@ msgstr "Utilização média dos motores GPU"
msgid "Average, minimum, and maximum response time" msgid "Average, minimum, and maximum response time"
msgstr "Tempo de resposta médio, mínimo e máximo" msgstr "Tempo de resposta médio, mínimo e máximo"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Avg 1h" msgid "Avg 1h"
msgstr "Méd. 1 h" msgstr "Méd. 1 h"
@@ -383,6 +403,19 @@ msgstr "Cuidado - possível perda de dados"
msgid "Celsius (°C)" msgid "Celsius (°C)"
msgstr "Celsius (°C)" msgstr "Celsius (°C)"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Certificate"
msgstr ""
#: src/components/network-monitors-table/network-monitors-table.tsx
msgid "Certificate expired {expires}"
msgstr ""
#: src/components/network-monitors-table/network-monitors-table.tsx
msgid "Certificate expires {expires}"
msgstr ""
#: src/components/routes/settings/general.tsx #: src/components/routes/settings/general.tsx
msgid "Change display units for metrics." msgid "Change display units for metrics."
msgstr "Alterar unidades de exibição para métricas." msgstr "Alterar unidades de exibição para métricas."
@@ -776,12 +809,15 @@ msgstr "Duração"
msgid "Edit" msgid "Edit"
msgstr "Editar" msgstr "Editar"
#: src/components/add-system.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/routes/settings/quiet-hours.tsx #: src/components/routes/settings/quiet-hours.tsx
msgid "Edit {foo}" msgid "Edit {foo}"
msgstr "Editar {foo}" msgstr "Editar {foo}"
#: src/components/add-system.tsx
msgid "Edit System"
msgstr "Editar Sistema"
#: 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
@@ -867,6 +903,10 @@ msgstr "Sistemas existentes não definidos em <0>config.yml</0> serão excluído
msgid "Exited active" msgid "Exited active"
msgstr "Saiu ativo" msgstr "Saiu ativo"
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Expired"
msgstr ""
#: src/components/routes/settings/tokens-fingerprints.tsx #: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Expires after one hour or on hub restart." msgid "Expires after one hour or on hub restart."
msgstr "Expira após uma hora ou no reinício do hub." msgstr "Expira após uma hora ou no reinício do hub."
@@ -887,10 +927,6 @@ msgstr "Exporte a configuração atual dos seus sistemas."
msgid "Fahrenheit (°F)" msgid "Fahrenheit (°F)"
msgstr "Fahrenheit (°F)" msgstr "Fahrenheit (°F)"
#: src/components/systems-table/systems-table-columns.tsx
msgid "Failed"
msgstr "Falhou"
#: src/components/routes/system/smart-table.tsx #: src/components/routes/system/smart-table.tsx
msgid "Failed Attributes:" msgid "Failed Attributes:"
msgstr "Atributos com Falha:" msgstr "Atributos com Falha:"
@@ -1090,6 +1126,7 @@ msgstr "Atualização da imagem disponível"
msgid "Inactive" msgid "Inactive"
msgstr "Inativo" msgstr "Inativo"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/routes/settings/heartbeat.tsx #: src/components/routes/settings/heartbeat.tsx
msgid "Interval" msgid "Interval"
@@ -1182,6 +1219,7 @@ msgctxt "Packet loss"
msgid "Loss" msgid "Loss"
msgstr "Perda" msgstr "Perda"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Loss 1h" msgid "Loss 1h"
msgstr "Perda 1 h" msgstr "Perda 1 h"
@@ -1204,6 +1242,7 @@ msgstr "Instruções de configuração manual"
msgid "Max 1 min" msgid "Max 1 min"
msgstr "Máx 1 min" msgstr "Máx 1 min"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Max 1h" msgid "Max 1h"
msgstr "Máx. 1 h" msgstr "Máx. 1 h"
@@ -1234,6 +1273,7 @@ msgstr "Uso de Memória"
msgid "Memory usage of containers" msgid "Memory usage of containers"
msgstr "Utilização de memória dos contentores" msgstr "Utilização de memória dos contentores"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Min 1h" msgid "Min 1h"
msgstr "Mín. 1 h" msgstr "Mín. 1 h"
@@ -1565,6 +1605,7 @@ msgstr "Processo iniciado"
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Protocol" msgid "Protocol"
msgstr "Protocolo" msgstr "Protocolo"
@@ -1653,6 +1694,7 @@ msgstr "Redefinir Senha"
msgid "Resolved" msgid "Resolved"
msgstr "Resolvido" msgstr "Resolvido"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/routes/system/charts/monitors-charts.tsx #: src/components/routes/system/charts/monitors-charts.tsx
msgid "Response" msgid "Response"
@@ -1698,7 +1740,6 @@ msgstr "Detalhes S.M.A.R.T."
msgid "S.M.A.R.T. Self-Test" msgid "S.M.A.R.T. Self-Test"
msgstr "Auto-teste S.M.A.R.T." msgstr "Auto-teste S.M.A.R.T."
#: src/components/add-system.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
msgid "Save {foo}" msgid "Save {foo}"
msgstr "Guardar {foo}" msgstr "Guardar {foo}"
@@ -1712,6 +1753,10 @@ msgstr "Salve o endereço usando a tecla enter ou vírgula. Deixe em branco para
msgid "Save Settings" msgid "Save Settings"
msgstr "Guardar Definições" msgstr "Guardar Definições"
#: src/components/add-system.tsx
msgid "Save System"
msgstr "Guardar Sistema"
#: src/components/routes/settings/tokens-fingerprints.tsx #: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Saved in the database and does not expire until you disable it." msgid "Saved in the database and does not expire until you disable it."
msgstr "Salvo no banco de dados e não expira até você desativá-lo." msgstr "Salvo no banco de dados e não expira até você desativá-lo."
@@ -1833,6 +1878,7 @@ msgstr "Entrar"
msgid "SMTP settings" msgid "SMTP settings"
msgstr "Configurações SMTP" msgstr "Configurações SMTP"
#: src/components/network-monitors-table/network-monitors-table.tsx
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "Sort By" msgid "Sort By"
msgstr "Ordenar Por" msgstr "Ordenar Por"
@@ -1875,12 +1921,11 @@ msgstr "Uso de Swap"
msgid "Switch theme" msgid "Switch theme"
msgstr "Mudar tema" msgstr "Mudar tema"
#: 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/containers-table/containers-table-columns.tsx
#: src/components/navbar.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-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/quiet-hours.tsx #: src/components/routes/settings/quiet-hours.tsx
@@ -1925,9 +1970,15 @@ msgstr "Separadores"
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Target" msgid "Target"
msgstr "Destino" msgstr "Destino"
#: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx
msgid "target[,protocol[,port[,interval]]]"
msgstr ""
#: src/components/systemd-table/systemd-table.tsx #: src/components/systemd-table/systemd-table.tsx
msgid "Tasks" msgid "Tasks"
msgstr "Tarefas" msgstr "Tarefas"
@@ -2162,6 +2213,7 @@ msgstr "Atualizar"
#: src/components/containers-table/containers-table-columns.tsx #: src/components/containers-table/containers-table-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/routes/system/smart-table.tsx #: src/components/routes/system/smart-table.tsx
#: src/components/routes/system/storage-pools-table.tsx #: src/components/routes/system/storage-pools-table.tsx
#: src/components/systemd-table/systemd-table-columns.tsx #: src/components/systemd-table/systemd-table-columns.tsx
@@ -2217,6 +2269,7 @@ msgstr "Utilização"
msgid "Value" msgid "Value"
msgstr "Valor" msgstr "Valor"
#: src/components/network-monitors-table/network-monitors-table.tsx
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "View" msgid "View"
msgstr "Visual" msgstr "Visual"
@@ -2231,6 +2284,7 @@ msgstr "Ver mais"
msgid "View your 200 most recent alerts." msgid "View your 200 most recent alerts."
msgstr "Veja os seus 200 alertas mais recentes." msgstr "Veja os seus 200 alertas mais recentes."
#: src/components/network-monitors-table/network-monitors-table.tsx
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "Visible Fields" msgid "Visible Fields"
msgstr "Campos Visíveis" msgstr "Campos Visíveis"
@@ -2305,3 +2359,4 @@ msgstr "Sim"
#: 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 "As configurações do seu usuário foram atualizadas." msgstr "As configurações do seu usuário foram atualizadas."
+67 -13
View File
@@ -8,7 +8,7 @@ msgstr ""
"Language: ro\n" "Language: ro\n"
"Project-Id-Version: beszel\n" "Project-Id-Version: beszel\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-09-18 19:22\n" "PO-Revision-Date: 2026-09-24 17:29\n"
"Last-Translator: \n" "Last-Translator: \n"
"Language-Team: Romanian\n" "Language-Team: Romanian\n"
"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100>0 && n%100<20)) ? 1 : 2);\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100>0 && n%100<20)) ? 1 : 2);\n"
@@ -52,14 +52,26 @@ msgstr ""
msgid "{count, plural, one {{countString} minute} few {{countString} minutes} many {{countString} minutes} other {{countString} minutes}}" msgid "{count, plural, one {{countString} minute} few {{countString} minutes} many {{countString} minutes} other {{countString} minutes}}"
msgstr "" msgstr ""
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "{daysLeft, plural, one {# day} other {# days}}"
msgstr ""
#: src/components/routes/system/charts/disk-charts.tsx #: src/components/routes/system/charts/disk-charts.tsx
msgid "{diskName} I/O" msgid "{diskName} I/O"
msgstr "" msgstr ""
#: src/components/systems-table/systems-table-columns.tsx
msgid "{numFailed, plural, one {# failed service} other {# failed services}}"
msgstr ""
#: src/components/routes/system/info-bar.tsx #: src/components/routes/system/info-bar.tsx
msgid "{threads, plural, one {# thread} other {# threads}}" msgid "{threads, plural, one {# thread} other {# threads}}"
msgstr "" msgstr ""
#: src/components/systems-table/systems-table-columns.tsx
msgid "{totalCount, plural, one {# service} other {# services}}"
msgstr ""
#: src/lib/utils.ts #: src/lib/utils.ts
msgid "1 hour" msgid "1 hour"
msgstr "1 oră" msgstr "1 oră"
@@ -123,10 +135,10 @@ msgstr "Alerte Active"
msgid "Active state" msgid "Active state"
msgstr "Stare activă" msgstr "Stare activă"
#: src/components/add-system.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/add-system.tsx msgid "Add"
#: src/components/navbar.tsx msgstr ""
#: src/components/navbar.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
@@ -136,6 +148,13 @@ msgstr "Stare activă"
msgid "Add {foo}" msgid "Add {foo}"
msgstr "Adaugă {foo}" msgstr "Adaugă {foo}"
#: src/components/add-system.tsx
#: src/components/add-system.tsx
#: src/components/navbar.tsx
#: src/components/navbar.tsx
msgid "Add System"
msgstr ""
#: src/components/routes/settings/notifications.tsx #: src/components/routes/settings/notifications.tsx
msgid "Add URL" msgid "Add URL"
msgstr "Adaugă URL" msgstr "Adaugă URL"
@@ -260,6 +279,7 @@ msgstr ""
msgid "Average, minimum, and maximum response time" msgid "Average, minimum, and maximum response time"
msgstr "" msgstr ""
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Avg 1h" msgid "Avg 1h"
msgstr "" msgstr ""
@@ -383,6 +403,19 @@ msgstr "Atenție - posibilă pierdere de date"
msgid "Celsius (°C)" msgid "Celsius (°C)"
msgstr "Celsius (°C)" msgstr "Celsius (°C)"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Certificate"
msgstr ""
#: src/components/network-monitors-table/network-monitors-table.tsx
msgid "Certificate expired {expires}"
msgstr ""
#: src/components/network-monitors-table/network-monitors-table.tsx
msgid "Certificate expires {expires}"
msgstr ""
#: src/components/routes/settings/general.tsx #: src/components/routes/settings/general.tsx
msgid "Change display units for metrics." msgid "Change display units for metrics."
msgstr "Schimbă unitățile de afișare pentru metrici." msgstr "Schimbă unitățile de afișare pentru metrici."
@@ -776,12 +809,15 @@ msgstr "Durată"
msgid "Edit" msgid "Edit"
msgstr "Editează" msgstr "Editează"
#: src/components/add-system.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/routes/settings/quiet-hours.tsx #: src/components/routes/settings/quiet-hours.tsx
msgid "Edit {foo}" msgid "Edit {foo}"
msgstr "Editează {foo}" msgstr "Editează {foo}"
#: src/components/add-system.tsx
msgid "Edit System"
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
@@ -867,6 +903,10 @@ msgstr ""
msgid "Exited active" msgid "Exited active"
msgstr "" msgstr ""
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Expired"
msgstr ""
#: src/components/routes/settings/tokens-fingerprints.tsx #: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Expires after one hour or on hub restart." msgid "Expires after one hour or on hub restart."
msgstr "" msgstr ""
@@ -887,10 +927,6 @@ 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 #: src/components/routes/system/smart-table.tsx
msgid "Failed Attributes:" msgid "Failed Attributes:"
msgstr "" msgstr ""
@@ -1090,6 +1126,7 @@ msgstr ""
msgid "Inactive" msgid "Inactive"
msgstr "Inactiv" msgstr "Inactiv"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/routes/settings/heartbeat.tsx #: src/components/routes/settings/heartbeat.tsx
msgid "Interval" msgid "Interval"
@@ -1182,6 +1219,7 @@ msgctxt "Packet loss"
msgid "Loss" msgid "Loss"
msgstr "" msgstr ""
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Loss 1h" msgid "Loss 1h"
msgstr "" msgstr ""
@@ -1204,6 +1242,7 @@ msgstr ""
msgid "Max 1 min" msgid "Max 1 min"
msgstr "" msgstr ""
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Max 1h" msgid "Max 1h"
msgstr "" msgstr ""
@@ -1234,6 +1273,7 @@ msgstr "Memorie Utilizată"
msgid "Memory usage of containers" msgid "Memory usage of containers"
msgstr "Utilizarea memoriei de către containere" msgstr "Utilizarea memoriei de către containere"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Min 1h" msgid "Min 1h"
msgstr "" msgstr ""
@@ -1565,6 +1605,7 @@ msgstr ""
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Protocol" msgid "Protocol"
msgstr "" msgstr ""
@@ -1653,6 +1694,7 @@ msgstr ""
msgid "Resolved" msgid "Resolved"
msgstr "" msgstr ""
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/routes/system/charts/monitors-charts.tsx #: src/components/routes/system/charts/monitors-charts.tsx
msgid "Response" msgid "Response"
@@ -1698,7 +1740,6 @@ msgstr "Detalii S.M.A.R.T."
msgid "S.M.A.R.T. Self-Test" msgid "S.M.A.R.T. Self-Test"
msgstr "" msgstr ""
#: src/components/add-system.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
msgid "Save {foo}" msgid "Save {foo}"
msgstr "" msgstr ""
@@ -1712,6 +1753,10 @@ msgstr ""
msgid "Save Settings" msgid "Save Settings"
msgstr "" msgstr ""
#: src/components/add-system.tsx
msgid "Save System"
msgstr ""
#: src/components/routes/settings/tokens-fingerprints.tsx #: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Saved in the database and does not expire until you disable it." msgid "Saved in the database and does not expire until you disable it."
msgstr "" msgstr ""
@@ -1833,6 +1878,7 @@ msgstr ""
msgid "SMTP settings" msgid "SMTP settings"
msgstr "" msgstr ""
#: src/components/network-monitors-table/network-monitors-table.tsx
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "Sort By" msgid "Sort By"
msgstr "" msgstr ""
@@ -1875,12 +1921,11 @@ msgstr ""
msgid "Switch theme" msgid "Switch theme"
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/containers-table/containers-table-columns.tsx
#: src/components/navbar.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-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/quiet-hours.tsx #: src/components/routes/settings/quiet-hours.tsx
@@ -1925,9 +1970,15 @@ msgstr ""
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Target" msgid "Target"
msgstr "" msgstr ""
#: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx
msgid "target[,protocol[,port[,interval]]]"
msgstr ""
#: src/components/systemd-table/systemd-table.tsx #: src/components/systemd-table/systemd-table.tsx
msgid "Tasks" msgid "Tasks"
msgstr "Sarcini" msgstr "Sarcini"
@@ -2162,6 +2213,7 @@ msgstr ""
#: src/components/containers-table/containers-table-columns.tsx #: src/components/containers-table/containers-table-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/routes/system/smart-table.tsx #: src/components/routes/system/smart-table.tsx
#: src/components/routes/system/storage-pools-table.tsx #: src/components/routes/system/storage-pools-table.tsx
#: src/components/systemd-table/systemd-table-columns.tsx #: src/components/systemd-table/systemd-table-columns.tsx
@@ -2217,6 +2269,7 @@ msgstr ""
msgid "Value" msgid "Value"
msgstr "" msgstr ""
#: src/components/network-monitors-table/network-monitors-table.tsx
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "View" msgid "View"
msgstr "" msgstr ""
@@ -2231,6 +2284,7 @@ msgstr ""
msgid "View your 200 most recent alerts." msgid "View your 200 most recent alerts."
msgstr "" msgstr ""
#: src/components/network-monitors-table/network-monitors-table.tsx
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "Visible Fields" msgid "Visible Fields"
msgstr "" msgstr ""
+68 -13
View File
@@ -8,7 +8,7 @@ msgstr ""
"Language: ru\n" "Language: ru\n"
"Project-Id-Version: beszel\n" "Project-Id-Version: beszel\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-09-18 19:21\n" "PO-Revision-Date: 2026-09-24 17:29\n"
"Last-Translator: \n" "Last-Translator: \n"
"Language-Team: Russian\n" "Language-Team: Russian\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"
@@ -52,14 +52,26 @@ msgstr "{count, plural, one {{countString} час} other {{countString} часо
msgid "{count, plural, one {{countString} minute} few {{countString} minutes} many {{countString} minutes} other {{countString} minutes}}" 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} минуты}}" msgstr "{count, plural, one {{countString} минута} few {{countString} минут} many {{countString} минут} other {{countString} минуты}}"
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "{daysLeft, plural, one {# day} other {# days}}"
msgstr ""
#: src/components/routes/system/charts/disk-charts.tsx #: src/components/routes/system/charts/disk-charts.tsx
msgid "{diskName} I/O" msgid "{diskName} I/O"
msgstr "Ввод-вывод {diskName}" msgstr "Ввод-вывод {diskName}"
#: src/components/systems-table/systems-table-columns.tsx
msgid "{numFailed, plural, one {# failed service} other {# failed services}}"
msgstr ""
#: src/components/routes/system/info-bar.tsx #: src/components/routes/system/info-bar.tsx
msgid "{threads, plural, one {# thread} other {# threads}}" msgid "{threads, plural, one {# thread} other {# threads}}"
msgstr "{threads, plural, one {# поток} few {# потока} many {# потоков} other {# потоков}}" msgstr "{threads, plural, one {# поток} few {# потока} many {# потоков} other {# потоков}}"
#: src/components/systems-table/systems-table-columns.tsx
msgid "{totalCount, plural, one {# service} other {# services}}"
msgstr ""
#: src/lib/utils.ts #: src/lib/utils.ts
msgid "1 hour" msgid "1 hour"
msgstr "1 час" msgstr "1 час"
@@ -123,10 +135,10 @@ msgstr "Активные оповещения"
msgid "Active state" msgid "Active state"
msgstr "Активное состояние" msgstr "Активное состояние"
#: src/components/add-system.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/add-system.tsx msgid "Add"
#: src/components/navbar.tsx msgstr ""
#: src/components/navbar.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
@@ -136,6 +148,13 @@ msgstr "Активное состояние"
msgid "Add {foo}" msgid "Add {foo}"
msgstr "Добавить {foo}" msgstr "Добавить {foo}"
#: src/components/add-system.tsx
#: src/components/add-system.tsx
#: src/components/navbar.tsx
#: src/components/navbar.tsx
msgid "Add System"
msgstr "Добавить систему"
#: src/components/routes/settings/notifications.tsx #: src/components/routes/settings/notifications.tsx
msgid "Add URL" msgid "Add URL"
msgstr "Добавить URL" msgstr "Добавить URL"
@@ -260,6 +279,7 @@ msgstr "Средняя загрузка ядер GPU"
msgid "Average, minimum, and maximum response time" msgid "Average, minimum, and maximum response time"
msgstr "Среднее, минимальное и максимальное время отклика" msgstr "Среднее, минимальное и максимальное время отклика"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Avg 1h" msgid "Avg 1h"
msgstr "Сред. за 1 ч" msgstr "Сред. за 1 ч"
@@ -383,6 +403,19 @@ msgstr "Внимание - возможная потеря данных"
msgid "Celsius (°C)" msgid "Celsius (°C)"
msgstr "Цельсий (°C)" msgstr "Цельсий (°C)"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Certificate"
msgstr ""
#: src/components/network-monitors-table/network-monitors-table.tsx
msgid "Certificate expired {expires}"
msgstr ""
#: src/components/network-monitors-table/network-monitors-table.tsx
msgid "Certificate expires {expires}"
msgstr ""
#: src/components/routes/settings/general.tsx #: src/components/routes/settings/general.tsx
msgid "Change display units for metrics." msgid "Change display units for metrics."
msgstr "Изменить единицы измерения метрик." msgstr "Изменить единицы измерения метрик."
@@ -776,12 +809,15 @@ msgstr "Длительность"
msgid "Edit" msgid "Edit"
msgstr "Редактировать" msgstr "Редактировать"
#: src/components/add-system.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/routes/settings/quiet-hours.tsx #: src/components/routes/settings/quiet-hours.tsx
msgid "Edit {foo}" msgid "Edit {foo}"
msgstr "Редактировать {foo}" msgstr "Редактировать {foo}"
#: src/components/add-system.tsx
msgid "Edit System"
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
@@ -867,6 +903,10 @@ msgstr "Существующие системы, не определенные
msgid "Exited active" msgid "Exited active"
msgstr "Завершился активным" msgstr "Завершился активным"
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Expired"
msgstr ""
#: src/components/routes/settings/tokens-fingerprints.tsx #: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Expires after one hour or on hub restart." msgid "Expires after one hour or on hub restart."
msgstr "Истекает через час или при перезапуске хаба." msgstr "Истекает через час или при перезапуске хаба."
@@ -887,10 +927,6 @@ 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 #: src/components/routes/system/smart-table.tsx
msgid "Failed Attributes:" msgid "Failed Attributes:"
msgstr "Неудачные атрибуты:" msgstr "Неудачные атрибуты:"
@@ -1090,6 +1126,7 @@ msgstr "Доступно обновление образа"
msgid "Inactive" msgid "Inactive"
msgstr "Неактивно" msgstr "Неактивно"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/routes/settings/heartbeat.tsx #: src/components/routes/settings/heartbeat.tsx
msgid "Interval" msgid "Interval"
@@ -1182,6 +1219,7 @@ msgctxt "Packet loss"
msgid "Loss" msgid "Loss"
msgstr "Потери" msgstr "Потери"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Loss 1h" msgid "Loss 1h"
msgstr "Потери 1 h" msgstr "Потери 1 h"
@@ -1204,6 +1242,7 @@ msgstr "Инструкции по ручной установке"
msgid "Max 1 min" msgid "Max 1 min"
msgstr "Макс 1 мин" msgstr "Макс 1 мин"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Max 1h" msgid "Max 1h"
msgstr "Макс. за 1 ч" msgstr "Макс. за 1 ч"
@@ -1234,6 +1273,7 @@ msgstr "Использование памяти"
msgid "Memory usage of containers" msgid "Memory usage of containers"
msgstr "Использование памяти контейнерами" msgstr "Использование памяти контейнерами"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Min 1h" msgid "Min 1h"
msgstr "Мин. за 1 ч" msgstr "Мин. за 1 ч"
@@ -1565,6 +1605,7 @@ msgstr "Процесс запущен"
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Protocol" msgid "Protocol"
msgstr "Протокол" msgstr "Протокол"
@@ -1653,6 +1694,7 @@ msgstr "Сбросить пароль"
msgid "Resolved" msgid "Resolved"
msgstr "Завершено" msgstr "Завершено"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/routes/system/charts/monitors-charts.tsx #: src/components/routes/system/charts/monitors-charts.tsx
msgid "Response" msgid "Response"
@@ -1698,7 +1740,6 @@ msgstr "Детали S.M.A.R.T."
msgid "S.M.A.R.T. Self-Test" msgid "S.M.A.R.T. Self-Test"
msgstr "Запуск теста S.M.A.R.T." msgstr "Запуск теста S.M.A.R.T."
#: src/components/add-system.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
msgid "Save {foo}" msgid "Save {foo}"
msgstr "Сохранить {foo}" msgstr "Сохранить {foo}"
@@ -1712,6 +1753,10 @@ msgstr "Сохраните адрес, используя клавишу вво
msgid "Save Settings" msgid "Save Settings"
msgstr "Сохранить настройки" msgstr "Сохранить настройки"
#: src/components/add-system.tsx
msgid "Save System"
msgstr "Сохранить систему"
#: src/components/routes/settings/tokens-fingerprints.tsx #: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Saved in the database and does not expire until you disable it." msgid "Saved in the database and does not expire until you disable it."
msgstr "Сохранено в базе данных и не истекает, пока вы его не отключите." msgstr "Сохранено в базе данных и не истекает, пока вы его не отключите."
@@ -1833,6 +1878,7 @@ msgstr "Войти"
msgid "SMTP settings" msgid "SMTP settings"
msgstr "Настройки SMTP" msgstr "Настройки SMTP"
#: src/components/network-monitors-table/network-monitors-table.tsx
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "Sort By" msgid "Sort By"
msgstr "Сортировать по" msgstr "Сортировать по"
@@ -1875,12 +1921,11 @@ msgstr "Использование подкачки"
msgid "Switch theme" msgid "Switch theme"
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/containers-table/containers-table-columns.tsx
#: src/components/navbar.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-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/quiet-hours.tsx #: src/components/routes/settings/quiet-hours.tsx
@@ -1925,9 +1970,15 @@ msgstr "Вкладки"
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Target" msgid "Target"
msgstr "Цель" msgstr "Цель"
#: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx
msgid "target[,protocol[,port[,interval]]]"
msgstr ""
#: src/components/systemd-table/systemd-table.tsx #: src/components/systemd-table/systemd-table.tsx
msgid "Tasks" msgid "Tasks"
msgstr "Задачи" msgstr "Задачи"
@@ -2162,6 +2213,7 @@ msgstr "Обновить"
#: src/components/containers-table/containers-table-columns.tsx #: src/components/containers-table/containers-table-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/routes/system/smart-table.tsx #: src/components/routes/system/smart-table.tsx
#: src/components/routes/system/storage-pools-table.tsx #: src/components/routes/system/storage-pools-table.tsx
#: src/components/systemd-table/systemd-table-columns.tsx #: src/components/systemd-table/systemd-table-columns.tsx
@@ -2217,6 +2269,7 @@ msgstr "Использование"
msgid "Value" msgid "Value"
msgstr "Значение" msgstr "Значение"
#: src/components/network-monitors-table/network-monitors-table.tsx
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "View" msgid "View"
msgstr "Вид" msgstr "Вид"
@@ -2231,6 +2284,7 @@ msgstr "Показать больше"
msgid "View your 200 most recent alerts." msgid "View your 200 most recent alerts."
msgstr "Просмотреть 200 последних оповещений." msgstr "Просмотреть 200 последних оповещений."
#: src/components/network-monitors-table/network-monitors-table.tsx
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "Visible Fields" msgid "Visible Fields"
msgstr "Видимые столбцы" msgstr "Видимые столбцы"
@@ -2305,3 +2359,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 "Ваши настройки пользователя были обновлены." msgstr "Ваши настройки пользователя были обновлены."
+68 -13
View File
@@ -8,7 +8,7 @@ msgstr ""
"Language: sl\n" "Language: sl\n"
"Project-Id-Version: beszel\n" "Project-Id-Version: beszel\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-09-18 19:22\n" "PO-Revision-Date: 2026-09-24 17:29\n"
"Last-Translator: \n" "Last-Translator: \n"
"Language-Team: Slovenian\n" "Language-Team: Slovenian\n"
"Plural-Forms: nplurals=4; plural=n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3;\n" "Plural-Forms: nplurals=4; plural=n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3;\n"
@@ -52,14 +52,26 @@ msgstr "{count, plural, one {{countString} ura} two {{countString} uri} few {{co
msgid "{count, plural, one {{countString} minute} few {{countString} minutes} many {{countString} minutes} other {{countString} minutes}}" msgid "{count, plural, one {{countString} minute} few {{countString} minutes} many {{countString} minutes} other {{countString} minutes}}"
msgstr "{count, plural, one {{countString} minuta} few {{countString} minuti} many {{countString} minut} other {{countString} minut}}" msgstr "{count, plural, one {{countString} minuta} few {{countString} minuti} many {{countString} minut} other {{countString} minut}}"
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "{daysLeft, plural, one {# day} other {# days}}"
msgstr ""
#: src/components/routes/system/charts/disk-charts.tsx #: src/components/routes/system/charts/disk-charts.tsx
msgid "{diskName} I/O" msgid "{diskName} I/O"
msgstr "V/I za {diskName}" msgstr "V/I za {diskName}"
#: src/components/systems-table/systems-table-columns.tsx
msgid "{numFailed, plural, one {# failed service} other {# failed services}}"
msgstr ""
#: src/components/routes/system/info-bar.tsx #: src/components/routes/system/info-bar.tsx
msgid "{threads, plural, one {# thread} other {# threads}}" msgid "{threads, plural, one {# thread} other {# threads}}"
msgstr "{threads, plural, one {# nit} two {# niti} few {# niti} other {# niti}}" msgstr "{threads, plural, one {# nit} two {# niti} few {# niti} other {# niti}}"
#: src/components/systems-table/systems-table-columns.tsx
msgid "{totalCount, plural, one {# service} other {# services}}"
msgstr ""
#: src/lib/utils.ts #: src/lib/utils.ts
msgid "1 hour" msgid "1 hour"
msgstr "1 ura" msgstr "1 ura"
@@ -123,10 +135,10 @@ msgstr "Aktivna opozorila"
msgid "Active state" msgid "Active state"
msgstr "Aktivno stanje" msgstr "Aktivno stanje"
#: src/components/add-system.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/add-system.tsx msgid "Add"
#: src/components/navbar.tsx msgstr ""
#: src/components/navbar.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
@@ -136,6 +148,13 @@ msgstr "Aktivno stanje"
msgid "Add {foo}" msgid "Add {foo}"
msgstr "Dodaj {foo}" msgstr "Dodaj {foo}"
#: src/components/add-system.tsx
#: src/components/add-system.tsx
#: src/components/navbar.tsx
#: src/components/navbar.tsx
msgid "Add System"
msgstr "Dodaj Sistemsko"
#: src/components/routes/settings/notifications.tsx #: src/components/routes/settings/notifications.tsx
msgid "Add URL" msgid "Add URL"
msgstr "Dodaj URL" msgstr "Dodaj URL"
@@ -260,6 +279,7 @@ msgstr "Povprečna uporaba GPU motorjev"
msgid "Average, minimum, and maximum response time" msgid "Average, minimum, and maximum response time"
msgstr "Povprečni, najmanjši in največji odzivni čas" msgstr "Povprečni, najmanjši in največji odzivni čas"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Avg 1h" msgid "Avg 1h"
msgstr "Povp. 1 h" msgstr "Povp. 1 h"
@@ -383,6 +403,19 @@ msgstr "Pozor - možna izguba podatkov"
msgid "Celsius (°C)" msgid "Celsius (°C)"
msgstr "Celzija (°C)" msgstr "Celzija (°C)"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Certificate"
msgstr ""
#: src/components/network-monitors-table/network-monitors-table.tsx
msgid "Certificate expired {expires}"
msgstr ""
#: src/components/network-monitors-table/network-monitors-table.tsx
msgid "Certificate expires {expires}"
msgstr ""
#: src/components/routes/settings/general.tsx #: src/components/routes/settings/general.tsx
msgid "Change display units for metrics." msgid "Change display units for metrics."
msgstr "Spremenite enote prikaza za metrike." msgstr "Spremenite enote prikaza za metrike."
@@ -776,12 +809,15 @@ msgstr "Trajanje"
msgid "Edit" msgid "Edit"
msgstr "Uredi" msgstr "Uredi"
#: src/components/add-system.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/routes/settings/quiet-hours.tsx #: src/components/routes/settings/quiet-hours.tsx
msgid "Edit {foo}" msgid "Edit {foo}"
msgstr "Uredi {foo}" msgstr "Uredi {foo}"
#: src/components/add-system.tsx
msgid "Edit System"
msgstr "Uredi Sistemsko"
#: 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
@@ -867,6 +903,10 @@ msgstr "Obstoječi sistemi, ki niso definirani v <0>config.yml</0>, bodo izbrisa
msgid "Exited active" msgid "Exited active"
msgstr "Izhod aktivno" msgstr "Izhod aktivno"
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Expired"
msgstr ""
#: src/components/routes/settings/tokens-fingerprints.tsx #: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Expires after one hour or on hub restart." msgid "Expires after one hour or on hub restart."
msgstr "Poteče po eni uri ali ob ponovnem zagonu huba." msgstr "Poteče po eni uri ali ob ponovnem zagonu huba."
@@ -887,10 +927,6 @@ msgstr "Izvozi trenutne nastavitve sistema."
msgid "Fahrenheit (°F)" msgid "Fahrenheit (°F)"
msgstr "Fahrenheit (°F)" msgstr "Fahrenheit (°F)"
#: src/components/systems-table/systems-table-columns.tsx
msgid "Failed"
msgstr "Neuspešno"
#: src/components/routes/system/smart-table.tsx #: src/components/routes/system/smart-table.tsx
msgid "Failed Attributes:" msgid "Failed Attributes:"
msgstr "Neuspeli atributi:" msgstr "Neuspeli atributi:"
@@ -1090,6 +1126,7 @@ msgstr "Na voljo je posodobitev slike"
msgid "Inactive" msgid "Inactive"
msgstr "Neaktivno" msgstr "Neaktivno"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/routes/settings/heartbeat.tsx #: src/components/routes/settings/heartbeat.tsx
msgid "Interval" msgid "Interval"
@@ -1182,6 +1219,7 @@ msgctxt "Packet loss"
msgid "Loss" msgid "Loss"
msgstr "Izguba" msgstr "Izguba"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Loss 1h" msgid "Loss 1h"
msgstr "Izguba 1 h" msgstr "Izguba 1 h"
@@ -1204,6 +1242,7 @@ msgstr "Navodila za ročno nastavitev"
msgid "Max 1 min" msgid "Max 1 min"
msgstr "Največ 1 min" msgstr "Največ 1 min"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Max 1h" msgid "Max 1h"
msgstr "Najv. 1 h" msgstr "Najv. 1 h"
@@ -1234,6 +1273,7 @@ msgstr "Poraba pomnilnika"
msgid "Memory usage of containers" msgid "Memory usage of containers"
msgstr "Poraba pomnilnika vsebnikov" msgstr "Poraba pomnilnika vsebnikov"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Min 1h" msgid "Min 1h"
msgstr "Najm. 1 h" msgstr "Najm. 1 h"
@@ -1565,6 +1605,7 @@ msgstr "Proces začet"
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Protocol" msgid "Protocol"
msgstr "Protokol" msgstr "Protokol"
@@ -1653,6 +1694,7 @@ msgstr "Ponastavi geslo"
msgid "Resolved" msgid "Resolved"
msgstr "Rešeno" msgstr "Rešeno"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/routes/system/charts/monitors-charts.tsx #: src/components/routes/system/charts/monitors-charts.tsx
msgid "Response" msgid "Response"
@@ -1698,7 +1740,6 @@ msgstr "S.M.A.R.T. podrobnosti"
msgid "S.M.A.R.T. Self-Test" msgid "S.M.A.R.T. Self-Test"
msgstr "S.M.A.R.T. samotestiranje" msgstr "S.M.A.R.T. samotestiranje"
#: src/components/add-system.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
msgid "Save {foo}" msgid "Save {foo}"
msgstr "Shrani {foo}" msgstr "Shrani {foo}"
@@ -1712,6 +1753,10 @@ msgstr "Shranite naslov s tipko enter ali vejico. Pustite prazno, da onemogočit
msgid "Save Settings" msgid "Save Settings"
msgstr "Shrani nastavitve" msgstr "Shrani nastavitve"
#: src/components/add-system.tsx
msgid "Save System"
msgstr "Shrani Sistemsko"
#: src/components/routes/settings/tokens-fingerprints.tsx #: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Saved in the database and does not expire until you disable it." msgid "Saved in the database and does not expire until you disable it."
msgstr "Shranjeno v bazi podatkov in ne poteče, dokler ga ne onemogočite." msgstr "Shranjeno v bazi podatkov in ne poteče, dokler ga ne onemogočite."
@@ -1833,6 +1878,7 @@ msgstr "Prijavite se"
msgid "SMTP settings" msgid "SMTP settings"
msgstr "SMTP nastavitve" msgstr "SMTP nastavitve"
#: src/components/network-monitors-table/network-monitors-table.tsx
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "Sort By" msgid "Sort By"
msgstr "Razvrsti po" msgstr "Razvrsti po"
@@ -1875,12 +1921,11 @@ msgstr "Swap uporaba"
msgid "Switch theme" msgid "Switch theme"
msgstr "Zamenjaj temo" msgstr "Zamenjaj temo"
#: 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/containers-table/containers-table-columns.tsx
#: src/components/navbar.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-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/quiet-hours.tsx #: src/components/routes/settings/quiet-hours.tsx
@@ -1925,9 +1970,15 @@ msgstr "Zavihki"
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Target" msgid "Target"
msgstr "Cilj" msgstr "Cilj"
#: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx
msgid "target[,protocol[,port[,interval]]]"
msgstr ""
#: src/components/systemd-table/systemd-table.tsx #: src/components/systemd-table/systemd-table.tsx
msgid "Tasks" msgid "Tasks"
msgstr "Naloge" msgstr "Naloge"
@@ -2162,6 +2213,7 @@ msgstr "Posodobi"
#: src/components/containers-table/containers-table-columns.tsx #: src/components/containers-table/containers-table-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/routes/system/smart-table.tsx #: src/components/routes/system/smart-table.tsx
#: src/components/routes/system/storage-pools-table.tsx #: src/components/routes/system/storage-pools-table.tsx
#: src/components/systemd-table/systemd-table-columns.tsx #: src/components/systemd-table/systemd-table-columns.tsx
@@ -2217,6 +2269,7 @@ msgstr "Izkoriščenost"
msgid "Value" msgid "Value"
msgstr "Vrednost" msgstr "Vrednost"
#: src/components/network-monitors-table/network-monitors-table.tsx
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "View" msgid "View"
msgstr "Pogled" msgstr "Pogled"
@@ -2231,6 +2284,7 @@ msgstr "Prikaži več"
msgid "View your 200 most recent alerts." msgid "View your 200 most recent alerts."
msgstr "Oglejte si svojih 200 najnovejših opozoril." msgstr "Oglejte si svojih 200 najnovejših opozoril."
#: src/components/network-monitors-table/network-monitors-table.tsx
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "Visible Fields" msgid "Visible Fields"
msgstr "Vidna polja" msgstr "Vidna polja"
@@ -2305,3 +2359,4 @@ msgstr "Da"
#: 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 "Vaše uporabniške nastavitve so posodobljene." msgstr "Vaše uporabniške nastavitve so posodobljene."
+68 -13
View File
@@ -8,7 +8,7 @@ msgstr ""
"Language: sr\n" "Language: sr\n"
"Project-Id-Version: beszel\n" "Project-Id-Version: beszel\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-09-18 19:22\n" "PO-Revision-Date: 2026-09-24 17:29\n"
"Last-Translator: \n" "Last-Translator: \n"
"Language-Team: Serbian (Cyrillic)\n" "Language-Team: Serbian (Cyrillic)\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
@@ -52,14 +52,26 @@ msgstr "{count, plural, one {{countString} сат} few {{countString} сата}
msgid "{count, plural, one {{countString} minute} few {{countString} minutes} many {{countString} minutes} other {{countString} minutes}}" 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} минута}}" msgstr "{count, plural, one {{countString} минут} few {{countString} минута} many {{countString} минута} other {{countString} минута}}"
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "{daysLeft, plural, one {# day} other {# days}}"
msgstr ""
#: src/components/routes/system/charts/disk-charts.tsx #: src/components/routes/system/charts/disk-charts.tsx
msgid "{diskName} I/O" msgid "{diskName} I/O"
msgstr "I/O за {diskName}" msgstr "I/O за {diskName}"
#: src/components/systems-table/systems-table-columns.tsx
msgid "{numFailed, plural, one {# failed service} other {# failed services}}"
msgstr ""
#: src/components/routes/system/info-bar.tsx #: src/components/routes/system/info-bar.tsx
msgid "{threads, plural, one {# thread} other {# threads}}" msgid "{threads, plural, one {# thread} other {# threads}}"
msgstr "{threads, plural, one {# nit} few {# niti} other {# niti}}" msgstr "{threads, plural, one {# nit} few {# niti} other {# niti}}"
#: src/components/systems-table/systems-table-columns.tsx
msgid "{totalCount, plural, one {# service} other {# services}}"
msgstr ""
#: src/lib/utils.ts #: src/lib/utils.ts
msgid "1 hour" msgid "1 hour"
msgstr "1 сат" msgstr "1 сат"
@@ -123,10 +135,10 @@ msgstr "Активна упозорења"
msgid "Active state" msgid "Active state"
msgstr "Активно стање" msgstr "Активно стање"
#: src/components/add-system.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/add-system.tsx msgid "Add"
#: src/components/navbar.tsx msgstr ""
#: src/components/navbar.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
@@ -136,6 +148,13 @@ msgstr "Активно стање"
msgid "Add {foo}" msgid "Add {foo}"
msgstr "Додај {foo}" msgstr "Додај {foo}"
#: src/components/add-system.tsx
#: src/components/add-system.tsx
#: src/components/navbar.tsx
#: src/components/navbar.tsx
msgid "Add System"
msgstr "Додај Систем"
#: src/components/routes/settings/notifications.tsx #: src/components/routes/settings/notifications.tsx
msgid "Add URL" msgid "Add URL"
msgstr "Додај URL" msgstr "Додај URL"
@@ -260,6 +279,7 @@ msgstr "Просечна искоришћеност мотора графичк
msgid "Average, minimum, and maximum response time" msgid "Average, minimum, and maximum response time"
msgstr "Prosečno, minimalno i maksimalno vreme odziva" msgstr "Prosečno, minimalno i maksimalno vreme odziva"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Avg 1h" msgid "Avg 1h"
msgstr "Prosek 1 h" msgstr "Prosek 1 h"
@@ -383,6 +403,19 @@ msgstr "Пажња - потенцијални губитак података"
msgid "Celsius (°C)" msgid "Celsius (°C)"
msgstr "Целзијус (°C)" msgstr "Целзијус (°C)"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Certificate"
msgstr ""
#: src/components/network-monitors-table/network-monitors-table.tsx
msgid "Certificate expired {expires}"
msgstr ""
#: src/components/network-monitors-table/network-monitors-table.tsx
msgid "Certificate expires {expires}"
msgstr ""
#: src/components/routes/settings/general.tsx #: src/components/routes/settings/general.tsx
msgid "Change display units for metrics." msgid "Change display units for metrics."
msgstr "Промените јединице приказа за метрике." msgstr "Промените јединице приказа за метрике."
@@ -776,12 +809,15 @@ msgstr "Трајање"
msgid "Edit" msgid "Edit"
msgstr "Измени" msgstr "Измени"
#: src/components/add-system.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/routes/settings/quiet-hours.tsx #: src/components/routes/settings/quiet-hours.tsx
msgid "Edit {foo}" msgid "Edit {foo}"
msgstr "Измени {foo}" msgstr "Измени {foo}"
#: src/components/add-system.tsx
msgid "Edit System"
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
@@ -867,6 +903,10 @@ msgstr "Системи који нису дефинисани у <0>config.yml</
msgid "Exited active" msgid "Exited active"
msgstr "Излазак активан" msgstr "Излазак активан"
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Expired"
msgstr ""
#: src/components/routes/settings/tokens-fingerprints.tsx #: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Expires after one hour or on hub restart." msgid "Expires after one hour or on hub restart."
msgstr "Истиче након једног сата или при поновном покретању хаба." msgstr "Истиче након једног сата или при поновном покретању хаба."
@@ -887,10 +927,6 @@ 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 #: src/components/routes/system/smart-table.tsx
msgid "Failed Attributes:" msgid "Failed Attributes:"
msgstr "Неуспели атрибути:" msgstr "Неуспели атрибути:"
@@ -1090,6 +1126,7 @@ msgstr "Dostupno je ažuriranje slike"
msgid "Inactive" msgid "Inactive"
msgstr "Неактивно" msgstr "Неактивно"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/routes/settings/heartbeat.tsx #: src/components/routes/settings/heartbeat.tsx
msgid "Interval" msgid "Interval"
@@ -1182,6 +1219,7 @@ msgctxt "Packet loss"
msgid "Loss" msgid "Loss"
msgstr "Gubitak" msgstr "Gubitak"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Loss 1h" msgid "Loss 1h"
msgstr "Gubitak 1 h" msgstr "Gubitak 1 h"
@@ -1204,6 +1242,7 @@ msgstr "Упутства за ручно подешавање"
msgid "Max 1 min" msgid "Max 1 min"
msgstr "Макс 1 мин" msgstr "Макс 1 мин"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Max 1h" msgid "Max 1h"
msgstr "Maks. 1 h" msgstr "Maks. 1 h"
@@ -1234,6 +1273,7 @@ msgstr "Употреба меморије"
msgid "Memory usage of containers" msgid "Memory usage of containers"
msgstr "Коришћење меморије контејнера" msgstr "Коришћење меморије контејнера"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Min 1h" msgid "Min 1h"
msgstr "Min. 1 h" msgstr "Min. 1 h"
@@ -1565,6 +1605,7 @@ msgstr "Процес покренут"
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Protocol" msgid "Protocol"
msgstr "Protokol" msgstr "Protokol"
@@ -1653,6 +1694,7 @@ msgstr "Ресетуј лозинку"
msgid "Resolved" msgid "Resolved"
msgstr "Решено" msgstr "Решено"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/routes/system/charts/monitors-charts.tsx #: src/components/routes/system/charts/monitors-charts.tsx
msgid "Response" msgid "Response"
@@ -1698,7 +1740,6 @@ msgstr "S.M.A.R.T. детаљи"
msgid "S.M.A.R.T. Self-Test" msgid "S.M.A.R.T. Self-Test"
msgstr "S.M.A.R.T. самопровера" msgstr "S.M.A.R.T. самопровера"
#: src/components/add-system.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
msgid "Save {foo}" msgid "Save {foo}"
msgstr "Сачувај {foo}" msgstr "Сачувај {foo}"
@@ -1712,6 +1753,10 @@ msgstr "Сачувајте адресу користећи enter тастер и
msgid "Save Settings" msgid "Save Settings"
msgstr "Сачувај подешавања" msgstr "Сачувај подешавања"
#: src/components/add-system.tsx
msgid "Save System"
msgstr "Сачувај Систем"
#: src/components/routes/settings/tokens-fingerprints.tsx #: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Saved in the database and does not expire until you disable it." msgid "Saved in the database and does not expire until you disable it."
msgstr "Сачувано у бази података и не истиче док га не онемогућите." msgstr "Сачувано у бази података и не истиче док га не онемогућите."
@@ -1833,6 +1878,7 @@ msgstr "Пријави се"
msgid "SMTP settings" msgid "SMTP settings"
msgstr "SMTP подешавања" msgstr "SMTP подешавања"
#: src/components/network-monitors-table/network-monitors-table.tsx
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "Sort By" msgid "Sort By"
msgstr "Сортирај по" msgstr "Сортирај по"
@@ -1875,12 +1921,11 @@ msgstr "Swap употреба"
msgid "Switch theme" msgid "Switch theme"
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/containers-table/containers-table-columns.tsx
#: src/components/navbar.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-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/quiet-hours.tsx #: src/components/routes/settings/quiet-hours.tsx
@@ -1925,9 +1970,15 @@ msgstr "Картице"
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Target" msgid "Target"
msgstr "Cilj" msgstr "Cilj"
#: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx
msgid "target[,protocol[,port[,interval]]]"
msgstr ""
#: src/components/systemd-table/systemd-table.tsx #: src/components/systemd-table/systemd-table.tsx
msgid "Tasks" msgid "Tasks"
msgstr "Задаци" msgstr "Задаци"
@@ -2162,6 +2213,7 @@ msgstr "Ажурирај"
#: src/components/containers-table/containers-table-columns.tsx #: src/components/containers-table/containers-table-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/routes/system/smart-table.tsx #: src/components/routes/system/smart-table.tsx
#: src/components/routes/system/storage-pools-table.tsx #: src/components/routes/system/storage-pools-table.tsx
#: src/components/systemd-table/systemd-table-columns.tsx #: src/components/systemd-table/systemd-table-columns.tsx
@@ -2217,6 +2269,7 @@ msgstr "Искоришћеност"
msgid "Value" msgid "Value"
msgstr "Вредност" msgstr "Вредност"
#: src/components/network-monitors-table/network-monitors-table.tsx
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "View" msgid "View"
msgstr "Погледај" msgstr "Погледај"
@@ -2231,6 +2284,7 @@ msgstr "Погледај више"
msgid "View your 200 most recent alerts." msgid "View your 200 most recent alerts."
msgstr "Погледајте ваших 200 најновијих упозорења." msgstr "Погледајте ваших 200 најновијих упозорења."
#: src/components/network-monitors-table/network-monitors-table.tsx
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "Visible Fields" msgid "Visible Fields"
msgstr "Видљива поља" msgstr "Видљива поља"
@@ -2305,3 +2359,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 "Ваша корисничка подешавања су ажурирана." msgstr "Ваша корисничка подешавања су ажурирана."
+68 -13
View File
@@ -8,7 +8,7 @@ msgstr ""
"Language: sv\n" "Language: sv\n"
"Project-Id-Version: beszel\n" "Project-Id-Version: beszel\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-09-18 19:22\n" "PO-Revision-Date: 2026-09-24 17:29\n"
"Last-Translator: \n" "Last-Translator: \n"
"Language-Team: Swedish\n" "Language-Team: Swedish\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -52,14 +52,26 @@ msgstr "{count, plural, one {{countString} timme} other {{countString} timmar}}"
msgid "{count, plural, one {{countString} minute} few {{countString} minutes} many {{countString} minutes} other {{countString} minutes}}" msgid "{count, plural, one {{countString} minute} few {{countString} minutes} many {{countString} minutes} other {{countString} minutes}}"
msgstr "{count, plural, one {{countString} minut} few {{countString} minuter} many {{countString} minuter} other {{countString} minuter}}" msgstr "{count, plural, one {{countString} minut} few {{countString} minuter} many {{countString} minuter} other {{countString} minuter}}"
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "{daysLeft, plural, one {# day} other {# days}}"
msgstr ""
#: src/components/routes/system/charts/disk-charts.tsx #: src/components/routes/system/charts/disk-charts.tsx
msgid "{diskName} I/O" msgid "{diskName} I/O"
msgstr "I/O för {diskName}" msgstr "I/O för {diskName}"
#: src/components/systems-table/systems-table-columns.tsx
msgid "{numFailed, plural, one {# failed service} other {# failed services}}"
msgstr ""
#: src/components/routes/system/info-bar.tsx #: src/components/routes/system/info-bar.tsx
msgid "{threads, plural, one {# thread} other {# threads}}" msgid "{threads, plural, one {# thread} other {# threads}}"
msgstr "{threads, plural, one {# tråd} other {# trådar}}" msgstr "{threads, plural, one {# tråd} other {# trådar}}"
#: src/components/systems-table/systems-table-columns.tsx
msgid "{totalCount, plural, one {# service} other {# services}}"
msgstr ""
#: src/lib/utils.ts #: src/lib/utils.ts
msgid "1 hour" msgid "1 hour"
msgstr "1 timme" msgstr "1 timme"
@@ -123,10 +135,10 @@ msgstr "Aktiva larm"
msgid "Active state" msgid "Active state"
msgstr "Aktivt tillstånd" msgstr "Aktivt tillstånd"
#: src/components/add-system.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/add-system.tsx msgid "Add"
#: src/components/navbar.tsx msgstr ""
#: src/components/navbar.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
@@ -136,6 +148,13 @@ msgstr "Aktivt tillstånd"
msgid "Add {foo}" msgid "Add {foo}"
msgstr "Lägg till {foo}" msgstr "Lägg till {foo}"
#: src/components/add-system.tsx
#: src/components/add-system.tsx
#: src/components/navbar.tsx
#: src/components/navbar.tsx
msgid "Add System"
msgstr "Lägg till System"
#: src/components/routes/settings/notifications.tsx #: src/components/routes/settings/notifications.tsx
msgid "Add URL" msgid "Add URL"
msgstr "Lägg till URL" msgstr "Lägg till URL"
@@ -260,6 +279,7 @@ msgstr "Genomsnittlig användning av GPU-motorer"
msgid "Average, minimum, and maximum response time" msgid "Average, minimum, and maximum response time"
msgstr "Genomsnittlig, lägsta och högsta svarstid" msgstr "Genomsnittlig, lägsta och högsta svarstid"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Avg 1h" msgid "Avg 1h"
msgstr "Gen. 1 tim" msgstr "Gen. 1 tim"
@@ -383,6 +403,19 @@ msgstr "Varning - potentiell dataförlust"
msgid "Celsius (°C)" msgid "Celsius (°C)"
msgstr "Celsius (°C)" msgstr "Celsius (°C)"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Certificate"
msgstr ""
#: src/components/network-monitors-table/network-monitors-table.tsx
msgid "Certificate expired {expires}"
msgstr ""
#: src/components/network-monitors-table/network-monitors-table.tsx
msgid "Certificate expires {expires}"
msgstr ""
#: src/components/routes/settings/general.tsx #: src/components/routes/settings/general.tsx
msgid "Change display units for metrics." msgid "Change display units for metrics."
msgstr "Ändra enheter för mätvärden." msgstr "Ändra enheter för mätvärden."
@@ -776,12 +809,15 @@ msgstr "Varaktighet"
msgid "Edit" msgid "Edit"
msgstr "Redigera" msgstr "Redigera"
#: src/components/add-system.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/routes/settings/quiet-hours.tsx #: src/components/routes/settings/quiet-hours.tsx
msgid "Edit {foo}" msgid "Edit {foo}"
msgstr "Redigera {foo}" msgstr "Redigera {foo}"
#: src/components/add-system.tsx
msgid "Edit System"
msgstr "Redigera System"
#: 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
@@ -867,6 +903,10 @@ msgstr "Befintliga system som inte definieras i <0>config.yml</0> kommer att tas
msgid "Exited active" msgid "Exited active"
msgstr "Avslutades aktivt" msgstr "Avslutades aktivt"
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Expired"
msgstr ""
#: src/components/routes/settings/tokens-fingerprints.tsx #: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Expires after one hour or on hub restart." msgid "Expires after one hour or on hub restart."
msgstr "Upphör efter en timme eller vid hub-omstart." msgstr "Upphör efter en timme eller vid hub-omstart."
@@ -887,10 +927,6 @@ msgstr "Exportera din nuvarande systemkonfiguration."
msgid "Fahrenheit (°F)" msgid "Fahrenheit (°F)"
msgstr "Fahrenheit (°F)" msgstr "Fahrenheit (°F)"
#: src/components/systems-table/systems-table-columns.tsx
msgid "Failed"
msgstr "Misslyckades"
#: src/components/routes/system/smart-table.tsx #: src/components/routes/system/smart-table.tsx
msgid "Failed Attributes:" msgid "Failed Attributes:"
msgstr "Misslyckade attribut:" msgstr "Misslyckade attribut:"
@@ -1090,6 +1126,7 @@ msgstr "Bilduppdatering tillgänglig"
msgid "Inactive" msgid "Inactive"
msgstr "Inaktiv" msgstr "Inaktiv"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/routes/settings/heartbeat.tsx #: src/components/routes/settings/heartbeat.tsx
msgid "Interval" msgid "Interval"
@@ -1182,6 +1219,7 @@ msgctxt "Packet loss"
msgid "Loss" msgid "Loss"
msgstr "Förlust" msgstr "Förlust"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Loss 1h" msgid "Loss 1h"
msgstr "Förlust 1 h" msgstr "Förlust 1 h"
@@ -1204,6 +1242,7 @@ msgstr "Manuella installationsinstruktioner"
msgid "Max 1 min" msgid "Max 1 min"
msgstr "Max 1 min" msgstr "Max 1 min"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Max 1h" msgid "Max 1h"
msgstr "Max. 1 tim" msgstr "Max. 1 tim"
@@ -1234,6 +1273,7 @@ msgstr "Minnesanvändning"
msgid "Memory usage of containers" msgid "Memory usage of containers"
msgstr "Minnesanvändning för containrar" msgstr "Minnesanvändning för containrar"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Min 1h" msgid "Min 1h"
msgstr "Min. 1 tim" msgstr "Min. 1 tim"
@@ -1565,6 +1605,7 @@ msgstr "Process startad"
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Protocol" msgid "Protocol"
msgstr "Protokoll" msgstr "Protokoll"
@@ -1653,6 +1694,7 @@ msgstr "Återställ lösenord"
msgid "Resolved" msgid "Resolved"
msgstr "Löst" msgstr "Löst"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/routes/system/charts/monitors-charts.tsx #: src/components/routes/system/charts/monitors-charts.tsx
msgid "Response" msgid "Response"
@@ -1698,7 +1740,6 @@ msgstr "S.M.A.R.T.-detaljer"
msgid "S.M.A.R.T. Self-Test" msgid "S.M.A.R.T. Self-Test"
msgstr "S.M.A.R.T. själftest" msgstr "S.M.A.R.T. själftest"
#: src/components/add-system.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
msgid "Save {foo}" msgid "Save {foo}"
msgstr "Spara {foo}" msgstr "Spara {foo}"
@@ -1712,6 +1753,10 @@ msgstr "Spara adressen med Enter-tangenten eller komma. Lämna tomt för att ina
msgid "Save Settings" msgid "Save Settings"
msgstr "Spara inställningar" msgstr "Spara inställningar"
#: src/components/add-system.tsx
msgid "Save System"
msgstr "Spara System"
#: src/components/routes/settings/tokens-fingerprints.tsx #: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Saved in the database and does not expire until you disable it." msgid "Saved in the database and does not expire until you disable it."
msgstr "Sparad i databasen och upphör inte förrän du inaktiverar den." msgstr "Sparad i databasen och upphör inte förrän du inaktiverar den."
@@ -1833,6 +1878,7 @@ msgstr "Logga in"
msgid "SMTP settings" msgid "SMTP settings"
msgstr "SMTP-inställningar" msgstr "SMTP-inställningar"
#: src/components/network-monitors-table/network-monitors-table.tsx
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "Sort By" msgid "Sort By"
msgstr "Sortera efter" msgstr "Sortera efter"
@@ -1875,12 +1921,11 @@ msgstr "Swap-användning"
msgid "Switch theme" msgid "Switch theme"
msgstr "Byt tema" msgstr "Byt tema"
#: 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/containers-table/containers-table-columns.tsx
#: src/components/navbar.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-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/quiet-hours.tsx #: src/components/routes/settings/quiet-hours.tsx
@@ -1925,9 +1970,15 @@ msgstr "Flikar"
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Target" msgid "Target"
msgstr "Mål" msgstr "Mål"
#: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx
msgid "target[,protocol[,port[,interval]]]"
msgstr ""
#: src/components/systemd-table/systemd-table.tsx #: src/components/systemd-table/systemd-table.tsx
msgid "Tasks" msgid "Tasks"
msgstr "Uppgifter" msgstr "Uppgifter"
@@ -2162,6 +2213,7 @@ msgstr "Uppdatera"
#: src/components/containers-table/containers-table-columns.tsx #: src/components/containers-table/containers-table-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/routes/system/smart-table.tsx #: src/components/routes/system/smart-table.tsx
#: src/components/routes/system/storage-pools-table.tsx #: src/components/routes/system/storage-pools-table.tsx
#: src/components/systemd-table/systemd-table-columns.tsx #: src/components/systemd-table/systemd-table-columns.tsx
@@ -2217,6 +2269,7 @@ msgstr "Användning"
msgid "Value" msgid "Value"
msgstr "Värde" msgstr "Värde"
#: src/components/network-monitors-table/network-monitors-table.tsx
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "View" msgid "View"
msgstr "Visa" msgstr "Visa"
@@ -2231,6 +2284,7 @@ msgstr "Visa mer"
msgid "View your 200 most recent alerts." msgid "View your 200 most recent alerts."
msgstr "Visa dina 200 senaste larm." msgstr "Visa dina 200 senaste larm."
#: src/components/network-monitors-table/network-monitors-table.tsx
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "Visible Fields" msgid "Visible Fields"
msgstr "Synliga fält" msgstr "Synliga fält"
@@ -2305,3 +2359,4 @@ msgstr "Ja"
#: 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 "Dina användarinställningar har uppdaterats." msgstr "Dina användarinställningar har uppdaterats."
+67 -13
View File
@@ -8,7 +8,7 @@ msgstr ""
"Language: th\n" "Language: th\n"
"Project-Id-Version: beszel\n" "Project-Id-Version: beszel\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-09-18 19:22\n" "PO-Revision-Date: 2026-09-24 17:29\n"
"Last-Translator: \n" "Last-Translator: \n"
"Language-Team: Thai\n" "Language-Team: Thai\n"
"Plural-Forms: nplurals=1; plural=0;\n" "Plural-Forms: nplurals=1; plural=0;\n"
@@ -52,14 +52,26 @@ msgstr ""
msgid "{count, plural, one {{countString} minute} few {{countString} minutes} many {{countString} minutes} other {{countString} minutes}}" msgid "{count, plural, one {{countString} minute} few {{countString} minutes} many {{countString} minutes} other {{countString} minutes}}"
msgstr "" msgstr ""
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "{daysLeft, plural, one {# day} other {# days}}"
msgstr ""
#: src/components/routes/system/charts/disk-charts.tsx #: src/components/routes/system/charts/disk-charts.tsx
msgid "{diskName} I/O" msgid "{diskName} I/O"
msgstr "" msgstr ""
#: src/components/systems-table/systems-table-columns.tsx
msgid "{numFailed, plural, one {# failed service} other {# failed services}}"
msgstr ""
#: src/components/routes/system/info-bar.tsx #: src/components/routes/system/info-bar.tsx
msgid "{threads, plural, one {# thread} other {# threads}}" msgid "{threads, plural, one {# thread} other {# threads}}"
msgstr "" msgstr ""
#: src/components/systems-table/systems-table-columns.tsx
msgid "{totalCount, plural, one {# service} other {# services}}"
msgstr ""
#: src/lib/utils.ts #: src/lib/utils.ts
msgid "1 hour" msgid "1 hour"
msgstr "" msgstr ""
@@ -123,10 +135,10 @@ msgstr ""
msgid "Active state" msgid "Active state"
msgstr "" msgstr ""
#: src/components/add-system.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/add-system.tsx msgid "Add"
#: src/components/navbar.tsx msgstr ""
#: src/components/navbar.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
@@ -136,6 +148,13 @@ msgstr ""
msgid "Add {foo}" msgid "Add {foo}"
msgstr "" msgstr ""
#: src/components/add-system.tsx
#: src/components/add-system.tsx
#: src/components/navbar.tsx
#: src/components/navbar.tsx
msgid "Add System"
msgstr ""
#: src/components/routes/settings/notifications.tsx #: src/components/routes/settings/notifications.tsx
msgid "Add URL" msgid "Add URL"
msgstr "" msgstr ""
@@ -260,6 +279,7 @@ msgstr ""
msgid "Average, minimum, and maximum response time" msgid "Average, minimum, and maximum response time"
msgstr "" msgstr ""
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Avg 1h" msgid "Avg 1h"
msgstr "" msgstr ""
@@ -383,6 +403,19 @@ msgstr ""
msgid "Celsius (°C)" msgid "Celsius (°C)"
msgstr "" msgstr ""
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Certificate"
msgstr ""
#: src/components/network-monitors-table/network-monitors-table.tsx
msgid "Certificate expired {expires}"
msgstr ""
#: src/components/network-monitors-table/network-monitors-table.tsx
msgid "Certificate expires {expires}"
msgstr ""
#: src/components/routes/settings/general.tsx #: src/components/routes/settings/general.tsx
msgid "Change display units for metrics." msgid "Change display units for metrics."
msgstr "" msgstr ""
@@ -776,12 +809,15 @@ msgstr ""
msgid "Edit" msgid "Edit"
msgstr "" msgstr ""
#: src/components/add-system.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/routes/settings/quiet-hours.tsx #: src/components/routes/settings/quiet-hours.tsx
msgid "Edit {foo}" msgid "Edit {foo}"
msgstr "" msgstr ""
#: src/components/add-system.tsx
msgid "Edit System"
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
@@ -867,6 +903,10 @@ msgstr ""
msgid "Exited active" msgid "Exited active"
msgstr "" msgstr ""
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Expired"
msgstr ""
#: src/components/routes/settings/tokens-fingerprints.tsx #: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Expires after one hour or on hub restart." msgid "Expires after one hour or on hub restart."
msgstr "" msgstr ""
@@ -887,10 +927,6 @@ 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 #: src/components/routes/system/smart-table.tsx
msgid "Failed Attributes:" msgid "Failed Attributes:"
msgstr "" msgstr ""
@@ -1090,6 +1126,7 @@ msgstr ""
msgid "Inactive" msgid "Inactive"
msgstr "" msgstr ""
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/routes/settings/heartbeat.tsx #: src/components/routes/settings/heartbeat.tsx
msgid "Interval" msgid "Interval"
@@ -1182,6 +1219,7 @@ msgctxt "Packet loss"
msgid "Loss" msgid "Loss"
msgstr "" msgstr ""
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Loss 1h" msgid "Loss 1h"
msgstr "" msgstr ""
@@ -1204,6 +1242,7 @@ msgstr ""
msgid "Max 1 min" msgid "Max 1 min"
msgstr "" msgstr ""
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Max 1h" msgid "Max 1h"
msgstr "" msgstr ""
@@ -1234,6 +1273,7 @@ msgstr ""
msgid "Memory usage of containers" msgid "Memory usage of containers"
msgstr "การใช้หน่วยความจำของคอนเทนเนอร์" msgstr "การใช้หน่วยความจำของคอนเทนเนอร์"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Min 1h" msgid "Min 1h"
msgstr "" msgstr ""
@@ -1565,6 +1605,7 @@ msgstr ""
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Protocol" msgid "Protocol"
msgstr "" msgstr ""
@@ -1653,6 +1694,7 @@ msgstr ""
msgid "Resolved" msgid "Resolved"
msgstr "" msgstr ""
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/routes/system/charts/monitors-charts.tsx #: src/components/routes/system/charts/monitors-charts.tsx
msgid "Response" msgid "Response"
@@ -1698,7 +1740,6 @@ msgstr ""
msgid "S.M.A.R.T. Self-Test" msgid "S.M.A.R.T. Self-Test"
msgstr "" msgstr ""
#: src/components/add-system.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
msgid "Save {foo}" msgid "Save {foo}"
msgstr "" msgstr ""
@@ -1712,6 +1753,10 @@ msgstr ""
msgid "Save Settings" msgid "Save Settings"
msgstr "" msgstr ""
#: src/components/add-system.tsx
msgid "Save System"
msgstr ""
#: src/components/routes/settings/tokens-fingerprints.tsx #: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Saved in the database and does not expire until you disable it." msgid "Saved in the database and does not expire until you disable it."
msgstr "" msgstr ""
@@ -1833,6 +1878,7 @@ msgstr ""
msgid "SMTP settings" msgid "SMTP settings"
msgstr "" msgstr ""
#: src/components/network-monitors-table/network-monitors-table.tsx
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "Sort By" msgid "Sort By"
msgstr "" msgstr ""
@@ -1875,12 +1921,11 @@ msgstr ""
msgid "Switch theme" msgid "Switch theme"
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/containers-table/containers-table-columns.tsx
#: src/components/navbar.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-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/quiet-hours.tsx #: src/components/routes/settings/quiet-hours.tsx
@@ -1925,9 +1970,15 @@ msgstr ""
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Target" msgid "Target"
msgstr "" msgstr ""
#: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx
msgid "target[,protocol[,port[,interval]]]"
msgstr ""
#: src/components/systemd-table/systemd-table.tsx #: src/components/systemd-table/systemd-table.tsx
msgid "Tasks" msgid "Tasks"
msgstr "" msgstr ""
@@ -2162,6 +2213,7 @@ msgstr ""
#: src/components/containers-table/containers-table-columns.tsx #: src/components/containers-table/containers-table-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/routes/system/smart-table.tsx #: src/components/routes/system/smart-table.tsx
#: src/components/routes/system/storage-pools-table.tsx #: src/components/routes/system/storage-pools-table.tsx
#: src/components/systemd-table/systemd-table-columns.tsx #: src/components/systemd-table/systemd-table-columns.tsx
@@ -2217,6 +2269,7 @@ msgstr ""
msgid "Value" msgid "Value"
msgstr "" msgstr ""
#: src/components/network-monitors-table/network-monitors-table.tsx
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "View" msgid "View"
msgstr "" msgstr ""
@@ -2231,6 +2284,7 @@ msgstr ""
msgid "View your 200 most recent alerts." msgid "View your 200 most recent alerts."
msgstr "" msgstr ""
#: src/components/network-monitors-table/network-monitors-table.tsx
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "Visible Fields" msgid "Visible Fields"
msgstr "" msgstr ""
+68 -13
View File
@@ -8,7 +8,7 @@ msgstr ""
"Language: tr\n" "Language: tr\n"
"Project-Id-Version: beszel\n" "Project-Id-Version: beszel\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-09-18 19:22\n" "PO-Revision-Date: 2026-09-24 17:29\n"
"Last-Translator: \n" "Last-Translator: \n"
"Language-Team: Turkish\n" "Language-Team: Turkish\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -52,14 +52,26 @@ msgstr "{count, plural, one {{countString} saat} other {{countString} saat}}"
msgid "{count, plural, one {{countString} minute} few {{countString} minutes} many {{countString} minutes} other {{countString} minutes}}" msgid "{count, plural, one {{countString} minute} few {{countString} minutes} many {{countString} minutes} other {{countString} minutes}}"
msgstr "{count, plural, one {{countString} dakika} few {{countString} dakika} many {{countString} dakika} other {{countString} dakika}}" msgstr "{count, plural, one {{countString} dakika} few {{countString} dakika} many {{countString} dakika} other {{countString} dakika}}"
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "{daysLeft, plural, one {# day} other {# days}}"
msgstr ""
#: src/components/routes/system/charts/disk-charts.tsx #: src/components/routes/system/charts/disk-charts.tsx
msgid "{diskName} I/O" msgid "{diskName} I/O"
msgstr "{diskName} G/Ç" msgstr "{diskName} G/Ç"
#: src/components/systems-table/systems-table-columns.tsx
msgid "{numFailed, plural, one {# failed service} other {# failed services}}"
msgstr ""
#: src/components/routes/system/info-bar.tsx #: src/components/routes/system/info-bar.tsx
msgid "{threads, plural, one {# thread} other {# threads}}" msgid "{threads, plural, one {# thread} other {# threads}}"
msgstr "{threads, plural, one {# iş parçacığı} other {# iş parçacığı}}" msgstr "{threads, plural, one {# iş parçacığı} other {# iş parçacığı}}"
#: src/components/systems-table/systems-table-columns.tsx
msgid "{totalCount, plural, one {# service} other {# services}}"
msgstr ""
#: src/lib/utils.ts #: src/lib/utils.ts
msgid "1 hour" msgid "1 hour"
msgstr "1 saat" msgstr "1 saat"
@@ -123,10 +135,10 @@ msgstr "Aktif Uyarılar"
msgid "Active state" msgid "Active state"
msgstr "Aktif durum" msgstr "Aktif durum"
#: src/components/add-system.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/add-system.tsx msgid "Add"
#: src/components/navbar.tsx msgstr ""
#: src/components/navbar.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
@@ -136,6 +148,13 @@ msgstr "Aktif durum"
msgid "Add {foo}" msgid "Add {foo}"
msgstr "{foo} ekle" msgstr "{foo} ekle"
#: src/components/add-system.tsx
#: src/components/add-system.tsx
#: src/components/navbar.tsx
#: src/components/navbar.tsx
msgid "Add System"
msgstr "Sistem ekle"
#: src/components/routes/settings/notifications.tsx #: src/components/routes/settings/notifications.tsx
msgid "Add URL" msgid "Add URL"
msgstr "URL Ekle" msgstr "URL Ekle"
@@ -260,6 +279,7 @@ msgstr "GPU motorlarının ortalama kullanımı"
msgid "Average, minimum, and maximum response time" msgid "Average, minimum, and maximum response time"
msgstr "Ortalama, minimum ve maksimum yanıt süresi" msgstr "Ortalama, minimum ve maksimum yanıt süresi"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Avg 1h" msgid "Avg 1h"
msgstr "1 saat ort." msgstr "1 saat ort."
@@ -383,6 +403,19 @@ msgstr "Dikkat - potansiyel veri kaybı"
msgid "Celsius (°C)" msgid "Celsius (°C)"
msgstr "Santigrat (°C)" msgstr "Santigrat (°C)"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Certificate"
msgstr ""
#: src/components/network-monitors-table/network-monitors-table.tsx
msgid "Certificate expired {expires}"
msgstr ""
#: src/components/network-monitors-table/network-monitors-table.tsx
msgid "Certificate expires {expires}"
msgstr ""
#: src/components/routes/settings/general.tsx #: src/components/routes/settings/general.tsx
msgid "Change display units for metrics." msgid "Change display units for metrics."
msgstr "Metrikler için görüntüleme birimlerini değiştirin." msgstr "Metrikler için görüntüleme birimlerini değiştirin."
@@ -776,12 +809,15 @@ msgstr "Süre"
msgid "Edit" msgid "Edit"
msgstr "Düzenle" msgstr "Düzenle"
#: src/components/add-system.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/routes/settings/quiet-hours.tsx #: src/components/routes/settings/quiet-hours.tsx
msgid "Edit {foo}" msgid "Edit {foo}"
msgstr "{foo} düzenle" msgstr "{foo} düzenle"
#: src/components/add-system.tsx
msgid "Edit System"
msgstr "Sistem düzenle"
#: 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
@@ -867,6 +903,10 @@ msgstr "<0>config.yml</0> içinde tanımlanmayan mevcut sistemler silinecektir.
msgid "Exited active" msgid "Exited active"
msgstr "Aktif olarak çıktı" msgstr "Aktif olarak çıktı"
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Expired"
msgstr ""
#: src/components/routes/settings/tokens-fingerprints.tsx #: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Expires after one hour or on hub restart." msgid "Expires after one hour or on hub restart."
msgstr "Bir saat sonra veya hub yeniden başlatıldığında sona erer." msgstr "Bir saat sonra veya hub yeniden başlatıldığında sona erer."
@@ -887,10 +927,6 @@ msgstr "Mevcut sistem yapılandırmanızı dışa aktarın."
msgid "Fahrenheit (°F)" msgid "Fahrenheit (°F)"
msgstr "Fahrenhayt (°F)" msgstr "Fahrenhayt (°F)"
#: src/components/systems-table/systems-table-columns.tsx
msgid "Failed"
msgstr "Başarısız"
#: src/components/routes/system/smart-table.tsx #: src/components/routes/system/smart-table.tsx
msgid "Failed Attributes:" msgid "Failed Attributes:"
msgstr "Başarısız Özellikler:" msgstr "Başarısız Özellikler:"
@@ -1090,6 +1126,7 @@ msgstr "Görüntü güncellemesi mevcut"
msgid "Inactive" msgid "Inactive"
msgstr "Pasif" msgstr "Pasif"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/routes/settings/heartbeat.tsx #: src/components/routes/settings/heartbeat.tsx
msgid "Interval" msgid "Interval"
@@ -1182,6 +1219,7 @@ msgctxt "Packet loss"
msgid "Loss" msgid "Loss"
msgstr "Kayıp" msgstr "Kayıp"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Loss 1h" msgid "Loss 1h"
msgstr "1 saat kaybı" msgstr "1 saat kaybı"
@@ -1204,6 +1242,7 @@ msgstr "Manuel kurulum talimatları"
msgid "Max 1 min" msgid "Max 1 min"
msgstr "Maks 1 dk" msgstr "Maks 1 dk"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Max 1h" msgid "Max 1h"
msgstr "Maks. 1 saat" msgstr "Maks. 1 saat"
@@ -1234,6 +1273,7 @@ msgstr "Bellek Kullanımı"
msgid "Memory usage of containers" msgid "Memory usage of containers"
msgstr "Konteynerlerin bellek kullanımı" msgstr "Konteynerlerin bellek kullanımı"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Min 1h" msgid "Min 1h"
msgstr "Min. 1 saat" msgstr "Min. 1 saat"
@@ -1565,6 +1605,7 @@ msgstr "Süreç başlatıldı"
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Protocol" msgid "Protocol"
msgstr "Protokol" msgstr "Protokol"
@@ -1653,6 +1694,7 @@ msgstr "Şifreyi Sıfırla"
msgid "Resolved" msgid "Resolved"
msgstr "Çözüldü" msgstr "Çözüldü"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/routes/system/charts/monitors-charts.tsx #: src/components/routes/system/charts/monitors-charts.tsx
msgid "Response" msgid "Response"
@@ -1698,7 +1740,6 @@ msgstr "S.M.A.R.T. Ayrıntıları"
msgid "S.M.A.R.T. Self-Test" msgid "S.M.A.R.T. Self-Test"
msgstr "S.M.A.R.T. Kendiliğinden Test" msgstr "S.M.A.R.T. Kendiliğinden Test"
#: src/components/add-system.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
msgid "Save {foo}" msgid "Save {foo}"
msgstr "{foo} Kaydet" msgstr "{foo} Kaydet"
@@ -1712,6 +1753,10 @@ msgstr "Adresleri enter tuşu veya virgül ile kaydedin. E-posta bildirimlerini
msgid "Save Settings" msgid "Save Settings"
msgstr "Ayarları Kaydet" msgstr "Ayarları Kaydet"
#: src/components/add-system.tsx
msgid "Save System"
msgstr "Sistem Kaydet"
#: src/components/routes/settings/tokens-fingerprints.tsx #: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Saved in the database and does not expire until you disable it." msgid "Saved in the database and does not expire until you disable it."
msgstr "Veritabanında kaydedilir ve siz devre dışı bırakana kadar süresi dolmaz." msgstr "Veritabanında kaydedilir ve siz devre dışı bırakana kadar süresi dolmaz."
@@ -1833,6 +1878,7 @@ msgstr "Giriş yap"
msgid "SMTP settings" msgid "SMTP settings"
msgstr "SMTP ayarları" msgstr "SMTP ayarları"
#: src/components/network-monitors-table/network-monitors-table.tsx
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "Sort By" msgid "Sort By"
msgstr "Sıralama Ölçütü" msgstr "Sıralama Ölçütü"
@@ -1875,12 +1921,11 @@ msgstr "Takas Kullanımı"
msgid "Switch theme" msgid "Switch theme"
msgstr "Temayı değiştir" msgstr "Temayı değiştir"
#: 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/containers-table/containers-table-columns.tsx
#: src/components/navbar.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-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/quiet-hours.tsx #: src/components/routes/settings/quiet-hours.tsx
@@ -1925,9 +1970,15 @@ msgstr "Sekmeler"
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Target" msgid "Target"
msgstr "Hedef" msgstr "Hedef"
#: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx
msgid "target[,protocol[,port[,interval]]]"
msgstr ""
#: src/components/systemd-table/systemd-table.tsx #: src/components/systemd-table/systemd-table.tsx
msgid "Tasks" msgid "Tasks"
msgstr "Görevler" msgstr "Görevler"
@@ -2162,6 +2213,7 @@ msgstr "Güncelle"
#: src/components/containers-table/containers-table-columns.tsx #: src/components/containers-table/containers-table-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/routes/system/smart-table.tsx #: src/components/routes/system/smart-table.tsx
#: src/components/routes/system/storage-pools-table.tsx #: src/components/routes/system/storage-pools-table.tsx
#: src/components/systemd-table/systemd-table-columns.tsx #: src/components/systemd-table/systemd-table-columns.tsx
@@ -2217,6 +2269,7 @@ msgstr "Kullanım"
msgid "Value" msgid "Value"
msgstr "Değer" msgstr "Değer"
#: src/components/network-monitors-table/network-monitors-table.tsx
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "View" msgid "View"
msgstr "Görüntüle" msgstr "Görüntüle"
@@ -2231,6 +2284,7 @@ msgstr "Daha fazla göster"
msgid "View your 200 most recent alerts." msgid "View your 200 most recent alerts."
msgstr "En son 200 uyarınızı görüntüleyin." msgstr "En son 200 uyarınızı görüntüleyin."
#: src/components/network-monitors-table/network-monitors-table.tsx
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "Visible Fields" msgid "Visible Fields"
msgstr "Görünür Alanlar" msgstr "Görünür Alanlar"
@@ -2305,3 +2359,4 @@ msgstr "Evet"
#: 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 "Kullanıcı ayarlarınız güncellendi." msgstr "Kullanıcı ayarlarınız güncellendi."
+67 -13
View File
@@ -8,7 +8,7 @@ msgstr ""
"Language: ug\n" "Language: ug\n"
"Project-Id-Version: beszel\n" "Project-Id-Version: beszel\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-09-18 19:22\n" "PO-Revision-Date: 2026-09-24 17:29\n"
"Last-Translator: \n" "Last-Translator: \n"
"Language-Team: Uyghur\n" "Language-Team: Uyghur\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -52,14 +52,26 @@ msgstr ""
msgid "{count, plural, one {{countString} minute} few {{countString} minutes} many {{countString} minutes} other {{countString} minutes}}" msgid "{count, plural, one {{countString} minute} few {{countString} minutes} many {{countString} minutes} other {{countString} minutes}}"
msgstr "" msgstr ""
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "{daysLeft, plural, one {# day} other {# days}}"
msgstr ""
#: src/components/routes/system/charts/disk-charts.tsx #: src/components/routes/system/charts/disk-charts.tsx
msgid "{diskName} I/O" msgid "{diskName} I/O"
msgstr "" msgstr ""
#: src/components/systems-table/systems-table-columns.tsx
msgid "{numFailed, plural, one {# failed service} other {# failed services}}"
msgstr ""
#: src/components/routes/system/info-bar.tsx #: src/components/routes/system/info-bar.tsx
msgid "{threads, plural, one {# thread} other {# threads}}" msgid "{threads, plural, one {# thread} other {# threads}}"
msgstr "" msgstr ""
#: src/components/systems-table/systems-table-columns.tsx
msgid "{totalCount, plural, one {# service} other {# services}}"
msgstr ""
#: src/lib/utils.ts #: src/lib/utils.ts
msgid "1 hour" msgid "1 hour"
msgstr "" msgstr ""
@@ -123,10 +135,10 @@ msgstr ""
msgid "Active state" msgid "Active state"
msgstr "" msgstr ""
#: src/components/add-system.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/add-system.tsx msgid "Add"
#: src/components/navbar.tsx msgstr ""
#: src/components/navbar.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
@@ -136,6 +148,13 @@ msgstr ""
msgid "Add {foo}" msgid "Add {foo}"
msgstr "" msgstr ""
#: src/components/add-system.tsx
#: src/components/add-system.tsx
#: src/components/navbar.tsx
#: src/components/navbar.tsx
msgid "Add System"
msgstr ""
#: src/components/routes/settings/notifications.tsx #: src/components/routes/settings/notifications.tsx
msgid "Add URL" msgid "Add URL"
msgstr "" msgstr ""
@@ -260,6 +279,7 @@ msgstr ""
msgid "Average, minimum, and maximum response time" msgid "Average, minimum, and maximum response time"
msgstr "" msgstr ""
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Avg 1h" msgid "Avg 1h"
msgstr "" msgstr ""
@@ -383,6 +403,19 @@ msgstr ""
msgid "Celsius (°C)" msgid "Celsius (°C)"
msgstr "" msgstr ""
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Certificate"
msgstr ""
#: src/components/network-monitors-table/network-monitors-table.tsx
msgid "Certificate expired {expires}"
msgstr ""
#: src/components/network-monitors-table/network-monitors-table.tsx
msgid "Certificate expires {expires}"
msgstr ""
#: src/components/routes/settings/general.tsx #: src/components/routes/settings/general.tsx
msgid "Change display units for metrics." msgid "Change display units for metrics."
msgstr "" msgstr ""
@@ -776,12 +809,15 @@ msgstr ""
msgid "Edit" msgid "Edit"
msgstr "" msgstr ""
#: src/components/add-system.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/routes/settings/quiet-hours.tsx #: src/components/routes/settings/quiet-hours.tsx
msgid "Edit {foo}" msgid "Edit {foo}"
msgstr "" msgstr ""
#: src/components/add-system.tsx
msgid "Edit System"
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
@@ -867,6 +903,10 @@ msgstr ""
msgid "Exited active" msgid "Exited active"
msgstr "" msgstr ""
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Expired"
msgstr ""
#: src/components/routes/settings/tokens-fingerprints.tsx #: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Expires after one hour or on hub restart." msgid "Expires after one hour or on hub restart."
msgstr "" msgstr ""
@@ -887,10 +927,6 @@ 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 #: src/components/routes/system/smart-table.tsx
msgid "Failed Attributes:" msgid "Failed Attributes:"
msgstr "" msgstr ""
@@ -1090,6 +1126,7 @@ msgstr ""
msgid "Inactive" msgid "Inactive"
msgstr "" msgstr ""
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/routes/settings/heartbeat.tsx #: src/components/routes/settings/heartbeat.tsx
msgid "Interval" msgid "Interval"
@@ -1182,6 +1219,7 @@ msgctxt "Packet loss"
msgid "Loss" msgid "Loss"
msgstr "" msgstr ""
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Loss 1h" msgid "Loss 1h"
msgstr "" msgstr ""
@@ -1204,6 +1242,7 @@ msgstr ""
msgid "Max 1 min" msgid "Max 1 min"
msgstr "" msgstr ""
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Max 1h" msgid "Max 1h"
msgstr "" msgstr ""
@@ -1234,6 +1273,7 @@ msgstr ""
msgid "Memory usage of containers" msgid "Memory usage of containers"
msgstr "كونتېينېرلارنىڭ ئەسلەك ئىشلىتىشى" msgstr "كونتېينېرلارنىڭ ئەسلەك ئىشلىتىشى"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Min 1h" msgid "Min 1h"
msgstr "" msgstr ""
@@ -1565,6 +1605,7 @@ msgstr ""
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Protocol" msgid "Protocol"
msgstr "" msgstr ""
@@ -1653,6 +1694,7 @@ msgstr ""
msgid "Resolved" msgid "Resolved"
msgstr "" msgstr ""
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/routes/system/charts/monitors-charts.tsx #: src/components/routes/system/charts/monitors-charts.tsx
msgid "Response" msgid "Response"
@@ -1698,7 +1740,6 @@ msgstr ""
msgid "S.M.A.R.T. Self-Test" msgid "S.M.A.R.T. Self-Test"
msgstr "" msgstr ""
#: src/components/add-system.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
msgid "Save {foo}" msgid "Save {foo}"
msgstr "" msgstr ""
@@ -1712,6 +1753,10 @@ msgstr ""
msgid "Save Settings" msgid "Save Settings"
msgstr "" msgstr ""
#: src/components/add-system.tsx
msgid "Save System"
msgstr ""
#: src/components/routes/settings/tokens-fingerprints.tsx #: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Saved in the database and does not expire until you disable it." msgid "Saved in the database and does not expire until you disable it."
msgstr "" msgstr ""
@@ -1833,6 +1878,7 @@ msgstr ""
msgid "SMTP settings" msgid "SMTP settings"
msgstr "" msgstr ""
#: src/components/network-monitors-table/network-monitors-table.tsx
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "Sort By" msgid "Sort By"
msgstr "" msgstr ""
@@ -1875,12 +1921,11 @@ msgstr ""
msgid "Switch theme" msgid "Switch theme"
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/containers-table/containers-table-columns.tsx
#: src/components/navbar.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-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/quiet-hours.tsx #: src/components/routes/settings/quiet-hours.tsx
@@ -1925,9 +1970,15 @@ msgstr ""
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Target" msgid "Target"
msgstr "" msgstr ""
#: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx
msgid "target[,protocol[,port[,interval]]]"
msgstr ""
#: src/components/systemd-table/systemd-table.tsx #: src/components/systemd-table/systemd-table.tsx
msgid "Tasks" msgid "Tasks"
msgstr "" msgstr ""
@@ -2162,6 +2213,7 @@ msgstr ""
#: src/components/containers-table/containers-table-columns.tsx #: src/components/containers-table/containers-table-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/routes/system/smart-table.tsx #: src/components/routes/system/smart-table.tsx
#: src/components/routes/system/storage-pools-table.tsx #: src/components/routes/system/storage-pools-table.tsx
#: src/components/systemd-table/systemd-table-columns.tsx #: src/components/systemd-table/systemd-table-columns.tsx
@@ -2217,6 +2269,7 @@ msgstr ""
msgid "Value" msgid "Value"
msgstr "" msgstr ""
#: src/components/network-monitors-table/network-monitors-table.tsx
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "View" msgid "View"
msgstr "" msgstr ""
@@ -2231,6 +2284,7 @@ msgstr ""
msgid "View your 200 most recent alerts." msgid "View your 200 most recent alerts."
msgstr "" msgstr ""
#: src/components/network-monitors-table/network-monitors-table.tsx
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "Visible Fields" msgid "Visible Fields"
msgstr "" msgstr ""
+68 -13
View File
@@ -8,7 +8,7 @@ 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: 2026-09-18 19:22\n" "PO-Revision-Date: 2026-09-24 17:29\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"
@@ -52,14 +52,26 @@ msgstr "{count, plural, one {{countString} година} few {{countString} го
msgid "{count, plural, one {{countString} minute} few {{countString} minutes} many {{countString} minutes} other {{countString} minutes}}" 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} хвилини}}" msgstr "{count, plural, one {{countString} хвилина} few {{countString} хвилини} many {{countString} хвилин} other {{countString} хвилини}}"
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "{daysLeft, plural, one {# day} other {# days}}"
msgstr ""
#: src/components/routes/system/charts/disk-charts.tsx #: src/components/routes/system/charts/disk-charts.tsx
msgid "{diskName} I/O" msgid "{diskName} I/O"
msgstr "Ввід/вивід {diskName}" msgstr "Ввід/вивід {diskName}"
#: src/components/systems-table/systems-table-columns.tsx
msgid "{numFailed, plural, one {# failed service} other {# failed services}}"
msgstr ""
#: src/components/routes/system/info-bar.tsx #: src/components/routes/system/info-bar.tsx
msgid "{threads, plural, one {# thread} other {# threads}}" msgid "{threads, plural, one {# thread} other {# threads}}"
msgstr "{threads, plural, one {# потік} few {# потоки} many {# потоків} other {# потоків}}" msgstr "{threads, plural, one {# потік} few {# потоки} many {# потоків} other {# потоків}}"
#: src/components/systems-table/systems-table-columns.tsx
msgid "{totalCount, plural, one {# service} other {# services}}"
msgstr ""
#: src/lib/utils.ts #: src/lib/utils.ts
msgid "1 hour" msgid "1 hour"
msgstr "1 година" msgstr "1 година"
@@ -123,10 +135,10 @@ msgstr "Активні сповіщення"
msgid "Active state" msgid "Active state"
msgstr "Активний стан" msgstr "Активний стан"
#: src/components/add-system.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/add-system.tsx msgid "Add"
#: src/components/navbar.tsx msgstr ""
#: src/components/navbar.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
@@ -136,6 +148,13 @@ msgstr "Активний стан"
msgid "Add {foo}" msgid "Add {foo}"
msgstr "Додати {foo}" msgstr "Додати {foo}"
#: src/components/add-system.tsx
#: src/components/add-system.tsx
#: src/components/navbar.tsx
#: src/components/navbar.tsx
msgid "Add System"
msgstr "Додати систему"
#: src/components/routes/settings/notifications.tsx #: src/components/routes/settings/notifications.tsx
msgid "Add URL" msgid "Add URL"
msgstr "Додати URL" msgstr "Додати URL"
@@ -260,6 +279,7 @@ msgstr "Середнє використання рушіїв GPU"
msgid "Average, minimum, and maximum response time" msgid "Average, minimum, and maximum response time"
msgstr "Середній, мінімальний і максимальний час відгуку" msgstr "Середній, мінімальний і максимальний час відгуку"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Avg 1h" msgid "Avg 1h"
msgstr "Сер. за 1 год" msgstr "Сер. за 1 год"
@@ -383,6 +403,19 @@ msgstr "Увага — можлива втрата даних"
msgid "Celsius (°C)" msgid "Celsius (°C)"
msgstr "Цельсій (°C)" msgstr "Цельсій (°C)"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Certificate"
msgstr ""
#: src/components/network-monitors-table/network-monitors-table.tsx
msgid "Certificate expired {expires}"
msgstr ""
#: src/components/network-monitors-table/network-monitors-table.tsx
msgid "Certificate expires {expires}"
msgstr ""
#: src/components/routes/settings/general.tsx #: src/components/routes/settings/general.tsx
msgid "Change display units for metrics." msgid "Change display units for metrics."
msgstr "Змінити одиниці вимірювання для метрик." msgstr "Змінити одиниці вимірювання для метрик."
@@ -776,12 +809,15 @@ msgstr "Тривалість"
msgid "Edit" msgid "Edit"
msgstr "Редагувати" msgstr "Редагувати"
#: src/components/add-system.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/routes/settings/quiet-hours.tsx #: src/components/routes/settings/quiet-hours.tsx
msgid "Edit {foo}" msgid "Edit {foo}"
msgstr "Редагувати {foo}" msgstr "Редагувати {foo}"
#: src/components/add-system.tsx
msgid "Edit System"
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
@@ -867,6 +903,10 @@ msgstr "Існуючі системи, не визначені в <0>config.yml<
msgid "Exited active" msgid "Exited active"
msgstr "Завершилося активно" msgstr "Завершилося активно"
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Expired"
msgstr ""
#: src/components/routes/settings/tokens-fingerprints.tsx #: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Expires after one hour or on hub restart." msgid "Expires after one hour or on hub restart."
msgstr "Закінчується через годину або при перезапуску Hub." msgstr "Закінчується через годину або при перезапуску Hub."
@@ -887,10 +927,6 @@ 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 #: src/components/routes/system/smart-table.tsx
msgid "Failed Attributes:" msgid "Failed Attributes:"
msgstr "Невдалі атрибути:" msgstr "Невдалі атрибути:"
@@ -1090,6 +1126,7 @@ msgstr "Доступне оновлення образу"
msgid "Inactive" msgid "Inactive"
msgstr "Неактивне" msgstr "Неактивне"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/routes/settings/heartbeat.tsx #: src/components/routes/settings/heartbeat.tsx
msgid "Interval" msgid "Interval"
@@ -1182,6 +1219,7 @@ msgctxt "Packet loss"
msgid "Loss" msgid "Loss"
msgstr "Втрата" msgstr "Втрата"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Loss 1h" msgid "Loss 1h"
msgstr "Втрата 1 h" msgstr "Втрата 1 h"
@@ -1204,6 +1242,7 @@ msgstr "Інструкції з ручного налаштування"
msgid "Max 1 min" msgid "Max 1 min"
msgstr "Макс 1 хв" msgstr "Макс 1 хв"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Max 1h" msgid "Max 1h"
msgstr "Макс. за 1 год" msgstr "Макс. за 1 год"
@@ -1234,6 +1273,7 @@ msgstr "Використання пам’яті"
msgid "Memory usage of containers" msgid "Memory usage of containers"
msgstr "Використання пам’яті контейнерами" msgstr "Використання пам’яті контейнерами"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Min 1h" msgid "Min 1h"
msgstr "Мін. за 1 год" msgstr "Мін. за 1 год"
@@ -1565,6 +1605,7 @@ msgstr "Процес запущено"
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Protocol" msgid "Protocol"
msgstr "Протокол" msgstr "Протокол"
@@ -1653,6 +1694,7 @@ msgstr "Скинути пароль"
msgid "Resolved" msgid "Resolved"
msgstr "Вирішено" msgstr "Вирішено"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/routes/system/charts/monitors-charts.tsx #: src/components/routes/system/charts/monitors-charts.tsx
msgid "Response" msgid "Response"
@@ -1698,7 +1740,6 @@ msgstr "Деталі S.M.A.R.T."
msgid "S.M.A.R.T. Self-Test" msgid "S.M.A.R.T. Self-Test"
msgstr "Самодіагностика S.M.A.R.T." msgstr "Самодіагностика S.M.A.R.T."
#: src/components/add-system.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
msgid "Save {foo}" msgid "Save {foo}"
msgstr "Зберегти {foo}" msgstr "Зберегти {foo}"
@@ -1712,6 +1753,10 @@ msgstr "Збережіть адресу, використовуючи клаві
msgid "Save Settings" msgid "Save Settings"
msgstr "Зберегти налаштування" msgstr "Зберегти налаштування"
#: src/components/add-system.tsx
msgid "Save System"
msgstr "Зберегти систему"
#: src/components/routes/settings/tokens-fingerprints.tsx #: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Saved in the database and does not expire until you disable it." msgid "Saved in the database and does not expire until you disable it."
msgstr "Збережено в базі даних і залишається чинним, доки ви його не вимкнете." msgstr "Збережено в базі даних і залишається чинним, доки ви його не вимкнете."
@@ -1833,6 +1878,7 @@ msgstr "Увійти"
msgid "SMTP settings" msgid "SMTP settings"
msgstr "Налаштування SMTP" msgstr "Налаштування SMTP"
#: src/components/network-monitors-table/network-monitors-table.tsx
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "Sort By" msgid "Sort By"
msgstr "Сортувати за" msgstr "Сортувати за"
@@ -1875,12 +1921,11 @@ msgstr "Використання підкачки"
msgid "Switch theme" msgid "Switch theme"
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/containers-table/containers-table-columns.tsx
#: src/components/navbar.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-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/quiet-hours.tsx #: src/components/routes/settings/quiet-hours.tsx
@@ -1925,9 +1970,15 @@ msgstr "Вкладки"
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Target" msgid "Target"
msgstr "Ціль" msgstr "Ціль"
#: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx
msgid "target[,protocol[,port[,interval]]]"
msgstr ""
#: src/components/systemd-table/systemd-table.tsx #: src/components/systemd-table/systemd-table.tsx
msgid "Tasks" msgid "Tasks"
msgstr "Завдання" msgstr "Завдання"
@@ -2162,6 +2213,7 @@ msgstr "Оновити"
#: src/components/containers-table/containers-table-columns.tsx #: src/components/containers-table/containers-table-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/routes/system/smart-table.tsx #: src/components/routes/system/smart-table.tsx
#: src/components/routes/system/storage-pools-table.tsx #: src/components/routes/system/storage-pools-table.tsx
#: src/components/systemd-table/systemd-table-columns.tsx #: src/components/systemd-table/systemd-table-columns.tsx
@@ -2217,6 +2269,7 @@ msgstr "Використання"
msgid "Value" msgid "Value"
msgstr "Значення" msgstr "Значення"
#: src/components/network-monitors-table/network-monitors-table.tsx
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "View" msgid "View"
msgstr "Вигляд" msgstr "Вигляд"
@@ -2231,6 +2284,7 @@ msgstr "Переглянути більше"
msgid "View your 200 most recent alerts." msgid "View your 200 most recent alerts."
msgstr "Переглянути 200 останніх сповіщень." msgstr "Переглянути 200 останніх сповіщень."
#: src/components/network-monitors-table/network-monitors-table.tsx
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "Visible Fields" msgid "Visible Fields"
msgstr "Видимі стовпці" msgstr "Видимі стовпці"
@@ -2305,3 +2359,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 "Ваші налаштування користувача були оновлені." msgstr "Ваші налаштування користувача були оновлені."
+68 -13
View File
@@ -8,7 +8,7 @@ msgstr ""
"Language: uz\n" "Language: uz\n"
"Project-Id-Version: beszel\n" "Project-Id-Version: beszel\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-09-18 19:22\n" "PO-Revision-Date: 2026-09-24 17:29\n"
"Last-Translator: \n" "Last-Translator: \n"
"Language-Team: Uzbek\n" "Language-Team: Uzbek\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n"
@@ -52,14 +52,26 @@ msgstr "{count, plural, other {{countString} soat}}"
msgid "{count, plural, one {{countString} minute} few {{countString} minutes} many {{countString} minutes} other {{countString} minutes}}" msgid "{count, plural, one {{countString} minute} few {{countString} minutes} many {{countString} minutes} other {{countString} minutes}}"
msgstr "{count, plural, other {{countString} daqiqa}}" msgstr "{count, plural, other {{countString} daqiqa}}"
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "{daysLeft, plural, one {# day} other {# days}}"
msgstr ""
#: src/components/routes/system/charts/disk-charts.tsx #: src/components/routes/system/charts/disk-charts.tsx
msgid "{diskName} I/O" msgid "{diskName} I/O"
msgstr "{diskName} I/O" msgstr "{diskName} I/O"
#: src/components/systems-table/systems-table-columns.tsx
msgid "{numFailed, plural, one {# failed service} other {# failed services}}"
msgstr ""
#: src/components/routes/system/info-bar.tsx #: src/components/routes/system/info-bar.tsx
msgid "{threads, plural, one {# thread} other {# threads}}" msgid "{threads, plural, one {# thread} other {# threads}}"
msgstr "{threads, plural, other {# ip}}" msgstr "{threads, plural, other {# ip}}"
#: src/components/systems-table/systems-table-columns.tsx
msgid "{totalCount, plural, one {# service} other {# services}}"
msgstr ""
#: src/lib/utils.ts #: src/lib/utils.ts
msgid "1 hour" msgid "1 hour"
msgstr "1 soat" msgstr "1 soat"
@@ -123,10 +135,10 @@ msgstr "Faol ogohlantirishlar"
msgid "Active state" msgid "Active state"
msgstr "Faol holat" msgstr "Faol holat"
#: src/components/add-system.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/add-system.tsx msgid "Add"
#: src/components/navbar.tsx msgstr ""
#: src/components/navbar.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
@@ -136,6 +148,13 @@ msgstr "Faol holat"
msgid "Add {foo}" msgid "Add {foo}"
msgstr "{foo} qo'shish" msgstr "{foo} qo'shish"
#: src/components/add-system.tsx
#: src/components/add-system.tsx
#: src/components/navbar.tsx
#: src/components/navbar.tsx
msgid "Add System"
msgstr "Tizim qo'shish"
#: src/components/routes/settings/notifications.tsx #: src/components/routes/settings/notifications.tsx
msgid "Add URL" msgid "Add URL"
msgstr "URL qo'shish" msgstr "URL qo'shish"
@@ -260,6 +279,7 @@ msgstr "GPU dvigatellarining o'rtacha yuklanishi"
msgid "Average, minimum, and maximum response time" msgid "Average, minimum, and maximum response time"
msgstr "Ortacha, minimal va maksimal javob vaqti" msgstr "Ortacha, minimal va maksimal javob vaqti"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Avg 1h" msgid "Avg 1h"
msgstr "1 soat o‘rtacha" msgstr "1 soat o‘rtacha"
@@ -383,6 +403,19 @@ msgstr "Ehtiyot bo'ling - ma'lumotlar yo'qolishi mumkin"
msgid "Celsius (°C)" msgid "Celsius (°C)"
msgstr "Selsiy (°C)" msgstr "Selsiy (°C)"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Certificate"
msgstr ""
#: src/components/network-monitors-table/network-monitors-table.tsx
msgid "Certificate expired {expires}"
msgstr ""
#: src/components/network-monitors-table/network-monitors-table.tsx
msgid "Certificate expires {expires}"
msgstr ""
#: src/components/routes/settings/general.tsx #: src/components/routes/settings/general.tsx
msgid "Change display units for metrics." msgid "Change display units for metrics."
msgstr "Metrikalar uchun ko'rsatish birliklarini o'zgartiring." msgstr "Metrikalar uchun ko'rsatish birliklarini o'zgartiring."
@@ -776,12 +809,15 @@ msgstr "Davomiylik"
msgid "Edit" msgid "Edit"
msgstr "Tahrirlash" msgstr "Tahrirlash"
#: src/components/add-system.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/routes/settings/quiet-hours.tsx #: src/components/routes/settings/quiet-hours.tsx
msgid "Edit {foo}" msgid "Edit {foo}"
msgstr "{foo} tahrirlash" msgstr "{foo} tahrirlash"
#: src/components/add-system.tsx
msgid "Edit System"
msgstr "Tizim tahrirlash"
#: 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
@@ -867,6 +903,10 @@ msgstr "<0>config.yml</0> da aniqlanmagan mavjud tizimlar o'chiriladi. Iltimos,
msgid "Exited active" msgid "Exited active"
msgstr "Faollikdan chiqdi" msgstr "Faollikdan chiqdi"
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Expired"
msgstr ""
#: src/components/routes/settings/tokens-fingerprints.tsx #: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Expires after one hour or on hub restart." msgid "Expires after one hour or on hub restart."
msgstr "Bir soatdan keyin yoki hub qayta ishga tushganda muddati tugaydi." msgstr "Bir soatdan keyin yoki hub qayta ishga tushganda muddati tugaydi."
@@ -887,10 +927,6 @@ msgstr "Joriy tizimlar konfiguratsiyasini eksport qiling."
msgid "Fahrenheit (°F)" msgid "Fahrenheit (°F)"
msgstr "Farengeyt (°F)" msgstr "Farengeyt (°F)"
#: src/components/systems-table/systems-table-columns.tsx
msgid "Failed"
msgstr "Muvaffaqiyatsiz"
#: src/components/routes/system/smart-table.tsx #: src/components/routes/system/smart-table.tsx
msgid "Failed Attributes:" msgid "Failed Attributes:"
msgstr "Muvaffaqiyatsiz atributlar:" msgstr "Muvaffaqiyatsiz atributlar:"
@@ -1090,6 +1126,7 @@ msgstr "Obraz yangilanishi mavjud"
msgid "Inactive" msgid "Inactive"
msgstr "Nofaol" msgstr "Nofaol"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/routes/settings/heartbeat.tsx #: src/components/routes/settings/heartbeat.tsx
msgid "Interval" msgid "Interval"
@@ -1182,6 +1219,7 @@ msgctxt "Packet loss"
msgid "Loss" msgid "Loss"
msgstr "Yo‘qotish" msgstr "Yo‘qotish"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Loss 1h" msgid "Loss 1h"
msgstr "1 soatlik yo‘qotish" msgstr "1 soatlik yo‘qotish"
@@ -1204,6 +1242,7 @@ msgstr "Qo'lda o'rnatish ko'rsatmalari"
msgid "Max 1 min" msgid "Max 1 min"
msgstr "Maks 1 daq" msgstr "Maks 1 daq"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Max 1h" msgid "Max 1h"
msgstr "1 soat maksimal" msgstr "1 soat maksimal"
@@ -1234,6 +1273,7 @@ msgstr "Xotira ishlatilishi"
msgid "Memory usage of containers" msgid "Memory usage of containers"
msgstr "Konteynerlarning xotira ishlatilishi" msgstr "Konteynerlarning xotira ishlatilishi"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Min 1h" msgid "Min 1h"
msgstr "1 soat minimal" msgstr "1 soat minimal"
@@ -1565,6 +1605,7 @@ msgstr "Jarayon boshlandi"
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Protocol" msgid "Protocol"
msgstr "Protokol" msgstr "Protokol"
@@ -1653,6 +1694,7 @@ msgstr "Parolni tiklash"
msgid "Resolved" msgid "Resolved"
msgstr "Hal qilindi" msgstr "Hal qilindi"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/routes/system/charts/monitors-charts.tsx #: src/components/routes/system/charts/monitors-charts.tsx
msgid "Response" msgid "Response"
@@ -1698,7 +1740,6 @@ msgstr "S.M.A.R.T. tafsilotlar"
msgid "S.M.A.R.T. Self-Test" msgid "S.M.A.R.T. Self-Test"
msgstr "S.M.A.R.T. o'z-o'zini test" msgstr "S.M.A.R.T. o'z-o'zini test"
#: src/components/add-system.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
msgid "Save {foo}" msgid "Save {foo}"
msgstr "{foo} saqlash" msgstr "{foo} saqlash"
@@ -1712,6 +1753,10 @@ msgstr "Manzilni enter tugmasi yoki vergul yordamida saqlang. Elektron pochta bi
msgid "Save Settings" msgid "Save Settings"
msgstr "Sozlamalarni saqlash" msgstr "Sozlamalarni saqlash"
#: src/components/add-system.tsx
msgid "Save System"
msgstr "Tizim saqlash"
#: src/components/routes/settings/tokens-fingerprints.tsx #: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Saved in the database and does not expire until you disable it." msgid "Saved in the database and does not expire until you disable it."
msgstr "Ma'lumotlar bazasida saqlanadi va siz o'chirishingizcha muddati tugamaydi." msgstr "Ma'lumotlar bazasida saqlanadi va siz o'chirishingizcha muddati tugamaydi."
@@ -1833,6 +1878,7 @@ msgstr "Kirish"
msgid "SMTP settings" msgid "SMTP settings"
msgstr "SMTP sozlamalari" msgstr "SMTP sozlamalari"
#: src/components/network-monitors-table/network-monitors-table.tsx
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "Sort By" msgid "Sort By"
msgstr "Saralash" msgstr "Saralash"
@@ -1875,12 +1921,11 @@ msgstr "Swap ishlatilishi"
msgid "Switch theme" msgid "Switch theme"
msgstr "Mavzuni almashtirish" msgstr "Mavzuni almashtirish"
#: 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/containers-table/containers-table-columns.tsx
#: src/components/navbar.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-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/quiet-hours.tsx #: src/components/routes/settings/quiet-hours.tsx
@@ -1925,9 +1970,15 @@ msgstr "Yorliqlar"
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Target" msgid "Target"
msgstr "Maqsad" msgstr "Maqsad"
#: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx
msgid "target[,protocol[,port[,interval]]]"
msgstr ""
#: src/components/systemd-table/systemd-table.tsx #: src/components/systemd-table/systemd-table.tsx
msgid "Tasks" msgid "Tasks"
msgstr "Vazifalar" msgstr "Vazifalar"
@@ -2162,6 +2213,7 @@ msgstr "Yangilash"
#: src/components/containers-table/containers-table-columns.tsx #: src/components/containers-table/containers-table-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/routes/system/smart-table.tsx #: src/components/routes/system/smart-table.tsx
#: src/components/routes/system/storage-pools-table.tsx #: src/components/routes/system/storage-pools-table.tsx
#: src/components/systemd-table/systemd-table-columns.tsx #: src/components/systemd-table/systemd-table-columns.tsx
@@ -2217,6 +2269,7 @@ msgstr "Yuklanish"
msgid "Value" msgid "Value"
msgstr "Qiymat" msgstr "Qiymat"
#: src/components/network-monitors-table/network-monitors-table.tsx
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "View" msgid "View"
msgstr "Ko'rish" msgstr "Ko'rish"
@@ -2231,6 +2284,7 @@ msgstr "Ko'proq ko'rish"
msgid "View your 200 most recent alerts." msgid "View your 200 most recent alerts."
msgstr "So'nggi 200 ta ogohlantirishingizni ko'ring." msgstr "So'nggi 200 ta ogohlantirishingizni ko'ring."
#: src/components/network-monitors-table/network-monitors-table.tsx
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "Visible Fields" msgid "Visible Fields"
msgstr "Ko'rinadigan maydonlar" msgstr "Ko'rinadigan maydonlar"
@@ -2305,3 +2359,4 @@ msgstr "Ha"
#: 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 "Foydalanuvchi sozlamalaringiz yangilandi." msgstr "Foydalanuvchi sozlamalaringiz yangilandi."
+68 -13
View File
@@ -8,7 +8,7 @@ msgstr ""
"Language: vi\n" "Language: vi\n"
"Project-Id-Version: beszel\n" "Project-Id-Version: beszel\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-09-18 19:22\n" "PO-Revision-Date: 2026-09-24 17:29\n"
"Last-Translator: \n" "Last-Translator: \n"
"Language-Team: Vietnamese\n" "Language-Team: Vietnamese\n"
"Plural-Forms: nplurals=1; plural=0;\n" "Plural-Forms: nplurals=1; plural=0;\n"
@@ -52,14 +52,26 @@ msgstr "{count, plural, one {{countString} giờ} other {{countString} giờ}}"
msgid "{count, plural, one {{countString} minute} few {{countString} minutes} many {{countString} minutes} other {{countString} minutes}}" msgid "{count, plural, one {{countString} minute} few {{countString} minutes} many {{countString} minutes} other {{countString} minutes}}"
msgstr "{count, plural, one {{countString} phút} few {{countString} phút} many {{countString} phút} other {{countString} phút}}" msgstr "{count, plural, one {{countString} phút} few {{countString} phút} many {{countString} phút} other {{countString} phút}}"
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "{daysLeft, plural, one {# day} other {# days}}"
msgstr ""
#: src/components/routes/system/charts/disk-charts.tsx #: src/components/routes/system/charts/disk-charts.tsx
msgid "{diskName} I/O" msgid "{diskName} I/O"
msgstr "I/O {diskName}" msgstr "I/O {diskName}"
#: src/components/systems-table/systems-table-columns.tsx
msgid "{numFailed, plural, one {# failed service} other {# failed services}}"
msgstr ""
#: src/components/routes/system/info-bar.tsx #: src/components/routes/system/info-bar.tsx
msgid "{threads, plural, one {# thread} other {# threads}}" msgid "{threads, plural, one {# thread} other {# threads}}"
msgstr "{threads, plural, one {# luồng} other {# luồng}}" msgstr "{threads, plural, one {# luồng} other {# luồng}}"
#: src/components/systems-table/systems-table-columns.tsx
msgid "{totalCount, plural, one {# service} other {# services}}"
msgstr ""
#: src/lib/utils.ts #: src/lib/utils.ts
msgid "1 hour" msgid "1 hour"
msgstr "1 giờ" msgstr "1 giờ"
@@ -123,10 +135,10 @@ msgstr "Cảnh báo hoạt động"
msgid "Active state" msgid "Active state"
msgstr "Trạng thái hoạt động" msgstr "Trạng thái hoạt động"
#: src/components/add-system.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/add-system.tsx msgid "Add"
#: src/components/navbar.tsx msgstr ""
#: src/components/navbar.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
@@ -136,6 +148,13 @@ msgstr "Trạng thái hoạt động"
msgid "Add {foo}" msgid "Add {foo}"
msgstr "Thêm {foo}" msgstr "Thêm {foo}"
#: src/components/add-system.tsx
#: src/components/add-system.tsx
#: src/components/navbar.tsx
#: src/components/navbar.tsx
msgid "Add System"
msgstr "Thêm Hệ thống"
#: src/components/routes/settings/notifications.tsx #: src/components/routes/settings/notifications.tsx
msgid "Add URL" msgid "Add URL"
msgstr "Thêm URL" msgstr "Thêm URL"
@@ -260,6 +279,7 @@ msgstr "Mức sử dụng trung bình của động cơ GPU"
msgid "Average, minimum, and maximum response time" msgid "Average, minimum, and maximum response time"
msgstr "Thời gian phản hồi trung bình, tối thiểu và tối đa" msgstr "Thời gian phản hồi trung bình, tối thiểu và tối đa"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Avg 1h" msgid "Avg 1h"
msgstr "TB 1 giờ" msgstr "TB 1 giờ"
@@ -383,6 +403,19 @@ msgstr "Cẩn thận - có thể mất dữ liệu"
msgid "Celsius (°C)" msgid "Celsius (°C)"
msgstr "Độ C (°C)" msgstr "Độ C (°C)"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Certificate"
msgstr ""
#: src/components/network-monitors-table/network-monitors-table.tsx
msgid "Certificate expired {expires}"
msgstr ""
#: src/components/network-monitors-table/network-monitors-table.tsx
msgid "Certificate expires {expires}"
msgstr ""
#: src/components/routes/settings/general.tsx #: src/components/routes/settings/general.tsx
msgid "Change display units for metrics." msgid "Change display units for metrics."
msgstr "Thay đổi đơn vị hiển thị cho các chỉ số." msgstr "Thay đổi đơn vị hiển thị cho các chỉ số."
@@ -776,12 +809,15 @@ msgstr "Thời lượng"
msgid "Edit" msgid "Edit"
msgstr "Chỉnh sửa" msgstr "Chỉnh sửa"
#: src/components/add-system.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/routes/settings/quiet-hours.tsx #: src/components/routes/settings/quiet-hours.tsx
msgid "Edit {foo}" msgid "Edit {foo}"
msgstr "Chỉnh sửa {foo}" msgstr "Chỉnh sửa {foo}"
#: src/components/add-system.tsx
msgid "Edit System"
msgstr "Chỉnh sửa Hệ thống"
#: 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
@@ -867,6 +903,10 @@ msgstr "Các hệ thống hiện có không được định nghĩa trong <0>con
msgid "Exited active" msgid "Exited active"
msgstr "Đã thoát khi hoạt động" msgstr "Đã thoát khi hoạt động"
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Expired"
msgstr ""
#: src/components/routes/settings/tokens-fingerprints.tsx #: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Expires after one hour or on hub restart." msgid "Expires after one hour or on hub restart."
msgstr "Hết hạn sau một giờ hoặc khi khởi động lại hub." msgstr "Hết hạn sau một giờ hoặc khi khởi động lại hub."
@@ -887,10 +927,6 @@ msgstr "Xuất cấu hình hệ thống hiện tại của bạn."
msgid "Fahrenheit (°F)" msgid "Fahrenheit (°F)"
msgstr "Độ F (°F)" msgstr "Độ F (°F)"
#: src/components/systems-table/systems-table-columns.tsx
msgid "Failed"
msgstr "Thất bại"
#: src/components/routes/system/smart-table.tsx #: src/components/routes/system/smart-table.tsx
msgid "Failed Attributes:" msgid "Failed Attributes:"
msgstr "Thuộc tính thất bại:" msgstr "Thuộc tính thất bại:"
@@ -1090,6 +1126,7 @@ msgstr "Có bản cập nhật image"
msgid "Inactive" msgid "Inactive"
msgstr "Không hoạt động" msgstr "Không hoạt động"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/routes/settings/heartbeat.tsx #: src/components/routes/settings/heartbeat.tsx
msgid "Interval" msgid "Interval"
@@ -1182,6 +1219,7 @@ msgctxt "Packet loss"
msgid "Loss" msgid "Loss"
msgstr "Mất gói" msgstr "Mất gói"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Loss 1h" msgid "Loss 1h"
msgstr "Mất gói 1 giờ" msgstr "Mất gói 1 giờ"
@@ -1204,6 +1242,7 @@ msgstr "Hướng dẫn cài đặt thủ công"
msgid "Max 1 min" msgid "Max 1 min"
msgstr "Tối đa 1 phút" msgstr "Tối đa 1 phút"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Max 1h" msgid "Max 1h"
msgstr "Tối đa 1 giờ" msgstr "Tối đa 1 giờ"
@@ -1234,6 +1273,7 @@ msgstr "Sử dụng Bộ nhớ"
msgid "Memory usage of containers" msgid "Memory usage of containers"
msgstr "Mức sử dụng bộ nhớ của các container" msgstr "Mức sử dụng bộ nhớ của các container"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Min 1h" msgid "Min 1h"
msgstr "Tối thiểu 1 giờ" msgstr "Tối thiểu 1 giờ"
@@ -1565,6 +1605,7 @@ msgstr "Tiến trình đã khởi động"
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Protocol" msgid "Protocol"
msgstr "Giao thức" msgstr "Giao thức"
@@ -1653,6 +1694,7 @@ msgstr "Đặt lại Mật khẩu"
msgid "Resolved" msgid "Resolved"
msgstr "Đã giải quyết" msgstr "Đã giải quyết"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/routes/system/charts/monitors-charts.tsx #: src/components/routes/system/charts/monitors-charts.tsx
msgid "Response" msgid "Response"
@@ -1698,7 +1740,6 @@ msgstr "Chi tiết S.M.A.R.T."
msgid "S.M.A.R.T. Self-Test" msgid "S.M.A.R.T. Self-Test"
msgstr "Tự kiểm tra S.M.A.R.T." msgstr "Tự kiểm tra S.M.A.R.T."
#: src/components/add-system.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
msgid "Save {foo}" msgid "Save {foo}"
msgstr "Lưu {foo}" msgstr "Lưu {foo}"
@@ -1712,6 +1753,10 @@ msgstr "Lưu địa chỉ bằng cách sử dụng phím enter hoặc dấu ph
msgid "Save Settings" msgid "Save Settings"
msgstr "Lưu Cài đặt" msgstr "Lưu Cài đặt"
#: src/components/add-system.tsx
msgid "Save System"
msgstr "Lưu Hệ thống"
#: src/components/routes/settings/tokens-fingerprints.tsx #: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Saved in the database and does not expire until you disable it." msgid "Saved in the database and does not expire until you disable it."
msgstr "Được lưu trong cơ sở dữ liệu và không hết hạn cho đến khi bạn tắt nó." msgstr "Được lưu trong cơ sở dữ liệu và không hết hạn cho đến khi bạn tắt nó."
@@ -1833,6 +1878,7 @@ msgstr "Đăng nhập"
msgid "SMTP settings" msgid "SMTP settings"
msgstr "Cài đặt SMTP" msgstr "Cài đặt SMTP"
#: src/components/network-monitors-table/network-monitors-table.tsx
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "Sort By" msgid "Sort By"
msgstr "Sắp xếp theo" msgstr "Sắp xếp theo"
@@ -1875,12 +1921,11 @@ msgstr "Sử dụng Hoán đổi"
msgid "Switch theme" msgid "Switch theme"
msgstr "Đổi giao diện" msgstr "Đổi giao diện"
#: 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/containers-table/containers-table-columns.tsx
#: src/components/navbar.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-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/quiet-hours.tsx #: src/components/routes/settings/quiet-hours.tsx
@@ -1925,9 +1970,15 @@ msgstr "Tab"
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Target" msgid "Target"
msgstr "Mục tiêu" msgstr "Mục tiêu"
#: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx
msgid "target[,protocol[,port[,interval]]]"
msgstr ""
#: src/components/systemd-table/systemd-table.tsx #: src/components/systemd-table/systemd-table.tsx
msgid "Tasks" msgid "Tasks"
msgstr "Tác vụ" msgstr "Tác vụ"
@@ -2162,6 +2213,7 @@ msgstr "Cập nhật"
#: src/components/containers-table/containers-table-columns.tsx #: src/components/containers-table/containers-table-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/routes/system/smart-table.tsx #: src/components/routes/system/smart-table.tsx
#: src/components/routes/system/storage-pools-table.tsx #: src/components/routes/system/storage-pools-table.tsx
#: src/components/systemd-table/systemd-table-columns.tsx #: src/components/systemd-table/systemd-table-columns.tsx
@@ -2217,6 +2269,7 @@ msgstr "Sử dụng"
msgid "Value" msgid "Value"
msgstr "Giá trị" msgstr "Giá trị"
#: src/components/network-monitors-table/network-monitors-table.tsx
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "View" msgid "View"
msgstr "Xem" msgstr "Xem"
@@ -2231,6 +2284,7 @@ msgstr "Xem thêm"
msgid "View your 200 most recent alerts." msgid "View your 200 most recent alerts."
msgstr "Xem 200 cảnh báo gần đây nhất của bạn." msgstr "Xem 200 cảnh báo gần đây nhất của bạn."
#: src/components/network-monitors-table/network-monitors-table.tsx
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "Visible Fields" msgid "Visible Fields"
msgstr "Các cột hiển thị" msgstr "Các cột hiển thị"
@@ -2305,3 +2359,4 @@ msgstr "Có"
#: 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 "Cài đặt người dùng của bạn đã được cập nhật." msgstr "Cài đặt người dùng của bạn đã được cập nhật."
+68 -13
View File
@@ -8,7 +8,7 @@ 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: 2026-09-18 19:22\n" "PO-Revision-Date: 2026-09-25 07:01\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"
@@ -52,14 +52,26 @@ msgstr "{count, plural, one {{countString} 小时} other {{countString} 小时}}
msgid "{count, plural, one {{countString} minute} few {{countString} minutes} many {{countString} minutes} other {{countString} minutes}}" 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} 分钟}}" msgstr "{count, plural, one {{countString} 分钟} few {{countString} 分钟} many {{countString} 分钟} other {{countString} 分钟}}"
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "{daysLeft, plural, one {# day} other {# days}}"
msgstr "{daysLeft, plural, other {# 天}}"
#: src/components/routes/system/charts/disk-charts.tsx #: src/components/routes/system/charts/disk-charts.tsx
msgid "{diskName} I/O" msgid "{diskName} I/O"
msgstr "{diskName} I/O" msgstr "{diskName} I/O"
#: src/components/systems-table/systems-table-columns.tsx
msgid "{numFailed, plural, one {# failed service} other {# failed services}}"
msgstr "{numFailed, plural, other {# 个失败服务}}"
#: src/components/routes/system/info-bar.tsx #: src/components/routes/system/info-bar.tsx
msgid "{threads, plural, one {# thread} other {# threads}}" msgid "{threads, plural, one {# thread} other {# threads}}"
msgstr "{threads, plural, one {# 线程} other {# 线程}}" msgstr "{threads, plural, one {# 线程} other {# 线程}}"
#: src/components/systems-table/systems-table-columns.tsx
msgid "{totalCount, plural, one {# service} other {# services}}"
msgstr "{totalCount, plural, other {# 个服务}}"
#: src/lib/utils.ts #: src/lib/utils.ts
msgid "1 hour" msgid "1 hour"
msgstr "1 小时" msgstr "1 小时"
@@ -123,10 +135,10 @@ msgstr "启用的警报"
msgid "Active state" msgid "Active state"
msgstr "活动状态" msgstr "活动状态"
#: src/components/add-system.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/add-system.tsx msgid "Add"
#: src/components/navbar.tsx msgstr "添加"
#: src/components/navbar.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
@@ -136,6 +148,13 @@ msgstr "活动状态"
msgid "Add {foo}" msgid "Add {foo}"
msgstr "添加 {foo}" msgstr "添加 {foo}"
#: src/components/add-system.tsx
#: src/components/add-system.tsx
#: src/components/navbar.tsx
#: src/components/navbar.tsx
msgid "Add System"
msgstr "添加 系统"
#: src/components/routes/settings/notifications.tsx #: src/components/routes/settings/notifications.tsx
msgid "Add URL" msgid "Add URL"
msgstr "添加 URL" msgstr "添加 URL"
@@ -260,6 +279,7 @@ msgstr "GPU 引擎的平均利用率"
msgid "Average, minimum, and maximum response time" msgid "Average, minimum, and maximum response time"
msgstr "平均、最小和最大响应时间" msgstr "平均、最小和最大响应时间"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Avg 1h" msgid "Avg 1h"
msgstr "1 小时平均" msgstr "1 小时平均"
@@ -383,6 +403,19 @@ msgstr "注意 - 潜在数据已经丢失"
msgid "Celsius (°C)" msgid "Celsius (°C)"
msgstr "摄氏度 (°C)" msgstr "摄氏度 (°C)"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Certificate"
msgstr "证书"
#: src/components/network-monitors-table/network-monitors-table.tsx
msgid "Certificate expired {expires}"
msgstr "证书已过期 {expires}"
#: src/components/network-monitors-table/network-monitors-table.tsx
msgid "Certificate expires {expires}"
msgstr "证书将于 {expires} 过期"
#: src/components/routes/settings/general.tsx #: src/components/routes/settings/general.tsx
msgid "Change display units for metrics." msgid "Change display units for metrics."
msgstr "更改指标的显示单位。" msgstr "更改指标的显示单位。"
@@ -776,12 +809,15 @@ msgstr "持续时间"
msgid "Edit" msgid "Edit"
msgstr "编辑" msgstr "编辑"
#: src/components/add-system.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/routes/settings/quiet-hours.tsx #: src/components/routes/settings/quiet-hours.tsx
msgid "Edit {foo}" msgid "Edit {foo}"
msgstr "编辑 {foo}" msgstr "编辑 {foo}"
#: src/components/add-system.tsx
msgid "Edit System"
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
@@ -867,6 +903,10 @@ msgstr "未在<0>config.yml</0>中定义的客户端将被删除。请定期备
msgid "Exited active" msgid "Exited active"
msgstr "退出活动状态" msgstr "退出活动状态"
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Expired"
msgstr "已过期"
#: src/components/routes/settings/tokens-fingerprints.tsx #: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Expires after one hour or on hub restart." msgid "Expires after one hour or on hub restart."
msgstr "将在一小时后,或Hub重启时失效。" msgstr "将在一小时后,或Hub重启时失效。"
@@ -887,10 +927,6 @@ 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 #: src/components/routes/system/smart-table.tsx
msgid "Failed Attributes:" msgid "Failed Attributes:"
msgstr "失败属性:" msgstr "失败属性:"
@@ -1090,6 +1126,7 @@ msgstr "有可用的镜像更新"
msgid "Inactive" msgid "Inactive"
msgstr "非活跃" msgstr "非活跃"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/routes/settings/heartbeat.tsx #: src/components/routes/settings/heartbeat.tsx
msgid "Interval" msgid "Interval"
@@ -1182,6 +1219,7 @@ msgctxt "Packet loss"
msgid "Loss" msgid "Loss"
msgstr "丢包" msgstr "丢包"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Loss 1h" msgid "Loss 1h"
msgstr "1 小时丢包" msgstr "1 小时丢包"
@@ -1204,6 +1242,7 @@ msgstr "手动设置说明"
msgid "Max 1 min" msgid "Max 1 min"
msgstr "1分钟内最大值" msgstr "1分钟内最大值"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Max 1h" msgid "Max 1h"
msgstr "1 小时最大" msgstr "1 小时最大"
@@ -1234,6 +1273,7 @@ msgstr "内存使用率"
msgid "Memory usage of containers" msgid "Memory usage of containers"
msgstr "容器内存使用量" msgstr "容器内存使用量"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Min 1h" msgid "Min 1h"
msgstr "1 小时最小" msgstr "1 小时最小"
@@ -1565,6 +1605,7 @@ msgstr "进程启动"
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Protocol" msgid "Protocol"
msgstr "协议" msgstr "协议"
@@ -1653,6 +1694,7 @@ msgstr "重置密码"
msgid "Resolved" msgid "Resolved"
msgstr "已解决" msgstr "已解决"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/routes/system/charts/monitors-charts.tsx #: src/components/routes/system/charts/monitors-charts.tsx
msgid "Response" msgid "Response"
@@ -1698,7 +1740,6 @@ msgstr "S.M.A.R.T. 详情"
msgid "S.M.A.R.T. Self-Test" msgid "S.M.A.R.T. Self-Test"
msgstr "S.M.A.R.T. 自检" msgstr "S.M.A.R.T. 自检"
#: src/components/add-system.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
msgid "Save {foo}" msgid "Save {foo}"
msgstr "保存 {foo}" msgstr "保存 {foo}"
@@ -1712,6 +1753,10 @@ msgstr "使用回车键或逗号保存地址。留空以禁用电子邮件通知
msgid "Save Settings" msgid "Save Settings"
msgstr "保存设置" msgstr "保存设置"
#: src/components/add-system.tsx
msgid "Save System"
msgstr "保存 系统"
#: src/components/routes/settings/tokens-fingerprints.tsx #: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Saved in the database and does not expire until you disable it." msgid "Saved in the database and does not expire until you disable it."
msgstr "保存在数据库中的数据,在您禁用之前不会过期。" msgstr "保存在数据库中的数据,在您禁用之前不会过期。"
@@ -1833,6 +1878,7 @@ msgstr "登录"
msgid "SMTP settings" msgid "SMTP settings"
msgstr "SMTP 设置" msgstr "SMTP 设置"
#: src/components/network-monitors-table/network-monitors-table.tsx
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "Sort By" msgid "Sort By"
msgstr "排序依据" msgstr "排序依据"
@@ -1875,12 +1921,11 @@ msgstr "SWAP 使用率"
msgid "Switch theme" msgid "Switch theme"
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/containers-table/containers-table-columns.tsx
#: src/components/navbar.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-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/quiet-hours.tsx #: src/components/routes/settings/quiet-hours.tsx
@@ -1925,9 +1970,15 @@ msgstr "标签页"
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Target" msgid "Target"
msgstr "目标" msgstr "目标"
#: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx
msgid "target[,protocol[,port[,interval]]]"
msgstr "目标[,协议[,端口[,间隔]]]"
#: src/components/systemd-table/systemd-table.tsx #: src/components/systemd-table/systemd-table.tsx
msgid "Tasks" msgid "Tasks"
msgstr "任务数" msgstr "任务数"
@@ -2162,6 +2213,7 @@ msgstr "更新"
#: src/components/containers-table/containers-table-columns.tsx #: src/components/containers-table/containers-table-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/routes/system/smart-table.tsx #: src/components/routes/system/smart-table.tsx
#: src/components/routes/system/storage-pools-table.tsx #: src/components/routes/system/storage-pools-table.tsx
#: src/components/systemd-table/systemd-table-columns.tsx #: src/components/systemd-table/systemd-table-columns.tsx
@@ -2217,6 +2269,7 @@ msgstr "利用率"
msgid "Value" msgid "Value"
msgstr "值" msgstr "值"
#: src/components/network-monitors-table/network-monitors-table.tsx
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "View" msgid "View"
msgstr "视图" msgstr "视图"
@@ -2231,6 +2284,7 @@ msgstr "查看更多"
msgid "View your 200 most recent alerts." msgid "View your 200 most recent alerts."
msgstr "查看您最近的200个警报。" msgstr "查看您最近的200个警报。"
#: src/components/network-monitors-table/network-monitors-table.tsx
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "Visible Fields" msgid "Visible Fields"
msgstr "可见列" msgstr "可见列"
@@ -2305,3 +2359,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 "您的用户设置已更新。" msgstr "您的用户设置已更新。"
+68 -13
View File
@@ -8,7 +8,7 @@ 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: 2026-09-18 19:22\n" "PO-Revision-Date: 2026-09-24 17:29\n"
"Last-Translator: \n" "Last-Translator: \n"
"Language-Team: Chinese Traditional, Hong Kong\n" "Language-Team: Chinese Traditional, Hong Kong\n"
"Plural-Forms: nplurals=1; plural=0;\n" "Plural-Forms: nplurals=1; plural=0;\n"
@@ -52,14 +52,26 @@ msgstr "{count, plural, one {{countString} 小時} other {{countString} 小時}}
msgid "{count, plural, one {{countString} minute} few {{countString} minutes} many {{countString} minutes} other {{countString} minutes}}" 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} 分鐘}}" msgstr "{count, plural, one {{countString} 分鐘} few {{countString} 分鐘} many {{countString} 分鐘} other {{countString} 分鐘}}"
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "{daysLeft, plural, one {# day} other {# days}}"
msgstr ""
#: src/components/routes/system/charts/disk-charts.tsx #: src/components/routes/system/charts/disk-charts.tsx
msgid "{diskName} I/O" msgid "{diskName} I/O"
msgstr "{diskName} 的 I/O" msgstr "{diskName} 的 I/O"
#: src/components/systems-table/systems-table-columns.tsx
msgid "{numFailed, plural, one {# failed service} other {# failed services}}"
msgstr ""
#: src/components/routes/system/info-bar.tsx #: src/components/routes/system/info-bar.tsx
msgid "{threads, plural, one {# thread} other {# threads}}" msgid "{threads, plural, one {# thread} other {# threads}}"
msgstr "{threads, plural, one {# 執行緒} other {# 執行緒}}" msgstr "{threads, plural, one {# 執行緒} other {# 執行緒}}"
#: src/components/systems-table/systems-table-columns.tsx
msgid "{totalCount, plural, one {# service} other {# services}}"
msgstr ""
#: src/lib/utils.ts #: src/lib/utils.ts
msgid "1 hour" msgid "1 hour"
msgstr "1小時" msgstr "1小時"
@@ -123,10 +135,10 @@ msgstr "活動警報"
msgid "Active state" msgid "Active state"
msgstr "活動狀態" msgstr "活動狀態"
#: src/components/add-system.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/add-system.tsx msgid "Add"
#: src/components/navbar.tsx msgstr ""
#: src/components/navbar.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
@@ -136,6 +148,13 @@ msgstr "活動狀態"
msgid "Add {foo}" msgid "Add {foo}"
msgstr "新增 {foo}" msgstr "新增 {foo}"
#: src/components/add-system.tsx
#: src/components/add-system.tsx
#: src/components/navbar.tsx
#: src/components/navbar.tsx
msgid "Add System"
msgstr "新增 系統"
#: src/components/routes/settings/notifications.tsx #: src/components/routes/settings/notifications.tsx
msgid "Add URL" msgid "Add URL"
msgstr "添加 URL" msgstr "添加 URL"
@@ -260,6 +279,7 @@ msgstr "GPU 引擎的平均利用率"
msgid "Average, minimum, and maximum response time" msgid "Average, minimum, and maximum response time"
msgstr "平均、最小及最大回應時間" msgstr "平均、最小及最大回應時間"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Avg 1h" msgid "Avg 1h"
msgstr "1 小時平均" msgstr "1 小時平均"
@@ -383,6 +403,19 @@ msgstr "注意 - 可能遺失資料"
msgid "Celsius (°C)" msgid "Celsius (°C)"
msgstr "攝氏 (°C)" msgstr "攝氏 (°C)"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Certificate"
msgstr ""
#: src/components/network-monitors-table/network-monitors-table.tsx
msgid "Certificate expired {expires}"
msgstr ""
#: src/components/network-monitors-table/network-monitors-table.tsx
msgid "Certificate expires {expires}"
msgstr ""
#: src/components/routes/settings/general.tsx #: src/components/routes/settings/general.tsx
msgid "Change display units for metrics." msgid "Change display units for metrics."
msgstr "更改指標的顯示單位。" msgstr "更改指標的顯示單位。"
@@ -776,12 +809,15 @@ msgstr "持續時間"
msgid "Edit" msgid "Edit"
msgstr "編輯" msgstr "編輯"
#: src/components/add-system.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/routes/settings/quiet-hours.tsx #: src/components/routes/settings/quiet-hours.tsx
msgid "Edit {foo}" msgid "Edit {foo}"
msgstr "編輯 {foo}" msgstr "編輯 {foo}"
#: src/components/add-system.tsx
msgid "Edit System"
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
@@ -867,6 +903,10 @@ msgstr "未在<0>config.yml</0>中定義的現有系統將被刪除。請定期
msgid "Exited active" msgid "Exited active"
msgstr "退出活動狀態" msgstr "退出活動狀態"
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Expired"
msgstr ""
#: src/components/routes/settings/tokens-fingerprints.tsx #: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Expires after one hour or on hub restart." msgid "Expires after one hour or on hub restart."
msgstr "一小時後或重新啟動集線器時過期。" msgstr "一小時後或重新啟動集線器時過期。"
@@ -887,10 +927,6 @@ 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 #: src/components/routes/system/smart-table.tsx
msgid "Failed Attributes:" msgid "Failed Attributes:"
msgstr "失敗屬性:" msgstr "失敗屬性:"
@@ -1090,6 +1126,7 @@ msgstr "有可用的鏡像更新"
msgid "Inactive" msgid "Inactive"
msgstr "未啟用" msgstr "未啟用"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/routes/settings/heartbeat.tsx #: src/components/routes/settings/heartbeat.tsx
msgid "Interval" msgid "Interval"
@@ -1182,6 +1219,7 @@ msgctxt "Packet loss"
msgid "Loss" msgid "Loss"
msgstr "封包遺失" msgstr "封包遺失"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Loss 1h" msgid "Loss 1h"
msgstr "1 小時封包遺失率" msgstr "1 小時封包遺失率"
@@ -1204,6 +1242,7 @@ msgstr "手動設定說明"
msgid "Max 1 min" msgid "Max 1 min"
msgstr "一分鐘內最大值" msgstr "一分鐘內最大值"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Max 1h" msgid "Max 1h"
msgstr "1 小時最大" msgstr "1 小時最大"
@@ -1234,6 +1273,7 @@ msgstr "記憶體使用"
msgid "Memory usage of containers" msgid "Memory usage of containers"
msgstr "容器記憶體使用量" msgstr "容器記憶體使用量"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Min 1h" msgid "Min 1h"
msgstr "1 小時最小" msgstr "1 小時最小"
@@ -1565,6 +1605,7 @@ msgstr "進程啟動"
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Protocol" msgid "Protocol"
msgstr "通訊協定" msgstr "通訊協定"
@@ -1653,6 +1694,7 @@ msgstr "重設密碼"
msgid "Resolved" msgid "Resolved"
msgstr "已解決" msgstr "已解決"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/routes/system/charts/monitors-charts.tsx #: src/components/routes/system/charts/monitors-charts.tsx
msgid "Response" msgid "Response"
@@ -1698,7 +1740,6 @@ msgstr "S.M.A.R.T. 詳情"
msgid "S.M.A.R.T. Self-Test" msgid "S.M.A.R.T. Self-Test"
msgstr "S.M.A.R.T. 自檢" msgstr "S.M.A.R.T. 自檢"
#: src/components/add-system.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
msgid "Save {foo}" msgid "Save {foo}"
msgstr "儲存 {foo}" msgstr "儲存 {foo}"
@@ -1712,6 +1753,10 @@ msgstr "使用回車鍵或逗號保存地址。留空以禁用電子郵件通知
msgid "Save Settings" msgid "Save Settings"
msgstr "儲存設定" msgstr "儲存設定"
#: src/components/add-system.tsx
msgid "Save System"
msgstr "儲存 系統"
#: src/components/routes/settings/tokens-fingerprints.tsx #: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Saved in the database and does not expire until you disable it." msgid "Saved in the database and does not expire until you disable it."
msgstr "儲存在資料庫中,在您停用之前不會過期。" msgstr "儲存在資料庫中,在您停用之前不會過期。"
@@ -1833,6 +1878,7 @@ msgstr "登錄"
msgid "SMTP settings" msgid "SMTP settings"
msgstr "SMTP設置" msgstr "SMTP設置"
#: src/components/network-monitors-table/network-monitors-table.tsx
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "Sort By" msgid "Sort By"
msgstr "排序依據" msgstr "排序依據"
@@ -1875,12 +1921,11 @@ msgstr "交換使用"
msgid "Switch theme" msgid "Switch theme"
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/containers-table/containers-table-columns.tsx
#: src/components/navbar.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-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/quiet-hours.tsx #: src/components/routes/settings/quiet-hours.tsx
@@ -1925,9 +1970,15 @@ msgstr "分頁"
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Target" msgid "Target"
msgstr "目標" msgstr "目標"
#: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx
msgid "target[,protocol[,port[,interval]]]"
msgstr ""
#: src/components/systemd-table/systemd-table.tsx #: src/components/systemd-table/systemd-table.tsx
msgid "Tasks" msgid "Tasks"
msgstr "任務數" msgstr "任務數"
@@ -2162,6 +2213,7 @@ msgstr "更新"
#: src/components/containers-table/containers-table-columns.tsx #: src/components/containers-table/containers-table-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/routes/system/smart-table.tsx #: src/components/routes/system/smart-table.tsx
#: src/components/routes/system/storage-pools-table.tsx #: src/components/routes/system/storage-pools-table.tsx
#: src/components/systemd-table/systemd-table-columns.tsx #: src/components/systemd-table/systemd-table-columns.tsx
@@ -2217,6 +2269,7 @@ msgstr "利用率"
msgid "Value" msgid "Value"
msgstr "值" msgstr "值"
#: src/components/network-monitors-table/network-monitors-table.tsx
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "View" msgid "View"
msgstr "檢視" msgstr "檢視"
@@ -2231,6 +2284,7 @@ msgstr "查看更多"
msgid "View your 200 most recent alerts." msgid "View your 200 most recent alerts."
msgstr "檢視最近 200 則警報。" msgstr "檢視最近 200 則警報。"
#: src/components/network-monitors-table/network-monitors-table.tsx
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "Visible Fields" msgid "Visible Fields"
msgstr "可見欄位" msgstr "可見欄位"
@@ -2305,3 +2359,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 "您的用戶設置已更新。" msgstr "您的用戶設置已更新。"
+68 -13
View File
@@ -8,7 +8,7 @@ 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: 2026-09-18 19:22\n" "PO-Revision-Date: 2026-09-24 17:29\n"
"Last-Translator: \n" "Last-Translator: \n"
"Language-Team: Chinese Traditional\n" "Language-Team: Chinese Traditional\n"
"Plural-Forms: nplurals=1; plural=0;\n" "Plural-Forms: nplurals=1; plural=0;\n"
@@ -52,14 +52,26 @@ msgstr "{count, plural, one {{countString} 小時} other {{countString} 小時}}
msgid "{count, plural, one {{countString} minute} few {{countString} minutes} many {{countString} minutes} other {{countString} minutes}}" 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} 分鐘}}" msgstr "{count, plural, one {{countString} 分鐘} few {{countString} 分鐘} many {{countString} 分鐘} other {{countString} 分鐘}}"
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "{daysLeft, plural, one {# day} other {# days}}"
msgstr ""
#: src/components/routes/system/charts/disk-charts.tsx #: src/components/routes/system/charts/disk-charts.tsx
msgid "{diskName} I/O" msgid "{diskName} I/O"
msgstr "{diskName} I/O" msgstr "{diskName} I/O"
#: src/components/systems-table/systems-table-columns.tsx
msgid "{numFailed, plural, one {# failed service} other {# failed services}}"
msgstr ""
#: src/components/routes/system/info-bar.tsx #: src/components/routes/system/info-bar.tsx
msgid "{threads, plural, one {# thread} other {# threads}}" msgid "{threads, plural, one {# thread} other {# threads}}"
msgstr "{threads, plural, one {# 執行緒} other {# 執行緒}}" msgstr "{threads, plural, one {# 執行緒} other {# 執行緒}}"
#: src/components/systems-table/systems-table-columns.tsx
msgid "{totalCount, plural, one {# service} other {# services}}"
msgstr ""
#: src/lib/utils.ts #: src/lib/utils.ts
msgid "1 hour" msgid "1 hour"
msgstr "1小時" msgstr "1小時"
@@ -123,10 +135,10 @@ msgstr "活動警報"
msgid "Active state" msgid "Active state"
msgstr "活動狀態" msgstr "活動狀態"
#: src/components/add-system.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/add-system.tsx msgid "Add"
#: src/components/navbar.tsx msgstr ""
#: src/components/navbar.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
@@ -136,6 +148,13 @@ msgstr "活動狀態"
msgid "Add {foo}" msgid "Add {foo}"
msgstr "新增{foo}" msgstr "新增{foo}"
#: src/components/add-system.tsx
#: src/components/add-system.tsx
#: src/components/navbar.tsx
#: src/components/navbar.tsx
msgid "Add System"
msgstr "新增系統"
#: src/components/routes/settings/notifications.tsx #: src/components/routes/settings/notifications.tsx
msgid "Add URL" msgid "Add URL"
msgstr "新增 URL" msgstr "新增 URL"
@@ -260,6 +279,7 @@ msgstr "GPU 引擎的平均利用率"
msgid "Average, minimum, and maximum response time" msgid "Average, minimum, and maximum response time"
msgstr "平均、最小及最大回應時間" msgstr "平均、最小及最大回應時間"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Avg 1h" msgid "Avg 1h"
msgstr "1 小時平均" msgstr "1 小時平均"
@@ -383,6 +403,19 @@ msgstr "注意 - 可能遺失資料"
msgid "Celsius (°C)" msgid "Celsius (°C)"
msgstr "攝氏 (°C)" msgstr "攝氏 (°C)"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Certificate"
msgstr ""
#: src/components/network-monitors-table/network-monitors-table.tsx
msgid "Certificate expired {expires}"
msgstr ""
#: src/components/network-monitors-table/network-monitors-table.tsx
msgid "Certificate expires {expires}"
msgstr ""
#: src/components/routes/settings/general.tsx #: src/components/routes/settings/general.tsx
msgid "Change display units for metrics." msgid "Change display units for metrics."
msgstr "更改指標的顯示單位。" msgstr "更改指標的顯示單位。"
@@ -776,12 +809,15 @@ msgstr "持續時間"
msgid "Edit" msgid "Edit"
msgstr "編輯" msgstr "編輯"
#: src/components/add-system.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/routes/settings/quiet-hours.tsx #: src/components/routes/settings/quiet-hours.tsx
msgid "Edit {foo}" msgid "Edit {foo}"
msgstr "編輯{foo}" msgstr "編輯{foo}"
#: src/components/add-system.tsx
msgid "Edit System"
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
@@ -867,6 +903,10 @@ msgstr "未在 <0>config.yml</0> 中定義的現有系統將會被刪除。請
msgid "Exited active" msgid "Exited active"
msgstr "結束" msgstr "結束"
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Expired"
msgstr ""
#: src/components/routes/settings/tokens-fingerprints.tsx #: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Expires after one hour or on hub restart." msgid "Expires after one hour or on hub restart."
msgstr "在一個小時後或者重新啟動 Hub 時過期。" msgstr "在一個小時後或者重新啟動 Hub 時過期。"
@@ -887,10 +927,6 @@ 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 #: src/components/routes/system/smart-table.tsx
msgid "Failed Attributes:" msgid "Failed Attributes:"
msgstr "失敗屬性:" msgstr "失敗屬性:"
@@ -1090,6 +1126,7 @@ msgstr "有可用的映像檔更新"
msgid "Inactive" msgid "Inactive"
msgstr "未啟用" msgstr "未啟用"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/routes/settings/heartbeat.tsx #: src/components/routes/settings/heartbeat.tsx
msgid "Interval" msgid "Interval"
@@ -1182,6 +1219,7 @@ msgctxt "Packet loss"
msgid "Loss" msgid "Loss"
msgstr "封包遺失" msgstr "封包遺失"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Loss 1h" msgid "Loss 1h"
msgstr "1 小時封包遺失率" msgstr "1 小時封包遺失率"
@@ -1204,6 +1242,7 @@ msgstr "手動設定說明"
msgid "Max 1 min" msgid "Max 1 min"
msgstr "最多 1 分鐘" msgstr "最多 1 分鐘"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Max 1h" msgid "Max 1h"
msgstr "1 小時最大" msgstr "1 小時最大"
@@ -1234,6 +1273,7 @@ msgstr "記憶體使用量"
msgid "Memory usage of containers" msgid "Memory usage of containers"
msgstr "容器的記憶體使用量" msgstr "容器的記憶體使用量"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Min 1h" msgid "Min 1h"
msgstr "1 小時最小" msgstr "1 小時最小"
@@ -1565,6 +1605,7 @@ msgstr "進程啟動"
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Protocol" msgid "Protocol"
msgstr "通訊協定" msgstr "通訊協定"
@@ -1653,6 +1694,7 @@ msgstr "重設密碼"
msgid "Resolved" msgid "Resolved"
msgstr "已解決" msgstr "已解決"
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/routes/system/charts/monitors-charts.tsx #: src/components/routes/system/charts/monitors-charts.tsx
msgid "Response" msgid "Response"
@@ -1698,7 +1740,6 @@ msgstr "S.M.A.R.T. 詳細資訊"
msgid "S.M.A.R.T. Self-Test" msgid "S.M.A.R.T. Self-Test"
msgstr "S.M.A.R.T. 自我測試" msgstr "S.M.A.R.T. 自我測試"
#: src/components/add-system.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
msgid "Save {foo}" msgid "Save {foo}"
msgstr "儲存 {foo}" msgstr "儲存 {foo}"
@@ -1712,6 +1753,10 @@ msgstr "使用 Enter 鍵或逗號儲存地址。留空以停用電子郵件通
msgid "Save Settings" msgid "Save Settings"
msgstr "儲存設定" msgstr "儲存設定"
#: src/components/add-system.tsx
msgid "Save System"
msgstr "儲存 系統"
#: src/components/routes/settings/tokens-fingerprints.tsx #: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Saved in the database and does not expire until you disable it." msgid "Saved in the database and does not expire until you disable it."
msgstr "儲存在資料庫中,在您停用之前不會過期。" msgstr "儲存在資料庫中,在您停用之前不會過期。"
@@ -1833,6 +1878,7 @@ msgstr "登入"
msgid "SMTP settings" msgid "SMTP settings"
msgstr "SMTP 設定" msgstr "SMTP 設定"
#: src/components/network-monitors-table/network-monitors-table.tsx
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "Sort By" msgid "Sort By"
msgstr "排序" msgstr "排序"
@@ -1875,12 +1921,11 @@ msgstr "交換空間使用量"
msgid "Switch theme" msgid "Switch theme"
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/containers-table/containers-table-columns.tsx
#: src/components/navbar.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-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/quiet-hours.tsx #: src/components/routes/settings/quiet-hours.tsx
@@ -1925,9 +1970,15 @@ msgstr "分頁"
#: src/components/network-monitors-table/monitor-dialog.tsx #: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
msgid "Target" msgid "Target"
msgstr "目標" msgstr "目標"
#: src/components/network-monitors-table/monitor-dialog.tsx
#: src/components/network-monitors-table/monitor-dialog.tsx
msgid "target[,protocol[,port[,interval]]]"
msgstr ""
#: src/components/systemd-table/systemd-table.tsx #: src/components/systemd-table/systemd-table.tsx
msgid "Tasks" msgid "Tasks"
msgstr "任務數" msgstr "任務數"
@@ -2162,6 +2213,7 @@ msgstr "更新"
#: src/components/containers-table/containers-table-columns.tsx #: src/components/containers-table/containers-table-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx #: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/network-monitors-table/network-monitors-columns.tsx
#: src/components/routes/system/smart-table.tsx #: src/components/routes/system/smart-table.tsx
#: src/components/routes/system/storage-pools-table.tsx #: src/components/routes/system/storage-pools-table.tsx
#: src/components/systemd-table/systemd-table-columns.tsx #: src/components/systemd-table/systemd-table-columns.tsx
@@ -2217,6 +2269,7 @@ msgstr "利用率"
msgid "Value" msgid "Value"
msgstr "值" msgstr "值"
#: src/components/network-monitors-table/network-monitors-table.tsx
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "View" msgid "View"
msgstr "檢視" msgstr "檢視"
@@ -2231,6 +2284,7 @@ msgstr "查看更多"
msgid "View your 200 most recent alerts." msgid "View your 200 most recent alerts."
msgstr "檢視最近 200 則警報。" msgstr "檢視最近 200 則警報。"
#: src/components/network-monitors-table/network-monitors-table.tsx
#: src/components/systems-table/systems-table.tsx #: src/components/systems-table/systems-table.tsx
msgid "Visible Fields" msgid "Visible Fields"
msgstr "顯示欄位" msgstr "顯示欄位"
@@ -2305,3 +2359,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 "已更新您的使用者設定" msgstr "已更新您的使用者設定"
+13 -1
View File
@@ -361,7 +361,8 @@ export interface ChartTimeData {
} }
export interface UserSettings { export interface UserSettings {
chartTime: ChartTimes /** may be missing in settings stored by older versions -- use getUserChartTime() */
chartTime?: ChartTimes
emails?: string[] emails?: string[]
webhooks?: string[] webhooks?: string[]
unitTemp?: Unit unitTemp?: Unit
@@ -376,6 +377,9 @@ export interface UserSettings {
statusFilter?: "all" | "up" | "down" | "paused" | "pending" statusFilter?: "all" | "up" | "down" | "paused" | "pending"
viewMode?: "table" | "grid" viewMode?: "table" | "grid"
sortMode?: Array<{ id: string; desc: boolean }> sortMode?: Array<{ id: string; desc: boolean }>
monitorCols?: Record<string, boolean>
monitorSortMode?: Array<{ id: string; desc: boolean }>
monitorSortModeSystem?: Array<{ id: string; desc: boolean }>
grid?: boolean grid?: boolean
displayMode?: "default" | "tabs" displayMode?: "default" | "tabs"
} }
@@ -648,9 +652,17 @@ export interface NetworkMonitorRecord {
loss1h: number loss1h: number
interval: number interval: number
enabled: boolean enabled: boolean
/** Latest TLS certificate details, reported for HTTPS targets. */
certInfo?: MonitorCertInfo | null
updated: string updated: string
} }
/** Leaf TLS certificate details reported by the agent. Timestamps are Unix milliseconds. */
export interface MonitorCertInfo {
expires: number
issuer?: string
}
/** Response times in microseconds and packet loss percentage (0-100). */ /** Response times in microseconds and packet loss percentage (0-100). */
export interface MonitorStats { export interface MonitorStats {
res_avg: number res_avg: number
+41
View File
@@ -0,0 +1,41 @@
import { beforeEach, describe, expect, mock, test } from "bun:test"
import type { UserSettings } from "../src/types"
// lib/api needs a browser and the lingui macro transform, and stores only uses pb for the auth record
mock.module("../src/lib/api", () => ({ pb: { authStore: { isValid: false, record: null } } }))
const { $chartTime, $userSettings, defaultChartTime, getUserChartTime, hydrateUserSettings } = await import(
"../src/lib/stores"
)
describe("chart time from user settings", () => {
beforeEach(() => {
$chartTime.set(defaultChartTime)
})
test("hydration uses the stored chart time", () => {
hydrateUserSettings({ chartTime: "24h", emails: [] } as UserSettings)
expect($chartTime.get()).toBe("24h")
})
test("hydration falls back to the default when settings have no chart time", () => {
$chartTime.set("24h")
hydrateUserSettings({ emails: [] } as UserSettings)
expect($chartTime.get()).toBe(defaultChartTime)
expect(getUserChartTime()).toBe(defaultChartTime)
})
test("hydration falls back to the default when the stored chart time is empty", () => {
$chartTime.set("24h")
hydrateUserSettings({ chartTime: "", emails: [] } as unknown as UserSettings)
expect($chartTime.get()).toBe(defaultChartTime)
expect(getUserChartTime()).toBe(defaultChartTime)
})
test("other settings writes don't change the active chart time", () => {
$chartTime.set("12h")
$userSettings.set({ chartTime: "24h", emails: [], grid: true } as UserSettings)
$userSettings.setKey("chartTime", "7d")
expect($chartTime.get()).toBe("12h")
})
})
+4 -3
View File
@@ -15,9 +15,10 @@ It has a friendly web interface, simple configuration, and is ready to use out o
- **Lightweight**: Smaller and less resource-intensive than leading solutions. - **Lightweight**: Smaller and less resource-intensive than leading solutions.
- **Simple**: Easy setup with little manual configuration required. - **Simple**: Easy setup with little manual configuration required.
- **Alerts**: Configurable alerts for most metrics. Supports many notification services.
- **Docker stats**: Tracks CPU, memory, and network usage history for each container. - **Docker stats**: Tracks CPU, memory, and network usage history for each container.
- **ZFS**: Tracks pool capacity, health, and I/O, plus per-dataset usage. - **Network monitoring**: Monitor response time and interruptions directly from agents.
- **Alerts**: Configurable alerts for CPU, memory, disk, bandwidth, temperature, fan speed, load average, and status. - **S.M.A.R.T.**: Disk health data and notifications on drive failure.
- **Multi-user**: Users manage their own systems. Admins can share systems across users. - **Multi-user**: Users manage their own systems. Admins can share systems across users.
- **OAuth / OIDC**: Supports many OAuth2 providers. Password auth can be disabled. - **OAuth / OIDC**: Supports many OAuth2 providers. Password auth can be disabled.
- **Automatic backups**: Save to and restore from disk or S3-compatible storage. - **Automatic backups**: Save to and restore from disk or S3-compatible storage.
@@ -51,7 +52,7 @@ The [quick start guide](https://beszel.dev/guide/getting-started) and other docu
- **Temperature** - Host system sensors. - **Temperature** - Host system sensors.
- **Fan speed** - Host system sensors (Linux, via `/sys/class/hwmon`). - **Fan speed** - Host system sensors (Linux, via `/sys/class/hwmon`).
- **GPU usage / power draw** - Nvidia, AMD, and Intel. - **GPU usage / power draw** - Nvidia, AMD, and Intel.
- **Battery** - Host system battery charge. - **Battery charge** - Host system and some peripherals.
- **Containers** - Status and metrics of all running Docker / Podman containers. - **Containers** - Status and metrics of all running Docker / Podman containers.
- **S.M.A.R.T.** - Host system disk health (includes eMMC wear/EOL and Linux mdraid array health via sysfs when available). - **S.M.A.R.T.** - Host system disk health (includes eMMC wear/EOL and Linux mdraid array health via sysfs when available).
- **ZFS** - Pool capacity, usage, health, I/O throughput, scrub status, and per-dataset usage. - **ZFS** - Pool capacity, usage, health, I/O throughput, scrub status, and per-dataset usage.
+2 -2
View File
@@ -2,9 +2,9 @@ apiVersion: v1
description: Installs beszel-agent in kubernetes description: Installs beszel-agent in kubernetes
home: https://github.com/henrygd/beszel/tree/main/supplemental/helm/beszel-agent home: https://github.com/henrygd/beszel/tree/main/supplemental/helm/beszel-agent
name: beszel-agent name: beszel-agent
appVersion: "0.19.0" appVersion: "0.20.0"
# Bump this version when publishing chart changes. # Bump this version when publishing chart changes.
version: 0.1.6 version: 0.1.7
sources: sources:
- https://github.com/henrygd/beszel/tree/main/supplemental/helm/beszel-agent - https://github.com/henrygd/beszel/tree/main/supplemental/helm/beszel-agent
- https://www.beszel.dev/ - https://www.beszel.dev/
+3 -3
View File
@@ -80,7 +80,7 @@ Essential parameters to configure:
| `secret.sshKey` | `ssh-key` | Key name in the secret for the SSH public key | | `secret.sshKey` | `ssh-key` | Key name in the secret for the SSH public key |
| `secret.tokenKey` | `token` | Key name in the secret for the authentication token | | `secret.tokenKey` | `token` | Key name in the secret for the authentication token |
| `image.repository` | `henrygd/beszel-agent` | Container image | | `image.repository` | `henrygd/beszel-agent` | Container image |
| `image.tag` | Chart AppVersion (0.19.0) | Image version | | `image.tag` | Chart AppVersion (0.20.0) | Image version |
| `hostNetwork` | `false` | Use host network for network monitoring | | `hostNetwork` | `false` | Use host network for network monitoring |
| `tolerations` | Allows all taints | Tolerations for running on tainted nodes | | `tolerations` | Allows all taints | Tolerations for running on tainted nodes |
@@ -385,7 +385,7 @@ helm upgrade beszel-agent ./beszel-agent \
# Change image version # Change image version
helm upgrade beszel-agent ./beszel-agent \ helm upgrade beszel-agent ./beszel-agent \
--set image.tag="0.19.0" --set image.tag="0.20.0"
``` ```
### Restart All Agents ### Restart All Agents
@@ -522,7 +522,7 @@ kubectl get secret beszel-agent -o jsonpath='{.data.ssh-key}' | base64 -d
## Chart Information ## Chart Information
- **Chart Version**: 0.1.0 - **Chart Version**: 0.1.0
- **App Version**: 0.19.0 - **App Version**: 0.20.0
- **Kubernetes Version**: 1.19+ - **Kubernetes Version**: 1.19+
- **Maintainer**: cloudwithdan (nikoloskid@pm.me) - **Maintainer**: cloudwithdan (nikoloskid@pm.me)
+2 -2
View File
@@ -2,9 +2,9 @@ apiVersion: v1
description: Installs beszel-hub in kubernetes description: Installs beszel-hub in kubernetes
home: https://github.com/henrygd/beszel/tree/main/supplemental/helm/beszel-hub home: https://github.com/henrygd/beszel/tree/main/supplemental/helm/beszel-hub
name: beszel-hub name: beszel-hub
appVersion: "0.19.0" appVersion: "0.20.0"
# Bump this version when publishing chart changes. # Bump this version when publishing chart changes.
version: 0.1.6 version: 0.1.7
sources: sources:
- https://github.com/henrygd/beszel/tree/main/supplemental/helm/beszel-hub - https://github.com/henrygd/beszel/tree/main/supplemental/helm/beszel-hub
- https://www.beszel.dev/ - https://www.beszel.dev/
+3 -3
View File
@@ -47,7 +47,7 @@ Key configuration options in `values.yaml`:
|-----------|---------|-------------| |-----------|---------|-------------|
| `replicaCount` | `1` | Number of Beszel Hub replicas | | `replicaCount` | `1` | Number of Beszel Hub replicas |
| `image.repository` | `henrygd/beszel` | Container image repository | | `image.repository` | `henrygd/beszel` | Container image repository |
| `image.tag` | Chart AppVersion (0.19.0) | Container image tag | | `image.tag` | Chart AppVersion (0.20.0) | Container image tag |
| `image.pullPolicy` | `IfNotPresent` | Image pull policy | | `image.pullPolicy` | `IfNotPresent` | Image pull policy |
| `service.port` | `8090` | Service port | | `service.port` | `8090` | Service port |
| `persistentVolumeClaim.enabled` | `true` | Enable persistent volume | | `persistentVolumeClaim.enabled` | `true` | Enable persistent volume |
@@ -169,7 +169,7 @@ tolerations:
```yaml ```yaml
replicaCount: 3 replicaCount: 3
image: image:
tag: "0.19.0" tag: "0.20.0"
service: service:
type: LoadBalancer type: LoadBalancer
ingress: ingress:
@@ -330,7 +330,7 @@ By default, Beszel Hub uses a PersistentVolumeClaim for data storage. Ensure you
## Chart Information ## Chart Information
- **Chart Version**: 0.1.0 - **Chart Version**: 0.1.0
- **App Version**: 0.19.0 - **App Version**: 0.20.0
- **Kubernetes Version**: 1.19+ - **Kubernetes Version**: 1.19+
- **Maintainer**: cloudwithdan (nikoloskid@pm.me) - **Maintainer**: cloudwithdan (nikoloskid@pm.me)
+92 -27
View File
@@ -298,6 +298,94 @@ warn() {
echo "Warning: $*" >&2 echo "Warning: $*" >&2
} }
# Keep IDs within 16 bits, including on older OpenWrt versions whose account
# helpers start automatic allocation at 65536.
openwrt_unused_id() {
awk -F: '
{ used[$3] = 1 }
END {
for (id = 32768; id < 65534; id++) {
if (!(id in used)) { print id; exit }
}
exit 1
}
' "$1"
}
validate_openwrt_account() {
# Duplicate numeric IDs share permissions even when the names differ.
for account_file in /etc/passwd /etc/group; do
if ! awk -F: '
$1 == "beszel" { id = $3; count++ }
{ ids[$3]++ }
END { if (count && (count != 1 || id == 0 || ids[id] != 1)) exit 1 }
' "$account_file"; then
fail "The beszel account has a duplicate or root ID in $account_file. Stop beszel-agent and assign beszel an unused UID/GID before reinstalling. Update ownership only in $AGENT_DIR; do not change all files owned by the shared ID."
fi
done
if grep -q '^beszel:' /etc/passwd; then
account_gid=$(awk -F: '$1 == "beszel" { print $4 }' /etc/passwd)
group_gid=$(awk -F: '$1 == "beszel" { print $3 }' /etc/group)
[ "$account_gid" = "$group_gid" ] || fail "The beszel user's primary group is not the dedicated beszel group. Repair the account before reinstalling."
fi
}
configure_openwrt_account() (
validate_openwrt_account
[ -r /lib/functions.sh ] || fail "OpenWrt account helpers (/lib/functions.sh) are required."
# OpenWrt's library expects unset variables and defines generic functions.
# Source it in a subshell so neither affects the rest of the installer.
set +u
. /lib/functions.sh
IPKG_INSTROOT=""
if ! grep -q '^beszel:' /etc/group; then
account_gid=$(openwrt_unused_id /etc/group) || fail "No unused service GID available."
group_add beszel "$account_gid" || fail "Could not create the beszel group."
fi
account_gid=$(awk -F: '$1 == "beszel" { print $3 }' /etc/group)
[ -n "$account_gid" ] || fail "The beszel group was not created."
if ! grep -q '^beszel:' /etc/passwd; then
account_uid=$(openwrt_unused_id /etc/passwd) || fail "No unused service UID available."
user_add beszel "$account_uid" "$account_gid" "Beszel agent" /nonexistent /bin/false || fail "Could not create the beszel user."
fi
grep -q '^beszel:' /etc/passwd || fail "The beszel account is incomplete."
validate_openwrt_account
# Previous installers omitted the shadow entry. Repair it with a locked
# password, without rewriting an existing account or changing its IDs.
if ! grep -q '^beszel:' /etc/shadow; then
lock /var/lock/passwd || fail "Could not lock the account database."
shadow_status=0
if ! grep -q '^beszel:' /etc/shadow; then
printf 'beszel:!:0:0:99999:7:::\n' >> /etc/shadow || shadow_status=$?
fi
lock -u /var/lock/passwd || fail "Could not unlock the account database."
[ "$shadow_status" -eq 0 ] || fail "Could not create the beszel shadow entry."
fi
if grep -q '^docker:' /etc/group; then
# Match complete member names and avoid a leading comma for empty groups.
if ! awk -F: '$1 == "docker" { n = split($4, members, ","); for (i = 1; i <= n; i++) if (members[i] == "beszel") found = 1 } END { exit !found }' /etc/group; then
echo "Adding beszel to docker group"
if grep -q '^docker:[^:]*:[^:]*:$' /etc/group; then
sed -i '/^docker:/s/$/beszel/' /etc/group
else
sed -i '/^docker:/s/$/,beszel/' /etc/group
fi
fi
fi
)
remove_openwrt_account() {
if command -v userdel >/dev/null 2>&1; then
userdel beszel || fail "Could not remove the beszel user."
elif command -v deluser >/dev/null 2>&1; then
deluser beszel || fail "Could not remove the beszel user."
else
warn "Neither userdel nor deluser is available; the beszel account has been retained."
fi
}
require_value() { require_value() {
[ "$#" -ge 2 ] && [ -n "$2" ] || fail "Option $1 requires a value." [ "$#" -ge 2 ] && [ -n "$2" ] || fail "Option $1 requires a value."
} }
@@ -672,7 +760,9 @@ if [ "$UNINSTALL" = true ]; then
echo "Removing the dedicated user for the agent service..." echo "Removing the dedicated user for the agent service..."
killall beszel-agent 2>/dev/null || true # Usually already stopped by the service manager. killall beszel-agent 2>/dev/null || true # Usually already stopped by the service manager.
if id -u beszel >/dev/null 2>&1; then if id -u beszel >/dev/null 2>&1; then
if is_alpine || is_openwrt; then if is_openwrt; then
remove_openwrt_account
elif is_alpine; then
deluser beszel || fail "Could not remove the beszel user." deluser beszel || fail "Could not remove the beszel user."
elif is_freebsd; then elif is_freebsd; then
pw user del beszel || fail "Could not remove the beszel user." pw user del beszel || fail "Could not remove the beszel user."
@@ -772,32 +862,7 @@ if is_alpine; then
fi fi
elif is_openwrt; then elif is_openwrt; then
# Create beszel group first if it doesn't exist (check /etc/group directly) configure_openwrt_account
if ! grep -q "^beszel:" /etc/group >/dev/null 2>&1; then
echo "beszel:x:999:" >> /etc/group
fi
# Create beszel user if it doesn't exist (double-check to prevent duplicates)
if ! id -u beszel >/dev/null 2>&1 && ! grep -q "^beszel:" /etc/passwd >/dev/null 2>&1; then
echo "beszel:x:999:999::/nonexistent:/bin/false" >> /etc/passwd
fi
# Add the user to the docker group if docker group exists and user is not already in it
if grep -q "^docker:" /etc/group >/dev/null 2>&1; then
echo "Adding beszel to docker group"
# Check if beszel is already in docker group
if ! grep "^docker:" /etc/group | grep -q "beszel"; then
# Add beszel to docker group by modifying /etc/group
# Handle both cases: group with existing members and group without members
if grep "^docker:" /etc/group | grep -q ":.*:.*$"; then
# Group has existing members, append with comma
sed -i 's/^docker:\([^:]*:[^:]*:\)\(.*\)$/docker:\1\2,beszel/' /etc/group
else
# Group has no members, just append
sed -i 's/^docker:\([^:]*:[^:]*:\)$/docker:\1beszel/' /etc/group
fi
fi
fi
elif is_freebsd; then elif is_freebsd; then
if is_opnsense || is_pfsense; then if is_opnsense || is_pfsense; then