Merge branch 'dev' into declare

This commit is contained in:
Owen
2025-09-11 21:24:27 -07:00
22 changed files with 486 additions and 113 deletions

View File

@@ -1504,5 +1504,18 @@
"internationaldomaindetected": "International Domain Detected", "internationaldomaindetected": "International Domain Detected",
"willbestoredas": "Will be stored as:", "willbestoredas": "Will be stored as:",
"idpGoogleDescription": "Google OAuth2/OIDC provider", "idpGoogleDescription": "Google OAuth2/OIDC provider",
"idpAzureDescription": "Microsoft Azure OAuth2/OIDC provider" "idpAzureDescription": "Microsoft Azure OAuth2/OIDC provider",
"domainPickerProvidedDomain": "Provided Domain",
"domainPickerFreeProvidedDomain": "Free Provided Domain",
"domainPickerVerified": "Verified",
"domainPickerUnverified": "Unverified",
"domainPickerInvalidSubdomainStructure": "This subdomain contains invalid characters or structure. It will be sanitized automatically when you save.",
"domainPickerError": "Error",
"domainPickerErrorLoadDomains": "Failed to load organization domains",
"domainPickerErrorCheckAvailability": "Failed to check domain availability",
"domainPickerInvalidSubdomain": "Invalid subdomain",
"domainPickerInvalidSubdomainRemoved": "The input \"{sub}\" was removed because it's not valid.",
"domainPickerInvalidSubdomainCannotMakeValid": "\"{sub}\" could not be made valid for {domain}.",
"domainPickerSubdomainSanitized": "Subdomain sanitized",
"domainPickerSubdomainCorrected": "\"{sub}\" was corrected to \"{sanitized}\""
} }

View File

@@ -1504,5 +1504,18 @@
"internationaldomaindetected": "International Domain Detected", "internationaldomaindetected": "International Domain Detected",
"willbestoredas": "Will be stored as:", "willbestoredas": "Will be stored as:",
"idpGoogleDescription": "Google OAuth2/OIDC provider", "idpGoogleDescription": "Google OAuth2/OIDC provider",
"idpAzureDescription": "Microsoft Azure OAuth2/OIDC provider" "idpAzureDescription": "Microsoft Azure OAuth2/OIDC provider",
"domainPickerProvidedDomain": "Provided Domain",
"domainPickerFreeProvidedDomain": "Free Provided Domain",
"domainPickerVerified": "Verified",
"domainPickerUnverified": "Unverified",
"domainPickerInvalidSubdomainStructure": "This subdomain contains invalid characters or structure. It will be sanitized automatically when you save.",
"domainPickerError": "Error",
"domainPickerErrorLoadDomains": "Failed to load organization domains",
"domainPickerErrorCheckAvailability": "Failed to check domain availability",
"domainPickerInvalidSubdomain": "Invalid subdomain",
"domainPickerInvalidSubdomainRemoved": "The input \"{sub}\" was removed because it's not valid.",
"domainPickerInvalidSubdomainCannotMakeValid": "\"{sub}\" could not be made valid for {domain}.",
"domainPickerSubdomainSanitized": "Subdomain sanitized",
"domainPickerSubdomainCorrected": "\"{sub}\" was corrected to \"{sanitized}\""
} }

View File

@@ -454,8 +454,8 @@
"accessRoleErrorAddDescription": "Beim Hinzufügen des Benutzers zur Rolle ist ein Fehler aufgetreten.", "accessRoleErrorAddDescription": "Beim Hinzufügen des Benutzers zur Rolle ist ein Fehler aufgetreten.",
"userSaved": "Benutzer gespeichert", "userSaved": "Benutzer gespeichert",
"userSavedDescription": "Der Benutzer wurde aktualisiert.", "userSavedDescription": "Der Benutzer wurde aktualisiert.",
"autoProvisioned": "Auto Provisioned", "autoProvisioned": "Automatisch vorgesehen",
"autoProvisionedDescription": "Allow this user to be automatically managed by identity provider", "autoProvisionedDescription": "Erlaube diesem Benutzer die automatische Verwaltung durch Identitätsanbieter",
"accessControlsDescription": "Verwalten Sie, worauf dieser Benutzer in der Organisation zugreifen und was er tun kann", "accessControlsDescription": "Verwalten Sie, worauf dieser Benutzer in der Organisation zugreifen und was er tun kann",
"accessControlsSubmit": "Zugriffskontrollen speichern", "accessControlsSubmit": "Zugriffskontrollen speichern",
"roles": "Rollen", "roles": "Rollen",
@@ -986,8 +986,8 @@
"licenseTierProfessionalRequired": "Professional Edition erforderlich", "licenseTierProfessionalRequired": "Professional Edition erforderlich",
"licenseTierProfessionalRequiredDescription": "Diese Funktion ist nur in der Professional Edition verfügbar.", "licenseTierProfessionalRequiredDescription": "Diese Funktion ist nur in der Professional Edition verfügbar.",
"actionGetOrg": "Organisation abrufen", "actionGetOrg": "Organisation abrufen",
"updateOrgUser": "Update Org User", "updateOrgUser": "Org Benutzer aktualisieren",
"createOrgUser": "Create Org User", "createOrgUser": "Org Benutzer erstellen",
"actionUpdateOrg": "Organisation aktualisieren", "actionUpdateOrg": "Organisation aktualisieren",
"actionUpdateUser": "Benutzer aktualisieren", "actionUpdateUser": "Benutzer aktualisieren",
"actionGetUser": "Benutzer abrufen", "actionGetUser": "Benutzer abrufen",
@@ -1503,6 +1503,19 @@
}, },
"internationaldomaindetected": "Internationale Domain erkannt", "internationaldomaindetected": "Internationale Domain erkannt",
"willbestoredas": "Wird gespeichert als:", "willbestoredas": "Wird gespeichert als:",
"idpGoogleDescription": "Google OAuth2/OIDC provider", "idpGoogleDescription": "Google OAuth2/OIDC Provider",
"idpAzureDescription": "Microsoft Azure OAuth2/OIDC provider" "idpAzureDescription": "Microsoft Azure OAuth2/OIDC provider",
"domainPickerProvidedDomain": "Angegebene Domain",
"domainPickerFreeProvidedDomain": "Kostenlose Domain",
"domainPickerVerified": "Verifiziert",
"domainPickerUnverified": "Nicht verifiziert",
"domainPickerInvalidSubdomainStructure": "Diese Subdomain enthält ungültige Zeichen oder Struktur. Sie wird beim Speichern automatisch bereinigt.",
"domainPickerError": "Fehler",
"domainPickerErrorLoadDomains": "Fehler beim Laden der Organisations-Domänen",
"domainPickerErrorCheckAvailability": "Fehler beim Prüfen der Domain-Verfügbarkeit",
"domainPickerInvalidSubdomain": "Ungültige Subdomain",
"domainPickerInvalidSubdomainRemoved": "Die Eingabe \"{sub}\" wurde entfernt, weil sie nicht gültig ist.",
"domainPickerInvalidSubdomainCannotMakeValid": "\"{sub}\" konnte nicht für {domain} gültig gemacht werden.",
"domainPickerSubdomainSanitized": "Subdomain bereinigt",
"domainPickerSubdomainCorrected": "\"{sub}\" wurde korrigiert zu \"{sanitized}\""
} }

View File

@@ -1507,6 +1507,19 @@
"idpGoogleDescription": "Google OAuth2/OIDC provider", "idpGoogleDescription": "Google OAuth2/OIDC provider",
"idpAzureDescription": "Microsoft Azure OAuth2/OIDC provider", "idpAzureDescription": "Microsoft Azure OAuth2/OIDC provider",
"customHeaders": "Custom Headers", "customHeaders": "Custom Headers",
"customHeadersDescription": "Headers new line separated: Header-Name: value", "customHeadersDescription": "Headers new line separated: Header-Name: value.",
"headersValidationError": "Headers must be in the format: Header-Name: value" "headersValidationError": "Headers must be in the format: Header-Name: value.",
} "domainPickerProvidedDomain": "Provided Domain",
"domainPickerFreeProvidedDomain": "Free Provided Domain",
"domainPickerVerified": "Verified",
"domainPickerUnverified": "Unverified",
"domainPickerInvalidSubdomainStructure": "This subdomain contains invalid characters or structure. It will be sanitized automatically when you save.",
"domainPickerError": "Error",
"domainPickerErrorLoadDomains": "Failed to load organization domains",
"domainPickerErrorCheckAvailability": "Failed to check domain availability",
"domainPickerInvalidSubdomain": "Invalid subdomain",
"domainPickerInvalidSubdomainRemoved": "The input \"{sub}\" was removed because it's not valid.",
"domainPickerInvalidSubdomainCannotMakeValid": "\"{sub}\" could not be made valid for {domain}.",
"domainPickerSubdomainSanitized": "Subdomain sanitized",
"domainPickerSubdomainCorrected": "\"{sub}\" was corrected to \"{sanitized}\""
}

View File

@@ -454,8 +454,8 @@
"accessRoleErrorAddDescription": "Ocurrió un error mientras se añadía el usuario al rol.", "accessRoleErrorAddDescription": "Ocurrió un error mientras se añadía el usuario al rol.",
"userSaved": "Usuario guardado", "userSaved": "Usuario guardado",
"userSavedDescription": "El usuario ha sido actualizado.", "userSavedDescription": "El usuario ha sido actualizado.",
"autoProvisioned": "Auto Provisioned", "autoProvisioned": "Auto asegurado",
"autoProvisionedDescription": "Allow this user to be automatically managed by identity provider", "autoProvisionedDescription": "Permitir a este usuario ser administrado automáticamente por el proveedor de identidad",
"accessControlsDescription": "Administrar lo que este usuario puede acceder y hacer en la organización", "accessControlsDescription": "Administrar lo que este usuario puede acceder y hacer en la organización",
"accessControlsSubmit": "Guardar controles de acceso", "accessControlsSubmit": "Guardar controles de acceso",
"roles": "Roles", "roles": "Roles",
@@ -986,8 +986,8 @@
"licenseTierProfessionalRequired": "Edición Profesional requerida", "licenseTierProfessionalRequired": "Edición Profesional requerida",
"licenseTierProfessionalRequiredDescription": "Esta característica sólo está disponible en la Edición Profesional.", "licenseTierProfessionalRequiredDescription": "Esta característica sólo está disponible en la Edición Profesional.",
"actionGetOrg": "Obtener organización", "actionGetOrg": "Obtener organización",
"updateOrgUser": "Update Org User", "updateOrgUser": "Actualizar usuario Org",
"createOrgUser": "Create Org User", "createOrgUser": "Crear usuario Org",
"actionUpdateOrg": "Actualizar organización", "actionUpdateOrg": "Actualizar organización",
"actionUpdateUser": "Actualizar usuario", "actionUpdateUser": "Actualizar usuario",
"actionGetUser": "Obtener usuario", "actionGetUser": "Obtener usuario",
@@ -1240,7 +1240,7 @@
"newtUpdateAvailable": "Nueva actualización disponible", "newtUpdateAvailable": "Nueva actualización disponible",
"newtUpdateAvailableInfo": "Hay una nueva versión de Newt disponible. Actualice a la última versión para la mejor experiencia.", "newtUpdateAvailableInfo": "Hay una nueva versión de Newt disponible. Actualice a la última versión para la mejor experiencia.",
"domainPickerEnterDomain": "Dominio", "domainPickerEnterDomain": "Dominio",
"domainPickerPlaceholder": "myapp.example.com", "domainPickerPlaceholder": "miapp.ejemplo.com",
"domainPickerDescription": "Ingresa el dominio completo del recurso para ver las opciones disponibles.", "domainPickerDescription": "Ingresa el dominio completo del recurso para ver las opciones disponibles.",
"domainPickerDescriptionSaas": "Ingresa un dominio completo, subdominio o simplemente un nombre para ver las opciones disponibles", "domainPickerDescriptionSaas": "Ingresa un dominio completo, subdominio o simplemente un nombre para ver las opciones disponibles",
"domainPickerTabAll": "Todo", "domainPickerTabAll": "Todo",
@@ -1503,6 +1503,19 @@
}, },
"internationaldomaindetected": "Dominio Internacional detectado", "internationaldomaindetected": "Dominio Internacional detectado",
"willbestoredas": "Se almacenará como:", "willbestoredas": "Se almacenará como:",
"idpGoogleDescription": "Google OAuth2/OIDC provider", "idpGoogleDescription": "Proveedor OAuth2/OIDC de Google",
"idpAzureDescription": "Microsoft Azure OAuth2/OIDC provider" "idpAzureDescription": "Microsoft Azure OAuth2/OIDC provider",
"domainPickerProvidedDomain": "Dominio proporcionado",
"domainPickerFreeProvidedDomain": "Dominio proporcionado gratis",
"domainPickerVerified": "Verificado",
"domainPickerUnverified": "Sin verificar",
"domainPickerInvalidSubdomainStructure": "Este subdominio contiene caracteres o estructura no válidos. Se limpiará automáticamente al guardar.",
"domainPickerError": "Error",
"domainPickerErrorLoadDomains": "Error al cargar los dominios de la organización",
"domainPickerErrorCheckAvailability": "No se pudo comprobar la disponibilidad del dominio",
"domainPickerInvalidSubdomain": "Subdominio inválido",
"domainPickerInvalidSubdomainRemoved": "La entrada \"{sub}\" fue eliminada porque no es válida.",
"domainPickerInvalidSubdomainCannotMakeValid": "No se ha podido hacer válido \"{sub}\" para {domain}.",
"domainPickerSubdomainSanitized": "Subdominio saneado",
"domainPickerSubdomainCorrected": "\"{sub}\" fue corregido a \"{sanitized}\""
} }

View File

@@ -454,8 +454,8 @@
"accessRoleErrorAddDescription": "Une erreur s'est produite lors de l'ajout de l'utilisateur au rôle.", "accessRoleErrorAddDescription": "Une erreur s'est produite lors de l'ajout de l'utilisateur au rôle.",
"userSaved": "Utilisateur enregistré", "userSaved": "Utilisateur enregistré",
"userSavedDescription": "L'utilisateur a été mis à jour.", "userSavedDescription": "L'utilisateur a été mis à jour.",
"autoProvisioned": "Auto Provisioned", "autoProvisioned": "Auto-provision",
"autoProvisionedDescription": "Allow this user to be automatically managed by identity provider", "autoProvisionedDescription": "Permettre à cet utilisateur d'être géré automatiquement par le fournisseur d'identité",
"accessControlsDescription": "Gérer ce que cet utilisateur peut accéder et faire dans l'organisation", "accessControlsDescription": "Gérer ce que cet utilisateur peut accéder et faire dans l'organisation",
"accessControlsSubmit": "Enregistrer les contrôles d'accès", "accessControlsSubmit": "Enregistrer les contrôles d'accès",
"roles": "Rôles", "roles": "Rôles",
@@ -986,8 +986,8 @@
"licenseTierProfessionalRequired": "Édition Professionnelle Requise", "licenseTierProfessionalRequired": "Édition Professionnelle Requise",
"licenseTierProfessionalRequiredDescription": "Cette fonctionnalité n'est disponible que dans l'Édition Professionnelle.", "licenseTierProfessionalRequiredDescription": "Cette fonctionnalité n'est disponible que dans l'Édition Professionnelle.",
"actionGetOrg": "Obtenir l'organisation", "actionGetOrg": "Obtenir l'organisation",
"updateOrgUser": "Update Org User", "updateOrgUser": "Mise à jour de l'utilisateur Org",
"createOrgUser": "Create Org User", "createOrgUser": "Créer un utilisateur Org",
"actionUpdateOrg": "Mettre à jour l'organisation", "actionUpdateOrg": "Mettre à jour l'organisation",
"actionUpdateUser": "Mettre à jour l'utilisateur", "actionUpdateUser": "Mettre à jour l'utilisateur",
"actionGetUser": "Obtenir l'utilisateur", "actionGetUser": "Obtenir l'utilisateur",
@@ -1240,7 +1240,7 @@
"newtUpdateAvailable": "Mise à jour disponible", "newtUpdateAvailable": "Mise à jour disponible",
"newtUpdateAvailableInfo": "Une nouvelle version de Newt est disponible. Veuillez mettre à jour vers la dernière version pour une meilleure expérience.", "newtUpdateAvailableInfo": "Une nouvelle version de Newt est disponible. Veuillez mettre à jour vers la dernière version pour une meilleure expérience.",
"domainPickerEnterDomain": "Domaine", "domainPickerEnterDomain": "Domaine",
"domainPickerPlaceholder": "myapp.example.com", "domainPickerPlaceholder": "monapp.exemple.com",
"domainPickerDescription": "Entrez le domaine complet de la ressource pour voir les options disponibles.", "domainPickerDescription": "Entrez le domaine complet de la ressource pour voir les options disponibles.",
"domainPickerDescriptionSaas": "Entrez un domaine complet, un sous-domaine ou juste un nom pour voir les options disponibles", "domainPickerDescriptionSaas": "Entrez un domaine complet, un sous-domaine ou juste un nom pour voir les options disponibles",
"domainPickerTabAll": "Tous", "domainPickerTabAll": "Tous",
@@ -1503,6 +1503,19 @@
}, },
"internationaldomaindetected": "Domaine international détecté", "internationaldomaindetected": "Domaine international détecté",
"willbestoredas": "Sera stocké comme :", "willbestoredas": "Sera stocké comme :",
"idpGoogleDescription": "Google OAuth2/OIDC provider", "idpGoogleDescription": "Fournisseur Google OAuth2/OIDC",
"idpAzureDescription": "Microsoft Azure OAuth2/OIDC provider" "idpAzureDescription": "Microsoft Azure OAuth2/OIDC provider",
"domainPickerProvidedDomain": "Domaine fourni",
"domainPickerFreeProvidedDomain": "Domaine fourni gratuitement",
"domainPickerVerified": "Vérifié",
"domainPickerUnverified": "Non vérifié",
"domainPickerInvalidSubdomainStructure": "Ce sous-domaine contient des caractères ou une structure non valide. Il sera automatiquement nettoyé lorsque vous enregistrez.",
"domainPickerError": "Erreur",
"domainPickerErrorLoadDomains": "Impossible de charger les domaines de l'organisation",
"domainPickerErrorCheckAvailability": "Impossible de vérifier la disponibilité du domaine",
"domainPickerInvalidSubdomain": "Sous-domaine invalide",
"domainPickerInvalidSubdomainRemoved": "L'entrée \"{sub}\" a été supprimée car elle n'est pas valide.",
"domainPickerInvalidSubdomainCannotMakeValid": "La «{sub}» n'a pas pu être validée pour {domain}.",
"domainPickerSubdomainSanitized": "Sous-domaine nettoyé",
"domainPickerSubdomainCorrected": "\"{sub}\" a été corrigé à \"{sanitized}\""
} }

View File

@@ -455,7 +455,7 @@
"userSaved": "Utente salvato", "userSaved": "Utente salvato",
"userSavedDescription": "L'utente è stato aggiornato.", "userSavedDescription": "L'utente è stato aggiornato.",
"autoProvisioned": "Auto Provisioned", "autoProvisioned": "Auto Provisioned",
"autoProvisionedDescription": "Allow this user to be automatically managed by identity provider", "autoProvisionedDescription": "Permetti a questo utente di essere gestito automaticamente dal provider di identità",
"accessControlsDescription": "Gestisci cosa questo utente può accedere e fare nell'organizzazione", "accessControlsDescription": "Gestisci cosa questo utente può accedere e fare nell'organizzazione",
"accessControlsSubmit": "Salva Controlli di Accesso", "accessControlsSubmit": "Salva Controlli di Accesso",
"roles": "Ruoli", "roles": "Ruoli",
@@ -986,8 +986,8 @@
"licenseTierProfessionalRequired": "Edizione Professional Richiesta", "licenseTierProfessionalRequired": "Edizione Professional Richiesta",
"licenseTierProfessionalRequiredDescription": "Questa funzionalità è disponibile solo nell'Edizione Professional.", "licenseTierProfessionalRequiredDescription": "Questa funzionalità è disponibile solo nell'Edizione Professional.",
"actionGetOrg": "Ottieni Organizzazione", "actionGetOrg": "Ottieni Organizzazione",
"updateOrgUser": "Update Org User", "updateOrgUser": "Aggiorna Utente Org",
"createOrgUser": "Create Org User", "createOrgUser": "Crea Utente Org",
"actionUpdateOrg": "Aggiorna Organizzazione", "actionUpdateOrg": "Aggiorna Organizzazione",
"actionUpdateUser": "Aggiorna Utente", "actionUpdateUser": "Aggiorna Utente",
"actionGetUser": "Ottieni Utente", "actionGetUser": "Ottieni Utente",
@@ -1504,5 +1504,18 @@
"internationaldomaindetected": "Dominio Internazionale Rilevato", "internationaldomaindetected": "Dominio Internazionale Rilevato",
"willbestoredas": "Verrà conservato come:", "willbestoredas": "Verrà conservato come:",
"idpGoogleDescription": "Google OAuth2/OIDC provider", "idpGoogleDescription": "Google OAuth2/OIDC provider",
"idpAzureDescription": "Microsoft Azure OAuth2/OIDC provider" "idpAzureDescription": "Microsoft Azure OAuth2/OIDC provider",
"domainPickerProvidedDomain": "Dominio Fornito",
"domainPickerFreeProvidedDomain": "Dominio Fornito Gratuito",
"domainPickerVerified": "Verificato",
"domainPickerUnverified": "Non Verificato",
"domainPickerInvalidSubdomainStructure": "Questo sottodominio contiene caratteri o struttura non validi. Sarà sanificato automaticamente quando si salva.",
"domainPickerError": "Errore",
"domainPickerErrorLoadDomains": "Impossibile caricare i domini dell'organizzazione",
"domainPickerErrorCheckAvailability": "Impossibile verificare la disponibilità del dominio",
"domainPickerInvalidSubdomain": "Sottodominio non valido",
"domainPickerInvalidSubdomainRemoved": "L'input \"{sub}\" è stato rimosso perché non è valido.",
"domainPickerInvalidSubdomainCannotMakeValid": "\"{sub}\" non può essere reso valido per {domain}.",
"domainPickerSubdomainSanitized": "Sottodominio igienizzato",
"domainPickerSubdomainCorrected": "\"{sub}\" è stato corretto in \"{sanitized}\""
} }

View File

@@ -454,8 +454,8 @@
"accessRoleErrorAddDescription": "사용자를 역할에 추가하는 동안 오류가 발생했습니다.", "accessRoleErrorAddDescription": "사용자를 역할에 추가하는 동안 오류가 발생했습니다.",
"userSaved": "사용자 저장됨", "userSaved": "사용자 저장됨",
"userSavedDescription": "사용자가 업데이트되었습니다.", "userSavedDescription": "사용자가 업데이트되었습니다.",
"autoProvisioned": "Auto Provisioned", "autoProvisioned": "자동 프로비저닝됨",
"autoProvisionedDescription": "Allow this user to be automatically managed by identity provider", "autoProvisionedDescription": "이 사용자가 ID 공급자에 의해 자동으로 관리될 수 있도록 허용합니다",
"accessControlsDescription": "이 사용자가 조직에서 접근하고 수행할 수 있는 작업을 관리하세요", "accessControlsDescription": "이 사용자가 조직에서 접근하고 수행할 수 있는 작업을 관리하세요",
"accessControlsSubmit": "접근 제어 저장", "accessControlsSubmit": "접근 제어 저장",
"roles": "역할", "roles": "역할",
@@ -913,8 +913,8 @@
"idpConnectingToFinished": "연결됨", "idpConnectingToFinished": "연결됨",
"idpErrorConnectingTo": "{name}에 연결하는 데 문제가 발생했습니다. 관리자에게 문의하십시오.", "idpErrorConnectingTo": "{name}에 연결하는 데 문제가 발생했습니다. 관리자에게 문의하십시오.",
"idpErrorNotFound": "IdP를 찾을 수 없습니다.", "idpErrorNotFound": "IdP를 찾을 수 없습니다.",
"idpGoogleAlt": "Google", "idpGoogleAlt": "구글",
"idpAzureAlt": "Azure", "idpAzureAlt": "애저",
"inviteInvalid": "유효하지 않은 초대", "inviteInvalid": "유효하지 않은 초대",
"inviteInvalidDescription": "초대 링크가 유효하지 않습니다.", "inviteInvalidDescription": "초대 링크가 유효하지 않습니다.",
"inviteErrorWrongUser": "이 초대는 이 사용자에게 해당되지 않습니다", "inviteErrorWrongUser": "이 초대는 이 사용자에게 해당되지 않습니다",
@@ -986,8 +986,8 @@
"licenseTierProfessionalRequired": "전문 에디션이 필요합니다.", "licenseTierProfessionalRequired": "전문 에디션이 필요합니다.",
"licenseTierProfessionalRequiredDescription": "이 기능은 Professional Edition에서만 사용할 수 있습니다.", "licenseTierProfessionalRequiredDescription": "이 기능은 Professional Edition에서만 사용할 수 있습니다.",
"actionGetOrg": "조직 가져오기", "actionGetOrg": "조직 가져오기",
"updateOrgUser": "Update Org User", "updateOrgUser": "조직 사용자 업데이트",
"createOrgUser": "Create Org User", "createOrgUser": "조직 사용자 생성",
"actionUpdateOrg": "조직 업데이트", "actionUpdateOrg": "조직 업데이트",
"actionUpdateUser": "사용자 업데이트", "actionUpdateUser": "사용자 업데이트",
"actionGetUser": "사용자 조회", "actionGetUser": "사용자 조회",
@@ -1503,6 +1503,19 @@
}, },
"internationaldomaindetected": "국제 도메인 감지됨", "internationaldomaindetected": "국제 도메인 감지됨",
"willbestoredas": "다음으로 저장됩니다:", "willbestoredas": "다음으로 저장됩니다:",
"idpGoogleDescription": "Google OAuth2/OIDC provider", "idpGoogleDescription": "Google OAuth2/OIDC 공급자",
"idpAzureDescription": "Microsoft Azure OAuth2/OIDC provider" "idpAzureDescription": "Microsoft Azure OAuth2/OIDC 공급자",
"domainPickerProvidedDomain": "제공된 도메인",
"domainPickerFreeProvidedDomain": "무료 제공된 도메인",
"domainPickerVerified": "검증됨",
"domainPickerUnverified": "검증되지 않음",
"domainPickerInvalidSubdomainStructure": "이 하위 도메인은 잘못된 문자 또는 구조를 포함하고 있습니다. 저장 시 자동으로 정리됩니다.",
"domainPickerError": "오류",
"domainPickerErrorLoadDomains": "조직 도메인 로드 실패",
"domainPickerErrorCheckAvailability": "도메인 가용성 확인 실패",
"domainPickerInvalidSubdomain": "잘못된 하위 도메인",
"domainPickerInvalidSubdomainRemoved": "입력 \"{sub}\"이(가) 유효하지 않으므로 제거되었습니다.",
"domainPickerInvalidSubdomainCannotMakeValid": "\"{sub}\"을(를) {domain}에 대해 유효하게 만들 수 없습니다.",
"domainPickerSubdomainSanitized": "하위 도메인 정리됨",
"domainPickerSubdomainCorrected": "\"{sub}\"이(가) \"{sanitized}\"로 수정되었습니다"
} }

View File

@@ -454,8 +454,8 @@
"accessRoleErrorAddDescription": "Det oppstod en feil under tilordning av brukeren til rollen.", "accessRoleErrorAddDescription": "Det oppstod en feil under tilordning av brukeren til rollen.",
"userSaved": "Bruker lagret", "userSaved": "Bruker lagret",
"userSavedDescription": "Brukeren har blitt oppdatert.", "userSavedDescription": "Brukeren har blitt oppdatert.",
"autoProvisioned": "Auto Provisioned", "autoProvisioned": "Auto avlyst",
"autoProvisionedDescription": "Allow this user to be automatically managed by identity provider", "autoProvisionedDescription": "Tillat denne brukeren å bli automatisk administrert av en identitetsleverandør",
"accessControlsDescription": "Administrer hva denne brukeren kan få tilgang til og gjøre i organisasjonen", "accessControlsDescription": "Administrer hva denne brukeren kan få tilgang til og gjøre i organisasjonen",
"accessControlsSubmit": "Lagre tilgangskontroller", "accessControlsSubmit": "Lagre tilgangskontroller",
"roles": "Roller", "roles": "Roller",
@@ -986,8 +986,8 @@
"licenseTierProfessionalRequired": "Profesjonell utgave påkrevd", "licenseTierProfessionalRequired": "Profesjonell utgave påkrevd",
"licenseTierProfessionalRequiredDescription": "Denne funksjonen er kun tilgjengelig i den profesjonelle utgaven.", "licenseTierProfessionalRequiredDescription": "Denne funksjonen er kun tilgjengelig i den profesjonelle utgaven.",
"actionGetOrg": "Hent organisasjon", "actionGetOrg": "Hent organisasjon",
"updateOrgUser": "Update Org User", "updateOrgUser": "Oppdater org.bruker",
"createOrgUser": "Create Org User", "createOrgUser": "Opprett Org bruker",
"actionUpdateOrg": "Oppdater organisasjon", "actionUpdateOrg": "Oppdater organisasjon",
"actionUpdateUser": "Oppdater bruker", "actionUpdateUser": "Oppdater bruker",
"actionGetUser": "Hent bruker", "actionGetUser": "Hent bruker",
@@ -1240,7 +1240,7 @@
"newtUpdateAvailable": "Oppdatering tilgjengelig", "newtUpdateAvailable": "Oppdatering tilgjengelig",
"newtUpdateAvailableInfo": "En ny versjon av Newt er tilgjengelig. Vennligst oppdater til den nyeste versjonen for den beste opplevelsen.", "newtUpdateAvailableInfo": "En ny versjon av Newt er tilgjengelig. Vennligst oppdater til den nyeste versjonen for den beste opplevelsen.",
"domainPickerEnterDomain": "Domene", "domainPickerEnterDomain": "Domene",
"domainPickerPlaceholder": "myapp.example.com", "domainPickerPlaceholder": "minapp.eksempel.no",
"domainPickerDescription": "Skriv inn hele domenet til ressursen for å se tilgjengelige alternativer.", "domainPickerDescription": "Skriv inn hele domenet til ressursen for å se tilgjengelige alternativer.",
"domainPickerDescriptionSaas": "Skriv inn et fullt domene, underdomene eller bare et navn for å se tilgjengelige alternativer", "domainPickerDescriptionSaas": "Skriv inn et fullt domene, underdomene eller bare et navn for å se tilgjengelige alternativer",
"domainPickerTabAll": "Alle", "domainPickerTabAll": "Alle",
@@ -1503,6 +1503,19 @@
}, },
"internationaldomaindetected": "Internasjonalt domene oppdaget", "internationaldomaindetected": "Internasjonalt domene oppdaget",
"willbestoredas": "Vil bli lagret som:", "willbestoredas": "Vil bli lagret som:",
"idpGoogleDescription": "Google OAuth2/OIDC provider", "idpGoogleDescription": "Google OAuth2/OIDC leverandør",
"idpAzureDescription": "Microsoft Azure OAuth2/OIDC provider" "idpAzureDescription": "Microsoft Azure OAuth2/OIDC provider",
"domainPickerProvidedDomain": "Gitt domene",
"domainPickerFreeProvidedDomain": "Gratis oppgitt domene",
"domainPickerVerified": "Bekreftet",
"domainPickerUnverified": "Uverifisert",
"domainPickerInvalidSubdomainStructure": "Dette underdomenet inneholder ugyldige tegn eller struktur. Det vil automatisk bli utsatt når du lagrer.",
"domainPickerError": "Feil",
"domainPickerErrorLoadDomains": "Kan ikke laste organisasjonens domener",
"domainPickerErrorCheckAvailability": "Kunne ikke kontrollere domenetilgjengelighet",
"domainPickerInvalidSubdomain": "Ugyldig underdomene",
"domainPickerInvalidSubdomainRemoved": "Inndata \"{sub}\" ble fjernet fordi det ikke er gyldig.",
"domainPickerInvalidSubdomainCannotMakeValid": "\"{sub}\" kunne ikke gjøres gyldig for {domain}.",
"domainPickerSubdomainSanitized": "Underdomenet som ble sanivert",
"domainPickerSubdomainCorrected": "\"{sub}\" var korrigert til \"{sanitized}\""
} }

View File

@@ -454,8 +454,8 @@
"accessRoleErrorAddDescription": "Er is een fout opgetreden tijdens het toevoegen van de rol.", "accessRoleErrorAddDescription": "Er is een fout opgetreden tijdens het toevoegen van de rol.",
"userSaved": "Gebruiker opgeslagen", "userSaved": "Gebruiker opgeslagen",
"userSavedDescription": "De gebruiker is bijgewerkt.", "userSavedDescription": "De gebruiker is bijgewerkt.",
"autoProvisioned": "Auto Provisioned", "autoProvisioned": "Automatisch bevestigen",
"autoProvisionedDescription": "Allow this user to be automatically managed by identity provider", "autoProvisionedDescription": "Toestaan dat deze gebruiker automatisch wordt beheerd door een identiteitsprovider",
"accessControlsDescription": "Beheer wat deze gebruiker toegang heeft tot en doet in de organisatie", "accessControlsDescription": "Beheer wat deze gebruiker toegang heeft tot en doet in de organisatie",
"accessControlsSubmit": "Bewaar Toegangsbesturing", "accessControlsSubmit": "Bewaar Toegangsbesturing",
"roles": "Rollen", "roles": "Rollen",
@@ -986,8 +986,8 @@
"licenseTierProfessionalRequired": "Professionele editie vereist", "licenseTierProfessionalRequired": "Professionele editie vereist",
"licenseTierProfessionalRequiredDescription": "Deze functie is alleen beschikbaar in de Professional Edition.", "licenseTierProfessionalRequiredDescription": "Deze functie is alleen beschikbaar in de Professional Edition.",
"actionGetOrg": "Krijg Organisatie", "actionGetOrg": "Krijg Organisatie",
"updateOrgUser": "Update Org User", "updateOrgUser": "Org gebruiker bijwerken",
"createOrgUser": "Create Org User", "createOrgUser": "Org gebruiker aanmaken",
"actionUpdateOrg": "Organisatie bijwerken", "actionUpdateOrg": "Organisatie bijwerken",
"actionUpdateUser": "Gebruiker bijwerken", "actionUpdateUser": "Gebruiker bijwerken",
"actionGetUser": "Gebruiker ophalen", "actionGetUser": "Gebruiker ophalen",
@@ -1240,7 +1240,7 @@
"newtUpdateAvailable": "Update beschikbaar", "newtUpdateAvailable": "Update beschikbaar",
"newtUpdateAvailableInfo": "Er is een nieuwe versie van Newt beschikbaar. Update naar de nieuwste versie voor de beste ervaring.", "newtUpdateAvailableInfo": "Er is een nieuwe versie van Newt beschikbaar. Update naar de nieuwste versie voor de beste ervaring.",
"domainPickerEnterDomain": "Domein", "domainPickerEnterDomain": "Domein",
"domainPickerPlaceholder": "myapp.example.com", "domainPickerPlaceholder": "mijnapp.voorbeeld.nl",
"domainPickerDescription": "Voer de volledige domein van de bron in om beschikbare opties te zien.", "domainPickerDescription": "Voer de volledige domein van de bron in om beschikbare opties te zien.",
"domainPickerDescriptionSaas": "Voer een volledig domein, subdomein of gewoon een naam in om beschikbare opties te zien", "domainPickerDescriptionSaas": "Voer een volledig domein, subdomein of gewoon een naam in om beschikbare opties te zien",
"domainPickerTabAll": "Alles", "domainPickerTabAll": "Alles",
@@ -1504,5 +1504,18 @@
"internationaldomaindetected": "Internationaal Domein Gedetecteerd", "internationaldomaindetected": "Internationaal Domein Gedetecteerd",
"willbestoredas": "Zal worden opgeslagen als:", "willbestoredas": "Zal worden opgeslagen als:",
"idpGoogleDescription": "Google OAuth2/OIDC provider", "idpGoogleDescription": "Google OAuth2/OIDC provider",
"idpAzureDescription": "Microsoft Azure OAuth2/OIDC provider" "idpAzureDescription": "Microsoft Azure OAuth2/OIDC provider",
"domainPickerProvidedDomain": "Opgegeven domein",
"domainPickerFreeProvidedDomain": "Gratis verstrekt domein",
"domainPickerVerified": "Geverifieerd",
"domainPickerUnverified": "Ongeverifieerd",
"domainPickerInvalidSubdomainStructure": "Dit subdomein bevat ongeldige tekens of structuur. Het zal automatisch worden gesaneerd wanneer u opslaat.",
"domainPickerError": "Foutmelding",
"domainPickerErrorLoadDomains": "Fout bij het laden van organisatiedomeinen",
"domainPickerErrorCheckAvailability": "Kan domein beschikbaarheid niet controleren",
"domainPickerInvalidSubdomain": "Ongeldig subdomein",
"domainPickerInvalidSubdomainRemoved": "De invoer \"{sub}\" is verwijderd omdat het niet geldig is.",
"domainPickerInvalidSubdomainCannotMakeValid": "\"{sub}\" kon niet geldig worden gemaakt voor {domain}.",
"domainPickerSubdomainSanitized": "Subdomein gesaniseerd",
"domainPickerSubdomainCorrected": "\"{sub}\" was gecorrigeerd op \"{sanitized}\""
} }

View File

@@ -454,8 +454,8 @@
"accessRoleErrorAddDescription": "Wystąpił błąd podczas dodawania użytkownika do roli.", "accessRoleErrorAddDescription": "Wystąpił błąd podczas dodawania użytkownika do roli.",
"userSaved": "Użytkownik zapisany", "userSaved": "Użytkownik zapisany",
"userSavedDescription": "Użytkownik został zaktualizowany.", "userSavedDescription": "Użytkownik został zaktualizowany.",
"autoProvisioned": "Auto Provisioned", "autoProvisioned": "Przesłane automatycznie",
"autoProvisionedDescription": "Allow this user to be automatically managed by identity provider", "autoProvisionedDescription": "Pozwól temu użytkownikowi na automatyczne zarządzanie przez dostawcę tożsamości",
"accessControlsDescription": "Zarządzaj tym, do czego użytkownik ma dostęp i co może robić w organizacji", "accessControlsDescription": "Zarządzaj tym, do czego użytkownik ma dostęp i co może robić w organizacji",
"accessControlsSubmit": "Zapisz kontrole dostępu", "accessControlsSubmit": "Zapisz kontrole dostępu",
"roles": "Role", "roles": "Role",
@@ -986,8 +986,8 @@
"licenseTierProfessionalRequired": "Wymagana edycja Professional", "licenseTierProfessionalRequired": "Wymagana edycja Professional",
"licenseTierProfessionalRequiredDescription": "Ta funkcja jest dostępna tylko w edycji Professional.", "licenseTierProfessionalRequiredDescription": "Ta funkcja jest dostępna tylko w edycji Professional.",
"actionGetOrg": "Pobierz organizację", "actionGetOrg": "Pobierz organizację",
"updateOrgUser": "Update Org User", "updateOrgUser": "Aktualizuj użytkownika Org",
"createOrgUser": "Create Org User", "createOrgUser": "Utwórz użytkownika Org",
"actionUpdateOrg": "Aktualizuj organizację", "actionUpdateOrg": "Aktualizuj organizację",
"actionUpdateUser": "Zaktualizuj użytkownika", "actionUpdateUser": "Zaktualizuj użytkownika",
"actionGetUser": "Pobierz użytkownika", "actionGetUser": "Pobierz użytkownika",
@@ -1240,7 +1240,7 @@
"newtUpdateAvailable": "Dostępna aktualizacja", "newtUpdateAvailable": "Dostępna aktualizacja",
"newtUpdateAvailableInfo": "Nowa wersja Newt jest dostępna. Prosimy o aktualizację do najnowszej wersji dla najlepszej pracy.", "newtUpdateAvailableInfo": "Nowa wersja Newt jest dostępna. Prosimy o aktualizację do najnowszej wersji dla najlepszej pracy.",
"domainPickerEnterDomain": "Domena", "domainPickerEnterDomain": "Domena",
"domainPickerPlaceholder": "myapp.example.com", "domainPickerPlaceholder": "mojapp.example.com",
"domainPickerDescription": "Wpisz pełną domenę zasobu, aby zobaczyć dostępne opcje.", "domainPickerDescription": "Wpisz pełną domenę zasobu, aby zobaczyć dostępne opcje.",
"domainPickerDescriptionSaas": "Wprowadź pełną domenę, subdomenę lub po prostu nazwę, aby zobaczyć dostępne opcje", "domainPickerDescriptionSaas": "Wprowadź pełną domenę, subdomenę lub po prostu nazwę, aby zobaczyć dostępne opcje",
"domainPickerTabAll": "Wszystko", "domainPickerTabAll": "Wszystko",
@@ -1503,6 +1503,19 @@
}, },
"internationaldomaindetected": "Wykryto międzynarodową domenę", "internationaldomaindetected": "Wykryto międzynarodową domenę",
"willbestoredas": "Będą przechowywane jako:", "willbestoredas": "Będą przechowywane jako:",
"idpGoogleDescription": "Google OAuth2/OIDC provider", "idpGoogleDescription": "Dostawca Google OAuth2/OIDC",
"idpAzureDescription": "Microsoft Azure OAuth2/OIDC provider" "idpAzureDescription": "Microsoft Azure OAuth2/OIDC provider",
"domainPickerProvidedDomain": "Dostarczona domena",
"domainPickerFreeProvidedDomain": "Darmowa oferowana domena",
"domainPickerVerified": "Zweryfikowano",
"domainPickerUnverified": "Niezweryfikowane",
"domainPickerInvalidSubdomainStructure": "Ta subdomena zawiera nieprawidłowe znaki lub strukturę. Zostanie ona automatycznie oczyszczona po zapisaniu.",
"domainPickerError": "Błąd",
"domainPickerErrorLoadDomains": "Nie udało się załadować domen organizacji",
"domainPickerErrorCheckAvailability": "Nie udało się sprawdzić dostępności domeny",
"domainPickerInvalidSubdomain": "Nieprawidłowa subdomena",
"domainPickerInvalidSubdomainRemoved": "Wejście \"{sub}\" zostało usunięte, ponieważ jest nieprawidłowe.",
"domainPickerInvalidSubdomainCannotMakeValid": "\"{sub}\" nie może być poprawne dla {domain}.",
"domainPickerSubdomainSanitized": "Poddomena oczyszczona",
"domainPickerSubdomainCorrected": "\"{sub}\" został skorygowany do \"{sanitized}\""
} }

View File

@@ -454,8 +454,8 @@
"accessRoleErrorAddDescription": "Ocorreu um erro ao adicionar usuário à função.", "accessRoleErrorAddDescription": "Ocorreu um erro ao adicionar usuário à função.",
"userSaved": "Usuário salvo", "userSaved": "Usuário salvo",
"userSavedDescription": "O usuário foi atualizado.", "userSavedDescription": "O usuário foi atualizado.",
"autoProvisioned": "Auto Provisioned", "autoProvisioned": "Auto provisionado",
"autoProvisionedDescription": "Allow this user to be automatically managed by identity provider", "autoProvisionedDescription": "Permitir que este usuário seja gerenciado automaticamente pelo provedor de identidade",
"accessControlsDescription": "Gerencie o que este usuário pode acessar e fazer na organização", "accessControlsDescription": "Gerencie o que este usuário pode acessar e fazer na organização",
"accessControlsSubmit": "Salvar Controles de Acesso", "accessControlsSubmit": "Salvar Controles de Acesso",
"roles": "Funções", "roles": "Funções",
@@ -986,8 +986,8 @@
"licenseTierProfessionalRequired": "Edição Profissional Necessária", "licenseTierProfessionalRequired": "Edição Profissional Necessária",
"licenseTierProfessionalRequiredDescription": "Esta funcionalidade só está disponível na Edição Profissional.", "licenseTierProfessionalRequiredDescription": "Esta funcionalidade só está disponível na Edição Profissional.",
"actionGetOrg": "Obter Organização", "actionGetOrg": "Obter Organização",
"updateOrgUser": "Update Org User", "updateOrgUser": "Atualizar usuário Org",
"createOrgUser": "Create Org User", "createOrgUser": "Criar usuário Org",
"actionUpdateOrg": "Atualizar Organização", "actionUpdateOrg": "Atualizar Organização",
"actionUpdateUser": "Atualizar Usuário", "actionUpdateUser": "Atualizar Usuário",
"actionGetUser": "Obter Usuário", "actionGetUser": "Obter Usuário",
@@ -1240,7 +1240,7 @@
"newtUpdateAvailable": "Nova Atualização Disponível", "newtUpdateAvailable": "Nova Atualização Disponível",
"newtUpdateAvailableInfo": "Uma nova versão do Newt está disponível. Atualize para a versão mais recente para uma melhor experiência.", "newtUpdateAvailableInfo": "Uma nova versão do Newt está disponível. Atualize para a versão mais recente para uma melhor experiência.",
"domainPickerEnterDomain": "Domínio", "domainPickerEnterDomain": "Domínio",
"domainPickerPlaceholder": "myapp.example.com", "domainPickerPlaceholder": "myapp.exemplo.com",
"domainPickerDescription": "Insira o domínio completo do recurso para ver as opções disponíveis.", "domainPickerDescription": "Insira o domínio completo do recurso para ver as opções disponíveis.",
"domainPickerDescriptionSaas": "Insira um domínio completo, subdomínio ou apenas um nome para ver as opções disponíveis", "domainPickerDescriptionSaas": "Insira um domínio completo, subdomínio ou apenas um nome para ver as opções disponíveis",
"domainPickerTabAll": "Todos", "domainPickerTabAll": "Todos",
@@ -1503,6 +1503,19 @@
}, },
"internationaldomaindetected": "Domínio Internacional Detectado", "internationaldomaindetected": "Domínio Internacional Detectado",
"willbestoredas": "Será armazenado como:", "willbestoredas": "Será armazenado como:",
"idpGoogleDescription": "Google OAuth2/OIDC provider", "idpGoogleDescription": "Provedor Google OAuth2/OIDC",
"idpAzureDescription": "Microsoft Azure OAuth2/OIDC provider" "idpAzureDescription": "Microsoft Azure OAuth2/OIDC provider",
"domainPickerProvidedDomain": "Domínio fornecido",
"domainPickerFreeProvidedDomain": "Domínio fornecido grátis",
"domainPickerVerified": "Verificada",
"domainPickerUnverified": "Não verificado",
"domainPickerInvalidSubdomainStructure": "Este subdomínio contém caracteres ou estrutura inválidos. Ele será eliminado automaticamente quando você salvar.",
"domainPickerError": "ERRO",
"domainPickerErrorLoadDomains": "Falha ao carregar domínios da organização",
"domainPickerErrorCheckAvailability": "Não foi possível verificar a disponibilidade do domínio",
"domainPickerInvalidSubdomain": "Subdomínio inválido",
"domainPickerInvalidSubdomainRemoved": "A entrada \"{sub}\" foi removida porque ela não é válida.",
"domainPickerInvalidSubdomainCannotMakeValid": "\"{sub}\" não pôde ser válido para {domain}.",
"domainPickerSubdomainSanitized": "Subdomínio banalizado",
"domainPickerSubdomainCorrected": "\"{sub}\" foi corrigido para \"{sanitized}\""
} }

View File

@@ -454,8 +454,8 @@
"accessRoleErrorAddDescription": "Произошла ошибка при добавлении пользователя в роль.", "accessRoleErrorAddDescription": "Произошла ошибка при добавлении пользователя в роль.",
"userSaved": "Пользователь сохранён", "userSaved": "Пользователь сохранён",
"userSavedDescription": "Пользователь был обновлён.", "userSavedDescription": "Пользователь был обновлён.",
"autoProvisioned": "Auto Provisioned", "autoProvisioned": "Автоподбор",
"autoProvisionedDescription": "Allow this user to be automatically managed by identity provider", "autoProvisionedDescription": "Разрешить автоматическое управление этим пользователем",
"accessControlsDescription": "Управляйте тем, к чему этот пользователь может получить доступ и что делать в организации", "accessControlsDescription": "Управляйте тем, к чему этот пользователь может получить доступ и что делать в организации",
"accessControlsSubmit": "Сохранить контроль доступа", "accessControlsSubmit": "Сохранить контроль доступа",
"roles": "Роли", "roles": "Роли",
@@ -986,8 +986,8 @@
"licenseTierProfessionalRequired": "Требуется профессиональная версия", "licenseTierProfessionalRequired": "Требуется профессиональная версия",
"licenseTierProfessionalRequiredDescription": "Эта функция доступна только в профессиональной версии.", "licenseTierProfessionalRequiredDescription": "Эта функция доступна только в профессиональной версии.",
"actionGetOrg": "Получить организацию", "actionGetOrg": "Получить организацию",
"updateOrgUser": "Update Org User", "updateOrgUser": "Обновить пользователя Org",
"createOrgUser": "Create Org User", "createOrgUser": "Создать пользователя Org",
"actionUpdateOrg": "Обновить организацию", "actionUpdateOrg": "Обновить организацию",
"actionUpdateUser": "Обновить пользователя", "actionUpdateUser": "Обновить пользователя",
"actionGetUser": "Получить пользователя", "actionGetUser": "Получить пользователя",
@@ -1503,6 +1503,19 @@
}, },
"internationaldomaindetected": "Обнаружен международный домен", "internationaldomaindetected": "Обнаружен международный домен",
"willbestoredas": "Будет храниться как:", "willbestoredas": "Будет храниться как:",
"idpGoogleDescription": "Google OAuth2/OIDC provider", "idpGoogleDescription": "Google OAuth2/OIDC провайдер",
"idpAzureDescription": "Microsoft Azure OAuth2/OIDC provider" "idpAzureDescription": "Microsoft Azure OAuth2/OIDC provider",
"domainPickerProvidedDomain": "Домен предоставлен",
"domainPickerFreeProvidedDomain": "Бесплатный домен",
"domainPickerVerified": "Подтверждено",
"domainPickerUnverified": "Не подтверждено",
"domainPickerInvalidSubdomainStructure": "Этот поддомен содержит недопустимые символы или структуру. Он будет очищен автоматически при сохранении.",
"domainPickerError": "Ошибка",
"domainPickerErrorLoadDomains": "Не удалось загрузить домены организации",
"domainPickerErrorCheckAvailability": "Не удалось проверить доступность домена",
"domainPickerInvalidSubdomain": "Неверный поддомен",
"domainPickerInvalidSubdomainRemoved": "Ввод \"{sub}\" был удален, потому что он недействителен.",
"domainPickerInvalidSubdomainCannotMakeValid": "\"{sub}\" не может быть действительным для {domain}.",
"domainPickerSubdomainSanitized": "Субдомен очищен",
"domainPickerSubdomainCorrected": "\"{sub}\" был исправлен на \"{sanitized}\""
} }

View File

@@ -454,8 +454,8 @@
"accessRoleErrorAddDescription": "Kullanıcı role eklenirken bir hata oluştu.", "accessRoleErrorAddDescription": "Kullanıcı role eklenirken bir hata oluştu.",
"userSaved": "Kullanıcı kaydedildi", "userSaved": "Kullanıcı kaydedildi",
"userSavedDescription": "Kullanıcı güncellenmiştir.", "userSavedDescription": "Kullanıcı güncellenmiştir.",
"autoProvisioned": "Auto Provisioned", "autoProvisioned": "Otomatik Sağlandı",
"autoProvisionedDescription": "Allow this user to be automatically managed by identity provider", "autoProvisionedDescription": "Bu kullanıcının kimlik sağlayıcısı tarafından otomatik olarak yönetilmesine izin ver",
"accessControlsDescription": "Bu kullanıcının organizasyonda neleri erişebileceğini ve yapabileceğini yönetin", "accessControlsDescription": "Bu kullanıcının organizasyonda neleri erişebileceğini ve yapabileceğini yönetin",
"accessControlsSubmit": "Erişim Kontrollerini Kaydet", "accessControlsSubmit": "Erişim Kontrollerini Kaydet",
"roles": "Roller", "roles": "Roller",
@@ -986,8 +986,8 @@
"licenseTierProfessionalRequired": "Profesyonel Sürüme Gereklidir", "licenseTierProfessionalRequired": "Profesyonel Sürüme Gereklidir",
"licenseTierProfessionalRequiredDescription": "Bu özellik yalnızca Professional Edition'da kullanılabilir.", "licenseTierProfessionalRequiredDescription": "Bu özellik yalnızca Professional Edition'da kullanılabilir.",
"actionGetOrg": "Kuruluşu Al", "actionGetOrg": "Kuruluşu Al",
"updateOrgUser": "Update Org User", "updateOrgUser": "Organizasyon Kullanıcısını Güncelle",
"createOrgUser": "Create Org User", "createOrgUser": "Organizasyon Kullanıcısı Oluştur",
"actionUpdateOrg": "Kuruluşu Güncelle", "actionUpdateOrg": "Kuruluşu Güncelle",
"actionUpdateUser": "Kullanıcıyı Güncelle", "actionUpdateUser": "Kullanıcıyı Güncelle",
"actionGetUser": "Kullanıcıyı Getir", "actionGetUser": "Kullanıcıyı Getir",
@@ -1503,6 +1503,19 @@
}, },
"internationaldomaindetected": "Uluslararası Alan Adı Tespit Edildi", "internationaldomaindetected": "Uluslararası Alan Adı Tespit Edildi",
"willbestoredas": "Şu şekilde depolanacak:", "willbestoredas": "Şu şekilde depolanacak:",
"idpGoogleDescription": "Google OAuth2/OIDC provider", "idpGoogleDescription": "Google OAuth2/OIDC sağlayıcısı",
"idpAzureDescription": "Microsoft Azure OAuth2/OIDC provider" "idpAzureDescription": "Microsoft Azure OAuth2/OIDC sağlayıcısı",
"domainPickerProvidedDomain": "Sağlanan Alan Adı",
"domainPickerFreeProvidedDomain": "Ücretsiz Sağlanan Alan Adı",
"domainPickerVerified": "Doğrulandı",
"domainPickerUnverified": "Doğrulanmadı",
"domainPickerInvalidSubdomainStructure": "Bu alt alan adı geçersiz karakterler veya yapı içeriyor. Kaydettiğinizde otomatik olarak temizlenecektir.",
"domainPickerError": "Hata",
"domainPickerErrorLoadDomains": "Organizasyon alan adları yüklenemedi",
"domainPickerErrorCheckAvailability": "Alan adı kullanılabilirliği kontrol edilemedi",
"domainPickerInvalidSubdomain": "Geçersiz alt alan adı",
"domainPickerInvalidSubdomainRemoved": "Girdi \"{sub}\" geçersiz olduğu için kaldırıldı.",
"domainPickerInvalidSubdomainCannotMakeValid": "\"{sub}\" {domain} için geçerli yapılamadı.",
"domainPickerSubdomainSanitized": "Alt alan adı temizlendi",
"domainPickerSubdomainCorrected": "\"{sub}\" \"{sanitized}\" olarak düzeltildi"
} }

View File

@@ -454,8 +454,8 @@
"accessRoleErrorAddDescription": "添加用户到角色时出错。", "accessRoleErrorAddDescription": "添加用户到角色时出错。",
"userSaved": "用户已保存", "userSaved": "用户已保存",
"userSavedDescription": "用户已更新。", "userSavedDescription": "用户已更新。",
"autoProvisioned": "Auto Provisioned", "autoProvisioned": "自动设置",
"autoProvisionedDescription": "Allow this user to be automatically managed by identity provider", "autoProvisionedDescription": "允许此用户由身份提供商自动管理",
"accessControlsDescription": "管理此用户在组织中可以访问和做什么", "accessControlsDescription": "管理此用户在组织中可以访问和做什么",
"accessControlsSubmit": "保存访问控制", "accessControlsSubmit": "保存访问控制",
"roles": "角色", "roles": "角色",
@@ -986,8 +986,8 @@
"licenseTierProfessionalRequired": "需要专业版", "licenseTierProfessionalRequired": "需要专业版",
"licenseTierProfessionalRequiredDescription": "此功能仅在专业版可用。", "licenseTierProfessionalRequiredDescription": "此功能仅在专业版可用。",
"actionGetOrg": "获取组织", "actionGetOrg": "获取组织",
"updateOrgUser": "Update Org User", "updateOrgUser": "更新组织用户",
"createOrgUser": "Create Org User", "createOrgUser": "创建组织用户",
"actionUpdateOrg": "更新组织", "actionUpdateOrg": "更新组织",
"actionUpdateUser": "更新用户", "actionUpdateUser": "更新用户",
"actionGetUser": "获取用户", "actionGetUser": "获取用户",
@@ -1240,7 +1240,7 @@
"newtUpdateAvailable": "更新可用", "newtUpdateAvailable": "更新可用",
"newtUpdateAvailableInfo": "新版本的 Newt 已可用。请更新到最新版本以获得最佳体验。", "newtUpdateAvailableInfo": "新版本的 Newt 已可用。请更新到最新版本以获得最佳体验。",
"domainPickerEnterDomain": "域名", "domainPickerEnterDomain": "域名",
"domainPickerPlaceholder": "myapp.example.com", "domainPickerPlaceholder": "example.com",
"domainPickerDescription": "输入资源的完整域名以查看可用选项。", "domainPickerDescription": "输入资源的完整域名以查看可用选项。",
"domainPickerDescriptionSaas": "输入完整域名、子域或名称以查看可用选项。", "domainPickerDescriptionSaas": "输入完整域名、子域或名称以查看可用选项。",
"domainPickerTabAll": "所有", "domainPickerTabAll": "所有",
@@ -1503,6 +1503,19 @@
}, },
"internationaldomaindetected": "检测到国际域", "internationaldomaindetected": "检测到国际域",
"willbestoredas": "储存为:", "willbestoredas": "储存为:",
"idpGoogleDescription": "Google OAuth2/OIDC provider", "idpGoogleDescription": "Google OAuth2/OIDC 提供商",
"idpAzureDescription": "Microsoft Azure OAuth2/OIDC provider" "idpAzureDescription": "Microsoft Azure OAuth2/OIDC provider",
"domainPickerProvidedDomain": "提供的域",
"domainPickerFreeProvidedDomain": "免费提供的域",
"domainPickerVerified": "已验证",
"domainPickerUnverified": "未验证",
"domainPickerInvalidSubdomainStructure": "此子域包含无效的字符或结构。当您保存时,它将被自动清除。",
"domainPickerError": "错误",
"domainPickerErrorLoadDomains": "加载组织域名失败",
"domainPickerErrorCheckAvailability": "检查域可用性失败",
"domainPickerInvalidSubdomain": "无效的子域",
"domainPickerInvalidSubdomainRemoved": "输入 \"{sub}\" 已被移除,因为其无效。",
"domainPickerInvalidSubdomainCannotMakeValid": "\"{sub}\" 无法为 {domain} 变为有效。",
"domainPickerSubdomainSanitized": "子域已净化",
"domainPickerSubdomainCorrected": "\"{sub}\" 已被更正为 \"{sanitized}\""
} }

View File

@@ -2,7 +2,7 @@ import path from "path";
import { fileURLToPath } from "url"; import { fileURLToPath } from "url";
// This is a placeholder value replaced by the build process // This is a placeholder value replaced by the build process
export const APP_VERSION = "1.9.0"; export const APP_VERSION = "1.10.0";
export const __FILENAME = fileURLToPath(import.meta.url); export const __FILENAME = fileURLToPath(import.meta.url);
export const __DIRNAME = path.dirname(__FILENAME); export const __DIRNAME = path.dirname(__FILENAME);

View File

@@ -9,6 +9,7 @@ import m1 from "./scriptsPg/1.6.0";
import m2 from "./scriptsPg/1.7.0"; import m2 from "./scriptsPg/1.7.0";
import m3 from "./scriptsPg/1.8.0"; import m3 from "./scriptsPg/1.8.0";
import m4 from "./scriptsPg/1.9.0"; import m4 from "./scriptsPg/1.9.0";
import m5 from "./scriptsPg/1.10.0";
// THIS CANNOT IMPORT ANYTHING FROM THE SERVER // THIS CANNOT IMPORT ANYTHING FROM THE SERVER
// EXCEPT FOR THE DATABASE AND THE SCHEMA // EXCEPT FOR THE DATABASE AND THE SCHEMA
@@ -18,7 +19,8 @@ const migrations = [
{ version: "1.6.0", run: m1 }, { version: "1.6.0", run: m1 },
{ version: "1.7.0", run: m2 }, { version: "1.7.0", run: m2 },
{ version: "1.8.0", run: m3 }, { version: "1.8.0", run: m3 },
{ version: "1.9.0", run: m4 } { version: "1.9.0", run: m4 },
{ version: "1.10.0", run: m5 },
// Add new migrations here as they are created // Add new migrations here as they are created
] as { ] as {
version: string; version: string;

View File

@@ -26,6 +26,7 @@ import m21 from "./scriptsSqlite/1.6.0";
import m22 from "./scriptsSqlite/1.7.0"; import m22 from "./scriptsSqlite/1.7.0";
import m23 from "./scriptsSqlite/1.8.0"; import m23 from "./scriptsSqlite/1.8.0";
import m24 from "./scriptsSqlite/1.9.0"; import m24 from "./scriptsSqlite/1.9.0";
import m25 from "./scriptsSqlite/1.10.0";
// THIS CANNOT IMPORT ANYTHING FROM THE SERVER // THIS CANNOT IMPORT ANYTHING FROM THE SERVER
// EXCEPT FOR THE DATABASE AND THE SCHEMA // EXCEPT FOR THE DATABASE AND THE SCHEMA
@@ -51,6 +52,7 @@ const migrations = [
{ version: "1.7.0", run: m22 }, { version: "1.7.0", run: m22 },
{ version: "1.8.0", run: m23 }, { version: "1.8.0", run: m23 },
{ version: "1.9.0", run: m24 }, { version: "1.9.0", run: m24 },
{ version: "1.10.0", run: m25 },
// Add new migrations here as they are created // Add new migrations here as they are created
] as const; ] as const;

View File

@@ -0,0 +1,81 @@
import { db } from "@server/db/pg/driver";
import { sql } from "drizzle-orm";
import { __DIRNAME, APP_PATH } from "@server/lib/consts";
import { readFileSync } from "fs";
import path, { join } from "path";
const version = "1.10.0";
export default async function migration() {
console.log(`Running setup script ${version}...`);
try {
const resources = await db.execute(sql`
SELECT "resourceId" FROM "resources" WHERE "siteId" IS NOT NULL
`);
await db.execute(sql`BEGIN`);
await db.execute(sql`ALTER TABLE "exitNodes" ADD COLUMN "region" text;`);
await db.execute(sql`ALTER TABLE "idpOidcConfig" ADD COLUMN "variant" text DEFAULT 'oidc' NOT NULL;`);
await db.execute(sql`ALTER TABLE "resources" ADD COLUMN "niceId" text DEFAULT '' NOT NULL;`);
await db.execute(sql`ALTER TABLE "userOrgs" ADD COLUMN "autoProvisioned" boolean DEFAULT false;`);
const usedNiceIds: string[] = [];
for (const resource of resources.rows) {
// Generate a unique name and ensure it's unique
let niceId = "";
let loops = 0;
while (true) {
if (loops > 100) {
throw new Error("Could not generate a unique name");
}
niceId = generateName();
if (!usedNiceIds.includes(niceId)) {
usedNiceIds.push(niceId);
break;
}
loops++;
}
await db.execute(sql`
UPDATE "resources" SET "niceId" = ${niceId} WHERE "resourceId" = ${resource.resourceId}
`);
}
await db.execute(sql`COMMIT`);
console.log(`Migrated database`);
} catch (e) {
await db.execute(sql`ROLLBACK`);
console.log("Failed to migrate db:", e);
throw e;
}
}
const dev = process.env.ENVIRONMENT !== "prod";
let file;
if (!dev) {
file = join(__DIRNAME, "names.json");
} else {
file = join("server/db/names.json");
}
export const names = JSON.parse(readFileSync(file, "utf-8"));
export function generateName(): string {
const name = (
names.descriptors[
Math.floor(Math.random() * names.descriptors.length)
] +
"-" +
names.animals[Math.floor(Math.random() * names.animals.length)]
)
.toLowerCase()
.replace(/\s/g, "-");
// clean out any non-alphanumeric characters except for dashes
return name.replace(/[^a-z0-9-]/g, "");
}

View File

@@ -0,0 +1,83 @@
import { __DIRNAME, APP_PATH } from "@server/lib/consts";
import Database from "better-sqlite3";
import { readFileSync } from "fs";
import path, { join } from "path";
const version = "1.10.0";
export default async function migration() {
console.log(`Running setup script ${version}...`);
const location = path.join(APP_PATH, "db", "db.sqlite");
const db = new Database(location);
const resourceSiteMap = new Map<number, number>();
const firstSiteId: number = 1;
try {
const resources = db
.prepare(
"SELECT resourceId FROM resources WHERE siteId IS NOT NULL"
)
.all() as Array<{ resourceId: number; }>;
db.transaction(() => {
db.exec(`
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 'userOrgs' ADD 'autoProvisioned' integer DEFAULT false;
`); // 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[] = [];
for (const resourceId of resources) {
// Generate a unique name and ensure it's unique
let niceId = "";
let loops = 0;
while (true) {
if (loops > 100) {
throw new Error("Could not generate a unique name");
}
niceId = generateName();
if (!usedNiceIds.includes(niceId)) {
usedNiceIds.push(niceId);
break;
}
loops++;
}
db.prepare(`UPDATE resources SET niceId = ? WHERE resourceId = ?`).run(niceId, resourceId.resourceId);
}
})();
console.log(`Migrated database`);
} catch (e) {
console.log("Failed to migrate db:", e);
throw e;
}
}
const dev = process.env.ENVIRONMENT !== "prod";
let file;
if (!dev) {
file = join(__DIRNAME, "names.json");
} else {
file = join("server/db/names.json");
}
export const names = JSON.parse(readFileSync(file, "utf-8"));
export function generateName(): string {
const name = (
names.descriptors[
Math.floor(Math.random() * names.descriptors.length)
] +
"-" +
names.animals[Math.floor(Math.random() * names.animals.length)]
)
.toLowerCase()
.replace(/\s/g, "-");
// clean out any non-alphanumeric characters except for dashes
return name.replace(/[^a-z0-9-]/g, "");
}

View File

@@ -355,6 +355,8 @@ export default function Page() {
} }
async function onSubmit() { async function onSubmit() {
setShowSnippets(true);
router.refresh();
setCreateLoading(true); setCreateLoading(true);
const baseData = baseForm.getValues(); const baseData = baseForm.getValues();
@@ -1543,6 +1545,9 @@ export default function Page() {
<h3 className="text-lg font-semibold"> <h3 className="text-lg font-semibold">
{t("resourceAddEntrypoints")} {t("resourceAddEntrypoints")}
</h3> </h3>
<p className="text-sm text-muted-foreground">
(Edit file: config/traefik/traefik_config.yml)
</p>
<CopyTextBox <CopyTextBox
text={`entryPoints: text={`entryPoints:
${tcpUdpForm.getValues("protocol")}-${tcpUdpForm.getValues("proxyPort")}: ${tcpUdpForm.getValues("protocol")}-${tcpUdpForm.getValues("proxyPort")}:
@@ -1555,6 +1560,9 @@ export default function Page() {
<h3 className="text-lg font-semibold"> <h3 className="text-lg font-semibold">
{t("resourceExposePorts")} {t("resourceExposePorts")}
</h3> </h3>
<p className="text-sm text-muted-foreground">
(Edit file: docker-compose.yml)
</p>
<CopyTextBox <CopyTextBox
text={`ports: text={`ports:
- ${tcpUdpForm.getValues("proxyPort")}:${tcpUdpForm.getValues("proxyPort")}${tcpUdpForm.getValues("protocol") === "tcp" ? "" : "/" + tcpUdpForm.getValues("protocol")}`} - ${tcpUdpForm.getValues("proxyPort")}:${tcpUdpForm.getValues("proxyPort")}${tcpUdpForm.getValues("protocol") === "tcp" ? "" : "/" + tcpUdpForm.getValues("protocol")}`}

View File

@@ -79,12 +79,14 @@ interface DomainPicker2Props {
baseDomain: string; baseDomain: string;
}) => void; }) => void;
cols?: number; cols?: number;
hideFreeDomain?: boolean;
} }
export default function DomainPicker2({ export default function DomainPicker2({
orgId, orgId,
onDomainChange, onDomainChange,
cols = 2 cols = 2,
hideFreeDomain = false
}: DomainPicker2Props) { }: DomainPicker2Props) {
const { env } = useEnvContext(); const { env } = useEnvContext();
const api = createApiClient({ env }); const api = createApiClient({ env });
@@ -153,12 +155,12 @@ export default function DomainPicker2({
fullDomain: firstOrgDomain.baseDomain, fullDomain: firstOrgDomain.baseDomain,
baseDomain: firstOrgDomain.baseDomain baseDomain: firstOrgDomain.baseDomain
}); });
} else if (build === "saas" || build === "enterprise") { } else if ((build === "saas" || build === "enterprise") && !hideFreeDomain) {
// If no organization domains, select the provided domain option // If no organization domains, select the provided domain option
const domainOptionText = const domainOptionText =
build === "enterprise" build === "enterprise"
? "Provided Domain" ? t("domainPickerProvidedDomain")
: "Free Provided Domain"; : t("domainPickerFreeProvidedDomain");
const freeDomainOption: DomainOption = { const freeDomainOption: DomainOption = {
id: "provided-search", id: "provided-search",
domain: domainOptionText, domain: domainOptionText,
@@ -171,8 +173,8 @@ export default function DomainPicker2({
console.error("Failed to load organization domains:", error); console.error("Failed to load organization domains:", error);
toast({ toast({
variant: "destructive", variant: "destructive",
title: "Error", title: t("domainPickerError"),
description: "Failed to load organization domains" description: t("domainPickerErrorLoadDomains")
}); });
} finally { } finally {
setLoadingDomains(false); setLoadingDomains(false);
@@ -180,7 +182,7 @@ export default function DomainPicker2({
}; };
loadOrganizationDomains(); loadOrganizationDomains();
}, [orgId, api]); }, [orgId, api, hideFreeDomain]);
const checkAvailability = useCallback( const checkAvailability = useCallback(
async (input: string) => { async (input: string) => {
@@ -202,8 +204,8 @@ export default function DomainPicker2({
setAvailableOptions([]); setAvailableOptions([]);
toast({ toast({
variant: "destructive", variant: "destructive",
title: "Error", title: t("domainPickerError"),
description: "Failed to check domain availability" description: t("domainPickerErrorCheckAvailability")
}); });
} finally { } finally {
setIsChecking(false); setIsChecking(false);
@@ -246,11 +248,11 @@ export default function DomainPicker2({
}); });
}); });
if (build === "saas" || build === "enterprise") { if ((build === "saas" || build === "enterprise") && !hideFreeDomain) {
const domainOptionText = const domainOptionText =
build === "enterprise" build === "enterprise"
? "Provided Domain" ? t("domainPickerProvidedDomain")
: "Free Provided Domain"; : t("domainPickerFreeProvidedDomain");
options.push({ options.push({
id: "provided-search", id: "provided-search",
domain: domainOptionText, domain: domainOptionText,
@@ -269,8 +271,8 @@ export default function DomainPicker2({
if (!sanitized) { if (!sanitized) {
toast({ toast({
variant: "destructive", variant: "destructive",
title: "Invalid subdomain", title: t("domainPickerInvalidSubdomain"),
description: `The input "${sub}" was removed because it's not valid.`, description: t("domainPickerInvalidSubdomainRemoved", { sub }),
}); });
return ""; return "";
} }
@@ -283,16 +285,16 @@ export default function DomainPicker2({
if (!ok) { if (!ok) {
toast({ toast({
variant: "destructive", variant: "destructive",
title: "Invalid subdomain", title: t("domainPickerInvalidSubdomain"),
description: `"${sub}" could not be made valid for ${base.domain}.`, description: t("domainPickerInvalidSubdomainCannotMakeValid", { sub, domain: base.domain }),
}); });
return ""; return "";
} }
if (sub !== sanitized) { if (sub !== sanitized) {
toast({ toast({
title: "Subdomain sanitized", title: t("domainPickerSubdomainSanitized"),
description: `"${sub}" was corrected to "${sanitized}"`, description: t("domainPickerSubdomainCorrected", { sub, sanitized }),
}); });
} }
@@ -453,7 +455,7 @@ export default function DomainPicker2({
/> />
{showSubdomainInput && subdomainInput && !isValidSubdomainStructure(subdomainInput) && ( {showSubdomainInput && subdomainInput && !isValidSubdomainStructure(subdomainInput) && (
<p className="text-sm text-red-500"> <p className="text-sm text-red-500">
This subdomain contains invalid characters or structure. It will be sanitized automatically when you save. {t("domainPickerInvalidSubdomainStructure")}
</p> </p>
)} )}
{showSubdomainInput && !subdomainInput && ( {showSubdomainInput && !subdomainInput && (
@@ -555,8 +557,8 @@ export default function DomainPicker2({
{orgDomain.type.toUpperCase()}{" "} {orgDomain.type.toUpperCase()}{" "}
{" "} {" "}
{orgDomain.verified {orgDomain.verified
? "Verified" ? t("domainPickerVerified")
: "Unverified"} : t("domainPickerUnverified")}
</span> </span>
</div> </div>
<Check <Check
@@ -574,14 +576,14 @@ export default function DomainPicker2({
</CommandList> </CommandList>
</CommandGroup> </CommandGroup>
{(build === "saas" || {(build === "saas" ||
build === "enterprise") && ( build === "enterprise") && !hideFreeDomain && (
<CommandSeparator className="my-2" /> <CommandSeparator className="my-2" />
)} )}
</> </>
)} )}
{(build === "saas" || {(build === "saas" ||
build === "enterprise") && ( build === "enterprise") && !hideFreeDomain && (
<CommandGroup <CommandGroup
heading={ heading={
build === "enterprise" build === "enterprise"
@@ -601,8 +603,8 @@ export default function DomainPicker2({
domain: domain:
build === build ===
"enterprise" "enterprise"
? "Provided Domain" ? t("domainPickerProvidedDomain")
: "Free Provided Domain", : t("domainPickerFreeProvidedDomain"),
type: "provided-search" type: "provided-search"
}) })
} }
@@ -614,8 +616,8 @@ export default function DomainPicker2({
<div className="flex flex-col flex-1 min-w-0"> <div className="flex flex-col flex-1 min-w-0">
<span className="font-medium truncate"> <span className="font-medium truncate">
{build === "enterprise" {build === "enterprise"
? "Provided Domain" ? t("domainPickerProvidedDomain")
: "Free Provided Domain"} : t("domainPickerFreeProvidedDomain")}
</span> </span>
<span className="text-xs text-muted-foreground"> <span className="text-xs text-muted-foreground">
{t( {t(
@@ -771,4 +773,4 @@ function debounce<T extends (...args: any[]) => any>(
func(...args); func(...args);
}, wait); }, wait);
}; };
} }