mirror of
https://github.com/henrygd/beszel.git
synced 2026-04-04 20:11:50 +02:00
Compare commits
20 Commits
4e0ca7c2ba
...
intel-gpu
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9d87102e0c | ||
|
|
6a406e5206 | ||
|
|
240e75f025 | ||
|
|
ea984844ff | ||
|
|
0d157b5857 | ||
|
|
d0b6e725c8 | ||
|
|
ffe7f8547a | ||
|
|
37817b0f15 | ||
|
|
a66ac418ae | ||
|
|
2ee2f53267 | ||
|
|
e5c766c00b | ||
|
|
da43ba10e1 | ||
|
|
fca13004bd | ||
|
|
376a86829c | ||
|
|
ef48613f3f | ||
|
|
49976c6f61 | ||
|
|
d68f1f0985 | ||
|
|
273a090200 | ||
|
|
59057a2ba4 | ||
|
|
1b9e781d45 |
@@ -9,6 +9,7 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/henrygd/beszel/agent/health"
|
"github.com/henrygd/beszel/agent/health"
|
||||||
|
"github.com/henrygd/beszel/internal/entities/system"
|
||||||
)
|
)
|
||||||
|
|
||||||
// ConnectionManager manages the connection state and events for the agent.
|
// ConnectionManager manages the connection state and events for the agent.
|
||||||
@@ -22,6 +23,7 @@ type ConnectionManager struct {
|
|||||||
serverOptions ServerOptions // Configuration for SSH server
|
serverOptions ServerOptions // Configuration for SSH server
|
||||||
wsTicker *time.Ticker // Ticker for WebSocket connection attempts
|
wsTicker *time.Ticker // Ticker for WebSocket connection attempts
|
||||||
isConnecting bool // Prevents multiple simultaneous reconnection attempts
|
isConnecting bool // Prevents multiple simultaneous reconnection attempts
|
||||||
|
ConnectionType system.ConnectionType
|
||||||
}
|
}
|
||||||
|
|
||||||
// ConnectionState represents the current connection state of the agent.
|
// ConnectionState represents the current connection state of the agent.
|
||||||
@@ -144,15 +146,18 @@ func (c *ConnectionManager) handleStateChange(newState ConnectionState) {
|
|||||||
switch newState {
|
switch newState {
|
||||||
case WebSocketConnected:
|
case WebSocketConnected:
|
||||||
slog.Info("WebSocket connected", "host", c.wsClient.hubURL.Host)
|
slog.Info("WebSocket connected", "host", c.wsClient.hubURL.Host)
|
||||||
|
c.ConnectionType = system.ConnectionTypeWebSocket
|
||||||
c.stopWsTicker()
|
c.stopWsTicker()
|
||||||
_ = c.agent.StopServer()
|
_ = c.agent.StopServer()
|
||||||
c.isConnecting = false
|
c.isConnecting = false
|
||||||
case SSHConnected:
|
case SSHConnected:
|
||||||
// stop new ws connection attempts
|
// stop new ws connection attempts
|
||||||
slog.Info("SSH connection established")
|
slog.Info("SSH connection established")
|
||||||
|
c.ConnectionType = system.ConnectionTypeSSH
|
||||||
c.stopWsTicker()
|
c.stopWsTicker()
|
||||||
c.isConnecting = false
|
c.isConnecting = false
|
||||||
case Disconnected:
|
case Disconnected:
|
||||||
|
c.ConnectionType = system.ConnectionTypeNone
|
||||||
if c.isConnecting {
|
if c.isConnecting {
|
||||||
// Already handling reconnection, avoid duplicate attempts
|
// Already handling reconnection, avoid duplicate attempts
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
// Package deltatracker provides a tracker for calculating differences in numeric values over time.
|
||||||
package deltatracker
|
package deltatracker
|
||||||
|
|
||||||
import (
|
import (
|
||||||
@@ -16,7 +17,7 @@ type Numeric interface {
|
|||||||
// K is the key type (e.g., int, string).
|
// K is the key type (e.g., int, string).
|
||||||
// V is the value type (e.g., int, int64, float32, float64).
|
// V is the value type (e.g., int, int64, float32, float64).
|
||||||
type DeltaTracker[K comparable, V Numeric] struct {
|
type DeltaTracker[K comparable, V Numeric] struct {
|
||||||
mu sync.RWMutex
|
sync.RWMutex
|
||||||
current map[K]V
|
current map[K]V
|
||||||
previous map[K]V
|
previous map[K]V
|
||||||
}
|
}
|
||||||
@@ -31,15 +32,15 @@ func NewDeltaTracker[K comparable, V Numeric]() *DeltaTracker[K, V] {
|
|||||||
|
|
||||||
// Set records the current value for a given ID.
|
// Set records the current value for a given ID.
|
||||||
func (t *DeltaTracker[K, V]) Set(id K, value V) {
|
func (t *DeltaTracker[K, V]) Set(id K, value V) {
|
||||||
t.mu.Lock()
|
t.Lock()
|
||||||
defer t.mu.Unlock()
|
defer t.Unlock()
|
||||||
t.current[id] = value
|
t.current[id] = value
|
||||||
}
|
}
|
||||||
|
|
||||||
// Deltas returns a map of all calculated deltas for the current interval.
|
// Deltas returns a map of all calculated deltas for the current interval.
|
||||||
func (t *DeltaTracker[K, V]) Deltas() map[K]V {
|
func (t *DeltaTracker[K, V]) Deltas() map[K]V {
|
||||||
t.mu.RLock()
|
t.RLock()
|
||||||
defer t.mu.RUnlock()
|
defer t.RUnlock()
|
||||||
|
|
||||||
deltas := make(map[K]V)
|
deltas := make(map[K]V)
|
||||||
for id, currentVal := range t.current {
|
for id, currentVal := range t.current {
|
||||||
@@ -55,8 +56,8 @@ func (t *DeltaTracker[K, V]) Deltas() map[K]V {
|
|||||||
// Delta returns the delta for a single key.
|
// Delta returns the delta for a single key.
|
||||||
// Returns 0 if the key doesn't exist or has no previous value.
|
// Returns 0 if the key doesn't exist or has no previous value.
|
||||||
func (t *DeltaTracker[K, V]) Delta(id K) V {
|
func (t *DeltaTracker[K, V]) Delta(id K) V {
|
||||||
t.mu.RLock()
|
t.RLock()
|
||||||
defer t.mu.RUnlock()
|
defer t.RUnlock()
|
||||||
|
|
||||||
currentVal, currentOk := t.current[id]
|
currentVal, currentOk := t.current[id]
|
||||||
if !currentOk {
|
if !currentOk {
|
||||||
@@ -73,8 +74,8 @@ func (t *DeltaTracker[K, V]) Delta(id K) V {
|
|||||||
|
|
||||||
// Cycle prepares the tracker for the next interval.
|
// Cycle prepares the tracker for the next interval.
|
||||||
func (t *DeltaTracker[K, V]) Cycle() {
|
func (t *DeltaTracker[K, V]) Cycle() {
|
||||||
t.mu.Lock()
|
t.Lock()
|
||||||
defer t.mu.Unlock()
|
defer t.Unlock()
|
||||||
t.previous = t.current
|
t.previous = t.current
|
||||||
t.current = make(map[K]V)
|
t.current = make(map[K]V)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,11 +1,27 @@
|
|||||||
package deltatracker
|
package deltatracker
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
func ExampleDeltaTracker() {
|
||||||
|
tracker := NewDeltaTracker[string, int]()
|
||||||
|
tracker.Set("key1", 10)
|
||||||
|
tracker.Set("key2", 20)
|
||||||
|
tracker.Cycle()
|
||||||
|
tracker.Set("key1", 15)
|
||||||
|
tracker.Set("key2", 30)
|
||||||
|
fmt.Println(tracker.Delta("key1"))
|
||||||
|
fmt.Println(tracker.Delta("key2"))
|
||||||
|
fmt.Println(tracker.Deltas())
|
||||||
|
// Output: 5
|
||||||
|
// 10
|
||||||
|
// map[key1:5 key2:10]
|
||||||
|
}
|
||||||
|
|
||||||
func TestNewDeltaTracker(t *testing.T) {
|
func TestNewDeltaTracker(t *testing.T) {
|
||||||
tracker := NewDeltaTracker[string, int]()
|
tracker := NewDeltaTracker[string, int]()
|
||||||
assert.NotNil(t, tracker)
|
assert.NotNil(t, tracker)
|
||||||
@@ -17,8 +33,8 @@ func TestSet(t *testing.T) {
|
|||||||
tracker := NewDeltaTracker[string, int]()
|
tracker := NewDeltaTracker[string, int]()
|
||||||
tracker.Set("key1", 10)
|
tracker.Set("key1", 10)
|
||||||
|
|
||||||
tracker.mu.RLock()
|
tracker.RLock()
|
||||||
defer tracker.mu.RUnlock()
|
defer tracker.RUnlock()
|
||||||
|
|
||||||
assert.Equal(t, 10, tracker.current["key1"])
|
assert.Equal(t, 10, tracker.current["key1"])
|
||||||
}
|
}
|
||||||
@@ -55,21 +71,21 @@ func TestCycle(t *testing.T) {
|
|||||||
tracker.Set("key2", 20)
|
tracker.Set("key2", 20)
|
||||||
|
|
||||||
// Verify current has values
|
// Verify current has values
|
||||||
tracker.mu.RLock()
|
tracker.RLock()
|
||||||
assert.Equal(t, 10, tracker.current["key1"])
|
assert.Equal(t, 10, tracker.current["key1"])
|
||||||
assert.Equal(t, 20, tracker.current["key2"])
|
assert.Equal(t, 20, tracker.current["key2"])
|
||||||
assert.Empty(t, tracker.previous)
|
assert.Empty(t, tracker.previous)
|
||||||
tracker.mu.RUnlock()
|
tracker.RUnlock()
|
||||||
|
|
||||||
tracker.Cycle()
|
tracker.Cycle()
|
||||||
|
|
||||||
// After cycle, previous should have the old current values
|
// After cycle, previous should have the old current values
|
||||||
// and current should be empty
|
// and current should be empty
|
||||||
tracker.mu.RLock()
|
tracker.RLock()
|
||||||
assert.Empty(t, tracker.current)
|
assert.Empty(t, tracker.current)
|
||||||
assert.Equal(t, 10, tracker.previous["key1"])
|
assert.Equal(t, 10, tracker.previous["key1"])
|
||||||
assert.Equal(t, 20, tracker.previous["key2"])
|
assert.Equal(t, 20, tracker.previous["key2"])
|
||||||
tracker.mu.RUnlock()
|
tracker.RUnlock()
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestCompleteWorkflow(t *testing.T) {
|
func TestCompleteWorkflow(t *testing.T) {
|
||||||
|
|||||||
60
agent/gpu.go
60
agent/gpu.go
@@ -27,13 +27,10 @@ const (
|
|||||||
nvidiaSmiInterval string = "4" // in seconds
|
nvidiaSmiInterval string = "4" // in seconds
|
||||||
tegraStatsInterval string = "3700" // in milliseconds
|
tegraStatsInterval string = "3700" // in milliseconds
|
||||||
rocmSmiInterval time.Duration = 4300 * time.Millisecond
|
rocmSmiInterval time.Duration = 4300 * time.Millisecond
|
||||||
|
|
||||||
// Command retry and timeout constants
|
// Command retry and timeout constants
|
||||||
retryWaitTime time.Duration = 5 * time.Second
|
retryWaitTime time.Duration = 5 * time.Second
|
||||||
maxFailureRetries int = 5
|
maxFailureRetries int = 5
|
||||||
|
|
||||||
cmdBufferSize uint16 = 10 * 1024
|
|
||||||
|
|
||||||
// Unit Conversions
|
// Unit Conversions
|
||||||
mebibytesInAMegabyte float64 = 1.024 // nvidia-smi reports memory in MiB
|
mebibytesInAMegabyte float64 = 1.024 // nvidia-smi reports memory in MiB
|
||||||
milliwattsInAWatt float64 = 1000.0 // tegrastats reports power in mW
|
milliwattsInAWatt float64 = 1000.0 // tegrastats reports power in mW
|
||||||
@@ -45,6 +42,7 @@ type GPUManager struct {
|
|||||||
nvidiaSmi bool
|
nvidiaSmi bool
|
||||||
rocmSmi bool
|
rocmSmi bool
|
||||||
tegrastats bool
|
tegrastats bool
|
||||||
|
intelGpuStats bool
|
||||||
GpuDataMap map[string]*system.GPUData
|
GpuDataMap map[string]*system.GPUData
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -66,6 +64,7 @@ type gpuCollector struct {
|
|||||||
cmdArgs []string
|
cmdArgs []string
|
||||||
parse func([]byte) bool // returns true if valid data was found
|
parse func([]byte) bool // returns true if valid data was found
|
||||||
buf []byte
|
buf []byte
|
||||||
|
bufSize uint16
|
||||||
}
|
}
|
||||||
|
|
||||||
var errNoValidData = fmt.Errorf("no valid GPU data found") // Error for missing data
|
var errNoValidData = fmt.Errorf("no valid GPU data found") // Error for missing data
|
||||||
@@ -99,7 +98,7 @@ func (c *gpuCollector) collect() error {
|
|||||||
|
|
||||||
scanner := bufio.NewScanner(stdout)
|
scanner := bufio.NewScanner(stdout)
|
||||||
if c.buf == nil {
|
if c.buf == nil {
|
||||||
c.buf = make([]byte, 0, cmdBufferSize)
|
c.buf = make([]byte, 0, c.bufSize)
|
||||||
}
|
}
|
||||||
scanner.Buffer(c.buf, bufio.MaxScanTokenSize)
|
scanner.Buffer(c.buf, bufio.MaxScanTokenSize)
|
||||||
|
|
||||||
@@ -244,20 +243,31 @@ func (gm *GPUManager) GetCurrentData() map[string]system.GPUData {
|
|||||||
// copy / reset the data
|
// copy / reset the data
|
||||||
gpuData := make(map[string]system.GPUData, len(gm.GpuDataMap))
|
gpuData := make(map[string]system.GPUData, len(gm.GpuDataMap))
|
||||||
for id, gpu := range gm.GpuDataMap {
|
for id, gpu := range gm.GpuDataMap {
|
||||||
gpuAvg := *gpu
|
// avoid division by zero
|
||||||
|
count := max(gpu.Count, 1)
|
||||||
|
|
||||||
|
// average the data
|
||||||
|
gpuAvg := *gpu
|
||||||
gpuAvg.Temperature = twoDecimals(gpu.Temperature)
|
gpuAvg.Temperature = twoDecimals(gpu.Temperature)
|
||||||
|
gpuAvg.Power = twoDecimals(gpu.Power / count)
|
||||||
|
|
||||||
|
// intel gpu stats doesn't provide usage, memory used, or memory total
|
||||||
|
if gm.intelGpuStats {
|
||||||
|
maxEngineUsage := 0.0
|
||||||
|
for name, engine := range gpu.Engines {
|
||||||
|
gpuAvg.Engines[name] = twoDecimals(engine / count)
|
||||||
|
maxEngineUsage = max(maxEngineUsage, engine/count)
|
||||||
|
}
|
||||||
|
gpuAvg.Usage = twoDecimals(maxEngineUsage)
|
||||||
|
} else {
|
||||||
|
gpuAvg.Usage = twoDecimals(gpu.Usage / count)
|
||||||
gpuAvg.MemoryUsed = twoDecimals(gpu.MemoryUsed)
|
gpuAvg.MemoryUsed = twoDecimals(gpu.MemoryUsed)
|
||||||
gpuAvg.MemoryTotal = twoDecimals(gpu.MemoryTotal)
|
gpuAvg.MemoryTotal = twoDecimals(gpu.MemoryTotal)
|
||||||
|
|
||||||
// avoid division by zero
|
|
||||||
if gpu.Count > 0 {
|
|
||||||
gpuAvg.Usage = twoDecimals(gpu.Usage / gpu.Count)
|
|
||||||
gpuAvg.Power = twoDecimals(gpu.Power / gpu.Count)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// reset accumulators in the original
|
// reset accumulators in the original gpu data for next collection
|
||||||
gpu.Usage, gpu.Power, gpu.Count = 0, 0, 0
|
gpu.Usage, gpu.Power, gpu.Count = gpuAvg.Usage, gpuAvg.Power, 1
|
||||||
|
gpu.Engines = gpuAvg.Engines
|
||||||
|
|
||||||
// append id to the name if there are multiple GPUs with the same name
|
// append id to the name if there are multiple GPUs with the same name
|
||||||
if nameCounts[gpu.Name] > 1 {
|
if nameCounts[gpu.Name] > 1 {
|
||||||
@@ -284,18 +294,37 @@ func (gm *GPUManager) detectGPUs() error {
|
|||||||
gm.tegrastats = true
|
gm.tegrastats = true
|
||||||
gm.nvidiaSmi = false
|
gm.nvidiaSmi = false
|
||||||
}
|
}
|
||||||
if gm.nvidiaSmi || gm.rocmSmi || gm.tegrastats {
|
if _, err := exec.LookPath(intelGpuStatsCmd); err == nil {
|
||||||
|
gm.intelGpuStats = true
|
||||||
|
}
|
||||||
|
if gm.nvidiaSmi || gm.rocmSmi || gm.tegrastats || gm.intelGpuStats {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
return fmt.Errorf("no GPU found - install nvidia-smi, rocm-smi, or tegrastats")
|
return fmt.Errorf("no GPU found - install nvidia-smi, rocm-smi, tegrastats, or intel_gpu_top")
|
||||||
}
|
}
|
||||||
|
|
||||||
// startCollector starts the appropriate GPU data collector based on the command
|
// startCollector starts the appropriate GPU data collector based on the command
|
||||||
func (gm *GPUManager) startCollector(command string) {
|
func (gm *GPUManager) startCollector(command string) {
|
||||||
collector := gpuCollector{
|
collector := gpuCollector{
|
||||||
name: command,
|
name: command,
|
||||||
|
bufSize: 10 * 1024,
|
||||||
}
|
}
|
||||||
switch command {
|
switch command {
|
||||||
|
case intelGpuStatsCmd:
|
||||||
|
go func() {
|
||||||
|
failures := 0
|
||||||
|
for {
|
||||||
|
if err := gm.collectIntelStats(); err != nil {
|
||||||
|
failures++
|
||||||
|
if failures > maxFailureRetries {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
slog.Warn("Error collecting Intel GPU data; see https://beszel.dev/guide/gpu", "err", err)
|
||||||
|
time.Sleep(retryWaitTime)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}()
|
||||||
case nvidiaSmiCmd:
|
case nvidiaSmiCmd:
|
||||||
collector.cmdArgs = []string{
|
collector.cmdArgs = []string{
|
||||||
"-l", nvidiaSmiInterval,
|
"-l", nvidiaSmiInterval,
|
||||||
@@ -344,6 +373,9 @@ func NewGPUManager() (*GPUManager, error) {
|
|||||||
if gm.tegrastats {
|
if gm.tegrastats {
|
||||||
gm.startCollector(tegraStatsCmd)
|
gm.startCollector(tegraStatsCmd)
|
||||||
}
|
}
|
||||||
|
if gm.intelGpuStats {
|
||||||
|
gm.startCollector(intelGpuStatsCmd)
|
||||||
|
}
|
||||||
|
|
||||||
return &gm, nil
|
return &gm, nil
|
||||||
}
|
}
|
||||||
|
|||||||
102
agent/gpu_intel.go
Normal file
102
agent/gpu_intel.go
Normal file
@@ -0,0 +1,102 @@
|
|||||||
|
package agent
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"fmt"
|
||||||
|
"os/exec"
|
||||||
|
|
||||||
|
"github.com/henrygd/beszel/internal/entities/system"
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
intelGpuStatsCmd string = "intel_gpu_top"
|
||||||
|
intelGpuStatsInterval string = "3300" // in milliseconds
|
||||||
|
)
|
||||||
|
|
||||||
|
type intelGpuStats struct {
|
||||||
|
Power struct {
|
||||||
|
GPU float64 `json:"GPU"`
|
||||||
|
} `json:"power"`
|
||||||
|
Engines map[string]struct {
|
||||||
|
Busy float64 `json:"busy"`
|
||||||
|
} `json:"engines"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// updateIntelFromStats updates aggregated GPU data from a single intelGpuStats sample
|
||||||
|
func (gm *GPUManager) updateIntelFromStats(sample *intelGpuStats) bool {
|
||||||
|
gm.Lock()
|
||||||
|
defer gm.Unlock()
|
||||||
|
|
||||||
|
// only one gpu for now - cmd doesn't provide all by default
|
||||||
|
gpuData, ok := gm.GpuDataMap["0"]
|
||||||
|
if !ok {
|
||||||
|
gpuData = &system.GPUData{Name: "GPU", Engines: make(map[string]float64)}
|
||||||
|
gm.GpuDataMap["0"] = gpuData
|
||||||
|
}
|
||||||
|
|
||||||
|
if sample.Power.GPU > 0 {
|
||||||
|
gpuData.Power += sample.Power.GPU
|
||||||
|
}
|
||||||
|
|
||||||
|
if gpuData.Engines == nil {
|
||||||
|
gpuData.Engines = make(map[string]float64, len(sample.Engines))
|
||||||
|
}
|
||||||
|
for name, engine := range sample.Engines {
|
||||||
|
gpuData.Engines[name] += engine.Busy
|
||||||
|
}
|
||||||
|
|
||||||
|
gpuData.Count++
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
// collectIntelStats executes intel_gpu_top in JSON mode and stream-decodes the array of samples
|
||||||
|
func (gm *GPUManager) collectIntelStats() error {
|
||||||
|
cmd := exec.Command(intelGpuStatsCmd, "-s", intelGpuStatsInterval, "-J")
|
||||||
|
stdout, err := cmd.StdoutPipe()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if err := cmd.Start(); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
dec := json.NewDecoder(stdout)
|
||||||
|
|
||||||
|
// Expect a JSON array stream: [ { ... }, { ... }, ... ]
|
||||||
|
tok, err := dec.Token()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if delim, ok := tok.(json.Delim); !ok || delim != '[' {
|
||||||
|
return fmt.Errorf("unexpected JSON start token: %v", tok)
|
||||||
|
}
|
||||||
|
|
||||||
|
var sample intelGpuStats
|
||||||
|
for {
|
||||||
|
if dec.More() {
|
||||||
|
// Clear the engines map before decoding
|
||||||
|
if sample.Engines != nil {
|
||||||
|
for k := range sample.Engines {
|
||||||
|
delete(sample.Engines, k)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := dec.Decode(&sample); err != nil {
|
||||||
|
return fmt.Errorf("decode intel gpu: %w", err)
|
||||||
|
}
|
||||||
|
gm.updateIntelFromStats(&sample)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
// Attempt to read closing bracket (will only be present when process exits)
|
||||||
|
tok, err = dec.Token()
|
||||||
|
if err != nil {
|
||||||
|
// When the process is still running, decoder will block in More/Decode; any error here is terminal
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if delim, ok := tok.(json.Delim); ok && delim == ']' {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return cmd.Wait()
|
||||||
|
}
|
||||||
@@ -792,3 +792,96 @@ func TestAccumulation(t *testing.T) {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestIntelUpdateFromStats(t *testing.T) {
|
||||||
|
gm := &GPUManager{
|
||||||
|
GpuDataMap: make(map[string]*system.GPUData),
|
||||||
|
}
|
||||||
|
|
||||||
|
// First sample with power and two engines
|
||||||
|
sample1 := intelGpuStats{
|
||||||
|
Engines: map[string]struct {
|
||||||
|
Busy float64 `json:"busy"`
|
||||||
|
}{
|
||||||
|
"Render/3D": {Busy: 20.0},
|
||||||
|
"Video": {Busy: 5.0},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
sample1.Power.GPU = 10.5
|
||||||
|
|
||||||
|
ok := gm.updateIntelFromStats(&sample1)
|
||||||
|
assert.True(t, ok)
|
||||||
|
|
||||||
|
gpu := gm.GpuDataMap["0"]
|
||||||
|
require.NotNil(t, gpu)
|
||||||
|
assert.Equal(t, "GPU", gpu.Name)
|
||||||
|
assert.InDelta(t, 10.5, gpu.Power, 0.001)
|
||||||
|
assert.InDelta(t, 20.0, gpu.Engines["Render/3D"], 0.001)
|
||||||
|
assert.InDelta(t, 5.0, gpu.Engines["Video"], 0.001)
|
||||||
|
assert.Equal(t, float64(1), gpu.Count)
|
||||||
|
|
||||||
|
// Second sample with zero power (should not add) and additional engine busy
|
||||||
|
sample2 := intelGpuStats{
|
||||||
|
Engines: map[string]struct {
|
||||||
|
Busy float64 `json:"busy"`
|
||||||
|
}{
|
||||||
|
"Render/3D": {Busy: 10.0},
|
||||||
|
"Video": {Busy: 2.5},
|
||||||
|
"Blitter": {Busy: 1.0},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
// zero power should not increment power accumulator
|
||||||
|
sample2.Power.GPU = 0.0
|
||||||
|
|
||||||
|
ok = gm.updateIntelFromStats(&sample2)
|
||||||
|
assert.True(t, ok)
|
||||||
|
|
||||||
|
gpu = gm.GpuDataMap["0"]
|
||||||
|
require.NotNil(t, gpu)
|
||||||
|
assert.InDelta(t, 10.5, gpu.Power, 0.001)
|
||||||
|
assert.InDelta(t, 30.0, gpu.Engines["Render/3D"], 0.001) // 20 + 10
|
||||||
|
assert.InDelta(t, 7.5, gpu.Engines["Video"], 0.001) // 5 + 2.5
|
||||||
|
assert.InDelta(t, 1.0, gpu.Engines["Blitter"], 0.001)
|
||||||
|
assert.Equal(t, float64(2), gpu.Count)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestIntelCollectorStreaming(t *testing.T) {
|
||||||
|
// Save and override PATH
|
||||||
|
origPath := os.Getenv("PATH")
|
||||||
|
defer os.Setenv("PATH", origPath)
|
||||||
|
|
||||||
|
dir := t.TempDir()
|
||||||
|
os.Setenv("PATH", dir)
|
||||||
|
|
||||||
|
// Create a fake intel_gpu_top that prints a JSON array with two samples and exits
|
||||||
|
scriptPath := filepath.Join(dir, "intel_gpu_top")
|
||||||
|
script := `#!/bin/sh
|
||||||
|
# Ignore args -s and -J
|
||||||
|
# Emit a JSON array with two objects, separated by a comma, then exit
|
||||||
|
(echo '['; \
|
||||||
|
echo '{"power":{"GPU":1.5},"engines":{"Render/3D":{"busy":12.34}}},'; \
|
||||||
|
echo '{"power":{"GPU":2.0},"engines":{"Video":{"busy":5}}}'; \
|
||||||
|
echo ']')`
|
||||||
|
if err := os.WriteFile(scriptPath, []byte(script), 0755); err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
gm := &GPUManager{
|
||||||
|
GpuDataMap: make(map[string]*system.GPUData),
|
||||||
|
}
|
||||||
|
|
||||||
|
// Run the collector once; it should read two samples and return
|
||||||
|
if err := gm.collectIntelStats(); err != nil {
|
||||||
|
t.Fatalf("collectIntelStats error: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
gpu := gm.GpuDataMap["0"]
|
||||||
|
require.NotNil(t, gpu)
|
||||||
|
// Power should be sum of non-zero samples: 1.5 + 2.0 = 3.5
|
||||||
|
assert.InDelta(t, 3.5, gpu.Power, 0.001)
|
||||||
|
// Engines aggregated
|
||||||
|
assert.InDelta(t, 12.34, gpu.Engines["Render/3D"], 0.001)
|
||||||
|
assert.InDelta(t, 5.0, gpu.Engines["Video"], 0.001)
|
||||||
|
// Count should be 2 samples
|
||||||
|
assert.Equal(t, float64(2), gpu.Count)
|
||||||
|
}
|
||||||
|
|||||||
@@ -6,10 +6,13 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"github.com/henrygd/beszel/agent/deltatracker"
|
||||||
"github.com/henrygd/beszel/internal/entities/system"
|
"github.com/henrygd/beszel/internal/entities/system"
|
||||||
psutilNet "github.com/shirou/gopsutil/v4/net"
|
psutilNet "github.com/shirou/gopsutil/v4/net"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
var netInterfaceDeltaTracker = deltatracker.NewDeltaTracker[string, uint64]()
|
||||||
|
|
||||||
func (a *Agent) updateNetworkStats(systemStats *system.Stats) {
|
func (a *Agent) updateNetworkStats(systemStats *system.Stats) {
|
||||||
// network stats
|
// network stats
|
||||||
if len(a.netInterfaces) == 0 {
|
if len(a.netInterfaces) == 0 {
|
||||||
@@ -40,10 +43,14 @@ func (a *Agent) updateNetworkStats(systemStats *system.Stats) {
|
|||||||
totalBytesRecv += v.BytesRecv
|
totalBytesRecv += v.BytesRecv
|
||||||
|
|
||||||
// track deltas for each network interface
|
// track deltas for each network interface
|
||||||
netInterfaceDeltaTracker.Set(fmt.Sprintf("%sdown", v.Name), v.BytesRecv)
|
var upDelta, downDelta uint64
|
||||||
netInterfaceDeltaTracker.Set(fmt.Sprintf("%sup", v.Name), v.BytesSent)
|
upKey, downKey := fmt.Sprintf("%sup", v.Name), fmt.Sprintf("%sdown", v.Name)
|
||||||
upDelta := netInterfaceDeltaTracker.Delta(fmt.Sprintf("%sup", v.Name)) * 1000 / msElapsed
|
netInterfaceDeltaTracker.Set(upKey, v.BytesSent)
|
||||||
downDelta := netInterfaceDeltaTracker.Delta(fmt.Sprintf("%sdown", v.Name)) * 1000 / msElapsed
|
netInterfaceDeltaTracker.Set(downKey, v.BytesRecv)
|
||||||
|
if msElapsed > 0 {
|
||||||
|
upDelta = netInterfaceDeltaTracker.Delta(upKey) * 1000 / msElapsed
|
||||||
|
downDelta = netInterfaceDeltaTracker.Delta(downKey) * 1000 / msElapsed
|
||||||
|
}
|
||||||
// add interface to systemStats
|
// add interface to systemStats
|
||||||
systemStats.NetworkInterfaces[v.Name] = [4]uint64{upDelta, downDelta, v.BytesSent, v.BytesRecv}
|
systemStats.NetworkInterfaces[v.Name] = [4]uint64{upDelta, downDelta, v.BytesSent, v.BytesRecv}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,7 +11,6 @@ import (
|
|||||||
|
|
||||||
"github.com/henrygd/beszel"
|
"github.com/henrygd/beszel"
|
||||||
"github.com/henrygd/beszel/agent/battery"
|
"github.com/henrygd/beszel/agent/battery"
|
||||||
"github.com/henrygd/beszel/agent/deltatracker"
|
|
||||||
"github.com/henrygd/beszel/internal/entities/system"
|
"github.com/henrygd/beszel/internal/entities/system"
|
||||||
|
|
||||||
"github.com/shirou/gopsutil/v4/cpu"
|
"github.com/shirou/gopsutil/v4/cpu"
|
||||||
@@ -21,8 +20,6 @@ import (
|
|||||||
"github.com/shirou/gopsutil/v4/mem"
|
"github.com/shirou/gopsutil/v4/mem"
|
||||||
)
|
)
|
||||||
|
|
||||||
var netInterfaceDeltaTracker = deltatracker.NewDeltaTracker[string, uint64]()
|
|
||||||
|
|
||||||
// Sets initial / non-changing values about the host system
|
// Sets initial / non-changing values about the host system
|
||||||
func (a *Agent) initializeSystemInfo() {
|
func (a *Agent) initializeSystemInfo() {
|
||||||
a.systemInfo.AgentVersion = beszel.Version
|
a.systemInfo.AgentVersion = beszel.Version
|
||||||
@@ -34,7 +31,7 @@ func (a *Agent) initializeSystemInfo() {
|
|||||||
a.systemInfo.KernelVersion = version
|
a.systemInfo.KernelVersion = version
|
||||||
a.systemInfo.Os = system.Darwin
|
a.systemInfo.Os = system.Darwin
|
||||||
} else if strings.Contains(platform, "indows") {
|
} else if strings.Contains(platform, "indows") {
|
||||||
a.systemInfo.KernelVersion = strings.Replace(platform, "Microsoft ", "", 1) + " " + version
|
a.systemInfo.KernelVersion = fmt.Sprintf("%s %s", strings.Replace(platform, "Microsoft ", "", 1), version)
|
||||||
a.systemInfo.Os = system.Windows
|
a.systemInfo.Os = system.Windows
|
||||||
} else if platform == "freebsd" {
|
} else if platform == "freebsd" {
|
||||||
a.systemInfo.Os = system.Freebsd
|
a.systemInfo.Os = system.Freebsd
|
||||||
@@ -215,6 +212,7 @@ func (a *Agent) getSystemStats() system.Stats {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// update base system info
|
// update base system info
|
||||||
|
a.systemInfo.ConnectionType = a.connectionManager.ConnectionType
|
||||||
a.systemInfo.Cpu = systemStats.Cpu
|
a.systemInfo.Cpu = systemStats.Cpu
|
||||||
a.systemInfo.LoadAvg = systemStats.LoadAvg
|
a.systemInfo.LoadAvg = systemStats.LoadAvg
|
||||||
// TODO: remove these in future release in favor of load avg array
|
// TODO: remove these in future release in favor of load avg array
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import "github.com/blang/semver"
|
|||||||
|
|
||||||
const (
|
const (
|
||||||
// Version is the current version of the application.
|
// Version is the current version of the application.
|
||||||
Version = "0.12.7"
|
Version = "0.12.9"
|
||||||
// AppName is the name of the application.
|
// AppName is the name of the application.
|
||||||
AppName = "beszel"
|
AppName = "beszel"
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -25,7 +25,12 @@ type alertInfo struct {
|
|||||||
// startWorker is a long-running goroutine that processes alert tasks
|
// startWorker is a long-running goroutine that processes alert tasks
|
||||||
// every x seconds. It must be running to process status alerts.
|
// every x seconds. It must be running to process status alerts.
|
||||||
func (am *AlertManager) startWorker() {
|
func (am *AlertManager) startWorker() {
|
||||||
tick := time.Tick(15 * time.Second)
|
processPendingAlerts := time.Tick(15 * time.Second)
|
||||||
|
|
||||||
|
// check for status alerts that are not resolved when system comes up
|
||||||
|
// (can be removed if we figure out core bug in #1052)
|
||||||
|
checkStatusAlerts := time.Tick(561 * time.Second)
|
||||||
|
|
||||||
for {
|
for {
|
||||||
select {
|
select {
|
||||||
case <-am.stopChan:
|
case <-am.stopChan:
|
||||||
@@ -41,7 +46,9 @@ func (am *AlertManager) startWorker() {
|
|||||||
case "cancel":
|
case "cancel":
|
||||||
am.pendingAlerts.Delete(task.alertRecord.Id)
|
am.pendingAlerts.Delete(task.alertRecord.Id)
|
||||||
}
|
}
|
||||||
case <-tick:
|
case <-checkStatusAlerts:
|
||||||
|
resolveStatusAlerts(am.hub)
|
||||||
|
case <-processPendingAlerts:
|
||||||
// Check for expired alerts every tick
|
// Check for expired alerts every tick
|
||||||
now := time.Now()
|
now := time.Now()
|
||||||
for key, value := range am.pendingAlerts.Range {
|
for key, value := range am.pendingAlerts.Range {
|
||||||
@@ -170,3 +177,35 @@ func (am *AlertManager) sendStatusAlert(alertStatus string, systemName string, a
|
|||||||
LinkText: "View " + systemName,
|
LinkText: "View " + systemName,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// resolveStatusAlerts resolves any status alerts that weren't resolved
|
||||||
|
// when system came up (https://github.com/henrygd/beszel/issues/1052)
|
||||||
|
func resolveStatusAlerts(app core.App) error {
|
||||||
|
db := app.DB()
|
||||||
|
// Find all active status alerts where the system is actually up
|
||||||
|
var alertIds []string
|
||||||
|
err := db.NewQuery(`
|
||||||
|
SELECT a.id
|
||||||
|
FROM alerts a
|
||||||
|
JOIN systems s ON a.system = s.id
|
||||||
|
WHERE a.name = 'Status'
|
||||||
|
AND a.triggered = true
|
||||||
|
AND s.status = 'up'
|
||||||
|
`).Column(&alertIds)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
// resolve all matching alert records
|
||||||
|
for _, alertId := range alertIds {
|
||||||
|
alert, err := app.FindRecordById("alerts", alertId)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
alert.Set("triggered", false)
|
||||||
|
err = app.Save(alert)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ import (
|
|||||||
"testing/synctest"
|
"testing/synctest"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"github.com/henrygd/beszel/internal/alerts"
|
||||||
beszelTests "github.com/henrygd/beszel/internal/tests"
|
beszelTests "github.com/henrygd/beszel/internal/tests"
|
||||||
|
|
||||||
"github.com/pocketbase/dbx"
|
"github.com/pocketbase/dbx"
|
||||||
@@ -369,33 +370,9 @@ func TestUserAlertsApi(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func getHubWithUser(t *testing.T) (*beszelTests.TestHub, *core.Record) {
|
|
||||||
hub, err := beszelTests.NewTestHub(t.TempDir())
|
|
||||||
assert.NoError(t, err)
|
|
||||||
hub.StartHub()
|
|
||||||
|
|
||||||
// Manually initialize the system manager to bind event hooks
|
|
||||||
err = hub.GetSystemManager().Initialize()
|
|
||||||
assert.NoError(t, err)
|
|
||||||
|
|
||||||
// Create a test user
|
|
||||||
user, err := beszelTests.CreateUser(hub, "test@example.com", "password")
|
|
||||||
assert.NoError(t, err)
|
|
||||||
|
|
||||||
// Create user settings for the test user (required for alert notifications)
|
|
||||||
userSettingsData := map[string]any{
|
|
||||||
"user": user.Id,
|
|
||||||
"settings": `{"emails":[test@example.com],"webhooks":[]}`,
|
|
||||||
}
|
|
||||||
_, err = beszelTests.CreateRecord(hub, "user_settings", userSettingsData)
|
|
||||||
assert.NoError(t, err)
|
|
||||||
|
|
||||||
return hub, user
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestStatusAlerts(t *testing.T) {
|
func TestStatusAlerts(t *testing.T) {
|
||||||
synctest.Test(t, func(t *testing.T) {
|
synctest.Test(t, func(t *testing.T) {
|
||||||
hub, user := getHubWithUser(t)
|
hub, user := beszelTests.GetHubWithUser(t)
|
||||||
defer hub.Cleanup()
|
defer hub.Cleanup()
|
||||||
|
|
||||||
systems, err := beszelTests.CreateSystems(hub, 4, user.Id, "paused")
|
systems, err := beszelTests.CreateSystems(hub, 4, user.Id, "paused")
|
||||||
@@ -476,7 +453,7 @@ func TestStatusAlerts(t *testing.T) {
|
|||||||
|
|
||||||
func TestAlertsHistory(t *testing.T) {
|
func TestAlertsHistory(t *testing.T) {
|
||||||
synctest.Test(t, func(t *testing.T) {
|
synctest.Test(t, func(t *testing.T) {
|
||||||
hub, user := getHubWithUser(t)
|
hub, user := beszelTests.GetHubWithUser(t)
|
||||||
defer hub.Cleanup()
|
defer hub.Cleanup()
|
||||||
|
|
||||||
// Create systems and alerts
|
// Create systems and alerts
|
||||||
@@ -602,3 +579,102 @@ func TestAlertsHistory(t *testing.T) {
|
|||||||
assert.EqualValues(t, 2, totalHistoryCount, "Should have 2 total alert history records")
|
assert.EqualValues(t, 2, totalHistoryCount, "Should have 2 total alert history records")
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
func TestResolveStatusAlerts(t *testing.T) {
|
||||||
|
hub, user := beszelTests.GetHubWithUser(t)
|
||||||
|
defer hub.Cleanup()
|
||||||
|
|
||||||
|
// Create a systemUp
|
||||||
|
systemUp, err := beszelTests.CreateRecord(hub, "systems", map[string]any{
|
||||||
|
"name": "test-system",
|
||||||
|
"users": []string{user.Id},
|
||||||
|
"host": "127.0.0.1",
|
||||||
|
"status": "up",
|
||||||
|
})
|
||||||
|
assert.NoError(t, err)
|
||||||
|
|
||||||
|
systemDown, err := beszelTests.CreateRecord(hub, "systems", map[string]any{
|
||||||
|
"name": "test-system-2",
|
||||||
|
"users": []string{user.Id},
|
||||||
|
"host": "127.0.0.2",
|
||||||
|
"status": "up",
|
||||||
|
})
|
||||||
|
assert.NoError(t, err)
|
||||||
|
|
||||||
|
// Create a status alertUp for the system
|
||||||
|
alertUp, err := beszelTests.CreateRecord(hub, "alerts", map[string]any{
|
||||||
|
"name": "Status",
|
||||||
|
"system": systemUp.Id,
|
||||||
|
"user": user.Id,
|
||||||
|
"min": 1,
|
||||||
|
})
|
||||||
|
assert.NoError(t, err)
|
||||||
|
|
||||||
|
alertDown, err := beszelTests.CreateRecord(hub, "alerts", map[string]any{
|
||||||
|
"name": "Status",
|
||||||
|
"system": systemDown.Id,
|
||||||
|
"user": user.Id,
|
||||||
|
"min": 1,
|
||||||
|
})
|
||||||
|
assert.NoError(t, err)
|
||||||
|
|
||||||
|
// Verify alert is not triggered initially
|
||||||
|
assert.False(t, alertUp.GetBool("triggered"), "Alert should not be triggered initially")
|
||||||
|
|
||||||
|
// Set the system to 'up' (this should not trigger the alert)
|
||||||
|
systemUp.Set("status", "up")
|
||||||
|
err = hub.SaveNoValidate(systemUp)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
|
||||||
|
systemDown.Set("status", "down")
|
||||||
|
err = hub.SaveNoValidate(systemDown)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
|
||||||
|
// Wait a moment for any processing
|
||||||
|
time.Sleep(10 * time.Millisecond)
|
||||||
|
|
||||||
|
// Verify alertUp is still not triggered after setting system to up
|
||||||
|
alertUp, err = hub.FindFirstRecordByFilter("alerts", "id={:id}", dbx.Params{"id": alertUp.Id})
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.False(t, alertUp.GetBool("triggered"), "Alert should not be triggered when system is up")
|
||||||
|
|
||||||
|
// Manually set both alerts triggered to true
|
||||||
|
alertUp.Set("triggered", true)
|
||||||
|
err = hub.SaveNoValidate(alertUp)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
alertDown.Set("triggered", true)
|
||||||
|
err = hub.SaveNoValidate(alertDown)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
|
||||||
|
// Verify we have exactly one alert with triggered true
|
||||||
|
triggeredCount, err := hub.CountRecords("alerts", dbx.HashExp{"triggered": true})
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.EqualValues(t, 2, triggeredCount, "Should have exactly two alerts with triggered true")
|
||||||
|
|
||||||
|
// Verify the specific alertUp is triggered
|
||||||
|
alertUp, err = hub.FindFirstRecordByFilter("alerts", "id={:id}", dbx.Params{"id": alertUp.Id})
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.True(t, alertUp.GetBool("triggered"), "Alert should be triggered")
|
||||||
|
|
||||||
|
// Verify we have two unresolved alert history records
|
||||||
|
alertHistoryCount, err := hub.CountRecords("alerts_history", dbx.HashExp{"resolved": ""})
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.EqualValues(t, 2, alertHistoryCount, "Should have exactly two unresolved alert history records")
|
||||||
|
|
||||||
|
err = alerts.ResolveStatusAlerts(hub)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
|
||||||
|
// Verify alertUp is not triggered after resolving
|
||||||
|
alertUp, err = hub.FindFirstRecordByFilter("alerts", "id={:id}", dbx.Params{"id": alertUp.Id})
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.False(t, alertUp.GetBool("triggered"), "Alert should not be triggered after resolving")
|
||||||
|
// Verify alertDown is still triggered
|
||||||
|
alertDown, err = hub.FindFirstRecordByFilter("alerts", "id={:id}", dbx.Params{"id": alertDown.Id})
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.True(t, alertDown.GetBool("triggered"), "Alert should still be triggered after resolving")
|
||||||
|
|
||||||
|
// Verify we have one unresolved alert history record
|
||||||
|
alertHistoryCount, err = hub.CountRecords("alerts_history", dbx.HashExp{"resolved": ""})
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.EqualValues(t, 1, alertHistoryCount, "Should have exactly one unresolved alert history record")
|
||||||
|
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,3 +1,6 @@
|
|||||||
|
//go:build testing
|
||||||
|
// +build testing
|
||||||
|
|
||||||
package alerts
|
package alerts
|
||||||
|
|
||||||
import (
|
import (
|
||||||
@@ -53,3 +56,7 @@ func (am *AlertManager) ForceExpirePendingAlerts() {
|
|||||||
return true
|
return true
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func ResolveStatusAlerts(app core.App) error {
|
||||||
|
return resolveStatusAlerts(app)
|
||||||
|
}
|
||||||
|
|||||||
@@ -2,15 +2,18 @@ FROM --platform=$BUILDPLATFORM golang:alpine AS builder
|
|||||||
|
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
|
||||||
COPY go.mod go.sum ./
|
|
||||||
# RUN go mod download
|
COPY ../go.mod ../go.sum ./
|
||||||
COPY *.go ./
|
RUN go mod download
|
||||||
COPY cmd ./cmd
|
|
||||||
COPY internal ./internal
|
# Copy source files
|
||||||
|
COPY . ./
|
||||||
|
|
||||||
# Build
|
# Build
|
||||||
ARG TARGETOS TARGETARCH
|
ARG TARGETOS TARGETARCH
|
||||||
RUN CGO_ENABLED=0 GOGC=75 GOOS=$TARGETOS GOARCH=$TARGETARCH go build -ldflags "-w -s" -o /agent ./cmd/agent
|
RUN CGO_ENABLED=0 GOGC=75 GOOS=$TARGETOS GOARCH=$TARGETARCH go build -ldflags "-w -s" -o /agent ./internal/cmd/agent
|
||||||
|
|
||||||
|
RUN rm -rf /tmp/*
|
||||||
|
|
||||||
# --------------------------
|
# --------------------------
|
||||||
# Final image: GPU-enabled agent with nvidia-smi
|
# Final image: GPU-enabled agent with nvidia-smi
|
||||||
@@ -18,4 +21,7 @@ RUN CGO_ENABLED=0 GOGC=75 GOOS=$TARGETOS GOARCH=$TARGETARCH go build -ldflags "-
|
|||||||
FROM nvidia/cuda:12.2.2-base-ubuntu22.04
|
FROM nvidia/cuda:12.2.2-base-ubuntu22.04
|
||||||
COPY --from=builder /agent /agent
|
COPY --from=builder /agent /agent
|
||||||
|
|
||||||
|
# this is so we don't need to create the /tmp directory in the scratch container
|
||||||
|
COPY --from=builder /tmp /tmp
|
||||||
|
|
||||||
ENTRYPOINT ["/agent"]
|
ENTRYPOINT ["/agent"]
|
||||||
|
|||||||
@@ -47,11 +47,12 @@ type Stats struct {
|
|||||||
type GPUData struct {
|
type GPUData struct {
|
||||||
Name string `json:"n" cbor:"0,keyasint"`
|
Name string `json:"n" cbor:"0,keyasint"`
|
||||||
Temperature float64 `json:"-"`
|
Temperature float64 `json:"-"`
|
||||||
MemoryUsed float64 `json:"mu,omitempty" cbor:"1,keyasint,omitempty"`
|
MemoryUsed float64 `json:"mu,omitempty,omitzero" cbor:"1,keyasint,omitempty,omitzero"`
|
||||||
MemoryTotal float64 `json:"mt,omitempty" cbor:"2,keyasint,omitempty"`
|
MemoryTotal float64 `json:"mt,omitempty,omitzero" cbor:"2,keyasint,omitempty,omitzero"`
|
||||||
Usage float64 `json:"u" cbor:"3,keyasint"`
|
Usage float64 `json:"u" cbor:"3,keyasint,omitempty"`
|
||||||
Power float64 `json:"p,omitempty" cbor:"4,keyasint,omitempty"`
|
Power float64 `json:"p,omitempty" cbor:"4,keyasint,omitempty"`
|
||||||
Count float64 `json:"-"`
|
Count float64 `json:"-"`
|
||||||
|
Engines map[string]float64 `json:"e,omitempty" cbor:"5,keyasint,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type FsStats struct {
|
type FsStats struct {
|
||||||
@@ -84,6 +85,14 @@ const (
|
|||||||
Freebsd
|
Freebsd
|
||||||
)
|
)
|
||||||
|
|
||||||
|
type ConnectionType = uint8
|
||||||
|
|
||||||
|
const (
|
||||||
|
ConnectionTypeNone ConnectionType = iota
|
||||||
|
ConnectionTypeSSH
|
||||||
|
ConnectionTypeWebSocket
|
||||||
|
)
|
||||||
|
|
||||||
type Info struct {
|
type Info struct {
|
||||||
Hostname string `json:"h" cbor:"0,keyasint"`
|
Hostname string `json:"h" cbor:"0,keyasint"`
|
||||||
KernelVersion string `json:"k,omitempty" cbor:"1,keyasint,omitempty"`
|
KernelVersion string `json:"k,omitempty" cbor:"1,keyasint,omitempty"`
|
||||||
@@ -106,6 +115,7 @@ type Info struct {
|
|||||||
BandwidthBytes uint64 `json:"bb" cbor:"18,keyasint"`
|
BandwidthBytes uint64 `json:"bb" cbor:"18,keyasint"`
|
||||||
// TODO: remove load fields in future release in favor of load avg array
|
// TODO: remove load fields in future release in favor of load avg array
|
||||||
LoadAvg [3]float64 `json:"la,omitempty" cbor:"19,keyasint"`
|
LoadAvg [3]float64 `json:"la,omitempty" cbor:"19,keyasint"`
|
||||||
|
ConnectionType ConnectionType `json:"ct,omitempty" cbor:"20,keyasint,omitempty,omitzero"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// Final data structure to return to the hub
|
// Final data structure to return to the hub
|
||||||
|
|||||||
@@ -284,6 +284,16 @@ func (rm *RecordManager) AverageSystemStats(db dbx.Builder, records RecordIds) *
|
|||||||
gpu.Usage += value.Usage
|
gpu.Usage += value.Usage
|
||||||
gpu.Power += value.Power
|
gpu.Power += value.Power
|
||||||
gpu.Count += value.Count
|
gpu.Count += value.Count
|
||||||
|
|
||||||
|
if value.Engines != nil {
|
||||||
|
if gpu.Engines == nil {
|
||||||
|
gpu.Engines = make(map[string]float64, len(value.Engines))
|
||||||
|
}
|
||||||
|
for engineKey, engineValue := range value.Engines {
|
||||||
|
gpu.Engines[engineKey] += engineValue
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
sum.GPUData[id] = gpu
|
sum.GPUData[id] = gpu
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -353,6 +363,13 @@ func (rm *RecordManager) AverageSystemStats(db dbx.Builder, records RecordIds) *
|
|||||||
gpu.Usage = twoDecimals(gpu.Usage / count)
|
gpu.Usage = twoDecimals(gpu.Usage / count)
|
||||||
gpu.Power = twoDecimals(gpu.Power / count)
|
gpu.Power = twoDecimals(gpu.Power / count)
|
||||||
gpu.Count = twoDecimals(gpu.Count / count)
|
gpu.Count = twoDecimals(gpu.Count / count)
|
||||||
|
|
||||||
|
if gpu.Engines != nil {
|
||||||
|
for engineKey := range gpu.Engines {
|
||||||
|
gpu.Engines[engineKey] = twoDecimals(gpu.Engines[engineKey] / count)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
sum.GPUData[id] = gpu
|
sum.GPUData[id] = gpu
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -175,7 +175,7 @@ func TestDeleteOldSystemStats(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Run deletion
|
// Run deletion
|
||||||
err = records.TestDeleteOldSystemStats(hub)
|
err = records.DeleteOldSystemStats(hub)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
// Verify results
|
// Verify results
|
||||||
@@ -268,7 +268,7 @@ func TestDeleteOldAlertsHistory(t *testing.T) {
|
|||||||
assert.Equal(t, int64(tc.alertCount), countBefore, "Initial count should match")
|
assert.Equal(t, int64(tc.alertCount), countBefore, "Initial count should match")
|
||||||
|
|
||||||
// Run deletion
|
// Run deletion
|
||||||
err = records.TestDeleteOldAlertsHistory(hub, tc.countToKeep, tc.countBeforeDeletion)
|
err = records.DeleteOldAlertsHistory(hub, tc.countToKeep, tc.countBeforeDeletion)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
// Count after deletion
|
// Count after deletion
|
||||||
@@ -332,7 +332,7 @@ func TestDeleteOldAlertsHistoryEdgeCases(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Should not error and should not delete anything
|
// Should not error and should not delete anything
|
||||||
err = records.TestDeleteOldAlertsHistory(hub, 10, 20)
|
err = records.DeleteOldAlertsHistory(hub, 10, 20)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
count, err := hub.CountRecords("alerts_history")
|
count, err := hub.CountRecords("alerts_history")
|
||||||
@@ -346,7 +346,7 @@ func TestDeleteOldAlertsHistoryEdgeCases(t *testing.T) {
|
|||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
// Should not error with empty table
|
// Should not error with empty table
|
||||||
err = records.TestDeleteOldAlertsHistory(hub, 10, 20)
|
err = records.DeleteOldAlertsHistory(hub, 10, 20)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@@ -376,7 +376,7 @@ func TestTwoDecimals(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
for _, tc := range testCases {
|
for _, tc := range testCases {
|
||||||
result := records.TestTwoDecimals(tc.input)
|
result := records.TwoDecimals(tc.input)
|
||||||
assert.InDelta(t, tc.expected, result, 0.02, "twoDecimals(%f) should equal %f", tc.input, tc.expected)
|
assert.InDelta(t, tc.expected, result, 0.02, "twoDecimals(%f) should equal %f", tc.input, tc.expected)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,17 +7,17 @@ import (
|
|||||||
"github.com/pocketbase/pocketbase/core"
|
"github.com/pocketbase/pocketbase/core"
|
||||||
)
|
)
|
||||||
|
|
||||||
// TestDeleteOldSystemStats exposes deleteOldSystemStats for testing
|
// DeleteOldSystemStats exposes deleteOldSystemStats for testing
|
||||||
func TestDeleteOldSystemStats(app core.App) error {
|
func DeleteOldSystemStats(app core.App) error {
|
||||||
return deleteOldSystemStats(app)
|
return deleteOldSystemStats(app)
|
||||||
}
|
}
|
||||||
|
|
||||||
// TestDeleteOldAlertsHistory exposes deleteOldAlertsHistory for testing
|
// DeleteOldAlertsHistory exposes deleteOldAlertsHistory for testing
|
||||||
func TestDeleteOldAlertsHistory(app core.App, countToKeep, countBeforeDeletion int) error {
|
func DeleteOldAlertsHistory(app core.App, countToKeep, countBeforeDeletion int) error {
|
||||||
return deleteOldAlertsHistory(app, countToKeep, countBeforeDeletion)
|
return deleteOldAlertsHistory(app, countToKeep, countBeforeDeletion)
|
||||||
}
|
}
|
||||||
|
|
||||||
// TestTwoDecimals exposes twoDecimals for testing
|
// TwoDecimals exposes twoDecimals for testing
|
||||||
func TestTwoDecimals(value float64) float64 {
|
func TwoDecimals(value float64) float64 {
|
||||||
return twoDecimals(value)
|
return twoDecimals(value)
|
||||||
}
|
}
|
||||||
|
|||||||
186
internal/site/package-lock.json
generated
186
internal/site/package-lock.json
generated
@@ -1,12 +1,12 @@
|
|||||||
{
|
{
|
||||||
"name": "beszel",
|
"name": "beszel",
|
||||||
"version": "0.12.7",
|
"version": "0.12.9",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "beszel",
|
"name": "beszel",
|
||||||
"version": "0.12.7",
|
"version": "0.12.9",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@henrygd/queue": "^1.0.7",
|
"@henrygd/queue": "^1.0.7",
|
||||||
"@henrygd/semaphore": "^0.0.2",
|
"@henrygd/semaphore": "^0.0.2",
|
||||||
@@ -46,6 +46,7 @@
|
|||||||
"valibot": "^0.42.1"
|
"valibot": "^0.42.1"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
"@biomejs/biome": "2.2.3",
|
||||||
"@lingui/cli": "^5.4.1",
|
"@lingui/cli": "^5.4.1",
|
||||||
"@lingui/swc-plugin": "^5.6.1",
|
"@lingui/swc-plugin": "^5.6.1",
|
||||||
"@lingui/vite-plugin": "^5.4.1",
|
"@lingui/vite-plugin": "^5.4.1",
|
||||||
@@ -330,6 +331,169 @@
|
|||||||
"node": ">=6.9.0"
|
"node": ">=6.9.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/@biomejs/biome": {
|
||||||
|
"version": "2.2.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/@biomejs/biome/-/biome-2.2.3.tgz",
|
||||||
|
"integrity": "sha512-9w0uMTvPrIdvUrxazZ42Ib7t8Y2yoGLKLdNne93RLICmaHw7mcLv4PPb5LvZLJF3141gQHiCColOh/v6VWlWmg==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT OR Apache-2.0",
|
||||||
|
"bin": {
|
||||||
|
"biome": "bin/biome"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=14.21.3"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"type": "opencollective",
|
||||||
|
"url": "https://opencollective.com/biome"
|
||||||
|
},
|
||||||
|
"optionalDependencies": {
|
||||||
|
"@biomejs/cli-darwin-arm64": "2.2.3",
|
||||||
|
"@biomejs/cli-darwin-x64": "2.2.3",
|
||||||
|
"@biomejs/cli-linux-arm64": "2.2.3",
|
||||||
|
"@biomejs/cli-linux-arm64-musl": "2.2.3",
|
||||||
|
"@biomejs/cli-linux-x64": "2.2.3",
|
||||||
|
"@biomejs/cli-linux-x64-musl": "2.2.3",
|
||||||
|
"@biomejs/cli-win32-arm64": "2.2.3",
|
||||||
|
"@biomejs/cli-win32-x64": "2.2.3"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@biomejs/cli-darwin-arm64": {
|
||||||
|
"version": "2.2.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/@biomejs/cli-darwin-arm64/-/cli-darwin-arm64-2.2.3.tgz",
|
||||||
|
"integrity": "sha512-OrqQVBpadB5eqzinXN4+Q6honBz+tTlKVCsbEuEpljK8ASSItzIRZUA02mTikl3H/1nO2BMPFiJ0nkEZNy3B1w==",
|
||||||
|
"cpu": [
|
||||||
|
"arm64"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT OR Apache-2.0",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"darwin"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": ">=14.21.3"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@biomejs/cli-darwin-x64": {
|
||||||
|
"version": "2.2.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/@biomejs/cli-darwin-x64/-/cli-darwin-x64-2.2.3.tgz",
|
||||||
|
"integrity": "sha512-OCdBpb1TmyfsTgBAM1kPMXyYKTohQ48WpiN9tkt9xvU6gKVKHY4oVwteBebiOqyfyzCNaSiuKIPjmHjUZ2ZNMg==",
|
||||||
|
"cpu": [
|
||||||
|
"x64"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT OR Apache-2.0",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"darwin"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": ">=14.21.3"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@biomejs/cli-linux-arm64": {
|
||||||
|
"version": "2.2.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/@biomejs/cli-linux-arm64/-/cli-linux-arm64-2.2.3.tgz",
|
||||||
|
"integrity": "sha512-g/Uta2DqYpECxG+vUmTAmUKlVhnGEcY7DXWgKP8ruLRa8Si1QHsWknPY3B/wCo0KgYiFIOAZ9hjsHfNb9L85+g==",
|
||||||
|
"cpu": [
|
||||||
|
"arm64"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT OR Apache-2.0",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"linux"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": ">=14.21.3"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@biomejs/cli-linux-arm64-musl": {
|
||||||
|
"version": "2.2.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/@biomejs/cli-linux-arm64-musl/-/cli-linux-arm64-musl-2.2.3.tgz",
|
||||||
|
"integrity": "sha512-q3w9jJ6JFPZPeqyvwwPeaiS/6NEszZ+pXKF+IczNo8Xj6fsii45a4gEEicKyKIytalV+s829ACZujQlXAiVLBQ==",
|
||||||
|
"cpu": [
|
||||||
|
"arm64"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT OR Apache-2.0",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"linux"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": ">=14.21.3"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@biomejs/cli-linux-x64": {
|
||||||
|
"version": "2.2.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/@biomejs/cli-linux-x64/-/cli-linux-x64-2.2.3.tgz",
|
||||||
|
"integrity": "sha512-LEtyYL1fJsvw35CxrbQ0gZoxOG3oZsAjzfRdvRBRHxOpQ91Q5doRVjvWW/wepgSdgk5hlaNzfeqpyGmfSD0Eyw==",
|
||||||
|
"cpu": [
|
||||||
|
"x64"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT OR Apache-2.0",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"linux"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": ">=14.21.3"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@biomejs/cli-linux-x64-musl": {
|
||||||
|
"version": "2.2.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/@biomejs/cli-linux-x64-musl/-/cli-linux-x64-musl-2.2.3.tgz",
|
||||||
|
"integrity": "sha512-y76Dn4vkP1sMRGPFlNc+OTETBhGPJ90jY3il6jAfur8XWrYBQV3swZ1Jo0R2g+JpOeeoA0cOwM7mJG6svDz79w==",
|
||||||
|
"cpu": [
|
||||||
|
"x64"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT OR Apache-2.0",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"linux"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": ">=14.21.3"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@biomejs/cli-win32-arm64": {
|
||||||
|
"version": "2.2.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/@biomejs/cli-win32-arm64/-/cli-win32-arm64-2.2.3.tgz",
|
||||||
|
"integrity": "sha512-Ms9zFYzjcJK7LV+AOMYnjN3pV3xL8Prxf9aWdDVL74onLn5kcvZ1ZMQswE5XHtnd/r/0bnUd928Rpbs14BzVmA==",
|
||||||
|
"cpu": [
|
||||||
|
"arm64"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT OR Apache-2.0",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"win32"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": ">=14.21.3"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@biomejs/cli-win32-x64": {
|
||||||
|
"version": "2.2.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/@biomejs/cli-win32-x64/-/cli-win32-x64-2.2.3.tgz",
|
||||||
|
"integrity": "sha512-gvCpewE7mBwBIpqk1YrUqNR4mCiyJm6UI3YWQQXkedSSEwzRdodRpaKhbdbHw1/hmTWOVXQ+Eih5Qctf4TCVOQ==",
|
||||||
|
"cpu": [
|
||||||
|
"x64"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT OR Apache-2.0",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"win32"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": ">=14.21.3"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/@esbuild/aix-ppc64": {
|
"node_modules/@esbuild/aix-ppc64": {
|
||||||
"version": "0.25.6",
|
"version": "0.25.6",
|
||||||
"resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.6.tgz",
|
"resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.6.tgz",
|
||||||
@@ -5763,14 +5927,14 @@
|
|||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/tinyglobby": {
|
"node_modules/tinyglobby": {
|
||||||
"version": "0.2.14",
|
"version": "0.2.15",
|
||||||
"resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.14.tgz",
|
"resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz",
|
||||||
"integrity": "sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==",
|
"integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"fdir": "^6.4.4",
|
"fdir": "^6.5.0",
|
||||||
"picomatch": "^4.0.2"
|
"picomatch": "^4.0.3"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=12.0.0"
|
"node": ">=12.0.0"
|
||||||
@@ -5957,9 +6121,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/vite": {
|
"node_modules/vite": {
|
||||||
"version": "7.1.3",
|
"version": "7.1.5",
|
||||||
"resolved": "https://registry.npmjs.org/vite/-/vite-7.1.3.tgz",
|
"resolved": "https://registry.npmjs.org/vite/-/vite-7.1.5.tgz",
|
||||||
"integrity": "sha512-OOUi5zjkDxYrKhTV3V7iKsoS37VUM7v40+HuwEmcrsf11Cdx9y3DIr2Px6liIcZFwt3XSRpQvFpL3WVy7ApkGw==",
|
"integrity": "sha512-4cKBO9wR75r0BeIWWWId9XK9Lj6La5X846Zw9dFfzMRw38IlTk2iCcUt6hsyiDRcPidc55ZParFYDXi0nXOeLQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@@ -5968,7 +6132,7 @@
|
|||||||
"picomatch": "^4.0.3",
|
"picomatch": "^4.0.3",
|
||||||
"postcss": "^8.5.6",
|
"postcss": "^8.5.6",
|
||||||
"rollup": "^4.43.0",
|
"rollup": "^4.43.0",
|
||||||
"tinyglobby": "^0.2.14"
|
"tinyglobby": "^0.2.15"
|
||||||
},
|
},
|
||||||
"bin": {
|
"bin": {
|
||||||
"vite": "bin/vite.js"
|
"vite": "bin/vite.js"
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "beszel",
|
"name": "beszel",
|
||||||
"private": true,
|
"private": true,
|
||||||
"version": "0.12.7",
|
"version": "0.12.9",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "vite --host",
|
"dev": "vite --host",
|
||||||
|
|||||||
@@ -115,7 +115,7 @@ export function useNetworkInterfaces(interfaces: SystemStats["ni"]) {
|
|||||||
data: (index = 3) => {
|
data: (index = 3) => {
|
||||||
return sortedKeys.map((key) => ({
|
return sortedKeys.map((key) => ({
|
||||||
label: key,
|
label: key,
|
||||||
dataKey: (stats: SystemStatsRecord) => stats.stats?.ni?.[key]?.[index],
|
dataKey: ({ stats }: SystemStatsRecord) => stats?.ni?.[key]?.[index],
|
||||||
color: `hsl(${220 + (((sortedKeys.indexOf(key) * 360) / sortedKeys.length) % 360)}, 70%, 50%)`,
|
color: `hsl(${220 + (((sortedKeys.indexOf(key) * 360) / sortedKeys.length) % 360)}, 70%, 50%)`,
|
||||||
|
|
||||||
opacity: 0.3,
|
opacity: 0.3,
|
||||||
|
|||||||
@@ -3,7 +3,15 @@ import { Plural, Trans, useLingui } from "@lingui/react/macro"
|
|||||||
import { useStore } from "@nanostores/react"
|
import { useStore } from "@nanostores/react"
|
||||||
import { getPagePath } from "@nanostores/router"
|
import { getPagePath } from "@nanostores/router"
|
||||||
import { timeTicks } from "d3-time"
|
import { timeTicks } from "d3-time"
|
||||||
import { ClockArrowUp, CpuIcon, GlobeIcon, LayoutGridIcon, MonitorIcon, XIcon } from "lucide-react"
|
import {
|
||||||
|
ChevronRightSquareIcon,
|
||||||
|
ClockArrowUp,
|
||||||
|
CpuIcon,
|
||||||
|
GlobeIcon,
|
||||||
|
LayoutGridIcon,
|
||||||
|
MonitorIcon,
|
||||||
|
XIcon,
|
||||||
|
} from "lucide-react"
|
||||||
import { subscribeKeys } from "nanostores"
|
import { subscribeKeys } from "nanostores"
|
||||||
import React, { type JSX, memo, useCallback, useEffect, useMemo, useRef, useState } from "react"
|
import React, { type JSX, memo, useCallback, useEffect, useMemo, useRef, useState } from "react"
|
||||||
import AreaChartDefault from "@/components/charts/area-chart"
|
import AreaChartDefault from "@/components/charts/area-chart"
|
||||||
@@ -16,7 +24,7 @@ import MemChart from "@/components/charts/mem-chart"
|
|||||||
import SwapChart from "@/components/charts/swap-chart"
|
import SwapChart from "@/components/charts/swap-chart"
|
||||||
import TemperatureChart from "@/components/charts/temperature-chart"
|
import TemperatureChart from "@/components/charts/temperature-chart"
|
||||||
import { getPbTimestamp, pb } from "@/lib/api"
|
import { getPbTimestamp, pb } from "@/lib/api"
|
||||||
import { ChartType, Os, SystemStatus, Unit } from "@/lib/enums"
|
import { ChartType, ConnectionType, Os, SystemStatus, Unit } from "@/lib/enums"
|
||||||
import { batteryStateTranslations } from "@/lib/i18n"
|
import { batteryStateTranslations } from "@/lib/i18n"
|
||||||
import {
|
import {
|
||||||
$allSystemsByName,
|
$allSystemsByName,
|
||||||
@@ -47,12 +55,13 @@ import { $router, navigate } from "../router"
|
|||||||
import Spinner from "../spinner"
|
import Spinner from "../spinner"
|
||||||
import { Button } from "../ui/button"
|
import { Button } from "../ui/button"
|
||||||
import { Card, CardDescription, CardHeader, CardTitle } from "../ui/card"
|
import { Card, CardDescription, CardHeader, CardTitle } from "../ui/card"
|
||||||
import { AppleIcon, ChartAverage, ChartMax, FreeBsdIcon, Rows, TuxIcon, WindowsIcon } from "../ui/icons"
|
import { AppleIcon, ChartAverage, ChartMax, FreeBsdIcon, Rows, TuxIcon, WebSocketIcon, WindowsIcon } from "../ui/icons"
|
||||||
import { Input } from "../ui/input"
|
import { Input } from "../ui/input"
|
||||||
import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "../ui/select"
|
import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "../ui/select"
|
||||||
import { Separator } from "../ui/separator"
|
import { Separator } from "../ui/separator"
|
||||||
import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "../ui/tooltip"
|
import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "../ui/tooltip"
|
||||||
import NetworkSheet from "./system/network-sheet"
|
import NetworkSheet from "./system/network-sheet"
|
||||||
|
import LineChartDefault from "../charts/line-chart"
|
||||||
|
|
||||||
type ChartTimeData = {
|
type ChartTimeData = {
|
||||||
time: number
|
time: number
|
||||||
@@ -130,7 +139,7 @@ async function getStats<T extends SystemStatsRecord | ContainerStatsRecord>(
|
|||||||
|
|
||||||
function dockerOrPodman(str: string, system: SystemRecord) {
|
function dockerOrPodman(str: string, system: SystemRecord) {
|
||||||
if (system.info.p) {
|
if (system.info.p) {
|
||||||
str = str.replace("docker", "podman").replace("Docker", "Podman")
|
return str.replace("docker", "podman").replace("Docker", "Podman")
|
||||||
}
|
}
|
||||||
return str
|
return str
|
||||||
}
|
}
|
||||||
@@ -390,6 +399,7 @@ export default memo(function SystemDetail({ name }: { name: string }) {
|
|||||||
const lastGpuVals = Object.values(systemStats.at(-1)?.stats.g ?? {})
|
const lastGpuVals = Object.values(systemStats.at(-1)?.stats.g ?? {})
|
||||||
const hasGpuData = lastGpuVals.length > 0
|
const hasGpuData = lastGpuVals.length > 0
|
||||||
const hasGpuPowerData = lastGpuVals.some((gpu) => gpu.p !== undefined)
|
const hasGpuPowerData = lastGpuVals.some((gpu) => gpu.p !== undefined)
|
||||||
|
const hasGpuEnginesData = lastGpuVals.some((gpu) => gpu.e !== undefined)
|
||||||
|
|
||||||
let translatedStatus: string = system.status
|
let translatedStatus: string = system.status
|
||||||
if (system.status === SystemStatus.Up) {
|
if (system.status === SystemStatus.Up) {
|
||||||
@@ -407,6 +417,9 @@ export default memo(function SystemDetail({ name }: { name: string }) {
|
|||||||
<div>
|
<div>
|
||||||
<h1 className="text-[1.6rem] font-semibold mb-1.5">{system.name}</h1>
|
<h1 className="text-[1.6rem] font-semibold mb-1.5">{system.name}</h1>
|
||||||
<div className="flex flex-wrap items-center gap-3 gap-y-2 text-sm opacity-90">
|
<div className="flex flex-wrap items-center gap-3 gap-y-2 text-sm opacity-90">
|
||||||
|
<TooltipProvider>
|
||||||
|
<Tooltip>
|
||||||
|
<TooltipTrigger asChild>
|
||||||
<div className="capitalize flex gap-2 items-center">
|
<div className="capitalize flex gap-2 items-center">
|
||||||
<span className={cn("relative flex h-3 w-3")}>
|
<span className={cn("relative flex h-3 w-3")}>
|
||||||
{system.status === SystemStatus.Up && (
|
{system.status === SystemStatus.Up && (
|
||||||
@@ -426,6 +439,23 @@ export default memo(function SystemDetail({ name }: { name: string }) {
|
|||||||
</span>
|
</span>
|
||||||
{translatedStatus}
|
{translatedStatus}
|
||||||
</div>
|
</div>
|
||||||
|
</TooltipTrigger>
|
||||||
|
{system.info.ct && (
|
||||||
|
<TooltipContent>
|
||||||
|
{system.info.ct === ConnectionType.WebSocket ? (
|
||||||
|
<div className="flex gap-1 items-center">
|
||||||
|
<WebSocketIcon className="size-4" /> WebSocket
|
||||||
|
</div>
|
||||||
|
) : (
|
||||||
|
<div className="flex gap-1 items-center">
|
||||||
|
<ChevronRightSquareIcon className="size-4" strokeWidth={2} /> SSH
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
|
</TooltipContent>
|
||||||
|
)}
|
||||||
|
</Tooltip>
|
||||||
|
</TooltipProvider>
|
||||||
|
|
||||||
{systemInfo.map(({ value, label, Icon, hide }) => {
|
{systemInfo.map(({ value, label, Icon, hide }) => {
|
||||||
if (hide || !value) {
|
if (hide || !value) {
|
||||||
return null
|
return null
|
||||||
@@ -731,6 +761,12 @@ export default memo(function SystemDetail({ name }: { name: string }) {
|
|||||||
</ChartCard>
|
</ChartCard>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{/* Non-power GPU charts */}
|
||||||
|
{hasGpuData && (
|
||||||
|
<div className="grid xl:grid-cols-2 gap-4">
|
||||||
{/* GPU power draw chart */}
|
{/* GPU power draw chart */}
|
||||||
{hasGpuPowerData && (
|
{hasGpuPowerData && (
|
||||||
<ChartCard
|
<ChartCard
|
||||||
@@ -742,11 +778,16 @@ export default memo(function SystemDetail({ name }: { name: string }) {
|
|||||||
<GpuPowerChart chartData={chartData} />
|
<GpuPowerChart chartData={chartData} />
|
||||||
</ChartCard>
|
</ChartCard>
|
||||||
)}
|
)}
|
||||||
</div>
|
{hasGpuEnginesData && (
|
||||||
|
<ChartCard
|
||||||
{/* GPU charts */}
|
empty={dataEmpty}
|
||||||
{hasGpuData && (
|
grid={grid}
|
||||||
<div className="grid xl:grid-cols-2 gap-4">
|
title={t`GPU Engines`}
|
||||||
|
description={t`Average utilization of GPU engines`}
|
||||||
|
>
|
||||||
|
<GpuEnginesChart chartData={chartData} />
|
||||||
|
</ChartCard>
|
||||||
|
)}
|
||||||
{Object.keys(systemStats.at(-1)?.stats.g ?? {}).map((id) => {
|
{Object.keys(systemStats.at(-1)?.stats.g ?? {}).map((id) => {
|
||||||
const gpu = systemStats.at(-1)?.stats.g?.[id] as GPUData
|
const gpu = systemStats.at(-1)?.stats.g?.[id] as GPUData
|
||||||
return (
|
return (
|
||||||
@@ -771,6 +812,8 @@ export default memo(function SystemDetail({ name }: { name: string }) {
|
|||||||
contentFormatter={({ value }) => `${decimalString(value)}%`}
|
contentFormatter={({ value }) => `${decimalString(value)}%`}
|
||||||
/>
|
/>
|
||||||
</ChartCard>
|
</ChartCard>
|
||||||
|
|
||||||
|
{(gpu.mt ?? 0) > 0 && (
|
||||||
<ChartCard
|
<ChartCard
|
||||||
empty={dataEmpty}
|
empty={dataEmpty}
|
||||||
grid={grid}
|
grid={grid}
|
||||||
@@ -798,7 +841,9 @@ export default memo(function SystemDetail({ name }: { name: string }) {
|
|||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
</ChartCard>
|
</ChartCard>
|
||||||
|
)}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
)
|
)
|
||||||
})}
|
})}
|
||||||
</div>
|
</div>
|
||||||
@@ -869,6 +914,22 @@ export default memo(function SystemDetail({ name }: { name: string }) {
|
|||||||
)
|
)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
function GpuEnginesChart({ chartData }: { chartData: ChartData }) {
|
||||||
|
const dataPoints = []
|
||||||
|
const engines = Object.keys(chartData.systemStats?.at(-1)?.stats.g?.[0]?.e ?? {}).sort()
|
||||||
|
for (const engine of engines) {
|
||||||
|
dataPoints.push({
|
||||||
|
label: engine,
|
||||||
|
dataKey: ({ stats }: SystemStatsRecord) => stats?.g?.[0]?.e?.[engine] ?? 0,
|
||||||
|
color: `hsl(${140 + ((engines.indexOf(engine) * 360) / engines.length) % 360}, 65%, 52%)`,
|
||||||
|
opacity: 0.35,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
return (
|
||||||
|
<LineChartDefault legend={true} chartData={chartData} dataPoints={dataPoints} tickFormatter={(val) => `${toFixedFloat(val, 2)}%`} contentFormatter={({ value }) => `${decimalString(value)}%`} />
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
function FilterBar({ store = $containerFilter }: { store?: typeof $containerFilter }) {
|
function FilterBar({ store = $containerFilter }: { store?: typeof $containerFilter }) {
|
||||||
const containerFilter = useStore(store)
|
const containerFilter = useStore(store)
|
||||||
const { t } = useLingui()
|
const { t } = useLingui()
|
||||||
@@ -960,9 +1021,7 @@ export function ChartCard({
|
|||||||
<CardHeader className="pb-5 pt-4 gap-1 relative max-sm:py-3 max-sm:px-4">
|
<CardHeader className="pb-5 pt-4 gap-1 relative max-sm:py-3 max-sm:px-4">
|
||||||
<CardTitle className="text-xl sm:text-2xl">{title}</CardTitle>
|
<CardTitle className="text-xl sm:text-2xl">{title}</CardTitle>
|
||||||
<CardDescription>{description}</CardDescription>
|
<CardDescription>{description}</CardDescription>
|
||||||
{cornerEl && (
|
{cornerEl && <div className="py-1 grid sm:justify-end sm:absolute sm:top-3.5 sm:end-3.5">{cornerEl}</div>}
|
||||||
<div className="relative py-1 grid sm:justify-end sm:absolute sm:top-3.5 sm:end-3.5">{cornerEl}</div>
|
|
||||||
)}
|
|
||||||
</CardHeader>
|
</CardHeader>
|
||||||
<div className={cn("ps-0 w-[calc(100%-1.5em)] relative group", legend ? "h-54 md:h-56" : "h-48 md:h-52")}>
|
<div className={cn("ps-0 w-[calc(100%-1.5em)] relative group", legend ? "h-54 md:h-56" : "h-48 md:h-52")}>
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -40,13 +40,18 @@ export default memo(function NetworkSheet({
|
|||||||
return (
|
return (
|
||||||
<Sheet open={netInterfacesOpen} onOpenChange={setNetInterfacesOpen}>
|
<Sheet open={netInterfacesOpen} onOpenChange={setNetInterfacesOpen}>
|
||||||
<SheetTrigger asChild>
|
<SheetTrigger asChild>
|
||||||
<Button variant="outline" size="icon" className="shrink-0">
|
<Button
|
||||||
|
aria-label={t`View more`}
|
||||||
|
variant="outline"
|
||||||
|
size="icon"
|
||||||
|
className="shrink-0 max-sm:absolute max-sm:top-3 max-sm:end-3"
|
||||||
|
>
|
||||||
<MoreHorizontalIcon />
|
<MoreHorizontalIcon />
|
||||||
</Button>
|
</Button>
|
||||||
</SheetTrigger>
|
</SheetTrigger>
|
||||||
{hasOpened.current && (
|
{hasOpened.current && (
|
||||||
<SheetContent className="overflow-auto w-200 !max-w-full p-4 sm:p-6">
|
<SheetContent className="overflow-auto w-200 !max-w-full p-4 sm:p-6">
|
||||||
<ChartTimeSelect className="w-[calc(100%-1.5em)]" />
|
<ChartTimeSelect className="w-[calc(100%-2em)]" />
|
||||||
<ChartCard
|
<ChartCard
|
||||||
empty={dataEmpty}
|
empty={dataEmpty}
|
||||||
grid={grid}
|
grid={grid}
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import type { CellContext, ColumnDef, HeaderContext } from "@tanstack/react-tabl
|
|||||||
import type { ClassValue } from "clsx"
|
import type { ClassValue } from "clsx"
|
||||||
import {
|
import {
|
||||||
ArrowUpDownIcon,
|
ArrowUpDownIcon,
|
||||||
|
ChevronRightSquareIcon,
|
||||||
CopyIcon,
|
CopyIcon,
|
||||||
CpuIcon,
|
CpuIcon,
|
||||||
HardDriveIcon,
|
HardDriveIcon,
|
||||||
@@ -20,7 +21,7 @@ import {
|
|||||||
} from "lucide-react"
|
} from "lucide-react"
|
||||||
import { memo, useMemo, useRef, useState } from "react"
|
import { memo, useMemo, useRef, useState } from "react"
|
||||||
import { isReadOnlyUser, pb } from "@/lib/api"
|
import { isReadOnlyUser, pb } from "@/lib/api"
|
||||||
import { MeterState, SystemStatus } from "@/lib/enums"
|
import { ConnectionType, MeterState, SystemStatus } from "@/lib/enums"
|
||||||
import { $longestSystemNameLen, $userSettings } from "@/lib/stores"
|
import { $longestSystemNameLen, $userSettings } from "@/lib/stores"
|
||||||
import {
|
import {
|
||||||
cn,
|
cn,
|
||||||
@@ -54,7 +55,7 @@ import {
|
|||||||
DropdownMenuSeparator,
|
DropdownMenuSeparator,
|
||||||
DropdownMenuTrigger,
|
DropdownMenuTrigger,
|
||||||
} from "../ui/dropdown-menu"
|
} from "../ui/dropdown-menu"
|
||||||
import { EthernetIcon, GpuIcon, HourglassIcon, ThermometerIcon } from "../ui/icons"
|
import { EthernetIcon, GpuIcon, HourglassIcon, ThermometerIcon, WebSocketIcon } from "../ui/icons"
|
||||||
|
|
||||||
const STATUS_COLORS = {
|
const STATUS_COLORS = {
|
||||||
[SystemStatus.Up]: "bg-green-500",
|
[SystemStatus.Up]: "bg-green-500",
|
||||||
@@ -271,18 +272,18 @@ export default function SystemsTableColumns(viewMode: "table" | "grid"): ColumnD
|
|||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
const system = info.row.original
|
const system = info.row.original
|
||||||
return (
|
const color = {
|
||||||
<span className={cn("flex gap-1.5 items-center md:pe-5 tabular-nums", viewMode === "table" && "ps-0.5")}>
|
"text-green-500": version === globalThis.BESZEL.HUB_VERSION,
|
||||||
<IndicatorDot
|
"text-yellow-500": version !== globalThis.BESZEL.HUB_VERSION,
|
||||||
system={system}
|
"text-red-500": system.status !== SystemStatus.Up,
|
||||||
className={
|
|
||||||
(system.status !== SystemStatus.Up && STATUS_COLORS[SystemStatus.Paused]) ||
|
|
||||||
(version === globalThis.BESZEL.HUB_VERSION && STATUS_COLORS[SystemStatus.Up]) ||
|
|
||||||
STATUS_COLORS[SystemStatus.Pending]
|
|
||||||
}
|
}
|
||||||
/>
|
return (
|
||||||
|
<div className={cn("flex gap-1.5 items-center md:pe-5 tabular-nums", viewMode === "table" && "ps-0.5")}>
|
||||||
|
{system.info.ct === ConnectionType.WebSocket && <WebSocketIcon className={cn("size-3", color)} />}
|
||||||
|
{system.info.ct === ConnectionType.SSH && <ChevronRightSquareIcon className={cn("size-3", color)} />}
|
||||||
|
{!system.info.ct && <IndicatorDot system={system} className={cn(color, "bg-current mx-0.5")} />}
|
||||||
<span className="truncate max-w-14">{info.getValue() as string}</span>
|
<span className="truncate max-w-14">{info.getValue() as string}</span>
|
||||||
</span>
|
</div>
|
||||||
)
|
)
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -305,10 +306,11 @@ function sortableHeader(context: HeaderContext<SystemRecord, unknown>) {
|
|||||||
const { column } = context
|
const { column } = context
|
||||||
// @ts-expect-error
|
// @ts-expect-error
|
||||||
const { Icon, hideSort, name }: { Icon: React.ElementType; name: () => string; hideSort: boolean } = column.columnDef
|
const { Icon, hideSort, name }: { Icon: React.ElementType; name: () => string; hideSort: boolean } = column.columnDef
|
||||||
|
const isSorted = column.getIsSorted()
|
||||||
return (
|
return (
|
||||||
<Button
|
<Button
|
||||||
variant="ghost"
|
variant="ghost"
|
||||||
className="h-9 px-3 flex"
|
className={cn("h-9 px-3 flex duration-50", isSorted && "bg-accent/70 light:bg-accent text-accent-foreground/90")}
|
||||||
onClick={() => column.toggleSorting(column.getIsSorted() === "asc")}
|
onClick={() => column.toggleSorting(column.getIsSorted() === "asc")}
|
||||||
>
|
>
|
||||||
{Icon && <Icon className="me-2 size-4" />}
|
{Icon && <Icon className="me-2 size-4" />}
|
||||||
|
|||||||
@@ -337,7 +337,7 @@ const AllSystemsTable = memo(
|
|||||||
{/* add header height to table size */}
|
{/* add header height to table size */}
|
||||||
<div style={{ height: `${virtualizer.getTotalSize() + 50}px`, paddingTop, paddingBottom }}>
|
<div style={{ height: `${virtualizer.getTotalSize() + 50}px`, paddingTop, paddingBottom }}>
|
||||||
<table className="text-sm w-full h-full">
|
<table className="text-sm w-full h-full">
|
||||||
<SystemsTableHead table={table} colLength={colLength} />
|
<SystemsTableHead table={table} />
|
||||||
<TableBody onMouseEnter={preloadSystemDetail}>
|
<TableBody onMouseEnter={preloadSystemDetail}>
|
||||||
{rows.length ? (
|
{rows.length ? (
|
||||||
virtualRows.map((virtualRow) => {
|
virtualRows.map((virtualRow) => {
|
||||||
@@ -367,10 +367,8 @@ const AllSystemsTable = memo(
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
function SystemsTableHead({ table, colLength }: { table: TableType<SystemRecord>; colLength: number }) {
|
function SystemsTableHead({ table }: { table: TableType<SystemRecord> }) {
|
||||||
const { i18n } = useLingui()
|
const { t } = useLingui()
|
||||||
|
|
||||||
return useMemo(() => {
|
|
||||||
return (
|
return (
|
||||||
<TableHeader className="sticky top-0 z-20 w-full border-b-2">
|
<TableHeader className="sticky top-0 z-20 w-full border-b-2">
|
||||||
{table.getHeaderGroups().map((headerGroup) => (
|
{table.getHeaderGroups().map((headerGroup) => (
|
||||||
@@ -386,7 +384,6 @@ function SystemsTableHead({ table, colLength }: { table: TableType<SystemRecord>
|
|||||||
))}
|
))}
|
||||||
</TableHeader>
|
</TableHeader>
|
||||||
)
|
)
|
||||||
}, [i18n.locale, colLength])
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const SystemTableRow = memo(
|
const SystemTableRow = memo(
|
||||||
|
|||||||
@@ -130,3 +130,12 @@ export function HourglassIcon(props: SVGProps<SVGSVGElement>) {
|
|||||||
</svg>
|
</svg>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function WebSocketIcon(props: SVGProps<SVGSVGElement>) {
|
||||||
|
return (
|
||||||
|
<svg viewBox="0 0 256 193" {...props} fill="currentColor">
|
||||||
|
<title>WebSocket</title>
|
||||||
|
<path d="M192 145h32V68l-36-35-22 22 26 27zm32 16H113l-26-27 11-11 22 22h45l-44-45 11-11 44 44V88l-21-22 11-11-55-55H0l32 32h65l24 23-34 34-24-23V48H32v31l55 55-23 22 36 36h156z" />
|
||||||
|
</svg>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|||||||
@@ -53,3 +53,9 @@ export enum HourFormat {
|
|||||||
"12h" = "12h",
|
"12h" = "12h",
|
||||||
"24h" = "24h",
|
"24h" = "24h",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Connection type */
|
||||||
|
export enum ConnectionType {
|
||||||
|
SSH = 1,
|
||||||
|
WebSocket,
|
||||||
|
}
|
||||||
|
|||||||
@@ -179,8 +179,8 @@ export function formatTemperature(celsius: number, unit?: Unit): { value: number
|
|||||||
if (!unit) {
|
if (!unit) {
|
||||||
unit = $userSettings.get().unitTemp || Unit.Celsius
|
unit = $userSettings.get().unitTemp || Unit.Celsius
|
||||||
}
|
}
|
||||||
// need loose equality check due to form data being strings
|
// biome-ignore lint/suspicious/noDoubleEquals: need loose equality check due to form data being strings
|
||||||
if (unit === Unit.Fahrenheit) {
|
if (unit == Unit.Fahrenheit) {
|
||||||
return {
|
return {
|
||||||
value: celsius * 1.8 + 32,
|
value: celsius * 1.8 + 32,
|
||||||
unit: "°F",
|
unit: "°F",
|
||||||
@@ -202,8 +202,8 @@ export function formatBytes(
|
|||||||
// Convert MB to bytes if isMegabytes is true
|
// Convert MB to bytes if isMegabytes is true
|
||||||
if (isMegabytes) size *= 1024 * 1024
|
if (isMegabytes) size *= 1024 * 1024
|
||||||
|
|
||||||
// need loose equality check due to form data being strings
|
// biome-ignore lint/suspicious/noDoubleEquals: need loose equality check due to form data being strings
|
||||||
if (unit === Unit.Bits) {
|
if (unit == Unit.Bits) {
|
||||||
const bits = size * 8
|
const bits = size * 8
|
||||||
const suffix = perSecond ? "ps" : ""
|
const suffix = perSecond ? "ps" : ""
|
||||||
if (bits < 1000) return { value: bits, unit: `b${suffix}` }
|
if (bits < 1000) return { value: bits, unit: `b${suffix}` }
|
||||||
|
|||||||
@@ -363,6 +363,14 @@ msgstr "أنشئت"
|
|||||||
msgid "Critical (%)"
|
msgid "Critical (%)"
|
||||||
msgstr "حرج (%)"
|
msgstr "حرج (%)"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Cumulative Download"
|
||||||
|
msgstr "التنزيل التراكمي"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Cumulative Upload"
|
||||||
|
msgstr "الرفع التراكمي"
|
||||||
|
|
||||||
#. Context: Battery state
|
#. Context: Battery state
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
msgid "Current state"
|
msgid "Current state"
|
||||||
@@ -441,6 +449,10 @@ msgstr "معطل"
|
|||||||
msgid "Down ({downSystemsLength})"
|
msgid "Down ({downSystemsLength})"
|
||||||
msgstr "معطل ({downSystemsLength})"
|
msgstr "معطل ({downSystemsLength})"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Download"
|
||||||
|
msgstr "تنزيل"
|
||||||
|
|
||||||
#: src/components/alerts-history-columns.tsx
|
#: src/components/alerts-history-columns.tsx
|
||||||
msgid "Duration"
|
msgid "Duration"
|
||||||
msgstr "المدة"
|
msgstr "المدة"
|
||||||
@@ -452,6 +464,7 @@ 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
|
||||||
msgid "Email"
|
msgid "Email"
|
||||||
msgstr "البريد الإشباكي"
|
msgstr "البريد الإشباكي"
|
||||||
|
|
||||||
@@ -472,6 +485,10 @@ msgstr "أدخل عنوان البريد الإشباكي لإعادة تعيي
|
|||||||
msgid "Enter email address..."
|
msgid "Enter email address..."
|
||||||
msgstr "أدخل عنوان البريد الإشباكي..."
|
msgstr "أدخل عنوان البريد الإشباكي..."
|
||||||
|
|
||||||
|
#: src/components/login/otp-forms.tsx
|
||||||
|
msgid "Enter your one-time password."
|
||||||
|
msgstr "أدخل كلمة المرور لمرة واحدة الخاصة بك."
|
||||||
|
|
||||||
#: src/components/login/auth-form.tsx
|
#: src/components/login/auth-form.tsx
|
||||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||||
#: src/components/routes/settings/config-yaml.tsx
|
#: src/components/routes/settings/config-yaml.tsx
|
||||||
@@ -542,6 +559,12 @@ msgstr "لمدة <0>{min}</0> {min, plural, one {دقيقة} other {دقائق}}
|
|||||||
msgid "Forgot password?"
|
msgid "Forgot password?"
|
||||||
msgstr "هل نسيت كلمة المرور؟"
|
msgstr "هل نسيت كلمة المرور؟"
|
||||||
|
|
||||||
|
#: src/components/add-system.tsx
|
||||||
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
|
msgctxt "Button to copy install command"
|
||||||
|
msgid "FreeBSD command"
|
||||||
|
msgstr "أمر FreeBSD"
|
||||||
|
|
||||||
#. Context: Battery state
|
#. Context: Battery state
|
||||||
#: src/lib/i18n.ts
|
#: src/lib/i18n.ts
|
||||||
msgid "Full"
|
msgid "Full"
|
||||||
@@ -645,6 +668,7 @@ msgid "Manage display and notification preferences."
|
|||||||
msgstr "إدارة تفضيلات العرض والإشعارات."
|
msgstr "إدارة تفضيلات العرض والإشعارات."
|
||||||
|
|
||||||
#: src/components/add-system.tsx
|
#: src/components/add-system.tsx
|
||||||
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
msgid "Manual setup instructions"
|
msgid "Manual setup instructions"
|
||||||
msgstr "تعليمات الإعداد اليدوي"
|
msgstr "تعليمات الإعداد اليدوي"
|
||||||
|
|
||||||
@@ -680,6 +704,8 @@ msgid "Network traffic of docker containers"
|
|||||||
msgstr "حركة مرور الشبكة لحاويات الدوكر"
|
msgstr "حركة مرور الشبكة لحاويات الدوكر"
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
msgid "Network traffic of public interfaces"
|
msgid "Network traffic of public interfaces"
|
||||||
msgstr "حركة مرور الشبكة للواجهات العامة"
|
msgstr "حركة مرور الشبكة للواجهات العامة"
|
||||||
|
|
||||||
@@ -715,6 +741,10 @@ msgstr "دعم OAuth 2 / OIDC"
|
|||||||
msgid "On each restart, systems in the database will be updated to match the systems defined in the file."
|
msgid "On each restart, systems in the database will be updated to match the systems defined in the file."
|
||||||
msgstr "في كل إعادة تشغيل، سيتم تحديث الأنظمة في قاعدة البيانات لتتطابق مع الأنظمة المعرفة في الملف."
|
msgstr "في كل إعادة تشغيل، سيتم تحديث الأنظمة في قاعدة البيانات لتتطابق مع الأنظمة المعرفة في الملف."
|
||||||
|
|
||||||
|
#: src/components/login/auth-form.tsx
|
||||||
|
msgid "One-time password"
|
||||||
|
msgstr "كلمة مرور لمرة واحدة"
|
||||||
|
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
@@ -833,6 +863,14 @@ msgstr "قراءة"
|
|||||||
msgid "Received"
|
msgid "Received"
|
||||||
msgstr "تم الاستلام"
|
msgstr "تم الاستلام"
|
||||||
|
|
||||||
|
#: src/components/login/login.tsx
|
||||||
|
msgid "Request a one-time password"
|
||||||
|
msgstr "طلب كلمة مرور لمرة واحدة"
|
||||||
|
|
||||||
|
#: src/components/login/otp-forms.tsx
|
||||||
|
msgid "Request OTP"
|
||||||
|
msgstr "طلب OTP"
|
||||||
|
|
||||||
#: src/components/login/forgot-pass-form.tsx
|
#: src/components/login/forgot-pass-form.tsx
|
||||||
msgid "Reset Password"
|
msgid "Reset Password"
|
||||||
msgstr "إعادة تعيين كلمة المرور"
|
msgstr "إعادة تعيين كلمة المرور"
|
||||||
@@ -888,10 +926,6 @@ msgstr "تم الإرسال"
|
|||||||
msgid "Set percentage thresholds for meter colors."
|
msgid "Set percentage thresholds for meter colors."
|
||||||
msgstr "تعيين عتبات النسبة المئوية لألوان العداد."
|
msgstr "تعيين عتبات النسبة المئوية لألوان العداد."
|
||||||
|
|
||||||
#: src/components/routes/settings/general.tsx
|
|
||||||
msgid "Sets the default time range for charts when a system is viewed."
|
|
||||||
msgstr "يحدد النطاق الزمني الافتراضي للرسوم البيانية عند عرض النظام."
|
|
||||||
|
|
||||||
#: src/components/command-palette.tsx
|
#: src/components/command-palette.tsx
|
||||||
#: src/components/command-palette.tsx
|
#: src/components/command-palette.tsx
|
||||||
#: src/components/routes/settings/layout.tsx
|
#: src/components/routes/settings/layout.tsx
|
||||||
@@ -1002,6 +1036,10 @@ msgstr "معدل نقل {extraFsName}"
|
|||||||
msgid "Throughput of root filesystem"
|
msgid "Throughput of root filesystem"
|
||||||
msgstr "معدل نقل نظام الملفات الجذر"
|
msgstr "معدل نقل نظام الملفات الجذر"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/general.tsx
|
||||||
|
msgid "Time format"
|
||||||
|
msgstr "تنسيق الوقت"
|
||||||
|
|
||||||
#: src/components/routes/settings/notifications.tsx
|
#: src/components/routes/settings/notifications.tsx
|
||||||
msgid "To email(s)"
|
msgid "To email(s)"
|
||||||
msgstr "إلى البريد الإشباكي"
|
msgstr "إلى البريد الإشباكي"
|
||||||
@@ -1034,6 +1072,14 @@ msgstr "تسمح الرموز المميزة للوكلاء بالاتصال و
|
|||||||
msgid "Tokens and fingerprints are used to authenticate WebSocket connections to the hub."
|
msgid "Tokens and fingerprints are used to authenticate WebSocket connections to the hub."
|
||||||
msgstr "تُستخدم الرموز المميزة والبصمات للمصادقة على اتصالات WebSocket إلى المحور."
|
msgstr "تُستخدم الرموز المميزة والبصمات للمصادقة على اتصالات WebSocket إلى المحور."
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Total data received for each interface"
|
||||||
|
msgstr "إجمالي البيانات المستلمة لكل واجهة"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Total data sent for each interface"
|
||||||
|
msgstr "إجمالي البيانات المرسلة لكل واجهة"
|
||||||
|
|
||||||
#: src/lib/alerts.ts
|
#: src/lib/alerts.ts
|
||||||
msgid "Triggers when 1 minute load average exceeds a threshold"
|
msgid "Triggers when 1 minute load average exceeds a threshold"
|
||||||
msgstr "يتم التفعيل عندما يتجاوز متوسط التحميل لمدة دقيقة واحدة عتبة معينة"
|
msgstr "يتم التفعيل عندما يتجاوز متوسط التحميل لمدة دقيقة واحدة عتبة معينة"
|
||||||
@@ -1048,7 +1094,7 @@ msgstr "يتم التفعيل عندما يتجاوز متوسط التحميل
|
|||||||
|
|
||||||
#: src/lib/alerts.ts
|
#: src/lib/alerts.ts
|
||||||
msgid "Triggers when any sensor exceeds a threshold"
|
msgid "Triggers when any sensor exceeds a threshold"
|
||||||
msgstr "يتم التفعيل عندما <EFBFBD><EFBFBD>تجاوز أي مستشعر عتبة معينة"
|
msgstr "يتم التفعيل عندما يتجاوز أي مستشعر عتبة معينة"
|
||||||
|
|
||||||
#: src/lib/alerts.ts
|
#: src/lib/alerts.ts
|
||||||
msgid "Triggers when combined up/down exceeds a threshold"
|
msgid "Triggers when combined up/down exceeds a threshold"
|
||||||
@@ -1095,6 +1141,10 @@ msgstr "قيد التشغيل"
|
|||||||
msgid "Up ({upSystemsLength})"
|
msgid "Up ({upSystemsLength})"
|
||||||
msgstr "قيد التشغيل ({upSystemsLength})"
|
msgstr "قيد التشغيل ({upSystemsLength})"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Upload"
|
||||||
|
msgstr "رفع"
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
msgid "Uptime"
|
msgid "Uptime"
|
||||||
msgstr "مدة التشغيل"
|
msgstr "مدة التشغيل"
|
||||||
|
|||||||
@@ -363,6 +363,14 @@ msgstr "Създаден"
|
|||||||
msgid "Critical (%)"
|
msgid "Critical (%)"
|
||||||
msgstr "Критично (%)"
|
msgstr "Критично (%)"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Cumulative Download"
|
||||||
|
msgstr "Кумулативно изтегляне"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Cumulative Upload"
|
||||||
|
msgstr "Кумулативно качване"
|
||||||
|
|
||||||
#. Context: Battery state
|
#. Context: Battery state
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
msgid "Current state"
|
msgid "Current state"
|
||||||
@@ -441,6 +449,10 @@ msgstr "Офлайн"
|
|||||||
msgid "Down ({downSystemsLength})"
|
msgid "Down ({downSystemsLength})"
|
||||||
msgstr "Офлайн ({downSystemsLength})"
|
msgstr "Офлайн ({downSystemsLength})"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Download"
|
||||||
|
msgstr "Изтегляне"
|
||||||
|
|
||||||
#: src/components/alerts-history-columns.tsx
|
#: src/components/alerts-history-columns.tsx
|
||||||
msgid "Duration"
|
msgid "Duration"
|
||||||
msgstr "Продължителност"
|
msgstr "Продължителност"
|
||||||
@@ -452,6 +464,7 @@ 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
|
||||||
msgid "Email"
|
msgid "Email"
|
||||||
msgstr "Имейл"
|
msgstr "Имейл"
|
||||||
|
|
||||||
@@ -472,6 +485,10 @@ msgstr "Въведи имейл адрес за да нулираш парола
|
|||||||
msgid "Enter email address..."
|
msgid "Enter email address..."
|
||||||
msgstr "Въведи имейл адрес..."
|
msgstr "Въведи имейл адрес..."
|
||||||
|
|
||||||
|
#: src/components/login/otp-forms.tsx
|
||||||
|
msgid "Enter your one-time password."
|
||||||
|
msgstr "Въведете Вашата еднократна парола."
|
||||||
|
|
||||||
#: src/components/login/auth-form.tsx
|
#: src/components/login/auth-form.tsx
|
||||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||||
#: src/components/routes/settings/config-yaml.tsx
|
#: src/components/routes/settings/config-yaml.tsx
|
||||||
@@ -542,6 +559,12 @@ msgstr "За <0>{min}</0> {min, plural, one {минута} other {минути}}
|
|||||||
msgid "Forgot password?"
|
msgid "Forgot password?"
|
||||||
msgstr "Забравена парола?"
|
msgstr "Забравена парола?"
|
||||||
|
|
||||||
|
#: src/components/add-system.tsx
|
||||||
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
|
msgctxt "Button to copy install command"
|
||||||
|
msgid "FreeBSD command"
|
||||||
|
msgstr "FreeBSD команда"
|
||||||
|
|
||||||
#. Context: Battery state
|
#. Context: Battery state
|
||||||
#: src/lib/i18n.ts
|
#: src/lib/i18n.ts
|
||||||
msgid "Full"
|
msgid "Full"
|
||||||
@@ -645,6 +668,7 @@ msgid "Manage display and notification preferences."
|
|||||||
msgstr "Управление на предпочитанията за показване и уведомяване."
|
msgstr "Управление на предпочитанията за показване и уведомяване."
|
||||||
|
|
||||||
#: src/components/add-system.tsx
|
#: src/components/add-system.tsx
|
||||||
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
msgid "Manual setup instructions"
|
msgid "Manual setup instructions"
|
||||||
msgstr "Инструкции за ръчна настройка"
|
msgstr "Инструкции за ръчна настройка"
|
||||||
|
|
||||||
@@ -680,6 +704,8 @@ msgid "Network traffic of docker containers"
|
|||||||
msgstr "Мрежов трафик на docker контейнери"
|
msgstr "Мрежов трафик на docker контейнери"
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
msgid "Network traffic of public interfaces"
|
msgid "Network traffic of public interfaces"
|
||||||
msgstr "Мрежов трафик на публични интерфейси"
|
msgstr "Мрежов трафик на публични интерфейси"
|
||||||
|
|
||||||
@@ -715,6 +741,10 @@ msgstr "Поддръжка на OAuth 2 / OIDC"
|
|||||||
msgid "On each restart, systems in the database will be updated to match the systems defined in the file."
|
msgid "On each restart, systems in the database will be updated to match the systems defined in the file."
|
||||||
msgstr "На всеки рестарт, системите в датабазата ще бъдат обновени да съвпадат със системите зададени във файла."
|
msgstr "На всеки рестарт, системите в датабазата ще бъдат обновени да съвпадат със системите зададени във файла."
|
||||||
|
|
||||||
|
#: src/components/login/auth-form.tsx
|
||||||
|
msgid "One-time password"
|
||||||
|
msgstr "Еднократна парола"
|
||||||
|
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
@@ -833,6 +863,14 @@ msgstr "Прочети"
|
|||||||
msgid "Received"
|
msgid "Received"
|
||||||
msgstr "Получени"
|
msgstr "Получени"
|
||||||
|
|
||||||
|
#: src/components/login/login.tsx
|
||||||
|
msgid "Request a one-time password"
|
||||||
|
msgstr "Заявка за еднократна парола"
|
||||||
|
|
||||||
|
#: src/components/login/otp-forms.tsx
|
||||||
|
msgid "Request OTP"
|
||||||
|
msgstr "Заявка OTP"
|
||||||
|
|
||||||
#: src/components/login/forgot-pass-form.tsx
|
#: src/components/login/forgot-pass-form.tsx
|
||||||
msgid "Reset Password"
|
msgid "Reset Password"
|
||||||
msgstr "Нулиране на парола"
|
msgstr "Нулиране на парола"
|
||||||
@@ -888,10 +926,6 @@ msgstr "Изпратени"
|
|||||||
msgid "Set percentage thresholds for meter colors."
|
msgid "Set percentage thresholds for meter colors."
|
||||||
msgstr "Задайте процентни прагове за цветовете на измервателните уреди."
|
msgstr "Задайте процентни прагове за цветовете на измервателните уреди."
|
||||||
|
|
||||||
#: src/components/routes/settings/general.tsx
|
|
||||||
msgid "Sets the default time range for charts when a system is viewed."
|
|
||||||
msgstr "Задава диапазона за време за диаграмите, когато се разглежда система."
|
|
||||||
|
|
||||||
#: src/components/command-palette.tsx
|
#: src/components/command-palette.tsx
|
||||||
#: src/components/command-palette.tsx
|
#: src/components/command-palette.tsx
|
||||||
#: src/components/routes/settings/layout.tsx
|
#: src/components/routes/settings/layout.tsx
|
||||||
@@ -1002,6 +1036,10 @@ msgstr "Пропускателна способност на {extraFsName}"
|
|||||||
msgid "Throughput of root filesystem"
|
msgid "Throughput of root filesystem"
|
||||||
msgstr "Пропускателна способност на root файловата система"
|
msgstr "Пропускателна способност на root файловата система"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/general.tsx
|
||||||
|
msgid "Time format"
|
||||||
|
msgstr "Формат на времето"
|
||||||
|
|
||||||
#: src/components/routes/settings/notifications.tsx
|
#: src/components/routes/settings/notifications.tsx
|
||||||
msgid "To email(s)"
|
msgid "To email(s)"
|
||||||
msgstr "До имейл(ите)"
|
msgstr "До имейл(ите)"
|
||||||
@@ -1034,6 +1072,14 @@ msgstr "Токените позволяват на агентите да се с
|
|||||||
msgid "Tokens and fingerprints are used to authenticate WebSocket connections to the hub."
|
msgid "Tokens and fingerprints are used to authenticate WebSocket connections to the hub."
|
||||||
msgstr "Токените и пръстовите отпечатъци се използват за удостоверяване на WebSocket връзките към концентратора."
|
msgstr "Токените и пръстовите отпечатъци се използват за удостоверяване на WebSocket връзките към концентратора."
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Total data received for each interface"
|
||||||
|
msgstr "Общо получени данни за всеки интерфейс"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Total data sent for each interface"
|
||||||
|
msgstr "Общо изпратени данни за всеки интерфейс"
|
||||||
|
|
||||||
#: src/lib/alerts.ts
|
#: src/lib/alerts.ts
|
||||||
msgid "Triggers when 1 minute load average exceeds a threshold"
|
msgid "Triggers when 1 minute load average exceeds a threshold"
|
||||||
msgstr "Задейства се, когато употребата на паметта за 1 минута надвиши зададен праг"
|
msgstr "Задейства се, когато употребата на паметта за 1 минута надвиши зададен праг"
|
||||||
@@ -1095,6 +1141,10 @@ msgstr "Нагоре"
|
|||||||
msgid "Up ({upSystemsLength})"
|
msgid "Up ({upSystemsLength})"
|
||||||
msgstr "Нагоре ({upSystemsLength})"
|
msgstr "Нагоре ({upSystemsLength})"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Upload"
|
||||||
|
msgstr "Качване"
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
msgid "Uptime"
|
msgid "Uptime"
|
||||||
msgstr "Време на работа"
|
msgstr "Време на работа"
|
||||||
|
|||||||
@@ -363,6 +363,14 @@ msgstr "Vytvořeno"
|
|||||||
msgid "Critical (%)"
|
msgid "Critical (%)"
|
||||||
msgstr "Kritické (%)"
|
msgstr "Kritické (%)"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Cumulative Download"
|
||||||
|
msgstr "Kumulativní stažení"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Cumulative Upload"
|
||||||
|
msgstr "Kumulativní odeslání"
|
||||||
|
|
||||||
#. Context: Battery state
|
#. Context: Battery state
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
msgid "Current state"
|
msgid "Current state"
|
||||||
@@ -441,6 +449,10 @@ msgstr "Nefunkční"
|
|||||||
msgid "Down ({downSystemsLength})"
|
msgid "Down ({downSystemsLength})"
|
||||||
msgstr "Nefunkční ({downSystemsLength})"
|
msgstr "Nefunkční ({downSystemsLength})"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Download"
|
||||||
|
msgstr "Stažení"
|
||||||
|
|
||||||
#: src/components/alerts-history-columns.tsx
|
#: src/components/alerts-history-columns.tsx
|
||||||
msgid "Duration"
|
msgid "Duration"
|
||||||
msgstr "Doba trvání"
|
msgstr "Doba trvání"
|
||||||
@@ -452,6 +464,7 @@ msgstr "Upravit"
|
|||||||
|
|
||||||
#: src/components/login/auth-form.tsx
|
#: src/components/login/auth-form.tsx
|
||||||
#: src/components/login/forgot-pass-form.tsx
|
#: src/components/login/forgot-pass-form.tsx
|
||||||
|
#: src/components/login/otp-forms.tsx
|
||||||
msgid "Email"
|
msgid "Email"
|
||||||
msgstr "Email"
|
msgstr "Email"
|
||||||
|
|
||||||
@@ -472,6 +485,10 @@ msgstr "Zadejte e-mailovou adresu pro obnovu hesla"
|
|||||||
msgid "Enter email address..."
|
msgid "Enter email address..."
|
||||||
msgstr "Zadejte e-mailovou adresu..."
|
msgstr "Zadejte e-mailovou adresu..."
|
||||||
|
|
||||||
|
#: src/components/login/otp-forms.tsx
|
||||||
|
msgid "Enter your one-time password."
|
||||||
|
msgstr "Zadejte Vaše jednorázové heslo."
|
||||||
|
|
||||||
#: src/components/login/auth-form.tsx
|
#: src/components/login/auth-form.tsx
|
||||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||||
#: src/components/routes/settings/config-yaml.tsx
|
#: src/components/routes/settings/config-yaml.tsx
|
||||||
@@ -542,6 +559,12 @@ msgstr "Za <0>{min}</0> {min, plural, one {minutu} few {minuty} other {minut}}"
|
|||||||
msgid "Forgot password?"
|
msgid "Forgot password?"
|
||||||
msgstr "Zapomněli jste heslo?"
|
msgstr "Zapomněli jste heslo?"
|
||||||
|
|
||||||
|
#: src/components/add-system.tsx
|
||||||
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
|
msgctxt "Button to copy install command"
|
||||||
|
msgid "FreeBSD command"
|
||||||
|
msgstr "FreeBSD příkaz"
|
||||||
|
|
||||||
#. Context: Battery state
|
#. Context: Battery state
|
||||||
#: src/lib/i18n.ts
|
#: src/lib/i18n.ts
|
||||||
msgid "Full"
|
msgid "Full"
|
||||||
@@ -645,6 +668,7 @@ msgid "Manage display and notification preferences."
|
|||||||
msgstr "Správa nastavení zobrazení a oznámení."
|
msgstr "Správa nastavení zobrazení a oznámení."
|
||||||
|
|
||||||
#: src/components/add-system.tsx
|
#: src/components/add-system.tsx
|
||||||
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
msgid "Manual setup instructions"
|
msgid "Manual setup instructions"
|
||||||
msgstr "Pokyny k manuálnímu nastavení"
|
msgstr "Pokyny k manuálnímu nastavení"
|
||||||
|
|
||||||
@@ -680,6 +704,8 @@ msgid "Network traffic of docker containers"
|
|||||||
msgstr "Síťový provoz kontejnerů docker"
|
msgstr "Síťový provoz kontejnerů docker"
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
msgid "Network traffic of public interfaces"
|
msgid "Network traffic of public interfaces"
|
||||||
msgstr "Síťový provoz veřejných rozhraní"
|
msgstr "Síťový provoz veřejných rozhraní"
|
||||||
|
|
||||||
@@ -715,6 +741,10 @@ msgstr "Podpora OAuth 2 / OIDC"
|
|||||||
msgid "On each restart, systems in the database will be updated to match the systems defined in the file."
|
msgid "On each restart, systems in the database will be updated to match the systems defined in the file."
|
||||||
msgstr "Při každém restartu budou systémy v databázi aktualizovány tak, aby odpovídaly systémům definovaným v souboru."
|
msgstr "Při každém restartu budou systémy v databázi aktualizovány tak, aby odpovídaly systémům definovaným v souboru."
|
||||||
|
|
||||||
|
#: src/components/login/auth-form.tsx
|
||||||
|
msgid "One-time password"
|
||||||
|
msgstr "Jednorázové heslo"
|
||||||
|
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
@@ -833,6 +863,14 @@ msgstr "Číst"
|
|||||||
msgid "Received"
|
msgid "Received"
|
||||||
msgstr "Přijato"
|
msgstr "Přijato"
|
||||||
|
|
||||||
|
#: src/components/login/login.tsx
|
||||||
|
msgid "Request a one-time password"
|
||||||
|
msgstr "Požádat o jednorázové heslo"
|
||||||
|
|
||||||
|
#: src/components/login/otp-forms.tsx
|
||||||
|
msgid "Request OTP"
|
||||||
|
msgstr "Požádat OTP"
|
||||||
|
|
||||||
#: src/components/login/forgot-pass-form.tsx
|
#: src/components/login/forgot-pass-form.tsx
|
||||||
msgid "Reset Password"
|
msgid "Reset Password"
|
||||||
msgstr "Obnovit heslo"
|
msgstr "Obnovit heslo"
|
||||||
@@ -888,10 +926,6 @@ msgstr "Odeslat"
|
|||||||
msgid "Set percentage thresholds for meter colors."
|
msgid "Set percentage thresholds for meter colors."
|
||||||
msgstr "Nastavte procentuální prahové hodnoty pro barvy měřičů."
|
msgstr "Nastavte procentuální prahové hodnoty pro barvy měřičů."
|
||||||
|
|
||||||
#: src/components/routes/settings/general.tsx
|
|
||||||
msgid "Sets the default time range for charts when a system is viewed."
|
|
||||||
msgstr "Nastaví výchozí časový rozsah grafů, když je systém zobrazen."
|
|
||||||
|
|
||||||
#: src/components/command-palette.tsx
|
#: src/components/command-palette.tsx
|
||||||
#: src/components/command-palette.tsx
|
#: src/components/command-palette.tsx
|
||||||
#: src/components/routes/settings/layout.tsx
|
#: src/components/routes/settings/layout.tsx
|
||||||
@@ -1002,6 +1036,10 @@ msgstr "Propustnost {extraFsName}"
|
|||||||
msgid "Throughput of root filesystem"
|
msgid "Throughput of root filesystem"
|
||||||
msgstr "Propustnost kořenového souborového systému"
|
msgstr "Propustnost kořenového souborového systému"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/general.tsx
|
||||||
|
msgid "Time format"
|
||||||
|
msgstr "Formát času"
|
||||||
|
|
||||||
#: src/components/routes/settings/notifications.tsx
|
#: src/components/routes/settings/notifications.tsx
|
||||||
msgid "To email(s)"
|
msgid "To email(s)"
|
||||||
msgstr "Na email(y)"
|
msgstr "Na email(y)"
|
||||||
@@ -1034,6 +1072,14 @@ msgstr "Tokeny umožňují agentům připojení a registraci. Otisky jsou stabil
|
|||||||
msgid "Tokens and fingerprints are used to authenticate WebSocket connections to the hub."
|
msgid "Tokens and fingerprints are used to authenticate WebSocket connections to the hub."
|
||||||
msgstr "Tokeny a otisky slouží k ověření připojení WebSocket k uzlu."
|
msgstr "Tokeny a otisky slouží k ověření připojení WebSocket k uzlu."
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Total data received for each interface"
|
||||||
|
msgstr "Celkový přijatý objem dat pro každé rozhraní"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Total data sent for each interface"
|
||||||
|
msgstr "Celkový odeslaný objem dat pro každé rozhraní"
|
||||||
|
|
||||||
#: src/lib/alerts.ts
|
#: src/lib/alerts.ts
|
||||||
msgid "Triggers when 1 minute load average exceeds a threshold"
|
msgid "Triggers when 1 minute load average exceeds a threshold"
|
||||||
msgstr "Spustí se, když využití paměti během 1 minuty překročí prahovou hodnotu"
|
msgstr "Spustí se, když využití paměti během 1 minuty překročí prahovou hodnotu"
|
||||||
@@ -1095,6 +1141,10 @@ msgstr "Funkční"
|
|||||||
msgid "Up ({upSystemsLength})"
|
msgid "Up ({upSystemsLength})"
|
||||||
msgstr "Funkční ({upSystemsLength})"
|
msgstr "Funkční ({upSystemsLength})"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Upload"
|
||||||
|
msgstr "Odeslání"
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
msgid "Uptime"
|
msgid "Uptime"
|
||||||
msgstr "Doba provozu"
|
msgstr "Doba provozu"
|
||||||
|
|||||||
@@ -363,6 +363,14 @@ msgstr ""
|
|||||||
msgid "Critical (%)"
|
msgid "Critical (%)"
|
||||||
msgstr "Kritisk (%)"
|
msgstr "Kritisk (%)"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Cumulative Download"
|
||||||
|
msgstr "Kumulativ download"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Cumulative Upload"
|
||||||
|
msgstr "Kumulativ upload"
|
||||||
|
|
||||||
#. Context: Battery state
|
#. Context: Battery state
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
msgid "Current state"
|
msgid "Current state"
|
||||||
@@ -441,6 +449,10 @@ msgstr "Nede"
|
|||||||
msgid "Down ({downSystemsLength})"
|
msgid "Down ({downSystemsLength})"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Download"
|
||||||
|
msgstr "Download"
|
||||||
|
|
||||||
#: src/components/alerts-history-columns.tsx
|
#: src/components/alerts-history-columns.tsx
|
||||||
msgid "Duration"
|
msgid "Duration"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -452,6 +464,7 @@ msgstr "Rediger"
|
|||||||
|
|
||||||
#: src/components/login/auth-form.tsx
|
#: src/components/login/auth-form.tsx
|
||||||
#: src/components/login/forgot-pass-form.tsx
|
#: src/components/login/forgot-pass-form.tsx
|
||||||
|
#: src/components/login/otp-forms.tsx
|
||||||
msgid "Email"
|
msgid "Email"
|
||||||
msgstr "E-mail"
|
msgstr "E-mail"
|
||||||
|
|
||||||
@@ -472,6 +485,10 @@ msgstr "Indtast e-mailadresse for at nulstille adgangskoden"
|
|||||||
msgid "Enter email address..."
|
msgid "Enter email address..."
|
||||||
msgstr "Indtast e-mailadresse..."
|
msgstr "Indtast e-mailadresse..."
|
||||||
|
|
||||||
|
#: src/components/login/otp-forms.tsx
|
||||||
|
msgid "Enter your one-time password."
|
||||||
|
msgstr "Indtast din engangsadgangskode."
|
||||||
|
|
||||||
#: src/components/login/auth-form.tsx
|
#: src/components/login/auth-form.tsx
|
||||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||||
#: src/components/routes/settings/config-yaml.tsx
|
#: src/components/routes/settings/config-yaml.tsx
|
||||||
@@ -542,6 +559,12 @@ msgstr "For <0>{min}</0> {min, plural, one {minut} other {minutter}}"
|
|||||||
msgid "Forgot password?"
|
msgid "Forgot password?"
|
||||||
msgstr "Glemt adgangskode?"
|
msgstr "Glemt adgangskode?"
|
||||||
|
|
||||||
|
#: src/components/add-system.tsx
|
||||||
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
|
msgctxt "Button to copy install command"
|
||||||
|
msgid "FreeBSD command"
|
||||||
|
msgstr "FreeBSD kommando"
|
||||||
|
|
||||||
#. Context: Battery state
|
#. Context: Battery state
|
||||||
#: src/lib/i18n.ts
|
#: src/lib/i18n.ts
|
||||||
msgid "Full"
|
msgid "Full"
|
||||||
@@ -645,6 +668,7 @@ msgid "Manage display and notification preferences."
|
|||||||
msgstr "Administrer display og notifikationsindstillinger."
|
msgstr "Administrer display og notifikationsindstillinger."
|
||||||
|
|
||||||
#: src/components/add-system.tsx
|
#: src/components/add-system.tsx
|
||||||
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
msgid "Manual setup instructions"
|
msgid "Manual setup instructions"
|
||||||
msgstr "Manuel opsætningsvejledning"
|
msgstr "Manuel opsætningsvejledning"
|
||||||
|
|
||||||
@@ -680,6 +704,8 @@ msgid "Network traffic of docker containers"
|
|||||||
msgstr "Netværkstrafik af dockercontainere"
|
msgstr "Netværkstrafik af dockercontainere"
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
msgid "Network traffic of public interfaces"
|
msgid "Network traffic of public interfaces"
|
||||||
msgstr "Netværkstrafik af offentlige grænseflader"
|
msgstr "Netværkstrafik af offentlige grænseflader"
|
||||||
|
|
||||||
@@ -715,6 +741,10 @@ msgstr "OAuth 2 / OIDC understøttelse"
|
|||||||
msgid "On each restart, systems in the database will be updated to match the systems defined in the file."
|
msgid "On each restart, systems in the database will be updated to match the systems defined in the file."
|
||||||
msgstr "Ved hver genstart vil systemer i databasen blive opdateret til at matche de systemer, der er defineret i filen."
|
msgstr "Ved hver genstart vil systemer i databasen blive opdateret til at matche de systemer, der er defineret i filen."
|
||||||
|
|
||||||
|
#: src/components/login/auth-form.tsx
|
||||||
|
msgid "One-time password"
|
||||||
|
msgstr "Engangsadgangskode"
|
||||||
|
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
@@ -833,6 +863,14 @@ msgstr "Læs"
|
|||||||
msgid "Received"
|
msgid "Received"
|
||||||
msgstr "Modtaget"
|
msgstr "Modtaget"
|
||||||
|
|
||||||
|
#: src/components/login/login.tsx
|
||||||
|
msgid "Request a one-time password"
|
||||||
|
msgstr "Anmod om engangsadgangskode"
|
||||||
|
|
||||||
|
#: src/components/login/otp-forms.tsx
|
||||||
|
msgid "Request OTP"
|
||||||
|
msgstr "Anmod OTP"
|
||||||
|
|
||||||
#: src/components/login/forgot-pass-form.tsx
|
#: src/components/login/forgot-pass-form.tsx
|
||||||
msgid "Reset Password"
|
msgid "Reset Password"
|
||||||
msgstr "Nulstil adgangskode"
|
msgstr "Nulstil adgangskode"
|
||||||
@@ -888,10 +926,6 @@ msgstr "Sendt"
|
|||||||
msgid "Set percentage thresholds for meter colors."
|
msgid "Set percentage thresholds for meter colors."
|
||||||
msgstr "Indstil procentvise tærskler for målerfarver."
|
msgstr "Indstil procentvise tærskler for målerfarver."
|
||||||
|
|
||||||
#: src/components/routes/settings/general.tsx
|
|
||||||
msgid "Sets the default time range for charts when a system is viewed."
|
|
||||||
msgstr "Sætter standardtidsintervallet for diagrammer når et system vises."
|
|
||||||
|
|
||||||
#: src/components/command-palette.tsx
|
#: src/components/command-palette.tsx
|
||||||
#: src/components/command-palette.tsx
|
#: src/components/command-palette.tsx
|
||||||
#: src/components/routes/settings/layout.tsx
|
#: src/components/routes/settings/layout.tsx
|
||||||
@@ -1002,6 +1036,10 @@ msgstr "Gennemløb af {extraFsName}"
|
|||||||
msgid "Throughput of root filesystem"
|
msgid "Throughput of root filesystem"
|
||||||
msgstr "Gennemløb af rodfilsystemet"
|
msgstr "Gennemløb af rodfilsystemet"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/general.tsx
|
||||||
|
msgid "Time format"
|
||||||
|
msgstr "Tidsformat"
|
||||||
|
|
||||||
#: src/components/routes/settings/notifications.tsx
|
#: src/components/routes/settings/notifications.tsx
|
||||||
msgid "To email(s)"
|
msgid "To email(s)"
|
||||||
msgstr "Til email(s)"
|
msgstr "Til email(s)"
|
||||||
@@ -1034,6 +1072,14 @@ msgstr ""
|
|||||||
msgid "Tokens and fingerprints are used to authenticate WebSocket connections to the hub."
|
msgid "Tokens and fingerprints are used to authenticate WebSocket connections to the hub."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Total data received for each interface"
|
||||||
|
msgstr "Samlet modtaget data for hver interface"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Total data sent for each interface"
|
||||||
|
msgstr "Samlet sendt data for hver interface"
|
||||||
|
|
||||||
#: src/lib/alerts.ts
|
#: src/lib/alerts.ts
|
||||||
msgid "Triggers when 1 minute load average exceeds a threshold"
|
msgid "Triggers when 1 minute load average exceeds a threshold"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -1095,6 +1141,10 @@ msgstr "Oppe"
|
|||||||
msgid "Up ({upSystemsLength})"
|
msgid "Up ({upSystemsLength})"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Upload"
|
||||||
|
msgstr "Upload"
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
msgid "Uptime"
|
msgid "Uptime"
|
||||||
msgstr "Oppetid"
|
msgstr "Oppetid"
|
||||||
|
|||||||
@@ -363,6 +363,14 @@ msgstr "Erstellt"
|
|||||||
msgid "Critical (%)"
|
msgid "Critical (%)"
|
||||||
msgstr "Kritisch (%)"
|
msgstr "Kritisch (%)"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Cumulative Download"
|
||||||
|
msgstr "Kumulativer Download"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Cumulative Upload"
|
||||||
|
msgstr "Kumulativer Upload"
|
||||||
|
|
||||||
#. Context: Battery state
|
#. Context: Battery state
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
msgid "Current state"
|
msgid "Current state"
|
||||||
@@ -441,6 +449,10 @@ msgstr "Offline"
|
|||||||
msgid "Down ({downSystemsLength})"
|
msgid "Down ({downSystemsLength})"
|
||||||
msgstr "Offline ({downSystemsLength})"
|
msgstr "Offline ({downSystemsLength})"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Download"
|
||||||
|
msgstr "Download"
|
||||||
|
|
||||||
#: src/components/alerts-history-columns.tsx
|
#: src/components/alerts-history-columns.tsx
|
||||||
msgid "Duration"
|
msgid "Duration"
|
||||||
msgstr "Dauer"
|
msgstr "Dauer"
|
||||||
@@ -452,6 +464,7 @@ msgstr "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
|
||||||
msgid "Email"
|
msgid "Email"
|
||||||
msgstr "E-Mail"
|
msgstr "E-Mail"
|
||||||
|
|
||||||
@@ -472,6 +485,10 @@ msgstr "E-Mail-Adresse eingeben, um das Passwort zurückzusetzen"
|
|||||||
msgid "Enter email address..."
|
msgid "Enter email address..."
|
||||||
msgstr "E-Mail-Adresse eingeben..."
|
msgstr "E-Mail-Adresse eingeben..."
|
||||||
|
|
||||||
|
#: src/components/login/otp-forms.tsx
|
||||||
|
msgid "Enter your one-time password."
|
||||||
|
msgstr "Geben Sie Ihr Einmalpasswort ein."
|
||||||
|
|
||||||
#: src/components/login/auth-form.tsx
|
#: src/components/login/auth-form.tsx
|
||||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||||
#: src/components/routes/settings/config-yaml.tsx
|
#: src/components/routes/settings/config-yaml.tsx
|
||||||
@@ -542,6 +559,12 @@ msgstr "Für <0>{min}</0> {min, plural, one {Minute} other {Minuten}}"
|
|||||||
msgid "Forgot password?"
|
msgid "Forgot password?"
|
||||||
msgstr "Passwort vergessen?"
|
msgstr "Passwort vergessen?"
|
||||||
|
|
||||||
|
#: src/components/add-system.tsx
|
||||||
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
|
msgctxt "Button to copy install command"
|
||||||
|
msgid "FreeBSD command"
|
||||||
|
msgstr "FreeBSD Befehl"
|
||||||
|
|
||||||
#. Context: Battery state
|
#. Context: Battery state
|
||||||
#: src/lib/i18n.ts
|
#: src/lib/i18n.ts
|
||||||
msgid "Full"
|
msgid "Full"
|
||||||
@@ -645,6 +668,7 @@ msgid "Manage display and notification preferences."
|
|||||||
msgstr "Anzeige- und Benachrichtigungseinstellungen verwalten."
|
msgstr "Anzeige- und Benachrichtigungseinstellungen verwalten."
|
||||||
|
|
||||||
#: src/components/add-system.tsx
|
#: src/components/add-system.tsx
|
||||||
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
msgid "Manual setup instructions"
|
msgid "Manual setup instructions"
|
||||||
msgstr "Anleitung zur manuellen Einrichtung"
|
msgstr "Anleitung zur manuellen Einrichtung"
|
||||||
|
|
||||||
@@ -680,6 +704,8 @@ msgid "Network traffic of docker containers"
|
|||||||
msgstr "Netzwerkverkehr der Docker-Container"
|
msgstr "Netzwerkverkehr der Docker-Container"
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
msgid "Network traffic of public interfaces"
|
msgid "Network traffic of public interfaces"
|
||||||
msgstr "Netzwerkverkehr der öffentlichen Schnittstellen"
|
msgstr "Netzwerkverkehr der öffentlichen Schnittstellen"
|
||||||
|
|
||||||
@@ -715,6 +741,10 @@ msgstr "OAuth 2 / OIDC-Unterstützung"
|
|||||||
msgid "On each restart, systems in the database will be updated to match the systems defined in the file."
|
msgid "On each restart, systems in the database will be updated to match the systems defined in the file."
|
||||||
msgstr "Bei jedem Neustart werden die Systeme in der Datenbank aktualisiert, um den in der Datei definierten Systemen zu entsprechen."
|
msgstr "Bei jedem Neustart werden die Systeme in der Datenbank aktualisiert, um den in der Datei definierten Systemen zu entsprechen."
|
||||||
|
|
||||||
|
#: src/components/login/auth-form.tsx
|
||||||
|
msgid "One-time password"
|
||||||
|
msgstr "Einmalpasswort"
|
||||||
|
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
@@ -833,6 +863,14 @@ msgstr "Lesen"
|
|||||||
msgid "Received"
|
msgid "Received"
|
||||||
msgstr "Empfangen"
|
msgstr "Empfangen"
|
||||||
|
|
||||||
|
#: src/components/login/login.tsx
|
||||||
|
msgid "Request a one-time password"
|
||||||
|
msgstr "Einmalpasswort anfordern"
|
||||||
|
|
||||||
|
#: src/components/login/otp-forms.tsx
|
||||||
|
msgid "Request OTP"
|
||||||
|
msgstr "OTP anfordern"
|
||||||
|
|
||||||
#: src/components/login/forgot-pass-form.tsx
|
#: src/components/login/forgot-pass-form.tsx
|
||||||
msgid "Reset Password"
|
msgid "Reset Password"
|
||||||
msgstr "Passwort zurücksetzen"
|
msgstr "Passwort zurücksetzen"
|
||||||
@@ -888,10 +926,6 @@ msgstr "Gesendet"
|
|||||||
msgid "Set percentage thresholds for meter colors."
|
msgid "Set percentage thresholds for meter colors."
|
||||||
msgstr "Prozentuale Schwellenwerte für Zählerfarben festlegen."
|
msgstr "Prozentuale Schwellenwerte für Zählerfarben festlegen."
|
||||||
|
|
||||||
#: src/components/routes/settings/general.tsx
|
|
||||||
msgid "Sets the default time range for charts when a system is viewed."
|
|
||||||
msgstr "Legt den Standardzeitraum für Diagramme fest, wenn ein System angezeigt wird."
|
|
||||||
|
|
||||||
#: src/components/command-palette.tsx
|
#: src/components/command-palette.tsx
|
||||||
#: src/components/command-palette.tsx
|
#: src/components/command-palette.tsx
|
||||||
#: src/components/routes/settings/layout.tsx
|
#: src/components/routes/settings/layout.tsx
|
||||||
@@ -1002,6 +1036,10 @@ msgstr "Durchsatz von {extraFsName}"
|
|||||||
msgid "Throughput of root filesystem"
|
msgid "Throughput of root filesystem"
|
||||||
msgstr "Durchsatz des Root-Dateisystems"
|
msgstr "Durchsatz des Root-Dateisystems"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/general.tsx
|
||||||
|
msgid "Time format"
|
||||||
|
msgstr "Zeitformat"
|
||||||
|
|
||||||
#: src/components/routes/settings/notifications.tsx
|
#: src/components/routes/settings/notifications.tsx
|
||||||
msgid "To email(s)"
|
msgid "To email(s)"
|
||||||
msgstr "An E-Mail(s)"
|
msgstr "An E-Mail(s)"
|
||||||
@@ -1034,6 +1072,14 @@ msgstr "Tokens ermöglichen es Agents, sich zu verbinden und zu registrieren. Fi
|
|||||||
msgid "Tokens and fingerprints are used to authenticate WebSocket connections to the hub."
|
msgid "Tokens and fingerprints are used to authenticate WebSocket connections to the hub."
|
||||||
msgstr "Tokens und Fingerabdrücke werden verwendet, um WebSocket-Verbindungen zum Hub zu authentifizieren."
|
msgstr "Tokens und Fingerabdrücke werden verwendet, um WebSocket-Verbindungen zum Hub zu authentifizieren."
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Total data received for each interface"
|
||||||
|
msgstr "Gesamtdatenmenge für jede Schnittstelle empfangen"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Total data sent for each interface"
|
||||||
|
msgstr "Gesamtdatenmenge für jede Schnittstelle gesendet"
|
||||||
|
|
||||||
#: src/lib/alerts.ts
|
#: src/lib/alerts.ts
|
||||||
msgid "Triggers when 1 minute load average exceeds a threshold"
|
msgid "Triggers when 1 minute load average exceeds a threshold"
|
||||||
msgstr "Löst aus, wenn der Lastdurchschnitt der letzten Minute einen Schwellenwert überschreitet"
|
msgstr "Löst aus, wenn der Lastdurchschnitt der letzten Minute einen Schwellenwert überschreitet"
|
||||||
@@ -1095,6 +1141,10 @@ msgstr "aktiv"
|
|||||||
msgid "Up ({upSystemsLength})"
|
msgid "Up ({upSystemsLength})"
|
||||||
msgstr "aktiv ({upSystemsLength})"
|
msgstr "aktiv ({upSystemsLength})"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Upload"
|
||||||
|
msgstr "Upload"
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
msgid "Uptime"
|
msgid "Uptime"
|
||||||
msgstr "Betriebszeit"
|
msgstr "Betriebszeit"
|
||||||
|
|||||||
@@ -358,6 +358,14 @@ msgstr "Created"
|
|||||||
msgid "Critical (%)"
|
msgid "Critical (%)"
|
||||||
msgstr "Critical (%)"
|
msgstr "Critical (%)"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Cumulative Download"
|
||||||
|
msgstr "Cumulative Download"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Cumulative Upload"
|
||||||
|
msgstr "Cumulative Upload"
|
||||||
|
|
||||||
#. Context: Battery state
|
#. Context: Battery state
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
msgid "Current state"
|
msgid "Current state"
|
||||||
@@ -436,6 +444,10 @@ msgstr "Down"
|
|||||||
msgid "Down ({downSystemsLength})"
|
msgid "Down ({downSystemsLength})"
|
||||||
msgstr "Down ({downSystemsLength})"
|
msgstr "Down ({downSystemsLength})"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Download"
|
||||||
|
msgstr "Download"
|
||||||
|
|
||||||
#: src/components/alerts-history-columns.tsx
|
#: src/components/alerts-history-columns.tsx
|
||||||
msgid "Duration"
|
msgid "Duration"
|
||||||
msgstr "Duration"
|
msgstr "Duration"
|
||||||
@@ -447,6 +459,7 @@ msgstr "Edit"
|
|||||||
|
|
||||||
#: src/components/login/auth-form.tsx
|
#: src/components/login/auth-form.tsx
|
||||||
#: src/components/login/forgot-pass-form.tsx
|
#: src/components/login/forgot-pass-form.tsx
|
||||||
|
#: src/components/login/otp-forms.tsx
|
||||||
msgid "Email"
|
msgid "Email"
|
||||||
msgstr "Email"
|
msgstr "Email"
|
||||||
|
|
||||||
@@ -467,6 +480,10 @@ msgstr "Enter email address to reset password"
|
|||||||
msgid "Enter email address..."
|
msgid "Enter email address..."
|
||||||
msgstr "Enter email address..."
|
msgstr "Enter email address..."
|
||||||
|
|
||||||
|
#: src/components/login/otp-forms.tsx
|
||||||
|
msgid "Enter your one-time password."
|
||||||
|
msgstr "Enter your one-time password."
|
||||||
|
|
||||||
#: src/components/login/auth-form.tsx
|
#: src/components/login/auth-form.tsx
|
||||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||||
#: src/components/routes/settings/config-yaml.tsx
|
#: src/components/routes/settings/config-yaml.tsx
|
||||||
@@ -537,6 +554,12 @@ msgstr "For <0>{min}</0> {min, plural, one {minute} other {minutes}}"
|
|||||||
msgid "Forgot password?"
|
msgid "Forgot password?"
|
||||||
msgstr "Forgot password?"
|
msgstr "Forgot password?"
|
||||||
|
|
||||||
|
#: src/components/add-system.tsx
|
||||||
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
|
msgctxt "Button to copy install command"
|
||||||
|
msgid "FreeBSD command"
|
||||||
|
msgstr "FreeBSD command"
|
||||||
|
|
||||||
#. Context: Battery state
|
#. Context: Battery state
|
||||||
#: src/lib/i18n.ts
|
#: src/lib/i18n.ts
|
||||||
msgid "Full"
|
msgid "Full"
|
||||||
@@ -640,6 +663,7 @@ msgid "Manage display and notification preferences."
|
|||||||
msgstr "Manage display and notification preferences."
|
msgstr "Manage display and notification preferences."
|
||||||
|
|
||||||
#: src/components/add-system.tsx
|
#: src/components/add-system.tsx
|
||||||
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
msgid "Manual setup instructions"
|
msgid "Manual setup instructions"
|
||||||
msgstr "Manual setup instructions"
|
msgstr "Manual setup instructions"
|
||||||
|
|
||||||
@@ -675,6 +699,8 @@ msgid "Network traffic of docker containers"
|
|||||||
msgstr "Network traffic of docker containers"
|
msgstr "Network traffic of docker containers"
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
msgid "Network traffic of public interfaces"
|
msgid "Network traffic of public interfaces"
|
||||||
msgstr "Network traffic of public interfaces"
|
msgstr "Network traffic of public interfaces"
|
||||||
|
|
||||||
@@ -710,6 +736,10 @@ msgstr "OAuth 2 / OIDC support"
|
|||||||
msgid "On each restart, systems in the database will be updated to match the systems defined in the file."
|
msgid "On each restart, systems in the database will be updated to match the systems defined in the file."
|
||||||
msgstr "On each restart, systems in the database will be updated to match the systems defined in the file."
|
msgstr "On each restart, systems in the database will be updated to match the systems defined in the file."
|
||||||
|
|
||||||
|
#: src/components/login/auth-form.tsx
|
||||||
|
msgid "One-time password"
|
||||||
|
msgstr "One-time password"
|
||||||
|
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
@@ -828,6 +858,14 @@ msgstr "Read"
|
|||||||
msgid "Received"
|
msgid "Received"
|
||||||
msgstr "Received"
|
msgstr "Received"
|
||||||
|
|
||||||
|
#: src/components/login/login.tsx
|
||||||
|
msgid "Request a one-time password"
|
||||||
|
msgstr "Request a one-time password"
|
||||||
|
|
||||||
|
#: src/components/login/otp-forms.tsx
|
||||||
|
msgid "Request OTP"
|
||||||
|
msgstr "Request OTP"
|
||||||
|
|
||||||
#: src/components/login/forgot-pass-form.tsx
|
#: src/components/login/forgot-pass-form.tsx
|
||||||
msgid "Reset Password"
|
msgid "Reset Password"
|
||||||
msgstr "Reset Password"
|
msgstr "Reset Password"
|
||||||
@@ -883,10 +921,6 @@ msgstr "Sent"
|
|||||||
msgid "Set percentage thresholds for meter colors."
|
msgid "Set percentage thresholds for meter colors."
|
||||||
msgstr "Set percentage thresholds for meter colors."
|
msgstr "Set percentage thresholds for meter colors."
|
||||||
|
|
||||||
#: src/components/routes/settings/general.tsx
|
|
||||||
msgid "Sets the default time range for charts when a system is viewed."
|
|
||||||
msgstr "Sets the default time range for charts when a system is viewed."
|
|
||||||
|
|
||||||
#: src/components/command-palette.tsx
|
#: src/components/command-palette.tsx
|
||||||
#: src/components/command-palette.tsx
|
#: src/components/command-palette.tsx
|
||||||
#: src/components/routes/settings/layout.tsx
|
#: src/components/routes/settings/layout.tsx
|
||||||
@@ -997,6 +1031,10 @@ msgstr "Throughput of {extraFsName}"
|
|||||||
msgid "Throughput of root filesystem"
|
msgid "Throughput of root filesystem"
|
||||||
msgstr "Throughput of root filesystem"
|
msgstr "Throughput of root filesystem"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/general.tsx
|
||||||
|
msgid "Time format"
|
||||||
|
msgstr "Time format"
|
||||||
|
|
||||||
#: src/components/routes/settings/notifications.tsx
|
#: src/components/routes/settings/notifications.tsx
|
||||||
msgid "To email(s)"
|
msgid "To email(s)"
|
||||||
msgstr "To email(s)"
|
msgstr "To email(s)"
|
||||||
@@ -1029,6 +1067,14 @@ msgstr "Tokens allow agents to connect and register. Fingerprints are stable ide
|
|||||||
msgid "Tokens and fingerprints are used to authenticate WebSocket connections to the hub."
|
msgid "Tokens and fingerprints are used to authenticate WebSocket connections to the hub."
|
||||||
msgstr "Tokens and fingerprints are used to authenticate WebSocket connections to the hub."
|
msgstr "Tokens and fingerprints are used to authenticate WebSocket connections to the hub."
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Total data received for each interface"
|
||||||
|
msgstr "Total data received for each interface"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Total data sent for each interface"
|
||||||
|
msgstr "Total data sent for each interface"
|
||||||
|
|
||||||
#: src/lib/alerts.ts
|
#: src/lib/alerts.ts
|
||||||
msgid "Triggers when 1 minute load average exceeds a threshold"
|
msgid "Triggers when 1 minute load average exceeds a threshold"
|
||||||
msgstr "Triggers when 1 minute load average exceeds a threshold"
|
msgstr "Triggers when 1 minute load average exceeds a threshold"
|
||||||
@@ -1090,6 +1136,10 @@ msgstr "Up"
|
|||||||
msgid "Up ({upSystemsLength})"
|
msgid "Up ({upSystemsLength})"
|
||||||
msgstr "Up ({upSystemsLength})"
|
msgstr "Up ({upSystemsLength})"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Upload"
|
||||||
|
msgstr "Upload"
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
msgid "Uptime"
|
msgid "Uptime"
|
||||||
msgstr "Uptime"
|
msgstr "Uptime"
|
||||||
|
|||||||
@@ -363,6 +363,14 @@ msgstr "Creado"
|
|||||||
msgid "Critical (%)"
|
msgid "Critical (%)"
|
||||||
msgstr "Crítico (%)"
|
msgstr "Crítico (%)"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Cumulative Download"
|
||||||
|
msgstr "Descarga acumulativa"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Cumulative Upload"
|
||||||
|
msgstr "Carga acumulativa"
|
||||||
|
|
||||||
#. Context: Battery state
|
#. Context: Battery state
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
msgid "Current state"
|
msgid "Current state"
|
||||||
@@ -441,6 +449,10 @@ msgstr "Abajo"
|
|||||||
msgid "Down ({downSystemsLength})"
|
msgid "Down ({downSystemsLength})"
|
||||||
msgstr "Abajo ({downSystemsLength})"
|
msgstr "Abajo ({downSystemsLength})"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Download"
|
||||||
|
msgstr "Descargar"
|
||||||
|
|
||||||
#: src/components/alerts-history-columns.tsx
|
#: src/components/alerts-history-columns.tsx
|
||||||
msgid "Duration"
|
msgid "Duration"
|
||||||
msgstr "Duración"
|
msgstr "Duración"
|
||||||
@@ -452,6 +464,7 @@ msgstr "Editar"
|
|||||||
|
|
||||||
#: src/components/login/auth-form.tsx
|
#: src/components/login/auth-form.tsx
|
||||||
#: src/components/login/forgot-pass-form.tsx
|
#: src/components/login/forgot-pass-form.tsx
|
||||||
|
#: src/components/login/otp-forms.tsx
|
||||||
msgid "Email"
|
msgid "Email"
|
||||||
msgstr "Correo electrónico"
|
msgstr "Correo electrónico"
|
||||||
|
|
||||||
@@ -472,6 +485,10 @@ msgstr "Ingrese la dirección de correo electrónico para restablecer la contras
|
|||||||
msgid "Enter email address..."
|
msgid "Enter email address..."
|
||||||
msgstr "Ingrese dirección de correo..."
|
msgstr "Ingrese dirección de correo..."
|
||||||
|
|
||||||
|
#: src/components/login/otp-forms.tsx
|
||||||
|
msgid "Enter your one-time password."
|
||||||
|
msgstr "Ingrese su contraseña de un solo uso."
|
||||||
|
|
||||||
#: src/components/login/auth-form.tsx
|
#: src/components/login/auth-form.tsx
|
||||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||||
#: src/components/routes/settings/config-yaml.tsx
|
#: src/components/routes/settings/config-yaml.tsx
|
||||||
@@ -542,6 +559,12 @@ msgstr "Por <0>{min}</0> {min, plural, one {minuto} other {minutos}}"
|
|||||||
msgid "Forgot password?"
|
msgid "Forgot password?"
|
||||||
msgstr "¿Olvidó su contraseña?"
|
msgstr "¿Olvidó su contraseña?"
|
||||||
|
|
||||||
|
#: src/components/add-system.tsx
|
||||||
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
|
msgctxt "Button to copy install command"
|
||||||
|
msgid "FreeBSD command"
|
||||||
|
msgstr "Comando FreeBSD"
|
||||||
|
|
||||||
#. Context: Battery state
|
#. Context: Battery state
|
||||||
#: src/lib/i18n.ts
|
#: src/lib/i18n.ts
|
||||||
msgid "Full"
|
msgid "Full"
|
||||||
@@ -645,6 +668,7 @@ msgid "Manage display and notification preferences."
|
|||||||
msgstr "Administrar preferencias de visualización y notificaciones."
|
msgstr "Administrar preferencias de visualización y notificaciones."
|
||||||
|
|
||||||
#: src/components/add-system.tsx
|
#: src/components/add-system.tsx
|
||||||
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
msgid "Manual setup instructions"
|
msgid "Manual setup instructions"
|
||||||
msgstr "Instrucciones manuales de configuración"
|
msgstr "Instrucciones manuales de configuración"
|
||||||
|
|
||||||
@@ -680,6 +704,8 @@ msgid "Network traffic of docker containers"
|
|||||||
msgstr "Tráfico de red de los contenedores de Docker"
|
msgstr "Tráfico de red de los contenedores de Docker"
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
msgid "Network traffic of public interfaces"
|
msgid "Network traffic of public interfaces"
|
||||||
msgstr "Tráfico de red de interfaces públicas"
|
msgstr "Tráfico de red de interfaces públicas"
|
||||||
|
|
||||||
@@ -715,6 +741,10 @@ msgstr "Soporte para OAuth 2 / OIDC"
|
|||||||
msgid "On each restart, systems in the database will be updated to match the systems defined in the file."
|
msgid "On each restart, systems in the database will be updated to match the systems defined in the file."
|
||||||
msgstr "En cada reinicio, los sistemas en la base de datos se actualizarán para coincidir con los sistemas definidos en el archivo."
|
msgstr "En cada reinicio, los sistemas en la base de datos se actualizarán para coincidir con los sistemas definidos en el archivo."
|
||||||
|
|
||||||
|
#: src/components/login/auth-form.tsx
|
||||||
|
msgid "One-time password"
|
||||||
|
msgstr "Contraseña de un solo uso"
|
||||||
|
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
@@ -833,6 +863,14 @@ msgstr "Lectura"
|
|||||||
msgid "Received"
|
msgid "Received"
|
||||||
msgstr "Recibido"
|
msgstr "Recibido"
|
||||||
|
|
||||||
|
#: src/components/login/login.tsx
|
||||||
|
msgid "Request a one-time password"
|
||||||
|
msgstr "Solicitar contraseña de un solo uso"
|
||||||
|
|
||||||
|
#: src/components/login/otp-forms.tsx
|
||||||
|
msgid "Request OTP"
|
||||||
|
msgstr "Solicitar OTP"
|
||||||
|
|
||||||
#: src/components/login/forgot-pass-form.tsx
|
#: src/components/login/forgot-pass-form.tsx
|
||||||
msgid "Reset Password"
|
msgid "Reset Password"
|
||||||
msgstr "Restablecer Contraseña"
|
msgstr "Restablecer Contraseña"
|
||||||
@@ -888,10 +926,6 @@ msgstr "Enviado"
|
|||||||
msgid "Set percentage thresholds for meter colors."
|
msgid "Set percentage thresholds for meter colors."
|
||||||
msgstr "Establecer umbrales de porcentaje para los colores de los medidores."
|
msgstr "Establecer umbrales de porcentaje para los colores de los medidores."
|
||||||
|
|
||||||
#: src/components/routes/settings/general.tsx
|
|
||||||
msgid "Sets the default time range for charts when a system is viewed."
|
|
||||||
msgstr "Establece el rango de tiempo predeterminado para los gráficos cuando se visualiza un sistema."
|
|
||||||
|
|
||||||
#: src/components/command-palette.tsx
|
#: src/components/command-palette.tsx
|
||||||
#: src/components/command-palette.tsx
|
#: src/components/command-palette.tsx
|
||||||
#: src/components/routes/settings/layout.tsx
|
#: src/components/routes/settings/layout.tsx
|
||||||
@@ -1002,6 +1036,10 @@ msgstr "Rendimiento de {extraFsName}"
|
|||||||
msgid "Throughput of root filesystem"
|
msgid "Throughput of root filesystem"
|
||||||
msgstr "Rendimiento del sistema de archivos raíz"
|
msgstr "Rendimiento del sistema de archivos raíz"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/general.tsx
|
||||||
|
msgid "Time format"
|
||||||
|
msgstr "Formato de hora"
|
||||||
|
|
||||||
#: src/components/routes/settings/notifications.tsx
|
#: src/components/routes/settings/notifications.tsx
|
||||||
msgid "To email(s)"
|
msgid "To email(s)"
|
||||||
msgstr "A correo(s)"
|
msgstr "A correo(s)"
|
||||||
@@ -1034,6 +1072,14 @@ msgstr "Los tokens permiten que los agentes se conecten y registren. Las huellas
|
|||||||
msgid "Tokens and fingerprints are used to authenticate WebSocket connections to the hub."
|
msgid "Tokens and fingerprints are used to authenticate WebSocket connections to the hub."
|
||||||
msgstr "Los tokens y las huellas digitales se utilizan para autenticar las conexiones WebSocket al hub."
|
msgstr "Los tokens y las huellas digitales se utilizan para autenticar las conexiones WebSocket al hub."
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Total data received for each interface"
|
||||||
|
msgstr "Datos totales recibidos por cada interfaz"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Total data sent for each interface"
|
||||||
|
msgstr "Datos totales enviados por cada interfaz"
|
||||||
|
|
||||||
#: src/lib/alerts.ts
|
#: src/lib/alerts.ts
|
||||||
msgid "Triggers when 1 minute load average exceeds a threshold"
|
msgid "Triggers when 1 minute load average exceeds a threshold"
|
||||||
msgstr "Se activa cuando la carga media de 1 minuto supera un umbral"
|
msgstr "Se activa cuando la carga media de 1 minuto supera un umbral"
|
||||||
@@ -1095,6 +1141,10 @@ msgstr "Activo"
|
|||||||
msgid "Up ({upSystemsLength})"
|
msgid "Up ({upSystemsLength})"
|
||||||
msgstr "Activo ({upSystemsLength})"
|
msgstr "Activo ({upSystemsLength})"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Upload"
|
||||||
|
msgstr "Cargar"
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
msgid "Uptime"
|
msgid "Uptime"
|
||||||
msgstr "Tiempo de actividad"
|
msgstr "Tiempo de actividad"
|
||||||
|
|||||||
@@ -363,6 +363,14 @@ msgstr "ایجاد شده"
|
|||||||
msgid "Critical (%)"
|
msgid "Critical (%)"
|
||||||
msgstr "بحرانی (%)"
|
msgstr "بحرانی (%)"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Cumulative Download"
|
||||||
|
msgstr "دانلود تجمعی"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Cumulative Upload"
|
||||||
|
msgstr "آپلود تجمعی"
|
||||||
|
|
||||||
#. Context: Battery state
|
#. Context: Battery state
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
msgid "Current state"
|
msgid "Current state"
|
||||||
@@ -441,6 +449,10 @@ msgstr "قطع"
|
|||||||
msgid "Down ({downSystemsLength})"
|
msgid "Down ({downSystemsLength})"
|
||||||
msgstr "قطع ({downSystemsLength})"
|
msgstr "قطع ({downSystemsLength})"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Download"
|
||||||
|
msgstr "دانلود"
|
||||||
|
|
||||||
#: src/components/alerts-history-columns.tsx
|
#: src/components/alerts-history-columns.tsx
|
||||||
msgid "Duration"
|
msgid "Duration"
|
||||||
msgstr "مدت زمان"
|
msgstr "مدت زمان"
|
||||||
@@ -452,6 +464,7 @@ 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
|
||||||
msgid "Email"
|
msgid "Email"
|
||||||
msgstr "ایمیل"
|
msgstr "ایمیل"
|
||||||
|
|
||||||
@@ -472,6 +485,10 @@ msgstr "آدرس ایمیل را برای بازنشانی رمز عبور وا
|
|||||||
msgid "Enter email address..."
|
msgid "Enter email address..."
|
||||||
msgstr "آدرس ایمیل را وارد کنید..."
|
msgstr "آدرس ایمیل را وارد کنید..."
|
||||||
|
|
||||||
|
#: src/components/login/otp-forms.tsx
|
||||||
|
msgid "Enter your one-time password."
|
||||||
|
msgstr "رمز عبور یکبار مصرف خود را وارد کنید."
|
||||||
|
|
||||||
#: src/components/login/auth-form.tsx
|
#: src/components/login/auth-form.tsx
|
||||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||||
#: src/components/routes/settings/config-yaml.tsx
|
#: src/components/routes/settings/config-yaml.tsx
|
||||||
@@ -542,6 +559,12 @@ msgstr "برای <0>{min}</0> {min, plural, one {دقیقه} other {دقیقه}}
|
|||||||
msgid "Forgot password?"
|
msgid "Forgot password?"
|
||||||
msgstr "رمز عبور را فراموش کردهاید؟"
|
msgstr "رمز عبور را فراموش کردهاید؟"
|
||||||
|
|
||||||
|
#: src/components/add-system.tsx
|
||||||
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
|
msgctxt "Button to copy install command"
|
||||||
|
msgid "FreeBSD command"
|
||||||
|
msgstr "دستور FreeBSD"
|
||||||
|
|
||||||
#. Context: Battery state
|
#. Context: Battery state
|
||||||
#: src/lib/i18n.ts
|
#: src/lib/i18n.ts
|
||||||
msgid "Full"
|
msgid "Full"
|
||||||
@@ -645,6 +668,7 @@ msgid "Manage display and notification preferences."
|
|||||||
msgstr "مدیریت تنظیمات نمایش و اعلانها."
|
msgstr "مدیریت تنظیمات نمایش و اعلانها."
|
||||||
|
|
||||||
#: src/components/add-system.tsx
|
#: src/components/add-system.tsx
|
||||||
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
msgid "Manual setup instructions"
|
msgid "Manual setup instructions"
|
||||||
msgstr "دستورالعملهای راهاندازی دستی"
|
msgstr "دستورالعملهای راهاندازی دستی"
|
||||||
|
|
||||||
@@ -680,6 +704,8 @@ msgid "Network traffic of docker containers"
|
|||||||
msgstr "ترافیک شبکه کانتینرهای داکر"
|
msgstr "ترافیک شبکه کانتینرهای داکر"
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
msgid "Network traffic of public interfaces"
|
msgid "Network traffic of public interfaces"
|
||||||
msgstr "ترافیک شبکه رابطهای عمومی"
|
msgstr "ترافیک شبکه رابطهای عمومی"
|
||||||
|
|
||||||
@@ -715,6 +741,10 @@ msgstr "پشتیبانی از OAuth 2 / OIDC"
|
|||||||
msgid "On each restart, systems in the database will be updated to match the systems defined in the file."
|
msgid "On each restart, systems in the database will be updated to match the systems defined in the file."
|
||||||
msgstr "در هر بار راهاندازی مجدد، سیستمهای موجود در پایگاه داده با سیستمهای تعریف شده در فایل مطابقت داده میشوند."
|
msgstr "در هر بار راهاندازی مجدد، سیستمهای موجود در پایگاه داده با سیستمهای تعریف شده در فایل مطابقت داده میشوند."
|
||||||
|
|
||||||
|
#: src/components/login/auth-form.tsx
|
||||||
|
msgid "One-time password"
|
||||||
|
msgstr "رمز عبور یکبار مصرف"
|
||||||
|
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
@@ -833,6 +863,14 @@ msgstr "خواندن"
|
|||||||
msgid "Received"
|
msgid "Received"
|
||||||
msgstr "دریافت شد"
|
msgstr "دریافت شد"
|
||||||
|
|
||||||
|
#: src/components/login/login.tsx
|
||||||
|
msgid "Request a one-time password"
|
||||||
|
msgstr "درخواست رمز عبور یکبار مصرف"
|
||||||
|
|
||||||
|
#: src/components/login/otp-forms.tsx
|
||||||
|
msgid "Request OTP"
|
||||||
|
msgstr "درخواست OTP"
|
||||||
|
|
||||||
#: src/components/login/forgot-pass-form.tsx
|
#: src/components/login/forgot-pass-form.tsx
|
||||||
msgid "Reset Password"
|
msgid "Reset Password"
|
||||||
msgstr "بازنشانی رمز عبور"
|
msgstr "بازنشانی رمز عبور"
|
||||||
@@ -888,10 +926,6 @@ msgstr "ارسال شد"
|
|||||||
msgid "Set percentage thresholds for meter colors."
|
msgid "Set percentage thresholds for meter colors."
|
||||||
msgstr "آستانه های درصدی را برای رنگ های متر تنظیم کنید."
|
msgstr "آستانه های درصدی را برای رنگ های متر تنظیم کنید."
|
||||||
|
|
||||||
#: src/components/routes/settings/general.tsx
|
|
||||||
msgid "Sets the default time range for charts when a system is viewed."
|
|
||||||
msgstr "بازه زمانی پیشفرض برای نمودارها هنگام مشاهده یک سیستم را تعیین میکند."
|
|
||||||
|
|
||||||
#: src/components/command-palette.tsx
|
#: src/components/command-palette.tsx
|
||||||
#: src/components/command-palette.tsx
|
#: src/components/command-palette.tsx
|
||||||
#: src/components/routes/settings/layout.tsx
|
#: src/components/routes/settings/layout.tsx
|
||||||
@@ -1002,6 +1036,10 @@ msgstr "توان عملیاتی {extraFsName}"
|
|||||||
msgid "Throughput of root filesystem"
|
msgid "Throughput of root filesystem"
|
||||||
msgstr "توان عملیاتی سیستم فایل ریشه"
|
msgstr "توان عملیاتی سیستم فایل ریشه"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/general.tsx
|
||||||
|
msgid "Time format"
|
||||||
|
msgstr "فرمت زمان"
|
||||||
|
|
||||||
#: src/components/routes/settings/notifications.tsx
|
#: src/components/routes/settings/notifications.tsx
|
||||||
msgid "To email(s)"
|
msgid "To email(s)"
|
||||||
msgstr "به ایمیل(ها)"
|
msgstr "به ایمیل(ها)"
|
||||||
@@ -1034,6 +1072,14 @@ msgstr "توکنها به عاملها اجازه اتصال و ثبت
|
|||||||
msgid "Tokens and fingerprints are used to authenticate WebSocket connections to the hub."
|
msgid "Tokens and fingerprints are used to authenticate WebSocket connections to the hub."
|
||||||
msgstr "توکنها و اثرات انگشت برای احراز هویت اتصالات WebSocket به هاب استفاده میشوند."
|
msgstr "توکنها و اثرات انگشت برای احراز هویت اتصالات WebSocket به هاب استفاده میشوند."
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Total data received for each interface"
|
||||||
|
msgstr "دادههای کل دریافت شده برای هر رابط"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Total data sent for each interface"
|
||||||
|
msgstr "دادههای کل ارسال شده برای هر رابط"
|
||||||
|
|
||||||
#: src/lib/alerts.ts
|
#: src/lib/alerts.ts
|
||||||
msgid "Triggers when 1 minute load average exceeds a threshold"
|
msgid "Triggers when 1 minute load average exceeds a threshold"
|
||||||
msgstr "هنگامی که میانگین بار ۱ دقیقهای از یک آستانه فراتر رود، فعال میشود"
|
msgstr "هنگامی که میانگین بار ۱ دقیقهای از یک آستانه فراتر رود، فعال میشود"
|
||||||
@@ -1095,6 +1141,10 @@ msgstr "فعال"
|
|||||||
msgid "Up ({upSystemsLength})"
|
msgid "Up ({upSystemsLength})"
|
||||||
msgstr "فعال ({upSystemsLength})"
|
msgstr "فعال ({upSystemsLength})"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Upload"
|
||||||
|
msgstr "آپلود"
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
msgid "Uptime"
|
msgid "Uptime"
|
||||||
msgstr "آپتایم"
|
msgstr "آپتایم"
|
||||||
|
|||||||
@@ -363,6 +363,14 @@ msgstr ""
|
|||||||
msgid "Critical (%)"
|
msgid "Critical (%)"
|
||||||
msgstr "Critique (%)"
|
msgstr "Critique (%)"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Cumulative Download"
|
||||||
|
msgstr "Téléchargement cumulatif"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Cumulative Upload"
|
||||||
|
msgstr "Téléversement cumulatif"
|
||||||
|
|
||||||
#. Context: Battery state
|
#. Context: Battery state
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
msgid "Current state"
|
msgid "Current state"
|
||||||
@@ -441,6 +449,10 @@ msgstr "Injoignable"
|
|||||||
msgid "Down ({downSystemsLength})"
|
msgid "Down ({downSystemsLength})"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Download"
|
||||||
|
msgstr "Télécharger"
|
||||||
|
|
||||||
#: src/components/alerts-history-columns.tsx
|
#: src/components/alerts-history-columns.tsx
|
||||||
msgid "Duration"
|
msgid "Duration"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -452,6 +464,7 @@ msgstr "Éditer"
|
|||||||
|
|
||||||
#: src/components/login/auth-form.tsx
|
#: src/components/login/auth-form.tsx
|
||||||
#: src/components/login/forgot-pass-form.tsx
|
#: src/components/login/forgot-pass-form.tsx
|
||||||
|
#: src/components/login/otp-forms.tsx
|
||||||
msgid "Email"
|
msgid "Email"
|
||||||
msgstr "Email"
|
msgstr "Email"
|
||||||
|
|
||||||
@@ -472,6 +485,10 @@ msgstr "Entrez l'adresse email pour réinitialiser le mot de passe"
|
|||||||
msgid "Enter email address..."
|
msgid "Enter email address..."
|
||||||
msgstr "Entrez l'adresse email..."
|
msgstr "Entrez l'adresse email..."
|
||||||
|
|
||||||
|
#: src/components/login/otp-forms.tsx
|
||||||
|
msgid "Enter your one-time password."
|
||||||
|
msgstr "Entrez votre mot de passe à usage unique."
|
||||||
|
|
||||||
#: src/components/login/auth-form.tsx
|
#: src/components/login/auth-form.tsx
|
||||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||||
#: src/components/routes/settings/config-yaml.tsx
|
#: src/components/routes/settings/config-yaml.tsx
|
||||||
@@ -542,6 +559,12 @@ msgstr "Pour <0>{min}</0> {min, plural, one {minute} other {minutes}}"
|
|||||||
msgid "Forgot password?"
|
msgid "Forgot password?"
|
||||||
msgstr "Mot de passe oublié ?"
|
msgstr "Mot de passe oublié ?"
|
||||||
|
|
||||||
|
#: src/components/add-system.tsx
|
||||||
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
|
msgctxt "Button to copy install command"
|
||||||
|
msgid "FreeBSD command"
|
||||||
|
msgstr "Commande FreeBSD"
|
||||||
|
|
||||||
#. Context: Battery state
|
#. Context: Battery state
|
||||||
#: src/lib/i18n.ts
|
#: src/lib/i18n.ts
|
||||||
msgid "Full"
|
msgid "Full"
|
||||||
@@ -645,6 +668,7 @@ msgid "Manage display and notification preferences."
|
|||||||
msgstr "Gérer les préférences d'affichage et de notification."
|
msgstr "Gérer les préférences d'affichage et de notification."
|
||||||
|
|
||||||
#: src/components/add-system.tsx
|
#: src/components/add-system.tsx
|
||||||
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
msgid "Manual setup instructions"
|
msgid "Manual setup instructions"
|
||||||
msgstr "Guide pour une installation manuelle"
|
msgstr "Guide pour une installation manuelle"
|
||||||
|
|
||||||
@@ -680,6 +704,8 @@ msgid "Network traffic of docker containers"
|
|||||||
msgstr "Trafic réseau des conteneurs Docker"
|
msgstr "Trafic réseau des conteneurs Docker"
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
msgid "Network traffic of public interfaces"
|
msgid "Network traffic of public interfaces"
|
||||||
msgstr "Trafic réseau des interfaces publiques"
|
msgstr "Trafic réseau des interfaces publiques"
|
||||||
|
|
||||||
@@ -715,6 +741,10 @@ msgstr "Support OAuth 2 / OIDC"
|
|||||||
msgid "On each restart, systems in the database will be updated to match the systems defined in the file."
|
msgid "On each restart, systems in the database will be updated to match the systems defined in the file."
|
||||||
msgstr "À chaque redémarrage, les systèmes dans la base de données seront mis à jour pour correspondre aux systèmes définis dans le fichier."
|
msgstr "À chaque redémarrage, les systèmes dans la base de données seront mis à jour pour correspondre aux systèmes définis dans le fichier."
|
||||||
|
|
||||||
|
#: src/components/login/auth-form.tsx
|
||||||
|
msgid "One-time password"
|
||||||
|
msgstr "Mot de passe à usage unique"
|
||||||
|
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
@@ -833,6 +863,14 @@ msgstr "Lecture"
|
|||||||
msgid "Received"
|
msgid "Received"
|
||||||
msgstr "Reçu"
|
msgstr "Reçu"
|
||||||
|
|
||||||
|
#: src/components/login/login.tsx
|
||||||
|
msgid "Request a one-time password"
|
||||||
|
msgstr "Demander un mot de passe à usage unique"
|
||||||
|
|
||||||
|
#: src/components/login/otp-forms.tsx
|
||||||
|
msgid "Request OTP"
|
||||||
|
msgstr "Demander OTP"
|
||||||
|
|
||||||
#: src/components/login/forgot-pass-form.tsx
|
#: src/components/login/forgot-pass-form.tsx
|
||||||
msgid "Reset Password"
|
msgid "Reset Password"
|
||||||
msgstr "Réinitialiser le mot de passe"
|
msgstr "Réinitialiser le mot de passe"
|
||||||
@@ -888,10 +926,6 @@ msgstr "Envoyé"
|
|||||||
msgid "Set percentage thresholds for meter colors."
|
msgid "Set percentage thresholds for meter colors."
|
||||||
msgstr "Définir des seuils de pourcentage pour les couleurs des compteurs."
|
msgstr "Définir des seuils de pourcentage pour les couleurs des compteurs."
|
||||||
|
|
||||||
#: src/components/routes/settings/general.tsx
|
|
||||||
msgid "Sets the default time range for charts when a system is viewed."
|
|
||||||
msgstr "Définit la plage de temps par défaut pour les graphiques lorsqu'un système est consulté."
|
|
||||||
|
|
||||||
#: src/components/command-palette.tsx
|
#: src/components/command-palette.tsx
|
||||||
#: src/components/command-palette.tsx
|
#: src/components/command-palette.tsx
|
||||||
#: src/components/routes/settings/layout.tsx
|
#: src/components/routes/settings/layout.tsx
|
||||||
@@ -1002,6 +1036,10 @@ msgstr "Débit de {extraFsName}"
|
|||||||
msgid "Throughput of root filesystem"
|
msgid "Throughput of root filesystem"
|
||||||
msgstr "Débit du système de fichiers racine"
|
msgstr "Débit du système de fichiers racine"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/general.tsx
|
||||||
|
msgid "Time format"
|
||||||
|
msgstr "Format d'heure"
|
||||||
|
|
||||||
#: src/components/routes/settings/notifications.tsx
|
#: src/components/routes/settings/notifications.tsx
|
||||||
msgid "To email(s)"
|
msgid "To email(s)"
|
||||||
msgstr "Aux email(s)"
|
msgstr "Aux email(s)"
|
||||||
@@ -1034,6 +1072,14 @@ msgstr "Les tokens permettent aux agents de se connecter et de s'enregistrer. Le
|
|||||||
msgid "Tokens and fingerprints are used to authenticate WebSocket connections to the hub."
|
msgid "Tokens and fingerprints are used to authenticate WebSocket connections to the hub."
|
||||||
msgstr "Les tokens et les empreintes sont utilisés pour authentifier les connexions WebSocket vers le hub."
|
msgstr "Les tokens et les empreintes sont utilisés pour authentifier les connexions WebSocket vers le hub."
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Total data received for each interface"
|
||||||
|
msgstr "Données totales reçues pour chaque interface"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Total data sent for each interface"
|
||||||
|
msgstr "Données totales envoyées pour chaque interface"
|
||||||
|
|
||||||
#: src/lib/alerts.ts
|
#: src/lib/alerts.ts
|
||||||
msgid "Triggers when 1 minute load average exceeds a threshold"
|
msgid "Triggers when 1 minute load average exceeds a threshold"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -1095,6 +1141,10 @@ msgstr "Joignable"
|
|||||||
msgid "Up ({upSystemsLength})"
|
msgid "Up ({upSystemsLength})"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Upload"
|
||||||
|
msgstr "Téléverser"
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
msgid "Uptime"
|
msgid "Uptime"
|
||||||
msgstr "Temps de fonctionnement"
|
msgstr "Temps de fonctionnement"
|
||||||
|
|||||||
@@ -363,6 +363,14 @@ msgstr ""
|
|||||||
msgid "Critical (%)"
|
msgid "Critical (%)"
|
||||||
msgstr "Kritično (%)"
|
msgstr "Kritično (%)"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Cumulative Download"
|
||||||
|
msgstr "Kumulativno preuzimanje"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Cumulative Upload"
|
||||||
|
msgstr "Kumulativno otpremanje"
|
||||||
|
|
||||||
#. Context: Battery state
|
#. Context: Battery state
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
msgid "Current state"
|
msgid "Current state"
|
||||||
@@ -441,6 +449,10 @@ msgstr ""
|
|||||||
msgid "Down ({downSystemsLength})"
|
msgid "Down ({downSystemsLength})"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Download"
|
||||||
|
msgstr "Preuzmi"
|
||||||
|
|
||||||
#: src/components/alerts-history-columns.tsx
|
#: src/components/alerts-history-columns.tsx
|
||||||
msgid "Duration"
|
msgid "Duration"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -452,6 +464,7 @@ 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
|
||||||
msgid "Email"
|
msgid "Email"
|
||||||
msgstr "Email"
|
msgstr "Email"
|
||||||
|
|
||||||
@@ -472,6 +485,10 @@ msgstr "Unesite email adresu za resetiranje lozinke"
|
|||||||
msgid "Enter email address..."
|
msgid "Enter email address..."
|
||||||
msgstr "Unesite email adresu..."
|
msgstr "Unesite email adresu..."
|
||||||
|
|
||||||
|
#: src/components/login/otp-forms.tsx
|
||||||
|
msgid "Enter your one-time password."
|
||||||
|
msgstr "Unesite Vašu jednokratnu lozinku."
|
||||||
|
|
||||||
#: src/components/login/auth-form.tsx
|
#: src/components/login/auth-form.tsx
|
||||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||||
#: src/components/routes/settings/config-yaml.tsx
|
#: src/components/routes/settings/config-yaml.tsx
|
||||||
@@ -542,6 +559,12 @@ msgstr "Za <0>{min}</0> {min, plural, one {minutu} other {minute}}"
|
|||||||
msgid "Forgot password?"
|
msgid "Forgot password?"
|
||||||
msgstr "Zaboravljena lozinka?"
|
msgstr "Zaboravljena lozinka?"
|
||||||
|
|
||||||
|
#: src/components/add-system.tsx
|
||||||
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
|
msgctxt "Button to copy install command"
|
||||||
|
msgid "FreeBSD command"
|
||||||
|
msgstr "FreeBSD naredba"
|
||||||
|
|
||||||
#. Context: Battery state
|
#. Context: Battery state
|
||||||
#: src/lib/i18n.ts
|
#: src/lib/i18n.ts
|
||||||
msgid "Full"
|
msgid "Full"
|
||||||
@@ -645,6 +668,7 @@ msgid "Manage display and notification preferences."
|
|||||||
msgstr "Upravljajte postavkama prikaza i obavijesti."
|
msgstr "Upravljajte postavkama prikaza i obavijesti."
|
||||||
|
|
||||||
#: src/components/add-system.tsx
|
#: src/components/add-system.tsx
|
||||||
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
msgid "Manual setup instructions"
|
msgid "Manual setup instructions"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -680,6 +704,8 @@ msgid "Network traffic of docker containers"
|
|||||||
msgstr "Mrežni promet Docker spremnika"
|
msgstr "Mrežni promet Docker spremnika"
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
msgid "Network traffic of public interfaces"
|
msgid "Network traffic of public interfaces"
|
||||||
msgstr "Mrežni promet javnih sučelja"
|
msgstr "Mrežni promet javnih sučelja"
|
||||||
|
|
||||||
@@ -715,6 +741,10 @@ msgstr "Podrška za OAuth 2 / OIDC"
|
|||||||
msgid "On each restart, systems in the database will be updated to match the systems defined in the file."
|
msgid "On each restart, systems in the database will be updated to match the systems defined in the file."
|
||||||
msgstr "Prilikom svakog ponovnog pokretanja, sustavi u bazi podataka biti će ažurirani kako bi odgovarali sustavima definiranim u datoteci."
|
msgstr "Prilikom svakog ponovnog pokretanja, sustavi u bazi podataka biti će ažurirani kako bi odgovarali sustavima definiranim u datoteci."
|
||||||
|
|
||||||
|
#: src/components/login/auth-form.tsx
|
||||||
|
msgid "One-time password"
|
||||||
|
msgstr "Jednokratna lozinka"
|
||||||
|
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
@@ -833,6 +863,14 @@ msgstr "Pročitaj"
|
|||||||
msgid "Received"
|
msgid "Received"
|
||||||
msgstr "Primljeno"
|
msgstr "Primljeno"
|
||||||
|
|
||||||
|
#: src/components/login/login.tsx
|
||||||
|
msgid "Request a one-time password"
|
||||||
|
msgstr "Zatraži jednokratnu lozinku"
|
||||||
|
|
||||||
|
#: src/components/login/otp-forms.tsx
|
||||||
|
msgid "Request OTP"
|
||||||
|
msgstr "Zatraži OTP"
|
||||||
|
|
||||||
#: src/components/login/forgot-pass-form.tsx
|
#: src/components/login/forgot-pass-form.tsx
|
||||||
msgid "Reset Password"
|
msgid "Reset Password"
|
||||||
msgstr "Resetiraj Lozinku"
|
msgstr "Resetiraj Lozinku"
|
||||||
@@ -888,10 +926,6 @@ msgstr "Poslano"
|
|||||||
msgid "Set percentage thresholds for meter colors."
|
msgid "Set percentage thresholds for meter colors."
|
||||||
msgstr "Postavite pragove postotka za boje mjerača."
|
msgstr "Postavite pragove postotka za boje mjerača."
|
||||||
|
|
||||||
#: src/components/routes/settings/general.tsx
|
|
||||||
msgid "Sets the default time range for charts when a system is viewed."
|
|
||||||
msgstr "Postavlja zadani vremenski raspon za grafikone kada se sustav gleda."
|
|
||||||
|
|
||||||
#: src/components/command-palette.tsx
|
#: src/components/command-palette.tsx
|
||||||
#: src/components/command-palette.tsx
|
#: src/components/command-palette.tsx
|
||||||
#: src/components/routes/settings/layout.tsx
|
#: src/components/routes/settings/layout.tsx
|
||||||
@@ -1002,6 +1036,10 @@ msgstr "Protok {extraFsName}"
|
|||||||
msgid "Throughput of root filesystem"
|
msgid "Throughput of root filesystem"
|
||||||
msgstr "Protok root datotečnog sustava"
|
msgstr "Protok root datotečnog sustava"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/general.tsx
|
||||||
|
msgid "Time format"
|
||||||
|
msgstr "Format vremena"
|
||||||
|
|
||||||
#: src/components/routes/settings/notifications.tsx
|
#: src/components/routes/settings/notifications.tsx
|
||||||
msgid "To email(s)"
|
msgid "To email(s)"
|
||||||
msgstr "Primaoci e-pošte"
|
msgstr "Primaoci e-pošte"
|
||||||
@@ -1034,6 +1072,14 @@ msgstr ""
|
|||||||
msgid "Tokens and fingerprints are used to authenticate WebSocket connections to the hub."
|
msgid "Tokens and fingerprints are used to authenticate WebSocket connections to the hub."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Total data received for each interface"
|
||||||
|
msgstr "Ukupni podaci primljeni za svako sučelje"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Total data sent for each interface"
|
||||||
|
msgstr "Ukupni podaci poslani za svako sučelje"
|
||||||
|
|
||||||
#: src/lib/alerts.ts
|
#: src/lib/alerts.ts
|
||||||
msgid "Triggers when 1 minute load average exceeds a threshold"
|
msgid "Triggers when 1 minute load average exceeds a threshold"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -1095,6 +1141,10 @@ msgstr ""
|
|||||||
msgid "Up ({upSystemsLength})"
|
msgid "Up ({upSystemsLength})"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Upload"
|
||||||
|
msgstr "Otpremi"
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
msgid "Uptime"
|
msgid "Uptime"
|
||||||
msgstr "Vrijeme rada"
|
msgstr "Vrijeme rada"
|
||||||
|
|||||||
@@ -363,6 +363,14 @@ msgstr ""
|
|||||||
msgid "Critical (%)"
|
msgid "Critical (%)"
|
||||||
msgstr "Kritikus (%)"
|
msgstr "Kritikus (%)"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Cumulative Download"
|
||||||
|
msgstr "Kumulatív letöltés"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Cumulative Upload"
|
||||||
|
msgstr "Kumulatív feltöltés"
|
||||||
|
|
||||||
#. Context: Battery state
|
#. Context: Battery state
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
msgid "Current state"
|
msgid "Current state"
|
||||||
@@ -441,6 +449,10 @@ msgstr ""
|
|||||||
msgid "Down ({downSystemsLength})"
|
msgid "Down ({downSystemsLength})"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Download"
|
||||||
|
msgstr "Letöltés"
|
||||||
|
|
||||||
#: src/components/alerts-history-columns.tsx
|
#: src/components/alerts-history-columns.tsx
|
||||||
msgid "Duration"
|
msgid "Duration"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -452,6 +464,7 @@ 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
|
||||||
msgid "Email"
|
msgid "Email"
|
||||||
msgstr "Email"
|
msgstr "Email"
|
||||||
|
|
||||||
@@ -472,6 +485,10 @@ msgstr "E-mail cím megadása a jelszó visszaállításához"
|
|||||||
msgid "Enter email address..."
|
msgid "Enter email address..."
|
||||||
msgstr "Adja meg az e-mail címet..."
|
msgstr "Adja meg az e-mail címet..."
|
||||||
|
|
||||||
|
#: src/components/login/otp-forms.tsx
|
||||||
|
msgid "Enter your one-time password."
|
||||||
|
msgstr "Adja meg az egyszeri jelszavát."
|
||||||
|
|
||||||
#: src/components/login/auth-form.tsx
|
#: src/components/login/auth-form.tsx
|
||||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||||
#: src/components/routes/settings/config-yaml.tsx
|
#: src/components/routes/settings/config-yaml.tsx
|
||||||
@@ -542,6 +559,12 @@ msgstr "A <0>{min}</0> {min, plural, one {perc} other {percek}}"
|
|||||||
msgid "Forgot password?"
|
msgid "Forgot password?"
|
||||||
msgstr "Elfelejtette a jelszavát?"
|
msgstr "Elfelejtette a jelszavát?"
|
||||||
|
|
||||||
|
#: src/components/add-system.tsx
|
||||||
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
|
msgctxt "Button to copy install command"
|
||||||
|
msgid "FreeBSD command"
|
||||||
|
msgstr "FreeBSD parancs"
|
||||||
|
|
||||||
#. Context: Battery state
|
#. Context: Battery state
|
||||||
#: src/lib/i18n.ts
|
#: src/lib/i18n.ts
|
||||||
msgid "Full"
|
msgid "Full"
|
||||||
@@ -645,6 +668,7 @@ msgid "Manage display and notification preferences."
|
|||||||
msgstr "A megjelenítési és értesítési beállítások kezelése."
|
msgstr "A megjelenítési és értesítési beállítások kezelése."
|
||||||
|
|
||||||
#: src/components/add-system.tsx
|
#: src/components/add-system.tsx
|
||||||
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
msgid "Manual setup instructions"
|
msgid "Manual setup instructions"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -680,6 +704,8 @@ msgid "Network traffic of docker containers"
|
|||||||
msgstr "Docker konténerek hálózati forgalma"
|
msgstr "Docker konténerek hálózati forgalma"
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
msgid "Network traffic of public interfaces"
|
msgid "Network traffic of public interfaces"
|
||||||
msgstr "Nyilvános interfészek hálózati forgalma"
|
msgstr "Nyilvános interfészek hálózati forgalma"
|
||||||
|
|
||||||
@@ -715,6 +741,10 @@ msgstr "OAuth 2 / OIDC támogatás"
|
|||||||
msgid "On each restart, systems in the database will be updated to match the systems defined in the file."
|
msgid "On each restart, systems in the database will be updated to match the systems defined in the file."
|
||||||
msgstr "Minden újraindításkor az adatbázisban lévő rendszerek frissítésre kerülnek, hogy megfeleljenek a fájlban meghatározott rendszereknek."
|
msgstr "Minden újraindításkor az adatbázisban lévő rendszerek frissítésre kerülnek, hogy megfeleljenek a fájlban meghatározott rendszereknek."
|
||||||
|
|
||||||
|
#: src/components/login/auth-form.tsx
|
||||||
|
msgid "One-time password"
|
||||||
|
msgstr "Egyszeri jelszó"
|
||||||
|
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
@@ -833,6 +863,14 @@ msgstr "Olvasás"
|
|||||||
msgid "Received"
|
msgid "Received"
|
||||||
msgstr "Fogadott"
|
msgstr "Fogadott"
|
||||||
|
|
||||||
|
#: src/components/login/login.tsx
|
||||||
|
msgid "Request a one-time password"
|
||||||
|
msgstr "Egyszeri jelszó kérése"
|
||||||
|
|
||||||
|
#: src/components/login/otp-forms.tsx
|
||||||
|
msgid "Request OTP"
|
||||||
|
msgstr "OTP kérése"
|
||||||
|
|
||||||
#: src/components/login/forgot-pass-form.tsx
|
#: src/components/login/forgot-pass-form.tsx
|
||||||
msgid "Reset Password"
|
msgid "Reset Password"
|
||||||
msgstr "Jelszó visszaállítása"
|
msgstr "Jelszó visszaállítása"
|
||||||
@@ -888,10 +926,6 @@ msgstr "Elküldve"
|
|||||||
msgid "Set percentage thresholds for meter colors."
|
msgid "Set percentage thresholds for meter colors."
|
||||||
msgstr "Százalékos küszöbértékek beállítása a mérőszínekhez."
|
msgstr "Százalékos küszöbértékek beállítása a mérőszínekhez."
|
||||||
|
|
||||||
#: src/components/routes/settings/general.tsx
|
|
||||||
msgid "Sets the default time range for charts when a system is viewed."
|
|
||||||
msgstr "Beállítja az alapértelmezett időtartamot a diagramokhoz, amikor egy rendszert néznek."
|
|
||||||
|
|
||||||
#: src/components/command-palette.tsx
|
#: src/components/command-palette.tsx
|
||||||
#: src/components/command-palette.tsx
|
#: src/components/command-palette.tsx
|
||||||
#: src/components/routes/settings/layout.tsx
|
#: src/components/routes/settings/layout.tsx
|
||||||
@@ -1002,6 +1036,10 @@ msgstr "A {extraFsName} átviteli teljesítménye"
|
|||||||
msgid "Throughput of root filesystem"
|
msgid "Throughput of root filesystem"
|
||||||
msgstr "A gyökér fájlrendszer átviteli teljesítménye"
|
msgstr "A gyökér fájlrendszer átviteli teljesítménye"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/general.tsx
|
||||||
|
msgid "Time format"
|
||||||
|
msgstr "Időformátum"
|
||||||
|
|
||||||
#: src/components/routes/settings/notifications.tsx
|
#: src/components/routes/settings/notifications.tsx
|
||||||
msgid "To email(s)"
|
msgid "To email(s)"
|
||||||
msgstr "E-mailben"
|
msgstr "E-mailben"
|
||||||
@@ -1034,6 +1072,14 @@ msgstr ""
|
|||||||
msgid "Tokens and fingerprints are used to authenticate WebSocket connections to the hub."
|
msgid "Tokens and fingerprints are used to authenticate WebSocket connections to the hub."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Total data received for each interface"
|
||||||
|
msgstr "Összes fogadott adat minden interfészenként"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Total data sent for each interface"
|
||||||
|
msgstr "Összes elküldött adat minden interfészenként"
|
||||||
|
|
||||||
#: src/lib/alerts.ts
|
#: src/lib/alerts.ts
|
||||||
msgid "Triggers when 1 minute load average exceeds a threshold"
|
msgid "Triggers when 1 minute load average exceeds a threshold"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -1095,6 +1141,10 @@ msgstr ""
|
|||||||
msgid "Up ({upSystemsLength})"
|
msgid "Up ({upSystemsLength})"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Upload"
|
||||||
|
msgstr "Feltöltés"
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
msgid "Uptime"
|
msgid "Uptime"
|
||||||
msgstr "Üzemidő"
|
msgstr "Üzemidő"
|
||||||
|
|||||||
@@ -363,6 +363,14 @@ msgstr ""
|
|||||||
msgid "Critical (%)"
|
msgid "Critical (%)"
|
||||||
msgstr "Kritískt (%)"
|
msgstr "Kritískt (%)"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Cumulative Download"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Cumulative Upload"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#. Context: Battery state
|
#. Context: Battery state
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
msgid "Current state"
|
msgid "Current state"
|
||||||
@@ -441,6 +449,10 @@ msgstr ""
|
|||||||
msgid "Down ({downSystemsLength})"
|
msgid "Down ({downSystemsLength})"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Download"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/components/alerts-history-columns.tsx
|
#: src/components/alerts-history-columns.tsx
|
||||||
msgid "Duration"
|
msgid "Duration"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -452,6 +464,7 @@ 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
|
||||||
msgid "Email"
|
msgid "Email"
|
||||||
msgstr "Netfang"
|
msgstr "Netfang"
|
||||||
|
|
||||||
@@ -472,6 +485,10 @@ msgstr "Settu netfang til að endursetja lykilorð"
|
|||||||
msgid "Enter email address..."
|
msgid "Enter email address..."
|
||||||
msgstr "Settu inn Netfang..."
|
msgstr "Settu inn Netfang..."
|
||||||
|
|
||||||
|
#: src/components/login/otp-forms.tsx
|
||||||
|
msgid "Enter your one-time password."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/components/login/auth-form.tsx
|
#: src/components/login/auth-form.tsx
|
||||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||||
#: src/components/routes/settings/config-yaml.tsx
|
#: src/components/routes/settings/config-yaml.tsx
|
||||||
@@ -542,6 +559,12 @@ msgstr ""
|
|||||||
msgid "Forgot password?"
|
msgid "Forgot password?"
|
||||||
msgstr "Gleymt lykilorð?"
|
msgstr "Gleymt lykilorð?"
|
||||||
|
|
||||||
|
#: src/components/add-system.tsx
|
||||||
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
|
msgctxt "Button to copy install command"
|
||||||
|
msgid "FreeBSD command"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#. Context: Battery state
|
#. Context: Battery state
|
||||||
#: src/lib/i18n.ts
|
#: src/lib/i18n.ts
|
||||||
msgid "Full"
|
msgid "Full"
|
||||||
@@ -645,6 +668,7 @@ msgid "Manage display and notification preferences."
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/components/add-system.tsx
|
#: src/components/add-system.tsx
|
||||||
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
msgid "Manual setup instructions"
|
msgid "Manual setup instructions"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -680,6 +704,8 @@ msgid "Network traffic of docker containers"
|
|||||||
msgstr "Net traffík docker kerfa"
|
msgstr "Net traffík docker kerfa"
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
msgid "Network traffic of public interfaces"
|
msgid "Network traffic of public interfaces"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -715,6 +741,10 @@ msgstr "OAuth 2 / OIDC stuðningur"
|
|||||||
msgid "On each restart, systems in the database will be updated to match the systems defined in the file."
|
msgid "On each restart, systems in the database will be updated to match the systems defined in the file."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/components/login/auth-form.tsx
|
||||||
|
msgid "One-time password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
@@ -833,6 +863,14 @@ msgstr "Lesa"
|
|||||||
msgid "Received"
|
msgid "Received"
|
||||||
msgstr "Móttekið"
|
msgstr "Móttekið"
|
||||||
|
|
||||||
|
#: src/components/login/login.tsx
|
||||||
|
msgid "Request a one-time password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/components/login/otp-forms.tsx
|
||||||
|
msgid "Request OTP"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/components/login/forgot-pass-form.tsx
|
#: src/components/login/forgot-pass-form.tsx
|
||||||
msgid "Reset Password"
|
msgid "Reset Password"
|
||||||
msgstr "Endurstilla lykilorð"
|
msgstr "Endurstilla lykilorð"
|
||||||
@@ -888,10 +926,6 @@ msgstr "Sent"
|
|||||||
msgid "Set percentage thresholds for meter colors."
|
msgid "Set percentage thresholds for meter colors."
|
||||||
msgstr "Stilltu prósentuþröskuld fyrir mælaliti."
|
msgstr "Stilltu prósentuþröskuld fyrir mælaliti."
|
||||||
|
|
||||||
#: src/components/routes/settings/general.tsx
|
|
||||||
msgid "Sets the default time range for charts when a system is viewed."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/components/command-palette.tsx
|
#: src/components/command-palette.tsx
|
||||||
#: src/components/command-palette.tsx
|
#: src/components/command-palette.tsx
|
||||||
#: src/components/routes/settings/layout.tsx
|
#: src/components/routes/settings/layout.tsx
|
||||||
@@ -1002,6 +1036,10 @@ msgstr ""
|
|||||||
msgid "Throughput of root filesystem"
|
msgid "Throughput of root filesystem"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/components/routes/settings/general.tsx
|
||||||
|
msgid "Time format"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/components/routes/settings/notifications.tsx
|
#: src/components/routes/settings/notifications.tsx
|
||||||
msgid "To email(s)"
|
msgid "To email(s)"
|
||||||
msgstr "Til tölvupósta"
|
msgstr "Til tölvupósta"
|
||||||
@@ -1034,6 +1072,14 @@ msgstr ""
|
|||||||
msgid "Tokens and fingerprints are used to authenticate WebSocket connections to the hub."
|
msgid "Tokens and fingerprints are used to authenticate WebSocket connections to the hub."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Total data received for each interface"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Total data sent for each interface"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/lib/alerts.ts
|
#: src/lib/alerts.ts
|
||||||
msgid "Triggers when 1 minute load average exceeds a threshold"
|
msgid "Triggers when 1 minute load average exceeds a threshold"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -1095,6 +1141,10 @@ msgstr ""
|
|||||||
msgid "Up ({upSystemsLength})"
|
msgid "Up ({upSystemsLength})"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Upload"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
msgid "Uptime"
|
msgid "Uptime"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|||||||
@@ -363,6 +363,14 @@ msgstr "Creato"
|
|||||||
msgid "Critical (%)"
|
msgid "Critical (%)"
|
||||||
msgstr "Critico (%)"
|
msgstr "Critico (%)"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Cumulative Download"
|
||||||
|
msgstr "Download cumulativo"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Cumulative Upload"
|
||||||
|
msgstr "Upload cumulativo"
|
||||||
|
|
||||||
#. Context: Battery state
|
#. Context: Battery state
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
msgid "Current state"
|
msgid "Current state"
|
||||||
@@ -441,6 +449,10 @@ msgstr "Offline"
|
|||||||
msgid "Down ({downSystemsLength})"
|
msgid "Down ({downSystemsLength})"
|
||||||
msgstr "Offline ({downSystemsLength})"
|
msgstr "Offline ({downSystemsLength})"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Download"
|
||||||
|
msgstr "Scarica"
|
||||||
|
|
||||||
#: src/components/alerts-history-columns.tsx
|
#: src/components/alerts-history-columns.tsx
|
||||||
msgid "Duration"
|
msgid "Duration"
|
||||||
msgstr "Durata"
|
msgstr "Durata"
|
||||||
@@ -452,6 +464,7 @@ msgstr "Modifica"
|
|||||||
|
|
||||||
#: src/components/login/auth-form.tsx
|
#: src/components/login/auth-form.tsx
|
||||||
#: src/components/login/forgot-pass-form.tsx
|
#: src/components/login/forgot-pass-form.tsx
|
||||||
|
#: src/components/login/otp-forms.tsx
|
||||||
msgid "Email"
|
msgid "Email"
|
||||||
msgstr "Email"
|
msgstr "Email"
|
||||||
|
|
||||||
@@ -472,6 +485,10 @@ msgstr "Inserisci l'indirizzo email per reimpostare la password"
|
|||||||
msgid "Enter email address..."
|
msgid "Enter email address..."
|
||||||
msgstr "Inserisci l'indirizzo email..."
|
msgstr "Inserisci l'indirizzo email..."
|
||||||
|
|
||||||
|
#: src/components/login/otp-forms.tsx
|
||||||
|
msgid "Enter your one-time password."
|
||||||
|
msgstr "Inserisci la tua password monouso."
|
||||||
|
|
||||||
#: src/components/login/auth-form.tsx
|
#: src/components/login/auth-form.tsx
|
||||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||||
#: src/components/routes/settings/config-yaml.tsx
|
#: src/components/routes/settings/config-yaml.tsx
|
||||||
@@ -542,6 +559,12 @@ msgstr "Per <0>{min}</0> {min, plural, one {minuto} other {minuti}}"
|
|||||||
msgid "Forgot password?"
|
msgid "Forgot password?"
|
||||||
msgstr "Password dimenticata?"
|
msgstr "Password dimenticata?"
|
||||||
|
|
||||||
|
#: src/components/add-system.tsx
|
||||||
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
|
msgctxt "Button to copy install command"
|
||||||
|
msgid "FreeBSD command"
|
||||||
|
msgstr "Comando FreeBSD"
|
||||||
|
|
||||||
#. Context: Battery state
|
#. Context: Battery state
|
||||||
#: src/lib/i18n.ts
|
#: src/lib/i18n.ts
|
||||||
msgid "Full"
|
msgid "Full"
|
||||||
@@ -645,6 +668,7 @@ msgid "Manage display and notification preferences."
|
|||||||
msgstr "Gestisci le preferenze di visualizzazione e notifica."
|
msgstr "Gestisci le preferenze di visualizzazione e notifica."
|
||||||
|
|
||||||
#: src/components/add-system.tsx
|
#: src/components/add-system.tsx
|
||||||
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
msgid "Manual setup instructions"
|
msgid "Manual setup instructions"
|
||||||
msgstr "Istruzioni di configurazione manuale"
|
msgstr "Istruzioni di configurazione manuale"
|
||||||
|
|
||||||
@@ -680,6 +704,8 @@ msgid "Network traffic of docker containers"
|
|||||||
msgstr "Traffico di rete dei container Docker"
|
msgstr "Traffico di rete dei container Docker"
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
msgid "Network traffic of public interfaces"
|
msgid "Network traffic of public interfaces"
|
||||||
msgstr "Traffico di rete delle interfacce pubbliche"
|
msgstr "Traffico di rete delle interfacce pubbliche"
|
||||||
|
|
||||||
@@ -715,6 +741,10 @@ msgstr "Supporto OAuth 2 / OIDC"
|
|||||||
msgid "On each restart, systems in the database will be updated to match the systems defined in the file."
|
msgid "On each restart, systems in the database will be updated to match the systems defined in the file."
|
||||||
msgstr "Ad ogni riavvio, i sistemi nel database verranno aggiornati per corrispondere ai sistemi definiti nel file."
|
msgstr "Ad ogni riavvio, i sistemi nel database verranno aggiornati per corrispondere ai sistemi definiti nel file."
|
||||||
|
|
||||||
|
#: src/components/login/auth-form.tsx
|
||||||
|
msgid "One-time password"
|
||||||
|
msgstr "Password monouso"
|
||||||
|
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
@@ -833,6 +863,14 @@ msgstr "Lettura"
|
|||||||
msgid "Received"
|
msgid "Received"
|
||||||
msgstr "Ricevuto"
|
msgstr "Ricevuto"
|
||||||
|
|
||||||
|
#: src/components/login/login.tsx
|
||||||
|
msgid "Request a one-time password"
|
||||||
|
msgstr "Richiedi una password monouso"
|
||||||
|
|
||||||
|
#: src/components/login/otp-forms.tsx
|
||||||
|
msgid "Request OTP"
|
||||||
|
msgstr "Richiedi OTP"
|
||||||
|
|
||||||
#: src/components/login/forgot-pass-form.tsx
|
#: src/components/login/forgot-pass-form.tsx
|
||||||
msgid "Reset Password"
|
msgid "Reset Password"
|
||||||
msgstr "Reimposta Password"
|
msgstr "Reimposta Password"
|
||||||
@@ -888,10 +926,6 @@ msgstr "Inviato"
|
|||||||
msgid "Set percentage thresholds for meter colors."
|
msgid "Set percentage thresholds for meter colors."
|
||||||
msgstr "Imposta le soglie percentuali per i colori dei contatori."
|
msgstr "Imposta le soglie percentuali per i colori dei contatori."
|
||||||
|
|
||||||
#: src/components/routes/settings/general.tsx
|
|
||||||
msgid "Sets the default time range for charts when a system is viewed."
|
|
||||||
msgstr "Imposta l'intervallo di tempo predefinito per i grafici quando viene visualizzato un sistema."
|
|
||||||
|
|
||||||
#: src/components/command-palette.tsx
|
#: src/components/command-palette.tsx
|
||||||
#: src/components/command-palette.tsx
|
#: src/components/command-palette.tsx
|
||||||
#: src/components/routes/settings/layout.tsx
|
#: src/components/routes/settings/layout.tsx
|
||||||
@@ -1002,6 +1036,10 @@ msgstr "Throughput di {extraFsName}"
|
|||||||
msgid "Throughput of root filesystem"
|
msgid "Throughput of root filesystem"
|
||||||
msgstr "Throughput del filesystem root"
|
msgstr "Throughput del filesystem root"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/general.tsx
|
||||||
|
msgid "Time format"
|
||||||
|
msgstr "Formato orario"
|
||||||
|
|
||||||
#: src/components/routes/settings/notifications.tsx
|
#: src/components/routes/settings/notifications.tsx
|
||||||
msgid "To email(s)"
|
msgid "To email(s)"
|
||||||
msgstr "A email(s)"
|
msgstr "A email(s)"
|
||||||
@@ -1034,6 +1072,14 @@ msgstr "I token consentono agli agenti di connettersi e registrarsi. Le impronte
|
|||||||
msgid "Tokens and fingerprints are used to authenticate WebSocket connections to the hub."
|
msgid "Tokens and fingerprints are used to authenticate WebSocket connections to the hub."
|
||||||
msgstr "I token e le impronte digitali vengono utilizzati per autenticare le connessioni WebSocket all'hub."
|
msgstr "I token e le impronte digitali vengono utilizzati per autenticare le connessioni WebSocket all'hub."
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Total data received for each interface"
|
||||||
|
msgstr "Dati totali ricevuti per ogni interfaccia"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Total data sent for each interface"
|
||||||
|
msgstr "Dati totali inviati per ogni interfaccia"
|
||||||
|
|
||||||
#: src/lib/alerts.ts
|
#: src/lib/alerts.ts
|
||||||
msgid "Triggers when 1 minute load average exceeds a threshold"
|
msgid "Triggers when 1 minute load average exceeds a threshold"
|
||||||
msgstr "Si attiva quando la media di carico di 1 minuto supera una soglia"
|
msgstr "Si attiva quando la media di carico di 1 minuto supera una soglia"
|
||||||
@@ -1095,6 +1141,10 @@ msgstr "Attivo"
|
|||||||
msgid "Up ({upSystemsLength})"
|
msgid "Up ({upSystemsLength})"
|
||||||
msgstr "Attivo ({upSystemsLength})"
|
msgstr "Attivo ({upSystemsLength})"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Upload"
|
||||||
|
msgstr "Carica"
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
msgid "Uptime"
|
msgid "Uptime"
|
||||||
msgstr "Tempo di attività"
|
msgstr "Tempo di attività"
|
||||||
|
|||||||
@@ -363,6 +363,14 @@ msgstr "作成日"
|
|||||||
msgid "Critical (%)"
|
msgid "Critical (%)"
|
||||||
msgstr "致命的 (%)"
|
msgstr "致命的 (%)"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Cumulative Download"
|
||||||
|
msgstr "累積ダウンロード"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Cumulative Upload"
|
||||||
|
msgstr "累積アップロード"
|
||||||
|
|
||||||
#. Context: Battery state
|
#. Context: Battery state
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
msgid "Current state"
|
msgid "Current state"
|
||||||
@@ -441,6 +449,10 @@ msgstr "停止"
|
|||||||
msgid "Down ({downSystemsLength})"
|
msgid "Down ({downSystemsLength})"
|
||||||
msgstr "停止 ({downSystemsLength})"
|
msgstr "停止 ({downSystemsLength})"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Download"
|
||||||
|
msgstr "ダウンロード"
|
||||||
|
|
||||||
#: src/components/alerts-history-columns.tsx
|
#: src/components/alerts-history-columns.tsx
|
||||||
msgid "Duration"
|
msgid "Duration"
|
||||||
msgstr "期間"
|
msgstr "期間"
|
||||||
@@ -452,6 +464,7 @@ 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
|
||||||
msgid "Email"
|
msgid "Email"
|
||||||
msgstr "メール"
|
msgstr "メール"
|
||||||
|
|
||||||
@@ -472,6 +485,10 @@ msgstr "パスワードをリセットするためにメールアドレスを入
|
|||||||
msgid "Enter email address..."
|
msgid "Enter email address..."
|
||||||
msgstr "メールアドレスを入力..."
|
msgstr "メールアドレスを入力..."
|
||||||
|
|
||||||
|
#: src/components/login/otp-forms.tsx
|
||||||
|
msgid "Enter your one-time password."
|
||||||
|
msgstr "ワンタイムパスワードを入力してください。"
|
||||||
|
|
||||||
#: src/components/login/auth-form.tsx
|
#: src/components/login/auth-form.tsx
|
||||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||||
#: src/components/routes/settings/config-yaml.tsx
|
#: src/components/routes/settings/config-yaml.tsx
|
||||||
@@ -542,6 +559,12 @@ msgstr "<0>{min}</0> {min, plural, one {分} other {分}}の間"
|
|||||||
msgid "Forgot password?"
|
msgid "Forgot password?"
|
||||||
msgstr "パスワードをお忘れですか?"
|
msgstr "パスワードをお忘れですか?"
|
||||||
|
|
||||||
|
#: src/components/add-system.tsx
|
||||||
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
|
msgctxt "Button to copy install command"
|
||||||
|
msgid "FreeBSD command"
|
||||||
|
msgstr "FreeBSD コマンド"
|
||||||
|
|
||||||
#. Context: Battery state
|
#. Context: Battery state
|
||||||
#: src/lib/i18n.ts
|
#: src/lib/i18n.ts
|
||||||
msgid "Full"
|
msgid "Full"
|
||||||
@@ -645,6 +668,7 @@ msgid "Manage display and notification preferences."
|
|||||||
msgstr "表示と通知の設定を管理します。"
|
msgstr "表示と通知の設定を管理します。"
|
||||||
|
|
||||||
#: src/components/add-system.tsx
|
#: src/components/add-system.tsx
|
||||||
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
msgid "Manual setup instructions"
|
msgid "Manual setup instructions"
|
||||||
msgstr "手動セットアップの手順"
|
msgstr "手動セットアップの手順"
|
||||||
|
|
||||||
@@ -680,6 +704,8 @@ msgid "Network traffic of docker containers"
|
|||||||
msgstr "Dockerコンテナのネットワークトラフィック"
|
msgstr "Dockerコンテナのネットワークトラフィック"
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
msgid "Network traffic of public interfaces"
|
msgid "Network traffic of public interfaces"
|
||||||
msgstr "パブリックインターフェースのネットワークトラフィック"
|
msgstr "パブリックインターフェースのネットワークトラフィック"
|
||||||
|
|
||||||
@@ -715,6 +741,10 @@ msgstr "OAuth 2 / OIDCサポート"
|
|||||||
msgid "On each restart, systems in the database will be updated to match the systems defined in the file."
|
msgid "On each restart, systems in the database will be updated to match the systems defined in the file."
|
||||||
msgstr "再起動のたびに、データベース内のシステムはファイルに定義されたシステムに一致するように更新されます。"
|
msgstr "再起動のたびに、データベース内のシステムはファイルに定義されたシステムに一致するように更新されます。"
|
||||||
|
|
||||||
|
#: src/components/login/auth-form.tsx
|
||||||
|
msgid "One-time password"
|
||||||
|
msgstr "ワンタイムパスワード"
|
||||||
|
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
@@ -833,6 +863,14 @@ msgstr "読み取り"
|
|||||||
msgid "Received"
|
msgid "Received"
|
||||||
msgstr "受信"
|
msgstr "受信"
|
||||||
|
|
||||||
|
#: src/components/login/login.tsx
|
||||||
|
msgid "Request a one-time password"
|
||||||
|
msgstr "ワンタイムパスワードをリクエスト"
|
||||||
|
|
||||||
|
#: src/components/login/otp-forms.tsx
|
||||||
|
msgid "Request OTP"
|
||||||
|
msgstr "OTP をリクエスト"
|
||||||
|
|
||||||
#: src/components/login/forgot-pass-form.tsx
|
#: src/components/login/forgot-pass-form.tsx
|
||||||
msgid "Reset Password"
|
msgid "Reset Password"
|
||||||
msgstr "パスワードをリセット"
|
msgstr "パスワードをリセット"
|
||||||
@@ -888,10 +926,6 @@ msgstr "送信"
|
|||||||
msgid "Set percentage thresholds for meter colors."
|
msgid "Set percentage thresholds for meter colors."
|
||||||
msgstr "メーターの色を変更するしきい値(パーセンテージ)を設定します。"
|
msgstr "メーターの色を変更するしきい値(パーセンテージ)を設定します。"
|
||||||
|
|
||||||
#: src/components/routes/settings/general.tsx
|
|
||||||
msgid "Sets the default time range for charts when a system is viewed."
|
|
||||||
msgstr "システムを表示する際のチャートのデフォルトの時間範囲を設定します。"
|
|
||||||
|
|
||||||
#: src/components/command-palette.tsx
|
#: src/components/command-palette.tsx
|
||||||
#: src/components/command-palette.tsx
|
#: src/components/command-palette.tsx
|
||||||
#: src/components/routes/settings/layout.tsx
|
#: src/components/routes/settings/layout.tsx
|
||||||
@@ -1002,6 +1036,10 @@ msgstr "{extraFsName}のスループット"
|
|||||||
msgid "Throughput of root filesystem"
|
msgid "Throughput of root filesystem"
|
||||||
msgstr "ルートファイルシステムのスループット"
|
msgstr "ルートファイルシステムのスループット"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/general.tsx
|
||||||
|
msgid "Time format"
|
||||||
|
msgstr "時間形式"
|
||||||
|
|
||||||
#: src/components/routes/settings/notifications.tsx
|
#: src/components/routes/settings/notifications.tsx
|
||||||
msgid "To email(s)"
|
msgid "To email(s)"
|
||||||
msgstr "宛先メールアドレス"
|
msgstr "宛先メールアドレス"
|
||||||
@@ -1034,6 +1072,14 @@ msgstr "トークンはエージェントの接続と登録を可能にします
|
|||||||
msgid "Tokens and fingerprints are used to authenticate WebSocket connections to the hub."
|
msgid "Tokens and fingerprints are used to authenticate WebSocket connections to the hub."
|
||||||
msgstr "トークンとフィンガープリントは、ハブへのWebSocket接続の認証に使用されます。"
|
msgstr "トークンとフィンガープリントは、ハブへのWebSocket接続の認証に使用されます。"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Total data received for each interface"
|
||||||
|
msgstr "各インターフェースの総受信データ量"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Total data sent for each interface"
|
||||||
|
msgstr "各インターフェースの総送信データ量"
|
||||||
|
|
||||||
#: src/lib/alerts.ts
|
#: src/lib/alerts.ts
|
||||||
msgid "Triggers when 1 minute load average exceeds a threshold"
|
msgid "Triggers when 1 minute load average exceeds a threshold"
|
||||||
msgstr "1分間の負荷平均がしきい値を超えたときにトリガーされます"
|
msgstr "1分間の負荷平均がしきい値を超えたときにトリガーされます"
|
||||||
@@ -1095,6 +1141,10 @@ msgstr "正常"
|
|||||||
msgid "Up ({upSystemsLength})"
|
msgid "Up ({upSystemsLength})"
|
||||||
msgstr "正常 ({upSystemsLength})"
|
msgstr "正常 ({upSystemsLength})"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Upload"
|
||||||
|
msgstr "アップロード"
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
msgid "Uptime"
|
msgid "Uptime"
|
||||||
msgstr "稼働時間"
|
msgstr "稼働時間"
|
||||||
|
|||||||
@@ -363,6 +363,14 @@ msgstr "생성됨"
|
|||||||
msgid "Critical (%)"
|
msgid "Critical (%)"
|
||||||
msgstr "위험 (%)"
|
msgstr "위험 (%)"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Cumulative Download"
|
||||||
|
msgstr "누적 다운로드"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Cumulative Upload"
|
||||||
|
msgstr "누적 업로드"
|
||||||
|
|
||||||
#. Context: Battery state
|
#. Context: Battery state
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
msgid "Current state"
|
msgid "Current state"
|
||||||
@@ -441,6 +449,10 @@ msgstr "오프라인"
|
|||||||
msgid "Down ({downSystemsLength})"
|
msgid "Down ({downSystemsLength})"
|
||||||
msgstr "오프라인 ({downSystemsLength})"
|
msgstr "오프라인 ({downSystemsLength})"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Download"
|
||||||
|
msgstr "다운로드"
|
||||||
|
|
||||||
#: src/components/alerts-history-columns.tsx
|
#: src/components/alerts-history-columns.tsx
|
||||||
msgid "Duration"
|
msgid "Duration"
|
||||||
msgstr "기간"
|
msgstr "기간"
|
||||||
@@ -452,6 +464,7 @@ 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
|
||||||
msgid "Email"
|
msgid "Email"
|
||||||
msgstr "이메일"
|
msgstr "이메일"
|
||||||
|
|
||||||
@@ -472,6 +485,10 @@ msgstr "비밀번호를 재설정하려면 이메일 주소를 입력하세요"
|
|||||||
msgid "Enter email address..."
|
msgid "Enter email address..."
|
||||||
msgstr "이메일 주소 입력..."
|
msgstr "이메일 주소 입력..."
|
||||||
|
|
||||||
|
#: src/components/login/otp-forms.tsx
|
||||||
|
msgid "Enter your one-time password."
|
||||||
|
msgstr "일회용 비밀번호를 입력하세요."
|
||||||
|
|
||||||
#: src/components/login/auth-form.tsx
|
#: src/components/login/auth-form.tsx
|
||||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||||
#: src/components/routes/settings/config-yaml.tsx
|
#: src/components/routes/settings/config-yaml.tsx
|
||||||
@@ -542,6 +559,12 @@ msgstr "<0>{min}</0> {min, plural, one {분} other {분}} 동안"
|
|||||||
msgid "Forgot password?"
|
msgid "Forgot password?"
|
||||||
msgstr "비밀번호를 잊으셨나요?"
|
msgstr "비밀번호를 잊으셨나요?"
|
||||||
|
|
||||||
|
#: src/components/add-system.tsx
|
||||||
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
|
msgctxt "Button to copy install command"
|
||||||
|
msgid "FreeBSD command"
|
||||||
|
msgstr "FreeBSD 명령어"
|
||||||
|
|
||||||
#. Context: Battery state
|
#. Context: Battery state
|
||||||
#: src/lib/i18n.ts
|
#: src/lib/i18n.ts
|
||||||
msgid "Full"
|
msgid "Full"
|
||||||
@@ -645,6 +668,7 @@ msgid "Manage display and notification preferences."
|
|||||||
msgstr "디스플레이 및 알림 설정"
|
msgstr "디스플레이 및 알림 설정"
|
||||||
|
|
||||||
#: src/components/add-system.tsx
|
#: src/components/add-system.tsx
|
||||||
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
msgid "Manual setup instructions"
|
msgid "Manual setup instructions"
|
||||||
msgstr "수동 설정 방법"
|
msgstr "수동 설정 방법"
|
||||||
|
|
||||||
@@ -680,6 +704,8 @@ msgid "Network traffic of docker containers"
|
|||||||
msgstr "Docker 컨테이너의 네트워크 트래픽"
|
msgstr "Docker 컨테이너의 네트워크 트래픽"
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
msgid "Network traffic of public interfaces"
|
msgid "Network traffic of public interfaces"
|
||||||
msgstr "공용 인터페이스의 네트워크 트래픽"
|
msgstr "공용 인터페이스의 네트워크 트래픽"
|
||||||
|
|
||||||
@@ -715,6 +741,10 @@ msgstr "OAuth 2 / OIDC 지원"
|
|||||||
msgid "On each restart, systems in the database will be updated to match the systems defined in the file."
|
msgid "On each restart, systems in the database will be updated to match the systems defined in the file."
|
||||||
msgstr "매 시작 시, 데이터베이스가 파일에 정의된 시스템과 일치하도록 업데이트됩니다."
|
msgstr "매 시작 시, 데이터베이스가 파일에 정의된 시스템과 일치하도록 업데이트됩니다."
|
||||||
|
|
||||||
|
#: src/components/login/auth-form.tsx
|
||||||
|
msgid "One-time password"
|
||||||
|
msgstr "일회용 비밀번호"
|
||||||
|
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
@@ -833,6 +863,14 @@ msgstr "읽기"
|
|||||||
msgid "Received"
|
msgid "Received"
|
||||||
msgstr "수신됨"
|
msgstr "수신됨"
|
||||||
|
|
||||||
|
#: src/components/login/login.tsx
|
||||||
|
msgid "Request a one-time password"
|
||||||
|
msgstr "일회용 비밀번호 요청"
|
||||||
|
|
||||||
|
#: src/components/login/otp-forms.tsx
|
||||||
|
msgid "Request OTP"
|
||||||
|
msgstr "OTP 요청"
|
||||||
|
|
||||||
#: src/components/login/forgot-pass-form.tsx
|
#: src/components/login/forgot-pass-form.tsx
|
||||||
msgid "Reset Password"
|
msgid "Reset Password"
|
||||||
msgstr "비밀번호 재설정"
|
msgstr "비밀번호 재설정"
|
||||||
@@ -888,10 +926,6 @@ msgstr "보냄"
|
|||||||
msgid "Set percentage thresholds for meter colors."
|
msgid "Set percentage thresholds for meter colors."
|
||||||
msgstr "그래프 미터 색상의 백분율 임계값을 설정합니다."
|
msgstr "그래프 미터 색상의 백분율 임계값을 설정합니다."
|
||||||
|
|
||||||
#: src/components/routes/settings/general.tsx
|
|
||||||
msgid "Sets the default time range for charts when a system is viewed."
|
|
||||||
msgstr "시스템을 볼 때 차트의 기본 시간 범위를 설정합니다."
|
|
||||||
|
|
||||||
#: src/components/command-palette.tsx
|
#: src/components/command-palette.tsx
|
||||||
#: src/components/command-palette.tsx
|
#: src/components/command-palette.tsx
|
||||||
#: src/components/routes/settings/layout.tsx
|
#: src/components/routes/settings/layout.tsx
|
||||||
@@ -1002,6 +1036,10 @@ msgstr "{extraFsName}의 처리량"
|
|||||||
msgid "Throughput of root filesystem"
|
msgid "Throughput of root filesystem"
|
||||||
msgstr "루트 파일 시스템의 처리량"
|
msgstr "루트 파일 시스템의 처리량"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/general.tsx
|
||||||
|
msgid "Time format"
|
||||||
|
msgstr "시간 형식"
|
||||||
|
|
||||||
#: src/components/routes/settings/notifications.tsx
|
#: src/components/routes/settings/notifications.tsx
|
||||||
msgid "To email(s)"
|
msgid "To email(s)"
|
||||||
msgstr "받는사람(들)"
|
msgstr "받는사람(들)"
|
||||||
@@ -1034,6 +1072,14 @@ msgstr "토큰은 에이전트가 연결하고 등록할 수 있도록 합니다
|
|||||||
msgid "Tokens and fingerprints are used to authenticate WebSocket connections to the hub."
|
msgid "Tokens and fingerprints are used to authenticate WebSocket connections to the hub."
|
||||||
msgstr "토큰과 지문은 허브에 대한 WebSocket 연결을 인증하는 데 사용됩니다."
|
msgstr "토큰과 지문은 허브에 대한 WebSocket 연결을 인증하는 데 사용됩니다."
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Total data received for each interface"
|
||||||
|
msgstr "각 인터페이스별 총 수신 데이터량"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Total data sent for each interface"
|
||||||
|
msgstr "각 인터페이스별 총 발신 데이터량"
|
||||||
|
|
||||||
#: src/lib/alerts.ts
|
#: src/lib/alerts.ts
|
||||||
msgid "Triggers when 1 minute load average exceeds a threshold"
|
msgid "Triggers when 1 minute load average exceeds a threshold"
|
||||||
msgstr "1분 부하 평균이 임계값을 초과하면 트리거됩니다."
|
msgstr "1분 부하 평균이 임계값을 초과하면 트리거됩니다."
|
||||||
@@ -1095,6 +1141,10 @@ msgstr "온라인"
|
|||||||
msgid "Up ({upSystemsLength})"
|
msgid "Up ({upSystemsLength})"
|
||||||
msgstr "온라인 ({upSystemsLength})"
|
msgstr "온라인 ({upSystemsLength})"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Upload"
|
||||||
|
msgstr "업로드"
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
msgid "Uptime"
|
msgid "Uptime"
|
||||||
msgstr "가동 시간"
|
msgstr "가동 시간"
|
||||||
|
|||||||
@@ -363,6 +363,14 @@ msgstr "Aangemaakt"
|
|||||||
msgid "Critical (%)"
|
msgid "Critical (%)"
|
||||||
msgstr "Kritiek (%)"
|
msgstr "Kritiek (%)"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Cumulative Download"
|
||||||
|
msgstr "Cumulatieve download"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Cumulative Upload"
|
||||||
|
msgstr "Cumulatieve upload"
|
||||||
|
|
||||||
#. Context: Battery state
|
#. Context: Battery state
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
msgid "Current state"
|
msgid "Current state"
|
||||||
@@ -441,6 +449,10 @@ msgstr "Offline"
|
|||||||
msgid "Down ({downSystemsLength})"
|
msgid "Down ({downSystemsLength})"
|
||||||
msgstr "Offline ({downSystemsLength})"
|
msgstr "Offline ({downSystemsLength})"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Download"
|
||||||
|
msgstr "Downloaden"
|
||||||
|
|
||||||
#: src/components/alerts-history-columns.tsx
|
#: src/components/alerts-history-columns.tsx
|
||||||
msgid "Duration"
|
msgid "Duration"
|
||||||
msgstr "Duur"
|
msgstr "Duur"
|
||||||
@@ -452,6 +464,7 @@ msgstr "Bewerken"
|
|||||||
|
|
||||||
#: src/components/login/auth-form.tsx
|
#: src/components/login/auth-form.tsx
|
||||||
#: src/components/login/forgot-pass-form.tsx
|
#: src/components/login/forgot-pass-form.tsx
|
||||||
|
#: src/components/login/otp-forms.tsx
|
||||||
msgid "Email"
|
msgid "Email"
|
||||||
msgstr "E-mail"
|
msgstr "E-mail"
|
||||||
|
|
||||||
@@ -472,6 +485,10 @@ msgstr "Voer een e-mailadres in om het wachtwoord opnieuw in te stellen"
|
|||||||
msgid "Enter email address..."
|
msgid "Enter email address..."
|
||||||
msgstr "Voer een e-mailadres in..."
|
msgstr "Voer een e-mailadres in..."
|
||||||
|
|
||||||
|
#: src/components/login/otp-forms.tsx
|
||||||
|
msgid "Enter your one-time password."
|
||||||
|
msgstr "Voer uw eenmalig wachtwoord in."
|
||||||
|
|
||||||
#: src/components/login/auth-form.tsx
|
#: src/components/login/auth-form.tsx
|
||||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||||
#: src/components/routes/settings/config-yaml.tsx
|
#: src/components/routes/settings/config-yaml.tsx
|
||||||
@@ -542,6 +559,12 @@ msgstr "Voor <0>{min}</0> {min, plural, one {minuut} other {minuten}}"
|
|||||||
msgid "Forgot password?"
|
msgid "Forgot password?"
|
||||||
msgstr "Wachtwoord vergeten?"
|
msgstr "Wachtwoord vergeten?"
|
||||||
|
|
||||||
|
#: src/components/add-system.tsx
|
||||||
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
|
msgctxt "Button to copy install command"
|
||||||
|
msgid "FreeBSD command"
|
||||||
|
msgstr "FreeBSD commando"
|
||||||
|
|
||||||
#. Context: Battery state
|
#. Context: Battery state
|
||||||
#: src/lib/i18n.ts
|
#: src/lib/i18n.ts
|
||||||
msgid "Full"
|
msgid "Full"
|
||||||
@@ -645,6 +668,7 @@ msgid "Manage display and notification preferences."
|
|||||||
msgstr "Weergave- en notificatievoorkeuren beheren."
|
msgstr "Weergave- en notificatievoorkeuren beheren."
|
||||||
|
|
||||||
#: src/components/add-system.tsx
|
#: src/components/add-system.tsx
|
||||||
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
msgid "Manual setup instructions"
|
msgid "Manual setup instructions"
|
||||||
msgstr "Handmatige installatie-instructies"
|
msgstr "Handmatige installatie-instructies"
|
||||||
|
|
||||||
@@ -680,6 +704,8 @@ msgid "Network traffic of docker containers"
|
|||||||
msgstr "Netwerkverkeer van docker containers"
|
msgstr "Netwerkverkeer van docker containers"
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
msgid "Network traffic of public interfaces"
|
msgid "Network traffic of public interfaces"
|
||||||
msgstr "Netwerkverkeer van publieke interfaces"
|
msgstr "Netwerkverkeer van publieke interfaces"
|
||||||
|
|
||||||
@@ -715,6 +741,10 @@ msgstr "OAuth 2 / OIDC ondersteuning"
|
|||||||
msgid "On each restart, systems in the database will be updated to match the systems defined in the file."
|
msgid "On each restart, systems in the database will be updated to match the systems defined in the file."
|
||||||
msgstr "Bij elke herstart zullen systemen in de database worden bijgewerkt om overeen te komen met de systemen die in het bestand zijn gedefinieerd."
|
msgstr "Bij elke herstart zullen systemen in de database worden bijgewerkt om overeen te komen met de systemen die in het bestand zijn gedefinieerd."
|
||||||
|
|
||||||
|
#: src/components/login/auth-form.tsx
|
||||||
|
msgid "One-time password"
|
||||||
|
msgstr "Eenmalig wachtwoord"
|
||||||
|
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
@@ -833,6 +863,14 @@ msgstr "Lezen"
|
|||||||
msgid "Received"
|
msgid "Received"
|
||||||
msgstr "Ontvangen"
|
msgstr "Ontvangen"
|
||||||
|
|
||||||
|
#: src/components/login/login.tsx
|
||||||
|
msgid "Request a one-time password"
|
||||||
|
msgstr "Eenmalig wachtwoord aanvragen"
|
||||||
|
|
||||||
|
#: src/components/login/otp-forms.tsx
|
||||||
|
msgid "Request OTP"
|
||||||
|
msgstr "OTP aanvragen"
|
||||||
|
|
||||||
#: src/components/login/forgot-pass-form.tsx
|
#: src/components/login/forgot-pass-form.tsx
|
||||||
msgid "Reset Password"
|
msgid "Reset Password"
|
||||||
msgstr "Wachtwoord resetten"
|
msgstr "Wachtwoord resetten"
|
||||||
@@ -888,10 +926,6 @@ msgstr "Verzonden"
|
|||||||
msgid "Set percentage thresholds for meter colors."
|
msgid "Set percentage thresholds for meter colors."
|
||||||
msgstr "Stel percentagedrempels in voor meterkleuren."
|
msgstr "Stel percentagedrempels in voor meterkleuren."
|
||||||
|
|
||||||
#: src/components/routes/settings/general.tsx
|
|
||||||
msgid "Sets the default time range for charts when a system is viewed."
|
|
||||||
msgstr "Stelt het standaard tijdsbereik voor grafieken in wanneer een systeem wordt bekeken."
|
|
||||||
|
|
||||||
#: src/components/command-palette.tsx
|
#: src/components/command-palette.tsx
|
||||||
#: src/components/command-palette.tsx
|
#: src/components/command-palette.tsx
|
||||||
#: src/components/routes/settings/layout.tsx
|
#: src/components/routes/settings/layout.tsx
|
||||||
@@ -1002,6 +1036,10 @@ msgstr "Doorvoer van {extraFsName}"
|
|||||||
msgid "Throughput of root filesystem"
|
msgid "Throughput of root filesystem"
|
||||||
msgstr "Doorvoer van het root bestandssysteem"
|
msgstr "Doorvoer van het root bestandssysteem"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/general.tsx
|
||||||
|
msgid "Time format"
|
||||||
|
msgstr "Tijdnotatie"
|
||||||
|
|
||||||
#: src/components/routes/settings/notifications.tsx
|
#: src/components/routes/settings/notifications.tsx
|
||||||
msgid "To email(s)"
|
msgid "To email(s)"
|
||||||
msgstr "Naar e-mail(s)"
|
msgstr "Naar e-mail(s)"
|
||||||
@@ -1034,6 +1072,14 @@ msgstr "Tokens staan agenten toe om verbinding te maken met en te registreren. V
|
|||||||
msgid "Tokens and fingerprints are used to authenticate WebSocket connections to the hub."
|
msgid "Tokens and fingerprints are used to authenticate WebSocket connections to the hub."
|
||||||
msgstr "Tokens en vingerafdrukken worden gebruikt om WebSocket verbindingen te verifiëren naar de hub."
|
msgstr "Tokens en vingerafdrukken worden gebruikt om WebSocket verbindingen te verifiëren naar de hub."
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Total data received for each interface"
|
||||||
|
msgstr "Totaal ontvangen gegevens per interface"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Total data sent for each interface"
|
||||||
|
msgstr "Totaal verzonden gegevens per interface"
|
||||||
|
|
||||||
#: src/lib/alerts.ts
|
#: src/lib/alerts.ts
|
||||||
msgid "Triggers when 1 minute load average exceeds a threshold"
|
msgid "Triggers when 1 minute load average exceeds a threshold"
|
||||||
msgstr "Triggert wanneer de gemiddelde belasting een drempelwaarde overschrijdt"
|
msgstr "Triggert wanneer de gemiddelde belasting een drempelwaarde overschrijdt"
|
||||||
@@ -1095,6 +1141,10 @@ msgstr "Online"
|
|||||||
msgid "Up ({upSystemsLength})"
|
msgid "Up ({upSystemsLength})"
|
||||||
msgstr "Online ({upSystemsLength})"
|
msgstr "Online ({upSystemsLength})"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Upload"
|
||||||
|
msgstr "Uploaden"
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
msgid "Uptime"
|
msgid "Uptime"
|
||||||
msgstr "Actief"
|
msgstr "Actief"
|
||||||
|
|||||||
@@ -363,6 +363,14 @@ msgstr ""
|
|||||||
msgid "Critical (%)"
|
msgid "Critical (%)"
|
||||||
msgstr "Kritisk (%)"
|
msgstr "Kritisk (%)"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Cumulative Download"
|
||||||
|
msgstr "Kumulativ nedlasting"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Cumulative Upload"
|
||||||
|
msgstr "Kumulativ opplasting"
|
||||||
|
|
||||||
#. Context: Battery state
|
#. Context: Battery state
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
msgid "Current state"
|
msgid "Current state"
|
||||||
@@ -441,6 +449,10 @@ msgstr "Nede"
|
|||||||
msgid "Down ({downSystemsLength})"
|
msgid "Down ({downSystemsLength})"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Download"
|
||||||
|
msgstr "Last ned"
|
||||||
|
|
||||||
#: src/components/alerts-history-columns.tsx
|
#: src/components/alerts-history-columns.tsx
|
||||||
msgid "Duration"
|
msgid "Duration"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -452,6 +464,7 @@ msgstr "Rediger"
|
|||||||
|
|
||||||
#: src/components/login/auth-form.tsx
|
#: src/components/login/auth-form.tsx
|
||||||
#: src/components/login/forgot-pass-form.tsx
|
#: src/components/login/forgot-pass-form.tsx
|
||||||
|
#: src/components/login/otp-forms.tsx
|
||||||
msgid "Email"
|
msgid "Email"
|
||||||
msgstr "E-post"
|
msgstr "E-post"
|
||||||
|
|
||||||
@@ -472,6 +485,10 @@ msgstr "Skriv inn e-postadresse for å nullstille passordet"
|
|||||||
msgid "Enter email address..."
|
msgid "Enter email address..."
|
||||||
msgstr "Skriv inn e-postadresse..."
|
msgstr "Skriv inn e-postadresse..."
|
||||||
|
|
||||||
|
#: src/components/login/otp-forms.tsx
|
||||||
|
msgid "Enter your one-time password."
|
||||||
|
msgstr "Skriv inn ditt engangspassord."
|
||||||
|
|
||||||
#: src/components/login/auth-form.tsx
|
#: src/components/login/auth-form.tsx
|
||||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||||
#: src/components/routes/settings/config-yaml.tsx
|
#: src/components/routes/settings/config-yaml.tsx
|
||||||
@@ -542,6 +559,12 @@ msgstr "I <0>{min}</0> {min, plural, one {minutt} other {minutter}}"
|
|||||||
msgid "Forgot password?"
|
msgid "Forgot password?"
|
||||||
msgstr "Glemt passord?"
|
msgstr "Glemt passord?"
|
||||||
|
|
||||||
|
#: src/components/add-system.tsx
|
||||||
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
|
msgctxt "Button to copy install command"
|
||||||
|
msgid "FreeBSD command"
|
||||||
|
msgstr "FreeBSD kommando"
|
||||||
|
|
||||||
#. Context: Battery state
|
#. Context: Battery state
|
||||||
#: src/lib/i18n.ts
|
#: src/lib/i18n.ts
|
||||||
msgid "Full"
|
msgid "Full"
|
||||||
@@ -645,6 +668,7 @@ msgid "Manage display and notification preferences."
|
|||||||
msgstr "Endre visnings- og varslingsinnstillinger."
|
msgstr "Endre visnings- og varslingsinnstillinger."
|
||||||
|
|
||||||
#: src/components/add-system.tsx
|
#: src/components/add-system.tsx
|
||||||
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
msgid "Manual setup instructions"
|
msgid "Manual setup instructions"
|
||||||
msgstr "Instruks for Manuell Installasjon"
|
msgstr "Instruks for Manuell Installasjon"
|
||||||
|
|
||||||
@@ -680,6 +704,8 @@ msgid "Network traffic of docker containers"
|
|||||||
msgstr "Nettverkstrafikk av docker-konteinere"
|
msgstr "Nettverkstrafikk av docker-konteinere"
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
msgid "Network traffic of public interfaces"
|
msgid "Network traffic of public interfaces"
|
||||||
msgstr "Nettverkstrafikk av eksterne nettverksgrensesnitt"
|
msgstr "Nettverkstrafikk av eksterne nettverksgrensesnitt"
|
||||||
|
|
||||||
@@ -715,6 +741,10 @@ msgstr "OAuth 2 / OIDC-støtte"
|
|||||||
msgid "On each restart, systems in the database will be updated to match the systems defined in the file."
|
msgid "On each restart, systems in the database will be updated to match the systems defined in the file."
|
||||||
msgstr "Ved hver omstart vil systemer i databasen bli oppdatert til å matche systemene definert i fila."
|
msgstr "Ved hver omstart vil systemer i databasen bli oppdatert til å matche systemene definert i fila."
|
||||||
|
|
||||||
|
#: src/components/login/auth-form.tsx
|
||||||
|
msgid "One-time password"
|
||||||
|
msgstr "Engangspassord"
|
||||||
|
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
@@ -833,6 +863,14 @@ msgstr "Lesing"
|
|||||||
msgid "Received"
|
msgid "Received"
|
||||||
msgstr "Mottatt"
|
msgstr "Mottatt"
|
||||||
|
|
||||||
|
#: src/components/login/login.tsx
|
||||||
|
msgid "Request a one-time password"
|
||||||
|
msgstr "Be om engangspassord"
|
||||||
|
|
||||||
|
#: src/components/login/otp-forms.tsx
|
||||||
|
msgid "Request OTP"
|
||||||
|
msgstr "Be om OTP"
|
||||||
|
|
||||||
#: src/components/login/forgot-pass-form.tsx
|
#: src/components/login/forgot-pass-form.tsx
|
||||||
msgid "Reset Password"
|
msgid "Reset Password"
|
||||||
msgstr "Nullstill Passord"
|
msgstr "Nullstill Passord"
|
||||||
@@ -888,10 +926,6 @@ msgstr "Sendt"
|
|||||||
msgid "Set percentage thresholds for meter colors."
|
msgid "Set percentage thresholds for meter colors."
|
||||||
msgstr "Angi prosentvise terskler for målerfarger."
|
msgstr "Angi prosentvise terskler for målerfarger."
|
||||||
|
|
||||||
#: src/components/routes/settings/general.tsx
|
|
||||||
msgid "Sets the default time range for charts when a system is viewed."
|
|
||||||
msgstr "Angir standard tidsperiode for diagrammer når et system vises."
|
|
||||||
|
|
||||||
#: src/components/command-palette.tsx
|
#: src/components/command-palette.tsx
|
||||||
#: src/components/command-palette.tsx
|
#: src/components/command-palette.tsx
|
||||||
#: src/components/routes/settings/layout.tsx
|
#: src/components/routes/settings/layout.tsx
|
||||||
@@ -1002,6 +1036,10 @@ msgstr "Gjennomstrømning av {extraFsName}"
|
|||||||
msgid "Throughput of root filesystem"
|
msgid "Throughput of root filesystem"
|
||||||
msgstr "Gjennomstrømning av rot-filsystemet"
|
msgstr "Gjennomstrømning av rot-filsystemet"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/general.tsx
|
||||||
|
msgid "Time format"
|
||||||
|
msgstr "Tidsformat"
|
||||||
|
|
||||||
#: src/components/routes/settings/notifications.tsx
|
#: src/components/routes/settings/notifications.tsx
|
||||||
msgid "To email(s)"
|
msgid "To email(s)"
|
||||||
msgstr "Til e-postadresse(r)"
|
msgstr "Til e-postadresse(r)"
|
||||||
@@ -1034,6 +1072,14 @@ msgstr ""
|
|||||||
msgid "Tokens and fingerprints are used to authenticate WebSocket connections to the hub."
|
msgid "Tokens and fingerprints are used to authenticate WebSocket connections to the hub."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Total data received for each interface"
|
||||||
|
msgstr "Totalt mottatt data for hvert grensesnitt"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Total data sent for each interface"
|
||||||
|
msgstr "Totalt sendt data for hvert grensesnitt"
|
||||||
|
|
||||||
#: src/lib/alerts.ts
|
#: src/lib/alerts.ts
|
||||||
msgid "Triggers when 1 minute load average exceeds a threshold"
|
msgid "Triggers when 1 minute load average exceeds a threshold"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -1095,6 +1141,10 @@ msgstr "Oppe"
|
|||||||
msgid "Up ({upSystemsLength})"
|
msgid "Up ({upSystemsLength})"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Upload"
|
||||||
|
msgstr "Last opp"
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
msgid "Uptime"
|
msgid "Uptime"
|
||||||
msgstr "Oppetid"
|
msgstr "Oppetid"
|
||||||
|
|||||||
@@ -363,6 +363,14 @@ msgstr "Utworzono"
|
|||||||
msgid "Critical (%)"
|
msgid "Critical (%)"
|
||||||
msgstr "Krytyczny (%)"
|
msgstr "Krytyczny (%)"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Cumulative Download"
|
||||||
|
msgstr "Pobieranie skumulowane"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Cumulative Upload"
|
||||||
|
msgstr "Wysyłanie skumulowane"
|
||||||
|
|
||||||
#. Context: Battery state
|
#. Context: Battery state
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
msgid "Current state"
|
msgid "Current state"
|
||||||
@@ -441,6 +449,10 @@ msgstr "Nie działa"
|
|||||||
msgid "Down ({downSystemsLength})"
|
msgid "Down ({downSystemsLength})"
|
||||||
msgstr "Nie działa ({downSystemsLength})"
|
msgstr "Nie działa ({downSystemsLength})"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Download"
|
||||||
|
msgstr "Pobierz"
|
||||||
|
|
||||||
#: src/components/alerts-history-columns.tsx
|
#: src/components/alerts-history-columns.tsx
|
||||||
msgid "Duration"
|
msgid "Duration"
|
||||||
msgstr "Czas trwania"
|
msgstr "Czas trwania"
|
||||||
@@ -452,6 +464,7 @@ msgstr "Edytuj"
|
|||||||
|
|
||||||
#: src/components/login/auth-form.tsx
|
#: src/components/login/auth-form.tsx
|
||||||
#: src/components/login/forgot-pass-form.tsx
|
#: src/components/login/forgot-pass-form.tsx
|
||||||
|
#: src/components/login/otp-forms.tsx
|
||||||
msgid "Email"
|
msgid "Email"
|
||||||
msgstr "E-mail"
|
msgstr "E-mail"
|
||||||
|
|
||||||
@@ -472,6 +485,10 @@ msgstr "Wprowadź adres e-mail, aby zresetować hasło"
|
|||||||
msgid "Enter email address..."
|
msgid "Enter email address..."
|
||||||
msgstr "Wprowadź adres e-mail..."
|
msgstr "Wprowadź adres e-mail..."
|
||||||
|
|
||||||
|
#: src/components/login/otp-forms.tsx
|
||||||
|
msgid "Enter your one-time password."
|
||||||
|
msgstr "Wprowadź swoje jednorazowe hasło."
|
||||||
|
|
||||||
#: src/components/login/auth-form.tsx
|
#: src/components/login/auth-form.tsx
|
||||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||||
#: src/components/routes/settings/config-yaml.tsx
|
#: src/components/routes/settings/config-yaml.tsx
|
||||||
@@ -542,6 +559,12 @@ msgstr "Na <0>{min}</0> {min, plural, one {minutę} other {minut}}"
|
|||||||
msgid "Forgot password?"
|
msgid "Forgot password?"
|
||||||
msgstr "Zapomniałeś hasła?"
|
msgstr "Zapomniałeś hasła?"
|
||||||
|
|
||||||
|
#: src/components/add-system.tsx
|
||||||
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
|
msgctxt "Button to copy install command"
|
||||||
|
msgid "FreeBSD command"
|
||||||
|
msgstr "Polecenie FreeBSD"
|
||||||
|
|
||||||
#. Context: Battery state
|
#. Context: Battery state
|
||||||
#: src/lib/i18n.ts
|
#: src/lib/i18n.ts
|
||||||
msgid "Full"
|
msgid "Full"
|
||||||
@@ -645,6 +668,7 @@ msgid "Manage display and notification preferences."
|
|||||||
msgstr "Zarządzaj preferencjami wyświetlania i powiadomień."
|
msgstr "Zarządzaj preferencjami wyświetlania i powiadomień."
|
||||||
|
|
||||||
#: src/components/add-system.tsx
|
#: src/components/add-system.tsx
|
||||||
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
msgid "Manual setup instructions"
|
msgid "Manual setup instructions"
|
||||||
msgstr "Instrukcja ręcznej konfiguracji"
|
msgstr "Instrukcja ręcznej konfiguracji"
|
||||||
|
|
||||||
@@ -680,6 +704,8 @@ msgid "Network traffic of docker containers"
|
|||||||
msgstr "Ruch sieciowy kontenerów Docker."
|
msgstr "Ruch sieciowy kontenerów Docker."
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
msgid "Network traffic of public interfaces"
|
msgid "Network traffic of public interfaces"
|
||||||
msgstr "Ruch sieciowy interfejsów publicznych"
|
msgstr "Ruch sieciowy interfejsów publicznych"
|
||||||
|
|
||||||
@@ -715,6 +741,10 @@ msgstr "Wsparcie OAuth 2 / OIDC"
|
|||||||
msgid "On each restart, systems in the database will be updated to match the systems defined in the file."
|
msgid "On each restart, systems in the database will be updated to match the systems defined in the file."
|
||||||
msgstr "Przy każdym ponownym uruchomieniu systemy w bazie danych będą aktualizowane, aby odpowiadały systemom zdefiniowanym w pliku."
|
msgstr "Przy każdym ponownym uruchomieniu systemy w bazie danych będą aktualizowane, aby odpowiadały systemom zdefiniowanym w pliku."
|
||||||
|
|
||||||
|
#: src/components/login/auth-form.tsx
|
||||||
|
msgid "One-time password"
|
||||||
|
msgstr "Hasło jednorazowe"
|
||||||
|
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
@@ -833,6 +863,14 @@ msgstr "Czytaj"
|
|||||||
msgid "Received"
|
msgid "Received"
|
||||||
msgstr "Otrzymane"
|
msgstr "Otrzymane"
|
||||||
|
|
||||||
|
#: src/components/login/login.tsx
|
||||||
|
msgid "Request a one-time password"
|
||||||
|
msgstr "Zażądaj jednorazowego hasła"
|
||||||
|
|
||||||
|
#: src/components/login/otp-forms.tsx
|
||||||
|
msgid "Request OTP"
|
||||||
|
msgstr "Zażądaj OTP"
|
||||||
|
|
||||||
#: src/components/login/forgot-pass-form.tsx
|
#: src/components/login/forgot-pass-form.tsx
|
||||||
msgid "Reset Password"
|
msgid "Reset Password"
|
||||||
msgstr "Resetuj hasło"
|
msgstr "Resetuj hasło"
|
||||||
@@ -888,10 +926,6 @@ msgstr "Wysłane"
|
|||||||
msgid "Set percentage thresholds for meter colors."
|
msgid "Set percentage thresholds for meter colors."
|
||||||
msgstr "Ustaw progi procentowe dla kolorów mierników."
|
msgstr "Ustaw progi procentowe dla kolorów mierników."
|
||||||
|
|
||||||
#: src/components/routes/settings/general.tsx
|
|
||||||
msgid "Sets the default time range for charts when a system is viewed."
|
|
||||||
msgstr "Ustawia domyślny zakres czasowy dla wykresów, gdy system jest wyświetlony."
|
|
||||||
|
|
||||||
#: src/components/command-palette.tsx
|
#: src/components/command-palette.tsx
|
||||||
#: src/components/command-palette.tsx
|
#: src/components/command-palette.tsx
|
||||||
#: src/components/routes/settings/layout.tsx
|
#: src/components/routes/settings/layout.tsx
|
||||||
@@ -1002,6 +1036,10 @@ msgstr "Przepustowość {extraFsName}"
|
|||||||
msgid "Throughput of root filesystem"
|
msgid "Throughput of root filesystem"
|
||||||
msgstr "Przepustowość głównego systemu plików"
|
msgstr "Przepustowość głównego systemu plików"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/general.tsx
|
||||||
|
msgid "Time format"
|
||||||
|
msgstr "Format czasu"
|
||||||
|
|
||||||
#: src/components/routes/settings/notifications.tsx
|
#: src/components/routes/settings/notifications.tsx
|
||||||
msgid "To email(s)"
|
msgid "To email(s)"
|
||||||
msgstr "Do e-mail(ów)"
|
msgstr "Do e-mail(ów)"
|
||||||
@@ -1034,6 +1072,14 @@ msgstr "Tokeny umożliwiają agentom łączenie się i rejestrację. Odciski pal
|
|||||||
msgid "Tokens and fingerprints are used to authenticate WebSocket connections to the hub."
|
msgid "Tokens and fingerprints are used to authenticate WebSocket connections to the hub."
|
||||||
msgstr "Tokeny i odciski palców (fingerprinty) służą do uwierzytelniania połączeń WebSocket z hubem."
|
msgstr "Tokeny i odciski palców (fingerprinty) służą do uwierzytelniania połączeń WebSocket z hubem."
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Total data received for each interface"
|
||||||
|
msgstr "Całkowita ilość danych odebranych dla każdego interfejsu"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Total data sent for each interface"
|
||||||
|
msgstr "Całkowita ilość danych wysłanych dla każdego interfejsu"
|
||||||
|
|
||||||
#: src/lib/alerts.ts
|
#: src/lib/alerts.ts
|
||||||
msgid "Triggers when 1 minute load average exceeds a threshold"
|
msgid "Triggers when 1 minute load average exceeds a threshold"
|
||||||
msgstr "Uruchamia się, gdy 1-minutowe średnie obciążenie systemu przekroczy ustawiony próg"
|
msgstr "Uruchamia się, gdy 1-minutowe średnie obciążenie systemu przekroczy ustawiony próg"
|
||||||
@@ -1095,6 +1141,10 @@ msgstr "Działa"
|
|||||||
msgid "Up ({upSystemsLength})"
|
msgid "Up ({upSystemsLength})"
|
||||||
msgstr "Działa ({upSystemsLength})"
|
msgstr "Działa ({upSystemsLength})"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Upload"
|
||||||
|
msgstr "Wyślij"
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
msgid "Uptime"
|
msgid "Uptime"
|
||||||
msgstr "Czas pracy"
|
msgstr "Czas pracy"
|
||||||
|
|||||||
@@ -363,6 +363,14 @@ msgstr "Criado"
|
|||||||
msgid "Critical (%)"
|
msgid "Critical (%)"
|
||||||
msgstr "Crítico (%)"
|
msgstr "Crítico (%)"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Cumulative Download"
|
||||||
|
msgstr "Download cumulativo"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Cumulative Upload"
|
||||||
|
msgstr "Upload cumulativo"
|
||||||
|
|
||||||
#. Context: Battery state
|
#. Context: Battery state
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
msgid "Current state"
|
msgid "Current state"
|
||||||
@@ -441,6 +449,10 @@ msgstr "“Desligado”"
|
|||||||
msgid "Down ({downSystemsLength})"
|
msgid "Down ({downSystemsLength})"
|
||||||
msgstr "Inativo ({downSystemsLength})"
|
msgstr "Inativo ({downSystemsLength})"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Download"
|
||||||
|
msgstr "Transferir"
|
||||||
|
|
||||||
#: src/components/alerts-history-columns.tsx
|
#: src/components/alerts-history-columns.tsx
|
||||||
msgid "Duration"
|
msgid "Duration"
|
||||||
msgstr "Duração"
|
msgstr "Duração"
|
||||||
@@ -452,6 +464,7 @@ msgstr "Editar"
|
|||||||
|
|
||||||
#: src/components/login/auth-form.tsx
|
#: src/components/login/auth-form.tsx
|
||||||
#: src/components/login/forgot-pass-form.tsx
|
#: src/components/login/forgot-pass-form.tsx
|
||||||
|
#: src/components/login/otp-forms.tsx
|
||||||
msgid "Email"
|
msgid "Email"
|
||||||
msgstr "Email"
|
msgstr "Email"
|
||||||
|
|
||||||
@@ -472,6 +485,10 @@ msgstr "Digite o endereço de email para redefinir a senha"
|
|||||||
msgid "Enter email address..."
|
msgid "Enter email address..."
|
||||||
msgstr "Digite o endereço de email..."
|
msgstr "Digite o endereço de email..."
|
||||||
|
|
||||||
|
#: src/components/login/otp-forms.tsx
|
||||||
|
msgid "Enter your one-time password."
|
||||||
|
msgstr "Insira a sua senha de uso único."
|
||||||
|
|
||||||
#: src/components/login/auth-form.tsx
|
#: src/components/login/auth-form.tsx
|
||||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||||
#: src/components/routes/settings/config-yaml.tsx
|
#: src/components/routes/settings/config-yaml.tsx
|
||||||
@@ -542,6 +559,12 @@ msgstr "Por <0>{min}</0> {min, plural, one {minuto} other {minutos}}"
|
|||||||
msgid "Forgot password?"
|
msgid "Forgot password?"
|
||||||
msgstr "Esqueceu a senha?"
|
msgstr "Esqueceu a senha?"
|
||||||
|
|
||||||
|
#: src/components/add-system.tsx
|
||||||
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
|
msgctxt "Button to copy install command"
|
||||||
|
msgid "FreeBSD command"
|
||||||
|
msgstr "Comando FreeBSD"
|
||||||
|
|
||||||
#. Context: Battery state
|
#. Context: Battery state
|
||||||
#: src/lib/i18n.ts
|
#: src/lib/i18n.ts
|
||||||
msgid "Full"
|
msgid "Full"
|
||||||
@@ -645,6 +668,7 @@ msgid "Manage display and notification preferences."
|
|||||||
msgstr "Gerenciar preferências de exibição e notificação."
|
msgstr "Gerenciar preferências de exibição e notificação."
|
||||||
|
|
||||||
#: src/components/add-system.tsx
|
#: src/components/add-system.tsx
|
||||||
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
msgid "Manual setup instructions"
|
msgid "Manual setup instructions"
|
||||||
msgstr "Instruções de configuração manual"
|
msgstr "Instruções de configuração manual"
|
||||||
|
|
||||||
@@ -680,6 +704,8 @@ msgid "Network traffic of docker containers"
|
|||||||
msgstr "Tráfego de rede dos contêineres Docker"
|
msgstr "Tráfego de rede dos contêineres Docker"
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
msgid "Network traffic of public interfaces"
|
msgid "Network traffic of public interfaces"
|
||||||
msgstr "Tráfego de rede das interfaces públicas"
|
msgstr "Tráfego de rede das interfaces públicas"
|
||||||
|
|
||||||
@@ -715,6 +741,10 @@ msgstr "Suporte a OAuth 2 / OIDC"
|
|||||||
msgid "On each restart, systems in the database will be updated to match the systems defined in the file."
|
msgid "On each restart, systems in the database will be updated to match the systems defined in the file."
|
||||||
msgstr "A cada reinício, os sistemas no banco de dados serão atualizados para corresponder aos sistemas definidos no arquivo."
|
msgstr "A cada reinício, os sistemas no banco de dados serão atualizados para corresponder aos sistemas definidos no arquivo."
|
||||||
|
|
||||||
|
#: src/components/login/auth-form.tsx
|
||||||
|
msgid "One-time password"
|
||||||
|
msgstr "Senha de uso único"
|
||||||
|
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
@@ -833,6 +863,14 @@ msgstr "Ler"
|
|||||||
msgid "Received"
|
msgid "Received"
|
||||||
msgstr "Recebido"
|
msgstr "Recebido"
|
||||||
|
|
||||||
|
#: src/components/login/login.tsx
|
||||||
|
msgid "Request a one-time password"
|
||||||
|
msgstr "Solicitar senha de uso único"
|
||||||
|
|
||||||
|
#: src/components/login/otp-forms.tsx
|
||||||
|
msgid "Request OTP"
|
||||||
|
msgstr "Solicitar OTP"
|
||||||
|
|
||||||
#: src/components/login/forgot-pass-form.tsx
|
#: src/components/login/forgot-pass-form.tsx
|
||||||
msgid "Reset Password"
|
msgid "Reset Password"
|
||||||
msgstr "Redefinir Senha"
|
msgstr "Redefinir Senha"
|
||||||
@@ -888,10 +926,6 @@ msgstr "Enviado"
|
|||||||
msgid "Set percentage thresholds for meter colors."
|
msgid "Set percentage thresholds for meter colors."
|
||||||
msgstr "Defina os limiares de porcentagem para as cores do medidor."
|
msgstr "Defina os limiares de porcentagem para as cores do medidor."
|
||||||
|
|
||||||
#: src/components/routes/settings/general.tsx
|
|
||||||
msgid "Sets the default time range for charts when a system is viewed."
|
|
||||||
msgstr "Define o intervalo de tempo padrão para gráficos quando um sistema é visualizado."
|
|
||||||
|
|
||||||
#: src/components/command-palette.tsx
|
#: src/components/command-palette.tsx
|
||||||
#: src/components/command-palette.tsx
|
#: src/components/command-palette.tsx
|
||||||
#: src/components/routes/settings/layout.tsx
|
#: src/components/routes/settings/layout.tsx
|
||||||
@@ -1002,6 +1036,10 @@ msgstr "Taxa de transferência de {extraFsName}"
|
|||||||
msgid "Throughput of root filesystem"
|
msgid "Throughput of root filesystem"
|
||||||
msgstr "Taxa de transferência do sistema de arquivos raiz"
|
msgstr "Taxa de transferência do sistema de arquivos raiz"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/general.tsx
|
||||||
|
msgid "Time format"
|
||||||
|
msgstr "Formato de hora"
|
||||||
|
|
||||||
#: src/components/routes/settings/notifications.tsx
|
#: src/components/routes/settings/notifications.tsx
|
||||||
msgid "To email(s)"
|
msgid "To email(s)"
|
||||||
msgstr "Para email(s)"
|
msgstr "Para email(s)"
|
||||||
@@ -1034,6 +1072,14 @@ msgstr "Os tokens permitem que os agentes se conectem e registrem. As impressõe
|
|||||||
msgid "Tokens and fingerprints are used to authenticate WebSocket connections to the hub."
|
msgid "Tokens and fingerprints are used to authenticate WebSocket connections to the hub."
|
||||||
msgstr "Tokens e impressões digitais são usados para autenticar conexões WebSocket ao hub."
|
msgstr "Tokens e impressões digitais são usados para autenticar conexões WebSocket ao hub."
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Total data received for each interface"
|
||||||
|
msgstr "Dados totais recebidos para cada interface"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Total data sent for each interface"
|
||||||
|
msgstr "Dados totais enviados para cada interface"
|
||||||
|
|
||||||
#: src/lib/alerts.ts
|
#: src/lib/alerts.ts
|
||||||
msgid "Triggers when 1 minute load average exceeds a threshold"
|
msgid "Triggers when 1 minute load average exceeds a threshold"
|
||||||
msgstr "Dispara quando a média de carga de 1 minuto excede um limite"
|
msgstr "Dispara quando a média de carga de 1 minuto excede um limite"
|
||||||
@@ -1095,6 +1141,10 @@ msgstr "“Ligado”"
|
|||||||
msgid "Up ({upSystemsLength})"
|
msgid "Up ({upSystemsLength})"
|
||||||
msgstr "Ativo ({upSystemsLength})"
|
msgstr "Ativo ({upSystemsLength})"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Upload"
|
||||||
|
msgstr "Carregar"
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
msgid "Uptime"
|
msgid "Uptime"
|
||||||
msgstr "Tempo de Atividade"
|
msgstr "Tempo de Atividade"
|
||||||
|
|||||||
@@ -363,6 +363,14 @@ msgstr "Создано"
|
|||||||
msgid "Critical (%)"
|
msgid "Critical (%)"
|
||||||
msgstr "Критический (%)"
|
msgstr "Критический (%)"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Cumulative Download"
|
||||||
|
msgstr "Совокупная загрузка"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Cumulative Upload"
|
||||||
|
msgstr "Совокупная выгрузка"
|
||||||
|
|
||||||
#. Context: Battery state
|
#. Context: Battery state
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
msgid "Current state"
|
msgid "Current state"
|
||||||
@@ -441,6 +449,10 @@ msgstr "Не в сети"
|
|||||||
msgid "Down ({downSystemsLength})"
|
msgid "Down ({downSystemsLength})"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Download"
|
||||||
|
msgstr "Скачать"
|
||||||
|
|
||||||
#: src/components/alerts-history-columns.tsx
|
#: src/components/alerts-history-columns.tsx
|
||||||
msgid "Duration"
|
msgid "Duration"
|
||||||
msgstr "Длительность"
|
msgstr "Длительность"
|
||||||
@@ -452,6 +464,7 @@ 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
|
||||||
msgid "Email"
|
msgid "Email"
|
||||||
msgstr "Электронная почта"
|
msgstr "Электронная почта"
|
||||||
|
|
||||||
@@ -472,6 +485,10 @@ msgstr "Введите адрес электронной почты для сб
|
|||||||
msgid "Enter email address..."
|
msgid "Enter email address..."
|
||||||
msgstr "Введите адрес электронной почты..."
|
msgstr "Введите адрес электронной почты..."
|
||||||
|
|
||||||
|
#: src/components/login/otp-forms.tsx
|
||||||
|
msgid "Enter your one-time password."
|
||||||
|
msgstr "Введите ваш одноразовый пароль."
|
||||||
|
|
||||||
#: src/components/login/auth-form.tsx
|
#: src/components/login/auth-form.tsx
|
||||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||||
#: src/components/routes/settings/config-yaml.tsx
|
#: src/components/routes/settings/config-yaml.tsx
|
||||||
@@ -542,6 +559,12 @@ msgstr "На <0>{min}</0> {min, plural, one {минуту} other {минут}}"
|
|||||||
msgid "Forgot password?"
|
msgid "Forgot password?"
|
||||||
msgstr "Забыли пароль?"
|
msgstr "Забыли пароль?"
|
||||||
|
|
||||||
|
#: src/components/add-system.tsx
|
||||||
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
|
msgctxt "Button to copy install command"
|
||||||
|
msgid "FreeBSD command"
|
||||||
|
msgstr "Команда FreeBSD"
|
||||||
|
|
||||||
#. Context: Battery state
|
#. Context: Battery state
|
||||||
#: src/lib/i18n.ts
|
#: src/lib/i18n.ts
|
||||||
msgid "Full"
|
msgid "Full"
|
||||||
@@ -645,6 +668,7 @@ msgid "Manage display and notification preferences."
|
|||||||
msgstr "Управляйте предпочтениями отображения и уведомлений."
|
msgstr "Управляйте предпочтениями отображения и уведомлений."
|
||||||
|
|
||||||
#: src/components/add-system.tsx
|
#: src/components/add-system.tsx
|
||||||
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
msgid "Manual setup instructions"
|
msgid "Manual setup instructions"
|
||||||
msgstr "Инструкции по ручной настройке"
|
msgstr "Инструкции по ручной настройке"
|
||||||
|
|
||||||
@@ -680,6 +704,8 @@ msgid "Network traffic of docker containers"
|
|||||||
msgstr "Сетевой трафик контейнеров Docker"
|
msgstr "Сетевой трафик контейнеров Docker"
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
msgid "Network traffic of public interfaces"
|
msgid "Network traffic of public interfaces"
|
||||||
msgstr "Сетевой трафик публичных интерфейсов"
|
msgstr "Сетевой трафик публичных интерфейсов"
|
||||||
|
|
||||||
@@ -715,6 +741,10 @@ msgstr "Поддержка OAuth 2 / OIDC"
|
|||||||
msgid "On each restart, systems in the database will be updated to match the systems defined in the file."
|
msgid "On each restart, systems in the database will be updated to match the systems defined in the file."
|
||||||
msgstr "При каждом перезапуске системы в базе данных будут обновлены в соответствии с системами, определенными в файле."
|
msgstr "При каждом перезапуске системы в базе данных будут обновлены в соответствии с системами, определенными в файле."
|
||||||
|
|
||||||
|
#: src/components/login/auth-form.tsx
|
||||||
|
msgid "One-time password"
|
||||||
|
msgstr "Одноразовый пароль"
|
||||||
|
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
@@ -833,6 +863,14 @@ msgstr "Чтение"
|
|||||||
msgid "Received"
|
msgid "Received"
|
||||||
msgstr "Получено"
|
msgstr "Получено"
|
||||||
|
|
||||||
|
#: src/components/login/login.tsx
|
||||||
|
msgid "Request a one-time password"
|
||||||
|
msgstr "Запросить одноразовый пароль"
|
||||||
|
|
||||||
|
#: src/components/login/otp-forms.tsx
|
||||||
|
msgid "Request OTP"
|
||||||
|
msgstr "Запросить OTP"
|
||||||
|
|
||||||
#: src/components/login/forgot-pass-form.tsx
|
#: src/components/login/forgot-pass-form.tsx
|
||||||
msgid "Reset Password"
|
msgid "Reset Password"
|
||||||
msgstr "Сбросить пароль"
|
msgstr "Сбросить пароль"
|
||||||
@@ -888,10 +926,6 @@ msgstr "Отправлено"
|
|||||||
msgid "Set percentage thresholds for meter colors."
|
msgid "Set percentage thresholds for meter colors."
|
||||||
msgstr "Установите процентные пороги для цветов счетчиков."
|
msgstr "Установите процентные пороги для цветов счетчиков."
|
||||||
|
|
||||||
#: src/components/routes/settings/general.tsx
|
|
||||||
msgid "Sets the default time range for charts when a system is viewed."
|
|
||||||
msgstr "Устанавливает диапазон времени по умолчанию для графиков при просмотре системы."
|
|
||||||
|
|
||||||
#: src/components/command-palette.tsx
|
#: src/components/command-palette.tsx
|
||||||
#: src/components/command-palette.tsx
|
#: src/components/command-palette.tsx
|
||||||
#: src/components/routes/settings/layout.tsx
|
#: src/components/routes/settings/layout.tsx
|
||||||
@@ -1002,6 +1036,10 @@ msgstr "Пропускная способность {extraFsName}"
|
|||||||
msgid "Throughput of root filesystem"
|
msgid "Throughput of root filesystem"
|
||||||
msgstr "Пропускная способность корневой файловой системы"
|
msgstr "Пропускная способность корневой файловой системы"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/general.tsx
|
||||||
|
msgid "Time format"
|
||||||
|
msgstr "Формат времени"
|
||||||
|
|
||||||
#: src/components/routes/settings/notifications.tsx
|
#: src/components/routes/settings/notifications.tsx
|
||||||
msgid "To email(s)"
|
msgid "To email(s)"
|
||||||
msgstr "На электронную почту"
|
msgstr "На электронную почту"
|
||||||
@@ -1034,6 +1072,14 @@ msgstr "Токены позволяют агентам подключаться
|
|||||||
msgid "Tokens and fingerprints are used to authenticate WebSocket connections to the hub."
|
msgid "Tokens and fingerprints are used to authenticate WebSocket connections to the hub."
|
||||||
msgstr "Токены и отпечатки используются для аутентификации соединений WebSocket с хабом."
|
msgstr "Токены и отпечатки используются для аутентификации соединений WebSocket с хабом."
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Total data received for each interface"
|
||||||
|
msgstr "Общий объем полученных данных для каждого интерфейса"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Total data sent for each interface"
|
||||||
|
msgstr "Общий объем отправленных данных для каждого интерфейса"
|
||||||
|
|
||||||
#: src/lib/alerts.ts
|
#: src/lib/alerts.ts
|
||||||
msgid "Triggers when 1 minute load average exceeds a threshold"
|
msgid "Triggers when 1 minute load average exceeds a threshold"
|
||||||
msgstr "Срабатывает, когда средняя загрузка за 1 минуту превышает порог"
|
msgstr "Срабатывает, когда средняя загрузка за 1 минуту превышает порог"
|
||||||
@@ -1095,6 +1141,10 @@ msgstr "В сети"
|
|||||||
msgid "Up ({upSystemsLength})"
|
msgid "Up ({upSystemsLength})"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Upload"
|
||||||
|
msgstr "Загрузить"
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
msgid "Uptime"
|
msgid "Uptime"
|
||||||
msgstr "Время работы"
|
msgstr "Время работы"
|
||||||
|
|||||||
@@ -363,6 +363,14 @@ msgstr ""
|
|||||||
msgid "Critical (%)"
|
msgid "Critical (%)"
|
||||||
msgstr "Kritično (%)"
|
msgstr "Kritično (%)"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Cumulative Download"
|
||||||
|
msgstr "Kumulativno prenos"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Cumulative Upload"
|
||||||
|
msgstr "Kumulativno nalaganje"
|
||||||
|
|
||||||
#. Context: Battery state
|
#. Context: Battery state
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
msgid "Current state"
|
msgid "Current state"
|
||||||
@@ -441,6 +449,10 @@ msgstr ""
|
|||||||
msgid "Down ({downSystemsLength})"
|
msgid "Down ({downSystemsLength})"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Download"
|
||||||
|
msgstr "Prenesi"
|
||||||
|
|
||||||
#: src/components/alerts-history-columns.tsx
|
#: src/components/alerts-history-columns.tsx
|
||||||
msgid "Duration"
|
msgid "Duration"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -452,6 +464,7 @@ 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
|
||||||
msgid "Email"
|
msgid "Email"
|
||||||
msgstr "E-pošta"
|
msgstr "E-pošta"
|
||||||
|
|
||||||
@@ -472,6 +485,10 @@ msgstr "Vnesite e-poštni naslov za ponastavitev gesla"
|
|||||||
msgid "Enter email address..."
|
msgid "Enter email address..."
|
||||||
msgstr "Vnesite e-poštni naslov..."
|
msgstr "Vnesite e-poštni naslov..."
|
||||||
|
|
||||||
|
#: src/components/login/otp-forms.tsx
|
||||||
|
msgid "Enter your one-time password."
|
||||||
|
msgstr "Vnesite svoje enkratno geslo."
|
||||||
|
|
||||||
#: src/components/login/auth-form.tsx
|
#: src/components/login/auth-form.tsx
|
||||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||||
#: src/components/routes/settings/config-yaml.tsx
|
#: src/components/routes/settings/config-yaml.tsx
|
||||||
@@ -542,6 +559,12 @@ msgstr "Za <0>{min}</0> {min, plural, one {minuto} other {minut}}"
|
|||||||
msgid "Forgot password?"
|
msgid "Forgot password?"
|
||||||
msgstr "Pozabljeno geslo?"
|
msgstr "Pozabljeno geslo?"
|
||||||
|
|
||||||
|
#: src/components/add-system.tsx
|
||||||
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
|
msgctxt "Button to copy install command"
|
||||||
|
msgid "FreeBSD command"
|
||||||
|
msgstr "Ukaz FreeBSD"
|
||||||
|
|
||||||
#. Context: Battery state
|
#. Context: Battery state
|
||||||
#: src/lib/i18n.ts
|
#: src/lib/i18n.ts
|
||||||
msgid "Full"
|
msgid "Full"
|
||||||
@@ -645,6 +668,7 @@ msgid "Manage display and notification preferences."
|
|||||||
msgstr "Upravljajte nastavitve prikaza in obvestil."
|
msgstr "Upravljajte nastavitve prikaza in obvestil."
|
||||||
|
|
||||||
#: src/components/add-system.tsx
|
#: src/components/add-system.tsx
|
||||||
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
msgid "Manual setup instructions"
|
msgid "Manual setup instructions"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -680,6 +704,8 @@ msgid "Network traffic of docker containers"
|
|||||||
msgstr "Omrežni promet docker kontejnerjev"
|
msgstr "Omrežni promet docker kontejnerjev"
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
msgid "Network traffic of public interfaces"
|
msgid "Network traffic of public interfaces"
|
||||||
msgstr "Omrežni promet javnih vmesnikov"
|
msgstr "Omrežni promet javnih vmesnikov"
|
||||||
|
|
||||||
@@ -715,6 +741,10 @@ msgstr "Podpora za OAuth 2 / OIDC"
|
|||||||
msgid "On each restart, systems in the database will be updated to match the systems defined in the file."
|
msgid "On each restart, systems in the database will be updated to match the systems defined in the file."
|
||||||
msgstr "Ob vsakem ponovnem zagonu bodo sistemi v zbirki podatkov posodobljeni, da se bodo ujemali s sistemi, definiranimi v datoteki."
|
msgstr "Ob vsakem ponovnem zagonu bodo sistemi v zbirki podatkov posodobljeni, da se bodo ujemali s sistemi, definiranimi v datoteki."
|
||||||
|
|
||||||
|
#: src/components/login/auth-form.tsx
|
||||||
|
msgid "One-time password"
|
||||||
|
msgstr "Enkratno geslo"
|
||||||
|
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
@@ -833,6 +863,14 @@ msgstr "Preberano"
|
|||||||
msgid "Received"
|
msgid "Received"
|
||||||
msgstr "Prejeto"
|
msgstr "Prejeto"
|
||||||
|
|
||||||
|
#: src/components/login/login.tsx
|
||||||
|
msgid "Request a one-time password"
|
||||||
|
msgstr "Zahtevaj enkratno geslo"
|
||||||
|
|
||||||
|
#: src/components/login/otp-forms.tsx
|
||||||
|
msgid "Request OTP"
|
||||||
|
msgstr "Zahtevaj OTP"
|
||||||
|
|
||||||
#: src/components/login/forgot-pass-form.tsx
|
#: src/components/login/forgot-pass-form.tsx
|
||||||
msgid "Reset Password"
|
msgid "Reset Password"
|
||||||
msgstr "Ponastavi geslo"
|
msgstr "Ponastavi geslo"
|
||||||
@@ -888,10 +926,6 @@ msgstr "Poslano"
|
|||||||
msgid "Set percentage thresholds for meter colors."
|
msgid "Set percentage thresholds for meter colors."
|
||||||
msgstr "Nastavite odstotne pragove za barve merilnikov."
|
msgstr "Nastavite odstotne pragove za barve merilnikov."
|
||||||
|
|
||||||
#: src/components/routes/settings/general.tsx
|
|
||||||
msgid "Sets the default time range for charts when a system is viewed."
|
|
||||||
msgstr "Nastavi privzeti časovni obseg za grafikone, ko si ogledujete sistem."
|
|
||||||
|
|
||||||
#: src/components/command-palette.tsx
|
#: src/components/command-palette.tsx
|
||||||
#: src/components/command-palette.tsx
|
#: src/components/command-palette.tsx
|
||||||
#: src/components/routes/settings/layout.tsx
|
#: src/components/routes/settings/layout.tsx
|
||||||
@@ -1002,6 +1036,10 @@ msgstr "Prepustnost {extraFsName}"
|
|||||||
msgid "Throughput of root filesystem"
|
msgid "Throughput of root filesystem"
|
||||||
msgstr "Prepustnost korenskega datotečnega sistema"
|
msgstr "Prepustnost korenskega datotečnega sistema"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/general.tsx
|
||||||
|
msgid "Time format"
|
||||||
|
msgstr "Oblika časa"
|
||||||
|
|
||||||
#: src/components/routes/settings/notifications.tsx
|
#: src/components/routes/settings/notifications.tsx
|
||||||
msgid "To email(s)"
|
msgid "To email(s)"
|
||||||
msgstr "E-pošta za"
|
msgstr "E-pošta za"
|
||||||
@@ -1034,6 +1072,14 @@ msgstr ""
|
|||||||
msgid "Tokens and fingerprints are used to authenticate WebSocket connections to the hub."
|
msgid "Tokens and fingerprints are used to authenticate WebSocket connections to the hub."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Total data received for each interface"
|
||||||
|
msgstr "Skupni prejeti podatki za vsak vmesnik"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Total data sent for each interface"
|
||||||
|
msgstr "Skupni poslani podatki za vsak vmesnik"
|
||||||
|
|
||||||
#: src/lib/alerts.ts
|
#: src/lib/alerts.ts
|
||||||
msgid "Triggers when 1 minute load average exceeds a threshold"
|
msgid "Triggers when 1 minute load average exceeds a threshold"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -1095,6 +1141,10 @@ msgstr ""
|
|||||||
msgid "Up ({upSystemsLength})"
|
msgid "Up ({upSystemsLength})"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Upload"
|
||||||
|
msgstr "Naloži"
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
msgid "Uptime"
|
msgid "Uptime"
|
||||||
msgstr "Čas delovanja"
|
msgstr "Čas delovanja"
|
||||||
|
|||||||
@@ -363,6 +363,14 @@ msgstr "Skapad"
|
|||||||
msgid "Critical (%)"
|
msgid "Critical (%)"
|
||||||
msgstr "Kritisk (%)"
|
msgstr "Kritisk (%)"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Cumulative Download"
|
||||||
|
msgstr "Kumulativ nedladdning"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Cumulative Upload"
|
||||||
|
msgstr "Kumulativ uppladdning"
|
||||||
|
|
||||||
#. Context: Battery state
|
#. Context: Battery state
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
msgid "Current state"
|
msgid "Current state"
|
||||||
@@ -441,6 +449,10 @@ msgstr ""
|
|||||||
msgid "Down ({downSystemsLength})"
|
msgid "Down ({downSystemsLength})"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Download"
|
||||||
|
msgstr "Ladda ner"
|
||||||
|
|
||||||
#: src/components/alerts-history-columns.tsx
|
#: src/components/alerts-history-columns.tsx
|
||||||
msgid "Duration"
|
msgid "Duration"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -452,6 +464,7 @@ 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
|
||||||
msgid "Email"
|
msgid "Email"
|
||||||
msgstr "E-post"
|
msgstr "E-post"
|
||||||
|
|
||||||
@@ -472,6 +485,10 @@ msgstr "Ange e-postadress för att återställa lösenord"
|
|||||||
msgid "Enter email address..."
|
msgid "Enter email address..."
|
||||||
msgstr "Ange e-postadress..."
|
msgstr "Ange e-postadress..."
|
||||||
|
|
||||||
|
#: src/components/login/otp-forms.tsx
|
||||||
|
msgid "Enter your one-time password."
|
||||||
|
msgstr "Ange ditt engångslösenord."
|
||||||
|
|
||||||
#: src/components/login/auth-form.tsx
|
#: src/components/login/auth-form.tsx
|
||||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||||
#: src/components/routes/settings/config-yaml.tsx
|
#: src/components/routes/settings/config-yaml.tsx
|
||||||
@@ -542,6 +559,12 @@ msgstr "Under <0>{min}</0> {min, plural, one {minut} other {minuter}}"
|
|||||||
msgid "Forgot password?"
|
msgid "Forgot password?"
|
||||||
msgstr "Glömt lösenordet?"
|
msgstr "Glömt lösenordet?"
|
||||||
|
|
||||||
|
#: src/components/add-system.tsx
|
||||||
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
|
msgctxt "Button to copy install command"
|
||||||
|
msgid "FreeBSD command"
|
||||||
|
msgstr "FreeBSD kommando"
|
||||||
|
|
||||||
#. Context: Battery state
|
#. Context: Battery state
|
||||||
#: src/lib/i18n.ts
|
#: src/lib/i18n.ts
|
||||||
msgid "Full"
|
msgid "Full"
|
||||||
@@ -645,6 +668,7 @@ msgid "Manage display and notification preferences."
|
|||||||
msgstr "Hantera visnings- och aviseringsinställningar."
|
msgstr "Hantera visnings- och aviseringsinställningar."
|
||||||
|
|
||||||
#: src/components/add-system.tsx
|
#: src/components/add-system.tsx
|
||||||
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
msgid "Manual setup instructions"
|
msgid "Manual setup instructions"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -680,6 +704,8 @@ msgid "Network traffic of docker containers"
|
|||||||
msgstr "Nätverkstrafik för dockercontainrar"
|
msgstr "Nätverkstrafik för dockercontainrar"
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
msgid "Network traffic of public interfaces"
|
msgid "Network traffic of public interfaces"
|
||||||
msgstr "Nätverkstrafik för publika gränssnitt"
|
msgstr "Nätverkstrafik för publika gränssnitt"
|
||||||
|
|
||||||
@@ -715,6 +741,10 @@ msgstr "Stöd för OAuth 2 / OIDC"
|
|||||||
msgid "On each restart, systems in the database will be updated to match the systems defined in the file."
|
msgid "On each restart, systems in the database will be updated to match the systems defined in the file."
|
||||||
msgstr "Vid varje omstart kommer systemen i databasen att uppdateras för att matcha systemen som definieras i filen."
|
msgstr "Vid varje omstart kommer systemen i databasen att uppdateras för att matcha systemen som definieras i filen."
|
||||||
|
|
||||||
|
#: src/components/login/auth-form.tsx
|
||||||
|
msgid "One-time password"
|
||||||
|
msgstr "Engångslösenord"
|
||||||
|
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
@@ -833,6 +863,14 @@ msgstr "Läs"
|
|||||||
msgid "Received"
|
msgid "Received"
|
||||||
msgstr "Mottaget"
|
msgstr "Mottaget"
|
||||||
|
|
||||||
|
#: src/components/login/login.tsx
|
||||||
|
msgid "Request a one-time password"
|
||||||
|
msgstr "Begär engångslösenord"
|
||||||
|
|
||||||
|
#: src/components/login/otp-forms.tsx
|
||||||
|
msgid "Request OTP"
|
||||||
|
msgstr "Begär OTP"
|
||||||
|
|
||||||
#: src/components/login/forgot-pass-form.tsx
|
#: src/components/login/forgot-pass-form.tsx
|
||||||
msgid "Reset Password"
|
msgid "Reset Password"
|
||||||
msgstr "Återställ lösenord"
|
msgstr "Återställ lösenord"
|
||||||
@@ -888,10 +926,6 @@ msgstr "Skickat"
|
|||||||
msgid "Set percentage thresholds for meter colors."
|
msgid "Set percentage thresholds for meter colors."
|
||||||
msgstr "Ställ in procentuella tröskelvärden för mätarfärger."
|
msgstr "Ställ in procentuella tröskelvärden för mätarfärger."
|
||||||
|
|
||||||
#: src/components/routes/settings/general.tsx
|
|
||||||
msgid "Sets the default time range for charts when a system is viewed."
|
|
||||||
msgstr "Anger standardtidsintervallet för diagram när ett system visas."
|
|
||||||
|
|
||||||
#: src/components/command-palette.tsx
|
#: src/components/command-palette.tsx
|
||||||
#: src/components/command-palette.tsx
|
#: src/components/command-palette.tsx
|
||||||
#: src/components/routes/settings/layout.tsx
|
#: src/components/routes/settings/layout.tsx
|
||||||
@@ -1002,6 +1036,10 @@ msgstr "Genomströmning av {extraFsName}"
|
|||||||
msgid "Throughput of root filesystem"
|
msgid "Throughput of root filesystem"
|
||||||
msgstr "Genomströmning av rotfilsystemet"
|
msgstr "Genomströmning av rotfilsystemet"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/general.tsx
|
||||||
|
msgid "Time format"
|
||||||
|
msgstr "Tidsformat"
|
||||||
|
|
||||||
#: src/components/routes/settings/notifications.tsx
|
#: src/components/routes/settings/notifications.tsx
|
||||||
msgid "To email(s)"
|
msgid "To email(s)"
|
||||||
msgstr "Till e-postadress(er)"
|
msgstr "Till e-postadress(er)"
|
||||||
@@ -1034,6 +1072,14 @@ msgstr ""
|
|||||||
msgid "Tokens and fingerprints are used to authenticate WebSocket connections to the hub."
|
msgid "Tokens and fingerprints are used to authenticate WebSocket connections to the hub."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Total data received for each interface"
|
||||||
|
msgstr "Totalt mottagen data för varje gränssnitt"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Total data sent for each interface"
|
||||||
|
msgstr "Totalt skickad data för varje gränssnitt"
|
||||||
|
|
||||||
#: src/lib/alerts.ts
|
#: src/lib/alerts.ts
|
||||||
msgid "Triggers when 1 minute load average exceeds a threshold"
|
msgid "Triggers when 1 minute load average exceeds a threshold"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -1095,6 +1141,10 @@ msgstr ""
|
|||||||
msgid "Up ({upSystemsLength})"
|
msgid "Up ({upSystemsLength})"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Upload"
|
||||||
|
msgstr "Ladda upp"
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
msgid "Uptime"
|
msgid "Uptime"
|
||||||
msgstr "Drifttid"
|
msgstr "Drifttid"
|
||||||
|
|||||||
@@ -363,6 +363,14 @@ msgstr "Oluşturuldu"
|
|||||||
msgid "Critical (%)"
|
msgid "Critical (%)"
|
||||||
msgstr "Kritik (%)"
|
msgstr "Kritik (%)"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Cumulative Download"
|
||||||
|
msgstr "Kümülatif İndirme"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Cumulative Upload"
|
||||||
|
msgstr "Kümülatif Yükleme"
|
||||||
|
|
||||||
#. Context: Battery state
|
#. Context: Battery state
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
msgid "Current state"
|
msgid "Current state"
|
||||||
@@ -441,6 +449,10 @@ msgstr "Kapalı"
|
|||||||
msgid "Down ({downSystemsLength})"
|
msgid "Down ({downSystemsLength})"
|
||||||
msgstr "Kapalı ({downSystemsLength})"
|
msgstr "Kapalı ({downSystemsLength})"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Download"
|
||||||
|
msgstr "İndir"
|
||||||
|
|
||||||
#: src/components/alerts-history-columns.tsx
|
#: src/components/alerts-history-columns.tsx
|
||||||
msgid "Duration"
|
msgid "Duration"
|
||||||
msgstr "Süre"
|
msgstr "Süre"
|
||||||
@@ -452,6 +464,7 @@ msgstr "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
|
||||||
msgid "Email"
|
msgid "Email"
|
||||||
msgstr "E-posta"
|
msgstr "E-posta"
|
||||||
|
|
||||||
@@ -472,6 +485,10 @@ msgstr "Şifreyi sıfırlamak için e-posta adresini girin"
|
|||||||
msgid "Enter email address..."
|
msgid "Enter email address..."
|
||||||
msgstr "E-posta adresini girin..."
|
msgstr "E-posta adresini girin..."
|
||||||
|
|
||||||
|
#: src/components/login/otp-forms.tsx
|
||||||
|
msgid "Enter your one-time password."
|
||||||
|
msgstr "Tek kullanımlık şifrenizi girin."
|
||||||
|
|
||||||
#: src/components/login/auth-form.tsx
|
#: src/components/login/auth-form.tsx
|
||||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||||
#: src/components/routes/settings/config-yaml.tsx
|
#: src/components/routes/settings/config-yaml.tsx
|
||||||
@@ -542,6 +559,12 @@ msgstr "<0>{min}</0> {min, plural, one {dakika} other {dakika}} için"
|
|||||||
msgid "Forgot password?"
|
msgid "Forgot password?"
|
||||||
msgstr "Şifrenizi mi unuttunuz?"
|
msgstr "Şifrenizi mi unuttunuz?"
|
||||||
|
|
||||||
|
#: src/components/add-system.tsx
|
||||||
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
|
msgctxt "Button to copy install command"
|
||||||
|
msgid "FreeBSD command"
|
||||||
|
msgstr "FreeBSD komutu"
|
||||||
|
|
||||||
#. Context: Battery state
|
#. Context: Battery state
|
||||||
#: src/lib/i18n.ts
|
#: src/lib/i18n.ts
|
||||||
msgid "Full"
|
msgid "Full"
|
||||||
@@ -645,6 +668,7 @@ msgid "Manage display and notification preferences."
|
|||||||
msgstr "Görüntüleme ve bildirim tercihlerini yönetin."
|
msgstr "Görüntüleme ve bildirim tercihlerini yönetin."
|
||||||
|
|
||||||
#: src/components/add-system.tsx
|
#: src/components/add-system.tsx
|
||||||
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
msgid "Manual setup instructions"
|
msgid "Manual setup instructions"
|
||||||
msgstr "Manuel kurulum talimatları"
|
msgstr "Manuel kurulum talimatları"
|
||||||
|
|
||||||
@@ -680,6 +704,8 @@ msgid "Network traffic of docker containers"
|
|||||||
msgstr "Docker konteynerlerinin ağ trafiği"
|
msgstr "Docker konteynerlerinin ağ trafiği"
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
msgid "Network traffic of public interfaces"
|
msgid "Network traffic of public interfaces"
|
||||||
msgstr "Genel arayüzlerin ağ trafiği"
|
msgstr "Genel arayüzlerin ağ trafiği"
|
||||||
|
|
||||||
@@ -715,6 +741,10 @@ msgstr "OAuth 2 / OIDC desteği"
|
|||||||
msgid "On each restart, systems in the database will be updated to match the systems defined in the file."
|
msgid "On each restart, systems in the database will be updated to match the systems defined in the file."
|
||||||
msgstr "Her yeniden başlatmada, veritabanındaki sistemler dosyada tanımlanan sistemlerle eşleşecek şekilde güncellenecektir."
|
msgstr "Her yeniden başlatmada, veritabanındaki sistemler dosyada tanımlanan sistemlerle eşleşecek şekilde güncellenecektir."
|
||||||
|
|
||||||
|
#: src/components/login/auth-form.tsx
|
||||||
|
msgid "One-time password"
|
||||||
|
msgstr "Tek kullanımlık şifre"
|
||||||
|
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
@@ -833,6 +863,14 @@ msgstr "Oku"
|
|||||||
msgid "Received"
|
msgid "Received"
|
||||||
msgstr "Alındı"
|
msgstr "Alındı"
|
||||||
|
|
||||||
|
#: src/components/login/login.tsx
|
||||||
|
msgid "Request a one-time password"
|
||||||
|
msgstr "Tek kullanımlık şifre iste"
|
||||||
|
|
||||||
|
#: src/components/login/otp-forms.tsx
|
||||||
|
msgid "Request OTP"
|
||||||
|
msgstr "OTP iste"
|
||||||
|
|
||||||
#: src/components/login/forgot-pass-form.tsx
|
#: src/components/login/forgot-pass-form.tsx
|
||||||
msgid "Reset Password"
|
msgid "Reset Password"
|
||||||
msgstr "Şifreyi Sıfırla"
|
msgstr "Şifreyi Sıfırla"
|
||||||
@@ -888,10 +926,6 @@ msgstr "Gönderildi"
|
|||||||
msgid "Set percentage thresholds for meter colors."
|
msgid "Set percentage thresholds for meter colors."
|
||||||
msgstr "Sayaç renkleri için yüzde eşiklerini ayarlayın."
|
msgstr "Sayaç renkleri için yüzde eşiklerini ayarlayın."
|
||||||
|
|
||||||
#: src/components/routes/settings/general.tsx
|
|
||||||
msgid "Sets the default time range for charts when a system is viewed."
|
|
||||||
msgstr "Bir sistem görüntülendiğinde grafikler için varsayılan zaman aralığını ayarlar."
|
|
||||||
|
|
||||||
#: src/components/command-palette.tsx
|
#: src/components/command-palette.tsx
|
||||||
#: src/components/command-palette.tsx
|
#: src/components/command-palette.tsx
|
||||||
#: src/components/routes/settings/layout.tsx
|
#: src/components/routes/settings/layout.tsx
|
||||||
@@ -1002,6 +1036,10 @@ msgstr "{extraFsName} verimliliği"
|
|||||||
msgid "Throughput of root filesystem"
|
msgid "Throughput of root filesystem"
|
||||||
msgstr "Kök dosya sisteminin verimliliği"
|
msgstr "Kök dosya sisteminin verimliliği"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/general.tsx
|
||||||
|
msgid "Time format"
|
||||||
|
msgstr "Zaman formatı"
|
||||||
|
|
||||||
#: src/components/routes/settings/notifications.tsx
|
#: src/components/routes/settings/notifications.tsx
|
||||||
msgid "To email(s)"
|
msgid "To email(s)"
|
||||||
msgstr "E-posta(lar)a"
|
msgstr "E-posta(lar)a"
|
||||||
@@ -1034,6 +1072,14 @@ msgstr "Token'lar agentların bağlanıp kaydolmasına izin verir. Parmak izleri
|
|||||||
msgid "Tokens and fingerprints are used to authenticate WebSocket connections to the hub."
|
msgid "Tokens and fingerprints are used to authenticate WebSocket connections to the hub."
|
||||||
msgstr "Token'lar ve parmak izleri hub'a WebSocket bağlantılarını doğrulamak için kullanılır."
|
msgstr "Token'lar ve parmak izleri hub'a WebSocket bağlantılarını doğrulamak için kullanılır."
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Total data received for each interface"
|
||||||
|
msgstr "Her arayüz için alınan toplam veri"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Total data sent for each interface"
|
||||||
|
msgstr "Her arayüz için gönderilen toplam veri"
|
||||||
|
|
||||||
#: src/lib/alerts.ts
|
#: src/lib/alerts.ts
|
||||||
msgid "Triggers when 1 minute load average exceeds a threshold"
|
msgid "Triggers when 1 minute load average exceeds a threshold"
|
||||||
msgstr "1 dakikalık yük ortalaması bir eşiği aştığında tetiklenir"
|
msgstr "1 dakikalık yük ortalaması bir eşiği aştığında tetiklenir"
|
||||||
@@ -1095,6 +1141,10 @@ msgstr "Açık"
|
|||||||
msgid "Up ({upSystemsLength})"
|
msgid "Up ({upSystemsLength})"
|
||||||
msgstr "Açık ({upSystemsLength})"
|
msgstr "Açık ({upSystemsLength})"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Upload"
|
||||||
|
msgstr "Yükle"
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
msgid "Uptime"
|
msgid "Uptime"
|
||||||
msgstr "Çalışma Süresi"
|
msgstr "Çalışma Süresi"
|
||||||
|
|||||||
@@ -363,6 +363,14 @@ msgstr "Створено"
|
|||||||
msgid "Critical (%)"
|
msgid "Critical (%)"
|
||||||
msgstr "Критично (%)"
|
msgstr "Критично (%)"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Cumulative Download"
|
||||||
|
msgstr "Кумулятивне завантаження"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Cumulative Upload"
|
||||||
|
msgstr "Кумулятивне відвантаження"
|
||||||
|
|
||||||
#. Context: Battery state
|
#. Context: Battery state
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
msgid "Current state"
|
msgid "Current state"
|
||||||
@@ -441,6 +449,10 @@ msgstr "Не працює"
|
|||||||
msgid "Down ({downSystemsLength})"
|
msgid "Down ({downSystemsLength})"
|
||||||
msgstr "Не працює ({downSystemsLength})"
|
msgstr "Не працює ({downSystemsLength})"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Download"
|
||||||
|
msgstr "Завантажити"
|
||||||
|
|
||||||
#: src/components/alerts-history-columns.tsx
|
#: src/components/alerts-history-columns.tsx
|
||||||
msgid "Duration"
|
msgid "Duration"
|
||||||
msgstr "Тривалість"
|
msgstr "Тривалість"
|
||||||
@@ -452,6 +464,7 @@ 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
|
||||||
msgid "Email"
|
msgid "Email"
|
||||||
msgstr "Електронна пошта"
|
msgstr "Електронна пошта"
|
||||||
|
|
||||||
@@ -472,6 +485,10 @@ msgstr "Введіть адресу електронної пошти для с
|
|||||||
msgid "Enter email address..."
|
msgid "Enter email address..."
|
||||||
msgstr "Введіть адресу електронної пошти..."
|
msgstr "Введіть адресу електронної пошти..."
|
||||||
|
|
||||||
|
#: src/components/login/otp-forms.tsx
|
||||||
|
msgid "Enter your one-time password."
|
||||||
|
msgstr "Введіть ваш одноразовий пароль."
|
||||||
|
|
||||||
#: src/components/login/auth-form.tsx
|
#: src/components/login/auth-form.tsx
|
||||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||||
#: src/components/routes/settings/config-yaml.tsx
|
#: src/components/routes/settings/config-yaml.tsx
|
||||||
@@ -542,6 +559,12 @@ msgstr "Протягом <0>{min}</0> {min, plural, one {хвилини} other {
|
|||||||
msgid "Forgot password?"
|
msgid "Forgot password?"
|
||||||
msgstr "Забули пароль?"
|
msgstr "Забули пароль?"
|
||||||
|
|
||||||
|
#: src/components/add-system.tsx
|
||||||
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
|
msgctxt "Button to copy install command"
|
||||||
|
msgid "FreeBSD command"
|
||||||
|
msgstr "Команда FreeBSD"
|
||||||
|
|
||||||
#. Context: Battery state
|
#. Context: Battery state
|
||||||
#: src/lib/i18n.ts
|
#: src/lib/i18n.ts
|
||||||
msgid "Full"
|
msgid "Full"
|
||||||
@@ -645,6 +668,7 @@ msgid "Manage display and notification preferences."
|
|||||||
msgstr "Керуйте параметрами відображення та сповіщень."
|
msgstr "Керуйте параметрами відображення та сповіщень."
|
||||||
|
|
||||||
#: src/components/add-system.tsx
|
#: src/components/add-system.tsx
|
||||||
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
msgid "Manual setup instructions"
|
msgid "Manual setup instructions"
|
||||||
msgstr "Інструкції з ручного налаштування"
|
msgstr "Інструкції з ручного налаштування"
|
||||||
|
|
||||||
@@ -680,6 +704,8 @@ msgid "Network traffic of docker containers"
|
|||||||
msgstr "Мережевий трафік контейнерів Docker"
|
msgstr "Мережевий трафік контейнерів Docker"
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
msgid "Network traffic of public interfaces"
|
msgid "Network traffic of public interfaces"
|
||||||
msgstr "Мережевий трафік публічних інтерфейсів"
|
msgstr "Мережевий трафік публічних інтерфейсів"
|
||||||
|
|
||||||
@@ -715,6 +741,10 @@ msgstr "Підтримка OAuth 2 / OIDC"
|
|||||||
msgid "On each restart, systems in the database will be updated to match the systems defined in the file."
|
msgid "On each restart, systems in the database will be updated to match the systems defined in the file."
|
||||||
msgstr "При кожному перезапуску системи в базі даних будуть оновлені, щоб відповідати системам, визначеним у файлі."
|
msgstr "При кожному перезапуску системи в базі даних будуть оновлені, щоб відповідати системам, визначеним у файлі."
|
||||||
|
|
||||||
|
#: src/components/login/auth-form.tsx
|
||||||
|
msgid "One-time password"
|
||||||
|
msgstr "Одноразовий пароль"
|
||||||
|
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
@@ -833,6 +863,14 @@ msgstr "Читання"
|
|||||||
msgid "Received"
|
msgid "Received"
|
||||||
msgstr "Отримано"
|
msgstr "Отримано"
|
||||||
|
|
||||||
|
#: src/components/login/login.tsx
|
||||||
|
msgid "Request a one-time password"
|
||||||
|
msgstr "Запит одноразового пароля"
|
||||||
|
|
||||||
|
#: src/components/login/otp-forms.tsx
|
||||||
|
msgid "Request OTP"
|
||||||
|
msgstr "Запит OTP"
|
||||||
|
|
||||||
#: src/components/login/forgot-pass-form.tsx
|
#: src/components/login/forgot-pass-form.tsx
|
||||||
msgid "Reset Password"
|
msgid "Reset Password"
|
||||||
msgstr "Скинути пароль"
|
msgstr "Скинути пароль"
|
||||||
@@ -888,10 +926,6 @@ msgstr "Відправлено"
|
|||||||
msgid "Set percentage thresholds for meter colors."
|
msgid "Set percentage thresholds for meter colors."
|
||||||
msgstr "Встановіть відсоткові пороги для кольорів лічильників."
|
msgstr "Встановіть відсоткові пороги для кольорів лічильників."
|
||||||
|
|
||||||
#: src/components/routes/settings/general.tsx
|
|
||||||
msgid "Sets the default time range for charts when a system is viewed."
|
|
||||||
msgstr "Встановлює стандартний діапазон часу для графіків при перегляді системи."
|
|
||||||
|
|
||||||
#: src/components/command-palette.tsx
|
#: src/components/command-palette.tsx
|
||||||
#: src/components/command-palette.tsx
|
#: src/components/command-palette.tsx
|
||||||
#: src/components/routes/settings/layout.tsx
|
#: src/components/routes/settings/layout.tsx
|
||||||
@@ -1002,6 +1036,10 @@ msgstr "Пропускна здатність {extraFsName}"
|
|||||||
msgid "Throughput of root filesystem"
|
msgid "Throughput of root filesystem"
|
||||||
msgstr "Пропускна здатність кореневої файлової системи"
|
msgstr "Пропускна здатність кореневої файлової системи"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/general.tsx
|
||||||
|
msgid "Time format"
|
||||||
|
msgstr "Формат часу"
|
||||||
|
|
||||||
#: src/components/routes/settings/notifications.tsx
|
#: src/components/routes/settings/notifications.tsx
|
||||||
msgid "To email(s)"
|
msgid "To email(s)"
|
||||||
msgstr "На електронну пошту"
|
msgstr "На електронну пошту"
|
||||||
@@ -1034,6 +1072,14 @@ msgstr "Токени дозволяють агентам підключатис
|
|||||||
msgid "Tokens and fingerprints are used to authenticate WebSocket connections to the hub."
|
msgid "Tokens and fingerprints are used to authenticate WebSocket connections to the hub."
|
||||||
msgstr "Токени та відбитки використовуються для автентифікації WebSocket з'єднань до хабу."
|
msgstr "Токени та відбитки використовуються для автентифікації WebSocket з'єднань до хабу."
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Total data received for each interface"
|
||||||
|
msgstr "Загальний обсяг отриманих даних для кожного інтерфейсу"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Total data sent for each interface"
|
||||||
|
msgstr "Загальний обсяг відправлених даних для кожного інтерфейсу"
|
||||||
|
|
||||||
#: src/lib/alerts.ts
|
#: src/lib/alerts.ts
|
||||||
msgid "Triggers when 1 minute load average exceeds a threshold"
|
msgid "Triggers when 1 minute load average exceeds a threshold"
|
||||||
msgstr "Спрацьовує, коли середнє навантаження за 1 хвилину перевищує поріг"
|
msgstr "Спрацьовує, коли середнє навантаження за 1 хвилину перевищує поріг"
|
||||||
@@ -1095,6 +1141,10 @@ msgstr "Працює"
|
|||||||
msgid "Up ({upSystemsLength})"
|
msgid "Up ({upSystemsLength})"
|
||||||
msgstr "Працює ({upSystemsLength})"
|
msgstr "Працює ({upSystemsLength})"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Upload"
|
||||||
|
msgstr "Відвантажити"
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
msgid "Uptime"
|
msgid "Uptime"
|
||||||
msgstr "Час роботи"
|
msgstr "Час роботи"
|
||||||
|
|||||||
@@ -363,6 +363,14 @@ msgstr "Đã tạo"
|
|||||||
msgid "Critical (%)"
|
msgid "Critical (%)"
|
||||||
msgstr "Độ nghiêm trọng (%)"
|
msgstr "Độ nghiêm trọng (%)"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Cumulative Download"
|
||||||
|
msgstr "Tải xuống tích lũy"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Cumulative Upload"
|
||||||
|
msgstr "Tải lên tích lũy"
|
||||||
|
|
||||||
#. Context: Battery state
|
#. Context: Battery state
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
msgid "Current state"
|
msgid "Current state"
|
||||||
@@ -441,6 +449,10 @@ msgstr "Mất kết nối"
|
|||||||
msgid "Down ({downSystemsLength})"
|
msgid "Down ({downSystemsLength})"
|
||||||
msgstr "Mất kết nối ({downSystemsLength})"
|
msgstr "Mất kết nối ({downSystemsLength})"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Download"
|
||||||
|
msgstr "Tải xuống"
|
||||||
|
|
||||||
#: src/components/alerts-history-columns.tsx
|
#: src/components/alerts-history-columns.tsx
|
||||||
msgid "Duration"
|
msgid "Duration"
|
||||||
msgstr "Thời lượng"
|
msgstr "Thời lượng"
|
||||||
@@ -452,6 +464,7 @@ msgstr "Chỉnh sửa"
|
|||||||
|
|
||||||
#: src/components/login/auth-form.tsx
|
#: src/components/login/auth-form.tsx
|
||||||
#: src/components/login/forgot-pass-form.tsx
|
#: src/components/login/forgot-pass-form.tsx
|
||||||
|
#: src/components/login/otp-forms.tsx
|
||||||
msgid "Email"
|
msgid "Email"
|
||||||
msgstr "Email"
|
msgstr "Email"
|
||||||
|
|
||||||
@@ -472,6 +485,10 @@ msgstr "Nhập địa chỉ email để đặt lại mật khẩu"
|
|||||||
msgid "Enter email address..."
|
msgid "Enter email address..."
|
||||||
msgstr "Nhập địa chỉ email..."
|
msgstr "Nhập địa chỉ email..."
|
||||||
|
|
||||||
|
#: src/components/login/otp-forms.tsx
|
||||||
|
msgid "Enter your one-time password."
|
||||||
|
msgstr "Nhập mật khẩu một lần của bạn."
|
||||||
|
|
||||||
#: src/components/login/auth-form.tsx
|
#: src/components/login/auth-form.tsx
|
||||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||||
#: src/components/routes/settings/config-yaml.tsx
|
#: src/components/routes/settings/config-yaml.tsx
|
||||||
@@ -542,6 +559,12 @@ msgstr "Trong <0>{min}</0> {min, plural, one {phút} other {phút}}"
|
|||||||
msgid "Forgot password?"
|
msgid "Forgot password?"
|
||||||
msgstr "Quên mật khẩu?"
|
msgstr "Quên mật khẩu?"
|
||||||
|
|
||||||
|
#: src/components/add-system.tsx
|
||||||
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
|
msgctxt "Button to copy install command"
|
||||||
|
msgid "FreeBSD command"
|
||||||
|
msgstr "Lệnh FreeBSD"
|
||||||
|
|
||||||
#. Context: Battery state
|
#. Context: Battery state
|
||||||
#: src/lib/i18n.ts
|
#: src/lib/i18n.ts
|
||||||
msgid "Full"
|
msgid "Full"
|
||||||
@@ -645,6 +668,7 @@ msgid "Manage display and notification preferences."
|
|||||||
msgstr "Quản lý tùy chọn hiển thị và thông báo."
|
msgstr "Quản lý tùy chọn hiển thị và thông báo."
|
||||||
|
|
||||||
#: src/components/add-system.tsx
|
#: src/components/add-system.tsx
|
||||||
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
msgid "Manual setup instructions"
|
msgid "Manual setup instructions"
|
||||||
msgstr "Hướng dẫn cài đặt thủ công"
|
msgstr "Hướng dẫn cài đặt thủ công"
|
||||||
|
|
||||||
@@ -680,6 +704,8 @@ msgid "Network traffic of docker containers"
|
|||||||
msgstr "Lưu lượng mạng của các container Docker"
|
msgstr "Lưu lượng mạng của các container Docker"
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
msgid "Network traffic of public interfaces"
|
msgid "Network traffic of public interfaces"
|
||||||
msgstr "Lưu lượng mạng của các giao diện công cộng"
|
msgstr "Lưu lượng mạng của các giao diện công cộng"
|
||||||
|
|
||||||
@@ -715,6 +741,10 @@ msgstr "Hỗ trợ OAuth 2 / OIDC"
|
|||||||
msgid "On each restart, systems in the database will be updated to match the systems defined in the file."
|
msgid "On each restart, systems in the database will be updated to match the systems defined in the file."
|
||||||
msgstr "Mỗi khi khởi động lại, các hệ thống trong cơ sở dữ liệu sẽ được cập nhật để khớp với các hệ thống được định nghĩa trong tệp."
|
msgstr "Mỗi khi khởi động lại, các hệ thống trong cơ sở dữ liệu sẽ được cập nhật để khớp với các hệ thống được định nghĩa trong tệp."
|
||||||
|
|
||||||
|
#: src/components/login/auth-form.tsx
|
||||||
|
msgid "One-time password"
|
||||||
|
msgstr "Mật khẩu một lần"
|
||||||
|
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
@@ -833,6 +863,14 @@ msgstr "Đọc"
|
|||||||
msgid "Received"
|
msgid "Received"
|
||||||
msgstr "Đã nhận"
|
msgstr "Đã nhận"
|
||||||
|
|
||||||
|
#: src/components/login/login.tsx
|
||||||
|
msgid "Request a one-time password"
|
||||||
|
msgstr "Yêu cầu mật khẩu một lần"
|
||||||
|
|
||||||
|
#: src/components/login/otp-forms.tsx
|
||||||
|
msgid "Request OTP"
|
||||||
|
msgstr "Yêu cầu OTP"
|
||||||
|
|
||||||
#: src/components/login/forgot-pass-form.tsx
|
#: src/components/login/forgot-pass-form.tsx
|
||||||
msgid "Reset Password"
|
msgid "Reset Password"
|
||||||
msgstr "Đặt lại Mật khẩu"
|
msgstr "Đặt lại Mật khẩu"
|
||||||
@@ -888,10 +926,6 @@ msgstr "Đã gửi"
|
|||||||
msgid "Set percentage thresholds for meter colors."
|
msgid "Set percentage thresholds for meter colors."
|
||||||
msgstr "Đặt ngưỡng cho màu sắc đồng hồ."
|
msgstr "Đặt ngưỡng cho màu sắc đồng hồ."
|
||||||
|
|
||||||
#: src/components/routes/settings/general.tsx
|
|
||||||
msgid "Sets the default time range for charts when a system is viewed."
|
|
||||||
msgstr "Đặt phạm vi thời gian mặc định cho biểu đồ khi một hệ thống được xem."
|
|
||||||
|
|
||||||
#: src/components/command-palette.tsx
|
#: src/components/command-palette.tsx
|
||||||
#: src/components/command-palette.tsx
|
#: src/components/command-palette.tsx
|
||||||
#: src/components/routes/settings/layout.tsx
|
#: src/components/routes/settings/layout.tsx
|
||||||
@@ -1002,6 +1036,10 @@ msgstr "Thông lượng của {extraFsName}"
|
|||||||
msgid "Throughput of root filesystem"
|
msgid "Throughput of root filesystem"
|
||||||
msgstr "Thông lượng của hệ thống tệp gốc"
|
msgstr "Thông lượng của hệ thống tệp gốc"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/general.tsx
|
||||||
|
msgid "Time format"
|
||||||
|
msgstr "Định dạng thời gian"
|
||||||
|
|
||||||
#: src/components/routes/settings/notifications.tsx
|
#: src/components/routes/settings/notifications.tsx
|
||||||
msgid "To email(s)"
|
msgid "To email(s)"
|
||||||
msgstr "Đến email(s)"
|
msgstr "Đến email(s)"
|
||||||
@@ -1034,6 +1072,14 @@ msgstr "Token cho phép các tác nhân kết nối và đăng ký. Vân tay là
|
|||||||
msgid "Tokens and fingerprints are used to authenticate WebSocket connections to the hub."
|
msgid "Tokens and fingerprints are used to authenticate WebSocket connections to the hub."
|
||||||
msgstr "Token và vân tay được sử dụng để xác thực các kết nối WebSocket đến trung tâm."
|
msgstr "Token và vân tay được sử dụng để xác thực các kết nối WebSocket đến trung tâm."
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Total data received for each interface"
|
||||||
|
msgstr "Tổng dữ liệu nhận được cho mỗi giao diện"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Total data sent for each interface"
|
||||||
|
msgstr "Tổng dữ liệu gửi đi cho mỗi giao diện"
|
||||||
|
|
||||||
#: src/lib/alerts.ts
|
#: src/lib/alerts.ts
|
||||||
msgid "Triggers when 1 minute load average exceeds a threshold"
|
msgid "Triggers when 1 minute load average exceeds a threshold"
|
||||||
msgstr "Kích hoạt khi tải trung bình 1 phút vượt quá ngưỡng"
|
msgstr "Kích hoạt khi tải trung bình 1 phút vượt quá ngưỡng"
|
||||||
@@ -1095,6 +1141,10 @@ msgstr "Hoạt động"
|
|||||||
msgid "Up ({upSystemsLength})"
|
msgid "Up ({upSystemsLength})"
|
||||||
msgstr "Hoạt động ({upSystemsLength})"
|
msgstr "Hoạt động ({upSystemsLength})"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Upload"
|
||||||
|
msgstr "Tải lên"
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
msgid "Uptime"
|
msgid "Uptime"
|
||||||
msgstr "Thời gian hoạt động"
|
msgstr "Thời gian hoạt động"
|
||||||
|
|||||||
@@ -363,6 +363,14 @@ msgstr "创建时间"
|
|||||||
msgid "Critical (%)"
|
msgid "Critical (%)"
|
||||||
msgstr "临界 (%)"
|
msgstr "临界 (%)"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Cumulative Download"
|
||||||
|
msgstr "累计下载"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Cumulative Upload"
|
||||||
|
msgstr "累计上传"
|
||||||
|
|
||||||
#. Context: Battery state
|
#. Context: Battery state
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
msgid "Current state"
|
msgid "Current state"
|
||||||
@@ -441,6 +449,10 @@ msgstr "离线"
|
|||||||
msgid "Down ({downSystemsLength})"
|
msgid "Down ({downSystemsLength})"
|
||||||
msgstr "离线 ({downSystemsLength})"
|
msgstr "离线 ({downSystemsLength})"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Download"
|
||||||
|
msgstr "下载"
|
||||||
|
|
||||||
#: src/components/alerts-history-columns.tsx
|
#: src/components/alerts-history-columns.tsx
|
||||||
msgid "Duration"
|
msgid "Duration"
|
||||||
msgstr "持续时间"
|
msgstr "持续时间"
|
||||||
@@ -452,6 +464,7 @@ 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
|
||||||
msgid "Email"
|
msgid "Email"
|
||||||
msgstr "电子邮件"
|
msgstr "电子邮件"
|
||||||
|
|
||||||
@@ -472,6 +485,10 @@ msgstr "输入电子邮件地址以重置密码"
|
|||||||
msgid "Enter email address..."
|
msgid "Enter email address..."
|
||||||
msgstr "输入电子邮件地址..."
|
msgstr "输入电子邮件地址..."
|
||||||
|
|
||||||
|
#: src/components/login/otp-forms.tsx
|
||||||
|
msgid "Enter your one-time password."
|
||||||
|
msgstr "输入您的一次性密码。"
|
||||||
|
|
||||||
#: src/components/login/auth-form.tsx
|
#: src/components/login/auth-form.tsx
|
||||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||||
#: src/components/routes/settings/config-yaml.tsx
|
#: src/components/routes/settings/config-yaml.tsx
|
||||||
@@ -542,6 +559,12 @@ msgstr "持续<0>{min}</0> {min, plural, one {分钟} other {分钟}}"
|
|||||||
msgid "Forgot password?"
|
msgid "Forgot password?"
|
||||||
msgstr "忘记密码?"
|
msgstr "忘记密码?"
|
||||||
|
|
||||||
|
#: src/components/add-system.tsx
|
||||||
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
|
msgctxt "Button to copy install command"
|
||||||
|
msgid "FreeBSD command"
|
||||||
|
msgstr "FreeBSD 命令"
|
||||||
|
|
||||||
#. Context: Battery state
|
#. Context: Battery state
|
||||||
#: src/lib/i18n.ts
|
#: src/lib/i18n.ts
|
||||||
msgid "Full"
|
msgid "Full"
|
||||||
@@ -645,6 +668,7 @@ msgid "Manage display and notification preferences."
|
|||||||
msgstr "管理显示和通知偏好。"
|
msgstr "管理显示和通知偏好。"
|
||||||
|
|
||||||
#: src/components/add-system.tsx
|
#: src/components/add-system.tsx
|
||||||
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
msgid "Manual setup instructions"
|
msgid "Manual setup instructions"
|
||||||
msgstr "手动设置说明"
|
msgstr "手动设置说明"
|
||||||
|
|
||||||
@@ -680,6 +704,8 @@ msgid "Network traffic of docker containers"
|
|||||||
msgstr "Docker 容器的网络流量"
|
msgstr "Docker 容器的网络流量"
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
msgid "Network traffic of public interfaces"
|
msgid "Network traffic of public interfaces"
|
||||||
msgstr "公共接口的网络流量"
|
msgstr "公共接口的网络流量"
|
||||||
|
|
||||||
@@ -715,6 +741,10 @@ msgstr "支持 OAuth 2/OIDC"
|
|||||||
msgid "On each restart, systems in the database will be updated to match the systems defined in the file."
|
msgid "On each restart, systems in the database will be updated to match the systems defined in the file."
|
||||||
msgstr "每次重启时,数据库中的系统将更新以匹配文件中定义的系统。"
|
msgstr "每次重启时,数据库中的系统将更新以匹配文件中定义的系统。"
|
||||||
|
|
||||||
|
#: src/components/login/auth-form.tsx
|
||||||
|
msgid "One-time password"
|
||||||
|
msgstr "一次性密码"
|
||||||
|
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
@@ -833,6 +863,14 @@ msgstr "读取"
|
|||||||
msgid "Received"
|
msgid "Received"
|
||||||
msgstr "接收"
|
msgstr "接收"
|
||||||
|
|
||||||
|
#: src/components/login/login.tsx
|
||||||
|
msgid "Request a one-time password"
|
||||||
|
msgstr "请求一次性密码"
|
||||||
|
|
||||||
|
#: src/components/login/otp-forms.tsx
|
||||||
|
msgid "Request OTP"
|
||||||
|
msgstr "请求 OTP"
|
||||||
|
|
||||||
#: src/components/login/forgot-pass-form.tsx
|
#: src/components/login/forgot-pass-form.tsx
|
||||||
msgid "Reset Password"
|
msgid "Reset Password"
|
||||||
msgstr "重置密码"
|
msgstr "重置密码"
|
||||||
@@ -888,10 +926,6 @@ msgstr "发送"
|
|||||||
msgid "Set percentage thresholds for meter colors."
|
msgid "Set percentage thresholds for meter colors."
|
||||||
msgstr "设置仪表颜色的百分比阈值。"
|
msgstr "设置仪表颜色的百分比阈值。"
|
||||||
|
|
||||||
#: src/components/routes/settings/general.tsx
|
|
||||||
msgid "Sets the default time range for charts when a system is viewed."
|
|
||||||
msgstr "设置查看系统时图表的默认时间范围。"
|
|
||||||
|
|
||||||
#: src/components/command-palette.tsx
|
#: src/components/command-palette.tsx
|
||||||
#: src/components/command-palette.tsx
|
#: src/components/command-palette.tsx
|
||||||
#: src/components/routes/settings/layout.tsx
|
#: src/components/routes/settings/layout.tsx
|
||||||
@@ -1002,6 +1036,10 @@ msgstr "{extraFsName}的吞吐量"
|
|||||||
msgid "Throughput of root filesystem"
|
msgid "Throughput of root filesystem"
|
||||||
msgstr "根文件系统的吞吐量"
|
msgstr "根文件系统的吞吐量"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/general.tsx
|
||||||
|
msgid "Time format"
|
||||||
|
msgstr "时间格式"
|
||||||
|
|
||||||
#: src/components/routes/settings/notifications.tsx
|
#: src/components/routes/settings/notifications.tsx
|
||||||
msgid "To email(s)"
|
msgid "To email(s)"
|
||||||
msgstr "发送到电子邮件"
|
msgstr "发送到电子邮件"
|
||||||
@@ -1034,6 +1072,14 @@ msgstr "令牌允许客户端连接和注册。指纹是每个系统唯一的稳
|
|||||||
msgid "Tokens and fingerprints are used to authenticate WebSocket connections to the hub."
|
msgid "Tokens and fingerprints are used to authenticate WebSocket connections to the hub."
|
||||||
msgstr "令牌与指纹用于验证到中心的 WebSocket 连接。"
|
msgstr "令牌与指纹用于验证到中心的 WebSocket 连接。"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Total data received for each interface"
|
||||||
|
msgstr "每个接口的总接收数据量"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Total data sent for each interface"
|
||||||
|
msgstr "每个接口的总发送数据量"
|
||||||
|
|
||||||
#: src/lib/alerts.ts
|
#: src/lib/alerts.ts
|
||||||
msgid "Triggers when 1 minute load average exceeds a threshold"
|
msgid "Triggers when 1 minute load average exceeds a threshold"
|
||||||
msgstr "当 1 分钟负载平均值超过阈值时触发"
|
msgstr "当 1 分钟负载平均值超过阈值时触发"
|
||||||
@@ -1095,6 +1141,10 @@ msgstr "在线"
|
|||||||
msgid "Up ({upSystemsLength})"
|
msgid "Up ({upSystemsLength})"
|
||||||
msgstr "在线 ({upSystemsLength})"
|
msgstr "在线 ({upSystemsLength})"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Upload"
|
||||||
|
msgstr "上传"
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
msgid "Uptime"
|
msgid "Uptime"
|
||||||
msgstr "正常运行时间"
|
msgstr "正常运行时间"
|
||||||
|
|||||||
@@ -363,6 +363,14 @@ msgstr "已建立"
|
|||||||
msgid "Critical (%)"
|
msgid "Critical (%)"
|
||||||
msgstr "嚴重 (%)"
|
msgstr "嚴重 (%)"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Cumulative Download"
|
||||||
|
msgstr "累計下載"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Cumulative Upload"
|
||||||
|
msgstr "累計上傳"
|
||||||
|
|
||||||
#. Context: Battery state
|
#. Context: Battery state
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
msgid "Current state"
|
msgid "Current state"
|
||||||
@@ -441,6 +449,10 @@ msgstr "中斷"
|
|||||||
msgid "Down ({downSystemsLength})"
|
msgid "Down ({downSystemsLength})"
|
||||||
msgstr "中斷 ({downSystemsLength})"
|
msgstr "中斷 ({downSystemsLength})"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Download"
|
||||||
|
msgstr "下載"
|
||||||
|
|
||||||
#: src/components/alerts-history-columns.tsx
|
#: src/components/alerts-history-columns.tsx
|
||||||
msgid "Duration"
|
msgid "Duration"
|
||||||
msgstr "持續時間"
|
msgstr "持續時間"
|
||||||
@@ -452,6 +464,7 @@ 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
|
||||||
msgid "Email"
|
msgid "Email"
|
||||||
msgstr "電子郵件"
|
msgstr "電子郵件"
|
||||||
|
|
||||||
@@ -472,6 +485,10 @@ msgstr "輸入電子郵件地址以重置密碼"
|
|||||||
msgid "Enter email address..."
|
msgid "Enter email address..."
|
||||||
msgstr "輸入電子郵件地址..."
|
msgstr "輸入電子郵件地址..."
|
||||||
|
|
||||||
|
#: src/components/login/otp-forms.tsx
|
||||||
|
msgid "Enter your one-time password."
|
||||||
|
msgstr "輸入您的一次性密碼。"
|
||||||
|
|
||||||
#: src/components/login/auth-form.tsx
|
#: src/components/login/auth-form.tsx
|
||||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||||
#: src/components/routes/settings/config-yaml.tsx
|
#: src/components/routes/settings/config-yaml.tsx
|
||||||
@@ -542,6 +559,12 @@ msgstr "持續<0>{min}</0> {min, plural, one {分鐘} other {分鐘}}"
|
|||||||
msgid "Forgot password?"
|
msgid "Forgot password?"
|
||||||
msgstr "忘記密碼?"
|
msgstr "忘記密碼?"
|
||||||
|
|
||||||
|
#: src/components/add-system.tsx
|
||||||
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
|
msgctxt "Button to copy install command"
|
||||||
|
msgid "FreeBSD command"
|
||||||
|
msgstr "FreeBSD 指令"
|
||||||
|
|
||||||
#. Context: Battery state
|
#. Context: Battery state
|
||||||
#: src/lib/i18n.ts
|
#: src/lib/i18n.ts
|
||||||
msgid "Full"
|
msgid "Full"
|
||||||
@@ -645,6 +668,7 @@ msgid "Manage display and notification preferences."
|
|||||||
msgstr "管理顯示和通知偏好。"
|
msgstr "管理顯示和通知偏好。"
|
||||||
|
|
||||||
#: src/components/add-system.tsx
|
#: src/components/add-system.tsx
|
||||||
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
msgid "Manual setup instructions"
|
msgid "Manual setup instructions"
|
||||||
msgstr "手動設定說明"
|
msgstr "手動設定說明"
|
||||||
|
|
||||||
@@ -680,6 +704,8 @@ msgid "Network traffic of docker containers"
|
|||||||
msgstr "Docker 容器的網絡流量"
|
msgstr "Docker 容器的網絡流量"
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
msgid "Network traffic of public interfaces"
|
msgid "Network traffic of public interfaces"
|
||||||
msgstr "公共接口的網絡流量"
|
msgstr "公共接口的網絡流量"
|
||||||
|
|
||||||
@@ -715,6 +741,10 @@ msgstr "支援 OAuth 2 / OIDC"
|
|||||||
msgid "On each restart, systems in the database will be updated to match the systems defined in the file."
|
msgid "On each restart, systems in the database will be updated to match the systems defined in the file."
|
||||||
msgstr "每次重新啟動時,將會以檔案中的系統定義更新資料庫。"
|
msgstr "每次重新啟動時,將會以檔案中的系統定義更新資料庫。"
|
||||||
|
|
||||||
|
#: src/components/login/auth-form.tsx
|
||||||
|
msgid "One-time password"
|
||||||
|
msgstr "一次性密碼"
|
||||||
|
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
@@ -833,6 +863,14 @@ msgstr "讀取"
|
|||||||
msgid "Received"
|
msgid "Received"
|
||||||
msgstr "接收"
|
msgstr "接收"
|
||||||
|
|
||||||
|
#: src/components/login/login.tsx
|
||||||
|
msgid "Request a one-time password"
|
||||||
|
msgstr "請求一次性密碼"
|
||||||
|
|
||||||
|
#: src/components/login/otp-forms.tsx
|
||||||
|
msgid "Request OTP"
|
||||||
|
msgstr "請求 OTP"
|
||||||
|
|
||||||
#: src/components/login/forgot-pass-form.tsx
|
#: src/components/login/forgot-pass-form.tsx
|
||||||
msgid "Reset Password"
|
msgid "Reset Password"
|
||||||
msgstr "重設密碼"
|
msgstr "重設密碼"
|
||||||
@@ -888,10 +926,6 @@ msgstr "發送"
|
|||||||
msgid "Set percentage thresholds for meter colors."
|
msgid "Set percentage thresholds for meter colors."
|
||||||
msgstr "設定儀表顏色的百分比閾值。"
|
msgstr "設定儀表顏色的百分比閾值。"
|
||||||
|
|
||||||
#: src/components/routes/settings/general.tsx
|
|
||||||
msgid "Sets the default time range for charts when a system is viewed."
|
|
||||||
msgstr "設置查看系統時圖表的默認時間範圍。"
|
|
||||||
|
|
||||||
#: src/components/command-palette.tsx
|
#: src/components/command-palette.tsx
|
||||||
#: src/components/command-palette.tsx
|
#: src/components/command-palette.tsx
|
||||||
#: src/components/routes/settings/layout.tsx
|
#: src/components/routes/settings/layout.tsx
|
||||||
@@ -1002,6 +1036,10 @@ msgstr "{extraFsName}的吞吐量"
|
|||||||
msgid "Throughput of root filesystem"
|
msgid "Throughput of root filesystem"
|
||||||
msgstr "根文件系統的吞吐量"
|
msgstr "根文件系統的吞吐量"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/general.tsx
|
||||||
|
msgid "Time format"
|
||||||
|
msgstr "時間格式"
|
||||||
|
|
||||||
#: src/components/routes/settings/notifications.tsx
|
#: src/components/routes/settings/notifications.tsx
|
||||||
msgid "To email(s)"
|
msgid "To email(s)"
|
||||||
msgstr "發送到電子郵件"
|
msgstr "發送到電子郵件"
|
||||||
@@ -1034,6 +1072,14 @@ msgstr "令牌允許代理程式連接和註冊。指紋是每個系統唯一的
|
|||||||
msgid "Tokens and fingerprints are used to authenticate WebSocket connections to the hub."
|
msgid "Tokens and fingerprints are used to authenticate WebSocket connections to the hub."
|
||||||
msgstr "令牌和指紋用於驗證到中心的WebSocket連接。"
|
msgstr "令牌和指紋用於驗證到中心的WebSocket連接。"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Total data received for each interface"
|
||||||
|
msgstr "每個介面的總接收資料量"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Total data sent for each interface"
|
||||||
|
msgstr "每個介面的總傳送資料量"
|
||||||
|
|
||||||
#: src/lib/alerts.ts
|
#: src/lib/alerts.ts
|
||||||
msgid "Triggers when 1 minute load average exceeds a threshold"
|
msgid "Triggers when 1 minute load average exceeds a threshold"
|
||||||
msgstr "當 1 分鐘平均負載超過閾值時觸發"
|
msgstr "當 1 分鐘平均負載超過閾值時觸發"
|
||||||
@@ -1095,6 +1141,10 @@ msgstr "上線"
|
|||||||
msgid "Up ({upSystemsLength})"
|
msgid "Up ({upSystemsLength})"
|
||||||
msgstr "上線 ({upSystemsLength})"
|
msgstr "上線 ({upSystemsLength})"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Upload"
|
||||||
|
msgstr "上傳"
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
msgid "Uptime"
|
msgid "Uptime"
|
||||||
msgstr "正常運行時間"
|
msgstr "正常運行時間"
|
||||||
|
|||||||
@@ -363,6 +363,14 @@ msgstr "已建立"
|
|||||||
msgid "Critical (%)"
|
msgid "Critical (%)"
|
||||||
msgstr "嚴重 (%)"
|
msgstr "嚴重 (%)"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Cumulative Download"
|
||||||
|
msgstr "累計下載"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Cumulative Upload"
|
||||||
|
msgstr "累計上傳"
|
||||||
|
|
||||||
#. Context: Battery state
|
#. Context: Battery state
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
msgid "Current state"
|
msgid "Current state"
|
||||||
@@ -441,6 +449,10 @@ msgstr "離線"
|
|||||||
msgid "Down ({downSystemsLength})"
|
msgid "Down ({downSystemsLength})"
|
||||||
msgstr "離線 ({downSystemsLength})"
|
msgstr "離線 ({downSystemsLength})"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Download"
|
||||||
|
msgstr "下載"
|
||||||
|
|
||||||
#: src/components/alerts-history-columns.tsx
|
#: src/components/alerts-history-columns.tsx
|
||||||
msgid "Duration"
|
msgid "Duration"
|
||||||
msgstr "持續時間"
|
msgstr "持續時間"
|
||||||
@@ -452,6 +464,7 @@ 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
|
||||||
msgid "Email"
|
msgid "Email"
|
||||||
msgstr "電子郵件"
|
msgstr "電子郵件"
|
||||||
|
|
||||||
@@ -472,6 +485,10 @@ msgstr "輸入電子郵件地址以重設密碼"
|
|||||||
msgid "Enter email address..."
|
msgid "Enter email address..."
|
||||||
msgstr "輸入電子郵件地址..."
|
msgstr "輸入電子郵件地址..."
|
||||||
|
|
||||||
|
#: src/components/login/otp-forms.tsx
|
||||||
|
msgid "Enter your one-time password."
|
||||||
|
msgstr "輸入您的一次性密碼。"
|
||||||
|
|
||||||
#: src/components/login/auth-form.tsx
|
#: src/components/login/auth-form.tsx
|
||||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||||
#: src/components/routes/settings/config-yaml.tsx
|
#: src/components/routes/settings/config-yaml.tsx
|
||||||
@@ -542,6 +559,12 @@ msgstr "持續<0>{min}</0> {min, plural, one {分鐘} other {分鐘}}"
|
|||||||
msgid "Forgot password?"
|
msgid "Forgot password?"
|
||||||
msgstr "忘記密碼?"
|
msgstr "忘記密碼?"
|
||||||
|
|
||||||
|
#: src/components/add-system.tsx
|
||||||
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
|
msgctxt "Button to copy install command"
|
||||||
|
msgid "FreeBSD command"
|
||||||
|
msgstr "FreeBSD 指令"
|
||||||
|
|
||||||
#. Context: Battery state
|
#. Context: Battery state
|
||||||
#: src/lib/i18n.ts
|
#: src/lib/i18n.ts
|
||||||
msgid "Full"
|
msgid "Full"
|
||||||
@@ -645,6 +668,7 @@ msgid "Manage display and notification preferences."
|
|||||||
msgstr "管理顯示和通知偏好。"
|
msgstr "管理顯示和通知偏好。"
|
||||||
|
|
||||||
#: src/components/add-system.tsx
|
#: src/components/add-system.tsx
|
||||||
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
msgid "Manual setup instructions"
|
msgid "Manual setup instructions"
|
||||||
msgstr "手動設定說明"
|
msgstr "手動設定說明"
|
||||||
|
|
||||||
@@ -680,6 +704,8 @@ msgid "Network traffic of docker containers"
|
|||||||
msgstr "Docker 容器的網路流量"
|
msgstr "Docker 容器的網路流量"
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
msgid "Network traffic of public interfaces"
|
msgid "Network traffic of public interfaces"
|
||||||
msgstr "公開介面的網路流量"
|
msgstr "公開介面的網路流量"
|
||||||
|
|
||||||
@@ -715,6 +741,10 @@ msgstr "支援 OAuth 2 / OIDC"
|
|||||||
msgid "On each restart, systems in the database will be updated to match the systems defined in the file."
|
msgid "On each restart, systems in the database will be updated to match the systems defined in the file."
|
||||||
msgstr "每次重新啟動時,將會以檔案中的系統定義更新資料庫。"
|
msgstr "每次重新啟動時,將會以檔案中的系統定義更新資料庫。"
|
||||||
|
|
||||||
|
#: src/components/login/auth-form.tsx
|
||||||
|
msgid "One-time password"
|
||||||
|
msgstr "一次性密碼"
|
||||||
|
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
#: src/components/routes/settings/tokens-fingerprints.tsx
|
#: src/components/routes/settings/tokens-fingerprints.tsx
|
||||||
#: src/components/systems-table/systems-table-columns.tsx
|
#: src/components/systems-table/systems-table-columns.tsx
|
||||||
@@ -833,6 +863,14 @@ msgstr "讀取"
|
|||||||
msgid "Received"
|
msgid "Received"
|
||||||
msgstr "接收"
|
msgstr "接收"
|
||||||
|
|
||||||
|
#: src/components/login/login.tsx
|
||||||
|
msgid "Request a one-time password"
|
||||||
|
msgstr "請求一次性密碼"
|
||||||
|
|
||||||
|
#: src/components/login/otp-forms.tsx
|
||||||
|
msgid "Request OTP"
|
||||||
|
msgstr "請求 OTP"
|
||||||
|
|
||||||
#: src/components/login/forgot-pass-form.tsx
|
#: src/components/login/forgot-pass-form.tsx
|
||||||
msgid "Reset Password"
|
msgid "Reset Password"
|
||||||
msgstr "重設密碼"
|
msgstr "重設密碼"
|
||||||
@@ -888,10 +926,6 @@ msgstr "傳送"
|
|||||||
msgid "Set percentage thresholds for meter colors."
|
msgid "Set percentage thresholds for meter colors."
|
||||||
msgstr "設定儀表顏色的百分比閾值。"
|
msgstr "設定儀表顏色的百分比閾值。"
|
||||||
|
|
||||||
#: src/components/routes/settings/general.tsx
|
|
||||||
msgid "Sets the default time range for charts when a system is viewed."
|
|
||||||
msgstr "設定顯示系統圖表的預設時間範圍。"
|
|
||||||
|
|
||||||
#: src/components/command-palette.tsx
|
#: src/components/command-palette.tsx
|
||||||
#: src/components/command-palette.tsx
|
#: src/components/command-palette.tsx
|
||||||
#: src/components/routes/settings/layout.tsx
|
#: src/components/routes/settings/layout.tsx
|
||||||
@@ -1002,6 +1036,10 @@ msgstr "{extraFsName}的傳輸速率"
|
|||||||
msgid "Throughput of root filesystem"
|
msgid "Throughput of root filesystem"
|
||||||
msgstr "Root文件系統的傳輸速率"
|
msgstr "Root文件系統的傳輸速率"
|
||||||
|
|
||||||
|
#: src/components/routes/settings/general.tsx
|
||||||
|
msgid "Time format"
|
||||||
|
msgstr "時間格式"
|
||||||
|
|
||||||
#: src/components/routes/settings/notifications.tsx
|
#: src/components/routes/settings/notifications.tsx
|
||||||
msgid "To email(s)"
|
msgid "To email(s)"
|
||||||
msgstr "發送到電子郵件"
|
msgstr "發送到電子郵件"
|
||||||
@@ -1034,6 +1072,14 @@ msgstr "令牌允許代理程式連線和註冊。指紋是每個系統的唯一
|
|||||||
msgid "Tokens and fingerprints are used to authenticate WebSocket connections to the hub."
|
msgid "Tokens and fingerprints are used to authenticate WebSocket connections to the hub."
|
||||||
msgstr "令牌和指紋被用於驗證到 Hub 的 WebSocket 連線。"
|
msgstr "令牌和指紋被用於驗證到 Hub 的 WebSocket 連線。"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Total data received for each interface"
|
||||||
|
msgstr "每個介面的總接收資料量"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Total data sent for each interface"
|
||||||
|
msgstr "每個介面的總傳送資料量"
|
||||||
|
|
||||||
#: src/lib/alerts.ts
|
#: src/lib/alerts.ts
|
||||||
msgid "Triggers when 1 minute load average exceeds a threshold"
|
msgid "Triggers when 1 minute load average exceeds a threshold"
|
||||||
msgstr "當 1 分鐘平均負載超過閾值時觸發"
|
msgstr "當 1 分鐘平均負載超過閾值時觸發"
|
||||||
@@ -1095,6 +1141,10 @@ msgstr "上線"
|
|||||||
msgid "Up ({upSystemsLength})"
|
msgid "Up ({upSystemsLength})"
|
||||||
msgstr "上線 ({upSystemsLength})"
|
msgstr "上線 ({upSystemsLength})"
|
||||||
|
|
||||||
|
#: src/components/routes/system/network-sheet.tsx
|
||||||
|
msgid "Upload"
|
||||||
|
msgstr "上傳"
|
||||||
|
|
||||||
#: src/components/routes/system.tsx
|
#: src/components/routes/system.tsx
|
||||||
msgid "Uptime"
|
msgid "Uptime"
|
||||||
msgstr "運行時間"
|
msgstr "運行時間"
|
||||||
|
|||||||
6
internal/site/src/types.d.ts
vendored
6
internal/site/src/types.d.ts
vendored
@@ -1,5 +1,5 @@
|
|||||||
import type { RecordModel } from "pocketbase"
|
import type { RecordModel } from "pocketbase"
|
||||||
import type { Unit, Os, BatteryState, HourFormat } from "./lib/enums"
|
import type { Unit, Os, BatteryState, HourFormat, ConnectionType } from "@/lib/enums"
|
||||||
|
|
||||||
// global window properties
|
// global window properties
|
||||||
declare global {
|
declare global {
|
||||||
@@ -75,6 +75,8 @@ export interface SystemInfo {
|
|||||||
dt?: number
|
dt?: number
|
||||||
/** operating system */
|
/** operating system */
|
||||||
os?: Os
|
os?: Os
|
||||||
|
/** connection type */
|
||||||
|
ct?: ConnectionType
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface SystemStats {
|
export interface SystemStats {
|
||||||
@@ -156,6 +158,8 @@ export interface GPUData {
|
|||||||
u: number
|
u: number
|
||||||
/** power (w) */
|
/** power (w) */
|
||||||
p?: number
|
p?: number
|
||||||
|
/** engines */
|
||||||
|
e?: Record<string, number>
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface ExtraFsStats {
|
export interface ExtraFsStats {
|
||||||
|
|||||||
0
internal/site/src极cales/ja/ja.po
Normal file
0
internal/site/src极cales/ja/ja.po
Normal file
@@ -125,3 +125,28 @@ func CreateSystems(app core.App, count int, userId string, status string) ([]*co
|
|||||||
}
|
}
|
||||||
return systems, nil
|
return systems, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetHubWithUser creates a test hub with a test user and user settings
|
||||||
|
func GetHubWithUser(t *testing.T) (*TestHub, *core.Record) {
|
||||||
|
hub, err := NewTestHub(t.TempDir())
|
||||||
|
assert.NoError(t, err)
|
||||||
|
hub.StartHub()
|
||||||
|
|
||||||
|
// Manually initialize the system manager to bind event hooks
|
||||||
|
err = hub.GetSystemManager().Initialize()
|
||||||
|
assert.NoError(t, err)
|
||||||
|
|
||||||
|
// Create a test user
|
||||||
|
user, err := CreateUser(hub, "test@example.com", "password")
|
||||||
|
assert.NoError(t, err)
|
||||||
|
|
||||||
|
// Create user settings for the test user (required for alert notifications)
|
||||||
|
userSettingsData := map[string]any{
|
||||||
|
"user": user.Id,
|
||||||
|
"settings": `{"emails":[test@example.com],"webhooks":[]}`,
|
||||||
|
}
|
||||||
|
_, err = CreateRecord(hub, "user_settings", userSettingsData)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
|
||||||
|
return hub, user
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,3 +1,14 @@
|
|||||||
|
## 0.12.10
|
||||||
|
|
||||||
|
- Show connection type (WebSocket / SSH) in hub UI.
|
||||||
|
|
||||||
|
- Fix temperature unit and bytes / bits settings. (#1180)
|
||||||
|
|
||||||
|
## 0.12.9
|
||||||
|
|
||||||
|
- Fix divide by zero error introduced in 0.12.8 :) (#1175)
|
||||||
|
|
||||||
|
|
||||||
## 0.12.8
|
## 0.12.8
|
||||||
|
|
||||||
- Add per-interface network traffic charts. (#926)
|
- Add per-interface network traffic charts. (#926)
|
||||||
@@ -14,6 +25,8 @@
|
|||||||
|
|
||||||
- Add FreeBSD support for agent install script and update command.
|
- Add FreeBSD support for agent install script and update command.
|
||||||
|
|
||||||
|
- Fix status alerts not being resolved when system comes up. (#1052)
|
||||||
|
|
||||||
## 0.12.7
|
## 0.12.7
|
||||||
|
|
||||||
- Make LibreHardwareMonitor opt-in with `LHM=true` environment variable. (#1130)
|
- Make LibreHardwareMonitor opt-in with `LHM=true` environment variable. (#1130)
|
||||||
|
|||||||
@@ -161,6 +161,53 @@ run_rc_command "$1"
|
|||||||
EOF
|
EOF
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Detect system architecture
|
||||||
|
detect_architecture() {
|
||||||
|
local arch=$(uname -m)
|
||||||
|
|
||||||
|
if [ "$arch" = "mips" ]; then
|
||||||
|
detect_mips_endianness
|
||||||
|
return $?
|
||||||
|
fi
|
||||||
|
|
||||||
|
case "$arch" in
|
||||||
|
x86_64)
|
||||||
|
arch="amd64"
|
||||||
|
;;
|
||||||
|
armv6l|armv7l)
|
||||||
|
arch="arm"
|
||||||
|
;;
|
||||||
|
aarch64)
|
||||||
|
arch="arm64"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
echo "$arch"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Detect MIPS endianness using ELF header
|
||||||
|
detect_mips_endianness() {
|
||||||
|
local bins="/bin/sh /bin/ls /usr/bin/env"
|
||||||
|
local bin_to_check endian
|
||||||
|
|
||||||
|
for bin_to_check in $bins; do
|
||||||
|
if [ -f "$bin_to_check" ]; then
|
||||||
|
# The 6th byte in ELF header: 01 = little, 02 = big
|
||||||
|
endian=$(hexdump -n 1 -s 5 -e '1/1 "%02x"' "$bin_to_check" 2>/dev/null)
|
||||||
|
if [ "$endian" = "01" ]; then
|
||||||
|
echo "mipsle"
|
||||||
|
return
|
||||||
|
elif [ "$endian" = "02" ]; then
|
||||||
|
echo "mips"
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# Final fallback
|
||||||
|
echo "mips"
|
||||||
|
}
|
||||||
|
|
||||||
# Default values
|
# Default values
|
||||||
PORT=45876
|
PORT=45876
|
||||||
UNINSTALL=false
|
UNINSTALL=false
|
||||||
@@ -556,7 +603,7 @@ fi
|
|||||||
echo "Downloading and installing the agent..."
|
echo "Downloading and installing the agent..."
|
||||||
|
|
||||||
OS=$(uname -s | sed -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/')
|
OS=$(uname -s | sed -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/')
|
||||||
ARCH=$(uname -m | sed -e 's/x86_64/amd64/' -e 's/armv6l/arm/' -e 's/armv7l/arm/' -e 's/aarch64/arm64/')
|
ARCH=$(detect_architecture)
|
||||||
FILE_NAME="beszel-agent_${OS}_${ARCH}.tar.gz"
|
FILE_NAME="beszel-agent_${OS}_${ARCH}.tar.gz"
|
||||||
|
|
||||||
# Determine version to install
|
# Determine version to install
|
||||||
@@ -738,9 +785,7 @@ EXTRA_HELP=" update Update the Beszel agent
|
|||||||
restart Restart the Beszel agent"
|
restart Restart the Beszel agent"
|
||||||
|
|
||||||
update() {
|
update() {
|
||||||
if $BIN_PATH update | grep -q "Update completed successfully"; then
|
$BIN_PATH update
|
||||||
/etc/init.d/beszel-agent restart
|
|
||||||
fi
|
|
||||||
}
|
}
|
||||||
|
|
||||||
EOF
|
EOF
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ fi
|
|||||||
version=0.0.1
|
version=0.0.1
|
||||||
PORT=8090 # Default port
|
PORT=8090 # Default port
|
||||||
GITHUB_PROXY_URL="https://ghfast.top/" # Default proxy URL
|
GITHUB_PROXY_URL="https://ghfast.top/" # Default proxy URL
|
||||||
|
AUTO_UPDATE_FLAG="false" # default to no auto-updates, "true" means enable
|
||||||
|
|
||||||
# Function to ensure the proxy URL ends with a /
|
# Function to ensure the proxy URL ends with a /
|
||||||
ensure_trailing_slash() {
|
ensure_trailing_slash() {
|
||||||
@@ -32,24 +33,40 @@ ensure_trailing_slash() {
|
|||||||
# Ensure the proxy URL ends with a /
|
# Ensure the proxy URL ends with a /
|
||||||
GITHUB_PROXY_URL=$(ensure_trailing_slash "$GITHUB_PROXY_URL")
|
GITHUB_PROXY_URL=$(ensure_trailing_slash "$GITHUB_PROXY_URL")
|
||||||
|
|
||||||
# Read command line options
|
# Parse command line arguments
|
||||||
while getopts ":uhp:c:" opt; do
|
while [ $# -gt 0 ]; do
|
||||||
case $opt in
|
case "$1" in
|
||||||
u) UNINSTALL="true" ;;
|
-u)
|
||||||
h)
|
UNINSTALL="true"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
-h|--help)
|
||||||
printf "Beszel Hub installation script\n\n"
|
printf "Beszel Hub installation script\n\n"
|
||||||
printf "Usage: ./install-hub.sh [options]\n\n"
|
printf "Usage: ./install-hub.sh [options]\n\n"
|
||||||
printf "Options: \n"
|
printf "Options: \n"
|
||||||
printf " -u : Uninstall the Beszel Hub\n"
|
printf " -u : Uninstall the Beszel Hub\n"
|
||||||
printf " -p <port> : Specify a port number (default: 8090)\n"
|
printf " -p <port> : Specify a port number (default: 8090)\n"
|
||||||
printf " -c <url> : Use a custom GitHub mirror URL (e.g., https://ghfast.top/)\n"
|
printf " -c <url> : Use a custom GitHub mirror URL (e.g., https://ghfast.top/)\n"
|
||||||
echo " -h : Display this help message"
|
printf " --auto-update : Enable automatic daily updates (disabled by default)\n"
|
||||||
|
printf " -h, --help : Display this help message\n"
|
||||||
exit 0
|
exit 0
|
||||||
;;
|
;;
|
||||||
p) PORT=$OPTARG ;;
|
-p)
|
||||||
c) GITHUB_PROXY_URL=$(ensure_trailing_slash "$OPTARG") ;;
|
shift
|
||||||
\?)
|
PORT="$1"
|
||||||
echo "Invalid option: -$OPTARG"
|
shift
|
||||||
|
;;
|
||||||
|
-c)
|
||||||
|
shift
|
||||||
|
GITHUB_PROXY_URL=$(ensure_trailing_slash "$1")
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
--auto-update)
|
||||||
|
AUTO_UPDATE_FLAG="true"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Invalid option: $1" >&2
|
||||||
exit 1
|
exit 1
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
@@ -63,7 +80,14 @@ if [ "$UNINSTALL" = "true" ]; then
|
|||||||
|
|
||||||
# Remove the systemd service file
|
# Remove the systemd service file
|
||||||
echo "Removing the systemd service file..."
|
echo "Removing the systemd service file..."
|
||||||
rm /etc/systemd/system/beszel-hub.service
|
rm -f /etc/systemd/system/beszel-hub.service
|
||||||
|
|
||||||
|
# Remove the update timer and service if they exist
|
||||||
|
echo "Removing the daily update service and timer..."
|
||||||
|
systemctl stop beszel-hub-update.timer 2>/dev/null
|
||||||
|
systemctl disable beszel-hub-update.timer 2>/dev/null
|
||||||
|
rm -f /etc/systemd/system/beszel-hub-update.service
|
||||||
|
rm -f /etc/systemd/system/beszel-hub-update.timer
|
||||||
|
|
||||||
# Reload the systemd daemon
|
# Reload the systemd daemon
|
||||||
echo "Reloading the systemd daemon..."
|
echo "Reloading the systemd daemon..."
|
||||||
@@ -75,7 +99,7 @@ if [ "$UNINSTALL" = "true" ]; then
|
|||||||
|
|
||||||
# Remove the dedicated user
|
# Remove the dedicated user
|
||||||
echo "Removing the dedicated user..."
|
echo "Removing the dedicated user..."
|
||||||
userdel beszel
|
userdel beszel 2>/dev/null
|
||||||
|
|
||||||
echo "The Beszel Hub has been uninstalled successfully!"
|
echo "The Beszel Hub has been uninstalled successfully!"
|
||||||
exit 0
|
exit 0
|
||||||
@@ -151,4 +175,39 @@ if [ "$(systemctl is-active beszel-hub.service)" != "active" ]; then
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Enable auto-update if flag is set to true
|
||||||
|
if [ "$AUTO_UPDATE_FLAG" = "true" ]; then
|
||||||
|
echo "Setting up daily automatic updates for beszel-hub..."
|
||||||
|
|
||||||
|
# Create systemd service for the daily update
|
||||||
|
cat >/etc/systemd/system/beszel-hub-update.service <<EOF
|
||||||
|
[Unit]
|
||||||
|
Description=Update beszel-hub if needed
|
||||||
|
Wants=beszel-hub.service
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=oneshot
|
||||||
|
ExecStart=/opt/beszel/beszel update
|
||||||
|
EOF
|
||||||
|
|
||||||
|
# Create systemd timer for the daily update
|
||||||
|
cat >/etc/systemd/system/beszel-hub-update.timer <<EOF
|
||||||
|
[Unit]
|
||||||
|
Description=Run beszel-hub update daily
|
||||||
|
|
||||||
|
[Timer]
|
||||||
|
OnCalendar=daily
|
||||||
|
Persistent=true
|
||||||
|
RandomizedDelaySec=4h
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=timers.target
|
||||||
|
EOF
|
||||||
|
|
||||||
|
systemctl daemon-reload
|
||||||
|
systemctl enable --now beszel-hub-update.timer
|
||||||
|
|
||||||
|
printf "\nDaily updates have been enabled.\n"
|
||||||
|
fi
|
||||||
|
|
||||||
echo "The Beszel Hub has been installed and configured successfully! It is now accessible on port $PORT."
|
echo "The Beszel Hub has been installed and configured successfully! It is now accessible on port $PORT."
|
||||||
|
|||||||
Reference in New Issue
Block a user