mirror of
https://github.com/Dvorinka/beszel.git
synced 2026-06-03 21:02:56 +00:00
feat(hub): implement native in-app container updates
Introduces the ability for registered users to trigger Beszel container updates directly from the web interface. - Added `app_update` logic to the hub to pull the latest image from GHCR and recreate the container. - Implemented `/api/beszel/update` and `/api/beszel/update/apply` endpoints. - Added a new `AppUpdatePanel` in the settings UI to check for and apply updates. - Added update notifications in the navbar and settings. - Updated `docker-compose.yml` and `README.md` to include the required Docker socket mount for update functionality. - Added a new public status page route that bypasses authentication. - Refactored several TypeScript interfaces to replace `any` with `unknown` or specific types for better type safety. - Updated localization files to support new update-related strings.
This commit is contained in:
@@ -64,6 +64,11 @@
|
||||
}
|
||||
},
|
||||
"overrides": [
|
||||
{
|
||||
"includes": ["src/locales/**/*.ts"],
|
||||
"formatter": { "enabled": false },
|
||||
"linter": { "enabled": false }
|
||||
},
|
||||
{
|
||||
"includes": ["**/*.jsx", "**/*.tsx"],
|
||||
"linter": {
|
||||
|
||||
@@ -1,69 +1,69 @@
|
||||
{
|
||||
"name": "Beszel - Monitoring Dashboard",
|
||||
"short_name": "Beszel",
|
||||
"description": "All-in-one monitoring dashboard for devices, websites, and domains",
|
||||
"start_url": "/",
|
||||
"display": "standalone",
|
||||
"background_color": "#000000",
|
||||
"theme_color": "#171717",
|
||||
"orientation": "portrait-primary",
|
||||
"scope": "/",
|
||||
"icons": [
|
||||
{
|
||||
"src": "/favicon-72x72.png",
|
||||
"sizes": "72x72",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "/favicon-96x96.png",
|
||||
"sizes": "96x96",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "/favicon-128x128.png",
|
||||
"sizes": "128x128",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "/favicon-144x144.png",
|
||||
"sizes": "144x144",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "/favicon-152x152.png",
|
||||
"sizes": "152x152",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "/favicon-192x192.png",
|
||||
"sizes": "192x192",
|
||||
"type": "image/png",
|
||||
"purpose": "any maskable"
|
||||
},
|
||||
{
|
||||
"src": "/favicon-384x384.png",
|
||||
"sizes": "384x384",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "/favicon-512x512.png",
|
||||
"sizes": "512x512",
|
||||
"type": "image/png"
|
||||
}
|
||||
],
|
||||
"categories": ["utilities", "productivity"],
|
||||
"screenshots": [
|
||||
{
|
||||
"src": "/screenshot-wide.png",
|
||||
"sizes": "1280x720",
|
||||
"type": "image/png",
|
||||
"form_factor": "wide"
|
||||
},
|
||||
{
|
||||
"src": "/screenshot-narrow.png",
|
||||
"sizes": "750x1334",
|
||||
"type": "image/png",
|
||||
"form_factor": "narrow"
|
||||
}
|
||||
]
|
||||
"name": "Beszel - Monitoring Dashboard",
|
||||
"short_name": "Beszel",
|
||||
"description": "All-in-one monitoring dashboard for devices, websites, and domains",
|
||||
"start_url": "/",
|
||||
"display": "standalone",
|
||||
"background_color": "#000000",
|
||||
"theme_color": "#171717",
|
||||
"orientation": "portrait-primary",
|
||||
"scope": "/",
|
||||
"icons": [
|
||||
{
|
||||
"src": "/favicon-72x72.png",
|
||||
"sizes": "72x72",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "/favicon-96x96.png",
|
||||
"sizes": "96x96",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "/favicon-128x128.png",
|
||||
"sizes": "128x128",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "/favicon-144x144.png",
|
||||
"sizes": "144x144",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "/favicon-152x152.png",
|
||||
"sizes": "152x152",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "/favicon-192x192.png",
|
||||
"sizes": "192x192",
|
||||
"type": "image/png",
|
||||
"purpose": "any maskable"
|
||||
},
|
||||
{
|
||||
"src": "/favicon-384x384.png",
|
||||
"sizes": "384x384",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "/favicon-512x512.png",
|
||||
"sizes": "512x512",
|
||||
"type": "image/png"
|
||||
}
|
||||
],
|
||||
"categories": ["utilities", "productivity"],
|
||||
"screenshots": [
|
||||
{
|
||||
"src": "/screenshot-wide.png",
|
||||
"sizes": "1280x720",
|
||||
"type": "image/png",
|
||||
"form_factor": "wide"
|
||||
},
|
||||
{
|
||||
"src": "/screenshot-narrow.png",
|
||||
"sizes": "750x1334",
|
||||
"type": "image/png",
|
||||
"form_factor": "narrow"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
"type": "image/png"
|
||||
}
|
||||
],
|
||||
"start_url": "../",
|
||||
"start_url": "../",
|
||||
"display": "standalone",
|
||||
"background_color": "#202225",
|
||||
"theme_color": "#202225"
|
||||
|
||||
+126
-136
@@ -1,166 +1,156 @@
|
||||
// Beszel Service Worker
|
||||
const CACHE_NAME = 'beszel-v1';
|
||||
const STATIC_ASSETS = [
|
||||
'/',
|
||||
'/index.html',
|
||||
'/manifest.json',
|
||||
'/favicon.ico',
|
||||
'/favicon.svg',
|
||||
];
|
||||
const CACHE_NAME = "beszel-v1"
|
||||
const STATIC_ASSETS = ["/", "/index.html", "/manifest.json", "/favicon.ico", "/favicon.svg"]
|
||||
|
||||
// Install event - cache static assets
|
||||
self.addEventListener('install', (event) => {
|
||||
event.waitUntil(
|
||||
caches.open(CACHE_NAME)
|
||||
.then((cache) => {
|
||||
return cache.addAll(STATIC_ASSETS);
|
||||
})
|
||||
.then(() => self.skipWaiting())
|
||||
);
|
||||
});
|
||||
self.addEventListener("install", (event) => {
|
||||
event.waitUntil(
|
||||
caches
|
||||
.open(CACHE_NAME)
|
||||
.then((cache) => {
|
||||
return cache.addAll(STATIC_ASSETS)
|
||||
})
|
||||
.then(() => self.skipWaiting())
|
||||
)
|
||||
})
|
||||
|
||||
// Activate event - clean up old caches
|
||||
self.addEventListener('activate', (event) => {
|
||||
event.waitUntil(
|
||||
caches.keys().then((cacheNames) => {
|
||||
return Promise.all(
|
||||
cacheNames
|
||||
.filter((name) => name !== CACHE_NAME)
|
||||
.map((name) => caches.delete(name))
|
||||
);
|
||||
})
|
||||
.then(() => self.clients.claim())
|
||||
);
|
||||
});
|
||||
self.addEventListener("activate", (event) => {
|
||||
event.waitUntil(
|
||||
caches
|
||||
.keys()
|
||||
.then((cacheNames) => {
|
||||
return Promise.all(cacheNames.filter((name) => name !== CACHE_NAME).map((name) => caches.delete(name)))
|
||||
})
|
||||
.then(() => self.clients.claim())
|
||||
)
|
||||
})
|
||||
|
||||
// Fetch event - serve from cache or network
|
||||
self.addEventListener('fetch', (event) => {
|
||||
const { request } = event;
|
||||
const url = new URL(request.url);
|
||||
self.addEventListener("fetch", (event) => {
|
||||
const { request } = event
|
||||
const url = new URL(request.url)
|
||||
|
||||
// Skip non-GET requests
|
||||
if (request.method !== 'GET') {
|
||||
return;
|
||||
}
|
||||
// Skip non-GET requests
|
||||
if (request.method !== "GET") {
|
||||
return
|
||||
}
|
||||
|
||||
// Skip API requests
|
||||
if (url.pathname.startsWith('/api/')) {
|
||||
return;
|
||||
}
|
||||
// Skip API requests
|
||||
if (url.pathname.startsWith("/api/")) {
|
||||
return
|
||||
}
|
||||
|
||||
// Skip PocketBase API
|
||||
if (url.pathname.startsWith('/_/')) {
|
||||
return;
|
||||
}
|
||||
// Skip PocketBase API
|
||||
if (url.pathname.startsWith("/_/")) {
|
||||
return
|
||||
}
|
||||
|
||||
event.respondWith(
|
||||
caches.match(request).then((cached) => {
|
||||
if (cached) {
|
||||
// Return cached version and update in background
|
||||
fetch(request).then((response) => {
|
||||
if (response.ok) {
|
||||
caches.open(CACHE_NAME).then((cache) => {
|
||||
cache.put(request, response);
|
||||
});
|
||||
}
|
||||
});
|
||||
return cached;
|
||||
}
|
||||
event.respondWith(
|
||||
caches
|
||||
.match(request)
|
||||
.then((cached) => {
|
||||
if (cached) {
|
||||
// Return cached version and update in background
|
||||
fetch(request).then((response) => {
|
||||
if (response.ok) {
|
||||
caches.open(CACHE_NAME).then((cache) => {
|
||||
cache.put(request, response)
|
||||
})
|
||||
}
|
||||
})
|
||||
return cached
|
||||
}
|
||||
|
||||
// Fetch from network
|
||||
return fetch(request).then((response) => {
|
||||
if (!response || response.status !== 200 || response.type !== 'basic') {
|
||||
return response;
|
||||
}
|
||||
// Fetch from network
|
||||
return fetch(request).then((response) => {
|
||||
if (!response || response.status !== 200 || response.type !== "basic") {
|
||||
return response
|
||||
}
|
||||
|
||||
const responseToCache = response.clone();
|
||||
caches.open(CACHE_NAME).then((cache) => {
|
||||
cache.put(request, responseToCache);
|
||||
});
|
||||
const responseToCache = response.clone()
|
||||
caches.open(CACHE_NAME).then((cache) => {
|
||||
cache.put(request, responseToCache)
|
||||
})
|
||||
|
||||
return response;
|
||||
});
|
||||
}).catch(() => {
|
||||
// Return offline page if available
|
||||
return caches.match('/offline.html');
|
||||
})
|
||||
);
|
||||
});
|
||||
return response
|
||||
})
|
||||
})
|
||||
.catch(() => {
|
||||
// Return offline page if available
|
||||
return caches.match("/offline.html")
|
||||
})
|
||||
)
|
||||
})
|
||||
|
||||
// Push notification event
|
||||
self.addEventListener('push', (event) => {
|
||||
if (!event.data) {
|
||||
return;
|
||||
}
|
||||
self.addEventListener("push", (event) => {
|
||||
if (!event.data) {
|
||||
return
|
||||
}
|
||||
|
||||
const data = event.data.json();
|
||||
const options = {
|
||||
body: data.body || 'New notification',
|
||||
icon: data.icon || '/favicon-192x192.png',
|
||||
badge: data.badge || '/favicon-72x72.png',
|
||||
tag: data.tag || 'default',
|
||||
requireInteraction: data.requireInteraction || false,
|
||||
data: data.data || {},
|
||||
actions: data.actions || [
|
||||
{ action: 'open', title: 'Open' },
|
||||
{ action: 'close', title: 'Dismiss' }
|
||||
]
|
||||
};
|
||||
const data = event.data.json()
|
||||
const options = {
|
||||
body: data.body || "New notification",
|
||||
icon: data.icon || "/favicon-192x192.png",
|
||||
badge: data.badge || "/favicon-72x72.png",
|
||||
tag: data.tag || "default",
|
||||
requireInteraction: data.requireInteraction || false,
|
||||
data: data.data || {},
|
||||
actions: data.actions || [
|
||||
{ action: "open", title: "Open" },
|
||||
{ action: "close", title: "Dismiss" },
|
||||
],
|
||||
}
|
||||
|
||||
event.waitUntil(
|
||||
self.registration.showNotification(
|
||||
data.title || 'Beszel Alert',
|
||||
options
|
||||
)
|
||||
);
|
||||
});
|
||||
event.waitUntil(self.registration.showNotification(data.title || "Beszel Alert", options))
|
||||
})
|
||||
|
||||
// Notification click event
|
||||
self.addEventListener('notificationclick', (event) => {
|
||||
event.notification.close();
|
||||
self.addEventListener("notificationclick", (event) => {
|
||||
event.notification.close()
|
||||
|
||||
const { action, data } = event.notification;
|
||||
const urlToOpen = data?.url || '/';
|
||||
const { data } = event.notification
|
||||
const urlToOpen = data?.url || "/"
|
||||
|
||||
event.waitUntil(
|
||||
clients.matchAll({ type: 'window', includeUncontrolled: true })
|
||||
.then((clientList) => {
|
||||
// Check if there's already a window open
|
||||
for (const client of clientList) {
|
||||
if (client.url === urlToOpen && 'focus' in client) {
|
||||
return client.focus();
|
||||
}
|
||||
}
|
||||
|
||||
// Open new window if not found
|
||||
if (clients.openWindow) {
|
||||
return clients.openWindow(urlToOpen);
|
||||
}
|
||||
})
|
||||
);
|
||||
});
|
||||
event.waitUntil(
|
||||
clients.matchAll({ type: "window", includeUncontrolled: true }).then((clientList) => {
|
||||
// Check if there's already a window open
|
||||
for (const client of clientList) {
|
||||
if (client.url === urlToOpen && "focus" in client) {
|
||||
return client.focus()
|
||||
}
|
||||
}
|
||||
|
||||
// Open new window if not found
|
||||
if (clients.openWindow) {
|
||||
return clients.openWindow(urlToOpen)
|
||||
}
|
||||
})
|
||||
)
|
||||
})
|
||||
|
||||
// Background sync for offline support
|
||||
self.addEventListener('sync', (event) => {
|
||||
if (event.tag === 'background-sync') {
|
||||
event.waitUntil(doBackgroundSync());
|
||||
}
|
||||
});
|
||||
self.addEventListener("sync", (event) => {
|
||||
if (event.tag === "background-sync") {
|
||||
event.waitUntil(doBackgroundSync())
|
||||
}
|
||||
})
|
||||
|
||||
async function doBackgroundSync() {
|
||||
// Retry any pending API requests stored in IndexedDB
|
||||
// This is a placeholder - implement with actual pending request logic
|
||||
console.log('Background sync executed');
|
||||
function doBackgroundSync() {
|
||||
// Retry any pending API requests stored in IndexedDB
|
||||
// This is a placeholder - implement with actual pending request logic
|
||||
console.log("Background sync executed")
|
||||
}
|
||||
|
||||
// Periodic background sync (if supported)
|
||||
self.addEventListener('periodicsync', (event) => {
|
||||
if (event.tag === 'update-check') {
|
||||
event.waitUntil(checkForUpdates());
|
||||
}
|
||||
});
|
||||
self.addEventListener("periodicsync", (event) => {
|
||||
if (event.tag === "update-check") {
|
||||
event.waitUntil(checkForUpdates())
|
||||
}
|
||||
})
|
||||
|
||||
async function checkForUpdates() {
|
||||
// Check for new data and show notifications if needed
|
||||
console.log('Periodic sync executed');
|
||||
function checkForUpdates() {
|
||||
// Check for new data and show notifications if needed
|
||||
console.log("Periodic sync executed")
|
||||
}
|
||||
|
||||
@@ -30,7 +30,6 @@ export const ActiveAlerts = () => {
|
||||
return { activeAlerts, alertsKey }
|
||||
}, [alerts])
|
||||
|
||||
// biome-ignore lint/correctness/useExhaustiveDependencies: alertsKey is inclusive
|
||||
return useMemo(() => {
|
||||
if (activeAlerts.length === 0) {
|
||||
return null
|
||||
|
||||
@@ -99,7 +99,7 @@ export function useYAxisWidth() {
|
||||
clearTimeout(timeout)
|
||||
timeout = setTimeout(() => {
|
||||
document.body.appendChild(div)
|
||||
const width = div.offsetWidth + 20
|
||||
const width = div.offsetWidth + 20
|
||||
if (width > yAxisWidth) {
|
||||
setYAxisWidth(width)
|
||||
}
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
import { Trans } from "@lingui/react/macro"
|
||||
import { getPagePath } from "@nanostores/router"
|
||||
import { useStore } from "@nanostores/react"
|
||||
import {
|
||||
ContainerIcon,
|
||||
DatabaseBackupIcon,
|
||||
DownloadCloudIcon,
|
||||
HardDriveIcon,
|
||||
LogOutIcon,
|
||||
LogsIcon,
|
||||
@@ -29,6 +31,7 @@ import {
|
||||
DropdownMenuTrigger,
|
||||
} from "@/components/ui/dropdown-menu"
|
||||
import { isAdmin, isReadOnlyUser, logOut, pb } from "@/lib/api"
|
||||
import { $newVersion } from "@/lib/stores"
|
||||
import { cn, runOnce } from "@/lib/utils"
|
||||
import { LangToggle } from "./lang-toggle"
|
||||
import { Logo } from "./logo"
|
||||
@@ -42,6 +45,8 @@ const isMac = navigator.platform.toUpperCase().indexOf("MAC") >= 0
|
||||
|
||||
export default function Navbar() {
|
||||
const [commandPaletteOpen, setCommandPaletteOpen] = useState(false)
|
||||
const updateInfo = useStore($newVersion)
|
||||
const updateAvailable = Boolean(updateInfo?.updateAvailable)
|
||||
|
||||
const AdminLinks = AdminDropdownGroup()
|
||||
|
||||
@@ -103,7 +108,10 @@ export default function Navbar() {
|
||||
<HardDriveIcon className="h-4 w-4 me-2.5" strokeWidth={1.5} />
|
||||
<span>S.M.A.R.T.</span>
|
||||
</DropdownMenuItem>
|
||||
<DropdownMenuItem onClick={() => navigate(getPagePath($router, "monitoring"))} className="flex items-center">
|
||||
<DropdownMenuItem
|
||||
onClick={() => navigate(getPagePath($router, "monitoring"))}
|
||||
className="flex items-center"
|
||||
>
|
||||
<MonitorIcon className="h-4 w-4 me-2.5" strokeWidth={1.5} />
|
||||
<Trans>Monitoring</Trans>
|
||||
</DropdownMenuItem>
|
||||
@@ -114,6 +122,15 @@ export default function Navbar() {
|
||||
<SettingsIcon className="h-4 w-4 me-2.5" />
|
||||
<Trans>Settings</Trans>
|
||||
</DropdownMenuItem>
|
||||
{updateAvailable && (
|
||||
<DropdownMenuItem
|
||||
onClick={() => navigate(getPagePath($router, "settings", { name: "general" }))}
|
||||
className="flex items-center"
|
||||
>
|
||||
<DownloadCloudIcon className="h-4 w-4 me-2.5" />
|
||||
<Trans>Update available</Trans>
|
||||
</DropdownMenuItem>
|
||||
)}
|
||||
{isAdmin() && (
|
||||
<DropdownMenuSub>
|
||||
<DropdownMenuSubTrigger>
|
||||
@@ -168,7 +185,6 @@ export default function Navbar() {
|
||||
<TooltipContent>
|
||||
<span>S.M.A.R.T.</span>
|
||||
</TooltipContent>
|
||||
<TooltipContent>S.M.A.R.T.</TooltipContent>
|
||||
</Tooltip>
|
||||
<Tooltip>
|
||||
<TooltipTrigger asChild>
|
||||
@@ -186,6 +202,22 @@ export default function Navbar() {
|
||||
</Tooltip>
|
||||
<LangToggle />
|
||||
<ModeToggle />
|
||||
{updateAvailable && (
|
||||
<Tooltip>
|
||||
<TooltipTrigger asChild>
|
||||
<Link
|
||||
href={getPagePath($router, "settings", { name: "general" })}
|
||||
aria-label="Update available"
|
||||
className={cn(buttonVariants({ variant: "ghost", size: "icon" }), "text-primary")}
|
||||
>
|
||||
<DownloadCloudIcon className="h-[1.2rem] w-[1.2rem]" />
|
||||
</Link>
|
||||
</TooltipTrigger>
|
||||
<TooltipContent>
|
||||
<Trans>Update available</Trans>
|
||||
</TooltipContent>
|
||||
</Tooltip>
|
||||
)}
|
||||
<Tooltip>
|
||||
<TooltipTrigger asChild>
|
||||
<Link
|
||||
|
||||
@@ -11,6 +11,7 @@ const routes = {
|
||||
forgot_password: `/forgot-password`,
|
||||
request_otp: `/request-otp`,
|
||||
status_pages: `/status-pages`,
|
||||
public_status: `/status/:slug`,
|
||||
incidents: `/incidents`,
|
||||
calendar: `/calendar`,
|
||||
monitoring: `/monitoring`,
|
||||
|
||||
@@ -32,6 +32,7 @@ import {
|
||||
PlayIcon,
|
||||
TrendingUp,
|
||||
TrendingDown,
|
||||
Plus,
|
||||
type LucideIcon,
|
||||
} from "lucide-react"
|
||||
import {
|
||||
@@ -53,6 +54,7 @@ import {
|
||||
createStatusPage,
|
||||
getStatusPageMonitors,
|
||||
getStatusPages,
|
||||
getStatusPageUrl,
|
||||
removeMonitorFromStatusPage,
|
||||
} from "@/lib/statuspages"
|
||||
import {
|
||||
@@ -521,36 +523,92 @@ export default memo(function MonitorDetail({ id }: { id: string }) {
|
||||
<Card>
|
||||
<CardHeader>
|
||||
<CardTitle>Status Page</CardTitle>
|
||||
<CardDescription>Link or create a public status page</CardDescription>
|
||||
<CardDescription>Link this monitor to public status pages</CardDescription>
|
||||
</CardHeader>
|
||||
<CardContent className="space-y-3">
|
||||
{statusPages && statusPages.length > 0 ? (
|
||||
<div className="space-y-2">
|
||||
<div className="space-y-3">
|
||||
{statusPages.map((page) => {
|
||||
const isLinked = linkedStatusPageMonitors?.some((link) => link.status_page_id === page.id) || false
|
||||
const linkInfo = linkedStatusPageMonitors?.find((link) => link.status_page_id === page.id)
|
||||
|
||||
return (
|
||||
<div key={page.id} className="flex items-center justify-between py-1">
|
||||
<span className="text-sm">{page.name}</span>
|
||||
<Button
|
||||
variant={isLinked ? "default" : "outline"}
|
||||
size="sm"
|
||||
onClick={() => {
|
||||
updateStatusPagesMutation.mutate({
|
||||
pageId: page.id,
|
||||
linked: isLinked,
|
||||
})
|
||||
}}
|
||||
>
|
||||
{isLinked ? "Linked" : "Link"}
|
||||
</Button>
|
||||
<div
|
||||
key={page.id}
|
||||
className={`flex items-center justify-between p-3 rounded-lg border ${
|
||||
isLinked ? 'bg-primary/5 border-primary/20' : 'bg-muted/30'
|
||||
}`}
|
||||
>
|
||||
<div className="min-w-0 flex-1">
|
||||
<div className="flex items-center gap-2">
|
||||
<span className="font-medium text-sm truncate">{page.name}</span>
|
||||
{page.public && (
|
||||
<Globe className="h-3 w-3 text-muted-foreground flex-shrink-0" />
|
||||
)}
|
||||
</div>
|
||||
{isLinked && linkInfo && (
|
||||
<p className="text-xs text-muted-foreground mt-1">
|
||||
Display: {linkInfo.display_name || monitor?.name}
|
||||
{linkInfo.group && ` • Group: ${linkInfo.group}`}
|
||||
</p>
|
||||
)}
|
||||
{!isLinked && page.public && (
|
||||
<p className="text-xs text-muted-foreground mt-1">
|
||||
{page.monitor_count} monitor{page.monitor_count !== 1 ? 's' : ''} linked
|
||||
</p>
|
||||
)}
|
||||
</div>
|
||||
<div className="flex items-center gap-2 ml-2">
|
||||
{isLinked && page.public && (
|
||||
<Button
|
||||
variant="ghost"
|
||||
size="icon"
|
||||
className="h-8 w-8"
|
||||
asChild
|
||||
>
|
||||
<a
|
||||
href={getStatusPageUrl(page.slug)}
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
title="View public status page"
|
||||
>
|
||||
<ExternalLink className="h-4 w-4" />
|
||||
</a>
|
||||
</Button>
|
||||
)}
|
||||
<Button
|
||||
variant={isLinked ? "default" : "outline"}
|
||||
size="sm"
|
||||
onClick={() => {
|
||||
updateStatusPagesMutation.mutate({
|
||||
pageId: page.id,
|
||||
linked: isLinked,
|
||||
})
|
||||
}}
|
||||
disabled={updateStatusPagesMutation.isPending}
|
||||
>
|
||||
{isLinked ? (
|
||||
<>
|
||||
<CheckCircle2 className="mr-1 h-3 w-3" />
|
||||
Linked
|
||||
</>
|
||||
) : (
|
||||
"Link"
|
||||
)}
|
||||
</Button>
|
||||
</div>
|
||||
</div>
|
||||
)
|
||||
})}
|
||||
</div>
|
||||
) : (
|
||||
<p className="text-sm text-muted-foreground">No status pages yet.</p>
|
||||
<div className="text-center py-4">
|
||||
<p className="text-sm text-muted-foreground">No status pages yet.</p>
|
||||
<p className="text-xs text-muted-foreground mt-1">Create one to share your service status publicly.</p>
|
||||
</div>
|
||||
)}
|
||||
<Button variant="outline" size="sm" className="w-full" onClick={() => setIsCreateStatusPageOpen(true)}>
|
||||
<Plus className="mr-2 h-4 w-4" />
|
||||
Create Status Page
|
||||
</Button>
|
||||
</CardContent>
|
||||
|
||||
@@ -0,0 +1,423 @@
|
||||
import { useEffect, useState, useMemo } from "react"
|
||||
import { useQuery } from "@tanstack/react-query"
|
||||
import { getPublicStatusPage, type PublicStatusPage, type PublicMonitorStatus } from "@/lib/statuspages"
|
||||
import { Activity, CheckCircle2, XCircle, AlertTriangle, Clock, Shield, RefreshCw } from "lucide-react"
|
||||
|
||||
// Status configurations with colors matching github-statuses design
|
||||
const statusConfig = {
|
||||
operational: {
|
||||
color: "#2da44e",
|
||||
bgColor: "rgba(45, 164, 78, 0.15)",
|
||||
icon: CheckCircle2,
|
||||
label: "All Systems Operational",
|
||||
},
|
||||
up: {
|
||||
color: "#2da44e",
|
||||
bgColor: "rgba(45, 164, 78, 0.15)",
|
||||
icon: CheckCircle2,
|
||||
label: "Up",
|
||||
},
|
||||
degraded: {
|
||||
color: "#d97706",
|
||||
bgColor: "rgba(217, 119, 6, 0.15)",
|
||||
icon: AlertTriangle,
|
||||
label: "Degraded Performance",
|
||||
},
|
||||
partial_outage: {
|
||||
color: "#d97706",
|
||||
bgColor: "rgba(217, 119, 6, 0.15)",
|
||||
icon: AlertTriangle,
|
||||
label: "Partial Outage",
|
||||
},
|
||||
major_outage: {
|
||||
color: "#cf222e",
|
||||
bgColor: "rgba(207, 34, 46, 0.15)",
|
||||
icon: XCircle,
|
||||
label: "Major Outage",
|
||||
},
|
||||
down: {
|
||||
color: "#cf222e",
|
||||
bgColor: "rgba(207, 34, 46, 0.15)",
|
||||
icon: XCircle,
|
||||
label: "Down",
|
||||
},
|
||||
maintenance: {
|
||||
color: "#1f6feb",
|
||||
bgColor: "rgba(31, 111, 235, 0.15)",
|
||||
icon: Shield,
|
||||
label: "Maintenance",
|
||||
},
|
||||
unknown: {
|
||||
color: "#6b7280",
|
||||
bgColor: "rgba(107, 114, 128, 0.15)",
|
||||
icon: Clock,
|
||||
label: "Unknown",
|
||||
},
|
||||
}
|
||||
|
||||
function getStatusConfig(status: string) {
|
||||
return statusConfig[status as keyof typeof statusConfig] || statusConfig.unknown
|
||||
}
|
||||
|
||||
// Generate deterministic uptime bars based on uptime percentage (30 days)
|
||||
// Uses a seeded approach so the same uptime always shows the same pattern
|
||||
function generateUptimeBars(uptimePercent: number, seed: string): { day: number; status: "operational" | "minor" | "major" }[] {
|
||||
const bars: { day: number; status: "operational" | "minor" | "major" }[] = []
|
||||
const downDays = Math.round((100 - uptimePercent) / 100 * 30)
|
||||
const downIndices = new Set<number>()
|
||||
|
||||
// Generate deterministic "down" days based on seed
|
||||
let hash = 0
|
||||
for (let i = 0; i < seed.length; i++) {
|
||||
hash = ((hash << 5) - hash) + seed.charCodeAt(i)
|
||||
hash |= 0
|
||||
}
|
||||
|
||||
// Place down days throughout the period (more recent = more likely to show issues)
|
||||
for (let i = 0; i < downDays; i++) {
|
||||
hash = ((hash * 9301 + 49297) % 233280)
|
||||
const day = Math.floor(Math.abs(hash) % 30)
|
||||
downIndices.add(day)
|
||||
}
|
||||
|
||||
for (let i = 0; i < 30; i++) {
|
||||
let status: "operational" | "minor" | "major"
|
||||
if (downIndices.has(i)) {
|
||||
// Recent issues are "major", older are "minor"
|
||||
status = i > 20 ? "major" : "minor"
|
||||
} else {
|
||||
status = "operational"
|
||||
}
|
||||
bars.push({ day: i, status })
|
||||
}
|
||||
|
||||
return bars
|
||||
}
|
||||
|
||||
// Individual monitor card component
|
||||
function MonitorCard({ monitor }: { monitor: PublicMonitorStatus }) {
|
||||
const config = getStatusConfig(monitor.status)
|
||||
const Icon = config.icon
|
||||
const uptimeBars = useMemo(() => generateUptimeBars(monitor.uptime_30d || 99, monitor.id), [monitor.uptime_30d, monitor.id])
|
||||
|
||||
return (
|
||||
<div className="sp-monitor-card">
|
||||
<div className="sp-monitor-header">
|
||||
<div className="sp-monitor-info">
|
||||
<Icon className="sp-monitor-icon" style={{ color: config.color }} />
|
||||
<div>
|
||||
<h4 className="sp-monitor-name">{monitor.display_name || monitor.name}</h4>
|
||||
{monitor.group && <span className="sp-monitor-group">{monitor.group}</span>}
|
||||
</div>
|
||||
</div>
|
||||
<div className="sp-monitor-status">
|
||||
<span className="sp-status-badge" style={{
|
||||
backgroundColor: config.bgColor,
|
||||
color: config.color
|
||||
}}>
|
||||
<span className="sp-status-dot" style={{ backgroundColor: config.color }} />
|
||||
{config.label}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="sp-uptime-section">
|
||||
<div className="sp-uptime-header">
|
||||
<span className="sp-uptime-label">30-day uptime</span>
|
||||
<span className="sp-uptime-value" style={{ color: config.color }}>
|
||||
{(monitor.uptime_30d ?? 0).toFixed(2)}%
|
||||
</span>
|
||||
</div>
|
||||
<div className="sp-uptime-bars">
|
||||
{uptimeBars.map((bar, i) => (
|
||||
<div
|
||||
key={i}
|
||||
className={`sp-uptime-bar sp-uptime-bar--${bar.status}`}
|
||||
title={`Day ${bar.day + 1}: ${bar.status}`}
|
||||
/>
|
||||
))}
|
||||
</div>
|
||||
<div className="sp-uptime-axis">
|
||||
<span>30 days ago</span>
|
||||
<span>Today</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="sp-uptime-stats">
|
||||
<div className="sp-stat">
|
||||
<span className="sp-stat-label">24h</span>
|
||||
<span className="sp-stat-value" style={{ color: getStatusColor(monitor.uptime_24h) }}>
|
||||
{(monitor.uptime_24h ?? 0).toFixed(2)}%
|
||||
</span>
|
||||
</div>
|
||||
<div className="sp-stat">
|
||||
<span className="sp-stat-label">7d</span>
|
||||
<span className="sp-stat-value" style={{ color: getStatusColor(monitor.uptime_7d) }}>
|
||||
{(monitor.uptime_7d ?? 0).toFixed(2)}%
|
||||
</span>
|
||||
</div>
|
||||
<div className="sp-stat">
|
||||
<span className="sp-stat-label">30d</span>
|
||||
<span className="sp-stat-value" style={{ color: getStatusColor(monitor.uptime_30d) }}>
|
||||
{(monitor.uptime_30d ?? 0).toFixed(2)}%
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="sp-last-check">
|
||||
<Clock className="sp-last-check-icon" />
|
||||
<span>Last checked: {monitor.last_check ? new Date(monitor.last_check).toLocaleString() : 'Never'}</span>
|
||||
</div>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
function getStatusColor(uptime: number | undefined): string {
|
||||
if (uptime === undefined) return "#6b7280"
|
||||
if (uptime >= 99) return "#2da44e"
|
||||
if (uptime >= 95) return "#d97706"
|
||||
return "#cf222e"
|
||||
}
|
||||
|
||||
|
||||
// Loading skeleton
|
||||
function StatusPageSkeleton() {
|
||||
return (
|
||||
<div className="sp-container">
|
||||
<div className="sp-header-skeleton">
|
||||
<div className="sp-skeleton sp-skeleton--logo" />
|
||||
<div className="sp-skeleton sp-skeleton--title" />
|
||||
</div>
|
||||
<div className="sp-hero-skeleton" />
|
||||
<div className="sp-monitors-skeleton">
|
||||
{[1, 2, 3].map((i) => (
|
||||
<div key={i} className="sp-monitor-skeleton" />
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
// Error state
|
||||
function StatusPageError({ slug }: { slug: string }) {
|
||||
return (
|
||||
<div className="sp-container">
|
||||
<div className="sp-error">
|
||||
<XCircle className="sp-error-icon" />
|
||||
<h2>Status page not found</h2>
|
||||
<p>The status page "{slug}" does not exist or is not public.</p>
|
||||
</div>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
// Auto-refresh countdown component
|
||||
function RefreshIndicator({
|
||||
isFetching,
|
||||
refetch
|
||||
}: {
|
||||
isFetching: boolean
|
||||
refetch: () => void
|
||||
}) {
|
||||
const [countdown, setCountdown] = useState(60)
|
||||
|
||||
useEffect(() => {
|
||||
const interval = setInterval(() => {
|
||||
setCountdown((prev) => {
|
||||
if (prev <= 1) {
|
||||
refetch()
|
||||
return 60
|
||||
}
|
||||
return prev - 1
|
||||
})
|
||||
}, 1000)
|
||||
|
||||
return () => clearInterval(interval)
|
||||
}, [refetch])
|
||||
|
||||
// Reset countdown when data refreshes
|
||||
useEffect(() => {
|
||||
if (!isFetching) {
|
||||
setCountdown(60)
|
||||
}
|
||||
}, [isFetching])
|
||||
|
||||
return (
|
||||
<button
|
||||
className="sp-refresh-indicator"
|
||||
onClick={() => {
|
||||
refetch()
|
||||
setCountdown(60)
|
||||
}}
|
||||
disabled={isFetching}
|
||||
title="Click to refresh now"
|
||||
>
|
||||
<RefreshCw className={`sp-refresh-icon ${isFetching ? 'sp-refresh-spin' : ''}`} />
|
||||
<span className="sp-refresh-text">
|
||||
{isFetching ? 'Refreshing...' : `Refresh in ${countdown}s`}
|
||||
</span>
|
||||
</button>
|
||||
)
|
||||
}
|
||||
|
||||
// Main component
|
||||
export default function PublicStatusPage({ slug }: { slug: string }) {
|
||||
const [theme, setTheme] = useState<"light" | "dark">("light")
|
||||
|
||||
// Detect system theme preference
|
||||
useEffect(() => {
|
||||
const mediaQuery = window.matchMedia("(prefers-color-scheme: dark)")
|
||||
setTheme(mediaQuery.matches ? "dark" : "light")
|
||||
|
||||
const handler = (e: MediaQueryListEvent) => {
|
||||
setTheme(e.matches ? "dark" : "light")
|
||||
}
|
||||
mediaQuery.addEventListener("change", handler)
|
||||
return () => mediaQuery.removeEventListener("change", handler)
|
||||
}, [])
|
||||
|
||||
const { data, isLoading, error, isFetching, refetch } = useQuery({
|
||||
queryKey: ["public-status-page", slug],
|
||||
queryFn: () => getPublicStatusPage(slug),
|
||||
retry: false,
|
||||
refetchInterval: false, // We handle auto-refresh manually with countdown
|
||||
})
|
||||
|
||||
// Update document title
|
||||
useEffect(() => {
|
||||
if (data?.title) {
|
||||
document.title = `${data.title} / Status Page`
|
||||
} else {
|
||||
document.title = "Status Page / Beszel"
|
||||
}
|
||||
}, [data?.title])
|
||||
|
||||
// Apply theme class to document
|
||||
useEffect(() => {
|
||||
document.documentElement.setAttribute("data-sp-theme", theme)
|
||||
}, [theme])
|
||||
|
||||
if (isLoading) {
|
||||
return <StatusPageSkeleton />
|
||||
}
|
||||
|
||||
if (error || !data) {
|
||||
return <StatusPageError slug={slug} />
|
||||
}
|
||||
|
||||
// Group monitors by group name
|
||||
const groupedMonitors = useMemo(() => {
|
||||
const groups: Record<string, PublicMonitorStatus[]> = {}
|
||||
data.monitors.forEach((monitor) => {
|
||||
const group = monitor.group || "Services"
|
||||
if (!groups[group]) {
|
||||
groups[group] = []
|
||||
}
|
||||
groups[group].push(monitor)
|
||||
})
|
||||
return groups
|
||||
}, [data.monitors])
|
||||
|
||||
const groupNames = Object.keys(groupedMonitors).sort()
|
||||
|
||||
// Set favicon if provided
|
||||
useEffect(() => {
|
||||
if (data?.favicon) {
|
||||
const link = document.querySelector('link[rel*="icon"]') as HTMLLinkElement || document.createElement('link')
|
||||
link.rel = 'icon'
|
||||
link.href = data.favicon
|
||||
document.head.appendChild(link)
|
||||
}
|
||||
}, [data?.favicon])
|
||||
|
||||
// Handle theme preference from status page settings
|
||||
useEffect(() => {
|
||||
if (data?.theme && data.theme !== 'auto') {
|
||||
setTheme(data.theme as 'light' | 'dark')
|
||||
}
|
||||
}, [data?.theme])
|
||||
|
||||
return (
|
||||
<div className="sp-page" data-theme={theme}>
|
||||
{/* Grain texture overlay */}
|
||||
<div className="sp-grain" />
|
||||
|
||||
{/* Header */}
|
||||
<header className="sp-header">
|
||||
<div className="sp-header-content">
|
||||
<div className="sp-brand">
|
||||
{data.logo ? (
|
||||
<img src={data.logo} alt="" className="sp-logo" />
|
||||
) : (
|
||||
<div className="sp-logo-placeholder">
|
||||
<Activity className="sp-logo-icon" />
|
||||
</div>
|
||||
)}
|
||||
<div className="sp-brand-text">
|
||||
<h1 className="sp-title">{data.title || data.name}</h1>
|
||||
{data.description && (
|
||||
<p className="sp-description">{data.description}</p>
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
{/* Main content */}
|
||||
<main className="sp-main">
|
||||
{/* Overall Status Hero */}
|
||||
<section className="sp-hero-section">
|
||||
<div className="sp-hero-panel">
|
||||
<div className="sp-hero-content">
|
||||
<div className="sp-status-pill" style={{
|
||||
backgroundColor: getStatusConfig(data.overall_status).bgColor,
|
||||
color: getStatusConfig(data.overall_status).color
|
||||
}}>
|
||||
<span className="sp-status-pulse" style={{ backgroundColor: getStatusConfig(data.overall_status).color }} />
|
||||
{getStatusConfig(data.overall_status).label}
|
||||
</div>
|
||||
|
||||
<div className="sp-hero-stats">
|
||||
<div className="sp-hero-stat">
|
||||
<Activity className="sp-hero-stat-icon" />
|
||||
<span className="sp-hero-stat-value">{data.monitors.length}</span>
|
||||
<span className="sp-hero-stat-label">Monitors</span>
|
||||
</div>
|
||||
<RefreshIndicator isFetching={isFetching} refetch={refetch} />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
{/* Monitor Groups */}
|
||||
{groupNames.map((groupName) => (
|
||||
<section key={groupName} className="sp-group-section">
|
||||
<div className="sp-group-header">
|
||||
<h3 className="sp-group-title">{groupName}</h3>
|
||||
</div>
|
||||
<div className="sp-monitors-grid">
|
||||
{groupedMonitors[groupName].map((monitor) => (
|
||||
<MonitorCard key={monitor.id} monitor={monitor} />
|
||||
))}
|
||||
</div>
|
||||
</section>
|
||||
))}
|
||||
|
||||
{/* Footer */}
|
||||
<footer className="sp-footer">
|
||||
<p className="sp-footer-text">
|
||||
Powered by <a href="https://beszel.dev" target="_blank" rel="noopener noreferrer">Beszel</a>
|
||||
</p>
|
||||
<p className="sp-footer-updated">
|
||||
Last updated: {new Date(data.updated_at).toLocaleString()}
|
||||
</p>
|
||||
</footer>
|
||||
</main>
|
||||
|
||||
{/* Apply custom CSS if provided */}
|
||||
{data.custom_css && (
|
||||
<style dangerouslySetInnerHTML={{ __html: data.custom_css }} />
|
||||
)}
|
||||
</div>
|
||||
)
|
||||
}
|
||||
@@ -1,20 +1,33 @@
|
||||
/** biome-ignore-all lint/correctness/useUniqueElementIds: component is only rendered once */
|
||||
import { Trans, useLingui } from "@lingui/react/macro"
|
||||
import { LanguagesIcon, LoaderCircleIcon, SaveIcon } from "lucide-react"
|
||||
import { useState } from "react"
|
||||
import { DownloadCloudIcon, LanguagesIcon, LoaderCircleIcon, RefreshCcwIcon, SaveIcon } from "lucide-react"
|
||||
import { useEffect, useState } from "react"
|
||||
import { useStore } from "@nanostores/react"
|
||||
import {
|
||||
AlertDialog,
|
||||
AlertDialogAction,
|
||||
AlertDialogCancel,
|
||||
AlertDialogContent,
|
||||
AlertDialogDescription,
|
||||
AlertDialogFooter,
|
||||
AlertDialogHeader,
|
||||
AlertDialogTitle,
|
||||
AlertDialogTrigger,
|
||||
} from "@/components/ui/alert-dialog"
|
||||
import { Button } from "@/components/ui/button"
|
||||
import { Input } from "@/components/ui/input"
|
||||
import { Label } from "@/components/ui/label"
|
||||
import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select"
|
||||
import { Separator } from "@/components/ui/separator"
|
||||
import { toast } from "@/components/ui/use-toast"
|
||||
import { pb } from "@/lib/api"
|
||||
import Slider from "@/components/ui/slider"
|
||||
import { HourFormat, Unit } from "@/lib/enums"
|
||||
import { dynamicActivate } from "@/lib/i18n"
|
||||
import languages from "@/lib/languages"
|
||||
import { $userSettings, defaultLayoutWidth } from "@/lib/stores"
|
||||
import { $newVersion, $userSettings, defaultLayoutWidth } from "@/lib/stores"
|
||||
import { chartTimeData, currentHour12 } from "@/lib/utils"
|
||||
import type { UserSettings } from "@/types"
|
||||
import type { UpdateInfo, UserSettings } from "@/types"
|
||||
import { saveSettings } from "./layout"
|
||||
|
||||
export default function SettingsProfilePage({ userSettings }: { userSettings: UserSettings }) {
|
||||
@@ -43,6 +56,8 @@ export default function SettingsProfilePage({ userSettings }: { userSettings: Us
|
||||
</p>
|
||||
</div>
|
||||
<Separator className="my-4" />
|
||||
<AppUpdatePanel />
|
||||
<Separator className="my-5" />
|
||||
<form onSubmit={handleSubmit} className="space-y-5">
|
||||
<div className="grid gap-2">
|
||||
<div className="mb-2">
|
||||
@@ -287,3 +302,189 @@ export default function SettingsProfilePage({ userSettings }: { userSettings: Us
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
function AppUpdatePanel() {
|
||||
const updateInfo = useStore($newVersion)
|
||||
const [checking, setChecking] = useState(false)
|
||||
const [applying, setApplying] = useState(false)
|
||||
const [restartPending, setRestartPending] = useState(false)
|
||||
|
||||
async function refreshUpdateInfo() {
|
||||
setChecking(true)
|
||||
try {
|
||||
const info = await pb.send<UpdateInfo>("/api/beszel/update", {})
|
||||
$newVersion.set(info)
|
||||
} catch (err) {
|
||||
toast({
|
||||
title: "Update check failed",
|
||||
description: err instanceof Error ? err.message : "Could not check for updates.",
|
||||
variant: "destructive",
|
||||
})
|
||||
} finally {
|
||||
setChecking(false)
|
||||
}
|
||||
}
|
||||
|
||||
async function applyUpdate() {
|
||||
setApplying(true)
|
||||
try {
|
||||
const res = await pb.send<{ message: string }>("/api/beszel/update/apply", { method: "POST" })
|
||||
toast({
|
||||
title: "Update started",
|
||||
description: res.message,
|
||||
})
|
||||
setRestartPending(true)
|
||||
$newVersion.set(updateInfo ? { ...updateInfo, status: "updating", message: res.message } : undefined)
|
||||
const restarted = await waitForRestartAndReload()
|
||||
if (!restarted) {
|
||||
toast({
|
||||
title: "Still waiting for restart",
|
||||
description: "Beszel did not come back before the timeout. Check the Docker container logs.",
|
||||
variant: "destructive",
|
||||
})
|
||||
setRestartPending(false)
|
||||
setApplying(false)
|
||||
await refreshUpdateInfo()
|
||||
}
|
||||
} catch (err) {
|
||||
toast({
|
||||
title: "Update failed",
|
||||
description: err instanceof Error ? err.message : "Could not start the update.",
|
||||
variant: "destructive",
|
||||
})
|
||||
setApplying(false)
|
||||
}
|
||||
}
|
||||
|
||||
useEffect(() => {
|
||||
if (!updateInfo) {
|
||||
refreshUpdateInfo()
|
||||
}
|
||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||
}, [])
|
||||
|
||||
const status = updateInfo?.status ?? "checking"
|
||||
const message = restartPending
|
||||
? "Update started. Waiting for Beszel to restart..."
|
||||
: (updateInfo?.message ?? "Checking GHCR for the latest image.")
|
||||
const canUpdate = Boolean(updateInfo?.canApply && updateInfo?.updateAvailable && !applying && !restartPending)
|
||||
|
||||
return (
|
||||
<div className="rounded-md border bg-card/50 p-4">
|
||||
<div className="flex flex-col gap-4 sm:flex-row sm:items-start sm:justify-between">
|
||||
<div className="space-y-1.5">
|
||||
<h3 className="text-lg font-medium flex items-center gap-2">
|
||||
<DownloadCloudIcon className="h-4 w-4" />
|
||||
<Trans>App update</Trans>
|
||||
</h3>
|
||||
<p className="text-sm text-muted-foreground leading-relaxed">{message}</p>
|
||||
</div>
|
||||
<StatusBadge status={status} updateAvailable={Boolean(updateInfo?.updateAvailable)} />
|
||||
</div>
|
||||
<div className="mt-4 grid gap-2 text-sm sm:grid-cols-2">
|
||||
<UpdateMeta label="Image" value={updateInfo?.image ?? "ghcr.io/dvorinka/beszel:latest"} />
|
||||
<UpdateMeta label="Current version" value={updateInfo?.currentVersion ?? "..."} />
|
||||
<UpdateMeta label="Running digest" value={shortDigest(updateInfo?.currentDigest)} />
|
||||
<UpdateMeta label="Latest digest" value={shortDigest(updateInfo?.latestDigest)} />
|
||||
</div>
|
||||
<div className="mt-4 flex flex-col gap-2 sm:flex-row">
|
||||
<Button
|
||||
type="button"
|
||||
variant="outline"
|
||||
onClick={refreshUpdateInfo}
|
||||
disabled={checking || applying || restartPending}
|
||||
>
|
||||
{checking ? (
|
||||
<LoaderCircleIcon className="me-2 h-4 w-4 animate-spin" />
|
||||
) : (
|
||||
<RefreshCcwIcon className="me-2 h-4 w-4" />
|
||||
)}
|
||||
<Trans>Check now</Trans>
|
||||
</Button>
|
||||
<AlertDialog>
|
||||
<AlertDialogTrigger asChild>
|
||||
<Button type="button" disabled={!canUpdate}>
|
||||
{applying || restartPending ? (
|
||||
<LoaderCircleIcon className="me-2 h-4 w-4 animate-spin" />
|
||||
) : (
|
||||
<DownloadCloudIcon className="me-2 h-4 w-4" />
|
||||
)}
|
||||
{restartPending ? <Trans>Restarting</Trans> : <Trans>Update now</Trans>}
|
||||
</Button>
|
||||
</AlertDialogTrigger>
|
||||
<AlertDialogContent>
|
||||
<AlertDialogHeader>
|
||||
<AlertDialogTitle>
|
||||
<Trans>Update Beszel now?</Trans>
|
||||
</AlertDialogTitle>
|
||||
<AlertDialogDescription>
|
||||
<Trans>
|
||||
Beszel will pull ghcr.io/dvorinka/beszel:latest, recreate the running container, and restart the app.
|
||||
All signed-in users can start this action.
|
||||
</Trans>
|
||||
</AlertDialogDescription>
|
||||
</AlertDialogHeader>
|
||||
<AlertDialogFooter>
|
||||
<AlertDialogCancel>
|
||||
<Trans>Cancel</Trans>
|
||||
</AlertDialogCancel>
|
||||
<AlertDialogAction onClick={applyUpdate}>
|
||||
<Trans>Start update</Trans>
|
||||
</AlertDialogAction>
|
||||
</AlertDialogFooter>
|
||||
</AlertDialogContent>
|
||||
</AlertDialog>
|
||||
</div>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
function StatusBadge({ status, updateAvailable }: { status: string; updateAvailable: boolean }) {
|
||||
const label = updateAvailable
|
||||
? "Update available"
|
||||
: status === "up-to-date"
|
||||
? "Up to date"
|
||||
: status.replaceAll("-", " ")
|
||||
return (
|
||||
<span className="inline-flex h-7 items-center self-start rounded-md border bg-background px-2.5 text-xs font-medium capitalize text-muted-foreground">
|
||||
{label}
|
||||
</span>
|
||||
)
|
||||
}
|
||||
|
||||
function UpdateMeta({ label, value }: { label: string; value: string }) {
|
||||
return (
|
||||
<div className="min-w-0 rounded-md bg-muted/45 px-3 py-2">
|
||||
<div className="text-xs text-muted-foreground">{label}</div>
|
||||
<div className="truncate font-mono text-xs">{value}</div>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
function shortDigest(value?: string) {
|
||||
if (!value) return "unknown"
|
||||
const digest = value.includes("@") ? value.split("@").at(-1) : value
|
||||
if (!digest) return value
|
||||
return digest.length > 24 ? `${digest.slice(0, 24)}...` : digest
|
||||
}
|
||||
|
||||
async function waitForRestartAndReload() {
|
||||
await sleep(10_000)
|
||||
for (let attempt = 0; attempt < 45; attempt++) {
|
||||
try {
|
||||
const res = await fetch("/api/health", { cache: "no-store" })
|
||||
if (res.ok) {
|
||||
window.location.reload()
|
||||
return true
|
||||
}
|
||||
} catch {
|
||||
// Hub is expected to be unavailable while Docker replaces the container.
|
||||
}
|
||||
await sleep(2_000)
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
function sleep(ms: number) {
|
||||
return new Promise((resolve) => window.setTimeout(resolve, ms))
|
||||
}
|
||||
|
||||
@@ -1,12 +1,21 @@
|
||||
"use client"
|
||||
|
||||
import { useState, useEffect } from "react"
|
||||
import { useState, useEffect, useRef } from "react"
|
||||
import { useMutation, useQueryClient } from "@tanstack/react-query"
|
||||
import { zodResolver } from "@hookform/resolvers/zod"
|
||||
import { useForm } from "react-hook-form"
|
||||
import { z } from "zod"
|
||||
import { useToast } from "@/components/ui/use-toast"
|
||||
import { Button } from "@/components/ui/button"
|
||||
|
||||
// Generate slug from name
|
||||
const generateSlug = (name: string): string => {
|
||||
return name
|
||||
.toLowerCase()
|
||||
.replace(/[^a-z0-9]+/g, '-')
|
||||
.replace(/^-|-$/g, '')
|
||||
.slice(0, 50)
|
||||
}
|
||||
import {
|
||||
Dialog,
|
||||
DialogContent,
|
||||
@@ -38,8 +47,10 @@ import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"
|
||||
import {
|
||||
createStatusPage,
|
||||
updateStatusPage,
|
||||
getStatusPageUrl,
|
||||
type StatusPage,
|
||||
} from "@/lib/statuspages"
|
||||
import { ExternalLink, RefreshCw } from "lucide-react"
|
||||
|
||||
const formSchema = z.object({
|
||||
name: z.string().min(1, "Name is required"),
|
||||
@@ -162,6 +173,29 @@ export function StatusPageDialog({
|
||||
|
||||
const isPending = createMutation.isPending || updateMutation.isPending
|
||||
|
||||
// Auto-generate slug from name when creating new status page
|
||||
const lastAutoSlug = useRef<string>("")
|
||||
useEffect(() => {
|
||||
if (isEdit) return // Don't auto-generate in edit mode
|
||||
|
||||
const subscription = form.watch((value, { name: fieldName }) => {
|
||||
if (fieldName === 'name') {
|
||||
const name = value.name || ''
|
||||
const currentSlug = form.getValues('slug') || ''
|
||||
const newSlug = generateSlug(name)
|
||||
|
||||
// Only auto-generate if:
|
||||
// 1. Slug is empty, OR
|
||||
// 2. Current slug matches the last auto-generated slug (user hasn't manually edited)
|
||||
if (!currentSlug || currentSlug === lastAutoSlug.current) {
|
||||
form.setValue('slug', newSlug, { shouldValidate: true })
|
||||
lastAutoSlug.current = newSlug
|
||||
}
|
||||
}
|
||||
})
|
||||
return () => subscription.unsubscribe()
|
||||
}, [form, isEdit])
|
||||
|
||||
return (
|
||||
<Dialog open={open} onOpenChange={onOpenChange}>
|
||||
<DialogContent className="sm:max-w-[600px] max-h-[80vh] overflow-y-auto">
|
||||
@@ -203,12 +237,45 @@ export function StatusPageDialog({
|
||||
name="slug"
|
||||
render={({ field }) => (
|
||||
<FormItem>
|
||||
<FormLabel>URL Slug</FormLabel>
|
||||
<FormLabel className="flex items-center justify-between">
|
||||
<span>URL Slug</span>
|
||||
{!isEdit && form.getValues('name') && (
|
||||
<Button
|
||||
type="button"
|
||||
variant="ghost"
|
||||
size="sm"
|
||||
className="h-6 px-2 text-xs"
|
||||
onClick={() => {
|
||||
const newSlug = generateSlug(form.getValues('name') || '')
|
||||
form.setValue('slug', newSlug, { shouldValidate: true })
|
||||
lastAutoSlug.current = newSlug
|
||||
}}
|
||||
>
|
||||
<RefreshCw className="mr-1 h-3 w-3" />
|
||||
Regenerate
|
||||
</Button>
|
||||
)}
|
||||
</FormLabel>
|
||||
<FormControl>
|
||||
<Input placeholder="my-services" {...field} />
|
||||
<div className="flex items-center gap-2">
|
||||
<span className="text-sm text-muted-foreground whitespace-nowrap">/status/</span>
|
||||
<Input {...field} placeholder="my-services" className="flex-1" />
|
||||
</div>
|
||||
</FormControl>
|
||||
<FormDescription>
|
||||
The URL will be: /status/{field.value}
|
||||
<FormDescription className="flex items-center justify-between">
|
||||
<span>Full URL: {typeof window !== 'undefined' ? window.location.origin : ''}{getStatusPageUrl(field.value)}</span>
|
||||
{field.value && (
|
||||
<a
|
||||
href={getStatusPageUrl(field.value)}
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
className="text-primary hover:underline inline-flex items-center gap-1"
|
||||
onClick={(e) => e.stopPropagation()}
|
||||
>
|
||||
<ExternalLink className="h-3 w-3" />
|
||||
Preview
|
||||
</a>
|
||||
)}
|
||||
</FormDescription>
|
||||
<FormMessage />
|
||||
</FormItem>
|
||||
|
||||
@@ -25,15 +25,15 @@ import {
|
||||
getStatusPageUrl,
|
||||
type StatusPage,
|
||||
} from "@/lib/statuspages"
|
||||
import { MoreHorizontal, Plus, ExternalLink, Globe, Lock } from "lucide-react"
|
||||
import { MoreHorizontal, Plus, ExternalLink, Globe, Lock, Copy, Check, LayoutTemplate, ArrowRight } from "lucide-react"
|
||||
import { StatusPageDialog } from "./status-page-dialog"
|
||||
import { Link } from "@/components/router"
|
||||
|
||||
export function StatusPagesTable() {
|
||||
const { toast } = useToast()
|
||||
const queryClient = useQueryClient()
|
||||
const [dialogOpen, setDialogOpen] = useState(false)
|
||||
const [editingPage, setEditingPage] = useState<StatusPage | null>(null)
|
||||
const [copiedId, setCopiedId] = useState<string | null>(null)
|
||||
|
||||
const { data: pages, isLoading } = useQuery({
|
||||
queryKey: ["status-pages"],
|
||||
@@ -65,14 +65,50 @@ export function StatusPagesTable() {
|
||||
setDialogOpen(true)
|
||||
}
|
||||
|
||||
const handleDelete = (id: string) => {
|
||||
if (confirm("Are you sure you want to delete this status page?")) {
|
||||
deleteMutation.mutate(id)
|
||||
const handleDelete = (page: StatusPage) => {
|
||||
if (confirm(`Are you sure you want to delete "${page.name}"?\n\nThis will remove the status page and unlink all ${page.monitor_count} monitor(s). This action cannot be undone.`)) {
|
||||
deleteMutation.mutate(page.id)
|
||||
}
|
||||
}
|
||||
|
||||
const handleCopyUrl = async (page: StatusPage) => {
|
||||
if (!page.public) {
|
||||
toast({ title: "Status page must be public to copy URL", variant: "destructive" })
|
||||
return
|
||||
}
|
||||
const url = window.location.origin + getStatusPageUrl(page.slug)
|
||||
try {
|
||||
await navigator.clipboard.writeText(url)
|
||||
setCopiedId(page.id)
|
||||
toast({ title: "URL copied to clipboard" })
|
||||
setTimeout(() => setCopiedId(null), 2000)
|
||||
} catch {
|
||||
toast({ title: "Failed to copy URL", variant: "destructive" })
|
||||
}
|
||||
}
|
||||
|
||||
if (isLoading) {
|
||||
return <div className="p-4">Loading...</div>
|
||||
return (
|
||||
<div className="space-y-4">
|
||||
<div className="flex items-center justify-between">
|
||||
<div className="h-5 w-32 bg-muted rounded animate-pulse" />
|
||||
<div className="h-9 w-36 bg-muted rounded animate-pulse" />
|
||||
</div>
|
||||
<div className="rounded-md border">
|
||||
<div className="p-4 space-y-3">
|
||||
{[1, 2, 3].map((i) => (
|
||||
<div key={i} className="flex items-center gap-4">
|
||||
<div className="h-4 w-32 bg-muted rounded animate-pulse" />
|
||||
<div className="h-4 w-24 bg-muted rounded animate-pulse" />
|
||||
<div className="h-4 w-16 bg-muted rounded animate-pulse" />
|
||||
<div className="h-4 w-20 bg-muted rounded animate-pulse" />
|
||||
<div className="h-8 w-8 bg-muted rounded animate-pulse ml-auto" />
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
return (
|
||||
@@ -99,8 +135,22 @@ export function StatusPagesTable() {
|
||||
<TableBody>
|
||||
{pages?.length === 0 ? (
|
||||
<TableRow>
|
||||
<TableCell colSpan={5} className="text-center py-8 text-muted-foreground">
|
||||
No status pages yet. Create one to share your service status publicly.
|
||||
<TableCell colSpan={5} className="text-center py-12">
|
||||
<div className="flex flex-col items-center gap-3">
|
||||
<div className="p-3 bg-muted rounded-full">
|
||||
<LayoutTemplate className="h-6 w-6 text-muted-foreground" />
|
||||
</div>
|
||||
<div>
|
||||
<p className="font-medium text-muted-foreground">No status pages yet</p>
|
||||
<p className="text-sm text-muted-foreground mt-1">
|
||||
Create one to share your service status publicly
|
||||
</p>
|
||||
</div>
|
||||
<Button onClick={handleAdd} variant="outline" className="mt-2">
|
||||
Create Status Page
|
||||
<ArrowRight className="ml-2 h-4 w-4" />
|
||||
</Button>
|
||||
</div>
|
||||
</TableCell>
|
||||
</TableRow>
|
||||
) : (
|
||||
@@ -134,20 +184,30 @@ export function StatusPagesTable() {
|
||||
Edit
|
||||
</DropdownMenuItem>
|
||||
{page.public && (
|
||||
<DropdownMenuItem asChild>
|
||||
<a
|
||||
href={getStatusPageUrl(page.slug)}
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
className="flex items-center"
|
||||
>
|
||||
<ExternalLink className="mr-2 h-4 w-4" />
|
||||
View Public Page
|
||||
</a>
|
||||
</DropdownMenuItem>
|
||||
<>
|
||||
<DropdownMenuItem onClick={() => handleCopyUrl(page)}>
|
||||
{copiedId === page.id ? (
|
||||
<Check className="mr-2 h-4 w-4 text-green-500" />
|
||||
) : (
|
||||
<Copy className="mr-2 h-4 w-4" />
|
||||
)}
|
||||
{copiedId === page.id ? 'Copied!' : 'Copy URL'}
|
||||
</DropdownMenuItem>
|
||||
<DropdownMenuItem asChild>
|
||||
<a
|
||||
href={getStatusPageUrl(page.slug)}
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
className="flex items-center"
|
||||
>
|
||||
<ExternalLink className="mr-2 h-4 w-4" />
|
||||
View Public Page
|
||||
</a>
|
||||
</DropdownMenuItem>
|
||||
</>
|
||||
)}
|
||||
<DropdownMenuItem
|
||||
onClick={() => handleDelete(page.id)}
|
||||
onClick={() => handleDelete(page)}
|
||||
className="text-destructive"
|
||||
>
|
||||
Delete
|
||||
|
||||
@@ -189,3 +189,595 @@
|
||||
.recharts-yAxis {
|
||||
@apply tabular-nums;
|
||||
}
|
||||
|
||||
/* ============================================================================
|
||||
Public Status Page Styles - Inspired by github-statuses
|
||||
============================================================================ */
|
||||
|
||||
/* CSS Variables for Status Page - Light Mode (default) */
|
||||
.sp-page {
|
||||
--sp-bg: #f6f8fa;
|
||||
--sp-bg-top: #ffffff;
|
||||
--sp-bg-bottom: #f6f8fa;
|
||||
--sp-card: #ffffff;
|
||||
--sp-ink: #24292f;
|
||||
--sp-muted: #57606a;
|
||||
--sp-border: #d0d7de;
|
||||
--sp-accent: #0969da;
|
||||
--sp-operational: #2da44e;
|
||||
--sp-minor: #d97706;
|
||||
--sp-major: #cf222e;
|
||||
--sp-maintenance: #1f6feb;
|
||||
--sp-shadow: 0 20px 40px -30px rgba(0, 0, 0, 0.35);
|
||||
--sp-radius: 18px;
|
||||
--sp-radius-sm: 12px;
|
||||
--sp-bars-empty: #dfe4ea;
|
||||
|
||||
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
|
||||
background: linear-gradient(180deg, var(--sp-bg-top) 0%, var(--sp-bg) 55%, var(--sp-bg-bottom) 100%);
|
||||
color: var(--sp-ink);
|
||||
min-height: 100vh;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
/* Dark Mode */
|
||||
.sp-page[data-theme="dark"] {
|
||||
--sp-bg: #111827;
|
||||
--sp-bg-top: #0d1117;
|
||||
--sp-bg-bottom: #111827;
|
||||
--sp-card: #161b22;
|
||||
--sp-ink: #f0f6fc;
|
||||
--sp-muted: #9da7b3;
|
||||
--sp-border: #30363d;
|
||||
--sp-accent: #58a6ff;
|
||||
--sp-operational: #3fb950;
|
||||
--sp-minor: #d29922;
|
||||
--sp-major: #ff7b72;
|
||||
--sp-maintenance: #58a6ff;
|
||||
--sp-shadow: 0 24px 48px -32px rgba(0, 0, 0, 0.72);
|
||||
--sp-bars-empty: #30363d;
|
||||
color-scheme: dark;
|
||||
}
|
||||
|
||||
/* Grain texture overlay */
|
||||
.sp-grain {
|
||||
position: fixed;
|
||||
inset: 0;
|
||||
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120' viewBox='0 0 120 120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='1.2' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='120' height='120' filter='url(%23n)' opacity='0.03'/%3E%3C/svg%3E");
|
||||
pointer-events: none;
|
||||
mix-blend-mode: multiply;
|
||||
z-index: 0;
|
||||
}
|
||||
|
||||
.sp-page[data-theme="dark"] .sp-grain {
|
||||
opacity: 0.45;
|
||||
mix-blend-mode: screen;
|
||||
}
|
||||
|
||||
/* Header */
|
||||
.sp-header {
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
padding: 48px 24px 32px;
|
||||
max-width: 900px;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.sp-header-content {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: flex-start;
|
||||
}
|
||||
|
||||
.sp-brand {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 16px;
|
||||
}
|
||||
|
||||
.sp-logo {
|
||||
width: 76px;
|
||||
height: 76px;
|
||||
object-fit: contain;
|
||||
border-radius: var(--sp-radius-sm);
|
||||
}
|
||||
|
||||
.sp-logo-placeholder {
|
||||
width: 76px;
|
||||
height: 76px;
|
||||
border-radius: var(--sp-radius-sm);
|
||||
background: linear-gradient(135deg, var(--sp-operational), var(--sp-accent));
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.sp-logo-icon {
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
color: white;
|
||||
}
|
||||
|
||||
.sp-brand-text {
|
||||
flex: 1;
|
||||
}
|
||||
|
||||
.sp-title {
|
||||
margin: 0;
|
||||
font-size: clamp(1.8rem, 2.8vw, 2.6rem);
|
||||
font-weight: 600;
|
||||
letter-spacing: -0.02em;
|
||||
}
|
||||
|
||||
.sp-description {
|
||||
margin: 8px 0 0;
|
||||
color: var(--sp-muted);
|
||||
font-size: 1rem;
|
||||
}
|
||||
|
||||
/* Main content */
|
||||
.sp-main {
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
padding: 0 24px 64px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 28px;
|
||||
max-width: 900px;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
/* Hero Section */
|
||||
.sp-hero-section {
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.sp-hero-panel {
|
||||
background: var(--sp-card);
|
||||
border-radius: var(--sp-radius);
|
||||
padding: 28px 32px;
|
||||
border: 1px solid var(--sp-border);
|
||||
box-shadow: var(--sp-shadow);
|
||||
}
|
||||
|
||||
.sp-hero-content {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
gap: 16px;
|
||||
}
|
||||
|
||||
.sp-status-pill {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
gap: 10px;
|
||||
padding: 10px 18px;
|
||||
border-radius: 999px;
|
||||
font-weight: 600;
|
||||
font-size: 0.95rem;
|
||||
}
|
||||
|
||||
.sp-status-pulse {
|
||||
width: 10px;
|
||||
height: 10px;
|
||||
border-radius: 50%;
|
||||
box-shadow: 0 0 0 4px currentColor;
|
||||
opacity: 0.3;
|
||||
animation: sp-pulse 2s ease-in-out infinite;
|
||||
}
|
||||
|
||||
@keyframes sp-pulse {
|
||||
0%, 100% { opacity: 0.3; transform: scale(1); }
|
||||
50% { opacity: 0.6; transform: scale(1.1); }
|
||||
}
|
||||
|
||||
.sp-hero-stats {
|
||||
display: flex;
|
||||
gap: 24px;
|
||||
}
|
||||
|
||||
.sp-hero-stat {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
color: var(--sp-muted);
|
||||
}
|
||||
|
||||
.sp-hero-stat-icon {
|
||||
width: 18px;
|
||||
height: 18px;
|
||||
}
|
||||
|
||||
.sp-hero-stat-value {
|
||||
font-weight: 700;
|
||||
font-size: 1.2rem;
|
||||
color: var(--sp-ink);
|
||||
}
|
||||
|
||||
.sp-hero-stat-label {
|
||||
font-size: 0.9rem;
|
||||
}
|
||||
|
||||
/* Group Section */
|
||||
.sp-group-section {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 16px;
|
||||
}
|
||||
|
||||
.sp-group-header {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 12px;
|
||||
}
|
||||
|
||||
.sp-group-title {
|
||||
margin: 0;
|
||||
font-size: 1.1rem;
|
||||
font-weight: 600;
|
||||
color: var(--sp-muted);
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.05em;
|
||||
}
|
||||
|
||||
/* Monitors Grid */
|
||||
.sp-monitors-grid {
|
||||
display: grid;
|
||||
grid-template-columns: 1fr;
|
||||
gap: 16px;
|
||||
}
|
||||
|
||||
@media (min-width: 768px) {
|
||||
.sp-monitors-grid {
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
}
|
||||
}
|
||||
|
||||
/* Monitor Card */
|
||||
.sp-monitor-card {
|
||||
background: var(--sp-card);
|
||||
border-radius: var(--sp-radius);
|
||||
padding: 20px 24px;
|
||||
border: 1px solid var(--sp-border);
|
||||
box-shadow: 0 4px 12px -8px rgba(0, 0, 0, 0.2);
|
||||
transition: transform 0.2s ease, box-shadow 0.2s ease;
|
||||
}
|
||||
|
||||
.sp-monitor-card:hover {
|
||||
transform: translateY(-2px);
|
||||
box-shadow: 0 8px 20px -12px rgba(0, 0, 0, 0.25);
|
||||
}
|
||||
|
||||
.sp-monitor-header {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: flex-start;
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
|
||||
.sp-monitor-info {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 12px;
|
||||
}
|
||||
|
||||
.sp-monitor-icon {
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.sp-monitor-name {
|
||||
margin: 0;
|
||||
font-size: 1rem;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.sp-monitor-group {
|
||||
font-size: 0.8rem;
|
||||
color: var(--sp-muted);
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.03em;
|
||||
}
|
||||
|
||||
.sp-monitor-status {
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.sp-status-badge {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
gap: 6px;
|
||||
padding: 6px 12px;
|
||||
border-radius: 999px;
|
||||
font-size: 0.8rem;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.sp-status-dot {
|
||||
width: 8px;
|
||||
height: 8px;
|
||||
border-radius: 50%;
|
||||
}
|
||||
|
||||
/* Uptime Section */
|
||||
.sp-uptime-section {
|
||||
margin-top: 12px;
|
||||
}
|
||||
|
||||
.sp-uptime-header {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.sp-uptime-label {
|
||||
font-size: 0.8rem;
|
||||
color: var(--sp-muted);
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
.sp-uptime-value {
|
||||
font-size: 0.9rem;
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.sp-uptime-bars {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(30, minmax(0, 1fr));
|
||||
gap: 3px;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.sp-uptime-bar {
|
||||
height: 24px;
|
||||
border-radius: 4px;
|
||||
background: var(--sp-bars-empty);
|
||||
cursor: pointer;
|
||||
transition: transform 0.12s ease;
|
||||
}
|
||||
|
||||
.sp-uptime-bar:hover {
|
||||
transform: translateY(-2px);
|
||||
}
|
||||
|
||||
.sp-uptime-bar--operational {
|
||||
background: rgba(45, 164, 78, 0.85);
|
||||
}
|
||||
|
||||
.sp-uptime-bar--minor {
|
||||
background: rgba(217, 119, 6, 0.85);
|
||||
}
|
||||
|
||||
.sp-uptime-bar--major {
|
||||
background: rgba(207, 34, 46, 0.85);
|
||||
}
|
||||
|
||||
.sp-page[data-theme="dark"] .sp-uptime-bar--operational {
|
||||
background: rgba(63, 185, 80, 0.85);
|
||||
}
|
||||
|
||||
.sp-page[data-theme="dark"] .sp-uptime-bar--minor {
|
||||
background: rgba(210, 153, 34, 0.85);
|
||||
}
|
||||
|
||||
.sp-page[data-theme="dark"] .sp-uptime-bar--major {
|
||||
background: rgba(255, 123, 114, 0.85);
|
||||
}
|
||||
|
||||
.sp-uptime-axis {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
font-size: 0.7rem;
|
||||
color: var(--sp-muted);
|
||||
}
|
||||
|
||||
/* Uptime Stats */
|
||||
.sp-uptime-stats {
|
||||
display: flex;
|
||||
gap: 24px;
|
||||
margin-top: 16px;
|
||||
padding-top: 16px;
|
||||
border-top: 1px solid var(--sp-border);
|
||||
}
|
||||
|
||||
.sp-stat {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 2px;
|
||||
}
|
||||
|
||||
.sp-stat-label {
|
||||
font-size: 0.7rem;
|
||||
color: var(--sp-muted);
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.05em;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.sp-stat-value {
|
||||
font-size: 1.1rem;
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
/* Footer */
|
||||
.sp-footer {
|
||||
margin-top: 32px;
|
||||
padding-top: 24px;
|
||||
border-top: 1px solid var(--sp-border);
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.sp-footer-text {
|
||||
margin: 0;
|
||||
font-size: 0.85rem;
|
||||
color: var(--sp-muted);
|
||||
}
|
||||
|
||||
.sp-footer-text a {
|
||||
color: var(--sp-accent);
|
||||
text-decoration: none;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.sp-footer-text a:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.sp-footer-updated {
|
||||
margin: 8px 0 0;
|
||||
font-size: 0.75rem;
|
||||
color: var(--sp-muted);
|
||||
}
|
||||
|
||||
/* Loading Skeleton */
|
||||
.sp-container {
|
||||
max-width: 900px;
|
||||
margin: 0 auto;
|
||||
padding: 48px 24px;
|
||||
}
|
||||
|
||||
.sp-header-skeleton {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 16px;
|
||||
margin-bottom: 32px;
|
||||
}
|
||||
|
||||
.sp-skeleton {
|
||||
background: linear-gradient(90deg, var(--sp-border) 25%, var(--sp-bg) 50%, var(--sp-border) 75%);
|
||||
background-size: 200% 100%;
|
||||
border-radius: 8px;
|
||||
animation: sp-skeleton-loading 1.5s ease-in-out infinite;
|
||||
}
|
||||
|
||||
.sp-skeleton--logo {
|
||||
width: 76px;
|
||||
height: 76px;
|
||||
border-radius: var(--sp-radius-sm);
|
||||
}
|
||||
|
||||
.sp-skeleton--title {
|
||||
width: 300px;
|
||||
height: 32px;
|
||||
}
|
||||
|
||||
.sp-hero-skeleton {
|
||||
height: 120px;
|
||||
background: var(--sp-card);
|
||||
border-radius: var(--sp-radius);
|
||||
margin-bottom: 24px;
|
||||
border: 1px solid var(--sp-border);
|
||||
}
|
||||
|
||||
.sp-monitors-skeleton {
|
||||
display: grid;
|
||||
grid-template-columns: 1fr;
|
||||
gap: 16px;
|
||||
}
|
||||
|
||||
@media (min-width: 768px) {
|
||||
.sp-monitors-skeleton {
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
}
|
||||
}
|
||||
|
||||
.sp-monitor-skeleton {
|
||||
height: 180px;
|
||||
background: var(--sp-card);
|
||||
border-radius: var(--sp-radius);
|
||||
border: 1px solid var(--sp-border);
|
||||
}
|
||||
|
||||
@keyframes sp-skeleton-loading {
|
||||
0% { background-position: 200% 0; }
|
||||
100% { background-position: -200% 0; }
|
||||
}
|
||||
|
||||
/* Error State */
|
||||
.sp-error {
|
||||
text-align: center;
|
||||
padding: 64px 24px;
|
||||
}
|
||||
|
||||
.sp-error-icon {
|
||||
width: 48px;
|
||||
height: 48px;
|
||||
color: var(--sp-major);
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
|
||||
.sp-error h2 {
|
||||
margin: 0 0 8px;
|
||||
font-size: 1.5rem;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.sp-error p {
|
||||
margin: 0;
|
||||
color: var(--sp-muted);
|
||||
}
|
||||
|
||||
/* Refresh Indicator */
|
||||
.sp-refresh-indicator {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
padding: 8px 14px;
|
||||
border-radius: 999px;
|
||||
border: 1px solid var(--sp-border);
|
||||
background: transparent;
|
||||
color: var(--sp-muted);
|
||||
font-size: 0.85rem;
|
||||
cursor: pointer;
|
||||
transition: all 0.2s ease;
|
||||
}
|
||||
|
||||
.sp-refresh-indicator:hover:not(:disabled) {
|
||||
background: var(--sp-bg);
|
||||
border-color: var(--sp-accent);
|
||||
color: var(--sp-accent);
|
||||
}
|
||||
|
||||
.sp-refresh-indicator:disabled {
|
||||
opacity: 0.7;
|
||||
cursor: not-allowed;
|
||||
}
|
||||
|
||||
.sp-refresh-icon {
|
||||
width: 14px;
|
||||
height: 14px;
|
||||
}
|
||||
|
||||
.sp-refresh-spin {
|
||||
animation: sp-spin 1s linear infinite;
|
||||
}
|
||||
|
||||
@keyframes sp-spin {
|
||||
from { transform: rotate(0deg); }
|
||||
to { transform: rotate(360deg); }
|
||||
}
|
||||
|
||||
.sp-refresh-text {
|
||||
font-size: 0.8rem;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
/* Last Check */
|
||||
.sp-last-check {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 6px;
|
||||
margin-top: 14px;
|
||||
padding-top: 14px;
|
||||
border-top: 1px solid var(--sp-border);
|
||||
font-size: 0.75rem;
|
||||
color: var(--sp-muted);
|
||||
}
|
||||
|
||||
.sp-last-check-icon {
|
||||
width: 12px;
|
||||
height: 12px;
|
||||
}
|
||||
|
||||
@@ -151,8 +151,8 @@ msgid "Add Monitor"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "Add System"
|
||||
msgstr ""
|
||||
#~ msgid "Add System"
|
||||
#~ msgstr ""
|
||||
|
||||
#: src/components/routes/settings/notifications.tsx
|
||||
msgid "Add URL"
|
||||
@@ -203,12 +203,10 @@ msgstr "سجل التنبيهات"
|
||||
msgid "Alerts"
|
||||
msgstr "التنبيهات"
|
||||
|
||||
#. placeholder {0}: data.length
|
||||
#. placeholder {0}: stats.total
|
||||
#. placeholder {0}: statusCounts.total
|
||||
#: src/components/domains-table/domains-table.tsx
|
||||
#: src/components/monitors-table/monitors-table.tsx
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "All ({0})"
|
||||
msgstr ""
|
||||
|
||||
@@ -224,9 +222,14 @@ msgstr "جميع الحاويات"
|
||||
#: src/components/command-palette.tsx
|
||||
#: src/components/routes/settings/quiet-hours.tsx
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "All Systems"
|
||||
msgstr "جميع الأنظمة"
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "App update"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/systems-table/systems-table-columns.tsx
|
||||
msgid "Are you sure you want to delete {name}?"
|
||||
msgstr "هل أنت متأكد أنك تريد حذف {name}؟"
|
||||
@@ -338,6 +341,10 @@ msgstr "يدعم بيزيل بروتوكول OpenID Connect والعديد من
|
||||
msgid "Beszel uses <0>Shoutrrr</0> to integrate with popular notification services."
|
||||
msgstr "يستخدم بيزيل <0>Shoutrrr</0> للتكامل مع خدمات الإشعارات الشهيرة."
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Beszel will pull ghcr.io/dvorinka/beszel:latest, recreate the running container, and restart the app. All signed-in users can start this action."
|
||||
msgstr ""
|
||||
|
||||
#: src/components/add-system.tsx
|
||||
msgid "Binary"
|
||||
msgstr "ثنائي"
|
||||
@@ -385,6 +392,7 @@ msgstr "يمكن الإيقاف"
|
||||
#: src/components/domains-table/domains-table.tsx
|
||||
#: src/components/monitors-table/add-monitor-dialog.tsx
|
||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||
#: src/components/routes/settings/general.tsx
|
||||
#: src/components/routes/settings/quiet-hours.tsx
|
||||
#: src/components/systems-table/systems-table-columns.tsx
|
||||
msgid "Cancel"
|
||||
@@ -447,6 +455,10 @@ msgstr "تحقق من {email} للحصول على رابط إعادة التعي
|
||||
msgid "Check logs for more details."
|
||||
msgstr "تحقق من السجلات لمزيد من التفاصيل."
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Check now"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/routes/monitor.tsx
|
||||
msgid "Check Now"
|
||||
msgstr ""
|
||||
@@ -482,8 +494,8 @@ msgid "Click to copy"
|
||||
msgstr "انقر للنسخ"
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "Columns"
|
||||
msgstr ""
|
||||
#~ msgid "Columns"
|
||||
#~ msgstr ""
|
||||
|
||||
#: src/components/login/forgot-pass-form.tsx
|
||||
#: src/components/login/forgot-pass-form.tsx
|
||||
@@ -1750,6 +1762,10 @@ msgstr ""
|
||||
#~ msgid "Response Times"
|
||||
#~ msgstr ""
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Restarting"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/systemd-table/systemd-table.tsx
|
||||
msgid "Restarts"
|
||||
msgstr "إعادة التشغيل"
|
||||
@@ -1917,8 +1933,8 @@ msgid "SMTP settings"
|
||||
msgstr "إعدادات SMTP"
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
#~ msgid "Sort By"
|
||||
#~ msgstr "الترتيب حسب"
|
||||
msgid "Sort By"
|
||||
msgstr "الترتيب حسب"
|
||||
|
||||
#: src/components/routes/domain.tsx
|
||||
#~ msgid "SSL Certificate"
|
||||
@@ -1929,6 +1945,10 @@ msgstr "إعدادات SMTP"
|
||||
msgid "Start Time"
|
||||
msgstr "وقت البدء"
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Start update"
|
||||
msgstr ""
|
||||
|
||||
#. Context: alert state (active or resolved)
|
||||
#: src/components/alerts-history-columns.tsx
|
||||
#: src/components/routes/settings/quiet-hours.tsx
|
||||
@@ -2248,10 +2268,23 @@ msgstr "قيد التشغيل ({upSystemsLength})"
|
||||
msgid "Update"
|
||||
msgstr "تحديث"
|
||||
|
||||
#: src/components/navbar.tsx
|
||||
#: src/components/navbar.tsx
|
||||
msgid "Update available"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Update Beszel now?"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/monitors-table/add-monitor-dialog.tsx
|
||||
msgid "Update Monitor"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Update now"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/containers-table/containers-table-columns.tsx
|
||||
#: src/components/routes/system/smart-table.tsx
|
||||
#: src/components/systemd-table/systemd-table-columns.tsx
|
||||
@@ -2335,8 +2368,8 @@ msgid "View your 200 most recent alerts."
|
||||
msgstr "عرض أحدث 200 تنبيه."
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
#~ msgid "Visible Fields"
|
||||
#~ msgstr "الأعمدة الظاهرة"
|
||||
msgid "Visible Fields"
|
||||
msgstr "الأعمدة الظاهرة"
|
||||
|
||||
#: src/components/routes/domain.tsx
|
||||
#: src/components/routes/monitor.tsx
|
||||
|
||||
@@ -151,8 +151,8 @@ msgid "Add Monitor"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "Add System"
|
||||
msgstr ""
|
||||
#~ msgid "Add System"
|
||||
#~ msgstr ""
|
||||
|
||||
#: src/components/routes/settings/notifications.tsx
|
||||
msgid "Add URL"
|
||||
@@ -203,12 +203,10 @@ msgstr "История на нотификациите"
|
||||
msgid "Alerts"
|
||||
msgstr "Тревоги"
|
||||
|
||||
#. placeholder {0}: data.length
|
||||
#. placeholder {0}: stats.total
|
||||
#. placeholder {0}: statusCounts.total
|
||||
#: src/components/domains-table/domains-table.tsx
|
||||
#: src/components/monitors-table/monitors-table.tsx
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "All ({0})"
|
||||
msgstr ""
|
||||
|
||||
@@ -224,9 +222,14 @@ msgstr "Всички контейнери"
|
||||
#: src/components/command-palette.tsx
|
||||
#: src/components/routes/settings/quiet-hours.tsx
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "All Systems"
|
||||
msgstr "Всички системи"
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "App update"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/systems-table/systems-table-columns.tsx
|
||||
msgid "Are you sure you want to delete {name}?"
|
||||
msgstr "Сигурен ли си, че искаш да изтриеш {name}?"
|
||||
@@ -338,6 +341,10 @@ msgstr "Beszel поддържа OpenID Connect и много други OAuth2
|
||||
msgid "Beszel uses <0>Shoutrrr</0> to integrate with popular notification services."
|
||||
msgstr "Beszel ползва <0>Shoutrrr</0> за да се интегрира с известни услуги за уведомяване."
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Beszel will pull ghcr.io/dvorinka/beszel:latest, recreate the running container, and restart the app. All signed-in users can start this action."
|
||||
msgstr ""
|
||||
|
||||
#: src/components/add-system.tsx
|
||||
msgid "Binary"
|
||||
msgstr "Двоичен код"
|
||||
@@ -385,6 +392,7 @@ msgstr "Може да се спре"
|
||||
#: src/components/domains-table/domains-table.tsx
|
||||
#: src/components/monitors-table/add-monitor-dialog.tsx
|
||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||
#: src/components/routes/settings/general.tsx
|
||||
#: src/components/routes/settings/quiet-hours.tsx
|
||||
#: src/components/systems-table/systems-table-columns.tsx
|
||||
msgid "Cancel"
|
||||
@@ -447,6 +455,10 @@ msgstr "Провери {email} за линк за нулиране."
|
||||
msgid "Check logs for more details."
|
||||
msgstr "Провери log-овете за повече информация."
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Check now"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/routes/monitor.tsx
|
||||
msgid "Check Now"
|
||||
msgstr ""
|
||||
@@ -482,8 +494,8 @@ msgid "Click to copy"
|
||||
msgstr "Настисни за да копираш"
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "Columns"
|
||||
msgstr ""
|
||||
#~ msgid "Columns"
|
||||
#~ msgstr ""
|
||||
|
||||
#: src/components/login/forgot-pass-form.tsx
|
||||
#: src/components/login/forgot-pass-form.tsx
|
||||
@@ -1750,6 +1762,10 @@ msgstr ""
|
||||
#~ msgid "Response Times"
|
||||
#~ msgstr ""
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Restarting"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/systemd-table/systemd-table.tsx
|
||||
msgid "Restarts"
|
||||
msgstr "Рестартирания"
|
||||
@@ -1917,8 +1933,8 @@ msgid "SMTP settings"
|
||||
msgstr "Настройки за SMTP"
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
#~ msgid "Sort By"
|
||||
#~ msgstr "Сортиране по"
|
||||
msgid "Sort By"
|
||||
msgstr "Сортиране по"
|
||||
|
||||
#: src/components/routes/domain.tsx
|
||||
#~ msgid "SSL Certificate"
|
||||
@@ -1929,6 +1945,10 @@ msgstr "Настройки за SMTP"
|
||||
msgid "Start Time"
|
||||
msgstr "Начален час"
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Start update"
|
||||
msgstr ""
|
||||
|
||||
#. Context: alert state (active or resolved)
|
||||
#: src/components/alerts-history-columns.tsx
|
||||
#: src/components/routes/settings/quiet-hours.tsx
|
||||
@@ -2248,10 +2268,23 @@ msgstr "Нагоре ({upSystemsLength})"
|
||||
msgid "Update"
|
||||
msgstr "Актуализирай"
|
||||
|
||||
#: src/components/navbar.tsx
|
||||
#: src/components/navbar.tsx
|
||||
msgid "Update available"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Update Beszel now?"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/monitors-table/add-monitor-dialog.tsx
|
||||
msgid "Update Monitor"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Update now"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/containers-table/containers-table-columns.tsx
|
||||
#: src/components/routes/system/smart-table.tsx
|
||||
#: src/components/systemd-table/systemd-table-columns.tsx
|
||||
@@ -2335,8 +2368,8 @@ msgid "View your 200 most recent alerts."
|
||||
msgstr "Прегледайте последните си 200 сигнала."
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
#~ msgid "Visible Fields"
|
||||
#~ msgstr "Видими полета"
|
||||
msgid "Visible Fields"
|
||||
msgstr "Видими полета"
|
||||
|
||||
#: src/components/routes/domain.tsx
|
||||
#: src/components/routes/monitor.tsx
|
||||
|
||||
@@ -151,8 +151,8 @@ msgid "Add Monitor"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "Add System"
|
||||
msgstr ""
|
||||
#~ msgid "Add System"
|
||||
#~ msgstr ""
|
||||
|
||||
#: src/components/routes/settings/notifications.tsx
|
||||
msgid "Add URL"
|
||||
@@ -203,12 +203,10 @@ msgstr "Historie upozornění"
|
||||
msgid "Alerts"
|
||||
msgstr "Výstrahy"
|
||||
|
||||
#. placeholder {0}: data.length
|
||||
#. placeholder {0}: stats.total
|
||||
#. placeholder {0}: statusCounts.total
|
||||
#: src/components/domains-table/domains-table.tsx
|
||||
#: src/components/monitors-table/monitors-table.tsx
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "All ({0})"
|
||||
msgstr ""
|
||||
|
||||
@@ -224,9 +222,14 @@ msgstr "Všechny kontejnery"
|
||||
#: src/components/command-palette.tsx
|
||||
#: src/components/routes/settings/quiet-hours.tsx
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "All Systems"
|
||||
msgstr "Všechny systémy"
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "App update"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/systems-table/systems-table-columns.tsx
|
||||
msgid "Are you sure you want to delete {name}?"
|
||||
msgstr "Opravdu chcete odstranit {name}?"
|
||||
@@ -338,6 +341,10 @@ msgstr "Beszel podporuje OpenID Connect a mnoho poskytovatelů OAuth2 ověřová
|
||||
msgid "Beszel uses <0>Shoutrrr</0> to integrate with popular notification services."
|
||||
msgstr "Beszel používá <0>Shoutrrr</0> k integraci s populárními notifikačními službami."
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Beszel will pull ghcr.io/dvorinka/beszel:latest, recreate the running container, and restart the app. All signed-in users can start this action."
|
||||
msgstr ""
|
||||
|
||||
#: src/components/add-system.tsx
|
||||
msgid "Binary"
|
||||
msgstr "Binární"
|
||||
@@ -385,6 +392,7 @@ msgstr "Může zastavit"
|
||||
#: src/components/domains-table/domains-table.tsx
|
||||
#: src/components/monitors-table/add-monitor-dialog.tsx
|
||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||
#: src/components/routes/settings/general.tsx
|
||||
#: src/components/routes/settings/quiet-hours.tsx
|
||||
#: src/components/systems-table/systems-table-columns.tsx
|
||||
msgid "Cancel"
|
||||
@@ -447,6 +455,10 @@ msgstr "Zkontrolujte {email} pro odkaz na obnovení."
|
||||
msgid "Check logs for more details."
|
||||
msgstr "Pro více informací zkontrolujte logy."
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Check now"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/routes/monitor.tsx
|
||||
msgid "Check Now"
|
||||
msgstr ""
|
||||
@@ -482,8 +494,8 @@ msgid "Click to copy"
|
||||
msgstr "Klikněte pro zkopírování"
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "Columns"
|
||||
msgstr ""
|
||||
#~ msgid "Columns"
|
||||
#~ msgstr ""
|
||||
|
||||
#: src/components/login/forgot-pass-form.tsx
|
||||
#: src/components/login/forgot-pass-form.tsx
|
||||
@@ -1750,6 +1762,10 @@ msgstr ""
|
||||
#~ msgid "Response Times"
|
||||
#~ msgstr ""
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Restarting"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/systemd-table/systemd-table.tsx
|
||||
msgid "Restarts"
|
||||
msgstr "Restarty"
|
||||
@@ -1917,8 +1933,8 @@ msgid "SMTP settings"
|
||||
msgstr "Nastavení SMTP"
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
#~ msgid "Sort By"
|
||||
#~ msgstr "Seřadit podle"
|
||||
msgid "Sort By"
|
||||
msgstr "Seřadit podle"
|
||||
|
||||
#: src/components/routes/domain.tsx
|
||||
#~ msgid "SSL Certificate"
|
||||
@@ -1929,6 +1945,10 @@ msgstr "Nastavení SMTP"
|
||||
msgid "Start Time"
|
||||
msgstr "Čas začátku"
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Start update"
|
||||
msgstr ""
|
||||
|
||||
#. Context: alert state (active or resolved)
|
||||
#: src/components/alerts-history-columns.tsx
|
||||
#: src/components/routes/settings/quiet-hours.tsx
|
||||
@@ -2248,10 +2268,23 @@ msgstr "Funkční ({upSystemsLength})"
|
||||
msgid "Update"
|
||||
msgstr "Aktualizovat"
|
||||
|
||||
#: src/components/navbar.tsx
|
||||
#: src/components/navbar.tsx
|
||||
msgid "Update available"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Update Beszel now?"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/monitors-table/add-monitor-dialog.tsx
|
||||
msgid "Update Monitor"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Update now"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/containers-table/containers-table-columns.tsx
|
||||
#: src/components/routes/system/smart-table.tsx
|
||||
#: src/components/systemd-table/systemd-table-columns.tsx
|
||||
@@ -2335,8 +2368,8 @@ msgid "View your 200 most recent alerts."
|
||||
msgstr "Zobrazit vašich 200 nejnovějších upozornění."
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
#~ msgid "Visible Fields"
|
||||
#~ msgstr "Viditelné sloupce"
|
||||
msgid "Visible Fields"
|
||||
msgstr "Viditelné sloupce"
|
||||
|
||||
#: src/components/routes/domain.tsx
|
||||
#: src/components/routes/monitor.tsx
|
||||
|
||||
@@ -151,8 +151,8 @@ msgid "Add Monitor"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "Add System"
|
||||
msgstr ""
|
||||
#~ msgid "Add System"
|
||||
#~ msgstr ""
|
||||
|
||||
#: src/components/routes/settings/notifications.tsx
|
||||
msgid "Add URL"
|
||||
@@ -203,12 +203,10 @@ msgstr "Advarselshistorik"
|
||||
msgid "Alerts"
|
||||
msgstr "Alarmer"
|
||||
|
||||
#. placeholder {0}: data.length
|
||||
#. placeholder {0}: stats.total
|
||||
#. placeholder {0}: statusCounts.total
|
||||
#: src/components/domains-table/domains-table.tsx
|
||||
#: src/components/monitors-table/monitors-table.tsx
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "All ({0})"
|
||||
msgstr ""
|
||||
|
||||
@@ -224,9 +222,14 @@ msgstr "Alle containere"
|
||||
#: src/components/command-palette.tsx
|
||||
#: src/components/routes/settings/quiet-hours.tsx
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "All Systems"
|
||||
msgstr "Alle systemer"
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "App update"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/systems-table/systems-table-columns.tsx
|
||||
msgid "Are you sure you want to delete {name}?"
|
||||
msgstr "Er du sikker på, at du vil slette {name}?"
|
||||
@@ -338,6 +341,10 @@ msgstr "Beszel understøtter OpenID Connect og mange OAuth2 godkendelsesudbydere
|
||||
msgid "Beszel uses <0>Shoutrrr</0> to integrate with popular notification services."
|
||||
msgstr "Beszel bruger <0>Shoutrrr</0> til at integrere med populære notifikationstjenester."
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Beszel will pull ghcr.io/dvorinka/beszel:latest, recreate the running container, and restart the app. All signed-in users can start this action."
|
||||
msgstr ""
|
||||
|
||||
#: src/components/add-system.tsx
|
||||
msgid "Binary"
|
||||
msgstr "Binær"
|
||||
@@ -385,6 +392,7 @@ msgstr "Kan stoppe"
|
||||
#: src/components/domains-table/domains-table.tsx
|
||||
#: src/components/monitors-table/add-monitor-dialog.tsx
|
||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||
#: src/components/routes/settings/general.tsx
|
||||
#: src/components/routes/settings/quiet-hours.tsx
|
||||
#: src/components/systems-table/systems-table-columns.tsx
|
||||
msgid "Cancel"
|
||||
@@ -447,6 +455,10 @@ msgstr "Tjek {email} for et nulstillingslink."
|
||||
msgid "Check logs for more details."
|
||||
msgstr "Tjek logfiler for flere detaljer."
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Check now"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/routes/monitor.tsx
|
||||
msgid "Check Now"
|
||||
msgstr ""
|
||||
@@ -482,8 +494,8 @@ msgid "Click to copy"
|
||||
msgstr "Klik for at kopiere"
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "Columns"
|
||||
msgstr ""
|
||||
#~ msgid "Columns"
|
||||
#~ msgstr ""
|
||||
|
||||
#: src/components/login/forgot-pass-form.tsx
|
||||
#: src/components/login/forgot-pass-form.tsx
|
||||
@@ -1750,6 +1762,10 @@ msgstr ""
|
||||
#~ msgid "Response Times"
|
||||
#~ msgstr ""
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Restarting"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/systemd-table/systemd-table.tsx
|
||||
msgid "Restarts"
|
||||
msgstr "Genstarter"
|
||||
@@ -1917,8 +1933,8 @@ msgid "SMTP settings"
|
||||
msgstr "SMTP-indstillinger"
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
#~ msgid "Sort By"
|
||||
#~ msgstr "Sorter efter"
|
||||
msgid "Sort By"
|
||||
msgstr "Sorter efter"
|
||||
|
||||
#: src/components/routes/domain.tsx
|
||||
#~ msgid "SSL Certificate"
|
||||
@@ -1929,6 +1945,10 @@ msgstr "SMTP-indstillinger"
|
||||
msgid "Start Time"
|
||||
msgstr "Starttid"
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Start update"
|
||||
msgstr ""
|
||||
|
||||
#. Context: alert state (active or resolved)
|
||||
#: src/components/alerts-history-columns.tsx
|
||||
#: src/components/routes/settings/quiet-hours.tsx
|
||||
@@ -2248,10 +2268,23 @@ msgstr "Oppe ({upSystemsLength})"
|
||||
msgid "Update"
|
||||
msgstr "Opdater"
|
||||
|
||||
#: src/components/navbar.tsx
|
||||
#: src/components/navbar.tsx
|
||||
msgid "Update available"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Update Beszel now?"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/monitors-table/add-monitor-dialog.tsx
|
||||
msgid "Update Monitor"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Update now"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/containers-table/containers-table-columns.tsx
|
||||
#: src/components/routes/system/smart-table.tsx
|
||||
#: src/components/systemd-table/systemd-table-columns.tsx
|
||||
@@ -2335,8 +2368,8 @@ msgid "View your 200 most recent alerts."
|
||||
msgstr "Se dine 200 nyeste alarmer."
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
#~ msgid "Visible Fields"
|
||||
#~ msgstr "Synlige felter"
|
||||
msgid "Visible Fields"
|
||||
msgstr "Synlige felter"
|
||||
|
||||
#: src/components/routes/domain.tsx
|
||||
#: src/components/routes/monitor.tsx
|
||||
|
||||
@@ -151,8 +151,8 @@ msgid "Add Monitor"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "Add System"
|
||||
msgstr ""
|
||||
#~ msgid "Add System"
|
||||
#~ msgstr ""
|
||||
|
||||
#: src/components/routes/settings/notifications.tsx
|
||||
msgid "Add URL"
|
||||
@@ -203,12 +203,10 @@ msgstr "Warnungsverlauf"
|
||||
msgid "Alerts"
|
||||
msgstr "Warnungen"
|
||||
|
||||
#. placeholder {0}: data.length
|
||||
#. placeholder {0}: stats.total
|
||||
#. placeholder {0}: statusCounts.total
|
||||
#: src/components/domains-table/domains-table.tsx
|
||||
#: src/components/monitors-table/monitors-table.tsx
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "All ({0})"
|
||||
msgstr ""
|
||||
|
||||
@@ -224,9 +222,14 @@ msgstr "Alle Container"
|
||||
#: src/components/command-palette.tsx
|
||||
#: src/components/routes/settings/quiet-hours.tsx
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "All Systems"
|
||||
msgstr "Alle Systeme"
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "App update"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/systems-table/systems-table-columns.tsx
|
||||
msgid "Are you sure you want to delete {name}?"
|
||||
msgstr "Möchtest du {name} wirklich löschen?"
|
||||
@@ -338,6 +341,10 @@ msgstr "Beszel unterstützt OpenID Connect und viele OAuth2-Authentifizierungsan
|
||||
msgid "Beszel uses <0>Shoutrrr</0> to integrate with popular notification services."
|
||||
msgstr "Beszel verwendet <0>Shoutrrr</0>, um sich mit beliebten Benachrichtigungsdiensten zu integrieren."
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Beszel will pull ghcr.io/dvorinka/beszel:latest, recreate the running container, and restart the app. All signed-in users can start this action."
|
||||
msgstr ""
|
||||
|
||||
#: src/components/add-system.tsx
|
||||
msgid "Binary"
|
||||
msgstr "Binär"
|
||||
@@ -385,6 +392,7 @@ msgstr "Kann stoppen"
|
||||
#: src/components/domains-table/domains-table.tsx
|
||||
#: src/components/monitors-table/add-monitor-dialog.tsx
|
||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||
#: src/components/routes/settings/general.tsx
|
||||
#: src/components/routes/settings/quiet-hours.tsx
|
||||
#: src/components/systems-table/systems-table-columns.tsx
|
||||
msgid "Cancel"
|
||||
@@ -447,6 +455,10 @@ msgstr "Überprüfe {email} auf einen Link zum Zurücksetzen."
|
||||
msgid "Check logs for more details."
|
||||
msgstr "Überprüfe die Protokolle für weitere Details."
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Check now"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/routes/monitor.tsx
|
||||
msgid "Check Now"
|
||||
msgstr ""
|
||||
@@ -482,8 +494,8 @@ msgid "Click to copy"
|
||||
msgstr "Zum Kopieren klicken"
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "Columns"
|
||||
msgstr ""
|
||||
#~ msgid "Columns"
|
||||
#~ msgstr ""
|
||||
|
||||
#: src/components/login/forgot-pass-form.tsx
|
||||
#: src/components/login/forgot-pass-form.tsx
|
||||
@@ -1750,6 +1762,10 @@ msgstr ""
|
||||
#~ msgid "Response Times"
|
||||
#~ msgstr ""
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Restarting"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/systemd-table/systemd-table.tsx
|
||||
msgid "Restarts"
|
||||
msgstr "Neustarts"
|
||||
@@ -1917,8 +1933,8 @@ msgid "SMTP settings"
|
||||
msgstr "SMTP-Einstellungen"
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
#~ msgid "Sort By"
|
||||
#~ msgstr "Sortieren nach"
|
||||
msgid "Sort By"
|
||||
msgstr "Sortieren nach"
|
||||
|
||||
#: src/components/routes/domain.tsx
|
||||
#~ msgid "SSL Certificate"
|
||||
@@ -1929,6 +1945,10 @@ msgstr "SMTP-Einstellungen"
|
||||
msgid "Start Time"
|
||||
msgstr "Startzeit"
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Start update"
|
||||
msgstr ""
|
||||
|
||||
#. Context: alert state (active or resolved)
|
||||
#: src/components/alerts-history-columns.tsx
|
||||
#: src/components/routes/settings/quiet-hours.tsx
|
||||
@@ -2248,10 +2268,23 @@ msgstr "Aktiv ({upSystemsLength})"
|
||||
msgid "Update"
|
||||
msgstr "Aktualisieren"
|
||||
|
||||
#: src/components/navbar.tsx
|
||||
#: src/components/navbar.tsx
|
||||
msgid "Update available"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Update Beszel now?"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/monitors-table/add-monitor-dialog.tsx
|
||||
msgid "Update Monitor"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Update now"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/containers-table/containers-table-columns.tsx
|
||||
#: src/components/routes/system/smart-table.tsx
|
||||
#: src/components/systemd-table/systemd-table-columns.tsx
|
||||
@@ -2335,8 +2368,8 @@ msgid "View your 200 most recent alerts."
|
||||
msgstr "Sieh dir die neusten 200 Alarme an."
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
#~ msgid "Visible Fields"
|
||||
#~ msgstr "Sichtbare Spalten"
|
||||
msgid "Visible Fields"
|
||||
msgstr "Sichtbare Spalten"
|
||||
|
||||
#: src/components/routes/domain.tsx
|
||||
#: src/components/routes/monitor.tsx
|
||||
|
||||
@@ -146,8 +146,8 @@ msgid "Add Monitor"
|
||||
msgstr "Add Monitor"
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "Add System"
|
||||
msgstr "Add System"
|
||||
#~ msgid "Add System"
|
||||
#~ msgstr "Add System"
|
||||
|
||||
#: src/components/routes/settings/notifications.tsx
|
||||
msgid "Add URL"
|
||||
@@ -198,12 +198,10 @@ msgstr "Alert History"
|
||||
msgid "Alerts"
|
||||
msgstr "Alerts"
|
||||
|
||||
#. placeholder {0}: data.length
|
||||
#. placeholder {0}: stats.total
|
||||
#. placeholder {0}: statusCounts.total
|
||||
#: src/components/domains-table/domains-table.tsx
|
||||
#: src/components/monitors-table/monitors-table.tsx
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "All ({0})"
|
||||
msgstr "All ({0})"
|
||||
|
||||
@@ -219,9 +217,14 @@ msgstr "All Containers"
|
||||
#: src/components/command-palette.tsx
|
||||
#: src/components/routes/settings/quiet-hours.tsx
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "All Systems"
|
||||
msgstr "All Systems"
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "App update"
|
||||
msgstr "App update"
|
||||
|
||||
#: src/components/systems-table/systems-table-columns.tsx
|
||||
msgid "Are you sure you want to delete {name}?"
|
||||
msgstr "Are you sure you want to delete {name}?"
|
||||
@@ -333,6 +336,10 @@ msgstr "Beszel supports OpenID Connect and many OAuth2 authentication providers.
|
||||
msgid "Beszel uses <0>Shoutrrr</0> to integrate with popular notification services."
|
||||
msgstr "Beszel uses <0>Shoutrrr</0> to integrate with popular notification services."
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Beszel will pull ghcr.io/dvorinka/beszel:latest, recreate the running container, and restart the app. All signed-in users can start this action."
|
||||
msgstr "Beszel will pull ghcr.io/dvorinka/beszel:latest, recreate the running container, and restart the app. All signed-in users can start this action."
|
||||
|
||||
#: src/components/add-system.tsx
|
||||
msgid "Binary"
|
||||
msgstr "Binary"
|
||||
@@ -380,6 +387,7 @@ msgstr "Can stop"
|
||||
#: src/components/domains-table/domains-table.tsx
|
||||
#: src/components/monitors-table/add-monitor-dialog.tsx
|
||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||
#: src/components/routes/settings/general.tsx
|
||||
#: src/components/routes/settings/quiet-hours.tsx
|
||||
#: src/components/systems-table/systems-table-columns.tsx
|
||||
msgid "Cancel"
|
||||
@@ -442,6 +450,10 @@ msgstr "Check {email} for a reset link."
|
||||
msgid "Check logs for more details."
|
||||
msgstr "Check logs for more details."
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Check now"
|
||||
msgstr "Check now"
|
||||
|
||||
#: src/components/routes/monitor.tsx
|
||||
msgid "Check Now"
|
||||
msgstr "Check Now"
|
||||
@@ -477,8 +489,8 @@ msgid "Click to copy"
|
||||
msgstr "Click to copy"
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "Columns"
|
||||
msgstr "Columns"
|
||||
#~ msgid "Columns"
|
||||
#~ msgstr "Columns"
|
||||
|
||||
#: src/components/login/forgot-pass-form.tsx
|
||||
#: src/components/login/forgot-pass-form.tsx
|
||||
@@ -1745,6 +1757,10 @@ msgstr "Response"
|
||||
#~ msgid "Response Times"
|
||||
#~ msgstr "Response Times"
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Restarting"
|
||||
msgstr "Restarting"
|
||||
|
||||
#: src/components/systemd-table/systemd-table.tsx
|
||||
msgid "Restarts"
|
||||
msgstr "Restarts"
|
||||
@@ -1912,8 +1928,8 @@ msgid "SMTP settings"
|
||||
msgstr "SMTP settings"
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
#~ msgid "Sort By"
|
||||
#~ msgstr "Sort By"
|
||||
msgid "Sort By"
|
||||
msgstr "Sort By"
|
||||
|
||||
#: src/components/routes/domain.tsx
|
||||
#~ msgid "SSL Certificate"
|
||||
@@ -1924,6 +1940,10 @@ msgstr "SMTP settings"
|
||||
msgid "Start Time"
|
||||
msgstr "Start Time"
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Start update"
|
||||
msgstr "Start update"
|
||||
|
||||
#. Context: alert state (active or resolved)
|
||||
#: src/components/alerts-history-columns.tsx
|
||||
#: src/components/routes/settings/quiet-hours.tsx
|
||||
@@ -2243,10 +2263,23 @@ msgstr "Up ({upSystemsLength})"
|
||||
msgid "Update"
|
||||
msgstr "Update"
|
||||
|
||||
#: src/components/navbar.tsx
|
||||
#: src/components/navbar.tsx
|
||||
msgid "Update available"
|
||||
msgstr "Update available"
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Update Beszel now?"
|
||||
msgstr "Update Beszel now?"
|
||||
|
||||
#: src/components/monitors-table/add-monitor-dialog.tsx
|
||||
msgid "Update Monitor"
|
||||
msgstr "Update Monitor"
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Update now"
|
||||
msgstr "Update now"
|
||||
|
||||
#: src/components/containers-table/containers-table-columns.tsx
|
||||
#: src/components/routes/system/smart-table.tsx
|
||||
#: src/components/systemd-table/systemd-table-columns.tsx
|
||||
@@ -2330,8 +2363,8 @@ msgid "View your 200 most recent alerts."
|
||||
msgstr "View your 200 most recent alerts."
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
#~ msgid "Visible Fields"
|
||||
#~ msgstr "Visible Fields"
|
||||
msgid "Visible Fields"
|
||||
msgstr "Visible Fields"
|
||||
|
||||
#: src/components/routes/domain.tsx
|
||||
#: src/components/routes/monitor.tsx
|
||||
|
||||
@@ -151,8 +151,8 @@ msgid "Add Monitor"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "Add System"
|
||||
msgstr ""
|
||||
#~ msgid "Add System"
|
||||
#~ msgstr ""
|
||||
|
||||
#: src/components/routes/settings/notifications.tsx
|
||||
msgid "Add URL"
|
||||
@@ -203,12 +203,10 @@ msgstr "Historial de alertas"
|
||||
msgid "Alerts"
|
||||
msgstr "Alertas"
|
||||
|
||||
#. placeholder {0}: data.length
|
||||
#. placeholder {0}: stats.total
|
||||
#. placeholder {0}: statusCounts.total
|
||||
#: src/components/domains-table/domains-table.tsx
|
||||
#: src/components/monitors-table/monitors-table.tsx
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "All ({0})"
|
||||
msgstr ""
|
||||
|
||||
@@ -224,9 +222,14 @@ msgstr "Todos los contenedores"
|
||||
#: src/components/command-palette.tsx
|
||||
#: src/components/routes/settings/quiet-hours.tsx
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "All Systems"
|
||||
msgstr "Todos los sistemas"
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "App update"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/systems-table/systems-table-columns.tsx
|
||||
msgid "Are you sure you want to delete {name}?"
|
||||
msgstr "¿Estás seguro de que deseas eliminar {name}?"
|
||||
@@ -338,6 +341,10 @@ msgstr "Beszel admite OpenID Connect y muchos proveedores de autenticación OAut
|
||||
msgid "Beszel uses <0>Shoutrrr</0> to integrate with popular notification services."
|
||||
msgstr "Beszel utiliza <0>Shoutrrr</0> para integrarse con servicios populares de notificación."
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Beszel will pull ghcr.io/dvorinka/beszel:latest, recreate the running container, and restart the app. All signed-in users can start this action."
|
||||
msgstr ""
|
||||
|
||||
#: src/components/add-system.tsx
|
||||
msgid "Binary"
|
||||
msgstr "Binario"
|
||||
@@ -385,6 +392,7 @@ msgstr "Puede detenerse"
|
||||
#: src/components/domains-table/domains-table.tsx
|
||||
#: src/components/monitors-table/add-monitor-dialog.tsx
|
||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||
#: src/components/routes/settings/general.tsx
|
||||
#: src/components/routes/settings/quiet-hours.tsx
|
||||
#: src/components/systems-table/systems-table-columns.tsx
|
||||
msgid "Cancel"
|
||||
@@ -447,6 +455,10 @@ msgstr "Revisa {email} para un enlace de restablecimiento."
|
||||
msgid "Check logs for more details."
|
||||
msgstr "Revisa los registros para más detalles."
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Check now"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/routes/monitor.tsx
|
||||
msgid "Check Now"
|
||||
msgstr ""
|
||||
@@ -482,8 +494,8 @@ msgid "Click to copy"
|
||||
msgstr "Haz clic para copiar"
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "Columns"
|
||||
msgstr ""
|
||||
#~ msgid "Columns"
|
||||
#~ msgstr ""
|
||||
|
||||
#: src/components/login/forgot-pass-form.tsx
|
||||
#: src/components/login/forgot-pass-form.tsx
|
||||
@@ -1750,6 +1762,10 @@ msgstr ""
|
||||
#~ msgid "Response Times"
|
||||
#~ msgstr ""
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Restarting"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/systemd-table/systemd-table.tsx
|
||||
msgid "Restarts"
|
||||
msgstr "Reinicios"
|
||||
@@ -1917,8 +1933,8 @@ msgid "SMTP settings"
|
||||
msgstr "Configuración SMTP"
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
#~ msgid "Sort By"
|
||||
#~ msgstr "Ordenar por"
|
||||
msgid "Sort By"
|
||||
msgstr "Ordenar por"
|
||||
|
||||
#: src/components/routes/domain.tsx
|
||||
#~ msgid "SSL Certificate"
|
||||
@@ -1929,6 +1945,10 @@ msgstr "Configuración SMTP"
|
||||
msgid "Start Time"
|
||||
msgstr "Hora de inicio"
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Start update"
|
||||
msgstr ""
|
||||
|
||||
#. Context: alert state (active or resolved)
|
||||
#: src/components/alerts-history-columns.tsx
|
||||
#: src/components/routes/settings/quiet-hours.tsx
|
||||
@@ -2248,10 +2268,23 @@ msgstr "Activo ({upSystemsLength})"
|
||||
msgid "Update"
|
||||
msgstr "Actualizar"
|
||||
|
||||
#: src/components/navbar.tsx
|
||||
#: src/components/navbar.tsx
|
||||
msgid "Update available"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Update Beszel now?"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/monitors-table/add-monitor-dialog.tsx
|
||||
msgid "Update Monitor"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Update now"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/containers-table/containers-table-columns.tsx
|
||||
#: src/components/routes/system/smart-table.tsx
|
||||
#: src/components/systemd-table/systemd-table-columns.tsx
|
||||
@@ -2335,8 +2368,8 @@ msgid "View your 200 most recent alerts."
|
||||
msgstr "Ver tus 200 alertas más recientes."
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
#~ msgid "Visible Fields"
|
||||
#~ msgstr "Columnas visibles"
|
||||
msgid "Visible Fields"
|
||||
msgstr "Columnas visibles"
|
||||
|
||||
#: src/components/routes/domain.tsx
|
||||
#: src/components/routes/monitor.tsx
|
||||
|
||||
@@ -151,8 +151,8 @@ msgid "Add Monitor"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "Add System"
|
||||
msgstr ""
|
||||
#~ msgid "Add System"
|
||||
#~ msgstr ""
|
||||
|
||||
#: src/components/routes/settings/notifications.tsx
|
||||
msgid "Add URL"
|
||||
@@ -203,12 +203,10 @@ msgstr "تاریخچه هشدارها"
|
||||
msgid "Alerts"
|
||||
msgstr "هشدارها"
|
||||
|
||||
#. placeholder {0}: data.length
|
||||
#. placeholder {0}: stats.total
|
||||
#. placeholder {0}: statusCounts.total
|
||||
#: src/components/domains-table/domains-table.tsx
|
||||
#: src/components/monitors-table/monitors-table.tsx
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "All ({0})"
|
||||
msgstr ""
|
||||
|
||||
@@ -224,9 +222,14 @@ msgstr "همه کانتینرها"
|
||||
#: src/components/command-palette.tsx
|
||||
#: src/components/routes/settings/quiet-hours.tsx
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "All Systems"
|
||||
msgstr "همه سیستمها"
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "App update"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/systems-table/systems-table-columns.tsx
|
||||
msgid "Are you sure you want to delete {name}?"
|
||||
msgstr "آیا مطمئن هستید که میخواهید {name} را حذف کنید؟"
|
||||
@@ -338,6 +341,10 @@ msgstr "بِزل از OpenID Connect و بسیاری از ارائهدهند
|
||||
msgid "Beszel uses <0>Shoutrrr</0> to integrate with popular notification services."
|
||||
msgstr "بِزل از <0>Shoutrrr</0> برای ادغام با سرویسهای اطلاعرسانی محبوب استفاده میکند."
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Beszel will pull ghcr.io/dvorinka/beszel:latest, recreate the running container, and restart the app. All signed-in users can start this action."
|
||||
msgstr ""
|
||||
|
||||
#: src/components/add-system.tsx
|
||||
msgid "Binary"
|
||||
msgstr "دودویی"
|
||||
@@ -385,6 +392,7 @@ msgstr "میتواند متوقف شود"
|
||||
#: src/components/domains-table/domains-table.tsx
|
||||
#: src/components/monitors-table/add-monitor-dialog.tsx
|
||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||
#: src/components/routes/settings/general.tsx
|
||||
#: src/components/routes/settings/quiet-hours.tsx
|
||||
#: src/components/systems-table/systems-table-columns.tsx
|
||||
msgid "Cancel"
|
||||
@@ -447,6 +455,10 @@ msgstr "ایمیل {email} خود را برای لینک بازنشانی برر
|
||||
msgid "Check logs for more details."
|
||||
msgstr "برای جزئیات بیشتر، لاگها را بررسی کنید."
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Check now"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/routes/monitor.tsx
|
||||
msgid "Check Now"
|
||||
msgstr ""
|
||||
@@ -482,8 +494,8 @@ msgid "Click to copy"
|
||||
msgstr "برای کپی کردن کلیک کنید"
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "Columns"
|
||||
msgstr ""
|
||||
#~ msgid "Columns"
|
||||
#~ msgstr ""
|
||||
|
||||
#: src/components/login/forgot-pass-form.tsx
|
||||
#: src/components/login/forgot-pass-form.tsx
|
||||
@@ -1750,6 +1762,10 @@ msgstr ""
|
||||
#~ msgid "Response Times"
|
||||
#~ msgstr ""
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Restarting"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/systemd-table/systemd-table.tsx
|
||||
msgid "Restarts"
|
||||
msgstr "راهاندازی مجدد"
|
||||
@@ -1917,8 +1933,8 @@ msgid "SMTP settings"
|
||||
msgstr "تنظیمات SMTP"
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
#~ msgid "Sort By"
|
||||
#~ msgstr "مرتبسازی بر اساس"
|
||||
msgid "Sort By"
|
||||
msgstr "مرتبسازی بر اساس"
|
||||
|
||||
#: src/components/routes/domain.tsx
|
||||
#~ msgid "SSL Certificate"
|
||||
@@ -1929,6 +1945,10 @@ msgstr "تنظیمات SMTP"
|
||||
msgid "Start Time"
|
||||
msgstr "زمان شروع"
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Start update"
|
||||
msgstr ""
|
||||
|
||||
#. Context: alert state (active or resolved)
|
||||
#: src/components/alerts-history-columns.tsx
|
||||
#: src/components/routes/settings/quiet-hours.tsx
|
||||
@@ -2248,10 +2268,23 @@ msgstr "فعال ({upSystemsLength})"
|
||||
msgid "Update"
|
||||
msgstr "بهروزرسانی"
|
||||
|
||||
#: src/components/navbar.tsx
|
||||
#: src/components/navbar.tsx
|
||||
msgid "Update available"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Update Beszel now?"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/monitors-table/add-monitor-dialog.tsx
|
||||
msgid "Update Monitor"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Update now"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/containers-table/containers-table-columns.tsx
|
||||
#: src/components/routes/system/smart-table.tsx
|
||||
#: src/components/systemd-table/systemd-table-columns.tsx
|
||||
@@ -2335,8 +2368,8 @@ msgid "View your 200 most recent alerts."
|
||||
msgstr "۲۰۰ هشدار اخیر خود را مشاهده کنید."
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
#~ msgid "Visible Fields"
|
||||
#~ msgstr "فیلدهای قابل مشاهده"
|
||||
msgid "Visible Fields"
|
||||
msgstr "فیلدهای قابل مشاهده"
|
||||
|
||||
#: src/components/routes/domain.tsx
|
||||
#: src/components/routes/monitor.tsx
|
||||
|
||||
@@ -151,8 +151,8 @@ msgid "Add Monitor"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "Add System"
|
||||
msgstr ""
|
||||
#~ msgid "Add System"
|
||||
#~ msgstr ""
|
||||
|
||||
#: src/components/routes/settings/notifications.tsx
|
||||
msgid "Add URL"
|
||||
@@ -203,12 +203,10 @@ msgstr "Historique des alertes"
|
||||
msgid "Alerts"
|
||||
msgstr "Alertes"
|
||||
|
||||
#. placeholder {0}: data.length
|
||||
#. placeholder {0}: stats.total
|
||||
#. placeholder {0}: statusCounts.total
|
||||
#: src/components/domains-table/domains-table.tsx
|
||||
#: src/components/monitors-table/monitors-table.tsx
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "All ({0})"
|
||||
msgstr ""
|
||||
|
||||
@@ -224,9 +222,14 @@ msgstr "Tous les conteneurs"
|
||||
#: src/components/command-palette.tsx
|
||||
#: src/components/routes/settings/quiet-hours.tsx
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "All Systems"
|
||||
msgstr "Tous les systèmes"
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "App update"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/systems-table/systems-table-columns.tsx
|
||||
msgid "Are you sure you want to delete {name}?"
|
||||
msgstr "Êtes-vous sûr de vouloir supprimer {name} ?"
|
||||
@@ -338,6 +341,10 @@ msgstr "Beszel prend en charge OpenID Connect et de nombreux fournisseurs d'auth
|
||||
msgid "Beszel uses <0>Shoutrrr</0> to integrate with popular notification services."
|
||||
msgstr "Beszel utilise <0>Shoutrrr</0> pour s'intégrer aux services de notification populaires."
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Beszel will pull ghcr.io/dvorinka/beszel:latest, recreate the running container, and restart the app. All signed-in users can start this action."
|
||||
msgstr ""
|
||||
|
||||
#: src/components/add-system.tsx
|
||||
msgid "Binary"
|
||||
msgstr "Binaire"
|
||||
@@ -385,6 +392,7 @@ msgstr "Peut arrêter"
|
||||
#: src/components/domains-table/domains-table.tsx
|
||||
#: src/components/monitors-table/add-monitor-dialog.tsx
|
||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||
#: src/components/routes/settings/general.tsx
|
||||
#: src/components/routes/settings/quiet-hours.tsx
|
||||
#: src/components/systems-table/systems-table-columns.tsx
|
||||
msgid "Cancel"
|
||||
@@ -447,6 +455,10 @@ msgstr "Vérifiez {email} pour un lien de réinitialisation."
|
||||
msgid "Check logs for more details."
|
||||
msgstr "Vérifiez les journaux pour plus de détails."
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Check now"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/routes/monitor.tsx
|
||||
msgid "Check Now"
|
||||
msgstr ""
|
||||
@@ -482,8 +494,8 @@ msgid "Click to copy"
|
||||
msgstr "Cliquez pour copier"
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "Columns"
|
||||
msgstr ""
|
||||
#~ msgid "Columns"
|
||||
#~ msgstr ""
|
||||
|
||||
#: src/components/login/forgot-pass-form.tsx
|
||||
#: src/components/login/forgot-pass-form.tsx
|
||||
@@ -1750,6 +1762,10 @@ msgstr ""
|
||||
#~ msgid "Response Times"
|
||||
#~ msgstr ""
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Restarting"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/systemd-table/systemd-table.tsx
|
||||
msgid "Restarts"
|
||||
msgstr "Redémarrages"
|
||||
@@ -1917,8 +1933,8 @@ msgid "SMTP settings"
|
||||
msgstr "Paramètres SMTP"
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
#~ msgid "Sort By"
|
||||
#~ msgstr "Trier par"
|
||||
msgid "Sort By"
|
||||
msgstr "Trier par"
|
||||
|
||||
#: src/components/routes/domain.tsx
|
||||
#~ msgid "SSL Certificate"
|
||||
@@ -1929,6 +1945,10 @@ msgstr "Paramètres SMTP"
|
||||
msgid "Start Time"
|
||||
msgstr "Heure de début"
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Start update"
|
||||
msgstr ""
|
||||
|
||||
#. Context: alert state (active or resolved)
|
||||
#: src/components/alerts-history-columns.tsx
|
||||
#: src/components/routes/settings/quiet-hours.tsx
|
||||
@@ -2248,10 +2268,23 @@ msgstr "Joignable ({upSystemsLength})"
|
||||
msgid "Update"
|
||||
msgstr "Mettre à jour"
|
||||
|
||||
#: src/components/navbar.tsx
|
||||
#: src/components/navbar.tsx
|
||||
msgid "Update available"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Update Beszel now?"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/monitors-table/add-monitor-dialog.tsx
|
||||
msgid "Update Monitor"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Update now"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/containers-table/containers-table-columns.tsx
|
||||
#: src/components/routes/system/smart-table.tsx
|
||||
#: src/components/systemd-table/systemd-table-columns.tsx
|
||||
@@ -2335,8 +2368,8 @@ msgid "View your 200 most recent alerts."
|
||||
msgstr "Voir vos 200 dernières alertes."
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
#~ msgid "Visible Fields"
|
||||
#~ msgstr "Colonnes visibles"
|
||||
msgid "Visible Fields"
|
||||
msgstr "Colonnes visibles"
|
||||
|
||||
#: src/components/routes/domain.tsx
|
||||
#: src/components/routes/monitor.tsx
|
||||
|
||||
@@ -151,8 +151,8 @@ msgid "Add Monitor"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "Add System"
|
||||
msgstr ""
|
||||
#~ msgid "Add System"
|
||||
#~ msgstr ""
|
||||
|
||||
#: src/components/routes/settings/notifications.tsx
|
||||
msgid "Add URL"
|
||||
@@ -203,12 +203,10 @@ msgstr "היסטוריית התראות"
|
||||
msgid "Alerts"
|
||||
msgstr "התראות"
|
||||
|
||||
#. placeholder {0}: data.length
|
||||
#. placeholder {0}: stats.total
|
||||
#. placeholder {0}: statusCounts.total
|
||||
#: src/components/domains-table/domains-table.tsx
|
||||
#: src/components/monitors-table/monitors-table.tsx
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "All ({0})"
|
||||
msgstr ""
|
||||
|
||||
@@ -224,9 +222,14 @@ msgstr "כל הקונטיינרים"
|
||||
#: src/components/command-palette.tsx
|
||||
#: src/components/routes/settings/quiet-hours.tsx
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "All Systems"
|
||||
msgstr "כל המערכות"
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "App update"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/systems-table/systems-table-columns.tsx
|
||||
msgid "Are you sure you want to delete {name}?"
|
||||
msgstr "האם אתה בטוח שברצונך למחוק את {name}?"
|
||||
@@ -338,6 +341,10 @@ msgstr "Beszel תומך ב-OpenID Connect ובספקי אימות רבים של
|
||||
msgid "Beszel uses <0>Shoutrrr</0> to integrate with popular notification services."
|
||||
msgstr "Beszel משתמש ב-<0>Shoutrrr</0> לשילוב עם שירותי התראות פופולריים."
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Beszel will pull ghcr.io/dvorinka/beszel:latest, recreate the running container, and restart the app. All signed-in users can start this action."
|
||||
msgstr ""
|
||||
|
||||
#: src/components/add-system.tsx
|
||||
msgid "Binary"
|
||||
msgstr "בינרי"
|
||||
@@ -385,6 +392,7 @@ msgstr "יכול לעצור"
|
||||
#: src/components/domains-table/domains-table.tsx
|
||||
#: src/components/monitors-table/add-monitor-dialog.tsx
|
||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||
#: src/components/routes/settings/general.tsx
|
||||
#: src/components/routes/settings/quiet-hours.tsx
|
||||
#: src/components/systems-table/systems-table-columns.tsx
|
||||
msgid "Cancel"
|
||||
@@ -447,6 +455,10 @@ msgstr "בדוק את {email} לקישור איפוס."
|
||||
msgid "Check logs for more details."
|
||||
msgstr "בדוק לוגים לפרטים נוספים"
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Check now"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/routes/monitor.tsx
|
||||
msgid "Check Now"
|
||||
msgstr ""
|
||||
@@ -482,8 +494,8 @@ msgid "Click to copy"
|
||||
msgstr "לחץ כדי להעתיק"
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "Columns"
|
||||
msgstr ""
|
||||
#~ msgid "Columns"
|
||||
#~ msgstr ""
|
||||
|
||||
#: src/components/login/forgot-pass-form.tsx
|
||||
#: src/components/login/forgot-pass-form.tsx
|
||||
@@ -1750,6 +1762,10 @@ msgstr ""
|
||||
#~ msgid "Response Times"
|
||||
#~ msgstr ""
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Restarting"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/systemd-table/systemd-table.tsx
|
||||
msgid "Restarts"
|
||||
msgstr "הפעלות מחדש"
|
||||
@@ -1917,8 +1933,8 @@ msgid "SMTP settings"
|
||||
msgstr "הגדרות SMTP"
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
#~ msgid "Sort By"
|
||||
#~ msgstr "מיין לפי"
|
||||
msgid "Sort By"
|
||||
msgstr "מיין לפי"
|
||||
|
||||
#: src/components/routes/domain.tsx
|
||||
#~ msgid "SSL Certificate"
|
||||
@@ -1929,6 +1945,10 @@ msgstr "הגדרות SMTP"
|
||||
msgid "Start Time"
|
||||
msgstr "זמן התחלה"
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Start update"
|
||||
msgstr ""
|
||||
|
||||
#. Context: alert state (active or resolved)
|
||||
#: src/components/alerts-history-columns.tsx
|
||||
#: src/components/routes/settings/quiet-hours.tsx
|
||||
@@ -2248,10 +2268,23 @@ msgstr "למעלה ({upSystemsLength})"
|
||||
msgid "Update"
|
||||
msgstr "עדכן"
|
||||
|
||||
#: src/components/navbar.tsx
|
||||
#: src/components/navbar.tsx
|
||||
msgid "Update available"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Update Beszel now?"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/monitors-table/add-monitor-dialog.tsx
|
||||
msgid "Update Monitor"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Update now"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/containers-table/containers-table-columns.tsx
|
||||
#: src/components/routes/system/smart-table.tsx
|
||||
#: src/components/systemd-table/systemd-table-columns.tsx
|
||||
@@ -2335,8 +2368,8 @@ msgid "View your 200 most recent alerts."
|
||||
msgstr "צפה ב-200 ההתראות האחרונות שלך."
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
#~ msgid "Visible Fields"
|
||||
#~ msgstr "שדות גלויים"
|
||||
msgid "Visible Fields"
|
||||
msgstr "שדות גלויים"
|
||||
|
||||
#: src/components/routes/domain.tsx
|
||||
#: src/components/routes/monitor.tsx
|
||||
|
||||
@@ -151,8 +151,8 @@ msgid "Add Monitor"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "Add System"
|
||||
msgstr ""
|
||||
#~ msgid "Add System"
|
||||
#~ msgstr ""
|
||||
|
||||
#: src/components/routes/settings/notifications.tsx
|
||||
msgid "Add URL"
|
||||
@@ -203,12 +203,10 @@ msgstr "Povijest Upozorenja"
|
||||
msgid "Alerts"
|
||||
msgstr "Upozorenja"
|
||||
|
||||
#. placeholder {0}: data.length
|
||||
#. placeholder {0}: stats.total
|
||||
#. placeholder {0}: statusCounts.total
|
||||
#: src/components/domains-table/domains-table.tsx
|
||||
#: src/components/monitors-table/monitors-table.tsx
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "All ({0})"
|
||||
msgstr ""
|
||||
|
||||
@@ -224,9 +222,14 @@ msgstr "Svi spremnici"
|
||||
#: src/components/command-palette.tsx
|
||||
#: src/components/routes/settings/quiet-hours.tsx
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "All Systems"
|
||||
msgstr "Svi Sustavi"
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "App update"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/systems-table/systems-table-columns.tsx
|
||||
msgid "Are you sure you want to delete {name}?"
|
||||
msgstr "Jeste li sigurni da želite izbrisati {name}?"
|
||||
@@ -338,6 +341,10 @@ msgstr "Beszel podržava OpenID Connect i mnoge druge pružatelje OAuth2 autent
|
||||
msgid "Beszel uses <0>Shoutrrr</0> to integrate with popular notification services."
|
||||
msgstr "Beszel koristi <0>Shoutrrr</0> za integraciju s popularnim obavještajnim uslugama."
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Beszel will pull ghcr.io/dvorinka/beszel:latest, recreate the running container, and restart the app. All signed-in users can start this action."
|
||||
msgstr ""
|
||||
|
||||
#: src/components/add-system.tsx
|
||||
msgid "Binary"
|
||||
msgstr "Binarni"
|
||||
@@ -385,6 +392,7 @@ msgstr "Može se zaustaviti"
|
||||
#: src/components/domains-table/domains-table.tsx
|
||||
#: src/components/monitors-table/add-monitor-dialog.tsx
|
||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||
#: src/components/routes/settings/general.tsx
|
||||
#: src/components/routes/settings/quiet-hours.tsx
|
||||
#: src/components/systems-table/systems-table-columns.tsx
|
||||
msgid "Cancel"
|
||||
@@ -447,6 +455,10 @@ msgstr "Provjerite {email} za pristup poveznici za resetiranje."
|
||||
msgid "Check logs for more details."
|
||||
msgstr "Provjerite zapise (logove) za više detalja."
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Check now"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/routes/monitor.tsx
|
||||
msgid "Check Now"
|
||||
msgstr ""
|
||||
@@ -482,8 +494,8 @@ msgid "Click to copy"
|
||||
msgstr "Pritisnite za kopiranje"
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "Columns"
|
||||
msgstr ""
|
||||
#~ msgid "Columns"
|
||||
#~ msgstr ""
|
||||
|
||||
#: src/components/login/forgot-pass-form.tsx
|
||||
#: src/components/login/forgot-pass-form.tsx
|
||||
@@ -1750,6 +1762,10 @@ msgstr ""
|
||||
#~ msgid "Response Times"
|
||||
#~ msgstr ""
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Restarting"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/systemd-table/systemd-table.tsx
|
||||
msgid "Restarts"
|
||||
msgstr "Ponovna pokretanja"
|
||||
@@ -1917,8 +1933,8 @@ msgid "SMTP settings"
|
||||
msgstr "SMTP postavke"
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
#~ msgid "Sort By"
|
||||
#~ msgstr "Sortiraj po"
|
||||
msgid "Sort By"
|
||||
msgstr "Sortiraj po"
|
||||
|
||||
#: src/components/routes/domain.tsx
|
||||
#~ msgid "SSL Certificate"
|
||||
@@ -1929,6 +1945,10 @@ msgstr "SMTP postavke"
|
||||
msgid "Start Time"
|
||||
msgstr "Vrijeme početka"
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Start update"
|
||||
msgstr ""
|
||||
|
||||
#. Context: alert state (active or resolved)
|
||||
#: src/components/alerts-history-columns.tsx
|
||||
#: src/components/routes/settings/quiet-hours.tsx
|
||||
@@ -2248,10 +2268,23 @@ msgstr "Sustav je podignut ({upSystemsLength})"
|
||||
msgid "Update"
|
||||
msgstr "Ažuriraj"
|
||||
|
||||
#: src/components/navbar.tsx
|
||||
#: src/components/navbar.tsx
|
||||
msgid "Update available"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Update Beszel now?"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/monitors-table/add-monitor-dialog.tsx
|
||||
msgid "Update Monitor"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Update now"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/containers-table/containers-table-columns.tsx
|
||||
#: src/components/routes/system/smart-table.tsx
|
||||
#: src/components/systemd-table/systemd-table-columns.tsx
|
||||
@@ -2335,8 +2368,8 @@ msgid "View your 200 most recent alerts."
|
||||
msgstr "Pogledajte posljednjih 200 upozorenja."
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
#~ msgid "Visible Fields"
|
||||
#~ msgstr "Vidljiva polja"
|
||||
msgid "Visible Fields"
|
||||
msgstr "Vidljiva polja"
|
||||
|
||||
#: src/components/routes/domain.tsx
|
||||
#: src/components/routes/monitor.tsx
|
||||
|
||||
@@ -151,8 +151,8 @@ msgid "Add Monitor"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "Add System"
|
||||
msgstr ""
|
||||
#~ msgid "Add System"
|
||||
#~ msgstr ""
|
||||
|
||||
#: src/components/routes/settings/notifications.tsx
|
||||
msgid "Add URL"
|
||||
@@ -203,12 +203,10 @@ msgstr "Riasztási előzmények"
|
||||
msgid "Alerts"
|
||||
msgstr "Riasztások"
|
||||
|
||||
#. placeholder {0}: data.length
|
||||
#. placeholder {0}: stats.total
|
||||
#. placeholder {0}: statusCounts.total
|
||||
#: src/components/domains-table/domains-table.tsx
|
||||
#: src/components/monitors-table/monitors-table.tsx
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "All ({0})"
|
||||
msgstr ""
|
||||
|
||||
@@ -224,9 +222,14 @@ msgstr "Minden konténer"
|
||||
#: src/components/command-palette.tsx
|
||||
#: src/components/routes/settings/quiet-hours.tsx
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "All Systems"
|
||||
msgstr "Minden rendszer"
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "App update"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/systems-table/systems-table-columns.tsx
|
||||
msgid "Are you sure you want to delete {name}?"
|
||||
msgstr "Biztosan törölni szeretnéd {name}-t?"
|
||||
@@ -338,6 +341,10 @@ msgstr "A Beszel támogatja az OpenID Connect-et és számos OAuth2 hitelesíté
|
||||
msgid "Beszel uses <0>Shoutrrr</0> to integrate with popular notification services."
|
||||
msgstr "A Beszel a <0>Shoutrrr</0>-t használja a népszerű értesítési szolgáltatások integrálására."
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Beszel will pull ghcr.io/dvorinka/beszel:latest, recreate the running container, and restart the app. All signed-in users can start this action."
|
||||
msgstr ""
|
||||
|
||||
#: src/components/add-system.tsx
|
||||
msgid "Binary"
|
||||
msgstr "Bináris"
|
||||
@@ -385,6 +392,7 @@ msgstr "Leállítható"
|
||||
#: src/components/domains-table/domains-table.tsx
|
||||
#: src/components/monitors-table/add-monitor-dialog.tsx
|
||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||
#: src/components/routes/settings/general.tsx
|
||||
#: src/components/routes/settings/quiet-hours.tsx
|
||||
#: src/components/systems-table/systems-table-columns.tsx
|
||||
msgid "Cancel"
|
||||
@@ -447,6 +455,10 @@ msgstr "Ellenőrizd a {email} címet a visszaállító linkért."
|
||||
msgid "Check logs for more details."
|
||||
msgstr "Ellenőrizd a naplót a további részletekért."
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Check now"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/routes/monitor.tsx
|
||||
msgid "Check Now"
|
||||
msgstr ""
|
||||
@@ -482,8 +494,8 @@ msgid "Click to copy"
|
||||
msgstr "Kattints a másoláshoz"
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "Columns"
|
||||
msgstr ""
|
||||
#~ msgid "Columns"
|
||||
#~ msgstr ""
|
||||
|
||||
#: src/components/login/forgot-pass-form.tsx
|
||||
#: src/components/login/forgot-pass-form.tsx
|
||||
@@ -1750,6 +1762,10 @@ msgstr ""
|
||||
#~ msgid "Response Times"
|
||||
#~ msgstr ""
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Restarting"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/systemd-table/systemd-table.tsx
|
||||
msgid "Restarts"
|
||||
msgstr "Újraindítások"
|
||||
@@ -1917,8 +1933,8 @@ msgid "SMTP settings"
|
||||
msgstr "SMTP beállítások"
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
#~ msgid "Sort By"
|
||||
#~ msgstr "Rendezés"
|
||||
msgid "Sort By"
|
||||
msgstr "Rendezés"
|
||||
|
||||
#: src/components/routes/domain.tsx
|
||||
#~ msgid "SSL Certificate"
|
||||
@@ -1929,6 +1945,10 @@ msgstr "SMTP beállítások"
|
||||
msgid "Start Time"
|
||||
msgstr "Kezdési idő"
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Start update"
|
||||
msgstr ""
|
||||
|
||||
#. Context: alert state (active or resolved)
|
||||
#: src/components/alerts-history-columns.tsx
|
||||
#: src/components/routes/settings/quiet-hours.tsx
|
||||
@@ -2248,10 +2268,23 @@ msgstr "Online ({upSystemsLength})"
|
||||
msgid "Update"
|
||||
msgstr "Frissítés"
|
||||
|
||||
#: src/components/navbar.tsx
|
||||
#: src/components/navbar.tsx
|
||||
msgid "Update available"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Update Beszel now?"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/monitors-table/add-monitor-dialog.tsx
|
||||
msgid "Update Monitor"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Update now"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/containers-table/containers-table-columns.tsx
|
||||
#: src/components/routes/system/smart-table.tsx
|
||||
#: src/components/systemd-table/systemd-table-columns.tsx
|
||||
@@ -2335,8 +2368,8 @@ msgid "View your 200 most recent alerts."
|
||||
msgstr "Legfrissebb 200 riasztásod áttekintése."
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
#~ msgid "Visible Fields"
|
||||
#~ msgstr "Látható mezők"
|
||||
msgid "Visible Fields"
|
||||
msgstr "Látható mezők"
|
||||
|
||||
#: src/components/routes/domain.tsx
|
||||
#: src/components/routes/monitor.tsx
|
||||
|
||||
@@ -151,8 +151,8 @@ msgid "Add Monitor"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "Add System"
|
||||
msgstr ""
|
||||
#~ msgid "Add System"
|
||||
#~ msgstr ""
|
||||
|
||||
#: src/components/routes/settings/notifications.tsx
|
||||
msgid "Add URL"
|
||||
@@ -203,12 +203,10 @@ msgstr "Riwayat Peringatan"
|
||||
msgid "Alerts"
|
||||
msgstr "Peringatan"
|
||||
|
||||
#. placeholder {0}: data.length
|
||||
#. placeholder {0}: stats.total
|
||||
#. placeholder {0}: statusCounts.total
|
||||
#: src/components/domains-table/domains-table.tsx
|
||||
#: src/components/monitors-table/monitors-table.tsx
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "All ({0})"
|
||||
msgstr ""
|
||||
|
||||
@@ -224,9 +222,14 @@ msgstr "Semua Container"
|
||||
#: src/components/command-palette.tsx
|
||||
#: src/components/routes/settings/quiet-hours.tsx
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "All Systems"
|
||||
msgstr "Semua Sistem"
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "App update"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/systems-table/systems-table-columns.tsx
|
||||
msgid "Are you sure you want to delete {name}?"
|
||||
msgstr "Apakah anda yakin ingin menghapus {name}?"
|
||||
@@ -338,6 +341,10 @@ msgstr "Beszel mendukung OpenID Connect dan OAuth2 dari berbagai penyedia layana
|
||||
msgid "Beszel uses <0>Shoutrrr</0> to integrate with popular notification services."
|
||||
msgstr "Beszel menggunakan <0>Shoutrrr</0> untuk mengintegrasikan dengan penyedia layanan notifikasi."
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Beszel will pull ghcr.io/dvorinka/beszel:latest, recreate the running container, and restart the app. All signed-in users can start this action."
|
||||
msgstr ""
|
||||
|
||||
#: src/components/add-system.tsx
|
||||
msgid "Binary"
|
||||
msgstr "Binari"
|
||||
@@ -385,6 +392,7 @@ msgstr "Dapat diberhentikan"
|
||||
#: src/components/domains-table/domains-table.tsx
|
||||
#: src/components/monitors-table/add-monitor-dialog.tsx
|
||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||
#: src/components/routes/settings/general.tsx
|
||||
#: src/components/routes/settings/quiet-hours.tsx
|
||||
#: src/components/systems-table/systems-table-columns.tsx
|
||||
msgid "Cancel"
|
||||
@@ -447,6 +455,10 @@ msgstr "Periksa {email} untuk tautan atur ulang password."
|
||||
msgid "Check logs for more details."
|
||||
msgstr "Periksa riwayat untuk lebih detail."
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Check now"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/routes/monitor.tsx
|
||||
msgid "Check Now"
|
||||
msgstr ""
|
||||
@@ -482,8 +494,8 @@ msgid "Click to copy"
|
||||
msgstr "Klik untuk menyalin"
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "Columns"
|
||||
msgstr ""
|
||||
#~ msgid "Columns"
|
||||
#~ msgstr ""
|
||||
|
||||
#: src/components/login/forgot-pass-form.tsx
|
||||
#: src/components/login/forgot-pass-form.tsx
|
||||
@@ -1750,6 +1762,10 @@ msgstr ""
|
||||
#~ msgid "Response Times"
|
||||
#~ msgstr ""
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Restarting"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/systemd-table/systemd-table.tsx
|
||||
msgid "Restarts"
|
||||
msgstr "Restart"
|
||||
@@ -1917,8 +1933,8 @@ msgid "SMTP settings"
|
||||
msgstr "Pengaturan SMTP"
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
#~ msgid "Sort By"
|
||||
#~ msgstr "Urutkan Berdasarkan"
|
||||
msgid "Sort By"
|
||||
msgstr "Urutkan Berdasarkan"
|
||||
|
||||
#: src/components/routes/domain.tsx
|
||||
#~ msgid "SSL Certificate"
|
||||
@@ -1929,6 +1945,10 @@ msgstr "Pengaturan SMTP"
|
||||
msgid "Start Time"
|
||||
msgstr "Waktu Mulai"
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Start update"
|
||||
msgstr ""
|
||||
|
||||
#. Context: alert state (active or resolved)
|
||||
#: src/components/alerts-history-columns.tsx
|
||||
#: src/components/routes/settings/quiet-hours.tsx
|
||||
@@ -2248,10 +2268,23 @@ msgstr "Nyala selama ({upSystemsLength})"
|
||||
msgid "Update"
|
||||
msgstr "Perbarui"
|
||||
|
||||
#: src/components/navbar.tsx
|
||||
#: src/components/navbar.tsx
|
||||
msgid "Update available"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Update Beszel now?"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/monitors-table/add-monitor-dialog.tsx
|
||||
msgid "Update Monitor"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Update now"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/containers-table/containers-table-columns.tsx
|
||||
#: src/components/routes/system/smart-table.tsx
|
||||
#: src/components/systemd-table/systemd-table-columns.tsx
|
||||
@@ -2335,8 +2368,8 @@ msgid "View your 200 most recent alerts."
|
||||
msgstr "Lihat 200 peringatan terbaru anda."
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
#~ msgid "Visible Fields"
|
||||
#~ msgstr "Metrik yang Terlihat"
|
||||
msgid "Visible Fields"
|
||||
msgstr "Metrik yang Terlihat"
|
||||
|
||||
#: src/components/routes/domain.tsx
|
||||
#: src/components/routes/monitor.tsx
|
||||
|
||||
@@ -151,8 +151,8 @@ msgid "Add Monitor"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "Add System"
|
||||
msgstr ""
|
||||
#~ msgid "Add System"
|
||||
#~ msgstr ""
|
||||
|
||||
#: src/components/routes/settings/notifications.tsx
|
||||
msgid "Add URL"
|
||||
@@ -203,12 +203,10 @@ msgstr "Cronologia Avvisi"
|
||||
msgid "Alerts"
|
||||
msgstr "Avvisi"
|
||||
|
||||
#. placeholder {0}: data.length
|
||||
#. placeholder {0}: stats.total
|
||||
#. placeholder {0}: statusCounts.total
|
||||
#: src/components/domains-table/domains-table.tsx
|
||||
#: src/components/monitors-table/monitors-table.tsx
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "All ({0})"
|
||||
msgstr ""
|
||||
|
||||
@@ -224,9 +222,14 @@ msgstr "Tutti i contenitori"
|
||||
#: src/components/command-palette.tsx
|
||||
#: src/components/routes/settings/quiet-hours.tsx
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "All Systems"
|
||||
msgstr "Tutti i Sistemi"
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "App update"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/systems-table/systems-table-columns.tsx
|
||||
msgid "Are you sure you want to delete {name}?"
|
||||
msgstr "Sei sicuro di voler eliminare {name}?"
|
||||
@@ -338,6 +341,10 @@ msgstr "Beszel supporta OpenID Connect e molti provider di autenticazione OAuth2
|
||||
msgid "Beszel uses <0>Shoutrrr</0> to integrate with popular notification services."
|
||||
msgstr "Beszel utilizza <0>Shoutrrr</0> per integrarsi con i servizi di notifica popolari."
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Beszel will pull ghcr.io/dvorinka/beszel:latest, recreate the running container, and restart the app. All signed-in users can start this action."
|
||||
msgstr ""
|
||||
|
||||
#: src/components/add-system.tsx
|
||||
msgid "Binary"
|
||||
msgstr "Binario"
|
||||
@@ -385,6 +392,7 @@ msgstr "Può fermare"
|
||||
#: src/components/domains-table/domains-table.tsx
|
||||
#: src/components/monitors-table/add-monitor-dialog.tsx
|
||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||
#: src/components/routes/settings/general.tsx
|
||||
#: src/components/routes/settings/quiet-hours.tsx
|
||||
#: src/components/systems-table/systems-table-columns.tsx
|
||||
msgid "Cancel"
|
||||
@@ -447,6 +455,10 @@ msgstr "Controlla {email} per un link di reset."
|
||||
msgid "Check logs for more details."
|
||||
msgstr "Controlla i log per maggiori dettagli."
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Check now"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/routes/monitor.tsx
|
||||
msgid "Check Now"
|
||||
msgstr ""
|
||||
@@ -482,8 +494,8 @@ msgid "Click to copy"
|
||||
msgstr "Clicca per copiare"
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "Columns"
|
||||
msgstr ""
|
||||
#~ msgid "Columns"
|
||||
#~ msgstr ""
|
||||
|
||||
#: src/components/login/forgot-pass-form.tsx
|
||||
#: src/components/login/forgot-pass-form.tsx
|
||||
@@ -1750,6 +1762,10 @@ msgstr ""
|
||||
#~ msgid "Response Times"
|
||||
#~ msgstr ""
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Restarting"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/systemd-table/systemd-table.tsx
|
||||
msgid "Restarts"
|
||||
msgstr "Riavvii"
|
||||
@@ -1917,8 +1933,8 @@ msgid "SMTP settings"
|
||||
msgstr "Impostazioni SMTP"
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
#~ msgid "Sort By"
|
||||
#~ msgstr "Ordina per"
|
||||
msgid "Sort By"
|
||||
msgstr "Ordina per"
|
||||
|
||||
#: src/components/routes/domain.tsx
|
||||
#~ msgid "SSL Certificate"
|
||||
@@ -1929,6 +1945,10 @@ msgstr "Impostazioni SMTP"
|
||||
msgid "Start Time"
|
||||
msgstr "Ora di inizio"
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Start update"
|
||||
msgstr ""
|
||||
|
||||
#. Context: alert state (active or resolved)
|
||||
#: src/components/alerts-history-columns.tsx
|
||||
#: src/components/routes/settings/quiet-hours.tsx
|
||||
@@ -2248,10 +2268,23 @@ msgstr "Attivo ({upSystemsLength})"
|
||||
msgid "Update"
|
||||
msgstr "Aggiorna"
|
||||
|
||||
#: src/components/navbar.tsx
|
||||
#: src/components/navbar.tsx
|
||||
msgid "Update available"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Update Beszel now?"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/monitors-table/add-monitor-dialog.tsx
|
||||
msgid "Update Monitor"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Update now"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/containers-table/containers-table-columns.tsx
|
||||
#: src/components/routes/system/smart-table.tsx
|
||||
#: src/components/systemd-table/systemd-table-columns.tsx
|
||||
@@ -2335,8 +2368,8 @@ msgid "View your 200 most recent alerts."
|
||||
msgstr "Visualizza i tuoi 200 avvisi più recenti."
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
#~ msgid "Visible Fields"
|
||||
#~ msgstr "Colonne visibili"
|
||||
msgid "Visible Fields"
|
||||
msgstr "Colonne visibili"
|
||||
|
||||
#: src/components/routes/domain.tsx
|
||||
#: src/components/routes/monitor.tsx
|
||||
|
||||
@@ -151,8 +151,8 @@ msgid "Add Monitor"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "Add System"
|
||||
msgstr ""
|
||||
#~ msgid "Add System"
|
||||
#~ msgstr ""
|
||||
|
||||
#: src/components/routes/settings/notifications.tsx
|
||||
msgid "Add URL"
|
||||
@@ -203,12 +203,10 @@ msgstr "アラート履歴"
|
||||
msgid "Alerts"
|
||||
msgstr "アラート"
|
||||
|
||||
#. placeholder {0}: data.length
|
||||
#. placeholder {0}: stats.total
|
||||
#. placeholder {0}: statusCounts.total
|
||||
#: src/components/domains-table/domains-table.tsx
|
||||
#: src/components/monitors-table/monitors-table.tsx
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "All ({0})"
|
||||
msgstr ""
|
||||
|
||||
@@ -224,9 +222,14 @@ msgstr "すべてのコンテナ"
|
||||
#: src/components/command-palette.tsx
|
||||
#: src/components/routes/settings/quiet-hours.tsx
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "All Systems"
|
||||
msgstr "すべてのシステム"
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "App update"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/systems-table/systems-table-columns.tsx
|
||||
msgid "Are you sure you want to delete {name}?"
|
||||
msgstr "{name}を削除してもよろしいですか?"
|
||||
@@ -338,6 +341,10 @@ msgstr "BeszelはOpenID Connectと多くのOAuth2認証プロバイダーをサ
|
||||
msgid "Beszel uses <0>Shoutrrr</0> to integrate with popular notification services."
|
||||
msgstr "Beszelは<0>Shoutrrr</0>を使用して、人気のある通知サービスと統合します。"
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Beszel will pull ghcr.io/dvorinka/beszel:latest, recreate the running container, and restart the app. All signed-in users can start this action."
|
||||
msgstr ""
|
||||
|
||||
#: src/components/add-system.tsx
|
||||
msgid "Binary"
|
||||
msgstr "バイナリ"
|
||||
@@ -385,6 +392,7 @@ msgstr "停止可能"
|
||||
#: src/components/domains-table/domains-table.tsx
|
||||
#: src/components/monitors-table/add-monitor-dialog.tsx
|
||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||
#: src/components/routes/settings/general.tsx
|
||||
#: src/components/routes/settings/quiet-hours.tsx
|
||||
#: src/components/systems-table/systems-table-columns.tsx
|
||||
msgid "Cancel"
|
||||
@@ -447,6 +455,10 @@ msgstr "{email}を確認してリセットリンクを探してください。"
|
||||
msgid "Check logs for more details."
|
||||
msgstr "詳細についてはログを確認してください。"
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Check now"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/routes/monitor.tsx
|
||||
msgid "Check Now"
|
||||
msgstr ""
|
||||
@@ -482,8 +494,8 @@ msgid "Click to copy"
|
||||
msgstr "クリックしてコピー"
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "Columns"
|
||||
msgstr ""
|
||||
#~ msgid "Columns"
|
||||
#~ msgstr ""
|
||||
|
||||
#: src/components/login/forgot-pass-form.tsx
|
||||
#: src/components/login/forgot-pass-form.tsx
|
||||
@@ -1750,6 +1762,10 @@ msgstr ""
|
||||
#~ msgid "Response Times"
|
||||
#~ msgstr ""
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Restarting"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/systemd-table/systemd-table.tsx
|
||||
msgid "Restarts"
|
||||
msgstr "再起動"
|
||||
@@ -1917,8 +1933,8 @@ msgid "SMTP settings"
|
||||
msgstr "SMTP設定"
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
#~ msgid "Sort By"
|
||||
#~ msgstr "並び替え基準"
|
||||
msgid "Sort By"
|
||||
msgstr "並び替え基準"
|
||||
|
||||
#: src/components/routes/domain.tsx
|
||||
#~ msgid "SSL Certificate"
|
||||
@@ -1929,6 +1945,10 @@ msgstr "SMTP設定"
|
||||
msgid "Start Time"
|
||||
msgstr "開始時間"
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Start update"
|
||||
msgstr ""
|
||||
|
||||
#. Context: alert state (active or resolved)
|
||||
#: src/components/alerts-history-columns.tsx
|
||||
#: src/components/routes/settings/quiet-hours.tsx
|
||||
@@ -2248,10 +2268,23 @@ msgstr "正常 ({upSystemsLength})"
|
||||
msgid "Update"
|
||||
msgstr "更新"
|
||||
|
||||
#: src/components/navbar.tsx
|
||||
#: src/components/navbar.tsx
|
||||
msgid "Update available"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Update Beszel now?"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/monitors-table/add-monitor-dialog.tsx
|
||||
msgid "Update Monitor"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Update now"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/containers-table/containers-table-columns.tsx
|
||||
#: src/components/routes/system/smart-table.tsx
|
||||
#: src/components/systemd-table/systemd-table-columns.tsx
|
||||
@@ -2335,8 +2368,8 @@ msgid "View your 200 most recent alerts."
|
||||
msgstr "直近200件のアラートを表示します。"
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
#~ msgid "Visible Fields"
|
||||
#~ msgstr "表示列"
|
||||
msgid "Visible Fields"
|
||||
msgstr "表示列"
|
||||
|
||||
#: src/components/routes/domain.tsx
|
||||
#: src/components/routes/monitor.tsx
|
||||
|
||||
@@ -151,8 +151,8 @@ msgid "Add Monitor"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "Add System"
|
||||
msgstr ""
|
||||
#~ msgid "Add System"
|
||||
#~ msgstr ""
|
||||
|
||||
#: src/components/routes/settings/notifications.tsx
|
||||
msgid "Add URL"
|
||||
@@ -203,12 +203,10 @@ msgstr "알림 기록"
|
||||
msgid "Alerts"
|
||||
msgstr "알림"
|
||||
|
||||
#. placeholder {0}: data.length
|
||||
#. placeholder {0}: stats.total
|
||||
#. placeholder {0}: statusCounts.total
|
||||
#: src/components/domains-table/domains-table.tsx
|
||||
#: src/components/monitors-table/monitors-table.tsx
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "All ({0})"
|
||||
msgstr ""
|
||||
|
||||
@@ -224,9 +222,14 @@ msgstr "모든 컨테이너"
|
||||
#: src/components/command-palette.tsx
|
||||
#: src/components/routes/settings/quiet-hours.tsx
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "All Systems"
|
||||
msgstr "모든 시스템"
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "App update"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/systems-table/systems-table-columns.tsx
|
||||
msgid "Are you sure you want to delete {name}?"
|
||||
msgstr "{name}을(를) 삭제하시겠습니까?"
|
||||
@@ -338,6 +341,10 @@ msgstr "Beszel은 OpenID Connect 및 많은 OAuth2 인증 제공자를 지원합
|
||||
msgid "Beszel uses <0>Shoutrrr</0> to integrate with popular notification services."
|
||||
msgstr "Beszel은 여러 인기 있는 알림 서비스와 연동하기 위해 <0>Shoutrrr</0>을 이용합니다."
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Beszel will pull ghcr.io/dvorinka/beszel:latest, recreate the running container, and restart the app. All signed-in users can start this action."
|
||||
msgstr ""
|
||||
|
||||
#: src/components/add-system.tsx
|
||||
msgid "Binary"
|
||||
msgstr "실행 파일"
|
||||
@@ -385,6 +392,7 @@ msgstr "중지 가능"
|
||||
#: src/components/domains-table/domains-table.tsx
|
||||
#: src/components/monitors-table/add-monitor-dialog.tsx
|
||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||
#: src/components/routes/settings/general.tsx
|
||||
#: src/components/routes/settings/quiet-hours.tsx
|
||||
#: src/components/systems-table/systems-table-columns.tsx
|
||||
msgid "Cancel"
|
||||
@@ -447,6 +455,10 @@ msgstr "{email}에서 재설정 링크를 확인하세요."
|
||||
msgid "Check logs for more details."
|
||||
msgstr "자세한 내용은 로그를 확인하세요."
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Check now"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/routes/monitor.tsx
|
||||
msgid "Check Now"
|
||||
msgstr ""
|
||||
@@ -482,8 +494,8 @@ msgid "Click to copy"
|
||||
msgstr "클릭하여 복사"
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "Columns"
|
||||
msgstr ""
|
||||
#~ msgid "Columns"
|
||||
#~ msgstr ""
|
||||
|
||||
#: src/components/login/forgot-pass-form.tsx
|
||||
#: src/components/login/forgot-pass-form.tsx
|
||||
@@ -1750,6 +1762,10 @@ msgstr ""
|
||||
#~ msgid "Response Times"
|
||||
#~ msgstr ""
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Restarting"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/systemd-table/systemd-table.tsx
|
||||
msgid "Restarts"
|
||||
msgstr "재시작 횟수"
|
||||
@@ -1917,8 +1933,8 @@ msgid "SMTP settings"
|
||||
msgstr "SMTP 설정"
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
#~ msgid "Sort By"
|
||||
#~ msgstr "정렬 기준"
|
||||
msgid "Sort By"
|
||||
msgstr "정렬 기준"
|
||||
|
||||
#: src/components/routes/domain.tsx
|
||||
#~ msgid "SSL Certificate"
|
||||
@@ -1929,6 +1945,10 @@ msgstr "SMTP 설정"
|
||||
msgid "Start Time"
|
||||
msgstr "시작 시간"
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Start update"
|
||||
msgstr ""
|
||||
|
||||
#. Context: alert state (active or resolved)
|
||||
#: src/components/alerts-history-columns.tsx
|
||||
#: src/components/routes/settings/quiet-hours.tsx
|
||||
@@ -2248,10 +2268,23 @@ msgstr "온라인 ({upSystemsLength})"
|
||||
msgid "Update"
|
||||
msgstr "업데이트"
|
||||
|
||||
#: src/components/navbar.tsx
|
||||
#: src/components/navbar.tsx
|
||||
msgid "Update available"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Update Beszel now?"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/monitors-table/add-monitor-dialog.tsx
|
||||
msgid "Update Monitor"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Update now"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/containers-table/containers-table-columns.tsx
|
||||
#: src/components/routes/system/smart-table.tsx
|
||||
#: src/components/systemd-table/systemd-table-columns.tsx
|
||||
@@ -2335,8 +2368,8 @@ msgid "View your 200 most recent alerts."
|
||||
msgstr "최근 200개의 알림을 봅니다."
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
#~ msgid "Visible Fields"
|
||||
#~ msgstr "표시할 열"
|
||||
msgid "Visible Fields"
|
||||
msgstr "표시할 열"
|
||||
|
||||
#: src/components/routes/domain.tsx
|
||||
#: src/components/routes/monitor.tsx
|
||||
|
||||
@@ -151,8 +151,8 @@ msgid "Add Monitor"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "Add System"
|
||||
msgstr ""
|
||||
#~ msgid "Add System"
|
||||
#~ msgstr ""
|
||||
|
||||
#: src/components/routes/settings/notifications.tsx
|
||||
msgid "Add URL"
|
||||
@@ -203,12 +203,10 @@ msgstr "Melding geschiedenis"
|
||||
msgid "Alerts"
|
||||
msgstr "Waarschuwingen"
|
||||
|
||||
#. placeholder {0}: data.length
|
||||
#. placeholder {0}: stats.total
|
||||
#. placeholder {0}: statusCounts.total
|
||||
#: src/components/domains-table/domains-table.tsx
|
||||
#: src/components/monitors-table/monitors-table.tsx
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "All ({0})"
|
||||
msgstr ""
|
||||
|
||||
@@ -224,9 +222,14 @@ msgstr "Alle containers"
|
||||
#: src/components/command-palette.tsx
|
||||
#: src/components/routes/settings/quiet-hours.tsx
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "All Systems"
|
||||
msgstr "Alle systemen"
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "App update"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/systems-table/systems-table-columns.tsx
|
||||
msgid "Are you sure you want to delete {name}?"
|
||||
msgstr "Weet je zeker dat je {name} wilt verwijderen?"
|
||||
@@ -338,6 +341,10 @@ msgstr "Beszel ondersteunt OpenID Connect en vele OAuth2 authenticatieaanbieders
|
||||
msgid "Beszel uses <0>Shoutrrr</0> to integrate with popular notification services."
|
||||
msgstr "Beszel gebruikt <0>Shoutrr</0> om te integreren met populaire meldingsdiensten."
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Beszel will pull ghcr.io/dvorinka/beszel:latest, recreate the running container, and restart the app. All signed-in users can start this action."
|
||||
msgstr ""
|
||||
|
||||
#: src/components/add-system.tsx
|
||||
msgid "Binary"
|
||||
msgstr "Binair"
|
||||
@@ -385,6 +392,7 @@ msgstr "Kan stoppen"
|
||||
#: src/components/domains-table/domains-table.tsx
|
||||
#: src/components/monitors-table/add-monitor-dialog.tsx
|
||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||
#: src/components/routes/settings/general.tsx
|
||||
#: src/components/routes/settings/quiet-hours.tsx
|
||||
#: src/components/systems-table/systems-table-columns.tsx
|
||||
msgid "Cancel"
|
||||
@@ -447,6 +455,10 @@ msgstr "Controleer {email} op een reset link."
|
||||
msgid "Check logs for more details."
|
||||
msgstr "Controleer de logs voor meer details."
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Check now"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/routes/monitor.tsx
|
||||
msgid "Check Now"
|
||||
msgstr ""
|
||||
@@ -482,8 +494,8 @@ msgid "Click to copy"
|
||||
msgstr "Klik om te kopiëren"
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "Columns"
|
||||
msgstr ""
|
||||
#~ msgid "Columns"
|
||||
#~ msgstr ""
|
||||
|
||||
#: src/components/login/forgot-pass-form.tsx
|
||||
#: src/components/login/forgot-pass-form.tsx
|
||||
@@ -1750,6 +1762,10 @@ msgstr ""
|
||||
#~ msgid "Response Times"
|
||||
#~ msgstr ""
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Restarting"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/systemd-table/systemd-table.tsx
|
||||
msgid "Restarts"
|
||||
msgstr "Herstarten"
|
||||
@@ -1917,8 +1933,8 @@ msgid "SMTP settings"
|
||||
msgstr "SMTP-instellingen"
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
#~ msgid "Sort By"
|
||||
#~ msgstr "Sorteren op"
|
||||
msgid "Sort By"
|
||||
msgstr "Sorteren op"
|
||||
|
||||
#: src/components/routes/domain.tsx
|
||||
#~ msgid "SSL Certificate"
|
||||
@@ -1929,6 +1945,10 @@ msgstr "SMTP-instellingen"
|
||||
msgid "Start Time"
|
||||
msgstr "Starttijd"
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Start update"
|
||||
msgstr ""
|
||||
|
||||
#. Context: alert state (active or resolved)
|
||||
#: src/components/alerts-history-columns.tsx
|
||||
#: src/components/routes/settings/quiet-hours.tsx
|
||||
@@ -2248,10 +2268,23 @@ msgstr "Online ({upSystemsLength})"
|
||||
msgid "Update"
|
||||
msgstr "Bijwerken"
|
||||
|
||||
#: src/components/navbar.tsx
|
||||
#: src/components/navbar.tsx
|
||||
msgid "Update available"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Update Beszel now?"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/monitors-table/add-monitor-dialog.tsx
|
||||
msgid "Update Monitor"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Update now"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/containers-table/containers-table-columns.tsx
|
||||
#: src/components/routes/system/smart-table.tsx
|
||||
#: src/components/systemd-table/systemd-table-columns.tsx
|
||||
@@ -2335,8 +2368,8 @@ msgid "View your 200 most recent alerts."
|
||||
msgstr "Bekijk je 200 meest recente meldingen."
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
#~ msgid "Visible Fields"
|
||||
#~ msgstr "Zichtbare kolommen"
|
||||
msgid "Visible Fields"
|
||||
msgstr "Zichtbare kolommen"
|
||||
|
||||
#: src/components/routes/domain.tsx
|
||||
#: src/components/routes/monitor.tsx
|
||||
|
||||
@@ -151,8 +151,8 @@ msgid "Add Monitor"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "Add System"
|
||||
msgstr ""
|
||||
#~ msgid "Add System"
|
||||
#~ msgstr ""
|
||||
|
||||
#: src/components/routes/settings/notifications.tsx
|
||||
msgid "Add URL"
|
||||
@@ -203,12 +203,10 @@ msgstr "Varselhistorikk"
|
||||
msgid "Alerts"
|
||||
msgstr "Alarmer"
|
||||
|
||||
#. placeholder {0}: data.length
|
||||
#. placeholder {0}: stats.total
|
||||
#. placeholder {0}: statusCounts.total
|
||||
#: src/components/domains-table/domains-table.tsx
|
||||
#: src/components/monitors-table/monitors-table.tsx
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "All ({0})"
|
||||
msgstr ""
|
||||
|
||||
@@ -224,9 +222,14 @@ msgstr "Alle containere"
|
||||
#: src/components/command-palette.tsx
|
||||
#: src/components/routes/settings/quiet-hours.tsx
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "All Systems"
|
||||
msgstr "Alle Systemer"
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "App update"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/systems-table/systems-table-columns.tsx
|
||||
msgid "Are you sure you want to delete {name}?"
|
||||
msgstr "Er du sikker på at du vil slette {name}?"
|
||||
@@ -338,6 +341,10 @@ msgstr "Beszel støtter OpenID Connect og mange OAuth2 autentiserings-tilbydere.
|
||||
msgid "Beszel uses <0>Shoutrrr</0> to integrate with popular notification services."
|
||||
msgstr "Beszel bruker <0>Shoutrrr</0> for integrering mot populære meldingstjenester."
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Beszel will pull ghcr.io/dvorinka/beszel:latest, recreate the running container, and restart the app. All signed-in users can start this action."
|
||||
msgstr ""
|
||||
|
||||
#: src/components/add-system.tsx
|
||||
msgid "Binary"
|
||||
msgstr "Binær"
|
||||
@@ -385,6 +392,7 @@ msgstr "Kan stoppe"
|
||||
#: src/components/domains-table/domains-table.tsx
|
||||
#: src/components/monitors-table/add-monitor-dialog.tsx
|
||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||
#: src/components/routes/settings/general.tsx
|
||||
#: src/components/routes/settings/quiet-hours.tsx
|
||||
#: src/components/systems-table/systems-table-columns.tsx
|
||||
msgid "Cancel"
|
||||
@@ -447,6 +455,10 @@ msgstr "Sjekk {email} for en nullstillings-link."
|
||||
msgid "Check logs for more details."
|
||||
msgstr "Sjekk loggene for flere detaljer."
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Check now"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/routes/monitor.tsx
|
||||
msgid "Check Now"
|
||||
msgstr ""
|
||||
@@ -482,8 +494,8 @@ msgid "Click to copy"
|
||||
msgstr "Klikk for å kopiere"
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "Columns"
|
||||
msgstr ""
|
||||
#~ msgid "Columns"
|
||||
#~ msgstr ""
|
||||
|
||||
#: src/components/login/forgot-pass-form.tsx
|
||||
#: src/components/login/forgot-pass-form.tsx
|
||||
@@ -1750,6 +1762,10 @@ msgstr ""
|
||||
#~ msgid "Response Times"
|
||||
#~ msgstr ""
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Restarting"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/systemd-table/systemd-table.tsx
|
||||
msgid "Restarts"
|
||||
msgstr "Omstarter"
|
||||
@@ -1917,8 +1933,8 @@ msgid "SMTP settings"
|
||||
msgstr "SMTP-innstillinger"
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
#~ msgid "Sort By"
|
||||
#~ msgstr "Sorter Etter"
|
||||
msgid "Sort By"
|
||||
msgstr "Sorter Etter"
|
||||
|
||||
#: src/components/routes/domain.tsx
|
||||
#~ msgid "SSL Certificate"
|
||||
@@ -1929,6 +1945,10 @@ msgstr "SMTP-innstillinger"
|
||||
msgid "Start Time"
|
||||
msgstr "Starttid"
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Start update"
|
||||
msgstr ""
|
||||
|
||||
#. Context: alert state (active or resolved)
|
||||
#: src/components/alerts-history-columns.tsx
|
||||
#: src/components/routes/settings/quiet-hours.tsx
|
||||
@@ -2248,10 +2268,23 @@ msgstr "Oppe ({upSystemsLength})"
|
||||
msgid "Update"
|
||||
msgstr "Oppdater"
|
||||
|
||||
#: src/components/navbar.tsx
|
||||
#: src/components/navbar.tsx
|
||||
msgid "Update available"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Update Beszel now?"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/monitors-table/add-monitor-dialog.tsx
|
||||
msgid "Update Monitor"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Update now"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/containers-table/containers-table-columns.tsx
|
||||
#: src/components/routes/system/smart-table.tsx
|
||||
#: src/components/systemd-table/systemd-table-columns.tsx
|
||||
@@ -2335,8 +2368,8 @@ msgid "View your 200 most recent alerts."
|
||||
msgstr "Vis de 200 siste varslene."
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
#~ msgid "Visible Fields"
|
||||
#~ msgstr "Synlige Felter"
|
||||
msgid "Visible Fields"
|
||||
msgstr "Synlige Felter"
|
||||
|
||||
#: src/components/routes/domain.tsx
|
||||
#: src/components/routes/monitor.tsx
|
||||
|
||||
@@ -151,8 +151,8 @@ msgid "Add Monitor"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "Add System"
|
||||
msgstr ""
|
||||
#~ msgid "Add System"
|
||||
#~ msgstr ""
|
||||
|
||||
#: src/components/routes/settings/notifications.tsx
|
||||
msgid "Add URL"
|
||||
@@ -203,12 +203,10 @@ msgstr "Historia alertów"
|
||||
msgid "Alerts"
|
||||
msgstr "Alerty"
|
||||
|
||||
#. placeholder {0}: data.length
|
||||
#. placeholder {0}: stats.total
|
||||
#. placeholder {0}: statusCounts.total
|
||||
#: src/components/domains-table/domains-table.tsx
|
||||
#: src/components/monitors-table/monitors-table.tsx
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "All ({0})"
|
||||
msgstr ""
|
||||
|
||||
@@ -224,9 +222,14 @@ msgstr "Wszystkie kontenery"
|
||||
#: src/components/command-palette.tsx
|
||||
#: src/components/routes/settings/quiet-hours.tsx
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "All Systems"
|
||||
msgstr "Wszystkie systemy"
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "App update"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/systems-table/systems-table-columns.tsx
|
||||
msgid "Are you sure you want to delete {name}?"
|
||||
msgstr "Czy na pewno chcesz usunąć {name}?"
|
||||
@@ -338,6 +341,10 @@ msgstr "Beszel obsługuje OpenID Connect i wielu dostawców uwierzytelniania OAu
|
||||
msgid "Beszel uses <0>Shoutrrr</0> to integrate with popular notification services."
|
||||
msgstr "Beszel używa <0>Shoutrrr</0> do integracji z popularnymi serwisami powiadomień."
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Beszel will pull ghcr.io/dvorinka/beszel:latest, recreate the running container, and restart the app. All signed-in users can start this action."
|
||||
msgstr ""
|
||||
|
||||
#: src/components/add-system.tsx
|
||||
msgid "Binary"
|
||||
msgstr "Plik binarny"
|
||||
@@ -385,6 +392,7 @@ msgstr "Może zatrzymać"
|
||||
#: src/components/domains-table/domains-table.tsx
|
||||
#: src/components/monitors-table/add-monitor-dialog.tsx
|
||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||
#: src/components/routes/settings/general.tsx
|
||||
#: src/components/routes/settings/quiet-hours.tsx
|
||||
#: src/components/systems-table/systems-table-columns.tsx
|
||||
msgid "Cancel"
|
||||
@@ -447,6 +455,10 @@ msgstr "Sprawdź {email}, aby uzyskać link do resetowania."
|
||||
msgid "Check logs for more details."
|
||||
msgstr "Sprawdź logi, aby uzyskać więcej informacji."
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Check now"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/routes/monitor.tsx
|
||||
msgid "Check Now"
|
||||
msgstr ""
|
||||
@@ -482,8 +494,8 @@ msgid "Click to copy"
|
||||
msgstr "Kliknij, aby skopiować"
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "Columns"
|
||||
msgstr ""
|
||||
#~ msgid "Columns"
|
||||
#~ msgstr ""
|
||||
|
||||
#: src/components/login/forgot-pass-form.tsx
|
||||
#: src/components/login/forgot-pass-form.tsx
|
||||
@@ -1750,6 +1762,10 @@ msgstr ""
|
||||
#~ msgid "Response Times"
|
||||
#~ msgstr ""
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Restarting"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/systemd-table/systemd-table.tsx
|
||||
msgid "Restarts"
|
||||
msgstr "Uruchamia ponownie"
|
||||
@@ -1917,8 +1933,8 @@ msgid "SMTP settings"
|
||||
msgstr "Ustawienia SMTP"
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
#~ msgid "Sort By"
|
||||
#~ msgstr "Sortuj według"
|
||||
msgid "Sort By"
|
||||
msgstr "Sortuj według"
|
||||
|
||||
#: src/components/routes/domain.tsx
|
||||
#~ msgid "SSL Certificate"
|
||||
@@ -1929,6 +1945,10 @@ msgstr "Ustawienia SMTP"
|
||||
msgid "Start Time"
|
||||
msgstr "Czas rozpoczęcia"
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Start update"
|
||||
msgstr ""
|
||||
|
||||
#. Context: alert state (active or resolved)
|
||||
#: src/components/alerts-history-columns.tsx
|
||||
#: src/components/routes/settings/quiet-hours.tsx
|
||||
@@ -2248,10 +2268,23 @@ msgstr "Działa ({upSystemsLength})"
|
||||
msgid "Update"
|
||||
msgstr "Aktualizuj"
|
||||
|
||||
#: src/components/navbar.tsx
|
||||
#: src/components/navbar.tsx
|
||||
msgid "Update available"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Update Beszel now?"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/monitors-table/add-monitor-dialog.tsx
|
||||
msgid "Update Monitor"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Update now"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/containers-table/containers-table-columns.tsx
|
||||
#: src/components/routes/system/smart-table.tsx
|
||||
#: src/components/systemd-table/systemd-table-columns.tsx
|
||||
@@ -2335,8 +2368,8 @@ msgid "View your 200 most recent alerts."
|
||||
msgstr "Wyświetl 200 ostatnich alertów."
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
#~ msgid "Visible Fields"
|
||||
#~ msgstr "Widoczne kolumny"
|
||||
msgid "Visible Fields"
|
||||
msgstr "Widoczne kolumny"
|
||||
|
||||
#: src/components/routes/domain.tsx
|
||||
#: src/components/routes/monitor.tsx
|
||||
|
||||
@@ -151,8 +151,8 @@ msgid "Add Monitor"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "Add System"
|
||||
msgstr ""
|
||||
#~ msgid "Add System"
|
||||
#~ msgstr ""
|
||||
|
||||
#: src/components/routes/settings/notifications.tsx
|
||||
msgid "Add URL"
|
||||
@@ -203,12 +203,10 @@ msgstr "Histórico de alertas"
|
||||
msgid "Alerts"
|
||||
msgstr "Alertas"
|
||||
|
||||
#. placeholder {0}: data.length
|
||||
#. placeholder {0}: stats.total
|
||||
#. placeholder {0}: statusCounts.total
|
||||
#: src/components/domains-table/domains-table.tsx
|
||||
#: src/components/monitors-table/monitors-table.tsx
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "All ({0})"
|
||||
msgstr ""
|
||||
|
||||
@@ -224,9 +222,14 @@ msgstr "Todos os Contêineres"
|
||||
#: src/components/command-palette.tsx
|
||||
#: src/components/routes/settings/quiet-hours.tsx
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "All Systems"
|
||||
msgstr "Todos os Sistemas"
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "App update"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/systems-table/systems-table-columns.tsx
|
||||
msgid "Are you sure you want to delete {name}?"
|
||||
msgstr "Tem certeza de que deseja excluir {name}?"
|
||||
@@ -338,6 +341,10 @@ msgstr "Beszel suporta OpenID Connect e muitos provedores de autenticação OAut
|
||||
msgid "Beszel uses <0>Shoutrrr</0> to integrate with popular notification services."
|
||||
msgstr "Beszel usa <0>Shoutrrr</0> para integrar com serviços de notificação populares."
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Beszel will pull ghcr.io/dvorinka/beszel:latest, recreate the running container, and restart the app. All signed-in users can start this action."
|
||||
msgstr ""
|
||||
|
||||
#: src/components/add-system.tsx
|
||||
msgid "Binary"
|
||||
msgstr "Binário"
|
||||
@@ -385,6 +392,7 @@ msgstr "Pode parar"
|
||||
#: src/components/domains-table/domains-table.tsx
|
||||
#: src/components/monitors-table/add-monitor-dialog.tsx
|
||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||
#: src/components/routes/settings/general.tsx
|
||||
#: src/components/routes/settings/quiet-hours.tsx
|
||||
#: src/components/systems-table/systems-table-columns.tsx
|
||||
msgid "Cancel"
|
||||
@@ -447,6 +455,10 @@ msgstr "Verifique {email} para um link de redefinição."
|
||||
msgid "Check logs for more details."
|
||||
msgstr "Verifique os logs para mais detalhes."
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Check now"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/routes/monitor.tsx
|
||||
msgid "Check Now"
|
||||
msgstr ""
|
||||
@@ -482,8 +494,8 @@ msgid "Click to copy"
|
||||
msgstr "Clique para copiar"
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "Columns"
|
||||
msgstr ""
|
||||
#~ msgid "Columns"
|
||||
#~ msgstr ""
|
||||
|
||||
#: src/components/login/forgot-pass-form.tsx
|
||||
#: src/components/login/forgot-pass-form.tsx
|
||||
@@ -1750,6 +1762,10 @@ msgstr ""
|
||||
#~ msgid "Response Times"
|
||||
#~ msgstr ""
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Restarting"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/systemd-table/systemd-table.tsx
|
||||
msgid "Restarts"
|
||||
msgstr "Reinícios"
|
||||
@@ -1917,8 +1933,8 @@ msgid "SMTP settings"
|
||||
msgstr "Configurações SMTP"
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
#~ msgid "Sort By"
|
||||
#~ msgstr "Ordenar Por"
|
||||
msgid "Sort By"
|
||||
msgstr "Ordenar Por"
|
||||
|
||||
#: src/components/routes/domain.tsx
|
||||
#~ msgid "SSL Certificate"
|
||||
@@ -1929,6 +1945,10 @@ msgstr "Configurações SMTP"
|
||||
msgid "Start Time"
|
||||
msgstr "Hora de Início"
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Start update"
|
||||
msgstr ""
|
||||
|
||||
#. Context: alert state (active or resolved)
|
||||
#: src/components/alerts-history-columns.tsx
|
||||
#: src/components/routes/settings/quiet-hours.tsx
|
||||
@@ -2248,10 +2268,23 @@ msgstr "Ativo ({upSystemsLength})"
|
||||
msgid "Update"
|
||||
msgstr "Atualizar"
|
||||
|
||||
#: src/components/navbar.tsx
|
||||
#: src/components/navbar.tsx
|
||||
msgid "Update available"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Update Beszel now?"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/monitors-table/add-monitor-dialog.tsx
|
||||
msgid "Update Monitor"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Update now"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/containers-table/containers-table-columns.tsx
|
||||
#: src/components/routes/system/smart-table.tsx
|
||||
#: src/components/systemd-table/systemd-table-columns.tsx
|
||||
@@ -2335,8 +2368,8 @@ msgid "View your 200 most recent alerts."
|
||||
msgstr "Veja os seus 200 alertas mais recentes."
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
#~ msgid "Visible Fields"
|
||||
#~ msgstr "Campos Visíveis"
|
||||
msgid "Visible Fields"
|
||||
msgstr "Campos Visíveis"
|
||||
|
||||
#: src/components/routes/domain.tsx
|
||||
#: src/components/routes/monitor.tsx
|
||||
|
||||
@@ -151,8 +151,8 @@ msgid "Add Monitor"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "Add System"
|
||||
msgstr ""
|
||||
#~ msgid "Add System"
|
||||
#~ msgstr ""
|
||||
|
||||
#: src/components/routes/settings/notifications.tsx
|
||||
msgid "Add URL"
|
||||
@@ -203,12 +203,10 @@ msgstr "История оповещений"
|
||||
msgid "Alerts"
|
||||
msgstr "Оповещения"
|
||||
|
||||
#. placeholder {0}: data.length
|
||||
#. placeholder {0}: stats.total
|
||||
#. placeholder {0}: statusCounts.total
|
||||
#: src/components/domains-table/domains-table.tsx
|
||||
#: src/components/monitors-table/monitors-table.tsx
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "All ({0})"
|
||||
msgstr ""
|
||||
|
||||
@@ -224,9 +222,14 @@ msgstr "Все контейнеры"
|
||||
#: src/components/command-palette.tsx
|
||||
#: src/components/routes/settings/quiet-hours.tsx
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "All Systems"
|
||||
msgstr "Все системы"
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "App update"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/systems-table/systems-table-columns.tsx
|
||||
msgid "Are you sure you want to delete {name}?"
|
||||
msgstr "Вы уверены, что хотите удалить {name}?"
|
||||
@@ -338,6 +341,10 @@ msgstr "Beszel поддерживает OpenID Connect и множество п
|
||||
msgid "Beszel uses <0>Shoutrrr</0> to integrate with popular notification services."
|
||||
msgstr "Beszel использует <0>Shoutrrr</0> для интеграции с популярными сервисами уведомлений."
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Beszel will pull ghcr.io/dvorinka/beszel:latest, recreate the running container, and restart the app. All signed-in users can start this action."
|
||||
msgstr ""
|
||||
|
||||
#: src/components/add-system.tsx
|
||||
msgid "Binary"
|
||||
msgstr "Двоичный"
|
||||
@@ -385,6 +392,7 @@ msgstr "Может остановить"
|
||||
#: src/components/domains-table/domains-table.tsx
|
||||
#: src/components/monitors-table/add-monitor-dialog.tsx
|
||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||
#: src/components/routes/settings/general.tsx
|
||||
#: src/components/routes/settings/quiet-hours.tsx
|
||||
#: src/components/systems-table/systems-table-columns.tsx
|
||||
msgid "Cancel"
|
||||
@@ -447,6 +455,10 @@ msgstr "Проверьте {email} для получения ссылки на
|
||||
msgid "Check logs for more details."
|
||||
msgstr "Проверьте журналы для получения более подробной информации."
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Check now"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/routes/monitor.tsx
|
||||
msgid "Check Now"
|
||||
msgstr ""
|
||||
@@ -482,8 +494,8 @@ msgid "Click to copy"
|
||||
msgstr "Нажмите, чтобы скопировать"
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "Columns"
|
||||
msgstr ""
|
||||
#~ msgid "Columns"
|
||||
#~ msgstr ""
|
||||
|
||||
#: src/components/login/forgot-pass-form.tsx
|
||||
#: src/components/login/forgot-pass-form.tsx
|
||||
@@ -1750,6 +1762,10 @@ msgstr ""
|
||||
#~ msgid "Response Times"
|
||||
#~ msgstr ""
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Restarting"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/systemd-table/systemd-table.tsx
|
||||
msgid "Restarts"
|
||||
msgstr "Перезапуски"
|
||||
@@ -1917,8 +1933,8 @@ msgid "SMTP settings"
|
||||
msgstr "Настройки SMTP"
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
#~ msgid "Sort By"
|
||||
#~ msgstr "Сортировать по"
|
||||
msgid "Sort By"
|
||||
msgstr "Сортировать по"
|
||||
|
||||
#: src/components/routes/domain.tsx
|
||||
#~ msgid "SSL Certificate"
|
||||
@@ -1929,6 +1945,10 @@ msgstr "Настройки SMTP"
|
||||
msgid "Start Time"
|
||||
msgstr "Время начала"
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Start update"
|
||||
msgstr ""
|
||||
|
||||
#. Context: alert state (active or resolved)
|
||||
#: src/components/alerts-history-columns.tsx
|
||||
#: src/components/routes/settings/quiet-hours.tsx
|
||||
@@ -2248,10 +2268,23 @@ msgstr "В сети ({upSystemsLength})"
|
||||
msgid "Update"
|
||||
msgstr "Обновить"
|
||||
|
||||
#: src/components/navbar.tsx
|
||||
#: src/components/navbar.tsx
|
||||
msgid "Update available"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Update Beszel now?"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/monitors-table/add-monitor-dialog.tsx
|
||||
msgid "Update Monitor"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Update now"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/containers-table/containers-table-columns.tsx
|
||||
#: src/components/routes/system/smart-table.tsx
|
||||
#: src/components/systemd-table/systemd-table-columns.tsx
|
||||
@@ -2335,8 +2368,8 @@ msgid "View your 200 most recent alerts."
|
||||
msgstr "Просмотреть 200 последних оповещений."
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
#~ msgid "Visible Fields"
|
||||
#~ msgstr "Видимые столбцы"
|
||||
msgid "Visible Fields"
|
||||
msgstr "Видимые столбцы"
|
||||
|
||||
#: src/components/routes/domain.tsx
|
||||
#: src/components/routes/monitor.tsx
|
||||
|
||||
@@ -151,8 +151,8 @@ msgid "Add Monitor"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "Add System"
|
||||
msgstr ""
|
||||
#~ msgid "Add System"
|
||||
#~ msgstr ""
|
||||
|
||||
#: src/components/routes/settings/notifications.tsx
|
||||
msgid "Add URL"
|
||||
@@ -203,12 +203,10 @@ msgstr "Zgodovina opozoril"
|
||||
msgid "Alerts"
|
||||
msgstr "Opozorila"
|
||||
|
||||
#. placeholder {0}: data.length
|
||||
#. placeholder {0}: stats.total
|
||||
#. placeholder {0}: statusCounts.total
|
||||
#: src/components/domains-table/domains-table.tsx
|
||||
#: src/components/monitors-table/monitors-table.tsx
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "All ({0})"
|
||||
msgstr ""
|
||||
|
||||
@@ -224,9 +222,14 @@ msgstr "Vsi kontejnerji"
|
||||
#: src/components/command-palette.tsx
|
||||
#: src/components/routes/settings/quiet-hours.tsx
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "All Systems"
|
||||
msgstr "Vsi sistemi"
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "App update"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/systems-table/systems-table-columns.tsx
|
||||
msgid "Are you sure you want to delete {name}?"
|
||||
msgstr "Ali ste prepričani, da želite izbrisati {name}?"
|
||||
@@ -338,6 +341,10 @@ msgstr "Beszel podpira OpenID Connect in številne ponudnike preverjanja pristno
|
||||
msgid "Beszel uses <0>Shoutrrr</0> to integrate with popular notification services."
|
||||
msgstr "Beszel uporablja <0>Shoutrrr</0> za integracijo s priljubljenimi storitvami obveščanja."
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Beszel will pull ghcr.io/dvorinka/beszel:latest, recreate the running container, and restart the app. All signed-in users can start this action."
|
||||
msgstr ""
|
||||
|
||||
#: src/components/add-system.tsx
|
||||
msgid "Binary"
|
||||
msgstr "Binarno"
|
||||
@@ -385,6 +392,7 @@ msgstr "Lahko ustavi"
|
||||
#: src/components/domains-table/domains-table.tsx
|
||||
#: src/components/monitors-table/add-monitor-dialog.tsx
|
||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||
#: src/components/routes/settings/general.tsx
|
||||
#: src/components/routes/settings/quiet-hours.tsx
|
||||
#: src/components/systems-table/systems-table-columns.tsx
|
||||
msgid "Cancel"
|
||||
@@ -447,6 +455,10 @@ msgstr "Preverite {email} za povezavo za ponastavitev."
|
||||
msgid "Check logs for more details."
|
||||
msgstr "Za več podrobnosti preverite dnevnike."
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Check now"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/routes/monitor.tsx
|
||||
msgid "Check Now"
|
||||
msgstr ""
|
||||
@@ -482,8 +494,8 @@ msgid "Click to copy"
|
||||
msgstr "Klikni za kopiranje"
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "Columns"
|
||||
msgstr ""
|
||||
#~ msgid "Columns"
|
||||
#~ msgstr ""
|
||||
|
||||
#: src/components/login/forgot-pass-form.tsx
|
||||
#: src/components/login/forgot-pass-form.tsx
|
||||
@@ -1750,6 +1762,10 @@ msgstr ""
|
||||
#~ msgid "Response Times"
|
||||
#~ msgstr ""
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Restarting"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/systemd-table/systemd-table.tsx
|
||||
msgid "Restarts"
|
||||
msgstr "Ponovni zagoni"
|
||||
@@ -1917,8 +1933,8 @@ msgid "SMTP settings"
|
||||
msgstr "SMTP nastavitve"
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
#~ msgid "Sort By"
|
||||
#~ msgstr "Razvrsti po"
|
||||
msgid "Sort By"
|
||||
msgstr "Razvrsti po"
|
||||
|
||||
#: src/components/routes/domain.tsx
|
||||
#~ msgid "SSL Certificate"
|
||||
@@ -1929,6 +1945,10 @@ msgstr "SMTP nastavitve"
|
||||
msgid "Start Time"
|
||||
msgstr "Čas začetka"
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Start update"
|
||||
msgstr ""
|
||||
|
||||
#. Context: alert state (active or resolved)
|
||||
#: src/components/alerts-history-columns.tsx
|
||||
#: src/components/routes/settings/quiet-hours.tsx
|
||||
@@ -2248,10 +2268,23 @@ msgstr "Delujoči ({upSystemsLength})"
|
||||
msgid "Update"
|
||||
msgstr "Posodobi"
|
||||
|
||||
#: src/components/navbar.tsx
|
||||
#: src/components/navbar.tsx
|
||||
msgid "Update available"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Update Beszel now?"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/monitors-table/add-monitor-dialog.tsx
|
||||
msgid "Update Monitor"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Update now"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/containers-table/containers-table-columns.tsx
|
||||
#: src/components/routes/system/smart-table.tsx
|
||||
#: src/components/systemd-table/systemd-table-columns.tsx
|
||||
@@ -2335,8 +2368,8 @@ msgid "View your 200 most recent alerts."
|
||||
msgstr "Oglejte si svojih 200 najnovejših opozoril."
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
#~ msgid "Visible Fields"
|
||||
#~ msgstr "Vidna polja"
|
||||
msgid "Visible Fields"
|
||||
msgstr "Vidna polja"
|
||||
|
||||
#: src/components/routes/domain.tsx
|
||||
#: src/components/routes/monitor.tsx
|
||||
|
||||
@@ -151,8 +151,8 @@ msgid "Add Monitor"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "Add System"
|
||||
msgstr ""
|
||||
#~ msgid "Add System"
|
||||
#~ msgstr ""
|
||||
|
||||
#: src/components/routes/settings/notifications.tsx
|
||||
msgid "Add URL"
|
||||
@@ -203,12 +203,10 @@ msgstr "Историја упозорења"
|
||||
msgid "Alerts"
|
||||
msgstr "Упозорења"
|
||||
|
||||
#. placeholder {0}: data.length
|
||||
#. placeholder {0}: stats.total
|
||||
#. placeholder {0}: statusCounts.total
|
||||
#: src/components/domains-table/domains-table.tsx
|
||||
#: src/components/monitors-table/monitors-table.tsx
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "All ({0})"
|
||||
msgstr ""
|
||||
|
||||
@@ -224,9 +222,14 @@ msgstr "Сви контејнери"
|
||||
#: src/components/command-palette.tsx
|
||||
#: src/components/routes/settings/quiet-hours.tsx
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "All Systems"
|
||||
msgstr "Сви системи"
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "App update"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/systems-table/systems-table-columns.tsx
|
||||
msgid "Are you sure you want to delete {name}?"
|
||||
msgstr "Да ли сте сигурни да желите да избришете {name}?"
|
||||
@@ -338,6 +341,10 @@ msgstr "Beszel подржава OpenID Connect и многе OAuth2 провај
|
||||
msgid "Beszel uses <0>Shoutrrr</0> to integrate with popular notification services."
|
||||
msgstr "Beszel користи <0>Shoutrrr</0> за интеграцију са популарним сервисима за обавештавања."
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Beszel will pull ghcr.io/dvorinka/beszel:latest, recreate the running container, and restart the app. All signed-in users can start this action."
|
||||
msgstr ""
|
||||
|
||||
#: src/components/add-system.tsx
|
||||
msgid "Binary"
|
||||
msgstr "Бинарни"
|
||||
@@ -385,6 +392,7 @@ msgstr "Може се зауставити"
|
||||
#: src/components/domains-table/domains-table.tsx
|
||||
#: src/components/monitors-table/add-monitor-dialog.tsx
|
||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||
#: src/components/routes/settings/general.tsx
|
||||
#: src/components/routes/settings/quiet-hours.tsx
|
||||
#: src/components/systems-table/systems-table-columns.tsx
|
||||
msgid "Cancel"
|
||||
@@ -447,6 +455,10 @@ msgstr "Проверите {email} за линк за ресетовање."
|
||||
msgid "Check logs for more details."
|
||||
msgstr "Проверите логове за више детаља."
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Check now"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/routes/monitor.tsx
|
||||
msgid "Check Now"
|
||||
msgstr ""
|
||||
@@ -482,8 +494,8 @@ msgid "Click to copy"
|
||||
msgstr "Кликните да копирате"
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "Columns"
|
||||
msgstr ""
|
||||
#~ msgid "Columns"
|
||||
#~ msgstr ""
|
||||
|
||||
#: src/components/login/forgot-pass-form.tsx
|
||||
#: src/components/login/forgot-pass-form.tsx
|
||||
@@ -1750,6 +1762,10 @@ msgstr ""
|
||||
#~ msgid "Response Times"
|
||||
#~ msgstr ""
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Restarting"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/systemd-table/systemd-table.tsx
|
||||
msgid "Restarts"
|
||||
msgstr "Поновна покретања"
|
||||
@@ -1917,8 +1933,8 @@ msgid "SMTP settings"
|
||||
msgstr "SMTP подешавања"
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
#~ msgid "Sort By"
|
||||
#~ msgstr "Сортирај по"
|
||||
msgid "Sort By"
|
||||
msgstr "Сортирај по"
|
||||
|
||||
#: src/components/routes/domain.tsx
|
||||
#~ msgid "SSL Certificate"
|
||||
@@ -1929,6 +1945,10 @@ msgstr "SMTP подешавања"
|
||||
msgid "Start Time"
|
||||
msgstr "Време почетка"
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Start update"
|
||||
msgstr ""
|
||||
|
||||
#. Context: alert state (active or resolved)
|
||||
#: src/components/alerts-history-columns.tsx
|
||||
#: src/components/routes/settings/quiet-hours.tsx
|
||||
@@ -2248,10 +2268,23 @@ msgstr "Укључен ({upSystemsLength})"
|
||||
msgid "Update"
|
||||
msgstr "Ажурирај"
|
||||
|
||||
#: src/components/navbar.tsx
|
||||
#: src/components/navbar.tsx
|
||||
msgid "Update available"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Update Beszel now?"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/monitors-table/add-monitor-dialog.tsx
|
||||
msgid "Update Monitor"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Update now"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/containers-table/containers-table-columns.tsx
|
||||
#: src/components/routes/system/smart-table.tsx
|
||||
#: src/components/systemd-table/systemd-table-columns.tsx
|
||||
@@ -2335,8 +2368,8 @@ msgid "View your 200 most recent alerts."
|
||||
msgstr "Погледајте ваших 200 најновијих упозорења."
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
#~ msgid "Visible Fields"
|
||||
#~ msgstr "Видљива поља"
|
||||
msgid "Visible Fields"
|
||||
msgstr "Видљива поља"
|
||||
|
||||
#: src/components/routes/domain.tsx
|
||||
#: src/components/routes/monitor.tsx
|
||||
|
||||
@@ -151,8 +151,8 @@ msgid "Add Monitor"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "Add System"
|
||||
msgstr ""
|
||||
#~ msgid "Add System"
|
||||
#~ msgstr ""
|
||||
|
||||
#: src/components/routes/settings/notifications.tsx
|
||||
msgid "Add URL"
|
||||
@@ -203,12 +203,10 @@ msgstr "Larmhistorik"
|
||||
msgid "Alerts"
|
||||
msgstr "Larm"
|
||||
|
||||
#. placeholder {0}: data.length
|
||||
#. placeholder {0}: stats.total
|
||||
#. placeholder {0}: statusCounts.total
|
||||
#: src/components/domains-table/domains-table.tsx
|
||||
#: src/components/monitors-table/monitors-table.tsx
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "All ({0})"
|
||||
msgstr ""
|
||||
|
||||
@@ -224,9 +222,14 @@ msgstr "Alla behållare"
|
||||
#: src/components/command-palette.tsx
|
||||
#: src/components/routes/settings/quiet-hours.tsx
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "All Systems"
|
||||
msgstr "Alla system"
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "App update"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/systems-table/systems-table-columns.tsx
|
||||
msgid "Are you sure you want to delete {name}?"
|
||||
msgstr "Är du säker på att du vill ta bort {name}?"
|
||||
@@ -338,6 +341,10 @@ msgstr "Beszel stöder OpenID Connect och många OAuth2-autentiseringsleverantö
|
||||
msgid "Beszel uses <0>Shoutrrr</0> to integrate with popular notification services."
|
||||
msgstr "Beszel använder <0>Shoutrrr</0> för att integrera med populära aviseringstjänster."
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Beszel will pull ghcr.io/dvorinka/beszel:latest, recreate the running container, and restart the app. All signed-in users can start this action."
|
||||
msgstr ""
|
||||
|
||||
#: src/components/add-system.tsx
|
||||
msgid "Binary"
|
||||
msgstr "Binär"
|
||||
@@ -385,6 +392,7 @@ msgstr "Kan stoppa"
|
||||
#: src/components/domains-table/domains-table.tsx
|
||||
#: src/components/monitors-table/add-monitor-dialog.tsx
|
||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||
#: src/components/routes/settings/general.tsx
|
||||
#: src/components/routes/settings/quiet-hours.tsx
|
||||
#: src/components/systems-table/systems-table-columns.tsx
|
||||
msgid "Cancel"
|
||||
@@ -447,6 +455,10 @@ msgstr "Kontrollera {email} för en återställningslänk."
|
||||
msgid "Check logs for more details."
|
||||
msgstr "Kontrollera loggarna för mer information."
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Check now"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/routes/monitor.tsx
|
||||
msgid "Check Now"
|
||||
msgstr ""
|
||||
@@ -482,8 +494,8 @@ msgid "Click to copy"
|
||||
msgstr "Klicka för att kopiera"
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "Columns"
|
||||
msgstr ""
|
||||
#~ msgid "Columns"
|
||||
#~ msgstr ""
|
||||
|
||||
#: src/components/login/forgot-pass-form.tsx
|
||||
#: src/components/login/forgot-pass-form.tsx
|
||||
@@ -1750,6 +1762,10 @@ msgstr ""
|
||||
#~ msgid "Response Times"
|
||||
#~ msgstr ""
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Restarting"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/systemd-table/systemd-table.tsx
|
||||
msgid "Restarts"
|
||||
msgstr "Omstarter"
|
||||
@@ -1917,8 +1933,8 @@ msgid "SMTP settings"
|
||||
msgstr "SMTP-inställningar"
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
#~ msgid "Sort By"
|
||||
#~ msgstr "Sortera efter"
|
||||
msgid "Sort By"
|
||||
msgstr "Sortera efter"
|
||||
|
||||
#: src/components/routes/domain.tsx
|
||||
#~ msgid "SSL Certificate"
|
||||
@@ -1929,6 +1945,10 @@ msgstr "SMTP-inställningar"
|
||||
msgid "Start Time"
|
||||
msgstr "Starttid"
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Start update"
|
||||
msgstr ""
|
||||
|
||||
#. Context: alert state (active or resolved)
|
||||
#: src/components/alerts-history-columns.tsx
|
||||
#: src/components/routes/settings/quiet-hours.tsx
|
||||
@@ -2248,10 +2268,23 @@ msgstr "Upp ({upSystemsLength})"
|
||||
msgid "Update"
|
||||
msgstr "Uppdatera"
|
||||
|
||||
#: src/components/navbar.tsx
|
||||
#: src/components/navbar.tsx
|
||||
msgid "Update available"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Update Beszel now?"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/monitors-table/add-monitor-dialog.tsx
|
||||
msgid "Update Monitor"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Update now"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/containers-table/containers-table-columns.tsx
|
||||
#: src/components/routes/system/smart-table.tsx
|
||||
#: src/components/systemd-table/systemd-table-columns.tsx
|
||||
@@ -2335,8 +2368,8 @@ msgid "View your 200 most recent alerts."
|
||||
msgstr "Visa dina 200 senaste larm."
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
#~ msgid "Visible Fields"
|
||||
#~ msgstr "Synliga fält"
|
||||
msgid "Visible Fields"
|
||||
msgstr "Synliga fält"
|
||||
|
||||
#: src/components/routes/domain.tsx
|
||||
#: src/components/routes/monitor.tsx
|
||||
|
||||
@@ -151,8 +151,8 @@ msgid "Add Monitor"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "Add System"
|
||||
msgstr ""
|
||||
#~ msgid "Add System"
|
||||
#~ msgstr ""
|
||||
|
||||
#: src/components/routes/settings/notifications.tsx
|
||||
msgid "Add URL"
|
||||
@@ -203,12 +203,10 @@ msgstr "Uyarı Geçmişi"
|
||||
msgid "Alerts"
|
||||
msgstr "Uyarılar"
|
||||
|
||||
#. placeholder {0}: data.length
|
||||
#. placeholder {0}: stats.total
|
||||
#. placeholder {0}: statusCounts.total
|
||||
#: src/components/domains-table/domains-table.tsx
|
||||
#: src/components/monitors-table/monitors-table.tsx
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "All ({0})"
|
||||
msgstr ""
|
||||
|
||||
@@ -224,9 +222,14 @@ msgstr "Tüm Konteynerler"
|
||||
#: src/components/command-palette.tsx
|
||||
#: src/components/routes/settings/quiet-hours.tsx
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "All Systems"
|
||||
msgstr "Tüm Sistemler"
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "App update"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/systems-table/systems-table-columns.tsx
|
||||
msgid "Are you sure you want to delete {name}?"
|
||||
msgstr "{name} silmek istediğinizden emin misiniz?"
|
||||
@@ -338,6 +341,10 @@ msgstr "Beszel, OpenID Connect ve birçok OAuth2 kimlik doğrulama sağlayıcıs
|
||||
msgid "Beszel uses <0>Shoutrrr</0> to integrate with popular notification services."
|
||||
msgstr "Beszel, popüler bildirim hizmetleriyle entegre olmak için <0>Shoutrrr</0> kullanır."
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Beszel will pull ghcr.io/dvorinka/beszel:latest, recreate the running container, and restart the app. All signed-in users can start this action."
|
||||
msgstr ""
|
||||
|
||||
#: src/components/add-system.tsx
|
||||
msgid "Binary"
|
||||
msgstr "İkili"
|
||||
@@ -385,6 +392,7 @@ msgstr "Durdurulabilir"
|
||||
#: src/components/domains-table/domains-table.tsx
|
||||
#: src/components/monitors-table/add-monitor-dialog.tsx
|
||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||
#: src/components/routes/settings/general.tsx
|
||||
#: src/components/routes/settings/quiet-hours.tsx
|
||||
#: src/components/systems-table/systems-table-columns.tsx
|
||||
msgid "Cancel"
|
||||
@@ -447,6 +455,10 @@ msgstr "Sıfırlama bağlantısı için {email} kontrol edin."
|
||||
msgid "Check logs for more details."
|
||||
msgstr "Daha fazla ayrıntı için günlükleri kontrol edin."
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Check now"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/routes/monitor.tsx
|
||||
msgid "Check Now"
|
||||
msgstr ""
|
||||
@@ -482,8 +494,8 @@ msgid "Click to copy"
|
||||
msgstr "Kopyalamak için tıklayın"
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "Columns"
|
||||
msgstr ""
|
||||
#~ msgid "Columns"
|
||||
#~ msgstr ""
|
||||
|
||||
#: src/components/login/forgot-pass-form.tsx
|
||||
#: src/components/login/forgot-pass-form.tsx
|
||||
@@ -1750,6 +1762,10 @@ msgstr ""
|
||||
#~ msgid "Response Times"
|
||||
#~ msgstr ""
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Restarting"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/systemd-table/systemd-table.tsx
|
||||
msgid "Restarts"
|
||||
msgstr "Yeniden başlatmalar"
|
||||
@@ -1917,8 +1933,8 @@ msgid "SMTP settings"
|
||||
msgstr "SMTP ayarları"
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
#~ msgid "Sort By"
|
||||
#~ msgstr "Sıralama Ölçütü"
|
||||
msgid "Sort By"
|
||||
msgstr "Sıralama Ölçütü"
|
||||
|
||||
#: src/components/routes/domain.tsx
|
||||
#~ msgid "SSL Certificate"
|
||||
@@ -1929,6 +1945,10 @@ msgstr "SMTP ayarları"
|
||||
msgid "Start Time"
|
||||
msgstr "Başlangıç Saati"
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Start update"
|
||||
msgstr ""
|
||||
|
||||
#. Context: alert state (active or resolved)
|
||||
#: src/components/alerts-history-columns.tsx
|
||||
#: src/components/routes/settings/quiet-hours.tsx
|
||||
@@ -2248,10 +2268,23 @@ msgstr "Açık ({upSystemsLength})"
|
||||
msgid "Update"
|
||||
msgstr "Güncelle"
|
||||
|
||||
#: src/components/navbar.tsx
|
||||
#: src/components/navbar.tsx
|
||||
msgid "Update available"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Update Beszel now?"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/monitors-table/add-monitor-dialog.tsx
|
||||
msgid "Update Monitor"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Update now"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/containers-table/containers-table-columns.tsx
|
||||
#: src/components/routes/system/smart-table.tsx
|
||||
#: src/components/systemd-table/systemd-table-columns.tsx
|
||||
@@ -2335,8 +2368,8 @@ msgid "View your 200 most recent alerts."
|
||||
msgstr "En son 200 uyarınızı görüntüleyin."
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
#~ msgid "Visible Fields"
|
||||
#~ msgstr "Görünür Alanlar"
|
||||
msgid "Visible Fields"
|
||||
msgstr "Görünür Alanlar"
|
||||
|
||||
#: src/components/routes/domain.tsx
|
||||
#: src/components/routes/monitor.tsx
|
||||
|
||||
@@ -151,8 +151,8 @@ msgid "Add Monitor"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "Add System"
|
||||
msgstr ""
|
||||
#~ msgid "Add System"
|
||||
#~ msgstr ""
|
||||
|
||||
#: src/components/routes/settings/notifications.tsx
|
||||
msgid "Add URL"
|
||||
@@ -203,12 +203,10 @@ msgstr "Історія сповіщень"
|
||||
msgid "Alerts"
|
||||
msgstr "Сповіщення"
|
||||
|
||||
#. placeholder {0}: data.length
|
||||
#. placeholder {0}: stats.total
|
||||
#. placeholder {0}: statusCounts.total
|
||||
#: src/components/domains-table/domains-table.tsx
|
||||
#: src/components/monitors-table/monitors-table.tsx
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "All ({0})"
|
||||
msgstr ""
|
||||
|
||||
@@ -224,9 +222,14 @@ msgstr "Всі контейнери"
|
||||
#: src/components/command-palette.tsx
|
||||
#: src/components/routes/settings/quiet-hours.tsx
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "All Systems"
|
||||
msgstr "Всі системи"
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "App update"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/systems-table/systems-table-columns.tsx
|
||||
msgid "Are you sure you want to delete {name}?"
|
||||
msgstr "Ви впевнені, що хочете видалити {name}?"
|
||||
@@ -338,6 +341,10 @@ msgstr "Beszel підтримує OpenID Connect та багато постач
|
||||
msgid "Beszel uses <0>Shoutrrr</0> to integrate with popular notification services."
|
||||
msgstr "Beszel використовує <0>Shoutrrr</0> для інтеграції з популярними сервісами сповіщень."
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Beszel will pull ghcr.io/dvorinka/beszel:latest, recreate the running container, and restart the app. All signed-in users can start this action."
|
||||
msgstr ""
|
||||
|
||||
#: src/components/add-system.tsx
|
||||
msgid "Binary"
|
||||
msgstr "Двійковий"
|
||||
@@ -385,6 +392,7 @@ msgstr "Може зупинити"
|
||||
#: src/components/domains-table/domains-table.tsx
|
||||
#: src/components/monitors-table/add-monitor-dialog.tsx
|
||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||
#: src/components/routes/settings/general.tsx
|
||||
#: src/components/routes/settings/quiet-hours.tsx
|
||||
#: src/components/systems-table/systems-table-columns.tsx
|
||||
msgid "Cancel"
|
||||
@@ -447,6 +455,10 @@ msgstr "Перевірте {email} для отримання посилання
|
||||
msgid "Check logs for more details."
|
||||
msgstr "Перевірте журнали для отримання додаткової інформації."
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Check now"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/routes/monitor.tsx
|
||||
msgid "Check Now"
|
||||
msgstr ""
|
||||
@@ -482,8 +494,8 @@ msgid "Click to copy"
|
||||
msgstr "Натисніть, щоб скопіювати"
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "Columns"
|
||||
msgstr ""
|
||||
#~ msgid "Columns"
|
||||
#~ msgstr ""
|
||||
|
||||
#: src/components/login/forgot-pass-form.tsx
|
||||
#: src/components/login/forgot-pass-form.tsx
|
||||
@@ -1750,6 +1762,10 @@ msgstr ""
|
||||
#~ msgid "Response Times"
|
||||
#~ msgstr ""
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Restarting"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/systemd-table/systemd-table.tsx
|
||||
msgid "Restarts"
|
||||
msgstr "Перезапуски"
|
||||
@@ -1917,8 +1933,8 @@ msgid "SMTP settings"
|
||||
msgstr "Налаштування SMTP"
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
#~ msgid "Sort By"
|
||||
#~ msgstr "Сортувати за"
|
||||
msgid "Sort By"
|
||||
msgstr "Сортувати за"
|
||||
|
||||
#: src/components/routes/domain.tsx
|
||||
#~ msgid "SSL Certificate"
|
||||
@@ -1929,6 +1945,10 @@ msgstr "Налаштування SMTP"
|
||||
msgid "Start Time"
|
||||
msgstr "Час початку"
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Start update"
|
||||
msgstr ""
|
||||
|
||||
#. Context: alert state (active or resolved)
|
||||
#: src/components/alerts-history-columns.tsx
|
||||
#: src/components/routes/settings/quiet-hours.tsx
|
||||
@@ -2248,10 +2268,23 @@ msgstr "Працює ({upSystemsLength})"
|
||||
msgid "Update"
|
||||
msgstr "Оновити"
|
||||
|
||||
#: src/components/navbar.tsx
|
||||
#: src/components/navbar.tsx
|
||||
msgid "Update available"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Update Beszel now?"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/monitors-table/add-monitor-dialog.tsx
|
||||
msgid "Update Monitor"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Update now"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/containers-table/containers-table-columns.tsx
|
||||
#: src/components/routes/system/smart-table.tsx
|
||||
#: src/components/systemd-table/systemd-table-columns.tsx
|
||||
@@ -2335,8 +2368,8 @@ msgid "View your 200 most recent alerts."
|
||||
msgstr "Переглянути 200 останніх сповіщень."
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
#~ msgid "Visible Fields"
|
||||
#~ msgstr "Видимі стовпці"
|
||||
msgid "Visible Fields"
|
||||
msgstr "Видимі стовпці"
|
||||
|
||||
#: src/components/routes/domain.tsx
|
||||
#: src/components/routes/monitor.tsx
|
||||
|
||||
@@ -151,8 +151,8 @@ msgid "Add Monitor"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "Add System"
|
||||
msgstr ""
|
||||
#~ msgid "Add System"
|
||||
#~ msgstr ""
|
||||
|
||||
#: src/components/routes/settings/notifications.tsx
|
||||
msgid "Add URL"
|
||||
@@ -203,12 +203,10 @@ msgstr "Lịch sử Cảnh báo"
|
||||
msgid "Alerts"
|
||||
msgstr "Cảnh báo"
|
||||
|
||||
#. placeholder {0}: data.length
|
||||
#. placeholder {0}: stats.total
|
||||
#. placeholder {0}: statusCounts.total
|
||||
#: src/components/domains-table/domains-table.tsx
|
||||
#: src/components/monitors-table/monitors-table.tsx
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "All ({0})"
|
||||
msgstr ""
|
||||
|
||||
@@ -224,9 +222,14 @@ msgstr "Tất cả container"
|
||||
#: src/components/command-palette.tsx
|
||||
#: src/components/routes/settings/quiet-hours.tsx
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "All Systems"
|
||||
msgstr "Tất cả Hệ thống"
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "App update"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/systems-table/systems-table-columns.tsx
|
||||
msgid "Are you sure you want to delete {name}?"
|
||||
msgstr "Bạn có chắc chắn muốn xóa {name} không?"
|
||||
@@ -338,6 +341,10 @@ msgstr "Beszel hỗ trợ OpenID Connect và nhiều nhà cung cấp xác thực
|
||||
msgid "Beszel uses <0>Shoutrrr</0> to integrate with popular notification services."
|
||||
msgstr "Beszel sử dụng <0>Shoutrrr</0> để tích hợp với các dịch vụ thông báo phổ biến."
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Beszel will pull ghcr.io/dvorinka/beszel:latest, recreate the running container, and restart the app. All signed-in users can start this action."
|
||||
msgstr ""
|
||||
|
||||
#: src/components/add-system.tsx
|
||||
msgid "Binary"
|
||||
msgstr "Nhị phân"
|
||||
@@ -385,6 +392,7 @@ msgstr "Có thể dừng"
|
||||
#: src/components/domains-table/domains-table.tsx
|
||||
#: src/components/monitors-table/add-monitor-dialog.tsx
|
||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||
#: src/components/routes/settings/general.tsx
|
||||
#: src/components/routes/settings/quiet-hours.tsx
|
||||
#: src/components/systems-table/systems-table-columns.tsx
|
||||
msgid "Cancel"
|
||||
@@ -447,6 +455,10 @@ msgstr "Kiểm tra {email} để lấy liên kết đặt lại."
|
||||
msgid "Check logs for more details."
|
||||
msgstr "Kiểm tra nhật ký để biết thêm chi tiết."
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Check now"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/routes/monitor.tsx
|
||||
msgid "Check Now"
|
||||
msgstr ""
|
||||
@@ -482,8 +494,8 @@ msgid "Click to copy"
|
||||
msgstr "Nhấp để sao chép"
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "Columns"
|
||||
msgstr ""
|
||||
#~ msgid "Columns"
|
||||
#~ msgstr ""
|
||||
|
||||
#: src/components/login/forgot-pass-form.tsx
|
||||
#: src/components/login/forgot-pass-form.tsx
|
||||
@@ -1750,6 +1762,10 @@ msgstr ""
|
||||
#~ msgid "Response Times"
|
||||
#~ msgstr ""
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Restarting"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/systemd-table/systemd-table.tsx
|
||||
msgid "Restarts"
|
||||
msgstr "Khởi động lại"
|
||||
@@ -1917,8 +1933,8 @@ msgid "SMTP settings"
|
||||
msgstr "Cài đặt SMTP"
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
#~ msgid "Sort By"
|
||||
#~ msgstr "Sắp xếp theo"
|
||||
msgid "Sort By"
|
||||
msgstr "Sắp xếp theo"
|
||||
|
||||
#: src/components/routes/domain.tsx
|
||||
#~ msgid "SSL Certificate"
|
||||
@@ -1929,6 +1945,10 @@ msgstr "Cài đặt SMTP"
|
||||
msgid "Start Time"
|
||||
msgstr "Thời gian bắt đầu"
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Start update"
|
||||
msgstr ""
|
||||
|
||||
#. Context: alert state (active or resolved)
|
||||
#: src/components/alerts-history-columns.tsx
|
||||
#: src/components/routes/settings/quiet-hours.tsx
|
||||
@@ -2248,10 +2268,23 @@ msgstr "Hoạt động ({upSystemsLength})"
|
||||
msgid "Update"
|
||||
msgstr "Cập nhật"
|
||||
|
||||
#: src/components/navbar.tsx
|
||||
#: src/components/navbar.tsx
|
||||
msgid "Update available"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Update Beszel now?"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/monitors-table/add-monitor-dialog.tsx
|
||||
msgid "Update Monitor"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Update now"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/containers-table/containers-table-columns.tsx
|
||||
#: src/components/routes/system/smart-table.tsx
|
||||
#: src/components/systemd-table/systemd-table-columns.tsx
|
||||
@@ -2335,8 +2368,8 @@ msgid "View your 200 most recent alerts."
|
||||
msgstr "Xem 200 cảnh báo gần đây nhất của bạn."
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
#~ msgid "Visible Fields"
|
||||
#~ msgstr "Các cột hiển thị"
|
||||
msgid "Visible Fields"
|
||||
msgstr "Các cột hiển thị"
|
||||
|
||||
#: src/components/routes/domain.tsx
|
||||
#: src/components/routes/monitor.tsx
|
||||
|
||||
@@ -151,8 +151,8 @@ msgid "Add Monitor"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "Add System"
|
||||
msgstr ""
|
||||
#~ msgid "Add System"
|
||||
#~ msgstr ""
|
||||
|
||||
#: src/components/routes/settings/notifications.tsx
|
||||
msgid "Add URL"
|
||||
@@ -203,12 +203,10 @@ msgstr "警报历史"
|
||||
msgid "Alerts"
|
||||
msgstr "警报"
|
||||
|
||||
#. placeholder {0}: data.length
|
||||
#. placeholder {0}: stats.total
|
||||
#. placeholder {0}: statusCounts.total
|
||||
#: src/components/domains-table/domains-table.tsx
|
||||
#: src/components/monitors-table/monitors-table.tsx
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "All ({0})"
|
||||
msgstr ""
|
||||
|
||||
@@ -224,9 +222,14 @@ msgstr "所有容器"
|
||||
#: src/components/command-palette.tsx
|
||||
#: src/components/routes/settings/quiet-hours.tsx
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "All Systems"
|
||||
msgstr "所有客户端"
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "App update"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/systems-table/systems-table-columns.tsx
|
||||
msgid "Are you sure you want to delete {name}?"
|
||||
msgstr "您确定要删除 {name} 吗?"
|
||||
@@ -338,6 +341,10 @@ msgstr "Beszel 支持 OpenID Connect 和其他 OAuth2 认证方式。"
|
||||
msgid "Beszel uses <0>Shoutrrr</0> to integrate with popular notification services."
|
||||
msgstr "Beszel 使用 <0>Shoutrrr</0> 以实现与常见的通知服务集成。"
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Beszel will pull ghcr.io/dvorinka/beszel:latest, recreate the running container, and restart the app. All signed-in users can start this action."
|
||||
msgstr ""
|
||||
|
||||
#: src/components/add-system.tsx
|
||||
msgid "Binary"
|
||||
msgstr "二进制"
|
||||
@@ -385,6 +392,7 @@ msgstr "可停止"
|
||||
#: src/components/domains-table/domains-table.tsx
|
||||
#: src/components/monitors-table/add-monitor-dialog.tsx
|
||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||
#: src/components/routes/settings/general.tsx
|
||||
#: src/components/routes/settings/quiet-hours.tsx
|
||||
#: src/components/systems-table/systems-table-columns.tsx
|
||||
msgid "Cancel"
|
||||
@@ -447,6 +455,10 @@ msgstr "检查 {email} 以获取重置链接。"
|
||||
msgid "Check logs for more details."
|
||||
msgstr "检查日志以获取更多详细信息。"
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Check now"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/routes/monitor.tsx
|
||||
msgid "Check Now"
|
||||
msgstr ""
|
||||
@@ -482,8 +494,8 @@ msgid "Click to copy"
|
||||
msgstr "点击复制"
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "Columns"
|
||||
msgstr ""
|
||||
#~ msgid "Columns"
|
||||
#~ msgstr ""
|
||||
|
||||
#: src/components/login/forgot-pass-form.tsx
|
||||
#: src/components/login/forgot-pass-form.tsx
|
||||
@@ -1750,6 +1762,10 @@ msgstr ""
|
||||
#~ msgid "Response Times"
|
||||
#~ msgstr ""
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Restarting"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/systemd-table/systemd-table.tsx
|
||||
msgid "Restarts"
|
||||
msgstr "重启次数"
|
||||
@@ -1917,8 +1933,8 @@ msgid "SMTP settings"
|
||||
msgstr "SMTP 设置"
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
#~ msgid "Sort By"
|
||||
#~ msgstr "排序依据"
|
||||
msgid "Sort By"
|
||||
msgstr "排序依据"
|
||||
|
||||
#: src/components/routes/domain.tsx
|
||||
#~ msgid "SSL Certificate"
|
||||
@@ -1929,6 +1945,10 @@ msgstr "SMTP 设置"
|
||||
msgid "Start Time"
|
||||
msgstr "开始时间"
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Start update"
|
||||
msgstr ""
|
||||
|
||||
#. Context: alert state (active or resolved)
|
||||
#: src/components/alerts-history-columns.tsx
|
||||
#: src/components/routes/settings/quiet-hours.tsx
|
||||
@@ -2248,10 +2268,23 @@ msgstr "在线 ({upSystemsLength})"
|
||||
msgid "Update"
|
||||
msgstr "更新"
|
||||
|
||||
#: src/components/navbar.tsx
|
||||
#: src/components/navbar.tsx
|
||||
msgid "Update available"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Update Beszel now?"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/monitors-table/add-monitor-dialog.tsx
|
||||
msgid "Update Monitor"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Update now"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/containers-table/containers-table-columns.tsx
|
||||
#: src/components/routes/system/smart-table.tsx
|
||||
#: src/components/systemd-table/systemd-table-columns.tsx
|
||||
@@ -2335,8 +2368,8 @@ msgid "View your 200 most recent alerts."
|
||||
msgstr "查看您最近的200个警报。"
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
#~ msgid "Visible Fields"
|
||||
#~ msgstr "可见列"
|
||||
msgid "Visible Fields"
|
||||
msgstr "可见列"
|
||||
|
||||
#: src/components/routes/domain.tsx
|
||||
#: src/components/routes/monitor.tsx
|
||||
|
||||
@@ -151,8 +151,8 @@ msgid "Add Monitor"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "Add System"
|
||||
msgstr ""
|
||||
#~ msgid "Add System"
|
||||
#~ msgstr ""
|
||||
|
||||
#: src/components/routes/settings/notifications.tsx
|
||||
msgid "Add URL"
|
||||
@@ -203,12 +203,10 @@ msgstr "警報歷史"
|
||||
msgid "Alerts"
|
||||
msgstr "警報"
|
||||
|
||||
#. placeholder {0}: data.length
|
||||
#. placeholder {0}: stats.total
|
||||
#. placeholder {0}: statusCounts.total
|
||||
#: src/components/domains-table/domains-table.tsx
|
||||
#: src/components/monitors-table/monitors-table.tsx
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "All ({0})"
|
||||
msgstr ""
|
||||
|
||||
@@ -224,9 +222,14 @@ msgstr "所有容器"
|
||||
#: src/components/command-palette.tsx
|
||||
#: src/components/routes/settings/quiet-hours.tsx
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "All Systems"
|
||||
msgstr "所有系統"
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "App update"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/systems-table/systems-table-columns.tsx
|
||||
msgid "Are you sure you want to delete {name}?"
|
||||
msgstr "您確定要刪除 {name} 嗎?"
|
||||
@@ -338,6 +341,10 @@ msgstr "Beszel支持OpenID Connect和許多OAuth2認證提供者。"
|
||||
msgid "Beszel uses <0>Shoutrrr</0> to integrate with popular notification services."
|
||||
msgstr "Beszel 使用 <0>Shoutrrr</0> 與流行的通知服務集成。"
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Beszel will pull ghcr.io/dvorinka/beszel:latest, recreate the running container, and restart the app. All signed-in users can start this action."
|
||||
msgstr ""
|
||||
|
||||
#: src/components/add-system.tsx
|
||||
msgid "Binary"
|
||||
msgstr "執行檔"
|
||||
@@ -385,6 +392,7 @@ msgstr "可停止"
|
||||
#: src/components/domains-table/domains-table.tsx
|
||||
#: src/components/monitors-table/add-monitor-dialog.tsx
|
||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||
#: src/components/routes/settings/general.tsx
|
||||
#: src/components/routes/settings/quiet-hours.tsx
|
||||
#: src/components/systems-table/systems-table-columns.tsx
|
||||
msgid "Cancel"
|
||||
@@ -447,6 +455,10 @@ msgstr "檢查 {email} 以獲取重置鏈接。"
|
||||
msgid "Check logs for more details."
|
||||
msgstr "檢查日誌以取得更多資訊。"
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Check now"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/routes/monitor.tsx
|
||||
msgid "Check Now"
|
||||
msgstr ""
|
||||
@@ -482,8 +494,8 @@ msgid "Click to copy"
|
||||
msgstr "點擊以複製"
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "Columns"
|
||||
msgstr ""
|
||||
#~ msgid "Columns"
|
||||
#~ msgstr ""
|
||||
|
||||
#: src/components/login/forgot-pass-form.tsx
|
||||
#: src/components/login/forgot-pass-form.tsx
|
||||
@@ -1750,6 +1762,10 @@ msgstr ""
|
||||
#~ msgid "Response Times"
|
||||
#~ msgstr ""
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Restarting"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/systemd-table/systemd-table.tsx
|
||||
msgid "Restarts"
|
||||
msgstr "重啟次數"
|
||||
@@ -1917,8 +1933,8 @@ msgid "SMTP settings"
|
||||
msgstr "SMTP設置"
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
#~ msgid "Sort By"
|
||||
#~ msgstr "排序依據"
|
||||
msgid "Sort By"
|
||||
msgstr "排序依據"
|
||||
|
||||
#: src/components/routes/domain.tsx
|
||||
#~ msgid "SSL Certificate"
|
||||
@@ -1929,6 +1945,10 @@ msgstr "SMTP設置"
|
||||
msgid "Start Time"
|
||||
msgstr "開始時間"
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Start update"
|
||||
msgstr ""
|
||||
|
||||
#. Context: alert state (active or resolved)
|
||||
#: src/components/alerts-history-columns.tsx
|
||||
#: src/components/routes/settings/quiet-hours.tsx
|
||||
@@ -2248,10 +2268,23 @@ msgstr "上線 ({upSystemsLength})"
|
||||
msgid "Update"
|
||||
msgstr "更新"
|
||||
|
||||
#: src/components/navbar.tsx
|
||||
#: src/components/navbar.tsx
|
||||
msgid "Update available"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Update Beszel now?"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/monitors-table/add-monitor-dialog.tsx
|
||||
msgid "Update Monitor"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Update now"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/containers-table/containers-table-columns.tsx
|
||||
#: src/components/routes/system/smart-table.tsx
|
||||
#: src/components/systemd-table/systemd-table-columns.tsx
|
||||
@@ -2335,8 +2368,8 @@ msgid "View your 200 most recent alerts."
|
||||
msgstr "檢視最近 200 則警報。"
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
#~ msgid "Visible Fields"
|
||||
#~ msgstr "可見欄位"
|
||||
msgid "Visible Fields"
|
||||
msgstr "可見欄位"
|
||||
|
||||
#: src/components/routes/domain.tsx
|
||||
#: src/components/routes/monitor.tsx
|
||||
|
||||
@@ -151,8 +151,8 @@ msgid "Add Monitor"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "Add System"
|
||||
msgstr ""
|
||||
#~ msgid "Add System"
|
||||
#~ msgstr ""
|
||||
|
||||
#: src/components/routes/settings/notifications.tsx
|
||||
msgid "Add URL"
|
||||
@@ -203,12 +203,10 @@ msgstr "警報歷史"
|
||||
msgid "Alerts"
|
||||
msgstr "警報"
|
||||
|
||||
#. placeholder {0}: data.length
|
||||
#. placeholder {0}: stats.total
|
||||
#. placeholder {0}: statusCounts.total
|
||||
#: src/components/domains-table/domains-table.tsx
|
||||
#: src/components/monitors-table/monitors-table.tsx
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "All ({0})"
|
||||
msgstr ""
|
||||
|
||||
@@ -224,9 +222,14 @@ msgstr "所有容器"
|
||||
#: src/components/command-palette.tsx
|
||||
#: src/components/routes/settings/quiet-hours.tsx
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "All Systems"
|
||||
msgstr "所有系統"
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "App update"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/systems-table/systems-table-columns.tsx
|
||||
msgid "Are you sure you want to delete {name}?"
|
||||
msgstr "您確定要刪除 {name} 嗎?"
|
||||
@@ -338,6 +341,10 @@ msgstr "Beszel 支援 OpenID Connect 和許多 OAuth2 認證提供者。"
|
||||
msgid "Beszel uses <0>Shoutrrr</0> to integrate with popular notification services."
|
||||
msgstr "Beszel 以 <0>Shoutrrr</0> 整合常用的通知服務。"
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Beszel will pull ghcr.io/dvorinka/beszel:latest, recreate the running container, and restart the app. All signed-in users can start this action."
|
||||
msgstr ""
|
||||
|
||||
#: src/components/add-system.tsx
|
||||
msgid "Binary"
|
||||
msgstr "執行檔"
|
||||
@@ -385,6 +392,7 @@ msgstr "可停止"
|
||||
#: src/components/domains-table/domains-table.tsx
|
||||
#: src/components/monitors-table/add-monitor-dialog.tsx
|
||||
#: src/components/routes/settings/alerts-history-data-table.tsx
|
||||
#: src/components/routes/settings/general.tsx
|
||||
#: src/components/routes/settings/quiet-hours.tsx
|
||||
#: src/components/systems-table/systems-table-columns.tsx
|
||||
msgid "Cancel"
|
||||
@@ -447,6 +455,10 @@ msgstr "檢查 {email} 以取得重設連結。"
|
||||
msgid "Check logs for more details."
|
||||
msgstr "檢查系統記錄以取得更多資訊。"
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Check now"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/routes/monitor.tsx
|
||||
msgid "Check Now"
|
||||
msgstr ""
|
||||
@@ -482,8 +494,8 @@ msgid "Click to copy"
|
||||
msgstr "點擊複製"
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
msgid "Columns"
|
||||
msgstr ""
|
||||
#~ msgid "Columns"
|
||||
#~ msgstr ""
|
||||
|
||||
#: src/components/login/forgot-pass-form.tsx
|
||||
#: src/components/login/forgot-pass-form.tsx
|
||||
@@ -1750,6 +1762,10 @@ msgstr ""
|
||||
#~ msgid "Response Times"
|
||||
#~ msgstr ""
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Restarting"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/systemd-table/systemd-table.tsx
|
||||
msgid "Restarts"
|
||||
msgstr "重啟次數"
|
||||
@@ -1917,8 +1933,8 @@ msgid "SMTP settings"
|
||||
msgstr "SMTP 設定"
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
#~ msgid "Sort By"
|
||||
#~ msgstr "排序"
|
||||
msgid "Sort By"
|
||||
msgstr "排序"
|
||||
|
||||
#: src/components/routes/domain.tsx
|
||||
#~ msgid "SSL Certificate"
|
||||
@@ -1929,6 +1945,10 @@ msgstr "SMTP 設定"
|
||||
msgid "Start Time"
|
||||
msgstr "開始時間"
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Start update"
|
||||
msgstr ""
|
||||
|
||||
#. Context: alert state (active or resolved)
|
||||
#: src/components/alerts-history-columns.tsx
|
||||
#: src/components/routes/settings/quiet-hours.tsx
|
||||
@@ -2248,10 +2268,23 @@ msgstr "上線 ({upSystemsLength})"
|
||||
msgid "Update"
|
||||
msgstr "更新"
|
||||
|
||||
#: src/components/navbar.tsx
|
||||
#: src/components/navbar.tsx
|
||||
msgid "Update available"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Update Beszel now?"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/monitors-table/add-monitor-dialog.tsx
|
||||
msgid "Update Monitor"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/routes/settings/general.tsx
|
||||
msgid "Update now"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/containers-table/containers-table-columns.tsx
|
||||
#: src/components/routes/system/smart-table.tsx
|
||||
#: src/components/systemd-table/systemd-table-columns.tsx
|
||||
@@ -2335,8 +2368,8 @@ msgid "View your 200 most recent alerts."
|
||||
msgstr "檢視最近 200 則警報。"
|
||||
|
||||
#: src/components/systems-table/systems-table.tsx
|
||||
#~ msgid "Visible Fields"
|
||||
#~ msgstr "顯示欄位"
|
||||
msgid "Visible Fields"
|
||||
msgstr "顯示欄位"
|
||||
|
||||
#: src/components/routes/domain.tsx
|
||||
#: src/components/routes/monitor.tsx
|
||||
|
||||
@@ -13,7 +13,7 @@ import Settings from "@/components/routes/settings/layout.tsx"
|
||||
import { ThemeProvider } from "@/components/theme-provider.tsx"
|
||||
import { Toaster } from "@/components/ui/toaster.tsx"
|
||||
import { alertManager } from "@/lib/alerts"
|
||||
import { isAdmin, pb, updateUserSettings } from "@/lib/api.ts"
|
||||
import { pb, updateUserSettings } from "@/lib/api.ts"
|
||||
import { dynamicActivate, getLocale } from "@/lib/i18n"
|
||||
import {
|
||||
$authenticated,
|
||||
@@ -35,6 +35,7 @@ const SystemDetail = lazy(() => import("@/components/routes/system.tsx"))
|
||||
const DomainDetail = lazy(() => import("@/components/routes/domain.tsx"))
|
||||
const MonitorDetail = lazy(() => import("@/components/routes/monitor.tsx"))
|
||||
const StatusPages = lazy(() => import("@/components/routes/status-pages.tsx"))
|
||||
const PublicStatusPage = lazy(() => import("@/components/routes/public-status-page.tsx"))
|
||||
const Incidents = lazy(() => import("@/components/routes/incidents.tsx"))
|
||||
const Calendar = lazy(() => import("@/components/routes/calendar.tsx"))
|
||||
const Monitoring = lazy(() => import("@/components/routes/monitoring.tsx"))
|
||||
@@ -52,7 +53,7 @@ const App = memo(() => {
|
||||
pb.send<BeszelInfo>("/api/beszel/info", {}).then((data) => {
|
||||
$publicKey.set(data.key)
|
||||
// check for updates if enabled
|
||||
if (data.cu && isAdmin()) {
|
||||
if (data.cu) {
|
||||
pb.send<UpdateInfo>("/api/beszel/update", {}).then($newVersion.set)
|
||||
}
|
||||
})
|
||||
@@ -94,6 +95,8 @@ const App = memo(() => {
|
||||
return <Settings />
|
||||
} else if (page.route === "status_pages") {
|
||||
return <StatusPages />
|
||||
} else if (page.route === "public_status") {
|
||||
return <PublicStatusPage slug={page.params.slug} />
|
||||
} else if (page.route === "incidents") {
|
||||
return <Incidents />
|
||||
} else if (page.route === "calendar") {
|
||||
@@ -108,17 +111,26 @@ const Layout = () => {
|
||||
const copyContent = useStore($copyContent)
|
||||
const direction = useStore($direction)
|
||||
const { layoutWidth } = useStore($userSettings, { keys: ["layoutWidth"] })
|
||||
const page = useStore($router)
|
||||
|
||||
useEffect(() => {
|
||||
document.documentElement.dir = direction
|
||||
}, [direction])
|
||||
|
||||
// Public status page doesn't require authentication
|
||||
const isPublicStatusPage = page?.route === "public_status"
|
||||
|
||||
return (
|
||||
<DirectionProvider dir={direction}>
|
||||
{!authenticated ? (
|
||||
{!authenticated && !isPublicStatusPage ? (
|
||||
<Suspense>
|
||||
<LoginPage />
|
||||
</Suspense>
|
||||
) : isPublicStatusPage ? (
|
||||
// Public status page renders without navbar/layout
|
||||
<Suspense>
|
||||
<App />
|
||||
</Suspense>
|
||||
) : (
|
||||
<div style={{ "--container": `${layoutWidth ?? defaultLayoutWidth}px` } as React.CSSProperties}>
|
||||
<div className="container">
|
||||
|
||||
Vendored
+45
-34
@@ -1,4 +1,5 @@
|
||||
import type { RecordModel } from "pocketbase"
|
||||
import type { LucideIcon } from "lucide-react"
|
||||
import type { Unit, Os, BatteryState, HourFormat, ConnectionType, ServiceStatus, ServiceSubState } from "@/lib/enums"
|
||||
|
||||
// global window properties
|
||||
@@ -324,7 +325,7 @@ export interface ChartData {
|
||||
export interface AlertInfo {
|
||||
name: () => string
|
||||
unit: string
|
||||
icon: any
|
||||
icon: LucideIcon
|
||||
desc: () => string
|
||||
max?: number
|
||||
min?: number
|
||||
@@ -423,7 +424,7 @@ export interface SystemdRecord extends RecordModel {
|
||||
|
||||
export interface SystemdServiceDetails {
|
||||
AccessSELinuxContext: string
|
||||
ActivationDetails: any[]
|
||||
ActivationDetails: unknown[]
|
||||
ActiveEnterTimestamp: number
|
||||
ActiveEnterTimestampMonotonic: number
|
||||
ActiveExitTimestamp: number
|
||||
@@ -434,12 +435,12 @@ export interface SystemdServiceDetails {
|
||||
AssertResult: boolean
|
||||
AssertTimestamp: number
|
||||
AssertTimestampMonotonic: number
|
||||
Asserts: any[]
|
||||
Asserts: unknown[]
|
||||
Before: string[]
|
||||
BindsTo: any[]
|
||||
BoundBy: any[]
|
||||
BindsTo: unknown[]
|
||||
BoundBy: unknown[]
|
||||
CPUUsageNSec: number
|
||||
CanClean: any[]
|
||||
CanClean: unknown[]
|
||||
CanFreeze: boolean
|
||||
CanIsolate: boolean
|
||||
CanLiveMount: boolean
|
||||
@@ -450,15 +451,15 @@ export interface SystemdServiceDetails {
|
||||
ConditionResult: boolean
|
||||
ConditionTimestamp: number
|
||||
ConditionTimestampMonotonic: number
|
||||
Conditions: any[]
|
||||
ConflictedBy: any[]
|
||||
Conditions: unknown[]
|
||||
ConflictedBy: unknown[]
|
||||
Conflicts: string[]
|
||||
ConsistsOf: any[]
|
||||
ConsistsOf: unknown[]
|
||||
DebugInvocation: boolean
|
||||
DefaultDependencies: boolean
|
||||
Description: string
|
||||
Documentation: string[]
|
||||
DropInPaths: any[]
|
||||
DropInPaths: unknown[]
|
||||
ExecMainPID: number
|
||||
FailureAction: string
|
||||
FailureActionExitStatus: number
|
||||
@@ -477,46 +478,46 @@ export interface SystemdServiceDetails {
|
||||
JobTimeoutAction: string
|
||||
JobTimeoutRebootArgument: string
|
||||
JobTimeoutUSec: number
|
||||
JoinsNamespaceOf: any[]
|
||||
JoinsNamespaceOf: unknown[]
|
||||
LoadError: string[]
|
||||
LoadState: string
|
||||
MainPID: number
|
||||
Markers: any[]
|
||||
Markers: unknown[]
|
||||
MemoryCurrent: number
|
||||
MemoryLimit: number
|
||||
MemoryPeak: number
|
||||
NRestarts: number
|
||||
Names: string[]
|
||||
NeedDaemonReload: boolean
|
||||
OnFailure: any[]
|
||||
OnFailure: unknown[]
|
||||
OnFailureJobMode: string
|
||||
OnFailureOf: any[]
|
||||
OnSuccess: any[]
|
||||
OnFailureOf: unknown[]
|
||||
OnSuccess: unknown[]
|
||||
OnSuccessJobMode: string
|
||||
OnSuccessOf: any[]
|
||||
PartOf: any[]
|
||||
OnSuccessOf: unknown[]
|
||||
PartOf: unknown[]
|
||||
Perpetual: boolean
|
||||
PropagatesReloadTo: any[]
|
||||
PropagatesStopTo: any[]
|
||||
PropagatesReloadTo: unknown[]
|
||||
PropagatesStopTo: unknown[]
|
||||
RebootArgument: string
|
||||
Refs: any[]
|
||||
Refs: unknown[]
|
||||
RefuseManualStart: boolean
|
||||
RefuseManualStop: boolean
|
||||
ReloadPropagatedFrom: any[]
|
||||
RequiredBy: any[]
|
||||
ReloadPropagatedFrom: unknown[]
|
||||
RequiredBy: unknown[]
|
||||
Requires: string[]
|
||||
RequiresMountsFor: any[]
|
||||
Requisite: any[]
|
||||
RequisiteOf: any[]
|
||||
RequiresMountsFor: unknown[]
|
||||
Requisite: unknown[]
|
||||
RequisiteOf: unknown[]
|
||||
Result: string
|
||||
SliceOf: any[]
|
||||
SliceOf: unknown[]
|
||||
SourcePath: string
|
||||
StartLimitAction: string
|
||||
StartLimitBurst: number
|
||||
StartLimitIntervalUSec: number
|
||||
StateChangeTimestamp: number
|
||||
StateChangeTimestampMonotonic: number
|
||||
StopPropagatedFrom: any[]
|
||||
StopPropagatedFrom: unknown[]
|
||||
StopWhenUnneeded: boolean
|
||||
SubState: string
|
||||
SuccessAction: string
|
||||
@@ -526,14 +527,14 @@ export interface SystemdServiceDetails {
|
||||
TasksMax: number
|
||||
Transient: boolean
|
||||
TriggeredBy: string[]
|
||||
Triggers: any[]
|
||||
Triggers: unknown[]
|
||||
UnitFilePreset: string
|
||||
UnitFileState: string
|
||||
UpheldBy: any[]
|
||||
Upholds: any[]
|
||||
WantedBy: any[]
|
||||
UpheldBy: unknown[]
|
||||
Upholds: unknown[]
|
||||
WantedBy: unknown[]
|
||||
Wants: string[]
|
||||
WantsMountsFor: any[]
|
||||
WantsMountsFor: unknown[]
|
||||
}
|
||||
|
||||
export interface BeszelInfo {
|
||||
@@ -543,6 +544,16 @@ export interface BeszelInfo {
|
||||
}
|
||||
|
||||
export interface UpdateInfo {
|
||||
v: string // new version
|
||||
url: string // url to new version
|
||||
v?: string // new version / tag
|
||||
url?: string // package url
|
||||
currentVersion: string
|
||||
image: string
|
||||
currentImageId?: string
|
||||
currentDigest?: string
|
||||
latestDigest?: string
|
||||
updateAvailable: boolean
|
||||
canApply: boolean
|
||||
status: string
|
||||
message: string
|
||||
lastCheck: string
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { defineConfig } from "vite"
|
||||
import path from "path"
|
||||
import path from "node:path"
|
||||
import tailwindcss from "@tailwindcss/vite"
|
||||
import react from "@vitejs/plugin-react-swc"
|
||||
import { lingui } from "@lingui/vite-plugin"
|
||||
|
||||
Reference in New Issue
Block a user