This commit is contained in:
Owen
2025-10-04 18:36:44 -07:00
parent 3123f858bb
commit c2c907852d
320 changed files with 35785 additions and 2984 deletions

View File

@@ -168,6 +168,9 @@
"siteSelect": "사이트 선택",
"siteSearch": "사이트 검색",
"siteNotFound": "사이트를 찾을 수 없습니다.",
"selectCountry": "국가 선택하기",
"searchCountries": "국가 검색...",
"noCountryFound": "국가를 찾을 수 없습니다.",
"siteSelectionDescription": "이 사이트는 대상에 대한 연결을 제공합니다.",
"resourceType": "리소스 유형",
"resourceTypeDescription": "리소스에 접근하는 방법을 결정하세요",
@@ -914,8 +917,6 @@
"idpConnectingToFinished": "연결됨",
"idpErrorConnectingTo": "{name}에 연결하는 데 문제가 발생했습니다. 관리자에게 문의하십시오.",
"idpErrorNotFound": "IdP를 찾을 수 없습니다.",
"idpGoogleAlt": "구글",
"idpAzureAlt": "애저",
"inviteInvalid": "유효하지 않은 초대",
"inviteInvalidDescription": "초대 링크가 유효하지 않습니다.",
"inviteErrorWrongUser": "이 초대는 이 사용자에게 해당되지 않습니다",
@@ -1257,6 +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": "조직의 관리 노드마다 요금이 청구됩니다. 청구는 조직의 활성 관리 노드 수에 따라 매일 계산됩니다.",
"domainNotFound": "도메인을 찾을 수 없습니다",
"domainNotFoundDescription": "이 리소스는 도메인이 더 이상 시스템에 존재하지 않아 비활성화되었습니다. 이 리소스에 대한 새 도메인을 설정하세요.",
"failed": "실패",
@@ -1320,6 +1363,7 @@
"createDomainDnsPropagationDescription": "DNS 변경 사항은 인터넷 전체에 전파되는 데 시간이 걸립니다. DNS 제공자와 TTL 설정에 따라 몇 분에서 48시간까지 걸릴 수 있습니다.",
"resourcePortRequired": "HTTP 리소스가 아닌 경우 포트 번호가 필요합니다",
"resourcePortNotAllowed": "HTTP 리소스에 대해 포트 번호를 설정하지 마세요",
"billingPricingCalculatorLink": "가격 계산기",
"signUpTerms": {
"IAgreeToThe": "동의합니다",
"termsOfService": "서비스 약관",
@@ -1368,6 +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이 정상으로 간주됩니다.",
"customHeaders": "사용자 정의 헤더",
"customHeadersDescription": "헤더는 새 줄로 구분됨: Header-Name: value",
"headersValidationError": "헤더는 형식이어야 합니다: 헤더명: 값.",
"saveHealthCheck": "상태 확인 저장",
"healthCheckSaved": "상태 확인이 저장되었습니다.",
"healthCheckSavedDescription": "상태 확인 구성이 성공적으로 저장되었습니다",
"healthCheckError": "상태 확인 오류",
"healthCheckErrorDescription": "상태 확인 구성을 저장하는 동안 오류가 발생했습니다",
"healthCheckPathRequired": "상태 확인 경로는 필수입니다.",
"healthCheckMethodRequired": "HTTP 방법은 필수입니다.",
"healthCheckIntervalMin": "확인 간격은 최소 5초여야 합니다.",
"healthCheckTimeoutMin": "시간 초과는 최소 1초여야 합니다.",
"healthCheckRetryMin": "재시도 횟수는 최소 1회여야 합니다.",
"httpMethod": "HTTP 메소드",
"selectHttpMethod": "HTTP 메소드 선택",
"domainPickerSubdomainLabel": "서브도메인",
@@ -1381,6 +1460,7 @@
"domainPickerEnterSubdomainToSearch": "사용 가능한 무료 도메인에서 검색 및 선택할 서브도메인 입력.",
"domainPickerFreeDomains": "무료 도메인",
"domainPickerSearchForAvailableDomains": "사용 가능한 도메인 검색",
"domainPickerNotWorkSelfHosted": "참고: 무료 제공 도메인은 현재 자체 호스팅 인스턴스에 사용할 수 없습니다.",
"resourceDomain": "도메인",
"resourceEditDomain": "도메인 수정",
"siteName": "사이트 이름",
@@ -1463,6 +1543,72 @@
"autoLoginError": "자동 로그인 오류",
"autoLoginErrorNoRedirectUrl": "ID 공급자로부터 리디렉션 URL을 받지 못했습니다.",
"autoLoginErrorGeneratingUrl": "인증 URL 생성 실패.",
"remoteExitNodeManageRemoteExitNodes": "관리 자체 호스팅",
"remoteExitNodeDescription": "네트워크 연결성을 확장하기 위해 노드를 관리하세요",
"remoteExitNodes": "노드",
"searchRemoteExitNodes": "노드 검색...",
"remoteExitNodeAdd": "노드 추가",
"remoteExitNodeErrorDelete": "노드 삭제 오류",
"remoteExitNodeQuestionRemove": "조직에서 노드 {selectedNode}를 제거하시겠습니까?",
"remoteExitNodeMessageRemove": "한 번 제거되면 더 이상 노드에 접근할 수 없습니다.",
"remoteExitNodeMessageConfirm": "확인을 위해 아래에 노드 이름을 입력해 주세요.",
"remoteExitNodeConfirmDelete": "노드 삭제 확인",
"remoteExitNodeDelete": "노드 삭제",
"sidebarRemoteExitNodes": "노드",
"remoteExitNodeCreate": {
"title": "노드 생성",
"description": "네트워크 연결성을 확장하기 위해 새 노드를 생성하세요",
"viewAllButton": "모든 노드 보기",
"strategy": {
"title": "생성 전략",
"description": "노드를 직접 구성하거나 새 자격 증명을 생성하려면 이것을 선택하세요.",
"adopt": {
"title": "노드 채택",
"description": "이미 노드의 자격 증명이 있는 경우 이것을 선택하세요."
},
"generate": {
"title": "키 생성",
"description": "노드에 대한 새 키를 생성하려면 이것을 선택하세요"
}
},
"adopt": {
"title": "기존 노드 채택",
"description": "채택하려는 기존 노드의 자격 증명을 입력하세요",
"nodeIdLabel": "노드 ID",
"nodeIdDescription": "채택하려는 기존 노드의 ID",
"secretLabel": "비밀",
"secretDescription": "기존 노드의 비밀 키",
"submitButton": "노드 채택"
},
"generate": {
"title": "생성된 자격 증명",
"description": "생성된 자격 증명을 사용하여 노드를 구성하세요",
"nodeIdTitle": "노드 ID",
"secretTitle": "비밀",
"saveCredentialsTitle": "구성에 자격 증명 추가",
"saveCredentialsDescription": "연결을 완료하려면 이러한 자격 증명을 자체 호스팅 Pangolin 노드 구성 파일에 추가하십시오.",
"submitButton": "노드 생성"
},
"validation": {
"adoptRequired": "기존 노드를 채택하려면 노드 ID와 비밀 키가 필요합니다"
},
"errors": {
"loadDefaultsFailed": "기본값 로드 실패",
"defaultsNotLoaded": "기본값 로드되지 않음",
"createFailed": "노드 생성 실패"
},
"success": {
"created": "노드가 성공적으로 생성되었습니다"
}
},
"remoteExitNodeSelection": "노드 선택",
"remoteExitNodeSelectionDescription": "이 로컬 사이트에서 트래픽을 라우팅할 노드를 선택하세요",
"remoteExitNodeRequired": "로컬 사이트에 노드를 선택해야 합니다",
"noRemoteExitNodesAvailable": "사용 가능한 노드가 없습니다",
"noRemoteExitNodesAvailableDescription": "이 조직에 사용 가능한 노드가 없습니다. 로컬 사이트를 사용하려면 먼저 노드를 생성하세요.",
"exitNode": "종단 노드",
"country": "국가",
"rulesMatchCountry": "현재 소스 IP를 기반으로 합니다",
"managedSelfHosted": {
"title": "관리 자체 호스팅",
"description": "더 신뢰할 수 있고 낮은 유지보수의 자체 호스팅 팡골린 서버, 추가 기능 포함",
@@ -1501,11 +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",
"idpTenantIdPlaceholder": "your-tenant-id",
"idpAzureTenantIdDescription": "Azure 액티브 디렉터리 개요에서 찾은 Azure 테넌트 ID",
"idpAzureClientIdDescription": "Azure 앱 등록 클라이언트 ID",
"idpAzureClientSecretDescription": "Azure 앱 등록 클라이언트 비밀",
"idpGoogleTitle": "Google",
"idpGoogleAlt": "구글",
"idpAzureTitle": "Azure Entra ID",
"idpAzureAlt": "애저",
"idpGoogleConfigurationTitle": "Google 구성",
"idpAzureConfigurationTitle": "Azure Entra ID 구성",
"idpTenantIdLabel": "테넌트 ID",
"idpAzureClientIdDescription2": "Azure 앱 등록 클라이언트 ID",
"idpAzureClientSecretDescription2": "Azure 앱 등록 클라이언트 비밀",
"idpGoogleDescription": "Google OAuth2/OIDC 공급자",
"idpAzureDescription": "Microsoft Azure OAuth2/OIDC 공급자",
"customHeaders": "사용자 정의 헤더",
"customHeadersDescription": "Add custom headers to be sent when proxying requests. One per line in the format Header-Name: value",
"headersValidationError": "헤더는 형식이어야 합니다: 헤더명: 값.",
"subnet": "서브넷",
"subnetDescription": "이 조직의 네트워크 구성에 대한 서브넷입니다.",
"authPage": "인증 페이지",
"authPageDescription": "조직에 대한 인증 페이지를 구성합니다.",
"authPageDomain": "인증 페이지 도메인",
"noDomainSet": "도메인 설정 없음",
"changeDomain": "도메인 변경",
"selectDomain": "도메인 선택",
"restartCertificate": "인증서 재시작",
"editAuthPageDomain": "인증 페이지 도메인 편집",
"setAuthPageDomain": "인증 페이지 도메인 설정",
"failedToFetchCertificate": "인증서 가져오기 실패",
"failedToRestartCertificate": "인증서 재시작 실패",
"addDomainToEnableCustomAuthPages": "조직의 맞춤 인증 페이지를 활성화하려면 도메인을 추가하세요.",
"selectDomainForOrgAuthPage": "조직 인증 페이지에 대한 도메인을 선택하세요.",
"domainPickerProvidedDomain": "제공된 도메인",
"domainPickerFreeProvidedDomain": "무료 제공된 도메인",
"domainPickerVerified": "검증됨",
@@ -1519,10 +1707,16 @@
"domainPickerInvalidSubdomainCannotMakeValid": "\"{sub}\"을(를) {domain}에 대해 유효하게 만들 수 없습니다.",
"domainPickerSubdomainSanitized": "하위 도메인 정리됨",
"domainPickerSubdomainCorrected": "\"{sub}\"이(가) \"{sanitized}\"로 수정되었습니다",
"orgAuthSignInTitle": "조직에 로그인",
"orgAuthChooseIdpDescription": "계속하려면 신원 공급자를 선택하세요.",
"orgAuthNoIdpConfigured": "이 조직은 구성된 신원 공급자가 없습니다. 대신 Pangolin 아이덴티티로 로그인할 수 있습니다.",
"orgAuthSignInWithPangolin": "Pangolin으로 로그인",
"subscriptionRequiredToUse": "이 기능을 사용하려면 구독이 필요합니다.",
"idpDisabled": "신원 공급자가 비활성화되었습니다.",
"orgAuthPageDisabled": "조직 인증 페이지가 비활성화되었습니다.",
"domainRestartedDescription": "도메인 인증이 성공적으로 재시작되었습니다.",
"resourceAddEntrypointsEditFile": "파일 편집: config/traefik/traefik_config.yml",
"resourceExposePortsEditFile": "파일 편집: docker-compose.yml",
"emailVerificationRequired": "이메일 인증이 필요합니다. 이 단계를 완료하려면 {dashboardUrl}/auth/login 통해 다시 로그인하십시오. 그런 다음 여기로 돌아오세요.",
"twoFactorSetupRequired": "이중 인증 설정이 필요합니다. 이 단계를 완료하려면 {dashboardUrl}/auth/login 통해 다시 로그인하십시오. 그런 다음 여기로 돌아오세요.",
"rewritePath": "Rewrite Path",
"rewritePathDescription": "Optionally rewrite the path before forwarding to the target."
"twoFactorSetupRequired": "이중 인증 설정이 필요합니다. 이 단계를 완료하려면 {dashboardUrl}/auth/login 통해 다시 로그인하십시오. 그런 다음 여기로 돌아오세요."
}