TacoTranslate
/
ドキュメント料金
 
記事
2025年5月04日

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キータブに移動します。1つの read キーと1つの read/write キーを作成してください。それらを環境変数として保存します。read キーは public と呼び、read/write キーは secret です。例えば、プロジェクトのルートにある .env ファイルに追加することができます。

.env
TACOTRANSLATE_PUBLIC_API_KEY=123456
TACOTRANSLATE_SECRET_API_KEY=789010

クライアント側の本番環境に秘密の read/write APIキーを決して漏らさないでください。

さらに、次の2つの環境変数を追加します: TACOTRANSLATE_DEFAULT_LOCALETACOTRANSLATE_ORIGIN.

  • TACOTRANSLATE_DEFAULT_LOCALE: デフォルトのフォールバックロケールコードです。この例では英語のためにenに設定します。
  • TACOTRANSLATE_ORIGIN: 文字列が保存される「フォルダ」です。例えばあなたのウェブサイトのURLなどが該当します。 オリジンの詳細はこちら。
.env
TACOTRANSLATE_DEFAULT_LOCALE=en
TACOTRANSLATE_ORIGIN=your-website-url.com

ステップ3: TacoTranslate の設定

TacoTranslateをアプリケーションに統合するには、先ほどのAPIキーを使用してクライアントを作成する必要があります。例えば、/tacotranslate-client.js という名前のファイルを作成してください。

/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 プロバイダーを追加します。

/pages/_app.tsx
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 を作成または変更することから始めます。

/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 のいずれかを使用します。

これらの関数は3つの引数を取ります: 1つは Next.js Static Props Context オブジェクト、TacoTranslate の設定、そして任意の Next.js プロパティです。なお、revalidategetTacoTranslateStaticProps でデフォルトで60に設定されているため、翻訳が最新の状態に保たれます。

ページでいずれかの関数を使用するには、例えば /pages/hello-world.tsx のようなページファイルがあると仮定します。

/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!"/>
}

ステップ5: デプロイしてテスト!

これで完了です! Translate コンポーネントに文字列を追加すると、あなたの Next.js アプリケーションは自動的に翻訳されます。APIキーに read/write 権限がある環境のみ、新しく翻訳対象の文字列を作成できます。本番公開前にそうした API キーを使って本番アプリをテストし、新しい文字列を追加できるクローズドでセキュアなステージング環境を用意することをおすすめします。これにより、誰か誰かがあなたの秘密の API キーを盗んだり、新しい無関係な文字列を追加して翻訳プロジェクトが膨れ上がるのを防げます。

Be sure to check out the complete example over at our GitHub profile. There, you’ll also find an example of how to do this using the App Router! If you encounter any problems, feel free to reach out, and we’ll be more than happy to help.

TacoTranslate lets you automatically localize your React applications quickly to and from over 75 languages. Get started today!

Nattskiftetの製品ノルウェー製