2025-12-20 20:18:54 +05:30
|
|
|
|
{
|
|
|
|
|
|
"common": {
|
|
|
|
|
|
"save": "保存",
|
|
|
|
|
|
"cancel": "キャンセル",
|
|
|
|
|
|
"close": "閉じる",
|
|
|
|
|
|
"confirm": "確認",
|
|
|
|
|
|
"clear": "クリア",
|
|
|
|
|
|
"edit": "編集",
|
|
|
|
|
|
"delete": "削除",
|
|
|
|
|
|
"loading": "読み込み中..",
|
|
|
|
|
|
"new": "新規"
|
|
|
|
|
|
},
|
|
|
|
|
|
"nav": {
|
|
|
|
|
|
"about": "概要",
|
|
|
|
|
|
"editor": "エディタ",
|
|
|
|
|
|
"newChat": "新しいチャットを開始",
|
2025-12-22 21:54:25 +08:00
|
|
|
|
"github": "GitHub",
|
2025-12-20 20:18:54 +05:30
|
|
|
|
"settings": "設定",
|
|
|
|
|
|
"hidePanel": "チャットパネルを非表示 (Ctrl+B)",
|
|
|
|
|
|
"showPanel": "チャットパネルを表示 (Ctrl+B)",
|
|
|
|
|
|
"aiChat": "AI チャット"
|
|
|
|
|
|
},
|
|
|
|
|
|
"providers": {
|
|
|
|
|
|
"useServerDefault": "サーバーデフォルトを使用",
|
|
|
|
|
|
"openai": "OpenAI",
|
|
|
|
|
|
"anthropic": "Anthropic",
|
|
|
|
|
|
"google": "Google",
|
|
|
|
|
|
"azure": "Azure OpenAI",
|
|
|
|
|
|
"openrouter": "OpenRouter",
|
|
|
|
|
|
"deepseek": "DeepSeek",
|
|
|
|
|
|
"siliconflow": "SiliconFlow"
|
|
|
|
|
|
},
|
|
|
|
|
|
"chat": {
|
|
|
|
|
|
"placeholder": "ダイアグラムを説明するか、ファイルをアップロード...",
|
|
|
|
|
|
"send": "送信",
|
|
|
|
|
|
"sending": "送信中...",
|
|
|
|
|
|
"sendMessage": "メッセージを送信",
|
|
|
|
|
|
"clearConversation": "会話をクリア",
|
|
|
|
|
|
"diagramHistory": "ダイアグラム履歴",
|
|
|
|
|
|
"saveDiagram": "ダイアグラムを保存",
|
|
|
|
|
|
"uploadFile": "ファイルをアップロード(画像、PDF、テキスト)",
|
|
|
|
|
|
"minimalStyle": "ミニマル",
|
|
|
|
|
|
"styledMode": "スタイル付き",
|
|
|
|
|
|
"minimalTooltip": "高速生成のためミニマルを使用(色なし)",
|
|
|
|
|
|
"regenerate": "応答を再生成",
|
|
|
|
|
|
"copyResponse": "応答をコピー",
|
|
|
|
|
|
"copied": "コピーしました!",
|
|
|
|
|
|
"failedToCopy": "コピーに失敗しました",
|
|
|
|
|
|
"goodResponse": "良い応答",
|
|
|
|
|
|
"badResponse": "悪い応答",
|
|
|
|
|
|
"clickToEdit": "クリックして編集",
|
|
|
|
|
|
"editMessage": "メッセージを編集",
|
|
|
|
|
|
"saveAndSubmit": "保存して送信"
|
|
|
|
|
|
},
|
|
|
|
|
|
"examples": {
|
|
|
|
|
|
"title": "AI でダイアグラムを作成",
|
|
|
|
|
|
"subtitle": "作成したいものを説明するか、画像をアップロードして複製",
|
|
|
|
|
|
"quickExamples": "クイック例",
|
|
|
|
|
|
"paperToDiagram": "論文からダイアグラムへ",
|
|
|
|
|
|
"paperDescription": ".pdf, .txt, .md, .json, .csv, .py, .js, .ts などをアップロード",
|
|
|
|
|
|
"animatedDiagram": "アニメーション図",
|
|
|
|
|
|
"animatedDescription": "アニメーションコネクタ付きの Transformer アーキテクチャを描画",
|
|
|
|
|
|
"awsArchitecture": "AWS アーキテクチャ",
|
|
|
|
|
|
"awsDescription": "AWS アイコンでクラウドアーキテクチャ図を作成",
|
|
|
|
|
|
"replicateFlowchart": "フローチャートを複製",
|
|
|
|
|
|
"replicateDescription": "既存のフローチャートをアップロードして複製",
|
|
|
|
|
|
"creativeDrawing": "クリエイティブな描画",
|
|
|
|
|
|
"creativeDescription": "楽しくてクリエイティブなものを描く",
|
|
|
|
|
|
"cachedNote": "例はキャッシュされ、即座に応答します",
|
|
|
|
|
|
"mcpServer": "MCP サーバー",
|
|
|
|
|
|
"mcpDescription": "Claude Desktop、VS Code、Cursor で使用",
|
|
|
|
|
|
"preview": "プレビュー"
|
|
|
|
|
|
},
|
|
|
|
|
|
"settings": {
|
|
|
|
|
|
"title": "設定",
|
|
|
|
|
|
"description": "アプリケーション設定を構成します。",
|
|
|
|
|
|
"accessCode": "アクセスコード",
|
|
|
|
|
|
"accessCodePlaceholder": "アクセスコードを入力",
|
|
|
|
|
|
"accessCodeDescription": "このアプリケーションを使用するために必要です。",
|
|
|
|
|
|
"aiProvider": "AI プロバイダー設定",
|
|
|
|
|
|
"aiProviderDescription": "独自の API キーを使用して使用制限を回避できます。キーはブラウザのローカルに保存され、サーバーには保存されません。",
|
|
|
|
|
|
"provider": "プロバイダー",
|
|
|
|
|
|
"modelId": "モデル ID",
|
|
|
|
|
|
"apiKey": "API キー",
|
|
|
|
|
|
"apiKeyPlaceholder": "あなたの API キー",
|
|
|
|
|
|
"baseUrl": "ベース URL(オプション)",
|
|
|
|
|
|
"customEndpoint": "カスタムエンドポイント URL",
|
|
|
|
|
|
"overrides": "上書き",
|
|
|
|
|
|
"clearSettings": "設定をクリア",
|
|
|
|
|
|
"useServerDefault": "サーバーデフォルトを使用",
|
2025-12-22 21:54:25 +08:00
|
|
|
|
"language": "言語",
|
|
|
|
|
|
"languageDescription": "インターフェース言語を選択します。",
|
2025-12-20 20:18:54 +05:30
|
|
|
|
"theme": "テーマ",
|
|
|
|
|
|
"themeDescription": "インターフェースと DrawIO キャンバスのダーク/ライトモード。",
|
|
|
|
|
|
"drawioStyle": "DrawIO スタイル",
|
|
|
|
|
|
"drawioStyleDescription": "キャンバススタイル:",
|
|
|
|
|
|
"switchTo": "切り替え",
|
|
|
|
|
|
"minimal": "ミニマル",
|
|
|
|
|
|
"sketch": "スケッチ",
|
|
|
|
|
|
"closeProtection": "ページ離脱確認",
|
|
|
|
|
|
"closeProtectionDescription": "ページを離れる際に確認を表示します。"
|
|
|
|
|
|
},
|
|
|
|
|
|
"save": {
|
|
|
|
|
|
"title": "ダイアグラムを保存",
|
|
|
|
|
|
"description": "形式とファイル名を選択してダイアグラムを保存します。",
|
|
|
|
|
|
"format": "形式",
|
|
|
|
|
|
"filename": "ファイル名",
|
|
|
|
|
|
"filenamePlaceholder": "ファイル名を入力",
|
|
|
|
|
|
"formats": {
|
|
|
|
|
|
"drawio": "Draw.io XML",
|
|
|
|
|
|
"png": "PNG 画像",
|
|
|
|
|
|
"svg": "SVG 画像"
|
|
|
|
|
|
}
|
|
|
|
|
|
},
|
|
|
|
|
|
"history": {
|
|
|
|
|
|
"title": "ダイアグラム履歴",
|
|
|
|
|
|
"description": "AI 修正前に保存された各ダイアグラム。\nダイアグラムをクリックして復元",
|
|
|
|
|
|
"noHistory": "まだ履歴がありません。メッセージを送信してダイアグラム履歴を作成してください。",
|
|
|
|
|
|
"version": "バージョン",
|
|
|
|
|
|
"restoreTo": "バージョン {version} に復元しますか?"
|
|
|
|
|
|
},
|
|
|
|
|
|
"dialogs": {
|
|
|
|
|
|
"clearTitle": "すべてクリアしますか?",
|
|
|
|
|
|
"clearDescription": "現在の会話をクリアし、ダイアグラムをリセットします。この操作は元に戻せません。",
|
|
|
|
|
|
"clearEverything": "すべてクリア",
|
|
|
|
|
|
"clearSuccess": "新しいチャットを開始しました"
|
|
|
|
|
|
},
|
|
|
|
|
|
"errors": {
|
|
|
|
|
|
"maxFiles": "ファイルが多すぎます。最大 {max} 個まで許可されています。",
|
|
|
|
|
|
"onlyMoreAllowed": "あと {slots} 個のファイルのみ許可されています",
|
|
|
|
|
|
"fileExceeds": "「{name}」は {size} です({max}MB を超えています)",
|
|
|
|
|
|
"unsupportedType": "「{name}」はサポートされていないファイルタイプです",
|
|
|
|
|
|
"filesRejected": "{count} 個のファイルが拒否されました:",
|
|
|
|
|
|
"andMore": "...およびさらに {count} 個",
|
|
|
|
|
|
"invalidAccessCode": "無効または欠落したアクセスコード。設定で入力してください。",
|
|
|
|
|
|
"networkError": "ネットワークエラー。接続を確認してください。",
|
|
|
|
|
|
"retryLimit": "自動再試行制限に達しました({max})。手動で再試行してください。",
|
|
|
|
|
|
"validationFailed": "ダイアグラムの検証に失敗しました。再生成してみてください。",
|
|
|
|
|
|
"malformedXml": "AI が無効なダイアグラム XML を生成しました。再生成してみてください。",
|
|
|
|
|
|
"failedToProcess": "ダイアグラムの処理に失敗しました。再生成してみてください。",
|
|
|
|
|
|
"sessionCorrupted": "セッションデータが破損しました。最初からやり直します。",
|
|
|
|
|
|
"failedToSave": "localStorage へのメッセージの保存に失敗しました",
|
|
|
|
|
|
"failedToRestore": "localStorage からの復元に失敗しました",
|
|
|
|
|
|
"failedToPersist": "アンロード前の状態の永続化に失敗しました",
|
|
|
|
|
|
"failedToExport": "チャートデータの取得エラー",
|
|
|
|
|
|
"failedToLoadExample": "例の画像の読み込みエラー"
|
|
|
|
|
|
},
|
|
|
|
|
|
"quota": {
|
|
|
|
|
|
"dailyLimit": "1日の割当量に達しました",
|
|
|
|
|
|
"tokenLimit": "1日のトークン制限に達しました",
|
|
|
|
|
|
"tpmLimit": "レート制限",
|
|
|
|
|
|
"tpmMessage": "リクエストが多すぎます。しばらくお待ちください。",
|
|
|
|
|
|
"messageApi": "おっと — このデモの1日の API 制限に達しました!個人開発者として API コストをすべて負担しているため、持続可能性を保つためにこれらの制限を設定する必要があります。",
|
|
|
|
|
|
"messageToken": "おっと — このデモの1日のトークン制限に達しました!個人開発者として API コストをすべて負担しているため、持続可能性を保つためにこれらの制限を設定する必要があります。",
|
|
|
|
|
|
"tip": "<strong>ヒント:</strong>独自の API キーを使用する(設定アイコンをクリック)か、プロジェクトをセルフホストしてこれらの制限を回避できます。",
|
|
|
|
|
|
"reset": "制限は明日リセットされます。ご理解ありがとうございます!",
|
|
|
|
|
|
"selfHost": "セルフホスト",
|
|
|
|
|
|
"sponsor": "スポンサー",
|
|
|
|
|
|
"learnMore": "詳細 →",
|
|
|
|
|
|
"usedOf": "{used}/{limit}"
|
|
|
|
|
|
},
|
|
|
|
|
|
"tools": {
|
|
|
|
|
|
"generateDiagram": "ダイアグラムを生成",
|
|
|
|
|
|
"editDiagram": "ダイアグラムを編集",
|
|
|
|
|
|
"appendDiagram": "ダイアグラムに追加",
|
|
|
|
|
|
"complete": "完了",
|
|
|
|
|
|
"error": "エラー",
|
|
|
|
|
|
"truncated": "切り捨て"
|
|
|
|
|
|
},
|
|
|
|
|
|
"file": {
|
|
|
|
|
|
"reading": "読み込み中...",
|
|
|
|
|
|
"chars": "文字",
|
|
|
|
|
|
"removeFile": "ファイルを削除"
|
|
|
|
|
|
},
|
|
|
|
|
|
"reasoning": {
|
|
|
|
|
|
"thinking": "考え中...",
|
|
|
|
|
|
"thoughtFor": "{duration} 秒考えました",
|
|
|
|
|
|
"thoughtBrief": "数秒考えました"
|
|
|
|
|
|
},
|
|
|
|
|
|
"about": {
|
|
|
|
|
|
"modelChange": "モデル変更と利用制限について",
|
|
|
|
|
|
"walletCrying": "(別名:お財布が悲鳴を上げています)",
|
|
|
|
|
|
"seekingSponsorship": "スポンサー募集",
|
|
|
|
|
|
"contactMe": "お問い合わせ",
|
|
|
|
|
|
"usageNotice": "利用量の増加に伴い、コスト削減のためモデルを Claude から minimax-m2 に変更し、いくつかの利用制限を設けました。詳細は概要ページをご覧ください。"
|
feat: multi-provider model configuration with UI/UX improvements (#355)
* feat: add multi-provider model configuration
- Add model config dialog for managing multiple AI providers
- Support for OpenAI, Anthropic, Google, Azure, Bedrock, OpenRouter, DeepSeek, SiliconFlow, Ollama, and AI Gateway
- Add model selector dropdown in chat panel header
- Add API key validation endpoint
- Add custom model ID input with keyboard navigation
- Fix hover highlight in Command component
- Add suggested models for each provider including latest Claude 4.5 series
- Store configuration locally in browser
* feat: improve model config UI and move selector to chat input
- Move model selector from header to chat input (left of send button)
- Add per-model validation status (queued, running, valid, invalid)
- Filter model selector to only show verified models
- Add editable model IDs in config dialog
- Add custom model input field alongside suggested models dropdown
- Fix hover states on provider buttons and select triggers
- Update OpenAI suggested models with GPT-5 series
- Add alert-dialog component for delete confirmation
* refactor: revert shadcn component changes, apply hover fix at usage site
* feat: add AWS credentials support for Bedrock provider
- Add AWS Access Key ID, Secret Access Key, Region fields for Bedrock
- Show different credential fields based on provider type
- Update validation API to handle Bedrock with AWS credentials
- Add region selector with common AWS regions
* fix: reset Test button after validation completes
* fix: reset validation button to Test after success
* fix: complete bedrock support and UI/UX improvements
- Add bedrock to ALLOWED_CLIENT_PROVIDERS for client credentials
- Pass AWS credentials through full chain (headers → API → provider)
- Replace non-existent GPT-5 models with real ones (o1, o3-mini)
- Add accessibility: aria-labels, focus-visible rings, inline errors
- Add more AWS regions (Ohio, London, Paris, Mumbai, Seoul, São Paulo)
- Fix setTimeout cleanup with useRef on component unmount
- Fix TypeScript type consistency in getSelectedAIConfig fallback
* chore: remove unused code
- Remove unused setAccessCodeRequired state in chat-panel.tsx
- Remove unused getSelectedModel export in model-config.ts
* fix: UI/UX improvements for model configuration dialog
- Add gradient header styling with icon badge
- Change Configuration section icon from Key to Settings2
- Add duplicate model detection with warning banner and inline removal
- Filter out already-added models from suggestions dropdown
- Add type-to-confirm for deleting providers with 3+ models
- Enhance delete confirmation dialog with warning icon
- Improve model selector discoverability (show model name + chevron)
- Add truncation for long model names with title tooltip
- Remove AI provider settings from Settings dialog (now in Model Config)
- Extract ValidationButton into reusable component
* fix: prevent duplicate model IDs within same provider
- Block adding model if ID already exists in provider
- Block editing model ID to match existing model in provider
* fix: improve duplicate model ID notifications
- Add toast notification when trying to add duplicate model
- Allow free typing when editing model ID, validate on blur
- Show warning toast instead of blocking input
* fix: improve duplicate model validation UX in config dialog
- Add inline error display for duplicate model IDs
- Show red border on input when error exists
- Validate on blur with shake animation for edit errors
- Prevent saving empty model names
- Clear errors when user starts typing
- Simplify error styling (small red text, no heavy chips)
2025-12-22 22:36:36 +09:00
|
|
|
|
},
|
|
|
|
|
|
"modelConfig": {
|
|
|
|
|
|
"title": "AIモデル設定",
|
|
|
|
|
|
"description": "複数のAIプロバイダーとモデルを設定",
|
|
|
|
|
|
"configure": "設定",
|
|
|
|
|
|
"addProvider": "プロバイダーを追加",
|
|
|
|
|
|
"addModel": "モデルを追加",
|
|
|
|
|
|
"modelId": "モデルID",
|
|
|
|
|
|
"modelLabel": "表示名",
|
|
|
|
|
|
"streaming": "ストリーミングを有効",
|
|
|
|
|
|
"deleteProvider": "プロバイダーを削除",
|
|
|
|
|
|
"deleteModel": "モデルを削除",
|
|
|
|
|
|
"noModels": "モデルが設定されていません。モデルを追加してください。",
|
|
|
|
|
|
"selectProvider": "プロバイダーを選択または追加してください",
|
|
|
|
|
|
"configureMultiple": "複数のAIプロバイダーを設定して簡単に切り替え",
|
|
|
|
|
|
"apiKeyStored": "APIキーはブラウザにローカル保存されます",
|
|
|
|
|
|
"test": "テスト",
|
|
|
|
|
|
"validationError": "検証に失敗しました",
|
|
|
|
|
|
"addModelFirst": "検証するには少なくとも1つのモデルを追加してください"
|
2025-12-20 20:18:54 +05:30
|
|
|
|
}
|
|
|
|
|
|
}
|