mirror of
https://github.com/langbot-app/LangBot.git
synced 2026-09-27 20:06:39 +08:00
fix(web): align i18n locale keys and ordering with en-US
The bot session monitor referenced several translation keys that did not
exist in any locale file. Because i18next `fallbackLng` is `zh-Hans`, the
missing keys fell back to the hardcoded English `defaultValue`, leaking
untranslated strings (e.g. "0 sessions", "User ID or name", "Search") into
every non-English UI.
- Add the missing keys to all 8 locales with proper translations:
`common.search`, `bots.sessionMonitor.{totalSessions,userSearch,startDate,endDate}`
and `monitoring.toolCalls.{showDetails,hideDetails}`.
- Remove the hardcoded `defaultValue` fallbacks in `BotSessionMonitor.tsx`
so translations are always driven by the locale files.
- Reorder nested keys in every locale file to match the `en-US.ts` reference
order, keeping values untouched. This removes all structural drift between
locale files (previously `guidedTour.*`, `plugins.*`, etc. were ordered
differently).
Verified: `scripts/check-i18n.mjs` reports matching keys for all locales,
every key/value pair is preserved, Prettier passes, and `tsc --noEmit` is clean.
This commit is contained in:
@@ -682,7 +682,6 @@ const BotSessionMonitor = forwardRef<
|
||||
</button>
|
||||
<span className="text-[11px] text-muted-foreground tabular-nums">
|
||||
{t('bots.sessionMonitor.totalSessions', {
|
||||
defaultValue: '{{count}} sessions',
|
||||
count: sessionTotal,
|
||||
})}
|
||||
</span>
|
||||
@@ -695,12 +694,8 @@ const BotSessionMonitor = forwardRef<
|
||||
onKeyDown={(event) =>
|
||||
event.key === 'Enter' && applyUserSearch()
|
||||
}
|
||||
aria-label={t('bots.sessionMonitor.userSearch', {
|
||||
defaultValue: 'User ID or name',
|
||||
})}
|
||||
placeholder={t('bots.sessionMonitor.userSearch', {
|
||||
defaultValue: 'User ID or name',
|
||||
})}
|
||||
aria-label={t('bots.sessionMonitor.userSearch')}
|
||||
placeholder={t('bots.sessionMonitor.userSearch')}
|
||||
className="h-7 min-w-0 flex-1 rounded border bg-background px-2 text-xs"
|
||||
/>
|
||||
<button
|
||||
@@ -708,7 +703,7 @@ const BotSessionMonitor = forwardRef<
|
||||
onClick={applyUserSearch}
|
||||
className="h-7 rounded border px-2 text-[11px] hover:bg-accent"
|
||||
>
|
||||
{t('common.search', { defaultValue: 'Search' })}
|
||||
{t('common.search')}
|
||||
</button>
|
||||
</div>
|
||||
<div className="grid grid-cols-2 gap-1">
|
||||
@@ -720,9 +715,7 @@ const BotSessionMonitor = forwardRef<
|
||||
setSessionPage(0);
|
||||
setStartDate(event.target.value);
|
||||
}}
|
||||
aria-label={t('bots.sessionMonitor.startDate', {
|
||||
defaultValue: 'Start date',
|
||||
})}
|
||||
aria-label={t('bots.sessionMonitor.startDate')}
|
||||
className="h-7 min-w-0 rounded border bg-background px-1 text-[10px]"
|
||||
/>
|
||||
<input
|
||||
@@ -733,9 +726,7 @@ const BotSessionMonitor = forwardRef<
|
||||
setSessionPage(0);
|
||||
setEndDate(event.target.value);
|
||||
}}
|
||||
aria-label={t('bots.sessionMonitor.endDate', {
|
||||
defaultValue: 'End date',
|
||||
})}
|
||||
aria-label={t('bots.sessionMonitor.endDate')}
|
||||
className="h-7 min-w-0 rounded border bg-background px-1 text-[10px]"
|
||||
/>
|
||||
</div>
|
||||
@@ -821,7 +812,7 @@ const BotSessionMonitor = forwardRef<
|
||||
<div className="h-8 border-t px-1.5 flex items-center justify-between shrink-0 text-[11px]">
|
||||
<button
|
||||
type="button"
|
||||
aria-label={t('common.previous', { defaultValue: 'Previous' })}
|
||||
aria-label={t('common.previous')}
|
||||
disabled={sessionPage === 0 || loadingSessions}
|
||||
onClick={() => setSessionPage((page) => Math.max(0, page - 1))}
|
||||
className="p-1 rounded hover:bg-accent disabled:opacity-40"
|
||||
@@ -833,7 +824,7 @@ const BotSessionMonitor = forwardRef<
|
||||
</span>
|
||||
<button
|
||||
type="button"
|
||||
aria-label={t('common.next', { defaultValue: 'Next' })}
|
||||
aria-label={t('common.next')}
|
||||
disabled={sessionPage + 1 >= sessionPageCount || loadingSessions}
|
||||
onClick={() => setSessionPage((page) => page + 1)}
|
||||
className="p-1 rounded hover:bg-accent disabled:opacity-40"
|
||||
@@ -1049,9 +1040,6 @@ const BotSessionMonitor = forwardRef<
|
||||
<div className="mb-1 text-[11px] font-medium text-muted-foreground">
|
||||
{t(
|
||||
'monitoring.toolCalls.arguments',
|
||||
{
|
||||
defaultValue: '参数',
|
||||
},
|
||||
)}
|
||||
</div>
|
||||
<pre className="whitespace-pre-wrap break-words rounded bg-background/80 p-2 font-mono text-[11px] leading-4 text-muted-foreground">
|
||||
@@ -1062,9 +1050,7 @@ const BotSessionMonitor = forwardRef<
|
||||
{call.result && (
|
||||
<div>
|
||||
<div className="mb-1 text-[11px] font-medium text-muted-foreground">
|
||||
{t('monitoring.toolCalls.result', {
|
||||
defaultValue: '结果',
|
||||
})}
|
||||
{t('monitoring.toolCalls.result')}
|
||||
</div>
|
||||
<pre className="whitespace-pre-wrap break-words rounded bg-background/80 p-2 font-mono text-[11px] leading-4 text-muted-foreground">
|
||||
{truncateToolDetail(call.result)}
|
||||
@@ -1083,11 +1069,7 @@ const BotSessionMonitor = forwardRef<
|
||||
)}
|
||||
|
||||
<div className="mt-1.5 flex items-center gap-1.5 text-[11px] text-muted-foreground">
|
||||
<span>
|
||||
{t('monitoring.toolCalls.title', {
|
||||
defaultValue: '工具调用',
|
||||
})}
|
||||
</span>
|
||||
<span>{t('monitoring.toolCalls.title')}</span>
|
||||
<span className="tabular-nums">
|
||||
{formatTime(call.timestamp)}
|
||||
</span>
|
||||
@@ -1096,18 +1078,8 @@ const BotSessionMonitor = forwardRef<
|
||||
<span>·</span>
|
||||
<span>
|
||||
{expandedToolCall
|
||||
? t(
|
||||
'monitoring.toolCalls.hideDetails',
|
||||
{
|
||||
defaultValue: '隐藏详情',
|
||||
},
|
||||
)
|
||||
: t(
|
||||
'monitoring.toolCalls.showDetails',
|
||||
{
|
||||
defaultValue: '查看详情',
|
||||
},
|
||||
)}
|
||||
? t('monitoring.toolCalls.hideDetails')
|
||||
: t('monitoring.toolCalls.showDetails')}
|
||||
</span>
|
||||
</>
|
||||
)}
|
||||
@@ -1151,12 +1123,8 @@ const BotSessionMonitor = forwardRef<
|
||||
>
|
||||
<span>
|
||||
{isUser
|
||||
? t('bots.sessionMonitor.userMessage', {
|
||||
defaultValue: 'User',
|
||||
})
|
||||
: t('bots.sessionMonitor.botMessage', {
|
||||
defaultValue: 'Assistant',
|
||||
})}
|
||||
? t('bots.sessionMonitor.userMessage')
|
||||
: t('bots.sessionMonitor.botMessage')}
|
||||
</span>
|
||||
<span className="tabular-nums">
|
||||
{formatTime(msg.timestamp)}
|
||||
@@ -1164,9 +1132,7 @@ const BotSessionMonitor = forwardRef<
|
||||
{isDiscarded ? (
|
||||
<span className="inline-flex items-center gap-0.5 text-destructive">
|
||||
<Ban className="w-3 h-3" />
|
||||
{t('bots.sessionMonitor.discarded', {
|
||||
defaultValue: 'Discarded',
|
||||
})}
|
||||
{t('bots.sessionMonitor.discarded')}
|
||||
</span>
|
||||
) : msg.pipeline_name ? (
|
||||
<span className="inline-flex items-center gap-0.5 opacity-70">
|
||||
@@ -1225,7 +1191,7 @@ const BotSessionMonitor = forwardRef<
|
||||
className="inline-flex items-center gap-1 rounded px-2 py-1 hover:bg-accent disabled:opacity-40"
|
||||
>
|
||||
<ChevronLeft className="size-3.5" />
|
||||
{t('common.previous', { defaultValue: 'Previous' })}
|
||||
{t('common.previous')}
|
||||
</button>
|
||||
<span className="tabular-nums text-muted-foreground">
|
||||
{messagePage + 1} / {messagePageCount} · {messageTotal}
|
||||
@@ -1238,7 +1204,7 @@ const BotSessionMonitor = forwardRef<
|
||||
onClick={() => setMessagePage((page) => page + 1)}
|
||||
className="inline-flex items-center gap-1 rounded px-2 py-1 hover:bg-accent disabled:opacity-40"
|
||||
>
|
||||
{t('common.next', { defaultValue: 'Next' })}
|
||||
{t('common.next')}
|
||||
<ChevronRight className="size-3.5" />
|
||||
</button>
|
||||
</div>
|
||||
|
||||
@@ -306,6 +306,7 @@ const enUS = {
|
||||
common: {
|
||||
customValue: 'Custom',
|
||||
loadFailed: 'Failed to load. Please try again.',
|
||||
search: 'Search',
|
||||
login: 'Login',
|
||||
logout: 'Logout',
|
||||
accountOptions: 'Settings',
|
||||
@@ -1076,6 +1077,10 @@ const enUS = {
|
||||
discarded: 'Discarded',
|
||||
userMessage: 'User',
|
||||
botMessage: 'Assistant',
|
||||
totalSessions: '{{count}} sessions',
|
||||
userSearch: 'User ID or name',
|
||||
startDate: 'Start date',
|
||||
endDate: 'End date',
|
||||
},
|
||||
admins: {
|
||||
title: 'Admins',
|
||||
@@ -2546,6 +2551,8 @@ const enUS = {
|
||||
arguments: 'Arguments',
|
||||
result: 'Result',
|
||||
noToolCalls: 'No tool calls recorded',
|
||||
showDetails: 'Show details',
|
||||
hideDetails: 'Hide details',
|
||||
},
|
||||
tokens: {
|
||||
totalTokens: 'Total Tokens',
|
||||
|
||||
+710
-728
File diff suppressed because it is too large
Load Diff
+318
-327
@@ -1,5 +1,4 @@
|
||||
import pipelineMigration from './pipeline-migration/ja-JP';
|
||||
|
||||
const jaJP = {
|
||||
assistant: {
|
||||
modelHint: '次のメッセージからモデルを切り替え',
|
||||
@@ -99,9 +98,6 @@ const jaJP = {
|
||||
guidedTour: {
|
||||
eventDebugDescription:
|
||||
'対応するイベントを選び、テストデータを入力して出力とツールの結果を確認します。プラットフォーム操作は模擬実行され、モデルや他のツールは設定に従って実行されます。',
|
||||
|
||||
skip: 'スキップ',
|
||||
|
||||
pipeline: {
|
||||
trigger: {
|
||||
title: '返信するメッセージを選ぶ',
|
||||
@@ -179,13 +175,8 @@ const jaJP = {
|
||||
progress: 'ステップ {{current}} / {{total}}',
|
||||
next: '次へ',
|
||||
finish: 'ガイドを完了',
|
||||
skip: 'スキップ',
|
||||
bot: {
|
||||
save: {
|
||||
title: 'ボット設定を保存する',
|
||||
description:
|
||||
'接続パラメーターとイベントルーティングを確認して保存します。準備ができたらボットを有効にできます。',
|
||||
},
|
||||
|
||||
connection: {
|
||||
title: '接続方式を選択',
|
||||
description:
|
||||
@@ -211,6 +202,11 @@ const jaJP = {
|
||||
description:
|
||||
'各イベントを処理するプロセッサーを選びます。作成後にもルートを追加できます。',
|
||||
},
|
||||
save: {
|
||||
title: 'ボット設定を保存する',
|
||||
description:
|
||||
'接続パラメーターとイベントルーティングを確認して保存します。準備ができたらボットを有効にできます。',
|
||||
},
|
||||
submit: {
|
||||
title: 'ボットを作成',
|
||||
description:
|
||||
@@ -256,11 +252,6 @@ const jaJP = {
|
||||
},
|
||||
},
|
||||
knowledge: {
|
||||
save: {
|
||||
title: 'ナレッジベースの設定を保存する',
|
||||
description: 'エンジンのパラメーターと検索設定を確認して保存します。',
|
||||
},
|
||||
|
||||
basic: {
|
||||
title: 'ナレッジベース情報を入力',
|
||||
description:
|
||||
@@ -282,6 +273,10 @@ const jaJP = {
|
||||
description:
|
||||
'関連コンテンツの検索方法とプロセッサーへの返却方法を設定します。',
|
||||
},
|
||||
save: {
|
||||
title: 'ナレッジベースの設定を保存する',
|
||||
description: 'エンジンのパラメーターと検索設定を確認して保存します。',
|
||||
},
|
||||
submit: {
|
||||
title: 'ナレッジベースを作成',
|
||||
description:
|
||||
@@ -307,6 +302,7 @@ const jaJP = {
|
||||
common: {
|
||||
customValue: 'カスタム',
|
||||
loadFailed: '読み込みに失敗しました。再試行してください。',
|
||||
search: '検索',
|
||||
login: 'ログイン',
|
||||
logout: 'ログアウト',
|
||||
accountOptions: 'システム設定',
|
||||
@@ -729,7 +725,6 @@ const jaJP = {
|
||||
internalErrorHint:
|
||||
'内部エラーが発生しました。エラー番号でバックエンドのログを確認してください。',
|
||||
errorReference: 'エラー番号: {{id}}',
|
||||
|
||||
title: 'ボット',
|
||||
description:
|
||||
'ボットの作成と管理を行います。LangBotと各プラットフォームを接続するためのエントリーポイントです',
|
||||
@@ -1088,6 +1083,10 @@ const jaJP = {
|
||||
discarded: '破棄済み',
|
||||
userMessage: 'ユーザー',
|
||||
botMessage: 'アシスタント',
|
||||
totalSessions: '{{count}} セッション',
|
||||
userSearch: 'ユーザーIDまたは名前',
|
||||
startDate: '開始日',
|
||||
endDate: '終了日',
|
||||
},
|
||||
admins: {
|
||||
title: 'Admins',
|
||||
@@ -1105,113 +1104,12 @@ const jaJP = {
|
||||
deleteError: 'Failed to remove admin: ',
|
||||
noAdmins: 'No admins configured',
|
||||
setAdminTitle: 'Set as admin',
|
||||
removeAdminTitle: 'Remove admin',
|
||||
adminBadge: 'Admin',
|
||||
configureAdmins: 'Manage Admins',
|
||||
removeAdminTitle: 'Remove admin',
|
||||
},
|
||||
},
|
||||
agents: {
|
||||
eventsAndTools: 'イベントとツール',
|
||||
eventsAndToolsDescription: '起動イベントと利用できるツールを設定します。',
|
||||
configuredEvents: '追加済みのイベント',
|
||||
configuredEventsCount: '合計 {{count}} 件',
|
||||
addEvent: 'イベントを追加',
|
||||
removeEvent: 'イベントを削除',
|
||||
eventActions: '自動で有効になるツール',
|
||||
eventToolEnabled: '有効',
|
||||
eventToolsEnabledCount: '{{count}} 個のツールが有効',
|
||||
noEventActions: 'このイベントで利用できるアクションはありません。',
|
||||
noEventsConfigured: 'イベントが未追加です',
|
||||
noEventsConfiguredDescription:
|
||||
'この Agent を起動できるイベントがありません。',
|
||||
noEventsConfiguredBadge: 'イベントなし',
|
||||
apiTools: 'ツールへのアクセス',
|
||||
apiToolsDescription: 'この Agent が呼び出せるツールを選びます。',
|
||||
otherTools: 'その他のツール',
|
||||
otherToolsDescription:
|
||||
'プラットフォーム、サンドボックス、MCP、プラグイン、スキルのツールを選びます。',
|
||||
apiToolsSelected: '{{count}} 個を選択中',
|
||||
apiToolsSecurityHint: 'この Agent に必要なツールだけを有効にしてください。',
|
||||
apiToolsSearch: 'ツールを検索…',
|
||||
eventApiTools: 'イベントツール',
|
||||
eventToolUnavailable: '利用不可',
|
||||
eventApiToolsDescription:
|
||||
'操作対象は現在のイベントから決まります。Agent はアクションのパラメーターのみを指定します。',
|
||||
platformApiTools: 'プラットフォームツール',
|
||||
platformApiToolsDescription:
|
||||
'Agent はユーザー、グループ、メッセージの ID を選べます。必要な権限だけを付与してください。',
|
||||
apiToolEvents: 'イベント',
|
||||
apiToolParameters: 'Agent のパラメーター',
|
||||
apiToolSource: '提供元',
|
||||
apiToolNoParameters: 'なし',
|
||||
sandboxTools: 'サンドボックス',
|
||||
mcpTools: 'MCP',
|
||||
pluginTools: 'プラグイン',
|
||||
skillTools: 'スキル',
|
||||
langbotBuiltIn: 'LangBot',
|
||||
apiToolDetails: '詳細',
|
||||
apiToolHideDetails: '非表示',
|
||||
apiToolsNoResults: '一致する API やツールはありません',
|
||||
apiToolsCatalogUnavailable:
|
||||
'LangBot サーバーが API ツール一覧を返しませんでした。サーバーを更新して再起動したか確認してください。プラットフォームにツールがないという意味ではありません。',
|
||||
hostToolsCatalogUnavailable: 'ツール一覧は一時的に利用できません。',
|
||||
apiToolRisk: {
|
||||
read: '読み取り専用',
|
||||
write: 'アクション',
|
||||
dangerous: '機密性の高い操作',
|
||||
},
|
||||
runnerConfigIncomplete: 'ランナー設定が未完了です',
|
||||
runnerConfigIncompleteDescription: '必須項目を入力してください:{{fields}}',
|
||||
debugTab: 'イベントデバッグ',
|
||||
debugTitle: 'Agent のイベントデバッグ',
|
||||
debugDescription:
|
||||
'現在の Agent にメッセージやプラットフォームイベントを渡して実行し、実際の出力を確認します。',
|
||||
debugResetSession: 'セッションをリセット',
|
||||
debugEventType: 'イベントの種類',
|
||||
debugNoEventsTitle: 'デバッグできるイベントがありません',
|
||||
debugNoEventsDescription:
|
||||
'まず「イベントとツール」でイベントを追加してください。',
|
||||
debugMessageReceived: 'メッセージ受信',
|
||||
debugGroupMemberJoined: 'メンバーのグループ参加',
|
||||
debugGroupMemberLeft: 'メンバーのグループ退出',
|
||||
debugFriendRequested: '友達申請の受信',
|
||||
debugFeedbackReceived: 'フィードバック受信',
|
||||
debugCustomEvent: 'カスタムイベント',
|
||||
debugCustomEventType: 'カスタムイベント名',
|
||||
debugMessageInput: '会話の入力',
|
||||
debugEventSummary: 'イベントの概要',
|
||||
debugInputPlaceholder: 'Agent に処理させる内容を入力',
|
||||
debugEventPayload: 'イベントデータ(JSON)',
|
||||
debugSupportedEvents: 'Agent が対応するイベント',
|
||||
debugRun: 'テストを実行',
|
||||
debugSaveAndRun: '保存して実行',
|
||||
debugRunning: '実行中',
|
||||
debugTranscript: 'デバッグ記録',
|
||||
debugTranscriptDescription:
|
||||
'現在のデバッグセッションの入力と Agent の出力です。',
|
||||
debugEmptyTitle: 'この Agent の動作を確認する',
|
||||
debugEmptyTranscript:
|
||||
'イベントを選び、テスト内容を入力して「テストを実行」を押します。結果はこのページに表示されます。',
|
||||
debugAgentOutput: 'Agent の出力',
|
||||
debugTestInput: 'テスト入力',
|
||||
debugNoTextOutput: 'テキスト出力なしで実行が完了しました。',
|
||||
debugEventTypeRequired: 'イベントの種類を入力してください',
|
||||
debugInputRequired: '会話の入力を記入してください',
|
||||
debugInvalidPayload:
|
||||
'イベントデータは有効な JSON オブジェクトである必要があります',
|
||||
debugUnsupportedEvent: 'このイベントは Agent に紐付けできる範囲外です',
|
||||
debugRunnerConfigInvalidDescription:
|
||||
'ランナー設定が未完了です:{{message}}',
|
||||
debugRunnerExecutionFailedDescription:
|
||||
'実行に失敗しました。選択したモデルとランナー設定を確認し、再試行してください。',
|
||||
debugRunnerTimeoutDescription:
|
||||
'実行がタイムアウトしました。後で再試行するか、ランナーのタイムアウト設定を変更してください。',
|
||||
debugApiKeyRequired: 'API キーがありません',
|
||||
debugOpenRunnerConfig: 'ランナー設定を開く',
|
||||
debugReviewRunnerConfig: 'ランナー設定を確認',
|
||||
debugErrorDetails: 'エラーの詳細を表示',
|
||||
debugRunFailed: 'Agent のデバッグ実行に失敗しました',
|
||||
|
||||
monitoring: {
|
||||
description:
|
||||
'各タスクのトリガーイベント、モデル出力、ツール実行を確認します。',
|
||||
@@ -1233,13 +1131,11 @@ const jaJP = {
|
||||
pluginSettings: 'プラグイン設定',
|
||||
pluginSettingsDescription: 'このプラグインが定義するパラメーターです。',
|
||||
selectToDebug: '上でプラグインを選択してデバッグを開始してください。',
|
||||
|
||||
debugOutput: 'プロセッサー出力',
|
||||
debugDescription:
|
||||
'このテストの入力イベント、プラグインログ、アクション結果。',
|
||||
debugNotice:
|
||||
'プラグインはテストイベントを実際に処理します。返信や送信などは Mock を使用し、実際のメッセージは送信しません。他のツールは設定どおりに実行されます。',
|
||||
|
||||
create: 'プラグインプロセッサーを作成',
|
||||
type: 'プラグインプロセッサー',
|
||||
description:
|
||||
@@ -1277,7 +1173,6 @@ const jaJP = {
|
||||
debugData: {
|
||||
chatId: 'チャット ID',
|
||||
feedbackType: 'フィードバック種別(1: 高評価、2: 低評価、3: 取消)',
|
||||
|
||||
title: 'イベントデータ',
|
||||
form: '基本項目',
|
||||
json: '完全な JSON',
|
||||
@@ -1304,30 +1199,6 @@ const jaJP = {
|
||||
sampleFeedback: 'とても役立ちました',
|
||||
invalidField: '{{field}}を確認してください',
|
||||
},
|
||||
debugReasoning: '思考内容',
|
||||
debugTextOutput: 'テキスト出力',
|
||||
debugPlatformNotice:
|
||||
'プラットフォームツールは Mock を使用します。Agent は実際にツールを呼び出し、返信・送信などは模擬実行されます。他のツールは設定どおりに実行されます。',
|
||||
debugToolSimulated: '模擬実行成功 · Mock',
|
||||
debugStop: 'デバッグを停止',
|
||||
debugMockOptions: 'Mock シナリオ(JSON)',
|
||||
debugInvalidMock:
|
||||
'Mock シナリオは有効な JSON オブジェクトで指定してください。',
|
||||
debugToolMockFailed: '模擬実行失敗 · Mock',
|
||||
debugMockOptionsHelp:
|
||||
'既定は成功です。errors にツール別エラー、results に結果、unsupported_apis に未対応 API を指定します。例:{"errors":{"event_reply":"送信失敗"}}',
|
||||
debugCancelled:
|
||||
'デバッグを停止しました。それまでの実行記録は保持されます。',
|
||||
debugNoToolCalls:
|
||||
'ツール呼び出しの記録はありません。テキストの生成は送信完了を意味しません。',
|
||||
debugToolCount:
|
||||
'{{count}} 件のツール呼び出しを記録しました。実行状態と結果は以下をご確認ください。',
|
||||
debugToolRunning: '実行中',
|
||||
debugToolCompleted: '完了',
|
||||
debugToolFailed: '失敗',
|
||||
debugToolInterrupted: '結果なし',
|
||||
debugToolArguments: '引数',
|
||||
debugToolResult: '実行結果',
|
||||
title: 'プロセッサー',
|
||||
description:
|
||||
'再利用可能なプロセッサーを作成し、ボットのイベントルーティングで使用します',
|
||||
@@ -1375,9 +1246,58 @@ const jaJP = {
|
||||
basicInfoDescription: '名前、アイコン、説明を設定します',
|
||||
runnerSettings: 'Runner',
|
||||
advanced: '詳細',
|
||||
eventsAndTools: 'イベントとツール',
|
||||
eventsAndToolsDescription: '起動イベントと利用できるツールを設定します。',
|
||||
bindableEvents: '紐付け可能なイベント範囲',
|
||||
bindableEventsDescription:
|
||||
'この Agent を選択できるボットイベントルートの範囲を制限します。通常は既定値のままで問題ありません。',
|
||||
configuredEvents: '追加済みのイベント',
|
||||
configuredEventsCount: '合計 {{count}} 件',
|
||||
addEvent: 'イベントを追加',
|
||||
removeEvent: 'イベントを削除',
|
||||
eventActions: '自動で有効になるツール',
|
||||
eventToolEnabled: '有効',
|
||||
eventToolsEnabledCount: '{{count}} 個のツールが有効',
|
||||
noEventActions: 'このイベントで利用できるアクションはありません。',
|
||||
noEventsConfigured: 'イベントが未追加です',
|
||||
noEventsConfiguredDescription:
|
||||
'この Agent を起動できるイベントがありません。',
|
||||
noEventsConfiguredBadge: 'イベントなし',
|
||||
apiTools: 'ツールへのアクセス',
|
||||
apiToolsDescription: 'この Agent が呼び出せるツールを選びます。',
|
||||
otherTools: 'その他のツール',
|
||||
otherToolsDescription:
|
||||
'プラットフォーム、サンドボックス、MCP、プラグイン、スキルのツールを選びます。',
|
||||
apiToolsSelected: '{{count}} 個を選択中',
|
||||
apiToolsSecurityHint: 'この Agent に必要なツールだけを有効にしてください。',
|
||||
apiToolsSearch: 'ツールを検索…',
|
||||
eventApiTools: 'イベントツール',
|
||||
eventToolUnavailable: '利用不可',
|
||||
eventApiToolsDescription:
|
||||
'操作対象は現在のイベントから決まります。Agent はアクションのパラメーターのみを指定します。',
|
||||
platformApiTools: 'プラットフォームツール',
|
||||
platformApiToolsDescription:
|
||||
'Agent はユーザー、グループ、メッセージの ID を選べます。必要な権限だけを付与してください。',
|
||||
apiToolEvents: 'イベント',
|
||||
apiToolParameters: 'Agent のパラメーター',
|
||||
apiToolSource: '提供元',
|
||||
apiToolNoParameters: 'なし',
|
||||
sandboxTools: 'サンドボックス',
|
||||
mcpTools: 'MCP',
|
||||
pluginTools: 'プラグイン',
|
||||
skillTools: 'スキル',
|
||||
langbotBuiltIn: 'LangBot',
|
||||
apiToolDetails: '詳細',
|
||||
apiToolHideDetails: '非表示',
|
||||
apiToolsNoResults: '一致する API やツールはありません',
|
||||
apiToolsCatalogUnavailable:
|
||||
'LangBot サーバーが API ツール一覧を返しませんでした。サーバーを更新して再起動したか確認してください。プラットフォームにツールがないという意味ではありません。',
|
||||
hostToolsCatalogUnavailable: 'ツール一覧は一時的に利用できません。',
|
||||
apiToolRisk: {
|
||||
read: '読み取り専用',
|
||||
write: 'アクション',
|
||||
dangerous: '機密性の高い操作',
|
||||
},
|
||||
supportedEvents: 'イベント範囲',
|
||||
supportedEventsDescription:
|
||||
'すべてのイベント、イベントグループ、または個別のイベントを選択します。ボットルートでは一致するイベントにのみこの Agent が表示されます。',
|
||||
@@ -1417,9 +1337,84 @@ const jaJP = {
|
||||
selectedRunnerUnavailableDescription:
|
||||
'{{runner}} は現在登録されていません。別の Runner を選択するか、対応する拡張機能を復元してください。',
|
||||
noRunnerSelected: 'Runner が選択されていません',
|
||||
runnerConfigIncomplete: 'ランナー設定が未完了です',
|
||||
runnerConfigIncompleteDescription: '必須項目を入力してください:{{fields}}',
|
||||
runnerReady: 'Runner の準備完了',
|
||||
runnerReadyDescription:
|
||||
'{{runner}} は登録済みで、プラグインランタイムに接続されています。',
|
||||
debugTab: 'イベントデバッグ',
|
||||
debugTitle: 'Agent のイベントデバッグ',
|
||||
debugDescription:
|
||||
'現在の Agent にメッセージやプラットフォームイベントを渡して実行し、実際の出力を確認します。',
|
||||
debugResetSession: 'セッションをリセット',
|
||||
debugEventType: 'イベントの種類',
|
||||
debugNoEventsTitle: 'デバッグできるイベントがありません',
|
||||
debugNoEventsDescription:
|
||||
'まず「イベントとツール」でイベントを追加してください。',
|
||||
debugMessageReceived: 'メッセージ受信',
|
||||
debugGroupMemberJoined: 'メンバーのグループ参加',
|
||||
debugGroupMemberLeft: 'メンバーのグループ退出',
|
||||
debugFriendRequested: '友達申請の受信',
|
||||
debugFeedbackReceived: 'フィードバック受信',
|
||||
debugCustomEvent: 'カスタムイベント',
|
||||
debugCustomEventType: 'カスタムイベント名',
|
||||
debugMessageInput: '会話の入力',
|
||||
debugEventSummary: 'イベントの概要',
|
||||
debugInputPlaceholder: 'Agent に処理させる内容を入力',
|
||||
debugEventPayload: 'イベントデータ(JSON)',
|
||||
debugSupportedEvents: 'Agent が対応するイベント',
|
||||
debugRun: 'テストを実行',
|
||||
debugSaveAndRun: '保存して実行',
|
||||
debugRunning: '実行中',
|
||||
debugTranscript: 'デバッグ記録',
|
||||
debugTranscriptDescription:
|
||||
'現在のデバッグセッションの入力と Agent の出力です。',
|
||||
debugEmptyTitle: 'この Agent の動作を確認する',
|
||||
debugEmptyTranscript:
|
||||
'イベントを選び、テスト内容を入力して「テストを実行」を押します。結果はこのページに表示されます。',
|
||||
debugAgentOutput: 'Agent の出力',
|
||||
debugReasoning: '思考内容',
|
||||
debugTextOutput: 'テキスト出力',
|
||||
debugPlatformNotice:
|
||||
'プラットフォームツールは Mock を使用します。Agent は実際にツールを呼び出し、返信・送信などは模擬実行されます。他のツールは設定どおりに実行されます。',
|
||||
debugToolSimulated: '模擬実行成功 · Mock',
|
||||
debugStop: 'デバッグを停止',
|
||||
debugMockOptions: 'Mock シナリオ(JSON)',
|
||||
debugInvalidMock:
|
||||
'Mock シナリオは有効な JSON オブジェクトで指定してください。',
|
||||
debugToolMockFailed: '模擬実行失敗 · Mock',
|
||||
debugMockOptionsHelp:
|
||||
'既定は成功です。errors にツール別エラー、results に結果、unsupported_apis に未対応 API を指定します。例:{"errors":{"event_reply":"送信失敗"}}',
|
||||
debugCancelled:
|
||||
'デバッグを停止しました。それまでの実行記録は保持されます。',
|
||||
debugNoToolCalls:
|
||||
'ツール呼び出しの記録はありません。テキストの生成は送信完了を意味しません。',
|
||||
debugToolCount:
|
||||
'{{count}} 件のツール呼び出しを記録しました。実行状態と結果は以下をご確認ください。',
|
||||
debugToolRunning: '実行中',
|
||||
debugToolCompleted: '完了',
|
||||
debugToolFailed: '失敗',
|
||||
debugToolInterrupted: '結果なし',
|
||||
debugToolArguments: '引数',
|
||||
debugToolResult: '実行結果',
|
||||
debugTestInput: 'テスト入力',
|
||||
debugNoTextOutput: 'テキスト出力なしで実行が完了しました。',
|
||||
debugEventTypeRequired: 'イベントの種類を入力してください',
|
||||
debugInputRequired: '会話の入力を記入してください',
|
||||
debugInvalidPayload:
|
||||
'イベントデータは有効な JSON オブジェクトである必要があります',
|
||||
debugUnsupportedEvent: 'このイベントは Agent に紐付けできる範囲外です',
|
||||
debugRunnerConfigInvalidDescription:
|
||||
'ランナー設定が未完了です:{{message}}',
|
||||
debugRunnerExecutionFailedDescription:
|
||||
'実行に失敗しました。選択したモデルとランナー設定を確認し、再試行してください。',
|
||||
debugRunnerTimeoutDescription:
|
||||
'実行がタイムアウトしました。後で再試行するか、ランナーのタイムアウト設定を変更してください。',
|
||||
debugApiKeyRequired: 'API キーがありません',
|
||||
debugOpenRunnerConfig: 'ランナー設定を開く',
|
||||
debugReviewRunnerConfig: 'ランナー設定を確認',
|
||||
debugErrorDetails: 'エラーの詳細を表示',
|
||||
debugRunFailed: 'Agent のデバッグ実行に失敗しました',
|
||||
},
|
||||
plugins: {
|
||||
title: '拡張機能',
|
||||
@@ -1538,6 +1533,7 @@ const jaJP = {
|
||||
ready:
|
||||
'プラグインパッケージを展開しました。確認するとインストールを開始します。',
|
||||
},
|
||||
uploadPluginOnly: '.lbpkg プラグインパッケージのみ対応しています',
|
||||
dragToUpload: 'ファイルをここにドラッグしてアップロード',
|
||||
unsupportedFileType:
|
||||
'サポートされていないファイルタイプです。.lbpkg と .zip ファイルのみサポートされています',
|
||||
@@ -1609,6 +1605,9 @@ const jaJP = {
|
||||
title: '{{name}} をインストール中',
|
||||
updateTitle: '{{name}} を更新中',
|
||||
titleGeneric: 'プラグインのインストール',
|
||||
titlePlugin: 'プラグイン {{name}} をインストール中',
|
||||
titleMCP: 'MCP サーバー {{name}} をインストール中',
|
||||
titleSkill: 'スキル {{name}} をインストール中',
|
||||
overallProgress: '全体の進捗',
|
||||
checkingUpdate: '最新バージョンを確認中',
|
||||
downloading: 'プラグインをダウンロード中',
|
||||
@@ -1626,26 +1625,21 @@ const jaJP = {
|
||||
'{{installed}}/{{total}} インストール済み · 残り {{remaining}} 個',
|
||||
installComplete: 'プラグインのインストール完了',
|
||||
updateComplete: 'プラグインの更新が完了しました',
|
||||
installCompletePlugin: 'プラグインをインストールしました',
|
||||
installCompleteMCP: 'MCP サーバーをインストールしました',
|
||||
installCompleteSkill: 'スキルをインストールしました',
|
||||
dismiss: '閉じる',
|
||||
background: 'バックグラウンドで実行',
|
||||
taskQueue: 'プラグインタスク',
|
||||
clearCompleted: '完了を消去',
|
||||
noTasks: 'プラグインタスクはありません',
|
||||
titlePlugin: 'プラグイン {{name}} をインストール中',
|
||||
titleMCP: 'MCP サーバー {{name}} をインストール中',
|
||||
titleSkill: 'スキル {{name}} をインストール中',
|
||||
installCompletePlugin: 'プラグインをインストールしました',
|
||||
installCompleteMCP: 'MCP サーバーをインストールしました',
|
||||
installCompleteSkill: 'スキルをインストールしました',
|
||||
},
|
||||
uploadPluginOnly: '.lbpkg プラグインパッケージのみ対応しています',
|
||||
},
|
||||
market: {
|
||||
runnerUsage: 'ランナーの用途',
|
||||
runnerUsageAll: 'すべて',
|
||||
runnerUsageAgent: 'Agent / パイプライン',
|
||||
runnerUsageEvent: 'プラグインプロセッサー',
|
||||
|
||||
searchPlaceholder: 'プラグインを検索...',
|
||||
searchPlaceholderCount:
|
||||
'{{count}} 個の拡張機能・機能・ユースケースを検索...',
|
||||
@@ -1658,6 +1652,10 @@ const jaJP = {
|
||||
allLoaded: 'すべてのプラグインが表示されました',
|
||||
allLoadedCount: '{{count}} 個の拡張機能をすべて表示しました',
|
||||
install: 'インストール',
|
||||
installCard: '{{name}} をインストール',
|
||||
installedCard: '{{name}} はインストール済み',
|
||||
installed: 'インストール済み',
|
||||
updateAvailable: '更新があります',
|
||||
installConfirm:
|
||||
'プラグイン "{{name}}" ({{version}}) をインストールしますか?',
|
||||
downloadComplete: 'プラグイン "{{name}}" のダウンロードが完了しました',
|
||||
@@ -1718,13 +1716,10 @@ const jaJP = {
|
||||
typeMCP: 'MCP',
|
||||
typeSkill: 'スキル',
|
||||
requestPlugin: 'プラグインをリクエスト',
|
||||
tags: {
|
||||
filterByTags: 'タグで絞り込み',
|
||||
selected: '選択済み',
|
||||
selectTags: 'タグを選択',
|
||||
clearAll: 'クリア',
|
||||
noTags: 'タグがありません',
|
||||
},
|
||||
viewDetails: '詳細を表示',
|
||||
deprecated: '非推奨',
|
||||
deprecatedTooltip:
|
||||
'対応する「ナレッジエンジン」プラグインをインストールしてください。',
|
||||
filters: {
|
||||
allFormats: 'すべての種類',
|
||||
more: 'もっと',
|
||||
@@ -1733,14 +1728,13 @@ const jaJP = {
|
||||
technicalType: '技術タイプ',
|
||||
},
|
||||
allExtensions: 'すべての拡張機能',
|
||||
viewDetails: '詳細を表示',
|
||||
deprecated: '非推奨',
|
||||
deprecatedTooltip:
|
||||
'対応する「ナレッジエンジン」プラグインをインストールしてください。',
|
||||
installCard: '{{name}} をインストール',
|
||||
installedCard: '{{name}} はインストール済み',
|
||||
installed: 'インストール済み',
|
||||
updateAvailable: '更新があります',
|
||||
tags: {
|
||||
filterByTags: 'タグで絞り込み',
|
||||
selected: '選択済み',
|
||||
selectTags: 'タグを選択',
|
||||
clearAll: 'クリア',
|
||||
noTags: 'タグがありません',
|
||||
},
|
||||
},
|
||||
mcp: {
|
||||
title: 'MCP',
|
||||
@@ -1753,6 +1747,7 @@ const jaJP = {
|
||||
getServerListError: 'MCPサーバーリストの取得に失敗しました:',
|
||||
serverName: 'サーバー名',
|
||||
serverMode: '接続モード',
|
||||
selectMode: '接続モードを選択',
|
||||
stdio: 'Stdioモード',
|
||||
sse: 'SSEモード',
|
||||
http: 'HTTPモード',
|
||||
@@ -1765,7 +1760,6 @@ const jaJP = {
|
||||
remoteUrlPlaceholder: 'https://example.com/mcp',
|
||||
remoteUrlDescription:
|
||||
'MCP サーバーの URL を貼り付けてください。Streamable HTTP と従来の SSE エンドポイントの両方に対応しています。',
|
||||
selectMode: '接続モードを選択',
|
||||
noServerInstalled: 'MCPサーバーが設定されていません',
|
||||
serverNameRequired: 'サーバー名は必須です',
|
||||
commandRequired: 'コマンドは必須です',
|
||||
@@ -1954,9 +1948,9 @@ const jaJP = {
|
||||
selectAll: 'すべて選択',
|
||||
enableAllPlugins: 'すべてのプラグインを有効にする',
|
||||
enableAllMCPServers: 'すべてのMCPサーバーを有効にする',
|
||||
enableAllSkills: 'すべてのスキルを有効化',
|
||||
allPluginsEnabled: 'すべてのプラグインが有効になっています',
|
||||
allMCPServersEnabled: 'すべてのMCPサーバーが有効になっています',
|
||||
enableAllSkills: 'すべてのスキルを有効化',
|
||||
allSkillsEnabled: 'すべてのスキルが有効です',
|
||||
skillsTitle: 'スキル',
|
||||
noSkillsSelected: 'スキルが選択されていません',
|
||||
@@ -2001,14 +1995,13 @@ const jaJP = {
|
||||
selectKnowledgeBases: 'ナレッジベースを選択',
|
||||
},
|
||||
debugDialog: {
|
||||
saveAndSend: '保存して送信',
|
||||
|
||||
title: 'パイプラインのチャット',
|
||||
selectPipeline: 'パイプラインを選択',
|
||||
sessionType: 'セッションタイプ',
|
||||
privateChat: 'プライベートチャット',
|
||||
groupChat: 'グループチャット',
|
||||
send: '送信',
|
||||
saveAndSend: '保存して送信',
|
||||
reset: '会話をリセット',
|
||||
inputPlaceholder: '{{type}}メッセージを送信...',
|
||||
noMessages: 'メッセージがありません',
|
||||
@@ -2122,25 +2115,6 @@ const jaJP = {
|
||||
fileName: 'ファイル名',
|
||||
noResults: '検索結果がありません',
|
||||
retrieveError: '検索に失敗しました:',
|
||||
basicInfo: '基本情報',
|
||||
basicInfoDescription: 'ナレッジベースの名前、アイコン、説明を設定',
|
||||
engineSettings: 'エンジン設定',
|
||||
engineSettingsDescription: '選択したナレッジエンジンの設定',
|
||||
engineSettingsReadonly: '編集モードでは変更できません',
|
||||
engineSettingsInvalid:
|
||||
'エンジン設定の検証に失敗しました、必須項目を確認してください',
|
||||
retrievalSettingsInvalid:
|
||||
'検索設定の検証に失敗しました、必須項目を確認してください',
|
||||
retrievalSettings: '検索設定',
|
||||
retrievalSettingsDescription: 'このナレッジベースからの文書検索方法を設定',
|
||||
dangerZone: '危険ゾーン',
|
||||
dangerZoneDescription: '元に戻せない操作',
|
||||
deleteKbAction: 'このナレッジベースを削除',
|
||||
deleteKbHint:
|
||||
'削除すると、このナレッジベース内のすべての文書とデータが完全に削除されます。',
|
||||
noEnginesAvailable: '利用可能なナレッジエンジンがありません',
|
||||
installEngineHint:
|
||||
'先に「ナレッジエンジン」プラグインをインストールしてください',
|
||||
unknownEngine: '不明なエンジン',
|
||||
knowledgeEngine: 'ナレッジエンジン',
|
||||
knowledgeEngineRequired: 'ナレッジエンジンは必須です',
|
||||
@@ -2169,6 +2143,25 @@ const jaJP = {
|
||||
builtInEngine: '組み込みエンジン',
|
||||
cannotChangeKnowledgeEngine:
|
||||
'作成後にナレッジエンジンを変更することはできません',
|
||||
basicInfo: '基本情報',
|
||||
basicInfoDescription: 'ナレッジベースの名前、アイコン、説明を設定',
|
||||
engineSettings: 'エンジン設定',
|
||||
engineSettingsDescription: '選択したナレッジエンジンの設定',
|
||||
engineSettingsReadonly: '編集モードでは変更できません',
|
||||
engineSettingsInvalid:
|
||||
'エンジン設定の検証に失敗しました、必須項目を確認してください',
|
||||
retrievalSettingsInvalid:
|
||||
'検索設定の検証に失敗しました、必須項目を確認してください',
|
||||
retrievalSettings: '検索設定',
|
||||
retrievalSettingsDescription: 'このナレッジベースからの文書検索方法を設定',
|
||||
dangerZone: '危険ゾーン',
|
||||
dangerZoneDescription: '元に戻せない操作',
|
||||
deleteKbAction: 'このナレッジベースを削除',
|
||||
deleteKbHint:
|
||||
'削除すると、このナレッジベース内のすべての文書とデータが完全に削除されます。',
|
||||
noEnginesAvailable: '利用可能なナレッジエンジンがありません',
|
||||
installEngineHint:
|
||||
'先に「ナレッジエンジン」プラグインをインストールしてください',
|
||||
createKnowledgeBaseFailed: 'ナレッジベースの作成に失敗しました:',
|
||||
loadKnowledgeBaseFailed: 'ナレッジベースの読み込みに失敗しました:',
|
||||
deleteKnowledgeBaseFailed: 'ナレッジベースの削除に失敗しました:',
|
||||
@@ -2239,9 +2232,9 @@ const jaJP = {
|
||||
resetSuccess: 'パスワードのリセットに成功しました。ログインしてください',
|
||||
resetFailed:
|
||||
'パスワードのリセットに失敗しました。メールアドレスと復旧キーを確認してください',
|
||||
backToLogin: 'ログインに戻る',
|
||||
secondFactorFailed:
|
||||
'確認に失敗しました。コードを確認して再試行してください',
|
||||
backToLogin: 'ログインに戻る',
|
||||
verifyWith: '確認方法',
|
||||
methodRecoveryKey: 'リカバリーキー',
|
||||
methodTotp: '認証アプリ',
|
||||
@@ -2395,6 +2388,10 @@ const jaJP = {
|
||||
selectionLoadFailed:
|
||||
'ワークスペースを読み込めませんでした。もう一度お試しください。',
|
||||
switchWorkspace: 'ワークスペースを切り替え',
|
||||
settings: 'Workspace Settings',
|
||||
currentPlan: 'Current plan',
|
||||
planUnavailable: 'Unavailable',
|
||||
upgradePlan: 'Change or upgrade plan',
|
||||
ossSingletonDescription:
|
||||
'このセルフホストインスタンスには1つのワークスペースがあり、複数のユーザーを追加できます。',
|
||||
cloudManagedDescription:
|
||||
@@ -2465,11 +2462,6 @@ const jaJP = {
|
||||
operator: 'オペレーター',
|
||||
viewer: '閲覧者',
|
||||
},
|
||||
|
||||
settings: 'Workspace Settings',
|
||||
currentPlan: 'Current plan',
|
||||
planUnavailable: 'Unavailable',
|
||||
upgradePlan: 'Change or upgrade plan',
|
||||
},
|
||||
monitoring: {
|
||||
title: 'ダッシュボード',
|
||||
@@ -2509,8 +2501,8 @@ const jaJP = {
|
||||
embeddingCalls: 'Embedding呼び出し',
|
||||
modelCalls: 'モデル呼び出し',
|
||||
tokens: 'トークン監視',
|
||||
sessions: 'セッション分析',
|
||||
feedback: 'ユーザーフィードバック',
|
||||
sessions: 'セッション分析',
|
||||
errors: 'エラーログ',
|
||||
},
|
||||
messageList: {
|
||||
@@ -2569,6 +2561,8 @@ const jaJP = {
|
||||
arguments: '引数',
|
||||
result: '結果',
|
||||
noToolCalls: 'ツール呼び出しは記録されていません',
|
||||
showDetails: '詳細を表示',
|
||||
hideDetails: '詳細を非表示',
|
||||
},
|
||||
tokens: {
|
||||
totalTokens: '総トークン数',
|
||||
@@ -2629,12 +2623,12 @@ const jaJP = {
|
||||
noData: 'セッションが見つかりません',
|
||||
},
|
||||
errors: {
|
||||
title: 'エラー',
|
||||
errorType: 'エラータイプ',
|
||||
errorMessage: 'エラーメッセージ',
|
||||
occurredAt: '発生時刻',
|
||||
noErrors: 'エラーが見つかりません',
|
||||
stackTrace: 'スタックトレース',
|
||||
title: 'エラー',
|
||||
},
|
||||
feedback: {
|
||||
title: 'ユーザーフィードバック',
|
||||
@@ -2672,12 +2666,12 @@ const jaJP = {
|
||||
submitFailed: '送信に失敗しました。後でもう一度お試しください。',
|
||||
removeImage: '画像を削除',
|
||||
},
|
||||
messageDetails: {
|
||||
noData: 'このクエリにはLLM呼び出しやエラーがありません',
|
||||
},
|
||||
queries: {
|
||||
title: 'クエリ',
|
||||
},
|
||||
messageDetails: {
|
||||
noData: 'このクエリにはLLM呼び出しやエラーがありません',
|
||||
},
|
||||
queryVariables: {
|
||||
title: 'クエリ変数',
|
||||
},
|
||||
@@ -2741,6 +2735,26 @@ const jaJP = {
|
||||
},
|
||||
},
|
||||
storageAnalysis: {
|
||||
title: 'ストレージ分析',
|
||||
description: 'ストレージ使用量とクリーンアップ候補を確認します',
|
||||
openDialog: '分析を表示',
|
||||
dialogTitle: 'ストレージ分析',
|
||||
generatedAt: '生成日時 {{time}}',
|
||||
loading: '読み込み中...',
|
||||
refresh: '更新',
|
||||
totalSize: '合計サイズ',
|
||||
binaryStorage: 'プラグインバイナリストレージ',
|
||||
uploadCleanup: '期限切れアップロード',
|
||||
logCleanup: '期限切れログ',
|
||||
sections: 'ストレージセクション',
|
||||
monitoringTables: '監視テーブル',
|
||||
runtimeTasks: '実行タスク',
|
||||
cleanupPolicy: 'クリーンアップポリシー',
|
||||
uploadRetention: 'アップロード保持期間',
|
||||
logRetention: 'ログ保持期間',
|
||||
databaseType: 'データベース種別',
|
||||
days: '日',
|
||||
missing: 'なし',
|
||||
notCreated: '未作成',
|
||||
processStorage: 'プロセス別ストレージ',
|
||||
processStorageDescription:
|
||||
@@ -2779,32 +2793,18 @@ const jaJP = {
|
||||
box_runtime:
|
||||
'サンドボックスと MCP プロセスのワークスペース、添付ファイル交換ディレクトリ、スキル。',
|
||||
},
|
||||
|
||||
title: 'ストレージ分析',
|
||||
description: 'ストレージ使用量とクリーンアップ候補を確認します',
|
||||
openDialog: '分析を表示',
|
||||
dialogTitle: 'ストレージ分析',
|
||||
generatedAt: '生成日時 {{time}}',
|
||||
loading: '読み込み中...',
|
||||
refresh: '更新',
|
||||
totalSize: '合計サイズ',
|
||||
binaryStorage: 'プラグインバイナリストレージ',
|
||||
uploadCleanup: '期限切れアップロード',
|
||||
logCleanup: '期限切れログ',
|
||||
sections: 'ストレージセクション',
|
||||
monitoringTables: '監視テーブル',
|
||||
runtimeTasks: '実行タスク',
|
||||
cleanupPolicy: 'クリーンアップポリシー',
|
||||
uploadRetention: 'アップロード保持期間',
|
||||
logRetention: 'ログ保持期間',
|
||||
databaseType: 'データベース種別',
|
||||
days: '日',
|
||||
missing: 'なし',
|
||||
expiredUploads: '期限切れアップロード',
|
||||
expiredLogs: '期限切れログ',
|
||||
noExpiredUploads: '期限切れのアップロードファイルはありません',
|
||||
noExpiredLogs: '期限切れのログファイルはありません',
|
||||
sectionNames: {
|
||||
database: 'データベース',
|
||||
logs: 'ログ',
|
||||
storage: 'アップロードファイル',
|
||||
vector_store: 'ベクターストア',
|
||||
plugins: 'プラグイン',
|
||||
mcp: 'MCP',
|
||||
temp: '一時ファイル',
|
||||
legacy_plugins: '旧プラグインパッケージ',
|
||||
artifacts: '検証済みプラグイン成果物',
|
||||
dependency_environments: '依存関係の環境',
|
||||
@@ -2819,14 +2819,6 @@ const jaJP = {
|
||||
session_caches: 'サンドボックスランタイムのキャッシュ',
|
||||
session_temp: 'サンドボックスの一時ファイル',
|
||||
managed_process_workspaces: '管理プロセスのワークスペース(MCP を含む)',
|
||||
|
||||
database: 'データベース',
|
||||
logs: 'ログ',
|
||||
storage: 'アップロードファイル',
|
||||
vector_store: 'ベクターストア',
|
||||
plugins: 'プラグイン',
|
||||
mcp: 'MCP',
|
||||
temp: '一時ファイル',
|
||||
},
|
||||
},
|
||||
limitation: {
|
||||
@@ -2843,6 +2835,97 @@ const jaJP = {
|
||||
createDisabledTooltip:
|
||||
'このワークスペースの{{resource}}数が上限({{max}}個)に達しました。新しく作成する前に既存の{{resource}}を削除してください。',
|
||||
},
|
||||
skills: {
|
||||
title: 'スキル',
|
||||
description: '会話中に有効化できるスキルを作成・管理します',
|
||||
createSkill: 'スキルを作成',
|
||||
createSkillDescription:
|
||||
'ローカルディレクトリをインポートするか、情報を入力して作成します',
|
||||
editSkill: 'スキルを編集',
|
||||
getSkillListError: 'スキル一覧の取得に失敗しました: ',
|
||||
skillName: 'スキル名',
|
||||
displayName: 'スキル名',
|
||||
displayNamePlaceholder: '表示名(任意の言語に対応)',
|
||||
skillSlug: 'ディレクトリ名',
|
||||
skillSlugPlaceholder: 'english-name-only',
|
||||
skillSlugHelp:
|
||||
'スキルのディレクトリ名として使用します。英字、数字、ハイフン、アンダースコアのみ使用できます。',
|
||||
skillDescription: 'スキルの説明',
|
||||
skillInstructions: '指示内容',
|
||||
saveSuccess: '保存しました',
|
||||
saveError: '保存に失敗しました: ',
|
||||
createSuccess: '作成しました',
|
||||
createError: '作成に失敗しました: ',
|
||||
deleteSuccess: '削除しました',
|
||||
deleteError: '削除に失敗しました: ',
|
||||
deleteConfirmation: 'このスキルを削除してもよろしいですか?',
|
||||
delete: 'スキルを削除',
|
||||
skillNameRequired: 'スキル名は必須です',
|
||||
skillDescriptionRequired: 'スキルの説明は必須です',
|
||||
packageRootRequired: 'パッケージルートパスは必須です',
|
||||
scan: 'スキャン',
|
||||
scanSuccess: 'ディレクトリをスキャンしました',
|
||||
scanError: 'ディレクトリのスキャンに失敗しました: ',
|
||||
noSkills: '設定済みのスキルはありません',
|
||||
preview: 'プレビュー',
|
||||
previewInstructions: 'SKILL.md 内容プレビュー',
|
||||
instructionsPlaceholder: 'Markdown 形式でスキルの指示を入力...',
|
||||
descriptionPlaceholder: 'このスキルの概要(LLM に表示されます)',
|
||||
packageRoot: 'パッケージディレクトリ',
|
||||
packageRootHelp:
|
||||
'任意。既存のスキルディレクトリをインポートする場合のみ必要です。新規スキルでは空のままにしてください。スキャンは現在のディレクトリと最大 2 階層下まで確認します。',
|
||||
importLocalDirectory: 'ローカルスキルディレクトリをインポート',
|
||||
chooseSkillDirectory: 'SKILL.md のディレクトリを選択',
|
||||
chooseAnotherDirectory: '別のディレクトリを選択',
|
||||
importingDirectory: 'プレビュー中...',
|
||||
clearDirectoryPreview: '選択したディレクトリをクリア',
|
||||
noSkillMdInDirectory: '選択したディレクトリに SKILL.md が見つかりません',
|
||||
multipleSkillMdInDirectory:
|
||||
'選択したディレクトリに複数の SKILL.md があります。単一のスキルディレクトリを直接選択してください。',
|
||||
importDirectoryError: 'ディレクトリのインポートに失敗しました: ',
|
||||
advancedSettings: '詳細設定',
|
||||
searchSkills: 'スキルを検索...',
|
||||
selectSkills: 'スキルを選択',
|
||||
addSkill: 'スキルを追加',
|
||||
builtin: '組み込み',
|
||||
importFromGithub: 'GitHub からスキルをインストール',
|
||||
createManually: '手動で作成',
|
||||
uploadZip: 'ZIP パッケージをアップロード',
|
||||
uploadZipOnly: '.zip スキルパッケージのみ対応しています',
|
||||
installSuccess: 'スキルをインストールしました',
|
||||
installError: 'スキルのインストールに失敗しました: ',
|
||||
enterRepoUrl: 'GitHub リポジトリ URL を入力',
|
||||
repoUrlPlaceholder: '例: https://github.com/owner/repo',
|
||||
fetchingReleases: 'リリースを取得中...',
|
||||
selectRelease: 'リリースを選択',
|
||||
noReleasesFound: 'リリースが見つかりません',
|
||||
fetchReleasesError: 'リリースの取得に失敗しました: ',
|
||||
selectAsset: 'インストールするファイルを選択',
|
||||
sourceArchive: 'ソースコード (zip)',
|
||||
noAssetsFound: 'このリリースにはインストール可能なファイルがありません',
|
||||
fetchAssetsError: 'ファイルの取得に失敗しました: ',
|
||||
backToReleases: 'リリースへ戻る',
|
||||
backToRepoUrl: 'リポジトリ URL へ戻る',
|
||||
backToAssets: 'ファイル一覧へ戻る',
|
||||
releaseTag: 'タグ: {{tag}}',
|
||||
publishedAt: '公開日時: {{date}}',
|
||||
prerelease: 'プレリリース',
|
||||
assetSize: 'サイズ: {{size}}',
|
||||
confirmInstall: 'インストールを確認',
|
||||
installing: 'スキルをインストール中...',
|
||||
loading: '読み込み中...',
|
||||
previewLoadError: 'プレビューの読み込みに失敗しました',
|
||||
selectFromSidebar: 'サイドバーからスキルを選択してください',
|
||||
dangerZone: '危険な操作',
|
||||
dangerZoneDescription: '元に戻せない破壊的な操作',
|
||||
files: 'ファイル',
|
||||
noFiles: 'ファイルが見つかりません',
|
||||
loadFilesError: 'ファイルの読み込みに失敗しました: ',
|
||||
readFileError: 'ファイルの読み取りに失敗しました: ',
|
||||
saveFile: 'ファイルを保存',
|
||||
saveFileSuccess: 'ファイルを保存しました',
|
||||
saveFileError: 'ファイルの保存に失敗しました: ',
|
||||
},
|
||||
wizard: {
|
||||
sidebarDescription: 'ガイド付きステップでボットを作成',
|
||||
loading: 'ウィザードを読み込み中...',
|
||||
@@ -3015,10 +3098,6 @@ const jaJP = {
|
||||
addMCPServerHint: 'MCPツールサーバー拡張を接続',
|
||||
installFromGithub: 'GitHubからプラグインをインストール',
|
||||
installFromGithubHint: 'GitHub Releaseからプラグイン拡張をインストール',
|
||||
createSkill: '新しいスキルを作成',
|
||||
createSkillHint: '新しいスキル拡張を手動で作成',
|
||||
unsupportedFileType:
|
||||
'サポートされていないファイルタイプです。.zipと.lbpkgファイルのみサポートされています',
|
||||
githubUrlHelp: 'GitHub URL を貼り付けてください',
|
||||
githubUrlTooltip:
|
||||
'プラグイン: リポジトリ、Release、Tag の URL を貼り付けます。スキル: スキルディレクトリ内の SKILL.md ページ URL を貼り付けます。',
|
||||
@@ -3027,6 +3106,10 @@ const jaJP = {
|
||||
githubUrlRequired: 'GitHub URL を入力してください',
|
||||
previewSkill: 'スキルをプレビュー',
|
||||
noSkillPreviewFound: 'インポート可能なスキルが見つかりません',
|
||||
createSkill: '新しいスキルを作成',
|
||||
createSkillHint: '新しいスキル拡張を手動で作成',
|
||||
unsupportedFileType:
|
||||
'サポートされていないファイルタイプです。.zipと.lbpkgファイルのみサポートされています',
|
||||
},
|
||||
errorPage: {
|
||||
unexpectedError: 'エラーが発生しました',
|
||||
@@ -3103,97 +3186,5 @@ const jaJP = {
|
||||
selectFromSidebar: 'サイドバーからプラグインページを選択してください',
|
||||
invalidPage: '無効なプラグインページ',
|
||||
},
|
||||
skills: {
|
||||
title: 'スキル',
|
||||
description: '会話中に有効化できるスキルを作成・管理します',
|
||||
createSkill: 'スキルを作成',
|
||||
createSkillDescription:
|
||||
'ローカルディレクトリをインポートするか、情報を入力して作成します',
|
||||
editSkill: 'スキルを編集',
|
||||
getSkillListError: 'スキル一覧の取得に失敗しました: ',
|
||||
skillName: 'スキル名',
|
||||
displayName: 'スキル名',
|
||||
displayNamePlaceholder: '表示名(任意の言語に対応)',
|
||||
skillSlug: 'ディレクトリ名',
|
||||
skillSlugPlaceholder: 'english-name-only',
|
||||
skillSlugHelp:
|
||||
'スキルのディレクトリ名として使用します。英字、数字、ハイフン、アンダースコアのみ使用できます。',
|
||||
skillDescription: 'スキルの説明',
|
||||
skillInstructions: '指示内容',
|
||||
saveSuccess: '保存しました',
|
||||
saveError: '保存に失敗しました: ',
|
||||
createSuccess: '作成しました',
|
||||
createError: '作成に失敗しました: ',
|
||||
deleteSuccess: '削除しました',
|
||||
deleteError: '削除に失敗しました: ',
|
||||
deleteConfirmation: 'このスキルを削除してもよろしいですか?',
|
||||
delete: 'スキルを削除',
|
||||
skillNameRequired: 'スキル名は必須です',
|
||||
skillDescriptionRequired: 'スキルの説明は必須です',
|
||||
packageRootRequired: 'パッケージルートパスは必須です',
|
||||
scan: 'スキャン',
|
||||
scanSuccess: 'ディレクトリをスキャンしました',
|
||||
scanError: 'ディレクトリのスキャンに失敗しました: ',
|
||||
noSkills: '設定済みのスキルはありません',
|
||||
preview: 'プレビュー',
|
||||
previewInstructions: 'SKILL.md 内容プレビュー',
|
||||
instructionsPlaceholder: 'Markdown 形式でスキルの指示を入力...',
|
||||
descriptionPlaceholder: 'このスキルの概要(LLM に表示されます)',
|
||||
packageRoot: 'パッケージディレクトリ',
|
||||
packageRootHelp:
|
||||
'任意。既存のスキルディレクトリをインポートする場合のみ必要です。新規スキルでは空のままにしてください。スキャンは現在のディレクトリと最大 2 階層下まで確認します。',
|
||||
importLocalDirectory: 'ローカルスキルディレクトリをインポート',
|
||||
chooseSkillDirectory: 'SKILL.md のディレクトリを選択',
|
||||
chooseAnotherDirectory: '別のディレクトリを選択',
|
||||
importingDirectory: 'プレビュー中...',
|
||||
clearDirectoryPreview: '選択したディレクトリをクリア',
|
||||
noSkillMdInDirectory: '選択したディレクトリに SKILL.md が見つかりません',
|
||||
multipleSkillMdInDirectory:
|
||||
'選択したディレクトリに複数の SKILL.md があります。単一のスキルディレクトリを直接選択してください。',
|
||||
importDirectoryError: 'ディレクトリのインポートに失敗しました: ',
|
||||
advancedSettings: '詳細設定',
|
||||
searchSkills: 'スキルを検索...',
|
||||
selectSkills: 'スキルを選択',
|
||||
addSkill: 'スキルを追加',
|
||||
builtin: '組み込み',
|
||||
importFromGithub: 'GitHub からスキルをインストール',
|
||||
createManually: '手動で作成',
|
||||
uploadZip: 'ZIP パッケージをアップロード',
|
||||
uploadZipOnly: '.zip スキルパッケージのみ対応しています',
|
||||
installSuccess: 'スキルをインストールしました',
|
||||
installError: 'スキルのインストールに失敗しました: ',
|
||||
enterRepoUrl: 'GitHub リポジトリ URL を入力',
|
||||
repoUrlPlaceholder: '例: https://github.com/owner/repo',
|
||||
fetchingReleases: 'リリースを取得中...',
|
||||
selectRelease: 'リリースを選択',
|
||||
noReleasesFound: 'リリースが見つかりません',
|
||||
fetchReleasesError: 'リリースの取得に失敗しました: ',
|
||||
selectAsset: 'インストールするファイルを選択',
|
||||
sourceArchive: 'ソースコード (zip)',
|
||||
noAssetsFound: 'このリリースにはインストール可能なファイルがありません',
|
||||
fetchAssetsError: 'ファイルの取得に失敗しました: ',
|
||||
backToReleases: 'リリースへ戻る',
|
||||
backToRepoUrl: 'リポジトリ URL へ戻る',
|
||||
backToAssets: 'ファイル一覧へ戻る',
|
||||
releaseTag: 'タグ: {{tag}}',
|
||||
publishedAt: '公開日時: {{date}}',
|
||||
prerelease: 'プレリリース',
|
||||
assetSize: 'サイズ: {{size}}',
|
||||
confirmInstall: 'インストールを確認',
|
||||
installing: 'スキルをインストール中...',
|
||||
loading: '読み込み中...',
|
||||
previewLoadError: 'プレビューの読み込みに失敗しました',
|
||||
selectFromSidebar: 'サイドバーからスキルを選択してください',
|
||||
dangerZone: '危険な操作',
|
||||
dangerZoneDescription: '元に戻せない破壊的な操作',
|
||||
files: 'ファイル',
|
||||
noFiles: 'ファイルが見つかりません',
|
||||
loadFilesError: 'ファイルの読み込みに失敗しました: ',
|
||||
readFileError: 'ファイルの読み取りに失敗しました: ',
|
||||
saveFile: 'ファイルを保存',
|
||||
saveFileSuccess: 'ファイルを保存しました',
|
||||
saveFileError: 'ファイルの保存に失敗しました: ',
|
||||
},
|
||||
};
|
||||
|
||||
export default jaJP;
|
||||
|
||||
+702
-720
File diff suppressed because it is too large
Load Diff
+679
-697
File diff suppressed because it is too large
Load Diff
+689
-707
File diff suppressed because it is too large
Load Diff
@@ -1,5 +1,4 @@
|
||||
import pipelineMigration from './pipeline-migration/zh-Hans';
|
||||
|
||||
const zhHans = {
|
||||
assistant: {
|
||||
modelHint: '切换助手模型,从下一条消息生效',
|
||||
@@ -93,7 +92,6 @@ const zhHans = {
|
||||
guidedTour: {
|
||||
eventDebugDescription:
|
||||
'选择支持的事件并填写测试数据,运行后查看输出和工具调用结果。平台操作仅模拟执行,模型和其他工具按实际配置执行。',
|
||||
|
||||
pipeline: {
|
||||
trigger: {
|
||||
title: '选择要回复的消息',
|
||||
@@ -288,6 +286,7 @@ const zhHans = {
|
||||
common: {
|
||||
customValue: '自定义',
|
||||
loadFailed: '加载失败,请重试。',
|
||||
search: '搜索',
|
||||
login: '登录',
|
||||
logout: '退出登录',
|
||||
accountOptions: '系统设置',
|
||||
@@ -685,7 +684,6 @@ const zhHans = {
|
||||
applyFailed: '配置已保存,但应用失败',
|
||||
internalErrorHint: '发生内部错误,请通过错误编号查看后端日志。',
|
||||
errorReference: '错误编号:{{id}}',
|
||||
|
||||
title: '机器人',
|
||||
description: '创建和管理机器人,这是 LangBot 与各个平台连接的入口',
|
||||
createBot: '创建机器人',
|
||||
@@ -1014,6 +1012,10 @@ const zhHans = {
|
||||
discarded: '已丢弃',
|
||||
userMessage: '用户',
|
||||
botMessage: '助手',
|
||||
totalSessions: '{{count}} 个会话',
|
||||
userSearch: '用户 ID 或名称',
|
||||
startDate: '开始日期',
|
||||
endDate: '结束日期',
|
||||
},
|
||||
admins: {
|
||||
title: '管理员',
|
||||
@@ -1055,12 +1057,10 @@ const zhHans = {
|
||||
pluginSettings: '插件设置',
|
||||
pluginSettingsDescription: '由当前插件声明的参数。',
|
||||
selectToDebug: '请先在上方选择插件,再开始调试。',
|
||||
|
||||
debugOutput: '处理器输出',
|
||||
debugDescription: '当前测试的输入事件、插件日志和动作结果。',
|
||||
debugNotice:
|
||||
'插件真实处理测试事件;回复、发送等平台动作使用 Mock,不发送真实消息。其他工具仍按实际配置执行。',
|
||||
|
||||
create: '创建插件处理器',
|
||||
type: '插件处理器',
|
||||
description: '由插件代码处理预先声明的特定事件,按插件编写的逻辑执行。',
|
||||
@@ -1095,7 +1095,6 @@ const zhHans = {
|
||||
debugData: {
|
||||
chatId: '会话 ID',
|
||||
feedbackType: '反馈类型(1:赞,2:踩,3:取消)',
|
||||
|
||||
title: '事件数据',
|
||||
form: '常用字段',
|
||||
json: '完整 JSON',
|
||||
@@ -1344,7 +1343,6 @@ const zhHans = {
|
||||
noMatchingPlugins: '没有找到匹配的插件',
|
||||
loading: '加载中...',
|
||||
getPluginListError: '获取插件列表失败:',
|
||||
pluginConfig: '插件配置',
|
||||
noPluginInstalled: '暂未安装任何插件',
|
||||
noExtensionInstalled: '暂未安装任何扩展',
|
||||
searchInstalled: '搜索已安装扩展',
|
||||
@@ -1352,6 +1350,7 @@ const zhHans = {
|
||||
loadingExtensions: '正在加载扩展...',
|
||||
groupByType: '按格式分组',
|
||||
groupByTypeShort: '分组',
|
||||
pluginConfig: '插件配置',
|
||||
pluginSort: '插件排序',
|
||||
pluginSortDescription:
|
||||
'插件顺序会影响同一事件内的处理顺序,请拖动插件卡片排序',
|
||||
@@ -1533,7 +1532,6 @@ const zhHans = {
|
||||
runnerUsageAll: '全部',
|
||||
runnerUsageAgent: 'Agent / 流水线',
|
||||
runnerUsageEvent: '插件处理器',
|
||||
|
||||
searchPlaceholder: '搜索插件...',
|
||||
searchPlaceholderCount: '搜索 {{count}} 个扩展、能力或场景...',
|
||||
searchResults: '搜索到 {{count}} 个扩展',
|
||||
@@ -1607,13 +1605,9 @@ const zhHans = {
|
||||
typeMCP: 'MCP',
|
||||
typeSkill: '技能',
|
||||
requestPlugin: '请求插件',
|
||||
tags: {
|
||||
filterByTags: '按标签筛选',
|
||||
selected: '已选',
|
||||
selectTags: '选择标签',
|
||||
clearAll: '清空',
|
||||
noTags: '暂无标签',
|
||||
},
|
||||
viewDetails: '查看详情',
|
||||
deprecated: '已弃用',
|
||||
deprecatedTooltip: '请安装对应「知识引擎」插件',
|
||||
filters: {
|
||||
allFormats: '全部格式',
|
||||
more: '筛选',
|
||||
@@ -1623,9 +1617,13 @@ const zhHans = {
|
||||
technicalType: '扩展格式',
|
||||
},
|
||||
allExtensions: '全部扩展',
|
||||
viewDetails: '查看详情',
|
||||
deprecated: '已弃用',
|
||||
deprecatedTooltip: '请安装对应「知识引擎」插件',
|
||||
tags: {
|
||||
filterByTags: '按标签筛选',
|
||||
selected: '已选',
|
||||
selectTags: '选择标签',
|
||||
clearAll: '清空',
|
||||
noTags: '暂无标签',
|
||||
},
|
||||
},
|
||||
mcp: {
|
||||
title: 'MCP',
|
||||
@@ -2088,8 +2086,8 @@ const zhHans = {
|
||||
resetting: '重置中...',
|
||||
resetSuccess: '密码重置成功,请登录',
|
||||
resetFailed: '密码重置失败,请检查邮箱和恢复密钥是否正确',
|
||||
backToLogin: '返回登录',
|
||||
secondFactorFailed: '验证失败,请检查验证码后重试',
|
||||
backToLogin: '返回登录',
|
||||
verifyWith: '验证方式',
|
||||
methodRecoveryKey: '恢复密钥',
|
||||
methodTotp: '身份验证器',
|
||||
@@ -2113,8 +2111,8 @@ const zhHans = {
|
||||
'将在请求时附加到请求体中,如 encoding_format, dimensions 等',
|
||||
},
|
||||
llm: {
|
||||
llmModels: '对话模型',
|
||||
description: '管理 LLM 模型,用于对话消息生成',
|
||||
llmModels: '对话模型',
|
||||
extraParametersDescription:
|
||||
'将在请求时附加到请求体中,如 max_tokens, temperature, top_p 等',
|
||||
},
|
||||
@@ -2397,6 +2395,8 @@ const zhHans = {
|
||||
arguments: '参数',
|
||||
result: '结果',
|
||||
noToolCalls: '未记录工具调用',
|
||||
showDetails: '查看详情',
|
||||
hideDetails: '隐藏详情',
|
||||
},
|
||||
tokens: {
|
||||
totalTokens: '总 Token 数',
|
||||
@@ -2711,8 +2711,8 @@ const zhHans = {
|
||||
advancedSettings: '高级设置',
|
||||
searchSkills: '搜索技能...',
|
||||
selectSkills: '选择技能',
|
||||
builtin: '内置',
|
||||
addSkill: '添加技能',
|
||||
builtin: '内置',
|
||||
importFromGithub: '从 GitHub 安装技能',
|
||||
createManually: '手动创建',
|
||||
uploadZip: '上传 ZIP 包',
|
||||
@@ -2983,5 +2983,4 @@ const zhHans = {
|
||||
invalidPage: '无效的插件页面',
|
||||
},
|
||||
};
|
||||
|
||||
export default zhHans;
|
||||
|
||||
+521
-540
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user