[javascript] Draft.js를 사용한 다국어 지원 기능 구현하기

Draft.js는 React 기반의 오픈 소스 리치 텍스트 에디터 라이브러리로, 다양한 기능과 확장성을 제공합니다. 이번 포스트에서는 Draft.js를 사용하여 다국어 지원 기능을 구현하는 방법에 대해 알아보겠습니다.

1. 다국어 데이터 구성하기

다국어 지원을 위해 먼저 다국어 데이터를 구성해야 합니다. 이 데이터에는 각 언어에 해당하는 텍스트를 포함해야 합니다. 예를 들어, 한국어, 영어, 일본어를 지원한다면 다음과 같이 데이터를 구성할 수 있습니다.

{
  "ko": {
    "title": "안녕하세요!",
    "content": "Draft.js를 사용한 다국어 지원 기능 구현하기"
  },
  "en": {
    "title": "Hello!",
    "content": "Implementing Multilingual Support with Draft.js"
  },
  "ja": {
    "title": "こんにちは!",
    "content": "Draft.jsを使用した多言語対応機能の実装"
  }
}

2. 언어 선택 기능 추가하기

다국어 지원을 위해 언어 선택 기능을 구현해야 합니다. 사용자가 언어를 선택하면 해당 언어에 맞는 텍스트를 화면에 표시해야 합니다. 이를 위해 다양한 방법 중 하나인 react-i18next 라이브러리를 사용해보겠습니다.

먼저, 필요한 패키지를 설치합니다.

npm install react-i18next i18next i18next-browser-languagedetector --save

다음으로, React 애플리케이션의 최상위 컴포넌트에 i18next을 초기화합니다.

import React from 'react';
import i18n from 'i18next';
import { initReactI18next } from 'react-i18next';

// 다국어 데이터를 불러옵니다.
import translations from './translations.json';

// i18next 초기화
i18n.use(initReactI18next).init({
  resources: translations,
  lng: 'ko',
  fallbackLng: 'ko',
});

여기서 translations.json은 위에서 구성한 다국어 데이터 파일입니다.

3. 텍스트 표시하기

Draft.js 에디터에 다국어 데이터를 표시하기 위해 i18next의 useTranslation 훅을 사용하여 텍스트를 가져옵니다.

import React from 'react';
import { useTranslation } from 'react-i18next';

const MyEditor = () => {
  const { t } = useTranslation();

  return (
    <>
      <h1>{t('title')}</h1>
      <p>{t('content')}</p>
      {/* Draft.js 에디터 컴포넌트 추가 */}
    </>
  );
}

export default MyEditor;

위의 코드에서 t 함수는 현재 선택된 언어에 맞는 텍스트를 반환합니다. t('title')t('content')는 각각 다국어 데이터에서 “title”과 “content” 키에 해당하는 텍스트를 가져옵니다.

이제 해당 컴포넌트를 사용하여 다국어 지원 기능을 가진 Draft.js 에디터를 구성할 수 있습니다.

결론

Draft.js와 react-i18next를 사용하여 다국어 지원 기능을 구현하는 방법을 알아보았습니다. 언어 선택 기능과 다국어 데이터를 활용하여 다양한 언어로 텍스트를 표시할 수 있습니다. 이를 통해 사용자가 원하는 언어로 텍스트를 작성하고 편집할 수 있는 리치 텍스트 에디터를 구현할 수 있습니다.