Langsys 작동 방식
Langsys는 UI에 이미 있는 문장을 그대로 번역 시스템으로 만들어 줍니다. 관리해야 할 키 파일도, 빌드 시점의 추출 단계도 없습니다. 코드 속 문구가 조회 키이자 기본 언어의 기본값입니다.
문구가 곧 키입니다
기존 i18n에서는 문자열마다 식별자를 만들고, 실제 텍스트는 로캘 파일에 저장한 뒤, 둘을 계속 일치시켜야 합니다. Langsys는 이런 간접 단계를 없앴습니다. 실제 문장을 그대로 작성하면, 그 문장이 곧 키가 됩니다.
// Traditional i18n — indirection + a keys file to maintain
t('greetings.hello'); // what does this say? open en.json to find out
// en.json
{ "greetings": { "hello": "Hello, {name}!" } } // Langsys — the phrase IS the key and the base-language default
t('Hello, {name}!', 'Greetings', { name }); 원본 텍스트 자체가 키이기 때문에, 앱 어디에 쓰든 같은 문구는 번역 가능한 하나의 항목으로 처리됩니다. 중복 제거는 자동으로 이루어지며, 아직 번역되지 않은 로케일은 원본 텍스트로 대체됩니다. 키가 누락되어 표시되는 자리표시자는 존재하지 않습니다.
실시간 및 지속적 처리
추출 명령을 직접 실행할 필요가 없습니다. 앱이 렌더링되는 동안 SDK가 사용 중인 문구를 자동으로 찾아냅니다. 새 문구는 백그라운드에서 프로젝트의 대상 로케일로 기계 번역되고, 앱은 완성된 카탈로그를 가져옵니다. 오늘 새 문장을 배포해도 곧바로 번역되며, 로케일 번들을 다시 배포할 필요가 없습니다.
라이프사이클
- UI는
t(),<Translate>등으로 문구를 렌더링합니다. - 개발 환경에서는 쓰기 키를 통해 SDK가 새 문구를 탐색하고 등록할 수 있습니다.
- Langsys가 프로젝트의 모든 대상 로케일로 기계 번역합니다.
- 프로덕션에서는 읽기 전용 키가 사용자 로캘에 맞는 완성된 카탈로그를 가져옵니다.
- 로케일을 바꾸면 전체 UI가 번역된 상태로 즉시 다시 렌더링됩니다. 새로고침은 필요 없습니다.
기존 i18n과의 차이. 직접 수정해야 하는 en.json도, t('some.nested.key') 같은 간접 참조도, 빌드 중 추출 단계도, 누락된 키에 대한 대체 처리도 없습니다. 원문 문장이 항상 대체 문구가 되기 때문입니다.