FanTaffyショップアカウントログイン

言語とタイムゾーンの配線

表示言語は URL のプレフィックスで決まります。すべての API 呼び出しは X-Locale と X-Timezone を明示的に送信し、サーバーの応答は Content-Language と照合します。

API ベース URL
http://127.0.0.1:8092
表示言語(URL プレフィックス由来)
ja
サーバーが解決した言語(Content-Language)
ja
フロント/バックの言語一致チェック
✓ 表示言語と一致しています
API が対応している言語
en, zh-CN, ja
表示タイムゾーン
Asia/Shanghai
サーバー時刻(UTC のまま)
2026-10-16T17:12:26Z
表示タイムゾーンに変換した時刻
2026/10/17 1:12:26

サーバーが実際に返したもの

このページの他の文言はフロント側のメッセージ(ICU)です。この 2 つは API の応答そのままで、フロントは翻訳しません。ヘッダーで言語を切り替えて変化を確認してください。

サーバーが描画した完成済みの文言(レスポンス本文の `message`)成功しましたこのリクエストの X-Locale に応じてバックエンドが描画したもの — フロント側の文字列ではありません
主なレスポンスヘッダー
Content-Language: ja
X-Timezone: Asia/Shanghai
body.locale: ja
body.timezone: Asia/Shanghai
レスポンス本文(生)
{
  "code": 0,
  "data": {
    "status": "ok",
    "service": "fan-shop-api",
    "version": "dev",
    "started_at": "2026-10-16T16:55:07Z",
    "uptime_seconds": 1039,
    "time": "2026-10-16T17:12:26Z"
  },
  "locale": "ja",
  "message": "成功しました",
  "timezone": "Asia/Shanghai"
}

実験:わざと不一致を起こす

送信する X-Locale を選び、サーバーが実際にどの言語で描画するかを確認できます。未対応の値を送ると、サーバーは即座にソース言語へフォールバックします — だからこそフロントは「対応言語に写像できない値」を送ってはいけません。

送料の目安

言語を切り替えても深いパスを保持

置き換えるのは先頭セグメントだけです:/en/a/b と /zh-CN/a/b は同じページの別言語版です。