Files
discourse-korean-localization/docs/2026-10-15-localization-recovery.md
T
syskiller 5bad207526 포럼 한국어 번역 플러그인을 복구하고 배포 검사를 보강
비어 있던 운영 플러그인 경로를 전용 서비스 원본으로 복구했다.
음성 입장 안내와 주변 메뉴 및 관리자 번역을 실제 화면에서 확인했다.
관리자 주소용 내부 이름을 보존하고 보드 메뉴 두 곳의 제목을 복구했다.

검사: Ruby 문법과 YAML 11개 통과. 활성 번역 6004개와 음성 번역 561개 누락 0개.
일반 화면과 관리자 번역 및 보드 자산의 제공 해시를 확인했다.
PC와 390픽셀 모바일 안내창 및 관리자 메뉴 주소를 확인했다.
운영: app 컨테이너만 갱신. DB 구조 변경과 데이터 이전 없음.
백업: /var/discourse/shared/standalone/backups/forum-korean-20261015-1150
설정 백업은 별도 비밀 디렉터리의 권한 600 파일로 보관했다.
제한: DB 복원 시험과 다음 컨테이너 재생성은 이번 검사에 포함하지 않았다.
Trilium: Ubuntu 서버 운영 아래 Discourse 한국어 배포에 기록했다.
2026-10-14 22:44:52 +00:00

4.2 KiB

포럼 한국어 번역 복구

2026-10-15 · 이창현

원인과 수정

보조 서버의 app 컨테이너에는 한국어 보완 플러그인 연결 경로만 남아 있었다. 연결된 호스트 디렉터리가 비어 있어 플러그인을 불러오지 못했다. 데이터베이스에 따로 저장된 번역 530개는 남아 있어 일부 화면만 영어로 보였다. 음성 대화방 입장 안내의 한국어 원문은 전용 저장소에 이미 있었다.

전용 저장소 원본을 /home/syskiller/discourse-korean-localization에 복구했다. 게임 프로젝트 경로에 새 파일이나 바로가기를 만들지 않았다. 실행 플러그인 이름과 경로는 itosm-korean-localization로 맞췄다. 컨테이너 생성 설정의 연결 경로도 새 원본으로 바꿨다. 현재 컨테이너에는 실행 파일을 복사하고 재시작했다. 새 연결 설정은 다음 컨테이너 재생성 때 사용된다.

관리자 메뉴 검수 중 플러그인 내부 이름까지 번역하면 주소가 잘못 만들어지는 문제를 확인했다. 내부 이름은 유지하고 표시 이름만 번역하도록 고쳤다. 보드 메뉴 두 곳에 번역 키가 그대로 표시되는 문제도 기존 한국어 제목으로 복구했다. 보드 자산을 컴파일하고 서버가 새 파일을 제공하는지 확인했다. 컨테이너 재빌드에는 같은 제목 보완을 적용하는 단계도 추가했다.

검사

항목 결과
Ruby 문법과 한국어 YAML 11개 통과
활성 플러그인 번역 고유 키 6,004개 검사. 누락 0개
음성 대화 번역 561개 검사. 누락 0개
일반 코어 문구 사용자 문구 누락 없음. 문자 치환과 서수 처리 등 기반 기능 8개는 번역 대상에서 구분
실제 제공 자산 일반 화면과 관리자 화면 및 보드 자산의 내용 해시 일치
배포 실패 검출 재시작 전 예전 웹 번역을 제공할 때 검사 실패 확인
PC 화면 입장 안내의 제목과 본문 및 확인란과 버튼 한국어 표시 확인
모바일 화면 390×844에서 같은 안내 확인. 가로 넘침 없음
관리자 화면 대시보드와 보드 설정 및 한국어 메뉴 확인. 보드 경로 정상

원문과 같은 값 중 제품명과 기술 식별자 및 서식 문자열은 유지했다. 음성 통화에 실제 참여하거나 마이크 권한을 요청하지 않았다. 게임 서버는 변경하거나 재시작하지 않았다. 앞서 추가한 원티드 산스와 기존 글꼴 선택지도 유지했다.

배포 검사 개선

scripts/verify_deployment.sh는 원본 파일 해시와 Rails에서의 플러그인 로딩 및 주요 안내 문구와 활성 플러그인의 번역 누락을 확인한다. 이후 실제 웹 서버가 제공하는 번역과 보드 자산을 대조한다. 파일 존재와 HTTP 200만으로 완료 처리하지 않는다.

scripts/deploy.sh는 지정된 영구 원본 경로에서만 실행한다. 재시작 전에 번역을 검사하고 대상 포럼 컨테이너만 재시작한다. 보드 원본 구조가 달라졌다면 제목 보완 단계에서 중단한다.

백업과 복구

  • 일반 백업: /var/discourse/shared/standalone/backups/forum-korean-20261015-1150
  • DB 덤프: discourse-before.dump 21,728,860바이트. 복원 목록 3,527줄 확인.
  • 원본: source-before.tar, 보드 원본 두 파일과 boards-generated-before
  • 비밀 설정 백업: /home/syskiller/.local/share/discourse-backups/forum-korean-20261015-1150/app.yml · 권한 600
  • DB 구조 변경과 데이터 이전 없음. 일반 글과 계정 및 설정을 변경하지 않음.

문제 발생 시 변경 전 app.yml을 복원하고 새 플러그인 디렉터리를 로딩 대상에서 빼면 변경 전 상태로 돌아간다. 보드 원본과 생성 자산은 위 백업으로 복원한다. 이 절차는 번역이 빠진 이전 상태로 돌아가는 장애 대응용이다. DB 덤프는 별도 복원 시험을 하지 않았다.

검증 범위는 현재 활성 번역과 확인한 화면이다. 비활성 플러그인을 새로 켜거나 제품을 업데이트할 때는 번역 검사를 다시 실행한다.