|Labs
데모 예약플랫폼
React (Lingo Compiler)
알파
React (MCP)React (i18n)레거시 CLI (v0)
사용 중단

Lingo.dev Compiler

  • 작동 원리
  • 설정
  • Compiler 빠른 시작

Frameworks

  • Next.js 연동
  • Vite + React

가이드

  • 로캘 전환
  • 자동 복수형 처리
  • 수동 오버라이드
  • 빌드 모드
  • 프로젝트 구조
  • 번역 제공업체
  • 사용자 지정 로캘 리졸버
  • 개발 도구

레퍼런스

  • 모범 사례
  • 구성 레퍼런스
  • 문제 해결
  • 마이그레이션 가이드
  • 최적화
  • 출력 형식

자동 복수형 처리

알파

Lingo.dev Compiler는 알파 버전입니다. 아직 불안정하며 프로덕션 환경에서의 사용은 권장되지 않고, 릴리스마다 API가 변경될 수 있습니다.

Lingo.dev Compiler는 JSX 텍스트에서 복수형을 감지하고 이를 자동으로 ICU MessageFormat으로 변환합니다. 언어마다 복수 규칙을 일일이 작성할 필요 없이, 숫자가 포함된 자연스러운 텍스트만 작성하면 컴파일러가 LLM을 활용해 알맞은 복수형을 생성합니다.

작동 방식#

1

Compiler가 숫자 패턴을 감지합니다

AST를 분석하는 과정에서 compiler는 삽입된 숫자와 개수에 따라 형태가 달라지는 단어가 함께 들어 있는 텍스트 노드를 식별합니다. 예를 들어 You have {count} items에는 수량에 따라 달라지는 단어 옆에 숫자 변수가 포함되어 있습니다.

2

LLM이 복수형을 분류합니다

작고 빠른 LLM(pluralization.model으로 설정 가능)이 텍스트를 분석해 어떤 단어에 복수 변화가 필요한지 판단합니다. 그리고 각 대상 로캘에 맞는 CLDR 복수 범주를 생성합니다.

3

ICU MessageFormat이 생성됩니다

compiler는 대상 언어에 필요한 모든 복수 범주를 처리할 수 있는 ICU MessageFormat 문자열을 생성합니다.

예시#

원본 JSX:

tsx
<p>You have {count} items in your cart</p>

영어용 생성 결과:

text
{count, plural, one {You have 1 item in your cart} other {You have # items in your cart}}

러시아어용 생성 결과(복수 범주가 4개인 언어):

text
{count, plural, one {У вас # товар в корзине} few {У вас # товара в корзине} many {У вас # товаров в корзине} other {У вас # товаров в корзине}}

CLDR 복수 범주#

언어마다 여섯 가지 CLDR 복수 범주 가운데 사용하는 하위 집합이 다릅니다. compiler는 각 대상 로캘에 필요한 범주만 생성합니다:

범주설명예시 언어
zero수량 0아랍어, 라트비아어
one단수영어, 프랑스어, 독일어, 스페인어
two쌍수아랍어, 히브리어, 슬로베니아어
few소수 / 적은 수량러시아어, 체코어, 폴란드어
many큰 수량러시아어, 아랍어, 폴란드어
other일반 / 기본값(항상 필요)모든 언어

영어는 one와 other를 사용합니다. 러시아어는 one, few, many, other를 사용합니다. 아랍어는 여섯 가지 범주를 모두 사용합니다. compiler는 이를 로캘별로 자동 처리합니다.

설정#

복수형 처리는 기본적으로 활성화되어 있습니다. compiler 옵션에서 설정할 수 있습니다:

ts
{
  pluralization: {
    enabled: true,
    model: "groq:llama-3.1-8b-instant",
  },
}
옵션유형기본값설명
pluralization.enabledbooleantrue자동 복수형 감지를 켜거나 끕니다.
pluralization.modelstring"groq:llama-3.1-8b-instant"복수형 감지에 사용할 LLM 모델입니다. 감지는 번역보다 단순하므로 더 작은 모델로도 충분합니다.

복수형 처리를 완전히 끄려면:

ts
{
  pluralization: {
    enabled: false,
  },
}

복수형 처리를 비활성화하면 compiler는 숫자가 포함된 텍스트를 일반 문자열처럼 번역합니다. 복수 규칙이 복잡한 언어에서는 번역 결과가 모든 수량에서 문법적으로 올바르지 않을 수 있습니다.

복수형 처리가 적용되는 경우#

compiler는 다음과 같은 경우 복수 패턴을 감지합니다:

  • 삽입된 숫자 변수가 포함된 텍스트: {count} items, {n} messages
  • 숫자 리터럴이 포함된 텍스트: You have 5 items (동적인 UI에서는 비교적 드문 경우)

compiler는 다음과 같은 경우에는 복수형 처리하지 않습니다:

  • 숫자를 참조하지 않는 텍스트: Items in cart (분기 기준이 되는 숫자가 없음)
  • 숫자가 개수에 따라 달라지는 단어와 직접적으로 연결되지 않은 텍스트

JSX에서는 자연스러운 텍스트만 작성하세요. 복수형 감지와 ICU 형식 변환은 compiler와 LLM이 처리하므로 ICU MessageFormat 문법을 따로 익힐 필요가 없습니다.

다음 단계#

설정 레퍼런스
복수형 처리 관련 모든 옵션
번역 제공업체
번역에 사용할 LLM 설정
수동 재정의
필요할 때 특정 번역을 재정의합니다
모범 사례
복수형 처리를 켜거나 꺼야 하는 경우

이 페이지가 도움이 되었나요?

Max PrilutskiyMax Prilutskiy·업데이트됨 4개월 전·3 min read