현지화 도구

ICU 메시지 형식 테스트숫자마다 실제로 보이는 문장을 확인

기존 ICU MessageFormat 1 문자열과 JSON 인수를 넣고 일곱 숫자에서 선택되는 결과를 비교합니다.

ICU 메시지 형식 테스트

ICU 메시지

인수 JSON

서식 적용 결과

숫자 경계값 결과

plural 또는 selectordinal 인수를 추가하면 경계값이 표시됩니다.

메시지와 인수는 이 브라우저 탭에서만 처리되며 업로드되지 않습니다.

테스트 옵션

복수형 범주는 현재 브라우저의 Intl 데이터를 따릅니다. CLDR 버전은 브라우저마다 달라 앱과 다를 수 있습니다.

결과가 오래되었습니다. 내보내기 전에 다시 테스트하세요.

1에서 자연스러운 문장이 11이나 21에서도 맞는 것은 아닙니다. ICU 메시지 형식 테스트는 같은 템플릿을 여러 숫자로 실행하고 선택된 복수형 범주와 완성된 문장을 함께 보여줍니다.

번역 문자열 하나를 배포하기 전에 변수 이름, select 중첩, 로케일을 점검할 때 사용하세요. FormatJS가 구문과 출력을 처리하고 현재 브라우저의 Intl 데이터가 복수형을 결정합니다. 앱에서 다른 런타임을 쓰면 그 환경에서도 최종 결과를 확인해야 합니다.

ICU 메시지 형식 테스트가 필요한 이유

범주 이름보다 실제로 렌더링된 문장을 확인합니다.

0과 11, 21의 차이를 보기

ICU 메시지 형식 테스트는 0, 1, 2, 5, 11, 21, 101을 같은 템플릿에 적용합니다. =0처럼 숫자를 정확히 지정한 분기는 범주보다 먼저 선택됩니다. 각 행에서 범주와 문장을 확인하되 입력 JSON은 바꾸지 않습니다.

하나의 메시지가 숫자와 로케일 규칙에 따라 다른 결과 문장으로 갈라지는 그림.

빠진 변수를 즉시 찾기

{name} 같은 자리 표시자는 대소문자가 같은 JSON 키가 있어야 합니다. 누락된 인수와 구문 오류 위치를 보여 주며, 치환되지 않은 토큰을 성공 결과처럼 남겨 두지 않습니다. select 안의 plural도 같은 FormatJS 파서가 처리합니다.

메시지와 인수 토큰이 결과로 이어지고 누락된 토큰에서 흐름이 멈추는 그림.

번역 문자열을 점검하는 세 단계

01

실제 템플릿부터 시작

기존 ICU MF1 문자열을 붙이거나 plural, select, 중첩 예시를 불러오세요. 잘못된 예시는 필수 other 분기가 없을 때 나오는 오류를 보여 줍니다. MF2의 {$name}은 다른 구문입니다.

02

인수와 로케일을 맞추기

JSON 최상위는 객체이며 키 이름은 자리 표시자와 정확히 같아야 합니다. BCP 47 로케일을 바꾸고 같은 숫자의 범주를 비교하세요. 브라우저의 CLDR 데이터 버전은 고정되어 있지 않습니다.

03

경계값 표 읽기

숫자 변수를 고른 다음 특히 0, 1, 11, 21을 비교하세요. 각 실행은 선택한 인수만 임시로 덮어쓰며 JSON 입력은 보존합니다. 입력이 바뀌면 오래된 결과의 복사와 다운로드가 막힙니다.

구문과 출력의 차이를 함께 확인

FormatJS로 파싱하고 실행

ICU 메시지 형식 테스트는 동일한 FormatJS 런타임으로 MF1을 파싱하고 출력합니다. plural, select, selectordinal, offset, 중첩, 기본 number 형식을 다룹니다.

일곱 숫자의 실제 문장

복수형 규칙 테스트에서는 one, few, many라는 이름만으로 부족합니다. 표에서 값과 범주, 렌더링된 문장을 나란히 확인해 11과 21처럼 다른 분기를 찾습니다.

오류 종류를 구분

ICU 구문 유효성 검사는 파서가 제공하는 행과 열을 표시합니다. 잘못된 JSON, 빠진 변수, 지원하지 않는 로케일을 따로 알리고 입력을 고치면 이전 결과를 내보내지 못하게 합니다.

예시 교체를 되돌리기

자동 실행은 입력이 멈춘 뒤 시작합니다. 예시를 불러오거나 지우기 전에 교체 미리보기를 보여 주며 적용 후 입력과 결과를 한 번 복원할 수 있습니다.

지원 범위와 환경 차이

기존 MF1만 처리
ICU 메시지 형식 테스트는 FormatJS가 지원하는 기존 중괄호 구문용입니다. MessageFormat 2의 {$name}이나 .match를 혼합하거나 자동 변환하지 않습니다.
브라우저의 CLDR 규칙 사용
복수형 범주는 현재 브라우저의 Intl.PluralRules에서 옵니다. 정확한 CLDR 버전을 읽을 수 없으므로 ICU4J나 ICU4C, 서버 앱과 같은 결과라고 보장하지 않습니다.
메시지 하나와 JSON 객체 하나
번역 파일 업로드나 카탈로그 전체 검사, 원문과 번역문의 비교는 하지 않습니다. 빠진 other를 자동 보충하지 않고 배열이나 null을 최상위 인수로 받지 않습니다.
일반 텍스트 출력
앱 콜백이 필요한 리치 텍스트 태그는 거부하고 출력을 HTML로 실행하지 않습니다. 고급 날짜·통화 skeleton은 실제 앱 런타임에서 다시 확인하세요.

ICU 메시지 형식 테스트 자주 묻는 질문

이름이나 개수와 같은 동적 값을 어떻게 처리하나요?

메시지에 이름이 있는 인수를 넣고 JSON에 같은 키를 제공하세요. 개수는 plural 분기를 사용합니다. 값이 빠졌거나 숫자가 필요한 자리에 문자열이 들어가면 오류를 표시합니다.

복수형을 어떻게 처리하나요?

대상 언어에 필요한 범주를 정의하고 other는 반드시 둡니다. ICU 메시지 형식 테스트에서 0, 1, 2, 5, 11, 21, 101을 비교해 실제 선택되는 문장을 확인하세요.

성별을 어떻게 다루나요?

select에 female, male, other처럼 명시적인 값을 지정합니다. 도구는 이름에서 성별을 추론하지 않고 JSON에서 받은 값을 그대로 분기에 적용합니다.

이런 경우에는 매니저한테 우리나라에서는 복수형 따로 안쓴다고 말해야 하나요?

언어의 문법과 제품 문맥에 따라 표현이 달라집니다. 한국어에서는 같은 문장을 쓸 수 있어도 ICU 템플릿에는 other 분기가 필요합니다. 이 도구는 해당 로케일에서 각 숫자가 어떤 결과를 만드는지 보여 줍니다.

플레이스홀더 순서가 변경되면 어떻게 되나요?

번역문에서 인수의 순서를 바꿔도 이름이 같으면 해당 값이 들어갑니다. 다만 이 페이지는 두 번역문의 자리 표시자 보존 여부를 자동 비교하지 않습니다. 각 문자열을 따로 테스트하세요.

앱의 결과와 다른 사례가 있나요?

지금 ICU 메시지 형식 테스트 시작

기본 예시의 count를 바꾸고 11과 21의 결과를 비교해 보세요.

특정 숫자에서만 번역이 어색할 때 이 화면에서 같은 조건을 다시 실행할 수 있습니다.

현재 브라우저에서 로컬로 실행합니다.