피드로 돌아가기
Dev.toBackend
원문 읽기
LMS i18n 최적화를 위한 3가지 데이터 분리 및 검증 아키텍처 설계
The 3 i18n mistakes every open-source LMS makes
AI 요약
Context
기존 LMS는 UI String, 사용자 생성 콘텐츠, 표준 참조 텍스트를 단일 i18n 메커니즘으로 처리하여 데이터 무결성 저하 및 운영 효율성 감소 문제를 겪음. 특히 정적 파일 기반의 gettext 방식은 동적 콘텐츠 번역과 런타임 대응에 한계가 명확함.
Technical Solution
- UI String과 User-generated Content의 저장소 분리를 통한 데이터 성격별 처리 최적화
content_translations전용 캐시 테이블을 설계하여 entity_id와 locale 기반의 효율적인 Join 쿼리 구현- Translation Worker를 도입하여 First-request 기반의 Lazy Loading 및 Publish 시점의 Eager Loading 전략 채택
- 언어별 텍스트 길이 차이(러시아어 기준 English 대비 25~30% 증가)를 수용한 CSS min-width 설정 및 UI Layout 설계
- Storybook Locale Switcher와 Playwright Snapshot 기반의 CI 파이프라인을 통한 레이아웃 Regression 테스트 자동화
- Canonical Artifacts의 무분별한 기계 번역 방지를 위해 Placeholder Token 기반의 치환 프로세스 구축
실천 포인트
- UI 정적 텍스트와 DB 저장 콘텐츠의 i18n 파이프라인을 분리했는가? - 다국어 환경에서 최장 길이 언어를 기준으로 UI 레이아웃 및 모바일 대응을 검증했는가? - 기계 번역 시 보존되어야 할 전문 용어 및 고유 명사를 위한 토큰 치환 로직이 존재하는가? - 시각적 회귀 테스트(Visual Regression Test)가 CI 단계에 포함되어 있는가?