著者:
    作成:2026-06-12最終更新:2026-06-12

    バリアント

    バリアント(Variant)は、同じディクショナリキー(key)を共有するものの、それぞれ異なる variant 名を持つコンテンツファイルの集合です。Intlayerは、useIntlayer に渡されたセレクターに基づいて、適切なファイルを提供します。

    バリアントの宣言

    各ファイルは、名前付きの代替案を1つ表します。variant フィールドを省略する(または "default" に設定する)と、そのファイルがデフォルト(フォールバック)としてマークされます。

    hero-banner.content.ts
    import { t, type Dictionary } from "intlayer";
    
    const dictionary = {
      key: "hero-banner",
      variant: "default",
      content: {
        headline: t({
          en: "Build faster with Intlayer",
          fr: "Développez plus vite avec Intlayer",
        }),
        cta: t({ en: "Get started", fr: "Commencer" }),
      },
    } satisfies Dictionary;
    
    export default dictionary;
    hero-banner.black-friday.content.ts
    import { t, type Dictionary } from "intlayer";
    
    const dictionary = {
      key: "hero-banner",
      variant: "black_friday",
      content: {
        headline: t({
          en: "50 % off — today only",
          fr: "−50 % — aujourd'hui seulement",
        }),
        cta: t({ en: "Shop now", fr: "Acheter maintenant" }),
      },
    } satisfies Dictionary;
    
    export default dictionary;

    バリアントの利用

    デフォルトバリアント

    Hero.tsx
    import { useIntlayer } from "react-intlayer";
    
    export const Hero = () => {
      const { headline, cta } = useIntlayer("hero-banner");
      // → デフォルトバリアント
    
      return (
        <section>
          <h1>{headline}</h1>
          <a>{cta}</a>
        </section>
      );
    };

    名前付きバリアント

    tsx
    const { headline, cta } = useIntlayer("hero-banner", {  variant: "black_friday",});

    ロケールを明示した名前付きバリアント

    tsx
    const content = useIntlayer("hero-banner", {  variant: "black_friday",  locale: "ja",});

    一般的なユースケース

    • 実験キーに基づいた見出しコピーのA/Bテスト
    • 季節限定のプロモーションやキャンペーンのバナー
    • 機能フラグ(feature flags)によって制御されるメッセージ文言
    • 特定の地域に特化したマーケティングキャンペーン