/* i18n — Japanese + English dictionaries */

const DICT = {
  ja: {
    nav_features: "特徴",
    nav_how: "使い方",
    nav_start: "はじめる",

    /* Top page */
    hero_badge: "AIで作る、SNS広告バナー",
    hero_title_a: "30秒で、",
    hero_title_em: "勝てるバナーを。",
    hero_title_b: "",
    hero_lede:
      "商品情報を答えるだけで、AIがコピーから配色まで設計します。マーケ担当者・OEM企業・デザイナー不在のチームのための、SNS広告バナージェネレーター。",
    hero_cta_start: "無料で作成する",
    hero_cta_demo: "実物を見る",
    hero_meta_1: "クレジットカード不要",
    hero_meta_2: "30秒で完成",
    hero_meta_3: "全SNS媒体に対応",

    logos_label: "対応SNS媒体",

    how_eyebrow: "Workflow",
    how_title: "ヒアリング → 生成 → ダウンロード",
    how_lede: "デザインの知識ゼロでも、最短3ステップでバナーが手に入ります。",
    step_1_title: "情報を入力",
    step_1_body: "媒体・比率・商品情報・ターゲットを1ページで入力。約2分。",
    step_2_title: "AIが生成",
    step_2_body: "ターゲットに刺さるキャッチコピーと配色をClaudeが提案。",
    step_3_title: "ダウンロード",
    step_3_body: "PNGとして即ダウンロード、またはコピーをクリップボードに。",

    features_eyebrow: "Features",
    features_title: "あなたの広告運用に、必要なすべてを。",
    f1_title: "媒体最適化",
    f1_body: "Instagram、X、LINE、TikTokなど7媒体に合わせた構図と比率に対応。",
    f2_title: "コピーライティングAI",
    f2_body: "商品の特徴とターゲットから、訴求軸を抽出してコピー案を生成。",
    f3_title: "5つの画像比率",
    f3_body: "1:1 / 4:5 / 9:16 / 16:9 / 1.91:1 — フィードからストーリーズまで。",
    f4_title: "ブランドセーフ",
    f4_body: "入力画像はブラウザ内のみで処理。サーバーには保存しません。",
    f5_title: "ワンクリック書き出し",
    f5_body: "高解像度PNGをダウンロード、コピーをクリップボードへ即コピー。",
    f6_title: "デザイナー不在でOK",
    f6_body: "テンプレと配色はAIが選定。判断と承認だけに集中できます。",

    cta_title: "次の広告、AIに任せてみますか？",
    cta_body: "1分で結果が見られます。アカウント登録は不要。",
    cta_button: "今すぐバナーを作る",

    footer_copy: "© 2026 BANNR. All rights reserved.",
    footer_links: "プライバシー · 利用規約 · お問い合わせ",

    /* Hearing */
    hearing_eyebrow: "Step 1 of 1",
    hearing_title: "バナー作成のヒアリング",
    hearing_lede: "全項目を埋めると、AIが最適化されたバナーを1枚生成します。所要時間は約2分です。",
    field_platforms: "掲載媒体",
    field_platforms_hint: "複数選択できます。媒体ごとに最適な構図に調整されます。",
    field_ratio: "画像比率",
    field_ratio_hint: "選んだ媒体の推奨比率がハイライトされます。",
    field_name: "商品・サービス名",
    field_name_placeholder: "例：BANNR — AI広告バナーツール",
    field_desc: "商品・サービス説明",
    field_desc_hint: "URLでもテキストでもOKです。長めに書くほどコピー精度が上がります。",
    field_desc_placeholder: "例：https://example.com\nまたは「忙しいマーケ担当者のための〜」など、商品の特徴・USP・想定利用シーンなどを記入してください。",
    field_image: "商品・サービス画像",
    field_image_drop: "ここに画像をドラッグ＆ドロップ",
    field_image_or: "またはクリックして選択（JPG, PNG, WebP / 〜10MB）",
    field_image_change: "画像を変更",
    field_target: "ターゲット",
    field_target_hint: "年齢・性別・職業・悩みなど、できるだけ具体的に書くとコピーが精緻になります。",
    field_target_placeholder: "例：30代女性・働くママ・時短家電に興味がある・SNSはInstagram中心",

    summary_title: "入力サマリー",
    summary_platforms: "媒体",
    summary_ratio: "比率",
    summary_name: "サービス名",
    summary_image: "画像",
    summary_target: "ターゲット",
    summary_none: "未入力",
    progress_label: "入力進捗",

    submit_button: "バナーを生成する",
    submit_note: "AIで生成します（約10秒）",
    submit_back: "← トップへ戻る",
    submit_warn: "{n}項目の入力が不足しています",

    required: "必須",
    optional: "任意",

    /* Result */
    result_eyebrow: "Generated by AI",
    result_title: "バナーが完成しました",
    result_lede: "気に入らなければ「再生成」、配色やコピーは右側で個別に編集できます。",
    result_back: "← 入力に戻る",
    result_regenerate: "再生成",
    result_download: "PNGでダウンロード",
    result_copy_text: "コピーをクリップボードに",
    result_copy_done: "コピーしました",
    result_download_done: "ダウンロード完了",
    result_template: "テンプレート",
    result_template_split: "Split",
    result_template_overlay: "Overlay",
    result_template_minimal: "Minimal",
    result_meta: "バナー情報",
    result_copy: "生成コピー",
    result_headline: "ヘッドライン",
    result_subhead: "サブコピー",
    result_cta: "CTA",
    result_palette: "配色",
    result_size: "サイズ",
    result_format: "形式",
    gen_step_1: "ターゲットを分析中…",
    gen_step_2: "訴求軸を抽出中…",
    gen_step_3: "コピーを生成中…",
    gen_step_4: "配色を最適化中…",
    gen_step_5: "バナーを描画中…",
    gen_title: "AIがバナーを生成しています",
  },

  en: {
    nav_features: "Features",
    nav_how: "How it works",
    nav_start: "Get started",

    hero_badge: "AI-powered SNS ad banners",
    hero_title_a: "Ship a winning",
    hero_title_em: " banner in 30 seconds.",
    hero_title_b: "",
    hero_lede:
      "Answer a few questions about your product — AI handles copywriting, layout, and color. Built for marketers, OEM brands, and teams without an in-house designer.",
    hero_cta_start: "Start for free",
    hero_cta_demo: "See it in action",
    hero_meta_1: "No credit card",
    hero_meta_2: "30s to first banner",
    hero_meta_3: "All major SNS",

    logos_label: "Supported platforms",

    how_eyebrow: "Workflow",
    how_title: "Brief → Generate → Download",
    how_lede: "No design skill required. Three steps from idea to finished asset.",
    step_1_title: "Fill the brief",
    step_1_body: "Platform, ratio, product info, and target audience — about 2 minutes.",
    step_2_title: "AI generates",
    step_2_body: "Claude writes the headline and picks colors that match your target.",
    step_3_title: "Download",
    step_3_body: "Export as PNG instantly, or copy the ad copy to your clipboard.",

    features_eyebrow: "Features",
    features_title: "Everything your campaign needs.",
    f1_title: "Platform-aware",
    f1_body: "Layouts tuned for Instagram, X, LINE, TikTok and four more channels.",
    f2_title: "Copywriting AI",
    f2_body: "Extracts the strongest angle from your product info and target persona.",
    f3_title: "Five aspect ratios",
    f3_body: "1:1 / 4:5 / 9:16 / 16:9 / 1.91:1 — feed to Story to display ad.",
    f4_title: "Brand safe",
    f4_body: "Images stay in your browser. Nothing is stored on our servers.",
    f5_title: "One-click export",
    f5_body: "High-res PNG download or one-tap copy to clipboard.",
    f6_title: "No designer needed",
    f6_body: "AI handles template and palette — you focus on approving the copy.",

    cta_title: "Let AI design your next ad.",
    cta_body: "First banner in under a minute. No account required.",
    cta_button: "Create a banner now",

    footer_copy: "© 2026 BANNR. All rights reserved.",
    footer_links: "Privacy · Terms · Contact",

    hearing_eyebrow: "Step 1 of 1",
    hearing_title: "Banner brief",
    hearing_lede: "Fill out the form below — AI generates one optimized banner. ~2 minutes.",
    field_platforms: "Platforms",
    field_platforms_hint: "Multiple selection. Layout adapts to each platform.",
    field_ratio: "Aspect ratio",
    field_ratio_hint: "Recommended ratios highlight based on platforms you chose.",
    field_name: "Product / service name",
    field_name_placeholder: "e.g. BANNR — AI Ad Banner Tool",
    field_desc: "Product / service description",
    field_desc_hint: "URL or freeform text. More detail = better copy.",
    field_desc_placeholder: "e.g. https://example.com\nor describe: \"A time-saving tool for busy marketers...\"",
    field_image: "Product / service image",
    field_image_drop: "Drag & drop an image here",
    field_image_or: "or click to select (JPG, PNG, WebP / ≤ 10MB)",
    field_image_change: "Change image",
    field_target: "Target audience",
    field_target_hint: "Age, gender, job, pain points — the more specific, the sharper the copy.",
    field_target_placeholder: "e.g. Working moms in their 30s, into time-saving appliances, mostly on Instagram.",

    summary_title: "Brief summary",
    summary_platforms: "Platforms",
    summary_ratio: "Ratio",
    summary_name: "Service",
    summary_image: "Image",
    summary_target: "Target",
    summary_none: "Not set",
    progress_label: "Completion",

    submit_button: "Generate banner",
    submit_note: "Powered by AI (~10s)",
    submit_back: "← Back to home",
    submit_warn: "{n} field(s) still missing",

    required: "Required",
    optional: "Optional",

    result_eyebrow: "Generated by AI",
    result_title: "Your banner is ready",
    result_lede: "Not quite right? Regenerate — or tweak copy and palette on the right.",
    result_back: "← Back to brief",
    result_regenerate: "Regenerate",
    result_download: "Download PNG",
    result_copy_text: "Copy text to clipboard",
    result_copy_done: "Copied",
    result_download_done: "Downloaded",
    result_template: "Template",
    result_template_split: "Split",
    result_template_overlay: "Overlay",
    result_template_minimal: "Minimal",
    result_meta: "Banner info",
    result_copy: "Generated copy",
    result_headline: "Headline",
    result_subhead: "Subhead",
    result_cta: "CTA",
    result_palette: "Palette",
    result_size: "Size",
    result_format: "Format",
    gen_step_1: "Analyzing target audience…",
    gen_step_2: "Extracting value proposition…",
    gen_step_3: "Writing ad copy…",
    gen_step_4: "Optimizing palette…",
    gen_step_5: "Rendering banner…",
    gen_title: "AI is generating your banner",
  },
};

const I18nContext = React.createContext({ lang: "ja", t: (k) => k, setLang: () => {} });

function I18nProvider({ children }) {
  const [lang, setLang] = React.useState(() => {
    try {
      return localStorage.getItem("bannr-lang") || "ja";
    } catch (e) { return "ja"; }
  });
  React.useEffect(() => {
    try { localStorage.setItem("bannr-lang", lang); } catch (e) {}
    document.documentElement.lang = lang;
  }, [lang]);

  const t = React.useCallback(
    (key, vars) => {
      const dict = DICT[lang] || DICT.ja;
      let s = dict[key] ?? key;
      if (vars) Object.keys(vars).forEach((v) => (s = s.replace(`{${v}}`, vars[v])));
      return s;
    },
    [lang]
  );

  return React.createElement(I18nContext.Provider, { value: { lang, t, setLang } }, children);
}

function useI18n() {
  return React.useContext(I18nContext);
}

Object.assign(window, { I18nContext, I18nProvider, useI18n });
