엔진에서 올라오는 실패 메시지 대부분이 아직 영어로 노출됩니다. 한국어로 쓰는 사용자에게는 한국어 UI 한가운데 영문 문장과 RpcError: 접두어가 그대로 보입니다.
#43에서 번역 메커니즘과 첫 사례(AI 데이터 전송 동의)를 처리했지만, 나머지는 그대로입니다.
현황
MethodError 생성 지점 : 312곳
reason 코드가 붙은 곳 : 2곳
즉 310곳이 아직 엔진의 영문 문장을 그대로 내보냅니다. 프론트엔드는 String(e)로 표시하므로 Go 코드가 쓴 문장이 곧 사용자가 읽는 문장입니다.
제안하는 방식
#43에서 만든 구조를 그대로 확장하면 됩니다. 프로토콜 변경은 필요 없습니다.
- 엔진:
engine/internal/rpc/reason.go에 reason 코드를 추가하고, 해당 MethodError에 Data: rpc.ReasonData(...)를 붙입니다. Message는 로그용으로 영문 유지.
- 프론트엔드:
apps/desktop/src/lib/rpcMessage.ts의 REASON_MESSAGE_KEYS에 매핑을 추가하고, i18n.tsx의 ko/en/ja 세 곳에 문구를 넣습니다.
코드가 없는 실패는 엔진 메시지로 폴백하므로, 한 번에 다 하지 않고 점진적으로 옮겨도 안전합니다.
우선순위 제안
312곳을 모두 옮길 필요는 없어 보입니다. 사용자가 실제로 마주치는 순서로 좁히는 편이 낫습니다.
- 설정 화면: 제공자 연결 테스트, 모델 목록 가져오기, API 키 저장, web_search 테스트
- 동기화: Git 동기화, 폴더 동기화 실패
- 가져오기/내보내기 실패
- 엔진 시작 실패(진단 화면)
내부 오류나 개발자만 보는 경로는 영문으로 두어도 무방합니다.
참고
관련: #43
엔진에서 올라오는 실패 메시지 대부분이 아직 영어로 노출됩니다. 한국어로 쓰는 사용자에게는 한국어 UI 한가운데 영문 문장과
RpcError:접두어가 그대로 보입니다.#43에서 번역 메커니즘과 첫 사례(AI 데이터 전송 동의)를 처리했지만, 나머지는 그대로입니다.
현황
즉 310곳이 아직 엔진의 영문 문장을 그대로 내보냅니다. 프론트엔드는
String(e)로 표시하므로 Go 코드가 쓴 문장이 곧 사용자가 읽는 문장입니다.제안하는 방식
#43에서 만든 구조를 그대로 확장하면 됩니다. 프로토콜 변경은 필요 없습니다.
engine/internal/rpc/reason.go에 reason 코드를 추가하고, 해당MethodError에Data: rpc.ReasonData(...)를 붙입니다.Message는 로그용으로 영문 유지.apps/desktop/src/lib/rpcMessage.ts의REASON_MESSAGE_KEYS에 매핑을 추가하고,i18n.tsx의 ko/en/ja 세 곳에 문구를 넣습니다.코드가 없는 실패는 엔진 메시지로 폴백하므로, 한 번에 다 하지 않고 점진적으로 옮겨도 안전합니다.
우선순위 제안
312곳을 모두 옮길 필요는 없어 보입니다. 사용자가 실제로 마주치는 순서로 좁히는 편이 낫습니다.
내부 오류나 개발자만 보는 경로는 영문으로 두어도 무방합니다.
참고
관련: #43