TLS 가 앞단에서 종단되고 앱에는 HTTP 로 전달되는 구성에서 X-Forwarded-* 가 전부 무시되어 화면 백지·IP 왜곡·webhook 403 이 함께 발생했다. 코어에 신뢰 프록시 설정 지점이 아예 없던 것이 원인이다. - config/trustedproxy.php 로 내장 TrustProxies 미들웨어에 값을 공급한다. bootstrap/app.php 는 건드리지 않는다 — withMiddleware 클로저는 .env 로드 전에 평가되어 env 가 항상 null 이 되는 조용한 no-op 이다. - 판정은 App\Support\TrustedProxyDiagnostic 단일 SSoT 에서 계산하고 대시보드 알림·환경설정 고급 탭·설치 마법사·trusted-proxy:status 네 면이 소비한다. 판정식은 "HTTPS 인식 실패" 가 아니라 "X-Forwarded-* 수신 중 AND 신뢰 프록시 미설정" 이다 — HTTP 전용 사이트가 프록시 뒤에 있으면 화면은 정상인 채로 나머지만 조용히 어긋나기 때문이다. - 값 편집 UI 와 쓰기 엔드포인트는 두지 않는다(잠금 역설 + XFF 위조 경로). - 혼합 콘텐츠 차단을 부트스트랩 폴백의 별도 사유로 가른다. 새로고침으로 낫지 않으므로 버튼을 렌더하지 않고, 원인·조치는 콘솔로 운영자에게 보낸다. - 대시보드 알림을 심각도로 배치한다 — warning 은 상단 배너, 그 외는 하단 카드. 같은 알림이 두 곳에 뜨지 않으며, 여러 건은 간격을 두고 쌓인다. 공개 이슈: (@lyg-kaban 제보)
2861 lines
145 KiB
JSON
2861 lines
145 KiB
JSON
{
|
||
"sidebar": {
|
||
"no_accessible_menus": "접근 가능한 메뉴가 없습니다",
|
||
"view_site": "사이트 보기"
|
||
},
|
||
"profile_settings": "프로필 설정",
|
||
"logout": "로그아웃",
|
||
"language": "언어",
|
||
"notifications": "알림",
|
||
"no_notifications": "알림이 없습니다",
|
||
"notifications_mark_all_read": "모두 읽기",
|
||
"notifications_delete_all": "모두 삭제",
|
||
"notifications_delete_all_title": "전체 알림 삭제",
|
||
"notifications_delete_all_confirm": "모든 알림을 삭제하시겠습니까? 이 작업은 되돌릴 수 없습니다.",
|
||
"notifications_delete_all_success": "모든 알림이 삭제되었습니다.",
|
||
"notifications_delete_all_failed": "전체 알림 삭제에 실패했습니다.",
|
||
"notifications_unread_only": "안 읽은 알림만",
|
||
"new_notification_received": "새 알림이 도착했습니다",
|
||
"base_layout_description": "그누보드7 관리자",
|
||
"mobile_menu": "모바일 메뉴",
|
||
"close_menu": "메뉴 닫기",
|
||
"theme": {
|
||
"auto": "시스템 설정",
|
||
"light": "라이트 모드",
|
||
"dark": "다크 모드"
|
||
},
|
||
"dashboard": {
|
||
"title": "대시보드",
|
||
"description": "그누보드7 관리자 대시보드",
|
||
"refresh": "새로고침",
|
||
"stats": {
|
||
"total_users": "전체회원수",
|
||
"new_posts": "새게시물",
|
||
"new_orders": "새주문",
|
||
"new_reviews": "새리뷰",
|
||
"monthly_change": "전월 대비 {{percent}}",
|
||
"today": "오늘",
|
||
"installed_modules": "활성 모듈",
|
||
"active_count": "활성화: {{count}}개",
|
||
"active_plugins": "활성 플러그인",
|
||
"active_templates": "활성 템플릿",
|
||
"active_language_packs": "활성 언어팩",
|
||
"total_installed": "총 {{count}}개 설치됨",
|
||
"system_status": "시스템 상태",
|
||
"status_normal": "정상",
|
||
"all_services_running": "모든 서비스 운영 중"
|
||
},
|
||
"today_badges": {
|
||
"pending_payment": "입금대기 {{count}}건",
|
||
"payment_complete": "결제완료 {{count}}건",
|
||
"preparing": "상품준비중 {{count}}건",
|
||
"shipping_ready": "배송준비중 {{count}}건",
|
||
"shipping": "배송중 {{count}}건",
|
||
"cancellations": "취소 {{count}}건",
|
||
"returns": "반품 {{count}}건"
|
||
},
|
||
"quick_menu": {
|
||
"users": "회원",
|
||
"products": "상품",
|
||
"orders": "주문",
|
||
"reviews": "리뷰",
|
||
"coupons": "쿠폰",
|
||
"shipping": "배송",
|
||
"settings": "설정",
|
||
"modules": "모듈"
|
||
},
|
||
"system_resources": {
|
||
"title": "시스템 상태",
|
||
"subtitle": "서버 리소스 사용량",
|
||
"cpu_usage": "CPU 사용률",
|
||
"memory_usage": "메모리 사용률",
|
||
"disk_usage": "디스크 사용률"
|
||
},
|
||
"recent_notifications": {
|
||
"title": "최근 알림",
|
||
"subtitle": "최근 발송된 알림 이력",
|
||
"empty": "발송된 알림이 없습니다"
|
||
},
|
||
"recent_activity": {
|
||
"title": "최근 활동",
|
||
"subtitle": "시스템에서 발생한 최근 활동들",
|
||
"new_user_registered": "새 사용자 등록",
|
||
"module_updated": "모듈 업데이트",
|
||
"plugin_installed": "플러그인 설치",
|
||
"template_modified": "템플릿 수정",
|
||
"sample_user_1": "김철수",
|
||
"sample_module_1": "게시판 모듈 v2.1",
|
||
"sample_plugin_1": "SEO 최적화",
|
||
"sample_template_1": "메인 페이지"
|
||
},
|
||
"activities": {
|
||
"user_registered": "{{name}}님이 가입했습니다"
|
||
},
|
||
"refreshed": "대시보드가 새로고침되었습니다.",
|
||
"extension_status": {
|
||
"more": "더보기"
|
||
},
|
||
"module_status": {
|
||
"title": "모듈 상태",
|
||
"subtitle": "설치된 모듈들의 현재 상태",
|
||
"board_module": "게시판 모듈",
|
||
"ecommerce_module": "이커머스 모듈",
|
||
"community_module": "커뮤니티 모듈",
|
||
"homepage_module": "홈페이지 모듈",
|
||
"active": "활성화",
|
||
"inactive": "비활성화"
|
||
},
|
||
"plugin_status": {
|
||
"title": "플러그인 상태",
|
||
"subtitle": "설치된 플러그인들의 현재 상태",
|
||
"active": "활성화",
|
||
"inactive": "비활성화"
|
||
},
|
||
"template_status": {
|
||
"title": "템플릿 상태",
|
||
"subtitle": "설치된 템플릿들의 현재 상태",
|
||
"active": "활성화",
|
||
"inactive": "비활성화"
|
||
},
|
||
"system_alerts": {
|
||
"title": "시스템 알림",
|
||
"subtitle": "확인이 필요한 시스템 알림",
|
||
"new_module_update": "새로운 모듈 업데이트가 있습니다.",
|
||
"disk_usage_warning": "디스크 용량이 70% 이상 사용 중입니다.",
|
||
"security_patch_applied": "보안 패치가 적용되었습니다."
|
||
},
|
||
"time": {
|
||
"minutes_ago": "{{count}}분 전",
|
||
"hours_ago": "{{count}}시간 전"
|
||
},
|
||
"charts": {
|
||
"product_sales": "상품 판매 현황",
|
||
"sales": "건수",
|
||
"earning": "판매액",
|
||
"total_sales": "총판매건수",
|
||
"total_earning": "총판매액",
|
||
"sales_by_traffic": "트래픽 소스별 매출",
|
||
"total": "합계",
|
||
"unanswered_inquiries": "미답변 문의",
|
||
"unanswered_inquiries_with_count": "미답변문의(3)",
|
||
"latest_reviews": "최신 리뷰"
|
||
},
|
||
"asset_url_mode_drift_title": "에셋 파일 서빙 방식이 서버 환경과 다릅니다",
|
||
"asset_url_mode_drift_description": "저장된 방식으로는 일부 주소가 서버에 가로채여 화면이 뜨지 않을 수 있습니다. 방문자 화면은 브라우저가 자동으로 보정하지만 검색엔진 봇에는 보정이 적용되지 않으므로, 환경설정에서 감지 결과를 저장해 주세요.",
|
||
"asset_url_mode_drift_action": "환경설정 > 일반에서 확인하기"
|
||
},
|
||
"users": {
|
||
"page_title": "사용자 관리",
|
||
"page_description": "시스템 사용자를 관리합니다.",
|
||
"title": "사용자 관리",
|
||
"description": "시스템에 등록된 사용자 목록을 조회하고 관리합니다.",
|
||
"add_user": "사용자 추가",
|
||
"search": "검색",
|
||
"search_placeholder": "검색어를 입력하세요...",
|
||
"search_fields": {
|
||
"all": "전체",
|
||
"name": "이름",
|
||
"email": "이메일",
|
||
"nickname": "닉네임"
|
||
},
|
||
"columns": {
|
||
"id": "ID",
|
||
"name": "이름",
|
||
"role": "역할",
|
||
"email": "이메일",
|
||
"country": "국가",
|
||
"language": "언어",
|
||
"status": "상태",
|
||
"created_at": "가입일",
|
||
"last_login_at": "마지막 로그인"
|
||
},
|
||
"status": {
|
||
"active": "활성",
|
||
"inactive": "비활성"
|
||
},
|
||
"actions": {
|
||
"view": "상세보기",
|
||
"edit": "수정",
|
||
"delete": "삭제"
|
||
},
|
||
"selected_count": "{count}개 선택됨",
|
||
"bulk_activate": "활성화",
|
||
"bulk_deactivate": "비활성화",
|
||
"bulk_block": "차단",
|
||
"bulk_withdraw": "탈퇴 처리",
|
||
"bulk_action_select": "일괄 작업 선택",
|
||
"bulk_status_change": "상태 변경",
|
||
"pagination_info": "총 {{total}}명 중 {{from}}-{{to}}명 표시",
|
||
"total_count": "총 {{count}}개",
|
||
"per_page": "{{count}}개",
|
||
"sort": {
|
||
"created_at_desc": "가입일시 최근순",
|
||
"created_at_asc": "가입일시 오래된순",
|
||
"last_login_at_desc": "마지막로그인 최근순",
|
||
"last_login_at_asc": "마지막로그인 오래된순"
|
||
},
|
||
"modals": {
|
||
"delete_title": "사용자 삭제",
|
||
"delete_confirm": "정말로 이 사용자를 삭제하시겠습니까? 이 작업은 되돌릴 수 없습니다.",
|
||
"delete_success": "사용자가 성공적으로 삭제되었습니다.",
|
||
"bulk_activate_title": "사용자 활성화",
|
||
"bulk_activate_confirm": "{{count}}명의 사용자를 활성 상태로 변경합니다.",
|
||
"bulk_activate_success": "사용자가 활성화되었습니다.",
|
||
"bulk_deactivate_title": "사용자 비활성화",
|
||
"bulk_deactivate_confirm": "{{count}}명의 사용자를 비활성 상태로 변경합니다.",
|
||
"bulk_deactivate_success": "사용자가 비활성화되었습니다.",
|
||
"bulk_block_title": "사용자 차단",
|
||
"bulk_block_confirm": "{{count}}명의 사용자를 차단합니다. 차단된 사용자는 로그인할 수 없습니다.",
|
||
"bulk_block_success": "사용자가 차단되었습니다.",
|
||
"bulk_withdraw_title": "사용자 탈퇴 처리",
|
||
"bulk_withdraw_confirm": "{{count}}명의 사용자를 탈퇴 처리합니다. 이 작업은 되돌리기 어려울 수 있습니다.",
|
||
"bulk_withdraw_success": "사용자가 탈퇴 처리되었습니다.",
|
||
"bulk_withdraw_partial": "{updated}명을 탈퇴 처리했습니다. {failed}명은 처리하지 못했습니다 — {reason}",
|
||
"bulk_withdraw_all_failed": "탈퇴 처리하지 못했습니다 — {reason}",
|
||
"withdraw_confirm_title": "탈퇴 처리 확인",
|
||
"withdraw_confirm_lead": "상태를 '탈퇴'로 저장하면 이 회원은 실제로 탈퇴 처리됩니다. 되돌릴 수 없습니다.",
|
||
"withdraw_confirm_effects_title": "함께 처리되는 항목",
|
||
"withdraw_confirm_effect_anonymize": "이메일·이름·닉네임이 익명화됩니다.",
|
||
"withdraw_confirm_effect_sessions": "이 회원의 모든 로그인 세션이 해제됩니다.",
|
||
"withdraw_confirm_effect_linked": "약관 동의 이력·프로필 이미지가 삭제되고, 마일리지·본인인증 기록 등 연계 데이터가 정리됩니다.",
|
||
"withdraw_confirm_submit": "탈퇴 처리"
|
||
},
|
||
"form": {
|
||
"page_title_create": "사용자 등록",
|
||
"page_title_edit": "사용자 정보 수정",
|
||
"page_description_create": "새로운 사용자를 등록합니다.",
|
||
"page_description_edit": "{{name}}({{email}})의 정보를 수정합니다.",
|
||
"sections": {
|
||
"basic_info": "기본 정보",
|
||
"contact_info": "연락처 정보",
|
||
"location_info": "위치 정보",
|
||
"verification_info": "본인 인증 정보",
|
||
"marketing_consent": "마케팅 및 동의",
|
||
"notification_settings": "알림 설정",
|
||
"profile_memo": "프로필 및 메모",
|
||
"activity_info": "활동 정보"
|
||
},
|
||
"fields": {
|
||
"id": "ID",
|
||
"name": "이름",
|
||
"nickname": "닉네임",
|
||
"role": "역할",
|
||
"role_placeholder": "역할을 선택하세요",
|
||
"role_no_options": "선택 가능한 역할이 없습니다",
|
||
"status": "상태",
|
||
"current_status": "현재 상태",
|
||
"email": "이메일",
|
||
"email_verified": "인증됨",
|
||
"email_verify_btn": "인증",
|
||
"mobile": "휴대폰번호",
|
||
"phone": "전화번호",
|
||
"homepage": "홈페이지",
|
||
"address": "주소",
|
||
"zipcode": "우편번호",
|
||
"address_detail": "상세 주소",
|
||
"country": "국가",
|
||
"language": "언어",
|
||
"timezone": "시간대",
|
||
"password": "비밀번호",
|
||
"password_confirmation": "비밀번호 확인",
|
||
"password_hint": "수정 시 빈 값이면 기존 비밀번호 유지",
|
||
"signature": "서명",
|
||
"bio": "자기소개",
|
||
"admin_memo": "관리자 메모",
|
||
"created_at": "가입일",
|
||
"last_login_at": "마지막 로그인",
|
||
"ip_address": "IP",
|
||
"country_select": "국가 선택",
|
||
"country_search": "국가 검색...",
|
||
"lock_status": "계정 잠금 상태"
|
||
},
|
||
"verification": {
|
||
"method": "본인확인방법",
|
||
"method_mobile": "휴대폰",
|
||
"method_ipin": "아이핀",
|
||
"method_none": "미인증",
|
||
"identity_verified": "본인확인 완료",
|
||
"adult_verified": "성인인증 완료",
|
||
"verification_history": "인증 이력",
|
||
"verification_plugin": "본인 인증 플러그인"
|
||
},
|
||
"marketing": {
|
||
"email_subscription": "광고성 이메일 수신",
|
||
"marketing_consent": "마케팅 동의",
|
||
"third_party_consent": "제3자 제공 동의",
|
||
"info_disclosure": "정보 공개",
|
||
"ecommerce_module": "이커머스 모듈"
|
||
},
|
||
"notifications": {
|
||
"post_complete": "게시글 작성 완료 알림",
|
||
"post_reply": "게시글 답변 알림",
|
||
"comment": "댓글 알림",
|
||
"reply_comment": "대댓글 알림",
|
||
"board_module": "게시판 모듈"
|
||
},
|
||
"status_options": {
|
||
"active": "활성",
|
||
"inactive": "비활성",
|
||
"blocked": "차단",
|
||
"withdrawn": "탈퇴"
|
||
},
|
||
"timezone_options": {
|
||
"Asia/Seoul": "아시아/서울 (UTC+9)",
|
||
"Asia/Tokyo": "아시아/도쿄 (UTC+9)",
|
||
"America/New_York": "미국/뉴욕 (UTC-5)",
|
||
"America/Los_Angeles": "미국/로스앤젤레스 (UTC-8)",
|
||
"Europe/London": "유럽/런던 (UTC+0)",
|
||
"Europe/Paris": "유럽/파리 (UTC+1)",
|
||
"UTC": "UTC"
|
||
},
|
||
"create_success": "사용자가 성공적으로 등록되었습니다.",
|
||
"update_success": "사용자 정보가 성공적으로 수정되었습니다.",
|
||
"validation_error": "입력 정보를 확인해주세요.",
|
||
"error_loading_user": "사용자 정보를 불러오는 중 오류가 발생했습니다.",
|
||
"no_edit_permission": "이 사용자의 정보를 수정할 권한이 없습니다.",
|
||
"go_to_detail": "상세보기로 이동"
|
||
},
|
||
"detail": {
|
||
"page_title": "사용자 정보 상세",
|
||
"page_description": "사용자의 상세 정보를 확인합니다.",
|
||
"page_description_with_info": "{{name}}({{email}})의 상세 정보입니다.",
|
||
"back_to_list": "목록으로",
|
||
"edit": "수정",
|
||
"error_loading_user": "사용자 정보를 불러오는 중 오류가 발생했습니다.",
|
||
"email_verification": "이메일 인증",
|
||
"identity_verification": "본인확인여부",
|
||
"adult_verification": "성인인증",
|
||
"verified": "확인됨",
|
||
"not_verified": "미인증",
|
||
"subscribed": "수신",
|
||
"not_subscribed": "수신 거부",
|
||
"agreed": "동의",
|
||
"not_agreed": "미동의",
|
||
"info_public": "공개",
|
||
"info_private": "비공개",
|
||
"consent_history": "약관 동의 이력",
|
||
"enabled": "활성",
|
||
"disabled": "비활성",
|
||
"withdrawn_at": "탈퇴일",
|
||
"blocked_at": "차단일",
|
||
"consent_type": {
|
||
"terms": "이용약관",
|
||
"privacy": "개인정보처리방침"
|
||
},
|
||
"tabs": {
|
||
"basic_info": "기본정보",
|
||
"contact_info": "연락처",
|
||
"location_info": "위치정보",
|
||
"profile_memo": "프로필/메모",
|
||
"activity_info": "활동정보",
|
||
"consent_info": "동의이력"
|
||
},
|
||
"unlock": "잠금 해제",
|
||
"unlock_success": "계정 잠금이 해제되었습니다.",
|
||
"lock_status": "계정 잠금 상태",
|
||
"locked_permanently_value": "잠김 (무기한 — 관리자 해제 필요)",
|
||
"locked_until_value": "잠김 ({{until}} 까지)",
|
||
"not_locked_value": "정상"
|
||
}
|
||
},
|
||
"language_packs": {
|
||
"page_title": "언어팩 관리",
|
||
"page_description": "코어 및 확장의 언어팩을 통합 관리합니다.",
|
||
"title": "언어팩 관리",
|
||
"description": "ZIP 업로드 또는 GitHub URL로 언어팩을 자유롭게 추가/제거할 수 있습니다.",
|
||
"columns": {
|
||
"locale": "로케일",
|
||
"scope": "스코프",
|
||
"target": "대상",
|
||
"vendor": "벤더",
|
||
"version": "버전",
|
||
"status": "상태",
|
||
"actions": "작업"
|
||
},
|
||
"scope": {
|
||
"core": "코어",
|
||
"module": "모듈",
|
||
"plugin": "플러그인",
|
||
"template": "템플릿"
|
||
},
|
||
"origin": {
|
||
"built_in": "빌트인",
|
||
"bundled": "번들",
|
||
"user_installed": "사용자 설치"
|
||
},
|
||
"status": {
|
||
"active": "활성",
|
||
"installed": "설치됨",
|
||
"inactive": "비활성",
|
||
"updating": "업데이트 중",
|
||
"uninstalled": "미설치 (번들)",
|
||
"error": "오류",
|
||
"bundled": "내장",
|
||
"version_mismatch": "버전 불일치"
|
||
},
|
||
"filter": {
|
||
"all_scopes": "전체 스코프",
|
||
"all_locales": "전체 로케일",
|
||
"all_statuses": "전체 상태",
|
||
"reset": "초기화",
|
||
"exclude_protected": "보호된 언어팩 제외"
|
||
},
|
||
"actions": {
|
||
"install": "설치",
|
||
"activate": "활성화",
|
||
"deactivate": "비활성화",
|
||
"uninstall": "제거",
|
||
"manage": "언어 관리",
|
||
"check_updates": "업데이트 확인",
|
||
"refresh_cache": "캐시 갱신",
|
||
"refresh_cache_now": "캐시 갱신",
|
||
"update": "업데이트",
|
||
"update_now": "지금 업데이트",
|
||
"detail": "상세 보기",
|
||
"cancel": "취소",
|
||
"close": "닫기",
|
||
"reinstall": "재설치",
|
||
"preview_manifest": "manifest 미리보기"
|
||
},
|
||
"search_placeholder": "식별자/벤더/언어로 검색",
|
||
"badge": {
|
||
"update_available": "업데이트 가능",
|
||
"files_missing": "파일 없음"
|
||
},
|
||
"banner": {
|
||
"scoped": "{{scope}} \"{{target}}\"의 언어팩만 보고 있습니다.",
|
||
"see_all": "전체 언어팩 보기",
|
||
"back_to_modules": "모듈 관리로 돌아가기",
|
||
"back_to_plugins": "플러그인 관리로 돌아가기",
|
||
"back_to_templates": "템플릿 관리로 돌아가기"
|
||
},
|
||
"pagination": {
|
||
"info": "{{current}} / {{last}} 페이지 (총 {{total}}건)",
|
||
"prev": "이전",
|
||
"next": "다음",
|
||
"per_page_label": "페이지당",
|
||
"summary": "총 {{total}}개 · {{from}}-{{to}} 표시"
|
||
},
|
||
"vendor_label": "벤더: {{vendor}}",
|
||
"source_label": "출처: {{source}}",
|
||
"dependency_label": "의존성:",
|
||
"modal": {
|
||
"detail": {
|
||
"title": "언어팩 상세",
|
||
"loading": "불러오는 중...",
|
||
"built_in_title": "코어/번들 확장에 내장된 번역",
|
||
"built_in_description": "이 항목은 코어 또는 번들 확장에 직접 포함된 번역으로, 별도의 언어팩 메타데이터가 없습니다. 항상 활성 상태이며 수정/제거할 수 없습니다.",
|
||
"basic_info": "기본 정보",
|
||
"identifier": "식별자",
|
||
"name": "이름",
|
||
"vendor": "벤더",
|
||
"locale": "로케일",
|
||
"version": "버전",
|
||
"scope": "스코프 / 대상",
|
||
"github_url": "GitHub 저장소",
|
||
"license": "라이선스",
|
||
"text_direction": "쓰기 방향",
|
||
"description": "설명",
|
||
"status": "상태",
|
||
"protected": "보호됨",
|
||
"compatibility": "호환성",
|
||
"target_version_constraint": "대상 확장 버전 제약",
|
||
"core_version_constraint": "코어 요구 버전",
|
||
"depends_on_core_locale": "코어 언어팩 의존",
|
||
"depends_on_core_locale_yes": "이 언어팩은 동일 로케일의 코어 언어팩이 활성 상태일 때만 사용 가능합니다.",
|
||
"depends_on_core_locale_no": "이 언어팩은 코어 언어팩과 독립적으로 동작합니다.",
|
||
"yes": "예",
|
||
"no": "아니오",
|
||
"target_version_mismatch_label": "대상 버전 일치",
|
||
"match": "일치",
|
||
"mismatch": "불일치",
|
||
"target_version_mismatch": "대상 확장 버전과 호환 제약이 일치하지 않습니다.",
|
||
"source": "소스 정보",
|
||
"source_type": "설치 출처",
|
||
"source_url": "소스 URL/경로",
|
||
"installed_at": "설치 시각",
|
||
"activated_at": "활성화 시각",
|
||
"changelog_title": "변경로그 (CHANGELOG.md)",
|
||
"load_changelog": "변경로그 불러오기",
|
||
"no_changelog": "이 언어팩에는 CHANGELOG.md 파일이 없습니다.",
|
||
"changelog_failed": "변경로그를 불러오지 못했습니다."
|
||
},
|
||
"update": {
|
||
"title": "언어팩 업데이트",
|
||
"body": "현재 버전 {{current}} → 최신 버전 {{latest}}로 업데이트합니다.",
|
||
"user_overrides_notice": "사용자가 수정한 번역은 그대로 유지됩니다."
|
||
},
|
||
"uninstall": {
|
||
"title": "언어팩 제거",
|
||
"body": "{{scope}} / {{target}} / {{locale}} 언어팩을 제거합니다. 되돌릴 수 없습니다.",
|
||
"cascade_label": "이 로케일의 모든 하위 확장 언어팩을 함께 비활성화",
|
||
"warning": "이 작업은 되돌릴 수 없습니다. 사용자가 직접 수정한 다국어 키도 함께 제거됩니다.",
|
||
"cascade_hint": "활성화된 의존 모듈/플러그인/템플릿 언어팩이 함께 비활성화됩니다."
|
||
},
|
||
"refresh_cache": {
|
||
"title": "캐시 갱신",
|
||
"body": "번역/레지스트리/템플릿 언어 캐시를 무효화합니다."
|
||
},
|
||
"preview": {
|
||
"title": "manifest 미리보기",
|
||
"description": "ZIP 파일을 업로드하면 설치 전에 manifest 정보와 검증 결과를 확인할 수 있습니다.",
|
||
"run": "미리보기 실행",
|
||
"valid": "manifest 검증 통과 — 설치 가능합니다.",
|
||
"already_installed": "이미 설치됨: 현재 버전 {{version}}"
|
||
}
|
||
},
|
||
"install_modal": {
|
||
"title": "언어팩 설치",
|
||
"description": "ZIP 파일 또는 GitHub URL로 언어팩을 설치합니다.",
|
||
"tabs": {
|
||
"zip": "ZIP 파일",
|
||
"github": "GitHub"
|
||
},
|
||
"file_label": "ZIP 파일",
|
||
"no_file_selected": "선택된 파일이 없습니다.",
|
||
"file_requirements": "다음 manifest 파일이 ZIP 루트에 포함되어 있어야 합니다.",
|
||
"github_url_label": "GitHub URL",
|
||
"github_requirements": "Public 저장소만 지원합니다. 다음 manifest 파일이 저장소 루트에 있어야 합니다."
|
||
},
|
||
"installing": "설치 중...",
|
||
"messages": {
|
||
"install_success": "언어팩이 설치되었습니다.",
|
||
"install_failed": "언어팩 설치에 실패했습니다.",
|
||
"uninstall_success": "언어팩이 제거되었습니다.",
|
||
"uninstall_failed": "언어팩 제거에 실패했습니다.",
|
||
"cascade_warning": "코어 언어팩 제거 시 관련 하위 언어팩이 비활성화됩니다.",
|
||
"empty": "설치된 언어팩이 없습니다.",
|
||
"protected_badge": "🔒 보호됨",
|
||
"check_updates_done": "업데이트 확인을 완료했습니다 ({{count}}건 가능).",
|
||
"check_updates_none": "모든 언어팩이 최신 상태입니다.",
|
||
"check_updates_failed": "업데이트 확인에 실패했습니다.",
|
||
"activate_success": "언어팩을 활성화했습니다.",
|
||
"deactivate_success": "언어팩을 비활성화했습니다.",
|
||
"toggle_failed": "활성 상태 변경에 실패했습니다.",
|
||
"update_success": "언어팩을 업데이트했습니다.",
|
||
"update_failed": "언어팩 업데이트에 실패했습니다.",
|
||
"refresh_cache_done": "언어팩 캐시를 갱신했습니다.",
|
||
"refresh_cache_failed": "캐시 갱신에 실패했습니다."
|
||
},
|
||
"modals": {
|
||
"install_bundled_title": "언어팩 설치",
|
||
"install_bundled_confirm": "번들 언어팩 \"{{identifier}}\" 을(를) 설치하시겠습니까?",
|
||
"install_bundled_core_required": "코어 언어팩(locale={{locale}}) 이 먼저 활성화되어 있어야 합니다.",
|
||
"install_blocked_target_not_installed": "대상 {{scope}} \"{{target}}\" 이(가) 설치되어 있지 않습니다.",
|
||
"install_blocked_target_inactive": "대상 {{scope}} \"{{target}}\" 이(가) 비활성 상태입니다. 먼저 활성화하세요.",
|
||
"install_blocked_target_version_too_old": "대상 {{scope}} \"{{target}}\" 의 버전이 요구 조건을 충족하지 않습니다."
|
||
},
|
||
"slot_conflict_modal": {
|
||
"title": "언어팩 교체 확인",
|
||
"description": "같은 슬롯에 이미 활성화된 언어팩이 있습니다. 교체하면 기존 언어팩은 비활성화됩니다.",
|
||
"current_label": "현재 활성",
|
||
"target_label": "교체 대상",
|
||
"warning": "교체 직후 프론트엔드 캐시 버전이 갱신되어 다국어 데이터가 새로 적재됩니다.",
|
||
"cancel": "취소",
|
||
"confirm": "교체"
|
||
},
|
||
"uninstalling": "제거 중...",
|
||
"updating": "업데이트 중...",
|
||
"errors": {
|
||
"manifest_invalid": "language-pack.json 검증에 실패했습니다.",
|
||
"core_locale_missing": "코어 언어팩이 먼저 활성화되어야 합니다."
|
||
}
|
||
},
|
||
"modules": {
|
||
"page_title": "모듈 관리",
|
||
"page_description": "시스템에 설치된 모듈을 관리하고 새로운 모듈을 설치할 수 있습니다.",
|
||
"title": "모듈 관리",
|
||
"description": "시스템에 설치된 모듈을 관리하고 새로운 모듈을 설치할 수 있습니다.",
|
||
"search_placeholder": "모듈 검색...",
|
||
"search": "검색",
|
||
"include_hidden": "숨김 항목 포함",
|
||
"manual_install": "수동 설치",
|
||
"marketplace": "마켓플레이스",
|
||
"vendor": "작성자: {{vendor}}",
|
||
"dependencies": "의존성: {{deps}}",
|
||
"dependencies_label": "의존성:",
|
||
"no_dependencies": "의존성: 없음",
|
||
"no_modules": "설치된 모듈이 없습니다.",
|
||
"pagination_info": "총 {{total}}개 중 {{from}}-{{to}}개 표시",
|
||
"update_available": "업데이트 필요",
|
||
"version_available": "(v{{version}} 사용 가능)",
|
||
"installing": "설치 중...",
|
||
"uninstalling": "제거 중...",
|
||
"deactivating": "비활성화 중...",
|
||
"activating": "활성화 중...",
|
||
"install_success": "모듈이 성공적으로 설치되었습니다.",
|
||
"activate_success": "모듈이 활성화되었습니다.",
|
||
"deactivate_success": "모듈이 비활성화되었습니다.",
|
||
"uninstall_success": "모듈이 제거되었습니다.",
|
||
"refresh_layouts_success": "모듈 레이아웃이 갱신되었습니다.",
|
||
"refreshing_layouts": "레이아웃 갱신 중...",
|
||
"updating": "업데이트 중...",
|
||
"update_success": "모듈이 성공적으로 업데이트되었습니다.",
|
||
"update_failed": "모듈 업데이트에 실패했습니다.",
|
||
"check_updates_success": "업데이트 확인 완료 ({{count}}개 업데이트 가능)",
|
||
"check_updates_no_updates": "모든 모듈이 최신 상태입니다.",
|
||
"status": {
|
||
"active": "활성화",
|
||
"inactive": "비활성화",
|
||
"not_installed": "미설치",
|
||
"installing": "설치 중",
|
||
"uninstalling": "제거 중",
|
||
"updating": "업데이트 중",
|
||
"active_label": "활성화"
|
||
},
|
||
"actions": {
|
||
"install": "설치",
|
||
"uninstall": "제거",
|
||
"activate": "활성화",
|
||
"deactivate": "비활성화",
|
||
"update": "업데이트",
|
||
"check_updates": "업데이트 확인",
|
||
"view_detail": "상세정보",
|
||
"refresh_layouts": "레이아웃 갱신",
|
||
"preview_manifest": "manifest 미리보기"
|
||
},
|
||
"modal": {
|
||
"preview": {
|
||
"title": "모듈 manifest 미리보기",
|
||
"description": "ZIP 파일을 업로드하면 설치 전에 module.json 정보와 검증 결과를 확인할 수 있습니다.",
|
||
"run": "미리보기 실행",
|
||
"valid": "module.json 검증 통과 — 설치 가능합니다.",
|
||
"already_installed": "이미 설치됨: 현재 버전 {{version}}",
|
||
"failed": "manifest 미리보기에 실패했습니다."
|
||
}
|
||
},
|
||
"modals": {
|
||
"detail_title": "모듈 정보",
|
||
"basic_info": "기본 정보",
|
||
"field_name": "이름",
|
||
"field_version": "버전",
|
||
"field_description": "설명",
|
||
"field_vendor": "개발자",
|
||
"field_update_source": "업데이트 소스",
|
||
"field_release_date": "출시일자",
|
||
"field_status": "상태",
|
||
"field_license": "라이센스",
|
||
"admin_menus": "관리자 메뉴",
|
||
"admin_menus_count": "{{count}}개의 메뉴가 등록됩니다.",
|
||
"no_admin_menus": "등록되는 관리자 메뉴가 없습니다.",
|
||
"dependencies": "의존성",
|
||
"required_core_version": "코어 요구 버전",
|
||
"required_modules": "의존 모듈",
|
||
"required_plugins": "의존 플러그인",
|
||
"no_required_core_version": "지정되지 않음",
|
||
"no_dependencies_required": "의존하는 확장이 없습니다.",
|
||
"dependency_required_version": "요구: {{version}}",
|
||
"dependency_installed_version": "설치: {{version}}",
|
||
"dependency_not_installed": "미설치",
|
||
"dependency_met": "충족",
|
||
"dependency_unmet_version": "버전 불일치",
|
||
"dependency_inactive": "비활성",
|
||
"permissions": "권한",
|
||
"permissions_count": "{{count}}개의 권한이 등록됩니다.",
|
||
"no_permissions": "등록되는 권한이 없습니다.",
|
||
"roles": "역할",
|
||
"roles_count": "{{count}}개의 역할이 등록됩니다.",
|
||
"no_roles": "등록되는 역할이 없습니다.",
|
||
"layouts": "레이아웃",
|
||
"layouts_count": "{{count}}개의 레이아웃이 등록됩니다.",
|
||
"no_layouts": "등록되는 레이아웃이 없습니다.",
|
||
"supported_languages": "지원 언어",
|
||
"no_supported_languages": "지원 언어 정보가 없습니다.",
|
||
"cascade_dependencies_title": "함께 설치할 의존 확장",
|
||
"cascade_dependencies_hint": "본 확장이 의존하는 미설치 항목입니다. 체크 해제 시 해당 확장은 설치되지 않으며, 종속된 언어팩도 자동 비활성화됩니다.",
|
||
"cascade_language_packs_title": "함께 설치할 언어팩",
|
||
"cascade_language_packs_hint": "번들로 제공되는 언어팩 후보입니다. 체크된 항목만 본 설치와 함께 자동 설치됩니다.",
|
||
"cascade_lp_depends_on": "종속: {{target}}",
|
||
"install_title": "모듈 설치 확인",
|
||
"install_confirm": "{{name}} 모듈을 설치하시겠습니까?",
|
||
"install_description": "설치 후 모듈을 활성화하면 기능을 사용할 수 있습니다.",
|
||
"vendor_mode_label": "Vendor 설치 방식",
|
||
"vendor_mode_hint": "Composer 사용 불가 환경에서는 '번들'을 선택하세요.",
|
||
"vendor_mode_auto": "자동 (권장)",
|
||
"vendor_mode_composer": "Composer 실행",
|
||
"vendor_mode_bundled": "번들 Vendor 사용",
|
||
"uninstall_title": "모듈 제거 확인",
|
||
"uninstall_done_title": "모듈 제거 완료",
|
||
"uninstall_confirm": "{{name}} 모듈을 제거하시겠습니까?",
|
||
"uninstall_warning": "이 작업은 되돌릴 수 없습니다.",
|
||
"delete_data_option": "모듈 데이터도 함께 삭제",
|
||
"delete_data_warning": "모듈이 생성한 모든 데이터(게시물, 설정 등)가 함께 삭제되며, 삭제된 데이터는 복구할 수 없습니다.",
|
||
"delete_data_info_title": "삭제될 데이터",
|
||
"tables_section": "데이터베이스 테이블",
|
||
"tables_total": "총 {{size}}",
|
||
"storage_section": "스토리지 디렉토리",
|
||
"storage_total": "총 {{size}}",
|
||
"vendor_section": "Composer 의존성",
|
||
"extension_directory_title": "삭제될 확장 디렉토리",
|
||
"extension_directory_section": "확장 디렉토리",
|
||
"preserved_title": "운영자 파일 사본 보관",
|
||
"preserved_desc": "제거하기 전에 custom/ 디렉토리의 사본을 아래 경로에 보관했습니다. 확장을 다시 설치한 뒤 custom/ 으로 옮기면 그대로 다시 쓸 수 있습니다.",
|
||
"shared_records_section": "공유 테이블 데이터",
|
||
"shared_records_count": "{{count}}건",
|
||
"shared": {
|
||
"permissions": "권한",
|
||
"menus": "관리자 메뉴",
|
||
"notification_definitions": "알림 정의",
|
||
"identity_policies": "본인인증 정책",
|
||
"identity_message_definitions": "본인인증 메시지 정의"
|
||
},
|
||
"no_tables": "삭제할 테이블이 없습니다.",
|
||
"no_storage": "삭제할 스토리지가 없습니다.",
|
||
"size_unknown": "알 수 없음",
|
||
"manual_install_title": "모듈 수동 설치",
|
||
"manual_install_description": "파일 업로드 또는 GitHub 저장소에서 모듈을 설치할 수 있습니다.",
|
||
"refresh_layouts_title": "레이아웃 갱신",
|
||
"refresh_layouts_confirm": "{{name}} 모듈의 레이아웃을 갱신하시겠습니까?",
|
||
"refresh_layouts_warning": "기존 레이아웃이 삭제되고 파일에서 다시 등록됩니다.",
|
||
"refresh_layouts_description": "모듈 파일에 포함된 레이아웃으로 데이터베이스의 레이아웃이 교체됩니다. 기존에 수정한 레이아웃 내용은 모두 삭제됩니다.",
|
||
"deactivate_warning_title": "모듈 비활성화 경고",
|
||
"deactivate_warning_message": "이 모듈에 의존하는 활성 확장(템플릿, 모듈, 플러그인)이 있습니다.",
|
||
"affected_templates": "다음 템플릿이 영향을 받습니다:",
|
||
"dependent_templates": "의존하는 템플릿",
|
||
"dependent_modules": "의존하는 모듈",
|
||
"dependent_plugins": "의존하는 플러그인",
|
||
"force_deactivate_description": "강제로 비활성화하면 해당 확장들이 정상적으로 동작하지 않을 수 있습니다.",
|
||
"confirm_deactivate": "그래도 비활성화",
|
||
"activate_warning_title": "모듈 활성화 경고",
|
||
"activate_warning_message": "이 모듈을 활성화하려면 필요한 의존성이 충족되어야 합니다.",
|
||
"missing_modules": "필요한 모듈",
|
||
"missing_plugins": "필요한 플러그인",
|
||
"force_activate_description": "강제로 활성화하면 모듈이 정상적으로 동작하지 않을 수 있습니다.",
|
||
"confirm_activate": "그래도 활성화",
|
||
"update_title": "모듈 업데이트 확인",
|
||
"update_confirm": "{{name}} 모듈을 업데이트하시겠습니까?",
|
||
"update_version_info": "{{from}} → {{to}}",
|
||
"update_source_github": "GitHub에서 다운로드",
|
||
"update_source_pending": "대기 중인 패키지에서 설치",
|
||
"update_source_bundled": "선탑재 패키지에서 설치",
|
||
"view_changelog": "변경사항 보기",
|
||
"changelog": "변경 내역",
|
||
"no_changelog": "변경 내역 정보가 없습니다.",
|
||
"update_changelog_title": "이 업데이트의 변경사항",
|
||
"layout_strategy_title": "레이아웃 처리 방식",
|
||
"layout_strategy_overwrite": "모두 교체",
|
||
"layout_strategy_overwrite_desc": "모든 레이아웃을 새 버전으로 교체합니다.",
|
||
"layout_strategy_keep": "수정 유지",
|
||
"layout_strategy_keep_desc": "사용자가 수정한 레이아웃을 유지합니다.",
|
||
"modified_layouts_warning": "수정된 레이아웃이 {{count}}개 있습니다. '모두 교체'를 선택하면 수정 내용이 삭제됩니다.",
|
||
"no_modified_layouts": "수정된 레이아웃이 없습니다.",
|
||
"modified_layouts_check_failed": "수정 여부를 확인하지 못했습니다. 네트워크 상태를 확인한 뒤 다시 시도하거나, 안전하게 '수정 유지'를 선택하세요.",
|
||
"modified_layouts_list_title": "유지될 수정 레이아웃 ({{count}}개)",
|
||
"modified_layouts_keep_notice": "위 레이아웃은 업데이트 후에도 현재 내용이 유지됩니다."
|
||
},
|
||
"tabs": {
|
||
"file_upload": "파일 업로드",
|
||
"github": "GitHub",
|
||
"file_label": "모듈 파일 (.zip)",
|
||
"no_file_selected": "파일이 선택되지 않음",
|
||
"selected_file": "선택된 파일: {{filename}}",
|
||
"file_requirements": "모듈 패키지는 반드시",
|
||
"file_structure_hint": "파일을 포함해야 하며, 그누보드7 모듈 표준 구조를 따라야 합니다.",
|
||
"github_url_label": "GitHub 저장소 URL",
|
||
"github_url_hint": "GitHub 저장소의 기본 브랜치에서 모듈을 다운로드합니다.",
|
||
"github_requirements": "루트 디렉토리에",
|
||
"github_public_only": "파일이 있어야 합니다."
|
||
},
|
||
"errors": {
|
||
"install_failed": "모듈 설치에 실패했습니다.",
|
||
"already_installed": "이미 설치된 모듈입니다. 기존 모듈을 제거한 후 다시 시도하세요.",
|
||
"invalid_file": "유효하지 않은 모듈 파일입니다.",
|
||
"github_url_invalid": "유효하지 않은 GitHub URL입니다."
|
||
}
|
||
},
|
||
"plugins": {
|
||
"page_title": "플러그인 관리",
|
||
"page_description": "시스템에 설치된 플러그인을 관리하고 새로운 플러그인을 설치할 수 있습니다.",
|
||
"title": "플러그인 관리",
|
||
"description": "시스템에 설치된 플러그인을 관리하고 새로운 플러그인을 설치할 수 있습니다.",
|
||
"search_placeholder": "플러그인 검색...",
|
||
"search": "검색",
|
||
"include_hidden": "숨김 항목 포함",
|
||
"manual_install": "수동 설치",
|
||
"marketplace": "마켓플레이스",
|
||
"vendor": "작성자: {{vendor}}",
|
||
"dependencies": "의존성: {{deps}}",
|
||
"dependencies_label": "의존성:",
|
||
"no_dependencies": "의존성: 없음",
|
||
"no_plugins": "설치된 플러그인이 없습니다.",
|
||
"pagination_info": "총 {{total}}개 중 {{from}}-{{to}}개 표시",
|
||
"update_available": "업데이트 필요",
|
||
"version_available": "(v{{version}} 사용 가능)",
|
||
"installing": "설치 중...",
|
||
"uninstalling": "제거 중...",
|
||
"activating": "활성화 중...",
|
||
"deactivating": "비활성화 중...",
|
||
"install_success": "플러그인이 성공적으로 설치되었습니다.",
|
||
"activate_success": "플러그인이 활성화되었습니다.",
|
||
"deactivate_success": "플러그인이 비활성화되었습니다.",
|
||
"uninstall_success": "플러그인이 제거되었습니다.",
|
||
"refresh_layouts_success": "플러그인 레이아웃이 갱신되었습니다.",
|
||
"refreshing_layouts": "갱신 중...",
|
||
"updating": "업데이트 중...",
|
||
"update_success": "플러그인이 성공적으로 업데이트되었습니다.",
|
||
"update_failed": "플러그인 업데이트에 실패했습니다.",
|
||
"check_updates_success": "업데이트 확인 완료 ({{count}}개 업데이트 가능)",
|
||
"check_updates_no_updates": "모든 플러그인이 최신 상태입니다.",
|
||
"status": {
|
||
"active": "활성화",
|
||
"inactive": "비활성화",
|
||
"not_installed": "미설치",
|
||
"installing": "설치 중",
|
||
"uninstalling": "제거 중",
|
||
"updating": "업데이트 중"
|
||
},
|
||
"actions": {
|
||
"install": "설치",
|
||
"uninstall": "제거",
|
||
"activate": "활성화",
|
||
"deactivate": "비활성화",
|
||
"update": "업데이트",
|
||
"check_updates": "업데이트 확인",
|
||
"view_detail": "상세정보",
|
||
"settings": "설정",
|
||
"refresh_layouts": "레이아웃 갱신",
|
||
"preview_manifest": "manifest 미리보기"
|
||
},
|
||
"modal": {
|
||
"preview": {
|
||
"title": "플러그인 manifest 미리보기",
|
||
"description": "ZIP 파일을 업로드하면 설치 전에 plugin.json 정보와 검증 결과를 확인할 수 있습니다.",
|
||
"run": "미리보기 실행",
|
||
"valid": "plugin.json 검증 통과 — 설치 가능합니다.",
|
||
"already_installed": "이미 설치됨: 현재 버전 {{version}}",
|
||
"failed": "manifest 미리보기에 실패했습니다."
|
||
}
|
||
},
|
||
"settings": {
|
||
"page_title": "플러그인 설정",
|
||
"page_description": "플러그인의 설정을 구성합니다.",
|
||
"validation_error": "입력값을 확인해주세요.",
|
||
"save_success": "설정이 저장되었습니다.",
|
||
"save_error": "설정 저장에 실패했습니다."
|
||
},
|
||
"back_to_list": "플러그인 목록으로",
|
||
"modals": {
|
||
"detail_title": "플러그인 정보",
|
||
"detail_subtitle": "{{name}}의 상세 정보를 확인할 수 있습니다.",
|
||
"basic_info": "기본 정보",
|
||
"field_name": "이름",
|
||
"field_version": "버전",
|
||
"field_description": "설명",
|
||
"field_vendor": "개발자",
|
||
"field_update_source": "업데이트 소스",
|
||
"field_license": "라이센스",
|
||
"field_status": "상태",
|
||
"dependencies": "의존성",
|
||
"required_core_version": "코어 요구 버전",
|
||
"required_modules": "의존 모듈",
|
||
"required_plugins": "의존 플러그인",
|
||
"no_required_core_version": "지정되지 않음",
|
||
"no_dependencies_required": "의존하는 확장이 없습니다.",
|
||
"dependency_required_version": "요구: {{version}}",
|
||
"dependency_installed_version": "설치: {{version}}",
|
||
"dependency_not_installed": "미설치",
|
||
"dependency_met": "충족",
|
||
"dependency_unmet_version": "버전 불일치",
|
||
"dependency_inactive": "비활성",
|
||
"permissions": "권한",
|
||
"permissions_description": "이 플러그인에서 등록하는 권한 목록입니다.",
|
||
"no_permissions": "등록되는 권한이 없습니다.",
|
||
"roles": "역할",
|
||
"roles_description": "이 플러그인에서 등록하는 역할 목록입니다.",
|
||
"no_roles": "등록되는 역할이 없습니다.",
|
||
"hooks": "훅",
|
||
"hooks_description": "이 플러그인에서 참조하는 훅의 목록입니다.",
|
||
"no_hooks": "참조하는 훅이 없습니다.",
|
||
"filters": "필터",
|
||
"filters_description": "이 플러그인에서 사용하는 필터의 목록입니다.",
|
||
"no_filters": "사용하는 필터가 없습니다.",
|
||
"supported_languages": "지원 언어",
|
||
"no_supported_languages": "지원 언어 정보가 없습니다.",
|
||
"cascade_dependencies_title": "함께 설치할 의존 확장",
|
||
"cascade_dependencies_hint": "본 확장이 의존하는 미설치 항목입니다. 체크 해제 시 해당 확장은 설치되지 않으며, 종속된 언어팩도 자동 비활성화됩니다.",
|
||
"cascade_language_packs_title": "함께 설치할 언어팩",
|
||
"cascade_language_packs_hint": "번들로 제공되는 언어팩 후보입니다. 체크된 항목만 본 설치와 함께 자동 설치됩니다.",
|
||
"cascade_lp_depends_on": "종속: {{target}}",
|
||
"install_title": "플러그인 설치 확인",
|
||
"install_confirm": "{{name}} 플러그인을 설치하시겠습니까?",
|
||
"install_description": "설치 후 플러그인을 활성화하면 기능을 사용할 수 있습니다.",
|
||
"vendor_mode_label": "Vendor 설치 방식",
|
||
"vendor_mode_hint": "Composer 사용 불가 환경에서는 '번들'을 선택하세요.",
|
||
"vendor_mode_auto": "자동 (권장)",
|
||
"vendor_mode_composer": "Composer 실행",
|
||
"vendor_mode_bundled": "번들 Vendor 사용",
|
||
"uninstall_title": "플러그인 제거 확인",
|
||
"uninstall_done_title": "플러그인 제거 완료",
|
||
"uninstall_confirm": "{{name}} 플러그인을 제거하시겠습니까?",
|
||
"uninstall_warning": "이 작업은 되돌릴 수 없습니다.",
|
||
"delete_data_option": "플러그인 데이터도 함께 삭제",
|
||
"delete_data_warning": "플러그인이 생성한 모든 데이터(설정, 로그 등)가 함께 삭제되며, 삭제된 데이터는 복구할 수 없습니다.",
|
||
"delete_data_info_title": "삭제될 데이터",
|
||
"tables_section": "데이터베이스 테이블",
|
||
"tables_total": "총 {{size}}",
|
||
"storage_section": "스토리지 디렉토리",
|
||
"storage_total": "총 {{size}}",
|
||
"vendor_section": "Composer 의존성",
|
||
"extension_directory_title": "삭제될 확장 디렉토리",
|
||
"extension_directory_section": "확장 디렉토리",
|
||
"preserved_title": "운영자 파일 사본 보관",
|
||
"preserved_desc": "제거하기 전에 custom/ 디렉토리의 사본을 아래 경로에 보관했습니다. 확장을 다시 설치한 뒤 custom/ 으로 옮기면 그대로 다시 쓸 수 있습니다.",
|
||
"shared_records_section": "공유 테이블 데이터",
|
||
"shared_records_count": "{{count}}건",
|
||
"shared": {
|
||
"permissions": "권한",
|
||
"menus": "관리자 메뉴",
|
||
"notification_definitions": "알림 정의",
|
||
"identity_policies": "본인인증 정책",
|
||
"identity_message_definitions": "본인인증 메시지 정의"
|
||
},
|
||
"no_tables": "삭제할 테이블이 없습니다.",
|
||
"no_storage": "삭제할 스토리지가 없습니다.",
|
||
"size_unknown": "알 수 없음",
|
||
"manual_install_title": "플러그인 수동 설치",
|
||
"manual_install_description": "파일 업로드 또는 GitHub 저장소에서 플러그인을 설치할 수 있습니다.",
|
||
"refresh_layouts_title": "레이아웃 갱신 확인",
|
||
"refresh_layouts_confirm": "{{name}} 플러그인의 레이아웃을 갱신하시겠습니까?",
|
||
"refresh_layouts_description": "플러그인의 레이아웃 파일을 다시 읽어 데이터베이스에 동기화합니다.",
|
||
"refresh_layouts_warning": "변경된 레이아웃은 업데이트되고, 삭제된 레이아웃은 데이터베이스에서도 삭제됩니다.",
|
||
"deactivate_warning_title": "플러그인 비활성화 경고",
|
||
"deactivate_warning_message": "이 플러그인에 의존하는 활성 확장(템플릿, 모듈, 플러그인)이 있습니다.",
|
||
"dependent_templates": "의존하는 템플릿",
|
||
"dependent_modules": "의존하는 모듈",
|
||
"dependent_plugins": "의존하는 플러그인",
|
||
"force_deactivate_description": "강제로 비활성화하면 해당 확장들이 정상적으로 동작하지 않을 수 있습니다.",
|
||
"confirm_deactivate": "그래도 비활성화",
|
||
"activate_warning_title": "플러그인 활성화 경고",
|
||
"activate_warning_message": "이 플러그인을 활성화하려면 필요한 의존성이 충족되어야 합니다.",
|
||
"missing_modules": "필요한 모듈",
|
||
"missing_plugins": "필요한 플러그인",
|
||
"force_activate_description": "강제로 활성화하면 플러그인이 정상적으로 동작하지 않을 수 있습니다.",
|
||
"confirm_activate": "그래도 활성화",
|
||
"update_title": "플러그인 업데이트 확인",
|
||
"update_confirm": "{{name}} 플러그인을 업데이트하시겠습니까?",
|
||
"update_version_info": "{{from}} → {{to}}",
|
||
"update_source_github": "GitHub에서 다운로드",
|
||
"update_source_pending": "대기 중인 패키지에서 설치",
|
||
"update_source_bundled": "선탑재 패키지에서 설치",
|
||
"view_changelog": "변경사항 보기",
|
||
"changelog": "변경 내역",
|
||
"no_changelog": "변경 내역 정보가 없습니다.",
|
||
"update_changelog_title": "이 업데이트의 변경사항",
|
||
"layout_strategy_title": "레이아웃 처리 방식",
|
||
"layout_strategy_overwrite": "모두 교체",
|
||
"layout_strategy_overwrite_desc": "모든 레이아웃을 새 버전으로 교체합니다.",
|
||
"layout_strategy_keep": "수정 유지",
|
||
"layout_strategy_keep_desc": "사용자가 수정한 레이아웃을 유지합니다.",
|
||
"modified_layouts_warning": "수정된 레이아웃이 {{count}}개 있습니다. '모두 교체'를 선택하면 수정 내용이 삭제됩니다.",
|
||
"no_modified_layouts": "수정된 레이아웃이 없습니다.",
|
||
"modified_layouts_check_failed": "수정 여부를 확인하지 못했습니다. 네트워크 상태를 확인한 뒤 다시 시도하거나, 안전하게 '수정 유지'를 선택하세요.",
|
||
"modified_layouts_list_title": "유지될 수정 레이아웃 ({{count}}개)",
|
||
"modified_layouts_keep_notice": "위 레이아웃은 업데이트 후에도 현재 내용이 유지됩니다."
|
||
},
|
||
"tabs": {
|
||
"file_upload": "파일 업로드",
|
||
"github": "GitHub",
|
||
"file_label": "플러그인 파일 (.zip)",
|
||
"no_file_selected": "파일이 선택되지 않음",
|
||
"selected_file": "선택된 파일: {{filename}}",
|
||
"file_requirements": "플러그인 패키지는 반드시",
|
||
"file_structure_hint": "파일을 포함해야 하며, 그누보드7 플러그인 표준 구조를 따라야 합니다.",
|
||
"github_url_label": "GitHub 저장소 URL",
|
||
"github_url_hint": "GitHub 저장소의 기본 브랜치에서 플러그인을 다운로드합니다.",
|
||
"github_requirements": "루트 디렉토리에",
|
||
"github_public_only": "파일이 있어야 합니다."
|
||
},
|
||
"errors": {
|
||
"install_failed": "플러그인 설치에 실패했습니다.",
|
||
"already_installed": "이미 설치된 플러그인입니다. 기존 플러그인을 제거한 후 다시 시도하세요.",
|
||
"invalid_file": "유효하지 않은 플러그인 파일입니다.",
|
||
"github_url_invalid": "유효하지 않은 GitHub URL입니다."
|
||
}
|
||
},
|
||
"menus": {
|
||
"page_title": "메뉴 관리",
|
||
"page_description": "관리자 사이드바 메뉴를 관리합니다.",
|
||
"title": "메뉴 관리",
|
||
"description": "관리자 사이드바 메뉴 구조를 관리하고 순서를 변경할 수 있습니다.",
|
||
"add_menu": "메뉴 추가",
|
||
"select_menu_hint": "왼쪽 목록에서 메뉴를 선택하세요",
|
||
"menu_list_title": "관리자 메뉴 목록",
|
||
"menu_info_title": "메뉴 정보",
|
||
"new_menu_title": "새 메뉴 추가",
|
||
"edit_menu_title": "메뉴 편집",
|
||
"info": {
|
||
"basic": "기본 정보",
|
||
"name": "메뉴명",
|
||
"slug": "슬러그",
|
||
"path": "경로",
|
||
"icon": "아이콘",
|
||
"order": "순서",
|
||
"status": "상태",
|
||
"active": "활성",
|
||
"inactive": "비활성",
|
||
"affiliation": "소속 정보",
|
||
"module": "모듈 정보",
|
||
"plugin": "플러그인 정보",
|
||
"hierarchy": "계층 정보",
|
||
"parent_menu": "부모 메뉴",
|
||
"child_menus": "자식 메뉴",
|
||
"no_children": "없음",
|
||
"children_count": "{{count}}개",
|
||
"top_level": "최상위 메뉴",
|
||
"none": "없음",
|
||
"access": "접근 권한",
|
||
"access_permission": "접근 권한",
|
||
"permission": "접근 권한",
|
||
"admin_only": "관리자",
|
||
"all_roles": "모든 역할",
|
||
"creator": "생성자",
|
||
"creator_info": "생성자 정보",
|
||
"created_by": "생성자",
|
||
"created_at": "생성일",
|
||
"updated_at": "수정일",
|
||
"meta": "메타 정보"
|
||
},
|
||
"form": {
|
||
"name": "메뉴명",
|
||
"name_placeholder": "메뉴명을 입력하세요",
|
||
"slug": "슬러그",
|
||
"slug_hint": "menu-slug",
|
||
"url": "경로",
|
||
"url_placeholder": "/admin/example",
|
||
"url_hint": "메뉴 클릭 시 이동할 경로를 입력하세요",
|
||
"icon": "아이콘",
|
||
"icon_placeholder": "아이콘 선택",
|
||
"icon_search_placeholder": "아이콘 검색...",
|
||
"icon_no_results": "검색 결과가 없습니다",
|
||
"parent": "부모 메뉴",
|
||
"parent_top_level": "최상위 메뉴",
|
||
"module": "모듈",
|
||
"module_readonly_hint": "모듈 기본 메뉴의 모듈은 변경할 수 없습니다.",
|
||
"custom_menu": "사용자 정의 메뉴",
|
||
"custom_menu_none": "선택 안 함",
|
||
"status": "상태",
|
||
"is_active": "활성화",
|
||
"validation_error": "입력 정보를 확인해주세요.",
|
||
"roles": "접근 역할",
|
||
"roles_placeholder": "역할을 선택하세요...",
|
||
"roles_no_options": "선택 가능한 역할이 없습니다",
|
||
"roles_hint": "이 메뉴에 접근할 수 있는 역할을 선택합니다. 선택하지 않으면 모든 역할이 접근할 수 있습니다."
|
||
},
|
||
"modals": {
|
||
"delete_title": "메뉴 삭제",
|
||
"delete_confirm": "이 메뉴를 삭제하시겠습니까?",
|
||
"delete_core_warning": "코어 메뉴는 삭제할 수 없습니다.",
|
||
"module_menu_notice": "모듈 기본 메뉴의 모듈은 변경할 수 없습니다."
|
||
},
|
||
"messages": {
|
||
"order_updated": "메뉴 순서가 변경되었습니다.",
|
||
"order_update_failed": "메뉴 순서 변경에 실패했습니다.",
|
||
"created": "메뉴가 생성되었습니다.",
|
||
"updated": "메뉴가 수정되었습니다.",
|
||
"deleted": "메뉴가 삭제되었습니다.",
|
||
"status_changed": "메뉴 상태가 변경되었습니다."
|
||
}
|
||
},
|
||
"roles": {
|
||
"page_title": "권한 관리",
|
||
"page_description": "역할(Role)과 권한(Permission)을 관리합니다.",
|
||
"title": "권한 관리",
|
||
"description": "역할(Role)과 권한(Permission)을 관리합니다.",
|
||
"refresh": "새로고침",
|
||
"add_role": "역할 추가",
|
||
"search_placeholder": "역할 검색...",
|
||
"pagination_info": "총 {{total}}개 중 {{from}}-{{to}}개 표시",
|
||
"columns": {
|
||
"name": "역할명",
|
||
"description": "설명",
|
||
"users_count": "사용자 수",
|
||
"permissions_count": "권한 수",
|
||
"status": "상태",
|
||
"created_at": "생성일"
|
||
},
|
||
"status": {
|
||
"active": "활성",
|
||
"inactive": "비활성"
|
||
},
|
||
"badges": {
|
||
"system": "시스템",
|
||
"core": "시스템",
|
||
"module": "모듈",
|
||
"plugin": "플러그인"
|
||
},
|
||
"actions": {
|
||
"clone": "복제"
|
||
},
|
||
"activate_success": "역할이 활성화되었습니다.",
|
||
"deactivate_success": "역할이 비활성화되었습니다.",
|
||
"toggle_status_failed": "역할 상태 변경에 실패했습니다.",
|
||
"form": {
|
||
"create_title": "역할 추가",
|
||
"create_description": "새로운 역할을 생성하고 권한을 설정합니다.",
|
||
"edit_title": "역할 수정",
|
||
"edit_description": "역할 정보와 권한을 수정합니다.",
|
||
"basic_info": "기본 정보",
|
||
"name": "역할명",
|
||
"name_placeholder": "예: 콘텐츠 관리자",
|
||
"identifier": "식별자",
|
||
"identifier_placeholder": "예: content_manager",
|
||
"identifier_hint": "소문자로 시작하며, 소문자, 숫자, 밑줄(_)만 사용 가능합니다.",
|
||
"identifier_readonly_hint": "식별자는 생성 후 변경할 수 없습니다.",
|
||
"description": "설명",
|
||
"description_placeholder": "역할에 대한 설명을 입력하세요",
|
||
"is_active": "역할 활성화",
|
||
"is_active_hint": "비활성화된 역할은 새로운 사용자에게 할당할 수 없습니다",
|
||
"permissions_section": "권한 설정",
|
||
"permissions_selected_suffix": "개 선택됨",
|
||
"permissions_hint": "이 역할에 부여할 권한을 선택하세요. 그룹을 클릭하여 펼치거나 접을 수 있습니다.",
|
||
"no_permissions_in_type": "등록된 권한이 없습니다."
|
||
},
|
||
"modals": {
|
||
"delete_title": "역할 삭제",
|
||
"delete_confirm": "이 역할을 삭제하시겠습니까? 이 역할이 할당된 사용자들은 해당 권한을 잃게 됩니다.",
|
||
"delete_success": "역할이 삭제되었습니다.",
|
||
"create_success": "역할이 생성되었습니다.",
|
||
"update_success": "역할이 수정되었습니다."
|
||
},
|
||
"errors": {
|
||
"system_role_delete": "시스템 역할은 삭제할 수 없습니다.",
|
||
"delete_failed": "역할 삭제에 실패했습니다."
|
||
}
|
||
},
|
||
"schedules": {
|
||
"page_title": "스케줄 관리",
|
||
"page_description": "시스템 예약 작업을 관리합니다.",
|
||
"title": "스케줄 관리",
|
||
"description": "시스템에 등록된 스케줄(크론탭, Job)을 관리합니다.",
|
||
"add_schedule": "스케줄 추가",
|
||
"register_schedule": "스케줄 등록",
|
||
"search_placeholder": "스케줄 이름으로 검색...",
|
||
"search_input_placeholder": "검색어를 입력하세요...",
|
||
"pagination_info": "총 {{total}}개 중 {{from}}-{{to}}개 표시",
|
||
"advanced_search": "상세검색",
|
||
"apply_filters": "필터 적용",
|
||
"reset_filters": "초기화",
|
||
"column_select": "컬럼 선택({{count}})",
|
||
"total_count": "총 {{count}}개",
|
||
"selected_count": "{{count}}개 선택됨",
|
||
"duration_display": "{{duration}} 소요",
|
||
"tabs": {
|
||
"schedules": "스케줄 작업",
|
||
"queue": "큐 모니터링"
|
||
},
|
||
"stats": {
|
||
"total": "전체",
|
||
"active": "활성화",
|
||
"success": "성공",
|
||
"failed": "실패"
|
||
},
|
||
"search_fields": {
|
||
"all": "전체",
|
||
"name": "작업명",
|
||
"command": "명령어",
|
||
"description": "설명"
|
||
},
|
||
"filters": {
|
||
"type": "작업유형",
|
||
"status": "상태",
|
||
"result": "실행 결과",
|
||
"last_result": "마지막 실행결과",
|
||
"all_types": "모든 유형",
|
||
"all_status": "모든 상태",
|
||
"all_results": "모든 결과",
|
||
"all": "전체",
|
||
"frequency": "실행주기",
|
||
"created_at": "등록일",
|
||
"start_date": "시작일",
|
||
"end_date": "종료일",
|
||
"without_overlapping": "중복실행 방지",
|
||
"run_in_maintenance": "점검모드 실행",
|
||
"module": "소속 모듈",
|
||
"yes": "예",
|
||
"no": "아니오",
|
||
"use": "사용",
|
||
"not_use": "미사용",
|
||
"allow": "허용",
|
||
"disallow": "비허용",
|
||
"preset": {
|
||
"today": "오늘",
|
||
"week": "일주일",
|
||
"month": "1개월",
|
||
"3months": "3개월",
|
||
"6months": "6개월",
|
||
"year": "1년"
|
||
}
|
||
},
|
||
"bulk": {
|
||
"status_change": "상태 변경",
|
||
"action_run": "작업 실행",
|
||
"apply": "일괄변경"
|
||
},
|
||
"sort": {
|
||
"created_at_desc": "등록일시 최근순",
|
||
"created_at_asc": "등록일시 오래된순",
|
||
"name_asc": "작업명 오름차순",
|
||
"name_desc": "작업명 내림차순",
|
||
"next_run_at_asc": "다음실행 빠른순",
|
||
"next_run_at_desc": "다음실행 늦은순"
|
||
},
|
||
"per_page": {
|
||
"10": "10개",
|
||
"20": "20개",
|
||
"50": "50개",
|
||
"100": "100개"
|
||
},
|
||
"columns": {
|
||
"name": "작업명",
|
||
"type": "작업유형",
|
||
"command": "명령",
|
||
"frequency": "실행주기",
|
||
"last_result": "마지막 실행결과",
|
||
"last_run": "마지막 실행",
|
||
"next_run": "다음 실행 예정",
|
||
"status": "상태"
|
||
},
|
||
"type": {
|
||
"artisan": "Artisan",
|
||
"shell": "Shell",
|
||
"url": "URL"
|
||
},
|
||
"frequency": {
|
||
"everyMinute": "매분",
|
||
"hourly": "매시간",
|
||
"daily": "매일",
|
||
"weekly": "매주",
|
||
"monthly": "매월",
|
||
"custom": "사용자 정의"
|
||
},
|
||
"result": {
|
||
"success": "성공",
|
||
"failed": "실패",
|
||
"running": "실행 중",
|
||
"never": "실행 안됨"
|
||
},
|
||
"status": {
|
||
"active": "활성화",
|
||
"inactive": "비활성화"
|
||
},
|
||
"trigger_type": {
|
||
"scheduled": "예약 실행",
|
||
"manual": "수동 실행"
|
||
},
|
||
"actions": {
|
||
"run": "즉시 실행",
|
||
"history": "실행 이력",
|
||
"duplicate": "복제"
|
||
},
|
||
"form": {
|
||
"name": "이름",
|
||
"name_placeholder": "스케줄 이름을 입력하세요",
|
||
"description": "설명",
|
||
"description_placeholder": "스케줄에 대한 설명을 입력하세요",
|
||
"type": "작업 유형",
|
||
"command": "명령",
|
||
"command_placeholder": "실행할 명령을 입력하세요",
|
||
"command_help": "Artisan 커맨드, 쉘 명령 또는 URL을 입력하세요",
|
||
"frequency": "실행 주기",
|
||
"expression": "Cron 표현식",
|
||
"expression_help": "예: * * * * * (매분), 0 0 * * * (매일 자정)",
|
||
"timeout": "타임아웃 (초)",
|
||
"timeout_help": "최대 실행 시간 (1-86400초)",
|
||
"without_overlapping": "중복 실행 방지",
|
||
"without_overlapping_help": "이전 작업이 실행 중일 때 새 작업을 건너뜁니다",
|
||
"run_in_maintenance": "점검 모드에서 실행",
|
||
"run_in_maintenance_help": "시스템 점검 모드에서도 작업을 실행합니다",
|
||
"is_active": "활성화",
|
||
"is_active_help": "비활성화하면 예약 실행되지 않습니다"
|
||
},
|
||
"modals": {
|
||
"create_title": "스케줄 추가",
|
||
"edit_title": "스케줄 수정",
|
||
"delete_title": "스케줄 삭제",
|
||
"delete_confirm": "이 스케줄을 삭제하시겠습니까? 관련된 실행 이력도 함께 삭제됩니다.",
|
||
"run_title": "스케줄 즉시 실행",
|
||
"run_confirm": "이 스케줄을 지금 실행하시겠습니까?",
|
||
"run_duration": "실행 시간: {{duration}}",
|
||
"output": "출력",
|
||
"running": "실행 중...",
|
||
"history_title": "실행 이력",
|
||
"no_history": "실행 이력이 없습니다.",
|
||
"duplicate_title": "스케줄 복제",
|
||
"duplicate_confirm": "이 스케줄을 복제하시겠습니까?",
|
||
"duplicate_note": "복제된 스케줄은 비활성화 상태로 생성됩니다.",
|
||
"duplicating": "복제 중..."
|
||
},
|
||
"history": {
|
||
"duration": "소요 시간: {{duration}}",
|
||
"memory": "메모리: {{memory}}",
|
||
"triggered_by": "실행자: {{user}}"
|
||
},
|
||
"messages": {
|
||
"create_success": "스케줄이 생성되었습니다.",
|
||
"update_success": "스케줄이 수정되었습니다.",
|
||
"delete_success": "스케줄이 삭제되었습니다.",
|
||
"duplicate_success": "스케줄이 복제되었습니다.",
|
||
"status_updated": "스케줄 상태가 변경되었습니다.",
|
||
"bulk_status_updated": "선택한 스케줄의 상태가 일괄 변경되었습니다."
|
||
},
|
||
"errors": {
|
||
"save_failed": "스케줄 저장에 실패했습니다.",
|
||
"delete_failed": "스케줄 삭제에 실패했습니다.",
|
||
"run_failed": "스케줄 실행에 실패했습니다.",
|
||
"duplicate_failed": "스케줄 복제에 실패했습니다.",
|
||
"status_update_failed": "상태 변경에 실패했습니다.",
|
||
"bulk_status_failed": "일괄 상태 변경에 실패했습니다."
|
||
}
|
||
},
|
||
"settings": {
|
||
"page_title": "환경설정",
|
||
"page_description": "시스템 환경을 설정합니다.",
|
||
"readonly_notice": "이 설정은 읽기 전용입니다. 수정 권한이 필요한 경우 관리자에게 문의하세요.",
|
||
"tabs": {
|
||
"general": "일반",
|
||
"mail": "메일",
|
||
"upload": "업로드",
|
||
"seo": "SEO",
|
||
"security": "보안",
|
||
"drivers": "드라이버",
|
||
"advanced": "고급",
|
||
"notification_definitions": "알림 설정",
|
||
"language_packs": "언어팩",
|
||
"identity": "본인인증",
|
||
"info": "정보"
|
||
},
|
||
"general": {
|
||
"site_info": "사이트 정보",
|
||
"site_info_desc": "기본 사이트 정보를 설정합니다.",
|
||
"site_name": "사이트 이름",
|
||
"site_url": "사이트 URL",
|
||
"site_description": "사이트 설명",
|
||
"site_description_placeholder": "사이트에 대한 간단한 설명을 입력하세요.",
|
||
"admin_email": "관리자 이메일",
|
||
"site_logo": "사이트 타이틀 이미지",
|
||
"site_logo_desc": "헤더에 표시될 로고 이미지입니다.",
|
||
"upload_drag_drop": "클릭하거나 파일을 드래그하여 업로드",
|
||
"max_size": "최대",
|
||
"localization": "지역화",
|
||
"localization_desc": "언어 및 시간대를 설정합니다.",
|
||
"default_language": "기본 언어",
|
||
"select_language": "언어를 선택하세요",
|
||
"timezone": "시간대",
|
||
"select_timezone": "시간대를 선택하세요",
|
||
"asset_url_mode": "에셋 파일 서빙 방식",
|
||
"asset_url_mode_help": "서버 설정에 따라 자동으로 선택됩니다. 화면이 정상적으로 보인다면 바꾸지 마세요.",
|
||
"asset_url_mode_extension": "확장자 사용 (권장)",
|
||
"asset_url_mode_extensionless": "확장자 미사용",
|
||
"asset_url_mode_detect": "자동 감지",
|
||
"asset_url_mode_detecting": "에셋 파일 서빙 방식을 감지하는 중입니다...",
|
||
"asset_url_mode_detect_extension": "확장자를 사용할 수 있는 환경입니다.",
|
||
"asset_url_mode_detect_extensionless": "정적 파일 최적화 규칙(nginx의 location ~* \\.(js|css|json|png|jpg|jpeg|gif|ico|svg|woff2?)$ 블록 등)이 확장자 주소를 가로채고 있습니다. '확장자 미사용'으로 바꾼 뒤 저장하세요.",
|
||
"asset_url_mode_detect_unavailable": "감지에 실패했습니다. 서버가 응답하지 않아 방식을 판정할 수 없습니다."
|
||
},
|
||
"mail": {
|
||
"smtp_settings": "SMTP 설정",
|
||
"smtp_settings_desc": "이메일 발송을 위한 SMTP 서버를 설정합니다.",
|
||
"mailer": "메일러",
|
||
"select_mailer": "메일러를 선택하세요",
|
||
"host": "SMTP 호스트",
|
||
"port": "포트",
|
||
"username": "사용자명",
|
||
"password": "비밀번호",
|
||
"encryption": "암호화",
|
||
"select_encryption": "암호화 방식을 선택하세요",
|
||
"none": "없음",
|
||
"from_address": "발신자 이메일",
|
||
"from_name": "발신자 이름",
|
||
"test_mail": "테스트 메일",
|
||
"test_mail_desc": "설정이 올바른지 확인하기 위해 테스트 메일을 발송합니다.",
|
||
"test_email_placeholder": "테스트 메일을 받을 이메일 주소",
|
||
"send_test": "테스트 발송",
|
||
"test_mail_success": "테스트 메일이 발송되었습니다.",
|
||
"test_mail_failed": "테스트 메일 발송에 실패했습니다.",
|
||
"test_mail_subject_label": "제목: ",
|
||
"test_mail_body_label": "내용: ",
|
||
"mailgun_settings": "Mailgun 설정",
|
||
"mailgun_settings_desc": "Mailgun API를 통해 이메일을 발송합니다.",
|
||
"ses_settings": "SES (Amazon) 설정",
|
||
"ses_settings_desc": "Amazon SES를 통해 이메일을 발송합니다.",
|
||
"mailgun_domain": "Mailgun 도메인",
|
||
"mailgun_secret": "Mailgun API 키",
|
||
"mailgun_endpoint": "Mailgun 엔드포인트",
|
||
"mailgun_endpoint_placeholder": "api.mailgun.net",
|
||
"ses_key": "AWS 액세스 키",
|
||
"ses_secret": "AWS 시크릿 키",
|
||
"ses_region": "AWS 리전",
|
||
"select_ses_region": "AWS 리전을 선택하세요"
|
||
},
|
||
"upload": {
|
||
"file_settings": "파일 업로드 설정",
|
||
"file_settings_desc": "파일 업로드에 관련된 기본 설정을 관리합니다.",
|
||
"max_file_size": "최대 파일 크기",
|
||
"allowed_extensions": "허용 확장자",
|
||
"allowed_extensions_hint": "허용할 파일 확장자를 쉼표로 구분하여 입력하세요.",
|
||
"image_settings": "이미지 설정",
|
||
"image_settings_desc": "업로드되는 이미지의 자동 리사이즈 및 품질 설정입니다.",
|
||
"image_max_width": "최대 너비",
|
||
"image_max_height": "최대 높이",
|
||
"image_quality": "이미지 품질",
|
||
"image_quality_hint": "1~100 사이의 값을 입력하세요. 높을수록 품질이 좋습니다.",
|
||
"orphan_cleanup": "고아 첨부 정리",
|
||
"orphan_cleanup_desc": "폼을 저장하지 않고 나가서 소유자 없이 남은 첨부파일을 정리합니다.",
|
||
"orphan_cleanup_enabled": "고아 첨부 자동 정리",
|
||
"orphan_cleanup_enabled_hint": "기본 꺼짐 — 운영자가 직접 켜야 동작합니다. 켜면 보존기간이 지난 고아 첨부의 파일과 기록을 매일 삭제합니다. 사이트 로고처럼 현재 사용 중인 첨부는 삭제하지 않습니다.",
|
||
"orphan_retention_days": "고아 첨부 보존기간 (일)",
|
||
"orphan_retention_days_hint": "업로드 후 이 기간이 지난 고아 첨부만 정리 대상이 됩니다. 폼 작성 중 이탈을 감안해 넉넉히 잡으세요. (1 ~ 3650 일)"
|
||
},
|
||
"seo": {
|
||
"meta_settings": "메타 태그 설정",
|
||
"meta_settings_desc": "검색엔진 최적화를 위한 메타 태그를 설정합니다.",
|
||
"meta_title_suffix": "타이틀 접미사",
|
||
"meta_title_suffix_hint": "모든 페이지 타이틀 뒤에 붙는 문구입니다. (예: ' | 그누보드7')",
|
||
"meta_description": "기본 메타 설명",
|
||
"meta_description_placeholder": "사이트의 기본 메타 설명을 입력하세요.",
|
||
"meta_description_hint": "검색 결과에 표시되는 설명입니다. 최대 160자를 권장합니다.",
|
||
"meta_keywords": "메타 키워드",
|
||
"meta_keywords_hint": "쉼표로 구분하여 입력하세요.",
|
||
"generator_settings": "Generator 메타 태그",
|
||
"generator_settings_desc": "CMS 식별을 위한 generator 메타 태그입니다. W3Techs 등 통계 도구가 이 값으로 사이트를 그누보드7로 분류합니다.",
|
||
"generator_enabled": "Generator 태그 표시",
|
||
"generator_enabled_desc": "비활성화 시 메타 태그 자체를 출력하지 않습니다.",
|
||
"generator_content": "Generator 내용",
|
||
"generator_content_hint": "비워두면 \"GnuBoard7 {버전}\" 이 자동 적용됩니다. 버전 노출을 원치 않으면 \"GnuBoard7\" 만 입력하세요.",
|
||
"og_twitter_settings": "OG / Twitter 카드 기본값",
|
||
"og_twitter_settings_desc": "페이스북·슬랙·트위터 등 링크 미리보기에 사용할 기본 메타 정보입니다. 레이아웃이 페이지별로 명시한 값이 있으면 그것이 우선합니다.",
|
||
"og_default_site_name": "OG 사이트 이름 (선택 재정의)",
|
||
"og_default_site_name_hint": "기본값은 일반 설정의 사이트 이름입니다. 공유 미리보기(og:site_name)에 다른 이름을 노출하려는 경우에만 입력하세요. 비워두면 일반 설정의 사이트 이름을 그대로 따릅니다.",
|
||
"og_image_default_width": "OG 이미지 기본 가로 (px)",
|
||
"og_image_default_height": "OG 이미지 기본 세로 (px)",
|
||
"og_image_default_size_hint": "썸네일 실제 크기를 모르는 경우의 기본값입니다. 페이스북은 권장 1200×630, 최소 200×200.",
|
||
"og_image_default": "기본 공유 이미지",
|
||
"og_image_default_desc": "화면별 공유 이미지가 없을 때 사용할 사이트 기본 이미지입니다. 링크 공유 시 미리보기 카드에 표시됩니다.",
|
||
"twitter_default_card": "Twitter 카드 기본 타입",
|
||
"twitter_default_card_hint": "이미지가 큰 카드는 summary_large_image, 작은 카드는 summary 권장.",
|
||
"twitter_default_site": "Twitter 사이트 핸들",
|
||
"twitter_default_site_hint": "사이트의 트위터 계정 핸들 (예: @gnuboard). 미입력 시 출력 생략.",
|
||
"analytics_settings": "애널리틱스 설정",
|
||
"analytics_settings_desc": "웹사이트 분석 도구를 연동합니다.",
|
||
"google_analytics_id": "Google Analytics ID",
|
||
"google_analytics_id_hint": "GA4 측정 ID (G-XXXXXXXXXX) 또는 UA 추적 ID (UA-XXXXX-X)",
|
||
"verification_settings": "사이트 소유권 확인",
|
||
"verification_settings_desc": "검색엔진의 사이트 소유권 확인 코드를 입력합니다.",
|
||
"google_site_verification": "Google 사이트 확인",
|
||
"naver_site_verification": "네이버 사이트 확인",
|
||
"bot_settings": "봇 감지 설정",
|
||
"bot_settings_desc": "검색 봇 감지 및 SEO 페이지 생성 관련 설정입니다.",
|
||
"bot_detection_enabled": "봇 감지 활성화",
|
||
"bot_detection_enabled_desc": "검색 봇을 감지하여 SEO 최적화된 HTML을 제공합니다.",
|
||
"bot_detection_library_enabled": "봇 감지 라이브러리 사용",
|
||
"bot_detection_library_enabled_desc": "비활성 시 아래 \"추가 봇 패턴\" 목록만으로 봇을 감지합니다.",
|
||
"bot_library_notice_title": "검색 로봇 자동 감지 활성화",
|
||
"bot_library_notice_body": "검색엔진·링크 미리보기·AI 봇 등 약 1,000종을 자동으로 감지합니다. 슬랙·카카오톡·페이스북 등에 링크를 붙여넣으면 제목·설명·이미지 미리보기가 즉시 표시됩니다. 아래 \"추가 봇 패턴\" 필드에는 자동 감지 목록에 없는 봇이 있을 때만 추가하세요.",
|
||
"bot_user_agents": "추가 봇 패턴",
|
||
"bot_user_agents_hint": "User-Agent 부분 문자열(대소문자 무시) — 라이브러리 기본 감지에 추가로 봇으로 처리할 패턴을 입력합니다.",
|
||
"bot_user_agents_placeholder": "User-Agent 입력 후 Enter",
|
||
"seo_cache_settings": "SEO 캐시 설정",
|
||
"seo_cache_settings_desc": "SEO 페이지 캐시 관련 설정입니다.",
|
||
"cache_enabled": "SEO 캐시 활성화",
|
||
"cache_enabled_desc": "SEO 페이지를 캐시하여 응답 속도를 향상시킵니다. 지정하지 않으면 고급 설정의 값을 따릅니다.",
|
||
"cache_ttl": "캐시 유지 시간 (초)",
|
||
"cache_ttl_hint": "비워두면 고급 설정의 SEO 캐시 시간을 따릅니다. 값을 넣으면 이 화면의 값이 우선합니다 — 최소 60초, 최대 86400초 (24시간)",
|
||
"sitemap_settings": "Sitemap 설정",
|
||
"sitemap_settings_desc": "sitemap.xml 자동 생성 관련 설정입니다.",
|
||
"sitemap_enabled": "Sitemap 생성 활성화",
|
||
"sitemap_enabled_desc": "sitemap.xml을 자동으로 생성하여 검색엔진에 제공합니다.",
|
||
"sitemap_schedule": "생성 주기",
|
||
"sitemap_schedule_hourly": "매시간",
|
||
"sitemap_schedule_daily": "매일",
|
||
"sitemap_schedule_weekly": "매주",
|
||
"sitemap_schedule_time": "생성 시각",
|
||
"sitemap_schedule_time_hint": "HH:mm 형식으로 입력하세요. (예: 02:00)",
|
||
"sitemap_cache_ttl": "Sitemap 캐시 유지 시간 (초)",
|
||
"sitemap_cache_ttl_hint": "비워두면 고급 설정의 Sitemap 캐시 시간을 따릅니다. 값을 넣으면 이 화면의 값이 우선합니다 — 최소 3600초 (1시간), 최대 604800초 (7일)",
|
||
"sitemap_last_updated_at": "마지막 생성",
|
||
"sitemap_manual_update": "지금 생성",
|
||
"sitemap_updating": "시작하는 중...",
|
||
"sitemap_update_success": "Sitemap 재생성을 시작했습니다. 완료까지 시간이 걸릴 수 있습니다.",
|
||
"sitemap_update_failed": "Sitemap 재생성을 시작하지 못했습니다.",
|
||
"sitemap_urls_per_file": "Sitemap 파일당 URL 수",
|
||
"sitemap_urls_per_file_hint": "URL 이 이 수를 넘으면 sitemap 파일이 여러 개로 나뉘고 색인 파일이 함께 만들어집니다 — 최소 1000개, 최대 50000개 (검색엔진 규격 상한)",
|
||
"sitemap_gzip": "Sitemap 압축 (gzip)",
|
||
"sitemap_gzip_desc": "나뉜 sitemap 파일을 압축해 전송량을 줄입니다. 색인 파일은 압축하지 않습니다.",
|
||
"sitemap_hreflang_enabled": "다국어 대체 링크 (hreflang)",
|
||
"sitemap_hreflang_enabled_desc": "다국어 사이트에서 URL 마다 각 언어 버전을 가리키는 hreflang 대체 링크를 넣습니다. 끄면 링크를 생략해 sitemap 크기를 줄입니다.",
|
||
"sitemap_regenerating": "생성 중…",
|
||
"sitemap_progress": "생성 진행 상황",
|
||
"sitemap_status_queued": "대기 중",
|
||
"sitemap_status_running": "생성 중",
|
||
"sitemap_status_writing": "파일 작성 중",
|
||
"sitemap_status_completed": "완료",
|
||
"sitemap_status_failed": "실패",
|
||
"sitemap_progress_phase": "현재 처리 중: {{phase}}",
|
||
"sitemap_progress_urls": "누적 URL: {{count}}개",
|
||
"sitemap_realtime_connected": "실시간으로 연결되어 있습니다.",
|
||
"sitemap_polling": "진행 상황을 주기적으로 확인하고 있습니다."
|
||
},
|
||
"security": {
|
||
"title": "보안 설정",
|
||
"desc": "사이트 보안 관련 설정을 관리합니다.",
|
||
"force_https": "HTTPS 강제 적용",
|
||
"force_https_desc": "모든 연결을 HTTPS로 강제합니다.",
|
||
"allow_internal_outbound_urls": "내부 네트워크 주소 호출 허용",
|
||
"allow_internal_outbound_urls_desc": "외부 API 연동·스케줄 URL 호출 등에서 사설 IP나 localhost 같은 내부 주소를 사용할 수 있게 합니다. 사내 서버를 호출해야 할 때만 켜세요. 켜면 서버가 내부망으로 요청을 보낼 수 있게 되므로 기본값은 꺼짐입니다.",
|
||
"login_attempt_limit": "로그인 시도 제한",
|
||
"login_attempt_limit_desc": "일정 횟수 이상 로그인 실패 시 계정을 잠급니다.",
|
||
"auth_token_lifetime": "인증 토큰 유지시간 (분)",
|
||
"max_login_attempts": "최대 로그인 시도 횟수",
|
||
"login_lockout_time_full": "로그인 시도 횟수 초과시 차단 시간 (분)",
|
||
"zero_means_unlimited": "0을 입력하면 무한대로 설정됩니다.",
|
||
"app_key": "어플리케이션 키 관리",
|
||
"app_key_desc": "암호화에 사용되는 어플리케이션 키를 관리합니다.",
|
||
"current_app_key": "현재 키",
|
||
"regenerate_key": "키 재생성",
|
||
"app_key_warning": "키를 변경하면 기존 암호화된 데이터에 접근할 수 없게 될 수 있습니다.",
|
||
"password_min_length": "비밀번호 최소 길이",
|
||
"password_min_length_hint": "회원가입·비밀번호 변경·재설정에 적용됩니다. 로그인에는 적용되지 않습니다(기존 비밀번호로 로그인할 수 없게 되는 것을 막기 위함).",
|
||
"require_password_special_char": "특수문자 필수",
|
||
"require_password_special_char_label": "비밀번호에 특수문자를 반드시 포함",
|
||
"require_password_special_char_hint": "켜면 새로 설정하는 비밀번호에 특수문자가 최소 1개 필요합니다.",
|
||
"two_factor_auth": "2단계 인증",
|
||
"two_factor_auth_label": "로그인 시 인증번호를 한 번 더 확인",
|
||
"two_factor_auth_hint": "켜면 비밀번호 확인 뒤 가입 메일로 인증번호를 보내고, 그 번호를 입력해야 로그인이 완료됩니다.",
|
||
"ip_throttle_floor_hint": "IP 단위 요청 제한은 이 값의 6배로 적용되며, 분당 최소 30회는 항상 보장됩니다."
|
||
},
|
||
"identity": {
|
||
"sub_tabs": {
|
||
"basic": "기본",
|
||
"providers": "프로바이더",
|
||
"policies": "정책 관리",
|
||
"messages": "메시지 템플릿"
|
||
},
|
||
"messages": {
|
||
"title": "본인인증 메시지 템플릿",
|
||
"intro": "본인인증 메일에 사용할 제목과 본문을 직접 편집합니다. 한국어/영어를 모두 입력할 수 있고, 언제든 기본값으로 되돌릴 수 있습니다. 운영자가 추가한 정책에는 별도 메시지를 묶어 등록할 수 있습니다.",
|
||
"empty": "등록된 메시지 정의가 없습니다.",
|
||
"edit": "편집",
|
||
"btn_add_definition": "정의 추가",
|
||
"btn_reset": "기본값 복원",
|
||
"btn_delete": "삭제",
|
||
"status_active": "활성",
|
||
"status_inactive": "비활성",
|
||
"default_badge": "기본",
|
||
"body_preview": "본문 미리보기",
|
||
"total_count": "총 {count}건",
|
||
"per_page_label": "페이지당",
|
||
"channels": {
|
||
"mail": "메일"
|
||
},
|
||
"toggle_success": "메시지 정의 활성 상태가 변경되었습니다.",
|
||
"toggle_failed": "활성 상태 변경에 실패했습니다.",
|
||
"badges": {
|
||
"default": "기본값",
|
||
"customized": "사용자 수정"
|
||
},
|
||
"add_modal": {
|
||
"title": "메시지 정의 추가",
|
||
"errors_title": "입력 오류",
|
||
"provider": "프로바이더",
|
||
"scope_type": "범위 유형",
|
||
"policy_key": "정책 키",
|
||
"policy_key_placeholder": "운영자 정책을 선택하세요",
|
||
"policy_empty": "운영자 정책이 없습니다. 정책 탭에서 먼저 등록해 주세요.",
|
||
"name": "이름",
|
||
"subject": "제목",
|
||
"body": "본문",
|
||
"variables_title": "사용 가능한 변수",
|
||
"save_success": "메시지 정의가 추가되었습니다.",
|
||
"save_failed": "메시지 정의 추가에 실패했습니다."
|
||
},
|
||
"delete_modal": {
|
||
"title": "메시지 정의 삭제",
|
||
"target_label": "대상",
|
||
"confirm_message": "이 메시지 정의를 삭제하시겠습니까?",
|
||
"warning_message": "삭제하면 연결된 모든 채널 템플릿이 함께 제거됩니다. 이 작업은 되돌릴 수 없습니다.",
|
||
"btn_confirm": "삭제",
|
||
"btn_confirming": "삭제 중...",
|
||
"delete_success": "메시지 정의가 삭제되었습니다.",
|
||
"delete_failed": "메시지 정의 삭제에 실패했습니다."
|
||
},
|
||
"reset_modal": {
|
||
"title": "기본값 복원",
|
||
"target_label": "대상",
|
||
"confirm_message": "이 메시지 정의의 모든 채널 템플릿을 시드 기본값으로 복원하시겠습니까?",
|
||
"warning_message": "운영자 수정 내용이 모두 사라지며, 이 작업은 되돌릴 수 없습니다.",
|
||
"btn_confirm": "복원",
|
||
"btn_confirming": "복원 중...",
|
||
"reset_success": "메시지 정의가 기본값으로 복원되었습니다.",
|
||
"reset_failed": "기본값 복원에 실패했습니다."
|
||
},
|
||
"modal": {
|
||
"title": "메시지 템플릿 편집",
|
||
"errors_title": "입력 오류",
|
||
"variables_title": "사용 가능한 변수",
|
||
"subject": "제목",
|
||
"body": "본문",
|
||
"reset": "기본값으로 복원",
|
||
"reset_confirm": "운영자가 수정한 내용이 모두 시드 기본값으로 복원됩니다. 계속하시겠습니까?",
|
||
"reset_success": "기본값으로 복원되었습니다.",
|
||
"reset_failed": "복원에 실패했습니다.",
|
||
"save_success": "메시지 템플릿이 저장되었습니다.",
|
||
"save_failed": "저장에 실패했습니다.",
|
||
"preview": "미리보기",
|
||
"preview_failed": "미리보기를 불러오지 못했습니다.",
|
||
"subject_label": "제목",
|
||
"body_label": "본문"
|
||
}
|
||
},
|
||
"basic": {
|
||
"title": "기본 설정",
|
||
"desc": "본인인증 인프라의 기본 동작을 설정합니다. 정책별 활성화·강제 시점은 정책 관리 탭에서 설정합니다.",
|
||
"default_provider": "기본 프로바이더",
|
||
"default_provider_desc": "Purpose별로 지정되지 않은 경우 사용할 기본 프로바이더입니다.",
|
||
"challenge_ttl_minutes": "Challenge 만료 시간 (분)",
|
||
"challenge_ttl_desc": "발급된 인증 코드/링크의 유효시간입니다.",
|
||
"max_attempts": "최대 시도 횟수",
|
||
"max_attempts_desc": "연속 실패 시 해당 challenge 가 잠깁니다. 재전송이 필요합니다."
|
||
},
|
||
"purposes": {
|
||
"title": "목적별 프로바이더",
|
||
"desc": "본인인증 목적(Purpose)별로 사용할 프로바이더를 개별 지정할 수 있습니다. 미지정 시 기본 프로바이더가 사용됩니다.",
|
||
"use_default": "(기본 프로바이더 사용)",
|
||
"empty": "등록된 Purpose가 없습니다."
|
||
},
|
||
"providers": {
|
||
"title": "프로바이더 상세",
|
||
"desc": "현재 등록된 프로바이더 목록입니다. 플러그인으로 확장 가능합니다.",
|
||
"available": "사용 가능",
|
||
"unavailable": "사용 불가",
|
||
"empty": "등록된 프로바이더가 없습니다."
|
||
},
|
||
"policy_link": {
|
||
"title": "정책 관리",
|
||
"desc": "라우트/훅 단위로 IDV 강제 정책을 관리합니다.",
|
||
"button": "정책 관리 이동"
|
||
},
|
||
"logs_link": {
|
||
"title": "인증 이력",
|
||
"desc": "challenge 요청·검증·만료 이력을 조회합니다.",
|
||
"button": "이력 보기"
|
||
}
|
||
},
|
||
"drivers": {
|
||
"common": {
|
||
"optional": "선택사항",
|
||
"unavailable_saved_value_prefix": "저장된 값 ",
|
||
"unavailable_saved_value_suffix": " 은(는) 현재 사용할 수 없습니다. 사용 가능한 값을 선택해 저장하세요."
|
||
},
|
||
"storage": {
|
||
"title": "파일 스토리지",
|
||
"desc": "파일 저장소 드라이버를 설정합니다.",
|
||
"driver": "스토리지 드라이버",
|
||
"options": {
|
||
"local": "로컬 파일시스템",
|
||
"s3": "Amazon S3"
|
||
},
|
||
"s3_bucket": "S3 버킷",
|
||
"s3_region": "S3 리전",
|
||
"s3_region_desc": "AWS 리전 코드 또는 S3 호환 스토리지의 리전 값을 입력하세요. (예: ap-northeast-2, Cloudflare R2 는 auto)",
|
||
"s3_access_key": "Access Key",
|
||
"s3_secret_key": "Secret Key",
|
||
"s3_endpoint": "엔드포인트 URL",
|
||
"s3_endpoint_desc": "S3 호환 스토리지(Cloudflare R2, MinIO 등)의 API 주소입니다. AWS S3 는 비워 둡니다.",
|
||
"s3_use_path_style": "Path-style 주소 사용",
|
||
"s3_use_path_style_desc": "MinIO 등 path-style 주소 전용 스토리지에서 켭니다.",
|
||
"s3_url": "S3 URL (공개 URL)",
|
||
"s3_url_desc": "파일 공개 URL 생성에 쓰는 CDN/커스텀 도메인입니다. API 요청 주소는 엔드포인트 URL에 입력하세요."
|
||
},
|
||
"public_asset": {
|
||
"title": "공개 자산 스토리지",
|
||
"desc": "완전 공개 자산(상품·카테고리·리뷰·에디터 이미지 등)의 직접 URL 서빙 디스크를 설정합니다. 사용 안 함이면 기존 스트리밍 방식으로 동작합니다.",
|
||
"disk": "디스크",
|
||
"s3_help": "S3 선택 시 위 파일 스토리지 카드의 S3 URL(CDN 도메인) 설정이 필요합니다. 미설정 시 스트리밍으로 동작합니다."
|
||
},
|
||
"cache": {
|
||
"title": "캐시",
|
||
"desc": "애플리케이션 캐시 드라이버를 설정합니다.",
|
||
"driver": "캐시 드라이버",
|
||
"options": {
|
||
"file": "파일",
|
||
"redis": "Redis",
|
||
"memcached": "Memcached"
|
||
},
|
||
"redis_host": "Redis 호스트",
|
||
"redis_port": "Redis 포트",
|
||
"redis_password": "Redis 비밀번호",
|
||
"redis_database": "Redis 데이터베이스",
|
||
"memcached_host": "Memcached 호스트",
|
||
"memcached_port": "Memcached 포트"
|
||
},
|
||
"session": {
|
||
"title": "세션",
|
||
"desc": "사용자 세션 저장 방식을 설정합니다.",
|
||
"driver": "세션 드라이버",
|
||
"options": {
|
||
"file": "파일",
|
||
"database": "데이터베이스",
|
||
"redis": "Redis"
|
||
},
|
||
"lifetime": "세션 유효시간",
|
||
"minutes": "분",
|
||
"redis_shared_notice": "Redis 선택 시 캐시의 Redis 설정을 공유합니다."
|
||
},
|
||
"queue": {
|
||
"title": "큐",
|
||
"desc": "백그라운드 작업 처리 방식을 설정합니다.",
|
||
"driver": "큐 드라이버",
|
||
"options": {
|
||
"sync": "동기 처리 (즉시 실행)",
|
||
"database": "데이터베이스",
|
||
"redis": "Redis"
|
||
},
|
||
"worker_notice": "database 또는 redis 사용 시 큐 워커를 실행해야 합니다.",
|
||
"redis_shared_notice": "Redis 선택 시 캐시의 Redis 설정을 공유합니다."
|
||
},
|
||
"log": {
|
||
"title": "로그",
|
||
"desc": "애플리케이션 로그 저장 방식을 설정합니다.",
|
||
"driver": "로그 드라이버",
|
||
"options": {
|
||
"single": "단일 파일 (laravel.log)",
|
||
"daily": "일별 파일 (laravel-YYYY-MM-DD.log)"
|
||
},
|
||
"level": "로그 레벨",
|
||
"level_desc": "설정한 레벨 이상의 로그만 기록됩니다.",
|
||
"levels": {
|
||
"debug": "Debug (디버그)",
|
||
"info": "Info (정보)",
|
||
"notice": "Notice (알림)",
|
||
"warning": "Warning (경고)",
|
||
"error": "Error (오류)",
|
||
"critical": "Critical (심각)",
|
||
"alert": "Alert (알림)",
|
||
"emergency": "Emergency (긴급)"
|
||
},
|
||
"retention_days": "로그 보관 일수",
|
||
"days": "일",
|
||
"retention_desc": "설정된 기간이 지난 로그 파일은 자동으로 삭제됩니다.",
|
||
"path_info": "로그 파일 위치: /storage/logs/"
|
||
},
|
||
"websocket": {
|
||
"title": "웹소켓 (Reverb)",
|
||
"desc": "실시간 통신을 위한 웹소켓 서버를 설정합니다.",
|
||
"enabled": "웹소켓 사용",
|
||
"enabled_desc": "Laravel Reverb를 통한 실시간 기능을 활성화합니다.",
|
||
"app_id": "앱 ID",
|
||
"app_key": "앱 키",
|
||
"app_secret": "앱 시크릿",
|
||
"host": "호스트",
|
||
"port": "포트",
|
||
"scheme": "프로토콜",
|
||
"reverb_notice": "웹소켓 사용 시 Reverb 서버를 실행해야 합니다.",
|
||
"verify_ssl": "SSL 인증서 검증",
|
||
"verify_ssl_desc": "자체 서명 인증서 사용 시 비활성화하세요. 프로덕션 환경에서는 반드시 활성화해야 합니다.",
|
||
"server_endpoint_title": "서버 엔드포인트 (백엔드 → Reverb)",
|
||
"server_endpoint_desc": "백엔드가 broadcast 이벤트를 Reverb 서버에 전달할 때 사용하는 내부 주소입니다. 위 호스트/포트는 브라우저 접속용이고, 이 값은 백엔드 → Reverb 내부 통신용입니다. 비워두면 위 클라이언트 값과 동일하게 사용됩니다.",
|
||
"server_host": "서버 호스트 (내부)",
|
||
"server_port": "서버 포트 (내부)",
|
||
"server_scheme": "서버 프로토콜 (내부)"
|
||
},
|
||
"search_engine": {
|
||
"title": "검색엔진",
|
||
"desc": "통합검색 및 관리자 검색에 사용할 검색엔진 드라이버를 설정합니다.",
|
||
"driver": "검색엔진 드라이버",
|
||
"driver_desc": "기본 제공되는 MySQL FULLTEXT(ngram) 엔진은 별도 설정 없이 한국어 검색을 지원합니다.",
|
||
"plugin_notice": "검색엔진 플러그인(Meilisearch, Elasticsearch 등)을 설치하면 추가 드라이버가 표시됩니다."
|
||
},
|
||
"test_connection": "연결 테스트",
|
||
"testing": "테스트 중...",
|
||
"test_success": "연결 성공",
|
||
"test_failed": "연결 실패",
|
||
"test_required": "저장하기 전에 연결 테스트가 필요합니다",
|
||
"test_before_save": "외부 서비스 사용 시 연결 테스트를 먼저 수행해주세요"
|
||
},
|
||
"advanced": {
|
||
"cache": "캐시 설정",
|
||
"cache_desc": "시스템 캐시를 관리합니다.",
|
||
"cache_enabled": "전체 캐시 활성화",
|
||
"cache_enabled_desc": "시스템 전체 캐시를 활성화합니다.",
|
||
"cache_detail_settings": "상세 캐시 설정",
|
||
"layout_cache": "레이아웃 캐시",
|
||
"layout_cache_desc": "레이아웃 데이터를 캐시합니다.",
|
||
"stats_cache": "통계 캐시",
|
||
"stats_cache_desc": "대시보드 통계를 캐시합니다.",
|
||
"seo_cache": "SEO 캐시",
|
||
"seo_cache_desc": "SEO 메타데이터를 캐시합니다.",
|
||
"cache_ttl": "만료 시간 (초)",
|
||
"cache_ttl_zero_hint": "만료 시간을 0으로 설정하면 캐시가 만료되지 않습니다 (무한대).",
|
||
"clear_all_cache": "캐시 모두 삭제",
|
||
"debug": "디버그 설정",
|
||
"debug_desc": "개발 및 디버깅 관련 설정입니다.",
|
||
"debug_mode": "디버그 모드",
|
||
"debug_mode_desc": "상세한 오류 메시지를 표시합니다. 프로덕션에서는 비활성화하세요.",
|
||
"dev_dashboard": "개발 대시보드",
|
||
"sql_query_log": "SQL 쿼리 로그",
|
||
"sql_query_log_desc": "실행된 SQL 쿼리를 로그에 기록합니다. 로그 파일 위치: /storage/logs/query.log",
|
||
"outbound_proxy": "아웃바운드 프록시 주소",
|
||
"outbound_proxy_desc": "사이트가 외부로 보내는 모든 요청(결제 승인, 코어 업데이트 확인, 알림 발송 등)이 이 서버를 거쳐 나갑니다. 접속 IP를 제한하는 외부 서비스를 연동할 때 사용합니다. 비워 두면 사용하지 않습니다.",
|
||
"outbound_proxy_placeholder": "socks5h://127.0.0.1:1080",
|
||
"outbound_proxy_bypass": "프록시 예외 목록",
|
||
"outbound_proxy_bypass_desc": "이 목록에 있는 주소로 보내는 요청은 프록시를 거치지 않고 바로 나갑니다. 내부망 주소를 넣어두면 불필요한 우회를 줄일 수 있습니다.",
|
||
"outbound_proxy_bypass_placeholder": "주소 입력 후 Enter",
|
||
"outbound_proxy_test": "연결 테스트",
|
||
"pagination": "목록 한계값",
|
||
"pagination_desc": "대용량 목록에서 총 건수를 세는 범위와 직접 요청 가능한 페이지 번호의 상한입니다. 상한을 넘으면 총 건수를 \"N건 이상\" 으로 표시하고 마지막 페이지 점프만 감춥니다 — 다음 페이지 이동은 그대로 열려 있습니다.",
|
||
"pagination_result_cap": "총 건수 집계 상한",
|
||
"pagination_result_cap_desc": "이 건수까지만 정확히 셉니다. 0 이면 항상 전부 셉니다(대용량에서 목록이 느려질 수 있습니다).",
|
||
"pagination_max_page": "페이지 번호 상한",
|
||
"pagination_max_page_desc": "주소로 직접 요청할 수 있는 최대 페이지 번호입니다. 0 이면 제한하지 않습니다. 정상적인 다음 페이지 이동은 이 값과 무관하게 계속 가능합니다.",
|
||
"core_update": "업데이트 설정",
|
||
"core_update_desc": "코어 및 확장(모듈/플러그인/템플릿) 업데이트에 사용할 GitHub 인증 정보를 설정합니다.",
|
||
"core_update_github_url": "GitHub 저장소 URL",
|
||
"core_update_github_url_desc": "코어 업데이트를 확인할 GitHub 저장소 URL입니다. (코어 전용)",
|
||
"core_update_github_token": "GitHub 액세스 토큰",
|
||
"core_update_github_token_desc": "프라이빗 저장소의 코어 및 확장 업데이트에 사용됩니다. Fine-grained PAT 권한: Contents (Read-only). 공개 저장소는 비워둘 수 있습니다.",
|
||
"geoip_section": "IP 기반 타임존 감지 (MaxMind GeoLite2)",
|
||
"geoip_section_desc": "로그인하지 않은 사용자의 IP 주소로부터 타임존을 자동으로 감지합니다. MaxMind 무료 라이선스 키가 필요합니다.",
|
||
"geoip_enabled": "IP 기반 타임존 감지 사용",
|
||
"geoip_enabled_desc": "토글을 켜면 라이선스 키 입력과 주기적 DB 업데이트가 활성화됩니다.",
|
||
"geoip_license_key": "MaxMind 라이선스 키",
|
||
"geoip_license_key_desc": "MaxMind 무료 계정에서 발급받은 라이선스 키를 입력하세요. https://www.maxmind.com/en/geolite2/signup 에서 무료로 발급 가능합니다.",
|
||
"geoip_auto_update_enabled": "GeoIP DB 자동 업데이트",
|
||
"geoip_auto_update_enabled_desc": "주 1회(수요일 03:00) MaxMind GeoLite2-City DB를 자동으로 재다운로드합니다.",
|
||
"geoip_last_updated_at": "마지막 업데이트",
|
||
"geoip_manual_update": "지금 업데이트",
|
||
"geoip_updating": "업데이트 중...",
|
||
"geoip_update_success": "GeoIP DB 업데이트가 완료되었습니다.",
|
||
"geoip_update_failed": "GeoIP DB 업데이트에 실패했습니다.",
|
||
"seo_sitemap_cache": "Sitemap 캐시",
|
||
"seo_sitemap_cache_desc": "sitemap.xml 을 캐시합니다.",
|
||
"trusted_proxy": "리버스 프록시 (신뢰 프록시)",
|
||
"trusted_proxy_desc": "HTTPS 를 앞단에서 처리하는 구성(AWS ALB, CloudFront, Cloudflare, nginx)에서 접속 주소와 방문자 IP 를 올바르게 인식하기 위한 설정입니다. 값은 .env 의 TRUSTED_PROXIES 로만 변경할 수 있습니다.",
|
||
"trusted_proxy_status": "진단 결과",
|
||
"trusted_proxy_status_ok": "정상",
|
||
"trusted_proxy_status_warning": "조치 필요",
|
||
"trusted_proxy_status_not_applicable": "판정 불가",
|
||
"trusted_proxy_configured": "TRUSTED_PROXIES 설정값",
|
||
"trusted_proxy_not_configured": "미설정 (아무 프록시도 신뢰하지 않음)",
|
||
"trusted_proxy_forwarded_headers": "수신 중인 프록시 헤더",
|
||
"trusted_proxy_forwarded_headers_none": "없음",
|
||
"trusted_proxy_is_secure": "HTTPS 인식",
|
||
"trusted_proxy_is_secure_yes": "HTTPS 로 인식",
|
||
"trusted_proxy_is_secure_no": "HTTP 로 인식",
|
||
"trusted_proxy_client_ip": "방문자 IP 로 인식된 값",
|
||
"trusted_proxy_remote_addr": "직전 호출 IP (REMOTE_ADDR)",
|
||
"trusted_proxy_same_ip_hint": "두 값이 같으면서 프록시 헤더를 받고 있습니다 — 모든 방문자가 한 사람으로 기록되고 있는 상태입니다.",
|
||
"trusted_proxy_doc_hint": "설정 방법과 도입 시 후속 조치:"
|
||
},
|
||
"notification_definitions": {
|
||
"title": "알림 설정",
|
||
"description": "채널별 알림 템플릿을 관리합니다.",
|
||
"channel_management": "알림 채널 관리",
|
||
"active": "활성",
|
||
"inactive": "비활성",
|
||
"default_badge": "기본",
|
||
"btn_edit": "편집",
|
||
"btn_activate": "활성화",
|
||
"btn_deactivate": "비활성화",
|
||
"btn_reset": "기본값 복원",
|
||
"btn_search": "검색",
|
||
"btn_reset_filter": "초기화",
|
||
"search_placeholder": "검색어를 입력하세요",
|
||
"search_type_all": "전체",
|
||
"search_type_subject": "제목",
|
||
"search_type_body": "본문",
|
||
"total_count": "총 {{count}}건",
|
||
"per_page_label": "페이지당",
|
||
"empty_message": "등록된 알림 설정이 없습니다.",
|
||
"empty_no_results": "검색 결과가 없습니다.",
|
||
"toggle_success": "알림 활성 상태가 변경되었습니다.",
|
||
"reset_success": "알림 설정이 기본값으로 복원되었습니다.",
|
||
"reset_failed": "알림 설정 복원에 실패했습니다.",
|
||
"reset_modal": {
|
||
"title": "기본값으로 복원",
|
||
"confirm_message": "이 알림의 모든 채널 템플릿을 기본값으로 복원합니다.",
|
||
"warning_message": "저장된 제목/본문/수신자 설정이 모두 사라지며 복구할 수 없습니다.",
|
||
"target_label": "복원 대상:",
|
||
"btn_confirm": "복원",
|
||
"btn_confirming": "복원 중..."
|
||
},
|
||
"no_template_for_channel": "이 채널에 대한 템플릿이 없습니다.",
|
||
"body_preview": "본문 미리보기",
|
||
"save_success": "알림 설정이 저장되었습니다.",
|
||
"save_error": "알림 설정 저장에 실패했습니다.",
|
||
"types": {
|
||
"welcome": "회원가입 환영",
|
||
"reset_password": "비밀번호 재설정",
|
||
"password_changed": "비밀번호 변경 알림",
|
||
"sitemap_regenerated": "사이트맵 재생성 완료",
|
||
"sitemap_regenerate_failed": "사이트맵 재생성 실패"
|
||
},
|
||
"channels_label": "채널:",
|
||
"edit_modal": {
|
||
"title": "알림 템플릿 편집",
|
||
"type_label": "유형:",
|
||
"subject": "제목",
|
||
"body": "본문",
|
||
"click_url": "클릭 시 이동 URL",
|
||
"click_url_hint": "알림 클릭 시 이동할 경로입니다. {변수명} 형식으로 동적 값을 사용할 수 있습니다. (예: /mypage/orders/{order_number})",
|
||
"channel_label": "채널:",
|
||
"variables_title": "사용 가능한 변수",
|
||
"btn_preview": "미리보기",
|
||
"validation_error": "입력 정보를 확인해주세요.",
|
||
"is_active_label": "활성화"
|
||
},
|
||
"recipients_label": "수신자:",
|
||
"recipients": {
|
||
"title": "수신자 설정",
|
||
"add_rule": "+ 수신자 규칙 추가",
|
||
"rule_label": "수신자 규칙 {{index}}",
|
||
"type_label": "타입",
|
||
"role_label": "역할",
|
||
"relation_label": "관계",
|
||
"users_label": "사용자",
|
||
"exclude_trigger_user": "이벤트 유발자 제외",
|
||
"types": {
|
||
"trigger_user": "이벤트 유발자",
|
||
"related_user": "관련 사용자",
|
||
"role": "역할 기반",
|
||
"specific_users": "특정 사용자"
|
||
},
|
||
"badge": {
|
||
"trigger_user": "이벤트 유발자",
|
||
"related_user": "관련 사용자 ({{relation}})",
|
||
"role": "{{role}} 역할",
|
||
"specific_users": "지정 사용자 ({{count}}명)",
|
||
"exclude_self": "(본인 제외)"
|
||
},
|
||
"no_recipients": "수신자 미설정",
|
||
"role_search_placeholder": "역할을 검색하세요",
|
||
"users_placeholder": "사용자를 검색하세요",
|
||
"users_no_options": "검색 결과가 없습니다"
|
||
},
|
||
"preview_modal": {
|
||
"title": "알림 미리보기",
|
||
"subject_label": "제목",
|
||
"body_label": "본문"
|
||
}
|
||
},
|
||
"info": {
|
||
"system_info": "시스템 정보",
|
||
"system_info_desc": "서버 및 소프트웨어 정보입니다.",
|
||
"os": "운영체제",
|
||
"web_server": "웹서버",
|
||
"php_version": "PHP 버전",
|
||
"mysql_version": "MySQL 버전",
|
||
"g7_version": "그누보드7 버전",
|
||
"laravel_version": "Laravel 버전",
|
||
"system_specs": "시스템 사양",
|
||
"system_specs_desc": "하드웨어 및 리소스 정보입니다.",
|
||
"cpu": "CPU",
|
||
"memory": "메모리",
|
||
"disk": "디스크",
|
||
"php_memory": "PHP 메모리 제한",
|
||
"opcache": "OPcache",
|
||
"opcache_enabled": "활성화됨",
|
||
"opcache_disabled": "비활성화됨 — 페이지가 몇 배 느려집니다",
|
||
"opcache_unknown": "확인 불가",
|
||
"opcache_disabled_warning": "OPcache가 비활성화되어 있습니다. 이 상태에서는 방문자가 페이지를 열 때마다 사이트의 모든 PHP 코드를 처음부터 다시 해석합니다. 같은 서버, 같은 사양에서도 응답 속도가 몇 배까지 느려지며 방문자가 많을수록 격차가 커집니다. php.ini에서 opcache.enable=1 을 켠 뒤 웹서버를 재시작하시기를 강력히 권장합니다. 설정을 바꾼 뒤에도 이 화면에 반영되기까지 최대 1시간이 걸릴 수 있으며, 캐시 비우기를 실행하면 즉시 반영됩니다.",
|
||
"max_execution_time": "최대 실행 시간",
|
||
"upload_size": "업로드 크기 제한",
|
||
"install_paths": "설치 경로",
|
||
"install_paths_desc": "그누보드7 시스템 설치 경로입니다.",
|
||
"install_path": "설치 경로",
|
||
"config_file": "설정 파일",
|
||
"log_path": "로그 경로",
|
||
"upload_path": "업로드 경로",
|
||
"database_config": "데이터베이스 구성",
|
||
"database_config_desc": "MySQL 연결 구성 정보입니다.",
|
||
"config_type": "구성 타입:",
|
||
"write_only": "Write Only",
|
||
"read_write_split": "Read-Write 분리",
|
||
"write_db": "Write DB",
|
||
"read_db": "Read DB",
|
||
"db_host": "호스트",
|
||
"db_port": "포트",
|
||
"db_name": "데이터베이스",
|
||
"db_user": "사용자",
|
||
"no_read_db": "Read DB가 설정되지 않았습니다",
|
||
"php_extensions": "PHP 확장 모듈",
|
||
"php_extensions_desc": "설치된 PHP 확장 모듈 상태입니다.",
|
||
"required_modules": "필수 모듈",
|
||
"optional_modules": "선택 모듈",
|
||
"check_update": "업데이트 확인",
|
||
"update_check_failed": "업데이트 확인에 실패했습니다.",
|
||
"update_result_title": "업데이트 확인 결과",
|
||
"current_version": "현재 버전",
|
||
"latest_version": "최신 버전",
|
||
"update_available_message": "새로운 버전이 출시되었습니다. 변경사항을 확인하고 터미널에서 업데이트할 수 있습니다.",
|
||
"no_update_message": "현재 최신 버전을 사용 중입니다.",
|
||
"view_changelog": "변경사항 보기",
|
||
"how_to_update": "업데이트 방법",
|
||
"changelog_title": "변경사항",
|
||
"no_changelog": "변경사항 정보가 없습니다.",
|
||
"changelog_load_failed": "변경사항을 불러오는데 실패했습니다.",
|
||
"update_guide_title": "터미널에서 업데이트",
|
||
"update_guide_warning": "코어 업데이트는 터미널에서만 실행할 수 있습니다. 업데이트 전 반드시 데이터베이스를 백업하세요.",
|
||
"update_guide_desc": "서버 터미널에 접속하여 그누보드7 설치 디렉토리에서 아래 명령어를 실행하세요.",
|
||
"update_guide_note": "업데이트 중 자동으로 유지보수 모드가 활성화됩니다. 업데이트 완료 후 자동으로 해제됩니다.",
|
||
"manual_update_title": "수동 업데이트 (ZIP 확장 미설치 환경)",
|
||
"manual_update_desc": "서버에 PHP zip 확장이나 unzip 명령어가 없는 경우, GitHub에서 릴리스 ZIP을 직접 다운로드하여 업데이트할 수 있습니다.",
|
||
"manual_update_step1": "# 1. GitHub 릴리스 페이지에서 ZIP 다운로드 후 서버에 압축 해제",
|
||
"manual_update_step2": "# 2. 압축 해제된 경로를 지정하여 업데이트 실행",
|
||
"update_guide_cmd_comment": "# 관리자 권한으로 실행 권장 (Linux/macOS)",
|
||
"update_guide_cmd": "$ sudo php artisan core:update",
|
||
"manual_update_cmd": "$ sudo php artisan core:update --source=/path/to/extracted",
|
||
"upgrade_guide_link_desc": "운영 환경별 권한/사용자군별 자세한 절차는 업그레이드 가이드를 참고하세요.",
|
||
"upgrade_guide_link_label": "전체 업그레이드 가이드 보기"
|
||
},
|
||
"modals": {
|
||
"password_confirm_title": "비밀번호 확인",
|
||
"app_key_warning": "키를 변경하면 모든 세션이 무효화되고, 기존 암호화된 데이터에 접근할 수 없게 될 수 있습니다. 신중하게 진행하세요.",
|
||
"enter_password": "최고 관리자 비밀번호",
|
||
"password_placeholder": "비밀번호를 입력하세요",
|
||
"regenerate": "키 재생성",
|
||
"regenerating": "재생성 중...",
|
||
"cache_delete_title": "캐시 삭제 확인",
|
||
"cache_delete_confirm": "모든 캐시를 삭제하시겠습니까?",
|
||
"cache_delete_warning": "캐시 삭제 후 일시적으로 사이트 응답 속도가 느려질 수 있습니다.",
|
||
"delete_cache": "캐시 삭제",
|
||
"deleting": "삭제 중..."
|
||
},
|
||
"save_success": "설정이 저장되었습니다.",
|
||
"save_error": "설정 저장에 실패했습니다.",
|
||
"unsaved_changes": "저장되지 않은 변경사항이 있습니다.",
|
||
"validation_error": "입력 정보를 확인해주세요",
|
||
"app_key_regenerated": "어플리케이션 키가 재생성되었습니다.",
|
||
"cache_cleared": "모든 캐시가 삭제되었습니다."
|
||
},
|
||
"templates": {
|
||
"page_title": "템플릿 관리",
|
||
"page_description": "템플릿과 레이아웃을 관리하여 웹사이트의 디자인을 구성할 수 있습니다.",
|
||
"title": "템플릿 관리",
|
||
"description": "템플릿과 레이아웃을 관리하여 웹사이트의 디자인을 구성할 수 있습니다.",
|
||
"search_placeholder": "템플릿 검색...",
|
||
"search": "검색",
|
||
"include_hidden": "숨김 항목 포함",
|
||
"manual_install": "수동 설치",
|
||
"marketplace": "마켓플레이스",
|
||
"vendor": "작성자: {{vendor}}",
|
||
"dependencies": "의존성: {{deps}}",
|
||
"dependencies_label": "의존성:",
|
||
"no_dependencies": "의존성: 없음",
|
||
"available": "사용 가능",
|
||
"no_templates": "설치된 템플릿이 없습니다.",
|
||
"pagination_info": "총 {{total}}개 중 {{from}}-{{to}}개 표시",
|
||
"update_available": "업데이트 필요",
|
||
"version_available": "(v{{version}} 사용 가능)",
|
||
"installing": "설치 중...",
|
||
"uninstalling": "제거 중...",
|
||
"activating": "활성화 중...",
|
||
"deactivating": "비활성화 중...",
|
||
"install_success": "템플릿이 성공적으로 설치되었습니다.",
|
||
"activate_success": "템플릿이 활성화되었습니다.",
|
||
"deactivate_success": "템플릿이 비활성화되었습니다.",
|
||
"uninstall_success": "템플릿이 제거되었습니다.",
|
||
"update_success": "템플릿이 업데이트되었습니다.",
|
||
"update_failed": "템플릿 업데이트에 실패했습니다.",
|
||
"updating": "업데이트 중...",
|
||
"check_updates_success": "업데이트 확인 완료 ({{count}}개 업데이트 가능)",
|
||
"check_updates_no_updates": "모든 템플릿이 최신 상태입니다.",
|
||
"refresh_layouts_success": "템플릿 레이아웃이 갱신되었습니다.",
|
||
"refreshing_layouts": "레이아웃 갱신 중...",
|
||
"type": {
|
||
"user": "유저",
|
||
"admin": "관리자"
|
||
},
|
||
"tabs": {
|
||
"user": "유저 템플릿",
|
||
"admin": "관리자 템플릿",
|
||
"file_upload": "파일 업로드",
|
||
"github": "GitHub",
|
||
"file_label": "템플릿 파일 (.zip)",
|
||
"no_file_selected": "파일이 선택되지 않음",
|
||
"selected_file": "선택된 파일: {{filename}}",
|
||
"file_requirements": "템플릿 패키지는 반드시",
|
||
"file_structure_hint": "파일을 포함해야 하며, 그누보드7 템플릿 표준 구조를 따라야 합니다.",
|
||
"github_url_label": "GitHub 저장소 URL",
|
||
"github_url_hint": "GitHub 저장소의 기본 브랜치에서 템플릿을 다운로드합니다.",
|
||
"github_requirements": "루트 디렉토리에",
|
||
"github_public_only": "파일이 있어야 합니다."
|
||
},
|
||
"admin_section": {
|
||
"page_title": "관리자 템플릿 관리",
|
||
"page_description": "관리자 인터페이스에 사용되는 템플릿을 관리합니다.",
|
||
"title": "관리자 템플릿",
|
||
"description": "관리자 인터페이스의 디자인을 변경할 수 있습니다.\n코드 편집 및 레이아웃 편집을 모두 지원합니다."
|
||
},
|
||
"status": {
|
||
"active": "현재 활성",
|
||
"inactive": "비활성화",
|
||
"uninstalled": "미설치",
|
||
"not_installed": "미설치",
|
||
"installing": "설치 중",
|
||
"uninstalling": "제거 중",
|
||
"updating": "업데이트 중",
|
||
"update_available": "업데이트 필요"
|
||
},
|
||
"actions": {
|
||
"install": "설치",
|
||
"uninstall": "제거",
|
||
"activate": "활성화",
|
||
"deactivate": "비활성화",
|
||
"update": "업데이트",
|
||
"check_updates": "업데이트 확인",
|
||
"view_detail": "상세정보",
|
||
"refresh_layouts": "레이아웃 갱신",
|
||
"edit_layouts": "레이아웃 편집",
|
||
"edit_code": "코드 편집",
|
||
"edit_layout_visual": "레이아웃 편집",
|
||
"preview_manifest": "manifest 미리보기"
|
||
},
|
||
"modal": {
|
||
"preview": {
|
||
"title": "템플릿 manifest 미리보기",
|
||
"description": "ZIP 파일을 업로드하면 설치 전에 template.json 정보와 검증 결과를 확인할 수 있습니다.",
|
||
"run": "미리보기 실행",
|
||
"valid": "template.json 검증 통과 — 설치 가능합니다.",
|
||
"already_installed": "이미 설치됨: 현재 버전 {{version}}",
|
||
"failed": "manifest 미리보기에 실패했습니다."
|
||
}
|
||
},
|
||
"modals": {
|
||
"detail_title": "템플릿 정보",
|
||
"detail_subtitle": "{{name}}의 상세 정보를 확인할 수 있습니다.",
|
||
"basic_info": "기본 정보",
|
||
"field_name": "이름",
|
||
"field_version": "버전",
|
||
"field_description": "설명",
|
||
"field_vendor": "개발자",
|
||
"field_update_source": "업데이트 소스",
|
||
"field_release_date": "출시일자",
|
||
"field_status": "상태",
|
||
"basic_components": "기본 컴포넌트",
|
||
"basic_components_description": "HTML 태그 수준의 기초적인 UI 컴포넌트입니다.",
|
||
"composite_components": "집합 컴포넌트",
|
||
"composite_components_description": "기본 컴포넌트를 조합하여 만들어진 복합 UI 컴포넌트입니다.",
|
||
"no_components": "컴포넌트가 없습니다.",
|
||
"external_resources": "외부 리소스",
|
||
"external_resources_description": "이 템플릿이 사용하는 외부 스타일·웹폰트·스크립트입니다.",
|
||
"no_external_resources": "외부 리소스가 없습니다.",
|
||
"supported_languages": "지원 언어",
|
||
"no_supported_languages": "지원 언어 정보가 없습니다.",
|
||
"cascade_dependencies_title": "함께 설치할 의존 확장",
|
||
"cascade_dependencies_hint": "본 확장이 의존하는 미설치 항목입니다. 체크 해제 시 해당 확장은 설치되지 않으며, 종속된 언어팩도 자동 비활성화됩니다.",
|
||
"cascade_language_packs_title": "함께 설치할 언어팩",
|
||
"cascade_language_packs_hint": "번들로 제공되는 언어팩 후보입니다. 체크된 항목만 본 설치와 함께 자동 설치됩니다.",
|
||
"cascade_lp_depends_on": "종속: {{target}}",
|
||
"install_title": "템플릿 설치 확인",
|
||
"install_confirm": "{{name}} 템플릿을 설치하시겠습니까?",
|
||
"install_description": "설치 후 활성화하면 관리자 인터페이스의 디자인이 변경됩니다.",
|
||
"uninstall_title": "템플릿 제거 확인",
|
||
"uninstall_done_title": "템플릿 제거 완료",
|
||
"uninstall_confirm": "{{name}} 템플릿을 제거하시겠습니까?",
|
||
"uninstall_warning": "이 작업은 되돌릴 수 없습니다.",
|
||
"delete_data_option": "템플릿 데이터도 함께 삭제",
|
||
"delete_data_warning": "템플릿이 생성한 모든 데이터(사용자 정의 스타일, 설정 등)가 함께 삭제되며, 삭제된 데이터는 복구할 수 없습니다.",
|
||
"extension_directory_title": "삭제될 확장 디렉토리",
|
||
"extension_directory_section": "확장 디렉토리",
|
||
"preserved_title": "운영자 파일 사본 보관",
|
||
"preserved_desc": "제거하기 전에 custom/ 디렉토리의 사본을 아래 경로에 보관했습니다. 확장을 다시 설치한 뒤 custom/ 으로 옮기면 그대로 다시 쓸 수 있습니다.",
|
||
"tables_total": "총 {{size}}",
|
||
"activate_title": "템플릿 변경 확인",
|
||
"activate_confirm": "{{name}} 템플릿을 활성화하시겠습니까?",
|
||
"activate_description": "현재 사용 중인 템플릿의 레이아웃 설정은 자동으로 저장됩니다. 나중에 다시 활성화하면 저장된 레이아웃을 그대로 사용할 수 있습니다.",
|
||
"deactivate_title": "템플릿 비활성화 확인",
|
||
"deactivate_confirm": "{{name}} 템플릿을 비활성화하시겠습니까?",
|
||
"manual_install_title": "템플릿 수동 설치",
|
||
"manual_install_description": "파일 업로드 또는 GitHub 저장소에서 템플릿을 설치할 수 있습니다.",
|
||
"refresh_layouts_title": "레이아웃 갱신",
|
||
"refresh_layouts_confirm": "{{name}} 템플릿의 레이아웃을 갱신하시겠습니까?",
|
||
"refresh_layouts_warning": "기존 레이아웃이 삭제되고 파일에서 다시 등록됩니다.",
|
||
"refresh_layouts_description": "템플릿 파일에 포함된 레이아웃으로 데이터베이스의 레이아웃이 교체됩니다. 기존에 수정한 레이아웃 내용은 모두 삭제됩니다.",
|
||
"update_title": "템플릿 업데이트 확인",
|
||
"update_confirm": "{{name}} 템플릿을 업데이트하시겠습니까?",
|
||
"update_version_info": "{{from}} → {{to}}",
|
||
"update_source_github": "GitHub에서 다운로드",
|
||
"update_source_pending": "대기 중인 패키지에서 설치",
|
||
"update_source_bundled": "선탑재 패키지에서 설치",
|
||
"view_changelog": "변경사항 보기",
|
||
"changelog": "변경 내역",
|
||
"no_changelog": "변경 내역 정보가 없습니다.",
|
||
"update_changelog_title": "이 업데이트의 변경사항",
|
||
"layout_strategy_title": "레이아웃 처리 방식",
|
||
"layout_strategy_overwrite": "모두 교체",
|
||
"layout_strategy_overwrite_desc": "모든 레이아웃을 새 버전으로 교체합니다.",
|
||
"layout_strategy_keep": "수정 유지",
|
||
"layout_strategy_keep_desc": "사용자가 수정한 레이아웃을 유지합니다.",
|
||
"modified_layouts_warning": "수정된 레이아웃이 {{count}}개 있습니다. '모두 교체'를 선택하면 수정 내용이 삭제됩니다.",
|
||
"no_modified_layouts": "수정된 레이아웃이 없습니다.",
|
||
"modified_layouts_check_failed": "수정 여부를 확인하지 못했습니다. 네트워크 상태를 확인한 뒤 다시 시도하거나, 안전하게 '수정 유지'를 선택하세요.",
|
||
"modified_layouts_list_title": "유지될 수정 레이아웃 ({{count}}개)",
|
||
"modified_layouts_keep_notice": "위 레이아웃은 업데이트 후에도 현재 내용이 유지됩니다.",
|
||
"activate_warning_title": "템플릿 활성화 경고",
|
||
"activate_warning_message": "이 템플릿을 활성화하려면 필요한 의존성이 충족되어야 합니다.",
|
||
"missing_modules": "필요한 모듈",
|
||
"missing_plugins": "필요한 플러그인",
|
||
"force_activate_description": "강제로 활성화하면 템플릿이 정상적으로 동작하지 않을 수 있습니다.",
|
||
"confirm_activate": "그래도 활성화",
|
||
"dependencies": "의존성",
|
||
"required_core_version": "코어 요구 버전",
|
||
"no_required_core_version": "지정되지 않음",
|
||
"no_dependencies_required": "의존하는 확장이 없습니다.",
|
||
"dependency_required_version": "요구: {{version}}",
|
||
"dependency_installed_version": "설치: {{version}}",
|
||
"dependency_not_installed": "미설치",
|
||
"dependency_unmet_version": "버전 불일치",
|
||
"dependency_inactive": "비활성",
|
||
"required_modules": "필수 모듈",
|
||
"required_plugins": "필수 플러그인",
|
||
"dependency_met": "충족",
|
||
"dependency_unmet": "미충족",
|
||
"version_history": {
|
||
"title": "버전 히스토리",
|
||
"description": "{{layout_name}}의 저장된 버전 목록입니다. 원하는 버전으로 복구할 수 있습니다.",
|
||
"latest": "최신",
|
||
"restore": "복구",
|
||
"restoring": "복구중...",
|
||
"restore_success": "버전이 성공적으로 복원되었습니다.",
|
||
"restore_note": "복구 후에는 반드시 저장 버튼을 눌러야 변경사항이 적용됩니다.",
|
||
"saved_by": "저장자: {{name}}",
|
||
"lines": "라인",
|
||
"modified": "수정",
|
||
"chars": "자",
|
||
"load_more": "이전 버전 더 보기",
|
||
"limit_reached": "표시할 수 있는 최대 개수에 도달했습니다."
|
||
},
|
||
"extension_version_history": {
|
||
"title": "확장 버전 히스토리",
|
||
"description": "{{target_name}} ({{source_label}})의 저장된 버전 목록입니다. 원하는 버전으로 복구할 수 있습니다.",
|
||
"latest": "최신",
|
||
"restore": "복구",
|
||
"restoring": "복구중...",
|
||
"restore_success": "확장 버전이 성공적으로 복원되었습니다.",
|
||
"restore_note": "복구 후에는 반드시 저장 버튼을 눌러야 변경사항이 적용됩니다.",
|
||
"lines": "라인",
|
||
"chars": "자"
|
||
},
|
||
"wysiwyg_select_layout_title": "위지윅 편집 - 레이아웃 선택",
|
||
"wysiwyg_select_layout_description": "편집할 레이아웃을 선택하세요. 선택한 레이아웃이 새 탭에서 위지윅 편집 모드로 열립니다.",
|
||
"wysiwyg_no_layouts": "등록된 레이아웃이 없습니다.",
|
||
"wysiwyg_note": "위지윅 편집 모드에서는 실제 화면 위에 편집 도구가 표시됩니다. 변경사항은 저장 버튼을 클릭해야 적용됩니다."
|
||
},
|
||
"tabs_install": {
|
||
"file_upload": "파일 업로드",
|
||
"github": "GitHub",
|
||
"file_label": "템플릿 파일 (.zip)",
|
||
"no_file_selected": "파일이 선택되지 않음",
|
||
"selected_file": "선택된 파일: {{filename}}",
|
||
"file_requirements": "템플릿 패키지는 반드시",
|
||
"file_structure_hint": "파일을 포함해야 하며, 그누보드7 템플릿 표준 구조를 따라야 합니다.",
|
||
"github_url_label": "GitHub 저장소 URL",
|
||
"github_url_hint": "GitHub 저장소의 기본 브랜치에서 템플릿을 다운로드합니다.",
|
||
"github_requirements": "루트 디렉토리에",
|
||
"github_public_only": "파일이 있어야 합니다."
|
||
},
|
||
"info": {
|
||
"title": "관리자 템플릿 안내:",
|
||
"description": "관리자 템플릿은 관리자 인터페이스의 디자인만 변경하며, 사용자 웹사이트에는 영향을 주지 않습니다. 사용자 템플릿과 동일하게 코드 편집과 레이아웃 편집을 모두 지원합니다."
|
||
},
|
||
"dependencies_warning": "필수 의존성 미충족",
|
||
"errors": {
|
||
"install_failed": "템플릿 설치에 실패했습니다.",
|
||
"already_installed": "이미 설치된 템플릿입니다. 기존 템플릿을 제거한 후 다시 시도하세요.",
|
||
"invalid_file": "유효하지 않은 템플릿 파일입니다.",
|
||
"github_url_invalid": "유효하지 않은 GitHub URL입니다.",
|
||
"cannot_deactivate_last": "최소 하나의 활성 템플릿이 필요합니다."
|
||
},
|
||
"user_section": {
|
||
"title": "사용자 템플릿",
|
||
"description": "사용자 화면에 적용되는 템플릿을 관리합니다."
|
||
},
|
||
"user_info": {
|
||
"title": "사용자 템플릿 안내:",
|
||
"description": "사용자 템플릿은 웹사이트 전면부의 디자인을 변경합니다. 레이아웃 편집 기능을 통해 페이지 구조를 직접 수정할 수 있습니다."
|
||
},
|
||
"layout_edit": {
|
||
"title": "레이아웃 편집",
|
||
"description": "JSON 파일을 편집하여 페이지 레이아웃을 구성합니다",
|
||
"page_title": "레이아웃 편집",
|
||
"page_description": "JSON 파일을 편집하여 페이지 레이아웃을 구성합니다",
|
||
"preview": "미리보기",
|
||
"save": "저장",
|
||
"saving": "저장 중...",
|
||
"save_success": "레이아웃이 저장되었습니다.",
|
||
"save_creates_view": "크롤러 방문 시 레이아웃을 자동 파싱하여 SEO용 페이지를 보여줍니다.",
|
||
"layout_files": "레이아웃 파일",
|
||
"select_file": "파일을 선택하세요",
|
||
"select_file_prompt": "편집할 파일을 선택하세요",
|
||
"updated_badge": "업데이트",
|
||
"layout_updated_badge": "레이아웃 업데이트됨",
|
||
"version_history_button": "버전 히스토리",
|
||
"modified_at": "수정일: {{date}}",
|
||
"preview_error": "미리보기 생성에 실패했습니다.",
|
||
"section_layouts": "일반 레이아웃",
|
||
"section_extensions": "확장 주입 레이아웃",
|
||
"extension_type_point": "확장점",
|
||
"extension_type_overlay": "오버레이",
|
||
"extension_modified_badge": "수정됨",
|
||
"extension_inactive_badge": "비활성",
|
||
"extension_override_badge": "오버라이드",
|
||
"extension_priority": "우선순위 {{priority}}",
|
||
"no_extensions": "주입된 레이아웃 확장이 없습니다.",
|
||
"extension_save_success": "레이아웃 확장이 저장되었습니다.",
|
||
"select_extension_prompt": "편집할 레이아웃 확장을 선택하세요",
|
||
"preview_layout_select_title": "미리보기 레이아웃 선택",
|
||
"preview_layout_select_description": "이 확장점은 여러 레이아웃에서 사용됩니다. 미리볼 레이아웃을 선택하세요.",
|
||
"preview_layout_select_placeholder": "레이아웃을 선택하세요",
|
||
"preview_layout_confirm": "미리보기"
|
||
}
|
||
},
|
||
"activity_log": {
|
||
"page_title": "활동 로그",
|
||
"page_description": "시스템 활동 이력을 조회합니다.",
|
||
"filter": {
|
||
"search_placeholder": "검색어를 입력하세요...",
|
||
"search_button": "검색",
|
||
"reset_button": "초기화",
|
||
"search_type_all": "전체",
|
||
"search_type_action": "액션",
|
||
"search_type_description": "설명",
|
||
"search_type_ip_address": "IP주소",
|
||
"log_type_label": "로그 타입",
|
||
"log_type_all": "전체",
|
||
"log_type_admin": "관리자",
|
||
"log_type_user": "사용자",
|
||
"log_type_system": "시스템",
|
||
"actor_label": "행위자",
|
||
"actor_select": "행위자 선택",
|
||
"actor_search_placeholder": "이름 또는 이메일로 검색",
|
||
"actor_search_initial": "행위자를 검색하세요",
|
||
"date_range_label": "기간",
|
||
"date_from_label": "시작일",
|
||
"date_to_label": "종료일",
|
||
"date_quick": {
|
||
"today": "오늘",
|
||
"week": "1주일",
|
||
"month": "1개월",
|
||
"three_months": "3개월",
|
||
"six_months": "6개월",
|
||
"one_year": "1년"
|
||
}
|
||
},
|
||
"sort": {
|
||
"created_at_desc": "최신순",
|
||
"created_at_asc": "오래된순"
|
||
},
|
||
"table": {
|
||
"column": {
|
||
"number": "#",
|
||
"log_type": "타입",
|
||
"action": "액션",
|
||
"description": "설명",
|
||
"target": "대상",
|
||
"actor": "행위자",
|
||
"ip_address": "IP주소",
|
||
"created_at": "일시"
|
||
}
|
||
},
|
||
"detail": {
|
||
"ip_address_label": "IP 주소",
|
||
"target_label": "대상",
|
||
"changes_title": "변경 내역",
|
||
"bulk_changes_title": "일괄 변경 내역",
|
||
"column_field": "항목명",
|
||
"column_old": "변경 전",
|
||
"column_new": "변경 후",
|
||
"no_value": "-"
|
||
},
|
||
"pagination": {
|
||
"total": "총 {{count}}건",
|
||
"total_at_least": "총 {{count}}건 이상"
|
||
},
|
||
"empty": {
|
||
"title": "활동 로그가 없습니다",
|
||
"message": "시스템 활동이 발생하면 이곳에 이력이 표시됩니다.",
|
||
"no_results": "검색 결과가 없습니다",
|
||
"no_results_message": "다른 검색 조건을 시도해보세요.",
|
||
"reset_filter": "필터 초기화"
|
||
},
|
||
"delete": {
|
||
"selected_count": "{{count}}건 선택됨",
|
||
"button": "삭제",
|
||
"bulk_button": "선택 삭제",
|
||
"confirm_title": "활동 로그 삭제",
|
||
"confirm_message": "이 활동 로그를 삭제하시겠습니까?",
|
||
"bulk_confirm_title": "선택 항목 삭제",
|
||
"bulk_confirm_message": "선택한 항목을 삭제하시겠습니까?",
|
||
"success": "활동 로그가 삭제되었습니다.",
|
||
"bulk_success": "선택한 활동 로그가 삭제되었습니다."
|
||
},
|
||
"action": {
|
||
"view_member": "회원 정보 보기",
|
||
"search_by_actor": "이 행위자로 검색"
|
||
}
|
||
},
|
||
"mail_send_log": {
|
||
"page_title": "메일 발송 이력",
|
||
"page_description": "시스템에서 발송한 이메일의 이력을 확인합니다.",
|
||
"filter": {
|
||
"search_type_all": "전체",
|
||
"search_type_recipient_email": "수신자 이메일",
|
||
"search_type_recipient_name": "수신자 이름",
|
||
"search_type_subject": "제목",
|
||
"search_placeholder": "검색어를 입력하세요...",
|
||
"search_button": "검색",
|
||
"reset_button": "초기화",
|
||
"extension_type_label": "확장 타입",
|
||
"extension_type_all": "전체",
|
||
"extension_type_core": "코어",
|
||
"extension_type_module": "모듈",
|
||
"extension_type_plugin": "플러그인",
|
||
"status_label": "상태",
|
||
"status_all": "전체",
|
||
"status_sent": "성공",
|
||
"status_failed": "실패",
|
||
"status_skipped": "건너뜀"
|
||
},
|
||
"sort": {
|
||
"sent_at_desc": "최신순",
|
||
"sent_at_asc": "오래된순",
|
||
"recipient_email_asc": "수신자순",
|
||
"subject_asc": "제목순"
|
||
},
|
||
"table": {
|
||
"column": {
|
||
"sender": "발송자",
|
||
"recipient": "수신자",
|
||
"subject": "제목",
|
||
"template_type": "템플릿",
|
||
"extension_type": "확장 타입",
|
||
"extension_identifier": "확장 식별자",
|
||
"status": "상태",
|
||
"sent_at": "발송일시"
|
||
}
|
||
},
|
||
"detail": {
|
||
"body_label": "본문",
|
||
"error_label": "에러 메시지",
|
||
"source_label": "발송 출처",
|
||
"no_body": "본문 없음"
|
||
},
|
||
"status": {
|
||
"sent": "성공",
|
||
"failed": "실패",
|
||
"skipped": "건너뜀"
|
||
},
|
||
"pagination": {
|
||
"total": "총 {{count}}건"
|
||
},
|
||
"empty": {
|
||
"title": "발송 이력이 없습니다",
|
||
"message": "시스템에서 메일을 발송하면 이곳에 이력이 표시됩니다.",
|
||
"no_results": "검색 결과가 없습니다",
|
||
"no_results_message": "다른 검색 조건을 시도해보세요.",
|
||
"reset_filter": "필터 초기화"
|
||
},
|
||
"delete": {
|
||
"selected_count": "{{count}}건 선택됨",
|
||
"button": "삭제",
|
||
"bulk_button": "선택 삭제",
|
||
"confirm_title": "발송 이력 삭제",
|
||
"confirm_message": "이 발송 이력을 삭제하시겠습니까?",
|
||
"bulk_confirm_title": "선택 항목 삭제",
|
||
"bulk_confirm_message": "선택한 항목을 삭제하시겠습니까?",
|
||
"success": "발송 이력이 삭제되었습니다.",
|
||
"bulk_success": "선택한 발송 이력이 삭제되었습니다."
|
||
}
|
||
},
|
||
"license": {
|
||
"modal_title": "라이선스",
|
||
"license_text": "라이선스",
|
||
"view_license": "라이선스 보기"
|
||
},
|
||
"notification_log": {
|
||
"page_title": "알림 발송 이력",
|
||
"page_description": "시스템에서 발송한 알림의 이력을 확인합니다.",
|
||
"tab_all": "전체",
|
||
"extension_core": "코어",
|
||
"extension_module": "모듈",
|
||
"extension_plugin": "플러그인",
|
||
"status_sent": "성공",
|
||
"status_failed": "실패",
|
||
"status_skipped": "건너뜀",
|
||
"search_placeholder": "수신자, 제목 검색",
|
||
"total_count": "총 {{count}}건",
|
||
"col_channel": "채널",
|
||
"col_recipient": "수신자",
|
||
"col_sender": "발송자",
|
||
"col_type": "알림 타입",
|
||
"col_subject": "제목",
|
||
"col_status": "상태",
|
||
"col_sent_at": "발송일시",
|
||
"col_extension": "확장",
|
||
"system_sender": "시스템",
|
||
"empty_message": "발송 이력이 없습니다.",
|
||
"detail_title": "발송 상세",
|
||
"detail_body": "본문",
|
||
"detail_error": "에러 메시지",
|
||
"filter": {
|
||
"search_type_all": "전체",
|
||
"search_type_recipient": "수신자",
|
||
"search_type_subject": "제목",
|
||
"status_label": "상태",
|
||
"status_all": "전체",
|
||
"extension_type_label": "확장 타입",
|
||
"extension_type_all": "전체",
|
||
"search_button": "검색",
|
||
"reset_button": "초기화"
|
||
},
|
||
"sort": {
|
||
"sent_at_desc": "최신순",
|
||
"sent_at_asc": "오래된순",
|
||
"recipient_name_asc": "수신자순",
|
||
"subject_asc": "제목순"
|
||
},
|
||
"detail": {
|
||
"error_label": "에러:",
|
||
"source_label": "소스:",
|
||
"notification_type_label": "알림 타입:",
|
||
"body_label": "본문",
|
||
"no_body": "본문 내용이 없습니다."
|
||
},
|
||
"action": {
|
||
"view_member": "회원 정보 보기",
|
||
"search_by_sender": "이 발송자로 검색",
|
||
"search_by_recipient": "이 수신자로 검색"
|
||
},
|
||
"delete": {
|
||
"button": "삭제",
|
||
"selected_count": "{{count}}건 선택",
|
||
"bulk_button": "일괄 삭제",
|
||
"confirm_title": "발송 이력 삭제",
|
||
"confirm_message": "선택한 발송 이력을 삭제하시겠습니까? 이 작업은 되돌릴 수 없습니다.",
|
||
"success": "발송 이력이 삭제되었습니다.",
|
||
"bulk_confirm_title": "일괄 삭제 확인",
|
||
"bulk_confirm_message": "선택한 발송 이력을 모두 삭제하시겠습니까? 이 작업은 되돌릴 수 없습니다.",
|
||
"bulk_success": "선택한 발송 이력이 모두 삭제되었습니다."
|
||
}
|
||
},
|
||
"identity": {
|
||
"challenge": {
|
||
"title": "본인 확인",
|
||
"code_title": "인증 코드 입력",
|
||
"code_subtitle": "전송된 6자리 코드를 입력해주세요.",
|
||
"code_placeholder": "인증 코드",
|
||
"verify": "확인",
|
||
"resend": "코드 재전송",
|
||
"resend_link": "이메일 재전송",
|
||
"resend_cooldown": "재전송 ({{seconds}}초 후)",
|
||
"resend_success": "인증 코드를 재전송했습니다.",
|
||
"remaining_time": "남은 시간: {{minutes}}:{{seconds}}",
|
||
"remaining_attempts": "남은 시도: {{count}}회",
|
||
"expired": "시간이 만료되었습니다. 재전송을 눌러주세요.",
|
||
"link_title": "이메일 확인이 필요합니다",
|
||
"link_subtitle": "메일로 전송된 링크를 클릭해 본인 확인을 완료해주세요.",
|
||
"check_spam": "메일이 도착하지 않으면 스팸함을 확인해주세요.",
|
||
"external_title": "외부 본인인증으로 이동 중",
|
||
"external_subtitle": "잠시 후 본인인증 서비스로 자동 이동됩니다.",
|
||
"manual_redirect": "수동으로 이동하기",
|
||
"error_generic": "인증에 실패했습니다. 다시 시도해주세요."
|
||
},
|
||
"policies": {
|
||
"page_title": "본인인증 정책 관리",
|
||
"page_description": "회원가입·비밀번호 재설정·민감 작업 등 어떤 시점에 본인인증을 요구할지 정책으로 관리합니다. 코어/모듈/플러그인이 제공한 기본 정책은 일부 필드만 편집 가능하며, 운영자가 직접 추가한 정책은 자유롭게 편집·삭제할 수 있습니다.",
|
||
"purposes_section_title": "코어가 제공하는 본인인증 목적",
|
||
"purposes_section_description": "코어가 기본으로 제공하는 본인인증 목적입니다. 정책의 \"인증 목적\" 컬럼에서 선택할 수 있으며, 모듈/플러그인이 추가 목적을 선언하면 해당 모듈/플러그인 환경설정 화면에 표시됩니다.",
|
||
"purposes_empty": "코어가 제공하는 본인인증 목적이 없습니다.",
|
||
"all_scopes": "전체 강제 시점",
|
||
"all_sources": "전체 출처",
|
||
"search_placeholder": "정책 키 또는 강제 위치로 검색",
|
||
"reset_filters": "검색 초기화",
|
||
"empty": "등록된 정책이 없습니다.",
|
||
"add_button": "+ 정책 추가",
|
||
"create_title": "정책 추가",
|
||
"edit_title": "정책 편집",
|
||
"save_success": "정책을 저장했습니다.",
|
||
"delete_title": "정책 삭제",
|
||
"delete_confirm": "이 정책을 삭제하시겠습니까? (운영자 추가 정책만 삭제할 수 있습니다)",
|
||
"delete_success": "정책을 삭제했습니다.",
|
||
"delete_failed": "정책 삭제에 실패했습니다.",
|
||
"enable_success": "정책을 활성화했습니다.",
|
||
"disable_success": "정책을 비활성화했습니다.",
|
||
"toggle_failed": "정책 활성 상태 변경에 실패했습니다.",
|
||
"pagination_summary": "총 {{total}}건 · {{page}}/{{last}} 페이지",
|
||
"page_indicator": "{{page}} / {{last}}",
|
||
"col": {
|
||
"key": "정책 키",
|
||
"scope": "강제 시점",
|
||
"target": "강제 위치",
|
||
"purpose": "인증 목적",
|
||
"grace_minutes": "재요구 주기 (분)",
|
||
"priority": "우선순위",
|
||
"enabled": "활성",
|
||
"source_type": "출처"
|
||
},
|
||
"scope": {
|
||
"route": "API 호출 시",
|
||
"hook": "이벤트 발생 시",
|
||
"custom": "사용자 정의"
|
||
},
|
||
"scope_desc": {
|
||
"route": "사용자가 특정 API 라우트를 호출할 때 (예: 회원가입, 비밀번호 재설정)",
|
||
"hook": "내부 이벤트 발생 시 (예: 회원가입 완료 직후, 사용자 정보 변경 직전)",
|
||
"custom": "플러그인이 정의한 사용자 정의 시점"
|
||
},
|
||
"purpose": {
|
||
"signup": "회원가입",
|
||
"password_reset": "비밀번호 재설정",
|
||
"self_update": "프로필 변경",
|
||
"sensitive_action": "민감 작업"
|
||
},
|
||
"source": {
|
||
"core": "코어",
|
||
"module": "모듈",
|
||
"plugin": "플러그인",
|
||
"admin": "운영자"
|
||
},
|
||
"fail_mode": {
|
||
"block": "요청 차단",
|
||
"log_only": "감사 로그만 (요청 통과)"
|
||
},
|
||
"applies_to": {
|
||
"self": "본인 (관리자 제외)",
|
||
"admin": "관리자만",
|
||
"both": "전체"
|
||
},
|
||
"form": {
|
||
"key": "정책 키",
|
||
"scope": "강제 시점",
|
||
"scope_help": "어떤 종류의 요청에서 본인인증을 강제할지 선택합니다.",
|
||
"target": "강제 위치",
|
||
"target_help": "강제 시점 종류에 따라 라우트 이름(예: api.auth.register) 또는 이벤트 이름(예: core.auth.after_register) 을 입력합니다.",
|
||
"purpose": "인증 목적",
|
||
"purpose_help": "이 정책이 어떤 종류의 본인인증을 요구하는지 선택합니다.",
|
||
"provider_id": "인증 수단",
|
||
"use_default_provider": "(기본 인증 수단 사용)",
|
||
"grace_minutes": "재요구 주기 (분) — 0: 매번 요구",
|
||
"grace_minutes_help": "이 시간 안에 본인인증을 마쳤다면 다시 요구하지 않습니다. 0 으로 두면 매번 본인인증을 요구합니다.",
|
||
"applies_to": "적용 대상",
|
||
"fail_mode": "실패 시 처리",
|
||
"priority": "우선순위",
|
||
"priority_desc": "같은 위치에 정책이 여러 개일 때 숫자가 클수록 먼저 적용됩니다. 같은 위치에 같은 숫자를 두면 어느 정책이 먼저 적용될지 정해지지 않으므로 저장이 거부됩니다.",
|
||
"enabled": "정책 활성화",
|
||
"conditions": "추가 조건 (JSON)",
|
||
"signup_stage": "회원가입 단계",
|
||
"signup_stage_unset": "(미지정)",
|
||
"signup_stage_before_submit": "가입 제출 전 — 가입 폼 제출과 함께 인증 코드 동봉 필수",
|
||
"signup_stage_after_create": "가입 후 활성화 전 — 가입 직후 인증 안내 발송, 인증 완료 후 활성화",
|
||
"signup_stage_desc": "회원가입 정책에서 어느 단계에 본인인증을 요구할지 지정합니다.",
|
||
"declared_policy_notice": "코어/모듈/플러그인이 제공한 기본 정책입니다. 정책 키 · 강제 시점 · 강제 위치는 변경할 수 없고, 그 외 항목(인증 목적 · 적용 대상 · 인증 수단 · 재요구 주기 · 실패 처리 · 활성화 등)은 자유롭게 편집할 수 있으며, 운영자가 수정한 값은 업데이트 후에도 그대로 유지됩니다.",
|
||
"reset_to_default": "기본값으로 되돌리기",
|
||
"reset_success": "기본값으로 복원했습니다."
|
||
}
|
||
},
|
||
"logs": {
|
||
"page_title": "본인인증 이력",
|
||
"page_description": "본인인증 요청/검증/만료 이력을 조회합니다. 기본 보관주기는 180일입니다.",
|
||
"detail_title": "인증 이력 상세",
|
||
"search_placeholder": "사용자 ID 또는 대상 식별자 검색",
|
||
"all_providers": "모든 인증 수단",
|
||
"all_purposes": "모든 인증 목적",
|
||
"all_statuses": "모든 상태",
|
||
"empty": "이력이 없습니다.",
|
||
"purge_button": "오래된 로그 일괄 파기",
|
||
"purge_confirm": "180일이 지난 로그를 모두 삭제합니다. 진행하시겠습니까?",
|
||
"purge_success": "오래된 로그를 삭제했습니다.",
|
||
"tab_all": "전체 인증 수단",
|
||
"refresh": "새로고침",
|
||
"total_count": "총 {{count}}건",
|
||
"search_type": {
|
||
"auto": "자동",
|
||
"user_id": "사용자 ID",
|
||
"target_hash": "대상 식별자",
|
||
"ip_address": "IP 주소",
|
||
"policy_key": "정책 키"
|
||
},
|
||
"filter": {
|
||
"status_label": "상태",
|
||
"purpose_label": "인증 목적",
|
||
"channel_label": "채널",
|
||
"date_range_label": "기간",
|
||
"origin_type_label": "발생 유형",
|
||
"source_type_label": "출처",
|
||
"source_type_any": "전체",
|
||
"source_identifier_label": "출처 식별자",
|
||
"source_identifier_placeholder": "예: sirsoft-ecommerce",
|
||
"advanced_search_toggle": "고급 검색",
|
||
"search_button": "검색",
|
||
"reset_button": "초기화",
|
||
"status_all": "전체",
|
||
"purpose_all": "전체"
|
||
},
|
||
"origin_type": {
|
||
"route": "라우트",
|
||
"hook": "훅",
|
||
"policy": "정책",
|
||
"middleware": "미들웨어",
|
||
"api": "API 직접 호출",
|
||
"custom": "커스텀",
|
||
"system": "시스템"
|
||
},
|
||
"sort": {
|
||
"created_at_desc": "최신순",
|
||
"created_at_asc": "오래된순",
|
||
"attempts_desc": "시도 많은 순"
|
||
},
|
||
"detail": {
|
||
"expanded": {
|
||
"target_hash_label": "대상 식별자",
|
||
"origin_label": "발생 위치",
|
||
"origin_policy_key_label": "정책 키",
|
||
"properties_label": "추가 속성",
|
||
"metadata_label": "부가 정보",
|
||
"no_properties": "추가 속성이 없습니다.",
|
||
"no_metadata": "부가 정보가 없습니다."
|
||
}
|
||
},
|
||
"col": {
|
||
"created_at": "생성일시",
|
||
"provider_id": "인증 수단",
|
||
"purpose": "인증 목적",
|
||
"channel": "채널",
|
||
"status": "상태",
|
||
"user_id": "사용자",
|
||
"ip_address": "IP",
|
||
"verified_at": "검증시각",
|
||
"expires_at": "만료시각",
|
||
"attempts": "시도",
|
||
"origin_type": "발생 유형",
|
||
"origin_identifier": "발생 지점"
|
||
},
|
||
"status": {
|
||
"requested": "요청됨",
|
||
"sent": "발송됨",
|
||
"verified": "검증됨",
|
||
"failed": "실패",
|
||
"expired": "만료됨",
|
||
"cancelled": "취소됨",
|
||
"policy_violation_logged": "정책 위반 기록"
|
||
}
|
||
}
|
||
},
|
||
"modal_label": {
|
||
"activity_log_list": {
|
||
"delete_confirm_modal": "활동 로그 삭제 확인",
|
||
"bulk_delete_confirm_modal": "활동 로그 일괄 삭제 확인"
|
||
},
|
||
"admin_module_list": {
|
||
"extension_license_modal": "확장 라이선스 전문",
|
||
"module_force_activate_modal": "모듈 강제 활성화",
|
||
"module_force_deactivate_modal": "모듈 강제 비활성화",
|
||
"module_install_modal": "모듈 설치",
|
||
"module_manual_install_modal": "모듈 수동 설치",
|
||
"module_reactivate_language_packs_modal": "언어팩 일괄 활성화",
|
||
"module_refresh_layouts_modal": "모듈 레이아웃 갱신",
|
||
"module_uninstall_modal": "모듈 삭제",
|
||
"module_update_modal": "모듈 업데이트",
|
||
"module_deactivate_warning_modal": "모듈 비활성화 경고",
|
||
"module_detail_modal": "모듈 상세",
|
||
"module_manifest_preview_drawer": "모듈 매니페스트 미리보기"
|
||
},
|
||
"admin_plugin_list": {
|
||
"plugin_manual_install_modal": "플러그인 수동 설치",
|
||
"plugin_reactivate_language_packs_modal": "언어팩 재활성화",
|
||
"plugin_refresh_layouts_modal": "플러그인 레이아웃 갱신",
|
||
"plugin_uninstall_modal": "플러그인 삭제",
|
||
"plugin_update_modal": "플러그인 업데이트",
|
||
"plugin_detail_modal": "플러그인 상세",
|
||
"plugin_extension_license_modal": "플러그인 라이선스 전문",
|
||
"plugin_force_activate_modal": "플러그인 강제 활성화",
|
||
"plugin_force_deactivate_modal": "플러그인 강제 비활성화",
|
||
"plugin_install_modal": "플러그인 설치 확인",
|
||
"plugin_manifest_preview_drawer": "플러그인 매니페스트 미리보기"
|
||
},
|
||
"admin_settings": {
|
||
"modal_identity_message_definition_add": "본인인증 메시지 정의 추가",
|
||
"modal_identity_message_definition_delete": "본인인증 메시지 정의 삭제",
|
||
"modal_identity_message_definition_reset": "본인인증 메시지 기본값 복원",
|
||
"modal_identity_message_template_form": "본인인증 메시지 템플릿 편집",
|
||
"modal_identity_message_template_preview": "본인인증 메시지 템플릿 미리보기",
|
||
"identity_policy_delete_modal": "본인인증 정책 삭제 확인",
|
||
"identity_policy_form_modal": "본인인증 정책 편집",
|
||
"modal_mail_template_form": "메일 템플릿 편집",
|
||
"modal_notification_definition_reset": "알림 정의 기본값 복원",
|
||
"modal_notification_template_form": "알림 템플릿 편집",
|
||
"modal_notification_template_preview": "알림 템플릿 미리보기",
|
||
"settings_cache_delete_modal": "캐시 삭제 확인",
|
||
"settings_password_confirm_modal": "앱 키 재생성 비밀번호 확인",
|
||
"core_changelog_modal": "코어 변경 이력",
|
||
"core_update_guide_modal": "코어 업데이트 안내",
|
||
"core_update_result_modal": "코어 업데이트 확인 결과"
|
||
},
|
||
"admin_template_list": {
|
||
"template_activate_modal": "템플릿 활성화 확인",
|
||
"template_deactivate_modal": "템플릿 비활성화",
|
||
"template_detail_modal": "템플릿 상세 정보",
|
||
"template_extension_license_modal": "템플릿 라이선스 전문",
|
||
"template_force_activate_modal": "템플릿 강제 활성화",
|
||
"template_install_modal": "템플릿 설치 확인",
|
||
"template_manual_install_modal": "템플릿 수동 설치",
|
||
"template_reactivate_language_packs_modal": "언어팩 일괄 활성화",
|
||
"template_refresh_layouts_modal": "템플릿 레이아웃 갱신",
|
||
"template_uninstall_modal": "템플릿 제거 확인",
|
||
"template_update_modal": "템플릿 업데이트",
|
||
"template_manifest_preview_drawer": "템플릿 매니페스트 미리보기"
|
||
},
|
||
"notification_log_list": {
|
||
"delete_confirm_modal": "알림 로그 삭제 확인",
|
||
"bulk_delete_confirm_modal": "알림 로그 일괄 삭제 확인"
|
||
},
|
||
"user_list": {
|
||
"bulk_activate_confirm_modal": "회원 일괄 활성화",
|
||
"bulk_deactivate_confirm_modal": "회원 일괄 비활성화",
|
||
"delete_confirm_modal": "회원 삭제 확인",
|
||
"error_modal": "오류 안내",
|
||
"bulk_block_confirm_modal": "회원 일괄 차단",
|
||
"bulk_withdraw_confirm_modal": "회원 일괄 탈퇴"
|
||
},
|
||
"admin_identity_logs": {
|
||
"identity_log_detail_modal": "본인인증 로그 상세",
|
||
"identity_log_purge_confirm_modal": "본인인증 로그 정리"
|
||
},
|
||
"admin_language_pack_list": {
|
||
"language_pack_detail_modal": "언어팩 상세",
|
||
"language_pack_install_modal": "언어팩 설치",
|
||
"language_pack_install_bundled_modal": "번들 언어팩 설치",
|
||
"language_pack_refresh_cache_modal": "언어팩 캐시 갱신",
|
||
"language_pack_slot_conflict_modal": "언어팩 슬롯 교체 확인",
|
||
"language_pack_uninstall_modal": "언어팩 제거",
|
||
"language_pack_update_modal": "언어팩 업데이트",
|
||
"language_pack_manifest_preview_drawer": "언어팩 매니페스트 미리보기"
|
||
},
|
||
"admin_role_list": {
|
||
"delete_confirm_modal": "역할 삭제 확인"
|
||
},
|
||
"admin_schedule_list": {
|
||
"schedule_delete_modal": "스케줄 삭제",
|
||
"schedule_duplicate_modal": "스케줄 복제",
|
||
"schedule_form_modal": "스케줄 등록/수정",
|
||
"schedule_history_modal": "스케줄 실행 이력",
|
||
"schedule_run_modal": "스케줄 즉시 실행"
|
||
},
|
||
"admin_notification_log_list": {
|
||
"modal_notification_log_detail": "알림 발송 이력 상세"
|
||
},
|
||
"identity_challenge_modal": "본인인증",
|
||
"admin_menu_list": {
|
||
"delete_confirm_modal": "메뉴 삭제 확인"
|
||
},
|
||
"admin_template_layout_edit": {
|
||
"extension_preview_layout_modal": "미리보기 레이아웃 선택",
|
||
"extension_version_history_modal": "확장 버전 이력",
|
||
"version_history_modal": "레이아웃 버전 이력"
|
||
},
|
||
"changelog_modal": "코어 변경 이력",
|
||
"license_modal": "코어 라이선스",
|
||
"notification_delete_all_confirm_modal": "알림 전체 삭제 확인"
|
||
}
|
||
}
|