fix(webui): stabilize streaming output and settings i18n

This commit is contained in:
Xubin Ren
2026-06-01 00:00:37 +08:00
parent 31722120b7
commit 34386fe676
13 changed files with 1164 additions and 1048 deletions
+107 -107
View File
@@ -65,14 +65,14 @@
"nav": {
"general": "一般",
"byok": "BYOK",
"overview": "Overview",
"appearance": "Appearance",
"models": "Models",
"providers": "Providers",
"image": "Image",
"browser": "Web",
"overview": "概要",
"appearance": "外観",
"models": "モデル",
"providers": "プロバイダー",
"image": "画像",
"browser": "ウェブ",
"runtime": "システム",
"advanced": "Security",
"advanced": "セキュリティ",
"cliApps": "CLI アプリ",
"mcp": "MCP",
"apps": "アプリ"
@@ -81,21 +81,21 @@
"interface": "インターフェース",
"ai": "AI",
"system": "システム",
"status": "Status",
"localPreferences": "Local preferences",
"presets": "Presets",
"status": "状態",
"localPreferences": "ローカル設定",
"presets": "プリセット",
"imageGeneration": "画像生成",
"imageDefaults": "既定値",
"webSearch": "Web search",
"webBehavior": "Behavior",
"identity": "Identity",
"webuiSafety": "Web safety",
"webSearch": "ウェブ検索",
"webBehavior": "動作",
"identity": "ID",
"webuiSafety": "WebUI の安全性",
"capabilities": "機能",
"cliApps": "CLI アプリ",
"mcp": "MCP サービス",
"apps": "アプリ",
"nativeHost": "App",
"hostSafety": "App safety"
"nativeHost": "ネイティブホスト",
"hostSafety": "アプリの安全性"
},
"rows": {
"theme": "テーマ",
@@ -104,41 +104,41 @@
"model": "モデル",
"restart": "nanobot を再起動",
"configPath": "設定パス",
"activePreset": "Active preset",
"gateway": "Gateway",
"restartState": "Restart state",
"activePreset": "アクティブなプリセット",
"gateway": "ゲートウェイ",
"restartState": "再起動状態",
"pendingChanges": "保留中の変更",
"selectedPreset": "Selected preset",
"presetModel": "Preset model",
"density": "Density",
"activityMode": "Activity detail",
"codeWrap": "Code wrapping",
"maxResults": "Max results",
"timeout": "Timeout",
"jinaReader": "Jina reader",
"selectedPreset": "選択中のプリセット",
"presetModel": "プリセットモデル",
"density": "表示密度",
"activityMode": "アクティビティ詳細",
"codeWrap": "コードの折り返し",
"maxResults": "最大結果数",
"timeout": "タイムアウト",
"jinaReader": "Jina リーダー",
"imageGeneration": "画像生成",
"imageProvider": "画像プロバイダー",
"imageProviderStatus": "プロバイダー状態",
"imageProviderBase": "プロバイダーのベース URL",
"imageProviderStatus": "プロバイダー状態",
"imageProviderBase": "プロバイダー URL",
"imageModel": "画像モデル",
"defaultAspectRatio": "既定の比率",
"defaultImageSize": "既定のサイズ",
"maxImagesPerTurn": "1 ターンあたりの最大画像数",
"maxImagesPerTurn": "1 ターンの最大画像数",
"imageSaveDir": "保存先ディレクトリ",
"botName": "Bot name",
"botIcon": "Bot icon",
"timezone": "Timezone",
"workspacePath": "デフォルトワークスペース",
"localServiceAccess": "Local services",
"webuiDefaultAccess": "Default access",
"botName": "Bot ",
"botIcon": "Bot アイコン",
"timezone": "タイムゾーン",
"workspacePath": "既定のワークスペース",
"localServiceAccess": "ローカルサービス",
"webuiDefaultAccess": "既定の権限",
"currentModel": "現在の設定",
"brandLogos": "ブランドロゴ",
"cliAppsCatalog": "CLI アプリカタログ",
"cliAppsFilter": "CLI アプリフィルター",
"cliAppsCatalog": "カタログ",
"cliAppsFilter": "フィルター",
"engine": "エンジン",
"logs": "ログ",
"diagnostics": "診断",
"contextWindow": "Context window"
"contextWindow": "コンテキストウィンドウ"
},
"help": {
"theme": "ライト表示とダーク表示を切り替えます。",
@@ -146,57 +146,57 @@
"provider": "新しいモデルリクエストに使うプロバイダーを選択します。",
"model": "nanobot が既定で使用するモデル名を設定します。",
"configPath": "現在ゲートウェイが使用している設定ファイルです。",
"selectedPreset": "Named presets are read-only here; edit them in config.json.",
"presetModel": "Switch to Default to edit model and provider from the WebUI.",
"density": "Stored only in this browser.",
"activityMode": "Choose how much agent activity chrome to show by default.",
"codeWrap": "Keep long code lines readable on smaller screens.",
"maxResults": "Results returned by each web_search call.",
"timeout": "Seconds before a search provider request times out.",
"jinaReader": "Use Jina Reader for web_fetch when available.",
"imageGeneration": "設定済みの画像プロバイダーが利用できる場合、チャットで generate_image を有効にします。",
"selectedPreset": "名前付きプリセットはここでは読み取り専用です。編集するには config.json を変更してください。",
"presetModel": "Default に切り替えると、WebUI からモデルとプロバイダーを編集できます。",
"density": "このブラウザーにのみ保存されます。",
"activityMode": "既定で表示する agent アクティビティの詳細量を選択します。",
"codeWrap": "小さな画面でも長いコード行を読みやすくします。",
"maxResults": "各 web_search 呼び出しで返す結果数です。",
"timeout": "検索プロバイダーのリクエストがタイムアウトするまでの秒数です。",
"jinaReader": "利用可能な場合、web_fetch に Jina Reader を使います。",
"imageGeneration": "画像プロバイダーが設定済みのとき、チャットで generate_image を有効にします。",
"imageProvider": "generate_image で使用する登録済みプロバイダーを選択します。",
"imageProviderStatus": "画像生成は「プロバイダー」の認証情報を再利用します。",
"imageModel": "選択した画像プロバイダーへ送信するモデル名です。",
"defaultAspectRatio": "プロンプトでアスペクト比が指定されていない場合に使用します。",
"defaultAspectRatio": "プロンプトで比が指定されていない場合に使用します。",
"defaultImageSize": "対応しているプロバイダーへ送信するサイズ指定です。",
"maxImagesPerTurn": "1 回の generate_image リクエストで生成できる画像数の上限です。",
"botName": "nanobot が表示名を使う場所に表示されます。",
"botIcon": "Bot 名の横に表示する短い emoji またはテキストです。",
"timezone": "スケジュールと時刻を考慮する返信に使用します。",
"localServiceAccess": "Allow Full Access shell commands to reach localhost services.",
"webuiDefaultAccess": "Used by web chats without a project-specific permission.",
"securityManagedControls": "Web fetches always protect local, private, and metadata services. Core channel safety stays in config.json.",
"currentModel": "今後の返信で nanobot が使用するモデル設定を選択します。",
"localServiceAccess": "Full Access shell コマンドが localhost サービスにアクセスできるようにします。",
"webuiDefaultAccess": "プロジェクト固有の権限がない Web チャットで使用します。",
"securityManagedControls": "Web 取得は常にローカル、プライベート、メタデータサービスを保護します。コアチャネルの安全性は config.json で管理されます。",
"currentModel": "新しい返信に使用します。",
"selectedModelProvider": "選択したモデルによって設定されます。",
"selectedModelValue": "選択したモデルによって設定されます。",
"brandLogos": "ロゴはブランドのドメインから読み込まれ、ローカルアイコンにフォールバックします。",
"cliAppsCatalog": "nanobot がローカルで実行できるアプリ CLI を探します。",
"brandLogos": "設定で第三者プロバイダーと CLI のロゴを表示します。",
"cliAppsCatalog": "nanobot がローカルで実行できるアプリ CLI アダプターだけをインストールします。ネイティブアプリは変更しません。",
"cliAppsFilter": "アプリ、カテゴリ、機能で検索します。",
"logs": "Appエンジンのログフォルダを開きます。",
"logs": "ネイティブエンジンのログフォルダを開きます。",
"diagnostics": "サポート用の小さなランタイムレポートを書き出します。",
"localServiceAccessNative": "Allow Full Access shell commands to reach services on this Mac.",
"webuiDefaultAccessNative": "Used by native chats without a project-specific permission.",
"contextWindow": "Choose the default context budget for this model configuration."
"localServiceAccessNative": "Full Access shell コマンドがこの Mac 上のサービスにアクセスできるようにします。",
"webuiDefaultAccessNative": "プロジェクト固有の権限がないネイティブチャットで使用します。",
"contextWindow": "このモデル設定で使う既定のコンテキスト予算を選択します。"
},
"values": {
"light": "ライト",
"dark": "ダーク",
"notAvailable": "利用不可",
"enabled": "Enabled",
"disabled": "Disabled",
"enabled": "有効",
"disabled": "無効",
"restartPending": "再起動待ち",
"ready": "準備完了",
"comfortable": "Comfortable",
"compact": "Compact",
"auto": "Auto",
"expanded": "Expanded",
"on": "On",
"off": "Off",
"defaultPermission": "Default Permission",
"fullAccess": "Full Access",
"configured": "Configured",
"notConfigured": "Not configured",
"comfortable": "標準",
"compact": "コンパクト",
"auto": "自動",
"expanded": "展開",
"on": "オン",
"off": "オフ",
"defaultPermission": "既定の権限",
"fullAccess": "完全アクセス",
"configured": "設定済み",
"notConfigured": "未設定",
"pending": "保留中",
"restartingEngine": "再起動中"
},
@@ -211,11 +211,11 @@
"imageProviderRestart": "画像プロバイダーの変更を保存しました。準備ができたら再起動してください。",
"hostRestartAfterSaving": "保存すると nanobot がエンジンを再起動します。",
"hostRestartPending": "保存しました。準備ができたらエンジンを再起動します。",
"hostApiUnavailable": "Host actions are only available inside the native app.",
"logsOpened": "Opened logs folder.",
"logsOpenFailed": "Could not open logs folder.",
"diagnosticsExported": "Diagnostics exported to {{path}}.",
"diagnosticsExportFailed": "Could not export diagnostics."
"hostApiUnavailable": "ホスト操作はネイティブアプリ内でのみ利用できます。",
"logsOpened": "ログフォルダーを開きました。",
"logsOpenFailed": "ログフォルダーを開けませんでした。",
"diagnosticsExported": "診断を {{path}} に書き出しました。",
"diagnosticsExportFailed": "診断を書き出せませんでした。"
},
"actions": {
"save": "保存",
@@ -224,8 +224,8 @@
"cancel": "キャンセル",
"open": "開く",
"export": "書き出す",
"opening": "Opening...",
"exporting": "Exporting..."
"opening": "開いています...",
"exporting": "書き出しています..."
},
"byok": {
"description": "自分の provider キーを使います。Nanobot は現在の config から値を読み込み、設定済みの provider だけを一般設定で選択できます。",
@@ -250,7 +250,7 @@
"tabs": {
"ariaLabel": "BYOK 認証情報タイプ",
"llm": "LLM",
"webSearch": "Web Search"
"webSearch": "ウェブ検索"
},
"webSearch": {
"provider": "検索 provider",
@@ -270,17 +270,17 @@
}
},
"overview": {
"model": "Current model",
"providers": "Providers",
"configuredCount": "{{count}} configured",
"totalProviders": "{{count}} available",
"webSearch": "Web search",
"model": "現在のモデル",
"providers": "プロバイダー",
"configuredCount": "{{count}} 個設定済み",
"totalProviders": "{{count}} 個利用可能",
"webSearch": "Web 検索",
"imageGeneration": "画像生成",
"workspace": "Workspace"
"workspace": "ワークスペース"
},
"providers": {
"searchPlaceholder": "Search providers",
"noMatches": "No providers match this search.",
"searchPlaceholder": "プロバイダーを検索",
"noMatches": "一致するプロバイダーはありません。",
"saveProvider": "プロバイダーを保存"
},
"image": {
@@ -297,12 +297,12 @@
"newConfigurationHelp": "プロバイダーとモデルをワンクリックの選択肢として保存します。",
"configurationName": "設定名",
"configurationNameHelp": "保存済みのモデル設定の名前を変更します。",
"configurationNamePlaceholder": "高速ライティング",
"searchModels": "検索またはモデル ID を入力",
"configurationNamePlaceholder": "高速執筆",
"searchModels": "モデル ID を検索または入力",
"useCustomModel": "使用",
"loadingModels": "モデルを読み込み中...",
"searchCatalog": "プロバイダーのカタログを検索してモデルを選択します。",
"modelsAvailable": "利用可能",
"loadingModels": "モデルを読み込んでいます...",
"searchCatalog": "プロバイダーのカタログからモデルを選択します。",
"modelsAvailable": "利用可能",
"noModelResults": "一致するモデルはありません。",
"loadFailed": "モデル一覧を利用できません。",
"unsupportedModelList": "モデル ID を手動で入力してください。",
@@ -402,31 +402,31 @@
"thirdPartyBrands": "製品名、ロゴ、ブランドはそれぞれの所有者に帰属します。使用は識別のみを目的とし、承認を意味するものではありません。"
},
"apps": {
"description": "チャットから nanobot が使えるアプリ CLI と MCP サービスを追加します。",
"description": "nanobot がチャットで使用できる App CLI と MCP サービスを追加します。",
"cliLabel": "CLI",
"mcpLabel": "MCP",
"filterAll": "すべて",
"filterCli": "CLI アプリ",
"filterMcp": "MCP サービス",
"enabledSummary": "{{count}} 件有効",
"caption": "{{cli}} CLI · {{mcp}} MCP",
"caption": "CLI {{cli}} 件 · MCP {{mcp}} ",
"searchPlaceholder": "アプリを検索",
"featured": "おすすめ",
"featured": "注目",
"loading": "アプリを読み込み中...",
"empty": "このフィルターに一致するアプリはありません。"
"empty": "一致するアプリはありません。"
},
"oauth": {
"authentication": "OAuth authentication",
"signIn": "Sign in",
"signingIn": "Signing in...",
"signInAgain": "Sign in again",
"signOut": "Sign out",
"signedInAs": "Signed in as {{account}}",
"signInHelp": "Sign in from this device; no API key is stored in config.",
"signInRequired": "Sign in required",
"signInBeforeSaving": "Sign in before saving this OAuth provider as the active model provider.",
"signedIn": "Signed in",
"notSignedIn": "Not signed in"
"authentication": "OAuth 認証",
"signIn": "サインイン",
"signingIn": "サインイン中...",
"signInAgain": "再度サインイン",
"signOut": "サインアウト",
"signedInAs": "{{account}} としてサインイン済み",
"signInHelp": "このデバイスからサインインします。API key は config に保存されません。",
"signInRequired": "サインインが必要です",
"signInBeforeSaving": "この OAuth プロバイダーをアクティブなモデルプロバイダーとして保存する前にサインインしてください。",
"signedIn": "サインイン済み",
"notSignedIn": "未サインイン"
}
},
"chat": {