ts-intl
チャプター:名前空間とスコープ

名前空間とスコープ

機能モジュールやページごとに翻訳語句を整理することで、キー名の衝突を回避し、呼び出しパスを簡素化できます。

スコープ付きトランスレーター

getTranslations の呼び出し時に第 2 引数として名前空間を渡すと、その名前空間のスコープに限定された翻訳関数が返されます:

const messages = {
  admin: {
    dashboard: {
      metrics: "リアルタイム指標",
      refresh: "データ更新",
    },
  },
} as const;

// ネストされた名前空間にスコープ
const t = getTranslations("ja-JP", "admin.dashboard");

t("metrics"); // "リアルタイム指標"
t("refresh"); // "データ更新"

グローバルフラットトランスレーター

名前空間パラメータを省略すると、getTranslations はルートトランスレーターを返し、ドット区切りパス経由でのネストされたキーへのアクセスをサポートします:

const t = getTranslations("ja-JP");

t("admin.dashboard.metrics"); // "リアルタイム指標"

生データの抽出 t.raw()

設定オブジェクトや配列などの未加工構造を直接取得する必要がある場合は、t.raw() を使用できます:

const messages = {
  config: {
    maxRetries: 3,
    endpoints: ["api-1.example.com", "api-2.example.com"],
  },
} as const;

const t = getTranslations("ja-JP");

const endpoints = t.raw("config.endpoints");
// 推論型: readonly ["api-1.example.com", "api-2.example.com"]

キーの存在チェック t.has()

指定されたキーが現在の言語またはフォールバック言語に存在するかを検出し、未翻訳キーの警告をトリガーしません:

const t = getTranslations("ja-JP", "features");

if (t.has("betaFeatureBadge")) {
  renderBadge(t("betaFeatureBadge"));
}