Files
homaroma/apps/website/src/locales/ja/translation.json
T
antigravity-bot BotandYour Name b27afb4561 feat(website): implement PDPA cookie consent banner and script manager (#14)
### Overview
Implement PDPA & GDPR compliant Cookie Consent Management Platform (CMP) for pps/website:
- **Zustand Store (cookieConsentStore.ts):** Stores consent record (
ecessary, nalytics, marketing) in localStorage with skipHydration: true for Next.js SSR safety.
- **Cookie Banner (CookieBanner.tsx):** Fixed bottom floating banner with Quiet Luxury styling, providing Accept All, Reject Non-Essential, and Customize buttons.
- **Preferences Modal (CookiePreferencesModal.tsx):** Detailed modal dialog allowing users to granularly toggle Analytics and Marketing cookies (Strictly Necessary is locked).
- **Script Manager (ScriptManager.tsx):** Coordinates Google Consent Mode v2 (nalytics_storage, d_storage), conditionally injects GA4, Meta Pixel, and TikTok Pixel, and dispatches homaroma:consent-change DOM events.
- **Footer Revocation Link:** Added Cookie Preferences link in the Support column of Footer.tsx so users can modify/revoke consent anytime.
- **Multilingual Support:** Added localized text for TH, EN, JA, and ZH.

---------

Co-authored-by: Your Name <you@example.com>
Reviewed-on: #14
Co-authored-by: antigravity-bot <bot@kittisak.com>
2026-10-18 22:51:47 +00:00

261 lines
11 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"nav": {
"home": "ホーム",
"shop": "ショップ",
"collections": "コレクション",
"scentGuide": "香りガイド",
"about": "私たちについて",
"menu": "メニュー",
"faq": "よくある質問",
"contact": "お問い合わせ",
"shopNow": "今すぐ購入",
"findMyScent": "香りを探す ✨",
"promotions": "プロモーション",
"profile": "マイプロフィール",
"search": {
"title": "検索",
"placeholder": "香りを検索...",
"quickLinks": "クイックリンク",
"allProducts": "すべての商品"
},
"trackOrder": "注文追跡",
"delivery": "配送と返品"
},
"cart": {
"title": "カート",
"items": "{{count}} 点",
"empty": "カートは空です。",
"continueShopping": "ショッピングを続ける",
"subtotal": "小計",
"shippingNote": "送料と税金はチェックアウト時に計算されます。",
"proceed": "レジへ進む",
"addToCart": "カートに追加",
"totalPrice": "合計金額"
},
"footer": {
"catchphrase": "プレミアムな香りで空間をアップグレード",
"explore": "探索",
"support": "サポート",
"followUs": "フォローする",
"contactUs": "お問い合わせ",
"rights": "All rights reserved."
},
"common": {
"home": "ホーム",
"shop": "ショップ",
"viewAll": "すべて見る →",
"backToShop": "ショップに戻る"
},
"product": {
"notFound": "商品が見つかりません",
"premiumCollection": "プレミアムコレクション",
"selectSize": "サイズを選択",
"details": "商品詳細",
"scent": "香り",
"category": "カテゴリー",
"relatedProducts": "関連商品",
"moreRelated": "関連する {{category}}",
"reviews": "レビュー",
"viewDetails": "詳細を見る →"
},
"dynamic": {
"heroLearnMore": "詳しく見る",
"products": "商品",
"viewAll": "すべて見る →",
"emptyProducts": "このセクションには商品がありません。",
"authorBy": "著者",
"notes": {
"top": "トップノート",
"heart": "ミドルノート",
"base": "ベースノート"
},
"contactInfo": {
"address": "住所",
"email": "メール",
"line": "Line",
"hours": "営業時間"
}
},
"contactForm": {
"title": "お問い合わせ",
"subtitle": "チームへメッセージをお送りください。できるだけ早くご返信します。",
"successTitle": "送信に成功しました",
"successBody": "お問い合わせありがとうございます。担当者ができるだけ早く返信します。",
"name": "氏名",
"namePlaceholder": "お名前を入力してください",
"email": "メール",
"message": "メッセージ",
"messagePlaceholder": "ここにメッセージを入力してください...",
"submit": "送信"
},
"checkout": {
"title": "安全なチェックアウト",
"pageHeading": "注文内容の確認",
"pageDescription": "商品を確認し、クーポンやポイントを適用してご注文を確定してください。",
"seoDescription": "{{brand}} で注文内容を確認し、配送先を入力して注文を完了します。",
"seoDescriptionDefault": "注文内容を確認し、配送先を入力して注文を完了します。",
"loadingCart": "カートを読み込み中...",
"emptyCartTitle": "カートは空です",
"emptyCartDesc": "お気に入りの商品を選んでからチェックアウトにお進みください。",
"continueShopping": "ショッピングを続ける",
"recipientInfo": {
"title": "受取人情報",
"subtitle": "この情報は注文作成に使用されます。",
"name": "氏名 *",
"namePlaceholder": "山田 太郎",
"phone": "電話番号 *",
"phonePlaceholder": "0812345678",
"phoneValidation": "有効な電話番号(9〜10桁)を入力してください",
"email": "メールアドレス *",
"emailPlaceholder": "you@example.com"
},
"shippingAddress": {
"title": "配送先住所",
"subtitle": "登録済みの住所を選択するか、新しい住所を入力してください。",
"addNewAddress": "新しい住所を入力",
"defaultBadge": "デフォルト",
"addressLine": "番地・建物名・通り *",
"addressLinePlaceholder": "番地・建物名など",
"subdistrict": "町名・区 *",
"district": "市町村 *",
"province": "都道府県 *",
"zipcode": "郵便番号 *",
"zipcodePlaceholder": "10110"
},
"summary": {
"title": "注文内容",
"itemsCount": "カート内に {{count}} 件",
"standardVariant": "標準",
"couponLabel": "割引クーポン",
"couponPlaceholder": "COUPON",
"applyCoupon": "適用",
"removeCoupon": "削除",
"pointsLabel": "保有ポイント",
"pointsBalance": "{{count}} ポイント",
"usePoints": "ポイントを割引に利用",
"subtotal": "小計",
"coupon": "クーポン",
"points": "ポイント",
"shipping": "送料",
"freeShipping": "送料無料",
"total": "合計",
"notice": "注文を作成して支払い待ち状態にします。決済・明細アップロードは注文詳細画面で行えます。",
"placeOrder": "注文を確定する"
},
"errors": {
"loadFailed": "チェックアウト設定の読み込みに失敗しました",
"invalidCoupon": "このクーポンは利用できません",
"validateCouponFailed": "クーポンを確認できませんでした",
"emptyCart": "カートが空です。商品を選択してください。",
"missingAddress": "配送先住所をすべて入力してください。",
"createOrderFailed": "注文を作成できませんでした"
}
},
"order": {
"status": {
"PENDING_PAYMENT": "支払い待ち",
"PAID": "支払い完了",
"PROCESSING": "発送準備中",
"SHIPPED": "発送済み",
"DELIVERED": "配達完了",
"CANCELLED": "キャンセル済み"
},
"header": {
"orderStatus": "注文状況",
"orderReceived": "ご注文を受け付けました。最新の注文状況の確認やお支払いは下記より行えます。"
},
"cards": {
"created": "注文日",
"status": "ステータス",
"trackingNo": "追跡番号",
"pendingTracking": "発送準備中"
},
"items": {
"title": "注文商品",
"subtotal": "小計",
"shippingFee": "送料",
"discount": "割引",
"total": "合計"
},
"payment": {
"required": "お支払い金額",
"methodBank": "銀行振込",
"methodPromptPay": "PromptPay QR",
"bank": "銀行名",
"accountNumber": "口座番号",
"accountName": "口座名義",
"copied": "口座番号をコピーしました",
"copyAccount": "口座番号をコピー",
"transferInstruction": "指定の金額をお振込みの上、下記より振込明細をアップロードしてください。",
"slipVerification": "振込明細の送信",
"slipUploaded": "明細をアップロードしました",
"slipUploadedDesc": "入金確認後、速やかに発送の手続きを進めます。",
"uploading": "アップロード中...",
"dropSlip": "クリックまたはファイルをドロップして明細を送信",
"supportFormat": "JPG, PNG 対応(最大5MB)",
"uploadFailed": "アップロードに失敗しました。もう一度お試しください。",
"promptPayTitle": "PromptPay QRコード",
"generatePromptPay": "PromptPay QRコードを発行",
"generatingQr": "QRコード生成中...",
"scanPromptPay": "銀行アプリでスキャンしてお支払いください",
"paymentComplete": "お支払いが完了しました。ご購入ありがとうございます!",
"failedGenerateQr": "PromptPay QRコードの発行に失敗しました"
},
"navigation": {
"trackAnother": "他の注文を確認",
"continueShopping": "買い物を続ける",
"loadFailed": "注文情報を読み込めませんでした",
"backToTrack": "注文検索に戻る"
}
},
"track": {
"seoTitle": "注文追跡",
"seoDescription": "注文番号とお電話番号を入力して配送状況をご確認ください。",
"hero": {
"eyebrow": "配送状況の確認",
"title": "ご注文状況を確認する",
"description": "注文番号とお電話番号を入力して配送状況を確認するか、この端末で以前検索した注文を確認できます。"
},
"search": {
"eyebrow": "手動検索",
"title": "注文を検索",
"orderIdLabel": "注文番号",
"orderIdPlaceholder": "例: 1024",
"phoneLabel": "電話番号",
"phonePlaceholder": "ご注文時の電話番号",
"submit": "注文を検索",
"searching": "検索中..."
},
"recent": {
"title": "この端末での検索履歴",
"orderLabel": "注文",
"emptyTitle": "この端末での注文履歴はまだありません",
"emptyDesc": "左側の検索フォームから注文を検索・保存してください"
},
"errors": {
"invalidOrderId": "有効な注文番号を入力してください",
"notFound": "注文情報を確認できませんでした",
"networkError": "接続エラーが発生しました。もう一度お試しください。"
}
},
"cookie": {
"settings": "クッキー設定",
"bannerTitle": "お客様のプライバシーを尊重します",
"bannerDesc": "当ウェブサイトでは、利便性の向上、利用状況の分析、パーソナライズされた広告の提供のためにクッキーを使用しています。同意設定はいつでも変更できます。",
"btnCustomize": "設定",
"btnRejectAll": "必須以外を拒否",
"btnAcceptAll": "すべて同意",
"btnSavePreferences": "設定を保存",
"prefTitle": "プライバシーおよびクッキー設定",
"prefSubtitle": "個人情報保護法(PDPA/GDPR)に基づくクッキーの保存およびデータ利用の同意管理",
"alwaysActive": "常に有効",
"catNecessaryTitle": "必須クッキー (Strictly Necessary)",
"catNecessaryDesc": "ウェブサイトの基本的な機能(ログイン、セキュリティ、カート、言語設定など)に不可欠なクッキーです。このクッキーを無効にすることはできません。",
"catAnalyticsTitle": "分析・パフォーマンスクッキー (Analytics)",
"catAnalyticsDesc": "訪問者数やトラフィックソースを計測し、サイトのパフォーマンスを向上させるためのクッキーです(Google Analyticsなど)。",
"catMarketingTitle": "マーケティング・ターゲティングクッキー (Marketing)",
"catMarketingDesc": "お客様の興味関心に基づいた関連性の高い広告やプロモーションを配信するために使用されます(Meta Pixel、TikTok Pixelなど)。"
}
}