예외 메시지 한/영 이중화 기반 작업과 1차 적용 (v1.18.0) - #48
Merged
Conversation
영어 UI에서도 오류 대화상자에 한국어 문구가 그대로 나오던 문제입니다.
예외 타입은 바꾸지 않았습니다. catch (InvalidDataException)처럼 타입에
의존하는 곳이 20군데 있어 전용 예외 타입을 도입하면 그 흐름이 모두
바뀝니다. 대신 Localized(new XException("한국어"), "English")로
Exception.Data에 영어 문구만 덧붙이고, DescribeException이 현재 언어에
맞는 문구를 고릅니다. 영어 문구가 없는 예외는 지금까지와 동일하게
원래 메시지를 사용하므로 변환하지 않은 경로도 안전합니다.
- 표시 경로 30곳을 DescribeException으로 변경
- throw 지점 121곳 변환: OperationsHistory 16, ManagedServerHandoff 12,
StorageConfiguration 2, WindowsNotifications 6, ServerTrash 6,
BackgroundAgent 16, ServerAutomation 22, DiscordRemoteManagement 41
남은 throw 지점 약 266곳은 영어 문구가 없어 기존과 동일하게 한국어로
표시됩니다. 상세 목록은 docs/ai/SYNC_STATE.md에 남겼습니다.
회귀 테스트는 예외 타입 보존, 언어별 문구 선택, 영어 문구에 한글이
남지 않는지, 미변환 예외의 기존 동작 유지를 확인합니다.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01A4KU6BZL5oWTjH2eDB18Yu
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
영어 UI에서도 오류 대화상자에 한국어 문구가 그대로 나오던 문제를 다룹니다.
접근 방식 — 예외 타입은 바꾸지 않았습니다
전용 예외 타입(
LauncherException등)을 도입하는 게 교과서적이지만, 이 코드베이스에는catch (InvalidDataException),catch (WebException),catch (CryptographicException)처럼 타입에 의존하는 catch가 20군데 있습니다. 타입을 바꾸면 그 흐름이 전부 달라져 회귀 위험이 큽니다.대신 타입은 그대로 두고
Exception.Data에 영어 문구만 덧붙였습니다.DescribeException(exception)이 현재 언어에 맞는 문구를 고르고, 영어 문구가 없으면 지금까지와 동일하게exception.Message를 그대로 반환합니다. 변환하지 않은 경로도 안전하고, 남은 작업을 점진적으로 이어갈 수 있습니다.적용 범위
표시 경로 30곳 —
ShowMineHarborDialog,ShowLauncherMessage, 상태 레이블, 콘텐츠 작업 표시줄이 현재 언어에 맞는 문구를 고르도록 했습니다.throw 지점 121곳 변환
설정 저장·불러오기와 예약 자동화처럼 사용자가 실제로 오류를 자주 만나는 경로를 우선했습니다.
남은 작업
약 266곳이 아직 한국어 전용입니다:
decompiled/Launcher.decompiled.cs(67),ContentManagementServices(60),RuntimeCompatibility(45),BackupAndProfileTools(30),ContentAndDiagnostics(21),DuplicationSettings(16),QuickCommandsAndBridge(12), 그 외.이 문구들은 영어 문구가 없으므로 기존과 똑같이 한국어로 표시됩니다 — 동작이 나빠지지는 않지만 아직 해결되지도 않았습니다. 387곳을 한 번에 손대는 것보다 나눠서 검증하는 편이 안전하다고 판단했습니다. 다음 담당자는 같은
Localized(new ...)방식으로 이어가면 되고,docs/ai/SYNC_STATE.md에 파일별 잔여 목록을 남겼습니다.검증
회귀 테스트
TestLocalizedExceptionMessages가 확인하는 것:InvalidDataException그대로인지 (catch 절 회귀 방지)null이 기존 동작을 유지하는지Generated by Claude Code