[domain] [domain.affiliation] affiliate = "가족사 임직원" general = "일반 사용자" [domain.company] baron = "바론" halla = "한라" hanmac = "한맥" jangheon = "장헌" ptc = "PTC" saman = "삼안" [domain.tenant_type] company = "COMPANY (일반 기업)" company_group = "COMPANY_GROUP (그룹사/지주사)" organization = "ORGANIZATION (정규 조직)" personal = "PERSONAL (개인 워크스페이스)" user_group = "USER_GROUP (내부 부서/팀)" [err] [err.backend] authorization_pending = "인증 승인이 아직 완료되지 않았습니다." bad_request = "요청 값을 확인해 주세요." conflict = "요청이 현재 상태와 충돌합니다." expired_token = "토큰이 만료되었습니다." forbidden = "요청이 허용되지 않습니다." internal_error = "요청 처리 중 내부 오류가 발생했습니다." invalid_code = "인증 코드가 올바르지 않습니다." invalid_or_expired_code = "인증 코드가 유효하지 않거나 만료되었습니다." invalid_session = "세션이 유효하지 않습니다." invalid_session_reference = "세션 참조 정보가 유효하지 않습니다." not_found = "요청한 인증 흐름을 찾을 수 없습니다." not_supported = "지원하지 않는 로그인 방식입니다." password_or_email_mismatch = "이메일 혹은 비밀번호가 일치하지 않습니다." rate_limited = "요청이 너무 많습니다. 잠시 후 다시 시도해 주세요." service_unavailable = "인증 서비스를 현재 사용할 수 없습니다." slow_down = "요청 간격이 너무 빠릅니다. 잠시 후 다시 시도해 주세요." [err.common] unknown = "알 수 없는 오류가 발생했습니다." [err.userfront] [err.userfront.auth_proxy] consent_accept = "동의 처리에 실패했습니다." consent_fetch = "동의 정보를 가져오지 못했습니다." consent_reject = "동의 거부에 실패했습니다." linked_app_revoke = "연동 해지에 실패했습니다." login_failed = "로그인에 실패했습니다." oidc_accept = "OIDC 로그인 승인에 실패했습니다." password_reset_complete = "비밀번호 재설정에 실패했습니다." password_reset_init = "비밀번호 재설정을 시작하지 못했습니다." [err.userfront.profile] load_failed = "프로필을 불러오지 못했습니다: {{error}}" password_change_failed = "비밀번호 변경에 실패했습니다: {{error}}" send_code_failed = "인증번호 전송 실패: {{error}}" update_failed = "프로필 업데이트에 실패했습니다: {{error}}" verify_code_failed = "인증 실패: {{error}}" [err.userfront.session] missing = "활성 세션이 없습니다." [msg] [msg.admin] idp_env_prod = "IDP env: prod" logout_confirm = "로그아웃 하시겠습니까?" scope_admin = "Scoped to /admin" session_ttl = "Session TTL: 15m admin" tenant_headers = "Tenant-aware headers" [msg.admin.common] forbidden = "이 작업을 수행할 권한이 없습니다." [msg.admin.audit] empty = "아직 수집된 감사 로그가 없습니다." end = "감사 로그의 마지막입니다." load_error = "감사 로그를 불러오지 못했습니다: {{error}}" loading = "감사 로그를 불러오는 중..." subtitle = "Command 요청 기반 ClickHouse 로그를 조회합니다. 사용자/테넌트는 추후 세션 연동 시 자동 채워집니다." [msg.admin.header] subtitle = "Tenant isolation & least privilege by default" [msg.admin.notice] idp_policy = "IDP 관리 키는 서버 내부 래핑 API로만 사용하며, 감사·레이트리밋을 기본 적용합니다." scope = "관리 기능은 /admin 네임스페이스에서만 노출합니다." [msg.admin.org] hover_member_info = "마우스를 올리면 상세 정보를 확인할 수 있습니다." import_description = "CSV 파일을 업로드하여 조직도를 일괄 등록합니다." import_error = "조직도 임포트 중 오류가 발생했습니다." import_success = "조직도가 성공적으로 임포트되었습니다." [msg.admin.overview] description = "모든 테넌트 공통 지표와 정책 상태를 한 곳에서 확인합니다." idp_fallback = "Fallback: Descope" idp_primary = "IDP: Ory primary" [msg.admin.tenants] approve_confirm = "이 테넌트를 승인하시겠습니까?" approve_success = "테넌트가 승인되었습니다." delete_confirm = "테넌트 \"{{name}}\"를 삭제할까요?" delete_success = "테넌트가 삭제되었습니다." empty = "아직 등록된 테넌트가 없습니다." fetch_error = "테넌트 목록 조회에 실패했습니다." import_empty = "가져올 테넌트 행이 없습니다." import_error = "테넌트 가져오기에 실패했습니다." import_result = "생성 {{created}}, 갱신 {{updated}}, 실패 {{failed}}" missing_id = "테넌트 ID가 없습니다." not_found = "테넌트를 찾을 수 없습니다." remove_sub_confirm = "테넌트 \"{{name}}\"을(를) 하위 조직에서 제외할까요?" subtitle = "현재 등록된 테넌트를 확인하고 상태를 관리합니다." [msg.admin.tenants.import_preview] description = "tenant_id가 없는 행은 기존 테넌트 후보와 비교한 뒤 신규 생성 또는 기존 테넌트 갱신으로 처리합니다." [msg.admin.tenants.parent] local_picker_description = "테넌트 목록에서 상위 테넌트로 사용할 항목을 선택합니다." local_picker_empty = "선택할 수 있는 테넌트가 없습니다." picker_description = "org-chart에서 테넌트를 선택하면 상위 테넌트에 반영됩니다." [msg.admin.tenants.scope] description = "상위 테넌트를 선택하면 해당 하위 테넌트만 목록에 표시합니다." [msg.dev.auth] access_denied_description = "DevFront는 관리자 전용 화면입니다. 권한이 필요하면 관리자에게 요청해 주세요." access_denied_title = "접근 권한이 없습니다." [msg.dev.forbidden] default = "해당 리소스에 접근할 권한이 없습니다. 관리자에게 문의하세요." rp_admin = "RP 관리자는 담당 앱의 리소스만 조회할 수 있습니다." tenant_admin = "테넌트 관리자 권한이 올바르게 설정되지 않았거나 만료되었습니다." user = "일반 사용자는 관리자 화면에 접근할 수 없습니다." title = "{{resource}} 접근 권한 없음" [msg.dev.audit] access_denied = "감사 로그는 개발자 권한이 있어야 볼 수 있습니다." access_denied_detail = "개발자 권한 신청 페이지에서 신청을 등록한 뒤 승인을 받아주세요." empty = "조회된 감사 로그가 없습니다." forbidden = "감사 로그를 조회할 권한이 없습니다. 관리자에게 권한을 요청해주세요." load_error = "감사 로그 조회 실패: {{error}}" loaded_count = "로드된 로그 {{count}}건" loading = "감사 로그를 불러오는 중..." registry_description = "최근 감사 로그를 검색 조건에 맞춰 필터링하고, 작업 이력을 빠르게 확인합니다." subtitle = "현재 테넌트/앱 범위의 DevFront 작업 이력을 조회합니다." [msg.dev.clients] deleted = "앱이 삭제되었습니다." delete_confirm = "정말로 이 앱을 삭제하시겠습니까? 이 작업은 되돌릴 수 없습니다." delete_error = "삭제 실패: {{error}}" load_error = "앱 정보를 불러오지 못했습니다: {{error}}" loading = "앱 정보를 불러오는 중..." showing = "전체 {{total}}개 중 {{shown}}개를 표시하는 중입니다." [msg.dev.sidebar] notice = "개발자 전용 콘솔입니다." notice_detail = "연동 앱 등록 및 관리를 수행할 수 있습니다." [msg.dev.clients.general.public_key] auth_method_client_secret_basic_help = "일반적인 서버 사이드 앱 인증 방식입니다." auth_method_none_help = "PKCE 기반 public client에 사용하는 방식입니다." auth_method_private_key_jwt_help = "Trusted RP bootstrap과 JAR 검증에 필요한 서명 키 기반 인증 방식입니다." guide_example = "권장 예시: https://rp.example.com/.well-known/jwks.json" guide_intro = "JWKS URI는 Baron이 만드는 값이 아니라 RP backend가 공개키를 노출하는 URL입니다." guide_step_1 = "RP 서버에서 key pair를 생성하고 private key는 RP backend에만 보관합니다." guide_step_2 = "RP backend가 public key를 JWKS(JSON Web Key Set) 형태로 제공하는 endpoint를 준비합니다." guide_step_3 = "예: https://rp.example.com/.well-known/jwks.json 같은 URL을 DevFront에 입력합니다." headless_help = "애플리케이션 고유의 디자인으로 로그인 화면을 구성할 수 있습니다. 실제 아이디/비밀번호 확인 및 보안 검증 로직은 Baron API를 통해 백그라운드에서 처리됩니다." jwks_inline_help = "SSH-RSA 공개키 형식을 우선 권장합니다. 'ssh-rsa AAA...' 형식으로 입력하면 Baron이 OIDC 표준인 JWKS(JSON)로 자동 변환하여 저장합니다." jwks_uri_help = "RP backend가 제공하는 공개키 endpoint URL을 입력하세요. 예: https://rp.example.com/.well-known/jwks.json" request_object_alg_help = "Headless Login을 사용할 때 JAR(Request Object) 서명 알고리즘을 명시합니다." source_help = "애플리케이션의 공개키(SSH-RSA)를 직접 등록하거나, 운영 환경이라면 JWKS URI를 통해 자동으로 검증할 수 있습니다." subtitle = "Trusted RP 판정에 필요한 공개키와 headless login 관련 설정을 관리합니다." [msg.dev.clients.general.public_key.validation] headless_requires_alg = "Headless Login을 사용하려면 Request Object Signing Algorithm을 입력해야 합니다." headless_requires_private_key_jwt = "Headless Login을 사용하려면 token endpoint auth method가 private_key_jwt여야 합니다." headless_requires_public_key = "Headless Login을 사용하려면 JWKS URI가 필요합니다." invalid_jwks_inline = "입력값이 유효한 JSON(JWKS) 형식이 아닙니다. SSH-RSA의 경우 'ssh-rsa'로 시작해야 합니다." invalid_jwks_uri = "JWKS URI 형식이 올바르지 않습니다." missing_jwks_inline = "공개키(SSH-RSA 또는 JWKS)를 입력해야 합니다." missing_jwks_uri = "JWKS URI를 입력해야 합니다." private_key_jwt_requires_public_key = "서명 키 기반 인증을 사용하려면 JWKS URI가 필요합니다." [msg.userfront.audit] browser = "브라우저: {{value}}" date = "접속일자: {{value}}" device = "접속환경: {{value}}" end = "더 이상 항목이 없습니다." filtered_empty = "활성 세션으로 필터링된 접속 이력이 없습니다." ip = "접속 IP: {{value}}" load_more_error = "더 불러오지 못했습니다." result = "인증결과: {{value}}" session_id = "Session ID: {{value}}" status = "현황: (준비중)" [msg.userfront.dashboard] approved_device = "승인 기기: {{device}}" approved_ip = "승인 IP: {{ip}}" audit_empty = "최근 접속 이력이 없습니다." audit_load_error = "접속이력을 불러오지 못했습니다." auth_method = "인증수단: {{method}}" client_id = "Client ID: {{id}}" client_id_missing = "Client ID 없음" current_status = "현재 상태: {{status}}" last_auth = "최근 인증: {{value}}" link_status = "연동 상태: {{status}}" link_missing = "이동할 페이지 주소(Client URI)가 설정되지 않았습니다." link_open_error = "해당 링크를 열 수 없습니다." render_error = "대시보드 렌더링 오류: {{error}}" session_id_copied = "세션 ID가 복사되었습니다." [msg.userfront.error] detail_contact = "관리자에게 문의해 주세요." detail_generic = "오류가 발생했습니다." detail_request = "요청을 처리하는 중 문제가 발생했습니다." id = "오류 ID: {{id}}" title = "인증 과정에서 오류가 발생했습니다" title_generic = "오류가 발생했습니다" title_with_code = "오류: {{code}}" type = "오류 종류: {{type}}" [msg.userfront.error.tenant] account = "계정" account_unknown = "알 수 없음" affiliated_tenants = "전체 소속 테넌트" allowed_box_title = "접속 가능 테넌트" allowed_tenants = "접속 가능 테넌트" detail = "현재 로그인된 계정은 이 애플리케이션에 접근할 수 없습니다." load_failed = "계정 정보를 확인하지 못했습니다. 다시 시도해 주세요." loading = "현재 계정 정보를 불러오는 중입니다." lookup_fallback = "표시 정보가 충분하지 않아 일부 항목은 확인되지 않을 수 있습니다." page_title = "애플리케이션 접근이 제한되었습니다" primary_tenant = "대표 소속 테넌트" tenant = "소속 테넌트" tenant_unknown = "알 수 없음" title = "접근 제한 정보" [msg.userfront.forgot] description = "계정과 연결된 이메일 주소 또는 휴대폰 번호를 입력하시면, 비밀번호를 재설정할 수 있는 링크를 보내드립니다." dry_send = "drySend 모드: 실제 이메일/SMS는 발송되지 않습니다." error = "전송에 실패했습니다: {{error}}" input_required = "이메일 또는 휴대폰 번호를 입력해주세요." sent = "비밀번호 재설정 링크가 전송되었습니다. 이메일 또는 SMS를 확인해주세요." [msg.userfront.login] cookie_check_failed = "로그인 확인 실패: {{error}}" dry_send = "drySend 모드: 실제 이메일/SMS는 발송되지 않습니다." link_failed = "오류: {{error}}" link_send_failed = "전송 실패: {{error}}" link_sent_email = "입력하신 이메일로 로그인 링크를 보냈습니다." link_sent_phone = "입력하신 번호로 로그인 링크를 보냈습니다." link_timeout = "시간이 경과되었습니다." no_account = "계정이 없으신가요?" oidc_failed = "OIDC 로그인 처리에 실패했습니다. 다시 시도해 주세요." qr_expired = "시간이 경과되었습니다." qr_init_failed = "QR 초기화에 실패했습니다: {{error}}" qr_login_required = "로그인 한 상태여야 QR 스캔으로 로그인 할 수 있습니다" token_missing = "로그인 토큰을 확인할 수 없습니다." verification_failed = "승인 처리에 실패했습니다: {{error}}" [msg.userfront.login_success] subtitle = "성공적으로 로그인되었습니다." [msg.userfront.consent] accept_error = "동의 처리에 실패했습니다: {{error}}" client_id = "클라이언트 ID: {{id}}" client_unknown = "알 수 없는 앱" description = "아래 서비스가 회원님의 계정 정보에 접근하려고 합니다.\n계속 진행하려면 동의 여부를 선택해 주세요." load_error = "동의 정보를 불러오는데 실패했습니다: {{error}}" missing_redirect = "동의가 처리되었으나 리다이렉트 URL을 받지 못했습니다." redirect_notice = "동의 후 자동으로 서비스로 이동합니다." scope_count = "총 {{count}}개" [msg.userfront.profile] department_missing = "소속 정보 없음" department_required = "소속을 입력해주세요." email_missing = "이메일 없음" greeting = "안녕하세요, {{name}}님" load_failed = "정보를 불러올 수 없습니다." name_missing = "이름 없음" name_required = "이름을 입력해주세요." phone_required = "휴대폰 번호를 입력해주세요." phone_verify_required = "휴대폰 번호 인증이 필요합니다." update_failed = "수정 실패: {{error}}" update_success = "정보가 수정되었습니다." [msg.userfront.qr] camera_error = "카메라 오류: {{error}}" permission_error = "카메라 권한 요청에 실패했습니다. 브라우저/OS 설정을 확인해주세요." permission_required = "카메라 권한이 필요합니다." [msg.userfront.reset] invalid_body = "비밀번호 재설정 링크가 만료되었거나 잘못되었습니다. 다시 시도해주세요." invalid_link = "유효하지 않은 재설정 링크입니다. (loginId/token 누락)" invalid_title = "유효하지 않은 링크입니다." policy_loading = "비밀번호 정책을 불러오는 중입니다..." success = "비밀번호가 성공적으로 변경되었습니다. 다시 로그인해주세요." [msg.userfront.sections] apps_subtitle = "현재 연결된 앱과 최근 인증 상태입니다." audit_subtitle = "Baron 로그인 기준의 최근 접근 기록입니다." sessions_subtitle = "현재 로그인된 기기와 브라우저 세션입니다." [msg.userfront.settings] disabled = "현재 계정 설정 화면은 준비 중입니다." [msg.userfront.signup] failed = "가입 실패: {{error}}" privacy_full = "개인정보 수집 및 이용 동의 전문..." tos_full = "서비스 이용약관 전문..." [ui.admin.audit] export_csv = "Export CSV" load_more = "Load more" target = "Target · {{target}}" title = "감사 로그" [ui.admin.groups] import_csv = "CSV 임포트" [ui.admin.header] plane = "Admin Plane" subtitle = "관리 및 정책 운영" [ui.admin.nav] org_chart = "조직도" api_keys = "API 키" audit_logs = "감사 로그" auth_guard = "인증 가드" logout = "로그아웃" overview = "개요" relying_parties = "애플리케이션(RP)" tenant_dashboard = "테넌트 대시보드" user_groups = "유저 그룹" tenants = "테넌트" users = "사용자" [ui.admin.org] download_template = "템플릿 다운로드" import_btn = "임포트" import_title = "조직도 대량 등록" start_import = "임포트 시작" [ui.admin.overview] kicker = "Global Overview" title = "통합 대시보드" [ui.admin.profile] manageable_tenants = "관리 가능한 테넌트" [ui.admin.role] rp_admin = "RP ADMIN" super_admin = "SUPER ADMIN" tenant_admin = "TENANT ADMIN" user = "TENANT MEMBER" [ui.admin.tenants] add = "테넌트 추가" csv_template = "템플릿" delete_selected = "선택 삭제" export_with_ids = "UUID 포함" export_without_ids = "UUID 제외 내보내기" import = "가져오기" title = "테넌트 목록" view_org_chart = "전체 조직도 보기" [ui.admin.tenants.domain_conflict] description = "" title = "도메인 충돌" [ui.admin.tenants.import_preview] candidates = "후보" confirm = "가져오기 실행" create_new_reset = "신규 생성 (ID/slug 재설정)" csv_parents = "CSV 상위 테넌트" external_id = "외부 ID" match = "매칭" no_candidates = "후보 없음" parent = "상위" parent_companies = "상위 회사" parent_company_groups = "상위 그룹사" parent_organizations = "상위 조직" parent_unresolved = "부모 확인 필요" slug_exists = "slug 충돌" title = "CSV 가져오기 확인" csv_parents = "가져오기 CSV" parent = "상위" parent_companies = "회사" parent_company_groups = "그룹사" parent_organizations = "조직" [ui.common.badge] admin_only = "Admin only" command_only = "Command only" system = "System" [ui.common.status] active = "활성" blocked = "차단됨" failure = "실패" inactive = "비활성" ok = "정상" pending = "준비 중" success = "성공" [ui.dev.nav] overview = "개요" clients = "연동 앱" logout = "로그아웃" developer_request = "개발자 권한 신청" [ui.dev.welcome] btn_request = "신규 신청하기" [ui.dev.request] admin_notes_placeholder = "승인 또는 반려 사유를 입력하세요." cancel_approval = "승인 취소" cancel_notes_placeholder = "승인 취소 사유를 입력하세요." [ui.dev.request.list] title = "신청 내역" [ui.dev.request.modal] desc = "개발자 권한을 신청하려면 아래 정보를 확인한 뒤 신청 사유를 입력하세요." email = "이메일" name = "성함" org = "소속" phone = "전화번호" reason = "신청 사유" reason_placeholder = "개발자 권한이 필요한 이유를 작성해주세요." role = "역할" title = "개발자 등록 신청" [ui.dev.request.status] approved = "승인됨" cancelled = "승인 취소됨" pending = "대기 중" rejected = "반려됨" [ui.dev.request.table] actions = "관리" date = "신청일" org = "소속" reason = "신청 사유" status = "상태" user = "사용자" [ui.dev.tenant] single_notice = "단일 테넌트에 소속되어 전환할 필요가 없습니다." switch_success = "테넌트 전환 완료" workspace = "작업 테넌트 (컨텍스트)" workspace_desc = "현재 작업 중인 테넌트를 선택하고 저장하여 API 요청 컨텍스트를 변경합니다." [ui.dev.audit] load_more = "더 보기" title = "감사 로그" [ui.dev.profile] menu_aria = "계정 메뉴 열기" menu_title = "계정" unknown_email = "unknown@example.com" unknown_name = "Unknown User" title = "내 정보" subtitle = "사용자 상세 정보 및 할당된 역할(Role)을 확인합니다." loading = "프로필 정보를 불러오는 중..." error = "프로필 정보를 불러오지 못했습니다." [ui.dev.clients] new = "연동 앱 추가" search_placeholder = "연동 앱 이름/ID로 검색..." tenant_scoped = "Tenant-scoped" untitled = "Untitled" [ui.dev.dashboard] ready_badge = "devfront ready" [ui.dev.header] plane = "Dev Plane" subtitle = "Manage your applications" [ui.dev.session] auto_extend = "세션 만료 관리" active = "세션 활성" disabled = "자동 연장 비활성화" unknown = "알 수 없음" expired = "세션 만료" expiring = "만료 임박: {{minutes}}분 {{seconds}}초 남음" remaining = "만료 예정: {{minutes}}분 {{seconds}}초 남음" refresh = "세션 만료 시간 갱신" refreshing = "세션 만료 시간 갱신 중..." [ui.userfront.app_label] admin_console = "Admin Console" baron = "Baron 로그인" dev_console = "Dev Console" [ui.userfront.auth_method] ory = "Ory 세션" session = "세션" [ui.userfront.dashboard] last_auth_label = "최근 인증" link_status_label = "연동 상태" status_history = "연동 정보" [ui.userfront.device] android = "Mobile(Android)" ios = "Mobile(iOS)" linux = "Desktop(Linux)" macos = "Desktop(macOS)" windows = "Desktop(Windows)" [ui.userfront.error] go_home = "홈으로 이동" go_login = "로그인으로 이동" switch_account = "다른 계정으로 로그인" [ui.userfront.forgot] heading = "비밀번호를 잊으셨나요?" input_label = "이메일 또는 휴대폰 번호" submit = "재설정 링크 전송" title = "비밀번호 재설정" [ui.userfront.login] forgot_password = "비밀번호를 잊으셨나요?" signup = "회원가입" [ui.userfront.login_success] later = "나중에 하기 (대시보드로 이동)" qr = "QR 인증 (카메라 켜기)" title = "로그인 완료" [ui.userfront.consent] accept = "동의하고 계속하기" requested_scopes = "요청된 권한" title = "접근 권한 요청" [ui.userfront.nav] dashboard = "대시보드" logout = "로그아웃" profile = "내 정보" qr_scan = "QR 스캔" [ui.userfront.profile] department_empty = "소속 정보 없음" manage = "프로필 관리" user_fallback = "사용자" [ui.userfront.qr] rescan = "다시 스캔" result_success = "승인 완료" title = "Scan QR Code" [ui.userfront.reset] confirm_password = "새 비밀번호 확인" new_password = "새 비밀번호" submit = "비밀번호 변경" subtitle = "새로운 비밀번호 설정" title = "새 비밀번호 설정" [ui.userfront.sections] apps = "나의 App 현황" audit = "접속이력" sessions = "활성 세션" [ui.userfront.session] active = "세션 활성" unknown = "알 수 없음" [ui.userfront.signup] complete = "가입 완료" next_step = "다음 단계" title = "회원가입" [msg.admin.api_keys.create] error = "API 키 생성에 실패했습니다." name_required = "이름은 필수입니다." scope_required = "최소 하나 이상의 권한을 선택해야 합니다." scopes_count = "총 {{count}}개의 권한이 할당됩니다." scopes_hint = "생성 즉시 활성화되어 사용 가능합니다." subtitle = "내부 시스템 연동을 위한 보안 인증 키를 구성합니다." [msg.admin.api_keys.create.success] copy_hint = "복사 버튼을 눌러 안전한 곳(비밀번호 관리자 등)에 저장하세요." notice = "아래의 비밀번호(Secret)는 보안을 위해 " notice_emphasis = "지금 한 번만" notice_suffix = "표시됩니다." [msg.admin.api_keys.list] edit_scopes_desc = "CLIENT_ID는 유지하고 권한만 변경합니다." rotate_confirm = "API 키 \"{{name}}\"의 Secret을 재발급할까요? 기존 Secret은 더 이상 사용할 수 없습니다." rotate_secret_notice = "새 Secret은 지금 한 번만 표시됩니다. CLIENT_ID는 변경되지 않았습니다." delete_confirm = "API 키 \\\\\\\"{{name}}\\\\\\\"를 삭제할까요?" empty = "등록된 API 키가 없습니다." fetch_error = "API 키 목록 조회에 실패했습니다." subtitle = "서버 간 통신(Machine-to-Machine)을 위한 API 키를 발급하고 관리합니다." [msg.admin.api_keys.list.registry] count = "총 {{count}}개 API 키" [msg.admin.audit] empty = "아직 수집된 감사 로그가 없습니다." end = "감사 로그의 마지막입니다." load_error = "감사 로그를 불러오지 못했습니다: {{error}}" loading = "감사 로그를 불러오는 중..." subtitle = "Command 요청 기반 ClickHouse 로그를 조회합니다. 사용자/테넌트는 추후 세션 연동 시 자동 채워집니다." [msg.admin.audit.filters] empty = "필터 없음" [msg.admin.audit.registry] count = "로드된 로그 {{count}}건" description = "최근 감사 로그를 검색 조건에 맞춰 필터링하고, 작업 이력을 빠르게 확인합니다." [msg.admin.common] forbidden = "이 작업을 수행할 권한이 없습니다." [msg.admin.groups] [msg.admin.groups.create] description = "부서나 팀과 같은 새로운 조직 단위를 추가합니다." title = "새 조직 단위 생성" [msg.admin.groups.list] create_error = "생성 실패" create_success = "조직 단위가 생성되었습니다." delete_confirm = "정말로 삭제하시겠습니까?" delete_error = "삭제 실패" delete_success = "조직 단위가 삭제되었습니다." empty = "테넌트에 등록된 조직 단위가 없습니다." import_error = "가져오기 실패" import_success = "조직도가 임포트되었습니다." loading = "로딩 중..." no_results = "그룹이 없습니다." subtitle = "이 테넌트에 정의된 사용자 그룹 목록입니다." [msg.admin.groups.members] add_modal_desc = "이 테넌트에 속한 사용자 중 추가할 멤버를 검색하여 선택하세요." add_success = "구성원이 추가되었습니다." all_added = "모든 테넌트 멤버가 이미 이 그룹에 속해 있습니다." count = "{{count}} 명" empty = "멤버가 없습니다." move_modal_desc = "선택한 멤버를 이동할 대상 그룹을 선택하세요." move_success = "멤버가 이동되었습니다." remove_confirm = "제거하시겠습니까?" remove_success = "구성원이 제외되었습니다." title = "[{{name}}] 멤버 관리" [msg.admin.groups.prompt] user_id = "추가할 사용자의 UUID를 입력하세요:" [msg.admin.groups.roles] assign_success = "역할이 할당되었습니다." description = "이 조직의 구성원들이 대상 테넌트에서 상속받을 역할을 선택하세요." empty = "할당된 역할이 없습니다." remove_confirm = "역할을 회수하시겠습니까?" remove_success = "역할이 회수되었습니다." [msg.admin.header] subtitle = "Tenant isolation & least privilege by default" [msg.admin.notice] idp_policy = "IDP 관리 키는 서버 내부 래핑 API로만 사용하며, 감사·레이트리밋을 기본 적용합니다." scope = "관리 기능은 /admin 네임스페이스에서만 노출합니다." [msg.admin.org] hover_member_info = "마우스를 올리면 상세 정보를 확인할 수 있습니다." import_description = "CSV 파일을 업로드하여 조직도를 일괄 등록합니다." import_error = "조직도 임포트 중 오류가 발생했습니다." import_success = "조직도가 성공적으로 임포트되었습니다." [msg.admin.overview] description = "모든 테넌트 공통 지표와 정책 상태를 한 곳에서 확인합니다." idp_fallback = "Fallback: Descope" idp_primary = "IDP: Ory primary" [msg.admin.overview.playbook] description = "운영 정책, 레이트리밋, 감사 로그의 기본 룰을 요약합니다." idp_body = "모든 IDP 호출은 backend를 통해서만 수행하며, Hydra/Kratos admin 포트는 외부에 노출하지 않습니다." idp_title = "Backend-only IDP access" tenant_body = "Tenant 헤더와 감사 로그 규칙을 기본 적용하며, 향후 Keto 정책으로 확장 예정입니다." tenant_title = "Tenant isolation" [msg.admin.overview.quick_links] description = "주요 운영 화면으로 바로 이동합니다." [msg.admin.overview.summary] audit_events_24h = "최근 24시간 감사 로그" oidc_clients = "등록된 OIDC 클라이언트" policy_gate = "정책 가이트 상태" total_users = "전체 사용자 수" total_tenants = "전체 테넌트 수" [msg.admin.tenants] approve_confirm = "이 테넌트를 승인하시겠습니까?" approve_success = "테넌트가 승인되었습니다." delete_confirm = "테넌트 \\\\\\\"{{name}}\\\\\\\"를 삭제할까요?" delete_success = "테넌트가 삭제되었습니다." empty = "아직 등록된 테넌트가 없습니다." fetch_error = "테넌트 목록 조회에 실패했습니다." export_error = "테넌트 내보내기에 실패했습니다." import_empty = "임포트 파일에 테넌트 행이 없습니다." import_error = "테넌트 임포트에 실패했습니다: {{error}}" import_result = "{{count}}개의 테넌트 행을 처리했습니다." missing_id = "테넌트 ID가 없습니다." not_found = "테넌트를 찾을 수 없습니다." remove_sub_confirm = "테넌트 \\\\\\\"{{name}}\\\\\\\"을(를) 하위 조직에서 제외할까요?" subtitle = "현재 등록된 테넌트를 확인하고 상태를 관리합니다." [msg.admin.tenants.import_preview] description = "임포트 전에 각 행의 매칭 결과를 검토하고 처리 방식을 선택하세요." [msg.admin.tenants.admins] add_success = "관리자가 추가되었습니다." empty = "등록된 관리자가 없습니다." remove_confirm = "관리자를 삭제하시겠습니까?" remove_last = "마지막 관리자는 회수할 수 없습니다." remove_self = "본인의 권한은 회수할 수 없습니다." remove_success = "권한이 회수되었습니다." subtitle = "이 테넌트의 자원을 관리할 수 있는 사용자 목록입니다." [msg.admin.tenants.create] pick_parent_first = "상위 테넌트를 먼저 선택하세요." subtitle = "글로벌 운영 기준의 신규 테넌트를 등록합니다." [msg.admin.tenants.create.form] domains_help = "이 도메인을 가진 이메일로 가입한 사용자는 자동으로 이 테넌트에 배정됩니다." [msg.admin.tenants.create.memo] body = "생성 직후에는 기본 활성 상태로 부여되며, 필요 시 상태를 수정하세요." subtitle = "Tenant 권한 정책은 추후 Keto 연계로 확장 예정입니다." [msg.admin.tenants.create.profile] subtitle = "필수 정보만 입력해도 생성 가능합니다. Slug는 없으면 자동 생성됩니다." [msg.admin.tenants.members] desc = "조직에 소속된 사용자 목록을 확인합니다." empty = "소속된 사용자가 없습니다." limit_notice = "하위 조직이 많아 상위 10개 조직의 멤버만 표시됩니다." remove_confirm = "'{{name}}'님을 이 조직에서 제외하시겠습니까?" remove_error = "조직에서 제외하는 중 오류가 발생했습니다." remove_success = "조직에서 제외되었습니다." [msg.admin.tenants.owners] add_success = "소유자가 추가되었습니다." empty = "등록된 소유자가 없습니다." remove_confirm = "소유자를 삭제하시겠습니까?" remove_last = "마지막 소유자는 회수할 수 없습니다." remove_self = "본인의 권한은 회수할 수 없습니다." remove_success = "소유자 권한이 회수되었습니다." subtitle = "이 테넌트의 최상위 권한을 가진 소유자(조직장) 목록입니다." [msg.admin.tenants.registry] count = "총 {{count}}개 테넌트" [msg.admin.tenants.schema] empty = "등록된 커스텀 필드가 없습니다. 필드 추가를 눌러 시작하세요." forbidden_desc = "사용자 스키마 설정은 관리자만 접근할 수 있습니다." missing_id = "테넌트 ID가 없습니다." subtitle = "이 테넌트의 사용자에게 적용할 커스텀 속성을 정의합니다." update_error = "스키마 업데이트에 실패했습니다." update_success = "스키마가 성공적으로 업데이트되었습니다." [msg.admin.tenants.sub] empty = "하위 테넌트가 없습니다." subtitle = "현재 테넌트 하위에 생성된 조직입니다." [msg.admin.users] confirm_remove_org = "이 조직에서 사용자를 제외하시겠습니까?" export_error = "사용자 내보내기에 실패했습니다." status_error = "사용자 상태 변경에 실패했습니다." [msg.admin.users.bulk] delete_confirm = "선택한 {{count}}명의 사용자를 정말로 삭제하시겠습니까?" delete_success = "{{count}}명의 사용자가 삭제되었습니다." description = "CSV 파일을 통해 사용자를 일괄 등록하거나 관리합니다." move_description = "선택한 사용자를 다른 테넌트로 일괄 이동합니다." move_error = "사용자 이동 중 오류가 발생했습니다." move_success = "{{count}}명의 사용자가 성공적으로 이동되었습니다." parsed_count = "{{count}}행의 데이터가 파싱되었습니다." schema_incompatible = "대상 테넌트 스키마에 없는 필드는 유실될 수 있습니다:" schema_missing = "대상 테넌트의 필수 필드가 누락되어 있습니다:" status_placeholder = "상태 선택" permission_placeholder = "권한 선택" update_success = "사용자 정보가 일괄 업데이트되었습니다." [msg.admin.users.create] appointment_required = "한맥 가족 구성원은 소속 테넌트를 하나 이상 선택해 주세요." error = "사용자 생성에 실패했습니다." external_tenant_required = "외부 사용자는 대표소속을 선택해 주세요." password_required = "비밀번호를 입력하거나 자동 생성을 사용해 주세요." personal_tenant_failed = "Personal 테넌트를 준비하지 못했습니다." success = "사용자가 성공적으로 생성되었습니다." tenant_resolve_failed = "선택한 테넌트 정보를 불러오지 못했습니다." [msg.admin.users.create.account] subtitle = "새로운 사용자를 시스템에 등록합니다." [msg.admin.users.create.form] email_required = "이메일은 필수입니다." field_invalid = "{{label}} 형식이 올바르지 않습니다." field_required = "{{label}}은(는) 필수입니다." login_id_help = "msg.admin.users.create.form.login_id_help" name_required = "이름은 필수입니다." password_auto_help = "비워두면 시스템이 초기 비밀번호를 자동 생성합니다." password_manual_help = "초기 비밀번호를 직접 설정합니다." picker_description = "org-chart에서 테넌트를 선택하면 사용자 소속에 반영됩니다." role_help = "시스템 접근 권한을 결정합니다." [msg.admin.users.create.password_generated] default = "초기 비밀번호가 생성되었습니다." with_email = "{{email}} 계정의 초기 비밀번호입니다." [msg.admin.users.detail] delete_confirm = "삭제하시겠습니까?" delete_error = "msg.admin.users.detail.delete_error" delete_success = "사용자가 삭제되었습니다." edit_subtitle = "{{email}} 계정의 정보를 수정합니다." history_desc = "최근 로그인한 연동 서비스(RP) 목록입니다." no_history = "아직 이용한 서비스가 없습니다." no_tenants = "소속된 테넌트 정보가 없습니다." not_found = "사용자를 찾을 수 없습니다." password_generated = "안전한 비밀번호가 생성되었습니다." password_generated_help = "보안 기준에 맞는 임시 비밀번호를 자동 생성해 즉시 적용합니다." password_manual_required = "비밀번호를 입력해 주세요." reset_auto_desc = "해킹이 어려운 복잡한 임시 비밀번호를 시스템이 즉시 생성합니다." reset_password_confirm = "msg.admin.users.detail.reset_password_confirm" reset_password_help = "사용자의 비밀번호를 강제로 재설정하고 자동 생성하거나 직접 입력한 비밀번호를 적용합니다." security_desc = "비밀번호 초기화 및 보안 설정을 관리합니다." self_password_reset_blocked = "본인 계정의 비밀번호는 사용자 포털(UserFront) 설정에서 변경해 주세요." tenant_slug_help = "사용자의 주된 정체성을 결정하는 대표 조직을 지정합니다." tenants_desc = "각 테넌트별로 정의된 커스텀 스키마 정보를 관리합니다." update_error = "사용자 수정에 실패했습니다." update_success = "사용자 정보가 수정되었습니다." [msg.admin.users.detail.form] field_required = "필수입니다." invalid_format = "형식이 올바르지 않습니다." name_required = "이름은 필수입니다." [msg.admin.users.detail.security] password_hint = "비밀번호를 변경하려면 입력하세요. 비워두면 현재 비밀번호가 유지됩니다." [msg.admin.users.list] delete_confirm = "사용자 \\\\\\\"{{name}}\\\\\\\"을(를) 정말 삭제하시겠습니까?" empty = "검색 결과가 없습니다." fetch_error = "사용자 목록 조회에 실패했습니다." subtitle = "시스템 사용자를 조회하고 관리합니다. (Local DB)" [msg.admin.users.list.columns] description = "테이블에 표시할 컬럼을 선택합니다." no_custom = "이 테넌트에 정의된 커스텀 필드가 없습니다." [msg.admin.users.list.registry] count = "총 {{count}}명의 사용자가 등록되어 있습니다." [msg.common] copied = "복사되었습니다." copied_to_clipboard = "클립보드에 복사되었습니다." error = "오류가 발생했습니다." forbidden = "접근 권한이 없습니다." loading = "로딩 중..." no_description = "설명이 없습니다." parsing = "데이터 파싱 중..." requesting = "요청 중..." saving = "저장 중..." unknown_error = "알 수 없는 오류" [msg.dev] logout_confirm = "로그아웃 하시겠습니까?" [msg.dev.audit] empty = "조회된 감사 로그가 없습니다." forbidden = "감사 로그를 조회할 권한이 없습니다. 관리자에게 권한을 요청해주세요." load_error = "감사 로그 조회 실패: {{error}}" loaded_count = "로드된 로그 {{count}}건" loading = "감사 로그를 불러오는 중..." subtitle = "현재 테넌트/앱 범위의 DevFront 작업 이력을 조회합니다." [msg.dev.request] admin_desc = "super admin이 개발자 권한 신청을 검토하고 승인 또는 반려할 수 있습니다." approved = "승인되었습니다." cancelled = "승인이 취소되었습니다." empty = "신청 내역이 없습니다." need_cancel_notes = "승인 취소 사유를 입력해주세요." need_notes = "반려 사유를 입력해주세요." rejected = "반려되었습니다." user_desc = "개발자 권한을 신청하고 승인 결과를 확인할 수 있습니다." [msg.dev.request.modal] desc = "개발자 권한을 신청하려면 아래 정보를 확인한 뒤 신청 사유를 입력하세요." email = "이메일" name = "성함" org = "소속" phone = "전화번호" reason = "신청 사유" reason_placeholder = "개발자 권한이 필요한 이유를 작성해주세요." role = "역할" title = "개발자 등록 신청" [msg.dev.request.status] approved = "승인됨" cancelled = "승인 취소됨" pending = "대기 중" rejected = "반려됨" [msg.dev.request.table] actions = "관리" date = "신청일" org = "소속" reason = "신청 사유" status = "상태" user = "사용자" [msg.dev.request.list] approved_count = "총 {{count}}명의 사용자가 승인되었습니다." title = "신청 내역" [msg.dev.request.admin] notes_placeholder = "승인 또는 반려 사유를 입력하세요." [msg.dev.request.cancel] approval = "승인 취소" notes_placeholder = "승인 취소 사유를 입력하세요." [msg.dev.auth] access_denied_description = "DevFront는 관리자 전용 화면입니다. 권한이 필요하면 관리자에게 요청해 주세요." access_denied_title = "접근 권한이 없습니다." [msg.dev.clients] delete_confirm = "정말로 이 앱을 삭제하시겠습니까? 이 작업은 되돌릴 수 없습니다." delete_error = "삭제 실패: {{error}}" deleted = "앱이 삭제되었습니다." load_error = "앱 정보를 불러오지 못했습니다: {{error}}" loading = "앱 정보를 불러오는 중..." showing = "전체 {{total}}개 중 {{shown}}개를 표시하는 중입니다." [msg.dev.clients.consents] empty = "등록된 동의 내역이 없습니다." load_error = "동의 내역을 불러오지 못했습니다: {{error}}" loading = "동의 내역을 불러오는 중..." revoke_confirm = "정말로 이 사용자의 권한을 철회하시겠습니까? 철회 시 사용자는 다음 접속 시 다시 동의해야 합니다." showing = "전체 {{total}}명 중 {{from}}번째부터 {{to}}번째 사용자를 표시합니다." subtitle = "OIDC Relying Party 사용자 권한을 검토·관리합니다." [msg.dev.clients.details] copy_client_id = "Client ID가 복사되었습니다." copy_client_secret = "Client Secret이 복사되었습니다." copy_endpoint = "{{label}}가 복사되었습니다." load_error = "앱 상세 정보를 불러오지 못했습니다: {{error}}" loading = "앱 상세 정보를 불러오는 중..." missing_id = "Client ID가 필요합니다." redirect_saved = "Redirect URIs가 저장되었습니다." rotate_confirm = "경고: Client Secret을 재발급하면 기존 시크릿은 즉시 무효화됩니다.\\\\n연동된 애플리케이션이 중단될 수 있습니다. 계속하시겠습니까?" rotate_error = "재발급 실패: {{error}}" save_error = "저장 실패: {{error}}" secret_rotated = "Client Secret이 재발급되었습니다." secret_unavailable = "SECRET_NOT_AVAILABLE" subtitle = "OIDC 자격 증명과 엔드포인트를 관리합니다." [msg.dev.clients.details.redirect] description = "인증 성공 후 사용자를 리다이렉트할 허용된 URL 목록입니다. 콤마(,)로 구분하여 여러 개 입력할 수 있습니다." [msg.dev.clients.details.security] footer = "비밀키 재발행 작업에는 관리자 세션 TTL 확인과 레이트리밋, 알림 연동을 권장합니다." note = "엔드포인트는 읽기 전용으로 유지하고, 비밀키 재발행/복사는 감사 로그와 연계하세요." [msg.dev.clients.federation] add_subtitle = "외부 OIDC 제공자를 연결합니다." empty = "등록된 IdP 설정이 없습니다." subtitle = "이 애플리케이션의 외부 IdP 설정을 관리합니다." [msg.dev.clients.general] load_error = "앱 설정을 불러오지 못했습니다: {{error}}" loading = "앱 설정을 불러오는 중..." save_error = "저장 실패: {{error}}" saved = "설정이 저장되었습니다." status_changed = "상태가 {{status}}로 변경되었습니다." [msg.dev.clients.general.identity] logo_help = "인증 화면에 표시될 PNG/SVG URL입니다." subtitle = "앱 이름과 설명, 로고를 설정합니다." [msg.dev.clients.general.public_key] allowed_algorithms_tooltip = "허용 알고리즘: {{algorithms}}" auth_method_client_secret_basic_help = "일반적인 서버 사이드 앱 인증 방식입니다." auth_method_none_help = "PKCE 기반 public client에 사용하는 방식입니다." auth_method_private_key_jwt_help = "Trusted RP bootstrap과 JAR 검증에 필요한 서명 키 기반 인증 방식입니다." cache_empty = "아직 캐시된 JWKS가 없습니다. Refresh를 눌러 백엔드 캐시 상태를 조회하세요." cache_help = "백엔드가 마지막으로 검증한 공개키 캐시 상태입니다." cache_refresh_failed = "JWKS 캐시 새로고침에 실패했습니다: {{error}}" cache_refreshed = "JWKS 캐시를 새로 고쳤습니다." cache_revoke_confirm = "JWKS 캐시를 삭제하면 다음 검증 전에 다시 갱신해야 합니다. 계속할까요?" cache_revoke_failed = "JWKS 캐시 삭제에 실패했습니다: {{error}}" cache_revoked = "JWKS 캐시를 삭제했습니다." guide_example = "권장 예시: https://rp.example.com/.well-known/jwks.json" guide_intro = "JWKS URI는 Baron이 만드는 값이 아니라 RP backend가 공개키를 노출하는 URL입니다." guide_step_1 = "RP 서버에서 key pair를 생성하고 private key는 RP backend에만 보관합니다." guide_step_2 = "RP backend가 public key를 JWKS(JSON Web Key Set) 형태로 제공하는 endpoint를 준비합니다." guide_step_3 = "예: https://rp.example.com/.well-known/jwks.json 같은 URL을 DevFront에 입력합니다." headless_help = "애플리케이션 고유의 디자인으로 로그인 화면을 구성할 수 있습니다. 실제 아이디/비밀번호 확인 및 보안 검증 로직은 Baron API를 통해 백그라운드에서 처리됩니다." jwks_inline_help = "SSH-RSA 공개키 형식을 우선 권장합니다. 'ssh-rsa AAA...' 형식으로 입력하면 Baron이 OIDC 표준인 JWKS(JSON)로 자동 변환하여 저장합니다." jwks_uri_help = "RP backend가 제공하는 공개키 endpoint URL을 입력하세요. 예: https://rp.example.com/.well-known/jwks.json" request_object_alg_help = "Headless Login을 사용할 때 JAR(Request Object) 서명 알고리즘을 명시합니다." source_help = "애플리케이션의 공개키(SSH-RSA)를 직접 등록하거나, 운영 환경이라면 JWKS URI를 통해 자동으로 검증할 수 있습니다." subtitle = "Trusted RP 판정에 필요한 공개키와 headless login 관련 설정을 관리합니다." [msg.dev.clients.general.public_key.cache] missing_algorithm_badge = "알고리즘 미선언" missing_algorithm_reason = "이 키는 `alg`가 비어 있어서 저장할 수 없습니다." missing_algorithms_help = "저장 전 JWKS 각 키에 `alg`를 명시해 주세요: {{details}}" missing_algorithms_title = "알고리즘이 선언되지 않았습니다." parsed_keys_empty = "No parsed JWKS keys are available yet." parsed_keys_help = "Raw JWKS stays hidden. Only parsed key metadata is shown here." unsupported_algorithm_reason = "이 알고리즘은 Headless Login에서 지원되지 않습니다." unsupported_algorithms_help = "저장 전 JWKS를 수정해 주세요: {{details}}" unsupported_algorithms_title = "지원하지 않는 알고리즘이 감지되었습니다." [msg.dev.clients.general.public_key.validation] headless_requires_alg = "Headless Login을 사용하려면 Request Object Signing Algorithm을 입력해야 합니다." headless_requires_private_key_jwt = "Headless Login을 사용하려면 token endpoint auth method가 private_key_jwt여야 합니다." headless_requires_public_key = "Headless Login을 사용하려면 JWKS URI가 필요합니다." invalid_jwks_inline = "입력값이 유효한 JSON(JWKS) 형식이 아닙니다. SSH-RSA의 경우 'ssh-rsa'로 시작해야 합니다." invalid_jwks_uri = "JWKS URI 형식이 올바르지 않습니다." missing_jwks_inline = "공개키(SSH-RSA 또는 JWKS)를 입력해야 합니다." missing_jwks_uri = "JWKS URI를 입력해야 합니다." missing_parsed_algorithms = "JWKS에 알고리즘(`alg`)이 선언되지 않은 키가 있습니다: {{details}}" private_key_jwt_requires_public_key = "서명 키 기반 인증을 사용하려면 JWKS URI가 필요합니다." unsupported_parsed_algorithms = "JWKS에 지원하지 않는 알고리즘이 있습니다: {{details}}" [msg.dev.clients.general.redirect] help = "인증 후 리다이렉트될 URI를 입력하세요. 생성 후 연동 설정 탭에서 수정 가능합니다." [msg.dev.clients.general.scopes] empty = "등록된 스코프가 없습니다." subtitle = "이 앱이 요청할 수 있는 권한 범위를 정의합니다." [msg.dev.clients.general.security] pkce_help = "PKCE 앱 (SPA/모바일): 브라우저나 앱처럼 비밀키를 보관하기 어려운 경우 사용하며, PKCE가 강제됩니다." private_help = "Server side App (서버 사이드 앱): Node.js, Java 등 비밀키를 안전하게 보관 가능한 경우 사용합니다." subtitle = "앱 유형을 선택하세요. 보안 수준에 따라 인증 방식이 달라집니다." [msg.dev.clients.help] docs_body = "Includes PKCE, client_secret_basic, redirect URI validation tips." subtitle = "Developer guides for Confidential/Public clients, redirect URIs, and auth methods." [msg.dev.clients.registry] description = "OIDC 앱, 인증 방식, 리다이렉트 URI, 비밀키 재발행을 감사 로그와 함께 관리합니다." [msg.dev.clients.scopes] email = "이메일 주소 접근" openid = "OIDC 인증 필수 스코프" profile = "기본 프로필 정보 접근" [msg.dev.dashboard] access_denied = "개요는 개발자 권한이 있어야 볼 수 있습니다." access_denied_detail = "개발자 권한 신청 페이지에서 신청을 등록한 뒤 승인을 받아주세요." access_pending = "개발자 권한 신청을 검토 중입니다." access_pending_detail = "super admin이 승인하면 개요와 개발자 기능을 사용할 수 있습니다." description = "연동 앱 구성과 인증 운영 지표를 한 곳에서 확인합니다." [msg.dev.dashboard.hero] body = "Hydra Admin API와 동기화된 RP 목록, 상태 토글, Consent 회수까지 devfront에서 처리하도록 준비합니다." title_emphasis = " 하나의 화면" title_prefix = "RP 등록 현황과 Consent 상태를" title_suffix = "에서 관리합니다." [msg.dev.dashboard.chart] empty = "표시할 RP 이용 집계가 없습니다." filter_description = "전체 또는 선택한 애플리케이션만 기준으로 그래프를 확인합니다." forbidden = "현재 계정에는 RP 이용 통계를 볼 권한이 없습니다." server_error = "RP 이용 통계 조회 중 서버 오류가 발생했습니다." service_unavailable = "RP 이용 통계 집계 서비스가 아직 준비되지 않았습니다." unavailable_with_reason = "RP 이용 통계 API 응답을 확인할 수 없습니다. {{reason}}" [msg.dev.dashboard.distribution] description = "애플리케이션 유형과 headless login 사용 현황을 빠르게 확인합니다." [msg.dev.dashboard.recent] empty = "현재 계정이 접근할 수 있는 RP를 확인합니다." none = "표시할 연동 앱이 없습니다." [msg.dev.dashboard.recent_changes] description = "변경 또는 삭제된 애플리케이션을 대시보드에서 추이를 확인합니다." empty = "최근 변경 로그가 아직 없습니다." [msg.dev.dashboard.notice] consent_audit = "Consent 회수는 감사 로그와 연계" dev_scope = "RP 정책은 dev scope에서만 적용" hydra_health = "Hydra Admin 상태 체크 준비" [msg.dev.forbidden] default = "해당 리소스에 접근할 권한이 없습니다. 관리자에게 문의하세요." rp_admin = "RP 관리자는 담당 앱의 리소스만 조회할 수 있습니다." tenant_admin = "테넌트 관리자 권한이 올바르게 설정되지 않았거나 만료되었습니다." title = "{{resource}} 접근 권한 없음" user = "일반 사용자는 관리자 화면에 접근할 수 없습니다." user.audit = "해당 앱(RP)에 대한 감사 로그 조회는 'RP 관리자', '감사 조회' 관계가 부여된 경우에만 사용할 수 있습니다. 권한이 필요하면 관리자에게 요청하세요." user.clients = "일반 사용자 계정은 담당 RP(앱)에 대한 운영 또는 관리 관계가 부여된 경우에만 해당 기능을 사용할 수 있습니다. 권한이 필요하면 관리자에게 요청하세요." user.consents = "해당 앱(RP)에 대한 동의 내역 조회는 'RP 관리자', '동의 조회', '동의 회수' 관계가 부여된 경우에만 사용할 수 있습니다. 권한이 필요하면 관리자에게 요청하세요." [msg.dev.sidebar] notice = "개발자 전용 콘솔입니다." notice_detail = "연동 앱 등록 및 관리를 수행할 수 있습니다." [msg.info] saved_success = "저장이 완료되었습니다." [msg.userfront] greeting = "안녕하세요, {{name}}님" [msg.userfront.audit] browser = "브라우저: {{value}}" date = "접속일자: {{value}}" device = "접속환경: {{value}}" end = "더 이상 항목이 없습니다." filtered_empty = "활성 세션으로 필터링된 접속 이력이 없습니다." ip = "접속 IP: {{value}}" load_more_error = "더 불러오지 못했습니다." result = "인증결과: {{value}}" session_id = "Session ID: {{value}}" status = "현황: (준비중)" [msg.userfront.consent] accept_error = "동의 처리에 실패했습니다: {{error}}" client_id = "클라이언트 ID: {{id}}" client_unknown = "알 수 없는 앱" description = "아래 서비스가 회원님의 계정 정보에 접근하려고 합니다.\\\\n계속 진행하려면 동의 여부를 선택해 주세요." load_error = "동의 정보를 불러오는데 실패했습니다: {{error}}" missing_redirect = "동의가 처리되었으나 리다이렉트 URL을 받지 못했습니다." redirect_notice = "동의 후 자동으로 서비스로 이동합니다." scope_count = "총 {{count}}개" [msg.userfront.consent.cancel] confirm = "권한 동의를 취소하면 해당 서비스를 이용할 수 없습니다. 취소하시겠습니까?" error = "취소 처리 중 오류가 발생했습니다: {{error}}" [msg.userfront.consent.scope] email = "이메일 주소 (계정 식별 및 알림 용도)" offline_access = "오프라인 접근 (로그인 유지)" openid = "OpenID 인증 정보 (로그인 상태 확인)" phone = "휴대폰 번호 (본인 인증 및 알림)" profile = "기본 프로필 정보 (이름, 사용자 식별자)" [msg.userfront.dashboard] approved_device = "승인 기기: {{device}}" approved_ip = "승인 IP: {{ip}}" audit_empty = "최근 접속 이력이 없습니다." audit_load_error = "접속이력을 불러오지 못했습니다." auto_login_supported = "연동앱 클릭 시 별도 로그인 없이 로그인할 수 있습니다." auth_method = "인증수단: {{method}}" client_id = "Client ID: {{id}}" client_id_missing = "Client ID 없음" current_status = "현재 상태: {{status}}" last_auth = "최근 인증: {{value}}" link_missing = "이동할 페이지 주소(Client URI)가 설정되지 않았습니다." link_open_error = "해당 링크를 열 수 없습니다." render_error = "대시보드 렌더링 오류: {{error}}" session_id_copied = "세션 ID가 복사되었습니다." [msg.userfront.dashboard.activities] empty = "연동된 앱이 없습니다." empty_detail = "앱을 연동하면 최근 활동과 상태가 표시됩니다." error = "연동 정보를 불러오지 못했습니다." [msg.userfront.dashboard.sessions] browser = "브라우저: {{value}}" empty = "활성 세션이 없습니다." empty_detail = "같은 계정으로 로그인한 기기가 여기에 표시됩니다." error = "세션 정보를 불러오지 못했습니다." os = "OS: {{value}}" recent_app = "최근 접속 앱: {{app}}" session_id = "세션 ID: {{id}}" [msg.userfront.dashboard.sessions.revoke] confirm = "{{target}} 세션을 종료하시겠습니까?\n대상 기기에서는 다시 로그인이 필요합니다." error = "세션 종료 실패: {{error}}" success = "세션이 종료되었습니다." [msg.userfront.dashboard.approved_session] copy_click = "{{label}}: {{id}}\\\\n클릭하면 복사됩니다." copy_tap = "{{label}}: {{id}}\\\\n탭하면 복사됩니다." none = "{{label}} 없음" [msg.userfront.dashboard.revoke] confirm = "{{app}} 앱과의 연동을 해지하시겠습니까?\\\\n해지하면 다음 로그인 시 다시 동의가 필요합니다." error = "해지 실패: {{error}}" success = "{{app}} 연동이 해지되었습니다." [msg.userfront.dashboard.scopes] empty = "요청된 권한이 없습니다." [msg.userfront.dashboard.timeline] load_error = "접속이력을 불러오지 못했습니다." [msg.userfront.error] detail_contact = "관리자에게 문의해 주세요." detail_generic = "오류가 발생했습니다." detail_request = "요청을 처리하는 중 문제가 발생했습니다." id = "오류 ID: {{id}}" title = "인증 과정에서 오류가 발생했습니다" title_generic = "오류가 발생했습니다" title_with_code = "오류: {{code}}" type = "오류 종류: {{type}}" [msg.userfront.error.tenant] account = "계정" account_unknown = "알 수 없음" affiliated_tenants = "전체 소속 테넌트" allowed_box_title = "접속 가능 테넌트" allowed_tenants = "접속 가능 테넌트" detail = "현재 로그인된 계정은 이 애플리케이션에 접근할 수 없습니다." load_failed = "계정 정보를 확인하지 못했습니다. 다시 시도해 주세요." loading = "현재 계정 정보를 불러오는 중입니다." lookup_fallback = "표시 정보가 충분하지 않아 일부 항목은 확인되지 않을 수 있습니다." page_title = "애플리케이션 접근이 제한되었습니다" primary_tenant = "대표 소속 테넌트" tenant = "소속 테넌트" tenant_unknown = "알 수 없음" title = "접근 제한 정보" [msg.userfront.error.ory] "$normalizedCode" = "{{error}}" access_denied = "사용자가 동의를 거부했습니다." consent_required = "앱 접근 동의가 필요합니다." interaction_required = "추가 상호작용이 필요합니다. 다시 시도해 주세요." invalid_client = "클라이언트 인증 정보가 유효하지 않습니다." invalid_grant = "인증 요청이 만료되었거나 유효하지 않습니다." invalid_request = "잘못된 요청입니다." invalid_scope = "요청한 권한 범위가 유효하지 않습니다." login_required = "로그인이 필요합니다." request_forbidden = "요청이 거부되었습니다." server_error = "인증 서버 오류가 발생했습니다." temporarily_unavailable = "인증 서버를 일시적으로 사용할 수 없습니다." unauthorized_client = "해당 클라이언트는 이 요청을 수행할 수 없습니다." unsupported_response_type = "지원하지 않는 응답 타입입니다." [msg.userfront.error.whitelist] "$normalizedCode" = "{{error}}" bad_request = "입력값을 확인해 주세요." invalid_session = "세션이 만료되었습니다. 다시 로그인해 주세요." not_found = "요청한 페이지를 찾을 수 없습니다." password_or_email_mismatch = "이메일 혹은 비밀번호가 일치하지 않습니다." rate_limited = "요청이 많습니다. 잠시 후 다시 시도해 주세요." recovery_expired = "재설정 링크가 만료되었습니다. 다시 요청해 주세요." recovery_invalid = "재설정 링크가 유효하지 않습니다." settings_disabled = "현재 계정 설정 화면은 준비 중입니다." verification_required = "추가 인증이 필요합니다. 안내에 따라 진행해 주세요." [msg.userfront.forgot] description = "계정과 연결된 이메일 주소 또는 휴대폰 번호를 입력하시면, 비밀번호를 재설정할 수 있는 링크를 보내드립니다." dry_send = "drySend 모드: 실제 이메일/SMS는 발송되지 않습니다." error = "전송에 실패했습니다: {{error}}" input_required = "이메일 또는 휴대폰 번호를 입력해주세요." sent = "비밀번호 재설정 링크가 전송되었습니다. 이메일 또는 SMS를 확인해주세요." [msg.userfront.login] cookie_check_failed = "로그인 확인 실패: {{error}}" dry_send = "drySend 모드: 실제 이메일/SMS는 발송되지 않습니다." link_failed = "오류: {{error}}" link_send_failed = "전송 실패: {{error}}" link_sent_email = "입력하신 이메일로 로그인 링크를 보냈습니다." link_sent_phone = "입력하신 번호로 로그인 링크를 보냈습니다." link_timeout = "시간이 경과되었습니다." no_account = "계정이 없으신가요?" oidc_failed = "OIDC 로그인 처리에 실패했습니다. 다시 시도해 주세요." qr_expired = "시간이 경과되었습니다." qr_init_failed = "QR 초기화에 실패했습니다: {{error}}" qr_login_required = "로그인 한 상태여야 QR 스캔으로 로그인 할 수 있습니다" token_missing = "로그인 토큰을 확인할 수 없습니다." verification_failed = "승인 처리에 실패했습니다: {{error}}" [msg.userfront.login.link] approved = "msg.userfront.login.link.approved" helper = "입력하신 정보로 로그인 링크를 전송합니다." missing_login_id = "이메일 또는 휴대폰 번호를 입력해 주세요." missing_phone = "휴대폰 번호를 입력해 주세요." resend_wait = "재발송은 {{time}} 후 가능합니다." short_code_help = "링크로 받은 값의 뒤 문자 2개와 숫자 6자리를 입력하셔도 로그인 할 수 있습니다." [msg.userfront.login.password] failed = "로그인 실패: {{error}}" missing_credentials = "이메일(또는 전화번호)와 비밀번호를 모두 입력해주세요." [msg.userfront.login.qr] load_failed = "QR 코드를 불러오지 못했습니다." scan_hint = "모바일 앱으로 스캔하세요" [msg.userfront.login.short_code] invalid = "문자 2개와 숫자 6자리를 입력해 주세요." [msg.userfront.login.unregistered] body = "가입되지 않은 정보입니다.\\\\n회원가입 후 이용해 주세요." [msg.userfront.login.verification] approved = "승인되었습니다. 로그인은 요청하신 창에서 완료됩니다." approved_local = "승인 되었습니다. 이 기기는 로그인되어 있는 상태입니다. 원격 창도 로그인이 될 예정입니다" approved_remote = "요청하신 로그인이 완료되었습니다" pending_remote = "승인 요청을 확인하고 있습니다. 잠시만 기다려 주세요." close_hint = "이 창은 이제 닫으셔도 됩니다." success = "로그인 승인에 성공했습니다." [msg.userfront.login_success] subtitle = "성공적으로 로그인되었습니다." [msg.userfront.profile] department_missing = "소속 정보 없음" department_required = "소속을 입력해주세요." email_missing = "이메일 없음" greeting = "안녕하세요, {{name}}님" load_failed = "정보를 불러올 수 없습니다." name_missing = "이름 없음" name_required = "이름을 입력해주세요." phone_required = "휴대폰 번호를 입력해주세요." phone_verify_required = "휴대폰 번호 인증이 필요합니다." update_failed = "수정 실패: {{error}}" update_success = "정보가 수정되었습니다." [msg.userfront.profile.password] change_failed = "비밀번호 변경 실패: {{error}}" changed = "비밀번호가 변경되었습니다." current_required = "현재 비밀번호를 입력해 주세요." mismatch = "새 비밀번호가 일치하지 않습니다." new_required = "새 비밀번호를 입력해 주세요." subtitle = "현재 비밀번호 확인 후 새 비밀번호로 변경합니다." [msg.userfront.profile.phone] code_sent = "인증번호가 전송되었습니다." send_failed = "전송 실패: {{error}}" verified = "인증되었습니다." verify_failed = "인증 실패: {{error}}" verify_notice = "휴대폰 번호를 변경하려면 SMS 인증이 필요합니다." [msg.userfront.profile.section] basic = "계정 기본 정보를 관리합니다." organization = "소속 및 구분 정보입니다." security = "비밀번호를 안전하게 관리합니다." [msg.userfront.qr] approve_error = "msg.userfront.qr.approve_error" approve_success = "msg.userfront.qr.approve_success" camera_error = "카메라 오류: {{error}}" permission_error = "카메라 권한 요청에 실패했습니다. 브라우저/OS 설정을 확인해주세요." permission_required = "카메라 권한이 필요합니다." [msg.userfront.reset] invalid_body = "비밀번호 재설정 링크가 만료되었거나 잘못되었습니다. 다시 시도해주세요." invalid_link = "유효하지 않은 재설정 링크입니다. (loginId/token 누락)" invalid_title = "유효하지 않은 링크입니다." policy_loading = "비밀번호 정책을 불러오는 중입니다..." success = "비밀번호가 성공적으로 변경되었습니다. 다시 로그인해주세요." [msg.userfront.reset.error] empty_password = "비밀번호를 입력해주세요." generic = "비밀번호 변경에 실패했습니다: {{error}}" lowercase = "최소 1개 이상의 소문자를 포함해야 합니다." min_length = "비밀번호는 최소 {{count}}자 이상이어야 합니다." min_types = "비밀번호는 영문 대/소문자/숫자/특수문자 중 {{count}}가지 이상 포함해야 합니다." mismatch = "비밀번호가 일치하지 않습니다." number = "최소 1개 이상의 숫자를 포함해야 합니다." symbol = "최소 1개 이상의 특수문자를 포함해야 합니다." uppercase = "최소 1개 이상의 대문자를 포함해야 합니다." [msg.userfront.reset.policy] lowercase = "소문자 1개 이상" min_length = "최소 {{count}}자 이상" min_types = "영문 대/소문자/숫자/특수문자 중 {{count}}가지 이상" number = "숫자 1개 이상" symbol = "특수문자 1개 이상" uppercase = "대문자 1개 이상" [msg.userfront.sections] apps_subtitle = "현재 연결된 앱과 최근 인증 상태입니다." audit_subtitle = "Baron 로그인 기준의 최근 접근 기록입니다." [msg.userfront.settings] disabled = "현재 계정 설정 화면은 준비 중입니다." [msg.userfront.signup] failed = "가입 실패: {{error}}" privacy_full = "개인정보 수집 및 이용 동의 전문..." tos_full = "서비스 이용약관 전문..." [msg.userfront.signup.agreement] all_hint = "필수 약관 2개를 모두 확인하고 동의하면 다음 단계로 진행할 수 있습니다." description = "계속 진행하려면 서비스 이용 조건과 개인정보 수집·이용 항목을 확인한 뒤 동의해주세요." privacy_summary = "개인정보 수집 항목, 이용 목적, 보관 기준을 안내합니다." progress = "필수 약관 {{total}}개 중 {{count}}개 동의 완료" title = "서비스 이용을 위해\\\\n약관에 동의해주세요" tos_summary = "서비스 이용 조건과 책임 범위를 확인할 수 있습니다." [msg.userfront.signup.auth] affiliate_notice = "가족사 회원의 경우 반드시 회사 공식 이메일을 입력해주세요." title = "본인 확인을 위해\\\\n인증을 진행해주세요" [msg.userfront.signup.email] code_mismatch = "인증코드가 일치하지 않습니다." duplicate = "이미 가입된 이메일입니다." invalid = "유효한 이메일 형식이 아닙니다." send_failed = "발송 실패: {{error}}" verified = "✅ 이메일 인증 완료" verify_failed = "인증 실패: {{error}}" [msg.userfront.signup.password] length_required = "비밀번호는 최소 12자 이상이어야 합니다." lowercase_required = "소문자가 최소 1개 이상 포함되어야 합니다." mismatch = "비밀번호가 일치하지 않습니다." number_required = "숫자가 최소 1개 이상 포함되어야 합니다." symbol_required = "특수문자가 최소 1개 이상 포함되어야 합니다." title = "마지막으로\\\\n비밀번호를 설정해주세요" uppercase_required = "대문자가 최소 1개 이상 포함되어야 합니다." [msg.userfront.signup.password.rule] lowercase = "소문자" min_length = "{{count}}자 이상" min_types = "문자 유형 {{count}}가지 이상" number = "숫자" symbol = "특수문자" uppercase = "대문자" [msg.userfront.signup.phone] code_mismatch = "인증코드가 일치하지 않습니다." send_failed = "발송 실패: {{error}}" verified = "✅ 휴대폰 인증 완료" verify_failed = "인증 실패: {{error}}" [msg.userfront.signup.policy] loading = "비밀번호 정책을 불러오는 중입니다..." lowercase = "소문자" min_length = "최소 {{count}}자 이상" min_types = "영문 대/소문자/숫자/특수문자 중 {{count}}가지 이상" number = "숫자" summary = "보안 정책: {{rules}}" symbol = "특수문자" uppercase = "대문자" [msg.userfront.signup.profile] affiliate_hint = "가족사 이메일 사용 시 자동으로 선택됩니다." title = "회원님의\\\\n소속 정보를 알려주세요" [msg.userfront.signup.success] body = "성공적으로 가입되었습니다." title = "회원가입 완료" [non] [non.existent] key = "존재하지 않는 키" [test] key = "테스트" [ui] [ui.admin] brand = "Baron 로그인" dev_role_switcher = "🛠 DEV Role Switcher" dev_role_switcher_real = "실제 역할 사용" title = "Admin Control" [ui.admin.api_keys] [ui.admin.api_keys.create] name_label = "서비스 또는 목적 식별 이름" name_placeholder = "예: Jenkins-CI, Grafana-Dashboard" section_name = "키 이름 지정" section_scopes = "권한 범위(Scopes) 선택" submit = "API 키 발급하기" title = "새 API 키 생성" [ui.admin.api_keys.create.success] copy_secret = "보안 시크릿 복사" go_list = "저장했습니다. 목록으로 이동" title = "API 키 생성 완료" [ui.admin.api_keys.list] add = "API 키 생성" edit_scopes = "권한 수정" rotate_secret = "Secret 재발급" rotate_secret_done = "Secret 재발급 완료" save_scopes = "권한 저장" title = "API 키 관리 (M2M)" [ui.admin.api_keys.list.breadcrumb] list = "List" section = "API Keys" [ui.admin.api_keys.list.registry] title = "API Key Registry" [ui.admin.api_keys.list.table] actions = "ACTIONS" client_id = "CLIENT ID" last_used = "LAST USED" name = "NAME" scopes = "SCOPES" [ui.admin.audit] export_csv = "Export CSV" load_more = "Load more" target = "Target · {{target}}" title = "감사 로그" [ui.admin.audit.breadcrumb] logs = "Logs" section = "Audit" [ui.admin.audit.copy] actor_id = "Copy actor id" request_id = "Copy request id" target = "Copy target" [ui.admin.audit.details] actor = "Actor" actor_id = "Actor ID · {{value}}" after = "After · {{value}}" before = "Before · {{value}}" device = "Device · {{value}}" error = "Error · {{value}}" event_id = "Event ID · {{value}}" ip = "IP · {{value}}" latency = "Latency · {{value}}" request = "Request" request_id = "Request ID · {{value}}" result = "Result" tenant = "Tenant · {{value}}" [ui.admin.audit.filters] placeholder = "필터 추가 (예: status:failure)" remove = "{{filter}} 필터 제거" [ui.admin.audit.registry] title = "Audit registry" [ui.admin.audit.table] action_target = "Action / Target" actor = "ACTOR (ID)" path = "PATH" request = "REQUEST" status = "STATUS" time = "TIME" [ui.admin.groups] import_csv = "CSV 임포트" [ui.admin.groups.create] description = "부서나 팀과 같은 새로운 조직 단위를 추가합니다." title = "새 그룹 생성" [ui.admin.groups.detail] breadcrumb_org = "조직 관리 목록으로 돌아가기" breadcrumb_tenant = "테넌트 상세" breadcrumb_unit = "조직 단위" members_subtitle = "이 조직에 소속된 사용자를 관리합니다." members_title = "구성원 관리" permissions_subtitle = "이 조직이 다른 테넌트에 가지는 역할을 정의합니다." permissions_title = "권한 관리" [ui.admin.groups.form] desc_label = "설명" desc_placeholder = "그룹 용도 설명" name_label = "그룹 이름" name_placeholder = "예: 개발팀, 인사팀" parent_label = "상위 조직" submit = "생성하기" unit_level_label = "조직 레벨" unit_level_placeholder = "예: 본부, 팀" [ui.admin.groups.list] title = "User Groups" [ui.admin.groups.members] add_modal_title = "그룹에 멤버 추가" move_modal_title = "부서 이동" [ui.admin.groups.members.table] actions = "ACTIONS" email = "이메일" name = "이름" remove = "제거" [ui.admin.groups.table] actions = "ACTIONS" members = "MEMBERS" name = "NAME" [ui.admin.header] plane = "Admin Plane" subtitle = "관리 및 정책 운영" [ui.admin.nav] org_chart = "조직도" api_keys = "API 키" audit_logs = "감사 로그" auth_guard = "인증 가드" logout = "로그아웃" overview = "개요" relying_parties = "애플리케이션(RP)" tenant_dashboard = "테넌트 대시보드" tenants = "테넌트" user_groups = "유저 그룹" users = "사용자" [ui.admin.org] download_template = "템플릿 다운로드" import_btn = "임포트" import_title = "조직도 대량 등록" start_import = "임포트 시작" [ui.admin.overview] kicker = "Global Overview" title = "통합 대시보드" [ui.admin.overview.playbook] title = "Admin playbook" [ui.admin.overview.quick_links] add_tenant = "테넌트 추가" api_key_management = "API 키 관리" title = "빠른 이동" user_management = "사용자 관리" view_audit_logs = "감사 로그 보기" [ui.admin.overview.summary] audit_events_24h = "24시간 이벤트" oidc_clients = "OIDC 클라이언트" policy_gate = "정책 게이트" total_users = "전체 사용자 수" total_tenants = "전체 테넌트 수" [ui.admin.profile] manageable_tenants = "관리 가능한 테넌트" [ui.admin.role] rp_admin = "RP ADMIN" super_admin = "SUPER ADMIN" tenant_admin = "TENANT ADMIN" user = "TENANT MEMBER" [ui.admin.tenants] add = "테넌트 추가" delete_selected = "선택 삭제" seed_badge = "초기 설정" title = "테넌트 목록" view_org_chart = "전체 조직도 보기" [ui.admin.tenants.view] hierarchy = "계층 구조" list = "평면 목록" table = "평면" tree = "트리" [ui.admin.tenants.scope] active = "{{name}} 하위" pick = "상위 범위 선택" [ui.admin.tenants.admins] add_button = "관리자 추가" already_admin = "이미 관리자" dialog_description = "이름 또는 이메일로 사용자를 검색하세요." dialog_no_results = "검색 결과가 없습니다." dialog_search_hint = "검색어를 입력해 주세요." dialog_search_placeholder = "사용자 검색 (최소 2자)..." dialog_title = "새 관리자 추가" remove_title = "관리자 권한 회수" table_actions = "액션" table_email = "이메일" table_name = "이름" title = "테넌트 관리자" [ui.admin.tenants.breadcrumb] list = "List" section = "Tenants" [ui.admin.tenants.create] title = "테넌트 추가" [ui.admin.tenants.create.breadcrumb] action = "Create" section = "Tenants" [ui.admin.tenants.create.form] description = "설명" domains_label = "Allowed Domains (Comma separated)" domains_placeholder = "example.com, example.kr" name = "테넌트 이름" name_placeholder = "테넌트 이름을 입력하세요" parent = "상위 테넌트" pick_hanmac_parent = "한맥가족에서 선택" pick_other_parent = "다른 테넌트 선택" root_tenant = "최상위 테넌트로 생성" slug = "Slug" slug_placeholder = "tenant-slug" status = "상태" type = "유형" [ui.admin.tenants.create.parent_context] general = "일반 하위 테넌트" hanmac = "한맥가족 하위 테넌트" pick_required = "상위 테넌트 선택 필요" root = "최상위 테넌트" [ui.admin.tenants.create.memo] title = "정책 메모" [ui.admin.tenants.create.profile] title = "Tenant Profile" [ui.admin.tenants.detail] breadcrumb_list = "테넌트 목록" header_subtitle = "테넌트 정보를 수정하거나 연동 설정을 관리합니다." loading = "불러오는 중..." tab_federation = "외부 연동" tab_organization = "조직 관리" tab_permissions = "권한" tab_profile = "프로필" tab_schema = "사용자 스키마" tab_worksmobile = "Worksmobile" title = "상세" [ui.admin.tenants.worksmobile] compare = "Baron / Works 비교" compare_description = "구성원은 기본적으로 Baron 또는 WORKS 한쪽에만 있는 항목을 보여줍니다." compare_groups = "조직/그룹" compare_users = "구성원" dry_run = "Backfill Dry-run" forbidden = "Worksmobile 연동 권한이 없습니다." initial_password_csv = "초기 비밀번호 CSV" recent_jobs = "최근 작업" refresh = "새로고침" single_sync = "단건 동기화" single_sync_description = "Baron UUID 기준으로 조직 또는 구성원 sync 작업을 생성합니다." subtitle = "한맥가족 Directory 조직/구성원 동기화 상태를 확인하고 실패 작업을 재시도합니다." sync_orgunit = "조직 Sync" sync_user = "구성원 Sync" title = "Worksmobile 연동" [ui.admin.tenants.list] search_placeholder = "테넌트 이름 또는 슬러그 검색..." select_placeholder = "테넌트를 선택하세요" [ui.admin.tenants.members] descendants = "하위 조직 멤버" direct = "소속 멤버" direct_label = "직속" list_title = "구성원 관리" title = "테넌트 구성원 ({{count}})" total = "전체" total_label = "전체" [msg.admin.apikeys.registry] count = "총 {{count}}개의 활성 키가 등록되어 있습니다." [msg.admin.org] import_partial_success = "일부 조직 정보를 가져왔습니다." [msg.admin.tenants] delete_bulk_confirm = "선택한 {{count}}개 테넌트를 삭제할까요?" seed_delete_blocked = "초기 설정 테넌트는 삭제할 수 없습니다." [msg.admin.users] self_delete_blocked = "자신의 계정은 삭제할 수 없습니다." export_error = "사용자 내보내기에 실패했습니다: {{error}}" status_error = "사용자 상태 변경에 실패했습니다: {{error}}" [ui.admin.apikeys.registry] title = "API Key Registry" [ui.admin.tenants.members] add_existing = "기존 멤버 배정" create_new = "신규 멤버 생성" delete_selected = "선택 삭제" remove = "조직에서 제외" view_org_chart = "전체 조직도 보기" direct_label = "직속" list_title = "구성원 관리" title = "테넌트 구성원 ({{count}})" total = "전체" total_label = "전체" view_profile = "상세 정보" [ui.admin.tenants.import_preview] candidates = "후보" confirm = "임포트 확정" create_new = "새로 생성" csv_parents = "CSV 상위 테넌트" fixed_id = "고정 ID" match = "매칭된 테넌트" no_candidates = "매칭 가능한 테넌트가 없습니다." parent = "상위" parent_companies = "상위 회사" parent_company_groups = "상위 그룹사" parent_organizations = "상위 조직" title = "임포트 미리보기" [ui.admin.tenants.members.table] actions = "ACTIONS" email = "EMAIL" name = "NAME" role = "ROLE" status = "STATUS" [ui.admin.tenants.owners] add_button = "소유자 추가" already_owner = "이미 소유자" dialog_description = "이름 또는 이메일로 사용자를 검색하세요." dialog_title = "새 소유자 추가" remove_title = "소유자 권한 회수" table_actions = "액션" table_email = "이메일" table_name = "이름" title = "테넌트 소유자" [ui.admin.tenants.profile] allowed_domains = "허용된 도메인 (콤마로 구분)" allowed_domains_help = "이 도메인을 가진 이메일로 가입한 사용자는 자동으로 이 테넌트에 배정됩니다." approve_button = "테넌트 승인" description = "설명" name = "테넌트 이름" org_unit_type = "조직 세부타입" slug = "슬러그 (Slug)" status = "상태" subtitle = "슬러그 및 상태 변경은 즉시 적용됩니다." title = "테넌트 프로필" type = "테넌트 유형" visibility = "공개 범위" worksmobile_enabled = "웍스모바일 활성화" worksmobile_excluded = "웍스모바일 제외" worksmobile_sync = "웍스모바일 동기화 상태" [ui.admin.tenants.profile.form] parent = "상위 테넌트 (선택)" parent_help = "가족사 테넌트나 하위 조직을 종속시킬 경우 상위 테넌트를 선택해주세요." [ui.admin.tenants.parent] company_only = "회사/그룹사만 표시" search_placeholder = "이름 또는 slug 검색" local_search_placeholder = "테넌트 이름 또는 슬러그 검색" pick_tenant = "테넌트 선택" [ui.admin.tenants.registry] title = "Tenant registry" [ui.admin.tenants.schema] add_field = "필드 추가" save = "스키마 저장" title = "User Schema Extension" [ui.admin.tenants.schema.field] admin_only = "관리자 전용" indexed = "조회 인덱스" is_login_id = "로그인 ID로 사용" key = "Field Key (ID)" key_placeholder = "e.g. employee_id" label = "표시 레이블" label_placeholder = "예: 사번" required = "필수 여부" type = "타입" type_boolean = "Boolean" type_date = "Date" type_datetime = "일시 (DateTime)" type_float = "실수 (Float)" type_number = "Number" type_text = "텍스트" unsigned = "음수 불가" validation_placeholder = "정규표현식 (선택 사항)" [ui.admin.tenants.sub] add = "하위 테넌트 추가" add_dialog_desc = "하위 테넌트로 추가할 테넌트를 선택하세요." add_dialog_title = "하위 테넌트 추가" add_existing = "기존 테넌트 추가" export = "하위 조직 CSV" manage = "관리" no_candidates = "추가 가능한 테넌트가 없습니다." search_placeholder = "검색..." title = "하위 테넌트 ({{count}})" tree_search_placeholder = "트리에서 검색..." [ui.admin.tenants.sub.table] action = "ACTION" name = "NAME" slug = "SLUG" status = "STATUS" [ui.admin.tenants.table] actions = "ACTIONS" id = "ID" members = "멤버수" name = "NAME" slug = "SLUG" status = "STATUS" type = "유형" updated = "UPDATED" created = "CREATED" created = "CREATED" [ui.admin.users] csv_template = "템플릿 다운로드" [ui.admin.users.bulk] acknowledge_warning = "경고를 확인했으며 계속 진행합니다." create_missing_tenant = "신규 생성" do_move = "이동 실행" download_template = "템플릿 받기" move_group = "테넌트 일괄 이동" move_title = "사용자 일괄 이동" no_department = "부서 없음" schema_warning = "스키마 호환성 경고" select_group = "대상 테넌트 선택" selected_count = "{{count}}명 선택됨" start_upload = "업로드 시작" tenant_resolution = "테넌트 매핑" title = "일괄 작업" status_placeholder = "상태 선택" permission_placeholder = "권한 선택" [ui.admin.users.create] back = "목록으로 돌아가기" go_list = "목록으로 이동" submit = "사용자 생성" title = "사용자 추가" [ui.admin.users.create.account] title = "계정 정보" [ui.admin.users.create.breadcrumb] new = "New" section = "Users" [ui.admin.users.create.custom_fields] title = "테넌트 확장 정보 (Custom Fields)" [ui.admin.users.create.form] auto_password = "자동 생성" department = "부서" department_placeholder = "개발팀" email = "이메일" email_placeholder = "user@example.com" is_login_id = "로그인 ID" job_title = "직무" job_title_placeholder = "프론트엔드 개발" login_id = "로그인 ID (선택)" login_id_placeholder = "사번 또는 아이디" name = "이름" name_placeholder = "홍길동" password = "비밀번호" password_placeholder = "********" picker_description = "배정할 테넌트를 검색해서 선택하세요." phone = "전화번호" phone_placeholder = "010-1234-5678" position = "직급" position_placeholder = "수석/책임/선임" role = "역할" tenant = "테넌트" tenant_global = "시스템 전역" [ui.admin.users.create.password_generated] title = "초기 비밀번호 생성 완료" [ui.admin.users.detail] back = "목록으로 돌아가기" contact_title = "ui.admin.users.detail.contact_title" created_at = "가입일" delete = "사용자 삭제" edit_title = "정보 수정" generate_button = "랜덤 비밀번호 생성" generate_password = "자동 생성" go_list = "목록으로 이동" history_title = "서비스 이용 내역" manual_confirm = "비밀번호 확인" manual_password = "새 비밀번호" password_done = "성공적으로 초기화됨" password_mode_generated = "자동 생성" password_mode_manual = "수동 입력" password_result_title = "Reset Password" password_title = "비밀번호 관리" reset_auto = "자동 생성" reset_execute = "재설정 완료" reset_manual = "직접 입력" reset_password = "초기화 도구" reset_password_apply = "비밀번호 적용" reset_password_label = "비밀번호 초기화" save = "저장하기" save_tenants = "모든 테넌트 프로필 저장" status_title = "ui.admin.users.detail.status_title" title = "사용자 상세" toggle_password_visibility = "비밀번호 표시 전환" updated_at = "최근 수정" [ui.admin.users.detail.breadcrumb] section = "Users" [ui.admin.users.detail.custom_fields] multi_title = "테넌트별 프로필 관리" [ui.admin.users.detail.form] department = "부서" department_placeholder = "개발팀" email = "이메일" is_login_id = "로그인 ID" job_title = "직무" job_title_placeholder = "ui.admin.users.detail.form.job_title_placeholder" login_id = "로그인 ID" login_id_placeholder = "사번 또는 아이디" name = "이름" name_placeholder = "홍길동" phone = "전화번호" phone_placeholder = "010-1234-5678" position = "직급" position_placeholder = "ui.admin.users.detail.form.position_placeholder" role = "역할" role_rp_admin = "RP 관리자" role_super_admin = "시스템 전역 관리자" role_tenant_admin = "테넌트 관리자" role_user = "사용자" status = "상태" status_active = "ui.admin.users.detail.form.status_active" status_inactive = "ui.admin.users.detail.form.status_inactive" tenant = "대표 소속 테넌트" tenant_global = "시스템 전역" tenant_slug = "대표 소속 (Tenant Slug)" [ui.admin.users.detail.form.- ui] [ui.admin.users.detail.form.- ui.admin] [ui.admin.users.detail.form.- ui.admin.users] [ui.admin.users.detail.form.- ui.admin.users.list] [ui.admin.users.detail.form.- ui.admin.users.list.table] [ui.admin.users.detail.form.- ui.admin.users.list.table.ui] [ui.admin.users.detail.form.- ui.admin.users.list.table.ui.dev] [ui.admin.users.detail.form.- ui.admin.users.list.table.ui.dev.clients] [ui.admin.users.detail.form.- ui.admin.users.list.table.ui.dev.clients.general] [ui.admin.users.detail.form.- ui.admin.users.list.table.ui.dev.clients.general.public_key] revoke_cache = "ui.admin.users.detail.form.- ui.admin.users.list.table.ui.dev.clients.general.public_key.revoke_cache" [ui.admin.users.detail.form.msg] [ui.admin.users.detail.form.msg.admin] [ui.admin.users.detail.form.msg.admin.users] [ui.admin.users.detail.form.msg.admin.users.detail] history_desc = "ui.admin.users.detail.form.msg.admin.users.detail.history_desc" no_history = "ui.admin.users.detail.form.msg.admin.users.detail.no_history" no_tenants = "ui.admin.users.detail.form.msg.admin.users.detail.no_tenants" reset_auto_desc = "ui.admin.users.detail.form.msg.admin.users.detail.reset_auto_desc" security_desc = "ui.admin.users.detail.form.msg.admin.users.detail.security_desc" tenant_slug_help = "ui.admin.users.detail.form.msg.admin.users.detail.tenant_slug_help" tenants_desc = "ui.admin.users.detail.form.msg.admin.users.detail.tenants_desc" [ui.admin.users.detail.form.msg.common] copied = "ui.admin.users.detail.form.msg.common.copied" [ui.admin.users.detail.form.msg.dev] [ui.admin.users.detail.form.msg.dev.clients] [ui.admin.users.detail.form.msg.dev.clients.general] [ui.admin.users.detail.form.msg.dev.clients.general.public_key] allowed_algorithms_tooltip = "ui.admin.users.detail.form.msg.dev.clients.general.public_key.allowed_algorithms_tooltip" cache_empty = "ui.admin.users.detail.form.msg.dev.clients.general.public_key.cache_empty" cache_help = "ui.admin.users.detail.form.msg.dev.clients.general.public_key.cache_help" cache_refresh_failed = "ui.admin.users.detail.form.msg.dev.clients.general.public_key.cache_refresh_failed" cache_refreshed = "ui.admin.users.detail.form.msg.dev.clients.general.public_key.cache_refreshed" cache_revoke_confirm = "ui.admin.users.detail.form.msg.dev.clients.general.public_key.cache_revoke_confirm" cache_revoke_failed = "ui.admin.users.detail.form.msg.dev.clients.general.public_key.cache_revoke_failed" cache_revoked = "ui.admin.users.detail.form.msg.dev.clients.general.public_key.cache_revoked" [ui.admin.users.detail.form.msg.dev.clients.general.public_key.cache] missing_algorithm_badge = "ui.admin.users.detail.form.msg.dev.clients.general.public_key.cache.missing_algorithm_badge" missing_algorithm_reason = "ui.admin.users.detail.form.msg.dev.clients.general.public_key.cache.missing_algorithm_reason" missing_algorithms_help = "ui.admin.users.detail.form.msg.dev.clients.general.public_key.cache.missing_algorithms_help" missing_algorithms_title = "ui.admin.users.detail.form.msg.dev.clients.general.public_key.cache.missing_algorithms_title" parsed_keys_empty = "ui.admin.users.detail.form.msg.dev.clients.general.public_key.cache.parsed_keys_empty" parsed_keys_help = "ui.admin.users.detail.form.msg.dev.clients.general.public_key.cache.parsed_keys_help" unsupported_algorithm_reason = "ui.admin.users.detail.form.msg.dev.clients.general.public_key.cache.unsupported_algorithm_reason" unsupported_algorithms_help = "ui.admin.users.detail.form.msg.dev.clients.general.public_key.cache.unsupported_algorithms_help" unsupported_algorithms_title = "ui.admin.users.detail.form.msg.dev.clients.general.public_key.cache.unsupported_algorithms_title" [ui.admin.users.detail.form.msg.dev.clients.general.public_key.validation] missing_parsed_algorithms = "ui.admin.users.detail.form.msg.dev.clients.general.public_key.validation.missing_parsed_algorithms" unsupported_parsed_algorithms = "ui.admin.users.detail.form.msg.dev.clients.general.public_key.validation.unsupported_parsed_algorithms" [ui.admin.users.detail.form.ui] [ui.admin.users.detail.form.ui.admin] [ui.admin.users.detail.form.ui.admin.users] [ui.admin.users.detail.form.ui.admin.users.create] [ui.admin.users.detail.form.ui.admin.users.create.form] is_login_id = "ui.admin.users.detail.form.ui.admin.users.create.form.is_login_id" [ui.admin.users.detail.form.ui.admin.users.detail] generate_button = "ui.admin.users.detail.form.ui.admin.users.detail.generate_button" history_title = "ui.admin.users.detail.form.ui.admin.users.detail.history_title" manual_confirm = "ui.admin.users.detail.form.ui.admin.users.detail.manual_confirm" manual_password = "ui.admin.users.detail.form.ui.admin.users.detail.manual_password" password_done = "ui.admin.users.detail.form.ui.admin.users.detail.password_done" reset_auto = "ui.admin.users.detail.form.ui.admin.users.detail.reset_auto" reset_execute = "ui.admin.users.detail.form.ui.admin.users.detail.reset_execute" reset_manual = "ui.admin.users.detail.form.ui.admin.users.detail.reset_manual" save_tenants = "ui.admin.users.detail.form.ui.admin.users.detail.save_tenants" updated_at = "ui.admin.users.detail.form.ui.admin.users.detail.updated_at" [ui.admin.users.detail.form.ui.admin.users.detail.form] email = "ui.admin.users.detail.form.ui.admin.users.detail.form.email" is_login_id = "ui.admin.users.detail.form.ui.admin.users.detail.form.is_login_id" role_rp_admin = "ui.admin.users.detail.form.ui.admin.users.detail.form.role_rp_admin" tenant_slug = "ui.admin.users.detail.form.ui.admin.users.detail.form.tenant_slug" [ui.admin.users.detail.form.ui.admin.users.detail.tabs] info = "ui.admin.users.detail.form.ui.admin.users.detail.tabs.info" security = "ui.admin.users.detail.form.ui.admin.users.detail.tabs.security" tenants = "ui.admin.users.detail.form.ui.admin.users.detail.tabs.tenants" [ui.admin.users.detail.form.ui.common] generate = "ui.admin.users.detail.form.ui.common.generate" [ui.admin.users.detail.form.ui.common.status] blocked = "ui.admin.users.detail.form.ui.common.status.blocked" [ui.admin.users.detail.form.ui.dev] [ui.admin.users.detail.form.ui.dev.clients] [ui.admin.users.detail.form.ui.dev.clients.general] [ui.admin.users.detail.form.ui.dev.clients.general.public_key] allowed_algorithms_info = "ui.admin.users.detail.form.ui.dev.clients.general.public_key.allowed_algorithms_info" auth_method = "ui.admin.users.detail.form.ui.dev.clients.general.public_key.auth_method" auth_method_client_secret_basic = "ui.admin.users.detail.form.ui.dev.clients.general.public_key.auth_method_client_secret_basic" auth_method_none = "ui.admin.users.detail.form.ui.dev.clients.general.public_key.auth_method_none" auth_method_private_key_jwt = "ui.admin.users.detail.form.ui.dev.clients.general.public_key.auth_method_private_key_jwt" guide_toggle = "ui.admin.users.detail.form.ui.dev.clients.general.public_key.guide_toggle" headless_disabled = "ui.admin.users.detail.form.ui.dev.clients.general.public_key.headless_disabled" headless_enabled = "ui.admin.users.detail.form.ui.dev.clients.general.public_key.headless_enabled" jwks_inline = "ui.admin.users.detail.form.ui.dev.clients.general.public_key.jwks_inline" jwks_inline_placeholder = "ui.admin.users.detail.form.ui.dev.clients.general.public_key.jwks_inline_placeholder" request_object_alg = "ui.admin.users.detail.form.ui.dev.clients.general.public_key.request_object_alg" request_object_alg_placeholder = "ui.admin.users.detail.form.ui.dev.clients.general.public_key.request_object_alg_placeholder" revoke_cache = "ui.admin.users.detail.form.ui.dev.clients.general.public_key.revoke_cache" source = "ui.admin.users.detail.form.ui.dev.clients.general.public_key.source" source_uri = "ui.admin.users.detail.form.ui.dev.clients.general.public_key.source_uri" [ui.admin.users.detail.form.ui.dev.clients.general.public_key.cache] cached_at = "ui.admin.users.detail.form.ui.dev.clients.general.public_key.cache.cached_at" error = "ui.admin.users.detail.form.ui.dev.clients.general.public_key.cache.error" expires_at = "ui.admin.users.detail.form.ui.dev.clients.general.public_key.cache.expires_at" failures = "ui.admin.users.detail.form.ui.dev.clients.general.public_key.cache.failures" kids = "ui.admin.users.detail.form.ui.dev.clients.general.public_key.cache.kids" last_checked_at = "ui.admin.users.detail.form.ui.dev.clients.general.public_key.cache.last_checked_at" last_success = "ui.admin.users.detail.form.ui.dev.clients.general.public_key.cache.last_success" parsed_key_n = "ui.admin.users.detail.form.ui.dev.clients.general.public_key.cache.parsed_key_n" parsed_keys = "ui.admin.users.detail.form.ui.dev.clients.general.public_key.cache.parsed_keys" status = "ui.admin.users.detail.form.ui.dev.clients.general.public_key.cache.status" title = "ui.admin.users.detail.form.ui.dev.clients.general.public_key.cache.title" uri = "ui.admin.users.detail.form.ui.dev.clients.general.public_key.cache.uri" [ui.admin.users.detail.form.ui.dev.clients.general.security] trusted_rp_enable = "ui.admin.users.detail.form.ui.dev.clients.general.security.trusted_rp_enable" trusted_rp_enable_help = "ui.admin.users.detail.form.ui.dev.clients.general.security.trusted_rp_enable_help" [ui.admin.users.detail.form.ui.dev.clients.help] docs_body = "ui.admin.users.detail.form.ui.dev.clients.help.docs_body" subtitle = "ui.admin.users.detail.form.ui.dev.clients.help.subtitle" [ui.admin.users.detail.form.ui.dev.clients.registry] description = "ui.admin.users.detail.form.ui.dev.clients.registry.description" [ui.admin.users.detail.form.ui.dev.clients.scopes] email = "ui.admin.users.detail.form.ui.dev.clients.scopes.email" openid = "ui.admin.users.detail.form.ui.dev.clients.scopes.openid" profile = "ui.admin.users.detail.form.ui.dev.clients.scopes.profile" [ui.admin.users.detail.form.ui.dev.session] refresh = "ui.admin.users.detail.form.ui.dev.session.refresh" refreshing = "ui.admin.users.detail.form.ui.dev.session.refreshing" [ui.admin.users.detail.security] password = "비밀번호 변경" password_placeholder = "변경할 경우에만 입력" title = "보안 설정" [ui.admin.users.detail.tabs] info = "기본 정보" security = "보안 & 활동" tenants = "테넌트 프로필" [ui.admin.users.detail.tenants_section] additional = "추가 소속/관리 테넌트" primary = "대표 소속 테넌트" title = "소속 및 조직 정보" [ui.admin.users.field] department = "부서" grade = "직급" jobtitle = "직무" name = "이름" phone = "전화번호" position = "직책" role = "역할" status = "상태" tenant = "테넌트" [ui.admin.users.list] add = "사용자 추가" bulk_import = "일괄 임포트" change_status = "{{name}} 상태 변경" empty = "검색 결과가 없습니다." fetch_error = "사용자 목록 조회에 실패했습니다." search_placeholder = "이름 또는 이메일 검색..." status_select = "{{name}} 상태" subtitle = "시스템 사용자를 조회하고 관리합니다." toggle_status = "{{name}} 활성 상태" title = "사용자 관리" [ui.admin.users.list.breadcrumb] list = "List" section = "Users" [ui.admin.users.list.columns] title = "컬럼 설정" [ui.admin.users.list.filter] tenant = "테넌트 필터" [ui.admin.users.list.registry] count = "총 {{count}}명의 사용자가 등록되어 있습니다." title = "사용자 레지스트리" [ui.admin.users.list.table] actions = "ACTIONS" created = "CREATED" login_id = "LOGIN ID" name_email = "NAME / EMAIL" role = "ROLE" status = "STATUS" tenant_dept = "TENANT / DEPT" [ui.admin.users.list.table.msg] [ui.admin.users.list.table.msg.admin] [ui.admin.users.list.table.msg.admin.users] [ui.admin.users.list.table.msg.admin.users.detail] history_desc = "ui.admin.users.list.table.msg.admin.users.detail.history_desc" no_history = "ui.admin.users.list.table.msg.admin.users.detail.no_history" no_tenants = "ui.admin.users.list.table.msg.admin.users.detail.no_tenants" reset_auto_desc = "ui.admin.users.list.table.msg.admin.users.detail.reset_auto_desc" security_desc = "ui.admin.users.list.table.msg.admin.users.detail.security_desc" tenant_slug_help = "ui.admin.users.list.table.msg.admin.users.detail.tenant_slug_help" tenants_desc = "ui.admin.users.list.table.msg.admin.users.detail.tenants_desc" [ui.admin.users.list.table.msg.common] copied = "ui.admin.users.list.table.msg.common.copied" [ui.admin.users.list.table.msg.dev] [ui.admin.users.list.table.msg.dev.clients] [ui.admin.users.list.table.msg.dev.clients.general] [ui.admin.users.list.table.msg.dev.clients.general.public_key] allowed_algorithms_tooltip = "ui.admin.users.list.table.msg.dev.clients.general.public_key.allowed_algorithms_tooltip" cache_empty = "ui.admin.users.list.table.msg.dev.clients.general.public_key.cache_empty" cache_help = "ui.admin.users.list.table.msg.dev.clients.general.public_key.cache_help" cache_refresh_failed = "ui.admin.users.list.table.msg.dev.clients.general.public_key.cache_refresh_failed" cache_refreshed = "ui.admin.users.list.table.msg.dev.clients.general.public_key.cache_refreshed" cache_revoke_confirm = "ui.admin.users.list.table.msg.dev.clients.general.public_key.cache_revoke_confirm" cache_revoke_failed = "ui.admin.users.list.table.msg.dev.clients.general.public_key.cache_revoke_failed" cache_revoked = "ui.admin.users.list.table.msg.dev.clients.general.public_key.cache_revoked" [ui.admin.users.list.table.msg.dev.clients.general.public_key.cache] missing_algorithm_badge = "ui.admin.users.list.table.msg.dev.clients.general.public_key.cache.missing_algorithm_badge" missing_algorithm_reason = "ui.admin.users.list.table.msg.dev.clients.general.public_key.cache.missing_algorithm_reason" missing_algorithms_help = "ui.admin.users.list.table.msg.dev.clients.general.public_key.cache.missing_algorithms_help" missing_algorithms_title = "ui.admin.users.list.table.msg.dev.clients.general.public_key.cache.missing_algorithms_title" parsed_keys_empty = "ui.admin.users.list.table.msg.dev.clients.general.public_key.cache.parsed_keys_empty" parsed_keys_help = "ui.admin.users.list.table.msg.dev.clients.general.public_key.cache.parsed_keys_help" unsupported_algorithm_reason = "ui.admin.users.list.table.msg.dev.clients.general.public_key.cache.unsupported_algorithm_reason" unsupported_algorithms_help = "ui.admin.users.list.table.msg.dev.clients.general.public_key.cache.unsupported_algorithms_help" unsupported_algorithms_title = "ui.admin.users.list.table.msg.dev.clients.general.public_key.cache.unsupported_algorithms_title" [ui.admin.users.list.table.msg.dev.clients.general.public_key.validation] missing_parsed_algorithms = "ui.admin.users.list.table.msg.dev.clients.general.public_key.validation.missing_parsed_algorithms" unsupported_parsed_algorithms = "ui.admin.users.list.table.msg.dev.clients.general.public_key.validation.unsupported_parsed_algorithms" [ui.admin.users.list.table.ui] [ui.admin.users.list.table.ui.admin] [ui.admin.users.list.table.ui.admin.users] [ui.admin.users.list.table.ui.admin.users.create] [ui.admin.users.list.table.ui.admin.users.create.form] is_login_id = "ui.admin.users.list.table.ui.admin.users.create.form.is_login_id" [ui.admin.users.list.table.ui.admin.users.detail] generate_button = "ui.admin.users.list.table.ui.admin.users.detail.generate_button" history_title = "ui.admin.users.list.table.ui.admin.users.detail.history_title" manual_confirm = "ui.admin.users.list.table.ui.admin.users.detail.manual_confirm" manual_password = "ui.admin.users.list.table.ui.admin.users.detail.manual_password" password_done = "ui.admin.users.list.table.ui.admin.users.detail.password_done" reset_auto = "ui.admin.users.list.table.ui.admin.users.detail.reset_auto" reset_execute = "ui.admin.users.list.table.ui.admin.users.detail.reset_execute" reset_manual = "ui.admin.users.list.table.ui.admin.users.detail.reset_manual" save_tenants = "ui.admin.users.list.table.ui.admin.users.detail.save_tenants" updated_at = "ui.admin.users.list.table.ui.admin.users.detail.updated_at" [ui.admin.users.list.table.ui.admin.users.detail.form] email = "ui.admin.users.list.table.ui.admin.users.detail.form.email" is_login_id = "ui.admin.users.list.table.ui.admin.users.detail.form.is_login_id" role_rp_admin = "ui.admin.users.list.table.ui.admin.users.detail.form.role_rp_admin" tenant_slug = "ui.admin.users.list.table.ui.admin.users.detail.form.tenant_slug" [ui.admin.users.list.table.ui.admin.users.detail.tabs] info = "ui.admin.users.list.table.ui.admin.users.detail.tabs.info" security = "ui.admin.users.list.table.ui.admin.users.detail.tabs.security" tenants = "ui.admin.users.list.table.ui.admin.users.detail.tabs.tenants" [ui.admin.users.list.table.ui.common] generate = "ui.admin.users.list.table.ui.common.generate" [ui.admin.users.list.table.ui.common.status] blocked = "ui.admin.users.list.table.ui.common.status.blocked" [ui.admin.users.list.table.ui.dev] [ui.admin.users.list.table.ui.dev.clients] [ui.admin.users.list.table.ui.dev.clients.general] [ui.admin.users.list.table.ui.dev.clients.general.public_key] allowed_algorithms_info = "ui.admin.users.list.table.ui.dev.clients.general.public_key.allowed_algorithms_info" auth_method = "ui.admin.users.list.table.ui.dev.clients.general.public_key.auth_method" auth_method_client_secret_basic = "ui.admin.users.list.table.ui.dev.clients.general.public_key.auth_method_client_secret_basic" auth_method_none = "ui.admin.users.list.table.ui.dev.clients.general.public_key.auth_method_none" auth_method_private_key_jwt = "ui.admin.users.list.table.ui.dev.clients.general.public_key.auth_method_private_key_jwt" guide_toggle = "ui.admin.users.list.table.ui.dev.clients.general.public_key.guide_toggle" headless_disabled = "ui.admin.users.list.table.ui.dev.clients.general.public_key.headless_disabled" headless_enabled = "ui.admin.users.list.table.ui.dev.clients.general.public_key.headless_enabled" jwks_inline = "ui.admin.users.list.table.ui.dev.clients.general.public_key.jwks_inline" jwks_inline_placeholder = "ui.admin.users.list.table.ui.dev.clients.general.public_key.jwks_inline_placeholder" request_object_alg = "ui.admin.users.list.table.ui.dev.clients.general.public_key.request_object_alg" request_object_alg_placeholder = "ui.admin.users.list.table.ui.dev.clients.general.public_key.request_object_alg_placeholder" revoke_cache = "ui.admin.users.list.table.ui.dev.clients.general.public_key.revoke_cache" source = "ui.admin.users.list.table.ui.dev.clients.general.public_key.source" source_uri = "ui.admin.users.list.table.ui.dev.clients.general.public_key.source_uri" [ui.admin.users.list.table.ui.dev.clients.general.public_key.cache] cached_at = "ui.admin.users.list.table.ui.dev.clients.general.public_key.cache.cached_at" error = "ui.admin.users.list.table.ui.dev.clients.general.public_key.cache.error" expires_at = "ui.admin.users.list.table.ui.dev.clients.general.public_key.cache.expires_at" failures = "ui.admin.users.list.table.ui.dev.clients.general.public_key.cache.failures" kids = "ui.admin.users.list.table.ui.dev.clients.general.public_key.cache.kids" last_checked_at = "ui.admin.users.list.table.ui.dev.clients.general.public_key.cache.last_checked_at" last_success = "ui.admin.users.list.table.ui.dev.clients.general.public_key.cache.last_success" parsed_key_n = "ui.admin.users.list.table.ui.dev.clients.general.public_key.cache.parsed_key_n" parsed_keys = "ui.admin.users.list.table.ui.dev.clients.general.public_key.cache.parsed_keys" status = "ui.admin.users.list.table.ui.dev.clients.general.public_key.cache.status" title = "ui.admin.users.list.table.ui.dev.clients.general.public_key.cache.title" uri = "ui.admin.users.list.table.ui.dev.clients.general.public_key.cache.uri" [ui.admin.users.list.table.ui.dev.clients.general.security] trusted_rp_enable = "ui.admin.users.list.table.ui.dev.clients.general.security.trusted_rp_enable" trusted_rp_enable_help = "ui.admin.users.list.table.ui.dev.clients.general.security.trusted_rp_enable_help" [ui.admin.users.list.table.ui.dev.clients.help] docs_body = "ui.admin.users.list.table.ui.dev.clients.help.docs_body" subtitle = "ui.admin.users.list.table.ui.dev.clients.help.subtitle" [ui.admin.users.list.table.ui.dev.clients.registry] description = "ui.admin.users.list.table.ui.dev.clients.registry.description" [ui.admin.users.list.table.ui.dev.clients.scopes] email = "ui.admin.users.list.table.ui.dev.clients.scopes.email" openid = "ui.admin.users.list.table.ui.dev.clients.scopes.openid" profile = "ui.admin.users.list.table.ui.dev.clients.scopes.profile" [ui.admin.users.list.table.ui.dev.session] refresh = "ui.admin.users.list.table.ui.dev.session.refresh" refreshing = "ui.admin.users.list.table.ui.dev.session.refreshing" [ui.admin.users.table] email = "이메일" name = "이름" role = "역할" [ui.common] add = "추가" admin_only = "관리자 전용" all = "전체" assign = "할당" back = "돌아가기" back_to_login = "로그인으로 돌아가기" cancel = "취소" change_file = "파일 변경" clear_search = "검색 초기화" close = "닫기" collapse = "접기" confirm = "확인" copy = "복사" create = "생성" delete = "삭제" details = "상세정보" edit = "편집" enabled = "사용" export = "내보내기" fail = "실패" generate = "ui.common.generate" go_home = "홈으로" hyphen = "-" language = "언어" language_en = "English" language_ko = "한국어" manage = "관리" na = "N/A" never = "Never" next = "다음" none = "없음" page_of = "Page {{page}} of {{total}}" prev = "이전" previous = "이전" qr = "QR" read_only = "읽기 전용" refresh = "새로고침" remove = "제외" resend = "재발송" reset = "초기화" retry = "다시 시도" save = "저장" search = "검색" select = "선택" select_file = "파일 선택" select_placeholder = "선택하세요" show_more = "+ 더보기" success = "성공" theme_dark = "Dark" theme_light = "Light" theme_toggle = "테마 전환" unknown = "Unknown" view = "보기" [ui.common.badge] admin_only = "Admin only" command_only = "Command only" system = "System" [ui.common.status] active = "활성" archived = "보관됨" baron_guest = "Baron 게스트" blocked = "ui.common.status.blocked" extended_leave = "장기휴직" failure = "실패" inactive = "비활성" leave_of_absence = "휴직" ok = "정상" pending = "준비 중" preboarding = "입사대기" success = "성공" suspended = "정지" temporary_leave = "단기휴무" [ui.dev] brand = "Baron 로그인" console_title = "Developer Console" env_badge = "Env: dev" scope_badge = "Scoped to /dev" [ui.dev.audit] load_more = "더 보기" title = "감사 로그" [ui.dev.audit.filter] action = "액션으로 필터 (예: ROTATE_SECRET)" client_id = "Client ID로 필터" status_all = "모든 상태" [ui.dev.audit.registry] title = "Audit registry" [ui.dev.audit.table] action = "액션" actor = "수행자" status = "상태" target = "대상" time = "시간" [ui.dev.clients] new = "연동 앱 추가" search_placeholder = "연동 앱 이름/ID로 검색..." tenant_scoped = "Tenant-scoped" untitled = "Untitled" [ui.dev.clients.badge] admin_session = "관리자 세션" tenant_selected = "테넌트: 선택됨" [ui.dev.clients.consents] export_csv = "Export CSV" revoke = "Revoke" revoked_at = "철회일: " scope_label = "권한:" search_placeholder = "사용자 ID, 이름, 이메일로 검색" status_all = "ui.dev.clients.consents.status_all" status_label = "Status:" status_revoked = "Revoked" subject = "Subject" title = "User Consent Grants" [ui.dev.clients.consents.breadcrumb] clients = "Clients" current = "User Consent Grants" home = "Home" [ui.dev.clients.consents.filters] advanced = "고급 필터" [ui.dev.clients.consents.stats] active_grants = "활성 동의 건수" avg_scopes = "사용자당 평균 스코프" total_scopes = "총 발급 스코프 수" [ui.dev.clients.consents.table] action = "동작" first_granted = "최초 동의 시각" last_auth = "마지막 인증 시각" scopes = "승인된 스코프" status = "상태" tenant = "테넌트" user = "사용자" [ui.dev.clients.details] [ui.dev.clients.details.credentials] client_id = "클라이언트 ID" client_secret = "클라이언트 시크릿" title = "앱 자격 증명" [ui.dev.clients.details.endpoints] read_only = "읽기 전용" title = "OIDC 엔드포인트" [ui.dev.clients.details.redirect] callback_label = "인증 콜백 URL" label = "리디렉션 URI" placeholder = "https://your-app.com/callback, http://localhost:3000/auth/callback" save = "Redirect URIs 저장" title = "리디렉션 URI 설정" [ui.dev.clients.details.secret] hide = "비밀키 숨기기" rotate = "비밀키 재발급 (Rotate)" show = "비밀키 보기" [ui.dev.clients.details.security] title = "보안 메모" [ui.dev.clients.details.tab] connection = "연동 설정" consents = "동의 및 사용자" settings = "설정" [ui.dev.clients.federation] add_btn = "Add Provider" add_title = "Add Identity Provider" title = "Identity Federation" [ui.dev.clients.filter] status_all = "모든 상태" type_all = "모든 유형" type_label = "유형:" [ui.dev.clients.general] create = "앱 생성" display_new = "연동 앱 추가" subtitle = "앱 설정과 보안 구성을 관리합니다." title_create = "연동 앱 생성" title_edit = "연동 앱 설정" [ui.dev.clients.general.identity] description = "설명" description_placeholder = "앱에 대한 간단한 설명을 입력하세요." logo = "앱 로고 URL" logo_placeholder = "https://example.com/logo.png" logo_preview = "로고 미리보기" name = "앱 이름" name_placeholder = "예: 멋진 애플리케이션" title = "애플리케이션 정보" [ui.dev.clients.general.public_key] allowed_algorithms_info = "Headless Login 허용 알고리즘 정보" auth_method = "ui.dev.clients.general.public_key.auth_method" auth_method_client_secret_basic = "ui.dev.clients.general.public_key.auth_method_client_secret_basic" auth_method_none = "ui.dev.clients.general.public_key.auth_method_none" auth_method_private_key_jwt = "ui.dev.clients.general.public_key.auth_method_private_key_jwt" guide_toggle = "ui.dev.clients.general.public_key.guide_toggle" headless_disabled = "ui.dev.clients.general.public_key.headless_disabled" headless_enabled = "ui.dev.clients.general.public_key.headless_enabled" headless_toggle = "Headless Login" jwks_inline = "ui.dev.clients.general.public_key.jwks_inline" jwks_inline_placeholder = "ui.dev.clients.general.public_key.jwks_inline_placeholder" jwks_uri = "JWKS URI" jwks_uri_placeholder = "https://rp.example.com/.well-known/jwks.json" request_object_alg = "ui.dev.clients.general.public_key.request_object_alg" request_object_alg_placeholder = "ui.dev.clients.general.public_key.request_object_alg_placeholder" revoke_cache = "Revoke Cache" source = "ui.dev.clients.general.public_key.source" source_uri = "ui.dev.clients.general.public_key.source_uri" title = "공개키 등록" validation_title = "저장 전 확인 필요" [ui.dev.clients.general.public_key.cache] cached_at = "Cached At" error = "Last Error" expires_at = "Expires At" failures = "Consecutive Failures" kids = "Cached KIDs" last_checked_at = "Last Checked" last_success = "Last Successful Verification" parsed_key_n = "N" parsed_keys = "Parsed Keys" status = "상태" title = "JWKS Cache" uri = "JWKS URI" [ui.dev.clients.general.redirect] label = "리디렉션 URI" placeholder = "https://app.example.com/callback, http://localhost:3000/auth/callback (콤마로 구분)" [ui.dev.clients.general.scopes] add = "Scope 추가" description_placeholder = "권한에 대한 설명" name_placeholder = "e.g. profile" title = "스코프" [ui.dev.clients.general.scopes.table] contact_title = "ui.dev.clients.general.scopes.table.contact_title" delete = "삭제" description = "설명" invalid_format = "ui.dev.clients.general.scopes.table.invalid_format" login_id_help = "ui.dev.clients.general.scopes.table.login_id_help" mandatory = "필수" name = "스코프 이름" password_title = "ui.dev.clients.general.scopes.table.password_title" reset_password = "ui.dev.clients.general.scopes.table.reset_password" reset_password_confirm = "ui.dev.clients.general.scopes.table.reset_password_confirm" reset_password_label = "ui.dev.clients.general.scopes.table.reset_password_label" role_super_admin = "ui.dev.clients.general.scopes.table.role_super_admin" role_tenant_admin = "ui.dev.clients.general.scopes.table.role_tenant_admin" role_user = "ui.dev.clients.general.scopes.table.role_user" status_active = "ui.dev.clients.general.scopes.table.status_active" status_inactive = "ui.dev.clients.general.scopes.table.status_inactive" status_title = "ui.dev.clients.general.scopes.table.status_title" [ui.dev.clients.general.security] headless_login_enable = "Headless Login (자체 로그인 UI 사용)" headless_login_enable_help = "Baron SSO 로그인 창을 거치지 않고 애플리케이션 내의 자체 로그인 화면을 직접 구현하고 싶은 경우 활성화합니다." pkce = "PKCE" private = "Server side App" title = "보안 설정" trusted_rp_enable = "ui.dev.clients.general.security.trusted_rp_enable" trusted_rp_enable_help = "ui.dev.clients.general.security.trusted_rp_enable_help" [ui.dev.clients.help] docs_body = "ui.dev.clients.help.docs_body" docs_title = "Docs & Examples" subtitle = "ui.dev.clients.help.subtitle" title = "Need help with OIDC configuration?" view_guides = "View guides" [ui.dev.clients.list] title = "연동 앱 목록" [ui.dev.clients.owner] avatar_alt = "ops user" email = "admin@brsw.kr" name = "AI Admin Bot" role = "Role: Tenant Admin" scope = "Scope: TENANT-12" subtitle = "Tenant admin on-call" title = "Owner" [ui.dev.clients.registry] description = "ui.dev.clients.registry.description" subtitle = "연동 앱" title = "RP registry" [ui.dev.clients.scopes] email = "ui.dev.clients.scopes.email" openid = "ui.dev.clients.scopes.openid" profile = "ui.dev.clients.scopes.profile" [ui.dev.clients.table] actions = "액션" application = "애플리케이션" client_id = "클라이언트 ID" created_at = "생성일" status = "상태" type = "유형" [ui.dev.clients.type] pkce = "PKCE" pkce_headless = "Headless PKCE" private = "Server side App" [ui.dev.dashboard] ready_badge = "devfront ready" title = "대시보드" [ui.dev.dashboard.badge] consent_guard = "Consent guard ready" oidc = "OIDC 운영" policy_toggle = "Policy toggle enabled" registry = "RP registry" rp_synced = "RP registry synced" [ui.dev.dashboard.distribution] headless_hint = "이 중 Headless Login 사용 {{count}}" pkce = "PKCE" private = "Server side App" title = "애플리케이션 구성 요약" [ui.dev.dashboard.chart] x_axis = "X축: 기간" y_axis = "Y축: 로그인 요청 수" aria = "RP 요청 현황" filter_all = "전체" period_day = "일" period_month = "월" period_week = "주" series = "로그인 {{login}} / 사용자 {{subjects}}" title = "애플리케이션별 로그인 요청 현황" [ui.dev.dashboard.next] subtitle = "Ship the RP controls" title = "Next actions" [ui.dev.dashboard.ops] subtitle = "현재 관측" title = "Ops board" [ui.dev.dashboard.ops.card] consent_revoked = "Consent 회수 건수" hydra_status = "Hydra 상태" rp_requests = "RP 요청 추이" [ui.dev.dashboard.ops.tag] consent = "Consent grants" rp_status = "RP status" [ui.dev.dashboard.quick_links] create_button = "새 RP 만들기" new_client = "새 RP 생성" title = "빠른 이동" [ui.dev.dashboard.recent] title = "내 애플리케이션" [ui.dev.dashboard.recent_changes] aria = "최근 변경된 앱 현황" deleted_group = "삭제된 앱" period = "최근 변경 집계 단위" series = "변경 {{changes}} / 작업자 {{actors}}" title = "최근 변경된 앱" y_axis = "Y축: 변경 수" [ui.dev.dashboard.recent_changes.summary] changed_clients = "변경된 앱 수" deleted_clients = "삭제된 앱 수" latest_change = "마지막 변경일" total_changes = "최근 변경 건수" [ui.dev.dashboard.stack] notes = "Setup notes" subtitle = "Devfront baseline" title = "Stack readiness" [ui.dev.dashboard.summary] active_clients = "활성 RP 수" active_sessions = "활성 세션 수" auth_failures_24h = "24시간 인증 실패 수" total_clients = "총 RP 수" [ui.dev.header] plane = "Dev Plane" subtitle = "Manage your applications" [ui.dev.nav] clients = "연동 앱" logout = "로그아웃" [ui.dev.profile] error = "프로필 정보를 불러오지 못했습니다." loading = "프로필 정보를 불러오는 중..." menu_aria = "계정 메뉴 열기" menu_title = "계정" subtitle = "사용자 상세 정보 및 할당된 역할(Role)을 확인합니다." title = "내 정보" unknown_email = "unknown@example.com" unknown_name = "Unknown User" [ui.dev.profile.basic] email = "이메일" id = "사용자 ID" name = "이름" phone = "전화번호" title = "사용자 정보" [ui.dev.profile.org] company_code = "회사 코드" tenant = "테넌트" tenant_slug = "테넌트 Slug" title = "조직 정보" [ui.dev.profile.role] current = "현재 역할" description = "현재 계정에 부여된 권한 등급입니다." title = "시스템 역할" [ui.dev.profile.tab] basic = "기본 정보" role = "권한 및 역할" [ui.dev.session] active = "세션 활성" auto_extend = "세션 만료 관리" disabled = "자동 연장 비활성화" expired = "세션 만료" expiring = "만료 임박: {{minutes}}분 {{seconds}}초 남음" refresh = "ui.dev.session.refresh" refreshing = "ui.dev.session.refreshing" remaining = "만료 예정: {{minutes}}분 {{seconds}}초 남음" unknown = "알 수 없음" [ui.dev.tenant] single_notice = "단일 테넌트에 소속되어 전환할 필요가 없습니다." switch_success = "테넌트 전환 완료" workspace = "작업 테넌트 (컨텍스트)" workspace_desc = "현재 작업 중인 테넌트를 선택하고 저장하여 API 요청 컨텍스트를 변경합니다." [ui.userfront] app_title = "Baron SW 포탈" [ui.userfront.app_label] admin_console = "Admin Console" baron = "Baron 로그인" dev_console = "Dev Console" [ui.userfront.audit] [ui.userfront.audit.table] action = "관리" app = "애플리케이션" auth_method = "인증수단" browser = "브라우저" date = "접속일자" device = "접속환경" ip = "IP" pending = "(준비중)" result = "인증결과" session_id = "Session ID" status = "현황" [ui.userfront.auth_method] ory = "Ory 세션" session = "세션" [ui.userfront.consent] accept = "동의하고 계속하기" requested_scopes = "요청된 권한" title = "접근 권한 요청" [ui.userfront.consent.cancel] confirm_button = "예, 취소합니다" title = "동의 취소" [ui.userfront.dashboard] last_auth_label = "최근 인증" status_history = "상태 이력" [ui.userfront.dashboard.activity] linked = "연동됨" [ui.userfront.dashboard.sessions] active_badge = "활성화" current_badge = "접속중" current_disabled = "현재 세션" unknown_device = "알 수 없는 기기" unknown_session = "세션 정보" [ui.userfront.dashboard.sessions.revoke] action = "세션 종료" title = "세션 종료" [ui.userfront.dashboard.approved_session] default = "승인한 세션 ID" userfront = "승인한 Userfront 세션 ID" [ui.userfront.dashboard.revoke] confirm_button = "해지하기" title = "연동 해지" [ui.userfront.dashboard.scopes] title = "동의 범위" [ui.userfront.dashboard.status] revoked = "해지됨" [ui.userfront.device] android = "Mobile(Android)" ios = "Mobile(iOS)" linux = "Desktop(Linux)" macos = "Desktop(macOS)" windows = "Desktop(Windows)" [ui.userfront.error] go_home = "홈으로 이동" go_login = "로그인으로 이동" switch_account = "다른 계정으로 로그인" [ui.userfront.forgot] heading = "비밀번호를 잊으셨나요?" input_label = "이메일 또는 휴대폰 번호" submit = "재설정 링크 전송" title = "비밀번호 재설정" [ui.userfront.login] forgot_password = "비밀번호를 잊으셨나요?" signup = "회원가입" [ui.userfront.login.action] submit = "로그인" [ui.userfront.login.field] login_id = "이메일 또는 휴대폰 번호" password = "비밀번호" [ui.userfront.login.link] action_label = "ui.userfront.login.link.action_label" code_only = "코드만 받기({{time}})" page_title = "ui.userfront.login.link.page_title" resend_with_time = "재발송 ({{time}})" send = "로그인 링크 전송" title = "ui.userfront.login.link.title" [ui.userfront.login.qr] expired = "QR 코드 만료됨" refresh = "QR 코드 새로고침" remaining = "남은 시간: {{time}}" [ui.userfront.login.short_code] digits = "숫자 6자리" expire_time = "유효시간 {{time}}" prefix = "영문 2자리" submit = "코드로 로그인" [ui.userfront.login.tabs] link = "로그인 링크" password = "비밀번호" qr = "QR 코드" [ui.userfront.login.unregistered] action = "회원가입 하기" title = "미등록 회원" [ui.userfront.login.verification] action_label = "확인" action_label_remote = "로그인 창으로 이동하기" page_title = "Baron SW 포탈" title = "승인 완료" action_label_close = "창 닫기" title_pending = "로그인 승인 확인 중" title_remote = "로그인 승인 완료" [ui.shell.nav] logout = "로그아웃" profile = "내 정보" [ui.shell.profile] menu_aria = "계정 메뉴 열기" menu_title = "계정" unknown_email = "unknown@example.com" unknown_name = "Unknown User" [ui.shell.session] active = "세션 활성" auto_extend = "세션 만료 관리" disabled = "세션 만료 비활성화" expired = "세션 만료" expiring = "만료 임박: {{minutes}}분 {{seconds}}초 남음" remaining = "만료 예정: {{minutes}}분 {{seconds}}초 남음" unknown = "알 수 없음" [ui.userfront.login_success] later = "나중에 하기 (대시보드로 이동)" qr = "QR 인증 (카메라 켜기)" title = "로그인 완료" [ui.userfront.nav] dashboard = "대시보드" logout = "로그아웃" profile = "내 정보" qr_scan = "QR 스캔" [ui.userfront.profile] department_empty = "소속 정보 없음" manage = "프로필 관리" user_fallback = "사용자" [ui.userfront.profile.field] affiliation = "구분" company_code = "회사코드" department = "소속" email = "이메일" name = "이름" tenant = "소속 테넌트" tenant_slug = "테넌트 Slug" [ui.userfront.profile.password] change = "비밀번호 변경" confirm = "새 비밀번호 확인" current = "현재 비밀번호" forgot = "비밀번호를 잊으셨나요?" new = "새 비밀번호" title = "비밀번호 변경" [ui.userfront.profile.phone] code_hint = "인증번호 6자리" request_code = "인증요청" title = "전화번호" [ui.userfront.profile.section] basic = "기본 정보" organization = "조직 정보" security = "보안" [ui.userfront.qr] request_permission = "ui.userfront.qr.request_permission" rescan = "다시 스캔" result_failure = "ui.userfront.qr.result_failure" result_success = "승인 완료" title = "Scan QR Code" [ui.userfront.reset] confirm_password = "새 비밀번호 확인" new_password = "새 비밀번호" submit = "비밀번호 변경" subtitle = "새로운 비밀번호 설정" title = "새 비밀번호 설정" [ui.userfront.sections] apps = "나의 App 현황" audit = "접속이력" [ui.userfront.session] active = "세션 활성" unknown = "알 수 없음" [ui.userfront.signup] complete = "가입 완료" next_step = "다음 단계" title = "회원가입" [ui.userfront.signup.agreement] all = "모두 동의합니다" privacy_title = "개인정보 수집 및 이용 동의 (필수)" required = "필수" tos_title = "바론 소프트웨어 이용약관 (필수)" [ui.userfront.signup.auth] code_label = "인증코드 6자리" request_code = "인증요청" [ui.userfront.signup.auth.email] label = "이메일 주소" title = "이메일 인증" [ui.userfront.signup.password] confirm_label = "비밀번호 확인" label = "비밀번호" [ui.userfront.signup.phone] label = "휴대폰 번호 (-없이)" title = "휴대폰 인증" [ui.userfront.signup.profile] affiliation_type = "소속 유형" company = "가족사 선택" department = "부서명" department_optional = "소속 정보 (선택)" name = "이름" [ui.userfront.signup.steps] agreement = "약관동의" password = "비밀번호" profile = "정보입력" verify = "본인인증" [ui.userfront.signup.success] action = "로그인하기" [ui.userfront.audit.filter] title = "내 활동 관리" toggle_label = "활성 세션만 보기" [msg.userfront.audit.filter] description = "활성화된 세션만 보려면 토글을 켜주세요." [msg.admin.integrity.forbidden] description = "이 화면은 super_admin 권한으로만 접근할 수 있습니다." [msg.admin.integrity.orphan_login_ids] delete_confirm = "선택한 {{count}}개의 유령 로그인 ID를 삭제하시겠습니까?" delete_success = "{{count}}개의 유령 로그인 ID를 삭제했습니다." description = "삭제되었거나 존재하지 않는 사용자/테넌트를 참조하는 로그인 ID를 확인한 뒤 선택 삭제합니다." empty = "삭제할 유령 로그인 ID가 없습니다." load_error = "유령 로그인 ID 대상을 불러오지 못했습니다." [msg.admin.integrity.read_model] description = "Ory SoT를 덮어쓰지 않고 backend DB read model의 이상 징후만 확인합니다." [msg.admin.integrity.recheck] error = "검사에 실패했습니다." running = "정합성 검사를 실행 중입니다." success = "검사가 완료되었습니다." [msg.admin.integrity.report] load_error = "정합성 리포트를 불러오지 못했습니다." [msg.admin.integrity.check.duplicate_tenant_slugs] description = "삭제되지 않은 tenant의 LOWER(TRIM(slug)) 기준 중복을 검사합니다." [msg.admin.integrity.check.orphan_tenant_parents] description = "tenants.parent_id가 존재하지 않거나 soft-deleted tenant를 참조하는지 검사합니다." [msg.admin.integrity.check.orphan_user_login_id_tenants] description = "user_login_ids.tenant_id가 존재하지 않거나 soft-deleted tenant를 참조하는지 검사합니다." [msg.admin.integrity.check.orphan_user_login_id_users] description = "user_login_ids.user_id가 존재하지 않거나 soft-deleted user를 참조하는지 검사합니다." [msg.admin.integrity.check.orphan_user_tenant_memberships] description = "users.tenant_id가 존재하지 않거나 soft-deleted tenant를 참조하는지 검사합니다." [msg.admin.integrity.section.tenant_integrity] description = "테넌트 slug 중복과 부모 관계 이상을 확인합니다." [msg.admin.integrity.section.user_integrity] description = "사용자와 로그인 ID 참조의 고아 레코드를 확인합니다." [msg.admin.integrity] subtitle = "정합성 상태를 확인하고 데이터 모델 전반의 검증 결과를 살펴봅니다." [msg.admin.user_projection] action_error = "사용자 동기화 작업에 실패했습니다." action_success = "{{count}}명 기준으로 사용자 동기화를 갱신했습니다." forbidden_description = "이 화면은 super_admin 권한으로만 접근할 수 있습니다." load_error = "사용자 동기화 상태를 불러오지 못했습니다." reset_confirm = "사용자 동기화를 Kratos 기준으로 다시 구축하시겠습니까?" subtitle = "Kratos 사용자 read model을 확인하고 동기화 상태를 갱신합니다." [msg.admin.user_projection.forbidden] description = "이 화면은 super_admin 권한으로만 접근할 수 있습니다." [msg.admin.integrity] subtitle = "정합성 상태를 확인하고 데이터 모델 전반의 검증 결과를 살펴봅니다." [ui.admin.integrity] tab_checks = "정합성 검사" tab_user_projection = "사용자 동기화" fetch_error = "정합성 최종 검증 결과를 불러오지 못했습니다." kicker = "시스템" loading = "불러오는 중" subtitle = "정합성 상태를 확인하고 데이터 모델 전반의 검증 결과를 살펴봅니다." title = "데이터 정합성 검증" [ui.admin.integrity.forbidden] title = "접근 권한이 없습니다" [ui.admin.integrity.orphan_login_ids] delete = "선택 삭제" title = "유령 로그인 ID 정리" [ui.admin.integrity.read_model] title = "읽기 모델 정합성" [ui.admin.integrity.reason] deleted_tenant = "삭제된 테넌트" deleted_user = "삭제된 사용자" missing_tenant = "테넌트 없음" missing_user = "사용자 없음" [ui.admin.integrity.recheck] run = "다시 검사" running = "검사 중" [ui.admin.integrity.status] fail = "실패" pass = "정상" warning = "주의" [ui.admin.integrity.summary] checked_at = "검사 시각" failures = "실패 건수" failures_text = "실패 {{count}}건" passed = "정상" title = "정합성 최종 검증" total_checks = "검사 항목" [ui.admin.integrity.table] field = "필드" login_id = "로그인 ID" reason = "사유" select = "선택" select_item = "{{loginId}} 선택" tenant = "테넌트" user = "사용자" [ui.admin.integrity.section] tenant_integrity = "테넌트 정합성" user_integrity = "사용자 정합성" [ui.admin.integrity.check.duplicate_tenant_slugs] title = "중복 테넌트 slug" [ui.admin.integrity.check.orphan_tenant_parents] title = "고아 테넌트 부모" [ui.admin.integrity.check.orphan_user_login_id_tenants] title = "고아 로그인 ID 테넌트" [ui.admin.integrity.check.orphan_user_login_id_users] title = "고아 로그인 ID 사용자" [ui.admin.integrity.check.orphan_user_tenant_memberships] title = "고아 사용자 테넌트 소속" [msg.admin.api_keys.list] edit_scopes_desc = "API 키에 부여할 권한 범위를 수정합니다." rotate_confirm = "이 API 키의 Secret을 재발급할까요?" rotate_secret_notice = "새 Secret은 지금 한 번만 표시됩니다." [msg.admin.tenants] export_error = "테넌트 내보내기에 실패했습니다." [ui.admin.api_keys.list] edit_scopes = "권한 수정" rotate_secret = "Secret 재발급" rotate_secret_done = "Secret 재발급 완료" save_scopes = "권한 저장" [ui.admin.user_projection] loading = "불러오는 중" title = "사용자 동기화 관리" [ui.admin.user_projection.actions] reconcile = "재동기화" reset = "초기화 후 재구축" [ui.admin.user_projection.card] description = "Backend DB 통계가 참조하는 사용자 read model 상태입니다." title = "Kratos 사용자 동기화" [ui.admin.user_projection.forbidden] title = "접근 권한이 없습니다" [ui.admin.user_projection.status] failed = "실패" not_ready = "준비되지 않음" ready = "준비됨" [ui.admin.user_projection.summary] last_synced = "마지막 동기화" projected_users = "동기화 사용자" status = "상태" updated_at = "상태 갱신" [ui.admin.auth_guard] subtitle = "관리자 권한과 ReBAC 관계를 실제 정책 엔진 기준으로 확인합니다." title = "인증 가드" [ui.admin.auth_guard.checker] check = "권한 확인 실행" checking = "검증 중..." denied = "접근 거부" denied_description = "해당 사용자는 요청한 리소스에 대해 권한이 없습니다." description = "특정 주체(Subject)가 특정 리소스(Object)에 대해 권한이 있는지 Ory Keto를 통해 실시간으로 확인합니다." object_id = "대상 ID" object_id_placeholder = "Tenant UUID 등" allowed = "접근 허용" allowed_description = "해당 사용자는 요청한 리소스에 대해 권한이 있습니다. (상속 포함)" namespace = "네임스페이스" relation = "관계" relation_placeholder = "view, manage, admins..." subject = "주체 (User:ID)" subject_placeholder = "User:uuid 또는 Namespace:ID#Relation" title = "ReBAC 권한 검증 도구" [ui.admin.auth_guard.checker.namespace] label = "네임스페이스" relying_party = "애플리케이션(RP)" system = "시스템" tenant = "테넌트" tenant_group = "테넌트 그룹" [ui.admin.overview.summary] total_users = "전체 사용자 수" [ui.admin.overview.chart] description = "전체 또는 선택한 조직 기준으로 그래프를 확인합니다." title = "회사별 앱별 로그인 요청 현황" [ui.admin.tenants.sub] export = "내보내기" [ui.admin.users.bulk] modified_fields = "수정 항목:" no_changes = "변경 사항 없음" permission_placeholder = "권한 선택" status_placeholder = "상태 선택" [ui.dev.profile.org] tenant_slug = "테넌트 slug" [] "msg.admin.tenants.bulk.update_error" = "temp" "msg.admin.tenants.bulk.update_success" = "temp" "msg.admin.tenants.status_error" = "temp" "ui.admin.tenants.bulk.selected_count" = "temp" "ui.admin.tenants.bulk.status_placeholder" = "temp" "ui.admin.tenants.data_mgmt" = "temp" "ui.admin.tenants.toggle_status" = "temp" "ui.admin.users.data_mgmt" = "temp"