国際化

本サイトは3つのロケールに対応し、コンテンツおよび UI の完全な翻訳を提供しています。

対応ロケール

コード

ラベル

役割

en

English

デフォルトロケール

zh-CN

简体中文

簡体字中国語

ja

日本語

日本語

設定は src/lib/i18n.ts に定義されています:

export const locales = ["en", "zh-CN", "ja"] as const;
export type Locale = (typeof locales)[number];
export const defaultLocale: Locale = "en";

ロケールルーティング

すべてのルートにはロケールセグメントのプレフィックスが付与されます(例: /en/blog/zh-CN/blog)。src/middleware.ts のミドルウェアにより以下のルールが適用されます:

  1. パススルー --- /_next/api/fonts、および静的ファイル(パスに . を含むもの)へのリクエストは処理されません

  2. 有効なロケール --- パスの最初のセグメントが enzh-CN、または ja の場合、リクエストはそのまま通過します

  3. 検出 --- Accept-Language ヘッダーを解析し、最初に一致するロケールを選択します。一致しない場合は en にフォールバックします

  4. リダイレクト --- ユーザーは /{detectedLocale}{path} にリダイレクトされます

ミドルウェアのマッチャーは _nextapifontsfavicon.icorobots.txtsitemap.xml を除外します。

翻訳システム

t() 関数はプレースホルダーをサポートした UI 翻訳を提供します:

t(key: string, locale: Locale, params?: Record<string, string | number>): string

動作:

  • 指定されたロケールの翻訳文字列を返します

  • 要求されたロケールにキーが存在しない場合、en にフォールバックします

  • 翻訳がまったく存在しない場合、生のキーをそのまま返します

  • {placeholder} 補間をサポート: t("pageOf", "zh-CN", { page: 1, total: 5 })"第 1 页,共 5 页"

翻訳キー

約80個のキーが機能領域ごとに整理されて定義されています:

Navbar: brand, blog, gallery, solutions, pricing, developer, login, adminLogin

ブログ: readMorefeaturedArticlesallArticlesnoArticlesnoArticlesTitlenoArticlesDescpublishedOnbyfilterByCategoryfilterByTag``(``{tag} 付き)、allCategoriessearchPlaceholdercategoriestagssharecopyLinklinkCopiedseeMorehomelastUpdated``(``{date} 付き)

ギャラリー: mediaGallerynoGalleriesviewGalleryphotos

ページネーション: previousnextpageOf``(``{page}{total} 付き)

フッター: セクション見出し(productsplatformservicescompany)、リンクラベル、法的リンク(termsOfServicedisclaimerprivacyPolicymanageCookies)、copyright``(``{year} 付き)、icp

Cookie 同意: バーのテキストとボタン、設定ダイアログの見出しとトグルの説明(必須、パフォーマンス、広告)

テーマ: lightModedarkMode

エラー: backToHomehttpErrorCodeerrorSuggesttryAgain、および HTTP ステータスコード 400、401、403、404、405、408、429、500、502、503、504 とデフォルトのタイトル・説明ペア

SEO: siteTitlesiteDescription

CMS コンテンツローカライズ

Strapi の記事とカテゴリはサーバーサイドでローカライズされます。シードスクリプトはまず英語コンテンツを作成し、その後 Strapi の /actions/localize エンドポイントを通じて zh-CN と ja のローカライズを追加します。

fetchPublicArticles 関数と fetchCategories 関数は locale クエリパラメータを Strapi に渡し、適切な翻訳が返されます。

新しい言語の追加

  1. src/lib/i18n.tslocales 配列に**ロケールコードを追加**

  2. localeLabels に**ラベルを追加**(例: "ko": "한국어"

  3. translations オブジェクトにすべてのキーの**翻訳を追加**

  4. Strapi で既存の記事とカテゴリに CMS ローカライズを追加

  5. ミドルウェアが Accept-Language から新しいロケールを検出することを**テスト**

LocaleSwitcher コンポーネントは localeLabels のすべてのエントリを自動的にレンダリングするため、コンポーネントの変更は不要です。