Next.js 앱에서 국제화(i18n)를 위한 최고의 솔루션
Next.js 애플리케이션을 새로운 시장으로 확장하고 싶으신가요? TacoTranslate는 귀하의 Next.js 프로젝트를 손쉽게 현지화할 수 있도록 하여 번거로움 없이 전 세계 고객에게 다가갈 수 있게 해줍니다.
Next.js에 TacoTranslate를 선택해야 하는 이유는?
- 원활한 통합: Next.js 애플리케이션을 위해 특별히 설계된 TacoTranslate는 기존 워크플로우에 손쉽게 통합됩니다.
- 자동 문자열 수집: 더 이상 JSON 파일을 수동으로 관리할 필요가 없습니다. TacoTranslate가 코드베이스에서 문자열을 자동으로 수집합니다.
- AI 기반 번역: AI의 힘을 활용하여 애플리케이션의 톤에 맞는 맥락에 정확한 번역을 제공합니다.
- 즉각적인 언어 지원: 클릭 한 번으로 새로운 언어 지원을 추가하여 애플리케이션을 전 세계적으로 이용할 수 있게 만듭니다.
작동 방식
세계가 점점 더 글로벌화됨에 따라, 웹 개발자들이 다양한 국가와 문화의 사용자를 만족시킬 수 있는 애플리케이션을 만드는 것이 점점 더 중요해지고 있습니다. 이를 실현하는 주요 방법 중 하나는 국제화(i18n)를 통해 애플리케이션을 다양한 언어, 통화, 날짜 형식에 맞게 조정하는 것입니다.
이 튜토리얼에서는 React Next.js 애플리케이션에 국제화를 서버 사이드 렌더링과 함께 추가하는 방법을 살펴보겠습니다. TL;DR: 전체 예제를 여기에서 확인하세요.
이 가이드는 Pages Router를 사용하는 Next.js 애플리케이션을 위한 것입니다.
만약 App Router를 사용하고 계시다면, 대신 이 가이드를 참조하세요.
1단계: i18n 라이브러리 설치하기
Next.js 애플리케이션에서 국제화를 구현하기 위해 먼저 i18n 라이브러리를 선택하겠습니다. 여러 인기 있는 라이브러리가 있으며, 그 중에는 next-intl도 있습니다. 하지만 이번 예제에서는 TacoTranslate를 사용할 것입니다.
TacoTranslate는 최신 AI를 사용하여 문자열을 자동으로 모든 언어로 번역하며, JSON 파일 관리를 번거롭게 할 필요 없이 자유롭게 합니다.
터미널에서 npm을 사용하여 설치해 봅시다:
npm install tacotranslate
2단계: 무료 TacoTranslate 계정 만들기
모듈을 설치했으니 이제 TacoTranslate 계정, 번역 프로젝트, 그리고 관련 API 키를 생성할 차례입니다. 여기에서 계정을 만들 수 있습니다. 무료이며, 신용카드를 등록할 필요가 없습니다.
TacoTranslate 애플리케이션 UI 내에서 프로젝트를 생성하고, API 키 탭으로 이동하세요. read
키 하나와 read/write
키 하나를 생성합니다. 이 키들은 환경 변수로 저장할 것입니다. read
키는 public
키라고 부르며, read/write
키는 secret
키입니다. 예를 들어, 프로젝트 루트의 .env
파일에 추가할 수 있습니다.
TACOTRANSLATE_PUBLIC_API_KEY=123456
TACOTRANSLATE_SECRET_API_KEY=789010
비밀 read/write
API 키를 클라이언트 측 프로덕션 환경에 절대 노출하지 않도록 하세요.
추가로 두 개의 환경 변수인 TACOTRANSLATE_DEFAULT_LOCALE
와 TACOTRANSLATE_ORIGIN
도 추가하겠습니다.
TACOTRANSLATE_DEFAULT_LOCALE
: 기본 대체 로케일 코드입니다. 이 예제에서는 영어로en
으로 설정합니다.TACOTRANSLATE_ORIGIN
: 문자열이 저장될 “폴더”로, 예를 들어 웹사이트의 URL과 같습니다. 여기에서 origins에 대해 더 읽어보세요.
TACOTRANSLATE_DEFAULT_LOCALE=en
TACOTRANSLATE_ORIGIN=your-website-url.com
3단계: TacoTranslate 설정하기
TacoTranslate를 애플리케이션과 통합하려면 이전의 API 키를 사용하여 클라이언트를 생성해야 합니다. 예를 들어, /tacotranslate-client.js
라는 파일을 만듭니다.
const {default: createTacoTranslateClient} = require('tacotranslate');
const tacoTranslate = createTacoTranslateClient({
apiKey:
process.env.TACOTRANSLATE_SECRET_API_KEY ??
process.env.TACOTRANSLATE_PUBLIC_API_KEY ??
process.env.TACOTRANSLATE_API_KEY ??
'',
projectLocale: process.env.TACOTRANSLATE_DEFAULT_LOCALE ?? '',
});
module.exports = tacoTranslate;
곧 TACOTRANSLATE_API_KEY
를 자동으로 정의할 예정입니다.
클라이언트를 별도의 파일에 생성하면 나중에 다시 사용하기가 더 쉬워집니다. 이제 커스텀 /pages/_app.tsx
를 사용하여 TacoTranslate
프로바이더를 추가하겠습니다.
import React from 'react';
import {type AppProps} from 'next/app';
import {type Origin, type Locale, type Localizations} from 'tacotranslate';
import TacoTranslate from 'tacotranslate/react';
import TacoTranslateHead from 'tacotranslate/next/head';
import tacoTranslate from '../tacotranslate-client';
type PageProperties = {
origin: Origin;
locale: Locale;
locales: Locale[];
localizations: Localizations;
};
export default function App({Component, pageProps}: AppProps<PageProperties>) {
const {origin, locale, locales, localizations} = pageProps;
return (
<TacoTranslate
client={tacoTranslate}
origin={origin}
locale={locale}
localizations={localizations}
>
<TacoTranslateHead rootUrl="https://your-website.com" locales={locales} />
<Component {...pageProps} />
</TacoTranslate>
);
}
커스텀 pageProps
와 _app.tsx
가 이미 있다면, 위의 속성과 코드를 포함하도록 정의를 확장해 주세요.
Step 4: 서버 사이드 렌더링 구현하기
TacoTranslate는 번역의 서버 사이드 렌더링을 허용합니다. 이는 번역되지 않은 내용이 잠깐 보여지는 대신 즉시 번역된 콘텐츠를 보여주어 사용자 경험을 크게 향상시킵니다. 또한, 필요한 모든 번역을 이미 가지고 있기 때문에 클라이언트에서 네트워크 요청을 생략할 수 있습니다.
먼저 /next.config.js
파일을 생성하거나 수정하는 것부터 시작하겠습니다.
const withTacoTranslate = require('tacotranslate/next/config').default;
const tacoTranslateClient = require('./tacotranslate-client');
module.exports = async () => {
const config = {};
return withTacoTranslate(config, {
client: tacoTranslateClient,
isProduction:
process.env.TACOTRANSLATE_ENV === 'production' ||
process.env.VERCEL_ENV === 'production' ||
(!(process.env.TACOTRANSLATE_ENV || process.env.VERCEL_ENV) &&
process.env.NODE_ENV === 'production'),
});
};
isProduction
확인을 귀하의 설정에 맞게 수정하세요. 만약 true
라면, TacoTranslate는 공개 API 키를 제공합니다. 로컬, 테스트 또는 스테이징 환경일 경우 (isProduction
is false
), 비밀 read/write
API 키를 사용하여 새로운 문자열이 번역을 위해 전송되도록 합니다.
지금까지 우리는 Next.js 애플리케이션에 지원되는 언어 목록만 설정했습니다. 다음으로 할 일은 모든 페이지에 대한 번역을 가져오는 것입니다. 이를 위해 요구 사항에 따라 getTacoTranslateStaticProps
또는 getTacoTranslateServerSideProps
중 하나를 사용하게 됩니다.
이 함수들은 세 개의 인수를 받습니다: 하나는 Next.js Static Props Context 객체, TacoTranslate 설정, 그리고 옵션인 Next.js 속성들입니다. getTacoTranslateStaticProps
의 revalidate
가 기본값으로 60으로 설정되어 있어 번역이 최신 상태로 유지됩니다.
이 함수들 중 하나를 페이지에서 사용하려면, /pages/hello-world.tsx
같은 페이지 파일이 있다고 가정해 봅시다.
import {Translate} from 'tacotranslate/react';
import getTacoTranslateStaticProps from 'tacotranslate/next/get-static-props';
import tacoTranslateClient from '../tacotranslate-client';
export async function getStaticProps(context) {
return getTacoTranslateStaticProps(context, {client: tacoTranslateClient});
}
export default function Page() {
return <Translate string="Hello, world!"/>;
}
이제 모든 React 컴포넌트 내에서 문자열을 번역하기 위해 Translate
컴포넌트를 사용할 수 있습니다.
import {Translate} from 'tacotranslate/react';
function Component() {
return <Translate string="Hello, world!"/>
}
Step 5: 배포 및 테스트!
완료되었습니다! 이제 Translate
컴포넌트에 문자열을 추가하면 Next.js 애플리케이션이 자동으로 번역됩니다. API 키에 대해 read/write
권한이 있는 환경에서만 번역할 새 문자열을 생성할 수 있다는 점을 유의하세요. 프로덕션 애플리케이션을 해당 API 키로 테스트할 수 있는 폐쇄되고 안전한 스테이징 환경을 갖추고, 라이브 전에 새 문자열을 추가하는 것을 권장합니다. 이렇게 하면 누구도 비밀 API 키를 훔치는 것을 방지할 수 있고, 관련 없는 새 문자열을 추가하여 번역 프로젝트가 불필요하게 커지는 것을 막을 수 있습니다.
반드시 우리 GitHub 프로필에서 전체 예제를 확인하세요. 거기에서는 App Router를 사용하여 이를 수행하는 방법의 예제도 찾을 수 있습니다! 문제가 발생하면 언제든지 문의하세요, 저희가 기꺼이 도와드리겠습니다.
TacoTranslate는 React 애플리케이션을 어떤 언어로든 빠르게 자동 현지화할 수 있게 해줍니다. 오늘 바로 시작하세요!