다국어 지원 프로젝트를 진행하기 위하여 React에서 다국어 지원을 해주는 라이브러리를 설치해보자.
react-i18next
react-i18next는 React 와 React Native에서 사용할 수 있는 국제화 프레임 워크이다.
react-i18next를 사용하여 다국어 지원 프로젝트를 만들기로 했다.
npm install react-i18next i18next —- save
yarn add react-i18next i18next —- save
- react-i18next : react와 함께 사용할 수 있는 기능
- i18next : 다국어 핵심 기능
구조는 src/utils/locale 에다가 i18n.js 라는 파일을 만들어 아래와 같이 작성하였다.
import i18n from "i18next";
import { initReactI18next } from "react-i18next";
import translateKo from "./translateKo.json";
import translateEn from "./translateEn.json";
// 국가 코드와 JSON 파일 매칭
const resource = {
ko : {
translation : translateKo, // 파일명
},
en: {
translation : translateEn,
}
}
i18n.use(initReactI18next).init({
resources: resource,
lng: "ko", // default 국가 코드
debug: true,
keySeparator: false,
interpolation: { escapeValue: false },
});
// 로컬스토리지에 저장된 언어 값이 있다면 불러온다.
let language = localStorage.getItem("language");
if (language !== null) {
i18n.changeLanguage(language);
}
// 국가 코드를 변경하는 함수
export function changeLanguage() {
i18n.changeLanguage(i18n.language === "ko" ? "en" : "ko");
// 브라우저 DB에 기록
localStorage.setItem("language", i18n.language);
}
export default i18n;
작성한 파일은 App.js 에다가 import 하였다.
import "../src/utils/locale/i18n"; // 다국어 지원
function App() {
...
}
실제로 잘 번역이 되는지 확인을 해보기 위하여 hook 형태로 사용할 수 있는 useTranslation을 사용해본다.
import { useTranslation } from "react-i18next";
const Dashboard = () => {
const { t } = useTranslation();
return (
<>
{t(`test.key`)}
</>
)
}
export default Dashboard;
화면에 성공적으로 잘 표시가 된다.
json으로 관리하는 방법과 google sheet로 관리하는 방법 두 가지에서 고민했다.
연동하는게 귀찮아서 json으로 먼저 작업을 하였으나 여러 사람이 작업을 할 때에는 역시 구글 시트가 편할테니 애써 귀찮아서 쉽게 가려고 하다가 구글 시트로도 작업을 하기로 했다.
다음 글에 구글 시트로 작업하는 것을 정리할 예정이다.
참고블로그
[리액트] 글로벌한 웹을 향하여 (react-i18next, 다국어지원)
들어가며 이번 글에서는 글로벌한 웹을 위해서 react i18n를 적용하는 방법과 나름의 best practice에 대해 적어보겠습니다. 이 글은 아직 이제 막 프로젝트에 i18n을 던지려는 용기 있는 개발자를 위한
all-dev-kang.tistory.com
'React' 카테고리의 다른 글
[React] React Router v6 useNavigate()로 파라미터(state) 보내고 받는 방법: useLocation() (0) | 2022.07.05 |
---|