取り組みの背景
グローバル市場を目指すアプリ開発において、国際化(i18n)は避けて通れない課題です。翻訳ファイルの管理、ロケール切り替えの実装、日付・数値のフォーマット対応など、多くの作業が必要になります。Antigravity の AI エージェントを活用すれば、これらの i18n 作業を大幅に自動化し、品質の高い多言語アプリを短期間で構築できます。
i18n プロジェクトの初期セットアップ
Antigravity で多言語対応プロジェクトを始める際は、最初にプロジェクトの構成を AI エージェントに伝える点が肝心です。
next-intl の導入
Antigravity のチャットパネルで以下のようにプロンプトを入力します。
このNext.jsプロジェクトにnext-intlを導入してください。
対応言語は日本語(ja)と英語(en)で、デフォルトロケールはjaです。
App Routerの[locale]パターンで実装してください。Antigravity のエージェントは、この指示から以下の作業を自動で実行します。
next-intlパッケージのインストールsrc/i18n/routing.tsの作成(ロケール定義・ルーティング設定)src/i18n/request.tsの作成(リクエストごとのロケール解決)middleware.tsの作成(ロケールプレフィックスの自動付与)src/app/[locale]/layout.tsxの雛形生成
ディレクトリ構造
Antigravity が生成する典型的な i18n プロジェクト構造は以下の通りです。
src/
├── i18n/
│ ├── routing.ts # ロケール定義
│ └── request.ts # リクエスト設定
├── messages/
│ ├── ja.json # 日本語メッセージ
│ └── en.json # 英語メッセージ
├── app/
│ └── [locale]/
│ ├── layout.tsx
│ └── page.tsx
└── middleware.ts
翻訳ファイルの自動生成
i18n で最も手間がかかるのが翻訳ファイルの管理です。Antigravity は、ソースコードから翻訳キーを自動抽出し、翻訳ファイルを生成できます。
日本語から英語への翻訳生成
まず日本語のメッセージファイルを作成します。
{
"navigation": {
"home": "ホーム",
"about": "私たちについて",
"contact": "お問い合わせ",
"pricing": "料金プラン"
},
"hero": {
"title": "AI で、開発をもっとスマートに",
"subtitle": "Antigravity が、あなたのコーディングを加速します",
"cta": "無料で始める"
},
"features": {
"heading": "主な機能",
"ai_completion": "AI コード補完",
"ai_completion_desc": "コンテキストを理解した高精度なコード補完で、タイピング量を削減します",
"multi_agent": "マルチエージェント",
"multi_agent_desc": "複数の AI エージェントが協調して、複雑なタスクを自動処理します"
}
}次に、Antigravity に英語版の生成を依頼します。
messages/ja.json を元に、自然な英語で messages/en.json を生成してください。
直訳ではなく、英語ネイティブが読んで自然に感じる表現にしてください。
マーケティングコピーのトーンは維持してください。Antigravity のエージェントは翻訳の文脈を理解し、マーケティング文脈に適した英語を生成します。単純な機械翻訳と異なり、CTA(Call to Action)やブランドメッセージのニュアンスを保持した翻訳が可能です。
コンポーネントでの i18n 実装パターン
useTranslations フックの活用
"use client";
import { useTranslations } from "next-intl";
export function HeroSection() {
const t = useTranslations("hero");
return (
<section className="hero">
<h1>{t("title")}</h1>
<p>{t("subtitle")}</p>
<button>{t("cta")}</button>
</section>
);
}Antigravity でコンポーネントを生成する際、以下のプロンプトを使うと i18n 対応のコードが最初から出力されます。
HeroSectionコンポーネントを作成してください。
テキストはすべてnext-intlのuseTranslationsフックから取得し、
ハードコードされた文字列は使わないでください。
翻訳キーはhero名前空間に配置してください。動的な値の挿入
翻訳メッセージに動的な値を挿入する場合は、ICU メッセージフォーマットを使用します。
{
"greeting": "{name}さん、こんにちは",
"items_count": "{count, plural, =0 {アイテムはありません} one {# 件のアイテム} other {# 件のアイテム}}"
}const t = useTranslations();
// → "田中さん、こんにちは"
t("greeting", { name: "田中" });
// → "3 件のアイテム"
t("items_count", { count: 3 });日付・数値のロケール対応
Intl API との連携
Antigravity に「日付と通貨の表示をロケール対応してください」と指示すると、以下のようなユーティリティを生成します。
import { useLocale } from "next-intl";
export function useFormatters() {
const locale = useLocale();
const formatDate = (date: Date) =>
new Intl.DateTimeFormat(locale, {
year: "numeric",
month: "long",
day: "numeric",
}).format(date);
const formatCurrency = (amount: number, currency: string) =>
new Intl.NumberFormat(locale, {
style: "currency",
currency,
}).format(amount);
return { formatDate, formatCurrency };
}使用例として、日本語ロケールでは 2026年3月21日 や ¥1,500、英語ロケールでは March 21, 2026 や $15.00 のように自動的にフォーマットが切り替わります。
翻訳キーの一括更新ワークフロー
プロジェクトが成長するにつれて、翻訳ファイルの同期が課題になります。Antigravity を使った効率的な一括更新ワークフローを紹介します。
ステップ 1: 未翻訳キーの検出
messages/ja.json と messages/en.json を比較して、
ja.json にあって en.json にないキーを一覧で教えてください。
また、en.json にあって ja.json にないキーも教えてください。ステップ 2: 不足キーの自動翻訳
以下の未翻訳キーについて、ja.json の値を元に
自然な英語訳を en.json に追加してください。
既存のキーは変更しないでください。ステップ 3: 翻訳品質のレビュー
Antigravity のエージェントに翻訳品質のチェックを依頼することも可能です。
en.json の翻訳を確認して、以下の観点でレビューしてください。
- 不自然な英語表現はないか
- ブランドトーンが一貫しているか
- UIコンテキストに適した長さか(ボタンラベルが長すぎないか等)
問題があれば修正案を提示してください。SEO のための多言語メタデータ
多言語サイトでは、各ロケールに適切なメタデータを設定することが SEO 上重要です。
generateMetadata での i18n 対応
import { getTranslations } from "next-intl/server";
export async function generateMetadata({
params: { locale },
}: {
params: { locale: string };
}) {
const t = await getTranslations({ locale, namespace: "metadata" });
return {
title: t("title"),
description: t("description"),
alternates: {
canonical: `https://example.com/${locale}`,
languages: {
ja: "https://example.com/ja",
en: "https://example.com/en",
},
},
openGraph: {
title: t("title"),
description: t("description"),
locale: locale === "ja" ? "ja_JP" : "en_US",
},
};
}hreflang タグの自動生成
Antigravity に「hreflang タグを自動生成するミドルウェアを作成してください」と指示すると、検索エンジンが各言語版を正しく認識するための設定を自動化してくれます。
実践的な Tips
翻訳キーの命名規則
Antigravity で一貫した翻訳キーを生成させるために、プロジェクトの Knowledge Items に命名規則を登録しておくことをおすすめします。
翻訳キーの命名規則:
- ページ名.セクション名.要素名 の形式を使う
例: home.hero.title, about.team.heading
- ボタンテキストは action_ プレフィックスを付ける
例: action_submit, action_cancel
- エラーメッセージは error_ プレフィックスを付ける
例: error_required, error_invalid_email
3言語以上への拡張
新しい言語を追加する場合も、Antigravity がベースとなる翻訳ファイルから新しいロケールのファイルを生成してくれます。
messages/ja.json を元に、韓国語(ko)の翻訳ファイルを生成してください。
韓国のユーザーに自然に読める表現にしてください。
敬語レベルはja.jsonと同程度にしてください。RTL(右から左)言語のサポート
アラビア語やヘブライ語などの RTL 言語に対応する場合は、Antigravity にレイアウトの反転処理も含めて指示できます。
アラビア語(ar)対応を追加してください。
RTLレイアウトのサポートを含め、
dir属性の自動切り替えとCSSの論理プロパティへの変換も行ってください。まとめ
Antigravity の AI エージェントを活用することで、i18n の面倒な作業を大幅に自動化できます。翻訳ファイルの生成・同期、コンポーネントの i18n 対応、SEO メタデータの多言語化まで、一貫したワークフローで効率的に多言語アプリを構築できます。
特に、単なる機械翻訳ではなく、文脈やトーンを理解した高品質な翻訳を生成できる点が、Antigravity を使った i18n の大きな利点です。グローバル展開を視野に入れたプロジェクトでは、ぜひ Antigravity の AI パワーを i18n ワークフローに取り入れてみてください。