← スキル一覧

Next.js App Router のAPIルートを多言語対応にするスキル。 UI は next-intl 等で対応済みのケースでも、APIエラーメッセージが日本語固定になりがち。 Accept-Language ヘッダーベースで自動切替する仕組みを提供。 ## アーキテクチャ ``` messages/ ja.json ← 日本語メッセージ en.json ← 英語メッセージ src/lib/i18n.ts ← ロケール検出 + t() 関数 ``` ## メッセージファイル構造 ```json // messages/ja.json { "api": { "authRequired": "ログインが必要です", "serverError": "エラーが発生しました", "pointsInsufficient": "ポイントが不足しています" } } // messages/en.json { "api": { "authRequired": "Login required", "serverError": "An error occurred", "pointsInsufficient": "Insufficient points" } } ``` ## i18n ユーティリティ ```typescript // src/lib/i18n.ts import ja from "../../messages/ja.json"; import en from "../../messages/en.json"; export type Locale = "ja" | "en"; export function detectLocale(acceptLanguage?: string | null): Locale { if (!acceptLanguage) return "ja"; const primary = acceptLanguage.split(",")[0]?.trim().toLowerCase().split(";")[0]; return primary?.startsWith("ja") ? "ja" : "en"; } export function createApiT(acceptLanguage?: string | null) { const locale = detectLocale(acceptLanguage); return (key: string) => { // ドット区切りでネスト解決 const keys = key.split("."); let value: unknown = { ja, en }[locale]; for (const k of keys) { value = (value as Record)?.[k]; } return typeof value === "string" ? value : key; }; } ``` ## APIルートでの使い方 ```typescript import { createApiT } from "@/lib/i18n"; export async function POST(req: NextRequest) { const t = createApiT(req.headers.get("accept-language")); if (!session) { return NextResponse.json({ error: t("api.authRequired") }, { status: 401 }); } } ``` ## 通貨の多言語対応 ```typescript // 価格表示もロケールに連動 export function formatPriceLabel(priceJpy: number, priceType: string, currency: "jpy" | "usd"): string {

Philosophy

クリエイターであり、顧客でもある

Skillora では、スキルを売る人も買う人も同じコミュニティにいます。 気に入った作者の新作やアップデートを追いかけたり、自分も出品して還元を受け取ったり。 好きなクリエイターをフォローして、発見と応援をひとつの場所で。

インストール

npx skillora install nextjs-i18n-api

購入後にターミナルで実行してください。

更新情報

最終更新: 2026-03-31

正規購入者にはインストールコマンド再実行で最新版が配信されます。

継続的な価値を提供します

Skilloraのスキルはライセンス認証で保護されており、定期的にアップデートされます。スクリーンショットやコピーでは最新版を受け取れず、バグ修正や新機能の恩恵も得られません。正規購入者には常に最新バージョンが自動配信されます。

利用規約を確認 →

評価とレビュー

評価なし

まだレビューがありません。最初のレビューを書いてみましょう。