이 페이지와 원하는 AI 어시스턴트를 사용하여 문서를 요약합니다
이 페이지의 콘텐츠는 AI를 사용하여 번역되었습니다.
영어 원본 내용의 최신 버전을 보기이 문서를 개선할 아이디어가 있으시면 GitHub에 풀 리퀘스트를 제출하여 자유롭게 기여해 주세요.
문서에 대한 GitHub 링크문서의 Markdown을 클립보드에 복사
React Native 앱 번역을 위한 i18n 솔루션 탐구
점점 더 커지는 글로벌 시장에서 React Native 앱을 다국어로 제공하는 것은 접근성을 크게 높이고 사용자 만족도를 개선할 수 있습니다. 국제화(i18n)는 번역을 효율적으로 관리하는 데 핵심적인 역할을 하며, 코드베이스를 복잡하게 만들지 않고도 언어별 텍스트, 날짜 및 시간 형식, 통화 등을 표시할 수 있게 해줍니다. 이 글에서는 전용 라이브러리부터 보다 일반적인 솔루션에 이르기까지 다양한 i18n 접근 방식을 살펴보고, 귀하의 React Native 프로젝트에 가장 적합한 라이브러리를 찾는 데 도움을 드리고자 합니다.

국제화(i18n)란 무엇인가요?
국제화(i18n)는 애플리케이션을 다양한 언어, 지역 형식 및 문화적 관습에 쉽게 적응할 수 있도록 구조화하는 것을 포함합니다. React Native에서 i18n은 버튼과 라벨의 문자열을 처리하는 것뿐만 아니라 사용자의 로케일에 따라 날짜, 시간, 통화 등을 형식화하는 것을 포함합니다. 적절하게 준비된 React Native 앱을 사용하면 대대적인 리팩토링 없이도 나중에 추가 언어와 로케일별 동작을 원활하게 통합할 수 있습니다.
국제화 개념에 대해 더 자세히 알아보려면 다음 기사를 확인하세요:
What is Internationalization (i18n)? Definition and Challenges.
React Native 애플리케이션을 위한 번역 도전 과제
React Native에서 번역 작업을 수행할 때는 몇 가지 고유한 고려 사항이 있습니다:
구성 요소 기반 아키텍처
웹용 React와 마찬가지로 React Native의 모듈식 디자인은 수많은 구성 요소에 텍스트를 분산시킬 수 있습니다. 이러한 번역을 견고한 방식으로 중앙 집중화하는 것이 중요합니다.오프라인 및 원격 데이터
일부 문자열은 앱 내에 포함될 수 있지만, 다른 콘텐츠(예: 뉴스피드, 제품 데이터)는 원격으로 가져올 수 있습니다. 비동기적으로 도착하는 데이터에 대한 번역 처리는 모바일에서 더 복잡할 수 있습니다.플랫폼별 동작
iOS와 Android는 각각 고유한 로케일 설정과 형식 지정 특성이 있습니다. 두 플랫폼 모두에서 날짜, 통화 및 숫자의 일관된 렌더링을 보장하려면 철저한 테스트가 필요합니다.상태 및 내비게이션 관리
스크린, 딥 링크 또는 탭 기반 내비게이션 전반에서 사용자가 선택한 언어를 유지하는 것은 Redux, Context API 또는 다른 상태 관리 솔루션에 i18n을 연결하는 것을 의미합니다.앱 업데이트 및 OTA(Over-the-Air)
CodePush 또는 다른 OTA 업데이트 메커니즘을 사용하는 경우, 전체 앱 스토어 출시 없이 번역 업데이트나 새로운 언어가 어떻게 전달될지 계획해야 합니다.
React Native를 위한 주요 i18n 솔루션
아래는 React Native에서 다국어 콘텐츠를 관리하기 위한 몇 가지 인기 있는 접근 방식입니다. 각각은 서로 다른 방식으로 번역 워크플로우를 간소화하는 것을 목표로 합니다.
1. Intlayer
Website: https://intlayer.org/
Overview
Intlayer는 현대 JavaScript 앱, React Native를 포함하여, 에서 다국어 지원을 간소화하도록 설계된 혁신적인 오픈 소스 국제화 라이브러리입니다. 구성 요소와 함께 사전을 정의할 수 있는 선언적 접근 방식을 제공합니다.
Key Features
Translation Declaration
텍스트를 찾고 수정하는 것을 간단하게 만들기 위해 translations를 단일 파일 또는 구성 요소 수준에 저장하십시오.TypeScript & Autocompletion
번역 키에 대한 타입 정의를 자동으로 생성하여, 개발자 친화적인 자동 완성과 강력한 오류 검사가 가능합니다.Lightweight & Flexible
불필요한 오버헤드 없이 React Native 환경에서 우아하게 작동합니다. 모바일 장치에서 효율성을 유지하는 것이 쉽습니다.Platform-Specific Considerations
필요 시 iOS와 Android에 대한 플랫폼별 문자열을 조정하거나 분리할 수 있습니다.Asynchronous Loading
대형 앱이나 점진적인 언어 롤아웃에 유용할 수 있는 번역 사전을 동적으로 로드합니다.
Considerations
- Community & Ecosystem
상대적으로 새로운 솔루션이므로, 오랜 역사를 가진 라이브러리에 비해 커뮤니티 중심의 예제나 준비된 플러그인이 적을 수 있습니다.
2. React-i18next
Website: https://react.i18next.com/
Overview
React-i18next는 인기 있는 i18next 프레임워크를 기반으로 하며, 유연하고 플러그인 기반 아키텍처와 강력한 기능 세트를 제공합니다. 잘 문서화된 설정 프로세스 덕분에 React Native 앱에서도 널리 사용됩니다.
Key Features
Smooth React Native Integration
i18n을 구성 요소에 매끄럽게 통합하기 위해 훅(useTranslation), 고차원 구성 요소(HOCs) 등을 제공합니다.Asynchronous Loading
필요에 따라 번역을 로드합니다, 대형 앱이나 새로운 언어 패키지를 추가할 때 유용합니다.Rich Translation Capabilities
중첩된 번역, 보간, 복수형 및 변수 교체를 쉽게 처리할 수 있습니다.TypeScript & Autocompletion
React-i18next는 타입이 지정된 번역 키를 지원하지만, 초기 설정은 자동 생성되는 타입에 비해 더 수동적일 수 있습니다.Platform Agnostic
i18next는 웹 또는 모바일에만 국한되지 않으므로, 동일한 라이브러리를 다양한 프로젝트 유형(예: 웹과 네이티브 간의 코드 공유)에서 사용할 수 있습니다.
Considerations
Configuration Complexity
고급 기능(복수형, 폴백 로케일 등)으로 i18n을 설정하면 세심한 구성이 필요할 수 있습니다.Performance
React-i18next는 일반적으로 성능이 뛰어나지만, 모바일 장치에서 오버헤드를 피하기 위해 번역 리소스를 구조화하고 로드하는 방법에 주의해야 합니다.
3. React Intl (from FormatJS)
Website: https://formatjs.io/docs/react-intl/
Overview
React Intl은 FormatJS 생태계의 일환으로, 다양한 로케일에 대한 메시지 형식을 표준화하는 데 중점을 둡니다. 메시지 추출 작업 흐름을 강조하며, 다양한 로케일에 대해 정확하게 날짜, 숫자 및 시간을 형식화하는 데 특히 강력합니다.
Key Features
Format-Focused Components
<FormattedMessage>,<FormattedDate>,<FormattedTime>등은 iOS 및 Android 간의 형식화 작업을 간소화합니다.Lightweight & Extensible
필요한 FormatJS의 부분만 가져와 전체 번들을 얇게 유지할 수 있습니다. 이는 모바일에 매우 중요합니다.Polyfills for Unsupported Locales
오래된 Android 또는 iOS 버전에서도 일관된 날짜/숫자 형식을 보장합니다.TypeScript Compatibility
TypeScript와 통합되지만, 완전히 유형화된 메시지 ID를 얻으려면 추가 도구가 필요할 수 있습니다.
Considerations
Message Extraction
추출 작업 흐름이 필요하므로, 빌드 프로세스에 복잡성을 추가할 수 있습니다. 그러나 많은 번역을 관리하는 대규모 팀에 유용합니다.App Size & Deployments
여러 polyfill이나 대형 번역 파일에 의존하는 경우, 특히 모바일 맥락에서 앱의 전체 크기를 주의해야 합니다.Community Examples
널리 사용되지만, React 웹에 비해 React Native 전용 사용 예제가 적을 수 있습니다. 기존 문서와 패턴을 네이티브 환경에 맞게 조정해야 합니다.
4. LinguiJS
Website: https://lingui.js.org/
Overview
LinguiJS는 JavaScript 및 React(React Native 포함)를 위한 현대적이고 개발자 친화적인 접근 방식을 제공합니다. CLI 기반 메시지 추출 및 컴파일에 중점을 두어 실행 시간 오버헤드를 최소화합니다.
Key Features
Automatic Message Extraction
코드에서 번역 문자열을 스캔하여 누락되거나 사용되지 않은 메시지의 위험을 줄입니다.Minimal Runtime Overhead
컴파일된 번역은 앱의 성능을 유지하고 모바일 장치에 최적화되어 있습니다.TypeScript & Autocompletion
제대로 구성하면 번역에 대한 유형이 지정된 ID를 받아 개발자 작업 흐름이 더 안전하고 직관적입니다.Integration with React Native
React Native 환경에서 설치 및 연결이 간단하며, 필요한 경우 플랫폼별 번역도 처리할 수 있습니다.
Considerations
Initial CLI Setup
React Native 프로젝트에 대한 추출 및 컴파일 파이프라인 구성을 위해 추가 단계가 필요합니다.Community & Plugins
라이브러리의 생태계는 i18next보다 작지만 빠르게 성장하고 있으며, 핵심 CLI 도구는 견고합니다.Code Organization
메시지 카탈로그를 어떻게 나누는지(스크린, 기능 또는 언어별로) 결정하는 것은 더 큰 앱에서 명확성을 유지하는 데 중요합니다.
최종 생각
React Native 애플리케이션을 위한 i18n 솔루션을 선택할 때:
요구 사항 평가
- 현재와 미래에 얼마나 많은 언어가 필요한가요?
- 대규모 앱을 위한 온디맨드 로딩이 필요한가요?
플랫폼 차이 유의
- 어떤 라이브러리든 iOS와 Android 로케일 변형, 특히 날짜/숫자/통화 특성을 지원하는지 확인하세요.
- 오프라인 사용을 고려하세요. 일부 번역은 앱과 함께 번들로 제공되어야 할 수 있고, 다른 일부는 원격으로 가져올 수 있습니다.
확장성을 위한 구조 선택
- 대규모 또는 장기 프로젝트를 계획 중이라면 강력한 추출 워크플로우나 타입 키가 번역을 잘 정리하는 데 도움이 될 수 있습니다.
성능 및 번들 크기
- 모바일 데이터 제약으로 인해 번역 파일과 폴리필의 크기를 면밀히 관찰해야 합니다.
개발자 경험(DX)
- 팀의 기술 수준과 일치하는 라이브러리를 찾으세요. 일부 솔루션은 장황하지만 직관적이며, 다른 솔루션은 설정의 복잡성 대신 더 많은 자동화를 제공합니다.
Intlayer, React-i18next, React Intl 및 LinguiJS와 같은 각 솔루션은 각각 조금씩 다른 우선순위를 가지고 있지만 React Native 환경에서 효과적임이 입증되었습니다. 프로젝트의 로드맵, 개발자 선호도 및 로컬라이제이션 요구 사항을 평가하면 진정으로 글로벌한 React Native 앱을 제공하기 위한 최적의 솔루션을 찾을 수 있을 것입니다.