mirror of
https://github.com/lobehub/lobehub.git
synced 2026-03-27 13:29:15 +07:00
✨ feat: support mcp plugin install from web (#8680)
* refactor modal * improve mcp plugin display * fix marketplace modal * refactor install modal * support official install * fix types * clean * clean * clean * fix types * fix protocol condition * update state
This commit is contained in:
@@ -1,6 +1,5 @@
|
||||
---
|
||||
description: i18n workflow and troubleshooting
|
||||
globs:
|
||||
globs: *.tsx
|
||||
alwaysApply: false
|
||||
---
|
||||
# LobeChat 国际化指南
|
||||
|
||||
@@ -11,6 +11,16 @@ console.log(`🚄 Build Version ${packageJSON.version}, Channel: ${channel}`);
|
||||
const isNightly = channel === 'nightly';
|
||||
const isBeta = packageJSON.name.includes('beta');
|
||||
|
||||
// 根据版本类型确定协议 scheme
|
||||
const getProtocolScheme = () => {
|
||||
if (isNightly) return 'lobehub-nightly';
|
||||
if (isBeta) return 'lobehub-beta';
|
||||
|
||||
return 'lobehub';
|
||||
};
|
||||
|
||||
const protocolScheme = getProtocolScheme();
|
||||
|
||||
/**
|
||||
* @type {import('electron-builder').Configuration}
|
||||
* @see https://www.electron.build/configuration
|
||||
@@ -60,6 +70,12 @@ const config = {
|
||||
compression: 'maximum',
|
||||
entitlementsInherit: 'build/entitlements.mac.plist',
|
||||
extendInfo: {
|
||||
CFBundleURLTypes: [
|
||||
{
|
||||
CFBundleURLName: 'LobeHub Protocol',
|
||||
CFBundleURLSchemes: [protocolScheme],
|
||||
},
|
||||
],
|
||||
NSCameraUsageDescription: "Application requests access to the device's camera.",
|
||||
NSDocumentsFolderUsageDescription:
|
||||
"Application requests access to the user's Documents folder.",
|
||||
@@ -91,6 +107,12 @@ const config = {
|
||||
uninstallDisplayName: '${productName}',
|
||||
uninstallerSidebar: './build/nsis-sidebar.bmp',
|
||||
},
|
||||
protocols: [
|
||||
{
|
||||
name: 'LobeHub Protocol',
|
||||
schemes: [protocolScheme],
|
||||
},
|
||||
],
|
||||
publish: [
|
||||
{
|
||||
owner: 'lobehub',
|
||||
|
||||
153
apps/desktop/src/main/controllers/McpInstallCtr.ts
Normal file
153
apps/desktop/src/main/controllers/McpInstallCtr.ts
Normal file
@@ -0,0 +1,153 @@
|
||||
import { createLogger } from '@/utils/logger';
|
||||
|
||||
import { ControllerModule, createProtocolHandler } from '.';
|
||||
import { McpSchema } from '../types/protocol';
|
||||
|
||||
const logger = createLogger('controllers:McpInstallCtr');
|
||||
|
||||
const protocolHandler = createProtocolHandler('plugin');
|
||||
|
||||
/**
|
||||
* 验证 MCP Schema 对象结构
|
||||
*/
|
||||
function validateMcpSchema(schema: any): schema is McpSchema {
|
||||
if (!schema || typeof schema !== 'object') return false;
|
||||
|
||||
// 必填字段验证
|
||||
if (typeof schema.identifier !== 'string' || !schema.identifier) return false;
|
||||
if (typeof schema.name !== 'string' || !schema.name) return false;
|
||||
if (typeof schema.author !== 'string' || !schema.author) return false;
|
||||
if (typeof schema.description !== 'string' || !schema.description) return false;
|
||||
if (typeof schema.version !== 'string' || !schema.version) return false;
|
||||
|
||||
// 可选字段验证
|
||||
if (schema.homepage !== undefined && typeof schema.homepage !== 'string') return false;
|
||||
if (schema.icon !== undefined && typeof schema.icon !== 'string') return false;
|
||||
|
||||
// config 字段验证
|
||||
if (!schema.config || typeof schema.config !== 'object') return false;
|
||||
const config = schema.config;
|
||||
|
||||
if (config.type === 'stdio') {
|
||||
if (typeof config.command !== 'string' || !config.command) return false;
|
||||
if (config.args !== undefined && !Array.isArray(config.args)) return false;
|
||||
if (config.env !== undefined && typeof config.env !== 'object') return false;
|
||||
} else if (config.type === 'http') {
|
||||
if (typeof config.url !== 'string' || !config.url) return false;
|
||||
try {
|
||||
new URL(config.url); // 验证URL格式
|
||||
} catch {
|
||||
return false;
|
||||
}
|
||||
if (config.headers !== undefined && typeof config.headers !== 'object') return false;
|
||||
} else {
|
||||
return false; // 未知的 config type
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
interface McpInstallParams {
|
||||
id: string;
|
||||
marketId?: string;
|
||||
schema?: any;
|
||||
}
|
||||
|
||||
/**
|
||||
* MCP 插件安装控制器
|
||||
* 负责处理 MCP 插件安装流程
|
||||
*/
|
||||
export default class McpInstallController extends ControllerModule {
|
||||
/**
|
||||
* 处理 MCP 插件安装请求
|
||||
* @param parsedData 解析后的协议数据
|
||||
* @returns 是否处理成功
|
||||
*/
|
||||
@protocolHandler('install')
|
||||
public async handleInstallRequest(parsedData: McpInstallParams): Promise<boolean> {
|
||||
try {
|
||||
// 从参数中提取必需字段
|
||||
const { id, schema: schemaParam, marketId } = parsedData;
|
||||
|
||||
if (!id) {
|
||||
logger.warn(`🔧 [McpInstall] Missing required MCP parameters:`, {
|
||||
id: !!id,
|
||||
});
|
||||
return false;
|
||||
}
|
||||
|
||||
// 映射协议来源
|
||||
|
||||
const isOfficialMarket = marketId === 'lobehub';
|
||||
|
||||
// 对于官方市场,schema 是可选的;对于第三方市场,schema 是必需的
|
||||
if (!isOfficialMarket && !schemaParam) {
|
||||
logger.warn(`🔧 [McpInstall] Schema is required for third-party marketplace:`, {
|
||||
marketId,
|
||||
});
|
||||
return false;
|
||||
}
|
||||
|
||||
let mcpSchema: McpSchema | undefined;
|
||||
|
||||
// 如果提供了 schema 参数,则解析和验证
|
||||
if (schemaParam) {
|
||||
try {
|
||||
mcpSchema = JSON.parse(schemaParam);
|
||||
} catch (error) {
|
||||
logger.error(`🔧 [McpInstall] Failed to parse MCP schema:`, error);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!validateMcpSchema(mcpSchema)) {
|
||||
logger.error(`🔧 [McpInstall] Invalid MCP Schema structure`);
|
||||
return false;
|
||||
}
|
||||
|
||||
// 验证 identifier 与 id 参数匹配
|
||||
if (mcpSchema.identifier !== id) {
|
||||
logger.error(`🔧 [McpInstall] Schema identifier does not match URL id parameter:`, {
|
||||
schemaId: mcpSchema.identifier,
|
||||
urlId: id,
|
||||
});
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
logger.debug(`🔧 [McpInstall] MCP install request validated:`, {
|
||||
hasSchema: !!mcpSchema,
|
||||
marketId,
|
||||
pluginId: id,
|
||||
pluginName: mcpSchema?.name || 'Unknown',
|
||||
pluginVersion: mcpSchema?.version || 'Unknown',
|
||||
});
|
||||
|
||||
// 广播安装请求到前端
|
||||
const installRequest = {
|
||||
marketId,
|
||||
pluginId: id,
|
||||
schema: mcpSchema,
|
||||
};
|
||||
|
||||
logger.debug(`🔧 [McpInstall] Broadcasting install request:`, {
|
||||
hasSchema: !!installRequest.schema,
|
||||
marketId: installRequest.marketId,
|
||||
pluginId: installRequest.pluginId,
|
||||
pluginName: installRequest.schema?.name || 'Unknown',
|
||||
});
|
||||
|
||||
// 通过应用实例广播到前端
|
||||
if (this.app?.browserManager) {
|
||||
this.app.browserManager.broadcastToWindow('chat', 'mcpInstallRequest', installRequest);
|
||||
logger.debug(`🔧 [McpInstall] Install request broadcasted successfully`);
|
||||
return true;
|
||||
} else {
|
||||
logger.error(`🔧 [McpInstall] App or browserManager not available`);
|
||||
return false;
|
||||
}
|
||||
} catch (error) {
|
||||
logger.error(`🔧 [McpInstall] Error processing install request:`, error);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -44,11 +44,30 @@ const shortcutDecorator = (name: string) => (target: any, methodName: string, de
|
||||
*/
|
||||
export const shortcut = (method: ShortcutActionType) => shortcutDecorator(method);
|
||||
|
||||
const protocolDecorator =
|
||||
(urlType: string, action: string) => (target: any, methodName: string, descriptor?: any) => {
|
||||
const handlers = IoCContainer.protocolHandlers.get(target.constructor) || [];
|
||||
handlers.push({ action, methodName, urlType });
|
||||
|
||||
IoCContainer.protocolHandlers.set(target.constructor, handlers);
|
||||
|
||||
return descriptor;
|
||||
};
|
||||
|
||||
/**
|
||||
* Protocol handler decorator
|
||||
* @param urlType 协议URL类型 (如: 'plugin')
|
||||
* @param action 操作类型 (如: 'install')
|
||||
*/
|
||||
export const createProtocolHandler = (urlType: string) => (action: string) =>
|
||||
protocolDecorator(urlType, action);
|
||||
|
||||
interface IControllerModule {
|
||||
afterAppReady?(): void;
|
||||
app: App;
|
||||
beforeAppReady?(): void;
|
||||
}
|
||||
|
||||
export class ControllerModule implements IControllerModule {
|
||||
constructor(public app: App) {
|
||||
this.app = app;
|
||||
|
||||
@@ -16,6 +16,7 @@ import { CustomRequestHandler, createHandler } from '@/utils/next-electron-rsc';
|
||||
import { BrowserManager } from './browser/BrowserManager';
|
||||
import { I18nManager } from './infrastructure/I18nManager';
|
||||
import { IoCContainer } from './infrastructure/IoCContainer';
|
||||
import { ProtocolManager } from './infrastructure/ProtocolManager';
|
||||
import { StaticFileServerManager } from './infrastructure/StaticFileServerManager';
|
||||
import { StoreManager } from './infrastructure/StoreManager';
|
||||
import { UpdaterManager } from './infrastructure/UpdaterManager';
|
||||
@@ -27,6 +28,7 @@ const logger = createLogger('core:App');
|
||||
|
||||
export type IPCEventMap = Map<string, { controller: any; methodName: string }>;
|
||||
export type ShortcutMethodMap = Map<string, () => Promise<void>>;
|
||||
export type ProtocolHandlerMap = Map<string, { controller: any; methodName: string }>;
|
||||
|
||||
type Class<T> = new (...args: any[]) => T;
|
||||
|
||||
@@ -43,6 +45,7 @@ export class App {
|
||||
shortcutManager: ShortcutManager;
|
||||
trayManager: TrayManager;
|
||||
staticFileServerManager: StaticFileServerManager;
|
||||
protocolManager: ProtocolManager;
|
||||
chromeFlags: string[] = ['OverlayScrollbar', 'FluentOverlayScrollbar', 'FluentScrollbar'];
|
||||
|
||||
/**
|
||||
@@ -100,11 +103,15 @@ export class App {
|
||||
this.shortcutManager = new ShortcutManager(this);
|
||||
this.trayManager = new TrayManager(this);
|
||||
this.staticFileServerManager = new StaticFileServerManager(this);
|
||||
this.protocolManager = new ProtocolManager(this);
|
||||
|
||||
// register the schema to interceptor url
|
||||
// it should register before app ready
|
||||
this.registerNextHandler();
|
||||
|
||||
// initialize protocol handlers
|
||||
this.protocolManager.initialize();
|
||||
|
||||
// 统一处理 before-quit 事件
|
||||
app.on('before-quit', this.handleBeforeQuit);
|
||||
|
||||
@@ -160,6 +167,10 @@ export class App {
|
||||
});
|
||||
|
||||
app.on('activate', this.onActivate);
|
||||
|
||||
// Process any pending protocol URLs after everything is ready
|
||||
await this.protocolManager.processPendingUrls();
|
||||
|
||||
logger.info('Application bootstrap completed');
|
||||
};
|
||||
|
||||
@@ -171,6 +182,32 @@ export class App {
|
||||
return this.controllers.get(controllerClass);
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle protocol request by dispatching to registered handlers
|
||||
* @param urlType 协议URL类型 (如: 'plugin')
|
||||
* @param action 操作类型 (如: 'install')
|
||||
* @param data 解析后的协议数据
|
||||
* @returns 是否成功处理
|
||||
*/
|
||||
async handleProtocolRequest(urlType: string, action: string, data: any): Promise<boolean> {
|
||||
const key = `${urlType}:${action}`;
|
||||
const handler = this.protocolHandlerMap.get(key);
|
||||
|
||||
if (!handler) {
|
||||
logger.warn(`No protocol handler found for ${key}`);
|
||||
return false;
|
||||
}
|
||||
|
||||
try {
|
||||
logger.debug(`Dispatching protocol request ${key} to controller`);
|
||||
const result = await handler.controller[handler.methodName](data);
|
||||
return result !== false; // 假设控制器返回 false 表示处理失败
|
||||
} catch (error) {
|
||||
logger.error(`Error handling protocol request ${key}:`, error);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
private onActivate = () => {
|
||||
logger.debug('Application activated');
|
||||
this.browserManager.showMainWindow();
|
||||
@@ -233,6 +270,7 @@ export class App {
|
||||
private ipcClientEventMap: IPCEventMap = new Map();
|
||||
private ipcServerEventMap: IPCEventMap = new Map();
|
||||
shortcutMethodMap: ShortcutMethodMap = new Map();
|
||||
protocolHandlerMap: ProtocolHandlerMap = new Map();
|
||||
|
||||
/**
|
||||
* use in next router interceptor in prod browser render
|
||||
@@ -308,6 +346,14 @@ export class App {
|
||||
controller[shortcut.methodName]();
|
||||
});
|
||||
});
|
||||
|
||||
IoCContainer.protocolHandlers.get(ControllerClass)?.forEach((handler) => {
|
||||
const key = `${handler.urlType}:${handler.action}`;
|
||||
this.protocolHandlerMap.set(key, {
|
||||
controller,
|
||||
methodName: handler.methodName,
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
private addService = (ServiceClass: IServiceModule) => {
|
||||
|
||||
@@ -8,5 +8,9 @@ export class IoCContainer {
|
||||
> = new WeakMap();
|
||||
|
||||
static shortcuts: WeakMap<any, { methodName: string; name: string }[]> = new WeakMap();
|
||||
|
||||
static protocolHandlers: WeakMap<any, { action: string; methodName: string; urlType: string }[]> =
|
||||
new WeakMap();
|
||||
|
||||
init() {}
|
||||
}
|
||||
|
||||
256
apps/desktop/src/main/core/infrastructure/ProtocolManager.ts
Normal file
256
apps/desktop/src/main/core/infrastructure/ProtocolManager.ts
Normal file
@@ -0,0 +1,256 @@
|
||||
import { app } from 'electron';
|
||||
|
||||
import { isDev } from '@/const/env';
|
||||
import { createLogger } from '@/utils/logger';
|
||||
import { getProtocolScheme, parseProtocolUrl } from '@/utils/protocol';
|
||||
|
||||
import { App } from '../App';
|
||||
|
||||
// Create logger
|
||||
const logger = createLogger('core:ProtocolManager');
|
||||
|
||||
/**
|
||||
* Protocol handler manager for custom URI schemes
|
||||
*/
|
||||
export class ProtocolManager {
|
||||
private app: App;
|
||||
private protocolScheme: string;
|
||||
private pendingUrls: string[] = [];
|
||||
|
||||
constructor(app: App) {
|
||||
logger.debug('Initializing ProtocolManager');
|
||||
this.app = app;
|
||||
this.protocolScheme = getProtocolScheme();
|
||||
logger.info(`ProtocolManager initialized for scheme: ${this.protocolScheme}://`);
|
||||
}
|
||||
|
||||
/**
|
||||
* Register protocol handlers and set up event listeners
|
||||
*/
|
||||
public initialize(): void {
|
||||
logger.debug('Setting up protocol handlers');
|
||||
|
||||
this.registerProtocolHandlers();
|
||||
this.setupEventListeners();
|
||||
|
||||
logger.debug('Protocol initialization completed');
|
||||
}
|
||||
|
||||
/**
|
||||
* Register the application as default protocol client
|
||||
*/
|
||||
private registerProtocolHandlers(): void {
|
||||
logger.debug(`🔗 [Protocol] Registering protocol handlers for ${this.protocolScheme}://`);
|
||||
|
||||
// Debug info about current app
|
||||
logger.debug(`🔗 [Protocol] App name: ${app.name}`);
|
||||
logger.debug(`🔗 [Protocol] App path: ${app.getPath('exe')}`);
|
||||
logger.debug(`🔗 [Protocol] Is development: ${isDev}`);
|
||||
logger.debug(`🔗 [Protocol] Process argv[0]: ${process.argv[0]}`);
|
||||
|
||||
// Check if already registered
|
||||
const isCurrentlyRegistered = app.isDefaultProtocolClient(this.protocolScheme);
|
||||
logger.debug(`🔗 [Protocol] Is currently default protocol client: ${isCurrentlyRegistered}`);
|
||||
|
||||
// Register as default protocol client
|
||||
let registrationResult: boolean;
|
||||
|
||||
if (isDev) {
|
||||
// In development, use explicit parameters to ensure proper registration
|
||||
const appPath = process.cwd(); // Current working directory (our app)
|
||||
logger.debug(`🔗 [Protocol] Development mode: using explicit registration parameters`);
|
||||
logger.debug(`🔗 [Protocol] Executable path: ${process.execPath}`);
|
||||
logger.debug(`🔗 [Protocol] App path: ${appPath}`);
|
||||
logger.debug(`🔗 [Protocol] Arguments: ${JSON.stringify([appPath])}`);
|
||||
|
||||
registrationResult = app.setAsDefaultProtocolClient(this.protocolScheme, process.execPath, [
|
||||
appPath,
|
||||
]);
|
||||
} else {
|
||||
// In production, use simple registration
|
||||
registrationResult = app.setAsDefaultProtocolClient(this.protocolScheme);
|
||||
}
|
||||
|
||||
logger.debug(`🔗 [Protocol] Registration result: ${registrationResult}`);
|
||||
|
||||
if (!registrationResult) {
|
||||
logger.error(
|
||||
`🔗 [Protocol] Failed to register as default protocol client for ${this.protocolScheme}://`,
|
||||
);
|
||||
} else {
|
||||
logger.debug(`🔗 [Protocol] Successfully registered ${this.protocolScheme}:// protocol`);
|
||||
}
|
||||
|
||||
// Verify registration
|
||||
const isRegisteredAfter = app.isDefaultProtocolClient(this.protocolScheme);
|
||||
logger.debug(`🔗 [Protocol] Final registration status: ${isRegisteredAfter}`);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set up protocol event listeners
|
||||
*/
|
||||
private setupEventListeners(): void {
|
||||
// Handle protocol URL from cold start (Windows/Linux)
|
||||
const protocolUrl = this.getProtocolUrlFromArgs(process.argv);
|
||||
if (protocolUrl) {
|
||||
logger.debug(`🔗 [Protocol] Found protocol URL from cold start: ${protocolUrl}`);
|
||||
this.pendingUrls.push(protocolUrl);
|
||||
}
|
||||
|
||||
// Handle protocol URL from macOS open-url event
|
||||
app.on('open-url', (event, url) => {
|
||||
event.preventDefault();
|
||||
logger.debug(`🔗 [Protocol] Received URL from open-url event: ${url}`);
|
||||
logger.debug(`🔗 [Protocol] App ready state: ${app.isReady()}`);
|
||||
logger.debug(`🔗 [Protocol] Event prevented, processing URL...`);
|
||||
this.handleProtocolUrl(url);
|
||||
});
|
||||
|
||||
// Handle protocol URL from second instance (Windows/Linux)
|
||||
app.on('second-instance', (event, commandLine) => {
|
||||
const url = this.getProtocolUrlFromArgs(commandLine);
|
||||
if (url) {
|
||||
logger.debug(`🔗 [Protocol] Received protocol URL from second instance: ${url}`);
|
||||
this.handleProtocolUrl(url);
|
||||
}
|
||||
// Show main window when second instance is triggered
|
||||
this.app.browserManager.showMainWindow();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Extract protocol URL from command line arguments
|
||||
*/
|
||||
private getProtocolUrlFromArgs(args: string[]): string | null {
|
||||
const protocolPrefix = `${this.protocolScheme}://`;
|
||||
|
||||
logger.debug(`🔗 [Protocol] Searching for protocol URLs in args: ${JSON.stringify(args)}`);
|
||||
logger.debug(`🔗 [Protocol] Looking for prefix: ${protocolPrefix}`);
|
||||
|
||||
for (const arg of args) {
|
||||
if (arg.startsWith(protocolPrefix)) {
|
||||
logger.debug(`🔗 [Protocol] Found protocol URL in args: ${arg}`);
|
||||
return arg;
|
||||
}
|
||||
}
|
||||
logger.debug(`🔗 [Protocol] No protocol URL found in args`);
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle protocol URL - either immediately or store for later processing
|
||||
*/
|
||||
private handleProtocolUrl(url: string): void {
|
||||
try {
|
||||
logger.debug(`🔗 [Protocol] handleProtocolUrl called with: ${url}`);
|
||||
logger.debug(`🔗 [Protocol] App ready state: ${app.isReady()}`);
|
||||
logger.debug(`🔗 [Protocol] Current pending URLs count: ${this.pendingUrls.length}`);
|
||||
|
||||
if (!app.isReady()) {
|
||||
// App not ready yet, store for later processing
|
||||
logger.debug('🔗 [Protocol] App not ready, storing protocol URL for later processing');
|
||||
this.pendingUrls.push(url);
|
||||
logger.debug(`🔗 [Protocol] Pending URLs after push: ${this.pendingUrls.length}`);
|
||||
return;
|
||||
}
|
||||
|
||||
// App is ready, process immediately
|
||||
logger.debug('🔗 [Protocol] App is ready, processing URL immediately');
|
||||
this.processProtocolUrl(url);
|
||||
} catch (error) {
|
||||
logger.error('🔗 [Protocol] Failed to handle protocol URL:', error);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Process protocol URL by showing main window and sending to renderer
|
||||
*/
|
||||
private async processProtocolUrl(url: string): Promise<void> {
|
||||
try {
|
||||
logger.debug(`🔗 [Protocol] processProtocolUrl called with: ${url}`);
|
||||
|
||||
// Basic URL validation - just check if it's our protocol
|
||||
if (!url.startsWith(`${this.protocolScheme}://`)) {
|
||||
logger.warn(`🔗 [Protocol] Invalid protocol scheme in URL: ${url}`);
|
||||
return;
|
||||
}
|
||||
|
||||
// Show main window
|
||||
logger.debug('🔗 [Protocol] Showing main window...');
|
||||
this.app.browserManager.showMainWindow();
|
||||
|
||||
// Parse protocol URL to extract urlType and action
|
||||
const parsed = parseProtocolUrl(url);
|
||||
|
||||
if (!parsed) {
|
||||
logger.warn(`🔗 [Protocol] Failed to parse protocol URL: ${url}`);
|
||||
return;
|
||||
}
|
||||
|
||||
logger.debug(
|
||||
`🔗 [Protocol] Parsed URL - type: ${parsed.urlType}, action: ${parsed.action}, data: %s`,
|
||||
parsed.params,
|
||||
);
|
||||
|
||||
// Dispatch to registered protocol handlers via App with parsed data
|
||||
logger.debug('🔗 [Protocol] Dispatching to protocol handlers...');
|
||||
const handled = await this.app.handleProtocolRequest(
|
||||
parsed.urlType,
|
||||
parsed.action,
|
||||
parsed.params,
|
||||
);
|
||||
|
||||
if (handled) {
|
||||
logger.debug('🔗 [Protocol] Protocol URL processed successfully by handler');
|
||||
} else {
|
||||
logger.warn(
|
||||
`🔗 [Protocol] No handler found for protocol: ${parsed.urlType}:${parsed.action}`,
|
||||
);
|
||||
}
|
||||
} catch (error) {
|
||||
logger.error('🔗 [Protocol] Failed to process protocol URL:', error);
|
||||
logger.error('🔗 [Protocol] Error details:', error);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Process any pending protocol URLs after app is ready
|
||||
*/
|
||||
public async processPendingUrls(): Promise<void> {
|
||||
logger.debug(`🔗 [Protocol] processPendingUrls called`);
|
||||
logger.debug(`🔗 [Protocol] Pending URLs count: ${this.pendingUrls.length}`);
|
||||
|
||||
if (this.pendingUrls.length === 0) {
|
||||
logger.debug(`🔗 [Protocol] No pending URLs to process`);
|
||||
return;
|
||||
}
|
||||
|
||||
logger.debug(
|
||||
`🔗 [Protocol] Processing ${this.pendingUrls.length} pending protocol URLs:`,
|
||||
this.pendingUrls,
|
||||
);
|
||||
|
||||
for (const url of this.pendingUrls) {
|
||||
logger.debug(`🔗 [Protocol] Processing pending URL: ${url}`);
|
||||
await this.processProtocolUrl(url);
|
||||
}
|
||||
|
||||
// Clear pending URLs
|
||||
this.pendingUrls = [];
|
||||
logger.debug(`🔗 [Protocol] All pending URLs processed and cleared`);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get current protocol scheme
|
||||
*/
|
||||
public getScheme(): string {
|
||||
return this.protocolScheme;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if protocol is registered
|
||||
*/
|
||||
public isRegistered(): boolean {
|
||||
return app.isDefaultProtocolClient(this.protocolScheme);
|
||||
}
|
||||
}
|
||||
60
apps/desktop/src/main/types/protocol.ts
Normal file
60
apps/desktop/src/main/types/protocol.ts
Normal file
@@ -0,0 +1,60 @@
|
||||
/**
|
||||
* MCP Schema - stdio 配置类型
|
||||
*/
|
||||
export interface McpStdioConfig {
|
||||
args?: string[];
|
||||
command: string;
|
||||
env?: Record<string, string>;
|
||||
type: 'stdio';
|
||||
}
|
||||
|
||||
/**
|
||||
* MCP Schema - http 配置类型
|
||||
*/
|
||||
export interface McpHttpConfig {
|
||||
headers?: Record<string, string>;
|
||||
type: 'http';
|
||||
url: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* MCP Schema 配置类型
|
||||
*/
|
||||
export type McpConfig = McpStdioConfig | McpHttpConfig;
|
||||
|
||||
/**
|
||||
* MCP Schema 对象
|
||||
* 符合 RFC 0001 定义
|
||||
*/
|
||||
export interface McpSchema {
|
||||
/** 插件作者 */
|
||||
author: string;
|
||||
/** 插件配置 */
|
||||
config: McpConfig;
|
||||
/** 插件描述 */
|
||||
description: string;
|
||||
/** 插件主页 */
|
||||
homepage?: string;
|
||||
/** 插件图标 */
|
||||
icon?: string;
|
||||
/** 插件唯一标识符,必须与URL中的id参数匹配 */
|
||||
identifier: string;
|
||||
/** 插件名称 */
|
||||
name: string;
|
||||
/** 插件版本 (semver) */
|
||||
version: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* 协议URL解析结果
|
||||
*/
|
||||
export interface ProtocolUrlParsed {
|
||||
/** 操作类型 (如: 'install') */
|
||||
action: string;
|
||||
/** 原始URL */
|
||||
originalUrl: string;
|
||||
/** 解析后的所有查询参数 */
|
||||
params: Record<string, string>;
|
||||
/** URL类型 (如: 'plugin') */
|
||||
urlType: string;
|
||||
}
|
||||
203
apps/desktop/src/main/utils/__tests__/protocol.test.ts
Normal file
203
apps/desktop/src/main/utils/__tests__/protocol.test.ts
Normal file
@@ -0,0 +1,203 @@
|
||||
import { describe, expect, it } from 'vitest';
|
||||
|
||||
import { McpSchema } from '../../types/protocol';
|
||||
import { generateRFCProtocolUrl, parseProtocolUrl } from '../protocol';
|
||||
|
||||
describe('Protocol', () => {
|
||||
describe('generateRFCProtocolUrl', () => {
|
||||
it('should generate valid RFC protocol URL for stdio type', () => {
|
||||
const schema: McpSchema = {
|
||||
identifier: 'edgeone-mcp',
|
||||
name: 'EdgeOne MCP',
|
||||
author: 'Higress Team',
|
||||
description: 'EdgeOne API integration for LobeChat',
|
||||
version: '1.0.0',
|
||||
homepage: 'https://github.com/higress/edgeone-mcp',
|
||||
config: {
|
||||
type: 'stdio',
|
||||
command: 'npx',
|
||||
args: ['-y', '@higress/edgeone-mcp'],
|
||||
env: { NODE_ENV: 'production' },
|
||||
},
|
||||
};
|
||||
|
||||
const url = generateRFCProtocolUrl({
|
||||
id: 'edgeone-mcp',
|
||||
schema,
|
||||
marketId: 'higress',
|
||||
});
|
||||
|
||||
expect(url).toMatch(/^lobehub:\/\/plugin\/install\?/);
|
||||
expect(url).toContain('id=edgeone-mcp');
|
||||
expect(url).toContain('marketId=higress');
|
||||
|
||||
// Verify schema is URL encoded
|
||||
const urlObj = new URL(url);
|
||||
const schemaParam = urlObj.searchParams.get('schema');
|
||||
expect(schemaParam).toBeTruthy();
|
||||
// URLSearchParams.get() 自动解码,所以这里得到的是解码后的JSON
|
||||
expect(schemaParam).toContain('"'); // 解码后的引号
|
||||
});
|
||||
|
||||
it('should generate valid RFC protocol URL for http type', () => {
|
||||
const schema: McpSchema = {
|
||||
identifier: 'awesome-api',
|
||||
name: 'Awesome API',
|
||||
author: 'Smithery',
|
||||
description: 'Awesome API integration',
|
||||
version: '2.0.0',
|
||||
config: {
|
||||
type: 'http',
|
||||
url: 'https://api.smithery.ai/v1/mcp',
|
||||
headers: {
|
||||
'Authorization': 'Bearer token123',
|
||||
'X-Custom-Header': 'value',
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
const url = generateRFCProtocolUrl({
|
||||
id: 'awesome-api',
|
||||
schema,
|
||||
marketId: 'smithery',
|
||||
});
|
||||
|
||||
expect(url).toMatch(/^lobehub:\/\/plugin\/install\?/);
|
||||
expect(url).toContain('id=awesome-api');
|
||||
expect(url).toContain('marketId=smithery');
|
||||
});
|
||||
|
||||
it('should throw error if schema identifier does not match id', () => {
|
||||
const schema: McpSchema = {
|
||||
identifier: 'wrong-id',
|
||||
name: 'Test',
|
||||
author: 'Test',
|
||||
description: 'Test',
|
||||
version: '1.0.0',
|
||||
config: { type: 'stdio', command: 'test' },
|
||||
};
|
||||
|
||||
expect(() => generateRFCProtocolUrl({ id: 'different-id', schema })).toThrowError(
|
||||
'Schema identifier must match the id parameter',
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
describe('parseProtocolUrl', () => {
|
||||
it('should parse RFC protocol URL correctly', () => {
|
||||
const schema: McpSchema = {
|
||||
identifier: 'test-mcp',
|
||||
name: 'Test MCP',
|
||||
author: 'Test Author',
|
||||
description: 'Test Description',
|
||||
version: '1.0.0',
|
||||
config: {
|
||||
type: 'stdio',
|
||||
command: 'test',
|
||||
args: ['arg1', 'arg2'],
|
||||
},
|
||||
};
|
||||
|
||||
const url = generateRFCProtocolUrl({
|
||||
id: 'test-mcp',
|
||||
schema,
|
||||
marketId: 'lobehub',
|
||||
});
|
||||
|
||||
const parsed = parseProtocolUrl(url);
|
||||
|
||||
expect(parsed).toBeTruthy();
|
||||
expect(parsed?.urlType).toBe('plugin');
|
||||
expect(parsed?.action).toBe('install');
|
||||
expect(parsed?.params.type).toBe('mcp');
|
||||
expect(parsed?.params.id).toBe('test-mcp');
|
||||
expect(parsed?.params.marketId).toBe('lobehub');
|
||||
expect(parsed?.originalUrl).toBe(url);
|
||||
|
||||
// 验证 schema 可以被解析
|
||||
const parsedSchema = JSON.parse(parsed?.params.schema || '{}');
|
||||
expect(parsedSchema).toEqual(schema);
|
||||
});
|
||||
|
||||
it('should return null for invalid protocol', () => {
|
||||
const result = parseProtocolUrl('http://example.com');
|
||||
expect(result).toBeNull();
|
||||
});
|
||||
|
||||
it('should parse URLs with any action', () => {
|
||||
const result = parseProtocolUrl('lobehub://plugin/configure?id=test');
|
||||
expect(result).toBeTruthy();
|
||||
expect(result?.urlType).toBe('plugin');
|
||||
expect(result?.action).toBe('configure');
|
||||
expect(result?.params.id).toBe('test');
|
||||
});
|
||||
|
||||
it('should parse URLs with any query parameters', () => {
|
||||
const result = parseProtocolUrl('lobehub://plugin/install?custom=value&another=param');
|
||||
expect(result).toBeTruthy();
|
||||
expect(result?.urlType).toBe('plugin');
|
||||
expect(result?.action).toBe('install');
|
||||
expect(result?.params.custom).toBe('value');
|
||||
expect(result?.params.another).toBe('param');
|
||||
});
|
||||
|
||||
it('should handle URLs without query parameters', () => {
|
||||
const result = parseProtocolUrl('lobehub://plugin/install');
|
||||
expect(result).toBeTruthy();
|
||||
expect(result?.urlType).toBe('plugin');
|
||||
expect(result?.action).toBe('install');
|
||||
expect(Object.keys(result?.params || {})).toHaveLength(0);
|
||||
});
|
||||
|
||||
it('should return null for URLs without action', () => {
|
||||
const result = parseProtocolUrl('lobehub://plugin/');
|
||||
expect(result).toBeNull();
|
||||
});
|
||||
});
|
||||
|
||||
describe('URL encoding/decoding', () => {
|
||||
it('should handle special characters correctly', () => {
|
||||
const schema: McpSchema = {
|
||||
identifier: 'special-chars',
|
||||
name: '特殊字符 ñ 🚀',
|
||||
author: 'Test <test@example.com>',
|
||||
description: 'Description with "quotes" and \'apostrophes\'',
|
||||
version: '1.0.0',
|
||||
config: {
|
||||
type: 'stdio',
|
||||
command: 'cmd',
|
||||
args: ['arg with spaces', 'arg/with/slashes'],
|
||||
},
|
||||
};
|
||||
|
||||
const url = generateRFCProtocolUrl({ id: 'special-chars', schema });
|
||||
const parsed = parseProtocolUrl(url);
|
||||
|
||||
expect(parsed).toBeTruthy();
|
||||
expect(parsed?.params.id).toBe('special-chars');
|
||||
expect(parsed?.params.type).toBe('mcp');
|
||||
|
||||
// 验证 schema 可以正确解析
|
||||
const parsedSchema = JSON.parse(parsed?.params.schema || '{}');
|
||||
expect(parsedSchema).toEqual(schema);
|
||||
});
|
||||
|
||||
it('should handle different protocol schemes', () => {
|
||||
const testCases = [
|
||||
'lobehub://plugin/install?test=value',
|
||||
'lobehub-dev://plugin/install?test=value',
|
||||
'lobehub-beta://plugin/install?test=value',
|
||||
'lobehub-nightly://plugin/install?test=value',
|
||||
];
|
||||
|
||||
testCases.forEach((url) => {
|
||||
const parsed = parseProtocolUrl(url);
|
||||
expect(parsed).toBeTruthy();
|
||||
expect(parsed?.urlType).toBe('plugin');
|
||||
expect(parsed?.action).toBe('install');
|
||||
expect(parsed?.params.test).toBe('value');
|
||||
expect(parsed?.originalUrl).toBe(url);
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
210
apps/desktop/src/main/utils/protocol.ts
Normal file
210
apps/desktop/src/main/utils/protocol.ts
Normal file
@@ -0,0 +1,210 @@
|
||||
import { app } from 'electron';
|
||||
|
||||
import { McpSchema, ProtocolUrlParsed } from '../types/protocol';
|
||||
|
||||
export type AppChannel = 'stable' | 'beta' | 'nightly';
|
||||
|
||||
export const getProtocolScheme = (): string => {
|
||||
// 在 Electron 环境中可以通过多种方式判断版本
|
||||
const bundleId = app.name;
|
||||
const appPath = app.getPath('exe');
|
||||
|
||||
// 通过 bundle identifier 判断
|
||||
if (bundleId?.toLowerCase().includes('nightly')) return 'lobehub-nightly';
|
||||
if (bundleId?.toLowerCase().includes('beta')) return 'lobehub-beta';
|
||||
if (bundleId?.includes('dev')) return 'lobehub-dev';
|
||||
|
||||
// 通过可执行文件路径判断
|
||||
if (appPath?.toLowerCase().includes('nightly')) return 'lobehub-nightly';
|
||||
if (appPath?.toLowerCase().includes('beta')) return 'lobehub-beta';
|
||||
if (appPath?.includes('dev')) return 'lobehub-dev';
|
||||
|
||||
return 'lobehub';
|
||||
};
|
||||
|
||||
export const getVersionInfo = (): { channel: AppChannel; protocolScheme: string } => {
|
||||
const protocolScheme = getProtocolScheme();
|
||||
|
||||
let appChannel: AppChannel = 'stable';
|
||||
if (protocolScheme.includes('nightly')) {
|
||||
appChannel = 'nightly';
|
||||
} else if (protocolScheme.includes('beta')) {
|
||||
appChannel = 'beta';
|
||||
}
|
||||
|
||||
return {
|
||||
channel: appChannel,
|
||||
protocolScheme,
|
||||
};
|
||||
};
|
||||
|
||||
/**
|
||||
* 验证 MCP Schema 对象结构
|
||||
* @param schema 待验证的对象
|
||||
* @returns 是否为有效的 MCP Schema
|
||||
*/
|
||||
function validateMcpSchema(schema: any): schema is McpSchema {
|
||||
if (!schema || typeof schema !== 'object') return false;
|
||||
|
||||
// 必填字段验证
|
||||
if (typeof schema.identifier !== 'string' || !schema.identifier) return false;
|
||||
if (typeof schema.name !== 'string' || !schema.name) return false;
|
||||
if (typeof schema.author !== 'string' || !schema.author) return false;
|
||||
if (typeof schema.description !== 'string' || !schema.description) return false;
|
||||
if (typeof schema.version !== 'string' || !schema.version) return false;
|
||||
|
||||
// 可选字段验证
|
||||
if (schema.homepage !== undefined && typeof schema.homepage !== 'string') return false;
|
||||
if (schema.icon !== undefined && typeof schema.icon !== 'string') return false;
|
||||
|
||||
// config 字段验证
|
||||
if (!schema.config || typeof schema.config !== 'object') return false;
|
||||
const config = schema.config;
|
||||
|
||||
if (config.type === 'stdio') {
|
||||
if (typeof config.command !== 'string' || !config.command) return false;
|
||||
if (config.args !== undefined && !Array.isArray(config.args)) return false;
|
||||
if (config.env !== undefined && typeof config.env !== 'object') return false;
|
||||
} else if (config.type === 'http') {
|
||||
if (typeof config.url !== 'string' || !config.url) return false;
|
||||
try {
|
||||
new URL(config.url); // 验证URL格式
|
||||
} catch {
|
||||
return false;
|
||||
}
|
||||
if (config.headers !== undefined && typeof config.headers !== 'object') return false;
|
||||
} else {
|
||||
return false; // 未知的 config type
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* 解析 lobehub:// 协议 URL (支持多版本协议)
|
||||
*
|
||||
* 支持的URL格式:
|
||||
* - lobehub://plugin/install?id=figma&schema=xxx&marketId=lobehub
|
||||
* - lobehub://plugin/configure?id=xxx&...
|
||||
* - lobehub-bet://plugin/install?id=figma&schema=xxx&marketId=lobehub
|
||||
* - lobehub-nightly://plugin/install?id=figma&schema=xxx&marketId=lobehub
|
||||
* - lobehub-dev://plugin/install?id=figma&schema=xxx&marketId=lobehub
|
||||
*
|
||||
* @param url 协议 URL
|
||||
* @returns 解析结果,包含基本结构和所有查询参数
|
||||
*/
|
||||
export const parseProtocolUrl = (url: string): ProtocolUrlParsed | null => {
|
||||
try {
|
||||
const parsedUrl = new URL(url);
|
||||
|
||||
// 支持多种协议 scheme
|
||||
const validProtocols = ['lobehub:', 'lobehub-dev:', 'lobehub-nightly:', 'lobehub-beta:'];
|
||||
if (!validProtocols.includes(parsedUrl.protocol)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
// 对于自定义协议,URL 解析后:
|
||||
// lobehub://plugin/install -> hostname: "plugin", pathname: "/install"
|
||||
const urlType = parsedUrl.hostname; // "plugin"
|
||||
const pathParts = parsedUrl.pathname.split('/').filter(Boolean); // ["install"]
|
||||
|
||||
if (pathParts.length < 1) {
|
||||
return null;
|
||||
}
|
||||
|
||||
const action = pathParts[0]; // "install"
|
||||
|
||||
// 解析所有查询参数
|
||||
const params: Record<string, string> = {};
|
||||
const searchParams = new URLSearchParams(parsedUrl.search);
|
||||
|
||||
for (const [key, value] of searchParams.entries()) {
|
||||
params[key] = value;
|
||||
}
|
||||
|
||||
return {
|
||||
action,
|
||||
originalUrl: url,
|
||||
params,
|
||||
urlType,
|
||||
};
|
||||
} catch (error) {
|
||||
console.error('Failed to parse protocol URL:', error);
|
||||
return null;
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* 生成符合 RFC 0001 的协议 URL
|
||||
*
|
||||
* @param params 协议参数
|
||||
* @returns 生成的协议URL
|
||||
*/
|
||||
export function generateRFCProtocolUrl(params: {
|
||||
/** 插件唯一标识符 */
|
||||
id: string;
|
||||
/** Marketplace ID */
|
||||
marketId?: string;
|
||||
/** MCP Schema 对象 */
|
||||
schema: McpSchema;
|
||||
/** 协议 scheme (默认: lobehub) */
|
||||
scheme?: string;
|
||||
}): string {
|
||||
const { id, schema, marketId, scheme = 'lobehub' } = params;
|
||||
|
||||
// 验证 schema.identifier 与 id 匹配
|
||||
if (schema.identifier !== id) {
|
||||
throw new Error('Schema identifier must match the id parameter');
|
||||
}
|
||||
|
||||
// 验证 schema 结构
|
||||
if (!validateMcpSchema(schema)) {
|
||||
throw new Error('Invalid MCP Schema structure');
|
||||
}
|
||||
|
||||
// 构建基础 URL
|
||||
const baseUrl = `${scheme}://plugin/install`;
|
||||
|
||||
// 构建查询参数
|
||||
const searchParams = new URLSearchParams();
|
||||
|
||||
// 必需参数
|
||||
searchParams.set('type', 'mcp');
|
||||
searchParams.set('id', id);
|
||||
|
||||
// 编码 schema - 直接传 JSON 字符串,让 URLSearchParams 自动编码
|
||||
const schemaJson = JSON.stringify(schema);
|
||||
searchParams.set('schema', schemaJson);
|
||||
|
||||
// 可选参数
|
||||
if (marketId) {
|
||||
searchParams.set('marketId', marketId);
|
||||
}
|
||||
|
||||
return `${baseUrl}?${searchParams.toString()}`;
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成协议 URL 示例
|
||||
*
|
||||
* @example
|
||||
* ```typescript
|
||||
* const url = generateRFCProtocolUrl({
|
||||
* id: 'edgeone-mcp',
|
||||
* schema: {
|
||||
* identifier: 'edgeone-mcp',
|
||||
* name: 'EdgeOne MCP',
|
||||
* author: 'Higress Team',
|
||||
* description: 'EdgeOne API integration for LobeChat',
|
||||
* version: '1.0.0',
|
||||
* config: {
|
||||
* type: 'stdio',
|
||||
* command: 'npx',
|
||||
* args: ['-y', '@higress/edgeone-mcp']
|
||||
* }
|
||||
* },
|
||||
* marketId: 'higress'
|
||||
* });
|
||||
* // Result: lobehub://plugin/install?id=edgeone-mcp&schema=%7B%22identifier%22%3A...&marketId=higress
|
||||
* ```
|
||||
*/
|
||||
@@ -1,20 +1,20 @@
|
||||
{
|
||||
"confirm": "تأكيد",
|
||||
"debug": {
|
||||
"arguments": "متغيرات الاستدعاء",
|
||||
"arguments": "معلمات الاستدعاء",
|
||||
"function_call": "استدعاء الدالة",
|
||||
"off": "إيقاف التصحيح",
|
||||
"on": "عرض معلومات استدعاء البرنامج المساعد",
|
||||
"payload": "حمولة البرنامج المساعد",
|
||||
"pluginState": "حالة المكون",
|
||||
"response": "الرد",
|
||||
"on": "عرض معلومات استدعاء الإضافة",
|
||||
"payload": "حمولة الإضافة",
|
||||
"pluginState": "حالة الإضافة",
|
||||
"response": "النتيجة المرجعة",
|
||||
"title": "تفاصيل الإضافة",
|
||||
"tool_call": "طلب استدعاء الأداة"
|
||||
},
|
||||
"detailModal": {
|
||||
"customPlugin": {
|
||||
"description": "يرجى الانتقال إلى صفحة التحرير لمشاهدة التفاصيل",
|
||||
"editBtn": "حرر الآن",
|
||||
"editBtn": "تحرير الآن",
|
||||
"title": "هذه إضافة مخصصة"
|
||||
},
|
||||
"emptyState": {
|
||||
@@ -22,48 +22,48 @@
|
||||
"title": "عرض تفاصيل الإضافة بعد التثبيت"
|
||||
},
|
||||
"info": {
|
||||
"description": "وصف واجهة برمجة التطبيقات",
|
||||
"name": "اسم واجهة برمجة التطبيقات"
|
||||
"description": "وصف API",
|
||||
"name": "اسم API"
|
||||
},
|
||||
"tabs": {
|
||||
"info": "قدرات البرنامج المساعد",
|
||||
"info": "قدرات الإضافة",
|
||||
"manifest": "ملف التثبيت",
|
||||
"settings": "الإعدادات"
|
||||
},
|
||||
"title": "تفاصيل البرنامج المساعد"
|
||||
"title": "تفاصيل الإضافة"
|
||||
},
|
||||
"dev": {
|
||||
"confirmDeleteDevPlugin": "سيتم حذف البرنامج المساعد المحلي، وبمجرد الحذف لن يمكن استعادته، هل ترغب في حذف هذا البرنامج المساعد؟",
|
||||
"confirmDeleteDevPlugin": "سيتم حذف هذه الإضافة المحلية ولن يمكن استعادتها، هل تريد حذف هذه الإضافة؟",
|
||||
"customParams": {
|
||||
"useProxy": {
|
||||
"label": "تثبيت عبر الوكيل (في حالة حدوث أخطاء الوصول عبر النطاقات المتقاطعة، يمكنك تجربة تفعيل هذا الخيار ثم إعادة التثبيت)"
|
||||
"label": "التثبيت عبر الوكيل (إذا واجهت خطأ وصول عبر النطاق، جرب تفعيل هذا الخيار ثم أعد التثبيت)"
|
||||
}
|
||||
},
|
||||
"deleteSuccess": "تم حذف البرنامج المساعد بنجاح",
|
||||
"deleteSuccess": "تم حذف الإضافة بنجاح",
|
||||
"manifest": {
|
||||
"identifier": {
|
||||
"desc": "العلامة المميزة للبرنامج المساعد",
|
||||
"desc": "المعرف الفريد للإضافة",
|
||||
"label": "المعرف"
|
||||
},
|
||||
"mode": {
|
||||
"mcp": "مكون MCP",
|
||||
"mcp": "إضافة MCP",
|
||||
"mcpExp": "تجريبي",
|
||||
"url": "رابط عبر الإنترنت"
|
||||
"url": "رابط مباشر"
|
||||
},
|
||||
"name": {
|
||||
"desc": "عنوان البرنامج المساعد",
|
||||
"desc": "عنوان الإضافة",
|
||||
"label": "العنوان",
|
||||
"placeholder": "محرك البحث"
|
||||
}
|
||||
},
|
||||
"mcp": {
|
||||
"advanced": {
|
||||
"title": "الإعدادات المتقدمة"
|
||||
"title": "إعدادات متقدمة"
|
||||
},
|
||||
"args": {
|
||||
"desc": "قائمة المعلمات المرسلة إلى الأمر المنفذ، عادةً ما يتم إدخال اسم خادم MCP هنا، أو مسار البرنامج النصي للتشغيل",
|
||||
"desc": "قائمة المعلمات الممررة لأمر التنفيذ، عادةً هنا يتم إدخال اسم خادم MCP أو مسار سكريبت التشغيل",
|
||||
"label": "معلمات الأمر",
|
||||
"placeholder": "على سبيل المثال: --port 8080 --debug",
|
||||
"placeholder": "مثال: mcp-hello-world",
|
||||
"required": "يرجى إدخال معلمات التشغيل"
|
||||
},
|
||||
"auth": {
|
||||
@@ -83,171 +83,171 @@
|
||||
"label": "أيقونة الإضافة"
|
||||
},
|
||||
"command": {
|
||||
"desc": "الملف القابل للتنفيذ أو البرنامج النصي المستخدم لبدء ملحق MCP STDIO",
|
||||
"desc": "الملف التنفيذي أو السكريبت المستخدم لتشغيل خادم MCP STDIO",
|
||||
"label": "الأمر",
|
||||
"placeholder": "على سبيل المثال: python main.py أو /path/to/executable",
|
||||
"placeholder": "مثال: npx / uv / docker إلخ",
|
||||
"required": "يرجى إدخال أمر التشغيل"
|
||||
},
|
||||
"desc": {
|
||||
"desc": "أضف وصفًا للإضافة",
|
||||
"label": "وصف الإضافة",
|
||||
"placeholder": "أضف معلومات حول كيفية استخدام هذه الإضافة وسيناريوهاتها وغيرها"
|
||||
"placeholder": "أضف معلومات عن استخدام الإضافة وسيناريوهاتها"
|
||||
},
|
||||
"endpoint": {
|
||||
"desc": "أدخل عنوان خادم MCP Streamable HTTP الخاص بك",
|
||||
"label": "عنوان URL لنقطة نهاية MCP"
|
||||
"label": "رابط نقطة نهاية MCP"
|
||||
},
|
||||
"env": {
|
||||
"add": "إضافة سطر جديد",
|
||||
"desc": "أدخل المتغيرات البيئية المطلوبة لخادم MCP الخاص بك",
|
||||
"duplicateKeyError": "يجب أن تكون مفاتيح الحقول فريدة",
|
||||
"formValidationFailed": "فشل التحقق من صحة النموذج، يرجى التحقق من تنسيق المعلمات",
|
||||
"keyRequired": "لا يمكن أن يكون مفتاح الحقل فارغًا",
|
||||
"label": "متغيرات البيئة لخادم MCP",
|
||||
"stringifyError": "تعذر تسلسل المعلمات، يرجى التحقق من تنسيق المعلمات"
|
||||
"add": "أضف سطرًا جديدًا",
|
||||
"desc": "أدخل متغيرات البيئة المطلوبة لخادم MCP",
|
||||
"duplicateKeyError": "مفتاح الحقل يجب أن يكون فريدًا",
|
||||
"formValidationFailed": "فشل التحقق من النموذج، يرجى مراجعة تنسيق المعلمات",
|
||||
"keyRequired": "مفتاح الحقل لا يمكن أن يكون فارغًا",
|
||||
"label": "متغيرات بيئة خادم MCP",
|
||||
"stringifyError": "تعذر تسلسل المعلمات، يرجى مراجعة التنسيق"
|
||||
},
|
||||
"headers": {
|
||||
"add": "أضف صفًا جديدًا",
|
||||
"add": "أضف سطرًا جديدًا",
|
||||
"desc": "أدخل رؤوس الطلب",
|
||||
"label": "رؤوس HTTP"
|
||||
},
|
||||
"identifier": {
|
||||
"desc": "حدد اسمًا لملحق MCP الخاص بك، يجب أن يكون باستخدام أحرف إنجليزية",
|
||||
"invalid": "يمكنك إدخال أحرف إنجليزية، أرقام، والرمزين - و _ فقط",
|
||||
"label": "اسم ملحق MCP",
|
||||
"placeholder": "على سبيل المثال: my-mcp-plugin",
|
||||
"desc": "حدد اسمًا لإضافة MCP الخاصة بك، يجب أن يكون بالأحرف الإنجليزية",
|
||||
"invalid": "المعرف يمكن أن يحتوي فقط على أحرف، أرقام، شرطات وشرطات سفلية",
|
||||
"label": "اسم إضافة MCP",
|
||||
"placeholder": "مثال: my-mcp-plugin",
|
||||
"required": "يرجى إدخال معرف خدمة MCP"
|
||||
},
|
||||
"previewManifest": "معاينة ملف وصف الإضافة",
|
||||
"quickImport": "استيراد إعدادات JSON بسرعة",
|
||||
"quickImport": "استيراد سريع لتكوين JSON",
|
||||
"quickImportError": {
|
||||
"empty": "لا يمكن أن تكون المدخلات فارغة",
|
||||
"empty": "لا يمكن أن يكون المحتوى فارغًا",
|
||||
"invalidJson": "تنسيق JSON غير صالح",
|
||||
"invalidStructure": "تنسيق JSON غير صحيح"
|
||||
"invalidStructure": "هيكل JSON غير صالح"
|
||||
},
|
||||
"stdioNotSupported": "البيئة الحالية لا تدعم مكون MCP من نوع stdio",
|
||||
"stdioNotSupported": "البيئة الحالية لا تدعم إضافات MCP من نوع stdio",
|
||||
"testConnection": "اختبار الاتصال",
|
||||
"testConnectionTip": "يمكن استخدام إضافة MCP بشكل طبيعي بعد نجاح اختبار الاتصال",
|
||||
"testConnectionTip": "يجب أن ينجح اختبار الاتصال لكي تعمل إضافة MCP بشكل صحيح",
|
||||
"type": {
|
||||
"desc": "اختر طريقة الاتصال لملحق MCP، النسخة الويب تدعم فقط Streamable HTTP",
|
||||
"httpFeature1": "متوافق مع النسخة الويب وسطح المكتب",
|
||||
"httpFeature2": "الاتصال بخادم MCP عن بُعد، دون الحاجة إلى تثبيت أو إعداد إضافي",
|
||||
"httpShortDesc": "بروتوكول الاتصال القائم على HTTP المتدفق",
|
||||
"label": "نوع ملحق MCP",
|
||||
"stdioFeature1": "زمن تأخير أقل في الاتصال، مناسب للتنفيذ المحلي",
|
||||
"stdioFeature2": "يجب تثبيت خادم MCP وتشغيله محليًا",
|
||||
"stdioNotAvailable": "وضع STDIO متاح فقط في النسخة المكتبية",
|
||||
"stdioShortDesc": "بروتوكول الاتصال القائم على الإدخال والإخراج القياسي",
|
||||
"title": "نوع ملحق MCP"
|
||||
"desc": "اختر طريقة اتصال إضافة MCP، النسخة الويب تدعم فقط Streamable HTTP",
|
||||
"httpFeature1": "متوافق مع الويب وسطح المكتب",
|
||||
"httpFeature2": "اتصال بخادم MCP عن بعد، لا حاجة لتثبيت إضافي",
|
||||
"httpShortDesc": "بروتوكول اتصال HTTP متدفق",
|
||||
"label": "نوع إضافة MCP",
|
||||
"stdioFeature1": "تأخير اتصال أقل، مناسب للتنفيذ المحلي",
|
||||
"stdioFeature2": "يجب تثبيت وتشغيل خادم MCP محليًا",
|
||||
"stdioNotAvailable": "وضع STDIO متاح فقط في نسخة سطح المكتب",
|
||||
"stdioShortDesc": "بروتوكول اتصال يعتمد على الإدخال والإخراج القياسي",
|
||||
"title": "نوع إضافة MCP"
|
||||
},
|
||||
"url": {
|
||||
"desc": "أدخل عنوان HTTP القابل للبث لخادم MCP الخاص بك، لا يدعم وضع SSE",
|
||||
"desc": "أدخل عنوان MCP Server Streamable HTTP الخاص بك، لا يدعم وضع SSE",
|
||||
"invalid": "يرجى إدخال عنوان URL صالح",
|
||||
"label": "عنوان URL لنقطة نهاية HTTP",
|
||||
"label": "رابط نقطة نهاية HTTP المتدفق",
|
||||
"required": "يرجى إدخال عنوان URL لخدمة MCP"
|
||||
}
|
||||
},
|
||||
"meta": {
|
||||
"author": {
|
||||
"desc": "مؤلف البرنامج المساعد",
|
||||
"desc": "مؤلف الإضافة",
|
||||
"label": "المؤلف"
|
||||
},
|
||||
"avatar": {
|
||||
"desc": "رمز البرنامج المساعد، يمكن استخدام الرموز التعبيرية أو روابط URL",
|
||||
"label": "الرمز"
|
||||
"desc": "أيقونة الإضافة، يمكن استخدام إيموجي أو رابط URL",
|
||||
"label": "الأيقونة"
|
||||
},
|
||||
"description": {
|
||||
"desc": "وصف البرنامج المساعد",
|
||||
"desc": "وصف الإضافة",
|
||||
"label": "الوصف",
|
||||
"placeholder": "البحث في محركات البحث للحصول على المعلومات"
|
||||
"placeholder": "ابحث في محرك البحث للحصول على معلومات"
|
||||
},
|
||||
"formFieldRequired": "هذا الحقل مطلوب",
|
||||
"homepage": {
|
||||
"desc": "صفحة البداية للبرنامج المساعد",
|
||||
"desc": "الصفحة الرئيسية للإضافة",
|
||||
"label": "الصفحة الرئيسية"
|
||||
},
|
||||
"identifier": {
|
||||
"desc": "العلامة المميزة للبرنامج المساعد، سيتم التعرف عليها تلقائيًا من خلال الملف التعريفي",
|
||||
"errorDuplicate": "تكرار العلامة المميزة مع برنامج مساعد موجود، يرجى تعديل العلامة المميزة",
|
||||
"desc": "المعرف الفريد للإضافة، سيتم التعرف عليه تلقائيًا من ملف manifest",
|
||||
"errorDuplicate": "المعرف مكرر مع إضافة موجودة، يرجى تغييره",
|
||||
"label": "المعرف",
|
||||
"pattenErrorMessage": "يمكن إدخال الأحرف الإنجليزية والأرقام والرمزين - و_ فقط"
|
||||
"pattenErrorMessage": "يمكن إدخال أحرف إنجليزية، أرقام، - و _ فقط"
|
||||
},
|
||||
"lobe": "إضافة {{appName}}",
|
||||
"manifest": {
|
||||
"desc": "{{appName}} سيتم تثبيت الإضافة من خلال هذا الرابط",
|
||||
"label": "ملف وصف البرنامج المساعد (Manifest) URL",
|
||||
"preview": "معاينة الملف التعريفي",
|
||||
"desc": "سيتم تثبيت {{appName}} عبر هذا الرابط",
|
||||
"label": "رابط ملف وصف الإضافة (Manifest)",
|
||||
"preview": "معاينة Manifest",
|
||||
"refresh": "تحديث"
|
||||
},
|
||||
"openai": "إضافة OpenAI",
|
||||
"title": {
|
||||
"desc": "عنوان البرنامج المساعد",
|
||||
"desc": "عنوان الإضافة",
|
||||
"label": "العنوان",
|
||||
"placeholder": "محرك البحث"
|
||||
}
|
||||
},
|
||||
"metaConfig": "تكوين معلومات البرنامج المساعد",
|
||||
"modalDesc": "بعد إضافة البرنامج المساعد المخصص، يمكن استخدامه للتحقق من تطوير البرنامج المساعد، كما يمكن استخدامه مباشرة في الدردشة. للحصول على معلومات حول تطوير البرنامج المساعد، يرجى الرجوع إلى <1>وثائق التطوير↗</>",
|
||||
"metaConfig": "تكوين معلومات الإضافة الأساسية",
|
||||
"modalDesc": "بعد إضافة إضافة مخصصة، يمكن استخدامها للتحقق من تطوير الإضافة أو استخدامها مباشرة في المحادثة. يرجى الرجوع إلى <1>وثائق التطوير↗</> لتطوير الإضافات.",
|
||||
"openai": {
|
||||
"importUrl": "استيراد من رابط URL",
|
||||
"schema": "مخطط"
|
||||
"schema": "المخطط"
|
||||
},
|
||||
"preview": {
|
||||
"api": {
|
||||
"noParams": "لا توجد معلمات لهذه الأداة",
|
||||
"noResults": "لم يتم العثور على واجهات برمجة التطبيقات التي تتوافق مع شروط البحث",
|
||||
"noParams": "هذه الأداة لا تحتوي على معلمات",
|
||||
"noResults": "لم يتم العثور على API تطابق شروط البحث",
|
||||
"params": "المعلمات:",
|
||||
"searchPlaceholder": "ابحث في الأدوات..."
|
||||
"searchPlaceholder": "ابحث عن أداة..."
|
||||
},
|
||||
"card": "معاينة عرض البرنامج المساعد",
|
||||
"desc": "معاينة وصف البرنامج المساعد",
|
||||
"card": "معاينة عرض الإضافة",
|
||||
"desc": "معاينة وصف الإضافة",
|
||||
"empty": {
|
||||
"desc": "بعد إكمال الإعداد، ستتمكن من معاينة قدرات الأدوات المدعومة من المكون الإضافي هنا",
|
||||
"title": "ابدأ المعاينة بعد تكوين المكون الإضافي"
|
||||
"desc": "بعد إكمال التكوين، يمكنك معاينة قدرات الأدوات المدعومة هنا",
|
||||
"title": "ابدأ المعاينة بعد تكوين الإضافة"
|
||||
},
|
||||
"title": "معاينة اسم البرنامج المساعد"
|
||||
"title": "معاينة اسم الإضافة"
|
||||
},
|
||||
"save": "تثبيت البرنامج المساعد",
|
||||
"saveSuccess": "تم حفظ إعدادات البرنامج المساعد بنجاح",
|
||||
"save": "تثبيت الإضافة",
|
||||
"saveSuccess": "تم حفظ إعدادات الإضافة بنجاح",
|
||||
"tabs": {
|
||||
"manifest": "قائمة وصف الوظائف (Manifest)",
|
||||
"meta": "معلومات البرنامج المساعد"
|
||||
"meta": "معلومات الإضافة الأساسية"
|
||||
},
|
||||
"title": {
|
||||
"create": "إضافة برنامج مساعد مخصص",
|
||||
"edit": "تحرير برنامج مساعد مخصص"
|
||||
"create": "إضافة إضافة مخصصة",
|
||||
"edit": "تحرير إضافة مخصصة"
|
||||
},
|
||||
"type": {
|
||||
"lobe": "برنامج مساعد LobeChat",
|
||||
"openai": "برنامج مساعد OpenAI"
|
||||
"lobe": "إضافة {{appName}}",
|
||||
"openai": "إضافة OpenAI"
|
||||
},
|
||||
"update": "تحديث",
|
||||
"updateSuccess": "تم تحديث إعدادات البرنامج المساعد بنجاح"
|
||||
"updateSuccess": "تم تحديث إعدادات الإضافة بنجاح"
|
||||
},
|
||||
"error": {
|
||||
"fetchError": "فشل طلب الرابط المعطى للملف، يرجى التأكد من صحة الرابط والسماح بالوصول عبر النطاقات المختلفة",
|
||||
"fetchError": "فشل طلب رابط manifest، يرجى التأكد من صلاحية الرابط وفحص ما إذا كان يسمح بالوصول عبر النطاق",
|
||||
"installError": "فشل تثبيت الإضافة {{name}}",
|
||||
"manifestInvalid": "الملف غير مطابق للمواصفات، نتيجة التحقق: \n\n {{error}}",
|
||||
"manifestInvalid": "الملف manifest غير مطابق للمواصفات، نتيجة التحقق: \n\n {{error}}",
|
||||
"noManifest": "ملف الوصف غير موجود",
|
||||
"openAPIInvalid": "فشل تحليل OpenAPI، الخطأ: \n\n {{error}}",
|
||||
"reinstallError": "فشل تحديث الإضافة {{name}}",
|
||||
"testConnectionFailed": "فشل في الحصول على ملف التعريف: {{error}}",
|
||||
"urlError": "الرابط لا يعيد محتوى بتنسيق JSON، يرجى التأكد من صحة الرابط"
|
||||
"testConnectionFailed": "فشل الحصول على Manifest: {{error}}",
|
||||
"urlError": "الرابط لم يرجع محتوى بصيغة JSON، يرجى التأكد من صحة الرابط"
|
||||
},
|
||||
"inspector": {
|
||||
"args": "عرض قائمة المعلمات",
|
||||
"pluginRender": "عرض واجهة المكون الإضافي"
|
||||
"pluginRender": "عرض واجهة الإضافة"
|
||||
},
|
||||
"list": {
|
||||
"item": {
|
||||
"deprecated.title": "مهجور",
|
||||
"local.config": "التكوين",
|
||||
"deprecated.title": "تم الحذف",
|
||||
"local.config": "الإعدادات",
|
||||
"local.title": "مخصص"
|
||||
}
|
||||
},
|
||||
"loading": {
|
||||
"content": "جاري استدعاء الإضافة...",
|
||||
"plugin": "جاري تشغيل الإضافة..."
|
||||
"content": "جارٍ استدعاء الإضافة...",
|
||||
"plugin": "تشغيل الإضافة..."
|
||||
},
|
||||
"localSystem": {
|
||||
"apiName": {
|
||||
@@ -255,7 +255,7 @@
|
||||
"moveLocalFiles": "نقل الملفات",
|
||||
"readLocalFile": "قراءة محتوى الملف",
|
||||
"renameLocalFile": "إعادة تسمية",
|
||||
"searchLocalFiles": "البحث عن الملفات",
|
||||
"searchLocalFiles": "بحث في الملفات",
|
||||
"writeLocalFile": "كتابة في الملف"
|
||||
},
|
||||
"title": "الملفات المحلية"
|
||||
@@ -263,23 +263,23 @@
|
||||
"mcpInstall": {
|
||||
"CHECKING_INSTALLATION": "جارٍ فحص بيئة التثبيت...",
|
||||
"COMPLETED": "اكتمل التثبيت",
|
||||
"CONFIGURATION_REQUIRED": "يرجى إكمال التكوينات المطلوبة للمتابعة في التثبيت",
|
||||
"CONFIGURATION_REQUIRED": "يرجى إكمال التكوين المطلوب للمتابعة بالتثبيت",
|
||||
"ERROR": "خطأ في التثبيت",
|
||||
"FETCHING_MANIFEST": "جارٍ جلب ملف وصف الإضافة...",
|
||||
"FETCHING_MANIFEST": "جارٍ الحصول على ملف وصف الإضافة...",
|
||||
"GETTING_SERVER_MANIFEST": "جارٍ تهيئة خادم MCP...",
|
||||
"INSTALLING_PLUGIN": "جارٍ تثبيت الإضافة...",
|
||||
"configurationDescription": "تتطلب هذه الإضافة من MCP إعداد معلمات لتعمل بشكل صحيح، يرجى ملء المعلومات الضرورية.",
|
||||
"configurationDescription": "تتطلب هذه الإضافة MCP إعداد معلمات لتعمل بشكل صحيح، يرجى ملء المعلومات اللازمة",
|
||||
"configurationRequired": "تكوين معلمات الإضافة",
|
||||
"continueInstall": "متابعة التثبيت",
|
||||
"dependenciesDescription": "تتطلب هذه الإضافة تثبيت الاعتمادات النظامية التالية لتعمل بشكل صحيح، يرجى تثبيت الاعتمادات المفقودة حسب التعليمات ثم النقر على إعادة الفحص للمتابعة.",
|
||||
"dependenciesRequired": "يرجى تثبيت الاعتمادات النظامية للإضافة",
|
||||
"dependenciesDescription": "تتطلب هذه الإضافة تثبيت تبعيات نظامية لتعمل بشكل صحيح، يرجى تثبيت التبعيات المفقودة حسب التعليمات ثم اضغط إعادة الفحص للمتابعة بالتثبيت.",
|
||||
"dependenciesRequired": "يرجى تثبيت تبعيات النظام للإضافة",
|
||||
"dependencyStatus": {
|
||||
"installed": "مثبّت",
|
||||
"notInstalled": "غير مثبّت",
|
||||
"installed": "مثبت",
|
||||
"notInstalled": "غير مثبت",
|
||||
"requiredVersion": "الإصدار المطلوب: {{version}}"
|
||||
},
|
||||
"errorDetails": {
|
||||
"args": "المعطيات",
|
||||
"args": "المعلمات",
|
||||
"command": "الأمر",
|
||||
"connectionParams": "معلمات الاتصال",
|
||||
"env": "متغيرات البيئة",
|
||||
@@ -295,34 +295,94 @@
|
||||
"INITIALIZATION_TIMEOUT": "انتهت مهلة التهيئة",
|
||||
"PROCESS_SPAWN_ERROR": "فشل بدء العملية",
|
||||
"UNKNOWN_ERROR": "خطأ غير معروف",
|
||||
"VALIDATION_ERROR": "فشل التحقق من المعطيات"
|
||||
"VALIDATION_ERROR": "فشل التحقق من المعلمات"
|
||||
},
|
||||
"installError": "فشل تثبيت إضافة MCP، سبب الفشل: {{detail}}",
|
||||
"installError": "فشل تثبيت إضافة MCP، السبب: {{detail}}",
|
||||
"installMethods": {
|
||||
"manual": "التثبيت اليدوي:",
|
||||
"manual": "تثبيت يدوي:",
|
||||
"recommended": "طريقة التثبيت الموصى بها:"
|
||||
},
|
||||
"recheckDependencies": "إعادة فحص",
|
||||
"skipDependencies": "تخطي الفحص"
|
||||
},
|
||||
"pluginList": "قائمة الإضافات",
|
||||
"protocolInstall": {
|
||||
"actions": {
|
||||
"install": "تثبيت",
|
||||
"installAnyway": "تثبيت على أي حال",
|
||||
"installed": "مثبت"
|
||||
},
|
||||
"config": {
|
||||
"args": "المعلمات",
|
||||
"command": "الأمر",
|
||||
"env": "متغيرات البيئة",
|
||||
"headers": "رؤوس الطلب",
|
||||
"title": "معلومات التكوين",
|
||||
"type": {
|
||||
"http": "النوع: HTTP",
|
||||
"label": "النوع",
|
||||
"stdio": "النوع: Stdio"
|
||||
},
|
||||
"url": "عنوان الخدمة"
|
||||
},
|
||||
"custom": {
|
||||
"badge": "إضافة مخصصة",
|
||||
"security": {
|
||||
"description": "هذه الإضافة لم يتم التحقق منها رسميًا، قد تحمل مخاطر أمنية! يرجى التأكد من ثقتك بمصدر الإضافة.",
|
||||
"title": "⚠️ تحذير أمني"
|
||||
},
|
||||
"title": "تثبيت إضافة مخصصة"
|
||||
},
|
||||
"marketplace": {
|
||||
"title": "تثبيت إضافات الطرف الثالث",
|
||||
"trustedBy": "مقدم من {{name}}",
|
||||
"unverified": {
|
||||
"title": "إضافات طرف ثالث غير موثوقة",
|
||||
"warning": "هذه الإضافة من سوق طرف ثالث غير موثوق، يرجى التأكد من ثقتك بالمصدر قبل التثبيت."
|
||||
},
|
||||
"verified": "موثوقة"
|
||||
},
|
||||
"messages": {
|
||||
"connectionTestFailed": "فشل اختبار الاتصال",
|
||||
"installError": "فشل تثبيت الإضافة، يرجى المحاولة مجددًا",
|
||||
"installSuccess": "تم تثبيت الإضافة {{name}} بنجاح!",
|
||||
"manifestError": "فشل الحصول على تفاصيل الإضافة، يرجى التحقق من الاتصال بالشبكة والمحاولة مجددًا",
|
||||
"manifestNotFound": "تعذر الحصول على ملف وصف الإضافة"
|
||||
},
|
||||
"meta": {
|
||||
"author": "المؤلف",
|
||||
"homepage": "الصفحة الرئيسية",
|
||||
"identifier": "المعرف",
|
||||
"source": "المصدر",
|
||||
"version": "الإصدار"
|
||||
},
|
||||
"official": {
|
||||
"badge": "إضافة رسمية من LobeHub",
|
||||
"description": "تم تطوير هذه الإضافة وصيانتها رسميًا من قبل LobeHub، وتمت مراجعتها أمنيًا بدقة، يمكن استخدامها بأمان.",
|
||||
"loadingMessage": "جارٍ الحصول على تفاصيل الإضافة...",
|
||||
"loadingTitle": "جارٍ التحميل",
|
||||
"title": "تثبيت إضافة رسمية"
|
||||
},
|
||||
"title": "تثبيت إضافة MCP",
|
||||
"warning": "⚠️ يرجى التأكد من ثقتك بمصدر هذه الإضافة، الإضافات الخبيثة قد تضر بأمان نظامك."
|
||||
},
|
||||
"search": {
|
||||
"apiName": {
|
||||
"crawlMultiPages": "قراءة محتوى صفحات متعددة",
|
||||
"crawlMultiPages": "قراءة محتوى عدة صفحات",
|
||||
"crawlSinglePage": "قراءة محتوى الصفحة",
|
||||
"search": "بحث في الصفحة"
|
||||
"search": "البحث في الصفحة"
|
||||
},
|
||||
"config": {
|
||||
"addKey": "إضافة مفتاح",
|
||||
"close": "حذف",
|
||||
"confirm": "تم تكوينه وإعادة المحاولة"
|
||||
"confirm": "تم إكمال التكوين وأعيد المحاولة"
|
||||
},
|
||||
"crawPages": {
|
||||
"crawling": "جاري التعرف على الروابط",
|
||||
"crawling": "جارٍ التعرف على الروابط",
|
||||
"detail": {
|
||||
"preview": "معاينة",
|
||||
"raw": "النص الأصلي",
|
||||
"tooLong": "محتوى النص طويل جدًا، سيتم الاحتفاظ بالسياق السابق فقط بأول {{characters}} حرف، ولن يتم احتساب الأجزاء الزائدة في سياق المحادثة"
|
||||
"raw": "نص خام",
|
||||
"tooLong": "النص طويل جدًا، يحتفظ سياق المحادثة فقط بأول {{characters}} حرفًا، الجزء الزائد غير مدرج في السياق"
|
||||
},
|
||||
"meta": {
|
||||
"crawler": "وضع الزحف",
|
||||
@@ -330,19 +390,19 @@
|
||||
}
|
||||
},
|
||||
"searchxng": {
|
||||
"baseURL": "الرجاء الإدخال",
|
||||
"description": "الرجاء إدخال عنوان URL لـ SearchXNG لبدء البحث عبر الإنترنت",
|
||||
"keyPlaceholder": "الرجاء إدخال المفتاح",
|
||||
"title": "تكوين محرك بحث SearchXNG",
|
||||
"unconfiguredDesc": "يرجى الاتصال بالمسؤول لإكمال تكوين محرك بحث SearchXNG لبدء البحث عبر الإنترنت",
|
||||
"unconfiguredTitle": "لم يتم تكوين محرك بحث SearchXNG بعد"
|
||||
"baseURL": "يرجى الإدخال",
|
||||
"description": "يرجى إدخال عنوان SearchXNG للبدء في البحث عبر الإنترنت",
|
||||
"keyPlaceholder": "يرجى إدخال المفتاح",
|
||||
"title": "تكوين محرك البحث SearchXNG",
|
||||
"unconfiguredDesc": "يرجى الاتصال بالمسؤول لإكمال تكوين محرك البحث SearchXNG للبدء في البحث عبر الإنترنت",
|
||||
"unconfiguredTitle": "لم يتم تكوين محرك البحث SearchXNG بعد"
|
||||
},
|
||||
"title": "البحث عبر الإنترنت"
|
||||
},
|
||||
"setting": "إعدادات الإضافة",
|
||||
"settings": {
|
||||
"capabilities": {
|
||||
"prompts": "نصوص التوجيه",
|
||||
"prompts": "عبارات التوجيه",
|
||||
"resources": "الموارد",
|
||||
"title": "قدرات الإضافة",
|
||||
"tools": "الأدوات"
|
||||
@@ -351,18 +411,18 @@
|
||||
"title": "تكوين الإضافة"
|
||||
},
|
||||
"connection": {
|
||||
"args": "معطيات التشغيل",
|
||||
"args": "معلمات التشغيل",
|
||||
"command": "أمر التشغيل",
|
||||
"title": "معلومات الاتصال",
|
||||
"type": "نوع الاتصال",
|
||||
"url": "عنوان الخدمة"
|
||||
},
|
||||
"edit": "تحرير",
|
||||
"envConfigDescription": "سيتم تمرير هذه الإعدادات كمتغيرات بيئية إلى العملية عند بدء تشغيل خادم MCP",
|
||||
"httpTypeNotice": "لا توجد متغيرات بيئية تحتاج إلى التكوين لإضافات MCP من نوع HTTP",
|
||||
"envConfigDescription": "سيتم تمرير هذه الإعدادات كمتغيرات بيئة عند بدء تشغيل خادم MCP",
|
||||
"httpTypeNotice": "إضافات MCP من نوع HTTP لا تحتاج إلى متغيرات بيئة للتكوين حاليًا",
|
||||
"indexUrl": {
|
||||
"title": "فهرس السوق",
|
||||
"tooltip": "غير مدعوم حاليا للتحرير عبر الإنترنت، يرجى ضبطه عند نشر المتغيرات البيئية"
|
||||
"tooltip": "لا يدعم التحرير عبر الإنترنت حاليًا، يرجى التكوين عبر متغيرات البيئة عند النشر"
|
||||
},
|
||||
"messages": {
|
||||
"connectionUpdateFailed": "فشل تحديث معلومات الاتصال",
|
||||
@@ -370,41 +430,41 @@
|
||||
"envUpdateFailed": "فشل حفظ متغيرات البيئة",
|
||||
"envUpdateSuccess": "تم حفظ متغيرات البيئة بنجاح"
|
||||
},
|
||||
"modalDesc": "بعد ضبط عنوان سوق الإضافات، يمكن استخدام سوق الإضافات المخصص",
|
||||
"modalDesc": "بعد تكوين عنوان سوق الإضافات، يمكنك استخدام سوق إضافات مخصص",
|
||||
"rules": {
|
||||
"argsRequired": "يرجى إدخال معلمات التشغيل",
|
||||
"commandRequired": "يرجى إدخال أمر التشغيل",
|
||||
"urlRequired": "يرجى إدخال عنوان الخدمة"
|
||||
},
|
||||
"saveSettings": "حفظ الإعدادات",
|
||||
"title": "ضبط سوق الإضافات"
|
||||
"title": "إعدادات سوق الإضافات"
|
||||
},
|
||||
"showInPortal": "يرجى الاطلاع على التفاصيل في مساحة العمل",
|
||||
"showInPortal": "يرجى عرض التفاصيل في مساحة العمل",
|
||||
"store": {
|
||||
"actions": {
|
||||
"cancel": "إلغاء التثبيت",
|
||||
"confirmUninstall": "سيتم إلغاء تثبيت الإضافة، وسيتم مسح تكوين الإضافة، يرجى تأكيد العملية",
|
||||
"confirmUninstall": "سيتم إلغاء تثبيت هذه الإضافة وسيتم حذف إعداداتها، يرجى تأكيد العملية",
|
||||
"detail": "التفاصيل",
|
||||
"install": "تثبيت",
|
||||
"manifest": "تحرير ملف التثبيت",
|
||||
"settings": "الإعدادات",
|
||||
"uninstall": "إلغاء التثبيت"
|
||||
},
|
||||
"communityPlugin": "مجتمع ثالث",
|
||||
"communityPlugin": "مجتمع الطرف الثالث",
|
||||
"customPlugin": "مخصص",
|
||||
"empty": "لا توجد إضافات مثبتة حاليا",
|
||||
"empty": "لا توجد إضافات مثبتة",
|
||||
"emptySelectHint": "اختر إضافة لمعاينة التفاصيل",
|
||||
"installAllPlugins": "تثبيت الكل",
|
||||
"networkError": "فشل الحصول على متجر الإضافات، يرجى التحقق من الاتصال بالشبكة وإعادة المحاولة",
|
||||
"placeholder": "ابحث عن اسم الإضافة أو الكلمات الرئيسية...",
|
||||
"releasedAt": "صدر في {{createdAt}}",
|
||||
"networkError": "فشل الحصول على متجر الإضافات، يرجى التحقق من الاتصال بالشبكة والمحاولة مجددًا",
|
||||
"placeholder": "ابحث عن اسم الإضافة أو الوصف أو الكلمات المفتاحية...",
|
||||
"releasedAt": "نُشر في {{createdAt}}",
|
||||
"tabs": {
|
||||
"installed": "مثبتة",
|
||||
"mcp": "إضافة MCP",
|
||||
"old": "إضافة LobeChat"
|
||||
"installed": "مثبت",
|
||||
"mcp": "إضافات MCP",
|
||||
"old": "إضافات LobeChat"
|
||||
},
|
||||
"title": "متجر الإضافات"
|
||||
},
|
||||
"unknownError": "خطأ غير معروف",
|
||||
"unknownPlugin": "البرنامج المساعد غير معروف"
|
||||
"unknownPlugin": "إضافة غير معروفة"
|
||||
}
|
||||
|
||||
@@ -1,25 +1,25 @@
|
||||
{
|
||||
"confirm": "Потвърдете",
|
||||
"confirm": "Потвърждавам",
|
||||
"debug": {
|
||||
"arguments": "Аргументи",
|
||||
"arguments": "Параметри на извикване",
|
||||
"function_call": "Извикване на функция",
|
||||
"off": "Изключи отстраняване на грешки",
|
||||
"on": "Преглед на информацията за извикване на плъгина",
|
||||
"payload": "полезна натоварване",
|
||||
"off": "Изключване на отстраняване на грешки",
|
||||
"on": "Преглед на информация за извикване на плъгин",
|
||||
"payload": "Товар на плъгина",
|
||||
"pluginState": "Състояние на плъгина",
|
||||
"response": "Отговор",
|
||||
"response": "Резултат",
|
||||
"title": "Детайли за плъгина",
|
||||
"tool_call": "заявка за инструмент"
|
||||
"tool_call": "Заявка за извикване на инструмент"
|
||||
},
|
||||
"detailModal": {
|
||||
"customPlugin": {
|
||||
"description": "Моля, посетете страницата за редактиране, за да видите подробности",
|
||||
"description": "Моля, посетете страницата за редактиране за подробности",
|
||||
"editBtn": "Редактирай сега",
|
||||
"title": "Това е персонализиран плъгин"
|
||||
},
|
||||
"emptyState": {
|
||||
"description": "Моля, инсталирайте този плъгин, за да видите възможностите и опциите за конфигурация на плъгина",
|
||||
"title": "Вижте подробностите за плъгина след инсталиране"
|
||||
"description": "Моля, инсталирайте този плъгин, за да видите възможностите и опциите за конфигурация",
|
||||
"title": "Вижте детайли за плъгина след инсталация"
|
||||
},
|
||||
"info": {
|
||||
"description": "Описание на API",
|
||||
@@ -30,19 +30,19 @@
|
||||
"manifest": "Инсталационен файл",
|
||||
"settings": "Настройки"
|
||||
},
|
||||
"title": "Подробности за плъгина"
|
||||
"title": "Детайли за плъгина"
|
||||
},
|
||||
"dev": {
|
||||
"confirmDeleteDevPlugin": "Сигурни ли сте, че искате да изтриете този локален плъгин? След като бъде изтрит, той не може да бъде възстановен.",
|
||||
"confirmDeleteDevPlugin": "Ще изтриете този локален плъгин. След изтриване той не може да бъде възстановен. Сигурни ли сте, че искате да изтриете плъгина?",
|
||||
"customParams": {
|
||||
"useProxy": {
|
||||
"label": "Инсталиране чрез прокси (ако срещате грешки при достъп от различен произход, опитайте да активирате тази опция и да преинсталирате)"
|
||||
"label": "Инсталиране чрез прокси (ако срещнете грешки с достъп през различен домейн, опитайте да активирате тази опция и да инсталирате отново)"
|
||||
}
|
||||
},
|
||||
"deleteSuccess": "Плъгинът е изтрит успешно",
|
||||
"manifest": {
|
||||
"identifier": {
|
||||
"desc": "Уникалният идентификатор на плъгина",
|
||||
"desc": "Уникален идентификатор на плъгина",
|
||||
"label": "Идентификатор"
|
||||
},
|
||||
"mode": {
|
||||
@@ -51,7 +51,7 @@
|
||||
"url": "Онлайн връзка"
|
||||
},
|
||||
"name": {
|
||||
"desc": "Заглавието на плъгина",
|
||||
"desc": "Заглавие на плъгина",
|
||||
"label": "Заглавие",
|
||||
"placeholder": "Търсачка"
|
||||
}
|
||||
@@ -61,50 +61,50 @@
|
||||
"title": "Разширени настройки"
|
||||
},
|
||||
"args": {
|
||||
"desc": "Списък с параметри, предадени на командата за изпълнение, обикновено тук се въвежда името на MCP сървъра или пътя до стартиращия скрипт",
|
||||
"label": "Командни параметри",
|
||||
"placeholder": "Например: --port 8080 --debug",
|
||||
"required": "Моля, въведете параметри за стартиране"
|
||||
"desc": "Списък с параметри, предавани на командата за изпълнение, обикновено тук се въвежда името на MCP сървъра или пътят към стартовия скрипт",
|
||||
"label": "Параметри на командата",
|
||||
"placeholder": "Например: mcp-hello-world",
|
||||
"required": "Моля, въведете стартови параметри"
|
||||
},
|
||||
"auth": {
|
||||
"bear": "API ключ",
|
||||
"desc": "Изберете метод за удостоверяване на MCP сървъра",
|
||||
"label": "Тип удостоверяване",
|
||||
"none": "Без удостоверяване",
|
||||
"none": "Не се изисква удостоверяване",
|
||||
"placeholder": "Моля, изберете тип удостоверяване",
|
||||
"token": {
|
||||
"desc": "Въведете своя API ключ или Bearer токен",
|
||||
"desc": "Въведете вашия API ключ или Bearer токен",
|
||||
"label": "API ключ",
|
||||
"placeholder": "sk-xxxxx",
|
||||
"required": "Моля, въведете удостоверителния токен"
|
||||
"required": "Моля, въведете удостоверителен токен"
|
||||
}
|
||||
},
|
||||
"avatar": {
|
||||
"label": "Икона на плъгин"
|
||||
"label": "Икона на плъгина"
|
||||
},
|
||||
"command": {
|
||||
"desc": "Изпълним файл или скрипт за стартиране на MCP STDIO плъгин",
|
||||
"desc": "Изпълним файл или скрипт за стартиране на MCP STDIO сървъра",
|
||||
"label": "Команда",
|
||||
"placeholder": "Например: python main.py или /path/to/executable",
|
||||
"placeholder": "Например: npx / uv / docker и др.",
|
||||
"required": "Моля, въведете команда за стартиране"
|
||||
},
|
||||
"desc": {
|
||||
"desc": "Добавете описание на плъгина",
|
||||
"label": "Описание на плъгина",
|
||||
"placeholder": "Допълнителна информация за използването на плъгина и контекста му"
|
||||
"placeholder": "Допълнете информация за употреба и сценарии"
|
||||
},
|
||||
"endpoint": {
|
||||
"desc": "Въведете адреса на вашия MCP Streamable HTTP Server",
|
||||
"desc": "Въведете адреса на вашия MCP Streamable HTTP сървър",
|
||||
"label": "MCP Endpoint URL"
|
||||
},
|
||||
"env": {
|
||||
"add": "Добави ред",
|
||||
"desc": "Въведете необходимите променливи на средата за вашия MCP сървър",
|
||||
"duplicateKeyError": "Ключовете на полетата трябва да са уникални",
|
||||
"formValidationFailed": "Валидирането на формата не успя, моля проверете формата на параметрите",
|
||||
"desc": "Въведете необходимите за MCP сървъра променливи на средата",
|
||||
"duplicateKeyError": "Ключът на полето трябва да е уникален",
|
||||
"formValidationFailed": "Валидирането на формата не бе успешно, моля проверете формата на параметрите",
|
||||
"keyRequired": "Ключът на полето не може да бъде празен",
|
||||
"label": "Променливи на средата на MCP сървър",
|
||||
"stringifyError": "Не може да се сериализира параметър, моля проверете формата на параметрите"
|
||||
"label": "Променливи на средата за MCP сървъра",
|
||||
"stringifyError": "Не може да се сериализират параметрите, моля проверете формата"
|
||||
},
|
||||
"headers": {
|
||||
"add": "Добави ред",
|
||||
@@ -112,127 +112,127 @@
|
||||
"label": "HTTP заглавки"
|
||||
},
|
||||
"identifier": {
|
||||
"desc": "Определете име за вашия MCP плъгин, трябва да използвате английски символи",
|
||||
"invalid": "Можете да въвеждате само английски символи, цифри, - и _",
|
||||
"label": "Име на MCP плъгин",
|
||||
"desc": "Задайте име на вашия MCP плъгин, трябва да използвате английски символи",
|
||||
"invalid": "Идентификаторът може да съдържа само букви, цифри, тирета и долни черти",
|
||||
"label": "Име на MCP плъгина",
|
||||
"placeholder": "Например: my-mcp-plugin",
|
||||
"required": "Моля, въведете идентификатор на MCP услугата"
|
||||
},
|
||||
"previewManifest": "Преглед на описателния файл на плъгина",
|
||||
"quickImport": "Бърз импорт на JSON конфигурация",
|
||||
"quickImportError": {
|
||||
"empty": "Въведеното съдържание не може да бъде празно",
|
||||
"empty": "Въведеният текст не може да бъде празен",
|
||||
"invalidJson": "Невалиден JSON формат",
|
||||
"invalidStructure": "JSON форматът е невалиден"
|
||||
"invalidStructure": "Невалидна JSON структура"
|
||||
},
|
||||
"stdioNotSupported": "Текущата среда не поддържа MCP плъгини от тип stdio",
|
||||
"testConnection": "Тествайте връзката",
|
||||
"testConnectionTip": "След успешното тестване на връзката, MCP плъгинът може да бъде използван нормално",
|
||||
"stdioNotSupported": "Текущата среда не поддържа stdio тип MCP плъгини",
|
||||
"testConnection": "Тествай връзката",
|
||||
"testConnectionTip": "MCP плъгинът може да се използва нормално само след успешен тест на връзката",
|
||||
"type": {
|
||||
"desc": "Изберете начина на комуникация на MCP плъгина, уеб версията поддържа само Streamable HTTP",
|
||||
"httpFeature1": "Съвместим с уеб версията и настолната версия",
|
||||
"httpFeature2": "Свързване с отдалечен MCP сървър, без нужда от допълнителна инсталация и конфигурация",
|
||||
"httpShortDesc": "Комуникационен протокол, базиран на потоково HTTP",
|
||||
"label": "Тип на MCP плъгин",
|
||||
"desc": "Изберете комуникационния тип на MCP плъгина, уеб версията поддържа само Streamable HTTP",
|
||||
"httpFeature1": "Съвместим с уеб и десктоп версия",
|
||||
"httpFeature2": "Свързва се с отдалечен MCP сървър без нужда от допълнителна инсталация и конфигурация",
|
||||
"httpShortDesc": "Комуникационен протокол базиран на потоков HTTP",
|
||||
"label": "Тип MCP плъгин",
|
||||
"stdioFeature1": "По-ниска комуникационна латентност, подходящ за локално изпълнение",
|
||||
"stdioFeature2": "Необходимо е локално инсталиране на MCP сървър",
|
||||
"stdioNotAvailable": "STDIO режимът е наличен само в настолната версия",
|
||||
"stdioShortDesc": "Комуникационен протокол, базиран на стандартен вход и изход",
|
||||
"title": "Тип на MCP плъгин"
|
||||
"stdioFeature2": "Изисква локална инсталация и стартиране на MCP сървър",
|
||||
"stdioNotAvailable": "STDIO режимът е наличен само в десктоп версията",
|
||||
"stdioShortDesc": "Комуникационен протокол базиран на стандартен вход/изход",
|
||||
"title": "Тип MCP плъгин"
|
||||
},
|
||||
"url": {
|
||||
"desc": "Въведете адреса на вашия MCP сървър Streamable HTTP, не поддържа режим SSE",
|
||||
"desc": "Въведете Streamable HTTP адреса на вашия MCP сървър, SSE режим не се поддържа",
|
||||
"invalid": "Моля, въведете валиден URL адрес",
|
||||
"label": "HTTP Endpoint URL",
|
||||
"label": "Streamable HTTP Endpoint URL",
|
||||
"required": "Моля, въведете URL на MCP услугата"
|
||||
}
|
||||
},
|
||||
"meta": {
|
||||
"author": {
|
||||
"desc": "Авторът на плъгина",
|
||||
"desc": "Автор на плъгина",
|
||||
"label": "Автор"
|
||||
},
|
||||
"avatar": {
|
||||
"desc": "Иконата на плъгина, може да бъде емоджи или URL адрес",
|
||||
"desc": "Икона на плъгина, може да използвате Emoji или URL",
|
||||
"label": "Икона"
|
||||
},
|
||||
"description": {
|
||||
"desc": "Описанието на плъгина",
|
||||
"desc": "Описание на плъгина",
|
||||
"label": "Описание",
|
||||
"placeholder": "Получаване на информация от търсачки"
|
||||
"placeholder": "Търсене в търсачка за информация"
|
||||
},
|
||||
"formFieldRequired": "Това поле е задължително",
|
||||
"homepage": {
|
||||
"desc": "Началната страница на плъгина",
|
||||
"desc": "Начална страница на плъгина",
|
||||
"label": "Начална страница"
|
||||
},
|
||||
"identifier": {
|
||||
"desc": "Уникалният идентификатор на плъгина, поддържа само буквено-цифрови символи, тире - и долна черта _",
|
||||
"errorDuplicate": "Идентификаторът вече се използва от друг плъгин, моля, променете идентификатора",
|
||||
"desc": "Уникален идентификатор на плъгина, автоматично разпознат от manifest",
|
||||
"errorDuplicate": "Идентификаторът се повтаря с вече съществуващ плъгин, моля променете идентификатора",
|
||||
"label": "Идентификатор",
|
||||
"pattenErrorMessage": "Разрешени са само буквено-цифрови символи, тире - и долна черта _"
|
||||
"pattenErrorMessage": "Може да съдържа само английски букви, цифри, тирета и долни черти"
|
||||
},
|
||||
"lobe": "{{appName}} плъгин",
|
||||
"manifest": {
|
||||
"desc": "{{appName}} ще инсталира приставката чрез тази връзка",
|
||||
"label": "URL адрес на описанието на плъгина (Manifest)",
|
||||
"preview": "Преглед на манифеста",
|
||||
"refresh": "Опресняване"
|
||||
"desc": "{{appName}} ще инсталира плъгина чрез този линк",
|
||||
"label": "Описателен файл на плъгина (Manifest) URL",
|
||||
"preview": "Преглед на Manifest",
|
||||
"refresh": "Обнови"
|
||||
},
|
||||
"openai": "OpenAI плъгин",
|
||||
"title": {
|
||||
"desc": "Заглавието на плъгина",
|
||||
"desc": "Заглавие на плъгина",
|
||||
"label": "Заглавие",
|
||||
"placeholder": "Търсачка"
|
||||
}
|
||||
},
|
||||
"metaConfig": "Конфигурация на метаданните на плъгина",
|
||||
"modalDesc": "След като добавите персонализиран плъгин, той може да се използва за проверка на разработката на плъгина или директно в сесията. Моля, вижте <1>документацията за разработка↗</> за разработка на плъгини.",
|
||||
"metaConfig": "Конфигурация на мета информацията на плъгина",
|
||||
"modalDesc": "След добавяне на персонализиран плъгин, той може да се използва за разработка и тестване на плъгини, както и директно в разговори. За разработка на плъгини вижте <1>документацията за разработчици↗</>",
|
||||
"openai": {
|
||||
"importUrl": "Импортиране от URL връзка",
|
||||
"importUrl": "Импортиране от URL линк",
|
||||
"schema": "Схема"
|
||||
},
|
||||
"preview": {
|
||||
"api": {
|
||||
"noParams": "Този инструмент няма параметри",
|
||||
"noResults": "Не са намерени API, отговарящи на условията за търсене",
|
||||
"noResults": "Не са намерени API-та, отговарящи на търсенето",
|
||||
"params": "Параметри:",
|
||||
"searchPlaceholder": "Търсене на инструменти..."
|
||||
},
|
||||
"card": "Преглед на дисплея на плъгина",
|
||||
"card": "Преглед на визуализацията на плъгина",
|
||||
"desc": "Преглед на описанието на плъгина",
|
||||
"empty": {
|
||||
"desc": "След завършване на конфигурацията, ще можете да прегледате възможностите на поддържаните инструменти тук",
|
||||
"title": "Започнете прегледа след конфигуриране на плъгина"
|
||||
"desc": "След конфигурация тук ще можете да преглеждате поддържаните възможности на плъгина",
|
||||
"title": "Започнете преглед след конфигуриране на плъгина"
|
||||
},
|
||||
"title": "Преглед на името на плъгина"
|
||||
},
|
||||
"save": "Инсталирай плъгина",
|
||||
"saveSuccess": "Настройките на плъгина са запазени успешно",
|
||||
"tabs": {
|
||||
"manifest": "Манифест на описанието на функцията (Manifest)",
|
||||
"meta": "Метаданни на плъгина"
|
||||
"manifest": "Функционален описателен файл (Manifest)",
|
||||
"meta": "Мета информация за плъгина"
|
||||
},
|
||||
"title": {
|
||||
"create": "Добави персонализиран плъгин",
|
||||
"edit": "Редактирай персонализиран плъгин"
|
||||
"create": "Добавяне на персонализиран плъгин",
|
||||
"edit": "Редактиране на персонализиран плъгин"
|
||||
},
|
||||
"type": {
|
||||
"lobe": "Плъгин на LobeChat",
|
||||
"openai": "Плъгин на OpenAI"
|
||||
"lobe": "{{appName}} плъгин",
|
||||
"openai": "OpenAI плъгин"
|
||||
},
|
||||
"update": "Актуализирай",
|
||||
"updateSuccess": "Настройките на плъгина са актуализирани успешно"
|
||||
"update": "Обновяване",
|
||||
"updateSuccess": "Настройките на плъгина са обновени успешно"
|
||||
},
|
||||
"error": {
|
||||
"fetchError": "Неуспешно извличане на връзката на манифеста. Моля, уверете се, че връзката е валидна и позволява достъп от различен произход.",
|
||||
"installError": "Инсталирането на плъгина {{name}} е неуспешно",
|
||||
"manifestInvalid": "Манифестът не отговаря на спецификацията. Резултат от проверката: \n\n {{error}}",
|
||||
"noManifest": "Файлът на манифеста не съществува",
|
||||
"openAPIInvalid": "Неуспешно анализиране на OpenAPI. Грешка: \n\n {{error}}",
|
||||
"reinstallError": "Неуспешно опресняване на плъгина {{name}}",
|
||||
"testConnectionFailed": "Неуспешно получаване на манифест: {{error}}",
|
||||
"urlError": "Връзката не върна съдържание във формат JSON. Моля, уверете се, че е валидна връзка."
|
||||
"fetchError": "Неуспешно заявяване на manifest линка, моля уверете се в валидността на линка и проверете дали е разрешен достъп от различен домейн",
|
||||
"installError": "Инсталацията на плъгина {{name}} не бе успешна",
|
||||
"manifestInvalid": "manifest не отговаря на стандарта, резултат от проверката: \n\n {{error}}",
|
||||
"noManifest": "Описателният файл не съществува",
|
||||
"openAPIInvalid": "Грешка при парсване на OpenAPI, грешка: \n\n {{error}}",
|
||||
"reinstallError": "Обновяването на плъгина {{name}} не бе успешно",
|
||||
"testConnectionFailed": "Неуспешно получаване на Manifest: {{error}}",
|
||||
"urlError": "Линкът не връща съдържание във формат JSON, моля уверете се, че е валиден линк"
|
||||
},
|
||||
"inspector": {
|
||||
"args": "Преглед на списъка с параметри",
|
||||
@@ -240,38 +240,38 @@
|
||||
},
|
||||
"list": {
|
||||
"item": {
|
||||
"deprecated.title": "Изтрит",
|
||||
"deprecated.title": "Премахнат",
|
||||
"local.config": "Конфигурация",
|
||||
"local.title": "Локален"
|
||||
"local.title": "Персонализиран"
|
||||
}
|
||||
},
|
||||
"loading": {
|
||||
"content": "Извикване на плъгин...",
|
||||
"content": "Извикване на плъгина...",
|
||||
"plugin": "Плъгинът работи..."
|
||||
},
|
||||
"localSystem": {
|
||||
"apiName": {
|
||||
"listLocalFiles": "Преглед на списъка с файлове",
|
||||
"moveLocalFiles": "Премести файл",
|
||||
"readLocalFile": "Чети съдържанието на файла",
|
||||
"renameLocalFile": "Преименувай",
|
||||
"listLocalFiles": "Преглед на списък с файлове",
|
||||
"moveLocalFiles": "Преместване на файлове",
|
||||
"readLocalFile": "Четене на съдържание на файл",
|
||||
"renameLocalFile": "Преименуване",
|
||||
"searchLocalFiles": "Търсене на файлове",
|
||||
"writeLocalFile": "Запиши файл"
|
||||
"writeLocalFile": "Запис в файл"
|
||||
},
|
||||
"title": "Локални файлове"
|
||||
},
|
||||
"mcpInstall": {
|
||||
"CHECKING_INSTALLATION": "Проверка на инсталационна среда...",
|
||||
"CHECKING_INSTALLATION": "Проверка на инсталационната среда...",
|
||||
"COMPLETED": "Инсталацията е завършена",
|
||||
"CONFIGURATION_REQUIRED": "Моля, завършете необходимата конфигурация, за да продължите с инсталацията",
|
||||
"ERROR": "Грешка при инсталацията",
|
||||
"FETCHING_MANIFEST": "Извличане на описанието на плъгина...",
|
||||
"GETTING_SERVER_MANIFEST": "Инициализиране на MCP сървъра...",
|
||||
"CONFIGURATION_REQUIRED": "Моля, завършете необходимата конфигурация, за да продължите инсталацията",
|
||||
"ERROR": "Грешка при инсталация",
|
||||
"FETCHING_MANIFEST": "Извличане на описателния файл на плъгина...",
|
||||
"GETTING_SERVER_MANIFEST": "Инициализация на MCP сървъра...",
|
||||
"INSTALLING_PLUGIN": "Инсталиране на плъгина...",
|
||||
"configurationDescription": "Този MCP плъгин изисква конфигурационни параметри за правилна работа, моля, попълнете необходимата информация",
|
||||
"configurationDescription": "Този MCP плъгин изисква конфигурационни параметри за нормална работа, моля попълнете необходимата информация",
|
||||
"configurationRequired": "Конфигуриране на параметрите на плъгина",
|
||||
"continueInstall": "Продължи с инсталацията",
|
||||
"dependenciesDescription": "Този плъгин изисква инсталиране на следните системни зависимости за правилна работа. Моля, инсталирайте липсващите зависимости според указанията и след това натиснете 'Пре-проверка', за да продължите с инсталацията.",
|
||||
"continueInstall": "Продължи инсталацията",
|
||||
"dependenciesDescription": "Този плъгин изисква инсталиране на следните системни зависимости за нормална работа, моля инсталирайте липсващите зависимости според инструкциите и след това натиснете за повторна проверка и продължаване на инсталацията.",
|
||||
"dependenciesRequired": "Моля, инсталирайте системните зависимости на плъгина",
|
||||
"dependencyStatus": {
|
||||
"installed": "Инсталирано",
|
||||
@@ -279,38 +279,98 @@
|
||||
"requiredVersion": "Изисквана версия: {{version}}"
|
||||
},
|
||||
"errorDetails": {
|
||||
"args": "Аргументи",
|
||||
"args": "Параметри",
|
||||
"command": "Команда",
|
||||
"connectionParams": "Параметри за връзка",
|
||||
"env": "Променливи на средата",
|
||||
"errorOutput": "Журнал на грешките",
|
||||
"errorOutput": "Лог на грешки",
|
||||
"exitCode": "Код на изход",
|
||||
"hideDetails": "Скрий детайли",
|
||||
"originalError": "Първоначална грешка",
|
||||
"showDetails": "Покажи детайли"
|
||||
},
|
||||
"errorTypes": {
|
||||
"AUTHORIZATION_ERROR": "Грешка при удостоверяване на разрешения",
|
||||
"CONNECTION_FAILED": "Връзката не бе осъществена",
|
||||
"AUTHORIZATION_ERROR": "Грешка при удостоверяване",
|
||||
"CONNECTION_FAILED": "Неуспешна връзка",
|
||||
"INITIALIZATION_TIMEOUT": "Времето за инициализация изтече",
|
||||
"PROCESS_SPAWN_ERROR": "Неуспешно стартиране на процеса",
|
||||
"PROCESS_SPAWN_ERROR": "Грешка при стартиране на процес",
|
||||
"UNKNOWN_ERROR": "Неизвестна грешка",
|
||||
"VALIDATION_ERROR": "Грешка при валидиране на параметрите"
|
||||
"VALIDATION_ERROR": "Грешка при валидация на параметрите"
|
||||
},
|
||||
"installError": "Инсталацията на MCP плъгина не бе успешна, причина: {{detail}}",
|
||||
"installMethods": {
|
||||
"manual": "Ръчна инсталация:",
|
||||
"recommended": "Препоръчителен метод за инсталация:"
|
||||
},
|
||||
"recheckDependencies": "Пре-проверка",
|
||||
"recheckDependencies": "Проверка отново на зависимостите",
|
||||
"skipDependencies": "Пропусни проверката"
|
||||
},
|
||||
"pluginList": "Списък с плъгини",
|
||||
"protocolInstall": {
|
||||
"actions": {
|
||||
"install": "Инсталирай",
|
||||
"installAnyway": "Инсталирай въпреки това",
|
||||
"installed": "Инсталиран"
|
||||
},
|
||||
"config": {
|
||||
"args": "Параметри",
|
||||
"command": "Команда",
|
||||
"env": "Променливи на средата",
|
||||
"headers": "Заглавки на заявката",
|
||||
"title": "Информация за конфигурация",
|
||||
"type": {
|
||||
"http": "Тип: HTTP",
|
||||
"label": "Тип",
|
||||
"stdio": "Тип: Stdio"
|
||||
},
|
||||
"url": "Адрес на услугата"
|
||||
},
|
||||
"custom": {
|
||||
"badge": "Персонализиран плъгин",
|
||||
"security": {
|
||||
"description": "Този плъгин не е официално проверен, инсталирането може да крие рискове за сигурността! Моля, уверете се, че имате доверие на източника на плъгина.",
|
||||
"title": "⚠️ Предупреждение за сигурност"
|
||||
},
|
||||
"title": "Инсталиране на персонализиран плъгин"
|
||||
},
|
||||
"marketplace": {
|
||||
"title": "Инсталиране на трети плъгини",
|
||||
"trustedBy": "Предоставено от {{name}}",
|
||||
"unverified": {
|
||||
"title": "Непроверени трети плъгини",
|
||||
"warning": "Този плъгин идва от непроверен трети пазар, моля уверете се, че имате доверие на източника преди инсталация."
|
||||
},
|
||||
"verified": "Проверен"
|
||||
},
|
||||
"messages": {
|
||||
"connectionTestFailed": "Тестът на връзката не бе успешен",
|
||||
"installError": "Инсталацията на плъгина не бе успешна, моля опитайте отново",
|
||||
"installSuccess": "Плъгинът {{name}} е инсталиран успешно!",
|
||||
"manifestError": "Неуспешно получаване на детайли за плъгина, моля проверете мрежовата връзка и опитайте отново",
|
||||
"manifestNotFound": "Не бе намерен описателен файл на плъгина"
|
||||
},
|
||||
"meta": {
|
||||
"author": "Автор",
|
||||
"homepage": "Начална страница",
|
||||
"identifier": "Идентификатор",
|
||||
"source": "Източник",
|
||||
"version": "Версия"
|
||||
},
|
||||
"official": {
|
||||
"badge": "Официален плъгин на LobeHub",
|
||||
"description": "Този плъгин е разработен и поддържан от LobeHub, преминал е строг контрол за сигурност и може да се използва с доверие.",
|
||||
"loadingMessage": "Зареждане на детайли за плъгина...",
|
||||
"loadingTitle": "Зареждане",
|
||||
"title": "Инсталиране на официален плъгин"
|
||||
},
|
||||
"title": "Инсталиране на MCP плъгин",
|
||||
"warning": "⚠️ Моля, уверете се, че имате доверие на източника на този плъгин, злонамерени плъгини могат да застрашат сигурността на вашата система."
|
||||
},
|
||||
"search": {
|
||||
"apiName": {
|
||||
"crawlMultiPages": "Четене на съдържанието на множество страници",
|
||||
"crawlSinglePage": "Чети съдържанието на страницата",
|
||||
"search": "Търсене на страница"
|
||||
"crawlMultiPages": "Четене на съдържание от множество страници",
|
||||
"crawlSinglePage": "Четене на съдържание от страница",
|
||||
"search": "Търсене на страници"
|
||||
},
|
||||
"config": {
|
||||
"addKey": "Добавяне на ключ",
|
||||
@@ -321,21 +381,21 @@
|
||||
"crawling": "Разпознаване на връзки",
|
||||
"detail": {
|
||||
"preview": "Преглед",
|
||||
"raw": "Оригинален текст",
|
||||
"tooLong": "Текстът е твърде дълъг, контекстът на разговора ще запази само първите {{characters}} символа, а останалата част няма да бъде включена в контекста на разговора"
|
||||
"raw": "Суров текст",
|
||||
"tooLong": "Текстът е твърде дълъг, в контекста на разговора се запазват само първите {{characters}} символа, останалата част не се включва в контекста"
|
||||
},
|
||||
"meta": {
|
||||
"crawler": "Режим на улавяне",
|
||||
"crawler": "Режим на обхождане",
|
||||
"words": "Брой символи"
|
||||
}
|
||||
},
|
||||
"searchxng": {
|
||||
"baseURL": "Моля, въведете",
|
||||
"description": "Моля, въведете URL адреса на SearchXNG, за да започнете търсене в мрежата",
|
||||
"description": "Въведете URL на SearchXNG, за да започнете търсене в мрежата",
|
||||
"keyPlaceholder": "Моля, въведете ключ",
|
||||
"title": "Конфигуриране на търсачката SearchXNG",
|
||||
"unconfiguredDesc": "Моля, свържете се с администратора, за да завършите конфигурацията на търсачката SearchXNG и да започнете търсене в мрежата",
|
||||
"unconfiguredTitle": "Търсачката SearchXNG все още не е конфигурирана"
|
||||
"title": "Конфигурация на търсачката SearchXNG",
|
||||
"unconfiguredDesc": "Моля, свържете се с администратора за конфигуриране на SearchXNG, за да започнете търсене в мрежата",
|
||||
"unconfiguredTitle": "SearchXNG не е конфигурирана"
|
||||
},
|
||||
"title": "Търсене в мрежата"
|
||||
},
|
||||
@@ -351,56 +411,56 @@
|
||||
"title": "Конфигурация на плъгина"
|
||||
},
|
||||
"connection": {
|
||||
"args": "Параметри за стартиране",
|
||||
"args": "Стартови параметри",
|
||||
"command": "Команда за стартиране",
|
||||
"title": "Информация за връзка",
|
||||
"type": "Тип връзка",
|
||||
"type": "Тип на връзката",
|
||||
"url": "Адрес на услугата"
|
||||
},
|
||||
"edit": "Редактиране",
|
||||
"envConfigDescription": "Тези настройки ще бъдат предадени като променливи на средата при стартиране на MCP сървъра",
|
||||
"httpTypeNotice": "MCP плъгините от тип HTTP нямат нужда от конфигуриране на променливи на средата",
|
||||
"httpTypeNotice": "HTTP тип MCP плъгини в момента не изискват конфигуриране на променливи на средата",
|
||||
"indexUrl": {
|
||||
"title": "Индекс на пазара",
|
||||
"tooltip": "Редактирането не се поддържа в момента"
|
||||
"tooltip": "В момента не се поддържа онлайн редактиране, моля настройте чрез променливи на средата при разгръщане"
|
||||
},
|
||||
"messages": {
|
||||
"connectionUpdateFailed": "Неуспешна актуализация на информацията за връзка",
|
||||
"connectionUpdateSuccess": "Информацията за връзка е успешно актуализирана",
|
||||
"envUpdateFailed": "Неуспешно запазване на променливите на средата",
|
||||
"envUpdateSuccess": "Променливите на средата са успешно запазени"
|
||||
"connectionUpdateFailed": "Актуализацията на информацията за връзка не бе успешна",
|
||||
"connectionUpdateSuccess": "Информацията за връзка е актуализирана успешно",
|
||||
"envUpdateFailed": "Записът на променливите на средата не бе успешен",
|
||||
"envUpdateSuccess": "Променливите на средата са записани успешно"
|
||||
},
|
||||
"modalDesc": "След като конфигурирате адреса на пазара на плъгини, можете да използвате персонализиран пазар на плъгини",
|
||||
"modalDesc": "След конфигуриране на адреса на пазара на плъгини, можете да използвате персонализиран пазар на плъгини",
|
||||
"rules": {
|
||||
"argsRequired": "Моля, въведете параметри за стартиране",
|
||||
"argsRequired": "Моля, въведете стартови параметри",
|
||||
"commandRequired": "Моля, въведете команда за стартиране",
|
||||
"urlRequired": "Моля, въведете адрес на услугата"
|
||||
},
|
||||
"saveSettings": "Запази настройките",
|
||||
"title": "Конфигуриране на пазара на плъгини"
|
||||
"title": "Настройки на пазара на плъгини"
|
||||
},
|
||||
"showInPortal": "Моля, вижте подробностите в работното пространство",
|
||||
"showInPortal": "Моля, прегледайте детайлите в работната област",
|
||||
"store": {
|
||||
"actions": {
|
||||
"cancel": "Отказване на инсталацията",
|
||||
"confirmUninstall": "Плъгинът е на път да бъде деинсталиран. След деинсталирането конфигурацията на плъгина ще бъде изчистена. Моля, потвърдете операцията си.",
|
||||
"detail": "Подробности",
|
||||
"cancel": "Отказ на инсталация",
|
||||
"confirmUninstall": "Ще деинсталирате този плъгин, след деинсталация конфигурацията му ще бъде изтрита, моля потвърдете действието си",
|
||||
"detail": "Детайли",
|
||||
"install": "Инсталирай",
|
||||
"manifest": "Редактирай инсталационния файл",
|
||||
"manifest": "Редактиране на инсталационния файл",
|
||||
"settings": "Настройки",
|
||||
"uninstall": "Деинсталирай"
|
||||
},
|
||||
"communityPlugin": "От трети страни",
|
||||
"customPlugin": "Персонализиран плъгин",
|
||||
"empty": "Все още няма инсталирани плъгини",
|
||||
"emptySelectHint": "Изберете плъгин, за да прегледате подробна информация",
|
||||
"communityPlugin": "Общностен плъгин",
|
||||
"customPlugin": "Персонализиран",
|
||||
"empty": "Няма инсталирани плъгини",
|
||||
"emptySelectHint": "Изберете плъгин за преглед на подробна информация",
|
||||
"installAllPlugins": "Инсталирай всички",
|
||||
"networkError": "Неуспешно извличане на магазина за плъгини. Моля, проверете мрежовата си връзка и опитайте отново",
|
||||
"placeholder": "Търсене на име на плъгин, описание или ключова дума...",
|
||||
"releasedAt": "Издаден на {{createdAt}}",
|
||||
"networkError": "Неуспешно зареждане на магазина за плъгини, моля проверете мрежовата връзка и опитайте отново",
|
||||
"placeholder": "Търсене по име, описание или ключови думи...",
|
||||
"releasedAt": "Публикуван на {{createdAt}}",
|
||||
"tabs": {
|
||||
"installed": "Инсталирани",
|
||||
"mcp": "MCP добавки",
|
||||
"mcp": "MCP плъгини",
|
||||
"old": "LobeChat плъгини"
|
||||
},
|
||||
"title": "Магазин за плъгини"
|
||||
|
||||
@@ -1,25 +1,25 @@
|
||||
{
|
||||
"confirm": "Bestätigen",
|
||||
"debug": {
|
||||
"arguments": "Argumente",
|
||||
"arguments": "Aufrufparameter",
|
||||
"function_call": "Funktionsaufruf",
|
||||
"off": "Debugging deaktivieren",
|
||||
"off": "Debugging ausschalten",
|
||||
"on": "Plugin-Aufrufinformationen anzeigen",
|
||||
"payload": "Plugin-Payload",
|
||||
"payload": "Plugin-Nutzlast",
|
||||
"pluginState": "Plugin-Zustand",
|
||||
"response": "Antwort",
|
||||
"title": "Plugin-Details",
|
||||
"tool_call": "Tool Call Request"
|
||||
"tool_call": "Werkzeugaufruf-Anfrage"
|
||||
},
|
||||
"detailModal": {
|
||||
"customPlugin": {
|
||||
"description": "Bitte gehen Sie zur Bearbeitungsseite, um Details anzuzeigen",
|
||||
"description": "Bitte besuchen Sie die Bearbeitungsseite für Details",
|
||||
"editBtn": "Jetzt bearbeiten",
|
||||
"title": "Dies ist ein benutzerdefiniertes Plugin"
|
||||
},
|
||||
"emptyState": {
|
||||
"description": "Bitte installieren Sie dieses Plugin, um die Funktionen und Konfigurationsoptionen anzuzeigen",
|
||||
"title": "Nach der Installation Plugin-Details anzeigen"
|
||||
"title": "Plugin-Details nach Installation anzeigen"
|
||||
},
|
||||
"info": {
|
||||
"description": "API-Beschreibung",
|
||||
@@ -33,17 +33,17 @@
|
||||
"title": "Plugin-Details"
|
||||
},
|
||||
"dev": {
|
||||
"confirmDeleteDevPlugin": "Möchten Sie das lokale Plugin wirklich löschen? Es kann nach dem Löschen nicht wiederhergestellt werden.",
|
||||
"confirmDeleteDevPlugin": "Dieses lokale Plugin wird gelöscht und kann nicht wiederhergestellt werden. Möchten Sie das Plugin wirklich löschen?",
|
||||
"customParams": {
|
||||
"useProxy": {
|
||||
"label": "Durch Proxy installieren (Bei Problemen mit Cross-Origin-Zugriffsfehlern können Sie versuchen, diese Option zu aktivieren und das Plugin erneut zu installieren)"
|
||||
"label": "Installation über Proxy (bei CORS-Fehlern bitte diese Option aktivieren und erneut installieren)"
|
||||
}
|
||||
},
|
||||
"deleteSuccess": "Plugin erfolgreich gelöscht",
|
||||
"manifest": {
|
||||
"identifier": {
|
||||
"desc": "Eindeutige Kennung des Plugins",
|
||||
"label": "Kennung"
|
||||
"label": "Bezeichner"
|
||||
},
|
||||
"mode": {
|
||||
"mcp": "MCP-Plugin",
|
||||
@@ -61,17 +61,17 @@
|
||||
"title": "Erweiterte Einstellungen"
|
||||
},
|
||||
"args": {
|
||||
"desc": "Liste der Parameter, die an den auszuführenden Befehl übergeben werden, normalerweise hier den MCP-Servernamen oder den Pfad zum Startskript eingeben",
|
||||
"desc": "Parameterliste für den Ausführungsbefehl, normalerweise hier MCP-Servername oder Startskript eingeben",
|
||||
"label": "Befehlsparameter",
|
||||
"placeholder": "Zum Beispiel: mcp-hello-world",
|
||||
"required": "Bitte geben Sie die Startparameter ein"
|
||||
"placeholder": "z.B.: mcp-hello-world",
|
||||
"required": "Bitte Startparameter eingeben"
|
||||
},
|
||||
"auth": {
|
||||
"bear": "API-Schlüssel",
|
||||
"desc": "Wählen Sie die Authentifizierungsmethode für den MCP-Server",
|
||||
"label": "Authentifizierungstyp",
|
||||
"none": "Keine Authentifizierung erforderlich",
|
||||
"placeholder": "Bitte Authentifizierungstyp auswählen",
|
||||
"placeholder": "Bitte Authentifizierungstyp wählen",
|
||||
"token": {
|
||||
"desc": "Geben Sie Ihren API-Schlüssel oder Bearer-Token ein",
|
||||
"label": "API-Schlüssel",
|
||||
@@ -80,71 +80,71 @@
|
||||
}
|
||||
},
|
||||
"avatar": {
|
||||
"label": "Plugin-Icon"
|
||||
"label": "Plugin-Symbol"
|
||||
},
|
||||
"command": {
|
||||
"desc": "Die ausführbare Datei oder das Skript zum Starten des MCP STDIO-Servers",
|
||||
"desc": "Ausführbare Datei oder Skript zum Starten des MCP STDIO Servers",
|
||||
"label": "Befehl",
|
||||
"placeholder": "Zum Beispiel: npx / uv / docker usw.",
|
||||
"required": "Bitte geben Sie den Startbefehl ein"
|
||||
"placeholder": "z.B.: npx / uv / docker usw.",
|
||||
"required": "Bitte Startbefehl eingeben"
|
||||
},
|
||||
"desc": {
|
||||
"desc": "Beschreibung des Plugins hinzufügen",
|
||||
"desc": "Fügen Sie eine Beschreibung des Plugins hinzu",
|
||||
"label": "Plugin-Beschreibung",
|
||||
"placeholder": "Ergänzen Sie Informationen zur Verwendung und zu Szenarien dieses Plugins"
|
||||
"placeholder": "Ergänzen Sie Informationen zur Nutzung und Anwendungsszenarien"
|
||||
},
|
||||
"endpoint": {
|
||||
"desc": "Geben Sie die Adresse Ihres MCP Streamable HTTP Servers ein",
|
||||
"label": "MCP Endpoint-URL"
|
||||
"label": "MCP Endpoint URL"
|
||||
},
|
||||
"env": {
|
||||
"add": "Neue Zeile hinzufügen",
|
||||
"desc": "Geben Sie die Umgebungsvariablen ein, die Ihr MCP-Server benötigt",
|
||||
"duplicateKeyError": "Feldschlüssel müssen eindeutig sein",
|
||||
"desc": "Geben Sie die Umgebungsvariablen für Ihren MCP Server ein",
|
||||
"duplicateKeyError": "Feldschlüssel muss eindeutig sein",
|
||||
"formValidationFailed": "Formularvalidierung fehlgeschlagen, bitte überprüfen Sie das Parameterformat",
|
||||
"keyRequired": "Feldschlüssel darf nicht leer sein",
|
||||
"label": "MCP-Server-Umgebungsvariablen",
|
||||
"stringifyError": "Parameter können nicht serialisiert werden, bitte überprüfen Sie das Parameterformat"
|
||||
"label": "MCP Server Umgebungsvariablen",
|
||||
"stringifyError": "Parameter können nicht serialisiert werden, bitte überprüfen Sie das Format"
|
||||
},
|
||||
"headers": {
|
||||
"add": "Neue Zeile hinzufügen",
|
||||
"desc": "HTTP-Anforderungsheader eingeben",
|
||||
"desc": "Geben Sie die HTTP-Header ein",
|
||||
"label": "HTTP-Header"
|
||||
},
|
||||
"identifier": {
|
||||
"desc": "Geben Sie Ihrem MCP-Plugin einen Namen, der englische Zeichen verwenden muss",
|
||||
"invalid": "Es dürfen nur englische Zeichen, Zahlen, - und _ verwendet werden",
|
||||
"label": "MCP-Plugin-Name",
|
||||
"desc": "Geben Sie Ihrem MCP-Plugin einen Namen, nur englische Zeichen erlaubt",
|
||||
"invalid": "Bezeichner darf nur Buchstaben, Zahlen, Bindestriche und Unterstriche enthalten",
|
||||
"label": "MCP Plugin-Name",
|
||||
"placeholder": "z.B.: my-mcp-plugin",
|
||||
"required": "Bitte geben Sie die MCP-Dienstkennung ein"
|
||||
"required": "Bitte MCP-Dienstbezeichner eingeben"
|
||||
},
|
||||
"previewManifest": "Vorschau auf die Plugin-Beschreibungsdatei",
|
||||
"quickImport": "Schnellimport von JSON-Konfiguration",
|
||||
"previewManifest": "Plugin-Manifest anzeigen",
|
||||
"quickImport": "Schnellimport JSON-Konfiguration",
|
||||
"quickImportError": {
|
||||
"empty": "Eingabefeld darf nicht leer sein",
|
||||
"empty": "Eingabe darf nicht leer sein",
|
||||
"invalidJson": "Ungültiges JSON-Format",
|
||||
"invalidStructure": "JSON-Format ist ungültig"
|
||||
"invalidStructure": "Ungültige JSON-Struktur"
|
||||
},
|
||||
"stdioNotSupported": "Die aktuelle Umgebung unterstützt keine stdio-Typ MCP-Plugins",
|
||||
"testConnection": "Verbindung testen",
|
||||
"testConnectionTip": "Die MCP-Plugins können erst nach erfolgreichem Test der Verbindung normal verwendet werden",
|
||||
"testConnectionTip": "Nach erfolgreichem Verbindungstest kann das MCP-Plugin normal verwendet werden",
|
||||
"type": {
|
||||
"desc": "Wählen Sie die Kommunikationsart des MCP-Plugins, die Webversion unterstützt nur Streamable HTTP",
|
||||
"desc": "Wählen Sie die Kommunikationsart des MCP-Plugins, Webversion unterstützt nur Streamable HTTP",
|
||||
"httpFeature1": "Kompatibel mit Web- und Desktop-Version",
|
||||
"httpFeature2": "Verbindung zu einem entfernten MCP-Server, keine zusätzliche Installation oder Konfiguration erforderlich",
|
||||
"httpShortDesc": "Kommunikationsprotokoll basierend auf Streaming-HTTP",
|
||||
"label": "MCP-Plugin-Typ",
|
||||
"stdioFeature1": "Geringere Kommunikationslatenz, geeignet für lokale Ausführung",
|
||||
"httpFeature2": "Verbindung zu entfernten MCP-Servern ohne zusätzliche Installation oder Konfiguration",
|
||||
"httpShortDesc": "Kommunikationsprotokoll basierend auf Streaming HTTP",
|
||||
"label": "MCP Plugin-Typ",
|
||||
"stdioFeature1": "Geringere Latenz, geeignet für lokale Ausführung",
|
||||
"stdioFeature2": "MCP-Server muss lokal installiert und ausgeführt werden",
|
||||
"stdioNotAvailable": "Der STDIO-Modus ist nur in der Desktop-Version verfügbar",
|
||||
"stdioShortDesc": "Kommunikationsprotokoll basierend auf Standard-Eingabe und -Ausgabe",
|
||||
"title": "MCP-Plugin-Typ"
|
||||
"stdioNotAvailable": "STDIO-Modus nur in der Desktop-Version verfügbar",
|
||||
"stdioShortDesc": "Kommunikationsprotokoll basierend auf Standard-Ein-/Ausgabe",
|
||||
"title": "MCP Plugin-Typ"
|
||||
},
|
||||
"url": {
|
||||
"desc": "Geben Sie Ihre MCP-Server-Streamable-HTTP-Adresse ein, SSE-Modus wird nicht unterstützt",
|
||||
"desc": "Geben Sie die Streamable HTTP-Adresse Ihres MCP Servers ein, SSE-Modus wird nicht unterstützt",
|
||||
"invalid": "Bitte geben Sie eine gültige URL ein",
|
||||
"label": "HTTP Endpoint-URL",
|
||||
"required": "Bitte geben Sie die MCP-Dienst-URL ein"
|
||||
"label": "Streamable HTTP Endpoint URL",
|
||||
"required": "Bitte MCP-Dienst-URL eingeben"
|
||||
}
|
||||
},
|
||||
"meta": {
|
||||
@@ -153,30 +153,30 @@
|
||||
"label": "Autor"
|
||||
},
|
||||
"avatar": {
|
||||
"desc": "Symbol des Plugins, kann Emoji oder URL verwenden",
|
||||
"desc": "Plugin-Symbol, Emoji oder URL möglich",
|
||||
"label": "Symbol"
|
||||
},
|
||||
"description": {
|
||||
"desc": "Plugin-Beschreibung",
|
||||
"label": "Beschreibung",
|
||||
"placeholder": "Informationen von Suchmaschinen abrufen"
|
||||
"placeholder": "Informationen über Suchmaschinen abrufen"
|
||||
},
|
||||
"formFieldRequired": "Dieses Feld ist erforderlich",
|
||||
"homepage": {
|
||||
"desc": "Startseite des Plugins",
|
||||
"label": "Startseite"
|
||||
"desc": "Homepage des Plugins",
|
||||
"label": "Homepage"
|
||||
},
|
||||
"identifier": {
|
||||
"desc": "Eindeutige Kennung des Plugins, wird automatisch aus dem Manifest erkannt",
|
||||
"errorDuplicate": "Kennung ist bereits für ein anderes Plugin vergeben. Bitte ändern Sie die Kennung",
|
||||
"label": "Kennung",
|
||||
"pattenErrorMessage": "Es können nur Buchstaben, Zahlen, - und _ eingegeben werden"
|
||||
"desc": "Eindeutiger Bezeichner des Plugins, wird automatisch aus dem Manifest erkannt",
|
||||
"errorDuplicate": "Bezeichner ist bereits vergeben, bitte ändern",
|
||||
"label": "Bezeichner",
|
||||
"pattenErrorMessage": "Nur englische Buchstaben, Zahlen, - und _ sind erlaubt"
|
||||
},
|
||||
"lobe": "{{appName}} Plugin",
|
||||
"manifest": {
|
||||
"desc": "{{appName}} wird das Plugin über diesen Link installieren.",
|
||||
"label": "Plugin-Beschreibungsdatei (Manifest) URL",
|
||||
"preview": "Vorschau des Manifests",
|
||||
"desc": "{{appName}} installiert das Plugin über diesen Link",
|
||||
"label": "Plugin-Manifest-URL",
|
||||
"preview": "Manifest anzeigen",
|
||||
"refresh": "Aktualisieren"
|
||||
},
|
||||
"openai": "OpenAI Plugin",
|
||||
@@ -186,10 +186,10 @@
|
||||
"placeholder": "Suchmaschine"
|
||||
}
|
||||
},
|
||||
"metaConfig": "Konfiguration der Plugin-Metadaten",
|
||||
"modalDesc": "Nach dem Hinzufügen eines benutzerdefinierten Plugins kann es zur Validierung der Plugin-Entwicklung verwendet oder direkt in Unterhaltungen verwendet werden. Weitere Informationen zur Plugin-Entwicklung finden Sie in den <1>Entwicklerdokumenten↗</>.",
|
||||
"metaConfig": "Plugin-Metainformationen konfigurieren",
|
||||
"modalDesc": "Nach dem Hinzufügen eines benutzerdefinierten Plugins kann es zur Plugin-Entwicklung und -Verifizierung oder direkt im Chat verwendet werden. Für die Plugin-Entwicklung siehe <1>Entwicklerdokumentation↗</>.",
|
||||
"openai": {
|
||||
"importUrl": "Von URL-Link importieren",
|
||||
"importUrl": "Von URL importieren",
|
||||
"schema": "Schema"
|
||||
},
|
||||
"preview": {
|
||||
@@ -197,42 +197,42 @@
|
||||
"noParams": "Dieses Tool hat keine Parameter",
|
||||
"noResults": "Keine API gefunden, die den Suchkriterien entspricht",
|
||||
"params": "Parameter:",
|
||||
"searchPlaceholder": "Werkzeug suchen..."
|
||||
"searchPlaceholder": "Werkzeuge suchen..."
|
||||
},
|
||||
"card": "Vorschau der Plugin-Anzeige",
|
||||
"desc": "Vorschau der Plugin-Beschreibung",
|
||||
"card": "Plugin-Vorschau",
|
||||
"desc": "Plugin-Beschreibung anzeigen",
|
||||
"empty": {
|
||||
"desc": "Nach der Konfiguration können Sie hier die unterstützten Funktionen des Plugins anzeigen",
|
||||
"title": "Vorschau starten nach Plugin-Konfiguration"
|
||||
"desc": "Nach der Konfiguration können hier die unterstützten Funktionen des Plugins angezeigt werden",
|
||||
"title": "Plugin nach Konfiguration vorschauen"
|
||||
},
|
||||
"title": "Vorschau des Plugin-Namens"
|
||||
"title": "Plugin-Namensvorschau"
|
||||
},
|
||||
"save": "Plugin installieren",
|
||||
"saveSuccess": "Plugin-Einstellungen erfolgreich gespeichert",
|
||||
"tabs": {
|
||||
"manifest": "Funktionsbeschreibungsliste (Manifest)",
|
||||
"meta": "Plugin-Metadaten"
|
||||
"manifest": "Funktionsbeschreibung (Manifest)",
|
||||
"meta": "Plugin-Metainformationen"
|
||||
},
|
||||
"title": {
|
||||
"create": "Benutzerdefiniertes Plugin hinzufügen",
|
||||
"edit": "Benutzerdefiniertes Plugin bearbeiten"
|
||||
},
|
||||
"type": {
|
||||
"lobe": "LobeChat-Plugin",
|
||||
"openai": "OpenAI-Plugin"
|
||||
"lobe": "{{appName}} Plugin",
|
||||
"openai": "OpenAI Plugin"
|
||||
},
|
||||
"update": "Aktualisieren",
|
||||
"updateSuccess": "Plugin-Einstellungen erfolgreich aktualisiert"
|
||||
},
|
||||
"error": {
|
||||
"fetchError": "Fehler beim Abrufen des Manifest-Links. Stellen Sie sicher, dass der Link gültig ist und dass die Cross-Origin-Anfrage erlaubt ist.",
|
||||
"installError": "Fehler bei der Installation des Plugins {{name}}.",
|
||||
"manifestInvalid": "Das Manifest entspricht nicht den Standards. Validierungsergebnis: \n\n {{error}}",
|
||||
"noManifest": "Manifest nicht vorhanden",
|
||||
"openAPIInvalid": "Fehler beim Parsen von OpenAPI. Fehler: \n\n {{error}}",
|
||||
"reinstallError": "Fehler beim Aktualisieren des Plugins {{name}}.",
|
||||
"testConnectionFailed": "Manifest konnte nicht abgerufen werden: {{error}}",
|
||||
"urlError": "Der Link hat keine JSON-Format-Inhalte zurückgegeben. Stellen Sie sicher, dass der Link gültig ist."
|
||||
"fetchError": "Abruf des Manifest-Links fehlgeschlagen. Bitte überprüfen Sie die Gültigkeit des Links und ob CORS-Zugriff erlaubt ist.",
|
||||
"installError": "Installation des Plugins {{name}} fehlgeschlagen",
|
||||
"manifestInvalid": "Manifest entspricht nicht den Vorgaben, Validierungsergebnis: \n\n {{error}}",
|
||||
"noManifest": "Manifest-Datei nicht gefunden",
|
||||
"openAPIInvalid": "OpenAPI-Parsing fehlgeschlagen, Fehler: \n\n {{error}}",
|
||||
"reinstallError": "Aktualisierung des Plugins {{name}} fehlgeschlagen",
|
||||
"testConnectionFailed": "Manifest-Abruf fehlgeschlagen: {{error}}",
|
||||
"urlError": "Der Link liefert keinen JSON-Inhalt. Bitte stellen Sie sicher, dass es sich um einen gültigen Link handelt."
|
||||
},
|
||||
"inspector": {
|
||||
"args": "Parameterliste anzeigen",
|
||||
@@ -240,38 +240,38 @@
|
||||
},
|
||||
"list": {
|
||||
"item": {
|
||||
"deprecated.title": "Veraltet",
|
||||
"deprecated.title": "Gelöscht",
|
||||
"local.config": "Konfiguration",
|
||||
"local.title": "Benutzerdefiniert"
|
||||
}
|
||||
},
|
||||
"loading": {
|
||||
"content": "Plugin wird aufgerufen...",
|
||||
"plugin": "Plugin wird ausgeführt..."
|
||||
"plugin": "Plugin läuft..."
|
||||
},
|
||||
"localSystem": {
|
||||
"apiName": {
|
||||
"listLocalFiles": "Dateiliste anzeigen",
|
||||
"moveLocalFiles": "Dateien verschieben",
|
||||
"readLocalFile": "Dateiinhalt lesen",
|
||||
"renameLocalFile": "Umbenennen",
|
||||
"renameLocalFile": "Datei umbenennen",
|
||||
"searchLocalFiles": "Dateien suchen",
|
||||
"writeLocalFile": "Datei schreiben"
|
||||
},
|
||||
"title": "Lokale Dateien"
|
||||
},
|
||||
"mcpInstall": {
|
||||
"CHECKING_INSTALLATION": "Installationsumgebung wird überprüft...",
|
||||
"CHECKING_INSTALLATION": "Installationsumgebung wird geprüft...",
|
||||
"COMPLETED": "Installation abgeschlossen",
|
||||
"CONFIGURATION_REQUIRED": "Bitte schließen Sie die erforderliche Konfiguration ab, um mit der Installation fortzufahren",
|
||||
"CONFIGURATION_REQUIRED": "Bitte konfigurieren Sie die erforderlichen Einstellungen, um fortzufahren",
|
||||
"ERROR": "Installationsfehler",
|
||||
"FETCHING_MANIFEST": "Plugin-Manifest wird abgerufen...",
|
||||
"GETTING_SERVER_MANIFEST": "MCP-Server wird initialisiert...",
|
||||
"INSTALLING_PLUGIN": "Plugin wird installiert...",
|
||||
"configurationDescription": "Dieses MCP-Plugin benötigt Konfigurationsparameter, um ordnungsgemäß zu funktionieren. Bitte füllen Sie die notwendigen Konfigurationsinformationen aus.",
|
||||
"configurationRequired": "Plugin-Parameter konfigurieren",
|
||||
"configurationDescription": "Dieses MCP-Plugin benötigt Konfigurationsparameter zur ordnungsgemäßen Nutzung. Bitte füllen Sie die erforderlichen Informationen aus.",
|
||||
"configurationRequired": "Plugin-Konfiguration erforderlich",
|
||||
"continueInstall": "Installation fortsetzen",
|
||||
"dependenciesDescription": "Dieses Plugin benötigt die Installation folgender Systemabhängigkeiten, um korrekt zu funktionieren. Bitte installieren Sie die fehlenden Abhängigkeiten gemäß Anleitung und klicken Sie anschließend auf 'Erneut prüfen', um die Installation fortzusetzen.",
|
||||
"dependenciesDescription": "Dieses Plugin benötigt folgende Systemabhängigkeiten. Bitte installieren Sie die fehlenden Abhängigkeiten gemäß Anleitung und klicken Sie auf 'Erneut prüfen', um fortzufahren.",
|
||||
"dependenciesRequired": "Bitte installieren Sie die Systemabhängigkeiten des Plugins",
|
||||
"dependencyStatus": {
|
||||
"installed": "Installiert",
|
||||
@@ -284,18 +284,18 @@
|
||||
"connectionParams": "Verbindungsparameter",
|
||||
"env": "Umgebungsvariablen",
|
||||
"errorOutput": "Fehlerprotokoll",
|
||||
"exitCode": "Beendigungscode",
|
||||
"exitCode": "Exit-Code",
|
||||
"hideDetails": "Details ausblenden",
|
||||
"originalError": "Ursprünglicher Fehler",
|
||||
"originalError": "Originalfehler",
|
||||
"showDetails": "Details anzeigen"
|
||||
},
|
||||
"errorTypes": {
|
||||
"AUTHORIZATION_ERROR": "Autorisierungsfehler",
|
||||
"CONNECTION_FAILED": "Verbindung fehlgeschlagen",
|
||||
"INITIALIZATION_TIMEOUT": "Initialisierung zeitüberschritten",
|
||||
"INITIALIZATION_TIMEOUT": "Initialisierungstimeout",
|
||||
"PROCESS_SPAWN_ERROR": "Prozessstart fehlgeschlagen",
|
||||
"UNKNOWN_ERROR": "Unbekannter Fehler",
|
||||
"VALIDATION_ERROR": "Parameterüberprüfung fehlgeschlagen"
|
||||
"VALIDATION_ERROR": "Parametervalidierung fehlgeschlagen"
|
||||
},
|
||||
"installError": "MCP-Plugin-Installation fehlgeschlagen, Grund: {{detail}}",
|
||||
"installMethods": {
|
||||
@@ -306,23 +306,83 @@
|
||||
"skipDependencies": "Prüfung überspringen"
|
||||
},
|
||||
"pluginList": "Plugin-Liste",
|
||||
"protocolInstall": {
|
||||
"actions": {
|
||||
"install": "Installieren",
|
||||
"installAnyway": "Trotzdem installieren",
|
||||
"installed": "Installiert"
|
||||
},
|
||||
"config": {
|
||||
"args": "Parameter",
|
||||
"command": "Befehl",
|
||||
"env": "Umgebungsvariablen",
|
||||
"headers": "Header",
|
||||
"title": "Konfigurationsinformationen",
|
||||
"type": {
|
||||
"http": "Typ: HTTP",
|
||||
"label": "Typ",
|
||||
"stdio": "Typ: Stdio"
|
||||
},
|
||||
"url": "Serveradresse"
|
||||
},
|
||||
"custom": {
|
||||
"badge": "Benutzerdefiniertes Plugin",
|
||||
"security": {
|
||||
"description": "Dieses Plugin wurde nicht offiziell verifiziert. Die Installation kann Sicherheitsrisiken bergen! Bitte stellen Sie sicher, dass Sie der Quelle vertrauen.",
|
||||
"title": "⚠️ Sicherheitshinweis"
|
||||
},
|
||||
"title": "Benutzerdefiniertes Plugin installieren"
|
||||
},
|
||||
"marketplace": {
|
||||
"title": "Drittanbieter-Plugins installieren",
|
||||
"trustedBy": "Bereitgestellt von {{name}}",
|
||||
"unverified": {
|
||||
"title": "Unverifiziertes Drittanbieter-Plugin",
|
||||
"warning": "Dieses Plugin stammt aus einem unverifizierten Drittanbieter-Markt. Bitte stellen Sie vor der Installation sicher, dass Sie der Quelle vertrauen."
|
||||
},
|
||||
"verified": "Verifiziert"
|
||||
},
|
||||
"messages": {
|
||||
"connectionTestFailed": "Verbindungstest fehlgeschlagen",
|
||||
"installError": "Plugin-Installation fehlgeschlagen, bitte erneut versuchen",
|
||||
"installSuccess": "Plugin {{name}} erfolgreich installiert!",
|
||||
"manifestError": "Plugin-Details konnten nicht abgerufen werden. Bitte überprüfen Sie Ihre Netzwerkverbindung und versuchen Sie es erneut.",
|
||||
"manifestNotFound": "Plugin-Manifest konnte nicht gefunden werden"
|
||||
},
|
||||
"meta": {
|
||||
"author": "Autor",
|
||||
"homepage": "Homepage",
|
||||
"identifier": "Bezeichner",
|
||||
"source": "Quelle",
|
||||
"version": "Version"
|
||||
},
|
||||
"official": {
|
||||
"badge": "Offizielles LobeHub Plugin",
|
||||
"description": "Dieses Plugin wird von LobeHub offiziell entwickelt und gepflegt, es wurde streng auf Sicherheit geprüft und kann bedenkenlos verwendet werden.",
|
||||
"loadingMessage": "Plugin-Details werden geladen...",
|
||||
"loadingTitle": "Lädt",
|
||||
"title": "Offizielles Plugin installieren"
|
||||
},
|
||||
"title": "MCP Plugin installieren",
|
||||
"warning": "⚠️ Bitte stellen Sie sicher, dass Sie der Quelle dieses Plugins vertrauen. Bösartige Plugins können die Systemsicherheit gefährden."
|
||||
},
|
||||
"search": {
|
||||
"apiName": {
|
||||
"crawlMultiPages": "Inhalte mehrerer Seiten lesen",
|
||||
"crawlMultiPages": "Mehrere Seiteninhalt lesen",
|
||||
"crawlSinglePage": "Seiteninhalt lesen",
|
||||
"search": "Seite suchen"
|
||||
"search": "Seite durchsuchen"
|
||||
},
|
||||
"config": {
|
||||
"addKey": "Schlüssel hinzufügen",
|
||||
"close": "Löschen",
|
||||
"confirm": "Konfiguration abgeschlossen und erneut versucht"
|
||||
"confirm": "Konfiguration abgeschlossen und erneut versuchen"
|
||||
},
|
||||
"crawPages": {
|
||||
"crawling": "Linkerkennung läuft",
|
||||
"crawling": "Link-Erkennung läuft",
|
||||
"detail": {
|
||||
"preview": "Vorschau",
|
||||
"raw": "Ursprünglicher Text",
|
||||
"tooLong": "Der Textinhalt ist zu lang, der Kontext des Gesprächs behält nur die ersten {{characters}} Zeichen bei, der übersteigende Teil wird nicht in den Gesprächskontext einbezogen."
|
||||
"raw": "Rohtext",
|
||||
"tooLong": "Text ist zu lang, der Gesprächskontext behält nur die ersten {{characters}} Zeichen, der Rest wird nicht berücksichtigt"
|
||||
},
|
||||
"meta": {
|
||||
"crawler": "Crawler-Modus",
|
||||
@@ -333,13 +393,13 @@
|
||||
"baseURL": "Bitte eingeben",
|
||||
"description": "Geben Sie die URL von SearchXNG ein, um mit der Online-Suche zu beginnen",
|
||||
"keyPlaceholder": "Bitte Schlüssel eingeben",
|
||||
"title": "SearchXNG-Suchmaschine konfigurieren",
|
||||
"unconfiguredDesc": "Bitte wenden Sie sich an den Administrator, um die Konfiguration der SearchXNG-Suchmaschine abzuschließen und mit der Online-Suche zu beginnen",
|
||||
"unconfiguredTitle": "SearchXNG-Suchmaschine ist noch nicht konfiguriert"
|
||||
"title": "SearchXNG Suchmaschine konfigurieren",
|
||||
"unconfiguredDesc": "Bitte kontaktieren Sie den Administrator, um die SearchXNG Suchmaschine zu konfigurieren und die Online-Suche zu starten",
|
||||
"unconfiguredTitle": "SearchXNG Suchmaschine nicht konfiguriert"
|
||||
},
|
||||
"title": "Online-Suche"
|
||||
},
|
||||
"setting": "Plugin-Einstellung",
|
||||
"setting": "Plugin-Einstellungen",
|
||||
"settings": {
|
||||
"capabilities": {
|
||||
"prompts": "Eingabeaufforderungen",
|
||||
@@ -355,53 +415,53 @@
|
||||
"command": "Startbefehl",
|
||||
"title": "Verbindungsinformationen",
|
||||
"type": "Verbindungstyp",
|
||||
"url": "Dienstadresse"
|
||||
"url": "Serveradresse"
|
||||
},
|
||||
"edit": "Bearbeiten",
|
||||
"envConfigDescription": "Diese Konfigurationen werden als Umgebungsvariablen beim Start des MCP-Servers an den Prozess übergeben",
|
||||
"httpTypeNotice": "Für HTTP-Typ MCP-Plugins sind derzeit keine Umgebungsvariablen zu konfigurieren",
|
||||
"httpTypeNotice": "HTTP-Typ MCP-Plugins benötigen derzeit keine Umgebungsvariablen-Konfiguration",
|
||||
"indexUrl": {
|
||||
"title": "Marktindex",
|
||||
"tooltip": "Online-Bearbeitung wird derzeit nicht unterstützt. Bitte über Umgebungsvariablen bei der Bereitstellung festlegen."
|
||||
"tooltip": "Online-Bearbeitung wird derzeit nicht unterstützt, bitte konfigurieren Sie über Umgebungsvariablen bei der Bereitstellung"
|
||||
},
|
||||
"messages": {
|
||||
"connectionUpdateFailed": "Aktualisierung der Verbindungsinformationen fehlgeschlagen",
|
||||
"connectionUpdateFailed": "Verbindungsinformationen konnten nicht aktualisiert werden",
|
||||
"connectionUpdateSuccess": "Verbindungsinformationen erfolgreich aktualisiert",
|
||||
"envUpdateFailed": "Speichern der Umgebungsvariablen fehlgeschlagen",
|
||||
"envUpdateFailed": "Umgebungsvariablen konnten nicht gespeichert werden",
|
||||
"envUpdateSuccess": "Umgebungsvariablen erfolgreich gespeichert"
|
||||
},
|
||||
"modalDesc": "Nachdem Sie die Adresse des Plugin-Marktes konfiguriert haben, können Sie den benutzerdefinierten Plugin-Markt verwenden.",
|
||||
"modalDesc": "Nach Konfiguration der Plugin-Marktplatz-Adresse können benutzerdefinierte Plugin-Marktplätze verwendet werden",
|
||||
"rules": {
|
||||
"argsRequired": "Bitte Startparameter eingeben",
|
||||
"commandRequired": "Bitte Startbefehl eingeben",
|
||||
"urlRequired": "Bitte Dienstadresse eingeben"
|
||||
"urlRequired": "Bitte Serveradresse eingeben"
|
||||
},
|
||||
"saveSettings": "Einstellungen speichern",
|
||||
"title": "Plugin-Markteinstellungen"
|
||||
"title": "Plugin-Marktplatz konfigurieren"
|
||||
},
|
||||
"showInPortal": "Bitte überprüfen Sie die Details im Portal",
|
||||
"showInPortal": "Bitte Details im Arbeitsbereich ansehen",
|
||||
"store": {
|
||||
"actions": {
|
||||
"cancel": "Installation abbrechen",
|
||||
"confirmUninstall": "Das Plugin wird deinstalliert und alle Konfigurationen werden gelöscht. Bitte bestätigen Sie Ihre Aktion.",
|
||||
"confirmUninstall": "Dieses Plugin wird deinstalliert und die Konfiguration gelöscht. Bitte bestätigen Sie Ihre Aktion.",
|
||||
"detail": "Details",
|
||||
"install": "Installieren",
|
||||
"manifest": "Installationsdatei bearbeiten",
|
||||
"settings": "Einstellungen",
|
||||
"uninstall": "Deinstallieren"
|
||||
},
|
||||
"communityPlugin": "Community",
|
||||
"communityPlugin": "Community-Plugin",
|
||||
"customPlugin": "Benutzerdefiniert",
|
||||
"empty": "Keine installierten Plugins vorhanden",
|
||||
"emptySelectHint": "Wählen Sie ein Plugin aus, um Details anzuzeigen",
|
||||
"empty": "Keine installierten Plugins",
|
||||
"emptySelectHint": "Wählen Sie ein Plugin, um Details anzuzeigen",
|
||||
"installAllPlugins": "Alle installieren",
|
||||
"networkError": "Fehler beim Abrufen des Plugin-Shops. Bitte überprüfen Sie die Netzwerkverbindung und versuchen Sie es erneut.",
|
||||
"placeholder": "Suche nach Plugin-Namen, Beschreibung oder Stichwort...",
|
||||
"networkError": "Plugin-Shop konnte nicht geladen werden. Bitte überprüfen Sie Ihre Netzwerkverbindung und versuchen Sie es erneut.",
|
||||
"placeholder": "Plugin-Namen, Beschreibung oder Schlüsselwörter suchen...",
|
||||
"releasedAt": "Veröffentlicht am {{createdAt}}",
|
||||
"tabs": {
|
||||
"installed": "Installiert",
|
||||
"mcp": "MCP-Plugin",
|
||||
"old": "LobeChat-Plugin"
|
||||
"mcp": "MCP Plugins",
|
||||
"old": "LobeChat Plugins"
|
||||
},
|
||||
"title": "Plugin-Shop"
|
||||
},
|
||||
|
||||
@@ -1,19 +1,19 @@
|
||||
{
|
||||
"confirm": "Confirm",
|
||||
"debug": {
|
||||
"arguments": "Arguments",
|
||||
"arguments": "Call Arguments",
|
||||
"function_call": "Function Call",
|
||||
"off": "Turn off debug",
|
||||
"on": "View plugin invocation information",
|
||||
"payload": "plugin payload",
|
||||
"off": "Turn Off Debug",
|
||||
"on": "View Plugin Call Info",
|
||||
"payload": "Plugin Payload",
|
||||
"pluginState": "Plugin State",
|
||||
"response": "Response",
|
||||
"title": "Plugin Details",
|
||||
"tool_call": "tool call request"
|
||||
"tool_call": "Tool Call Request"
|
||||
},
|
||||
"detailModal": {
|
||||
"customPlugin": {
|
||||
"description": "Please visit the edit page to view details",
|
||||
"description": "Please go to the edit page to view details",
|
||||
"editBtn": "Edit Now",
|
||||
"title": "This is a Custom Plugin"
|
||||
},
|
||||
@@ -33,16 +33,16 @@
|
||||
"title": "Plugin Details"
|
||||
},
|
||||
"dev": {
|
||||
"confirmDeleteDevPlugin": "Are you sure you want to delete this local plugin? Once deleted, it cannot be recovered.",
|
||||
"confirmDeleteDevPlugin": "This local plugin will be deleted and cannot be recovered. Do you want to delete this plugin?",
|
||||
"customParams": {
|
||||
"useProxy": {
|
||||
"label": "Install via proxy (if encountering cross-origin access errors, try enabling this option and reinstalling)"
|
||||
"label": "Install via Proxy (If you encounter cross-origin access errors, try enabling this option and reinstalling)"
|
||||
}
|
||||
},
|
||||
"deleteSuccess": "Plugin deleted successfully",
|
||||
"manifest": {
|
||||
"identifier": {
|
||||
"desc": "The unique identifier of the plugin",
|
||||
"desc": "Unique identifier of the plugin",
|
||||
"label": "Identifier"
|
||||
},
|
||||
"mode": {
|
||||
@@ -51,7 +51,7 @@
|
||||
"url": "Online Link"
|
||||
},
|
||||
"name": {
|
||||
"desc": "The title of the plugin",
|
||||
"desc": "Plugin title",
|
||||
"label": "Title",
|
||||
"placeholder": "Search Engine"
|
||||
}
|
||||
@@ -61,50 +61,50 @@
|
||||
"title": "Advanced Settings"
|
||||
},
|
||||
"args": {
|
||||
"desc": "A list of parameters to be passed to the execution command, typically the MCP server name or the path to the startup script.",
|
||||
"label": "Command Parameters",
|
||||
"placeholder": "For example: mcp-hello-world",
|
||||
"required": "Please enter the startup parameters"
|
||||
"desc": "List of parameters passed to the execution command, usually the MCP server name or startup script path",
|
||||
"label": "Command Arguments",
|
||||
"placeholder": "e.g., mcp-hello-world",
|
||||
"required": "Please enter startup parameters"
|
||||
},
|
||||
"auth": {
|
||||
"bear": "API Key",
|
||||
"desc": "Select the authentication method for the MCP server",
|
||||
"label": "Authentication Type",
|
||||
"none": "No Authentication Required",
|
||||
"placeholder": "Please select an authentication type",
|
||||
"placeholder": "Please select authentication type",
|
||||
"token": {
|
||||
"desc": "Enter your API Key or Bearer Token",
|
||||
"label": "API Key",
|
||||
"placeholder": "sk-xxxxx",
|
||||
"required": "Please enter the authentication token"
|
||||
"required": "Please enter authentication token"
|
||||
}
|
||||
},
|
||||
"avatar": {
|
||||
"label": "Plugin Icon"
|
||||
},
|
||||
"command": {
|
||||
"desc": "The executable file or script used to start the MCP STDIO Server",
|
||||
"desc": "Executable file or script used to start the MCP STDIO Server",
|
||||
"label": "Command",
|
||||
"placeholder": "For example: npx / uv / docker, etc.",
|
||||
"required": "Please enter the startup command"
|
||||
"placeholder": "e.g., npx / uv / docker etc.",
|
||||
"required": "Please enter startup command"
|
||||
},
|
||||
"desc": {
|
||||
"desc": "Add a description for the plugin",
|
||||
"label": "Plugin Description",
|
||||
"placeholder": "Provide usage instructions and context for this plugin"
|
||||
"placeholder": "Supplement usage instructions and scenarios for this plugin"
|
||||
},
|
||||
"endpoint": {
|
||||
"desc": "Enter the address of your MCP Streamable HTTP Server",
|
||||
"label": "MCP Endpoint URL"
|
||||
},
|
||||
"env": {
|
||||
"add": "Add a new line",
|
||||
"desc": "Enter the environment variables required for your MCP Server",
|
||||
"add": "Add a Row",
|
||||
"desc": "Enter environment variables required by your MCP Server",
|
||||
"duplicateKeyError": "Field keys must be unique",
|
||||
"formValidationFailed": "Form validation failed, please check the parameter format",
|
||||
"formValidationFailed": "Form validation failed, please check parameter format",
|
||||
"keyRequired": "Field key cannot be empty",
|
||||
"label": "MCP Server Environment Variables",
|
||||
"stringifyError": "Unable to serialize parameters, please check the parameter format"
|
||||
"stringifyError": "Unable to serialize parameters, please check parameter format"
|
||||
},
|
||||
"headers": {
|
||||
"add": "Add a Row",
|
||||
@@ -112,230 +112,290 @@
|
||||
"label": "HTTP Headers"
|
||||
},
|
||||
"identifier": {
|
||||
"desc": "Specify a name for your MCP plugin, using English characters",
|
||||
"invalid": "Only English letters, numbers, - and _ are allowed",
|
||||
"desc": "Specify a name for your MCP plugin, must use English characters",
|
||||
"invalid": "Identifier can only contain letters, numbers, hyphens, and underscores",
|
||||
"label": "MCP Plugin Name",
|
||||
"placeholder": "e.g., my-mcp-plugin",
|
||||
"required": "Please enter the MCP service identifier"
|
||||
"required": "Please enter MCP service identifier"
|
||||
},
|
||||
"previewManifest": "Preview Plugin Description File",
|
||||
"previewManifest": "Preview Plugin Manifest",
|
||||
"quickImport": "Quick Import JSON Configuration",
|
||||
"quickImportError": {
|
||||
"empty": "Input cannot be empty",
|
||||
"empty": "Input content cannot be empty",
|
||||
"invalidJson": "Invalid JSON format",
|
||||
"invalidStructure": "Invalid JSON structure"
|
||||
},
|
||||
"stdioNotSupported": "The current environment does not support stdio type MCP plugins",
|
||||
"stdioNotSupported": "Current environment does not support stdio type MCP plugins",
|
||||
"testConnection": "Test Connection",
|
||||
"testConnectionTip": "The MCP plugin can only be used normally after a successful connection test",
|
||||
"testConnectionTip": "MCP plugin can only be used normally after successful connection test",
|
||||
"type": {
|
||||
"desc": "Select the communication method for the MCP plugin; the web version only supports Streamable HTTP",
|
||||
"httpFeature1": "Compatible with both web and desktop versions",
|
||||
"httpFeature2": "Connect to a remote MCP server without additional installation or configuration",
|
||||
"httpShortDesc": "A streaming HTTP-based communication protocol",
|
||||
"desc": "Select MCP plugin communication method, web version only supports Streamable HTTP",
|
||||
"httpFeature1": "Compatible with web and desktop versions",
|
||||
"httpFeature2": "Connect to remote MCP server without extra installation or configuration",
|
||||
"httpShortDesc": "Streamable HTTP based communication protocol",
|
||||
"label": "MCP Plugin Type",
|
||||
"stdioFeature1": "Lower communication latency, suitable for local execution",
|
||||
"stdioFeature2": "Requires local installation and running of the MCP server",
|
||||
"stdioNotAvailable": "STDIO mode is only available in the desktop version",
|
||||
"stdioShortDesc": "A communication protocol based on standard input and output",
|
||||
"stdioFeature2": "Requires local installation and running of MCP server",
|
||||
"stdioNotAvailable": "STDIO mode is only available in desktop version",
|
||||
"stdioShortDesc": "Communication protocol based on standard input/output",
|
||||
"title": "MCP Plugin Type"
|
||||
},
|
||||
"url": {
|
||||
"desc": "Enter your MCP Server Streamable HTTP address, SSE mode is not supported.",
|
||||
"desc": "Enter your MCP Server Streamable HTTP address, SSE mode not supported",
|
||||
"invalid": "Please enter a valid URL",
|
||||
"label": "HTTP Endpoint URL",
|
||||
"required": "Please enter the MCP service URL"
|
||||
"label": "Streamable HTTP Endpoint URL",
|
||||
"required": "Please enter MCP service URL"
|
||||
}
|
||||
},
|
||||
"meta": {
|
||||
"author": {
|
||||
"desc": "The author of the plugin",
|
||||
"desc": "Author of the plugin",
|
||||
"label": "Author"
|
||||
},
|
||||
"avatar": {
|
||||
"desc": "The icon of the plugin, can be an Emoji or a URL",
|
||||
"desc": "Plugin icon, can use Emoji or URL",
|
||||
"label": "Icon"
|
||||
},
|
||||
"description": {
|
||||
"desc": "The description of the plugin",
|
||||
"desc": "Plugin description",
|
||||
"label": "Description",
|
||||
"placeholder": "Get information from search engines"
|
||||
"placeholder": "Search search engines for information"
|
||||
},
|
||||
"formFieldRequired": "This field is required",
|
||||
"homepage": {
|
||||
"desc": "The homepage of the plugin",
|
||||
"desc": "Plugin homepage",
|
||||
"label": "Homepage"
|
||||
},
|
||||
"identifier": {
|
||||
"desc": "The unique identifier of the plugin, only supports alphanumeric characters, hyphen -, and underscore _",
|
||||
"errorDuplicate": "The identifier is already used by another plugin, please modify the identifier",
|
||||
"desc": "Unique identifier of the plugin, automatically recognized from manifest",
|
||||
"errorDuplicate": "Identifier duplicates an existing plugin, please modify the identifier",
|
||||
"label": "Identifier",
|
||||
"pattenErrorMessage": "Only alphanumeric characters, hyphen -, and underscore _ are allowed"
|
||||
"pattenErrorMessage": "Only English letters, numbers, - and _ are allowed"
|
||||
},
|
||||
"lobe": "{{appName}} Plugin",
|
||||
"manifest": {
|
||||
"desc": "{{appName}} will install the plugin through this link.",
|
||||
"label": "Plugin Description (Manifest) URL",
|
||||
"desc": "{{appName}} will install the plugin via this link",
|
||||
"label": "Plugin Manifest URL",
|
||||
"preview": "Preview Manifest",
|
||||
"refresh": "Refresh"
|
||||
},
|
||||
"openai": "OpenAI Plugin",
|
||||
"title": {
|
||||
"desc": "The title of the plugin",
|
||||
"desc": "Plugin title",
|
||||
"label": "Title",
|
||||
"placeholder": "Search Engine"
|
||||
}
|
||||
},
|
||||
"metaConfig": "Plugin metadata configuration",
|
||||
"modalDesc": "After adding a custom plugin, it can be used for plugin development verification or directly in the session. Please refer to the <1>development documentation↗</> for plugin development.",
|
||||
"metaConfig": "Plugin Meta Information Configuration",
|
||||
"modalDesc": "After adding a custom plugin, it can be used for plugin development verification or directly in conversations. For plugin development, please refer to the <1>Development Documentation↗</>.",
|
||||
"openai": {
|
||||
"importUrl": "Import from URL link",
|
||||
"importUrl": "Import from URL",
|
||||
"schema": "Schema"
|
||||
},
|
||||
"preview": {
|
||||
"api": {
|
||||
"noParams": "This tool has no parameters",
|
||||
"noResults": "No APIs found matching the search criteria",
|
||||
"noResults": "No APIs matching the search criteria found",
|
||||
"params": "Parameters:",
|
||||
"searchPlaceholder": "Search tools..."
|
||||
},
|
||||
"card": "Preview of plugin display",
|
||||
"desc": "Preview of plugin description",
|
||||
"card": "Preview Plugin Display",
|
||||
"desc": "Preview Plugin Description",
|
||||
"empty": {
|
||||
"desc": "Once configured, you will be able to preview the capabilities supported by the plugin here",
|
||||
"title": "Start Previewing After Configuring the Plugin"
|
||||
"desc": "After configuration, you can preview the supported tool capabilities here",
|
||||
"title": "Start Preview After Configuring Plugin"
|
||||
},
|
||||
"title": "Plugin Name Preview"
|
||||
},
|
||||
"save": "Install Plugin",
|
||||
"saveSuccess": "Plugin settings saved successfully",
|
||||
"tabs": {
|
||||
"manifest": "Function Description Manifest (Manifest)",
|
||||
"meta": "Plugin Metadata"
|
||||
"manifest": "Feature Manifest",
|
||||
"meta": "Plugin Meta Information"
|
||||
},
|
||||
"title": {
|
||||
"create": "Add Custom Plugin",
|
||||
"edit": "Edit Custom Plugin"
|
||||
},
|
||||
"type": {
|
||||
"lobe": "LobeChat Plugin",
|
||||
"lobe": "{{appName}} Plugin",
|
||||
"openai": "OpenAI Plugin"
|
||||
},
|
||||
"update": "Update",
|
||||
"updateSuccess": "Plugin settings updated successfully"
|
||||
},
|
||||
"error": {
|
||||
"fetchError": "Failed to fetch the manifest link. Please ensure the link is valid and allows cross-origin access.",
|
||||
"fetchError": "Failed to request the manifest link, please ensure the link is valid and allows cross-origin access",
|
||||
"installError": "Plugin {{name}} installation failed",
|
||||
"manifestInvalid": "The manifest does not conform to the specification. Validation result: \n\n {{error}}",
|
||||
"manifestInvalid": "Manifest does not comply with specifications, validation result: \n\n {{error}}",
|
||||
"noManifest": "Manifest file does not exist",
|
||||
"openAPIInvalid": "OpenAPI parsing failed. Error: \n\n {{error}}",
|
||||
"reinstallError": "Failed to refresh plugin {{name}}",
|
||||
"testConnectionFailed": "Failed to retrieve Manifest: {{error}}",
|
||||
"urlError": "The link did not return content in JSON format. Please ensure it is a valid link."
|
||||
"openAPIInvalid": "OpenAPI parsing failed, error: \n\n {{error}}",
|
||||
"reinstallError": "Plugin {{name}} refresh failed",
|
||||
"testConnectionFailed": "Failed to get Manifest: {{error}}",
|
||||
"urlError": "The link did not return JSON content, please ensure it is a valid link"
|
||||
},
|
||||
"inspector": {
|
||||
"args": "View parameter list",
|
||||
"pluginRender": "View plugin interface"
|
||||
"args": "View Argument List",
|
||||
"pluginRender": "View Plugin Interface"
|
||||
},
|
||||
"list": {
|
||||
"item": {
|
||||
"deprecated.title": "Deleted",
|
||||
"local.config": "Configuration",
|
||||
"local.title": "Local"
|
||||
"local.title": "Custom"
|
||||
}
|
||||
},
|
||||
"loading": {
|
||||
"content": "Calling plugin...",
|
||||
"plugin": "Plugin is running..."
|
||||
"plugin": "Plugin running..."
|
||||
},
|
||||
"localSystem": {
|
||||
"apiName": {
|
||||
"listLocalFiles": "View File List",
|
||||
"moveLocalFiles": "Move File",
|
||||
"moveLocalFiles": "Move Files",
|
||||
"readLocalFile": "Read File Content",
|
||||
"renameLocalFile": "Rename",
|
||||
"searchLocalFiles": "Search Files",
|
||||
"writeLocalFile": "Write to File"
|
||||
"writeLocalFile": "Write File"
|
||||
},
|
||||
"title": "Local Files"
|
||||
},
|
||||
"mcpInstall": {
|
||||
"CHECKING_INSTALLATION": "Checking installation environment...",
|
||||
"COMPLETED": "Installation completed",
|
||||
"CONFIGURATION_REQUIRED": "Please complete the necessary configuration before continuing the installation",
|
||||
"CONFIGURATION_REQUIRED": "Please complete the relevant configuration before continuing installation",
|
||||
"ERROR": "Installation error",
|
||||
"FETCHING_MANIFEST": "Fetching plugin manifest...",
|
||||
"GETTING_SERVER_MANIFEST": "Initializing MCP server...",
|
||||
"INSTALLING_PLUGIN": "Installing plugin...",
|
||||
"configurationDescription": "This MCP plugin requires configuration parameters to function properly. Please fill in the necessary configuration information.",
|
||||
"configurationRequired": "Configure plugin parameters",
|
||||
"continueInstall": "Continue installation",
|
||||
"dependenciesDescription": "This plugin requires the following system dependencies to work properly. Please install the missing dependencies as instructed, then click recheck to continue the installation.",
|
||||
"configurationDescription": "This MCP plugin requires configuration parameters to function properly, please fill in the necessary information",
|
||||
"configurationRequired": "Configure Plugin Parameters",
|
||||
"continueInstall": "Continue Installation",
|
||||
"dependenciesDescription": "This plugin requires the following system dependencies to work properly. Please install the missing dependencies as instructed, then click recheck to continue installation.",
|
||||
"dependenciesRequired": "Please install the plugin's system dependencies",
|
||||
"dependencyStatus": {
|
||||
"installed": "Installed",
|
||||
"notInstalled": "Not installed",
|
||||
"requiredVersion": "Required version: {{version}}"
|
||||
"notInstalled": "Not Installed",
|
||||
"requiredVersion": "Required Version: {{version}}"
|
||||
},
|
||||
"errorDetails": {
|
||||
"args": "Arguments",
|
||||
"command": "Command",
|
||||
"connectionParams": "Connection parameters",
|
||||
"env": "Environment variables",
|
||||
"errorOutput": "Error log",
|
||||
"exitCode": "Exit code",
|
||||
"hideDetails": "Hide details",
|
||||
"originalError": "Original error",
|
||||
"showDetails": "Show details"
|
||||
"connectionParams": "Connection Parameters",
|
||||
"env": "Environment Variables",
|
||||
"errorOutput": "Error Log",
|
||||
"exitCode": "Exit Code",
|
||||
"hideDetails": "Hide Details",
|
||||
"originalError": "Original Error",
|
||||
"showDetails": "Show Details"
|
||||
},
|
||||
"errorTypes": {
|
||||
"AUTHORIZATION_ERROR": "Authorization Verification Error",
|
||||
"CONNECTION_FAILED": "Connection failed",
|
||||
"INITIALIZATION_TIMEOUT": "Initialization timeout",
|
||||
"PROCESS_SPAWN_ERROR": "Process spawn error",
|
||||
"UNKNOWN_ERROR": "Unknown error",
|
||||
"VALIDATION_ERROR": "Parameter validation failed"
|
||||
"AUTHORIZATION_ERROR": "Authorization Error",
|
||||
"CONNECTION_FAILED": "Connection Failed",
|
||||
"INITIALIZATION_TIMEOUT": "Initialization Timeout",
|
||||
"PROCESS_SPAWN_ERROR": "Process Spawn Failed",
|
||||
"UNKNOWN_ERROR": "Unknown Error",
|
||||
"VALIDATION_ERROR": "Parameter Validation Failed"
|
||||
},
|
||||
"installError": "MCP plugin installation failed. Reason: {{detail}}",
|
||||
"installError": "MCP plugin installation failed, reason: {{detail}}",
|
||||
"installMethods": {
|
||||
"manual": "Manual installation:",
|
||||
"recommended": "Recommended installation method:"
|
||||
"manual": "Manual Installation:",
|
||||
"recommended": "Recommended Installation Method:"
|
||||
},
|
||||
"recheckDependencies": "Recheck",
|
||||
"skipDependencies": "Skip check"
|
||||
"skipDependencies": "Skip Check"
|
||||
},
|
||||
"pluginList": "Plugin List",
|
||||
"protocolInstall": {
|
||||
"actions": {
|
||||
"install": "Install",
|
||||
"installAnyway": "Install Anyway",
|
||||
"installed": "Installed"
|
||||
},
|
||||
"config": {
|
||||
"args": "Arguments",
|
||||
"command": "Command",
|
||||
"env": "Environment Variables",
|
||||
"headers": "Request Headers",
|
||||
"title": "Configuration Information",
|
||||
"type": {
|
||||
"http": "Type: HTTP",
|
||||
"label": "Type",
|
||||
"stdio": "Type: Stdio"
|
||||
},
|
||||
"url": "Service Address"
|
||||
},
|
||||
"custom": {
|
||||
"badge": "Custom Plugin",
|
||||
"security": {
|
||||
"description": "This plugin is not officially verified, installation may pose security risks! Please ensure you trust the plugin source.",
|
||||
"title": "⚠️ Security Risk Warning"
|
||||
},
|
||||
"title": "Install Custom Plugin"
|
||||
},
|
||||
"marketplace": {
|
||||
"title": "Install Third-Party Plugin",
|
||||
"trustedBy": "Provided by {{name}}",
|
||||
"unverified": {
|
||||
"title": "Unverified Third-Party Plugin",
|
||||
"warning": "This plugin comes from an unverified third-party marketplace. Please confirm you trust the source before installation."
|
||||
},
|
||||
"verified": "Verified"
|
||||
},
|
||||
"messages": {
|
||||
"connectionTestFailed": "Connection test failed",
|
||||
"installError": "Plugin installation failed, please try again",
|
||||
"installSuccess": "Plugin {{name}} installed successfully!",
|
||||
"manifestError": "Failed to get plugin details, please check network connection and try again",
|
||||
"manifestNotFound": "Failed to retrieve plugin manifest"
|
||||
},
|
||||
"meta": {
|
||||
"author": "Author",
|
||||
"homepage": "Homepage",
|
||||
"identifier": "Identifier",
|
||||
"source": "Source",
|
||||
"version": "Version"
|
||||
},
|
||||
"official": {
|
||||
"badge": "LobeHub Official Plugin",
|
||||
"description": "This plugin is developed and maintained by LobeHub official team, has undergone strict security review, safe to use.",
|
||||
"loadingMessage": "Fetching plugin details...",
|
||||
"loadingTitle": "Loading",
|
||||
"title": "Install Official Plugin"
|
||||
},
|
||||
"title": "Install MCP Plugin",
|
||||
"warning": "⚠️ Please confirm you trust the source of this plugin. Malicious plugins may harm your system security."
|
||||
},
|
||||
"search": {
|
||||
"apiName": {
|
||||
"crawlMultiPages": "Read multiple pages content",
|
||||
"crawlMultiPages": "Read Multiple Pages Content",
|
||||
"crawlSinglePage": "Read Page Content",
|
||||
"search": "Search Page"
|
||||
"search": "Search Pages"
|
||||
},
|
||||
"config": {
|
||||
"addKey": "Add Key",
|
||||
"close": "Delete",
|
||||
"confirm": "Configuration completed, please retry"
|
||||
"confirm": "Configuration Completed and Retry"
|
||||
},
|
||||
"crawPages": {
|
||||
"crawling": "Identifying links",
|
||||
"crawling": "Link Recognition in Progress",
|
||||
"detail": {
|
||||
"preview": "Preview",
|
||||
"raw": "Raw text",
|
||||
"tooLong": "The text content is too long; only the first {{characters}} characters of the conversation context will be retained, and the excess will not be included in the conversation context."
|
||||
"raw": "Raw Text",
|
||||
"tooLong": "Text content is too long, only the first {{characters}} characters are kept in the conversation context, the rest are excluded"
|
||||
},
|
||||
"meta": {
|
||||
"crawler": "Crawling Mode",
|
||||
"words": "Character count"
|
||||
"words": "Character Count"
|
||||
}
|
||||
},
|
||||
"searchxng": {
|
||||
"baseURL": "Please enter",
|
||||
"description": "Enter the URL for SearchXNG to start online searching",
|
||||
"description": "Enter the URL of SearchXNG to start online search",
|
||||
"keyPlaceholder": "Please enter key",
|
||||
"title": "Configure SearchXNG Search Engine",
|
||||
"unconfiguredDesc": "Please contact the administrator to complete the SearchXNG search engine configuration to start online searching",
|
||||
"unconfiguredTitle": "SearchXNG search engine not configured yet"
|
||||
"unconfiguredDesc": "Please contact administrator to complete SearchXNG search engine configuration to start online search",
|
||||
"unconfiguredTitle": "SearchXNG Search Engine Not Configured"
|
||||
},
|
||||
"title": "Online Search"
|
||||
},
|
||||
@@ -351,18 +411,18 @@
|
||||
"title": "Plugin Configuration"
|
||||
},
|
||||
"connection": {
|
||||
"args": "Startup arguments",
|
||||
"command": "Startup command",
|
||||
"args": "Startup Arguments",
|
||||
"command": "Startup Command",
|
||||
"title": "Connection Information",
|
||||
"type": "Connection type",
|
||||
"url": "Service address"
|
||||
"type": "Connection Type",
|
||||
"url": "Service Address"
|
||||
},
|
||||
"edit": "Edit",
|
||||
"envConfigDescription": "These configurations will be passed as environment variables to the process when the MCP server starts",
|
||||
"httpTypeNotice": "No environment variables need to be configured for HTTP type MCP plugins",
|
||||
"envConfigDescription": "These configurations will be passed as environment variables to the MCP server process at startup",
|
||||
"httpTypeNotice": "HTTP type MCP plugins currently have no environment variables to configure",
|
||||
"indexUrl": {
|
||||
"title": "Marketplace Index",
|
||||
"tooltip": "Editing is not supported at the moment"
|
||||
"tooltip": "Online editing is not supported yet, please set via environment variables during deployment"
|
||||
},
|
||||
"messages": {
|
||||
"connectionUpdateFailed": "Failed to update connection information",
|
||||
@@ -370,34 +430,34 @@
|
||||
"envUpdateFailed": "Failed to save environment variables",
|
||||
"envUpdateSuccess": "Environment variables saved successfully"
|
||||
},
|
||||
"modalDesc": "After configuring the address of the plugin marketplace, you can use a custom plugin marketplace",
|
||||
"modalDesc": "After configuring the plugin marketplace address, you can use a custom plugin marketplace",
|
||||
"rules": {
|
||||
"argsRequired": "Please enter startup arguments",
|
||||
"commandRequired": "Please enter the startup command",
|
||||
"urlRequired": "Please enter the service address"
|
||||
"commandRequired": "Please enter startup command",
|
||||
"urlRequired": "Please enter service address"
|
||||
},
|
||||
"saveSettings": "Save settings",
|
||||
"saveSettings": "Save Settings",
|
||||
"title": "Configure Plugin Marketplace"
|
||||
},
|
||||
"showInPortal": "Please check the details in the Portal view",
|
||||
"showInPortal": "Please view details in the workspace",
|
||||
"store": {
|
||||
"actions": {
|
||||
"cancel": "Cancel installation",
|
||||
"confirmUninstall": "The plugin is about to be uninstalled. After uninstalling, the plugin configuration will be cleared. Please confirm your operation.",
|
||||
"cancel": "Cancel Installation",
|
||||
"confirmUninstall": "This plugin will be uninstalled and its configuration cleared. Please confirm your action.",
|
||||
"detail": "Details",
|
||||
"install": "Install",
|
||||
"manifest": "Edit Installation File",
|
||||
"settings": "Settings",
|
||||
"uninstall": "Uninstall"
|
||||
},
|
||||
"communityPlugin": "Third-party",
|
||||
"customPlugin": "Custom Plugin",
|
||||
"empty": "No installed plugins yet",
|
||||
"communityPlugin": "Third-Party Community",
|
||||
"customPlugin": "Custom",
|
||||
"empty": "No installed plugins",
|
||||
"emptySelectHint": "Select a plugin to preview detailed information",
|
||||
"installAllPlugins": "Install All",
|
||||
"networkError": "Failed to fetch plugin store. Please check your network connection and try again",
|
||||
"placeholder": "Search for plugin name, description, or keyword...",
|
||||
"releasedAt": "Released at {{createdAt}}",
|
||||
"networkError": "Failed to fetch plugin store, please check network connection and try again",
|
||||
"placeholder": "Search plugin name, description or keywords...",
|
||||
"releasedAt": "Released on {{createdAt}}",
|
||||
"tabs": {
|
||||
"installed": "Installed",
|
||||
"mcp": "MCP Plugins",
|
||||
@@ -405,6 +465,6 @@
|
||||
},
|
||||
"title": "Plugin Store"
|
||||
},
|
||||
"unknownError": "Unknown error",
|
||||
"unknownPlugin": "Unknown plugin"
|
||||
"unknownError": "Unknown Error",
|
||||
"unknownPlugin": "Unknown Plugin"
|
||||
}
|
||||
|
||||
@@ -1,48 +1,48 @@
|
||||
{
|
||||
"confirm": "Confirmar",
|
||||
"debug": {
|
||||
"arguments": "Argumentos de llamada",
|
||||
"arguments": "Parámetros de llamada",
|
||||
"function_call": "Llamada a función",
|
||||
"off": "Desactivado",
|
||||
"on": "Ver información de llamada de complemento",
|
||||
"payload": "carga del complemento",
|
||||
"off": "Desactivar depuración",
|
||||
"on": "Ver información de llamadas al plugin",
|
||||
"payload": "Carga útil del plugin",
|
||||
"pluginState": "Estado del plugin",
|
||||
"response": "Respuesta",
|
||||
"title": "Detalles del complemento",
|
||||
"tool_call": "solicitud de llamada de herramienta"
|
||||
"response": "Resultado devuelto",
|
||||
"title": "Detalles del plugin",
|
||||
"tool_call": "Solicitud de llamada a herramienta"
|
||||
},
|
||||
"detailModal": {
|
||||
"customPlugin": {
|
||||
"description": "Por favor, visite la página de edición para ver los detalles",
|
||||
"editBtn": "Editar ahora",
|
||||
"title": "Este es un complemento personalizado"
|
||||
"title": "Este es un plugin personalizado"
|
||||
},
|
||||
"emptyState": {
|
||||
"description": "Por favor, instale este complemento para ver sus capacidades y opciones de configuración",
|
||||
"title": "Ver detalles del complemento después de la instalación"
|
||||
"description": "Por favor, instale este plugin primero para ver sus capacidades y opciones de configuración",
|
||||
"title": "Ver detalles del plugin tras la instalación"
|
||||
},
|
||||
"info": {
|
||||
"description": "Descripción de la API",
|
||||
"name": "Nombre de la API"
|
||||
},
|
||||
"tabs": {
|
||||
"info": "Capacidad del complemento",
|
||||
"info": "Capacidades del plugin",
|
||||
"manifest": "Archivo de instalación",
|
||||
"settings": "Ajustes"
|
||||
"settings": "Configuración"
|
||||
},
|
||||
"title": "Detalles del complemento"
|
||||
"title": "Detalles del plugin"
|
||||
},
|
||||
"dev": {
|
||||
"confirmDeleteDevPlugin": "Está a punto de eliminar este complemento local. Una vez eliminado, no se podrá recuperar. ¿Desea eliminar este complemento?",
|
||||
"confirmDeleteDevPlugin": "Está a punto de eliminar este plugin local. Una vez eliminado, no podrá recuperarse. ¿Desea eliminar este plugin?",
|
||||
"customParams": {
|
||||
"useProxy": {
|
||||
"label": "Instalar a través de proxy (si encuentra errores de acceso entre dominios, intente habilitar esta opción y reinstalar)"
|
||||
"label": "Instalar a través de proxy (si encuentra errores de acceso cruzado, intente activar esta opción y reinstalar)"
|
||||
}
|
||||
},
|
||||
"deleteSuccess": "Complemento eliminado",
|
||||
"deleteSuccess": "Plugin eliminado con éxito",
|
||||
"manifest": {
|
||||
"identifier": {
|
||||
"desc": "Identificador único del complemento",
|
||||
"desc": "Identificador único del plugin",
|
||||
"label": "Identificador"
|
||||
},
|
||||
"mode": {
|
||||
@@ -51,9 +51,9 @@
|
||||
"url": "Enlace en línea"
|
||||
},
|
||||
"name": {
|
||||
"desc": "Título del complemento",
|
||||
"desc": "Título del plugin",
|
||||
"label": "Título",
|
||||
"placeholder": "Buscar motor de búsqueda"
|
||||
"placeholder": "Motor de búsqueda"
|
||||
}
|
||||
},
|
||||
"mcp": {
|
||||
@@ -61,10 +61,10 @@
|
||||
"title": "Configuración avanzada"
|
||||
},
|
||||
"args": {
|
||||
"desc": "Lista de parámetros que se pasan al comando de ejecución, generalmente aquí se ingresa el nombre del servidor MCP o la ruta del script de inicio",
|
||||
"desc": "Lista de parámetros para el comando de ejecución, generalmente aquí se ingresa el nombre del servidor MCP o la ruta del script de inicio",
|
||||
"label": "Parámetros del comando",
|
||||
"placeholder": "Por ejemplo: --port 8080 --debug",
|
||||
"required": "Por favor, introduce los parámetros de inicio"
|
||||
"placeholder": "Por ejemplo: mcp-hello-world",
|
||||
"required": "Por favor, ingrese los parámetros de inicio"
|
||||
},
|
||||
"auth": {
|
||||
"bear": "Clave API",
|
||||
@@ -73,121 +73,121 @@
|
||||
"none": "Sin autenticación",
|
||||
"placeholder": "Por favor, seleccione el tipo de autenticación",
|
||||
"token": {
|
||||
"desc": "Ingrese su Clave API o Token Bearer",
|
||||
"desc": "Ingrese su clave API o token Bearer",
|
||||
"label": "Clave API",
|
||||
"placeholder": "sk-xxxxx",
|
||||
"required": "Por favor, ingrese el token de autenticación"
|
||||
}
|
||||
},
|
||||
"avatar": {
|
||||
"label": "Icono del complemento"
|
||||
"label": "Icono del plugin"
|
||||
},
|
||||
"command": {
|
||||
"desc": "Archivo ejecutable o script para iniciar el complemento MCP STDIO",
|
||||
"desc": "Archivo ejecutable o script para iniciar el servidor MCP STDIO",
|
||||
"label": "Comando",
|
||||
"placeholder": "Por ejemplo: python main.py o /ruta/al/ejecutable",
|
||||
"required": "Por favor, introduce el comando de inicio"
|
||||
"placeholder": "Por ejemplo: npx / uv / docker, etc.",
|
||||
"required": "Por favor, ingrese el comando de inicio"
|
||||
},
|
||||
"desc": {
|
||||
"desc": "Descripción del complemento",
|
||||
"label": "Descripción del complemento",
|
||||
"placeholder": "Proporcione información sobre el uso y los escenarios de este complemento"
|
||||
"desc": "Agregue una descripción del plugin",
|
||||
"label": "Descripción del plugin",
|
||||
"placeholder": "Agregue información sobre el uso y escenarios del plugin"
|
||||
},
|
||||
"endpoint": {
|
||||
"desc": "Ingresa la dirección de tu servidor HTTP Streamable MCP",
|
||||
"label": "URL del Endpoint MCP"
|
||||
"desc": "Ingrese la dirección de su servidor MCP Streamable HTTP",
|
||||
"label": "URL del endpoint MCP"
|
||||
},
|
||||
"env": {
|
||||
"add": "Agregar una línea",
|
||||
"desc": "Ingresa las variables de entorno necesarias para tu servidor MCP",
|
||||
"desc": "Ingrese las variables de entorno necesarias para su servidor MCP",
|
||||
"duplicateKeyError": "La clave del campo debe ser única",
|
||||
"formValidationFailed": "La validación del formulario falló, por favor verifica el formato de los parámetros",
|
||||
"formValidationFailed": "La validación del formulario falló, por favor revise el formato de los parámetros",
|
||||
"keyRequired": "La clave del campo no puede estar vacía",
|
||||
"label": "Variables de entorno del servidor MCP",
|
||||
"stringifyError": "No se puede serializar el parámetro, por favor verifica el formato de los parámetros"
|
||||
"stringifyError": "No se pueden serializar los parámetros, por favor revise el formato"
|
||||
},
|
||||
"headers": {
|
||||
"add": "Agregar una fila",
|
||||
"add": "Agregar una línea",
|
||||
"desc": "Ingrese los encabezados de la solicitud",
|
||||
"label": "Encabezados HTTP"
|
||||
},
|
||||
"identifier": {
|
||||
"desc": "Especifica un nombre para tu complemento MCP, debe usar caracteres en inglés",
|
||||
"invalid": "Solo se pueden ingresar caracteres en inglés, números, y los símbolos - y _",
|
||||
"label": "Nombre del complemento MCP",
|
||||
"desc": "Asigne un nombre a su plugin MCP, debe usar caracteres en inglés",
|
||||
"invalid": "El identificador solo puede contener letras, números, guiones y guiones bajos",
|
||||
"label": "Nombre del plugin MCP",
|
||||
"placeholder": "Por ejemplo: my-mcp-plugin",
|
||||
"required": "Por favor, introduce el identificador del servicio MCP"
|
||||
"required": "Por favor, ingrese el identificador del servicio MCP"
|
||||
},
|
||||
"previewManifest": "Previsualizar el archivo de descripción del complemento",
|
||||
"quickImport": "Importar configuración JSON rápidamente",
|
||||
"previewManifest": "Vista previa del archivo de descripción del plugin",
|
||||
"quickImport": "Importación rápida de configuración JSON",
|
||||
"quickImportError": {
|
||||
"empty": "El contenido de entrada no puede estar vacío",
|
||||
"invalidJson": "Formato JSON no válido",
|
||||
"invalidStructure": "Estructura JSON no válida"
|
||||
"empty": "El contenido no puede estar vacío",
|
||||
"invalidJson": "Formato JSON inválido",
|
||||
"invalidStructure": "Estructura JSON inválida"
|
||||
},
|
||||
"stdioNotSupported": "El entorno actual no admite el plugin MCP de tipo stdio",
|
||||
"stdioNotSupported": "El entorno actual no soporta plugins MCP tipo stdio",
|
||||
"testConnection": "Probar conexión",
|
||||
"testConnectionTip": "El complemento MCP solo se puede utilizar correctamente después de que la prueba de conexión sea exitosa",
|
||||
"testConnectionTip": "El plugin MCP solo puede usarse normalmente después de una prueba de conexión exitosa",
|
||||
"type": {
|
||||
"desc": "Selecciona el método de comunicación del complemento MCP, la versión web solo admite HTTP Streamable",
|
||||
"httpFeature1": "Compatible con la versión web y de escritorio",
|
||||
"httpFeature2": "Conéctese al servidor MCP remoto sin necesidad de instalación adicional",
|
||||
"httpShortDesc": "Protocolo de comunicación basado en HTTP por streaming",
|
||||
"label": "Tipo de complemento MCP",
|
||||
"desc": "Seleccione el modo de comunicación del plugin MCP, la versión web solo soporta Streamable HTTP",
|
||||
"httpFeature1": "Compatible con versión web y de escritorio",
|
||||
"httpFeature2": "Conexión a servidor MCP remoto, sin necesidad de instalación adicional",
|
||||
"httpShortDesc": "Protocolo de comunicación basado en HTTP en streaming",
|
||||
"label": "Tipo de plugin MCP",
|
||||
"stdioFeature1": "Menor latencia de comunicación, adecuado para ejecución local",
|
||||
"stdioFeature2": "Se requiere instalar y ejecutar el servidor MCP localmente",
|
||||
"stdioFeature2": "Requiere instalación local del servidor MCP",
|
||||
"stdioNotAvailable": "El modo STDIO solo está disponible en la versión de escritorio",
|
||||
"stdioShortDesc": "Protocolo de comunicación basado en entrada y salida estándar",
|
||||
"title": "Tipo de complemento MCP"
|
||||
"title": "Tipo de plugin MCP"
|
||||
},
|
||||
"url": {
|
||||
"desc": "Introduce la dirección HTTP transmitible de tu servidor MCP, no se admite el modo SSE",
|
||||
"invalid": "Por favor, introduce una URL válida",
|
||||
"label": "URL del Endpoint HTTP",
|
||||
"required": "Por favor, introduce la URL del servicio MCP"
|
||||
"desc": "Ingrese la dirección Streamable HTTP de su servidor MCP, no soporta modo SSE",
|
||||
"invalid": "Por favor, ingrese una URL válida",
|
||||
"label": "URL del endpoint Streamable HTTP",
|
||||
"required": "Por favor, ingrese la URL del servicio MCP"
|
||||
}
|
||||
},
|
||||
"meta": {
|
||||
"author": {
|
||||
"desc": "Autor del complemento",
|
||||
"desc": "Autor del plugin",
|
||||
"label": "Autor"
|
||||
},
|
||||
"avatar": {
|
||||
"desc": "Icono del complemento, se puede usar Emoji o URL",
|
||||
"desc": "Icono del plugin, puede usar Emoji o URL",
|
||||
"label": "Icono"
|
||||
},
|
||||
"description": {
|
||||
"desc": "Descripción del complemento",
|
||||
"desc": "Descripción del plugin",
|
||||
"label": "Descripción",
|
||||
"placeholder": "Obtener información de búsqueda en el motor de búsqueda"
|
||||
"placeholder": "Consulta motores de búsqueda para obtener información"
|
||||
},
|
||||
"formFieldRequired": "Este campo es obligatorio",
|
||||
"homepage": {
|
||||
"desc": "Página de inicio del complemento",
|
||||
"label": "Página de inicio"
|
||||
"desc": "Página principal del plugin",
|
||||
"label": "Página principal"
|
||||
},
|
||||
"identifier": {
|
||||
"desc": "Identificador único del complemento, se reconocerá automáticamente desde el manifiesto",
|
||||
"errorDuplicate": "El identificador del complemento ya existe, modifique el identificador",
|
||||
"desc": "Identificador único del plugin, se detectará automáticamente desde el manifest",
|
||||
"errorDuplicate": "El identificador ya existe en otro plugin, por favor modifíquelo",
|
||||
"label": "Identificador",
|
||||
"pattenErrorMessage": "Solo se pueden ingresar caracteres alfanuméricos, - y _"
|
||||
"pattenErrorMessage": "Solo se permiten caracteres en inglés, números, - y _"
|
||||
},
|
||||
"lobe": "Complemento de {{appName}}",
|
||||
"lobe": "Plugin {{appName}}",
|
||||
"manifest": {
|
||||
"desc": "{{appName}} se instalará el complemento a través de este enlace.",
|
||||
"label": "URL del archivo de descripción del complemento (Manifest)",
|
||||
"desc": "{{appName}} instalará el plugin a través de este enlace",
|
||||
"label": "Archivo de descripción del plugin (Manifest) URL",
|
||||
"preview": "Vista previa del Manifest",
|
||||
"refresh": "Actualizar"
|
||||
},
|
||||
"openai": "Complemento de OpenAI",
|
||||
"openai": "Plugin OpenAI",
|
||||
"title": {
|
||||
"desc": "Título del complemento",
|
||||
"desc": "Título del plugin",
|
||||
"label": "Título",
|
||||
"placeholder": "Buscar motor de búsqueda"
|
||||
"placeholder": "Motor de búsqueda"
|
||||
}
|
||||
},
|
||||
"metaConfig": "Configuración de metadatos del complemento",
|
||||
"modalDesc": "Después de agregar un complemento personalizado, se puede utilizar para validar el desarrollo del complemento o se puede usar directamente en la conversación. Consulte el <1>documento de desarrollo↗</> para el desarrollo del complemento.",
|
||||
"metaConfig": "Configuración de metainformación del plugin",
|
||||
"modalDesc": "Después de agregar un plugin personalizado, puede usarse para desarrollo y verificación, o directamente en conversaciones. Para desarrollo de plugins, consulte la <1>documentación de desarrollo↗</1>",
|
||||
"openai": {
|
||||
"importUrl": "Importar desde enlace URL",
|
||||
"schema": "Esquema"
|
||||
@@ -195,44 +195,44 @@
|
||||
"preview": {
|
||||
"api": {
|
||||
"noParams": "Esta herramienta no tiene parámetros",
|
||||
"noResults": "No se encontraron API que cumplan con los criterios de búsqueda",
|
||||
"noResults": "No se encontraron APIs que coincidan con los criterios de búsqueda",
|
||||
"params": "Parámetros:",
|
||||
"searchPlaceholder": "Buscar herramienta..."
|
||||
},
|
||||
"card": "Vista previa del efecto del complemento",
|
||||
"desc": "Vista previa de la descripción del complemento",
|
||||
"card": "Vista previa del efecto del plugin",
|
||||
"desc": "Descripción previa del plugin",
|
||||
"empty": {
|
||||
"desc": "Una vez completada la configuración, podrá previsualizar las capacidades de las herramientas soportadas por el plugin aquí",
|
||||
"title": "Comience a previsualizar después de configurar el plugin"
|
||||
"desc": "Después de completar la configuración, podrá previsualizar las capacidades de las herramientas soportadas aquí",
|
||||
"title": "Comience la vista previa tras configurar el plugin"
|
||||
},
|
||||
"title": "Vista previa del nombre del complemento"
|
||||
"title": "Vista previa del nombre del plugin"
|
||||
},
|
||||
"save": "Instalar complemento",
|
||||
"saveSuccess": "Configuración del complemento guardada con éxito",
|
||||
"save": "Instalar plugin",
|
||||
"saveSuccess": "Configuración del plugin guardada con éxito",
|
||||
"tabs": {
|
||||
"manifest": "Lista de descripción de funciones (Manifest)",
|
||||
"meta": "Metadatos del complemento"
|
||||
"meta": "Metainformación del plugin"
|
||||
},
|
||||
"title": {
|
||||
"create": "Agregar complemento personalizado",
|
||||
"edit": "Editar complemento personalizado"
|
||||
"create": "Agregar plugin personalizado",
|
||||
"edit": "Editar plugin personalizado"
|
||||
},
|
||||
"type": {
|
||||
"lobe": "Complemento LobeChat",
|
||||
"openai": "Complemento OpenAI"
|
||||
"lobe": "Plugin {{appName}}",
|
||||
"openai": "Plugin OpenAI"
|
||||
},
|
||||
"update": "Actualizar",
|
||||
"updateSuccess": "Configuración del complemento actualizada con éxito"
|
||||
"updateSuccess": "Configuración del plugin actualizada con éxito"
|
||||
},
|
||||
"error": {
|
||||
"fetchError": "Error al recuperar el enlace del manifiesto. Asegúrese de que el enlace sea válido y permita el acceso entre dominios.",
|
||||
"installError": "Error al instalar el complemento {{name}}.",
|
||||
"manifestInvalid": "El manifiesto no cumple con las normas. Resultado de la validación: \n\n {{error}}",
|
||||
"noManifest": "No se encontró el archivo de descripción",
|
||||
"openAPIInvalid": "Error al analizar OpenAPI. Error: \n\n {{error}}",
|
||||
"reinstallError": "Error al volver a instalar el complemento {{name}}.",
|
||||
"fetchError": "Error al solicitar el enlace manifest, por favor asegúrese de que el enlace es válido y permite acceso cruzado",
|
||||
"installError": "Error al instalar el plugin {{name}}",
|
||||
"manifestInvalid": "El manifest no cumple con las especificaciones, resultado de la validación: \n\n {{error}}",
|
||||
"noManifest": "Archivo de descripción no encontrado",
|
||||
"openAPIInvalid": "Error al analizar OpenAPI, error: \n\n {{error}}",
|
||||
"reinstallError": "Error al actualizar el plugin {{name}}",
|
||||
"testConnectionFailed": "Error al obtener el Manifest: {{error}}",
|
||||
"urlError": "El enlace no devuelve contenido en formato JSON. Asegúrese de que sea un enlace válido."
|
||||
"urlError": "El enlace no devolvió contenido en formato JSON, por favor asegúrese de que es un enlace válido"
|
||||
},
|
||||
"inspector": {
|
||||
"args": "Ver lista de parámetros",
|
||||
@@ -240,14 +240,14 @@
|
||||
},
|
||||
"list": {
|
||||
"item": {
|
||||
"deprecated.title": "Obsoleto",
|
||||
"deprecated.title": "Eliminado",
|
||||
"local.config": "Configuración",
|
||||
"local.title": "Personalizado"
|
||||
}
|
||||
},
|
||||
"loading": {
|
||||
"content": "Cargando complemento...",
|
||||
"plugin": "Ejecutando complemento..."
|
||||
"content": "Llamando al plugin...",
|
||||
"plugin": "Plugin en ejecución..."
|
||||
},
|
||||
"localSystem": {
|
||||
"apiName": {
|
||||
@@ -256,23 +256,23 @@
|
||||
"readLocalFile": "Leer contenido del archivo",
|
||||
"renameLocalFile": "Renombrar",
|
||||
"searchLocalFiles": "Buscar archivos",
|
||||
"writeLocalFile": "Escribir en archivo"
|
||||
"writeLocalFile": "Escribir archivo"
|
||||
},
|
||||
"title": "Archivos locales"
|
||||
},
|
||||
"mcpInstall": {
|
||||
"CHECKING_INSTALLATION": "Comprobando el entorno de instalación...",
|
||||
"CHECKING_INSTALLATION": "Verificando entorno de instalación...",
|
||||
"COMPLETED": "Instalación completada",
|
||||
"CONFIGURATION_REQUIRED": "Por favor, complete la configuración necesaria antes de continuar con la instalación",
|
||||
"CONFIGURATION_REQUIRED": "Por favor complete la configuración requerida para continuar la instalación",
|
||||
"ERROR": "Error de instalación",
|
||||
"FETCHING_MANIFEST": "Obteniendo el archivo de descripción del plugin...",
|
||||
"GETTING_SERVER_MANIFEST": "Inicializando el servidor MCP...",
|
||||
"INSTALLING_PLUGIN": "Instalando el plugin...",
|
||||
"FETCHING_MANIFEST": "Obteniendo archivo de descripción del plugin...",
|
||||
"GETTING_SERVER_MANIFEST": "Inicializando servidor MCP...",
|
||||
"INSTALLING_PLUGIN": "Instalando plugin...",
|
||||
"configurationDescription": "Este plugin MCP requiere parámetros de configuración para funcionar correctamente, por favor complete la información necesaria",
|
||||
"configurationRequired": "Configurar parámetros del plugin",
|
||||
"continueInstall": "Continuar instalación",
|
||||
"dependenciesDescription": "Este plugin requiere la instalación de las siguientes dependencias del sistema para funcionar correctamente. Por favor, instale las dependencias faltantes según las indicaciones y luego haga clic en 'Revisar de nuevo' para continuar la instalación.",
|
||||
"dependenciesRequired": "Por favor, instale las dependencias del sistema para el plugin",
|
||||
"dependenciesDescription": "Este plugin requiere instalar las siguientes dependencias del sistema para funcionar correctamente, por favor instale las dependencias faltantes según las indicaciones y luego haga clic en reintentar para continuar la instalación.",
|
||||
"dependenciesRequired": "Por favor instale las dependencias del sistema para el plugin",
|
||||
"dependencyStatus": {
|
||||
"installed": "Instalado",
|
||||
"notInstalled": "No instalado",
|
||||
@@ -293,36 +293,96 @@
|
||||
"AUTHORIZATION_ERROR": "Error de autorización",
|
||||
"CONNECTION_FAILED": "Conexión fallida",
|
||||
"INITIALIZATION_TIMEOUT": "Tiempo de inicialización agotado",
|
||||
"PROCESS_SPAWN_ERROR": "Error al iniciar el proceso",
|
||||
"PROCESS_SPAWN_ERROR": "Error al iniciar proceso",
|
||||
"UNKNOWN_ERROR": "Error desconocido",
|
||||
"VALIDATION_ERROR": "Error de validación de parámetros"
|
||||
},
|
||||
"installError": "La instalación del plugin MCP falló, motivo: {{detail}}",
|
||||
"installError": "Error al instalar plugin MCP, motivo: {{detail}}",
|
||||
"installMethods": {
|
||||
"manual": "Instalación manual:",
|
||||
"recommended": "Método de instalación recomendado:"
|
||||
},
|
||||
"recheckDependencies": "Revisar de nuevo",
|
||||
"recheckDependencies": "Revisar dependencias nuevamente",
|
||||
"skipDependencies": "Omitir revisión"
|
||||
},
|
||||
"pluginList": "Lista de complementos",
|
||||
"pluginList": "Lista de plugins",
|
||||
"protocolInstall": {
|
||||
"actions": {
|
||||
"install": "Instalar",
|
||||
"installAnyway": "Instalar de todos modos",
|
||||
"installed": "Instalado"
|
||||
},
|
||||
"config": {
|
||||
"args": "Parámetros",
|
||||
"command": "Comando",
|
||||
"env": "Variables de entorno",
|
||||
"headers": "Encabezados",
|
||||
"title": "Información de configuración",
|
||||
"type": {
|
||||
"http": "Tipo: HTTP",
|
||||
"label": "Tipo",
|
||||
"stdio": "Tipo: Stdio"
|
||||
},
|
||||
"url": "Dirección del servicio"
|
||||
},
|
||||
"custom": {
|
||||
"badge": "Plugin personalizado",
|
||||
"security": {
|
||||
"description": "Este plugin no ha sido verificado oficialmente, la instalación puede implicar riesgos de seguridad. Por favor asegúrese de confiar en la fuente del plugin.",
|
||||
"title": "⚠️ Advertencia de riesgo de seguridad"
|
||||
},
|
||||
"title": "Instalar plugin personalizado"
|
||||
},
|
||||
"marketplace": {
|
||||
"title": "Instalar plugins de terceros",
|
||||
"trustedBy": "Proporcionado por {{name}}",
|
||||
"unverified": {
|
||||
"title": "Plugin de terceros no verificado",
|
||||
"warning": "Este plugin proviene de un mercado de terceros no verificado, por favor confirme que confía en esta fuente antes de instalar."
|
||||
},
|
||||
"verified": "Verificado"
|
||||
},
|
||||
"messages": {
|
||||
"connectionTestFailed": "Prueba de conexión fallida",
|
||||
"installError": "Error al instalar plugin, por favor intente de nuevo",
|
||||
"installSuccess": "Plugin {{name}} instalado con éxito!",
|
||||
"manifestError": "Error al obtener detalles del plugin, por favor revise la conexión de red e intente de nuevo",
|
||||
"manifestNotFound": "No se pudo obtener el archivo de descripción del plugin"
|
||||
},
|
||||
"meta": {
|
||||
"author": "Autor",
|
||||
"homepage": "Página principal",
|
||||
"identifier": "Identificador",
|
||||
"source": "Fuente",
|
||||
"version": "Versión"
|
||||
},
|
||||
"official": {
|
||||
"badge": "Plugin oficial de LobeHub",
|
||||
"description": "Este plugin es desarrollado y mantenido oficialmente por LobeHub, ha pasado rigurosas auditorías de seguridad y puede usarse con confianza.",
|
||||
"loadingMessage": "Obteniendo detalles del plugin...",
|
||||
"loadingTitle": "Cargando",
|
||||
"title": "Instalar plugin oficial"
|
||||
},
|
||||
"title": "Instalar plugin MCP",
|
||||
"warning": "⚠️ Por favor confirme que confía en la fuente de este plugin, plugins maliciosos pueden comprometer la seguridad de su sistema."
|
||||
},
|
||||
"search": {
|
||||
"apiName": {
|
||||
"crawlMultiPages": "Leer el contenido de múltiples páginas",
|
||||
"crawlSinglePage": "Leer contenido de la página",
|
||||
"crawlMultiPages": "Leer contenido de múltiples páginas",
|
||||
"crawlSinglePage": "Leer contenido de página",
|
||||
"search": "Buscar página"
|
||||
},
|
||||
"config": {
|
||||
"addKey": "Agregar clave",
|
||||
"close": "Eliminar",
|
||||
"confirm": "Configuración completada, intente de nuevo"
|
||||
"confirm": "Configuración completada y reintentar"
|
||||
},
|
||||
"crawPages": {
|
||||
"crawling": "Reconocimiento de enlaces",
|
||||
"crawling": "Reconociendo enlaces",
|
||||
"detail": {
|
||||
"preview": "Vista previa",
|
||||
"raw": "Texto original",
|
||||
"tooLong": "El contenido del texto es demasiado largo, el contexto de la conversación solo retiene los primeros {{characters}} caracteres, el resto no se incluye en el contexto de la conversación"
|
||||
"tooLong": "El contenido del texto es demasiado largo, solo se conservarán los primeros {{characters}} caracteres en el contexto de la conversación, el resto no se incluirá."
|
||||
},
|
||||
"meta": {
|
||||
"crawler": "Modo de rastreo",
|
||||
@@ -330,16 +390,16 @@
|
||||
}
|
||||
},
|
||||
"searchxng": {
|
||||
"baseURL": "Introduzca",
|
||||
"description": "Introduzca la URL de SearchXNG para comenzar la búsqueda en línea",
|
||||
"keyPlaceholder": "Introduzca la clave",
|
||||
"title": "Configurar el motor de búsqueda SearchXNG",
|
||||
"unconfiguredDesc": "Por favor, contacte al administrador para completar la configuración del motor de búsqueda SearchXNG y comenzar la búsqueda en línea",
|
||||
"unconfiguredTitle": "Motor de búsqueda SearchXNG no configurado"
|
||||
"baseURL": "Por favor ingrese",
|
||||
"description": "Ingrese la URL de SearchXNG para comenzar la búsqueda en línea",
|
||||
"keyPlaceholder": "Por favor ingrese la clave",
|
||||
"title": "Configurar motor de búsqueda SearchXNG",
|
||||
"unconfiguredDesc": "Por favor contacte al administrador para completar la configuración del motor de búsqueda SearchXNG y comenzar la búsqueda en línea",
|
||||
"unconfiguredTitle": "SearchXNG no configurado"
|
||||
},
|
||||
"title": "Búsqueda en línea"
|
||||
},
|
||||
"setting": "Configuración de complementos",
|
||||
"setting": "Configuración del plugin",
|
||||
"settings": {
|
||||
"capabilities": {
|
||||
"prompts": "Indicaciones",
|
||||
@@ -358,52 +418,52 @@
|
||||
"url": "Dirección del servicio"
|
||||
},
|
||||
"edit": "Editar",
|
||||
"envConfigDescription": "Estas configuraciones se pasarán como variables de entorno al proceso cuando se inicie el servidor MCP",
|
||||
"httpTypeNotice": "Los complementos MCP de tipo HTTP no requieren variables de entorno configurables",
|
||||
"envConfigDescription": "Estas configuraciones se pasarán como variables de entorno al iniciar el servidor MCP",
|
||||
"httpTypeNotice": "Los plugins MCP de tipo HTTP no requieren variables de entorno configurables",
|
||||
"indexUrl": {
|
||||
"title": "Índice de mercado",
|
||||
"tooltip": "No se admite la edición en línea. Configure a través de variables de entorno al implementar."
|
||||
"title": "Índice del mercado",
|
||||
"tooltip": "No se soporta edición en línea, por favor configure mediante variables de entorno al desplegar"
|
||||
},
|
||||
"messages": {
|
||||
"connectionUpdateFailed": "Error al actualizar la información de conexión",
|
||||
"connectionUpdateSuccess": "Información de conexión actualizada con éxito",
|
||||
"envUpdateFailed": "Error al guardar las variables de entorno",
|
||||
"envUpdateFailed": "Error al guardar variables de entorno",
|
||||
"envUpdateSuccess": "Variables de entorno guardadas con éxito"
|
||||
},
|
||||
"modalDesc": "Después de configurar la dirección del mercado de complementos, puede utilizar un mercado personalizado de complementos.",
|
||||
"modalDesc": "Después de configurar la dirección del mercado de plugins, podrá usar mercados personalizados",
|
||||
"rules": {
|
||||
"argsRequired": "Por favor, introduzca los parámetros de inicio",
|
||||
"commandRequired": "Por favor, introduzca el comando de inicio",
|
||||
"urlRequired": "Por favor, introduzca la dirección del servicio"
|
||||
"argsRequired": "Por favor ingrese los parámetros de inicio",
|
||||
"commandRequired": "Por favor ingrese el comando de inicio",
|
||||
"urlRequired": "Por favor ingrese la dirección del servicio"
|
||||
},
|
||||
"saveSettings": "Guardar configuración",
|
||||
"title": "Configuración del mercado de complementos"
|
||||
"title": "Configurar mercado de plugins"
|
||||
},
|
||||
"showInPortal": "Por favor, consulta los detalles en el portal de trabajo",
|
||||
"showInPortal": "Por favor vea los detalles en el espacio de trabajo",
|
||||
"store": {
|
||||
"actions": {
|
||||
"cancel": "Cancelar instalación",
|
||||
"confirmUninstall": "Está a punto de desinstalar este complemento. Se eliminará la configuración del complemento. Confirme su acción.",
|
||||
"confirmUninstall": "Está a punto de desinstalar este plugin, la configuración del plugin será eliminada. Por favor confirme su acción",
|
||||
"detail": "Detalles",
|
||||
"install": "Instalar",
|
||||
"manifest": "Editar archivo de instalación",
|
||||
"settings": "Configuración",
|
||||
"uninstall": "Desinstalar"
|
||||
},
|
||||
"communityPlugin": "Comunidad",
|
||||
"communityPlugin": "Comunidad de terceros",
|
||||
"customPlugin": "Personalizado",
|
||||
"empty": "No hay complementos instalados",
|
||||
"emptySelectHint": "Seleccione un complemento para previsualizar los detalles",
|
||||
"empty": "No hay plugins instalados",
|
||||
"emptySelectHint": "Seleccione un plugin para previsualizar detalles",
|
||||
"installAllPlugins": "Instalar todos",
|
||||
"networkError": "Error al obtener la tienda de complementos. Verifique la conexión a internet e inténtelo de nuevo.",
|
||||
"placeholder": "Buscar por nombre, descripción o palabra clave del complemento...",
|
||||
"networkError": "Error al obtener la tienda de plugins, por favor revise la conexión de red e intente de nuevo",
|
||||
"placeholder": "Buscar por nombre, descripción o palabra clave del plugin...",
|
||||
"releasedAt": "Publicado el {{createdAt}}",
|
||||
"tabs": {
|
||||
"installed": "Instalados",
|
||||
"mcp": "Complemento MCP",
|
||||
"old": "Plugin LobeChat"
|
||||
"mcp": "Plugins MCP",
|
||||
"old": "Plugins LobeChat"
|
||||
},
|
||||
"title": "Tienda de complementos"
|
||||
"title": "Tienda de plugins"
|
||||
},
|
||||
"unknownError": "Error desconocido",
|
||||
"unknownPlugin": "Plugin desconocido"
|
||||
|
||||
@@ -33,21 +33,21 @@
|
||||
"title": "جزئیات افزونه"
|
||||
},
|
||||
"dev": {
|
||||
"confirmDeleteDevPlugin": "این افزونه محلی حذف خواهد شد و پس از حذف قابل بازیابی نخواهد بود. آیا میخواهید این افزونه را حذف کنید؟",
|
||||
"confirmDeleteDevPlugin": "در حال حذف این افزونه محلی هستید، پس از حذف قابل بازیابی نخواهد بود. آیا مطمئن به حذف افزونه هستید؟",
|
||||
"customParams": {
|
||||
"useProxy": {
|
||||
"label": "نصب از طریق پروکسی (در صورت بروز خطای دسترسی متقابل، میتوانید این گزینه را فعال کرده و دوباره نصب کنید)"
|
||||
"label": "نصب از طریق پراکسی (در صورت بروز خطای دسترسی متقاطع، این گزینه را فعال کرده و مجدداً نصب کنید)"
|
||||
}
|
||||
},
|
||||
"deleteSuccess": "افزونه با موفقیت حذف شد",
|
||||
"manifest": {
|
||||
"identifier": {
|
||||
"desc": "شناسهی یکتای افزونه",
|
||||
"desc": "شناسه یکتا افزونه",
|
||||
"label": "شناسه"
|
||||
},
|
||||
"mode": {
|
||||
"mcp": "افزونه MCP",
|
||||
"mcpExp": "تجربی",
|
||||
"mcpExp": "آزمایشی",
|
||||
"url": "لینک آنلاین"
|
||||
},
|
||||
"name": {
|
||||
@@ -61,16 +61,16 @@
|
||||
"title": "تنظیمات پیشرفته"
|
||||
},
|
||||
"args": {
|
||||
"desc": "لیست پارامترهایی که به دستور اجرا منتقل میشوند، معمولاً در اینجا نام سرور MCP یا مسیر اسکریپت راهاندازی را وارد کنید",
|
||||
"label": "پارامترهای دستور",
|
||||
"placeholder": "برای مثال: --port 8080 --debug",
|
||||
"required": "لطفاً پارامترهای راهاندازی را وارد کنید"
|
||||
"desc": "لیست پارامترهای ارسال شده به فرمان اجرا، معمولاً نام سرور MCP یا مسیر اسکریپت راهاندازی وارد میشود",
|
||||
"label": "پارامترهای فرمان",
|
||||
"placeholder": "مثال: mcp-hello-world",
|
||||
"required": "لطفاً پارامتر راهاندازی را وارد کنید"
|
||||
},
|
||||
"auth": {
|
||||
"bear": "کلید API",
|
||||
"desc": "روش احراز هویت سرور MCP را انتخاب کنید",
|
||||
"label": "نوع احراز هویت",
|
||||
"none": "نیاز به احراز هویت نیست",
|
||||
"none": "نیازی به احراز هویت نیست",
|
||||
"placeholder": "لطفاً نوع احراز هویت را انتخاب کنید",
|
||||
"token": {
|
||||
"desc": "کلید API یا توکن Bearer خود را وارد کنید",
|
||||
@@ -83,28 +83,28 @@
|
||||
"label": "آیکون افزونه"
|
||||
},
|
||||
"command": {
|
||||
"desc": "فایل اجرایی یا اسکریپتی که برای راهاندازی افزونه MCP STDIO استفاده میشود",
|
||||
"label": "دستور",
|
||||
"placeholder": "برای مثال: python main.py یا /path/to/executable",
|
||||
"required": "لطفاً دستور راهاندازی را وارد کنید"
|
||||
"desc": "فایل اجرایی یا اسکریپتی که برای راهاندازی MCP STDIO Server استفاده میشود",
|
||||
"label": "فرمان",
|
||||
"placeholder": "مثال: npx / uv / docker و غیره",
|
||||
"required": "لطفاً فرمان راهاندازی را وارد کنید"
|
||||
},
|
||||
"desc": {
|
||||
"desc": "توضیحات مربوط به افزونه را اضافه کنید",
|
||||
"desc": "توضیحی برای افزونه اضافه کنید",
|
||||
"label": "توضیحات افزونه",
|
||||
"placeholder": "اطلاعات مربوط به نحوه استفاده و سناریوهای این افزونه را تکمیل کنید"
|
||||
"placeholder": "اطلاعات استفاده و سناریوهای افزونه را تکمیل کنید"
|
||||
},
|
||||
"endpoint": {
|
||||
"desc": "آدرس سرور HTTP Streamable MCP خود را وارد کنید",
|
||||
"label": "آدرس URL نقطه پایانی MCP"
|
||||
"desc": "آدرس MCP Streamable HTTP Server خود را وارد کنید",
|
||||
"label": "آدرس Endpoint MCP"
|
||||
},
|
||||
"env": {
|
||||
"add": "یک خط جدید اضافه کنید",
|
||||
"add": "افزودن یک خط جدید",
|
||||
"desc": "متغیرهای محیطی مورد نیاز سرور MCP خود را وارد کنید",
|
||||
"duplicateKeyError": "کلید فیلد باید منحصر به فرد باشد",
|
||||
"duplicateKeyError": "کلید فیلد باید یکتا باشد",
|
||||
"formValidationFailed": "اعتبارسنجی فرم ناموفق بود، لطفاً فرمت پارامترها را بررسی کنید",
|
||||
"keyRequired": "کلید فیلد نمیتواند خالی باشد",
|
||||
"label": "متغیرهای محیطی سرور MCP",
|
||||
"stringifyError": "نمیتوان پارامترها را سریالیزه کرد، لطفاً فرمت پارامترها را بررسی کنید"
|
||||
"stringifyError": "امکان سریالسازی پارامترها وجود ندارد، لطفاً فرمت پارامترها را بررسی کنید"
|
||||
},
|
||||
"headers": {
|
||||
"add": "افزودن یک خط جدید",
|
||||
@@ -112,39 +112,39 @@
|
||||
"label": "هدرهای HTTP"
|
||||
},
|
||||
"identifier": {
|
||||
"desc": "برای افزونه MCP خود یک نام مشخص کنید، باید از کاراکترهای انگلیسی استفاده کنید",
|
||||
"invalid": "فقط میتوانید از کاراکترهای انگلیسی، اعداد، - و _ استفاده کنید",
|
||||
"desc": "یک نام برای افزونه MCP خود تعیین کنید، باید از حروف انگلیسی استفاده شود",
|
||||
"invalid": "شناسه فقط میتواند شامل حروف، اعداد، خط تیره و زیرخط باشد",
|
||||
"label": "نام افزونه MCP",
|
||||
"placeholder": "برای مثال: my-mcp-plugin",
|
||||
"placeholder": "مثال: my-mcp-plugin",
|
||||
"required": "لطفاً شناسه سرویس MCP را وارد کنید"
|
||||
},
|
||||
"previewManifest": "پیشنمایش فایل توصیف افزونه",
|
||||
"quickImport": "وارد کردن سریع پیکربندی JSON",
|
||||
"quickImportError": {
|
||||
"empty": "محتوای ورودی نمیتواند خالی باشد",
|
||||
"empty": "محتوا نمیتواند خالی باشد",
|
||||
"invalidJson": "فرمت JSON نامعتبر است",
|
||||
"invalidStructure": "فرمت JSON نامعتبر است"
|
||||
},
|
||||
"stdioNotSupported": "محیط فعلی از پلاگین MCP نوع stdio پشتیبانی نمیکند",
|
||||
"stdioNotSupported": "محیط فعلی از افزونه MCP نوع stdio پشتیبانی نمیکند",
|
||||
"testConnection": "آزمایش اتصال",
|
||||
"testConnectionTip": "پس از موفقیتآمیز بودن آزمایش اتصال، افزونه MCP میتواند بهطور عادی استفاده شود",
|
||||
"testConnectionTip": "پس از موفقیت در آزمایش اتصال، افزونه MCP قابل استفاده خواهد بود",
|
||||
"type": {
|
||||
"desc": "روش ارتباط افزونه MCP را انتخاب کنید، نسخه وب فقط از HTTP Streamable پشتیبانی میکند",
|
||||
"httpFeature1": "سازگاری با نسخه وب و دسکتاپ",
|
||||
"httpFeature2": "اتصال به سرور MCP از راه دور، بدون نیاز به نصب و پیکربندی اضافی",
|
||||
"httpShortDesc": "پروتکل ارتباطی مبتنی بر HTTP جریانی",
|
||||
"desc": "نوع ارتباط افزونه MCP را انتخاب کنید، نسخه وب فقط از Streamable HTTP پشتیبانی میکند",
|
||||
"httpFeature1": "سازگار با نسخه وب و دسکتاپ",
|
||||
"httpFeature2": "اتصال به سرور MCP از راه دور بدون نیاز به نصب و پیکربندی اضافی",
|
||||
"httpShortDesc": "پروتکل ارتباطی مبتنی بر HTTP جریانپذیر",
|
||||
"label": "نوع افزونه MCP",
|
||||
"stdioFeature1": "تاخیر ارتباطی کمتر، مناسب برای اجراهای محلی",
|
||||
"stdioFeature1": "تاخیر ارتباطی کمتر، مناسب برای اجرا محلی",
|
||||
"stdioFeature2": "نیاز به نصب و اجرای سرور MCP به صورت محلی",
|
||||
"stdioNotAvailable": "حالت STDIO فقط در نسخه دسکتاپ در دسترس است",
|
||||
"stdioShortDesc": "پروتکل ارتباطی مبتنی بر ورودی و خروجی استاندارد",
|
||||
"title": "نوع افزونه MCP"
|
||||
},
|
||||
"url": {
|
||||
"desc": "آدرس HTTP قابل پخش سرور MCP خود را وارد کنید، حالت SSE پشتیبانی نمیشود",
|
||||
"desc": "آدرس Streamable HTTP سرور MCP خود را وارد کنید، حالت SSE پشتیبانی نمیشود",
|
||||
"invalid": "لطفاً یک آدرس URL معتبر وارد کنید",
|
||||
"label": "آدرس URL نقطه پایانی HTTP",
|
||||
"required": "لطفاً URL سرویس MCP را وارد کنید"
|
||||
"label": "آدرس Endpoint HTTP جریانپذیر",
|
||||
"required": "لطفاً آدرس سرویس MCP را وارد کنید"
|
||||
}
|
||||
},
|
||||
"meta": {
|
||||
@@ -158,8 +158,8 @@
|
||||
},
|
||||
"description": {
|
||||
"desc": "توضیحات افزونه",
|
||||
"label": "توضیحات",
|
||||
"placeholder": "اطلاعات را از موتور جستجو دریافت کنید"
|
||||
"label": "توضیح",
|
||||
"placeholder": "برای دریافت اطلاعات، موتور جستجو را جستجو کنید"
|
||||
},
|
||||
"formFieldRequired": "این فیلد الزامی است",
|
||||
"homepage": {
|
||||
@@ -167,15 +167,15 @@
|
||||
"label": "صفحه اصلی"
|
||||
},
|
||||
"identifier": {
|
||||
"desc": "شناسهی یکتای افزونه که بهطور خودکار از manifest شناسایی میشود",
|
||||
"errorDuplicate": "شناسه با افزونههای موجود تکراری است، لطفاً شناسه را تغییر دهید",
|
||||
"desc": "شناسه یکتا افزونه که به طور خودکار از manifest شناسایی میشود",
|
||||
"errorDuplicate": "شناسه با افزونه موجود تکراری است، لطفاً شناسه را تغییر دهید",
|
||||
"label": "شناسه",
|
||||
"pattenErrorMessage": "فقط میتوانید از حروف انگلیسی، اعداد، - و _ استفاده کنید"
|
||||
"pattenErrorMessage": "فقط میتوانید حروف انگلیسی، اعداد، - و _ وارد کنید"
|
||||
},
|
||||
"lobe": "افزونه {{appName}}",
|
||||
"lobe": "{{appName}} افزونه",
|
||||
"manifest": {
|
||||
"desc": "{{appName}} از طریق این لینک افزونه را نصب خواهد کرد",
|
||||
"label": "URL فایل توضیحات افزونه (Manifest)",
|
||||
"desc": "{{appName}} از این لینک برای نصب افزونه استفاده خواهد کرد",
|
||||
"label": "فایل توصیف افزونه (Manifest) URL",
|
||||
"preview": "پیشنمایش Manifest",
|
||||
"refresh": "تازهسازی"
|
||||
},
|
||||
@@ -187,30 +187,30 @@
|
||||
}
|
||||
},
|
||||
"metaConfig": "پیکربندی اطلاعات متا افزونه",
|
||||
"modalDesc": "پس از افزودن افزونه سفارشی، میتوانید از آن برای تأیید توسعه افزونه استفاده کنید یا مستقیماً در مکالمهها از آن بهره ببرید. برای توسعه افزونه به <1>مستندات توسعه↗</> مراجعه کنید.",
|
||||
"modalDesc": "پس از افزودن افزونه سفارشی، میتوانید برای توسعه و اعتبارسنجی افزونه استفاده کنید یا مستقیماً در گفتگوها به کار ببرید. برای توسعه افزونه به <1>مستندات توسعه↗</> مراجعه کنید.",
|
||||
"openai": {
|
||||
"importUrl": "وارد کردن از لینک URL",
|
||||
"schema": "Schema"
|
||||
"schema": "طرحواره"
|
||||
},
|
||||
"preview": {
|
||||
"api": {
|
||||
"noParams": "این ابزار پارامتر ندارد",
|
||||
"noResults": "هیچ API مطابق با شرایط جستجو پیدا نشد",
|
||||
"noParams": "این ابزار پارامتری ندارد",
|
||||
"noResults": "هیچ API مطابق با شرایط جستجو یافت نشد",
|
||||
"params": "پارامترها:",
|
||||
"searchPlaceholder": "جستجوی ابزار..."
|
||||
},
|
||||
"card": "پیشنمایش نمایش افزونه",
|
||||
"desc": "پیشنمایش توضیحات افزونه",
|
||||
"empty": {
|
||||
"desc": "پس از اتمام پیکربندی، میتوانید قابلیتهای ابزارهای پشتیبانی شده توسط پلاگین را در اینجا پیشنمایش کنید",
|
||||
"title": "پس از پیکربندی پلاگین، پیشنمایش را شروع کنید"
|
||||
"desc": "پس از پیکربندی، میتوانید قابلیتهای ابزار پشتیبانی شده توسط افزونه را در اینجا پیشنمایش کنید",
|
||||
"title": "پس از پیکربندی افزونه، پیشنمایش را شروع کنید"
|
||||
},
|
||||
"title": "پیشنمایش نام افزونه"
|
||||
},
|
||||
"save": "نصب افزونه",
|
||||
"saveSuccess": "تنظیمات افزونه با موفقیت ذخیره شد",
|
||||
"tabs": {
|
||||
"manifest": "فهرست توضیحات عملکرد (Manifest)",
|
||||
"manifest": "فهرست توصیف عملکرد (Manifest)",
|
||||
"meta": "اطلاعات متا افزونه"
|
||||
},
|
||||
"title": {
|
||||
@@ -218,25 +218,25 @@
|
||||
"edit": "ویرایش افزونه سفارشی"
|
||||
},
|
||||
"type": {
|
||||
"lobe": "افزونه {{appName}}",
|
||||
"lobe": "{{appName}} افزونه",
|
||||
"openai": "افزونه OpenAI"
|
||||
},
|
||||
"update": "بهروزرسانی",
|
||||
"updateSuccess": "تنظیمات افزونه با موفقیت بهروزرسانی شد"
|
||||
},
|
||||
"error": {
|
||||
"fetchError": "درخواست برای این لینک manifest ناموفق بود، لطفاً از معتبر بودن لینک اطمینان حاصل کنید و بررسی کنید که آیا لینک اجازه دسترسی بین دامنهای را میدهد.",
|
||||
"installError": "نصب افزونه {{name}} ناموفق بود.",
|
||||
"manifestInvalid": "manifest با استانداردها مطابقت ندارد، نتیجه بررسی: \n\n {{error}}",
|
||||
"noManifest": "فایل توصیفی وجود ندارد.",
|
||||
"fetchError": "درخواست لینک manifest ناموفق بود، لطفاً از اعتبار لینک و اجازه دسترسی متقاطع آن اطمینان حاصل کنید",
|
||||
"installError": "نصب افزونه {{name}} ناموفق بود",
|
||||
"manifestInvalid": "manifest با استانداردها مطابقت ندارد، نتیجه اعتبارسنجی: \n\n {{error}}",
|
||||
"noManifest": "فایل توصیف وجود ندارد",
|
||||
"openAPIInvalid": "تجزیه OpenAPI ناموفق بود، خطا: \n\n {{error}}",
|
||||
"reinstallError": "بروزرسانی افزونه {{name}} ناموفق بود.",
|
||||
"reinstallError": "تازهسازی افزونه {{name}} ناموفق بود",
|
||||
"testConnectionFailed": "دریافت Manifest ناموفق بود: {{error}}",
|
||||
"urlError": "این لینک محتوای JSON بازنگرداند، لطفاً از معتبر بودن لینک اطمینان حاصل کنید."
|
||||
"urlError": "این لینک محتوای فرمت JSON بازنگردانده است، لطفاً از معتبر بودن لینک اطمینان حاصل کنید"
|
||||
},
|
||||
"inspector": {
|
||||
"args": "مشاهده لیست پارامترها",
|
||||
"pluginRender": "مشاهده رابط کاربری پلاگین"
|
||||
"pluginRender": "مشاهده رابط افزونه"
|
||||
},
|
||||
"list": {
|
||||
"item": {
|
||||
@@ -251,8 +251,8 @@
|
||||
},
|
||||
"localSystem": {
|
||||
"apiName": {
|
||||
"listLocalFiles": "نمایش لیست فایلها",
|
||||
"moveLocalFiles": "انتقال فایلها",
|
||||
"listLocalFiles": "مشاهده لیست فایلها",
|
||||
"moveLocalFiles": "جابجایی فایلها",
|
||||
"readLocalFile": "خواندن محتوای فایل",
|
||||
"renameLocalFile": "تغییر نام",
|
||||
"searchLocalFiles": "جستجوی فایلها",
|
||||
@@ -263,15 +263,15 @@
|
||||
"mcpInstall": {
|
||||
"CHECKING_INSTALLATION": "در حال بررسی محیط نصب...",
|
||||
"COMPLETED": "نصب کامل شد",
|
||||
"CONFIGURATION_REQUIRED": "لطفاً پیکربندیهای لازم را انجام دهید و سپس نصب را ادامه دهید",
|
||||
"CONFIGURATION_REQUIRED": "لطفاً پیکربندیهای لازم را انجام داده و سپس نصب را ادامه دهید",
|
||||
"ERROR": "خطای نصب",
|
||||
"FETCHING_MANIFEST": "در حال دریافت فایل توضیحات افزونه...",
|
||||
"GETTING_SERVER_MANIFEST": "در حال راهاندازی سرور MCP...",
|
||||
"FETCHING_MANIFEST": "دریافت فایل توصیف افزونه...",
|
||||
"GETTING_SERVER_MANIFEST": "راهاندازی سرور MCP...",
|
||||
"INSTALLING_PLUGIN": "در حال نصب افزونه...",
|
||||
"configurationDescription": "این افزونه MCP نیاز به پارامترهای پیکربندی دارد تا به درستی کار کند، لطفاً اطلاعات پیکربندی لازم را وارد کنید",
|
||||
"configurationDescription": "این افزونه MCP نیاز به پیکربندی پارامترها برای عملکرد صحیح دارد، لطفاً اطلاعات لازم را وارد کنید",
|
||||
"configurationRequired": "پیکربندی پارامترهای افزونه",
|
||||
"continueInstall": "ادامه نصب",
|
||||
"dependenciesDescription": "این افزونه برای عملکرد صحیح نیاز به نصب وابستگیهای سیستمی زیر دارد، لطفاً وابستگیهای گمشده را طبق راهنما نصب کرده و سپس برای ادامه نصب روی بررسی مجدد کلیک کنید.",
|
||||
"dependenciesDescription": "این افزونه نیاز به نصب وابستگیهای سیستمی زیر دارد تا به درستی کار کند، لطفاً وابستگیهای گمشده را طبق راهنما نصب کرده و سپس برای ادامه نصب دوباره بررسی کنید.",
|
||||
"dependenciesRequired": "لطفاً وابستگیهای سیستمی افزونه را نصب کنید",
|
||||
"dependencyStatus": {
|
||||
"installed": "نصب شده",
|
||||
@@ -280,7 +280,7 @@
|
||||
},
|
||||
"errorDetails": {
|
||||
"args": "پارامترها",
|
||||
"command": "دستور",
|
||||
"command": "فرمان",
|
||||
"connectionParams": "پارامترهای اتصال",
|
||||
"env": "متغیرهای محیطی",
|
||||
"errorOutput": "گزارش خطا",
|
||||
@@ -290,14 +290,14 @@
|
||||
"showDetails": "نمایش جزئیات"
|
||||
},
|
||||
"errorTypes": {
|
||||
"AUTHORIZATION_ERROR": "خطای تأیید مجوز",
|
||||
"CONNECTION_FAILED": "اتصال ناموفق بود",
|
||||
"AUTHORIZATION_ERROR": "خطای احراز هویت",
|
||||
"CONNECTION_FAILED": "اتصال ناموفق",
|
||||
"INITIALIZATION_TIMEOUT": "زمان راهاندازی به پایان رسید",
|
||||
"PROCESS_SPAWN_ERROR": "خطا در راهاندازی فرآیند",
|
||||
"PROCESS_SPAWN_ERROR": "خطای راهاندازی فرآیند",
|
||||
"UNKNOWN_ERROR": "خطای ناشناخته",
|
||||
"VALIDATION_ERROR": "اعتبارسنجی پارامترها ناموفق بود"
|
||||
},
|
||||
"installError": "نصب افزونه MCP ناموفق بود، دلیل خطا: {{detail}}",
|
||||
"installError": "نصب افزونه MCP ناموفق بود، دلیل شکست: {{detail}}",
|
||||
"installMethods": {
|
||||
"manual": "نصب دستی:",
|
||||
"recommended": "روش نصب پیشنهادی:"
|
||||
@@ -306,35 +306,95 @@
|
||||
"skipDependencies": "رد بررسی"
|
||||
},
|
||||
"pluginList": "فهرست افزونهها",
|
||||
"search": {
|
||||
"apiName": {
|
||||
"crawlMultiPages": "خواندن محتوای چندین صفحه",
|
||||
"crawlSinglePage": "خواندن محتوای صفحه",
|
||||
"search": "جستجو در صفحه"
|
||||
"protocolInstall": {
|
||||
"actions": {
|
||||
"install": "نصب",
|
||||
"installAnyway": "با این حال نصب کن",
|
||||
"installed": "نصب شده"
|
||||
},
|
||||
"config": {
|
||||
"addKey": "کلید را اضافه کنید",
|
||||
"args": "پارامترها",
|
||||
"command": "فرمان",
|
||||
"env": "متغیرهای محیطی",
|
||||
"headers": "هدرها",
|
||||
"title": "اطلاعات پیکربندی",
|
||||
"type": {
|
||||
"http": "نوع: HTTP",
|
||||
"label": "نوع",
|
||||
"stdio": "نوع: Stdio"
|
||||
},
|
||||
"url": "آدرس سرویس"
|
||||
},
|
||||
"custom": {
|
||||
"badge": "افزونه سفارشی",
|
||||
"security": {
|
||||
"description": "این افزونه توسط منابع رسمی تأیید نشده است، نصب ممکن است خطرات امنیتی داشته باشد! لطفاً از اعتماد به منبع افزونه اطمینان حاصل کنید.",
|
||||
"title": "⚠️ هشدار ریسک امنیتی"
|
||||
},
|
||||
"title": "نصب افزونه سفارشی"
|
||||
},
|
||||
"marketplace": {
|
||||
"title": "نصب افزونههای شخص ثالث",
|
||||
"trustedBy": "تأمین شده توسط {{name}}",
|
||||
"unverified": {
|
||||
"title": "افزونههای شخص ثالث تأیید نشده",
|
||||
"warning": "این افزونه از بازار شخص ثالث تأیید نشده آمده است، لطفاً قبل از نصب از اعتماد به منبع اطمینان حاصل کنید."
|
||||
},
|
||||
"verified": "تأیید شده"
|
||||
},
|
||||
"messages": {
|
||||
"connectionTestFailed": "آزمایش اتصال ناموفق بود",
|
||||
"installError": "نصب افزونه ناموفق بود، لطفاً دوباره تلاش کنید",
|
||||
"installSuccess": "افزونه {{name}} با موفقیت نصب شد!",
|
||||
"manifestError": "دریافت جزئیات افزونه ناموفق بود، لطفاً اتصال شبکه را بررسی و دوباره تلاش کنید",
|
||||
"manifestNotFound": "فایل توصیف افزونه یافت نشد"
|
||||
},
|
||||
"meta": {
|
||||
"author": "نویسنده",
|
||||
"homepage": "صفحه اصلی",
|
||||
"identifier": "شناسه",
|
||||
"source": "منبع",
|
||||
"version": "نسخه"
|
||||
},
|
||||
"official": {
|
||||
"badge": "افزونه رسمی LobeHub",
|
||||
"description": "این افزونه توسط تیم رسمی LobeHub توسعه و نگهداری میشود و پس از بررسیهای امنیتی دقیق، قابل استفاده مطمئن است.",
|
||||
"loadingMessage": "در حال دریافت جزئیات افزونه...",
|
||||
"loadingTitle": "در حال بارگذاری",
|
||||
"title": "نصب افزونه رسمی"
|
||||
},
|
||||
"title": "نصب افزونه MCP",
|
||||
"warning": "⚠️ لطفاً اطمینان حاصل کنید که به منبع این افزونه اعتماد دارید، افزونههای مخرب ممکن است امنیت سیستم شما را به خطر بیندازند."
|
||||
},
|
||||
"search": {
|
||||
"apiName": {
|
||||
"crawlMultiPages": "خواندن محتوای چند صفحه",
|
||||
"crawlSinglePage": "خواندن محتوای صفحه",
|
||||
"search": "جستجوی صفحه"
|
||||
},
|
||||
"config": {
|
||||
"addKey": "افزودن کلید",
|
||||
"close": "حذف",
|
||||
"confirm": "پیکربندی کامل و دوباره تلاش کنید"
|
||||
"confirm": "پیکربندی انجام شده و دوباره تلاش کنید"
|
||||
},
|
||||
"crawPages": {
|
||||
"crawling": "در حال شناسایی لینک",
|
||||
"crawling": "شناسایی لینکها در حال انجام است",
|
||||
"detail": {
|
||||
"preview": "پیشنمایش",
|
||||
"raw": "متن اصلی",
|
||||
"tooLong": "متن بسیار طولانی است، فقط {{characters}} کاراکتر اول در زمینه گفتگو حفظ میشود و بخشهای اضافی در زمینه گفتگو محاسبه نمیشوند"
|
||||
"raw": "متن خام",
|
||||
"tooLong": "محتوای متن بسیار طولانی است، فقط {{characters}} کاراکتر اول در زمینه گفتگو حفظ شده و بخش اضافی لحاظ نمیشود"
|
||||
},
|
||||
"meta": {
|
||||
"crawler": "مدل خزنده",
|
||||
"words": "تعداد کاراکتر"
|
||||
"crawler": "حالت خزیدن",
|
||||
"words": "تعداد کاراکترها"
|
||||
}
|
||||
},
|
||||
"searchxng": {
|
||||
"baseURL": "لطفاً وارد کنید",
|
||||
"description": "لطفاً آدرس وب SearchXNG را وارد کنید تا جستجوی آنلاین را شروع کنید",
|
||||
"description": "آدرس SearchXNG را وارد کنید تا جستجوی آنلاین آغاز شود",
|
||||
"keyPlaceholder": "لطفاً کلید را وارد کنید",
|
||||
"title": "پیکربندی موتور جستجوی SearchXNG",
|
||||
"unconfiguredDesc": "لطفاً با مدیر تماس بگیرید تا پیکربندی موتور جستجوی SearchXNG را کامل کند و بتوانید جستجوی آنلاین را شروع کنید",
|
||||
"unconfiguredDesc": "لطفاً با مدیر تماس بگیرید تا پیکربندی موتور جستجوی SearchXNG انجام شود و سپس جستجوی آنلاین را شروع کنید",
|
||||
"unconfiguredTitle": "موتور جستجوی SearchXNG هنوز پیکربندی نشده است"
|
||||
},
|
||||
"title": "جستجوی آنلاین"
|
||||
@@ -352,17 +412,17 @@
|
||||
},
|
||||
"connection": {
|
||||
"args": "پارامترهای راهاندازی",
|
||||
"command": "دستور راهاندازی",
|
||||
"command": "فرمان راهاندازی",
|
||||
"title": "اطلاعات اتصال",
|
||||
"type": "نوع اتصال",
|
||||
"url": "آدرس سرویس"
|
||||
},
|
||||
"edit": "ویرایش",
|
||||
"envConfigDescription": "این تنظیمات به عنوان متغیرهای محیطی هنگام راهاندازی سرور MCP به فرآیند منتقل میشوند",
|
||||
"httpTypeNotice": "افزونههای MCP با نوع HTTP در حال حاضر نیازی به تنظیم متغیرهای محیطی ندارند",
|
||||
"envConfigDescription": "این پیکربندیها به عنوان متغیرهای محیطی هنگام راهاندازی سرور MCP به فرآیند منتقل میشوند",
|
||||
"httpTypeNotice": "افزونههای MCP نوع HTTP نیازی به پیکربندی متغیرهای محیطی ندارند",
|
||||
"indexUrl": {
|
||||
"title": "شاخص بازار",
|
||||
"tooltip": "ویرایش آنلاین در حال حاضر پشتیبانی نمیشود، لطفاً از طریق متغیرهای محیطی در زمان استقرار تنظیم کنید"
|
||||
"title": "فهرست بازار",
|
||||
"tooltip": "ویرایش آنلاین پشتیبانی نمیشود، لطفاً از طریق متغیرهای محیطی هنگام استقرار تنظیم کنید"
|
||||
},
|
||||
"messages": {
|
||||
"connectionUpdateFailed": "بهروزرسانی اطلاعات اتصال ناموفق بود",
|
||||
@@ -373,7 +433,7 @@
|
||||
"modalDesc": "پس از پیکربندی آدرس بازار افزونه، میتوانید از بازار افزونه سفارشی استفاده کنید",
|
||||
"rules": {
|
||||
"argsRequired": "لطفاً پارامترهای راهاندازی را وارد کنید",
|
||||
"commandRequired": "لطفاً دستور راهاندازی را وارد کنید",
|
||||
"commandRequired": "لطفاً فرمان راهاندازی را وارد کنید",
|
||||
"urlRequired": "لطفاً آدرس سرویس را وارد کنید"
|
||||
},
|
||||
"saveSettings": "ذخیره تنظیمات",
|
||||
@@ -383,27 +443,27 @@
|
||||
"store": {
|
||||
"actions": {
|
||||
"cancel": "لغو نصب",
|
||||
"confirmUninstall": "در حال حذف این افزونه هستید. پس از حذف، تنظیمات افزونه پاک خواهد شد. لطفاً عملیات خود را تأیید کنید.",
|
||||
"confirmUninstall": "در حال حذف این افزونه هستید، پس از حذف پیکربندیهای افزونه پاک خواهد شد، لطفاً عملیات خود را تأیید کنید",
|
||||
"detail": "جزئیات",
|
||||
"install": "نصب",
|
||||
"manifest": "ویرایش فایل نصب",
|
||||
"settings": "تنظیمات",
|
||||
"uninstall": "حذف"
|
||||
"uninstall": "حذف نصب"
|
||||
},
|
||||
"communityPlugin": "افزونههای جامعه",
|
||||
"customPlugin": "افزونه سفارشی",
|
||||
"empty": "هیچ افزونهای نصب نشده است",
|
||||
"emptySelectHint": "برای پیشنمایش جزئیات، افزونهای را انتخاب کنید",
|
||||
"communityPlugin": "جامعه شخص ثالث",
|
||||
"customPlugin": "سفارشی",
|
||||
"empty": "هیچ افزونه نصب شدهای وجود ندارد",
|
||||
"emptySelectHint": "برای مشاهده جزئیات، افزونهای را انتخاب کنید",
|
||||
"installAllPlugins": "نصب همه",
|
||||
"networkError": "دریافت فروشگاه افزونهها ناموفق بود. لطفاً اتصال شبکه خود را بررسی کرده و دوباره تلاش کنید.",
|
||||
"placeholder": "نام افزونه، توضیحات یا کلمات کلیدی را جستجو کنید...",
|
||||
"networkError": "دریافت فروشگاه افزونه ناموفق بود، لطفاً اتصال شبکه را بررسی و دوباره تلاش کنید",
|
||||
"placeholder": "جستجوی نام، توضیحات یا کلمات کلیدی افزونه...",
|
||||
"releasedAt": "منتشر شده در {{createdAt}}",
|
||||
"tabs": {
|
||||
"installed": "نصب شده",
|
||||
"mcp": "افزونه MCP",
|
||||
"old": "افزونه LobeChat"
|
||||
},
|
||||
"title": "فروشگاه افزونهها"
|
||||
"title": "فروشگاه افزونه"
|
||||
},
|
||||
"unknownError": "خطای ناشناخته",
|
||||
"unknownPlugin": "افزونه ناشناخته"
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
{
|
||||
"confirm": "Confirmer",
|
||||
"debug": {
|
||||
"arguments": "Arguments de l'appel",
|
||||
"arguments": "Arguments d'appel",
|
||||
"function_call": "Appel de fonction",
|
||||
"off": "Désactivé",
|
||||
"on": "Activer le débogage",
|
||||
"payload": "charge du plugin",
|
||||
"off": "Désactiver le débogage",
|
||||
"on": "Voir les informations d'appel du plugin",
|
||||
"payload": "Charge utile du plugin",
|
||||
"pluginState": "État du plugin",
|
||||
"response": "Réponse",
|
||||
"response": "Résultat retourné",
|
||||
"title": "Détails du plugin",
|
||||
"tool_call": "demande d'appel d'outil"
|
||||
"tool_call": "Requête d'appel d'outil"
|
||||
},
|
||||
"detailModal": {
|
||||
"customPlugin": {
|
||||
@@ -18,7 +18,7 @@
|
||||
"title": "Ceci est un plugin personnalisé"
|
||||
},
|
||||
"emptyState": {
|
||||
"description": "Veuillez installer ce plugin pour voir ses fonctionnalités et options de configuration",
|
||||
"description": "Veuillez d'abord installer ce plugin pour voir ses capacités et options de configuration",
|
||||
"title": "Voir les détails du plugin après installation"
|
||||
},
|
||||
"info": {
|
||||
@@ -33,13 +33,13 @@
|
||||
"title": "Détails du plugin"
|
||||
},
|
||||
"dev": {
|
||||
"confirmDeleteDevPlugin": "Êtes-vous sûr de vouloir supprimer ce plugin local ? Cette action est irréversible.",
|
||||
"confirmDeleteDevPlugin": "Vous êtes sur le point de supprimer ce plugin local. Cette action est irréversible. Voulez-vous vraiment supprimer ce plugin ?",
|
||||
"customParams": {
|
||||
"useProxy": {
|
||||
"label": "Installer via proxy (if encountering cross-origin access errors, try enabling this option and reinstalling)"
|
||||
"label": "Installer via proxy (en cas d'erreur d'accès cross-origin, essayez d'activer cette option puis réinstallez)"
|
||||
}
|
||||
},
|
||||
"deleteSuccess": "Suppression du plugin réussie",
|
||||
"deleteSuccess": "Plugin supprimé avec succès",
|
||||
"manifest": {
|
||||
"identifier": {
|
||||
"desc": "Identifiant unique du plugin",
|
||||
@@ -61,19 +61,19 @@
|
||||
"title": "Paramètres avancés"
|
||||
},
|
||||
"args": {
|
||||
"desc": "Liste des paramètres à passer à la commande d'exécution, généralement ici le nom du serveur MCP ou le chemin du script de démarrage",
|
||||
"label": "Paramètres de commande",
|
||||
"placeholder": "Par exemple : --port 8080 --debug",
|
||||
"required": "Veuillez entrer les paramètres de démarrage"
|
||||
"desc": "Liste des arguments passés à la commande d'exécution, généralement le nom du serveur MCP ou le chemin du script de démarrage",
|
||||
"label": "Arguments de commande",
|
||||
"placeholder": "Par exemple : mcp-hello-world",
|
||||
"required": "Veuillez saisir les arguments de démarrage"
|
||||
},
|
||||
"auth": {
|
||||
"bear": "Clé API",
|
||||
"desc": "Choisissez le mode d'authentification du serveur MCP",
|
||||
"label": "Type d'authentification",
|
||||
"none": "Aucune authentification requise",
|
||||
"placeholder": "Veuillez sélectionner un type d'authentification",
|
||||
"placeholder": "Veuillez choisir un type d'authentification",
|
||||
"token": {
|
||||
"desc": "Entrez votre clé API ou jeton Bearer",
|
||||
"desc": "Saisissez votre clé API ou jeton Bearer",
|
||||
"label": "Clé API",
|
||||
"placeholder": "sk-xxxxx",
|
||||
"required": "Veuillez saisir le jeton d'authentification"
|
||||
@@ -83,68 +83,68 @@
|
||||
"label": "Icône du plugin"
|
||||
},
|
||||
"command": {
|
||||
"desc": "Fichier exécutable ou script utilisé pour démarrer le plugin MCP STDIO",
|
||||
"desc": "Fichier exécutable ou script pour démarrer le serveur MCP STDIO",
|
||||
"label": "Commande",
|
||||
"placeholder": "Par exemple : python main.py ou /path/to/executable",
|
||||
"required": "Veuillez entrer la commande de démarrage"
|
||||
"placeholder": "Par exemple : npx / uv / docker etc.",
|
||||
"required": "Veuillez saisir la commande de démarrage"
|
||||
},
|
||||
"desc": {
|
||||
"desc": "Description du plugin",
|
||||
"desc": "Ajoutez une description du plugin",
|
||||
"label": "Description du plugin",
|
||||
"placeholder": "Ajoutez des informations sur l'utilisation et le contexte de ce plugin"
|
||||
"placeholder": "Complétez les instructions d'utilisation et les scénarios"
|
||||
},
|
||||
"endpoint": {
|
||||
"desc": "Entrez l'adresse de votre serveur HTTP Streamable MCP",
|
||||
"label": "URL de l'endpoint MCP"
|
||||
"desc": "Saisissez l'adresse de votre serveur MCP Streamable HTTP",
|
||||
"label": "URL du point de terminaison MCP"
|
||||
},
|
||||
"env": {
|
||||
"add": "Ajouter une ligne",
|
||||
"desc": "Entrez les variables d'environnement nécessaires pour votre serveur MCP",
|
||||
"desc": "Saisissez les variables d'environnement nécessaires pour le serveur MCP",
|
||||
"duplicateKeyError": "La clé du champ doit être unique",
|
||||
"formValidationFailed": "Échec de la validation du formulaire, veuillez vérifier le format des paramètres",
|
||||
"keyRequired": "La clé du champ ne peut pas être vide",
|
||||
"label": "Variables d'environnement du serveur MCP",
|
||||
"stringifyError": "Impossible de sérialiser les paramètres, veuillez vérifier le format des paramètres"
|
||||
"stringifyError": "Impossible de sérialiser les paramètres, veuillez vérifier le format"
|
||||
},
|
||||
"headers": {
|
||||
"add": "Ajouter une ligne",
|
||||
"desc": "Entrez les en-têtes de la requête",
|
||||
"desc": "Saisissez les en-têtes de requête",
|
||||
"label": "En-têtes HTTP"
|
||||
},
|
||||
"identifier": {
|
||||
"desc": "Donnez un nom à votre plugin MCP, en utilisant des caractères anglais",
|
||||
"invalid": "Vous ne pouvez entrer que des caractères anglais, des chiffres, - et _",
|
||||
"desc": "Attribuez un nom à votre plugin MCP, en utilisant des caractères anglais",
|
||||
"invalid": "L'identifiant ne peut contenir que des lettres, chiffres, tirets et underscores",
|
||||
"label": "Nom du plugin MCP",
|
||||
"placeholder": "Par exemple : my-mcp-plugin",
|
||||
"required": "Veuillez entrer l'identifiant du service MCP"
|
||||
"required": "Veuillez saisir l'identifiant du service MCP"
|
||||
},
|
||||
"previewManifest": "Aperçu du fichier de description du plugin",
|
||||
"quickImport": "Importation rapide de la configuration JSON",
|
||||
"quickImportError": {
|
||||
"empty": "Le contenu ne peut pas être vide",
|
||||
"empty": "Le contenu saisi ne peut pas être vide",
|
||||
"invalidJson": "Format JSON invalide",
|
||||
"invalidStructure": "Structure JSON invalide"
|
||||
},
|
||||
"stdioNotSupported": "L'environnement actuel ne prend pas en charge les plugins MCP de type stdio",
|
||||
"stdioNotSupported": "L'environnement actuel ne supporte pas les plugins MCP de type stdio",
|
||||
"testConnection": "Tester la connexion",
|
||||
"testConnectionTip": "Le plugin MCP ne peut être utilisé normalement qu'après un test de connexion réussi",
|
||||
"type": {
|
||||
"desc": "Choisissez le mode de communication du plugin MCP, la version web ne prend en charge que le HTTP Streamable",
|
||||
"httpFeature1": "Compatible avec la version web et de bureau",
|
||||
"httpFeature2": "Connexion à un serveur MCP distant, sans installation ni configuration supplémentaires",
|
||||
"httpShortDesc": "Protocole de communication basé sur HTTP en continu",
|
||||
"desc": "Choisissez le mode de communication du plugin MCP, la version web ne supporte que Streamable HTTP",
|
||||
"httpFeature1": "Compatible avec la version web et desktop",
|
||||
"httpFeature2": "Connexion au serveur MCP distant, sans installation ni configuration supplémentaires",
|
||||
"httpShortDesc": "Protocole de communication basé sur HTTP en streaming",
|
||||
"label": "Type de plugin MCP",
|
||||
"stdioFeature1": "Latence de communication réduite, adapté à l'exécution locale",
|
||||
"stdioFeature2": "Nécessite l'installation et l'exécution d'un serveur MCP local",
|
||||
"stdioNotAvailable": "Le mode STDIO n'est disponible que dans la version de bureau",
|
||||
"stdioFeature1": "Latence de communication plus faible, adapté à l'exécution locale",
|
||||
"stdioFeature2": "Nécessite l'installation locale du serveur MCP",
|
||||
"stdioNotAvailable": "Le mode STDIO est disponible uniquement sur la version desktop",
|
||||
"stdioShortDesc": "Protocole de communication basé sur l'entrée/sortie standard",
|
||||
"title": "Type de plugin MCP"
|
||||
},
|
||||
"url": {
|
||||
"desc": "Entrez l'adresse HTTP Streamable de votre serveur MCP, le mode SSE n'est pas pris en charge",
|
||||
"invalid": "Veuillez entrer une URL valide",
|
||||
"label": "URL de l'endpoint HTTP",
|
||||
"required": "Veuillez entrer l'URL du service MCP"
|
||||
"desc": "Saisissez l'adresse Streamable HTTP de votre serveur MCP, le mode SSE n'est pas supporté",
|
||||
"invalid": "Veuillez saisir une URL valide",
|
||||
"label": "URL du point de terminaison Streamable HTTP",
|
||||
"required": "Veuillez saisir l'URL du service MCP"
|
||||
}
|
||||
},
|
||||
"meta": {
|
||||
@@ -153,29 +153,29 @@
|
||||
"label": "Auteur"
|
||||
},
|
||||
"avatar": {
|
||||
"desc": "Icône du plugin, peut être un Emoji ou une URL",
|
||||
"desc": "Icône du plugin, peut être un emoji ou une URL",
|
||||
"label": "Icône"
|
||||
},
|
||||
"description": {
|
||||
"desc": "Description du plugin",
|
||||
"label": "Description",
|
||||
"placeholder": "Rechercher un moteur de recherche pour obtenir des informations"
|
||||
"placeholder": "Recherchez des informations via un moteur de recherche"
|
||||
},
|
||||
"formFieldRequired": "Ce champ est requis",
|
||||
"formFieldRequired": "Ce champ est obligatoire",
|
||||
"homepage": {
|
||||
"desc": "Page d'accueil du plugin",
|
||||
"label": "Page d'accueil"
|
||||
},
|
||||
"identifier": {
|
||||
"desc": "Identifiant unique du plugin, sera automatiquement reconnu à partir du manifest",
|
||||
"errorDuplicate": "L'identifiant du plugin existe déjà, veuillez le modifier",
|
||||
"desc": "Identifiant unique du plugin, détecté automatiquement depuis le manifest",
|
||||
"errorDuplicate": "L'identifiant est en conflit avec un plugin existant, veuillez le modifier",
|
||||
"label": "Identifiant",
|
||||
"pattenErrorMessage": "Seuls les caractères alphanumériques, - et _ sont autorisés"
|
||||
"pattenErrorMessage": "Seuls les caractères anglais, chiffres, - et _ sont autorisés"
|
||||
},
|
||||
"lobe": "Plugin {{appName}}",
|
||||
"manifest": {
|
||||
"desc": "{{appName}} sera installé via ce lien pour ajouter le plugin.",
|
||||
"label": "URL du fichier de description du plugin (Manifest)",
|
||||
"desc": "{{appName}} installera le plugin via ce lien",
|
||||
"label": "URL du fichier de description (Manifest)",
|
||||
"preview": "Aperçu du Manifest",
|
||||
"refresh": "Actualiser"
|
||||
},
|
||||
@@ -187,30 +187,30 @@
|
||||
}
|
||||
},
|
||||
"metaConfig": "Configuration des métadonnées du plugin",
|
||||
"modalDesc": "Une fois le plugin personnalisé ajouté, il peut être utilisé pour valider le développement du plugin ou directement dans la session. Veuillez consulter le <1>guide de développement↗</> pour le développement de plugins.",
|
||||
"modalDesc": "Après avoir ajouté un plugin personnalisé, il peut être utilisé pour le développement et la validation, ou directement dans les conversations. Pour le développement, veuillez consulter la <1>documentation ↗</1>.",
|
||||
"openai": {
|
||||
"importUrl": "Importer depuis l'URL",
|
||||
"importUrl": "Importer depuis une URL",
|
||||
"schema": "Schéma"
|
||||
},
|
||||
"preview": {
|
||||
"api": {
|
||||
"noParams": "Cet outil n'a pas de paramètres",
|
||||
"noResults": "Aucune API correspondant aux critères de recherche trouvée",
|
||||
"noResults": "Aucune API correspondant aux critères de recherche",
|
||||
"params": "Paramètres :",
|
||||
"searchPlaceholder": "Rechercher un outil..."
|
||||
},
|
||||
"card": "Aperçu de l'interface du plugin",
|
||||
"desc": "Aperçu de la description du plugin",
|
||||
"card": "Aperçu de l'affichage du plugin",
|
||||
"desc": "Description de l'aperçu du plugin",
|
||||
"empty": {
|
||||
"desc": "Une fois la configuration terminée, vous pourrez prévisualiser les capacités des outils pris en charge par le plugin ici",
|
||||
"title": "Commencez la prévisualisation après avoir configuré le plugin"
|
||||
"desc": "Après configuration, vous pourrez prévisualiser ici les capacités des outils supportés par le plugin",
|
||||
"title": "Commencez la prévisualisation après configuration"
|
||||
},
|
||||
"title": "Aperçu du nom du plugin"
|
||||
},
|
||||
"save": "Installer le plugin",
|
||||
"saveSuccess": "Paramètres du plugin enregistrés avec succès",
|
||||
"tabs": {
|
||||
"manifest": "Manifeste des fonctionnalités",
|
||||
"manifest": "Liste des fonctionnalités (Manifest)",
|
||||
"meta": "Métadonnées du plugin"
|
||||
},
|
||||
"title": {
|
||||
@@ -218,21 +218,21 @@
|
||||
"edit": "Modifier un plugin personnalisé"
|
||||
},
|
||||
"type": {
|
||||
"lobe": "Plugin LobeChat",
|
||||
"lobe": "Plugin {{appName}}",
|
||||
"openai": "Plugin OpenAI"
|
||||
},
|
||||
"update": "Mettre à jour",
|
||||
"updateSuccess": "Paramètres du plugin mis à jour avec succès"
|
||||
},
|
||||
"error": {
|
||||
"fetchError": "Échec de la requête vers ce lien de manifest. Veuillez vous assurer que le lien est valide et autorise les requêtes cross-origin.",
|
||||
"fetchError": "Échec de la requête vers le lien manifest, veuillez vérifier la validité du lien et s'assurer qu'il autorise l'accès cross-origin",
|
||||
"installError": "Échec de l'installation du plugin {{name}}",
|
||||
"manifestInvalid": "Le manifest ne respecte pas les normes. Résultat de la validation : \n\n {{error}}",
|
||||
"noManifest": "Aucun fichier de description trouvé",
|
||||
"openAPIInvalid": "Échec d'analyse de l'OpenAPI, erreur : \n\n {{error}}",
|
||||
"manifestInvalid": "Le manifest ne respecte pas les normes, résultat de la validation : \n\n {{error}}",
|
||||
"noManifest": "Fichier de description introuvable",
|
||||
"openAPIInvalid": "Échec de l'analyse OpenAPI, erreur : \n\n {{error}}",
|
||||
"reinstallError": "Échec de la mise à jour du plugin {{name}}",
|
||||
"testConnectionFailed": "Échec de l'obtention du Manifest : {{error}}",
|
||||
"urlError": "Ce lien ne renvoie pas de contenu au format JSON. Veuillez vous assurer qu'il s'agit d'un lien valide."
|
||||
"testConnectionFailed": "Échec de récupération du Manifest : {{error}}",
|
||||
"urlError": "Le lien ne retourne pas un contenu au format JSON, veuillez vérifier qu'il s'agit d'un lien valide"
|
||||
},
|
||||
"inspector": {
|
||||
"args": "Voir la liste des paramètres",
|
||||
@@ -240,38 +240,38 @@
|
||||
},
|
||||
"list": {
|
||||
"item": {
|
||||
"deprecated.title": "Obsolète",
|
||||
"deprecated.title": "Supprimé",
|
||||
"local.config": "Configuration",
|
||||
"local.title": "Personnalisé"
|
||||
}
|
||||
},
|
||||
"loading": {
|
||||
"content": "Appel du plugin en cours...",
|
||||
"plugin": "Exécution du plugin en cours..."
|
||||
"plugin": "Plugin en cours d'exécution..."
|
||||
},
|
||||
"localSystem": {
|
||||
"apiName": {
|
||||
"listLocalFiles": "Afficher la liste des fichiers",
|
||||
"listLocalFiles": "Voir la liste des fichiers",
|
||||
"moveLocalFiles": "Déplacer les fichiers",
|
||||
"readLocalFile": "Lire le contenu du fichier",
|
||||
"renameLocalFile": "Renommer",
|
||||
"searchLocalFiles": "Rechercher des fichiers",
|
||||
"writeLocalFile": "Écrire dans le fichier"
|
||||
"writeLocalFile": "Écrire dans un fichier"
|
||||
},
|
||||
"title": "Fichiers locaux"
|
||||
},
|
||||
"mcpInstall": {
|
||||
"CHECKING_INSTALLATION": "Vérification de l'environnement d'installation...",
|
||||
"COMPLETED": "Installation terminée",
|
||||
"CONFIGURATION_REQUIRED": "Veuillez compléter la configuration requise avant de continuer l'installation",
|
||||
"CONFIGURATION_REQUIRED": "Veuillez compléter la configuration avant de continuer l'installation",
|
||||
"ERROR": "Erreur d'installation",
|
||||
"FETCHING_MANIFEST": "Récupération du fichier manifeste du plugin...",
|
||||
"FETCHING_MANIFEST": "Récupération du fichier de description du plugin...",
|
||||
"GETTING_SERVER_MANIFEST": "Initialisation du serveur MCP...",
|
||||
"INSTALLING_PLUGIN": "Installation du plugin en cours...",
|
||||
"configurationDescription": "Ce plugin MCP nécessite des paramètres de configuration pour fonctionner correctement, veuillez remplir les informations nécessaires.",
|
||||
"configurationDescription": "Ce plugin MCP nécessite des paramètres de configuration pour fonctionner correctement, veuillez remplir les informations nécessaires",
|
||||
"configurationRequired": "Configurer les paramètres du plugin",
|
||||
"continueInstall": "Continuer l'installation",
|
||||
"dependenciesDescription": "Ce plugin nécessite l'installation des dépendances système suivantes pour fonctionner correctement. Veuillez installer les dépendances manquantes selon les instructions, puis cliquez sur 'Re-vérifier' pour continuer l'installation.",
|
||||
"dependenciesDescription": "Ce plugin nécessite l'installation des dépendances système suivantes pour fonctionner correctement. Veuillez installer les dépendances manquantes selon les instructions, puis cliquez sur vérifier à nouveau pour continuer l'installation.",
|
||||
"dependenciesRequired": "Veuillez installer les dépendances système du plugin",
|
||||
"dependencyStatus": {
|
||||
"installed": "Installé",
|
||||
@@ -279,7 +279,7 @@
|
||||
"requiredVersion": "Version requise : {{version}}"
|
||||
},
|
||||
"errorDetails": {
|
||||
"args": "Arguments",
|
||||
"args": "Paramètres",
|
||||
"command": "Commande",
|
||||
"connectionParams": "Paramètres de connexion",
|
||||
"env": "Variables d'environnement",
|
||||
@@ -302,44 +302,104 @@
|
||||
"manual": "Installation manuelle :",
|
||||
"recommended": "Méthode d'installation recommandée :"
|
||||
},
|
||||
"recheckDependencies": "Re-vérifier",
|
||||
"recheckDependencies": "Vérifier à nouveau",
|
||||
"skipDependencies": "Ignorer la vérification"
|
||||
},
|
||||
"pluginList": "Liste des plugins",
|
||||
"protocolInstall": {
|
||||
"actions": {
|
||||
"install": "Installer",
|
||||
"installAnyway": "Installer quand même",
|
||||
"installed": "Installé"
|
||||
},
|
||||
"config": {
|
||||
"args": "Paramètres",
|
||||
"command": "Commande",
|
||||
"env": "Variables d'environnement",
|
||||
"headers": "En-têtes de requête",
|
||||
"title": "Informations de configuration",
|
||||
"type": {
|
||||
"http": "Type : HTTP",
|
||||
"label": "Type",
|
||||
"stdio": "Type : Stdio"
|
||||
},
|
||||
"url": "Adresse du service"
|
||||
},
|
||||
"custom": {
|
||||
"badge": "Plugin personnalisé",
|
||||
"security": {
|
||||
"description": "Ce plugin n'a pas été vérifié officiellement, son installation peut présenter des risques de sécurité ! Veuillez vous assurer de faire confiance à la source du plugin.",
|
||||
"title": "⚠️ Avertissement de risque de sécurité"
|
||||
},
|
||||
"title": "Installer un plugin personnalisé"
|
||||
},
|
||||
"marketplace": {
|
||||
"title": "Installer un plugin tiers",
|
||||
"trustedBy": "Fournit par {{name}}",
|
||||
"unverified": {
|
||||
"title": "Plugin tiers non vérifié",
|
||||
"warning": "Ce plugin provient d'un marché tiers non vérifié, veuillez confirmer que vous faites confiance à cette source avant l'installation."
|
||||
},
|
||||
"verified": "Vérifié"
|
||||
},
|
||||
"messages": {
|
||||
"connectionTestFailed": "Échec du test de connexion",
|
||||
"installError": "Échec de l'installation du plugin, veuillez réessayer",
|
||||
"installSuccess": "Plugin {{name}} installé avec succès !",
|
||||
"manifestError": "Échec de récupération des détails du plugin, veuillez vérifier la connexion réseau et réessayer",
|
||||
"manifestNotFound": "Fichier de description du plugin introuvable"
|
||||
},
|
||||
"meta": {
|
||||
"author": "Auteur",
|
||||
"homepage": "Page d'accueil",
|
||||
"identifier": "Identifiant",
|
||||
"source": "Source",
|
||||
"version": "Version"
|
||||
},
|
||||
"official": {
|
||||
"badge": "Plugin officiel LobeHub",
|
||||
"description": "Ce plugin est développé et maintenu officiellement par LobeHub, soumis à un audit de sécurité rigoureux, vous pouvez l'utiliser en toute confiance.",
|
||||
"loadingMessage": "Récupération des détails du plugin en cours...",
|
||||
"loadingTitle": "Chargement",
|
||||
"title": "Installer un plugin officiel"
|
||||
},
|
||||
"title": "Installer un plugin MCP",
|
||||
"warning": "⚠️ Veuillez confirmer que vous faites confiance à la source de ce plugin, un plugin malveillant pourrait compromettre la sécurité de votre système."
|
||||
},
|
||||
"search": {
|
||||
"apiName": {
|
||||
"crawlMultiPages": "Lire le contenu de plusieurs pages",
|
||||
"crawlSinglePage": "Lire le contenu de la page",
|
||||
"search": "Rechercher la page"
|
||||
"search": "Rechercher sur la page"
|
||||
},
|
||||
"config": {
|
||||
"addKey": "Ajouter une clé",
|
||||
"close": "Supprimer",
|
||||
"confirm": "Configuration terminée, veuillez réessayer"
|
||||
"confirm": "Configuration terminée et réessayer"
|
||||
},
|
||||
"crawPages": {
|
||||
"crawling": "Identification des liens en cours",
|
||||
"detail": {
|
||||
"preview": "Aperçu",
|
||||
"raw": "Texte brut",
|
||||
"tooLong": "Le contenu du texte est trop long, le contexte de la conversation ne conserve que les {{characters}} premiers caractères, la partie excédentaire n'est pas prise en compte dans le contexte de la conversation"
|
||||
"tooLong": "Le contenu du texte est trop long, le contexte de la conversation ne conserve que les {{characters}} premiers caractères, le reste n'est pas pris en compte."
|
||||
},
|
||||
"meta": {
|
||||
"crawler": "Mode de collecte",
|
||||
"crawler": "Mode de capture",
|
||||
"words": "Nombre de caractères"
|
||||
}
|
||||
},
|
||||
"searchxng": {
|
||||
"baseURL": "Veuillez entrer",
|
||||
"description": "Veuillez entrer l'URL de SearchXNG pour commencer la recherche en ligne",
|
||||
"keyPlaceholder": "Veuillez entrer la clé",
|
||||
"baseURL": "Veuillez saisir",
|
||||
"description": "Veuillez saisir l'URL de SearchXNG pour commencer la recherche en ligne",
|
||||
"keyPlaceholder": "Veuillez saisir la clé",
|
||||
"title": "Configurer le moteur de recherche SearchXNG",
|
||||
"unconfiguredDesc": "Veuillez contacter l'administrateur pour compléter la configuration du moteur de recherche SearchXNG afin de commencer la recherche en ligne",
|
||||
"unconfiguredTitle": "Moteur de recherche SearchXNG non configuré"
|
||||
"unconfiguredDesc": "Veuillez contacter l'administrateur pour configurer SearchXNG afin de commencer la recherche en ligne",
|
||||
"unconfiguredTitle": "SearchXNG non configuré"
|
||||
},
|
||||
"title": "Recherche en ligne"
|
||||
},
|
||||
"setting": "Paramètres des plugins",
|
||||
"setting": "Paramètres du plugin",
|
||||
"settings": {
|
||||
"capabilities": {
|
||||
"prompts": "Invites",
|
||||
@@ -359,51 +419,51 @@
|
||||
},
|
||||
"edit": "Modifier",
|
||||
"envConfigDescription": "Ces configurations seront transmises en tant que variables d'environnement au processus lors du démarrage du serveur MCP",
|
||||
"httpTypeNotice": "Les plugins MCP de type HTTP n'ont actuellement pas de variables d'environnement à configurer",
|
||||
"httpTypeNotice": "Les plugins MCP de type HTTP n'ont pas de variables d'environnement à configurer pour le moment",
|
||||
"indexUrl": {
|
||||
"title": "Index du marché",
|
||||
"tooltip": "L'édition en ligne n'est pas encore prise en charge. Veuillez configurer via les variables d'environnement lors du déploiement."
|
||||
"tooltip": "L'édition en ligne n'est pas encore supportée, veuillez configurer via les variables d'environnement lors du déploiement"
|
||||
},
|
||||
"messages": {
|
||||
"connectionUpdateFailed": "Échec de la mise à jour des informations de connexion",
|
||||
"connectionUpdateSuccess": "Mise à jour des informations de connexion réussie",
|
||||
"connectionUpdateSuccess": "Informations de connexion mises à jour avec succès",
|
||||
"envUpdateFailed": "Échec de l'enregistrement des variables d'environnement",
|
||||
"envUpdateSuccess": "Enregistrement des variables d'environnement réussi"
|
||||
"envUpdateSuccess": "Variables d'environnement enregistrées avec succès"
|
||||
},
|
||||
"modalDesc": "Une fois l'adresse du marché des plugins configurée, vous pourrez utiliser un marché de plugins personnalisé.",
|
||||
"modalDesc": "Après avoir configuré l'adresse du marché des plugins, vous pouvez utiliser un marché de plugins personnalisé",
|
||||
"rules": {
|
||||
"argsRequired": "Veuillez saisir les paramètres de démarrage",
|
||||
"argsRequired": "Veuillez saisir les arguments de démarrage",
|
||||
"commandRequired": "Veuillez saisir la commande de démarrage",
|
||||
"urlRequired": "Veuillez saisir l'adresse du service"
|
||||
},
|
||||
"saveSettings": "Enregistrer les paramètres",
|
||||
"title": "Paramètres du marché des plugins"
|
||||
"title": "Configurer le marché des plugins"
|
||||
},
|
||||
"showInPortal": "Veuillez consulter les détails dans l'espace de travail",
|
||||
"store": {
|
||||
"actions": {
|
||||
"cancel": "Annuler l'installation",
|
||||
"confirmUninstall": "Vous êtes sur le point de désinstaller ce plugin. Une fois désinstallé, sa configuration sera effacée. Veuillez confirmer votre action.",
|
||||
"confirmUninstall": "Vous êtes sur le point de désinstaller ce plugin, cela supprimera également sa configuration. Veuillez confirmer votre action.",
|
||||
"detail": "Détails",
|
||||
"install": "Installer",
|
||||
"manifest": "Modifier le fichier d'installation",
|
||||
"settings": "Paramètres",
|
||||
"uninstall": "Désinstaller"
|
||||
},
|
||||
"communityPlugin": "Plugin communautaire",
|
||||
"customPlugin": "Plugin personnalisé",
|
||||
"empty": "Aucun plugin installé pour le moment",
|
||||
"communityPlugin": "Communauté tierce",
|
||||
"customPlugin": "Personnalisé",
|
||||
"empty": "Aucun plugin installé",
|
||||
"emptySelectHint": "Sélectionnez un plugin pour prévisualiser les détails",
|
||||
"installAllPlugins": "Installer tous les plugins",
|
||||
"networkError": "Échec de la récupération de la boutique de plugins. Veuillez vérifier votre connexion réseau et réessayer.",
|
||||
"placeholder": "Rechercher le nom ou les mots-clés de l'extension...",
|
||||
"installAllPlugins": "Installer tout",
|
||||
"networkError": "Échec de récupération du magasin de plugins, veuillez vérifier la connexion réseau et réessayer",
|
||||
"placeholder": "Rechercher par nom, description ou mot-clé...",
|
||||
"releasedAt": "Publié le {{createdAt}}",
|
||||
"tabs": {
|
||||
"installed": "Installés",
|
||||
"installed": "Installé",
|
||||
"mcp": "Plugin MCP",
|
||||
"old": "Plugin LobeChat"
|
||||
},
|
||||
"title": "Boutique de plugins"
|
||||
"title": "Magasin de plugins"
|
||||
},
|
||||
"unknownError": "Erreur inconnue",
|
||||
"unknownPlugin": "Plugin inconnu"
|
||||
|
||||
@@ -1,42 +1,42 @@
|
||||
{
|
||||
"confirm": "Conferma",
|
||||
"debug": {
|
||||
"arguments": "Argomenti di chiamata",
|
||||
"function_call": "Chiamata di funzione",
|
||||
"off": "Disattivato",
|
||||
"on": "Visualizza informazioni sulla chiamata del plugin",
|
||||
"payload": "carico del plugin",
|
||||
"pluginState": "Stato del plugin",
|
||||
"response": "Risposta",
|
||||
"title": "Dettagli del plugin",
|
||||
"tool_call": "richiesta di chiamata dello strumento"
|
||||
"arguments": "Parametri di chiamata",
|
||||
"function_call": "Chiamata funzione",
|
||||
"off": "Disattiva debug",
|
||||
"on": "Visualizza informazioni chiamata plugin",
|
||||
"payload": "Payload plugin",
|
||||
"pluginState": "Stato plugin",
|
||||
"response": "Risultato restituito",
|
||||
"title": "Dettagli plugin",
|
||||
"tool_call": "Richiesta chiamata strumento"
|
||||
},
|
||||
"detailModal": {
|
||||
"customPlugin": {
|
||||
"description": "Per favore, vai alla pagina di modifica per vedere i dettagli",
|
||||
"description": "Per favore visita la pagina di modifica per vedere i dettagli",
|
||||
"editBtn": "Modifica ora",
|
||||
"title": "Questo è un plugin personalizzato"
|
||||
},
|
||||
"emptyState": {
|
||||
"description": "Si prega di installare questo plugin per visualizzare le funzionalità e le opzioni di configurazione del plugin",
|
||||
"title": "Visualizza i dettagli del plugin dopo l'installazione"
|
||||
"description": "Installa prima questo plugin per vedere le capacità e le opzioni di configurazione",
|
||||
"title": "Visualizza dettagli plugin dopo l'installazione"
|
||||
},
|
||||
"info": {
|
||||
"description": "Descrizione API",
|
||||
"name": "Nome API"
|
||||
},
|
||||
"tabs": {
|
||||
"info": "Abilità del plugin",
|
||||
"info": "Capacità plugin",
|
||||
"manifest": "File di installazione",
|
||||
"settings": "Impostazioni"
|
||||
},
|
||||
"title": "Dettagli del plugin"
|
||||
"title": "Dettagli plugin"
|
||||
},
|
||||
"dev": {
|
||||
"confirmDeleteDevPlugin": "Stai per eliminare questo plugin locale. Una volta eliminato, non sarà possibile recuperarlo. Vuoi eliminare questo plugin?",
|
||||
"confirmDeleteDevPlugin": "Stai per eliminare questo plugin locale, l'operazione è irreversibile. Vuoi procedere?",
|
||||
"customParams": {
|
||||
"useProxy": {
|
||||
"label": "Installa tramite proxy (se si verificano errori di accesso cross-origin, prova ad abilitare questa opzione e reinstallare)"
|
||||
"label": "Installa tramite proxy (se si verificano errori di accesso cross-origin, prova ad attivare questa opzione e reinstallare)"
|
||||
}
|
||||
},
|
||||
"deleteSuccess": "Plugin eliminato con successo",
|
||||
@@ -48,7 +48,7 @@
|
||||
"mode": {
|
||||
"mcp": "Plugin MCP",
|
||||
"mcpExp": "Sperimentale",
|
||||
"url": "Collegamento online"
|
||||
"url": "Link online"
|
||||
},
|
||||
"name": {
|
||||
"desc": "Titolo del plugin",
|
||||
@@ -61,9 +61,9 @@
|
||||
"title": "Impostazioni avanzate"
|
||||
},
|
||||
"args": {
|
||||
"desc": "Elenco di parametri da passare al comando di esecuzione, di solito qui si inserisce il nome del server MCP o il percorso dello script di avvio",
|
||||
"label": "Parametri del comando",
|
||||
"placeholder": "Ad esempio: --port 8080 --debug",
|
||||
"desc": "Lista dei parametri passati al comando di esecuzione, solitamente qui si inserisce il nome del server MCP o il percorso dello script di avvio",
|
||||
"label": "Parametri comando",
|
||||
"placeholder": "esempio: mcp-hello-world",
|
||||
"required": "Inserisci i parametri di avvio"
|
||||
},
|
||||
"auth": {
|
||||
@@ -71,7 +71,7 @@
|
||||
"desc": "Seleziona il metodo di autenticazione del server MCP",
|
||||
"label": "Tipo di autenticazione",
|
||||
"none": "Nessuna autenticazione richiesta",
|
||||
"placeholder": "Seleziona il tipo di autenticazione",
|
||||
"placeholder": "Seleziona tipo di autenticazione",
|
||||
"token": {
|
||||
"desc": "Inserisci la tua API Key o Bearer Token",
|
||||
"label": "API Key",
|
||||
@@ -80,70 +80,70 @@
|
||||
}
|
||||
},
|
||||
"avatar": {
|
||||
"label": "Icona del plugin"
|
||||
"label": "Icona plugin"
|
||||
},
|
||||
"command": {
|
||||
"desc": "File eseguibile o script per avviare il plugin MCP STDIO",
|
||||
"desc": "File eseguibile o script per avviare MCP STDIO Server",
|
||||
"label": "Comando",
|
||||
"placeholder": "Ad esempio: python main.py o /path/to/executable",
|
||||
"placeholder": "esempio: npx / uv / docker ecc.",
|
||||
"required": "Inserisci il comando di avvio"
|
||||
},
|
||||
"desc": {
|
||||
"desc": "Descrizione del plugin",
|
||||
"label": "Descrizione del plugin",
|
||||
"placeholder": "Aggiungi informazioni sull'uso e sugli scenari del plugin"
|
||||
"desc": "Aggiungi una descrizione del plugin",
|
||||
"label": "Descrizione plugin",
|
||||
"placeholder": "Aggiungi informazioni sull'uso e gli scenari del plugin"
|
||||
},
|
||||
"endpoint": {
|
||||
"desc": "Inserisci l'indirizzo del tuo server HTTP Streamable MCP",
|
||||
"desc": "Inserisci l'indirizzo del tuo MCP Streamable HTTP Server",
|
||||
"label": "URL Endpoint MCP"
|
||||
},
|
||||
"env": {
|
||||
"add": "Aggiungi una riga",
|
||||
"desc": "Inserisci le variabili d'ambiente necessarie per il tuo server MCP",
|
||||
"desc": "Inserisci le variabili d'ambiente necessarie per il server MCP",
|
||||
"duplicateKeyError": "La chiave del campo deve essere unica",
|
||||
"formValidationFailed": "La convalida del modulo è fallita, controlla il formato dei parametri",
|
||||
"formValidationFailed": "Validazione del modulo fallita, controlla il formato dei parametri",
|
||||
"keyRequired": "La chiave del campo non può essere vuota",
|
||||
"label": "Variabili d'ambiente del server MCP",
|
||||
"stringifyError": "Impossibile serializzare i parametri, controlla il formato dei parametri"
|
||||
"label": "Variabili d'ambiente server MCP",
|
||||
"stringifyError": "Impossibile serializzare i parametri, controlla il formato"
|
||||
},
|
||||
"headers": {
|
||||
"add": "Aggiungi una riga",
|
||||
"desc": "Inserisci le intestazioni della richiesta",
|
||||
"label": "Intestazioni HTTP"
|
||||
"desc": "Inserisci gli header della richiesta",
|
||||
"label": "HTTP Headers"
|
||||
},
|
||||
"identifier": {
|
||||
"desc": "Assegna un nome al tuo plugin MCP, deve utilizzare caratteri inglesi",
|
||||
"invalid": "Puoi inserire solo caratteri inglesi, numeri, e i simboli - e _",
|
||||
"label": "Nome del plugin MCP",
|
||||
"placeholder": "Ad esempio: my-mcp-plugin",
|
||||
"desc": "Assegna un nome al tuo plugin MCP, deve essere in caratteri inglesi",
|
||||
"invalid": "L'identificatore può contenere solo lettere, numeri, trattini e underscore",
|
||||
"label": "Nome plugin MCP",
|
||||
"placeholder": "esempio: my-mcp-plugin",
|
||||
"required": "Inserisci l'identificatore del servizio MCP"
|
||||
},
|
||||
"previewManifest": "Anteprima del file di descrizione del plugin",
|
||||
"quickImport": "Importazione rapida della configurazione JSON",
|
||||
"previewManifest": "Anteprima file descrizione plugin",
|
||||
"quickImport": "Importazione rapida configurazione JSON",
|
||||
"quickImportError": {
|
||||
"empty": "Il contenuto non può essere vuoto",
|
||||
"invalidJson": "Formato JSON non valido",
|
||||
"invalidStructure": "Struttura JSON non valida"
|
||||
},
|
||||
"stdioNotSupported": "L'ambiente attuale non supporta i plugin MCP di tipo stdio",
|
||||
"testConnection": "Test di connessione",
|
||||
"testConnectionTip": "Il plugin MCP può essere utilizzato correttamente solo dopo un test di connessione riuscito",
|
||||
"stdioNotSupported": "L'ambiente attuale non supporta plugin MCP di tipo stdio",
|
||||
"testConnection": "Test connessione",
|
||||
"testConnectionTip": "Il plugin MCP può essere usato normalmente solo dopo un test di connessione riuscito",
|
||||
"type": {
|
||||
"desc": "Scegli il metodo di comunicazione del plugin MCP, la versione web supporta solo Streamable HTTP",
|
||||
"httpFeature1": "Compatibile con la versione web e desktop",
|
||||
"httpFeature2": "Collegamento a un server MCP remoto, senza installazione o configurazione aggiuntive",
|
||||
"desc": "Seleziona il tipo di comunicazione del plugin MCP, la versione web supporta solo Streamable HTTP",
|
||||
"httpFeature1": "Compatibile con versione web e desktop",
|
||||
"httpFeature2": "Connessione a server MCP remoto senza installazioni aggiuntive",
|
||||
"httpShortDesc": "Protocollo di comunicazione basato su HTTP streaming",
|
||||
"label": "Tipo di plugin MCP",
|
||||
"stdioFeature1": "Minore latenza nella comunicazione, adatto per esecuzione locale",
|
||||
"stdioFeature2": "È necessario installare e far funzionare il server MCP localmente",
|
||||
"label": "Tipo plugin MCP",
|
||||
"stdioFeature1": "Minore latenza di comunicazione, adatto per esecuzione locale",
|
||||
"stdioFeature2": "Richiede installazione locale del server MCP",
|
||||
"stdioNotAvailable": "La modalità STDIO è disponibile solo nella versione desktop",
|
||||
"stdioShortDesc": "Protocollo di comunicazione basato su input e output standard",
|
||||
"title": "Tipo di plugin MCP"
|
||||
"stdioShortDesc": "Protocollo di comunicazione basato su input/output standard",
|
||||
"title": "Tipo plugin MCP"
|
||||
},
|
||||
"url": {
|
||||
"desc": "Inserisci il tuo indirizzo HTTP Streamable del server MCP, il supporto per la modalità SSE non è disponibile",
|
||||
"desc": "Inserisci l'indirizzo Streamable HTTP del tuo server MCP, la modalità SSE non è supportata",
|
||||
"invalid": "Inserisci un URL valido",
|
||||
"label": "URL Endpoint HTTP",
|
||||
"label": "URL Endpoint Streamable HTTP",
|
||||
"required": "Inserisci l'URL del servizio MCP"
|
||||
}
|
||||
},
|
||||
@@ -153,13 +153,13 @@
|
||||
"label": "Autore"
|
||||
},
|
||||
"avatar": {
|
||||
"desc": "Icona del plugin, puoi usare Emoji o un URL",
|
||||
"desc": "Icona del plugin, può essere un'emoji o un URL",
|
||||
"label": "Icona"
|
||||
},
|
||||
"description": {
|
||||
"desc": "Descrizione del plugin",
|
||||
"label": "Descrizione",
|
||||
"placeholder": "Ottieni informazioni dai motori di ricerca"
|
||||
"placeholder": "Cerca informazioni tramite motore di ricerca"
|
||||
},
|
||||
"formFieldRequired": "Questo campo è obbligatorio",
|
||||
"homepage": {
|
||||
@@ -167,15 +167,15 @@
|
||||
"label": "Homepage"
|
||||
},
|
||||
"identifier": {
|
||||
"desc": "Identificatore univoco del plugin, verrà riconosciuto automaticamente dal manifesto",
|
||||
"errorDuplicate": "Identificatore duplicato rispetto a un plugin esistente. Modifica l'identificatore",
|
||||
"desc": "Identificatore univoco del plugin, rilevato automaticamente dal manifest",
|
||||
"errorDuplicate": "Identificatore duplicato con un plugin esistente, modifica l'identificatore",
|
||||
"label": "Identificatore",
|
||||
"pattenErrorMessage": "Puoi inserire solo caratteri alfanumerici, - e _"
|
||||
"pattenErrorMessage": "Sono ammessi solo caratteri inglesi, numeri, - e _"
|
||||
},
|
||||
"lobe": "Plugin {{appName}}",
|
||||
"lobe": "{{appName}} Plugin",
|
||||
"manifest": {
|
||||
"desc": "{{appName}} installerà il plugin tramite questo link",
|
||||
"label": "URL del file di descrizione del plugin (Manifest)",
|
||||
"label": "URL file descrizione plugin (Manifest)",
|
||||
"preview": "Anteprima Manifest",
|
||||
"refresh": "Aggiorna"
|
||||
},
|
||||
@@ -186,8 +186,8 @@
|
||||
"placeholder": "Motore di ricerca"
|
||||
}
|
||||
},
|
||||
"metaConfig": "Configurazione metadati del plugin",
|
||||
"modalDesc": "Dopo aver aggiunto un plugin personalizzato, potrà essere utilizzato per la convalida dello sviluppo del plugin o direttamente nelle conversazioni. Per lo sviluppo del plugin, consulta il <1>documento di sviluppo↗</>",
|
||||
"metaConfig": "Configurazione metadati plugin",
|
||||
"modalDesc": "Dopo aver aggiunto un plugin personalizzato, può essere usato per sviluppo e verifica, o direttamente in conversazione. Per lo sviluppo consulta la <1>documentazione↗</1>",
|
||||
"openai": {
|
||||
"importUrl": "Importa da URL",
|
||||
"schema": "Schema"
|
||||
@@ -195,63 +195,63 @@
|
||||
"preview": {
|
||||
"api": {
|
||||
"noParams": "Questo strumento non ha parametri",
|
||||
"noResults": "Nessuna API trovata che soddisfi i criteri di ricerca",
|
||||
"noResults": "Nessuna API trovata corrispondente ai criteri di ricerca",
|
||||
"params": "Parametri:",
|
||||
"searchPlaceholder": "Cerca strumento..."
|
||||
},
|
||||
"card": "Anteprima dell'aspetto del plugin",
|
||||
"desc": "Anteprima della descrizione del plugin",
|
||||
"card": "Anteprima visualizzazione plugin",
|
||||
"desc": "Anteprima descrizione plugin",
|
||||
"empty": {
|
||||
"desc": "Dopo aver completato la configurazione, sarà possibile visualizzare qui le capacità degli strumenti supportati dal plugin",
|
||||
"title": "Inizia a visualizzare dopo aver configurato il plugin"
|
||||
"desc": "Dopo la configurazione, qui potrai vedere le capacità degli strumenti supportati dal plugin",
|
||||
"title": "Inizia l'anteprima dopo la configurazione"
|
||||
},
|
||||
"title": "Anteprima del nome del plugin"
|
||||
"title": "Anteprima nome plugin"
|
||||
},
|
||||
"save": "Installa plugin",
|
||||
"saveSuccess": "Impostazioni del plugin salvate con successo",
|
||||
"saveSuccess": "Impostazioni plugin salvate con successo",
|
||||
"tabs": {
|
||||
"manifest": "Elenco delle funzionalità (Manifest)",
|
||||
"meta": "Metadati del plugin"
|
||||
"manifest": "Elenco funzionalità (Manifest)",
|
||||
"meta": "Metadati plugin"
|
||||
},
|
||||
"title": {
|
||||
"create": "Aggiungi plugin personalizzato",
|
||||
"edit": "Modifica plugin personalizzato"
|
||||
},
|
||||
"type": {
|
||||
"lobe": "Plugin LobeChat",
|
||||
"lobe": "{{appName}} Plugin",
|
||||
"openai": "Plugin OpenAI"
|
||||
},
|
||||
"update": "Aggiorna",
|
||||
"updateSuccess": "Impostazioni del plugin aggiornate con successo"
|
||||
"updateSuccess": "Impostazioni plugin aggiornate con successo"
|
||||
},
|
||||
"error": {
|
||||
"fetchError": "Errore nel recupero del collegamento al manifesto. Assicurati che il collegamento sia valido e che sia consentito l'accesso cross-origin.",
|
||||
"installError": "Installazione del plugin {{name}} fallita",
|
||||
"manifestInvalid": "Il manifesto non è conforme allo standard. Risultato della convalida: \n\n {{error}}",
|
||||
"noManifest": "Il file di descrizione non esiste",
|
||||
"openAPIInvalid": "Analisi dell'OpenAPI fallita. Errore: \n\n {{error}}",
|
||||
"reinstallError": "Ricaricamento del plugin {{name}} fallito",
|
||||
"testConnectionFailed": "Impossibile ottenere il Manifest: {{error}}",
|
||||
"urlError": "Il collegamento non restituisce contenuti nel formato JSON. Assicurati che il collegamento sia valido"
|
||||
"fetchError": "Richiesta al link manifest fallita, verifica la validità del link e che consenta accessi cross-origin",
|
||||
"installError": "Installazione plugin {{name}} fallita",
|
||||
"manifestInvalid": "Manifest non conforme, risultato della validazione: \n\n {{error}}",
|
||||
"noManifest": "File descrizione non trovato",
|
||||
"openAPIInvalid": "Parsing OpenAPI fallito, errore: \n\n {{error}}",
|
||||
"reinstallError": "Aggiornamento plugin {{name}} fallito",
|
||||
"testConnectionFailed": "Recupero Manifest fallito: {{error}}",
|
||||
"urlError": "Il link non ha restituito contenuto in formato JSON, assicurati che sia un link valido"
|
||||
},
|
||||
"inspector": {
|
||||
"args": "Visualizza l'elenco dei parametri",
|
||||
"pluginRender": "Visualizza l'interfaccia del plugin"
|
||||
"args": "Visualizza lista parametri",
|
||||
"pluginRender": "Visualizza interfaccia plugin"
|
||||
},
|
||||
"list": {
|
||||
"item": {
|
||||
"deprecated.title": "Deprecato",
|
||||
"deprecated.title": "Eliminato",
|
||||
"local.config": "Configurazione",
|
||||
"local.title": "Personalizzato"
|
||||
}
|
||||
},
|
||||
"loading": {
|
||||
"content": "Caricamento del plugin in corso...",
|
||||
"plugin": "Esecuzione del plugin in corso..."
|
||||
"content": "Chiamata plugin in corso...",
|
||||
"plugin": "Plugin in esecuzione..."
|
||||
},
|
||||
"localSystem": {
|
||||
"apiName": {
|
||||
"listLocalFiles": "Visualizza elenco file",
|
||||
"listLocalFiles": "Visualizza lista file",
|
||||
"moveLocalFiles": "Sposta file",
|
||||
"readLocalFile": "Leggi contenuto file",
|
||||
"renameLocalFile": "Rinomina",
|
||||
@@ -261,18 +261,18 @@
|
||||
"title": "File locali"
|
||||
},
|
||||
"mcpInstall": {
|
||||
"CHECKING_INSTALLATION": "Verifica dell'ambiente di installazione...",
|
||||
"CHECKING_INSTALLATION": "Verifica ambiente di installazione...",
|
||||
"COMPLETED": "Installazione completata",
|
||||
"CONFIGURATION_REQUIRED": "Si prega di completare la configurazione prima di continuare l'installazione",
|
||||
"CONFIGURATION_REQUIRED": "Completa la configurazione richiesta per continuare l'installazione",
|
||||
"ERROR": "Errore di installazione",
|
||||
"FETCHING_MANIFEST": "Recupero del file di descrizione del plugin...",
|
||||
"GETTING_SERVER_MANIFEST": "Inizializzazione del server MCP...",
|
||||
"INSTALLING_PLUGIN": "Installazione del plugin in corso...",
|
||||
"configurationDescription": "Questo plugin MCP richiede la configurazione dei parametri per funzionare correttamente, si prega di inserire le informazioni di configurazione necessarie",
|
||||
"configurationRequired": "Configurazione dei parametri del plugin",
|
||||
"FETCHING_MANIFEST": "Recupero file descrizione plugin...",
|
||||
"GETTING_SERVER_MANIFEST": "Inizializzazione server MCP...",
|
||||
"INSTALLING_PLUGIN": "Installazione plugin in corso...",
|
||||
"configurationDescription": "Questo plugin MCP richiede parametri di configurazione per funzionare correttamente, inserisci le informazioni necessarie",
|
||||
"configurationRequired": "Configura parametri plugin",
|
||||
"continueInstall": "Continua installazione",
|
||||
"dependenciesDescription": "Questo plugin necessita dell'installazione delle seguenti dipendenze di sistema per funzionare correttamente. Si prega di installare le dipendenze mancanti seguendo le istruzioni, quindi cliccare su 'Riprova' per continuare l'installazione.",
|
||||
"dependenciesRequired": "Si prega di installare le dipendenze di sistema del plugin",
|
||||
"dependenciesDescription": "Questo plugin necessita delle seguenti dipendenze di sistema per funzionare correttamente. Installa le dipendenze mancanti seguendo le istruzioni, poi clicca per ricontrollare e continuare l'installazione.",
|
||||
"dependenciesRequired": "Installa le dipendenze di sistema del plugin",
|
||||
"dependencyStatus": {
|
||||
"installed": "Installato",
|
||||
"notInstalled": "Non installato",
|
||||
@@ -283,7 +283,7 @@
|
||||
"command": "Comando",
|
||||
"connectionParams": "Parametri di connessione",
|
||||
"env": "Variabili d'ambiente",
|
||||
"errorOutput": "Log degli errori",
|
||||
"errorOutput": "Log errori",
|
||||
"exitCode": "Codice di uscita",
|
||||
"hideDetails": "Nascondi dettagli",
|
||||
"originalError": "Errore originale",
|
||||
@@ -293,117 +293,177 @@
|
||||
"AUTHORIZATION_ERROR": "Errore di autorizzazione",
|
||||
"CONNECTION_FAILED": "Connessione fallita",
|
||||
"INITIALIZATION_TIMEOUT": "Timeout di inizializzazione",
|
||||
"PROCESS_SPAWN_ERROR": "Errore nell'avvio del processo",
|
||||
"PROCESS_SPAWN_ERROR": "Errore avvio processo",
|
||||
"UNKNOWN_ERROR": "Errore sconosciuto",
|
||||
"VALIDATION_ERROR": "Validazione dei parametri fallita"
|
||||
"VALIDATION_ERROR": "Validazione parametri fallita"
|
||||
},
|
||||
"installError": "Installazione del plugin MCP fallita, motivo: {{detail}}",
|
||||
"installError": "Installazione plugin MCP fallita, motivo: {{detail}}",
|
||||
"installMethods": {
|
||||
"manual": "Installazione manuale:",
|
||||
"recommended": "Metodo di installazione consigliato:"
|
||||
},
|
||||
"recheckDependencies": "Riprova",
|
||||
"skipDependencies": "Salta verifica"
|
||||
"recheckDependencies": "Ricontrolla",
|
||||
"skipDependencies": "Salta controllo"
|
||||
},
|
||||
"pluginList": "Lista plugin",
|
||||
"protocolInstall": {
|
||||
"actions": {
|
||||
"install": "Installa",
|
||||
"installAnyway": "Installa comunque",
|
||||
"installed": "Installato"
|
||||
},
|
||||
"config": {
|
||||
"args": "Parametri",
|
||||
"command": "Comando",
|
||||
"env": "Variabili d'ambiente",
|
||||
"headers": "Header richiesta",
|
||||
"title": "Informazioni configurazione",
|
||||
"type": {
|
||||
"http": "Tipo: HTTP",
|
||||
"label": "Tipo",
|
||||
"stdio": "Tipo: Stdio"
|
||||
},
|
||||
"url": "Indirizzo servizio"
|
||||
},
|
||||
"custom": {
|
||||
"badge": "Plugin personalizzato",
|
||||
"security": {
|
||||
"description": "Questo plugin non è stato verificato ufficialmente, l'installazione potrebbe comportare rischi di sicurezza! Assicurati di fidarti della fonte del plugin.",
|
||||
"title": "⚠️ Avviso di rischio sicurezza"
|
||||
},
|
||||
"title": "Installa plugin personalizzato"
|
||||
},
|
||||
"marketplace": {
|
||||
"title": "Installa plugin di terze parti",
|
||||
"trustedBy": "Fornito da {{name}}",
|
||||
"unverified": {
|
||||
"title": "Plugin di terze parti non verificato",
|
||||
"warning": "Questo plugin proviene da un marketplace di terze parti non verificato, conferma di fidarti della fonte prima di installare."
|
||||
},
|
||||
"verified": "Verificato"
|
||||
},
|
||||
"messages": {
|
||||
"connectionTestFailed": "Test di connessione fallito",
|
||||
"installError": "Installazione plugin fallita, riprova",
|
||||
"installSuccess": "Plugin {{name}} installato con successo!",
|
||||
"manifestError": "Recupero dettagli plugin fallito, controlla la connessione e riprova",
|
||||
"manifestNotFound": "File descrizione plugin non trovato"
|
||||
},
|
||||
"meta": {
|
||||
"author": "Autore",
|
||||
"homepage": "Homepage",
|
||||
"identifier": "Identificatore",
|
||||
"source": "Fonte",
|
||||
"version": "Versione"
|
||||
},
|
||||
"official": {
|
||||
"badge": "Plugin ufficiale LobeHub",
|
||||
"description": "Questo plugin è sviluppato e mantenuto ufficialmente da LobeHub, sottoposto a rigorosi controlli di sicurezza, può essere usato con fiducia.",
|
||||
"loadingMessage": "Recupero dettagli plugin in corso...",
|
||||
"loadingTitle": "Caricamento",
|
||||
"title": "Installa plugin ufficiale"
|
||||
},
|
||||
"title": "Installa plugin MCP",
|
||||
"warning": "⚠️ Assicurati di fidarti della fonte di questo plugin, plugin malevoli possono compromettere la sicurezza del sistema."
|
||||
},
|
||||
"pluginList": "Elenco dei plugin",
|
||||
"search": {
|
||||
"apiName": {
|
||||
"crawlMultiPages": "Leggi il contenuto di più pagine",
|
||||
"crawlMultiPages": "Leggi contenuti di più pagine",
|
||||
"crawlSinglePage": "Leggi contenuto pagina",
|
||||
"search": "Cerca pagina"
|
||||
},
|
||||
"config": {
|
||||
"addKey": "Aggiungi chiave",
|
||||
"close": "Rimuovi",
|
||||
"confirm": "Configurazione completata, riprovare"
|
||||
"close": "Elimina",
|
||||
"confirm": "Configurazione completata e riprova"
|
||||
},
|
||||
"crawPages": {
|
||||
"crawling": "Riconoscimento del link in corso",
|
||||
"crawling": "Riconoscimento link in corso",
|
||||
"detail": {
|
||||
"preview": "Anteprima",
|
||||
"raw": "Testo originale",
|
||||
"tooLong": "Il contenuto del testo è troppo lungo, il contesto della conversazione manterrà solo i primi {{characters}} caratteri, la parte in eccesso non verrà considerata nel contesto della conversazione"
|
||||
"tooLong": "Il contenuto è troppo lungo, il contesto della conversazione manterrà solo i primi {{characters}} caratteri, la parte eccedente non sarà considerata."
|
||||
},
|
||||
"meta": {
|
||||
"crawler": "Modalità di scansione",
|
||||
"words": "Numero di caratteri"
|
||||
"crawler": "Modalità crawling",
|
||||
"words": "Numero caratteri"
|
||||
}
|
||||
},
|
||||
"searchxng": {
|
||||
"baseURL": "Inserisci",
|
||||
"description": "Inserisci l'URL di SearchXNG per iniziare la ricerca online",
|
||||
"keyPlaceholder": "Inserisci chiave",
|
||||
"title": "Configura il motore di ricerca SearchXNG",
|
||||
"unconfiguredDesc": "Contatta l'amministratore per completare la configurazione del motore di ricerca SearchXNG e iniziare la ricerca online",
|
||||
"unconfiguredTitle": "Motore di ricerca SearchXNG non configurato"
|
||||
"keyPlaceholder": "Inserisci la chiave",
|
||||
"title": "Configura motore di ricerca SearchXNG",
|
||||
"unconfiguredDesc": "Contatta l'amministratore per completare la configurazione di SearchXNG e iniziare la ricerca online",
|
||||
"unconfiguredTitle": "SearchXNG non configurato"
|
||||
},
|
||||
"title": "Ricerca online"
|
||||
},
|
||||
"setting": "Impostazioni del plugin",
|
||||
"setting": "Impostazioni plugin",
|
||||
"settings": {
|
||||
"capabilities": {
|
||||
"prompts": "Prompt",
|
||||
"resources": "Risorse",
|
||||
"title": "Capacità del plugin",
|
||||
"title": "Capacità plugin",
|
||||
"tools": "Strumenti"
|
||||
},
|
||||
"configuration": {
|
||||
"title": "Configurazione del plugin"
|
||||
"title": "Configurazione plugin"
|
||||
},
|
||||
"connection": {
|
||||
"args": "Parametri di avvio",
|
||||
"command": "Comando di avvio",
|
||||
"title": "Informazioni di connessione",
|
||||
"type": "Tipo di connessione",
|
||||
"url": "Indirizzo del servizio"
|
||||
"url": "Indirizzo servizio"
|
||||
},
|
||||
"edit": "Modifica",
|
||||
"envConfigDescription": "Queste configurazioni saranno passate come variabili d'ambiente al processo all'avvio del server MCP",
|
||||
"httpTypeNotice": "I plugin MCP di tipo HTTP non richiedono variabili d'ambiente da configurare",
|
||||
"indexUrl": {
|
||||
"title": "Indice di mercato",
|
||||
"tooltip": "Modifica non supportata online. Imposta tramite variabili d'ambiente durante il deploy"
|
||||
"title": "Indice marketplace",
|
||||
"tooltip": "Modifica online non supportata, configura tramite variabili d'ambiente in fase di deploy"
|
||||
},
|
||||
"messages": {
|
||||
"connectionUpdateFailed": "Aggiornamento delle informazioni di connessione fallito",
|
||||
"connectionUpdateFailed": "Aggiornamento informazioni di connessione fallito",
|
||||
"connectionUpdateSuccess": "Informazioni di connessione aggiornate con successo",
|
||||
"envUpdateFailed": "Salvataggio delle variabili d'ambiente fallito",
|
||||
"envUpdateFailed": "Salvataggio variabili d'ambiente fallito",
|
||||
"envUpdateSuccess": "Variabili d'ambiente salvate con successo"
|
||||
},
|
||||
"modalDesc": "Dopo aver configurato l'indirizzo del mercato dei plugin, è possibile utilizzare un mercato dei plugin personalizzato",
|
||||
"modalDesc": "Configurando l'indirizzo del marketplace plugin, puoi usare un marketplace personalizzato",
|
||||
"rules": {
|
||||
"argsRequired": "Inserisci i parametri di avvio",
|
||||
"commandRequired": "Inserisci il comando di avvio",
|
||||
"urlRequired": "Inserisci l'indirizzo del servizio"
|
||||
},
|
||||
"saveSettings": "Salva impostazioni",
|
||||
"title": "Impostazioni del mercato dei plugin"
|
||||
"title": "Impostazioni marketplace plugin"
|
||||
},
|
||||
"showInPortal": "Si prega di visualizzare i dettagli nell'area di lavoro",
|
||||
"showInPortal": "Visualizza i dettagli nell'area di lavoro",
|
||||
"store": {
|
||||
"actions": {
|
||||
"cancel": "Annulla installazione",
|
||||
"confirmUninstall": "Stai per disinstallare questo plugin. La disinstallazione cancellerà la configurazione del plugin. Conferma l'operazione",
|
||||
"confirmUninstall": "Stai per disinstallare questo plugin, la configurazione sarà rimossa. Confermi?",
|
||||
"detail": "Dettagli",
|
||||
"install": "Installa",
|
||||
"manifest": "Modifica file di installazione",
|
||||
"settings": "Impostazioni",
|
||||
"uninstall": "Disinstalla"
|
||||
},
|
||||
"communityPlugin": "Plugin della community",
|
||||
"communityPlugin": "Community di terze parti",
|
||||
"customPlugin": "Personalizzato",
|
||||
"empty": "Nessun plugin installato al momento",
|
||||
"emptySelectHint": "Seleziona un plugin per visualizzare i dettagli",
|
||||
"installAllPlugins": "Installa tutti",
|
||||
"networkError": "Impossibile recuperare il negozio dei plugin. Controlla la connessione di rete e riprova",
|
||||
"placeholder": "Cerca per nome, descrizione o parola chiave del plugin...",
|
||||
"empty": "Nessun plugin installato",
|
||||
"emptySelectHint": "Seleziona un plugin per vedere i dettagli",
|
||||
"installAllPlugins": "Installa tutto",
|
||||
"networkError": "Recupero marketplace plugin fallito, controlla la connessione e riprova",
|
||||
"placeholder": "Cerca nome, descrizione o parole chiave del plugin...",
|
||||
"releasedAt": "Pubblicato il {{createdAt}}",
|
||||
"tabs": {
|
||||
"installed": "Installati",
|
||||
"mcp": "Plugin MCP",
|
||||
"old": "Plugin LobeChat"
|
||||
},
|
||||
"title": "Negozio dei plugin"
|
||||
"title": "Marketplace plugin"
|
||||
},
|
||||
"unknownError": "Errore sconosciuto",
|
||||
"unknownPlugin": "Plugin sconosciuto"
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
{
|
||||
"confirm": "確認",
|
||||
"confirm": "確定",
|
||||
"debug": {
|
||||
"arguments": "引数",
|
||||
"arguments": "呼び出しパラメータ",
|
||||
"function_call": "関数呼び出し",
|
||||
"off": "デバッグをオフにする",
|
||||
"on": "プラグイン呼び出し情報を表示する",
|
||||
"payload": "ペイロード",
|
||||
"pluginState": "プラグインの状態",
|
||||
"response": "レスポンス",
|
||||
"title": "プラグインの詳細",
|
||||
"tool_call": "ツール呼び出し"
|
||||
"on": "プラグイン呼び出し情報を表示",
|
||||
"payload": "プラグインペイロード",
|
||||
"pluginState": "プラグイン状態",
|
||||
"response": "返却結果",
|
||||
"title": "プラグイン詳細",
|
||||
"tool_call": "ツール呼び出しリクエスト"
|
||||
},
|
||||
"detailModal": {
|
||||
"customPlugin": {
|
||||
@@ -18,57 +18,57 @@
|
||||
"title": "これはカスタムプラグインです"
|
||||
},
|
||||
"emptyState": {
|
||||
"description": "このプラグインをインストールしてから、プラグインの機能と設定オプションを確認してください",
|
||||
"title": "インストール後にプラグインの詳細を表示"
|
||||
"description": "プラグインの機能と設定オプションを確認するには、まずこのプラグインをインストールしてください",
|
||||
"title": "インストール後にプラグイン詳細を表示"
|
||||
},
|
||||
"info": {
|
||||
"description": "API 説明",
|
||||
"name": "API 名"
|
||||
"description": "APIの説明",
|
||||
"name": "API名"
|
||||
},
|
||||
"tabs": {
|
||||
"info": "プラグイン機能",
|
||||
"manifest": "インストールファイル",
|
||||
"settings": "設定"
|
||||
},
|
||||
"title": "プラグインの詳細"
|
||||
"title": "プラグイン詳細"
|
||||
},
|
||||
"dev": {
|
||||
"confirmDeleteDevPlugin": "このローカルプラグインを削除しますか?削除後は元に戻せません。",
|
||||
"confirmDeleteDevPlugin": "このローカルプラグインを削除すると復元できません。本当に削除しますか?",
|
||||
"customParams": {
|
||||
"useProxy": {
|
||||
"label": "プロキシを使用する(クロスドメインエラーが発生した場合、このオプションを有効にして再インストールしてください)"
|
||||
"label": "プロキシ経由でインストール(クロスオリジンエラーが発生した場合はこのオプションを有効にして再インストールをお試しください)"
|
||||
}
|
||||
},
|
||||
"deleteSuccess": "プラグインが正常に削除されました",
|
||||
"manifest": {
|
||||
"identifier": {
|
||||
"desc": "プラグインの一意の識別子",
|
||||
"desc": "プラグインの一意識別子",
|
||||
"label": "識別子"
|
||||
},
|
||||
"mode": {
|
||||
"mcp": "MCP プラグイン",
|
||||
"mcp": "MCPプラグイン",
|
||||
"mcpExp": "実験的",
|
||||
"url": "オンラインリンク"
|
||||
},
|
||||
"name": {
|
||||
"desc": "プラグインのタイトル",
|
||||
"desc": "プラグインタイトル",
|
||||
"label": "タイトル",
|
||||
"placeholder": "検索エンジン"
|
||||
}
|
||||
},
|
||||
"mcp": {
|
||||
"advanced": {
|
||||
"title": "高度な設定"
|
||||
"title": "詳細設定"
|
||||
},
|
||||
"args": {
|
||||
"desc": "実行コマンドに渡すパラメータのリスト。通常、ここにMCPサーバー名または起動スクリプトのパスを入力します。",
|
||||
"desc": "コマンド実行に渡すパラメータリスト。通常はここにMCPサーバー名や起動スクリプトのパスを入力します",
|
||||
"label": "コマンドパラメータ",
|
||||
"placeholder": "例:--port 8080 --debug",
|
||||
"placeholder": "例:mcp-hello-world",
|
||||
"required": "起動パラメータを入力してください"
|
||||
},
|
||||
"auth": {
|
||||
"bear": "APIキー",
|
||||
"desc": "MCPサーバーの認証方法を選択してください",
|
||||
"desc": "MCPサーバーの認証方式を選択してください",
|
||||
"label": "認証タイプ",
|
||||
"none": "認証不要",
|
||||
"placeholder": "認証タイプを選択してください",
|
||||
@@ -83,28 +83,28 @@
|
||||
"label": "プラグインアイコン"
|
||||
},
|
||||
"command": {
|
||||
"desc": "MCP STDIO プラグインを起動するための実行可能ファイルまたはスクリプト",
|
||||
"desc": "MCP STDIOサーバーを起動する実行可能ファイルまたはスクリプト",
|
||||
"label": "コマンド",
|
||||
"placeholder": "例:python main.py または /path/to/executable",
|
||||
"placeholder": "例:npx / uv / docker など",
|
||||
"required": "起動コマンドを入力してください"
|
||||
},
|
||||
"desc": {
|
||||
"desc": "プラグインの説明を追加",
|
||||
"label": "プラグインの説明",
|
||||
"placeholder": "このプラグインの使用方法やシーンなどの情報を補足してください"
|
||||
"desc": "プラグインの説明を追加してください",
|
||||
"label": "プラグイン説明",
|
||||
"placeholder": "このプラグインの使用方法や利用シーンなどを補足してください"
|
||||
},
|
||||
"endpoint": {
|
||||
"desc": "あなたの MCP Streamable HTTP サーバーのアドレスを入力してください",
|
||||
"label": "MCP エンドポイント URL"
|
||||
"desc": "MCP Streamable HTTPサーバーのアドレスを入力してください",
|
||||
"label": "MCPエンドポイントURL"
|
||||
},
|
||||
"env": {
|
||||
"add": "行を追加",
|
||||
"desc": "MCPサーバーに必要な環境変数を入力してください",
|
||||
"duplicateKeyError": "フィールドキーは一意でなければなりません",
|
||||
"formValidationFailed": "フォームの検証に失敗しました。パラメータの形式を確認してください",
|
||||
"formValidationFailed": "フォーム検証に失敗しました。パラメータ形式を確認してください",
|
||||
"keyRequired": "フィールドキーは空にできません",
|
||||
"label": "MCPサーバー環境変数",
|
||||
"stringifyError": "パラメータをシリアライズできません。パラメータの形式を確認してください"
|
||||
"stringifyError": "パラメータをシリアライズできません。形式を確認してください"
|
||||
},
|
||||
"headers": {
|
||||
"add": "行を追加",
|
||||
@@ -112,39 +112,39 @@
|
||||
"label": "HTTPヘッダー"
|
||||
},
|
||||
"identifier": {
|
||||
"desc": "あなたの MCP プラグインに名前を指定してください。英字を使用する必要があります",
|
||||
"invalid": "英字、数字、- および _ のみを入力できます",
|
||||
"label": "MCP プラグイン名",
|
||||
"desc": "MCPプラグインの名前を英字で指定してください",
|
||||
"invalid": "識別子は英数字、ハイフン、アンダースコアのみ使用可能です",
|
||||
"label": "MCPプラグイン名",
|
||||
"placeholder": "例:my-mcp-plugin",
|
||||
"required": "MCP サービス識別子を入力してください"
|
||||
"required": "MCPサービス識別子を入力してください"
|
||||
},
|
||||
"previewManifest": "プラグインの説明ファイルをプレビュー",
|
||||
"quickImport": "JSON 設定を迅速にインポート",
|
||||
"previewManifest": "プラグイン記述ファイルをプレビュー",
|
||||
"quickImport": "JSON設定をクイックインポート",
|
||||
"quickImportError": {
|
||||
"empty": "入力内容は空にできません",
|
||||
"invalidJson": "無効な JSON 形式です",
|
||||
"invalidStructure": "JSON 形式が無効です"
|
||||
"invalidJson": "無効なJSON形式です",
|
||||
"invalidStructure": "JSON形式が無効です"
|
||||
},
|
||||
"stdioNotSupported": "現在の環境では stdio タイプの MCP プラグインはサポートされていません",
|
||||
"testConnection": "接続をテスト",
|
||||
"testConnectionTip": "接続テストが成功した後、MCP プラグインは正常に使用できます",
|
||||
"stdioNotSupported": "現在の環境はstdioタイプのMCPプラグインをサポートしていません",
|
||||
"testConnection": "接続テスト",
|
||||
"testConnectionTip": "接続テストが成功して初めてMCPプラグインを正常に使用できます",
|
||||
"type": {
|
||||
"desc": "MCP プラグインの通信方式を選択してください。ウェブ版は Streamable HTTP のみをサポートしています",
|
||||
"httpFeature1": "ウェブ版とデスクトップ版の互換性",
|
||||
"httpFeature2": "追加のインストールや設定なしでリモートMCPサーバーに接続",
|
||||
"httpShortDesc": "ストリーミングHTTPに基づく通信プロトコル",
|
||||
"label": "MCP プラグインタイプ",
|
||||
"stdioFeature1": "通信遅延が少なく、ローカル実行に適している",
|
||||
"stdioFeature2": "ローカルにMCPサーバーをインストールして実行する必要がある",
|
||||
"stdioNotAvailable": "STDIOモードはデスクトップ版でのみ利用可能",
|
||||
"stdioShortDesc": "標準入力出力に基づく通信プロトコル",
|
||||
"desc": "MCPプラグインの通信方式を選択してください。ウェブ版はStreamable HTTPのみ対応",
|
||||
"httpFeature1": "ウェブ版とデスクトップ版の両方に対応",
|
||||
"httpFeature2": "リモートMCPサーバーに接続、追加インストール不要",
|
||||
"httpShortDesc": "ストリームHTTPベースの通信プロトコル",
|
||||
"label": "MCPプラグインタイプ",
|
||||
"stdioFeature1": "通信遅延が低く、ローカル実行に適しています",
|
||||
"stdioFeature2": "ローカルにMCPサーバーをインストールして実行する必要があります",
|
||||
"stdioNotAvailable": "STDIOモードはデスクトップ版のみ利用可能",
|
||||
"stdioShortDesc": "標準入出力ベースの通信プロトコル",
|
||||
"title": "MCPプラグインタイプ"
|
||||
},
|
||||
"url": {
|
||||
"desc": "あなたのMCPサーバーのストリーミングHTTPアドレスを入力してください。SSEモードはサポートされていません。",
|
||||
"invalid": "有効な URL アドレスを入力してください",
|
||||
"label": "HTTP エンドポイント URL",
|
||||
"required": "MCP サービスの URL を入力してください"
|
||||
"desc": "MCPサーバーのStreamable HTTPアドレスを入力してください。SSEモードはサポートしていません",
|
||||
"invalid": "有効なURLを入力してください",
|
||||
"label": "Streamable HTTPエンドポイントURL",
|
||||
"required": "MCPサービスURLを入力してください"
|
||||
}
|
||||
},
|
||||
"meta": {
|
||||
@@ -153,13 +153,13 @@
|
||||
"label": "作者"
|
||||
},
|
||||
"avatar": {
|
||||
"desc": "プラグインのアイコン、絵文字やURLを使用できます",
|
||||
"desc": "プラグインのアイコン。絵文字またはURLを使用可能",
|
||||
"label": "アイコン"
|
||||
},
|
||||
"description": {
|
||||
"desc": "プラグインの説明",
|
||||
"desc": "プラグイン説明",
|
||||
"label": "説明",
|
||||
"placeholder": "検索エンジンで情報を取得します"
|
||||
"placeholder": "検索エンジンで情報を取得"
|
||||
},
|
||||
"formFieldRequired": "このフィールドは必須です",
|
||||
"homepage": {
|
||||
@@ -167,27 +167,27 @@
|
||||
"label": "ホームページ"
|
||||
},
|
||||
"identifier": {
|
||||
"desc": "プラグインの一意の識別子、マニフェストから自動的に識別されます",
|
||||
"desc": "プラグインの一意識別子。manifestから自動認識されます",
|
||||
"errorDuplicate": "識別子が既存のプラグインと重複しています。識別子を変更してください",
|
||||
"label": "識別子",
|
||||
"pattenErrorMessage": "英数字、-、_ のみ入力できます"
|
||||
"pattenErrorMessage": "英数字、ハイフン、アンダースコアのみ入力可能です"
|
||||
},
|
||||
"lobe": "{{appName}} プラグイン",
|
||||
"manifest": {
|
||||
"desc": "{{appName}}はこのリンクを通じてプラグインをインストールします",
|
||||
"desc": "{{appName}}はこのリンクからプラグインをインストールします",
|
||||
"label": "プラグイン記述ファイル (Manifest) URL",
|
||||
"preview": "マニフェストのプレビュー",
|
||||
"preview": "Manifestをプレビュー",
|
||||
"refresh": "更新"
|
||||
},
|
||||
"openai": "OpenAI プラグイン",
|
||||
"openai": "OpenAIプラグイン",
|
||||
"title": {
|
||||
"desc": "プラグインのタイトル",
|
||||
"desc": "プラグインタイトル",
|
||||
"label": "タイトル",
|
||||
"placeholder": "検索エンジン"
|
||||
}
|
||||
},
|
||||
"metaConfig": "プラグインのメタ情報の設定",
|
||||
"modalDesc": "カスタムプラグインを追加すると、プラグインの開発検証に使用したり、セッション中に直接使用したりできます。プラグインの開発については、<1>開発ドキュメント↗</>を参照してください",
|
||||
"metaConfig": "プラグインメタ情報設定",
|
||||
"modalDesc": "カスタムプラグインを追加すると、プラグイン開発の検証や会話内での直接利用が可能です。プラグイン開発は<1>開発ドキュメント↗</>を参照してください。",
|
||||
"openai": {
|
||||
"importUrl": "URLリンクからインポート",
|
||||
"schema": "スキーマ"
|
||||
@@ -195,48 +195,48 @@
|
||||
"preview": {
|
||||
"api": {
|
||||
"noParams": "このツールにはパラメータがありません",
|
||||
"noResults": "検索条件に一致する API が見つかりませんでした",
|
||||
"noResults": "検索条件に合うAPIが見つかりません",
|
||||
"params": "パラメータ:",
|
||||
"searchPlaceholder": "ツールを検索..."
|
||||
},
|
||||
"card": "プラグインのプレビュー表示",
|
||||
"desc": "プラグインの説明のプレビュー",
|
||||
"card": "プラグイン表示プレビュー",
|
||||
"desc": "プラグイン説明プレビュー",
|
||||
"empty": {
|
||||
"desc": "設定が完了すると、ここでプラグインがサポートするツールの機能をプレビューできます",
|
||||
"title": "プラグインを設定した後にプレビューを開始"
|
||||
"desc": "設定完了後、ここでプラグインがサポートするツール機能をプレビューできます",
|
||||
"title": "プラグイン設定後にプレビュー開始"
|
||||
},
|
||||
"title": "プラグイン名のプレビュー"
|
||||
"title": "プラグイン名プレビュー"
|
||||
},
|
||||
"save": "プラグインを保存",
|
||||
"saveSuccess": "プラグインの設定が正常に保存されました",
|
||||
"save": "プラグインをインストール",
|
||||
"saveSuccess": "プラグイン設定が正常に保存されました",
|
||||
"tabs": {
|
||||
"manifest": "機能のマニフェスト",
|
||||
"meta": "プラグインのメタ情報"
|
||||
"manifest": "機能記述リスト (Manifest)",
|
||||
"meta": "プラグインメタ情報"
|
||||
},
|
||||
"title": {
|
||||
"create": "カスタムプラグインを追加",
|
||||
"edit": "カスタムプラグインを編集"
|
||||
},
|
||||
"type": {
|
||||
"lobe": "LobeChatプラグイン",
|
||||
"lobe": "{{appName}} プラグイン",
|
||||
"openai": "OpenAIプラグイン"
|
||||
},
|
||||
"update": "更新",
|
||||
"updateSuccess": "プラグインの設定が正常に更新されました"
|
||||
"updateSuccess": "プラグイン設定が正常に更新されました"
|
||||
},
|
||||
"error": {
|
||||
"fetchError": "このmanifestリンクのリクエストに失敗しました。リンクが有効であることを確認し、リンクがクロスドメインアクセスを許可しているかを確認してください",
|
||||
"fetchError": "manifestリンクの取得に失敗しました。リンクの有効性とクロスオリジンアクセス許可を確認してください",
|
||||
"installError": "プラグイン {{name}} のインストールに失敗しました",
|
||||
"manifestInvalid": "manifestが仕様に準拠していません。検証結果: \n\n {{error}}",
|
||||
"noManifest": "マニフェストが存在しません",
|
||||
"openAPIInvalid": "OpenAPIの解析に失敗しました。エラー: \n\n {{error}}",
|
||||
"reinstallError": "プラグイン{{name}}の再インストールに失敗しました",
|
||||
"testConnectionFailed": "マニフェストの取得に失敗しました: {{error}}",
|
||||
"urlError": "このリンクはJSON形式のコンテンツを返していません。有効なリンクであることを確認してください"
|
||||
"manifestInvalid": "manifestが規格に準拠していません。検証結果:\n\n {{error}}",
|
||||
"noManifest": "記述ファイルが存在しません",
|
||||
"openAPIInvalid": "OpenAPIの解析に失敗しました。エラー:\n\n {{error}}",
|
||||
"reinstallError": "プラグイン {{name}} の更新に失敗しました",
|
||||
"testConnectionFailed": "Manifestの取得に失敗しました: {{error}}",
|
||||
"urlError": "リンクがJSON形式の内容を返しません。リンクが有効であることを確認してください"
|
||||
},
|
||||
"inspector": {
|
||||
"args": "パラメーターリストを表示",
|
||||
"pluginRender": "プラグインインターフェースを表示"
|
||||
"args": "パラメータリストを表示",
|
||||
"pluginRender": "プラグイン画面を表示"
|
||||
},
|
||||
"list": {
|
||||
"item": {
|
||||
@@ -246,46 +246,46 @@
|
||||
}
|
||||
},
|
||||
"loading": {
|
||||
"content": "プラグインを呼び出しています...",
|
||||
"plugin": "プラグインの実行中..."
|
||||
"content": "プラグインを呼び出し中...",
|
||||
"plugin": "プラグイン実行中..."
|
||||
},
|
||||
"localSystem": {
|
||||
"apiName": {
|
||||
"listLocalFiles": "ファイルリストを表示",
|
||||
"listLocalFiles": "ファイル一覧を表示",
|
||||
"moveLocalFiles": "ファイルを移動",
|
||||
"readLocalFile": "ファイル内容を読み取る",
|
||||
"renameLocalFile": "名前を変更",
|
||||
"readLocalFile": "ファイル内容を読み込み",
|
||||
"renameLocalFile": "ファイル名を変更",
|
||||
"searchLocalFiles": "ファイルを検索",
|
||||
"writeLocalFile": "ファイルに書き込む"
|
||||
"writeLocalFile": "ファイルに書き込み"
|
||||
},
|
||||
"title": "ローカルファイル"
|
||||
},
|
||||
"mcpInstall": {
|
||||
"CHECKING_INSTALLATION": "インストール環境を確認しています...",
|
||||
"CHECKING_INSTALLATION": "インストール環境を確認中...",
|
||||
"COMPLETED": "インストール完了",
|
||||
"CONFIGURATION_REQUIRED": "関連設定を完了してからインストールを続行してください",
|
||||
"ERROR": "インストールエラー",
|
||||
"FETCHING_MANIFEST": "プラグインマニフェストを取得しています...",
|
||||
"GETTING_SERVER_MANIFEST": "MCPサーバーを初期化しています...",
|
||||
"INSTALLING_PLUGIN": "プラグインをインストールしています...",
|
||||
"configurationDescription": "このMCPプラグインは正常に動作するために設定パラメータが必要です。必要な設定情報を入力してください。",
|
||||
"configurationRequired": "プラグインパラメータの設定が必要です",
|
||||
"FETCHING_MANIFEST": "プラグイン記述ファイルを取得中...",
|
||||
"GETTING_SERVER_MANIFEST": "MCPサーバーを初期化中...",
|
||||
"INSTALLING_PLUGIN": "プラグインをインストール中...",
|
||||
"configurationDescription": "このMCPプラグインは正常に動作するために設定パラメータが必要です。必要な設定情報を入力してください",
|
||||
"configurationRequired": "プラグインパラメータの設定",
|
||||
"continueInstall": "インストールを続行",
|
||||
"dependenciesDescription": "このプラグインは正常に動作するために以下のシステム依存関係のインストールが必要です。指示に従って不足している依存関係をインストールし、再確認をクリックしてインストールを続行してください。",
|
||||
"dependenciesDescription": "このプラグインは正常に動作するために以下のシステム依存関係のインストールが必要です。指示に従って不足している依存関係をインストールし、再チェックをクリックしてインストールを続行してください。",
|
||||
"dependenciesRequired": "プラグインのシステム依存関係をインストールしてください",
|
||||
"dependencyStatus": {
|
||||
"installed": "インストール済み",
|
||||
"notInstalled": "未インストール",
|
||||
"requiredVersion": "必要なバージョン: {{version}}"
|
||||
"requiredVersion": "必要バージョン: {{version}}"
|
||||
},
|
||||
"errorDetails": {
|
||||
"args": "引数",
|
||||
"args": "パラメータ",
|
||||
"command": "コマンド",
|
||||
"connectionParams": "接続パラメータ",
|
||||
"env": "環境変数",
|
||||
"errorOutput": "エラーログ",
|
||||
"exitCode": "終了コード",
|
||||
"hideDetails": "詳細を隠す",
|
||||
"hideDetails": "詳細を閉じる",
|
||||
"originalError": "元のエラー",
|
||||
"showDetails": "詳細を表示"
|
||||
},
|
||||
@@ -302,44 +302,104 @@
|
||||
"manual": "手動インストール:",
|
||||
"recommended": "推奨インストール方法:"
|
||||
},
|
||||
"recheckDependencies": "再確認",
|
||||
"recheckDependencies": "依存関係を再チェック",
|
||||
"skipDependencies": "チェックをスキップ"
|
||||
},
|
||||
"pluginList": "プラグインリスト",
|
||||
"pluginList": "プラグイン一覧",
|
||||
"protocolInstall": {
|
||||
"actions": {
|
||||
"install": "インストール",
|
||||
"installAnyway": "それでもインストール",
|
||||
"installed": "インストール済み"
|
||||
},
|
||||
"config": {
|
||||
"args": "パラメータ",
|
||||
"command": "コマンド",
|
||||
"env": "環境変数",
|
||||
"headers": "リクエストヘッダー",
|
||||
"title": "設定情報",
|
||||
"type": {
|
||||
"http": "タイプ: HTTP",
|
||||
"label": "タイプ",
|
||||
"stdio": "タイプ: Stdio"
|
||||
},
|
||||
"url": "サービスアドレス"
|
||||
},
|
||||
"custom": {
|
||||
"badge": "カスタムプラグイン",
|
||||
"security": {
|
||||
"description": "このプラグインは公式の検証を受けていません。インストールにはセキュリティリスクがある可能性があります。プラグインの出所を信頼していることを確認してください。",
|
||||
"title": "⚠️ セキュリティリスク警告"
|
||||
},
|
||||
"title": "カスタムプラグインをインストール"
|
||||
},
|
||||
"marketplace": {
|
||||
"title": "サードパーティプラグインをインストール",
|
||||
"trustedBy": "{{name}} 提供",
|
||||
"unverified": {
|
||||
"title": "未検証のサードパーティプラグイン",
|
||||
"warning": "このプラグインは未検証のサードパーティマーケットからのものです。インストール前に出所を信頼していることを確認してください。"
|
||||
},
|
||||
"verified": "検証済み"
|
||||
},
|
||||
"messages": {
|
||||
"connectionTestFailed": "接続テストに失敗しました",
|
||||
"installError": "プラグインのインストールに失敗しました。再試行してください",
|
||||
"installSuccess": "プラグイン {{name}} が正常にインストールされました!",
|
||||
"manifestError": "プラグイン詳細の取得に失敗しました。ネットワーク接続を確認して再試行してください",
|
||||
"manifestNotFound": "プラグイン記述ファイルを取得できませんでした"
|
||||
},
|
||||
"meta": {
|
||||
"author": "作者",
|
||||
"homepage": "ホームページ",
|
||||
"identifier": "識別子",
|
||||
"source": "出所",
|
||||
"version": "バージョン"
|
||||
},
|
||||
"official": {
|
||||
"badge": "LobeHub公式プラグイン",
|
||||
"description": "このプラグインはLobeHub公式によって開発・管理されており、厳格なセキュリティ審査を経ていますので安心してご利用いただけます。",
|
||||
"loadingMessage": "プラグイン詳細を取得中...",
|
||||
"loadingTitle": "読み込み中",
|
||||
"title": "公式プラグインをインストール"
|
||||
},
|
||||
"title": "MCPプラグインをインストール",
|
||||
"warning": "⚠️ このプラグインの出所を信頼していることを確認してください。悪意のあるプラグインはシステムの安全を脅かす可能性があります。"
|
||||
},
|
||||
"search": {
|
||||
"apiName": {
|
||||
"crawlMultiPages": "複数のページの内容を読み取る",
|
||||
"crawlSinglePage": "ページ内容を読み取る",
|
||||
"crawlMultiPages": "複数ページの内容を読み込み",
|
||||
"crawlSinglePage": "ページ内容を読み込み",
|
||||
"search": "ページを検索"
|
||||
},
|
||||
"config": {
|
||||
"addKey": "キーを追加",
|
||||
"close": "削除",
|
||||
"confirm": "設定が完了し、再試行しました"
|
||||
"confirm": "設定完了し再試行"
|
||||
},
|
||||
"crawPages": {
|
||||
"crawling": "リンクを識別中",
|
||||
"crawling": "リンク認識中",
|
||||
"detail": {
|
||||
"preview": "プレビュー",
|
||||
"raw": "原文",
|
||||
"tooLong": "テキストが長すぎます。会話のコンテキストには最初の {{characters}} 文字のみが保持され、それを超える部分は会話のコンテキストには含まれません"
|
||||
"raw": "生テキスト",
|
||||
"tooLong": "テキスト内容が長すぎます。会話コンテキストには先頭 {{characters}} 文字のみ保持し、それ以降は会話コンテキストに含まれません。"
|
||||
},
|
||||
"meta": {
|
||||
"crawler": "クローリングモード",
|
||||
"crawler": "クロールモード",
|
||||
"words": "文字数"
|
||||
}
|
||||
},
|
||||
"searchxng": {
|
||||
"baseURL": "入力してください",
|
||||
"description": "SearchXNG の URL を入力すると、ネット検索を開始できます",
|
||||
"description": "SearchXNGのURLを入力するとネット検索を開始できます",
|
||||
"keyPlaceholder": "キーを入力してください",
|
||||
"title": "SearchXNG 検索エンジンの設定",
|
||||
"unconfiguredDesc": "ネット検索を開始するには、管理者に連絡して SearchXNG 検索エンジンの設定を完了してください",
|
||||
"unconfiguredTitle": "SearchXNG 検索エンジンはまだ設定されていません"
|
||||
"title": "SearchXNG検索エンジンの設定",
|
||||
"unconfiguredDesc": "管理者に連絡してSearchXNG検索エンジンの設定を完了し、ネット検索を開始してください",
|
||||
"unconfiguredTitle": "SearchXNG検索エンジン未設定"
|
||||
},
|
||||
"title": "ネット検索"
|
||||
},
|
||||
"setting": "プラグインの設定",
|
||||
"setting": "プラグイン設定",
|
||||
"settings": {
|
||||
"capabilities": {
|
||||
"prompts": "プロンプト",
|
||||
@@ -351,18 +411,18 @@
|
||||
"title": "プラグイン設定"
|
||||
},
|
||||
"connection": {
|
||||
"args": "起動引数",
|
||||
"args": "起動パラメータ",
|
||||
"command": "起動コマンド",
|
||||
"title": "接続情報",
|
||||
"type": "接続タイプ",
|
||||
"url": "サービスアドレス"
|
||||
},
|
||||
"edit": "編集",
|
||||
"envConfigDescription": "これらの設定は MCP サーバー起動時に環境変数としてプロセスに渡されます",
|
||||
"httpTypeNotice": "HTTP タイプの MCP プラグインには現在設定が必要な環境変数はありません",
|
||||
"envConfigDescription": "これらの設定はMCPサーバー起動時に環境変数としてプロセスに渡されます",
|
||||
"httpTypeNotice": "HTTPタイプのMCPプラグインは現在設定すべき環境変数はありません",
|
||||
"indexUrl": {
|
||||
"title": "マーケットインデックス",
|
||||
"tooltip": "オンライン編集は現在サポートされていません。デプロイ時の環境変数を使用して設定してください"
|
||||
"tooltip": "オンライン編集は未対応です。デプロイ時の環境変数で設定してください"
|
||||
},
|
||||
"messages": {
|
||||
"connectionUpdateFailed": "接続情報の更新に失敗しました",
|
||||
@@ -370,34 +430,34 @@
|
||||
"envUpdateFailed": "環境変数の保存に失敗しました",
|
||||
"envUpdateSuccess": "環境変数が正常に保存されました"
|
||||
},
|
||||
"modalDesc": "プラグインマーケットのアドレスを設定すると、カスタムのプラグインマーケットを使用できます",
|
||||
"modalDesc": "プラグインマーケットのアドレスを設定すると、カスタムプラグインマーケットを利用できます",
|
||||
"rules": {
|
||||
"argsRequired": "起動パラメータを入力してください",
|
||||
"commandRequired": "起動コマンドを入力してください",
|
||||
"urlRequired": "サービスアドレスを入力してください"
|
||||
},
|
||||
"saveSettings": "設定を保存",
|
||||
"title": "プラグインマーケットの設定"
|
||||
"title": "プラグインマーケット設定"
|
||||
},
|
||||
"showInPortal": "詳細はワークスペースで表示してください",
|
||||
"showInPortal": "ワークスペースで詳細を確認してください",
|
||||
"store": {
|
||||
"actions": {
|
||||
"cancel": "インストールをキャンセル",
|
||||
"confirmUninstall": "このプラグインをアンインストールします。アンインストール後、プラグインの設定がクリアされます。操作を確認してください。",
|
||||
"confirmUninstall": "このプラグインをアンインストールすると設定も削除されます。操作を確認してください",
|
||||
"detail": "詳細",
|
||||
"install": "インストール",
|
||||
"manifest": "インストールファイルを編集",
|
||||
"settings": "設定",
|
||||
"uninstall": "アンインストール"
|
||||
},
|
||||
"communityPlugin": "コミュニティプラグイン",
|
||||
"customPlugin": "カスタムプラグイン",
|
||||
"empty": "インストールされたプラグインはありません",
|
||||
"emptySelectHint": "プラグインを選択して詳細情報をプレビューしてください",
|
||||
"installAllPlugins": "すべてのプラグインをインストール",
|
||||
"networkError": "プラグインストアの取得に失敗しました。ネットワーク接続を確認してから再試行してください",
|
||||
"placeholder": "プラグイン名、説明、またはキーワードで検索...",
|
||||
"releasedAt": "{{createdAt}} にリリース",
|
||||
"communityPlugin": "サードパーティコミュニティ",
|
||||
"customPlugin": "カスタム",
|
||||
"empty": "インストール済みプラグインはありません",
|
||||
"emptySelectHint": "プラグインを選択して詳細をプレビュー",
|
||||
"installAllPlugins": "すべてインストール",
|
||||
"networkError": "プラグインストアの取得に失敗しました。ネットワーク接続を確認して再試行してください",
|
||||
"placeholder": "プラグイン名、説明、キーワードで検索...",
|
||||
"releasedAt": "{{createdAt}} に公開",
|
||||
"tabs": {
|
||||
"installed": "インストール済み",
|
||||
"mcp": "MCPプラグイン",
|
||||
@@ -405,6 +465,6 @@
|
||||
},
|
||||
"title": "プラグインストア"
|
||||
},
|
||||
"unknownError": "未知のエラー",
|
||||
"unknownPlugin": "未知のプラグイン"
|
||||
"unknownError": "不明なエラー",
|
||||
"unknownPlugin": "不明なプラグイン"
|
||||
}
|
||||
|
||||
@@ -1,45 +1,45 @@
|
||||
{
|
||||
"confirm": "확인",
|
||||
"debug": {
|
||||
"arguments": "함수 호출 인수",
|
||||
"arguments": "호출 매개변수",
|
||||
"function_call": "함수 호출",
|
||||
"off": "디버그 끄기",
|
||||
"on": "플러그인 호출 정보 보기",
|
||||
"payload": "페이로드",
|
||||
"payload": "플러그인 페이로드",
|
||||
"pluginState": "플러그인 상태",
|
||||
"response": "응답",
|
||||
"title": "플러그인 세부정보",
|
||||
"tool_call": "도구 호출"
|
||||
"response": "응답 결과",
|
||||
"title": "플러그인 상세 정보",
|
||||
"tool_call": "도구 호출 요청"
|
||||
},
|
||||
"detailModal": {
|
||||
"customPlugin": {
|
||||
"description": "자세한 내용은 편집 페이지에서 확인하세요",
|
||||
"editBtn": "지금 편집",
|
||||
"title": "이것은 사용자 정의 플러그인입니다"
|
||||
"title": "사용자 정의 플러그인입니다"
|
||||
},
|
||||
"emptyState": {
|
||||
"description": "이 플러그인을 설치한 후 플러그인 기능과 설정 옵션을 확인하세요",
|
||||
"title": "설치 후 플러그인 세부 정보 보기"
|
||||
"description": "플러그인 기능과 설정 옵션을 보려면 먼저 이 플러그인을 설치하세요",
|
||||
"title": "설치 후 플러그인 상세 정보 보기"
|
||||
},
|
||||
"info": {
|
||||
"description": "API 설명",
|
||||
"name": "API 이름"
|
||||
},
|
||||
"tabs": {
|
||||
"info": "플러그인 능력",
|
||||
"info": "플러그인 기능",
|
||||
"manifest": "설치 파일",
|
||||
"settings": "설정"
|
||||
},
|
||||
"title": "플러그인 상세정보"
|
||||
"title": "플러그인 상세 정보"
|
||||
},
|
||||
"dev": {
|
||||
"confirmDeleteDevPlugin": "로컬 플러그인을 삭제하시겠습니까? 삭제 후에는 복구할 수 없습니다.",
|
||||
"confirmDeleteDevPlugin": "이 로컬 플러그인을 삭제하면 복구할 수 없습니다. 삭제하시겠습니까?",
|
||||
"customParams": {
|
||||
"useProxy": {
|
||||
"label": "프록시 사용 (크로스 도메인 오류가 발생할 경우 이 옵션을 활성화한 후 다시 설치해 보세요)"
|
||||
"label": "프록시를 통해 설치 (교차 출처 오류 발생 시 이 옵션을 켜고 다시 설치해 보세요)"
|
||||
}
|
||||
},
|
||||
"deleteSuccess": "플러그인이 성공적으로 삭제되었습니다.",
|
||||
"deleteSuccess": "플러그인 삭제 성공",
|
||||
"manifest": {
|
||||
"identifier": {
|
||||
"desc": "플러그인의 고유 식별자",
|
||||
@@ -61,19 +61,19 @@
|
||||
"title": "고급 설정"
|
||||
},
|
||||
"args": {
|
||||
"desc": "실행 명령에 전달할 매개변수 목록으로, 일반적으로 여기에서 MCP 서버 이름 또는 시작 스크립트 경로를 입력합니다.",
|
||||
"desc": "명령 실행에 전달되는 매개변수 목록, 일반적으로 MCP 서버 이름 또는 시작 스크립트 경로를 입력",
|
||||
"label": "명령 매개변수",
|
||||
"placeholder": "예: mcp-hello-world",
|
||||
"required": "시작 매개변수를 입력하세요"
|
||||
},
|
||||
"auth": {
|
||||
"bear": "API 키",
|
||||
"desc": "MCP 서버의 인증 방식을 선택하세요",
|
||||
"desc": "MCP 서버 인증 방식 선택",
|
||||
"label": "인증 유형",
|
||||
"none": "인증 불필요",
|
||||
"placeholder": "인증 유형을 선택하세요",
|
||||
"token": {
|
||||
"desc": "API 키 또는 Bearer 토큰을 입력하세요",
|
||||
"desc": "API 키 또는 Bearer 토큰 입력",
|
||||
"label": "API 키",
|
||||
"placeholder": "sk-xxxxx",
|
||||
"required": "인증 토큰을 입력하세요"
|
||||
@@ -86,34 +86,34 @@
|
||||
"desc": "MCP STDIO 서버를 시작하는 실행 파일 또는 스크립트",
|
||||
"label": "명령",
|
||||
"placeholder": "예: npx / uv / docker 등",
|
||||
"required": "시작 명령어를 입력하세요"
|
||||
"required": "시작 명령을 입력하세요"
|
||||
},
|
||||
"desc": {
|
||||
"desc": "플러그인에 대한 설명 추가",
|
||||
"desc": "플러그인 설명 추가",
|
||||
"label": "플러그인 설명",
|
||||
"placeholder": "이 플러그인의 사용 설명 및 상황 등의 정보를 추가하세요"
|
||||
"placeholder": "플러그인 사용법과 시나리오 등 정보 보충"
|
||||
},
|
||||
"endpoint": {
|
||||
"desc": "당신의 MCP 스트리밍 HTTP 서버 주소를 입력하세요",
|
||||
"desc": "MCP Streamable HTTP 서버 주소 입력",
|
||||
"label": "MCP 엔드포인트 URL"
|
||||
},
|
||||
"env": {
|
||||
"add": "행 추가",
|
||||
"desc": "MCP 서버에 필요한 환경 변수를 입력하세요.",
|
||||
"duplicateKeyError": "필드 키는 고유해야 합니다.",
|
||||
"formValidationFailed": "양식 검증 실패, 매개변수 형식을 확인하세요.",
|
||||
"keyRequired": "필드 키는 비워둘 수 없습니다.",
|
||||
"desc": "MCP 서버에 필요한 환경 변수 입력",
|
||||
"duplicateKeyError": "키는 고유해야 합니다",
|
||||
"formValidationFailed": "폼 검증 실패, 매개변수 형식을 확인하세요",
|
||||
"keyRequired": "키는 비워둘 수 없습니다",
|
||||
"label": "MCP 서버 환경 변수",
|
||||
"stringifyError": "매개변수를 직렬화할 수 없습니다. 매개변수 형식을 확인하세요."
|
||||
"stringifyError": "매개변수를 직렬화할 수 없습니다, 형식을 확인하세요"
|
||||
},
|
||||
"headers": {
|
||||
"add": "행 추가",
|
||||
"desc": "요청 헤더를 입력하세요",
|
||||
"desc": "요청 헤더 입력",
|
||||
"label": "HTTP 헤더"
|
||||
},
|
||||
"identifier": {
|
||||
"desc": "당신의 MCP 플러그인에 이름을 지정하세요, 영어 문자 사용 필요",
|
||||
"invalid": "영어 문자, 숫자, - 및 _ 기호만 입력할 수 있습니다",
|
||||
"desc": "MCP 플러그인 이름 지정, 영문자 사용 필요",
|
||||
"invalid": "식별자는 문자, 숫자, 하이픈, 밑줄만 포함할 수 있습니다",
|
||||
"label": "MCP 플러그인 이름",
|
||||
"placeholder": "예: my-mcp-plugin",
|
||||
"required": "MCP 서비스 식별자를 입력하세요"
|
||||
@@ -121,63 +121,63 @@
|
||||
"previewManifest": "플러그인 설명 파일 미리보기",
|
||||
"quickImport": "JSON 구성 빠른 가져오기",
|
||||
"quickImportError": {
|
||||
"empty": "입력 내용이 비어 있을 수 없습니다",
|
||||
"invalidJson": "유효하지 않은 JSON 형식입니다",
|
||||
"empty": "입력 내용이 비어 있습니다",
|
||||
"invalidJson": "유효하지 않은 JSON 형식",
|
||||
"invalidStructure": "JSON 형식이 유효하지 않습니다"
|
||||
},
|
||||
"stdioNotSupported": "현재 환경에서는 stdio 유형의 MCP 플러그인이 지원되지 않습니다",
|
||||
"stdioNotSupported": "현재 환경은 stdio 유형 MCP 플러그인을 지원하지 않습니다",
|
||||
"testConnection": "연결 테스트",
|
||||
"testConnectionTip": "연결 테스트가 성공해야 MCP 플러그인을 정상적으로 사용할 수 있습니다",
|
||||
"testConnectionTip": "연결 테스트 성공 후 MCP 플러그인을 정상 사용할 수 있습니다",
|
||||
"type": {
|
||||
"desc": "MCP 플러그인의 통신 방식을 선택하세요, 웹 버전은 스트리밍 HTTP만 지원합니다",
|
||||
"httpFeature1": "웹 버전과 데스크톱 버전 호환",
|
||||
"httpFeature2": "원격 MCP 서버에 연결, 추가 설치 및 구성 필요 없음",
|
||||
"desc": "MCP 플러그인 통신 방식 선택, 웹 버전은 Streamable HTTP만 지원",
|
||||
"httpFeature1": "웹 및 데스크톱 호환",
|
||||
"httpFeature2": "원격 MCP 서버 연결, 추가 설치 불필요",
|
||||
"httpShortDesc": "스트리밍 HTTP 기반 통신 프로토콜",
|
||||
"label": "MCP 플러그인 유형",
|
||||
"stdioFeature1": "더 낮은 통신 지연, 로컬 실행에 적합",
|
||||
"stdioFeature2": "로컬에 MCP 서버를 설치하고 실행해야 함",
|
||||
"stdioFeature2": "로컬에 MCP 서버 설치 및 실행 필요",
|
||||
"stdioNotAvailable": "STDIO 모드는 데스크톱 버전에서만 사용 가능",
|
||||
"stdioShortDesc": "표준 입력 및 출력을 기반으로 한 통신 프로토콜",
|
||||
"stdioShortDesc": "표준 입출력 기반 통신 프로토콜",
|
||||
"title": "MCP 플러그인 유형"
|
||||
},
|
||||
"url": {
|
||||
"desc": "MCP 서버의 스트리밍 HTTP 주소를 입력하세요. SSE 모드는 지원하지 않습니다.",
|
||||
"desc": "MCP 서버 Streamable HTTP 주소 입력, SSE 모드 미지원",
|
||||
"invalid": "유효한 URL 주소를 입력하세요",
|
||||
"label": "HTTP 엔드포인트 URL",
|
||||
"label": "Streamable HTTP 엔드포인트 URL",
|
||||
"required": "MCP 서비스 URL을 입력하세요"
|
||||
}
|
||||
},
|
||||
"meta": {
|
||||
"author": {
|
||||
"desc": "플러그인 작성자",
|
||||
"label": "작성자"
|
||||
"desc": "플러그인 제작자",
|
||||
"label": "제작자"
|
||||
},
|
||||
"avatar": {
|
||||
"desc": "플러그인 아이콘으로는 Emoji 또는 URL을 사용할 수 있습니다.",
|
||||
"desc": "플러그인 아이콘, 이모지 또는 URL 사용 가능",
|
||||
"label": "아이콘"
|
||||
},
|
||||
"description": {
|
||||
"desc": "플러그인 설명",
|
||||
"label": "설명",
|
||||
"placeholder": "검색 엔진에서 정보 가져오기"
|
||||
"placeholder": "검색 엔진에서 정보 조회"
|
||||
},
|
||||
"formFieldRequired": "이 필드는 필수 입력 사항입니다.",
|
||||
"formFieldRequired": "이 필드는 필수입니다",
|
||||
"homepage": {
|
||||
"desc": "플러그인 홈페이지",
|
||||
"label": "홈페이지"
|
||||
},
|
||||
"identifier": {
|
||||
"desc": "플러그인의 고유 식별자는 manifest에서 자동으로 인식됩니다.",
|
||||
"errorDuplicate": "식별자가 이미 있는 플러그인과 중복되었습니다. 식별자를 수정해주세요.",
|
||||
"desc": "플러그인 고유 식별자, manifest에서 자동 인식",
|
||||
"errorDuplicate": "식별자가 기존 플러그인과 중복됩니다, 수정하세요",
|
||||
"label": "식별자",
|
||||
"pattenErrorMessage": "영문자, 숫자, - 및 _만 입력할 수 있습니다."
|
||||
"pattenErrorMessage": "영문자, 숫자, - 및 _ 만 입력할 수 있습니다"
|
||||
},
|
||||
"lobe": "{{appName}} 플러그인",
|
||||
"manifest": {
|
||||
"desc": "{{appName}}는 이 링크를 통해 플러그인을 설치합니다.",
|
||||
"label": "Manifest 파일 URL",
|
||||
"desc": "{{appName}}가 이 링크를 통해 플러그인을 설치합니다",
|
||||
"label": "플러그인 설명 파일 (Manifest) URL",
|
||||
"preview": "Manifest 미리보기",
|
||||
"refresh": "새로 고침"
|
||||
"refresh": "새로고침"
|
||||
},
|
||||
"openai": "OpenAI 플러그인",
|
||||
"title": {
|
||||
@@ -187,28 +187,28 @@
|
||||
}
|
||||
},
|
||||
"metaConfig": "플러그인 메타 정보 구성",
|
||||
"modalDesc": "사용자 정의 플러그인을 추가하면 플러그인 개발을 검증하거나 세션에서 직접 사용할 수 있습니다. 플러그인 개발은 <1>개발 문서↗</>를 참조하세요.",
|
||||
"modalDesc": "사용자 정의 플러그인 추가 후 플러그인 개발 검증 및 대화에서 직접 사용 가능. 플러그인 개발은 <1>개발 문서↗</> 참고",
|
||||
"openai": {
|
||||
"importUrl": "URL 링크에서 가져오기",
|
||||
"schema": "스키마"
|
||||
},
|
||||
"preview": {
|
||||
"api": {
|
||||
"noParams": "이 도구에는 매개변수가 없습니다",
|
||||
"noParams": "이 도구는 매개변수가 없습니다",
|
||||
"noResults": "검색 조건에 맞는 API를 찾을 수 없습니다",
|
||||
"params": "매개변수:",
|
||||
"searchPlaceholder": "도구 검색..."
|
||||
},
|
||||
"card": "플러그인 미리보기",
|
||||
"card": "플러그인 미리보기 표시",
|
||||
"desc": "플러그인 설명 미리보기",
|
||||
"empty": {
|
||||
"desc": "구성을 완료한 후, 이곳에서 플러그인이 지원하는 도구 기능을 미리 볼 수 있습니다",
|
||||
"desc": "구성 완료 후 이곳에서 플러그인 지원 도구 기능을 미리볼 수 있습니다",
|
||||
"title": "플러그인 구성 후 미리보기 시작"
|
||||
},
|
||||
"title": "플러그인 이름 미리보기"
|
||||
},
|
||||
"save": "플러그인 설치",
|
||||
"saveSuccess": "플러그인 설정이 성공적으로 저장되었습니다.",
|
||||
"saveSuccess": "플러그인 설정 저장 성공",
|
||||
"tabs": {
|
||||
"manifest": "기능 설명 목록 (Manifest)",
|
||||
"meta": "플러그인 메타 정보"
|
||||
@@ -218,21 +218,21 @@
|
||||
"edit": "사용자 정의 플러그인 편집"
|
||||
},
|
||||
"type": {
|
||||
"lobe": "LobeChat 플러그인",
|
||||
"lobe": "{{appName}} 플러그인",
|
||||
"openai": "OpenAI 플러그인"
|
||||
},
|
||||
"update": "업데이트",
|
||||
"updateSuccess": "플러그인 설정이 성공적으로 업데이트되었습니다."
|
||||
"updateSuccess": "플러그인 설정 업데이트 성공"
|
||||
},
|
||||
"error": {
|
||||
"fetchError": "해당 manifest 링크를 요청하는 중 오류가 발생했습니다. 링크의 유효성을 확인하고, 링크가 크로스 도메인 액세스를 허용하는지 확인하세요.",
|
||||
"fetchError": "manifest 링크 요청 실패, 링크 유효성 및 교차 출처 접근 허용 여부를 확인하세요",
|
||||
"installError": "플러그인 {{name}} 설치 실패",
|
||||
"manifestInvalid": "manifest가 규격에 맞지 않습니다. 유효성 검사 결과: \n\n {{error}}",
|
||||
"noManifest": "설명 파일이 없습니다",
|
||||
"openAPIInvalid": "OpenAPI 파싱에 실패했습니다. 오류: \n\n {{error}}",
|
||||
"reinstallError": "플러그인 {{name}} 다시 설치 중 오류가 발생했습니다.",
|
||||
"testConnectionFailed": "매니페스트를 가져오는 데 실패했습니다: {{error}}",
|
||||
"urlError": "이 링크는 JSON 형식의 내용을 반환하지 않습니다. 유효한 링크인지 확인하세요."
|
||||
"manifestInvalid": "manifest 규격 불일치, 검증 결과: \n\n {{error}}",
|
||||
"noManifest": "설명 파일이 존재하지 않습니다",
|
||||
"openAPIInvalid": "OpenAPI 파싱 실패, 오류: \n\n {{error}}",
|
||||
"reinstallError": "플러그인 {{name}} 새로고침 실패",
|
||||
"testConnectionFailed": "Manifest 가져오기 실패: {{error}}",
|
||||
"urlError": "링크가 JSON 형식 내용을 반환하지 않습니다, 유효한 링크인지 확인하세요"
|
||||
},
|
||||
"inspector": {
|
||||
"args": "매개변수 목록 보기",
|
||||
@@ -241,7 +241,7 @@
|
||||
"list": {
|
||||
"item": {
|
||||
"deprecated.title": "삭제됨",
|
||||
"local.config": "구성",
|
||||
"local.config": "설정",
|
||||
"local.title": "사용자 정의"
|
||||
}
|
||||
},
|
||||
@@ -254,7 +254,7 @@
|
||||
"listLocalFiles": "파일 목록 보기",
|
||||
"moveLocalFiles": "파일 이동",
|
||||
"readLocalFile": "파일 내용 읽기",
|
||||
"renameLocalFile": "이름 바꾸기",
|
||||
"renameLocalFile": "파일 이름 변경",
|
||||
"searchLocalFiles": "파일 검색",
|
||||
"writeLocalFile": "파일 쓰기"
|
||||
},
|
||||
@@ -263,31 +263,31 @@
|
||||
"mcpInstall": {
|
||||
"CHECKING_INSTALLATION": "설치 환경 확인 중...",
|
||||
"COMPLETED": "설치 완료",
|
||||
"CONFIGURATION_REQUIRED": "관련 구성을 완료한 후 설치를 계속 진행하세요",
|
||||
"CONFIGURATION_REQUIRED": "관련 설정을 완료한 후 설치를 계속하세요",
|
||||
"ERROR": "설치 오류",
|
||||
"FETCHING_MANIFEST": "플러그인 설명 파일 가져오는 중...",
|
||||
"GETTING_SERVER_MANIFEST": "MCP 서버 초기화 중...",
|
||||
"INSTALLING_PLUGIN": "플러그인 설치 중...",
|
||||
"configurationDescription": "이 MCP 플러그인은 정상 작동을 위해 구성 매개변수가 필요합니다. 필수 구성 정보를 입력하세요.",
|
||||
"configurationRequired": "플러그인 매개변수 구성",
|
||||
"continueInstall": "설치 계속하기",
|
||||
"dependenciesDescription": "이 플러그인은 정상 작동을 위해 다음 시스템 종속 항목 설치가 필요합니다. 안내에 따라 누락된 종속 항목을 설치한 후 다시 확인하여 설치를 계속 진행하세요.",
|
||||
"dependenciesRequired": "플러그인 시스템 종속 항목을 설치하세요",
|
||||
"configurationDescription": "이 MCP 플러그인은 정상 작동을 위해 설정 매개변수가 필요합니다. 필수 정보를 입력하세요",
|
||||
"configurationRequired": "플러그인 매개변수 설정",
|
||||
"continueInstall": "설치 계속",
|
||||
"dependenciesDescription": "이 플러그인은 정상 작동을 위해 다음 시스템 의존성이 필요합니다. 안내에 따라 누락된 의존성을 설치한 후 다시 확인하여 설치를 계속하세요.",
|
||||
"dependenciesRequired": "플러그인 시스템 의존성 설치 필요",
|
||||
"dependencyStatus": {
|
||||
"installed": "설치됨",
|
||||
"notInstalled": "설치되지 않음",
|
||||
"notInstalled": "미설치",
|
||||
"requiredVersion": "필요 버전: {{version}}"
|
||||
},
|
||||
"errorDetails": {
|
||||
"args": "매개변수",
|
||||
"command": "명령어",
|
||||
"command": "명령",
|
||||
"connectionParams": "연결 매개변수",
|
||||
"env": "환경 변수",
|
||||
"errorOutput": "오류 로그",
|
||||
"exitCode": "종료 코드",
|
||||
"hideDetails": "세부 정보 숨기기",
|
||||
"hideDetails": "상세 정보 숨기기",
|
||||
"originalError": "원본 오류",
|
||||
"showDetails": "세부 정보 보기"
|
||||
"showDetails": "상세 정보 보기"
|
||||
},
|
||||
"errorTypes": {
|
||||
"AUTHORIZATION_ERROR": "권한 인증 오류",
|
||||
@@ -297,15 +297,75 @@
|
||||
"UNKNOWN_ERROR": "알 수 없는 오류",
|
||||
"VALIDATION_ERROR": "매개변수 검증 실패"
|
||||
},
|
||||
"installError": "MCP 플러그인 설치 실패, 실패 원인: {{detail}}",
|
||||
"installError": "MCP 플러그인 설치 실패, 원인: {{detail}}",
|
||||
"installMethods": {
|
||||
"manual": "수동 설치:",
|
||||
"recommended": "권장 설치 방법:"
|
||||
},
|
||||
"recheckDependencies": "다시 확인",
|
||||
"recheckDependencies": "의존성 재확인",
|
||||
"skipDependencies": "확인 건너뛰기"
|
||||
},
|
||||
"pluginList": "플러그인 목록",
|
||||
"protocolInstall": {
|
||||
"actions": {
|
||||
"install": "설치",
|
||||
"installAnyway": "그래도 설치",
|
||||
"installed": "설치됨"
|
||||
},
|
||||
"config": {
|
||||
"args": "매개변수",
|
||||
"command": "명령",
|
||||
"env": "환경 변수",
|
||||
"headers": "요청 헤더",
|
||||
"title": "설정 정보",
|
||||
"type": {
|
||||
"http": "유형: HTTP",
|
||||
"label": "유형",
|
||||
"stdio": "유형: Stdio"
|
||||
},
|
||||
"url": "서비스 주소"
|
||||
},
|
||||
"custom": {
|
||||
"badge": "사용자 정의 플러그인",
|
||||
"security": {
|
||||
"description": "이 플러그인은 공식 검증을 거치지 않았으며, 설치 시 보안 위험이 있을 수 있습니다! 플러그인 출처를 신뢰하는지 확인하세요.",
|
||||
"title": "⚠️ 보안 위험 경고"
|
||||
},
|
||||
"title": "사용자 정의 플러그인 설치"
|
||||
},
|
||||
"marketplace": {
|
||||
"title": "서드파티 플러그인 설치",
|
||||
"trustedBy": "{{name}} 제공",
|
||||
"unverified": {
|
||||
"title": "검증되지 않은 서드파티 플러그인",
|
||||
"warning": "이 플러그인은 검증되지 않은 서드파티 마켓에서 제공됩니다. 설치 전에 출처를 신뢰하는지 확인하세요."
|
||||
},
|
||||
"verified": "검증됨"
|
||||
},
|
||||
"messages": {
|
||||
"connectionTestFailed": "연결 테스트 실패",
|
||||
"installError": "플러그인 설치 실패, 다시 시도하세요",
|
||||
"installSuccess": "플러그인 {{name}} 설치 성공!",
|
||||
"manifestError": "플러그인 상세 정보 가져오기 실패, 네트워크 연결을 확인 후 다시 시도하세요",
|
||||
"manifestNotFound": "플러그인 설명 파일을 가져오지 못했습니다"
|
||||
},
|
||||
"meta": {
|
||||
"author": "제작자",
|
||||
"homepage": "홈페이지",
|
||||
"identifier": "식별자",
|
||||
"source": "출처",
|
||||
"version": "버전"
|
||||
},
|
||||
"official": {
|
||||
"badge": "LobeHub 공식 플러그인",
|
||||
"description": "이 플러그인은 LobeHub 공식에서 개발 및 유지 관리하며, 엄격한 보안 검토를 거쳐 안심하고 사용할 수 있습니다.",
|
||||
"loadingMessage": "플러그인 상세 정보 가져오는 중...",
|
||||
"loadingTitle": "로딩 중",
|
||||
"title": "공식 플러그인 설치"
|
||||
},
|
||||
"title": "MCP 플러그인 설치",
|
||||
"warning": "⚠️ 이 플러그인의 출처를 신뢰하는지 확인하세요. 악성 플러그인은 시스템 보안에 위협이 될 수 있습니다."
|
||||
},
|
||||
"search": {
|
||||
"apiName": {
|
||||
"crawlMultiPages": "여러 페이지 내용 읽기",
|
||||
@@ -315,14 +375,14 @@
|
||||
"config": {
|
||||
"addKey": "키 추가",
|
||||
"close": "삭제",
|
||||
"confirm": "구성이 완료되었습니다. 다시 시도하십시오."
|
||||
"confirm": "설정 완료 및 재시도"
|
||||
},
|
||||
"crawPages": {
|
||||
"crawling": "링크 인식 중",
|
||||
"detail": {
|
||||
"preview": "미리보기",
|
||||
"raw": "원본 텍스트",
|
||||
"tooLong": "텍스트 내용이 너무 깁니다. 대화 맥락은 앞의 {{characters}}자만 유지되며, 초과 부분은 대화 맥락에 포함되지 않습니다."
|
||||
"tooLong": "텍스트가 너무 깁니다. 대화 컨텍스트는 처음 {{characters}}자만 유지하며, 초과 부분은 대화에 포함되지 않습니다."
|
||||
},
|
||||
"meta": {
|
||||
"crawler": "크롤링 모드",
|
||||
@@ -330,14 +390,14 @@
|
||||
}
|
||||
},
|
||||
"searchxng": {
|
||||
"baseURL": "입력하십시오",
|
||||
"description": "SearchXNG의 URL을 입력하면 인터넷 검색을 시작할 수 있습니다.",
|
||||
"keyPlaceholder": "키를 입력하십시오",
|
||||
"title": "SearchXNG 검색 엔진 구성",
|
||||
"unconfiguredDesc": "관리자에게 연락하여 SearchXNG 검색 엔진 구성을 완료하십시오. 인터넷 검색을 시작할 수 있습니다.",
|
||||
"unconfiguredTitle": "SearchXNG 검색 엔진이 아직 구성되지 않았습니다."
|
||||
"baseURL": "입력하세요",
|
||||
"description": "SearchXNG 웹사이트 주소를 입력하면 네트워크 검색을 시작할 수 있습니다",
|
||||
"keyPlaceholder": "키를 입력하세요",
|
||||
"title": "SearchXNG 검색 엔진 설정",
|
||||
"unconfiguredDesc": "관리자에게 문의하여 SearchXNG 검색 엔진 설정을 완료한 후 네트워크 검색을 시작하세요",
|
||||
"unconfiguredTitle": "SearchXNG 검색 엔진 미설정"
|
||||
},
|
||||
"title": "인터넷 검색"
|
||||
"title": "네트워크 검색"
|
||||
},
|
||||
"setting": "플러그인 설정",
|
||||
"settings": {
|
||||
@@ -352,17 +412,17 @@
|
||||
},
|
||||
"connection": {
|
||||
"args": "시작 매개변수",
|
||||
"command": "시작 명령어",
|
||||
"command": "시작 명령",
|
||||
"title": "연결 정보",
|
||||
"type": "연결 유형",
|
||||
"url": "서비스 주소"
|
||||
},
|
||||
"edit": "편집",
|
||||
"envConfigDescription": "이 구성은 MCP 서버 시작 시 환경 변수로 프로세스에 전달됩니다",
|
||||
"httpTypeNotice": "HTTP 유형의 MCP 플러그인은 현재 구성할 환경 변수가 없습니다",
|
||||
"envConfigDescription": "이 설정은 MCP 서버 시작 시 환경 변수로 프로세스에 전달됩니다",
|
||||
"httpTypeNotice": "HTTP 유형 MCP 플러그인은 현재 설정할 환경 변수가 없습니다",
|
||||
"indexUrl": {
|
||||
"title": "마켓 인덱스",
|
||||
"tooltip": "온라인 편집은 지원되지 않습니다. 배포 환경 변수를 통해 설정해주세요."
|
||||
"tooltip": "온라인 편집은 지원하지 않으며, 배포 시 환경 변수로 설정하세요"
|
||||
},
|
||||
"messages": {
|
||||
"connectionUpdateFailed": "연결 정보 업데이트 실패",
|
||||
@@ -370,34 +430,34 @@
|
||||
"envUpdateFailed": "환경 변수 저장 실패",
|
||||
"envUpdateSuccess": "환경 변수 저장 성공"
|
||||
},
|
||||
"modalDesc": "플러그인 마켓의 주소를 구성하면 사용자 정의 플러그인 마켓을 사용할 수 있습니다.",
|
||||
"modalDesc": "플러그인 마켓 주소를 설정하면 사용자 정의 플러그인 마켓을 사용할 수 있습니다",
|
||||
"rules": {
|
||||
"argsRequired": "시작 매개변수를 입력하세요",
|
||||
"commandRequired": "시작 명령어를 입력하세요",
|
||||
"commandRequired": "시작 명령을 입력하세요",
|
||||
"urlRequired": "서비스 주소를 입력하세요"
|
||||
},
|
||||
"saveSettings": "설정 저장",
|
||||
"title": "플러그인 마켓 설정"
|
||||
},
|
||||
"showInPortal": "작업 영역에서 자세히 확인하세요",
|
||||
"showInPortal": "작업 공간에서 상세 정보를 확인하세요",
|
||||
"store": {
|
||||
"actions": {
|
||||
"cancel": "설치 취소",
|
||||
"confirmUninstall": "이 플러그인을 제거하려고 합니다. 제거하면 플러그인 구성이 지워지므로 작업을 확인하세요.",
|
||||
"detail": "상세정보",
|
||||
"confirmUninstall": "이 플러그인을 제거하면 설정도 삭제됩니다. 계속하시겠습니까?",
|
||||
"detail": "상세 정보",
|
||||
"install": "설치",
|
||||
"manifest": "설치 파일 편집",
|
||||
"settings": "설정",
|
||||
"uninstall": "제거"
|
||||
},
|
||||
"communityPlugin": "커뮤니티 플러그인",
|
||||
"customPlugin": "사용자 정의 플러그인",
|
||||
"communityPlugin": "서드파티 커뮤니티",
|
||||
"customPlugin": "사용자 정의",
|
||||
"empty": "설치된 플러그인이 없습니다",
|
||||
"emptySelectHint": "플러그인을 선택하여 자세한 정보를 미리보기 하세요",
|
||||
"emptySelectHint": "플러그인을 선택하여 상세 정보를 미리보세요",
|
||||
"installAllPlugins": "모두 설치",
|
||||
"networkError": "플러그인 스토어를 가져오는 데 실패했습니다. 네트워크 연결을 확인한 후 다시 시도하십시오",
|
||||
"placeholder": "플러그인 이름 또는 키워드를 검색하세요...",
|
||||
"releasedAt": "{{createdAt}}에 출시",
|
||||
"networkError": "플러그인 스토어를 불러오지 못했습니다. 네트워크 연결을 확인 후 다시 시도하세요",
|
||||
"placeholder": "플러그인 이름, 설명 또는 키워드 검색...",
|
||||
"releasedAt": "{{createdAt}}에 출시됨",
|
||||
"tabs": {
|
||||
"installed": "설치됨",
|
||||
"mcp": "MCP 플러그인",
|
||||
|
||||
@@ -1,49 +1,49 @@
|
||||
{
|
||||
"confirm": "Bevestigen",
|
||||
"debug": {
|
||||
"arguments": "Argumenten",
|
||||
"function_call": "Functieoproep",
|
||||
"off": "Zet debug uit",
|
||||
"on": "Bekijk plug-in oproepinformatie",
|
||||
"payload": "plug-in payload",
|
||||
"pluginState": "Pluginstatus",
|
||||
"response": "Reactie",
|
||||
"title": "Plugin Details",
|
||||
"tool_call": "Tool-oproepverzoek"
|
||||
"arguments": "Aanroepparameters",
|
||||
"function_call": "Functieaanroep",
|
||||
"off": "Debuggen uitschakelen",
|
||||
"on": "Plugin-aanroepinformatie bekijken",
|
||||
"payload": "Plugin payload",
|
||||
"pluginState": "Plugin status",
|
||||
"response": "Resultaat",
|
||||
"title": "Plugin details",
|
||||
"tool_call": "Tool-aanroepverzoek"
|
||||
},
|
||||
"detailModal": {
|
||||
"customPlugin": {
|
||||
"description": "Ga naar de bewerkingspagina voor meer details",
|
||||
"description": "Ga naar de bewerkingspagina voor details",
|
||||
"editBtn": "Nu bewerken",
|
||||
"title": "Dit is een aangepaste plugin"
|
||||
},
|
||||
"emptyState": {
|
||||
"description": "Installeer deze plug-in eerst om de mogelijkheden en configuratieopties te bekijken",
|
||||
"title": "Bekijk plug-in details na installatie"
|
||||
"description": "Installeer deze plugin eerst om de mogelijkheden en configuratieopties te bekijken",
|
||||
"title": "Bekijk plugindetails na installatie"
|
||||
},
|
||||
"info": {
|
||||
"description": "API-beschrijving",
|
||||
"name": "API-naam"
|
||||
},
|
||||
"tabs": {
|
||||
"info": "Plug-in mogelijkheden",
|
||||
"info": "Pluginmogelijkheden",
|
||||
"manifest": "Installatiebestand",
|
||||
"settings": "Instellingen"
|
||||
},
|
||||
"title": "Plug-in Details"
|
||||
"title": "Plugindetails"
|
||||
},
|
||||
"dev": {
|
||||
"confirmDeleteDevPlugin": "Weet u zeker dat u deze lokale plug-in wilt verwijderen? Eenmaal verwijderd, kan het niet worden hersteld.",
|
||||
"confirmDeleteDevPlugin": "Deze lokale plugin wordt verwijderd en kan niet worden hersteld. Weet u zeker dat u deze plugin wilt verwijderen?",
|
||||
"customParams": {
|
||||
"useProxy": {
|
||||
"label": "Installeren via proxy (als u problemen ondervindt met toegang tot cross-origin, probeer dan deze optie in te schakelen en opnieuw te installeren)"
|
||||
"label": "Installeren via proxy (schakel dit in bij CORS-fouten en probeer opnieuw te installeren)"
|
||||
}
|
||||
},
|
||||
"deleteSuccess": "Plug-in succesvol verwijderd",
|
||||
"deleteSuccess": "Plugin succesvol verwijderd",
|
||||
"manifest": {
|
||||
"identifier": {
|
||||
"desc": "De unieke identificatie van de plug-in",
|
||||
"label": "Identificatie"
|
||||
"desc": "Unieke identificatie van de plugin",
|
||||
"label": "Identificator"
|
||||
},
|
||||
"mode": {
|
||||
"mcp": "MCP-plugin",
|
||||
@@ -51,7 +51,7 @@
|
||||
"url": "Online link"
|
||||
},
|
||||
"name": {
|
||||
"desc": "De titel van de plug-in",
|
||||
"desc": "Plugin titel",
|
||||
"label": "Titel",
|
||||
"placeholder": "Zoekmachine"
|
||||
}
|
||||
@@ -61,200 +61,200 @@
|
||||
"title": "Geavanceerde instellingen"
|
||||
},
|
||||
"args": {
|
||||
"desc": "Een lijst met parameters die aan het uitvoeringscommando worden doorgegeven, meestal hier de naam van de MCP-server of het pad naar het opstartscript invoeren.",
|
||||
"label": "Commando-parameters",
|
||||
"placeholder": "Bijvoorbeeld: --port 8080 --debug",
|
||||
"required": "Voer de opstartparameters in"
|
||||
"desc": "Parameters doorgeven aan het uitvoeringscommando, meestal hier de MCP-servernaam of het pad naar het opstartscript invoeren",
|
||||
"label": "Commando-argumenten",
|
||||
"placeholder": "Bijv.: mcp-hello-world",
|
||||
"required": "Voer opstartparameters in"
|
||||
},
|
||||
"auth": {
|
||||
"bear": "API-sleutel",
|
||||
"desc": "Kies de authenticatiemethode voor de MCP-server",
|
||||
"label": "Authenticatietype",
|
||||
"none": "Geen authenticatie vereist",
|
||||
"placeholder": "Selecteer een authenticatietype",
|
||||
"none": "Geen authenticatie nodig",
|
||||
"placeholder": "Selecteer authenticatietype",
|
||||
"token": {
|
||||
"desc": "Voer je API-sleutel of Bearer-token in",
|
||||
"label": "API-sleutel",
|
||||
"placeholder": "sk-xxxxx",
|
||||
"required": "Voer het authenticatietoken in"
|
||||
"required": "Voer authenticatietoken in"
|
||||
}
|
||||
},
|
||||
"avatar": {
|
||||
"label": "Plugin-icoon"
|
||||
},
|
||||
"command": {
|
||||
"desc": "Uitvoerbaar bestand of script om de MCP STDIO-plugin te starten",
|
||||
"desc": "Uitvoerbaar bestand of script om MCP STDIO-server te starten",
|
||||
"label": "Commando",
|
||||
"placeholder": "Bijvoorbeeld: python main.py of /path/to/executable",
|
||||
"required": "Voer het opstartcommando in"
|
||||
"placeholder": "Bijv.: npx / uv / docker enz.",
|
||||
"required": "Voer opstartcommando in"
|
||||
},
|
||||
"desc": {
|
||||
"desc": "Voeg een beschrijving van de plugin toe",
|
||||
"label": "Plugin-beschrijving",
|
||||
"placeholder": "Vul informatie in over het gebruik en de scenario's van deze plugin"
|
||||
"desc": "Voeg een beschrijving toe voor de plugin",
|
||||
"label": "Pluginbeschrijving",
|
||||
"placeholder": "Voeg gebruiks- en scenario-informatie toe"
|
||||
},
|
||||
"endpoint": {
|
||||
"desc": "Voer het adres van je MCP Streamable HTTP Server in",
|
||||
"desc": "Voer het adres van je MCP Streamable HTTP-server in",
|
||||
"label": "MCP Endpoint URL"
|
||||
},
|
||||
"env": {
|
||||
"add": "Een regel toevoegen",
|
||||
"desc": "Voer de omgevingsvariabelen in die nodig zijn voor jouw MCP-server",
|
||||
"duplicateKeyError": "Veldsleutels moeten uniek zijn",
|
||||
"formValidationFailed": "Formuliervalidatie is mislukt, controleer het parameterformaat",
|
||||
"keyRequired": "Veldsleutel mag niet leeg zijn",
|
||||
"label": "Omgevingsvariabelen voor MCP-server",
|
||||
"stringifyError": "Kan parameters niet serialiseren, controleer het parameterformaat"
|
||||
"add": "Voeg een regel toe",
|
||||
"desc": "Voer de omgevingsvariabelen in die de MCP-server nodig heeft",
|
||||
"duplicateKeyError": "Sleutel moet uniek zijn",
|
||||
"formValidationFailed": "Formuliervalidatie mislukt, controleer parameterindeling",
|
||||
"keyRequired": "Sleutel mag niet leeg zijn",
|
||||
"label": "MCP Server omgevingsvariabelen",
|
||||
"stringifyError": "Kan parameters niet serialiseren, controleer parameterindeling"
|
||||
},
|
||||
"headers": {
|
||||
"add": "Voeg een regel toe",
|
||||
"desc": "Voer de verzoekheaders in",
|
||||
"desc": "Voer HTTP-headers in",
|
||||
"label": "HTTP-headers"
|
||||
},
|
||||
"identifier": {
|
||||
"desc": "Geef je MCP-plugin een naam, gebruik Engelse karakters",
|
||||
"invalid": "Alleen Engelse karakters, cijfers, - en _ zijn toegestaan",
|
||||
"label": "MCP Plugin Naam",
|
||||
"placeholder": "Bijvoorbeeld: my-mcp-plugin",
|
||||
"required": "Voer de MCP service-identificator in"
|
||||
"desc": "Geef je MCP-plugin een naam, alleen Engelse tekens toegestaan",
|
||||
"invalid": "Identificator mag alleen letters, cijfers, koppeltekens en underscores bevatten",
|
||||
"label": "MCP-pluginnaam",
|
||||
"placeholder": "Bijv.: my-mcp-plugin",
|
||||
"required": "Voer MCP-service-identificator in"
|
||||
},
|
||||
"previewManifest": "Voorbeeld van het plugin beschrijvingsbestand",
|
||||
"previewManifest": "Plugin manifest bekijken",
|
||||
"quickImport": "Snelle import van JSON-configuratie",
|
||||
"quickImportError": {
|
||||
"empty": "Invoerveld mag niet leeg zijn",
|
||||
"invalidJson": "Ongeldig JSON-formaat",
|
||||
"empty": "Inhoud mag niet leeg zijn",
|
||||
"invalidJson": "Ongeldige JSON-indeling",
|
||||
"invalidStructure": "Ongeldige JSON-structuur"
|
||||
},
|
||||
"stdioNotSupported": "De huidige omgeving ondersteunt geen stdio-type MCP-plug-ins",
|
||||
"testConnection": "Test verbinding",
|
||||
"testConnectionTip": "De MCP plugin kan pas normaal worden gebruikt na een succesvolle verbindingstest",
|
||||
"stdioNotSupported": "Huidige omgeving ondersteunt geen stdio-type MCP-plugins",
|
||||
"testConnection": "Verbinding testen",
|
||||
"testConnectionTip": "MCP-plugin kan pas normaal worden gebruikt na succesvolle verbindingstest",
|
||||
"type": {
|
||||
"desc": "Kies de communicatiemethode voor de MCP-plugin, de webversie ondersteunt alleen Streamable HTTP",
|
||||
"desc": "Kies het communicatieprotocol van de MCP-plugin, webversie ondersteunt alleen Streamable HTTP",
|
||||
"httpFeature1": "Compatibel met web- en desktopversies",
|
||||
"httpFeature2": "Verbind met een externe MCP-server, zonder extra installatie of configuratie",
|
||||
"httpShortDesc": "Communicatieprotocol op basis van streaming HTTP",
|
||||
"label": "MCP Plugin Type",
|
||||
"stdioFeature1": "Lagere communicatietijd, geschikt voor lokale uitvoering",
|
||||
"stdioFeature2": "MCP-server moet lokaal worden geïnstalleerd en uitgevoerd",
|
||||
"stdioNotAvailable": "STDIO-modus is alleen beschikbaar in de desktopversie",
|
||||
"stdioShortDesc": "Communicatieprotocol op basis van standaardinvoer en -uitvoer",
|
||||
"title": "MCP-plugintype"
|
||||
"httpFeature2": "Verbind met externe MCP-server zonder extra installatie",
|
||||
"httpShortDesc": "Communicatieprotocol gebaseerd op gestreamde HTTP",
|
||||
"label": "MCP-plugin type",
|
||||
"stdioFeature1": "Lagere communicatielatentie, geschikt voor lokaal gebruik",
|
||||
"stdioFeature2": "MCP-server moet lokaal geïnstalleerd en uitgevoerd worden",
|
||||
"stdioNotAvailable": "STDIO-modus alleen beschikbaar in desktopversie",
|
||||
"stdioShortDesc": "Communicatieprotocol gebaseerd op standaardinvoer/-uitvoer",
|
||||
"title": "MCP-plugin type"
|
||||
},
|
||||
"url": {
|
||||
"desc": "Voer je MCP Server Streamable HTTP-adres in, SSE-modus wordt niet ondersteund",
|
||||
"desc": "Voer het Streamable HTTP-adres van je MCP-server in, SSE-modus wordt niet ondersteund",
|
||||
"invalid": "Voer een geldige URL in",
|
||||
"label": "HTTP Endpoint URL",
|
||||
"required": "Voer de MCP service URL in"
|
||||
"label": "Streamable HTTP Endpoint URL",
|
||||
"required": "Voer MCP-service-URL in"
|
||||
}
|
||||
},
|
||||
"meta": {
|
||||
"author": {
|
||||
"desc": "De auteur van de plug-in",
|
||||
"desc": "Auteur van de plugin",
|
||||
"label": "Auteur"
|
||||
},
|
||||
"avatar": {
|
||||
"desc": "Het pictogram van de plug-in, kan een Emoji of een URL zijn",
|
||||
"label": "Pictogram"
|
||||
"desc": "Plugin-icoon, kan een emoji of URL zijn",
|
||||
"label": "Icoon"
|
||||
},
|
||||
"description": {
|
||||
"desc": "De beschrijving van de plug-in",
|
||||
"desc": "Pluginbeschrijving",
|
||||
"label": "Beschrijving",
|
||||
"placeholder": "Informatie verkrijgen van zoekmachines"
|
||||
"placeholder": "Zoek informatie via zoekmachine"
|
||||
},
|
||||
"formFieldRequired": "Dit veld is verplicht",
|
||||
"homepage": {
|
||||
"desc": "De startpagina van de plug-in",
|
||||
"desc": "Startpagina van de plugin",
|
||||
"label": "Startpagina"
|
||||
},
|
||||
"identifier": {
|
||||
"desc": "De unieke identificatie van de plug-in, ondersteunt alleen alfanumerieke tekens, koppelteken - en underscore _",
|
||||
"errorDuplicate": "De identificatie wordt al gebruikt door een andere plug-in, wijzig de identificatie",
|
||||
"label": "Identificatie",
|
||||
"pattenErrorMessage": "Alleen alfanumerieke tekens, koppelteken - en underscore _ zijn toegestaan"
|
||||
"desc": "Unieke identificatie van de plugin, wordt automatisch herkend uit manifest",
|
||||
"errorDuplicate": "Identificator is al in gebruik, wijzig deze",
|
||||
"label": "Identificator",
|
||||
"pattenErrorMessage": "Alleen Engelse letters, cijfers, - en _ zijn toegestaan"
|
||||
},
|
||||
"lobe": "{{appName}} plugin",
|
||||
"manifest": {
|
||||
"desc": "{{appName}} zal de plugin installeren via deze link",
|
||||
"label": "Plug-in Beschrijving (Manifest) URL",
|
||||
"preview": "Voorbeeld",
|
||||
"desc": "{{appName}} installeert de plugin via deze link",
|
||||
"label": "Plugin manifest URL",
|
||||
"preview": "Manifest bekijken",
|
||||
"refresh": "Vernieuwen"
|
||||
},
|
||||
"openai": "OpenAI plugin",
|
||||
"openai": "OpenAI-plugin",
|
||||
"title": {
|
||||
"desc": "De titel van de plug-in",
|
||||
"desc": "Plugin titel",
|
||||
"label": "Titel",
|
||||
"placeholder": "Zoekmachine"
|
||||
}
|
||||
},
|
||||
"metaConfig": "Configuratie van plug-inmetadata",
|
||||
"modalDesc": "Na het toevoegen van een aangepaste plug-in kan deze worden gebruikt voor verificatie van plug-inontwikkeling of direct in de sessie. Raadpleeg de <1>ontwikkelingsdocumentatie↗</> voor plug-inontwikkeling.",
|
||||
"metaConfig": "Plugin meta-informatie configuratie",
|
||||
"modalDesc": "Na toevoegen van een aangepaste plugin kan deze gebruikt worden voor ontwikkelvalidatie of direct in gesprekken. Raadpleeg de <1>ontwikkelaarsdocumentatie↗</> voor pluginontwikkeling.",
|
||||
"openai": {
|
||||
"importUrl": "Importeren van URL-link",
|
||||
"importUrl": "Importeren via URL",
|
||||
"schema": "Schema"
|
||||
},
|
||||
"preview": {
|
||||
"api": {
|
||||
"noParams": "Deze tool heeft geen parameters",
|
||||
"noResults": "Geen API's gevonden die aan de zoekcriteria voldoen",
|
||||
"noResults": "Geen API gevonden die aan de zoekcriteria voldoet",
|
||||
"params": "Parameters:",
|
||||
"searchPlaceholder": "Zoek tool..."
|
||||
},
|
||||
"card": "Voorbeeld van plug-inweergave",
|
||||
"desc": "Voorbeeld van plug-inbeschrijving",
|
||||
"card": "Plugin preview weergave",
|
||||
"desc": "Plugin beschrijving preview",
|
||||
"empty": {
|
||||
"desc": "Na configuratie kunt u hier de mogelijkheden van de ondersteunde tools van de plug-in bekijken",
|
||||
"title": "Begin met het bekijken na het configureren van de plug-in"
|
||||
"desc": "Na configuratie kunt u hier de ondersteunde toolmogelijkheden van de plugin bekijken",
|
||||
"title": "Begin met preview na configuratie"
|
||||
},
|
||||
"title": "Voorbeeld van plug-innaam"
|
||||
"title": "Plugin naam preview"
|
||||
},
|
||||
"save": "Installeer plug-in",
|
||||
"saveSuccess": "Instellingen van plug-in succesvol opgeslagen",
|
||||
"save": "Plugin installeren",
|
||||
"saveSuccess": "Plugin-instellingen succesvol opgeslagen",
|
||||
"tabs": {
|
||||
"manifest": "Functiebeschrijving Manifest (Manifest)",
|
||||
"meta": "Plug-in Metadata"
|
||||
"manifest": "Functionaliteitsmanifest",
|
||||
"meta": "Plugin meta-informatie"
|
||||
},
|
||||
"title": {
|
||||
"create": "Aangepaste plug-in toevoegen",
|
||||
"edit": "Aangepaste plug-in bewerken"
|
||||
"create": "Aangepaste plugin toevoegen",
|
||||
"edit": "Aangepaste plugin bewerken"
|
||||
},
|
||||
"type": {
|
||||
"lobe": "LobeChat-plug-in",
|
||||
"openai": "OpenAI-plug-in"
|
||||
"lobe": "{{appName}} plugin",
|
||||
"openai": "OpenAI-plugin"
|
||||
},
|
||||
"update": "Bijwerken",
|
||||
"updateSuccess": "Instellingen van plug-in succesvol bijgewerkt"
|
||||
"updateSuccess": "Plugin-instellingen succesvol bijgewerkt"
|
||||
},
|
||||
"error": {
|
||||
"fetchError": "Het ophalen van de manifest-link is mislukt. Zorg ervoor dat de link geldig is en controleer of de link cross-origin toegang toestaat.",
|
||||
"installError": "Installatie van de plugin {{name}} is mislukt.",
|
||||
"manifestInvalid": "Manifest voldoet niet aan de specificatie. Validatieresultaat: \n\n {{error}}",
|
||||
"noManifest": "Geen manifest beschikbaar",
|
||||
"openAPIInvalid": "OpenAPI-analyse mislukt. Fout: \n\n {{error}}",
|
||||
"reinstallError": "Vernieuwen van de plugin {{name}} is mislukt.",
|
||||
"fetchError": "Manifest-link ophalen mislukt, controleer de geldigheid van de link en of cross-origin toegang is toegestaan",
|
||||
"installError": "Plugin {{name}} installatie mislukt",
|
||||
"manifestInvalid": "Manifest voldoet niet aan de specificaties, validatiefout: \n\n {{error}}",
|
||||
"noManifest": "Manifestbestand bestaat niet",
|
||||
"openAPIInvalid": "OpenAPI parsing mislukt, fout: \n\n {{error}}",
|
||||
"reinstallError": "Plugin {{name}} verversen mislukt",
|
||||
"testConnectionFailed": "Manifest ophalen mislukt: {{error}}",
|
||||
"urlError": "De link retourneert geen JSON-indeling. Zorg ervoor dat het een geldige link is."
|
||||
"urlError": "De link retourneert geen JSON-inhoud, zorg dat het een geldige link is"
|
||||
},
|
||||
"inspector": {
|
||||
"args": "Bekijk parameterlijst",
|
||||
"pluginRender": "Bekijk plugininterface"
|
||||
"pluginRender": "Bekijk plugin-interface"
|
||||
},
|
||||
"list": {
|
||||
"item": {
|
||||
"deprecated.title": "Verouderd",
|
||||
"deprecated.title": "Verwijderd",
|
||||
"local.config": "Configuratie",
|
||||
"local.title": "Aangepast"
|
||||
}
|
||||
},
|
||||
"loading": {
|
||||
"content": "Plugin wordt geladen...",
|
||||
"content": "Plugin aan het aanroepen...",
|
||||
"plugin": "Plugin wordt uitgevoerd..."
|
||||
},
|
||||
"localSystem": {
|
||||
"apiName": {
|
||||
"listLocalFiles": "Bestandlijst weergeven",
|
||||
"listLocalFiles": "Bestandslijst bekijken",
|
||||
"moveLocalFiles": "Bestanden verplaatsen",
|
||||
"readLocalFile": "Bestand inhoud lezen",
|
||||
"renameLocalFile": "Hernoemen",
|
||||
"readLocalFile": "Bestandsinhoud lezen",
|
||||
"renameLocalFile": "Naam wijzigen",
|
||||
"searchLocalFiles": "Bestanden zoeken",
|
||||
"writeLocalFile": "Bestand schrijven"
|
||||
},
|
||||
@@ -263,15 +263,15 @@
|
||||
"mcpInstall": {
|
||||
"CHECKING_INSTALLATION": "Installatieomgeving controleren...",
|
||||
"COMPLETED": "Installatie voltooid",
|
||||
"CONFIGURATION_REQUIRED": "Voltooi de configuratie voordat u doorgaat met de installatie",
|
||||
"CONFIGURATION_REQUIRED": "Voltooi de configuratie om door te gaan met installatie",
|
||||
"ERROR": "Installatiefout",
|
||||
"FETCHING_MANIFEST": "Plugin manifest ophalen...",
|
||||
"GETTING_SERVER_MANIFEST": "MCP-server initialiseren...",
|
||||
"INSTALLING_PLUGIN": "Plugin wordt geïnstalleerd...",
|
||||
"configurationDescription": "Deze MCP-plugin vereist configuratieparameters om correct te functioneren. Vul de benodigde configuratiegegevens in.",
|
||||
"INSTALLING_PLUGIN": "Plugin aan het installeren...",
|
||||
"configurationDescription": "Deze MCP-plugin vereist configuratieparameters om correct te functioneren, vul de benodigde informatie in",
|
||||
"configurationRequired": "Pluginparameters configureren",
|
||||
"continueInstall": "Installatie voortzetten",
|
||||
"dependenciesDescription": "Deze plugin vereist de installatie van de volgende systeemafhankelijkheden om correct te werken. Installeer de ontbrekende afhankelijkheden volgens de instructies en klik vervolgens op 'Opnieuw controleren' om door te gaan met de installatie.",
|
||||
"dependenciesDescription": "Deze plugin vereist de installatie van de volgende systeemafhankelijkheden. Installeer de ontbrekende afhankelijkheden volgens de instructies en klik op 'Opnieuw controleren' om door te gaan.",
|
||||
"dependenciesRequired": "Installeer de systeemafhankelijkheden van de plugin",
|
||||
"dependencyStatus": {
|
||||
"installed": "Geïnstalleerd",
|
||||
@@ -280,14 +280,14 @@
|
||||
},
|
||||
"errorDetails": {
|
||||
"args": "Parameters",
|
||||
"command": "Opdracht",
|
||||
"command": "Commando",
|
||||
"connectionParams": "Verbindingsparameters",
|
||||
"env": "Omgevingsvariabelen",
|
||||
"errorOutput": "Foutlogboek",
|
||||
"errorOutput": "Foutlog",
|
||||
"exitCode": "Exitcode",
|
||||
"hideDetails": "Details verbergen",
|
||||
"originalError": "Oorspronkelijke fout",
|
||||
"showDetails": "Details weergeven"
|
||||
"showDetails": "Details bekijken"
|
||||
},
|
||||
"errorTypes": {
|
||||
"AUTHORIZATION_ERROR": "Autorisatiefout",
|
||||
@@ -300,32 +300,92 @@
|
||||
"installError": "MCP-plugin installatie mislukt, reden: {{detail}}",
|
||||
"installMethods": {
|
||||
"manual": "Handmatige installatie:",
|
||||
"recommended": "Aanbevolen installatiemethode:"
|
||||
"recommended": "Aanbevolen installatie:"
|
||||
},
|
||||
"recheckDependencies": "Opnieuw controleren",
|
||||
"skipDependencies": "Controle overslaan"
|
||||
},
|
||||
"pluginList": "Lijst met plugins",
|
||||
"pluginList": "Pluginlijst",
|
||||
"protocolInstall": {
|
||||
"actions": {
|
||||
"install": "Installeren",
|
||||
"installAnyway": "Toch installeren",
|
||||
"installed": "Geïnstalleerd"
|
||||
},
|
||||
"config": {
|
||||
"args": "Parameters",
|
||||
"command": "Commando",
|
||||
"env": "Omgevingsvariabelen",
|
||||
"headers": "Headers",
|
||||
"title": "Configuratie-informatie",
|
||||
"type": {
|
||||
"http": "Type: HTTP",
|
||||
"label": "Type",
|
||||
"stdio": "Type: Stdio"
|
||||
},
|
||||
"url": "Serviceadres"
|
||||
},
|
||||
"custom": {
|
||||
"badge": "Aangepaste plugin",
|
||||
"security": {
|
||||
"description": "Deze plugin is niet officieel geverifieerd, installatie kan veiligheidsrisico's met zich meebrengen! Zorg dat u de bron vertrouwt.",
|
||||
"title": "⚠️ Veiligheidswaarschuwing"
|
||||
},
|
||||
"title": "Aangepaste plugin installeren"
|
||||
},
|
||||
"marketplace": {
|
||||
"title": "Derde partij plugins installeren",
|
||||
"trustedBy": "Aangeboden door {{name}}",
|
||||
"unverified": {
|
||||
"title": "Ongeverifieerde derde partij plugin",
|
||||
"warning": "Deze plugin komt uit een niet-geverifieerde derde partij markt, bevestig dat u de bron vertrouwt voor installatie."
|
||||
},
|
||||
"verified": "Geverifieerd"
|
||||
},
|
||||
"messages": {
|
||||
"connectionTestFailed": "Verbindingstest mislukt",
|
||||
"installError": "Plugin-installatie mislukt, probeer opnieuw",
|
||||
"installSuccess": "Plugin {{name}} succesvol geïnstalleerd!",
|
||||
"manifestError": "Plugin details ophalen mislukt, controleer netwerkverbinding en probeer opnieuw",
|
||||
"manifestNotFound": "Plugin manifest niet gevonden"
|
||||
},
|
||||
"meta": {
|
||||
"author": "Auteur",
|
||||
"homepage": "Startpagina",
|
||||
"identifier": "Identificator",
|
||||
"source": "Bron",
|
||||
"version": "Versie"
|
||||
},
|
||||
"official": {
|
||||
"badge": "LobeHub officiële plugin",
|
||||
"description": "Deze plugin is ontwikkeld en onderhouden door LobeHub, grondig beveiligd en veilig in gebruik.",
|
||||
"loadingMessage": "Plugin details ophalen...",
|
||||
"loadingTitle": "Bezig met laden",
|
||||
"title": "Officiële plugin installeren"
|
||||
},
|
||||
"title": "MCP-plugin installeren",
|
||||
"warning": "⚠️ Bevestig dat u deze pluginbron vertrouwt, kwaadaardige plugins kunnen uw systeem in gevaar brengen."
|
||||
},
|
||||
"search": {
|
||||
"apiName": {
|
||||
"crawlMultiPages": "Meerdere pagina-inhoud lezen",
|
||||
"crawlMultiPages": "Meerdere pagina's lezen",
|
||||
"crawlSinglePage": "Pagina-inhoud lezen",
|
||||
"search": "Pagina zoeken"
|
||||
},
|
||||
"config": {
|
||||
"addKey": "Voeg sleutel toe",
|
||||
"addKey": "Sleutel toevoegen",
|
||||
"close": "Verwijderen",
|
||||
"confirm": "Configuratie voltooid en opnieuw proberen"
|
||||
"confirm": "Configuratie voltooid en opnieuw geprobeerd"
|
||||
},
|
||||
"crawPages": {
|
||||
"crawling": "Linkherkenning",
|
||||
"crawling": "Linkherkenning bezig",
|
||||
"detail": {
|
||||
"preview": "Voorbeeld",
|
||||
"raw": "Oorspronkelijke tekst",
|
||||
"tooLong": "De tekstinhoud is te lang, de gesprekscontext houdt alleen de eerste {{characters}} tekens vast, het overschot wordt niet meegerekend in de gesprekscontext"
|
||||
"raw": "Ruwe tekst",
|
||||
"tooLong": "Tekst is te lang, alleen de eerste {{characters}} tekens worden in de context opgenomen"
|
||||
},
|
||||
"meta": {
|
||||
"crawler": "Crawler-modus",
|
||||
"crawler": "Crawling modus",
|
||||
"words": "Aantal tekens"
|
||||
}
|
||||
},
|
||||
@@ -333,9 +393,9 @@
|
||||
"baseURL": "Voer in",
|
||||
"description": "Voer de URL van SearchXNG in om te beginnen met online zoeken",
|
||||
"keyPlaceholder": "Voer sleutel in",
|
||||
"title": "Configureer SearchXNG zoekmachine",
|
||||
"unconfiguredDesc": "Neem contact op met de beheerder om de configuratie van de SearchXNG zoekmachine te voltooien en te beginnen met online zoeken",
|
||||
"unconfiguredTitle": "SearchXNG zoekmachine is nog niet geconfigureerd"
|
||||
"title": "SearchXNG zoekmachine configureren",
|
||||
"unconfiguredDesc": "Neem contact op met de beheerder om SearchXNG zoekmachine te configureren en online zoeken te starten",
|
||||
"unconfiguredTitle": "SearchXNG zoekmachine niet geconfigureerd"
|
||||
},
|
||||
"title": "Online zoeken"
|
||||
},
|
||||
@@ -345,66 +405,66 @@
|
||||
"prompts": "Promptwoorden",
|
||||
"resources": "Middelen",
|
||||
"title": "Pluginmogelijkheden",
|
||||
"tools": "Hulpmiddelen"
|
||||
"tools": "Tools"
|
||||
},
|
||||
"configuration": {
|
||||
"title": "Pluginconfiguratie"
|
||||
},
|
||||
"connection": {
|
||||
"args": "Startparameters",
|
||||
"command": "Startopdracht",
|
||||
"args": "Opstartparameters",
|
||||
"command": "Opstartcommando",
|
||||
"title": "Verbindingsinformatie",
|
||||
"type": "Verbindingstype",
|
||||
"url": "Serviceadres"
|
||||
},
|
||||
"edit": "Bewerken",
|
||||
"envConfigDescription": "Deze configuraties worden als omgevingsvariabelen doorgegeven aan het proces bij het opstarten van de MCP-server",
|
||||
"httpTypeNotice": "HTTP-type MCP-plugins hebben momenteel geen omgevingsvariabelen die geconfigureerd moeten worden",
|
||||
"envConfigDescription": "Deze configuraties worden als omgevingsvariabelen doorgegeven bij het starten van de MCP-server",
|
||||
"httpTypeNotice": "HTTP-type MCP-plugins hebben momenteel geen omgevingsvariabelen nodig",
|
||||
"indexUrl": {
|
||||
"title": "Marktindex",
|
||||
"tooltip": "Online bewerken wordt momenteel niet ondersteund. Stel in via omgevingsvariabelen tijdens implementatie."
|
||||
"tooltip": "Online bewerken niet ondersteund, stel in via omgevingsvariabelen bij deployment"
|
||||
},
|
||||
"messages": {
|
||||
"connectionUpdateFailed": "Bijwerken van verbindingsinformatie mislukt",
|
||||
"connectionUpdateFailed": "Verbindingsinformatie bijwerken mislukt",
|
||||
"connectionUpdateSuccess": "Verbindingsinformatie succesvol bijgewerkt",
|
||||
"envUpdateFailed": "Opslaan van omgevingsvariabelen mislukt",
|
||||
"envUpdateSuccess": "Omgevingsvariabelen succesvol opgeslagen"
|
||||
},
|
||||
"modalDesc": "Na het instellen van de marktlocatie voor plugins, kunt u een aangepaste pluginmarkt gebruiken.",
|
||||
"modalDesc": "Na configuratie van de pluginmarkt kunt u aangepaste pluginmarkten gebruiken",
|
||||
"rules": {
|
||||
"argsRequired": "Voer opstartparameters in",
|
||||
"commandRequired": "Voer het opstartcommando in",
|
||||
"urlRequired": "Voer het serviceadres in"
|
||||
"commandRequired": "Voer opstartcommando in",
|
||||
"urlRequired": "Voer serviceadres in"
|
||||
},
|
||||
"saveSettings": "Instellingen opslaan",
|
||||
"title": "Instellingen voor pluginmarkt"
|
||||
"title": "Pluginmarkt instellingen"
|
||||
},
|
||||
"showInPortal": "Gelieve de details in het portaal te bekijken",
|
||||
"showInPortal": "Bekijk details in de werkruimte",
|
||||
"store": {
|
||||
"actions": {
|
||||
"cancel": "Installatie annuleren",
|
||||
"confirmUninstall": "Deze plugin wordt binnenkort verwijderd. Na verwijdering worden de configuraties gewist. Weet u zeker dat u door wilt gaan?",
|
||||
"confirmUninstall": "Deze plugin wordt verwijderd en de configuratie wordt gewist. Bevestig uw actie.",
|
||||
"detail": "Details",
|
||||
"install": "Installeren",
|
||||
"manifest": "Installatiebestand bewerken",
|
||||
"settings": "Instellingen",
|
||||
"uninstall": "Verwijderen"
|
||||
},
|
||||
"communityPlugin": "Community",
|
||||
"communityPlugin": "Derde partij community",
|
||||
"customPlugin": "Aangepast",
|
||||
"empty": "Geen geïnstalleerde plugins beschikbaar",
|
||||
"empty": "Geen geïnstalleerde plugins",
|
||||
"emptySelectHint": "Selecteer een plugin om details te bekijken",
|
||||
"installAllPlugins": "Allemaal installeren",
|
||||
"networkError": "Kan de pluginwinkel niet laden. Controleer de netwerkverbinding en probeer het opnieuw.",
|
||||
"placeholder": "Zoek plugin op naam, beschrijving of trefwoord...",
|
||||
"installAllPlugins": "Alles installeren",
|
||||
"networkError": "Pluginwinkel ophalen mislukt, controleer netwerkverbinding en probeer opnieuw",
|
||||
"placeholder": "Zoek pluginnaam, beschrijving of trefwoorden...",
|
||||
"releasedAt": "Uitgebracht op {{createdAt}}",
|
||||
"tabs": {
|
||||
"installed": "Geïnstalleerd",
|
||||
"mcp": "MCP-plug-in",
|
||||
"old": "LobeChat-plugin"
|
||||
"mcp": "MCP-plugins",
|
||||
"old": "LobeChat-plugins"
|
||||
},
|
||||
"title": "Pluginwinkel"
|
||||
},
|
||||
"unknownError": "Onbekende fout",
|
||||
"unknownPlugin": "onbekende plugin"
|
||||
"unknownPlugin": "Onbekende plugin"
|
||||
}
|
||||
|
||||
@@ -1,42 +1,42 @@
|
||||
{
|
||||
"confirm": "Potwierdź",
|
||||
"debug": {
|
||||
"arguments": "Argumenty",
|
||||
"arguments": "Argumenty wywołania",
|
||||
"function_call": "Wywołanie funkcji",
|
||||
"off": "Wyłącz debugowanie",
|
||||
"on": "Wyświetl informacje o wywołaniach wtyczki",
|
||||
"payload": "dane wejściowe wtyczki",
|
||||
"on": "Wyświetl informacje o wywołaniu wtyczki",
|
||||
"payload": "Ładunek wtyczki",
|
||||
"pluginState": "Stan wtyczki",
|
||||
"response": "Odpowiedź",
|
||||
"response": "Wynik zwrotny",
|
||||
"title": "Szczegóły wtyczki",
|
||||
"tool_call": "żądanie wywołania narzędzia"
|
||||
"tool_call": "Żądanie wywołania narzędzia"
|
||||
},
|
||||
"detailModal": {
|
||||
"customPlugin": {
|
||||
"description": "Proszę przejść do strony edycji, aby zobaczyć szczegóły",
|
||||
"editBtn": "Edytuj teraz",
|
||||
"title": "To jest niestandardowa wtyczka"
|
||||
"title": "To jest wtyczka niestandardowa"
|
||||
},
|
||||
"emptyState": {
|
||||
"description": "Zainstaluj najpierw tę wtyczkę, aby zobaczyć jej funkcje i opcje konfiguracji",
|
||||
"description": "Proszę najpierw zainstalować tę wtyczkę, aby zobaczyć jej możliwości i opcje konfiguracji",
|
||||
"title": "Zobacz szczegóły wtyczki po instalacji"
|
||||
},
|
||||
"info": {
|
||||
"description": "Opis interfejsu API",
|
||||
"name": "Nazwa interfejsu API"
|
||||
"description": "Opis API",
|
||||
"name": "Nazwa API"
|
||||
},
|
||||
"tabs": {
|
||||
"info": "Zdolności wtyczki",
|
||||
"info": "Możliwości wtyczki",
|
||||
"manifest": "Plik instalacyjny",
|
||||
"settings": "Ustawienia"
|
||||
},
|
||||
"title": "Szczegóły wtyczki"
|
||||
},
|
||||
"dev": {
|
||||
"confirmDeleteDevPlugin": "Czy na pewno chcesz usunąć tę lokalną wtyczkę? Po usunięciu nie będzie możliwe jej odzyskanie.",
|
||||
"confirmDeleteDevPlugin": "Właśnie usuniesz tę lokalną wtyczkę. Po usunięciu nie będzie można jej odzyskać. Czy na pewno chcesz usunąć tę wtyczkę?",
|
||||
"customParams": {
|
||||
"useProxy": {
|
||||
"label": "Zainstaluj za pośrednictwem serwera proxy (jeśli występują błędy dostępu z innej domeny, spróbuj włączyć tę opcję i ponownie zainstalować)"
|
||||
"label": "Instaluj przez proxy (jeśli wystąpi błąd CORS, spróbuj włączyć tę opcję i ponownie zainstalować)"
|
||||
}
|
||||
},
|
||||
"deleteSuccess": "Wtyczka została pomyślnie usunięta",
|
||||
@@ -47,7 +47,7 @@
|
||||
},
|
||||
"mode": {
|
||||
"mcp": "Wtyczka MCP",
|
||||
"mcpExp": "Eksperymentalna",
|
||||
"mcpExp": "Eksperymentalna MCP",
|
||||
"url": "Link online"
|
||||
},
|
||||
"name": {
|
||||
@@ -61,14 +61,14 @@
|
||||
"title": "Ustawienia zaawansowane"
|
||||
},
|
||||
"args": {
|
||||
"desc": "Lista argumentów przekazywanych do polecenia wykonawczego, zazwyczaj wpisz tutaj nazwę serwera MCP lub ścieżkę do skryptu uruchamiającego",
|
||||
"desc": "Lista argumentów przekazywanych do polecenia wykonawczego, zwykle tutaj wpisz nazwę serwera MCP lub ścieżkę do skryptu startowego",
|
||||
"label": "Argumenty polecenia",
|
||||
"placeholder": "Na przykład: mcp-hello-world",
|
||||
"required": "Proszę wprowadzić parametry uruchomienia"
|
||||
"placeholder": "np.: mcp-hello-world",
|
||||
"required": "Proszę wprowadzić argumenty startowe"
|
||||
},
|
||||
"auth": {
|
||||
"bear": "Klucz API",
|
||||
"desc": "Wybierz metodę uwierzytelniania serwera MCP",
|
||||
"desc": "Wybierz sposób uwierzytelniania serwera MCP",
|
||||
"label": "Typ uwierzytelniania",
|
||||
"none": "Brak uwierzytelniania",
|
||||
"placeholder": "Wybierz typ uwierzytelniania",
|
||||
@@ -83,68 +83,68 @@
|
||||
"label": "Ikona wtyczki"
|
||||
},
|
||||
"command": {
|
||||
"desc": "Wykonywalny plik lub skrypt do uruchomienia serwera MCP STDIO",
|
||||
"desc": "Wykonywalny plik lub skrypt do uruchomienia MCP STDIO Server",
|
||||
"label": "Polecenie",
|
||||
"placeholder": "Na przykład: npx / uv / docker itp.",
|
||||
"required": "Proszę wprowadzić polecenie uruchomienia"
|
||||
"placeholder": "np.: npx / uv / docker itp.",
|
||||
"required": "Proszę wprowadzić polecenie startowe"
|
||||
},
|
||||
"desc": {
|
||||
"desc": "Opis dodawanej wtyczki",
|
||||
"desc": "Dodaj opis wtyczki",
|
||||
"label": "Opis wtyczki",
|
||||
"placeholder": "Uzupełnij informacje o użyciu i scenariuszach tej wtyczki"
|
||||
"placeholder": "Dodaj informacje o zastosowaniu i scenariuszach użycia"
|
||||
},
|
||||
"endpoint": {
|
||||
"desc": "Wprowadź adres swojego serwera MCP Streamable HTTP",
|
||||
"desc": "Wprowadź adres swojego MCP Streamable HTTP Server",
|
||||
"label": "URL punktu końcowego MCP"
|
||||
},
|
||||
"env": {
|
||||
"add": "Dodaj nowy wiersz",
|
||||
"desc": "Wprowadź zmienne środowiskowe wymagane przez Twój serwer MCP",
|
||||
"desc": "Wprowadź zmienne środowiskowe wymagane przez serwer MCP",
|
||||
"duplicateKeyError": "Klucz pola musi być unikalny",
|
||||
"formValidationFailed": "Walidacja formularza nie powiodła się, sprawdź format argumentów",
|
||||
"formValidationFailed": "Weryfikacja formularza nie powiodła się, sprawdź format parametrów",
|
||||
"keyRequired": "Klucz pola nie może być pusty",
|
||||
"label": "Zmienne środowiskowe serwera MCP",
|
||||
"stringifyError": "Nie można zserializować argumentów, sprawdź format argumentów"
|
||||
"stringifyError": "Nie można zserializować parametrów, sprawdź format"
|
||||
},
|
||||
"headers": {
|
||||
"add": "Dodaj wiersz",
|
||||
"add": "Dodaj nowy wiersz",
|
||||
"desc": "Wprowadź nagłówki żądania",
|
||||
"label": "Nagłówki HTTP"
|
||||
},
|
||||
"identifier": {
|
||||
"desc": "Nadaj nazwę swojej wtyczce MCP, używając znaków angielskich",
|
||||
"invalid": "Można wprowadzać tylko znaki angielskie, cyfry, oraz symbole - i _",
|
||||
"desc": "Nadaj nazwę swojej wtyczce MCP, musi zawierać znaki angielskie",
|
||||
"invalid": "Identyfikator może zawierać tylko litery, cyfry, myślniki i podkreślenia",
|
||||
"label": "Nazwa wtyczki MCP",
|
||||
"placeholder": "Na przykład: my-mcp-plugin",
|
||||
"placeholder": "np.: my-mcp-plugin",
|
||||
"required": "Proszę wprowadzić identyfikator usługi MCP"
|
||||
},
|
||||
"previewManifest": "Podgląd pliku opisu wtyczki",
|
||||
"previewManifest": "Podgląd pliku manifestu wtyczki",
|
||||
"quickImport": "Szybki import konfiguracji JSON",
|
||||
"quickImportError": {
|
||||
"empty": "Wprowadzenie nie może być puste",
|
||||
"empty": "Wprowadzone dane nie mogą być puste",
|
||||
"invalidJson": "Nieprawidłowy format JSON",
|
||||
"invalidStructure": "Format JSON jest nieprawidłowy"
|
||||
"invalidStructure": "Nieprawidłowa struktura JSON"
|
||||
},
|
||||
"stdioNotSupported": "Bieżące środowisko nie obsługuje wtyczek MCP typu stdio",
|
||||
"stdioNotSupported": "Aktualne środowisko nie obsługuje wtyczek MCP typu stdio",
|
||||
"testConnection": "Testuj połączenie",
|
||||
"testConnectionTip": "Wtyczka MCP może być używana prawidłowo po pomyślnym teście połączenia",
|
||||
"testConnectionTip": "Wtyczka MCP może być używana tylko po pomyślnym teście połączenia",
|
||||
"type": {
|
||||
"desc": "Wybierz sposób komunikacji wtyczki MCP, wersja przeglądarkowa obsługuje tylko Streamable HTTP",
|
||||
"httpFeature1": "Kompatybilność z wersją przeglądarkową i desktopową",
|
||||
"httpFeature2": "Połączenie zdalnego serwera MCP, bez potrzeby dodatkowej instalacji i konfiguracji",
|
||||
"httpShortDesc": "Protokół komunikacyjny oparty na strumieniowym HTTP",
|
||||
"desc": "Wybierz sposób komunikacji wtyczki MCP, wersja webowa obsługuje tylko Streamable HTTP",
|
||||
"httpFeature1": "Kompatybilne z wersją webową i desktopową",
|
||||
"httpFeature2": "Łączy się zdalnie z serwerem MCP, bez potrzeby dodatkowej instalacji",
|
||||
"httpShortDesc": "Protokół komunikacji oparty na strumieniowym HTTP",
|
||||
"label": "Typ wtyczki MCP",
|
||||
"stdioFeature1": "Niższe opóźnienie komunikacji, odpowiednie do lokalnego wykonania",
|
||||
"stdioFeature1": "Niższe opóźnienia komunikacji, odpowiednie do lokalnego uruchomienia",
|
||||
"stdioFeature2": "Wymaga lokalnej instalacji i uruchomienia serwera MCP",
|
||||
"stdioNotAvailable": "Tryb STDIO jest dostępny tylko w wersji desktopowej",
|
||||
"stdioShortDesc": "Protokół komunikacyjny oparty na standardowym wejściu/wyjściu",
|
||||
"stdioNotAvailable": "Tryb STDIO dostępny tylko w wersji desktopowej",
|
||||
"stdioShortDesc": "Protokół komunikacji oparty na standardowym wejściu i wyjściu",
|
||||
"title": "Typ wtyczki MCP"
|
||||
},
|
||||
"url": {
|
||||
"desc": "Wprowadź adres URL swojego serwera MCP Streamable HTTP, nie obsługuje trybu SSE",
|
||||
"invalid": "Proszę wprowadzić prawidłowy adres URL",
|
||||
"label": "URL punktu końcowego HTTP",
|
||||
"required": "Proszę wprowadzić adres URL usługi MCP"
|
||||
"desc": "Wprowadź adres Streamable HTTP swojego serwera MCP, tryb SSE nie jest obsługiwany",
|
||||
"invalid": "Proszę wprowadzić poprawny adres URL",
|
||||
"label": "URL punktu końcowego Streamable HTTP",
|
||||
"required": "Proszę wprowadzić URL usługi MCP"
|
||||
}
|
||||
},
|
||||
"meta": {
|
||||
@@ -153,13 +153,13 @@
|
||||
"label": "Autor"
|
||||
},
|
||||
"avatar": {
|
||||
"desc": "Ikona wtyczki, może być emotikonem lub adresem URL",
|
||||
"desc": "Ikona wtyczki, można użyć emoji lub URL",
|
||||
"label": "Ikona"
|
||||
},
|
||||
"description": {
|
||||
"desc": "Opis wtyczki",
|
||||
"label": "Opis",
|
||||
"placeholder": "Pobierz informacje z wyszukiwarek"
|
||||
"placeholder": "Wyszukaj informacje w wyszukiwarce"
|
||||
},
|
||||
"formFieldRequired": "To pole jest wymagane",
|
||||
"homepage": {
|
||||
@@ -167,16 +167,16 @@
|
||||
"label": "Strona główna"
|
||||
},
|
||||
"identifier": {
|
||||
"desc": "Unikalny identyfikator wtyczki, obsługuje tylko znaki alfanumeryczne, myślnik - i podkreślenie _",
|
||||
"errorDuplicate": "Identyfikator jest już używany przez inną wtyczkę, proszę zmień identyfikator",
|
||||
"desc": "Unikalny identyfikator wtyczki, automatycznie rozpoznawany z manifestu",
|
||||
"errorDuplicate": "Identyfikator jest już używany przez inną wtyczkę, zmień go",
|
||||
"label": "Identyfikator",
|
||||
"pattenErrorMessage": "Dozwolone są tylko znaki alfanumeryczne, myślnik - i podkreślenie _"
|
||||
"pattenErrorMessage": "Dozwolone są tylko litery angielskie, cyfry, - i _"
|
||||
},
|
||||
"lobe": "Wtyczka {{appName}}",
|
||||
"manifest": {
|
||||
"desc": "{{appName}} zainstaluje wtyczkę za pośrednictwem tego linku",
|
||||
"label": "Opis wtyczki (Manifest) URL",
|
||||
"preview": "Podgląd",
|
||||
"desc": "{{appName}} zainstaluje wtyczkę za pomocą tego linku",
|
||||
"label": "Plik manifestu wtyczki (Manifest) URL",
|
||||
"preview": "Podgląd manifestu",
|
||||
"refresh": "Odśwież"
|
||||
},
|
||||
"openai": "Wtyczka OpenAI",
|
||||
@@ -187,7 +187,7 @@
|
||||
}
|
||||
},
|
||||
"metaConfig": "Konfiguracja metadanych wtyczki",
|
||||
"modalDesc": "Po dodaniu niestandardowej wtyczki można jej używać do weryfikacji rozwoju wtyczki lub bezpośrednio w sesji. Proszę odnieść się do <1>dokumentacji rozwojowej↗</> dotyczącej rozwoju wtyczki.",
|
||||
"modalDesc": "Po dodaniu wtyczki niestandardowej można jej używać do testów i weryfikacji podczas tworzenia wtyczek, a także bezpośrednio w rozmowach. Dokumentacja dla twórców wtyczek: <1>Dokumentacja deweloperska↗</>",
|
||||
"openai": {
|
||||
"importUrl": "Importuj z linku URL",
|
||||
"schema": "Schemat"
|
||||
@@ -197,57 +197,57 @@
|
||||
"noParams": "To narzędzie nie ma parametrów",
|
||||
"noResults": "Nie znaleziono API spełniającego kryteria wyszukiwania",
|
||||
"params": "Parametry:",
|
||||
"searchPlaceholder": "Szukaj narzędzia..."
|
||||
"searchPlaceholder": "Szukaj narzędzi..."
|
||||
},
|
||||
"card": "Podgląd wyświetlania wtyczki",
|
||||
"card": "Podgląd wyglądu wtyczki",
|
||||
"desc": "Podgląd opisu wtyczki",
|
||||
"empty": {
|
||||
"desc": "Po zakończeniu konfiguracji będziesz mógł podglądać możliwości narzędzi wspieranych przez wtyczkę",
|
||||
"title": "Rozpocznij podgląd po skonfigurowaniu wtyczki"
|
||||
"desc": "Po skonfigurowaniu możesz tutaj zobaczyć obsługiwane funkcje wtyczki",
|
||||
"title": "Rozpocznij podgląd po konfiguracji wtyczki"
|
||||
},
|
||||
"title": "Podgląd nazwy wtyczki"
|
||||
},
|
||||
"save": "Zainstaluj wtyczkę",
|
||||
"saveSuccess": "Ustawienia wtyczki zostały pomyślnie zapisane",
|
||||
"saveSuccess": "Ustawienia wtyczki zostały zapisane pomyślnie",
|
||||
"tabs": {
|
||||
"manifest": "Opis funkcji manifestu (Manifest)",
|
||||
"manifest": "Lista funkcji (Manifest)",
|
||||
"meta": "Metadane wtyczki"
|
||||
},
|
||||
"title": {
|
||||
"create": "Dodaj niestandardową wtyczkę",
|
||||
"edit": "Edytuj niestandardową wtyczkę"
|
||||
"create": "Dodaj wtyczkę niestandardową",
|
||||
"edit": "Edytuj wtyczkę niestandardową"
|
||||
},
|
||||
"type": {
|
||||
"lobe": "Wtyczka LobeChat",
|
||||
"lobe": "Wtyczka {{appName}}",
|
||||
"openai": "Wtyczka OpenAI"
|
||||
},
|
||||
"update": "Aktualizuj",
|
||||
"updateSuccess": "Ustawienia wtyczki zostały pomyślnie zaktualizowane"
|
||||
"updateSuccess": "Ustawienia wtyczki zostały zaktualizowane pomyślnie"
|
||||
},
|
||||
"error": {
|
||||
"fetchError": "Nie udało się pobrać linku manifestu. Upewnij się, że link jest poprawny i zezwala na dostęp z innej domeny.",
|
||||
"fetchError": "Nie udało się pobrać pliku manifestu, upewnij się, że link jest poprawny i pozwala na dostęp z innych domen",
|
||||
"installError": "Instalacja wtyczki {{name}} nie powiodła się",
|
||||
"manifestInvalid": "Manifest nie spełnia specyfikacji. Wynik walidacji: \n\n {{error}}",
|
||||
"manifestInvalid": "Manifest nie spełnia wymagań, wynik walidacji: \n\n {{error}}",
|
||||
"noManifest": "Plik manifestu nie istnieje",
|
||||
"openAPIInvalid": "Analiza OpenAPI nie powiodła się. Błąd: \n\n {{error}}",
|
||||
"reinstallError": "Nie udało się odświeżyć wtyczki {{name}}",
|
||||
"openAPIInvalid": "Błąd parsowania OpenAPI: \n\n {{error}}",
|
||||
"reinstallError": "Odświeżenie wtyczki {{name}} nie powiodło się",
|
||||
"testConnectionFailed": "Nie udało się pobrać manifestu: {{error}}",
|
||||
"urlError": "Link nie zwrócił treści w formacie JSON. Upewnij się, że jest to poprawny link."
|
||||
"urlError": "Link nie zwraca zawartości w formacie JSON, upewnij się, że jest to poprawny link"
|
||||
},
|
||||
"inspector": {
|
||||
"args": "Zobacz listę parametrów",
|
||||
"args": "Zobacz listę argumentów",
|
||||
"pluginRender": "Zobacz interfejs wtyczki"
|
||||
},
|
||||
"list": {
|
||||
"item": {
|
||||
"deprecated.title": "Usunięte",
|
||||
"local.config": "Konfiguracja",
|
||||
"local.title": "Lokalne"
|
||||
"local.title": "Niestandardowe"
|
||||
}
|
||||
},
|
||||
"loading": {
|
||||
"content": "Wywoływanie wtyczki...",
|
||||
"plugin": "Wtyczka jest uruchomiona..."
|
||||
"plugin": "Wtyczka działa..."
|
||||
},
|
||||
"localSystem": {
|
||||
"apiName": {
|
||||
@@ -255,23 +255,23 @@
|
||||
"moveLocalFiles": "Przenieś pliki",
|
||||
"readLocalFile": "Odczytaj zawartość pliku",
|
||||
"renameLocalFile": "Zmień nazwę",
|
||||
"searchLocalFiles": "Szukaj plików",
|
||||
"writeLocalFile": "Zapisz plik"
|
||||
"searchLocalFiles": "Wyszukaj pliki",
|
||||
"writeLocalFile": "Zapisz do pliku"
|
||||
},
|
||||
"title": "Pliki lokalne"
|
||||
},
|
||||
"mcpInstall": {
|
||||
"CHECKING_INSTALLATION": "Sprawdzanie środowiska instalacji...",
|
||||
"COMPLETED": "Instalacja zakończona",
|
||||
"CONFIGURATION_REQUIRED": "Proszę ukończyć odpowiednią konfigurację, aby kontynuować instalację",
|
||||
"CONFIGURATION_REQUIRED": "Proszę ukończyć konfigurację, aby kontynuować instalację",
|
||||
"ERROR": "Błąd instalacji",
|
||||
"FETCHING_MANIFEST": "Pobieranie pliku manifestu wtyczki...",
|
||||
"GETTING_SERVER_MANIFEST": "Inicjalizacja serwera MCP...",
|
||||
"INSTALLING_PLUGIN": "Instalowanie wtyczki...",
|
||||
"configurationDescription": "Ta wtyczka MCP wymaga skonfigurowania parametrów, aby działać poprawnie. Proszę wprowadzić niezbędne informacje konfiguracyjne",
|
||||
"configurationDescription": "Ta wtyczka MCP wymaga konfiguracji parametrów, aby działać poprawnie. Proszę wypełnić wymagane informacje konfiguracyjne",
|
||||
"configurationRequired": "Konfiguracja parametrów wtyczki",
|
||||
"continueInstall": "Kontynuuj instalację",
|
||||
"dependenciesDescription": "Ta wtyczka wymaga zainstalowania następujących zależności systemowych, aby działać poprawnie. Proszę zainstalować brakujące zależności zgodnie z instrukcjami, a następnie kliknąć, aby ponownie sprawdzić i kontynuować instalację.",
|
||||
"dependenciesDescription": "Ta wtyczka wymaga instalacji następujących zależności systemowych, aby działać poprawnie. Proszę zainstalować brakujące zależności zgodnie z instrukcjami, a następnie kliknąć, aby ponownie sprawdzić i kontynuować instalację.",
|
||||
"dependenciesRequired": "Proszę zainstalować zależności systemowe wtyczki",
|
||||
"dependencyStatus": {
|
||||
"installed": "Zainstalowano",
|
||||
@@ -283,7 +283,7 @@
|
||||
"command": "Polecenie",
|
||||
"connectionParams": "Parametry połączenia",
|
||||
"env": "Zmienne środowiskowe",
|
||||
"errorOutput": "Dziennik błędów",
|
||||
"errorOutput": "Log błędów",
|
||||
"exitCode": "Kod wyjścia",
|
||||
"hideDetails": "Ukryj szczegóły",
|
||||
"originalError": "Oryginalny błąd",
|
||||
@@ -306,11 +306,71 @@
|
||||
"skipDependencies": "Pomiń sprawdzanie"
|
||||
},
|
||||
"pluginList": "Lista wtyczek",
|
||||
"protocolInstall": {
|
||||
"actions": {
|
||||
"install": "Zainstaluj",
|
||||
"installAnyway": "Zainstaluj mimo to",
|
||||
"installed": "Zainstalowano"
|
||||
},
|
||||
"config": {
|
||||
"args": "Argumenty",
|
||||
"command": "Polecenie",
|
||||
"env": "Zmienne środowiskowe",
|
||||
"headers": "Nagłówki",
|
||||
"title": "Informacje konfiguracyjne",
|
||||
"type": {
|
||||
"http": "Typ: HTTP",
|
||||
"label": "Typ",
|
||||
"stdio": "Typ: Stdio"
|
||||
},
|
||||
"url": "Adres usługi"
|
||||
},
|
||||
"custom": {
|
||||
"badge": "Wtyczka niestandardowa",
|
||||
"security": {
|
||||
"description": "Ta wtyczka nie została oficjalnie zweryfikowana, instalacja może wiązać się z ryzykiem bezpieczeństwa! Upewnij się, że ufasz źródłu wtyczki.",
|
||||
"title": "⚠️ Ostrzeżenie o ryzyku bezpieczeństwa"
|
||||
},
|
||||
"title": "Zainstaluj wtyczkę niestandardową"
|
||||
},
|
||||
"marketplace": {
|
||||
"title": "Zainstaluj wtyczki zewnętrzne",
|
||||
"trustedBy": "Dostarczone przez {{name}}",
|
||||
"unverified": {
|
||||
"title": "Nieweryfikowane wtyczki zewnętrzne",
|
||||
"warning": "Ta wtyczka pochodzi z nieweryfikowanego rynku zewnętrznego, przed instalacją upewnij się, że ufasz temu źródłu."
|
||||
},
|
||||
"verified": "Zweryfikowane"
|
||||
},
|
||||
"messages": {
|
||||
"connectionTestFailed": "Test połączenia nie powiódł się",
|
||||
"installError": "Instalacja wtyczki nie powiodła się, spróbuj ponownie",
|
||||
"installSuccess": "Wtyczka {{name}} została pomyślnie zainstalowana!",
|
||||
"manifestError": "Nie udało się pobrać szczegółów wtyczki, sprawdź połączenie sieciowe i spróbuj ponownie",
|
||||
"manifestNotFound": "Nie udało się pobrać pliku manifestu wtyczki"
|
||||
},
|
||||
"meta": {
|
||||
"author": "Autor",
|
||||
"homepage": "Strona główna",
|
||||
"identifier": "Identyfikator",
|
||||
"source": "Źródło",
|
||||
"version": "Wersja"
|
||||
},
|
||||
"official": {
|
||||
"badge": "Oficjalna wtyczka LobeHub",
|
||||
"description": "Ta wtyczka jest rozwijana i utrzymywana przez LobeHub, przeszła rygorystyczne kontrole bezpieczeństwa i jest bezpieczna w użyciu.",
|
||||
"loadingMessage": "Pobieranie szczegółów wtyczki...",
|
||||
"loadingTitle": "Ładowanie",
|
||||
"title": "Zainstaluj oficjalną wtyczkę"
|
||||
},
|
||||
"title": "Instaluj wtyczkę MCP",
|
||||
"warning": "⚠️ Upewnij się, że ufasz źródłu tej wtyczki, złośliwe wtyczki mogą zagrozić bezpieczeństwu Twojego systemu."
|
||||
},
|
||||
"search": {
|
||||
"apiName": {
|
||||
"crawlMultiPages": "Odczytaj zawartość wielu stron",
|
||||
"crawlSinglePage": "Odczytaj zawartość strony",
|
||||
"search": "Szukaj strony"
|
||||
"search": "Wyszukaj stronę"
|
||||
},
|
||||
"config": {
|
||||
"addKey": "Dodaj klucz",
|
||||
@@ -322,22 +382,22 @@
|
||||
"detail": {
|
||||
"preview": "Podgląd",
|
||||
"raw": "Tekst źródłowy",
|
||||
"tooLong": "Treść tekstu jest zbyt długa, kontekst rozmowy zachowuje tylko pierwsze {{characters}} znaków, a nadmiar nie jest uwzględniany w kontekście rozmowy"
|
||||
"tooLong": "Zawartość tekstu jest zbyt długa, kontekst rozmowy zachowuje tylko pierwsze {{characters}} znaków, reszta nie jest uwzględniana"
|
||||
},
|
||||
"meta": {
|
||||
"crawler": "Tryb przeszukiwania",
|
||||
"crawler": "Tryb pobierania",
|
||||
"words": "Liczba znaków"
|
||||
}
|
||||
},
|
||||
"searchxng": {
|
||||
"baseURL": "Wprowadź",
|
||||
"description": "Wprowadź adres URL SearchXNG, aby rozpocząć wyszukiwanie w sieci",
|
||||
"baseURL": "Wprowadź adres",
|
||||
"description": "Wprowadź adres SearchXNG, aby rozpocząć wyszukiwanie online",
|
||||
"keyPlaceholder": "Wprowadź klucz",
|
||||
"title": "Konfiguracja silnika wyszukiwania SearchXNG",
|
||||
"unconfiguredDesc": "Skontaktuj się z administratorem, aby zakończyć konfigurację silnika wyszukiwania SearchXNG i rozpocząć wyszukiwanie w sieci",
|
||||
"unconfiguredTitle": "Silnik wyszukiwania SearchXNG nie jest jeszcze skonfigurowany"
|
||||
"title": "Konfiguracja wyszukiwarki SearchXNG",
|
||||
"unconfiguredDesc": "Skontaktuj się z administratorem, aby skonfigurować wyszukiwarkę SearchXNG i rozpocząć wyszukiwanie online",
|
||||
"unconfiguredTitle": "SearchXNG nie jest skonfigurowany"
|
||||
},
|
||||
"title": "Wyszukiwanie w sieci"
|
||||
"title": "Wyszukiwanie online"
|
||||
},
|
||||
"setting": "Ustawienia wtyczki",
|
||||
"settings": {
|
||||
@@ -351,60 +411,60 @@
|
||||
"title": "Konfiguracja wtyczki"
|
||||
},
|
||||
"connection": {
|
||||
"args": "Parametry uruchomienia",
|
||||
"command": "Polecenie uruchomienia",
|
||||
"args": "Argumenty startowe",
|
||||
"command": "Polecenie startowe",
|
||||
"title": "Informacje o połączeniu",
|
||||
"type": "Typ połączenia",
|
||||
"url": "Adres usługi"
|
||||
},
|
||||
"edit": "Edytuj",
|
||||
"envConfigDescription": "Te ustawienia zostaną przekazane jako zmienne środowiskowe podczas uruchamiania serwera MCP",
|
||||
"httpTypeNotice": "Wtyczki MCP typu HTTP nie wymagają obecnie konfiguracji zmiennych środowiskowych",
|
||||
"httpTypeNotice": "Wtyczki MCP typu HTTP nie wymagają konfiguracji zmiennych środowiskowych",
|
||||
"indexUrl": {
|
||||
"title": "Indeks sklepu",
|
||||
"tooltip": "Edycja nie jest obecnie obsługiwana"
|
||||
"title": "Indeks rynku",
|
||||
"tooltip": "Edycja online nie jest obecnie obsługiwana, ustaw przez zmienne środowiskowe podczas wdrażania"
|
||||
},
|
||||
"messages": {
|
||||
"connectionUpdateFailed": "Aktualizacja informacji o połączeniu nie powiodła się",
|
||||
"connectionUpdateSuccess": "Informacje o połączeniu zostały pomyślnie zaktualizowane",
|
||||
"connectionUpdateSuccess": "Informacje o połączeniu zostały zaktualizowane",
|
||||
"envUpdateFailed": "Zapis zmiennych środowiskowych nie powiódł się",
|
||||
"envUpdateSuccess": "Zmienna środowiskowa została pomyślnie zapisana"
|
||||
"envUpdateSuccess": "Zmienna środowiskowa została zapisana pomyślnie"
|
||||
},
|
||||
"modalDesc": "Po skonfigurowaniu adresu sklepu wtyczek możesz korzystać z niestandardowego sklepu wtyczek",
|
||||
"modalDesc": "Po skonfigurowaniu adresu rynku wtyczek możesz korzystać z niestandardowego rynku wtyczek",
|
||||
"rules": {
|
||||
"argsRequired": "Proszę wprowadzić parametry uruchamiania",
|
||||
"commandRequired": "Proszę wprowadzić polecenie uruchamiania",
|
||||
"argsRequired": "Proszę wprowadzić argumenty startowe",
|
||||
"commandRequired": "Proszę wprowadzić polecenie startowe",
|
||||
"urlRequired": "Proszę wprowadzić adres usługi"
|
||||
},
|
||||
"saveSettings": "Zapisz ustawienia",
|
||||
"title": "Skonfiguruj sklep wtyczek"
|
||||
"title": "Ustawienia rynku wtyczek"
|
||||
},
|
||||
"showInPortal": "Proszę sprawdzić szczegóły w obszarze roboczym",
|
||||
"showInPortal": "Proszę zobaczyć szczegóły w obszarze roboczym",
|
||||
"store": {
|
||||
"actions": {
|
||||
"cancel": "Anuluj instalację",
|
||||
"confirmUninstall": "Wtyczka zostanie odinstalowana. Po odinstalowaniu konfiguracja wtyczki zostanie wyczyszczona. Potwierdź swoje działanie.",
|
||||
"confirmUninstall": "Wtyczka zostanie odinstalowana, a jej konfiguracja usunięta. Potwierdź operację",
|
||||
"detail": "Szczegóły",
|
||||
"install": "Instaluj",
|
||||
"install": "Zainstaluj",
|
||||
"manifest": "Edytuj plik instalacyjny",
|
||||
"settings": "Ustawienia",
|
||||
"uninstall": "Odinstaluj"
|
||||
},
|
||||
"communityPlugin": "Wtyczka społecznościowa",
|
||||
"customPlugin": "Niestandardowa wtyczka",
|
||||
"communityPlugin": "Społeczność zewnętrzna",
|
||||
"customPlugin": "Niestandardowa",
|
||||
"empty": "Brak zainstalowanych wtyczek",
|
||||
"emptySelectHint": "Wybierz wtyczkę, aby wyświetlić szczegóły",
|
||||
"emptySelectHint": "Wybierz wtyczkę, aby zobaczyć szczegóły",
|
||||
"installAllPlugins": "Zainstaluj wszystkie",
|
||||
"networkError": "Nie udało się pobrać sklepu wtyczek. Sprawdź swoje połączenie sieciowe i spróbuj ponownie",
|
||||
"placeholder": "Szukaj nazwy wtyczki, opisu lub słowa kluczowego...",
|
||||
"releasedAt": "Wydane {{createdAt}}",
|
||||
"networkError": "Nie udało się pobrać sklepu z wtyczkami, sprawdź połączenie sieciowe i spróbuj ponownie",
|
||||
"placeholder": "Wyszukaj nazwę, opis lub słowa kluczowe wtyczki...",
|
||||
"releasedAt": "Opublikowano {{createdAt}}",
|
||||
"tabs": {
|
||||
"installed": "Zainstalowane",
|
||||
"mcp": "Wtyczka MCP",
|
||||
"mcp": "Wtyczki MCP",
|
||||
"old": "Wtyczki LobeChat"
|
||||
},
|
||||
"title": "Sklep wtyczek"
|
||||
"title": "Sklep z wtyczkami"
|
||||
},
|
||||
"unknownError": "Nieznany błąd",
|
||||
"unknownPlugin": "nieznana wtyczka"
|
||||
"unknownPlugin": "Nieznana wtyczka"
|
||||
}
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
{
|
||||
"confirm": "Confirmar",
|
||||
"debug": {
|
||||
"arguments": "Argumentos de Chamada",
|
||||
"function_call": "Chamada de Função",
|
||||
"off": "Desativar Depuração",
|
||||
"on": "Ver Informações de Chamada de Plugin",
|
||||
"payload": "carga do plugin",
|
||||
"arguments": "Parâmetros de chamada",
|
||||
"function_call": "Chamada de função",
|
||||
"off": "Desativar depuração",
|
||||
"on": "Ver informações de chamadas de plugin",
|
||||
"payload": "Carga útil do plugin",
|
||||
"pluginState": "Estado do plugin",
|
||||
"response": "Resposta",
|
||||
"title": "Detalhes do Plugin",
|
||||
"tool_call": "solicitação de chamada de ferramenta"
|
||||
"response": "Resultado retornado",
|
||||
"title": "Detalhes do plugin",
|
||||
"tool_call": "Solicitação de chamada de ferramenta"
|
||||
},
|
||||
"detailModal": {
|
||||
"customPlugin": {
|
||||
@@ -18,7 +18,7 @@
|
||||
"title": "Este é um plugin personalizado"
|
||||
},
|
||||
"emptyState": {
|
||||
"description": "Por favor, instale este plugin para visualizar suas funcionalidades e opções de configuração",
|
||||
"description": "Por favor, instale este plugin primeiro para ver suas capacidades e opções de configuração",
|
||||
"title": "Veja os detalhes do plugin após a instalação"
|
||||
},
|
||||
"info": {
|
||||
@@ -26,17 +26,17 @@
|
||||
"name": "Nome da API"
|
||||
},
|
||||
"tabs": {
|
||||
"info": "Capacidades do Plugin",
|
||||
"manifest": "Arquivo de Instalação",
|
||||
"info": "Capacidades do plugin",
|
||||
"manifest": "Arquivo de instalação",
|
||||
"settings": "Configurações"
|
||||
},
|
||||
"title": "Detalhes do Plugin"
|
||||
"title": "Detalhes do plugin"
|
||||
},
|
||||
"dev": {
|
||||
"confirmDeleteDevPlugin": "Tem certeza de que deseja excluir este plugin local? Esta ação não poderá ser desfeita.",
|
||||
"confirmDeleteDevPlugin": "Este plugin local será excluído e não poderá ser recuperado. Deseja realmente excluir este plugin?",
|
||||
"customParams": {
|
||||
"useProxy": {
|
||||
"label": "Instalar via Proxy (se ocorrer erro de acesso entre domínios, tente ativar esta opção e reinstalar)"
|
||||
"label": "Instalar via proxy (se ocorrer erro de acesso cross-origin, tente ativar esta opção e reinstalar)"
|
||||
}
|
||||
},
|
||||
"deleteSuccess": "Plugin excluído com sucesso",
|
||||
@@ -48,33 +48,33 @@
|
||||
"mode": {
|
||||
"mcp": "Plugin MCP",
|
||||
"mcpExp": "Experimental",
|
||||
"url": "Link Online"
|
||||
"url": "Link online"
|
||||
},
|
||||
"name": {
|
||||
"desc": "Título do plugin",
|
||||
"label": "Título",
|
||||
"placeholder": "Pesquisar mecanismo de busca"
|
||||
"placeholder": "Motor de busca"
|
||||
}
|
||||
},
|
||||
"mcp": {
|
||||
"advanced": {
|
||||
"title": "Configurações Avançadas"
|
||||
"title": "Configurações avançadas"
|
||||
},
|
||||
"args": {
|
||||
"desc": "Lista de parâmetros a serem passados para o comando de execução, geralmente aqui se insere o nome do servidor MCP ou o caminho do script de inicialização",
|
||||
"desc": "Lista de parâmetros passados para o comando de execução, geralmente insira aqui o nome do servidor MCP ou o caminho do script de inicialização",
|
||||
"label": "Parâmetros do comando",
|
||||
"placeholder": "Por exemplo: --port 8080 --debug",
|
||||
"placeholder": "Exemplo: mcp-hello-world",
|
||||
"required": "Por favor, insira os parâmetros de inicialização"
|
||||
},
|
||||
"auth": {
|
||||
"bear": "Chave API",
|
||||
"desc": "Selecione o método de autenticação do servidor MCP",
|
||||
"bear": "API Key",
|
||||
"desc": "Escolha o método de autenticação do servidor MCP",
|
||||
"label": "Tipo de autenticação",
|
||||
"none": "Sem autenticação",
|
||||
"placeholder": "Por favor, selecione o tipo de autenticação",
|
||||
"token": {
|
||||
"desc": "Insira sua Chave API ou Token Bearer",
|
||||
"label": "Chave API",
|
||||
"desc": "Insira sua API Key ou Bearer Token",
|
||||
"label": "API Key",
|
||||
"placeholder": "sk-xxxxx",
|
||||
"required": "Por favor, insira o token de autenticação"
|
||||
}
|
||||
@@ -83,67 +83,67 @@
|
||||
"label": "Ícone do plugin"
|
||||
},
|
||||
"command": {
|
||||
"desc": "Arquivo executável ou script usado para iniciar o plugin MCP STDIO",
|
||||
"desc": "Arquivo executável ou script usado para iniciar o MCP STDIO Server",
|
||||
"label": "Comando",
|
||||
"placeholder": "Por exemplo: python main.py ou /caminho/para/executável",
|
||||
"placeholder": "Exemplo: npx / uv / docker etc.",
|
||||
"required": "Por favor, insira o comando de inicialização"
|
||||
},
|
||||
"desc": {
|
||||
"desc": "Descrição do plugin",
|
||||
"desc": "Adicione uma descrição para o plugin",
|
||||
"label": "Descrição do plugin",
|
||||
"placeholder": "Adicione informações sobre o uso e cenários do plugin"
|
||||
"placeholder": "Complementar informações sobre uso e cenários do plugin"
|
||||
},
|
||||
"endpoint": {
|
||||
"desc": "Insira o endereço do seu Servidor HTTP Streamable MCP",
|
||||
"desc": "Insira o endereço do seu MCP Streamable HTTP Server",
|
||||
"label": "URL do Endpoint MCP"
|
||||
},
|
||||
"env": {
|
||||
"add": "Adicionar uma linha",
|
||||
"desc": "Insira as variáveis de ambiente necessárias para o seu servidor MCP",
|
||||
"desc": "Insira as variáveis de ambiente necessárias para o servidor MCP",
|
||||
"duplicateKeyError": "A chave do campo deve ser única",
|
||||
"formValidationFailed": "Validação do formulário falhou, verifique o formato dos parâmetros",
|
||||
"formValidationFailed": "Falha na validação do formulário, por favor verifique o formato dos parâmetros",
|
||||
"keyRequired": "A chave do campo não pode estar vazia",
|
||||
"label": "Variáveis de ambiente do servidor MCP",
|
||||
"stringifyError": "Não foi possível serializar os parâmetros, verifique o formato dos parâmetros"
|
||||
"stringifyError": "Não foi possível serializar os parâmetros, por favor verifique o formato"
|
||||
},
|
||||
"headers": {
|
||||
"add": "Adicionar uma linha",
|
||||
"desc": "Insira os cabeçalhos da requisição",
|
||||
"desc": "Insira os cabeçalhos HTTP",
|
||||
"label": "Cabeçalhos HTTP"
|
||||
},
|
||||
"identifier": {
|
||||
"desc": "Dê um nome ao seu plugin MCP, deve usar caracteres em inglês",
|
||||
"invalid": "Somente caracteres em inglês, números, - e _ são permitidos",
|
||||
"desc": "Defina um nome para seu plugin MCP, deve usar caracteres em inglês",
|
||||
"invalid": "O identificador só pode conter letras, números, hífens e sublinhados",
|
||||
"label": "Nome do plugin MCP",
|
||||
"placeholder": "Por exemplo: meu-plugin-mcp",
|
||||
"placeholder": "Exemplo: my-mcp-plugin",
|
||||
"required": "Por favor, insira o identificador do serviço MCP"
|
||||
},
|
||||
"previewManifest": "Pré-visualizar arquivo de descrição do plugin",
|
||||
"quickImport": "Importar configuração JSON rapidamente",
|
||||
"previewManifest": "Visualizar arquivo de descrição do plugin",
|
||||
"quickImport": "Importação rápida de configuração JSON",
|
||||
"quickImportError": {
|
||||
"empty": "O conteúdo de entrada não pode estar vazio",
|
||||
"empty": "O conteúdo não pode estar vazio",
|
||||
"invalidJson": "Formato JSON inválido",
|
||||
"invalidStructure": "Estrutura JSON inválida"
|
||||
"invalidStructure": "Formato JSON inválido"
|
||||
},
|
||||
"stdioNotSupported": "O ambiente atual não suporta plugins MCP do tipo stdio",
|
||||
"testConnection": "Testar conexão",
|
||||
"testConnectionTip": "O plugin MCP só pode ser usado normalmente após a conexão ser testada com sucesso",
|
||||
"testConnectionTip": "O plugin MCP só pode ser usado normalmente após o teste de conexão ser bem-sucedido",
|
||||
"type": {
|
||||
"desc": "Escolha o método de comunicação do plugin MCP, a versão web suporta apenas Streamable HTTP",
|
||||
"httpFeature1": "Compatível com a versão web e desktop",
|
||||
"httpFeature2": "Conectar ao servidor MCP remoto, sem necessidade de instalação ou configuração adicional",
|
||||
"desc": "Escolha o modo de comunicação do plugin MCP, a versão web suporta apenas Streamable HTTP",
|
||||
"httpFeature1": "Compatível com versão web e desktop",
|
||||
"httpFeature2": "Conecta ao servidor MCP remoto, sem necessidade de instalação adicional",
|
||||
"httpShortDesc": "Protocolo de comunicação baseado em HTTP streaming",
|
||||
"label": "Tipo de plugin MCP",
|
||||
"stdioFeature1": "Menor latência de comunicação, adequado para execução local",
|
||||
"stdioFeature2": "É necessário instalar e executar o servidor MCP localmente",
|
||||
"stdioNotAvailable": "O modo STDIO está disponível apenas na versão desktop",
|
||||
"stdioFeature2": "Requer instalação e execução local do servidor MCP",
|
||||
"stdioNotAvailable": "Modo STDIO disponível apenas na versão desktop",
|
||||
"stdioShortDesc": "Protocolo de comunicação baseado em entrada e saída padrão",
|
||||
"title": "Tipo de plugin MCP"
|
||||
},
|
||||
"url": {
|
||||
"desc": "Insira o endereço HTTP transmitível do seu servidor MCP, o modo SSE não é suportado",
|
||||
"desc": "Insira o endereço Streamable HTTP do seu servidor MCP, modo SSE não suportado",
|
||||
"invalid": "Por favor, insira um URL válido",
|
||||
"label": "URL do Endpoint HTTP",
|
||||
"label": "URL do Endpoint Streamable HTTP",
|
||||
"required": "Por favor, insira o URL do serviço MCP"
|
||||
}
|
||||
},
|
||||
@@ -153,41 +153,41 @@
|
||||
"label": "Autor"
|
||||
},
|
||||
"avatar": {
|
||||
"desc": "Ícone do plugin, pode ser um Emoji ou um URL",
|
||||
"desc": "Ícone do plugin, pode usar Emoji ou URL",
|
||||
"label": "Ícone"
|
||||
},
|
||||
"description": {
|
||||
"desc": "Descrição do plugin",
|
||||
"label": "Descrição",
|
||||
"placeholder": "Obter informações de um mecanismo de busca"
|
||||
"placeholder": "Pesquise em motores de busca para obter informações"
|
||||
},
|
||||
"formFieldRequired": "Este campo é obrigatório",
|
||||
"homepage": {
|
||||
"desc": "Página inicial do plugin",
|
||||
"label": "Página Inicial"
|
||||
"label": "Página inicial"
|
||||
},
|
||||
"identifier": {
|
||||
"desc": "Identificador único do plugin, será automaticamente reconhecido a partir do manifesto",
|
||||
"errorDuplicate": "Identificador duplicado com um plugin existente, por favor modifique o identificador",
|
||||
"desc": "Identificador único do plugin, será reconhecido automaticamente a partir do manifest",
|
||||
"errorDuplicate": "Identificador duplicado com outro plugin existente, por favor modifique",
|
||||
"label": "Identificador",
|
||||
"pattenErrorMessage": "Apenas caracteres alfanuméricos, - e _ são permitidos"
|
||||
"pattenErrorMessage": "Só pode conter caracteres em inglês, números, - e _"
|
||||
},
|
||||
"lobe": "Plugin {{appName}}",
|
||||
"manifest": {
|
||||
"desc": "{{appName}} será instalado através deste link para adicionar o plugin",
|
||||
"label": "URL do Arquivo de Descrição do Plugin (Manifest)",
|
||||
"preview": "Visualizar Manifesto",
|
||||
"desc": "{{appName}} instalará o plugin através deste link",
|
||||
"label": "Arquivo de descrição do plugin (Manifest) URL",
|
||||
"preview": "Visualizar Manifest",
|
||||
"refresh": "Atualizar"
|
||||
},
|
||||
"openai": "Plugin OpenAI",
|
||||
"title": {
|
||||
"desc": "Título do plugin",
|
||||
"label": "Título",
|
||||
"placeholder": "Pesquisar mecanismo de busca"
|
||||
"placeholder": "Motor de busca"
|
||||
}
|
||||
},
|
||||
"metaConfig": "Configuração de Metadados do Plugin",
|
||||
"modalDesc": "Após adicionar um plugin personalizado, ele pode ser usado para validação de desenvolvimento de plugin ou diretamente em uma conversa. Consulte o <1>documento de desenvolvimento↗</> para desenvolver plugins.",
|
||||
"metaConfig": "Configuração de metadados do plugin",
|
||||
"modalDesc": "Após adicionar um plugin personalizado, ele pode ser usado para desenvolvimento e validação, ou diretamente em conversas. Para desenvolvimento de plugins, consulte a <1>documentação de desenvolvimento↗</>.",
|
||||
"openai": {
|
||||
"importUrl": "Importar a partir de URL",
|
||||
"schema": "Esquema"
|
||||
@@ -195,59 +195,59 @@
|
||||
"preview": {
|
||||
"api": {
|
||||
"noParams": "Esta ferramenta não possui parâmetros",
|
||||
"noResults": "Nenhuma API correspondente aos critérios de pesquisa foi encontrada",
|
||||
"noResults": "Nenhuma API encontrada que corresponda aos critérios de busca",
|
||||
"params": "Parâmetros:",
|
||||
"searchPlaceholder": "Pesquisar ferramenta..."
|
||||
},
|
||||
"card": "Visualizar Efeito do Plugin",
|
||||
"desc": "Visualizar Descrição do Plugin",
|
||||
"card": "Visualizar efeito de exibição do plugin",
|
||||
"desc": "Visualizar descrição do plugin",
|
||||
"empty": {
|
||||
"desc": "Após concluir a configuração, você poderá visualizar as capacidades da ferramenta suportadas pelo plugin aqui",
|
||||
"desc": "Após a configuração, você poderá visualizar aqui as capacidades das ferramentas suportadas pelo plugin",
|
||||
"title": "Comece a visualizar após configurar o plugin"
|
||||
},
|
||||
"title": "Visualizar Nome do Plugin"
|
||||
"title": "Visualização do nome do plugin"
|
||||
},
|
||||
"save": "Instalar Plugin",
|
||||
"save": "Instalar plugin",
|
||||
"saveSuccess": "Configurações do plugin salvas com sucesso",
|
||||
"tabs": {
|
||||
"manifest": "Lista de Descrição de Funcionalidades (Manifest)",
|
||||
"meta": "Metadados do Plugin"
|
||||
"manifest": "Lista de funcionalidades (Manifest)",
|
||||
"meta": "Metadados do plugin"
|
||||
},
|
||||
"title": {
|
||||
"create": "Adicionar Plugin Personalizado",
|
||||
"edit": "Editar Plugin Personalizado"
|
||||
"create": "Adicionar plugin personalizado",
|
||||
"edit": "Editar plugin personalizado"
|
||||
},
|
||||
"type": {
|
||||
"lobe": "Plugin LobeChat",
|
||||
"lobe": "Plugin {{appName}}",
|
||||
"openai": "Plugin OpenAI"
|
||||
},
|
||||
"update": "Atualizar",
|
||||
"updateSuccess": "Configurações do plugin atualizadas com sucesso"
|
||||
},
|
||||
"error": {
|
||||
"fetchError": "Falha ao buscar o link do manifesto. Certifique-se de que o link é válido e permita o acesso entre domínios.",
|
||||
"installError": "Falha na instalação do plugin {{name}}.",
|
||||
"manifestInvalid": "O manifesto não está em conformidade com as especificações. Resultado da validação: \n\n {{error}}",
|
||||
"noManifest": "Manifesto não encontrado",
|
||||
"openAPIInvalid": "Falha ao analisar o OpenAPI. Erro: \n\n {{error}}",
|
||||
"fetchError": "Falha ao solicitar o link do manifest, por favor verifique a validade do link e se permite acesso cross-origin",
|
||||
"installError": "Falha na instalação do plugin {{name}}",
|
||||
"manifestInvalid": "Manifest não está conforme o padrão, resultado da validação: \n\n {{error}}",
|
||||
"noManifest": "Arquivo de descrição não encontrado",
|
||||
"openAPIInvalid": "Falha na análise do OpenAPI, erro: \n\n {{error}}",
|
||||
"reinstallError": "Falha ao atualizar o plugin {{name}}",
|
||||
"testConnectionFailed": "Falha ao obter o Manifest: {{error}}",
|
||||
"urlError": "O link não retornou conteúdo no formato JSON. Certifique-se de que o link é válido."
|
||||
"testConnectionFailed": "Falha ao obter Manifest: {{error}}",
|
||||
"urlError": "O link não retornou conteúdo em formato JSON, por favor verifique se é um link válido"
|
||||
},
|
||||
"inspector": {
|
||||
"args": "Ver parâmetros",
|
||||
"args": "Ver lista de parâmetros",
|
||||
"pluginRender": "Ver interface do plugin"
|
||||
},
|
||||
"list": {
|
||||
"item": {
|
||||
"deprecated.title": "Obsoleto",
|
||||
"deprecated.title": "Removido",
|
||||
"local.config": "Configuração",
|
||||
"local.title": "Personalizado"
|
||||
}
|
||||
},
|
||||
"loading": {
|
||||
"content": "Carregando o plugin...",
|
||||
"plugin": "Executando o plugin..."
|
||||
"content": "Chamando plugin...",
|
||||
"plugin": "Plugin em execução..."
|
||||
},
|
||||
"localSystem": {
|
||||
"apiName": {
|
||||
@@ -256,23 +256,23 @@
|
||||
"readLocalFile": "Ler conteúdo do arquivo",
|
||||
"renameLocalFile": "Renomear",
|
||||
"searchLocalFiles": "Pesquisar arquivos",
|
||||
"writeLocalFile": "Escrever no arquivo"
|
||||
"writeLocalFile": "Escrever arquivo"
|
||||
},
|
||||
"title": "Arquivos Locais"
|
||||
"title": "Arquivos locais"
|
||||
},
|
||||
"mcpInstall": {
|
||||
"CHECKING_INSTALLATION": "Verificando ambiente de instalação...",
|
||||
"COMPLETED": "Instalação concluída",
|
||||
"CONFIGURATION_REQUIRED": "Por favor, complete as configurações necessárias antes de continuar a instalação",
|
||||
"CONFIGURATION_REQUIRED": "Por favor, complete as configurações necessárias para continuar a instalação",
|
||||
"ERROR": "Erro na instalação",
|
||||
"FETCHING_MANIFEST": "Obtendo arquivo de descrição do plugin...",
|
||||
"GETTING_SERVER_MANIFEST": "Inicializando servidor MCP...",
|
||||
"INSTALLING_PLUGIN": "Instalando plugin...",
|
||||
"configurationDescription": "Este plugin MCP requer parâmetros de configuração para funcionar corretamente. Por favor, preencha as informações necessárias.",
|
||||
"configurationDescription": "Este plugin MCP requer parâmetros de configuração para funcionar corretamente, por favor preencha as informações necessárias",
|
||||
"configurationRequired": "Configurar parâmetros do plugin",
|
||||
"continueInstall": "Continuar instalação",
|
||||
"dependenciesDescription": "Este plugin requer a instalação das seguintes dependências do sistema para funcionar corretamente. Por favor, instale as dependências ausentes conforme as instruções e clique em verificar novamente para continuar a instalação.",
|
||||
"dependenciesRequired": "Por favor, instale as dependências do sistema para o plugin",
|
||||
"dependenciesDescription": "Este plugin requer as seguintes dependências do sistema para funcionar corretamente. Por favor, instale as dependências ausentes conforme as instruções e clique em verificar novamente para continuar a instalação.",
|
||||
"dependenciesRequired": "Por favor, instale as dependências do sistema do plugin",
|
||||
"dependencyStatus": {
|
||||
"installed": "Instalado",
|
||||
"notInstalled": "Não instalado",
|
||||
@@ -302,44 +302,104 @@
|
||||
"manual": "Instalação manual:",
|
||||
"recommended": "Método recomendado de instalação:"
|
||||
},
|
||||
"recheckDependencies": "Verificar novamente",
|
||||
"recheckDependencies": "Verificar dependências novamente",
|
||||
"skipDependencies": "Pular verificação"
|
||||
},
|
||||
"pluginList": "Lista de Plugins",
|
||||
"pluginList": "Lista de plugins",
|
||||
"protocolInstall": {
|
||||
"actions": {
|
||||
"install": "Instalar",
|
||||
"installAnyway": "Instalar mesmo assim",
|
||||
"installed": "Instalado"
|
||||
},
|
||||
"config": {
|
||||
"args": "Parâmetros",
|
||||
"command": "Comando",
|
||||
"env": "Variáveis de ambiente",
|
||||
"headers": "Cabeçalhos",
|
||||
"title": "Informações de configuração",
|
||||
"type": {
|
||||
"http": "Tipo: HTTP",
|
||||
"label": "Tipo",
|
||||
"stdio": "Tipo: Stdio"
|
||||
},
|
||||
"url": "Endereço do serviço"
|
||||
},
|
||||
"custom": {
|
||||
"badge": "Plugin personalizado",
|
||||
"security": {
|
||||
"description": "Este plugin não foi verificado oficialmente, a instalação pode apresentar riscos de segurança! Por favor, certifique-se de confiar na fonte do plugin.",
|
||||
"title": "⚠️ Aviso de risco de segurança"
|
||||
},
|
||||
"title": "Instalar plugin personalizado"
|
||||
},
|
||||
"marketplace": {
|
||||
"title": "Instalar plugins de terceiros",
|
||||
"trustedBy": "Fornecido por {{name}}",
|
||||
"unverified": {
|
||||
"title": "Plugin de terceiros não verificado",
|
||||
"warning": "Este plugin vem de um mercado de terceiros não verificado, por favor confirme que confia na fonte antes de instalar."
|
||||
},
|
||||
"verified": "Verificado"
|
||||
},
|
||||
"messages": {
|
||||
"connectionTestFailed": "Falha no teste de conexão",
|
||||
"installError": "Falha na instalação do plugin, por favor tente novamente",
|
||||
"installSuccess": "Plugin {{name}} instalado com sucesso!",
|
||||
"manifestError": "Falha ao obter detalhes do plugin, por favor verifique a conexão de rede e tente novamente",
|
||||
"manifestNotFound": "Não foi possível obter o arquivo de descrição do plugin"
|
||||
},
|
||||
"meta": {
|
||||
"author": "Autor",
|
||||
"homepage": "Página inicial",
|
||||
"identifier": "Identificador",
|
||||
"source": "Fonte",
|
||||
"version": "Versão"
|
||||
},
|
||||
"official": {
|
||||
"badge": "Plugin oficial LobeHub",
|
||||
"description": "Este plugin é desenvolvido e mantido oficialmente pela LobeHub, passou por rigorosa auditoria de segurança e pode ser usado com confiança.",
|
||||
"loadingMessage": "Obtendo detalhes do plugin...",
|
||||
"loadingTitle": "Carregando",
|
||||
"title": "Instalar plugin oficial"
|
||||
},
|
||||
"title": "Instalar plugin MCP",
|
||||
"warning": "⚠️ Por favor, confirme que confia na fonte deste plugin, plugins maliciosos podem comprometer a segurança do seu sistema."
|
||||
},
|
||||
"search": {
|
||||
"apiName": {
|
||||
"crawlMultiPages": "Ler o conteúdo de várias páginas",
|
||||
"crawlMultiPages": "Ler conteúdo de várias páginas",
|
||||
"crawlSinglePage": "Ler conteúdo da página",
|
||||
"search": "Pesquisar página"
|
||||
},
|
||||
"config": {
|
||||
"addKey": "Adicionar chave",
|
||||
"close": "Remover",
|
||||
"confirm": "Configuração concluída, tente novamente"
|
||||
"confirm": "Configuração concluída e tentar novamente"
|
||||
},
|
||||
"crawPages": {
|
||||
"crawling": "Reconhecendo links",
|
||||
"detail": {
|
||||
"preview": "Prévia",
|
||||
"preview": "Visualizar",
|
||||
"raw": "Texto original",
|
||||
"tooLong": "O conteúdo do texto é muito longo, o contexto da conversa manterá apenas os primeiros {{characters}} caracteres, e a parte excedente não será considerada no contexto da conversa"
|
||||
"tooLong": "O conteúdo do texto é muito longo, o contexto da conversa manterá apenas os primeiros {{characters}} caracteres, o restante não será incluído."
|
||||
},
|
||||
"meta": {
|
||||
"crawler": "Modo de Rastreamento",
|
||||
"crawler": "Modo de captura",
|
||||
"words": "Número de caracteres"
|
||||
}
|
||||
},
|
||||
"searchxng": {
|
||||
"baseURL": "Digite",
|
||||
"description": "Digite o URL do SearchXNG para começar a pesquisa na internet",
|
||||
"keyPlaceholder": "Digite a chave",
|
||||
"title": "Configurar o mecanismo de busca SearchXNG",
|
||||
"unconfiguredDesc": "Por favor, entre em contato com o administrador para concluir a configuração do mecanismo de busca SearchXNG e começar a pesquisa na internet",
|
||||
"unconfiguredTitle": "Mecanismo de busca SearchXNG ainda não configurado"
|
||||
"baseURL": "Por favor, insira",
|
||||
"description": "Insira o endereço do SearchXNG para começar a pesquisa online",
|
||||
"keyPlaceholder": "Por favor, insira a chave",
|
||||
"title": "Configurar motor de busca SearchXNG",
|
||||
"unconfiguredDesc": "Por favor, contate o administrador para configurar o motor de busca SearchXNG para começar a pesquisa online",
|
||||
"unconfiguredTitle": "SearchXNG não configurado"
|
||||
},
|
||||
"title": "Pesquisa na internet"
|
||||
"title": "Pesquisa online"
|
||||
},
|
||||
"setting": "Configuração do Plugin",
|
||||
"setting": "Configurações do plugin",
|
||||
"settings": {
|
||||
"capabilities": {
|
||||
"prompts": "Prompts",
|
||||
@@ -359,51 +419,51 @@
|
||||
},
|
||||
"edit": "Editar",
|
||||
"envConfigDescription": "Estas configurações serão passadas como variáveis de ambiente para o processo ao iniciar o servidor MCP",
|
||||
"httpTypeNotice": "Plugins MCP do tipo HTTP não possuem variáveis de ambiente para configurar no momento",
|
||||
"httpTypeNotice": "Plugins MCP do tipo HTTP não requerem variáveis de ambiente para configuração",
|
||||
"indexUrl": {
|
||||
"title": "Índice do Mercado",
|
||||
"tooltip": "Edição online não suportada. Configure através de variáveis de ambiente durante a implantação."
|
||||
"title": "Índice do mercado",
|
||||
"tooltip": "Edição online não suportada, por favor configure via variável de ambiente durante a implantação"
|
||||
},
|
||||
"messages": {
|
||||
"connectionUpdateFailed": "Falha ao atualizar as informações de conexão",
|
||||
"connectionUpdateFailed": "Falha ao atualizar informações de conexão",
|
||||
"connectionUpdateSuccess": "Informações de conexão atualizadas com sucesso",
|
||||
"envUpdateFailed": "Falha ao salvar as variáveis de ambiente",
|
||||
"envUpdateFailed": "Falha ao salvar variáveis de ambiente",
|
||||
"envUpdateSuccess": "Variáveis de ambiente salvas com sucesso"
|
||||
},
|
||||
"modalDesc": "Após configurar o endereço do mercado de plugins, você poderá usar um mercado personalizado de plugins.",
|
||||
"modalDesc": "Após configurar o endereço do mercado de plugins, você poderá usar mercados personalizados",
|
||||
"rules": {
|
||||
"argsRequired": "Por favor, insira os parâmetros de inicialização",
|
||||
"commandRequired": "Por favor, insira o comando de inicialização",
|
||||
"urlRequired": "Por favor, insira o endereço do serviço"
|
||||
},
|
||||
"saveSettings": "Salvar configurações",
|
||||
"title": "Configurações do Mercado de Plugins"
|
||||
"title": "Configurar mercado de plugins"
|
||||
},
|
||||
"showInPortal": "Por favor, veja os detalhes na área de trabalho",
|
||||
"showInPortal": "Por favor, veja os detalhes no workspace",
|
||||
"store": {
|
||||
"actions": {
|
||||
"cancel": "Cancelar instalação",
|
||||
"confirmUninstall": "Você está prestes a desinstalar este plugin. A desinstalação irá limpar a configuração do plugin. Confirme a operação.",
|
||||
"confirmUninstall": "Este plugin será desinstalado e suas configurações serão removidas, confirme sua ação",
|
||||
"detail": "Detalhes",
|
||||
"install": "Instalar",
|
||||
"manifest": "Editar arquivo de instalação",
|
||||
"settings": "Configurações",
|
||||
"uninstall": "Desinstalar"
|
||||
},
|
||||
"communityPlugin": "Plugin da Comunidade",
|
||||
"communityPlugin": "Comunidade de terceiros",
|
||||
"customPlugin": "Personalizado",
|
||||
"empty": "Nenhum plugin instalado",
|
||||
"emptySelectHint": "Selecione um plugin para visualizar detalhes",
|
||||
"installAllPlugins": "Instalar todos os plugins",
|
||||
"networkError": "Falha ao obter a loja de plugins. Verifique a conexão de rede e tente novamente.",
|
||||
"placeholder": "Pesquisar por nome, descrição ou palavra-chave do plugin...",
|
||||
"releasedAt": "Lançado em {{createdAt}}",
|
||||
"installAllPlugins": "Instalar todos",
|
||||
"networkError": "Falha ao obter a loja de plugins, por favor verifique a conexão de rede e tente novamente",
|
||||
"placeholder": "Pesquisar nome, descrição ou palavra-chave do plugin...",
|
||||
"releasedAt": "Publicado em {{createdAt}}",
|
||||
"tabs": {
|
||||
"installed": "Instalados",
|
||||
"mcp": "Plugin MCP",
|
||||
"old": "Plugin LobeChat"
|
||||
"mcp": "Plugins MCP",
|
||||
"old": "Plugins LobeChat"
|
||||
},
|
||||
"title": "Loja de Plugins"
|
||||
"title": "Loja de plugins"
|
||||
},
|
||||
"unknownError": "Erro desconhecido",
|
||||
"unknownPlugin": "Plugin desconhecido"
|
||||
|
||||
@@ -4,12 +4,12 @@
|
||||
"arguments": "Аргументы вызова",
|
||||
"function_call": "Вызов функции",
|
||||
"off": "Отключить отладку",
|
||||
"on": "Включить отображение информации о вызовах плагинов",
|
||||
"payload": "полезная нагрузка",
|
||||
"on": "Просмотр информации о вызове плагина",
|
||||
"payload": "Полезная нагрузка плагина",
|
||||
"pluginState": "Состояние плагина",
|
||||
"response": "Ответ",
|
||||
"response": "Результат",
|
||||
"title": "Детали плагина",
|
||||
"tool_call": "запрос на вызов инструмента"
|
||||
"tool_call": "Запрос вызова инструмента"
|
||||
},
|
||||
"detailModal": {
|
||||
"customPlugin": {
|
||||
@@ -18,7 +18,7 @@
|
||||
"title": "Это пользовательский плагин"
|
||||
},
|
||||
"emptyState": {
|
||||
"description": "Пожалуйста, установите этот плагин, чтобы просмотреть его возможности и параметры настройки",
|
||||
"description": "Пожалуйста, сначала установите этот плагин, чтобы просмотреть его возможности и параметры настройки",
|
||||
"title": "Просмотр деталей плагина после установки"
|
||||
},
|
||||
"info": {
|
||||
@@ -26,17 +26,17 @@
|
||||
"name": "Название API"
|
||||
},
|
||||
"tabs": {
|
||||
"info": "Описание плагина",
|
||||
"manifest": "Манифест",
|
||||
"info": "Возможности плагина",
|
||||
"manifest": "Файл установки",
|
||||
"settings": "Настройки"
|
||||
},
|
||||
"title": "Детали плагина"
|
||||
},
|
||||
"dev": {
|
||||
"confirmDeleteDevPlugin": "Вы собираетесь удалить этот локальный плагин. После удаления его будет невозможно восстановить. Вы уверены, что хотите удалить этот плагин?",
|
||||
"confirmDeleteDevPlugin": "Вы собираетесь удалить этот локальный плагин. После удаления его нельзя будет восстановить. Удалить плагин?",
|
||||
"customParams": {
|
||||
"useProxy": {
|
||||
"label": "Использовать прокси (если есть проблемы с доступом к другому домену, попробуйте включить эту опцию перед повторной установкой)"
|
||||
"label": "Установка через прокси (если возникают ошибки доступа из-за CORS, попробуйте включить эту опцию и переустановить)"
|
||||
}
|
||||
},
|
||||
"deleteSuccess": "Плагин успешно удалён",
|
||||
@@ -48,12 +48,12 @@
|
||||
"mode": {
|
||||
"mcp": "MCP плагин",
|
||||
"mcpExp": "Экспериментальный",
|
||||
"url": "Ссылка онлайн"
|
||||
"url": "Онлайн-ссылка"
|
||||
},
|
||||
"name": {
|
||||
"desc": "Название плагина",
|
||||
"label": "Название",
|
||||
"placeholder": "Поиск в поисковике"
|
||||
"label": "Заголовок",
|
||||
"placeholder": "Поисковая система"
|
||||
}
|
||||
},
|
||||
"mcp": {
|
||||
@@ -61,19 +61,19 @@
|
||||
"title": "Расширенные настройки"
|
||||
},
|
||||
"args": {
|
||||
"desc": "Список параметров, передаваемых в команду выполнения, обычно здесь указывается имя сервера MCP или путь к скрипту запуска",
|
||||
"label": "Параметры команды",
|
||||
"placeholder": "Например: --port 8080 --debug",
|
||||
"required": "Пожалуйста, введите параметры запуска"
|
||||
"desc": "Список аргументов для команды запуска, обычно здесь указывается имя MCP сервера или путь к скрипту запуска",
|
||||
"label": "Аргументы команды",
|
||||
"placeholder": "Например: mcp-hello-world",
|
||||
"required": "Пожалуйста, введите аргументы запуска"
|
||||
},
|
||||
"auth": {
|
||||
"bear": "API ключ",
|
||||
"desc": "Выберите способ аутентификации сервера MCP",
|
||||
"desc": "Выберите способ аутентификации MCP сервера",
|
||||
"label": "Тип аутентификации",
|
||||
"none": "Аутентификация не требуется",
|
||||
"placeholder": "Пожалуйста, выберите тип аутентификации",
|
||||
"token": {
|
||||
"desc": "Введите ваш API ключ или токен Bearer",
|
||||
"desc": "Введите ваш API ключ или Bearer токен",
|
||||
"label": "API ключ",
|
||||
"placeholder": "sk-xxxxx",
|
||||
"required": "Пожалуйста, введите токен аутентификации"
|
||||
@@ -83,28 +83,28 @@
|
||||
"label": "Иконка плагина"
|
||||
},
|
||||
"command": {
|
||||
"desc": "Исполняемый файл или скрипт для запуска плагина MCP STDIO",
|
||||
"desc": "Исполняемый файл или скрипт для запуска MCP STDIO сервера",
|
||||
"label": "Команда",
|
||||
"placeholder": "Например: python main.py или /path/to/executable",
|
||||
"placeholder": "Например: npx / uv / docker и т.д.",
|
||||
"required": "Пожалуйста, введите команду запуска"
|
||||
},
|
||||
"desc": {
|
||||
"desc": "Добавьте описание плагина",
|
||||
"label": "Описание плагина",
|
||||
"placeholder": "Дополните информацию о использовании и сценариях данного плагина"
|
||||
"placeholder": "Дополните информацию об использовании и сценариях"
|
||||
},
|
||||
"endpoint": {
|
||||
"desc": "Введите адрес вашего MCP Streamable HTTP Server",
|
||||
"label": "URL-адрес MCP Endpoint"
|
||||
"desc": "Введите адрес вашего MCP Streamable HTTP сервера",
|
||||
"label": "URL MCP Endpoint"
|
||||
},
|
||||
"env": {
|
||||
"add": "Добавить строку",
|
||||
"desc": "Введите необходимые переменные окружения для вашего сервера MCP",
|
||||
"desc": "Введите переменные окружения, необходимые для MCP сервера",
|
||||
"duplicateKeyError": "Ключ поля должен быть уникальным",
|
||||
"formValidationFailed": "Проверка формы не удалась, проверьте формат параметров",
|
||||
"formValidationFailed": "Ошибка проверки формы, пожалуйста, проверьте формат параметров",
|
||||
"keyRequired": "Ключ поля не может быть пустым",
|
||||
"label": "Переменные окружения сервера MCP",
|
||||
"stringifyError": "Не удалось сериализовать параметры, проверьте формат параметров"
|
||||
"label": "Переменные окружения MCP сервера",
|
||||
"stringifyError": "Не удалось сериализовать параметры, проверьте формат"
|
||||
},
|
||||
"headers": {
|
||||
"add": "Добавить строку",
|
||||
@@ -112,39 +112,39 @@
|
||||
"label": "HTTP заголовки"
|
||||
},
|
||||
"identifier": {
|
||||
"desc": "Укажите имя для вашего MCP плагина, необходимо использовать английские символы",
|
||||
"invalid": "Можно вводить только английские буквы, цифры, символы - и _",
|
||||
"desc": "Укажите имя для вашего MCP плагина, используйте английские символы",
|
||||
"invalid": "Идентификатор может содержать только буквы, цифры, дефисы и подчеркивания",
|
||||
"label": "Имя MCP плагина",
|
||||
"placeholder": "Например: my-mcp-plugin",
|
||||
"required": "Пожалуйста, введите идентификатор службы MCP"
|
||||
"required": "Пожалуйста, введите идентификатор MCP сервиса"
|
||||
},
|
||||
"previewManifest": "Предварительный просмотр файла описания плагина",
|
||||
"quickImport": "БыстImport JSON конфигурации",
|
||||
"quickImport": "Быстрый импорт JSON конфигурации",
|
||||
"quickImportError": {
|
||||
"empty": "Ввод не может быть пустым",
|
||||
"invalidJson": "Недопустимый формат JSON",
|
||||
"invalidStructure": "Недопустимая структура JSON"
|
||||
"invalidJson": "Неверный формат JSON",
|
||||
"invalidStructure": "Неверная структура JSON"
|
||||
},
|
||||
"stdioNotSupported": "Текущая среда не поддерживает MCP плагин типа stdio",
|
||||
"stdioNotSupported": "Текущая среда не поддерживает MCP плагины типа stdio",
|
||||
"testConnection": "Проверить соединение",
|
||||
"testConnectionTip": "Плагин MCP может быть использован только после успешной проверки соединения",
|
||||
"testConnectionTip": "MCP плагин можно использовать только после успешного теста соединения",
|
||||
"type": {
|
||||
"desc": "Выберите способ связи для MCP плагина, веб-версия поддерживает только Streamable HTTP",
|
||||
"httpFeature1": "Совместимость с веб-версией и настольной версией",
|
||||
"httpFeature2": "Подключение к удаленному серверу MCP без дополнительной установки и настройки",
|
||||
"desc": "Выберите способ связи MCP плагина, веб-версия поддерживает только Streamable HTTP",
|
||||
"httpFeature1": "Совместимость с веб и десктоп версиями",
|
||||
"httpFeature2": "Подключение к удалённому MCP серверу без дополнительной установки",
|
||||
"httpShortDesc": "Протокол связи на основе потокового HTTP",
|
||||
"label": "Тип MCP плагина",
|
||||
"stdioFeature1": "Низкая задержка связи, подходит для локального выполнения",
|
||||
"stdioFeature2": "Необходимо установить и запустить сервер MCP локально",
|
||||
"stdioNotAvailable": "Режим STDIO доступен только в настольной версии",
|
||||
"stdioFeature2": "Требуется локальная установка MCP сервера",
|
||||
"stdioNotAvailable": "Режим STDIO доступен только в десктоп версии",
|
||||
"stdioShortDesc": "Протокол связи на основе стандартного ввода-вывода",
|
||||
"title": "Тип плагина MCP"
|
||||
"title": "Тип MCP плагина"
|
||||
},
|
||||
"url": {
|
||||
"desc": "Введите адрес вашего MCP сервера Streamable HTTP, режим SSE не поддерживается",
|
||||
"invalid": "Пожалуйста, введите действительный URL-адрес",
|
||||
"label": "URL-адрес HTTP Endpoint",
|
||||
"required": "Пожалуйста, введите URL службы MCP"
|
||||
"desc": "Введите адрес Streamable HTTP MCP сервера, SSE режим не поддерживается",
|
||||
"invalid": "Пожалуйста, введите корректный URL",
|
||||
"label": "URL Streamable HTTP Endpoint",
|
||||
"required": "Пожалуйста, введите URL MCP сервиса"
|
||||
}
|
||||
},
|
||||
"meta": {
|
||||
@@ -159,7 +159,7 @@
|
||||
"description": {
|
||||
"desc": "Описание плагина",
|
||||
"label": "Описание",
|
||||
"placeholder": "Получение информации из поисковика"
|
||||
"placeholder": "Поиск информации через поисковую систему"
|
||||
},
|
||||
"formFieldRequired": "Это поле обязательно для заполнения",
|
||||
"homepage": {
|
||||
@@ -167,111 +167,111 @@
|
||||
"label": "Домашняя страница"
|
||||
},
|
||||
"identifier": {
|
||||
"desc": "Уникальный идентификатор плагина, который будет автоматически определен из манифеста",
|
||||
"errorDuplicate": "Идентификатор уже используется другим плагином. Пожалуйста, измените его",
|
||||
"desc": "Уникальный идентификатор плагина, автоматически определяется из manifest",
|
||||
"errorDuplicate": "Идентификатор совпадает с уже существующим плагином, пожалуйста, измените его",
|
||||
"label": "Идентификатор",
|
||||
"pattenErrorMessage": "Допустимы только латинские буквы, цифры, дефис и подчеркивание"
|
||||
"pattenErrorMessage": "Допустимы только английские буквы, цифры, дефис и подчеркивание"
|
||||
},
|
||||
"lobe": "{{appName}} плагин",
|
||||
"manifest": {
|
||||
"desc": "{{appName}} будет устанавливать плагин по этой ссылке",
|
||||
"label": "URL манифеста плагина",
|
||||
"preview": "Предпросмотр манифеста",
|
||||
"desc": "{{appName}} установит плагин по этой ссылке",
|
||||
"label": "URL файла описания плагина (Manifest)",
|
||||
"preview": "Предварительный просмотр Manifest",
|
||||
"refresh": "Обновить"
|
||||
},
|
||||
"openai": "Плагин OpenAI",
|
||||
"openai": "OpenAI плагин",
|
||||
"title": {
|
||||
"desc": "Название плагина",
|
||||
"label": "Название",
|
||||
"placeholder": "Поиск в поисковике"
|
||||
"desc": "Заголовок плагина",
|
||||
"label": "Заголовок",
|
||||
"placeholder": "Поисковая система"
|
||||
}
|
||||
},
|
||||
"metaConfig": "Настройка метаданных плагина",
|
||||
"modalDesc": "После добавления пользовательского плагина его можно использовать для тестирования разработки плагина или непосредственно в сессии. См. документацию по разработке <1>здесь↗</>",
|
||||
"metaConfig": "Конфигурация метаданных плагина",
|
||||
"modalDesc": "После добавления пользовательского плагина его можно использовать для разработки и тестирования, а также напрямую в диалогах. Для разработки плагинов смотрите <1>документацию по разработке↗</>",
|
||||
"openai": {
|
||||
"importUrl": "Импортировать из URL",
|
||||
"importUrl": "Импорт из URL",
|
||||
"schema": "Схема"
|
||||
},
|
||||
"preview": {
|
||||
"api": {
|
||||
"noParams": "У этого инструмента нет параметров",
|
||||
"noResults": "Не найдены API, соответствующие условиям поиска",
|
||||
"noResults": "API, соответствующие условиям поиска, не найдены",
|
||||
"params": "Параметры:",
|
||||
"searchPlaceholder": "Поиск инструмента..."
|
||||
},
|
||||
"card": "Предпросмотр плагина",
|
||||
"desc": "Предпросмотр описания плагина",
|
||||
"card": "Предварительный просмотр отображения плагина",
|
||||
"desc": "Предварительный просмотр описания плагина",
|
||||
"empty": {
|
||||
"desc": "После завершения конфигурации вы сможете просмотреть возможности поддерживаемых инструментов плагина здесь",
|
||||
"desc": "После настройки здесь можно будет просмотреть поддерживаемые возможности плагина",
|
||||
"title": "Начните предварительный просмотр после настройки плагина"
|
||||
},
|
||||
"title": "Предпросмотр названия плагина"
|
||||
"title": "Предварительный просмотр названия плагина"
|
||||
},
|
||||
"save": "Установить плагин",
|
||||
"saveSuccess": "Настройки плагина успешно сохранены",
|
||||
"tabs": {
|
||||
"manifest": "Описание функций (Манифест)",
|
||||
"meta": "Метаданные"
|
||||
"manifest": "Функциональный манифест (Manifest)",
|
||||
"meta": "Метаданные плагина"
|
||||
},
|
||||
"title": {
|
||||
"create": "Добавить плагин",
|
||||
"edit": "Редактировать плагин"
|
||||
"create": "Добавить пользовательский плагин",
|
||||
"edit": "Редактировать пользовательский плагин"
|
||||
},
|
||||
"type": {
|
||||
"lobe": "Плагин LobeChat",
|
||||
"openai": "Плагин OpenAI"
|
||||
"lobe": "{{appName}} плагин",
|
||||
"openai": "OpenAI плагин"
|
||||
},
|
||||
"update": "Обновить",
|
||||
"updateSuccess": "Настройки плагина успешно обновлены"
|
||||
},
|
||||
"error": {
|
||||
"fetchError": "Не удалось получить доступ к манифесту по указанной ссылке. Проверьте, что ссылка действительна, и доступ к кросс-доменным запросам разрешен",
|
||||
"installError": "Ошибка при установке плагина {{name}}",
|
||||
"manifestInvalid": "Манифест не соответствует стандартам, результат проверки: \n\n {{error}}",
|
||||
"noManifest": "Отсутствует манифест",
|
||||
"openAPIInvalid": "Ошибка разбора OpenAPI: \n\n {{error}}",
|
||||
"reinstallError": "Ошибка при обновлении плагина {{name}}",
|
||||
"testConnectionFailed": "Не удалось получить манифест: {{error}}",
|
||||
"urlError": "Ссылка не возвращает данные в формате JSON. Проверьте правильность ссылки"
|
||||
"fetchError": "Не удалось получить manifest по ссылке, пожалуйста, убедитесь в её корректности и проверьте разрешения CORS",
|
||||
"installError": "Ошибка установки плагина {{name}}",
|
||||
"manifestInvalid": "Manifest не соответствует стандартам, результат проверки: \n\n {{error}}",
|
||||
"noManifest": "Файл описания отсутствует",
|
||||
"openAPIInvalid": "Ошибка разбора OpenAPI, ошибка: \n\n {{error}}",
|
||||
"reinstallError": "Ошибка обновления плагина {{name}}",
|
||||
"testConnectionFailed": "Не удалось получить Manifest: {{error}}",
|
||||
"urlError": "По этой ссылке не возвращается содержимое в формате JSON, пожалуйста, убедитесь, что ссылка действительна"
|
||||
},
|
||||
"inspector": {
|
||||
"args": "Просмотреть список параметров",
|
||||
"pluginRender": "Просмотреть интерфейс плагина"
|
||||
"args": "Просмотр списка параметров",
|
||||
"pluginRender": "Просмотр интерфейса плагина"
|
||||
},
|
||||
"list": {
|
||||
"item": {
|
||||
"deprecated.title": "Устарел",
|
||||
"local.config": "Настроить",
|
||||
"deprecated.title": "Удалён",
|
||||
"local.config": "Настройки",
|
||||
"local.title": "Пользовательский"
|
||||
}
|
||||
},
|
||||
"loading": {
|
||||
"content": "Загрузка плагина...",
|
||||
"plugin": "Запуск плагина..."
|
||||
"content": "Вызов плагина...",
|
||||
"plugin": "Плагин работает..."
|
||||
},
|
||||
"localSystem": {
|
||||
"apiName": {
|
||||
"listLocalFiles": "Просмотреть список файлов",
|
||||
"moveLocalFiles": "Переместить файл",
|
||||
"readLocalFile": "Читать содержимое файла",
|
||||
"renameLocalFile": "Переименовать",
|
||||
"listLocalFiles": "Просмотр списка файлов",
|
||||
"moveLocalFiles": "Перемещение файлов",
|
||||
"readLocalFile": "Чтение содержимого файла",
|
||||
"renameLocalFile": "Переименование",
|
||||
"searchLocalFiles": "Поиск файлов",
|
||||
"writeLocalFile": "Записать файл"
|
||||
"writeLocalFile": "Запись в файл"
|
||||
},
|
||||
"title": "Локальные файлы"
|
||||
},
|
||||
"mcpInstall": {
|
||||
"CHECKING_INSTALLATION": "Проверка среды установки...",
|
||||
"COMPLETED": "Установка завершена",
|
||||
"CONFIGURATION_REQUIRED": "Пожалуйста, завершите соответствующую настройку перед продолжением установки",
|
||||
"CONFIGURATION_REQUIRED": "Пожалуйста, завершите настройку перед продолжением установки",
|
||||
"ERROR": "Ошибка установки",
|
||||
"FETCHING_MANIFEST": "Получение описания плагина...",
|
||||
"GETTING_SERVER_MANIFEST": "Инициализация сервера MCP...",
|
||||
"FETCHING_MANIFEST": "Получение файла описания плагина...",
|
||||
"GETTING_SERVER_MANIFEST": "Инициализация MCP сервера...",
|
||||
"INSTALLING_PLUGIN": "Установка плагина...",
|
||||
"configurationDescription": "Для корректной работы этого плагина MCP необходимо настроить параметры. Пожалуйста, заполните необходимые данные конфигурации",
|
||||
"configurationDescription": "Для корректной работы MCP плагина необходимо настроить параметры, пожалуйста, заполните обязательные поля",
|
||||
"configurationRequired": "Настройка параметров плагина",
|
||||
"continueInstall": "Продолжить установку",
|
||||
"dependenciesDescription": "Для корректной работы этого плагина необходимо установить следующие системные зависимости. Пожалуйста, установите отсутствующие зависимости согласно инструкциям, затем нажмите 'Проверить снова' для продолжения установки.",
|
||||
"dependenciesDescription": "Для работы этого плагина необходимо установить системные зависимости. Пожалуйста, установите отсутствующие зависимости согласно инструкции, затем нажмите 'Проверить снова' для продолжения установки.",
|
||||
"dependenciesRequired": "Пожалуйста, установите системные зависимости плагина",
|
||||
"dependencyStatus": {
|
||||
"installed": "Установлено",
|
||||
@@ -283,7 +283,7 @@
|
||||
"command": "Команда",
|
||||
"connectionParams": "Параметры подключения",
|
||||
"env": "Переменные окружения",
|
||||
"errorOutput": "Журнал ошибок",
|
||||
"errorOutput": "Лог ошибок",
|
||||
"exitCode": "Код выхода",
|
||||
"hideDetails": "Скрыть детали",
|
||||
"originalError": "Исходная ошибка",
|
||||
@@ -297,49 +297,109 @@
|
||||
"UNKNOWN_ERROR": "Неизвестная ошибка",
|
||||
"VALIDATION_ERROR": "Ошибка проверки параметров"
|
||||
},
|
||||
"installError": "Не удалось установить плагин MCP, причина ошибки: {{detail}}",
|
||||
"installError": "Ошибка установки MCP плагина, причина: {{detail}}",
|
||||
"installMethods": {
|
||||
"manual": "Ручная установка:",
|
||||
"recommended": "Рекомендуемый способ установки:"
|
||||
},
|
||||
"recheckDependencies": "Проверить снова",
|
||||
"recheckDependencies": "Проверить зависимости снова",
|
||||
"skipDependencies": "Пропустить проверку"
|
||||
},
|
||||
"pluginList": "Список плагинов",
|
||||
"protocolInstall": {
|
||||
"actions": {
|
||||
"install": "Установить",
|
||||
"installAnyway": "Установить в любом случае",
|
||||
"installed": "Установлено"
|
||||
},
|
||||
"config": {
|
||||
"args": "Аргументы",
|
||||
"command": "Команда",
|
||||
"env": "Переменные окружения",
|
||||
"headers": "Заголовки запроса",
|
||||
"title": "Информация о конфигурации",
|
||||
"type": {
|
||||
"http": "Тип: HTTP",
|
||||
"label": "Тип",
|
||||
"stdio": "Тип: Stdio"
|
||||
},
|
||||
"url": "Адрес сервиса"
|
||||
},
|
||||
"custom": {
|
||||
"badge": "Пользовательский плагин",
|
||||
"security": {
|
||||
"description": "Этот плагин не прошёл официальную проверку, установка может быть небезопасной! Пожалуйста, убедитесь, что вы доверяете источнику плагина.",
|
||||
"title": "⚠️ Предупреждение о безопасности"
|
||||
},
|
||||
"title": "Установка пользовательского плагина"
|
||||
},
|
||||
"marketplace": {
|
||||
"title": "Установка сторонних плагинов",
|
||||
"trustedBy": "Предоставлено {{name}}",
|
||||
"unverified": {
|
||||
"title": "Непроверенные сторонние плагины",
|
||||
"warning": "Этот плагин из непроверенного стороннего магазина, пожалуйста, убедитесь в доверии к источнику перед установкой."
|
||||
},
|
||||
"verified": "Проверено"
|
||||
},
|
||||
"messages": {
|
||||
"connectionTestFailed": "Тест соединения не удался",
|
||||
"installError": "Ошибка установки плагина, попробуйте снова",
|
||||
"installSuccess": "Плагин {{name}} успешно установлен!",
|
||||
"manifestError": "Не удалось получить детали плагина, проверьте подключение к сети и попробуйте снова",
|
||||
"manifestNotFound": "Не удалось получить файл описания плагина"
|
||||
},
|
||||
"meta": {
|
||||
"author": "Автор",
|
||||
"homepage": "Домашняя страница",
|
||||
"identifier": "Идентификатор",
|
||||
"source": "Источник",
|
||||
"version": "Версия"
|
||||
},
|
||||
"official": {
|
||||
"badge": "Официальный плагин LobeHub",
|
||||
"description": "Этот плагин разработан и поддерживается официальной командой LobeHub, прошёл строгую проверку безопасности и безопасен для использования.",
|
||||
"loadingMessage": "Получение деталей плагина...",
|
||||
"loadingTitle": "Загрузка",
|
||||
"title": "Установка официального плагина"
|
||||
},
|
||||
"title": "Установка MCP плагина",
|
||||
"warning": "⚠️ Пожалуйста, убедитесь, что вы доверяете источнику этого плагина, вредоносные плагины могут угрожать безопасности вашей системы."
|
||||
},
|
||||
"search": {
|
||||
"apiName": {
|
||||
"crawlMultiPages": "Чтение содержимого нескольких страниц",
|
||||
"crawlSinglePage": "Читать содержимое страницы",
|
||||
"search": "Поиск страницы"
|
||||
"crawlSinglePage": "Чтение содержимого страницы",
|
||||
"search": "Поиск по странице"
|
||||
},
|
||||
"config": {
|
||||
"addKey": "Добавить ключ",
|
||||
"close": "Удалить",
|
||||
"confirm": "Конфигурация завершена, попробуйте снова"
|
||||
"confirm": "Конфигурация завершена, повторить попытку"
|
||||
},
|
||||
"crawPages": {
|
||||
"crawling": "Идентификация ссылки",
|
||||
"crawling": "Определение ссылок...",
|
||||
"detail": {
|
||||
"preview": "Предварительный просмотр",
|
||||
"raw": "Исходный текст",
|
||||
"tooLong": "Содержимое текста слишком длинное, в контексте диалога сохраняются только первые {{characters}} символов, а остальная часть не учитывается в контексте разговора"
|
||||
"tooLong": "Текст слишком длинный, в контекст диалога включено только первые {{characters}} символов, остальное не учитывается"
|
||||
},
|
||||
"meta": {
|
||||
"crawler": "Режим обхода",
|
||||
"crawler": "Режим сканирования",
|
||||
"words": "Количество символов"
|
||||
}
|
||||
},
|
||||
"searchxng": {
|
||||
"baseURL": "Введите",
|
||||
"description": "Введите URL SearchXNG, чтобы начать поиск в сети",
|
||||
"keyPlaceholder": "Введите ключ",
|
||||
"baseURL": "Пожалуйста, введите",
|
||||
"description": "Введите URL SearchXNG для начала сетевого поиска",
|
||||
"keyPlaceholder": "Пожалуйста, введите ключ",
|
||||
"title": "Настройка поисковой системы SearchXNG",
|
||||
"unconfiguredDesc": "Пожалуйста, свяжитесь с администратором для завершения настройки поисковой системы SearchXNG, чтобы начать поиск в сети",
|
||||
"unconfiguredTitle": "Поисковая система SearchXNG еще не настроена"
|
||||
"unconfiguredDesc": "Пожалуйста, обратитесь к администратору для настройки SearchXNG, чтобы начать сетевой поиск",
|
||||
"unconfiguredTitle": "SearchXNG не настроен"
|
||||
},
|
||||
"title": "Поиск в сети"
|
||||
"title": "Сетевой поиск"
|
||||
},
|
||||
"setting": "Настройка плагина",
|
||||
"setting": "Настройки плагина",
|
||||
"settings": {
|
||||
"capabilities": {
|
||||
"prompts": "Подсказки",
|
||||
@@ -348,21 +408,21 @@
|
||||
"tools": "Инструменты"
|
||||
},
|
||||
"configuration": {
|
||||
"title": "Настройка плагина"
|
||||
"title": "Конфигурация плагина"
|
||||
},
|
||||
"connection": {
|
||||
"args": "Параметры запуска",
|
||||
"args": "Аргументы запуска",
|
||||
"command": "Команда запуска",
|
||||
"title": "Информация о подключении",
|
||||
"type": "Тип подключения",
|
||||
"url": "Адрес сервиса"
|
||||
},
|
||||
"edit": "Редактировать",
|
||||
"envConfigDescription": "Эти настройки будут переданы процессу в виде переменных окружения при запуске сервера MCP",
|
||||
"httpTypeNotice": "Для HTTP-плагинов MCP в настоящее время нет переменных окружения, требующих настройки",
|
||||
"envConfigDescription": "Эти настройки будут переданы как переменные окружения при запуске MCP сервера",
|
||||
"httpTypeNotice": "HTTP тип MCP плагина не требует настройки переменных окружения",
|
||||
"indexUrl": {
|
||||
"title": "Индекс магазина",
|
||||
"tooltip": "Редактирование в настоящее время недоступно"
|
||||
"title": "Индекс рынка",
|
||||
"tooltip": "Онлайн-редактирование пока не поддерживается, настройте через переменные окружения при развертывании"
|
||||
},
|
||||
"messages": {
|
||||
"connectionUpdateFailed": "Не удалось обновить информацию о подключении",
|
||||
@@ -370,38 +430,38 @@
|
||||
"envUpdateFailed": "Не удалось сохранить переменные окружения",
|
||||
"envUpdateSuccess": "Переменные окружения успешно сохранены"
|
||||
},
|
||||
"modalDesc": "После настройки адреса магазина плагинов можно использовать пользовательский магазин",
|
||||
"modalDesc": "После настройки адреса рынка плагинов можно использовать пользовательские рынки плагинов",
|
||||
"rules": {
|
||||
"argsRequired": "Пожалуйста, введите параметры запуска",
|
||||
"argsRequired": "Пожалуйста, введите аргументы запуска",
|
||||
"commandRequired": "Пожалуйста, введите команду запуска",
|
||||
"urlRequired": "Пожалуйста, введите адрес сервиса"
|
||||
},
|
||||
"saveSettings": "Сохранить настройки",
|
||||
"title": "Настройки магазина плагинов"
|
||||
"title": "Настройки рынка плагинов"
|
||||
},
|
||||
"showInPortal": "Просмотрите подробности в рабочей области",
|
||||
"showInPortal": "Пожалуйста, просмотрите детали в рабочей области",
|
||||
"store": {
|
||||
"actions": {
|
||||
"cancel": "Отменить установку",
|
||||
"confirmUninstall": "Вы собираетесь удалить этот плагин. После удаления его настройки будут утрачены. Вы уверены, что хотите продолжить?",
|
||||
"detail": "Подробнее",
|
||||
"confirmUninstall": "Вы собираетесь удалить этот плагин, после удаления все его настройки будут удалены. Подтвердите действие.",
|
||||
"detail": "Детали",
|
||||
"install": "Установить",
|
||||
"manifest": "Редактировать манифест",
|
||||
"manifest": "Редактировать файл установки",
|
||||
"settings": "Настройки",
|
||||
"uninstall": "Удалить"
|
||||
},
|
||||
"communityPlugin": "Плагин сообщества",
|
||||
"customPlugin": "Пользовательский плагин",
|
||||
"empty": "Плагины не установлены",
|
||||
"communityPlugin": "Стороннее сообщество",
|
||||
"customPlugin": "Пользовательский",
|
||||
"empty": "Нет установленных плагинов",
|
||||
"emptySelectHint": "Выберите плагин для просмотра подробной информации",
|
||||
"installAllPlugins": "Установить все",
|
||||
"networkError": "Не удалось подключиться к магазину плагинов. Пожалуйста, проверьте сетевое соединение и попробуйте ещё раз",
|
||||
"placeholder": "Введите название плагина, описание или ключевое слово...",
|
||||
"releasedAt": "Опубликован {{createdAt}}",
|
||||
"networkError": "Не удалось получить магазин плагинов, проверьте подключение к сети и попробуйте снова",
|
||||
"placeholder": "Поиск по названию, описанию или ключевым словам...",
|
||||
"releasedAt": "Опубликовано {{createdAt}}",
|
||||
"tabs": {
|
||||
"installed": "Установленные",
|
||||
"mcp": "Плагин MCP",
|
||||
"old": "Плагин LobeChat"
|
||||
"mcp": "MCP плагины",
|
||||
"old": "LobeChat плагины"
|
||||
},
|
||||
"title": "Магазин плагинов"
|
||||
},
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
{
|
||||
"confirm": "Onayla",
|
||||
"debug": {
|
||||
"arguments": "Argümanlar",
|
||||
"function_call": "Fonksiyon Çağrısı",
|
||||
"off": "Hata Ayıklamayı Kapat",
|
||||
"on": "Eklenti Çağrı Bilgilerini Görüntüle",
|
||||
"payload": "eklenti yükü",
|
||||
"arguments": "Çağrı parametreleri",
|
||||
"function_call": "Fonksiyon çağrısı",
|
||||
"off": "Hata ayıklamayı kapat",
|
||||
"on": "Eklenti çağrı bilgilerini görüntüle",
|
||||
"payload": "Eklenti yükü",
|
||||
"pluginState": "Eklenti Durumu",
|
||||
"response": "Yanıt",
|
||||
"response": "Dönüş sonucu",
|
||||
"title": "Eklenti Detayları",
|
||||
"tool_call": "aracı çağrı"
|
||||
"tool_call": "Araç çağrısı isteği"
|
||||
},
|
||||
"detailModal": {
|
||||
"customPlugin": {
|
||||
@@ -18,8 +18,8 @@
|
||||
"title": "Bu bir özel eklentidir"
|
||||
},
|
||||
"emptyState": {
|
||||
"description": "Lütfen eklentinin yeteneklerini ve yapılandırma seçeneklerini görmek için önce bu eklentiyi yükleyin",
|
||||
"title": "Yükledikten Sonra Eklenti Detaylarını Görüntüleyin"
|
||||
"description": "Eklenti yeteneklerini ve yapılandırma seçeneklerini görmek için lütfen önce bu eklentiyi yükleyin",
|
||||
"title": "Yükledikten sonra eklenti detaylarını görüntüleyin"
|
||||
},
|
||||
"info": {
|
||||
"description": "API Açıklaması",
|
||||
@@ -27,22 +27,22 @@
|
||||
},
|
||||
"tabs": {
|
||||
"info": "Eklenti Yetenekleri",
|
||||
"manifest": "Yükleme Dosyası",
|
||||
"manifest": "Kurulum Dosyası",
|
||||
"settings": "Ayarlar"
|
||||
},
|
||||
"title": "Eklenti Detayları"
|
||||
},
|
||||
"dev": {
|
||||
"confirmDeleteDevPlugin": "Bu eklentiyi silmek istediğinizden emin misiniz? Bir kere silindiğinde, geri alınamaz.",
|
||||
"confirmDeleteDevPlugin": "Bu yerel eklenti silinecek, silindikten sonra geri alınamaz. Eklentiyi silmek istiyor musunuz?",
|
||||
"customParams": {
|
||||
"useProxy": {
|
||||
"label": "Proxy kullanarak yükle (Çapraz kaynak erişim hatası ile karşılaşılırsa, bu seçeneği etkinleştirerek yeniden yükleme deneyebilirsiniz)"
|
||||
"label": "Proxy üzerinden yükle (CORS hatası alırsanız bu seçeneği açıp tekrar deneyin)"
|
||||
}
|
||||
},
|
||||
"deleteSuccess": "Eklenti başarıyla silindi",
|
||||
"manifest": {
|
||||
"identifier": {
|
||||
"desc": "Eklenti için benzersiz tanımlayıcı",
|
||||
"desc": "Eklentinin benzersiz tanımlayıcısı",
|
||||
"label": "Tanımlayıcı"
|
||||
},
|
||||
"mode": {
|
||||
@@ -53,7 +53,7 @@
|
||||
"name": {
|
||||
"desc": "Eklenti başlığı",
|
||||
"label": "Başlık",
|
||||
"placeholder": "Arama Motoru"
|
||||
"placeholder": "Arama motoru"
|
||||
}
|
||||
},
|
||||
"mcp": {
|
||||
@@ -61,10 +61,10 @@
|
||||
"title": "Gelişmiş Ayarlar"
|
||||
},
|
||||
"args": {
|
||||
"desc": "Komutları yürütmek için geçilecek parametreler listesi, genellikle burada MCP sunucu adını veya başlatma betiği yolunu girin.",
|
||||
"desc": "Çalıştırma komutuna iletilen parametre listesi, genellikle MCP sunucu adı veya başlatma betiği yolu buraya girilir",
|
||||
"label": "Komut Parametreleri",
|
||||
"placeholder": "Örneğin: --port 8080 --debug",
|
||||
"required": "Lütfen başlatma parametrelerini girin"
|
||||
"placeholder": "Örneğin: mcp-hello-world",
|
||||
"required": "Lütfen başlatma parametresi girin"
|
||||
},
|
||||
"auth": {
|
||||
"bear": "API Anahtarı",
|
||||
@@ -76,35 +76,35 @@
|
||||
"desc": "API Anahtarınızı veya Bearer Token'ınızı girin",
|
||||
"label": "API Anahtarı",
|
||||
"placeholder": "sk-xxxxx",
|
||||
"required": "Lütfen kimlik doğrulama jetonunu girin"
|
||||
"required": "Lütfen kimlik doğrulama jetonu girin"
|
||||
}
|
||||
},
|
||||
"avatar": {
|
||||
"label": "Eklenti İkonu"
|
||||
"label": "Eklenti Simgesi"
|
||||
},
|
||||
"command": {
|
||||
"desc": "MCP STDIO eklentisini başlatmak için kullanılacak yürütülebilir dosya veya betik",
|
||||
"desc": "MCP STDIO Sunucusunu başlatmak için yürütülebilir dosya veya betik",
|
||||
"label": "Komut",
|
||||
"placeholder": "Örneğin: python main.py veya /path/to/executable",
|
||||
"placeholder": "Örneğin: npx / uv / docker vb.",
|
||||
"required": "Lütfen başlatma komutunu girin"
|
||||
},
|
||||
"desc": {
|
||||
"desc": "Eklentinin açıklama bilgisi ekleyin",
|
||||
"desc": "Eklenti açıklaması ekleyin",
|
||||
"label": "Eklenti Açıklaması",
|
||||
"placeholder": "Bu eklentinin kullanım talimatları ve senaryoları gibi bilgileri ekleyin"
|
||||
"placeholder": "Eklentinin kullanım talimatları ve senaryoları gibi bilgileri ekleyin"
|
||||
},
|
||||
"endpoint": {
|
||||
"desc": "MCP Streamable HTTP Sunucunuzun adresini girin",
|
||||
"label": "MCP Endpoint URL"
|
||||
},
|
||||
"env": {
|
||||
"add": "Yeni bir satır ekle",
|
||||
"add": "Yeni satır ekle",
|
||||
"desc": "MCP Sunucunuzun ihtiyaç duyduğu ortam değişkenlerini girin",
|
||||
"duplicateKeyError": "Alan anahtarları benzersiz olmalıdır",
|
||||
"formValidationFailed": "Form doğrulaması başarısız oldu, lütfen parametre formatını kontrol edin",
|
||||
"duplicateKeyError": "Alan anahtarı benzersiz olmalıdır",
|
||||
"formValidationFailed": "Form doğrulaması başarısız, lütfen parametre formatını kontrol edin",
|
||||
"keyRequired": "Alan anahtarı boş olamaz",
|
||||
"label": "MCP Sunucu Ortam Değişkeni",
|
||||
"stringifyError": "Parametreleri serileştirmek mümkün değil, lütfen parametre formatını kontrol edin"
|
||||
"label": "MCP Sunucu Ortam Değişkenleri",
|
||||
"stringifyError": "Parametreler serileştirilemiyor, lütfen formatı kontrol edin"
|
||||
},
|
||||
"headers": {
|
||||
"add": "Yeni satır ekle",
|
||||
@@ -112,39 +112,39 @@
|
||||
"label": "HTTP Başlıkları"
|
||||
},
|
||||
"identifier": {
|
||||
"desc": "MCP eklentiniz için bir ad belirleyin, İngilizce karakterler kullanmalısınız",
|
||||
"invalid": "Sadece İngilizce karakterler, rakamlar, - ve _ bu iki sembolü girebilirsiniz",
|
||||
"desc": "MCP eklentiniz için İngilizce karakterler kullanarak bir isim belirleyin",
|
||||
"invalid": "Tanımlayıcı sadece harf, rakam, tire ve alt çizgi içerebilir",
|
||||
"label": "MCP Eklenti Adı",
|
||||
"placeholder": "Örneğin: my-mcp-plugin",
|
||||
"required": "Lütfen MCP hizmet tanımlayıcısını girin"
|
||||
"required": "Lütfen MCP servis tanımlayıcısını girin"
|
||||
},
|
||||
"previewManifest": "Eklenti tanım dosyasını önizle",
|
||||
"quickImport": "Hızlı JSON Yapılandırması İçe Aktar",
|
||||
"previewManifest": "Eklenti tanımlama dosyasını önizle",
|
||||
"quickImport": "JSON yapılandırmasını hızlıca içe aktar",
|
||||
"quickImportError": {
|
||||
"empty": "Girdi boş olamaz",
|
||||
"invalidJson": "Geçersiz JSON formatı",
|
||||
"invalidStructure": "JSON formatı geçersiz"
|
||||
},
|
||||
"stdioNotSupported": "Mevcut ortam stdio türündeki MCP eklentisini desteklemiyor",
|
||||
"stdioNotSupported": "Mevcut ortam stdio türündeki MCP eklentilerini desteklemiyor",
|
||||
"testConnection": "Bağlantıyı test et",
|
||||
"testConnectionTip": "Bağlantı başarılı olduktan sonra MCP eklentisi normal şekilde kullanılabilir",
|
||||
"testConnectionTip": "Bağlantı testi başarılı olursa MCP eklentisi düzgün çalışabilir",
|
||||
"type": {
|
||||
"desc": "MCP eklentisinin iletişim yöntemini seçin, web sürümü yalnızca Streamable HTTP'yi destekler",
|
||||
"httpFeature1": "Web ve masaüstü sürümü ile uyumlu",
|
||||
"httpFeature2": "Ekstra kurulum ve yapılandırma gerektirmeden uzak MCP sunucusuna bağlanma",
|
||||
"desc": "MCP eklentisinin iletişim türünü seçin, web sürümü sadece Streamable HTTP destekler",
|
||||
"httpFeature1": "Web ve masaüstü sürümleriyle uyumlu",
|
||||
"httpFeature2": "Uzak MCP sunucusuna bağlanır, ek kurulum gerekmez",
|
||||
"httpShortDesc": "Akış tabanlı HTTP iletişim protokolü",
|
||||
"label": "MCP Eklenti Türü",
|
||||
"stdioFeature1": "Daha düşük iletişim gecikmesi, yerel çalıştırma için uygundur",
|
||||
"stdioFeature2": "Yerel olarak MCP sunucusunun kurulması ve çalıştırılması gerekir",
|
||||
"stdioNotAvailable": "STDIO modu yalnızca masaüstü sürümünde mevcuttur",
|
||||
"stdioFeature1": "Daha düşük iletişim gecikmesi, yerel çalıştırma için uygun",
|
||||
"stdioFeature2": "Yerel MCP sunucusunun kurulması ve çalıştırılması gerekir",
|
||||
"stdioNotAvailable": "STDIO modu sadece masaüstü sürümde kullanılabilir",
|
||||
"stdioShortDesc": "Standart giriş çıkış tabanlı iletişim protokolü",
|
||||
"title": "MCP Eklenti Türü"
|
||||
},
|
||||
"url": {
|
||||
"desc": "MCP Sunucu Akış HTTP adresinizi girin, SSE modunu desteklemez",
|
||||
"invalid": "Lütfen geçerli bir URL adresi girin",
|
||||
"label": "HTTP Endpoint URL",
|
||||
"required": "Lütfen MCP hizmet URL'sini girin"
|
||||
"desc": "MCP Sunucunuzun Streamable HTTP adresini girin, SSE modu desteklenmez",
|
||||
"invalid": "Geçerli bir URL adresi girin",
|
||||
"label": "Streamable HTTP Endpoint URL",
|
||||
"required": "Lütfen MCP servis URL'sini girin"
|
||||
}
|
||||
},
|
||||
"meta": {
|
||||
@@ -153,56 +153,56 @@
|
||||
"label": "Yazar"
|
||||
},
|
||||
"avatar": {
|
||||
"desc": "Eklenti simgesi, Emoji veya URL kullanılabilir",
|
||||
"desc": "Eklenti simgesi, Emoji veya URL olabilir",
|
||||
"label": "Simge"
|
||||
},
|
||||
"description": {
|
||||
"desc": "Eklenti açıklaması",
|
||||
"label": "Açıklama",
|
||||
"placeholder": "Bilgi için arama motorunu sorgula"
|
||||
"placeholder": "Bilgi almak için arama motorunu kullanın"
|
||||
},
|
||||
"formFieldRequired": "Bu alan gereklidir",
|
||||
"formFieldRequired": "Bu alan zorunludur",
|
||||
"homepage": {
|
||||
"desc": "Eklentinin ana sayfası",
|
||||
"label": "Ana Sayfa"
|
||||
},
|
||||
"identifier": {
|
||||
"desc": "Eklenti için benzersiz tanımlayıcı, manifestten otomatik olarak tanınacak",
|
||||
"errorDuplicate": "Tanımlayıcı başka bir eklenti tarafından kullanılıyor, lütfen tanımlayıcıyı değiştirin",
|
||||
"desc": "Eklentinin benzersiz tanımlayıcısı, manifest dosyasından otomatik algılanır",
|
||||
"errorDuplicate": "Tanımlayıcı mevcut eklentiyle çakışıyor, lütfen değiştirin",
|
||||
"label": "Tanımlayıcı",
|
||||
"pattenErrorMessage": "Sadece İngilizce karakterler, sayılar, - ve _ kullanılabilir"
|
||||
"pattenErrorMessage": "Sadece İngilizce harf, rakam, - ve _ karakterleri girilebilir"
|
||||
},
|
||||
"lobe": "{{appName}} eklentisi",
|
||||
"lobe": "{{appName}} Eklentisi",
|
||||
"manifest": {
|
||||
"desc": "{{appName}} bu bağlantı aracılığıyla eklentiyi yükleyecektir.",
|
||||
"label": "Eklenti Tanım Dosyası (Manifest) URL'si",
|
||||
"preview": "Manifesti Önizle",
|
||||
"desc": "{{appName}} bu bağlantı üzerinden eklentiyi yükleyecek",
|
||||
"label": "Eklenti Tanımlama Dosyası (Manifest) URL",
|
||||
"preview": "Manifest Önizle",
|
||||
"refresh": "Yenile"
|
||||
},
|
||||
"openai": "OpenAI eklentisi",
|
||||
"openai": "OpenAI Eklentisi",
|
||||
"title": {
|
||||
"desc": "Eklenti başlığı",
|
||||
"label": "Başlık",
|
||||
"placeholder": "Arama Motoru"
|
||||
"placeholder": "Arama motoru"
|
||||
}
|
||||
},
|
||||
"metaConfig": "Eklenti meta veri yapılandırması",
|
||||
"modalDesc": "Özel bir eklenti ekledikten sonra, eklenti doğrulama için veya doğrudan oturumda kullanılabilir. Eklenti geliştirme için lütfen <1>geliştirme dokümantasyonuna↗</> başvurun.",
|
||||
"metaConfig": "Eklenti meta bilgi yapılandırması",
|
||||
"modalDesc": "Özel eklenti ekledikten sonra, eklenti geliştirme doğrulaması için veya doğrudan sohbet içinde kullanılabilir. Eklenti geliştirme için <1>geliştirici dokümanlarına↗</> bakınız.",
|
||||
"openai": {
|
||||
"importUrl": "URL Bağlantısından İçe Aktar",
|
||||
"importUrl": "URL bağlantısından içe aktar",
|
||||
"schema": "Şema"
|
||||
},
|
||||
"preview": {
|
||||
"api": {
|
||||
"noParams": "Bu aracın parametreleri yok",
|
||||
"noResults": "Arama koşullarına uyan API bulunamadı",
|
||||
"noParams": "Bu araç parametre gerektirmez",
|
||||
"noResults": "Arama kriterlerine uygun API bulunamadı",
|
||||
"params": "Parametreler:",
|
||||
"searchPlaceholder": "Aracı ara..."
|
||||
"searchPlaceholder": "Araç ara..."
|
||||
},
|
||||
"card": "Eklenti Görünümünü Önizle",
|
||||
"desc": "Eklenti Açıklamasını Önizle",
|
||||
"card": "Eklenti gösterim önizlemesi",
|
||||
"desc": "Eklenti açıklamasını önizle",
|
||||
"empty": {
|
||||
"desc": "Yapılandırmayı tamamladıktan sonra, burada eklentinin desteklediği araç yeteneklerini önizleyebileceksiniz",
|
||||
"desc": "Yapılandırma tamamlandıktan sonra, desteklenen araç yeteneklerini burada önizleyebilirsiniz",
|
||||
"title": "Eklentiyi yapılandırdıktan sonra önizlemeye başlayın"
|
||||
},
|
||||
"title": "Eklenti Adı Önizlemesi"
|
||||
@@ -210,29 +210,29 @@
|
||||
"save": "Eklentiyi Yükle",
|
||||
"saveSuccess": "Eklenti ayarları başarıyla kaydedildi",
|
||||
"tabs": {
|
||||
"manifest": "Manifest Tanımı",
|
||||
"meta": "Eklenti Meta Verileri"
|
||||
"manifest": "Fonksiyon Tanımlama Listesi (Manifest)",
|
||||
"meta": "Eklenti Meta Bilgileri"
|
||||
},
|
||||
"title": {
|
||||
"create": "Özel Eklenti Ekle",
|
||||
"edit": "Özel Eklentiyi Düzenle"
|
||||
},
|
||||
"type": {
|
||||
"lobe": "LobeChat Eklentisi",
|
||||
"lobe": "{{appName}} Eklentisi",
|
||||
"openai": "OpenAI Eklentisi"
|
||||
},
|
||||
"update": "Güncelle",
|
||||
"updateSuccess": "Eklenti ayarları başarıyla güncellendi"
|
||||
},
|
||||
"error": {
|
||||
"fetchError": "Manifest bağlantısı alınamadı. Lütfen bağlantının geçerli olduğundan ve çapraz köken erişimine izin verdiğinden emin olun.",
|
||||
"fetchError": "Manifest bağlantısı isteği başarısız oldu, lütfen bağlantının geçerli olduğundan ve CORS erişimine izin verdiğinden emin olun",
|
||||
"installError": "{{name}} eklentisi yüklenemedi",
|
||||
"manifestInvalid": "Manifest, şartnameye uygun değil. Doğrulama sonucu: \n\n {{error}}",
|
||||
"noManifest": "Manifest dosyası mevcut değil",
|
||||
"openAPIInvalid": "OpenAPI ayrıştırma hatası, hata: \n\n {{error}}",
|
||||
"manifestInvalid": "Manifest standartlara uymuyor, doğrulama sonucu: \n\n {{error}}",
|
||||
"noManifest": "Tanımlama dosyası bulunamadı",
|
||||
"openAPIInvalid": "OpenAPI ayrıştırma başarısız, hata: \n\n {{error}}",
|
||||
"reinstallError": "{{name}} eklentisi yenilenemedi",
|
||||
"testConnectionFailed": "Manifest alınamadı: {{error}}",
|
||||
"urlError": "Bağlantı JSON formatında içerik döndürmedi. Lütfen geçerli bir bağlantı olduğundan emin olun"
|
||||
"urlError": "Bu bağlantı JSON formatında içerik döndürmüyor, lütfen geçerli bir bağlantı olduğundan emin olun"
|
||||
},
|
||||
"inspector": {
|
||||
"args": "Parametre listesini görüntüle",
|
||||
@@ -240,7 +240,7 @@
|
||||
},
|
||||
"list": {
|
||||
"item": {
|
||||
"deprecated.title": "Eski",
|
||||
"deprecated.title": "Silindi",
|
||||
"local.config": "Yapılandırma",
|
||||
"local.title": "Özel"
|
||||
}
|
||||
@@ -252,27 +252,27 @@
|
||||
"localSystem": {
|
||||
"apiName": {
|
||||
"listLocalFiles": "Dosya listesini görüntüle",
|
||||
"moveLocalFiles": "Dosyaları taşı",
|
||||
"moveLocalFiles": "Dosya taşı",
|
||||
"readLocalFile": "Dosya içeriğini oku",
|
||||
"renameLocalFile": "Yeniden adlandır",
|
||||
"searchLocalFiles": "Dosyaları ara",
|
||||
"renameLocalFile": "Dosya adını değiştir",
|
||||
"searchLocalFiles": "Dosya ara",
|
||||
"writeLocalFile": "Dosyaya yaz"
|
||||
},
|
||||
"title": "Yerel Dosya"
|
||||
"title": "Yerel Dosyalar"
|
||||
},
|
||||
"mcpInstall": {
|
||||
"CHECKING_INSTALLATION": "Kurulum ortamı kontrol ediliyor...",
|
||||
"COMPLETED": "Kurulum tamamlandı",
|
||||
"CONFIGURATION_REQUIRED": "Devam etmek için lütfen ilgili yapılandırmayı tamamlayın",
|
||||
"CONFIGURATION_REQUIRED": "Devam etmek için gerekli yapılandırmayı tamamlayın",
|
||||
"ERROR": "Kurulum hatası",
|
||||
"FETCHING_MANIFEST": "Eklenti tanımlama dosyası alınıyor...",
|
||||
"GETTING_SERVER_MANIFEST": "MCP sunucusu başlatılıyor...",
|
||||
"INSTALLING_PLUGIN": "Eklenti kuruluyor...",
|
||||
"configurationDescription": "Bu MCP eklentisinin düzgün çalışması için yapılandırma parametreleri gereklidir, lütfen gerekli yapılandırma bilgilerini doldurun",
|
||||
"INSTALLING_PLUGIN": "Eklenti yükleniyor...",
|
||||
"configurationDescription": "Bu MCP eklentisi düzgün çalışması için yapılandırma parametreleri gerektirir, lütfen gerekli bilgileri doldurun",
|
||||
"configurationRequired": "Eklenti parametrelerini yapılandır",
|
||||
"continueInstall": "Kuruluma devam et",
|
||||
"dependenciesDescription": "Bu eklentinin düzgün çalışması için aşağıdaki sistem bağımlılıklarının kurulması gerekmektedir, lütfen eksik bağımlılıkları talimatlara göre kurduktan sonra yeniden kontrol ederek kuruluma devam edin.",
|
||||
"dependenciesRequired": "Lütfen eklentinin sistem bağımlılıklarını kurun",
|
||||
"dependenciesDescription": "Bu eklentinin düzgün çalışması için aşağıdaki sistem bağımlılıkları gereklidir, lütfen eksik bağımlılıkları kurduktan sonra tekrar kontrol edip kuruluma devam edin.",
|
||||
"dependenciesRequired": "Eklentinin sistem bağımlılıklarını yükleyin",
|
||||
"dependencyStatus": {
|
||||
"installed": "Yüklendi",
|
||||
"notInstalled": "Yüklenmedi",
|
||||
@@ -290,118 +290,178 @@
|
||||
"showDetails": "Detayları göster"
|
||||
},
|
||||
"errorTypes": {
|
||||
"AUTHORIZATION_ERROR": "Yetkilendirme doğrulama hatası",
|
||||
"AUTHORIZATION_ERROR": "Yetkilendirme hatası",
|
||||
"CONNECTION_FAILED": "Bağlantı başarısız",
|
||||
"INITIALIZATION_TIMEOUT": "Başlatma zaman aşımı",
|
||||
"PROCESS_SPAWN_ERROR": "İşlem başlatılamadı",
|
||||
"UNKNOWN_ERROR": "Bilinmeyen hata",
|
||||
"VALIDATION_ERROR": "Parametre doğrulama hatası"
|
||||
},
|
||||
"installError": "MCP eklenti kurulumu başarısız oldu, hata nedeni: {{detail}}",
|
||||
"installError": "MCP eklentisi yüklenemedi, hata nedeni: {{detail}}",
|
||||
"installMethods": {
|
||||
"manual": "Manuel kurulum:",
|
||||
"recommended": "Önerilen kurulum yöntemi:"
|
||||
},
|
||||
"recheckDependencies": "Yeniden kontrol et",
|
||||
"recheckDependencies": "Bağımlılıkları tekrar kontrol et",
|
||||
"skipDependencies": "Kontrolü atla"
|
||||
},
|
||||
"pluginList": "Eklenti Listesi",
|
||||
"search": {
|
||||
"apiName": {
|
||||
"crawlMultiPages": "Birden Fazla Sayfa İçeriğini Okuma",
|
||||
"crawlSinglePage": "Sayfa içeriğini oku",
|
||||
"search": "Sayfayı ara"
|
||||
"protocolInstall": {
|
||||
"actions": {
|
||||
"install": "Yükle",
|
||||
"installAnyway": "Yine de yükle",
|
||||
"installed": "Yüklendi"
|
||||
},
|
||||
"config": {
|
||||
"addKey": "Anahtar Ekle",
|
||||
"args": "Parametreler",
|
||||
"command": "Komut",
|
||||
"env": "Ortam değişkenleri",
|
||||
"headers": "İstek başlıkları",
|
||||
"title": "Yapılandırma Bilgileri",
|
||||
"type": {
|
||||
"http": "Tür: HTTP",
|
||||
"label": "Tür",
|
||||
"stdio": "Tür: Stdio"
|
||||
},
|
||||
"url": "Sunucu Adresi"
|
||||
},
|
||||
"custom": {
|
||||
"badge": "Özel Eklenti",
|
||||
"security": {
|
||||
"description": "Bu eklenti resmi olarak doğrulanmamıştır, yükleme güvenlik riski taşıyabilir! Lütfen eklenti kaynağına güvendiğinizden emin olun.",
|
||||
"title": "⚠️ Güvenlik Uyarısı"
|
||||
},
|
||||
"title": "Özel Eklenti Yükle"
|
||||
},
|
||||
"marketplace": {
|
||||
"title": "Üçüncü Taraf Eklenti Yükle",
|
||||
"trustedBy": "{{name}} tarafından sağlanmaktadır",
|
||||
"unverified": {
|
||||
"title": "Doğrulanmamış Üçüncü Taraf Eklenti",
|
||||
"warning": "Bu eklenti doğrulanmamış üçüncü taraf pazarından gelmektedir, yüklemeden önce kaynağa güvendiğinizden emin olun."
|
||||
},
|
||||
"verified": "Doğrulanmış"
|
||||
},
|
||||
"messages": {
|
||||
"connectionTestFailed": "Bağlantı testi başarısız",
|
||||
"installError": "Eklenti yüklenemedi, lütfen tekrar deneyin",
|
||||
"installSuccess": "{{name}} eklentisi başarıyla yüklendi!",
|
||||
"manifestError": "Eklenti detayları alınamadı, lütfen ağ bağlantınızı kontrol edip tekrar deneyin",
|
||||
"manifestNotFound": "Eklenti tanımlama dosyası alınamadı"
|
||||
},
|
||||
"meta": {
|
||||
"author": "Yazar",
|
||||
"homepage": "Ana Sayfa",
|
||||
"identifier": "Tanımlayıcı",
|
||||
"source": "Kaynak",
|
||||
"version": "Sürüm"
|
||||
},
|
||||
"official": {
|
||||
"badge": "LobeHub Resmi Eklentisi",
|
||||
"description": "Bu eklenti LobeHub tarafından resmi olarak geliştirilmiş ve bakımı yapılmaktadır, sıkı güvenlik denetiminden geçmiştir, güvenle kullanabilirsiniz.",
|
||||
"loadingMessage": "Eklenti detayları alınıyor...",
|
||||
"loadingTitle": "Yükleniyor",
|
||||
"title": "Resmi Eklenti Yükle"
|
||||
},
|
||||
"title": "MCP Eklentisi Yükle",
|
||||
"warning": "⚠️ Lütfen bu eklentinin kaynağına güvendiğinizden emin olun, kötü amaçlı eklentiler sistem güvenliğinizi tehlikeye atabilir."
|
||||
},
|
||||
"search": {
|
||||
"apiName": {
|
||||
"crawlMultiPages": "Birden fazla sayfa içeriği oku",
|
||||
"crawlSinglePage": "Sayfa içeriği oku",
|
||||
"search": "Sayfa ara"
|
||||
},
|
||||
"config": {
|
||||
"addKey": "Anahtar ekle",
|
||||
"close": "Sil",
|
||||
"confirm": "Yapılandırma tamamlandı ve yeniden denendi"
|
||||
"confirm": "Yapılandırma tamamlandı ve tekrar denendi"
|
||||
},
|
||||
"crawPages": {
|
||||
"crawling": "Bağlantı tanımlanıyor",
|
||||
"detail": {
|
||||
"preview": "Önizleme",
|
||||
"preview": "Önizle",
|
||||
"raw": "Ham metin",
|
||||
"tooLong": "Metin içeriği çok uzun, diyalog bağlamında yalnızca ilk {{characters}} karakter saklanacak, fazlası diyalog bağlamına dahil edilmeyecek."
|
||||
"tooLong": "Metin çok uzun, sohbet bağlamı sadece ilk {{characters}} karakteri içerir, geri kalanı sohbet bağlamına dahil edilmez"
|
||||
},
|
||||
"meta": {
|
||||
"crawler": "Tarayıcı Modu",
|
||||
"crawler": "Tarama modu",
|
||||
"words": "Karakter sayısı"
|
||||
}
|
||||
},
|
||||
"searchxng": {
|
||||
"baseURL": "Lütfen girin",
|
||||
"description": "SearchXNG'nin URL'sini girin, böylece çevrimiçi arama yapmaya başlayabilirsiniz",
|
||||
"keyPlaceholder": "Anahtarı girin",
|
||||
"title": "SearchXNG Arama Motorunu Yapılandır",
|
||||
"unconfiguredDesc": "Lütfen yöneticinizle iletişime geçin ve SearchXNG arama motoru yapılandırmasını tamamlayın, böylece çevrimiçi arama yapmaya başlayabilirsiniz",
|
||||
"description": "SearchXNG web sitesini girin, internet üzerinden aramaya başlayabilirsiniz",
|
||||
"keyPlaceholder": "Lütfen anahtarı girin",
|
||||
"title": "SearchXNG Arama Motoru Yapılandırması",
|
||||
"unconfiguredDesc": "Lütfen internet aramasına başlamak için yöneticinizle iletişime geçip SearchXNG arama motoru yapılandırmasını tamamlayın",
|
||||
"unconfiguredTitle": "SearchXNG Arama Motoru Henüz Yapılandırılmadı"
|
||||
},
|
||||
"title": "Çevrimiçi Arama"
|
||||
"title": "İnternet Araması"
|
||||
},
|
||||
"setting": "Eklenti Ayarları",
|
||||
"settings": {
|
||||
"capabilities": {
|
||||
"prompts": "İstekler",
|
||||
"prompts": "İstemler",
|
||||
"resources": "Kaynaklar",
|
||||
"title": "Eklenti yetenekleri",
|
||||
"title": "Eklenti Yetenekleri",
|
||||
"tools": "Araçlar"
|
||||
},
|
||||
"configuration": {
|
||||
"title": "Eklenti yapılandırması"
|
||||
"title": "Eklenti Yapılandırması"
|
||||
},
|
||||
"connection": {
|
||||
"args": "Başlatma parametreleri",
|
||||
"command": "Başlatma komutu",
|
||||
"title": "Bağlantı bilgileri",
|
||||
"type": "Bağlantı türü",
|
||||
"url": "Sunucu adresi"
|
||||
"args": "Başlatma Parametreleri",
|
||||
"command": "Başlatma Komutu",
|
||||
"title": "Bağlantı Bilgileri",
|
||||
"type": "Bağlantı Türü",
|
||||
"url": "Sunucu Adresi"
|
||||
},
|
||||
"edit": "Düzenle",
|
||||
"envConfigDescription": "Bu yapılandırmalar MCP sunucusu başlatılırken ortam değişkenleri olarak işleme aktarılacaktır",
|
||||
"httpTypeNotice": "HTTP türündeki MCP eklentileri için yapılandırılması gereken ortam değişkeni yoktur",
|
||||
"envConfigDescription": "Bu yapılandırmalar MCP sunucusu başlatılırken ortam değişkenleri olarak sürece iletilecektir",
|
||||
"httpTypeNotice": "HTTP türündeki MCP eklentileri için yapılandırılacak ortam değişkeni yoktur",
|
||||
"indexUrl": {
|
||||
"title": "Pazar Endeksi",
|
||||
"tooltip": "Çevrimiçi düzenleme şu anda desteklenmiyor. Lütfen dağıtım sırasında çevre değişkenleri üzerinden ayarlayın."
|
||||
"tooltip": "Çevrimiçi düzenleme desteklenmiyor, lütfen dağıtım ortam değişkenleri ile ayarlayın"
|
||||
},
|
||||
"messages": {
|
||||
"connectionUpdateFailed": "Bağlantı bilgisi güncellenemedi",
|
||||
"connectionUpdateFailed": "Bağlantı bilgisi güncellemesi başarısız",
|
||||
"connectionUpdateSuccess": "Bağlantı bilgisi başarıyla güncellendi",
|
||||
"envUpdateFailed": "Ortam değişkeni kaydedilemedi",
|
||||
"envUpdateSuccess": "Ortam değişkeni başarıyla kaydedildi"
|
||||
},
|
||||
"modalDesc": "Eklenti pazarı adresini yapılandırdıktan sonra, özel bir eklenti pazarı kullanabilirsiniz.",
|
||||
"modalDesc": "Eklenti pazar adresini yapılandırdıktan sonra, özel eklenti pazarını kullanabilirsiniz",
|
||||
"rules": {
|
||||
"argsRequired": "Lütfen başlatma parametrelerini girin",
|
||||
"commandRequired": "Lütfen başlatma komutunu girin",
|
||||
"urlRequired": "Lütfen servis adresini girin"
|
||||
"urlRequired": "Lütfen sunucu adresini girin"
|
||||
},
|
||||
"saveSettings": "Ayarları kaydet",
|
||||
"title": "Eklenti Pazarı Ayarla"
|
||||
"saveSettings": "Ayarları Kaydet",
|
||||
"title": "Eklenti Pazarı Ayarları"
|
||||
},
|
||||
"showInPortal": "Detayları çalışma alanında görüntüleyin",
|
||||
"store": {
|
||||
"actions": {
|
||||
"cancel": "Kurulumu iptal et",
|
||||
"confirmUninstall": "Bu eklentiyi kaldırmak üzeresiniz, kaldırdıktan sonra eklenti yapılandırması temizlenecektir, işleminizi onaylayın",
|
||||
"detail": "Detay",
|
||||
"cancel": "Yüklemeyi iptal et",
|
||||
"confirmUninstall": "Bu eklenti kaldırılacak, kaldırma sonrası eklenti yapılandırması silinecektir, işlemi onaylıyor musunuz?",
|
||||
"detail": "Detaylar",
|
||||
"install": "Yükle",
|
||||
"manifest": "Yükleme Dosyasını Düzenle",
|
||||
"manifest": "Kurulum dosyasını düzenle",
|
||||
"settings": "Ayarlar",
|
||||
"uninstall": "Kaldır"
|
||||
},
|
||||
"communityPlugin": "Topluluk Eklentisi",
|
||||
"communityPlugin": "Üçüncü Taraf Topluluk",
|
||||
"customPlugin": "Özel",
|
||||
"empty": "Henüz yüklenmiş eklenti yok",
|
||||
"emptySelectHint": "Detayları önizlemek için bir eklenti seçin",
|
||||
"empty": "Yüklü eklenti yok",
|
||||
"emptySelectHint": "Detayları önizlemek için eklenti seçin",
|
||||
"installAllPlugins": "Tümünü Yükle",
|
||||
"networkError": "Eklenti mağazası alınamadı. Lütfen ağ bağlantınızı kontrol edin ve tekrar deneyin.",
|
||||
"placeholder": "Eklenti adını, açıklamasını veya anahtar kelimeleri ara...",
|
||||
"networkError": "Eklenti mağazası alınamadı, lütfen ağ bağlantınızı kontrol edip tekrar deneyin",
|
||||
"placeholder": "Eklenti adı, açıklaması veya anahtar kelimede ara...",
|
||||
"releasedAt": "{{createdAt}} tarihinde yayınlandı",
|
||||
"tabs": {
|
||||
"installed": "Yüklü",
|
||||
"mcp": "MCP Eklentisi",
|
||||
"old": "LobeChat Eklentisi"
|
||||
"mcp": "MCP Eklentileri",
|
||||
"old": "LobeChat Eklentileri"
|
||||
},
|
||||
"title": "Eklenti Mağazası"
|
||||
},
|
||||
|
||||
@@ -5,11 +5,11 @@
|
||||
"function_call": "Gọi hàm",
|
||||
"off": "Tắt gỡ lỗi",
|
||||
"on": "Xem thông tin gọi plugin",
|
||||
"payload": "Dữ liệu cắm",
|
||||
"payload": "Tải trọng plugin",
|
||||
"pluginState": "Trạng thái plugin",
|
||||
"response": "Kết quả trả về",
|
||||
"title": "Chi tiết plugin",
|
||||
"tool_call": "Yêu cầu công cụ"
|
||||
"tool_call": "Yêu cầu gọi công cụ"
|
||||
},
|
||||
"detailModal": {
|
||||
"customPlugin": {
|
||||
@@ -18,7 +18,7 @@
|
||||
"title": "Đây là một plugin tùy chỉnh"
|
||||
},
|
||||
"emptyState": {
|
||||
"description": "Vui lòng cài đặt plugin này trước để xem các tính năng và tùy chọn cấu hình của plugin",
|
||||
"description": "Vui lòng cài đặt plugin này trước để xem khả năng và tùy chọn cấu hình",
|
||||
"title": "Xem chi tiết plugin sau khi cài đặt"
|
||||
},
|
||||
"info": {
|
||||
@@ -33,10 +33,10 @@
|
||||
"title": "Chi tiết plugin"
|
||||
},
|
||||
"dev": {
|
||||
"confirmDeleteDevPlugin": "Bạn sắp xóa plugin cục bộ này, sau khi xóa sẽ không thể khôi phục, bạn có muốn xóa plugin này không?",
|
||||
"confirmDeleteDevPlugin": "Bạn sắp xóa plugin cục bộ này, sau khi xóa sẽ không thể khôi phục, bạn có chắc muốn xóa plugin này không?",
|
||||
"customParams": {
|
||||
"useProxy": {
|
||||
"label": "Cài đặt thông qua proxy (nếu gặp lỗi truy cập qua các miền, hãy thử bật tùy chọn này và cài đặt lại)"
|
||||
"label": "Cài đặt qua proxy (nếu gặp lỗi truy cập chéo, hãy thử bật tùy chọn này rồi cài lại)"
|
||||
}
|
||||
},
|
||||
"deleteSuccess": "Xóa plugin thành công",
|
||||
@@ -46,14 +46,14 @@
|
||||
"label": "Định danh"
|
||||
},
|
||||
"mode": {
|
||||
"mcp": "MCP Plugin",
|
||||
"mcpExp": "Thí nghiệm",
|
||||
"mcp": "Plugin MCP",
|
||||
"mcpExp": "Thử nghiệm",
|
||||
"url": "Liên kết trực tuyến"
|
||||
},
|
||||
"name": {
|
||||
"desc": "Tiêu đề plugin",
|
||||
"label": "Tiêu đề",
|
||||
"placeholder": "Tìm kiếm công cụ tìm kiếm"
|
||||
"placeholder": "Công cụ tìm kiếm"
|
||||
}
|
||||
},
|
||||
"mcp": {
|
||||
@@ -61,14 +61,14 @@
|
||||
"title": "Cài đặt nâng cao"
|
||||
},
|
||||
"args": {
|
||||
"desc": "Danh sách các tham số được truyền cho lệnh thực thi, thường nhập tên máy chủ MCP hoặc đường dẫn đến tập lệnh khởi động",
|
||||
"desc": "Danh sách tham số truyền cho lệnh thực thi, thường nhập tên máy chủ MCP hoặc đường dẫn script khởi động",
|
||||
"label": "Tham số lệnh",
|
||||
"placeholder": "Ví dụ: mcp-hello-world",
|
||||
"required": "Vui lòng nhập tham số khởi động"
|
||||
},
|
||||
"auth": {
|
||||
"bear": "API Key",
|
||||
"desc": "Chọn phương thức xác thực cho máy chủ MCP",
|
||||
"desc": "Chọn phương thức xác thực máy chủ MCP",
|
||||
"label": "Loại xác thực",
|
||||
"none": "Không cần xác thực",
|
||||
"placeholder": "Vui lòng chọn loại xác thực",
|
||||
@@ -76,101 +76,101 @@
|
||||
"desc": "Nhập API Key hoặc Bearer Token của bạn",
|
||||
"label": "API Key",
|
||||
"placeholder": "sk-xxxxx",
|
||||
"required": "Vui lòng nhập mã xác thực"
|
||||
"required": "Vui lòng nhập token xác thực"
|
||||
}
|
||||
},
|
||||
"avatar": {
|
||||
"label": "Biểu tượng tiện ích"
|
||||
"label": "Biểu tượng plugin"
|
||||
},
|
||||
"command": {
|
||||
"desc": "Tập tin thực thi hoặc kịch bản dùng để khởi động Máy chủ MCP STDIO",
|
||||
"desc": "Tệp thực thi hoặc script dùng để khởi động MCP STDIO Server",
|
||||
"label": "Lệnh",
|
||||
"placeholder": "Ví dụ: npx / uv / docker v.v.",
|
||||
"placeholder": "Ví dụ: npx / uv / docker, v.v.",
|
||||
"required": "Vui lòng nhập lệnh khởi động"
|
||||
},
|
||||
"desc": {
|
||||
"desc": "Mô tả về tiện ích",
|
||||
"label": "Mô tả tiện ích",
|
||||
"placeholder": "Bổ sung thông tin về cách sử dụng và các tình huống của tiện ích này"
|
||||
"desc": "Thêm mô tả cho plugin",
|
||||
"label": "Mô tả plugin",
|
||||
"placeholder": "Bổ sung hướng dẫn sử dụng và kịch bản"
|
||||
},
|
||||
"endpoint": {
|
||||
"desc": "Nhập địa chỉ của máy chủ HTTP Streamable MCP của bạn",
|
||||
"label": "URL Điểm cuối MCP"
|
||||
"desc": "Nhập địa chỉ MCP Streamable HTTP Server của bạn",
|
||||
"label": "URL MCP Endpoint"
|
||||
},
|
||||
"env": {
|
||||
"add": "Thêm một dòng",
|
||||
"desc": "Nhập các biến môi trường cần thiết cho máy chủ MCP của bạn",
|
||||
"duplicateKeyError": "Khóa trường phải là duy nhất",
|
||||
"formValidationFailed": "Xác thực biểu mẫu không thành công, vui lòng kiểm tra định dạng tham số",
|
||||
"add": "Thêm dòng mới",
|
||||
"desc": "Nhập biến môi trường cần thiết cho MCP Server",
|
||||
"duplicateKeyError": "Khóa trường phải duy nhất",
|
||||
"formValidationFailed": "Xác thực biểu mẫu thất bại, vui lòng kiểm tra định dạng tham số",
|
||||
"keyRequired": "Khóa trường không được để trống",
|
||||
"label": "Biến môi trường máy chủ MCP",
|
||||
"stringifyError": "Không thể tuần tự hóa tham số, vui lòng kiểm tra định dạng tham số"
|
||||
"label": "Biến môi trường MCP Server",
|
||||
"stringifyError": "Không thể tuần tự hóa tham số, vui lòng kiểm tra định dạng"
|
||||
},
|
||||
"headers": {
|
||||
"add": "Thêm dòng mới",
|
||||
"desc": "Nhập tiêu đề yêu cầu",
|
||||
"desc": "Nhập header yêu cầu",
|
||||
"label": "HTTP Headers"
|
||||
},
|
||||
"identifier": {
|
||||
"desc": "Chỉ định một tên cho plugin MCP của bạn, cần sử dụng ký tự tiếng Anh",
|
||||
"invalid": "Chỉ có thể nhập ký tự tiếng Anh, số, và hai ký hiệu - và _",
|
||||
"desc": "Đặt tên cho plugin MCP của bạn, phải dùng ký tự tiếng Anh",
|
||||
"invalid": "Định danh chỉ được chứa chữ cái, số, dấu gạch ngang và gạch dưới",
|
||||
"label": "Tên plugin MCP",
|
||||
"placeholder": "Ví dụ: my-mcp-plugin",
|
||||
"required": "Vui lòng nhập định danh dịch vụ MCP"
|
||||
},
|
||||
"previewManifest": "Xem trước tệp mô tả plugin",
|
||||
"quickImport": "Nhập khẩu nhanh cấu hình JSON",
|
||||
"quickImport": "Nhập nhanh cấu hình JSON",
|
||||
"quickImportError": {
|
||||
"empty": "Nội dung nhập vào không được để trống",
|
||||
"empty": "Nội dung nhập không được để trống",
|
||||
"invalidJson": "Định dạng JSON không hợp lệ",
|
||||
"invalidStructure": "Định dạng JSON không hợp lệ"
|
||||
"invalidStructure": "Cấu trúc JSON không hợp lệ"
|
||||
},
|
||||
"stdioNotSupported": "Môi trường hiện tại không hỗ trợ plugin MCP loại stdio",
|
||||
"testConnection": "Kiểm tra kết nối",
|
||||
"testConnectionTip": "Chỉ sau khi kiểm tra kết nối thành công, plugin MCP mới có thể được sử dụng bình thường",
|
||||
"testConnectionTip": "Plugin MCP chỉ có thể sử dụng bình thường khi kiểm tra kết nối thành công",
|
||||
"type": {
|
||||
"desc": "Chọn phương thức giao tiếp của plugin MCP, phiên bản web chỉ hỗ trợ Streamable HTTP",
|
||||
"httpFeature1": "Tương thích với phiên bản web và desktop",
|
||||
"httpFeature2": "Kết nối với máy chủ MCP từ xa, không cần cài đặt cấu hình thêm",
|
||||
"httpShortDesc": "Giao thức truyền thông dựa trên HTTP theo dòng",
|
||||
"httpFeature1": "Tương thích web và desktop",
|
||||
"httpFeature2": "Kết nối máy chủ MCP từ xa, không cần cài đặt thêm",
|
||||
"httpShortDesc": "Giao thức HTTP dạng luồng",
|
||||
"label": "Loại plugin MCP",
|
||||
"stdioFeature1": "Độ trễ truyền thông thấp hơn, phù hợp cho thực thi cục bộ",
|
||||
"stdioFeature2": "Cần cài đặt và chạy máy chủ MCP cục bộ",
|
||||
"stdioNotAvailable": "Chế độ STDIO chỉ khả dụng trên phiên bản desktop",
|
||||
"stdioShortDesc": "Giao thức truyền thông dựa trên đầu vào và đầu ra tiêu chuẩn",
|
||||
"stdioFeature1": "Độ trễ giao tiếp thấp hơn, phù hợp chạy cục bộ",
|
||||
"stdioFeature2": "Cần cài đặt MCP server chạy cục bộ",
|
||||
"stdioNotAvailable": "Chế độ STDIO chỉ có trên bản desktop",
|
||||
"stdioShortDesc": "Giao thức dựa trên nhập xuất chuẩn",
|
||||
"title": "Loại plugin MCP"
|
||||
},
|
||||
"url": {
|
||||
"desc": "Nhập địa chỉ HTTP Streamable của máy chủ MCP của bạn, không hỗ trợ chế độ SSE",
|
||||
"invalid": "Vui lòng nhập địa chỉ URL hợp lệ",
|
||||
"label": "URL Điểm cuối HTTP",
|
||||
"desc": "Nhập địa chỉ MCP Server Streamable HTTP, không hỗ trợ chế độ SSE",
|
||||
"invalid": "Vui lòng nhập URL hợp lệ",
|
||||
"label": "URL Streamable HTTP Endpoint",
|
||||
"required": "Vui lòng nhập URL dịch vụ MCP"
|
||||
}
|
||||
},
|
||||
"meta": {
|
||||
"author": {
|
||||
"desc": "Tác giả của plugin",
|
||||
"desc": "Tác giả plugin",
|
||||
"label": "Tác giả"
|
||||
},
|
||||
"avatar": {
|
||||
"desc": "Biểu tượng của plugin, có thể sử dụng Emoji hoặc URL",
|
||||
"desc": "Biểu tượng plugin, có thể dùng Emoji hoặc URL",
|
||||
"label": "Biểu tượng"
|
||||
},
|
||||
"description": {
|
||||
"desc": "Mô tả plugin",
|
||||
"label": "Mô tả",
|
||||
"placeholder": "Tìm kiếm công cụ tìm kiếm để lấy thông tin"
|
||||
"placeholder": "Tìm kiếm thông tin qua công cụ tìm kiếm"
|
||||
},
|
||||
"formFieldRequired": "Trường này là bắt buộc",
|
||||
"homepage": {
|
||||
"desc": "Trang chủ của plugin",
|
||||
"desc": "Trang chủ plugin",
|
||||
"label": "Trang chủ"
|
||||
},
|
||||
"identifier": {
|
||||
"desc": "Định danh duy nhất của plugin, sẽ tự động nhận dạng từ manifest",
|
||||
"errorDuplicate": "Định danh trùng với plugin đã có, vui lòng sửa đổi định danh",
|
||||
"desc": "Định danh duy nhất của plugin, tự động nhận diện từ manifest",
|
||||
"errorDuplicate": "Định danh trùng với plugin đã có, vui lòng đổi tên",
|
||||
"label": "Định danh",
|
||||
"pattenErrorMessage": "Chỉ có thể nhập ký tự tiếng Anh, số, - và _"
|
||||
"pattenErrorMessage": "Chỉ được nhập ký tự tiếng Anh, số, dấu - và _"
|
||||
},
|
||||
"lobe": "Plugin {{appName}}",
|
||||
"manifest": {
|
||||
@@ -183,11 +183,11 @@
|
||||
"title": {
|
||||
"desc": "Tiêu đề plugin",
|
||||
"label": "Tiêu đề",
|
||||
"placeholder": "Tìm kiếm công cụ tìm kiếm"
|
||||
"placeholder": "Công cụ tìm kiếm"
|
||||
}
|
||||
},
|
||||
"metaConfig": "Cấu hình thông tin plugin",
|
||||
"modalDesc": "Sau khi thêm plugin tùy chỉnh, có thể sử dụng để xác minh phát triển plugin, cũng có thể sử dụng trực tiếp trong cuộc trò chuyện. Vui lòng tham khảo<1>tài liệu phát triển↗</>",
|
||||
"metaConfig": "Cấu hình thông tin meta plugin",
|
||||
"modalDesc": "Sau khi thêm plugin tùy chỉnh, có thể dùng để kiểm tra phát triển hoặc sử dụng trực tiếp trong hội thoại. Vui lòng tham khảo <1>tài liệu phát triển↗</> để biết thêm chi tiết.",
|
||||
"openai": {
|
||||
"importUrl": "Nhập từ liên kết URL",
|
||||
"schema": "Schema"
|
||||
@@ -195,44 +195,44 @@
|
||||
"preview": {
|
||||
"api": {
|
||||
"noParams": "Công cụ này không có tham số",
|
||||
"noResults": "Không tìm thấy API nào phù hợp với điều kiện tìm kiếm",
|
||||
"noResults": "Không tìm thấy API phù hợp với điều kiện tìm kiếm",
|
||||
"params": "Tham số:",
|
||||
"searchPlaceholder": "Tìm kiếm công cụ..."
|
||||
},
|
||||
"card": "Xem trước hiệu ứng plugin",
|
||||
"card": "Xem trước hiệu ứng hiển thị plugin",
|
||||
"desc": "Xem trước mô tả plugin",
|
||||
"empty": {
|
||||
"desc": "Sau khi hoàn thành cấu hình, bạn sẽ có thể xem trước khả năng của các công cụ hỗ trợ plugin tại đây",
|
||||
"desc": "Sau khi cấu hình xong, bạn có thể xem trước khả năng công cụ hỗ trợ tại đây",
|
||||
"title": "Bắt đầu xem trước sau khi cấu hình plugin"
|
||||
},
|
||||
"title": "Xem trước tên plugin"
|
||||
},
|
||||
"save": "Cài đặt plugin",
|
||||
"saveSuccess": "Lưu cài đặt plugin thành công",
|
||||
"saveSuccess": "Lưu cấu hình plugin thành công",
|
||||
"tabs": {
|
||||
"manifest": "Danh sách mô tả chức năng (Manifest)",
|
||||
"meta": "Thông tin plugin"
|
||||
"meta": "Thông tin meta plugin"
|
||||
},
|
||||
"title": {
|
||||
"create": "Thêm plugin tùy chỉnh",
|
||||
"edit": "Chỉnh sửa plugin tùy chỉnh"
|
||||
},
|
||||
"type": {
|
||||
"lobe": "Plugin LobeChat",
|
||||
"lobe": "Plugin {{appName}}",
|
||||
"openai": "Plugin OpenAI"
|
||||
},
|
||||
"update": "Cập nhật",
|
||||
"updateSuccess": "Cập nhật cài đặt plugin thành công"
|
||||
"updateSuccess": "Cập nhật cấu hình plugin thành công"
|
||||
},
|
||||
"error": {
|
||||
"fetchError": "Lỗi khi yêu cầu liên kết manifest, vui lòng đảm bảo tính hợp lệ của liên kết và kiểm tra xem liên kết có cho phép truy cập qua tên miền khác không",
|
||||
"fetchError": "Yêu cầu lấy liên kết manifest thất bại, vui lòng đảm bảo liên kết hợp lệ và cho phép truy cập chéo",
|
||||
"installError": "Cài đặt plugin {{name}} thất bại",
|
||||
"manifestInvalid": "Manifest không tuân theo quy tắc, kết quả kiểm tra: \n\n {{error}}",
|
||||
"noManifest": "Tệp mô tả không tồn tại",
|
||||
"openAPIInvalid": "OpenAPI phân tích thất bại, lỗi: \n\n {{error}}",
|
||||
"manifestInvalid": "Manifest không hợp lệ, kết quả kiểm tra: \n\n {{error}}",
|
||||
"noManifest": "Không tìm thấy tệp mô tả",
|
||||
"openAPIInvalid": "Phân tích OpenAPI thất bại, lỗi: \n\n {{error}}",
|
||||
"reinstallError": "Làm mới plugin {{name}} thất bại",
|
||||
"testConnectionFailed": "Lấy Manifest thất bại: {{error}}",
|
||||
"urlError": "Liên kết này không trả về nội dung dạng JSON, vui lòng đảm bảo rằng đó là một liên kết hợp lệ"
|
||||
"urlError": "Liên kết này không trả về nội dung định dạng JSON, vui lòng đảm bảo liên kết hợp lệ"
|
||||
},
|
||||
"inspector": {
|
||||
"args": "Xem danh sách tham số",
|
||||
@@ -240,7 +240,7 @@
|
||||
},
|
||||
"list": {
|
||||
"item": {
|
||||
"deprecated.title": "Đã loại bỏ",
|
||||
"deprecated.title": "Đã xóa",
|
||||
"local.config": "Cấu hình",
|
||||
"local.title": "Tùy chỉnh"
|
||||
}
|
||||
@@ -256,22 +256,22 @@
|
||||
"readLocalFile": "Đọc nội dung tệp",
|
||||
"renameLocalFile": "Đổi tên",
|
||||
"searchLocalFiles": "Tìm kiếm tệp",
|
||||
"writeLocalFile": "Ghi vào tệp"
|
||||
"writeLocalFile": "Ghi tệp"
|
||||
},
|
||||
"title": "Tệp cục bộ"
|
||||
},
|
||||
"mcpInstall": {
|
||||
"CHECKING_INSTALLATION": "Đang kiểm tra môi trường cài đặt...",
|
||||
"COMPLETED": "Cài đặt hoàn tất",
|
||||
"CONFIGURATION_REQUIRED": "Vui lòng hoàn thành cấu hình liên quan trước khi tiếp tục cài đặt",
|
||||
"COMPLETED": "Hoàn thành cài đặt",
|
||||
"CONFIGURATION_REQUIRED": "Vui lòng hoàn thành cấu hình trước khi tiếp tục cài đặt",
|
||||
"ERROR": "Lỗi cài đặt",
|
||||
"FETCHING_MANIFEST": "Đang lấy tệp mô tả plugin...",
|
||||
"GETTING_SERVER_MANIFEST": "Khởi tạo máy chủ MCP...",
|
||||
"INSTALLING_PLUGIN": "Đang cài đặt plugin...",
|
||||
"configurationDescription": "Plugin MCP này cần cấu hình các tham số để hoạt động bình thường, vui lòng điền thông tin cấu hình cần thiết",
|
||||
"configurationDescription": "Plugin MCP này cần cấu hình tham số để hoạt động bình thường, vui lòng điền thông tin cần thiết",
|
||||
"configurationRequired": "Cấu hình tham số plugin",
|
||||
"continueInstall": "Tiếp tục cài đặt",
|
||||
"dependenciesDescription": "Plugin này cần cài đặt các phụ thuộc hệ thống sau để hoạt động bình thường, vui lòng làm theo hướng dẫn để cài đặt các phụ thuộc còn thiếu, sau đó nhấn kiểm tra lại để tiếp tục cài đặt.",
|
||||
"dependenciesDescription": "Plugin này cần cài đặt các phụ thuộc hệ thống sau để hoạt động, vui lòng làm theo hướng dẫn để cài đặt các phụ thuộc còn thiếu, sau đó nhấn kiểm tra lại để tiếp tục cài đặt.",
|
||||
"dependenciesRequired": "Vui lòng cài đặt các phụ thuộc hệ thống của plugin",
|
||||
"dependencyStatus": {
|
||||
"installed": "Đã cài đặt",
|
||||
@@ -290,30 +290,90 @@
|
||||
"showDetails": "Xem chi tiết"
|
||||
},
|
||||
"errorTypes": {
|
||||
"AUTHORIZATION_ERROR": "Lỗi xác thực ủy quyền",
|
||||
"AUTHORIZATION_ERROR": "Lỗi xác thực",
|
||||
"CONNECTION_FAILED": "Kết nối thất bại",
|
||||
"INITIALIZATION_TIMEOUT": "Khởi tạo quá thời gian",
|
||||
"PROCESS_SPAWN_ERROR": "Khởi tạo tiến trình thất bại",
|
||||
"PROCESS_SPAWN_ERROR": "Khởi động tiến trình thất bại",
|
||||
"UNKNOWN_ERROR": "Lỗi không xác định",
|
||||
"VALIDATION_ERROR": "Xác thực tham số thất bại"
|
||||
},
|
||||
"installError": "Cài đặt plugin MCP thất bại, nguyên nhân: {{detail}}",
|
||||
"installError": "Cài đặt plugin MCP thất bại, lý do: {{detail}}",
|
||||
"installMethods": {
|
||||
"manual": "Cài đặt thủ công:",
|
||||
"recommended": "Phương thức cài đặt được khuyến nghị:"
|
||||
"recommended": "Phương pháp cài đặt được khuyến nghị:"
|
||||
},
|
||||
"recheckDependencies": "Kiểm tra lại",
|
||||
"skipDependencies": "Bỏ qua kiểm tra"
|
||||
},
|
||||
"pluginList": "Danh sách plugin",
|
||||
"protocolInstall": {
|
||||
"actions": {
|
||||
"install": "Cài đặt",
|
||||
"installAnyway": "Vẫn cài đặt",
|
||||
"installed": "Đã cài đặt"
|
||||
},
|
||||
"config": {
|
||||
"args": "Tham số",
|
||||
"command": "Lệnh",
|
||||
"env": "Biến môi trường",
|
||||
"headers": "Header yêu cầu",
|
||||
"title": "Thông tin cấu hình",
|
||||
"type": {
|
||||
"http": "Loại: HTTP",
|
||||
"label": "Loại",
|
||||
"stdio": "Loại: Stdio"
|
||||
},
|
||||
"url": "Địa chỉ dịch vụ"
|
||||
},
|
||||
"custom": {
|
||||
"badge": "Plugin tùy chỉnh",
|
||||
"security": {
|
||||
"description": "Plugin này chưa được xác thực chính thức, việc cài đặt có thể tiềm ẩn rủi ro bảo mật! Vui lòng đảm bảo bạn tin tưởng nguồn plugin.",
|
||||
"title": "⚠️ Cảnh báo rủi ro bảo mật"
|
||||
},
|
||||
"title": "Cài đặt plugin tùy chỉnh"
|
||||
},
|
||||
"marketplace": {
|
||||
"title": "Cài đặt plugin bên thứ ba",
|
||||
"trustedBy": "Cung cấp bởi {{name}}",
|
||||
"unverified": {
|
||||
"title": "Plugin bên thứ ba chưa xác thực",
|
||||
"warning": "Plugin này đến từ thị trường bên thứ ba chưa được xác thực, vui lòng xác nhận bạn tin tưởng nguồn trước khi cài đặt."
|
||||
},
|
||||
"verified": "Đã xác thực"
|
||||
},
|
||||
"messages": {
|
||||
"connectionTestFailed": "Kiểm tra kết nối thất bại",
|
||||
"installError": "Cài đặt plugin thất bại, vui lòng thử lại",
|
||||
"installSuccess": "Cài đặt plugin {{name}} thành công!",
|
||||
"manifestError": "Lấy chi tiết plugin thất bại, vui lòng kiểm tra kết nối mạng và thử lại",
|
||||
"manifestNotFound": "Không tìm thấy tệp mô tả plugin"
|
||||
},
|
||||
"meta": {
|
||||
"author": "Tác giả",
|
||||
"homepage": "Trang chủ",
|
||||
"identifier": "Định danh",
|
||||
"source": "Nguồn",
|
||||
"version": "Phiên bản"
|
||||
},
|
||||
"official": {
|
||||
"badge": "Plugin chính thức của LobeHub",
|
||||
"description": "Plugin này được phát triển và duy trì bởi LobeHub chính thức, đã qua kiểm tra bảo mật nghiêm ngặt, bạn có thể yên tâm sử dụng.",
|
||||
"loadingMessage": "Đang lấy chi tiết plugin...",
|
||||
"loadingTitle": "Đang tải",
|
||||
"title": "Cài đặt plugin chính thức"
|
||||
},
|
||||
"title": "Cài đặt plugin MCP",
|
||||
"warning": "⚠️ Vui lòng xác nhận bạn tin tưởng nguồn plugin này, plugin độc hại có thể gây nguy hiểm cho hệ thống của bạn."
|
||||
},
|
||||
"search": {
|
||||
"apiName": {
|
||||
"crawlMultiPages": "Đọc nội dung của nhiều trang",
|
||||
"crawlMultiPages": "Đọc nội dung nhiều trang",
|
||||
"crawlSinglePage": "Đọc nội dung trang",
|
||||
"search": "Tìm kiếm trang"
|
||||
},
|
||||
"config": {
|
||||
"addKey": "Thêm khóa",
|
||||
"addKey": "Thêm khóa bí mật",
|
||||
"close": "Xóa",
|
||||
"confirm": "Đã hoàn thành cấu hình và thử lại"
|
||||
},
|
||||
@@ -322,7 +382,7 @@
|
||||
"detail": {
|
||||
"preview": "Xem trước",
|
||||
"raw": "Văn bản gốc",
|
||||
"tooLong": "Nội dung văn bản quá dài, chỉ giữ lại {{characters}} ký tự đầu tiên trong ngữ cảnh cuộc trò chuyện, phần vượt quá sẽ không được tính vào ngữ cảnh cuộc trò chuyện"
|
||||
"tooLong": "Nội dung văn bản quá dài, ngữ cảnh hội thoại chỉ giữ lại {{characters}} ký tự đầu, phần vượt quá không được tính vào ngữ cảnh."
|
||||
},
|
||||
"meta": {
|
||||
"crawler": "Chế độ thu thập",
|
||||
@@ -330,11 +390,11 @@
|
||||
}
|
||||
},
|
||||
"searchxng": {
|
||||
"baseURL": "Nhập vào",
|
||||
"description": "Nhập URL của SearchXNG để bắt đầu tìm kiếm trực tuyến",
|
||||
"keyPlaceholder": "Nhập khóa",
|
||||
"baseURL": "Vui lòng nhập",
|
||||
"description": "Nhập địa chỉ SearchXNG để bắt đầu tìm kiếm trực tuyến",
|
||||
"keyPlaceholder": "Vui lòng nhập khóa bí mật",
|
||||
"title": "Cấu hình công cụ tìm kiếm SearchXNG",
|
||||
"unconfiguredDesc": "Vui lòng liên hệ với quản trị viên để hoàn thành cấu hình công cụ tìm kiếm SearchXNG, để bắt đầu tìm kiếm trực tuyến",
|
||||
"unconfiguredDesc": "Vui lòng liên hệ quản trị viên để hoàn thành cấu hình SearchXNG, sau đó có thể bắt đầu tìm kiếm trực tuyến",
|
||||
"unconfiguredTitle": "Chưa cấu hình công cụ tìm kiếm SearchXNG"
|
||||
},
|
||||
"title": "Tìm kiếm trực tuyến"
|
||||
@@ -358,11 +418,11 @@
|
||||
"url": "Địa chỉ dịch vụ"
|
||||
},
|
||||
"edit": "Chỉnh sửa",
|
||||
"envConfigDescription": "Các cấu hình này sẽ được truyền dưới dạng biến môi trường khi máy chủ MCP khởi động",
|
||||
"httpTypeNotice": "Plugin MCP loại HTTP hiện không có biến môi trường cần cấu hình",
|
||||
"envConfigDescription": "Các cấu hình này sẽ được truyền dưới dạng biến môi trường khi MCP server khởi động",
|
||||
"httpTypeNotice": "Plugin MCP loại HTTP hiện chưa cần cấu hình biến môi trường",
|
||||
"indexUrl": {
|
||||
"title": "Chỉ mục thị trường",
|
||||
"tooltip": "Hiện không hỗ trợ chỉnh sửa trực tuyến, vui lòng thiết lập thông qua biến môi trường khi triển khai"
|
||||
"tooltip": "Hiện chưa hỗ trợ chỉnh sửa trực tuyến, vui lòng cấu hình qua biến môi trường khi triển khai"
|
||||
},
|
||||
"messages": {
|
||||
"connectionUpdateFailed": "Cập nhật thông tin kết nối thất bại",
|
||||
@@ -379,28 +439,28 @@
|
||||
"saveSettings": "Lưu cài đặt",
|
||||
"title": "Cài đặt thị trường plugin"
|
||||
},
|
||||
"showInPortal": "Vui lòng xem chi tiết trong khu vực làm việc",
|
||||
"showInPortal": "Vui lòng xem chi tiết trong không gian làm việc",
|
||||
"store": {
|
||||
"actions": {
|
||||
"cancel": "Hủy cài đặt",
|
||||
"confirmUninstall": "Sắp gỡ bỏ plugin này, sau khi gỡ bỏ sẽ xóa cấu hình của plugin này, vui lòng xác nhận hành động của bạn",
|
||||
"confirmUninstall": "Bạn sắp gỡ cài đặt plugin này, thao tác sẽ xóa cấu hình plugin, vui lòng xác nhận",
|
||||
"detail": "Chi tiết",
|
||||
"install": "Cài đặt",
|
||||
"manifest": "Chỉnh sửa tệp cài đặt",
|
||||
"settings": "Cài đặt",
|
||||
"uninstall": "Gỡ bỏ"
|
||||
"uninstall": "Gỡ cài đặt"
|
||||
},
|
||||
"communityPlugin": "Cộng đồng bên thứ ba",
|
||||
"customPlugin": "Tùy chỉnh",
|
||||
"empty": "Hiện chưa có plugin được cài đặt",
|
||||
"emptySelectHint": "Chọn plugin để xem trước thông tin chi tiết",
|
||||
"empty": "Chưa có plugin đã cài đặt",
|
||||
"emptySelectHint": "Chọn plugin để xem chi tiết",
|
||||
"installAllPlugins": "Cài đặt tất cả",
|
||||
"networkError": "Lấy cửa hàng plugin thất bại, vui lòng kiểm tra kết nối mạng và thử lại",
|
||||
"placeholder": "Tìm kiếm tên hoặc mô tả plugin...",
|
||||
"releasedAt": "Đã phát hành vào {{createdAt}}",
|
||||
"placeholder": "Tìm kiếm tên, mô tả hoặc từ khóa plugin...",
|
||||
"releasedAt": "Phát hành vào {{createdAt}}",
|
||||
"tabs": {
|
||||
"installed": "Đã cài đặt",
|
||||
"mcp": "Tiện ích MCP",
|
||||
"mcp": "Plugin MCP",
|
||||
"old": "Plugin LobeChat"
|
||||
},
|
||||
"title": "Cửa hàng plugin"
|
||||
|
||||
@@ -306,6 +306,66 @@
|
||||
"skipDependencies": "跳过检查"
|
||||
},
|
||||
"pluginList": "插件列表",
|
||||
"protocolInstall": {
|
||||
"actions": {
|
||||
"install": "安装",
|
||||
"installAnyway": "仍要安装",
|
||||
"installed": "已安装"
|
||||
},
|
||||
"config": {
|
||||
"args": "参数",
|
||||
"command": "命令",
|
||||
"env": "环境变量",
|
||||
"headers": "请求头",
|
||||
"title": "配置信息",
|
||||
"type": {
|
||||
"http": "类型: HTTP",
|
||||
"label": "类型",
|
||||
"stdio": "类型: Stdio"
|
||||
},
|
||||
"url": "服务地址"
|
||||
},
|
||||
"custom": {
|
||||
"badge": "自定义插件",
|
||||
"security": {
|
||||
"description": "此插件未经过官方验证,安装可能存在安全风险!请确保您信任插件来源。",
|
||||
"title": "⚠️ 安全风险提示"
|
||||
},
|
||||
"title": "安装自定义插件"
|
||||
},
|
||||
"marketplace": {
|
||||
"title": "安装第三方插件",
|
||||
"trustedBy": "由 {{name}} 提供",
|
||||
"unverified": {
|
||||
"title": "未经验证的第三方插件",
|
||||
"warning": "此插件来自未验证的第三方市场,安装前请确认您信任该来源。"
|
||||
},
|
||||
"verified": "已验证"
|
||||
},
|
||||
"messages": {
|
||||
"connectionTestFailed": "连接测试失败",
|
||||
"installError": "插件安装失败,请重试",
|
||||
"installSuccess": "插件 {{name}} 安装成功!",
|
||||
"manifestError": "获取插件详情失败,请检查网络连接后重试",
|
||||
"manifestNotFound": "未能获取插件描述文件"
|
||||
},
|
||||
"meta": {
|
||||
"author": "作者",
|
||||
"homepage": "主页",
|
||||
"identifier": "标识符",
|
||||
"source": "来源",
|
||||
"version": "版本"
|
||||
},
|
||||
"official": {
|
||||
"badge": "LobeHub 官方插件",
|
||||
"description": "此插件由 LobeHub 官方开发和维护,经过严格的安全审核,可放心使用。",
|
||||
"loadingMessage": "正在获取插件详情...",
|
||||
"loadingTitle": "加载中",
|
||||
"title": "安装官方插件"
|
||||
},
|
||||
"title": "安装 MCP 插件",
|
||||
"warning": "⚠️ 请确认您信任此插件的来源,恶意插件可能会危害您的系统安全。"
|
||||
},
|
||||
"search": {
|
||||
"apiName": {
|
||||
"crawlMultiPages": "读取多个页面内容",
|
||||
|
||||
@@ -1,25 +1,25 @@
|
||||
{
|
||||
"confirm": "確定",
|
||||
"debug": {
|
||||
"arguments": "參數",
|
||||
"function_call": "函式呼叫",
|
||||
"off": "關閉偵錯",
|
||||
"on": "查看插件呼叫資訊",
|
||||
"arguments": "調用參數",
|
||||
"function_call": "函數調用",
|
||||
"off": "關閉調試",
|
||||
"on": "查看插件調用信息",
|
||||
"payload": "插件載荷",
|
||||
"pluginState": "插件狀態",
|
||||
"response": "回應",
|
||||
"pluginState": "插件 State",
|
||||
"response": "返回結果",
|
||||
"title": "插件詳情",
|
||||
"tool_call": "工具呼叫"
|
||||
"tool_call": "工具調用請求"
|
||||
},
|
||||
"detailModal": {
|
||||
"customPlugin": {
|
||||
"description": "請前往編輯頁面查看詳情",
|
||||
"editBtn": "立即編輯",
|
||||
"title": "這是一個自訂插件"
|
||||
"title": "這是一個自定義插件"
|
||||
},
|
||||
"emptyState": {
|
||||
"description": "請先安裝此外掛,以查看外掛功能和設定選項",
|
||||
"title": "安裝後查看外掛詳情"
|
||||
"description": "請先安裝此插件,以查看插件能力和配置選項",
|
||||
"title": "安裝後查看插件詳情"
|
||||
},
|
||||
"info": {
|
||||
"description": "API 描述",
|
||||
@@ -27,23 +27,23 @@
|
||||
},
|
||||
"tabs": {
|
||||
"info": "插件能力",
|
||||
"manifest": "安裝檔案",
|
||||
"settings": "設定"
|
||||
"manifest": "安裝文件",
|
||||
"settings": "設置"
|
||||
},
|
||||
"title": "插件詳情"
|
||||
},
|
||||
"dev": {
|
||||
"confirmDeleteDevPlugin": "您確定要刪除此本機外掛嗎?一旦刪除,將無法復原。",
|
||||
"confirmDeleteDevPlugin": "即將刪除該本地插件,刪除後將無法找回,是否刪除該插件?",
|
||||
"customParams": {
|
||||
"useProxy": {
|
||||
"label": "透過代理安裝(若遇到跨域訪問錯誤,可嘗試開啟該選項後重新安裝)"
|
||||
"label": "通過代理安裝(如遇到跨域訪問錯誤,可嘗試開啟該選項後重新安裝)"
|
||||
}
|
||||
},
|
||||
"deleteSuccess": "外掛已成功刪除",
|
||||
"deleteSuccess": "插件刪除成功",
|
||||
"manifest": {
|
||||
"identifier": {
|
||||
"desc": "外掛的唯一識別碼",
|
||||
"label": "識別碼"
|
||||
"desc": "插件的唯一標識",
|
||||
"label": "標識符"
|
||||
},
|
||||
"mode": {
|
||||
"mcp": "MCP 插件",
|
||||
@@ -51,30 +51,30 @@
|
||||
"url": "線上連結"
|
||||
},
|
||||
"name": {
|
||||
"desc": "外掛的名稱",
|
||||
"label": "名稱",
|
||||
"desc": "插件標題",
|
||||
"label": "標題",
|
||||
"placeholder": "搜尋引擎"
|
||||
}
|
||||
},
|
||||
"mcp": {
|
||||
"advanced": {
|
||||
"title": "進階設定"
|
||||
"title": "高級設置"
|
||||
},
|
||||
"args": {
|
||||
"desc": "傳遞給執行命令的參數列表,一般在這裡輸入 MCP 伺服器名稱,或啟動腳本路徑",
|
||||
"label": "命令參數",
|
||||
"placeholder": "例如:--port 8080 --debug",
|
||||
"placeholder": "例如:mcp-hello-world",
|
||||
"required": "請輸入啟動參數"
|
||||
},
|
||||
"auth": {
|
||||
"bear": "API 金鑰",
|
||||
"bear": "API Key",
|
||||
"desc": "選擇 MCP 伺服器的認證方式",
|
||||
"label": "認證類型",
|
||||
"none": "無需認證",
|
||||
"placeholder": "請選擇認證類型",
|
||||
"token": {
|
||||
"desc": "輸入你的 API 金鑰或 Bearer Token",
|
||||
"label": "API 金鑰",
|
||||
"desc": "輸入你的 API Key 或 Bearer Token",
|
||||
"label": "API Key",
|
||||
"placeholder": "sk-xxxxx",
|
||||
"required": "請輸入認證令牌"
|
||||
}
|
||||
@@ -83,9 +83,9 @@
|
||||
"label": "插件圖示"
|
||||
},
|
||||
"command": {
|
||||
"desc": "用於啟動 MCP STDIO 插件的可執行文件或腳本",
|
||||
"desc": "用於啟動 MCP STDIO Server 的可執行檔或腳本",
|
||||
"label": "命令",
|
||||
"placeholder": "例如:python main.py 或 /path/to/executable",
|
||||
"placeholder": "例如:npx / uv / docker 等",
|
||||
"required": "請輸入啟動命令"
|
||||
},
|
||||
"desc": {
|
||||
@@ -109,30 +109,30 @@
|
||||
"headers": {
|
||||
"add": "新增一行",
|
||||
"desc": "輸入請求標頭",
|
||||
"label": "HTTP 標頭"
|
||||
"label": "HTTP Headers"
|
||||
},
|
||||
"identifier": {
|
||||
"desc": "為你的 MCP 插件指定一個名稱,需要使用英文字符",
|
||||
"invalid": "只能輸入英文字符、數字、- 和_ 這兩個符號",
|
||||
"invalid": "標識符只能包含字母、數字、連字號和底線",
|
||||
"label": "MCP 插件名稱",
|
||||
"placeholder": "例如:my-mcp-plugin",
|
||||
"required": "請輸入 MCP 服務標識符"
|
||||
},
|
||||
"previewManifest": "預覽插件描述文件",
|
||||
"quickImport": "快速匯入 JSON 配置",
|
||||
"quickImport": "快速導入 JSON 配置",
|
||||
"quickImportError": {
|
||||
"empty": "輸入內容不能為空",
|
||||
"invalidJson": "無效的 JSON 格式",
|
||||
"invalidStructure": "JSON 格式無效"
|
||||
},
|
||||
"stdioNotSupported": "當前環境不支持 stdio 類型的 MCP 插件",
|
||||
"stdioNotSupported": "當前環境不支援 stdio 類型的 MCP 插件",
|
||||
"testConnection": "測試連接",
|
||||
"testConnectionTip": "測試連接成功後 MCP 插件才可以被正常使用",
|
||||
"type": {
|
||||
"desc": "選擇 MCP 插件的通信方式,網頁版只支持 Streamable HTTP",
|
||||
"httpFeature1": "兼容網頁版與桌面端",
|
||||
"desc": "選擇 MCP 插件的通訊方式,網頁版只支援 Streamable HTTP",
|
||||
"httpFeature1": "相容網頁版與桌面端",
|
||||
"httpFeature2": "連接遠端 MCP 伺服器, 無需額外安裝配置",
|
||||
"httpShortDesc": "基於串流 HTTP 的通訊協議",
|
||||
"httpShortDesc": "基於串流式 HTTP 的通訊協議",
|
||||
"label": "MCP 插件類型",
|
||||
"stdioFeature1": "更低的通訊延遲, 適合本地執行",
|
||||
"stdioFeature2": "需在本地安裝運行 MCP 伺服器",
|
||||
@@ -141,94 +141,94 @@
|
||||
"title": "MCP 插件類型"
|
||||
},
|
||||
"url": {
|
||||
"desc": "輸入你的 MCP 伺服器可串流的 HTTP 地址,不支援 SSE 模式",
|
||||
"desc": "輸入你的 MCP Server Streamable HTTP 地址,不支援 SSE 模式",
|
||||
"invalid": "請輸入有效的 URL 地址",
|
||||
"label": "HTTP Endpoint URL",
|
||||
"label": "Streamable HTTP Endpoint URL",
|
||||
"required": "請輸入 MCP 服務 URL"
|
||||
}
|
||||
},
|
||||
"meta": {
|
||||
"author": {
|
||||
"desc": "外掛的作者",
|
||||
"desc": "插件的作者",
|
||||
"label": "作者"
|
||||
},
|
||||
"avatar": {
|
||||
"desc": "外掛的圖示,可以是 Emoji 或網址",
|
||||
"desc": "插件的圖示,可以使用 Emoji,也可以使用 URL",
|
||||
"label": "圖示"
|
||||
},
|
||||
"description": {
|
||||
"desc": "外掛的描述",
|
||||
"desc": "插件描述",
|
||||
"label": "描述",
|
||||
"placeholder": "從搜尋引擎取得資訊"
|
||||
"placeholder": "查詢搜尋引擎獲取資訊"
|
||||
},
|
||||
"formFieldRequired": "此欄位必填",
|
||||
"formFieldRequired": "該欄位為必填項",
|
||||
"homepage": {
|
||||
"desc": "外掛的官方首頁",
|
||||
"desc": "插件的首頁",
|
||||
"label": "首頁"
|
||||
},
|
||||
"identifier": {
|
||||
"desc": "外掛的唯一識別碼,只支援英數字元、連字號 -,以及底線 _",
|
||||
"errorDuplicate": "此識別碼已被其他外掛使用,請更改識別碼",
|
||||
"label": "識別碼",
|
||||
"pattenErrorMessage": "只允許英數字元、連字號 -,以及底線 _"
|
||||
"desc": "插件的唯一標識,將從 manifest 中自動識別",
|
||||
"errorDuplicate": "標識符和已有插件重複,請修改標識符",
|
||||
"label": "標識符",
|
||||
"pattenErrorMessage": "只能輸入英文字符、數字 、- 和_ 這兩個符號"
|
||||
},
|
||||
"lobe": "{{appName}} 插件",
|
||||
"manifest": {
|
||||
"desc": "{{appName}}將會透過該連結安裝插件",
|
||||
"label": "插件描述檔 (Manifest) URL",
|
||||
"desc": "{{appName}}將會通過該連結安裝插件",
|
||||
"label": "插件描述文件 (Manifest) URL",
|
||||
"preview": "預覽 Manifest",
|
||||
"refresh": "重新載入"
|
||||
"refresh": "刷新"
|
||||
},
|
||||
"openai": "OpenAI 插件",
|
||||
"title": {
|
||||
"desc": "外掛的名稱",
|
||||
"label": "名稱",
|
||||
"desc": "插件標題",
|
||||
"label": "標題",
|
||||
"placeholder": "搜尋引擎"
|
||||
}
|
||||
},
|
||||
"metaConfig": "外掛後設資料設定",
|
||||
"modalDesc": "添加自訂插件後,可用於插件開發驗證,也可直接在會話中使用。插件開發請參考<1>開發文件↗</>",
|
||||
"metaConfig": "插件元信息配置",
|
||||
"modalDesc": "添加自定義插件後,可用於插件開發驗證,也可直接在會話中使用。插件開發請參考<1>開發文檔↗</>",
|
||||
"openai": {
|
||||
"importUrl": "從 URL 連結匯入",
|
||||
"importUrl": "從 URL 連結導入",
|
||||
"schema": "Schema"
|
||||
},
|
||||
"preview": {
|
||||
"api": {
|
||||
"noParams": "該工具沒有參數",
|
||||
"noResults": "未找到符合搜索條件的 API",
|
||||
"params": "參數:",
|
||||
"searchPlaceholder": "搜索工具..."
|
||||
"noResults": "未找到符合搜尋條件的 API",
|
||||
"params": "參數:",
|
||||
"searchPlaceholder": "搜尋工具..."
|
||||
},
|
||||
"card": "外掛顯示預覽",
|
||||
"desc": "外掛描述預覽",
|
||||
"card": "預覽插件展示效果",
|
||||
"desc": "預覽插件描述",
|
||||
"empty": {
|
||||
"desc": "完成配置後,將能夠在此處預覽插件支持的工具能力",
|
||||
"desc": "完成配置後,將能夠在此處預覽插件支援的工具能力",
|
||||
"title": "配置插件後開始預覽"
|
||||
},
|
||||
"title": "外掛名稱預覽"
|
||||
"title": "插件名稱預覽"
|
||||
},
|
||||
"save": "安裝插件",
|
||||
"saveSuccess": "外掛設定已成功儲存",
|
||||
"saveSuccess": "插件設定保存成功",
|
||||
"tabs": {
|
||||
"manifest": "功能描述清單 (Manifest)",
|
||||
"meta": "外掛後設資料"
|
||||
"meta": "插件元信息"
|
||||
},
|
||||
"title": {
|
||||
"create": "新增自訂插件",
|
||||
"edit": "編輯自訂插件"
|
||||
"create": "添加自定義插件",
|
||||
"edit": "編輯自定義插件"
|
||||
},
|
||||
"type": {
|
||||
"lobe": "LobeChat 插件",
|
||||
"lobe": "{{appName}} 插件",
|
||||
"openai": "OpenAI 插件"
|
||||
},
|
||||
"update": "更新",
|
||||
"updateSuccess": "外掛設定已成功更新"
|
||||
"updateSuccess": "插件設定更新成功"
|
||||
},
|
||||
"error": {
|
||||
"fetchError": "請求該 manifest 連結失敗,請確保連結的有效性,並檢查連結是否允許跨域訪問",
|
||||
"installError": "插件 {{name}} 安裝失敗",
|
||||
"manifestInvalid": "manifest 不符合規範,校驗結果: \n\n {{error}}",
|
||||
"noManifest": "描述檔不存在",
|
||||
"noManifest": "描述文件不存在",
|
||||
"openAPIInvalid": "OpenAPI 解析失敗,錯誤: \n\n {{error}}",
|
||||
"reinstallError": "插件 {{name}} 刷新失敗",
|
||||
"testConnectionFailed": "獲取 Manifest 失敗: {{error}}",
|
||||
@@ -241,13 +241,13 @@
|
||||
"list": {
|
||||
"item": {
|
||||
"deprecated.title": "已刪除",
|
||||
"local.config": "設定",
|
||||
"local.title": "本機"
|
||||
"local.config": "配置",
|
||||
"local.title": "自定義"
|
||||
}
|
||||
},
|
||||
"loading": {
|
||||
"content": "呼叫插件中...",
|
||||
"plugin": "外掛執行中..."
|
||||
"content": "調用插件中...",
|
||||
"plugin": "插件運行中..."
|
||||
},
|
||||
"localSystem": {
|
||||
"apiName": {
|
||||
@@ -265,7 +265,7 @@
|
||||
"COMPLETED": "安裝完成",
|
||||
"CONFIGURATION_REQUIRED": "請完成相關配置後繼續安裝",
|
||||
"ERROR": "安裝錯誤",
|
||||
"FETCHING_MANIFEST": "獲取插件描述檔...",
|
||||
"FETCHING_MANIFEST": "獲取插件描述文件...",
|
||||
"GETTING_SERVER_MANIFEST": "初始化 MCP 伺服器...",
|
||||
"INSTALLING_PLUGIN": "正在安裝插件...",
|
||||
"configurationDescription": "該 MCP 插件需要配置參數才能正常使用,請填寫必要的配置信息",
|
||||
@@ -292,7 +292,7 @@
|
||||
"errorTypes": {
|
||||
"AUTHORIZATION_ERROR": "授權驗證錯誤",
|
||||
"CONNECTION_FAILED": "連接失敗",
|
||||
"INITIALIZATION_TIMEOUT": "初始化逾時",
|
||||
"INITIALIZATION_TIMEOUT": "初始化超時",
|
||||
"PROCESS_SPAWN_ERROR": "進程啟動失敗",
|
||||
"UNKNOWN_ERROR": "未知錯誤",
|
||||
"VALIDATION_ERROR": "參數驗證失敗"
|
||||
@@ -305,7 +305,67 @@
|
||||
"recheckDependencies": "重新檢查",
|
||||
"skipDependencies": "跳過檢查"
|
||||
},
|
||||
"pluginList": "外掛清單",
|
||||
"pluginList": "插件列表",
|
||||
"protocolInstall": {
|
||||
"actions": {
|
||||
"install": "安裝",
|
||||
"installAnyway": "仍要安裝",
|
||||
"installed": "已安裝"
|
||||
},
|
||||
"config": {
|
||||
"args": "參數",
|
||||
"command": "命令",
|
||||
"env": "環境變數",
|
||||
"headers": "請求標頭",
|
||||
"title": "配置信息",
|
||||
"type": {
|
||||
"http": "類型: HTTP",
|
||||
"label": "類型",
|
||||
"stdio": "類型: Stdio"
|
||||
},
|
||||
"url": "服務地址"
|
||||
},
|
||||
"custom": {
|
||||
"badge": "自定義插件",
|
||||
"security": {
|
||||
"description": "此插件未經過官方驗證,安裝可能存在安全風險!請確保您信任插件來源。",
|
||||
"title": "⚠️ 安全風險提示"
|
||||
},
|
||||
"title": "安裝自定義插件"
|
||||
},
|
||||
"marketplace": {
|
||||
"title": "安裝第三方插件",
|
||||
"trustedBy": "由 {{name}} 提供",
|
||||
"unverified": {
|
||||
"title": "未經驗證的第三方插件",
|
||||
"warning": "此插件來自未驗證的第三方市場,安裝前請確認您信任該來源。"
|
||||
},
|
||||
"verified": "已驗證"
|
||||
},
|
||||
"messages": {
|
||||
"connectionTestFailed": "連接測試失敗",
|
||||
"installError": "插件安裝失敗,請重試",
|
||||
"installSuccess": "插件 {{name}} 安裝成功!",
|
||||
"manifestError": "獲取插件詳情失敗,請檢查網路連接後重試",
|
||||
"manifestNotFound": "未能獲取插件描述文件"
|
||||
},
|
||||
"meta": {
|
||||
"author": "作者",
|
||||
"homepage": "主頁",
|
||||
"identifier": "標識符",
|
||||
"source": "來源",
|
||||
"version": "版本"
|
||||
},
|
||||
"official": {
|
||||
"badge": "LobeHub 官方插件",
|
||||
"description": "此插件由 LobeHub 官方開發和維護,經過嚴格的安全審核,可放心使用。",
|
||||
"loadingMessage": "正在獲取插件詳情...",
|
||||
"loadingTitle": "載入中",
|
||||
"title": "安裝官方插件"
|
||||
},
|
||||
"title": "安裝 MCP 插件",
|
||||
"warning": "⚠️ 請確認您信任此插件的來源,惡意插件可能會危害您的系統安全。"
|
||||
},
|
||||
"search": {
|
||||
"apiName": {
|
||||
"crawlMultiPages": "讀取多個頁面內容",
|
||||
@@ -322,7 +382,7 @@
|
||||
"detail": {
|
||||
"preview": "預覽",
|
||||
"raw": "原始文本",
|
||||
"tooLong": "文本內容過長,對話上下文僅保留前 {{characters}} 字元,超過部分不計入會話上下文"
|
||||
"tooLong": "文本內容過長,對話上下文僅保留前 {{characters}} 字符,超過部分不計入會話上下文"
|
||||
},
|
||||
"meta": {
|
||||
"crawler": "抓取模式",
|
||||
@@ -331,13 +391,13 @@
|
||||
},
|
||||
"searchxng": {
|
||||
"baseURL": "請輸入",
|
||||
"description": "請輸入 SearchXNG 的網址,即可開始聯網搜索",
|
||||
"description": "請輸入 SearchXNG 的網址,即可開始聯網搜尋",
|
||||
"keyPlaceholder": "請輸入密鑰",
|
||||
"title": "配置 SearchXNG 搜索引擎",
|
||||
"unconfiguredDesc": "請聯繫管理員完成 SearchXNG 搜索引擎配置,即可開始聯網搜索",
|
||||
"unconfiguredTitle": "暫未配置 SearchXNG 搜索引擎"
|
||||
"title": "配置 SearchXNG 搜尋引擎",
|
||||
"unconfiguredDesc": "請聯絡管理員完成 SearchXNG 搜尋引擎配置,即可開始聯網搜尋",
|
||||
"unconfiguredTitle": "暫未配置 SearchXNG 搜尋引擎"
|
||||
},
|
||||
"title": "聯網搜索"
|
||||
"title": "聯網搜尋"
|
||||
},
|
||||
"setting": "插件設置",
|
||||
"settings": {
|
||||
@@ -353,7 +413,7 @@
|
||||
"connection": {
|
||||
"args": "啟動參數",
|
||||
"command": "啟動命令",
|
||||
"title": "連接資訊",
|
||||
"title": "連接信息",
|
||||
"type": "連接類型",
|
||||
"url": "服務地址"
|
||||
},
|
||||
@@ -361,46 +421,46 @@
|
||||
"envConfigDescription": "這些配置將作為環境變數在 MCP 伺服器啟動時傳遞給進程",
|
||||
"httpTypeNotice": "HTTP 類型的 MCP 插件暫無需要配置的環境變數",
|
||||
"indexUrl": {
|
||||
"title": "外掛市集索引",
|
||||
"tooltip": "目前不支援編輯"
|
||||
"title": "市場索引",
|
||||
"tooltip": "暫不支援線上編輯,請透過部署時環境變數進行設定"
|
||||
},
|
||||
"messages": {
|
||||
"connectionUpdateFailed": "連線資訊更新失敗",
|
||||
"connectionUpdateSuccess": "連線資訊更新成功",
|
||||
"connectionUpdateFailed": "連接信息更新失敗",
|
||||
"connectionUpdateSuccess": "連接信息更新成功",
|
||||
"envUpdateFailed": "環境變數保存失敗",
|
||||
"envUpdateSuccess": "環境變數保存成功"
|
||||
},
|
||||
"modalDesc": "設定外掛市集的網址後,您可以使用自訂的外掛市集",
|
||||
"modalDesc": "配置插件市場的地址後,可以使用自定義的插件市場",
|
||||
"rules": {
|
||||
"argsRequired": "請輸入啟動參數",
|
||||
"commandRequired": "請輸入啟動命令",
|
||||
"urlRequired": "請輸入服務地址"
|
||||
},
|
||||
"saveSettings": "保存設置",
|
||||
"title": "設定外掛市集"
|
||||
"title": "設置插件市場"
|
||||
},
|
||||
"showInPortal": "請在入口網站中查看",
|
||||
"showInPortal": "請在工作區中查看詳情",
|
||||
"store": {
|
||||
"actions": {
|
||||
"cancel": "取消安裝",
|
||||
"confirmUninstall": "即將卸載該插件,卸載後將清除該插件配置,請確認你的操作",
|
||||
"detail": "詳情",
|
||||
"install": "安裝",
|
||||
"manifest": "編輯安裝檔案",
|
||||
"settings": "設定",
|
||||
"manifest": "編輯安裝文件",
|
||||
"settings": "設置",
|
||||
"uninstall": "卸載"
|
||||
},
|
||||
"communityPlugin": "社群外掛",
|
||||
"customPlugin": "自訂插件",
|
||||
"communityPlugin": "三方社區",
|
||||
"customPlugin": "自定義",
|
||||
"empty": "暫無已安裝插件",
|
||||
"emptySelectHint": "選擇插件以預覽詳細資訊",
|
||||
"emptySelectHint": "選擇插件以預覽詳細信息",
|
||||
"installAllPlugins": "安裝全部",
|
||||
"networkError": "獲取插件商店失敗,請檢查網路連線後重試",
|
||||
"placeholder": "搜尋插件名稱介紹或關鍵字...",
|
||||
"releasedAt": "發佈於 {{createdAt}}",
|
||||
"networkError": "獲取插件商店失敗,請檢測網路連接後重試",
|
||||
"placeholder": "搜尋插件名稱介紹或關鍵詞...",
|
||||
"releasedAt": "發布於 {{createdAt}}",
|
||||
"tabs": {
|
||||
"installed": "已安裝",
|
||||
"mcp": "MCP 外掛",
|
||||
"mcp": "MCP 插件",
|
||||
"old": "LobeChat 插件"
|
||||
},
|
||||
"title": "插件商店"
|
||||
|
||||
@@ -282,6 +282,7 @@
|
||||
"@commitlint/cli": "^19.8.1",
|
||||
"@edge-runtime/vm": "^5.0.0",
|
||||
"@huggingface/tasks": "^0.15.9",
|
||||
"@lobechat/types": "workspace:*",
|
||||
"@lobehub/i18n-cli": "^1.25.1",
|
||||
"@lobehub/lint": "^1.26.2",
|
||||
"@lobehub/market-types": "^1.11.4",
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import { LocalFilesDispatchEvents } from './localFile';
|
||||
import { MenuDispatchEvents } from './menu';
|
||||
import { NotificationDispatchEvents } from './notification';
|
||||
import { ProtocolBroadcastEvents, ProtocolDispatchEvents } from './protocol';
|
||||
import { RemoteServerBroadcastEvents, RemoteServerDispatchEvents } from './remoteServer';
|
||||
import { DesktopSettingsDispatchEvents } from './settings';
|
||||
import { ShortcutDispatchEvents } from './shortcut';
|
||||
@@ -25,7 +26,8 @@ export interface ClientDispatchEvents
|
||||
UploadFilesDispatchEvents,
|
||||
TrayDispatchEvents,
|
||||
DesktopSettingsDispatchEvents,
|
||||
NotificationDispatchEvents {}
|
||||
NotificationDispatchEvents,
|
||||
ProtocolDispatchEvents {}
|
||||
|
||||
export type ClientDispatchEventKey = keyof ClientDispatchEvents;
|
||||
|
||||
@@ -40,7 +42,8 @@ export type ClientEventReturnType<T extends ClientDispatchEventKey> = ReturnType
|
||||
export interface MainBroadcastEvents
|
||||
extends AutoUpdateBroadcastEvents,
|
||||
RemoteServerBroadcastEvents,
|
||||
SystemBroadcastEvents {}
|
||||
SystemBroadcastEvents,
|
||||
ProtocolBroadcastEvents {}
|
||||
|
||||
export type MainBroadcastEventKey = keyof MainBroadcastEvents;
|
||||
|
||||
|
||||
29
packages/electron-client-ipc/src/events/protocol.ts
Normal file
29
packages/electron-client-ipc/src/events/protocol.ts
Normal file
@@ -0,0 +1,29 @@
|
||||
import { McpInstallSchema } from '../types';
|
||||
|
||||
/**
|
||||
* 协议安装相关的 Broadcast 事件(主进程 -> 渲染进程)
|
||||
*/
|
||||
export interface ProtocolBroadcastEvents {
|
||||
/**
|
||||
* MCP 插件安装请求事件
|
||||
* 主进程解析协议 URL 后发送给前端
|
||||
*/
|
||||
mcpInstallRequest: (data: {
|
||||
/** 市场来源ID */
|
||||
marketId?: string;
|
||||
/** 插件ID */
|
||||
pluginId: string;
|
||||
/** MCP Schema 对象 */
|
||||
schema: McpInstallSchema;
|
||||
}) => void;
|
||||
}
|
||||
|
||||
/**
|
||||
* 协议处理相关的 Dispatch 事件(渲染进程 -> 主进程)
|
||||
*/
|
||||
export interface ProtocolDispatchEvents {
|
||||
/**
|
||||
* 通知主进程协议URL已被处理
|
||||
*/
|
||||
protocolUrlHandled: (data: { error?: string; success: boolean; url: string }) => Promise<void>;
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
export * from './dataSync';
|
||||
export * from './dispatch';
|
||||
export * from './localFile';
|
||||
export * from './mcpInstall';
|
||||
export * from './notification';
|
||||
export * from './proxy';
|
||||
export * from './proxyTRPCRequest';
|
||||
|
||||
19
packages/electron-client-ipc/src/types/mcpInstall.ts
Normal file
19
packages/electron-client-ipc/src/types/mcpInstall.ts
Normal file
@@ -0,0 +1,19 @@
|
||||
export interface MCPInstallConfig {
|
||||
args?: string[];
|
||||
command?: string;
|
||||
env?: Record<string, string>;
|
||||
headers?: Record<string, string>;
|
||||
type: 'stdio' | 'http';
|
||||
url?: string;
|
||||
}
|
||||
|
||||
export interface McpInstallSchema {
|
||||
author: string;
|
||||
config: MCPInstallConfig;
|
||||
description: string;
|
||||
homepage?: string;
|
||||
icon?: string;
|
||||
identifier: string;
|
||||
name: string;
|
||||
version: string;
|
||||
}
|
||||
@@ -1,8 +1,22 @@
|
||||
import { PluginQueryParams, SystemDependency } from '@lobehub/market-sdk';
|
||||
|
||||
import { MCPErrorType } from '@/libs/mcp';
|
||||
import { MCPInstallStep } from '@/store/tool/slices/mcpStore';
|
||||
|
||||
import { CustomPluginMetadata } from '../tool/plugin';
|
||||
|
||||
/* eslint-disable typescript-sort-keys/string-enum */
|
||||
export enum MCPInstallStep {
|
||||
FETCHING_MANIFEST = 'FETCHING_MANIFEST',
|
||||
CHECKING_INSTALLATION = 'CHECKING_INSTALLATION',
|
||||
DEPENDENCIES_REQUIRED = 'DEPENDENCIES_REQUIRED',
|
||||
GETTING_SERVER_MANIFEST = 'GETTING_SERVER_MANIFEST',
|
||||
CONFIGURATION_REQUIRED = 'CONFIGURATION_REQUIRED',
|
||||
INSTALLING_PLUGIN = 'INSTALLING_PLUGIN',
|
||||
COMPLETED = 'COMPLETED',
|
||||
ERROR = 'Error',
|
||||
}
|
||||
|
||||
/* eslint-enable */
|
||||
export interface CheckMcpInstallParams {
|
||||
/**
|
||||
* 安装详情
|
||||
@@ -181,4 +195,27 @@ export interface MCPInstallProgress {
|
||||
}>;
|
||||
}
|
||||
|
||||
export interface McpConnection {
|
||||
args?: string[];
|
||||
auth?: {
|
||||
accessToken?: string;
|
||||
token?: string;
|
||||
type: 'none' | 'bearer' | 'oauth2';
|
||||
};
|
||||
// STDIO 连接参数
|
||||
command?: string;
|
||||
env?: Record<string, string>;
|
||||
headers?: Record<string, string>;
|
||||
type: 'http' | 'stdio';
|
||||
// HTTP 连接参数
|
||||
url?: string;
|
||||
}
|
||||
|
||||
// 测试连接参数类型
|
||||
export interface McpConnectionParams {
|
||||
connection: McpConnection;
|
||||
identifier: string;
|
||||
metadata?: CustomPluginMetadata;
|
||||
}
|
||||
|
||||
export type MCPInstallProgressMap = Record<string, MCPInstallProgress | undefined>;
|
||||
|
||||
166
packages/types/src/plugins/protocol.ts
Normal file
166
packages/types/src/plugins/protocol.ts
Normal file
@@ -0,0 +1,166 @@
|
||||
/**
|
||||
* 协议来源类型
|
||||
*/
|
||||
export enum ProtocolSource {
|
||||
/** 社区贡献 */
|
||||
COMMUNITY = 'community',
|
||||
/** 开发者自定义 */
|
||||
DEVELOPER = 'developer',
|
||||
/** GitHub 官方 */
|
||||
GITHUB_OFFICIAL = 'github_official',
|
||||
/** 官方LobeHub市场 */
|
||||
OFFICIAL = 'official',
|
||||
/** 第三方市场 */
|
||||
THIRD_PARTY = 'third_party',
|
||||
}
|
||||
|
||||
/**
|
||||
* MCP Schema - stdio 配置类型
|
||||
*/
|
||||
export interface McpStdioConfig {
|
||||
args?: string[];
|
||||
command: string;
|
||||
env?: Record<string, string>;
|
||||
type: 'stdio';
|
||||
}
|
||||
|
||||
/**
|
||||
* MCP Schema - http 配置类型
|
||||
*/
|
||||
export interface McpHttpConfig {
|
||||
headers?: Record<string, string>;
|
||||
type: 'http';
|
||||
url: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* MCP Schema 配置类型
|
||||
*/
|
||||
export type McpConfig = McpStdioConfig | McpHttpConfig;
|
||||
|
||||
/**
|
||||
* MCP Schema 对象
|
||||
* 符合 RFC 0001 定义
|
||||
*/
|
||||
export interface McpSchema {
|
||||
/** 插件作者 */
|
||||
author: string;
|
||||
/** 插件配置 */
|
||||
config: McpConfig;
|
||||
/** 插件描述 */
|
||||
description: string;
|
||||
/** 插件主页 */
|
||||
homepage?: string;
|
||||
/** 插件图标 */
|
||||
icon?: string;
|
||||
/** 插件唯一标识符,必须与URL中的id参数匹配 */
|
||||
identifier: string;
|
||||
/** 插件名称 */
|
||||
name: string;
|
||||
/** 插件版本 (semver) */
|
||||
version: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* RFC 0001 协议参数
|
||||
* lobehub://plugin/install?id=xxx&schema=xxx&marketId=xxx&meta_*=xxx
|
||||
*/
|
||||
export interface McpInstallProtocolParamsRFC {
|
||||
/** 可选的 UI 显示元数据,以 meta_ 为前缀 */
|
||||
[key: `meta_${string}`]: string | undefined;
|
||||
/** 插件的唯一标识符 */
|
||||
id: string;
|
||||
/** 提供该插件的 Marketplace 的唯一标识符 */
|
||||
marketId?: string;
|
||||
/** Base64URL 编码的 MCP Schema 对象 */
|
||||
schema: string;
|
||||
/** 插件类型,对于 MCP 固定为 'mcp' */
|
||||
type: 'mcp';
|
||||
}
|
||||
|
||||
/**
|
||||
* 协议URL解析结果
|
||||
*/
|
||||
export interface ProtocolUrlParsed {
|
||||
/** 操作类型 (如: 'install') */
|
||||
action: 'install' | 'configure' | 'update';
|
||||
/** 解析后的参数 */
|
||||
params: {
|
||||
id: string;
|
||||
marketId?: string;
|
||||
type: string;
|
||||
};
|
||||
/** MCP Schema 对象 */
|
||||
schema: McpSchema;
|
||||
/** 协议来源 */
|
||||
source: ProtocolSource;
|
||||
/** 插件类型 (如: 'mcp') */
|
||||
type: 'mcp' | 'plugin';
|
||||
/** URL类型 (如: 'plugin') */
|
||||
urlType: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* 安装确认弹窗信息
|
||||
*/
|
||||
export interface InstallConfirmationInfo {
|
||||
dependencies?: string[];
|
||||
permissions?: {
|
||||
filesystem?: boolean;
|
||||
network?: boolean;
|
||||
system?: boolean;
|
||||
};
|
||||
pluginInfo: {
|
||||
author?: string;
|
||||
description: string;
|
||||
homepage?: string;
|
||||
icon?: string;
|
||||
identifier: string;
|
||||
name: string;
|
||||
version: string;
|
||||
};
|
||||
source: {
|
||||
platform?: {
|
||||
name: string;
|
||||
url?: string;
|
||||
};
|
||||
type: ProtocolSource;
|
||||
verified: boolean; // 是否为验证来源
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* 协议处理器接口
|
||||
*/
|
||||
export interface ProtocolHandler {
|
||||
/**
|
||||
* 处理协议URL
|
||||
*/
|
||||
handle(
|
||||
parsed: ProtocolUrlParsed,
|
||||
): Promise<{ error?: string; success: boolean; targetWindow?: string }>;
|
||||
|
||||
/**
|
||||
* 支持的操作
|
||||
*/
|
||||
readonly supportedActions: string[];
|
||||
|
||||
/**
|
||||
* 协议类型
|
||||
*/
|
||||
readonly type: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* 协议路由配置
|
||||
*/
|
||||
export interface ProtocolRouteConfig {
|
||||
/** 操作类型 */
|
||||
action: string;
|
||||
/** 目标路径(相对于窗口base路径) */
|
||||
targetPath?: string;
|
||||
/** 目标窗口 */
|
||||
targetWindow: 'chat' | 'settings';
|
||||
/** 协议类型 */
|
||||
type: string;
|
||||
}
|
||||
@@ -1,7 +1,9 @@
|
||||
import { Suspense } from 'react';
|
||||
import { Flexbox } from 'react-layout-kit';
|
||||
|
||||
import { isDesktop } from '@/const/version';
|
||||
import InitClientDB from '@/features/InitClientDB';
|
||||
import ProtocolUrlHandler from '@/features/ProtocolUrlHandler';
|
||||
|
||||
import { LayoutProps } from '../type';
|
||||
import RegisterHotkeys from './RegisterHotkeys';
|
||||
@@ -20,13 +22,14 @@ const Layout = ({ children, session }: LayoutProps) => {
|
||||
<SessionPanel>{session}</SessionPanel>
|
||||
<Workspace>{children}</Workspace>
|
||||
</Flexbox>
|
||||
<InitClientDB bottom={60} />
|
||||
{!isDesktop && <InitClientDB bottom={60} />}
|
||||
{/* ↓ cloud slot ↓ */}
|
||||
|
||||
{/* ↑ cloud slot ↑ */}
|
||||
<Suspense>
|
||||
<RegisterHotkeys />
|
||||
</Suspense>
|
||||
{isDesktop && <ProtocolUrlHandler />}
|
||||
</>
|
||||
);
|
||||
};
|
||||
|
||||
@@ -22,6 +22,7 @@ const useStyles = createStyles(({ css }) => ({
|
||||
}));
|
||||
|
||||
const ActionButton = memo(() => {
|
||||
const { t } = useTranslation(['discover', 'plugin']);
|
||||
const { identifier } = useDetailContext();
|
||||
const { styles } = useStyles();
|
||||
const [isLoading, setIsLoading] = useState(false);
|
||||
@@ -32,8 +33,6 @@ const ActionButton = memo(() => {
|
||||
s.uninstallMCPPlugin,
|
||||
]);
|
||||
|
||||
const { t } = useTranslation(['discover', 'plugin']);
|
||||
|
||||
const installPlugin = async () => {
|
||||
if (!identifier) return;
|
||||
setIsLoading(true);
|
||||
|
||||
@@ -3,7 +3,7 @@ import { Button } from 'antd';
|
||||
import { createStyles } from 'antd-style';
|
||||
import fastDeepEqual from 'fast-deep-equal';
|
||||
import { LucidePlus, LucideTrash } from 'lucide-react';
|
||||
import { memo, useEffect, useRef, useState } from 'react';
|
||||
import { CSSProperties, memo, useEffect, useRef, useState } from 'react';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { Flexbox } from 'react-layout-kit';
|
||||
import { v4 as uuidv4 } from 'uuid';
|
||||
@@ -44,6 +44,7 @@ export interface KeyValueEditorProps {
|
||||
duplicateKeyErrorText?: string;
|
||||
keyPlaceholder?: string;
|
||||
onChange?: (value: Record<string, string>) => void;
|
||||
style?: CSSProperties;
|
||||
value?: Record<string, string>;
|
||||
valuePlaceholder?: string;
|
||||
}
|
||||
@@ -57,6 +58,7 @@ const KeyValueEditor = memo<KeyValueEditorProps>(
|
||||
addButtonText,
|
||||
duplicateKeyErrorText,
|
||||
deleteTooltip,
|
||||
style,
|
||||
}) => {
|
||||
const { styles } = useStyles();
|
||||
const { t } = useTranslation('components');
|
||||
@@ -125,7 +127,7 @@ const KeyValueEditor = memo<KeyValueEditorProps>(
|
||||
const duplicateKeys = getDuplicateKeys(items);
|
||||
|
||||
return (
|
||||
<div className={styles.container}>
|
||||
<div className={styles.container} style={style}>
|
||||
<Flexbox className={styles.title} gap={8} horizontal>
|
||||
<Flexbox flex={1}>{keyPlaceholder || t('KeyValueEditor.keyPlaceholder')}</Flexbox>
|
||||
<Flexbox flex={2}>{valuePlaceholder || t('KeyValueEditor.valuePlaceholder')}</Flexbox>
|
||||
|
||||
@@ -9,7 +9,7 @@ import { Flexbox } from 'react-layout-kit';
|
||||
|
||||
import { useToolStore } from '@/store/tool';
|
||||
import { mcpStoreSelectors } from '@/store/tool/selectors';
|
||||
import { MCPInstallStep } from '@/store/tool/slices/mcpStore';
|
||||
import { MCPInstallStep } from '@/types/plugins';
|
||||
|
||||
import InstallError from './InstallError';
|
||||
import MCPConfigForm from './MCPConfigForm';
|
||||
|
||||
@@ -1,15 +1,14 @@
|
||||
import { LobeChatPluginManifest } from '@lobehub/chat-plugin-sdk';
|
||||
import { Alert, FormItem, Input, InputPassword } from '@lobehub/ui';
|
||||
import { Button, Divider, Form, FormInstance, Radio } from 'antd';
|
||||
import isEqual from 'fast-deep-equal';
|
||||
import { useState } from 'react';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { Flexbox } from 'react-layout-kit';
|
||||
|
||||
import KeyValueEditor from '@/components/KeyValueEditor';
|
||||
import MCPStdioCommandInput from '@/components/MCPStdioCommandInput';
|
||||
import { mcpService } from '@/services/mcp';
|
||||
import { useToolStore } from '@/store/tool';
|
||||
import { pluginSelectors } from '@/store/tool/selectors';
|
||||
import { mcpStoreSelectors, pluginSelectors } from '@/store/tool/selectors';
|
||||
|
||||
import ArgsInput from './ArgsInput';
|
||||
import CollapsibleSection from './CollapsibleSection';
|
||||
@@ -40,6 +39,13 @@ const MCPManifestForm = ({ form, isEditMode }: MCPManifestFormProps) => {
|
||||
|
||||
const pluginIds = useToolStore(pluginSelectors.storeAndInstallPluginsIdList);
|
||||
const [isTesting, setIsTesting] = useState(false);
|
||||
const testMcpConnection = useToolStore((s) => s.testMcpConnection);
|
||||
|
||||
// 使用 identifier 来跟踪测试状态(如果表单中有的话)
|
||||
const formValues = form.getFieldsValue();
|
||||
const identifier = formValues?.identifier || 'temp-test-id';
|
||||
const testState = useToolStore(mcpStoreSelectors.getMCPConnectionTestState(identifier), isEqual);
|
||||
|
||||
const [connectionError, setConnectionError] = useState<string | null>(null);
|
||||
|
||||
const handleTestConnection = async () => {
|
||||
@@ -80,43 +86,31 @@ const MCPManifestForm = ({ form, isEditMode }: MCPManifestFormProps) => {
|
||||
const description = values.customParams?.description;
|
||||
const avatar = values.customParams?.avatar;
|
||||
|
||||
let data: LobeChatPluginManifest;
|
||||
|
||||
if (mcp.type === 'http') {
|
||||
if (!mcp.url) throw new Error(t('dev.mcp.url.required'));
|
||||
data = await mcpService.getStreamableMcpServerManifest({
|
||||
auth: mcp.auth,
|
||||
headers: mcp.headers,
|
||||
identifier: id,
|
||||
metadata: { avatar, description },
|
||||
url: mcp.url,
|
||||
});
|
||||
} else if (mcp.type === 'stdio') {
|
||||
if (!mcp.command) throw new Error(t('dev.mcp.command.required'));
|
||||
if (!mcp.args) throw new Error(t('dev.mcp.args.required'));
|
||||
data = await mcpService.getStdioMcpServerManifest(
|
||||
{ ...mcp, name: id },
|
||||
{ avatar, description },
|
||||
);
|
||||
} else {
|
||||
throw new Error('Invalid MCP type'); // Internal error
|
||||
}
|
||||
|
||||
// Optionally update form if manifest ID differs or to store the fetched manifest
|
||||
// Be careful about overwriting user input if not desired
|
||||
form.setFieldsValue({ manifest: data });
|
||||
} catch (error) {
|
||||
// Check if error is a validation error object (from validateFields)
|
||||
|
||||
// Handle API call errors or other errors
|
||||
const err = error as Error; // Assuming PluginInstallError or similar structure
|
||||
// Use the error message directly if it's a simple string error, otherwise try translation
|
||||
// highlight-start
|
||||
const errorMessage = t('error.testConnectionFailed', {
|
||||
error: err.cause || err.message || t('unknownError'),
|
||||
// 使用 mcpStore 的 testMcpConnection 方法
|
||||
const result = await testMcpConnection({
|
||||
connection: mcp,
|
||||
identifier: id,
|
||||
metadata: { avatar, description },
|
||||
});
|
||||
// highlight-end
|
||||
|
||||
if (result.success && result.manifest) {
|
||||
// Optionally update form if manifest ID differs or to store the fetched manifest
|
||||
// Be careful about overwriting user input if not desired
|
||||
form.setFieldsValue({ manifest: result.manifest });
|
||||
setConnectionError(null); // 清除本地错误状态
|
||||
} else if (result.error) {
|
||||
// Store 已经处理了错误状态,这里可以选择显示额外的用户友好提示
|
||||
const errorMessage = t('error.testConnectionFailed', {
|
||||
error: result.error,
|
||||
});
|
||||
setConnectionError(errorMessage);
|
||||
}
|
||||
} catch (error) {
|
||||
// Handle unexpected errors
|
||||
const err = error as Error;
|
||||
const errorMessage = t('error.testConnectionFailed', {
|
||||
error: err.message || t('unknownError'),
|
||||
});
|
||||
setConnectionError(errorMessage);
|
||||
} finally {
|
||||
setIsTesting(false);
|
||||
@@ -274,10 +268,10 @@ const MCPManifestForm = ({ form, isEditMode }: MCPManifestFormProps) => {
|
||||
</Button>
|
||||
</Flexbox>
|
||||
</FormItem>
|
||||
{connectionError && (
|
||||
{(connectionError || testState.error) && (
|
||||
<Alert
|
||||
closable
|
||||
message={connectionError}
|
||||
message={connectionError || testState.error}
|
||||
onClose={() => setConnectionError(null)}
|
||||
showIcon
|
||||
style={{ marginBottom: 16 }}
|
||||
|
||||
@@ -7,8 +7,8 @@ import PluginAvatar from '@/components/Plugins/PluginAvatar';
|
||||
import MCPInstallProgress from '@/features/MCP/MCPInstallProgress';
|
||||
import { useToolStore } from '@/store/tool';
|
||||
import { mcpStoreSelectors } from '@/store/tool/selectors';
|
||||
import { MCPInstallStep } from '@/store/tool/slices/mcpStore/initialState';
|
||||
import { DiscoverMcpItem } from '@/types/discover';
|
||||
import { MCPInstallStep } from '@/types/plugins';
|
||||
import { LobeToolType } from '@/types/tool/tool';
|
||||
|
||||
import Actions from './Action';
|
||||
|
||||
211
src/features/ProtocolUrlHandler/InstallPlugin/ConfigDisplay.tsx
Normal file
211
src/features/ProtocolUrlHandler/InstallPlugin/ConfigDisplay.tsx
Normal file
@@ -0,0 +1,211 @@
|
||||
'use client';
|
||||
|
||||
import { McpInstallSchema } from '@lobechat/electron-client-ipc';
|
||||
import { Block, Text } from '@lobehub/ui';
|
||||
import { createStyles } from 'antd-style';
|
||||
import { LinkIcon, Settings2Icon } from 'lucide-react';
|
||||
import { memo, useState } from 'react';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { Flexbox } from 'react-layout-kit';
|
||||
|
||||
import KeyValueEditor from '@/components/KeyValueEditor';
|
||||
|
||||
const useStyles = createStyles(({ css, token }) => ({
|
||||
configEditor: css`
|
||||
margin-block-start: ${token.marginSM}px;
|
||||
`,
|
||||
configSection: css`
|
||||
margin-block-end: ${token.marginLG}px;
|
||||
padding: ${token.paddingSM}px;
|
||||
border-radius: ${token.borderRadius}px;
|
||||
`,
|
||||
configTitle: css`
|
||||
display: flex;
|
||||
gap: ${token.marginXS}px;
|
||||
align-items: center;
|
||||
|
||||
height: 24px;
|
||||
|
||||
font-weight: 600;
|
||||
color: ${token.colorTextHeading};
|
||||
`,
|
||||
|
||||
previewContainer: css`
|
||||
padding-inline: ${token.paddingXS}px;
|
||||
`,
|
||||
|
||||
previewItem: css`
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
|
||||
padding-block: ${token.paddingXS}px;
|
||||
padding-inline: 0;
|
||||
|
||||
&:not(:last-child) {
|
||||
border-block-end: 1px solid ${token.colorBorderSecondary};
|
||||
}
|
||||
`,
|
||||
|
||||
previewLabel: css`
|
||||
display: flex;
|
||||
gap: ${token.marginXS}px;
|
||||
align-items: center;
|
||||
|
||||
font-size: ${token.fontSizeSM}px;
|
||||
font-weight: 500;
|
||||
color: ${token.colorTextSecondary};
|
||||
`,
|
||||
|
||||
previewValue: css`
|
||||
padding-block: ${token.paddingXXS}px;
|
||||
padding-inline: ${token.paddingXS}px;
|
||||
border-radius: ${token.borderRadiusSM}px;
|
||||
|
||||
font-family: ${token.fontFamilyCode};
|
||||
font-size: ${token.fontSizeSM}px;
|
||||
font-weight: 600;
|
||||
color: ${token.colorText};
|
||||
|
||||
background: ${token.colorFillQuaternary};
|
||||
`,
|
||||
|
||||
typeValue: css`
|
||||
display: flex;
|
||||
gap: ${token.marginXS}px;
|
||||
align-items: center;
|
||||
`,
|
||||
|
||||
urlValue: css`
|
||||
max-width: 300px;
|
||||
padding-block: ${token.paddingXS}px;
|
||||
padding-inline: ${token.paddingSM}px;
|
||||
border: 1px solid ${token.colorBorder};
|
||||
border-radius: ${token.borderRadius}px;
|
||||
|
||||
font-family: ${token.fontFamilyCode};
|
||||
font-size: ${token.fontSizeSM}px;
|
||||
font-weight: 500;
|
||||
word-break: auto-phrase;
|
||||
|
||||
background: ${token.colorBgElevated};
|
||||
`,
|
||||
}));
|
||||
|
||||
interface ConfigDisplayProps {
|
||||
onConfigUpdate?: (updatedConfig: {
|
||||
env?: Record<string, string>;
|
||||
headers?: Record<string, string>;
|
||||
}) => void;
|
||||
schema: McpInstallSchema;
|
||||
}
|
||||
|
||||
const ConfigDisplay = memo<ConfigDisplayProps>(({ schema, onConfigUpdate }) => {
|
||||
const { t } = useTranslation('plugin');
|
||||
const { styles } = useStyles();
|
||||
|
||||
// 本地状态管理配置数据
|
||||
const [currentEnv, setCurrentEnv] = useState<Record<string, string>>(schema.config.env || {});
|
||||
const [currentHeaders, setCurrentHeaders] = useState<Record<string, string>>(
|
||||
schema.config.headers || {},
|
||||
);
|
||||
|
||||
// 处理环境变量更新
|
||||
const handleEnvUpdate = (newEnv: Record<string, string>) => {
|
||||
setCurrentEnv(newEnv);
|
||||
onConfigUpdate?.({ env: newEnv, headers: currentHeaders });
|
||||
};
|
||||
|
||||
// 处理 Headers 更新
|
||||
const handleHeadersUpdate = (newHeaders: Record<string, string>) => {
|
||||
setCurrentHeaders(newHeaders);
|
||||
onConfigUpdate?.({ env: currentEnv, headers: newHeaders });
|
||||
};
|
||||
|
||||
return (
|
||||
<Flexbox gap={16}>
|
||||
{/* 安装信息 */}
|
||||
<Block className={styles.configSection} variant={'outlined'}>
|
||||
<div className={styles.configTitle}>
|
||||
<LinkIcon size={14} />
|
||||
{t('protocolInstall.install.title', { defaultValue: '安装信息' })}
|
||||
</div>
|
||||
|
||||
<div className={styles.previewContainer}>
|
||||
{/* 连接类型 */}
|
||||
<div className={styles.previewItem}>
|
||||
<span className={styles.previewLabel}>{t('protocolInstall.config.type.label')}</span>
|
||||
<div className={styles.typeValue}>
|
||||
<Text className={styles.previewValue}>
|
||||
{schema.config.type === 'stdio' ? 'STDIO' : 'HTTP'}
|
||||
</Text>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* HTTP 类型显示 URL */}
|
||||
{schema.config.type === 'http' && schema.config.url && (
|
||||
<div className={styles.previewItem}>
|
||||
<span className={styles.previewLabel}>{t('protocolInstall.config.url')}</span>
|
||||
<div className={styles.urlValue}>{schema.config.url}</div>
|
||||
</div>
|
||||
)}
|
||||
|
||||
{/* STDIO 类型显示命令和参数 */}
|
||||
{schema.config.type === 'stdio' && (
|
||||
<>
|
||||
{schema.config.command && (
|
||||
<div className={styles.previewItem}>
|
||||
<span className={styles.previewLabel}>{t('protocolInstall.config.command')}</span>
|
||||
<span className={styles.previewValue}>{schema.config.command}</span>
|
||||
</div>
|
||||
)}
|
||||
|
||||
{schema.config.args && schema.config.args.length > 0 && (
|
||||
<div className={styles.previewItem}>
|
||||
<span className={styles.previewLabel}>{t('protocolInstall.config.args')}</span>
|
||||
<span className={styles.previewValue}>{schema.config.args.join(' ')}</span>
|
||||
</div>
|
||||
)}
|
||||
</>
|
||||
)}
|
||||
</div>
|
||||
</Block>
|
||||
|
||||
{/* 配置信息 - 直接使用 KeyValueEditor */}
|
||||
<Block className={styles.configSection} variant={'outlined'}>
|
||||
<div className={styles.configTitle}>
|
||||
<Settings2Icon size={14} />
|
||||
{schema.config.type === 'stdio'
|
||||
? t('protocolInstall.config.env', { defaultValue: '环境变量' })
|
||||
: t('protocolInstall.config.headers', { defaultValue: '请求头' })}
|
||||
</div>
|
||||
|
||||
<div className={styles.configEditor}>
|
||||
{/* HTTP 类型显示 Headers */}
|
||||
{schema.config.type === 'http' && (
|
||||
<KeyValueEditor
|
||||
addButtonText={t('protocolInstall.config.addHeaders', { defaultValue: '添加请求头' })}
|
||||
onChange={handleHeadersUpdate}
|
||||
style={{ border: 'none' }}
|
||||
value={currentHeaders}
|
||||
/>
|
||||
)}
|
||||
|
||||
{/* STDIO 类型显示环境变量 */}
|
||||
{schema.config.type === 'stdio' && (
|
||||
<KeyValueEditor
|
||||
addButtonText={t('protocolInstall.config.addEnv', { defaultValue: '添加环境变量' })}
|
||||
onChange={handleEnvUpdate}
|
||||
style={{ border: 'none' }}
|
||||
value={currentEnv}
|
||||
/>
|
||||
)}
|
||||
</div>
|
||||
</Block>
|
||||
</Flexbox>
|
||||
);
|
||||
});
|
||||
|
||||
ConfigDisplay.displayName = 'ConfigDisplay';
|
||||
|
||||
export default ConfigDisplay;
|
||||
@@ -0,0 +1,228 @@
|
||||
'use client';
|
||||
|
||||
import { Alert, Block, Modal, Text } from '@lobehub/ui';
|
||||
import { App } from 'antd';
|
||||
import { memo, useCallback, useEffect, useState } from 'react';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { Flexbox } from 'react-layout-kit';
|
||||
|
||||
import PluginAvatar from '@/components/Plugins/PluginAvatar';
|
||||
import PluginTag from '@/components/Plugins/PluginTag';
|
||||
import { useAgentStore } from '@/store/agent';
|
||||
import { useToolStore } from '@/store/tool';
|
||||
import { mcpStoreSelectors } from '@/store/tool/selectors';
|
||||
import { McpConnectionParams } from '@/types/plugins';
|
||||
import { LobeToolCustomPlugin } from '@/types/tool/plugin';
|
||||
|
||||
import ConfigDisplay from './ConfigDisplay';
|
||||
import { McpInstallRequest, TRUSTED_MARKETPLACES, TrustedMarketplaceId } from './types';
|
||||
|
||||
interface CustomPluginInstallModalProps {
|
||||
installRequest: McpInstallRequest | null;
|
||||
isMarketplace?: boolean;
|
||||
onComplete?: () => void;
|
||||
}
|
||||
|
||||
const CustomPluginInstallModal = memo<CustomPluginInstallModalProps>(
|
||||
({ installRequest, isMarketplace = false, onComplete }) => {
|
||||
const { message } = App.useApp();
|
||||
const { t } = useTranslation('plugin');
|
||||
const [loading, setLoading] = useState(false);
|
||||
|
||||
// 跟踪配置更新
|
||||
const [updatedConfig, setUpdatedConfig] = useState<{
|
||||
env?: Record<string, string>;
|
||||
headers?: Record<string, string>;
|
||||
}>({});
|
||||
|
||||
const [installCustomPlugin] = useToolStore((s) => [s.installCustomPlugin]);
|
||||
const testMcpConnection = useToolStore((s) => s.testMcpConnection);
|
||||
const togglePlugin = useAgentStore((s) => s.togglePlugin);
|
||||
|
||||
// 为自定义插件测试连接生成唯一标识符
|
||||
const identifier = installRequest?.schema?.identifier || '';
|
||||
const testState = useToolStore(mcpStoreSelectors.getMCPConnectionTestState(identifier));
|
||||
|
||||
const schema = installRequest?.schema;
|
||||
const marketId = installRequest?.marketId;
|
||||
const marketplace =
|
||||
isMarketplace && marketId ? TRUSTED_MARKETPLACES[marketId as TrustedMarketplaceId] : null;
|
||||
|
||||
// 重置加载状态和配置
|
||||
useEffect(() => {
|
||||
if (!installRequest) {
|
||||
setLoading(false);
|
||||
setUpdatedConfig({});
|
||||
}
|
||||
}, [installRequest]);
|
||||
|
||||
const handleConfirm = useCallback(async () => {
|
||||
if (!installRequest || !schema) return;
|
||||
|
||||
setLoading(true);
|
||||
try {
|
||||
// 第三方市场和自定义插件:构建自定义插件数据
|
||||
let customPlugin: LobeToolCustomPlugin;
|
||||
|
||||
// 合并原始配置和用户更新的配置
|
||||
const finalConfig = {
|
||||
...schema.config,
|
||||
env: updatedConfig.env || schema.config.env,
|
||||
headers: updatedConfig.headers || schema.config.headers,
|
||||
};
|
||||
|
||||
// 自定义插件:先测试连接获取真实的 manifest
|
||||
const testParams: McpConnectionParams = {
|
||||
connection: finalConfig,
|
||||
identifier: identifier,
|
||||
metadata: {
|
||||
avatar: schema.icon,
|
||||
description: schema.description,
|
||||
},
|
||||
};
|
||||
console.log('testParams:', testParams);
|
||||
|
||||
const testResult = await testMcpConnection(testParams);
|
||||
|
||||
if (!testResult.success) {
|
||||
throw new Error(testResult.error || t('protocolInstall.messages.connectionTestFailed'));
|
||||
}
|
||||
|
||||
if (!testResult.manifest) {
|
||||
throw new Error(t('protocolInstall.messages.manifestNotFound'));
|
||||
}
|
||||
|
||||
// 使用测试连接获取的真实 manifest
|
||||
customPlugin = {
|
||||
customParams: {
|
||||
avatar: schema.icon,
|
||||
description: schema.description,
|
||||
mcp: {
|
||||
...finalConfig, // 使用合并后的配置
|
||||
headers: finalConfig.type === 'http' ? finalConfig.headers : undefined,
|
||||
},
|
||||
},
|
||||
identifier: schema.identifier,
|
||||
manifest: testResult.manifest, // 使用真实的 manifest
|
||||
type: 'customPlugin',
|
||||
};
|
||||
|
||||
await installCustomPlugin(customPlugin);
|
||||
await togglePlugin(schema.identifier);
|
||||
message.success(t('protocolInstall.messages.installSuccess', { name: schema.name }));
|
||||
|
||||
onComplete?.();
|
||||
} catch (error) {
|
||||
console.error('Plugin installation error:', error);
|
||||
message.error(t('protocolInstall.messages.installError'));
|
||||
setLoading(false);
|
||||
}
|
||||
}, [
|
||||
installRequest,
|
||||
schema,
|
||||
updatedConfig,
|
||||
onComplete,
|
||||
installCustomPlugin,
|
||||
testMcpConnection,
|
||||
togglePlugin,
|
||||
message,
|
||||
t,
|
||||
identifier,
|
||||
]);
|
||||
|
||||
const handleCancel = useCallback(() => {
|
||||
onComplete?.();
|
||||
}, [onComplete]);
|
||||
|
||||
if (!installRequest || !schema) return null;
|
||||
|
||||
// 根据类型渲染不同的 Alert 组件
|
||||
const renderAlert = () => {
|
||||
if (!isMarketplace) {
|
||||
return (
|
||||
<Alert
|
||||
message={t('protocolInstall.custom.security.description')}
|
||||
showIcon
|
||||
type="warning"
|
||||
variant={'borderless'}
|
||||
/>
|
||||
);
|
||||
}
|
||||
|
||||
// marketplace 类型
|
||||
return marketplace ? (
|
||||
<Alert
|
||||
message={t('protocolInstall.marketplace.trustedBy', { name: marketplace.name })}
|
||||
showIcon
|
||||
type="success"
|
||||
variant={'borderless'}
|
||||
/>
|
||||
) : (
|
||||
<Alert
|
||||
message={t('protocolInstall.marketplace.unverified.warning')}
|
||||
showIcon
|
||||
type="warning"
|
||||
variant={'borderless'}
|
||||
/>
|
||||
);
|
||||
};
|
||||
|
||||
const modalTitle = isMarketplace
|
||||
? t('protocolInstall.marketplace.title')
|
||||
: t('protocolInstall.custom.title');
|
||||
|
||||
const okText = isMarketplace
|
||||
? t('protocolInstall.actions.install')
|
||||
: t('protocolInstall.actions.installAnyway');
|
||||
|
||||
return (
|
||||
<Modal
|
||||
confirmLoading={loading || testState.loading}
|
||||
okText={okText}
|
||||
onCancel={handleCancel}
|
||||
onOk={handleConfirm}
|
||||
open
|
||||
title={modalTitle}
|
||||
width={680}
|
||||
>
|
||||
<Flexbox gap={24}>
|
||||
{renderAlert()}
|
||||
|
||||
<Block gap={16} horizontal justify={'space-between'} padding={16} variant={'outlined'}>
|
||||
<Flexbox gap={16} horizontal>
|
||||
<PluginAvatar avatar={schema.icon} size={40} />
|
||||
<Flexbox gap={2}>
|
||||
<Flexbox align={'center'} gap={8} horizontal>
|
||||
{schema.name}
|
||||
<PluginTag type={'customPlugin'} />
|
||||
</Flexbox>
|
||||
<Text style={{ fontSize: 12 }} type={'secondary'}>
|
||||
{schema.description}
|
||||
</Text>
|
||||
</Flexbox>
|
||||
</Flexbox>
|
||||
</Block>
|
||||
|
||||
<Flexbox>
|
||||
<ConfigDisplay onConfigUpdate={setUpdatedConfig} schema={schema} />
|
||||
{/* 显示测试连接错误 */}
|
||||
{testState.error && (
|
||||
<Alert
|
||||
closable
|
||||
description={testState.error}
|
||||
message={t('protocolInstall.messages.connectionTestFailed')}
|
||||
showIcon
|
||||
type="error"
|
||||
variant={'filled'}
|
||||
/>
|
||||
)}
|
||||
</Flexbox>
|
||||
</Flexbox>
|
||||
</Modal>
|
||||
);
|
||||
},
|
||||
);
|
||||
|
||||
CustomPluginInstallModal.displayName = 'CustomPluginInstallModal';
|
||||
|
||||
export default CustomPluginInstallModal;
|
||||
@@ -0,0 +1,44 @@
|
||||
'use client';
|
||||
|
||||
import { memo, useState } from 'react';
|
||||
import { Flexbox } from 'react-layout-kit';
|
||||
|
||||
import MCPInstallProgress from '@/features/MCP/MCPInstallProgress';
|
||||
import Deployment from '@/features/MCPPluginDetail/Deployment';
|
||||
import { DetailContextConfig, DetailProvider } from '@/features/MCPPluginDetail/DetailProvider';
|
||||
import Header from '@/features/MCPPluginDetail/Header';
|
||||
import Nav from '@/features/MCPPluginDetail/Nav';
|
||||
import Overview from '@/features/MCPPluginDetail/Overview';
|
||||
import Schema from '@/features/MCPPluginDetail/Schema';
|
||||
import Score from '@/features/MCPPluginDetail/Score';
|
||||
import { McpNavKey } from '@/types/discover';
|
||||
|
||||
interface OfficialDetailProps {
|
||||
data: DetailContextConfig;
|
||||
identifier: string;
|
||||
}
|
||||
|
||||
const OfficialDetail = memo<OfficialDetailProps>(({ data, identifier }) => {
|
||||
const [activeTab, setActiveTab] = useState(McpNavKey.Overview);
|
||||
|
||||
return (
|
||||
<DetailProvider config={data}>
|
||||
<Flexbox gap={16}>
|
||||
<Header inModal />
|
||||
<MCPInstallProgress identifier={identifier} />
|
||||
|
||||
<Nav activeTab={activeTab as McpNavKey} inModal noSettings setActiveTab={setActiveTab} />
|
||||
<Flexbox gap={24}>
|
||||
{activeTab === McpNavKey.Overview && <Overview inModal />}
|
||||
{activeTab === McpNavKey.Deployment && <Deployment />}
|
||||
{activeTab === McpNavKey.Schema && <Schema />}
|
||||
{activeTab === McpNavKey.Score && <Score />}
|
||||
</Flexbox>
|
||||
</Flexbox>
|
||||
</DetailProvider>
|
||||
);
|
||||
});
|
||||
|
||||
OfficialDetail.displayName = 'OfficialDetail';
|
||||
|
||||
export default OfficialDetail;
|
||||
@@ -0,0 +1,105 @@
|
||||
'use client';
|
||||
|
||||
import { Block, Modal, Text } from '@lobehub/ui';
|
||||
import { App } from 'antd';
|
||||
import { memo, useCallback, useState } from 'react';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
|
||||
import DetailLoading from '@/features/PluginStore/McpList/Detail/Loading';
|
||||
import { useAgentStore } from '@/store/agent';
|
||||
import { useDiscoverStore } from '@/store/discover';
|
||||
import { useToolStore } from '@/store/tool';
|
||||
import { pluginSelectors } from '@/store/tool/slices/plugin/selectors';
|
||||
|
||||
import { McpInstallRequest } from '../types';
|
||||
import OfficialDetail from './Detail';
|
||||
|
||||
interface OfficialPluginInstallModalProps {
|
||||
installRequest: McpInstallRequest | null;
|
||||
onComplete: () => void;
|
||||
}
|
||||
|
||||
const OfficialPluginInstallModal = memo<OfficialPluginInstallModalProps>(
|
||||
({ installRequest, onComplete }) => {
|
||||
const { message } = App.useApp();
|
||||
const { t } = useTranslation(['plugin', 'common']);
|
||||
const [loading, setLoading] = useState(false);
|
||||
|
||||
// 获取 MCP 插件详情
|
||||
const useMcpDetail = useDiscoverStore((s) => s.useFetchMcpDetail);
|
||||
const identifier = installRequest?.pluginId || '';
|
||||
|
||||
const [installed, installMCPPlugin] = useToolStore((s) => [
|
||||
pluginSelectors.isPluginInstalled(identifier!)(s),
|
||||
|
||||
s.installMCPPlugin,
|
||||
]);
|
||||
const togglePlugin = useAgentStore((s) => s.togglePlugin);
|
||||
|
||||
const { data, isLoading } = useMcpDetail({ identifier });
|
||||
|
||||
const handleConfirm = useCallback(async () => {
|
||||
if (!installRequest || !data) return;
|
||||
|
||||
setLoading(true);
|
||||
try {
|
||||
setLoading(true);
|
||||
await installMCPPlugin(identifier);
|
||||
await togglePlugin(identifier);
|
||||
setLoading(false);
|
||||
|
||||
message.success(t('protocolInstall.messages.installSuccess', { name: data.name }));
|
||||
onComplete();
|
||||
} catch (error) {
|
||||
console.error('Official plugin installation error:', error);
|
||||
message.error(t('protocolInstall.messages.installError'));
|
||||
setLoading(false);
|
||||
}
|
||||
}, [installRequest, data]);
|
||||
|
||||
if (!installRequest) return null;
|
||||
|
||||
// 渲染内容
|
||||
const renderContent = () => {
|
||||
// 如果正在加载,显示骨架屏
|
||||
if (isLoading || !identifier) {
|
||||
return <DetailLoading />;
|
||||
}
|
||||
|
||||
// 如果加载失败或没有数据,显示错误信息
|
||||
if (!data) {
|
||||
return (
|
||||
<Block>
|
||||
<Text type="danger">{t('protocolInstall.messages.manifestError')}</Text>
|
||||
</Block>
|
||||
);
|
||||
}
|
||||
|
||||
return <OfficialDetail data={data} identifier={identifier} />;
|
||||
};
|
||||
|
||||
return (
|
||||
<Modal
|
||||
confirmLoading={loading}
|
||||
okButtonProps={{
|
||||
disabled: installed || isLoading,
|
||||
type: installed ? 'default' : 'primary',
|
||||
}}
|
||||
okText={
|
||||
installed ? t('protocolInstall.actions.installed') : t('protocolInstall.actions.install')
|
||||
}
|
||||
onCancel={onComplete}
|
||||
onOk={handleConfirm}
|
||||
open
|
||||
title={t('protocolInstall.official.title')}
|
||||
width={800}
|
||||
>
|
||||
{renderContent()}
|
||||
</Modal>
|
||||
);
|
||||
},
|
||||
);
|
||||
|
||||
OfficialPluginInstallModal.displayName = 'OfficialPluginInstallModal';
|
||||
|
||||
export default OfficialPluginInstallModal;
|
||||
55
src/features/ProtocolUrlHandler/InstallPlugin/index.tsx
Normal file
55
src/features/ProtocolUrlHandler/InstallPlugin/index.tsx
Normal file
@@ -0,0 +1,55 @@
|
||||
'use client';
|
||||
|
||||
import { memo } from 'react';
|
||||
|
||||
import CustomPluginInstallModal from './CustomPluginInstallModal';
|
||||
import OfficialPluginInstallModal from './OfficialPluginInstallModal';
|
||||
import { McpInstallRequest, PluginSource } from './types';
|
||||
|
||||
interface PluginInstallConfirmModalProps {
|
||||
installRequest: McpInstallRequest | null;
|
||||
onComplete: () => void;
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据安装请求的来源确定插件类型
|
||||
*/
|
||||
const getPluginSource = (request: McpInstallRequest): PluginSource => {
|
||||
const { marketId } = request;
|
||||
|
||||
// 官方 LobeHub 插件
|
||||
if (marketId === 'lobehub') {
|
||||
return PluginSource.OFFICIAL;
|
||||
}
|
||||
|
||||
// 第三方市场插件(包括可信和不可信的)
|
||||
if (marketId && marketId !== 'lobehub') {
|
||||
return PluginSource.MARKETPLACE;
|
||||
}
|
||||
|
||||
// 自定义插件(没有 marketId)
|
||||
return PluginSource.CUSTOM;
|
||||
};
|
||||
|
||||
const PluginInstallConfirmModal = memo<PluginInstallConfirmModalProps>(
|
||||
({ installRequest, onComplete }) => {
|
||||
if (!installRequest) return null;
|
||||
|
||||
const pluginSource = getPluginSource(installRequest);
|
||||
|
||||
if (pluginSource === PluginSource.OFFICIAL)
|
||||
return <OfficialPluginInstallModal installRequest={installRequest} onComplete={onComplete} />;
|
||||
|
||||
return (
|
||||
<CustomPluginInstallModal
|
||||
installRequest={installRequest}
|
||||
isMarketplace={pluginSource === PluginSource.MARKETPLACE}
|
||||
onComplete={onComplete}
|
||||
/>
|
||||
);
|
||||
},
|
||||
);
|
||||
|
||||
PluginInstallConfirmModal.displayName = 'PluginInstallConfirmModal';
|
||||
|
||||
export default PluginInstallConfirmModal;
|
||||
45
src/features/ProtocolUrlHandler/InstallPlugin/types.ts
Normal file
45
src/features/ProtocolUrlHandler/InstallPlugin/types.ts
Normal file
@@ -0,0 +1,45 @@
|
||||
import { McpInstallSchema } from '@lobechat/electron-client-ipc';
|
||||
|
||||
export enum PluginSource {
|
||||
CUSTOM = 'custom',
|
||||
MARKETPLACE = 'marketplace',
|
||||
OFFICIAL = 'official',
|
||||
}
|
||||
|
||||
export interface McpInstallRequest {
|
||||
marketId?: string;
|
||||
pluginId: string;
|
||||
schema?: McpInstallSchema;
|
||||
source: string;
|
||||
}
|
||||
|
||||
export interface BaseContentProps {
|
||||
installRequest: McpInstallRequest;
|
||||
}
|
||||
|
||||
export interface ModalConfig {
|
||||
okText: string;
|
||||
title: string;
|
||||
width?: number;
|
||||
}
|
||||
|
||||
// 可信的第三方市场列表
|
||||
export const TRUSTED_MARKETPLACES = {
|
||||
higress: {
|
||||
description: 'Enterprise-grade MCP plugins for cloud-native applications',
|
||||
name: 'Higress Marketplace',
|
||||
website: 'https://higress.ai',
|
||||
},
|
||||
mcprouter: {
|
||||
description: 'Community-driven MCP plugin marketplace',
|
||||
name: 'MCPRouter',
|
||||
website: 'https://mcprouter.com',
|
||||
},
|
||||
smithery: {
|
||||
description: 'Professional MCP plugins and tools',
|
||||
name: 'Smithery',
|
||||
website: 'https://smithery.ai',
|
||||
},
|
||||
} as const;
|
||||
|
||||
export type TrustedMarketplaceId = keyof typeof TRUSTED_MARKETPLACES;
|
||||
30
src/features/ProtocolUrlHandler/index.tsx
Normal file
30
src/features/ProtocolUrlHandler/index.tsx
Normal file
@@ -0,0 +1,30 @@
|
||||
'use client';
|
||||
|
||||
import { useWatchBroadcast } from '@lobechat/electron-client-ipc';
|
||||
import { useCallback, useState } from 'react';
|
||||
|
||||
import { McpInstallRequest } from '@/features/ProtocolUrlHandler/InstallPlugin/types';
|
||||
|
||||
import PluginInstallConfirmModal from './InstallPlugin';
|
||||
|
||||
const ProtocolUrlHandler = () => {
|
||||
const [installRequest, setInstallRequest] = useState<McpInstallRequest | null>(null);
|
||||
|
||||
const handleMcpInstallRequest = useCallback(
|
||||
(data: { marketId?: string; pluginId: string; schema: any }) => {
|
||||
// 将原始数据传递给子组件处理
|
||||
setInstallRequest(data as McpInstallRequest);
|
||||
},
|
||||
[],
|
||||
);
|
||||
|
||||
const handleComplete = useCallback(() => {
|
||||
setInstallRequest(null);
|
||||
}, []);
|
||||
|
||||
useWatchBroadcast('mcpInstallRequest', handleMcpInstallRequest);
|
||||
|
||||
return <PluginInstallConfirmModal installRequest={installRequest} onComplete={handleComplete} />;
|
||||
};
|
||||
|
||||
export default ProtocolUrlHandler;
|
||||
@@ -308,6 +308,66 @@ export default {
|
||||
skipDependencies: '跳过检查',
|
||||
},
|
||||
pluginList: '插件列表',
|
||||
protocolInstall: {
|
||||
actions: {
|
||||
install: '安装',
|
||||
installAnyway: '仍要安装',
|
||||
installed: '已安装',
|
||||
},
|
||||
config: {
|
||||
args: '参数',
|
||||
command: '命令',
|
||||
env: '环境变量',
|
||||
headers: '请求头',
|
||||
title: '配置信息',
|
||||
type: {
|
||||
http: '类型: HTTP',
|
||||
label: '类型',
|
||||
stdio: '类型: Stdio',
|
||||
},
|
||||
url: '服务地址',
|
||||
},
|
||||
custom: {
|
||||
badge: '自定义插件',
|
||||
security: {
|
||||
description: '此插件未经过官方验证,安装可能存在安全风险!请确保您信任插件来源。',
|
||||
title: '⚠️ 安全风险提示',
|
||||
},
|
||||
title: '安装自定义插件',
|
||||
},
|
||||
marketplace: {
|
||||
title: '安装第三方插件',
|
||||
trustedBy: '由 {{name}} 提供',
|
||||
unverified: {
|
||||
title: '未经验证的第三方插件',
|
||||
warning: '此插件来自未验证的第三方市场,安装前请确认您信任该来源。',
|
||||
},
|
||||
verified: '已验证',
|
||||
},
|
||||
messages: {
|
||||
connectionTestFailed: '连接测试失败',
|
||||
installError: '插件安装失败,请重试',
|
||||
installSuccess: '插件 {{name}} 安装成功!',
|
||||
manifestError: '获取插件详情失败,请检查网络连接后重试',
|
||||
manifestNotFound: '未能获取插件描述文件',
|
||||
},
|
||||
meta: {
|
||||
author: '作者',
|
||||
homepage: '主页',
|
||||
identifier: '标识符',
|
||||
source: '来源',
|
||||
version: '版本',
|
||||
},
|
||||
official: {
|
||||
badge: 'LobeHub 官方插件',
|
||||
description: '此插件由 LobeHub 官方开发和维护,经过严格的安全审核,可放心使用。',
|
||||
loadingMessage: '正在获取插件详情...',
|
||||
loadingTitle: '加载中',
|
||||
title: '安装官方插件',
|
||||
},
|
||||
title: '安装 MCP 插件',
|
||||
warning: '⚠️ 请确认您信任此插件的来源,恶意插件可能会危害您的系统安全。',
|
||||
},
|
||||
search: {
|
||||
apiName: {
|
||||
crawlMultiPages: '读取多个页面内容',
|
||||
|
||||
@@ -18,24 +18,36 @@ import {
|
||||
CheckMcpInstallResult,
|
||||
MCPErrorInfo,
|
||||
MCPInstallProgress,
|
||||
MCPInstallStep,
|
||||
MCPPluginListParams,
|
||||
McpConnectionParams,
|
||||
} from '@/types/plugins';
|
||||
import { sleep } from '@/utils/sleep';
|
||||
import { setNamespace } from '@/utils/storeDebug';
|
||||
|
||||
import { ToolStore } from '../../store';
|
||||
import { MCPInstallStep, MCPStoreState } from './initialState';
|
||||
import { MCPStoreState } from './initialState';
|
||||
|
||||
const n = setNamespace('mcpStore');
|
||||
|
||||
// 测试连接结果类型
|
||||
export interface TestMcpConnectionResult {
|
||||
error?: string;
|
||||
manifest?: LobeChatPluginManifest;
|
||||
success: boolean;
|
||||
}
|
||||
|
||||
export interface PluginMCPStoreAction {
|
||||
cancelInstallMCPPlugin: (identifier: string) => Promise<void>;
|
||||
cancelMcpConnectionTest: (identifier: string) => void;
|
||||
installMCPPlugin: (
|
||||
identifier: string,
|
||||
options?: { config?: Record<string, any>; resume?: boolean; skipDepsCheck?: boolean },
|
||||
) => Promise<boolean | undefined>;
|
||||
loadMoreMCPPlugins: () => void;
|
||||
resetMCPPluginList: (keywords?: string) => void;
|
||||
// 测试连接相关方法
|
||||
testMcpConnection: (params: McpConnectionParams) => Promise<TestMcpConnectionResult>;
|
||||
uninstallMCPPlugin: (identifier: string) => Promise<void>;
|
||||
updateMCPInstallProgress: (identifier: string, progress: MCPInstallProgress | undefined) => void;
|
||||
useFetchMCPPluginList: (params: MCPPluginListParams) => SWRResponse<PluginListResponse>;
|
||||
@@ -68,6 +80,25 @@ export const createMCPPluginStoreSlice: StateCreator<
|
||||
get().updateInstallLoadingState(identifier, undefined);
|
||||
},
|
||||
|
||||
// 取消 MCP 连接测试
|
||||
cancelMcpConnectionTest: (identifier) => {
|
||||
const abortController = get().mcpTestAbortControllers[identifier];
|
||||
if (abortController) {
|
||||
abortController.abort();
|
||||
|
||||
// 清理状态
|
||||
set(
|
||||
produce((draft: MCPStoreState) => {
|
||||
draft.mcpTestLoading[identifier] = false;
|
||||
delete draft.mcpTestAbortControllers[identifier];
|
||||
delete draft.mcpTestErrors[identifier];
|
||||
}),
|
||||
false,
|
||||
n('cancelMcpConnectionTest'),
|
||||
);
|
||||
}
|
||||
},
|
||||
|
||||
installMCPPlugin: async (identifier, options = {}) => {
|
||||
const { resume = false, config, skipDepsCheck } = options;
|
||||
let plugin = mcpStoreSelectors.getPluginById(identifier)(get());
|
||||
@@ -438,6 +469,101 @@ export const createMCPPluginStoreSlice: StateCreator<
|
||||
);
|
||||
},
|
||||
|
||||
// 测试 MCP 连接
|
||||
testMcpConnection: async (params) => {
|
||||
const { identifier, connection, metadata } = params;
|
||||
|
||||
// 创建 AbortController 用于取消测试
|
||||
const abortController = new AbortController();
|
||||
|
||||
// 存储 AbortController 并设置加载状态
|
||||
set(
|
||||
produce((draft: MCPStoreState) => {
|
||||
draft.mcpTestAbortControllers[identifier] = abortController;
|
||||
draft.mcpTestLoading[identifier] = true;
|
||||
draft.mcpTestErrors[identifier] = '';
|
||||
}),
|
||||
false,
|
||||
n('testMcpConnection/start'),
|
||||
);
|
||||
|
||||
try {
|
||||
let manifest: LobeChatPluginManifest;
|
||||
|
||||
if (connection.type === 'http') {
|
||||
if (!connection.url) {
|
||||
throw new Error('URL is required for HTTP connection');
|
||||
}
|
||||
|
||||
manifest = await mcpService.getStreamableMcpServerManifest(
|
||||
{
|
||||
auth: connection.auth,
|
||||
headers: connection.headers,
|
||||
identifier,
|
||||
metadata,
|
||||
url: connection.url,
|
||||
},
|
||||
abortController.signal,
|
||||
);
|
||||
} else if (connection.type === 'stdio') {
|
||||
if (!connection.command) {
|
||||
throw new Error('Command is required for STDIO connection');
|
||||
}
|
||||
|
||||
manifest = await mcpService.getStdioMcpServerManifest(
|
||||
{
|
||||
args: connection.args,
|
||||
command: connection.command,
|
||||
env: connection.env,
|
||||
name: identifier,
|
||||
},
|
||||
metadata,
|
||||
abortController.signal,
|
||||
);
|
||||
} else {
|
||||
throw new Error('Invalid MCP connection type');
|
||||
}
|
||||
|
||||
// 检查是否已被取消
|
||||
if (abortController.signal.aborted) {
|
||||
return { error: 'Test cancelled', success: false };
|
||||
}
|
||||
|
||||
// 清理状态
|
||||
set(
|
||||
produce((draft: MCPStoreState) => {
|
||||
draft.mcpTestLoading[identifier] = false;
|
||||
delete draft.mcpTestAbortControllers[identifier];
|
||||
delete draft.mcpTestErrors[identifier];
|
||||
}),
|
||||
false,
|
||||
n('testMcpConnection/success'),
|
||||
);
|
||||
|
||||
return { manifest, success: true };
|
||||
} catch (error) {
|
||||
// 如果是因为取消导致的错误,静默处理
|
||||
if (abortController.signal.aborted) {
|
||||
return { error: 'Test cancelled', success: false };
|
||||
}
|
||||
|
||||
const errorMessage = error instanceof Error ? error.message : String(error);
|
||||
|
||||
// 设置错误状态
|
||||
set(
|
||||
produce((draft: MCPStoreState) => {
|
||||
draft.mcpTestLoading[identifier] = false;
|
||||
draft.mcpTestErrors[identifier] = errorMessage;
|
||||
delete draft.mcpTestAbortControllers[identifier];
|
||||
}),
|
||||
false,
|
||||
n('testMcpConnection/error'),
|
||||
);
|
||||
|
||||
return { error: errorMessage, success: false };
|
||||
}
|
||||
},
|
||||
|
||||
uninstallMCPPlugin: async (identifier) => {
|
||||
await pluginService.uninstallPlugin(identifier);
|
||||
await get().refreshPlugins();
|
||||
|
||||
@@ -2,19 +2,6 @@ import { PluginItem } from '@lobehub/market-sdk';
|
||||
|
||||
import { MCPInstallProgressMap } from '@/types/plugins';
|
||||
|
||||
/* eslint-disable typescript-sort-keys/string-enum */
|
||||
export enum MCPInstallStep {
|
||||
FETCHING_MANIFEST = 'FETCHING_MANIFEST',
|
||||
CHECKING_INSTALLATION = 'CHECKING_INSTALLATION',
|
||||
DEPENDENCIES_REQUIRED = 'DEPENDENCIES_REQUIRED',
|
||||
GETTING_SERVER_MANIFEST = 'GETTING_SERVER_MANIFEST',
|
||||
CONFIGURATION_REQUIRED = 'CONFIGURATION_REQUIRED',
|
||||
INSTALLING_PLUGIN = 'INSTALLING_PLUGIN',
|
||||
COMPLETED = 'COMPLETED',
|
||||
ERROR = 'Error',
|
||||
}
|
||||
/* eslint-enable */
|
||||
|
||||
export interface MCPStoreState {
|
||||
activeMCPIdentifier?: string;
|
||||
categories: string[];
|
||||
@@ -25,6 +12,10 @@ export interface MCPStoreState {
|
||||
mcpInstallProgress: MCPInstallProgressMap;
|
||||
mcpPluginItems: PluginItem[];
|
||||
mcpSearchKeywords?: string;
|
||||
// 测试连接相关状态
|
||||
mcpTestAbortControllers: Record<string, AbortController>;
|
||||
mcpTestErrors: Record<string, string>;
|
||||
mcpTestLoading: Record<string, boolean>;
|
||||
searchLoading?: boolean;
|
||||
tags?: string[];
|
||||
totalCount?: number;
|
||||
@@ -37,4 +28,8 @@ export const initialMCPStoreState: MCPStoreState = {
|
||||
mcpInstallAbortControllers: {},
|
||||
mcpInstallProgress: {},
|
||||
mcpPluginItems: [],
|
||||
// 测试连接相关状态初始化
|
||||
mcpTestAbortControllers: {},
|
||||
mcpTestErrors: {},
|
||||
mcpTestLoading: {},
|
||||
};
|
||||
|
||||
@@ -49,11 +49,24 @@ const isMCPInstallInProgress = (id: string) => (s: ToolStoreState) => {
|
||||
return !!progress && !progress.needsConfig && progress.step !== 'Error';
|
||||
};
|
||||
|
||||
// 测试连接相关选择器
|
||||
const isMCPConnectionTesting = (id: string) => (s: ToolStoreState) => s.mcpTestLoading[id] || false;
|
||||
|
||||
const getMCPConnectionTestError = (id: string) => (s: ToolStoreState) => s.mcpTestErrors[id];
|
||||
|
||||
const getMCPConnectionTestState = (id: string) => (s: ToolStoreState) => ({
|
||||
error: s.mcpTestErrors[id],
|
||||
loading: s.mcpTestLoading[id] || false,
|
||||
});
|
||||
|
||||
export const mcpStoreSelectors = {
|
||||
activeMCPPluginIdentifier,
|
||||
getMCPConnectionTestError,
|
||||
getMCPConnectionTestState,
|
||||
getMCPInstallProgress,
|
||||
getMCPPluginRequiringConfig,
|
||||
getPluginById,
|
||||
isMCPConnectionTesting,
|
||||
isMCPInstallInProgress,
|
||||
isMCPInstalling,
|
||||
isMCPPluginRequiringConfig,
|
||||
|
||||
Reference in New Issue
Block a user