S1 파일럿 3종(sirsoft-board · sirsoft-gdpr · sirsoft-admin_basic)에 이어
결제·본인인증 동형군 6종의 AGENTS.md · README.md · docs/ 5문서를 집필했다.
확장을 고치려는 쪽이 매번 src/ 를 훑어 구조를 재발견하지 않도록, 설계 의도와
확장점(발행·구독 훅)·수정 시 동반 의무·금지 패턴을 코드 근거로 서술했다.
생성기(ExtensionDocScaffolder)에서 표를 무의미하게 만들던 세 결함을 함께 고쳤다.
getLayoutExtensions 기본 구현이 돌려주는 절대경로가 파일 목록과 중복돼 로컬
머신 경로가 커밋 문서에 실리던 문제, getNotificationDefinitions 를 'key'/'event'
로 읽어 모든 행이 '-' 로 찍히던 문제, getSettingsLayout 절대경로가 정규화 없이
노출되던 문제다. 셋 다 예외를 남기지 않고 표만 조용히 망가뜨리므로
ExtensionDocContractTest 에 각각의 되돌림 red 를 확인한 단언을 두었다.
템플릿의 extensions/{id}/ 는 모듈·플러그인의 발행과 반대 방향(오버라이드)이라
별도 블록(template-overrides)으로 분리했다.
sirsoft-admin_basic 의 컴포넌트·핸들러·레이아웃 문서를 코어 docs/ 에서 그 템플릿
소유로 이관하고, 남은 참조 6축을 재는 가드를 추가했다. 이관 후 남은 옛 경로는
오류가 아니라 헛걸음으로만 나타나 드러나지 않는다. 의 상대 링크가
한 단계 얕아 공유 docs/ 대신 를 가리키던 문제도 함께 고쳤다.
README 상단의 확장명 이미지 배지를 평문 H1 로 바꿨다( 지시 2026-08-31).
루트 README.md · README.ko.md 도 같은 기준을 적용했다. 정보 배지는 유지한다.
sirsoft-gdpr: 회원탈퇴로 자동 철회된 동의가 관리자 동의 이력 화면의 출처 필터로
걸러지지 않던 문제를 고쳤다. Repository 가 'withdraw' 리터럴을 직접 UPDATE 에
싣는데 그 값이 ConsentSource enum 에 없어, 화면 필터 옵션·라벨 어느 쪽에도
도달하지 못했다. 어휘를 enum 단일 출처로 모으고 ko·en·ja 라벨과 필터 옵션을
함께 채웠으며, 어휘 대조 테스트의 모집단에 Repository 를 편입했다.
329 lines
20 KiB
JSON
329 lines
20 KiB
JSON
{
|
||
"editor": {
|
||
"data_source": {
|
||
"gdprConsentLog": "同意ログ",
|
||
"gdprMeConsents": "私の同意履歴",
|
||
"gdprMyConsent": "私の同意",
|
||
"gdprMyConsents": "私の同意履歴",
|
||
"gdprPolicyVersionCurrent": "現在のポリシーバージョン",
|
||
"gdprPolicyVersionHistory": "ポリシーバージョン履歴",
|
||
"gdprPolicyVersionSnapshot": "ポリシーバージョンスナップショット",
|
||
"gdprPublicSettings": "GDPR公開設定",
|
||
"gdprSettings": "GDPR設定"
|
||
}
|
||
},
|
||
"consent": {
|
||
"granted": "同意が保存されました。",
|
||
"granted_again": "同意が更新されました。",
|
||
"rejected_saved": "同意せずに続行します。選択項目は使用されません。",
|
||
"revoked": "同意が取り消されました。",
|
||
"renew_all_success": "アクティブな項目 {renewed} 個を新しいポリシーバージョンに更新しました。",
|
||
"granting": "同意中...",
|
||
"revoking": "取り消し中...",
|
||
"renewing": "更新中...",
|
||
"already_same_state": "既に同じ状態です。",
|
||
"required_cannot_revoke": "必須項目は取り消せません。",
|
||
"invalid_key": "無効な同意項目です。",
|
||
"category_cookie_necessary": "必須クッキー",
|
||
"category_cookie_functional": "機能クッキー",
|
||
"category_cookie_analytics": "分析クッキー",
|
||
"category_cookie_marketing": "マーケティングクッキー"
|
||
},
|
||
"blocked_domains": {
|
||
"invalid_format": "正しいドメイン形式ではありません。(FQDN のみサポート、*.example.com ワイルドカード可能)",
|
||
"invalid_format_functional": "機能カテゴリ — 正しいドメイン形式ではありません。(FQDN のみサポート、*.example.com ワイルドカード可能)",
|
||
"invalid_format_analytics": "分析カテゴリ — 正しいドメイン形式ではありません。(FQDN のみサポート、*.example.com ワイルドカード可能)",
|
||
"invalid_format_marketing": "マーケティングカテゴリ — 正しいドメイン形式ではありません。(FQDN のみサポート、*.example.com ワイルドカード可能)",
|
||
"too_long": "ドメインは253文字を超えることはできません。",
|
||
"too_long_functional": "機能カテゴリ — ドメインは253文字を超えることはできません。",
|
||
"too_long_analytics": "分析カテゴリ — ドメインは253文字を超えることはできません。",
|
||
"too_long_marketing": "マーケティングカテゴリ — ドメインは253文字を超えることはできません。",
|
||
"must_be_array": "カテゴリ別ドメインリストは配列である必要があります。"
|
||
},
|
||
"settings": {
|
||
"saved": "設定が保存されました。",
|
||
"title": "GDPR設定",
|
||
"description": "クッキー同意バナーとマイページ同意管理カードの動作を運営者が制御します。",
|
||
"section": {
|
||
"operator": "運営主体/プライバシーポリシー",
|
||
"operator_desc": "クッキーバナー・ポリシーページに表示される運営主体、データ保管位置、ポリシーページスラッグを登録します。",
|
||
"cookie_banner": "クッキー同意バナー",
|
||
"cookie_banner_desc": "訪問者に表示されるクッキー同意バナーの表示/位置/カテゴリ/ポリシーバージョンを一箇所で設定します。",
|
||
"cookie_banner_settings": "バナー表示設定",
|
||
"cookie_categories": "クッキーカテゴリ",
|
||
"cookie_policy_version": "クッキーポリシーバージョン",
|
||
"auto_blocking": "自動ブロックポリシー",
|
||
"auto_blocking_desc": "クッキーバナーが表示されると、カテゴリ別ドメインリストの外部追跡リソースはユーザーの同意前まで自動ブロックされます。"
|
||
},
|
||
"nav": {
|
||
"operator": "運営情報",
|
||
"cookie_banner": "クッキーバナー",
|
||
"auto_blocking_policy": "自動ブロックポリシー"
|
||
},
|
||
"status": {
|
||
"enabled": "有効化",
|
||
"disabled": "無効化",
|
||
"visible": "表示",
|
||
"hidden": "非表示"
|
||
},
|
||
"fields": {
|
||
"cookie_policy_version": {
|
||
"label": "ポリシーバージョン",
|
||
"hint": "ポリシー本文、カテゴリの意味、受託者・データ保管情報が変わったら「+ 新しいバージョンを公開」を押してください。公開直後にすべての会員が次回訪問時に再同意を進めます。"
|
||
},
|
||
"privacy_policy_slug": {
|
||
"label": "プライバシーポリシーページスラッグ",
|
||
"hint": "ページプラグインに登録された処理方針ページのスラッグ。空の場合、クッキーバナーのポリシーリンクは表示されません。",
|
||
"placeholder": "例: privacy-policy"
|
||
},
|
||
"legal_entity_name": {
|
||
"label": "法人名/運営主体",
|
||
"hint": "クッキーバナーとマイページに表示されるサイト運営主体の名前です。",
|
||
"placeholder": "例: (株)会社名"
|
||
},
|
||
"data_storage_location": {
|
||
"label": "データ保管位置",
|
||
"hint": "ユーザーに案内するデータ保管国を入力してください。例: \"大韓民国\"、\"米国 (AWS)\"。IPアドレス、クラウドリージョンコード(例: ap-northeast-2)、データセンターアドレスはセキュリティ上入力しないでください。",
|
||
"placeholder": "例: 大韓民国 (自社データセンター) / 米国 (AWS)"
|
||
},
|
||
"banner_enabled": {
|
||
"label": "クッキーバナー表示",
|
||
"hint": "有効化時、クッキーバナーの表示と同意前の外部追跡自動ブロックが一緒に開始されます。マイページ同意管理カードはこのトグルと無関係に、同意/取消履歴がある会員に常に表示されます。"
|
||
},
|
||
"banner_position": {
|
||
"label": "バナー位置",
|
||
"hint": "クッキーバナーが画面に表示される位置を選択します。",
|
||
"option_bottom_bar": "下部 (全幅)",
|
||
"option_bottom_left_popup": "左下ポップアップ",
|
||
"option_bottom_right_popup": "右下ポップアップ",
|
||
"option_centered_modal": "中央モーダル"
|
||
},
|
||
"blocked_domains": {
|
||
"warnings_title": "ご案内",
|
||
"auto_blocking_off_hint": "自動ブロックはクッキーバナー表示が ON の場合のみ動作します。「クッキーバナー」カードでクッキーバナー表示トグルを先に有効化してください。",
|
||
"warning_visual_break": "外部フォント・スタイルシートは分類に注意してください。誤ってブロックするとページが静かに崩れる可能性があります。",
|
||
"warning_policy_bump": "ブロックドメインを変更した後、クッキーポリシーバージョンを上げてください。既存の同意者が新しいドメインにも同意したものとして処理される問題を防ぎます。",
|
||
"warning_domain_format": "ドメイン形式: example.com、*.example.com (ワイルドカード) 可能。localhost のようにドットのない名前やハングルドメインはサポートしていません。",
|
||
"warning_scope_limit": "この自動ブロックはプラグイン・モジュールが登録するスクリプトのみが対象です。「テンプレート外部スクリプト」など、運営者が直接 head 領域に挿入した外部スクリプトはこの自動ブロックの保護範囲外なので、別途ロード条件を確認してください。",
|
||
"tag_input_placeholder": "ドメイン入力後 Enter (例: google-analytics.com、*.hotjar.com)",
|
||
"tag_no_options": "推奨ドメインはありません。直接入力してください。",
|
||
"category": {
|
||
"functional": "機能カテゴリブロックドメイン",
|
||
"analytics": "分析カテゴリ ブロック対象ドメイン",
|
||
"marketing": "マーケティングカテゴリ ブロック対象ドメイン"
|
||
}
|
||
},
|
||
"cookie_categories": {
|
||
"description": "クッキーカテゴリ4種の用途とブロック機能の例は、各カードの【情報を展開】で確認できます。",
|
||
"category_required_badge": "必須",
|
||
"category_optional_badge": "選択",
|
||
"info": {
|
||
"expand": "情報を展開",
|
||
"collapse": "情報を閉じる",
|
||
"description_label": "ユーザーへの案内文",
|
||
"scope_label": "自動ブロック対象",
|
||
"tools_label": "代表的なツール例",
|
||
"necessary": {
|
||
"scope": "自動ブロックしません。セッション·ログイントークン、カート識別子、ユーザーが登録時に選択した言語設定、クッキー同意記録など、サイト動作に不可欠な項目は常に許可されます。",
|
||
"tools": "セッションID、認証トークン、CSRFトークン、カート識別子、多言語設定など(別途設定不要)"
|
||
},
|
||
"functional": {
|
||
"scope": "「自動ブロックポリシー」タブの機能カテゴリドメインリストに登録された外部リソースが、同意前までブロックされます。また、ダークモード·通貨選好などのユーザー利便設定も、同意後のみ保存されます。",
|
||
"tools": "顧客サポートチャットボット(Crisp、Intercom、Tawk.to)、多言語自動翻訳ウィジェット、ユーザー設定同期サービスなど"
|
||
},
|
||
"analytics": {
|
||
"scope": "「自動ブロックポリシー」タブの分析カテゴリドメインリストに登録された外部分析スクリプト·埋め込み·トラッキングピクセルが、同意前までブロックされます。同意すると即座に復元され、機能します。",
|
||
"tools": "Google Analytics 4(GA4)、Hotjar、Microsoft Clarity、Mixpanel、Matomo、Naver プレミアムログ分析など"
|
||
},
|
||
"marketing": {
|
||
"scope": "「自動ブロックポリシー」タブのマーケティングカテゴリドメインリストに登録された外部広告·埋め込み·トラッキングピクセルが、同意前までブロックされます。同意すると即座に復元され、機能します。",
|
||
"tools": "Meta Pixel(Facebook)、Google 広告リマーケティング、カカオピクセル、YouTube動画埋め込みなど"
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"save_success": "設定が保存されました。",
|
||
"save_error": "設定の保存中にエラーが発生しました。",
|
||
"validation_error": "入力値をご確認ください。",
|
||
"unsaved_changes": "保存されていない変更があります。",
|
||
"policy_version": {
|
||
"current_label": "現在のバージョン",
|
||
"published_at_label": "公開日時",
|
||
"publisher_label": "公開者",
|
||
"publisher_system": "システム",
|
||
"memo_label": "変更理由",
|
||
"publish_button": "新バージョンを公開",
|
||
"history_toggle_show": "履歴を表示",
|
||
"history_toggle_hide": "履歴を閉じる",
|
||
"history_empty": "公開されたポリシーバージョンがありません。",
|
||
"publish_success": "新しいポリシーバージョンが公開されました。すべての会員は次回訪問時に再同意を行います。",
|
||
"publishing": "公開中...",
|
||
"guide_title": "いつ新バージョンを公開しますか?",
|
||
"guide_body": "ブロック対象ドメインの変更、UI文句の修正などの運用上の変更は、新バージョンの公開は不要です。",
|
||
"change_type": {
|
||
"material": "再同意トリガー",
|
||
"non_material": "単純な変更",
|
||
"initial": "初回公開"
|
||
},
|
||
"history": {
|
||
"col": {
|
||
"version": "バージョン",
|
||
"created_at": "公開日時",
|
||
"publisher": "公開者",
|
||
"change_type": "種類",
|
||
"memo": "理由",
|
||
"snapshot_action": "本文"
|
||
}
|
||
},
|
||
"snapshot_view_short": "表示",
|
||
"material_modal": {
|
||
"title": "新ポリシーバージョンの公開 + 再同意トリガー",
|
||
"body": "【新バージョンを公開】をクリックすると、即座に公開され、すべてのユーザーが次回訪問時に再同意する必要があります。",
|
||
"effect_bump": "ポリシーバージョンが単調増加(例:v2 → v3)",
|
||
"effect_reconsent": "すべての会員が次回訪問時に再同意画面を見ることになります",
|
||
"effect_history": "履歴テーブルに新バージョン行が追加されます",
|
||
"memo_label": "変更理由(必須)",
|
||
"memo_placeholder": "例:規約ページ本文の修正/受託運営者の変更",
|
||
"confirm": "新バージョンを公開"
|
||
},
|
||
"snapshot_modal": {
|
||
"editor_label": "ポリシーバージョン本文を表示",
|
||
"title": "ポリシーバージョンv{version}本文",
|
||
"description": "公開時点での settings のカテゴリリスト·ポリシー本文スラッグ·ブロック対象ドメインなど全体の本文です。DPO が同意紛争時に立証資料として活用します。",
|
||
"section_categories": "クッキーカテゴリ",
|
||
"section_privacy_policy": "ポリシー本文スラッグ",
|
||
"section_blocked_domains": "ブロック対象ドメインカタログ",
|
||
"category_required_badge": "必須",
|
||
"no_categories": "登録されたカテゴリがありません。",
|
||
"no_blocked_domains": "登録されたブロック対象ドメインがありません。",
|
||
"view_button": "v{version}本文を表示",
|
||
"close": "閉じる",
|
||
"open_policy_page": "本文ページを開く",
|
||
"no_policy_slug": "登録されたポリシー本文ページがありません。"
|
||
},
|
||
"not_found": "そのポリシーバージョンが見つかりません。",
|
||
"history_page_summary": "全体 {total}件 · {current} / {last} ページ",
|
||
"history_prev": "前へ",
|
||
"history_next": "次へ"
|
||
}
|
||
},
|
||
"admin": {
|
||
"consent_log": {
|
||
"title": "GDPR 同意履歴",
|
||
"description": "会員·ゲストの同意/取消の変更履歴を照会します。IP·User-Agent など監査情報も併せて表示されます。",
|
||
"refresh": "更新",
|
||
"empty": "照会された同意履歴がありません。",
|
||
"clear_filters": "フィルターを初期化",
|
||
"guest_label": "ゲスト",
|
||
"view_member_tooltip": "会員詳細ページへ移動",
|
||
"search_placeholder": "メールアドレスまたはセッションID で検索",
|
||
"search_button": "検索",
|
||
"search_type": {
|
||
"email": "メールアドレス",
|
||
"session_id": "セッションID"
|
||
},
|
||
"filter": {
|
||
"consent_key_label": "同意項目",
|
||
"action_label": "アクション",
|
||
"source_label": "出典",
|
||
"option_all": "すべて"
|
||
},
|
||
"action": {
|
||
"granted": "同意",
|
||
"revoked": "撤回",
|
||
"rejected": "拒否"
|
||
},
|
||
"source": {
|
||
"banner": "バナー",
|
||
"preference_center": "環境設定",
|
||
"mypage": "マイページ",
|
||
"register": "会員登録",
|
||
"mypage_renew_all": "マイページ一括再同意",
|
||
"withdraw": "会員退会"
|
||
},
|
||
"col": {
|
||
"created_at": "時点",
|
||
"subject": "主体",
|
||
"consent_key": "同意項目",
|
||
"action": "アクション",
|
||
"source": "出典",
|
||
"policy_version": "ポリシーバージョン",
|
||
"ip": "IP"
|
||
},
|
||
"detail": {
|
||
"session_id_label": "セッションID",
|
||
"user_agent_label": "User-Agent",
|
||
"categories_label": "カテゴリスナップショット",
|
||
"categories_hint": "同意時点に会員がカテゴリ別に表示した意思です。ポリシー本文が更新されても、この記録は不変として保存されます。",
|
||
"snapshot_granted": "同意",
|
||
"snapshot_revoked": "未同意"
|
||
}
|
||
}
|
||
},
|
||
"mypage": {
|
||
"privacy": {
|
||
"title": "クッキー同意管理",
|
||
"description": "サイトが使用しているクッキー項目に対する同意を変更または撤回できます。",
|
||
"section_consents": "私の同意状況",
|
||
"section_consents_hint": "同意·撤回時点に従って即座に反映されます。必須項目は撤回できません。",
|
||
"col_consent_key": "同意項目",
|
||
"col_consented": "ステータス",
|
||
"col_consented_at": "同意日",
|
||
"col_revoked_at": "撤回日",
|
||
"col_policy_version": "ポリシーバージョン",
|
||
"col_action": "操作",
|
||
"consented": "同意",
|
||
"revoked": "撤回",
|
||
"rejected_label": "拒否",
|
||
"revoke": "撤回",
|
||
"grant": "同意",
|
||
"grant_again": "改めて同意",
|
||
"label_suffix": "{label}クッキー",
|
||
"locked_label": "必須",
|
||
"enable_all": "すべてに同意",
|
||
"enable_all_hint": "同意していない選択項目があります。一度にすべて同意できます。",
|
||
"enable_all_success": "選択項目のすべてに同意しました。",
|
||
"required_label": "必須",
|
||
"required_hint": "サービス提供に必須のため撤回できません。",
|
||
"grant_confirm_title": "クッキー同意確認",
|
||
"grant_confirm_message": "このクッキーに同意いたしますか?同意すると、該当カテゴリのクッキーが使用され、いつでも再度撤回できます。",
|
||
"revoke_confirm_title": "同意撤回確認",
|
||
"revoke_confirm_message": "この項目を撤回いたしますか?同意を撤回すると、該当カテゴリ関連機能が制限される可能性があります。",
|
||
"revoke_target_consented_at": "同意·{date}",
|
||
"no_consents": "アクティブな同意項目がありません。",
|
||
"needs_renewal": "クッキーポリシーが変更されました。同意を更新してください。",
|
||
"needs_renewal_with_version": "クッキーポリシーがバージョン{version}に変更されました。選択項目の同意を改めてご確認ください。",
|
||
"needs_renewal_hint": "必須クッキーはサイト運営に不可欠な項目のため、ポリシー変更に関わらず常に適用されます。",
|
||
"btn_renew_all": "現在の同意更新",
|
||
"btn_renew_this_item": "ポリシー更新",
|
||
"renew_all_success": "アクティブな項目{renewed}個を新しいポリシーバージョンに更新しました。",
|
||
"operator_and_storage_meta": "本サイトは{entity}が運営しており、データは{location}に保存されます",
|
||
"operator_only_meta": "本サイトは{entity}が運営しています",
|
||
"storage_only_meta": "ユーザーデータは{location}に保存されます"
|
||
}
|
||
},
|
||
"common": {
|
||
"loading": "読み込み中...",
|
||
"refresh": "更新"
|
||
},
|
||
"banner": {
|
||
"re_appear_reason": "クッキーポリシーがバージョン{version}に変更されたため、同意を改めてご確認します。",
|
||
"consent_required_hint": "拒否した項目に関連する機能が制限される可能性があります。",
|
||
"btn_renew_consent": "現在の同意更新",
|
||
"title": "クッキー使用案内",
|
||
"description": "本サイトはユーザーエクスペリエンスの向上と分析のためクッキーを使用します。項目別に同意の有無を選択できます。",
|
||
"accept_all": "すべてに同意",
|
||
"reject_continue": "同意せずに続ける",
|
||
"preferences": "選択同意",
|
||
"save": "選択保存",
|
||
"policy_link": "プライバシーポリシー",
|
||
"preferences_title": "クッキー環境設定",
|
||
"preferences_description": "カテゴリ別クッキー使用を個別に同意·撤回できます。必須カテゴリはオフにできません。",
|
||
"category_required_badge": "必須",
|
||
"view_policy_label": "変更されたポリシー本文を表示",
|
||
"operator_and_storage_line": "本サイトは{entity}が運営しており、データは{location}に保存されます",
|
||
"operator_only_line": "本サイトは{entity}が運営しています",
|
||
"storage_only_line": "ユーザーデータは{location}に保存されます"
|
||
}
|
||
}
|