feat(dashboard): add i18n support with zh/en/ja/ko locales

- Add react-i18next + i18next + i18next-browser-languagedetector
- Create i18n config (singleton import) with zh/en/ja/ko JSON locale files
- Add language switcher Globe dropdown in Header topbar
- Replace all hardcoded Chinese strings in:
  - Layout (Header, Sidebar, NavItem, Layout, constants)
  - Settings (index, AppearanceTab, SecurityTab, OtherTab, AboutTab)
  - Auth page (auth.tsx)
  - Search dialog (searchItems via useMemo + t())
  - Restart overlay (getStatusConfig accepts t param)
  - Error boundary (ErrorFallback, ErrorDetails function components)
  - HTTP warning banner
- localStorage key: maibot-locale
- Compatible with Electron
This commit is contained in:
DrSmoothl
2026-03-03 20:50:06 +08:00
parent 5cc34f24c0
commit a65a40f85f
23 changed files with 7271 additions and 473 deletions

View File

@@ -0,0 +1,477 @@
{
"language": { "zh": "中文", "en": "English", "ja": "日本語", "ko": "한국어" },
"header": {
"collapseSidebar": "サイドバーを折りたたむ",
"expandSidebar": "サイドバーを展開する",
"toggleConnection": "バックエンド接続を切り替える",
"viewAnnualSummary": "年間サマリーを表示",
"annualSummary": "2025 年間サマリー",
"searchPlaceholder": "検索...",
"viewDocs": "MaiBot ドキュメントを表示",
"docs": "MaiBot ドキュメント",
"switchToLight": "ライトモードに切り替える",
"switchToDark": "ダークモードに切り替える",
"logout": "ログアウト",
"logoutLabel": "ログアウト",
"notConnected": "未接続"
},
"sidebar": {
"groups": {
"overview": "概要",
"botConfig": "ボット設定",
"botResources": "ボットリソース",
"extensionsMonitor": "拡張機能 & 監視",
"system": "システム"
},
"menu": {
"home": "ホーム",
"botMainConfig": "ボットメイン設定",
"aiModelProvider": "AIモデルプロバイダー",
"modelManagement": "モデル管理",
"adapterConfig": "アダプター設定",
"emojiManagement": "絵文字管理",
"expressionManagement": "表現管理",
"slangManagement": "スラング管理",
"personInfo": "人物情報",
"knowledgeGraph": "知識グラフ",
"knowledgeBase": "ナレッジベース",
"pluginMarket": "プラグインマーケット",
"configTemplate": "設定テンプレート",
"pluginConfig": "プラグイン設定",
"logViewer": "ログビューア",
"plannerMonitor": "プランナー & リプライヤー監視",
"localChat": "ローカルチャット",
"settings": "設定"
}
},
"layout": {
"verifyingLogin": "ログイン状態を確認中...",
"logoTitle": "MaiBot WebUI",
"logoTitleShort": "M"
},
"settings": {
"title": "設定",
"description": "アプリの設定を管理する",
"tabs": {
"appearance": "外観",
"security": "セキュリティ",
"other": "その他",
"about": "について"
},
"appearance": {
"themeMode": "テーマモード",
"themeModeDesc": "ライト / ダーク / システムに従う",
"light": "ライト",
"dark": "ダーク",
"system": "システム",
"accentColor": "アクセントカラー",
"resetDefault": "デフォルトにリセット",
"colorPreview": "カラープレビュー",
"styleTweaks": "スタイル調整",
"typography": "タイポグラフィ",
"visualEffects": "視覚効果",
"layout": "レイアウト",
"animation": "アニメーション",
"background": "背景",
"customCss": "カスタム CSS",
"animationEffect": "アニメーション効果",
"importExportTheme": "テーマのインポート / エクスポート",
"importTheme": "テーマをインポート",
"exportTheme": "テーマをエクスポート",
"importSuccess": "インポート成功",
"importFailed": "インポート失敗",
"resetSuccess": "リセット成功",
"fontFamily": "フォントファミリー",
"fontSize": "フォントサイズ",
"borderRadius": "ボーダー半径",
"contentWidth": "コンテンツ幅",
"sidebarWidth": "サイドバー幅",
"animationSpeed": "アニメーション速度",
"backgroundImage": "背景画像",
"backgroundBlur": "背景ぼかし",
"backgroundOpacity": "背景透明度",
"lightDesc": "常にライトテーマを使用",
"darkDesc": "常にダークテーマを使用",
"systemDesc": "システム設定に従って自動切り替え",
"accentPrimary": "メインカラー",
"accentHint": "カラーリングをクリックするか、HEX 値を入力してください",
"resetTheme": "デフォルトにリセット",
"confirmResetTheme": "テーマのリセットを確認",
"confirmResetThemeDesc": "これにより、色、フォント、レイアウト、カスタム CSS を含むすべてのテーマ設定がデフォルトにリセットされます。この操作は元に戻せません。よろしいですか?",
"confirmResetAction": "リセットを確認",
"cssWarningTitle": "以下の内容はセキュリティフィルターされました:",
"cssPlaceholder": "/* カスタム CSS をここに入力 */\n\n/* 例: */\n/* .sidebar { background: #1a1a2e; } */",
"cssDescription": "カスタム CSS を記述して、インターフェースをさらにカスタマイズしてください。危険な CSS@import、url() など)は自動的にフィルターされます。",
"clearCss": "クリア",
"exportDesc": "テーマを JSON ファイルとしてエクスポートして共有またはバックアップ。インポート時にすべての設定が自動適用されます。",
"importSuccessDesc": "テーマ設定がインポートされました。ページが自動的にリロードされます",
"resetSuccessDesc": "テーマがデフォルトにリセットされました",
"enableAnimations": "アニメーションを有効にする",
"enableAnimationsDesc": "無効にすると、すべてのトランジションアニメーションとエフェクトが無効化されパフォーマンスが向上します",
"loginWavesBackground": "ログインページのウェーブ背景",
"loginWavesBackgroundDesc": "無効にするとログインページが単色背景になります。低スペックのデバイスに適しています",
"inheritParentBg": "上位背景を継承",
"inheritParentBgDesc": "有効にすると上位レイヤーの背景設定を使用します",
"fontFamilyLabel": "フォントファミリー",
"fontFamilyPlaceholder": "フォントファミリーを選択",
"fontFamilySystem": "システムデフォルト (System)",
"fontFamilySans": "サンセリフ (Sans-serif)",
"fontFamilySerif": "セリフ (Serif)",
"fontFamilyMono": "等幅 (Monospace)",
"baseFontSize": "基準フォントサイズ (Base Size)",
"lineHeight": "行高 (Line Height)",
"lineHeightPlaceholder": "行高を選択",
"lineHeightCompact": "コンパクト (1.2)",
"lineHeightNormal": "標準 (1.5)",
"lineHeightLoose": "ルーズ (1.75)",
"borderRadiusLabel": "圆角の大きさ (Radius)",
"shadowLabel": "シャドウの強度 (Shadow)",
"shadowPlaceholder": "シャドウの強度を選択",
"shadowNone": "なし (None)",
"shadowSm": "軽微 (Small)",
"shadowMd": "中程度 (Medium)",
"shadowLg": "強い (Large)",
"shadowXl": "極強 (Extra Large)",
"blurLabel": "ボカシ効果 (Blur)",
"sidebarWidthLabel": "サイドバー幅 (Sidebar Width)",
"maxContentWidth": "コンテンツ最大幅 (Max Width)",
"spacingUnit": "基準間隔 (Spacing Unit)",
"animationSpeedLabel": "アニメーション速度 (Speed)",
"animationSpeedPlaceholder": "アニメーション速度を選択",
"animationFast": "高速 (100ms)",
"animationNormal": "標準 (300ms)",
"animationSlow": "低速 (500ms)",
"animationOff": "オフ (0ms)",
"bgPage": "ページ",
"bgSidebar": "サイドバー",
"typographyGroup": "タイポグラフィ (Typography)",
"visualGroup": "視覚効果 (Visual)",
"layoutGroup": "レイアウト (Layout)",
"animationGroup": "アニメーション (Animation)",
"backgroundGroup": "背景設定 (Backgrounds)"
},
"security": {
"currentToken": "現在のアクセストークン",
"yourToken": "あなたのアクセストークン",
"regenerate": "再生成",
"customToken": "カスタムアクセストークン",
"securityTip": "セキュリティのヒント",
"cannotCopy": "コピーできません",
"copySuccess": "コピーしました",
"copyFailed": "コピー失敗",
"updateSuccess": "更新しました",
"updateFailed": "更新失敗",
"generateSuccess": "生成しました",
"generateFailed": "生成失敗",
"newToken": "新しいアクセストークン",
"confirmRegenerate": "トークンの再生成を確認",
"confirmRegenerateDesc": "再生成後、古いトークンは無効になります。再ログインが必要です。",
"cancel": "キャンセル",
"confirm": "確認",
"cannotCopyDesc": "Token はセキュアな Cookie に保存されています。新しい Token を取得するには再生成してください。",
"copySuccessDesc": "Token をクリップボードにコピーしました",
"copyFailedDesc": "Token を手動でコピーしてください",
"inputError": "入力エラー",
"inputErrorDesc": "新しい Token を入力してください",
"formatError": "フォーマットエラー",
"formatErrorDesc": "Token が要件を満たしていません: {{failedRules}}",
"updateSuccessDesc": "Access Token を更新しました。ログインページにリダイレクトします。",
"updateFailedDesc": "Token を更新できません",
"updateFailedConn": "サーバーへの接続に失敗しました",
"generateSuccessDesc": "新しい Access Token を生成しました。すぐに保存してください。",
"generateFailedDesc": "新しい Token を生成できません",
"generateFailedConn": "サーバーへの接続に失敗しました",
"cannotView": "表示できません",
"cannotViewDesc": "Token はセキュアな Cookie に保存されています。新しい Token が必要な場合は\"再生成\"をクリックしてください。",
"hide": "非表示",
"show": "表示",
"copyTip": "クリップボードにコピー",
"regenerateShort": "生成",
"confirmRegenerateFullDesc": "新しい 64 桁のセキュアトークンを生成し、現在の Token を即座に無効にします。新しい Token で再ログインが必要です。この操作は元に戻せません。続けますか?",
"confirmGenerate": "生成を確認",
"tokenStorePlaceholder": "Token はセキュアな Cookie に保存されています",
"safekeepTip": "Access Token を安全に保管し、他人に漏洩しないでください。",
"newTokenLabel": "新しいアクセストークン",
"customTokenPlaceholder": "カスタム Token を入力",
"tokenReqTitle": "Token セキュリティ要件:",
"tokenValid": "Token のフォーマットは正しく使用できます",
"updateBtn": "カスタム Token を更新",
"updating": "更新中...",
"dialogTitle": "新しい Access Token",
"dialogDesc": "これが新しい Token です。すぐに保存してください。このウィンドウを閉じるとログインページにリダイレクトされます。",
"dialogTokenLabel": "新しい Token (64 桁セキュアトークン)",
"important": "重要なお知らせ",
"tip1": "この Token は一度しか表示されません。閉じた後は表示できません",
"tip2": "すぐにコピーして安全な場所に保存してください",
"tip3": "閉じると自動的にログインページにリダイレクトされます",
"tip4": "新しい Token で再ログインしてください",
"copied": "コピー済み",
"copyToken": "Token をコピー",
"savedClose": "保存しました。閉じる",
"securityTip1": "再生成するとシステムがランダムに生成した 64 桁のセキュアトークンが作成されます",
"securityTip2": "カスタム Token はすべてのセキュリティ要件を満たす必要があります",
"securityTip3": "Token を更新すると、古い Token は即座に無効になります",
"securityTip4": "安全な環境で Token を表示してコピーしてください",
"securityTip5": "Token の漏洩が疏われる場合は、すぐに再生成または更新してください",
"securityTip6": "最高のセキュリティのためにシステム生成の Token を推奨します"
},
"other": {
"performance": "パフォーマンス & ストレージ",
"localStorage": "ローカルストレージ使用量",
"logCache": "ログキャッシュサイズ",
"importExport": "設定のインポート / エクスポート",
"configWizard": "設定ウィザード",
"devTools": "開発者ツール",
"clearStorage": "ローカルストレージを削除",
"clearStorageDesc": "すべてのローカルストレージデータを削除します",
"clearStorageConfirm": "削除を確認",
"clearLogCache": "ログキャッシュを削除",
"clearLogCacheDesc": "すべてのキャッシュされたログデータを削除します",
"clearLogCacheConfirm": "削除を確認",
"importSettings": "設定をインポート",
"exportSettings": "設定をエクスポート",
"resetAllSettings": "すべての設定をリセット",
"resetAllSettingsDesc": "すべての設定をデフォルトに戻します",
"resetAllSettingsConfirm": "リセットを確認",
"clearStorageSuccess": "ローカルストレージを削除しました",
"clearStorageFailed": "削除失敗",
"clearLogSuccess": "ログキャッシュを削除しました",
"clearLogFailed": "削除失敗",
"importSuccess": "インポート成功",
"importFailed": "インポート失敗",
"exportSuccess": "エクスポート成功",
"exportFailed": "エクスポート失敗",
"resetSuccess": "リセット成功",
"resetFailed": "リセット失敗",
"storageItems": "{{count}} 件のアイテム",
"logCacheSizeDesc": "ログビューアがキャッシュする最大ログ数を制御します。大きい値はより多くのメモリを使用します。",
"logCacheSizeUnit": "件",
"dataSyncIntervalLabel": "ホームデータ更新間隔",
"dataSyncIntervalUnit": "秒",
"dataSyncIntervalDesc": "ホーム画面の統計データの自動更新間隔を制御します",
"wsReconnectLabel": "WebSocket 再接続間隔",
"wsReconnectUnit": "秒",
"wsReconnectDesc": "ログ WebSocket 切断後の再接続基本間隔",
"wsMaxReconnectLabel": "WebSocket 最大再接続回数",
"wsMaxReconnectUnit": "回",
"wsMaxReconnectDesc": "接続失敗後の最大再接続試行回数",
"clearLogCacheFn": "ログキャッシュをクリア",
"clearLocalCache": "ローカルキャッシュをクリア",
"confirmClearCache": "ローカルキャッシュのクリアを確認",
"confirmClearCacheDesc": "ローカルにキャッシュされたすべての設定とデータ(ログイン資格情報を除く)をクリアします。一部の設定を再構成する必要があるかもしれません。続けますか?",
"confirmClear": "クリアを確認",
"importExportDesc": "現在のインターフェース設定をエクスポートしてバックアップしたり、以前のファイルから復元したりできます。",
"exporting": "エクスポート中...",
"importing": "インポート中...",
"resetAllSettingsBtn": "すべての設定をデフォルトにリセット",
"confirmResetAll": "すべての設定のリセットを確認",
"confirmResetAllDesc": "テーマ、色、アニメーションなどのインターフェース設定をデフォルトに戻します。ログイン状態には影響しません。続けますか?",
"configWizardDesc": "初回設定ウィザードを再実行してシステムの基本設定を再構成できます。",
"rerunSetup": "初回設定を再実行",
"confirmRerunSetup": "再構成を確認",
"confirmRerunSetupDesc": "初回設定ウィザードに戻ります。システムの基本設定を再設定できます。続けますか?",
"devToolsDesc": "以下の機能は開発・デバッグ目的のみです。クラッシュや異常動作を引き起こす可能性があります。",
"triggerError": "テストエラーを発生させる",
"confirmTriggerError": "エラーの発生を確認",
"confirmTriggerErrorDesc": "React エラーを手動で発生させ、エラーボーダーコンポーネントをテストします。ページを更新するかホームに戻ることで復元できます。",
"confirmTrigger": "発生を確認",
"logCleared": "ログをクリアしました",
"logClearedDesc": "ログキャッシュをクリアしました",
"cacheCleared": "キャッシュをクリアしました",
"cacheClearedDesc": "{{count}} 件のキャッシュデータをクリアしました",
"exportSuccessDesc": "設定を JSON ファイルとしてエクスポートしました",
"exportFailedDesc": "設定のエクスポートに失敗しました",
"importSuccessDesc": "{{imported}} 件の設定をインポートしました",
"importSkippedSuffix": "、{{skipped}} 件をスキップ",
"importRefreshHint": "お知らせ",
"importRefreshHintDesc": "一部の設定はページを更新するまで完全に有効になりません",
"importNoDataDesc": "インポートする有効な設定がありません",
"importInvalidDesc": "ファイルフォーマットが無効です",
"resetDone": "リセット完了",
"resetDoneDesc": "すべての設定がデフォルトに戻りました。変更を適用するにはページを更新してください。"
},
"about": {
"openSource": "オープンソース",
"aboutApp": "MaiBot Dashboard について",
"version": "バージョン:",
"author": "作者",
"techStack": "技術スタック",
"frontendFramework": "フロントエンドフレームワーク",
"uiComponents": "UI コンポーネント",
"backend": "バックエンド",
"buildTool": "ビルドツール",
"openSourceThanks": "使用オープンソースライブラリ",
"openSourceLicense": "オープンソースライセンス",
"openSourceDesc": "このプロジェクトは GitHub で公開されています。Star ⭐ でサポートしてください!",
"visitGitHub": "GitHub へ進む",
"appDesc": "MaiBot のモダンな Web 管理インターフェース",
"maimaiCore": "MaiBot コア",
"uiFrameworkGroup": "UI フレームワーク & コンポーネント",
"routingStateGroup": "ルーティング & 状態管理",
"formGroup": "フォーム処理",
"utilsGroup": "ユーティリティライブラリ",
"animationGroup": "アニメーション",
"backendGroup": "バックエンドフレームワーク",
"devToolsGroup": "開発ツール",
"openSourceThanksDesc": "このプロジェクトは以下の優れたオープンソースライブラリを使用しています。貢献に感謝します:",
"licenseDesc": "このプロジェクトは GNU General Public License v3.0 でライセンスされています。同じオープンソースライセンスを保持する限り、自由に使用・修改・配布できます。",
"licenseDeps": "このプロジェクトのすべての依存オープンソースライブラリはそれぞれのライセンスMIT、Apache-2.0、BSD など)に従っています。すべてのオープンソース貢献者に感謝します。",
"lib": {
"react": "UIを構築するためのライブラリ",
"shadcn": "エレガントな React コンポーネントライブラリ",
"radix": "スタイルなしのアクセシブルなコンポーネント",
"tailwind": "ユーティリティファーストの CSS フレームワーク",
"lucide": "美しいアイコンライブラリ",
"tanstackRouter": "型安全なルーティングライブラリ",
"zustand": "軽量な状態管理ライブラリ",
"reactHookForm": "高パフォーマンスなフォームライブラリ",
"zod": "TypeScript ファーストのスキーマ検証",
"clsx": "条件付き className ビルダー",
"tailwindMerge": "Tailwind クラス名マージツール",
"cva": "コンポーネントバリアント管理",
"dateFns": "モダンな日付ユーティリティライブラリ",
"framerMotion": "React アニメーションライブラリ",
"vaul": "ドロワーコンポーネントアニメーション",
"fastapi": "モダンな Python Web フレームワーク",
"uvicorn": "ASGI サーバー",
"pydantic": "データ検証ライブラリ",
"pythonMultipart": "ファイルアップロードサポート",
"typescript": "JavaScript のスーパーセット",
"vite": "次世代フロントエンドビルドツール",
"eslint": "JavaScript コードリンター",
"postcss": "CSS 変換ツール"
}
}
},
"auth": {
"title": "ログイン",
"description": "続行するにはアクセストークンを入力してください",
"tokenLabel": "アクセストークン",
"tokenPlaceholder": "アクセストークンを入力",
"loginButton": "ログイン",
"loggingIn": "ログイン中...",
"loginFailed": "ログイン失敗",
"loginSuccess": "ログイン成功",
"checkingAuth": "ログイン状態を確認中...",
"welcome": "MaiBot へようこそ",
"accessDesc": "システムにアクセスするためにアクセストークンを入力してください",
"tokenRequired": "アクセストークンを入力してください",
"verifyingLabel": "验証中...",
"verifyEnter": "验証して入る",
"helpLink": "Token がありません。どこで取得できますか?",
"helpTitle": "Access Token の取得方法",
"helpDesc": "Access Token は MaiBot WebUI にアクセスする唯一の証明情報です。次の方法で取得してください",
"method1Title": "方法1:起動ログを確認",
"method1Desc": "MaiBot 起動時にコンソールに WebUI Access Token が表示されます。",
"method1Example1": "🔑 WebUI Access Token: abc123...",
"method1Example2": "💡 この Token で WebUI にログインしてください",
"method2Title": "方法2:設定ファイルを確認",
"method2Desc": "Token はプロジェクトルートの設定ファイルに保存されています:",
"method2FileHint": "このファイルを開いて access_token フィールドの値をコピーしてください",
"securityTipTitle": "セキュリティノート",
"securityTip1": "Token を安全に保管し、他人に漏洱しないでください",
"securityTip2": "Token をリセットするには、ログイン後にシステム設定へ進んでください",
"slowLink": "インターフェースが重いです。どうすればいいですか?",
"disableAnimTitle": "バックグラウンドアニメーションを無効にする",
"disableAnimDesc": "バックグラウンドアニメーションは低スペックのデバイスで遅延を引き起こす可能性があります。無効にすると活百度が大幅に向上します。",
"disableAnimDetail": "無効にすると背景が単色になりますが、機能には影響しません。システム設定からいつでも再有効化できます。",
"disableAnimBtn": "アニメーションを無効にする",
"verifyFailed": "Token の検証に失敗しました。确認して再試行してください。",
"connFailed": "サーバーへの接続に失敗しました。ネットワーク接続を確認してください。",
"switchToLight": "ライトモードに切り替える",
"switchToDark": "ダークモードに切り替える"
},
"common": {
"loading": "読み込み中...",
"error": "エラー",
"retry": "再試行",
"save": "保存",
"cancel": "キャンセル",
"confirm": "確認",
"delete": "削除",
"edit": "編集",
"close": "閉じる",
"search": "検索",
"noData": "データなし",
"success": "成功",
"failed": "失敗"
},
"restart": {
"preparing": "再起動を準備中",
"preparingDesc": "再起動リクエストを送信中...",
"preparingTip": "🔄 MaiBot の再起動を準備中...",
"restarting": "MaiBot を再起動中",
"restartingDesc": "しばらお待ちください、MaiBot が再起動中です...",
"restartingTip": "🔄 設定を保存しました、メインプロセスを再起動中...",
"checking": "サービス状態を確認中",
"checkingDesc": "サービスの回復を待機中... ({{current}}/{{max}})",
"checkingTip": "⏳ サービスの回復を待機中、ページを閉じないでください...",
"success": "再起動成功",
"successDesc": "ログインページにリダイレクト中...",
"successTip": "✅ 設定が適用されました、サービスは正常に動作しています",
"failed": "再起動タイムアウト",
"failedDesc": "サービスが予定時間内に回復しませんでした",
"failedTip": "⚠️ 長時間応答がない場合は、手動で再起動してください",
"refreshPage": "ページを更新",
"retryCheck": "再試行",
"elapsed": "経過時間:"
},
"errorBoundary": {
"title": "問題が発生しました",
"description": "アプリケーションが予期しないエラーを検出しました。ページを更新するかホームに戻ることができます。",
"refreshPage": "ページを更新",
"goHome": "ホームに戻る",
"footer": "問題が解決しない場合は、エラー情報をコピーして開発者に報告してください",
"copiedToClipboard": "クリップボードにコピーしました",
"copyError": "エラー情報をコピー"
},
"search": {
"placeholder": "ページを検索...",
"title": "検索",
"noResults": "一致するページが見つかりません",
"startSearch": "キーワードを入力して検索を開始",
"navigate": "ナビゲート",
"select": "選択",
"close": "閉じる",
"categories": {
"overview": "概要",
"config": "設定",
"resources": "リソース",
"monitor": "監視",
"extensions": "拡張機能",
"system": "システム"
},
"items": {
"home": "ホーム",
"homeDesc": "ダッシュボード概要を表示",
"botConfig": "ボットメイン設定",
"botConfigDesc": "ボットのコア設定を構成",
"modelProvider": "モデルプロバイダー設定",
"modelProviderDesc": "モデルプロバイダーを設定",
"model": "モデル設定",
"modelDesc": "モデルパラメーターを設定",
"emoji": "絵文字管理",
"emojiDesc": "ボットの絵文字を管理",
"expression": "表現管理",
"expressionDesc": "ボットの表現を管理",
"person": "人物情報",
"personDesc": "人物情報を管理",
"jargon": "スラング管理",
"jargonDesc": "ボットが学習したスラングを管理",
"statistics": "統計情報",
"statisticsDesc": "使用統計を表示",
"plugins": "プラグインマーケット",
"pluginsDesc": "プラグインを閉覧してインストール",
"logs": "ログビューア",
"logsDesc": "システムログを表示",
"settings": "設定",
"settingsDesc": "システム設定を構成"
}
},
"httpWarning": {
"title": "セキュリティ警告:",
"message": "HTTP で MaiBot WebUI にアクセスしています",
"description": "これが公開サーバーの場合、データToken、チャット履歴などが転送中に傍受される可能性があります。HTTPS を使用するか、ローカルネットワークからのみアクセスすることを強くお勧めします。",
"dismiss": "警告を閉じる"
}
}