国際化¶
本サイトは3つのロケールに対応し、コンテンツおよび UI の完全な翻訳を提供しています。
対応ロケール¶
コード |
ラベル |
役割 |
|---|---|---|
|
English |
デフォルトロケール |
|
简体中文 |
簡体字中国語 |
|
日本語 |
日本語 |
設定は 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 のミドルウェアにより以下のルールが適用されます:
パススルー ---
/_next、/api、/fonts、および静的ファイル(パスに.を含むもの)へのリクエストは処理されません有効なロケール --- パスの最初のセグメントが
en、zh-CN、またはjaの場合、リクエストはそのまま通過します検出 ---
Accept-Languageヘッダーを解析し、最初に一致するロケールを選択します。一致しない場合はenにフォールバックしますリダイレクト --- ユーザーは
/{detectedLocale}{path}にリダイレクトされます
ミドルウェアのマッチャーは _next、api、fonts、favicon.ico、robots.txt、sitemap.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
ブログ: readMore、featuredArticles、allArticles、noArticles、noArticlesTitle、noArticlesDesc、publishedOn、by、filterByCategory、filterByTag``(``{tag} 付き)、allCategories、searchPlaceholder、categories、tags、share、copyLink、linkCopied、seeMore、home、lastUpdated``(``{date} 付き)
ギャラリー: mediaGallery、noGalleries、viewGallery、photos
ページネーション: previous、next、pageOf``(``{page} と {total} 付き)
フッター: セクション見出し(products、platform、services、company)、リンクラベル、法的リンク(termsOfService、disclaimer、privacyPolicy、manageCookies)、copyright``(``{year} 付き)、icp
Cookie 同意: バーのテキストとボタン、設定ダイアログの見出しとトグルの説明(必須、パフォーマンス、広告)
テーマ: lightMode、darkMode
エラー: backToHome、httpErrorCode、errorSuggest、tryAgain、および HTTP ステータスコード 400、401、403、404、405、408、429、500、502、503、504 とデフォルトのタイトル・説明ペア
SEO: siteTitle、siteDescription
CMS コンテンツローカライズ¶
Strapi の記事とカテゴリはサーバーサイドでローカライズされます。シードスクリプトはまず英語コンテンツを作成し、その後 Strapi の /actions/localize エンドポイントを通じて zh-CN と ja のローカライズを追加します。
fetchPublicArticles 関数と fetchCategories 関数は locale クエリパラメータを Strapi に渡し、適切な翻訳が返されます。
新しい言語の追加¶
src/lib/i18n.tsのlocales配列に**ロケールコードを追加**localeLabelsに**ラベルを追加**(例:"ko": "한국어")translations オブジェクトにすべてのキーの**翻訳を追加**
Strapi で既存の記事とカテゴリに CMS ローカライズを追加
ミドルウェアが
Accept-Languageから新しいロケールを検出することを**テスト**
LocaleSwitcher コンポーネントは localeLabels のすべてのエントリを自動的にレンダリングするため、コンポーネントの変更は不要です。