From a19b7f10f1add071d25f71cc2d478154f6eeca3d Mon Sep 17 00:00:00 2001 From: Alfredo Gallardo Date: Wed, 28 May 2025 19:29:49 -0400 Subject: [PATCH] fix: missing i18n labels --- .../src/components/InstalledServers.tsx | 162 +++---- .../src/components/terms-consent-dialog.tsx | 12 +- .../src/components/ui/dialog.tsx | 5 +- .../src/components/ui/sheet.tsx | 5 +- .../src/components/ui/sidebar.tsx | 439 ++++++++++-------- apps/mcp-dockmaster/src/pages/home.tsx | 11 +- libs/mcp-dockmaster-i18n/locales/de_DE.json | 125 ++++- libs/mcp-dockmaster-i18n/locales/en_US.json | 123 ++++- libs/mcp-dockmaster-i18n/locales/es_ES.json | 125 ++++- libs/mcp-dockmaster-i18n/locales/fr_FR.json | 125 ++++- libs/mcp-dockmaster-i18n/locales/ja_JP.json | 125 ++++- libs/mcp-dockmaster-i18n/locales/zh_CN.json | 125 ++++- 12 files changed, 1083 insertions(+), 299 deletions(-) diff --git a/apps/mcp-dockmaster/src/components/InstalledServers.tsx b/apps/mcp-dockmaster/src/components/InstalledServers.tsx index 451f6b0c..3c9dd530 100644 --- a/apps/mcp-dockmaster/src/components/InstalledServers.tsx +++ b/apps/mcp-dockmaster/src/components/InstalledServers.tsx @@ -26,6 +26,7 @@ import { } from "./ui/dialog"; import { Label } from "./ui/label"; import { Input } from "./ui/input"; +import { useTranslation } from "@mcp-dockmaster/i18n"; // Add a simple notification component interface NotificationProps { @@ -81,6 +82,7 @@ const getColorTagStyle = (color: string) => { }; const InstalledServers: React.FC = () => { + const { t } = useTranslation(); const [servers, setServers] = useState([]); const [serverTools, setServerTools] = useState([]); const [loading, setLoading] = useState(true); @@ -330,17 +332,17 @@ const InstalledServers: React.FC = () => { if (response.success) { // Dispatch event that a server was uninstalled dispatchServerUninstalled(id); - addNotification(`Server uninstalled successfully`, "success"); + addNotification(t('server.uninstalled.success'), "success"); } else { // If the API call fails, revert the UI change console.error("Failed to uninstall server:", response.message); - addNotification(`Failed to uninstall server: ${response.message}`, "error"); + addNotification(t('server.uninstalled.error') + response.message, "error"); // Refresh the list to ensure UI is in sync with backend loadData(); } } catch (error) { console.error("Error uninstalling server:", error); - addNotification("Error uninstalling server", "error"); + addNotification(t('server.uninstalled.error'), "error"); // Refresh the list to ensure UI is in sync with backend loadData(); } @@ -499,7 +501,7 @@ const InstalledServers: React.FC = () => { // If no color is selected (All), enable all servers if (!color) { // Show loading notification - addNotification("Enabling all servers...", "info"); + addNotification(t('server.enabling.all'), "info"); // Track servers that need to be enabled const serversToUpdate = servers.filter(server => !server.enabled); @@ -510,13 +512,13 @@ const InstalledServers: React.FC = () => { } if (serversToUpdate.length > 0) { - addNotification(`Enabled ${serversToUpdate.length} servers`, "success"); + addNotification(t('server.enabled') + serversToUpdate.length, "success"); } return; } // If a specific color is selected, enable servers with that tag and disable others - addNotification(`Updating servers for ${color} group...`, "info"); + addNotification(t('server.updating') + color, "info"); // Track which servers need to be enabled/disabled const serversToEnable = []; @@ -548,13 +550,13 @@ const InstalledServers: React.FC = () => { const totalUpdated = serversToEnable.length + serversToDisable.length; if (totalUpdated > 0) { addNotification( - `Updated ${totalUpdated} servers for ${color} group`, + t('server.updated') + totalUpdated + ' ' + color, "success" ); } } catch (error) { console.error("Error updating servers by color tag:", error); - addNotification("Error updating servers", "error"); + addNotification(t('server.update.error'), "error"); } finally { // Clear loading state setUpdatingServers(false); @@ -564,7 +566,7 @@ const InstalledServers: React.FC = () => { // Function to add a new color const addNewColor = () => { if (!newColorName.trim()) { - addNotification("Color name cannot be empty", "error"); + addNotification(t('server.color.empty'), "error"); return; } @@ -588,7 +590,7 @@ const InstalledServers: React.FC = () => { setNewColorName(''); setShowColorDialog(false); - addNotification(`Added new color: ${newColorName}`, "success"); + addNotification(t('server.color.added') + newColorName, "success"); }; // Filter servers based on selected color @@ -631,7 +633,7 @@ const InstalledServers: React.FC = () => { const server = servers.find((s) => s.id === serverId); if (!server) { console.error(`Server with ID ${serverId} not found`); - addNotification(`Server with ID ${serverId} not found`, "error"); + addNotification(t('server.notfound') + serverId, "error"); return; } @@ -652,7 +654,7 @@ const InstalledServers: React.FC = () => { if (response.success) { console.log(`Server ${serverId} configuration updated successfully`); addNotification( - `Configuration for ${server.name} updated successfully`, + t('server.config.updated') + server.name, "success", ); @@ -683,7 +685,7 @@ const InstalledServers: React.FC = () => { console.log( `Server ${serverId} is enabled, restarting with new configuration...`, ); - addNotification(`Restarting ${server.name}...`, "info"); + addNotification(t('server.restarting') + server.name, "info"); try { const restartResponse = await MCPClient.restartTool(serverId); @@ -692,7 +694,7 @@ const InstalledServers: React.FC = () => { `Server ${serverId} restarted successfully with new configuration`, ); addNotification( - `${server.name} restarted successfully with new configuration`, + t('server.restarted') + server.name, "success", ); // Dispatch event to update UI @@ -703,13 +705,13 @@ const InstalledServers: React.FC = () => { restartResponse.message, ); addNotification( - `Failed to restart ${server.name}: ${restartResponse.message}`, + t('server.restart.error') + server.name + ': ' + restartResponse.message, "error", ); } } catch (restartError) { console.error(`Error restarting server ${serverId}:`, restartError); - addNotification(`Error restarting ${server.name}`, "error"); + addNotification(t('server.restart.error'), "error"); } } else { console.log(`Server ${serverId} is disabled, not restarting`); @@ -721,13 +723,13 @@ const InstalledServers: React.FC = () => { } else { console.error("Failed to update server configuration:", response.message); addNotification( - `Failed to update configuration: ${response.message}`, + t('server.config.error') + response.message, "error", ); } } catch (error) { console.error("Error updating server configuration:", error); - addNotification("Error updating configuration", "error"); + addNotification(t('server.config.error'), "error"); } finally { setSavingConfig(false); setEnvOperationInProgress(false); // Reset flag to allow auto-refresh again @@ -794,53 +796,53 @@ const InstalledServers: React.FC = () => { - {currentInfoServer.name} Information + {t('installed_servers.server_info.title')} - Details about this server and its tools. + {t('installed_servers.server_info.description')}
{/* Basic Information */}
-

Basic Information

+

{t('installed_servers.server_info.basic_info_title')}

{currentInfoServer.description && (
- +
{currentInfoServer.description}
)}
- +
{currentInfoServer.id}
- +
{currentInfoServer.status === 'running' ? ( - Running + {t('common.running')} ) : ( - Stopped + {t('common.stopped')} )}
- +
- {currentInfoServer.enabled ? "Yes" : "No"} + {currentInfoServer.enabled ? t('common.yes') : t('common.no')}
- -
{currentInfoServer.tool_count} tools available
+ +
{t('installed_servers.server_info.tools_count', { count: currentInfoServer.tool_count })}
- +
{currentInfoServer.tools_type}
{currentInfoServer.sourceUrl && (
- +
{ )} {currentInfoServer.entry_point && (
- +
{currentInfoServer.entry_point}
)} @@ -865,7 +867,7 @@ const InstalledServers: React.FC = () => { {/* Tools Section */} {toolsForServer.length > 0 && (
-

Tools

+

{t('installed_servers.server_info.tools_title')}

{toolsForServer.map((tool) => (
@@ -896,17 +898,17 @@ const InstalledServers: React.FC = () => { {/* Configuration */} {currentInfoServer.configuration && (
-

Configuration

+

{t('installed_servers.server_info.configuration_title')}

{currentInfoServer.configuration.command && (
- +
{currentInfoServer.configuration.command}
)} {currentInfoServer.configuration.args && currentInfoServer.configuration.args.length > 0 && (
- +
{currentInfoServer.configuration.args.map((arg, index) => (
{arg}
@@ -916,7 +918,7 @@ const InstalledServers: React.FC = () => { )} {currentInfoServer.configuration.env && Object.keys(currentInfoServer.configuration.env).length > 0 && (
- +
{Object.entries(currentInfoServer.configuration.env).map(([key, value]) => (
@@ -924,10 +926,10 @@ const InstalledServers: React.FC = () => { {value.description &&
{value.description}
}
{value.required ? - Required : - Optional + {t('common.required')} : + {t('common.optional')} } - {value.default && Default: {value.default}} + {value.default && {t('common.default')}: {value.default}}
))} @@ -941,14 +943,14 @@ const InstalledServers: React.FC = () => { {/* Distribution */} {currentInfoServer.distribution && (
-

Distribution

+

{t('installed_servers.server_info.distribution_title')}

- +
{currentInfoServer.distribution.type}
- +
{currentInfoServer.distribution.type === "npm" ? ( { closeInfoPopup(); }} > - Uninstall Server + {t('installed_servers.server_info.uninstall_server')} @@ -997,7 +999,7 @@ const InstalledServers: React.FC = () => {
e.stopPropagation()}>
-

Environment Variables - {server.name}

+

{t('installed_servers.config_popup.title')} - {server.name}

@@ -1093,38 +1095,38 @@ const InstalledServers: React.FC = () => { - Add New Color + {t('installed_servers.color_dialog.title')} - Enter a name for the new color. This color will be added to all servers. + {t('installed_servers.color_dialog.description')}
- + setNewColorName(e.target.value)} - placeholder="e.g. Blue, Yellow, Purple" + placeholder={t('installed_servers.color_dialog.name_placeholder')} />
- +
- {newColorName || "New Color"} + {newColorName || t('installed_servers.color_dialog.new_color')}
@@ -1145,7 +1147,7 @@ const InstalledServers: React.FC = () => { updateServersByColorTag(null); }} > - All + {t('common.all')} {Object.entries(availableColors).map(([key, color]) => ( @@ -1177,7 +1179,7 @@ const InstalledServers: React.FC = () => { {updatingServers && (
- Updating servers... + {t('installed_servers.updating_servers')}
)}
@@ -1200,11 +1202,11 @@ const InstalledServers: React.FC = () => {

- Servers Installed + {t('installed_servers.title')}

- {areToolsActive ? "MCP Servers Active" : "MCP Servers Paused"} + {areToolsActive ? t('installed_servers.active_status') : t('installed_servers.paused_status')} {

- Manage your installed AI applications and MCP tools. + {t('installed_servers.description')}

@@ -1222,20 +1224,20 @@ const InstalledServers: React.FC = () => { {renderColorFilters()} {loading ? ( -
Loading installed applications...
+
{t('installed_servers.loading')}
) : filteredServers.length === 0 ? (
{servers.length === 0 ? ( <> -

You don't have any applications installed yet.

-

Visit the AI App Store to discover and install applications.

+

{t('installed_servers.no_applications')}

+

{t('installed_servers.visit_store')}

) : ( <> -

No servers match the selected filter.

+

{t('installed_servers.no_matches')}

{selectedColorFilter && ( )} @@ -1264,7 +1266,7 @@ const InstalledServers: React.FC = () => { - Server Information + {t('installed_servers.server_info.tooltip')} @@ -1284,7 +1286,7 @@ const InstalledServers: React.FC = () => { - Configure Environment Variables + {t('installed_servers.env_vars.tooltip')} )} @@ -1298,7 +1300,7 @@ const InstalledServers: React.FC = () => { : "text-slate-500", )} > - {server.enabled ? "Enabled" : "Disabled"} + {server.enabled ? t('common.enabled') : t('common.disabled')} { variant="outline" className="bg-amber-100 text-amber-800 border-amber-300 ml-2" > - Needs Attention + {t('installed_servers.env_vars.needs_attention')} - This server requires you to set up certain environment variable(s). Without these settings, the list of tools may not appear. + {t('installed_servers.env_vars.needs_attention_tooltip')} )} @@ -1350,24 +1352,24 @@ const InstalledServers: React.FC = () => { }`} > - Status: {transitioningServers.has(server.id) - ? "Updating..." + {t('common.status')} {transitioningServers.has(server.id) + ? t('common.updating') : server.status === 'running' - ? "Running" + ? t('common.running') : server.status === 'stopped' - ? "Stopped" + ? t('common.stopped') : server.status === 'starting' - ? "Starting..." + ? t('common.starting') : server.status?.startsWith("Error:") ? server.status - : "Stopped"} + : t('common.stopped')}
{/* Add color tag selection */}
- Tags: + {t('common.tags')} {Object.entries(availableColors).map(([key, color]) => { const isSelected = (serverColorTags[server.id] || []).includes(color); return ( diff --git a/apps/mcp-dockmaster/src/components/terms-consent-dialog.tsx b/apps/mcp-dockmaster/src/components/terms-consent-dialog.tsx index e3fb7c92..e6158436 100644 --- a/apps/mcp-dockmaster/src/components/terms-consent-dialog.tsx +++ b/apps/mcp-dockmaster/src/components/terms-consent-dialog.tsx @@ -13,6 +13,7 @@ import { Label } from "./ui/label"; import { termsOfServiceMarkdown } from "../constants/terms-of-service"; import { saveUserConsent } from "../lib/localStorage"; import { updateAnalyticsConsent } from "../lib/analytics"; +import { useTranslation } from "@mcp-dockmaster/i18n"; interface TermsConsentDialogProps { open: boolean; @@ -20,6 +21,7 @@ interface TermsConsentDialogProps { } export const TermsConsentDialog = ({ open, onAccept }: TermsConsentDialogProps) => { + const { t } = useTranslation(); const [termsAccepted, setTermsAccepted] = useState(false); const [analyticsEnabled, setAnalyticsEnabled] = useState(true); @@ -33,9 +35,9 @@ export const TermsConsentDialog = ({ open, onAccept }: TermsConsentDialogProps) {}}> - Terms of Service & Privacy Settings + {t('terms_consent.title')} - Please review and accept our terms of service to continue using MCP Dockmaster. + {t('terms_consent.description')} @@ -53,7 +55,7 @@ export const TermsConsentDialog = ({ open, onAccept }: TermsConsentDialogProps) onCheckedChange={setTermsAccepted} />
@@ -64,7 +66,7 @@ export const TermsConsentDialog = ({ open, onAccept }: TermsConsentDialogProps) onCheckedChange={setAnalyticsEnabled} />
@@ -74,7 +76,7 @@ export const TermsConsentDialog = ({ open, onAccept }: TermsConsentDialogProps) onClick={handleAccept} disabled={!termsAccepted} > - Continue + {t('common.continue')} diff --git a/apps/mcp-dockmaster/src/components/ui/dialog.tsx b/apps/mcp-dockmaster/src/components/ui/dialog.tsx index d65be434..081f0e4b 100644 --- a/apps/mcp-dockmaster/src/components/ui/dialog.tsx +++ b/apps/mcp-dockmaster/src/components/ui/dialog.tsx @@ -1,6 +1,7 @@ import * as React from "react"; import * as DialogPrimitive from "@radix-ui/react-dialog"; import { XIcon } from "lucide-react"; +import { useTranslation } from "@mcp-dockmaster/i18n"; import { cn } from "@/lib/utils"; @@ -49,6 +50,8 @@ function DialogContent({ children, ...props }: React.ComponentProps) { + const { t } = useTranslation(); + return ( @@ -63,7 +66,7 @@ function DialogContent({ {children} - Close + {t('ui.close')} diff --git a/apps/mcp-dockmaster/src/components/ui/sheet.tsx b/apps/mcp-dockmaster/src/components/ui/sheet.tsx index 7dd6d97b..a30f0892 100644 --- a/apps/mcp-dockmaster/src/components/ui/sheet.tsx +++ b/apps/mcp-dockmaster/src/components/ui/sheet.tsx @@ -1,6 +1,7 @@ import * as React from "react"; import * as SheetPrimitive from "@radix-ui/react-dialog"; import { XIcon } from "lucide-react"; +import { useTranslation } from "@mcp-dockmaster/i18n"; import { cn } from "@/lib/utils"; @@ -50,6 +51,8 @@ function SheetContent({ }: React.ComponentProps & { side?: "top" | "right" | "bottom" | "left"; }) { + const { t } = useTranslation(); + return ( @@ -72,7 +75,7 @@ function SheetContent({ {children} - Close + {t('ui.close')} diff --git a/apps/mcp-dockmaster/src/components/ui/sidebar.tsx b/apps/mcp-dockmaster/src/components/ui/sidebar.tsx index 6131c6d9..7ef3de0b 100644 --- a/apps/mcp-dockmaster/src/components/ui/sidebar.tsx +++ b/apps/mcp-dockmaster/src/components/ui/sidebar.tsx @@ -22,6 +22,7 @@ import { TooltipProvider, TooltipTrigger, } from "@/components/ui/tooltip"; +import { useTranslation } from "@mcp-dockmaster/i18n"; const SIDEBAR_COOKIE_NAME = "sidebar_state"; const SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7; @@ -162,6 +163,7 @@ function Sidebar({ collapsible?: "offcanvas" | "icon" | "none"; }) { const { isMobile, state, openMobile, setOpenMobile } = useSidebar(); + const { t } = useTranslation(); if (collapsible === "none") { return ( @@ -194,8 +196,8 @@ function Sidebar({ side={side} > - Sidebar - Displays the mobile sidebar. + {t('ui.sidebar')} + {t('ui.sidebar_description')}
{children}
@@ -248,17 +250,17 @@ function Sidebar({ ); } -function SidebarTrigger({ - className, - onClick, - ...props -}: React.ComponentProps) { +const SidebarTrigger = React.forwardRef< + React.ElementRef, + React.ComponentProps +>(({ className, onClick, ...props }, ref) => { const { toggleSidebar } = useSidebar(); + const { t } = useTranslation(); return ( ); -} +}); +SidebarTrigger.displayName = "SidebarTrigger"; -function SidebarRail({ className, ...props }: React.ComponentProps<"button">) { +const SidebarRail = React.forwardRef< + HTMLButtonElement, + React.ComponentProps<"button"> +>(({ className, ...props }, ref) => { const { toggleSidebar } = useSidebar(); + const { t } = useTranslation(); return ( diff --git a/libs/mcp-dockmaster-i18n/locales/de_DE.json b/libs/mcp-dockmaster-i18n/locales/de_DE.json index babbd81b..35acac74 100644 --- a/libs/mcp-dockmaster-i18n/locales/de_DE.json +++ b/libs/mcp-dockmaster-i18n/locales/de_DE.json @@ -30,7 +30,24 @@ "loading": "Laden...", "retry": "Erneut versuchen", "save": "Speichern", - "welcome": "Willkommen" + "welcome": "Willkommen", + "close": "Schließen", + "continue": "Fortfahren", + "ok": "OK", + "yes": "Ja", + "no": "Nein", + "enabled": "Aktiviert", + "disabled": "Deaktiviert", + "running": "Läuft", + "stopped": "Gestoppt", + "starting": "Startet...", + "updating": "Aktualisiert...", + "all": "Alle", + "tags": "Tags:", + "status": "Status:", + "required": "Erforderlich", + "optional": "Optional", + "default": "Standard" }, "errors": { "invalid_email": "Bitte geben Sie eine gültige E-Mail-Adresse ein", @@ -53,6 +70,8 @@ }, "home": { "checking": "Überprüfen...", + "confirm_installation_title": "Installation bestätigen", + "confirm_installation_description": "Bitte stellen Sie sicher, dass {{title}} geschlossen ist, bevor Sie fortfahren.", "environment": { "active": "Aktiv", "description": "Stellen Sie sicher, dass Sie Node.js, Python und Docker installiert haben, um MCPs auszuführen.", @@ -72,6 +91,7 @@ "add_to_other": "Zu anderem MCP-Client hinzufügen", "description": "Fügen Sie Dockmaster zu Cursor, Claude Desktop oder einem anderen MCP-Client hinzu.", "inactive": "Inaktiv", + "install": "Installieren", "other": "Andere Apps", "other_description": "Fügen Sie MCP Dockmaster zu jeder anderen App hinzu, die MCP-Server vom Typ Befehl unterstützt:", "title": "Integrationsdetails" @@ -193,5 +213,106 @@ "max_length": "Darf höchstens {{count}} Zeichen lang sein", "min_length": "Muss mindestens {{count}} Zeichen lang sein", "password_mismatch": "Die Passwörter stimmen nicht überein" + }, + "installed_servers": { + "title": "Installierte Server", + "description": "Verwalten Sie Ihre installierten KI-Anwendungen und MCP-Tools.", + "loading": "Installierte Anwendungen laden...", + "no_applications": "Sie haben noch keine Anwendungen installiert.", + "visit_store": "Besuchen Sie den KI-App-Store, um Anwendungen zu entdecken und zu installieren.", + "no_matches": "Keine Server entsprechen dem ausgewählten Filter.", + "clear_filter": "Filter löschen", + "active_status": "MCP-Server aktiv", + "paused_status": "MCP-Server pausiert", + "updating_servers": "Server werden aktualisiert...", + "add_new_color": "Neue Farbe hinzufügen", + "server_info": { + "tooltip": "Serverinformationen", + "title": "Serverinformationen", + "description": "Detaillierte Informationen über diesen Server anzeigen", + "basic_info_title": "Grundlegende Informationen", + "description_label": "Beschreibung", + "id_label": "ID", + "status_label": "Status", + "enabled_label": "Aktiviert", + "tools_label": "Tools", + "tools_count": "{{count}} Tools verfügbar", + "tools_type_label": "Tools-Typ", + "source_url_label": "Quell-URL", + "entry_point_label": "Einstiegspunkt", + "tools_title": "Tools", + "configuration_title": "Konfiguration", + "command_label": "Befehl", + "args_label": "Argumente", + "env_vars_label": "Umgebungsvariablen", + "distribution_title": "Verteilung", + "type_label": "Typ", + "package_label": "Paket", + "uninstall_server": "Server deinstallieren" + }, + "env_vars": { + "tooltip": "Umgebungsvariablen konfigurieren", + "needs_attention": "Benötigt Aufmerksamkeit", + "needs_attention_tooltip": "Dieser Server erfordert, dass Sie bestimmte Umgebungsvariablen einrichten. Ohne diese Einstellungen wird die Liste der Tools möglicherweise nicht angezeigt." + }, + "color_dialog": { + "title": "Neue Farbe hinzufügen", + "description": "Geben Sie einen Namen für die neue Farbe ein. Diese Farbe wird zu allen Servern hinzugefügt.", + "name_label": "Farbname", + "name_placeholder": "z.B. Blau, Gelb, Lila", + "preview_label": "Farbvorschau", + "new_color": "Neue Farbe", + "add_color": "Farbe hinzufügen" + }, + "config_popup": { + "title": "Umgebungsvariablen", + "uninstall": "Deinstallieren", + "save": "Speichern", + "cancel": "Abbrechen", + "saving": "Speichern..." + } + }, + "server": { + "uninstalled": { + "success": "Server erfolgreich deinstalliert", + "error": "Fehler beim Deinstallieren des Servers: " + }, + "enabling": { + "all": "Alle Server werden aktiviert..." + }, + "enabled": "Aktiviert ", + "updating": "Server werden aktualisiert für ", + "updated": "Aktualisiert ", + "update": { + "error": "Fehler beim Aktualisieren der Server" + }, + "color": { + "empty": "Farbname darf nicht leer sein", + "added": "Neue Farbe hinzugefügt: " + }, + "notfound": "Server mit ID ", + "config": { + "updated": "Konfiguration für ", + "error": "Fehler beim Aktualisieren der Konfiguration: " + }, + "restarting": "Neustart ", + "restarted": " erfolgreich neu gestartet mit neuer Konfiguration", + "restart": { + "error": "Fehler beim Neustart " + } + }, + "terms_consent": { + "title": "Nutzungsbedingungen und Datenschutzeinstellungen", + "description": "Bitte lesen und akzeptieren Sie unsere Nutzungsbedingungen, um MCP Dockmaster weiterhin zu verwenden.", + "accept_terms": "Ich akzeptiere die Nutzungsbedingungen", + "enable_analytics": "Anonyme Analysen aktivieren, um die Anwendung zu verbessern" + }, + "sidebar": { + "toggle": "Seitenleiste umschalten" + }, + "ui": { + "close": "Schließen", + "sidebar": "Seitenleiste", + "sidebar_description": "Zeigt die mobile Seitenleiste an." } -} +} diff --git a/libs/mcp-dockmaster-i18n/locales/en_US.json b/libs/mcp-dockmaster-i18n/locales/en_US.json index 6d53ca82..3a0e86b4 100644 --- a/libs/mcp-dockmaster-i18n/locales/en_US.json +++ b/libs/mcp-dockmaster-i18n/locales/en_US.json @@ -6,7 +6,24 @@ "retry": "Retry", "cancel": "Cancel", "save": "Save", - "delete": "Delete" + "delete": "Delete", + "close": "Close", + "continue": "Continue", + "ok": "OK", + "yes": "Yes", + "no": "No", + "enabled": "Enabled", + "disabled": "Disabled", + "running": "Running", + "stopped": "Stopped", + "starting": "Starting...", + "updating": "Updating...", + "all": "All", + "tags": "Tags:", + "status": "Status:", + "required": "Required", + "optional": "Optional", + "default": "Default" }, "navigation": { "home": "Home", @@ -42,6 +59,8 @@ "restart_error": "Failed to restart {{mcpClientApp}}", "mcp_description": "MCP is an open-source standard from Anthropic that helps AI apps like Claude Desktop or Cursor easily access data from platforms such as Slack and Google Drive, interact with other applications, and connect to APIs.", "getting_started": "Getting Started", + "confirm_installation_title": "Confirm Installation", + "confirm_installation_description": "Please make sure {{title}} is closed before continuing.", "environment": { "title": "Environment Details", "description": "Make sure that you have Node.js, Python, and Docker installed so you can run MCPs.", @@ -60,6 +79,7 @@ "other": "Other Apps", "inactive": "Inactive", "active": "Active", + "install": "Install", "other_description": "Add MCP Dockmaster to any other app that supports MCP Servers of type command:" }, "registry": { @@ -193,5 +213,106 @@ "restart_both_button": "Restart Both", "confirm_button": "Confirm" } + }, + "installed_servers": { + "title": "Servers Installed", + "description": "Manage your installed AI applications and MCP tools.", + "loading": "Loading installed applications...", + "no_applications": "You don't have any applications installed yet.", + "visit_store": "Visit the AI App Store to discover and install applications.", + "no_matches": "No servers match the selected filter.", + "clear_filter": "Clear Filter", + "active_status": "MCP Servers Active", + "paused_status": "MCP Servers Paused", + "updating_servers": "Updating servers...", + "add_new_color": "Add New Color", + "server_info": { + "tooltip": "Server Information", + "title": "Server Information", + "description": "View detailed information about this server", + "basic_info_title": "Basic Information", + "description_label": "Description", + "id_label": "ID", + "status_label": "Status", + "enabled_label": "Enabled", + "tools_label": "Tools", + "tools_count": "{{count}} tools available", + "tools_type_label": "Tools Type", + "source_url_label": "Source URL", + "entry_point_label": "Entry Point", + "tools_title": "Tools", + "configuration_title": "Configuration", + "command_label": "Command", + "args_label": "Arguments", + "env_vars_label": "Environment Variables", + "distribution_title": "Distribution", + "type_label": "Type", + "package_label": "Package", + "uninstall_server": "Uninstall Server" + }, + "env_vars": { + "tooltip": "Configure Environment Variables", + "needs_attention": "Needs Attention", + "needs_attention_tooltip": "This server requires you to set up certain environment variable(s). Without these settings, the list of tools may not appear." + }, + "color_dialog": { + "title": "Add New Color", + "description": "Enter a name for the new color. This color will be added to all servers.", + "name_label": "Color Name", + "name_placeholder": "e.g. Blue, Yellow, Purple", + "preview_label": "Color Preview", + "new_color": "New Color", + "add_color": "Add Color" + }, + "config_popup": { + "title": "Environment Variables", + "uninstall": "Uninstall", + "save": "Save", + "cancel": "Cancel", + "saving": "Saving..." + } + }, + "server": { + "uninstalled": { + "success": "Server uninstalled successfully", + "error": "Failed to uninstall server: " + }, + "enabling": { + "all": "Enabling all servers..." + }, + "enabled": "Enabled ", + "updating": "Updating servers for ", + "updated": "Updated ", + "update": { + "error": "Error updating servers" + }, + "color": { + "empty": "Color name cannot be empty", + "added": "Added new color: " + }, + "notfound": "Server with ID ", + "config": { + "updated": "Configuration for ", + "error": "Failed to update configuration: " + }, + "restarting": "Restarting ", + "restarted": " restarted successfully with new configuration", + "restart": { + "error": "Failed to restart " + } + }, + "terms_consent": { + "title": "Terms of Service & Privacy Settings", + "description": "Please review and accept our terms of service to continue using MCP Dockmaster.", + "accept_terms": "I accept the Terms of Service", + "enable_analytics": "Enable anonymous analytics to help improve the application" + }, + "sidebar": { + "toggle": "Toggle Sidebar" + }, + "ui": { + "close": "Close", + "sidebar": "Sidebar", + "sidebar_description": "Displays the mobile sidebar." } } \ No newline at end of file diff --git a/libs/mcp-dockmaster-i18n/locales/es_ES.json b/libs/mcp-dockmaster-i18n/locales/es_ES.json index 96eeec4c..d985cbcb 100644 --- a/libs/mcp-dockmaster-i18n/locales/es_ES.json +++ b/libs/mcp-dockmaster-i18n/locales/es_ES.json @@ -30,7 +30,24 @@ "loading": "Cargando...", "retry": "Reintentar", "save": "Guardar", - "welcome": "Bienvenido" + "welcome": "Bienvenido", + "close": "Cerrar", + "continue": "Continuar", + "ok": "OK", + "yes": "Sí", + "no": "No", + "enabled": "Habilitado", + "disabled": "Deshabilitado", + "running": "Ejecutándose", + "stopped": "Detenido", + "starting": "Iniciando...", + "updating": "Actualizando...", + "all": "Todos", + "tags": "Etiquetas:", + "status": "Estado:", + "required": "Requerido", + "optional": "Opcional", + "default": "Por defecto" }, "errors": { "invalid_email": "Por favor, introduce una dirección de correo electrónico válida", @@ -53,6 +70,8 @@ }, "home": { "checking": "Verificando...", + "confirm_installation_title": "Confirmar Instalación", + "confirm_installation_description": "Por favor, asegúrate de que {{title}} esté cerrado antes de continuar.", "environment": { "active": "Activo", "description": "Asegúrate de tener instalados Node.js, Python y Docker para poder ejecutar MCPs.", @@ -72,6 +91,7 @@ "add_to_other": "Agregar a otro cliente MCP", "description": "Agrega Dockmaster a Cursor, Claude Desktop o cualquier otro cliente MCP.", "inactive": "Inactivo", + "install": "Instalar", "other": "Otras Aplicaciones", "other_description": "Agrega MCP Dockmaster a cualquier otra aplicación que soporte servidores MCP de tipo comando:", "title": "Detalles de Integración" @@ -193,5 +213,106 @@ "max_length": "Debe tener como máximo {{count}} caracteres", "min_length": "Debe tener al menos {{count}} caracteres", "password_mismatch": "Las contraseñas no coinciden" + }, + "installed_servers": { + "title": "Servidores Instalados", + "description": "Gestiona tus aplicaciones de IA instaladas y herramientas MCP.", + "loading": "Cargando aplicaciones instaladas...", + "no_applications": "Aún no tienes aplicaciones instaladas.", + "visit_store": "Visita la Tienda de Aplicaciones de IA para descubrir e instalar aplicaciones.", + "no_matches": "Ningún servidor coincide con el filtro seleccionado.", + "clear_filter": "Limpiar Filtro", + "active_status": "Servidores MCP Activos", + "paused_status": "Servidores MCP Pausados", + "updating_servers": "Actualizando servidores...", + "add_new_color": "Agregar Nuevo Color", + "server_info": { + "tooltip": "Información del Servidor", + "title": "Información del Servidor", + "description": "Ver información detallada sobre este servidor", + "basic_info_title": "Información Básica", + "description_label": "Descripción", + "id_label": "ID", + "status_label": "Estado", + "enabled_label": "Habilitado", + "tools_label": "Herramientas", + "tools_count": "{{count}} herramientas disponibles", + "tools_type_label": "Tipo de Herramientas", + "source_url_label": "URL de Origen", + "entry_point_label": "Punto de Entrada", + "tools_title": "Herramientas", + "configuration_title": "Configuración", + "command_label": "Comando", + "args_label": "Argumentos", + "env_vars_label": "Variables de Entorno", + "distribution_title": "Distribución", + "type_label": "Tipo", + "package_label": "Paquete", + "uninstall_server": "Desinstalar Servidor" + }, + "env_vars": { + "tooltip": "Configurar Variables de Entorno", + "needs_attention": "Necesita Atención", + "needs_attention_tooltip": "Este servidor requiere que configures ciertas variables de entorno. Sin estas configuraciones, la lista de herramientas puede no aparecer." + }, + "color_dialog": { + "title": "Agregar Nuevo Color", + "description": "Ingresa un nombre para el nuevo color. Este color se agregará a todos los servidores.", + "name_label": "Nombre del Color", + "name_placeholder": "ej. Azul, Amarillo, Púrpura", + "preview_label": "Vista Previa del Color", + "new_color": "Nuevo Color", + "add_color": "Agregar Color" + }, + "config_popup": { + "title": "Variables de Entorno", + "uninstall": "Desinstalar", + "save": "Guardar", + "cancel": "Cancelar", + "saving": "Guardando..." + } + }, + "server": { + "uninstalled": { + "success": "Servidor desinstalado exitosamente", + "error": "Error al desinstalar el servidor: " + }, + "enabling": { + "all": "Habilitando todos los servidores..." + }, + "enabled": "Habilitado ", + "updating": "Actualizando servidores para ", + "updated": "Actualizado ", + "update": { + "error": "Error al actualizar servidores" + }, + "color": { + "empty": "El nombre del color no puede estar vacío", + "added": "Nuevo color agregado: " + }, + "notfound": "Servidor con ID ", + "config": { + "updated": "Configuración para ", + "error": "Error al actualizar la configuración: " + }, + "restarting": "Reiniciando ", + "restarted": " reiniciado exitosamente con nueva configuración", + "restart": { + "error": "Error al reiniciar " + } + }, + "terms_consent": { + "title": "Términos de Servicio y Configuración de Privacidad", + "description": "Por favor, revisa y acepta nuestros términos de servicio para continuar usando MCP Dockmaster.", + "accept_terms": "Acepto los Términos de Servicio", + "enable_analytics": "Habilitar análisis anónimos para ayudar a mejorar la aplicación" + }, + "sidebar": { + "toggle": "Alternar Barra Lateral" + }, + "ui": { + "close": "Cerrar", + "sidebar": "Barra Lateral", + "sidebar_description": "Muestra la barra lateral móvil." } -} +} diff --git a/libs/mcp-dockmaster-i18n/locales/fr_FR.json b/libs/mcp-dockmaster-i18n/locales/fr_FR.json index 174a0bc8..eff2661b 100644 --- a/libs/mcp-dockmaster-i18n/locales/fr_FR.json +++ b/libs/mcp-dockmaster-i18n/locales/fr_FR.json @@ -30,7 +30,24 @@ "loading": "Chargement...", "retry": "Réessayer", "save": "Enregistrer", - "welcome": "Bienvenue" + "welcome": "Bienvenue", + "close": "Fermer", + "continue": "Continuer", + "ok": "OK", + "yes": "Oui", + "no": "Non", + "enabled": "Activé", + "disabled": "Désactivé", + "running": "En cours d'exécution", + "stopped": "Arrêté", + "starting": "Démarrage...", + "updating": "Mise à jour...", + "all": "Tous", + "tags": "Étiquettes:", + "status": "Statut:", + "required": "Requis", + "optional": "Optionnel", + "default": "Par défaut" }, "errors": { "invalid_email": "Veuillez entrer une adresse e-mail valide", @@ -53,6 +70,8 @@ }, "home": { "checking": "Vérification...", + "confirm_installation_title": "Confirmer l'installation", + "confirm_installation_description": "Veuillez vous assurer que {{title}} est fermé avant de continuer.", "environment": { "active": "Actif", "description": "Assurez-vous d'avoir Node.js, Python et Docker installés pour pouvoir exécuter les MCP.", @@ -72,6 +91,7 @@ "add_to_other": "Ajouter à un autre client MCP", "description": "Ajoutez Dockmaster à Cursor, Claude Desktop ou tout autre client MCP.", "inactive": "Inactif", + "install": "Installer", "other": "Autres applications", "other_description": "Ajoutez MCP Dockmaster à toute autre application qui prend en charge les serveurs MCP de type commande :", "title": "Détails de l'intégration" @@ -193,5 +213,106 @@ "max_length": "Doit contenir au maximum {{count}} caractères", "min_length": "Doit contenir au moins {{count}} caractères", "password_mismatch": "Les mots de passe ne correspondent pas" + }, + "installed_servers": { + "title": "Serveurs installés", + "description": "Gérez vos applications IA installées et les outils MCP.", + "loading": "Chargement des applications installées...", + "no_applications": "Vous n'avez encore aucune application installée.", + "visit_store": "Visitez le magasin d'applications IA pour découvrir et installer des applications.", + "no_matches": "Aucun serveur ne correspond au filtre sélectionné.", + "clear_filter": "Effacer le filtre", + "active_status": "Serveurs MCP actifs", + "paused_status": "Serveurs MCP en pause", + "updating_servers": "Mise à jour des serveurs...", + "add_new_color": "Ajouter une nouvelle couleur", + "server_info": { + "tooltip": "Informations sur le serveur", + "title": "Informations sur le serveur", + "description": "Voir les informations détaillées sur ce serveur", + "basic_info_title": "Informations de base", + "description_label": "Description", + "id_label": "ID", + "status_label": "Statut", + "enabled_label": "Activé", + "tools_label": "Outils", + "tools_count": "{{count}} outils disponibles", + "tools_type_label": "Type d'outils", + "source_url_label": "URL source", + "entry_point_label": "Point d'entrée", + "tools_title": "Outils", + "configuration_title": "Configuration", + "command_label": "Commande", + "args_label": "Arguments", + "env_vars_label": "Variables d'environnement", + "distribution_title": "Distribution", + "type_label": "Type", + "package_label": "Paquet", + "uninstall_server": "Désinstaller le serveur" + }, + "env_vars": { + "tooltip": "Configurer les variables d'environnement", + "needs_attention": "Nécessite attention", + "needs_attention_tooltip": "Ce serveur nécessite que vous configuriez certaines variables d'environnement. Sans ces paramètres, la liste des outils peut ne pas apparaître." + }, + "color_dialog": { + "title": "Ajouter une nouvelle couleur", + "description": "Entrez un nom pour la nouvelle couleur. Cette couleur sera ajoutée à tous les serveurs.", + "name_label": "Nom de la couleur", + "name_placeholder": "ex. Bleu, Jaune, Violet", + "preview_label": "Aperçu de la couleur", + "new_color": "Nouvelle couleur", + "add_color": "Ajouter couleur" + }, + "config_popup": { + "title": "Variables d'environnement", + "uninstall": "Désinstaller", + "save": "Enregistrer", + "cancel": "Annuler", + "saving": "Enregistrement..." + } + }, + "server": { + "uninstalled": { + "success": "Serveur désinstallé avec succès", + "error": "Échec de la désinstallation du serveur : " + }, + "enabling": { + "all": "Activation de tous les serveurs..." + }, + "enabled": "Activé ", + "updating": "Mise à jour des serveurs pour ", + "updated": "Mis à jour ", + "update": { + "error": "Erreur lors de la mise à jour des serveurs" + }, + "color": { + "empty": "Le nom de la couleur ne peut pas être vide", + "added": "Nouvelle couleur ajoutée : " + }, + "notfound": "Serveur avec ID ", + "config": { + "updated": "Configuration pour ", + "error": "Échec de la mise à jour de la configuration : " + }, + "restarting": "Redémarrage ", + "restarted": " redémarré avec succès avec la nouvelle configuration", + "restart": { + "error": "Échec du redémarrage " + } + }, + "terms_consent": { + "title": "Conditions d'utilisation et paramètres de confidentialité", + "description": "Veuillez consulter et accepter nos conditions d'utilisation pour continuer à utiliser MCP Dockmaster.", + "accept_terms": "J'accepte les conditions d'utilisation", + "enable_analytics": "Activer les analyses anonymes pour aider à améliorer l'application" + }, + "sidebar": { + "toggle": "Basculer la barre latérale" + }, + "ui": { + "close": "Fermer", + "sidebar": "Barre latérale", + "sidebar_description": "Affiche la barre latérale mobile." } -} +} diff --git a/libs/mcp-dockmaster-i18n/locales/ja_JP.json b/libs/mcp-dockmaster-i18n/locales/ja_JP.json index 9ae8bb08..8bebce7c 100644 --- a/libs/mcp-dockmaster-i18n/locales/ja_JP.json +++ b/libs/mcp-dockmaster-i18n/locales/ja_JP.json @@ -30,7 +30,24 @@ "loading": "読み込み中...", "retry": "再試行", "save": "保存", - "welcome": "ようこそ" + "welcome": "ようこそ", + "close": "閉じる", + "continue": "続ける", + "ok": "OK", + "yes": "はい", + "no": "いいえ", + "enabled": "有効", + "disabled": "無効", + "running": "実行中", + "stopped": "停止済み", + "starting": "開始中...", + "updating": "更新中...", + "all": "すべて", + "tags": "タグ:", + "status": "ステータス:", + "required": "必須", + "optional": "オプション", + "default": "デフォルト" }, "errors": { "invalid_email": "有効なメールアドレスを入力してください", @@ -53,6 +70,8 @@ }, "home": { "checking": "確認中...", + "confirm_installation_title": "インストールの確認", + "confirm_installation_description": "続行する前に、{{title}}が閉じていることを確認してください。", "environment": { "active": "アクティブ", "description": "MCPを実行するためにNode.js、Python、Dockerがインストールされていることを確認してください。", @@ -72,6 +91,7 @@ "add_to_other": "他のMCPクライアントに追加", "description": "DockmasterをCursor、Claude Desktop、または他のMCPクライアントに追加します。", "inactive": "非アクティブ", + "install": "インストール", "other": "その他のアプリ", "other_description": "コマンドタイプのMCPサーバーをサポートする他のアプリにMCP Dockmasterを追加します:", "title": "統合の詳細" @@ -193,5 +213,106 @@ "max_length": "最大で{{count}}文字以下である必要があります", "min_length": "最低でも{{count}}文字以上である必要があります", "password_mismatch": "パスワードが一致しません" + }, + "installed_servers": { + "title": "インストールされたサーバー", + "description": "インストールされたAIアプリケーションとMCPツールを管理します。", + "loading": "インストールされたアプリケーションを読み込み中...", + "no_applications": "まだアプリケーションがインストールされていません。", + "visit_store": "AIアプリストアにアクセスしてアプリケーションを発見・インストールしてください。", + "no_matches": "選択されたフィルターに一致するサーバーがありません。", + "clear_filter": "フィルターをクリア", + "active_status": "MCPサーバーアクティブ", + "paused_status": "MCPサーバー一時停止", + "updating_servers": "サーバーを更新中...", + "add_new_color": "新しい色を追加", + "server_info": { + "tooltip": "サーバー情報", + "title": "サーバー情報", + "description": "このサーバーの詳細情報を表示", + "basic_info_title": "基本情報", + "description_label": "説明", + "id_label": "ID", + "status_label": "ステータス", + "enabled_label": "有効", + "tools_label": "ツール", + "tools_count": "{{count}} ツールが利用可能", + "tools_type_label": "ツールタイプ", + "source_url_label": "ソースURL", + "entry_point_label": "エントリーポイント", + "tools_title": "ツール", + "configuration_title": "設定", + "command_label": "コマンド", + "args_label": "引数", + "env_vars_label": "環境変数", + "distribution_title": "配布", + "type_label": "タイプ", + "package_label": "パッケージ", + "uninstall_server": "サーバーをアンインストール" + }, + "env_vars": { + "tooltip": "環境変数を設定", + "needs_attention": "注意が必要", + "needs_attention_tooltip": "このサーバーは特定の環境変数の設定が必要です。これらの設定がないと、ツールのリストが表示されない場合があります。" + }, + "color_dialog": { + "title": "新しい色を追加", + "description": "新しい色の名前を入力してください。この色はすべてのサーバーに追加されます。", + "name_label": "色の名前", + "name_placeholder": "例:青、黄、紫", + "preview_label": "色のプレビュー", + "new_color": "新しい色", + "add_color": "色を追加" + }, + "config_popup": { + "title": "環境変数", + "uninstall": "アンインストール", + "save": "保存", + "cancel": "キャンセル", + "saving": "保存中..." + } + }, + "server": { + "uninstalled": { + "success": "サーバーが正常にアンインストールされました", + "error": "サーバーのアンインストールに失敗しました: " + }, + "enabling": { + "all": "すべてのサーバーを有効化中..." + }, + "enabled": "有効化済み ", + "updating": "サーバーを更新中 ", + "updated": "更新済み ", + "update": { + "error": "サーバーの更新でエラー" + }, + "color": { + "empty": "色の名前を空にすることはできません", + "added": "新しい色を追加しました: " + }, + "notfound": "ID のサーバー ", + "config": { + "updated": "設定を更新しました ", + "error": "設定の更新に失敗しました: " + }, + "restarting": "再起動中 ", + "restarted": " 新しい設定で正常に再起動しました", + "restart": { + "error": "再起動に失敗しました " + } + }, + "terms_consent": { + "title": "利用規約とプライバシー設定", + "description": "MCP Dockmasterを継続してご利用いただくために、利用規約をご確認の上、同意してください。", + "accept_terms": "利用規約に同意します", + "enable_analytics": "アプリケーションの改善に役立つ匿名の分析を有効にする" + }, + "sidebar": { + "toggle": "サイドバーを切り替え" + }, + "ui": { + "close": "閉じる", + "sidebar": "サイドバー", + "sidebar_description": "モバイルサイドバーを表示します。" } -} +} diff --git a/libs/mcp-dockmaster-i18n/locales/zh_CN.json b/libs/mcp-dockmaster-i18n/locales/zh_CN.json index 46dcac16..4c1deb60 100644 --- a/libs/mcp-dockmaster-i18n/locales/zh_CN.json +++ b/libs/mcp-dockmaster-i18n/locales/zh_CN.json @@ -30,7 +30,24 @@ "loading": "加载中...", "retry": "重试", "save": "保存", - "welcome": "欢迎" + "welcome": "欢迎", + "close": "关闭", + "continue": "继续", + "ok": "确定", + "yes": "是", + "no": "否", + "enabled": "已启用", + "disabled": "已禁用", + "running": "运行中", + "stopped": "已停止", + "starting": "启动中...", + "updating": "更新中...", + "all": "全部", + "tags": "标签:", + "status": "状态:", + "required": "必需", + "optional": "可选", + "default": "默认" }, "errors": { "invalid_email": "请输入有效的电子邮件地址", @@ -53,6 +70,8 @@ }, "home": { "checking": "检查中...", + "confirm_installation_title": "确认安装", + "confirm_installation_description": "请确保 {{title}} 在继续之前已关闭。", "environment": { "active": "活动", "description": "确保您已安装 Node.js、Python 和 Docker,以便运行 MCP。", @@ -72,6 +91,7 @@ "add_to_other": "添加到其他MCP客户端", "description": "将 Dockmaster 添加到 Cursor、Claude Desktop 或任何其他 MCP 客户端。", "inactive": "未激活", + "install": "安装", "other": "其他应用", "other_description": "将MCP Dockmaster添加到任何支持命令类型MCP服务器的其他应用中:", "title": "集成详情" @@ -193,5 +213,106 @@ "max_length": "最多只能包含 {{count}} 个字符", "min_length": "必须至少包含 {{count}} 个字符", "password_mismatch": "密码不匹配" + }, + "installed_servers": { + "title": "已安装的服务器", + "description": "管理您已安装的AI应用程序和MCP工具。", + "loading": "正在加载已安装的应用程序...", + "no_applications": "您还没有安装任何应用程序。", + "visit_store": "访问AI应用商店以发现和安装应用程序。", + "no_matches": "没有服务器匹配所选过滤器。", + "clear_filter": "清除过滤器", + "active_status": "MCP服务器活跃", + "paused_status": "MCP服务器已暂停", + "updating_servers": "正在更新服务器...", + "add_new_color": "添加新颜色", + "server_info": { + "tooltip": "服务器信息", + "title": "服务器信息", + "description": "查看此服务器的详细信息", + "basic_info_title": "基本信息", + "description_label": "描述", + "id_label": "ID", + "status_label": "状态", + "enabled_label": "已启用", + "tools_label": "工具", + "tools_count": "{{count}} 个工具可用", + "tools_type_label": "工具类型", + "source_url_label": "源URL", + "entry_point_label": "入口点", + "tools_title": "工具", + "configuration_title": "配置", + "command_label": "命令", + "args_label": "参数", + "env_vars_label": "环境变量", + "distribution_title": "发行版", + "type_label": "类型", + "package_label": "包", + "uninstall_server": "卸载服务器" + }, + "env_vars": { + "tooltip": "配置环境变量", + "needs_attention": "需要注意", + "needs_attention_tooltip": "此服务器要求您设置某些环境变量。没有这些设置,工具列表可能不会出现。" + }, + "color_dialog": { + "title": "添加新颜色", + "description": "输入新颜色的名称。此颜色将添加到所有服务器。", + "name_label": "颜色名称", + "name_placeholder": "例如 蓝色、黄色、紫色", + "preview_label": "颜色预览", + "new_color": "新颜色", + "add_color": "添加颜色" + }, + "config_popup": { + "title": "环境变量", + "uninstall": "卸载", + "save": "保存", + "cancel": "取消", + "saving": "保存中..." + } + }, + "server": { + "uninstalled": { + "success": "服务器卸载成功", + "error": "卸载服务器失败:" + }, + "enabling": { + "all": "正在启用所有服务器..." + }, + "enabled": "已启用 ", + "updating": "正在更新服务器 ", + "updated": "已更新 ", + "update": { + "error": "更新服务器时出错" + }, + "color": { + "empty": "颜色名称不能为空", + "added": "已添加新颜色:" + }, + "notfound": "ID为 ", + "config": { + "updated": "配置已更新 ", + "error": "更新配置失败:" + }, + "restarting": "正在重启 ", + "restarted": " 已使用新配置成功重启", + "restart": { + "error": "重启失败 " + } + }, + "terms_consent": { + "title": "服务条款和隐私设置", + "description": "请审阅并接受我们的服务条款以继续使用MCP Dockmaster。", + "accept_terms": "我接受服务条款", + "enable_analytics": "启用匿名分析以帮助改进应用程序" + }, + "sidebar": { + "toggle": "切换侧边栏" + }, + "ui": { + "close": "关闭", + "sidebar": "侧边栏", + "sidebar_description": "显示移动侧边栏。" } -} +}