피드로 돌아가기
Dev.toBackend
원문 읽기
FastAPI i18n 자동화를 통한 다국어 모델 및 유효성 검사 아키텍처 구현
FastAPI doesn't speak your users' language. Here's how to fix that.
AI 요약
Context
FastAPI 및 Pydantic의 기본 설계에 i18n 기능이 부재하여 다국어 지원 시 수동 JSON 핸들링 및 언어별 분기 로직이 반복되는 한계 존재. 특히 데이터베이스 모델, 유효성 검사 에러 메시지, API 응답 포맷 전반에서 일관성 없는 구현으로 인한 유지보수 비용 증가 문제 직면.
Technical Solution
- TranslatableMixin을 통한 SQLAlchemy 모델의 추상화 계층 구현으로 JSON 컬럼 내 언어별 데이터 저장 및 읽기 자동화
- getattribute 및 setattr 오버라이딩을 통한 런타임 필드 인터셉트 및 Locale 기반의 데이터 접근 제어
- LocaleMiddleware 도입으로 Accept-Language 헤더, 쿼리 파라미터, 쿠키 순의 우선순위를 가진 Locale 결정 메커니즘 구축
- SQLAlchemy Event Listener를 활용한 데이터 직렬화 및 역직렬화 프로세스의 투명한 처리
- Pydantic 유효성 검사 에러 메시지에 대한 번역 레이어 추가를 통한 일관된 다국어 에러 응답 체계 설계
- 표준화된 Response Helper 도입을 통한 프런트엔드 전달 데이터 구조의 단일화
실천 포인트
- 다국어 필드 설계 시 JSON 타입을 활용한 Key-Value 구조 검토 - Middleware 계층에서 Request Context에 Locale 정보를 바인딩하여 비즈니스 로직 내 중복 코드 제거 - 모델 레벨의 Mixin을 활용하여 i18n 로직을 선언적으로 분리하고 도메인 로직의 순수성 유지 - Fallback Locale 전략을 수립하여 번역 데이터 누락 시의 시스템 안정성 확보