Files
Gnuboard7/templates/_bundled/sirsoft-admin_basic/lang/partial/ko/admin.json
T
HeuJung b6c5e1f323 feat(core): 리버스 프록시 신뢰 설정 지원 및 미설정 진단
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 제보)
2026-08-28 18:09:27 +09:00

2861 lines
145 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"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": "알림 전체 삭제 확인"
}
}