From 7ad76f56833fab58890e7e3a20c1044ffe8d80c1 Mon Sep 17 00:00:00 2001 From: miloschwartz Date: Tue, 17 Feb 2026 21:54:55 -0800 Subject: [PATCH 01/15] allow type hyphen in orgID --- src/app/setup/page.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/src/app/setup/page.tsx b/src/app/setup/page.tsx index c7e6de6a..8eaf449a 100644 --- a/src/app/setup/page.tsx +++ b/src/app/setup/page.tsx @@ -149,7 +149,6 @@ export default function StepperForm() { .replace(/\s+/g, "-") .replace(/[^a-z0-9_-]/g, "") .replace(/-+/g, "-") - .replace(/^-+|-+$/g, "") .slice(0, 32); }; From b7d8b321233057dfef5de3315dfbee554910baad Mon Sep 17 00:00:00 2001 From: Owen Schwartz Date: Tue, 17 Feb 2026 21:56:07 -0800 Subject: [PATCH 02/15] New translations en-us.json (French) --- messages/fr-FR.json | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/messages/fr-FR.json b/messages/fr-FR.json index 9b2e24d2..23d988b7 100644 --- a/messages/fr-FR.json +++ b/messages/fr-FR.json @@ -201,6 +201,7 @@ "protocolSelect": "Choisir un protocole", "resourcePortNumber": "Numéro de port", "resourcePortNumberDescription": "Le numéro de port externe pour les requêtes de proxy.", + "back": "Précédent", "cancel": "Abandonner", "resourceConfig": "Snippets de configuration", "resourceConfigDescription": "Copiez et collez ces extraits de configuration pour configurer la ressource TCP/UDP", @@ -246,6 +247,17 @@ "orgErrorDeleteMessage": "Une erreur s'est produite lors de la suppression de l'organisation.", "orgDeleted": "Organisation supprimée", "orgDeletedMessage": "L'organisation et ses données ont été supprimées.", + "deleteAccount": "Supprimer le compte", + "deleteAccountDescription": "Supprimer définitivement votre compte, toutes les organisations que vous possédez et toutes les données au sein de ces organisations. Cela ne peut pas être annulé.", + "deleteAccountButton": "Supprimer le compte", + "deleteAccountConfirmTitle": "Supprimer le compte", + "deleteAccountConfirmMessage": "Cela effacera définitivement votre compte, toutes les organisations que vous possédez et toutes les données au sein de ces organisations. Cela ne peut pas être annulé.", + "deleteAccountConfirmString": "supprimer le compte", + "deleteAccountSuccess": "Compte supprimé", + "deleteAccountSuccessMessage": "Votre compte a été supprimé.", + "deleteAccountError": "Échec de la suppression du compte", + "deleteAccountPreviewAccount": "Votre Compte", + "deleteAccountPreviewOrgs": "Organisations que vous possédez (et toutes leurs données)", "orgMissing": "ID d'organisation manquant", "orgMissingMessage": "Impossible de régénérer l'invitation sans un ID d'organisation.", "accessUsersManage": "Gérer les utilisateurs", @@ -461,6 +473,8 @@ "filterByApprovalState": "Filtrer par État d'Approbation", "approvalListEmpty": "Aucune approbation", "approvalState": "État d'approbation", + "approvalLoadMore": "Charger plus", + "loadingApprovals": "Chargement des approbations", "approve": "Approuver", "approved": "Approuvé", "denied": "Refusé", @@ -1017,6 +1031,7 @@ "pangolinSetup": "Configuration - Pangolin", "orgNameRequired": "Le nom de l'organisation est requis", "orgIdRequired": "L'ID de l'organisation est requis", + "orgIdMaxLength": "L'identifiant de l'organisation doit comporter au plus 32 caractères", "orgErrorCreate": "Une erreur s'est produite lors de la création de l'organisation", "pageNotFound": "Page non trouvée", "pageNotFoundDescription": "Oups! La page que vous recherchez n'existe pas.", @@ -1169,7 +1184,8 @@ "actionViewLogs": "Voir les logs", "noneSelected": "Aucune sélection", "orgNotFound2": "Aucune organisation trouvée.", - "searchProgress": "Rechercher...", + "searchPlaceholder": "Recherche...", + "emptySearchOptions": "Aucune option trouvée", "create": "Créer", "orgs": "Organisations", "loginError": "Une erreur inattendue s'est produite. Veuillez réessayer.", @@ -1251,6 +1267,7 @@ "sidebarLogAndAnalytics": "Journaux & Analytiques", "sidebarBluePrints": "Configs", "sidebarOrganization": "Organisation", + "sidebarBillingAndLicenses": "Facturation & Licences", "sidebarLogsAnalytics": "Analyses", "blueprints": "Configs", "blueprintsDescription": "Appliquer les configurations déclaratives et afficher les exécutions précédentes", @@ -1412,6 +1429,7 @@ "billingSites": "Nœuds", "billingUsers": "Utilisateurs", "billingDomains": "Domaines", + "billingOrganizations": "Organes", "billingRemoteExitNodes": "Nœuds distants", "billingNoLimitConfigured": "Aucune limite configurée", "billingEstimatedPeriod": "Période de facturation estimée", @@ -1454,6 +1472,7 @@ "failed": "Échec", "createNewOrgDescription": "Créer une nouvelle organisation", "organization": "Organisation", + "primary": "Primaire", "port": "Port", "securityKeyManage": "Gérer les clés de sécurité", "securityKeyDescription": "Ajouter ou supprimer des clés de sécurité pour l'authentification sans mot de passe", @@ -1916,6 +1935,9 @@ "authPageBrandingQuestionRemove": "Êtes-vous sûr de vouloir supprimer la marque des pages d'authentification ?", "authPageBrandingDeleteConfirm": "Confirmer la suppression de la marque", "brandingLogoURL": "URL du logo", + "brandingLogoURLOrPath": "URL du logo ou du chemin d'accès", + "brandingLogoPathDescription": "Entrez une URL ou un chemin local.", + "brandingLogoURLDescription": "Entrez une URL accessible au public à votre image de logo.", "brandingPrimaryColor": "Couleur principale", "brandingLogoWidth": "Largeur (px)", "brandingLogoHeight": "Hauteur (px)", From 0ac54a2c889119c9131b54825fb5bb166c0c51ff Mon Sep 17 00:00:00 2001 From: Owen Schwartz Date: Tue, 17 Feb 2026 21:56:08 -0800 Subject: [PATCH 03/15] New translations en-us.json (Spanish) --- messages/es-ES.json | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/messages/es-ES.json b/messages/es-ES.json index 28c0e779..d520aaf4 100644 --- a/messages/es-ES.json +++ b/messages/es-ES.json @@ -201,6 +201,7 @@ "protocolSelect": "Seleccionar un protocolo", "resourcePortNumber": "Número de puerto", "resourcePortNumberDescription": "El número de puerto externo a las solicitudes de proxy.", + "back": "Atrás", "cancel": "Cancelar", "resourceConfig": "Fragmentos de configuración", "resourceConfigDescription": "Copia y pega estos fragmentos de configuración para configurar el recurso TCP/UDP", @@ -246,6 +247,17 @@ "orgErrorDeleteMessage": "Se ha producido un error al eliminar la organización.", "orgDeleted": "Organización eliminada", "orgDeletedMessage": "La organización y sus datos han sido eliminados.", + "deleteAccount": "Eliminar cuenta", + "deleteAccountDescription": "Elimina permanentemente tu cuenta, todas las organizaciones que posees y todos los datos dentro de esas organizaciones. Esto no se puede deshacer.", + "deleteAccountButton": "Eliminar cuenta", + "deleteAccountConfirmTitle": "Eliminar cuenta", + "deleteAccountConfirmMessage": "Esto borrará permanentemente tu cuenta, todas las organizaciones que posees y todos los datos dentro de esas organizaciones. Esto no se puede deshacer.", + "deleteAccountConfirmString": "eliminar cuenta", + "deleteAccountSuccess": "Cuenta eliminada", + "deleteAccountSuccessMessage": "Tu cuenta ha sido eliminada.", + "deleteAccountError": "Error al eliminar la cuenta", + "deleteAccountPreviewAccount": "Tu cuenta", + "deleteAccountPreviewOrgs": "Organizaciones que tienes (y todos sus datos)", "orgMissing": "Falta el ID de la organización", "orgMissingMessage": "No se puede regenerar la invitación sin el ID de la organización.", "accessUsersManage": "Administrar usuarios", @@ -461,6 +473,8 @@ "filterByApprovalState": "Filtrar por estado de aprobación", "approvalListEmpty": "No hay aprobaciones", "approvalState": "Estado de aprobación", + "approvalLoadMore": "Cargar más", + "loadingApprovals": "Cargando aprobaciones", "approve": "Aprobar", "approved": "Aprobado", "denied": "Denegado", @@ -1017,6 +1031,7 @@ "pangolinSetup": "Configuración - Pangolin", "orgNameRequired": "El nombre de la organización es obligatorio", "orgIdRequired": "El ID de la organización es obligatorio", + "orgIdMaxLength": "El ID de la organización debe tener como máximo 32 caracteres", "orgErrorCreate": "Se ha producido un error al crear el org", "pageNotFound": "Página no encontrada", "pageNotFoundDescription": "¡Vaya! La página que estás buscando no existe.", @@ -1169,7 +1184,8 @@ "actionViewLogs": "Ver registros", "noneSelected": "Ninguno seleccionado", "orgNotFound2": "No se encontraron organizaciones.", - "searchProgress": "Buscar...", + "searchPlaceholder": "Buscar...", + "emptySearchOptions": "No se encontraron opciones", "create": "Crear", "orgs": "Organizaciones", "loginError": "Ocurrió un error inesperado. Por favor, inténtelo de nuevo.", @@ -1251,6 +1267,7 @@ "sidebarLogAndAnalytics": "Registro y análisis", "sidebarBluePrints": "Planos", "sidebarOrganization": "Organización", + "sidebarBillingAndLicenses": "Facturación y licencias", "sidebarLogsAnalytics": "Analíticas", "blueprints": "Planos", "blueprintsDescription": "Aplicar configuraciones declarativas y ver ejecuciones anteriores", @@ -1412,6 +1429,7 @@ "billingSites": "Sitios", "billingUsers": "Usuarios", "billingDomains": "Dominios", + "billingOrganizations": "Orgánico", "billingRemoteExitNodes": "Nodos remotos", "billingNoLimitConfigured": "No se ha configurado ningún límite", "billingEstimatedPeriod": "Período de facturación estimado", @@ -1454,6 +1472,7 @@ "failed": "Fallido", "createNewOrgDescription": "Crear una nueva organización", "organization": "Organización", + "primary": "Principal", "port": "Puerto", "securityKeyManage": "Gestionar llaves de seguridad", "securityKeyDescription": "Agregar o eliminar llaves de seguridad para autenticación sin contraseña", @@ -1916,6 +1935,9 @@ "authPageBrandingQuestionRemove": "¿Está seguro de que desea eliminar la marca de las páginas de autenticación?", "authPageBrandingDeleteConfirm": "Confirmar eliminación de la marca", "brandingLogoURL": "URL del logotipo", + "brandingLogoURLOrPath": "URL o ruta de Logo", + "brandingLogoPathDescription": "Introduzca una URL o una ruta local.", + "brandingLogoURLDescription": "Introduzca una URL de acceso público a su imagen de logotipo.", "brandingPrimaryColor": "Color primario", "brandingLogoWidth": "Ancho (px)", "brandingLogoHeight": "Altura (px)", From 11d16a155263714cfb9c1423ef4ac95eae4c7b14 Mon Sep 17 00:00:00 2001 From: Owen Schwartz Date: Tue, 17 Feb 2026 21:56:10 -0800 Subject: [PATCH 04/15] New translations en-us.json (Bulgarian) --- messages/bg-BG.json | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/messages/bg-BG.json b/messages/bg-BG.json index 3f48085a..b8cd3893 100644 --- a/messages/bg-BG.json +++ b/messages/bg-BG.json @@ -201,6 +201,7 @@ "protocolSelect": "Изберете протокол", "resourcePortNumber": "Номер на порт", "resourcePortNumberDescription": "Външен номер на порт за прокси заявки.", + "back": "Назад", "cancel": "Отмяна", "resourceConfig": "Конфигурационни фрагменти", "resourceConfigDescription": "Копирайте и поставете тези конфигурационни отрязъци, за да настроите TCP/UDP ресурса", @@ -246,6 +247,17 @@ "orgErrorDeleteMessage": "Възникна грешка при изтриването на организацията.", "orgDeleted": "Организацията е изтрита", "orgDeletedMessage": "Организацията и нейните данни са изтрити.", + "deleteAccount": "Изтриване на профил", + "deleteAccountDescription": "Перманентно изтрийте своя профил, всички организации, които притежавате, и всички данни в тези организации. Това не може да бъде отменено.", + "deleteAccountButton": "Изтриване на профил", + "deleteAccountConfirmTitle": "Изтрий профила", + "deleteAccountConfirmMessage": "Това ще изтрие перманентно вашия профил, всички организации, които притежавате, и всички данни в тези организации. Това не може да бъде отменено.", + "deleteAccountConfirmString": "изтриване на профил", + "deleteAccountSuccess": "Профилът е изтрит", + "deleteAccountSuccessMessage": "Вашият профил е изтрит.", + "deleteAccountError": "Неуспешно изтриване на профил", + "deleteAccountPreviewAccount": "Вашият профил", + "deleteAccountPreviewOrgs": "Организации, които притежавате (и всички техни данни)", "orgMissing": "Липсва идентификатор на организация", "orgMissingMessage": "Невъзможност за регенериране на покана без идентификатор на организация.", "accessUsersManage": "Управление на потребители", @@ -461,6 +473,8 @@ "filterByApprovalState": "Филтрирайте по състояние на одобрение", "approvalListEmpty": "Няма одобрения", "approvalState": "Състояние на одобрение", + "approvalLoadMore": "Заредете още", + "loadingApprovals": "Зарежда се одобрение", "approve": "Одобряване", "approved": "Одобрен", "denied": "Отказан", @@ -1017,6 +1031,7 @@ "pangolinSetup": "Настройка - Pangolin", "orgNameRequired": "Името на организацията е задължително", "orgIdRequired": "ID на организацията е задължително", + "orgIdMaxLength": "ID на организация трябва да бъде най-много 32 символа", "orgErrorCreate": "Възникна грешка при създаване на организация", "pageNotFound": "Страницата не е намерена", "pageNotFoundDescription": "О, не! Страницата, която търсите, не съществува.", @@ -1169,7 +1184,8 @@ "actionViewLogs": "Преглед на дневници", "noneSelected": "Нищо не е избрано", "orgNotFound2": "Няма намерени организации.", - "searchProgress": "Търсене...", + "searchPlaceholder": "Търсене...", + "emptySearchOptions": "Няма намерени опции", "create": "Създаване", "orgs": "Организации", "loginError": "Възникна неочаквана грешка. Моля, опитайте отново.", @@ -1251,6 +1267,7 @@ "sidebarLogAndAnalytics": "Лог & Анализи", "sidebarBluePrints": "Чертежи", "sidebarOrganization": "Организация", + "sidebarBillingAndLicenses": "Фактуриране & Лицензи", "sidebarLogsAnalytics": "Анализи", "blueprints": "Чертежи", "blueprintsDescription": "Прилагайте декларативни конфигурации и преглеждайте предишни изпълнения", @@ -1412,6 +1429,7 @@ "billingSites": "Сайтове", "billingUsers": "Потребители", "billingDomains": "Домейни", + "billingOrganizations": "Организации", "billingRemoteExitNodes": "Дистанционни възли", "billingNoLimitConfigured": "Няма конфигуриран лимит", "billingEstimatedPeriod": "Очакван период на фактуриране", @@ -1454,6 +1472,7 @@ "failed": "Неуспешно", "createNewOrgDescription": "Създайте нова организация", "organization": "Организация", + "primary": "Основно", "port": "Порт", "securityKeyManage": "Управление на ключове за защита", "securityKeyDescription": "Добавяне или премахване на ключове за защита за удостоверяване без парола", @@ -1916,6 +1935,9 @@ "authPageBrandingQuestionRemove": "Сигурни ли сте, че искате да премахнете брандинга за страниците за автентификация?", "authPageBrandingDeleteConfirm": "Потвърждение на изтриване на брандинга.", "brandingLogoURL": "URL адрес на логото.", + "brandingLogoURLOrPath": "URL или Път към лого", + "brandingLogoPathDescription": "Въведете URL или локален път.", + "brandingLogoURLDescription": "Въведете публично достъпен URL към вашето лого изображение.", "brandingPrimaryColor": "Основен цвят.", "brandingLogoWidth": "Ширина (px).", "brandingLogoHeight": "Височина (px).", From ce1693aa2fe86f8ca24c1ebd8d28a3fa5f087c4f Mon Sep 17 00:00:00 2001 From: Owen Schwartz Date: Tue, 17 Feb 2026 21:56:11 -0800 Subject: [PATCH 05/15] New translations en-us.json (Czech) --- messages/cs-CZ.json | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/messages/cs-CZ.json b/messages/cs-CZ.json index c35488cd..e4ff7269 100644 --- a/messages/cs-CZ.json +++ b/messages/cs-CZ.json @@ -201,6 +201,7 @@ "protocolSelect": "Vybrat protokol", "resourcePortNumber": "Číslo portu", "resourcePortNumberDescription": "Externí port k požadavkům proxy serveru.", + "back": "Zpět", "cancel": "Zrušit", "resourceConfig": "Konfigurační snippety", "resourceConfigDescription": "Zkopírujte a vložte tyto konfigurační textové bloky pro nastavení TCP/UDP zdroje", @@ -246,6 +247,17 @@ "orgErrorDeleteMessage": "Došlo k chybě při odstraňování organizace.", "orgDeleted": "Organizace odstraněna", "orgDeletedMessage": "Organizace a její data byla smazána.", + "deleteAccount": "Odstranit účet", + "deleteAccountDescription": "Trvale smazat svůj účet, všechny organizace, které vlastníte, a všechna data těchto organizací. Tuto akci nelze vrátit zpět.", + "deleteAccountButton": "Odstranit účet", + "deleteAccountConfirmTitle": "Odstranit účet", + "deleteAccountConfirmMessage": "Toto trvale vymaže váš účet, všechny organizace, které vlastníte, a všechna data v rámci těchto organizací. Tuto akci nelze vrátit zpět.", + "deleteAccountConfirmString": "smazat účet", + "deleteAccountSuccess": "Účet odstraněn", + "deleteAccountSuccessMessage": "Váš účet byl odstraněn.", + "deleteAccountError": "Nepodařilo se odstranit účet", + "deleteAccountPreviewAccount": "Váš účet", + "deleteAccountPreviewOrgs": "Organizace, které vlastníte (a všechny jejich údaje)", "orgMissing": "Chybí ID organizace", "orgMissingMessage": "Nelze obnovit pozvánku bez ID organizace.", "accessUsersManage": "Spravovat uživatele", @@ -461,6 +473,8 @@ "filterByApprovalState": "Filtrovat podle státu schválení", "approvalListEmpty": "Žádná schválení", "approvalState": "Země schválení", + "approvalLoadMore": "Načíst více", + "loadingApprovals": "Načítání schválení", "approve": "Schválit", "approved": "Schváleno", "denied": "Zamítnuto", @@ -1017,6 +1031,7 @@ "pangolinSetup": "Setup - Pangolin", "orgNameRequired": "Je vyžadován název organizace", "orgIdRequired": "Je vyžadováno ID organizace", + "orgIdMaxLength": "ID organizace musí mít nejvýše 32 znaků", "orgErrorCreate": "Při vytváření org došlo k chybě", "pageNotFound": "Stránka nenalezena", "pageNotFoundDescription": "Jejda! Stránka, kterou hledáte, neexistuje.", @@ -1169,7 +1184,8 @@ "actionViewLogs": "Zobrazit logy", "noneSelected": "Není vybráno", "orgNotFound2": "Nebyly nalezeny žádné organizace.", - "searchProgress": "Hledat...", + "searchPlaceholder": "Hledat...", + "emptySearchOptions": "Nebyly nalezeny žádné možnosti", "create": "Vytvořit", "orgs": "Organizace", "loginError": "Došlo k neočekávané chybě. Zkuste to prosím znovu.", @@ -1251,6 +1267,7 @@ "sidebarLogAndAnalytics": "Log & Analytics", "sidebarBluePrints": "Plány", "sidebarOrganization": "Organizace", + "sidebarBillingAndLicenses": "Fakturace a licence", "sidebarLogsAnalytics": "Analytici", "blueprints": "Plány", "blueprintsDescription": "Použít deklarativní konfigurace a zobrazit předchozí běhy", @@ -1412,6 +1429,7 @@ "billingSites": "Stránky", "billingUsers": "Uživatelé", "billingDomains": "Domény", + "billingOrganizations": "Tělo", "billingRemoteExitNodes": "Vzdálené uzly", "billingNoLimitConfigured": "Žádný limit nenastaven", "billingEstimatedPeriod": "Odhadované období fakturace", @@ -1454,6 +1472,7 @@ "failed": "Selhalo", "createNewOrgDescription": "Vytvořit novou organizaci", "organization": "Organizace", + "primary": "Primární", "port": "Přístav", "securityKeyManage": "Správa bezpečnostních klíčů", "securityKeyDescription": "Přidat nebo odebrat bezpečnostní klíče pro bezheslou autentizaci", @@ -1916,6 +1935,9 @@ "authPageBrandingQuestionRemove": "Jste si jisti, že chcete odstranit branding autentizačních stránek?", "authPageBrandingDeleteConfirm": "Potvrzení odstranění brandingu", "brandingLogoURL": "URL loga", + "brandingLogoURLOrPath": "URL nebo cesta k logu", + "brandingLogoPathDescription": "Zadejte URL nebo místní cestu.", + "brandingLogoURLDescription": "Zadejte veřejně přístupnou adresu URL vašeho loga.", "brandingPrimaryColor": "Primární barva", "brandingLogoWidth": "Šířka (px)", "brandingLogoHeight": "Výška (px)", From 40ed388b0f19cf28cc26fc9fe6634b067260367b Mon Sep 17 00:00:00 2001 From: Owen Schwartz Date: Tue, 17 Feb 2026 21:56:12 -0800 Subject: [PATCH 06/15] New translations en-us.json (German) --- messages/de-DE.json | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/messages/de-DE.json b/messages/de-DE.json index ee3d65ea..8a5e9b68 100644 --- a/messages/de-DE.json +++ b/messages/de-DE.json @@ -201,6 +201,7 @@ "protocolSelect": "Wählen Sie ein Protokoll", "resourcePortNumber": "Portnummer", "resourcePortNumberDescription": "Die externe Portnummer für Proxy-Anfragen.", + "back": "Zurück", "cancel": "Abbrechen", "resourceConfig": "Konfiguration Snippets", "resourceConfigDescription": "Kopieren und fügen Sie diese Konfigurations-Snippets ein, um die TCP/UDP Ressource einzurichten", @@ -246,6 +247,17 @@ "orgErrorDeleteMessage": "Beim Löschen der Organisation ist ein Fehler aufgetreten.", "orgDeleted": "Organisation gelöscht", "orgDeletedMessage": "Die Organisation und ihre Daten wurden gelöscht.", + "deleteAccount": "Konto löschen", + "deleteAccountDescription": "Lösche dein Konto, alle Organisationen, die du besitzt, und alle Daten innerhalb dieser Organisationen. Dies kann nicht rückgängig gemacht werden.", + "deleteAccountButton": "Konto löschen", + "deleteAccountConfirmTitle": "Konto löschen", + "deleteAccountConfirmMessage": "Dies wird Ihr Konto dauerhaft löschen, alle Organisationen, die Sie besitzen, und alle Daten innerhalb dieser Organisationen. Dies kann nicht rückgängig gemacht werden.", + "deleteAccountConfirmString": "Konto löschen", + "deleteAccountSuccess": "Konto gelöscht", + "deleteAccountSuccessMessage": "Ihr Konto wurde gelöscht.", + "deleteAccountError": "Konto konnte nicht gelöscht werden", + "deleteAccountPreviewAccount": "Ihr Konto", + "deleteAccountPreviewOrgs": "Organisationen, die Sie besitzen (und ihre Daten)", "orgMissing": "Organisations-ID fehlt", "orgMissingMessage": "Einladung kann ohne Organisations-ID nicht neu generiert werden.", "accessUsersManage": "Benutzer verwalten", @@ -461,6 +473,8 @@ "filterByApprovalState": "Filtern nach Genehmigungsstatus", "approvalListEmpty": "Keine Genehmigungen", "approvalState": "Genehmigungsstatus", + "approvalLoadMore": "Mehr laden", + "loadingApprovals": "Genehmigungen werden geladen", "approve": "Bestätigen", "approved": "Genehmigt", "denied": "Verweigert", @@ -1017,6 +1031,7 @@ "pangolinSetup": "Einrichtung - Pangolin", "orgNameRequired": "Organisationsname ist erforderlich", "orgIdRequired": "Organisations-ID ist erforderlich", + "orgIdMaxLength": "Organisations-ID darf höchstens 32 Zeichen lang sein", "orgErrorCreate": "Beim Erstellen der Organisation ist ein Fehler aufgetreten", "pageNotFound": "Seite nicht gefunden", "pageNotFoundDescription": "Hoppla! Die gesuchte Seite existiert nicht.", @@ -1169,7 +1184,8 @@ "actionViewLogs": "Logs anzeigen", "noneSelected": "Keine ausgewählt", "orgNotFound2": "Keine Organisationen gefunden.", - "searchProgress": "Suche...", + "searchPlaceholder": "Suche...", + "emptySearchOptions": "Keine Optionen gefunden", "create": "Erstellen", "orgs": "Organisationen", "loginError": "Ein unerwarteter Fehler ist aufgetreten. Bitte versuchen Sie es erneut.", @@ -1251,6 +1267,7 @@ "sidebarLogAndAnalytics": "Log & Analytik", "sidebarBluePrints": "Blaupausen", "sidebarOrganization": "Organisation", + "sidebarBillingAndLicenses": "Abrechnung & Lizenzen", "sidebarLogsAnalytics": "Analytik", "blueprints": "Blaupausen", "blueprintsDescription": "Deklarative Konfigurationen anwenden und vorherige Abläufe anzeigen", @@ -1412,6 +1429,7 @@ "billingSites": "Seiten", "billingUsers": "Benutzergeräte", "billingDomains": "Domänen", + "billingOrganizations": "Orden", "billingRemoteExitNodes": "Entfernte Knoten", "billingNoLimitConfigured": "Kein Limit konfiguriert", "billingEstimatedPeriod": "Geschätzter Abrechnungszeitraum", @@ -1454,6 +1472,7 @@ "failed": "Fehlgeschlagen", "createNewOrgDescription": "Eine neue Organisation erstellen", "organization": "Organisation", + "primary": "Primär", "port": "Port", "securityKeyManage": "Sicherheitsschlüssel verwalten", "securityKeyDescription": "Sicherheitsschlüssel für passwortlose Authentifizierung hinzufügen oder entfernen", @@ -1916,6 +1935,9 @@ "authPageBrandingQuestionRemove": "Sind Sie sicher, dass Sie das Branding für Authentifizierungsseiten entfernen möchten?", "authPageBrandingDeleteConfirm": "Branding löschen bestätigen", "brandingLogoURL": "Logo URL", + "brandingLogoURLOrPath": "Logo-URL oder Pfad", + "brandingLogoPathDescription": "Geben Sie eine URL oder einen lokalen Pfad ein.", + "brandingLogoURLDescription": "Geben Sie eine öffentlich zugängliche URL zu Ihrem Logobild ein.", "brandingPrimaryColor": "Primär-Farbe", "brandingLogoWidth": "Breite (px)", "brandingLogoHeight": "Höhe (px)", From 8446c68e1bd50763669769f7eab46e5e061949ef Mon Sep 17 00:00:00 2001 From: Owen Schwartz Date: Tue, 17 Feb 2026 21:56:14 -0800 Subject: [PATCH 07/15] New translations en-us.json (Italian) --- messages/it-IT.json | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/messages/it-IT.json b/messages/it-IT.json index 30443e98..77ff1c2b 100644 --- a/messages/it-IT.json +++ b/messages/it-IT.json @@ -201,6 +201,7 @@ "protocolSelect": "Seleziona un protocollo", "resourcePortNumber": "Numero Porta", "resourcePortNumberDescription": "Il numero di porta esterna per le richieste di proxy.", + "back": "Indietro", "cancel": "Annulla", "resourceConfig": "Snippet Di Configurazione", "resourceConfigDescription": "Copia e incolla questi snippet di configurazione per configurare la risorsa TCP/UDP", @@ -246,6 +247,17 @@ "orgErrorDeleteMessage": "Si è verificato un errore durante l'eliminazione dell'organizzazione.", "orgDeleted": "Organizzazione eliminata", "orgDeletedMessage": "L'organizzazione e i suoi dati sono stati eliminati.", + "deleteAccount": "Elimina Account", + "deleteAccountDescription": "Elimina definitivamente il tuo account, tutte le organizzazioni che possiedi e tutti i dati all'interno di tali organizzazioni. Questo non può essere annullato.", + "deleteAccountButton": "Elimina Account", + "deleteAccountConfirmTitle": "Elimina Account", + "deleteAccountConfirmMessage": "Questo cancellerà definitivamente il tuo account, tutte le organizzazioni che possiedi e tutti i dati all'interno di tali organizzazioni. Questo non può essere annullato.", + "deleteAccountConfirmString": "elimina account", + "deleteAccountSuccess": "Account Eliminato", + "deleteAccountSuccessMessage": "Il tuo account è stato eliminato.", + "deleteAccountError": "Impossibile eliminare l'account", + "deleteAccountPreviewAccount": "Il Tuo Account", + "deleteAccountPreviewOrgs": "Organizzazioni che possiedi (e tutti i loro dati)", "orgMissing": "ID Organizzazione Mancante", "orgMissingMessage": "Impossibile rigenerare l'invito senza un ID organizzazione.", "accessUsersManage": "Gestisci Utenti", @@ -461,6 +473,8 @@ "filterByApprovalState": "Filtra Per Stato Di Approvazione", "approvalListEmpty": "Nessuna approvazione", "approvalState": "Stato Di Approvazione", + "approvalLoadMore": "Carica altro", + "loadingApprovals": "Caricamento Approvazioni", "approve": "Approva", "approved": "Approvato", "denied": "Negato", @@ -1017,6 +1031,7 @@ "pangolinSetup": "Configurazione - Pangolin", "orgNameRequired": "Il nome dell'organizzazione è obbligatorio", "orgIdRequired": "L'ID dell'organizzazione è obbligatorio", + "orgIdMaxLength": "L'ID dell'organizzazione deve contenere al massimo 32 caratteri", "orgErrorCreate": "Si è verificato un errore durante la creazione dell'organizzazione", "pageNotFound": "Pagina Non Trovata", "pageNotFoundDescription": "Oops! La pagina che stai cercando non esiste.", @@ -1169,7 +1184,8 @@ "actionViewLogs": "Visualizza Log", "noneSelected": "Nessuna selezione", "orgNotFound2": "Nessuna organizzazione trovata.", - "searchProgress": "Ricerca...", + "searchPlaceholder": "Cerca...", + "emptySearchOptions": "Nessuna opzione trovata", "create": "Crea", "orgs": "Organizzazioni", "loginError": "Si è verificato un errore imprevisto. Riprova.", @@ -1251,6 +1267,7 @@ "sidebarLogAndAnalytics": "Log & Analytics", "sidebarBluePrints": "Progetti", "sidebarOrganization": "Organizzazione", + "sidebarBillingAndLicenses": "Fatturazione E Licenze", "sidebarLogsAnalytics": "Analisi", "blueprints": "Progetti", "blueprintsDescription": "Applica le configurazioni dichiarative e visualizza le partite precedenti", @@ -1412,6 +1429,7 @@ "billingSites": "Siti", "billingUsers": "Utenti", "billingDomains": "Domini", + "billingOrganizations": "Organi", "billingRemoteExitNodes": "Nodi Remoti", "billingNoLimitConfigured": "Nessun limite configurato", "billingEstimatedPeriod": "Periodo di Fatturazione Stimato", @@ -1454,6 +1472,7 @@ "failed": "Fallito", "createNewOrgDescription": "Crea una nuova organizzazione", "organization": "Organizzazione", + "primary": "Principale", "port": "Porta", "securityKeyManage": "Gestisci chiavi di sicurezza", "securityKeyDescription": "Aggiungi o rimuovi chiavi di sicurezza per l'autenticazione senza password", @@ -1916,6 +1935,9 @@ "authPageBrandingQuestionRemove": "Sei sicuro di voler rimuovere il branding per le pagine di autenticazione?", "authPageBrandingDeleteConfirm": "Conferma Eliminazione Branding", "brandingLogoURL": "URL Logo", + "brandingLogoURLOrPath": "URL o percorso del logo", + "brandingLogoPathDescription": "Inserisci un URL o un percorso locale.", + "brandingLogoURLDescription": "Inserisci un URL accessibile al pubblico per la tua immagine del logo.", "brandingPrimaryColor": "Colore Primario", "brandingLogoWidth": "Larghezza (px)", "brandingLogoHeight": "Altezza (px)", From ce1ad032ba3b0453e1a8ed8c19e948f52a9aaa9a Mon Sep 17 00:00:00 2001 From: Owen Schwartz Date: Tue, 17 Feb 2026 21:56:15 -0800 Subject: [PATCH 08/15] New translations en-us.json (Korean) --- messages/ko-KR.json | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/messages/ko-KR.json b/messages/ko-KR.json index 13f0a22a..7d53b8b9 100644 --- a/messages/ko-KR.json +++ b/messages/ko-KR.json @@ -201,6 +201,7 @@ "protocolSelect": "프로토콜 선택", "resourcePortNumber": "포트 번호", "resourcePortNumberDescription": "요청을 프록시하기 위한 외부 포트 번호입니다.", + "back": "뒤로", "cancel": "취소", "resourceConfig": "구성 스니펫", "resourceConfigDescription": "TCP/UDP 리소스를 설정하기 위해 이 구성 스니펫을 복사하여 붙여넣습니다.", @@ -246,6 +247,17 @@ "orgErrorDeleteMessage": "조직을 삭제하는 중 오류가 발생했습니다.", "orgDeleted": "조직이 삭제되었습니다.", "orgDeletedMessage": "조직과 그 데이터가 삭제되었습니다.", + "deleteAccount": "계정 삭제", + "deleteAccountDescription": "계정, 소유한 모든 조직 및 조직 내의 모든 데이터를 영구적으로 삭제합니다. 이 작업은 되돌릴 수 없습니다.", + "deleteAccountButton": "계정 삭제", + "deleteAccountConfirmTitle": "계정 삭제", + "deleteAccountConfirmMessage": "이 작업은 귀하의 계정, 소유한 모든 조직 및 조직 내 모든 데이터를 영구적으로 삭제합니다. 이 작업은 되돌릴 수 없습니다.", + "deleteAccountConfirmString": "계정 삭제", + "deleteAccountSuccess": "계정 삭제됨", + "deleteAccountSuccessMessage": "계정이 삭제되었습니다.", + "deleteAccountError": "계정 삭제 실패", + "deleteAccountPreviewAccount": "귀하의 계정", + "deleteAccountPreviewOrgs": "귀하가 소유한 조직(포함된 모든 데이터)", "orgMissing": "조직 ID가 누락되었습니다", "orgMissingMessage": "조직 ID 없이 초대장을 재생성할 수 없습니다.", "accessUsersManage": "사용자 관리", @@ -461,6 +473,8 @@ "filterByApprovalState": "승인 상태로 필터링", "approvalListEmpty": "승인이 없습니다.", "approvalState": "승인 상태", + "approvalLoadMore": "더 불러오기", + "loadingApprovals": "승인 불러오는 중", "approve": "승인", "approved": "승인됨", "denied": "거부됨", @@ -1017,6 +1031,7 @@ "pangolinSetup": "설정 - 판골린", "orgNameRequired": "조직 이름은 필수입니다.", "orgIdRequired": "조직 ID가 필요합니다", + "orgIdMaxLength": "조직 ID는 최대 32자 이내여야 합니다", "orgErrorCreate": "조직 생성 중 오류가 발생했습니다.", "pageNotFound": "페이지를 찾을 수 없습니다", "pageNotFoundDescription": "앗! 찾고 있는 페이지가 존재하지 않습니다.", @@ -1169,7 +1184,8 @@ "actionViewLogs": "로그 보기", "noneSelected": "선택된 항목 없음", "orgNotFound2": "조직이 없습니다.", - "searchProgress": "검색...", + "searchPlaceholder": "검색...", + "emptySearchOptions": "옵션이 없습니다", "create": "생성", "orgs": "조직", "loginError": "예기치 않은 오류가 발생했습니다. 다시 시도해주세요.", @@ -1251,6 +1267,7 @@ "sidebarLogAndAnalytics": "로그 & 통계", "sidebarBluePrints": "청사진", "sidebarOrganization": "조직", + "sidebarBillingAndLicenses": "결제 및 라이선스", "sidebarLogsAnalytics": "분석", "blueprints": "청사진", "blueprintsDescription": "선언적 구성을 적용하고 이전 실행을 봅니다", @@ -1412,6 +1429,7 @@ "billingSites": "사이트", "billingUsers": "사용자", "billingDomains": "도메인", + "billingOrganizations": "조직", "billingRemoteExitNodes": "원격 노드", "billingNoLimitConfigured": "구성된 한도가 없습니다.", "billingEstimatedPeriod": "예상 청구 기간", @@ -1454,6 +1472,7 @@ "failed": "실패", "createNewOrgDescription": "새 조직 생성", "organization": "조직", + "primary": "기본", "port": "포트", "securityKeyManage": "보안 키 관리", "securityKeyDescription": "비밀번호 없는 인증을 위해 보안 키를 추가하거나 제거합니다.", @@ -1916,6 +1935,9 @@ "authPageBrandingQuestionRemove": "인증 페이지의 브랜딩을 제거하시겠습니까?", "authPageBrandingDeleteConfirm": "브랜딩 삭제 확인", "brandingLogoURL": "로고 URL", + "brandingLogoURLOrPath": "로고 URL 또는 경로", + "brandingLogoPathDescription": "URL 또는 로컬 경로를 입력하세요.", + "brandingLogoURLDescription": "로고 이미지에 대한 공용 URL을 입력하십시오.", "brandingPrimaryColor": "기본 색상", "brandingLogoWidth": "너비(px)", "brandingLogoHeight": "높이(px)", From b7ab3c2e921cefc55fbee8ee712f05c26f39633a Mon Sep 17 00:00:00 2001 From: Owen Schwartz Date: Tue, 17 Feb 2026 21:56:16 -0800 Subject: [PATCH 09/15] New translations en-us.json (Dutch) --- messages/nl-NL.json | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/messages/nl-NL.json b/messages/nl-NL.json index 78783d92..4c23dc85 100644 --- a/messages/nl-NL.json +++ b/messages/nl-NL.json @@ -201,6 +201,7 @@ "protocolSelect": "Selecteer een protocol", "resourcePortNumber": "Nummer van poort", "resourcePortNumberDescription": "Het externe poortnummer naar proxyverzoeken.", + "back": "Achterzijde", "cancel": "Annuleren", "resourceConfig": "Configuratie tekstbouwstenen", "resourceConfigDescription": "Kopieer en plak deze configuratie-snippets om de TCP/UDP-bron in te stellen", @@ -246,6 +247,17 @@ "orgErrorDeleteMessage": "Er is een fout opgetreden tijdens het verwijderen van de organisatie.", "orgDeleted": "Organisatie verwijderd", "orgDeletedMessage": "De organisatie en haar gegevens zijn verwijderd.", + "deleteAccount": "Verwijder account", + "deleteAccountDescription": "Verwijdert permanent uw account, alle organisaties die u bezit, en alle gegevens binnen deze organisaties. Dit kan niet ongedaan worden gemaakt.", + "deleteAccountButton": "Verwijder account", + "deleteAccountConfirmTitle": "Verwijder account", + "deleteAccountConfirmMessage": "Dit zal uw account permanent wissen, alle organisaties die u bezit, en alle gegevens binnen deze organisaties. Dit kan niet ongedaan worden gemaakt.", + "deleteAccountConfirmString": "verwijder account", + "deleteAccountSuccess": "Account verwijderd", + "deleteAccountSuccessMessage": "Uw account is verwijderd.", + "deleteAccountError": "Kan account niet verwijderen", + "deleteAccountPreviewAccount": "Uw account", + "deleteAccountPreviewOrgs": "Organisaties die je bezit (en al hun gegevens)", "orgMissing": "Organisatie-ID ontbreekt", "orgMissingMessage": "Niet in staat om de uitnodiging te regenereren zonder organisatie-ID.", "accessUsersManage": "Gebruikers beheren", @@ -461,6 +473,8 @@ "filterByApprovalState": "Filter op goedkeuringsstatus", "approvalListEmpty": "Geen goedkeuringen", "approvalState": "Goedkeuring status", + "approvalLoadMore": "Meer laden", + "loadingApprovals": "Goedkeuringen laden", "approve": "Goedkeuren", "approved": "Goedgekeurd", "denied": "Geweigerd", @@ -1017,6 +1031,7 @@ "pangolinSetup": "Instellen - Pangolin", "orgNameRequired": "Organisatienaam is vereist", "orgIdRequired": "Organisatie-ID is vereist", + "orgIdMaxLength": "Organisatie-ID mag maximaal 32 tekens lang zijn", "orgErrorCreate": "Fout opgetreden tijdens het aanmaken org", "pageNotFound": "Pagina niet gevonden", "pageNotFoundDescription": "Oeps! De pagina die je zoekt bestaat niet.", @@ -1169,7 +1184,8 @@ "actionViewLogs": "Logboeken bekijken", "noneSelected": "Niet geselecteerd", "orgNotFound2": "Geen organisaties gevonden.", - "searchProgress": "Zoeken...", + "searchPlaceholder": "Zoeken...", + "emptySearchOptions": "Geen opties gevonden", "create": "Aanmaken", "orgs": "Organisaties", "loginError": "Er is een onverwachte fout opgetreden. Probeer het opnieuw.", @@ -1251,6 +1267,7 @@ "sidebarLogAndAnalytics": "Log & Analytics", "sidebarBluePrints": "Blauwdrukken", "sidebarOrganization": "Organisatie", + "sidebarBillingAndLicenses": "Facturatie & Licenties", "sidebarLogsAnalytics": "Analyses", "blueprints": "Blauwdrukken", "blueprintsDescription": "Gebruik declaratieve configuraties en bekijk vorige uitvoeringen.", @@ -1412,6 +1429,7 @@ "billingSites": "Sites", "billingUsers": "Gebruikers", "billingDomains": "Domeinen", + "billingOrganizations": "Ordenen", "billingRemoteExitNodes": "Externe knooppunten", "billingNoLimitConfigured": "Geen limiet ingesteld", "billingEstimatedPeriod": "Geschatte Facturatie Periode", @@ -1454,6 +1472,7 @@ "failed": "Mislukt", "createNewOrgDescription": "Maak een nieuwe organisatie", "organization": "Organisatie", + "primary": "Primair", "port": "Poort", "securityKeyManage": "Beveiligingssleutels beheren", "securityKeyDescription": "Voeg beveiligingssleutels toe of verwijder ze voor wachtwoordloze authenticatie", @@ -1916,6 +1935,9 @@ "authPageBrandingQuestionRemove": "Weet u zeker dat u de branding voor Auth-pagina's wilt verwijderen?", "authPageBrandingDeleteConfirm": "Bevestig verwijder Branding", "brandingLogoURL": "Het logo-URL", + "brandingLogoURLOrPath": "Logo URL of pad", + "brandingLogoPathDescription": "Voer een URL of een lokaal pad in.", + "brandingLogoURLDescription": "Voer een openbaar toegankelijke URL in voor uw logo afbeelding.", "brandingPrimaryColor": "Primaire kleur", "brandingLogoWidth": "Breedte (px)", "brandingLogoHeight": "Hoogte (px)", From 1851bf941a9666fbb99899881bf6c0287c388d0d Mon Sep 17 00:00:00 2001 From: Owen Schwartz Date: Tue, 17 Feb 2026 21:56:18 -0800 Subject: [PATCH 10/15] New translations en-us.json (Polish) --- messages/pl-PL.json | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/messages/pl-PL.json b/messages/pl-PL.json index b3d3cd94..84052ce9 100644 --- a/messages/pl-PL.json +++ b/messages/pl-PL.json @@ -201,6 +201,7 @@ "protocolSelect": "Wybierz protokół", "resourcePortNumber": "Numer portu", "resourcePortNumberDescription": "Numer portu zewnętrznego do żądań proxy.", + "back": "Powrót", "cancel": "Anuluj", "resourceConfig": "Snippety konfiguracji", "resourceConfigDescription": "Skopiuj i wklej te fragmenty konfiguracji, aby skonfigurować zasób TCP/UDP", @@ -246,6 +247,17 @@ "orgErrorDeleteMessage": "Wystąpił błąd podczas usuwania organizacji.", "orgDeleted": "Organizacja usunięta", "orgDeletedMessage": "Organizacja i jej dane zostały usunięte.", + "deleteAccount": "Usuń konto", + "deleteAccountDescription": "Trwale usuń swoje konto, wszystkie organizacje, które posiadasz, oraz wszystkie dane w ramach tych organizacji. Tej operacji nie można cofnąć.", + "deleteAccountButton": "Usuń konto", + "deleteAccountConfirmTitle": "Usuń konto", + "deleteAccountConfirmMessage": "Spowoduje to trwałe usunięcie konta, wszystkich organizacji, które posiadasz, oraz wszystkich danych w tych organizacjach. Tej operacji nie można cofnąć.", + "deleteAccountConfirmString": "usuń konto", + "deleteAccountSuccess": "Konto usunięte", + "deleteAccountSuccessMessage": "Twoje konto zostało usunięte.", + "deleteAccountError": "Nie udało się usunąć konta", + "deleteAccountPreviewAccount": "Twoje konto", + "deleteAccountPreviewOrgs": "Organizacje, które jesteś właścicielem (i wszystkie ich dane)", "orgMissing": "Brak ID organizacji", "orgMissingMessage": "Nie można ponownie wygenerować zaproszenia bez ID organizacji.", "accessUsersManage": "Zarządzaj użytkownikami", @@ -461,6 +473,8 @@ "filterByApprovalState": "Filtruj według państwa zatwierdzenia", "approvalListEmpty": "Brak zatwierdzeń", "approvalState": "Państwo zatwierdzające", + "approvalLoadMore": "Załaduj więcej", + "loadingApprovals": "Wczytywanie zatwierdzeń", "approve": "Zatwierdź", "approved": "Zatwierdzone", "denied": "Odmowa", @@ -1017,6 +1031,7 @@ "pangolinSetup": "Konfiguracja - Pangolin", "orgNameRequired": "Nazwa organizacji jest wymagana", "orgIdRequired": "ID organizacji jest wymagane", + "orgIdMaxLength": "Identyfikator organizacji musi mieć co najwyżej 32 znaki", "orgErrorCreate": "Wystąpił błąd podczas tworzenia organizacji", "pageNotFound": "Nie znaleziono strony", "pageNotFoundDescription": "Ups! Strona, której szukasz, nie istnieje.", @@ -1169,7 +1184,8 @@ "actionViewLogs": "Zobacz dzienniki", "noneSelected": "Nie wybrano", "orgNotFound2": "Nie znaleziono organizacji.", - "searchProgress": "Szukaj...", + "searchPlaceholder": "Szukaj...", + "emptySearchOptions": "Nie znaleziono opcji", "create": "Utwórz", "orgs": "Organizacje", "loginError": "Wystąpił nieoczekiwany błąd. Spróbuj ponownie.", @@ -1251,6 +1267,7 @@ "sidebarLogAndAnalytics": "Dziennik & Analityka", "sidebarBluePrints": "Schematy", "sidebarOrganization": "Organizacja", + "sidebarBillingAndLicenses": "Płatność i licencje", "sidebarLogsAnalytics": "Analityka", "blueprints": "Schematy", "blueprintsDescription": "Zastosuj konfiguracje deklaracyjne i wyświetl poprzednie operacje", @@ -1412,6 +1429,7 @@ "billingSites": "Witryny", "billingUsers": "Użytkownicy", "billingDomains": "Domeny", + "billingOrganizations": "O masie całkowitej pojazdu przekraczającej 5 ton, ale nieprzekraczającej 5 ton", "billingRemoteExitNodes": "Zdalne węzły", "billingNoLimitConfigured": "Nie skonfigurowano limitu", "billingEstimatedPeriod": "Szacowany Okres Rozliczeniowy", @@ -1454,6 +1472,7 @@ "failed": "Niepowodzenie", "createNewOrgDescription": "Utwórz nową organizację", "organization": "Organizacja", + "primary": "Podstawowy", "port": "Port", "securityKeyManage": "Zarządzaj kluczami bezpieczeństwa", "securityKeyDescription": "Dodaj lub usuń klucze bezpieczeństwa do uwierzytelniania bez hasła", @@ -1916,6 +1935,9 @@ "authPageBrandingQuestionRemove": "Czy na pewno chcesz usunąć branding dla stron uwierzytelniania?", "authPageBrandingDeleteConfirm": "Potwierdź usunięcie brandingu", "brandingLogoURL": "URL logo", + "brandingLogoURLOrPath": "Adres URL logo lub ścieżka", + "brandingLogoPathDescription": "Wprowadź adres URL lub ścieżkę lokalną.", + "brandingLogoURLDescription": "Wprowadź publicznie dostępny adres URL do obrazu logo.", "brandingPrimaryColor": "Główny kolor", "brandingLogoWidth": "Szerokość (piksele)", "brandingLogoHeight": "Wysokość (piksele)", From c4a6403cbaf64c32f9e5ca2d9153c5d1d6392b2f Mon Sep 17 00:00:00 2001 From: Owen Schwartz Date: Tue, 17 Feb 2026 21:56:19 -0800 Subject: [PATCH 11/15] New translations en-us.json (Portuguese) --- messages/pt-PT.json | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/messages/pt-PT.json b/messages/pt-PT.json index e7985138..4cfac3c2 100644 --- a/messages/pt-PT.json +++ b/messages/pt-PT.json @@ -201,6 +201,7 @@ "protocolSelect": "Selecione um protocolo", "resourcePortNumber": "Número da Porta", "resourcePortNumberDescription": "O número da porta externa para requisições de proxy.", + "back": "Anterior", "cancel": "cancelar", "resourceConfig": "Snippets de Configuração", "resourceConfigDescription": "Copie e cole estes snippets de configuração para configurar o recurso TCP/UDP", @@ -246,6 +247,17 @@ "orgErrorDeleteMessage": "Ocorreu um erro ao apagar a organização.", "orgDeleted": "Organização excluída", "orgDeletedMessage": "A organização e seus dados foram excluídos.", + "deleteAccount": "Excluir Conta", + "deleteAccountDescription": "Exclua permanentemente sua conta, todas as organizações que você possui e todos os dados nessas organizações. Isso não pode ser desfeito.", + "deleteAccountButton": "Excluir Conta", + "deleteAccountConfirmTitle": "Excluir Conta", + "deleteAccountConfirmMessage": "Isto limpará permanentemente sua conta, todas as organizações que você possui e todos os dados dentro dessas organizações. Isso não pode ser desfeito.", + "deleteAccountConfirmString": "excluir conta", + "deleteAccountSuccess": "Conta excluída", + "deleteAccountSuccessMessage": "Sua conta foi excluída.", + "deleteAccountError": "Falha ao excluir conta", + "deleteAccountPreviewAccount": "Sua conta", + "deleteAccountPreviewOrgs": "Organizações que você possui (e todos os dados deles)", "orgMissing": "ID da Organização Ausente", "orgMissingMessage": "Não é possível regenerar o convite sem um ID de organização.", "accessUsersManage": "Gerir Utilizadores", @@ -461,6 +473,8 @@ "filterByApprovalState": "Filtrar por estado de aprovação", "approvalListEmpty": "Sem aprovações", "approvalState": "Estado de aprovação", + "approvalLoadMore": "Carregue mais", + "loadingApprovals": "Carregando aprovações", "approve": "Aprovar", "approved": "Aceito", "denied": "Negado", @@ -1017,6 +1031,7 @@ "pangolinSetup": "Configuração - Pangolin", "orgNameRequired": "O nome da organização é obrigatório", "orgIdRequired": "O ID da organização é obrigatório", + "orgIdMaxLength": "ID da organização deve ter no máximo 32 caracteres", "orgErrorCreate": "Ocorreu um erro ao criar a organização", "pageNotFound": "Página Não Encontrada", "pageNotFoundDescription": "Ops! A página que você está procurando não existe.", @@ -1169,7 +1184,8 @@ "actionViewLogs": "Visualizar registros", "noneSelected": "Nenhum selecionado", "orgNotFound2": "Nenhuma organização encontrada.", - "searchProgress": "Pesquisar...", + "searchPlaceholder": "Buscar...", + "emptySearchOptions": "Nenhuma opção encontrada", "create": "Criar", "orgs": "Organizações", "loginError": "Ocorreu um erro inesperado. Por favor, tente novamente.", @@ -1251,6 +1267,7 @@ "sidebarLogAndAnalytics": "Registo & Análise", "sidebarBluePrints": "Diagramas", "sidebarOrganization": "Organização", + "sidebarBillingAndLicenses": "Faturamento e Licenças", "sidebarLogsAnalytics": "Análises", "blueprints": "Diagramas", "blueprintsDescription": "Aplicar configurações declarativas e ver execuções anteriores", @@ -1412,6 +1429,7 @@ "billingSites": "sites", "billingUsers": "Utilizadores", "billingDomains": "Domínios", + "billingOrganizations": "Órgãos", "billingRemoteExitNodes": "Nós remotos", "billingNoLimitConfigured": "Nenhum limite configurado", "billingEstimatedPeriod": "Período Estimado de Cobrança", @@ -1454,6 +1472,7 @@ "failed": "Falhou", "createNewOrgDescription": "Crie uma nova organização", "organization": "Organização", + "primary": "Primário", "port": "Porta", "securityKeyManage": "Gerir chaves de segurança", "securityKeyDescription": "Adicionar ou remover chaves de segurança para autenticação sem senha", @@ -1916,6 +1935,9 @@ "authPageBrandingQuestionRemove": "Tem certeza de que deseja remover a marcação das Páginas de Autenticação?", "authPageBrandingDeleteConfirm": "Confirmar Exclusão de Marca", "brandingLogoURL": "URL do Logo", + "brandingLogoURLOrPath": "URL ou caminho do logotipo", + "brandingLogoPathDescription": "Insira uma URL ou um caminho local.", + "brandingLogoURLDescription": "Digite uma URL publicamente acessível para a sua imagem do logotipo.", "brandingPrimaryColor": "Cor Primária", "brandingLogoWidth": "Largura (px)", "brandingLogoHeight": "Altura (px)", From a18691011b63434ea0e75a9a8d3a7d746dcfe9c7 Mon Sep 17 00:00:00 2001 From: Owen Schwartz Date: Tue, 17 Feb 2026 21:56:20 -0800 Subject: [PATCH 12/15] New translations en-us.json (Russian) --- messages/ru-RU.json | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/messages/ru-RU.json b/messages/ru-RU.json index 4891e0a9..1ecf87d8 100644 --- a/messages/ru-RU.json +++ b/messages/ru-RU.json @@ -201,6 +201,7 @@ "protocolSelect": "Выберите протокол", "resourcePortNumber": "Номер порта", "resourcePortNumberDescription": "Внешний номер порта для проксирования запросов.", + "back": "Назад", "cancel": "Отмена", "resourceConfig": "Фрагменты конфигурации", "resourceConfigDescription": "Скопируйте и вставьте эти сниппеты для настройки TCP/UDP ресурса", @@ -246,6 +247,17 @@ "orgErrorDeleteMessage": "Произошла ошибка при удалении организации.", "orgDeleted": "Организация удалена", "orgDeletedMessage": "Организация и её данные были удалены.", + "deleteAccount": "Удалить аккаунт", + "deleteAccountDescription": "Окончательно удалить учетную запись, все организации, которые вы владеете, и все данные этих организаций не могут быть отменены.", + "deleteAccountButton": "Удалить аккаунт", + "deleteAccountConfirmTitle": "Удалить аккаунт", + "deleteAccountConfirmMessage": "Это очистит ваш аккаунт, все организации, которым вы владеете, и все данные этих организаций не могут быть отменены.", + "deleteAccountConfirmString": "удалить аккаунт", + "deleteAccountSuccess": "Учетная запись удалена", + "deleteAccountSuccessMessage": "Ваша учетная запись удалена.", + "deleteAccountError": "Не удалось удалить аккаунт", + "deleteAccountPreviewAccount": "Ваша учетная запись", + "deleteAccountPreviewOrgs": "Организации, которые вы владеете (и все их данные)", "orgMissing": "Отсутствует ID организации", "orgMissingMessage": "Невозможно восстановить приглашение без ID организации.", "accessUsersManage": "Управление пользователями", @@ -461,6 +473,8 @@ "filterByApprovalState": "Фильтр по состоянию утверждения", "approvalListEmpty": "Нет утверждений", "approvalState": "Состояние одобрения", + "approvalLoadMore": "Загрузить еще", + "loadingApprovals": "Загрузка утверждений", "approve": "Одобрить", "approved": "Одобрено", "denied": "Отказано", @@ -1017,6 +1031,7 @@ "pangolinSetup": "Настройка - Pangolin", "orgNameRequired": "Название организации обязательно", "orgIdRequired": "ID организации обязателен", + "orgIdMaxLength": "ID организации должен быть не более 32 символов", "orgErrorCreate": "Произошла ошибка при создании организации", "pageNotFound": "Страница не найдена", "pageNotFoundDescription": "Упс! Страница, которую вы ищете, не существует.", @@ -1169,7 +1184,8 @@ "actionViewLogs": "Просмотр журналов", "noneSelected": "Ничего не выбрано", "orgNotFound2": "Организации не найдены.", - "searchProgress": "Поиск...", + "searchPlaceholder": "Поиск...", + "emptySearchOptions": "Опции не найдены", "create": "Создать", "orgs": "Организации", "loginError": "Произошла непредвиденная ошибка. Пожалуйста, попробуйте еще раз.", @@ -1251,6 +1267,7 @@ "sidebarLogAndAnalytics": "Журнал и аналитика", "sidebarBluePrints": "Чертежи", "sidebarOrganization": "Организация", + "sidebarBillingAndLicenses": "Биллинг и лицензии", "sidebarLogsAnalytics": "Статистика", "blueprints": "Чертежи", "blueprintsDescription": "Применить декларирующие конфигурации и просмотреть предыдущие запуски", @@ -1412,6 +1429,7 @@ "billingSites": "Сайты", "billingUsers": "Пользователи", "billingDomains": "Домены", + "billingOrganizations": "Орги", "billingRemoteExitNodes": "Удаленные узлы", "billingNoLimitConfigured": "Лимит не установлен", "billingEstimatedPeriod": "Предполагаемый период выставления счетов", @@ -1454,6 +1472,7 @@ "failed": "Ошибка", "createNewOrgDescription": "Создать новую организацию", "organization": "Организация", + "primary": "Первичный", "port": "Порт", "securityKeyManage": "Управление ключами безопасности", "securityKeyDescription": "Добавить или удалить ключи безопасности для аутентификации без пароля", @@ -1916,6 +1935,9 @@ "authPageBrandingQuestionRemove": "Вы уверены, что хотите удалить брендирование для страниц аутентификации?", "authPageBrandingDeleteConfirm": "Подтвердить удаление брендирования", "brandingLogoURL": "URL логотипа", + "brandingLogoURLOrPath": "URL логотипа или путь", + "brandingLogoPathDescription": "Введите URL или локальный путь.", + "brandingLogoURLDescription": "Введите публичный URL для изображения вашего логотипа.", "brandingPrimaryColor": "Основной цвет", "brandingLogoWidth": "Ширина (px)", "brandingLogoHeight": "Высота (px)", From e28b361e050977bca8869af233896a9dc9f4f124 Mon Sep 17 00:00:00 2001 From: Owen Schwartz Date: Tue, 17 Feb 2026 21:56:22 -0800 Subject: [PATCH 13/15] New translations en-us.json (Turkish) --- messages/tr-TR.json | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/messages/tr-TR.json b/messages/tr-TR.json index 0c4c921d..7fb13369 100644 --- a/messages/tr-TR.json +++ b/messages/tr-TR.json @@ -201,6 +201,7 @@ "protocolSelect": "Bir protokol seçin", "resourcePortNumber": "Port Numarası", "resourcePortNumberDescription": "Vekil istekler için harici port numarası.", + "back": "Geri", "cancel": "İptal", "resourceConfig": "Yapılandırma Parçaları", "resourceConfigDescription": "TCP/UDP kaynağınızı kurmak için bu yapılandırma parçalarını kopyalayıp yapıştırın", @@ -246,6 +247,17 @@ "orgErrorDeleteMessage": "Organizasyon silinirken bir hata oluştu.", "orgDeleted": "Organizasyon silindi", "orgDeletedMessage": "Organizasyon ve verileri silindi.", + "deleteAccount": "Hesabı Sil", + "deleteAccountDescription": "Hesabınızı, sahip olduğunuz tüm organizasyonları ve bu organizasyonlardaki tüm verileri kalıcı olarak silin. Bu geri alınamaz.", + "deleteAccountButton": "Hesabı Sil", + "deleteAccountConfirmTitle": "Hesabı Sil", + "deleteAccountConfirmMessage": "Bu işlem, hesabınızı, sahip olduğunuz tüm organizasyonları ve bu organizasyonlardaki tüm verileri kalıcı olarak silecektir. Bu geri alınamaz.", + "deleteAccountConfirmString": "hesabı sil", + "deleteAccountSuccess": "Hesap Silindi", + "deleteAccountSuccessMessage": "Hesabınız silindi.", + "deleteAccountError": "Hesabı silme başarısız oldu", + "deleteAccountPreviewAccount": "Hesabınız", + "deleteAccountPreviewOrgs": "Sahip olduğunuz organizasyonlar (ve tüm verileri)", "orgMissing": "Organizasyon Kimliği Eksik", "orgMissingMessage": "Organizasyon kimliği olmadan daveti yeniden oluşturmanız mümkün değildir.", "accessUsersManage": "Kullanıcıları Yönet", @@ -461,6 +473,8 @@ "filterByApprovalState": "Onay Durumuna Göre Filtrele", "approvalListEmpty": "Onay yok", "approvalState": "Onay Durumu", + "approvalLoadMore": "Daha fazla yükle", + "loadingApprovals": "Onaylar Yükleniyor", "approve": "Onayla", "approved": "Onaylandı", "denied": "Reddedildi", @@ -1017,6 +1031,7 @@ "pangolinSetup": "Kurulum - Pangolin", "orgNameRequired": "Kuruluş adı gereklidir", "orgIdRequired": "Kuruluş ID gereklidir", + "orgIdMaxLength": "Organizasyon kimliği en fazla 32 karakter olmalıdır", "orgErrorCreate": "Kuruluş oluşturulurken bir hata oluştu", "pageNotFound": "Sayfa Bulunamadı", "pageNotFoundDescription": "Oops! Aradığınız sayfa mevcut değil.", @@ -1169,7 +1184,8 @@ "actionViewLogs": "Kayıtları Görüntüle", "noneSelected": "Hiçbiri seçili değil", "orgNotFound2": "Hiçbir organizasyon bulunamadı.", - "searchProgress": "Ara...", + "searchPlaceholder": "Ara...", + "emptySearchOptions": "Seçenek bulunamadı", "create": "Oluştur", "orgs": "Organizasyonlar", "loginError": "Beklenmeyen bir hata oluştu. Lütfen tekrar deneyin.", @@ -1251,6 +1267,7 @@ "sidebarLogAndAnalytics": "Kayıt & Analiz", "sidebarBluePrints": "Planlar", "sidebarOrganization": "Organizasyon", + "sidebarBillingAndLicenses": "Faturalandırma & Lisanslar", "sidebarLogsAnalytics": "Analitik", "blueprints": "Planlar", "blueprintsDescription": "Deklaratif yapılandırmaları uygulayın ve önceki çalışmaları görüntüleyin", @@ -1412,6 +1429,7 @@ "billingSites": "Siteler", "billingUsers": "Kullanıcılar", "billingDomains": "Alan Adları", + "billingOrganizations": "Organizasyonlar", "billingRemoteExitNodes": "Uzak Düğümler", "billingNoLimitConfigured": "Hiçbir limit yapılandırılmadı", "billingEstimatedPeriod": "Tahmini Fatura Dönemi", @@ -1454,6 +1472,7 @@ "failed": "Başarısız", "createNewOrgDescription": "Yeni bir organizasyon oluşturun", "organization": "Kuruluş", + "primary": "Birincil", "port": "Bağlantı Noktası", "securityKeyManage": "Güvenlik Anahtarlarını Yönet", "securityKeyDescription": "Şifresiz kimlik doğrulama için güvenlik anahtarları ekleyin veya kaldırın", @@ -1916,6 +1935,9 @@ "authPageBrandingQuestionRemove": "Kimlik Sayfaları için markayı kaldırmak istediğinizden emin misiniz?", "authPageBrandingDeleteConfirm": "Markayı Silmeyi Onayla", "brandingLogoURL": "Logo URL", + "brandingLogoURLOrPath": "Logo URL veya Yol", + "brandingLogoPathDescription": "Bir URL veya yerel bir yol girin.", + "brandingLogoURLDescription": "Logo resminiz için genel olarak erişilebilir bir URL girin.", "brandingPrimaryColor": "Ana Renk", "brandingLogoWidth": "Genişlik (px)", "brandingLogoHeight": "Yükseklik (px)", From c6bca4e2abbb6869b97f35bd32c4ba45b9db539e Mon Sep 17 00:00:00 2001 From: Owen Schwartz Date: Tue, 17 Feb 2026 21:56:23 -0800 Subject: [PATCH 14/15] New translations en-us.json (Chinese Simplified) --- messages/zh-CN.json | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/messages/zh-CN.json b/messages/zh-CN.json index 7312ba32..1542bfcd 100644 --- a/messages/zh-CN.json +++ b/messages/zh-CN.json @@ -201,6 +201,7 @@ "protocolSelect": "选择协议", "resourcePortNumber": "端口号", "resourcePortNumberDescription": "代理请求的外部端口号。", + "back": "后退", "cancel": "取消", "resourceConfig": "配置片段", "resourceConfigDescription": "复制并粘贴这些配置片段以设置 TCP/UDP 资源", @@ -246,6 +247,17 @@ "orgErrorDeleteMessage": "删除组织时出错。", "orgDeleted": "组织已删除", "orgDeletedMessage": "组织及其数据已被删除。", + "deleteAccount": "删除帐户", + "deleteAccountDescription": "永久删除您的帐户、您拥有的所有组织以及这些组织中的所有数据。此操作无法撤消。", + "deleteAccountButton": "删除帐户", + "deleteAccountConfirmTitle": "删除帐户", + "deleteAccountConfirmMessage": "这将永久擦除您的帐户、您拥有的所有组织以及这些组织中的所有数据。这不能撤消。", + "deleteAccountConfirmString": "删除帐户", + "deleteAccountSuccess": "账户已删除", + "deleteAccountSuccessMessage": "您的帐户已被删除。", + "deleteAccountError": "删除帐户失败", + "deleteAccountPreviewAccount": "您的帐户", + "deleteAccountPreviewOrgs": "您拥有的组织 (和所有数据)", "orgMissing": "缺少组织 ID", "orgMissingMessage": "没有组织ID,无法重新生成邀请。", "accessUsersManage": "管理用户", @@ -461,6 +473,8 @@ "filterByApprovalState": "按批准状态过滤", "approvalListEmpty": "无批准", "approvalState": "审批状态", + "approvalLoadMore": "加载更多", + "loadingApprovals": "正在加载批准", "approve": "批准", "approved": "已批准", "denied": "被拒绝", @@ -1017,6 +1031,7 @@ "pangolinSetup": "认证 - Pangolin", "orgNameRequired": "组织名称是必需的", "orgIdRequired": "组织ID是必需的", + "orgIdMaxLength": "组织 ID 必须至少 32 个字符", "orgErrorCreate": "创建组织时出错", "pageNotFound": "找不到页面", "pageNotFoundDescription": "哎呀!您正在查找的页面不存在。", @@ -1169,7 +1184,8 @@ "actionViewLogs": "查看日志", "noneSelected": "未选择", "orgNotFound2": "未找到组织。", - "searchProgress": "搜索中...", + "searchPlaceholder": "搜索...", + "emptySearchOptions": "未找到选项", "create": "创建", "orgs": "组织", "loginError": "发生意外错误。请重试。", @@ -1251,6 +1267,7 @@ "sidebarLogAndAnalytics": "日志与分析", "sidebarBluePrints": "蓝图", "sidebarOrganization": "组织", + "sidebarBillingAndLicenses": "帐单和许可证", "sidebarLogsAnalytics": "分析", "blueprints": "蓝图", "blueprintsDescription": "应用声明配置并查看先前运行的", @@ -1412,6 +1429,7 @@ "billingSites": "站点", "billingUsers": "用户", "billingDomains": "域", + "billingOrganizations": "球队", "billingRemoteExitNodes": "远程节点", "billingNoLimitConfigured": "未配置限制", "billingEstimatedPeriod": "估计结算周期", @@ -1454,6 +1472,7 @@ "failed": "失败", "createNewOrgDescription": "创建一个新组织", "organization": "组织", + "primary": "主要的", "port": "端口", "securityKeyManage": "管理安全密钥", "securityKeyDescription": "添加或删除用于无密码认证的安全密钥", @@ -1916,6 +1935,9 @@ "authPageBrandingQuestionRemove": "您确定要移除授权页面的品牌吗?", "authPageBrandingDeleteConfirm": "确认删除品牌", "brandingLogoURL": "Logo URL", + "brandingLogoURLOrPath": "徽标URL或路径", + "brandingLogoPathDescription": "输入网址或本地路径。", + "brandingLogoURLDescription": "请在您的徽标图片中输入一个可公开访问的 URL。", "brandingPrimaryColor": "主要颜色", "brandingLogoWidth": "宽度(px)", "brandingLogoHeight": "高度(px)", From fa4f7e4ac29e7010ef6dc73f49261a34978b15ed Mon Sep 17 00:00:00 2001 From: Owen Schwartz Date: Tue, 17 Feb 2026 21:56:24 -0800 Subject: [PATCH 15/15] New translations en-us.json (Norwegian Bokmal) --- messages/nb-NO.json | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/messages/nb-NO.json b/messages/nb-NO.json index afb9af38..f86c556a 100644 --- a/messages/nb-NO.json +++ b/messages/nb-NO.json @@ -201,6 +201,7 @@ "protocolSelect": "Velg en protokoll", "resourcePortNumber": "Portnummer", "resourcePortNumberDescription": "Det eksterne portnummeret for proxy forespørsler.", + "back": "Tilbake", "cancel": "Avbryt", "resourceConfig": "Konfigurasjonsutdrag", "resourceConfigDescription": "Kopier og lim inn disse konfigurasjons-øyeblikkene for å sette opp TCP/UDP ressursen", @@ -246,6 +247,17 @@ "orgErrorDeleteMessage": "Det oppsto en feil under sletting av organisasjonen.", "orgDeleted": "Organisasjon slettet", "orgDeletedMessage": "Organisasjonen og tilhørende data er slettet.", + "deleteAccount": "Slett konto", + "deleteAccountDescription": "Slett kontoen din permanent, alle organisasjoner du eier, og alle data i disse organisasjonene. Dette kan ikke angres.", + "deleteAccountButton": "Slett konto", + "deleteAccountConfirmTitle": "Slett konto", + "deleteAccountConfirmMessage": "Dette vil slette kontoen din, alle organisasjoner du eier og alle data i disse organisasjonene. Dette kan ikke gjøres om.", + "deleteAccountConfirmString": "Slett konto", + "deleteAccountSuccess": "Kontoen er slettet", + "deleteAccountSuccessMessage": "Kontoen din er slettet.", + "deleteAccountError": "Kunne ikke slette konto", + "deleteAccountPreviewAccount": "Din konto", + "deleteAccountPreviewOrgs": "Organisasjoner du eier (og alle deres data)", "orgMissing": "Organisasjons-ID Mangler", "orgMissingMessage": "Kan ikke regenerere invitasjon uten en organisasjons-ID.", "accessUsersManage": "Administrer brukere", @@ -461,6 +473,8 @@ "filterByApprovalState": "Filtrer etter godkjenningsstatus", "approvalListEmpty": "Ingen godkjenninger", "approvalState": "Godkjennings tilstand", + "approvalLoadMore": "Last mer", + "loadingApprovals": "Laster inn godkjenninger", "approve": "Godkjenn", "approved": "Godkjent", "denied": "Avvist", @@ -1017,6 +1031,7 @@ "pangolinSetup": "Oppsett - Pangolin", "orgNameRequired": "Organisasjonsnavn er påkrevd", "orgIdRequired": "Organisasjons-ID er påkrevd", + "orgIdMaxLength": "Organisasjons-ID må maksimalt være 32 tegn", "orgErrorCreate": "En feil oppstod under oppretting av organisasjon", "pageNotFound": "Siden ble ikke funnet", "pageNotFoundDescription": "Oops! Siden du leter etter finnes ikke.", @@ -1169,7 +1184,8 @@ "actionViewLogs": "Vis logger", "noneSelected": "Ingen valgt", "orgNotFound2": "Ingen organisasjoner funnet.", - "searchProgress": "Søker...", + "searchPlaceholder": "Søk...", + "emptySearchOptions": "Ingen valg funnet", "create": "Opprett", "orgs": "Organisasjoner", "loginError": "En uventet feil oppstod. Vennligst prøv igjen.", @@ -1251,6 +1267,7 @@ "sidebarLogAndAnalytics": "Logg og analyser", "sidebarBluePrints": "Tegninger", "sidebarOrganization": "Organisasjon", + "sidebarBillingAndLicenses": "Fakturering & lisenser", "sidebarLogsAnalytics": "Analyser", "blueprints": "Tegninger", "blueprintsDescription": "Bruk deklarative konfigurasjoner og vis tidligere kjøringer", @@ -1412,6 +1429,7 @@ "billingSites": "Områder", "billingUsers": "Brukere", "billingDomains": "Domener", + "billingOrganizations": "Orger", "billingRemoteExitNodes": "Eksterne Noder", "billingNoLimitConfigured": "Ingen grense konfigurert", "billingEstimatedPeriod": "Estimert faktureringsperiode", @@ -1454,6 +1472,7 @@ "failed": "Mislyktes", "createNewOrgDescription": "Opprett en ny organisasjon", "organization": "Organisasjon", + "primary": "Primær", "port": "Port", "securityKeyManage": "Administrer sikkerhetsnøkler", "securityKeyDescription": "Legg til eller fjern sikkerhetsnøkler for passordløs autentisering", @@ -1916,6 +1935,9 @@ "authPageBrandingQuestionRemove": "Er du sikker på at du vil fjerne merkevarebyggingen for autentiseringssider?", "authPageBrandingDeleteConfirm": "Bekreft sletting av merkevarebygging", "brandingLogoURL": "Logo URL", + "brandingLogoURLOrPath": "Logoen URL eller sti", + "brandingLogoPathDescription": "Skriv inn en URL eller en lokal bane.", + "brandingLogoURLDescription": "Skriv inn en offentlig tilgjengelig nettadresse til din logobilde.", "brandingPrimaryColor": "Primærfarge", "brandingLogoWidth": "Bredde (px)", "brandingLogoHeight": "Høyde (px)",