diff --git a/messages/ko-KR.json b/messages/ko-KR.json index 4684eacb..34888669 100644 --- a/messages/ko-KR.json +++ b/messages/ko-KR.json @@ -94,9 +94,9 @@ "siteNewtTunnelDescription": "네트워크에 대한 진입점을 생성하는 가장 쉬운 방법입니다. 추가 설정이 필요 없습니다.", "siteWg": "기본 WireGuard", "siteWgDescription": "모든 WireGuard 클라이언트를 사용하여 터널을 설정하세요. 수동 NAT 설정이 필요합니다.", - "siteWgDescriptionSaas": "모든 WireGuard 클라이언트를 사용하여 터널을 설정하세요. 수동 NAT 설정이 필요합니다. 자체 호스팅 노드에서만 작동합니다.", + "siteWgDescriptionSaas": "Use any WireGuard client to establish a tunnel. Manual NAT setup required.", "siteLocalDescription": "로컬 리소스만 사용 가능합니다. 터널링이 없습니다.", - "siteLocalDescriptionSaas": "로컬 리소스만. 터널링 없음. 자체 호스팅 노드에서만 작동합니다.", + "siteLocalDescriptionSaas": "Local resources only. No tunneling.", "siteSeeAll": "모든 사이트 보기", "siteTunnelDescription": "사이트에 연결하는 방법을 결정하세요", "siteNewtCredentials": "Newt 자격 증명", @@ -159,7 +159,7 @@ "resourceHTTP": "HTTPS 리소스", "resourceHTTPDescription": "서브도메인 또는 기본 도메인을 사용하여 HTTPS를 통해 앱에 대한 요청을 프록시합니다.", "resourceRaw": "원시 TCP/UDP 리소스", - "resourceRawDescription": "TCP/UDP를 통해 포트 번호를 사용하여 앱에 요청을 프록시합니다.", + "resourceRawDescription": "Proxy requests to your app over TCP/UDP using a port number. This only works when sites are connected to nodes.", "resourceCreate": "리소스 생성", "resourceCreateDescription": "아래 단계를 따라 새 리소스를 생성하세요.", "resourceSeeAll": "모든 리소스 보기", @@ -168,9 +168,9 @@ "siteSelect": "사이트 선택", "siteSearch": "사이트 검색", "siteNotFound": "사이트를 찾을 수 없습니다.", - "selectCountry": "국가 선택하기", - "searchCountries": "국가 검색...", - "noCountryFound": "국가를 찾을 수 없습니다.", + "selectCountry": "Select country", + "searchCountries": "Search countries...", + "noCountryFound": "No country found.", "siteSelectionDescription": "이 사이트는 대상에 대한 연결을 제공합니다.", "resourceType": "리소스 유형", "resourceTypeDescription": "리소스에 접근하는 방법을 결정하세요", @@ -1258,48 +1258,48 @@ "domainPickerSubdomain": "서브도메인: {subdomain}", "domainPickerNamespace": "이름 공간: {namespace}", "domainPickerShowMore": "더보기", - "regionSelectorTitle": "지역 선택", - "regionSelectorInfo": "지역을 선택하면 위치에 따라 더 나은 성능이 제공됩니다. 서버와 같은 지역에 있을 필요는 없습니다.", - "regionSelectorPlaceholder": "지역 선택", - "regionSelectorComingSoon": "곧 출시 예정", - "billingLoadingSubscription": "구독 불러오는 중...", - "billingFreeTier": "무료 티어", - "billingWarningOverLimit": "경고: 하나 이상의 사용 한도를 초과했습니다. 구독을 수정하거나 사용량을 조정하기 전까지 사이트는 연결되지 않습니다.", - "billingUsageLimitsOverview": "사용 한도 개요", - "billingMonitorUsage": "설정된 한도에 대한 사용량을 모니터링합니다. 한도를 늘려야 하는 경우 support@fossorial.io로 연락하십시오.", - "billingDataUsage": "데이터 사용량", - "billingOnlineTime": "사이트 온라인 시간", - "billingUsers": "활성 사용자", - "billingDomains": "활성 도메인", - "billingRemoteExitNodes": "활성 자체 호스팅 노드", - "billingNoLimitConfigured": "구성된 한도가 없습니다.", - "billingEstimatedPeriod": "예상 청구 기간", - "billingIncludedUsage": "포함 사용량", - "billingIncludedUsageDescription": "현재 구독 계획에 포함된 사용량", - "billingFreeTierIncludedUsage": "무료 티어 사용 허용량", - "billingIncluded": "포함됨", - "billingEstimatedTotal": "예상 총액:", - "billingNotes": "노트", - "billingEstimateNote": "현재 사용량을 기반으로 한 추정치입니다.", - "billingActualChargesMayVary": "실제 청구 금액은 다를 수 있습니다.", - "billingBilledAtEnd": "청구 기간이 끝난 후 청구됩니다.", - "billingModifySubscription": "구독 수정", - "billingStartSubscription": "구독 시작", - "billingRecurringCharge": "반복 요금", - "billingManageSubscriptionSettings": "구독 설정 및 기본 설정을 관리합니다", - "billingNoActiveSubscription": "활성 구독이 없습니다. 사용 한도를 늘리려면 구독을 시작하십시오.", - "billingFailedToLoadSubscription": "구독을 불러오는 데 실패했습니다.", - "billingFailedToLoadUsage": "사용량을 불러오는 데 실패했습니다.", - "billingFailedToGetCheckoutUrl": "체크아웃 URL을 가져오는 데 실패했습니다.", - "billingPleaseTryAgainLater": "나중에 다시 시도하십시오.", - "billingCheckoutError": "체크아웃 오류", - "billingFailedToGetPortalUrl": "포털 URL을 가져오는 데 실패했습니다.", - "billingPortalError": "포털 오류", - "billingDataUsageInfo": "클라우드에 연결할 때 보안 터널을 통해 전송된 모든 데이터에 대해 비용이 청구됩니다. 여기에는 모든 사이트의 들어오고 나가는 트래픽이 포함됩니다. 사용량 한도에 도달하면 플랜을 업그레이드하거나 사용량을 줄일 때까지 사이트가 연결 해제됩니다. 노드를 사용하는 경우 데이터는 요금이 청구되지 않습니다.", - "billingOnlineTimeInfo": "사이트가 클라우드에 연결된 시간에 따라 요금이 청구됩니다. 예를 들어, 44,640분은 사이트가 한 달 내내 24시간 작동하는 것과 같습니다. 사용량 한도에 도달하면 플랜을 업그레이드하거나 사용량을 줄일 때까지 사이트가 연결 해제됩니다. 노드를 사용할 때 시간은 요금이 청구되지 않습니다.", - "billingUsersInfo": "조직의 사용자마다 요금이 청구됩니다. 청구는 조직의 활성 사용자 계정 수에 따라 매일 계산됩니다.", - "billingDomainInfo": "조직의 도메인마다 요금이 청구됩니다. 청구는 조직의 활성 도메인 계정 수에 따라 매일 계산됩니다.", - "billingRemoteExitNodesInfo": "조직의 관리 노드마다 요금이 청구됩니다. 청구는 조직의 활성 관리 노드 수에 따라 매일 계산됩니다.", + "regionSelectorTitle": "Select Region", + "regionSelectorInfo": "Selecting a region helps us provide better performance for your location. You do not have to be in the same region as your server.", + "regionSelectorPlaceholder": "Choose a region", + "regionSelectorComingSoon": "Coming Soon", + "billingLoadingSubscription": "Loading subscription...", + "billingFreeTier": "Free Tier", + "billingWarningOverLimit": "Warning: You have exceeded one or more usage limits. Your sites will not connect until you modify your subscription or adjust your usage.", + "billingUsageLimitsOverview": "Usage Limits Overview", + "billingMonitorUsage": "Monitor your usage against configured limits. If you need limits increased please contact us support@fossorial.io.", + "billingDataUsage": "Data Usage", + "billingOnlineTime": "Site Online Time", + "billingUsers": "Active Users", + "billingDomains": "Active Domains", + "billingRemoteExitNodes": "Active Self-hosted Nodes", + "billingNoLimitConfigured": "No limit configured", + "billingEstimatedPeriod": "Estimated Billing Period", + "billingIncludedUsage": "Included Usage", + "billingIncludedUsageDescription": "Usage included with your current subscription plan", + "billingFreeTierIncludedUsage": "Free tier usage allowances", + "billingIncluded": "included", + "billingEstimatedTotal": "Estimated Total:", + "billingNotes": "Notes", + "billingEstimateNote": "This is an estimate based on your current usage.", + "billingActualChargesMayVary": "Actual charges may vary.", + "billingBilledAtEnd": "You will be billed at the end of the billing period.", + "billingModifySubscription": "Modify Subscription", + "billingStartSubscription": "Start Subscription", + "billingRecurringCharge": "Recurring Charge", + "billingManageSubscriptionSettings": "Manage your subscription settings and preferences", + "billingNoActiveSubscription": "You don't have an active subscription. Start your subscription to increase usage limits.", + "billingFailedToLoadSubscription": "Failed to load subscription", + "billingFailedToLoadUsage": "Failed to load usage", + "billingFailedToGetCheckoutUrl": "Failed to get checkout URL", + "billingPleaseTryAgainLater": "Please try again later.", + "billingCheckoutError": "Checkout Error", + "billingFailedToGetPortalUrl": "Failed to get portal URL", + "billingPortalError": "Portal Error", + "billingDataUsageInfo": "You're charged for all data transferred through your secure tunnels when connected to the cloud. This includes both incoming and outgoing traffic across all your sites. When you reach your limit, your sites will disconnect until you upgrade your plan or reduce usage. Data is not charged when using nodes.", + "billingOnlineTimeInfo": "You're charged based on how long your sites stay connected to the cloud. For example, 44,640 minutes equals one site running 24/7 for a full month. When you reach your limit, your sites will disconnect until you upgrade your plan or reduce usage. Time is not charged when using nodes.", + "billingUsersInfo": "You're charged for each user in your organization. Billing is calculated daily based on the number of active user accounts in your org.", + "billingDomainInfo": "You're charged for each domain in your organization. Billing is calculated daily based on the number of active domain accounts in your org.", + "billingRemoteExitNodesInfo": "You're charged for each managed Node in your organization. Billing is calculated daily based on the number of active managed Nodes in your org.", "domainNotFound": "도메인을 찾을 수 없습니다", "domainNotFoundDescription": "이 리소스는 도메인이 더 이상 시스템에 존재하지 않아 비활성화되었습니다. 이 리소스에 대한 새 도메인을 설정하세요.", "failed": "실패", @@ -1363,7 +1363,7 @@ "createDomainDnsPropagationDescription": "DNS 변경 사항은 인터넷 전체에 전파되는 데 시간이 걸립니다. DNS 제공자와 TTL 설정에 따라 몇 분에서 48시간까지 걸릴 수 있습니다.", "resourcePortRequired": "HTTP 리소스가 아닌 경우 포트 번호가 필요합니다", "resourcePortNotAllowed": "HTTP 리소스에 대해 포트 번호를 설정하지 마세요", - "billingPricingCalculatorLink": "가격 계산기", + "billingPricingCalculatorLink": "Pricing Calculator", "signUpTerms": { "IAgreeToThe": "동의합니다", "termsOfService": "서비스 약관", @@ -1412,41 +1412,41 @@ "addNewTarget": "새 대상 추가", "targetsList": "대상 목록", "targetErrorDuplicateTargetFound": "중복 대상 발견", - "healthCheckHealthy": "정상", - "healthCheckUnhealthy": "비정상", - "healthCheckUnknown": "알 수 없음", - "healthCheck": "상태 확인", - "configureHealthCheck": "상태 확인 설정", - "configureHealthCheckDescription": "{target}에 대한 상태 모니터링 설정", - "enableHealthChecks": "상태 확인 활성화", - "enableHealthChecksDescription": "이 대상을 모니터링하여 건강 상태를 확인하세요. 필요에 따라 대상과 다른 엔드포인트를 모니터링할 수 있습니다.", - "healthScheme": "방법", - "healthSelectScheme": "방법 선택", - "healthCheckPath": "경로", - "healthHostname": "IP / 호스트", - "healthPort": "포트", - "healthCheckPathDescription": "상태 확인을 위한 경로입니다.", - "healthyIntervalSeconds": "정상 간격", - "unhealthyIntervalSeconds": "비정상 간격", - "IntervalSeconds": "정상 간격", - "timeoutSeconds": "시간 초과", - "timeIsInSeconds": "시간은 초 단위입니다", - "retryAttempts": "재시도 횟수", - "expectedResponseCodes": "예상 응답 코드", - "expectedResponseCodesDescription": "정상 상태를 나타내는 HTTP 상태 코드입니다. 비워 두면 200-300이 정상으로 간주됩니다.", + "healthCheckHealthy": "Healthy", + "healthCheckUnhealthy": "Unhealthy", + "healthCheckUnknown": "Unknown", + "healthCheck": "Health Check", + "configureHealthCheck": "Configure Health Check", + "configureHealthCheckDescription": "Set up health monitoring for {target}", + "enableHealthChecks": "Enable Health Checks", + "enableHealthChecksDescription": "Monitor the health of this target. You can monitor a different endpoint than the target if required.", + "healthScheme": "Method", + "healthSelectScheme": "Select Method", + "healthCheckPath": "Path", + "healthHostname": "IP / Host", + "healthPort": "Port", + "healthCheckPathDescription": "The path to check for health status.", + "healthyIntervalSeconds": "Healthy Interval", + "unhealthyIntervalSeconds": "Unhealthy Interval", + "IntervalSeconds": "Healthy Interval", + "timeoutSeconds": "Timeout", + "timeIsInSeconds": "Time is in seconds", + "retryAttempts": "Retry Attempts", + "expectedResponseCodes": "Expected Response Codes", + "expectedResponseCodesDescription": "HTTP status code that indicates healthy status. If left blank, 200-300 is considered healthy.", "customHeaders": "사용자 정의 헤더", - "customHeadersDescription": "헤더는 새 줄로 구분됨: Header-Name: value", - "headersValidationError": "헤더는 형식이어야 합니다: 헤더명: 값.", - "saveHealthCheck": "상태 확인 저장", - "healthCheckSaved": "상태 확인이 저장되었습니다.", - "healthCheckSavedDescription": "상태 확인 구성이 성공적으로 저장되었습니다", - "healthCheckError": "상태 확인 오류", - "healthCheckErrorDescription": "상태 확인 구성을 저장하는 동안 오류가 발생했습니다", - "healthCheckPathRequired": "상태 확인 경로는 필수입니다.", - "healthCheckMethodRequired": "HTTP 방법은 필수입니다.", - "healthCheckIntervalMin": "확인 간격은 최소 5초여야 합니다.", - "healthCheckTimeoutMin": "시간 초과는 최소 1초여야 합니다.", - "healthCheckRetryMin": "재시도 횟수는 최소 1회여야 합니다.", + "customHeadersDescription": "Headers new line separated: Header-Name: value", + "headersValidationError": "Headers must be in the format: Header-Name: value", + "saveHealthCheck": "Save Health Check", + "healthCheckSaved": "Health Check Saved", + "healthCheckSavedDescription": "Health check configuration has been saved successfully", + "healthCheckError": "Health Check Error", + "healthCheckErrorDescription": "An error occurred while saving the health check configuration", + "healthCheckPathRequired": "Health check path is required", + "healthCheckMethodRequired": "HTTP method is required", + "healthCheckIntervalMin": "Check interval must be at least 5 seconds", + "healthCheckTimeoutMin": "Timeout must be at least 1 second", + "healthCheckRetryMin": "Retry attempts must be at least 1", "httpMethod": "HTTP 메소드", "selectHttpMethod": "HTTP 메소드 선택", "domainPickerSubdomainLabel": "서브도메인", @@ -1460,7 +1460,7 @@ "domainPickerEnterSubdomainToSearch": "사용 가능한 무료 도메인에서 검색 및 선택할 서브도메인 입력.", "domainPickerFreeDomains": "무료 도메인", "domainPickerSearchForAvailableDomains": "사용 가능한 도메인 검색", - "domainPickerNotWorkSelfHosted": "참고: 무료 제공 도메인은 현재 자체 호스팅 인스턴스에 사용할 수 없습니다.", + "domainPickerNotWorkSelfHosted": "Note: Free provided domains are not available for self-hosted instances right now.", "resourceDomain": "도메인", "resourceEditDomain": "도메인 수정", "siteName": "사이트 이름", @@ -1543,72 +1543,72 @@ "autoLoginError": "자동 로그인 오류", "autoLoginErrorNoRedirectUrl": "ID 공급자로부터 리디렉션 URL을 받지 못했습니다.", "autoLoginErrorGeneratingUrl": "인증 URL 생성 실패.", - "remoteExitNodeManageRemoteExitNodes": "관리 자체 호스팅", - "remoteExitNodeDescription": "네트워크 연결성을 확장하기 위해 노드를 관리하세요", - "remoteExitNodes": "노드", - "searchRemoteExitNodes": "노드 검색...", - "remoteExitNodeAdd": "노드 추가", - "remoteExitNodeErrorDelete": "노드 삭제 오류", - "remoteExitNodeQuestionRemove": "조직에서 노드 {selectedNode}를 제거하시겠습니까?", - "remoteExitNodeMessageRemove": "한 번 제거되면 더 이상 노드에 접근할 수 없습니다.", - "remoteExitNodeMessageConfirm": "확인을 위해 아래에 노드 이름을 입력해 주세요.", - "remoteExitNodeConfirmDelete": "노드 삭제 확인", - "remoteExitNodeDelete": "노드 삭제", - "sidebarRemoteExitNodes": "노드", + "remoteExitNodeManageRemoteExitNodes": "Manage Self-Hosted", + "remoteExitNodeDescription": "Manage nodes to extend your network connectivity", + "remoteExitNodes": "Nodes", + "searchRemoteExitNodes": "Search nodes...", + "remoteExitNodeAdd": "Add Node", + "remoteExitNodeErrorDelete": "Error deleting node", + "remoteExitNodeQuestionRemove": "Are you sure you want to remove the node {selectedNode} from the organization?", + "remoteExitNodeMessageRemove": "Once removed, the node will no longer be accessible.", + "remoteExitNodeMessageConfirm": "To confirm, please type the name of the node below.", + "remoteExitNodeConfirmDelete": "Confirm Delete Node", + "remoteExitNodeDelete": "Delete Node", + "sidebarRemoteExitNodes": "Nodes", "remoteExitNodeCreate": { - "title": "노드 생성", - "description": "네트워크 연결성을 확장하기 위해 새 노드를 생성하세요", - "viewAllButton": "모든 노드 보기", + "title": "Create Node", + "description": "Create a new node to extend your network connectivity", + "viewAllButton": "View All Nodes", "strategy": { - "title": "생성 전략", - "description": "노드를 직접 구성하거나 새 자격 증명을 생성하려면 이것을 선택하세요.", + "title": "Creation Strategy", + "description": "Choose this to manually configure your node or generate new credentials.", "adopt": { - "title": "노드 채택", - "description": "이미 노드의 자격 증명이 있는 경우 이것을 선택하세요." + "title": "Adopt Node", + "description": "Choose this if you already have the credentials for the node." }, "generate": { - "title": "키 생성", - "description": "노드에 대한 새 키를 생성하려면 이것을 선택하세요" + "title": "Generate Keys", + "description": "Choose this if you want to generate new keys for the node" } }, "adopt": { - "title": "기존 노드 채택", - "description": "채택하려는 기존 노드의 자격 증명을 입력하세요", - "nodeIdLabel": "노드 ID", - "nodeIdDescription": "채택하려는 기존 노드의 ID", - "secretLabel": "비밀", - "secretDescription": "기존 노드의 비밀 키", - "submitButton": "노드 채택" + "title": "Adopt Existing Node", + "description": "Enter the credentials of the existing node you want to adopt", + "nodeIdLabel": "Node ID", + "nodeIdDescription": "The ID of the existing node you want to adopt", + "secretLabel": "Secret", + "secretDescription": "The secret key of the existing node", + "submitButton": "Adopt Node" }, "generate": { - "title": "생성된 자격 증명", - "description": "생성된 자격 증명을 사용하여 노드를 구성하세요", - "nodeIdTitle": "노드 ID", - "secretTitle": "비밀", - "saveCredentialsTitle": "구성에 자격 증명 추가", - "saveCredentialsDescription": "연결을 완료하려면 이러한 자격 증명을 자체 호스팅 Pangolin 노드 구성 파일에 추가하십시오.", - "submitButton": "노드 생성" + "title": "Generated Credentials", + "description": "Use these generated credentials to configure your node", + "nodeIdTitle": "Node ID", + "secretTitle": "Secret", + "saveCredentialsTitle": "Add Credentials to Config", + "saveCredentialsDescription": "Add these credentials to your self-hosted Pangolin node configuration file to complete the connection.", + "submitButton": "Create Node" }, "validation": { - "adoptRequired": "기존 노드를 채택하려면 노드 ID와 비밀 키가 필요합니다" + "adoptRequired": "Node ID and Secret are required when adopting an existing node" }, "errors": { - "loadDefaultsFailed": "기본값 로드 실패", - "defaultsNotLoaded": "기본값 로드되지 않음", - "createFailed": "노드 생성 실패" + "loadDefaultsFailed": "Failed to load defaults", + "defaultsNotLoaded": "Defaults not loaded", + "createFailed": "Failed to create node" }, "success": { - "created": "노드가 성공적으로 생성되었습니다" + "created": "Node created successfully" } }, - "remoteExitNodeSelection": "노드 선택", - "remoteExitNodeSelectionDescription": "이 로컬 사이트에서 트래픽을 라우팅할 노드를 선택하세요", - "remoteExitNodeRequired": "로컬 사이트에 노드를 선택해야 합니다", - "noRemoteExitNodesAvailable": "사용 가능한 노드가 없습니다", - "noRemoteExitNodesAvailableDescription": "이 조직에 사용 가능한 노드가 없습니다. 로컬 사이트를 사용하려면 먼저 노드를 생성하세요.", - "exitNode": "종단 노드", - "country": "국가", - "rulesMatchCountry": "현재 소스 IP를 기반으로 합니다", + "remoteExitNodeSelection": "Node Selection", + "remoteExitNodeSelectionDescription": "Select a node to route traffic through for this local site", + "remoteExitNodeRequired": "A node must be selected for local sites", + "noRemoteExitNodesAvailable": "No Nodes Available", + "noRemoteExitNodesAvailableDescription": "No nodes are available for this organization. Create a node first to use local sites.", + "exitNode": "Exit Node", + "country": "Country", + "rulesMatchCountry": "Currently based on source IP", "managedSelfHosted": { "title": "관리 자체 호스팅", "description": "더 신뢰할 수 있고 낮은 유지보수의 자체 호스팅 팡골린 서버, 추가 기능 포함", @@ -1647,53 +1647,53 @@ }, "internationaldomaindetected": "국제 도메인 감지됨", "willbestoredas": "다음으로 저장됩니다:", - "roleMappingDescription": "자동 프로비저닝이 활성화되면 사용자가 로그인할 때 역할이 할당되는 방법을 결정합니다.", - "selectRole": "역할 선택", - "roleMappingExpression": "표현식", - "selectRolePlaceholder": "역할 선택", - "selectRoleDescription": "이 신원 공급자로부터 모든 사용자에게 할당할 역할을 선택하십시오.", - "roleMappingExpressionDescription": "ID 토큰에서 역할 정보를 추출하기 위한 JMESPath 표현식을 입력하세요.", - "idpTenantIdRequired": "테넌트 ID가 필요합니다", - "invalidValue": "잘못된 값", - "idpTypeLabel": "신원 공급자 유형", - "roleMappingExpressionPlaceholder": "예: contains(groups, 'admin') && 'Admin' || 'Member'", - "idpGoogleConfiguration": "Google 구성", - "idpGoogleConfigurationDescription": "Google OAuth2 자격 증명을 구성합니다.", - "idpGoogleClientIdDescription": "Google OAuth2 클라이언트 ID", - "idpGoogleClientSecretDescription": "Google OAuth2 클라이언트 비밀", - "idpAzureConfiguration": "Azure Entra ID 구성", - "idpAzureConfigurationDescription": "Azure Entra ID OAuth2 자격 증명을 구성합니다.", - "idpTenantId": "테넌트 ID", + "roleMappingDescription": "Determine how roles are assigned to users when they sign in when Auto Provision is enabled.", + "selectRole": "Select a Role", + "roleMappingExpression": "Expression", + "selectRolePlaceholder": "Choose a role", + "selectRoleDescription": "Select a role to assign to all users from this identity provider", + "roleMappingExpressionDescription": "Enter a JMESPath expression to extract role information from the ID token", + "idpTenantIdRequired": "Tenant ID is required", + "invalidValue": "Invalid value", + "idpTypeLabel": "Identity Provider Type", + "roleMappingExpressionPlaceholder": "e.g., contains(groups, 'admin') && 'Admin' || 'Member'", + "idpGoogleConfiguration": "Google Configuration", + "idpGoogleConfigurationDescription": "Configure your Google OAuth2 credentials", + "idpGoogleClientIdDescription": "Your Google OAuth2 Client ID", + "idpGoogleClientSecretDescription": "Your Google OAuth2 Client Secret", + "idpAzureConfiguration": "Azure Entra ID Configuration", + "idpAzureConfigurationDescription": "Configure your Azure Entra ID OAuth2 credentials", + "idpTenantId": "Tenant ID", "idpTenantIdPlaceholder": "your-tenant-id", - "idpAzureTenantIdDescription": "Azure 액티브 디렉터리 개요에서 찾은 Azure 테넌트 ID", - "idpAzureClientIdDescription": "Azure 앱 등록 클라이언트 ID", - "idpAzureClientSecretDescription": "Azure 앱 등록 클라이언트 비밀", + "idpAzureTenantIdDescription": "Your Azure tenant ID (found in Azure Active Directory overview)", + "idpAzureClientIdDescription": "Your Azure App Registration Client ID", + "idpAzureClientSecretDescription": "Your Azure App Registration Client Secret", "idpGoogleTitle": "Google", "idpGoogleAlt": "구글", "idpAzureTitle": "Azure Entra ID", "idpAzureAlt": "애저", - "idpGoogleConfigurationTitle": "Google 구성", - "idpAzureConfigurationTitle": "Azure Entra ID 구성", - "idpTenantIdLabel": "테넌트 ID", - "idpAzureClientIdDescription2": "Azure 앱 등록 클라이언트 ID", - "idpAzureClientSecretDescription2": "Azure 앱 등록 클라이언트 비밀", + "idpGoogleConfigurationTitle": "Google Configuration", + "idpAzureConfigurationTitle": "Azure Entra ID Configuration", + "idpTenantIdLabel": "Tenant ID", + "idpAzureClientIdDescription2": "Your Azure App Registration Client ID", + "idpAzureClientSecretDescription2": "Your Azure App Registration Client Secret", "idpGoogleDescription": "Google OAuth2/OIDC 공급자", "idpAzureDescription": "Microsoft Azure OAuth2/OIDC 공급자", - "subnet": "서브넷", - "subnetDescription": "이 조직의 네트워크 구성에 대한 서브넷입니다.", - "authPage": "인증 페이지", - "authPageDescription": "조직에 대한 인증 페이지를 구성합니다.", - "authPageDomain": "인증 페이지 도메인", - "noDomainSet": "도메인 설정 없음", - "changeDomain": "도메인 변경", - "selectDomain": "도메인 선택", - "restartCertificate": "인증서 재시작", - "editAuthPageDomain": "인증 페이지 도메인 편집", - "setAuthPageDomain": "인증 페이지 도메인 설정", - "failedToFetchCertificate": "인증서 가져오기 실패", - "failedToRestartCertificate": "인증서 재시작 실패", - "addDomainToEnableCustomAuthPages": "조직의 맞춤 인증 페이지를 활성화하려면 도메인을 추가하세요.", - "selectDomainForOrgAuthPage": "조직 인증 페이지에 대한 도메인을 선택하세요.", + "subnet": "Subnet", + "subnetDescription": "The subnet for this organization's network configuration.", + "authPage": "Auth Page", + "authPageDescription": "Configure the auth page for your organization", + "authPageDomain": "Auth Page Domain", + "noDomainSet": "No domain set", + "changeDomain": "Change Domain", + "selectDomain": "Select Domain", + "restartCertificate": "Restart Certificate", + "editAuthPageDomain": "Edit Auth Page Domain", + "setAuthPageDomain": "Set Auth Page Domain", + "failedToFetchCertificate": "Failed to fetch certificate", + "failedToRestartCertificate": "Failed to restart certificate", + "addDomainToEnableCustomAuthPages": "Add a domain to enable custom authentication pages for your organization", + "selectDomainForOrgAuthPage": "Select a domain for the organization's authentication page", "domainPickerProvidedDomain": "제공된 도메인", "domainPickerFreeProvidedDomain": "무료 제공된 도메인", "domainPickerVerified": "검증됨", @@ -1707,16 +1707,21 @@ "domainPickerInvalidSubdomainCannotMakeValid": "\"{sub}\"을(를) {domain}에 대해 유효하게 만들 수 없습니다.", "domainPickerSubdomainSanitized": "하위 도메인 정리됨", "domainPickerSubdomainCorrected": "\"{sub}\"이(가) \"{sanitized}\"로 수정되었습니다", - "orgAuthSignInTitle": "조직에 로그인", - "orgAuthChooseIdpDescription": "계속하려면 신원 공급자를 선택하세요.", - "orgAuthNoIdpConfigured": "이 조직은 구성된 신원 공급자가 없습니다. 대신 Pangolin 아이덴티티로 로그인할 수 있습니다.", - "orgAuthSignInWithPangolin": "Pangolin으로 로그인", - "subscriptionRequiredToUse": "이 기능을 사용하려면 구독이 필요합니다.", - "idpDisabled": "신원 공급자가 비활성화되었습니다.", - "orgAuthPageDisabled": "조직 인증 페이지가 비활성화되었습니다.", - "domainRestartedDescription": "도메인 인증이 성공적으로 재시작되었습니다.", + "orgAuthSignInTitle": "Sign in to your organization", + "orgAuthChooseIdpDescription": "Choose your identity provider to continue", + "orgAuthNoIdpConfigured": "This organization doesn't have any identity providers configured. You can log in with your Pangolin identity instead.", + "orgAuthSignInWithPangolin": "Sign in with Pangolin", + "subscriptionRequiredToUse": "A subscription is required to use this feature.", + "idpDisabled": "Identity providers are disabled.", + "orgAuthPageDisabled": "Organization auth page is disabled.", + "domainRestartedDescription": "Domain verification restarted successfully", "resourceAddEntrypointsEditFile": "파일 편집: config/traefik/traefik_config.yml", "resourceExposePortsEditFile": "파일 편집: docker-compose.yml", "emailVerificationRequired": "이메일 인증이 필요합니다. 이 단계를 완료하려면 {dashboardUrl}/auth/login 통해 다시 로그인하십시오. 그런 다음 여기로 돌아오세요.", - "twoFactorSetupRequired": "이중 인증 설정이 필요합니다. 이 단계를 완료하려면 {dashboardUrl}/auth/login 통해 다시 로그인하십시오. 그런 다음 여기로 돌아오세요." + "twoFactorSetupRequired": "이중 인증 설정이 필요합니다. 이 단계를 완료하려면 {dashboardUrl}/auth/login 통해 다시 로그인하십시오. 그런 다음 여기로 돌아오세요.", + "authPageErrorUpdateMessage": "An error occurred while updating the auth page settings", + "authPageUpdated": "Auth page updated successfully", + "healthCheckNotAvailable": "Local", + "rewritePath": "Rewrite Path", + "rewritePathDescription": "Optionally rewrite the path before forwarding to the target." }