KuzuhaScriptPHP+ (ksphp-plus) 설치 안내
대상: 게시글 링크 이미지 썸네일 기능 (js/imgthumb.js) /
      JavaScript 다국어 지원 (window.KSPHP_LANG)
기록 형식: ISO 8601 (분 단위), 시간대는 UTC
작성: 2026-07-17T05:05 UTC

============================================================
[이 zip에 포함된 것]
------------------------------------------------------------
기존 게시판 스크립트 전체와는 별도로, 이번에 추가・변경된
파일만 담은 차분(diff) 패키지입니다. 폴더 구조는 원본 그대로
(sub/, js/, language/, doc/) 유지합니다.

  bbs.php                      ... JS용 언어 데이터 출력 처리 추가
  sub/template.html            ... <script> 로드・삽입 태그 추가
  js/imgthumb.js               ... 신규: 게시글 링크 이미지 썸네일 표시
  js/ayashiibreaker.js         ... 다국어 지원 (수정)
  js/upthumb.js                ... 다국어 지원 (수정)
  js/vanish.js                 ... 다국어 지원 (수정, 판정 로직 버그 수정 포함)
  js/admin.js                  ... 다국어 지원 (수정)
  language/english.txt         ... 신규 키 추가
  language/japanese.txt        ... 신규 키 추가
  doc/changelog-2026-07-16-01.txt ... 통합 changelog (이번 작업분 포함)
  doc/CSScheck.txt             ... 이전 CSS 조사 보고서 (참고용 동봉)
  설치 안내.txt                 ... 이 파일

  * language/*.txt는 기존 게시판 스크립트 측과 JS 측 양쪽에서
    공유하여 참조하는 단일 파일입니다. 파일이 나뉘어 있지 않습니다.

============================================================
[1. 게시글 링크 이미지 썸네일 기능 (js/imgthumb.js)]
------------------------------------------------------------
게시글 본문의 URL이 실제로 존재하는 이미지 파일(기본 지원 확장자:
jpg/jpeg/png/gif/webp/bmp/avif/svg)을 가리키는 경우, 해당 URL
오른쪽에 썸네일을 자동으로 표시합니다.

  ・기존 js/upthumb.js(특정 업로더의 알려진 디렉터리 구조 전용)와는
    독립된 별도 파일입니다. 둘 다 동시에 사용할 수 있습니다.
  ・표시 전에 HEAD 요청으로 URL의 실제 존재 여부와 Content-Type이
    image/*인지 확인한 후 표시합니다(확장자만으로 판단하지 않습니다).
  ・게시 폼 옆(기존 "Uploader thumbnails"와 같은 줄)에
    "Link thumbnails" 체크박스가 추가됩니다. On/Off 상태는
    브라우저의 localStorage에 저장되며, 서버로는 전송되지 않습니다.
  ・대상 확장자 필터링은 개인 환경설정 화면(?setup=1)에 자동으로
    추가되는 체크박스 그룹에서 설정합니다. 기본값은 전체 선택입니다.
    이 역시 localStorage에만 저장되며, 설정 폼 전송에는 포함되지
    않습니다.

  [설치 절차]
  1. js/imgthumb.js를 js/ 디렉터리에 배치.
  2. sub/template.html을 교체(<head> 안의 스크립트 로드 부분에
     <script src="js/imgthumb.js" defer></script> 한 줄이
     추가되어 있습니다).
  3. bbs.php를 교체(아래 설명하는 window.KSPHP_LANG 삽입 처리 포함).
  4. language/english.txt・language/japanese.txt를 교체
     (신규 키 12개 추가 완료. 기존 키는 변경하지 않았습니다).
  별도 설정은 필요 없습니다. 파일을 배치하는 것만으로 활성화됩니다.

============================================================
[2. JavaScript 다국어 지원 (window.KSPHP_LANG)]
------------------------------------------------------------
지금까지 게시판 본체(PHP 템플릿)는 언어 파일(language/*.txt)로
다국어 지원이 되어 있었지만, js/ 이하 스크립트 내의 문구(버튼
레이블 등)는 대상 밖으로, 항상 고정 표시였습니다.

이번에 bbs.php 측에서 언어 파일 내용을 JSON화하여, HTML의
<head> 안, 다른 스크립트보다 먼저

    <script>window.KSPHP_LANG = { ... };</script>

형태로 삽입하는 구조를 추가했습니다. 이를 통해 js/ 이하의
스크립트에서

    window.KSPHP_LANG.키_이름

형태로 language/*.txt에 정의된 문구를 직접 참조할 수 있습니다.
(예: window.KSPHP_LANG.MAKE_LINE_BREAKS_BTN)

  [이번에 이 구조에 대응시킨 파일]
  js/ayashiibreaker.js, js/upthumb.js, js/imgthumb.js, js/vanish.js,
  js/admin.js의 5개 파일.

  [향후 새로운 JS 파일을 다국어 지원시키는 경우]
  1. language/english.txt・language/japanese.txt에 키와 한국어/영어
     각각의 문구를 추가한다(기존 키・값 형식에 맞춰 KEY=값의 한 줄
     형식으로).
  2. JS 파일 측에서 `window.KSPHP_LANG.키_이름`을 참조한다. 아직
     로드되지 않은 경우를 대비해
     `(window.KSPHP_LANG && window.KSPHP_LANG.키_이름) || "기본값"`
     형태로 대체값(fallback)을 준비할 것을 권장합니다.
  3. 서버 측(PHP) 변경은 필요 없습니다(window.KSPHP_LANG은 모든
     페이지에서 자동으로 출력됩니다).

============================================================
[동작 확인 완료 사항]
------------------------------------------------------------
- 전체 PHP 파일: php -l로 구문 오류 없음
- 전체 JS 파일(수정・신규분): node --check로 구문 오류 없음
- language/english.txt・language/japanese.txt: 키 개수 일치(216개),
  중복 키 없음
- 게시판 메인・과거 로그 검색・트리 보기・관리자 로그인
  (GET/POST)・개인 설정 화면・관리 메뉴의 모든 경로에서, 한국어
  기준 원본인 일본어・영어 두 LANGUAGE_FILE 설정 모두 HTTP 200,
  {PLACEHOLDER} 렌더링 잔여 없음, window.KSPHP_LANG이 유효한
  JSON으로 출력되는 것을 확인했습니다.
