제목
부제목
제목
단락1
단락2
단락3
제목
단락1
단락2
단락3
제목
부제목
지역 식별자 (BCP 47)
en-US나 zh-Hans-CN과 같은 BCP 47 태그는 언어, 문자 체계 및 지역을 지정합니다. 이는 모든 국제화(i18n) 시스템의 기반이 되며, 어떤 번역, 형식 및 규칙이 적용될지를 결정합니다.
유니코드 및 UTF-8
유니코드는 모든 문자 집합의 모든 문자에 고유한 코드 포인트를 할당합니다. UTF-8은 웹에서 가장 널리 사용되는 인코딩 방식으로, 언어에 관계없이 텍스트가 올바르게 표시되도록 보장합니다.
번역 키
번역 키는 특정 로케일에 해당하는 문자열을 매핑하는 안정적인 식별자입니다. 이 키를 사용하면 소스 코드와 번역 가능한 콘텐츠를 분리할 수 있어, 개발과 번역을 동시에 진행할 수 있습니다.
복수형 (중환자실)
언어마다 복수형 규칙이 다릅니다. 영어는 두 가지 형태가 있는 반면, 아랍어는 여섯 가지 형태가 있습니다. ICU MessageFormat은 단일 구문으로 복수형, 성별, 선택 표현을 처리합니다.
RTL 지원
아랍어, 히브리어 및 기타 문자는 오른쪽에서 왼쪽으로 읽습니다. RTL을 지원하려면 레이아웃을 반전하고, 아이콘을 뒤집으며, left/right 대신 CSS 논리 속성을 사용해야 합니다.
날짜 / 번호 / 통화
날짜, 숫자 및 통화 표기법은 지역 설정에 따라 다릅니다. Intl API와 date-fns와 같은 라이브러리는 지역 설정을 고려한 서식 지정 기능을 제공하므로, 1,000.50은 독일어 환경에서는 1.000,50으로 표시됩니다.
제목
부제목
JSON
웹 앱(React, Vue, Angular)에서 가장 널리 사용됩니다. 사람이 읽기 쉬운 형식을 제공하며, 체계적인 키 구조를 위해 중첩을 지원합니다. 내장된 복수형 변환 표준이 없으므로, ICU MessageFormat과 같은 라이브러리가 그 역할을 대신합니다.
XLIFF
도구 간 번역 데이터를 교환하기 위한 XML 기반의 업계 표준입니다. 모든 전문 TMS 플랫폼에서 지원됩니다. 다소 복잡하지만 기능이 풍부하며, 메모, 상태 추적 및 메타데이터에 대한 기본 지원 기능을 갖추고 있습니다.
PO/POT (Gettext)
파이썬, PHP, 루비 생태계에서 널리 사용되는 대표적인 오픈소스 형식입니다. 전용 복수형 구문으로 복수형 처리가 기본적으로 지원됩니다. 번역가와 번역 도구에서 폭넓게 지원됩니다.
ARB
Application Resource Bundle은 Flutter와 Dart의 표준 형식입니다. JSON 기반이며 ICU 메시지 구문을 지원하여 복수형과 선택 항목을 기본적으로 처리할 수 있습니다. Flutter의 gen-l10n 도구에서 사용됩니다.
.strings / .stringsdict
iOS 및 macOS 개발을 위한 Apple 플랫폼의 기본 형식입니다. .strings는 간단한 키-값 쌍을 처리하는 반면, .stringsdict는 복수형 규칙을 위해 XML 플리스트(plist) 구조를 사용합니다.
.resx
C# 및 VB.NET 애플리케이션에 사용되는 .NET 리소스 파일 형식입니다. XML 기반이며 Visual Studio 도구와 긴밀하게 통합되어 있습니다. 문자열, 이미지 및 기타 자산에 대한 타입 지정 리소스를 지원합니다.
제목
부제목
코드베이스 점검하기
하드코딩된 모든 문자열, 날짜 형식 및 지역 설정에 따라 달라지는 패턴을 파악하십시오. 추출이 필요한 사용자용 텍스트가 포함된 구성 요소와 페이지를 파악하십시오.
문자열 외부화
사용자에게 표시되는 모든 텍스트를 구조화된 리소스 파일(JSON, XLIFF 또는 PO)로 옮깁니다. 인라인 문자열을 키를 참조하는 번역 함수 호출로 대체합니다.
도구 선택하기
사용 중인 프레임워크에 적합한 i18n 라이브러리를 선택하고, 협업을 위한 번역 관리 시스템(TMS)을 선정한 다음, 인력 번역, AI 번역 또는 하이브리드 번역 워크플로우 중 하나를 결정하십시오.
통합 및 출하
i18n 라이브러리를 라우팅 및 렌더링 프로세스에 통합하고, TMS를 CI/CD와 연동하여 자동 동기화를 구현하며, CDN을 통해 로케일 번들을 배포하여 빠른 제공을 보장하세요.
제목
부제목
개발자 통합
CLI 도구, SDK 지원, Git 기반 워크플로우, CI/CD 훅을 평가하세요. 최고의 TMS 플랫폼은 개발 파이프라인에 직접 통합되어 코드 변경 사항에 따라 번역이 자동으로 동기화됩니다.
번역 메모리
번역 메모리는 이전에 승인된 번역을 저장하고 유사하거나 동일한 문자열에 대해 제안합니다. 이를 통해 번역 비용을 절감하고, 처리 시간을 단축하며, 제품 전반에 걸쳐 일관성을 유지할 수 있습니다.
협업 기능
검토자 워크플로우, 인라인 댓글, 공유 용어집, 승인 체계를 살펴보세요. 이러한 기능을 통해 번역가, 검토자, 개발자가 병목 현상이나 오해 없이 함께 작업할 수 있습니다.
AI 및 자동화
현대적인 TMS 플랫폼은 기계 번역 제안, 자동화된 품질 검사, 일괄 작업 및 스마트 라우팅을 제공합니다. AI 지원 워크플로우는 번역 품질을 유지하면서 수동 작업을 줄여 줍니다.
제목
부제목
React
react-intl, react-i18next 및 FormatJS 사용 사례
Next.js
앱 라우터, 미들웨어 및 서버 구성 요소의 국제화(i18n)
Vue
Vue-i18n Composition API와 SFC 통합
Angular
내장된 i18n, ngx-translate 및 Transloco
Svelte
svelte-i18n, SvelteKit 라우팅 및 스토어
Flutter
intl 패키지, ARB 파일 및 gen-l10n 도구
React Native
i18next, 엑스포 로컬라이제이션 및 네이티브 모듈
Nuxt
자동 라우팅 기능이 포함된 @nuxtjs/i18n 모듈
제목
부제목
문자열 연결
단어 순서가 다른 언어에서는 문장 조각들을 단순히 이어 붙이는 방식으로는 문장이 깨집니다. 대신 ICU MessageFormat과 자리 표시자를 사용하세요.
고정된 문자열
사용자에게 표시되는 텍스트를 소스 코드에 직접 포함하면 코드를 수정하지 않고는 번역이 불가능해집니다. 개발 초기 단계부터 모든 문자열을 외부화하십시오.
복수형 무시하기
단수/복수를 구분하는 단순한 if/else 구문은 영어에서만 통합니다. 많은 언어에는 적절한 ICU 복수 규칙이 필요한 여러 가지 복수형이 존재합니다.
사후에 추가된 번역
출시 후에 국제화(i18n) 기능을 추가하려면 막대한 비용이 드는 리팩토링이 필요합니다. 처음부터 국제화를 고려하여 설계하면 시간을 절약할 수 있을 뿐만 아니라 아키텍처 부채를 예방할 수 있습니다.
제목
부제목
- 사용자에게 노출되는 모든 문자열을 리소스 파일로 분리했습니다
- 지역 설정 감지 기능 구현 (브라우저, URL, 사용자 설정)
- 모든 대상 언어에 대해 ICU MessageFormat을 사용하여 복수형 처리를 수행합니다
- 날짜, 시간, 숫자 및 통화 형식은 Intl API 또는 이에 상응하는 기능을 사용합니다.
- CSS 논리 속성을 사용하여 RTL 레이아웃 지원 테스트
- 번역이 누락된 경우를 대비해 설정된 대체 로케일
- 번역 키는 일관된 명명 규칙을 따릅니다
- CI 파이프라인은 누락되거나 사용되지 않은 번역 키가 없는지 확인합니다
제목
부제목
- 의사
- 시각적
- 자동화
- 언어적
- 확장
제목
부제목
i18n과 L10n의 차이점은 무엇인가요?
국제화(i18n)는 소프트웨어가 여러 언어와 지역을 지원할 수 있도록 설계하는 기술적 프로세스입니다. 현지화(L10n)는 텍스트 번역, 형식 조정, 문화적 적합성 확보 등을 포함하여 해당 소프트웨어를 특정 로케일에 맞게 조정하는 콘텐츠 관련 프로세스입니다. i18n은 코드베이스에서 한 번만 수행되는 반면, L10n은 지원하는 모든 로케일에 대해 수행됩니다.
어떤 i18n 라이브러리를 사용해야 하나요?
최적의 라이브러리는 프레임워크에 따라 다릅니다. React의 경우 react-intl(FormatJS)과 react-i18next가 가장 널리 사용됩니다. Vue 개발자는 일반적으로 vue-i18n을 사용합니다. Angular는 Transloco와 같은 커뮤니티 옵션과 함께 내장 i18n 지원을 제공합니다. Svelte 프로젝트는 svelte-i18n을 사용합니다. 번들 크기, ICU 지원, 렌더링 모델과의 통합도를 기준으로 각 옵션을 평가하십시오.
몇 개의 언어로 출시해야 하나요?
기존 사용자 데이터 또는 목표 시장 조사를 바탕으로 영향력이 큰 언어 2~3개로 시작하십시오. 이를 통해 관리 가능한 규모에서 i18n 아키텍처, 번역 워크플로, QA 프로세스를 검증할 수 있습니다. 신뢰할 수 있는 파이프라인이 구축되면 추가 언어로 확장하되, 분석 데이터를 활용하여 다음으로 추가할 로케일의 우선순위를 정하십시오.
앱에 기계 번역을 사용할 수 있나요?
하이브리드 접근 방식이 효과적입니다. 초기 초안과 볼륨이 많고 중요도가 낮은 콘텐츠에는 기계 번역을 사용하고, 마케팅 카피, 오류 메시지, 법률 텍스트 등 품질이 중요한 문자열은 사람 검토자가 다듬도록 합니다. 최신 신경망 기계 번역은 크게 향상되었지만, 뉘앙스, 브랜드 보이스, 문화적 정확성을 위해서는 여전히 사람의 검토가 필수적입니다.
의사 현지화(Pseudo-localization)란 무엇인가요?
의사 현지화(Pseudo-localization)는 의미를 변경하지 않고 텍스트를 악센트 또는 확장된 문자로 대체하는 테스트 기법입니다(예: 'Hello'를 '[~Hellllo~]'로 변환). 이를 통해 개발자는 실제 번역이 준비되기 전에 하드코딩된 문자열, 텍스트 잘림, 레이아웃 문제를 발견할 수 있습니다. 대부분의 i18n 라이브러리와 TMS 도구는 의사 현지화된 출력을 자동으로 생성하는 기능을 지원합니다.
동적 콘텐츠 현지화는 어떻게 처리하나요?
문자열을 연결하는 대신 ICU MessageFormat 플레이스홀더를 사용하여 보간 처리를 하십시오(예: 'Hello, {name}'). 복수형의 경우 각 언어의 규칙에 맞게 조정되는 ICU 복수형 구문을 사용하십시오. 단어 순서가 언어마다 다르기 때문에 문장을 단편적으로 구성하는 것은 피하십시오. 리치 텍스트의 경우 번역가가 마크업을 손상시키지 않고 HTML 요소의 순서를 변경할 수 있는 태그 플레이스홀더를 사용하십시오.