728x90
다국어 지원 기능을 React 프로젝트에 추가하려면, 일반적으로 i18n(국제화)을 위한 라이브러리인 react-i18next를 사용합니다. 이를 통해 번역 파일을 관리하고, 여러 언어로 텍스트를 쉽게 변경할 수 있습니다. 아래는 다국어 지원을 위해 react-i18next를 설정하고 사용하는 방법입니다.
1. 필요한 패키지 설치
우선, 다국어 지원을 위해 필요한 패키지들을 설치해야 합니다.
npm install i18next react-i18next i18next-browser-languagedetector
2. i18next 설정 파일 생성
i18n.js 파일을 생성하여 다국어 지원을 설정합니다. 여기서 번역 리소스를 정의하고, 브라우저 언어 감지 등을 설정할 수 있습니다.
// src/i18n.js
import i18n from 'i18next';
import { initReactI18next } from 'react-i18next';
import LanguageDetector from 'i18next-browser-languagedetector';
i18n
.use(LanguageDetector) // 브라우저 언어 감지
.use(initReactI18next) // i18next를 react-i18next로 통합
.init({
resources: {
en: {
translation: {
"welcome": "Welcome",
"description": "This is a multi-language app."
}
},
ko: {
translation: {
"welcome": "환영합니다",
"description": "이것은 다국어 앱입니다."
}
}
},
fallbackLng: "en", // 사용자의 언어를 감지하지 못했을 때 기본으로 사용할 언어
interpolation: {
escapeValue: false, // React는 이미 XSS 방지를 하고 있으므로 설정 불필요
}
});
export default i18n;
3. i18next를 React에 통합
i18n.js 파일을 프로젝트에 통합하기 위해 index.js 또는 App.js에서 설정 파일을 import 합니다.
// src/index.js
import React from 'react';
import ReactDOM from 'react-dom';
import App from './App';
import './i18n'; // i18next 설정 파일을 import
ReactDOM.render(
<React.StrictMode>
<App />
</React.StrictMode>,
document.getElementById('root')
);
4. 번역 적용하기
번역을 적용하려면, useTranslation 훅을 사용하여 필요한 텍스트를 t 함수로 불러올 수 있습니다.
// src/components/MainPage.js
import React from 'react';
import { useTranslation } from 'react-i18next';
const MainPage: React.FC = () => {
const { t } = useTranslation();
return (
<div>
<h1>{t('welcome')}</h1>
<p>{t('description')}</p>
</div>
);
};
export default MainPage;
5. 언어 변경 기능 추가
언어를 변경하는 기능을 추가하기 위해 버튼을 이용해 언어를 설정할 수 있습니다.
// src/components/LanguageSwitcher.js
import React from 'react';
import { useTranslation } from 'react-i18next';
const LanguageSwitcher: React.FC = () => {
const { i18n } = useTranslation();
const changeLanguage = (lng: string) => {
i18n.changeLanguage(lng);
};
return (
<div>
<button onClick={() => changeLanguage('en')}>English</button>
<button onClick={() => changeLanguage('ko')}>한국어</button>
</div>
);
};
export default LanguageSwitcher;
6. 대시보드에 언어 선택기 추가
LanguageSwitcher 컴포넌트를 Dashboard에 추가하여 사용자가 언어를 변경할 수 있도록 합니다.
// src/Dashboard.js
import React from 'react';
import MainPage from './MainPage';
import LanguageSwitcher from './LanguageSwitcher';
import Sticky from './Sticky';
import styles from './Dashboard.module.css';
const Dashboard: React.FC = () => {
return (
<div className={styles.app}>
<Sticky />
<LanguageSwitcher /> {/* 언어 선택기 추가 */}
<MainPage />
</div>
);
};
export default Dashboard;
요약
- react-i18next를 사용해 국제화를 설정.
- 번역 리소스를 i18n.js 파일에서 관리.
- useTranslation 훅을 통해 컴포넌트에서 번역된 텍스트를 표시.
- LanguageSwitcher로 사용자가 언어를 변경할 수 있도록 기능 추가.
이제 다국어 지원이 적용된 React 앱이 완성되었습니다!
728x90
'웹개발' 카테고리의 다른 글
[Next.js] unset 을 통해 속성을 초기값으로 되돌리기 (0) | 2024.11.12 |
---|---|
[React] 화면 크기 변동에 따라 자동으로 font-size 변경하기(feat. AutoTextSize) (0) | 2024.10.20 |
[css] position 속성 (0) | 2024.09.27 |
[React] React Context API로 상태 공유하기 (0) | 2024.09.09 |
[React] 'react-beautiful-dnd' 를 사용하여, 드래그 엔 드롭 구현하기 (drag and drop) (0) | 2024.09.05 |