diff --git a/app/dashboard/servers/Servers.tsx b/app/dashboard/servers/Servers.tsx index 8f45505..15ff673 100644 --- a/app/dashboard/servers/Servers.tsx +++ b/app/dashboard/servers/Servers.tsx @@ -66,6 +66,7 @@ import NextLink from "next/link" import { Toaster } from "@/components/ui/sonner" import { toast } from "sonner" import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger } from "@/components/ui/dropdown-menu" +import { useTranslations } from "next-intl" interface ServerHistory { labels: string[]; @@ -122,7 +123,8 @@ interface MonitoringData { temp?: number } -export default function Dashboard() { +export default function Servers() { + const t = useTranslations('Servers') const [host, setHost] = useState(false) const [hostServer, setHostServer] = useState(0) const [name, setName] = useState("") @@ -465,18 +467,14 @@ export default function Dashboard() { }; }, []); - // Handler für benutzerdefinierte Zahleneingaben mit Verzögerung const handleItemsPerPageChange = (value: string) => { - // Bestehenden Timer löschen if (debounceTimerRef.current) { clearTimeout(debounceTimerRef.current); } - // Neuen Timer setzen debounceTimerRef.current = setTimeout(() => { const newItemsPerPage = parseInt(value); - // Sicherstellen, dass der Wert im gültigen Bereich liegt if (isNaN(newItemsPerPage) || newItemsPerPage < 1) { toast.error("Bitte eine Zahl zwischen 1 und 100 eingeben"); return; @@ -485,37 +483,31 @@ export default function Dashboard() { const validatedValue = Math.min(Math.max(newItemsPerPage, 1), 100); setItemsPerPage(validatedValue); - setCurrentPage(1); // Zurück zur ersten Seite + setCurrentPage(1); Cookies.set("itemsPerPage-servers", String(validatedValue), { expires: 365, path: "/", sameSite: "strict", }); - // Daten mit neuer Paginierung abrufen getServers(); - }, 600); // 600ms Verzögerung für bessere Eingabe mehrziffriger Zahlen + }, 600); }; - // Handler für voreingestellte Werte aus dem Dropdown const handlePresetItemsPerPageChange = (value: string) => { - // Für voreingestellte Werte sofort anwenden const newItemsPerPage = parseInt(value); - // Nur Standardwerte hier verarbeiten if ([4, 6, 10, 15, 20, 25].includes(newItemsPerPage)) { setItemsPerPage(newItemsPerPage); - setCurrentPage(1); // Zurück zur ersten Seite + setCurrentPage(1); Cookies.set("itemsPerPage-servers", String(newItemsPerPage), { expires: 365, path: "/", sameSite: "strict", }); - // Daten mit neuer Paginierung abrufen getServers(); } else { - // Für benutzerdefinierte Werte den verzögerten Handler verwenden handleItemsPerPageChange(value); } }; @@ -535,11 +527,11 @@ export default function Dashboard() { - My Infrastructure + {t('MyInfrastructure')} - Servers + {t('Servers')} @@ -548,11 +540,11 @@ export default function Dashboard() {
- Your Servers + {t('YourServers')}
-
- +
{icon && }
- +
- Link to a web interface (e.g. Proxmox or Portainer) with which the server can be - managed + {t('AddServer.General.ManagementURLTooltip')} @@ -863,7 +846,7 @@ export default function Dashboard() {
setHost(checked === true)} /> - +
{!host && (
- +
-

Required Server Setup

+

{t('AddServer.Monitoring.SetupTitle')}

- To enable monitoring, you need to install Glances on your server. Here's an example Docker Compose configuration: + {t('AddServer.Monitoring.SetupDescription')}

                                     {`services:
@@ -1000,8 +983,8 @@ export default function Dashboard() {
                     
                   
                   
-                    Cancel
-                    Add
+                    {t('cancel')}
+                    {t('add')}
                   
                 
               
diff --git a/i18n/languages/en.json b/i18n/languages/en.json
index 8ad5889..dc08316 100644
--- a/i18n/languages/en.json
+++ b/i18n/languages/en.json
@@ -47,5 +47,68 @@
             "ActiveConnections": "Active Connections",
             "ViewNetworkDetails": "View network details"
         }
+    },
+    "Servers": {
+        "MyInfrastructure": "My Infrastructure",
+        "Title": "Servers",
+        "YourServers": "Your Servers",
+        "ChangeView": "Change View",
+        "ListView": "List View",
+        "GridView": "Grid View",
+        "ItemsPerPage": {
+            "items": "items",
+            "item": "item",
+            "4": "4 items",
+            "6": "6 items",
+            "10": "10 items",
+            "15": "15 items",
+            "20": "20 items",
+            "25": "25 items",
+            "Custom": "Custom (1-100)"
+        },
+        "Tabs": {
+            "General": "General",
+            "Hardware": "Hardware",
+            "Host": "Host",
+            "Monitoring": "Monitoring"
+        },
+        "optional": "optional",
+        "cancel": "Cancel",
+        "add": "Add",
+        "AddServer": {
+            "Title": "Add a server",
+            "General": {
+                "Title": "Add a server",
+                "CopyServer": "Copy server",
+                "Icon": "Icon",
+                "IconPlaceholder": "Select an icon",
+                "IconSearchPlaceholder": "Search icons...",
+                "Preview": "Preview",
+                "Name": "Name",
+                "OperatingSystem": "Operating System",
+                "OperatingSystemPlaceholder": "Select OS",
+                "IPAdress": "IP Adress",
+                "ManagementURL": "Management URL",
+                "ManagementURLTooltip": "Link to a web interface (e.g. Proxmox or Portainer) with which the server can be managed"
+            },
+            "Hardware": {
+                "CPU": "CPU",
+                "GPU": "GPU",
+                "RAM": "RAM",
+                "Storage": "Storage"
+            },
+            "Host": {
+                "MarkAsHostServer": "Mark as host server",
+                "SelectHostServer": "Select a host server",
+                "SelectHostServerPlaceholder": "Select a host server",
+                "NoHostServer": "No host server"
+            },
+            "Monitoring": {
+                "Enable": "Enable monitoring",
+                "URL": "Monitoring URL",
+                "SetupTitle": "Required Server Setup",
+                "SetupDescription": "To enable monitoring, you need to install Glances on your server. Here's an example Docker Compose configuration:"
+            }
+        }
     }
 }
\ No newline at end of file