From 84fb3add337df64b7e79fb21d9d7847d9fb9e596 Mon Sep 17 00:00:00 2001 From: Pallavi Date: Thu, 4 Sep 2025 01:10:55 +0530 Subject: [PATCH 01/21] Enter key handling & hostname field reset in resource create --- .../settings/resources/create/page.tsx | 58 ++++++++++++++----- .../[orgId]/settings/sites/create/page.tsx | 5 ++ 2 files changed, 49 insertions(+), 14 deletions(-) diff --git a/src/app/[orgId]/settings/resources/create/page.tsx b/src/app/[orgId]/settings/resources/create/page.tsx index c28f5a5f..06ecfed9 100644 --- a/src/app/[orgId]/settings/resources/create/page.tsx +++ b/src/app/[orgId]/settings/resources/create/page.tsx @@ -630,19 +630,29 @@ export default function Page() { defaultValue={row.original.ip} className="min-w-[150px]" onBlur={(e) => { - const parsed = parseHostTarget(e.target.value); + const input = e.target.value.trim(); + const hasProtocol = /^(https?|h2c):\/\//.test(input); + const hasPort = /:\d+(?:\/|$)/.test(input); - if (parsed) { - updateTarget(row.original.targetId, { - ...row.original, - method: parsed.protocol, - ip: parsed.host, - port: parsed.port ? Number(parsed.port) : undefined, - }); + if (hasProtocol || hasPort) { + const parsed = parseHostTarget(input); + if (parsed) { + updateTarget(row.original.targetId, { + ...row.original, + method: hasProtocol ? parsed.protocol : row.original.method, + ip: parsed.host, + port: hasPort ? parsed.port : row.original.port + }); + } else { + updateTarget(row.original.targetId, { + ...row.original, + ip: input + }); + } } else { updateTarget(row.original.targetId, { ...row.original, - ip: e.target.value, + ip: input }); } }} @@ -744,6 +754,11 @@ export default function Page() {
{ + if (e.key === "Enter") { + e.preventDefault(); // block default enter refresh + } + }} className="space-y-4" id="base-resource-form" > @@ -856,6 +871,11 @@ export default function Page() { { + if (e.key === "Enter") { + e.preventDefault(); // block default enter refresh + } + }} className="space-y-4" id="tcp-udp-settings-form" > @@ -1204,11 +1224,21 @@ export default function Page() { id="ip" {...field} onBlur={(e) => { - const parsed = parseHostTarget(e.target.value); - if (parsed) { - addTargetForm.setValue("method", parsed.protocol); - addTargetForm.setValue("ip", parsed.host); - addTargetForm.setValue("port", parsed.port); + const input = e.target.value.trim(); + const hasProtocol = /^(https?|h2c):\/\//.test(input); + const hasPort = /:\d+(?:\/|$)/.test(input); + + if (hasProtocol || hasPort) { + const parsed = parseHostTarget(input); + if (parsed) { + if (hasProtocol || !addTargetForm.getValues("method")) { + addTargetForm.setValue("method", parsed.protocol); + } + addTargetForm.setValue("ip", parsed.host); + if (hasPort || !addTargetForm.getValues("port")) { + addTargetForm.setValue("port", parsed.port); + } + } } else { field.onBlur(); } diff --git a/src/app/[orgId]/settings/sites/create/page.tsx b/src/app/[orgId]/settings/sites/create/page.tsx index b9e172a3..22a49eca 100644 --- a/src/app/[orgId]/settings/sites/create/page.tsx +++ b/src/app/[orgId]/settings/sites/create/page.tsx @@ -620,6 +620,11 @@ WantedBy=default.target` { + if (e.key === "Enter") { + e.preventDefault(); // block default enter refresh + } + }} className="space-y-4" id="create-site-form" > From 86956b8cacb3f50351d6fa922367a173d0c7a13b Mon Sep 17 00:00:00 2001 From: Pallavi Date: Thu, 4 Sep 2025 02:23:22 +0530 Subject: [PATCH 02/21] fix enter key reload issue --- src/app/[orgId]/settings/api-keys/create/page.tsx | 5 +++++ src/app/[orgId]/settings/clients/create/page.tsx | 5 +++++ src/app/admin/api-keys/create/page.tsx | 5 +++++ 3 files changed, 15 insertions(+) diff --git a/src/app/[orgId]/settings/api-keys/create/page.tsx b/src/app/[orgId]/settings/api-keys/create/page.tsx index 82a7915c..57822a26 100644 --- a/src/app/[orgId]/settings/api-keys/create/page.tsx +++ b/src/app/[orgId]/settings/api-keys/create/page.tsx @@ -210,6 +210,11 @@ export default function Page() { { + if (e.key === "Enter") { + e.preventDefault(); // block default enter refresh + } + }} className="space-y-4" id="create-site-form" > diff --git a/src/app/[orgId]/settings/clients/create/page.tsx b/src/app/[orgId]/settings/clients/create/page.tsx index 0736ee64..01a93de7 100644 --- a/src/app/[orgId]/settings/clients/create/page.tsx +++ b/src/app/[orgId]/settings/clients/create/page.tsx @@ -440,6 +440,11 @@ export default function Page() { { + if (e.key === "Enter") { + e.preventDefault(); // block default enter refresh + } + }} className="space-y-4" id="create-client-form" > diff --git a/src/app/admin/api-keys/create/page.tsx b/src/app/admin/api-keys/create/page.tsx index 2f95c7fd..b5a61306 100644 --- a/src/app/admin/api-keys/create/page.tsx +++ b/src/app/admin/api-keys/create/page.tsx @@ -200,6 +200,11 @@ export default function Page() { { + if (e.key === "Enter") { + e.preventDefault(); // block default enter refresh + } + }} className="space-y-4" id="create-site-form" > From 2f89a1685213863156d02754bd09ce725340ecd4 Mon Sep 17 00:00:00 2001 From: Pallavi Date: Fri, 5 Sep 2025 20:39:50 +0530 Subject: [PATCH 03/21] minor fix to domain sanitize when create resources --- .../[orgId]/settings/resources/create/page.tsx | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/app/[orgId]/settings/resources/create/page.tsx b/src/app/[orgId]/settings/resources/create/page.tsx index 06ecfed9..ad0a6568 100644 --- a/src/app/[orgId]/settings/resources/create/page.tsx +++ b/src/app/[orgId]/settings/resources/create/page.tsx @@ -91,6 +91,8 @@ import { DockerManager, DockerState } from "@app/lib/docker"; import { parseHostTarget } from "@app/lib/parseHostTarget"; import { toASCII, toUnicode } from 'punycode'; import { DomainRow } from "../../../../../components/DomainsTable"; +import { finalizeSubdomainSanitize } from "@app/lib/subdomain-utils"; + const baseResourceFormSchema = z.object({ name: z.string().min(1).max(255), @@ -326,10 +328,17 @@ export default function Page() { http: baseData.http }; + let sanitizedSubdomain: string | undefined; + if (isHttp) { const httpData = httpForm.getValues(); + + sanitizedSubdomain = httpData.subdomain + ? finalizeSubdomainSanitize(httpData.subdomain) + : undefined; + Object.assign(payload, { - subdomain: httpData.subdomain ? toASCII(httpData.subdomain) : undefined, + subdomain: sanitizedSubdomain ? toASCII(sanitizedSubdomain) : undefined, domainId: httpData.domainId, protocol: "tcp" }); @@ -361,6 +370,10 @@ export default function Page() { const id = res.data.data.resourceId; setResourceId(id); + toast({ + description: `Subdomain: ${sanitizedSubdomain}`, + }); + // Create targets if any exist if (targets.length > 0) { try { From 7b7f65da39b0766dcc1f52ea54865a0d61f81576 Mon Sep 17 00:00:00 2001 From: Owen Date: Mon, 15 Sep 2025 11:13:31 -0700 Subject: [PATCH 04/21] Add default to siteResources niceId --- server/setup/scriptsSqlite/1.10.0.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/setup/scriptsSqlite/1.10.0.ts b/server/setup/scriptsSqlite/1.10.0.ts index 41833ac6..1ca7d322 100644 --- a/server/setup/scriptsSqlite/1.10.0.ts +++ b/server/setup/scriptsSqlite/1.10.0.ts @@ -32,11 +32,11 @@ export default async function migration() { ALTER TABLE 'exitNodes' ADD 'region' text; ALTER TABLE 'idpOidcConfig' ADD 'variant' text DEFAULT 'oidc' NOT NULL; ALTER TABLE 'resources' ADD 'niceId' text DEFAULT '' NOT NULL; + ALTER TABLE 'siteResources' ADD 'niceId' text DEFAULT '' NOT NULL; ALTER TABLE 'userOrgs' ADD 'autoProvisioned' integer DEFAULT false; ALTER TABLE 'targets' ADD 'pathMatchType' text; ALTER TABLE 'targets' ADD 'path' text; ALTER TABLE 'resources' ADD 'headers' text; - ALTER TABLE 'siteResources' ADD 'niceId' text NOT NULL; `); // this diverges from the schema a bit because the schema does not have a default on niceId but was required for the migration and I dont think it will effect much down the line... const usedNiceIds: string[] = []; From afa9acfb1e8d59743a3a7f6b0700f6e4e8c3a2c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Sch=C3=A4fer?= Date: Mon, 15 Sep 2025 20:27:03 +0200 Subject: [PATCH 05/21] feat(sites): adding official kubernetes helm install command for newt --- .../[orgId]/settings/clients/create/page.tsx | 8 ++++++ .../[orgId]/settings/sites/create/page.tsx | 25 ++++++++++++++++++- 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/src/app/[orgId]/settings/clients/create/page.tsx b/src/app/[orgId]/settings/clients/create/page.tsx index 0736ee64..9a1d5917 100644 --- a/src/app/[orgId]/settings/clients/create/page.tsx +++ b/src/app/[orgId]/settings/clients/create/page.tsx @@ -42,6 +42,10 @@ import { FaFreebsd, FaWindows } from "react-icons/fa"; +import { + SiNixos, + SiKubernetes +} from "react-icons/si"; import { Alert, AlertDescription, AlertTitle } from "@app/components/ui/alert"; import { createApiClient, formatAxiosError } from "@app/lib/api"; import { useEnvContext } from "@app/hooks/useEnvContext"; @@ -248,10 +252,14 @@ export default function Page() { return ; case "docker": return ; + case "kubernetes": + return ; case "podman": return ; case "freebsd": return ; + case "nixos": + return ; default: return ; } diff --git a/src/app/[orgId]/settings/sites/create/page.tsx b/src/app/[orgId]/settings/sites/create/page.tsx index b9e172a3..35756ab7 100644 --- a/src/app/[orgId]/settings/sites/create/page.tsx +++ b/src/app/[orgId]/settings/sites/create/page.tsx @@ -42,7 +42,10 @@ import { FaFreebsd, FaWindows } from "react-icons/fa"; -import { SiNixos } from "react-icons/si"; +import { + SiNixos, + SiKubernetes +} from "react-icons/si"; import { Checkbox, CheckboxWithLabel } from "@app/components/ui/checkbox"; import { Alert, AlertDescription, AlertTitle } from "@app/components/ui/alert"; import { generateKeypair } from "../[niceId]/wireguardConfig"; @@ -76,6 +79,7 @@ type Commands = { freebsd: Record; windows: Record; docker: Record; + kubernetes: Record; podman: Record; nixos: Record; }; @@ -83,6 +87,7 @@ type Commands = { const platforms = [ "linux", "docker", + "kubernetes", "podman", "mac", "windows", @@ -277,6 +282,18 @@ PersistentKeepalive = 5`; `docker run -dit fosrl/newt --id ${id} --secret ${secret} --endpoint ${endpoint}${acceptClientsFlag}` ] }, + kubernetes: { + "Helm Chart": [ + `helm repo add fossorial https://charts.fossorial.io`, + `helm repo update fossorial`, + `helm install newt fossorial/newt \\ + --create-namespace \\ + --set newtInstances[0].name="main-tunnel" \\ + --set-string newtInstances[0].auth.keys.endpointKey="${endpoint}" \\ + --set-string newtInstances[0].auth.keys.idKey="${id}" \\ + --set-string newtInstances[0].auth.keys.secretKey="${secret}"` + ] + }, podman: { "Podman Quadlet": [ `[Unit] @@ -324,6 +341,8 @@ WantedBy=default.target` return ["x64"]; case "docker": return ["Docker Compose", "Docker Run"]; + case "kubernetes": + return ["Helm Chart"]; case "podman": return ["Podman Quadlet", "Podman Run"]; case "freebsd": @@ -345,6 +364,8 @@ WantedBy=default.target` return "macOS"; case "docker": return "Docker"; + case "kubernetes": + return "Kubernetes"; case "podman": return "Podman"; case "freebsd": @@ -391,6 +412,8 @@ WantedBy=default.target` return ; case "docker": return ; + case "kubernetes": + return ; case "podman": return ; case "freebsd": From 4bc1e10ecbb3e935da75ca4b9b7d3e2848ee8c65 Mon Sep 17 00:00:00 2001 From: Owen Date: Mon, 15 Sep 2025 14:17:41 -0700 Subject: [PATCH 06/21] Adjust default to prefix --- src/app/[orgId]/settings/resources/[niceId]/proxy/page.tsx | 4 ++-- src/app/[orgId]/settings/resources/create/page.tsx | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/app/[orgId]/settings/resources/[niceId]/proxy/page.tsx b/src/app/[orgId]/settings/resources/[niceId]/proxy/page.tsx index b9c45b8b..88a76dd3 100644 --- a/src/app/[orgId]/settings/resources/[niceId]/proxy/page.tsx +++ b/src/app/[orgId]/settings/resources/[niceId]/proxy/page.tsx @@ -589,7 +589,7 @@ export default function ReverseProxyTargets(props: { return (
diff --git a/src/app/[orgId]/settings/resources/create/page.tsx b/src/app/[orgId]/settings/resources/create/page.tsx index 83d94cd4..e2511c8d 100644 --- a/src/app/[orgId]/settings/resources/create/page.tsx +++ b/src/app/[orgId]/settings/resources/create/page.tsx @@ -557,7 +557,7 @@ export default function Page() { return (
From bc78b95265774d730ec4ae384746667f76f2a585 Mon Sep 17 00:00:00 2001 From: Owen Date: Mon, 15 Sep 2025 14:32:36 -0700 Subject: [PATCH 07/21] Remove toast --- src/app/[orgId]/settings/resources/create/page.tsx | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/app/[orgId]/settings/resources/create/page.tsx b/src/app/[orgId]/settings/resources/create/page.tsx index 404c91f0..60837c8e 100644 --- a/src/app/[orgId]/settings/resources/create/page.tsx +++ b/src/app/[orgId]/settings/resources/create/page.tsx @@ -410,10 +410,6 @@ export default function Page() { const id = res.data.data.resourceId; setResourceId(id); - toast({ - description: `Subdomain: ${sanitizedSubdomain}`, - }); - // Create targets if any exist if (targets.length > 0) { try { From 5b35ec2ea24ddd14abbb5671f072b1fd17a7d953 Mon Sep 17 00:00:00 2001 From: Owen Schwartz Date: Mon, 15 Sep 2025 14:34:23 -0700 Subject: [PATCH 08/21] New translations en-us.json (French) --- messages/fr-FR.json | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/messages/fr-FR.json b/messages/fr-FR.json index 8b0529c6..13228c7c 100644 --- a/messages/fr-FR.json +++ b/messages/fr-FR.json @@ -513,6 +513,7 @@ "ipAddressErrorInvalidFormat": "Format d'adresse IP invalide", "ipAddressErrorInvalidOctet": "Octet d'adresse IP invalide", "path": "Chemin", + "matchPath": "Chemin de correspondance", "ipAddressRange": "Plage IP", "rulesErrorFetch": "Échec de la récupération des règles", "rulesErrorFetchDescription": "Une erreur s'est produite lors de la récupération des règles", @@ -997,6 +998,7 @@ "actionDeleteSite": "Supprimer un site", "actionGetSite": "Obtenir un site", "actionListSites": "Lister les sites", + "actionApplyBlueprint": "Appliquer le Plan", "setupToken": "Jeton de configuration", "setupTokenDescription": "Entrez le jeton de configuration depuis la console du serveur.", "setupTokenRequired": "Le jeton de configuration est requis.", @@ -1139,8 +1141,8 @@ "sidebarLicense": "Licence", "sidebarClients": "Clients (Bêta)", "sidebarDomains": "Domaines", - "enableDockerSocket": "Activer Docker Socket", - "enableDockerSocketDescription": "Activer la découverte Docker Socket pour remplir les informations du conteneur. Le chemin du socket doit être fourni à Newt.", + "enableDockerSocket": "Activer le Plan Docker", + "enableDockerSocketDescription": "Activer le ramassage d'étiquettes de socket Docker pour les étiquettes de plan. Le chemin de socket doit être fourni à Newt.", "enableDockerSocketLink": "En savoir plus", "viewDockerContainers": "Voir les conteneurs Docker", "containersIn": "Conteneurs en {siteName}", @@ -1398,8 +1400,6 @@ "editInternalResourceDialogProtocol": "Protocole", "editInternalResourceDialogSitePort": "Port du site", "editInternalResourceDialogTargetConfiguration": "Configuration de la cible", - "editInternalResourceDialogDestinationIP": "IP de destination", - "editInternalResourceDialogDestinationPort": "Port de destination", "editInternalResourceDialogCancel": "Abandonner", "editInternalResourceDialogSaveResource": "Enregistrer la ressource", "editInternalResourceDialogSuccess": "Succès", @@ -1430,9 +1430,7 @@ "createInternalResourceDialogSitePort": "Port du site", "createInternalResourceDialogSitePortDescription": "Utilisez ce port pour accéder à la ressource sur le site lors de la connexion avec un client.", "createInternalResourceDialogTargetConfiguration": "Configuration de la cible", - "createInternalResourceDialogDestinationIP": "IP de destination", - "createInternalResourceDialogDestinationIPDescription": "L'adresse IP de la ressource sur le réseau du site.", - "createInternalResourceDialogDestinationPort": "Port de destination", + "createInternalResourceDialogDestinationIPDescription": "L'adresse IP ou le nom d'hôte de la ressource sur le réseau du site.", "createInternalResourceDialogDestinationPortDescription": "Le port sur l'IP de destination où la ressource est accessible.", "createInternalResourceDialogCancel": "Abandonner", "createInternalResourceDialogCreateResource": "Créer une ressource", @@ -1505,6 +1503,9 @@ "willbestoredas": "Sera stocké comme :", "idpGoogleDescription": "Fournisseur Google OAuth2/OIDC", "idpAzureDescription": "Microsoft Azure OAuth2/OIDC provider", + "customHeaders": "En-têtes personnalisés", + "customHeadersDescription": "Nouvelles lignes séparées des en-têtes : Nom de l'en-tête : valeur.", + "headersValidationError": "Les entêtes doivent être au format : Header-Name: valeur.", "domainPickerProvidedDomain": "Domaine fourni", "domainPickerFreeProvidedDomain": "Domaine fourni gratuitement", "domainPickerVerified": "Vérifié", @@ -1518,6 +1519,6 @@ "domainPickerInvalidSubdomainCannotMakeValid": "La «{sub}» n'a pas pu être validée pour {domain}.", "domainPickerSubdomainSanitized": "Sous-domaine nettoyé", "domainPickerSubdomainCorrected": "\"{sub}\" a été corrigé à \"{sanitized}\"", - "resourceAddEntrypointsEditFile": "Edit file: config/traefik/traefik_config.yml", - "resourceExposePortsEditFile": "Edit file: docker-compose.yml" + "resourceAddEntrypointsEditFile": "Modifier le fichier : config/traefik/traefik_config.yml", + "resourceExposePortsEditFile": "Modifier le fichier : docker-compose.yml" } \ No newline at end of file From d639f7f6de8da0f22f1945775c38dcc012a47a06 Mon Sep 17 00:00:00 2001 From: Owen Schwartz Date: Mon, 15 Sep 2025 14:34:25 -0700 Subject: [PATCH 09/21] New translations en-us.json (Spanish) --- messages/es-ES.json | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/messages/es-ES.json b/messages/es-ES.json index 156ae5f3..2dbd6483 100644 --- a/messages/es-ES.json +++ b/messages/es-ES.json @@ -513,6 +513,7 @@ "ipAddressErrorInvalidFormat": "Formato de dirección IP inválido", "ipAddressErrorInvalidOctet": "Octet de dirección IP no válido", "path": "Ruta", + "matchPath": "Coincidir ruta", "ipAddressRange": "Rango IP", "rulesErrorFetch": "Error al obtener las reglas", "rulesErrorFetchDescription": "Se ha producido un error al recuperar las reglas", @@ -997,6 +998,7 @@ "actionDeleteSite": "Eliminar sitio", "actionGetSite": "Obtener sitio", "actionListSites": "Listar sitios", + "actionApplyBlueprint": "Aplicar plano", "setupToken": "Configuración de token", "setupTokenDescription": "Ingrese el token de configuración desde la consola del servidor.", "setupTokenRequired": "Se requiere el token de configuración", @@ -1139,8 +1141,8 @@ "sidebarLicense": "Licencia", "sidebarClients": "Clientes (Beta)", "sidebarDomains": "Dominios", - "enableDockerSocket": "Habilitar conector Docker", - "enableDockerSocketDescription": "Habilitar el descubrimiento de Docker Socket para completar la información del contenedor. La ruta del socket debe proporcionarse a Newt.", + "enableDockerSocket": "Habilitar Plano Docker", + "enableDockerSocketDescription": "Activar el raspado de etiquetas de Socket Docker para etiquetas de planos. La ruta del Socket debe proporcionarse a Newt.", "enableDockerSocketLink": "Saber más", "viewDockerContainers": "Ver contenedores Docker", "containersIn": "Contenedores en {siteName}", @@ -1398,8 +1400,6 @@ "editInternalResourceDialogProtocol": "Protocolo", "editInternalResourceDialogSitePort": "Puerto del sitio", "editInternalResourceDialogTargetConfiguration": "Configuración de objetivos", - "editInternalResourceDialogDestinationIP": "IP de destino", - "editInternalResourceDialogDestinationPort": "Puerto de destino", "editInternalResourceDialogCancel": "Cancelar", "editInternalResourceDialogSaveResource": "Guardar recurso", "editInternalResourceDialogSuccess": "Éxito", @@ -1430,9 +1430,7 @@ "createInternalResourceDialogSitePort": "Puerto del sitio", "createInternalResourceDialogSitePortDescription": "Use este puerto para acceder al recurso en el sitio cuando se conecta con un cliente.", "createInternalResourceDialogTargetConfiguration": "Configuración de objetivos", - "createInternalResourceDialogDestinationIP": "IP de destino", - "createInternalResourceDialogDestinationIPDescription": "La dirección IP del recurso en la red del sitio.", - "createInternalResourceDialogDestinationPort": "Puerto de destino", + "createInternalResourceDialogDestinationIPDescription": "La dirección IP o nombre de host del recurso en la red del sitio.", "createInternalResourceDialogDestinationPortDescription": "El puerto en la IP de destino donde el recurso es accesible.", "createInternalResourceDialogCancel": "Cancelar", "createInternalResourceDialogCreateResource": "Crear recurso", @@ -1505,6 +1503,9 @@ "willbestoredas": "Se almacenará como:", "idpGoogleDescription": "Proveedor OAuth2/OIDC de Google", "idpAzureDescription": "Microsoft Azure OAuth2/OIDC provider", + "customHeaders": "Cabeceras personalizadas", + "customHeadersDescription": "Nueva línea de cabeceras separada: Nombre de cabecera: valor.", + "headersValidationError": "Los encabezados deben estar en el formato: Nombre de cabecera: valor.", "domainPickerProvidedDomain": "Dominio proporcionado", "domainPickerFreeProvidedDomain": "Dominio proporcionado gratis", "domainPickerVerified": "Verificado", @@ -1518,6 +1519,6 @@ "domainPickerInvalidSubdomainCannotMakeValid": "No se ha podido hacer válido \"{sub}\" para {domain}.", "domainPickerSubdomainSanitized": "Subdominio saneado", "domainPickerSubdomainCorrected": "\"{sub}\" fue corregido a \"{sanitized}\"", - "resourceAddEntrypointsEditFile": "Edit file: config/traefik/traefik_config.yml", - "resourceExposePortsEditFile": "Edit file: docker-compose.yml" + "resourceAddEntrypointsEditFile": "Editar archivo: config/traefik/traefik_config.yml", + "resourceExposePortsEditFile": "Editar archivo: docker-compose.yml" } \ No newline at end of file From 96dff2076013177fdfefe95064e2bd4a40b76807 Mon Sep 17 00:00:00 2001 From: Owen Schwartz Date: Mon, 15 Sep 2025 14:34:26 -0700 Subject: [PATCH 10/21] New translations en-us.json (Bulgarian) --- messages/bg-BG.json | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/messages/bg-BG.json b/messages/bg-BG.json index e22d4e48..70aa50ea 100644 --- a/messages/bg-BG.json +++ b/messages/bg-BG.json @@ -513,6 +513,7 @@ "ipAddressErrorInvalidFormat": "Invalid IP address format", "ipAddressErrorInvalidOctet": "Invalid IP address octet", "path": "Path", + "matchPath": "Match Path", "ipAddressRange": "IP Range", "rulesErrorFetch": "Failed to fetch rules", "rulesErrorFetchDescription": "An error occurred while fetching rules", @@ -997,6 +998,7 @@ "actionDeleteSite": "Delete Site", "actionGetSite": "Get Site", "actionListSites": "List Sites", + "actionApplyBlueprint": "Apply Blueprint", "setupToken": "Setup Token", "setupTokenDescription": "Enter the setup token from the server console.", "setupTokenRequired": "Setup token is required", @@ -1139,8 +1141,8 @@ "sidebarLicense": "License", "sidebarClients": "Clients (Beta)", "sidebarDomains": "Domains", - "enableDockerSocket": "Enable Docker Socket", - "enableDockerSocketDescription": "Enable Docker Socket discovery for populating container information. Socket path must be provided to Newt.", + "enableDockerSocket": "Enable Docker Blueprint", + "enableDockerSocketDescription": "Enable Docker Socket label scraping for blueprint labels. Socket path must be provided to Newt.", "enableDockerSocketLink": "Learn More", "viewDockerContainers": "View Docker Containers", "containersIn": "Containers in {siteName}", @@ -1398,8 +1400,6 @@ "editInternalResourceDialogProtocol": "Protocol", "editInternalResourceDialogSitePort": "Site Port", "editInternalResourceDialogTargetConfiguration": "Target Configuration", - "editInternalResourceDialogDestinationIP": "Destination IP", - "editInternalResourceDialogDestinationPort": "Destination Port", "editInternalResourceDialogCancel": "Cancel", "editInternalResourceDialogSaveResource": "Save Resource", "editInternalResourceDialogSuccess": "Success", @@ -1430,9 +1430,7 @@ "createInternalResourceDialogSitePort": "Site Port", "createInternalResourceDialogSitePortDescription": "Use this port to access the resource on the site when connected with a client.", "createInternalResourceDialogTargetConfiguration": "Target Configuration", - "createInternalResourceDialogDestinationIP": "Destination IP", - "createInternalResourceDialogDestinationIPDescription": "The IP address of the resource on the site's network.", - "createInternalResourceDialogDestinationPort": "Destination Port", + "createInternalResourceDialogDestinationIPDescription": "The IP or hostname address of the resource on the site's network.", "createInternalResourceDialogDestinationPortDescription": "The port on the destination IP where the resource is accessible.", "createInternalResourceDialogCancel": "Cancel", "createInternalResourceDialogCreateResource": "Create Resource", @@ -1505,6 +1503,9 @@ "willbestoredas": "Will be stored as:", "idpGoogleDescription": "Google OAuth2/OIDC provider", "idpAzureDescription": "Microsoft Azure OAuth2/OIDC provider", + "customHeaders": "Custom Headers", + "customHeadersDescription": "Headers new line separated: Header-Name: value.", + "headersValidationError": "Headers must be in the format: Header-Name: value.", "domainPickerProvidedDomain": "Provided Domain", "domainPickerFreeProvidedDomain": "Free Provided Domain", "domainPickerVerified": "Verified", From e4f90fd7eab41075e1a8776f5d0078d57b99fe4a Mon Sep 17 00:00:00 2001 From: Owen Schwartz Date: Mon, 15 Sep 2025 14:34:27 -0700 Subject: [PATCH 11/21] New translations en-us.json (Czech) --- messages/cs-CZ.json | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/messages/cs-CZ.json b/messages/cs-CZ.json index 92606f5e..3c2b11a1 100644 --- a/messages/cs-CZ.json +++ b/messages/cs-CZ.json @@ -513,6 +513,7 @@ "ipAddressErrorInvalidFormat": "Invalid IP address format", "ipAddressErrorInvalidOctet": "Invalid IP address octet", "path": "Path", + "matchPath": "Match Path", "ipAddressRange": "IP Range", "rulesErrorFetch": "Failed to fetch rules", "rulesErrorFetchDescription": "An error occurred while fetching rules", @@ -997,6 +998,7 @@ "actionDeleteSite": "Delete Site", "actionGetSite": "Get Site", "actionListSites": "List Sites", + "actionApplyBlueprint": "Apply Blueprint", "setupToken": "Setup Token", "setupTokenDescription": "Enter the setup token from the server console.", "setupTokenRequired": "Setup token is required", @@ -1139,8 +1141,8 @@ "sidebarLicense": "License", "sidebarClients": "Clients (Beta)", "sidebarDomains": "Domains", - "enableDockerSocket": "Enable Docker Socket", - "enableDockerSocketDescription": "Enable Docker Socket discovery for populating container information. Socket path must be provided to Newt.", + "enableDockerSocket": "Enable Docker Blueprint", + "enableDockerSocketDescription": "Enable Docker Socket label scraping for blueprint labels. Socket path must be provided to Newt.", "enableDockerSocketLink": "Learn More", "viewDockerContainers": "View Docker Containers", "containersIn": "Containers in {siteName}", @@ -1398,8 +1400,6 @@ "editInternalResourceDialogProtocol": "Protocol", "editInternalResourceDialogSitePort": "Site Port", "editInternalResourceDialogTargetConfiguration": "Target Configuration", - "editInternalResourceDialogDestinationIP": "Destination IP", - "editInternalResourceDialogDestinationPort": "Destination Port", "editInternalResourceDialogCancel": "Cancel", "editInternalResourceDialogSaveResource": "Save Resource", "editInternalResourceDialogSuccess": "Success", @@ -1430,9 +1430,7 @@ "createInternalResourceDialogSitePort": "Site Port", "createInternalResourceDialogSitePortDescription": "Use this port to access the resource on the site when connected with a client.", "createInternalResourceDialogTargetConfiguration": "Target Configuration", - "createInternalResourceDialogDestinationIP": "Destination IP", - "createInternalResourceDialogDestinationIPDescription": "The IP address of the resource on the site's network.", - "createInternalResourceDialogDestinationPort": "Destination Port", + "createInternalResourceDialogDestinationIPDescription": "The IP or hostname address of the resource on the site's network.", "createInternalResourceDialogDestinationPortDescription": "The port on the destination IP where the resource is accessible.", "createInternalResourceDialogCancel": "Cancel", "createInternalResourceDialogCreateResource": "Create Resource", @@ -1505,6 +1503,9 @@ "willbestoredas": "Will be stored as:", "idpGoogleDescription": "Google OAuth2/OIDC provider", "idpAzureDescription": "Microsoft Azure OAuth2/OIDC provider", + "customHeaders": "Custom Headers", + "customHeadersDescription": "Headers new line separated: Header-Name: value.", + "headersValidationError": "Headers must be in the format: Header-Name: value.", "domainPickerProvidedDomain": "Provided Domain", "domainPickerFreeProvidedDomain": "Free Provided Domain", "domainPickerVerified": "Verified", From f5f223348d95423655efa344df458b609abacb36 Mon Sep 17 00:00:00 2001 From: Owen Schwartz Date: Mon, 15 Sep 2025 14:34:28 -0700 Subject: [PATCH 12/21] New translations en-us.json (German) --- messages/de-DE.json | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/messages/de-DE.json b/messages/de-DE.json index a09bfbd1..eb324b8f 100644 --- a/messages/de-DE.json +++ b/messages/de-DE.json @@ -513,6 +513,7 @@ "ipAddressErrorInvalidFormat": "Ungültiges IP-Adressformat", "ipAddressErrorInvalidOctet": "Ungültiges IP-Adress-Oktett", "path": "Pfad", + "matchPath": "Spielpfad", "ipAddressRange": "IP-Bereich", "rulesErrorFetch": "Fehler beim Abrufen der Regeln", "rulesErrorFetchDescription": "Beim Abrufen der Regeln ist ein Fehler aufgetreten", @@ -997,6 +998,7 @@ "actionDeleteSite": "Standort löschen", "actionGetSite": "Standort abrufen", "actionListSites": "Standorte auflisten", + "actionApplyBlueprint": "Blaupause anwenden", "setupToken": "Setup-Token", "setupTokenDescription": "Geben Sie das Setup-Token von der Serverkonsole ein.", "setupTokenRequired": "Setup-Token ist erforderlich", @@ -1139,8 +1141,8 @@ "sidebarLicense": "Lizenz", "sidebarClients": "Clients (Beta)", "sidebarDomains": "Domains", - "enableDockerSocket": "Docker Socket aktivieren", - "enableDockerSocketDescription": "Docker Socket-Erkennung aktivieren, um Container-Informationen zu befüllen. Socket-Pfad muss Newt bereitgestellt werden.", + "enableDockerSocket": "Docker Blaupause aktivieren", + "enableDockerSocketDescription": "Aktiviere Docker-Socket-Label-Scraping für Blaupausenbeschriftungen. Der Socket-Pfad muss neu angegeben werden.", "enableDockerSocketLink": "Mehr erfahren", "viewDockerContainers": "Docker Container anzeigen", "containersIn": "Container in {siteName}", @@ -1398,8 +1400,6 @@ "editInternalResourceDialogProtocol": "Protokoll", "editInternalResourceDialogSitePort": "Site-Port", "editInternalResourceDialogTargetConfiguration": "Zielkonfiguration", - "editInternalResourceDialogDestinationIP": "Ziel-IP", - "editInternalResourceDialogDestinationPort": "Ziel-Port", "editInternalResourceDialogCancel": "Abbrechen", "editInternalResourceDialogSaveResource": "Ressource speichern", "editInternalResourceDialogSuccess": "Erfolg", @@ -1430,9 +1430,7 @@ "createInternalResourceDialogSitePort": "Site-Port", "createInternalResourceDialogSitePortDescription": "Verwenden Sie diesen Port, um bei Verbindung mit einem Client auf die Ressource an der Site zuzugreifen.", "createInternalResourceDialogTargetConfiguration": "Zielkonfiguration", - "createInternalResourceDialogDestinationIP": "Ziel-IP", - "createInternalResourceDialogDestinationIPDescription": "Die IP-Adresse der Ressource im Netzwerkstandort der Site.", - "createInternalResourceDialogDestinationPort": "Ziel-Port", + "createInternalResourceDialogDestinationIPDescription": "Die IP-Adresse oder Hostname Adresse der Ressource im Netzwerk der Website.", "createInternalResourceDialogDestinationPortDescription": "Der Port auf der Ziel-IP, unter dem die Ressource zugänglich ist.", "createInternalResourceDialogCancel": "Abbrechen", "createInternalResourceDialogCreateResource": "Ressource erstellen", @@ -1505,6 +1503,9 @@ "willbestoredas": "Wird gespeichert als:", "idpGoogleDescription": "Google OAuth2/OIDC Provider", "idpAzureDescription": "Microsoft Azure OAuth2/OIDC provider", + "customHeaders": "Eigene Kopfzeilen", + "customHeadersDescription": "Header neue Zeile getrennt: Kopfname: Wert.", + "headersValidationError": "Header müssen im Format Header-Name: Wert sein.", "domainPickerProvidedDomain": "Angegebene Domain", "domainPickerFreeProvidedDomain": "Kostenlose Domain", "domainPickerVerified": "Verifiziert", @@ -1518,6 +1519,6 @@ "domainPickerInvalidSubdomainCannotMakeValid": "\"{sub}\" konnte nicht für {domain} gültig gemacht werden.", "domainPickerSubdomainSanitized": "Subdomain bereinigt", "domainPickerSubdomainCorrected": "\"{sub}\" wurde korrigiert zu \"{sanitized}\"", - "resourceAddEntrypointsEditFile": "Edit file: config/traefik/traefik_config.yml", - "resourceExposePortsEditFile": "Edit file: docker-compose.yml" + "resourceAddEntrypointsEditFile": "Datei bearbeiten: config/traefik/traefik_config.yml", + "resourceExposePortsEditFile": "Datei bearbeiten: docker-compose.yml" } \ No newline at end of file From 17e26ff1a6ac176a5e05d2be0cf2be1109990e8d Mon Sep 17 00:00:00 2001 From: Owen Schwartz Date: Mon, 15 Sep 2025 14:34:30 -0700 Subject: [PATCH 13/21] New translations en-us.json (Italian) --- messages/it-IT.json | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/messages/it-IT.json b/messages/it-IT.json index a3ae83b1..d3593559 100644 --- a/messages/it-IT.json +++ b/messages/it-IT.json @@ -513,6 +513,7 @@ "ipAddressErrorInvalidFormat": "Formato indirizzo IP non valido", "ipAddressErrorInvalidOctet": "Ottetto indirizzo IP non valido", "path": "Percorso", + "matchPath": "Corrispondenza Tracciato", "ipAddressRange": "Intervallo IP", "rulesErrorFetch": "Impossibile recuperare le regole", "rulesErrorFetchDescription": "Si è verificato un errore durante il recupero delle regole", @@ -997,6 +998,7 @@ "actionDeleteSite": "Elimina Sito", "actionGetSite": "Ottieni Sito", "actionListSites": "Elenca Siti", + "actionApplyBlueprint": "Applica Progetto", "setupToken": "Configura Token", "setupTokenDescription": "Inserisci il token di configurazione dalla console del server.", "setupTokenRequired": "Il token di configurazione è richiesto", @@ -1139,8 +1141,8 @@ "sidebarLicense": "Licenza", "sidebarClients": "Clienti (Beta)", "sidebarDomains": "Domini", - "enableDockerSocket": "Abilita Docker Socket", - "enableDockerSocketDescription": "Abilita il rilevamento Docker Socket per popolare le informazioni del contenitore. Il percorso del socket deve essere fornito a Newt.", + "enableDockerSocket": "Abilita Progetto Docker", + "enableDockerSocketDescription": "Abilita la raschiatura dell'etichetta Docker Socket per le etichette dei progetti. Il percorso del socket deve essere fornito a Newt.", "enableDockerSocketLink": "Scopri di più", "viewDockerContainers": "Visualizza Contenitori Docker", "containersIn": "Contenitori in {siteName}", @@ -1398,8 +1400,6 @@ "editInternalResourceDialogProtocol": "Protocollo", "editInternalResourceDialogSitePort": "Porta del Sito", "editInternalResourceDialogTargetConfiguration": "Configurazione Target", - "editInternalResourceDialogDestinationIP": "IP di Destinazione", - "editInternalResourceDialogDestinationPort": "Porta di Destinazione", "editInternalResourceDialogCancel": "Annulla", "editInternalResourceDialogSaveResource": "Salva Risorsa", "editInternalResourceDialogSuccess": "Successo", @@ -1430,9 +1430,7 @@ "createInternalResourceDialogSitePort": "Porta del Sito", "createInternalResourceDialogSitePortDescription": "Usa questa porta per accedere alla risorsa nel sito quando sei connesso con un client.", "createInternalResourceDialogTargetConfiguration": "Configurazione Target", - "createInternalResourceDialogDestinationIP": "IP di Destinazione", - "createInternalResourceDialogDestinationIPDescription": "L'indirizzo IP della risorsa sulla rete del sito.", - "createInternalResourceDialogDestinationPort": "Porta di Destinazione", + "createInternalResourceDialogDestinationIPDescription": "L'indirizzo IP o hostname della risorsa nella rete del sito.", "createInternalResourceDialogDestinationPortDescription": "La porta sull'IP di destinazione dove la risorsa è accessibile.", "createInternalResourceDialogCancel": "Annulla", "createInternalResourceDialogCreateResource": "Crea Risorsa", @@ -1505,6 +1503,9 @@ "willbestoredas": "Verrà conservato come:", "idpGoogleDescription": "Google OAuth2/OIDC provider", "idpAzureDescription": "Microsoft Azure OAuth2/OIDC provider", + "customHeaders": "Intestazioni Personalizzate", + "customHeadersDescription": "Intestazioni nuova riga separate: Intestazione-Nome: valore.", + "headersValidationError": "Le intestazioni devono essere nel formato: Intestazione-Nome: valore.", "domainPickerProvidedDomain": "Dominio Fornito", "domainPickerFreeProvidedDomain": "Dominio Fornito Gratuito", "domainPickerVerified": "Verificato", @@ -1518,6 +1519,6 @@ "domainPickerInvalidSubdomainCannotMakeValid": "\"{sub}\" non può essere reso valido per {domain}.", "domainPickerSubdomainSanitized": "Sottodominio igienizzato", "domainPickerSubdomainCorrected": "\"{sub}\" è stato corretto in \"{sanitized}\"", - "resourceAddEntrypointsEditFile": "Edit file: config/traefik/traefik_config.yml", - "resourceExposePortsEditFile": "Edit file: docker-compose.yml" + "resourceAddEntrypointsEditFile": "Modifica file: config/traefik/traefik_config.yml", + "resourceExposePortsEditFile": "Modifica file: docker-compose.yml" } \ No newline at end of file From d6aea96400437a81227d45e0da11eabb3926a70b Mon Sep 17 00:00:00 2001 From: Owen Schwartz Date: Mon, 15 Sep 2025 14:34:31 -0700 Subject: [PATCH 14/21] New translations en-us.json (Korean) --- messages/ko-KR.json | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/messages/ko-KR.json b/messages/ko-KR.json index eaf31661..586cc68f 100644 --- a/messages/ko-KR.json +++ b/messages/ko-KR.json @@ -513,6 +513,7 @@ "ipAddressErrorInvalidFormat": "잘못된 IP 주소 형식", "ipAddressErrorInvalidOctet": "유효하지 않은 IP 주소 옥텟", "path": "경로", + "matchPath": "경로 맞춤", "ipAddressRange": "IP 범위", "rulesErrorFetch": "규칙을 가져오는 데 실패했습니다.", "rulesErrorFetchDescription": "규칙을 가져오는 중 오류가 발생했습니다", @@ -997,6 +998,7 @@ "actionDeleteSite": "사이트 삭제", "actionGetSite": "사이트 가져오기", "actionListSites": "사이트 목록", + "actionApplyBlueprint": "청사진 적용", "setupToken": "설정 토큰", "setupTokenDescription": "서버 콘솔에서 설정 토큰 입력.", "setupTokenRequired": "설정 토큰이 필요합니다", @@ -1139,8 +1141,8 @@ "sidebarLicense": "라이선스", "sidebarClients": "클라이언트 (Beta)", "sidebarDomains": "도메인", - "enableDockerSocket": "Docker 소켓 활성화", - "enableDockerSocketDescription": "컨테이너 정보를 채우기 위해 Docker 소켓 검색을 활성화합니다. 소켓 경로는 Newt에 제공되어야 합니다.", + "enableDockerSocket": "Docker 청사진 활성화", + "enableDockerSocketDescription": "블루프린트 레이블을 위한 Docker 소켓 레이블 수집을 활성화합니다. 소켓 경로는 Newt에 제공되어야 합니다.", "enableDockerSocketLink": "자세히 알아보기", "viewDockerContainers": "도커 컨테이너 보기", "containersIn": "{siteName}의 컨테이너", @@ -1398,8 +1400,6 @@ "editInternalResourceDialogProtocol": "프로토콜", "editInternalResourceDialogSitePort": "사이트 포트", "editInternalResourceDialogTargetConfiguration": "대상 구성", - "editInternalResourceDialogDestinationIP": "대상 IP", - "editInternalResourceDialogDestinationPort": "대상 IP의 포트", "editInternalResourceDialogCancel": "취소", "editInternalResourceDialogSaveResource": "리소스 저장", "editInternalResourceDialogSuccess": "성공", @@ -1430,9 +1430,7 @@ "createInternalResourceDialogSitePort": "사이트 포트", "createInternalResourceDialogSitePortDescription": "사이트에 연결되었을 때 리소스에 접근하기 위해 이 포트를 사용합니다.", "createInternalResourceDialogTargetConfiguration": "대상 설정", - "createInternalResourceDialogDestinationIP": "대상 IP", - "createInternalResourceDialogDestinationIPDescription": "사이트 네트워크의 자원 IP 주소입니다.", - "createInternalResourceDialogDestinationPort": "대상 포트", + "createInternalResourceDialogDestinationIPDescription": "사이트 네트워크의 자원 IP 또는 호스트 네임 주소입니다.", "createInternalResourceDialogDestinationPortDescription": "대상 IP에서 리소스에 접근할 수 있는 포트입니다.", "createInternalResourceDialogCancel": "취소", "createInternalResourceDialogCreateResource": "리소스 생성", @@ -1505,6 +1503,9 @@ "willbestoredas": "다음으로 저장됩니다:", "idpGoogleDescription": "Google OAuth2/OIDC 공급자", "idpAzureDescription": "Microsoft Azure OAuth2/OIDC 공급자", + "customHeaders": "사용자 정의 헤더", + "customHeadersDescription": "헤더는 새 줄로 구분합니다: 헤더명: 값", + "headersValidationError": "헤더는 형식이어야 합니다: 헤더명: 값.", "domainPickerProvidedDomain": "제공된 도메인", "domainPickerFreeProvidedDomain": "무료 제공된 도메인", "domainPickerVerified": "검증됨", @@ -1518,6 +1519,6 @@ "domainPickerInvalidSubdomainCannotMakeValid": "\"{sub}\"을(를) {domain}에 대해 유효하게 만들 수 없습니다.", "domainPickerSubdomainSanitized": "하위 도메인 정리됨", "domainPickerSubdomainCorrected": "\"{sub}\"이(가) \"{sanitized}\"로 수정되었습니다", - "resourceAddEntrypointsEditFile": "Edit file: config/traefik/traefik_config.yml", - "resourceExposePortsEditFile": "Edit file: docker-compose.yml" + "resourceAddEntrypointsEditFile": "파일 편집: config/traefik/traefik_config.yml", + "resourceExposePortsEditFile": "파일 편집: docker-compose.yml" } \ No newline at end of file From af8572add931ed60a3c51f783d9ada3a496f08c6 Mon Sep 17 00:00:00 2001 From: Owen Schwartz Date: Mon, 15 Sep 2025 14:34:33 -0700 Subject: [PATCH 15/21] New translations en-us.json (Dutch) --- messages/nl-NL.json | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/messages/nl-NL.json b/messages/nl-NL.json index 2a74c53c..641b3a64 100644 --- a/messages/nl-NL.json +++ b/messages/nl-NL.json @@ -513,6 +513,7 @@ "ipAddressErrorInvalidFormat": "Ongeldig IP-adresformaat", "ipAddressErrorInvalidOctet": "Ongeldige IP adres octet", "path": "Pad", + "matchPath": "Overeenkomend pad", "ipAddressRange": "IP Bereik", "rulesErrorFetch": "Regels ophalen mislukt", "rulesErrorFetchDescription": "Er is een fout opgetreden bij het ophalen van de regels", @@ -997,6 +998,7 @@ "actionDeleteSite": "Site verwijderen", "actionGetSite": "Site ophalen", "actionListSites": "Sites weergeven", + "actionApplyBlueprint": "Blauwdruk toepassen", "setupToken": "Setup Token", "setupTokenDescription": "Voer het setup-token in vanaf de serverconsole.", "setupTokenRequired": "Setup-token is vereist", @@ -1139,8 +1141,8 @@ "sidebarLicense": "Licentie", "sidebarClients": "Clients (Bèta)", "sidebarDomains": "Domeinen", - "enableDockerSocket": "Docker Socket inschakelen", - "enableDockerSocketDescription": "Docker Socket-ontdekking inschakelen voor het invullen van containerinformatie. Socket-pad moet aan Newt worden verstrekt.", + "enableDockerSocket": "Schakel Docker Blauwdruk in", + "enableDockerSocketDescription": "Schakel Docker Socket label in voor blauwdruk labels. Pad naar Nieuw.", "enableDockerSocketLink": "Meer informatie", "viewDockerContainers": "Bekijk Docker containers", "containersIn": "Containers in {siteName}", @@ -1398,8 +1400,6 @@ "editInternalResourceDialogProtocol": "Protocol", "editInternalResourceDialogSitePort": "Site Poort", "editInternalResourceDialogTargetConfiguration": "Doelconfiguratie", - "editInternalResourceDialogDestinationIP": "Bestemming IP", - "editInternalResourceDialogDestinationPort": "Bestemmingspoort", "editInternalResourceDialogCancel": "Annuleren", "editInternalResourceDialogSaveResource": "Sla bron op", "editInternalResourceDialogSuccess": "Succes", @@ -1430,9 +1430,7 @@ "createInternalResourceDialogSitePort": "Site Poort", "createInternalResourceDialogSitePortDescription": "Gebruik deze poort om toegang te krijgen tot de bron op de site wanneer verbonden met een client.", "createInternalResourceDialogTargetConfiguration": "Doelconfiguratie", - "createInternalResourceDialogDestinationIP": "Bestemming IP", - "createInternalResourceDialogDestinationIPDescription": "Het IP-adres van de bron op het netwerk van de site.", - "createInternalResourceDialogDestinationPort": "Bestemmingspoort", + "createInternalResourceDialogDestinationIPDescription": "Het IP of hostnaam adres van de bron op het netwerk van de site.", "createInternalResourceDialogDestinationPortDescription": "De poort op het bestemmings-IP waar de bron toegankelijk is.", "createInternalResourceDialogCancel": "Annuleren", "createInternalResourceDialogCreateResource": "Bron aanmaken", @@ -1505,6 +1503,9 @@ "willbestoredas": "Zal worden opgeslagen als:", "idpGoogleDescription": "Google OAuth2/OIDC provider", "idpAzureDescription": "Microsoft Azure OAuth2/OIDC provider", + "customHeaders": "Aangepaste headers", + "customHeadersDescription": "Headers nieuwe lijn gescheiden: Header-Naam: waarde.", + "headersValidationError": "Headers moeten in het formaat zijn: Header-Naam: waarde.", "domainPickerProvidedDomain": "Opgegeven domein", "domainPickerFreeProvidedDomain": "Gratis verstrekt domein", "domainPickerVerified": "Geverifieerd", @@ -1518,6 +1519,6 @@ "domainPickerInvalidSubdomainCannotMakeValid": "\"{sub}\" kon niet geldig worden gemaakt voor {domain}.", "domainPickerSubdomainSanitized": "Subdomein gesaniseerd", "domainPickerSubdomainCorrected": "\"{sub}\" was gecorrigeerd op \"{sanitized}\"", - "resourceAddEntrypointsEditFile": "Edit file: config/traefik/traefik_config.yml", - "resourceExposePortsEditFile": "Edit file: docker-compose.yml" + "resourceAddEntrypointsEditFile": "Bestand bewerken: config/traefik/traefik_config.yml", + "resourceExposePortsEditFile": "Bestand bewerken: docker-compose.yml" } \ No newline at end of file From 497e6a8422ae5d36dbaf669f3c97610124d59765 Mon Sep 17 00:00:00 2001 From: Owen Schwartz Date: Mon, 15 Sep 2025 14:34:34 -0700 Subject: [PATCH 16/21] New translations en-us.json (Polish) --- messages/pl-PL.json | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/messages/pl-PL.json b/messages/pl-PL.json index ca62d325..904d093f 100644 --- a/messages/pl-PL.json +++ b/messages/pl-PL.json @@ -513,6 +513,7 @@ "ipAddressErrorInvalidFormat": "Nieprawidłowy format adresu IP", "ipAddressErrorInvalidOctet": "Nieprawidłowy oktet adresu IP", "path": "Ścieżka", + "matchPath": "Ścieżka dopasowania", "ipAddressRange": "Zakres IP", "rulesErrorFetch": "Nie udało się pobrać reguł", "rulesErrorFetchDescription": "Wystąpił błąd podczas pobierania reguł", @@ -997,6 +998,7 @@ "actionDeleteSite": "Usuń witrynę", "actionGetSite": "Pobierz witrynę", "actionListSites": "Lista witryn", + "actionApplyBlueprint": "Zastosuj schemat", "setupToken": "Skonfiguruj token", "setupTokenDescription": "Wprowadź token konfiguracji z konsoli serwera.", "setupTokenRequired": "Wymagany jest token konfiguracji", @@ -1139,8 +1141,8 @@ "sidebarLicense": "Licencja", "sidebarClients": "Klienci (Beta)", "sidebarDomains": "Domeny", - "enableDockerSocket": "Włącz gniazdo dokera", - "enableDockerSocketDescription": "Włącz wykrywanie Docker Socket w celu wypełnienia informacji o kontenerach. Ścieżka gniazda musi być dostarczona do Newt.", + "enableDockerSocket": "Włącz schemat dokera", + "enableDockerSocketDescription": "Włącz etykietowanie kieszeni dokującej dla etykiet schematów. Ścieżka do gniazda musi być dostarczona do Newt.", "enableDockerSocketLink": "Dowiedz się więcej", "viewDockerContainers": "Zobacz kontenery dokujące", "containersIn": "Pojemniki w {siteName}", @@ -1398,8 +1400,6 @@ "editInternalResourceDialogProtocol": "Protokół", "editInternalResourceDialogSitePort": "Port witryny", "editInternalResourceDialogTargetConfiguration": "Konfiguracja celu", - "editInternalResourceDialogDestinationIP": "IP docelowe", - "editInternalResourceDialogDestinationPort": "Port docelowy", "editInternalResourceDialogCancel": "Anuluj", "editInternalResourceDialogSaveResource": "Zapisz zasób", "editInternalResourceDialogSuccess": "Sukces", @@ -1430,9 +1430,7 @@ "createInternalResourceDialogSitePort": "Port witryny", "createInternalResourceDialogSitePortDescription": "Użyj tego portu, aby uzyskać dostęp do zasobu na stronie, gdy połączony z klientem.", "createInternalResourceDialogTargetConfiguration": "Konfiguracja celu", - "createInternalResourceDialogDestinationIP": "IP docelowe", - "createInternalResourceDialogDestinationIPDescription": "Adres IP zasobu w sieci strony.", - "createInternalResourceDialogDestinationPort": "Port docelowy", + "createInternalResourceDialogDestinationIPDescription": "Adres IP lub nazwa hosta zasobu w sieci witryny.", "createInternalResourceDialogDestinationPortDescription": "Port na docelowym IP, gdzie zasób jest dostępny.", "createInternalResourceDialogCancel": "Anuluj", "createInternalResourceDialogCreateResource": "Utwórz zasób", @@ -1505,6 +1503,9 @@ "willbestoredas": "Będą przechowywane jako:", "idpGoogleDescription": "Dostawca Google OAuth2/OIDC", "idpAzureDescription": "Microsoft Azure OAuth2/OIDC provider", + "customHeaders": "Niestandardowe nagłówki", + "customHeadersDescription": "Nagłówki oddzielone: Nazwa nagłówka: wartość.", + "headersValidationError": "Nagłówki muszą być w formacie: Nazwa nagłówka: wartość.", "domainPickerProvidedDomain": "Dostarczona domena", "domainPickerFreeProvidedDomain": "Darmowa oferowana domena", "domainPickerVerified": "Zweryfikowano", @@ -1518,6 +1519,6 @@ "domainPickerInvalidSubdomainCannotMakeValid": "\"{sub}\" nie może być poprawne dla {domain}.", "domainPickerSubdomainSanitized": "Poddomena oczyszczona", "domainPickerSubdomainCorrected": "\"{sub}\" został skorygowany do \"{sanitized}\"", - "resourceAddEntrypointsEditFile": "Edit file: config/traefik/traefik_config.yml", - "resourceExposePortsEditFile": "Edit file: docker-compose.yml" + "resourceAddEntrypointsEditFile": "Edytuj plik: config/traefik/traefik_config.yml", + "resourceExposePortsEditFile": "Edytuj plik: docker-compose.yml" } \ No newline at end of file From 29aacf52380933645c71355097a54c7e002a2c9c Mon Sep 17 00:00:00 2001 From: Owen Schwartz Date: Mon, 15 Sep 2025 14:34:35 -0700 Subject: [PATCH 17/21] New translations en-us.json (Portuguese) --- messages/pt-PT.json | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/messages/pt-PT.json b/messages/pt-PT.json index 4c15bb04..9f7df737 100644 --- a/messages/pt-PT.json +++ b/messages/pt-PT.json @@ -513,6 +513,7 @@ "ipAddressErrorInvalidFormat": "Formato de endereço IP inválido", "ipAddressErrorInvalidOctet": "Octeto de endereço IP inválido", "path": "Caminho", + "matchPath": "Correspondência de caminho", "ipAddressRange": "Faixa de IP", "rulesErrorFetch": "Falha ao buscar regras", "rulesErrorFetchDescription": "Ocorreu um erro ao buscar regras", @@ -997,6 +998,7 @@ "actionDeleteSite": "Eliminar Site", "actionGetSite": "Obter Site", "actionListSites": "Listar Sites", + "actionApplyBlueprint": "Aplicar Diagrama", "setupToken": "Configuração do Token", "setupTokenDescription": "Digite o token de configuração do console do servidor.", "setupTokenRequired": "Token de configuração é necessário", @@ -1139,8 +1141,8 @@ "sidebarLicense": "Tipo:", "sidebarClients": "Clientes (Beta)", "sidebarDomains": "Domínios", - "enableDockerSocket": "Habilitar Docker Socket", - "enableDockerSocketDescription": "Ativar a descoberta do Docker Socket para preencher informações do contêiner. O caminho do socket deve ser fornecido ao Newt.", + "enableDockerSocket": "Habilitar o Diagrama Docker", + "enableDockerSocketDescription": "Ativar a scraping de rótulo Docker para rótulos de diagramas. Caminho de Socket deve ser fornecido para Newt.", "enableDockerSocketLink": "Saiba mais", "viewDockerContainers": "Ver contêineres Docker", "containersIn": "Contêineres em {siteName}", @@ -1398,8 +1400,6 @@ "editInternalResourceDialogProtocol": "Protocolo", "editInternalResourceDialogSitePort": "Porta do Site", "editInternalResourceDialogTargetConfiguration": "Configuração do Alvo", - "editInternalResourceDialogDestinationIP": "IP de Destino", - "editInternalResourceDialogDestinationPort": "Porta de Destino", "editInternalResourceDialogCancel": "Cancelar", "editInternalResourceDialogSaveResource": "Salvar Recurso", "editInternalResourceDialogSuccess": "Sucesso", @@ -1430,9 +1430,7 @@ "createInternalResourceDialogSitePort": "Porta do Site", "createInternalResourceDialogSitePortDescription": "Use esta porta para acessar o recurso no site quando conectado com um cliente.", "createInternalResourceDialogTargetConfiguration": "Configuração do Alvo", - "createInternalResourceDialogDestinationIP": "IP de Destino", - "createInternalResourceDialogDestinationIPDescription": "O endereço IP do recurso na rede do site.", - "createInternalResourceDialogDestinationPort": "Porta de Destino", + "createInternalResourceDialogDestinationIPDescription": "O IP ou endereço do hostname do recurso na rede do site.", "createInternalResourceDialogDestinationPortDescription": "A porta no IP de destino onde o recurso está acessível.", "createInternalResourceDialogCancel": "Cancelar", "createInternalResourceDialogCreateResource": "Criar Recurso", @@ -1505,6 +1503,9 @@ "willbestoredas": "Será armazenado como:", "idpGoogleDescription": "Provedor Google OAuth2/OIDC", "idpAzureDescription": "Microsoft Azure OAuth2/OIDC provider", + "customHeaders": "Cabeçalhos Personalizados", + "customHeadersDescription": "Separados por cabeçalhos da nova linha: Nome do Cabeçalho: valor.", + "headersValidationError": "Cabeçalhos devem estar no formato: Nome do Cabeçalho: valor.", "domainPickerProvidedDomain": "Domínio fornecido", "domainPickerFreeProvidedDomain": "Domínio fornecido grátis", "domainPickerVerified": "Verificada", @@ -1518,6 +1519,6 @@ "domainPickerInvalidSubdomainCannotMakeValid": "\"{sub}\" não pôde ser válido para {domain}.", "domainPickerSubdomainSanitized": "Subdomínio banalizado", "domainPickerSubdomainCorrected": "\"{sub}\" foi corrigido para \"{sanitized}\"", - "resourceAddEntrypointsEditFile": "Edit file: config/traefik/traefik_config.yml", - "resourceExposePortsEditFile": "Edit file: docker-compose.yml" + "resourceAddEntrypointsEditFile": "Editar arquivo: config/traefik/traefik_config.yml", + "resourceExposePortsEditFile": "Editar arquivo: docker-compose.yml" } \ No newline at end of file From 40861303719d44b3c6948bf355beb25ba1b13407 Mon Sep 17 00:00:00 2001 From: Owen Schwartz Date: Mon, 15 Sep 2025 14:34:36 -0700 Subject: [PATCH 18/21] New translations en-us.json (Russian) --- messages/ru-RU.json | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/messages/ru-RU.json b/messages/ru-RU.json index 1a7cddfe..c3b6b6a7 100644 --- a/messages/ru-RU.json +++ b/messages/ru-RU.json @@ -513,6 +513,7 @@ "ipAddressErrorInvalidFormat": "Неверный формат IP адреса", "ipAddressErrorInvalidOctet": "Неверный октет IP адреса", "path": "Путь", + "matchPath": "Путь матча", "ipAddressRange": "Диапазон IP", "rulesErrorFetch": "Не удалось получить правила", "rulesErrorFetchDescription": "Произошла ошибка при получении правил", @@ -997,6 +998,7 @@ "actionDeleteSite": "Удалить сайт", "actionGetSite": "Получить сайт", "actionListSites": "Список сайтов", + "actionApplyBlueprint": "Применить чертёж", "setupToken": "Код настройки", "setupTokenDescription": "Введите токен настройки из консоли сервера.", "setupTokenRequired": "Токен настройки обязателен", @@ -1139,8 +1141,8 @@ "sidebarLicense": "Лицензия", "sidebarClients": "Клиенты (бета)", "sidebarDomains": "Домены", - "enableDockerSocket": "Включить Docker Socket", - "enableDockerSocketDescription": "Включить обнаружение Docker Socket для заполнения информации о контейнерах. Путь к сокету должен быть предоставлен Newt.", + "enableDockerSocket": "Включить чертёж Docker", + "enableDockerSocketDescription": "Включить scraping ярлыка Docker Socket для ярлыков чертежей. Путь к сокету должен быть предоставлен в Newt.", "enableDockerSocketLink": "Узнать больше", "viewDockerContainers": "Просмотр контейнеров Docker", "containersIn": "Контейнеры в {siteName}", @@ -1398,8 +1400,6 @@ "editInternalResourceDialogProtocol": "Протокол", "editInternalResourceDialogSitePort": "Порт сайта", "editInternalResourceDialogTargetConfiguration": "Настройка цели", - "editInternalResourceDialogDestinationIP": "Целевая IP", - "editInternalResourceDialogDestinationPort": "Целевой порт", "editInternalResourceDialogCancel": "Отмена", "editInternalResourceDialogSaveResource": "Сохранить ресурс", "editInternalResourceDialogSuccess": "Успешно", @@ -1430,9 +1430,7 @@ "createInternalResourceDialogSitePort": "Порт сайта", "createInternalResourceDialogSitePortDescription": "Используйте этот порт для доступа к ресурсу на сайте при подключении с клиентом.", "createInternalResourceDialogTargetConfiguration": "Настройка цели", - "createInternalResourceDialogDestinationIP": "Целевая IP", - "createInternalResourceDialogDestinationIPDescription": "IP-адрес ресурса в сети сайта.", - "createInternalResourceDialogDestinationPort": "Целевой порт", + "createInternalResourceDialogDestinationIPDescription": "IP или адрес хоста ресурса в сети сайта.", "createInternalResourceDialogDestinationPortDescription": "Порт на IP-адресе назначения, где доступен ресурс.", "createInternalResourceDialogCancel": "Отмена", "createInternalResourceDialogCreateResource": "Создать ресурс", @@ -1505,6 +1503,9 @@ "willbestoredas": "Будет храниться как:", "idpGoogleDescription": "Google OAuth2/OIDC провайдер", "idpAzureDescription": "Microsoft Azure OAuth2/OIDC provider", + "customHeaders": "Пользовательские заголовки", + "customHeadersDescription": "Заголовки новой строки, разделённые: название заголовка: значение.", + "headersValidationError": "Заголовки должны быть в формате: Название заголовка: значение.", "domainPickerProvidedDomain": "Домен предоставлен", "domainPickerFreeProvidedDomain": "Бесплатный домен", "domainPickerVerified": "Подтверждено", @@ -1518,6 +1519,6 @@ "domainPickerInvalidSubdomainCannotMakeValid": "\"{sub}\" не может быть действительным для {domain}.", "domainPickerSubdomainSanitized": "Субдомен очищен", "domainPickerSubdomainCorrected": "\"{sub}\" был исправлен на \"{sanitized}\"", - "resourceAddEntrypointsEditFile": "Edit file: config/traefik/traefik_config.yml", - "resourceExposePortsEditFile": "Edit file: docker-compose.yml" + "resourceAddEntrypointsEditFile": "Редактировать файл: config/traefik/traefik_config.yml", + "resourceExposePortsEditFile": "Редактировать файл: docker-compose.yml" } \ No newline at end of file From 665ebe993c4361ba2b9d64532caa3da8d5777f4d Mon Sep 17 00:00:00 2001 From: Owen Schwartz Date: Mon, 15 Sep 2025 14:34:38 -0700 Subject: [PATCH 19/21] New translations en-us.json (Turkish) --- messages/tr-TR.json | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/messages/tr-TR.json b/messages/tr-TR.json index aed7ada0..8c63e98a 100644 --- a/messages/tr-TR.json +++ b/messages/tr-TR.json @@ -513,6 +513,7 @@ "ipAddressErrorInvalidFormat": "Geçersiz IP adresi formatı", "ipAddressErrorInvalidOctet": "Geçersiz IP adresi okteti", "path": "Yol", + "matchPath": "Yol Eşleştir", "ipAddressRange": "IP Aralığı", "rulesErrorFetch": "Kurallar alınamadı", "rulesErrorFetchDescription": "Kurallar alınırken bir hata oluştu", @@ -997,6 +998,7 @@ "actionDeleteSite": "Siteyi Sil", "actionGetSite": "Siteyi Al", "actionListSites": "Siteleri Listele", + "actionApplyBlueprint": "Planı Uygula", "setupToken": "Kurulum Simgesi", "setupTokenDescription": "Sunucu konsolundan kurulum simgesini girin.", "setupTokenRequired": "Kurulum simgesi gerekli", @@ -1139,8 +1141,8 @@ "sidebarLicense": "Lisans", "sidebarClients": "Müşteriler (Beta)", "sidebarDomains": "Alan Adları", - "enableDockerSocket": "Docker Soketi Etkinleştir", - "enableDockerSocketDescription": "Konteyner bilgilerini doldurmak için Docker Socket keşfini etkinleştirin. Socket yolu Newt'e sağlanmalıdır.", + "enableDockerSocket": "Docker Soketini Etkinleştir", + "enableDockerSocketDescription": "Plan etiketleri için Docker Socket etiket toplamasını etkinleştirin. Newt'e soket yolu sağlanmalıdır.", "enableDockerSocketLink": "Daha fazla bilgi", "viewDockerContainers": "Docker Konteynerlerini Görüntüle", "containersIn": "{siteName} içindeki konteynerler", @@ -1398,8 +1400,6 @@ "editInternalResourceDialogProtocol": "Protokol", "editInternalResourceDialogSitePort": "Site Bağlantı Noktası", "editInternalResourceDialogTargetConfiguration": "Hedef Yapılandırma", - "editInternalResourceDialogDestinationIP": "Hedef IP", - "editInternalResourceDialogDestinationPort": "Hedef Bağlantı Noktası", "editInternalResourceDialogCancel": "İptal", "editInternalResourceDialogSaveResource": "Kaynağı Kaydet", "editInternalResourceDialogSuccess": "Başarı", @@ -1430,9 +1430,7 @@ "createInternalResourceDialogSitePort": "Site Bağlantı Noktası", "createInternalResourceDialogSitePortDescription": "İstemci ile bağlanıldığında site üzerindeki kaynağa erişmek için bu bağlantı noktasını kullanın.", "createInternalResourceDialogTargetConfiguration": "Hedef Yapılandırma", - "createInternalResourceDialogDestinationIP": "Hedef IP", - "createInternalResourceDialogDestinationIPDescription": "Site ağındaki kaynağın IP adresi.", - "createInternalResourceDialogDestinationPort": "Hedef Bağlantı Noktası", + "createInternalResourceDialogDestinationIPDescription": "Kaynağın site ağındaki IP veya ana bilgisayar adresi.", "createInternalResourceDialogDestinationPortDescription": "Kaynağa erişilebilecek hedef IP üzerindeki bağlantı noktası.", "createInternalResourceDialogCancel": "İptal", "createInternalResourceDialogCreateResource": "Kaynak Oluştur", @@ -1505,6 +1503,9 @@ "willbestoredas": "Şu şekilde depolanacak:", "idpGoogleDescription": "Google OAuth2/OIDC sağlayıcısı", "idpAzureDescription": "Microsoft Azure OAuth2/OIDC sağlayıcısı", + "customHeaders": "Özel Başlıklar", + "customHeadersDescription": "Başlıklar yeni satıra geçirilmiş: Başlık-Adı: değer.", + "headersValidationError": "Başlıklar şu formatta olmalıdır: Başlık-Adı: değer.", "domainPickerProvidedDomain": "Sağlanan Alan Adı", "domainPickerFreeProvidedDomain": "Ücretsiz Sağlanan Alan Adı", "domainPickerVerified": "Doğrulandı", @@ -1518,6 +1519,6 @@ "domainPickerInvalidSubdomainCannotMakeValid": "\"{sub}\" {domain} için geçerli yapılamadı.", "domainPickerSubdomainSanitized": "Alt alan adı temizlendi", "domainPickerSubdomainCorrected": "\"{sub}\" \"{sanitized}\" olarak düzeltildi", - "resourceAddEntrypointsEditFile": "Edit file: config/traefik/traefik_config.yml", - "resourceExposePortsEditFile": "Edit file: docker-compose.yml" + "resourceAddEntrypointsEditFile": "Dosyayı düzenle: config/traefik/traefik_config.yml", + "resourceExposePortsEditFile": "Dosyayı düzenle: docker-compose.yml" } \ No newline at end of file From 93bd0416931d0d261ac104a8661e591e3ccff154 Mon Sep 17 00:00:00 2001 From: Owen Schwartz Date: Mon, 15 Sep 2025 14:34:39 -0700 Subject: [PATCH 20/21] New translations en-us.json (Chinese Simplified) --- messages/zh-CN.json | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/messages/zh-CN.json b/messages/zh-CN.json index 1aacfbe9..d60cdef3 100644 --- a/messages/zh-CN.json +++ b/messages/zh-CN.json @@ -513,6 +513,7 @@ "ipAddressErrorInvalidFormat": "无效的 IP 地址格式", "ipAddressErrorInvalidOctet": "无效的 IP 地址", "path": "路径", + "matchPath": "匹配路径", "ipAddressRange": "IP 范围", "rulesErrorFetch": "获取规则失败", "rulesErrorFetchDescription": "获取规则时出错", @@ -997,6 +998,7 @@ "actionDeleteSite": "删除站点", "actionGetSite": "获取站点", "actionListSites": "站点列表", + "actionApplyBlueprint": "应用蓝图", "setupToken": "设置令牌", "setupTokenDescription": "从服务器控制台输入设置令牌。", "setupTokenRequired": "需要设置令牌", @@ -1139,8 +1141,8 @@ "sidebarLicense": "证书", "sidebarClients": "客户端(测试版)", "sidebarDomains": "域", - "enableDockerSocket": "启用停靠套接字", - "enableDockerSocketDescription": "启用 Docker Socket 发现以填充容器信息。必须向 Newt 提供 Socket 路径。", + "enableDockerSocket": "启用 Docker 蓝图", + "enableDockerSocketDescription": "启用 Docker Socket 标签擦除蓝图标签。套接字路径必须提供给新的。", "enableDockerSocketLink": "了解更多", "viewDockerContainers": "查看停靠容器", "containersIn": "{siteName} 中的容器", @@ -1398,8 +1400,6 @@ "editInternalResourceDialogProtocol": "协议", "editInternalResourceDialogSitePort": "站点端口", "editInternalResourceDialogTargetConfiguration": "目标配置", - "editInternalResourceDialogDestinationIP": "目标IP", - "editInternalResourceDialogDestinationPort": "目标端口", "editInternalResourceDialogCancel": "取消", "editInternalResourceDialogSaveResource": "保存资源", "editInternalResourceDialogSuccess": "成功", @@ -1430,9 +1430,7 @@ "createInternalResourceDialogSitePort": "站点端口", "createInternalResourceDialogSitePortDescription": "使用此端口在连接到客户端时访问站点上的资源。", "createInternalResourceDialogTargetConfiguration": "目标配置", - "createInternalResourceDialogDestinationIP": "目标IP", - "createInternalResourceDialogDestinationIPDescription": "站点网络上资源的IP地址。", - "createInternalResourceDialogDestinationPort": "目标端口", + "createInternalResourceDialogDestinationIPDescription": "站点网络上资源的IP或主机名地址。", "createInternalResourceDialogDestinationPortDescription": "资源在目标IP上可访问的端口。", "createInternalResourceDialogCancel": "取消", "createInternalResourceDialogCreateResource": "创建资源", @@ -1505,6 +1503,9 @@ "willbestoredas": "储存为:", "idpGoogleDescription": "Google OAuth2/OIDC 提供商", "idpAzureDescription": "Microsoft Azure OAuth2/OIDC provider", + "customHeaders": "自定义标题", + "customHeadersDescription": "头部新行分隔:头部名称:值。", + "headersValidationError": "头部必须是格式:头部名称:值。", "domainPickerProvidedDomain": "提供的域", "domainPickerFreeProvidedDomain": "免费提供的域", "domainPickerVerified": "已验证", @@ -1518,6 +1519,6 @@ "domainPickerInvalidSubdomainCannotMakeValid": "\"{sub}\" 无法为 {domain} 变为有效。", "domainPickerSubdomainSanitized": "子域已净化", "domainPickerSubdomainCorrected": "\"{sub}\" 已被更正为 \"{sanitized}\"", - "resourceAddEntrypointsEditFile": "Edit file: config/traefik/traefik_config.yml", - "resourceExposePortsEditFile": "Edit file: docker-compose.yml" + "resourceAddEntrypointsEditFile": "编辑文件:config/traefik/traefik_config.yml", + "resourceExposePortsEditFile": "编辑文件:docker-compose.yml" } \ No newline at end of file From eab1fd3722a340a65e1e4dbe04520dbba75c9b56 Mon Sep 17 00:00:00 2001 From: Owen Schwartz Date: Mon, 15 Sep 2025 14:34:40 -0700 Subject: [PATCH 21/21] New translations en-us.json (Norwegian Bokmal) --- messages/nb-NO.json | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/messages/nb-NO.json b/messages/nb-NO.json index e391cda9..88756e5a 100644 --- a/messages/nb-NO.json +++ b/messages/nb-NO.json @@ -513,6 +513,7 @@ "ipAddressErrorInvalidFormat": "Ugyldig IP-adresseformat", "ipAddressErrorInvalidOctet": "Ugyldig IP-adresse-oktet", "path": "Sti", + "matchPath": "Match sti", "ipAddressRange": "IP-område", "rulesErrorFetch": "Klarte ikke å hente regler", "rulesErrorFetchDescription": "Det oppsto en feil under henting av regler", @@ -997,6 +998,7 @@ "actionDeleteSite": "Slett område", "actionGetSite": "Hent område", "actionListSites": "List opp områder", + "actionApplyBlueprint": "Bruk blåkopi", "setupToken": "Oppsetttoken", "setupTokenDescription": "Skriv inn oppsetttoken fra serverkonsollen.", "setupTokenRequired": "Oppsetttoken er nødvendig", @@ -1139,8 +1141,8 @@ "sidebarLicense": "Lisens", "sidebarClients": "Klienter (Beta)", "sidebarDomains": "Domener", - "enableDockerSocket": "Aktiver Docker Socket", - "enableDockerSocketDescription": "Aktiver Docker Socket-oppdagelse for å fylle ut containerinformasjon. Socket-stien må oppgis til Newt.", + "enableDockerSocket": "Aktiver Docker blåkopi", + "enableDockerSocketDescription": "Aktiver skraping av Docker Socket for blueprint Etiketter. Socket bane må brukes for nye.", "enableDockerSocketLink": "Lær mer", "viewDockerContainers": "Vis Docker-containere", "containersIn": "Containere i {siteName}", @@ -1398,8 +1400,6 @@ "editInternalResourceDialogProtocol": "Protokoll", "editInternalResourceDialogSitePort": "Områdeport", "editInternalResourceDialogTargetConfiguration": "Målkonfigurasjon", - "editInternalResourceDialogDestinationIP": "Destinasjons-IP", - "editInternalResourceDialogDestinationPort": "Destinasjonsport", "editInternalResourceDialogCancel": "Avbryt", "editInternalResourceDialogSaveResource": "Lagre ressurs", "editInternalResourceDialogSuccess": "Suksess", @@ -1430,9 +1430,7 @@ "createInternalResourceDialogSitePort": "Områdeport", "createInternalResourceDialogSitePortDescription": "Bruk denne porten for å få tilgang til ressursen på området når du er tilkoblet med en klient.", "createInternalResourceDialogTargetConfiguration": "Målkonfigurasjon", - "createInternalResourceDialogDestinationIP": "Destinasjons-IP", - "createInternalResourceDialogDestinationIPDescription": "IP-adressen til ressursen på områdets nettverk.", - "createInternalResourceDialogDestinationPort": "Destinasjonsport", + "createInternalResourceDialogDestinationIPDescription": "IP eller vertsnavn til ressursen på nettstedets nettverk.", "createInternalResourceDialogDestinationPortDescription": "Porten på destinasjons-IP-en der ressursen kan nås.", "createInternalResourceDialogCancel": "Avbryt", "createInternalResourceDialogCreateResource": "Opprett ressurs", @@ -1505,6 +1503,9 @@ "willbestoredas": "Vil bli lagret som:", "idpGoogleDescription": "Google OAuth2/OIDC leverandør", "idpAzureDescription": "Microsoft Azure OAuth2/OIDC provider", + "customHeaders": "Egendefinerte topptekster", + "customHeadersDescription": "Overskrifter separert som linje: Header-Name: verdi.", + "headersValidationError": "Topptekst må være i formatet: header-navn: verdi.", "domainPickerProvidedDomain": "Gitt domene", "domainPickerFreeProvidedDomain": "Gratis oppgitt domene", "domainPickerVerified": "Bekreftet", @@ -1518,6 +1519,6 @@ "domainPickerInvalidSubdomainCannotMakeValid": "\"{sub}\" kunne ikke gjøres gyldig for {domain}.", "domainPickerSubdomainSanitized": "Underdomenet som ble sanivert", "domainPickerSubdomainCorrected": "\"{sub}\" var korrigert til \"{sanitized}\"", - "resourceAddEntrypointsEditFile": "Edit file: config/traefik/traefik_config.yml", - "resourceExposePortsEditFile": "Edit file: docker-compose.yml" + "resourceAddEntrypointsEditFile": "Rediger fil: config/traefik/traefik_config.yml", + "resourceExposePortsEditFile": "Rediger fil: docker-compose.yml" } \ No newline at end of file