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) を使用している場合は、シークレット API キーread/writeを使用して、新しい文字列が翻訳のために送信されることを確認します。

これまで、Next.jsアプリケーションにはサポートされている言語のリストだけを設定してきました。次に行うのは、すべてのページの翻訳を取得することです。そのためには、ニーズに応じて getTacoTranslateStaticProps または getTacoTranslateServerSideProps のいずれかを使用します。

これらの関数は3つの引数を取ります。1つは Next.js Static Props Context オブジェクト、2つ目は TacoTranslate の設定、そして任意の 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 キーが盗まれることを防ぎ、関係のない新しい文字列の追加によって翻訳プロジェクトが不必要に膨らむのを防ぐことができます。

必ずGitHubのプロフィールで完全な例をチェックしてください。そこでは、App Routerを使った方法の例も見つけることができます。もし問題が発生した場合は、遠慮なくお問い合わせください。私たちは喜んでお手伝いします。

TacoTranslateを使えば、Reactアプリケーションを素早く任意の言語に自動的にローカライズできます。今すぐ始めましょう!

Nattskiftet の製品ノルウェー製