TacoTranslate
/
ドキュメント料金
 
記事
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 をお持ちの場合は、上記のプロパティとコードで定義を拡張してください。

ステップ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 オブジェクト、2つ目は TacoTranslate の設定、3つ目は任意の Next.js プロパティです。なお、getTacoTranslateStaticPropsrevalidate はデフォルトで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: デプロイしてテスト!

これで完了です!あなたの Next.js アプリケーションは、Translate コンポーネントに文字列を追加すると、自動的に翻訳されるようになります。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の製品ノルウェー製