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} 件の問題', }, 'review.fixNotAvailable': { 'zh-CN': '单条修复功能开发中', en: 'Single fix is under development', ja: '単一修正機能は開発中です', }, 'review.fixAllNotAvailable': { 'zh-CN': '批量修复功能开发中', en: 'Batch fix is under development', 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 Enable Code Review', ja: '3ステップでコードレビューを有効化', }, 'setup.step1': { 'zh-CN': '安装插件后,配置 AI 模型及 API Key,激活智能审核能力', en: 'After installing, configure AI model and API Key to activate intelligent review', ja: 'インストール後、AIモデルとAPIキーを設定してインテリジェントレビューを有効化', }, 'setup.step2': { 'zh-CN': '启用 自定义规则,补充团队特有的编码规范', en: 'Enable custom rules to add team-specific coding standards', ja: 'カスタムルールを有効にしてチーム固有のコーディング規約を追加', }, 'setup.step3': { 'zh-CN': '保存并测试连接,验证配置无误后即可触发审核', en: 'Save and test connection, verify config then trigger review', ja: '保存して接続テスト、設定を確認してレビューを開始', }, 'setup.step3Hint': { 'zh-CN': '按 Ctrl + Shift + R 快捷键触发审核,结果实时显示在 审核结果报告页面中', en: 'Press Ctrl + Shift + R to trigger 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.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.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.pmdGuide': { 'zh-CN': '需要 Java 运行环境;项目根目录创建 ruleset.xml 或在设置中配置 pmd.rulesetPath', en: 'Requires Java runtime; create ruleset.xml in project root or set pmd.rulesetPath in settings', ja: 'Java実行環境が必要。プロジェクトルートにruleset.xmlを作成するか、設定でpmd.rulesetPathを設定してください', }, 'setup.adapter.sqlLanguages': { 'zh-CN': 'SQL', en: 'SQL', ja: 'SQL', }, 'setup.adapter.sqlGuide': { 'zh-CN': '需要 Python 环境和 sqlfluff;运行 pip install sqlfluff,项目根目录创建 .sqlfluff', en: 'Requires Python and sqlfluff; run pip install sqlfluff, create .sqlfluff in project root', ja: 'Python環境とsqlfluffが必要。pip install sqlfluff を実行し、プロジェクトルートに.sqlfluffを作成してください', }, 'setup.adapter.eslintLanguages': { 'zh-CN': 'JS, TS, JSX, TSX(含 JSP 中的 JavaScript 代码,例如