← Back to list

i18n
by Takashi-Matsumura
⭐ 0🍴 0📅 Jan 16, 2026
SKILL.md
name: 多言語対応(i18n) description: 翻訳ファイル作成、Server/Client Component での多言語実装。翻訳追加、新規ページ作成時に使用。
多言語対応(i18n)実装ガイド
アーキテクチャ
lib/i18n/
├── get-language.ts # ユーザーの言語設定取得
└── page-titles.ts # ページタイトルの翻訳(共通)
app/[module]/
├── page.tsx # モジュールページ
└── translations.ts # モジュール固有の翻訳ファイル
翻訳ファイルの作成
// app/profile/translations.ts
export const profileTranslations = {
en: {
title: "Profile",
personalInfo: "Personal Information",
email: "Email",
role: "Role",
},
ja: {
title: "プロフィール",
personalInfo: "個人情報",
email: "メールアドレス",
role: "ロール",
},
} as const; // ← 必須: 型安全性のため
export type ProfileTranslationKey = keyof typeof profileTranslations.en;
Server Componentでの使用
// app/profile/page.tsx
import { getLanguage } from "@/lib/i18n/get-language";
import { profileTranslations } from "./translations";
export default async function ProfilePage() {
const language = await getLanguage();
const t = profileTranslations[language];
return (
<div>
<h1>{t.title}</h1>
<p>{t.personalInfo}</p>
</div>
);
}
Client Componentでの使用
// components/ProfileCard.tsx
"use client";
interface ProfileCardProps {
language?: string;
}
export function ProfileCard({ language = "en" }: ProfileCardProps) {
// 小規模な翻訳には関数を使用
const t = (en: string, ja: string) => language === "ja" ? ja : en;
return (
<div>
<button>{t("Edit", "編集")}</button>
<button>{t("Save", "保存")}</button>
</div>
);
}
ページタイトルの追加
// lib/i18n/page-titles.ts
export const pageTitles = {
en: {
"/new-page": "New Page Title",
},
ja: {
"/new-page": "新しいページタイトル",
},
} as const;
ベストプラクティス
✅ 推奨
// 翻訳ファイルを使用
<h1>{t.title}</h1>
// as const を使用
const translations = { ... } as const;
// 意味のあるキー名
welcomeMessage: "Welcome to Your Dashboard"
❌ 避ける
// ハードコーディング
<h1>Dashboard</h1>
// as const なし
const translations = { ... } // 型チェックが効かない
// 意味のないキー名
text1: "Dashboard"
新機能開発チェックリスト
- 翻訳ファイル(
translations.ts)を作成 - ページタイトルを
page-titles.tsに追加 - UI要素(ボタン、ラベル)を翻訳
- 英語と日本語の両方をテスト
-
as constを使用
Score
Total Score
60/100
Based on repository quality metrics
✓SKILL.md
SKILL.mdファイルが含まれている
+20
✓LICENSE
ライセンスが設定されている
+10
○説明文
100文字以上の説明がある
0/10
○人気
GitHub Stars 100以上
0/15
○最近の活動
3ヶ月以内に更新がある
0/10
○フォーク
10回以上フォークされている
0/5
✓Issue管理
オープンIssueが50未満
+5
✓言語
プログラミング言語が設定されている
+5
○タグ
1つ以上のタグが設定されている
0/5
Reviews
💬
Reviews coming soon