Skip to main content

의사 번역 도구

출시 전에 i18n UI를 테스트하세요. 실제 번역을 기다리지 않고 레이아웃, 인코딩, 양방향 렌더링을 집중 테스트하는 의사 번역을 생성해요.

문제

영어에서는 UI가 완벽해 보여요. 하지만 독일어 문자열이 40% 길어지면 모든 버튼이 깨지고 표 머리글이 잘려요. 아랍어는 전체 레이아웃을 뒤집고 아이콘이 잘못된 방향을 가리키게 해요. 일본어에는 다른 줄 높이가 필요해 세심하게 간격을 맞춘 카드가 무너져요. 번역 비용을 지불한 뒤에야 이 모든 문제를 발견하게 돼요.

번역 후 i18n 레이아웃 버그를 수정하는 평균 비용은 개발 중에 발견할 때보다 5-10배 높아요. 의사 번역을 사용하면 실제 번역에 비용을 쓰기 전에 이러한 문제를 무료로 찾아낼 수 있어요.

해결책

i18n-pseudo는 실제 번역가를 기다리지 않고 UI를 집중 테스트하는 의사 번역을 생성해요. ICU 플레이스홀더, 복수형 구문, 보간 변수를 유지하면서 악센트 문자, CJK 문자, 텍스트 확장, RTL 표시 등 7가지 변환 전략을 적용해요.

설치

i18n-pseudo는 npm 패키지나 Homebrew Formula로 사용할 수 있고 Cargo로 소스에서 빌드할 수도 있어요.

Terminal
npm install -g @i18n-agent/i18n-pseudo
npm 패키지에는 전역 CLI 바이너리가 포함되어 있어요. 런타임 종속성이 필요 없어요.

7가지 변환 전략

각 전략은 특정 유형의 i18n 버그를 대상으로 해요. 플래그로 개별 사용하거나 프리셋으로 결합할 수 있어요.

StrategyFlagInputOutput
Accents--accentsHelloĤéľľó
CJK--cjkHello你好世界你好
Special Chars--specialHelloHel­lo
Expansion--expansion NSaveSave~~~~
Brackets--bracketsHello[Hello]
RTL--rtlHello‮Hello‬
Unicode Stress--unicode-stressHelloH́ȩl̈l̀õ
악센트 문자는 하드코딩된 문자열을 감지할 때 가장 많이 사용하는 전략이에요. UI에 분음 부호가 없는 문자열이 표시되면 해당 문자열은 번역 함수를 거치지 않은 거예요.

프리셋

프리셋은 일반적인 테스트 상황에 맞춰 여러 전략을 묶어요. --preset을 사용하면 전략 그룹을 한 번에 적용할 수 있어요.

PresetStrategiesUse Case
defaultaccents + bracketsQuick visual check that all strings are externalized
layoutexpansion (1.4x) + bracketsCatch truncation and overflow before real translations
charsetCJK + special + bracketsTest font rendering and character encoding
rtlRTL markers + bracketsVerify bidirectional layout without switching locale
fullAll strategies combinedMaximum stress test — everything at once

사용 예시

원문 로케일 파일에 i18n-pseudo를 실행하세요. JSON, YAML, PO 및 기타 i18n 형식을 읽고 선택한 전략을 적용한 뒤 변환된 결과를 저장해요.

Terminal
# Default (accents + brackets)
i18n-pseudo en.json -o output/

# Layout testing (text expansion + brackets)
i18n-pseudo en.json --preset layout -o output/

# Specific strategies
i18n-pseudo en.json --accents --expansion 1.5 -o output/

# Kitchen sink
i18n-pseudo en.json --preset full -o output/

변환 전후

기본 프리셋 (악센트 문자 + 대괄호)을 일반적인 번역 파일에 적용한 결과예요. ICU 복수형 구문과 보간 플레이스홀더가 정확히 유지되는지 확인하세요.

Before & After
// Input (en.json):
{
  "greeting": "Hello, {name}!",
  "save": "Save",
  "items": "{count, plural, one {# item} other {# items}}"
}

// Output (default preset — accents + brackets):
{
  "greeting": "[Ĥéľľó, {name}!]",
  "save": "[Šáṽé]",
  "items": "[{count, plural, one {# íťéɱ} other {# íťéɱš}}]"
}
{name}, {count} 같은 플레이스홀더와 ICU 복수형 표현은 절대 바꾸지 않아요. 번역 가능한 텍스트 세그먼트만 변환하므로 의사 번역 파일로도 앱이 올바르게 렌더링돼요.

CI 통합

CI 파이프라인에 의사 번역을 추가해 i18n 회귀를 자동으로 찾아내세요. 의사 번역 파일을 생성한 뒤 해당 파일로 시각적 회귀 테스트를 실행하세요.

CI Pipeline
# Generate pseudo-translations and run visual regression
i18n-pseudo locales/en.json --preset layout -o locales/pseudo/
NEXT_PUBLIC_LOCALE=pseudo npx playwright test --project=visual
레이아웃 프리셋을 Playwright 또는 Chromatic 시각적 회귀 테스트와 결합하세요. 1.4배로 확장된 텍스트 때문에 넘치거나 잘리는 컴포넌트는 시각적 비교 검사에서 실패해요.

지금 i18n Agent 사용해 보기

번역 파일을 여기에 드롭

JSON, YAML, PO, XML, CSV, Markdown, Properties

또는 클릭하여 파일 선택

대상 언어

가입 불필요즉시 견적

자주 묻는 질문