forked from baron/baron-sso
2124 lines
80 KiB
TOML
2124 lines
80 KiB
TOML
|
|
[domain]
|
|
|
|
[domain.affiliation]
|
|
affiliate = "가족사 임직원"
|
|
general = "일반 사용자"
|
|
|
|
[domain.company]
|
|
baron = "바론"
|
|
halla = "한라"
|
|
hanmac = "한맥"
|
|
jangheon = "장헌"
|
|
ptc = "PTC"
|
|
saman = "삼안"
|
|
|
|
[domain.tenant_type]
|
|
company = "COMPANY (일반 기업)"
|
|
company_group = "COMPANY_GROUP (그룹사/지주사)"
|
|
personal = "PERSONAL (개인 워크스페이스)"
|
|
user_group = "USER_GROUP (내부 부서/팀)"
|
|
|
|
[err]
|
|
|
|
[err.common]
|
|
unknown = "알 수 없는 오류가 발생했습니다."
|
|
|
|
[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.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.api_keys]
|
|
|
|
[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]
|
|
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}}건"
|
|
|
|
[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 = "로딩 중..."
|
|
subtitle = "이 테넌트에 정의된 사용자 그룹 목록입니다."
|
|
|
|
[msg.admin.groups.members]
|
|
add_success = "구성원이 추가되었습니다."
|
|
count = "{{count}} 명"
|
|
empty = "멤버가 없습니다."
|
|
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_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_tenants = "전체 테넌트 수"
|
|
|
|
[msg.admin.tenants]
|
|
approve_confirm = "이 테넌트를 승인하시겠습니까?"
|
|
approve_success = "테넌트가 승인되었습니다."
|
|
delete_confirm = "테넌트 \"{{name}}\"를 삭제할까요?"
|
|
delete_success = "테넌트가 삭제되었습니다."
|
|
empty = "아직 등록된 테넌트가 없습니다."
|
|
fetch_error = "테넌트 목록 조회에 실패했습니다."
|
|
missing_id = "테넌트 ID가 없습니다."
|
|
not_found = "테넌트를 찾을 수 없습니다."
|
|
remove_sub_confirm = "테넌트 \"{{name}}\"을(를) 하위 조직에서 제외할까요?"
|
|
subtitle = "현재 등록된 테넌트를 확인하고 상태를 관리합니다."
|
|
|
|
[msg.admin.tenants.admins]
|
|
add_success = "관리자가 추가되었습니다."
|
|
empty = "등록된 관리자가 없습니다."
|
|
remove_confirm = "관리자를 삭제하시겠습니까?"
|
|
remove_success = "권한이 회수되었습니다."
|
|
subtitle = "이 테넌트의 자원을 관리할 수 있는 사용자 목록입니다."
|
|
|
|
[msg.admin.tenants.owners]
|
|
add_success = "소유자가 추가되었습니다."
|
|
empty = "등록된 소유자가 없습니다."
|
|
remove_confirm = "소유자를 삭제하시겠습니까?"
|
|
remove_success = "소유자 권한이 회수되었습니다."
|
|
subtitle = "이 테넌트의 최상위 권한을 가진 소유자(조직장) 목록입니다."
|
|
|
|
[msg.admin.tenants.create]
|
|
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개 조직의 멤버만 표시됩니다."
|
|
|
|
[msg.admin.tenants.registry]
|
|
count = "총 {{count}}개 테넌트"
|
|
|
|
[msg.admin.tenants.schema]
|
|
empty = "등록된 커스텀 필드가 없습니다. 필드 추가를 눌러 시작하세요."
|
|
missing_id = "테넌트 ID가 없습니다."
|
|
subtitle = "이 테넌트의 사용자에게 적용할 커스텀 속성을 정의합니다."
|
|
update_error = "스키마 업데이트에 실패했습니다."
|
|
update_success = "스키마가 성공적으로 업데이트되었습니다."
|
|
|
|
[msg.admin.tenants.sub]
|
|
empty = "하위 테넌트가 없습니다."
|
|
subtitle = "현재 테넌트 하위에 생성된 조직입니다."
|
|
|
|
[msg.admin.users]
|
|
|
|
[msg.admin.users.bulk]
|
|
delete_confirm = "선택한 {{count}}명의 사용자를 정말로 삭제하시겠습니까?"
|
|
delete_success = "{{count}}명의 사용자가 삭제되었습니다."
|
|
description = "CSV 파일을 통해 사용자를 일괄 등록하거나 관리합니다."
|
|
move_description = "선택한 사용자를 다른 테넌트로 일괄 이동합니다."
|
|
move_error = "사용자 이동 중 오류가 발생했습니다."
|
|
move_success = "{{count}}명의 사용자가 성공적으로 이동되었습니다."
|
|
parsed_count = "{{count}}행의 데이터가 파싱되었습니다."
|
|
update_success = "사용자 정보가 일괄 업데이트되었습니다."
|
|
|
|
[msg.admin.users.create]
|
|
error = "사용자 생성에 실패했습니다."
|
|
password_required = "비밀번호를 입력하거나 자동 생성을 사용해 주세요."
|
|
success = "사용자가 성공적으로 생성되었습니다."
|
|
|
|
[msg.admin.users.create.account]
|
|
subtitle = "새로운 사용자를 시스템에 등록합니다."
|
|
|
|
[msg.admin.users.create.form]
|
|
email_required = "이메일은 필수입니다."
|
|
field_invalid = "{{label}} 형식이 올바르지 않습니다."
|
|
field_required = "{{label}}은(는) 필수입니다."
|
|
name_required = "이름은 필수입니다."
|
|
password_auto_help = "비워두면 시스템이 초기 비밀번호를 자동 생성합니다."
|
|
password_manual_help = "초기 비밀번호를 직접 설정합니다."
|
|
role_help = "시스템 접근 권한을 결정합니다."
|
|
|
|
[msg.admin.users.create.password_generated]
|
|
default = "초기 비밀번호가 생성되었습니다."
|
|
with_email = "{{email}} 계정의 초기 비밀번호입니다."
|
|
|
|
[msg.admin.users.detail]
|
|
edit_subtitle = "{{email}} 계정의 정보를 수정합니다."
|
|
not_found = "사용자를 찾을 수 없습니다."
|
|
update_error = "사용자 수정에 실패했습니다."
|
|
update_success = "사용자 정보가 수정되었습니다."
|
|
|
|
[msg.admin.users.detail.form]
|
|
field_required = "필수입니다."
|
|
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.dev]
|
|
logout_confirm = "로그아웃 하시겠습니까?"
|
|
|
|
[msg.dev.auth]
|
|
access_denied_description = "DevFront는 관리자 전용 화면입니다. 권한이 필요하면 관리자에게 요청해 주세요."
|
|
access_denied_title = "접근 권한이 없습니다."
|
|
|
|
[msg.dev.audit]
|
|
empty = "조회된 감사 로그가 없습니다."
|
|
forbidden = "감사 로그를 조회할 권한이 없습니다. 관리자에게 권한을 요청해주세요."
|
|
load_error = "감사 로그 조회 실패: {{error}}"
|
|
loaded_count = "로드된 로그 {{count}}건"
|
|
loading = "감사 로그를 불러오는 중..."
|
|
registry_description = "최근 감사 로그를 검색 조건에 맞춰 필터링하고, 작업 이력을 빠르게 확인합니다."
|
|
subtitle = "현재 앱 범위에서 개발자 작업 이력을 조회하고 대상별 변경 내역을 확인합니다."
|
|
|
|
[msg.dev.request]
|
|
admin_desc = "사용자들의 개발자 권한 신청 내역을 관리합니다."
|
|
approved = "승인되었습니다."
|
|
cancelled = "승인이 취소되었습니다."
|
|
empty = "신청 내역이 없습니다."
|
|
list.approved_count = "총 {{count}}명의 사용자가 승인되었습니다."
|
|
need_cancel_notes = "승인 취소 사유를 입력해주세요."
|
|
need_notes = "반려 사유를 입력해주세요."
|
|
rejected = "반려되었습니다."
|
|
user_desc = "내 신청 내역을 확인하고 새로운 권한을 신청할 수 있습니다."
|
|
|
|
[msg.dev.request.modal]
|
|
desc = "신청 사유를 입력해 주세요. 관리자 확인 후 승인됩니다."
|
|
tenant_required = "개발자 권한 신청을 진행해 주세요."
|
|
tenant_required_detail = "신청 사유를 입력해 제출하면 관리자 검토 후 승인됩니다."
|
|
|
|
[msg.dev.clients]
|
|
deleted = "앱이 삭제되었습니다."
|
|
delete_confirm = "정말로 이 앱을 삭제하시겠습니까? 이 작업은 되돌릴 수 없습니다."
|
|
delete_error = "삭제 실패: {{error}}"
|
|
empty = "조회 가능한 RP가 없습니다."
|
|
empty_detail = "RP 관계가 부여되면 이 목록에 해당 RP가 표시됩니다."
|
|
empty_can_create = "아직 등록된 연동 앱이 없습니다."
|
|
empty_can_create_detail = "연동 앱 추가 버튼으로 새 RP를 생성하면 이 목록에 표시됩니다."
|
|
create_requires_request = "연동 앱을 생성할 권한이 없습니다.\n개발자 권한 신청을 요청한 뒤 승인 받아주세요."
|
|
create_requires_tenant = "개발자 권한 신청을 진행해 주세요."
|
|
create_requires_tenant_detail = "신청 사유를 입력해 제출하면 관리자 검토 후 승인됩니다."
|
|
create_pending_detail = "개발자 권한 신청을 검토 중입니다. 승인되면 연동 앱을 추가할 수 있습니다."
|
|
create_forbidden_detail = "연동 앱을 생성할 권한이 없습니다. 관리자에게 개발자 권한 또는 적절한 RP 권한 부여를 요청해 주세요."
|
|
empty_filtered = "조건에 맞는 연동 앱이 없습니다."
|
|
empty_filtered_detail = "검색어나 필터 조건을 변경해 보세요."
|
|
empty_pending = "개발자 권한 신청을 검토 중입니다."
|
|
empty_pending_detail = "super admin이 승인하면 연동 앱을 추가할 수 있습니다."
|
|
empty_tenant_missing = "개발자 권한 신청을 진행해 주세요."
|
|
empty_tenant_missing_detail = "신청 사유를 입력해 제출하면 관리자 검토 후 승인됩니다."
|
|
load_error = "앱 정보를 불러오지 못했습니다: {{error}}"
|
|
loading = "앱 정보를 불러오는 중..."
|
|
showing = "총 {{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}}"
|
|
create_forbidden = "이 RP를 생성할 권한이 없습니다.\n관리자에게 개발자 권한 부여를 요청해 주세요."
|
|
save_error = "저장 실패: {{error}}"
|
|
save_forbidden = "이 RP 설정을 수정할 권한이 없습니다.\n관리자에게 RP 일반 설정 또는 RP 관리자 관계 부여를 요청해 주세요."
|
|
secret_rotated = "Client Secret이 재발급되었습니다."
|
|
secret_not_applicable = "PKCE 앱에는 Client Secret이 없습니다."
|
|
secret_not_applicable_headless = "이 앱은 Headless Login용 signed key 인증을 사용하므로 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.general]
|
|
load_error = "클라이언트 정보를 불러오지 못했습니다: {{error}}"
|
|
loading = "클라이언트 정보를 불러오는 중..."
|
|
read_only_forbidden = "이 RP의 일반 설정을 수정할 권한이 없습니다."
|
|
read_only_hint = "이 RP의 일반 설정은 `RP 관리자` 또는 `RP 일반 설정` 관계가 있는 사용자만 수정할 수 있습니다."
|
|
save_error = "저장 실패: {{error}}"
|
|
save_forbidden = "이 RP 설정을 수정할 권한이 없습니다.\n관리자에게 RP 일반 설정 또는 RP 관리자 관계 부여를 요청해 주세요."
|
|
saved = "설정이 저장되었습니다."
|
|
status_changed = "상태가 {{status}}로 변경되었습니다."
|
|
|
|
[msg.dev.clients.relationships]
|
|
subtitle = "RP direct operator relation을 조회하고 사용자 단위로 추가·삭제합니다."
|
|
add_description = "사용자를 검색해 선택하고, 하나 이상의 운영 관계를 한 번에 부여할 수 있습니다."
|
|
added = "관계가 추가되었습니다."
|
|
add_error = "관계 추가 실패: {{error}}"
|
|
removed = "관계가 제거되었습니다."
|
|
remove_error = "관계 제거 실패: {{error}}"
|
|
remove_confirm = "이 관계를 제거하시겠습니까?"
|
|
user_required = "추가할 사용자를 선택하세요."
|
|
relation_required = "추가할 관계를 하나 이상 선택하세요."
|
|
list_description = "현재 RP에 직접 부여된 operator relation 목록입니다."
|
|
load_error = "관계 조회 실패: {{error}}"
|
|
loading = "관계를 불러오는 중입니다..."
|
|
empty = "직접 부여된 관계가 없습니다."
|
|
view_forbidden = "이 RP의 관계를 조회할 권한이 없습니다. 관리자에게 관계 조회 또는 RP 관리자 관계 부여를 요청해 주세요."
|
|
search_loading = "사용자를 찾는 중입니다..."
|
|
search_empty = "검색 결과가 없습니다."
|
|
search_forbidden_user = "일반 사용자는 관계 추가를 위한 사용자 검색을 사용할 수 없습니다."
|
|
selected_user = "선택된 사용자: {{user}}"
|
|
|
|
[msg.dev.clients.federation]
|
|
add_subtitle = "외부 OIDC 제공자를 연결합니다."
|
|
empty = "등록된 IdP 설정이 없습니다."
|
|
subtitle = "이 애플리케이션의 외부 IdP 설정을 관리합니다."
|
|
|
|
[msg.dev.clients.general.identity]
|
|
logo_help = "인증 화면에 표시될 PNG/SVG URL입니다."
|
|
logo_invalid = "앱 로고 URL 형식이 올바르지 않습니다. http 또는 https 주소를 입력하세요."
|
|
logo_preview_loading = "로고 미리보기를 불러오는 중입니다."
|
|
logo_preview_ready = "로고 미리보기를 확인했습니다."
|
|
logo_preview_failed = "로고 미리보기를 불러오지 못했습니다. URL 또는 이미지 접근 권한을 확인하세요."
|
|
subtitle = "앱 이름과 설명, 로고를 설정합니다."
|
|
|
|
[msg.dev.clients.general.redirect]
|
|
help = "인증 후 리다이렉트될 URI를 입력하세요. 생성 후 연동 설정 탭에서 수정 가능합니다."
|
|
|
|
[msg.dev.clients.general.auto_login]
|
|
subtitle = "RP가 자체 로그인 시작 URL에서 OIDC 요청을 만들 수 있으면 userfront에서 바로 로그인 진입을 제공합니다."
|
|
help = "이 URL은 RP가 state, nonce, PKCE 값을 직접 생성한 뒤 Baron OIDC로 리다이렉트해야 합니다."
|
|
invalid_url = "자동 로그인 URL 형식이 올바르지 않습니다. http 또는 https 주소를 입력하세요."
|
|
|
|
[msg.dev.clients.general.backchannel_logout]
|
|
uri_help = "Baron이 세션 종료 이벤트를 서버 간 POST로 전달할 RP endpoint입니다."
|
|
invalid = "Back-Channel Logout URI 형식이 올바르지 않습니다. 운영 환경은 https를 사용하고, 로컬 개발 환경은 localhost/127.0.0.1, host.docker.internal, Docker 서비스명, 사설 IP의 http만 허용됩니다."
|
|
session_required_help = "RP가 logout_token에 sid claim이 포함된 경우에만 처리하도록 요구할 때 사용합니다."
|
|
session_required_on = "켜면: logout_token 안에 sid가 있을 때만 로그아웃 처리"
|
|
session_required_off = "끄면: sid가 없어도 sub만으로 로그아웃 처리 가능"
|
|
|
|
[msg.dev.clients.general.scopes]
|
|
empty = "등록된 스코프가 없습니다."
|
|
subtitle = "이 앱이 요청할 수 있는 권한 범위를 정의합니다."
|
|
tenant = "소속 테넌트 정보 접근"
|
|
|
|
[msg.dev.clients.general.id_token_claims]
|
|
subtitle = "공통 claim과 RP 전용 확장 claim을 구분해서 관리합니다."
|
|
empty = "아직 추가된 ID Token claim이 없습니다."
|
|
hint = "RP 전용 확장 claim만 관리합니다. 배열은 JSON 또는 콤마 구분 문자열, 객체는 JSON을 입력하면 됩니다."
|
|
preview_hint = "저장될 metadata.id_token_claims 구조를 미리 확인할 수 있습니다."
|
|
key_required = "Claim key를 입력해야 합니다."
|
|
reserved_key = "`rp_claims`는 예약된 namespace 키입니다."
|
|
duplicate_key = "중복된 claim key가 있습니다: {{namespace}}.{{key}}"
|
|
|
|
[msg.dev.clients.general.security]
|
|
pkce_help = "PKCE 앱 (SPA/모바일): 브라우저나 앱처럼 비밀키를 보관하기 어려운 경우 사용하며, PKCE가 강제됩니다."
|
|
private_help = "Server side App (서버 사이드 앱): Node.js, Java 등 비밀키를 안전하게 보관 가능한 경우 사용합니다."
|
|
subtitle = "앱 유형을 선택하세요. 보안 수준에 따라 인증 방식이 달라집니다."
|
|
headless_login_help = "private_key_jwt와 공개키 등록을 사용해 Headless Login으로 운영합니다.\nHeadless Login은 이 프로필에서만 사용할 수 있습니다."
|
|
|
|
[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 = "Headless Login 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_uri_help = "RP backend가 제공하는 공개키 endpoint URL을 입력하세요. 예: https://rp.example.com/.well-known/jwks.json"
|
|
request_object_alg_help = "Headless Login을 사용할 때 JAR(Request Object) 서명 알고리즘을 명시합니다."
|
|
allowed_algorithms_help = "Headless Login JAR 검증은 아래 알고리즘만 허용합니다."
|
|
subtitle = "Headless Login 판정에 필요한 공개키와 관련 설정을 관리합니다."
|
|
cache_empty = "아직 캐시된 JWKS가 없습니다. Refresh를 눌러 백엔드가 공개키를 검증하고 캐시하도록 요청하세요."
|
|
cache_help = "백엔드가 저장한 마지막 JWKS 검증 상태를 보여줍니다."
|
|
cache_parsed_keys_help = "원본 JWKS 전체는 숨기고, 파싱된 키 메타데이터만 보여줍니다."
|
|
cache_parsed_keys_empty = "아직 파싱된 JWKS 키가 없습니다."
|
|
cache_refresh_failed = "JWKS 캐시 새로고침에 실패했습니다: {{error}}"
|
|
cache_refreshed = "JWKS 캐시를 새로 고쳤습니다."
|
|
cache_revoke_confirm = "JWKS 캐시를 삭제하면 다음 사용 전에 백엔드가 다시 가져와 검증해야 합니다. 계속할까요?"
|
|
cache_revoke_failed = "JWKS 캐시 삭제에 실패했습니다: {{error}}"
|
|
cache_revoked = "JWKS 캐시를 삭제했습니다."
|
|
|
|
[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_uri = "JWKS URI 형식이 올바르지 않습니다."
|
|
private_key_jwt_requires_public_key = "서명 키 기반 인증을 사용하려면 JWKS URI가 필요합니다."
|
|
|
|
[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.audit]
|
|
access_denied = "감사 로그는 개발자 권한이 있어야 볼 수 있습니다."
|
|
access_denied_detail = "개발자 권한 신청 페이지에서 신청을 등록한 뒤 승인을 받아주세요."
|
|
|
|
[msg.dev.dashboard.hero]
|
|
body = "Hydra Admin API와 동기화된 RP 목록, 상태 토글, Consent 회수까지 devfront에서 처리하도록 준비합니다."
|
|
title_emphasis = " 하나의 화면"
|
|
title_prefix = "RP 등록 현황과 Consent 상태를"
|
|
title_suffix = "에서 관리합니다."
|
|
|
|
[msg.dev.dashboard.distribution]
|
|
description = "애플리케이션 유형과 headless login 사용 현황을 빠르게 확인합니다."
|
|
|
|
[msg.dev.dashboard.chart]
|
|
empty = "표시할 RP 이용 집계가 없습니다."
|
|
filter_description = "전체 또는 선택한 애플리케이션만 기준으로 그래프를 확인합니다."
|
|
forbidden = "현재 계정에는 RP 이용 통계를 볼 권한이 없습니다."
|
|
server_error = "RP 이용 통계 조회 중 서버 오류가 발생했습니다."
|
|
service_unavailable = "RP 이용 통계 집계 서비스가 아직 준비되지 않았습니다."
|
|
unavailable = "RP 이용 통계 API 응답을 확인할 수 없습니다. 집계 데이터가 준비되면 이 영역에 그래프가 표시됩니다."
|
|
unavailable_with_reason = "RP 이용 통계 API 응답을 확인할 수 없습니다. {{reason}}"
|
|
|
|
[msg.dev.dashboard.quick_links]
|
|
audit = "RP 설정 변경과 운영 이력을 확인합니다."
|
|
clients = "등록된 RP를 조회하고 상태와 유형을 관리합니다."
|
|
description = "주요 운영 화면으로 바로 이동합니다."
|
|
developer_grants = "사용자에게 개발자 권한을 직접 부여하거나 회수합니다."
|
|
developer_request = "개발자 권한 신청 내역을 확인하거나 새 요청을 등록합니다."
|
|
new_client = "redirect URI, grant type, 인증 방식을 설정합니다."
|
|
|
|
[msg.dev.dashboard.recent]
|
|
empty = "현재 계정이 접근할 수 있는 RP를 확인합니다."
|
|
none = "표시할 연동 앱이 없습니다."
|
|
|
|
[msg.dev.dashboard.recent_changes]
|
|
description = "변경 또는 삭제된 애플리케이션을 대시보드에서 추이를 확인합니다."
|
|
empty = "최근 변경 로그가 아직 없습니다."
|
|
|
|
[msg.dev.grants]
|
|
approved = "승인됨"
|
|
count = "총 {{count}}건"
|
|
create_success = "개발자 권한을 직접 부여했습니다."
|
|
description = "사용자에게 개발자 권한을 직접 부여하고, 부여된 권한을 회수합니다."
|
|
admin_notes_hint = "회수는 목록의 회수 버튼으로 처리합니다."
|
|
admin_notes_description = "직접 부여의 근거를 간단히 남겨 두면 추후 회수와 검토에 도움이 됩니다."
|
|
admin_notes_placeholder = "예: 테스트 환경 확인 후 권한 부여"
|
|
empty = "부여된 권한이 없습니다."
|
|
forbidden = "개발자 권한 직접 부여는 super admin만 사용할 수 있습니다."
|
|
forbidden_desc = "이 화면은 super admin만 사용할 수 있습니다."
|
|
form.description = "사용자를 선택하면 현재 소속 테넌트, 이메일, 전화번호를 확인한 뒤 개발자 권한을 즉시 부여합니다."
|
|
selected_info_description = "선택된 사용자의 소속, 이메일, 전화번호를 확인합니다."
|
|
user_section_description = "검색어를 입력해 사용자를 선택합니다. 선택 전에는 다음 단계 정보가 비어 있습니다."
|
|
list.description = "현재 부여된 개발자 권한 목록입니다."
|
|
load_error = "개발자 권한 목록을 불러오지 못했습니다."
|
|
reason = "부여 사유"
|
|
revoke = "회수"
|
|
revoke_success = "개발자 권한을 회수했습니다."
|
|
search_empty = "검색 결과가 없습니다."
|
|
search_loading = "사용자를 찾는 중입니다..."
|
|
selected_user = "선택된 사용자: {{user}}"
|
|
tenant_required = "선택한 사용자의 테넌트 정보를 확인할 수 없습니다."
|
|
tenant_missing = "선택한 사용자의 테넌트 정보를 확인할 수 없습니다."
|
|
user_required = "부여할 사용자를 선택해주세요."
|
|
phone_missing = "등록된 전화번호가 없습니다."
|
|
|
|
[msg.dev.dashboard.notice]
|
|
consent_audit = "Consent 회수는 감사 로그와 연계"
|
|
dev_scope = "RP 정책은 dev scope에서만 적용"
|
|
hydra_health = "Hydra Admin 상태 체크 준비"
|
|
|
|
[msg.dev.sidebar]
|
|
notice = "개발자 전용 콘솔입니다."
|
|
notice_detail = "연동 앱 등록 및 관리를 수행할 수 있습니다."
|
|
|
|
[msg.info]
|
|
saved_success = "저장이 완료되었습니다."
|
|
|
|
[msg.userfront]
|
|
greeting = "안녕하세요, {{name}}님"
|
|
|
|
[msg.userfront.audit]
|
|
date = "접속일자: {{value}}"
|
|
device = "접속환경: {{value}}"
|
|
end = "더 이상 항목이 없습니다."
|
|
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_missing = "이동할 페이지 주소(Client URI)가 설정되지 않았습니다."
|
|
link_open_error = "해당 링크를 열 수 없습니다."
|
|
render_error = "대시보드 렌더링 오류: {{error}}"
|
|
session_id_copied = "세션 ID가 복사되었습니다."
|
|
|
|
[msg.userfront.dashboard.activities]
|
|
empty = "연동된 앱이 없습니다."
|
|
empty_detail = "앱을 연동하면 최근 활동과 상태가 표시됩니다."
|
|
error = "연동 정보를 불러오지 못했습니다."
|
|
|
|
[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.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.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.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]
|
|
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 = "승인 되었습니다. 이 기기는 로그인되어 있는 상태입니다. 원격 창도 로그인이 될 예정입니다"
|
|
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]
|
|
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]
|
|
title = "서비스 이용을 위해\n약관에 동의해주세요"
|
|
|
|
[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 = "회원가입 완료"
|
|
|
|
[ui]
|
|
|
|
[ui.admin]
|
|
brand = "Baron 로그인"
|
|
dev_role_switcher = "🛠 DEV Role Switcher"
|
|
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 키 생성"
|
|
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]
|
|
|
|
[ui.admin.groups.members.table]
|
|
email = "이메일"
|
|
name = "이름"
|
|
remove = "제거"
|
|
|
|
[ui.admin.groups.table]
|
|
actions = "ACTIONS"
|
|
members = "MEMBERS"
|
|
name = "NAME"
|
|
|
|
[ui.admin.header]
|
|
plane = "Admin Plane"
|
|
|
|
[ui.admin.nav]
|
|
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"
|
|
|
|
[ui.admin.overview.playbook]
|
|
title = "Admin playbook"
|
|
|
|
[ui.admin.overview.quick_links]
|
|
add_tenant = "테넌트 추가"
|
|
api_key_management = "API 키 관리"
|
|
user_management = "사용자 관리"
|
|
title = "빠른 이동"
|
|
view_audit_logs = "감사 로그 보기"
|
|
|
|
[ui.admin.overview.summary]
|
|
audit_events_24h = "24시간 이벤트"
|
|
oidc_clients = "OIDC 클라이언트"
|
|
policy_gate = "정책 게이트"
|
|
total_tenants = "전체 테넌트 수"
|
|
|
|
[ui.admin.profile]
|
|
manageable_tenants = "관리 가능한 테넌트"
|
|
|
|
[ui.admin.role]
|
|
super_admin = "시스템 관리자 (Super Admin)"
|
|
user = "일반 사용자"
|
|
|
|
[ui.admin.tenants]
|
|
add = "테넌트 추가"
|
|
title = "테넌트 목록"
|
|
|
|
[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.owners]
|
|
add_button = "소유자 추가"
|
|
already_owner = "이미 소유자"
|
|
dialog_description = "이름 또는 이메일로 사용자를 검색하세요."
|
|
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 = "테넌트 이름"
|
|
parent = "상위 테넌트"
|
|
slug = "Slug"
|
|
slug_placeholder = "tenant-slug"
|
|
status = "상태"
|
|
type = "유형"
|
|
|
|
[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 = "사용자 스키마"
|
|
title = "상세"
|
|
|
|
[ui.admin.tenants.list]
|
|
select_placeholder = "테넌트를 선택하세요"
|
|
|
|
[ui.admin.tenants.members]
|
|
descendants = "하위 조직 멤버"
|
|
direct = "소속 멤버"
|
|
direct_label = "직속"
|
|
list_title = "구성원 관리"
|
|
title = "테넌트 구성원 ({{count}})"
|
|
total = "전체"
|
|
total_label = "전체"
|
|
|
|
[ui.admin.tenants.members.table]
|
|
email = "EMAIL"
|
|
name = "NAME"
|
|
role = "ROLE"
|
|
status = "STATUS"
|
|
|
|
[ui.admin.tenants.profile]
|
|
allowed_domains = "허용된 도메인 (콤마로 구분)"
|
|
allowed_domains_help = "이 도메인을 가진 이메일로 가입한 사용자는 자동으로 이 테넌트에 배정됩니다."
|
|
approve_button = "테넌트 승인"
|
|
description = "설명"
|
|
name = "테넌트 이름"
|
|
slug = "슬러그 (Slug)"
|
|
status = "상태"
|
|
subtitle = "슬러그 및 상태 변경은 즉시 적용됩니다."
|
|
title = "테넌트 프로필"
|
|
type = "테넌트 유형"
|
|
|
|
[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 = "관리자 전용"
|
|
key = "Field Key (ID)"
|
|
key_placeholder = "e.g. employee_id"
|
|
label = "표시 레이블"
|
|
label_placeholder = "예: 사번"
|
|
required = "필수 여부"
|
|
type = "타입"
|
|
type_boolean = "Boolean"
|
|
type_date = "Date"
|
|
type_number = "Number"
|
|
type_text = "텍스트"
|
|
validation_placeholder = "정규표현식 (선택 사항)"
|
|
|
|
[ui.admin.tenants.sub]
|
|
add = "하위 테넌트 추가"
|
|
add_dialog_desc = "하위 테넌트로 추가할 테넌트를 선택하세요."
|
|
add_dialog_title = "하위 테넌트 추가"
|
|
add_existing = "기존 테넌트 추가"
|
|
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"
|
|
members = "멤버수"
|
|
name = "NAME"
|
|
slug = "SLUG"
|
|
status = "STATUS"
|
|
type = "유형"
|
|
updated = "UPDATED"
|
|
|
|
[ui.admin.users]
|
|
|
|
[ui.admin.users.bulk]
|
|
do_move = "이동 실행"
|
|
download_template = "템플릿 받기"
|
|
move_group = "테넌트 일괄 이동"
|
|
move_title = "사용자 일괄 이동"
|
|
no_department = "부서 없음"
|
|
select_group = "대상 테넌트 선택"
|
|
selected_count = "{{count}}명 선택됨"
|
|
start_upload = "업로드 시작"
|
|
title = "일괄 작업"
|
|
|
|
[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"
|
|
job_title = "직무"
|
|
job_title_placeholder = "프론트엔드 개발"
|
|
name = "이름"
|
|
name_placeholder = "홍길동"
|
|
password = "비밀번호"
|
|
password_placeholder = "********"
|
|
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 = "목록으로 돌아가기"
|
|
edit_title = "정보 수정"
|
|
title = "사용자 상세"
|
|
|
|
[ui.admin.users.detail.breadcrumb]
|
|
section = "Users"
|
|
|
|
[ui.admin.users.detail.custom_fields]
|
|
multi_title = "테넌트별 프로필 관리"
|
|
|
|
[ui.admin.users.detail.form]
|
|
department = "부서"
|
|
department_placeholder = "개발팀"
|
|
name = "이름"
|
|
name_placeholder = "홍길동"
|
|
phone = "전화번호"
|
|
phone_placeholder = "010-1234-5678"
|
|
role = "역할"
|
|
status = "상태"
|
|
tenant = "대표 소속 테넌트"
|
|
tenant_global = "시스템 전역"
|
|
|
|
[ui.admin.users.detail.security]
|
|
password = "비밀번호 변경"
|
|
password_placeholder = "변경할 경우에만 입력"
|
|
title = "보안 설정"
|
|
|
|
[ui.admin.users.detail.tenants_section]
|
|
additional = "추가 소속/관리 테넌트"
|
|
primary = "대표 소속 테넌트"
|
|
title = "소속 및 조직 정보"
|
|
|
|
[ui.admin.users.list]
|
|
add = "사용자 추가"
|
|
bulk_import = "일괄 임포트"
|
|
empty = "검색 결과가 없습니다."
|
|
fetch_error = "사용자 목록 조회에 실패했습니다."
|
|
search_placeholder = "이름 또는 이메일 검색..."
|
|
subtitle = "시스템 사용자를 조회하고 관리합니다."
|
|
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"
|
|
name_email = "NAME / EMAIL"
|
|
role = "ROLE"
|
|
status = "STATUS"
|
|
tenant_dept = "TENANT / DEPT"
|
|
|
|
[ui.admin.users.table]
|
|
email = "이메일"
|
|
name = "이름"
|
|
role = "역할"
|
|
|
|
|
|
[test]
|
|
key = "테스트"
|
|
|
|
[non.existent]
|
|
key = "존재하지 않는 키"
|
|
|
|
[ui.dev]
|
|
brand = "Baron 로그인"
|
|
console_title = "Developer Console"
|
|
env_badge = "Env: dev"
|
|
scope_badge = "Scoped to /dev"
|
|
|
|
[ui.dev.nav]
|
|
audit_logs = "감사 로그"
|
|
clients = "연동 앱"
|
|
developer_request = "개발자 권한 신청"
|
|
developer_grants = "개발자 권한 부여"
|
|
logout = "로그아웃"
|
|
overview = "개요"
|
|
|
|
[ui.dev.audit]
|
|
load_more = "더 보기"
|
|
title = "감사 로그"
|
|
|
|
[ui.dev.request]
|
|
admin_notes_placeholder = "메모 입력 (선택)..."
|
|
cancel_approval = "승인 취소"
|
|
cancel_notes_placeholder = "승인 취소 사유 입력..."
|
|
|
|
[ui.dev.request.list]
|
|
title = "신청 내역"
|
|
|
|
[ui.dev.grants]
|
|
actions = "관리"
|
|
admin_notes = "부여 사유"
|
|
all_tenants = "전체 테넌트"
|
|
approved = "승인됨"
|
|
date = "부여일"
|
|
form.title = "직접 부여"
|
|
grant = "직접 부여"
|
|
input_section = "입력"
|
|
list.title = "부여된 권한"
|
|
read_only = "읽기 전용"
|
|
reason = "부여 사유"
|
|
reason_placeholder = "예: 운영 지원을 위해 개발 콘솔 접근이 필요합니다."
|
|
required = "필수"
|
|
selected_info = "선택된 사용자 정보"
|
|
revoke = "회수"
|
|
revoke_notes_placeholder = "회수 메모 (선택)..."
|
|
status = "상태"
|
|
tenant = "소속"
|
|
user_section = "사용자 선택"
|
|
user = "사용자"
|
|
user_search_placeholder = "이름 또는 이메일 검색..."
|
|
|
|
[ui.dev.request.modal]
|
|
email = "이메일"
|
|
name = "성함"
|
|
org = "소속"
|
|
phone = "전화번호"
|
|
reason = "신청 사유"
|
|
reason_placeholder = "예: 자체 서비스 연동 및 테스트용 OIDC 클라이언트 생성이 필요합니다."
|
|
role = "역할"
|
|
title = "개발자 등록 신청"
|
|
|
|
[ui.dev.request.status]
|
|
approved = "승인됨"
|
|
cancelled = "승인 취소됨"
|
|
pending = "대기 중"
|
|
rejected = "반려됨"
|
|
|
|
[ui.dev.request.table]
|
|
actions = "관리"
|
|
date = "신청일"
|
|
org = "소속"
|
|
reason = "신청 사유"
|
|
status = "상태"
|
|
user = "사용자"
|
|
|
|
[ui.dev.audit.registry]
|
|
title = "Audit registry"
|
|
|
|
[ui.dev.audit.filter]
|
|
action = "액션으로 필터 (예: ROTATE_SECRET)"
|
|
client_id = "Client ID로 필터"
|
|
status_all = "모든 상태"
|
|
|
|
[ui.dev.audit.table]
|
|
action = "액션"
|
|
actor = "수행자"
|
|
status = "상태"
|
|
target = "대상"
|
|
time = "시간"
|
|
|
|
[ui.dev.profile]
|
|
menu_aria = "계정 메뉴 열기"
|
|
menu_title = "계정"
|
|
unknown_email = "unknown@example.com"
|
|
unknown_name = "Unknown User"
|
|
|
|
[ui.shell.profile]
|
|
menu_aria = "계정 메뉴 열기"
|
|
menu_title = "계정"
|
|
unknown_email = "unknown@example.com"
|
|
unknown_name = "Unknown User"
|
|
|
|
[ui.shell.nav]
|
|
logout = "Logout"
|
|
profile = "내 정보"
|
|
|
|
[ui.shell.sidebar]
|
|
collapse = "사이드바 접기"
|
|
expand = "사이드바 펼치기"
|
|
|
|
[ui.shell.role]
|
|
super_admin = "시스템 관리자 (Super Admin)"
|
|
user = "일반 사용자"
|
|
|
|
[ui.dev.clients]
|
|
new = "연동 앱 추가"
|
|
search_placeholder = "연동 앱 이름/ID로 검색..."
|
|
tenant_scoped = "Tenant-scoped"
|
|
untitled = "Untitled"
|
|
|
|
[ui.dev.clients.recent_changes]
|
|
title = "최근 변경된 앱"
|
|
guide_button = "최근 변경 항목 안내 열기"
|
|
guide_title = "최근 변경 항목 안내"
|
|
|
|
[ui.dev.clients.recent_changes.guide]
|
|
create = "앱 생성"
|
|
settings = "설정 변경"
|
|
status = "상태 변경"
|
|
relation = "관계 변경"
|
|
secret = "클라이언트 시크릿 재발급"
|
|
delete = "앱 삭제"
|
|
|
|
[msg.dev.clients.recent_changes]
|
|
description = "총 {{count}}개의 애플리케이션이 변경된 이력이 있습니다."
|
|
permission_note = "'감사 로그 조회' 관계가 있어야 최근 변경된 앱을 볼 수 있습니다."
|
|
empty = "최근 변경 로그가 아직 없습니다."
|
|
no_detail = "변경 항목을 확인할 수 없습니다."
|
|
|
|
[msg.dev.clients.recent_changes.guide]
|
|
audit_only = "동의 철회는 최근 변경된 앱 카드에 포함하지 않고, 감사 로그에서 확인합니다."
|
|
create_desc = "새 애플리케이션이 등록되면 이름, 유형, 기본 상태와 함께 표시됩니다."
|
|
settings_desc = "앱 이름, 스코프, 테넌트 접근 제한, 커스텀 클레임, 보안 설정, 로그아웃 URI, JWKS 변경이 포함됩니다."
|
|
status_desc = "Active / Inactive 전환이 여기에 포함됩니다."
|
|
relation_desc = "관계 추가와 삭제가 함께 표시됩니다."
|
|
secret_desc = "시크릿 재발급 이력이 보입니다."
|
|
delete_desc = "앱 삭제도 최근 변경 이력에 포함됩니다."
|
|
|
|
[ui.dev.clients.badge]
|
|
admin_session = "관리자 세션"
|
|
dev_session = "DevFront 세션"
|
|
tenant_selected = "테넌트: 선택됨"
|
|
|
|
[ui.dev.clients.filter]
|
|
status_all = "모든 상태"
|
|
type_all = "모든 유형"
|
|
type_label = "유형:"
|
|
|
|
[ui.dev.clients.consents]
|
|
export_csv = "CSV 내보내기"
|
|
revoke = "철회"
|
|
revoked_at = "철회일: "
|
|
scope_label = "권한:"
|
|
search_placeholder = "사용자 ID, 이름, 이메일로 검색"
|
|
status_label = "상태:"
|
|
status_revoked = "철회됨"
|
|
subject = "사용자"
|
|
title = "사용자 동의 내역"
|
|
|
|
[ui.dev.clients.consents.rp_claims]
|
|
edit = "사용자 Claim 설정"
|
|
|
|
[ui.dev.clients.consents.breadcrumb]
|
|
clients = "연동 앱"
|
|
current = "동의 및 사용자"
|
|
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 = "설정"
|
|
relationships = "관계"
|
|
user_claims = "사용자 Claim"
|
|
|
|
[ui.dev.clients.general]
|
|
create = "앱 생성"
|
|
display_new = "연동 앱 추가"
|
|
subtitle = "앱 정보, 권한 스코프, 보안 설정을 관리합니다."
|
|
title_create = "연동 앱 생성"
|
|
title_edit = "연동 앱 설정"
|
|
|
|
[ui.dev.clients.federation]
|
|
title = "Identity Federation"
|
|
add_title = "Add Identity Provider"
|
|
add_btn = "Add Provider"
|
|
|
|
[ui.dev.clients.general.identity]
|
|
description = "설명"
|
|
description_placeholder = "앱에 대한 간단한 설명을 입력하세요."
|
|
logo = "앱 로고 URL"
|
|
logo_placeholder = "https://example.com/logo.png"
|
|
logo_preview = "로고 미리보기"
|
|
logo_open = "새 탭에서 열기"
|
|
logo_preview_error_badge = "미리보기 실패"
|
|
logo_preview_empty = "미리보기"
|
|
name = "앱 이름"
|
|
name_placeholder = "예: 멋진 애플리케이션"
|
|
title = "애플리케이션 정보"
|
|
|
|
[ui.dev.clients.general.redirect]
|
|
label = "리디렉션 URI"
|
|
placeholder = "https://app.example.com/callback, http://localhost:3000/auth/callback (콤마로 구분)"
|
|
|
|
[ui.dev.clients.general.auto_login]
|
|
title = "자동 로그인"
|
|
supported = "자동 로그인 지원"
|
|
unsupported = "자동 로그인 미지원"
|
|
url = "자동 로그인 시작 URL"
|
|
url_placeholder = "https://app.example.com/login?auto=1"
|
|
|
|
[ui.dev.clients.general.backchannel_logout]
|
|
uri = "Back-Channel Logout URI"
|
|
uri_placeholder = "https://rp.example.com/oidc/backchannel-logout"
|
|
session_required = "SID Claim Required"
|
|
session_required_info = "SID Claim Required 설명 보기"
|
|
|
|
[ui.dev.clients.general.scopes]
|
|
add = "스코프 추가"
|
|
description_placeholder = "권한에 대한 설명"
|
|
name_placeholder = "e.g. profile"
|
|
title = "스코프"
|
|
|
|
[ui.dev.clients.general.scopes.table]
|
|
description = "설명"
|
|
mandatory = "필수"
|
|
name = "스코프 이름"
|
|
delete = "삭제"
|
|
tenant = "테넌트"
|
|
|
|
[ui.dev.clients.general.tenant_access]
|
|
title = "테넌트 접근 제한"
|
|
subtitle = "허용된 테넌트만 이 RP에 접근할 수 있도록 제한합니다."
|
|
enabled = "제한 있음"
|
|
disabled = "제한 없음"
|
|
search_placeholder = "테넌트 이름 또는 슬러그로 검색"
|
|
selected_title = "허용 테넌트"
|
|
selected_empty = "아직 선택된 테넌트가 없습니다."
|
|
empty = "검색 결과가 없습니다."
|
|
hint = "제한을 켜면 tenant 스코프가 자동으로 포함되며, 허용 테넌트를 하나 이상 선택해야 합니다."
|
|
autocomplete_hint = "테넌트 이름을 입력하면 자동 완성 후보가 나타납니다. 클릭하면 허용 목록에 추가됩니다."
|
|
validation_required = "테넌트 접근 제한을 사용할 경우 허용 테넌트를 하나 이상 선택해야 합니다."
|
|
|
|
[ui.dev.clients.general.id_token_claims]
|
|
title = "커스텀 클레임"
|
|
add = "Claim 추가"
|
|
preview_title = "저장 JSON 미리보기"
|
|
namespace_label = "Claim 네임스페이스"
|
|
namespace_top_level = "top-level"
|
|
namespace_rp_claims = "rp_claims"
|
|
value_type_label = "Claim 값 타입"
|
|
value_type_text = "텍스트"
|
|
value_type_number = "숫자"
|
|
value_type_boolean = "불리언"
|
|
value_type_array = "배열"
|
|
value_type_object = "객체"
|
|
key_placeholder = "예: locale"
|
|
value_placeholder = "Claim 값을 입력하세요"
|
|
|
|
[ui.dev.clients.general.security]
|
|
private = "Server side App"
|
|
pkce = "PKCE"
|
|
title = "보안 설정"
|
|
headless_login_enable = "Headless Login (자체 로그인 UI 사용)"
|
|
headless_login_enable_help = "Baron SSO 로그인 창 대신 RP 자체 로그인 UI를 사용하고, RP backend의 서명 키로 클라이언트를 검증하려는 경우 활성화합니다."
|
|
|
|
|
|
[ui.dev.clients.general.public_key]
|
|
auth_method = "Token Endpoint Auth Method"
|
|
auth_method_client_secret_basic = "client_secret_basic"
|
|
auth_method_none = "none"
|
|
auth_method_private_key_jwt = "서명 키 기반 인증"
|
|
guide_toggle = "JWKS URI 준비 가이드"
|
|
headless_disabled = "Headless Disabled"
|
|
headless_enabled = "Headless Enabled"
|
|
headless_toggle = "Headless Login"
|
|
jwks_uri = "JWKS URI"
|
|
jwks_uri_placeholder = "https://rp.example.com/.well-known/jwks.json"
|
|
request_object_alg = "Request Object Signing Algorithm"
|
|
request_object_alg_placeholder = "RS256"
|
|
allowed_algorithms = "허용 알고리즘"
|
|
title = "공개키 등록"
|
|
validation_title = "저장 전 확인 필요"
|
|
cache_error = "마지막 오류"
|
|
cache_cached_at = "캐시 시각"
|
|
cache_expires_at = "만료 시각"
|
|
cache_failures = "연속 실패 횟수"
|
|
cache_kids = "캐시된 KID"
|
|
cache_last_checked_at = "마지막 확인"
|
|
cache_last_success = "마지막 성공 검증"
|
|
cache_parsed_keys = "파싱된 키"
|
|
cache_parsed_key_n = "n 미리보기"
|
|
cache_status = "상태"
|
|
cache_uri = "JWKS URI"
|
|
revoke_cache = "캐시 삭제"
|
|
|
|
[ui.dev.clients.relationships]
|
|
title = "클라이언트 관계"
|
|
add_title = "관계 추가"
|
|
remove_title = "관계 삭제"
|
|
relation = "관계"
|
|
user_id = "사용자 ID"
|
|
user_id_placeholder = "kratos 사용자 id"
|
|
add = "추가"
|
|
list_title = "부여된 관계"
|
|
subject = "주체"
|
|
subject_type = "유형"
|
|
user_search = "사용자"
|
|
user_search_placeholder = "이름 또는 이메일 검색..."
|
|
|
|
[ui.dev.clients.relationships.option.admins]
|
|
label = "RP 관리자"
|
|
description = "RP 운영 전반을 관리할 수 있는 관리자 관계입니다."
|
|
permits_info = "RP 설정 수정, 시크릿 조회/재발급, JWKS 관리, 동의 조회/회수, 관계 조회/수정 등 모든 운영 권한을 가집니다."
|
|
|
|
[ui.dev.clients.relationships.option.creator]
|
|
label = "RP 생성자"
|
|
description = "이 RP를 생성한 운영 주체를 표시합니다."
|
|
|
|
[ui.dev.clients.relationships.option.config_editor]
|
|
label = "RP 일반 설정"
|
|
description = "이름, Redirect URI, 메타데이터 같은 일반 설정을 수정합니다."
|
|
permits_info = "RP 이름, Redirect URIs, 로그아웃 URI, 메타데이터 등 일반 설정을 수정할 수 있습니다."
|
|
|
|
[ui.dev.clients.relationships.option.secret_viewer]
|
|
label = "시크릿 조회"
|
|
description = "이 RP의 Client secret을 조회합니다."
|
|
permits_info = "RP의 Client Secret 값을 평문으로 확인할 수 있습니다."
|
|
|
|
[ui.dev.clients.relationships.option.secret_rotator]
|
|
label = "시크릿 재발급"
|
|
description = "Client secret 재발급과 회전을 수행합니다."
|
|
permits_info = "새로운 Client Secret을 발급하거나 기존 시크릿을 만료시키고 회전시킬 수 있습니다."
|
|
|
|
[ui.dev.clients.relationships.option.jwks_viewer]
|
|
label = "JWKS 조회"
|
|
description = "JWKS 상태, 캐시 정보, 키 요약을 조회합니다."
|
|
permits_info = "RP의 공개키 설정(JWKS) 상태와 캐시된 키 정보를 조회할 수 있습니다."
|
|
|
|
[ui.dev.clients.relationships.option.jwks_operator]
|
|
label = "JWKS 운영"
|
|
description = "JWKS refresh, revoke 같은 운영 작업을 수행합니다."
|
|
permits_info = "JWKS 캐시를 강제로 갱신하거나 등록된 키를 회수하는 등 키 관리를 수행할 수 있습니다."
|
|
|
|
[ui.dev.clients.relationships.option.consent_viewer]
|
|
label = "동의 조회"
|
|
description = "이 RP의 consent 내역을 조회합니다."
|
|
permits_info = "사용자가 이 RP에 부여한 개인정보 제공 동의 내역을 조회할 수 있습니다."
|
|
|
|
[ui.dev.clients.relationships.option.consent_revoker]
|
|
label = "동의 회수"
|
|
description = "이 RP의 consent를 회수합니다."
|
|
permits_info = "사용자의 동의 내역을 강제로 취소하거나 회수할 수 있습니다."
|
|
|
|
[ui.dev.clients.relationships.option.relationship_viewer]
|
|
label = "관계 조회"
|
|
description = "이 RP에 부여된 direct relation을 조회합니다."
|
|
permits_info = "이 RP에 어떤 사용자가 어떤 관리 권한을 가지고 있는지 목록을 조회할 수 있습니다."
|
|
|
|
[ui.dev.clients.relationships.option.audit_viewer]
|
|
label = "감사 로그 조회"
|
|
description = "이 RP의 DevFront 감사 로그를 조회합니다."
|
|
permits_info = "이 RP에서 발생한 모든 설정 변경 및 운영 작업에 대한 감사 로그를 조회할 수 있습니다."
|
|
|
|
[ui.dev.clients.relationships.option.status_operator]
|
|
label = "상태 변경"
|
|
description = "RP 활성/비활성 상태를 변경합니다."
|
|
|
|
[ui.dev.clients.list]
|
|
title = "연동 앱 목록"
|
|
|
|
[ui.dev.clients.registry]
|
|
description = "OIDC 앱, 인증 방식, 리다이렉트 URI, 비밀키 재발행을 감사 로그와 함께 관리합니다."
|
|
subtitle = "연동 앱"
|
|
title = "RP registry"
|
|
|
|
[ui.dev.clients.scopes]
|
|
email = "이메일 주소 접근"
|
|
openid = "OIDC 인증 필수 스코프"
|
|
profile = "기본 프로필 정보 접근"
|
|
|
|
[ui.dev.clients.table]
|
|
actions = "액션"
|
|
application = "애플리케이션"
|
|
client_id = "클라이언트 ID"
|
|
created_at = "생성일"
|
|
status = "상태"
|
|
type = "유형"
|
|
|
|
[ui.dev.clients.type]
|
|
private = "Server side App"
|
|
pkce = "PKCE"
|
|
pkce_headless = "PKCE (Headless Login)"
|
|
private_headless = "Server side App (Headless Login)"
|
|
|
|
[ui.dev.dashboard]
|
|
ready_badge = "devfront ready"
|
|
|
|
[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]
|
|
aria = "RP 요청 현황"
|
|
filter_all = "전체"
|
|
series = "로그인 {{login}} / 사용자 {{subjects}}"
|
|
title = "애플리케이션별 로그인 요청 현황"
|
|
x_axis = "X축: 기간"
|
|
y_axis = "Y축: 로그인 요청 수"
|
|
|
|
[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]
|
|
deleted_group = "삭제된 앱"
|
|
aria = "최근 변경된 앱 현황"
|
|
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.session]
|
|
auto_extend = "세션 만료 관리"
|
|
active = "세션 활성"
|
|
disabled = "세션 만료 비활성화"
|
|
unknown = "알 수 없음"
|
|
expired = "세션 만료"
|
|
expiring = "만료 임박: {{minutes}}분 {{seconds}}초 남음"
|
|
remaining = "만료 예정: {{minutes}}분 {{seconds}}초 남음"
|
|
|
|
[ui.shell.session]
|
|
auto_extend = "세션 만료 관리"
|
|
active = "세션 활성"
|
|
disabled = "세션 만료 비활성화"
|
|
unknown = "알 수 없음"
|
|
expired = "세션 만료"
|
|
expiring = "만료 임박: {{minutes}}분 {{seconds}}초 남음"
|
|
remaining = "만료 예정: {{minutes}}분 {{seconds}}초 남음"
|
|
|
|
[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]
|
|
app = "애플리케이션"
|
|
auth_method = "인증수단"
|
|
date = "접속일자"
|
|
device = "접속환경"
|
|
ip = "IP"
|
|
pending = "(준비중)"
|
|
result = "인증결과"
|
|
session_id = "Session ID"
|
|
status = "현황"
|
|
|
|
[ui.userfront.auth_method]
|
|
ory = "Ory 세션"
|
|
session = "세션"
|
|
|
|
[ui.userfront.dashboard]
|
|
last_auth_label = "최근 인증"
|
|
status_history = "상태 이력"
|
|
|
|
[ui.userfront.dashboard.activity]
|
|
linked = "연동됨"
|
|
|
|
[ui.userfront.dashboard.approved_session]
|
|
default = "승인한 세션 ID"
|
|
userfront = "승인한 Userfront 세션 ID"
|
|
|
|
[ui.userfront.dashboard.revoke]
|
|
confirm_button = "해지하기"
|
|
title = "연동 해지"
|
|
|
|
[ui.userfront.dashboard.scopes]
|
|
title = "권한 (Scopes)"
|
|
|
|
[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 = "로그인으로 이동"
|
|
|
|
[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]
|
|
code_only = "코드만 받기({{time}})"
|
|
resend_with_time = "재발송 ({{time}})"
|
|
send = "로그인 링크 전송"
|
|
|
|
[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 = "확인"
|
|
page_title = "로그인 승인"
|
|
title = "승인 완료"
|
|
|
|
[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 = "소속 테넌트"
|
|
|
|
[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]
|
|
rescan = "다시 스캔"
|
|
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 = "개인정보 수집 및 이용 동의 (필수)"
|
|
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.admin.nav]
|
|
api_keys = "API 키"
|
|
audit_logs = "감사 로그"
|
|
auth_guard = "인증 가드"
|
|
logout = "로그아웃"
|
|
overview = "개요"
|
|
relying_parties = "애플리케이션(RP)"
|
|
tenant_dashboard = "테넌트 대시보드"
|
|
user_groups = "유저 그룹"
|
|
tenants = "테넌트"
|
|
users = "사용자"
|
|
|
|
[ui.dev.profile]
|
|
unknown_name = "알 수 없는 사용자"
|
|
unknown_email = "unknown@example.com"
|
|
menu_aria = "계정 메뉴 열기"
|
|
menu_title = "계정"
|
|
title = "내 정보"
|
|
subtitle = "사용자 상세 정보 및 할당된 역할(Role)을 확인합니다."
|
|
loading = "프로필 정보를 불러오는 중..."
|
|
error = "프로필 정보를 불러오지 못했습니다."
|
|
|
|
[ui.dev.profile.tab]
|
|
basic = "기본 정보"
|
|
role = "권한 및 역할"
|
|
|
|
[ui.dev.profile.basic]
|
|
title = "사용자 정보"
|
|
id = "사용자 ID"
|
|
name = "이름"
|
|
email = "이메일"
|
|
phone = "전화번호"
|
|
|
|
[ui.dev.profile.org]
|
|
title = "조직 정보"
|
|
tenant = "테넌트"
|
|
company_code = "회사 코드"
|
|
|
|
[ui.dev.profile.role]
|
|
title = "시스템 역할"
|
|
description = "현재 계정에 부여된 권한 등급입니다."
|
|
current = "현재 역할"
|
|
desc_super_admin = "전체 시스템의 모든 테넌트와 모든 앱을 제한 없이 관리할 수 있습니다."
|
|
desc_user = "기본 앱 이용 권한을 가지며, DevFront 접근은 차단됩니다."
|
|
|
|
[ui.dev.tenant]
|
|
workspace = "작업 테넌트 (컨텍스트)"
|
|
workspace_desc = "현재 작업 중인 테넌트를 선택하고 저장하여 API 요청 컨텍스트를 변경합니다."
|
|
switch_success = "테넌트 전환 완료"
|
|
single_notice = "단일 테넌트에 소속되어 전환할 필요가 없습니다."
|
|
|
|
[msg.dev.forbidden]
|
|
default = "해당 리소스에 접근할 권한이 없습니다. 관리자에게 문의하세요."
|
|
user.clients = "일반 사용자 계정은 담당 RP(앱)에 대한 운영 또는 관리 관계가 부여된 경우에만 해당 기능을 사용할 수 있습니다. 권한이 필요하면 관리자에게 요청하세요."
|
|
user.consents = "해당 앱(RP)에 대한 동의 내역 조회는 운영, 동의 조회, 동의 회수 관계가 부여된 경우에만 사용할 수 있습니다. 권한이 필요하면 관리자에게 요청하세요."
|
|
user.audit = "해당 앱(RP)에 대한 감사 로그 조회는 운영 또는 감사 조회 관계가 부여된 경우에만 사용할 수 있습니다. 권한이 필요하면 관리자에게 요청하세요."
|
|
title = "{{resource}} 접근 권한 없음"
|
|
|
|
[ui.common]
|
|
na = "없음"
|