Compare commits

...

11 Commits

Author SHA1 Message Date
henrygd
5e37469ea9 0.12.7 release :) 2025-09-05 14:00:24 -04:00
henrygd
e027479bb1 make sure initial user is verfied when supplying user/pass 2025-09-05 14:00:21 -04:00
henrygd
1597e869c1 update translations 2025-09-05 13:53:17 -04:00
henrygd
862399d8ec update language files 2025-09-05 12:36:45 -04:00
henrygd
f6f85f8f9d Add USER_EMAIL and USER_PASSWORD env vars to set the email / pass of initial user (#1137) 2025-09-05 11:42:43 -04:00
Riedel, Max
e22d7ca801 fix: add nextSystemToken to deps of useEffect to generate a new token after system creation (#1142) 2025-09-05 11:00:32 -04:00
henrygd
c382c1d5f6 windows: make LHM opt-in with LHM=true (#1130) 2025-09-05 10:39:18 -04:00
henrygd
f7618ed6b0 update go version for vulcheck action 2025-09-04 19:17:44 -04:00
henrygd
d1295b7c50 alerts tests and small refactoring 2025-09-04 19:13:10 -04:00
henrygd
a162a54a58 bump go version and add keyword 2025-09-04 19:13:10 -04:00
henrygd
794db0ac6a make sure old names are removed in systemsbyname store 2025-09-04 19:13:10 -04:00
48 changed files with 1343 additions and 505 deletions

View File

@@ -15,7 +15,7 @@ permissions:
jobs:
vulncheck:
name: Analysis
name: VulnCheck
runs-on: ubuntu-latest
steps:
- name: Check out code into the Go module directory
@@ -23,8 +23,8 @@ jobs:
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: 1.24.x
cached: false
go-version: 1.25.x
# cached: false
- name: Get official govulncheck
run: go install golang.org/x/vuln/cmd/govulncheck@latest
shell: bash

View File

@@ -1,6 +1,6 @@
module beszel
go 1.24.4
go 1.25.1
// lock shoutrrr to specific version to allow review before updating
replace github.com/nicholas-fedor/shoutrrr => github.com/nicholas-fedor/shoutrrr v0.8.8

View File

@@ -46,9 +46,10 @@ var lhmFs embed.FS
var (
beszelLhm *lhmProcess
beszelLhmOnce sync.Once
useLHM = os.Getenv("LHM") == "true"
)
var errNoSensors = errors.New("no sensors found (try running as admin)")
var errNoSensors = errors.New("no sensors found (try running as admin with LHM=true)")
// newlhmProcess copies the embedded LHM executable to a temporary directory and starts it.
func newlhmProcess() (*lhmProcess, error) {
@@ -139,7 +140,7 @@ func (lhm *lhmProcess) cleanupProcess() {
}
func (lhm *lhmProcess) getTemps(ctx context.Context) (temps []sensors.TemperatureStat, err error) {
if lhm.stoppedNoSensors {
if !useLHM || lhm.stoppedNoSensors {
// Fall back to gopsutil if we can't get sensors from LHM
return sensors.TemperaturesWithContext(ctx)
}
@@ -222,6 +223,10 @@ func getSensorTemps(ctx context.Context) (temps []sensors.TemperatureStat, err e
}
}()
if !useLHM {
return sensors.TemperaturesWithContext(ctx)
}
// Initialize process once
beszelLhmOnce.Do(func() {
beszelLhm, err = newlhmProcess()

View File

@@ -87,7 +87,7 @@ var supportsTitle = map[string]struct{}{
func NewAlertManager(app hubLike) *AlertManager {
am := &AlertManager{
hub: app,
alertQueue: make(chan alertTask),
alertQueue: make(chan alertTask, 5),
stopChan: make(chan struct{}),
}
am.bindEvents()

View File

@@ -42,21 +42,10 @@ func updateHistoryOnAlertUpdate(e *core.RecordEvent) error {
// resolveAlertHistoryRecord sets the resolved field to the current time
func resolveAlertHistoryRecord(app core.App, alertRecordID string) error {
alertHistoryRecords, err := app.FindRecordsByFilter(
"alerts_history",
"alert_id={:alert_id} && resolved=null",
"-created",
1,
0,
dbx.Params{"alert_id": alertRecordID},
)
if err != nil {
alertHistoryRecord, err := app.FindFirstRecordByFilter("alerts_history", "alert_id={:alert_id} && resolved=null", dbx.Params{"alert_id": alertRecordID})
if err != nil || alertHistoryRecord == nil {
return err
}
if len(alertHistoryRecords) == 0 {
return nil
}
alertHistoryRecord := alertHistoryRecords[0] // there should be only one record
alertHistoryRecord.Set("resolved", time.Now().UTC())
err = app.Save(alertHistoryRecord)
if err != nil {

View File

@@ -10,6 +10,8 @@ import (
"net/http"
"strings"
"testing"
"testing/synctest"
"time"
beszelTests "beszel/internal/tests"
@@ -63,14 +65,14 @@ func TestUserAlertsApi(t *testing.T) {
}
scenarios := []beszelTests.ApiScenario{
{
Name: "GET not implemented - returns index",
Method: http.MethodGet,
URL: "/api/beszel/user-alerts",
ExpectedStatus: 200,
ExpectedContent: []string{"<html ", "globalThis.BESZEL"},
TestAppFactory: testAppFactory,
},
// {
// Name: "GET not implemented - returns index",
// Method: http.MethodGet,
// URL: "/api/beszel/user-alerts",
// ExpectedStatus: 200,
// ExpectedContent: []string{"<html ", "globalThis.BESZEL"},
// TestAppFactory: testAppFactory,
// },
{
Name: "POST no auth",
Method: http.MethodPost,
@@ -366,3 +368,237 @@ func TestUserAlertsApi(t *testing.T) {
scenario.Test(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) {
synctest.Test(t, func(t *testing.T) {
hub, user := getHubWithUser(t)
defer hub.Cleanup()
systems, err := beszelTests.CreateSystems(hub, 4, user.Id, "paused")
assert.NoError(t, err)
var alerts []*core.Record
for i, system := range systems {
alert, err := beszelTests.CreateRecord(hub, "alerts", map[string]any{
"name": "Status",
"system": system.Id,
"user": user.Id,
"min": i + 1,
})
assert.NoError(t, err)
alerts = append(alerts, alert)
}
time.Sleep(10 * time.Millisecond)
for _, alert := range alerts {
assert.False(t, alert.GetBool("triggered"), "Alert should not be triggered immediately")
}
if hub.TestMailer.TotalSend() != 0 {
assert.Zero(t, hub.TestMailer.TotalSend(), "Expected 0 messages, got %d", hub.TestMailer.TotalSend())
}
for _, system := range systems {
assert.EqualValues(t, "paused", system.GetString("status"), "System should be paused")
}
for _, system := range systems {
system.Set("status", "up")
err = hub.SaveNoValidate(system)
assert.NoError(t, err)
}
time.Sleep(time.Second)
assert.EqualValues(t, 0, hub.GetPendingAlertsCount(), "should have 0 alerts in the pendingAlerts map")
for _, system := range systems {
system.Set("status", "down")
err = hub.SaveNoValidate(system)
assert.NoError(t, err)
}
// after 30 seconds, should have 4 alerts in the pendingAlerts map, no triggered alerts
time.Sleep(time.Second * 30)
assert.EqualValues(t, 4, hub.GetPendingAlertsCount(), "should have 4 alerts in the pendingAlerts map")
triggeredCount, err := hub.CountRecords("alerts", dbx.HashExp{"triggered": true})
assert.NoError(t, err)
assert.EqualValues(t, 0, triggeredCount, "should have 0 alert triggered")
assert.EqualValues(t, 0, hub.TestMailer.TotalSend(), "should have 0 messages sent")
// after 1:30 seconds, should have 1 triggered alert and 3 pending alerts
time.Sleep(time.Second * 60)
assert.EqualValues(t, 3, hub.GetPendingAlertsCount(), "should have 3 alerts in the pendingAlerts map")
triggeredCount, err = hub.CountRecords("alerts", dbx.HashExp{"triggered": true})
assert.NoError(t, err)
assert.EqualValues(t, 1, triggeredCount, "should have 1 alert triggered")
assert.EqualValues(t, 1, hub.TestMailer.TotalSend(), "should have 1 messages sent")
// after 2:30 seconds, should have 2 triggered alerts and 2 pending alerts
time.Sleep(time.Second * 60)
assert.EqualValues(t, 2, hub.GetPendingAlertsCount(), "should have 2 alerts in the pendingAlerts map")
triggeredCount, err = hub.CountRecords("alerts", dbx.HashExp{"triggered": true})
assert.NoError(t, err)
assert.EqualValues(t, 2, triggeredCount, "should have 2 alert triggered")
assert.EqualValues(t, 2, hub.TestMailer.TotalSend(), "should have 2 messages sent")
// now we will bring the remaning systems back up
for _, system := range systems {
system.Set("status", "up")
err = hub.SaveNoValidate(system)
assert.NoError(t, err)
}
time.Sleep(time.Second)
// should have 0 alerts in the pendingAlerts map and 0 alerts triggered
assert.EqualValues(t, 0, hub.GetPendingAlertsCount(), "should have 0 alerts in the pendingAlerts map")
triggeredCount, err = hub.CountRecords("alerts", dbx.HashExp{"triggered": true})
assert.NoError(t, err)
assert.Zero(t, triggeredCount, "should have 0 alert triggered")
// 4 messages sent, 2 down alerts and 2 up alerts for first 2 systems
assert.EqualValues(t, 4, hub.TestMailer.TotalSend(), "should have 4 messages sent")
})
}
func TestAlertsHistory(t *testing.T) {
synctest.Test(t, func(t *testing.T) {
hub, user := getHubWithUser(t)
defer hub.Cleanup()
// Create systems and alerts
systems, err := beszelTests.CreateSystems(hub, 1, user.Id, "up")
assert.NoError(t, err)
system := systems[0]
alert, err := beszelTests.CreateRecord(hub, "alerts", map[string]any{
"name": "Status",
"system": system.Id,
"user": user.Id,
"min": 1,
})
assert.NoError(t, err)
// Initially, no alert history records should exist
initialHistoryCount, err := hub.CountRecords("alerts_history", nil)
assert.NoError(t, err)
assert.Zero(t, initialHistoryCount, "Should have 0 alert history records initially")
// Set system to up initially
system.Set("status", "up")
err = hub.SaveNoValidate(system)
assert.NoError(t, err)
time.Sleep(10 * time.Millisecond)
// Set system to down to trigger alert
system.Set("status", "down")
err = hub.SaveNoValidate(system)
assert.NoError(t, err)
// Wait for alert to trigger (after the downtime delay)
// With 1 minute delay, we need to wait at least 1 minute + some buffer
time.Sleep(time.Second * 75)
// Check that alert is triggered
triggeredCount, err := hub.CountRecords("alerts", dbx.HashExp{"triggered": true, "id": alert.Id})
assert.NoError(t, err)
assert.EqualValues(t, 1, triggeredCount, "Alert should be triggered")
// Check that alert history record was created
historyCount, err := hub.CountRecords("alerts_history", dbx.HashExp{"alert_id": alert.Id})
assert.NoError(t, err)
assert.EqualValues(t, 1, historyCount, "Should have 1 alert history record for triggered alert")
// Get the alert history record and verify it's not resolved immediately
historyRecord, err := hub.FindFirstRecordByFilter("alerts_history", "alert_id={:alert_id}", dbx.Params{"alert_id": alert.Id})
assert.NoError(t, err)
assert.NotNil(t, historyRecord, "Alert history record should exist")
assert.Equal(t, alert.Id, historyRecord.GetString("alert_id"), "Alert history should reference correct alert")
assert.Equal(t, system.Id, historyRecord.GetString("system"), "Alert history should reference correct system")
assert.Equal(t, "Status", historyRecord.GetString("name"), "Alert history should have correct name")
// The alert history might be resolved immediately in some cases, so let's check the alert's triggered status
alertRecord, err := hub.FindFirstRecordByFilter("alerts", "id={:id}", dbx.Params{"id": alert.Id})
assert.NoError(t, err)
assert.True(t, alertRecord.GetBool("triggered"), "Alert should still be triggered when checking history")
// Now resolve the alert by setting system back to up
system.Set("status", "up")
err = hub.SaveNoValidate(system)
assert.NoError(t, err)
time.Sleep(200 * time.Millisecond)
// Check that alert is no longer triggered
triggeredCount, err = hub.CountRecords("alerts", dbx.HashExp{"triggered": true, "id": alert.Id})
assert.NoError(t, err)
assert.Zero(t, triggeredCount, "Alert should not be triggered after system is back up")
// Check that alert history record is now resolved
historyRecord, err = hub.FindFirstRecordByFilter("alerts_history", "alert_id={:alert_id}", dbx.Params{"alert_id": alert.Id})
assert.NoError(t, err)
assert.NotNil(t, historyRecord, "Alert history record should still exist")
assert.NotNil(t, historyRecord.Get("resolved"), "Alert history should be resolved")
// Test deleting a triggered alert resolves its history
// Create another system and alert
systems2, err := beszelTests.CreateSystems(hub, 1, user.Id, "up")
assert.NoError(t, err)
system2 := systems2[0]
system2.Set("name", "test-system-2") // Rename for clarity
err = hub.SaveNoValidate(system2)
assert.NoError(t, err)
alert2, err := beszelTests.CreateRecord(hub, "alerts", map[string]any{
"name": "Status",
"system": system2.Id,
"user": user.Id,
"min": 1,
})
assert.NoError(t, err)
// Set system2 to down to trigger alert
system2.Set("status", "down")
err = hub.SaveNoValidate(system2)
assert.NoError(t, err)
// Wait for alert to trigger
time.Sleep(time.Second * 75)
// Verify alert is triggered and history record exists
triggeredCount, err = hub.CountRecords("alerts", dbx.HashExp{"triggered": true, "id": alert2.Id})
assert.NoError(t, err)
assert.EqualValues(t, 1, triggeredCount, "Second alert should be triggered")
historyCount, err = hub.CountRecords("alerts_history", dbx.HashExp{"alert_id": alert2.Id})
assert.NoError(t, err)
assert.EqualValues(t, 1, historyCount, "Should have 1 alert history record for second alert")
// Delete the triggered alert
err = hub.Delete(alert2)
assert.NoError(t, err)
// Check that alert history record is resolved after deletion
historyRecord2, err := hub.FindFirstRecordByFilter("alerts_history", "alert_id={:alert_id}", dbx.Params{"alert_id": alert2.Id})
assert.NoError(t, err)
assert.NotNil(t, historyRecord2, "Alert history record should still exist after alert deletion")
assert.NotNil(t, historyRecord2.Get("resolved"), "Alert history should be resolved after alert deletion")
// Verify total history count is correct (2 records total)
totalHistoryCount, err := hub.CountRecords("alerts_history", nil)
assert.NoError(t, err)
assert.EqualValues(t, 2, totalHistoryCount, "Should have 2 total alert history records")
})
}

View File

@@ -0,0 +1,55 @@
package alerts
import (
"sync"
"time"
"github.com/pocketbase/pocketbase/core"
)
func (am *AlertManager) GetAlertManager() *AlertManager {
return am
}
func (am *AlertManager) GetPendingAlerts() *sync.Map {
return &am.pendingAlerts
}
func (am *AlertManager) GetPendingAlertsCount() int {
count := 0
am.pendingAlerts.Range(func(key, value any) bool {
count++
return true
})
return count
}
// ProcessPendingAlerts manually processes all expired alerts (for testing)
func (am *AlertManager) ProcessPendingAlerts() ([]*core.Record, error) {
now := time.Now()
var lastErr error
var processedAlerts []*core.Record
am.pendingAlerts.Range(func(key, value any) bool {
info := value.(*alertInfo)
if now.After(info.expireTime) {
// Downtime delay has passed, process alert
if err := am.sendStatusAlert("down", info.systemName, info.alertRecord); err != nil {
lastErr = err
}
processedAlerts = append(processedAlerts, info.alertRecord)
am.pendingAlerts.Delete(key)
}
return true
})
return processedAlerts, lastErr
}
// ForceExpirePendingAlerts sets all pending alerts to expire immediately (for testing)
func (am *AlertManager) ForceExpirePendingAlerts() {
now := time.Now()
am.pendingAlerts.Range(func(key, value any) bool {
info := value.(*alertInfo)
info.expireTime = now.Add(-time.Second) // Set to 1 second ago
return true
})
}

View File

@@ -5,6 +5,7 @@ package hub_test
import (
beszelTests "beszel/internal/tests"
"beszel/migrations"
"testing"
"bytes"
@@ -534,6 +535,115 @@ func TestApiRoutesAuthentication(t *testing.T) {
}
}
func TestFirstUserCreation(t *testing.T) {
t.Run("CreateUserEndpoint available when no users exist", func(t *testing.T) {
hub, _ := beszelTests.NewTestHub(t.TempDir())
defer hub.Cleanup()
hub.StartHub()
testAppFactoryExisting := func(t testing.TB) *pbTests.TestApp {
return hub.TestApp
}
scenarios := []beszelTests.ApiScenario{
{
Name: "POST /create-user - should be available when no users exist",
Method: http.MethodPost,
URL: "/api/beszel/create-user",
Body: jsonReader(map[string]any{
"email": "firstuser@example.com",
"password": "password123",
}),
ExpectedStatus: 200,
ExpectedContent: []string{"User created"},
TestAppFactory: testAppFactoryExisting,
BeforeTestFunc: func(t testing.TB, app *pbTests.TestApp, e *core.ServeEvent) {
userCount, err := hub.CountRecords("users")
require.NoError(t, err)
require.Zero(t, userCount, "Should start with no users")
superusers, err := hub.FindAllRecords(core.CollectionNameSuperusers)
require.NoError(t, err)
require.EqualValues(t, 1, len(superusers), "Should start with one temporary superuser")
require.EqualValues(t, migrations.TempAdminEmail, superusers[0].GetString("email"), "Should have created one temporary superuser")
},
AfterTestFunc: func(t testing.TB, app *pbTests.TestApp, res *http.Response) {
userCount, err := hub.CountRecords("users")
require.NoError(t, err)
require.EqualValues(t, 1, userCount, "Should have created one user")
superusers, err := hub.FindAllRecords(core.CollectionNameSuperusers)
require.NoError(t, err)
require.EqualValues(t, 1, len(superusers), "Should have created one superuser")
require.EqualValues(t, "firstuser@example.com", superusers[0].GetString("email"), "Should have created one superuser")
},
},
{
Name: "POST /create-user - should not be available when users exist",
Method: http.MethodPost,
URL: "/api/beszel/create-user",
Body: jsonReader(map[string]any{
"email": "firstuser@example.com",
"password": "password123",
}),
ExpectedStatus: 404,
ExpectedContent: []string{"wasn't found"},
TestAppFactory: testAppFactoryExisting,
},
}
for _, scenario := range scenarios {
scenario.Test(t)
}
})
t.Run("CreateUserEndpoint not available when USER_EMAIL, USER_PASSWORD are set", func(t *testing.T) {
os.Setenv("BESZEL_HUB_USER_EMAIL", "me@example.com")
os.Setenv("BESZEL_HUB_USER_PASSWORD", "password123")
defer os.Unsetenv("BESZEL_HUB_USER_EMAIL")
defer os.Unsetenv("BESZEL_HUB_USER_PASSWORD")
hub, _ := beszelTests.NewTestHub(t.TempDir())
defer hub.Cleanup()
hub.StartHub()
testAppFactory := func(t testing.TB) *pbTests.TestApp {
return hub.TestApp
}
scenario := beszelTests.ApiScenario{
Name: "POST /create-user - should not be available when USER_EMAIL, USER_PASSWORD are set",
Method: http.MethodPost,
URL: "/api/beszel/create-user",
ExpectedStatus: 404,
ExpectedContent: []string{"wasn't found"},
TestAppFactory: testAppFactory,
BeforeTestFunc: func(t testing.TB, app *pbTests.TestApp, e *core.ServeEvent) {
users, err := hub.FindAllRecords("users")
require.NoError(t, err)
require.EqualValues(t, 1, len(users), "Should start with one user")
require.EqualValues(t, "me@example.com", users[0].GetString("email"), "Should have created one user")
superusers, err := hub.FindAllRecords(core.CollectionNameSuperusers)
require.NoError(t, err)
require.EqualValues(t, 1, len(superusers), "Should start with one superuser")
require.EqualValues(t, "me@example.com", superusers[0].GetString("email"), "Should have created one superuser")
},
AfterTestFunc: func(t testing.TB, app *pbTests.TestApp, res *http.Response) {
users, err := hub.FindAllRecords("users")
require.NoError(t, err)
require.EqualValues(t, 1, len(users), "Should still have one user")
require.EqualValues(t, "me@example.com", users[0].GetString("email"), "Should have created one user")
superusers, err := hub.FindAllRecords(core.CollectionNameSuperusers)
require.NoError(t, err)
require.EqualValues(t, 1, len(superusers), "Should still have one superuser")
require.EqualValues(t, "me@example.com", superusers[0].GetString("email"), "Should have created one superuser")
},
}
scenario.Test(t)
})
}
func TestCreateUserEndpointAvailability(t *testing.T) {
t.Run("CreateUserEndpoint available when no users exist", func(t *testing.T) {
hub, _ := beszelTests.NewTestHub(t.TempDir())

View File

@@ -100,3 +100,10 @@ func (sm *SystemManager) SetSystemStatusInDB(systemID string, status string) boo
return true
}
// TESTING ONLY: RemoveAllSystems removes all systems from the store
func (sm *SystemManager) RemoveAllSystems() {
for _, system := range sm.systems.GetAll() {
sm.RemoveSystem(system.Id)
}
}

View File

@@ -96,3 +96,31 @@ func ClearCollection(t testing.TB, app core.App, collectionName string) error {
assert.EqualValues(t, recordCount, 0, "should have 0 records after clearing")
return err
}
func (h *TestHub) Cleanup() {
h.GetAlertManager().StopWorker()
h.GetSystemManager().RemoveAllSystems()
h.TestApp.Cleanup()
}
func CreateSystems(app core.App, count int, userId string, status string) ([]*core.Record, error) {
systems := make([]*core.Record, 0, count)
for i := range count {
system, err := CreateRecord(app, "systems", map[string]any{
"name": fmt.Sprintf("test-system-%d", i),
"host": fmt.Sprintf("127.0.0.%d", i),
"port": "33914",
"users": []string{userId},
})
if err != nil {
return nil, err
}
system.Set("status", status)
err = app.SaveNoValidate(system)
if err != nil {
return nil, err
}
systems = append(systems, system)
}
return systems, nil
}

View File

@@ -1,6 +1,8 @@
package migrations
import (
"os"
"github.com/pocketbase/pocketbase/core"
m "github.com/pocketbase/pocketbase/migrations"
)
@@ -19,11 +21,51 @@ func init() {
if err := app.Save(settings); err != nil {
return err
}
// create superuser
collection, _ := app.FindCollectionByNameOrId(core.CollectionNameSuperusers)
user := core.NewRecord(collection)
user.SetEmail(TempAdminEmail)
user.SetRandomPassword()
return app.Save(user)
superuserCollection, _ := app.FindCollectionByNameOrId(core.CollectionNameSuperusers)
superUser := core.NewRecord(superuserCollection)
// set email
email, _ := GetEnv("USER_EMAIL")
password, _ := GetEnv("USER_PASSWORD")
didProvideUserDetails := email != "" && password != ""
// set superuser email
if email == "" {
email = TempAdminEmail
}
superUser.SetEmail(email)
// set superuser password
if password != "" {
superUser.SetPassword(password)
} else {
superUser.SetRandomPassword()
}
// if user details are provided, we create a regular user as well
if didProvideUserDetails {
usersCollection, _ := app.FindCollectionByNameOrId("users")
user := core.NewRecord(usersCollection)
user.SetEmail(email)
user.SetPassword(password)
user.SetVerified(true)
err := app.Save(user)
if err != nil {
return err
}
}
return app.Save(superUser)
}, nil)
}
// GetEnv retrieves an environment variable with a "BESZEL_HUB_" prefix, or falls back to the unprefixed key.
func GetEnv(key string) (value string, exists bool) {
if value, exists = os.LookupEnv("BESZEL_HUB_" + key); exists {
return value, exists
}
// Fallback to the old unprefixed key
return os.LookupEnv(key)
}

View File

@@ -1,12 +1,12 @@
{
"name": "beszel",
"version": "0.12.6",
"version": "0.12.7",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "beszel",
"version": "0.12.6",
"version": "0.12.7",
"dependencies": {
"@henrygd/queue": "^1.0.7",
"@henrygd/semaphore": "^0.0.2",

View File

@@ -1,7 +1,7 @@
{
"name": "beszel",
"private": true,
"version": "0.12.6",
"version": "0.12.7",
"type": "module",
"scripts": {
"dev": "vite --host",

View File

@@ -97,7 +97,7 @@ export const SystemDialog = ({ setOpen, system }: { setOpen: (open: boolean) =>
tokenMap.set(system.id, token)
setToken(token)
})()
}, [system?.id])
}, [system?.id, nextSystemToken])
async function handleSubmit(e: SubmitEvent) {
e.preventDefault()

View File

@@ -121,6 +121,7 @@ export default memo(function CommandPalette({ open, setOpen }: { open: boolean;
{SettingsShortcut}
</CommandItem>
<CommandItem
keywords={[t`Universal token`]}
onSelect={() => {
navigate(getPagePath($router, "settings", { name: "tokens" }))
setOpen(false)

View File

@@ -270,11 +270,17 @@ export default memo(function SystemDetail({ name }: { name: string }) {
}
let uptime: React.ReactNode
if (system.info.u < 3600) {
const mins = Math.trunc(system.info.u / 60)
uptime = <Plural value={mins} one="# minute" other="# minutes" />
uptime = (
<Plural
value={Math.trunc(system.info.u / 60)}
one="# minute"
few="# minutes"
many="# minutes"
other="# minutes"
/>
)
} else if (system.info.u < 172800) {
const hours = Math.trunc(system.info.u / 3600)
uptime = <Plural value={hours} one="# hour" other="# hours" />
uptime = <Plural value={Math.trunc(system.info.u / 3600)} one="# hour" other="# hours" />
} else {
uptime = <Plural value={Math.trunc(system.info?.u / 86400)} one="# day" other="# days" />
}

View File

@@ -17,7 +17,7 @@ export const $downSystems = map<Record<string, SystemRecord>>({})
/** Map of paused systems by id */
export const $pausedSystems = map<Record<string, SystemRecord>>({})
/** List of all system records */
export const $systems: ReadableAtom<SystemRecord[]> = computed($allSystemsByName, Object.values)
export const $systems: ReadableAtom<SystemRecord[]> = computed($allSystemsById, Object.values)
/** Map of alert records by system id and alert name */
export const $alerts = map<AlertMap>({})

View File

@@ -29,7 +29,7 @@ export function init() {
initialized = true
// sync system stores on change
$allSystemsByName.listen((newSystems, oldSystems, changedKey) => {
$allSystemsById.listen((newSystems, oldSystems, changedKey) => {
const oldSystem = oldSystems[changedKey]
const newSystem = newSystems[changedKey]
@@ -59,6 +59,10 @@ export function init() {
$pausedSystems.setKey(newSystem.id, newSystem)
removeFromStore(newSystem, $upSystems)
removeFromStore(newSystem, $downSystems)
} else if (newStatus === SystemStatus.Pending) {
removeFromStore(newSystem, $upSystems)
removeFromStore(newSystem, $downSystems)
removeFromStore(newSystem, $pausedSystems)
}
// run things that need to be done when systems change
@@ -100,13 +104,22 @@ async function fetchSystems(): Promise<SystemRecord[]> {
}
}
// Store management functions
/** Add system to both name and ID stores */
export function add(system: SystemRecord) {
$allSystemsByName.setKey(system.name, system)
$allSystemsById.setKey(system.id, system)
}
/** Update system in stores */
export function update(system: SystemRecord) {
// if name changed, make sure old name is removed from the name store
const oldName = $allSystemsById.get()[system.id]?.name
if (oldName !== system.name) {
$allSystemsByName.setKey(oldName, undefined as any)
}
add(system)
}
/** Remove system from stores */
export function remove(system: SystemRecord) {
removeFromStore(system, $allSystemsByName)
@@ -125,7 +138,7 @@ function removeFromStore(system: SystemRecord, store: PreinitializedMapStore<Rec
/** Action functions for subscription */
const actionFns: Record<string, (system: SystemRecord) => void> = {
create: add,
update: add,
update: update,
delete: remove,
}

View File

@@ -8,7 +8,7 @@ msgstr ""
"Language: ar\n"
"Project-Id-Version: beszel\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2025-08-25 01:15\n"
"PO-Revision-Date: 2025-08-28 23:21\n"
"Last-Translator: \n"
"Language-Team: Arabic\n"
"Plural-Forms: nplurals=6; plural=(n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5);\n"
@@ -23,20 +23,22 @@ msgstr ""
msgid "{0, plural, one {# day} other {# days}}"
msgstr "{0, plural, one {# يوم} other {# أيام}}"
#. placeholder {0}: Math.trunc(system.info.u / 3600)
#: src/components/routes/system.tsx
msgid "{0, plural, one {# hour} other {# hours}}"
msgstr "{0, plural, one {# ساعة} other {# ساعات}}"
#. placeholder {0}: Math.trunc(system.info.u / 60)
#: src/components/routes/system.tsx
msgid "{0, plural, one {# minute} few {# minutes} many {# minutes} other {# minutes}}"
msgstr "{0, plural, one {# دقيقة} few {# دقائق} many {# دقيقة} other {# دقيقة}}"
#. placeholder {0}: table.getFilteredSelectedRowModel().rows.length
#. placeholder {1}: table.getFilteredRowModel().rows.length
#: src/components/routes/settings/alerts-history-data-table.tsx
msgid "{0} of {1} row(s) selected."
msgstr "تم تحديد {0} من {1} صف"
#: src/components/routes/system.tsx
msgid "{hours, plural, one {# hour} other {# hours}}"
msgstr "{hours, plural, one {# ساعة} other {# ساعات}}"
#: src/components/routes/system.tsx
msgid "{mins, plural, one {# minute} other {# minutes}}"
msgstr ""
#: src/lib/utils.ts
msgid "1 hour"
msgstr "1 ساعة"
@@ -257,6 +259,10 @@ msgstr "تحقق من السجلات لمزيد من التفاصيل."
msgid "Check your notification service"
msgstr "تحقق من خدمة الإشعارات الخاصة بك"
#: src/components/systems-table/systems-table.tsx
msgid "Click on a system to view more information."
msgstr "انقر على نظام لعرض مزيد من المعلومات."
#: src/components/ui/input-copy.tsx
msgid "Click to copy"
msgstr "انقر للنسخ"
@@ -427,11 +433,14 @@ msgstr "التوثيق"
#: src/components/alerts-history-columns.tsx
#: src/components/routes/system.tsx
#: src/components/systems-table/systems-table-columns.tsx
#: src/components/systems-table/systems-table.tsx
#: src/lib/alerts.ts
msgid "Down"
msgstr "معطل"
#: src/components/systems-table/systems-table.tsx
msgid "Down ({downSystemsLength})"
msgstr "معطل ({downSystemsLength})"
#: src/components/alerts-history-columns.tsx
msgid "Duration"
msgstr "المدة"
@@ -756,10 +765,13 @@ msgid "Pause"
msgstr "إيقاف مؤقت"
#: src/components/systems-table/systems-table-columns.tsx
#: src/components/systems-table/systems-table.tsx
msgid "Paused"
msgstr "متوقف مؤقتا"
#: src/components/systems-table/systems-table.tsx
msgid "Paused ({pausedSystemsLength})"
msgstr "متوقف مؤقتا ({pausedSystemsLength})"
#: src/components/routes/settings/notifications.tsx
msgid "Please <0>configure an SMTP server</0> to ensure alerts are delivered."
msgstr "يرجى <0>تكوين خادم SMTP</0> لضمان تسليم التنبيهات."
@@ -1063,6 +1075,7 @@ msgstr "يتم التفعيل عندما يتجاوز استخدام أي قرص
msgid "Unit preferences"
msgstr "تفضيلات الوحدة"
#: src/components/command-palette.tsx
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Universal token"
msgstr "رمز مميز عالمي"
@@ -1075,13 +1088,12 @@ msgstr "غير معروفة"
#. Context: System is up
#: src/components/routes/system.tsx
#: src/components/systems-table/systems-table-columns.tsx
#: src/components/systems-table/systems-table.tsx
msgid "Up"
msgstr "قيد التشغيل"
#: src/components/systems-table/systems-table.tsx
msgid "Updated in real time. Click on a system to view information."
msgstr "محدث في الوقت الحقيقي. انقر على نظام لعرض المعلومات."
msgid "Up ({upSystemsLength})"
msgstr "قيد التشغيل ({upSystemsLength})"
#: src/components/routes/system.tsx
msgid "Uptime"

View File

@@ -8,7 +8,7 @@ msgstr ""
"Language: bg\n"
"Project-Id-Version: beszel\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2025-08-25 01:16\n"
"PO-Revision-Date: 2025-08-28 23:21\n"
"Last-Translator: \n"
"Language-Team: Bulgarian\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -23,20 +23,22 @@ msgstr ""
msgid "{0, plural, one {# day} other {# days}}"
msgstr "{0, plural, one {# ден} other {# дни}}"
#. placeholder {0}: Math.trunc(system.info.u / 3600)
#: src/components/routes/system.tsx
msgid "{0, plural, one {# hour} other {# hours}}"
msgstr "{0, plural, one {# час} other {# часа}}"
#. placeholder {0}: Math.trunc(system.info.u / 60)
#: src/components/routes/system.tsx
msgid "{0, plural, one {# minute} few {# minutes} many {# minutes} other {# minutes}}"
msgstr "{0, plural, one {# минута} few {# минути} many {# минути} other {# минути}}"
#. placeholder {0}: table.getFilteredSelectedRowModel().rows.length
#. placeholder {1}: table.getFilteredRowModel().rows.length
#: src/components/routes/settings/alerts-history-data-table.tsx
msgid "{0} of {1} row(s) selected."
msgstr "{0} от {1} селектирани."
#: src/components/routes/system.tsx
msgid "{hours, plural, one {# hour} other {# hours}}"
msgstr "{hours, plural, one {# час} other {# часа}}"
#: src/components/routes/system.tsx
msgid "{mins, plural, one {# minute} other {# minutes}}"
msgstr ""
#: src/lib/utils.ts
msgid "1 hour"
msgstr "1 час"
@@ -257,6 +259,10 @@ msgstr "Провери log-овете за повече информация."
msgid "Check your notification service"
msgstr "Провери услугата си за удостоверяване"
#: src/components/systems-table/systems-table.tsx
msgid "Click on a system to view more information."
msgstr "Кликнете върху система, за да видите повече информация."
#: src/components/ui/input-copy.tsx
msgid "Click to copy"
msgstr "Настисни за да копираш"
@@ -427,11 +433,14 @@ msgstr "Документация"
#: src/components/alerts-history-columns.tsx
#: src/components/routes/system.tsx
#: src/components/systems-table/systems-table-columns.tsx
#: src/components/systems-table/systems-table.tsx
#: src/lib/alerts.ts
msgid "Down"
msgstr "Офлайн"
#: src/components/systems-table/systems-table.tsx
msgid "Down ({downSystemsLength})"
msgstr "Офлайн ({downSystemsLength})"
#: src/components/alerts-history-columns.tsx
msgid "Duration"
msgstr "Продължителност"
@@ -756,10 +765,13 @@ msgid "Pause"
msgstr "Пауза"
#: src/components/systems-table/systems-table-columns.tsx
#: src/components/systems-table/systems-table.tsx
msgid "Paused"
msgstr "На пауза"
#: src/components/systems-table/systems-table.tsx
msgid "Paused ({pausedSystemsLength})"
msgstr "На пауза ({pausedSystemsLength})"
#: src/components/routes/settings/notifications.tsx
msgid "Please <0>configure an SMTP server</0> to ensure alerts are delivered."
msgstr "Моля <0>конфигурурай SMTP сървър</0> за да се подсигуриш, че тревогите са доставени."
@@ -1063,6 +1075,7 @@ msgstr "Задейства се, когато употребата на няко
msgid "Unit preferences"
msgstr "Предпочитания на единицата"
#: src/components/command-palette.tsx
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Universal token"
msgstr "Универсален тоукън"
@@ -1075,13 +1088,12 @@ msgstr "Неизвестна"
#. Context: System is up
#: src/components/routes/system.tsx
#: src/components/systems-table/systems-table-columns.tsx
#: src/components/systems-table/systems-table.tsx
msgid "Up"
msgstr "Нагоре"
#: src/components/systems-table/systems-table.tsx
msgid "Updated in real time. Click on a system to view information."
msgstr "Актуализира се в реално време. Натисни на система за да видиш информация."
msgid "Up ({upSystemsLength})"
msgstr "Нагоре ({upSystemsLength})"
#: src/components/routes/system.tsx
msgid "Uptime"

View File

@@ -8,7 +8,7 @@ msgstr ""
"Language: cs\n"
"Project-Id-Version: beszel\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2025-08-25 01:16\n"
"PO-Revision-Date: 2025-08-28 23:21\n"
"Last-Translator: \n"
"Language-Team: Czech\n"
"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 3;\n"
@@ -23,20 +23,22 @@ msgstr ""
msgid "{0, plural, one {# day} other {# days}}"
msgstr "{0, plural, one {# den} few {# dny} other {# dní}}"
#. placeholder {0}: Math.trunc(system.info.u / 3600)
#: src/components/routes/system.tsx
msgid "{0, plural, one {# hour} other {# hours}}"
msgstr "{0, plural, one {# Hodina} few {# Hodiny} many {# Hodin} other {# Hodin}}"
#. placeholder {0}: Math.trunc(system.info.u / 60)
#: src/components/routes/system.tsx
msgid "{0, plural, one {# minute} few {# minutes} many {# minutes} other {# minutes}}"
msgstr "{0, plural, one {# minuta} few {# minuty} many {# minut} other {# minut}}"
#. placeholder {0}: table.getFilteredSelectedRowModel().rows.length
#. placeholder {1}: table.getFilteredRowModel().rows.length
#: src/components/routes/settings/alerts-history-data-table.tsx
msgid "{0} of {1} row(s) selected."
msgstr "{0} z {1} vybraných řádků."
#: src/components/routes/system.tsx
msgid "{hours, plural, one {# hour} other {# hours}}"
msgstr "{hours, plural, one {# Hodina} few {# Hodiny} many {# Hodin} other {# Hodin}}"
#: src/components/routes/system.tsx
msgid "{mins, plural, one {# minute} other {# minutes}}"
msgstr ""
#: src/lib/utils.ts
msgid "1 hour"
msgstr "1 hodina"
@@ -257,6 +259,10 @@ msgstr "Pro více informací zkontrolujte logy."
msgid "Check your notification service"
msgstr "Zkontrolujte službu upozornění"
#: src/components/systems-table/systems-table.tsx
msgid "Click on a system to view more information."
msgstr "Klikněte na systém pro zobrazení více informací."
#: src/components/ui/input-copy.tsx
msgid "Click to copy"
msgstr "Klikněte pro zkopírování"
@@ -427,11 +433,14 @@ msgstr "Dokumentace"
#: src/components/alerts-history-columns.tsx
#: src/components/routes/system.tsx
#: src/components/systems-table/systems-table-columns.tsx
#: src/components/systems-table/systems-table.tsx
#: src/lib/alerts.ts
msgid "Down"
msgstr "Nefunkční"
#: src/components/systems-table/systems-table.tsx
msgid "Down ({downSystemsLength})"
msgstr "Nefunkční ({downSystemsLength})"
#: src/components/alerts-history-columns.tsx
msgid "Duration"
msgstr "Doba trvání"
@@ -756,10 +765,13 @@ msgid "Pause"
msgstr "Pozastavit"
#: src/components/systems-table/systems-table-columns.tsx
#: src/components/systems-table/systems-table.tsx
msgid "Paused"
msgstr "Pozastaveno"
#: src/components/systems-table/systems-table.tsx
msgid "Paused ({pausedSystemsLength})"
msgstr "Pozastaveno ({pausedSystemsLength})"
#: src/components/routes/settings/notifications.tsx
msgid "Please <0>configure an SMTP server</0> to ensure alerts are delivered."
msgstr "<0>nakonfigurujte SMTP server</0> pro zajištění toho, aby byla upozornění doručena."
@@ -1063,6 +1075,7 @@ msgstr "Spustí se, když využití disku překročí prahovou hodnotu"
msgid "Unit preferences"
msgstr "Předvolby jednotek"
#: src/components/command-palette.tsx
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Universal token"
msgstr "Univerzální token"
@@ -1075,13 +1088,12 @@ msgstr "Neznámá"
#. Context: System is up
#: src/components/routes/system.tsx
#: src/components/systems-table/systems-table-columns.tsx
#: src/components/systems-table/systems-table.tsx
msgid "Up"
msgstr "Funkční"
#: src/components/systems-table/systems-table.tsx
msgid "Updated in real time. Click on a system to view information."
msgstr "Aktualizováno v reálném čase. Klepnutím na systém zobrazíte informace."
msgid "Up ({upSystemsLength})"
msgstr "Funkční ({upSystemsLength})"
#: src/components/routes/system.tsx
msgid "Uptime"

View File

@@ -8,7 +8,7 @@ msgstr ""
"Language: da\n"
"Project-Id-Version: beszel\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2025-08-25 01:16\n"
"PO-Revision-Date: 2025-08-28 23:21\n"
"Last-Translator: \n"
"Language-Team: Danish\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -23,20 +23,22 @@ msgstr ""
msgid "{0, plural, one {# day} other {# days}}"
msgstr "{0, plural, one {# day} other {# days}}"
#. placeholder {0}: Math.trunc(system.info.u / 3600)
#: src/components/routes/system.tsx
msgid "{0, plural, one {# hour} other {# hours}}"
msgstr "{0, plural, one {# hour} other {# hours}}"
#. placeholder {0}: Math.trunc(system.info.u / 60)
#: src/components/routes/system.tsx
msgid "{0, plural, one {# minute} few {# minutes} many {# minutes} other {# minutes}}"
msgstr ""
#. placeholder {0}: table.getFilteredSelectedRowModel().rows.length
#. placeholder {1}: table.getFilteredRowModel().rows.length
#: src/components/routes/settings/alerts-history-data-table.tsx
msgid "{0} of {1} row(s) selected."
msgstr ""
#: src/components/routes/system.tsx
msgid "{hours, plural, one {# hour} other {# hours}}"
msgstr "{hours, plural, one {# hour} other {# hours}}"
#: src/components/routes/system.tsx
msgid "{mins, plural, one {# minute} other {# minutes}}"
msgstr ""
#: src/lib/utils.ts
msgid "1 hour"
msgstr "1 time"
@@ -257,6 +259,10 @@ msgstr "Tjek logfiler for flere detaljer."
msgid "Check your notification service"
msgstr "Tjek din notifikationstjeneste"
#: src/components/systems-table/systems-table.tsx
msgid "Click on a system to view more information."
msgstr ""
#: src/components/ui/input-copy.tsx
msgid "Click to copy"
msgstr "Klik for at kopiere"
@@ -427,11 +433,14 @@ msgstr "Dokumentation"
#: src/components/alerts-history-columns.tsx
#: src/components/routes/system.tsx
#: src/components/systems-table/systems-table-columns.tsx
#: src/components/systems-table/systems-table.tsx
#: src/lib/alerts.ts
msgid "Down"
msgstr "Nede"
#: src/components/systems-table/systems-table.tsx
msgid "Down ({downSystemsLength})"
msgstr ""
#: src/components/alerts-history-columns.tsx
msgid "Duration"
msgstr ""
@@ -756,10 +765,13 @@ msgid "Pause"
msgstr "Pause"
#: src/components/systems-table/systems-table-columns.tsx
#: src/components/systems-table/systems-table.tsx
msgid "Paused"
msgstr "Sat på pause"
#: src/components/systems-table/systems-table.tsx
msgid "Paused ({pausedSystemsLength})"
msgstr ""
#: src/components/routes/settings/notifications.tsx
msgid "Please <0>configure an SMTP server</0> to ensure alerts are delivered."
msgstr "Konfigurer <0>en SMTP server</0> for at sikre at alarmer bliver leveret."
@@ -1063,6 +1075,7 @@ msgstr "Udløser når brugen af en disk overstiger en tærskel"
msgid "Unit preferences"
msgstr ""
#: src/components/command-palette.tsx
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Universal token"
msgstr ""
@@ -1075,13 +1088,12 @@ msgstr "Ukendt"
#. Context: System is up
#: src/components/routes/system.tsx
#: src/components/systems-table/systems-table-columns.tsx
#: src/components/systems-table/systems-table.tsx
msgid "Up"
msgstr "Oppe"
#: src/components/systems-table/systems-table.tsx
msgid "Updated in real time. Click on a system to view information."
msgstr "Opdateret i realtid. Klik på et system for at se information."
msgid "Up ({upSystemsLength})"
msgstr ""
#: src/components/routes/system.tsx
msgid "Uptime"

View File

@@ -8,7 +8,7 @@ msgstr ""
"Language: de\n"
"Project-Id-Version: beszel\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2025-08-25 01:15\n"
"PO-Revision-Date: 2025-08-28 23:21\n"
"Last-Translator: \n"
"Language-Team: German\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -23,20 +23,22 @@ msgstr ""
msgid "{0, plural, one {# day} other {# days}}"
msgstr "{0, plural, one {# Tag} other {# Tage}}"
#. placeholder {0}: Math.trunc(system.info.u / 3600)
#: src/components/routes/system.tsx
msgid "{0, plural, one {# hour} other {# hours}}"
msgstr "{0, plural, one {# Stunde} other {# Stunden}}"
#. placeholder {0}: Math.trunc(system.info.u / 60)
#: src/components/routes/system.tsx
msgid "{0, plural, one {# minute} few {# minutes} many {# minutes} other {# minutes}}"
msgstr "{0, plural, one {# Minute} other {# Minuten}}"
#. placeholder {0}: table.getFilteredSelectedRowModel().rows.length
#. placeholder {1}: table.getFilteredRowModel().rows.length
#: src/components/routes/settings/alerts-history-data-table.tsx
msgid "{0} of {1} row(s) selected."
msgstr "{0} von {1} Zeile(n) ausgewählt."
#: src/components/routes/system.tsx
msgid "{hours, plural, one {# hour} other {# hours}}"
msgstr "{hours, plural, one {# Stunde} other {# Stunden}}"
#: src/components/routes/system.tsx
msgid "{mins, plural, one {# minute} other {# minutes}}"
msgstr ""
#: src/lib/utils.ts
msgid "1 hour"
msgstr "1 Stunde"
@@ -257,6 +259,10 @@ msgstr "Überprüfe die Protokolle für weitere Details."
msgid "Check your notification service"
msgstr "Überprüfe deinen Benachrichtigungsdienst"
#: src/components/systems-table/systems-table.tsx
msgid "Click on a system to view more information."
msgstr "Klicke auf ein System, um weitere Informationen zu sehen."
#: src/components/ui/input-copy.tsx
msgid "Click to copy"
msgstr "Zum Kopieren klicken"
@@ -427,11 +433,14 @@ msgstr "Dokumentation"
#: src/components/alerts-history-columns.tsx
#: src/components/routes/system.tsx
#: src/components/systems-table/systems-table-columns.tsx
#: src/components/systems-table/systems-table.tsx
#: src/lib/alerts.ts
msgid "Down"
msgstr "Offline"
#: src/components/systems-table/systems-table.tsx
msgid "Down ({downSystemsLength})"
msgstr "Offline ({downSystemsLength})"
#: src/components/alerts-history-columns.tsx
msgid "Duration"
msgstr "Dauer"
@@ -756,10 +765,13 @@ msgid "Pause"
msgstr "Pause"
#: src/components/systems-table/systems-table-columns.tsx
#: src/components/systems-table/systems-table.tsx
msgid "Paused"
msgstr "Pausiert"
#: src/components/systems-table/systems-table.tsx
msgid "Paused ({pausedSystemsLength})"
msgstr "Pausiert ({pausedSystemsLength})"
#: src/components/routes/settings/notifications.tsx
msgid "Please <0>configure an SMTP server</0> to ensure alerts are delivered."
msgstr "Bitte <0>konfiguriere einen SMTP-Server</0>, um sicherzustellen, dass Warnungen zugestellt werden."
@@ -1063,6 +1075,7 @@ msgstr "Löst aus, wenn die Nutzung einer Festplatte einen Schwellenwert übersc
msgid "Unit preferences"
msgstr "Einheiten"
#: src/components/command-palette.tsx
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Universal token"
msgstr "Universeller Token"
@@ -1075,13 +1088,12 @@ msgstr "Unbekannt"
#. Context: System is up
#: src/components/routes/system.tsx
#: src/components/systems-table/systems-table-columns.tsx
#: src/components/systems-table/systems-table.tsx
msgid "Up"
msgstr "aktiv"
#: src/components/systems-table/systems-table.tsx
msgid "Updated in real time. Click on a system to view information."
msgstr "In Echtzeit aktualisiert. Klicke auf ein System, um Informationen anzuzeigen."
msgid "Up ({upSystemsLength})"
msgstr "aktiv ({upSystemsLength})"
#: src/components/routes/system.tsx
msgid "Uptime"

View File

@@ -18,20 +18,22 @@ msgstr ""
msgid "{0, plural, one {# day} other {# days}}"
msgstr "{0, plural, one {# day} other {# days}}"
#. placeholder {0}: Math.trunc(system.info.u / 3600)
#: src/components/routes/system.tsx
msgid "{0, plural, one {# hour} other {# hours}}"
msgstr "{0, plural, one {# hour} other {# hours}}"
#. placeholder {0}: Math.trunc(system.info.u / 60)
#: src/components/routes/system.tsx
msgid "{0, plural, one {# minute} few {# minutes} many {# minutes} other {# minutes}}"
msgstr "{0, plural, one {# minute} few {# minutes} many {# minutes} other {# minutes}}"
#. placeholder {0}: table.getFilteredSelectedRowModel().rows.length
#. placeholder {1}: table.getFilteredRowModel().rows.length
#: src/components/routes/settings/alerts-history-data-table.tsx
msgid "{0} of {1} row(s) selected."
msgstr "{0} of {1} row(s) selected."
#: src/components/routes/system.tsx
msgid "{hours, plural, one {# hour} other {# hours}}"
msgstr "{hours, plural, one {# hour} other {# hours}}"
#: src/components/routes/system.tsx
msgid "{mins, plural, one {# minute} other {# minutes}}"
msgstr "{mins, plural, one {# minute} other {# minutes}}"
#: src/lib/utils.ts
msgid "1 hour"
msgstr "1 hour"
@@ -252,6 +254,10 @@ msgstr "Check logs for more details."
msgid "Check your notification service"
msgstr "Check your notification service"
#: src/components/systems-table/systems-table.tsx
msgid "Click on a system to view more information."
msgstr "Click on a system to view more information."
#: src/components/ui/input-copy.tsx
msgid "Click to copy"
msgstr "Click to copy"
@@ -422,11 +428,14 @@ msgstr "Documentation"
#: src/components/alerts-history-columns.tsx
#: src/components/routes/system.tsx
#: src/components/systems-table/systems-table-columns.tsx
#: src/components/systems-table/systems-table.tsx
#: src/lib/alerts.ts
msgid "Down"
msgstr "Down"
#: src/components/systems-table/systems-table.tsx
msgid "Down ({downSystemsLength})"
msgstr "Down ({downSystemsLength})"
#: src/components/alerts-history-columns.tsx
msgid "Duration"
msgstr "Duration"
@@ -751,10 +760,13 @@ msgid "Pause"
msgstr "Pause"
#: src/components/systems-table/systems-table-columns.tsx
#: src/components/systems-table/systems-table.tsx
msgid "Paused"
msgstr "Paused"
#: src/components/systems-table/systems-table.tsx
msgid "Paused ({pausedSystemsLength})"
msgstr "Paused ({pausedSystemsLength})"
#: src/components/routes/settings/notifications.tsx
msgid "Please <0>configure an SMTP server</0> to ensure alerts are delivered."
msgstr "Please <0>configure an SMTP server</0> to ensure alerts are delivered."
@@ -1058,6 +1070,7 @@ msgstr "Triggers when usage of any disk exceeds a threshold"
msgid "Unit preferences"
msgstr "Unit preferences"
#: src/components/command-palette.tsx
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Universal token"
msgstr "Universal token"
@@ -1070,13 +1083,12 @@ msgstr "Unknown"
#. Context: System is up
#: src/components/routes/system.tsx
#: src/components/systems-table/systems-table-columns.tsx
#: src/components/systems-table/systems-table.tsx
msgid "Up"
msgstr "Up"
#: src/components/systems-table/systems-table.tsx
msgid "Updated in real time. Click on a system to view information."
msgstr "Updated in real time. Click on a system to view information."
msgid "Up ({upSystemsLength})"
msgstr "Up ({upSystemsLength})"
#: src/components/routes/system.tsx
msgid "Uptime"

View File

@@ -8,7 +8,7 @@ msgstr ""
"Language: es\n"
"Project-Id-Version: beszel\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2025-07-25 22:44\n"
"PO-Revision-Date: 2025-08-28 23:21\n"
"Last-Translator: \n"
"Language-Team: Spanish\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -23,20 +23,22 @@ msgstr ""
msgid "{0, plural, one {# day} other {# days}}"
msgstr "{0, plural, one {# día} other {# días}}"
#. placeholder {0}: Math.trunc(system.info.u / 3600)
#: src/components/routes/system.tsx
msgid "{0, plural, one {# hour} other {# hours}}"
msgstr "{0, plural, one {# hora} other {# horas}}"
#. placeholder {0}: Math.trunc(system.info.u / 60)
#: src/components/routes/system.tsx
msgid "{0, plural, one {# minute} few {# minutes} many {# minutes} other {# minutes}}"
msgstr "{0, plural, one {# minuto} other {# minutos}}"
#. placeholder {0}: table.getFilteredSelectedRowModel().rows.length
#. placeholder {1}: table.getFilteredRowModel().rows.length
#: src/components/routes/settings/alerts-history-data-table.tsx
msgid "{0} of {1} row(s) selected."
msgstr "{0} de {1} fila(s) seleccionada(s)."
#: src/components/routes/system.tsx
msgid "{hours, plural, one {# hour} other {# hours}}"
msgstr "{hours, plural, one {# hora} other {# horas}}"
#: src/components/routes/system.tsx
msgid "{mins, plural, one {# minute} other {# minutes}}"
msgstr ""
#: src/lib/utils.ts
msgid "1 hour"
msgstr "1 hora"
@@ -44,7 +46,7 @@ msgstr "1 hora"
#. Load average
#: src/components/charts/load-average-chart.tsx
msgid "1 min"
msgstr ""
msgstr "1 min"
#: src/lib/utils.ts
msgid "1 week"
@@ -57,7 +59,7 @@ msgstr "12 horas"
#. Load average
#: src/components/charts/load-average-chart.tsx
msgid "15 min"
msgstr ""
msgstr "15 min"
#: src/lib/utils.ts
msgid "24 hours"
@@ -70,7 +72,7 @@ msgstr "30 días"
#. Load average
#: src/components/charts/load-average-chart.tsx
msgid "5 min"
msgstr ""
msgstr "5 min"
#. Table column
#: src/components/routes/settings/tokens-fingerprints.tsx
@@ -200,12 +202,12 @@ msgstr "Binario"
#: src/components/routes/settings/general.tsx
#: src/components/routes/settings/general.tsx
msgid "Bits (Kbps, Mbps, Gbps)"
msgstr ""
msgstr "Bits (Kbps, Mbps, Gbps)"
#: src/components/routes/settings/general.tsx
#: src/components/routes/settings/general.tsx
msgid "Bytes (KB/s, MB/s, GB/s)"
msgstr ""
msgstr "Bytes (KB/s, MB/s, GB/s)"
#: src/components/charts/mem-chart.tsx
msgid "Cache / Buffers"
@@ -222,7 +224,7 @@ msgstr "Precaución - posible pérdida de datos"
#: src/components/routes/settings/general.tsx
msgid "Celsius (°C)"
msgstr ""
msgstr "Celsius (°C)"
#: src/components/routes/settings/general.tsx
msgid "Change display units for metrics."
@@ -257,6 +259,10 @@ msgstr "Revise los registros para más detalles."
msgid "Check your notification service"
msgstr "Verifique su servicio de notificaciones"
#: src/components/systems-table/systems-table.tsx
msgid "Click on a system to view more information."
msgstr "Haga clic en un sistema para ver más información."
#: src/components/ui/input-copy.tsx
msgid "Click to copy"
msgstr "Haga clic para copiar"
@@ -427,11 +433,14 @@ msgstr "Documentación"
#: src/components/alerts-history-columns.tsx
#: src/components/routes/system.tsx
#: src/components/systems-table/systems-table-columns.tsx
#: src/components/systems-table/systems-table.tsx
#: src/lib/alerts.ts
msgid "Down"
msgstr "Abajo"
#: src/components/systems-table/systems-table.tsx
msgid "Down ({downSystemsLength})"
msgstr "Abajo ({downSystemsLength})"
#: src/components/alerts-history-columns.tsx
msgid "Duration"
msgstr "Duración"
@@ -496,7 +505,7 @@ msgstr "Exporte la configuración actual de sus sistemas."
#: src/components/routes/settings/general.tsx
msgid "Fahrenheit (°F)"
msgstr ""
msgstr "Fahrenheit (°F)"
#: src/lib/api.ts
msgid "Failed to authenticate"
@@ -756,10 +765,13 @@ msgid "Pause"
msgstr "Pausar"
#: src/components/systems-table/systems-table-columns.tsx
#: src/components/systems-table/systems-table.tsx
msgid "Paused"
msgstr "Pausado"
#: src/components/systems-table/systems-table.tsx
msgid "Paused ({pausedSystemsLength})"
msgstr "Pausado ({pausedSystemsLength})"
#: src/components/routes/settings/notifications.tsx
msgid "Please <0>configure an SMTP server</0> to ensure alerts are delivered."
msgstr "Por favor, <0>configure un servidor SMTP</0> para asegurar que las alertas sean entregadas."
@@ -1006,7 +1018,7 @@ msgstr "Alternar tema"
#: src/components/add-system.tsx
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Token"
msgstr ""
msgstr "Token"
#: src/components/command-palette.tsx
#: src/components/routes/settings/layout.tsx
@@ -1063,6 +1075,7 @@ msgstr "Se activa cuando el uso de cualquier disco supera un umbral"
msgid "Unit preferences"
msgstr "Preferencias de unidad"
#: src/components/command-palette.tsx
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Universal token"
msgstr "Token universal"
@@ -1075,13 +1088,12 @@ msgstr "Desconocida"
#. Context: System is up
#: src/components/routes/system.tsx
#: src/components/systems-table/systems-table-columns.tsx
#: src/components/systems-table/systems-table.tsx
msgid "Up"
msgstr "Activo"
#: src/components/systems-table/systems-table.tsx
msgid "Updated in real time. Click on a system to view information."
msgstr "Actualizado en tiempo real. Haga clic en un sistema para ver la información."
msgid "Up ({upSystemsLength})"
msgstr "Activo ({upSystemsLength})"
#: src/components/routes/system.tsx
msgid "Uptime"

View File

@@ -8,7 +8,7 @@ msgstr ""
"Language: fa\n"
"Project-Id-Version: beszel\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2025-07-25 22:44\n"
"PO-Revision-Date: 2025-08-28 23:21\n"
"Last-Translator: \n"
"Language-Team: Persian\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -23,20 +23,22 @@ msgstr ""
msgid "{0, plural, one {# day} other {# days}}"
msgstr "{0, plural, one {# روز} other {# روز}}"
#. placeholder {0}: Math.trunc(system.info.u / 3600)
#: src/components/routes/system.tsx
msgid "{0, plural, one {# hour} other {# hours}}"
msgstr "{0, plural, one {# ساعت} other {# ساعت}}"
#. placeholder {0}: Math.trunc(system.info.u / 60)
#: src/components/routes/system.tsx
msgid "{0, plural, one {# minute} few {# minutes} many {# minutes} other {# minutes}}"
msgstr "{0, plural, one {# دقیقه} few {# دقیقه} many {# دقیقه} other {# دقیقه}}"
#. placeholder {0}: table.getFilteredSelectedRowModel().rows.length
#. placeholder {1}: table.getFilteredRowModel().rows.length
#: src/components/routes/settings/alerts-history-data-table.tsx
msgid "{0} of {1} row(s) selected."
msgstr "{0} از {1} ردیف انتخاب شده است."
#: src/components/routes/system.tsx
msgid "{hours, plural, one {# hour} other {# hours}}"
msgstr "{hours, plural, one {# ساعت} other {# ساعت}}"
#: src/components/routes/system.tsx
msgid "{mins, plural, one {# minute} other {# minutes}}"
msgstr ""
#: src/lib/utils.ts
msgid "1 hour"
msgstr "۱ ساعت"
@@ -257,6 +259,10 @@ msgstr "برای جزئیات بیشتر، لاگ‌ها را بررسی کنی
msgid "Check your notification service"
msgstr "سرویس اطلاع‌رسانی خود را بررسی کنید"
#: src/components/systems-table/systems-table.tsx
msgid "Click on a system to view more information."
msgstr "برای مشاهده اطلاعات بیشتر روی یک سیستم کلیک کنید."
#: src/components/ui/input-copy.tsx
msgid "Click to copy"
msgstr "برای کپی کردن کلیک کنید"
@@ -427,11 +433,14 @@ msgstr "مستندات"
#: src/components/alerts-history-columns.tsx
#: src/components/routes/system.tsx
#: src/components/systems-table/systems-table-columns.tsx
#: src/components/systems-table/systems-table.tsx
#: src/lib/alerts.ts
msgid "Down"
msgstr "قطع"
#: src/components/systems-table/systems-table.tsx
msgid "Down ({downSystemsLength})"
msgstr "قطع ({downSystemsLength})"
#: src/components/alerts-history-columns.tsx
msgid "Duration"
msgstr "مدت زمان"
@@ -756,10 +765,13 @@ msgid "Pause"
msgstr "توقف"
#: src/components/systems-table/systems-table-columns.tsx
#: src/components/systems-table/systems-table.tsx
msgid "Paused"
msgstr "مکث شده"
#: src/components/systems-table/systems-table.tsx
msgid "Paused ({pausedSystemsLength})"
msgstr "مکث شده ({pausedSystemsLength})"
#: src/components/routes/settings/notifications.tsx
msgid "Please <0>configure an SMTP server</0> to ensure alerts are delivered."
msgstr "لطفاً برای اطمینان از تحویل هشدارها، یک <0>سرور SMTP پیکربندی کنید</0>."
@@ -1063,6 +1075,7 @@ msgstr "هنگامی که استفاده از هر دیسکی از یک آستا
msgid "Unit preferences"
msgstr "تنظیمات واحدها"
#: src/components/command-palette.tsx
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Universal token"
msgstr "توکن جهانی"
@@ -1075,13 +1088,12 @@ msgstr "ناشناخته"
#. Context: System is up
#: src/components/routes/system.tsx
#: src/components/systems-table/systems-table-columns.tsx
#: src/components/systems-table/systems-table.tsx
msgid "Up"
msgstr "فعال"
#: src/components/systems-table/systems-table.tsx
msgid "Updated in real time. Click on a system to view information."
msgstr "به صورت لحظه‌ای به‌روزرسانی می‌شود. برای مشاهده اطلاعات، روی یک سیستم کلیک کنید."
msgid "Up ({upSystemsLength})"
msgstr "فعال ({upSystemsLength})"
#: src/components/routes/system.tsx
msgid "Uptime"

View File

@@ -8,7 +8,7 @@ msgstr ""
"Language: fr\n"
"Project-Id-Version: beszel\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2025-07-25 22:44\n"
"PO-Revision-Date: 2025-08-28 23:21\n"
"Last-Translator: \n"
"Language-Team: French\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
@@ -23,20 +23,22 @@ msgstr ""
msgid "{0, plural, one {# day} other {# days}}"
msgstr "{0, plural, one {# jour} other {# jours}}"
#. placeholder {0}: Math.trunc(system.info.u / 3600)
#: src/components/routes/system.tsx
msgid "{0, plural, one {# hour} other {# hours}}"
msgstr "{0, plural, one {# heure} other {# heures}}"
#. placeholder {0}: Math.trunc(system.info.u / 60)
#: src/components/routes/system.tsx
msgid "{0, plural, one {# minute} few {# minutes} many {# minutes} other {# minutes}}"
msgstr ""
#. placeholder {0}: table.getFilteredSelectedRowModel().rows.length
#. placeholder {1}: table.getFilteredRowModel().rows.length
#: src/components/routes/settings/alerts-history-data-table.tsx
msgid "{0} of {1} row(s) selected."
msgstr ""
#: src/components/routes/system.tsx
msgid "{hours, plural, one {# hour} other {# hours}}"
msgstr "{hours, plural, one {# heure} other {# heures}}"
#: src/components/routes/system.tsx
msgid "{mins, plural, one {# minute} other {# minutes}}"
msgstr ""
#: src/lib/utils.ts
msgid "1 hour"
msgstr "1 heure"
@@ -257,6 +259,10 @@ msgstr "Vérifiez les journaux pour plus de détails."
msgid "Check your notification service"
msgstr "Vérifiez votre service de notification"
#: src/components/systems-table/systems-table.tsx
msgid "Click on a system to view more information."
msgstr ""
#: src/components/ui/input-copy.tsx
msgid "Click to copy"
msgstr "Cliquez pour copier"
@@ -427,11 +433,14 @@ msgstr "Documentation"
#: src/components/alerts-history-columns.tsx
#: src/components/routes/system.tsx
#: src/components/systems-table/systems-table-columns.tsx
#: src/components/systems-table/systems-table.tsx
#: src/lib/alerts.ts
msgid "Down"
msgstr "Injoignable"
#: src/components/systems-table/systems-table.tsx
msgid "Down ({downSystemsLength})"
msgstr ""
#: src/components/alerts-history-columns.tsx
msgid "Duration"
msgstr ""
@@ -756,10 +765,13 @@ msgid "Pause"
msgstr "Pause"
#: src/components/systems-table/systems-table-columns.tsx
#: src/components/systems-table/systems-table.tsx
msgid "Paused"
msgstr "En pause"
#: src/components/systems-table/systems-table.tsx
msgid "Paused ({pausedSystemsLength})"
msgstr ""
#: src/components/routes/settings/notifications.tsx
msgid "Please <0>configure an SMTP server</0> to ensure alerts are delivered."
msgstr "Veuillez <0>configurer un serveur SMTP</0> pour garantir la livraison des alertes."
@@ -1063,6 +1075,7 @@ msgstr "Déclenchement lorsque l'utilisation de tout disque dépasse un seuil"
msgid "Unit preferences"
msgstr ""
#: src/components/command-palette.tsx
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Universal token"
msgstr "Token universel"
@@ -1075,13 +1088,12 @@ msgstr "Inconnue"
#. Context: System is up
#: src/components/routes/system.tsx
#: src/components/systems-table/systems-table-columns.tsx
#: src/components/systems-table/systems-table.tsx
msgid "Up"
msgstr "Joignable"
#: src/components/systems-table/systems-table.tsx
msgid "Updated in real time. Click on a system to view information."
msgstr "Mis à jour en temps réel. Cliquez sur un système pour voir les informations."
msgid "Up ({upSystemsLength})"
msgstr ""
#: src/components/routes/system.tsx
msgid "Uptime"

View File

@@ -8,7 +8,7 @@ msgstr ""
"Language: hr\n"
"Project-Id-Version: beszel\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2025-08-25 01:16\n"
"PO-Revision-Date: 2025-08-28 23:21\n"
"Last-Translator: \n"
"Language-Team: Croatian\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
@@ -23,20 +23,22 @@ msgstr ""
msgid "{0, plural, one {# day} other {# days}}"
msgstr "{0, plural, one {# dan} other {# dani}}"
#. placeholder {0}: Math.trunc(system.info.u / 3600)
#: src/components/routes/system.tsx
msgid "{0, plural, one {# hour} other {# hours}}"
msgstr "{0, plural, one {# sat} other {# sati}}"
#. placeholder {0}: Math.trunc(system.info.u / 60)
#: src/components/routes/system.tsx
msgid "{0, plural, one {# minute} few {# minutes} many {# minutes} other {# minutes}}"
msgstr ""
#. placeholder {0}: table.getFilteredSelectedRowModel().rows.length
#. placeholder {1}: table.getFilteredRowModel().rows.length
#: src/components/routes/settings/alerts-history-data-table.tsx
msgid "{0} of {1} row(s) selected."
msgstr ""
#: src/components/routes/system.tsx
msgid "{hours, plural, one {# hour} other {# hours}}"
msgstr "{hours, plural, one {# sat} other {# sati}}"
#: src/components/routes/system.tsx
msgid "{mins, plural, one {# minute} other {# minutes}}"
msgstr ""
#: src/lib/utils.ts
msgid "1 hour"
msgstr "1 sat"
@@ -257,6 +259,10 @@ msgstr "Provjerite logove za više detalja."
msgid "Check your notification service"
msgstr "Provjerite Vaš servis notifikacija"
#: src/components/systems-table/systems-table.tsx
msgid "Click on a system to view more information."
msgstr ""
#: src/components/ui/input-copy.tsx
msgid "Click to copy"
msgstr "Pritisnite za kopiranje"
@@ -427,11 +433,14 @@ msgstr "Dokumentacija"
#: src/components/alerts-history-columns.tsx
#: src/components/routes/system.tsx
#: src/components/systems-table/systems-table-columns.tsx
#: src/components/systems-table/systems-table.tsx
#: src/lib/alerts.ts
msgid "Down"
msgstr ""
#: src/components/systems-table/systems-table.tsx
msgid "Down ({downSystemsLength})"
msgstr ""
#: src/components/alerts-history-columns.tsx
msgid "Duration"
msgstr ""
@@ -756,10 +765,13 @@ msgid "Pause"
msgstr "Pauza"
#: src/components/systems-table/systems-table-columns.tsx
#: src/components/systems-table/systems-table.tsx
msgid "Paused"
msgstr "Pauzirano"
#: src/components/systems-table/systems-table.tsx
msgid "Paused ({pausedSystemsLength})"
msgstr ""
#: src/components/routes/settings/notifications.tsx
msgid "Please <0>configure an SMTP server</0> to ensure alerts are delivered."
msgstr "Molimo <0>konfigurirajte SMTP server</0> kako biste osigurali isporuku upozorenja."
@@ -1063,6 +1075,7 @@ msgstr "Pokreće se kada iskorištenost bilo kojeg diska premaši prag"
msgid "Unit preferences"
msgstr ""
#: src/components/command-palette.tsx
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Universal token"
msgstr ""
@@ -1075,13 +1088,12 @@ msgstr "Nepoznata"
#. Context: System is up
#: src/components/routes/system.tsx
#: src/components/systems-table/systems-table-columns.tsx
#: src/components/systems-table/systems-table.tsx
msgid "Up"
msgstr ""
#: src/components/systems-table/systems-table.tsx
msgid "Updated in real time. Click on a system to view information."
msgstr "Ažurirano odmah. Kliknite na sistem za više informacija."
msgid "Up ({upSystemsLength})"
msgstr ""
#: src/components/routes/system.tsx
msgid "Uptime"

View File

@@ -8,7 +8,7 @@ msgstr ""
"Language: hu\n"
"Project-Id-Version: beszel\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2025-07-25 22:44\n"
"PO-Revision-Date: 2025-08-28 23:21\n"
"Last-Translator: \n"
"Language-Team: Hungarian\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -23,20 +23,22 @@ msgstr ""
msgid "{0, plural, one {# day} other {# days}}"
msgstr "{0, plural, one {# nap} other {# nap}}"
#. placeholder {0}: Math.trunc(system.info.u / 3600)
#: src/components/routes/system.tsx
msgid "{0, plural, one {# hour} other {# hours}}"
msgstr "{0, plural, one {# óra} other {# óra}}"
#. placeholder {0}: Math.trunc(system.info.u / 60)
#: src/components/routes/system.tsx
msgid "{0, plural, one {# minute} few {# minutes} many {# minutes} other {# minutes}}"
msgstr ""
#. placeholder {0}: table.getFilteredSelectedRowModel().rows.length
#. placeholder {1}: table.getFilteredRowModel().rows.length
#: src/components/routes/settings/alerts-history-data-table.tsx
msgid "{0} of {1} row(s) selected."
msgstr ""
#: src/components/routes/system.tsx
msgid "{hours, plural, one {# hour} other {# hours}}"
msgstr "{hours, plural, one {# óra} other {# óra}}"
#: src/components/routes/system.tsx
msgid "{mins, plural, one {# minute} other {# minutes}}"
msgstr ""
#: src/lib/utils.ts
msgid "1 hour"
msgstr "1 óra"
@@ -257,6 +259,10 @@ msgstr "Ellenőrizd a naplót a további részletekért."
msgid "Check your notification service"
msgstr "Ellenőrizd az értesítési szolgáltatásodat"
#: src/components/systems-table/systems-table.tsx
msgid "Click on a system to view more information."
msgstr ""
#: src/components/ui/input-copy.tsx
msgid "Click to copy"
msgstr "Kattints a másoláshoz"
@@ -427,11 +433,14 @@ msgstr "Dokumentáció"
#: src/components/alerts-history-columns.tsx
#: src/components/routes/system.tsx
#: src/components/systems-table/systems-table-columns.tsx
#: src/components/systems-table/systems-table.tsx
#: src/lib/alerts.ts
msgid "Down"
msgstr ""
#: src/components/systems-table/systems-table.tsx
msgid "Down ({downSystemsLength})"
msgstr ""
#: src/components/alerts-history-columns.tsx
msgid "Duration"
msgstr ""
@@ -756,10 +765,13 @@ msgid "Pause"
msgstr "Szüneteltetés"
#: src/components/systems-table/systems-table-columns.tsx
#: src/components/systems-table/systems-table.tsx
msgid "Paused"
msgstr "Szüneteltetve"
#: src/components/systems-table/systems-table.tsx
msgid "Paused ({pausedSystemsLength})"
msgstr ""
#: src/components/routes/settings/notifications.tsx
msgid "Please <0>configure an SMTP server</0> to ensure alerts are delivered."
msgstr "Kérjük, <0>konfigurálj egy SMTP szervert</0> az értesítések kézbesítésének biztosítása érdekében."
@@ -1063,6 +1075,7 @@ msgstr "Bekapcsol, ha a lemez érzékelő túllép egy küszöbértéket"
msgid "Unit preferences"
msgstr ""
#: src/components/command-palette.tsx
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Universal token"
msgstr ""
@@ -1075,13 +1088,12 @@ msgstr "Ismeretlen"
#. Context: System is up
#: src/components/routes/system.tsx
#: src/components/systems-table/systems-table-columns.tsx
#: src/components/systems-table/systems-table.tsx
msgid "Up"
msgstr ""
#: src/components/systems-table/systems-table.tsx
msgid "Updated in real time. Click on a system to view information."
msgstr "Valós időben frissítve. Kattintson egy rendszerre az információk megtekintéséhez."
msgid "Up ({upSystemsLength})"
msgstr ""
#: src/components/routes/system.tsx
msgid "Uptime"

View File

@@ -8,7 +8,7 @@ msgstr ""
"Language: is\n"
"Project-Id-Version: beszel\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2025-07-25 22:44\n"
"PO-Revision-Date: 2025-08-28 23:21\n"
"Last-Translator: \n"
"Language-Team: Icelandic\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -23,20 +23,22 @@ msgstr ""
msgid "{0, plural, one {# day} other {# days}}"
msgstr "{0, plural, one {# dagur} other {# dagar}}"
#. placeholder {0}: Math.trunc(system.info.u / 3600)
#: src/components/routes/system.tsx
msgid "{0, plural, one {# hour} other {# hours}}"
msgstr "{0, plural, one {# klukkustund} other {# klukkustundir}}"
#. placeholder {0}: Math.trunc(system.info.u / 60)
#: src/components/routes/system.tsx
msgid "{0, plural, one {# minute} few {# minutes} many {# minutes} other {# minutes}}"
msgstr ""
#. placeholder {0}: table.getFilteredSelectedRowModel().rows.length
#. placeholder {1}: table.getFilteredRowModel().rows.length
#: src/components/routes/settings/alerts-history-data-table.tsx
msgid "{0} of {1} row(s) selected."
msgstr ""
#: src/components/routes/system.tsx
msgid "{hours, plural, one {# hour} other {# hours}}"
msgstr "{hours, plural, one {# klukkustund} other {# klukkustundir}}"
#: src/components/routes/system.tsx
msgid "{mins, plural, one {# minute} other {# minutes}}"
msgstr ""
#: src/lib/utils.ts
msgid "1 hour"
msgstr "1 klukkustund"
@@ -257,6 +259,10 @@ msgstr "Skoðaðu logga til að sjá meiri upplýsingar."
msgid "Check your notification service"
msgstr "Athugaðu tilkynningaþjónustuna þína"
#: src/components/systems-table/systems-table.tsx
msgid "Click on a system to view more information."
msgstr ""
#: src/components/ui/input-copy.tsx
msgid "Click to copy"
msgstr "Smelltu til að afrita"
@@ -427,11 +433,14 @@ msgstr "Skjal"
#: src/components/alerts-history-columns.tsx
#: src/components/routes/system.tsx
#: src/components/systems-table/systems-table-columns.tsx
#: src/components/systems-table/systems-table.tsx
#: src/lib/alerts.ts
msgid "Down"
msgstr ""
#: src/components/systems-table/systems-table.tsx
msgid "Down ({downSystemsLength})"
msgstr ""
#: src/components/alerts-history-columns.tsx
msgid "Duration"
msgstr ""
@@ -756,10 +765,13 @@ msgid "Pause"
msgstr "Pása"
#: src/components/systems-table/systems-table-columns.tsx
#: src/components/systems-table/systems-table.tsx
msgid "Paused"
msgstr "Í bið"
#: src/components/systems-table/systems-table.tsx
msgid "Paused ({pausedSystemsLength})"
msgstr ""
#: src/components/routes/settings/notifications.tsx
msgid "Please <0>configure an SMTP server</0> to ensure alerts are delivered."
msgstr ""
@@ -1063,6 +1075,7 @@ msgstr "Virkjast þegar diska notkun fer yfir þröskuld"
msgid "Unit preferences"
msgstr ""
#: src/components/command-palette.tsx
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Universal token"
msgstr ""
@@ -1075,13 +1088,12 @@ msgstr "Óþekkt"
#. Context: System is up
#: src/components/routes/system.tsx
#: src/components/systems-table/systems-table-columns.tsx
#: src/components/systems-table/systems-table.tsx
msgid "Up"
msgstr ""
#: src/components/systems-table/systems-table.tsx
msgid "Updated in real time. Click on a system to view information."
msgstr "Uppfærist í rauntíma. Veldu kerfi til að skoða upplýsingar."
msgid "Up ({upSystemsLength})"
msgstr ""
#: src/components/routes/system.tsx
msgid "Uptime"

View File

@@ -8,7 +8,7 @@ msgstr ""
"Language: it\n"
"Project-Id-Version: beszel\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2025-08-25 01:16\n"
"PO-Revision-Date: 2025-08-28 23:21\n"
"Last-Translator: \n"
"Language-Team: Italian\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -23,20 +23,22 @@ msgstr ""
msgid "{0, plural, one {# day} other {# days}}"
msgstr "{0, plural, one {# giorno} other {# giorni}}"
#. placeholder {0}: Math.trunc(system.info.u / 3600)
#: src/components/routes/system.tsx
msgid "{0, plural, one {# hour} other {# hours}}"
msgstr "{0, plural, one {# ora} other {# ore}}"
#. placeholder {0}: Math.trunc(system.info.u / 60)
#: src/components/routes/system.tsx
msgid "{0, plural, one {# minute} few {# minutes} many {# minutes} other {# minutes}}"
msgstr "{0, plural, one {# minuto} other {# minuti}}"
#. placeholder {0}: table.getFilteredSelectedRowModel().rows.length
#. placeholder {1}: table.getFilteredRowModel().rows.length
#: src/components/routes/settings/alerts-history-data-table.tsx
msgid "{0} of {1} row(s) selected."
msgstr "{0} di {1} righe selezionate."
#: src/components/routes/system.tsx
msgid "{hours, plural, one {# hour} other {# hours}}"
msgstr "{hours, plural, one {# ora} other {# ore}}"
#: src/components/routes/system.tsx
msgid "{mins, plural, one {# minute} other {# minutes}}"
msgstr ""
#: src/lib/utils.ts
msgid "1 hour"
msgstr "1 ora"
@@ -200,12 +202,12 @@ msgstr "Binario"
#: src/components/routes/settings/general.tsx
#: src/components/routes/settings/general.tsx
msgid "Bits (Kbps, Mbps, Gbps)"
msgstr ""
msgstr "Bit (Kbps, Mbps, Gbps)"
#: src/components/routes/settings/general.tsx
#: src/components/routes/settings/general.tsx
msgid "Bytes (KB/s, MB/s, GB/s)"
msgstr ""
msgstr "Byte (KB/s, MB/s, GB/s)"
#: src/components/charts/mem-chart.tsx
msgid "Cache / Buffers"
@@ -222,11 +224,11 @@ msgstr "Attenzione - possibile perdita di dati"
#: src/components/routes/settings/general.tsx
msgid "Celsius (°C)"
msgstr ""
msgstr "Celsius (°C)"
#: src/components/routes/settings/general.tsx
msgid "Change display units for metrics."
msgstr ""
msgstr "Modifica le unità di visualizzazione per le metriche."
#: src/components/routes/settings/general.tsx
msgid "Change general application options."
@@ -257,6 +259,10 @@ msgstr "Controlla i log per maggiori dettagli."
msgid "Check your notification service"
msgstr "Controlla il tuo servizio di notifica"
#: src/components/systems-table/systems-table.tsx
msgid "Click on a system to view more information."
msgstr "Clicca su un sistema per visualizzare più informazioni."
#: src/components/ui/input-copy.tsx
msgid "Click to copy"
msgstr "Clicca per copiare"
@@ -277,7 +283,7 @@ msgstr "Conferma password"
#: src/components/routes/home.tsx
msgid "Connection is down"
msgstr ""
msgstr "La connessione è interrotta"
#: src/components/routes/settings/alerts-history-data-table.tsx
#: src/components/systems-table/systems-table-columns.tsx
@@ -351,7 +357,7 @@ msgstr "Crea account"
#. Context: date created
#: src/components/alerts-history-columns.tsx
msgid "Created"
msgstr ""
msgstr "Creato"
#: src/components/routes/settings/general.tsx
msgid "Critical (%)"
@@ -395,7 +401,7 @@ msgstr "I/O Disco"
#: src/components/routes/settings/general.tsx
msgid "Disk unit"
msgstr ""
msgstr "Unità disco"
#: src/components/charts/disk-chart.tsx
#: src/components/routes/system.tsx
@@ -427,14 +433,17 @@ msgstr "Documentazione"
#: src/components/alerts-history-columns.tsx
#: src/components/routes/system.tsx
#: src/components/systems-table/systems-table-columns.tsx
#: src/components/systems-table/systems-table.tsx
#: src/lib/alerts.ts
msgid "Down"
msgstr "Offline"
#: src/components/systems-table/systems-table.tsx
msgid "Down ({downSystemsLength})"
msgstr "Offline ({downSystemsLength})"
#: src/components/alerts-history-columns.tsx
msgid "Duration"
msgstr ""
msgstr "Durata"
#: src/components/add-system.tsx
#: src/components/systems-table/systems-table-columns.tsx
@@ -496,7 +505,7 @@ msgstr "Esporta la configurazione attuale dei tuoi sistemi."
#: src/components/routes/settings/general.tsx
msgid "Fahrenheit (°F)"
msgstr ""
msgstr "Fahrenheit (°F)"
#: src/lib/api.ts
msgid "Failed to authenticate"
@@ -523,7 +532,7 @@ msgstr "Filtra..."
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Fingerprint"
msgstr ""
msgstr "Impronta digitale"
#: src/components/alerts/alerts-sheet.tsx
msgid "For <0>{min}</0> {min, plural, one {minute} other {minutes}}"
@@ -677,7 +686,7 @@ msgstr "Traffico di rete delle interfacce pubbliche"
#. Context: Bytes or bits
#: src/components/routes/settings/general.tsx
msgid "Network unit"
msgstr ""
msgstr "Unità rete"
#: src/components/command-palette.tsx
msgid "No results found."
@@ -756,10 +765,13 @@ msgid "Pause"
msgstr "Pausa"
#: src/components/systems-table/systems-table-columns.tsx
#: src/components/systems-table/systems-table.tsx
msgid "Paused"
msgstr "In pausa"
#: src/components/systems-table/systems-table.tsx
msgid "Paused ({pausedSystemsLength})"
msgstr "In pausa ({pausedSystemsLength})"
#: src/components/routes/settings/notifications.tsx
msgid "Please <0>configure an SMTP server</0> to ensure alerts are delivered."
msgstr "Si prega di <0>configurare un server SMTP</0> per garantire la consegna degli avvisi."
@@ -829,7 +841,7 @@ msgstr "Reimposta Password"
#: src/components/alerts-history-columns.tsx
#: src/components/routes/settings/alerts-history-data-table.tsx
msgid "Resolved"
msgstr ""
msgstr "Risolto"
#: src/components/systems-table/systems-table-columns.tsx
msgid "Resume"
@@ -841,7 +853,7 @@ msgstr "Ruota token"
#: src/components/routes/settings/alerts-history-data-table.tsx
msgid "Rows per page"
msgstr ""
msgstr "Righe per pagina"
#: src/components/routes/settings/notifications.tsx
msgid "Save address using enter key or comma. Leave blank to disable email notifications."
@@ -906,7 +918,7 @@ msgstr "Ordina per"
#. Context: alert state (active or resolved)
#: src/components/alerts-history-columns.tsx
msgid "State"
msgstr ""
msgstr "Stato"
#: src/components/systems-table/systems-table.tsx
#: src/lib/alerts.ts
@@ -930,7 +942,7 @@ msgstr "Sistema"
#: src/components/routes/system.tsx
msgid "System load averages over time"
msgstr ""
msgstr "Medie di carico del sistema nel tempo"
#: src/components/navbar.tsx
msgid "Systems"
@@ -956,7 +968,7 @@ msgstr "Temperatura"
#: src/components/routes/settings/general.tsx
msgid "Temperature unit"
msgstr ""
msgstr "Unità temperatura"
#: src/components/routes/system.tsx
msgid "Temperatures of system sensors"
@@ -980,7 +992,7 @@ msgstr "Questa azione non può essere annullata. Questo eliminerà permanentemen
#: src/components/routes/settings/alerts-history-data-table.tsx
msgid "This will permanently delete all selected records from the database."
msgstr ""
msgstr "Questo eliminerà permanentemente tutti i record selezionati dal database."
#: src/components/routes/system.tsx
msgid "Throughput of {extraFsName}"
@@ -1024,15 +1036,15 @@ msgstr "I token e le impronte digitali vengono utilizzati per autenticare le con
#: src/lib/alerts.ts
msgid "Triggers when 1 minute load average exceeds a threshold"
msgstr ""
msgstr "Si attiva quando la media di carico di 1 minuto supera una soglia"
#: src/lib/alerts.ts
msgid "Triggers when 15 minute load average exceeds a threshold"
msgstr ""
msgstr "Si attiva quando la media di carico di 15 minuti supera una soglia"
#: src/lib/alerts.ts
msgid "Triggers when 5 minute load average exceeds a threshold"
msgstr ""
msgstr "Si attiva quando la media di carico di 5 minuti supera una soglia"
#: src/lib/alerts.ts
msgid "Triggers when any sensor exceeds a threshold"
@@ -1061,8 +1073,9 @@ msgstr "Attiva quando l'utilizzo di un disco supera una soglia"
#. Temperature / network units
#: src/components/routes/settings/general.tsx
msgid "Unit preferences"
msgstr ""
msgstr "Preferenze unità"
#: src/components/command-palette.tsx
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Universal token"
msgstr "Token universale"
@@ -1075,13 +1088,12 @@ msgstr "Sconosciuta"
#. Context: System is up
#: src/components/routes/system.tsx
#: src/components/systems-table/systems-table-columns.tsx
#: src/components/systems-table/systems-table.tsx
msgid "Up"
msgstr "Attivo"
#: src/components/systems-table/systems-table.tsx
msgid "Updated in real time. Click on a system to view information."
msgstr "Aggiornato in tempo reale. Clicca su un sistema per visualizzare le informazioni."
msgid "Up ({upSystemsLength})"
msgstr "Attivo ({upSystemsLength})"
#: src/components/routes/system.tsx
msgid "Uptime"
@@ -1110,7 +1122,7 @@ msgstr "Utenti"
#: src/components/alerts-history-columns.tsx
msgid "Value"
msgstr ""
msgstr "Valore"
#: src/components/systems-table/systems-table.tsx
msgid "View"
@@ -1118,7 +1130,7 @@ msgstr "Vista"
#: src/components/routes/settings/alerts-history-data-table.tsx
msgid "View your 200 most recent alerts."
msgstr ""
msgstr "Visualizza i tuoi 200 avvisi più recenti."
#: src/components/systems-table/systems-table.tsx
msgid "Visible Fields"

View File

@@ -8,7 +8,7 @@ msgstr ""
"Language: ja\n"
"Project-Id-Version: beszel\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2025-08-25 01:15\n"
"PO-Revision-Date: 2025-08-28 23:21\n"
"Last-Translator: \n"
"Language-Team: Japanese\n"
"Plural-Forms: nplurals=1; plural=0;\n"
@@ -23,20 +23,22 @@ msgstr ""
msgid "{0, plural, one {# day} other {# days}}"
msgstr "{0, plural, one {# 日} other {# 日}}"
#. placeholder {0}: Math.trunc(system.info.u / 3600)
#: src/components/routes/system.tsx
msgid "{0, plural, one {# hour} other {# hours}}"
msgstr "{0, plural, one {# 時間} other {# 時間}}"
#. placeholder {0}: Math.trunc(system.info.u / 60)
#: src/components/routes/system.tsx
msgid "{0, plural, one {# minute} few {# minutes} many {# minutes} other {# minutes}}"
msgstr "{0, plural, one {# 分} few {# 分} many {# 分} other {# 分}}"
#. placeholder {0}: table.getFilteredSelectedRowModel().rows.length
#. placeholder {1}: table.getFilteredRowModel().rows.length
#: src/components/routes/settings/alerts-history-data-table.tsx
msgid "{0} of {1} row(s) selected."
msgstr "{1}行のうち{0}行が選択されました。"
#: src/components/routes/system.tsx
msgid "{hours, plural, one {# hour} other {# hours}}"
msgstr "{hours, plural, one {# 時間} other {# 時間}}"
#: src/components/routes/system.tsx
msgid "{mins, plural, one {# minute} other {# minutes}}"
msgstr ""
#: src/lib/utils.ts
msgid "1 hour"
msgstr "1時間"
@@ -257,6 +259,10 @@ msgstr "詳細についてはログを確認してください。"
msgid "Check your notification service"
msgstr "通知サービスを確認してください"
#: src/components/systems-table/systems-table.tsx
msgid "Click on a system to view more information."
msgstr "システムをクリックして詳細を表示します。"
#: src/components/ui/input-copy.tsx
msgid "Click to copy"
msgstr "クリックしてコピー"
@@ -427,11 +433,14 @@ msgstr "ドキュメント"
#: src/components/alerts-history-columns.tsx
#: src/components/routes/system.tsx
#: src/components/systems-table/systems-table-columns.tsx
#: src/components/systems-table/systems-table.tsx
#: src/lib/alerts.ts
msgid "Down"
msgstr "停止"
#: src/components/systems-table/systems-table.tsx
msgid "Down ({downSystemsLength})"
msgstr "停止 ({downSystemsLength})"
#: src/components/alerts-history-columns.tsx
msgid "Duration"
msgstr "期間"
@@ -756,10 +765,13 @@ msgid "Pause"
msgstr "一時停止"
#: src/components/systems-table/systems-table-columns.tsx
#: src/components/systems-table/systems-table.tsx
msgid "Paused"
msgstr "一時停止中"
#: src/components/systems-table/systems-table.tsx
msgid "Paused ({pausedSystemsLength})"
msgstr "一時停止 ({pausedSystemsLength})"
#: src/components/routes/settings/notifications.tsx
msgid "Please <0>configure an SMTP server</0> to ensure alerts are delivered."
msgstr "アラートが配信されるように<0>SMTPサーバーを設定</0>してください。"
@@ -1063,6 +1075,7 @@ msgstr "ディスクの使用量がしきい値を超えたときにトリガー
msgid "Unit preferences"
msgstr "単位の設定"
#: src/components/command-palette.tsx
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Universal token"
msgstr "ユニバーサルトークン"
@@ -1075,13 +1088,12 @@ msgstr "不明"
#. Context: System is up
#: src/components/routes/system.tsx
#: src/components/systems-table/systems-table-columns.tsx
#: src/components/systems-table/systems-table.tsx
msgid "Up"
msgstr "正常"
#: src/components/systems-table/systems-table.tsx
msgid "Updated in real time. Click on a system to view information."
msgstr "リアルタイムで更新されます。システムをクリックして情報を表示します。"
msgid "Up ({upSystemsLength})"
msgstr "正常 ({upSystemsLength})"
#: src/components/routes/system.tsx
msgid "Uptime"

View File

@@ -8,7 +8,7 @@ msgstr ""
"Language: ko\n"
"Project-Id-Version: beszel\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2025-08-25 01:16\n"
"PO-Revision-Date: 2025-08-31 15:44\n"
"Last-Translator: \n"
"Language-Team: Korean\n"
"Plural-Forms: nplurals=1; plural=0;\n"
@@ -23,20 +23,22 @@ msgstr ""
msgid "{0, plural, one {# day} other {# days}}"
msgstr "{0, plural, one {# 일} other {# 일}}"
#. placeholder {0}: Math.trunc(system.info.u / 3600)
#: src/components/routes/system.tsx
msgid "{0, plural, one {# hour} other {# hours}}"
msgstr "{0, plural, one {# 시간} other {# 시간}}"
#. placeholder {0}: Math.trunc(system.info.u / 60)
#: src/components/routes/system.tsx
msgid "{0, plural, one {# minute} few {# minutes} many {# minutes} other {# minutes}}"
msgstr "{0, plural, one {# 분} few {# 분} many {# 분} other {# 분}}"
#. placeholder {0}: table.getFilteredSelectedRowModel().rows.length
#. placeholder {1}: table.getFilteredRowModel().rows.length
#: src/components/routes/settings/alerts-history-data-table.tsx
msgid "{0} of {1} row(s) selected."
msgstr "{1}개의 행 중 {0}개가 선택되었습니다."
#: src/components/routes/system.tsx
msgid "{hours, plural, one {# hour} other {# hours}}"
msgstr "{hours, plural, one {# 시간} other {# 시간}}"
#: src/components/routes/system.tsx
msgid "{mins, plural, one {# minute} other {# minutes}}"
msgstr ""
#: src/lib/utils.ts
msgid "1 hour"
msgstr "1시간"
@@ -257,6 +259,10 @@ msgstr "자세한 내용은 로그를 확인하세요."
msgid "Check your notification service"
msgstr "알림 서비스를 확인하세요."
#: src/components/systems-table/systems-table.tsx
msgid "Click on a system to view more information."
msgstr "더 많은 정보를 보려면 시스템을 클릭하세요."
#: src/components/ui/input-copy.tsx
msgid "Click to copy"
msgstr "클릭하여 복사"
@@ -427,11 +433,14 @@ msgstr "문서"
#: src/components/alerts-history-columns.tsx
#: src/components/routes/system.tsx
#: src/components/systems-table/systems-table-columns.tsx
#: src/components/systems-table/systems-table.tsx
#: src/lib/alerts.ts
msgid "Down"
msgstr "오프라인"
#: src/components/systems-table/systems-table.tsx
msgid "Down ({downSystemsLength})"
msgstr "오프라인 ({downSystemsLength})"
#: src/components/alerts-history-columns.tsx
msgid "Duration"
msgstr "기간"
@@ -756,10 +765,13 @@ msgid "Pause"
msgstr "일시 중지"
#: src/components/systems-table/systems-table-columns.tsx
#: src/components/systems-table/systems-table.tsx
msgid "Paused"
msgstr "일시 정지됨"
#: src/components/systems-table/systems-table.tsx
msgid "Paused ({pausedSystemsLength})"
msgstr "일시 정지됨 ({pausedSystemsLength})"
#: src/components/routes/settings/notifications.tsx
msgid "Please <0>configure an SMTP server</0> to ensure alerts are delivered."
msgstr "알림이 전달되도록 <0>SMTP 서버를 구성</0>하세요."
@@ -1063,6 +1075,7 @@ msgstr "디스크 사용량이 임계값을 초과할 때 트리거됩니다."
msgid "Unit preferences"
msgstr "단위 기본 설정"
#: src/components/command-palette.tsx
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Universal token"
msgstr "범용 토큰"
@@ -1075,13 +1088,12 @@ msgstr "알 수 없음"
#. Context: System is up
#: src/components/routes/system.tsx
#: src/components/systems-table/systems-table-columns.tsx
#: src/components/systems-table/systems-table.tsx
msgid "Up"
msgstr "온라인"
#: src/components/systems-table/systems-table.tsx
msgid "Updated in real time. Click on a system to view information."
msgstr "실시간으로 업데이트됩니다. 시스템을 클릭하여 정보를 확인하세요."
msgid "Up ({upSystemsLength})"
msgstr "온라인 ({upSystemsLength})"
#: src/components/routes/system.tsx
msgid "Uptime"

View File

@@ -8,7 +8,7 @@ msgstr ""
"Language: nl\n"
"Project-Id-Version: beszel\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2025-08-25 01:16\n"
"PO-Revision-Date: 2025-08-28 23:21\n"
"Last-Translator: \n"
"Language-Team: Dutch\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -23,20 +23,22 @@ msgstr ""
msgid "{0, plural, one {# day} other {# days}}"
msgstr "{0, plural, one {# dag} other {# dagen}}"
#. placeholder {0}: Math.trunc(system.info.u / 3600)
#: src/components/routes/system.tsx
msgid "{0, plural, one {# hour} other {# hours}}"
msgstr "{0, plural, one {# uur} other {# uren}}"
#. placeholder {0}: Math.trunc(system.info.u / 60)
#: src/components/routes/system.tsx
msgid "{0, plural, one {# minute} few {# minutes} many {# minutes} other {# minutes}}"
msgstr "{0, plural, one {# minuut} other {# minuten}}"
#. placeholder {0}: table.getFilteredSelectedRowModel().rows.length
#. placeholder {1}: table.getFilteredRowModel().rows.length
#: src/components/routes/settings/alerts-history-data-table.tsx
msgid "{0} of {1} row(s) selected."
msgstr "{0} van de {1} rij(en) geselecteerd."
#: src/components/routes/system.tsx
msgid "{hours, plural, one {# hour} other {# hours}}"
msgstr "{hours, plural, one {# uur} other {# uren}}"
#: src/components/routes/system.tsx
msgid "{mins, plural, one {# minute} other {# minutes}}"
msgstr ""
#: src/lib/utils.ts
msgid "1 hour"
msgstr "1 uur"
@@ -257,6 +259,10 @@ msgstr "Controleer de logs voor meer details."
msgid "Check your notification service"
msgstr "Controleer je meldingsservice"
#: src/components/systems-table/systems-table.tsx
msgid "Click on a system to view more information."
msgstr "Klik op een systeem om meer informatie te bekijken."
#: src/components/ui/input-copy.tsx
msgid "Click to copy"
msgstr "Klik om te kopiëren"
@@ -427,11 +433,14 @@ msgstr "Documentatie"
#: src/components/alerts-history-columns.tsx
#: src/components/routes/system.tsx
#: src/components/systems-table/systems-table-columns.tsx
#: src/components/systems-table/systems-table.tsx
#: src/lib/alerts.ts
msgid "Down"
msgstr "Offline"
#: src/components/systems-table/systems-table.tsx
msgid "Down ({downSystemsLength})"
msgstr "Offline ({downSystemsLength})"
#: src/components/alerts-history-columns.tsx
msgid "Duration"
msgstr "Duur"
@@ -756,10 +765,13 @@ msgid "Pause"
msgstr "Pauze"
#: src/components/systems-table/systems-table-columns.tsx
#: src/components/systems-table/systems-table.tsx
msgid "Paused"
msgstr "Gepauzeerd"
#: src/components/systems-table/systems-table.tsx
msgid "Paused ({pausedSystemsLength})"
msgstr "Gepauzeerd ({pausedSystemsLength})"
#: src/components/routes/settings/notifications.tsx
msgid "Please <0>configure an SMTP server</0> to ensure alerts are delivered."
msgstr "<0>Configureer een SMTP-server </0> om ervoor te zorgen dat waarschuwingen worden afgeleverd."
@@ -1063,6 +1075,7 @@ msgstr "Triggert wanneer het gebruik van een schijf een drempelwaarde overschrij
msgid "Unit preferences"
msgstr "Eenheid voorkeuren"
#: src/components/command-palette.tsx
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Universal token"
msgstr "Universele token"
@@ -1075,13 +1088,12 @@ msgstr "Onbekend"
#. Context: System is up
#: src/components/routes/system.tsx
#: src/components/systems-table/systems-table-columns.tsx
#: src/components/systems-table/systems-table.tsx
msgid "Up"
msgstr "Online"
#: src/components/systems-table/systems-table.tsx
msgid "Updated in real time. Click on a system to view information."
msgstr "In realtime bijgewerkt. Klik op een systeem om informatie te bekijken."
msgid "Up ({upSystemsLength})"
msgstr "Online ({upSystemsLength})"
#: src/components/routes/system.tsx
msgid "Uptime"

View File

@@ -8,7 +8,7 @@ msgstr ""
"Language: no\n"
"Project-Id-Version: beszel\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2025-07-25 22:44\n"
"PO-Revision-Date: 2025-08-28 23:21\n"
"Last-Translator: \n"
"Language-Team: Norwegian\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -23,20 +23,22 @@ msgstr ""
msgid "{0, plural, one {# day} other {# days}}"
msgstr "{0, plural, one {# dag} other {# dager}}"
#. placeholder {0}: Math.trunc(system.info.u / 3600)
#: src/components/routes/system.tsx
msgid "{0, plural, one {# hour} other {# hours}}"
msgstr "{0, plural, one {# time} other {# timer}}"
#. placeholder {0}: Math.trunc(system.info.u / 60)
#: src/components/routes/system.tsx
msgid "{0, plural, one {# minute} few {# minutes} many {# minutes} other {# minutes}}"
msgstr ""
#. placeholder {0}: table.getFilteredSelectedRowModel().rows.length
#. placeholder {1}: table.getFilteredRowModel().rows.length
#: src/components/routes/settings/alerts-history-data-table.tsx
msgid "{0} of {1} row(s) selected."
msgstr ""
#: src/components/routes/system.tsx
msgid "{hours, plural, one {# hour} other {# hours}}"
msgstr "{hours, plural, one {# time} other {# timer}}"
#: src/components/routes/system.tsx
msgid "{mins, plural, one {# minute} other {# minutes}}"
msgstr ""
#: src/lib/utils.ts
msgid "1 hour"
msgstr "1 time"
@@ -257,6 +259,10 @@ msgstr "Sjekk loggene for flere detaljer."
msgid "Check your notification service"
msgstr "Sjekk din meldingstjeneste"
#: src/components/systems-table/systems-table.tsx
msgid "Click on a system to view more information."
msgstr ""
#: src/components/ui/input-copy.tsx
msgid "Click to copy"
msgstr "Klikk for å kopiere"
@@ -427,11 +433,14 @@ msgstr "Dokumentasjon"
#: src/components/alerts-history-columns.tsx
#: src/components/routes/system.tsx
#: src/components/systems-table/systems-table-columns.tsx
#: src/components/systems-table/systems-table.tsx
#: src/lib/alerts.ts
msgid "Down"
msgstr "Nede"
#: src/components/systems-table/systems-table.tsx
msgid "Down ({downSystemsLength})"
msgstr ""
#: src/components/alerts-history-columns.tsx
msgid "Duration"
msgstr ""
@@ -756,10 +765,13 @@ msgid "Pause"
msgstr "Pause"
#: src/components/systems-table/systems-table-columns.tsx
#: src/components/systems-table/systems-table.tsx
msgid "Paused"
msgstr "Satt på Pause"
#: src/components/systems-table/systems-table.tsx
msgid "Paused ({pausedSystemsLength})"
msgstr ""
#: src/components/routes/settings/notifications.tsx
msgid "Please <0>configure an SMTP server</0> to ensure alerts are delivered."
msgstr "Vennligst <0>konfigurer en SMTP-server</0> for å forsikre deg om at varsler blir levert."
@@ -1063,6 +1075,7 @@ msgstr "Slår inn når forbruk av hvilken som helst disk overstiger en grensever
msgid "Unit preferences"
msgstr ""
#: src/components/command-palette.tsx
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Universal token"
msgstr ""
@@ -1075,13 +1088,12 @@ msgstr "Ukjent"
#. Context: System is up
#: src/components/routes/system.tsx
#: src/components/systems-table/systems-table-columns.tsx
#: src/components/systems-table/systems-table.tsx
msgid "Up"
msgstr "Oppe"
#: src/components/systems-table/systems-table.tsx
msgid "Updated in real time. Click on a system to view information."
msgstr "Oppdatert i sanntid. Klikk på et system for å se mer informasjon."
msgid "Up ({upSystemsLength})"
msgstr ""
#: src/components/routes/system.tsx
msgid "Uptime"

View File

@@ -8,7 +8,7 @@ msgstr ""
"Language: pl\n"
"Project-Id-Version: beszel\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2025-08-13 15:36\n"
"PO-Revision-Date: 2025-09-03 18:54\n"
"Last-Translator: \n"
"Language-Team: Polish\n"
"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n"
@@ -23,20 +23,22 @@ msgstr ""
msgid "{0, plural, one {# day} other {# days}}"
msgstr "{0, plural, one {# dzień} few {# dni} many {# dni} other {# dni}}"
#. placeholder {0}: Math.trunc(system.info.u / 3600)
#: src/components/routes/system.tsx
msgid "{0, plural, one {# hour} other {# hours}}"
msgstr "{0, plural, one {godzinę} few {# godziny} many {# godzin} other {# godziny}}"
#. placeholder {0}: Math.trunc(system.info.u / 60)
#: src/components/routes/system.tsx
msgid "{0, plural, one {# minute} few {# minutes} many {# minutes} other {# minutes}}"
msgstr "{0, plural, one {# minuta} few {# minuty} many {# minut} other {# minut}}"
#. placeholder {0}: table.getFilteredSelectedRowModel().rows.length
#. placeholder {1}: table.getFilteredRowModel().rows.length
#: src/components/routes/settings/alerts-history-data-table.tsx
msgid "{0} of {1} row(s) selected."
msgstr "{0} z {1} wybranych wierszy."
#: src/components/routes/system.tsx
msgid "{hours, plural, one {# hour} other {# hours}}"
msgstr "{hours, plural, one {godzinę} few {# godziny} many {# godzin} other {# godziny}}"
#: src/components/routes/system.tsx
msgid "{mins, plural, one {# minute} other {# minutes}}"
msgstr ""
#: src/lib/utils.ts
msgid "1 hour"
msgstr "1 godzina"
@@ -191,7 +193,7 @@ msgstr "Beszel obsługuje OpenID Connect i wielu dostawców uwierzytelniania OAu
#: src/components/routes/settings/notifications.tsx
msgid "Beszel uses <0>Shoutrrr</0> to integrate with popular notification services."
msgstr "Beszel używa <0>Shoutrrr</0> do integracji z popularnych serwisami powiadomień."
msgstr "Beszel używa <0>Shoutrrr</0> do integracji z popularnych serwisów powiadomień."
#: src/components/add-system.tsx
msgid "Binary"
@@ -257,6 +259,10 @@ msgstr "Sprawdź logi, aby uzyskać więcej informacji."
msgid "Check your notification service"
msgstr "Sprawdź swój serwis powiadomień"
#: src/components/systems-table/systems-table.tsx
msgid "Click on a system to view more information."
msgstr "Kliknij na system, aby zobaczyć więcej informacji."
#: src/components/ui/input-copy.tsx
msgid "Click to copy"
msgstr "Kliknij, aby skopiować"
@@ -427,11 +433,14 @@ msgstr "Dokumentacja"
#: src/components/alerts-history-columns.tsx
#: src/components/routes/system.tsx
#: src/components/systems-table/systems-table-columns.tsx
#: src/components/systems-table/systems-table.tsx
#: src/lib/alerts.ts
msgid "Down"
msgstr "Nie działa"
#: src/components/systems-table/systems-table.tsx
msgid "Down ({downSystemsLength})"
msgstr "Nie działa ({downSystemsLength})"
#: src/components/alerts-history-columns.tsx
msgid "Duration"
msgstr "Czas trwania"
@@ -756,10 +765,13 @@ msgid "Pause"
msgstr "Pauza"
#: src/components/systems-table/systems-table-columns.tsx
#: src/components/systems-table/systems-table.tsx
msgid "Paused"
msgstr "Wstrzymane"
#: src/components/systems-table/systems-table.tsx
msgid "Paused ({pausedSystemsLength})"
msgstr "Wstrzymane ({pausedSystemsLength})"
#: src/components/routes/settings/notifications.tsx
msgid "Please <0>configure an SMTP server</0> to ensure alerts are delivered."
msgstr "Proszę <0>skonfigurować serwer SMTP</0>, aby zapewnić dostarczanie powiadomień."
@@ -1063,6 +1075,7 @@ msgstr "Wyzwalane, gdy wykorzystanie któregokolwiek dysku przekroczy ustalony p
msgid "Unit preferences"
msgstr "Ustawienia jednostek"
#: src/components/command-palette.tsx
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Universal token"
msgstr "Uniwersalny token"
@@ -1075,13 +1088,12 @@ msgstr "Nieznana"
#. Context: System is up
#: src/components/routes/system.tsx
#: src/components/systems-table/systems-table-columns.tsx
#: src/components/systems-table/systems-table.tsx
msgid "Up"
msgstr "Działa"
#: src/components/systems-table/systems-table.tsx
msgid "Updated in real time. Click on a system to view information."
msgstr "Aktualizowane w czasie rzeczywistym. Kliknij system, aby zobaczyć informacje."
msgid "Up ({upSystemsLength})"
msgstr "Działa ({upSystemsLength})"
#: src/components/routes/system.tsx
msgid "Uptime"

View File

@@ -8,7 +8,7 @@ msgstr ""
"Language: pt\n"
"Project-Id-Version: beszel\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2025-08-25 01:16\n"
"PO-Revision-Date: 2025-08-28 23:21\n"
"Last-Translator: \n"
"Language-Team: Portuguese\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -23,19 +23,21 @@ msgstr ""
msgid "{0, plural, one {# day} other {# days}}"
msgstr "{0, plural, one {# dia} other {# dias}}"
#. placeholder {0}: Math.trunc(system.info.u / 3600)
#: src/components/routes/system.tsx
msgid "{0, plural, one {# hour} other {# hours}}"
msgstr "{0, plural, one {# hora} other {# horas}}"
#. placeholder {0}: Math.trunc(system.info.u / 60)
#: src/components/routes/system.tsx
msgid "{0, plural, one {# minute} few {# minutes} many {# minutes} other {# minutes}}"
msgstr "{0, plural, one {# minuto} other {# minutos}}"
#. placeholder {0}: table.getFilteredSelectedRowModel().rows.length
#. placeholder {1}: table.getFilteredRowModel().rows.length
#: src/components/routes/settings/alerts-history-data-table.tsx
msgid "{0} of {1} row(s) selected."
msgstr ""
#: src/components/routes/system.tsx
msgid "{hours, plural, one {# hour} other {# hours}}"
msgstr "{hours, plural, one {# hora} other {# horas}}"
#: src/components/routes/system.tsx
msgid "{mins, plural, one {# minute} other {# minutes}}"
msgstr ""
msgstr "{0} de {1} linha(s) selecionada(s)."
#: src/lib/utils.ts
msgid "1 hour"
@@ -200,12 +202,12 @@ msgstr "Binário"
#: src/components/routes/settings/general.tsx
#: src/components/routes/settings/general.tsx
msgid "Bits (Kbps, Mbps, Gbps)"
msgstr ""
msgstr "Bits (Kbps, Mbps, Gbps)"
#: src/components/routes/settings/general.tsx
#: src/components/routes/settings/general.tsx
msgid "Bytes (KB/s, MB/s, GB/s)"
msgstr ""
msgstr "Bytes (KB/s, MB/s, GB/s)"
#: src/components/charts/mem-chart.tsx
msgid "Cache / Buffers"
@@ -222,11 +224,11 @@ msgstr "Cuidado - possível perda de dados"
#: src/components/routes/settings/general.tsx
msgid "Celsius (°C)"
msgstr ""
msgstr "Celsius (°C)"
#: src/components/routes/settings/general.tsx
msgid "Change display units for metrics."
msgstr ""
msgstr "Alterar unidades de exibição para métricas."
#: src/components/routes/settings/general.tsx
msgid "Change general application options."
@@ -257,6 +259,10 @@ msgstr "Verifique os logs para mais detalhes."
msgid "Check your notification service"
msgstr "Verifique seu serviço de notificação"
#: src/components/systems-table/systems-table.tsx
msgid "Click on a system to view more information."
msgstr "Clique em um sistema para ver mais informações."
#: src/components/ui/input-copy.tsx
msgid "Click to copy"
msgstr "Clique para copiar"
@@ -277,7 +283,7 @@ msgstr "Confirmar senha"
#: src/components/routes/home.tsx
msgid "Connection is down"
msgstr ""
msgstr "A conexão está inativa"
#: src/components/routes/settings/alerts-history-data-table.tsx
#: src/components/systems-table/systems-table-columns.tsx
@@ -395,7 +401,7 @@ msgstr "E/S de Disco"
#: src/components/routes/settings/general.tsx
msgid "Disk unit"
msgstr ""
msgstr "Unidade de disco"
#: src/components/charts/disk-chart.tsx
#: src/components/routes/system.tsx
@@ -427,11 +433,14 @@ msgstr "Documentação"
#: src/components/alerts-history-columns.tsx
#: src/components/routes/system.tsx
#: src/components/systems-table/systems-table-columns.tsx
#: src/components/systems-table/systems-table.tsx
#: src/lib/alerts.ts
msgid "Down"
msgstr "“Desligado”"
#: src/components/systems-table/systems-table.tsx
msgid "Down ({downSystemsLength})"
msgstr "Inativo ({downSystemsLength})"
#: src/components/alerts-history-columns.tsx
msgid "Duration"
msgstr "Duração"
@@ -496,7 +505,7 @@ msgstr "Exporte a configuração atual dos seus sistemas."
#: src/components/routes/settings/general.tsx
msgid "Fahrenheit (°F)"
msgstr ""
msgstr "Fahrenheit (°F)"
#: src/lib/api.ts
msgid "Failed to authenticate"
@@ -523,7 +532,7 @@ msgstr "Filtrar..."
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Fingerprint"
msgstr ""
msgstr "Impressão digital"
#: src/components/alerts/alerts-sheet.tsx
msgid "For <0>{min}</0> {min, plural, one {minute} other {minutes}}"
@@ -590,24 +599,24 @@ msgstr "Aspeto"
#: src/components/routes/system.tsx
msgid "Load Average"
msgstr ""
msgstr "Carga Média"
#: src/lib/alerts.ts
msgid "Load Average 15m"
msgstr ""
msgstr "Carga média 15m"
#: src/lib/alerts.ts
msgid "Load Average 1m"
msgstr ""
msgstr "Carga média 1m"
#: src/lib/alerts.ts
msgid "Load Average 5m"
msgstr ""
msgstr "Carga média 5m"
#. Short label for load average
#: src/components/systems-table/systems-table-columns.tsx
msgid "Load Avg"
msgstr ""
msgstr "Carga Média"
#: src/components/navbar.tsx
msgid "Log Out"
@@ -677,7 +686,7 @@ msgstr "Tráfego de rede das interfaces públicas"
#. Context: Bytes or bits
#: src/components/routes/settings/general.tsx
msgid "Network unit"
msgstr ""
msgstr "Unidade de rede"
#: src/components/command-palette.tsx
msgid "No results found."
@@ -728,7 +737,7 @@ msgstr "Página"
#. placeholder {1}: table.getPageCount()
#: src/components/routes/settings/alerts-history-data-table.tsx
msgid "Page {0} of {1}"
msgstr ""
msgstr "Página {0} de {1}"
#: src/components/command-palette.tsx
msgid "Pages / Settings"
@@ -756,10 +765,13 @@ msgid "Pause"
msgstr "Pausar"
#: src/components/systems-table/systems-table-columns.tsx
#: src/components/systems-table/systems-table.tsx
msgid "Paused"
msgstr "Pausado"
#: src/components/systems-table/systems-table.tsx
msgid "Paused ({pausedSystemsLength})"
msgstr "Pausado ({pausedSystemsLength})"
#: src/components/routes/settings/notifications.tsx
msgid "Please <0>configure an SMTP server</0> to ensure alerts are delivered."
msgstr "Por favor, <0>configure um servidor SMTP</0> para garantir que os alertas sejam entregues."
@@ -829,7 +841,7 @@ msgstr "Redefinir Senha"
#: src/components/alerts-history-columns.tsx
#: src/components/routes/settings/alerts-history-data-table.tsx
msgid "Resolved"
msgstr ""
msgstr "Resolvido"
#: src/components/systems-table/systems-table-columns.tsx
msgid "Resume"
@@ -906,7 +918,7 @@ msgstr "Ordenar Por"
#. Context: alert state (active or resolved)
#: src/components/alerts-history-columns.tsx
msgid "State"
msgstr ""
msgstr "Estado"
#: src/components/systems-table/systems-table.tsx
#: src/lib/alerts.ts
@@ -930,7 +942,7 @@ msgstr "Sistema"
#: src/components/routes/system.tsx
msgid "System load averages over time"
msgstr ""
msgstr "Médias de carga do sistema ao longo do tempo"
#: src/components/navbar.tsx
msgid "Systems"
@@ -956,7 +968,7 @@ msgstr "Temperatura"
#: src/components/routes/settings/general.tsx
msgid "Temperature unit"
msgstr ""
msgstr "Unidade de temperatura"
#: src/components/routes/system.tsx
msgid "Temperatures of system sensors"
@@ -980,7 +992,7 @@ msgstr "Esta ação não pode ser desfeita. Isso excluirá permanentemente todos
#: src/components/routes/settings/alerts-history-data-table.tsx
msgid "This will permanently delete all selected records from the database."
msgstr ""
msgstr "Isso excluirá permanentemente todos os registros selecionados do banco de dados."
#: src/components/routes/system.tsx
msgid "Throughput of {extraFsName}"
@@ -1006,7 +1018,7 @@ msgstr "Alternar tema"
#: src/components/add-system.tsx
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Token"
msgstr ""
msgstr "Token"
#: src/components/command-palette.tsx
#: src/components/routes/settings/layout.tsx
@@ -1024,15 +1036,15 @@ msgstr "Tokens e impressões digitais são usados para autenticar conexões WebS
#: src/lib/alerts.ts
msgid "Triggers when 1 minute load average exceeds a threshold"
msgstr ""
msgstr "Dispara quando a média de carga de 1 minuto excede um limite"
#: src/lib/alerts.ts
msgid "Triggers when 15 minute load average exceeds a threshold"
msgstr ""
msgstr "Dispara quando a média de carga de 15 minutos excede um limite"
#: src/lib/alerts.ts
msgid "Triggers when 5 minute load average exceeds a threshold"
msgstr ""
msgstr "Dispara quando a média de carga de 5 minutos excede um limite"
#: src/lib/alerts.ts
msgid "Triggers when any sensor exceeds a threshold"
@@ -1061,8 +1073,9 @@ msgstr "Dispara quando o uso de qualquer disco excede um limite"
#. Temperature / network units
#: src/components/routes/settings/general.tsx
msgid "Unit preferences"
msgstr ""
msgstr "Preferências de unidade"
#: src/components/command-palette.tsx
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Universal token"
msgstr "Token universal"
@@ -1075,13 +1088,12 @@ msgstr "Desconhecida"
#. Context: System is up
#: src/components/routes/system.tsx
#: src/components/systems-table/systems-table-columns.tsx
#: src/components/systems-table/systems-table.tsx
msgid "Up"
msgstr "“Ligado”"
#: src/components/systems-table/systems-table.tsx
msgid "Updated in real time. Click on a system to view information."
msgstr "Atualizado em tempo real. Clique em um sistema para ver informações."
msgid "Up ({upSystemsLength})"
msgstr "Ativo ({upSystemsLength})"
#: src/components/routes/system.tsx
msgid "Uptime"

View File

@@ -8,7 +8,7 @@ msgstr ""
"Language: ru\n"
"Project-Id-Version: beszel\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2025-08-25 02:49\n"
"PO-Revision-Date: 2025-08-28 23:21\n"
"Last-Translator: \n"
"Language-Team: Russian\n"
"Plural-Forms: nplurals=4; plural=((n%10==1 && n%100!=11) ? 0 : ((n%10 >= 2 && n%10 <=4 && (n%100 < 12 || n%100 > 14)) ? 1 : ((n%10 == 0 || (n%10 >= 5 && n%10 <=9)) || (n%100 >= 11 && n%100 <= 14)) ? 2 : 3));\n"
@@ -23,20 +23,22 @@ msgstr ""
msgid "{0, plural, one {# day} other {# days}}"
msgstr "{0, plural, one {# день} other {# дней}}"
#. placeholder {0}: Math.trunc(system.info.u / 3600)
#: src/components/routes/system.tsx
msgid "{0, plural, one {# hour} other {# hours}}"
msgstr "{0, plural, one {# час} other {# часов}}"
#. placeholder {0}: Math.trunc(system.info.u / 60)
#: src/components/routes/system.tsx
msgid "{0, plural, one {# minute} few {# minutes} many {# minutes} other {# minutes}}"
msgstr ""
#. placeholder {0}: table.getFilteredSelectedRowModel().rows.length
#. placeholder {1}: table.getFilteredRowModel().rows.length
#: src/components/routes/settings/alerts-history-data-table.tsx
msgid "{0} of {1} row(s) selected."
msgstr "Выбрано {0} из {1} строк."
#: src/components/routes/system.tsx
msgid "{hours, plural, one {# hour} other {# hours}}"
msgstr "{hours, plural, one {# час} other {# часов}}"
#: src/components/routes/system.tsx
msgid "{mins, plural, one {# minute} other {# minutes}}"
msgstr ""
#: src/lib/utils.ts
msgid "1 hour"
msgstr "1 час"
@@ -257,6 +259,10 @@ msgstr "Проверьте журналы для получения более
msgid "Check your notification service"
msgstr "Проверьте ваш сервис уведомлений"
#: src/components/systems-table/systems-table.tsx
msgid "Click on a system to view more information."
msgstr ""
#: src/components/ui/input-copy.tsx
msgid "Click to copy"
msgstr "Нажмите, чтобы скопировать"
@@ -427,11 +433,14 @@ msgstr "Документация"
#: src/components/alerts-history-columns.tsx
#: src/components/routes/system.tsx
#: src/components/systems-table/systems-table-columns.tsx
#: src/components/systems-table/systems-table.tsx
#: src/lib/alerts.ts
msgid "Down"
msgstr "Не в сети"
#: src/components/systems-table/systems-table.tsx
msgid "Down ({downSystemsLength})"
msgstr ""
#: src/components/alerts-history-columns.tsx
msgid "Duration"
msgstr "Длительность"
@@ -756,10 +765,13 @@ msgid "Pause"
msgstr "Пауза"
#: src/components/systems-table/systems-table-columns.tsx
#: src/components/systems-table/systems-table.tsx
msgid "Paused"
msgstr "Пауза"
#: src/components/systems-table/systems-table.tsx
msgid "Paused ({pausedSystemsLength})"
msgstr ""
#: src/components/routes/settings/notifications.tsx
msgid "Please <0>configure an SMTP server</0> to ensure alerts are delivered."
msgstr "Пожалуйста, <0>настройте SMTP-сервер</0>, чтобы гарантировать доставку оповещений."
@@ -1063,6 +1075,7 @@ msgstr "Срабатывает, когда использование любог
msgid "Unit preferences"
msgstr "Параметры единиц измерения"
#: src/components/command-palette.tsx
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Universal token"
msgstr "Универсальный токен"
@@ -1075,13 +1088,12 @@ msgstr "Неизвестная"
#. Context: System is up
#: src/components/routes/system.tsx
#: src/components/systems-table/systems-table-columns.tsx
#: src/components/systems-table/systems-table.tsx
msgid "Up"
msgstr "В сети"
#: src/components/systems-table/systems-table.tsx
msgid "Updated in real time. Click on a system to view information."
msgstr "Обновляется в реальном времени. Нажмите на систему, чтобы просмотреть информацию."
msgid "Up ({upSystemsLength})"
msgstr ""
#: src/components/routes/system.tsx
msgid "Uptime"

View File

@@ -8,7 +8,7 @@ msgstr ""
"Language: sl\n"
"Project-Id-Version: beszel\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2025-07-25 22:44\n"
"PO-Revision-Date: 2025-08-28 23:21\n"
"Last-Translator: \n"
"Language-Team: Slovenian\n"
"Plural-Forms: nplurals=4; plural=n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3;\n"
@@ -23,20 +23,22 @@ msgstr ""
msgid "{0, plural, one {# day} other {# days}}"
msgstr "{0, plural, one {# dan} two {# dneva} few {# dni} other {# dni}}"
#. placeholder {0}: Math.trunc(system.info.u / 3600)
#: src/components/routes/system.tsx
msgid "{0, plural, one {# hour} other {# hours}}"
msgstr "{0, plural, one {# ura} two {# uri} few {# ur} other {# ur}}"
#. placeholder {0}: Math.trunc(system.info.u / 60)
#: src/components/routes/system.tsx
msgid "{0, plural, one {# minute} few {# minutes} many {# minutes} other {# minutes}}"
msgstr ""
#. placeholder {0}: table.getFilteredSelectedRowModel().rows.length
#. placeholder {1}: table.getFilteredRowModel().rows.length
#: src/components/routes/settings/alerts-history-data-table.tsx
msgid "{0} of {1} row(s) selected."
msgstr ""
#: src/components/routes/system.tsx
msgid "{hours, plural, one {# hour} other {# hours}}"
msgstr "{hours, plural, one {# ura} two {# uri} few {# ur} other {# ur}}"
#: src/components/routes/system.tsx
msgid "{mins, plural, one {# minute} other {# minutes}}"
msgstr ""
#: src/lib/utils.ts
msgid "1 hour"
msgstr "1 ura"
@@ -257,6 +259,10 @@ msgstr "Za več podrobnosti preverite dnevnike."
msgid "Check your notification service"
msgstr "Preverite storitev obveščanja"
#: src/components/systems-table/systems-table.tsx
msgid "Click on a system to view more information."
msgstr ""
#: src/components/ui/input-copy.tsx
msgid "Click to copy"
msgstr "Klikni za kopiranje"
@@ -427,11 +433,14 @@ msgstr "Dokumentacija"
#: src/components/alerts-history-columns.tsx
#: src/components/routes/system.tsx
#: src/components/systems-table/systems-table-columns.tsx
#: src/components/systems-table/systems-table.tsx
#: src/lib/alerts.ts
msgid "Down"
msgstr ""
#: src/components/systems-table/systems-table.tsx
msgid "Down ({downSystemsLength})"
msgstr ""
#: src/components/alerts-history-columns.tsx
msgid "Duration"
msgstr ""
@@ -756,10 +765,13 @@ msgid "Pause"
msgstr "Premor"
#: src/components/systems-table/systems-table-columns.tsx
#: src/components/systems-table/systems-table.tsx
msgid "Paused"
msgstr "Zaustavljeno"
#: src/components/systems-table/systems-table.tsx
msgid "Paused ({pausedSystemsLength})"
msgstr ""
#: src/components/routes/settings/notifications.tsx
msgid "Please <0>configure an SMTP server</0> to ensure alerts are delivered."
msgstr "<0>Nastavite strežnik SMTP</0>, da zagotovite dostavo opozoril."
@@ -1063,6 +1075,7 @@ msgstr "Sproži se, ko uporaba katerega koli diska preseže prag"
msgid "Unit preferences"
msgstr ""
#: src/components/command-palette.tsx
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Universal token"
msgstr ""
@@ -1075,13 +1088,12 @@ msgstr "Neznana"
#. Context: System is up
#: src/components/routes/system.tsx
#: src/components/systems-table/systems-table-columns.tsx
#: src/components/systems-table/systems-table.tsx
msgid "Up"
msgstr ""
#: src/components/systems-table/systems-table.tsx
msgid "Updated in real time. Click on a system to view information."
msgstr "Posodobljeno v realnem času. Za ogled informacij kliknite na sistem."
msgid "Up ({upSystemsLength})"
msgstr ""
#: src/components/routes/system.tsx
msgid "Uptime"

View File

@@ -8,7 +8,7 @@ msgstr ""
"Language: sv\n"
"Project-Id-Version: beszel\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2025-08-01 23:21\n"
"PO-Revision-Date: 2025-08-28 23:21\n"
"Last-Translator: \n"
"Language-Team: Swedish\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -23,20 +23,22 @@ msgstr ""
msgid "{0, plural, one {# day} other {# days}}"
msgstr "{0, plural, one {# dag} other {# dagar}}"
#. placeholder {0}: Math.trunc(system.info.u / 3600)
#: src/components/routes/system.tsx
msgid "{0, plural, one {# hour} other {# hours}}"
msgstr "{0, plural, one {# timme} other {# timmar}}"
#. placeholder {0}: Math.trunc(system.info.u / 60)
#: src/components/routes/system.tsx
msgid "{0, plural, one {# minute} few {# minutes} many {# minutes} other {# minutes}}"
msgstr ""
#. placeholder {0}: table.getFilteredSelectedRowModel().rows.length
#. placeholder {1}: table.getFilteredRowModel().rows.length
#: src/components/routes/settings/alerts-history-data-table.tsx
msgid "{0} of {1} row(s) selected."
msgstr "{0} av {1} rad(er) valda."
#: src/components/routes/system.tsx
msgid "{hours, plural, one {# hour} other {# hours}}"
msgstr "{hours, plural, one {# timme} other {# timmar}}"
#: src/components/routes/system.tsx
msgid "{mins, plural, one {# minute} other {# minutes}}"
msgstr ""
#: src/lib/utils.ts
msgid "1 hour"
msgstr "1 timme"
@@ -257,6 +259,10 @@ msgstr "Kontrollera loggarna för mer information."
msgid "Check your notification service"
msgstr "Kontrollera din aviseringstjänst"
#: src/components/systems-table/systems-table.tsx
msgid "Click on a system to view more information."
msgstr ""
#: src/components/ui/input-copy.tsx
msgid "Click to copy"
msgstr "Klicka för att kopiera"
@@ -427,11 +433,14 @@ msgstr "Dokumentation"
#: src/components/alerts-history-columns.tsx
#: src/components/routes/system.tsx
#: src/components/systems-table/systems-table-columns.tsx
#: src/components/systems-table/systems-table.tsx
#: src/lib/alerts.ts
msgid "Down"
msgstr ""
#: src/components/systems-table/systems-table.tsx
msgid "Down ({downSystemsLength})"
msgstr ""
#: src/components/alerts-history-columns.tsx
msgid "Duration"
msgstr ""
@@ -756,10 +765,13 @@ msgid "Pause"
msgstr "Paus"
#: src/components/systems-table/systems-table-columns.tsx
#: src/components/systems-table/systems-table.tsx
msgid "Paused"
msgstr "Pausad"
#: src/components/systems-table/systems-table.tsx
msgid "Paused ({pausedSystemsLength})"
msgstr ""
#: src/components/routes/settings/notifications.tsx
msgid "Please <0>configure an SMTP server</0> to ensure alerts are delivered."
msgstr "Vänligen <0>konfigurera en SMTP-server</0> för att säkerställa att larm levereras."
@@ -1063,6 +1075,7 @@ msgstr "Utlöses när användningen av någon disk överskrider ett tröskelvär
msgid "Unit preferences"
msgstr ""
#: src/components/command-palette.tsx
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Universal token"
msgstr ""
@@ -1075,13 +1088,12 @@ msgstr "Okänd"
#. Context: System is up
#: src/components/routes/system.tsx
#: src/components/systems-table/systems-table-columns.tsx
#: src/components/systems-table/systems-table.tsx
msgid "Up"
msgstr ""
#: src/components/systems-table/systems-table.tsx
msgid "Updated in real time. Click on a system to view information."
msgstr "Uppdateras i realtid. Klicka på ett system för att visa information."
msgid "Up ({upSystemsLength})"
msgstr ""
#: src/components/routes/system.tsx
msgid "Uptime"

View File

@@ -8,7 +8,7 @@ msgstr ""
"Language: tr\n"
"Project-Id-Version: beszel\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2025-07-25 22:44\n"
"PO-Revision-Date: 2025-08-28 23:21\n"
"Last-Translator: \n"
"Language-Team: Turkish\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -23,20 +23,22 @@ msgstr ""
msgid "{0, plural, one {# day} other {# days}}"
msgstr "{0, plural, one {# gün} other {# gün}}"
#. placeholder {0}: Math.trunc(system.info.u / 3600)
#: src/components/routes/system.tsx
msgid "{0, plural, one {# hour} other {# hours}}"
msgstr "{0, plural, one {# saat} other {# saat}}"
#. placeholder {0}: Math.trunc(system.info.u / 60)
#: src/components/routes/system.tsx
msgid "{0, plural, one {# minute} few {# minutes} many {# minutes} other {# minutes}}"
msgstr "{0, plural, one {# dakika} few {# dakika} many {# dakika} other {# dakika}}"
#. placeholder {0}: table.getFilteredSelectedRowModel().rows.length
#. placeholder {1}: table.getFilteredRowModel().rows.length
#: src/components/routes/settings/alerts-history-data-table.tsx
msgid "{0} of {1} row(s) selected."
msgstr "{1} satırdan {0} tanesi seçildi."
#: src/components/routes/system.tsx
msgid "{hours, plural, one {# hour} other {# hours}}"
msgstr "{hours, plural, one {# saat} other {# saat}}"
#: src/components/routes/system.tsx
msgid "{mins, plural, one {# minute} other {# minutes}}"
msgstr ""
#: src/lib/utils.ts
msgid "1 hour"
msgstr "1 saat"
@@ -183,7 +185,7 @@ msgstr "Bant Genişliği"
#: src/components/routes/system.tsx
msgid "Battery"
msgstr ""
msgstr "Pil"
#: src/components/login/auth-form.tsx
msgid "Beszel supports OpenID Connect and many OAuth2 authentication providers."
@@ -234,12 +236,12 @@ msgstr "Genel uygulama seçeneklerini değiştirin."
#: src/components/routes/system.tsx
msgid "Charge"
msgstr ""
msgstr "Şarj"
#. Context: Battery state
#: src/lib/i18n.ts
msgid "Charging"
msgstr ""
msgstr "Şarj oluyor"
#: src/components/routes/settings/general.tsx
msgid "Chart options"
@@ -257,6 +259,10 @@ msgstr "Daha fazla ayrıntı için günlükleri kontrol edin."
msgid "Check your notification service"
msgstr "Bildirim hizmetinizi kontrol edin"
#: src/components/systems-table/systems-table.tsx
msgid "Click on a system to view more information."
msgstr "Daha fazla bilgi görmek için bir sisteme tıklayın."
#: src/components/ui/input-copy.tsx
msgid "Click to copy"
msgstr "Kopyalamak için tıklayın"
@@ -360,7 +366,7 @@ msgstr "Kritik (%)"
#. Context: Battery state
#: src/components/routes/system.tsx
msgid "Current state"
msgstr ""
msgstr "Mevcut durum"
#: src/components/command-palette.tsx
#: src/components/routes/home.tsx
@@ -383,7 +389,7 @@ msgstr "Parmak izini sil"
#. Context: Battery state
#: src/lib/i18n.ts
msgid "Discharging"
msgstr ""
msgstr "Boşalıyor"
#: src/components/systems-table/systems-table-columns.tsx
msgid "Disk"
@@ -427,11 +433,14 @@ msgstr "Dokümantasyon"
#: src/components/alerts-history-columns.tsx
#: src/components/routes/system.tsx
#: src/components/systems-table/systems-table-columns.tsx
#: src/components/systems-table/systems-table.tsx
#: src/lib/alerts.ts
msgid "Down"
msgstr "Kapalı"
#: src/components/systems-table/systems-table.tsx
msgid "Down ({downSystemsLength})"
msgstr "Kapalı ({downSystemsLength})"
#: src/components/alerts-history-columns.tsx
msgid "Duration"
msgstr "Süre"
@@ -453,7 +462,7 @@ msgstr "E-posta bildirimleri"
#. Context: Battery state
#: src/lib/i18n.ts
msgid "Empty"
msgstr ""
msgstr "Boş"
#: src/components/login/login.tsx
msgid "Enter email address to reset password"
@@ -536,7 +545,7 @@ msgstr "Şifrenizi mi unuttunuz?"
#. Context: Battery state
#: src/lib/i18n.ts
msgid "Full"
msgstr ""
msgstr "Dolu"
#. Context: General settings
#: src/components/routes/settings/general.tsx
@@ -565,7 +574,7 @@ msgstr "Host / IP"
#. Context: Battery state
#: src/lib/i18n.ts
msgid "Idle"
msgstr ""
msgstr "Boşta"
#: src/components/login/forgot-pass-form.tsx
msgid "If you've lost the password to your admin account, you may reset it using the following command."
@@ -756,10 +765,13 @@ msgid "Pause"
msgstr "Duraklat"
#: src/components/systems-table/systems-table-columns.tsx
#: src/components/systems-table/systems-table.tsx
msgid "Paused"
msgstr "Duraklatıldı"
#: src/components/systems-table/systems-table.tsx
msgid "Paused ({pausedSystemsLength})"
msgstr "Duraklatıldı ({pausedSystemsLength})"
#: src/components/routes/settings/notifications.tsx
msgid "Please <0>configure an SMTP server</0> to ensure alerts are delivered."
msgstr "Uyarıların teslim edilmesini sağlamak için lütfen bir SMTP sunucusu <0>yapılandırın</0>."
@@ -1006,7 +1018,7 @@ msgstr "Temayı değiştir"
#: src/components/add-system.tsx
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Token"
msgstr ""
msgstr "Token"
#: src/components/command-palette.tsx
#: src/components/routes/settings/layout.tsx
@@ -1063,6 +1075,7 @@ msgstr "Herhangi bir diskin kullanımı bir eşiği aştığında tetiklenir"
msgid "Unit preferences"
msgstr "Birim tercihleri"
#: src/components/command-palette.tsx
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Universal token"
msgstr "Evrensel token"
@@ -1070,18 +1083,17 @@ msgstr "Evrensel token"
#. Context: Battery state
#: src/lib/i18n.ts
msgid "Unknown"
msgstr ""
msgstr "Bilinmiyor"
#. Context: System is up
#: src/components/routes/system.tsx
#: src/components/systems-table/systems-table-columns.tsx
#: src/components/systems-table/systems-table.tsx
msgid "Up"
msgstr "Açık"
#: src/components/systems-table/systems-table.tsx
msgid "Updated in real time. Click on a system to view information."
msgstr "Gerçek zamanlı olarak güncellenir. Bilgileri görüntülemek için bir sisteme tıklayın."
msgid "Up ({upSystemsLength})"
msgstr "ık ({upSystemsLength})"
#: src/components/routes/system.tsx
msgid "Uptime"

View File

@@ -8,7 +8,7 @@ msgstr ""
"Language: uk\n"
"Project-Id-Version: beszel\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2025-07-25 22:44\n"
"PO-Revision-Date: 2025-08-30 16:20\n"
"Last-Translator: \n"
"Language-Team: Ukrainian\n"
"Plural-Forms: nplurals=4; plural=((n%10==1 && n%100!=11) ? 0 : ((n%10 >= 2 && n%10 <=4 && (n%100 < 12 || n%100 > 14)) ? 1 : ((n%10 == 0 || (n%10 >= 5 && n%10 <=9)) || (n%100 >= 11 && n%100 <= 14)) ? 2 : 3));\n"
@@ -23,20 +23,22 @@ msgstr ""
msgid "{0, plural, one {# day} other {# days}}"
msgstr "{0, plural, one {# день} few {# дні} many {# днів} other {# дня}}"
#. placeholder {0}: Math.trunc(system.info.u / 3600)
#: src/components/routes/system.tsx
msgid "{0, plural, one {# hour} other {# hours}}"
msgstr "{0, plural, one {# година} few {# години} many {# годин} other {# години}}"
#. placeholder {0}: Math.trunc(system.info.u / 60)
#: src/components/routes/system.tsx
msgid "{0, plural, one {# minute} few {# minutes} many {# minutes} other {# minutes}}"
msgstr "{0, plural, one {# хвилина} few {# хвилини} many {# хвилин} other {# хвилини}}"
#. placeholder {0}: table.getFilteredSelectedRowModel().rows.length
#. placeholder {1}: table.getFilteredRowModel().rows.length
#: src/components/routes/settings/alerts-history-data-table.tsx
msgid "{0} of {1} row(s) selected."
msgstr "Вибрано {0} з {1} рядків."
#: src/components/routes/system.tsx
msgid "{hours, plural, one {# hour} other {# hours}}"
msgstr "{hours, plural, one {# година} few {# години} many {# годин} other {# години}}"
#: src/components/routes/system.tsx
msgid "{mins, plural, one {# minute} other {# minutes}}"
msgstr ""
#: src/lib/utils.ts
msgid "1 hour"
msgstr "1 година"
@@ -257,6 +259,10 @@ msgstr "Перевірте журнали для отримання додатк
msgid "Check your notification service"
msgstr "Перевірте свій сервіс сповіщень"
#: src/components/systems-table/systems-table.tsx
msgid "Click on a system to view more information."
msgstr "Натисніть на систему, щоб переглянути більше інформації."
#: src/components/ui/input-copy.tsx
msgid "Click to copy"
msgstr "Натисніть, щоб скопіювати"
@@ -427,11 +433,14 @@ msgstr "Документація"
#: src/components/alerts-history-columns.tsx
#: src/components/routes/system.tsx
#: src/components/systems-table/systems-table-columns.tsx
#: src/components/systems-table/systems-table.tsx
#: src/lib/alerts.ts
msgid "Down"
msgstr "Не працює"
#: src/components/systems-table/systems-table.tsx
msgid "Down ({downSystemsLength})"
msgstr "Не працює ({downSystemsLength})"
#: src/components/alerts-history-columns.tsx
msgid "Duration"
msgstr "Тривалість"
@@ -756,10 +765,13 @@ msgid "Pause"
msgstr "Призупинити"
#: src/components/systems-table/systems-table-columns.tsx
#: src/components/systems-table/systems-table.tsx
msgid "Paused"
msgstr "Призупинено"
#: src/components/systems-table/systems-table.tsx
msgid "Paused ({pausedSystemsLength})"
msgstr "Призупинено ({pausedSystemsLength})"
#: src/components/routes/settings/notifications.tsx
msgid "Please <0>configure an SMTP server</0> to ensure alerts are delivered."
msgstr "Будь ласка, <0>налаштуйте SMTP сервер</0>, щоб забезпечити доставку сповіщень."
@@ -1063,6 +1075,7 @@ msgstr "Спрацьовує, коли використання будь-яко
msgid "Unit preferences"
msgstr "Налаштування одиниць вимірювання"
#: src/components/command-palette.tsx
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Universal token"
msgstr "Універсальний токен"
@@ -1075,13 +1088,12 @@ msgstr "Невідома"
#. Context: System is up
#: src/components/routes/system.tsx
#: src/components/systems-table/systems-table-columns.tsx
#: src/components/systems-table/systems-table.tsx
msgid "Up"
msgstr "Працює"
#: src/components/systems-table/systems-table.tsx
msgid "Updated in real time. Click on a system to view information."
msgstr "Оновлюється в реальному часі. Натисніть на систему, щоб переглянути інформацію."
msgid "Up ({upSystemsLength})"
msgstr "Працює ({upSystemsLength})"
#: src/components/routes/system.tsx
msgid "Uptime"

View File

@@ -8,7 +8,7 @@ msgstr ""
"Language: vi\n"
"Project-Id-Version: beszel\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2025-08-14 10:35\n"
"PO-Revision-Date: 2025-08-28 23:21\n"
"Last-Translator: \n"
"Language-Team: Vietnamese\n"
"Plural-Forms: nplurals=1; plural=0;\n"
@@ -23,20 +23,22 @@ msgstr ""
msgid "{0, plural, one {# day} other {# days}}"
msgstr "{0, plural, one {# ngày} other {# ngày}}"
#. placeholder {0}: Math.trunc(system.info.u / 3600)
#: src/components/routes/system.tsx
msgid "{0, plural, one {# hour} other {# hours}}"
msgstr "{0, plural, one {# giờ} other {# giờ}}"
#. placeholder {0}: Math.trunc(system.info.u / 60)
#: src/components/routes/system.tsx
msgid "{0, plural, one {# minute} few {# minutes} many {# minutes} other {# minutes}}"
msgstr "{0, plural, one {# phút} few {# phút} many {# phút} other {# phút}}"
#. placeholder {0}: table.getFilteredSelectedRowModel().rows.length
#. placeholder {1}: table.getFilteredRowModel().rows.length
#: src/components/routes/settings/alerts-history-data-table.tsx
msgid "{0} of {1} row(s) selected."
msgstr "Đã chọn {0} trên {1} hàng."
#: src/components/routes/system.tsx
msgid "{hours, plural, one {# hour} other {# hours}}"
msgstr "{hours, plural, one {# giờ} other {# giờ}}"
#: src/components/routes/system.tsx
msgid "{mins, plural, one {# minute} other {# minutes}}"
msgstr ""
#: src/lib/utils.ts
msgid "1 hour"
msgstr "1 giờ"
@@ -257,6 +259,10 @@ msgstr "Kiểm tra nhật ký để biết thêm chi tiết."
msgid "Check your notification service"
msgstr "Kiểm tra dịch vụ thông báo của bạn"
#: src/components/systems-table/systems-table.tsx
msgid "Click on a system to view more information."
msgstr "Nhấp vào hệ thống để xem thêm thông tin."
#: src/components/ui/input-copy.tsx
msgid "Click to copy"
msgstr "Nhấp để sao chép"
@@ -427,11 +433,14 @@ msgstr "Tài liệu"
#: src/components/alerts-history-columns.tsx
#: src/components/routes/system.tsx
#: src/components/systems-table/systems-table-columns.tsx
#: src/components/systems-table/systems-table.tsx
#: src/lib/alerts.ts
msgid "Down"
msgstr "Mất kết nối"
#: src/components/systems-table/systems-table.tsx
msgid "Down ({downSystemsLength})"
msgstr "Mất kết nối ({downSystemsLength})"
#: src/components/alerts-history-columns.tsx
msgid "Duration"
msgstr "Thời lượng"
@@ -756,10 +765,13 @@ msgid "Pause"
msgstr "Tạm dừng"
#: src/components/systems-table/systems-table-columns.tsx
#: src/components/systems-table/systems-table.tsx
msgid "Paused"
msgstr "Đã tạm dừng"
#: src/components/systems-table/systems-table.tsx
msgid "Paused ({pausedSystemsLength})"
msgstr "Đã tạm dừng ({pausedSystemsLength})"
#: src/components/routes/settings/notifications.tsx
msgid "Please <0>configure an SMTP server</0> to ensure alerts are delivered."
msgstr "Vui lòng <0>cấu hình máy chủ SMTP</0> để đảm bảo cảnh báo được gửi đi."
@@ -1063,6 +1075,7 @@ msgstr "Kích hoạt khi sử dụng bất kỳ đĩa nào vượt quá ngưỡn
msgid "Unit preferences"
msgstr "Tùy chọn đơn vị"
#: src/components/command-palette.tsx
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Universal token"
msgstr "Token chung"
@@ -1075,13 +1088,12 @@ msgstr "Không xác định"
#. Context: System is up
#: src/components/routes/system.tsx
#: src/components/systems-table/systems-table-columns.tsx
#: src/components/systems-table/systems-table.tsx
msgid "Up"
msgstr "Hoạt động"
#: src/components/systems-table/systems-table.tsx
msgid "Updated in real time. Click on a system to view information."
msgstr "Cập nhật theo thời gian thực. Nhấp vào một hệ thống để xem thông tin."
msgid "Up ({upSystemsLength})"
msgstr "Hoạt động ({upSystemsLength})"
#: src/components/routes/system.tsx
msgid "Uptime"

View File

@@ -8,7 +8,7 @@ msgstr ""
"Language: zh\n"
"Project-Id-Version: beszel\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2025-08-25 01:16\n"
"PO-Revision-Date: 2025-09-05 08:15\n"
"Last-Translator: \n"
"Language-Team: Chinese Simplified\n"
"Plural-Forms: nplurals=1; plural=0;\n"
@@ -23,20 +23,22 @@ msgstr ""
msgid "{0, plural, one {# day} other {# days}}"
msgstr "{0, plural, one {# 天} other {# 天}}"
#. placeholder {0}: Math.trunc(system.info.u / 3600)
#: src/components/routes/system.tsx
msgid "{0, plural, one {# hour} other {# hours}}"
msgstr "{0, plural, one {# 小时} other {# 小时}}"
#. placeholder {0}: Math.trunc(system.info.u / 60)
#: src/components/routes/system.tsx
msgid "{0, plural, one {# minute} few {# minutes} many {# minutes} other {# minutes}}"
msgstr "{0, plural, one {# 分钟} few {# 分钟} many {# 分钟} other {# 分钟}}"
#. placeholder {0}: table.getFilteredSelectedRowModel().rows.length
#. placeholder {1}: table.getFilteredRowModel().rows.length
#: src/components/routes/settings/alerts-history-data-table.tsx
msgid "{0} of {1} row(s) selected."
msgstr "已选择 {0} / {1} 行"
#: src/components/routes/system.tsx
msgid "{hours, plural, one {# hour} other {# hours}}"
msgstr "{hours, plural, one {# 小时} other {# 小时}}"
#: src/components/routes/system.tsx
msgid "{mins, plural, one {# minute} other {# minutes}}"
msgstr ""
#: src/lib/utils.ts
msgid "1 hour"
msgstr "1小时"
@@ -257,6 +259,10 @@ msgstr "检查日志以获取更多详细信息。"
msgid "Check your notification service"
msgstr "检查您的通知服务"
#: src/components/systems-table/systems-table.tsx
msgid "Click on a system to view more information."
msgstr "点击系统查看更多信息。"
#: src/components/ui/input-copy.tsx
msgid "Click to copy"
msgstr "点击复制"
@@ -427,11 +433,14 @@ msgstr "文档"
#: src/components/alerts-history-columns.tsx
#: src/components/routes/system.tsx
#: src/components/systems-table/systems-table-columns.tsx
#: src/components/systems-table/systems-table.tsx
#: src/lib/alerts.ts
msgid "Down"
msgstr "离线"
#: src/components/systems-table/systems-table.tsx
msgid "Down ({downSystemsLength})"
msgstr "离线 ({downSystemsLength})"
#: src/components/alerts-history-columns.tsx
msgid "Duration"
msgstr "持续时间"
@@ -756,10 +765,13 @@ msgid "Pause"
msgstr "暂停"
#: src/components/systems-table/systems-table-columns.tsx
#: src/components/systems-table/systems-table.tsx
msgid "Paused"
msgstr "已暂停"
#: src/components/systems-table/systems-table.tsx
msgid "Paused ({pausedSystemsLength})"
msgstr "已暂停 ({pausedSystemsLength})"
#: src/components/routes/settings/notifications.tsx
msgid "Please <0>configure an SMTP server</0> to ensure alerts are delivered."
msgstr "请<0>配置SMTP服务器</0>以确保警报被传递。"
@@ -1063,6 +1075,7 @@ msgstr "当任何磁盘的使用率超过阈值时触发"
msgid "Unit preferences"
msgstr "单位偏好"
#: src/components/command-palette.tsx
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Universal token"
msgstr "通用令牌"
@@ -1075,13 +1088,12 @@ msgstr "未知"
#. Context: System is up
#: src/components/routes/system.tsx
#: src/components/systems-table/systems-table-columns.tsx
#: src/components/systems-table/systems-table.tsx
msgid "Up"
msgstr "在线"
#: src/components/systems-table/systems-table.tsx
msgid "Updated in real time. Click on a system to view information."
msgstr "实时更新。点击系统查看信息。"
msgid "Up ({upSystemsLength})"
msgstr "在线 ({upSystemsLength})"
#: src/components/routes/system.tsx
msgid "Uptime"

View File

@@ -8,7 +8,7 @@ msgstr ""
"Language: zh\n"
"Project-Id-Version: beszel\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2025-08-25 01:16\n"
"PO-Revision-Date: 2025-08-28 23:21\n"
"Last-Translator: \n"
"Language-Team: Chinese Traditional, Hong Kong\n"
"Plural-Forms: nplurals=1; plural=0;\n"
@@ -23,20 +23,22 @@ msgstr ""
msgid "{0, plural, one {# day} other {# days}}"
msgstr "{0, plural, one {# 天} other {# 天}}"
#. placeholder {0}: Math.trunc(system.info.u / 3600)
#: src/components/routes/system.tsx
msgid "{0, plural, one {# hour} other {# hours}}"
msgstr "{0, plural, one {# 小時} other {# 小時}}"
#. placeholder {0}: Math.trunc(system.info.u / 60)
#: src/components/routes/system.tsx
msgid "{0, plural, one {# minute} few {# minutes} many {# minutes} other {# minutes}}"
msgstr "{0, plural, one {# 分鐘} few {# 分鐘} many {# 分鐘} other {# 分鐘}}"
#. placeholder {0}: table.getFilteredSelectedRowModel().rows.length
#. placeholder {1}: table.getFilteredRowModel().rows.length
#: src/components/routes/settings/alerts-history-data-table.tsx
msgid "{0} of {1} row(s) selected."
msgstr "已選擇 {1} 個項目中的 {0} 個"
#: src/components/routes/system.tsx
msgid "{hours, plural, one {# hour} other {# hours}}"
msgstr "{hours, plural, one {# 小時} other {# 小時}}"
#: src/components/routes/system.tsx
msgid "{mins, plural, one {# minute} other {# minutes}}"
msgstr ""
#: src/lib/utils.ts
msgid "1 hour"
msgstr "1小時"
@@ -257,6 +259,10 @@ msgstr "檢查日誌以取得更多資訊。"
msgid "Check your notification service"
msgstr "檢查您的通知服務"
#: src/components/systems-table/systems-table.tsx
msgid "Click on a system to view more information."
msgstr "點擊系統以查看更多資訊。"
#: src/components/ui/input-copy.tsx
msgid "Click to copy"
msgstr "點擊以複製"
@@ -427,11 +433,14 @@ msgstr "文件"
#: src/components/alerts-history-columns.tsx
#: src/components/routes/system.tsx
#: src/components/systems-table/systems-table-columns.tsx
#: src/components/systems-table/systems-table.tsx
#: src/lib/alerts.ts
msgid "Down"
msgstr "中斷"
#: src/components/systems-table/systems-table.tsx
msgid "Down ({downSystemsLength})"
msgstr "中斷 ({downSystemsLength})"
#: src/components/alerts-history-columns.tsx
msgid "Duration"
msgstr "持續時間"
@@ -756,10 +765,13 @@ msgid "Pause"
msgstr "暫停"
#: src/components/systems-table/systems-table-columns.tsx
#: src/components/systems-table/systems-table.tsx
msgid "Paused"
msgstr "已暫停"
#: src/components/systems-table/systems-table.tsx
msgid "Paused ({pausedSystemsLength})"
msgstr "已暫停 ({pausedSystemsLength})"
#: src/components/routes/settings/notifications.tsx
msgid "Please <0>configure an SMTP server</0> to ensure alerts are delivered."
msgstr "請<0>配置SMTP伺服器</0>以確保警報被傳送。"
@@ -1063,6 +1075,7 @@ msgstr "當任何磁碟的使用超過閾值時觸發"
msgid "Unit preferences"
msgstr "單位偏好"
#: src/components/command-palette.tsx
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Universal token"
msgstr "通用令牌"
@@ -1075,13 +1088,12 @@ msgstr "未知"
#. Context: System is up
#: src/components/routes/system.tsx
#: src/components/systems-table/systems-table-columns.tsx
#: src/components/systems-table/systems-table.tsx
msgid "Up"
msgstr "上線"
#: src/components/systems-table/systems-table.tsx
msgid "Updated in real time. Click on a system to view information."
msgstr "實時更新。點擊系統查看信息。"
msgid "Up ({upSystemsLength})"
msgstr "上線 ({upSystemsLength})"
#: src/components/routes/system.tsx
msgid "Uptime"

View File

@@ -8,7 +8,7 @@ msgstr ""
"Language: zh\n"
"Project-Id-Version: beszel\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2025-08-25 01:16\n"
"PO-Revision-Date: 2025-08-28 23:21\n"
"Last-Translator: \n"
"Language-Team: Chinese Traditional\n"
"Plural-Forms: nplurals=1; plural=0;\n"
@@ -23,20 +23,22 @@ msgstr ""
msgid "{0, plural, one {# day} other {# days}}"
msgstr "{0, plural, one {# 天} other {# 天}}"
#. placeholder {0}: Math.trunc(system.info.u / 3600)
#: src/components/routes/system.tsx
msgid "{0, plural, one {# hour} other {# hours}}"
msgstr "{0, plural, one {# 小時} other {# 小時}}"
#. placeholder {0}: Math.trunc(system.info.u / 60)
#: src/components/routes/system.tsx
msgid "{0, plural, one {# minute} few {# minutes} many {# minutes} other {# minutes}}"
msgstr "{0, plural, one {# 分鐘} few {# 分鐘} many {# 分鐘} other {# 分鐘}}"
#. placeholder {0}: table.getFilteredSelectedRowModel().rows.length
#. placeholder {1}: table.getFilteredRowModel().rows.length
#: src/components/routes/settings/alerts-history-data-table.tsx
msgid "{0} of {1} row(s) selected."
msgstr "已選取 {1} 個項目中的 {0} 個"
#: src/components/routes/system.tsx
msgid "{hours, plural, one {# hour} other {# hours}}"
msgstr "{hours, plural, one {# 小時} other {# 小時}}"
#: src/components/routes/system.tsx
msgid "{mins, plural, one {# minute} other {# minutes}}"
msgstr ""
#: src/lib/utils.ts
msgid "1 hour"
msgstr "1小時"
@@ -257,6 +259,10 @@ msgstr "檢查系統記錄以取得更多資訊。"
msgid "Check your notification service"
msgstr "檢查您的通知服務"
#: src/components/systems-table/systems-table.tsx
msgid "Click on a system to view more information."
msgstr "點擊系統以查看更多資訊。"
#: src/components/ui/input-copy.tsx
msgid "Click to copy"
msgstr "點擊複製"
@@ -427,11 +433,14 @@ msgstr "文件"
#: src/components/alerts-history-columns.tsx
#: src/components/routes/system.tsx
#: src/components/systems-table/systems-table-columns.tsx
#: src/components/systems-table/systems-table.tsx
#: src/lib/alerts.ts
msgid "Down"
msgstr "離線"
#: src/components/systems-table/systems-table.tsx
msgid "Down ({downSystemsLength})"
msgstr "離線 ({downSystemsLength})"
#: src/components/alerts-history-columns.tsx
msgid "Duration"
msgstr "持續時間"
@@ -756,10 +765,13 @@ msgid "Pause"
msgstr "暫停"
#: src/components/systems-table/systems-table-columns.tsx
#: src/components/systems-table/systems-table.tsx
msgid "Paused"
msgstr "已暫停"
#: src/components/systems-table/systems-table.tsx
msgid "Paused ({pausedSystemsLength})"
msgstr "已暫停 ({pausedSystemsLength})"
#: src/components/routes/settings/notifications.tsx
msgid "Please <0>configure an SMTP server</0> to ensure alerts are delivered."
msgstr "請<0>設定一個SMTP 伺服器</0>以確保能傳送警報。"
@@ -1063,6 +1075,7 @@ msgstr "當任何磁碟使用率超過閾值時觸發"
msgid "Unit preferences"
msgstr "單位偏好"
#: src/components/command-palette.tsx
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Universal token"
msgstr "通用令牌"
@@ -1075,13 +1088,12 @@ msgstr "未知"
#. Context: System is up
#: src/components/routes/system.tsx
#: src/components/systems-table/systems-table-columns.tsx
#: src/components/systems-table/systems-table.tsx
msgid "Up"
msgstr "上線"
#: src/components/systems-table/systems-table.tsx
msgid "Updated in real time. Click on a system to view information."
msgstr "實時更新。點擊系統顯示資訊。"
msgid "Up ({upSystemsLength})"
msgstr "上線 ({upSystemsLength})"
#: src/components/routes/system.tsx
msgid "Uptime"

View File

@@ -3,7 +3,7 @@ package beszel
import "github.com/blang/semver"
const (
Version = "0.12.6"
Version = "0.12.7"
AppName = "beszel"
)

View File

@@ -1,3 +1,13 @@
## 0.12.7
- Make LibreHardwareMonitor opt-in with `LHM=true` environment variable. (#1130)
- Fix bug where token was not refreshed when adding a new system. (#1141)
- Add `USER_EMAIL` and `USER_PASSWORD` environment variables to set the email and password of the initial user. (#1137)
- Display system counts (active, paused, down) in All Systems 'view' options. (#1078)
## 0.12.6
- Add maximum 1 minute memory usage.