Files
HeuJung 8cf829f953 fix(core,extensions): 설치 완료 스크롤 + 미인증 화면 테마 버튼 무반응 수정
Modern PHP User Group 2026-09 정기모임 설치 리뷰에서 접수된 제보 2건.

설치 완료·실패·중단·필수파일 안내는 페이지 최상단에 뜨는데, 진행 로그를 보느라
화면이 아래에 머물러 있으면 안내가 눈에 들어오지 않았다. 네 경로 모두 DOM 변경이
끝난 뒤 결과 섹션으로 부드럽게 이동시킨다(모션 최소화 설정 시 즉시 이동).

미인증 3화면의 테마 버튼은 setTheme 을 params.theme 으로 불렀는데 핸들러는
action.target 만 읽는다. 엔진에 상호 폴백이 없어 클릭이 콘솔 경고 한 줄만 남기고
아무 일도 하지 않았다. 로그인 이후 화면은 핸들러를 거치지 않는 ThemeToggle 을
쓰기 때문에 정상이었고, 그래서 이 세 화면에서만 나타났다.

같은 계약 불일치가 편집기 액션 레시피(admin 9·basic 3)와 두 템플릿 문서에도 있어
함께 고쳤다. 편집기로 만든 액션은 생성 즉시 no-op 이 되는데 오류가 남지 않는다.
정적 검사 레지스트리가 오히려 틀린 계약(params.theme 필수)을 강제하고 있어 올바른
형태를 막고 있었으므로 두 미러를 함께 정정했다.

테마를 고치는 과정에서 별개 결함이 드러났다. GDPR 스토리지 인터셉터가 기능 쿠키
미동의 상태에서 필수 목록 밖 저장을 부팅마다 파기하는데, 화면 테마가 그 목록에서
빠져 있었다. 저장소의 setItem 호출을 기계 도출해 대조한 결과 같은 이유로 사라지던
항목이 13건 더 있었다 — 비회원 주문 조회, 결제창 복귀 기록, 본인인증 복귀 기록,
관리자 화면 상태, 자산 주소 형식 캐시. 전량 필수로 분류하고, 동의 안내 문구가
"다크모드는 기능 쿠키" 라고 말하던 부분을 사실에 맞게 정정했다(기설치본의 저장된
문구는 업그레이드 스텝이 정정하며, 운영자가 고친 문구는 건드리지 않는다).

재발 방지는 허용목록을 직접 import 하고 모집단을 디렉토리 순회로 도출하는 커버리지
테스트가 맡는다 — 손으로 열거하지 않으므로 새 저장 키가 등재를 빠뜨리면 붉어진다.
2026-09-03 18:42:30 +09:00

86 lines
2.8 KiB
JSON

{
"all": "전체",
"view_all": "전체보기",
"loading": "로딩 중...",
"saving": "저장하는 중...",
"error": "오류가 발생했습니다.",
"success": "성공적으로 처리되었습니다.",
"validation_error": "입력 정보를 확인해주세요.",
"search": "검색",
"search_placeholder": "검색...",
"browse": "찾아보기",
"prev": "이전",
"next": "다음",
"column_selector": "컬럼 선택",
"column_selector_title": "표시할 컬럼 선택",
"column_selector_description": "테이블에 표시할 컬럼을 선택하세요",
"no_data": "데이터가 없습니다.",
"actions": "작업",
"required": "필수",
"cancel": "취소",
"delete": "삭제",
"list": "목록",
"deleting": "삭제 중...",
"processing": "처리 중...",
"confirm": "확인",
"save": "저장",
"edit": "편집",
"close": "닫기",
"close_modal": "모달 닫기",
"close_dialog": "대화상자 닫기",
"close_notification": "알림 닫기",
"error_occurred": "오류가 발생했습니다.",
"back": "뒤로",
"filter": "필터",
"reset": "초기화",
"select_placeholder": "선택하세요",
"no_results": "검색 결과가 없습니다",
"add_language": "언어 추가",
"pagination": "페이지네이션",
"first_page": "첫 페이지",
"prev_page": "이전 페이지",
"next_page": "다음 페이지",
"last_page": "마지막 페이지",
"page_n": "페이지 {{n}}",
"selected_count": "{{count}}개 선택됨",
"notifications": "알림",
"no_notifications": "알림이 없습니다",
"profile_settings": "프로필 설정",
"logout": "로그아웃",
"expand_sidebar": "사이드바 펼치기",
"collapse_sidebar": "사이드바 접기",
"expand": "펼치기",
"collapse": "접기",
"module": "모듈",
"plugin": "플러그인",
"status_active": "활성화",
"status_inactive": "비활성화",
"status_pending": "대기 중",
"status_error": "오류",
"template_preview": "{{vendor}}/{{name}} 템플릿 미리보기",
"update_available": "업데이트 가능",
"dependencies": "의존성",
"edit_layout": "레이아웃 편집",
"add": "추가",
"download": "다운로드",
"downloading": "다운로드 중...",
"send": "전송",
"sending": "전송 중...",
"download_failed": "다운로드에 실패했습니다.",
"retry": "재시도",
"preview": "미리보기",
"preview_off": "미리보기 끄기",
"html_mode": "HTML 모드",
"currency_unit": "원",
"enter_value": "값을 입력하세요",
"scope_type_all_desc": "모든 리소스에 접근 가능",
"scope_type_self_desc": "본인이 생성한 리소스만",
"scope_type_role_desc": "같은 역할의 사용자 리소스만",
"multilingual": {
"add_language": "언어 추가"
},
"refresh": "새로고침",
"activate": "활성화",
"skip": "건너뛰기"
}