오늘은 리액트(React) 애플리케이션에서 다양한 언어를 지원하는 방법에 대해 알아보겠습니다. 글로벌 시장에 진출하거나 다양한 언어 사용자를 대상으로 서비스를 제공하려면 국제화(i18n)가 필수적이죠. 그래서 이번 글에서는 `react-i18next`를 활용하여 리액트 앱에 다국어 지원을 쉽게 추가하는 방법을 자세히 알아보겠습니다.
1. 필요한 패키지 설치하기
먼저, 리액트 국제화 구현을 위한 기본적인 패키지들을 설치해야 합니다. 아래 명령어를 사용하여 필요한 라이브러리들을 한 번에 설치할 수 있습니다.
npm install i18next react-i18next i18next-http-backend i18next-browser-languagedetector
이 패키지들은 각각 다음과 같은 역할을 수행합니다:
- i18next:@b] 다국어 지원의 핵심 기능을 제공합니다.
- react-i18next:@b] 리액트 컴포넌트에서 i18next를 쉽게 사용할 수 있도록 도와줍니다.
- i18next-http-backend:@b] 서버에서 번역 파일을 로드할 때 사용합니다.
- i18next-browser-languagedetector:@b] 사용자의 브라우저 언어를 자동으로 감지합니다.
2. i18next 초기 설정하기
다음으로, 프로젝트의 최상위 파일(예: `src/index.js` 또는 `App.js`)에 i18next를 초기화하는 코드를 추가합니다. 이 설정은 애플리케이션에서 다국어 지원을 활성화하는 기반을 마련합니다.
import i18n from 'i18next';
import { initReactI18next } from 'react-i18next';
import HttpBackend from 'i18next-http-backend';
import LanguageDetector from 'i18next-browser-languagedetector';
i18n
.use(HttpBackend) // 서버에서 리소스 로드
.use(LanguageDetector) // 브라우저 언어 감지
.use(initReactI18next) // 리액트와 i18next 바인딩
.init({
fallbackLng: 'en', // 기본 언어 설정
debug: true,
interpolation: {
escapeValue: false, // XSS 보호
},
});
export default i18n;
이 코드는 라이브러리들을 초기화하고, 언어 감지 및 번역 파일 로딩 방법을 설정합니다.
3. 번역 파일 작성 및 구성
`public/locales` 디렉토리를 생성하고, 각 언어별로 JSON 형식의 번역 파일을 작성합니다. 예를 들어, 영어와 한국어 지원을 위해 다음과 같이 파일을 구성할 수 있습니다.
영어
`public/locales/en/translation.json`:
한국어
{
"welcome": "Welcome to React"
}
```
`public/locales/ko/translation.json`:
#PRE lang=json
{
"welcome": "리액트에 오신 것을 환영합니다"
}
4. 번역 텍스트 사용하기
리액트 컴포넌트에서 번역 텍스트를 사용하려면 `useTranslation` 훅을 이용합니다. 이 훅을 통해 번역된 텍스트를 쉽게 가져와서 사용할 수 있습니다. 아래 예시에서는 간단한 환영 메시지를 화면에 표시하는 방법을 보여줍니다.
import React from 'react';
import { useTranslation } from 'react-i18next';
function App() {
const { t } = useTranslation();
return <h1>{t('welcome')}</h1>; // 'welcome' 키에 해당하는 번역된 텍스트를 렌더링합니다.
}
export default App;
5. 언어 변경 기능 추가하기
사용자가 원하는 언어로 앱의 언어를 쉽게 변경할 수 있도록 버튼을 추가합니다. 이는 `i18n.changeLanguage` 함수를 호출하여 구현할 수 있으며, 사용자가 버튼을 클릭하면 선택한 언어로 앱의 인터페이스가 업데이트됩니다.
import React from 'react';
import { useTranslation } from 'react-i18next';
function App() {
const { t, i18n } = useTranslation();
return (
<div>
<h1>{t('welcome')}</h1>
<button onClick={() => i18n.changeLanguage('en')}>English</button>
<button onClick={() => i18n.changeLanguage('ko')}>한국어</button>
</div>
);
}
export default App;
결론
리액트에서 `react-i18next`를 사용하여 국제화를 구현하는 방법을 자세히 알아보았습니다. 이 도구를 사용하면 개발자는 번역 관리, 언어 감지, 동적 언어 변경 등 다양한 국제화 기능을 손쉽게 구현할 수 있습니다. 리액트 애플리케이션을 글로벌 시장에 맞추어 최적화하고 싶다면, 오늘 소개한 방법을 활용해 보세요. 다양한 언어를 지원함으로써 더 넓은 사용자 기반에 접근하고, 사용자 경험을 향상시킬 수 있습니다.