현지화
이 페이지는 제품 자체 UI의 언어를 다룬다. 게임 텍스트의 현지화 — 키, 번역, Unity Localization StringTable — 는 별도의 페이지를 가진 다른 주제다: 현지화 시트.
제품 UI — 메뉴, 작성 창, 인스펙터, 대화상자, 리포트, 툴팁 — 은 10개 언어로 제공된다:
English (기본값) · 한국어 · 日本語 · 简体中文 · 繁體中文 · Español · Français · Deutsch · Português (Brasil) · Русский
어떤 리포트 조각이 영어로 남는지를 포함한 정확한 경계는 아래 "현지화 경계"에서 다룬다.
언어 변경하기
- 첫 실행 시, UI 언어는 에디터의 OS 언어로부터 자동으로 설정된다(아홉 개 언어가 직접 매핑되며, 그 외에는 영어로 남는다). 콘솔 줄이 그 선택을 알려준다 — 아래처럼 언제든 변경할 수 있으며, 명시적으로 선택한 언어는 결코 덮어써지지 않는다.
- Edit ▸ Preferences ▸ SheetForge → 언어 팝업, 또는 임포트 설정 인스펙터 상단의 "Editor language" 필드(둘 다 동일한 값을 읽고 쓴다).
- 언어는 사용자별 설정이다(EditorPrefs) — 모든 팀원이 자신의 언어를 사용하며, 이는 버전 관리에 전혀 영향을 미치지 않는다(VCS 변경 이력 없음).
메뉴도 현지화된다
[MenuItem] 라벨은 정적 애트리뷰트이며 런타임에 변경될 수 없으므로, SheetForge는 선택된 언어로 얇은 메뉴 파일(Assets/SheetForge/Editor/Generated/, gitignore됨)을 재생성한다. 언어를 변경하면 짧은 재컴파일이 한 번 트리거된다 — 반복 없음, 동일한 내용은 결코 다시 기록되지 않는다.
폴더가 없거나 언어가 일치하지 않는 경우(예: 클론 직후), 자동으로 자가 치유된다. Tools/SheetForge 루트는 고정된 브랜드 상수이며, 리프 라벨은 언어를 따른다.
임포트/Export/Push가 실행되는 동안에는 언어 변경이 잠긴다 — 메뉴 재생성 재컴파일이 실행 중인 파이프라인을 방해해서는 안 되기 때문이다. 완료된 후에 변경하라.
현지화 경계
10개 언어 모두에서 완전히 현지화된 것:
- 에디터가 그리는 UI: 메뉴, 작성 창, 인스펙터, 대화상자, 버튼, 툴팁.
- 리포트 뼈대와 모든 에러의 "왜"/"어떻게" 문장.
인라인 영어(현지화된 뼈대 내부):
- 리포트의 세부 조각들 — 문제가 된 값, 최근접 일치 제안, 그 밖의 런타임에 보간되는 부분(이들은 언어 테이블 키로 존재할 수 없다).
- 저수준 예외와 개발자 로그(
[SheetForge]).
한 가지 남은 격차를 정직하게 밝히자면: 1,043개 키 중 약 345–360개 — 데이터 스튜디오의 ui.studio.* 키 227개에 테마 설정과 가장 최근의 대화상자·로그 문구를 더한 것 — 는 영어와 한국어를 제외한 나머지 여덟 개 언어에서 여전히 영어 텍스트를 담고 있다.
모든 키는 모든 파일에 존재하며, 패리티는 테스트로 강제되어 원문 키로 폴백하는 일은 없다. 이는 구조적 공백이 아니라 아직 이루어지지 않은 번역 작업일 뿐이다. 기능 및 제한 ▸ 현지화 범위 참고.
두 테스트 하네스 모두에 대한 가드 테스트가 제품 소스에 하드코딩된 한국어 문자열이 없음을 강제한다 — 개발 언어가 UI로 새어 나가는 일은 결코 없다. (유일한 데이터 예외: 언어 선택기 안의 각 언어의 자기 이름, 예: 한국어.)
번역 추가 또는 수정하기
각 언어는 정확히 파일 하나다: Assets/SheetForge/Core/Tooling/Localization/Lang/Lang{Language}.cs — 순수한 정적 딕셔너리이므로, 번역가들은 언어 간 병합 충돌 없이 병렬로 작업할 수 있다.
- 영어(
LangEn)가 정본 키 목록이다. 다른 모든 언어는 동일한 키를 모두 포함해야 한다. - 패리티 테스트는 어떤 언어에서든 누락된 키, 초과된 키, 손상된 플레이스홀더(
{name})를 즉시 잡아낸다. - 번역을 조정하려면: 해당 언어의 파일을 편집하고, 플레이스홀더를 그대로 유지한 채, 테스트를 실행한다.