import * as vscode from 'vscode'; export type Language = 'zh-CN' | 'en' | 'ja'; const defaultLang: Language = 'zh-CN'; const messages: Record> = { 'review.noEditor': { 'zh-CN': '请先打开一个文件', en: 'Please open a file first', ja: '最初にファイルを開いてください', }, 'review.noSelection': { 'zh-CN': '请先选中要审查的代码', en: 'Please select code to review first', ja: 'レビューするコードを選択してください', }, 'review.needApiKey': { 'zh-CN': '请先在设置面板中配置 API Key', en: 'Please configure API Key in Setup first', ja: '最初に設定パネルでAPIキーを設定してください', }, 'review.running': { 'zh-CN': '正在审查...', en: 'Reviewing...', ja: 'レビュー中...', }, 'review.staticAnalysis': { 'zh-CN': '运行静态分析...', en: 'Running static analysis...', ja: '静的解析を実行中...', }, 'review.aiReview': { 'zh-CN': '运行 AI 审查...', en: 'Running AI review...', ja: 'AIレビューを実行中...', }, 'review.reviewingSelection': { 'zh-CN': '审查选中代码...', en: 'Reviewing selected code...', ja: '選択したコードをレビュー中...', }, 'review.selectionComplete': { 'zh-CN': '选中代码审查完成: {0} 个问题', en: 'Selection review complete: {0} issue(s)', ja: '選択コードのレビュー完了: {0} 件の問題', }, 'fix.noFix': { 'zh-CN': '该问题无法自动修复', en: 'This issue cannot be auto-fixed', ja: 'この問題は自動修正できません', }, 'fix.failed': { 'zh-CN': '修复失败: {0}', en: 'Fix failed: {0}', ja: '修正に失敗しました: {0}', }, 'fix.applied': { 'zh-CN': '修复完成', en: 'Fix applied', ja: '修正を適用しました', }, 'fix.running': { 'zh-CN': '批量修复中...', en: 'Fixing all issues...', ja: '一括修正中...', }, 'fix.progress': { 'zh-CN': '修复进度', en: 'Fix progress', ja: '修正進捗', }, 'fix.allComplete': { 'zh-CN': '批量修复完成:成功 {0},跳过 {1}', en: 'Batch fix complete: {0} fixed, {1} skipped', ja: '一括修正完了: {0} 成功、{1} スキップ', }, 'fix.undone': { 'zh-CN': '已撤销修复', en: 'Fix undone', ja: '修正を取り消しました', }, 'fix.undoFailed': { 'zh-CN': '撤销失败,代码可能已被手动修改', en: 'Undo failed, the code may have been modified manually', ja: '取り消しに失敗しました。コードが手動で変更された可能性があります', }, 'fix.aiRunning': { 'zh-CN': 'AI 修复中...', en: 'AI fixing...', ja: 'AI修正中...', }, 'fix.aiFailed': { 'zh-CN': 'AI 修复失败: {0}', en: 'AI fix failed: {0}', ja: 'AI修正に失敗しました: {0}', }, 'fix.noAI': { 'zh-CN': '该问题需要 AI 修复,请先在设置面板配置 AI', en: 'This issue needs AI fix, please configure AI in the Setup panel first', ja: 'この問題はAI修正が必要です。設定パネルでAIを設定してください', }, 'fix.confirmApply': { 'zh-CN': '确认应用修复?', en: 'Confirm applying the fix?', ja: '修正を適用しますか?', }, 'fix.apply': { 'zh-CN': '应用', en: 'Apply', ja: '適用', }, 'fix.cancel': { 'zh-CN': '取消', en: 'Cancel', ja: 'キャンセル', }, 'fix.previewTitle': { 'zh-CN': '修复预览', en: 'Fix preview', ja: '修正プレビュー', }, 'export.needRunFirst': { 'zh-CN': '请先运行完整审查生成报告', en: 'Run a full review first to generate a report', ja: '最初に完全レビューを実行してレポートを生成してください', }, 'export.copyToClipboard': { 'zh-CN': '📋 复制到剪贴板', en: '📋 Copy to Clipboard', ja: '📋 クリップボードにコピー', }, 'export.copyDescription': { 'zh-CN': '将报告内容以 Markdown 格式复制到剪贴板', en: 'Copy report in Markdown format to clipboard', ja: 'レポートをMarkdown形式でクリップボードにコピー', }, 'export.downloadMarkdown': { 'zh-CN': '📄 下载 Markdown 文件', en: '📄 Download Markdown File', ja: '📄 Markdownファイルをダウンロード', }, 'export.saveDescription': { 'zh-CN': '将报告保存为 .md 文件', en: 'Save report as .md file', ja: 'レポートを.mdファイルとして保存', }, 'export.selectMethod': { 'zh-CN': '选择导出方式', en: 'Select export method', ja: 'エクスポート方法を選択', }, 'export.copied': { 'zh-CN': '报告已复制到剪贴板', en: 'Report copied to clipboard', ja: 'レポートをクリップボードにコピーしました', }, 'export.saveDialogTitle': { 'zh-CN': '保存审查报告', en: 'Save Review Report', ja: 'レビューレポートを保存', }, 'export.saved': { 'zh-CN': '报告已保存到 {0}', en: 'Report saved to {0}', ja: 'レポートを {0} に保存しました', }, 'setup.noWorkspace': { 'zh-CN': '请先打开工作区', en: 'Please open a workspace first', ja: '最初にワークスペースを開いてください', }, 'setup.manageRulesHint': { 'zh-CN': '请在设置面板中管理自定义规则', en: 'Manage custom rules in the Setup panel', ja: '設定パネルでカスタムルールを管理してください', }, 'setup.openSetupFail': { 'zh-CN': '无法打开设置面板', en: 'Cannot open setup panel', ja: '設定パネルを開けません', }, 'setup.openSettingsJson': { 'zh-CN': '打开设置 (JSON)', en: 'Open Settings (JSON)', ja: '設定を開く (JSON)', }, 'setup.setApiKeyFirst': { 'zh-CN': '请先设置 API Key', en: 'Please set API Key first', ja: '最初にAPIキーを設定してください', }, 'setup.setBaseUrlFirst': { 'zh-CN': '请先设置 Base URL', en: 'Please set Base URL first', ja: '最初にベースURLを設定してください', }, 'setup.testSuccess': { 'zh-CN': '✓ 连接成功', en: '✓ Connection successful', ja: '✓ 接続成功', }, 'setup.testFail': { 'zh-CN': '✗ 连接失败: {0}', en: '✗ Connection failed: {0}', ja: '✗ 接続失敗: {0}', }, 'setup.emptyResponse': { 'zh-CN': 'AI 返回空响应,请检查模型配置', en: 'AI returned an empty response, please check the model configuration', ja: 'AIが空の応答を返しました。モデル設定を確認してください', }, 'setup.selectRuleFile': { 'zh-CN': '选择规则文件', en: 'Select rule file', ja: 'ルールファイルを選択', }, 'setup.fileExists': { 'zh-CN': '文件 {0} 已存在', en: 'File {0} already exists', ja: 'ファイル {0} は既に存在します', }, 'setup.importSuccess': { 'zh-CN': '规则文件已导入: {0}', en: 'Rule file imported: {0}', ja: 'ルールファイルをインポートしました: {0}', }, 'setup.importing': { 'zh-CN': '正在导入自定义规则...', en: 'Importing custom rules...', ja: 'カスタムルールをインポート中...', }, 'setup.importCancelled': { 'zh-CN': '导入已取消', en: 'Import cancelled', ja: 'インポートをキャンセルしました', }, 'setup.importDedupResult': { 'zh-CN': '规则已导入: {0}({1} 条,{2} 条完全重复已注释,{3} 条部分重叠已标注)', en: 'Rules imported: {0} ({1} total, {2} exact duplicate(s) commented, {3} partial overlap(s) marked)', ja: 'ルールをインポートしました: {0}({1} 件、{2} 件の完全重複をコメントアウト、{3} 件の部分重複をマーク)', }, 'setup.importFail': { 'zh-CN': '规则导入失败: {0}', en: 'Rule import failed: {0}', ja: 'ルールのインポートに失敗しました: {0}', }, 'setup.header': { 'zh-CN': '净码特工 · 代码审查 · 设置', en: 'Code Purifier · Setup', ja: 'コードピュリファイア · 設定', }, 'setup.quickStart': { 'zh-CN': '快速开始', en: 'Quick Start', ja: 'クイックスタート', }, 'setup.gettingStarted': { 'zh-CN': '三步开始使用', en: '3 Steps to Get Started', ja: '3ステップで使い始める', }, 'setup.step1': { 'zh-CN': '插件已内置 Linter 静态分析,开箱即用,也可在共通规则中配置项目/全局规则', en: 'The extension includes built-in Linter static analysis, ready to use out of the box, and you can also configure project/global rules in Common Rules', ja: '拡張機能にはLinter静的解析が組み込まれており、そのまま利用できるほか、共通ルールでプロジェクト/グローバルルールも設定できます', }, 'setup.step2': { 'zh-CN': '在 自定义规则 标签页导入团队编码规范,增强审查(可选)', en: 'Import team coding standards in the Custom Rules tab to enhance reviews (optional)', ja: 'カスタムルールタブでチームのコーディング規約をインポート(任意)', }, 'setup.step3': { 'zh-CN': '配置 AI 模型与 API Key保存并测试连接,启用 AI 深度审查', en: 'Configure AI model & API Key and save & test the connection to enable deep AI review', ja: 'AIモデルとAPIキーを設定し保存して接続テスト、AI詳細レビューを有効化', }, 'setup.step3Hint': { 'zh-CN': '按 Ctrl + Shift + R 触发完整审核,结果实时显示在审核结果报告页面', en: 'Press Ctrl + Shift + R to run a full review, results appear in the Review Report panel', ja: 'Ctrl + Shift + R で完全なレビューを実行、結果はレビューレポートに表示', }, 'setup.aiConnectionConfig': { 'zh-CN': 'AI 连接配置', en: 'AI Connection Config', ja: 'AI接続設定', }, 'setup.engineSection': { 'zh-CN': '审核引擎', en: 'Review Engines', ja: 'レビューエンジン', }, 'setup.commonRules': { 'zh-CN': '共通规则', en: 'Common Rules', ja: '共通ルール', }, 'setup.linterStatic': { 'zh-CN': 'Linter 静态分析', en: 'Linter Static Analysis', ja: 'リンター静的解析', }, 'setup.customRules': { 'zh-CN': '自定义规则', en: 'Custom Rules', ja: 'カスタムルール', }, 'setup.teamCoding': { 'zh-CN': '团队编码规范', en: 'Team Coding Standards', ja: 'チームコーディング規約', }, 'setup.aiReview': { 'zh-CN': 'AI 审核', en: 'AI Review', ja: 'AIレビュー', }, 'setup.deepReview': { 'zh-CN': '深度代码审查', en: 'Deep Code Review', ja: '詳細コードレビュー', }, 'setup.aiConfig': { 'zh-CN': 'AI 模型配置', en: 'AI Model Configuration', ja: 'AIモデル設定', }, 'setup.provider': { 'zh-CN': '模型提供商', en: 'Model Provider', ja: 'モデルプロバイダー', }, 'setup.notConfigured': { 'zh-CN': '未配置', en: 'Not configured', ja: '未設定', }, 'setup.model': { 'zh-CN': '模型名称', en: 'Model Name', ja: 'モデル名', }, 'setup.modelPlaceholder': { 'zh-CN': '输入或选择模型名', en: 'Enter or select model name', ja: 'モデル名を入力または選択', }, 'setup.modelHint': { 'zh-CN': '建议使用支持结构化输出的模型。', en: 'Use a model that supports structured output.', ja: '構造化出力をサポートするモデルの使用を推奨。', }, 'setup.apiKey': { 'zh-CN': 'API Key', en: 'API Key', ja: 'APIキー', }, 'setup.baseUrl': { 'zh-CN': 'Base URL', en: 'Base URL', ja: 'ベースURL', }, 'setup.keyStorageHint': { 'zh-CN': 'Key 仅存储在本地 VS Code 安全存储中。', en: 'Key is stored locally in VS Code secure storage.', ja: 'キーはVS Codeの安全なストレージにのみ保存されます。', }, 'setup.outputLang': { 'zh-CN': '语言', en: 'Language', ja: '言語', }, 'setup.outputLangHint': { 'zh-CN': '更改插件的显示语言', en: 'Change plugin display language', ja: 'プラグインの表示言語を変更する', }, 'setup.customRulesSection': { 'zh-CN': '自定义规则', en: 'Custom Rules', ja: 'カスタムルール', }, 'setup.ruleList': { 'zh-CN': '规则列表', en: 'Rule List', ja: 'ルール一覧', }, 'setup.ruleCount': { 'zh-CN': '{0} 条', en: '{0} rule(s)', ja: '{0} 件', }, 'setup.ruleNamePlaceholder': { 'zh-CN': '输入规则名称...', en: 'Enter rule name...', ja: 'ルール名を入力...', }, 'setup.add': { 'zh-CN': '+ 添加', en: '+ Add', ja: '+ 追加', }, 'setup.ruleNameHint': { 'zh-CN': '建议使用英文名称,无需输入 .yaml 后缀(如 security-rules)', en: 'Use English names, no .yaml suffix needed (e.g. security-rules)', ja: '英語名を使用してください、.yaml拡張子は不要です(例: security-rules)', }, 'setup.ruleNameRequired': { 'zh-CN': '请输入规则名称', en: 'Please enter a rule name', ja: 'ルール名を入力してください', }, 'setup.reset': { 'zh-CN': '重置', en: 'Reset', ja: 'リセット', }, 'setup.saveAndTest': { 'zh-CN': '保存并测试连接', en: 'Save & Test Connection', ja: '保存して接続テスト', }, 'setup.configured': { 'zh-CN': '已配置', en: 'Configured', ja: '設定済み', }, 'setup.connected': { 'zh-CN': '✓ 已连接', en: '✓ Connected', ja: '✓ 接続済み', }, 'setup.retry': { 'zh-CN': '✗ 重试', en: '✗ Retry', ja: '✗ 再試行', }, 'setup.ruleCountFormat': { 'zh-CN': '{0} 个文件', en: '{0} file(s)', ja: '{0} ファイル', }, 'setup.noRuleFiles': { 'zh-CN': '暂无规则文件', en: 'No rule files', ja: 'ルールファイルなし', }, 'setup.adapter.subtitle': { 'zh-CN': '静态分析适配器', en: 'Static Analysis Adapters', ja: '静的解析アダプター', }, 'setup.adapter.modeBuiltin': { 'zh-CN': '内置规则', en: 'Built-in Rules', ja: '組み込みルール', }, 'setup.adapter.modeProject': { 'zh-CN': '项目配置', en: 'Project Config', ja: 'プロジェクト設定', }, 'setup.adapter.modeGlobal': { 'zh-CN': '全局配置', en: 'Global Config', ja: 'グローバル設定', }, 'setup.adapter.modeLegend': { 'zh-CN': '插件按 内置<全局<项目的优先级自动选择配置来源', en: 'Auto-selects config by priority: Built-in < Global < Project', ja: '優先順位に従って自動選択: 組み込み < グローバル < プロジェクト', }, 'setup.adapter.modeLegendHelp': { 'zh-CN': '三种配置来源的含义:\n· 内置规则:插件自带的规则集,开箱即用,无需配置\n· 全局配置:在 VS Code 设置中指定的文件路径,对所有项目生效\n· 项目配置:项目根目录下的配置文件,仅对当前项目生效\n\n优先级:内置 < 全局 < 项目,插件自动选择优先级最高的可用配置', en: 'What the three config sources mean:\n· Built-in rules: bundled with the extension, work out of the box\n· Global config: a file path set in VS Code settings, applies to all projects\n· Project config: a config file in the project root, applies to the current project only\n\nPriority: Built-in < Global < Project; the highest-priority available source is used', ja: '3つの設定ソースの意味:\n· 組み込みルール:拡張機能に同梱のルール、設定不要ですぐに使用可\n· グローバル設定:VS Code設定で指定したファイルパス、全プロジェクトに適用\n· プロジェクト設定:プロジェクト直下の設定ファイル、現在のプロジェクトのみに適用\n\n優先度:組み込み < グローバル < プロジェクト、利用可能な中で最優先のものを自動選択', }, 'setup.adapter.configYes': { 'zh-CN': '已配置', en: 'Configured', ja: '設定済み', }, 'setup.adapter.configNo': { 'zh-CN': '未配置', en: 'Not configured', ja: '未設定', }, 'setup.adapter.langLabel': { 'zh-CN': '可审查的语言:', en: 'Languages:', ja: '対応言語:', }, 'setup.adapter.sqlfluffDialectLabel': { 'zh-CN': '方言', en: 'Dialect', ja: '方言', }, 'setup.adapter.tooltipTab': { 'zh-CN': '点击展开/收起静态分析适配器', en: 'Click to expand/collapse static analysis adapters', ja: 'クリックで静的解析アダプターを展開/折りたたむ', }, 'setup.adapter.btnCreateConfig': { 'zh-CN': '创建项目配置', en: 'Create Project Config', ja: 'プロジェクト設定を作成', }, 'setup.adapter.btnEditGlobal': { 'zh-CN': '修改全局设置', en: 'Modify Global Settings', ja: 'グローバル設定を変更', }, 'setup.adapter.tooltipCreate': { 'zh-CN': '在项目根目录创建 {0}', en: 'Create {0} in project root', ja: 'プロジェクトルートに {0} を作成', }, 'setup.adapter.tooltipEdit': { 'zh-CN': '修改 VS Code 设置中的全局参数', en: 'Modify global parameters in VS Code settings', ja: 'VS Code設定のグローバルパラメータを変更', }, 'setup.adapter.toggleEnable': { 'zh-CN': '启用 {0} 适配器', en: 'Enable {0} adapter', ja: '{0} アダプターを有効化', }, 'setup.adapter.toggleDisable': { 'zh-CN': '禁用 {0} 适配器', en: 'Disable {0} adapter', ja: '{0} アダプターを無効化', }, 'setup.template.pmdBestPractices': { 'zh-CN': 'Java 最佳实践(如:避免空 catch、关闭流等)', en: 'Java best practices (avoid empty catch, close streams, etc.)', ja: 'Javaベストプラクティス(空のcatch回避、ストリームクローズ等)', }, 'setup.template.pmdCodeStyle': { 'zh-CN': 'Java 代码风格(如:命名规范、花括号位置等)', en: 'Java code style (naming conventions, brace placement, etc.)', ja: 'Javaコードスタイル(命名規則、ブレース位置等)', }, 'setup.template.sqlfluffDialect': { 'zh-CN': '数据库方言:postgres / mysql / bigquery / snowflake 等', en: 'Database dialect: postgres / mysql / bigquery / snowflake etc.', ja: 'データベース方言:postgres / mysql / bigquery / snowflake など', }, 'setup.template.sqlfluffRules': { 'zh-CN': 'all = 启用全部规则,也可指定规则名逗号分隔', en: 'all = enable all rules, or specify rule names separated by commas', ja: 'all = すべてのルールを有効、ルール名をカンマ区切りで指定可', }, 'setup.template.eslintComment1': { 'zh-CN': '未使用的变量 → 警告', en: 'Unused variables → warning', ja: '未使用変数 → 警告', }, 'setup.template.eslintComment2': { 'zh-CN': '允许使用 console', en: 'Allow console', ja: 'consoleを許可', }, 'setup.template.eslintComment3': { 'zh-CN': '强制分号', en: 'Enforce semicolons', ja: 'セミコロンを強制', }, 'setup.template.stylelintComment1': { 'zh-CN': '缩进 2 空格', en: 'Indentation: 2 spaces', ja: 'インデント: 2スペース', }, 'setup.template.stylelintComment2': { 'zh-CN': '禁止空规则', en: 'No empty rules', ja: '空ルールを禁止', }, 'setup.adapter.pmdLanguages': { 'zh-CN': 'Java(含 JSP 中的 Java 代码,例如<% ... %>)', en: 'Java (including Java code in JSP, e.g. <% ... %>)', ja: 'Java(JSP内のJavaコードを含む、例: <% ... %>)', }, 'setup.adapter.pmdHelp': { 'zh-CN': 'PMD 由 Java 编写,需先安装 Java 运行环境(JDK 8+),否则无法执行。\n\n插件已内置一套 PMD 规则集(7 类 274 条),安装 Java 后即可开箱使用,无需额外配置。\n点击「创建项目配置」,会在项目根目录生成 ruleset.xml,内容与插件内置规则集完全一致(含每类规则的说明注释),方便查看与调整审查范围。\n保存文件即自动生效,无需重启。\n\n若多个项目共用同一份规则,可点「修改全局设置」,在 pmd.rulesetPath 中填写该文件路径', en: 'PMD is written in Java, so a Java runtime (JDK 8+) must be installed first.\n\nThe extension ships a built-in PMD ruleset (7 categories, 274 rules), usable right after installing Java.\nClick "Create Project Config" to generate ruleset.xml in the project root, identical to the built-in ruleset (including per-category comment descriptions) for review and adjustment.\nChanges take effect on save, no restart needed.\n\nTo share one ruleset across projects, click "Modify Global Settings" and set pmd.rulesetPath', ja: 'PMDはJava製のため、まずJava実行環境(JDK 8+)のインストールが必要です。\n\n拡張機能にはPMDルールセット(7カテゴリ・274ルール)が同梱されており、Java導入後すぐに利用できます。\n「プロジェクト設定を作成」をクリックすると、プロジェクト直下にruleset.xmlが生成されます。内容は組み込みルールセットと完全一致し(カテゴリごとの説明コメント付き)、確認・調整が可能です。\n保存後すぐに反映され、再起動は不要です。\n\n複数プロジェクトで同じルールを共有する場合、「グローバル設定を変更」でpmd.rulesetPathを設定してください', }, 'setup.adapter.sqlLanguages': { 'zh-CN': 'SQL', en: 'SQL', ja: 'SQL', }, 'setup.adapter.sqlHelp': { 'zh-CN': 'SQLFluff 是 Python 命令,需先安装 Python 环境与 sqlfluff(pip install sqlfluff),否则无法执行。\n\n插件已内置一套 SQLFluff 精选规则(26 项),安装后即可开箱使用,无需额外配置。\n点击「创建项目配置」,会在项目根目录生成 .sqlfluff,内容与插件内置配置一致(含每条规则的说明注释,以及 rules = all 的启用提示),方便查看与调整。\n保存文件即自动生效,无需重启。\n\n若多个项目共用同一份配置,可点「修改全局设置」填写全局路径', en: 'SQLFluff is a Python command; install Python and sqlfluff (pip install sqlfluff) first.\n\nThe extension ships built-in SQLFluff curated rules (26 items), usable right after install.\nClick "Create Project Config" to generate .sqlfluff in the project root, identical to the built-in config (including per-rule comment descriptions and a rules = all hint) for review and adjustment.\nChanges take effect on save, no restart needed.\n\nTo share one config across projects, click "Modify Global Settings" and set the global path', ja: 'SQLFluffはPython製コマンドのため、まずPython環境とsqlfluff(pip install sqlfluff)が必要です。\n\n拡張機能にはSQLFluff精選ルール(26項目)が同梱されており、インストール後すぐに利用できます。\n「プロジェクト設定を作成」をクリックすると、プロジェクト直下に.sqlfluffが生成されます。内容は組み込み設定と一致し(ルールごとの説明コメントとrules = allのヒント付き)、確認・調整が可能です。\n保存後すぐに反映され、再起動は不要です。\n\n複数プロジェクトで同じ設定を共有する場合、「グローバル設定を変更」でパスを設定してください', }, 'setup.adapter.eslintLanguages': { 'zh-CN': 'JS, TS, JSX, TSX(含 JSP 中的 JavaScript 代码,例如