Lingo.dev CLI는 번역 키 이름이 바뀌면 이를 감지하고 기존 번역을 자동으로 유지합니다. 키 이름만 달라지고 원본 콘텐츠가 그대로라면, CLI가 기존 번역을 새 키에 적용하므로 재번역은 일어나지 않습니다.
동작 방식#
CLI는 키 이름이 아니라 콘텐츠 지문을 비교합니다. 다른 키에서 동일한 지문이 발견되면, CLI는 이를 키 이름 변경으로 인식합니다.
json
// locales/en.json (before refactoring)
{
"welcome_msg": "Welcome to our platform",
"btn_save": "Save"
}
// locales/es.json (existing translations)
{
"welcome_msg": "Bienvenido a nuestra plataforma",
"btn_save": "Guardar"
}소스 파일에서 키 이름을 변경한 뒤:
json
// locales/en.json (after refactoring)
{
"homepage.welcome": "Welcome to our platform",
"button.save": "Save"
}npx lingo.dev@latest run를 실행하면 번역이 그대로 유지됩니다:
json
// locales/es.json (translations carried forward)
{
"homepage.welcome": "Bienvenido a nuestra plataforma",
"button.save": "Guardar"
}감지 규칙#
다음 경우 키 이름 변경으로 감지됩니다:
- 키 이름이 변경됨
- 원본 콘텐츠가 동일하게 유지됨
- 키가 동일한 버킷에 존재함
다음 경우에는 키 이름 변경으로 감지되지 않습니다:
- 키와 콘텐츠가 동시에 변경됨(새 키로 처리됨)
- 콘텐츠만 변경됨(콘텐츠 업데이트로 처리되어 재번역이 트리거됨)
대규모 리팩터링#
키 이름 변경 감지는 규모와 관계없이 동작합니다. 플랫 키 구조에서 중첩 네임스페이스로 바꾸는 것처럼 전체 키 구조를 재정리해도, CLI는 한 번의 실행으로 일치하는 모든 번역을 그대로 이어갑니다.
