mirror of
https://github.com/danny-avila/LibreChat.git
synced 2026-01-19 08:46:11 +01:00
feat: init @librechat/client
This commit is contained in:
parent
545a909953
commit
dcaa5af598
207 changed files with 21329 additions and 239 deletions
6
packages/client/src/common/a11y.ts
Normal file
6
packages/client/src/common/a11y.ts
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
export interface AnnounceOptions {
|
||||
message: string;
|
||||
isStatus?: boolean;
|
||||
}
|
||||
|
||||
export const MESSAGE_UPDATE_INTERVAL = 7000;
|
||||
33
packages/client/src/common/agents-types.ts
Normal file
33
packages/client/src/common/agents-types.ts
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
import { AgentCapabilities, ArtifactModes } from 'librechat-data-provider';
|
||||
import type { Agent, AgentProvider, AgentModelParameters } from 'librechat-data-provider';
|
||||
import type { OptionWithIcon, ExtendedFile } from './types';
|
||||
|
||||
export type TAgentOption = OptionWithIcon &
|
||||
Agent & {
|
||||
knowledge_files?: Array<[string, ExtendedFile]>;
|
||||
context_files?: Array<[string, ExtendedFile]>;
|
||||
code_files?: Array<[string, ExtendedFile]>;
|
||||
};
|
||||
|
||||
export type TAgentCapabilities = {
|
||||
[AgentCapabilities.web_search]: boolean;
|
||||
[AgentCapabilities.file_search]: boolean;
|
||||
[AgentCapabilities.execute_code]: boolean;
|
||||
[AgentCapabilities.end_after_tools]?: boolean;
|
||||
[AgentCapabilities.hide_sequential_outputs]?: boolean;
|
||||
};
|
||||
|
||||
export type AgentForm = {
|
||||
agent?: TAgentOption;
|
||||
id: string;
|
||||
name: string | null;
|
||||
description: string | null;
|
||||
instructions: string | null;
|
||||
model: string | null;
|
||||
model_parameters: AgentModelParameters;
|
||||
tools?: string[];
|
||||
provider?: AgentProvider | OptionWithIcon;
|
||||
agent_ids?: string[];
|
||||
[AgentCapabilities.artifacts]?: ArtifactModes | string;
|
||||
recursion_limit?: number;
|
||||
} & TAgentCapabilities;
|
||||
27
packages/client/src/common/artifacts.ts
Normal file
27
packages/client/src/common/artifacts.ts
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
export interface CodeBlock {
|
||||
id: string;
|
||||
language: string;
|
||||
content: string;
|
||||
}
|
||||
|
||||
export interface Artifact {
|
||||
id: string;
|
||||
lastUpdateTime: number;
|
||||
index?: number;
|
||||
messageId?: string;
|
||||
identifier?: string;
|
||||
language?: string;
|
||||
content?: string;
|
||||
title?: string;
|
||||
type?: string;
|
||||
}
|
||||
|
||||
export type ArtifactFiles =
|
||||
| {
|
||||
'App.tsx': string;
|
||||
'index.tsx': string;
|
||||
'/components/ui/MermaidDiagram.tsx': string;
|
||||
}
|
||||
| Partial<{
|
||||
[x: string]: string | undefined;
|
||||
}>;
|
||||
31
packages/client/src/common/assistants-types.ts
Normal file
31
packages/client/src/common/assistants-types.ts
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
import { Capabilities, EModelEndpoint } from 'librechat-data-provider';
|
||||
import type { Assistant, AssistantsEndpoint } from 'librechat-data-provider';
|
||||
import type { Option, ExtendedFile } from './types';
|
||||
|
||||
export type ActionsEndpoint = AssistantsEndpoint | EModelEndpoint.agents;
|
||||
|
||||
export type TAssistantOption =
|
||||
| string
|
||||
| (Option &
|
||||
Assistant & {
|
||||
files?: Array<[string, ExtendedFile]>;
|
||||
code_files?: Array<[string, ExtendedFile]>;
|
||||
});
|
||||
|
||||
export type Actions = {
|
||||
[Capabilities.code_interpreter]: boolean;
|
||||
[Capabilities.image_vision]: boolean;
|
||||
[Capabilities.retrieval]: boolean;
|
||||
};
|
||||
|
||||
export type AssistantForm = {
|
||||
assistant: TAssistantOption;
|
||||
id: string;
|
||||
name: string | null;
|
||||
description: string | null;
|
||||
instructions: string | null;
|
||||
conversation_starters: string[];
|
||||
model: string;
|
||||
functions: string[];
|
||||
append_current_datetime: boolean;
|
||||
} & Actions;
|
||||
8
packages/client/src/common/index.ts
Normal file
8
packages/client/src/common/index.ts
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
export * from './a11y';
|
||||
export * from './artifacts';
|
||||
export * from './types';
|
||||
export * from './menus';
|
||||
export * from './tools';
|
||||
export * from './selector';
|
||||
export * from './assistants-types';
|
||||
export * from './agents-types';
|
||||
26
packages/client/src/common/mcp.ts
Normal file
26
packages/client/src/common/mcp.ts
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
import {
|
||||
AuthorizationTypeEnum,
|
||||
AuthTypeEnum,
|
||||
TokenExchangeMethodEnum,
|
||||
} from 'librechat-data-provider';
|
||||
import { MCPForm } from '~/common/types';
|
||||
|
||||
export const defaultMCPFormValues: MCPForm = {
|
||||
type: AuthTypeEnum.None,
|
||||
saved_auth_fields: false,
|
||||
api_key: '',
|
||||
authorization_type: AuthorizationTypeEnum.Basic,
|
||||
custom_auth_header: '',
|
||||
oauth_client_id: '',
|
||||
oauth_client_secret: '',
|
||||
authorization_url: '',
|
||||
client_url: '',
|
||||
scope: '',
|
||||
token_exchange_method: TokenExchangeMethodEnum.DefaultPost,
|
||||
name: '',
|
||||
description: '',
|
||||
url: '',
|
||||
tools: [],
|
||||
icon: '',
|
||||
trust: false,
|
||||
};
|
||||
24
packages/client/src/common/menus.ts
Normal file
24
packages/client/src/common/menus.ts
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
/* eslint-disable @typescript-eslint/no-explicit-any */
|
||||
export type RenderProp<
|
||||
P = React.HTMLAttributes<any> & {
|
||||
ref?: React.Ref<any>;
|
||||
},
|
||||
> = (props: P) => React.ReactNode;
|
||||
|
||||
export interface MenuItemProps {
|
||||
id?: string;
|
||||
label?: string;
|
||||
onClick?: (e: React.MouseEvent<HTMLButtonElement | HTMLDivElement>) => void;
|
||||
icon?: React.ReactNode;
|
||||
kbd?: string;
|
||||
show?: boolean;
|
||||
disabled?: boolean;
|
||||
separate?: boolean;
|
||||
hideOnClick?: boolean;
|
||||
dialog?: React.ReactElement;
|
||||
ref?: React.Ref<any>;
|
||||
render?:
|
||||
| RenderProp<React.HTMLAttributes<any> & { ref?: React.Ref<any> | undefined }>
|
||||
| React.ReactElement<any, string | React.JSXElementConstructor<any>>
|
||||
| undefined;
|
||||
}
|
||||
23
packages/client/src/common/selector.ts
Normal file
23
packages/client/src/common/selector.ts
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
import React from 'react';
|
||||
import { TModelSpec, TStartupConfig } from 'librechat-data-provider';
|
||||
|
||||
export interface Endpoint {
|
||||
value: string;
|
||||
label: string;
|
||||
hasModels: boolean;
|
||||
models?: Array<{ name: string; isGlobal?: boolean }>;
|
||||
icon: React.ReactNode;
|
||||
agentNames?: Record<string, string>;
|
||||
assistantNames?: Record<string, string>;
|
||||
modelIcons?: Record<string, string | undefined>;
|
||||
}
|
||||
|
||||
export interface SelectedValues {
|
||||
endpoint: string | null;
|
||||
model: string | null;
|
||||
modelSpec: string | null;
|
||||
}
|
||||
|
||||
export interface ModelSelectorProps {
|
||||
startupConfig: TStartupConfig | undefined;
|
||||
}
|
||||
6
packages/client/src/common/tools.ts
Normal file
6
packages/client/src/common/tools.ts
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
import type { AuthType } from 'librechat-data-provider';
|
||||
|
||||
export type ApiKeyFormData = {
|
||||
apiKey: string;
|
||||
authType?: string | AuthType;
|
||||
};
|
||||
627
packages/client/src/common/types.ts
Normal file
627
packages/client/src/common/types.ts
Normal file
|
|
@ -0,0 +1,627 @@
|
|||
import { RefObject } from 'react';
|
||||
import { FileSources, EModelEndpoint } from 'librechat-data-provider';
|
||||
import type { UseMutationResult } from '@tanstack/react-query';
|
||||
import type * as InputNumberPrimitive from 'rc-input-number';
|
||||
import type { SetterOrUpdater, RecoilState } from 'recoil';
|
||||
import type { ColumnDef } from '@tanstack/react-table';
|
||||
import type * as t from 'librechat-data-provider';
|
||||
import type { LucideIcon } from 'lucide-react';
|
||||
import type { TranslationKeys } from '~/hooks';
|
||||
|
||||
export type CodeBarProps = {
|
||||
lang: string;
|
||||
error?: boolean;
|
||||
plugin?: boolean;
|
||||
blockIndex?: number;
|
||||
allowExecution?: boolean;
|
||||
codeRef: RefObject<HTMLElement>;
|
||||
};
|
||||
|
||||
export enum PromptsEditorMode {
|
||||
SIMPLE = 'simple',
|
||||
ADVANCED = 'advanced',
|
||||
}
|
||||
|
||||
export enum STTEndpoints {
|
||||
browser = 'browser',
|
||||
external = 'external',
|
||||
}
|
||||
|
||||
export enum TTSEndpoints {
|
||||
browser = 'browser',
|
||||
external = 'external',
|
||||
}
|
||||
|
||||
export type AudioChunk = {
|
||||
audio: string;
|
||||
isFinal: boolean;
|
||||
alignment: {
|
||||
char_start_times_ms: number[];
|
||||
chars_durations_ms: number[];
|
||||
chars: string[];
|
||||
};
|
||||
normalizedAlignment: {
|
||||
char_start_times_ms: number[];
|
||||
chars_durations_ms: number[];
|
||||
chars: string[];
|
||||
};
|
||||
};
|
||||
|
||||
export type BadgeItem = {
|
||||
id: string;
|
||||
icon: React.ComponentType<any>;
|
||||
label: string;
|
||||
atom: RecoilState<boolean>;
|
||||
isAvailable: boolean;
|
||||
};
|
||||
|
||||
export type AssistantListItem = {
|
||||
id: string;
|
||||
name: string;
|
||||
metadata: t.Assistant['metadata'];
|
||||
model: string;
|
||||
};
|
||||
|
||||
export type AgentListItem = {
|
||||
id: string;
|
||||
name: string;
|
||||
avatar: t.Agent['avatar'];
|
||||
};
|
||||
|
||||
export type TPluginMap = Record<string, t.TPlugin>;
|
||||
|
||||
export type GenericSetter<T> = (value: T | ((currentValue: T) => T)) => void;
|
||||
|
||||
export type LastSelectedModels = Record<t.EModelEndpoint, string>;
|
||||
|
||||
export type LocalizeFunction = (
|
||||
phraseKey: TranslationKeys,
|
||||
options?: Record<string, string | number>,
|
||||
) => string;
|
||||
|
||||
export type ChatFormValues = { text: string };
|
||||
|
||||
export const mainTextareaId = 'prompt-textarea';
|
||||
export const globalAudioId = 'global-audio';
|
||||
|
||||
export enum IconContext {
|
||||
landing = 'landing',
|
||||
menuItem = 'menu-item',
|
||||
nav = 'nav',
|
||||
message = 'message',
|
||||
}
|
||||
|
||||
export type IconMapProps = {
|
||||
className?: string;
|
||||
iconURL?: string;
|
||||
context?: 'landing' | 'menu-item' | 'nav' | 'message';
|
||||
endpoint?: string | null;
|
||||
endpointType?: string;
|
||||
assistantName?: string;
|
||||
agentName?: string;
|
||||
avatar?: string;
|
||||
size?: number;
|
||||
};
|
||||
|
||||
export type IconComponent = React.ComponentType<IconMapProps>;
|
||||
export type AgentIconComponent = React.ComponentType<AgentIconMapProps>;
|
||||
export type IconComponentTypes = IconComponent | AgentIconComponent;
|
||||
export type IconsRecord = {
|
||||
[key in t.EModelEndpoint | 'unknown' | string]: IconComponentTypes | null | undefined;
|
||||
};
|
||||
|
||||
export type AgentIconMapProps = IconMapProps & { agentName?: string };
|
||||
|
||||
export type NavLink = {
|
||||
title: TranslationKeys;
|
||||
label?: string;
|
||||
icon: LucideIcon | React.FC;
|
||||
Component?: React.ComponentType;
|
||||
onClick?: (e?: React.MouseEvent) => void;
|
||||
variant?: 'default' | 'ghost';
|
||||
id: string;
|
||||
};
|
||||
|
||||
export interface NavProps {
|
||||
isCollapsed: boolean;
|
||||
links: NavLink[];
|
||||
resize?: (size: number) => void;
|
||||
defaultActive?: string;
|
||||
}
|
||||
|
||||
export interface DataColumnMeta {
|
||||
meta:
|
||||
| {
|
||||
size: number | string;
|
||||
}
|
||||
| undefined;
|
||||
}
|
||||
|
||||
export enum Panel {
|
||||
advanced = 'advanced',
|
||||
builder = 'builder',
|
||||
actions = 'actions',
|
||||
model = 'model',
|
||||
version = 'version',
|
||||
mcp = 'mcp',
|
||||
}
|
||||
|
||||
export type FileSetter =
|
||||
| SetterOrUpdater<Map<string, ExtendedFile>>
|
||||
| React.Dispatch<React.SetStateAction<Map<string, ExtendedFile>>>;
|
||||
|
||||
export type ActionAuthForm = {
|
||||
/* General */
|
||||
type: t.AuthTypeEnum;
|
||||
saved_auth_fields: boolean;
|
||||
/* API key */
|
||||
api_key: string; // not nested
|
||||
authorization_type: t.AuthorizationTypeEnum;
|
||||
custom_auth_header: string;
|
||||
/* OAuth */
|
||||
oauth_client_id: string; // not nested
|
||||
oauth_client_secret: string; // not nested
|
||||
authorization_url: string;
|
||||
client_url: string;
|
||||
scope: string;
|
||||
token_exchange_method: t.TokenExchangeMethodEnum;
|
||||
};
|
||||
|
||||
export type MCPForm = ActionAuthForm & {
|
||||
name?: string;
|
||||
description?: string;
|
||||
url?: string;
|
||||
tools?: string[];
|
||||
icon?: string;
|
||||
trust?: boolean;
|
||||
};
|
||||
|
||||
export type ActionWithNullableMetadata = Omit<t.Action, 'metadata'> & {
|
||||
metadata: t.ActionMetadata | null;
|
||||
};
|
||||
|
||||
export type AssistantPanelProps = {
|
||||
index?: number;
|
||||
action?: ActionWithNullableMetadata;
|
||||
actions?: t.Action[];
|
||||
assistant_id?: string;
|
||||
activePanel?: string;
|
||||
endpoint: t.AssistantsEndpoint;
|
||||
version: number | string;
|
||||
documentsMap: Map<string, t.AssistantDocument> | null;
|
||||
setAction: React.Dispatch<React.SetStateAction<t.Action | undefined>>;
|
||||
setCurrentAssistantId: React.Dispatch<React.SetStateAction<string | undefined>>;
|
||||
setActivePanel: React.Dispatch<React.SetStateAction<Panel>>;
|
||||
};
|
||||
|
||||
export type AgentPanelProps = {
|
||||
index?: number;
|
||||
agent_id?: string;
|
||||
activePanel?: string;
|
||||
mcp?: t.MCP;
|
||||
mcps?: t.MCP[];
|
||||
action?: t.Action;
|
||||
actions?: t.Action[];
|
||||
createMutation: UseMutationResult<t.Agent, Error, t.AgentCreateParams>;
|
||||
setActivePanel: React.Dispatch<React.SetStateAction<Panel>>;
|
||||
setMcp: React.Dispatch<React.SetStateAction<t.MCP | undefined>>;
|
||||
setAction: React.Dispatch<React.SetStateAction<t.Action | undefined>>;
|
||||
setCurrentAgentId: React.Dispatch<React.SetStateAction<string | undefined>>;
|
||||
};
|
||||
|
||||
export type AgentPanelContextType = {
|
||||
action?: t.Action;
|
||||
actions?: t.Action[];
|
||||
setAction: React.Dispatch<React.SetStateAction<t.Action | undefined>>;
|
||||
mcp?: t.MCP;
|
||||
mcps?: t.MCP[];
|
||||
setMcp: React.Dispatch<React.SetStateAction<t.MCP | undefined>>;
|
||||
setMcps: React.Dispatch<React.SetStateAction<t.MCP[] | undefined>>;
|
||||
tools: t.AgentToolType[];
|
||||
activePanel?: string;
|
||||
setActivePanel: React.Dispatch<React.SetStateAction<Panel>>;
|
||||
setCurrentAgentId: React.Dispatch<React.SetStateAction<string | undefined>>;
|
||||
groupedTools?: Record<string, t.AgentToolType & { tools?: t.AgentToolType[] }>;
|
||||
agent_id?: string;
|
||||
agentsConfig?: t.TAgentsEndpoint | null;
|
||||
endpointsConfig?: t.TEndpointsConfig | null;
|
||||
};
|
||||
|
||||
export type AgentModelPanelProps = {
|
||||
agent_id?: string;
|
||||
providers: Option[];
|
||||
models: Record<string, string[] | undefined>;
|
||||
setActivePanel: React.Dispatch<React.SetStateAction<Panel>>;
|
||||
};
|
||||
|
||||
export type AugmentedColumnDef<TData, TValue> = ColumnDef<TData, TValue> & DataColumnMeta;
|
||||
|
||||
export type TSetOption = t.TSetOption;
|
||||
|
||||
export type TSetExample = (
|
||||
i: number,
|
||||
type: string,
|
||||
newValue: number | string | boolean | null,
|
||||
) => void;
|
||||
|
||||
export type OnInputNumberChange = InputNumberPrimitive.InputNumberProps['onChange'];
|
||||
|
||||
export const defaultDebouncedDelay = 450;
|
||||
|
||||
export enum ESide {
|
||||
Top = 'top',
|
||||
Right = 'right',
|
||||
Bottom = 'bottom',
|
||||
Left = 'left',
|
||||
}
|
||||
|
||||
export enum NotificationSeverity {
|
||||
INFO = 'info',
|
||||
SUCCESS = 'success',
|
||||
WARNING = 'warning',
|
||||
ERROR = 'error',
|
||||
}
|
||||
|
||||
export type TShowToast = {
|
||||
message: string;
|
||||
severity?: NotificationSeverity;
|
||||
showIcon?: boolean;
|
||||
duration?: number;
|
||||
status?: 'error' | 'success' | 'warning' | 'info';
|
||||
};
|
||||
|
||||
export type TBaseSettingsProps = {
|
||||
conversation: t.TConversation | t.TPreset | null;
|
||||
className?: string;
|
||||
isPreset?: boolean;
|
||||
readonly?: boolean;
|
||||
};
|
||||
|
||||
export type TSettingsProps = TBaseSettingsProps & {
|
||||
setOption: TSetOption;
|
||||
};
|
||||
|
||||
export type TModels = {
|
||||
models: string[];
|
||||
showAbove?: boolean;
|
||||
popover?: boolean;
|
||||
};
|
||||
|
||||
export type TModelSelectProps = TSettingsProps & TModels;
|
||||
|
||||
export type TEditPresetProps = {
|
||||
open: boolean;
|
||||
onOpenChange: React.Dispatch<React.SetStateAction<boolean>>;
|
||||
preset: t.TPreset;
|
||||
title?: string;
|
||||
};
|
||||
|
||||
export type TSetOptions = (options: Record<string, unknown>) => void;
|
||||
export type TSetOptionsPayload = {
|
||||
setOption: TSetOption;
|
||||
setExample: TSetExample;
|
||||
addExample: () => void;
|
||||
removeExample: () => void;
|
||||
setAgentOption: TSetOption;
|
||||
// getConversation: () => t.TConversation | t.TPreset | null;
|
||||
checkPluginSelection: (value: string) => boolean;
|
||||
setTools: (newValue: string, remove?: boolean) => void;
|
||||
setOptions?: TSetOptions;
|
||||
};
|
||||
|
||||
export type TPresetItemProps = {
|
||||
preset: t.TPreset;
|
||||
value: t.TPreset;
|
||||
onSelect: (preset: t.TPreset) => void;
|
||||
onChangePreset: (preset: t.TPreset) => void;
|
||||
onDeletePreset: (preset: t.TPreset) => void;
|
||||
};
|
||||
|
||||
export type TOnClick = (e: React.MouseEvent<HTMLButtonElement>) => void;
|
||||
|
||||
export type TGenButtonProps = {
|
||||
onClick: TOnClick;
|
||||
};
|
||||
|
||||
export type TAskProps = {
|
||||
text: string;
|
||||
overrideConvoId?: string;
|
||||
overrideUserMessageId?: string;
|
||||
parentMessageId?: string | null;
|
||||
conversationId?: string | null;
|
||||
messageId?: string | null;
|
||||
clientTimestamp?: string;
|
||||
};
|
||||
|
||||
export type TOptions = {
|
||||
editedMessageId?: string | null;
|
||||
editedText?: string | null;
|
||||
editedContent?: {
|
||||
index: number;
|
||||
text: string;
|
||||
type: 'text' | 'think';
|
||||
};
|
||||
isRegenerate?: boolean;
|
||||
isContinued?: boolean;
|
||||
isEdited?: boolean;
|
||||
overrideMessages?: t.TMessage[];
|
||||
/** Currently only utilized when resubmitting user-created message, uses that message's currently attached files */
|
||||
overrideFiles?: t.TMessage['files'];
|
||||
};
|
||||
|
||||
export type TAskFunction = (props: TAskProps, options?: TOptions) => void;
|
||||
|
||||
export type TMessageProps = {
|
||||
conversation?: t.TConversation | null;
|
||||
messageId?: string | null;
|
||||
message?: t.TMessage;
|
||||
messagesTree?: t.TMessage[];
|
||||
currentEditId: string | number | null;
|
||||
isSearchView?: boolean;
|
||||
siblingIdx?: number;
|
||||
siblingCount?: number;
|
||||
setCurrentEditId?: React.Dispatch<React.SetStateAction<string | number | null>> | null;
|
||||
setSiblingIdx?: ((value: number) => void | React.Dispatch<React.SetStateAction<number>>) | null;
|
||||
};
|
||||
|
||||
export type TMessageIcon = { endpoint?: string | null; isCreatedByUser?: boolean } & Pick<
|
||||
t.TConversation,
|
||||
'modelLabel'
|
||||
> &
|
||||
Pick<t.TMessage, 'model' | 'iconURL'>;
|
||||
|
||||
export type TInitialProps = {
|
||||
text: string;
|
||||
edit: boolean;
|
||||
error: boolean;
|
||||
unfinished: boolean;
|
||||
isSubmitting: boolean;
|
||||
isLast: boolean;
|
||||
};
|
||||
export type TAdditionalProps = {
|
||||
ask: TAskFunction;
|
||||
message: t.TMessage;
|
||||
isCreatedByUser: boolean;
|
||||
siblingIdx: number;
|
||||
enterEdit: (cancel: boolean) => void;
|
||||
setSiblingIdx: (value: number) => void;
|
||||
};
|
||||
|
||||
export type TMessageContentProps = TInitialProps & TAdditionalProps;
|
||||
|
||||
export type TText = Pick<TInitialProps, 'text'> & { className?: string };
|
||||
export type TEditProps = Pick<TInitialProps, 'isSubmitting'> &
|
||||
Omit<TAdditionalProps, 'isCreatedByUser' | 'siblingIdx'> & {
|
||||
text?: string;
|
||||
index?: number;
|
||||
siblingIdx: number | null;
|
||||
};
|
||||
export type TDisplayProps = TText &
|
||||
Pick<TAdditionalProps, 'isCreatedByUser' | 'message'> & {
|
||||
showCursor?: boolean;
|
||||
};
|
||||
|
||||
export type TConfigProps = {
|
||||
userKey: string;
|
||||
setUserKey: React.Dispatch<React.SetStateAction<string>>;
|
||||
endpoint: t.EModelEndpoint | string;
|
||||
};
|
||||
|
||||
export type TDangerButtonProps = {
|
||||
id: string;
|
||||
confirmClear: boolean;
|
||||
className?: string;
|
||||
disabled?: boolean;
|
||||
showText?: boolean;
|
||||
mutation?: UseMutationResult<unknown>;
|
||||
onClick: () => void;
|
||||
infoTextCode: TranslationKeys;
|
||||
actionTextCode: TranslationKeys;
|
||||
dataTestIdInitial: string;
|
||||
dataTestIdConfirm: string;
|
||||
infoDescriptionCode?: TranslationKeys;
|
||||
confirmActionTextCode?: TranslationKeys;
|
||||
};
|
||||
|
||||
export type TDialogProps = {
|
||||
open: boolean;
|
||||
onOpenChange: (open: boolean) => void;
|
||||
};
|
||||
|
||||
export type TPluginStoreDialogProps = {
|
||||
isOpen: boolean;
|
||||
setIsOpen: (open: boolean) => void;
|
||||
};
|
||||
|
||||
export type TResError = {
|
||||
response: { data: { message: string } };
|
||||
message: string;
|
||||
};
|
||||
|
||||
export type TAuthContext = {
|
||||
user: t.TUser | undefined;
|
||||
token: string | undefined;
|
||||
isAuthenticated: boolean;
|
||||
error: string | undefined;
|
||||
login: (data: t.TLoginUser) => void;
|
||||
logout: (redirect?: string) => void;
|
||||
setError: React.Dispatch<React.SetStateAction<string | undefined>>;
|
||||
roles?: Record<string, t.TRole | null | undefined>;
|
||||
};
|
||||
|
||||
export type TUserContext = {
|
||||
user?: t.TUser | undefined;
|
||||
token: string | undefined;
|
||||
isAuthenticated: boolean;
|
||||
redirect?: string;
|
||||
};
|
||||
|
||||
export type TAuthConfig = {
|
||||
loginRedirect: string;
|
||||
test?: boolean;
|
||||
};
|
||||
|
||||
export type IconProps = Pick<t.TMessage, 'isCreatedByUser' | 'model'> &
|
||||
Pick<t.TConversation, 'chatGptLabel' | 'modelLabel'> & {
|
||||
size?: number;
|
||||
button?: boolean;
|
||||
iconURL?: string;
|
||||
message?: boolean;
|
||||
className?: string;
|
||||
iconClassName?: string;
|
||||
endpoint?: t.EModelEndpoint | string | null;
|
||||
endpointType?: t.EModelEndpoint | null;
|
||||
assistantName?: string;
|
||||
agentName?: string;
|
||||
error?: boolean;
|
||||
};
|
||||
|
||||
export type Option = Record<string, unknown> & {
|
||||
label?: string;
|
||||
value: string | number | null;
|
||||
};
|
||||
|
||||
export type StringOption = Option & { value: string | null };
|
||||
|
||||
export type VoiceOption = {
|
||||
value: string;
|
||||
label: string;
|
||||
};
|
||||
|
||||
export type TMessageAudio = {
|
||||
isLast?: boolean;
|
||||
index: number;
|
||||
messageId: string;
|
||||
content: string;
|
||||
className?: string;
|
||||
renderButton?: (props: {
|
||||
onClick: (e?: React.MouseEvent<HTMLButtonElement>) => void;
|
||||
title: string;
|
||||
icon: React.ReactNode;
|
||||
isActive?: boolean;
|
||||
isVisible?: boolean;
|
||||
isDisabled?: boolean;
|
||||
className?: string;
|
||||
}) => React.ReactNode;
|
||||
};
|
||||
|
||||
export type OptionWithIcon = Option & { icon?: React.ReactNode };
|
||||
export type DropdownValueSetter = (value: string | Option | OptionWithIcon) => void;
|
||||
export type MentionOption = OptionWithIcon & {
|
||||
type: string;
|
||||
value: string;
|
||||
description?: string;
|
||||
};
|
||||
export type PromptOption = MentionOption & {
|
||||
id: string;
|
||||
};
|
||||
|
||||
export type TOptionSettings = {
|
||||
showExamples?: boolean;
|
||||
isCodeChat?: boolean;
|
||||
};
|
||||
|
||||
export interface ExtendedFile {
|
||||
file?: File;
|
||||
file_id: string;
|
||||
temp_file_id?: string;
|
||||
type?: string;
|
||||
filepath?: string;
|
||||
filename?: string;
|
||||
width?: number;
|
||||
height?: number;
|
||||
size: number;
|
||||
preview?: string;
|
||||
progress: number;
|
||||
source?: FileSources;
|
||||
attached?: boolean;
|
||||
embedded?: boolean;
|
||||
tool_resource?: string;
|
||||
metadata?: t.TFile['metadata'];
|
||||
}
|
||||
|
||||
export interface ModelItemProps {
|
||||
modelName: string;
|
||||
endpoint: EModelEndpoint;
|
||||
isSelected: boolean;
|
||||
onSelect: () => void;
|
||||
onNavigateBack: () => void;
|
||||
icon?: JSX.Element;
|
||||
className?: string;
|
||||
}
|
||||
|
||||
export type ContextType = {
|
||||
navVisible: boolean;
|
||||
setNavVisible: React.Dispatch<React.SetStateAction<boolean>>;
|
||||
};
|
||||
|
||||
export interface SwitcherProps {
|
||||
endpoint?: t.EModelEndpoint | null;
|
||||
endpointKeyProvided: boolean;
|
||||
isCollapsed: boolean;
|
||||
}
|
||||
export type TLoginLayoutContext = {
|
||||
startupConfig: t.TStartupConfig | null;
|
||||
startupConfigError: unknown;
|
||||
isFetching: boolean;
|
||||
error: string | null;
|
||||
setError: React.Dispatch<React.SetStateAction<string | null>>;
|
||||
headerText: string;
|
||||
setHeaderText: React.Dispatch<React.SetStateAction<string>>;
|
||||
};
|
||||
|
||||
export type NewConversationParams = {
|
||||
template?: Partial<t.TConversation>;
|
||||
preset?: Partial<t.TPreset>;
|
||||
modelsData?: t.TModelsConfig;
|
||||
buildDefault?: boolean;
|
||||
keepLatestMessage?: boolean;
|
||||
keepAddedConvos?: boolean;
|
||||
disableParams?: boolean;
|
||||
};
|
||||
|
||||
export type ConvoGenerator = (params: NewConversationParams) => void | t.TConversation;
|
||||
|
||||
export type TBaseResData = {
|
||||
plugin?: t.TResPlugin;
|
||||
final?: boolean;
|
||||
initial?: boolean;
|
||||
previousMessages?: t.TMessage[];
|
||||
conversation: t.TConversation;
|
||||
conversationId?: string;
|
||||
runMessages?: t.TMessage[];
|
||||
};
|
||||
|
||||
export type TResData = TBaseResData & {
|
||||
requestMessage: t.TMessage;
|
||||
responseMessage: t.TMessage;
|
||||
};
|
||||
|
||||
export type TFinalResData = Omit<TBaseResData, 'conversation'> & {
|
||||
conversation: Partial<t.TConversation> & Pick<t.TConversation, 'conversationId'>;
|
||||
requestMessage?: t.TMessage;
|
||||
responseMessage?: t.TMessage;
|
||||
};
|
||||
|
||||
export type TVectorStore = {
|
||||
_id: string;
|
||||
object: 'vector_store';
|
||||
created_at: string | Date;
|
||||
name: string;
|
||||
bytes?: number;
|
||||
file_counts?: {
|
||||
in_progress: number;
|
||||
completed: number;
|
||||
failed: number;
|
||||
cancelled: number;
|
||||
total: number;
|
||||
};
|
||||
};
|
||||
|
||||
export type TThread = { id: string; createdAt: string };
|
||||
|
||||
declare global {
|
||||
interface Window {
|
||||
google_tag_manager?: unknown;
|
||||
}
|
||||
}
|
||||
50
packages/client/src/components/Accordion.tsx
Normal file
50
packages/client/src/components/Accordion.tsx
Normal file
|
|
@ -0,0 +1,50 @@
|
|||
import * as React from 'react';
|
||||
import * as AccordionPrimitive from '@radix-ui/react-accordion';
|
||||
import { ChevronDownIcon } from '@radix-ui/react-icons';
|
||||
import { cn } from '~/utils';
|
||||
|
||||
const Accordion = AccordionPrimitive.Root;
|
||||
|
||||
const AccordionItem = React.forwardRef<
|
||||
React.ElementRef<typeof AccordionPrimitive.Item>,
|
||||
React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Item>
|
||||
>(({ className = '', ...props }, ref) => (
|
||||
<AccordionPrimitive.Item ref={ref} className={cn('border-b', className)} {...props} />
|
||||
));
|
||||
AccordionItem.displayName = 'AccordionItem';
|
||||
|
||||
const AccordionTrigger = React.forwardRef<
|
||||
React.ElementRef<typeof AccordionPrimitive.Trigger>,
|
||||
React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Trigger>
|
||||
>(({ className = '', children, ...props }, ref) => (
|
||||
<AccordionPrimitive.Header className="flex">
|
||||
<AccordionPrimitive.Trigger
|
||||
ref={ref}
|
||||
className={cn(
|
||||
'flex flex-1 items-center justify-between py-4 text-sm font-medium transition-all hover:underline [&[data-state=open]>svg]:rotate-180',
|
||||
className,
|
||||
)}
|
||||
{...props}
|
||||
>
|
||||
{children}
|
||||
<ChevronDownIcon className="h-4 w-4 shrink-0 text-muted-foreground transition-transform duration-200" />
|
||||
</AccordionPrimitive.Trigger>
|
||||
</AccordionPrimitive.Header>
|
||||
));
|
||||
AccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName;
|
||||
|
||||
const AccordionContent = React.forwardRef<
|
||||
React.ElementRef<typeof AccordionPrimitive.Content>,
|
||||
React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Content>
|
||||
>(({ className = '', children, ...props }, ref) => (
|
||||
<AccordionPrimitive.Content
|
||||
ref={ref}
|
||||
className="overflow-hidden text-sm data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down"
|
||||
{...props}
|
||||
>
|
||||
<div className={cn('pb-4 pt-0', className)}>{children}</div>
|
||||
</AccordionPrimitive.Content>
|
||||
));
|
||||
AccordionContent.displayName = AccordionPrimitive.Content.displayName;
|
||||
|
||||
export { Accordion, AccordionItem, AccordionTrigger, AccordionContent };
|
||||
131
packages/client/src/components/AlertDialog.tsx
Normal file
131
packages/client/src/components/AlertDialog.tsx
Normal file
|
|
@ -0,0 +1,131 @@
|
|||
import * as React from 'react';
|
||||
import * as AlertDialogPrimitive from '@radix-ui/react-alert-dialog';
|
||||
import { cn } from '~/utils';
|
||||
|
||||
const AlertDialog = AlertDialogPrimitive.Root;
|
||||
|
||||
const AlertDialogTrigger = AlertDialogPrimitive.Trigger;
|
||||
|
||||
type AlertPortalProps = AlertDialogPrimitive.AlertDialogPortalProps & { className?: string };
|
||||
|
||||
const AlertDialogPortal = ({ className = '', children, ...props }: AlertPortalProps) => (
|
||||
<AlertDialogPrimitive.Portal className={cn(className)} {...(props as AlertPortalProps)}>
|
||||
<div className="fixed inset-0 z-50 flex items-end justify-center sm:items-center">
|
||||
{children}
|
||||
</div>
|
||||
</AlertDialogPrimitive.Portal>
|
||||
);
|
||||
AlertDialogPortal.displayName = AlertDialogPrimitive.Portal.displayName;
|
||||
|
||||
const AlertDialogOverlay = React.forwardRef<
|
||||
React.ElementRef<typeof AlertDialogPrimitive.Overlay>,
|
||||
React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Overlay>
|
||||
>(({ className = '', ...props }, ref) => (
|
||||
<AlertDialogPrimitive.Overlay
|
||||
className={cn(
|
||||
'fixed inset-0 z-50 bg-gray-500/90 transition-opacity animate-in fade-in dark:bg-gray-800/90',
|
||||
className,
|
||||
)}
|
||||
{...props}
|
||||
ref={ref}
|
||||
/>
|
||||
));
|
||||
AlertDialogOverlay.displayName = AlertDialogPrimitive.Overlay.displayName;
|
||||
|
||||
const AlertDialogContent = React.forwardRef<
|
||||
React.ElementRef<typeof AlertDialogPrimitive.Content>,
|
||||
React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Content>
|
||||
>(({ className = '', ...props }, ref) => (
|
||||
<AlertDialogPortal>
|
||||
<AlertDialogOverlay />
|
||||
<AlertDialogPrimitive.Content
|
||||
ref={ref}
|
||||
className={cn(
|
||||
'fixed z-50 grid w-full max-w-lg scale-100 gap-4 bg-white p-6 opacity-100 animate-in fade-in-90 slide-in-from-bottom-10 sm:rounded-lg sm:zoom-in-90 sm:slide-in-from-bottom-0 md:w-full',
|
||||
'dark:bg-gray-900',
|
||||
className,
|
||||
)}
|
||||
{...props}
|
||||
/>
|
||||
</AlertDialogPortal>
|
||||
));
|
||||
AlertDialogContent.displayName = AlertDialogPrimitive.Content.displayName;
|
||||
|
||||
const AlertDialogHeader = ({ className = '', ...props }: React.HTMLAttributes<HTMLDivElement>) => (
|
||||
<div className={cn('flex flex-col space-y-2 text-center sm:text-left', className)} {...props} />
|
||||
);
|
||||
AlertDialogHeader.displayName = 'AlertDialogHeader';
|
||||
|
||||
const AlertDialogFooter = ({ className = '', ...props }: React.HTMLAttributes<HTMLDivElement>) => (
|
||||
<div
|
||||
className={cn('flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2', className)}
|
||||
{...props}
|
||||
/>
|
||||
);
|
||||
AlertDialogFooter.displayName = 'AlertDialogFooter';
|
||||
|
||||
const AlertDialogTitle = React.forwardRef<
|
||||
React.ElementRef<typeof AlertDialogPrimitive.Title>,
|
||||
React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Title>
|
||||
>(({ className = '', ...props }, ref) => (
|
||||
<AlertDialogPrimitive.Title
|
||||
ref={ref}
|
||||
className={cn('text-lg font-semibold text-gray-900', 'dark:text-gray-50', className)}
|
||||
{...props}
|
||||
/>
|
||||
));
|
||||
AlertDialogTitle.displayName = AlertDialogPrimitive.Title.displayName;
|
||||
|
||||
const AlertDialogDescription = React.forwardRef<
|
||||
React.ElementRef<typeof AlertDialogPrimitive.Description>,
|
||||
React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Description>
|
||||
>(({ className = '', ...props }, ref) => (
|
||||
<AlertDialogPrimitive.Description
|
||||
ref={ref}
|
||||
className={cn('text-sm text-gray-500', 'dark:text-gray-400', className)}
|
||||
{...props}
|
||||
/>
|
||||
));
|
||||
AlertDialogDescription.displayName = AlertDialogPrimitive.Description.displayName;
|
||||
|
||||
const AlertDialogAction = React.forwardRef<
|
||||
React.ElementRef<typeof AlertDialogPrimitive.Action>,
|
||||
React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Action>
|
||||
>(({ className = '', ...props }, ref) => (
|
||||
<AlertDialogPrimitive.Action
|
||||
ref={ref}
|
||||
className={cn(
|
||||
'inline-flex h-10 items-center justify-center rounded-md bg-gray-900 px-4 py-2 text-sm font-semibold text-white transition-colors hover:bg-gray-800 focus:outline-none focus:ring-2 focus:ring-gray-400 focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 dark:bg-gray-100 dark:text-gray-900 dark:hover:bg-gray-100 dark:focus:ring-gray-400 dark:focus:ring-offset-gray-900',
|
||||
className,
|
||||
)}
|
||||
{...props}
|
||||
/>
|
||||
));
|
||||
AlertDialogAction.displayName = AlertDialogPrimitive.Action.displayName;
|
||||
|
||||
const AlertDialogCancel = React.forwardRef<
|
||||
React.ElementRef<typeof AlertDialogPrimitive.Cancel>,
|
||||
React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Cancel>
|
||||
>(({ className = '', ...props }, ref) => (
|
||||
<AlertDialogPrimitive.Cancel
|
||||
ref={ref}
|
||||
className={cn(
|
||||
'mt-2 inline-flex h-10 items-center justify-center rounded-md border border-gray-200 bg-transparent px-4 py-2 text-sm font-semibold text-gray-900 transition-colors hover:bg-gray-100 focus:outline-none focus:ring-2 focus:ring-gray-400 focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 dark:border-gray-700 dark:text-gray-100 dark:hover:bg-gray-800 dark:focus:ring-gray-400 dark:focus:ring-offset-gray-900 sm:mt-0',
|
||||
className,
|
||||
)}
|
||||
{...props}
|
||||
/>
|
||||
));
|
||||
AlertDialogCancel.displayName = AlertDialogPrimitive.Cancel.displayName;
|
||||
|
||||
export {
|
||||
AlertDialog,
|
||||
AlertDialogTrigger,
|
||||
AlertDialogContent,
|
||||
AlertDialogHeader,
|
||||
AlertDialogFooter,
|
||||
AlertDialogTitle,
|
||||
AlertDialogDescription,
|
||||
AlertDialogAction,
|
||||
AlertDialogCancel,
|
||||
};
|
||||
79
packages/client/src/components/AnimatedSearchInput.tsx
Normal file
79
packages/client/src/components/AnimatedSearchInput.tsx
Normal file
|
|
@ -0,0 +1,79 @@
|
|||
import React from 'react';
|
||||
import { Search } from 'lucide-react';
|
||||
import { cn } from '~/utils';
|
||||
|
||||
const AnimatedSearchInput = ({
|
||||
value,
|
||||
onChange,
|
||||
isSearching: searching,
|
||||
placeholder,
|
||||
}: {
|
||||
value?: string;
|
||||
onChange: (e: React.ChangeEvent<HTMLInputElement>) => void;
|
||||
isSearching?: boolean;
|
||||
placeholder: string;
|
||||
}) => {
|
||||
const isSearching = searching === true;
|
||||
const hasValue = value != null && value.length > 0;
|
||||
|
||||
return (
|
||||
<div className="relative w-full">
|
||||
<div className="relative rounded-lg transition-all duration-500 ease-in-out">
|
||||
<div className="relative">
|
||||
{/* Icon on the left */}
|
||||
<div className="absolute left-3 top-1/2 z-50 -translate-y-1/2">
|
||||
<Search
|
||||
className={cn(
|
||||
`h-4 w-4 transition-all duration-500 ease-in-out`,
|
||||
isSearching && hasValue ? 'text-blue-400' : 'text-gray-400',
|
||||
)}
|
||||
/>
|
||||
</div>
|
||||
|
||||
{/* Input field */}
|
||||
<input
|
||||
type="text"
|
||||
value={value}
|
||||
onChange={onChange}
|
||||
placeholder={placeholder}
|
||||
className={`peer relative z-20 w-full rounded-lg bg-surface-secondary px-10 py-2 outline-none ring-0 backdrop-blur-sm transition-all duration-500 ease-in-out placeholder:text-gray-400 focus:outline-none focus:ring-0`}
|
||||
/>
|
||||
|
||||
{/* Gradient overlay */}
|
||||
<div
|
||||
className={`pointer-events-none absolute inset-0 z-20 rounded-lg bg-gradient-to-r from-blue-500/20 via-purple-500/20 to-blue-500/20 transition-all duration-500 ease-in-out ${isSearching && hasValue ? 'opacity-100 blur-sm' : 'opacity-0 blur-none'} `}
|
||||
/>
|
||||
|
||||
{/* Animated loading indicator */}
|
||||
<div
|
||||
className={`absolute right-3 top-1/2 z-20 -translate-y-1/2 transition-all duration-500 ease-in-out ${isSearching && hasValue ? 'scale-100 opacity-100' : 'scale-0 opacity-0'} `}
|
||||
>
|
||||
<div className="relative h-2 w-2">
|
||||
<div className="absolute inset-0 animate-ping rounded-full bg-blue-500/60" />
|
||||
<div className="absolute inset-0 rounded-full bg-blue-500" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* Outer glow effect */}
|
||||
<div
|
||||
className={`absolute -inset-8 -z-10 transition-all duration-700 ease-in-out ${isSearching && hasValue ? 'scale-105 opacity-100' : 'scale-100 opacity-0'} `}
|
||||
>
|
||||
<div className="absolute inset-0">
|
||||
<div
|
||||
className={`bg-gradient-radial absolute inset-0 from-blue-500/10 to-transparent transition-opacity duration-700 ease-in-out ${isSearching && hasValue ? 'animate-pulse-slow opacity-100' : 'opacity-0'} `}
|
||||
/>
|
||||
<div
|
||||
className={`absolute inset-0 bg-gradient-to-r from-purple-500/5 via-blue-500/5 to-purple-500/5 blur-xl transition-all duration-700 ease-in-out ${isSearching && hasValue ? 'animate-gradient-x opacity-100' : 'opacity-0'} `}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
className={`absolute inset-0 -z-20 scale-100 bg-gradient-to-r from-blue-500/10 via-purple-500/10 to-blue-500/10 opacity-0 blur-xl transition-all duration-500 ease-in-out peer-focus:scale-105 peer-focus:opacity-100`}
|
||||
/>
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
export default AnimatedSearchInput;
|
||||
57
packages/client/src/components/AnimatedTabs.css
Normal file
57
packages/client/src/components/AnimatedTabs.css
Normal file
|
|
@ -0,0 +1,57 @@
|
|||
/* AnimatedTabs.css */
|
||||
.animated-tab-panel {
|
||||
transition-property: opacity, translate;
|
||||
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
|
||||
transition-duration: 300ms;
|
||||
animation-duration: 300ms;
|
||||
}
|
||||
|
||||
/* Sliding underline animation for tabs */
|
||||
.animated-tab-list {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.animated-tab-list::after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
height: 2px;
|
||||
background-color: currentColor; /* Inherit color from active tab */
|
||||
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
|
||||
left: var(--tab-left, 0);
|
||||
width: var(--tab-width, 0);
|
||||
}
|
||||
|
||||
.animated-tab {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.animated-tab[data-state='active'] {
|
||||
border-bottom-color: transparent !important;
|
||||
}
|
||||
|
||||
.animated-tab-panel[data-enter] {
|
||||
opacity: 1 !important;
|
||||
translate: 0 !important;
|
||||
}
|
||||
|
||||
@media (prefers-reduced-motion: reduce) {
|
||||
.animated-tab-panel {
|
||||
transition: none;
|
||||
}
|
||||
}
|
||||
|
||||
.animated-tab-panel:not([data-open]) {
|
||||
position: absolute;
|
||||
top: 0px;
|
||||
}
|
||||
|
||||
.animated-panels:has(> [data-was-open]) > .animated-tab-panel {
|
||||
opacity: 0;
|
||||
translate: -100%;
|
||||
}
|
||||
|
||||
.animated-panels [data-was-open] ~ .animated-tab-panel,
|
||||
.animated-panels [data-open] ~ .animated-tab-panel {
|
||||
translate: 100%;
|
||||
}
|
||||
160
packages/client/src/components/AnimatedTabs.tsx
Normal file
160
packages/client/src/components/AnimatedTabs.tsx
Normal file
|
|
@ -0,0 +1,160 @@
|
|||
import * as Ariakit from '@ariakit/react';
|
||||
import { ReactNode, forwardRef, useEffect, useRef } from 'react';
|
||||
import type { ElementRef } from 'react';
|
||||
import { cn } from '~/utils';
|
||||
import './AnimatedTabs.css';
|
||||
|
||||
export interface TabItem {
|
||||
id?: string;
|
||||
label: ReactNode;
|
||||
content: ReactNode;
|
||||
disabled?: boolean;
|
||||
}
|
||||
|
||||
export interface AnimatedTabsProps {
|
||||
tabs: TabItem[];
|
||||
className?: string;
|
||||
tabListClassName?: string;
|
||||
tabClassName?: string;
|
||||
tabPanelClassName?: string;
|
||||
tabListProps?: Ariakit.TabListProps;
|
||||
containerClassName?: string;
|
||||
defaultSelectedId?: string;
|
||||
}
|
||||
|
||||
function usePrevious<T>(value: T) {
|
||||
const ref = useRef<T>();
|
||||
useEffect(() => {
|
||||
ref.current = value;
|
||||
}, [value]);
|
||||
return ref.current;
|
||||
}
|
||||
|
||||
const Tab = forwardRef<ElementRef<typeof Ariakit.Tab>, Ariakit.TabProps>(function Tab(props, ref) {
|
||||
const tabRef = useRef<HTMLButtonElement | null>(null);
|
||||
useEffect(() => {
|
||||
const tabElement = tabRef.current;
|
||||
if (!tabElement) return;
|
||||
|
||||
const updateState = () => {
|
||||
const isSelected = tabElement.getAttribute('aria-selected') === 'true';
|
||||
tabElement.setAttribute('data-state', isSelected ? 'active' : 'inactive');
|
||||
};
|
||||
|
||||
updateState();
|
||||
|
||||
const observer = new MutationObserver(updateState);
|
||||
observer.observe(tabElement, { attributes: true, attributeFilter: ['aria-selected'] });
|
||||
|
||||
return () => observer.disconnect();
|
||||
}, []);
|
||||
|
||||
return (
|
||||
<Ariakit.Tab
|
||||
ref={(node) => {
|
||||
// Forward the ref to both our local ref and the provided ref
|
||||
tabRef.current = node;
|
||||
if (typeof ref === 'function') ref(node);
|
||||
else if (ref) ref.current = node;
|
||||
}}
|
||||
{...props}
|
||||
className={`animated-tab aria-selected:text-token-text-primary flex select-none items-center justify-center gap-2 whitespace-nowrap border-none text-sm font-medium outline-none transition-colors aria-disabled:opacity-50 ${props.className || ''}`}
|
||||
/>
|
||||
);
|
||||
});
|
||||
|
||||
const TabPanel = forwardRef<ElementRef<typeof Ariakit.TabPanel>, Ariakit.TabPanelProps>(
|
||||
function TabPanel(props, ref) {
|
||||
const tab = Ariakit.useTabContext();
|
||||
const previousTabId = usePrevious(Ariakit.useStoreState(tab, 'selectedId'));
|
||||
const wasOpen = props.tabId && previousTabId === props.tabId;
|
||||
|
||||
return (
|
||||
<Ariakit.TabPanel
|
||||
ref={ref}
|
||||
{...props}
|
||||
data-was-open={wasOpen || undefined}
|
||||
className={`animated-tab-panel max-w-full ${props.className || ''}`}
|
||||
/>
|
||||
);
|
||||
},
|
||||
);
|
||||
|
||||
export function AnimatedTabs({
|
||||
tabs,
|
||||
className = '',
|
||||
tabListClassName = '',
|
||||
tabClassName = '',
|
||||
tabPanelClassName = '',
|
||||
containerClassName = '',
|
||||
tabListProps = {},
|
||||
defaultSelectedId,
|
||||
}: AnimatedTabsProps) {
|
||||
const tabIds = tabs.map((tab, index) => tab.id || `tab-${index}`);
|
||||
const firstTabId = defaultSelectedId || tabIds[0];
|
||||
const tabListRef = useRef<HTMLDivElement | null>(null);
|
||||
|
||||
useEffect(() => {
|
||||
const tabList = tabListRef.current;
|
||||
if (!tabList) return;
|
||||
|
||||
// Function to update the underline position
|
||||
const updateUnderline = () => {
|
||||
const activeTab = tabList.querySelector('[data-state="active"]') as HTMLElement;
|
||||
if (!activeTab) return;
|
||||
|
||||
tabList.style.setProperty('--tab-left', `${activeTab.offsetLeft}px`);
|
||||
tabList.style.setProperty('--tab-width', `${activeTab.offsetWidth}px`);
|
||||
};
|
||||
|
||||
updateUnderline();
|
||||
|
||||
const observer = new MutationObserver(updateUnderline);
|
||||
observer.observe(tabList, { attributes: true, subtree: true, attributeFilter: ['data-state'] });
|
||||
|
||||
return () => observer.disconnect();
|
||||
}, [tabs]);
|
||||
|
||||
return (
|
||||
<div className={`w-full ${className}`}>
|
||||
<Ariakit.TabProvider defaultSelectedId={firstTabId}>
|
||||
<Ariakit.TabList
|
||||
ref={tabListRef}
|
||||
aria-label="Tabs"
|
||||
className={`animated-tab-list flex py-1 ${tabListClassName}`}
|
||||
{...tabListProps}
|
||||
>
|
||||
{tabs.map((tab, index) => (
|
||||
<Tab
|
||||
key={tabIds[index]}
|
||||
id={tabIds[index]}
|
||||
disabled={tab.disabled}
|
||||
className={tabClassName}
|
||||
data-state={tabIds[index] === firstTabId ? 'active' : 'inactive'}
|
||||
>
|
||||
{tab.label}
|
||||
</Tab>
|
||||
))}
|
||||
</Ariakit.TabList>
|
||||
|
||||
<div
|
||||
className={cn(
|
||||
'animated-panels relative flex w-full flex-col items-center overflow-hidden p-0',
|
||||
containerClassName,
|
||||
)}
|
||||
>
|
||||
{tabs.map((tab, index) => (
|
||||
<TabPanel
|
||||
key={`panel-${tabIds[index]}`}
|
||||
id={`panel-${tabIds[index]}`}
|
||||
tabId={tabIds[index]}
|
||||
className={tabPanelClassName}
|
||||
>
|
||||
{tab.content}
|
||||
</TabPanel>
|
||||
))}
|
||||
</div>
|
||||
</Ariakit.TabProvider>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
96
packages/client/src/components/Badge.tsx
Normal file
96
packages/client/src/components/Badge.tsx
Normal file
|
|
@ -0,0 +1,96 @@
|
|||
import type React from 'react';
|
||||
import { X, Plus } from 'lucide-react';
|
||||
import { motion } from 'framer-motion';
|
||||
import type { ButtonHTMLAttributes } from 'react';
|
||||
import type { LucideIcon } from 'lucide-react';
|
||||
import { cn } from '~/utils';
|
||||
|
||||
interface BadgeProps extends ButtonHTMLAttributes<HTMLButtonElement> {
|
||||
icon?: LucideIcon;
|
||||
label: string;
|
||||
id?: string;
|
||||
isActive?: boolean;
|
||||
isEditing?: boolean;
|
||||
isDragging?: boolean;
|
||||
isAvailable: boolean;
|
||||
isInChat?: boolean;
|
||||
onBadgeAction?: () => void;
|
||||
onToggle?: () => void;
|
||||
}
|
||||
|
||||
export default function Badge({
|
||||
icon: Icon,
|
||||
label,
|
||||
id,
|
||||
isActive = false,
|
||||
isEditing = false,
|
||||
isDragging = false,
|
||||
isAvailable = true,
|
||||
isInChat = false,
|
||||
onBadgeAction,
|
||||
onToggle,
|
||||
className,
|
||||
...props
|
||||
}: BadgeProps) {
|
||||
const isMoveable = isEditing && isAvailable;
|
||||
const isDisabled = id === '1' && isInChat;
|
||||
|
||||
const handleClick: React.MouseEventHandler<HTMLButtonElement> = (e) => {
|
||||
if (isDisabled) {
|
||||
e.preventDefault();
|
||||
e.stopPropagation();
|
||||
return;
|
||||
}
|
||||
|
||||
if (!isEditing && onToggle) {
|
||||
e.preventDefault();
|
||||
e.stopPropagation();
|
||||
onToggle();
|
||||
}
|
||||
};
|
||||
|
||||
return (
|
||||
<motion.button
|
||||
onClick={handleClick}
|
||||
className={cn(
|
||||
'group relative inline-flex items-center gap-1.5 rounded-full px-4 py-1.5',
|
||||
'border border-border-medium text-sm font-medium transition-shadow md:w-full',
|
||||
'size-9 p-2 md:p-3',
|
||||
isActive
|
||||
? 'bg-surface-active shadow-md'
|
||||
: 'bg-surface-chat shadow-sm hover:bg-surface-hover hover:shadow-md',
|
||||
'active:scale-95 active:shadow-inner',
|
||||
isMoveable && 'cursor-move',
|
||||
isDisabled && 'cursor-not-allowed opacity-50 hover:shadow-sm',
|
||||
className,
|
||||
)}
|
||||
animate={{
|
||||
scale: isDragging ? 1.1 : 1,
|
||||
boxShadow: isDragging ? '0 10px 25px rgba(0,0,0,0.1)' : undefined,
|
||||
}}
|
||||
whileTap={{ scale: isDragging ? 1.1 : isDisabled ? 1 : 0.97 }}
|
||||
transition={{ type: 'tween', duration: 0.1, ease: 'easeOut' }}
|
||||
{...props}
|
||||
>
|
||||
{Icon && <Icon className={cn('relative h-5 w-5 md:h-4 md:w-4', !label && 'mx-auto')} />}
|
||||
<span className="relative hidden md:inline">{label}</span>
|
||||
|
||||
{isEditing && !isDragging && (
|
||||
<motion.button
|
||||
className="absolute -right-1 -top-1 flex h-6 w-6 items-center justify-center rounded-full bg-surface-secondary-alt text-text-primary shadow-sm md:h-5 md:w-5"
|
||||
initial={{ opacity: 0, scale: 0.8 }}
|
||||
animate={{ opacity: 1, scale: 1 }}
|
||||
exit={{ opacity: 0, scale: 0.8 }}
|
||||
whileTap={{ scale: 0.9 }}
|
||||
onMouseDown={(e) => e.stopPropagation()}
|
||||
onClick={(e) => {
|
||||
e.stopPropagation();
|
||||
onBadgeAction?.();
|
||||
}}
|
||||
>
|
||||
{isAvailable ? <X className="h-3 w-3" /> : <Plus className="h-3 w-3" />}
|
||||
</motion.button>
|
||||
)}
|
||||
</motion.button>
|
||||
);
|
||||
}
|
||||
100
packages/client/src/components/Breadcrumb.tsx
Normal file
100
packages/client/src/components/Breadcrumb.tsx
Normal file
|
|
@ -0,0 +1,100 @@
|
|||
import * as React from 'react';
|
||||
import { Slot } from '@radix-ui/react-slot';
|
||||
import { ChevronRight, MoreHorizontal } from 'lucide-react';
|
||||
import { cn } from '~/utils';
|
||||
|
||||
const Breadcrumb = React.forwardRef<
|
||||
HTMLElement,
|
||||
React.ComponentPropsWithoutRef<'nav'> & {
|
||||
separator?: React.ReactNode;
|
||||
}
|
||||
>(({ ...props }, ref) => <nav ref={ref} aria-label="breadcrumb" {...props} />);
|
||||
Breadcrumb.displayName = 'Breadcrumb';
|
||||
|
||||
const BreadcrumbList = React.forwardRef<HTMLOListElement, React.ComponentPropsWithoutRef<'ol'>>(
|
||||
({ className, ...props }, ref) => (
|
||||
<ol
|
||||
ref={ref}
|
||||
className={cn(
|
||||
'flex flex-wrap items-center gap-1.5 break-words text-sm text-muted-foreground sm:gap-2.5',
|
||||
className,
|
||||
)}
|
||||
{...props}
|
||||
/>
|
||||
),
|
||||
);
|
||||
BreadcrumbList.displayName = 'BreadcrumbList';
|
||||
|
||||
const BreadcrumbItem = React.forwardRef<HTMLLIElement, React.ComponentPropsWithoutRef<'li'>>(
|
||||
({ className, ...props }, ref) => (
|
||||
<li ref={ref} className={cn('inline-flex items-center gap-1.5', className)} {...props} />
|
||||
),
|
||||
);
|
||||
BreadcrumbItem.displayName = 'BreadcrumbItem';
|
||||
|
||||
const BreadcrumbLink = React.forwardRef<
|
||||
HTMLAnchorElement,
|
||||
React.ComponentPropsWithoutRef<'a'> & {
|
||||
asChild?: boolean;
|
||||
}
|
||||
>(({ asChild, className, ...props }, ref) => {
|
||||
const Comp = asChild ? Slot : 'a';
|
||||
|
||||
return (
|
||||
<Comp
|
||||
ref={ref}
|
||||
className={cn('transition-colors hover:text-foreground', className)}
|
||||
{...props}
|
||||
/>
|
||||
);
|
||||
});
|
||||
BreadcrumbLink.displayName = 'BreadcrumbLink';
|
||||
|
||||
const BreadcrumbPage = React.forwardRef<HTMLSpanElement, React.ComponentPropsWithoutRef<'span'>>(
|
||||
({ className, ...props }, ref) => (
|
||||
<span
|
||||
ref={ref}
|
||||
role="link"
|
||||
aria-disabled="true"
|
||||
aria-current="page"
|
||||
className={cn('font-normal text-foreground', className)}
|
||||
{...props}
|
||||
/>
|
||||
),
|
||||
);
|
||||
BreadcrumbPage.displayName = 'BreadcrumbPage';
|
||||
|
||||
const BreadcrumbSeparator = ({ children, className, ...props }: React.ComponentProps<'li'>) => (
|
||||
<li
|
||||
role="presentation"
|
||||
aria-hidden="true"
|
||||
className={cn('[&>svg]:size-3.5', className)}
|
||||
{...props}
|
||||
>
|
||||
{children ?? <ChevronRight />}
|
||||
</li>
|
||||
);
|
||||
BreadcrumbSeparator.displayName = 'BreadcrumbSeparator';
|
||||
|
||||
const BreadcrumbEllipsis = ({ className, ...props }: React.ComponentProps<'span'>) => (
|
||||
<span
|
||||
role="presentation"
|
||||
aria-hidden="true"
|
||||
className={cn('flex h-9 w-9 items-center justify-center', className)}
|
||||
{...props}
|
||||
>
|
||||
<MoreHorizontal className="h-4 w-4" />
|
||||
<span className="sr-only">More</span>
|
||||
</span>
|
||||
);
|
||||
BreadcrumbEllipsis.displayName = 'BreadcrumbElipssis';
|
||||
|
||||
export {
|
||||
Breadcrumb,
|
||||
BreadcrumbList,
|
||||
BreadcrumbItem,
|
||||
BreadcrumbLink,
|
||||
BreadcrumbPage,
|
||||
BreadcrumbSeparator,
|
||||
BreadcrumbEllipsis,
|
||||
};
|
||||
52
packages/client/src/components/Button.tsx
Normal file
52
packages/client/src/components/Button.tsx
Normal file
|
|
@ -0,0 +1,52 @@
|
|||
import * as React from 'react';
|
||||
import { Slot } from '@radix-ui/react-slot';
|
||||
import { cva, type VariantProps } from 'class-variance-authority';
|
||||
import { cn } from '~/utils';
|
||||
|
||||
const buttonVariants = cva(
|
||||
'inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-lg text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50',
|
||||
{
|
||||
variants: {
|
||||
variant: {
|
||||
default: 'bg-primary text-primary-foreground hover:bg-primary/90',
|
||||
destructive:
|
||||
'bg-surface-destructive text-destructive-foreground hover:bg-surface-destructive-hover',
|
||||
outline:
|
||||
'text-text-primary border border-border-light bg-background hover:bg-accent hover:text-accent-foreground',
|
||||
secondary: 'bg-secondary text-secondary-foreground hover:bg-secondary/80',
|
||||
ghost: 'hover:bg-surface-hover hover:text-accent-foreground',
|
||||
link: 'text-primary underline-offset-4 hover:underline',
|
||||
// hardcoded text color because of WCAG contrast issues (text-white)
|
||||
submit: 'bg-surface-submit text-white hover:bg-surface-submit-hover',
|
||||
},
|
||||
size: {
|
||||
default: 'h-10 px-4 py-2',
|
||||
sm: 'h-9 rounded-lg px-3',
|
||||
lg: 'h-11 rounded-lg px-8',
|
||||
icon: 'size-10',
|
||||
},
|
||||
},
|
||||
defaultVariants: {
|
||||
variant: 'default',
|
||||
size: 'default',
|
||||
},
|
||||
},
|
||||
);
|
||||
|
||||
export interface ButtonProps
|
||||
extends React.ButtonHTMLAttributes<HTMLButtonElement>,
|
||||
VariantProps<typeof buttonVariants> {
|
||||
asChild?: boolean;
|
||||
}
|
||||
|
||||
const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(
|
||||
({ className, variant, size, asChild = false, ...props }, ref) => {
|
||||
const Comp = asChild ? Slot : 'button';
|
||||
return (
|
||||
<Comp className={cn(buttonVariants({ variant, size, className }))} ref={ref} {...props} />
|
||||
);
|
||||
},
|
||||
);
|
||||
Button.displayName = 'Button';
|
||||
|
||||
export { Button, buttonVariants };
|
||||
25
packages/client/src/components/Checkbox.tsx
Normal file
25
packages/client/src/components/Checkbox.tsx
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
import * as React from 'react';
|
||||
import { Check } from 'lucide-react';
|
||||
import * as CheckboxPrimitive from '@radix-ui/react-checkbox';
|
||||
import { cn } from '~/utils';
|
||||
|
||||
const Checkbox = React.forwardRef<
|
||||
React.ElementRef<typeof CheckboxPrimitive.Root>,
|
||||
React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>
|
||||
>(({ className = '', ...props }, ref) => (
|
||||
<CheckboxPrimitive.Root
|
||||
ref={ref}
|
||||
className={cn(
|
||||
'peer h-4 w-4 shrink-0 rounded-sm border border-primary ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground',
|
||||
className,
|
||||
)}
|
||||
{...props}
|
||||
>
|
||||
<CheckboxPrimitive.Indicator className={cn('flex items-center justify-center')}>
|
||||
<Check className="h-4 w-4" />
|
||||
</CheckboxPrimitive.Indicator>
|
||||
</CheckboxPrimitive.Root>
|
||||
));
|
||||
Checkbox.displayName = CheckboxPrimitive.Root.displayName;
|
||||
|
||||
export { Checkbox };
|
||||
76
packages/client/src/components/CheckboxButton.tsx
Normal file
76
packages/client/src/components/CheckboxButton.tsx
Normal file
|
|
@ -0,0 +1,76 @@
|
|||
import * as React from 'react';
|
||||
import { useEffect } from 'react';
|
||||
import { Checkbox, useStoreState, useCheckboxStore } from '@ariakit/react';
|
||||
import { cn } from '~/utils';
|
||||
|
||||
const CheckboxButton = React.forwardRef<
|
||||
HTMLInputElement,
|
||||
{
|
||||
icon?: React.ReactNode;
|
||||
label: string;
|
||||
className?: string;
|
||||
checked?: boolean;
|
||||
defaultChecked?: boolean;
|
||||
isCheckedClassName?: string;
|
||||
setValue?: (values: {
|
||||
e?: React.ChangeEvent<HTMLInputElement>;
|
||||
value: boolean | string;
|
||||
}) => void;
|
||||
}
|
||||
>(({ icon, label, setValue, className, checked, defaultChecked, isCheckedClassName }, ref) => {
|
||||
const checkbox = useCheckboxStore();
|
||||
const isChecked = useStoreState(checkbox, (state) => state?.value);
|
||||
const onChange = (e: React.ChangeEvent<HTMLInputElement>) => {
|
||||
e.stopPropagation();
|
||||
if (typeof isChecked !== 'boolean') {
|
||||
return;
|
||||
}
|
||||
setValue?.({ e, value: !isChecked });
|
||||
};
|
||||
|
||||
// Sync with controlled checked prop
|
||||
useEffect(() => {
|
||||
if (checked !== undefined) {
|
||||
checkbox.setValue(checked);
|
||||
}
|
||||
}, [checked, checkbox]);
|
||||
|
||||
// Set initial value from defaultChecked
|
||||
useEffect(() => {
|
||||
if (defaultChecked !== undefined && checked === undefined) {
|
||||
checkbox.setValue(defaultChecked);
|
||||
}
|
||||
}, [defaultChecked, checked, checkbox]);
|
||||
|
||||
return (
|
||||
<Checkbox
|
||||
ref={ref}
|
||||
store={checkbox}
|
||||
onChange={onChange}
|
||||
className={cn(
|
||||
// Base styling from MultiSelect's selectClassName
|
||||
'group relative inline-flex items-center justify-center gap-1.5',
|
||||
'rounded-full border border-border-medium text-sm font-medium',
|
||||
'size-9 p-2 transition-all md:w-full md:p-3',
|
||||
'bg-transparent shadow-sm hover:bg-surface-hover hover:shadow-md active:shadow-inner',
|
||||
|
||||
// Checked state styling
|
||||
isChecked && isCheckedClassName && isCheckedClassName,
|
||||
|
||||
// Additional custom classes
|
||||
className,
|
||||
)}
|
||||
render={<button type="button" aria-label={label} />}
|
||||
>
|
||||
{/* Icon if provided */}
|
||||
{icon && <span className="icon-md text-text-primary">{icon}</span>}
|
||||
|
||||
{/* Show the label on larger screens */}
|
||||
<span className="hidden truncate md:block">{label}</span>
|
||||
</Checkbox>
|
||||
);
|
||||
});
|
||||
|
||||
CheckboxButton.displayName = 'CheckboxButton';
|
||||
|
||||
export default CheckboxButton;
|
||||
9
packages/client/src/components/Collapsible.tsx
Normal file
9
packages/client/src/components/Collapsible.tsx
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
import * as CollapsiblePrimitive from '@radix-ui/react-collapsible';
|
||||
|
||||
const Collapsible = CollapsiblePrimitive.Root;
|
||||
|
||||
const CollapsibleTrigger = CollapsiblePrimitive.CollapsibleTrigger;
|
||||
|
||||
const CollapsibleContent = CollapsiblePrimitive.CollapsibleContent;
|
||||
|
||||
export { Collapsible, CollapsibleTrigger, CollapsibleContent };
|
||||
176
packages/client/src/components/Combobox.tsx
Normal file
176
packages/client/src/components/Combobox.tsx
Normal file
|
|
@ -0,0 +1,176 @@
|
|||
import { startTransition } from 'react';
|
||||
import { Search as SearchIcon } from 'lucide-react';
|
||||
import * as RadixSelect from '@radix-ui/react-select';
|
||||
import { CheckIcon, ChevronDownIcon } from '@radix-ui/react-icons';
|
||||
import {
|
||||
Combobox,
|
||||
ComboboxItem,
|
||||
ComboboxList,
|
||||
ComboboxProvider,
|
||||
ComboboxCancel,
|
||||
} from '@ariakit/react';
|
||||
import type { OptionWithIcon } from '~/common';
|
||||
import { SelectTrigger, SelectValue, SelectScrollDownButton } from './Select';
|
||||
import { useCombobox } from '~/hooks';
|
||||
import { cn } from '~/utils';
|
||||
|
||||
export default function ComboboxComponent({
|
||||
selectedValue,
|
||||
displayValue,
|
||||
items,
|
||||
setValue,
|
||||
ariaLabel,
|
||||
searchPlaceholder,
|
||||
selectPlaceholder,
|
||||
isCollapsed,
|
||||
SelectIcon,
|
||||
}: {
|
||||
ariaLabel: string;
|
||||
displayValue?: string;
|
||||
selectedValue: string;
|
||||
searchPlaceholder?: string;
|
||||
selectPlaceholder?: string;
|
||||
items: OptionWithIcon[] | string[];
|
||||
setValue: (value: string) => void;
|
||||
isCollapsed: boolean;
|
||||
SelectIcon?: React.ReactNode;
|
||||
}) {
|
||||
const options: OptionWithIcon[] = (items ?? []).map((option: string | OptionWithIcon) => {
|
||||
if (typeof option === 'string') {
|
||||
return { label: option, value: option };
|
||||
}
|
||||
return option;
|
||||
});
|
||||
|
||||
const { open, setOpen, setSearchValue, matches } = useCombobox({
|
||||
value: selectedValue,
|
||||
options,
|
||||
});
|
||||
|
||||
return (
|
||||
<RadixSelect.Root
|
||||
value={selectedValue}
|
||||
onValueChange={setValue}
|
||||
open={open}
|
||||
/** Hacky fix for radix-ui Android issue: https://github.com/radix-ui/primitives/issues/1658 */
|
||||
onOpenChange={() => {
|
||||
if (open === true) {
|
||||
setOpen(false);
|
||||
return;
|
||||
}
|
||||
setTimeout(() => {
|
||||
setOpen(!open);
|
||||
}, 75);
|
||||
}}
|
||||
>
|
||||
<ComboboxProvider
|
||||
open={open}
|
||||
setOpen={setOpen}
|
||||
resetValueOnHide
|
||||
includesBaseElement={false}
|
||||
setValue={(value) => {
|
||||
startTransition(() => {
|
||||
setSearchValue(value);
|
||||
});
|
||||
}}
|
||||
>
|
||||
<SelectTrigger
|
||||
aria-label={ariaLabel}
|
||||
className={cn(
|
||||
'flex items-center gap-2 [&>span]:line-clamp-1 [&>span]:flex [&>span]:w-full [&>span]:items-center [&>span]:gap-1 [&>span]:truncate [&_svg]:h-4 [&_svg]:w-4 [&_svg]:shrink-0',
|
||||
isCollapsed
|
||||
? 'flex h-9 w-9 shrink-0 items-center justify-center p-0 [&>span]:w-auto [&>svg]:hidden'
|
||||
: '',
|
||||
'bg-white text-black hover:bg-gray-50 focus-visible:ring-2 focus-visible:ring-gray-500 dark:bg-gray-850 dark:text-white',
|
||||
)}
|
||||
>
|
||||
<SelectValue placeholder={selectPlaceholder}>
|
||||
<div className="assistant-item flex items-center justify-center overflow-hidden rounded-full">
|
||||
{SelectIcon ? SelectIcon : <ChevronDownIcon />}
|
||||
</div>
|
||||
<span
|
||||
className={cn('ml-2', isCollapsed ? 'hidden' : '')}
|
||||
style={{ userSelect: 'none' }}
|
||||
>
|
||||
{selectedValue
|
||||
? (displayValue ?? selectedValue)
|
||||
: selectPlaceholder && selectPlaceholder}
|
||||
</span>
|
||||
</SelectValue>
|
||||
</SelectTrigger>
|
||||
<RadixSelect.Portal>
|
||||
<RadixSelect.Content
|
||||
role="dialog"
|
||||
aria-label={ariaLabel + 's'}
|
||||
position="popper"
|
||||
className={cn(
|
||||
'bg-popover text-popover-foreground relative z-50 max-h-[52vh] min-w-[8rem] overflow-hidden rounded-md border border-gray-200 shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 dark:border-gray-600',
|
||||
'data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1',
|
||||
'bg-white dark:bg-gray-700',
|
||||
)}
|
||||
>
|
||||
<RadixSelect.Viewport className="mb-5 h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]">
|
||||
<div className="group sticky left-0 top-0 z-10 flex h-12 items-center gap-2 bg-white px-2 px-3 py-2 text-black duration-300 dark:bg-gray-700 dark:text-white">
|
||||
<SearchIcon className="h-4 w-4 text-gray-500 transition-colors duration-300 dark:group-focus-within:text-gray-300 dark:group-hover:text-gray-300" />
|
||||
<Combobox
|
||||
autoSelect
|
||||
placeholder={searchPlaceholder}
|
||||
className="flex-1 rounded-md border-none bg-transparent px-2.5 py-2 text-sm focus:outline-none focus:ring-1 focus:ring-gray-700/10 dark:focus:ring-gray-200/10"
|
||||
// Ariakit's Combobox manually triggers a blur event on virtually
|
||||
// blurred items, making them work as if they had actual DOM
|
||||
// focus. These blur events might happen after the corresponding
|
||||
// focus events in the capture phase, leading Radix Select to
|
||||
// close the popover. This happens because Radix Select relies on
|
||||
// the order of these captured events to discern if the focus was
|
||||
// outside the element. Since we don't have access to the
|
||||
// onInteractOutside prop in the Radix SelectContent component to
|
||||
// stop this behavior, we can turn off Ariakit's behavior here.
|
||||
onBlurCapture={(event) => {
|
||||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
}}
|
||||
/>
|
||||
<ComboboxCancel
|
||||
hideWhenEmpty={true}
|
||||
className="relative flex h-5 w-5 items-center justify-end text-gray-500 transition-colors duration-300 dark:group-focus-within:text-gray-300 dark:group-hover:text-gray-300"
|
||||
/>
|
||||
</div>
|
||||
<ComboboxList className="overflow-y-auto p-1 py-2">
|
||||
{matches.map(({ label, value, icon }) => (
|
||||
<RadixSelect.Item key={value} value={`${value ?? ''}`} asChild>
|
||||
<ComboboxItem
|
||||
className={cn(
|
||||
'relative flex w-full cursor-pointer select-none items-center rounded-sm py-1.5 pl-2 pr-8 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50',
|
||||
'rounded-lg hover:bg-gray-100/50 hover:bg-gray-50 dark:text-white dark:hover:bg-gray-600',
|
||||
)}
|
||||
/** Hacky fix for radix-ui Android issue: https://github.com/radix-ui/primitives/issues/1658 */
|
||||
onTouchEnd={() => {
|
||||
setValue(`${value ?? ''}`);
|
||||
setOpen(false);
|
||||
}}
|
||||
>
|
||||
<span className="absolute right-2 flex h-3.5 w-3.5 items-center justify-center">
|
||||
<RadixSelect.ItemIndicator>
|
||||
<CheckIcon className="h-4 w-4" />
|
||||
</RadixSelect.ItemIndicator>
|
||||
</span>
|
||||
<RadixSelect.ItemText>
|
||||
<div className="flex items-center justify-center gap-3 dark:text-white [&_svg]:h-4 [&_svg]:w-4 [&_svg]:shrink-0 [&_svg]:text-foreground">
|
||||
<div className="assistant-item overflow-hidden rounded-full">
|
||||
{icon && icon}
|
||||
</div>
|
||||
{label}
|
||||
</div>
|
||||
</RadixSelect.ItemText>
|
||||
</ComboboxItem>
|
||||
</RadixSelect.Item>
|
||||
))}
|
||||
</ComboboxList>
|
||||
</RadixSelect.Viewport>
|
||||
<SelectScrollDownButton className="absolute bottom-0 left-0 right-0" />
|
||||
</RadixSelect.Content>
|
||||
</RadixSelect.Portal>
|
||||
</ComboboxProvider>
|
||||
</RadixSelect.Root>
|
||||
);
|
||||
}
|
||||
182
packages/client/src/components/ControlCombobox.tsx
Normal file
182
packages/client/src/components/ControlCombobox.tsx
Normal file
|
|
@ -0,0 +1,182 @@
|
|||
import * as Ariakit from '@ariakit/react';
|
||||
import { matchSorter } from 'match-sorter';
|
||||
import { Search, ChevronDown } from 'lucide-react';
|
||||
import { useMemo, useState, useRef, memo, useEffect } from 'react';
|
||||
import { SelectRenderer } from '@ariakit/react-core/select/select-renderer';
|
||||
import type { OptionWithIcon } from '~/common';
|
||||
import { cn } from '~/utils';
|
||||
|
||||
interface ControlComboboxProps {
|
||||
selectedValue: string;
|
||||
displayValue?: string;
|
||||
items: OptionWithIcon[];
|
||||
setValue: (value: string) => void;
|
||||
ariaLabel: string;
|
||||
searchPlaceholder?: string;
|
||||
selectPlaceholder?: string;
|
||||
isCollapsed: boolean;
|
||||
SelectIcon?: React.ReactNode;
|
||||
containerClassName?: string;
|
||||
iconClassName?: string;
|
||||
showCarat?: boolean;
|
||||
className?: string;
|
||||
disabled?: boolean;
|
||||
iconSide?: 'left' | 'right';
|
||||
selectId?: string;
|
||||
}
|
||||
|
||||
const ROW_HEIGHT = 36;
|
||||
|
||||
function ControlCombobox({
|
||||
selectedValue,
|
||||
displayValue,
|
||||
items,
|
||||
setValue,
|
||||
ariaLabel,
|
||||
searchPlaceholder,
|
||||
selectPlaceholder,
|
||||
containerClassName,
|
||||
isCollapsed,
|
||||
SelectIcon,
|
||||
showCarat,
|
||||
className,
|
||||
disabled,
|
||||
iconClassName,
|
||||
iconSide = 'left',
|
||||
selectId,
|
||||
}: ControlComboboxProps) {
|
||||
const [searchValue, setSearchValue] = useState('');
|
||||
const buttonRef = useRef<HTMLButtonElement>(null);
|
||||
const [buttonWidth, setButtonWidth] = useState<number | null>(null);
|
||||
|
||||
const getItem = (option: OptionWithIcon) => ({
|
||||
id: `item-${option.value}`,
|
||||
value: option.value as string | undefined,
|
||||
label: option.label,
|
||||
icon: option.icon,
|
||||
});
|
||||
|
||||
const combobox = Ariakit.useComboboxStore({
|
||||
defaultItems: items.map(getItem),
|
||||
resetValueOnHide: true,
|
||||
value: searchValue,
|
||||
setValue: setSearchValue,
|
||||
});
|
||||
|
||||
const select = Ariakit.useSelectStore({
|
||||
combobox,
|
||||
defaultItems: items.map(getItem),
|
||||
value: selectedValue,
|
||||
setValue,
|
||||
});
|
||||
|
||||
const matches = useMemo(() => {
|
||||
const filteredItems = matchSorter(items, searchValue, {
|
||||
keys: ['value', 'label'],
|
||||
baseSort: (a, b) => (a.index < b.index ? -1 : 1),
|
||||
});
|
||||
return filteredItems.map(getItem);
|
||||
}, [searchValue, items]);
|
||||
|
||||
useEffect(() => {
|
||||
if (buttonRef.current && !isCollapsed) {
|
||||
setButtonWidth(buttonRef.current.offsetWidth);
|
||||
}
|
||||
}, [isCollapsed]);
|
||||
|
||||
const selectIconClassName = cn(
|
||||
'flex h-5 w-5 items-center justify-center overflow-hidden rounded-full',
|
||||
iconClassName,
|
||||
);
|
||||
const optionIconClassName = cn(
|
||||
'mr-2 flex h-5 w-5 items-center justify-center overflow-hidden rounded-full',
|
||||
iconClassName,
|
||||
);
|
||||
|
||||
return (
|
||||
<div className={cn('flex w-full items-center justify-center px-1', containerClassName)}>
|
||||
<Ariakit.SelectLabel store={select} className="sr-only">
|
||||
{ariaLabel}
|
||||
</Ariakit.SelectLabel>
|
||||
<Ariakit.Select
|
||||
ref={buttonRef}
|
||||
store={select}
|
||||
id={selectId}
|
||||
disabled={disabled}
|
||||
className={cn(
|
||||
'flex items-center justify-center gap-2 rounded-full bg-surface-secondary',
|
||||
'text-text-primary hover:bg-surface-tertiary',
|
||||
'border border-border-light',
|
||||
isCollapsed ? 'h-10 w-10' : 'h-10 w-full rounded-xl px-3 py-2 text-sm',
|
||||
className,
|
||||
)}
|
||||
>
|
||||
{SelectIcon != null && iconSide === 'left' && (
|
||||
<div className={selectIconClassName}>{SelectIcon}</div>
|
||||
)}
|
||||
{!isCollapsed && (
|
||||
<>
|
||||
<span className="flex-grow truncate text-left">
|
||||
{displayValue != null
|
||||
? displayValue || selectPlaceholder
|
||||
: selectedValue || selectPlaceholder}
|
||||
</span>
|
||||
{SelectIcon != null && iconSide === 'right' && (
|
||||
<div className={selectIconClassName}>{SelectIcon}</div>
|
||||
)}
|
||||
{showCarat && <ChevronDown className="h-4 w-4 text-text-secondary" />}
|
||||
</>
|
||||
)}
|
||||
</Ariakit.Select>
|
||||
<Ariakit.SelectPopover
|
||||
store={select}
|
||||
gutter={4}
|
||||
portal
|
||||
className={cn(
|
||||
'animate-popover z-50 overflow-hidden rounded-xl border border-border-light bg-surface-secondary shadow-lg',
|
||||
)}
|
||||
style={{ width: isCollapsed ? '300px' : (buttonWidth ?? '300px') }}
|
||||
>
|
||||
<div className="py-1.5">
|
||||
<div className="relative">
|
||||
<Search className="absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-text-primary" />
|
||||
<Ariakit.Combobox
|
||||
store={combobox}
|
||||
autoSelect
|
||||
placeholder={searchPlaceholder}
|
||||
className="w-full rounded-md bg-surface-secondary py-2 pl-9 pr-3 text-sm text-text-primary focus:outline-none"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div className="max-h-[300px] overflow-auto">
|
||||
<Ariakit.ComboboxList store={combobox}>
|
||||
<SelectRenderer store={select} items={matches} itemSize={ROW_HEIGHT} overscan={5}>
|
||||
{({ value, icon, label, ...item }) => (
|
||||
<Ariakit.ComboboxItem
|
||||
key={item.id}
|
||||
{...item}
|
||||
className={cn(
|
||||
'flex w-full cursor-pointer items-center px-3 text-sm',
|
||||
'text-text-primary hover:bg-surface-tertiary',
|
||||
'data-[active-item]:bg-surface-tertiary',
|
||||
)}
|
||||
render={<Ariakit.SelectItem value={value} />}
|
||||
>
|
||||
{icon != null && iconSide === 'left' && (
|
||||
<div className={optionIconClassName}>{icon}</div>
|
||||
)}
|
||||
<span className="flex-grow truncate text-left">{label}</span>
|
||||
{icon != null && iconSide === 'right' && (
|
||||
<div className={optionIconClassName}>{icon}</div>
|
||||
)}
|
||||
</Ariakit.ComboboxItem>
|
||||
)}
|
||||
</SelectRenderer>
|
||||
</Ariakit.ComboboxList>
|
||||
</div>
|
||||
</Ariakit.SelectPopover>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default memo(ControlCombobox);
|
||||
476
packages/client/src/components/DataTable.tsx
Normal file
476
packages/client/src/components/DataTable.tsx
Normal file
|
|
@ -0,0 +1,476 @@
|
|||
import React, { useCallback, useEffect, useRef, useState, memo, useMemo } from 'react';
|
||||
import { useVirtualizer } from '@tanstack/react-virtual';
|
||||
import {
|
||||
Row,
|
||||
ColumnDef,
|
||||
flexRender,
|
||||
SortingState,
|
||||
useReactTable,
|
||||
getCoreRowModel,
|
||||
VisibilityState,
|
||||
getSortedRowModel,
|
||||
ColumnFiltersState,
|
||||
getFilteredRowModel,
|
||||
} from '@tanstack/react-table';
|
||||
import type { Table as TTable } from '@tanstack/react-table';
|
||||
import {
|
||||
Button,
|
||||
Table,
|
||||
Checkbox,
|
||||
TableRow,
|
||||
TableBody,
|
||||
TableCell,
|
||||
TableHead,
|
||||
TableHeader,
|
||||
AnimatedSearchInput,
|
||||
Skeleton,
|
||||
} from './';
|
||||
import { TrashIcon, Spinner } from '~/svg';
|
||||
import { LocalizeFunction } from '~/common';
|
||||
import { useMediaQuery } from '~/hooks';
|
||||
import { cn } from '~/utils';
|
||||
|
||||
type TableColumn<TData, TValue> = ColumnDef<TData, TValue> & {
|
||||
meta?: {
|
||||
size?: string | number;
|
||||
mobileSize?: string | number;
|
||||
minWidth?: string | number;
|
||||
};
|
||||
};
|
||||
|
||||
const SelectionCheckbox = memo(
|
||||
({
|
||||
checked,
|
||||
onChange,
|
||||
ariaLabel,
|
||||
}: {
|
||||
checked: boolean;
|
||||
onChange: (value: boolean) => void;
|
||||
ariaLabel: string;
|
||||
}) => (
|
||||
<div
|
||||
role="button"
|
||||
tabIndex={0}
|
||||
onKeyDown={(e) => e.stopPropagation()}
|
||||
className="flex h-full w-[30px] items-center justify-center"
|
||||
onClick={(e) => e.stopPropagation()}
|
||||
>
|
||||
<Checkbox checked={checked} onCheckedChange={onChange} aria-label={ariaLabel} />
|
||||
</div>
|
||||
),
|
||||
);
|
||||
|
||||
SelectionCheckbox.displayName = 'SelectionCheckbox';
|
||||
|
||||
interface DataTableProps<TData, TValue> {
|
||||
columns: TableColumn<TData, TValue>[];
|
||||
data: TData[];
|
||||
onDelete?: (selectedRows: TData[]) => Promise<void>;
|
||||
filterColumn?: string;
|
||||
defaultSort?: SortingState;
|
||||
columnVisibilityMap?: Record<string, string>;
|
||||
className?: string;
|
||||
pageSize?: number;
|
||||
isFetchingNextPage?: boolean;
|
||||
hasNextPage?: boolean;
|
||||
fetchNextPage?: (options?: unknown) => Promise<unknown>;
|
||||
enableRowSelection?: boolean;
|
||||
showCheckboxes?: boolean;
|
||||
onFilterChange?: (value: string) => void;
|
||||
filterValue?: string;
|
||||
isLoading?: boolean;
|
||||
enableSearch?: boolean;
|
||||
}
|
||||
|
||||
const TableRowComponent = <TData, TValue>({
|
||||
row,
|
||||
isSmallScreen,
|
||||
onSelectionChange,
|
||||
index,
|
||||
isSearching,
|
||||
}: {
|
||||
row: Row<TData>;
|
||||
isSmallScreen: boolean;
|
||||
onSelectionChange?: (rowId: string, selected: boolean) => void;
|
||||
index: number;
|
||||
isSearching: boolean;
|
||||
}) => {
|
||||
const handleSelection = useCallback(
|
||||
(value: boolean) => {
|
||||
row.toggleSelected(value);
|
||||
onSelectionChange?.(row.id, value);
|
||||
},
|
||||
[row, onSelectionChange],
|
||||
);
|
||||
|
||||
return (
|
||||
<TableRow
|
||||
data-state={row.getIsSelected() ? 'selected' : undefined}
|
||||
className="motion-safe:animate-fadeIn border-b border-border-light transition-all duration-300 ease-out hover:bg-surface-secondary"
|
||||
style={{
|
||||
animationDelay: `${index * 20}ms`,
|
||||
transform: `translateY(${isSearching ? '4px' : '0'})`,
|
||||
opacity: isSearching ? 0.5 : 1,
|
||||
}}
|
||||
>
|
||||
{row.getVisibleCells().map((cell) => {
|
||||
if (cell.column.id === 'select') {
|
||||
return (
|
||||
<TableCell key={cell.id} className="px-2 py-1 transition-all duration-300">
|
||||
<SelectionCheckbox
|
||||
checked={row.getIsSelected()}
|
||||
onChange={handleSelection}
|
||||
ariaLabel="Select row"
|
||||
/>
|
||||
</TableCell>
|
||||
);
|
||||
}
|
||||
|
||||
return (
|
||||
<TableCell
|
||||
key={cell.id}
|
||||
className="w-0 max-w-0 px-2 py-1 align-middle text-xs transition-all duration-300 sm:px-4 sm:py-2 sm:text-sm"
|
||||
style={getColumnStyle(
|
||||
cell.column.columnDef as TableColumn<TData, TValue>,
|
||||
isSmallScreen,
|
||||
)}
|
||||
>
|
||||
<div className="overflow-hidden text-ellipsis">
|
||||
{flexRender(cell.column.columnDef.cell, cell.getContext())}
|
||||
</div>
|
||||
</TableCell>
|
||||
);
|
||||
})}
|
||||
</TableRow>
|
||||
);
|
||||
};
|
||||
|
||||
const MemoizedTableRow = memo(TableRowComponent) as typeof TableRowComponent;
|
||||
|
||||
function getColumnStyle<TData, TValue>(
|
||||
column: TableColumn<TData, TValue>,
|
||||
isSmallScreen: boolean,
|
||||
): React.CSSProperties {
|
||||
return {
|
||||
width: isSmallScreen ? column.meta?.mobileSize : column.meta?.size,
|
||||
minWidth: column.meta?.minWidth,
|
||||
maxWidth: column.meta?.size,
|
||||
};
|
||||
}
|
||||
|
||||
const DeleteButton = memo(
|
||||
({
|
||||
onDelete,
|
||||
isDeleting,
|
||||
disabled,
|
||||
isSmallScreen,
|
||||
}: {
|
||||
onDelete?: () => Promise<void>;
|
||||
isDeleting: boolean;
|
||||
disabled: boolean;
|
||||
isSmallScreen: boolean;
|
||||
}) => {
|
||||
if (!onDelete) {
|
||||
return null;
|
||||
}
|
||||
return (
|
||||
<Button
|
||||
variant="outline"
|
||||
onClick={onDelete}
|
||||
disabled={disabled}
|
||||
className={cn('min-w-[40px] transition-all duration-200', isSmallScreen && 'px-2 py-1')}
|
||||
>
|
||||
{isDeleting ? (
|
||||
<Spinner className="size-4" />
|
||||
) : (
|
||||
<>
|
||||
<TrashIcon className="size-3.5 text-red-400 sm:size-4" />
|
||||
{!isSmallScreen && <span className="ml-2">Delete</span>}
|
||||
</>
|
||||
)}
|
||||
</Button>
|
||||
);
|
||||
},
|
||||
);
|
||||
|
||||
export default function DataTable<TData, TValue>({
|
||||
columns,
|
||||
data,
|
||||
onDelete,
|
||||
filterColumn,
|
||||
defaultSort = [],
|
||||
className = '',
|
||||
isFetchingNextPage = false,
|
||||
hasNextPage = false,
|
||||
fetchNextPage,
|
||||
enableRowSelection = true,
|
||||
showCheckboxes = true,
|
||||
onFilterChange,
|
||||
filterValue,
|
||||
isLoading,
|
||||
enableSearch = true,
|
||||
}: DataTableProps<TData, TValue>) {
|
||||
const isSmallScreen = useMediaQuery('(max-width: 768px)');
|
||||
const tableContainerRef = useRef<HTMLDivElement>(null);
|
||||
|
||||
const [isDeleting, setIsDeleting] = useState(false);
|
||||
const [rowSelection, setRowSelection] = useState<Record<string, boolean>>({});
|
||||
const [sorting, setSorting] = useState<SortingState>(defaultSort);
|
||||
const [columnFilters, setColumnFilters] = useState<ColumnFiltersState>([]);
|
||||
const [columnVisibility, setColumnVisibility] = useState<VisibilityState>({});
|
||||
const [searchTerm, setSearchTerm] = useState(filterValue ?? '');
|
||||
const [isSearching, setIsSearching] = useState(false);
|
||||
|
||||
const tableColumns = useMemo(() => {
|
||||
if (!enableRowSelection || !showCheckboxes) {
|
||||
return columns;
|
||||
}
|
||||
const selectColumn = {
|
||||
id: 'select',
|
||||
header: ({ table }: { table: TTable<TData> }) => (
|
||||
<div className="flex h-full w-[30px] items-center justify-center">
|
||||
<Checkbox
|
||||
checked={table.getIsAllPageRowsSelected()}
|
||||
onCheckedChange={(value) => table.toggleAllPageRowsSelected(Boolean(value))}
|
||||
aria-label="Select all"
|
||||
/>
|
||||
</div>
|
||||
),
|
||||
cell: ({ row }: { row: Row<TData> }) => (
|
||||
<SelectionCheckbox
|
||||
checked={row.getIsSelected()}
|
||||
onChange={(value) => row.toggleSelected(value)}
|
||||
ariaLabel="Select row"
|
||||
/>
|
||||
),
|
||||
meta: { size: '50px' },
|
||||
};
|
||||
return [selectColumn, ...columns];
|
||||
}, [columns, enableRowSelection, showCheckboxes]);
|
||||
|
||||
const table = useReactTable({
|
||||
data,
|
||||
columns: tableColumns,
|
||||
getCoreRowModel: getCoreRowModel(),
|
||||
getSortedRowModel: getSortedRowModel(),
|
||||
getFilteredRowModel: getFilteredRowModel(),
|
||||
enableRowSelection,
|
||||
enableMultiRowSelection: true,
|
||||
state: {
|
||||
sorting,
|
||||
columnFilters,
|
||||
columnVisibility,
|
||||
rowSelection,
|
||||
},
|
||||
onSortingChange: setSorting,
|
||||
onColumnFiltersChange: setColumnFilters,
|
||||
onColumnVisibilityChange: setColumnVisibility,
|
||||
onRowSelectionChange: setRowSelection,
|
||||
});
|
||||
|
||||
const { rows } = table.getRowModel();
|
||||
|
||||
const rowVirtualizer = useVirtualizer({
|
||||
count: rows.length,
|
||||
getScrollElement: () => tableContainerRef.current,
|
||||
estimateSize: useCallback(() => 48, []),
|
||||
overscan: 10,
|
||||
});
|
||||
|
||||
const virtualRows = rowVirtualizer.getVirtualItems();
|
||||
const totalSize = rowVirtualizer.getTotalSize();
|
||||
const paddingTop = virtualRows.length > 0 ? virtualRows[0].start : 0;
|
||||
const paddingBottom =
|
||||
virtualRows.length > 0 ? totalSize - virtualRows[virtualRows.length - 1].end : 0;
|
||||
|
||||
useEffect(() => {
|
||||
const scrollElement = tableContainerRef.current;
|
||||
if (!scrollElement) {
|
||||
return;
|
||||
}
|
||||
|
||||
const handleScroll = async () => {
|
||||
if (!hasNextPage || isFetchingNextPage) {
|
||||
return;
|
||||
}
|
||||
const { scrollTop, scrollHeight, clientHeight } = scrollElement;
|
||||
if (scrollHeight - scrollTop <= clientHeight * 1.5) {
|
||||
try {
|
||||
// Safely fetch next page without breaking if lastPage is undefined
|
||||
await fetchNextPage?.();
|
||||
} catch (error) {
|
||||
console.error('Unable to fetch next page:', error);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
scrollElement.addEventListener('scroll', handleScroll, { passive: true });
|
||||
return () => scrollElement.removeEventListener('scroll', handleScroll);
|
||||
}, [hasNextPage, isFetchingNextPage, fetchNextPage]);
|
||||
|
||||
useEffect(() => {
|
||||
setIsSearching(true);
|
||||
const timeout = setTimeout(() => {
|
||||
onFilterChange?.(searchTerm);
|
||||
setIsSearching(false);
|
||||
}, 300);
|
||||
return () => clearTimeout(timeout);
|
||||
}, [searchTerm, onFilterChange]);
|
||||
|
||||
const handleDelete = useCallback(async () => {
|
||||
if (!onDelete) {
|
||||
return;
|
||||
}
|
||||
|
||||
setIsDeleting(true);
|
||||
try {
|
||||
const itemsToDelete = table.getFilteredSelectedRowModel().rows.map((r) => r.original);
|
||||
await onDelete(itemsToDelete);
|
||||
setRowSelection({});
|
||||
} finally {
|
||||
setIsDeleting(false);
|
||||
}
|
||||
}, [onDelete, table]);
|
||||
|
||||
const getRandomWidth = () => Math.floor(Math.random() * (410 - 170 + 1)) + 170;
|
||||
|
||||
const skeletons = Array.from({ length: 13 }, (_, index) => {
|
||||
const randomWidth = getRandomWidth();
|
||||
const firstDataColumnIndex = tableColumns[0]?.id === 'select' ? 1 : 0;
|
||||
|
||||
return (
|
||||
<TableRow key={index} className="motion-safe:animate-fadeIn border-b border-border-light">
|
||||
{tableColumns.map((column, columnIndex) => {
|
||||
const style = getColumnStyle(column as TableColumn<TData, TValue>, isSmallScreen);
|
||||
const isFirstDataColumn = columnIndex === firstDataColumnIndex;
|
||||
|
||||
return (
|
||||
<TableCell key={column.id} className="px-2 py-1 sm:px-4 sm:py-2" style={style}>
|
||||
<Skeleton
|
||||
className="h-6"
|
||||
style={isFirstDataColumn ? { width: `${randomWidth}px` } : { width: '100%' }}
|
||||
/>
|
||||
</TableCell>
|
||||
);
|
||||
})}
|
||||
</TableRow>
|
||||
);
|
||||
});
|
||||
|
||||
return (
|
||||
<div className={cn('flex h-full flex-col gap-4', className)}>
|
||||
{/* Table controls */}
|
||||
<div className="flex flex-wrap items-center gap-2 sm:gap-4">
|
||||
{enableRowSelection && showCheckboxes && (
|
||||
<DeleteButton
|
||||
onDelete={handleDelete}
|
||||
isDeleting={isDeleting}
|
||||
disabled={!table.getFilteredSelectedRowModel().rows.length || isDeleting}
|
||||
isSmallScreen={isSmallScreen}
|
||||
/>
|
||||
)}
|
||||
{filterColumn !== undefined && table.getColumn(filterColumn) && enableSearch && (
|
||||
<div className="relative flex-1">
|
||||
<AnimatedSearchInput
|
||||
value={searchTerm}
|
||||
onChange={(e) => setSearchTerm(e.target.value)}
|
||||
isSearching={isSearching}
|
||||
placeholder="Search..."
|
||||
/>
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
|
||||
{/* Virtualized table */}
|
||||
<div
|
||||
ref={tableContainerRef}
|
||||
className={cn(
|
||||
'relative h-[calc(100vh-20rem)] max-w-full overflow-x-auto overflow-y-auto rounded-md border border-black/10 dark:border-white/10',
|
||||
'transition-all duration-300 ease-out',
|
||||
isSearching && 'bg-surface-secondary/50',
|
||||
className,
|
||||
)}
|
||||
>
|
||||
<Table className="w-full min-w-[300px] table-fixed border-separate border-spacing-0">
|
||||
<TableHeader className="sticky top-0 z-50 bg-surface-secondary">
|
||||
{table.getHeaderGroups().map((headerGroup) => (
|
||||
<TableRow key={headerGroup.id} className="border-b border-border-light">
|
||||
{headerGroup.headers.map((header) => (
|
||||
<TableHead
|
||||
key={header.id}
|
||||
className="whitespace-nowrap bg-surface-secondary px-2 py-2 text-left text-sm font-medium text-text-secondary sm:px-4"
|
||||
style={getColumnStyle(
|
||||
header.column.columnDef as TableColumn<TData, TValue>,
|
||||
isSmallScreen,
|
||||
)}
|
||||
onClick={
|
||||
header.column.getCanSort()
|
||||
? header.column.getToggleSortingHandler()
|
||||
: undefined
|
||||
}
|
||||
>
|
||||
{header.isPlaceholder
|
||||
? null
|
||||
: flexRender(header.column.columnDef.header, header.getContext())}
|
||||
</TableHead>
|
||||
))}
|
||||
</TableRow>
|
||||
))}
|
||||
</TableHeader>
|
||||
|
||||
<TableBody>
|
||||
{paddingTop > 0 && (
|
||||
<tr>
|
||||
<td style={{ height: `${paddingTop}px` }} />
|
||||
</tr>
|
||||
)}
|
||||
|
||||
{isLoading && skeletons}
|
||||
|
||||
{virtualRows.map((virtualRow) => {
|
||||
const row = rows[virtualRow.index];
|
||||
return (
|
||||
<MemoizedTableRow
|
||||
key={row.id}
|
||||
row={row}
|
||||
isSmallScreen={isSmallScreen}
|
||||
index={virtualRow.index}
|
||||
isSearching={isSearching}
|
||||
/>
|
||||
);
|
||||
})}
|
||||
|
||||
{!virtualRows.length && (
|
||||
<TableRow className="hover:bg-transparent">
|
||||
<TableCell colSpan={columns.length} className="p-4 text-center">
|
||||
No data available
|
||||
</TableCell>
|
||||
</TableRow>
|
||||
)}
|
||||
|
||||
{paddingBottom > 0 && (
|
||||
<tr>
|
||||
<td style={{ height: `${paddingBottom}px` }} />
|
||||
</tr>
|
||||
)}
|
||||
|
||||
{/* Loading indicator */}
|
||||
{(isFetchingNextPage || hasNextPage) && (
|
||||
<TableRow className="hover:bg-transparent">
|
||||
<TableCell colSpan={columns.length} className="p-4">
|
||||
<div className="flex h-full items-center justify-center">
|
||||
{isFetchingNextPage ? (
|
||||
<Spinner className="size-4" />
|
||||
) : (
|
||||
hasNextPage && <div className="h-6" />
|
||||
)}
|
||||
</div>
|
||||
</TableCell>
|
||||
</TableRow>
|
||||
)}
|
||||
</TableBody>
|
||||
</Table>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
60
packages/client/src/components/DataTableColumnHeader.tsx
Normal file
60
packages/client/src/components/DataTableColumnHeader.tsx
Normal file
|
|
@ -0,0 +1,60 @@
|
|||
import { Column } from '@tanstack/react-table';
|
||||
import { ArrowDownIcon, ArrowUpIcon, CaretSortIcon, EyeNoneIcon } from '@radix-ui/react-icons';
|
||||
import {
|
||||
DropdownMenu,
|
||||
DropdownMenuContent,
|
||||
DropdownMenuItem,
|
||||
DropdownMenuSeparator,
|
||||
DropdownMenuTrigger,
|
||||
} from './DropdownMenu';
|
||||
import { Button } from './Button';
|
||||
import { cn } from '~/utils';
|
||||
|
||||
interface DataTableColumnHeaderProps<TData, TValue> extends React.HTMLAttributes<HTMLDivElement> {
|
||||
column: Column<TData, TValue>;
|
||||
title: string;
|
||||
}
|
||||
|
||||
export function DataTableColumnHeader<TData, TValue>({
|
||||
column,
|
||||
title,
|
||||
className = '',
|
||||
}: DataTableColumnHeaderProps<TData, TValue>) {
|
||||
if (!column.getCanSort()) {
|
||||
return <div className={cn(className)}>{title}</div>;
|
||||
}
|
||||
|
||||
return (
|
||||
<div className={cn('flex items-center space-x-2', className)}>
|
||||
<DropdownMenu>
|
||||
<DropdownMenuTrigger asChild>
|
||||
<Button variant="ghost" size="sm" className="-ml-3 h-8 data-[state=open]:bg-accent">
|
||||
<span>{title}</span>
|
||||
{column.getIsSorted() === 'desc' ? (
|
||||
<ArrowDownIcon className="ml-2 h-4 w-4" />
|
||||
) : column.getIsSorted() === 'asc' ? (
|
||||
<ArrowUpIcon className="ml-2 h-4 w-4" />
|
||||
) : (
|
||||
<CaretSortIcon className="ml-2 h-4 w-4" />
|
||||
)}
|
||||
</Button>
|
||||
</DropdownMenuTrigger>
|
||||
<DropdownMenuContent align="start" className="z-[1001]">
|
||||
<DropdownMenuItem onClick={() => column.toggleSorting(false)}>
|
||||
<ArrowUpIcon className="mr-2 h-3.5 w-3.5 text-muted-foreground/70" />
|
||||
Asc
|
||||
</DropdownMenuItem>
|
||||
<DropdownMenuItem onClick={() => column.toggleSorting(true)}>
|
||||
<ArrowDownIcon className="mr-2 h-3.5 w-3.5 text-muted-foreground/70" />
|
||||
Desc
|
||||
</DropdownMenuItem>
|
||||
<DropdownMenuSeparator />
|
||||
<DropdownMenuItem onClick={() => column.toggleVisibility(false)}>
|
||||
<EyeNoneIcon className="mr-2 h-3.5 w-3.5 text-muted-foreground/70" />
|
||||
Hide
|
||||
</DropdownMenuItem>
|
||||
</DropdownMenuContent>
|
||||
</DropdownMenu>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
5
packages/client/src/components/DelayedRender.tsx
Normal file
5
packages/client/src/components/DelayedRender.tsx
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
import { useDelayedRender } from '~/hooks';
|
||||
|
||||
const DelayedRender = ({ delay, children }) => useDelayedRender(delay)(() => children);
|
||||
|
||||
export default DelayedRender;
|
||||
170
packages/client/src/components/Dialog.tsx
Normal file
170
packages/client/src/components/Dialog.tsx
Normal file
|
|
@ -0,0 +1,170 @@
|
|||
import * as React from 'react';
|
||||
import * as DialogPrimitive from '@radix-ui/react-dialog';
|
||||
import { useMediaQuery } from '~/hooks';
|
||||
import { Button } from './Button';
|
||||
import { X } from 'lucide-react';
|
||||
import { cn } from '~/utils';
|
||||
|
||||
const Dialog = DialogPrimitive.Root;
|
||||
|
||||
const DialogTrigger = DialogPrimitive.Trigger;
|
||||
|
||||
type DialogPortalProps = DialogPrimitive.DialogPortalProps & { className?: string };
|
||||
|
||||
const DialogPortal = ({ className = '', children, ...props }: DialogPortalProps) => (
|
||||
<DialogPrimitive.Portal className={cn(className)} {...(props as DialogPortalProps)}>
|
||||
<div className="fixed inset-0 z-[999] flex items-start justify-center sm:items-center">
|
||||
{children}
|
||||
</div>
|
||||
</DialogPrimitive.Portal>
|
||||
);
|
||||
DialogPortal.displayName = DialogPrimitive.Portal.displayName;
|
||||
|
||||
const DialogOverlay = React.forwardRef<
|
||||
React.ElementRef<typeof DialogPrimitive.Overlay>,
|
||||
React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>
|
||||
>(({ className, ...props }, ref) => (
|
||||
<DialogPrimitive.Overlay
|
||||
className={cn(
|
||||
'fixed inset-0 z-[999] bg-gray-600/65 transition-all duration-100 data-[state=closed]:animate-out data-[state=closed]:fade-out data-[state=open]:fade-in dark:bg-black/80',
|
||||
className ?? '',
|
||||
)}
|
||||
{...props}
|
||||
ref={ref}
|
||||
/>
|
||||
));
|
||||
DialogOverlay.displayName = DialogPrimitive.Overlay.displayName;
|
||||
|
||||
type DialogContentProps = React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content> & {
|
||||
showCloseButton?: boolean;
|
||||
disableScroll?: boolean;
|
||||
};
|
||||
|
||||
const DialogContent = React.forwardRef<
|
||||
React.ElementRef<typeof DialogPrimitive.Content>,
|
||||
DialogContentProps
|
||||
>(
|
||||
(
|
||||
{ className, children = true, showCloseButton = true, disableScroll = false, ...props },
|
||||
ref,
|
||||
) => {
|
||||
const isSmallScreen = useMediaQuery('(max-width: 768px)');
|
||||
return (
|
||||
<DialogPortal>
|
||||
<DialogOverlay />
|
||||
<DialogPrimitive.Content
|
||||
ref={ref}
|
||||
className={cn(
|
||||
'fixed z-[999] grid w-full gap-4 rounded-b-lg bg-white pb-6 animate-in data-[state=open]:fade-in-90 data-[state=open]:slide-in-from-bottom-10 sm:rounded-lg',
|
||||
'dark:bg-gray-700',
|
||||
isSmallScreen
|
||||
? 'fixed left-1/2 top-1/2 z-[999] m-auto grid w-11/12 -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl bg-white pb-6'
|
||||
: '',
|
||||
disableScroll ? 'overflow-hidden' : '',
|
||||
className ?? '',
|
||||
)}
|
||||
{...props}
|
||||
>
|
||||
{children}
|
||||
{showCloseButton && (
|
||||
<DialogPrimitive.Close className="absolute right-6 top-[1.6rem] rounded-sm opacity-70 transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-gray-400 focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-gray-100 dark:focus:ring-white dark:focus:ring-offset-gray-700 dark:data-[state=open]:bg-gray-800">
|
||||
<X className="h-5 w-5 text-black dark:text-white" />
|
||||
<span className="sr-only">Close</span>
|
||||
</DialogPrimitive.Close>
|
||||
)}
|
||||
</DialogPrimitive.Content>
|
||||
</DialogPortal>
|
||||
);
|
||||
},
|
||||
);
|
||||
DialogContent.displayName = DialogPrimitive.Content.displayName;
|
||||
|
||||
const DialogHeader = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (
|
||||
<div
|
||||
className={cn(
|
||||
'flex flex-col space-y-2 border-b border-black/10 p-6 pb-4 text-left dark:border-white/10',
|
||||
className ?? '',
|
||||
)}
|
||||
{...props}
|
||||
/>
|
||||
);
|
||||
DialogHeader.displayName = 'DialogHeader';
|
||||
|
||||
const DialogFooter = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (
|
||||
<div
|
||||
className={cn('flex flex-row justify-between space-x-2 px-6 py-4', className ?? '')}
|
||||
{...props}
|
||||
/>
|
||||
);
|
||||
DialogFooter.displayName = 'DialogFooter';
|
||||
|
||||
const DialogTitle = React.forwardRef<
|
||||
React.ElementRef<typeof DialogPrimitive.Title>,
|
||||
React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>
|
||||
>(({ className, ...props }, ref) => (
|
||||
<DialogPrimitive.Title
|
||||
ref={ref}
|
||||
className={cn('text-lg font-semibold text-gray-900', 'dark:text-gray-50', className ?? '')}
|
||||
{...props}
|
||||
/>
|
||||
));
|
||||
DialogTitle.displayName = DialogPrimitive.Title.displayName;
|
||||
|
||||
const DialogDescription = React.forwardRef<
|
||||
React.ElementRef<typeof DialogPrimitive.Description>,
|
||||
React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>
|
||||
>(({ className, ...props }, ref) => (
|
||||
<DialogPrimitive.Description
|
||||
ref={ref}
|
||||
className={cn('text-sm text-gray-500', 'dark:text-gray-400', className ?? '')}
|
||||
{...props}
|
||||
/>
|
||||
));
|
||||
DialogDescription.displayName = DialogPrimitive.Description.displayName;
|
||||
|
||||
const DialogClose = React.forwardRef<
|
||||
React.ElementRef<typeof DialogPrimitive.Close>,
|
||||
React.ComponentPropsWithoutRef<typeof DialogPrimitive.Close>
|
||||
>(({ className, ...props }, ref) => (
|
||||
<DialogPrimitive.Close
|
||||
ref={ref}
|
||||
className={cn(
|
||||
'mt-2 inline-flex h-10 items-center justify-center rounded-lg border border-gray-200 bg-transparent px-4 py-2 text-sm font-semibold text-gray-900 transition-colors hover:bg-gray-100 focus:outline-none disabled:cursor-not-allowed disabled:opacity-50 dark:border-gray-700 dark:text-gray-100 dark:hover:bg-gray-800 sm:mt-0',
|
||||
className ?? '',
|
||||
/* Important: for accessibility */
|
||||
'focus:ring-2 focus:ring-gray-400 focus:ring-offset-2 dark:focus:ring-gray-400 dark:focus:ring-offset-gray-900',
|
||||
)}
|
||||
{...props}
|
||||
/>
|
||||
));
|
||||
DialogClose.displayName = DialogPrimitive.Title.displayName;
|
||||
|
||||
const DialogButton = React.forwardRef<
|
||||
React.ElementRef<typeof Button>,
|
||||
React.ComponentPropsWithoutRef<typeof Button>
|
||||
>(({ className, ...props }, ref) => (
|
||||
<Button
|
||||
ref={ref}
|
||||
variant="outline"
|
||||
className={cn(
|
||||
'mt-2 inline-flex h-10 items-center justify-center rounded-lg border border-gray-200 bg-transparent px-4 py-2 text-sm font-semibold text-gray-900 transition-colors hover:bg-gray-100 focus:outline-none focus:ring-2 focus:ring-gray-400 focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 dark:border-gray-700 dark:text-gray-100 dark:hover:bg-gray-800 dark:focus:ring-gray-400 dark:focus:ring-offset-gray-900 sm:mt-0',
|
||||
className ?? '',
|
||||
/* Important: for accessibility */
|
||||
'focus:ring-2 focus:ring-gray-400 focus:ring-offset-2 dark:focus:ring-gray-400 dark:focus:ring-offset-gray-900',
|
||||
)}
|
||||
{...props}
|
||||
/>
|
||||
));
|
||||
DialogButton.displayName = DialogPrimitive.Title.displayName;
|
||||
|
||||
export {
|
||||
Dialog,
|
||||
DialogTrigger,
|
||||
DialogContent,
|
||||
DialogHeader,
|
||||
DialogFooter,
|
||||
DialogTitle,
|
||||
DialogDescription,
|
||||
DialogClose,
|
||||
DialogButton,
|
||||
};
|
||||
89
packages/client/src/components/DialogTemplate.spec.tsx
Normal file
89
packages/client/src/components/DialogTemplate.spec.tsx
Normal file
|
|
@ -0,0 +1,89 @@
|
|||
import 'test/matchMedia.mock';
|
||||
import React from 'react';
|
||||
import { render, fireEvent } from '@testing-library/react';
|
||||
import '@testing-library/jest-dom/extend-expect';
|
||||
import DialogTemplate from './DialogTemplate';
|
||||
import { Dialog } from '@radix-ui/react-dialog';
|
||||
import { RecoilRoot } from 'recoil';
|
||||
|
||||
describe('DialogTemplate', () => {
|
||||
let mockSelectHandler;
|
||||
|
||||
beforeEach(() => {
|
||||
mockSelectHandler = jest.fn();
|
||||
});
|
||||
|
||||
it('renders correctly with all props', () => {
|
||||
const { getByText } = render(
|
||||
<RecoilRoot>
|
||||
<Dialog
|
||||
open
|
||||
data-testid="test-dialog"
|
||||
onOpenChange={() => {
|
||||
return;
|
||||
}}
|
||||
>
|
||||
<DialogTemplate
|
||||
title="Test Dialog"
|
||||
description="Test Description"
|
||||
main={<div>Main Content</div>}
|
||||
buttons={<button>Button</button>}
|
||||
leftButtons={<button>Left Button</button>}
|
||||
selection={{ selectHandler: mockSelectHandler, selectText: 'Select' }}
|
||||
/>
|
||||
</Dialog>
|
||||
</RecoilRoot>,
|
||||
);
|
||||
|
||||
expect(getByText('Test Dialog')).toBeInTheDocument();
|
||||
expect(getByText('Test Description')).toBeInTheDocument();
|
||||
expect(getByText('Main Content')).toBeInTheDocument();
|
||||
expect(getByText('Button')).toBeInTheDocument();
|
||||
expect(getByText('Left Button')).toBeInTheDocument();
|
||||
expect(getByText('Cancel')).toBeInTheDocument();
|
||||
expect(getByText('Select')).toBeInTheDocument();
|
||||
});
|
||||
|
||||
it('renders correctly without optional props', () => {
|
||||
const { queryByText } = render(
|
||||
<RecoilRoot>
|
||||
<Dialog
|
||||
open
|
||||
onOpenChange={() => {
|
||||
return;
|
||||
}}
|
||||
></Dialog>
|
||||
</RecoilRoot>,
|
||||
);
|
||||
|
||||
expect(queryByText('Test Dialog')).toBeNull();
|
||||
expect(queryByText('Test Description')).not.toBeInTheDocument();
|
||||
expect(queryByText('Main Content')).not.toBeInTheDocument();
|
||||
expect(queryByText('Button')).not.toBeInTheDocument();
|
||||
expect(queryByText('Left Button')).not.toBeInTheDocument();
|
||||
expect(queryByText('Cancel')).not.toBeInTheDocument();
|
||||
expect(queryByText('Select')).not.toBeInTheDocument();
|
||||
});
|
||||
|
||||
it('calls selectHandler when the select button is clicked', () => {
|
||||
const { getByText } = render(
|
||||
<RecoilRoot>
|
||||
<Dialog
|
||||
open
|
||||
onOpenChange={() => {
|
||||
return;
|
||||
}}
|
||||
>
|
||||
<DialogTemplate
|
||||
title="Test Dialog"
|
||||
selection={{ selectHandler: mockSelectHandler, selectText: 'Select' }}
|
||||
/>
|
||||
</Dialog>
|
||||
</RecoilRoot>,
|
||||
);
|
||||
|
||||
fireEvent.click(getByText('Select'));
|
||||
|
||||
expect(mockSelectHandler).toHaveBeenCalled();
|
||||
});
|
||||
});
|
||||
94
packages/client/src/components/DialogTemplate.tsx
Normal file
94
packages/client/src/components/DialogTemplate.tsx
Normal file
|
|
@ -0,0 +1,94 @@
|
|||
import { forwardRef, ReactNode, Ref } from 'react';
|
||||
import {
|
||||
DialogClose,
|
||||
DialogContent,
|
||||
DialogDescription,
|
||||
DialogFooter,
|
||||
DialogHeader,
|
||||
DialogTitle,
|
||||
} from './';
|
||||
import { cn } from '~/utils/';
|
||||
|
||||
type SelectionProps = {
|
||||
selectHandler?: () => void;
|
||||
selectClasses?: string;
|
||||
selectText?: string;
|
||||
};
|
||||
|
||||
type DialogTemplateProps = {
|
||||
title: string;
|
||||
description?: string;
|
||||
main?: ReactNode;
|
||||
buttons?: ReactNode;
|
||||
leftButtons?: ReactNode;
|
||||
selection?: SelectionProps;
|
||||
className?: string;
|
||||
headerClassName?: string;
|
||||
footerClassName?: string;
|
||||
showCloseButton?: boolean;
|
||||
showCancelButton?: boolean;
|
||||
};
|
||||
|
||||
const DialogTemplate = forwardRef((props: DialogTemplateProps, ref: Ref<HTMLDivElement>) => {
|
||||
const {
|
||||
title,
|
||||
description,
|
||||
main,
|
||||
buttons,
|
||||
leftButtons,
|
||||
selection,
|
||||
className,
|
||||
headerClassName,
|
||||
footerClassName,
|
||||
showCloseButton,
|
||||
showCancelButton = true,
|
||||
} = props;
|
||||
const { selectHandler, selectClasses, selectText } = selection || {};
|
||||
const Cancel = 'cancel';
|
||||
|
||||
const defaultSelect =
|
||||
'bg-gray-800 text-white transition-colors hover:bg-gray-700 disabled:cursor-not-allowed disabled:opacity-50 dark:bg-gray-200 dark:text-gray-800 dark:hover:bg-gray-200';
|
||||
return (
|
||||
<DialogContent
|
||||
showCloseButton={showCloseButton}
|
||||
ref={ref}
|
||||
className={cn('shadow-2xl dark:bg-gray-700', className || '')}
|
||||
onClick={(e) => e.stopPropagation()}
|
||||
>
|
||||
<DialogHeader className={cn(headerClassName ?? '')}>
|
||||
<DialogTitle className="text-lg font-medium leading-6 text-gray-800 dark:text-gray-200">
|
||||
{title}
|
||||
</DialogTitle>
|
||||
{description && (
|
||||
<DialogDescription className="text-gray-600 dark:text-gray-300">
|
||||
{description}
|
||||
</DialogDescription>
|
||||
)}
|
||||
</DialogHeader>
|
||||
<div className="px-6">{main ? main : null}</div>
|
||||
<DialogFooter className={footerClassName}>
|
||||
<div>{leftButtons ? leftButtons : null}</div>
|
||||
<div className="flex h-auto gap-3">
|
||||
{showCancelButton && (
|
||||
<DialogClose className="border-gray-100 hover:bg-gray-100 dark:border-gray-600 dark:hover:bg-gray-600">
|
||||
{Cancel}
|
||||
</DialogClose>
|
||||
)}
|
||||
{buttons ? buttons : null}
|
||||
{selection ? (
|
||||
<DialogClose
|
||||
onClick={selectHandler}
|
||||
className={`${
|
||||
selectClasses || defaultSelect
|
||||
} inline-flex h-10 items-center justify-center rounded-lg border-none px-4 py-2 text-sm`}
|
||||
>
|
||||
{selectText}
|
||||
</DialogClose>
|
||||
) : null}
|
||||
</div>
|
||||
</DialogFooter>
|
||||
</DialogContent>
|
||||
);
|
||||
});
|
||||
|
||||
export default DialogTemplate;
|
||||
150
packages/client/src/components/Dropdown.tsx
Normal file
150
packages/client/src/components/Dropdown.tsx
Normal file
|
|
@ -0,0 +1,150 @@
|
|||
import React from 'react';
|
||||
import * as Select from '@ariakit/react/select';
|
||||
import type { Option } from '~/common';
|
||||
import { cn } from '~/utils/';
|
||||
|
||||
interface DropdownProps {
|
||||
value?: string;
|
||||
label?: string;
|
||||
onChange: (value: string) => void;
|
||||
options: (string | Option | { divider: true })[];
|
||||
className?: string;
|
||||
sizeClasses?: string;
|
||||
testId?: string;
|
||||
icon?: React.ReactNode;
|
||||
iconOnly?: boolean;
|
||||
renderValue?: (option: Option) => React.ReactNode;
|
||||
ariaLabel?: string;
|
||||
portal?: boolean;
|
||||
}
|
||||
|
||||
const isDivider = (item: string | Option | { divider: true }): item is { divider: true } =>
|
||||
typeof item === 'object' && 'divider' in item;
|
||||
|
||||
const isOption = (item: string | Option | { divider: true }): item is Option =>
|
||||
typeof item === 'object' && 'value' in item && 'label' in item;
|
||||
|
||||
const Dropdown: React.FC<DropdownProps> = ({
|
||||
value: selectedValue,
|
||||
label = '',
|
||||
onChange,
|
||||
options,
|
||||
className = '',
|
||||
sizeClasses,
|
||||
testId = 'dropdown-menu',
|
||||
icon,
|
||||
iconOnly = false,
|
||||
renderValue,
|
||||
ariaLabel,
|
||||
portal = true,
|
||||
}) => {
|
||||
const handleChange = (value: string) => {
|
||||
onChange(value);
|
||||
};
|
||||
|
||||
const selectProps = Select.useSelectStore({
|
||||
value: selectedValue,
|
||||
setValue: handleChange,
|
||||
});
|
||||
|
||||
const getOptionObject = (val: string | undefined): Option | undefined => {
|
||||
if (val == null || val === '') {
|
||||
return undefined;
|
||||
}
|
||||
return options
|
||||
.filter((o) => !isDivider(o))
|
||||
.map((o) => (typeof o === 'string' ? { value: o, label: o } : o))
|
||||
.find((o) => isOption(o) && o.value === val) as Option | undefined;
|
||||
};
|
||||
|
||||
const getOptionLabel = (currentValue: string | undefined) => {
|
||||
if (currentValue == null || currentValue === '') {
|
||||
return '';
|
||||
}
|
||||
const option = getOptionObject(currentValue);
|
||||
return option ? option.label : currentValue;
|
||||
};
|
||||
|
||||
return (
|
||||
<div className={cn('relative', className)}>
|
||||
<Select.Select
|
||||
store={selectProps}
|
||||
className={cn(
|
||||
'focus:ring-offset-ring-offset relative inline-flex items-center justify-between rounded-xl border border-input bg-background px-3 py-2 text-sm text-text-primary transition-all duration-200 ease-in-out hover:bg-accent hover:text-accent-foreground focus:ring-ring-primary',
|
||||
iconOnly ? 'h-full w-10' : 'w-fit gap-2',
|
||||
className,
|
||||
)}
|
||||
data-testid={testId}
|
||||
aria-label={ariaLabel}
|
||||
>
|
||||
<div className="flex w-full items-center gap-2">
|
||||
{icon}
|
||||
{!iconOnly && (
|
||||
<span className="block truncate">
|
||||
{label}
|
||||
{(() => {
|
||||
const matchedOption = getOptionObject(selectedValue);
|
||||
if (matchedOption && renderValue) {
|
||||
return renderValue(matchedOption);
|
||||
}
|
||||
return getOptionLabel(selectedValue);
|
||||
})()}
|
||||
</span>
|
||||
)}
|
||||
</div>
|
||||
{!iconOnly && <Select.SelectArrow />}
|
||||
</Select.Select>
|
||||
<Select.SelectPopover
|
||||
portal={portal}
|
||||
store={selectProps}
|
||||
className={cn('popover-ui', sizeClasses, className, 'max-h-[80vh] overflow-y-auto')}
|
||||
>
|
||||
{options.map((item, index) => {
|
||||
if (isDivider(item)) {
|
||||
return <div key={`divider-${index}`} className="my-1 border-t border-border-heavy" />;
|
||||
}
|
||||
|
||||
const option = typeof item === 'string' ? { value: item, label: item } : item;
|
||||
if (!isOption(option)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return (
|
||||
<Select.SelectItem
|
||||
key={`option-${index}`}
|
||||
value={String(option.value)}
|
||||
className="select-item"
|
||||
data-theme={option.value}
|
||||
>
|
||||
<div className="flex w-full items-center gap-2">
|
||||
{option.icon != null && <span>{option.icon as React.ReactNode}</span>}
|
||||
<span className="block truncate">{option.label}</span>
|
||||
{selectedValue === option.value && (
|
||||
<span className="ml-auto pl-2">
|
||||
<svg
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
className="icon-md block group-hover:hidden"
|
||||
>
|
||||
<path
|
||||
fillRule="evenodd"
|
||||
clipRule="evenodd"
|
||||
d="M2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12ZM16.0755 7.93219C16.5272 8.25003 16.6356 8.87383 16.3178 9.32549L11.5678 16.0755C11.3931 16.3237 11.1152 16.4792 10.8123 16.4981C10.5093 16.517 10.2142 16.3973 10.0101 16.1727L7.51006 13.4227C7.13855 13.014 7.16867 12.3816 7.57733 12.0101C7.98598 11.6386 8.61843 11.6687 8.98994 12.0773L10.6504 13.9039L14.6822 8.17451C15 7.72284 15.6238 7.61436 16.0755 7.93219Z"
|
||||
fill="currentColor"
|
||||
/>
|
||||
</svg>
|
||||
</span>
|
||||
)}
|
||||
</div>
|
||||
</Select.SelectItem>
|
||||
);
|
||||
})}
|
||||
</Select.SelectPopover>
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
export default Dropdown;
|
||||
191
packages/client/src/components/DropdownMenu.tsx
Normal file
191
packages/client/src/components/DropdownMenu.tsx
Normal file
|
|
@ -0,0 +1,191 @@
|
|||
import * as React from 'react';
|
||||
import * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';
|
||||
import { Check, ChevronRight, Circle } from 'lucide-react';
|
||||
import { cn } from '~/utils';
|
||||
|
||||
const DropdownMenu = DropdownMenuPrimitive.Root;
|
||||
|
||||
const DropdownMenuTrigger = DropdownMenuPrimitive.Trigger;
|
||||
|
||||
const DropdownMenuGroup = DropdownMenuPrimitive.Group;
|
||||
|
||||
const DropdownMenuPortal = DropdownMenuPrimitive.Portal;
|
||||
|
||||
const DropdownMenuSub = DropdownMenuPrimitive.Sub;
|
||||
|
||||
const DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup;
|
||||
|
||||
const DropdownMenuSubTrigger = React.forwardRef<
|
||||
React.ElementRef<typeof DropdownMenuPrimitive.SubTrigger>,
|
||||
React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubTrigger> & {
|
||||
inset?: boolean;
|
||||
}
|
||||
>(({ className = '', inset, children, ...props }, ref) => (
|
||||
<DropdownMenuPrimitive.SubTrigger
|
||||
ref={ref}
|
||||
className={cn(
|
||||
'flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm font-medium outline-none focus:bg-gray-100 data-[state=open]:bg-gray-100 dark:focus:bg-gray-900 dark:data-[state=open]:bg-gray-900',
|
||||
inset ? 'pl-8' : '',
|
||||
className,
|
||||
)}
|
||||
{...props}
|
||||
>
|
||||
{children}
|
||||
<ChevronRight className="ml-auto h-4 w-4" />
|
||||
</DropdownMenuPrimitive.SubTrigger>
|
||||
));
|
||||
DropdownMenuSubTrigger.displayName = DropdownMenuPrimitive.SubTrigger.displayName;
|
||||
|
||||
const DropdownMenuSubContent = React.forwardRef<
|
||||
React.ElementRef<typeof DropdownMenuPrimitive.SubContent>,
|
||||
React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubContent>
|
||||
>(({ className = '', ...props }, ref) => (
|
||||
<DropdownMenuPrimitive.SubContent
|
||||
ref={ref}
|
||||
className={cn(
|
||||
'z-50 min-w-[8rem] overflow-hidden rounded-md border border-gray-100 bg-white p-1 text-gray-700 shadow-md animate-in slide-in-from-left-1 dark:border-gray-800 dark:bg-gray-800 dark:text-gray-400',
|
||||
className,
|
||||
)}
|
||||
{...props}
|
||||
/>
|
||||
));
|
||||
DropdownMenuSubContent.displayName = DropdownMenuPrimitive.SubContent.displayName;
|
||||
|
||||
const DropdownMenuContent = React.forwardRef<
|
||||
React.ElementRef<typeof DropdownMenuPrimitive.Content>,
|
||||
React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Content>
|
||||
>(({ className = '', sideOffset = 4, ...props }, ref) => (
|
||||
<DropdownMenuPrimitive.Portal>
|
||||
<DropdownMenuPrimitive.Content
|
||||
ref={ref}
|
||||
sideOffset={sideOffset}
|
||||
className={cn(
|
||||
'z-50 min-w-[8rem] overflow-hidden rounded-md border border-gray-100 bg-white p-1 text-gray-700 shadow-md animate-in data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 dark:border-gray-800 dark:bg-gray-800 dark:text-gray-400',
|
||||
className,
|
||||
)}
|
||||
{...props}
|
||||
/>
|
||||
</DropdownMenuPrimitive.Portal>
|
||||
));
|
||||
DropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName;
|
||||
|
||||
const DropdownMenuItem = React.forwardRef<
|
||||
React.ElementRef<typeof DropdownMenuPrimitive.Item>,
|
||||
React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Item> & {
|
||||
inset?: boolean;
|
||||
}
|
||||
>(({ className = '', inset, ...props }, ref) => (
|
||||
<DropdownMenuPrimitive.Item
|
||||
ref={ref}
|
||||
className={cn(
|
||||
'relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm font-medium outline-none focus:bg-gray-100 data-[disabled]:pointer-events-none data-[disabled]:opacity-50 dark:focus:bg-gray-900',
|
||||
inset ? 'pl-8' : '',
|
||||
className,
|
||||
)}
|
||||
{...props}
|
||||
/>
|
||||
));
|
||||
DropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName;
|
||||
|
||||
const DropdownMenuCheckboxItem = React.forwardRef<
|
||||
React.ElementRef<typeof DropdownMenuPrimitive.CheckboxItem>,
|
||||
React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.CheckboxItem>
|
||||
>(({ className = '', children, checked, ...props }, ref) => (
|
||||
<DropdownMenuPrimitive.CheckboxItem
|
||||
ref={ref}
|
||||
className={cn(
|
||||
'relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm font-medium outline-none focus:bg-gray-100 data-[disabled]:pointer-events-none data-[disabled]:opacity-50 dark:focus:bg-gray-900',
|
||||
className,
|
||||
)}
|
||||
checked={checked}
|
||||
{...props}
|
||||
>
|
||||
<span className="absolute left-2 flex h-3.5 w-3.5 items-center justify-center">
|
||||
<DropdownMenuPrimitive.ItemIndicator>
|
||||
<Check className="h-4 w-4" />
|
||||
</DropdownMenuPrimitive.ItemIndicator>
|
||||
</span>
|
||||
{children}
|
||||
</DropdownMenuPrimitive.CheckboxItem>
|
||||
));
|
||||
DropdownMenuCheckboxItem.displayName = DropdownMenuPrimitive.CheckboxItem.displayName;
|
||||
|
||||
const DropdownMenuRadioItem = React.forwardRef<
|
||||
React.ElementRef<typeof DropdownMenuPrimitive.RadioItem>,
|
||||
React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.RadioItem>
|
||||
>(({ className = '', children, ...props }, ref) => (
|
||||
<DropdownMenuPrimitive.RadioItem
|
||||
ref={ref}
|
||||
className={cn(
|
||||
className,
|
||||
'relative flex cursor-pointer select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm font-medium outline-none focus:bg-gray-100 data-[disabled]:pointer-events-none data-[disabled]:opacity-50 dark:focus:bg-gray-800',
|
||||
)}
|
||||
{...props}
|
||||
>
|
||||
<span className="absolute left-2 flex h-3.5 w-3.5 items-center justify-center">
|
||||
<DropdownMenuPrimitive.ItemIndicator>
|
||||
<Circle className="h-2 w-2 fill-current" />
|
||||
</DropdownMenuPrimitive.ItemIndicator>
|
||||
</span>
|
||||
{children}
|
||||
</DropdownMenuPrimitive.RadioItem>
|
||||
));
|
||||
DropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName;
|
||||
|
||||
const DropdownMenuLabel = React.forwardRef<
|
||||
React.ElementRef<typeof DropdownMenuPrimitive.Label>,
|
||||
React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Label> & {
|
||||
inset?: boolean;
|
||||
}
|
||||
>(({ className = '', inset, ...props }, ref) => (
|
||||
<DropdownMenuPrimitive.Label
|
||||
ref={ref}
|
||||
className={cn(
|
||||
'px-2 py-1.5 text-sm font-semibold text-gray-900 dark:text-gray-300',
|
||||
inset ? 'pl-8' : '',
|
||||
className,
|
||||
)}
|
||||
{...props}
|
||||
/>
|
||||
));
|
||||
DropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName;
|
||||
|
||||
const DropdownMenuSeparator = React.forwardRef<
|
||||
React.ElementRef<typeof DropdownMenuPrimitive.Separator>,
|
||||
React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Separator>
|
||||
>(({ className = '', ...props }, ref) => (
|
||||
<DropdownMenuPrimitive.Separator
|
||||
ref={ref}
|
||||
className={cn('-mx-1 my-1 h-px bg-border-medium', className)}
|
||||
{...props}
|
||||
/>
|
||||
));
|
||||
DropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName;
|
||||
|
||||
const DropdownMenuShortcut = ({
|
||||
className = '',
|
||||
...props
|
||||
}: React.HTMLAttributes<HTMLSpanElement>) => {
|
||||
return (
|
||||
<span className={cn('ml-auto text-xs tracking-widest text-gray-500', className)} {...props} />
|
||||
);
|
||||
};
|
||||
DropdownMenuShortcut.displayName = 'DropdownMenuShortcut';
|
||||
|
||||
export {
|
||||
DropdownMenu,
|
||||
DropdownMenuTrigger,
|
||||
DropdownMenuContent,
|
||||
DropdownMenuItem,
|
||||
DropdownMenuCheckboxItem,
|
||||
DropdownMenuRadioItem,
|
||||
DropdownMenuLabel,
|
||||
DropdownMenuSeparator,
|
||||
DropdownMenuShortcut,
|
||||
DropdownMenuGroup,
|
||||
DropdownMenuPortal,
|
||||
DropdownMenuSub,
|
||||
DropdownMenuSubContent,
|
||||
DropdownMenuSubTrigger,
|
||||
DropdownMenuRadioGroup,
|
||||
};
|
||||
140
packages/client/src/components/DropdownNoState.tsx
Normal file
140
packages/client/src/components/DropdownNoState.tsx
Normal file
|
|
@ -0,0 +1,140 @@
|
|||
import React, { FC } from 'react';
|
||||
import {
|
||||
Listbox,
|
||||
ListboxButton,
|
||||
ListboxOption,
|
||||
ListboxOptions,
|
||||
Transition,
|
||||
} from '@headlessui/react';
|
||||
import { AnchorPropsWithSelection } from '@headlessui/react/dist/internal/floating';
|
||||
import type { Option } from '~/common';
|
||||
import { cn } from '~/utils/';
|
||||
|
||||
interface DropdownProps {
|
||||
value?: string | Option;
|
||||
label?: string;
|
||||
onChange: (value: string | Option) => void;
|
||||
options: (string | Option)[];
|
||||
className?: string;
|
||||
anchor?: AnchorPropsWithSelection;
|
||||
sizeClasses?: string;
|
||||
testId?: string;
|
||||
}
|
||||
|
||||
/*
|
||||
* Mainly used for the Speech Voice Selection Dropdown
|
||||
*/
|
||||
|
||||
const Dropdown: FC<DropdownProps> = ({
|
||||
value,
|
||||
label = '',
|
||||
onChange,
|
||||
options,
|
||||
className = '',
|
||||
anchor,
|
||||
sizeClasses,
|
||||
testId = 'dropdown-menu',
|
||||
}) => {
|
||||
const getValue = (option?: string | Option) =>
|
||||
typeof option === 'string' ? option : option?.value;
|
||||
|
||||
const getDisplay = (option?: string | Option) =>
|
||||
typeof option === 'string' ? option : (option?.label ?? option?.value);
|
||||
|
||||
const isEqual = (a: string | Option, b: string | Option): boolean => getValue(a) === getValue(b);
|
||||
|
||||
const selectedOption = options.find((option) => isEqual(option, value ?? '')) ?? value;
|
||||
|
||||
const handleChange = (newValue: string | Option) => {
|
||||
onChange(newValue);
|
||||
};
|
||||
|
||||
return (
|
||||
<div className={cn('relative', className)}>
|
||||
<Listbox value={selectedOption} onChange={handleChange}>
|
||||
<div className={cn('relative', className)}>
|
||||
<ListboxButton
|
||||
data-testid={testId}
|
||||
className={cn(
|
||||
'relative inline-flex items-center justify-between rounded-md border-gray-50 bg-white py-2 pl-3 pr-8 text-black transition-all duration-100 ease-in-out hover:bg-gray-100 dark:border-gray-600 dark:bg-gray-700 dark:text-white dark:hover:bg-gray-600 dark:focus:ring-white dark:focus:ring-offset-gray-700',
|
||||
'w-auto',
|
||||
className,
|
||||
)}
|
||||
aria-label="Select an option"
|
||||
>
|
||||
<span className="block truncate">
|
||||
{label}
|
||||
{getDisplay(selectedOption)}
|
||||
</span>
|
||||
<span className="pointer-events-none absolute inset-y-0 right-0 flex items-center pr-2">
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
fill="none"
|
||||
viewBox="0 0 24 24"
|
||||
strokeWidth="2"
|
||||
stroke="currentColor"
|
||||
className="h-4 w-5 rotate-0 transform text-black transition-transform duration-300 ease-in-out dark:text-gray-50"
|
||||
>
|
||||
<polyline points="6 9 12 15 18 9"></polyline>
|
||||
</svg>
|
||||
</span>
|
||||
</ListboxButton>
|
||||
<Transition
|
||||
leave="transition ease-in duration-50"
|
||||
leaveFrom="opacity-100"
|
||||
leaveTo="opacity-0"
|
||||
>
|
||||
<ListboxOptions
|
||||
className={cn(
|
||||
'absolute z-50 mt-1 flex flex-col items-start gap-1 overflow-auto rounded-lg border border-gray-300 bg-white p-1.5 text-gray-700 shadow-lg transition-opacity focus:outline-none dark:border-gray-600 dark:bg-gray-700 dark:text-white',
|
||||
sizeClasses,
|
||||
className,
|
||||
)}
|
||||
anchor={anchor}
|
||||
aria-label="List of options"
|
||||
>
|
||||
{options.map((item, index) => (
|
||||
<ListboxOption
|
||||
key={index}
|
||||
value={item}
|
||||
className={cn(
|
||||
'relative cursor-pointer select-none rounded border-gray-300 bg-white py-2.5 pl-3 pr-3 text-sm text-gray-700 hover:bg-gray-100 dark:border-gray-300 dark:bg-gray-700 dark:text-white dark:hover:bg-gray-600',
|
||||
)}
|
||||
style={{ width: '100%' }}
|
||||
data-theme={getValue(item)}
|
||||
>
|
||||
{({ selected }) => (
|
||||
<div className="flex w-full items-center justify-between">
|
||||
<span className="block truncate">{getDisplay(item)}</span>
|
||||
{selected && (
|
||||
<span className="ml-auto pl-2">
|
||||
<svg
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
className="icon-md block group-hover:hidden"
|
||||
>
|
||||
<path
|
||||
fillRule="evenodd"
|
||||
clipRule="evenodd"
|
||||
d="M2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12ZM16.0755 7.93219C16.5272 8.25003 16.6356 8.87383 16.3178 9.32549L11.5678 16.0755C11.3931 16.3237 11.1152 16.4792 10.8123 16.4981C10.5093 16.517 10.2142 16.3973 10.0101 16.1727L7.51006 13.4227C7.13855 13.014 7.16867 12.3816 7.57733 12.0101C7.98598 11.6386 8.61843 11.6687 8.98994 12.0773L10.6504 13.9039L14.6822 8.17451C15 7.72284 15.6238 7.61436 16.0755 7.93219Z"
|
||||
fill="currentColor"
|
||||
/>
|
||||
</svg>
|
||||
</span>
|
||||
)}
|
||||
</div>
|
||||
)}
|
||||
</ListboxOption>
|
||||
))}
|
||||
</ListboxOptions>
|
||||
</Transition>
|
||||
</div>
|
||||
</Listbox>
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
export default Dropdown;
|
||||
134
packages/client/src/components/DropdownPopup.tsx
Normal file
134
packages/client/src/components/DropdownPopup.tsx
Normal file
|
|
@ -0,0 +1,134 @@
|
|||
import React from 'react';
|
||||
import * as Ariakit from '@ariakit/react';
|
||||
import type * as t from '~/common';
|
||||
import { cn } from '~/utils';
|
||||
|
||||
interface DropdownProps {
|
||||
keyPrefix?: string;
|
||||
trigger: React.ReactNode;
|
||||
items: t.MenuItemProps[];
|
||||
isOpen: boolean;
|
||||
setIsOpen: (isOpen: boolean) => void;
|
||||
className?: string;
|
||||
iconClassName?: string;
|
||||
itemClassName?: string;
|
||||
sameWidth?: boolean;
|
||||
anchor?: { x: string; y: string };
|
||||
gutter?: number;
|
||||
modal?: boolean;
|
||||
portal?: boolean;
|
||||
preserveTabOrder?: boolean;
|
||||
focusLoop?: boolean;
|
||||
menuId: string;
|
||||
mountByState?: boolean;
|
||||
unmountOnHide?: boolean;
|
||||
finalFocus?: React.RefObject<HTMLElement>;
|
||||
}
|
||||
|
||||
type MenuProps = Omit<
|
||||
DropdownProps,
|
||||
'trigger' | 'isOpen' | 'setIsOpen' | 'focusLoop' | 'mountByState'
|
||||
>;
|
||||
|
||||
const DropdownPopup: React.FC<DropdownProps> = ({
|
||||
trigger,
|
||||
isOpen,
|
||||
setIsOpen,
|
||||
focusLoop,
|
||||
mountByState,
|
||||
...props
|
||||
}) => {
|
||||
const menu = Ariakit.useMenuStore({ open: isOpen, setOpen: setIsOpen, focusLoop });
|
||||
if (mountByState) {
|
||||
return (
|
||||
<Ariakit.MenuProvider store={menu}>
|
||||
{trigger}
|
||||
{isOpen && <Menu {...props} />}
|
||||
</Ariakit.MenuProvider>
|
||||
);
|
||||
}
|
||||
return (
|
||||
<Ariakit.MenuProvider store={menu}>
|
||||
{trigger}
|
||||
<Menu {...props} />
|
||||
</Ariakit.MenuProvider>
|
||||
);
|
||||
};
|
||||
|
||||
const Menu: React.FC<MenuProps> = ({
|
||||
items,
|
||||
menuId,
|
||||
keyPrefix,
|
||||
className,
|
||||
iconClassName,
|
||||
itemClassName,
|
||||
modal,
|
||||
portal,
|
||||
sameWidth,
|
||||
gutter = 8,
|
||||
finalFocus,
|
||||
unmountOnHide,
|
||||
preserveTabOrder,
|
||||
}) => {
|
||||
const menu = Ariakit.useMenuContext();
|
||||
return (
|
||||
<Ariakit.Menu
|
||||
id={menuId}
|
||||
modal={modal}
|
||||
gutter={gutter}
|
||||
portal={portal}
|
||||
sameWidth={sameWidth}
|
||||
finalFocus={finalFocus}
|
||||
unmountOnHide={unmountOnHide}
|
||||
preserveTabOrder={preserveTabOrder}
|
||||
className={cn('popover-ui z-50', className)}
|
||||
>
|
||||
{items
|
||||
.filter((item) => item.show !== false)
|
||||
.map((item, index) => {
|
||||
if (item.separate === true) {
|
||||
return <Ariakit.MenuSeparator key={index} className="my-1 h-px bg-white/10" />;
|
||||
}
|
||||
return (
|
||||
<Ariakit.MenuItem
|
||||
key={`${keyPrefix ?? ''}${index}-${item.id ?? ''}`}
|
||||
id={item.id}
|
||||
className={cn(
|
||||
'group flex w-full cursor-pointer items-center gap-2 rounded-lg px-3 py-3.5 text-sm text-text-primary outline-none transition-colors duration-200 hover:bg-surface-hover focus:bg-surface-hover md:px-2.5 md:py-2',
|
||||
itemClassName,
|
||||
)}
|
||||
disabled={item.disabled}
|
||||
render={item.render}
|
||||
ref={item.ref}
|
||||
hideOnClick={item.hideOnClick}
|
||||
onClick={(event) => {
|
||||
event.preventDefault();
|
||||
if (item.onClick) {
|
||||
item.onClick(event);
|
||||
}
|
||||
if (item.hideOnClick === false) {
|
||||
return;
|
||||
}
|
||||
menu?.hide();
|
||||
}}
|
||||
>
|
||||
{item.icon != null && (
|
||||
<span className={cn('mr-2 size-4', iconClassName)} aria-hidden="true">
|
||||
{item.icon}
|
||||
</span>
|
||||
)}
|
||||
{item.label}
|
||||
{item.kbd != null && (
|
||||
// eslint-disable-next-line i18next/no-literal-string
|
||||
<kbd className="ml-auto hidden font-sans text-xs text-black/50 group-hover:inline group-focus:inline dark:text-white/50">
|
||||
⌘{item.kbd}
|
||||
</kbd>
|
||||
)}
|
||||
</Ariakit.MenuItem>
|
||||
);
|
||||
})}
|
||||
</Ariakit.Menu>
|
||||
);
|
||||
};
|
||||
|
||||
export default DropdownPopup;
|
||||
29
packages/client/src/components/FileUpload.tsx
Normal file
29
packages/client/src/components/FileUpload.tsx
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
import React, { forwardRef } from 'react';
|
||||
|
||||
type FileUploadProps = {
|
||||
className?: string;
|
||||
onClick?: () => void;
|
||||
children: React.ReactNode;
|
||||
handleFileChange: (event: React.ChangeEvent<HTMLInputElement>) => void;
|
||||
};
|
||||
|
||||
const FileUpload = forwardRef<HTMLInputElement, FileUploadProps>(
|
||||
({ children, handleFileChange }, ref) => {
|
||||
return (
|
||||
<>
|
||||
{children}
|
||||
<input
|
||||
ref={ref}
|
||||
multiple
|
||||
type="file"
|
||||
style={{ display: 'none' }}
|
||||
onChange={handleFileChange}
|
||||
/>
|
||||
</>
|
||||
);
|
||||
},
|
||||
);
|
||||
|
||||
FileUpload.displayName = 'FileUpload';
|
||||
|
||||
export default FileUpload;
|
||||
63
packages/client/src/components/FormInput.tsx
Normal file
63
packages/client/src/components/FormInput.tsx
Normal file
|
|
@ -0,0 +1,63 @@
|
|||
import React from 'react';
|
||||
import { Label } from './Label';
|
||||
import { Input } from './Input';
|
||||
import { cn } from '~/utils';
|
||||
|
||||
export default function FormInput({
|
||||
field,
|
||||
label,
|
||||
labelClass,
|
||||
inputClass,
|
||||
containerClass,
|
||||
labelAdjacent,
|
||||
placeholder = '',
|
||||
type = 'string',
|
||||
}: {
|
||||
field: any;
|
||||
label: string;
|
||||
labelClass?: string;
|
||||
inputClass?: string;
|
||||
placeholder?: string;
|
||||
containerClass?: string;
|
||||
type?: 'string' | 'number';
|
||||
labelAdjacent?: React.ReactNode;
|
||||
}) {
|
||||
const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {
|
||||
const value = e.target.value;
|
||||
|
||||
if (type !== 'number') {
|
||||
field.onChange(value);
|
||||
return;
|
||||
}
|
||||
|
||||
if (value === '') {
|
||||
field.onChange(value);
|
||||
} else if (!isNaN(Number(value))) {
|
||||
field.onChange(Number(value));
|
||||
}
|
||||
};
|
||||
|
||||
return (
|
||||
<div className={cn('flex w-full flex-col items-center gap-2', containerClass)}>
|
||||
<div className="flex w-full items-center justify-start gap-2">
|
||||
<Label
|
||||
htmlFor={`${field.name}-input`}
|
||||
className={cn('text-left text-sm font-semibold text-text-primary', labelClass)}
|
||||
>
|
||||
{label}
|
||||
</Label>
|
||||
{labelAdjacent}
|
||||
</div>
|
||||
<Input
|
||||
id={`${field.name}-input`}
|
||||
value={field.value ?? ''}
|
||||
onChange={handleChange}
|
||||
placeholder={placeholder}
|
||||
className={cn(
|
||||
'flex h-10 max-h-10 w-full resize-none border-none bg-surface-secondary px-3 py-2',
|
||||
inputClass,
|
||||
)}
|
||||
/>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
34
packages/client/src/components/HoverCard.tsx
Normal file
34
packages/client/src/components/HoverCard.tsx
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
import * as React from 'react';
|
||||
import * as HoverCardPrimitive from '@radix-ui/react-hover-card';
|
||||
import { cn } from '~/utils';
|
||||
|
||||
const HoverCard = HoverCardPrimitive.Root;
|
||||
|
||||
const HoverCardTrigger = HoverCardPrimitive.Trigger;
|
||||
|
||||
const HoverCardPortal = HoverCardPrimitive.Portal;
|
||||
|
||||
const HoverCardContent = React.forwardRef<
|
||||
React.ElementRef<typeof HoverCardPrimitive.Content>,
|
||||
React.ComponentPropsWithoutRef<typeof HoverCardPrimitive.Content> & { disabled?: boolean }
|
||||
>(({ className = '', align = 'center', sideOffset = 6, disabled = false, ...props }, ref) => {
|
||||
if (disabled) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return (
|
||||
<HoverCardPrimitive.Content
|
||||
ref={ref}
|
||||
align={align}
|
||||
sideOffset={sideOffset}
|
||||
className={cn(
|
||||
'z-50 w-64 origin-[--radix-hover-card-content-transform-origin] rounded-xl border border-border-light bg-surface-secondary p-4 text-text-primary shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2',
|
||||
className,
|
||||
)}
|
||||
{...props}
|
||||
/>
|
||||
);
|
||||
});
|
||||
HoverCardContent.displayName = HoverCardPrimitive.Content.displayName;
|
||||
|
||||
export { HoverCard, HoverCardTrigger, HoverCardContent, HoverCardPortal };
|
||||
21
packages/client/src/components/Input.tsx
Normal file
21
packages/client/src/components/Input.tsx
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
import * as React from 'react';
|
||||
import { cn } from '~/utils';
|
||||
|
||||
export type InputProps = React.InputHTMLAttributes<HTMLInputElement>;
|
||||
|
||||
const Input = React.forwardRef<HTMLInputElement, InputProps>(({ className, ...props }, ref) => {
|
||||
return (
|
||||
<input
|
||||
className={cn(
|
||||
'flex h-10 w-full rounded-lg border border-input bg-transparent px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50',
|
||||
className ?? '',
|
||||
)}
|
||||
ref={ref}
|
||||
{...props}
|
||||
/>
|
||||
);
|
||||
});
|
||||
|
||||
Input.displayName = 'Input';
|
||||
|
||||
export { Input };
|
||||
105
packages/client/src/components/InputCombobox.tsx
Normal file
105
packages/client/src/components/InputCombobox.tsx
Normal file
|
|
@ -0,0 +1,105 @@
|
|||
import React from 'react';
|
||||
import * as Ariakit from '@ariakit/react';
|
||||
import type { OptionWithIcon } from '~/common';
|
||||
import { cn } from '~/utils';
|
||||
|
||||
type ComboboxProps = {
|
||||
label?: string;
|
||||
placeholder?: string;
|
||||
options: OptionWithIcon[] | string[];
|
||||
className?: string;
|
||||
labelClassName?: string;
|
||||
value: string;
|
||||
onChange: (value: string) => void;
|
||||
onBlur: () => void;
|
||||
};
|
||||
|
||||
export const InputCombobox: React.FC<ComboboxProps> = ({
|
||||
label,
|
||||
labelClassName,
|
||||
placeholder = 'Select an option',
|
||||
options,
|
||||
className,
|
||||
value,
|
||||
onChange,
|
||||
onBlur,
|
||||
}) => {
|
||||
const isOptionObject = (option: unknown): option is OptionWithIcon => {
|
||||
return option != null && typeof option === 'object' && 'value' in option;
|
||||
};
|
||||
|
||||
const [isOpen, setIsOpen] = React.useState(false);
|
||||
const [inputValue, setInputValue] = React.useState(value);
|
||||
const [isKeyboardFocus, setIsKeyboardFocus] = React.useState(false);
|
||||
|
||||
React.useEffect(() => {
|
||||
setInputValue(value);
|
||||
}, [value]);
|
||||
|
||||
const handleChange = (newValue: string) => {
|
||||
setInputValue(newValue);
|
||||
onChange(newValue);
|
||||
};
|
||||
|
||||
return (
|
||||
<Ariakit.ComboboxProvider value={inputValue} setValue={handleChange}>
|
||||
{label != null && (
|
||||
<Ariakit.ComboboxLabel
|
||||
className={cn('mb-2 block text-sm font-medium text-text-primary', labelClassName ?? '')}
|
||||
>
|
||||
{label}
|
||||
</Ariakit.ComboboxLabel>
|
||||
)}
|
||||
<div className={cn('relative', isKeyboardFocus ? 'rounded-md ring-2 ring-ring-primary' : '')}>
|
||||
<Ariakit.Combobox
|
||||
placeholder={placeholder}
|
||||
className={cn(
|
||||
'h-10 w-full rounded-md border border-border-light bg-surface-primary px-3 py-2 text-sm',
|
||||
'placeholder-text-secondary hover:bg-surface-hover',
|
||||
'focus:outline-none',
|
||||
className,
|
||||
)}
|
||||
onChange={(event) => handleChange(event.target.value)}
|
||||
onBlur={() => {
|
||||
setIsKeyboardFocus(false);
|
||||
onBlur();
|
||||
}}
|
||||
onFocusVisible={() => {
|
||||
setIsKeyboardFocus(true);
|
||||
setIsOpen(true);
|
||||
}}
|
||||
onMouseDown={() => {
|
||||
setIsKeyboardFocus(false);
|
||||
}}
|
||||
/>
|
||||
</div>
|
||||
<Ariakit.ComboboxPopover
|
||||
gutter={4}
|
||||
sameWidth
|
||||
open={isOpen}
|
||||
onClose={() => setIsOpen(false)}
|
||||
className={cn(
|
||||
'z-50 max-h-60 w-full overflow-auto rounded-md bg-surface-primary p-1 shadow-lg',
|
||||
'animate-in fade-in-0 zoom-in-95',
|
||||
)}
|
||||
>
|
||||
{options.map((option: string | OptionWithIcon, index: number) => (
|
||||
<Ariakit.ComboboxItem
|
||||
key={index}
|
||||
className={cn(
|
||||
'relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none',
|
||||
'cursor-pointer hover:bg-surface-tertiary hover:text-text-primary',
|
||||
'data-[active-item]:bg-surface-tertiary data-[active-item]:text-text-primary',
|
||||
)}
|
||||
value={isOptionObject(option) ? `${option.value ?? ''}` : option}
|
||||
>
|
||||
{isOptionObject(option) && option.icon != null && (
|
||||
<span className="mr-2 flex-shrink-0">{option.icon}</span>
|
||||
)}
|
||||
{isOptionObject(option) ? option.label : option}
|
||||
</Ariakit.ComboboxItem>
|
||||
))}
|
||||
</Ariakit.ComboboxPopover>
|
||||
</Ariakit.ComboboxProvider>
|
||||
);
|
||||
};
|
||||
45
packages/client/src/components/InputNumber.tsx
Normal file
45
packages/client/src/components/InputNumber.tsx
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
import * as React from 'react';
|
||||
|
||||
// import { NumericFormat } from 'react-number-format';
|
||||
|
||||
import RCInputNumber from 'rc-input-number';
|
||||
import * as InputNumberPrimitive from 'rc-input-number';
|
||||
import { cn } from '~/utils';
|
||||
|
||||
// TODO help needed
|
||||
// React.ElementRef<typeof LabelPrimitive.Root>,
|
||||
// React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root>
|
||||
|
||||
const InputNumber = React.forwardRef<
|
||||
React.ElementRef<typeof RCInputNumber>,
|
||||
InputNumberPrimitive.InputNumberProps
|
||||
>(({ className, ...props }, ref) => {
|
||||
return (
|
||||
<RCInputNumber
|
||||
className={cn(
|
||||
'flex max-h-5 w-full rounded-md border border-gray-300 bg-transparent px-3 py-2 text-sm placeholder:text-gray-400 focus:outline-none disabled:cursor-not-allowed disabled:opacity-50 dark:border-gray-700 dark:text-gray-50',
|
||||
className ?? '',
|
||||
)}
|
||||
ref={ref}
|
||||
{...props}
|
||||
/>
|
||||
);
|
||||
});
|
||||
InputNumber.displayName = 'Input';
|
||||
|
||||
// console.log(_InputNumber);
|
||||
|
||||
// const InputNumber = React.forwardRef(({ className, ...props }, ref) => {
|
||||
// return (
|
||||
// <NumericFormat
|
||||
// className={cn(
|
||||
// 'flex h-10 w-full rounded-md border border-gray-300 bg-transparent py-2 px-3 text-sm placeholder:text-gray-400 focus:outline-none focus:ring-2 focus:ring-gray-400 focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 dark:border-gray-700 dark:text-gray-50 dark:focus:ring-gray-400 dark:focus:ring-offset-gray-900',
|
||||
// className
|
||||
// )}
|
||||
// ref={ref}
|
||||
// {...props}
|
||||
// />
|
||||
// );
|
||||
// });
|
||||
|
||||
export { InputNumber };
|
||||
68
packages/client/src/components/InputOTP.tsx
Normal file
68
packages/client/src/components/InputOTP.tsx
Normal file
|
|
@ -0,0 +1,68 @@
|
|||
import * as React from 'react';
|
||||
import { OTPInput, OTPInputContext } from 'input-otp';
|
||||
import { Minus } from 'lucide-react';
|
||||
import { cn } from '~/utils';
|
||||
|
||||
const InputOTP = React.forwardRef<
|
||||
React.ElementRef<typeof OTPInput>,
|
||||
React.ComponentPropsWithoutRef<typeof OTPInput>
|
||||
>(({ className, containerClassName, ...props }, ref) => (
|
||||
<OTPInput
|
||||
ref={ref}
|
||||
containerClassName={cn(
|
||||
'flex items-center gap-2 has-[:disabled]:opacity-50',
|
||||
containerClassName,
|
||||
)}
|
||||
className={cn('disabled:cursor-not-allowed', className)}
|
||||
{...props}
|
||||
/>
|
||||
));
|
||||
InputOTP.displayName = 'InputOTP';
|
||||
|
||||
const InputOTPGroup = React.forwardRef<
|
||||
React.ElementRef<'div'>,
|
||||
React.ComponentPropsWithoutRef<'div'>
|
||||
>(({ className, ...props }, ref) => (
|
||||
<div ref={ref} className={cn('flex items-center', className)} {...props} />
|
||||
));
|
||||
InputOTPGroup.displayName = 'InputOTPGroup';
|
||||
|
||||
const InputOTPSlot = React.forwardRef<
|
||||
React.ElementRef<'div'>,
|
||||
React.ComponentPropsWithoutRef<'div'> & { index: number }
|
||||
>(({ index, className, ...props }, ref) => {
|
||||
const inputOTPContext = React.useContext(OTPInputContext);
|
||||
const { char, hasFakeCaret, isActive } = inputOTPContext.slots[index];
|
||||
|
||||
return (
|
||||
<div
|
||||
ref={ref}
|
||||
className={cn(
|
||||
'text-md relative flex h-11 w-11 items-center justify-center border-y border-r border-input shadow-sm transition-all first:rounded-l-xl first:border-l last:rounded-r-xl',
|
||||
isActive && 'z-10 ring-1 ring-ring',
|
||||
className,
|
||||
)}
|
||||
{...props}
|
||||
>
|
||||
{char}
|
||||
{hasFakeCaret && (
|
||||
<div className="pointer-events-none absolute inset-0 flex items-center justify-center">
|
||||
<div className="animate-caret-blink h-4 w-px bg-foreground duration-1000" />
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
);
|
||||
});
|
||||
InputOTPSlot.displayName = 'InputOTPSlot';
|
||||
|
||||
const InputOTPSeparator = React.forwardRef<
|
||||
React.ElementRef<'div'>,
|
||||
React.ComponentPropsWithoutRef<'div'>
|
||||
>(({ ...props }, ref) => (
|
||||
<div ref={ref} role="separator" {...props}>
|
||||
<Minus />
|
||||
</div>
|
||||
));
|
||||
InputOTPSeparator.displayName = 'InputOTPSeparator';
|
||||
|
||||
export { InputOTP, InputOTPGroup, InputOTPSlot, InputOTPSeparator };
|
||||
154
packages/client/src/components/InputWithDropDown.tsx
Normal file
154
packages/client/src/components/InputWithDropDown.tsx
Normal file
|
|
@ -0,0 +1,154 @@
|
|||
import * as React from 'react';
|
||||
import { Input } from './Input';
|
||||
import { cn } from '~/utils';
|
||||
|
||||
export type InputWithDropdownProps = React.InputHTMLAttributes<HTMLInputElement> & {
|
||||
options: string[];
|
||||
onSelect?: (value: string) => void;
|
||||
};
|
||||
|
||||
const InputWithDropdown = React.forwardRef<HTMLInputElement, InputWithDropdownProps>(
|
||||
({ className, options, onSelect, ...props }, ref) => {
|
||||
const [isOpen, setIsOpen] = React.useState(false);
|
||||
const [inputValue, setInputValue] = React.useState((props.value as string) || '');
|
||||
const [highlightedIndex, setHighlightedIndex] = React.useState(-1);
|
||||
const inputRef = React.useRef<HTMLInputElement>(null);
|
||||
|
||||
const handleSelect = (value: string) => {
|
||||
setInputValue(value);
|
||||
setIsOpen(false);
|
||||
setHighlightedIndex(-1);
|
||||
if (onSelect) {
|
||||
onSelect(value);
|
||||
}
|
||||
if (props.onChange) {
|
||||
props.onChange({ target: { value } } as React.ChangeEvent<HTMLInputElement>);
|
||||
}
|
||||
};
|
||||
|
||||
const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {
|
||||
setInputValue(e.target.value);
|
||||
if (props.onChange) {
|
||||
props.onChange(e);
|
||||
}
|
||||
};
|
||||
|
||||
const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {
|
||||
switch (e.key) {
|
||||
case 'ArrowDown':
|
||||
e.preventDefault();
|
||||
if (!isOpen) {
|
||||
setIsOpen(true);
|
||||
} else {
|
||||
setHighlightedIndex((prevIndex) =>
|
||||
prevIndex < options.length - 1 ? prevIndex + 1 : prevIndex,
|
||||
);
|
||||
}
|
||||
break;
|
||||
case 'ArrowUp':
|
||||
e.preventDefault();
|
||||
setHighlightedIndex((prevIndex) => (prevIndex > 0 ? prevIndex - 1 : 0));
|
||||
break;
|
||||
case 'Enter':
|
||||
e.preventDefault();
|
||||
if (isOpen && highlightedIndex !== -1) {
|
||||
handleSelect(options[highlightedIndex]);
|
||||
}
|
||||
setIsOpen(false);
|
||||
break;
|
||||
case 'Escape':
|
||||
setIsOpen(false);
|
||||
setHighlightedIndex(-1);
|
||||
break;
|
||||
}
|
||||
};
|
||||
|
||||
React.useEffect(() => {
|
||||
const handleClickOutside = (event: MouseEvent) => {
|
||||
if (inputRef.current && !inputRef.current.contains(event.target as Node)) {
|
||||
setIsOpen(false);
|
||||
setHighlightedIndex(-1);
|
||||
}
|
||||
};
|
||||
|
||||
document.addEventListener('mousedown', handleClickOutside);
|
||||
return () => {
|
||||
document.removeEventListener('mousedown', handleClickOutside);
|
||||
};
|
||||
}, []);
|
||||
|
||||
return (
|
||||
<div className="relative" ref={inputRef}>
|
||||
<div className="relative">
|
||||
<Input
|
||||
{...props}
|
||||
value={inputValue}
|
||||
onChange={handleInputChange}
|
||||
onKeyDown={handleKeyDown}
|
||||
aria-haspopup="listbox"
|
||||
aria-controls="dropdown-list"
|
||||
className={cn('bg-surface-secondary', className ?? '')}
|
||||
ref={ref}
|
||||
/>
|
||||
<button
|
||||
type="button"
|
||||
className="text-tertiary absolute inset-y-0 right-0 flex items-center rounded-md px-2 hover:text-secondary focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring-primary"
|
||||
onClick={() => setIsOpen(!isOpen)}
|
||||
aria-label={isOpen ? 'Close dropdown' : 'Open dropdown'}
|
||||
>
|
||||
<svg
|
||||
className="h-5 w-5"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
viewBox="0 0 24 24"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
>
|
||||
<path
|
||||
strokeLinecap="round"
|
||||
strokeLinejoin="round"
|
||||
strokeWidth={2}
|
||||
d="M19 9l-7 7-7-7"
|
||||
/>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
{isOpen && (
|
||||
<ul
|
||||
id="dropdown-list"
|
||||
role="listbox"
|
||||
className="absolute z-10 mt-1 max-h-60 w-full overflow-auto rounded-md border border-border-medium bg-surface-secondary shadow-lg focus:ring-1 focus:ring-inset focus:ring-ring-primary"
|
||||
>
|
||||
{options.map((option, index) => (
|
||||
<li
|
||||
key={index}
|
||||
role="option"
|
||||
aria-selected={index === highlightedIndex}
|
||||
className={cn(
|
||||
'cursor-pointer rounded-md px-3 py-2',
|
||||
'focus:bg-surface-tertiary focus:outline-none focus:ring-1 focus:ring-inset focus:ring-ring-primary',
|
||||
index === highlightedIndex
|
||||
? 'bg-surface-active text-primary'
|
||||
: 'text-secondary hover:bg-surface-tertiary',
|
||||
)}
|
||||
onClick={() => handleSelect(option)}
|
||||
onKeyDown={(e) => {
|
||||
if (e.key === 'Enter' || e.key === ' ') {
|
||||
e.preventDefault();
|
||||
handleSelect(option);
|
||||
}
|
||||
}}
|
||||
tabIndex={0}
|
||||
>
|
||||
{option}
|
||||
</li>
|
||||
))}
|
||||
</ul>
|
||||
)}
|
||||
</div>
|
||||
);
|
||||
},
|
||||
);
|
||||
|
||||
InputWithDropdown.displayName = 'InputWithDropdown';
|
||||
|
||||
export default InputWithDropdown;
|
||||
20
packages/client/src/components/Label.tsx
Normal file
20
packages/client/src/components/Label.tsx
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
import * as React from 'react';
|
||||
import * as LabelPrimitive from '@radix-ui/react-label';
|
||||
import { cn } from '~/utils';
|
||||
|
||||
const Label = React.forwardRef<
|
||||
React.ElementRef<typeof LabelPrimitive.Root>,
|
||||
React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root>
|
||||
>(({ className = '', ...props }, ref) => (
|
||||
<LabelPrimitive.Root
|
||||
ref={ref}
|
||||
className={cn(
|
||||
'block w-full break-all text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70 dark:text-gray-200',
|
||||
className,
|
||||
)}
|
||||
{...props}
|
||||
/>
|
||||
));
|
||||
Label.displayName = LabelPrimitive.Root.displayName;
|
||||
|
||||
export { Label };
|
||||
186
packages/client/src/components/ModelParameters.tsx
Normal file
186
packages/client/src/components/ModelParameters.tsx
Normal file
|
|
@ -0,0 +1,186 @@
|
|||
import React, { useState, useCallback, useRef, useEffect } from 'react';
|
||||
import { TranslationKeys, useLocalize } from '~/hooks';
|
||||
import { Minus, Plus } from 'lucide-react';
|
||||
|
||||
interface ModelParametersProps {
|
||||
label?: string;
|
||||
ariaLabel?: string;
|
||||
min?: number;
|
||||
max?: number;
|
||||
step?: number;
|
||||
stepClick?: number;
|
||||
initialValue?: number;
|
||||
showButtons?: boolean;
|
||||
onChange?: (value: number) => void;
|
||||
disabled?: boolean;
|
||||
}
|
||||
|
||||
const ModelParameters: React.FC<ModelParametersProps> = ({
|
||||
label = 'Value',
|
||||
ariaLabel = 'Value',
|
||||
min = 0,
|
||||
max = 100,
|
||||
step = 1,
|
||||
stepClick = 1,
|
||||
initialValue = 0,
|
||||
showButtons = true,
|
||||
onChange,
|
||||
disabled = false,
|
||||
}) => {
|
||||
const localize = useLocalize();
|
||||
const [value, setValue] = useState(initialValue);
|
||||
const [isHovering, setIsHovering] = useState(false);
|
||||
const rangeRef = useRef<HTMLInputElement>(null);
|
||||
|
||||
const id = `model-parameter-${ariaLabel.toLowerCase().replace(/\s+/g, '-')}`;
|
||||
const displayLabel =
|
||||
label && label.startsWith('com_') ? localize(label as TranslationKeys) : label;
|
||||
|
||||
const getDecimalPlaces = (num: number) => {
|
||||
const match = ('' + num).match(/(?:\.(\d+))?(?:[eE]([+-]?\d+))?$/);
|
||||
if (!match) {
|
||||
return 0;
|
||||
}
|
||||
return Math.max(0, (match[1] ? match[1].length : 0) - (match[2] ? +match[2] : 0));
|
||||
};
|
||||
|
||||
const decimalPlaces = getDecimalPlaces(step);
|
||||
|
||||
const handleChange = useCallback(
|
||||
(newValue: number) => {
|
||||
const clampedValue = Math.min(Math.max(newValue, min), max);
|
||||
const finalValue = Object.is(clampedValue, -0) ? 0 : clampedValue;
|
||||
setValue(finalValue);
|
||||
onChange?.(finalValue);
|
||||
},
|
||||
[min, max, onChange],
|
||||
);
|
||||
|
||||
const handleInputChange = useCallback(
|
||||
(e: React.ChangeEvent<HTMLInputElement>) => {
|
||||
handleChange(parseFloat(e.target.value));
|
||||
},
|
||||
[handleChange],
|
||||
);
|
||||
|
||||
const handleIncrement = useCallback(() => {
|
||||
handleChange(value + stepClick);
|
||||
}, [value, stepClick, handleChange]);
|
||||
|
||||
const handleDecrement = useCallback(() => {
|
||||
handleChange(value - stepClick);
|
||||
}, [value, stepClick, handleChange]);
|
||||
|
||||
const handleKeyDown = useCallback(
|
||||
(e: React.KeyboardEvent<HTMLInputElement>) => {
|
||||
if (e.key === 'ArrowRight' || e.key === 'ArrowUp') {
|
||||
e.preventDefault();
|
||||
handleIncrement();
|
||||
} else if (e.key === 'ArrowLeft' || e.key === 'ArrowDown') {
|
||||
e.preventDefault();
|
||||
handleDecrement();
|
||||
}
|
||||
},
|
||||
[handleIncrement, handleDecrement],
|
||||
);
|
||||
|
||||
useEffect(() => {
|
||||
const rangeElement = rangeRef.current;
|
||||
if (rangeElement) {
|
||||
const percentage = ((value - min) / (max - min)) * 100;
|
||||
rangeElement.style.backgroundSize = `${percentage}% 100%`;
|
||||
}
|
||||
}, [value, min, max]);
|
||||
|
||||
return (
|
||||
<div className="w-full">
|
||||
<div className="mb-2 flex items-center justify-between">
|
||||
<label
|
||||
htmlFor={id}
|
||||
className={`text-sm font-medium ${disabled ? 'text-gray-400 dark:text-gray-400' : ''}`}
|
||||
>
|
||||
{displayLabel}
|
||||
</label>
|
||||
<div className="flex items-center gap-2">
|
||||
<output
|
||||
htmlFor={id}
|
||||
className={`select-none text-sm font-medium ${
|
||||
disabled ? 'text-gray-400 dark:text-gray-400' : ''
|
||||
}`}
|
||||
aria-live="polite"
|
||||
>
|
||||
{value.toFixed(decimalPlaces).replace('-0.00', '0.00')}
|
||||
</output>
|
||||
{showButtons && (
|
||||
<div className="flex items-center gap-1">
|
||||
<button
|
||||
type="button"
|
||||
onClick={handleDecrement}
|
||||
className={`rounded-md p-1 transition-colors ${
|
||||
disabled
|
||||
? 'cursor-not-allowed text-gray-400 dark:text-gray-400'
|
||||
: 'hover:bg-gray-200 dark:hover:bg-gray-700'
|
||||
}`}
|
||||
aria-label={`Decrease ${label}`}
|
||||
disabled={disabled}
|
||||
>
|
||||
<Minus size={16} />
|
||||
</button>
|
||||
<button
|
||||
type="button"
|
||||
onClick={handleIncrement}
|
||||
className={`rounded-md p-1 transition-colors ${
|
||||
disabled
|
||||
? 'cursor-not-allowed text-gray-400 dark:text-gray-400'
|
||||
: 'hover:bg-gray-200 dark:hover:bg-gray-700'
|
||||
}`}
|
||||
aria-label={`Increase ${label}`}
|
||||
disabled={disabled}
|
||||
>
|
||||
<Plus size={16} />
|
||||
</button>
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
<div className="relative w-full">
|
||||
<input
|
||||
ref={rangeRef}
|
||||
type="range"
|
||||
id={id}
|
||||
min={min}
|
||||
max={max}
|
||||
step={step}
|
||||
value={value}
|
||||
onChange={handleInputChange}
|
||||
onKeyDown={handleKeyDown}
|
||||
onMouseEnter={() => setIsHovering(true)}
|
||||
onMouseLeave={() => setIsHovering(false)}
|
||||
className={`slider-thumb h-2 w-full appearance-none rounded-lg bg-gradient-to-r from-gray-500 to-gray-500 bg-no-repeat focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 ${
|
||||
disabled ? 'cursor-not-allowed opacity-50' : 'cursor-pointer'
|
||||
}`}
|
||||
tabIndex={0}
|
||||
style={{
|
||||
backgroundSize: '50% 100%',
|
||||
backgroundPosition: 'left',
|
||||
}}
|
||||
aria-valuemin={min}
|
||||
aria-valuemax={max}
|
||||
aria-valuenow={value}
|
||||
aria-valuetext={`${value.toFixed(decimalPlaces).replace('-0.00', '0.00')}`}
|
||||
disabled={disabled}
|
||||
/>
|
||||
{isHovering ? (
|
||||
<div className="trab mt-1 flex justify-between">
|
||||
<span className="text-xs text-gray-500">{min}</span>
|
||||
<span className="text-xs text-gray-500">{max}</span>
|
||||
</div>
|
||||
) : (
|
||||
<div className="mt-1" style={{ height: '1rem' }}></div>
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
export default React.memo(ModelParameters);
|
||||
157
packages/client/src/components/MultiSearch.tsx
Normal file
157
packages/client/src/components/MultiSearch.tsx
Normal file
|
|
@ -0,0 +1,157 @@
|
|||
import { Search, X } from 'lucide-react';
|
||||
import React, { useState, useMemo, useCallback, useRef } from 'react';
|
||||
import { useLocalize } from '~/hooks';
|
||||
import { cn } from '~/utils';
|
||||
|
||||
/** This is a generic that can be added to Menu and Select components */
|
||||
export default function MultiSearch({
|
||||
value,
|
||||
onChange,
|
||||
placeholder,
|
||||
className = '',
|
||||
}: {
|
||||
value: string | null;
|
||||
onChange: (filter: string) => void;
|
||||
placeholder?: string;
|
||||
className?: string;
|
||||
}) {
|
||||
const localize = useLocalize();
|
||||
const inputRef = useRef<HTMLInputElement>(null);
|
||||
|
||||
const onChangeHandler: React.ChangeEventHandler<HTMLInputElement> = useCallback(
|
||||
(e) => onChange(e.target.value),
|
||||
[onChange],
|
||||
);
|
||||
|
||||
const clearSearch = () => {
|
||||
onChange('');
|
||||
setTimeout(() => {
|
||||
inputRef.current?.focus();
|
||||
}, 0);
|
||||
};
|
||||
|
||||
return (
|
||||
<div
|
||||
className={cn(
|
||||
'focus:to-surface-primary/50 group sticky left-0 top-0 z-10 flex h-12 items-center gap-2 bg-gradient-to-b from-surface-tertiary-alt from-65% to-transparent px-3 py-2 text-text-primary transition-colors duration-300 focus:bg-gradient-to-b focus:from-surface-primary',
|
||||
className,
|
||||
)}
|
||||
>
|
||||
<Search
|
||||
className="h-4 w-4 text-text-secondary-alt transition-colors duration-300"
|
||||
aria-hidden={'true'}
|
||||
/>
|
||||
<input
|
||||
ref={inputRef}
|
||||
type="text"
|
||||
value={value ?? ''}
|
||||
onChange={onChangeHandler}
|
||||
placeholder={placeholder ?? localize('com_ui_select_search_model')}
|
||||
aria-label="Search Model"
|
||||
className="flex-1 rounded-md border-none bg-transparent px-2.5 py-2 text-sm placeholder-text-secondary focus:outline-none focus:ring-1 focus:ring-ring-primary"
|
||||
/>
|
||||
<button
|
||||
className={cn(
|
||||
'relative flex h-5 w-5 items-center justify-end rounded-md text-text-secondary-alt',
|
||||
(value?.length ?? 0) ? 'cursor-pointer opacity-100' : 'hidden',
|
||||
)}
|
||||
aria-label={'Clear search'}
|
||||
onClick={clearSearch}
|
||||
tabIndex={0}
|
||||
>
|
||||
<X
|
||||
aria-hidden={'true'}
|
||||
className={cn(
|
||||
'text-text-secondary-alt',
|
||||
(value?.length ?? 0) ? 'cursor-pointer opacity-100' : 'opacity-0',
|
||||
)}
|
||||
/>
|
||||
</button>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Helper function that will take a multiSearch input
|
||||
* @param node
|
||||
*/
|
||||
function defaultGetStringKey(node: unknown): string {
|
||||
if (typeof node === 'string') {
|
||||
// BUGFIX: Detect psedeo separators and make sure they don't appear in the list when filtering items
|
||||
// it makes sure (for the most part) that the model name starts and ends with dashes
|
||||
// The long-term fix here would be to enable seperators (model groupings) but there's no
|
||||
// feature mocks for such a thing yet
|
||||
if (node.startsWith('---') && node.endsWith('---')) {
|
||||
return '';
|
||||
}
|
||||
|
||||
return node.toUpperCase();
|
||||
}
|
||||
// This should be a noop, but it's here for redundancy
|
||||
return '';
|
||||
}
|
||||
|
||||
/**
|
||||
* Hook for conditionally making a multi-element list component into a sortable component
|
||||
* Returns a RenderNode for search input when search functionality is available
|
||||
* @param availableOptions
|
||||
* @param placeholder
|
||||
* @param getTextKeyOverride
|
||||
* @param className - Additional classnames to add to the search container
|
||||
* @param disabled - If the search should be disabled
|
||||
* @returns
|
||||
*/
|
||||
export function useMultiSearch<OptionsType extends unknown[]>({
|
||||
availableOptions = [] as unknown as OptionsType,
|
||||
placeholder,
|
||||
getTextKeyOverride,
|
||||
className,
|
||||
disabled = false,
|
||||
}: {
|
||||
availableOptions?: OptionsType;
|
||||
placeholder?: string;
|
||||
getTextKeyOverride?: (node: OptionsType[0]) => string;
|
||||
className?: string;
|
||||
disabled?: boolean;
|
||||
}): [OptionsType, React.ReactNode] {
|
||||
const [filterValue, setFilterValue] = useState<string | null>(null);
|
||||
|
||||
// We conditionally show the search when there's more than 10 elements in the menu
|
||||
const shouldShowSearch = availableOptions.length > 10 && !disabled;
|
||||
|
||||
// Define the helper function used to enable search
|
||||
// If this is invalidly described, we will assume developer error - tf. avoid rendering
|
||||
const getTextKeyHelper = getTextKeyOverride || defaultGetStringKey;
|
||||
|
||||
// Iterate said options
|
||||
const filteredOptions = useMemo(() => {
|
||||
const currentFilter = filterValue ?? '';
|
||||
if (!shouldShowSearch || !currentFilter || !availableOptions.length) {
|
||||
// Don't render if available options aren't present, there's no filter active
|
||||
return availableOptions;
|
||||
}
|
||||
// Filter through the values, using a simple text-based search
|
||||
// nothing too fancy, but we can add a better search algo later if we need
|
||||
const upperFilterValue = currentFilter.toUpperCase();
|
||||
|
||||
return availableOptions.filter((value) =>
|
||||
getTextKeyHelper(value).includes(upperFilterValue),
|
||||
) as OptionsType;
|
||||
}, [availableOptions, getTextKeyHelper, filterValue, shouldShowSearch]);
|
||||
|
||||
const onSearchChange = useCallback(
|
||||
(nextFilterValue: string) => setFilterValue(nextFilterValue),
|
||||
[],
|
||||
);
|
||||
|
||||
const searchRender = shouldShowSearch ? (
|
||||
<MultiSearch
|
||||
value={filterValue}
|
||||
className={className}
|
||||
onChange={onSearchChange}
|
||||
placeholder={placeholder}
|
||||
/>
|
||||
) : null;
|
||||
|
||||
return [filteredOptions, searchRender];
|
||||
}
|
||||
144
packages/client/src/components/MultiSelect.tsx
Normal file
144
packages/client/src/components/MultiSelect.tsx
Normal file
|
|
@ -0,0 +1,144 @@
|
|||
import React, { useRef } from 'react';
|
||||
import {
|
||||
Select,
|
||||
SelectArrow,
|
||||
SelectItem,
|
||||
SelectItemCheck,
|
||||
SelectLabel,
|
||||
SelectPopover,
|
||||
SelectProvider,
|
||||
} from '@ariakit/react';
|
||||
import { cn } from '~/utils';
|
||||
|
||||
interface MultiSelectProps<T extends string> {
|
||||
items: T[];
|
||||
label?: string;
|
||||
placeholder?: string;
|
||||
defaultSelectedValues?: T[];
|
||||
onSelectedValuesChange?: (values: T[]) => void;
|
||||
renderSelectedValues?: (values: T[], placeholder?: string) => React.ReactNode;
|
||||
className?: string;
|
||||
itemClassName?: string;
|
||||
labelClassName?: string;
|
||||
selectClassName?: string;
|
||||
selectIcon?: React.ReactNode;
|
||||
popoverClassName?: string;
|
||||
selectItemsClassName?: string;
|
||||
selectedValues: T[];
|
||||
setSelectedValues: (values: T[]) => void;
|
||||
renderItemContent?: (
|
||||
value: T,
|
||||
defaultContent: React.ReactNode,
|
||||
isSelected: boolean,
|
||||
) => React.ReactNode;
|
||||
}
|
||||
|
||||
function defaultRender<T extends string>(values: T[], placeholder?: string) {
|
||||
if (values.length === 0) {
|
||||
return placeholder || 'Select...';
|
||||
}
|
||||
if (values.length === 1) {
|
||||
return values[0];
|
||||
}
|
||||
return `${values.length} items selected`;
|
||||
}
|
||||
|
||||
export default function MultiSelect<T extends string>({
|
||||
items,
|
||||
label,
|
||||
placeholder = 'Select...',
|
||||
defaultSelectedValues = [],
|
||||
onSelectedValuesChange,
|
||||
renderSelectedValues = defaultRender,
|
||||
className,
|
||||
selectIcon,
|
||||
itemClassName,
|
||||
labelClassName,
|
||||
selectClassName,
|
||||
popoverClassName,
|
||||
selectItemsClassName,
|
||||
selectedValues = [],
|
||||
setSelectedValues,
|
||||
renderItemContent,
|
||||
}: MultiSelectProps<T>) {
|
||||
const selectRef = useRef<HTMLButtonElement>(null);
|
||||
|
||||
const handleValueChange = (values: T[]) => {
|
||||
setSelectedValues(values);
|
||||
if (onSelectedValuesChange) {
|
||||
onSelectedValuesChange(values);
|
||||
}
|
||||
};
|
||||
|
||||
return (
|
||||
<div className={className}>
|
||||
<SelectProvider value={selectedValues} setValue={handleValueChange}>
|
||||
{label && (
|
||||
<SelectLabel className={cn('mb-1 block text-sm text-text-primary', labelClassName)}>
|
||||
{label}
|
||||
</SelectLabel>
|
||||
)}
|
||||
<Select
|
||||
ref={selectRef}
|
||||
className={cn(
|
||||
'flex items-center justify-between gap-2 rounded-xl px-3 py-2 text-sm',
|
||||
'bg-surface-tertiary text-text-primary shadow-sm hover:cursor-pointer hover:bg-surface-hover',
|
||||
'outline-none focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-white focus-visible:ring-opacity-75',
|
||||
selectClassName,
|
||||
selectedValues.length > 0 && selectItemsClassName != null && selectItemsClassName,
|
||||
)}
|
||||
onChange={(e) => e.stopPropagation()}
|
||||
>
|
||||
{selectIcon && selectIcon}
|
||||
<span className="mr-auto hidden truncate md:block">
|
||||
{renderSelectedValues(selectedValues, placeholder)}
|
||||
</span>
|
||||
<SelectArrow className="ml-1 hidden stroke-1 text-base opacity-75 md:block" />
|
||||
</Select>
|
||||
<SelectPopover
|
||||
gutter={4}
|
||||
sameWidth
|
||||
modal
|
||||
unmountOnHide
|
||||
finalFocus={selectRef}
|
||||
className={cn(
|
||||
'animate-popover z-50 flex max-h-[300px]',
|
||||
'flex-col overflow-auto overscroll-contain rounded-xl',
|
||||
'bg-surface-secondary px-1.5 py-1 text-text-primary shadow-lg',
|
||||
'border border-border-light',
|
||||
'outline-none',
|
||||
popoverClassName,
|
||||
)}
|
||||
>
|
||||
{items.map((value) => {
|
||||
const defaultContent = (
|
||||
<>
|
||||
<SelectItemCheck className="mr-0.5 text-primary" />
|
||||
<span className="truncate">{value}</span>
|
||||
</>
|
||||
);
|
||||
const isCurrentItemSelected = selectedValues.includes(value);
|
||||
return (
|
||||
<SelectItem
|
||||
key={value}
|
||||
value={value}
|
||||
className={cn(
|
||||
'flex items-center gap-2 rounded-lg px-2 py-1.5 hover:cursor-pointer',
|
||||
'scroll-m-1 outline-none transition-colors',
|
||||
'hover:bg-black/[0.075] dark:hover:bg-white/10',
|
||||
'data-[active-item]:bg-black/[0.075] dark:data-[active-item]:bg-white/10',
|
||||
'w-full min-w-0 text-sm',
|
||||
itemClassName,
|
||||
)}
|
||||
>
|
||||
{renderItemContent
|
||||
? renderItemContent(value, defaultContent, isCurrentItemSelected)
|
||||
: defaultContent}
|
||||
</SelectItem>
|
||||
);
|
||||
})}
|
||||
</SelectPopover>
|
||||
</SelectProvider>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
231
packages/client/src/components/MultiSelectDropDown.tsx
Normal file
231
packages/client/src/components/MultiSelectDropDown.tsx
Normal file
|
|
@ -0,0 +1,231 @@
|
|||
import React, { useState, useRef } from 'react';
|
||||
import { Wrench, ArrowRight } from 'lucide-react';
|
||||
import {
|
||||
Listbox,
|
||||
ListboxButton,
|
||||
Label,
|
||||
ListboxOptions,
|
||||
ListboxOption,
|
||||
Transition,
|
||||
} from '@headlessui/react';
|
||||
import type { TPlugin } from 'librechat-data-provider';
|
||||
import { useMultiSearch } from './MultiSearch';
|
||||
import { useOnClickOutside } from '~/hooks';
|
||||
import { CheckMark } from '~/svgs';
|
||||
import { cn } from '~/utils/';
|
||||
|
||||
export type TMultiSelectDropDownProps = {
|
||||
title?: string;
|
||||
value: Array<{ icon?: string; name?: string; isButton?: boolean }>;
|
||||
disabled?: boolean;
|
||||
setSelected: (option: string) => void;
|
||||
availableValues: TPlugin[];
|
||||
showAbove?: boolean;
|
||||
showLabel?: boolean;
|
||||
containerClassName?: string;
|
||||
optionsClassName?: string;
|
||||
labelClassName?: string;
|
||||
isSelected: (value: string) => boolean;
|
||||
className?: string;
|
||||
searchPlaceholder?: string;
|
||||
optionValueKey?: string;
|
||||
};
|
||||
|
||||
function MultiSelectDropDown({
|
||||
title = 'Plugins',
|
||||
value,
|
||||
disabled,
|
||||
setSelected,
|
||||
availableValues,
|
||||
showAbove = false,
|
||||
showLabel = true,
|
||||
containerClassName,
|
||||
optionsClassName = '',
|
||||
labelClassName = '',
|
||||
isSelected,
|
||||
className,
|
||||
searchPlaceholder,
|
||||
optionValueKey = 'value',
|
||||
}: TMultiSelectDropDownProps) {
|
||||
const [isOpen, setIsOpen] = useState(false);
|
||||
const menuRef = useRef(null);
|
||||
const excludeIds = ['select-plugin', 'plugins-label', 'selected-plugins'];
|
||||
useOnClickOutside(menuRef, () => setIsOpen(false), excludeIds);
|
||||
|
||||
const handleSelect: (value: string) => void = (option) => {
|
||||
setSelected(option);
|
||||
setIsOpen(true);
|
||||
};
|
||||
|
||||
// input will appear near the top of the menu, allowing correct filtering of different model menu items. This will
|
||||
// reset once the component is unmounted (as per a normal search)
|
||||
const [filteredValues, searchRender] = useMultiSearch<TPlugin[]>({
|
||||
availableOptions: availableValues,
|
||||
placeholder: searchPlaceholder,
|
||||
getTextKeyOverride: (option) => (option.name || '').toUpperCase(),
|
||||
});
|
||||
|
||||
const hasSearchRender = Boolean(searchRender);
|
||||
const options = hasSearchRender ? filteredValues : availableValues;
|
||||
|
||||
const transitionProps = { className: 'top-full mt-3' };
|
||||
if (showAbove) {
|
||||
transitionProps.className = 'bottom-full mb-3';
|
||||
}
|
||||
const openProps = { open: isOpen };
|
||||
return (
|
||||
<div className={cn('flex items-center justify-center gap-2', containerClassName ?? '')}>
|
||||
<div className="relative w-full">
|
||||
{/* the function typing is correct but there's still an issue here */}
|
||||
{/* @ts-ignore */}
|
||||
<Listbox value={value} onChange={handleSelect} disabled={disabled}>
|
||||
{() => (
|
||||
<>
|
||||
<ListboxButton
|
||||
className={cn(
|
||||
'relative flex w-full cursor-default flex-col rounded-md border border-black/10 bg-white py-2 pl-3 pr-10 text-left focus:outline-none focus:ring-0 focus:ring-offset-0 dark:border-gray-600 dark:border-white/20 dark:bg-gray-800 sm:text-sm',
|
||||
className ?? '',
|
||||
)}
|
||||
id={excludeIds[0]}
|
||||
onClick={() => setIsOpen((prev) => !prev)}
|
||||
{...openProps}
|
||||
>
|
||||
{' '}
|
||||
{showLabel && (
|
||||
<Label
|
||||
className={cn('block text-xs text-gray-700 dark:text-gray-500', labelClassName)}
|
||||
id={excludeIds[1]}
|
||||
data-headlessui-state=""
|
||||
>
|
||||
{title}
|
||||
</Label>
|
||||
)}
|
||||
<span className="inline-flex w-full truncate" id={excludeIds[2]}>
|
||||
<span
|
||||
className={cn(
|
||||
'flex h-6 items-center gap-1 truncate text-sm text-gray-800 dark:text-white',
|
||||
!showLabel ? 'text-xs' : '',
|
||||
)}
|
||||
>
|
||||
{!showLabel && title.length > 0 && (
|
||||
<span className="text-xs text-gray-700 dark:text-gray-500">{title}:</span>
|
||||
)}
|
||||
<span className="flex h-6 items-center gap-1 truncate">
|
||||
<div className="flex gap-1">
|
||||
{value.map((v, i) => (
|
||||
<div
|
||||
key={i}
|
||||
className="relative"
|
||||
style={{ width: '16px', height: '16px' }}
|
||||
>
|
||||
{v.icon ? (
|
||||
<img
|
||||
src={v.icon}
|
||||
alt={`${v} logo`}
|
||||
className="h-full w-full rounded-sm bg-white"
|
||||
/>
|
||||
) : (
|
||||
<Wrench className="h-full w-full rounded-sm bg-white" />
|
||||
)}
|
||||
<div className="absolute inset-0 rounded-sm ring-1 ring-inset ring-black/10" />
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
</span>
|
||||
</span>
|
||||
</span>
|
||||
<span className="pointer-events-none absolute inset-y-0 right-0 flex items-center pr-2">
|
||||
<svg
|
||||
stroke="currentColor"
|
||||
fill="none"
|
||||
strokeWidth="2"
|
||||
viewBox="0 0 24 24"
|
||||
strokeLinecap="round"
|
||||
strokeLinejoin="round"
|
||||
className="h-4 w-4 text-gray-400"
|
||||
height="1em"
|
||||
width="1em"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
style={showAbove ? { transform: 'scaleY(-1)' } : {}}
|
||||
>
|
||||
<polyline points="6 9 12 15 18 9"></polyline>
|
||||
</svg>
|
||||
</span>
|
||||
</ListboxButton>
|
||||
<Transition
|
||||
show={isOpen}
|
||||
as={React.Fragment}
|
||||
leave="transition ease-in duration-150"
|
||||
leaveFrom="opacity-100"
|
||||
leaveTo="opacity-0"
|
||||
{...transitionProps}
|
||||
>
|
||||
<ListboxOptions
|
||||
ref={menuRef}
|
||||
className={cn(
|
||||
'absolute z-50 mt-2 max-h-60 w-full overflow-auto rounded bg-white text-base text-xs ring-1 ring-black/10 focus:outline-none dark:bg-gray-800 dark:ring-white/20 dark:last:border-0 md:w-[100%]',
|
||||
optionsClassName,
|
||||
)}
|
||||
>
|
||||
{searchRender}
|
||||
{options.map((option, i: number) => {
|
||||
if (!option) {
|
||||
return null;
|
||||
}
|
||||
const selected = isSelected(option[optionValueKey]);
|
||||
return (
|
||||
<ListboxOption
|
||||
key={i}
|
||||
value={option[optionValueKey]}
|
||||
className="group relative flex h-[42px] cursor-pointer select-none items-center overflow-hidden border-b border-black/10 pl-3 pr-9 text-gray-800 last:border-0 hover:bg-gray-20 dark:border-white/20 dark:text-white dark:hover:bg-gray-700"
|
||||
>
|
||||
<span className="flex items-center gap-1.5 truncate">
|
||||
{!option.isButton && (
|
||||
<span className="h-6 w-6 shrink-0">
|
||||
<div className="relative" style={{ width: '100%', height: '100%' }}>
|
||||
{option.icon ? (
|
||||
<img
|
||||
src={option.icon}
|
||||
alt={`${option.name} logo`}
|
||||
className="h-full w-full rounded-sm bg-white"
|
||||
/>
|
||||
) : (
|
||||
<Wrench className="h-full w-full rounded-sm bg-white" />
|
||||
)}
|
||||
<div className="absolute inset-0 rounded-sm ring-1 ring-inset ring-black/10"></div>
|
||||
</div>
|
||||
</span>
|
||||
)}
|
||||
<span
|
||||
className={cn(
|
||||
'flex h-6 items-center gap-1 text-gray-800 dark:text-gray-200',
|
||||
selected ? 'font-semibold' : '',
|
||||
)}
|
||||
>
|
||||
{option.name}
|
||||
</span>
|
||||
{option.isButton && (
|
||||
<span className="absolute inset-y-0 right-0 flex items-center pr-3 text-gray-800 dark:text-gray-200">
|
||||
<ArrowRight />
|
||||
</span>
|
||||
)}
|
||||
{selected && !option.isButton && (
|
||||
<span className="absolute inset-y-0 right-0 flex items-center pr-3 text-gray-800 dark:text-gray-200">
|
||||
<CheckMark />
|
||||
</span>
|
||||
)}
|
||||
</span>
|
||||
</ListboxOption>
|
||||
);
|
||||
})}
|
||||
</ListboxOptions>
|
||||
</Transition>
|
||||
</>
|
||||
)}
|
||||
</Listbox>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default MultiSelectDropDown;
|
||||
154
packages/client/src/components/MultiSelectPop.tsx
Normal file
154
packages/client/src/components/MultiSelectPop.tsx
Normal file
|
|
@ -0,0 +1,154 @@
|
|||
import { Wrench } from 'lucide-react';
|
||||
import { Root, Trigger, Content, Portal } from '@radix-ui/react-popover';
|
||||
import type { TPlugin } from 'librechat-data-provider';
|
||||
import MenuItem from '~/components/Chat/Menus/UI/MenuItem';
|
||||
import { useMultiSearch } from './MultiSearch';
|
||||
import { cn } from '~/utils/';
|
||||
|
||||
type SelectDropDownProps = {
|
||||
title?: string;
|
||||
value: Array<{ icon?: string; name?: string; isButton?: boolean }>;
|
||||
disabled?: boolean;
|
||||
setSelected: (option: string) => void;
|
||||
availableValues: TPlugin[];
|
||||
showAbove?: boolean;
|
||||
showLabel?: boolean;
|
||||
containerClassName?: string;
|
||||
isSelected: (value: string) => boolean;
|
||||
className?: string;
|
||||
optionValueKey?: string;
|
||||
searchPlaceholder?: string;
|
||||
};
|
||||
|
||||
function MultiSelectPop({
|
||||
title: _title = 'Plugins',
|
||||
value,
|
||||
setSelected,
|
||||
availableValues,
|
||||
showAbove = false,
|
||||
showLabel = true,
|
||||
containerClassName,
|
||||
isSelected,
|
||||
optionValueKey = 'value',
|
||||
searchPlaceholder,
|
||||
}: SelectDropDownProps) {
|
||||
const title = _title;
|
||||
const excludeIds = ['select-plugin', 'plugins-label', 'selected-plugins'];
|
||||
|
||||
// Detemine if we should to convert this component into a searchable select
|
||||
const [filteredValues, searchRender] = useMultiSearch<TPlugin[]>({
|
||||
availableOptions: availableValues,
|
||||
placeholder: searchPlaceholder,
|
||||
getTextKeyOverride: (option) => (option.name || '').toUpperCase(),
|
||||
});
|
||||
const hasSearchRender = Boolean(searchRender);
|
||||
const options = hasSearchRender ? filteredValues : availableValues;
|
||||
|
||||
return (
|
||||
<Root>
|
||||
<div className={cn('flex items-center justify-center gap-2', containerClassName ?? '')}>
|
||||
<div className="relative">
|
||||
<Trigger asChild>
|
||||
<button
|
||||
data-testid="select-dropdown-button"
|
||||
className={cn(
|
||||
'relative flex flex-col rounded-md border border-black/10 bg-white py-2 pl-3 pr-10 text-left focus:outline-none focus:ring-0 focus:ring-offset-0 dark:border-gray-700 dark:bg-gray-800 dark:bg-gray-800 sm:text-sm',
|
||||
'pointer-cursor font-normal',
|
||||
'hover:bg-gray-50 radix-state-open:bg-gray-50 dark:hover:bg-gray-700 dark:radix-state-open:bg-gray-700',
|
||||
)}
|
||||
>
|
||||
{' '}
|
||||
{showLabel && (
|
||||
<label className="block text-xs text-gray-700 dark:text-gray-500 ">{title}</label>
|
||||
)}
|
||||
<span className="inline-flex" id={excludeIds[2]}>
|
||||
<span
|
||||
className={cn(
|
||||
'flex h-6 items-center gap-1 text-sm text-gray-800 dark:text-white',
|
||||
!showLabel ? 'text-xs' : '',
|
||||
)}
|
||||
>
|
||||
{/* {!showLabel && title.length > 0 && (
|
||||
<span className="text-xs text-gray-700 dark:text-gray-500">{title}:</span>
|
||||
)} */}
|
||||
<span className="flex items-center gap-1 ">
|
||||
<div className="flex gap-1">
|
||||
{value.length === 0 && 'None selected'}
|
||||
{value.map((v, i) => (
|
||||
<div key={i} className="relative">
|
||||
{v.icon ? (
|
||||
<img src={v.icon} alt={`${v} logo`} className="icon-lg rounded-sm" />
|
||||
) : (
|
||||
<Wrench className="icon-lg rounded-sm bg-white" />
|
||||
)}
|
||||
<div className="absolute inset-0 rounded-sm ring-1 ring-inset ring-black/10" />
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
</span>
|
||||
</span>
|
||||
</span>
|
||||
<span className="absolute inset-y-0 right-0 flex items-center pr-2">
|
||||
<svg
|
||||
stroke="currentColor"
|
||||
fill="none"
|
||||
strokeWidth="2"
|
||||
viewBox="0 0 24 24"
|
||||
strokeLinecap="round"
|
||||
strokeLinejoin="round"
|
||||
className="h-4 w-4 text-gray-400"
|
||||
height="1em"
|
||||
width="1em"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
style={showAbove ? { transform: 'scaleY(-1)' } : {}}
|
||||
>
|
||||
<polyline points="6 9 12 15 18 9"></polyline>
|
||||
</svg>
|
||||
</span>
|
||||
</button>
|
||||
</Trigger>
|
||||
<Portal>
|
||||
<Content
|
||||
side="bottom"
|
||||
align="center"
|
||||
className={cn(
|
||||
'mt-2 max-h-[52vh] min-w-full overflow-hidden overflow-y-auto rounded-lg border border-gray-200 bg-white shadow-lg dark:border-gray-700 dark:bg-gray-700 dark:text-white',
|
||||
hasSearchRender && 'relative',
|
||||
)}
|
||||
>
|
||||
{searchRender}
|
||||
{options.map((option) => {
|
||||
if (!option) {
|
||||
return null;
|
||||
}
|
||||
const selected = isSelected(option[optionValueKey]);
|
||||
return (
|
||||
<MenuItem
|
||||
key={`${option[optionValueKey]}`}
|
||||
title={option.name}
|
||||
value={option[optionValueKey]}
|
||||
selected={selected}
|
||||
onClick={() => setSelected(option.pluginKey)}
|
||||
icon={
|
||||
option.icon ? (
|
||||
<img
|
||||
src={option.icon}
|
||||
alt={`${option.name} logo`}
|
||||
className="icon-sm mr-1 rounded-sm bg-cover"
|
||||
/>
|
||||
) : (
|
||||
<Wrench className="icon-sm mr-1 rounded-sm bg-white bg-cover dark:bg-gray-800" />
|
||||
)
|
||||
}
|
||||
/>
|
||||
);
|
||||
})}
|
||||
</Content>
|
||||
</Portal>
|
||||
</div>
|
||||
</div>
|
||||
</Root>
|
||||
);
|
||||
}
|
||||
|
||||
export default MultiSelectPop;
|
||||
109
packages/client/src/components/OGDialogTemplate.tsx
Normal file
109
packages/client/src/components/OGDialogTemplate.tsx
Normal file
|
|
@ -0,0 +1,109 @@
|
|||
import { forwardRef, ReactNode, Ref } from 'react';
|
||||
import {
|
||||
OGDialogTitle,
|
||||
OGDialogClose,
|
||||
OGDialogFooter,
|
||||
OGDialogHeader,
|
||||
OGDialogContent,
|
||||
OGDialogDescription,
|
||||
} from './OriginalDialog';
|
||||
import { useLocalize } from '~/hooks';
|
||||
import { Button } from './Button';
|
||||
import { Spinner } from '~/svgs';
|
||||
import { cn } from '~/utils/';
|
||||
|
||||
type SelectionProps = {
|
||||
selectHandler?: () => void;
|
||||
selectClasses?: string;
|
||||
selectText?: string | ReactNode;
|
||||
isLoading?: boolean;
|
||||
};
|
||||
|
||||
type DialogTemplateProps = {
|
||||
title: string;
|
||||
description?: string;
|
||||
main?: ReactNode;
|
||||
buttons?: ReactNode;
|
||||
leftButtons?: ReactNode;
|
||||
selection?: SelectionProps;
|
||||
className?: string;
|
||||
overlayClassName?: string;
|
||||
headerClassName?: string;
|
||||
mainClassName?: string;
|
||||
footerClassName?: string;
|
||||
showCloseButton?: boolean;
|
||||
showCancelButton?: boolean;
|
||||
onClose?: () => void;
|
||||
};
|
||||
|
||||
const OGDialogTemplate = forwardRef((props: DialogTemplateProps, ref: Ref<HTMLDivElement>) => {
|
||||
const localize = useLocalize();
|
||||
const {
|
||||
title,
|
||||
main,
|
||||
buttons,
|
||||
selection,
|
||||
className,
|
||||
leftButtons,
|
||||
description = '',
|
||||
mainClassName,
|
||||
headerClassName,
|
||||
footerClassName,
|
||||
showCloseButton,
|
||||
overlayClassName,
|
||||
showCancelButton = true,
|
||||
} = props;
|
||||
const { selectHandler, selectClasses, selectText, isLoading } = selection || {};
|
||||
|
||||
const defaultSelect =
|
||||
'bg-gray-800 text-white transition-colors hover:bg-gray-700 disabled:cursor-not-allowed disabled:opacity-50 dark:bg-gray-200 dark:text-gray-800 dark:hover:bg-gray-200';
|
||||
return (
|
||||
<OGDialogContent
|
||||
overlayClassName={overlayClassName}
|
||||
showCloseButton={showCloseButton}
|
||||
ref={ref}
|
||||
className={cn('w-11/12 border-none bg-background text-foreground', className ?? '')}
|
||||
onClick={(e) => e.stopPropagation()}
|
||||
>
|
||||
<OGDialogHeader className={cn(headerClassName ?? '')}>
|
||||
<OGDialogTitle>{title}</OGDialogTitle>
|
||||
{description && (
|
||||
<OGDialogDescription className="items-center justify-center">
|
||||
{description}
|
||||
</OGDialogDescription>
|
||||
)}
|
||||
</OGDialogHeader>
|
||||
<div className={cn('px-0 py-2', mainClassName)}>{main != null ? main : null}</div>
|
||||
<OGDialogFooter className={footerClassName}>
|
||||
<div>
|
||||
{leftButtons != null ? (
|
||||
<div className="mt-3 flex h-auto gap-3 max-sm:w-full max-sm:flex-col sm:mt-0 sm:flex-row">
|
||||
{leftButtons}
|
||||
</div>
|
||||
) : null}
|
||||
</div>
|
||||
<div className="flex h-auto gap-3 max-sm:w-full max-sm:flex-col sm:flex-row">
|
||||
{showCancelButton && (
|
||||
<OGDialogClose asChild>
|
||||
<Button variant="outline">{localize('com_ui_cancel')}</Button>
|
||||
</OGDialogClose>
|
||||
)}
|
||||
{buttons != null ? buttons : null}
|
||||
{selection ? (
|
||||
<OGDialogClose
|
||||
onClick={selectHandler}
|
||||
disabled={isLoading}
|
||||
className={`${
|
||||
selectClasses ?? defaultSelect
|
||||
} flex h-10 items-center justify-center rounded-lg border-none px-4 py-2 text-sm disabled:opacity-80 max-sm:order-first max-sm:w-full sm:order-none`}
|
||||
>
|
||||
{isLoading === true ? <Spinner className="size-4 text-white" /> : selectText}
|
||||
</OGDialogClose>
|
||||
) : null}
|
||||
</div>
|
||||
</OGDialogFooter>
|
||||
</OGDialogContent>
|
||||
);
|
||||
});
|
||||
|
||||
export default OGDialogTemplate;
|
||||
141
packages/client/src/components/OriginalDialog.tsx
Normal file
141
packages/client/src/components/OriginalDialog.tsx
Normal file
|
|
@ -0,0 +1,141 @@
|
|||
import * as React from 'react';
|
||||
import * as DialogPrimitive from '@radix-ui/react-dialog';
|
||||
import { X } from 'lucide-react';
|
||||
import { cn } from '~/utils';
|
||||
|
||||
interface OGDialogProps extends DialogPrimitive.DialogProps {
|
||||
triggerRef?: React.RefObject<HTMLButtonElement | HTMLInputElement | null>;
|
||||
triggerRefs?: React.RefObject<HTMLButtonElement | HTMLInputElement | null>[];
|
||||
}
|
||||
|
||||
const Dialog = React.forwardRef<HTMLDivElement, OGDialogProps>(
|
||||
({ children, triggerRef, triggerRefs, onOpenChange, ...props }, _ref) => {
|
||||
const handleOpenChange = (open: boolean) => {
|
||||
if (!open && triggerRef?.current) {
|
||||
setTimeout(() => {
|
||||
triggerRef.current?.focus();
|
||||
}, 0);
|
||||
}
|
||||
if (triggerRefs?.length) {
|
||||
triggerRefs.forEach((ref) => {
|
||||
if (ref?.current) {
|
||||
setTimeout(() => {
|
||||
ref.current?.focus();
|
||||
}, 0);
|
||||
}
|
||||
});
|
||||
}
|
||||
onOpenChange?.(open);
|
||||
};
|
||||
|
||||
return (
|
||||
<DialogPrimitive.Root {...props} onOpenChange={handleOpenChange}>
|
||||
{children}
|
||||
</DialogPrimitive.Root>
|
||||
);
|
||||
},
|
||||
);
|
||||
|
||||
const DialogTrigger = DialogPrimitive.Trigger;
|
||||
|
||||
const DialogPortal = DialogPrimitive.Portal;
|
||||
|
||||
const DialogClose = DialogPrimitive.Close;
|
||||
|
||||
export const DialogOverlay = React.forwardRef<
|
||||
React.ElementRef<typeof DialogPrimitive.Overlay>,
|
||||
React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>
|
||||
>(({ className, ...props }, ref) => (
|
||||
<DialogPrimitive.Overlay
|
||||
ref={ref}
|
||||
className={cn(
|
||||
'fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0',
|
||||
className,
|
||||
)}
|
||||
{...props}
|
||||
/>
|
||||
));
|
||||
DialogOverlay.displayName = DialogPrimitive.Overlay.displayName;
|
||||
|
||||
type DialogContentProps = React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content> & {
|
||||
showCloseButton?: boolean;
|
||||
disableScroll?: boolean;
|
||||
overlayClassName?: string;
|
||||
};
|
||||
|
||||
const DialogContent = React.forwardRef<
|
||||
React.ElementRef<typeof DialogPrimitive.Content>,
|
||||
DialogContentProps
|
||||
>(({ className, overlayClassName, showCloseButton = true, children, ...props }, ref) => (
|
||||
<DialogPortal>
|
||||
<DialogOverlay className={overlayClassName} />
|
||||
<DialogPrimitive.Content
|
||||
ref={ref}
|
||||
className={cn(
|
||||
'max-w-11/12 fixed left-[50%] top-[50%] z-50 grid w-full translate-x-[-50%] translate-y-[-50%] gap-4 rounded-2xl bg-background p-6 text-text-primary shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%]',
|
||||
className,
|
||||
)}
|
||||
{...props}
|
||||
>
|
||||
{children}
|
||||
{showCloseButton && (
|
||||
<DialogPrimitive.Close className="absolute right-4 top-4 rounded-sm opacity-70 ring-ring-primary ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground">
|
||||
<X className="h-4 w-4" />
|
||||
{/* eslint-disable-next-line i18next/no-literal-string */}
|
||||
<span className="sr-only">Close</span>
|
||||
</DialogPrimitive.Close>
|
||||
)}
|
||||
</DialogPrimitive.Content>
|
||||
</DialogPortal>
|
||||
));
|
||||
DialogContent.displayName = DialogPrimitive.Content.displayName;
|
||||
|
||||
const DialogHeader = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (
|
||||
<div className={cn('flex flex-col space-y-1.5 text-center sm:text-left', className)} {...props} />
|
||||
);
|
||||
DialogHeader.displayName = 'DialogHeader';
|
||||
|
||||
const DialogFooter = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (
|
||||
<div
|
||||
className={cn('flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2', className)}
|
||||
{...props}
|
||||
/>
|
||||
);
|
||||
DialogFooter.displayName = 'DialogFooter';
|
||||
|
||||
const DialogTitle = React.forwardRef<
|
||||
React.ElementRef<typeof DialogPrimitive.Title>,
|
||||
React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>
|
||||
>(({ className, ...props }, ref) => (
|
||||
<DialogPrimitive.Title
|
||||
ref={ref}
|
||||
className={cn('text-lg font-semibold leading-none tracking-tight', className)}
|
||||
{...props}
|
||||
/>
|
||||
));
|
||||
DialogTitle.displayName = DialogPrimitive.Title.displayName;
|
||||
|
||||
const DialogDescription = React.forwardRef<
|
||||
React.ElementRef<typeof DialogPrimitive.Description>,
|
||||
React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>
|
||||
>(({ className, ...props }, ref) => (
|
||||
<DialogPrimitive.Description
|
||||
ref={ref}
|
||||
className={cn('text-sm text-muted-foreground', className)}
|
||||
{...props}
|
||||
/>
|
||||
));
|
||||
DialogDescription.displayName = DialogPrimitive.Description.displayName;
|
||||
|
||||
export {
|
||||
Dialog as OGDialog,
|
||||
DialogPortal as OGDialogPortal,
|
||||
DialogOverlay as OGDialogOverlay,
|
||||
DialogClose as OGDialogClose,
|
||||
DialogTrigger as OGDialogTrigger,
|
||||
DialogContent as OGDialogContent,
|
||||
DialogHeader as OGDialogHeader,
|
||||
DialogFooter as OGDialogFooter,
|
||||
DialogTitle as OGDialogTitle,
|
||||
DialogDescription as OGDialogDescription,
|
||||
};
|
||||
105
packages/client/src/components/Pagination.tsx
Normal file
105
packages/client/src/components/Pagination.tsx
Normal file
|
|
@ -0,0 +1,105 @@
|
|||
import * as React from 'react';
|
||||
import { ChevronLeft, ChevronRight, MoreHorizontal } from 'lucide-react';
|
||||
import { ButtonProps, buttonVariants } from './Button';
|
||||
import { cn } from '~/utils';
|
||||
|
||||
const Pagination = ({ className, ...props }: React.ComponentProps<'nav'>) => (
|
||||
<nav
|
||||
role="navigation"
|
||||
aria-label="pagination"
|
||||
className={cn('mx-auto flex w-full justify-center', className)}
|
||||
{...props}
|
||||
/>
|
||||
);
|
||||
Pagination.displayName = 'Pagination';
|
||||
|
||||
const PaginationContent = React.forwardRef<HTMLUListElement, React.ComponentProps<'ul'>>(
|
||||
({ className, ...props }, ref) => (
|
||||
<ul ref={ref} className={cn('flex flex-row items-center gap-1', className)} {...props} />
|
||||
),
|
||||
);
|
||||
PaginationContent.displayName = 'PaginationContent';
|
||||
|
||||
const PaginationItem = React.forwardRef<HTMLLIElement, React.ComponentProps<'li'>>(
|
||||
({ className, ...props }, ref) => <li ref={ref} className={cn('', className)} {...props} />,
|
||||
);
|
||||
PaginationItem.displayName = 'PaginationItem';
|
||||
|
||||
type PaginationLinkProps = {
|
||||
isActive?: boolean;
|
||||
} & Pick<ButtonProps, 'size'> &
|
||||
React.ComponentProps<'a'>;
|
||||
|
||||
const PaginationLink = ({
|
||||
className,
|
||||
isActive = false,
|
||||
size = 'icon',
|
||||
children,
|
||||
...props
|
||||
}: PaginationLinkProps) => (
|
||||
<a
|
||||
aria-current={isActive ? 'page' : undefined}
|
||||
className={cn(
|
||||
buttonVariants({
|
||||
variant: isActive ? 'outline' : 'ghost',
|
||||
size,
|
||||
}),
|
||||
className,
|
||||
)}
|
||||
{...props}
|
||||
>
|
||||
{children || <span className="sr-only">Page link</span>}
|
||||
</a>
|
||||
);
|
||||
PaginationLink.displayName = 'PaginationLink';
|
||||
|
||||
const PaginationPrevious = ({
|
||||
className,
|
||||
...props
|
||||
}: React.ComponentProps<typeof PaginationLink>) => (
|
||||
<PaginationLink
|
||||
aria-label="Go to previous page"
|
||||
size="default"
|
||||
className={cn('gap-1 pl-2.5', className)}
|
||||
{...props}
|
||||
>
|
||||
<ChevronLeft className="h-4 w-4" />
|
||||
<span>Previous</span>
|
||||
</PaginationLink>
|
||||
);
|
||||
PaginationPrevious.displayName = 'PaginationPrevious';
|
||||
|
||||
const PaginationNext = ({ className, ...props }: React.ComponentProps<typeof PaginationLink>) => (
|
||||
<PaginationLink
|
||||
aria-label="Go to next page"
|
||||
size="default"
|
||||
className={cn('gap-1 pr-2.5', className)}
|
||||
{...props}
|
||||
>
|
||||
<span>Next</span>
|
||||
<ChevronRight className="h-4 w-4" />
|
||||
</PaginationLink>
|
||||
);
|
||||
PaginationNext.displayName = 'PaginationNext';
|
||||
|
||||
const PaginationEllipsis = ({ className, ...props }: React.ComponentProps<'span'>) => (
|
||||
<span
|
||||
aria-hidden
|
||||
className={cn('flex h-9 w-9 items-center justify-center', className)}
|
||||
{...props}
|
||||
>
|
||||
<MoreHorizontal className="h-4 w-4" />
|
||||
<span className="sr-only">More pages</span>
|
||||
</span>
|
||||
);
|
||||
PaginationEllipsis.displayName = 'PaginationEllipsis';
|
||||
|
||||
export {
|
||||
Pagination,
|
||||
PaginationContent,
|
||||
PaginationEllipsis,
|
||||
PaginationItem,
|
||||
PaginationLink,
|
||||
PaginationNext,
|
||||
PaginationPrevious,
|
||||
};
|
||||
376
packages/client/src/components/PixelCard.tsx
Normal file
376
packages/client/src/components/PixelCard.tsx
Normal file
|
|
@ -0,0 +1,376 @@
|
|||
import { useEffect, useRef, useCallback } from 'react';
|
||||
import { cn } from '~/utils';
|
||||
|
||||
class Pixel {
|
||||
width: number;
|
||||
height: number;
|
||||
ctx: CanvasRenderingContext2D;
|
||||
x: number;
|
||||
y: number;
|
||||
color: string;
|
||||
speed: number;
|
||||
size: number;
|
||||
sizeStep: number;
|
||||
minSize: number;
|
||||
maxSizeInteger: number;
|
||||
maxSize: number;
|
||||
delay: number;
|
||||
counter: number;
|
||||
counterStep: number;
|
||||
isIdle: boolean;
|
||||
isReverse: boolean;
|
||||
isShimmer: boolean;
|
||||
activationThreshold: number;
|
||||
|
||||
constructor(
|
||||
canvas: HTMLCanvasElement,
|
||||
context: CanvasRenderingContext2D,
|
||||
x: number,
|
||||
y: number,
|
||||
color: string,
|
||||
speed: number,
|
||||
delay: number,
|
||||
activationThreshold: number,
|
||||
) {
|
||||
this.width = canvas.width;
|
||||
this.height = canvas.height;
|
||||
this.ctx = context;
|
||||
this.x = x;
|
||||
this.y = y;
|
||||
this.color = color;
|
||||
this.speed = this.random(0.1, 0.9) * speed;
|
||||
this.size = 0;
|
||||
this.sizeStep = Math.random() * 0.4;
|
||||
this.minSize = 0.5;
|
||||
this.maxSizeInteger = 2;
|
||||
this.maxSize = this.random(this.minSize, this.maxSizeInteger);
|
||||
this.delay = delay;
|
||||
this.counter = 0;
|
||||
this.counterStep = Math.random() * 4 + (this.width + this.height) * 0.01;
|
||||
this.isIdle = false;
|
||||
this.isReverse = false;
|
||||
this.isShimmer = false;
|
||||
this.activationThreshold = activationThreshold;
|
||||
}
|
||||
|
||||
private random(min: number, max: number) {
|
||||
return Math.random() * (max - min) + min;
|
||||
}
|
||||
|
||||
private draw() {
|
||||
const offset = this.maxSizeInteger * 0.5 - this.size * 0.5;
|
||||
this.ctx.fillStyle = this.color;
|
||||
this.ctx.fillRect(this.x + offset, this.y + offset, this.size, this.size);
|
||||
}
|
||||
|
||||
appear() {
|
||||
this.isIdle = false;
|
||||
if (this.counter <= this.delay) {
|
||||
this.counter += this.counterStep;
|
||||
return;
|
||||
}
|
||||
if (this.size >= this.maxSize) {
|
||||
this.isShimmer = true;
|
||||
}
|
||||
if (this.isShimmer) {
|
||||
this.shimmer();
|
||||
} else {
|
||||
this.size += this.sizeStep;
|
||||
}
|
||||
this.draw();
|
||||
}
|
||||
|
||||
appearWithProgress(progress: number) {
|
||||
const diff = progress - this.activationThreshold;
|
||||
if (diff <= 0) {
|
||||
this.isIdle = true;
|
||||
return;
|
||||
}
|
||||
if (this.counter <= this.delay) {
|
||||
this.counter += this.counterStep;
|
||||
this.isIdle = false;
|
||||
return;
|
||||
}
|
||||
if (this.size >= this.maxSize) {
|
||||
this.isShimmer = true;
|
||||
}
|
||||
if (this.isShimmer) {
|
||||
this.shimmer();
|
||||
} else {
|
||||
this.size += this.sizeStep;
|
||||
}
|
||||
this.isIdle = false;
|
||||
this.draw();
|
||||
}
|
||||
|
||||
disappear() {
|
||||
this.isShimmer = false;
|
||||
this.counter = 0;
|
||||
if (this.size <= 0) {
|
||||
this.isIdle = true;
|
||||
return;
|
||||
}
|
||||
this.size -= 0.1;
|
||||
this.draw();
|
||||
}
|
||||
|
||||
private shimmer() {
|
||||
if (this.size >= this.maxSize) {
|
||||
this.isReverse = true;
|
||||
} else if (this.size <= this.minSize) {
|
||||
this.isReverse = false;
|
||||
}
|
||||
this.size += this.isReverse ? -this.speed : this.speed;
|
||||
}
|
||||
}
|
||||
|
||||
const getEffectiveSpeed = (value: number, reducedMotion: boolean) => {
|
||||
const parsed = parseInt(String(value), 10);
|
||||
const throttle = 0.001;
|
||||
if (parsed <= 0 || reducedMotion) {
|
||||
return 0;
|
||||
}
|
||||
if (parsed >= 100) {
|
||||
return 100 * throttle;
|
||||
}
|
||||
return parsed * throttle;
|
||||
};
|
||||
|
||||
const clamp = (n: number, min = 0, max = 1) => Math.min(Math.max(n, min), max);
|
||||
|
||||
const VARIANTS = {
|
||||
default: { gap: 5, speed: 35, colors: '#f8fafc,#f1f5f9,#cbd5e1', noFocus: false },
|
||||
blue: { gap: 10, speed: 25, colors: '#e0f2fe,#7dd3fc,#0ea5e9', noFocus: false },
|
||||
yellow: { gap: 3, speed: 20, colors: '#fef08a,#fde047,#eab308', noFocus: false },
|
||||
pink: { gap: 6, speed: 80, colors: '#fecdd3,#fda4af,#e11d48', noFocus: true },
|
||||
} as const;
|
||||
|
||||
interface PixelCardProps {
|
||||
variant?: keyof typeof VARIANTS;
|
||||
gap?: number;
|
||||
speed?: number;
|
||||
colors?: string;
|
||||
noFocus?: boolean;
|
||||
className?: string;
|
||||
progress?: number;
|
||||
randomness?: number;
|
||||
width?: string;
|
||||
height?: string;
|
||||
}
|
||||
|
||||
export default function PixelCard({
|
||||
variant = 'default',
|
||||
gap,
|
||||
speed,
|
||||
colors,
|
||||
noFocus,
|
||||
className = '',
|
||||
progress,
|
||||
randomness = 0.3,
|
||||
width,
|
||||
height,
|
||||
}: PixelCardProps) {
|
||||
const containerRef = useRef<HTMLDivElement>(null);
|
||||
const canvasRef = useRef<HTMLCanvasElement>(null);
|
||||
const pixelsRef = useRef<Pixel[]>([]);
|
||||
const animationRef = useRef<number>();
|
||||
const timePrevRef = useRef(performance.now());
|
||||
const progressRef = useRef<number | undefined>(progress);
|
||||
const reducedMotion = useRef(
|
||||
window.matchMedia('(prefers-reduced-motion: reduce)').matches,
|
||||
).current;
|
||||
|
||||
const cfg = VARIANTS[variant];
|
||||
const g = gap ?? cfg.gap;
|
||||
const s = speed ?? cfg.speed;
|
||||
const palette = colors ?? cfg.colors;
|
||||
const disableFocus = noFocus ?? cfg.noFocus;
|
||||
|
||||
const updateCanvasOpacity = useCallback(() => {
|
||||
if (!canvasRef.current) {
|
||||
return;
|
||||
}
|
||||
if (progressRef.current === undefined) {
|
||||
canvasRef.current.style.opacity = '1';
|
||||
return;
|
||||
}
|
||||
const fadeStart = 0.9;
|
||||
const alpha =
|
||||
progressRef.current >= fadeStart ? 1 - (progressRef.current - fadeStart) / 0.1 : 1;
|
||||
canvasRef.current.style.opacity = String(clamp(alpha));
|
||||
}, []);
|
||||
|
||||
const animate = useCallback(
|
||||
(method: keyof Pixel) => {
|
||||
animationRef.current = requestAnimationFrame(() => animate(method));
|
||||
|
||||
const now = performance.now();
|
||||
const elapsed = now - timePrevRef.current;
|
||||
if (elapsed < 1000 / 60) {
|
||||
return;
|
||||
}
|
||||
timePrevRef.current = now - (elapsed % (1000 / 60));
|
||||
|
||||
const ctx = canvasRef.current?.getContext('2d');
|
||||
if (!ctx || !canvasRef.current) {
|
||||
return;
|
||||
}
|
||||
|
||||
ctx.clearRect(0, 0, canvasRef.current.width, canvasRef.current.height);
|
||||
|
||||
let idle = true;
|
||||
for (const p of pixelsRef.current) {
|
||||
if (method === 'appearWithProgress') {
|
||||
progressRef.current !== undefined
|
||||
? p.appearWithProgress(progressRef.current)
|
||||
: (p.isIdle = true);
|
||||
} else {
|
||||
// @ts-ignore dynamic dispatch
|
||||
p[method]();
|
||||
}
|
||||
if (!p.isIdle) {
|
||||
idle = false;
|
||||
}
|
||||
}
|
||||
|
||||
updateCanvasOpacity();
|
||||
if (idle) {
|
||||
cancelAnimationFrame(animationRef.current!);
|
||||
}
|
||||
},
|
||||
[updateCanvasOpacity],
|
||||
);
|
||||
|
||||
const startAnim = useCallback(
|
||||
(m: keyof Pixel) => {
|
||||
cancelAnimationFrame(animationRef.current!);
|
||||
animationRef.current = requestAnimationFrame(() => animate(m));
|
||||
},
|
||||
[animate],
|
||||
);
|
||||
|
||||
const initPixels = useCallback(() => {
|
||||
if (!containerRef.current || !canvasRef.current) {
|
||||
return;
|
||||
}
|
||||
|
||||
const { width: cw, height: ch } = containerRef.current.getBoundingClientRect();
|
||||
const ctx = canvasRef.current.getContext('2d');
|
||||
canvasRef.current.width = Math.floor(cw);
|
||||
canvasRef.current.height = Math.floor(ch);
|
||||
|
||||
const cols = palette.split(',');
|
||||
const px: Pixel[] = [];
|
||||
|
||||
const cx = cw / 2;
|
||||
const cy = ch / 2;
|
||||
const maxDist = Math.hypot(cx, cy);
|
||||
|
||||
for (let x = 0; x < cw; x += g) {
|
||||
for (let y = 0; y < ch; y += g) {
|
||||
const color = cols[Math.floor(Math.random() * cols.length)];
|
||||
const distNorm = Math.hypot(x - cx, y - cy) / maxDist;
|
||||
const threshold = clamp(distNorm * (1 - randomness) + Math.random() * randomness);
|
||||
const delay = reducedMotion ? 0 : distNorm * maxDist;
|
||||
if (!ctx) {
|
||||
continue;
|
||||
}
|
||||
px.push(
|
||||
new Pixel(
|
||||
canvasRef.current,
|
||||
ctx,
|
||||
x,
|
||||
y,
|
||||
color,
|
||||
getEffectiveSpeed(s, reducedMotion),
|
||||
delay,
|
||||
threshold,
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
pixelsRef.current = px;
|
||||
|
||||
if (progressRef.current !== undefined) {
|
||||
startAnim('appearWithProgress');
|
||||
}
|
||||
}, [g, palette, s, randomness, reducedMotion, startAnim]);
|
||||
|
||||
useEffect(() => {
|
||||
progressRef.current = progress;
|
||||
if (progress !== undefined) {
|
||||
startAnim('appearWithProgress');
|
||||
}
|
||||
}, [progress, startAnim]);
|
||||
|
||||
useEffect(() => {
|
||||
if (progress === undefined) {
|
||||
cancelAnimationFrame(animationRef.current!);
|
||||
}
|
||||
}, [progress]);
|
||||
|
||||
useEffect(() => {
|
||||
initPixels();
|
||||
const obs = new ResizeObserver(initPixels);
|
||||
containerRef.current && obs.observe(containerRef.current);
|
||||
return () => {
|
||||
obs.disconnect();
|
||||
cancelAnimationFrame(animationRef.current!);
|
||||
};
|
||||
}, [initPixels]);
|
||||
|
||||
const hoverIn = () => progressRef.current === undefined && startAnim('appear');
|
||||
const hoverOut = () => progressRef.current === undefined && startAnim('disappear');
|
||||
const focusIn: React.FocusEventHandler<HTMLDivElement> = (e) => {
|
||||
if (
|
||||
!disableFocus &&
|
||||
!e.currentTarget.contains(e.relatedTarget) &&
|
||||
progressRef.current === undefined
|
||||
) {
|
||||
startAnim('appear');
|
||||
}
|
||||
};
|
||||
const focusOut: React.FocusEventHandler<HTMLDivElement> = (e) => {
|
||||
if (
|
||||
!disableFocus &&
|
||||
!e.currentTarget.contains(e.relatedTarget) &&
|
||||
progressRef.current === undefined
|
||||
) {
|
||||
startAnim('disappear');
|
||||
}
|
||||
};
|
||||
|
||||
return (
|
||||
<div
|
||||
ref={containerRef}
|
||||
style={{
|
||||
width: width || '100%',
|
||||
height: height || '100%',
|
||||
}}
|
||||
>
|
||||
<div
|
||||
className={cn(
|
||||
'relative isolate grid select-none place-items-center overflow-hidden rounded-lg border border-border-light shadow-md transition-colors duration-200 ease-in-out',
|
||||
className,
|
||||
)}
|
||||
style={{
|
||||
width: '100%',
|
||||
height: '100%',
|
||||
transitionTimingFunction: 'cubic-bezier(0.5, 1, 0.89, 1)',
|
||||
}}
|
||||
onMouseEnter={hoverIn}
|
||||
onMouseLeave={hoverOut}
|
||||
onFocus={disableFocus ? undefined : focusIn}
|
||||
onBlur={disableFocus ? undefined : focusOut}
|
||||
tabIndex={disableFocus ? -1 : 0}
|
||||
>
|
||||
<canvas
|
||||
ref={canvasRef}
|
||||
className="pointer-events-none absolute inset-0 block"
|
||||
width={width && width !== 'auto' ? parseInt(String(width)) : undefined}
|
||||
height={height && height !== 'auto' ? parseInt(String(height)) : undefined}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
22
packages/client/src/components/Progress.tsx
Normal file
22
packages/client/src/components/Progress.tsx
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
import * as React from 'react';
|
||||
import * as ProgressPrimitive from '@radix-ui/react-progress';
|
||||
import { cn } from '~/utils';
|
||||
|
||||
const Progress = React.forwardRef<
|
||||
React.ElementRef<typeof ProgressPrimitive.Root>,
|
||||
React.ComponentPropsWithoutRef<typeof ProgressPrimitive.Root>
|
||||
>(({ className, value, ...props }, ref) => (
|
||||
<ProgressPrimitive.Root
|
||||
ref={ref}
|
||||
className={cn('relative h-2 w-full overflow-hidden rounded-full bg-primary/20', className)}
|
||||
{...props}
|
||||
>
|
||||
<ProgressPrimitive.Indicator
|
||||
className="h-full w-full flex-1 bg-primary transition-all"
|
||||
style={{ transform: `translateX(-${100 - (value || 0)}%)` }}
|
||||
/>
|
||||
</ProgressPrimitive.Root>
|
||||
));
|
||||
Progress.displayName = ProgressPrimitive.Root.displayName;
|
||||
|
||||
export { Progress };
|
||||
22
packages/client/src/components/Prompt.tsx
Normal file
22
packages/client/src/components/Prompt.tsx
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
import { useLocalize } from '~/hooks';
|
||||
|
||||
export default function Prompt({ title, prompt }: { title: string; prompt: string }) {
|
||||
const localize = useLocalize();
|
||||
|
||||
return (
|
||||
<div
|
||||
// onclick="selectPromptTemplate(0)"
|
||||
className="flex w-full flex-col gap-2 rounded-md bg-gray-50 p-4 text-left hover:bg-gray-200 dark:bg-white/5 "
|
||||
>
|
||||
<h2 className="m-auto flex items-center gap-3 text-lg font-normal md:flex-col md:gap-2">
|
||||
{title}
|
||||
</h2>
|
||||
<button>
|
||||
<p className="w-full rounded-md bg-gray-50 p-3 hover:bg-gray-200 dark:bg-white/5 dark:hover:bg-gray-800">
|
||||
{prompt}
|
||||
</p>
|
||||
</button>
|
||||
<span className="font-medium">{localize('com_ui_use_prompt')} →</span>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
16
packages/client/src/components/QuestionMark.tsx
Normal file
16
packages/client/src/components/QuestionMark.tsx
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
import { cn } from '~/utils';
|
||||
|
||||
export const QuestionMark = ({ className = '' }) => {
|
||||
return (
|
||||
<span>
|
||||
<div
|
||||
className={cn(
|
||||
'border-token-border-medium text-token-text-tertiary ml-2 flex h-3.5 w-3.5 cursor-default items-center justify-center rounded-full border text-[0.5rem] font-medium leading-none',
|
||||
className,
|
||||
)}
|
||||
>
|
||||
?
|
||||
</div>
|
||||
</span>
|
||||
);
|
||||
};
|
||||
62
packages/client/src/components/Resizable.tsx
Normal file
62
packages/client/src/components/Resizable.tsx
Normal file
|
|
@ -0,0 +1,62 @@
|
|||
import { GripVertical } from 'lucide-react';
|
||||
import * as ResizablePrimitive from 'react-resizable-panels';
|
||||
|
||||
import { cn } from '~/utils';
|
||||
|
||||
const ResizablePanelGroup = ({
|
||||
className = '',
|
||||
...props
|
||||
}: React.ComponentProps<typeof ResizablePrimitive.PanelGroup>) => (
|
||||
<ResizablePrimitive.PanelGroup
|
||||
className={cn('flex h-full w-full data-[panel-group-direction=vertical]:flex-col', className)}
|
||||
{...props}
|
||||
/>
|
||||
);
|
||||
|
||||
const ResizablePanel = ResizablePrimitive.Panel;
|
||||
|
||||
const ResizableHandle = ({
|
||||
withHandle,
|
||||
className = '',
|
||||
...props
|
||||
}: React.ComponentProps<typeof ResizablePrimitive.PanelResizeHandle> & {
|
||||
withHandle?: boolean;
|
||||
}) => (
|
||||
<ResizablePrimitive.PanelResizeHandle
|
||||
className={cn(
|
||||
'bg-border focus-visible:ring-ring relative flex w-px items-center justify-center after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-offset-1 data-[panel-group-direction=vertical]:h-px data-[panel-group-direction=vertical]:w-full data-[panel-group-direction=vertical]:after:left-0 data-[panel-group-direction=vertical]:after:h-1 data-[panel-group-direction=vertical]:after:w-full data-[panel-group-direction=vertical]:after:-translate-y-1/2 data-[panel-group-direction=vertical]:after:translate-x-0 [&[data-panel-group-direction=vertical]>div]:rotate-90',
|
||||
className,
|
||||
)}
|
||||
{...props}
|
||||
>
|
||||
{withHandle && (
|
||||
<div className="bg-border z-10 flex h-4 w-3 items-center justify-center rounded-sm border">
|
||||
<GripVertical className="h-2.5 w-2.5" />
|
||||
</div>
|
||||
)}
|
||||
</ResizablePrimitive.PanelResizeHandle>
|
||||
);
|
||||
|
||||
const ResizableHandleAlt = ({
|
||||
withHandle,
|
||||
className = '',
|
||||
...props
|
||||
}: React.ComponentProps<typeof ResizablePrimitive.PanelResizeHandle> & {
|
||||
withHandle?: boolean;
|
||||
}) => (
|
||||
<ResizablePrimitive.PanelResizeHandle
|
||||
className={cn(
|
||||
'bg-border focus-visible:ring-ring group relative flex w-px items-center justify-center after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-offset-1 data-[panel-group-direction=vertical]:h-px data-[panel-group-direction=vertical]:w-full data-[panel-group-direction=vertical]:after:left-0 data-[panel-group-direction=vertical]:after:h-1 data-[panel-group-direction=vertical]:after:w-full data-[panel-group-direction=vertical]:after:-translate-y-1/2 data-[panel-group-direction=vertical]:after:translate-x-0 [&[data-panel-group-direction=vertical]>div]:rotate-90',
|
||||
className,
|
||||
)}
|
||||
{...props}
|
||||
>
|
||||
{withHandle && (
|
||||
<div className="bg-border invisible z-10 flex h-4 w-3 items-center justify-center rounded-sm border group-hover:visible group-active:visible">
|
||||
<GripVertical className="h-2.5 w-2.5" />
|
||||
</div>
|
||||
)}
|
||||
</ResizablePrimitive.PanelResizeHandle>
|
||||
);
|
||||
|
||||
export { ResizablePanelGroup, ResizablePanel, ResizableHandle, ResizableHandleAlt };
|
||||
160
packages/client/src/components/Select.tsx
Normal file
160
packages/client/src/components/Select.tsx
Normal file
|
|
@ -0,0 +1,160 @@
|
|||
import * as React from 'react';
|
||||
import * as SelectPrimitive from '@radix-ui/react-select';
|
||||
import { CaretSortIcon, CheckIcon, ChevronDownIcon, ChevronUpIcon } from '@radix-ui/react-icons';
|
||||
|
||||
import { cn } from '~/utils';
|
||||
|
||||
const Select = SelectPrimitive.Root;
|
||||
|
||||
const SelectGroup = SelectPrimitive.Group;
|
||||
|
||||
const SelectValue = SelectPrimitive.Value;
|
||||
|
||||
const SelectTrigger = React.forwardRef<
|
||||
React.ElementRef<typeof SelectPrimitive.Trigger>,
|
||||
React.ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger>
|
||||
>(({ className = '', children, ...props }, ref) => (
|
||||
<SelectPrimitive.Trigger
|
||||
ref={ref}
|
||||
className={cn(
|
||||
'flex h-9 w-full items-center justify-between whitespace-nowrap rounded-md border border-gray-200 border-input bg-transparent px-3 py-2 text-sm shadow-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none disabled:cursor-not-allowed disabled:opacity-50 dark:border-gray-600 [&>span]:line-clamp-1',
|
||||
'rounded-lg hover:bg-gray-100/50 dark:hover:bg-gray-700',
|
||||
className,
|
||||
)}
|
||||
{...props}
|
||||
>
|
||||
{children}
|
||||
<SelectPrimitive.Icon asChild>
|
||||
<CaretSortIcon className="h-4 w-4 opacity-50" />
|
||||
</SelectPrimitive.Icon>
|
||||
</SelectPrimitive.Trigger>
|
||||
));
|
||||
SelectTrigger.displayName = SelectPrimitive.Trigger.displayName;
|
||||
|
||||
const SelectScrollUpButton = React.forwardRef<
|
||||
React.ElementRef<typeof SelectPrimitive.ScrollUpButton>,
|
||||
React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollUpButton>
|
||||
>(({ className = '', ...props }, ref) => (
|
||||
<SelectPrimitive.ScrollUpButton
|
||||
ref={ref}
|
||||
className={cn(
|
||||
'flex cursor-default items-center justify-center py-1 dark:text-white',
|
||||
className,
|
||||
)}
|
||||
{...props}
|
||||
>
|
||||
<ChevronUpIcon />
|
||||
</SelectPrimitive.ScrollUpButton>
|
||||
));
|
||||
SelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName;
|
||||
|
||||
const SelectScrollDownButton = React.forwardRef<
|
||||
React.ElementRef<typeof SelectPrimitive.ScrollDownButton>,
|
||||
React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollDownButton>
|
||||
>(({ className = '', ...props }, ref) => (
|
||||
<SelectPrimitive.ScrollDownButton
|
||||
ref={ref}
|
||||
className={cn(
|
||||
'flex cursor-default items-center justify-center py-1 dark:text-white',
|
||||
className,
|
||||
)}
|
||||
{...props}
|
||||
>
|
||||
<ChevronDownIcon />
|
||||
</SelectPrimitive.ScrollDownButton>
|
||||
));
|
||||
SelectScrollDownButton.displayName = SelectPrimitive.ScrollDownButton.displayName;
|
||||
|
||||
const SelectContent = React.forwardRef<
|
||||
React.ElementRef<typeof SelectPrimitive.Content>,
|
||||
React.ComponentPropsWithoutRef<typeof SelectPrimitive.Content>
|
||||
>(({ className = '', children, position = 'popper', ...props }, ref) => (
|
||||
<SelectPrimitive.Portal>
|
||||
<SelectPrimitive.Content
|
||||
ref={ref}
|
||||
className={cn(
|
||||
'bg-popover text-popover-foreground relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border border-gray-200 shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 dark:border-gray-600',
|
||||
position === 'popper'
|
||||
? 'data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1'
|
||||
: '',
|
||||
className,
|
||||
)}
|
||||
position={position}
|
||||
{...props}
|
||||
>
|
||||
<SelectScrollUpButton />
|
||||
<SelectPrimitive.Viewport
|
||||
className={cn(
|
||||
'p-1',
|
||||
position === 'popper'
|
||||
? 'h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]'
|
||||
: '',
|
||||
)}
|
||||
>
|
||||
{children}
|
||||
</SelectPrimitive.Viewport>
|
||||
<SelectScrollDownButton />
|
||||
</SelectPrimitive.Content>
|
||||
</SelectPrimitive.Portal>
|
||||
));
|
||||
SelectContent.displayName = SelectPrimitive.Content.displayName;
|
||||
|
||||
const SelectLabel = React.forwardRef<
|
||||
React.ElementRef<typeof SelectPrimitive.Label>,
|
||||
React.ComponentPropsWithoutRef<typeof SelectPrimitive.Label>
|
||||
>(({ className = '', ...props }, ref) => (
|
||||
<SelectPrimitive.Label
|
||||
ref={ref}
|
||||
className={cn('px-2 py-1.5 text-sm font-semibold', className)}
|
||||
{...props}
|
||||
/>
|
||||
));
|
||||
SelectLabel.displayName = SelectPrimitive.Label.displayName;
|
||||
|
||||
const SelectItem = React.forwardRef<
|
||||
React.ElementRef<typeof SelectPrimitive.Item>,
|
||||
React.ComponentPropsWithoutRef<typeof SelectPrimitive.Item>
|
||||
>(({ className = '', children, ...props }, ref) => (
|
||||
<SelectPrimitive.Item
|
||||
ref={ref}
|
||||
className={cn(
|
||||
'relative flex w-full cursor-pointer select-none items-center rounded-sm py-1.5 pl-2 pr-8 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50',
|
||||
'rounded-lg hover:bg-gray-100/50 dark:hover:bg-gray-700',
|
||||
className,
|
||||
)}
|
||||
{...props}
|
||||
>
|
||||
<span className="absolute right-2 flex h-3.5 w-3.5 items-center justify-center">
|
||||
<SelectPrimitive.ItemIndicator>
|
||||
<CheckIcon className="h-4 w-4" />
|
||||
</SelectPrimitive.ItemIndicator>
|
||||
</span>
|
||||
<SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>
|
||||
</SelectPrimitive.Item>
|
||||
));
|
||||
SelectItem.displayName = SelectPrimitive.Item.displayName;
|
||||
|
||||
const SelectSeparator = React.forwardRef<
|
||||
React.ElementRef<typeof SelectPrimitive.Separator>,
|
||||
React.ComponentPropsWithoutRef<typeof SelectPrimitive.Separator>
|
||||
>(({ className = '', ...props }, ref) => (
|
||||
<SelectPrimitive.Separator
|
||||
ref={ref}
|
||||
className={cn('-mx-1 my-1 h-px bg-muted', className)}
|
||||
{...props}
|
||||
/>
|
||||
));
|
||||
SelectSeparator.displayName = SelectPrimitive.Separator.displayName;
|
||||
|
||||
export {
|
||||
Select,
|
||||
SelectGroup,
|
||||
SelectValue,
|
||||
SelectTrigger,
|
||||
SelectContent,
|
||||
SelectLabel,
|
||||
SelectItem,
|
||||
SelectSeparator,
|
||||
SelectScrollUpButton,
|
||||
SelectScrollDownButton,
|
||||
};
|
||||
285
packages/client/src/components/SelectDropDown.tsx
Normal file
285
packages/client/src/components/SelectDropDown.tsx
Normal file
|
|
@ -0,0 +1,285 @@
|
|||
import React, { useRef } from 'react';
|
||||
import {
|
||||
Label,
|
||||
Listbox,
|
||||
Transition,
|
||||
ListboxButton,
|
||||
ListboxOption,
|
||||
ListboxOptions,
|
||||
} from '@headlessui/react';
|
||||
import type { Option, OptionWithIcon, DropdownValueSetter } from '~/common';
|
||||
import { useMultiSearch } from './MultiSearch';
|
||||
import { useLocalize } from '~/hooks';
|
||||
import { CheckMark } from '~/svgs';
|
||||
import { cn } from '~/utils';
|
||||
|
||||
type SelectDropDownProps = {
|
||||
id?: string;
|
||||
title?: string;
|
||||
disabled?: boolean;
|
||||
value: string | null | Option | OptionWithIcon;
|
||||
setValue: DropdownValueSetter | ((value: string) => void);
|
||||
tabIndex?: number;
|
||||
availableValues?: string[] | Option[] | OptionWithIcon[];
|
||||
emptyTitle?: boolean;
|
||||
showAbove?: boolean;
|
||||
showLabel?: boolean;
|
||||
iconSide?: 'left' | 'right';
|
||||
optionIconSide?: 'left' | 'right';
|
||||
renderOption?: () => React.ReactNode;
|
||||
containerClassName?: string;
|
||||
currentValueClass?: string;
|
||||
optionsListClass?: string;
|
||||
optionsClass?: string;
|
||||
subContainerClassName?: string;
|
||||
className?: string;
|
||||
placeholder?: string;
|
||||
searchClassName?: string;
|
||||
searchPlaceholder?: string;
|
||||
showOptionIcon?: boolean;
|
||||
};
|
||||
|
||||
function getOptionText(option: string | Option | OptionWithIcon): string {
|
||||
if (typeof option === 'string') {
|
||||
return option;
|
||||
}
|
||||
if ('label' in option) {
|
||||
return option.label ?? '';
|
||||
}
|
||||
if ('value' in option) {
|
||||
return (option.value ?? '') + '';
|
||||
}
|
||||
return '';
|
||||
}
|
||||
|
||||
function SelectDropDown({
|
||||
title: _title,
|
||||
value,
|
||||
disabled,
|
||||
setValue,
|
||||
availableValues,
|
||||
showAbove = false,
|
||||
showLabel = true,
|
||||
emptyTitle = false,
|
||||
iconSide = 'right',
|
||||
optionIconSide = 'left',
|
||||
placeholder,
|
||||
containerClassName,
|
||||
optionsListClass,
|
||||
optionsClass,
|
||||
currentValueClass,
|
||||
subContainerClassName,
|
||||
className,
|
||||
renderOption,
|
||||
searchClassName,
|
||||
searchPlaceholder,
|
||||
showOptionIcon = false,
|
||||
}: SelectDropDownProps) {
|
||||
const localize = useLocalize();
|
||||
const transitionProps = { className: 'top-full mt-3' };
|
||||
if (showAbove) {
|
||||
transitionProps.className = 'bottom-full mb-3';
|
||||
}
|
||||
|
||||
let title = _title;
|
||||
if (emptyTitle) {
|
||||
title = '';
|
||||
} else if (!(title ?? '')) {
|
||||
title = localize('com_ui_model');
|
||||
}
|
||||
const values = availableValues ?? [];
|
||||
|
||||
// Enable searchable select if enough items are provided.
|
||||
const [filteredValues, searchRender] = useMultiSearch<string[] | Option[]>({
|
||||
availableOptions: values,
|
||||
placeholder: searchPlaceholder,
|
||||
getTextKeyOverride: (option) => getOptionText(option).toUpperCase(),
|
||||
className: searchClassName,
|
||||
disabled,
|
||||
});
|
||||
const hasSearchRender = searchRender != null;
|
||||
const options = hasSearchRender ? filteredValues : values;
|
||||
const renderIcon = showOptionIcon && value != null && (value as OptionWithIcon).icon != null;
|
||||
|
||||
const buttonRef = useRef<HTMLButtonElement>(null);
|
||||
|
||||
return (
|
||||
<div className={cn('flex items-center justify-center gap-2', containerClassName ?? '')}>
|
||||
<div className={cn('relative w-full', subContainerClassName ?? '')}>
|
||||
<Listbox value={value} onChange={setValue} disabled={disabled}>
|
||||
{({ open }) => (
|
||||
<>
|
||||
<ListboxButton
|
||||
ref={buttonRef}
|
||||
data-testid="select-dropdown-button"
|
||||
onKeyDown={(e) => {
|
||||
if (e.key === 'Enter') {
|
||||
e.preventDefault();
|
||||
if (!open && buttonRef.current) {
|
||||
buttonRef.current.click();
|
||||
}
|
||||
}
|
||||
}}
|
||||
className={cn(
|
||||
'relative flex w-full cursor-default flex-col rounded-md border border-black/10 bg-white py-2 pl-3 pr-10 text-left focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:bg-white dark:border-gray-600 dark:bg-gray-700 sm:text-sm',
|
||||
className ?? '',
|
||||
)}
|
||||
>
|
||||
{showLabel && (
|
||||
<Label
|
||||
className="block text-xs text-gray-700 dark:text-gray-500"
|
||||
id="headlessui-listbox-label-:r1:"
|
||||
data-headlessui-state=""
|
||||
>
|
||||
{title}
|
||||
</Label>
|
||||
)}
|
||||
<span className="inline-flex w-full truncate">
|
||||
<span
|
||||
className={cn(
|
||||
'flex h-6 items-center gap-1 truncate text-sm text-gray-800 dark:text-white',
|
||||
!showLabel ? 'text-xs' : '',
|
||||
currentValueClass ?? '',
|
||||
)}
|
||||
>
|
||||
{!showLabel && !emptyTitle && (
|
||||
<span className="text-xs text-gray-700 dark:text-gray-500">{title}:</span>
|
||||
)}
|
||||
{renderIcon && optionIconSide !== 'right' && (
|
||||
<span className="icon-md flex items-center">
|
||||
{(value as OptionWithIcon).icon}
|
||||
</span>
|
||||
)}
|
||||
{renderIcon && (
|
||||
<span className="icon-md absolute right-0 mr-8 flex items-center">
|
||||
{(value as OptionWithIcon).icon}
|
||||
</span>
|
||||
)}
|
||||
{(() => {
|
||||
if (!value) {
|
||||
return <span className="text-text-secondary">{placeholder}</span>;
|
||||
}
|
||||
if (typeof value !== 'string') {
|
||||
return value.label ?? '';
|
||||
}
|
||||
return value;
|
||||
})()}
|
||||
</span>
|
||||
</span>
|
||||
<span className="pointer-events-none absolute inset-y-0 right-0 flex items-center pr-2">
|
||||
<svg
|
||||
stroke="currentColor"
|
||||
fill="none"
|
||||
strokeWidth="2"
|
||||
viewBox="0 0 24 24"
|
||||
strokeLinecap="round"
|
||||
strokeLinejoin="round"
|
||||
className="h-4 w-4 text-gray-400"
|
||||
height="1em"
|
||||
width="1em"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
style={showAbove ? { transform: 'scaleY(-1)' } : {}}
|
||||
>
|
||||
<polyline points="6 9 12 15 18 9"></polyline>
|
||||
</svg>
|
||||
</span>
|
||||
</ListboxButton>
|
||||
<Transition
|
||||
show={open}
|
||||
as={React.Fragment}
|
||||
leave="transition ease-in duration-100"
|
||||
leaveFrom="opacity-100"
|
||||
leaveTo="opacity-0"
|
||||
{...transitionProps}
|
||||
>
|
||||
<ListboxOptions
|
||||
className={cn(
|
||||
'absolute z-10 mt-2 max-h-60 w-full overflow-auto rounded border bg-white text-xs ring-black/10 dark:border-gray-600 dark:bg-gray-700 dark:ring-white/20 md:w-[100%]',
|
||||
optionsListClass ?? '',
|
||||
)}
|
||||
>
|
||||
{renderOption && (
|
||||
<ListboxOption
|
||||
key={'listbox-render-option'}
|
||||
value={null}
|
||||
className={cn(
|
||||
'group relative flex h-[42px] cursor-pointer select-none items-center overflow-hidden pl-3 pr-9 text-gray-800 hover:bg-gray-20 dark:text-white dark:hover:bg-gray-700',
|
||||
optionsClass ?? '',
|
||||
)}
|
||||
>
|
||||
{renderOption()}
|
||||
</ListboxOption>
|
||||
)}
|
||||
{searchRender}
|
||||
{options.map((option: string | Option, i: number) => {
|
||||
if (!option) {
|
||||
return null;
|
||||
}
|
||||
const currentLabel =
|
||||
typeof option === 'string' ? option : (option.label ?? option.value ?? '');
|
||||
const currentValue = typeof option === 'string' ? option : (option.value ?? '');
|
||||
const currentIcon =
|
||||
typeof option === 'string'
|
||||
? null
|
||||
: ((option.icon as React.ReactNode) ?? null);
|
||||
let activeValue: string | number | null | Option = value;
|
||||
if (typeof activeValue !== 'string') {
|
||||
activeValue = activeValue?.value ?? '';
|
||||
}
|
||||
return (
|
||||
<ListboxOption
|
||||
key={i}
|
||||
value={option}
|
||||
className={({ active }) =>
|
||||
cn(
|
||||
'group relative flex h-[42px] cursor-pointer select-none items-center overflow-hidden pl-3 pr-9 text-gray-800 hover:bg-gray-20 dark:text-white dark:hover:bg-gray-600',
|
||||
active ? 'bg-surface-active text-text-primary' : '',
|
||||
optionsClass ?? '',
|
||||
)
|
||||
}
|
||||
>
|
||||
<span className="flex items-center gap-1.5 truncate">
|
||||
<span
|
||||
className={cn(
|
||||
'flex h-6 items-center gap-1 text-gray-800 dark:text-gray-200',
|
||||
option === value ? 'font-semibold' : '',
|
||||
iconSide === 'left' ? 'ml-4' : '',
|
||||
)}
|
||||
>
|
||||
{currentIcon != null && (
|
||||
<span
|
||||
className={cn(
|
||||
'mr-1',
|
||||
optionIconSide === 'right' ? 'absolute right-0 pr-2' : '',
|
||||
)}
|
||||
>
|
||||
{currentIcon}
|
||||
</span>
|
||||
)}
|
||||
{currentLabel}
|
||||
</span>
|
||||
{currentValue === activeValue && (
|
||||
<span
|
||||
className={cn(
|
||||
'absolute inset-y-0 flex items-center text-gray-800 dark:text-gray-200',
|
||||
iconSide === 'left' ? 'left-0 pl-2' : 'right-0 pr-3',
|
||||
)}
|
||||
>
|
||||
<CheckMark />
|
||||
</span>
|
||||
)}
|
||||
</span>
|
||||
</ListboxOption>
|
||||
);
|
||||
})}
|
||||
</ListboxOptions>
|
||||
</Transition>
|
||||
</>
|
||||
)}
|
||||
</Listbox>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default SelectDropDown;
|
||||
24
packages/client/src/components/Separator.tsx
Normal file
24
packages/client/src/components/Separator.tsx
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
import * as React from 'react';
|
||||
import * as SeparatorPrimitive from '@radix-ui/react-separator';
|
||||
|
||||
import { cn } from '~/utils';
|
||||
|
||||
const Separator = React.forwardRef<
|
||||
React.ElementRef<typeof SeparatorPrimitive.Root>,
|
||||
React.ComponentPropsWithoutRef<typeof SeparatorPrimitive.Root>
|
||||
>(({ className = '', orientation = 'horizontal', decorative = true, ...props }, ref) => (
|
||||
<SeparatorPrimitive.Root
|
||||
ref={ref}
|
||||
decorative={decorative}
|
||||
orientation={orientation}
|
||||
className={cn(
|
||||
'shrink-0 bg-border-light',
|
||||
orientation === 'horizontal' ? 'h-[1px] w-full' : 'h-full w-[1px]',
|
||||
className,
|
||||
)}
|
||||
{...props}
|
||||
/>
|
||||
));
|
||||
Separator.displayName = SeparatorPrimitive.Root.displayName;
|
||||
|
||||
export { Separator };
|
||||
15
packages/client/src/components/Skeleton.tsx
Normal file
15
packages/client/src/components/Skeleton.tsx
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
import { cn } from '~/utils';
|
||||
|
||||
function Skeleton({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) {
|
||||
return (
|
||||
<div
|
||||
className={cn(
|
||||
'animate-pulse rounded-md bg-surface-tertiary opacity-50 dark:opacity-25',
|
||||
className,
|
||||
)}
|
||||
{...props}
|
||||
/>
|
||||
);
|
||||
}
|
||||
|
||||
export { Skeleton };
|
||||
26
packages/client/src/components/Slider.tsx
Normal file
26
packages/client/src/components/Slider.tsx
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
import * as React from 'react';
|
||||
import * as SliderPrimitive from '@radix-ui/react-slider';
|
||||
import { cn } from '~/utils';
|
||||
|
||||
const Slider = React.forwardRef<
|
||||
React.ElementRef<typeof SliderPrimitive.Root>,
|
||||
React.ComponentPropsWithoutRef<typeof SliderPrimitive.Root> & { onDoubleClick?: () => void }
|
||||
>(({ className, onDoubleClick, ...props }, ref) => (
|
||||
<SliderPrimitive.Root
|
||||
ref={ref}
|
||||
className={cn(
|
||||
'relative flex w-full cursor-pointer touch-none select-none items-center',
|
||||
className,
|
||||
)}
|
||||
onDoubleClick={onDoubleClick}
|
||||
{...props}
|
||||
>
|
||||
<SliderPrimitive.Track className="relative h-2 w-full grow overflow-hidden rounded-full bg-secondary">
|
||||
<SliderPrimitive.Range className="absolute h-full bg-primary" />
|
||||
</SliderPrimitive.Track>
|
||||
<SliderPrimitive.Thumb className="block h-5 w-5 rounded-full border-2 border-primary bg-background ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50" />
|
||||
</SliderPrimitive.Root>
|
||||
));
|
||||
Slider.displayName = SliderPrimitive.Root.displayName;
|
||||
|
||||
export { Slider };
|
||||
38
packages/client/src/components/SplitText.spec.tsx
Normal file
38
packages/client/src/components/SplitText.spec.tsx
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
import { render } from '@testing-library/react';
|
||||
import SplitText from './SplitText';
|
||||
|
||||
// Mock IntersectionObserver
|
||||
class MockIntersectionObserver {
|
||||
observe = jest.fn();
|
||||
unobserve = jest.fn();
|
||||
disconnect = jest.fn();
|
||||
}
|
||||
|
||||
Object.defineProperty(window, 'IntersectionObserver', {
|
||||
writable: true,
|
||||
configurable: true,
|
||||
value: MockIntersectionObserver,
|
||||
});
|
||||
|
||||
describe('SplitText', () => {
|
||||
it('renders emojis correctly', () => {
|
||||
const emojis = ['🚧', '❤️🔥', '💜', '🦎', '❌', '✅', '⚠️'];
|
||||
const originalText = emojis.join('');
|
||||
|
||||
const { container } = render(<SplitText text={originalText} />);
|
||||
const textSpans = container.querySelectorAll('p > span > span.inline-block');
|
||||
|
||||
// Reconstruct the text by joining all span contents
|
||||
const reconstructedText = Array.from(textSpans)
|
||||
.map((span) => span.textContent)
|
||||
.join('')
|
||||
.trim();
|
||||
// Compare the reconstructed text with the original
|
||||
expect(reconstructedText).toBe(originalText);
|
||||
|
||||
// Check the first character specifically as the reconstructed text could hide issues
|
||||
for (let i = 0; i < emojis.length; i++) {
|
||||
expect(Array.from(textSpans)[i].textContent).toBe(emojis[i]);
|
||||
}
|
||||
});
|
||||
});
|
||||
138
packages/client/src/components/SplitText.tsx
Normal file
138
packages/client/src/components/SplitText.tsx
Normal file
|
|
@ -0,0 +1,138 @@
|
|||
import { useSprings, animated, SpringConfig } from '@react-spring/web';
|
||||
import { useEffect, useRef, useState } from 'react';
|
||||
|
||||
interface SplitTextProps {
|
||||
text?: string;
|
||||
className?: string;
|
||||
delay?: number;
|
||||
animationFrom?: { opacity: number; transform: string };
|
||||
animationTo?: { opacity: number; transform: string };
|
||||
easing?: SpringConfig['easing'];
|
||||
threshold?: number;
|
||||
rootMargin?: string;
|
||||
textAlign?: 'left' | 'right' | 'center' | 'justify' | 'start' | 'end';
|
||||
onLetterAnimationComplete?: () => void;
|
||||
onLineCountChange?: (lineCount: number) => void;
|
||||
}
|
||||
|
||||
const splitGraphemes = (text: string): string[] => {
|
||||
if (typeof Intl !== 'undefined' && Intl.Segmenter) {
|
||||
const segmenter = new Intl.Segmenter('en', { granularity: 'grapheme' });
|
||||
const segments = segmenter.segment(text);
|
||||
return Array.from(segments).map((s) => s.segment);
|
||||
} else {
|
||||
// Fallback for browsers without Intl.Segmenter
|
||||
return [...text];
|
||||
}
|
||||
};
|
||||
|
||||
const SplitText: React.FC<SplitTextProps> = ({
|
||||
text = '',
|
||||
className = '',
|
||||
delay = 100,
|
||||
animationFrom = { opacity: 0, transform: 'translate3d(0,40px,0)' },
|
||||
animationTo = { opacity: 1, transform: 'translate3d(0,0,0)' },
|
||||
easing = (t: number) => t,
|
||||
threshold = 0.1,
|
||||
rootMargin = '-100px',
|
||||
textAlign = 'center',
|
||||
onLetterAnimationComplete,
|
||||
onLineCountChange,
|
||||
}) => {
|
||||
const words = text.split(' ').map(splitGraphemes);
|
||||
const letters = words.flat();
|
||||
const [inView, setInView] = useState(false);
|
||||
const ref = useRef<HTMLParagraphElement>(null);
|
||||
const animatedCount = useRef(0);
|
||||
|
||||
const springs = useSprings(
|
||||
letters.length,
|
||||
letters.map((_, i) => ({
|
||||
from: animationFrom,
|
||||
to: inView
|
||||
? async (next: (props: any) => Promise<void>) => {
|
||||
await next(animationTo);
|
||||
animatedCount.current += 1;
|
||||
if (animatedCount.current === letters.length && onLetterAnimationComplete) {
|
||||
onLetterAnimationComplete();
|
||||
}
|
||||
}
|
||||
: animationFrom,
|
||||
delay: i * delay,
|
||||
config: { easing },
|
||||
})),
|
||||
);
|
||||
|
||||
useEffect(() => {
|
||||
const observer = new IntersectionObserver(
|
||||
([entry]) => {
|
||||
if (entry.isIntersecting) {
|
||||
setInView(true);
|
||||
if (ref.current) {
|
||||
observer.unobserve(ref.current);
|
||||
}
|
||||
}
|
||||
},
|
||||
{ threshold, rootMargin },
|
||||
);
|
||||
|
||||
if (ref.current) {
|
||||
observer.observe(ref.current);
|
||||
}
|
||||
|
||||
return () => observer.disconnect();
|
||||
}, [threshold, rootMargin]);
|
||||
|
||||
useEffect(() => {
|
||||
if (ref.current && inView) {
|
||||
const element = ref.current;
|
||||
setTimeout(() => {
|
||||
const lineHeight =
|
||||
parseInt(getComputedStyle(element).lineHeight) ||
|
||||
parseInt(getComputedStyle(element).fontSize) * 1.2;
|
||||
const height = element.offsetHeight;
|
||||
const lines = Math.round(height / lineHeight);
|
||||
|
||||
if (onLineCountChange) {
|
||||
onLineCountChange(lines);
|
||||
}
|
||||
}, 100);
|
||||
}
|
||||
}, [inView, text, onLineCountChange]);
|
||||
|
||||
return (
|
||||
<>
|
||||
<span className="sr-only">{text}</span>
|
||||
<p
|
||||
ref={ref}
|
||||
className={`split-parent inline overflow-hidden ${className}`}
|
||||
style={{ textAlign, whiteSpace: 'normal', wordWrap: 'break-word' }}
|
||||
aria-hidden="true"
|
||||
>
|
||||
{words.map((word, wordIndex) => (
|
||||
<span key={wordIndex} style={{ display: 'inline-block', whiteSpace: 'nowrap' }}>
|
||||
{word.map((letter, letterIndex) => {
|
||||
const index =
|
||||
words.slice(0, wordIndex).reduce((acc, w) => acc + w.length, 0) + letterIndex;
|
||||
|
||||
return (
|
||||
<animated.span
|
||||
key={index}
|
||||
style={springs[index] as unknown as React.CSSProperties}
|
||||
className="inline-block transform transition-opacity will-change-transform"
|
||||
>
|
||||
{letter}
|
||||
</animated.span>
|
||||
);
|
||||
})}
|
||||
{wordIndex < words.length - 1 && (
|
||||
<span style={{ display: 'inline-block', width: '0.3em' }}> </span>
|
||||
)}
|
||||
</span>
|
||||
))}
|
||||
</p>
|
||||
</>
|
||||
);
|
||||
};
|
||||
|
||||
export default SplitText;
|
||||
26
packages/client/src/components/Switch.tsx
Normal file
26
packages/client/src/components/Switch.tsx
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
import * as React from 'react';
|
||||
import * as SwitchPrimitives from '@radix-ui/react-switch';
|
||||
import { cn } from '~/utils';
|
||||
|
||||
const Switch = React.forwardRef<
|
||||
React.ElementRef<typeof SwitchPrimitives.Root>,
|
||||
React.ComponentPropsWithoutRef<typeof SwitchPrimitives.Root>
|
||||
>(({ className, ...props }, ref) => (
|
||||
<SwitchPrimitives.Root
|
||||
className={cn(
|
||||
'peer inline-flex h-6 w-11 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-switch-unchecked',
|
||||
className,
|
||||
)}
|
||||
{...props}
|
||||
ref={ref}
|
||||
>
|
||||
<SwitchPrimitives.Thumb
|
||||
className={cn(
|
||||
'pointer-events-none block h-5 w-5 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0',
|
||||
)}
|
||||
/>
|
||||
</SwitchPrimitives.Root>
|
||||
));
|
||||
Switch.displayName = SwitchPrimitives.Root.displayName;
|
||||
|
||||
export { Switch };
|
||||
90
packages/client/src/components/Table.tsx
Normal file
90
packages/client/src/components/Table.tsx
Normal file
|
|
@ -0,0 +1,90 @@
|
|||
import * as React from 'react';
|
||||
import { cn } from '~/utils';
|
||||
|
||||
const Table = React.forwardRef<HTMLTableElement, React.HTMLAttributes<HTMLTableElement>>(
|
||||
({ className, ...props }, ref) => (
|
||||
<div className="relative w-full overflow-auto">
|
||||
<table ref={ref} className={cn('w-full caption-bottom text-sm', className)} {...props} />
|
||||
</div>
|
||||
),
|
||||
);
|
||||
Table.displayName = 'Table';
|
||||
|
||||
const TableHeader = React.forwardRef<
|
||||
HTMLTableSectionElement,
|
||||
React.HTMLAttributes<HTMLTableSectionElement>
|
||||
>(({ className, ...props }, ref) => (
|
||||
<thead ref={ref} className={cn('[&_tr]:border-b', className)} {...props} />
|
||||
));
|
||||
TableHeader.displayName = 'TableHeader';
|
||||
|
||||
const TableBody = React.forwardRef<
|
||||
HTMLTableSectionElement,
|
||||
React.HTMLAttributes<HTMLTableSectionElement>
|
||||
>(({ className, ...props }, ref) => (
|
||||
<tbody ref={ref} className={cn('[&_tr:last-child]:border-0', className)} {...props} />
|
||||
));
|
||||
TableBody.displayName = 'TableBody';
|
||||
|
||||
const TableFooter = React.forwardRef<
|
||||
HTMLTableSectionElement,
|
||||
React.HTMLAttributes<HTMLTableSectionElement>
|
||||
>(({ className, ...props }, ref) => (
|
||||
<tfoot
|
||||
ref={ref}
|
||||
className={cn('border-t bg-muted/50 font-medium [&>tr]:last:border-b-0', className)}
|
||||
{...props}
|
||||
/>
|
||||
));
|
||||
TableFooter.displayName = 'TableFooter';
|
||||
|
||||
const TableRow = React.forwardRef<HTMLTableRowElement, React.HTMLAttributes<HTMLTableRowElement>>(
|
||||
({ className, ...props }, ref) => (
|
||||
<tr
|
||||
ref={ref}
|
||||
className={cn(
|
||||
'border-b border-border-light transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted',
|
||||
className,
|
||||
)}
|
||||
{...props}
|
||||
/>
|
||||
),
|
||||
);
|
||||
TableRow.displayName = 'TableRow';
|
||||
|
||||
const TableHead = React.forwardRef<
|
||||
HTMLTableCellElement,
|
||||
React.ThHTMLAttributes<HTMLTableCellElement>
|
||||
>(({ className, ...props }, ref) => (
|
||||
<th
|
||||
ref={ref}
|
||||
className={cn(
|
||||
'h-12 px-4 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0',
|
||||
className,
|
||||
)}
|
||||
{...props}
|
||||
/>
|
||||
));
|
||||
TableHead.displayName = 'TableHead';
|
||||
|
||||
const TableCell = React.forwardRef<
|
||||
HTMLTableCellElement,
|
||||
React.TdHTMLAttributes<HTMLTableCellElement>
|
||||
>(({ className, ...props }, ref) => (
|
||||
<td
|
||||
ref={ref}
|
||||
className={cn('p-4 align-middle [&:has([role=checkbox])]:pr-0', className)}
|
||||
{...props}
|
||||
/>
|
||||
));
|
||||
TableCell.displayName = 'TableCell';
|
||||
|
||||
const TableCaption = React.forwardRef<
|
||||
HTMLTableCaptionElement,
|
||||
React.HTMLAttributes<HTMLTableCaptionElement>
|
||||
>(({ className, ...props }, ref) => (
|
||||
<caption ref={ref} className={cn('mt-4 text-sm text-muted-foreground', className)} {...props} />
|
||||
));
|
||||
TableCaption.displayName = 'TableCaption';
|
||||
|
||||
export { Table, TableHeader, TableBody, TableFooter, TableHead, TableRow, TableCell, TableCaption };
|
||||
45
packages/client/src/components/Tabs.tsx
Normal file
45
packages/client/src/components/Tabs.tsx
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
import * as React from 'react';
|
||||
import * as TabsPrimitive from '@radix-ui/react-tabs';
|
||||
import { cn } from '~/utils';
|
||||
|
||||
const Tabs = TabsPrimitive.Root;
|
||||
|
||||
const TabsList = React.forwardRef<
|
||||
React.ElementRef<typeof TabsPrimitive.List>,
|
||||
React.ComponentPropsWithoutRef<typeof TabsPrimitive.List>
|
||||
>(({ className = '', ...props }, ref) => (
|
||||
<TabsPrimitive.List
|
||||
ref={ref}
|
||||
className={cn(
|
||||
'inline-flex items-center justify-center rounded-md bg-surface-primary',
|
||||
className,
|
||||
)}
|
||||
{...props}
|
||||
/>
|
||||
));
|
||||
TabsList.displayName = TabsPrimitive.List.displayName;
|
||||
|
||||
const TabsTrigger = React.forwardRef<
|
||||
React.ElementRef<typeof TabsPrimitive.Trigger>,
|
||||
React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>
|
||||
>(({ className = '', ...props }, ref) => (
|
||||
<TabsPrimitive.Trigger
|
||||
className={cn(
|
||||
'inline-flex min-w-[100px] items-center justify-center rounded-[0.185rem] px-3 py-1.5 text-sm font-medium text-gray-700 transition-all disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-white data-[state=active]:text-gray-800 data-[state=active]:shadow-sm dark:data-[state=active]:bg-gray-700 dark:data-[state=active]:text-gray-200',
|
||||
className,
|
||||
)}
|
||||
{...props}
|
||||
ref={ref}
|
||||
/>
|
||||
));
|
||||
TabsTrigger.displayName = TabsPrimitive.Trigger.displayName;
|
||||
|
||||
const TabsContent = React.forwardRef<
|
||||
React.ElementRef<typeof TabsPrimitive.Content>,
|
||||
React.ComponentPropsWithoutRef<typeof TabsPrimitive.Content>
|
||||
>(({ className = '', ...props }, ref) => (
|
||||
<TabsPrimitive.Content className={cn('mt-2 rounded-md p-6', className)} {...props} ref={ref} />
|
||||
));
|
||||
TabsContent.displayName = TabsPrimitive.Content.displayName;
|
||||
|
||||
export { Tabs, TabsList, TabsTrigger, TabsContent };
|
||||
50
packages/client/src/components/Tag.tsx
Normal file
50
packages/client/src/components/Tag.tsx
Normal file
|
|
@ -0,0 +1,50 @@
|
|||
import * as React from 'react';
|
||||
import { X } from 'lucide-react';
|
||||
import { cn } from '~/utils';
|
||||
|
||||
type TagProps = React.ComponentPropsWithoutRef<'div'> & {
|
||||
label: string;
|
||||
labelClassName?: string;
|
||||
CancelButton?: React.ReactNode;
|
||||
LabelNode?: React.ReactNode;
|
||||
onRemove?: (e: React.MouseEvent<HTMLButtonElement>) => void;
|
||||
};
|
||||
|
||||
const TagPrimitiveRoot = React.forwardRef<HTMLDivElement, TagProps>(
|
||||
(
|
||||
{ CancelButton, LabelNode, label, onRemove, className = '', labelClassName = '', ...props },
|
||||
ref,
|
||||
) => (
|
||||
<div
|
||||
ref={ref}
|
||||
{...props}
|
||||
className={cn(
|
||||
'flex max-h-8 items-center overflow-y-hidden rounded-3xl border-2 border-green-600 bg-green-600/20 text-xs text-green-600 dark:text-white',
|
||||
className,
|
||||
)}
|
||||
>
|
||||
<div className={cn('ml-1 whitespace-pre-wrap px-2 py-1', labelClassName)}>
|
||||
{LabelNode ? <>{LabelNode} </> : null}
|
||||
{label}
|
||||
</div>
|
||||
{CancelButton
|
||||
? CancelButton
|
||||
: onRemove && (
|
||||
<button
|
||||
onClick={(e) => {
|
||||
e.stopPropagation();
|
||||
onRemove(e);
|
||||
}}
|
||||
className="rounded-full bg-green-600/50"
|
||||
aria-label={`Remove ${label}`}
|
||||
>
|
||||
<X className="m-[1.5px] p-1" />
|
||||
</button>
|
||||
)}
|
||||
</div>
|
||||
),
|
||||
);
|
||||
|
||||
TagPrimitiveRoot.displayName = 'Tag';
|
||||
|
||||
export const Tag = React.memo(TagPrimitiveRoot);
|
||||
111
packages/client/src/components/TermsAndConditionsModal.tsx
Normal file
111
packages/client/src/components/TermsAndConditionsModal.tsx
Normal file
|
|
@ -0,0 +1,111 @@
|
|||
import { useMemo } from 'react';
|
||||
import type { TTermsOfService } from 'librechat-data-provider';
|
||||
import MarkdownLite from '~/components/Chat/Messages/Content/MarkdownLite';
|
||||
import DialogTemplate from '~/components/ui/DialogTemplate';
|
||||
import { useAcceptTermsMutation } from '~/data-provider';
|
||||
import { useToastContext } from '~/Providers';
|
||||
import { OGDialog } from './OriginalDialog';
|
||||
import { useLocalize } from '~/hooks';
|
||||
|
||||
const TermsAndConditionsModal = ({
|
||||
open,
|
||||
onOpenChange,
|
||||
onAccept,
|
||||
onDecline,
|
||||
title,
|
||||
modalContent,
|
||||
}: {
|
||||
open: boolean;
|
||||
onOpenChange: (isOpen: boolean) => void;
|
||||
onAccept: () => void;
|
||||
onDecline: () => void;
|
||||
title?: string;
|
||||
contentUrl?: string;
|
||||
modalContent?: TTermsOfService['modalContent'];
|
||||
}) => {
|
||||
const localize = useLocalize();
|
||||
const { showToast } = useToastContext();
|
||||
const acceptTermsMutation = useAcceptTermsMutation({
|
||||
onSuccess: () => {
|
||||
onAccept();
|
||||
onOpenChange(false);
|
||||
},
|
||||
onError: () => {
|
||||
showToast({ message: 'Failed to accept terms' });
|
||||
},
|
||||
});
|
||||
|
||||
const handleAccept = () => {
|
||||
acceptTermsMutation.mutate();
|
||||
};
|
||||
|
||||
const handleDecline = () => {
|
||||
onDecline();
|
||||
onOpenChange(false);
|
||||
};
|
||||
|
||||
const handleOpenChange = (isOpen: boolean) => {
|
||||
if (open && !isOpen) {
|
||||
return;
|
||||
}
|
||||
onOpenChange(isOpen);
|
||||
};
|
||||
|
||||
const content = useMemo(() => {
|
||||
if (typeof modalContent === 'string') {
|
||||
return modalContent;
|
||||
}
|
||||
|
||||
if (Array.isArray(modalContent)) {
|
||||
return modalContent.join('\n');
|
||||
}
|
||||
|
||||
return '';
|
||||
}, [modalContent]);
|
||||
|
||||
return (
|
||||
<OGDialog open={open} onOpenChange={handleOpenChange}>
|
||||
<DialogTemplate
|
||||
title={title ?? localize('com_ui_terms_and_conditions')}
|
||||
className="w-11/12 max-w-3xl sm:w-3/4 md:w-1/2 lg:w-2/5"
|
||||
showCloseButton={false}
|
||||
showCancelButton={false}
|
||||
main={
|
||||
<section
|
||||
// Motivation: This is a dialog, so its content should be focusable
|
||||
// eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex
|
||||
tabIndex={0}
|
||||
className="max-h-[60vh] overflow-y-auto p-4"
|
||||
aria-label={localize('com_ui_terms_and_conditions')}
|
||||
>
|
||||
<div className="prose dark:prose-invert w-full max-w-none !text-text-primary">
|
||||
{content !== '' ? (
|
||||
<MarkdownLite content={content} />
|
||||
) : (
|
||||
<p>{localize('com_ui_no_terms_content')}</p>
|
||||
)}
|
||||
</div>
|
||||
</section>
|
||||
}
|
||||
buttons={
|
||||
<>
|
||||
<button
|
||||
onClick={handleDecline}
|
||||
className="inline-flex h-10 items-center justify-center rounded-lg border border-border-heavy bg-surface-secondary px-4 py-2 text-sm text-text-primary hover:bg-surface-active"
|
||||
>
|
||||
{localize('com_ui_decline')}
|
||||
</button>
|
||||
<button
|
||||
onClick={handleAccept}
|
||||
className="inline-flex h-10 items-center justify-center rounded-lg border border-border-heavy bg-surface-secondary px-4 py-2 text-sm text-text-primary hover:bg-green-500 hover:text-white focus:bg-green-500 focus:text-white dark:hover:bg-green-600 dark:focus:bg-green-600"
|
||||
>
|
||||
{localize('com_ui_accept')}
|
||||
</button>
|
||||
</>
|
||||
}
|
||||
/>
|
||||
</OGDialog>
|
||||
);
|
||||
};
|
||||
|
||||
export default TermsAndConditionsModal;
|
||||
24
packages/client/src/components/Textarea.tsx
Normal file
24
packages/client/src/components/Textarea.tsx
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
/* eslint-disable */
|
||||
import * as React from 'react';
|
||||
import TextareaAutosize from 'react-textarea-autosize';
|
||||
import { cn } from '~/utils';
|
||||
|
||||
export interface TextareaProps extends React.TextareaHTMLAttributes<HTMLTextAreaElement> {}
|
||||
|
||||
const Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(
|
||||
({ className = '', ...props }, ref) => {
|
||||
return (
|
||||
<textarea
|
||||
className={cn(
|
||||
'flex h-20 w-full resize-none rounded-md border border-gray-300 bg-transparent px-3 py-2 text-sm placeholder:text-gray-400 focus:outline-none focus:ring-2 focus:ring-gray-400 focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 dark:border-gray-700 dark:text-gray-50 dark:focus:ring-gray-400 dark:focus:ring-offset-gray-900',
|
||||
className,
|
||||
)}
|
||||
ref={ref}
|
||||
{...props}
|
||||
/>
|
||||
);
|
||||
},
|
||||
);
|
||||
Textarea.displayName = 'Textarea';
|
||||
|
||||
export { Textarea };
|
||||
14
packages/client/src/components/TextareaAutosize.tsx
Normal file
14
packages/client/src/components/TextareaAutosize.tsx
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
import { useRecoilValue } from 'recoil';
|
||||
import { forwardRef, useLayoutEffect, useState } from 'react';
|
||||
import ReactTextareaAutosize from 'react-textarea-autosize';
|
||||
import type { TextareaAutosizeProps } from 'react-textarea-autosize';
|
||||
import store from '~/store';
|
||||
|
||||
export const TextareaAutosize = forwardRef<HTMLTextAreaElement, TextareaAutosizeProps>(
|
||||
(props, ref) => {
|
||||
const [, setIsRerendered] = useState(false);
|
||||
const chatDirection = useRecoilValue(store.chatDirection).toLowerCase();
|
||||
useLayoutEffect(() => setIsRerendered(true), []);
|
||||
return <ReactTextareaAutosize dir={chatDirection} {...props} ref={ref} />;
|
||||
},
|
||||
);
|
||||
103
packages/client/src/components/ThemeSelector.tsx
Normal file
103
packages/client/src/components/ThemeSelector.tsx
Normal file
|
|
@ -0,0 +1,103 @@
|
|||
import React, { useContext, useCallback, useEffect, useState } from 'react';
|
||||
import { Sun, Moon, Monitor } from 'lucide-react';
|
||||
import { ThemeContext } from '~/hooks';
|
||||
|
||||
declare global {
|
||||
interface Window {
|
||||
lastThemeChange?: number;
|
||||
}
|
||||
}
|
||||
|
||||
const Theme = ({ theme, onChange }: { theme: string; onChange: (value: string) => void }) => {
|
||||
const themeIcons = {
|
||||
system: <Monitor />,
|
||||
dark: <Moon color="white" />,
|
||||
light: <Sun />,
|
||||
};
|
||||
|
||||
const nextTheme = theme === 'dark' ? 'light' : 'dark';
|
||||
const label = `Switch to ${nextTheme} theme`;
|
||||
|
||||
useEffect(() => {
|
||||
const handleKeyPress = (e: KeyboardEvent) => {
|
||||
if (e.ctrlKey && e.shiftKey && e.key.toLowerCase() === 't') {
|
||||
e.preventDefault();
|
||||
onChange(nextTheme);
|
||||
}
|
||||
};
|
||||
window.addEventListener('keydown', handleKeyPress);
|
||||
return () => window.removeEventListener('keydown', handleKeyPress);
|
||||
}, [nextTheme, onChange]);
|
||||
|
||||
return (
|
||||
<button
|
||||
className="flex items-center gap-2 rounded-lg p-2 transition-colors hover:bg-surface-hover focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2"
|
||||
aria-label={label}
|
||||
aria-keyshortcuts="Ctrl+Shift+T"
|
||||
onClick={(e) => {
|
||||
e.preventDefault();
|
||||
onChange(nextTheme);
|
||||
}}
|
||||
onKeyDown={(e) => {
|
||||
if (e.key === 'Enter' || e.key === ' ') {
|
||||
e.preventDefault();
|
||||
onChange(nextTheme);
|
||||
}
|
||||
}}
|
||||
>
|
||||
{themeIcons[theme]}
|
||||
</button>
|
||||
);
|
||||
};
|
||||
|
||||
const ThemeSelector = ({ returnThemeOnly }: { returnThemeOnly?: boolean }) => {
|
||||
const { theme, setTheme } = useContext(ThemeContext);
|
||||
const [announcement, setAnnouncement] = useState('');
|
||||
|
||||
const changeTheme = useCallback(
|
||||
(value: string) => {
|
||||
const now = Date.now();
|
||||
if (typeof window.lastThemeChange === 'number' && now - window.lastThemeChange < 500) {
|
||||
return;
|
||||
}
|
||||
window.lastThemeChange = now;
|
||||
|
||||
setTheme(value);
|
||||
setAnnouncement(value === 'dark' ? 'Dark theme enabled' : 'Light theme enabled');
|
||||
},
|
||||
[setTheme],
|
||||
);
|
||||
|
||||
useEffect(() => {
|
||||
if (theme === 'system') {
|
||||
const prefersDarkScheme = window.matchMedia('(prefers-color-scheme: dark)').matches;
|
||||
setTheme(prefersDarkScheme ? 'dark' : 'light');
|
||||
}
|
||||
}, [theme, setTheme]);
|
||||
|
||||
useEffect(() => {
|
||||
if (announcement) {
|
||||
const timeout = setTimeout(() => setAnnouncement(''), 1000);
|
||||
return () => clearTimeout(timeout);
|
||||
}
|
||||
}, [announcement]);
|
||||
|
||||
if (returnThemeOnly === true) {
|
||||
return <Theme theme={theme} onChange={changeTheme} />;
|
||||
}
|
||||
|
||||
return (
|
||||
<div className="flex flex-col items-center justify-center bg-white pt-6 dark:bg-gray-900 sm:pt-0">
|
||||
<div className="absolute bottom-0 left-0 m-4">
|
||||
<Theme theme={theme} onChange={changeTheme} />
|
||||
</div>
|
||||
{announcement && (
|
||||
<div aria-live="polite" className="sr-only">
|
||||
{announcement}
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
export default ThemeSelector;
|
||||
57
packages/client/src/components/Toast.tsx
Normal file
57
packages/client/src/components/Toast.tsx
Normal file
|
|
@ -0,0 +1,57 @@
|
|||
import * as RadixToast from '@radix-ui/react-toast';
|
||||
import { NotificationSeverity } from '~/common/types';
|
||||
import { useToast } from '~/hooks';
|
||||
|
||||
export default function Toast() {
|
||||
const { toast, onOpenChange } = useToast();
|
||||
const severityClassName = {
|
||||
[NotificationSeverity.INFO]: 'border-gray-500 bg-gray-500',
|
||||
[NotificationSeverity.SUCCESS]: 'border-green-500 bg-green-500',
|
||||
[NotificationSeverity.WARNING]: 'border-orange-500 bg-orange-500',
|
||||
[NotificationSeverity.ERROR]: 'border-red-500 bg-red-500',
|
||||
};
|
||||
|
||||
return (
|
||||
<RadixToast.Root
|
||||
open={toast.open}
|
||||
onOpenChange={onOpenChange}
|
||||
className="toast-root"
|
||||
style={{
|
||||
height: '74px',
|
||||
marginBottom: '0px',
|
||||
}}
|
||||
>
|
||||
<div className="w-full p-1 text-center md:w-auto md:text-justify">
|
||||
<div
|
||||
className={`alert-root pointer-events-auto inline-flex flex-row gap-2 rounded-md border px-3 py-2 text-white ${
|
||||
severityClassName[toast.severity]
|
||||
}`}
|
||||
>
|
||||
{toast.showIcon && (
|
||||
<div className="mt-1 flex-shrink-0 flex-grow-0">
|
||||
<svg
|
||||
stroke="currentColor"
|
||||
fill="none"
|
||||
strokeWidth="2"
|
||||
viewBox="0 0 24 24"
|
||||
strokeLinecap="round"
|
||||
strokeLinejoin="round"
|
||||
className="icon-sm"
|
||||
height="1em"
|
||||
width="1em"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
>
|
||||
<polygon points="7.86 2 16.14 2 22 7.86 22 16.14 16.14 22 7.86 22 2 16.14 2 7.86 7.86 2" />
|
||||
<line x1="12" y1="8" x2="12" y2="12" />
|
||||
<line x1="12" y1="16" x2="12.01" y2="16" />
|
||||
</svg>
|
||||
</div>
|
||||
)}
|
||||
<RadixToast.Description className="flex-1 justify-center gap-2">
|
||||
<div className="whitespace-pre-wrap text-left">{toast.message}</div>
|
||||
</RadixToast.Description>
|
||||
</div>
|
||||
</div>
|
||||
</RadixToast.Root>
|
||||
);
|
||||
}
|
||||
75
packages/client/src/components/Tooltip.tsx
Normal file
75
packages/client/src/components/Tooltip.tsx
Normal file
|
|
@ -0,0 +1,75 @@
|
|||
import * as Ariakit from '@ariakit/react';
|
||||
import { AnimatePresence, motion } from 'framer-motion';
|
||||
import { forwardRef, useMemo } from 'react';
|
||||
import { cn } from '~/utils';
|
||||
|
||||
interface TooltipAnchorProps extends Ariakit.TooltipAnchorProps {
|
||||
description: string;
|
||||
side?: 'top' | 'bottom' | 'left' | 'right';
|
||||
className?: string;
|
||||
focusable?: boolean;
|
||||
role?: string;
|
||||
}
|
||||
|
||||
export const TooltipAnchor = forwardRef<HTMLDivElement, TooltipAnchorProps>(function TooltipAnchor(
|
||||
{ description, side = 'top', className, role, ...props },
|
||||
ref,
|
||||
) {
|
||||
const tooltip = Ariakit.useTooltipStore({ placement: side });
|
||||
const mounted = Ariakit.useStoreState(tooltip, (state) => state.mounted);
|
||||
const placement = Ariakit.useStoreState(tooltip, (state) => state.placement);
|
||||
|
||||
const { x, y } = useMemo(() => {
|
||||
const dir = placement.split('-')[0];
|
||||
switch (dir) {
|
||||
case 'top':
|
||||
return { x: 0, y: -8 };
|
||||
case 'bottom':
|
||||
return { x: 0, y: 8 };
|
||||
case 'left':
|
||||
return { x: -8, y: 0 };
|
||||
case 'right':
|
||||
return { x: 8, y: 0 };
|
||||
default:
|
||||
return { x: 0, y: 0 };
|
||||
}
|
||||
}, [placement]);
|
||||
|
||||
const handleKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {
|
||||
if (role === 'button' && event.key === 'Enter') {
|
||||
event.preventDefault();
|
||||
(event.target as HTMLDivElement).click();
|
||||
}
|
||||
};
|
||||
|
||||
return (
|
||||
<Ariakit.TooltipProvider store={tooltip} hideTimeout={0}>
|
||||
<Ariakit.TooltipAnchor
|
||||
{...props}
|
||||
ref={ref}
|
||||
role={role}
|
||||
onKeyDown={handleKeyDown}
|
||||
className={cn('cursor-pointer', className)}
|
||||
/>
|
||||
<AnimatePresence>
|
||||
{mounted === true && (
|
||||
<Ariakit.Tooltip
|
||||
gutter={4}
|
||||
alwaysVisible
|
||||
className="tooltip"
|
||||
render={
|
||||
<motion.div
|
||||
initial={{ opacity: 0, x, y }}
|
||||
animate={{ opacity: 1, x: 0, y: 0 }}
|
||||
exit={{ opacity: 0, x, y }}
|
||||
/>
|
||||
}
|
||||
>
|
||||
<Ariakit.TooltipArrow />
|
||||
{description}
|
||||
</Ariakit.Tooltip>
|
||||
)}
|
||||
</AnimatePresence>
|
||||
</Ariakit.TooltipProvider>
|
||||
);
|
||||
});
|
||||
48
packages/client/src/components/index.ts
Normal file
48
packages/client/src/components/index.ts
Normal file
|
|
@ -0,0 +1,48 @@
|
|||
export * from './Accordion';
|
||||
export * from './AnimatedTabs';
|
||||
export * from './AlertDialog';
|
||||
export * from './Breadcrumb';
|
||||
export * from './Button';
|
||||
export * from './Checkbox';
|
||||
export * from './DataTableColumnHeader';
|
||||
export * from './Dialog';
|
||||
export * from './DropdownMenu';
|
||||
export * from './HoverCard';
|
||||
export * from './Input';
|
||||
export * from './InputNumber';
|
||||
export * from './Label';
|
||||
export * from './OriginalDialog';
|
||||
export * from './Prompt';
|
||||
export * from './QuestionMark';
|
||||
export * from './Slider';
|
||||
export * from './Separator';
|
||||
export * from './InputCombobox';
|
||||
export * from './Skeleton';
|
||||
export * from './Switch';
|
||||
export * from './Table';
|
||||
export * from './Tabs';
|
||||
export * from './Tag';
|
||||
export * from './Textarea';
|
||||
export * from './TextareaAutosize';
|
||||
export * from './Tooltip';
|
||||
export * from './Pagination';
|
||||
export * from './Progress';
|
||||
export * from './InputOTP';
|
||||
export { default as Badge } from './Badge';
|
||||
export { default as Combobox } from './Combobox';
|
||||
export { default as Dropdown } from './Dropdown';
|
||||
export { default as SplitText } from './SplitText';
|
||||
export { default as FormInput } from './FormInput';
|
||||
export { default as PixelCard } from './PixelCard';
|
||||
export { default as FileUpload } from './FileUpload';
|
||||
export { default as DropdownPopup } from './DropdownPopup';
|
||||
export { default as DelayedRender } from './DelayedRender';
|
||||
export { default as ThemeSelector } from './ThemeSelector';
|
||||
export { default as SelectDropDown } from './SelectDropDown';
|
||||
export { default as MultiSelectPop } from './MultiSelectPop';
|
||||
export { default as ModelParameters } from './ModelParameters';
|
||||
export { default as OGDialogTemplate } from './OGDialogTemplate';
|
||||
export { default as InputWithDropdown } from './InputWithDropDown';
|
||||
export { default as SelectDropDownPop } from '../../../../client/src/components/Input/ModelSelect/SelectDropDownPop';
|
||||
export { default as AnimatedSearchInput } from './AnimatedSearchInput';
|
||||
export { default as MultiSelectDropDown } from './MultiSelectDropDown';
|
||||
82
packages/client/src/hooks/ThemeContext.tsx
Normal file
82
packages/client/src/hooks/ThemeContext.tsx
Normal file
|
|
@ -0,0 +1,82 @@
|
|||
//ThemeContext.js
|
||||
// source: https://plainenglish.io/blog/light-and-dark-mode-in-react-web-application-with-tailwind-css-89674496b942
|
||||
import { useSetRecoilState } from 'recoil';
|
||||
import React, { createContext, useState, useEffect } from 'react';
|
||||
import { getInitialTheme, applyFontSize } from '~/utils';
|
||||
import store from '~/store';
|
||||
|
||||
type ProviderValue = {
|
||||
theme: string;
|
||||
setTheme: React.Dispatch<React.SetStateAction<string>>;
|
||||
};
|
||||
|
||||
const defaultContextValue: ProviderValue = {
|
||||
theme: getInitialTheme(),
|
||||
setTheme: () => {
|
||||
return;
|
||||
},
|
||||
};
|
||||
|
||||
export const isDark = (theme: string): boolean => {
|
||||
if (theme === 'system') {
|
||||
return window.matchMedia('(prefers-color-scheme: dark)').matches;
|
||||
}
|
||||
return theme === 'dark';
|
||||
};
|
||||
|
||||
export const ThemeContext = createContext<ProviderValue>(defaultContextValue);
|
||||
|
||||
export const ThemeProvider = ({ initialTheme, children }) => {
|
||||
const [theme, setTheme] = useState(getInitialTheme);
|
||||
const setFontSize = useSetRecoilState(store.fontSize);
|
||||
|
||||
const rawSetTheme = (rawTheme: string) => {
|
||||
const root = window.document.documentElement;
|
||||
const darkMode = isDark(rawTheme);
|
||||
|
||||
root.classList.remove(darkMode ? 'light' : 'dark');
|
||||
root.classList.add(darkMode ? 'dark' : 'light');
|
||||
|
||||
localStorage.setItem('color-theme', rawTheme);
|
||||
};
|
||||
|
||||
useEffect(() => {
|
||||
const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)');
|
||||
const changeThemeOnSystemChange = () => {
|
||||
rawSetTheme(mediaQuery.matches ? 'dark' : 'light');
|
||||
};
|
||||
|
||||
mediaQuery.addEventListener('change', changeThemeOnSystemChange);
|
||||
|
||||
return () => {
|
||||
mediaQuery.removeEventListener('change', changeThemeOnSystemChange);
|
||||
};
|
||||
}, []);
|
||||
|
||||
useEffect(() => {
|
||||
const fontSize = localStorage.getItem('fontSize');
|
||||
if (fontSize == null) {
|
||||
setFontSize('text-base');
|
||||
applyFontSize('text-base');
|
||||
localStorage.setItem('fontSize', JSON.stringify('text-base'));
|
||||
return;
|
||||
}
|
||||
try {
|
||||
applyFontSize(JSON.parse(fontSize));
|
||||
} catch (error) {
|
||||
console.log(error);
|
||||
}
|
||||
// Reason: This effect should only run once, and `setFontSize` is a stable function
|
||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||
}, []);
|
||||
|
||||
if (initialTheme) {
|
||||
rawSetTheme(initialTheme);
|
||||
}
|
||||
|
||||
useEffect(() => {
|
||||
rawSetTheme(theme);
|
||||
}, [theme]);
|
||||
|
||||
return <ThemeContext.Provider value={{ theme, setTheme }}>{children}</ThemeContext.Provider>;
|
||||
};
|
||||
10
packages/client/src/hooks/index.ts
Normal file
10
packages/client/src/hooks/index.ts
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
export * from './ThemeContext';
|
||||
|
||||
export type { TranslationKeys } from './useLocalize';
|
||||
|
||||
export { default as useToast } from './useToast';
|
||||
export { default as useCombobox } from './useCombobox';
|
||||
export { default as useLocalize } from './useLocalize';
|
||||
export { default as useMediaQuery } from './useMediaQuery';
|
||||
export { default as useDelayedRender } from './useDelayedRender';
|
||||
export { default as useOnClickOutside } from './useOnClickOutside';
|
||||
37
packages/client/src/hooks/useCombobox.ts
Normal file
37
packages/client/src/hooks/useCombobox.ts
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
import { useMemo, useState } from 'react';
|
||||
import { matchSorter } from 'match-sorter';
|
||||
import type { OptionWithIcon, MentionOption } from '~/common';
|
||||
|
||||
export default function useCombobox({
|
||||
value,
|
||||
options,
|
||||
}: {
|
||||
value: string;
|
||||
options: Array<OptionWithIcon | MentionOption>;
|
||||
}) {
|
||||
const [open, setOpen] = useState(false);
|
||||
const [searchValue, setSearchValue] = useState('');
|
||||
|
||||
const matches = useMemo(() => {
|
||||
if (!searchValue) {
|
||||
return options;
|
||||
}
|
||||
const keys = ['label', 'value'];
|
||||
const matches = matchSorter(options, searchValue, { keys });
|
||||
// Radix Select does not work if we don't render the selected item, so we
|
||||
// make sure to include it in the list of matches.
|
||||
const selectedItem = options.find((currentItem) => currentItem.value === value);
|
||||
if (selectedItem && !matches.includes(selectedItem)) {
|
||||
matches.push(selectedItem);
|
||||
}
|
||||
return matches;
|
||||
}, [searchValue, value, options]);
|
||||
|
||||
return {
|
||||
open,
|
||||
setOpen,
|
||||
searchValue,
|
||||
setSearchValue,
|
||||
matches,
|
||||
};
|
||||
}
|
||||
37
packages/client/src/hooks/useDelayedRender.tsx
Normal file
37
packages/client/src/hooks/useDelayedRender.tsx
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
import { useState, useRef, useEffect } from 'react';
|
||||
import type { ReactNode } from 'react';
|
||||
|
||||
const useDelayedRender = (delay: number) => {
|
||||
const [delayed, setDelayed] = useState(true);
|
||||
const timerPromiseRef = useRef<Promise<void> | null>(null);
|
||||
|
||||
useEffect(() => {
|
||||
if (delayed) {
|
||||
const timerPromise = new Promise<void>((resolve) => {
|
||||
const timeout = setTimeout(() => {
|
||||
setDelayed(false);
|
||||
resolve();
|
||||
}, delay);
|
||||
|
||||
return () => {
|
||||
clearTimeout(timeout);
|
||||
};
|
||||
});
|
||||
|
||||
timerPromiseRef.current = timerPromise;
|
||||
}
|
||||
|
||||
return () => {
|
||||
timerPromiseRef.current = null;
|
||||
};
|
||||
}, [delay, delayed]);
|
||||
|
||||
return (fn: () => ReactNode) => {
|
||||
if (delayed && timerPromiseRef.current) {
|
||||
throw timerPromiseRef.current;
|
||||
}
|
||||
return fn();
|
||||
};
|
||||
};
|
||||
|
||||
export default useDelayedRender;
|
||||
21
packages/client/src/hooks/useLocalize.ts
Normal file
21
packages/client/src/hooks/useLocalize.ts
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
import { useEffect } from 'react';
|
||||
import { TOptions } from 'i18next';
|
||||
import { useRecoilValue } from 'recoil';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { resources } from '~/locales/i18n';
|
||||
import store from '~/store';
|
||||
|
||||
export type TranslationKeys = keyof typeof resources.en.translation;
|
||||
|
||||
export default function useLocalize() {
|
||||
const lang = useRecoilValue(store.lang);
|
||||
const { t, i18n } = useTranslation();
|
||||
|
||||
useEffect(() => {
|
||||
if (i18n.language !== lang) {
|
||||
i18n.changeLanguage(lang);
|
||||
}
|
||||
}, [lang, i18n]);
|
||||
|
||||
return (phraseKey: TranslationKeys, options?: TOptions) => t(phraseKey, options);
|
||||
}
|
||||
17
packages/client/src/hooks/useMediaQuery.tsx
Normal file
17
packages/client/src/hooks/useMediaQuery.tsx
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
import { useEffect, useState } from 'react';
|
||||
|
||||
export default function useMediaQuery(query: string) {
|
||||
const [matches, setMatches] = useState(false);
|
||||
|
||||
useEffect(() => {
|
||||
const media = window.matchMedia(query);
|
||||
if (media.matches !== matches) {
|
||||
setMatches(media.matches);
|
||||
}
|
||||
const listener = () => setMatches(media.matches);
|
||||
media.addEventListener('change', listener);
|
||||
return () => media.removeEventListener('change', listener);
|
||||
}, [matches, query]);
|
||||
|
||||
return matches;
|
||||
}
|
||||
41
packages/client/src/hooks/useOnClickOutside.ts
Normal file
41
packages/client/src/hooks/useOnClickOutside.ts
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
import { useEffect, RefObject } from 'react';
|
||||
type Handler = () => void;
|
||||
|
||||
export default function useOnClickOutside(
|
||||
ref: RefObject<HTMLElement>,
|
||||
handler: Handler,
|
||||
excludeIds: string[],
|
||||
customCondition?: (target: EventTarget | Element | null) => boolean,
|
||||
): void {
|
||||
useEffect(() => {
|
||||
const handleClickOutside = (event: MouseEvent) => {
|
||||
const target = event.target as Node | null;
|
||||
|
||||
if (target && 'id' in target && excludeIds.includes((target as HTMLElement).id)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (
|
||||
target?.parentNode &&
|
||||
'id' in target.parentNode &&
|
||||
excludeIds.includes((target.parentNode as HTMLElement).id)
|
||||
) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (customCondition && customCondition(target)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (ref.current && !ref.current.contains(target)) {
|
||||
handler();
|
||||
}
|
||||
};
|
||||
|
||||
document.addEventListener('mousedown', handleClickOutside);
|
||||
return () => {
|
||||
document.removeEventListener('mousedown', handleClickOutside);
|
||||
};
|
||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||
}, [ref, handler]);
|
||||
}
|
||||
58
packages/client/src/hooks/useToast.ts
Normal file
58
packages/client/src/hooks/useToast.ts
Normal file
|
|
@ -0,0 +1,58 @@
|
|||
import { useRecoilState } from 'recoil';
|
||||
import { useRef, useEffect } from 'react';
|
||||
import type { TShowToast } from '~/common';
|
||||
import { NotificationSeverity } from '~/common';
|
||||
import store from '~/store';
|
||||
|
||||
export default function useToast(showDelay = 100) {
|
||||
const [toast, setToast] = useRecoilState(store.toastState);
|
||||
const showTimerRef = useRef<number | null>(null);
|
||||
const hideTimerRef = useRef<number | null>(null);
|
||||
|
||||
useEffect(() => {
|
||||
return () => {
|
||||
if (showTimerRef.current !== null) {
|
||||
clearTimeout(showTimerRef.current);
|
||||
}
|
||||
if (hideTimerRef.current !== null) {
|
||||
clearTimeout(hideTimerRef.current);
|
||||
}
|
||||
};
|
||||
}, []);
|
||||
|
||||
const showToast = ({
|
||||
message,
|
||||
severity = NotificationSeverity.SUCCESS,
|
||||
showIcon = true,
|
||||
duration = 3000, // default duration for the toast to be visible
|
||||
status,
|
||||
}: TShowToast) => {
|
||||
// Clear existing timeouts
|
||||
if (showTimerRef.current !== null) {
|
||||
clearTimeout(showTimerRef.current);
|
||||
}
|
||||
if (hideTimerRef.current !== null) {
|
||||
clearTimeout(hideTimerRef.current);
|
||||
}
|
||||
|
||||
// Timeout to show the toast
|
||||
showTimerRef.current = window.setTimeout(() => {
|
||||
setToast({
|
||||
open: true,
|
||||
message,
|
||||
severity: (status as NotificationSeverity) ?? severity,
|
||||
showIcon,
|
||||
});
|
||||
// Hides the toast after the specified duration
|
||||
hideTimerRef.current = window.setTimeout(() => {
|
||||
setToast((prevToast) => ({ ...prevToast, open: false }));
|
||||
}, duration);
|
||||
}, showDelay);
|
||||
};
|
||||
|
||||
return {
|
||||
toast,
|
||||
onOpenChange: (open: boolean) => setToast({ ...toast, open }),
|
||||
showToast,
|
||||
};
|
||||
}
|
||||
0
packages/client/src/index.ts
Normal file
0
packages/client/src/index.ts
Normal file
47
packages/client/src/locales/Translation.spec.ts
Normal file
47
packages/client/src/locales/Translation.spec.ts
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
import i18n from './i18n';
|
||||
import English from './en/translation.json';
|
||||
import French from './fr/translation.json';
|
||||
import Spanish from './es/translation.json';
|
||||
|
||||
describe('i18next translation tests', () => {
|
||||
// Ensure i18next is initialized before any tests run
|
||||
beforeAll(async () => {
|
||||
if (!i18n.isInitialized) {
|
||||
await i18n.init();
|
||||
}
|
||||
});
|
||||
|
||||
it('should return the correct translation for a valid key in English', () => {
|
||||
i18n.changeLanguage('en');
|
||||
expect(i18n.t('com_ui_examples')).toBe(English.com_ui_examples);
|
||||
});
|
||||
|
||||
it('should return the correct translation for a valid key in French', () => {
|
||||
i18n.changeLanguage('fr');
|
||||
expect(i18n.t('com_ui_examples')).toBe(French.com_ui_examples);
|
||||
});
|
||||
|
||||
it('should return the correct translation for a valid key in Spanish', () => {
|
||||
i18n.changeLanguage('es');
|
||||
expect(i18n.t('com_ui_examples')).toBe(Spanish.com_ui_examples);
|
||||
});
|
||||
|
||||
it('should fallback to English for an invalid language code', () => {
|
||||
// When an invalid language is provided, i18next should fallback to English
|
||||
i18n.changeLanguage('invalid-code');
|
||||
expect(i18n.t('com_ui_examples')).toBe(English.com_ui_examples);
|
||||
});
|
||||
|
||||
it('should return the key itself for an invalid key', () => {
|
||||
i18n.changeLanguage('en');
|
||||
expect(i18n.t('invalid-key')).toBe('invalid-key'); // Returns the key itself
|
||||
});
|
||||
|
||||
it('should correctly format placeholders in the translation', () => {
|
||||
i18n.changeLanguage('en');
|
||||
expect(i18n.t('com_endpoint_default_with_num', { 0: 'John' })).toBe('default: John');
|
||||
|
||||
i18n.changeLanguage('fr');
|
||||
expect(i18n.t('com_endpoint_default_with_num', { 0: 'Marie' })).toBe('par défaut : Marie');
|
||||
});
|
||||
});
|
||||
700
packages/client/src/locales/ar/translation.json
Normal file
700
packages/client/src/locales/ar/translation.json
Normal file
|
|
@ -0,0 +1,700 @@
|
|||
{
|
||||
"com_a11y_ai_composing": "الذكاء الاصطناعي ما زال يكتب",
|
||||
"com_a11y_end": "انتهى الذكاء الاصطناعي من الرد",
|
||||
"com_a11y_start": "بدأ الذكاء الاصطناعي بالرد",
|
||||
"com_agents_allow_editing": "السماح للمستخدمين الآخرين بتعديل الوكيل الخاص بك",
|
||||
"com_agents_by_librechat": "بواسطة LibreChat",
|
||||
"com_agents_code_interpreter": "عند التمكين، يسمح للوكيل الخاص بك باستخدام واجهة برمجة التطبيقات لمفسر الشفرة LibreChat لتشغيل الشفرة المُنشأة، بما في ذلك معالجة الملفات، بشكل آمن. يتطلب مفتاح API صالح.",
|
||||
"com_agents_code_interpreter_title": "واجهة برمجة مُفسِّر الشفرة",
|
||||
"com_agents_create_error": "حدث خطأ أثناء إنشاء الوكيل الخاص بك",
|
||||
"com_agents_description_placeholder": "اختياري: اشرح عميلك هنا",
|
||||
"com_agents_enable_file_search": "تمكين البحث عن الملفات",
|
||||
"com_agents_file_search_disabled": "يجب إنشاء الوكيل قبل تحميل الملفات للبحث في الملفات.",
|
||||
"com_agents_file_search_info": "عند التمكين، سيتم إعلام الوكيل بأسماء الملفات المدرجة أدناه بالضبط، مما يتيح له استرجاع السياق ذي الصلة من هذه الملفات.",
|
||||
"com_agents_instructions_placeholder": "التعليمات النظامية التي يستخدمها الوكيل",
|
||||
"com_agents_missing_provider_model": "يرجى تحديد المزود والنموذج قبل إنشاء الوكيل",
|
||||
"com_agents_name_placeholder": "اختياري: اسم العميل",
|
||||
"com_agents_no_access": "ليس لديك صلاحية تعديل هذا الوكيل.",
|
||||
"com_agents_not_available": "المساعد غير متوفر",
|
||||
"com_agents_search_name": "البحث عن الوكلاء بالاسم",
|
||||
"com_agents_update_error": "حدث خطأ أثناء تحديث الوكيل الخاص بك.",
|
||||
"com_assistants_actions": "إجراءات",
|
||||
"com_assistants_actions_disabled": "يجب عليك إنشاء مساعد قبل إضافة إجراءات.",
|
||||
"com_assistants_actions_info": "اسمح لمساعدك باسترداد المعلومات أو اتخاذ إجراءات عبر واجهات برمجة التطبيقات",
|
||||
"com_assistants_add_actions": "إضافة إجراءات",
|
||||
"com_assistants_add_tools": "إضافة أدوات",
|
||||
"com_assistants_append_date": "إضافة التاريخ والوقت الحالي",
|
||||
"com_assistants_append_date_tooltip": "عند التفعيل، سيتم إضافة التاريخ والوقت الحالي للعميل إلى تعليمات نظام المساعد.",
|
||||
"com_assistants_available_actions": "الإجراءات المتاحة",
|
||||
"com_assistants_capabilities": "قدرات",
|
||||
"com_assistants_code_interpreter": "مُفسِّر الشفرة",
|
||||
"com_assistants_code_interpreter_files": "الملفات التالية متاحة فقط لمفسر الشفرة:",
|
||||
"com_assistants_code_interpreter_info": "يُمكّن مُفسِّر الشفرة المساعد من كتابة وتشغيل الشفرة البرمجية. يمكن لهذه الأداة معالجة الملفات ذات البيانات والتنسيقات المتنوعة، وإنشاء ملفات مثل الرسوم البيانية",
|
||||
"com_assistants_completed_action": "تحدث إلى {{0}}",
|
||||
"com_assistants_completed_function": "تم تشغيل {{0}}",
|
||||
"com_assistants_conversation_starters": "بدء المحادثات",
|
||||
"com_assistants_conversation_starters_placeholder": "أدخل بداية المحادثة",
|
||||
"com_assistants_create_error": "حدث خطأ أثناء إنشاء المساعد الخاص بك.",
|
||||
"com_assistants_create_success": "تم إنشاؤه بنجاح",
|
||||
"com_assistants_delete_actions_error": "حدث خطأ أثناء حذف الإجراء.",
|
||||
"com_assistants_delete_actions_success": "تم حذف الإجراء من المساعد بنجاح",
|
||||
"com_assistants_description_placeholder": "اختياري: اشرح مساعدك هنا",
|
||||
"com_assistants_domain_info": "أرسل المساعد هذه المعلومات إلى {{0}}",
|
||||
"com_assistants_file_search": "بحث الملفات",
|
||||
"com_assistants_file_search_info": "لا يتم دعم إرفاق مخازن الكتل الرقمية لميزة البحث في الملفات بعد. يمكنك إرفاقها من ملعب المزود أو إرفاق ملفات إلى الرسائل للبحث في الملفات على أساس المحادثة.",
|
||||
"com_assistants_function_use": "المساعد استخدم {{0}}",
|
||||
"com_assistants_image_vision": "رؤية الصورة",
|
||||
"com_assistants_instructions_placeholder": "التعليمات النظامية التي يستخدمها المساعد",
|
||||
"com_assistants_knowledge": "المعرفة",
|
||||
"com_assistants_knowledge_disabled": "يجب إنشاء المساعد وتمكين المفسر البرمجي أو الاسترجاع وحفظهما قبل تحميل الملفات كمعرفة.",
|
||||
"com_assistants_knowledge_info": "إذا قمت بتحميل ملفات تحت معلومات، فقد تتضمن المحادثات مع المساعد الخاص بك محتويات الملف.",
|
||||
"com_assistants_max_starters_reached": "تم الوصول إلى الحد الأقصى لبادئات المحادثة",
|
||||
"com_assistants_name_placeholder": "اختياري: اسم المساعد",
|
||||
"com_assistants_non_retrieval_model": "البحث في الملفات غير مُمكّن على هذا النموذج. يرجى تحديد نموذج آخر.",
|
||||
"com_assistants_retrieval": "استرداد",
|
||||
"com_assistants_running_action": "جارٍ تنفيذ الإجراء",
|
||||
"com_assistants_search_name": "البحث عن المساعدين بالاسم",
|
||||
"com_assistants_update_actions_error": "حدث خطأ أثناء إنشاء أو تحديث الإجراء.",
|
||||
"com_assistants_update_actions_success": "تم إنشاء أو تحديث الإجراء بنجاح",
|
||||
"com_assistants_update_error": "حدث خطأ أثناء تحديث المساعد الافتراضي الخاص بك.",
|
||||
"com_assistants_update_success": "تم التحديث بنجاح",
|
||||
"com_auth_already_have_account": "هل لديك حساب بالفعل؟",
|
||||
"com_auth_back_to_login": "العودة إلى تسجيل الدخول",
|
||||
"com_auth_click": "انقر",
|
||||
"com_auth_click_here": "انقر هنا",
|
||||
"com_auth_continue": "استمر",
|
||||
"com_auth_create_account": "أنشئ حسابك",
|
||||
"com_auth_discord_login": "تسجيل الدخول بواسطة Discord",
|
||||
"com_auth_email": "البريد الإلكتروني",
|
||||
"com_auth_email_address": "عنوان البريد الإلكتروني",
|
||||
"com_auth_email_max_length": "يجب ألا يزيد البريد الإلكتروني عن 120 حرفًا",
|
||||
"com_auth_email_min_length": "يجب أن يكون البريد الإلكتروني على الأقل 6 أحرف",
|
||||
"com_auth_email_pattern": "يجب أن تدخل عنوان بريد إلكتروني صالح",
|
||||
"com_auth_email_required": "البريد الإلكتروني مطلوب",
|
||||
"com_auth_email_resend_link": "إعادة إرسال البريد الإلكتروني",
|
||||
"com_auth_email_resent_failed": "فشل في إعادة إرسال البريد الإلكتروني للتحقق",
|
||||
"com_auth_email_resent_success": "تم إعادة إرسال البريد الإلكتروني للتحقق بنجاح",
|
||||
"com_auth_email_verification_failed": "فشل التحقق من البريد الإلكتروني",
|
||||
"com_auth_email_verification_failed_token_missing": "فشل التحقق، الرمز مفقود",
|
||||
"com_auth_email_verification_in_progress": "جارٍ التحقق من بريدك الإلكتروني، يرجى الانتظار",
|
||||
"com_auth_email_verification_invalid": "التحقق من البريد الإلكتروني غير صالح",
|
||||
"com_auth_email_verification_redirecting": "جارٍ إعادة التوجيه خلال {{0}} ثوانٍ...",
|
||||
"com_auth_email_verification_resend_prompt": "لم يصلك البريد الإلكتروني؟",
|
||||
"com_auth_email_verification_success": "تم التحقق من البريد الإلكتروني بنجاح",
|
||||
"com_auth_error_create": "كان هناك خطأ في محاولة تسجيل حسابك. يرجى المحاولة مرة أخرى.",
|
||||
"com_auth_error_invalid_reset_token": "رمز إعادة تعيين كلمة المرور هذا لم يعد صالحًا.",
|
||||
"com_auth_error_login": "تعذر تسجيل الدخول باستخدام المعلومات المقدمة. يرجى التحقق من بيانات الاعتماد الخاصة بك والمحاولة مرة أخرى.",
|
||||
"com_auth_error_login_ban": "تم حظر حسابك مؤقتًا بسبب انتهاكات لخدمتنا.",
|
||||
"com_auth_error_login_rl": "محاولات تسجيل الدخول الكثيرة في فترة زمنية قصيرة. يرجى المحاولة مرة أخرى لاحقًا.",
|
||||
"com_auth_error_login_server": "كان هناك خطأ في الخادم الداخلي. يرجى الانتظار بضع لحظات وحاول مرة أخرى.",
|
||||
"com_auth_error_login_unverified": "لم يتم التحقق من حسابك بعد. يرجى التحقق من بريدك الإلكتروني للحصول على رابط التحقق.",
|
||||
"com_auth_facebook_login": "تسجيل الدخول بواسطة Facebook",
|
||||
"com_auth_full_name": "الاسم الكامل",
|
||||
"com_auth_github_login": "تسجيل الدخول بواسطة Github",
|
||||
"com_auth_google_login": "تسجيل الدخول بواسطة Google",
|
||||
"com_auth_here": "هنا",
|
||||
"com_auth_login": "تسجيل الدخول",
|
||||
"com_auth_login_with_new_password": "يمكنك الآن تسجيل الدخول باستخدام كلمة المرور الجديدة الخاصة بك.",
|
||||
"com_auth_name_max_length": "يجب أن يكون الاسم أقل من 80 حرفًا",
|
||||
"com_auth_name_min_length": "يجب أن يكون الاسم على الأقل 3 أحرف",
|
||||
"com_auth_name_required": "الاسم مطلوب",
|
||||
"com_auth_no_account": "ليس لديك حساب؟",
|
||||
"com_auth_password": "كلمة المرور",
|
||||
"com_auth_password_confirm": "تأكيد كلمة المرور",
|
||||
"com_auth_password_forgot": "نسيت كلمة المرور؟",
|
||||
"com_auth_password_max_length": "يجب أن تكون كلمة المرور أقل من 128 حرفًا",
|
||||
"com_auth_password_min_length": "يجب أن تكون كلمة المرور على الأقل 8 أحرف",
|
||||
"com_auth_password_not_match": "كلمات المرور لا تتطابق",
|
||||
"com_auth_password_required": "كلمة المرور مطلوبة",
|
||||
"com_auth_registration_success_generic": "يرجى التحقق من بريدك الإلكتروني لتأكيد عنوان البريد الإلكتروني الخاص بك.",
|
||||
"com_auth_registration_success_insecure": "تم التسجيل بنجاح.",
|
||||
"com_auth_reset_password": "إعادة تعيين كلمة المرور",
|
||||
"com_auth_reset_password_if_email_exists": "إذا كان هناك حساب مرتبط بهذا البريد الإلكتروني، فقد تم إرسال بريد إلكتروني يحتوي على تعليمات إعادة تعيين كلمة المرور. يرجى التحقق من مجلد البريد غير المرغوب فيه.",
|
||||
"com_auth_reset_password_link_sent": "تم إرسال البريد الإلكتروني",
|
||||
"com_auth_reset_password_success": "نجاح إعادة تعيين كلمة المرور",
|
||||
"com_auth_sign_in": "تسجيل الدخول",
|
||||
"com_auth_sign_up": "سجل الان",
|
||||
"com_auth_submit_registration": "إرسال التسجيل",
|
||||
"com_auth_to_reset_your_password": "لإعادة تعيين كلمة المرور الخاصة بك.",
|
||||
"com_auth_to_try_again": "للمحاولة مرة أخرى.",
|
||||
"com_auth_username": "اسم المستخدم (اختياري)",
|
||||
"com_auth_username_max_length": "يجب أن يكون اسم المستخدم أقل من 20 حرفًا",
|
||||
"com_auth_username_min_length": "يجب أن يكون اسم المستخدم على الأقل 2 أحرف",
|
||||
"com_auth_welcome_back": "مرحبا بك مرة أخرى",
|
||||
"com_click_to_download": "(انقر هنا للتنزيل)",
|
||||
"com_download_expired": "انتهت صلاحية التنزيل",
|
||||
"com_download_expires": "انقر هنا للتنزيل - تنتهي الصلاحية في {{0}}",
|
||||
"com_endpoint": "نقطة النهاية",
|
||||
"com_endpoint_agent": "الوكيل",
|
||||
"com_endpoint_agent_model": "نموذج الوكيل (موصى به: GPT-3.5)",
|
||||
"com_endpoint_agent_placeholder": "يرجى تحديد الوكيل",
|
||||
"com_endpoint_ai": "الذكاء الاصطناعي",
|
||||
"com_endpoint_anthropic_maxoutputtokens": "العدد الأقصى من الرموز التي يمكن إنشاؤها في الرد. حدد قيمة أقل للحصول على ردود أقصر وقيمة أعلى للحصول على ردود أطول.",
|
||||
"com_endpoint_anthropic_prompt_cache": "يتيح تخزين الموجهات المؤقت إعادة استخدام السياق أو التعليمات الكبيرة عبر استدعاءات API، مما يقلل التكاليف ووقت الاستجابة",
|
||||
"com_endpoint_anthropic_temp": "المدى من 0 إلى 1. استخدم درجة الحرارة الأقرب إلى 0 للمهام التحليلية / اختيارية متعددة، وأقرب إلى 1 للمهام الإبداعية والإنشائية. نوصي بتغيير هذا أو Top P ولكن ليس كلاهما.",
|
||||
"com_endpoint_anthropic_topk": "يغير top-k الطريقة التي يختار فيها النموذج الرموز للإخراج. يعني top-k 1 أن الرمز المحدد هو الأكثر احتمالية من بين جميع الرموز في المفردات النموذجية (يسمى أيضا الترميز الطمع)، بينما يعني top-k من 3 أن الرمز القادم محدد من بين الرموز الثلاثة الأكثر احتمالية (باستخدام درجة الحرارة).",
|
||||
"com_endpoint_anthropic_topp": "Top-p يغير الطريقة التي يختار فيها النموذج الرموز للإخراج. يتم اختيار الرموز من الأكثر احتمالية k (انظر المعلمة topK) إلى الأقل حتى يساوي مجموع احتمالاتهم قيمة top-p.",
|
||||
"com_endpoint_assistant": "المساعد",
|
||||
"com_endpoint_assistant_model": "نموذج المساعد",
|
||||
"com_endpoint_assistant_placeholder": "يرجى تحديد مساعد من اللوحة الجانبية اليمنى",
|
||||
"com_endpoint_completion": "إكمال",
|
||||
"com_endpoint_completion_model": "نموذج الإكمال (موصى به: GPT-4)",
|
||||
"com_endpoint_config_click_here": "انقر هنا",
|
||||
"com_endpoint_config_google_api_info": "للحصول على مفتاح Generative Language API الخاص بك (لـ Gemini)،",
|
||||
"com_endpoint_config_google_api_key": "مفتاح Google API",
|
||||
"com_endpoint_config_google_cloud_platform": "تكوين نقطة نهاية Google Cloud Platform",
|
||||
"com_endpoint_config_google_gemini_api": "تكوين نقطة نهاية Gemini API",
|
||||
"com_endpoint_config_google_service_key": "مفتاح حساب خدمة Google",
|
||||
"com_endpoint_config_key": "تعيين مفتاح API",
|
||||
"com_endpoint_config_key_encryption": "سيتم تشفير مفتاحك وحذفه في",
|
||||
"com_endpoint_config_key_for": "ضع API Key لـ",
|
||||
"com_endpoint_config_key_google_need_to": "أنت بحاجة إلى",
|
||||
"com_endpoint_config_key_google_service_account": "أنشئ حساب خدمة",
|
||||
"com_endpoint_config_key_google_vertex_ai": "تمكين Vertex AI",
|
||||
"com_endpoint_config_key_google_vertex_api": "API على Google Cloud، ثم",
|
||||
"com_endpoint_config_key_google_vertex_api_role": "تأكد من النقر على إنشاء ومتابعة\" لمنح الدور \"Vertex AI User\" على الأقل. أخيرًا، قم بإنشاء مفتاح JSON للعمل على استيراده هنا.",
|
||||
"com_endpoint_config_key_import_json_key": "استيراد مفتاح حساب الخدمة JSON.",
|
||||
"com_endpoint_config_key_import_json_key_invalid": "مفتاح حساب الخدمة JSON غير صالح، هل قمت باستيراد الملف الصحيح؟",
|
||||
"com_endpoint_config_key_import_json_key_success": "تم استيراد مفتاح حساب الخدمة JSON بنجاح",
|
||||
"com_endpoint_config_key_name": "مفتـاح",
|
||||
"com_endpoint_config_key_never_expires": "لن ينتهي مفتاحك أبداً",
|
||||
"com_endpoint_config_placeholder": "اضبط مفتاحك في قائمة الرأس للدردشة.",
|
||||
"com_endpoint_config_value": "أدخل القيمة لـ",
|
||||
"com_endpoint_context": "السياق",
|
||||
"com_endpoint_context_info": "الحد الأقصى لعدد الرموز التي يمكن استخدامها للسياق. استخدم هذا للتحكم في عدد الرموز المرسلة لكل طلب. إذا لم يتم تحديده، سيتم استخدام الإعدادات الافتراضية للنظام بناءً على حجم سياق نماذج معروفة. قد يؤدي تعيين قيم أعلى إلى حدوث أخطاء و/أو تكلفة رموز أعلى.",
|
||||
"com_endpoint_context_tokens": "الحد الأقصى لرموز السياق",
|
||||
"com_endpoint_custom_name": "اسم مخصص",
|
||||
"com_endpoint_default": "الافتراضي",
|
||||
"com_endpoint_default_blank": "الافتراضي: فارغ",
|
||||
"com_endpoint_default_empty": "الافتراضي: فارغ",
|
||||
"com_endpoint_default_with_num": "الافتراضي: {{0}}",
|
||||
"com_endpoint_examples": "الإعدادات المسبقة ",
|
||||
"com_endpoint_export": "تصدير",
|
||||
"com_endpoint_export_share": "تصدير/مشاركة",
|
||||
"com_endpoint_frequency_penalty": "عقوبة التكرار",
|
||||
"com_endpoint_func_hover": "تمكين استخدام الإضافات كوظائف OpenAI",
|
||||
"com_endpoint_google_custom_name_placeholder": "قم بتعيين اسم مخصص لـ Google",
|
||||
"com_endpoint_google_maxoutputtokens": "الحد الأقصى لعدد الرموز التي يمكن إنشاؤها في الرد. حدد قيمة أقل للردود الأقصر وقيمة أعلى للردود الأطول.",
|
||||
"com_endpoint_google_temp": "القيم الأعلى = أكثر عشوائية، بينما القيم الأقل = أكثر تركيزًا وحتمية. نوصي بتغيير هذا أو Top P ولكن ليس كلاهما.",
|
||||
"com_endpoint_google_topk": "Top-k يغير كيفية اختيار النموذج للرموز للإخراج. top-k من 1 يعني أن الرمز المحدد هو الأكثر احتمالية بين جميع الرموز في مفردات النموذج (يسمى أيضًا الترميز الجشعي)، بينما top-k من 3 يعني أن الرمز التالي يتم اختياره من بين الرموز الثلاثة الأكثر احتمالية (باستخدام الحرارة).",
|
||||
"com_endpoint_google_topp": "Top-p يغير كيفية اختيار النموذج للرموز للإخراج. يتم اختيار الرموز من الأكثر K (انظر معلمة topK) احتمالًا إلى الأقل حتى يصبح مجموع احتمالاتهم يساوي قيمة top-p.",
|
||||
"com_endpoint_instructions_assistants": "تعليمات التجاوز",
|
||||
"com_endpoint_instructions_assistants_placeholder": "يتجاوز التعليمات الخاصة بالمساعد. هذا مفيد لتعديل السلوك على أساس كل مرة.",
|
||||
"com_endpoint_max_output_tokens": "الحد الأقصى لعدد الرموز المنتجة",
|
||||
"com_endpoint_message": "رسالة",
|
||||
"com_endpoint_message_new": "رسالة {{0}}",
|
||||
"com_endpoint_message_not_appendable": "عدّل رسالتك أو أعد إنشاءها.",
|
||||
"com_endpoint_my_preset": "الإعداد المسبق الخاص بي",
|
||||
"com_endpoint_no_presets": "لا يوجد إعداد مسبق بعد",
|
||||
"com_endpoint_open_menu": "افتح القائمة",
|
||||
"com_endpoint_openai_custom_name_placeholder": "قم بتعيين اسم مخصص لـ ChatGPT",
|
||||
"com_endpoint_openai_detail": "دقة الطلبات للرؤية. \"منخفضة\" أرخص وأسرع، \"عالية\" أكثر تفصيلاً وتكلفة، و\"تلقائي\" سيختار تلقائيًا بين الاثنين بناءً على دقة الصورة.",
|
||||
"com_endpoint_openai_freq": "رقم بين -2.0 و 2.0. القيم الموجبة تعاقب الرموز الجديدة بناءً على تكرارها الحالي في النص حتى الآن، مما يقلل من احتمالية تكرار النموذج لنفس السطر حرفيًا.",
|
||||
"com_endpoint_openai_max": "الحد الأقصى للرموز لتوليد. إجمالي طول الرموز المدخلة والرموز المولدة محدود بطول سياق النموذج.",
|
||||
"com_endpoint_openai_max_tokens": "حقل `max_tokens` الاختياري، يمثل الحد الأقصى لعدد الرموز التي يمكن توليدها في إكمال المحادثة.\n\nإجمالي طول رموز الإدخال والرموز المولدة محدود بطول سياق النموذج. قد تواجه أخطاء إذا تجاوز هذا العدد الحد الأقصى لرموز السياق.",
|
||||
"com_endpoint_openai_pres": "رقم بين -2.0 و 2.0. القيم الموجبة تعاقب الرموز الجديدة بناءً على ما إذا كانت تظهر في النص حتى الآن، مما يزيد احتمالية النموذج للحديث عن مواضيع جديدة.",
|
||||
"com_endpoint_openai_prompt_prefix_placeholder": "قم بتعيين تعليمات مخصصة لتضمينها في رسالة النظام. الافتراضي: لا شيء",
|
||||
"com_endpoint_openai_resend": "إعادة إرسال جميع الصور المرفقة مسبقًا. ملاحظة: قد يؤدي هذا إلى زيادة كبيرة في تكلفة الرموز وقد تواجه أخطاء مع العديد من مرفقات الصور.",
|
||||
"com_endpoint_openai_resend_files": "إعادة إرسال جميع الملفات المرفقة مسبقًا. ملاحظة: سيؤدي هذا إلى زيادة تكلفة الرموز وقد تواجه أخطاء مع العديد من المرفقات.",
|
||||
"com_endpoint_openai_stop": "حتى 4 تسلسلات حيث ستتوقف الواجهة البرمجية عن توليد المزيد من الرموز.",
|
||||
"com_endpoint_openai_temp": "القيم الأعلى = أكثر عشوائية ، بينما القيم الأقل = أكثر تركيزًا وتحديدًا. نوصي بتغيير هذا أو Top P ولكن ليس كلاهما.",
|
||||
"com_endpoint_openai_topp": "بديل للعينة مع درجة الحرارة، يسمى العينة النووية، حيث ينظر النموذج في نتائج الرموز مع كتلة احتمال top_p. لذا 0.1 يعني أن الرموز التي تشكل فقط 10% من كتلة الاحتمال تعتبر. نوصي بتغيير هذا أو درجة الحرارة ولكن ليس كلاهما.",
|
||||
"com_endpoint_output": "الإخراج",
|
||||
"com_endpoint_plug_image_detail": "تفاصيل الصورة",
|
||||
"com_endpoint_plug_resend_files": "إعادة إرسال الملفات",
|
||||
"com_endpoint_plug_set_custom_instructions_for_gpt_placeholder": "قم بتعيين تعليمات مخصصة لتضمينها في رسالة النظام. الافتراضي: لا شيء",
|
||||
"com_endpoint_plug_skip_completion": "تجاوز الإكمال",
|
||||
"com_endpoint_plug_use_functions": "استخدام الوظائف",
|
||||
"com_endpoint_presence_penalty": "عقوبة الوجود",
|
||||
"com_endpoint_preset": "إعداد مسبق",
|
||||
"com_endpoint_preset_default": "أصبح الإعداد المسبق الافتراضي الآن.",
|
||||
"com_endpoint_preset_default_item": "الافتراضي:",
|
||||
"com_endpoint_preset_default_none": "لا يوجد إعداد مسبق افتراضي نشط.",
|
||||
"com_endpoint_preset_default_removed": "لم يعد الإعداد المسبق الافتراضي",
|
||||
"com_endpoint_preset_delete_confirm": "هل أنت متأكد من أنك تريد حذف هذا الإعداد المسبق؟",
|
||||
"com_endpoint_preset_delete_error": "حدث خطأ أثناء حذف الإعداد المسبق الخاص بك. يرجى المحاولة مرة أخرى.",
|
||||
"com_endpoint_preset_import": "تم استيراد الإعداد المسبق!",
|
||||
"com_endpoint_preset_import_error": "حدث خطأ أثناء استيراد الإعداد المسبق الخاص بك. يرجى المحاولة مرة أخرى.",
|
||||
"com_endpoint_preset_name": "اسم الإعداد المسبق",
|
||||
"com_endpoint_preset_save_error": "حدث خطأ أثناء حفظ الإعداد المسبق الخاص بك. يرجى المحاولة مرة أخرى.",
|
||||
"com_endpoint_preset_selected": "الإعداد المسبق نشط!",
|
||||
"com_endpoint_preset_selected_title": "مُحدَّد!",
|
||||
"com_endpoint_preset_title": "إعداد مسبق",
|
||||
"com_endpoint_presets": "إعدادات مسبقة",
|
||||
"com_endpoint_presets_clear_warning": "هل أنت متأكد أنك تريد مسح جميع الإعدادات المسبقة؟ هذا لا يمكن التراجع عنه.",
|
||||
"com_endpoint_prompt_cache": "استخدام التخزين المؤقت للأوامر",
|
||||
"com_endpoint_prompt_prefix": "بادئة الأمر",
|
||||
"com_endpoint_prompt_prefix_assistants": "التعليمات الإضافية",
|
||||
"com_endpoint_prompt_prefix_assistants_placeholder": "ضع تعليمات أو سياق إضافي فوق التعليمات الرئيسية للمساعد. يتم تجاهله إذا كان فارغًا.",
|
||||
"com_endpoint_prompt_prefix_placeholder": "قم بتعيين تعليمات مخصصة أو سياق. يتم تجاهله إذا كان فارغًا.",
|
||||
"com_endpoint_save_as_preset": "حفظ كإعداد مسبق",
|
||||
"com_endpoint_search": "البحث عن نقطة النهاية بالاسم",
|
||||
"com_endpoint_set_custom_name": "قم بتعيين اسم مخصص، في حالة إمكانية العثور على هذا الإعداد المسبق",
|
||||
"com_endpoint_skip_hover": "تمكين تجاوز خطوة الإكمال التي تقوم بمراجعة الإجابة النهائية والخطوات المولدة",
|
||||
"com_endpoint_stop": "توقف التسلسلات",
|
||||
"com_endpoint_stop_placeholder": "اضغط على 'Enter' لفصل القيم",
|
||||
"com_endpoint_temperature": "درجة الحرارة",
|
||||
"com_endpoint_top_k": "أعلى K",
|
||||
"com_endpoint_top_p": "أعلى P",
|
||||
"com_endpoint_use_active_assistant": "استخدام المساعد النشط",
|
||||
"com_error_expired_user_key": "انتهت صلاحية المفتاح المقدم لـ {{0}} في {{1}}. يرجى تقديم مفتاح وحاول مرة أخرى.",
|
||||
"com_error_files_dupe": "تم اكتشاف ملف مكرر.",
|
||||
"com_error_files_empty": "الملفات الفارغة غير مسموح بها",
|
||||
"com_error_files_process": "حدث خطأ أثناء معالجة الملف.",
|
||||
"com_error_files_unsupported_capability": "لا توجد قدرات مفعّلة تدعم هذا النوع من الملفات.",
|
||||
"com_error_files_upload": "حدث خطأ أثناء رفع الملف.",
|
||||
"com_error_files_upload_canceled": "تم إلغاء طلب تحميل الملف. ملاحظة: قد تكون عملية تحميل الملف لا تزال قيد المعالجة وستحتاج إلى حذفها يدويًا.",
|
||||
"com_error_files_validation": "حدث خطأ أثناء التحقق من صحة الملف.",
|
||||
"com_error_input_length": "عدد الرموز في آخر رسالة طويل جداً، ويتجاوز الحد المسموح به ({{0}}). يرجى تقصير رسالتك، أو تعديل الحد الأقصى للسياق من معلمات المحادثة، أو تفريع المحادثة للمتابعة.",
|
||||
"com_error_invalid_user_key": "مفتاح غير صالح. يرجى تقديم مفتاح صالح والمحاولة مرة أخرى.",
|
||||
"com_error_moderation": "يبدو أن المحتوى المقدم قد تم وضع علامة عليه من قبل نظام الرقابة لدينا لعدم توافقه مع إرشادات مجتمعنا. لا نستطيع المضي قدمًا في هذا الموضوع المحدد. إذا كانت لديك أسئلة أخرى أو مواضيع ترغب في استكشافها، يرجى تحرير رسالتك، أو إنشاء محادثة جديدة.",
|
||||
"com_error_no_base_url": "لم يتم العثور على رابط أساسي. يرجى تقديم واحد والمحاولة مرة أخرى.",
|
||||
"com_error_no_user_key": "لم يتم العثور على مفتاح. يرجى تقديم مفتاح والمحاولة مرة أخرى.",
|
||||
"com_files_filter": "فلترة الملفات...",
|
||||
"com_files_no_results": "لا توجد نتائج.",
|
||||
"com_files_number_selected": "تم اختيار {{0}} من أصل {{1}} ملف(ملفات)",
|
||||
"com_generated_files": "الملفات المُنشأة:",
|
||||
"com_hide_examples": "إخفاء الأمثلة",
|
||||
"com_nav_account_settings": "إعدادات الحساب",
|
||||
"com_nav_always_make_prod": "جعل الإصدارات الجديدة للإنتاج دائماً",
|
||||
"com_nav_archive_created_at": "تاريخ الإنشاء",
|
||||
"com_nav_archive_name": "الاسم",
|
||||
"com_nav_archived_chats": "الدردشات المؤرشفة",
|
||||
"com_nav_at_command": "أمر-@",
|
||||
"com_nav_at_command_description": "تبديل الأمر \"@\" للتنقل بين نقاط النهاية والنماذج والإعدادات المسبقة وغيرها",
|
||||
"com_nav_audio_play_error": "خطأ في تشغيل الصوت: {{0}}",
|
||||
"com_nav_audio_process_error": "خطأ في معالجة الصوت: {{0}}",
|
||||
"com_nav_auto_scroll": "التمرير التلقائي إلى أحدث عند الفتح",
|
||||
"com_nav_auto_send_prompts": "إرسال تلقائي للموجهات",
|
||||
"com_nav_auto_send_text": "إرسال النص تلقائيًا",
|
||||
"com_nav_auto_send_text_disabled": "اضبط القيمة على -1 للتعطيل",
|
||||
"com_nav_auto_transcribe_audio": "النسخ التلقائي للصوت",
|
||||
"com_nav_automatic_playback": "تشغيل تلقائي لآخر رسالة",
|
||||
"com_nav_balance": "توازن",
|
||||
"com_nav_browser": "المتصفح",
|
||||
"com_nav_change_picture": "تغيير الصورة",
|
||||
"com_nav_chat_commands": "أوامر الدردشة",
|
||||
"com_nav_chat_commands_info": "يتم تفعيل هذه الأوامر عن طريق كتابة رموز محددة في بداية رسالتك. يتم تشغيل كل أمر بواسطة البادئة المخصصة له. يمكنك تعطيلها إذا كنت تستخدم هذه الرموز بشكل متكرر في بداية رسائلك.",
|
||||
"com_nav_chat_direction": "اتجاه الدردشة",
|
||||
"com_nav_clear_all_chats": "مسح كل الدردشات",
|
||||
"com_nav_clear_cache_confirm_message": "هل أنت متأكد أنك تريد مسح ذاكرة التخزين المؤقت؟",
|
||||
"com_nav_clear_conversation": "مسح المحادثات",
|
||||
"com_nav_clear_conversation_confirm_message": "هل أنت متأكد أنك تريد مسح جميع المحادثات؟ هذا لا يمكن التراجع عنه.",
|
||||
"com_nav_close_sidebar": "إغلاق القائمة الجانبية",
|
||||
"com_nav_commands": "الأوامر",
|
||||
"com_nav_confirm_clear": "تأكيد المسح",
|
||||
"com_nav_conversation_mode": "وضع المحادثة",
|
||||
"com_nav_convo_menu_options": "خيارات قائمة المحادثة",
|
||||
"com_nav_db_sensitivity": "حساسية الديسيبل",
|
||||
"com_nav_delete_account": "حذف الحساب",
|
||||
"com_nav_delete_account_button": "حذف حسابي نهائياً",
|
||||
"com_nav_delete_account_confirm": "حذف الحساب - هل أنت متأكد؟",
|
||||
"com_nav_delete_account_email_placeholder": "الرجاء إدخال البريد الإلكتروني للحساب",
|
||||
"com_nav_delete_cache_storage": "حذف ذاكرة التخزين المؤقت للنص المنطوق",
|
||||
"com_nav_delete_data_info": "سيتم حذف جميع بياناتك",
|
||||
"com_nav_delete_warning": "تحذير: سيؤدي هذا إلى حذف حسابك بشكل نهائي.",
|
||||
"com_nav_enable_cache_tts": "تمكين ذاكرة التخزين المؤقت للنص المنطوق",
|
||||
"com_nav_enable_cloud_browser_voice": "استخدام الأصوات السحابية",
|
||||
"com_nav_enabled": "تم التمكين",
|
||||
"com_nav_engine": "المحرك",
|
||||
"com_nav_enter_to_send": "اضغط على مفتاح الإدخال لإرسال الرسائل",
|
||||
"com_nav_export": "تصدير",
|
||||
"com_nav_export_all_message_branches": "تصدير كل فروع الرسائل",
|
||||
"com_nav_export_conversation": "تصدير المحادثة",
|
||||
"com_nav_export_filename": "اسم الملف",
|
||||
"com_nav_export_filename_placeholder": "قم بتعيين اسم الملف",
|
||||
"com_nav_export_include_endpoint_options": "تضمين خيارات النقاط النهائية",
|
||||
"com_nav_export_recursive": "تكراري",
|
||||
"com_nav_export_recursive_or_sequential": "التراجع أو التسلسل؟",
|
||||
"com_nav_export_type": "النوع",
|
||||
"com_nav_external": "خارجي",
|
||||
"com_nav_font_size": "حجم الخط",
|
||||
"com_nav_font_size_base": "متوسط",
|
||||
"com_nav_font_size_lg": "كبير",
|
||||
"com_nav_font_size_sm": "صغير",
|
||||
"com_nav_font_size_xl": "كبير جداً",
|
||||
"com_nav_font_size_xs": "صغير جداً",
|
||||
"com_nav_help_faq": "مساعدة & الأسئلة الشائعة",
|
||||
"com_nav_hide_panel": "إخفاء اللوحة الجانبية اليمنى",
|
||||
"com_nav_info_code_artifacts": "تمكين عرض عناصر الكود التجريبية بجانب المحادثة",
|
||||
"com_nav_info_custom_prompt_mode": "عند التمكين، لن يتم تضمين النص التلقائي للنظام. يجب توفير جميع تعليمات إنشاء العناصر يدويًا في هذا الوضع.",
|
||||
"com_nav_info_enter_to_send": "عند التفعيل، سيؤدي الضغط على مفتاح `ENTER` إلى إرسال رسالتك. عند التعطيل، سيؤدي الضغط على مفتاح Enter إلى إضافة سطر جديد، وستحتاج إلى الضغط على `CTRL + ENTER` / `⌘ + ENTER` لإرسال رسالتك.",
|
||||
"com_nav_info_fork_change_default": "\"الرسائل المرئية فقط\" تتضمن فقط المسار المباشر إلى الرسالة المحددة. \"تضمين الفروع ذات الصلة\" يضيف الفروع على طول المسار. \"تضمين الكل إلى/من هنا\" يشمل جميع الرسائل والفروع المتصلة.",
|
||||
"com_nav_info_fork_split_target_setting": "عند التفعيل، سيبدأ التفريع من الرسالة المستهدفة إلى آخر رسالة في المحادثة، وفقاً للسلوك المحدد.",
|
||||
"com_nav_info_include_shadcnui": "عند التفعيل، سيتم تضمين تعليمات استخدام مكونات shadcn/ui. تعد shadcn/ui مجموعة من المكونات القابلة لإعادة الاستخدام والمبنية باستخدام Radix UI و Tailwind CSS. ملاحظة: هذه التعليمات مطولة، يجب تفعيلها فقط إذا كان إخبار نموذج اللغة الآلي (LLM) بالاستيرادات والمكونات الصحيحة مهمًا بالنسبة لك. لمزيد من المعلومات حول هذه المكونات، قم بزيارة: https://ui.shadcn.com/",
|
||||
"com_nav_info_latex_parsing": "عند التمكين، سيتم عرض رموز LaTeX في الرسائل كمعادلات رياضية. تعطيل هذه الخاصية قد يحسن الأداء إذا كنت لا تحتاج إلى عرض LaTeX.",
|
||||
"com_nav_info_save_draft": "عند التمكين، سيتم حفظ النص والمرفقات التي تدخلها في نموذج الدردشة تلقائياً كمسودات محلية. ستظل هذه المسودات متاحة حتى إذا قمت بإعادة تحميل الصفحة أو التبديل إلى محادثة مختلفة. يتم تخزين المسودات محلياً على جهازك ويتم حذفها بمجرد إرسال الرسالة.",
|
||||
"com_nav_info_user_name_display": "عند التفعيل، سيظهر اسم المستخدم الخاص بك فوق كل رسالة ترسلها. عند التعطيل، سترى فقط كلمة \"أنت\" فوق رسائلك",
|
||||
"com_nav_lang_arabic": "العربية",
|
||||
"com_nav_lang_auto": "اكتشاف تلقائي",
|
||||
"com_nav_lang_brazilian_portuguese": "Português Brasileiro",
|
||||
"com_nav_lang_chinese": "中文",
|
||||
"com_nav_lang_dutch": "Nederlands",
|
||||
"com_nav_lang_english": "English",
|
||||
"com_nav_lang_estonian": "Eesti keel",
|
||||
"com_nav_lang_finnish": "Suomi",
|
||||
"com_nav_lang_french": "Français ",
|
||||
"com_nav_lang_georgian": "ქართული",
|
||||
"com_nav_lang_german": "Deutsch",
|
||||
"com_nav_lang_hebrew": "עברית",
|
||||
"com_nav_lang_indonesia": "Indonesia",
|
||||
"com_nav_lang_italian": "Italiano",
|
||||
"com_nav_lang_japanese": "日本語",
|
||||
"com_nav_lang_korean": "한국어",
|
||||
"com_nav_lang_polish": "Polski",
|
||||
"com_nav_lang_portuguese": "Português",
|
||||
"com_nav_lang_russian": "Русский",
|
||||
"com_nav_lang_spanish": "Español",
|
||||
"com_nav_lang_swedish": "Svenska",
|
||||
"com_nav_lang_thai": "ไทย",
|
||||
"com_nav_lang_traditional_chinese": "繁體中文",
|
||||
"com_nav_lang_turkish": "Türkçe",
|
||||
"com_nav_lang_vietnamese": "Tiếng Việt",
|
||||
"com_nav_language": "اللغة",
|
||||
"com_nav_latex_parsing": "تحليل LaTeX في الرسائل (قد يؤثر على الأداء)",
|
||||
"com_nav_log_out": "تسجيل الخروج",
|
||||
"com_nav_long_audio_warning": "ستستغرق النصوص الطويلة وقتاً أطول للمعالجة",
|
||||
"com_nav_maximize_chat_space": "تكبير مساحة الدردشة",
|
||||
"com_nav_modular_chat": "تمكين تبديل النقاط النهائية أثناء المحادثة",
|
||||
"com_nav_my_files": "ملفاتي",
|
||||
"com_nav_not_supported": "غير مدعوم",
|
||||
"com_nav_open_sidebar": "افتح القائمة الجانبية",
|
||||
"com_nav_playback_rate": "سرعة تشغيل الصوت",
|
||||
"com_nav_plugin_auth_error": "حدث خطأ أثناء محاولة المصادقة على هذا البرنامج المساعد. يرجى المحاولة مرة أخرى.",
|
||||
"com_nav_plugin_install": "تثبيت",
|
||||
"com_nav_plugin_search": "ابحث عن الإضافات",
|
||||
"com_nav_plugin_store": "متجر الإضافات",
|
||||
"com_nav_plugin_uninstall": "إلغاء تثبيت",
|
||||
"com_nav_plus_command": "+- الأمر",
|
||||
"com_nav_plus_command_description": "تبديل الأمر \"+\" لإضافة إعداد الردود المتعددة",
|
||||
"com_nav_profile_picture": "صورة الملف الشخصي",
|
||||
"com_nav_save_drafts": "حفظ المستخدمين",
|
||||
"com_nav_search_placeholder": "بحث في الرسائل",
|
||||
"com_nav_send_message": "إرسال رسالة",
|
||||
"com_nav_setting_account": "الحساب",
|
||||
"com_nav_setting_beta": "ميزات تجريبية",
|
||||
"com_nav_setting_chat": "دردشة",
|
||||
"com_nav_setting_data": "تحكم في البيانات",
|
||||
"com_nav_setting_general": "عام",
|
||||
"com_nav_setting_speech": "الكلام",
|
||||
"com_nav_settings": "الإعدادات",
|
||||
"com_nav_shared_links": "روابط مشتركة",
|
||||
"com_nav_show_code": "إظهار الشفرة دائمًا عند استخدام مفسر الشفرة",
|
||||
"com_nav_slash_command": "/-الأمر",
|
||||
"com_nav_slash_command_description": "تبديل الأمر \"/\" لاختيار موجه عبر لوحة المفاتيح",
|
||||
"com_nav_speech_to_text": "تحويل الكلام إلى نص",
|
||||
"com_nav_stop_generating": "إيقاف التوليد",
|
||||
"com_nav_text_to_speech": "تحويل النص إلى كلام",
|
||||
"com_nav_theme": "المظهر",
|
||||
"com_nav_theme_dark": "داكن",
|
||||
"com_nav_theme_light": "فاتح",
|
||||
"com_nav_theme_system": "النظام",
|
||||
"com_nav_tool_dialog": "أدوات المساعد",
|
||||
"com_nav_tool_dialog_agents": "أدوات الوكيل",
|
||||
"com_nav_tool_dialog_description": "يجب حفظ المساعد لإبقاء اختيارات الأدوات.",
|
||||
"com_nav_tool_remove": "إزالة",
|
||||
"com_nav_tool_search": "أدوات البحث",
|
||||
"com_nav_user": "المستخدم",
|
||||
"com_nav_user_msg_markdown": "عرض رسائل المستخدم بتنسيق markdown",
|
||||
"com_nav_user_name_display": "عرض اسم المستخدم في الرسائل",
|
||||
"com_nav_voice_select": "الصوت",
|
||||
"com_show_agent_settings": "إظهار إعدادات الوكيل",
|
||||
"com_show_completion_settings": "إظهار إعدادات الإكمال",
|
||||
"com_show_examples": "عرض أمثلة",
|
||||
"com_sidepanel_agent_builder": "بانٍ المساعد",
|
||||
"com_sidepanel_assistant_builder": "بانٍ المساعد",
|
||||
"com_sidepanel_attach_files": "إرفاق الملفات",
|
||||
"com_sidepanel_conversation_tags": "الإشارات المرجعية",
|
||||
"com_sidepanel_hide_panel": "إخفاء اللوحة",
|
||||
"com_sidepanel_manage_files": "إدارة الملفات",
|
||||
"com_sidepanel_parameters": "معلمات",
|
||||
"com_ui_accept": "أوافق",
|
||||
"com_ui_add": "إضافة",
|
||||
"com_ui_add_model_preset": "إضافة نموذج أو إعداد مسبق للرد الإضافي",
|
||||
"com_ui_add_multi_conversation": "إضافة محادثات متعددة",
|
||||
"com_ui_admin": "مشرف",
|
||||
"com_ui_admin_access_warning": "قد يؤدي تعطيل وصول المسؤول إلى هذه الميزة إلى مشاكل غير متوقعة في واجهة المستخدم تتطلب تحديث الصفحة. في حالة الحفظ، الطريقة الوحيدة للتراجع هي عبر إعداد الواجهة في ملف librechat.yaml والذي يؤثر على جميع الأدوار.",
|
||||
"com_ui_admin_settings": "إعدادات المسؤول",
|
||||
"com_ui_advanced": "متقدم",
|
||||
"com_ui_agent": "وكيل",
|
||||
"com_ui_agent_delete_error": "حدث خطأ أثناء حذف المساعد",
|
||||
"com_ui_agent_deleted": "تم حذف المساعد بنجاح",
|
||||
"com_ui_agent_duplicate_error": "حدث خطأ أثناء نسخ المساعد",
|
||||
"com_ui_agent_duplicated": "تم نسخ العميل بنجاح",
|
||||
"com_ui_agent_editing_allowed": "يمكن للمستخدمين الآخرين تعديل هذا الوكيل بالفعل",
|
||||
"com_ui_agents": "الوكلاء",
|
||||
"com_ui_agents_allow_create": "السماح بإنشاء الوكلاء",
|
||||
"com_ui_agents_allow_share_global": "السماح بمشاركة الوكلاء مع جميع المستخدمين",
|
||||
"com_ui_agents_allow_use": "السماح باستخدام الوكلاء",
|
||||
"com_ui_all": "الكل",
|
||||
"com_ui_all_proper": "الكل",
|
||||
"com_ui_archive": "أرشفة",
|
||||
"com_ui_archive_error": "فشل في أرشفة المحادثة",
|
||||
"com_ui_artifact_click": "انقر للفتح",
|
||||
"com_ui_artifacts": "المخرجات",
|
||||
"com_ui_artifacts_toggle": "تبديل واجهة العناصر",
|
||||
"com_ui_ascending": "تصاعدي",
|
||||
"com_ui_assistant": "المساعد",
|
||||
"com_ui_assistant_delete_error": "حدث خطأ أثناء حذف المساعد",
|
||||
"com_ui_assistant_deleted": "تم حذف المساعد بنجاح",
|
||||
"com_ui_assistants": "المساعدون",
|
||||
"com_ui_assistants_output": "إخراج المساعدين",
|
||||
"com_ui_attach_error": "تعذر إرفاق الملف. يرجى إنشاء أو تحديد محادثة، أو حاول تحديث الصفحة.",
|
||||
"com_ui_attach_error_openai": "لا يمكن إرفاق ملفات المساعد إلى نقاط نهائية أخرى",
|
||||
"com_ui_attach_error_size": "تم تجاوز حد حجم الملف للنقطة النهائية",
|
||||
"com_ui_attach_error_type": "نوع ملف غير مدعوم للنقطة النهائية:",
|
||||
"com_ui_attach_warn_endpoint": "قد يتم تجاهل الملفات غير المساعدة دون وجود أداة متوافقة",
|
||||
"com_ui_attachment": "مرفق",
|
||||
"com_ui_authentication": "المصادقة",
|
||||
"com_ui_avatar": "الصورة الرمزية",
|
||||
"com_ui_back_to_chat": "العودة إلى الدردشة",
|
||||
"com_ui_back_to_prompts": "العودة إلى الأوامر",
|
||||
"com_ui_bookmark_delete_confirm": "هل أنت متأكد أنك تريد حذف هذه الإشارة المرجعية؟",
|
||||
"com_ui_bookmarks": "الإشارات المرجعية",
|
||||
"com_ui_bookmarks_add": "إضافة إشارات مرجعية",
|
||||
"com_ui_bookmarks_add_to_conversation": "أضف إلى المحادثة الحالية",
|
||||
"com_ui_bookmarks_count": "العدد",
|
||||
"com_ui_bookmarks_create_error": "حدث خطأ أثناء إنشاء الإشارة المرجعية",
|
||||
"com_ui_bookmarks_create_exists": "هذه الإشارة المرجعية موجودة بالفعل",
|
||||
"com_ui_bookmarks_create_success": "تم إنشاء الإشارة المرجعية بنجاح",
|
||||
"com_ui_bookmarks_delete": "حذف الإشارة المرجعية",
|
||||
"com_ui_bookmarks_delete_error": "حدث خطأ أثناء حذف الإشارة المرجعية",
|
||||
"com_ui_bookmarks_delete_success": "تم حذف الإشارة المرجعية بنجاح",
|
||||
"com_ui_bookmarks_description": "وصف",
|
||||
"com_ui_bookmarks_edit": "تعديل الإشارة المرجعية",
|
||||
"com_ui_bookmarks_filter": "تصفية الإشارات المرجعية...",
|
||||
"com_ui_bookmarks_new": "إشارة مرجعية جديدة",
|
||||
"com_ui_bookmarks_title": "عنوان",
|
||||
"com_ui_bookmarks_update_error": "حدث خطأ أثناء تحديث الإشارة المرجعية",
|
||||
"com_ui_bookmarks_update_success": "تم تحديث الإشارة المرجعية بنجاح",
|
||||
"com_ui_cancel": "إلغاء",
|
||||
"com_ui_chat": "دردشة",
|
||||
"com_ui_chat_history": "سجل الدردشة",
|
||||
"com_ui_clear": "مسح",
|
||||
"com_ui_clear_all": "مسح الكل",
|
||||
"com_ui_close": "إغلاق",
|
||||
"com_ui_code": "كود",
|
||||
"com_ui_collapse_chat": "طي الدردشة",
|
||||
"com_ui_command_placeholder": "اختياري: أدخل أمرًا للموجه أو سيتم استخدام الاسم.",
|
||||
"com_ui_command_usage_placeholder": "حدد موجهًا باستخدام الأمر أو الاسم",
|
||||
"com_ui_confirm_action": "تأكيد الإجراء",
|
||||
"com_ui_context": "سياق",
|
||||
"com_ui_continue": "استمر",
|
||||
"com_ui_controls": "عناصر التحكم",
|
||||
"com_ui_copied": "تم النسخ",
|
||||
"com_ui_copied_to_clipboard": "تم النسخ إلى الحافظة",
|
||||
"com_ui_copy_code": "نسخ الكود",
|
||||
"com_ui_copy_link": "نسخ الرابط",
|
||||
"com_ui_copy_to_clipboard": "نسخ إلى الحافظة",
|
||||
"com_ui_create": "إنشاء",
|
||||
"com_ui_create_link": "إنشاء رابط",
|
||||
"com_ui_create_prompt": "إنشاء أمر",
|
||||
"com_ui_custom_prompt_mode": "وضع الأمر المخصص",
|
||||
"com_ui_dashboard": "لوحة التحكم",
|
||||
"com_ui_date": "تاريخ",
|
||||
"com_ui_date_april": "أبريل",
|
||||
"com_ui_date_august": "أغسطس",
|
||||
"com_ui_date_december": "ديسمبر",
|
||||
"com_ui_date_february": "فبراير",
|
||||
"com_ui_date_january": "يناير",
|
||||
"com_ui_date_july": "يوليو",
|
||||
"com_ui_date_june": "يونيو",
|
||||
"com_ui_date_march": "مارس",
|
||||
"com_ui_date_may": "مايو",
|
||||
"com_ui_date_november": "نوفمبر",
|
||||
"com_ui_date_october": "أكتوبر",
|
||||
"com_ui_date_previous_30_days": "الـ 30 يومًا السابقة",
|
||||
"com_ui_date_previous_7_days": "الأيام السبعة السابقة",
|
||||
"com_ui_date_september": "سبتمبر",
|
||||
"com_ui_date_today": "اليوم",
|
||||
"com_ui_date_yesterday": "أمس",
|
||||
"com_ui_decline": "لا أوافق",
|
||||
"com_ui_delete": "حذف",
|
||||
"com_ui_delete_action": "حذف الإجراء",
|
||||
"com_ui_delete_action_confirm": "هل أنت متأكد من رغبتك في حذف هذا الإجراء؟",
|
||||
"com_ui_delete_agent_confirm": "هل أنت متأكد من رغبتك في حذف هذا الوكيل؟",
|
||||
"com_ui_delete_assistant_confirm": "هل أنت متأكد من رغبتك في حذف هذا المساعد؟ لا يمكن التراجع عن هذا الإجراء.",
|
||||
"com_ui_delete_confirm": "سيتم حذف هذا",
|
||||
"com_ui_delete_confirm_prompt_version_var": "سيؤدي هذا إلى حذف النسخة المحددة لـ \"{{0}}.\" إذا لم تكن هناك نسخ أخرى، سيتم حذف النص التلقائي.",
|
||||
"com_ui_delete_conversation": "حذف الدردشة؟",
|
||||
"com_ui_delete_prompt": "حذف المطالبة؟",
|
||||
"com_ui_delete_shared_link": "حذف الرابط المشترك؟",
|
||||
"com_ui_delete_tool": "حذف الأداة",
|
||||
"com_ui_delete_tool_confirm": "هل أنت متأكد من رغبتك في حذف هذه الأداة؟",
|
||||
"com_ui_descending": "تنازلي",
|
||||
"com_ui_description": "وصف",
|
||||
"com_ui_description_placeholder": "اختياري: أدخل وصفاً ليتم عرضه للموجه",
|
||||
"com_ui_download_error": "حدث خطأ أثناء تنزيل الملف. قد يكون الملف قد تم حذفه.",
|
||||
"com_ui_dropdown_variables": "متغيرات القائمة المنسدلة:",
|
||||
"com_ui_dropdown_variables_info": "إنشاء قوائم منسدلة مخصصة لمحادثاتك: `{{variable_name:option1|option2|option3}}`",
|
||||
"com_ui_duplicate": "نسخ",
|
||||
"com_ui_duplication_error": "حدث خطأ أثناء نسخ المحادثة",
|
||||
"com_ui_duplication_processing": "جارِ نسخ المحادثة...",
|
||||
"com_ui_duplication_success": "تم نسخ المحادثة بنجاح",
|
||||
"com_ui_edit": "تعديل",
|
||||
"com_ui_endpoint": "نقطة النهاية",
|
||||
"com_ui_endpoint_menu": "قائمة نقطة نهاية LLM",
|
||||
"com_ui_enter": "أدخل",
|
||||
"com_ui_enter_api_key": "أدخل مفتاح API",
|
||||
"com_ui_enter_openapi_schema": "أدخل مخطط OpenAPI هنا",
|
||||
"com_ui_error": "خطأ",
|
||||
"com_ui_error_connection": "خطأ في الاتصال بالخادم، حاول تحديث الصفحة.",
|
||||
"com_ui_error_save_admin_settings": "حدث خطأ أثناء حفظ إعدادات المسؤول.",
|
||||
"com_ui_examples": "أمثلة",
|
||||
"com_ui_export_convo_modal": "نافذة تصدير المحادثة",
|
||||
"com_ui_field_required": "هذا الحقل مطلوب",
|
||||
"com_ui_filter_prompts_name": "تصفية الأوامر حسب الاسم",
|
||||
"com_ui_fork": "تفرع",
|
||||
"com_ui_fork_all_target": "تضمين الكل إلى/من هنا",
|
||||
"com_ui_fork_branches": "تضمين الفروع ذات الصلة",
|
||||
"com_ui_fork_change_default": "خيار التفرع الافتراضي",
|
||||
"com_ui_fork_default": "استخدم خيار التفريع الافتراضي",
|
||||
"com_ui_fork_error": "حدث خطأ أثناء تفريع المحادثة",
|
||||
"com_ui_fork_from_message": "اختر خيار التفرع",
|
||||
"com_ui_fork_info_1": "استخدم هذا الإعداد لتفريع الرسائل بالسلوك المرغوب.",
|
||||
"com_ui_fork_info_2": "\"التفريع\" يشير إلى إنشاء محادثة جديدة تبدأ/تنتهي من رسائل محددة في المحادثة الحالية، وإنشاء نسخة وفقًا للخيارات المحددة.",
|
||||
"com_ui_fork_info_3": "\"الرسالة المستهدفة\" تشير إما إلى الرسالة التي تم فتح هذه النافذة المنبثقة منها، أو إذا قمت بتحديد \"{{0}}\"، آخر رسالة في المحادثة.",
|
||||
"com_ui_fork_info_branches": "هذا الخيار يقسم الرسائل المرئية، جنبًا إلى جنب مع الفروع ذات الصلة؛ بمعنى آخر، المسار المباشر إلى الرسالة المستهدفة، بما في ذلك الفروع على طول المسار.",
|
||||
"com_ui_fork_info_remember": "حدد هذا الخيار لتذكر الإعدادات التي اخترتها لاستخدامها مستقبلاً، مما يجعل عملية تفريع المحادثات أسرع وفقًا لتفضيلاتك.",
|
||||
"com_ui_fork_info_start": "إذا تم تحديده، فسيبدأ التفريع من هذه الرسالة إلى آخر رسالة في المحادثة، وفقًا للسلوك المحدد أعلاه.",
|
||||
"com_ui_fork_info_target": "هذا الخيار يؤدي إلى تفريع جميع الرسائل التي تؤدي إلى الرسالة المستهدفة، بما في ذلك جيرانها؛ بعبارة أخرى، يتم تضمين جميع فروع الرسائل، سواء كانت مرئية أم لا أو على نفس المسار.",
|
||||
"com_ui_fork_info_visible": "هذا الخيار يقوم بتفريع الرسائل المرئية فقط؛ بمعنى آخر، المسار المباشر إلى الرسالة المستهدفة، دون أي فروع.",
|
||||
"com_ui_fork_processing": "تجزئة المحادثة...",
|
||||
"com_ui_fork_remember": "تذكر",
|
||||
"com_ui_fork_remember_checked": "سيتم تذكر اختيارك بعد الاستخدام. يمكنك تغيير هذا في أي وقت من إعدادات البرنامج.",
|
||||
"com_ui_fork_split_target": "ابدأ التفرع هنا",
|
||||
"com_ui_fork_split_target_setting": "ابدأ التفرع من رسالة الهدف افتراضيًا",
|
||||
"com_ui_fork_success": "تم تفريع المحادثة بنجاح",
|
||||
"com_ui_fork_visible": "الرسائل المرئية فقط",
|
||||
"com_ui_go_to_conversation": "انتقل إلى المحادثة",
|
||||
"com_ui_happy_birthday": "إنه عيد ميلادي الأول!",
|
||||
"com_ui_host": "مُضيف",
|
||||
"com_ui_image_gen": "توليد الصور",
|
||||
"com_ui_import_conversation_error": "حدث خطأ أثناء استيراد محادثاتك",
|
||||
"com_ui_import_conversation_file_type_error": "نوع الملف غير مدعوم للاستيراد",
|
||||
"com_ui_import_conversation_info": "استيراد محادثات من ملف JSON",
|
||||
"com_ui_import_conversation_success": "تم استيراد المحادثات بنجاح",
|
||||
"com_ui_include_shadcnui": "تضمين تعليمات مكونات shadcn/ui",
|
||||
"com_ui_input": "إدخال",
|
||||
"com_ui_instructions": "تعليمات",
|
||||
"com_ui_latest_footer": "الذكاء الاصطناعي للجميع.",
|
||||
"com_ui_librechat_code_api_key": "احصل على مفتاح واجهة برمجة التطبيقات لمترجم الكود LibreChat",
|
||||
"com_ui_librechat_code_api_subtitle": "آمن. متعدد اللغات. ملفات الإدخال/الإخراج.",
|
||||
"com_ui_librechat_code_api_title": "تشغيل كود الذكاء الاصطناعي",
|
||||
"com_ui_locked": "مقفل",
|
||||
"com_ui_logo": "شعار {{0}}",
|
||||
"com_ui_manage": "إدارة",
|
||||
"com_ui_max_tags": "الحد الأقصى المسموح به هو {{0}}، باستخدام أحدث القيم.",
|
||||
"com_ui_mention": "اذكر نقطة نهاية أو مساعدًا أو إعدادًا مسبقًا للتبديل إليه بسرعة",
|
||||
"com_ui_min_tags": "لا يمكن إزالة المزيد من القيم، الحد الأدنى المطلوب هو {{0}}.",
|
||||
"com_ui_model": "النموذج",
|
||||
"com_ui_model_parameters": "معلمات النموذج",
|
||||
"com_ui_more_info": "مزيد من المعلومات",
|
||||
"com_ui_my_prompts": "أوامري",
|
||||
"com_ui_name": "اسم",
|
||||
"com_ui_new_chat": "دردشة جديدة",
|
||||
"com_ui_next": "التالي",
|
||||
"com_ui_no": "لا",
|
||||
"com_ui_no_bookmarks": "يبدو أنه لا توجد لديك إشارات مرجعية بعد. انقر على محادثة وأضف واحدة جديدة",
|
||||
"com_ui_no_category": "لا يوجد تصنيف",
|
||||
"com_ui_no_changes": "لا توجد تغييرات للتحديث",
|
||||
"com_ui_no_terms_content": "لا يوجد محتوى لشروط الخدمة",
|
||||
"com_ui_nothing_found": "لم يتم العثور على أي شيء",
|
||||
"com_ui_of": "من",
|
||||
"com_ui_off": "إيقاف",
|
||||
"com_ui_on": "مفعل",
|
||||
"com_ui_page": "صفحة",
|
||||
"com_ui_prev": "السابق",
|
||||
"com_ui_preview": "معاينة",
|
||||
"com_ui_privacy_policy": "سياسة الخصوصية",
|
||||
"com_ui_privacy_policy_url": "رابط سياسة الخصوصية",
|
||||
"com_ui_prompt": "موجه",
|
||||
"com_ui_prompt_already_shared_to_all": "تم مشاركة هذا المحتوى مع جميع المستخدمين بالفعل",
|
||||
"com_ui_prompt_name": "اسم الأمر",
|
||||
"com_ui_prompt_name_required": "اسم الأمر مطلوب",
|
||||
"com_ui_prompt_preview_not_shared": "لم يسمح المؤلف بالمشاركة لهذا الإجراء",
|
||||
"com_ui_prompt_text": "نص",
|
||||
"com_ui_prompt_text_required": "النص مطلوب",
|
||||
"com_ui_prompt_update_error": "حدث خطأ أثناء تحديث المطالبة",
|
||||
"com_ui_prompts": "الأوامر",
|
||||
"com_ui_prompts_allow_create": "السماح بإنشاء الأوامر",
|
||||
"com_ui_prompts_allow_share_global": "السماح بمشاركة الأوامر مع جميع المستخدمين",
|
||||
"com_ui_prompts_allow_use": "السماح باستخدام الأوامر",
|
||||
"com_ui_provider": "مزود",
|
||||
"com_ui_read_aloud": "قراءة بصوت عالٍ",
|
||||
"com_ui_regenerate": "إعادة توليد",
|
||||
"com_ui_region": "المنطقة",
|
||||
"com_ui_rename": "إعادة تسمية",
|
||||
"com_ui_reset_var": "إعادة تعيين {{0}}",
|
||||
"com_ui_result": "النتيجة",
|
||||
"com_ui_revoke": "إلغاء",
|
||||
"com_ui_revoke_info": "إلغاء جميع بيانات الاعتماد المقدمة من المستخدم.",
|
||||
"com_ui_revoke_key_confirm": "هل أنت متأكد من إلغاء هذا المفتاح؟",
|
||||
"com_ui_revoke_key_endpoint": "إلغاء المفتاح لـ {{0}}",
|
||||
"com_ui_revoke_keys": "إلغاء المفاتيح",
|
||||
"com_ui_revoke_keys_confirm": "هل أنت متأكد من أنك تريد إلغاء جميع المفاتيح؟",
|
||||
"com_ui_role_select": "الدور",
|
||||
"com_ui_run_code": "تنفيذ الشفرة",
|
||||
"com_ui_run_code_error": "حدث خطأ أثناء تشغيل الكود",
|
||||
"com_ui_save": "حفظ",
|
||||
"com_ui_save_submit": "حفظ وإرسال",
|
||||
"com_ui_saved": "تم الحفظ!",
|
||||
"com_ui_schema": "المخطط",
|
||||
"com_ui_select": "اختر",
|
||||
"com_ui_select_file": "اختر ملفًا",
|
||||
"com_ui_select_model": "اختر نموذجًا",
|
||||
"com_ui_select_provider": "اختر مزودًا",
|
||||
"com_ui_select_provider_first": "اختر مزود الخدمة أولاً",
|
||||
"com_ui_select_region": "اختر المنطقة",
|
||||
"com_ui_select_search_model": "ابحث عن نموذج باسمه",
|
||||
"com_ui_select_search_plugin": "إضافة البحث عن الإضافات حسب الاسم",
|
||||
"com_ui_select_search_provider": "ابحث عن مزود الخدمة باسمه",
|
||||
"com_ui_select_search_region": "ابحث عن المنطقة بالاسم",
|
||||
"com_ui_share": "مشاركة",
|
||||
"com_ui_share_create_message": "سيظل اسمك وأي رسائل تضيفها بعد المشاركة خاصة.",
|
||||
"com_ui_share_delete_error": "حدث خطأ أثناء حذف الرابط المشترك.",
|
||||
"com_ui_share_error": "حدث خطأ أثناء مشاركة رابط الدردشة",
|
||||
"com_ui_share_link_to_chat": "شارك الرابط في الدردشة",
|
||||
"com_ui_share_to_all_users": "مشاركة مع جميع المستخدمين",
|
||||
"com_ui_share_update_message": "سيظل اسمك والتعليمات المخصصة وأي رسائل تضيفها بعد المشاركة خاصة.",
|
||||
"com_ui_share_var": "مشاركة {{0}}",
|
||||
"com_ui_shared_link_not_found": "الرابط المشترك غير موجود",
|
||||
"com_ui_shared_prompts": "المطالبات المشتركة",
|
||||
"com_ui_show_all": "عرض الكل",
|
||||
"com_ui_simple": "بسيط",
|
||||
"com_ui_size": "الحجم",
|
||||
"com_ui_special_variables": "المتغيرات الخاصة:",
|
||||
"com_ui_speech_while_submitting": "لا يمكن إرسال الكلام أثناء إنشاء الرد",
|
||||
"com_ui_stop": "توقف",
|
||||
"com_ui_storage": "التخزين",
|
||||
"com_ui_submit": "إرسال",
|
||||
"com_ui_terms_and_conditions": "شروط الخدمة",
|
||||
"com_ui_terms_of_service": "شروط الخدمة",
|
||||
"com_ui_tools": "أدوات المساعدين",
|
||||
"com_ui_unarchive": "إلغاء الأرشفة",
|
||||
"com_ui_unarchive_error": "فشل في إلغاء الأرشفة",
|
||||
"com_ui_unknown": "غير معروف",
|
||||
"com_ui_update": "تحديث",
|
||||
"com_ui_upload": "تحميل",
|
||||
"com_ui_upload_code_files": "تحميل لمفسر الكود",
|
||||
"com_ui_upload_delay": "تحميل \"{{0}}\" يستغرق وقتًا أطول من المتوقع. يرجى الانتظار حتى ينتهي فهرسة الملف للاسترجاع.",
|
||||
"com_ui_upload_error": "حدث خطأ أثناء تحميل ملفك",
|
||||
"com_ui_upload_file_search": "تحميل للبحث في الملفات",
|
||||
"com_ui_upload_files": "تحميل الملفات",
|
||||
"com_ui_upload_image": "تحميل صورة",
|
||||
"com_ui_upload_image_input": "تحميل صورة",
|
||||
"com_ui_upload_invalid": "ملف غير صالح للتحميل. يجب أن يكون صورة لا تتجاوز الحد المسموح به",
|
||||
"com_ui_upload_invalid_var": "ملف غير صالح للتحميل. يجب أن يكون صورة لا يتجاوز حجمها {{0}} ميجابايت",
|
||||
"com_ui_upload_success": "تم تحميل الملف بنجاح",
|
||||
"com_ui_upload_type": "اختر نوع التحميل",
|
||||
"com_ui_use_micrphone": "استخدام الميكروفون",
|
||||
"com_ui_use_prompt": "استخدم الأمر",
|
||||
"com_ui_variables": "متغيرات",
|
||||
"com_ui_variables_info": "استخدم أقواس مزدوجة في نصك لإنشاء متغيرات، مثل `{{متغير كمثال}}`، لملئها لاحقاً عند استخدام النص البرمجي.",
|
||||
"com_ui_version_var": "الإصدار {{0}}",
|
||||
"com_ui_versions": "الإصدارات",
|
||||
"com_ui_yes": "نعم",
|
||||
"com_ui_zoom": "تكبير",
|
||||
"com_user_message": "أنت",
|
||||
"com_warning_resubmit_unsupported": "إعادة إرسال رسالة الذكاء الاصطناعي غير مدعومة لنقطة النهاية هذه"
|
||||
}
|
||||
873
packages/client/src/locales/ca/translation.json
Normal file
873
packages/client/src/locales/ca/translation.json
Normal file
|
|
@ -0,0 +1,873 @@
|
|||
{
|
||||
"chat_direction_left_to_right": "Cal afegir alguna cosa aquí. Estava buit",
|
||||
"chat_direction_right_to_left": "Cal afegir alguna cosa aquí. Estava buit",
|
||||
"com_a11y_ai_composing": "La IA encara està escrivint.",
|
||||
"com_a11y_end": "La IA ha acabat la seva resposta.",
|
||||
"com_a11y_start": "La IA ha començat la seva resposta.",
|
||||
"com_agents_allow_editing": "Permet que altres usuaris editin el teu agent",
|
||||
"com_agents_by_librechat": "per LibreChat",
|
||||
"com_agents_code_interpreter": "Quan està habilitat, permet que el teu agent utilitzi la API de l'Intèrpret de Codi de LibreChat per executar codi generat, incloent-hi el processament de fitxers, de forma segura. Es requereix una clau API vàlida.",
|
||||
"com_agents_code_interpreter_title": "API d'Intèrpret de Codi",
|
||||
"com_agents_create_error": "S'ha produït un error en crear el teu agent.",
|
||||
"com_agents_description_placeholder": "Opcional: Descriu el teu Agent aquí",
|
||||
"com_agents_enable_file_search": "Habilita la Cerca de Fitxers",
|
||||
"com_agents_file_context": "Context de Fitxer (OCR)",
|
||||
"com_agents_file_context_disabled": "Cal crear l'agent abans de pujar fitxers per al Context de Fitxer.",
|
||||
"com_agents_file_context_info": "Els fitxers pujats com a \"Context\" es processen amb OCR per extreure'n el text, que s'afegeix a les instruccions de l'Agent. Ideal per a documents, imatges amb text o PDFs on cal el contingut complet del fitxer.",
|
||||
"com_agents_file_search_disabled": "Cal crear l'agent abans de pujar fitxers per a la Cerca de Fitxers.",
|
||||
"com_agents_file_search_info": "Quan està habilitat, l'agent serà informat dels noms exactes dels fitxers llistats a continuació, i podrà recuperar-ne el context rellevant.",
|
||||
"com_agents_instructions_placeholder": "Les instruccions de sistema que utilitza l'agent",
|
||||
"com_agents_missing_provider_model": "Selecciona un proveïdor i un model abans de crear un agent.",
|
||||
"com_agents_name_placeholder": "Opcional: El nom de l'agent",
|
||||
"com_agents_no_access": "No tens accés per editar aquest agent.",
|
||||
"com_agents_not_available": "Agent no disponible",
|
||||
"com_agents_search_name": "Cerca agents per nom",
|
||||
"com_agents_update_error": "S'ha produït un error en actualitzar el teu agent.",
|
||||
"com_assistants_action_attempt": "L'assistent vol parlar amb {{0}}",
|
||||
"com_assistants_actions": "Accions",
|
||||
"com_assistants_actions_disabled": "Cal crear un assistent abans d'afegir accions.",
|
||||
"com_assistants_actions_info": "Permet que el teu Assistent recuperi informació o realitzi accions via API",
|
||||
"com_assistants_add_actions": "Afegeix Accions",
|
||||
"com_assistants_add_tools": "Afegeix Eines",
|
||||
"com_assistants_allow_sites_you_trust": "Permet només llocs de confiança.",
|
||||
"com_assistants_append_date": "Afegeix Data i Hora Actuals",
|
||||
"com_assistants_append_date_tooltip": "Quan està habilitat, la data i hora actuals s'afegiran a les instruccions de sistema de l'assistent.",
|
||||
"com_assistants_attempt_info": "L'assistent vol enviar el següent:",
|
||||
"com_assistants_available_actions": "Accions disponibles",
|
||||
"com_assistants_capabilities": "Capacitats",
|
||||
"com_assistants_code_interpreter": "Intèrpret de Codi",
|
||||
"com_assistants_code_interpreter_files": "Els fitxers següents són només per a l'Intèrpret de Codi:",
|
||||
"com_assistants_code_interpreter_info": "L'Intèrpret de Codi permet a l'assistent escriure i executar codi. Aquesta eina pot processar fitxers amb dades i formats diversos, i generar fitxers com gràfics.",
|
||||
"com_assistants_completed_action": "Ha parlat amb {{0}}",
|
||||
"com_assistants_completed_function": "Ha executat {{0}}",
|
||||
"com_assistants_conversation_starters": "Inicis de conversa",
|
||||
"com_assistants_conversation_starters_placeholder": "Introdueix un inici de conversa",
|
||||
"com_assistants_create_error": "S'ha produït un error en crear el teu assistent.",
|
||||
"com_assistants_create_success": "Creat amb èxit",
|
||||
"com_assistants_delete_actions_error": "S'ha produït un error en eliminar l'acció.",
|
||||
"com_assistants_delete_actions_success": "Acció eliminada de l'Assistent amb èxit",
|
||||
"com_assistants_description_placeholder": "Opcional: Descriu el teu Assistent aquí",
|
||||
"com_assistants_domain_info": "L'assistent ha enviat aquesta informació a {{0}}",
|
||||
"com_assistants_file_search": "Cerca de fitxers",
|
||||
"com_assistants_file_search_info": "La cerca de fitxers permet a l'assistent accedir al coneixement dels fitxers que tu o els teus usuaris pugeu. Un cop pujat un fitxer, l'assistent decideix automàticament quan recuperar-ne contingut segons les peticions de l'usuari. Encara no es dóna suport a la vinculació de magatzems vectorials per a la Cerca de Fitxers. Pots adjuntar-los des del Provider Playground o adjuntar fitxers als missatges per a la cerca de fitxers per fils.",
|
||||
"com_assistants_function_use": "L'assistent ha utilitzat {{0}}",
|
||||
"com_assistants_image_vision": "Visió d'Imatges",
|
||||
"com_assistants_instructions_placeholder": "Les instruccions de sistema que utilitza l'assistent",
|
||||
"com_assistants_knowledge": "Coneixement",
|
||||
"com_assistants_knowledge_disabled": "Cal crear l'assistent i habilitar i desar l'Intèrpret de Codi o la Recuperació abans de pujar fitxers com a Coneixement.",
|
||||
"com_assistants_knowledge_info": "Si puges fitxers sota Coneixement, les converses amb el teu Assistent poden incloure el contingut dels fitxers.",
|
||||
"com_assistants_max_starters_reached": "S'ha arribat al màxim d'inicis de conversa",
|
||||
"com_assistants_name_placeholder": "Opcional: El nom de l'assistent",
|
||||
"com_assistants_non_retrieval_model": "La cerca de fitxers no està habilitada en aquest model. Selecciona un altre model.",
|
||||
"com_assistants_retrieval": "Recuperació",
|
||||
"com_assistants_running_action": "Executant acció",
|
||||
"com_assistants_search_name": "Cerca assistents per nom",
|
||||
"com_assistants_update_actions_error": "S'ha produït un error en crear o actualitzar l'acció.",
|
||||
"com_assistants_update_actions_success": "Acció creada o actualitzada amb èxit",
|
||||
"com_assistants_update_error": "S'ha produït un error en actualitzar el teu assistent.",
|
||||
"com_assistants_update_success": "Actualitzat amb èxit",
|
||||
"com_auth_already_have_account": "Ja tens un compte?",
|
||||
"com_auth_apple_login": "Inicia sessió amb Apple",
|
||||
"com_auth_back_to_login": "Torna a l'inici de sessió",
|
||||
"com_auth_click": "Fes clic",
|
||||
"com_auth_click_here": "Fes clic aquí",
|
||||
"com_auth_continue": "Continua",
|
||||
"com_auth_create_account": "Crea el teu compte",
|
||||
"com_auth_discord_login": "Continua amb Discord",
|
||||
"com_auth_email": "Correu electrònic",
|
||||
"com_auth_email_address": "Adreça de correu electrònic",
|
||||
"com_auth_email_max_length": "El correu electrònic no pot tenir més de 120 caràcters",
|
||||
"com_auth_email_min_length": "El correu electrònic ha de tenir almenys 6 caràcters",
|
||||
"com_auth_email_pattern": "Has d'introduir una adreça de correu electrònic vàlida",
|
||||
"com_auth_email_required": "El correu electrònic és obligatori",
|
||||
"com_auth_email_resend_link": "Reenvia el correu electrònic",
|
||||
"com_auth_email_resent_failed": "No s'ha pogut reenviar el correu de verificació",
|
||||
"com_auth_email_resent_success": "El correu de verificació s'ha reenviat correctament",
|
||||
"com_auth_email_verification_failed": "La verificació del correu ha fallat",
|
||||
"com_auth_email_verification_failed_token_missing": "Verificació fallida, falta el testimoni",
|
||||
"com_auth_email_verification_in_progress": "S'està verificant el teu correu electrònic, espera si us plau",
|
||||
"com_auth_email_verification_invalid": "Verificació de correu electrònic no vàlida",
|
||||
"com_auth_email_verification_redirecting": "Redirigint en {{0}} segons...",
|
||||
"com_auth_email_verification_resend_prompt": "No has rebut el correu?",
|
||||
"com_auth_email_verification_success": "Correu electrònic verificat correctament",
|
||||
"com_auth_email_verifying_ellipsis": "Verificant...",
|
||||
"com_auth_error_create": "S'ha produït un error en intentar registrar el teu compte. Torna-ho a provar.",
|
||||
"com_auth_error_invalid_reset_token": "Aquest testimoni per restablir la contrasenya ja no és vàlid.",
|
||||
"com_auth_error_login": "No s'ha pogut iniciar sessió amb la informació proporcionada. Comprova les teves credencials i torna-ho a provar.",
|
||||
"com_auth_error_login_ban": "El teu compte ha estat temporalment suspès per violacions del nostre servei.",
|
||||
"com_auth_error_login_rl": "Massa intents d'inici de sessió en poc temps. Torna-ho a provar més tard.",
|
||||
"com_auth_error_login_server": "S'ha produït un error intern al servidor. Espera uns moments i torna-ho a provar.",
|
||||
"com_auth_error_login_unverified": "El teu compte no ha estat verificat. Comprova el teu correu per un enllaç de verificació.",
|
||||
"com_auth_facebook_login": "Continua amb Facebook",
|
||||
"com_auth_full_name": "Nom complet",
|
||||
"com_auth_github_login": "Continua amb Github",
|
||||
"com_auth_google_login": "Continua amb Google",
|
||||
"com_auth_here": "AQUÍ",
|
||||
"com_auth_login": "Inicia sessió",
|
||||
"com_auth_login_with_new_password": "Ara pots iniciar sessió amb la nova contrasenya.",
|
||||
"com_auth_name_max_length": "El nom ha de tenir menys de 80 caràcters",
|
||||
"com_auth_name_min_length": "El nom ha de tenir almenys 3 caràcters",
|
||||
"com_auth_name_required": "El nom és obligatori",
|
||||
"com_auth_no_account": "No tens compte?",
|
||||
"com_auth_password": "Contrasenya",
|
||||
"com_auth_password_confirm": "Confirma la contrasenya",
|
||||
"com_auth_password_forgot": "Has oblidat la contrasenya?",
|
||||
"com_auth_password_max_length": "La contrasenya ha de tenir menys de 128 caràcters",
|
||||
"com_auth_password_min_length": "La contrasenya ha de tenir almenys 8 caràcters",
|
||||
"com_auth_password_not_match": "Les contrasenyes no coincideixen",
|
||||
"com_auth_password_required": "La contrasenya és obligatòria",
|
||||
"com_auth_registration_success_generic": "Revisa el teu correu electrònic per verificar l'adreça.",
|
||||
"com_auth_registration_success_insecure": "Registre completat amb èxit.",
|
||||
"com_auth_reset_password": "Restableix la contrasenya",
|
||||
"com_auth_reset_password_if_email_exists": "Si existeix un compte amb aquest correu, s'ha enviat un correu amb instruccions per restablir la contrasenya. Comprova la carpeta de correu brossa.",
|
||||
"com_auth_reset_password_link_sent": "Correu enviat",
|
||||
"com_auth_reset_password_success": "Contrasenya restablerta amb èxit",
|
||||
"com_auth_sign_in": "Inicia sessió",
|
||||
"com_auth_sign_up": "Registra't",
|
||||
"com_auth_submit_registration": "Envia el registre",
|
||||
"com_auth_to_reset_your_password": "per restablir la teva contrasenya.",
|
||||
"com_auth_to_try_again": "per tornar-ho a provar.",
|
||||
"com_auth_two_factor": "Comprova la teva aplicació de contrasenya d'un sol ús per un codi",
|
||||
"com_auth_username": "Nom d'usuari (opcional)",
|
||||
"com_auth_username_max_length": "El nom d'usuari ha de tenir menys de 20 caràcters",
|
||||
"com_auth_username_min_length": "El nom d'usuari ha de tenir almenys 2 caràcters",
|
||||
"com_auth_verify_your_identity": "Verifica la teva identitat",
|
||||
"com_auth_welcome_back": "Benvingut/da de nou",
|
||||
"com_click_to_download": "(fes clic aquí per descarregar)",
|
||||
"com_download_expired": "(descàrrega caducada)",
|
||||
"com_download_expires": "(fes clic aquí per descarregar - caduca en {{0}})",
|
||||
"com_endpoint": "Extrem",
|
||||
"com_endpoint_agent": "Agent",
|
||||
"com_endpoint_agent_model": "Model d'Agent (Recomanat: GPT-3.5)",
|
||||
"com_endpoint_agent_placeholder": "Selecciona un agent",
|
||||
"com_endpoint_ai": "IA",
|
||||
"com_endpoint_anthropic_maxoutputtokens": "Nombre màxim de tokens que es poden generar en la resposta. Especifica un valor més baix per a respostes més curtes i un de més alt per a respostes més llargues. Nota: els models poden aturar-se abans d'arribar a aquest màxim.",
|
||||
"com_endpoint_anthropic_prompt_cache": "La memòria cau de prompt permet reutilitzar contextos o instruccions grans entre trucades d'API, reduint costos i latència",
|
||||
"com_endpoint_anthropic_temp": "Oscil·la entre 0 i 1. Utilitza valors propers a 0 per a respostes analítiques o de tipus test, i propers a 1 per a tasques creatives i generatives. Recomanem modificar això o Top P però no ambdós.",
|
||||
"com_endpoint_anthropic_thinking": "Habilita el raonament intern per a models Claude compatibles (3.7 Sonnet). Nota: cal definir \"Thinking Budget\" i que sigui inferior a \"Max Output Tokens\".",
|
||||
"com_endpoint_anthropic_thinking_budget": "Determina el nombre màxim de tokens que Claude pot utilitzar per al seu raonament intern. Pressupostos més grans poden millorar la qualitat de la resposta permetent una anàlisi més exhaustiva per a problemes complexos, encara que Claude pot no utilitzar tot el pressupost assignat, especialment per sobre de 32K. Aquesta configuració ha de ser inferior a \"Max Output Tokens\".",
|
||||
"com_endpoint_anthropic_topk": "El paràmetre Top-k canvia com el model selecciona els tokens de sortida. Un top-k d'1 significa que es selecciona el token més probable entre tots els tokens del vocabulari del model (també conegut com decodificació avariciosa), mentre que un top-k de 3 significa que el següent token es selecciona entre els 3 més probables (usant la temperatura).",
|
||||
"com_endpoint_anthropic_topp": "Top-p canvia com el model selecciona els tokens de sortida. Els tokens es seleccionen des dels més probables (veure paràmetre topK) fins als menys, fins que la suma de les seves probabilitats arriba al valor de top-p.",
|
||||
"com_endpoint_assistant": "Assistent",
|
||||
"com_endpoint_assistant_model": "Model d'Assistent",
|
||||
"com_endpoint_assistant_placeholder": "Selecciona un Assistent al panell lateral dret",
|
||||
"com_endpoint_completion": "Compleció",
|
||||
"com_endpoint_completion_model": "Model de Compleció (Recomanat: GPT-4)",
|
||||
"com_endpoint_config_click_here": "Fes clic aquí",
|
||||
"com_endpoint_config_google_api_info": "Per obtenir la teva clau API de Llenguatge Generatiu (per Gemini),",
|
||||
"com_endpoint_config_google_api_key": "Clau API de Google",
|
||||
"com_endpoint_config_google_cloud_platform": "(de Google Cloud Platform)",
|
||||
"com_endpoint_config_google_gemini_api": "(API Gemini)",
|
||||
"com_endpoint_config_google_service_key": "Clau de Compte de Servei de Google",
|
||||
"com_endpoint_config_key": "Defineix la clau API",
|
||||
"com_endpoint_config_key_encryption": "La teva clau serà xifrada i esborrada a",
|
||||
"com_endpoint_config_key_for": "Defineix clau API per a",
|
||||
"com_endpoint_config_key_google_need_to": "Cal que",
|
||||
"com_endpoint_config_key_google_service_account": "Creïs un Compte de Servei",
|
||||
"com_endpoint_config_key_google_vertex_ai": "Habilitis Vertex AI",
|
||||
"com_endpoint_config_key_google_vertex_api": "API a Google Cloud, després",
|
||||
"com_endpoint_config_key_google_vertex_api_role": "Assegura't de clicar 'Crea i Continua' per donar com a mínim el rol 'Vertex AI User'. Finalment, crea una clau JSON per importar aquí.",
|
||||
"com_endpoint_config_key_import_json_key": "Importa la clau JSON de Compte de Servei.",
|
||||
"com_endpoint_config_key_import_json_key_invalid": "Clau JSON de Compte de Servei no vàlida. Has importat el fitxer correcte?",
|
||||
"com_endpoint_config_key_import_json_key_success": "Clau JSON de Compte de Servei importada amb èxit",
|
||||
"com_endpoint_config_key_name": "Clau",
|
||||
"com_endpoint_config_key_never_expires": "La teva clau no caducarà mai",
|
||||
"com_endpoint_config_placeholder": "Configura la teva clau al menú superior per xatejar.",
|
||||
"com_endpoint_config_value": "Introdueix el valor per a",
|
||||
"com_endpoint_context": "Context",
|
||||
"com_endpoint_context_info": "El nombre màxim de tokens que es poden utilitzar per context. Serveix per controlar quants tokens s'envien per petició. Si no s'especifica, es fan servir els valors per defecte del sistema segons la mida de context dels models coneguts. Valors alts poden causar errors i/o més cost de tokens.",
|
||||
"com_endpoint_context_tokens": "Màxim de tokens de context",
|
||||
"com_endpoint_custom_name": "Nom personalitzat",
|
||||
"com_endpoint_default": "per defecte",
|
||||
"com_endpoint_default_blank": "per defecte: buit",
|
||||
"com_endpoint_default_empty": "per defecte: buit",
|
||||
"com_endpoint_default_with_num": "per defecte: {{0}}",
|
||||
"com_endpoint_deprecated": "Desfasat",
|
||||
"com_endpoint_deprecated_info": "Aquest endpoint està desfasat i podria ser eliminat en futures versions, utilitza l'endpoint d'agent",
|
||||
"com_endpoint_deprecated_info_a11y": "L'endpoint de plugin està desfasat i podria ser eliminat en futures versions, utilitza l'endpoint d'agent",
|
||||
"com_endpoint_examples": "Predefinits",
|
||||
"com_endpoint_export": "Exporta",
|
||||
"com_endpoint_export_share": "Exporta/Comparteix",
|
||||
"com_endpoint_frequency_penalty": "Penalització de freqüència",
|
||||
"com_endpoint_func_hover": "Habilita l'ús de Plugins com a Funcions OpenAI",
|
||||
"com_endpoint_google_custom_name_placeholder": "Defineix un nom personalitzat per a Google",
|
||||
"com_endpoint_google_maxoutputtokens": "Nombre màxim de tokens generats a la resposta. Utilitza un valor baix per respostes curtes i un d'alt per llargues. Nota: els models poden aturar-se abans d'arribar al màxim.",
|
||||
"com_endpoint_google_temp": "Valors alts = més aleatori, valors baixos = més enfocat i determinista. Recomanem modificar això o Top P però no ambdós.",
|
||||
"com_endpoint_google_topk": "Top-k canvia com el model selecciona els tokens de sortida. Top-k d'1 selecciona el més probable, top-k de 3 selecciona entre els 3 més probables (amb temperatura).",
|
||||
"com_endpoint_google_topp": "Top-p canvia com el model selecciona els tokens de sortida. Es seleccionen tokens del més probable fins que la suma de probabilitats arriba a top-p.",
|
||||
"com_endpoint_instructions_assistants": "Sobreescriu instruccions",
|
||||
"com_endpoint_instructions_assistants_placeholder": "Sobreescriu les instruccions de l'assistent. Útil per modificar el comportament en cada execució.",
|
||||
"com_endpoint_max_output_tokens": "Màxim de tokens de sortida",
|
||||
"com_endpoint_message": "Missatge",
|
||||
"com_endpoint_message_new": "Missatge {{0}}",
|
||||
"com_endpoint_message_not_appendable": "Edita el teu missatge o Regenera.",
|
||||
"com_endpoint_my_preset": "El meu predefinit",
|
||||
"com_endpoint_no_presets": "Encara no hi ha predefinits, utilitza el botó de configuració per crear-ne un",
|
||||
"com_endpoint_open_menu": "Obre el menú",
|
||||
"com_endpoint_openai_custom_name_placeholder": "Defineix un nom personalitzat per a la IA",
|
||||
"com_endpoint_openai_detail": "La resolució per a sol·licituds de Visió. \"Baixa\" és més barata i ràpida, \"Alta\" és més detallada i cara, i \"Auto\" triarà automàticament segons la resolució de la imatge.",
|
||||
"com_endpoint_openai_freq": "Nombre entre -2.0 i 2.0. Valors positius penalitzen nous tokens segons la seva freqüència al text fins ara, reduint la probabilitat que el model repeteixi la mateixa línia literalment.",
|
||||
"com_endpoint_openai_max": "El màxim de tokens a generar. La llargada total dels tokens d'entrada i generats està limitada per la mida de context del model.",
|
||||
"com_endpoint_openai_max_tokens": "Camp opcional 'max_tokens', que representa el nombre màxim de tokens que es poden generar a la resposta del xat. La llargada total dels tokens d'entrada i sortida està limitada per la mida de context del model. Pots experimentar errors si aquest nombre supera el màxim de tokens de context.",
|
||||
"com_endpoint_openai_pres": "Nombre entre -2.0 i 2.0. Valors positius penalitzen nous tokens si ja han aparegut, augmentant la probabilitat que el model tracti temes nous.",
|
||||
"com_endpoint_openai_prompt_prefix_placeholder": "Defineix instruccions personalitzades per incloure al Missatge de Sistema. Per defecte: cap",
|
||||
"com_endpoint_openai_reasoning_effort": "Només models o1 i o3: limita l'esforç de raonament per a models de raonament. Reduir l'esforç pot donar respostes més ràpides i consumir menys tokens en raonament.",
|
||||
"com_endpoint_openai_resend": "Reenvia totes les imatges adjuntades anteriorment. Nota: això pot augmentar molt el cost de tokens i pot causar errors si n'hi ha moltes.",
|
||||
"com_endpoint_openai_resend_files": "Reenvia tots els fitxers adjuntats anteriorment. Nota: això augmentarà el cost de tokens i pot causar errors si n'hi ha molts.",
|
||||
"com_endpoint_openai_stop": "Fins a 4 seqüències on l'API aturarà la generació de tokens.",
|
||||
"com_endpoint_openai_temp": "Valors alts = més aleatori, valors baixos = més enfocat i determinista. Recomanem modificar això o Top P però no ambdós.",
|
||||
"com_endpoint_openai_topp": "Una alternativa al sampling amb temperatura, anomenada nucleus sampling, on el model considera els tokens amb una massa de probabilitat top_p. Amb 0.1 només es consideren els tokens que sumen el 10% de la probabilitat total. Recomanem modificar això o la temperatura però no ambdós.",
|
||||
"com_endpoint_output": "Sortida",
|
||||
"com_endpoint_plug_image_detail": "Detall de la imatge",
|
||||
"com_endpoint_plug_resend_files": "Reenvia fitxers",
|
||||
"com_endpoint_plug_set_custom_instructions_for_gpt_placeholder": "Defineix instruccions personalitzades per incloure al Missatge de Sistema. Per defecte: cap",
|
||||
"com_endpoint_plug_skip_completion": "Omet la compleció",
|
||||
"com_endpoint_plug_use_functions": "Utilitza funcions",
|
||||
"com_endpoint_presence_penalty": "Penalització de presència",
|
||||
"com_endpoint_preset": "predefinit",
|
||||
"com_endpoint_preset_custom_name_placeholder": "Cal afegir alguna cosa aquí. Estava buit",
|
||||
"com_endpoint_preset_default": "ara és el predefinit per defecte.",
|
||||
"com_endpoint_preset_default_item": "Per defecte:",
|
||||
"com_endpoint_preset_default_none": "No hi ha cap predefinit actiu.",
|
||||
"com_endpoint_preset_default_removed": "ja no és el predefinit per defecte.",
|
||||
"com_endpoint_preset_delete_confirm": "Segur que vols eliminar aquest predefinit?",
|
||||
"com_endpoint_preset_delete_error": "S'ha produït un error en eliminar el teu predefinit. Torna-ho a provar.",
|
||||
"com_endpoint_preset_import": "Predefinit importat!",
|
||||
"com_endpoint_preset_import_error": "S'ha produït un error en importar el teu predefinit. Torna-ho a provar.",
|
||||
"com_endpoint_preset_name": "Nom del predefinit",
|
||||
"com_endpoint_preset_save_error": "S'ha produït un error en desar el teu predefinit. Torna-ho a provar.",
|
||||
"com_endpoint_preset_selected": "Predefinit actiu!",
|
||||
"com_endpoint_preset_selected_title": "Actiu!",
|
||||
"com_endpoint_preset_title": "Predefinit",
|
||||
"com_endpoint_presets": "predefinits",
|
||||
"com_endpoint_presets_clear_warning": "Segur que vols esborrar tots els predefinits? Aquesta acció és irreversible.",
|
||||
"com_endpoint_prompt_cache": "Utilitza la memòria cau de prompt",
|
||||
"com_endpoint_prompt_prefix": "Instruccions personalitzades",
|
||||
"com_endpoint_prompt_prefix_assistants": "Instruccions addicionals",
|
||||
"com_endpoint_prompt_prefix_assistants_placeholder": "Defineix instruccions addicionals o context a sobre de les principals de l'Assistent. S'ignora si està buit.",
|
||||
"com_endpoint_prompt_prefix_placeholder": "Defineix instruccions o context personalitzat. S'ignora si està buit.",
|
||||
"com_endpoint_reasoning_effort": "Esforç de raonament",
|
||||
"com_endpoint_save_as_preset": "Desa com a predefinit",
|
||||
"com_endpoint_search": "Cerca endpoint per nom",
|
||||
"com_endpoint_search_endpoint_models": "Cerca models de {{0}}...",
|
||||
"com_endpoint_search_models": "Cerca models...",
|
||||
"com_endpoint_search_var": "Cerca {{0}}...",
|
||||
"com_endpoint_set_custom_name": "Defineix un nom personalitzat, per si vols trobar aquest predefinit",
|
||||
"com_endpoint_skip_hover": "Habilita ometre el pas de compleció, que revisa la resposta final i els passos generats",
|
||||
"com_endpoint_stop": "Atura seqüències",
|
||||
"com_endpoint_stop_placeholder": "Separa els valors prement `Enter`",
|
||||
"com_endpoint_temperature": "Temperatura",
|
||||
"com_endpoint_thinking": "Pensant",
|
||||
"com_endpoint_thinking_budget": "Pressupost de pensament",
|
||||
"com_endpoint_top_k": "Top K",
|
||||
"com_endpoint_top_p": "Top P",
|
||||
"com_endpoint_use_active_assistant": "Utilitza l'assistent actiu",
|
||||
"com_error_expired_user_key": "La clau proporcionada per a {{0}} va caducar el {{1}}. Proporciona una clau nova i torna-ho a provar.",
|
||||
"com_error_files_dupe": "S'ha detectat un fitxer duplicat.",
|
||||
"com_error_files_empty": "No es permeten fitxers buits.",
|
||||
"com_error_files_process": "S'ha produït un error en processar el fitxer.",
|
||||
"com_error_files_unsupported_capability": "No hi ha capacitats habilitades que admetin aquest tipus de fitxer.",
|
||||
"com_error_files_upload": "S'ha produït un error en pujar el fitxer.",
|
||||
"com_error_files_upload_canceled": "La sol·licitud de pujada de fitxer s'ha cancel·lat. Nota: la pujada podria seguir processant-se i s'haurà d'esborrar manualment.",
|
||||
"com_error_files_validation": "S'ha produït un error en validar el fitxer.",
|
||||
"com_error_input_length": "La darrera resposta conté massa tokens, supera el límit, o els paràmetres de límit de tokens estan mal configurats i afecten la finestra de context. Més informació: {{0}}. Escurça el missatge, ajusta el màxim de context o divideix la conversa per continuar.",
|
||||
"com_error_invalid_agent_provider": "El proveïdor \"{{0}}\" no està disponible per a agents. Ves a la configuració de l'agent i selecciona un proveïdor disponible.",
|
||||
"com_error_invalid_user_key": "Clau proporcionada no vàlida. Proporciona una clau vàlida i torna-ho a provar.",
|
||||
"com_error_moderation": "Sembla que el contingut enviat ha estat marcat pel nostre sistema de moderació per no complir les directrius de la comunitat. No podem continuar amb aquest tema concret. Si tens altres preguntes o temes, edita el missatge o crea una conversa nova.",
|
||||
"com_error_no_base_url": "No s'ha trobat cap URL base. Proporciona'n una i torna-ho a provar.",
|
||||
"com_error_no_user_key": "No s'ha trobat cap clau. Proporciona'n una i torna-ho a provar.",
|
||||
"com_files_filter": "Filtra fitxers...",
|
||||
"com_files_no_results": "Cap resultat.",
|
||||
"com_files_number_selected": "{{0}} de {{1}} elements seleccionats",
|
||||
"com_files_table": "Cal afegir alguna cosa aquí. Estava buit",
|
||||
"com_generated_files": "Fitxers generats:",
|
||||
"com_hide_examples": "Amaga exemples",
|
||||
"com_nav_2fa": "Autenticació en dos passos (2FA)",
|
||||
"com_nav_account_settings": "Configuració del compte",
|
||||
"com_nav_always_make_prod": "Fes sempre noves versions de producció",
|
||||
"com_nav_archive_created_at": "Data d'arxivament",
|
||||
"com_nav_archive_name": "Nom",
|
||||
"com_nav_archived_chats": "Xats arxivats",
|
||||
"com_nav_at_command": "@-Comanda",
|
||||
"com_nav_at_command_description": "Activa o desactiva la comanda \"@\" per canviar d'endpoint, model, predefinit, etc.",
|
||||
"com_nav_audio_play_error": "Error en reproduir l'àudio: {{0}}",
|
||||
"com_nav_audio_process_error": "Error en processar l'àudio: {{0}}",
|
||||
"com_nav_auto_scroll": "Desplaçament automàtic al darrer missatge en obrir el xat",
|
||||
"com_nav_auto_send_prompts": "Envia automàticament els prompts",
|
||||
"com_nav_auto_send_text": "Envia text automàticament",
|
||||
"com_nav_auto_send_text_disabled": "estableix -1 per desactivar",
|
||||
"com_nav_auto_transcribe_audio": "Transcriu àudio automàticament",
|
||||
"com_nav_automatic_playback": "Reprodueix automàticament el darrer missatge",
|
||||
"com_nav_balance": "Balanç",
|
||||
"com_nav_browser": "Navegador",
|
||||
"com_nav_center_chat_input": "Centra la entrada del xat a la pantalla de benvinguda",
|
||||
"com_nav_change_picture": "Canvia la imatge",
|
||||
"com_nav_chat_commands": "Comandes de xat",
|
||||
"com_nav_chat_commands_info": "Aquestes comandes s'activen escrivint caràcters específics a l'inici del missatge. Cada comanda es dispara pel seu prefix. Pots desactivar-les si sovint comences missatges amb aquests caràcters.",
|
||||
"com_nav_chat_direction": "Direcció del xat",
|
||||
"com_nav_clear_all_chats": "Esborra tots els xats",
|
||||
"com_nav_clear_cache_confirm_message": "Segur que vols esborrar la memòria cau?",
|
||||
"com_nav_clear_conversation": "Esborra converses",
|
||||
"com_nav_clear_conversation_confirm_message": "Segur que vols esborrar totes les converses? Aquesta acció és irreversible.",
|
||||
"com_nav_close_sidebar": "Tanca la barra lateral",
|
||||
"com_nav_commands": "Comandes",
|
||||
"com_nav_confirm_clear": "Confirma l'esborrat",
|
||||
"com_nav_conversation_mode": "Mode de conversa",
|
||||
"com_nav_convo_menu_options": "Opcions del menú de conversa",
|
||||
"com_nav_db_sensitivity": "Sensibilitat de decibels",
|
||||
"com_nav_delete_account": "Elimina el compte",
|
||||
"com_nav_delete_account_button": "Elimina permanentment el meu compte",
|
||||
"com_nav_delete_account_confirm": "Eliminar el compte - segur?",
|
||||
"com_nav_delete_account_email_placeholder": "Introdueix el teu correu electrònic",
|
||||
"com_nav_delete_cache_storage": "Esborra la memòria cau de TTS",
|
||||
"com_nav_delete_data_info": "Totes les teves dades s'eliminaran.",
|
||||
"com_nav_delete_warning": "AVÍS: Això eliminarà permanentment el teu compte.",
|
||||
"com_nav_edit_chat_badges": "Edita les insígnies del xat",
|
||||
"com_nav_enable_cache_tts": "Habilita la memòria cau TTS",
|
||||
"com_nav_enable_cloud_browser_voice": "Utilitza veus al núvol",
|
||||
"com_nav_enabled": "Habilitat",
|
||||
"com_nav_engine": "Motor",
|
||||
"com_nav_enter_to_send": "Prem Enter per enviar missatges",
|
||||
"com_nav_export": "Exporta",
|
||||
"com_nav_export_all_message_branches": "Exporta totes les branques de missatges",
|
||||
"com_nav_export_conversation": "Exporta la conversa",
|
||||
"com_nav_export_filename": "Nom del fitxer",
|
||||
"com_nav_export_filename_placeholder": "Defineix el nom del fitxer",
|
||||
"com_nav_export_include_endpoint_options": "Inclou opcions d'endpoint",
|
||||
"com_nav_export_recursive": "Recursiu",
|
||||
"com_nav_export_recursive_or_sequential": "Recursiu o seqüencial?",
|
||||
"com_nav_export_type": "Tipus",
|
||||
"com_nav_external": "Extern",
|
||||
"com_nav_font_size": "Mida de la lletra del missatge",
|
||||
"com_nav_font_size_base": "Mitjana",
|
||||
"com_nav_font_size_lg": "Gran",
|
||||
"com_nav_font_size_sm": "Petita",
|
||||
"com_nav_font_size_xl": "Molt gran",
|
||||
"com_nav_font_size_xs": "Molt petita",
|
||||
"com_nav_help_faq": "Ajuda i PMF",
|
||||
"com_nav_hide_panel": "Amaga el panell lateral dret",
|
||||
"com_nav_info_code_artifacts": "Habilita la visualització d'artifacts de codi experimentals al costat del xat",
|
||||
"com_nav_info_code_artifacts_agent": "Habilita l'ús d'artifacts de codi per aquest agent. Per defecte, s'afegeixen instruccions addicionals específiques per a l'ús d'artifacts, tret que el \"Mode de prompt personalitzat\" estigui activat.",
|
||||
"com_nav_info_custom_prompt_mode": "Quan està activat, el prompt per defecte del sistema d'artifacts no s'inclourà. Totes les instruccions per generar artifacts s'han de proporcionar manualment.",
|
||||
"com_nav_info_enter_to_send": "Quan està habilitat, prémer `ENTER` enviarà el teu missatge. Si està desactivat, Enter afegeix una línia i hauràs de prémer `CTRL + ENTER` o `⌘ + ENTER` per enviar el missatge.",
|
||||
"com_nav_info_fork_change_default": "`Només missatges visibles` inclou només el camí directe al missatge seleccionat. `Inclou branques relacionades` afegeix branques al llarg del camí. `Inclou tot fins/des d'aquí` inclou tots els missatges i branques connectades.",
|
||||
"com_nav_info_fork_split_target_setting": "Quan està activat, la bifurcació començarà des del missatge objectiu fins al darrer missatge de la conversa, segons el comportament seleccionat.",
|
||||
"com_nav_info_include_shadcnui": "Quan està habilitat, s'inclouran instruccions per utilitzar els components shadcn/ui. shadcn/ui és una col·lecció de components reutilitzables fets amb Radix UI i Tailwind CSS. Nota: aquestes instruccions són llargues, només activa-ho si és important informar el LLM dels imports i components correctes. Més informació a: https://ui.shadcn.com/",
|
||||
"com_nav_info_latex_parsing": "Quan està habilitat, el codi LaTeX als missatges es mostrarà com a equacions matemàtiques. Desactivar-ho pot millorar el rendiment si no necessites LaTeX.",
|
||||
"com_nav_info_save_badges_state": "Quan està habilitat, l'estat de les insígnies del xat es desarà. Això vol dir que si crees un nou xat, les insígnies es mantindran igual que a l'anterior. Si desactives aquesta opció, les insígnies es reiniciaran cada vegada que creïs un xat nou.",
|
||||
"com_nav_info_save_draft": "Quan està habilitat, el text i els arxius adjunts que introdueixis al formulari del xat es desaran automàticament localment com a esborranys. Aquests esborranys estaran disponibles fins i tot si recarregues la pàgina o canvies de conversa. Es guarden localment i s'esborren quan envies el missatge.",
|
||||
"com_nav_info_show_thinking": "Quan està habilitat, el xat mostrarà els desplegables de pensament oberts per defecte, permetent veure el raonament de la IA en temps real. Quan està desactivat, es mantindran tancats per defecte per una interfície més neta.",
|
||||
"com_nav_info_user_name_display": "Quan està habilitat, el nom d'usuari de l'emissor es mostrarà a sobre de cada missatge teu. Quan està desactivat, només hi veuràs \"Tu\".",
|
||||
"com_nav_lang_arabic": "Àrab",
|
||||
"com_nav_lang_auto": "Detecta automàticament",
|
||||
"com_nav_lang_brazilian_portuguese": "Portuguès brasiler",
|
||||
"com_nav_lang_catalan": "Català",
|
||||
"com_nav_lang_chinese": "Xinès",
|
||||
"com_nav_lang_czech": "Txec",
|
||||
"com_nav_lang_danish": "Danès",
|
||||
"com_nav_lang_dutch": "Neerlandès",
|
||||
"com_nav_lang_english": "Anglès",
|
||||
"com_nav_lang_estonian": "Estonià",
|
||||
"com_nav_lang_finnish": "Finès",
|
||||
"com_nav_lang_french": "Francès",
|
||||
"com_nav_lang_georgian": "Georgià",
|
||||
"com_nav_lang_german": "Alemany",
|
||||
"com_nav_lang_hebrew": "Hebreu",
|
||||
"com_nav_lang_hungarian": "Hongarès",
|
||||
"com_nav_lang_indonesia": "Indonesi",
|
||||
"com_nav_lang_italian": "Italià",
|
||||
"com_nav_lang_japanese": "Japonès",
|
||||
"com_nav_lang_korean": "Coreà",
|
||||
"com_nav_lang_persian": "Persa",
|
||||
"com_nav_lang_polish": "Polonès",
|
||||
"com_nav_lang_portuguese": "Portuguès",
|
||||
"com_nav_lang_russian": "Rus",
|
||||
"com_nav_lang_spanish": "Espanyol",
|
||||
"com_nav_lang_swedish": "Suec",
|
||||
"com_nav_lang_thai": "Tai",
|
||||
"com_nav_lang_traditional_chinese": "Xinès tradicional",
|
||||
"com_nav_lang_turkish": "Turc",
|
||||
"com_nav_lang_vietnamese": "Vietnamita",
|
||||
"com_nav_language": "Idioma",
|
||||
"com_nav_latex_parsing": "Interpretació LaTeX als missatges (pot afectar el rendiment)",
|
||||
"com_nav_log_out": "Tanca sessió",
|
||||
"com_nav_long_audio_warning": "Els textos llargs trigaran més a processar-se.",
|
||||
"com_nav_maximize_chat_space": "Maximitza l'espai de xat",
|
||||
"com_nav_modular_chat": "Permet canviar d'Endpoint durant la conversa",
|
||||
"com_nav_my_files": "Els meus fitxers",
|
||||
"com_nav_not_supported": "No compatible",
|
||||
"com_nav_open_sidebar": "Obre la barra lateral",
|
||||
"com_nav_playback_rate": "Velocitat de reproducció de l'àudio",
|
||||
"com_nav_plugin_auth_error": "S'ha produït un error en autenticar el plugin. Torna-ho a provar.",
|
||||
"com_nav_plugin_install": "Instal·la",
|
||||
"com_nav_plugin_search": "Cerca plugins",
|
||||
"com_nav_plugin_store": "Botiga de plugins",
|
||||
"com_nav_plugin_uninstall": "Desinstal·la",
|
||||
"com_nav_plus_command": "Comanda +",
|
||||
"com_nav_plus_command_description": "Activa o desactiva la comanda \"+\" per afegir una configuració multi-resposta",
|
||||
"com_nav_profile_picture": "Imatge de perfil",
|
||||
"com_nav_save_badges_state": "Desa l'estat de les insígnies",
|
||||
"com_nav_save_drafts": "Desa esborranys localment",
|
||||
"com_nav_scroll_button": "Botó per desplaçar-se fins al final",
|
||||
"com_nav_search_placeholder": "Cerca missatges",
|
||||
"com_nav_send_message": "Envia missatge",
|
||||
"com_nav_setting_account": "Compte",
|
||||
"com_nav_setting_beta": "Funcionalitats beta",
|
||||
"com_nav_setting_chat": "Xat",
|
||||
"com_nav_setting_data": "Controls de dades",
|
||||
"com_nav_setting_general": "General",
|
||||
"com_nav_setting_speech": "Veu",
|
||||
"com_nav_settings": "Configuració",
|
||||
"com_nav_shared_links": "Enllaços compartits",
|
||||
"com_nav_show_code": "Mostra sempre el codi quan s'utilitzi l'intèrpret de codi",
|
||||
"com_nav_show_thinking": "Obre desplegables de pensament per defecte",
|
||||
"com_nav_slash_command": "/-Comanda",
|
||||
"com_nav_slash_command_description": "Activa o desactiva la comanda \"/\" per seleccionar un prompt amb el teclat",
|
||||
"com_nav_speech_to_text": "Veu a text",
|
||||
"com_nav_stop_generating": "Atura la generació",
|
||||
"com_nav_text_to_speech": "Text a veu",
|
||||
"com_nav_theme": "Tema",
|
||||
"com_nav_theme_dark": "Fosc",
|
||||
"com_nav_theme_light": "Clar",
|
||||
"com_nav_theme_system": "Sistema",
|
||||
"com_nav_tool_dialog": "Eines de l'assistent",
|
||||
"com_nav_tool_dialog_agents": "Eines de l'agent",
|
||||
"com_nav_tool_dialog_description": "Cal desar l'assistent per conservar la selecció d'eines.",
|
||||
"com_nav_tool_remove": "Elimina",
|
||||
"com_nav_tool_search": "Cerca eines",
|
||||
"com_nav_user": "USUARI",
|
||||
"com_nav_user_msg_markdown": "Mostra els missatges d'usuari en markdown",
|
||||
"com_nav_user_name_display": "Mostra el nom d'usuari als missatges",
|
||||
"com_nav_voice_select": "Veu",
|
||||
"com_show_agent_settings": "Mostra la configuració de l'agent",
|
||||
"com_show_completion_settings": "Mostra la configuració de compleció",
|
||||
"com_show_examples": "Mostra exemples",
|
||||
"com_sidepanel_agent_builder": "Constructor d'agents",
|
||||
"com_sidepanel_assistant_builder": "Constructor d'assistents",
|
||||
"com_sidepanel_attach_files": "Adjunta fitxers",
|
||||
"com_sidepanel_conversation_tags": "Adreces d'interès",
|
||||
"com_sidepanel_hide_panel": "Amaga el panell",
|
||||
"com_sidepanel_manage_files": "Gestiona fitxers",
|
||||
"com_sidepanel_parameters": "Paràmetres",
|
||||
"com_ui_2fa_account_security": "L'autenticació en dos passos afegeix una capa extra de seguretat al teu compte",
|
||||
"com_ui_2fa_disable": "Desactiva 2FA",
|
||||
"com_ui_2fa_disable_error": "S'ha produït un error en desactivar l'autenticació en dos passos",
|
||||
"com_ui_2fa_disabled": "2FA s'ha desactivat",
|
||||
"com_ui_2fa_enable": "Activa 2FA",
|
||||
"com_ui_2fa_enabled": "2FA s'ha activat",
|
||||
"com_ui_2fa_generate_error": "S'ha produït un error en generar la configuració de l'autenticació en dos passos",
|
||||
"com_ui_2fa_invalid": "Codi d'autenticació en dos passos no vàlid",
|
||||
"com_ui_2fa_setup": "Configura 2FA",
|
||||
"com_ui_2fa_verified": "Autenticació en dos passos verificada amb èxit",
|
||||
"com_ui_accept": "Accepto",
|
||||
"com_ui_add": "Afegeix",
|
||||
"com_ui_add_model_preset": "Afegeix un model o predefinit per una resposta addicional",
|
||||
"com_ui_add_multi_conversation": "Afegeix multi-conversa",
|
||||
"com_ui_admin": "Administrador",
|
||||
"com_ui_admin_access_warning": "Desactivar l'accés d'administrador a aquesta funció pot causar problemes inesperats en la interfície que requeriran una actualització. Si es desa, només es pot revertir des de la configuració de la interfície a librechat.yaml, que afecta tots els rols.",
|
||||
"com_ui_admin_settings": "Configuració d'administrador",
|
||||
"com_ui_advanced": "Avançat",
|
||||
"com_ui_advanced_settings": "Configuració avançada",
|
||||
"com_ui_agent": "Agent",
|
||||
"com_ui_agent_chain": "Cadena d'agents (mixtura d'agents)",
|
||||
"com_ui_agent_chain_info": "Permet crear seqüències d'agents. Cada agent pot accedir als resultats dels agents anteriors a la cadena. Basat en l'arquitectura \"Mixture-of-Agents\" on els agents utilitzen els resultats previs com a informació auxiliar.",
|
||||
"com_ui_agent_chain_max": "Has arribat al màxim de {{0}} agents.",
|
||||
"com_ui_agent_delete_error": "S'ha produït un error en eliminar l'agent",
|
||||
"com_ui_agent_deleted": "Agent eliminat amb èxit",
|
||||
"com_ui_agent_duplicate_error": "S'ha produït un error en duplicar l'agent",
|
||||
"com_ui_agent_duplicated": "Agent duplicat amb èxit",
|
||||
"com_ui_agent_editing_allowed": "Altres usuaris ja poden editar aquest agent",
|
||||
"com_ui_agent_recursion_limit": "Màxim de passos de l'agent",
|
||||
"com_ui_agent_recursion_limit_info": "Limita quants passos pot fer l'agent en una execució abans de donar una resposta final. Per defecte són 25 passos. Un pas pot ser una petició a la IA o una ronda d'ús d'eina. Per exemple, una interacció bàsica d'eina en requereix 3: petició inicial, ús d'eina i petició de seguiment.",
|
||||
"com_ui_agent_shared_to_all": "Cal afegir alguna cosa aquí. Estava buit",
|
||||
"com_ui_agent_var": "Agent {{0}}",
|
||||
"com_ui_agents": "Agents",
|
||||
"com_ui_agents_allow_create": "Permet crear agents",
|
||||
"com_ui_agents_allow_share_global": "Permet compartir agents amb tots els usuaris",
|
||||
"com_ui_agents_allow_use": "Permet utilitzar agents",
|
||||
"com_ui_all": "tots",
|
||||
"com_ui_all_proper": "Tots",
|
||||
"com_ui_analyzing": "Analitzant",
|
||||
"com_ui_analyzing_finished": "Anàlisi completat",
|
||||
"com_ui_api_key": "Clau API",
|
||||
"com_ui_archive": "Arxiva",
|
||||
"com_ui_archive_delete_error": "No s'ha pogut eliminar la conversa arxivada",
|
||||
"com_ui_archive_error": "No s'ha pogut arxivar la conversa",
|
||||
"com_ui_artifact_click": "Fes clic per obrir",
|
||||
"com_ui_artifacts": "Artifacts",
|
||||
"com_ui_artifacts_toggle": "Activa/desactiva la UI d'artifacts",
|
||||
"com_ui_artifacts_toggle_agent": "Habilita artifacts",
|
||||
"com_ui_ascending": "Asc",
|
||||
"com_ui_assistant": "Assistent",
|
||||
"com_ui_assistant_delete_error": "S'ha produït un error en eliminar l'assistent",
|
||||
"com_ui_assistant_deleted": "Assistent eliminat amb èxit",
|
||||
"com_ui_assistants": "Assistents",
|
||||
"com_ui_assistants_output": "Sortida dels assistents",
|
||||
"com_ui_attach_error": "No es pot adjuntar el fitxer. Crea o selecciona una conversa, o actualitza la pàgina.",
|
||||
"com_ui_attach_error_openai": "No es poden adjuntar fitxers d'assistent a altres endpoints",
|
||||
"com_ui_attach_error_size": "S'ha superat el límit de mida de fitxer per a l'endpoint:",
|
||||
"com_ui_attach_error_type": "Tipus de fitxer no compatible per a l'endpoint:",
|
||||
"com_ui_attach_remove": "Elimina fitxer",
|
||||
"com_ui_attach_warn_endpoint": "Els fitxers que no són d'assistent es poden ignorar si no hi ha una eina compatible",
|
||||
"com_ui_attachment": "Adjunt",
|
||||
"com_ui_auth_type": "Tipus d'autenticació",
|
||||
"com_ui_auth_url": "URL d'autorització",
|
||||
"com_ui_authentication": "Autenticació",
|
||||
"com_ui_authentication_type": "Tipus d'autenticació",
|
||||
"com_ui_avatar": "Avatar",
|
||||
"com_ui_azure": "Azure",
|
||||
"com_ui_back_to_chat": "Torna al xat",
|
||||
"com_ui_back_to_prompts": "Torna als prompts",
|
||||
"com_ui_backup_codes": "Codis de recuperació",
|
||||
"com_ui_backup_codes_regenerate_error": "S'ha produït un error en regenerar els codis de recuperació",
|
||||
"com_ui_backup_codes_regenerated": "Els codis de recuperació s'han regenerat correctament",
|
||||
"com_ui_basic": "Bàsic",
|
||||
"com_ui_basic_auth_header": "Capçalera d'autorització bàsica",
|
||||
"com_ui_bearer": "Bearer",
|
||||
"com_ui_bookmark_delete_confirm": "Segur que vols eliminar aquest marcador?",
|
||||
"com_ui_bookmarks": "Marcadors",
|
||||
"com_ui_bookmarks_add": "Afegeix marcadors",
|
||||
"com_ui_bookmarks_add_to_conversation": "Afegeix a la conversa actual",
|
||||
"com_ui_bookmarks_count": "Quantitat",
|
||||
"com_ui_bookmarks_create_error": "S'ha produït un error en crear el marcador",
|
||||
"com_ui_bookmarks_create_exists": "Aquest marcador ja existeix",
|
||||
"com_ui_bookmarks_create_success": "Marcador creat amb èxit",
|
||||
"com_ui_bookmarks_delete": "Elimina marcador",
|
||||
"com_ui_bookmarks_delete_error": "S'ha produït un error en eliminar el marcador",
|
||||
"com_ui_bookmarks_delete_success": "Marcador eliminat amb èxit",
|
||||
"com_ui_bookmarks_description": "Descripció",
|
||||
"com_ui_bookmarks_edit": "Edita marcador",
|
||||
"com_ui_bookmarks_filter": "Filtra marcadors...",
|
||||
"com_ui_bookmarks_new": "Nou marcador",
|
||||
"com_ui_bookmarks_title": "Títol",
|
||||
"com_ui_bookmarks_update_error": "S'ha produït un error en actualitzar el marcador",
|
||||
"com_ui_bookmarks_update_success": "Marcador actualitzat amb èxit",
|
||||
"com_ui_bulk_delete_error": "No s'ha pogut eliminar els enllaços compartits",
|
||||
"com_ui_callback_url": "URL de retorn",
|
||||
"com_ui_cancel": "Cancel·la",
|
||||
"com_ui_category": "Categoria",
|
||||
"com_ui_chat": "Xat",
|
||||
"com_ui_chat_history": "Historial de xat",
|
||||
"com_ui_clear": "Neteja",
|
||||
"com_ui_clear_all": "Neteja-ho tot",
|
||||
"com_ui_client_id": "ID de client",
|
||||
"com_ui_client_secret": "Secret de client",
|
||||
"com_ui_close": "Tanca",
|
||||
"com_ui_close_menu": "Tanca el menú",
|
||||
"com_ui_code": "Codi",
|
||||
"com_ui_collapse_chat": "Redueix el xat",
|
||||
"com_ui_command_placeholder": "Opcional: Introdueix una comanda pel prompt o es farà servir el nom",
|
||||
"com_ui_command_usage_placeholder": "Selecciona un prompt per comanda o nom",
|
||||
"com_ui_complete_setup": "Completa la configuració",
|
||||
"com_ui_confirm_action": "Confirma l'acció",
|
||||
"com_ui_confirm_admin_use_change": "Canviar aquesta opció bloquejarà l'accés als administradors, inclòs tu mateix. Segur que vols continuar?",
|
||||
"com_ui_confirm_change": "Confirma el canvi",
|
||||
"com_ui_context": "Context",
|
||||
"com_ui_continue": "Continua",
|
||||
"com_ui_controls": "Controls",
|
||||
"com_ui_convo_delete_error": "No s'ha pogut eliminar la conversa",
|
||||
"com_ui_copied": "Copiat!",
|
||||
"com_ui_copied_to_clipboard": "Copiat al porta-retalls",
|
||||
"com_ui_copy_code": "Copia el codi",
|
||||
"com_ui_copy_link": "Copia l'enllaç",
|
||||
"com_ui_copy_to_clipboard": "Copia al porta-retalls",
|
||||
"com_ui_create": "Crea",
|
||||
"com_ui_create_link": "Crea enllaç",
|
||||
"com_ui_create_prompt": "Crea prompt",
|
||||
"com_ui_currently_production": "Actualment en producció",
|
||||
"com_ui_custom": "Personalitzat",
|
||||
"com_ui_custom_header_name": "Nom de capçalera personalitzat",
|
||||
"com_ui_custom_prompt_mode": "Mode de prompt personalitzat",
|
||||
"com_ui_dashboard": "Tauler",
|
||||
"com_ui_date": "Data",
|
||||
"com_ui_date_april": "Abril",
|
||||
"com_ui_date_august": "Agost",
|
||||
"com_ui_date_december": "Desembre",
|
||||
"com_ui_date_february": "Febrer",
|
||||
"com_ui_date_january": "Gener",
|
||||
"com_ui_date_july": "Juliol",
|
||||
"com_ui_date_june": "Juny",
|
||||
"com_ui_date_march": "Març",
|
||||
"com_ui_date_may": "Maig",
|
||||
"com_ui_date_november": "Novembre",
|
||||
"com_ui_date_october": "Octubre",
|
||||
"com_ui_date_previous_30_days": "Últims 30 dies",
|
||||
"com_ui_date_previous_7_days": "Últims 7 dies",
|
||||
"com_ui_date_september": "Setembre",
|
||||
"com_ui_date_today": "Avui",
|
||||
"com_ui_date_yesterday": "Ahir",
|
||||
"com_ui_decline": "No accepto",
|
||||
"com_ui_default_post_request": "Per defecte (sol·licitud POST)",
|
||||
"com_ui_delete": "Elimina",
|
||||
"com_ui_delete_action": "Elimina acció",
|
||||
"com_ui_delete_action_confirm": "Segur que vols eliminar aquesta acció?",
|
||||
"com_ui_delete_agent_confirm": "Segur que vols eliminar aquest agent?",
|
||||
"com_ui_delete_assistant_confirm": "Segur que vols eliminar aquest Assistent? Aquesta acció no es pot desfer.",
|
||||
"com_ui_delete_confirm": "Això eliminarà",
|
||||
"com_ui_delete_confirm_prompt_version_var": "Això eliminarà la versió seleccionada per a \"{{0}}.\" Si no hi ha altres versions, s'eliminarà el prompt.",
|
||||
"com_ui_delete_conversation": "Vols eliminar el xat?",
|
||||
"com_ui_delete_prompt": "Vols eliminar el prompt?",
|
||||
"com_ui_delete_shared_link": "Vols eliminar l'enllaç compartit?",
|
||||
"com_ui_delete_tool": "Elimina eina",
|
||||
"com_ui_delete_tool_confirm": "Segur que vols eliminar aquesta eina?",
|
||||
"com_ui_descending": "Desc",
|
||||
"com_ui_description": "Descripció",
|
||||
"com_ui_description_placeholder": "Opcional: Introdueix una descripció per mostrar al prompt",
|
||||
"com_ui_disabling": "Desactivant...",
|
||||
"com_ui_download": "Descarrega",
|
||||
"com_ui_download_artifact": "Descarrega artifact",
|
||||
"com_ui_download_backup": "Descarrega codis de recuperació",
|
||||
"com_ui_download_backup_tooltip": "Abans de continuar, descarrega els teus codis de recuperació. Els necessitaràs per recuperar l'accés si perds el dispositiu d'autenticació",
|
||||
"com_ui_download_error": "Error en descarregar el fitxer. Potser ha estat eliminat.",
|
||||
"com_ui_drag_drop": "Cal afegir alguna cosa aquí. Estava buit",
|
||||
"com_ui_dropdown_variables": "Variables desplegables:",
|
||||
"com_ui_dropdown_variables_info": "Crea menús desplegables personalitzats pels teus prompts: `{{variable_name:opcio1|opcio2|opcio3}}`",
|
||||
"com_ui_duplicate": "Duplica",
|
||||
"com_ui_duplication_error": "S'ha produït un error en duplicar la conversa",
|
||||
"com_ui_duplication_processing": "Duplicant conversa...",
|
||||
"com_ui_duplication_success": "Conversa duplicada amb èxit",
|
||||
"com_ui_edit": "Edita",
|
||||
"com_ui_empty_category": "-",
|
||||
"com_ui_endpoint": "Extrem",
|
||||
"com_ui_endpoint_menu": "Menú d'extrem LLM",
|
||||
"com_ui_enter": "Entra",
|
||||
"com_ui_enter_api_key": "Introdueix la clau API",
|
||||
"com_ui_enter_openapi_schema": "Introdueix aquí el teu esquema OpenAPI",
|
||||
"com_ui_error": "Error",
|
||||
"com_ui_error_connection": "Error en connectar amb el servidor, prova d'actualitzar la pàgina.",
|
||||
"com_ui_error_save_admin_settings": "S'ha produït un error en desar la configuració d'administrador.",
|
||||
"com_ui_examples": "Exemples",
|
||||
"com_ui_expand_chat": "Expandeix el xat",
|
||||
"com_ui_export_convo_modal": "Modal d'exportació de conversa",
|
||||
"com_ui_field_required": "Aquest camp és obligatori",
|
||||
"com_ui_filter_prompts": "Filtra prompts",
|
||||
"com_ui_filter_prompts_name": "Filtra prompts per nom",
|
||||
"com_ui_finance": "Finances",
|
||||
"com_ui_fork": "Bifurca",
|
||||
"com_ui_fork_all_target": "Inclou tot fins/des d'aquí",
|
||||
"com_ui_fork_branches": "Inclou branques relacionades",
|
||||
"com_ui_fork_change_default": "Opció de bifurcació per defecte",
|
||||
"com_ui_fork_default": "Utilitza l'opció de bifurcació per defecte",
|
||||
"com_ui_fork_error": "S'ha produït un error en bifurcar la conversa",
|
||||
"com_ui_fork_from_message": "Selecciona una opció de bifurcació",
|
||||
"com_ui_fork_info_1": "Utilitza aquesta configuració per bifurcar missatges amb el comportament desitjat.",
|
||||
"com_ui_fork_info_2": "Bifurcar\" vol dir crear una conversa nova que comença/acaba en missatges específics de la conversa actual, creant-ne una còpia segons les opcions seleccionades.",
|
||||
"com_ui_fork_info_3": "El \"missatge objectiu\" és el missatge des d'on s'ha obert aquesta finestra, o si marques \"{{0}}\", el darrer missatge de la conversa.",
|
||||
"com_ui_fork_info_branches": "Aquesta opció bifurca els missatges visibles i les branques relacionades; és a dir, el camí directe fins al missatge objectiu, incloent les branques pel camí.",
|
||||
"com_ui_fork_info_button_label": "Mostra informació sobre la bifurcació de converses",
|
||||
"com_ui_fork_info_remember": "Marca-ho per recordar les opcions seleccionades per a futurs usos, fent més ràpida la bifurcació segons preferències.",
|
||||
"com_ui_fork_info_start": "Si està seleccionat, la bifurcació començarà des d'aquest missatge fins al darrer de la conversa, segons el comportament escollit.",
|
||||
"com_ui_fork_info_target": "Aquesta opció bifurca tots els missatges fins al missatge objectiu, incloent-ne els veïns; o sigui, totes les branques de missatges, siguin visibles o no, es veuen incloses.",
|
||||
"com_ui_fork_info_visible": "Aquesta opció bifurca només els missatges visibles; és a dir, el camí directe al missatge objectiu, sense branques.",
|
||||
"com_ui_fork_more_details_about": "Mostra informació addicional sobre l'opció de bifurcació \"{{0}}\"",
|
||||
"com_ui_fork_more_info_options": "Mostra una explicació detallada de totes les opcions de bifurcació i el seu comportament",
|
||||
"com_ui_fork_processing": "Bifurcant conversa...",
|
||||
"com_ui_fork_remember": "Recorda",
|
||||
"com_ui_fork_remember_checked": "La teva selecció es recordarà després d'utilitzar-la. Pots canviar-ho sempre als ajustos.",
|
||||
"com_ui_fork_split_target": "Comença la bifurcació aquí",
|
||||
"com_ui_fork_split_target_setting": "Comença la bifurcació des del missatge objectiu per defecte",
|
||||
"com_ui_fork_success": "Conversa bifurcada amb èxit",
|
||||
"com_ui_fork_visible": "Només missatges visibles",
|
||||
"com_ui_generate_backup": "Genera codis de recuperació",
|
||||
"com_ui_generate_qrcode": "Genera codi QR",
|
||||
"com_ui_generating": "Generant...",
|
||||
"com_ui_global_group": "Cal afegir alguna cosa aquí. Estava buit",
|
||||
"com_ui_go_back": "Torna enrere",
|
||||
"com_ui_go_to_conversation": "Ves a la conversa",
|
||||
"com_ui_good_afternoon": "Bona tarda",
|
||||
"com_ui_good_evening": "Bona nit",
|
||||
"com_ui_good_morning": "Bon dia",
|
||||
"com_ui_happy_birthday": "Fa un any que vaig néixer!",
|
||||
"com_ui_hide_qr": "Amaga el codi QR",
|
||||
"com_ui_host": "Servidor",
|
||||
"com_ui_idea": "Idees",
|
||||
"com_ui_image_gen": "Generació d'imatges",
|
||||
"com_ui_import": "Importa",
|
||||
"com_ui_import_conversation_error": "S'ha produït un error en importar les converses",
|
||||
"com_ui_import_conversation_file_type_error": "Tipus d'importació no compatible",
|
||||
"com_ui_import_conversation_info": "Importa converses des d'un fitxer JSON",
|
||||
"com_ui_import_conversation_success": "Converses importades amb èxit",
|
||||
"com_ui_include_shadcnui": "Inclou instruccions de components shadcn/ui",
|
||||
"com_ui_include_shadcnui_agent": "Inclou instruccions shadcn/ui",
|
||||
"com_ui_input": "Entrada",
|
||||
"com_ui_instructions": "Instruccions",
|
||||
"com_ui_late_night": "Bona matinada",
|
||||
"com_ui_latest_footer": "Cada IA per a tothom.",
|
||||
"com_ui_latest_production_version": "Darrera versió de producció",
|
||||
"com_ui_latest_version": "Darrera versió",
|
||||
"com_ui_librechat_code_api_key": "Aconsegueix la teva clau API d'Intèrpret de Codi de LibreChat",
|
||||
"com_ui_librechat_code_api_subtitle": "Segur. Multiidioma. Fitxers d'entrada/sortida.",
|
||||
"com_ui_librechat_code_api_title": "Executa codi IA",
|
||||
"com_ui_loading": "Carregant...",
|
||||
"com_ui_locked": "Blocat",
|
||||
"com_ui_logo": "Logotip {{0}}",
|
||||
"com_ui_manage": "Gestiona",
|
||||
"com_ui_max_tags": "El màxim permès és {{0}}, s'utilitzen els últims valors.",
|
||||
"com_ui_mcp_servers": "Servidors MCP",
|
||||
"com_ui_mention": "Menciona un endpoint, assistent o predefinit per canviar-hi ràpidament",
|
||||
"com_ui_min_tags": "No es poden eliminar més valors, el mínim requerit és {{0}}.",
|
||||
"com_ui_misc": "Miscel·lània",
|
||||
"com_ui_model": "Model",
|
||||
"com_ui_model_parameters": "Paràmetres del model",
|
||||
"com_ui_more_info": "Més informació",
|
||||
"com_ui_my_prompts": "Els meus prompts",
|
||||
"com_ui_name": "Nom",
|
||||
"com_ui_new": "Nou",
|
||||
"com_ui_new_chat": "Nou xat",
|
||||
"com_ui_new_conversation_title": "Títol de la nova conversa",
|
||||
"com_ui_next": "Següent",
|
||||
"com_ui_no": "No",
|
||||
"com_ui_no_backup_codes": "No hi ha codis de recuperació disponibles. Genera'n de nous",
|
||||
"com_ui_no_bookmarks": "Sembla que encara no tens marcadors. Fes clic en un xat i afegeix-ne un de nou",
|
||||
"com_ui_no_category": "Sense categoria",
|
||||
"com_ui_no_changes": "No hi ha canvis per actualitzar",
|
||||
"com_ui_no_data": "Cal afegir alguna cosa aquí. Estava buit",
|
||||
"com_ui_no_terms_content": "No hi ha contingut de termes i condicions per mostrar",
|
||||
"com_ui_no_valid_items": "Cal afegir alguna cosa aquí. Estava buit",
|
||||
"com_ui_none": "Cap",
|
||||
"com_ui_not_used": "No utilitzat",
|
||||
"com_ui_nothing_found": "No s'ha trobat res",
|
||||
"com_ui_oauth": "OAuth",
|
||||
"com_ui_of": "de",
|
||||
"com_ui_off": "Desactivat",
|
||||
"com_ui_on": "Activat",
|
||||
"com_ui_openai": "OpenAI",
|
||||
"com_ui_page": "Pàgina",
|
||||
"com_ui_prev": "Anterior",
|
||||
"com_ui_preview": "Previsualitza",
|
||||
"com_ui_privacy_policy": "Política de privacitat",
|
||||
"com_ui_privacy_policy_url": "URL de la política de privacitat",
|
||||
"com_ui_prompt": "Prompt",
|
||||
"com_ui_prompt_already_shared_to_all": "Aquest prompt ja es comparteix amb tots els usuaris",
|
||||
"com_ui_prompt_name": "Nom del prompt",
|
||||
"com_ui_prompt_name_required": "El nom del prompt és obligatori",
|
||||
"com_ui_prompt_preview_not_shared": "L'autor no ha permès la col·laboració per aquest prompt.",
|
||||
"com_ui_prompt_text": "Text",
|
||||
"com_ui_prompt_text_required": "El text és obligatori",
|
||||
"com_ui_prompt_update_error": "S'ha produït un error en actualitzar el prompt",
|
||||
"com_ui_prompts": "Prompts",
|
||||
"com_ui_prompts_allow_create": "Permet crear prompts",
|
||||
"com_ui_prompts_allow_share_global": "Permet compartir prompts amb tots els usuaris",
|
||||
"com_ui_prompts_allow_use": "Permet utilitzar prompts",
|
||||
"com_ui_provider": "Proveïdor",
|
||||
"com_ui_read_aloud": "Llegeix en veu alta",
|
||||
"com_ui_redirecting_to_provider": "Redirigint a {{0}}, espera si us plau...",
|
||||
"com_ui_refresh_link": "Actualitza l'enllaç",
|
||||
"com_ui_regenerate": "Regenera",
|
||||
"com_ui_regenerate_backup": "Regenera codis de recuperació",
|
||||
"com_ui_regenerating": "Regenerant...",
|
||||
"com_ui_region": "Regió",
|
||||
"com_ui_rename": "Reanomena",
|
||||
"com_ui_rename_conversation": "Reanomena la conversa",
|
||||
"com_ui_rename_failed": "No s'ha pogut reanomenar la conversa",
|
||||
"com_ui_rename_prompt": "Reanomena el prompt",
|
||||
"com_ui_requires_auth": "Requereix autenticació",
|
||||
"com_ui_reset_var": "Reinicia {{0}}",
|
||||
"com_ui_result": "Resultat",
|
||||
"com_ui_revoke": "Revoca",
|
||||
"com_ui_revoke_info": "Revoca totes les credencials d'usuari proporcionades",
|
||||
"com_ui_revoke_key_confirm": "Segur que vols revocar aquesta clau?",
|
||||
"com_ui_revoke_key_endpoint": "Revoca la clau per a {{0}}",
|
||||
"com_ui_revoke_keys": "Revoca claus",
|
||||
"com_ui_revoke_keys_confirm": "Segur que vols revocar totes les claus?",
|
||||
"com_ui_role_select": "Rol",
|
||||
"com_ui_roleplay": "Rol",
|
||||
"com_ui_run_code": "Executa codi",
|
||||
"com_ui_run_code_error": "S'ha produït un error en executar el codi",
|
||||
"com_ui_save": "Desa",
|
||||
"com_ui_save_badge_changes": "Desar canvis d'insígnia?",
|
||||
"com_ui_save_submit": "Desa i envia",
|
||||
"com_ui_saved": "Desat!",
|
||||
"com_ui_schema": "Esquema",
|
||||
"com_ui_scope": "Abast",
|
||||
"com_ui_search": "Cerca",
|
||||
"com_ui_secret_key": "Clau secreta",
|
||||
"com_ui_select": "Selecciona",
|
||||
"com_ui_select_file": "Selecciona un fitxer",
|
||||
"com_ui_select_model": "Selecciona un model",
|
||||
"com_ui_select_provider": "Selecciona un proveïdor",
|
||||
"com_ui_select_provider_first": "Selecciona primer un proveïdor",
|
||||
"com_ui_select_region": "Selecciona una regió",
|
||||
"com_ui_select_search_model": "Cerca model per nom",
|
||||
"com_ui_select_search_plugin": "Cerca plugin per nom",
|
||||
"com_ui_select_search_provider": "Cerca proveïdor per nom",
|
||||
"com_ui_select_search_region": "Cerca regió per nom",
|
||||
"com_ui_share": "Comparteix",
|
||||
"com_ui_share_create_message": "El teu nom i qualsevol missatge afegit després de compartir romanen privats.",
|
||||
"com_ui_share_delete_error": "S'ha produït un error en eliminar l'enllaç compartit",
|
||||
"com_ui_share_error": "S'ha produït un error en compartir l'enllaç del xat",
|
||||
"com_ui_share_form_description": "Cal afegir alguna cosa aquí. Estava buit",
|
||||
"com_ui_share_link_to_chat": "Comparteix enllaç al xat",
|
||||
"com_ui_share_to_all_users": "Comparteix amb tots els usuaris",
|
||||
"com_ui_share_update_message": "El teu nom, instruccions personalitzades i missatges afegits després de compartir es mantenen privats.",
|
||||
"com_ui_share_var": "Comparteix {{0}}",
|
||||
"com_ui_shared_link_bulk_delete_success": "Enllaços compartits eliminats amb èxit",
|
||||
"com_ui_shared_link_delete_success": "Enllaç compartit eliminat amb èxit",
|
||||
"com_ui_shared_link_not_found": "Enllaç compartit no trobat",
|
||||
"com_ui_shared_prompts": "Prompts compartits",
|
||||
"com_ui_shop": "Compres",
|
||||
"com_ui_show": "Mostra",
|
||||
"com_ui_show_all": "Mostra-ho tot",
|
||||
"com_ui_show_qr": "Mostra el codi QR",
|
||||
"com_ui_sign_in_to_domain": "Inicia sessió a {{0}}",
|
||||
"com_ui_simple": "Simple",
|
||||
"com_ui_size": "Mida",
|
||||
"com_ui_special_var_current_date": "Data actual",
|
||||
"com_ui_special_var_current_datetime": "Data i hora actuals",
|
||||
"com_ui_special_var_current_user": "Usuari actual",
|
||||
"com_ui_special_var_iso_datetime": "Data i hora ISO UTC",
|
||||
"com_ui_special_variables": "Variables especials:",
|
||||
"com_ui_special_variables_more_info": "Pots seleccionar variables especials al desplegable: `{{current_date}}` (data i dia de la setmana d'avui), `{{current_datetime}}` (data i hora locals), `{{utc_iso_datetime}}` (data i hora ISO UTC), i `{{current_user}}` (nom del teu compte).",
|
||||
"com_ui_speech_while_submitting": "No es pot enviar veu mentre s'està generant una resposta",
|
||||
"com_ui_sr_actions_menu": "Obre el menú d'accions per a \"{{0}}\"",
|
||||
"com_ui_stop": "Atura",
|
||||
"com_ui_storage": "Emmagatzematge",
|
||||
"com_ui_submit": "Envia",
|
||||
"com_ui_teach_or_explain": "Aprenentatge",
|
||||
"com_ui_temporary": "Xat temporal",
|
||||
"com_ui_terms_and_conditions": "Termes i condicions",
|
||||
"com_ui_terms_of_service": "Condicions del servei",
|
||||
"com_ui_thinking": "Pensant...",
|
||||
"com_ui_thoughts": "Pensaments",
|
||||
"com_ui_token_exchange_method": "Mètode d'intercanvi de token",
|
||||
"com_ui_token_url": "URL del token",
|
||||
"com_ui_tools": "Eines",
|
||||
"com_ui_travel": "Viatges",
|
||||
"com_ui_unarchive": "Desarxiva",
|
||||
"com_ui_unarchive_error": "No s'ha pogut desarxivar la conversa",
|
||||
"com_ui_unknown": "Desconegut",
|
||||
"com_ui_untitled": "Sense títol",
|
||||
"com_ui_update": "Actualitza",
|
||||
"com_ui_upload": "Puja",
|
||||
"com_ui_upload_code_files": "Puja per a l'Intèrpret de Codi",
|
||||
"com_ui_upload_delay": "La pujada de \"{{0}}\" triga més del previst. Espera mentre el fitxer acaba d'indexar-se per a la recuperació.",
|
||||
"com_ui_upload_error": "S'ha produït un error en pujar el teu fitxer",
|
||||
"com_ui_upload_file_context": "Puja context de fitxer",
|
||||
"com_ui_upload_file_search": "Puja per a cerca de fitxers",
|
||||
"com_ui_upload_files": "Puja fitxers",
|
||||
"com_ui_upload_image": "Puja una imatge",
|
||||
"com_ui_upload_image_input": "Puja imatge",
|
||||
"com_ui_upload_invalid": "Fitxer no vàlid. Ha de ser una imatge dins el límit",
|
||||
"com_ui_upload_invalid_var": "Fitxer no vàlid. Ha de ser una imatge que no superi {{0}} MB",
|
||||
"com_ui_upload_ocr_text": "Puja com a text",
|
||||
"com_ui_upload_success": "Fitxer pujat amb èxit",
|
||||
"com_ui_upload_type": "Selecciona tipus de pujada",
|
||||
"com_ui_use_2fa_code": "Utilitza codi 2FA",
|
||||
"com_ui_use_backup_code": "Utilitza codi de recuperació",
|
||||
"com_ui_use_micrphone": "Utilitza el micròfon",
|
||||
"com_ui_use_prompt": "Utilitza prompt",
|
||||
"com_ui_used": "Utilitzat",
|
||||
"com_ui_variables": "Variables",
|
||||
"com_ui_variables_info": "Utilitza claus dobles per crear variables, per ex. `{{exemple variable}}`, per omplir-les quan utilitzis el prompt.",
|
||||
"com_ui_verify": "Verifica",
|
||||
"com_ui_version_var": "Versió {{0}}",
|
||||
"com_ui_versions": "Versions",
|
||||
"com_ui_view_source": "Mostra el xat original",
|
||||
"com_ui_weekend_morning": "Bon cap de setmana",
|
||||
"com_ui_write": "Escriptura",
|
||||
"com_ui_x_selected": "{{0}} seleccionats",
|
||||
"com_ui_yes": "Sí",
|
||||
"com_ui_zoom": "Zoom",
|
||||
"com_user_message": "Tu",
|
||||
"com_warning_resubmit_unsupported": "Tornar a enviar el missatge de la IA no està suportat per aquest endpoint."
|
||||
}
|
||||
725
packages/client/src/locales/cs/translation.json
Normal file
725
packages/client/src/locales/cs/translation.json
Normal file
|
|
@ -0,0 +1,725 @@
|
|||
{
|
||||
"chat_direction_right_to_left": "něco sem musí přijít. bylo prázdné",
|
||||
"com_a11y_ai_composing": "AI stále tvoří odpověď.",
|
||||
"com_a11y_end": "AI dokončila svou odpověď.",
|
||||
"com_a11y_start": "AI začala tvořit odpověď.",
|
||||
"com_agents_allow_editing": "Povolit ostatním uživatelům upravovat vašeho agenta",
|
||||
"com_agents_by_librechat": "od LibreChat",
|
||||
"com_agents_code_interpreter": "Při povolení může váš agent využívat LibreChat Code Interpreter API ke spuštění generovaného kódu, včetně zpracování souborů, bezpečně. Vyžaduje platný API klíč.",
|
||||
"com_agents_code_interpreter_title": "API pro interpretaci kódu",
|
||||
"com_agents_create_error": "Při vytváření agenta došlo k chybě.",
|
||||
"com_agents_description_placeholder": "Volitelné: Popište zde svého agenta",
|
||||
"com_agents_enable_file_search": "Povolit vyhledávání souborů",
|
||||
"com_agents_file_search_disabled": "Než nahrajete soubory pro vyhledávání, musíte vytvořit agenta.",
|
||||
"com_agents_file_search_info": "Při povolení bude agent informován o přesných názvech souborů uvedených níže, což mu umožní získat relevantní kontext z těchto souborů.",
|
||||
"com_agents_instructions_placeholder": "Systémové instrukce, které agent používá",
|
||||
"com_agents_missing_provider_model": "Před vytvořením agenta vyberte poskytovatele a model.",
|
||||
"com_agents_name_placeholder": "Volitelné: Název agenta",
|
||||
"com_agents_no_access": "Nemáte oprávnění upravovat tohoto agenta.",
|
||||
"com_agents_not_available": "Agent není k dispozici",
|
||||
"com_agents_search_name": "Hledat agenty podle jména",
|
||||
"com_agents_update_error": "Při aktualizaci agenta došlo k chybě.",
|
||||
"com_assistants_action_attempt": "Asistent se chce spojit s {{0}}",
|
||||
"com_assistants_actions": "Akce",
|
||||
"com_assistants_actions_disabled": "Než přidáte akce, musíte vytvořit asistenta.",
|
||||
"com_assistants_actions_info": "Umožněte asistentovi získávat informace nebo provádět akce přes API",
|
||||
"com_assistants_add_actions": "Přidat akce",
|
||||
"com_assistants_add_tools": "Přidat nástroje",
|
||||
"com_assistants_allow_sites_you_trust": "Povolte pouze weby, kterým důvěřujete.",
|
||||
"com_assistants_append_date": "Připojit aktuální datum a čas",
|
||||
"com_assistants_append_date_tooltip": "Při povolení se k systémovým instrukcím asistenta připojí aktuální datum a čas klienta.",
|
||||
"com_assistants_attempt_info": "Asistent chce odeslat následující:",
|
||||
"com_assistants_available_actions": "Dostupné akce",
|
||||
"com_assistants_capabilities": "Schopnosti",
|
||||
"com_assistants_code_interpreter": "Interpret kódu",
|
||||
"com_assistants_code_interpreter_files": "Soubory níže jsou určeny pouze pro interpret kódu:",
|
||||
"com_assistants_code_interpreter_info": "Interpret kódu umožňuje asistentovi psát a spouštět kód. Tento nástroj dokáže zpracovat soubory s různými daty a formáty a generovat soubory, například grafy.",
|
||||
"com_assistants_completed_action": "Spojil se s {{0}}",
|
||||
"com_assistants_completed_function": "Spustil {{0}}",
|
||||
"com_assistants_conversation_starters": "Témata konverzace",
|
||||
"com_assistants_conversation_starters_placeholder": "Zadejte téma konverzace",
|
||||
"com_assistants_create_error": "Při vytváření asistenta došlo k chybě.",
|
||||
"com_assistants_create_success": "Úspěšně vytvořeno",
|
||||
"com_assistants_delete_actions_error": "Při mazání akce došlo k chybě.",
|
||||
"com_assistants_delete_actions_success": "Akce byla úspěšně odstraněna z asistenta",
|
||||
"com_assistants_description_placeholder": "Volitelné: Popište zde svého asistenta",
|
||||
"com_assistants_domain_info": "Asistent poslal tyto informace: {{0}}",
|
||||
"com_assistants_file_search": "Vyhledávání souborů",
|
||||
"com_assistants_file_search_info": "Vyhledávání souborů umožňuje asistentovi pracovat se znalostmi z nahraných souborů. Jakmile je soubor nahrán, asistent automaticky rozhodne, kdy získat jeho obsah na základě požadavků uživatelů. Připojování vektorových úložišť pro vyhledávání není zatím podporováno.",
|
||||
"com_assistants_knowledge": "Znalost",
|
||||
"com_auth_already_have_account": "Už máte účet?",
|
||||
"com_auth_apple_login": "Přihlásit se přes Apple",
|
||||
"com_auth_back_to_login": "Zpět k přihlášení",
|
||||
"com_auth_click": "Klikněte",
|
||||
"com_auth_click_here": "Klikněte zde",
|
||||
"com_auth_continue": "Pokračovat",
|
||||
"com_auth_create_account": "Vytvořit účet",
|
||||
"com_auth_discord_login": "Pokračovat přes Discord",
|
||||
"com_auth_email": "E-mail",
|
||||
"com_auth_email_address": "E-mailová adresa",
|
||||
"com_auth_email_verification_invalid": "Neplatné ověření e-mailu",
|
||||
"com_auth_email_verification_redirecting": "Přesměrování za {{0}} sekund...",
|
||||
"com_auth_email_verification_resend_prompt": "Nedostali jste e-mail?",
|
||||
"com_auth_email_verification_success": "E-mail byl úspěšně ověřen",
|
||||
"com_auth_email_verifying_ellipsis": "Ověřování...",
|
||||
"com_auth_error_create": "Při registraci účtu došlo k chybě. Zkuste to prosím znovu.",
|
||||
"com_auth_error_invalid_reset_token": "Tento resetovací token hesla již není platný.",
|
||||
"com_auth_error_login": "Nelze se přihlásit s poskytnutými údaji. Zkontrolujte své přihlašovací údaje a zkuste to znovu.",
|
||||
"com_auth_error_login_ban": "Váš účet byl dočasně zablokován kvůli porušení našich pravidel.",
|
||||
"com_auth_error_login_rl": "Příliš mnoho pokusů o přihlášení v krátkém čase. Zkuste to prosím později.",
|
||||
"com_auth_error_login_server": "Došlo k interní chybě serveru. Počkejte několik okamžiků a zkuste to znovu.",
|
||||
"com_auth_error_login_unverified": "Váš účet nebyl ověřen. Zkontrolujte svůj e-mail a najděte ověřovací odkaz.",
|
||||
"com_auth_facebook_login": "Pokračovat přes Facebook",
|
||||
"com_auth_full_name": "Celé jméno",
|
||||
"com_auth_github_login": "Pokračovat přes Github",
|
||||
"com_auth_google_login": "Pokračovat přes Google",
|
||||
"com_auth_here": "ZDE",
|
||||
"com_auth_login": "Přihlášení",
|
||||
"com_auth_login_with_new_password": "Nyní se můžete přihlásit s novým heslem.",
|
||||
"com_auth_name_max_length": "Jméno musí mít méně než 80 znaků",
|
||||
"com_auth_name_min_length": "Jméno musí mít alespoň 3 znaky",
|
||||
"com_auth_name_required": "Jméno je povinné",
|
||||
"com_auth_no_account": "Nemáte účet?",
|
||||
"com_auth_password": "Heslo",
|
||||
"com_auth_password_confirm": "Potvrdit heslo",
|
||||
"com_auth_password_forgot": "Zapomněli jste heslo?",
|
||||
"com_auth_password_max_length": "Heslo musí mít méně než 128 znaků",
|
||||
"com_auth_password_min_length": "Heslo musí mít alespoň 8 znaků",
|
||||
"com_auth_password_not_match": "Hesla se neshodují",
|
||||
"com_auth_password_required": "Heslo je povinné",
|
||||
"com_auth_registration_success_generic": "Zkontrolujte svůj e-mail pro ověření vaší e-mailové adresy.",
|
||||
"com_auth_registration_success_insecure": "Registrace byla úspěšná.",
|
||||
"com_auth_reset_password": "Obnovit heslo",
|
||||
"com_auth_reset_password_if_email_exists": "Pokud účet s touto e-mailovou adresou existuje, byl odeslán e-mail s instrukcemi pro resetování hesla. Nezapomeňte zkontrolovat složku spamu.",
|
||||
"com_auth_reset_password_link_sent": "E-mail odeslán",
|
||||
"com_auth_reset_password_success": "Obnova hesla úspěšná",
|
||||
"com_auth_sign_in": "Přihlásit se",
|
||||
"com_auth_sign_up": "Registrovat se",
|
||||
"com_auth_submit_registration": "Odeslat registraci",
|
||||
"com_auth_to_reset_your_password": "pro obnovení hesla.",
|
||||
"com_auth_to_try_again": "zkusit znovu.",
|
||||
"com_auth_two_factor": "Zkontrolujte vaši preferovanou aplikaci pro jednorázové heslo a zadejte kód",
|
||||
"com_auth_username": "Uživatelské jméno (volitelné)",
|
||||
"com_auth_username_max_length": "Uživatelské jméno musí mít méně než 20 znaků",
|
||||
"com_auth_username_min_length": "Uživatelské jméno musí mít alespoň 2 znaky",
|
||||
"com_auth_verify_your_identity": "Ověřte svou identitu",
|
||||
"com_auth_welcome_back": "Vítejte zpět",
|
||||
"com_click_to_download": "(klikněte zde pro stažení)",
|
||||
"com_download_expired": "(platnost stažení vypršela)",
|
||||
"com_download_expires": "(klikněte zde pro stažení - platnost vyprší {{0}})",
|
||||
"com_endpoint": "Koncový bod",
|
||||
"com_endpoint_agent": "Agent",
|
||||
"com_endpoint_agent_model": "Model agenta (Doporučeno: GPT-3.5)",
|
||||
"com_endpoint_agent_placeholder": "Vyberte prosím agenta",
|
||||
"com_endpoint_ai": "AI",
|
||||
"com_endpoint_anthropic_maxoutputtokens": "Maximální počet tokenů, které lze v odpovědi vygenerovat. Zadejte nižší hodnotu pro kratší odpovědi a vyšší hodnotu pro delší odpovědi. Poznámka: modely mohou skončit před dosažením tohoto maxima.",
|
||||
"com_endpoint_anthropic_prompt_cache": "Ukládání výzev umožňuje znovu použít rozsáhlý kontext nebo instrukce napříč API voláními, čímž se snižují náklady a latence.",
|
||||
"com_endpoint_anthropic_temp": "Hodnoty od 0 do 1. Použijte hodnotu blíže k 0 pro analytické / výběrové úlohy a blíže k 1 pro kreativní a generativní úkoly.",
|
||||
"com_endpoint_anthropic_thinking": "Povoluje interní uvažování u podporovaných modelů Claude (3.7 Sonnet). Poznámka: vyžaduje nastavení \"Thinking Budget\" na nižší hodnotu než \"Max Output Tokens\".",
|
||||
"com_endpoint_anthropic_thinking_budget": "Určuje maximální počet tokenů, které může Claude použít pro svůj interní proces uvažování.",
|
||||
"com_endpoint_assistant": "Asistent",
|
||||
"com_endpoint_assistant_model": "Model asistenta",
|
||||
"com_endpoint_completion": "Dokončení",
|
||||
"com_endpoint_completion_model": "Model dokončení (Doporučeno: GPT-4)",
|
||||
"com_endpoint_config_key_name": "Klíč",
|
||||
"com_endpoint_config_key_never_expires": "Váš klíč nikdy nevyprší",
|
||||
"com_endpoint_config_placeholder": "Nastavte svůj klíč v nabídce záhlaví pro chat.",
|
||||
"com_endpoint_config_value": "Zadejte hodnotu pro",
|
||||
"com_endpoint_context": "Kontext",
|
||||
"com_endpoint_context_info": "Maximální počet tokenů, které lze použít pro kontext. Použijte toto pro kontrolu počtu tokenů odeslaných na požadavek. Pokud není uvedeno, použije se výchozí nastavení systému podle velikosti kontextu známých modelů. Nastavení vyšších hodnot může vést k chybám a/nebo vyšším nákladům na tokeny.",
|
||||
"com_endpoint_context_tokens": "Maximální počet kontextových tokenů",
|
||||
"com_endpoint_custom_name": "Vlastní název",
|
||||
"com_endpoint_default": "výchozí",
|
||||
"com_endpoint_default_blank": "výchozí: prázdné",
|
||||
"com_endpoint_default_empty": "výchozí: prázdné",
|
||||
"com_endpoint_default_with_num": "výchozí: {{0}}",
|
||||
"com_endpoint_examples": "Předvolby",
|
||||
"com_endpoint_export": "Exportovat",
|
||||
"com_endpoint_export_share": "Exportovat/Sdílet",
|
||||
"com_endpoint_frequency_penalty": "Postih za časté opakování",
|
||||
"com_endpoint_func_hover": "Povolit použití pluginů jako funkcí OpenAI",
|
||||
"com_endpoint_google_custom_name_placeholder": "Nastavit vlastní název pro Google",
|
||||
"com_endpoint_google_maxoutputtokens": "Maximální počet tokenů, které lze v odpovědi vygenerovat. Nižší hodnota pro kratší odpovědi, vyšší hodnota pro delší odpovědi. Poznámka: modely mohou skončit před dosažením tohoto maxima.",
|
||||
"com_endpoint_google_temp": "Vyšší hodnoty = větší náhodnost, nižší hodnoty = soustředěnější a deterministický výstup. Doporučujeme upravit buď toto, nebo Top P, ale ne obojí.",
|
||||
"com_endpoint_google_topk": "Top-k mění způsob, jakým model vybírá tokeny pro výstup. Top-k 1 znamená, že vybraný token je nejpravděpodobnější ze všech v modelové slovní zásobě (také nazývané chamtivé dekódování), zatímco top-k 3 znamená, že další token je vybrán ze tří nejpravděpodobnějších (s použitím teploty).",
|
||||
"com_endpoint_google_topp": "Top-p mění způsob, jakým model vybírá tokeny pro výstup. Tokeny jsou vybírány od nejpravděpodobnějších, dokud součet jejich pravděpodobností nedosáhne hodnoty top-p.",
|
||||
"com_endpoint_instructions_assistants": "Přepsat instrukce",
|
||||
"com_endpoint_instructions_assistants_placeholder": "Přepíše instrukce asistenta. Užitečné pro úpravu chování v jednotlivých bězích.",
|
||||
"com_endpoint_max_output_tokens": "Maximální počet výstupních tokenů",
|
||||
"com_endpoint_message": "Zpráva",
|
||||
"com_endpoint_message_new": "Zpráva {{0}}",
|
||||
"com_endpoint_message_not_appendable": "Upravte svou zprávu nebo ji znovu vygenerujte.",
|
||||
"com_endpoint_my_preset": "Moje předvolba",
|
||||
"com_endpoint_no_presets": "Žádné předvolby zatím nejsou, použijte tlačítko nastavení k vytvoření jedné",
|
||||
"com_endpoint_open_menu": "Otevřít nabídku",
|
||||
"com_endpoint_openai_custom_name_placeholder": "Nastavit vlastní název pro AI",
|
||||
"com_endpoint_openai_temp": "Vyšší hodnoty = větší náhodnost, nižší hodnoty = soustředěnější a deterministický výstup.",
|
||||
"com_endpoint_openai_topp": "Alternativa k vzorkování s teplotou, tzv. nucleus sampling, kde model zvažuje výsledky tokenů s nejvyšší pravděpodobností. Například hodnota 0.1 znamená, že se berou v úvahu pouze tokeny tvořící 10 % nejvyšší pravděpodobnosti.",
|
||||
"com_endpoint_output": "Výstup",
|
||||
"com_endpoint_plug_image_detail": "Detail obrazu",
|
||||
"com_endpoint_plug_resend_files": "Znovu odeslat soubory",
|
||||
"com_endpoint_prompt_cache": "Použít cache výzev",
|
||||
"com_endpoint_prompt_prefix": "Vlastní instrukce",
|
||||
"com_endpoint_prompt_prefix_assistants": "Další instrukce",
|
||||
"com_endpoint_reasoning_effort": "Úroveň úsilí při uvažování",
|
||||
"com_endpoint_save_as_preset": "Uložit jako předvolbu",
|
||||
"com_endpoint_search": "Hledat koncový bod podle názvu",
|
||||
"com_endpoint_stop": "Zastavit sekvence",
|
||||
"com_endpoint_temperature": "Teplota",
|
||||
"com_endpoint_thinking": "Přemýšlení",
|
||||
"com_endpoint_thinking_budget": "Rozpočet na přemýšlení",
|
||||
"com_endpoint_top_k": "Top K",
|
||||
"com_endpoint_top_p": "Top P",
|
||||
"com_endpoint_use_active_assistant": "Použít aktivního asistenta",
|
||||
"com_error_expired_user_key": "Poskytnutý klíč pro {{0}} vypršel v {{1}}. Zadejte nový klíč a zkuste to znovu.",
|
||||
"com_error_files_dupe": "Byl zjištěn duplicitní soubor.",
|
||||
"com_error_files_empty": "Prázdné soubory nejsou povoleny.",
|
||||
"com_error_files_process": "Při zpracování souboru došlo k chybě.",
|
||||
"com_error_files_unsupported_capability": "Nejsou povoleny žádné funkce podporující tento typ souboru.",
|
||||
"com_error_files_upload": "Při nahrávání souboru došlo k chybě.",
|
||||
"com_error_files_upload_canceled": "Požadavek na nahrání souboru byl zrušen. Poznámka: nahrávání souboru může stále probíhat a bude nutné jej ručně smazat.",
|
||||
"com_error_files_validation": "Při ověřování souboru došlo k chybě.",
|
||||
"com_error_input_length": "Počet tokenů v poslední zprávě je příliš dlouhý a přesahuje limit tokenů ({{0}}). Zkraťte svou zprávu, upravte maximální velikost kontextu v parametrech konverzace nebo rozdělte konverzaci.",
|
||||
"com_error_invalid_user_key": "Zadaný klíč je neplatný. Zadejte platný klíč a zkuste to znovu.",
|
||||
"com_error_moderation": "Zdá se, že obsah vaší zprávy byl označen naším moderovacím systémem, protože neodpovídá našim komunitním zásadám. Nemůžeme v této záležitosti pokračovat. Pokud máte jiné otázky nebo témata, která chcete prozkoumat, upravte svou zprávu nebo vytvořte novou konverzaci.",
|
||||
"com_error_no_base_url": "Nebyla nalezena základní URL. Zadejte ji a zkuste to znovu.",
|
||||
"com_error_no_user_key": "Nebyl nalezen žádný klíč. Zadejte klíč a zkuste to znovu.",
|
||||
"com_files_filter": "Filtrovat soubory...",
|
||||
"com_files_no_results": "Žádné výsledky.",
|
||||
"com_files_number_selected": "Vybráno {{0}} z {{1}} položek",
|
||||
"com_files_table": "něco sem musí přijít. bylo prázdné",
|
||||
"com_generated_files": "Vygenerované soubory:",
|
||||
"com_hide_examples": "Skrýt příklady",
|
||||
"com_nav_2fa": "Dvoufaktorové ověřování (2FA)",
|
||||
"com_nav_account_settings": "Nastavení účtu",
|
||||
"com_nav_always_make_prod": "Vždy nastavovat nové verze jako produkční",
|
||||
"com_nav_archive_created_at": "Datum archivace",
|
||||
"com_nav_archive_name": "Název",
|
||||
"com_nav_archived_chats": "Archivované chaty",
|
||||
"com_nav_at_command": "@-Příkaz",
|
||||
"com_nav_at_command_description": "Přepínání příkazů \"@\" pro přepínání koncových bodů, modelů, předvoleb atd.",
|
||||
"com_nav_audio_play_error": "Chyba při přehrávání zvuku: {{0}}",
|
||||
"com_nav_audio_process_error": "Chyba při zpracování zvuku: {{0}}",
|
||||
"com_nav_auto_scroll": "Automaticky rolovat na nejnovější zprávu po otevření chatu",
|
||||
"com_nav_auto_send_prompts": "Automatické odesílání výzev",
|
||||
"com_nav_auto_send_text": "Automatické odesílání textu",
|
||||
"com_nav_auto_send_text_disabled": "nastavte -1 pro deaktivaci",
|
||||
"com_nav_auto_transcribe_audio": "Automaticky přepisovat zvuk",
|
||||
"com_nav_automatic_playback": "Automatické přehrávání poslední zprávy",
|
||||
"com_nav_balance": "Zůstatek",
|
||||
"com_nav_browser": "Prohlížeč",
|
||||
"com_nav_change_picture": "Změnit obrázek",
|
||||
"com_nav_chat_commands": "Příkazy chatu",
|
||||
"com_nav_chat_commands_info": "Tyto příkazy se aktivují zadáním specifických znaků na začátku vaší zprávy. Každý příkaz je spuštěn svým určeným prefixem. Můžete je deaktivovat, pokud tyto znaky často používáte na začátku zpráv.",
|
||||
"com_nav_chat_direction": "Směr chatu",
|
||||
"com_nav_clear_all_chats": "Vymazat všechny chaty",
|
||||
"com_nav_clear_cache_confirm_message": "Opravdu chcete vymazat mezipaměť?",
|
||||
"com_nav_clear_conversation": "Vymazat konverzace",
|
||||
"com_nav_clear_conversation_confirm_message": "Opravdu chcete vymazat všechny konverzace? Tuto akci nelze vrátit zpět.",
|
||||
"com_nav_close_sidebar": "Zavřít boční panel",
|
||||
"com_nav_commands": "Příkazy",
|
||||
"com_nav_confirm_clear": "Potvrdit vymazání",
|
||||
"com_nav_conversation_mode": "Režim konverzace",
|
||||
"com_nav_convo_menu_options": "Možnosti menu konverzace",
|
||||
"com_nav_db_sensitivity": "Citlivost decibelů",
|
||||
"com_nav_delete_account": "Smazat účet",
|
||||
"com_nav_delete_account_button": "Trvale smazat můj účet",
|
||||
"com_nav_delete_account_confirm": "Smazat účet - jste si jisti?",
|
||||
"com_nav_delete_account_email_placeholder": "Zadejte e-mail vašeho účtu",
|
||||
"com_nav_delete_cache_storage": "Smazat úložiště mezipaměti TTS",
|
||||
"com_nav_delete_data_info": "Všechna vaše data budou smazána.",
|
||||
"com_nav_delete_warning": "VAROVÁNÍ: Tato akce trvale smaže váš účet.",
|
||||
"com_nav_enable_cache_tts": "Povolit mezipaměť TTS",
|
||||
"com_nav_enable_cloud_browser_voice": "Používat cloudové hlasy",
|
||||
"com_nav_enabled": "Povoleno",
|
||||
"com_nav_engine": "Engine",
|
||||
"com_nav_enter_to_send": "Stiskněte Enter pro odeslání zprávy",
|
||||
"com_nav_export": "Exportovat",
|
||||
"com_nav_export_all_message_branches": "Exportovat všechny větve zpráv",
|
||||
"com_nav_export_conversation": "Exportovat konverzaci",
|
||||
"com_nav_export_filename": "Název souboru",
|
||||
"com_nav_export_filename_placeholder": "Zadejte název souboru",
|
||||
"com_nav_export_include_endpoint_options": "Zahrnout možnosti koncového bodu",
|
||||
"com_nav_export_recursive": "Rekurzivní",
|
||||
"com_nav_export_recursive_or_sequential": "Rekurzivní nebo sekvenční?",
|
||||
"com_nav_export_type": "Typ",
|
||||
"com_nav_external": "Externí",
|
||||
"com_nav_font_size": "Velikost písma zprávy",
|
||||
"com_nav_font_size_base": "Střední",
|
||||
"com_nav_font_size_lg": "Velká",
|
||||
"com_nav_font_size_sm": "Malá",
|
||||
"com_nav_font_size_xl": "Extra velká",
|
||||
"com_nav_font_size_xs": "Extra malá",
|
||||
"com_nav_help_faq": "Nápověda a FAQ",
|
||||
"com_nav_hide_panel": "Skrýt pravý panel",
|
||||
"com_nav_info_code_artifacts": "Povoluje zobrazování experimentálních kódových artefaktů vedle chatu",
|
||||
"com_nav_info_code_artifacts_agent": "Povoluje použití kódových artefaktů pro tohoto agenta. Ve výchozím nastavení jsou přidány další instrukce specifické pro použití artefaktů, pokud není povolen režim \"Vlastní výzva\".",
|
||||
"com_nav_info_custom_prompt_mode": "Při povolení nebude zahrnuta výchozí systémová výzva pro artefakty. Všechny instrukce pro generování artefaktů musí být v tomto režimu poskytnuty ručně.",
|
||||
"com_nav_info_enter_to_send": "Při povolení odešle stisk `ENTER` zprávu. Při deaktivaci přidá Enter nový řádek a zprávu odešlete stiskem `CTRL + ENTER` / `⌘ + ENTER`.",
|
||||
"com_nav_info_fork_change_default": "`Viditelné zprávy pouze` zahrnuje pouze přímou cestu k vybrané zprávě. `Zahrnout související větve` přidá větve podél cesty. `Zahrnout vše od/do` zahrnuje všechny propojené zprávy a větve.",
|
||||
"com_nav_info_fork_split_target_setting": "Při povolení začne větvení od cílové zprávy až po nejnovější zprávu v konverzaci podle zvoleného chování.",
|
||||
"com_nav_info_include_shadcnui": "Při povolení budou zahrnuty instrukce pro použití komponent shadcn/ui.",
|
||||
"com_nav_info_latex_parsing": "Při povolení bude LaTeX kód v zprávách vykreslen jako matematické rovnice.",
|
||||
"com_nav_info_save_draft": "Při povolení se text a přílohy, které zadáte do chatu, automaticky ukládají jako koncepty.",
|
||||
"com_nav_info_show_thinking": "Při povolení se automaticky zobrazí rozbalovací nabídky uvažování AI.",
|
||||
"com_nav_info_user_name_display": "Při povolení se nad každou vaší zprávou zobrazí uživatelské jméno.",
|
||||
"com_nav_lang_arabic": "العربية",
|
||||
"com_nav_lang_auto": "Automatické rozpoznání",
|
||||
"com_nav_lang_brazilian_portuguese": "Português Brasileiro",
|
||||
"com_nav_lang_chinese": "中文",
|
||||
"com_nav_lang_dutch": "Nederlands",
|
||||
"com_nav_lang_english": "English",
|
||||
"com_nav_lang_french": "Français ",
|
||||
"com_nav_lang_german": "Deutsch",
|
||||
"com_nav_lang_italian": "Italiano",
|
||||
"com_nav_lang_japanese": "日本語",
|
||||
"com_nav_lang_korean": "한국어",
|
||||
"com_nav_lang_polish": "Polski",
|
||||
"com_nav_lang_portuguese": "Português",
|
||||
"com_nav_lang_russian": "Русский",
|
||||
"com_nav_lang_spanish": "Español",
|
||||
"com_nav_lang_swedish": "Svenska",
|
||||
"com_nav_lang_traditional_chinese": "繁體中文",
|
||||
"com_nav_lang_turkish": "Türkçe",
|
||||
"com_nav_lang_vietnamese": "Tiếng Việt",
|
||||
"com_nav_language": "Jazyk",
|
||||
"com_nav_latex_parsing": "Zpracování LaTeXu v zprávách",
|
||||
"com_nav_log_out": "Odhlásit se",
|
||||
"com_nav_maximize_chat_space": "Maximalizovat prostor chatu",
|
||||
"com_nav_modular_chat": "Povolit přepínání koncových bodů během konverzace",
|
||||
"com_nav_my_files": "Moje soubory",
|
||||
"com_nav_not_supported": "Nepodporováno",
|
||||
"com_nav_open_sidebar": "Otevřít boční panel",
|
||||
"com_nav_playback_rate": "Rychlost přehrávání zvuku",
|
||||
"com_nav_plugin_auth_error": "Při ověřování pluginu došlo k chybě.",
|
||||
"com_nav_plugin_install": "Instalovat",
|
||||
"com_nav_plugin_search": "Hledat pluginy",
|
||||
"com_nav_plugin_store": "Obchod s pluginy",
|
||||
"com_nav_plugin_uninstall": "Odinstalovat",
|
||||
"com_nav_plus_command": "+-Příkaz",
|
||||
"com_nav_plus_command_description": "Přepnutí příkazu \"+\" pro přidání nastavení více odpovědí",
|
||||
"com_nav_profile_picture": "Profilový obrázek",
|
||||
"com_nav_save_drafts": "Ukládat koncepty lokálně",
|
||||
"com_nav_scroll_button": "Tlačítko pro posun na konec",
|
||||
"com_nav_search_placeholder": "Hledat zprávy",
|
||||
"com_nav_send_message": "Odeslat zprávu",
|
||||
"com_nav_setting_account": "Účet",
|
||||
"com_nav_setting_beta": "Beta funkce",
|
||||
"com_nav_setting_chat": "Chat",
|
||||
"com_nav_setting_data": "Ovládání dat",
|
||||
"com_nav_setting_general": "Obecné",
|
||||
"com_nav_setting_speech": "Hlas",
|
||||
"com_nav_settings": "Nastavení",
|
||||
"com_nav_shared_links": "Sdílené odkazy",
|
||||
"com_nav_show_code": "Vždy zobrazit kód při použití interpretace kódu",
|
||||
"com_nav_show_thinking": "Otevřít uvažovací nabídky ve výchozím nastavení",
|
||||
"com_nav_slash_command": "/-Příkaz",
|
||||
"com_nav_slash_command_description": "Přepnutí příkazu \"/\" pro výběr výzvy pomocí klávesnice",
|
||||
"com_nav_speech_to_text": "Převod řeči na text",
|
||||
"com_nav_stop_generating": "Zastavit generování",
|
||||
"com_nav_text_to_speech": "Převod textu na řeč",
|
||||
"com_nav_theme": "Motiv",
|
||||
"com_nav_theme_dark": "Tmavý",
|
||||
"com_nav_theme_light": "Světlý",
|
||||
"com_nav_theme_system": "Systémový",
|
||||
"com_nav_tool_dialog": "Nástroje asistenta",
|
||||
"com_nav_tool_dialog_agents": "Nástroje agenta",
|
||||
"com_nav_tool_dialog_description": "Asistent musí být uložen, aby výběr nástrojů přetrval.",
|
||||
"com_nav_tool_remove": "Odstranit",
|
||||
"com_nav_tool_search": "Hledat nástroje",
|
||||
"com_nav_user": "UŽIVATEL",
|
||||
"com_nav_user_msg_markdown": "Zobrazit uživatelské zprávy ve formátu Markdown",
|
||||
"com_nav_user_name_display": "Zobrazit uživatelské jméno ve zprávách",
|
||||
"com_nav_voice_select": "Hlas",
|
||||
"com_show_agent_settings": "Zobrazit nastavení agenta",
|
||||
"com_show_completion_settings": "Zobrazit nastavení dokončení",
|
||||
"com_show_examples": "Zobrazit příklady",
|
||||
"com_sidepanel_agent_builder": "Tvůrce agentů",
|
||||
"com_sidepanel_assistant_builder": "Tvůrce asistentů",
|
||||
"com_sidepanel_attach_files": "Připojit soubory",
|
||||
"com_sidepanel_conversation_tags": "Záložky",
|
||||
"com_sidepanel_hide_panel": "Skrýt panel",
|
||||
"com_sidepanel_manage_files": "Správa souborů",
|
||||
"com_sidepanel_parameters": "Parametry",
|
||||
"com_ui_2fa_account_security": "Dvoufaktorové ověřování přidává další vrstvu zabezpečení vašeho účtu",
|
||||
"com_ui_2fa_disable": "Zakázat 2FA",
|
||||
"com_ui_2fa_disable_error": "Při deaktivaci dvoufaktorového ověřování došlo k chybě",
|
||||
"com_ui_2fa_disabled": "2FA bylo deaktivováno",
|
||||
"com_ui_2fa_enable": "Povolit 2FA",
|
||||
"com_ui_2fa_enabled": "2FA bylo povoleno",
|
||||
"com_ui_2fa_generate_error": "Při generování nastavení 2FA došlo k chybě",
|
||||
"com_ui_2fa_invalid": "Neplatný kód dvoufaktorového ověřování",
|
||||
"com_ui_2fa_setup": "Nastavit 2FA",
|
||||
"com_ui_2fa_verified": "Dvoufaktorové ověřování úspěšně ověřeno",
|
||||
"com_ui_accept": "Přijímám",
|
||||
"com_ui_add": "Přidat",
|
||||
"com_ui_add_model_preset": "Přidat model nebo předvolbu pro další odpověď",
|
||||
"com_ui_add_multi_conversation": "Přidat více konverzací",
|
||||
"com_ui_admin": "Administrátor",
|
||||
"com_ui_admin_access_warning": "Zakázání přístupu správce k této funkci může způsobit problémy v uživatelském rozhraní.",
|
||||
"com_ui_admin_settings": "Nastavení správce",
|
||||
"com_ui_advanced": "Pokročilé",
|
||||
"com_ui_agent": "Agent",
|
||||
"com_ui_agent_delete_error": "Při mazání agenta došlo k chybě",
|
||||
"com_ui_agent_deleted": "Agent byl úspěšně smazán",
|
||||
"com_ui_agent_duplicate_error": "Při duplikaci agenta došlo k chybě",
|
||||
"com_ui_agent_duplicated": "Agent byl úspěšně duplikován",
|
||||
"com_ui_agents": "Agenti",
|
||||
"com_ui_agents_allow_create": "Povolit vytváření agentů",
|
||||
"com_ui_agents_allow_share_global": "Povolit sdílení agentů všem uživatelům",
|
||||
"com_ui_agents_allow_use": "Povolit používání agentů",
|
||||
"com_ui_all": "vše",
|
||||
"com_ui_all_proper": "Vše",
|
||||
"com_ui_analyzing": "Analýza",
|
||||
"com_ui_analyzing_finished": "Analýza dokončena",
|
||||
"com_ui_api_key": "API klíč",
|
||||
"com_ui_archive": "Archivovat",
|
||||
"com_ui_archive_error": "Nepodařilo se archivovat konverzaci",
|
||||
"com_ui_artifact_click": "Klikněte pro otevření",
|
||||
"com_ui_artifacts": "Artefakty",
|
||||
"com_ui_artifacts_toggle": "Přepnout uživatelské rozhraní artefaktů",
|
||||
"com_ui_artifacts_toggle_agent": "Povolit artefakty",
|
||||
"com_ui_ascending": "Vzestupně",
|
||||
"com_ui_assistant": "Asistent",
|
||||
"com_ui_assistant_delete_error": "Při mazání asistenta došlo k chybě",
|
||||
"com_ui_assistant_deleted": "Asistent byl úspěšně smazán",
|
||||
"com_ui_assistants": "Asistenti",
|
||||
"com_ui_assistants_output": "Výstup asistentů",
|
||||
"com_ui_attach_error": "Nelze připojit soubor. Vytvořte nebo vyberte konverzaci.",
|
||||
"com_ui_attach_error_openai": "Nelze připojit soubory asistenta k jiným koncovým bodům",
|
||||
"com_ui_attach_error_size": "Překročena velikost souboru pro koncový bod:",
|
||||
"com_ui_attach_error_type": "Nepodporovaný typ souboru pro koncový bod:",
|
||||
"com_ui_attach_warn_endpoint": "Nepodporované soubory mohou být ignorovány",
|
||||
"com_ui_attachment": "Příloha",
|
||||
"com_ui_auth_type": "Typ ověření",
|
||||
"com_ui_auth_url": "Autorizační URL",
|
||||
"com_ui_authentication": "Ověření",
|
||||
"com_ui_authentication_type": "Typ ověření",
|
||||
"com_ui_avatar": "Avatar",
|
||||
"com_ui_azure": "Azure",
|
||||
"com_ui_back_to_chat": "Zpět do chatu",
|
||||
"com_ui_back_to_prompts": "Zpět na výzvy",
|
||||
"com_ui_backup_codes": "Záložní kódy",
|
||||
"com_ui_backup_codes_regenerate_error": "Při generování záložních kódů došlo k chybě",
|
||||
"com_ui_backup_codes_regenerated": "Záložní kódy byly úspěšně vygenerovány",
|
||||
"com_ui_basic": "Základní",
|
||||
"com_ui_basic_auth_header": "Základní autorizační hlavička",
|
||||
"com_ui_bearer": "Bearer",
|
||||
"com_ui_bookmark_delete_confirm": "Opravdu chcete smazat tuto záložku?",
|
||||
"com_ui_bookmarks": "Záložky",
|
||||
"com_ui_bookmarks_add": "Přidat záložky",
|
||||
"com_ui_bookmarks_add_to_conversation": "Přidat do aktuální konverzace",
|
||||
"com_ui_bookmarks_count": "Počet",
|
||||
"com_ui_bookmarks_create_error": "Při vytváření záložky došlo k chybě",
|
||||
"com_ui_bookmarks_create_exists": "Tato záložka již existuje",
|
||||
"com_ui_bookmarks_create_success": "Záložka byla úspěšně vytvořena",
|
||||
"com_ui_bookmarks_delete": "Smazat záložku",
|
||||
"com_ui_bookmarks_delete_error": "Při mazání záložky došlo k chybě",
|
||||
"com_ui_bookmarks_delete_success": "Záložka byla úspěšně smazána",
|
||||
"com_ui_bookmarks_description": "Popis",
|
||||
"com_ui_bookmarks_edit": "Upravit záložku",
|
||||
"com_ui_bookmarks_filter": "Filtrovat záložky...",
|
||||
"com_ui_bookmarks_new": "Nová záložka",
|
||||
"com_ui_bookmarks_title": "Název",
|
||||
"com_ui_bookmarks_update_error": "Při aktualizaci záložky došlo k chybě",
|
||||
"com_ui_bookmarks_update_success": "Záložka byla úspěšně aktualizována",
|
||||
"com_ui_bulk_delete_error": "Nepodařilo se smazat sdílené odkazy",
|
||||
"com_ui_callback_url": "Callback URL",
|
||||
"com_ui_cancel": "Zrušit",
|
||||
"com_ui_chat": "Chat",
|
||||
"com_ui_chat_history": "Historie chatu",
|
||||
"com_ui_clear": "Vymazat",
|
||||
"com_ui_clear_all": "Vymazat vše",
|
||||
"com_ui_client_id": "ID klienta",
|
||||
"com_ui_client_secret": "Tajný klíč klienta",
|
||||
"com_ui_close": "Zavřít",
|
||||
"com_ui_close_menu": "Zavřít nabídku",
|
||||
"com_ui_code": "Kód",
|
||||
"com_ui_collapse_chat": "Sbalit chat",
|
||||
"com_ui_command_placeholder": "Volitelné: Zadejte příkaz pro výzvu, jinak se použije název",
|
||||
"com_ui_command_usage_placeholder": "Vybrat výzvu podle příkazu nebo názvu",
|
||||
"com_ui_complete_setup": "Dokončit nastavení",
|
||||
"com_ui_confirm_action": "Potvrdit akci",
|
||||
"com_ui_confirm_admin_use_change": "Změna tohoto nastavení zablokuje přístup správcům, včetně vás. Opravdu chcete pokračovat?",
|
||||
"com_ui_confirm_change": "Potvrdit změnu",
|
||||
"com_ui_context": "Kontext",
|
||||
"com_ui_continue": "Pokračovat",
|
||||
"com_ui_controls": "Ovládání",
|
||||
"com_ui_copied": "Zkopírováno!",
|
||||
"com_ui_copied_to_clipboard": "Zkopírováno do schránky",
|
||||
"com_ui_copy_code": "Kopírovat kód",
|
||||
"com_ui_copy_link": "Kopírovat odkaz",
|
||||
"com_ui_copy_to_clipboard": "Kopírovat do schránky",
|
||||
"com_ui_create": "Vytvořit",
|
||||
"com_ui_create_link": "Vytvořit odkaz",
|
||||
"com_ui_create_prompt": "Vytvořit výzvu",
|
||||
"com_ui_currently_production": "Aktuálně ve výrobě",
|
||||
"com_ui_custom": "Vlastní",
|
||||
"com_ui_custom_header_name": "Vlastní název hlavičky",
|
||||
"com_ui_custom_prompt_mode": "Režim vlastní výzvy",
|
||||
"com_ui_dashboard": "Dashboard",
|
||||
"com_ui_date": "Datum",
|
||||
"com_ui_date_april": "Duben",
|
||||
"com_ui_date_august": "Srpen",
|
||||
"com_ui_date_december": "Prosinec",
|
||||
"com_ui_date_february": "Únor",
|
||||
"com_ui_date_january": "Leden",
|
||||
"com_ui_date_july": "Červenec",
|
||||
"com_ui_date_june": "Červen",
|
||||
"com_ui_date_march": "Březen",
|
||||
"com_ui_date_may": "Květen",
|
||||
"com_ui_date_november": "Listopad",
|
||||
"com_ui_date_october": "Říjen",
|
||||
"com_ui_date_previous_30_days": "Předchozích 30 dní",
|
||||
"com_ui_date_previous_7_days": "Předchozích 7 dní",
|
||||
"com_ui_date_september": "Září",
|
||||
"com_ui_date_today": "Dnes",
|
||||
"com_ui_date_yesterday": "Včera",
|
||||
"com_ui_decline": "Nepřijímám",
|
||||
"com_ui_default_post_request": "Výchozí (POST request)",
|
||||
"com_ui_delete": "Smazat",
|
||||
"com_ui_delete_action": "Smazat akci",
|
||||
"com_ui_delete_action_confirm": "Opravdu chcete tuto akci smazat?",
|
||||
"com_ui_delete_agent_confirm": "Opravdu chcete tohoto agenta smazat?",
|
||||
"com_ui_delete_assistant_confirm": "Opravdu chcete tohoto asistenta smazat? Tuto akci nelze vrátit zpět.",
|
||||
"com_ui_delete_confirm": "Tímto smažete",
|
||||
"com_ui_delete_confirm_prompt_version_var": "Tímto smažete vybranou verzi pro \"{{0}}.\" Pokud neexistují žádné další verze, výzva bude smazána.",
|
||||
"com_ui_delete_conversation": "Smazat chat?",
|
||||
"com_ui_delete_prompt": "Smazat výzvu?",
|
||||
"com_ui_delete_shared_link": "Smazat sdílený odkaz?",
|
||||
"com_ui_delete_tool": "Smazat nástroj",
|
||||
"com_ui_delete_tool_confirm": "Opravdu chcete tento nástroj smazat?",
|
||||
"com_ui_descending": "Sestupně",
|
||||
"com_ui_description": "Popis",
|
||||
"com_ui_description_placeholder": "Volitelné: Zadejte popis pro zobrazení výzvy",
|
||||
"com_ui_disabling": "Deaktivace...",
|
||||
"com_ui_download": "Stáhnout",
|
||||
"com_ui_download_artifact": "Stáhnout artefakt",
|
||||
"com_ui_download_backup": "Stáhnout záložní kódy",
|
||||
"com_ui_download_backup_tooltip": "Před pokračováním si stáhněte záložní kódy. Budete je potřebovat k opětovnému přístupu v případě ztráty autentizačního zařízení.",
|
||||
"com_ui_download_error": "Chyba při stahování souboru. Soubor mohl být smazán.",
|
||||
"com_ui_drag_drop": "něco sem musí přijít. bylo prázdné",
|
||||
"com_ui_dropdown_variables": "Proměnné rozevírací nabídky:",
|
||||
"com_ui_dropdown_variables_info": "Vytvořte vlastní rozevírací nabídky pro vaše výzvy: `{{variable_name:option1|option2|option3}}`",
|
||||
"com_ui_duplicate": "Duplikovat",
|
||||
"com_ui_duplication_error": "Při duplikaci konverzace došlo k chybě",
|
||||
"com_ui_duplication_processing": "Duplikuji konverzaci...",
|
||||
"com_ui_duplication_success": "Konverzace úspěšně duplikována",
|
||||
"com_ui_edit": "Upravit",
|
||||
"com_ui_empty_category": "-",
|
||||
"com_ui_endpoint": "Koncový bod",
|
||||
"com_ui_endpoint_menu": "Nabídka LLM koncových bodů",
|
||||
"com_ui_enter": "Enter",
|
||||
"com_ui_enter_api_key": "Zadejte API klíč",
|
||||
"com_ui_enter_openapi_schema": "Zadejte svůj OpenAPI schéma zde",
|
||||
"com_ui_error": "Chyba",
|
||||
"com_ui_error_connection": "Chyba při připojení k serveru, zkuste obnovit stránku.",
|
||||
"com_ui_error_save_admin_settings": "Při ukládání nastavení správce došlo k chybě.",
|
||||
"com_ui_examples": "Příklady",
|
||||
"com_ui_export_convo_modal": "Exportovat konverzaci",
|
||||
"com_ui_field_required": "Toto pole je povinné",
|
||||
"com_ui_filter_prompts": "Filtrovat výzvy",
|
||||
"com_ui_filter_prompts_name": "Filtrovat výzvy podle názvu",
|
||||
"com_ui_finance": "Finance",
|
||||
"com_ui_fork": "Rozdělit",
|
||||
"com_ui_fork_all_target": "Zahrnout vše od/do",
|
||||
"com_ui_fork_branches": "Zahrnout související větve",
|
||||
"com_ui_fork_change_default": "Výchozí možnost rozdělení",
|
||||
"com_ui_fork_default": "Použít výchozí možnost rozdělení",
|
||||
"com_ui_fork_error": "Při rozdělování konverzace došlo k chybě",
|
||||
"com_ui_fork_from_message": "Vyberte možnost rozdělení",
|
||||
"com_ui_fork_info_1": "Použijte toto nastavení pro rozdělení zpráv podle požadovaného chování.",
|
||||
"com_ui_fork_info_2": "\"Rozdělení\" znamená vytvoření nové konverzace začínající/končící u určitých zpráv v aktuální konverzaci, čímž se vytvoří kopie dle vybraných možností.",
|
||||
"com_ui_fork_info_3": "\"Cílová zpráva\" označuje buď zprávu, ze které bylo okno otevřeno, nebo pokud zaškrtnete \"{{0}}\", nejnovější zprávu v konverzaci.",
|
||||
"com_ui_fork_info_branches": "Tato možnost rozděluje viditelné zprávy spolu se souvisejícími větvemi; jinými slovy, přímou cestu k cílové zprávě včetně větví na této cestě.",
|
||||
"com_ui_fork_info_remember": "Zaškrtnutím si zapamatujete vybrané možnosti pro budoucí použití, což urychlí rozdělování konverzací.",
|
||||
"com_ui_fork_info_start": "Pokud zaškrtnuto, rozdělení začne od této zprávy až po nejnovější zprávu v konverzaci dle zvoleného chování.",
|
||||
"com_ui_fork_info_target": "Tato možnost rozděluje všechny zprávy vedoucí k cílové zprávě, včetně sousedních; jinými slovy, zahrnuje všechny větve zpráv.",
|
||||
"com_ui_fork_info_visible": "Tato možnost rozděluje pouze viditelné zprávy; jinými slovy, přímou cestu k cílové zprávě bez větví.",
|
||||
"com_ui_fork_processing": "Rozděluji konverzaci...",
|
||||
"com_ui_fork_remember": "Zapamatovat",
|
||||
"com_ui_fork_remember_checked": "Vaše volba bude zapamatována. Můžete ji kdykoli změnit v nastavení.",
|
||||
"com_ui_fork_split_target": "Začít rozdělení zde",
|
||||
"com_ui_fork_split_target_setting": "Výchozí rozdělení od cílové zprávy",
|
||||
"com_ui_fork_success": "Konverzace úspěšně rozdělena",
|
||||
"com_ui_fork_visible": "Pouze viditelné zprávy",
|
||||
"com_ui_generate_backup": "Generovat záložní kódy",
|
||||
"com_ui_generate_qrcode": "Generovat QR kód",
|
||||
"com_ui_generating": "Generuji...",
|
||||
"com_ui_global_group": "něco sem musí přijít. bylo prázdné",
|
||||
"com_ui_go_back": "Zpět",
|
||||
"com_ui_go_to_conversation": "Přejít na konverzaci",
|
||||
"com_ui_happy_birthday": "Mám 1. narozeniny!",
|
||||
"com_ui_hide_qr": "Skrýt QR kód",
|
||||
"com_ui_host": "Hostitel",
|
||||
"com_ui_idea": "Nápady",
|
||||
"com_ui_image_gen": "Generování obrázků",
|
||||
"com_ui_import": "Importovat",
|
||||
"com_ui_import_conversation_error": "Při importu konverzací došlo k chybě",
|
||||
"com_ui_import_conversation_file_type_error": "Nepodporovaný typ souboru pro import",
|
||||
"com_ui_import_conversation_info": "Importovat konverzace ze souboru JSON",
|
||||
"com_ui_import_conversation_success": "Konverzace úspěšně importovány",
|
||||
"com_ui_include_shadcnui": "Zahrnout instrukce pro shadcn/ui",
|
||||
"com_ui_input": "Vstup",
|
||||
"com_ui_instructions": "Instrukce",
|
||||
"com_ui_latest_footer": "AICon se může plést. Vždy kontrolujte důležité informace.",
|
||||
"com_ui_latest_production_version": "Nejnovější produkční verze",
|
||||
"com_ui_latest_version": "Nejnovější verze",
|
||||
"com_ui_librechat_code_api_key": "Získejte svůj API klíč pro LibreChat Code Interpreter",
|
||||
"com_ui_librechat_code_api_subtitle": "Bezpečné. Vícejazyčné. Vstupní/Výstupní soubory.",
|
||||
"com_ui_librechat_code_api_title": "Spustit AI kód",
|
||||
"com_ui_loading": "Načítání...",
|
||||
"com_ui_locked": "Zamčeno",
|
||||
"com_ui_logo": "Logo {{0}}",
|
||||
"com_ui_manage": "Spravovat",
|
||||
"com_ui_max_tags": "Maximální povolený počet je {{0}}, používám nejnovější hodnoty.",
|
||||
"com_ui_mention": "Zmiňte koncový bod, asistenta nebo předvolbu pro rychlé přepnutí",
|
||||
"com_ui_min_tags": "Nelze odebrat další hodnoty, minimální počet je {{0}}.",
|
||||
"com_ui_misc": "Různé",
|
||||
"com_ui_model": "Model",
|
||||
"com_ui_model_parameters": "Parametry modelu",
|
||||
"com_ui_more_info": "Více informací",
|
||||
"com_ui_my_prompts": "Moje výzvy",
|
||||
"com_ui_name": "Název",
|
||||
"com_ui_new": "Nový",
|
||||
"com_ui_new_chat": "Nový chat",
|
||||
"com_ui_next": "Další",
|
||||
"com_ui_no": "Ne",
|
||||
"com_ui_no_backup_codes": "Nejsou k dispozici žádné záložní kódy. Vygenerujte nové.",
|
||||
"com_ui_no_bookmarks": "Zdá se, že zatím nemáte žádné záložky. Klikněte na chat a přidejte novou.",
|
||||
"com_ui_no_category": "Žádná kategorie",
|
||||
"com_ui_no_changes": "Žádné změny k aktualizaci",
|
||||
"com_ui_no_data": "něco sem musí přijít. bylo prázdné",
|
||||
"com_ui_no_terms_content": "Žádný obsah podmínek a pravidel k zobrazení",
|
||||
"com_ui_no_valid_items": "něco sem musí přijít. bylo prázdné",
|
||||
"com_ui_none": "Žádné",
|
||||
"com_ui_not_used": "Nepoužito",
|
||||
"com_ui_nothing_found": "Nic nenalezeno",
|
||||
"com_ui_oauth": "OAuth",
|
||||
"com_ui_of": "z",
|
||||
"com_ui_off": "Vypnuto",
|
||||
"com_ui_on": "Zapnuto",
|
||||
"com_ui_openai": "OpenAI",
|
||||
"com_ui_page": "Stránka",
|
||||
"com_ui_prev": "Předchozí",
|
||||
"com_ui_preview": "Náhled",
|
||||
"com_ui_privacy_policy": "Zásady ochrany osobních údajů",
|
||||
"com_ui_privacy_policy_url": "URL zásad ochrany osobních údajů",
|
||||
"com_ui_prompt": "Výzva",
|
||||
"com_ui_prompt_already_shared_to_all": "Tato výzva je již sdílena se všemi uživateli",
|
||||
"com_ui_prompt_name": "Název výzvy",
|
||||
"com_ui_prompt_name_required": "Název výzvy je povinný",
|
||||
"com_ui_prompt_preview_not_shared": "Autor neumožnil spolupráci na této výzvě.",
|
||||
"com_ui_prompt_text": "Text",
|
||||
"com_ui_prompt_text_required": "Text je povinný",
|
||||
"com_ui_prompt_update_error": "Při aktualizaci výzvy došlo k chybě",
|
||||
"com_ui_prompts": "Výzvy",
|
||||
"com_ui_prompts_allow_create": "Povolit vytváření výzev",
|
||||
"com_ui_prompts_allow_share_global": "Povolit sdílení výzev všem uživatelům",
|
||||
"com_ui_prompts_allow_use": "Povolit používání výzev",
|
||||
"com_ui_provider": "Poskytovatel",
|
||||
"com_ui_read_aloud": "Přečíst nahlas",
|
||||
"com_ui_refresh_link": "Obnovit odkaz",
|
||||
"com_ui_regenerate": "Znovu vygenerovat",
|
||||
"com_ui_regenerate_backup": "Znovu vygenerovat záložní kódy",
|
||||
"com_ui_regenerating": "Generuji znovu...",
|
||||
"com_ui_region": "Oblast",
|
||||
"com_ui_rename": "Přejmenovat",
|
||||
"com_ui_rename_prompt": "Přejmenovat výzvu",
|
||||
"com_ui_requires_auth": "Vyžaduje ověření",
|
||||
"com_ui_reset_var": "Obnovit {{0}}",
|
||||
"com_ui_result": "Výsledek",
|
||||
"com_ui_revoke": "Odvolat",
|
||||
"com_ui_revoke_info": "Odvolat všechna uživatelem poskytnutá pověření",
|
||||
"com_ui_revoke_key_confirm": "Opravdu chcete odvolat tento klíč?",
|
||||
"com_ui_revoke_key_endpoint": "Odvolat klíč pro {{0}}",
|
||||
"com_ui_revoke_keys": "Odvolat klíče",
|
||||
"com_ui_revoke_keys_confirm": "Opravdu chcete odvolat všechny klíče?",
|
||||
"com_ui_role_select": "Role",
|
||||
"com_ui_roleplay": "Roleplay",
|
||||
"com_ui_run_code": "Spustit kód",
|
||||
"com_ui_run_code_error": "Při spouštění kódu došlo k chybě",
|
||||
"com_ui_save": "Uložit",
|
||||
"com_ui_save_submit": "Uložit a odeslat",
|
||||
"com_ui_saved": "Uloženo!",
|
||||
"com_ui_schema": "Schéma",
|
||||
"com_ui_scope": "Rozsah",
|
||||
"com_ui_search": "Hledat",
|
||||
"com_ui_secret_key": "Tajný klíč",
|
||||
"com_ui_select": "Vybrat",
|
||||
"com_ui_select_file": "Vyberte soubor",
|
||||
"com_ui_select_model": "Vyberte model",
|
||||
"com_ui_select_provider": "Vyberte poskytovatele",
|
||||
"com_ui_select_provider_first": "Nejprve vyberte poskytovatele",
|
||||
"com_ui_select_region": "Vyberte oblast",
|
||||
"com_ui_select_search_model": "Hledat model podle názvu",
|
||||
"com_ui_select_search_plugin": "Hledat plugin podle názvu",
|
||||
"com_ui_select_search_provider": "Hledat poskytovatele podle názvu",
|
||||
"com_ui_select_search_region": "Hledat oblast podle názvu",
|
||||
"com_ui_share": "Sdílet",
|
||||
"com_ui_share_create_message": "Vaše jméno a zprávy, které přidáte po sdílení, zůstanou soukromé.",
|
||||
"com_ui_share_delete_error": "Při mazání sdíleného odkazu došlo k chybě",
|
||||
"com_ui_share_error": "Při sdílení odkazu na chat došlo k chybě",
|
||||
"com_ui_share_form_description": "něco sem musí přijít. bylo prázdné",
|
||||
"com_ui_share_link_to_chat": "Sdílet odkaz na chat",
|
||||
"com_ui_share_to_all_users": "Sdílet se všemi uživateli",
|
||||
"com_ui_share_update_message": "Vaše jméno, vlastní instrukce a zprávy přidané po sdílení zůstanou soukromé.",
|
||||
"com_ui_share_var": "Sdílet {{0}}",
|
||||
"com_ui_shared_link_bulk_delete_success": "Sdílené odkazy byly úspěšně smazány",
|
||||
"com_ui_shared_link_delete_success": "Sdílený odkaz byl úspěšně smazán",
|
||||
"com_ui_shared_link_not_found": "Sdílený odkaz nebyl nalezen",
|
||||
"com_ui_shared_prompts": "Sdílené výzvy",
|
||||
"com_ui_shop": "Nakupování",
|
||||
"com_ui_show": "Zobrazit",
|
||||
"com_ui_show_all": "Zobrazit vše",
|
||||
"com_ui_show_qr": "Zobrazit QR kód",
|
||||
"com_ui_sign_in_to_domain": "Přihlásit se do {{0}}",
|
||||
"com_ui_simple": "Jednoduché",
|
||||
"com_ui_size": "Velikost",
|
||||
"com_ui_special_variables": "Speciální proměnné:",
|
||||
"com_ui_speech_while_submitting": "Nelze odeslat hlasový vstup, zatímco se generuje odpověď",
|
||||
"com_ui_stop": "Zastavit",
|
||||
"com_ui_storage": "Úložiště",
|
||||
"com_ui_submit": "Odeslat",
|
||||
"com_ui_teach_or_explain": "Učení",
|
||||
"com_ui_terms_and_conditions": "Obchodní podmínky",
|
||||
"com_ui_terms_of_service": "Podmínky služby",
|
||||
"com_ui_thinking": "Přemýšlení...",
|
||||
"com_ui_thoughts": "Myšlenky",
|
||||
"com_ui_token_exchange_method": "Metoda výměny tokenů",
|
||||
"com_ui_token_url": "URL tokenu",
|
||||
"com_ui_tools": "Nástroje",
|
||||
"com_ui_travel": "Cestování",
|
||||
"com_ui_unarchive": "Obnovit archiv",
|
||||
"com_ui_unarchive_error": "Nepodařilo se obnovit archivovanou konverzaci",
|
||||
"com_ui_unknown": "Neznámé",
|
||||
"com_ui_update": "Aktualizovat",
|
||||
"com_ui_upload": "Nahrát",
|
||||
"com_ui_upload_code_files": "Nahrát soubory pro interpret kódu",
|
||||
"com_ui_upload_delay": "Nahrávání \"{{0}}\" trvá déle než obvykle. Počkejte, než bude soubor indexován.",
|
||||
"com_ui_upload_error": "Při nahrávání souboru došlo k chybě",
|
||||
"com_ui_upload_file_search": "Nahrát pro vyhledávání v souborech",
|
||||
"com_ui_upload_files": "Nahrát soubory",
|
||||
"com_ui_upload_image": "Nahrát obrázek",
|
||||
"com_ui_upload_image_input": "Nahrát obrázek",
|
||||
"com_ui_upload_invalid": "Neplatný soubor pro nahrání. Musí to být obrázek nepřesahující limit.",
|
||||
"com_ui_upload_invalid_var": "Neplatný soubor pro nahrání. Musí to být obrázek nepřesahující {{0}} MB",
|
||||
"com_ui_upload_success": "Soubor byl úspěšně nahrán",
|
||||
"com_ui_upload_type": "Vyberte typ nahrávání",
|
||||
"com_ui_use_2fa_code": "Použít kód 2FA",
|
||||
"com_ui_use_backup_code": "Použít záložní kód",
|
||||
"com_ui_use_micrphone": "Použít mikrofon",
|
||||
"com_ui_use_prompt": "Použít výzvu",
|
||||
"com_ui_used": "Použito",
|
||||
"com_ui_variables": "Proměnné",
|
||||
"com_ui_variables_info": "Použijte dvojité složené závorky k vytvoření proměnných, např. `{{příklad proměnné}}`, které lze vyplnit při použití výzvy.",
|
||||
"com_ui_verify": "Ověřit",
|
||||
"com_ui_version_var": "Verze {{0}}",
|
||||
"com_ui_versions": "Verze",
|
||||
"com_ui_view_source": "Zobrazit zdrojový chat",
|
||||
"com_ui_write": "Psát",
|
||||
"com_ui_yes": "Ano",
|
||||
"com_ui_zoom": "Přiblížit",
|
||||
"com_user_message": "Vy",
|
||||
"com_warning_resubmit_unsupported": "Opětovné odeslání AI zprávy není pro tento koncový bod podporováno."
|
||||
}
|
||||
828
packages/client/src/locales/da/translation.json
Normal file
828
packages/client/src/locales/da/translation.json
Normal file
|
|
@ -0,0 +1,828 @@
|
|||
{
|
||||
"chat_direction_left_to_right": "Der skal stå noget her. var tom",
|
||||
"chat_direction_right_to_left": "Der skal stå noget her. var tom",
|
||||
"com_a11y_ai_composing": "AI'en komponerer stadig.",
|
||||
"com_a11y_end": "AI'en er færdig med sit svar.",
|
||||
"com_a11y_start": "AI'en er begyndt at svare.",
|
||||
"com_agents_allow_editing": "Tillad andre brugere at redigere din agent",
|
||||
"com_agents_by_librechat": "af LibreChat",
|
||||
"com_agents_code_interpreter": "Når den er aktiveret, kan din agent bruge LibreChat Code Interpreter API til at køre genereret kode, herunder filbehandling, sikkert. Kræver en gyldig API-nøgle.",
|
||||
"com_agents_code_interpreter_title": "Kodefortolker API",
|
||||
"com_agents_create_error": "Der opstod en fejl ved oprettelsen af din agent.",
|
||||
"com_agents_description_placeholder": "Valgfrit: Beskriv din agent her",
|
||||
"com_agents_enable_file_search": "Aktivér filsøgning",
|
||||
"com_agents_file_context": "Filkontekst (OCR)",
|
||||
"com_agents_file_context_disabled": "Agenten skal oprettes, før der uploades filer til File Context.",
|
||||
"com_agents_file_context_info": "Filer, der uploades som \"Context\", behandles ved hjælp af OCR for at udtrække tekst, som derefter føjes til agentens instruktioner. Ideel til dokumenter, billeder med tekst eller PDF'er, hvor du har brug for det fulde tekstindhold i en fil.",
|
||||
"com_agents_file_search_disabled": "Agent skal oprettes inden uploading af filer til filsøgning.",
|
||||
"com_agents_file_search_info": "Når den er aktiveret, får agenten besked om de nøjagtige filnavne, der er anført nedenfor, så den kan hente relevant kontekst fra disse filer.",
|
||||
"com_agents_instructions_placeholder": "De systeminstruktioner, som agenten bruger",
|
||||
"com_agents_missing_provider_model": "Vælg en udbyder og en model, før du opretter en agent.",
|
||||
"com_agents_name_placeholder": "Valgfrit: Navnet på agenten",
|
||||
"com_agents_no_access": "Du har ikke adgang til at redigere denne agent.",
|
||||
"com_agents_not_available": "Agent ikke tilgængelig",
|
||||
"com_agents_search_name": "Søg agenter efter navn",
|
||||
"com_agents_update_error": "Der opstod en fejl ved opdateringen af din agent.",
|
||||
"com_assistants_action_attempt": "Assistenten vil tale med {{0}}",
|
||||
"com_assistants_actions": "Handlinger",
|
||||
"com_assistants_actions_disabled": "Du skal oprette en assistent, før du tilføjer handlinger.",
|
||||
"com_assistants_actions_info": "Lad din assistent hente oplysninger eller udføre handlinger via API'er",
|
||||
"com_assistants_add_actions": "Tilføj handlinger",
|
||||
"com_assistants_add_tools": "Tilføj værktøjer",
|
||||
"com_assistants_allow_sites_you_trust": "Tillad kun sider, du har tillid til.",
|
||||
"com_assistants_append_date": "Tilføj aktuel dato og tid",
|
||||
"com_assistants_append_date_tooltip": "Når den er aktiveret, tilføjes den aktuelle klientdato og -klokkeslæt til assistentsystemets instruktioner.",
|
||||
"com_assistants_attempt_info": "Assistent ønsker at sende følgende:",
|
||||
"com_assistants_available_actions": "Tilgængelige handlinger",
|
||||
"com_assistants_capabilities": "Evner",
|
||||
"com_assistants_code_interpreter": "Kodefortolker",
|
||||
"com_assistants_code_interpreter_files": "Filerne nedenfor er kun til Kodefortolker:",
|
||||
"com_assistants_code_interpreter_info": "Kodefortolkeren gør det muligt for assistenten at skrive og køre kode. Dette værktøj kan behandle filer med forskellige data og formateringer og generere filer såsom grafer.",
|
||||
"com_assistants_completed_function": "Kørte {{0}}",
|
||||
"com_assistants_conversation_starters": "Samtalestartere",
|
||||
"com_assistants_conversation_starters_placeholder": "Indtast en samtalestarter",
|
||||
"com_assistants_create_error": "Der opstod en fejl ved oprettelsen af din assistent.",
|
||||
"com_assistants_create_success": "Oprettet med succes",
|
||||
"com_assistants_delete_actions_error": "Der opstod en fejl ved sletning af handlingen.",
|
||||
"com_assistants_delete_actions_success": "Handlingen er slettet fra Assistent",
|
||||
"com_assistants_description_placeholder": "Valgfrit: Beskriv din assistent her",
|
||||
"com_assistants_domain_info": "Assistenten sendte disse oplysninger til {{0}}",
|
||||
"com_assistants_file_search": "Filsøgning",
|
||||
"com_assistants_function_use": "Assistent brugt {{0}}",
|
||||
"com_assistants_image_vision": "Billedvision",
|
||||
"com_assistants_instructions_placeholder": "De systeminstruktioner, som assistenten bruger",
|
||||
"com_assistants_knowledge": "Viden",
|
||||
"com_assistants_knowledge_disabled": "Assistent skal oprettes, og kodefortolker eller hentning skal aktiveres og gemmes, før filer uploades som viden.",
|
||||
"com_assistants_knowledge_info": "Hvis du uploader filer under Viden, kan samtaler med din assistent indeholde filindhold.",
|
||||
"com_assistants_max_starters_reached": "Maks. antal samtalestartere nået",
|
||||
"com_assistants_name_placeholder": "Valgfrit: Navnet på assistenten",
|
||||
"com_assistants_non_retrieval_model": "Filsøgning er ikke aktiveret på denne model. Vælg venligst en anden model.",
|
||||
"com_assistants_retrieval": "Hentning",
|
||||
"com_assistants_running_action": "Afvikler handling",
|
||||
"com_assistants_search_name": "Søg assistenter efter navn",
|
||||
"com_assistants_update_actions_error": "Der opstod en fejl ved oprettelse eller opdatering af handlingen.",
|
||||
"com_assistants_update_actions_success": "Vellykket oprettet eller opdateret Handling",
|
||||
"com_assistants_update_error": "Der opstod en fejl ved opdateringen af din assistent.",
|
||||
"com_assistants_update_success": "Opdateret med succes",
|
||||
"com_auth_already_have_account": "Har du allerede en konto?",
|
||||
"com_auth_apple_login": "Log ind med Apple",
|
||||
"com_auth_back_to_login": "Tilbage til login",
|
||||
"com_auth_click": "Klik",
|
||||
"com_auth_click_here": "Klik her",
|
||||
"com_auth_continue": "Fortsæt",
|
||||
"com_auth_create_account": "Opret din konto",
|
||||
"com_auth_discord_login": "Fortsæt med Discord",
|
||||
"com_auth_email": "E-mail",
|
||||
"com_auth_email_address": "E-mail-adresse",
|
||||
"com_auth_email_max_length": "E-mailen bør ikke være længere end 120 tegn",
|
||||
"com_auth_email_min_length": "E-mail skal være på mindst 6 tegn",
|
||||
"com_auth_email_pattern": "Du skal indtaste en gyldig e-mailadresse",
|
||||
"com_auth_email_required": "E-mail er påkrævet",
|
||||
"com_auth_email_resend_link": "Send e-mail igen",
|
||||
"com_auth_email_resent_failed": "Kunne ikke sende bekræftelsesmail igen",
|
||||
"com_auth_email_resent_success": "Bekræftelsesmail sendt igen med succes",
|
||||
"com_auth_email_verification_failed": "Bekræftelse af e-mail mislykkedes",
|
||||
"com_auth_email_verification_failed_token_missing": "Bekræftelse mislykkedes, token mangler",
|
||||
"com_auth_email_verification_in_progress": "Bekræfter din e-mail, vent venligst",
|
||||
"com_auth_email_verification_invalid": "Ugyldig e-mailbekræftelse",
|
||||
"com_auth_email_verification_redirecting": "Omdirigerer om {{0}} sekunder...",
|
||||
"com_auth_email_verification_resend_prompt": "Har du ikke modtaget e-mailen?",
|
||||
"com_auth_email_verification_success": "E-mailadressen er bekræftet",
|
||||
"com_auth_email_verifying_ellipsis": "Verificerer...",
|
||||
"com_auth_error_create": "Der opstod en fejl under forsøget på at oprette din konto. Prøv venligst igen.",
|
||||
"com_auth_error_invalid_reset_token": "Dette token til nulstilling af adgangskode er ikke længere gyldigt.",
|
||||
"com_auth_error_login": "Det er ikke muligt at logge ind med de angivne oplysninger. Tjek venligst dine oplysninger og prøv igen.",
|
||||
"com_auth_error_login_ban": "Din konto er midlertidigt blevet blokeret på grund af overtrædelser af vores tjenestevilkår.",
|
||||
"com_auth_error_login_rl": "For mange loginforsøg på kort tid. Prøv igen senere.",
|
||||
"com_auth_error_login_server": "Der opstod en intern serverfejl. Vent venligst et øjeblik og prøv igen.",
|
||||
"com_auth_error_login_unverified": "Din konto er ikke blevet verificeret. Tjek venligst din e-mail for et bekræftelseslink.",
|
||||
"com_auth_facebook_login": "Fortsæt med Facebook",
|
||||
"com_auth_full_name": "Fuldt navn",
|
||||
"com_auth_github_login": "Fortsæt med Github",
|
||||
"com_auth_google_login": "Fortsæt med Google",
|
||||
"com_auth_here": "HER",
|
||||
"com_auth_login": "Log ind",
|
||||
"com_auth_login_with_new_password": "Du kan nu logge ind med din nye adgangskode.",
|
||||
"com_auth_name_max_length": "Navnet skal være mindre end 80 tegn",
|
||||
"com_auth_name_min_length": "Navnet skal bestå af mindst 3 tegn",
|
||||
"com_auth_name_required": "Navn er påkrævet",
|
||||
"com_auth_no_account": "Har du ikke en konto?",
|
||||
"com_auth_password": "Adgangskode",
|
||||
"com_auth_password_confirm": "Bekræft adgangskode",
|
||||
"com_auth_password_forgot": "Glemt adgangskode?",
|
||||
"com_auth_password_max_length": "Adgangskoden skal være mindre end 128 tegn",
|
||||
"com_auth_password_min_length": "Adgangskoden skal bestå af mindst 8 tegn",
|
||||
"com_auth_password_not_match": "Adgangskoderne stemmer ikke overens",
|
||||
"com_auth_password_required": "Adgangskode er påkrævet",
|
||||
"com_auth_registration_success_generic": "Tjek venligst din e-mail for at bekræfte din e-mailadresse.",
|
||||
"com_auth_registration_success_insecure": "Registreringen er gennemført.",
|
||||
"com_auth_reset_password": "Nulstil din adgangskode",
|
||||
"com_auth_reset_password_if_email_exists": "Hvis der findes en konto med denne e-mail, er der sendt en e-mail med instruktioner til nulstilling af adgangskode. Sørg for at tjekke din spam-mappe.",
|
||||
"com_auth_reset_password_link_sent": "E-mail sendt",
|
||||
"com_auth_reset_password_success": "Nulstilling af adgangskode genemført",
|
||||
"com_auth_sign_in": "Log ind",
|
||||
"com_auth_sign_up": "Tilmeld dig",
|
||||
"com_auth_submit_registration": "Send registrering",
|
||||
"com_auth_to_reset_your_password": "for at nulstille din adgangskode.",
|
||||
"com_auth_to_try_again": "for at prøve igen.",
|
||||
"com_auth_two_factor": "Tjek din foretrukne applikation til engangskodeord til en kode",
|
||||
"com_auth_username": "Brugernavn (valgfrit)",
|
||||
"com_auth_username_max_length": "Brugernavn skal være mindre end 20 tegn",
|
||||
"com_auth_username_min_length": "Brugernavn skal være mindst 2 tegn",
|
||||
"com_auth_verify_your_identity": "Bekræft din identitet",
|
||||
"com_auth_welcome_back": "Velkommen tilbage",
|
||||
"com_click_to_download": "(klik her for at downloade)",
|
||||
"com_download_expired": "(download udløbet)",
|
||||
"com_download_expires": "(klik her for at downloade - udløber {{0}})",
|
||||
"com_endpoint": "Slutpunkt",
|
||||
"com_endpoint_agent": "Agent",
|
||||
"com_endpoint_agent_model": "Agentmodel (anbefalet: GPT-3.5)",
|
||||
"com_endpoint_agent_placeholder": "Vælg venligst en agent",
|
||||
"com_endpoint_ai": "AI",
|
||||
"com_endpoint_anthropic_maxoutputtokens": "Maksimalt antal tokens, der kan genereres i svaret. Angiv en lavere værdi for kortere svar og en højere værdi for længere svar. Bemærk: Modeller kan stoppe, før de når dette maksimum.",
|
||||
"com_endpoint_anthropic_prompt_cache": "Prompt caching gør det muligt at genbruge store kontekster eller instruktioner på tværs af API-kald, hvilket reducerer omkostninger og ventetid.",
|
||||
"com_endpoint_anthropic_temp": "Spænder fra 0 til 1. Brug temp tættere på 0 til analytiske/ multiple choice-opgaver og tættere på 1 til kreative og generative opgaver. Vi anbefaler at ændre dette eller Top P, men ikke begge dele.",
|
||||
"com_endpoint_assistant": "Assistent",
|
||||
"com_endpoint_assistant_model": "Assistentmodel",
|
||||
"com_endpoint_assistant_placeholder": "Vælg en assistent fra sidepanelet til højre",
|
||||
"com_endpoint_completion": "Færdiggørelse",
|
||||
"com_endpoint_completion_model": "Færdiggørelsesmodel (anbefalet: GPT-4)",
|
||||
"com_endpoint_config_click_here": "Klik her",
|
||||
"com_endpoint_config_google_api_info": "For at få din Generative Language API-nøgle (til Gemini),",
|
||||
"com_endpoint_config_google_api_key": "Google API-nøgle",
|
||||
"com_endpoint_config_google_cloud_platform": "(fra Google Cloud Platform)",
|
||||
"com_endpoint_config_google_gemini_api": "(Gemini API)",
|
||||
"com_endpoint_config_google_service_key": "Google Service Konto -nøgle",
|
||||
"com_endpoint_config_key": "Angiv API-nøgle",
|
||||
"com_endpoint_config_key_for": "Indstil API-nøgle til",
|
||||
"com_endpoint_config_key_google_need_to": "Du er nødt til at",
|
||||
"com_endpoint_config_key_google_service_account": "Opret en servicekonto",
|
||||
"com_endpoint_config_key_google_vertex_ai": "Aktivér Vertex AI",
|
||||
"com_endpoint_config_key_google_vertex_api": "API på Google Cloud, så",
|
||||
"com_endpoint_config_key_google_vertex_api_role": "Sørg for at klikke på \"Opret og fortsæt\" for i det mindste at give rollen \"Vertex AI-bruger\". Til sidst skal du oprette en JSON-nøgle, som du kan importere her.",
|
||||
"com_endpoint_config_key_import_json_key": "Importer JSON-nøgle til servicekonto.",
|
||||
"com_endpoint_config_key_import_json_key_invalid": "Ugyldig JSON-nøgle til servicekonto. Har du importeret den korrekte fil?",
|
||||
"com_endpoint_config_key_import_json_key_success": "Importeret JSON-nøgle til servicekonto med succes",
|
||||
"com_endpoint_config_key_name": "Nøgle",
|
||||
"com_endpoint_config_key_never_expires": "Din nøgle udløber aldrig",
|
||||
"com_endpoint_config_placeholder": "Indstil din nøgle i overskriftsmenuen til chat.",
|
||||
"com_endpoint_config_value": "Indtast værdi for",
|
||||
"com_endpoint_context": "Kontekst",
|
||||
"com_endpoint_context_info": "Det maksimale antal tokens, der kan bruges til kontekst. Brug dette til at kontrollere, hvor mange tokens der sendes pr. anmodning. Hvis den ikke er specificeret, bruges systemets standardværdier baseret på kendte modellers kontekststørrelse. Indstilling af højere værdier kan resultere i fejl og/eller højere token-omkostninger.",
|
||||
"com_endpoint_context_tokens": "Maks. kontekst-tokens",
|
||||
"com_endpoint_custom_name": "Brugerdefineret navn",
|
||||
"com_endpoint_default": "standard",
|
||||
"com_endpoint_default_blank": "standard: blank",
|
||||
"com_endpoint_default_empty": "standard: tom",
|
||||
"com_endpoint_default_with_num": "standard: {{0}}",
|
||||
"com_endpoint_deprecated": "Udgået",
|
||||
"com_endpoint_deprecated_info": "Dette slutpunkt er forældet og kan blive fjernet i fremtidige versioner, brug venligst agentens slutpunkt i stedet.",
|
||||
"com_endpoint_deprecated_info_a11y": "Plugin-slutpunktet er forældet og kan blive fjernet i fremtidige versioner, brug venligst agent-slutpunktet i stedet.",
|
||||
"com_endpoint_examples": " Forudindstillinger",
|
||||
"com_endpoint_export": "Eksport",
|
||||
"com_endpoint_export_share": "Eksportér/Del",
|
||||
"com_endpoint_frequency_penalty": "Frekvensstraf",
|
||||
"com_endpoint_func_hover": "Gør det muligt at bruge plugins som OpenAI-funktioner",
|
||||
"com_endpoint_google_custom_name_placeholder": "Indstil et brugerdefineret navn til Google",
|
||||
"com_endpoint_google_maxoutputtokens": "Maksimalt antal tokens, der kan genereres i svaret. Angiv en lavere værdi for kortere svar og en højere værdi for længere svar. Bemærk: Modeller kan stoppe, før de når dette maksimum.",
|
||||
"com_endpoint_google_temp": "Højere værdier = mere tilfældige, mens lavere værdier = mere fokuserede og deterministiske. Vi anbefaler at ændre dette eller Top P, men ikke begge dele.",
|
||||
"com_endpoint_instructions_assistants": "Overskriv instruktioner",
|
||||
"com_endpoint_instructions_assistants_placeholder": "Overstyrer instruktionerne fra assistenten. Det er nyttigt, hvis man vil ændre adfærden for hver enkelt kørsel.",
|
||||
"com_endpoint_max_output_tokens": "Maks. output-tokens",
|
||||
"com_endpoint_message": "Besked",
|
||||
"com_endpoint_message_new": "Besked {{0}}",
|
||||
"com_endpoint_message_not_appendable": "Rediger din besked eller regenererer.",
|
||||
"com_endpoint_my_preset": "Min forudindstilling",
|
||||
"com_endpoint_no_presets": "Ingen forudindstillinger endnu, brug indstillingsknappen til at oprette en",
|
||||
"com_endpoint_open_menu": "Åbn menu",
|
||||
"com_endpoint_openai_custom_name_placeholder": "Indstil et brugerdefineret navn til AI'en",
|
||||
"com_endpoint_output": "Produktion",
|
||||
"com_endpoint_plug_image_detail": "Billeddetaljer",
|
||||
"com_endpoint_plug_resend_files": "Send filer igen",
|
||||
"com_endpoint_plug_set_custom_instructions_for_gpt_placeholder": "Indstil brugerdefinerede instruktioner, der skal inkluderes i systembeskeden. Standard: ingen",
|
||||
"com_endpoint_plug_skip_completion": "Spring fuldførelse over",
|
||||
"com_endpoint_plug_use_functions": "Brug funktioner",
|
||||
"com_endpoint_presence_penalty": "Straf for tilstedeværelse",
|
||||
"com_endpoint_preset": "forudindstillet",
|
||||
"com_endpoint_preset_custom_name_placeholder": "Noget skal være her. Det var tomt.",
|
||||
"com_endpoint_preset_default": "er nu standardindstillingen.",
|
||||
"com_endpoint_preset_default_item": "Standard:",
|
||||
"com_endpoint_preset_default_none": "Ingen standardindstilling aktiv.",
|
||||
"com_endpoint_preset_default_removed": "er ikke længere standardindstillingen.",
|
||||
"com_endpoint_preset_delete_confirm": "Er du sikker på, at du vil slette denne forudindstilling?",
|
||||
"com_endpoint_preset_delete_error": "Der opstod en fejl ved sletning af din forudindstilling. Prøv venligst igen.",
|
||||
"com_endpoint_preset_import": "Forudindstilling importeret!",
|
||||
"com_endpoint_preset_import_error": "Der opstod en fejl ved import af din forudindstilling. Prøv venligst igen.",
|
||||
"com_endpoint_preset_name": "Forudindstillet navn",
|
||||
"com_endpoint_preset_save_error": "Der opstod en fejl, da du gemte din forudindstilling. Prøv venligst igen.",
|
||||
"com_endpoint_preset_selected": "Forudindstilling aktiv!",
|
||||
"com_endpoint_preset_selected_title": "Aktiv!",
|
||||
"com_endpoint_preset_title": "Forudindstilling",
|
||||
"com_endpoint_presets": "forudindstillinger",
|
||||
"com_endpoint_presets_clear_warning": "Er du sikker på, at du vil slette alle forudindstillinger? Dette kan ikke fortrydes.",
|
||||
"com_endpoint_prompt_cache": "Brug prompt caching",
|
||||
"com_endpoint_prompt_prefix": "Brugerdefinerede instruktioner",
|
||||
"com_endpoint_prompt_prefix_assistants": "Yderligere instruktioner",
|
||||
"com_endpoint_prompt_prefix_assistants_placeholder": "Sæt yderligere instruktioner eller kontekst oven på assistentens hovedinstruktioner. Ignoreres, hvis den er tom.",
|
||||
"com_endpoint_prompt_prefix_placeholder": "Indstil brugerdefinerede instruktioner eller kontekst. Ignoreres, hvis den er tom.",
|
||||
"com_endpoint_reasoning_effort": "Indsats for ræsonnement",
|
||||
"com_endpoint_save_as_preset": "Gem som forudindstilling",
|
||||
"com_endpoint_search": "Søg slutpunkt efter navn",
|
||||
"com_endpoint_search_endpoint_models": "Søg efter {{0}} modeller...",
|
||||
"com_endpoint_search_models": "Søg modeller...",
|
||||
"com_endpoint_search_var": "Søg {{0}}...",
|
||||
"com_endpoint_set_custom_name": "Indstil et brugerdefineret navn, hvis du kan finde denne forudindstilling",
|
||||
"com_endpoint_skip_hover": "Gør det muligt at springe over færdiggørelsestrinnet, som gennemgår det endelige svar og de genererede trin",
|
||||
"com_endpoint_stop": "Stop-sekvenser",
|
||||
"com_endpoint_stop_placeholder": "Adskil værdier ved at trykke på `Enter`.",
|
||||
"com_endpoint_temperature": "Temperatur",
|
||||
"com_endpoint_thinking": "Tænker",
|
||||
"com_endpoint_thinking_budget": "Tænkebudget",
|
||||
"com_endpoint_top_k": "Top K",
|
||||
"com_endpoint_top_p": "Top P",
|
||||
"com_endpoint_use_active_assistant": "Brug aktiv assistent",
|
||||
"com_error_expired_user_key": "Leveret nøgle til {{0}} udløbet på {{1}}. Angiv venligst en ny nøgle og prøv igen.",
|
||||
"com_error_files_dupe": "Duplikatfil fundet.",
|
||||
"com_error_files_empty": "Tomme filer er ikke tilladt.",
|
||||
"com_error_files_process": "Der opstod en fejl under behandlingen af filen.",
|
||||
"com_error_files_unsupported_capability": "Ingen funktioner er aktiveret, der understøtter denne filtype.",
|
||||
"com_error_files_upload": "Der opstod en fejl under upload af filen.",
|
||||
"com_error_files_upload_canceled": "Anmodningen om filoverførsel blev annulleret. Bemærk: Filuploaden kan stadig være under behandling og skal slettes manuelt.",
|
||||
"com_error_files_validation": "Der opstod en fejl under validering af filen.",
|
||||
"com_error_invalid_user_key": "Ugyldig nøgle angivet. Angiv venligst en gyldig nøgle, og prøv igen.",
|
||||
"com_error_no_base_url": "Ingen base-URL fundet. Angiv venligst en og prøv igen.",
|
||||
"com_error_no_user_key": "Ingen nøgle fundet. Angiv venligst en nøgle, og prøv igen.",
|
||||
"com_files_filter": "Filtrer filer ...",
|
||||
"com_files_no_results": "Ingen resultater.",
|
||||
"com_files_number_selected": "{{0}} af {{1}} valgte elementer",
|
||||
"com_files_table": "Der skal ske noget her. Det var tomt.",
|
||||
"com_generated_files": "Genererede filer:",
|
||||
"com_hide_examples": "Skjul eksempler",
|
||||
"com_nav_2fa": "To-faktor godkendelse (2FA)",
|
||||
"com_nav_account_settings": "Kontoindstillinger",
|
||||
"com_nav_always_make_prod": "Lav altid nye versioner produktion",
|
||||
"com_nav_archive_created_at": "Dato arkiveret",
|
||||
"com_nav_archive_name": "Navn",
|
||||
"com_nav_archived_chats": "Arkiverede chats",
|
||||
"com_nav_at_command": "@-Kommando",
|
||||
"com_nav_at_command_description": "Skift kommandoen \"@\" for at skifte slutpunkter, modeller, forudindstillinger osv.",
|
||||
"com_nav_audio_play_error": "Fejl ved afspilning af lyd: {{0}}",
|
||||
"com_nav_audio_process_error": "Fejl ved behandling af lyd: {{0}}",
|
||||
"com_nav_auto_scroll": "Auto-scroll til seneste besked, når chatten er åben",
|
||||
"com_nav_auto_send_prompts": "Automatisk afsendelse af prompte",
|
||||
"com_nav_auto_send_text": "Send tekst automatisk",
|
||||
"com_nav_auto_send_text_disabled": "sæt -1 for at deaktivere",
|
||||
"com_nav_auto_transcribe_audio": "Automatisk transskribering af lyd",
|
||||
"com_nav_automatic_playback": "Autoplay Seneste besked",
|
||||
"com_nav_balance": "Balance",
|
||||
"com_nav_browser": "Browser",
|
||||
"com_nav_center_chat_input": "Center Chat Input på velkomstskærmen",
|
||||
"com_nav_change_picture": "Skift billede",
|
||||
"com_nav_chat_commands": "Chat-kommandoer",
|
||||
"com_nav_chat_commands_info": "Disse kommandoer aktiveres ved at skrive bestemte tegn i begyndelsen af din besked. Hver kommando udløses af det angivne præfiks. Du kan deaktivere dem, hvis du ofte bruger disse tegn til at starte beskeder.",
|
||||
"com_nav_chat_direction": "Chat-retning",
|
||||
"com_nav_clear_all_chats": "Ryd alle chats",
|
||||
"com_nav_clear_cache_confirm_message": "Er du sikker på, at du vil rydde cachen?",
|
||||
"com_nav_clear_conversation": "Ryd samtaler",
|
||||
"com_nav_clear_conversation_confirm_message": "Er du sikker på, at du vil slette alle samtaler? Dette kan ikke fortrydes.",
|
||||
"com_nav_close_sidebar": "Luk sidepanelet",
|
||||
"com_nav_commands": "Kommandoer",
|
||||
"com_nav_confirm_clear": "Bekræft Ryd",
|
||||
"com_nav_conversation_mode": "Samtaletilstand",
|
||||
"com_nav_convo_menu_options": "Menuindstillinger for samtale",
|
||||
"com_nav_db_sensitivity": "Decibelfølsomhed",
|
||||
"com_nav_delete_account": "Slet konto",
|
||||
"com_nav_delete_account_button": "Slet min konto permanent",
|
||||
"com_nav_delete_account_confirm": "Slet konto - er du sikker?",
|
||||
"com_nav_delete_account_email_placeholder": "Indtast venligst din konto-e-mail",
|
||||
"com_nav_delete_cache_storage": "Slet TTS-cache-lagring",
|
||||
"com_nav_delete_data_info": "Alle dine data vil blive slettet.",
|
||||
"com_nav_delete_warning": "ADVARSEL: Dette vil slette din konto permanent.",
|
||||
"com_nav_edit_chat_badges": "Rediger chat-badges",
|
||||
"com_nav_enable_cache_tts": "Aktivér cache-TTS",
|
||||
"com_nav_enable_cloud_browser_voice": "Brug cloud-baserede stemmer",
|
||||
"com_nav_enabled": "Aktiveret",
|
||||
"com_nav_engine": "Motor",
|
||||
"com_nav_enter_to_send": "Tryk på Enter for at sende beskeder",
|
||||
"com_nav_export": "Eksport",
|
||||
"com_nav_export_all_message_branches": "Eksporter alle meddelelsesgrene",
|
||||
"com_nav_export_conversation": "Eksporter samtale",
|
||||
"com_nav_export_filename": "Filnavn",
|
||||
"com_nav_export_filename_placeholder": "Angiv filnavnet",
|
||||
"com_nav_export_include_endpoint_options": "Inkluder slutpunktsindstillinger",
|
||||
"com_nav_export_recursive": "Rekursiv",
|
||||
"com_nav_export_recursive_or_sequential": "Rekursiv eller sekventiel?",
|
||||
"com_nav_export_type": "Type",
|
||||
"com_nav_external": "Ekstern",
|
||||
"com_nav_font_size": "Beskedens skriftstørrelse",
|
||||
"com_nav_font_size_base": "Mellem",
|
||||
"com_nav_font_size_lg": "Stor",
|
||||
"com_nav_font_size_sm": "Lille",
|
||||
"com_nav_font_size_xl": "Ekstra stor",
|
||||
"com_nav_font_size_xs": "Ekstra lille",
|
||||
"com_nav_help_faq": "Hjælp og ofte stillede spørgsmål",
|
||||
"com_nav_hide_panel": "Skjul højre side-sidepanel",
|
||||
"com_nav_info_code_artifacts": "Aktiverer visning af eksperimentelle kodeartefakter ved siden af chatten",
|
||||
"com_nav_info_code_artifacts_agent": "Aktiverer brugen af kodeartefakter for denne agent. Som standard tilføjes yderligere instruktioner specifikke for brugen af artefakter, medmindre \"Brugerdefineret prompttilstand\" er aktiveret.",
|
||||
"com_nav_info_custom_prompt_mode": "Når den er aktiveret, vil standardsystemprompten for artefakter ikke blive inkluderet. Alle instruktioner til generering af artefakter skal angives manuelt i denne tilstand.",
|
||||
"com_nav_info_user_name_display": "Når den er aktiveret, vises afsenderens brugernavn over hver besked, du sender. Når det er deaktiveret, vil du kun se \"Du\" over dine beskeder.",
|
||||
"com_nav_lang_arabic": "Arabisk",
|
||||
"com_nav_lang_auto": "Automatisk detektion",
|
||||
"com_nav_lang_brazilian_portuguese": "Portugisisk Brasiliansk",
|
||||
"com_nav_lang_catalan": "Catalansk",
|
||||
"com_nav_lang_czech": "Tjekkisk",
|
||||
"com_nav_lang_danish": "Dansk",
|
||||
"com_nav_lang_dutch": "Hollandsk",
|
||||
"com_nav_lang_english": "Engelsk",
|
||||
"com_nav_lang_finnish": "Finsk",
|
||||
"com_nav_lang_french": "Fransk ",
|
||||
"com_nav_lang_german": "Tysk",
|
||||
"com_nav_lang_indonesia": "Indonesien",
|
||||
"com_nav_lang_italian": "Italiensk",
|
||||
"com_nav_lang_japanese": "Japansk",
|
||||
"com_nav_lang_korean": "Koreansk",
|
||||
"com_nav_lang_persian": "Farsi",
|
||||
"com_nav_lang_polish": "Polsk",
|
||||
"com_nav_lang_portuguese": "Portugisisk",
|
||||
"com_nav_lang_russian": "Russisk",
|
||||
"com_nav_lang_spanish": "Spansk",
|
||||
"com_nav_lang_swedish": "Svensk",
|
||||
"com_nav_lang_thai": "Thai",
|
||||
"com_nav_lang_traditional_chinese": "Kinesisk",
|
||||
"com_nav_lang_turkish": "Tyrkisk",
|
||||
"com_nav_language": "Sprog",
|
||||
"com_nav_latex_parsing": "Parsing af LaTeX i beskeder (kan påvirke ydeevnen)",
|
||||
"com_nav_log_out": "Log ud",
|
||||
"com_nav_long_audio_warning": "Længere tekster vil tage længere tid at behandle.",
|
||||
"com_nav_maximize_chat_space": "Maksimer pladsen i chatten",
|
||||
"com_nav_modular_chat": "Gør det muligt at skifte slutpunkt midt i samtalen",
|
||||
"com_nav_my_files": "Mine filer",
|
||||
"com_nav_not_supported": "Ikke understøttet",
|
||||
"com_nav_open_sidebar": "Åbn sidepanelet",
|
||||
"com_nav_playback_rate": "Lydafspilningshastighed",
|
||||
"com_nav_plugin_auth_error": "Der opstod en fejl under forsøget på at godkende dette plugin. Prøv venligst igen.",
|
||||
"com_nav_plugin_install": "Installer",
|
||||
"com_nav_plugin_search": "Søg efter plugins",
|
||||
"com_nav_plugin_store": "Plugin-butik",
|
||||
"com_nav_plugin_uninstall": "Afinstaller",
|
||||
"com_nav_plus_command": "+-Kommando",
|
||||
"com_nav_plus_command_description": "Toggle-kommando \"+\" for at tilføje en multirespons-indstilling",
|
||||
"com_nav_profile_picture": "Profilbillede",
|
||||
"com_nav_save_badges_state": "Gem badgenes tilstand",
|
||||
"com_nav_save_drafts": "Gem kladder lokalt",
|
||||
"com_nav_scroll_button": "Rul til slutknappen",
|
||||
"com_nav_search_placeholder": "Søg efter beskeder",
|
||||
"com_nav_send_message": "Send besked",
|
||||
"com_nav_setting_account": "Konto",
|
||||
"com_nav_setting_beta": "Beta-funktioner",
|
||||
"com_nav_setting_chat": "Chat",
|
||||
"com_nav_setting_data": "Datakontrol",
|
||||
"com_nav_setting_general": "Generel",
|
||||
"com_nav_setting_speech": "Tale",
|
||||
"com_nav_settings": "Indstillinger",
|
||||
"com_nav_shared_links": "Delte links",
|
||||
"com_nav_show_code": "Vis altid kode, når du bruger kodefortolker",
|
||||
"com_nav_show_thinking": "Åbent tænkende dropdowns som standard",
|
||||
"com_nav_slash_command": "/-Kommando",
|
||||
"com_nav_slash_command_description": "Skift kommandoen \"/\" for at vælge en prompt via tastaturet",
|
||||
"com_nav_speech_to_text": "Tale til tekst",
|
||||
"com_nav_stop_generating": "Stop med at generere",
|
||||
"com_nav_text_to_speech": "Tekst til tale",
|
||||
"com_nav_theme": "Tema",
|
||||
"com_nav_theme_dark": "Mørk",
|
||||
"com_nav_theme_light": "Lys",
|
||||
"com_nav_theme_system": "System",
|
||||
"com_nav_tool_dialog": "Assistent-værktøjer",
|
||||
"com_nav_tool_dialog_agents": "Agent-værktøjer",
|
||||
"com_nav_tool_dialog_description": "Assistenten skal gemmes for at bevare værktøjsvalgene.",
|
||||
"com_nav_tool_remove": "Fjern",
|
||||
"com_nav_tool_search": "Søgeværktøjer",
|
||||
"com_nav_user": "BRUGER",
|
||||
"com_nav_user_msg_markdown": "Render brugerbeskeder som markdown",
|
||||
"com_nav_user_name_display": "Vis brugernavn i beskeder",
|
||||
"com_nav_voice_select": "Stemme",
|
||||
"com_show_agent_settings": "Vis agentindstillinger",
|
||||
"com_show_completion_settings": "Vis indstillinger for færdiggørelse",
|
||||
"com_show_examples": "Vis eksempler",
|
||||
"com_sidepanel_agent_builder": "Agentbygger",
|
||||
"com_sidepanel_assistant_builder": "Assistentbygger",
|
||||
"com_sidepanel_attach_files": "Vedhæft filer",
|
||||
"com_sidepanel_conversation_tags": "Bogmærker",
|
||||
"com_sidepanel_hide_panel": "Skjul panel",
|
||||
"com_sidepanel_manage_files": "Administrer filer",
|
||||
"com_sidepanel_parameters": "Parametre",
|
||||
"com_ui_2fa_account_security": "To-faktor-autentificering tilføjer et ekstra lag af sikkerhed til din konto",
|
||||
"com_ui_2fa_disable": "Deaktiver 2FA",
|
||||
"com_ui_2fa_disable_error": "Der opstod en fejl ved deaktivering af to-faktor-autentificering",
|
||||
"com_ui_2fa_disabled": "2FA er blevet deaktiveret",
|
||||
"com_ui_2fa_enable": "Aktivér 2FA",
|
||||
"com_ui_2fa_enabled": "2FA er blevet aktiveret",
|
||||
"com_ui_2fa_generate_error": "Der opstod en fejl ved generering af indstillinger for to-faktor-godkendelse",
|
||||
"com_ui_2fa_invalid": "Ugyldig kode til to-faktor-autentificering",
|
||||
"com_ui_2fa_setup": "Opsætning af 2FA",
|
||||
"com_ui_2fa_verified": "Tofaktorgodkendelse bekræftet",
|
||||
"com_ui_accept": "Jeg accepterer",
|
||||
"com_ui_action_button": "Handlingsknap",
|
||||
"com_ui_add": "Tilføj",
|
||||
"com_ui_add_model_preset": "Tilføj en model eller en forudindstilling for et ekstra svar",
|
||||
"com_ui_add_multi_conversation": "Tilføj multikonversation",
|
||||
"com_ui_adding_details": "Tilføjer detaljer",
|
||||
"com_ui_admin": "Admin",
|
||||
"com_ui_admin_access_warning": "Deaktivering af administratoradgang til denne funktion kan forårsage uventede UI-problemer, der kræver opdatering. Hvis den gemmes, er den eneste måde at vende tilbage på via grænsefladeindstillingen i librechat.yaml config, som påvirker alle roller.",
|
||||
"com_ui_admin_settings": "Administratorindstillinger",
|
||||
"com_ui_advanced": "Avanceret",
|
||||
"com_ui_advanced_settings": "Avancerede indstillinger",
|
||||
"com_ui_agent": "Agent",
|
||||
"com_ui_agent_chain": "Agentkæde (blanding af agenter)",
|
||||
"com_ui_agent_chain_info": "Gør det muligt at oprette sekvenser af agenter. Hver agent kan få adgang til output fra tidligere agenter i kæden. Baseret på \"Mixture-of-Agents\"-arkitekturen, hvor agenter bruger tidligere output som hjælpeinformation.",
|
||||
"com_ui_agent_chain_max": "Du har nået det maksimale antal {{0}} agenter.",
|
||||
"com_ui_agent_delete_error": "Der opstod en fejl ved sletning af agenten",
|
||||
"com_ui_agent_deleted": "Agenten blev slettet",
|
||||
"com_ui_agent_duplicate_error": "Der opstod en fejl under duplikering af agenten",
|
||||
"com_ui_agent_duplicated": "Agent duplikeret med succes",
|
||||
"com_ui_agent_editing_allowed": "Andre brugere kan allerede redigere denne agent",
|
||||
"com_ui_agent_recursion_limit": "Maks. agent-trin",
|
||||
"com_ui_agent_recursion_limit_info": "Begrænser, hvor mange trin agenten kan tage i en kørsel, før den giver et endeligt svar. Standard er 25 trin. Et trin er enten en AI API-anmodning eller en værktøjsbrugsrunde. For eksempel tager en grundlæggende værktøjsinteraktion 3 trin: indledende anmodning, værktøjsbrug og opfølgende anmodning.",
|
||||
"com_ui_agent_shared_to_all": "Der skal stå noget her. Det var tomt.",
|
||||
"com_ui_agent_var": "{{0}} agent",
|
||||
"com_ui_agents": "Agenter",
|
||||
"com_ui_agents_allow_create": "Tillad oprettelse af agenter",
|
||||
"com_ui_agents_allow_share_global": "Tillad deling af agenter til alle brugere",
|
||||
"com_ui_agents_allow_use": "Tillad brug af agenter",
|
||||
"com_ui_all": "alle",
|
||||
"com_ui_all_proper": "Alle",
|
||||
"com_ui_analyzing": "Analyserer",
|
||||
"com_ui_analyzing_finished": "Færdig med at analysere",
|
||||
"com_ui_api_key": "API-nøgle",
|
||||
"com_ui_archive": "Arkiv",
|
||||
"com_ui_archive_delete_error": "Kunne ikke slette arkiveret samtale",
|
||||
"com_ui_archive_error": "Kunne ikke arkivere samtale",
|
||||
"com_ui_artifact_click": "Klik for at åbne",
|
||||
"com_ui_artifacts": "Artefakter",
|
||||
"com_ui_artifacts_toggle": "Skift artefakter UI",
|
||||
"com_ui_artifacts_toggle_agent": "Aktiver artefakter",
|
||||
"com_ui_ascending": "Stigende",
|
||||
"com_ui_assistant": "Assistent",
|
||||
"com_ui_assistant_delete_error": "Der opstod en fejl ved sletning af assistenten",
|
||||
"com_ui_assistant_deleted": "Assistenten er slettet",
|
||||
"com_ui_assistants": "Assistenter",
|
||||
"com_ui_assistants_output": "Assistenter Output",
|
||||
"com_ui_attach_error": "Kan ikke vedhæfte en fil. Opret eller vælg en samtale, eller prøv at opdatere siden.",
|
||||
"com_ui_attach_error_openai": "Kan ikke vedhæfte Assistant-filer til andre slutpunkter",
|
||||
"com_ui_attach_error_size": "Grænsen for filstørrelse er overskredet for slutpunktet:",
|
||||
"com_ui_attach_error_type": "Ikke-understøttet filtype for slutpunkt:",
|
||||
"com_ui_attach_remove": "Fjern fil",
|
||||
"com_ui_attach_warn_endpoint": "Ikke-assistent filer kan ignoreres uden et kompatibelt værktøj",
|
||||
"com_ui_attachment": "Vedhæftning",
|
||||
"com_ui_auth_type": "Godkendelsestype",
|
||||
"com_ui_auth_url": "Godkendelse URL",
|
||||
"com_ui_authentication": "Godkendelse",
|
||||
"com_ui_authentication_type": "Godkendelsestype",
|
||||
"com_ui_avatar": "Avatar",
|
||||
"com_ui_azure": "Azure",
|
||||
"com_ui_back_to_chat": "Tilbage til chat",
|
||||
"com_ui_back_to_prompts": "Tilbage til Prompts",
|
||||
"com_ui_backup_codes": "Backupkoder",
|
||||
"com_ui_backup_codes_regenerate_error": "Der opstod en fejl ved genskabelse af backup-koder",
|
||||
"com_ui_backup_codes_regenerated": "Backupkoder er blevet genereret",
|
||||
"com_ui_basic": "Grundlæggende",
|
||||
"com_ui_basic_auth_header": "Grundlæggende autorisationsheader",
|
||||
"com_ui_bearer": "Bærer",
|
||||
"com_ui_bookmark_delete_confirm": "Er du sikker på, at du vil slette dette bogmærke?",
|
||||
"com_ui_bookmarks": "Bogmærker",
|
||||
"com_ui_bookmarks_add": "Tilføj bogmærker",
|
||||
"com_ui_bookmarks_add_to_conversation": "Tilføj til aktuel samtale",
|
||||
"com_ui_bookmarks_count": "Antal",
|
||||
"com_ui_bookmarks_create_error": "Der opstod en fejl ved oprettelsen af bogmærket",
|
||||
"com_ui_bookmarks_create_exists": "Dette bogmærke findes allerede",
|
||||
"com_ui_bookmarks_create_success": "Bogmærke oprettet",
|
||||
"com_ui_bookmarks_delete": "Slet bogmærke",
|
||||
"com_ui_bookmarks_delete_error": "Der opstod en fejl ved sletning af bogmærket",
|
||||
"com_ui_bookmarks_delete_success": "Bogmærke slettet",
|
||||
"com_ui_bookmarks_description": "Beskrivelse",
|
||||
"com_ui_bookmarks_edit": "Rediger bogmærke",
|
||||
"com_ui_bookmarks_filter": "Filtrer bogmærker...",
|
||||
"com_ui_bookmarks_new": "Nyt bogmærke",
|
||||
"com_ui_bookmarks_title": "Titel",
|
||||
"com_ui_bookmarks_update_error": "Der opstod en fejl ved opdateringen af bogmærket",
|
||||
"com_ui_bookmarks_update_success": "Bogmærket er blevet opdateret",
|
||||
"com_ui_bulk_delete_error": "Kunne ikke slette delte links",
|
||||
"com_ui_callback_url": "URL til tilbagekaldelse",
|
||||
"com_ui_cancel": "Annuller",
|
||||
"com_ui_category": "Kategori",
|
||||
"com_ui_chat": "Chat",
|
||||
"com_ui_chat_history": "Chathistorik",
|
||||
"com_ui_clear": "Ryd",
|
||||
"com_ui_clear_all": "Ryd alle",
|
||||
"com_ui_client_id": "Klient-ID",
|
||||
"com_ui_client_secret": "Klienthemmelighed",
|
||||
"com_ui_close": "Luk",
|
||||
"com_ui_close_menu": "Luk menu",
|
||||
"com_ui_code": "Kode",
|
||||
"com_ui_collapse_chat": "Sammenklap Chat",
|
||||
"com_ui_command_placeholder": "Valgfrit: Indtast en kommando for den prompt eller det navn, der skal bruges",
|
||||
"com_ui_command_usage_placeholder": "Vælg en Prompt efter kommando eller navn",
|
||||
"com_ui_complete_setup": "Fuldfør opsætning",
|
||||
"com_ui_confirm_action": "Bekræft handling",
|
||||
"com_ui_confirm_admin_use_change": "Hvis du ændrer denne indstilling, blokeres adgangen for administratorer, inklusive dig selv. Er du sikker på, at du vil fortsætte?",
|
||||
"com_ui_confirm_change": "Bekræft ændring",
|
||||
"com_ui_context": "Kontekst",
|
||||
"com_ui_continue": "Fortsæt",
|
||||
"com_ui_convo_delete_error": "Kunne ikke slette samtalen",
|
||||
"com_ui_copied": "Kopieret!",
|
||||
"com_ui_copied_to_clipboard": "Kopieret til udklipsholder",
|
||||
"com_ui_copy_code": "Kopier kode",
|
||||
"com_ui_copy_link": "Kopier link",
|
||||
"com_ui_copy_to_clipboard": "Kopier til udklipsholder",
|
||||
"com_ui_create": "Opret",
|
||||
"com_ui_create_link": "Opret link",
|
||||
"com_ui_create_prompt": "Opret prompt",
|
||||
"com_ui_creating_image": "Opretter billede. Det kan tage et øjeblik.",
|
||||
"com_ui_currently_production": "I øjeblikket i produktion",
|
||||
"com_ui_custom": "Brugerdefineret",
|
||||
"com_ui_custom_header_name": "Brugerdefineret overskriftsnavn",
|
||||
"com_ui_custom_prompt_mode": "Brugerdefineret prompttilstand",
|
||||
"com_ui_dashboard": "Dashboard",
|
||||
"com_ui_date": "Dato",
|
||||
"com_ui_date_april": "April",
|
||||
"com_ui_date_august": "August",
|
||||
"com_ui_date_december": "December",
|
||||
"com_ui_date_february": "Februar",
|
||||
"com_ui_date_january": "Januar",
|
||||
"com_ui_date_july": "Juli",
|
||||
"com_ui_date_june": "Juni",
|
||||
"com_ui_date_march": "Marts",
|
||||
"com_ui_date_may": "Maj",
|
||||
"com_ui_date_november": "November",
|
||||
"com_ui_date_october": "Oktober",
|
||||
"com_ui_date_previous_30_days": "Forrige 30 dage",
|
||||
"com_ui_date_previous_7_days": "Forrige 7 dage",
|
||||
"com_ui_date_september": "September",
|
||||
"com_ui_date_today": "I dag",
|
||||
"com_ui_date_yesterday": "I går",
|
||||
"com_ui_decline": "Jeg accepterer ikke",
|
||||
"com_ui_default_post_request": "Standard (POST-anmodning)",
|
||||
"com_ui_delete": "Slet",
|
||||
"com_ui_delete_action": "Slet handling",
|
||||
"com_ui_delete_action_confirm": "Er du sikker på, at du vil slette denne handling?",
|
||||
"com_ui_delete_agent_confirm": "Er du sikker på, at du vil slette denne agent?",
|
||||
"com_ui_delete_assistant_confirm": "Er du sikker på, at du vil slette denne assistent? Dette kan ikke fortrydes.",
|
||||
"com_ui_delete_confirm": "Dette vil slette",
|
||||
"com_ui_delete_confirm_prompt_version_var": "Dette vil slette den valgte version for \"{{0}}\" Hvis der ikke findes andre versioner, slettes prompten.",
|
||||
"com_ui_delete_conversation": "Slet chat?",
|
||||
"com_ui_delete_prompt": "Slet prompt?",
|
||||
"com_ui_delete_shared_link": "Slet det delte link?",
|
||||
"com_ui_delete_tool": "Slet værktøj",
|
||||
"com_ui_delete_tool_confirm": "Er du sikker på, at du vil slette dette værktøj?",
|
||||
"com_ui_descending": "Beskrivelse",
|
||||
"com_ui_description": "Beskrivelse",
|
||||
"com_ui_description_placeholder": "Valgfrit: Indtast en beskrivelse, der skal vises for prompten",
|
||||
"com_ui_disabling": "Deaktiverer...",
|
||||
"com_ui_download": "Download",
|
||||
"com_ui_download_artifact": "Download artefakt",
|
||||
"com_ui_download_backup": "Download sikkerhedskoder",
|
||||
"com_ui_download_backup_tooltip": "Før du fortsætter, skal du downloade dine backup-koder. Du skal bruge dem til at få adgang igen, hvis du mister din autentificeringsenhed.",
|
||||
"com_ui_download_error": "Fejl ved download af fil. Filen er muligvis blevet slettet.",
|
||||
"com_ui_drag_drop": "Der skal ske noget her. Det var tomt.",
|
||||
"com_ui_dropdown_variables": "Dropdown-variabler:",
|
||||
"com_ui_dropdown_variables_info": "Opret brugerdefinerede dropdown-menuer til dine prompts: `{{variable_name:option1|option2|option3}}`",
|
||||
"com_ui_duplicate": "Duplikat",
|
||||
"com_ui_duplication_error": "Der opstod en fejl ved kopieringen af samtalen",
|
||||
"com_ui_duplication_processing": "Duplikering af samtale...",
|
||||
"com_ui_duplication_success": "Samtalen er duplikeret",
|
||||
"com_ui_edit": "Rediger",
|
||||
"com_ui_edit_editing_image": "Redigering af billede",
|
||||
"com_ui_empty_category": "-",
|
||||
"com_ui_endpoint": "Slutpunkt",
|
||||
"com_ui_endpoint_menu": "LLM-slutpunktsmenu",
|
||||
"com_ui_enter": "Indtast",
|
||||
"com_ui_enter_api_key": "Indtast API-nøgle",
|
||||
"com_ui_enter_openapi_schema": "Indtast dit OpenAPI-skema her",
|
||||
"com_ui_error": "Fejl",
|
||||
"com_ui_error_connection": "Fejl i forbindelse med serveren, prøv at opdatere siden.",
|
||||
"com_ui_error_save_admin_settings": "Der opstod en fejl, da du gemte dine administratorindstillinger.",
|
||||
"com_ui_examples": "Eksempler",
|
||||
"com_ui_expand_chat": "Udvid chatten",
|
||||
"com_ui_export_convo_modal": "Eksporter samtale-modal",
|
||||
"com_ui_field_required": "Dette felt er påkrævet",
|
||||
"com_ui_files": "Filer",
|
||||
"com_ui_filter_prompts": "Filtrer prompter",
|
||||
"com_ui_filter_prompts_name": "Filtrer prompter efter navn",
|
||||
"com_ui_final_touch": "Sidste hånd på værket",
|
||||
"com_ui_finance": "Finans",
|
||||
"com_ui_fork": "Forgrening",
|
||||
"com_ui_fork_all_target": "Inkluder alle til/fra her",
|
||||
"com_ui_fork_branches": "Inkluder relaterede grene",
|
||||
"com_ui_fork_change_default": "Standard forgreningindstilling",
|
||||
"com_ui_fork_default": "Brug standard forgreningsmulighed",
|
||||
"com_ui_fork_error": "Der opstod en fejl under forgreningen af samtalen",
|
||||
"com_ui_fork_from_message": "Vælg en forgreningsmulighed",
|
||||
"com_ui_fork_remember": "Husk ",
|
||||
"com_ui_fork_remember_checked": "Dit valg vil blive husket efter brug. Du kan til enhver tid ændre det i indstillingerne.",
|
||||
"com_ui_fork_visible": "Kun synlige beskeder",
|
||||
"com_ui_generate_backup": "Generer backup-koder",
|
||||
"com_ui_generate_qrcode": "Generer QR-kode",
|
||||
"com_ui_generating": "Genererer...",
|
||||
"com_ui_getting_started": "Kom godt i gang",
|
||||
"com_ui_global_group": "Der skal ske noget her. Det var tomt.",
|
||||
"com_ui_go_back": "Gå tilbage",
|
||||
"com_ui_go_to_conversation": "Gå til samtale",
|
||||
"com_ui_good_afternoon": "God eftermiddag",
|
||||
"com_ui_good_evening": "God aften",
|
||||
"com_ui_good_morning": "Godmorgen",
|
||||
"com_ui_happy_birthday": "Det er min 1. fødselsdag!",
|
||||
"com_ui_hide_qr": "Skjul QR-kode",
|
||||
"com_ui_host": "Vært",
|
||||
"com_ui_idea": "Idéer",
|
||||
"com_ui_image_created": "Billede oprettet",
|
||||
"com_ui_image_edited": "Billede redigeret",
|
||||
"com_ui_image_gen": "Billedgenerering",
|
||||
"com_ui_import": "Import",
|
||||
"com_ui_import_conversation_error": "Der opstod en fejl ved import af dine samtaler",
|
||||
"com_ui_import_conversation_file_type_error": "Ikke-understøttet importtype",
|
||||
"com_ui_import_conversation_info": "Importer samtaler fra en JSON-fil",
|
||||
"com_ui_import_conversation_success": "Samtaler importeret med succes",
|
||||
"com_ui_include_shadcnui": "Inkluder instruktioner til shadcn/ui-komponenter",
|
||||
"com_ui_include_shadcnui_agent": "Inkluder instruktioner til shadcn/ui",
|
||||
"com_ui_input": "Input",
|
||||
"com_ui_instructions": "Instruktioner",
|
||||
"com_ui_late_night": "Glædelig sen aften",
|
||||
"com_ui_latest_footer": "Hver eneste AI for alle.",
|
||||
"com_ui_latest_production_version": "Seneste produktionsversion",
|
||||
"com_ui_latest_version": "Seneste version",
|
||||
"com_ui_librechat_code_api_key": "Få din LibreChat Code Interpreter API-nøgle",
|
||||
"com_ui_librechat_code_api_subtitle": "Sikkert. Flersproget. Input/output-filer.",
|
||||
"com_ui_librechat_code_api_title": "Kør AI-kode",
|
||||
"com_ui_loading": "Indlæser...",
|
||||
"com_ui_locked": "Låst",
|
||||
"com_ui_logo": "{{0}} Logo",
|
||||
"com_ui_manage": "Administrer",
|
||||
"com_ui_max_tags": "Det maksimalt tilladte antal er {{0}}ved at bruge de nyeste værdier.",
|
||||
"com_ui_mcp_servers": "MCP-servere",
|
||||
"com_ui_mention": "Nævn et slutpunkt, en assistent eller en forudindstilling for hurtigt at skifte til det",
|
||||
"com_ui_min_tags": "Kan ikke fjerne flere værdier, mindst {{0}} er påkrævet.",
|
||||
"com_ui_misc": "Diverse.",
|
||||
"com_ui_model": "Model",
|
||||
"com_ui_model_parameters": "Modelparametre",
|
||||
"com_ui_more_info": "Mere info",
|
||||
"com_ui_my_prompts": "Mine prompte",
|
||||
"com_ui_name": "Navn",
|
||||
"com_ui_new": "Ny",
|
||||
"com_ui_new_chat": "Ny chat",
|
||||
"com_ui_new_conversation_title": "Titel på ny samtale",
|
||||
"com_ui_next": "Næste",
|
||||
"com_ui_no": "Nej",
|
||||
"com_ui_no_backup_codes": "Ingen backup-koder tilgængelige. Generer venligst nye",
|
||||
"com_ui_no_bookmarks": "Det ser ud til, at du ikke har nogen bogmærker endnu. Klik på en chat og tilføj en ny",
|
||||
"com_ui_no_category": "Ingen kategori",
|
||||
"com_ui_no_changes": "Ingen ændringer til opdatering",
|
||||
"com_ui_no_data": "Der skal ske noget her. Det var tomt.",
|
||||
"com_ui_no_terms_content": "Intet indhold med vilkår og betingelser at vise",
|
||||
"com_ui_no_valid_items": "Der skal ske noget her. Det var tomt.",
|
||||
"com_ui_none": "Ingen",
|
||||
"com_ui_not_used": "Ikke brugt",
|
||||
"com_ui_nothing_found": "Intet fundet",
|
||||
"com_ui_oauth": "OAuth",
|
||||
"com_ui_of": "af",
|
||||
"com_ui_off": "Slukket",
|
||||
"com_ui_on": "Tændt",
|
||||
"com_ui_openai": "OpenAI",
|
||||
"com_ui_page": "Side",
|
||||
"com_ui_prev": "Forrig",
|
||||
"com_ui_preview": "Forhåndsvisning",
|
||||
"com_ui_privacy_policy": "Privatlivspolitik",
|
||||
"com_ui_privacy_policy_url": "URL til privatlivspolitik",
|
||||
"com_ui_prompt": "Prompt",
|
||||
"com_ui_prompt_already_shared_to_all": "Denne prompt er allerede delt til alle brugere",
|
||||
"com_ui_prompt_name": "Prompt navn",
|
||||
"com_ui_prompt_name_required": "Navn på prompt er påkrævet",
|
||||
"com_ui_prompt_preview_not_shared": "Forfatteren har ikke tilladt samarbejde om denne opfordring.",
|
||||
"com_ui_prompt_text": "Tekst",
|
||||
"com_ui_prompt_text_required": "Tekst er påkrævet",
|
||||
"com_ui_prompt_update_error": "Der opstod en fejl ved opdatering af prompten",
|
||||
"com_ui_prompts": "Prompte",
|
||||
"com_ui_prompts_allow_create": "Tillad oprettelse af Prompte",
|
||||
"com_ui_prompts_allow_share_global": "Tillad deling af Prompte til alle brugere",
|
||||
"com_ui_prompts_allow_use": "Tillad brug af prompte",
|
||||
"com_ui_provider": "Udbyder",
|
||||
"com_ui_read_aloud": "Læs højt",
|
||||
"com_ui_redirecting_to_provider": "Omdirigerer til {{0}}, vent venligst ...",
|
||||
"com_ui_refresh_link": "Opdater link",
|
||||
"com_ui_regenerate": "Regenerer",
|
||||
"com_ui_regenerate_backup": "Genskab backupkoder",
|
||||
"com_ui_regenerating": "Regenererer...",
|
||||
"com_ui_region": "Region",
|
||||
"com_ui_rename": "Omdøb",
|
||||
"com_ui_rename_conversation": "Omdøb samtalen",
|
||||
"com_ui_rename_failed": "Kunne ikke omdøbe samtalen",
|
||||
"com_ui_rename_prompt": "Omdøb prompt",
|
||||
"com_ui_requires_auth": "Kræver godkendelse",
|
||||
"com_ui_reset_var": "Nulstil {{0}}",
|
||||
"com_ui_result": "Resultat",
|
||||
"com_ui_revoke": "Tilbagekald",
|
||||
"com_ui_revoke_info": "Tilbagekald alle brugerens legitimationsoplysninger",
|
||||
"com_ui_revoke_key_confirm": "Er du sikker på, at du vil tilbagekalde denne nøgle?",
|
||||
"com_ui_revoke_key_endpoint": "Tilbagekald nøgle til {{0}}",
|
||||
"com_ui_revoke_keys": "Tilbagekald nøgler",
|
||||
"com_ui_revoke_keys_confirm": "Er du sikker på, at du vil tilbagekalde alle nøgler?",
|
||||
"com_ui_role_select": "Rolle",
|
||||
"com_ui_roleplay": "Rollespil",
|
||||
"com_ui_run_code": "Kør kode",
|
||||
"com_ui_run_code_error": "Der opstod en fejl, da koden blev kørt",
|
||||
"com_ui_save": "Gem",
|
||||
"com_ui_save_badge_changes": "Gemme badge-ændringer?",
|
||||
"com_ui_save_submit": "Gem og send",
|
||||
"com_ui_saved": "Gemt!",
|
||||
"com_ui_schema": "Skema",
|
||||
"com_ui_scope": "Omfang",
|
||||
"com_ui_search": "Søg",
|
||||
"com_ui_secret_key": "Hemmelig nøgle",
|
||||
"com_ui_select": "Vælg",
|
||||
"com_ui_select_file": "Vælg en fil",
|
||||
"com_ui_select_model": "Vælg en model",
|
||||
"com_ui_select_provider": "Vælg en udbyder",
|
||||
"com_ui_select_provider_first": "Vælg en udbyder først",
|
||||
"com_ui_select_region": "Vælg en region",
|
||||
"com_ui_select_search_model": "Søg model efter navn",
|
||||
"com_ui_select_search_plugin": "Søg plugin efter navn",
|
||||
"com_ui_select_search_provider": "Søg udbyder efter navn",
|
||||
"com_ui_select_search_region": "Søg region efter navn",
|
||||
"com_ui_share": "Del",
|
||||
"com_ui_share_create_message": "Dit navn og eventuelle beskeder, du tilføjer efter deling, forbliver private.",
|
||||
"com_ui_share_delete_error": "Der opstod en fejl ved sletning af det delte link",
|
||||
"com_ui_share_error": "Der opstod en fejl ved deling af chat-linket",
|
||||
"com_ui_share_form_description": "Der skal ske noget her. Det var tomt.",
|
||||
"com_ui_share_link_to_chat": "Del link til chat",
|
||||
"com_ui_share_to_all_users": "Del til alle brugere",
|
||||
"com_ui_share_update_message": "Dit navn, dine brugerdefinerede instruktioner og eventuelle beskeder, du tilføjer efter deling, forbliver private.",
|
||||
"com_ui_share_var": "Del {{0}}",
|
||||
"com_ui_shared_link_bulk_delete_success": "Delte links blev slettet",
|
||||
"com_ui_shared_link_delete_success": "Delte links blev slettet",
|
||||
"com_ui_shared_link_not_found": "Delt link ikke fundet",
|
||||
"com_ui_shared_prompts": "Delte prompte",
|
||||
"com_ui_shop": "Shopping",
|
||||
"com_ui_show": "Vis",
|
||||
"com_ui_show_all": "Vis alle",
|
||||
"com_ui_show_qr": "Vis QR-kode",
|
||||
"com_ui_sign_in_to_domain": "Log ind på {{0}}",
|
||||
"com_ui_simple": "Enkel",
|
||||
"com_ui_size": "Størrelse",
|
||||
"com_ui_special_var_current_date": "Aktuel dato",
|
||||
"com_ui_special_var_current_datetime": "Aktuel dato og tid",
|
||||
"com_ui_special_var_current_user": "Nuværende bruger",
|
||||
"com_ui_special_var_iso_datetime": "UTC ISO Datetime",
|
||||
"com_ui_special_variables": "Særlige variabler:",
|
||||
"com_ui_special_variables_more_info": "Du kan vælge særlige variabler fra rullemenuen: `{{current_date}}` (dagens dato og ugedag), `{{current_datetime}}` (lokal dato og tid), `{{utc_iso_datetime}}` (UTC ISO datetime), og `{{current_user}}` (dit kontonavn).",
|
||||
"com_ui_speech_while_submitting": "Kan ikke indsende tale, mens der genereres et svar",
|
||||
"com_ui_sr_actions_menu": "Åbn handlingsmenuen for \"{{0}}\"",
|
||||
"com_ui_stop": "Stop",
|
||||
"com_ui_storage": "Opbevaring",
|
||||
"com_ui_submit": "Indsend",
|
||||
"com_ui_teach_or_explain": "Læring",
|
||||
"com_ui_temporary": "Midlertidig chat",
|
||||
"com_ui_terms_and_conditions": "Vilkår og betingelser",
|
||||
"com_ui_terms_of_service": "Servicevilkår",
|
||||
"com_ui_thinking": "Tænker...",
|
||||
"com_ui_thoughts": "Tanker",
|
||||
"com_ui_token_exchange_method": "Metode til udveksling af tokens",
|
||||
"com_ui_token_url": "Token-URL",
|
||||
"com_ui_tools": "Værktøjer",
|
||||
"com_ui_travel": "Rejse",
|
||||
"com_ui_unarchive": "Fjern arkivering",
|
||||
"com_ui_unarchive_error": "Kunne ikke afarkivere samtalen",
|
||||
"com_ui_unknown": "Ukendt",
|
||||
"com_ui_untitled": "Uden titel",
|
||||
"com_ui_update": "Opdatering",
|
||||
"com_ui_upload": "Upload",
|
||||
"com_ui_upload_code_files": "Upload til kodefortolker",
|
||||
"com_ui_upload_delay": "Uploading \"{{0}}\" tager længere tid end forventet. Vent venligst, mens filen indekseres færdig til hentning.",
|
||||
"com_ui_upload_error": "Der opstod en fejl ved upload af din fil",
|
||||
"com_ui_upload_file_context": "Upload fil-kontekst",
|
||||
"com_ui_upload_file_search": "Upload til filsøgning",
|
||||
"com_ui_upload_files": "Upload filer",
|
||||
"com_ui_upload_image": "Upload et billede",
|
||||
"com_ui_upload_image_input": "Upload billede",
|
||||
"com_ui_upload_invalid": "Ugyldig fil til upload. Skal være et billede, der ikke overskrider grænsen",
|
||||
"com_ui_upload_invalid_var": "Ugyldig fil til upload. Skal være et billede, der ikke overstiger {{0}} MB",
|
||||
"com_ui_upload_ocr_text": "Upload som tekst",
|
||||
"com_ui_upload_success": "Filen blev uploadet",
|
||||
"com_ui_upload_type": "Vælg uploadtype",
|
||||
"com_ui_use_2fa_code": "Brug 2FA-kode i stedet",
|
||||
"com_ui_use_backup_code": "Brug backup-koden i stedet",
|
||||
"com_ui_use_micrphone": "Brug mikrofon",
|
||||
"com_ui_use_prompt": "Brug prompt",
|
||||
"com_ui_used": "Brugt",
|
||||
"com_ui_variables": "Variabler",
|
||||
"com_ui_variables_info": "Brug dobbelte parenteser i din tekst til at oprette variabler, f.eks.{{example variable}}`, som senere skal udfyldes ved brug af prompten.",
|
||||
"com_ui_verify": "Bekræft",
|
||||
"com_ui_version_var": "Version {{0}}",
|
||||
"com_ui_versions": "Versioner",
|
||||
"com_ui_view_source": "Se kilde-chat",
|
||||
"com_ui_weekend_morning": "God weekend",
|
||||
"com_ui_write": "Skriver",
|
||||
"com_ui_x_selected": "{{0}} udvalgt",
|
||||
"com_ui_yes": "Ja",
|
||||
"com_ui_zoom": "Zoom",
|
||||
"com_user_message": "Du",
|
||||
"com_warning_resubmit_unsupported": "Genindsendelse af AI-beskeden understøttes ikke for dette slutpunkt."
|
||||
}
|
||||
922
packages/client/src/locales/de/translation.json
Normal file
922
packages/client/src/locales/de/translation.json
Normal file
|
|
@ -0,0 +1,922 @@
|
|||
{
|
||||
"chat_direction_left_to_right": "Leer – etwas fehlt noch",
|
||||
"chat_direction_right_to_left": "Leer – etwas fehlt noch",
|
||||
"com_a11y_ai_composing": "Die KI erstellt noch ihre Antwort.\n",
|
||||
"com_a11y_end": "Die KI hat die Antwort fertiggestellt.",
|
||||
"com_a11y_start": "Die KI hat mit ihrer Antwort begonnen. ",
|
||||
"com_agents_allow_editing": "Anderen Nutzenden die Bearbeitung deines Agenten erlauben",
|
||||
"com_agents_by_librechat": "von LibreChat",
|
||||
"com_agents_code_interpreter": "Wenn aktiviert, ermöglicht es deinem Agenten, die LibreChat Code Interpreter API zu nutzen, um generierten Code sicher auszuführen, einschließlich der Verarbeitung von Dateien. Erfordert einen gültigen API-Schlüssel.",
|
||||
"com_agents_code_interpreter_title": "Code-Interpreter-API",
|
||||
"com_agents_create_error": "Bei der Erstellung deines Agenten ist ein Fehler aufgetreten.",
|
||||
"com_agents_description_placeholder": "Optional: Beschreibe hier deinen Agenten",
|
||||
"com_agents_enable_file_search": "Dateisuche aktivieren",
|
||||
"com_agents_file_context": "Datei-Kontext (OCR)",
|
||||
"com_agents_file_context_disabled": "Der Agent muss vor dem Hochladen von Dateien für den Datei-Kontext erstellt werden.",
|
||||
"com_agents_file_context_info": "Als „Kontext“ hochgeladene Dateien werden mit OCR verarbeitet, um Text zu extrahieren, der dann den Anweisungen des Agenten hinzugefügt wird. Ideal für Dokumente, Bilder mit Text oder PDFs, wenn Sie den vollständigen Textinhalt einer Datei benötigen",
|
||||
"com_agents_file_search_disabled": "Der Agent muss erstellt werden, bevor Dateien für die Dateisuche hochgeladen werden können.",
|
||||
"com_agents_file_search_info": "Wenn aktiviert, wird der Agent über die unten aufgelisteten exakten Dateinamen informiert und kann dadurch relevante Informationen aus diesen Dateien abrufen",
|
||||
"com_agents_instructions_placeholder": "Die Systemanweisungen, die der Agent verwendet",
|
||||
"com_agents_missing_provider_model": "Bitte wählen Sie einen Anbieter und ein Modell aus, bevor Sie einen Agenten erstellen.",
|
||||
"com_agents_name_placeholder": "Optional: Der Name des Agenten",
|
||||
"com_agents_no_access": "Du hast keine Berechtigung, diesen Agenten zu bearbeiten.",
|
||||
"com_agents_not_available": "Agent nicht verfügbar",
|
||||
"com_agents_search_info": "Wenn diese Funktion aktiviert ist, kann der Agent im Internet nach aktuellen Informationen suchen. Erfordert einen gültigen API-Schlüssel.",
|
||||
"com_agents_search_name": "Agenten nach Namen suchen",
|
||||
"com_agents_update_error": "Beim Aktualisieren deines Agenten ist ein Fehler aufgetreten.",
|
||||
"com_assistants_action_attempt": "Assistent möchte kommunizieren mit {{0}}",
|
||||
"com_assistants_actions": "Aktionen",
|
||||
"com_assistants_actions_disabled": "Du müsst einen Assistenten erstellen, bevor du Aktionen hinzufügen kannst.",
|
||||
"com_assistants_actions_info": "Lasse deinen Assistenten Informationen abrufen oder Aktionen über APIs ausführen",
|
||||
"com_assistants_add_actions": "Aktionen hinzufügen",
|
||||
"com_assistants_add_tools": "Werkzeuge hinzufügen",
|
||||
"com_assistants_allow_sites_you_trust": "Erlaube nur Webseiten, denen du vertraust.",
|
||||
"com_assistants_append_date": "Aktuelles Datum & Uhrzeit anhängen",
|
||||
"com_assistants_append_date_tooltip": "Wenn aktiviert, werden das aktuelle Client-Datum und die Uhrzeit an die Systemanweisungen des Assistenten angehängt.",
|
||||
"com_assistants_attempt_info": "Assistent möchte Folgendes senden:",
|
||||
"com_assistants_available_actions": "Verfügbare Aktionen",
|
||||
"com_assistants_capabilities": "Fähigkeiten",
|
||||
"com_assistants_code_interpreter": "Code-Interpreter",
|
||||
"com_assistants_code_interpreter_files": "Die folgenden Dateien sind nur für den Code-Interpreter:",
|
||||
"com_assistants_code_interpreter_info": "Der Code-Interpreter ermöglicht es dem Assistenten, Code zu schreiben und auszuführen. Dieses Tool kann Dateien mit verschiedenen Daten und Formatierungen verarbeiten und Dateien wie Grafiken generieren.",
|
||||
"com_assistants_completed_action": "Mit {{0}} gesprochen",
|
||||
"com_assistants_completed_function": "{{0}} ausgeführt",
|
||||
"com_assistants_conversation_starters": "Gesprächseinstiege",
|
||||
"com_assistants_conversation_starters_placeholder": "Gib einen Gesprächseinstieg ein",
|
||||
"com_assistants_create_error": "Bei der Erstellung deines Assistenten ist ein Fehler aufgetreten.",
|
||||
"com_assistants_create_success": "Erfolgreich erstellt",
|
||||
"com_assistants_delete_actions_error": "Beim Löschen der Aktion ist ein Fehler aufgetreten.",
|
||||
"com_assistants_delete_actions_success": "Aktion erfolgreich vom Assistenten gelöscht",
|
||||
"com_assistants_description_placeholder": "Optional: Beschreibe deinen Assistenten hier",
|
||||
"com_assistants_domain_info": "Agent hat diese Information an {{0}} gesendet",
|
||||
"com_assistants_file_search": "Dateisuche",
|
||||
"com_assistants_file_search_info": "Die Dateisuche ermöglicht dem Assistenten, Wissen aus Dateien zu nutzen, die du oder deine Benutzer hochladen. Sobald eine Datei hochgeladen wurde, entscheidet der Assistent automatisch, wann er basierend auf Benutzeranfragen Inhalte abruft. Das Anhängen von Vektor-Speichern für die Dateisuche wird noch nicht unterstützt. Sie können sie vom Provider-Playground aus anhängen oder Dateien für die Dateisuche auf Thread-Basis an Nachrichten anhängen.",
|
||||
"com_assistants_function_use": "Agent hat {{0}} verwendet",
|
||||
"com_assistants_image_vision": "Bildanalyse",
|
||||
"com_assistants_instructions_placeholder": "Die Systemanweisungen, die der Assistent verwendet",
|
||||
"com_assistants_knowledge": "Wissen",
|
||||
"com_assistants_knowledge_disabled": "Der Assistent muss erstellt und Code-Interpreter oder Abruf müssen aktiviert und gespeichert werden, bevor Dateien als Wissen hochgeladen werden können.",
|
||||
"com_assistants_knowledge_info": "Wenn du Dateien unter Wissen hochlädst, kannst du bei Gesprächen mit deinem Assistenten Dateiinhalte einbeziehen.",
|
||||
"com_assistants_max_starters_reached": "Maximale Anzahl an Gesprächseinstiegen erreicht",
|
||||
"com_assistants_name_placeholder": "Optional: Der Name des Assistenten",
|
||||
"com_assistants_non_retrieval_model": "Die Dateisuche ist für dieses KI-Modell nicht aktiviert. Bitte wähle ein anderes Modell aus.",
|
||||
"com_assistants_retrieval": "Abruf",
|
||||
"com_assistants_running_action": "Aktion wird ausgeführt",
|
||||
"com_assistants_running_var": "{{0}} aktiv",
|
||||
"com_assistants_search_name": "Assistenten nach Namen suchen",
|
||||
"com_assistants_update_actions_error": "Bei der Erstellung oder Aktualisierung der Aktion ist ein Fehler aufgetreten.",
|
||||
"com_assistants_update_actions_success": "Aktion erfolgreich erstellt oder aktualisiert",
|
||||
"com_assistants_update_error": "Bei der Aktualisierung deines Assistenten ist ein Fehler aufgetreten.",
|
||||
"com_assistants_update_success": "Erfolgreich aktualisiert",
|
||||
"com_auth_already_have_account": "Hast du bereits ein Konto?",
|
||||
"com_auth_apple_login": "Mit Apple anmelden",
|
||||
"com_auth_back_to_login": "Zurück zur Anmeldung",
|
||||
"com_auth_click": "Klicke",
|
||||
"com_auth_click_here": "Klicke hier",
|
||||
"com_auth_continue": "Fortfahren",
|
||||
"com_auth_create_account": "Erstelle dein Konto",
|
||||
"com_auth_discord_login": "Mit Discord fortfahren",
|
||||
"com_auth_email": "E-Mail",
|
||||
"com_auth_email_address": "E-Mail-Adresse",
|
||||
"com_auth_email_max_length": "E-Mail sollte nicht länger als 120 Zeichen sein",
|
||||
"com_auth_email_min_length": "E-Mail muss mindestens 6 Zeichen lang sein",
|
||||
"com_auth_email_pattern": "Du musst eine gültige E-Mail-Adresse eingeben",
|
||||
"com_auth_email_required": "E-Mail ist erforderlich",
|
||||
"com_auth_email_resend_link": "E-Mail erneut senden",
|
||||
"com_auth_email_resent_failed": "Erneutes Senden der Verifizierungs-E-Mail fehlgeschlagen",
|
||||
"com_auth_email_resent_success": "Verifizierungs-E-Mail erfolgreich erneut gesendet",
|
||||
"com_auth_email_verification_failed": "E-Mail-Verifizierung fehlgeschlagen",
|
||||
"com_auth_email_verification_failed_token_missing": "Verifizierung fehlgeschlagen, Token fehlt",
|
||||
"com_auth_email_verification_in_progress": "Ihre E-Mail wird verifiziert, bitte warten",
|
||||
"com_auth_email_verification_invalid": "Ungültige E-Mail-Verifizierung",
|
||||
"com_auth_email_verification_redirecting": "Weiterleitung in {{0}} Sekunden...",
|
||||
"com_auth_email_verification_resend_prompt": "Keine E-Mail erhalten?",
|
||||
"com_auth_email_verification_success": "E-Mail erfolgreich verifiziert",
|
||||
"com_auth_email_verifying_ellipsis": "Überprüfe …",
|
||||
"com_auth_error_create": "Bei der Registrierung deines Kontos ist ein Fehler aufgetreten. Bitte versuche es erneut.",
|
||||
"com_auth_error_invalid_reset_token": "Dieser Passwort-Reset-Token ist nicht mehr gültig.",
|
||||
"com_auth_error_login": "Anmeldung mit den angegebenen Informationen nicht möglich. Bitte überprüfe deine Anmeldedaten und versuche es erneut.",
|
||||
"com_auth_error_login_ban": "Dein Konto wurde aufgrund von Verstößen gegen unseren Dienst vorübergehend gesperrt.",
|
||||
"com_auth_error_login_rl": "Zu viele Anmeldeversuche in kurzer Zeit. Bitte versuche es später erneut.",
|
||||
"com_auth_error_login_server": "Es gab einen internen Serverfehler. Bitte warte einen Moment und versuche es erneut.",
|
||||
"com_auth_error_login_unverified": "Dein Konto wurde nicht verifiziert. Bitte überprüfe deine E-Mail auf einen Verifizierungslink.",
|
||||
"com_auth_facebook_login": "Mit Facebook fortfahren",
|
||||
"com_auth_full_name": "Vollständiger Name",
|
||||
"com_auth_github_login": "Mit Github fortfahren",
|
||||
"com_auth_google_login": "Mit Google fortfahren",
|
||||
"com_auth_here": "HIER",
|
||||
"com_auth_login": "Anmelden",
|
||||
"com_auth_login_with_new_password": "Du kannst dich jetzt mit deinem neuen Passwort anmelden.",
|
||||
"com_auth_name_max_length": "Name darf nicht länger als 80 Zeichen sein",
|
||||
"com_auth_name_min_length": "Name muss mindestens 3 Zeichen lang sein",
|
||||
"com_auth_name_required": "Name ist erforderlich",
|
||||
"com_auth_no_account": "Du hast noch kein Konto?",
|
||||
"com_auth_password": "Passwort",
|
||||
"com_auth_password_confirm": "Passwort bestätigen",
|
||||
"com_auth_password_forgot": "Passwort vergessen?",
|
||||
"com_auth_password_max_length": "Passwort muss weniger als 128 Zeichen lang sein",
|
||||
"com_auth_password_min_length": "Passwort muss mindestens 8 Zeichen lang sein",
|
||||
"com_auth_password_not_match": "Passwörter stimmen nicht überein",
|
||||
"com_auth_password_required": "Passwort ist erforderlich",
|
||||
"com_auth_registration_success_generic": "Bitte überprüfe deine E-Mail, um deine E-Mail-Adresse zu verifizieren.",
|
||||
"com_auth_registration_success_insecure": "Registrierung erfolgreich.",
|
||||
"com_auth_reset_password": "Setze dein Passwort zurück",
|
||||
"com_auth_reset_password_if_email_exists": "Wenn ein Konto mit dieser E-Mail-Adresse existiert, wurde eine E-Mail mit Anweisungen zum Zurücksetzen des Passworts gesendet. Bitte überprüfe auch deinen Spam-Ordner.",
|
||||
"com_auth_reset_password_link_sent": "E-Mail gesendet",
|
||||
"com_auth_reset_password_success": "Passwort erfolgreich zurückgesetzt",
|
||||
"com_auth_sign_in": "Anmelden",
|
||||
"com_auth_sign_up": "Registrieren",
|
||||
"com_auth_submit_registration": "Registrierung absenden",
|
||||
"com_auth_to_reset_your_password": "um Ihr Passwort zurückzusetzen.",
|
||||
"com_auth_to_try_again": "um es erneut zu versuchen.",
|
||||
"com_auth_two_factor": "Prüfe deine bevorzugte Einmalkennwort-App auf einen Code.",
|
||||
"com_auth_username": "Benutzername (optional)",
|
||||
"com_auth_username_max_length": "Benutzername darf nicht länger als 20 Zeichen sein",
|
||||
"com_auth_username_min_length": "Benutzername muss mindestens 2 Zeichen lang sein",
|
||||
"com_auth_verify_your_identity": "Bestätige deine Identität",
|
||||
"com_auth_welcome_back": "Willkommen zurück",
|
||||
"com_citation_more_details": "Mehr Details über {{label}}",
|
||||
"com_citation_source": "Quelle",
|
||||
"com_click_to_download": "(hier klicken zum Herunterladen)",
|
||||
"com_download_expired": "Download abgelaufen",
|
||||
"com_download_expires": "(hier klicken zum Herunterladen - läuft ab am {{0}})",
|
||||
"com_endpoint": "Endpunkt",
|
||||
"com_endpoint_agent": "Agent",
|
||||
"com_endpoint_agent_model": "Agentenmodell (Empfohlen: GPT-4o-mini)",
|
||||
"com_endpoint_agent_placeholder": "Bitte wähle einen Agenten aus",
|
||||
"com_endpoint_ai": "KI",
|
||||
"com_endpoint_anthropic_maxoutputtokens": "Maximale Anzahl von Token, die in der Antwort erzeugt werden können. Gib einen niedrigeren Wert für kürzere Antworten und einen höheren Wert für längere Antworten an. Hinweis: Die Modelle können auch vor Erreichen dieses Maximums stoppen.",
|
||||
"com_endpoint_anthropic_prompt_cache": "Prompt-Caching ermöglicht die Wiederverwendung von umfangreichen Kontexten oder Anweisungen über mehrere API-Aufrufe hinweg, wodurch Kosten und Latenzzeiten reduziert werden",
|
||||
"com_endpoint_anthropic_temp": "Reicht von 0 bis 1. Verwende Temperaturen näher an 0 für analytische / Multiple-Choice-Aufgaben und näher an 1 für kreative und generative Aufgaben. Wir empfehlen, entweder dies oder Top P zu ändern, aber nicht beides.",
|
||||
"com_endpoint_anthropic_thinking": "Aktiviert internes logisches Denken für unterstützte Claude-Modelle (3.7 Sonnet). Hinweis: Erfordert, dass \"Denkbudget\" festgelegt und niedriger als \"Max. Ausgabe-Token\" ist",
|
||||
"com_endpoint_anthropic_thinking_budget": "Bestimmt die maximale Anzahl an Token, die Claude für seinen internen Denkprozess verwenden darf. Ein höheres Budget kann die Antwortqualität verbessern, indem es eine gründlichere Analyse bei komplexen Problemen ermöglicht. Claude nutzt jedoch möglicherweise nicht das gesamte zugewiesene Budget, insbesondere bei Werten über 32.000. Diese Einstellung muss niedriger sein als \"Max. Ausgabe-Token\".",
|
||||
"com_endpoint_anthropic_topk": "Top-k ändert, wie das Modell Token für die Ausgabe auswählt. Ein Top-k von 1 bedeutet, dass das ausgewählte Token das wahrscheinlichste unter allen Token im Vokabular des Modells ist (auch \"Greedy Decoding\" genannt), während ein Top-k von 3 bedeutet, dass das nächste Token aus den 3 wahrscheinlichsten Token ausgewählt wird (unter Verwendung der Temperatur).",
|
||||
"com_endpoint_anthropic_topp": "Top-p ändert, wie das Modell Token für die Ausgabe auswählt. Token werden von den wahrscheinlichsten K (siehe topK-Parameter) bis zu den am wenigsten wahrscheinlichen ausgewählt, bis die Summe ihrer Wahrscheinlichkeiten dem Top-p-Wert entspricht.",
|
||||
"com_endpoint_assistant": "Assistent",
|
||||
"com_endpoint_assistant_model": "Assistentenmodell",
|
||||
"com_endpoint_assistant_placeholder": "Bitte wähle einen Assistenten aus dem rechten Seitenpanel aus",
|
||||
"com_endpoint_completion": "Vervollständigung",
|
||||
"com_endpoint_completion_model": "Vervollständigungsmodell (Empfohlen: GPT-4o)",
|
||||
"com_endpoint_config_click_here": "Klicke hier",
|
||||
"com_endpoint_config_google_api_info": "Um deinen Generative Language API-Key (für Gemini) zu erhalten,",
|
||||
"com_endpoint_config_google_api_key": "Google API-Key",
|
||||
"com_endpoint_config_google_cloud_platform": "(von Google Cloud Platform)",
|
||||
"com_endpoint_config_google_gemini_api": "(Gemini API)",
|
||||
"com_endpoint_config_google_service_key": "Google Service Account Key",
|
||||
"com_endpoint_config_key": "API-Key festlegen",
|
||||
"com_endpoint_config_key_encryption": "Dein API-Key wird verschlüsselt und gelöscht um",
|
||||
"com_endpoint_config_key_for": "API-Key festlegen für",
|
||||
"com_endpoint_config_key_google_need_to": "Du musst",
|
||||
"com_endpoint_config_key_google_service_account": "Ein Service-Konto erstellen",
|
||||
"com_endpoint_config_key_google_vertex_ai": "Vertex AI aktivieren",
|
||||
"com_endpoint_config_key_google_vertex_api": "API auf Google Cloud, dann",
|
||||
"com_endpoint_config_key_google_vertex_api_role": "Stelle sicher, dass du auf \"Erstellen und Fortfahren\" klickst, um mindestens die Rolle \"Vertex AI User\" zu vergeben. Erstelle zuletzt einen JSON-Key zum Importieren hier.",
|
||||
"com_endpoint_config_key_import_json_key": "Service Account JSON-Key importieren.",
|
||||
"com_endpoint_config_key_import_json_key_invalid": "Ungültiger Service Account JSON-Key. Hast du die richtige Datei importiert?",
|
||||
"com_endpoint_config_key_import_json_key_success": "Service Account JSON-Key erfolgreich importiert",
|
||||
"com_endpoint_config_key_name": "API-Key",
|
||||
"com_endpoint_config_key_never_expires": "Dein API-Key läuft nie ab",
|
||||
"com_endpoint_config_placeholder": "Lege deinen API-Key im Kopfzeilenmenü fest, um zu chatten.",
|
||||
"com_endpoint_config_value": "Wert eingeben für",
|
||||
"com_endpoint_context": "Kontext",
|
||||
"com_endpoint_context_info": "Die maximale Anzahl von Token, die für den Kontext verwendet werden können. Verwende dies zur Kontrolle, wie viele Token pro Anfrage gesendet werden. Wenn nicht angegeben, werden Systemstandards basierend auf der bekannten Kontextgröße der Modelle verwendet. Das Setzen höherer Werte kann zu Fehlern und/oder höheren Token-Kosten führen.",
|
||||
"com_endpoint_context_tokens": "Max. Kontext-Token",
|
||||
"com_endpoint_custom_name": "Benutzerdefinierter Name",
|
||||
"com_endpoint_default": "Standard",
|
||||
"com_endpoint_default_blank": "Standard: leer",
|
||||
"com_endpoint_default_empty": "Standard: leer",
|
||||
"com_endpoint_default_with_num": "Standard: {{0}}",
|
||||
"com_endpoint_deprecated": "Veraltet",
|
||||
"com_endpoint_deprecated_info": "Dieser Endpunkt ist veraltet und wird möglicherweise in zukünftigen Versionen entfernt. Bitte verwende stattdessen den Agent-Endpunkt.",
|
||||
"com_endpoint_deprecated_info_a11y": "Der Plugin-Endpunkt ist veraltet und wird möglicherweise in zukünftigen Versionen entfernt. Bitte verwende stattdessen den Agent-Endpunkt.",
|
||||
"com_endpoint_examples": " Voreinstellungen",
|
||||
"com_endpoint_export": "Exportieren",
|
||||
"com_endpoint_export_share": "Exportieren/Teilen",
|
||||
"com_endpoint_frequency_penalty": "Frequency Penalty",
|
||||
"com_endpoint_func_hover": "Verwendung von Plugins als OpenAI-Funktionen aktivieren",
|
||||
"com_endpoint_google_custom_name_placeholder": "Lege einen benutzerdefinierten Namen für Google fest",
|
||||
"com_endpoint_google_maxoutputtokens": "Maximale Anzahl von Token, die in der Antwort generiert werden können. Gib einen niedrigeren Wert für kürzere Antworten und einen höheren Wert für längere Antworten an. Hinweis: Modelle können möglicherweise vor Erreichen dieses Maximums stoppen.",
|
||||
"com_endpoint_google_temp": "Höhere Werte = zufälliger, während niedrigere Werte = fokussierter und deterministischer. Wir empfehlen, entweder dies oder Top P zu ändern, aber nicht beides.",
|
||||
"com_endpoint_google_topk": "Top-k ändert, wie das Modell Token für die Antwort auswählt. Ein Top-k von 1 bedeutet, dass das ausgewählte Token das wahrscheinlichste unter allen Token im Vokabular des Modells ist (auch Greedy-Decoding genannt), während ein Top-k von 3 bedeutet, dass das nächste Token aus den 3 wahrscheinlichsten Token ausgewählt wird (unter Verwendung der Temperatur).",
|
||||
"com_endpoint_google_topp": "Top-p ändert, wie das Modell Token für die Antwort auswählt. Token werden von den wahrscheinlichsten K (siehe topK-Parameter) bis zu den am wenigsten wahrscheinlichen ausgewählt, bis die Summe ihrer Wahrscheinlichkeiten dem Top-p-Wert entspricht.",
|
||||
"com_endpoint_instructions_assistants": "Anweisungen überschreiben",
|
||||
"com_endpoint_instructions_assistants_placeholder": "Überschreibt die Anweisungen des Assistenten. Dies ist nützlich, um das Verhalten auf Basis einzelner Ausführungen zu modifizieren.",
|
||||
"com_endpoint_max_output_tokens": "Max. Antwort-Token",
|
||||
"com_endpoint_message": "Nachricht an",
|
||||
"com_endpoint_message_new": "Nachricht an {{0}}",
|
||||
"com_endpoint_message_not_appendable": "Bearbeite deine Nachricht oder generiere neu.",
|
||||
"com_endpoint_my_preset": "Meine Voreinstellung",
|
||||
"com_endpoint_no_presets": "Noch keine Voreinstellungen, verwende die KI-Einstellungsschaltfläche, um eine zu erstellen",
|
||||
"com_endpoint_open_menu": "Menü öffnen",
|
||||
"com_endpoint_openai_custom_name_placeholder": "Lege einen benutzerdefinierten Namen für die KI fest.",
|
||||
"com_endpoint_openai_detail": "Die Auflösung für Bilderkennungs-Anfragen. \"Niedrig\" ist günstiger und schneller, \"Hoch\" ist detaillierter und teurer, und \"Auto\" wählt automatisch zwischen den beiden basierend auf der Bildauflösung.",
|
||||
"com_endpoint_openai_freq": "Zahl zwischen -2,0 und 2,0. Positive Werte bestrafen neue Token basierend auf ihrer bestehenden Häufigkeit im Text, wodurch die Wahrscheinlichkeit des Modells verringert wird, dieselbe Zeile wörtlich zu wiederholen.",
|
||||
"com_endpoint_openai_max": "Die maximale Anzahl zu generierender Token. Die Gesamtlänge der Eingabe-Token und der generierten Token ist durch die Kontextlänge des Modells begrenzt.",
|
||||
"com_endpoint_openai_max_tokens": "Optionales 'max_tokens'-Feld, das die maximale Anzahl von Token darstellt, die in der Chat-Vervollständigung generiert werden können. Die Gesamtlänge der Eingabe-Token und der generierten Token ist durch die Kontextlänge des Modells begrenzt. Du kannst Fehler erleben, wenn diese Zahl die maximalen Kontext-Token überschreitet.",
|
||||
"com_endpoint_openai_pres": "Zahl zwischen -2,0 und 2,0. Positive Werte bestrafen neue Token basierend darauf, ob sie im bisherigen Text vorkommen, wodurch die Wahrscheinlichkeit des Modells erhöht wird, über neue Themen zu sprechen.",
|
||||
"com_endpoint_openai_prompt_prefix_placeholder": "Lege benutzerdefinierte Anweisungen fest, die in die Systemnachricht an die KI aufgenommen werden sollen. Standard: keine",
|
||||
"com_endpoint_openai_reasoning_effort": "Nur für o1-Modelle: Begrenzt den Aufwand des Nachdenkens bei Schlussfolgerungsmodellen. Die Reduzierung des Nachdenkeaufwands kann zu schnelleren Antworten und weniger Token führen, die für das Überlegen vor einer Antwort verwendet werden.",
|
||||
"com_endpoint_openai_resend": "Alle im Chat zuvor angehängten Bilder mit jeder neuen Nachricht erneut senden. Hinweis: Dies kann die Kosten der Anfrage aufgrund höherer Token-Anzahl erheblich erhöhen und du kannst bei vielen Bildanhängen Fehler erleben.",
|
||||
"com_endpoint_openai_resend_files": "Alle im Chat zuvor angehängten Dateien mit jeder neuen Nachricht erneut senden. Hinweis: Dies wird die Kosten der Anfrage aufgrund höherer Token-Anzahl erheblich erhöhen und du kannst bei vielen Anhängen Fehler erleben.",
|
||||
"com_endpoint_openai_stop": "Bis zu 4 Sequenzen, bei denen die API keine weiteren Token generiert.",
|
||||
"com_endpoint_openai_temp": "Entspricht der Kreativität der KI. Höhere Werte = zufälliger und kreativer, während niedrigere Werte = unkreativer und deterministischer. Wir empfehlen, entweder dies oder Top P zu ändern, aber nicht beides. Temperaturen über 1 sind nicht empfehlenswert.",
|
||||
"com_endpoint_openai_topp": "Eine Alternative zum Sampling mit Temperatur, genannt Nucleus-Sampling, bei dem das Modell die Ergebnisse der Token mit Top-p-Wahrscheinlichkeitsmasse berücksichtigt. So bedeutet 0,1, dass nur die Token betrachtet werden, die die Top 10% der Wahrscheinlichkeitsmasse ausmachen. Wir empfehlen, entweder dies oder die Temperatur zu ändern, aber nicht beides.",
|
||||
"com_endpoint_output": "Antwort",
|
||||
"com_endpoint_plug_image_detail": "Bild-Detail",
|
||||
"com_endpoint_plug_resend_files": "Anhänge erneut senden",
|
||||
"com_endpoint_plug_set_custom_instructions_for_gpt_placeholder": "Lege benutzerdefinierte Anweisungen fest, die in die Systemnachricht aufgenommen werden sollen. Standard: keine",
|
||||
"com_endpoint_plug_skip_completion": "Fertigstellung überspringen",
|
||||
"com_endpoint_plug_use_functions": "Funktionen verwenden",
|
||||
"com_endpoint_presence_penalty": "Presence Penalty",
|
||||
"com_endpoint_preset": "Voreinstellung",
|
||||
"com_endpoint_preset_custom_name_placeholder": "Leer – etwas fehlt noch",
|
||||
"com_endpoint_preset_default": "ist jetzt die Standardvoreinstellung.",
|
||||
"com_endpoint_preset_default_item": "Standard:",
|
||||
"com_endpoint_preset_default_none": "Keine Standardvoreinstellung aktiv.",
|
||||
"com_endpoint_preset_default_removed": "ist nicht mehr die Standardvoreinstellung.",
|
||||
"com_endpoint_preset_delete_confirm": "Bist du sicher, dass du diese Voreinstellung löschen möchtest?",
|
||||
"com_endpoint_preset_delete_error": "Beim Löschen deiner Voreinstellung ist ein Fehler aufgetreten. Bitte versuche es erneut.",
|
||||
"com_endpoint_preset_import": "Voreinstellung erfolgreich importiert!",
|
||||
"com_endpoint_preset_import_error": "Beim Importieren deiner Voreinstellung ist ein Fehler aufgetreten. Bitte versuche es erneut.",
|
||||
"com_endpoint_preset_name": "Voreinstellungsname",
|
||||
"com_endpoint_preset_save_error": "Beim Speichern deiner Voreinstellung ist ein Fehler aufgetreten. Bitte versuche es erneut.",
|
||||
"com_endpoint_preset_selected": "Voreinstellung aktiv!",
|
||||
"com_endpoint_preset_selected_title": "Aktiv!",
|
||||
"com_endpoint_preset_title": "Voreinstellung",
|
||||
"com_endpoint_presets": "Voreinstellungen",
|
||||
"com_endpoint_presets_clear_warning": "Bist du sicher, dass du alle Voreinstellungen löschen möchtest? Dies ist nicht rückgängig zu machen.",
|
||||
"com_endpoint_prompt_cache": "Prompt-Zwischenspeicherung verwenden",
|
||||
"com_endpoint_prompt_prefix": "Benutzerdefinierte Anweisungen",
|
||||
"com_endpoint_prompt_prefix_assistants": "Zusätzliche Anweisungen",
|
||||
"com_endpoint_prompt_prefix_assistants_placeholder": "Lege zusätzliche Anweisungen oder Kontext zusätzlich zu den Hauptanweisungen des Assistenten fest. Wird ignoriert, wenn leer.",
|
||||
"com_endpoint_prompt_prefix_placeholder": "Lege benutzerdefinierte Anweisungen oder Kontext fest. Wird ignoriert, wenn leer.",
|
||||
"com_endpoint_reasoning_effort": "Denkaufwand",
|
||||
"com_endpoint_save_as_preset": "Voreinstellung speichern",
|
||||
"com_endpoint_search": "Endpunkt nach Namen suchen",
|
||||
"com_endpoint_search_endpoint_models": "{{0}} KI-Modelle durchsuchen...",
|
||||
"com_endpoint_search_models": "KI-Modelle durchsuchen...",
|
||||
"com_endpoint_search_var": "{{0}} durchsuchen...",
|
||||
"com_endpoint_set_custom_name": "Lege einen benutzerdefinierten Namen fest, falls du diese Voreinstellung wiederfinden möchtest",
|
||||
"com_endpoint_skip_hover": "Aktiviere das Überspringen des Vervollständigungsschritts, der die endgültige Antwort und die generierten Schritte überprüft",
|
||||
"com_endpoint_stop": "Stop-Sequenzen",
|
||||
"com_endpoint_stop_placeholder": "Trenne Stoppwörter durch Drücken der `Enter`-Taste",
|
||||
"com_endpoint_temperature": "Temperatur",
|
||||
"com_endpoint_thinking": "Denken",
|
||||
"com_endpoint_thinking_budget": "Denkbudget",
|
||||
"com_endpoint_top_k": "Top K",
|
||||
"com_endpoint_top_p": "Top P",
|
||||
"com_endpoint_use_active_assistant": "Aktiven Assistenten verwenden",
|
||||
"com_error_expired_user_key": "Der angegebene API-Key für {{0}} ist am {{1}} abgelaufen. Bitte gebe einen neuen API-Key ein und versuche es erneut.",
|
||||
"com_error_files_dupe": "Doppelte Datei erkannt.",
|
||||
"com_error_files_empty": "Leere Dateien sind nicht zulässig",
|
||||
"com_error_files_process": "Bei der Verarbeitung der Datei ist ein Fehler aufgetreten.",
|
||||
"com_error_files_unsupported_capability": "Keine aktivierten Funktionen unterstützen diesen Dateityp",
|
||||
"com_error_files_upload": "Beim Hochladen der Datei ist ein Fehler aufgetreten",
|
||||
"com_error_files_upload_canceled": "Die Datei-Upload-Anfrage wurde abgebrochen. Hinweis: Der Upload-Vorgang könnte noch im Hintergrund laufen und die Datei muss möglicherweise manuell gelöscht werden.",
|
||||
"com_error_files_validation": "Bei der Validierung der Datei ist ein Fehler aufgetreten.",
|
||||
"com_error_input_length": "Die Token-Anzahl der letzten Nachricht ist zu hoch und überschreitet das Token-Limit ({{0}}). Bitte kürze deine Nachricht, passe die maximale Kontextgröße in den Gesprächsparametern an oder erstelle eine Abzweigung des Gesprächs, um fortzufahren.",
|
||||
"com_error_invalid_agent_provider": "Der Anbieter \"{{0}}\" steht für die Verwendung mit Agents nicht zur Verfügung. Bitte gehe zu den Einstellungen deines Agents und wähle einen aktuell verfügbaren Anbieter aus.",
|
||||
"com_error_invalid_user_key": "Ungültiger API-Key angegeben. Bitte gebe einen gültigen API-Key ein und versuche es erneut.",
|
||||
"com_error_moderation": "Es scheint, dass der eingereichte Inhalt von unserem Moderationssystem als nicht mit unseren Community-Richtlinien vereinbar gekennzeichnet wurde. Wir können mit diesem spezifischen Thema nicht fortfahren. Wenn Sie andere Fragen oder Themen haben, die Sie erkunden möchten, bearbeiten Sie bitte Ihre Nachricht oder erstellen Sie eine neue Konversation.",
|
||||
"com_error_no_base_url": "Keine Basis-URL gefunden. Bitte gebe eine ein und versuche es erneut.",
|
||||
"com_error_no_user_key": "Kein API-Key gefunden. Bitte gebe einen API-Key ein und versuche es erneut.",
|
||||
"com_files_filter": "Dateien filtern...",
|
||||
"com_files_no_results": "Keine Ergebnisse.",
|
||||
"com_files_number_selected": "{{0}} von {{1}} Datei(en) ausgewählt",
|
||||
"com_generated_files": "Generierte Dateien:",
|
||||
"com_hide_examples": "Beispiele ausblenden",
|
||||
"com_nav_2fa": "Zwei-Faktor-Authentifizierung (2FA)",
|
||||
"com_nav_account_settings": "Kontoeinstellungen",
|
||||
"com_nav_always_make_prod": "Neue Versionen direkt produktiv nehmen",
|
||||
"com_nav_archive_created_at": "Archivierungsdatum",
|
||||
"com_nav_archive_name": "Name",
|
||||
"com_nav_archived_chats": "Archivierte Chats",
|
||||
"com_nav_at_command": "@-Befehl",
|
||||
"com_nav_at_command_description": "Schaltet den Befehl \"@\" zum Wechseln von Endpunkten, Modellen, Voreinstellungen usw. um.",
|
||||
"com_nav_audio_play_error": "Fehler beim Abspielen des Audios: {{0}}",
|
||||
"com_nav_audio_process_error": "Fehler bei der Verarbeitung des Audios: {{0}}",
|
||||
"com_nav_auto_scroll": "Automatisch zur neuesten Nachricht scrollen, wenn der Chat geöffnet wird",
|
||||
"com_nav_auto_send_prompts": "Prompts automatisch senden",
|
||||
"com_nav_auto_send_text": "Text automatisch senden",
|
||||
"com_nav_auto_send_text_disabled": "-1 setzen zum Deaktivieren",
|
||||
"com_nav_auto_transcribe_audio": "Audio automatisch transkribieren",
|
||||
"com_nav_automatic_playback": "Automatische Wiedergabe der neuesten Nachricht",
|
||||
"com_nav_balance": "Guthaben",
|
||||
"com_nav_browser": "Browser",
|
||||
"com_nav_center_chat_input": "Chat-Eingabe im Willkommensbildschirm zentrieren",
|
||||
"com_nav_change_picture": "Bild ändern",
|
||||
"com_nav_chat_commands": "Chat-Befehle",
|
||||
"com_nav_chat_commands_info": "Diese Befehle werden aktiviert, indem du bestimmte Zeichen am Anfang deiner Nachricht eingibst. Jeder Befehl wird durch sein festgelegtes Präfix ausgelöst. Du kannst sie deaktivieren, wenn du diese Zeichen häufig zum Beginn deiner Nachrichten verwendest.",
|
||||
"com_nav_chat_direction": "Chat-Richtung",
|
||||
"com_nav_clear_all_chats": "Alle Chats löschen",
|
||||
"com_nav_clear_cache_confirm_message": "Bist du sicher, dass du den Cache löschen möchtest?",
|
||||
"com_nav_clear_conversation": "Konversationen löschen",
|
||||
"com_nav_clear_conversation_confirm_message": "Bist du sicher, dass du alle Konversationen löschen möchtest? Dies ist nicht rückgängig zu machen.",
|
||||
"com_nav_close_sidebar": "Seitenleiste schließen",
|
||||
"com_nav_commands": "Befehle",
|
||||
"com_nav_confirm_clear": "Löschen bestätigen",
|
||||
"com_nav_conversation_mode": "Konversationsmodus",
|
||||
"com_nav_convo_menu_options": "Optionen des Gesprächsmenüs",
|
||||
"com_nav_db_sensitivity": "Dezibel-Empfindlichkeit",
|
||||
"com_nav_delete_account": "Konto löschen",
|
||||
"com_nav_delete_account_button": "Mein Konto dauerhaft löschen",
|
||||
"com_nav_delete_account_confirm": "Konto löschen - bist du sicher?",
|
||||
"com_nav_delete_account_email_placeholder": "Bitte gebe deine Konto-E-Mail ein",
|
||||
"com_nav_delete_cache_storage": "TTS-Cache-Speicher löschen",
|
||||
"com_nav_delete_data_info": "Alle deine Daten werden gelöscht.",
|
||||
"com_nav_delete_warning": "WARNUNG: Dies wird dein Konto dauerhaft löschen.",
|
||||
"com_nav_edit_chat_badges": "Chat Badges editieren",
|
||||
"com_nav_enable_cache_tts": "TTS-Caching aktivieren",
|
||||
"com_nav_enable_cloud_browser_voice": "Cloud-basierte Stimmen verwenden",
|
||||
"com_nav_enabled": "Aktiviert",
|
||||
"com_nav_engine": "Engine",
|
||||
"com_nav_enter_to_send": "Enter drücken, um Nachrichten zu senden",
|
||||
"com_nav_export": "Exportieren",
|
||||
"com_nav_export_all_message_branches": "Alle Nachrichtenzweige exportieren",
|
||||
"com_nav_export_conversation": "Konversation exportieren",
|
||||
"com_nav_export_filename": "Dateiname",
|
||||
"com_nav_export_filename_placeholder": "Lege den Dateinamen fest",
|
||||
"com_nav_export_include_endpoint_options": "Endpunktoptionen einbeziehen",
|
||||
"com_nav_export_recursive": "Rekursiv",
|
||||
"com_nav_export_recursive_or_sequential": "Rekursiv oder sequentiell?",
|
||||
"com_nav_export_type": "Typ",
|
||||
"com_nav_external": "Extern",
|
||||
"com_nav_font_size": "Schriftgröße",
|
||||
"com_nav_font_size_base": "Mittel",
|
||||
"com_nav_font_size_lg": "Groß",
|
||||
"com_nav_font_size_sm": "Klein",
|
||||
"com_nav_font_size_xl": "Sehr groß",
|
||||
"com_nav_font_size_xs": "Sehr klein",
|
||||
"com_nav_help_faq": "Hilfe & FAQ",
|
||||
"com_nav_hide_panel": "Rechte Seitenleiste verstecken",
|
||||
"com_nav_info_code_artifacts": "Aktiviert die Anzeige experimenteller Code-Artefakte neben dem Chat",
|
||||
"com_nav_info_code_artifacts_agent": "Aktiviert die Verwendung von Code-Artefakten für diesen Agenten. Standardmäßig werden zusätzliche, spezielle Anweisungen für die Nutzung von Artefakten hinzugefügt, es sei denn, der \"Benutzerdefinierte Prompt-Modus\" ist aktiviert.",
|
||||
"com_nav_info_custom_prompt_mode": "Wenn aktiviert, wird die Standard-Systemaufforderung für Artefakte nicht eingeschlossen. Alle Anweisungen zur Erzeugung von Artefakten müssen in diesem Modus manuell bereitgestellt werden.",
|
||||
"com_nav_info_enter_to_send": "Wenn aktiviert, sendet das Drücken von `ENTER` Ihre Nachricht. Wenn deaktiviert, fügt das Drücken von Enter eine neue Zeile hinzu, und du musst `STRG + ENTER` drücken, um deine Nachricht zu senden.",
|
||||
"com_nav_info_fork_change_default": "`Nur sichtbare Nachrichten` umfasst nur den direkten Pfad zur ausgewählten Nachricht. `Zugehörige Verzweigungen einbeziehen` fügt Verzweigungen entlang des Pfades hinzu. `Alle bis/von hier einbeziehen` umfasst alle verbundenen Nachrichten und Verzweigungen.",
|
||||
"com_nav_info_fork_split_target_setting": "Wenn aktiviert, beginnt das Abzweigen von der Zielnachricht bis zur letzten Nachricht in der Konversation, gemäß dem ausgewählten Verhalten.",
|
||||
"com_nav_info_include_shadcnui": "Wenn aktiviert, werden Anweisungen zur Verwendung von shadcn/ui-Komponenten eingeschlossen. shadcn/ui ist eine Sammlung wiederverwendbarer Komponenten, die mit Radix UI und Tailwind CSS erstellt wurden. Hinweis: Dies sind umfangreiche Anweisungen, die Sie nur aktivieren sollten, wenn es Ihnen wichtig ist, das KI-Modell über die korrekten Importe und Komponenten zu informieren. Weitere Informationen zu diesen Komponenten finden Sie unter: https://ui.shadcn.com/",
|
||||
"com_nav_info_latex_parsing": "Wenn aktiviert, wird LaTeX-Code in Nachrichten als mathematische Gleichungen gerendert. Das Deaktivieren kann die Leistung verbessern, wenn du keine LaTeX-Darstellung benötigst.",
|
||||
"com_nav_info_save_badges_state": "Wenn aktiviert, wird der Status der Chat-Badges gespeichert. Das bedeutet, dass die Badges im gleichen Status wie im vorherigen Chat bleiben, wenn du einen neuen Chat erstellst. Wenn du diese Option deaktivierst, werden die Badges jedes Mal, wenn du einen neuen Chat erstellst, auf ihren Standardzustand zurückgesetzt.",
|
||||
"com_nav_info_save_draft": "Wenn aktiviert, werden der Text und die Anhänge, die du in das Chat-Formular eingibst, automatisch lokal als Entwürfe gespeichert. Diese Entwürfe sind auch verfügbar, wenn du die Seite neu lädst oder zu einer anderen Konversation wechseln. Entwürfe werden lokal auf deinem Gerät gespeichert und werden gelöscht, sobald die Nachricht gesendet wird.",
|
||||
"com_nav_info_show_thinking": "Wenn aktiviert, sind die Denkprozess-Dropdowns standardmäßig geöffnet, sodass du die Gedankengänge der KI in Echtzeit sehen kannst. Wenn deaktiviert, bleiben sie standardmäßig geschlossen, für eine übersichtlichere Oberfläche.",
|
||||
"com_nav_info_user_name_display": "Wenn aktiviert, wird der Benutzername des Absenders über jeder Nachricht angezeigt, die du sendest. Wenn deaktiviert, siehst du nur \"Du\" über deinen Nachrichten.",
|
||||
"com_nav_lang_arabic": "العربية",
|
||||
"com_nav_lang_auto": "Automatisch erkennen",
|
||||
"com_nav_lang_brazilian_portuguese": "Português Brasileiro",
|
||||
"com_nav_lang_catalan": "Català",
|
||||
"com_nav_lang_chinese": "中文",
|
||||
"com_nav_lang_czech": "Čeština",
|
||||
"com_nav_lang_danish": "Dansk",
|
||||
"com_nav_lang_dutch": "Nederlands",
|
||||
"com_nav_lang_english": "English",
|
||||
"com_nav_lang_estonian": "Eesti keel",
|
||||
"com_nav_lang_finnish": "Suomi",
|
||||
"com_nav_lang_french": "Français ",
|
||||
"com_nav_lang_georgian": "ქართული",
|
||||
"com_nav_lang_german": "Deutsch",
|
||||
"com_nav_lang_hebrew": "עברית",
|
||||
"com_nav_lang_hungarian": "Ungarisch",
|
||||
"com_nav_lang_indonesia": "Indonesia",
|
||||
"com_nav_lang_italian": "Italiano",
|
||||
"com_nav_lang_japanese": "日本語",
|
||||
"com_nav_lang_korean": "한국어",
|
||||
"com_nav_lang_persian": "Persisch",
|
||||
"com_nav_lang_polish": "Polski",
|
||||
"com_nav_lang_portuguese": "Português",
|
||||
"com_nav_lang_russian": "Русский",
|
||||
"com_nav_lang_spanish": "Español",
|
||||
"com_nav_lang_swedish": "Svenska",
|
||||
"com_nav_lang_thai": "ไทย",
|
||||
"com_nav_lang_traditional_chinese": "繁體中文",
|
||||
"com_nav_lang_turkish": "Türkçe",
|
||||
"com_nav_lang_vietnamese": "Tiếng Việt",
|
||||
"com_nav_language": "Sprache",
|
||||
"com_nav_latex_parsing": "LaTeX in Nachrichten parsen (kann die Leistung beeinflussen)",
|
||||
"com_nav_log_out": "Abmelden",
|
||||
"com_nav_long_audio_warning": "Längere Texte benötigen mehr Zeit zur Verarbeitung.",
|
||||
"com_nav_maximize_chat_space": "Chat-Bereich maximieren",
|
||||
"com_nav_modular_chat": "Ermöglicht das Wechseln der Endpunkte mitten im Gespräch",
|
||||
"com_nav_my_files": "Meine Dateien",
|
||||
"com_nav_not_supported": "Nicht unterstützt",
|
||||
"com_nav_open_sidebar": "Seitenleiste öffnen",
|
||||
"com_nav_playback_rate": "Audio-Wiedergabegeschwindigkeit",
|
||||
"com_nav_plugin_auth_error": "Bei dem Versuch, dieses Plugin zu authentifizieren, ist ein Fehler aufgetreten. Bitte versuche es erneut.",
|
||||
"com_nav_plugin_install": "Installieren",
|
||||
"com_nav_plugin_search": "Plugins suchen",
|
||||
"com_nav_plugin_store": "Plugin-Store",
|
||||
"com_nav_plugin_uninstall": "Deinstallieren",
|
||||
"com_nav_plus_command": "+-Befehl",
|
||||
"com_nav_plus_command_description": "Schaltet den Befehl \"+\" zum Hinzufügen einer Mehrfachantwort-Einstellung um",
|
||||
"com_nav_profile_picture": "Profilbild",
|
||||
"com_nav_save_badges_state": "Badgestatus speichern",
|
||||
"com_nav_save_drafts": "Entwürfe lokal speichern",
|
||||
"com_nav_scroll_button": "Zum Ende scrollen Button",
|
||||
"com_nav_search_placeholder": "Nachrichten durchsuchen",
|
||||
"com_nav_send_message": "Nachricht senden",
|
||||
"com_nav_setting_account": "Konto",
|
||||
"com_nav_setting_beta": "Beta-Funktionen",
|
||||
"com_nav_setting_chat": "Chat",
|
||||
"com_nav_setting_data": "Datensteuerung",
|
||||
"com_nav_setting_general": "Allgemein",
|
||||
"com_nav_setting_speech": "Sprache",
|
||||
"com_nav_settings": "Einstellungen",
|
||||
"com_nav_shared_links": "Geteilte Links",
|
||||
"com_nav_show_code": "Code immer anzeigen, wenn der Code-Interpreter verwendet wird",
|
||||
"com_nav_show_thinking": "Denkprozess-Dropdowns standardmäßig öffnen",
|
||||
"com_nav_slash_command": "/-Befehl",
|
||||
"com_nav_slash_command_description": "Schaltet den Befehl \"/\" zur Auswahl einer Eingabeaufforderung über die Tastatur um",
|
||||
"com_nav_speech_to_text": "Sprache zu Text",
|
||||
"com_nav_stop_generating": "Generierung stoppen",
|
||||
"com_nav_text_to_speech": "Text zu Sprache",
|
||||
"com_nav_theme": "Design",
|
||||
"com_nav_theme_dark": "Dunkel",
|
||||
"com_nav_theme_light": "Hell",
|
||||
"com_nav_theme_system": "System",
|
||||
"com_nav_tool_dialog": "Assistenten-Werkzeuge",
|
||||
"com_nav_tool_dialog_agents": "Agent-Tools",
|
||||
"com_nav_tool_dialog_description": "Assistent muss gespeichert werden, um Werkzeugauswahlen zu speichern.",
|
||||
"com_nav_tool_remove": "Entfernen",
|
||||
"com_nav_tool_search": "Werkzeuge suchen",
|
||||
"com_nav_user": "BENUTZER",
|
||||
"com_nav_user_msg_markdown": "Benutzernachrichten als Markdown darstellen",
|
||||
"com_nav_user_name_display": "Benutzernamen in Nachrichten anzeigen",
|
||||
"com_nav_voice_select": "Stimme",
|
||||
"com_show_agent_settings": "Agenteneinstellungen anzeigen",
|
||||
"com_show_completion_settings": "Vervollständigungseinstellungen anzeigen",
|
||||
"com_show_examples": "Beispiele anzeigen",
|
||||
"com_sidepanel_agent_builder": "Agenten Ersteller",
|
||||
"com_sidepanel_assistant_builder": "Assistenten-Ersteller",
|
||||
"com_sidepanel_attach_files": "Dateien anhängen",
|
||||
"com_sidepanel_conversation_tags": "Lesezeichen",
|
||||
"com_sidepanel_hide_panel": "Seitenleiste ausblenden",
|
||||
"com_sidepanel_manage_files": "Dateien verwalten",
|
||||
"com_sidepanel_parameters": "KI-Einstellungen",
|
||||
"com_sources_image_alt": "Suchergebnis Bild",
|
||||
"com_sources_more_sources": "+{{count}} Quellen",
|
||||
"com_sources_tab_all": "Alles",
|
||||
"com_sources_tab_images": "Bilder",
|
||||
"com_sources_tab_news": "Nachrichten",
|
||||
"com_sources_title": "Quellen",
|
||||
"com_ui_2fa_account_security": "Die Zwei-Faktor-Authentifizierung bietet Ihrem Konto eine zusätzliche Sicherheitsebene.",
|
||||
"com_ui_2fa_disable": "2FA deaktivieren",
|
||||
"com_ui_2fa_disable_error": "Beim Deaktivieren der Zwei-Faktor-Authentifizierung ist ein Fehler aufgetreten.",
|
||||
"com_ui_2fa_disabled": "2FA wurde deaktiviert.",
|
||||
"com_ui_2fa_enable": "2FA aktivieren",
|
||||
"com_ui_2fa_enabled": "2FA wurde aktiviert.",
|
||||
"com_ui_2fa_generate_error": "Beim Erstellen der Einstellungen für die Zwei-Faktor-Authentifizierung ist ein Fehler aufgetreten.",
|
||||
"com_ui_2fa_invalid": "Ungültiger Zwei-Faktor-Authentifizierungscode.",
|
||||
"com_ui_2fa_setup": "2FA einrichten",
|
||||
"com_ui_2fa_verified": "Die Zwei-Faktor-Authentifizierung wurde erfolgreich verifiziert.",
|
||||
"com_ui_accept": "Ich akzeptiere",
|
||||
"com_ui_action_button": "Aktionstaste",
|
||||
"com_ui_add": "Hinzufügen",
|
||||
"com_ui_add_model_preset": "Ein KI-Modell oder eine Voreinstellung für eine zusätzliche Antwort hinzufügen",
|
||||
"com_ui_add_multi_conversation": "Mehrere Chats hinzufügen",
|
||||
"com_ui_adding_details": "Hinzufügen von Details",
|
||||
"com_ui_admin": "Admin",
|
||||
"com_ui_admin_access_warning": "Das Deaktivieren des Admin-Zugriffs auf diese Funktion kann zu unerwarteten Problemen in der Benutzeroberfläche führen, die ein Neuladen erfordern. Nach dem Speichern kann dies nur über die Schnittstelleneinstellung in der librechat.yaml-Konfiguration rückgängig gemacht werden, was sich auf alle Rollen auswirkt.",
|
||||
"com_ui_admin_settings": "Admin-Einstellungen",
|
||||
"com_ui_advanced": "Erweitert",
|
||||
"com_ui_advanced_settings": "Erweiterte Einstellungen",
|
||||
"com_ui_agent": "Agent",
|
||||
"com_ui_agent_chain": "Agent-Kette",
|
||||
"com_ui_agent_chain_info": "Ermöglicht das Erstellen von Agenten-Sequenzen. Jeder Agent kann auf die Ausgaben vorheriger Agenten in der Kette zugreifen. Basiert auf der \"Mixture-of-Agents\"-Architektur, bei der Agenten vorherige Ausgaben als zusätzliche Informationen verwenden.",
|
||||
"com_ui_agent_chain_max": "Du hast die maximale Anzahl von {{0}} Agenten erreicht.",
|
||||
"com_ui_agent_delete_error": "Beim Löschen des Assistenten ist ein Fehler aufgetreten",
|
||||
"com_ui_agent_deleted": "Assistent erfolgreich gelöscht",
|
||||
"com_ui_agent_duplicate_error": "Beim Duplizieren des Assistenten ist ein Fehler aufgetreten",
|
||||
"com_ui_agent_duplicated": "Agent wurde erfolgreich dupliziert",
|
||||
"com_ui_agent_editing_allowed": "Andere Nutzende können diesen Agenten bereits bearbeiten",
|
||||
"com_ui_agent_recursion_limit": "Maximale Agenten-Schritte",
|
||||
"com_ui_agent_recursion_limit_info": "Begrenzt, wie viele Schritte der Agent in einem Durchlauf ausführen kann, bevor er eine endgültige Antwort gibt. Der Standardwert ist 25 Schritte. Ein Schritt ist entweder eine KI-API-Anfrage oder eine Werkzeugnutzungsrunde. Eine einfache Werkzeuginteraktion umfasst beispielsweise 3 Schritte: die ursprüngliche Anfrage, die Werkzeugnutzung und die Folgeanfrage.",
|
||||
"com_ui_agent_shared_to_all": "Hier muss etwas eingegeben werden. War leer.",
|
||||
"com_ui_agent_var": "{{0}} Agent",
|
||||
"com_ui_agent_version": "Version",
|
||||
"com_ui_agent_version_active": "Aktive Version",
|
||||
"com_ui_agent_version_duplicate": "Doppelte Version entdeckt. Dies würde eine Version erzeugen, die identisch mit der Version {{versionIndex}} ist.",
|
||||
"com_ui_agent_version_empty": "Keine Versionen verfügbar",
|
||||
"com_ui_agent_version_error": "Fehler beim Abrufen der Versionen",
|
||||
"com_ui_agent_version_history": "Versionsgeschichte",
|
||||
"com_ui_agent_version_no_agent": "Kein Agent ausgewählt. Bitte wähle einen Agenten aus, um den Versionsverlauf anzuzeigen.",
|
||||
"com_ui_agent_version_no_date": "Datum nicht verfügbar",
|
||||
"com_ui_agent_version_restore": "Wiederherstellen",
|
||||
"com_ui_agent_version_restore_confirm": "Bist du sicher, dass du diese Version wiederherstellen willst?",
|
||||
"com_ui_agent_version_unknown_date": "Unbekanntes Datum",
|
||||
"com_ui_agents": "Agenten",
|
||||
"com_ui_agents_allow_create": "Erlaube Agents zu erstellen",
|
||||
"com_ui_agents_allow_share_global": "Erlaube das Teilen von Agenten mit allen Nutzern",
|
||||
"com_ui_agents_allow_use": "Verwendung von Agenten erlauben",
|
||||
"com_ui_all": "alle",
|
||||
"com_ui_all_proper": "Alle",
|
||||
"com_ui_analyzing": "Analyse läuft",
|
||||
"com_ui_analyzing_finished": "Analyse abgeschlossen",
|
||||
"com_ui_api_key": "API-Schlüssel",
|
||||
"com_ui_archive": "Archivieren",
|
||||
"com_ui_archive_delete_error": "Archivierter Chat konnte nicht gelöscht werden.",
|
||||
"com_ui_archive_error": "Konversation konnte nicht archiviert werden",
|
||||
"com_ui_artifact_click": "Zum Öffnen klicken",
|
||||
"com_ui_artifacts": "Artefakte",
|
||||
"com_ui_artifacts_toggle": "Artefakte-Funktion einschalten",
|
||||
"com_ui_artifacts_toggle_agent": "Artefakte aktivieren",
|
||||
"com_ui_ascending": "Aufsteigend",
|
||||
"com_ui_assistant": "Assistent",
|
||||
"com_ui_assistant_delete_error": "Beim Löschen des Assistenten ist ein Fehler aufgetreten",
|
||||
"com_ui_assistant_deleted": "Assistent erfolgreich gelöscht",
|
||||
"com_ui_assistants": "Assistenten",
|
||||
"com_ui_assistants_output": "Assistenten-Ausgabe",
|
||||
"com_ui_attach_error": "Datei kann nicht angehängt werden. Erstelle oder wähle einen Chat oder versuche, die Seite zu aktualisieren.",
|
||||
"com_ui_attach_error_openai": "Assistentendateien können nicht an andere Endpunkte angehängt werden",
|
||||
"com_ui_attach_error_size": "Dateigrößenlimit für Endpunkt überschritten:",
|
||||
"com_ui_attach_error_type": "Nicht unterstützter Dateityp für Endpunkt:",
|
||||
"com_ui_attach_remove": "Datei entfernen",
|
||||
"com_ui_attach_warn_endpoint": "Nicht-Assistentendateien werden möglicherweise ohne kompatibles Werkzeug ignoriert",
|
||||
"com_ui_attachment": "Anhang",
|
||||
"com_ui_auth_type": "Authentifizierungstyp",
|
||||
"com_ui_auth_url": "Autorisierungs-URL",
|
||||
"com_ui_authentication": "Authentifizierung",
|
||||
"com_ui_authentication_type": "Authentifizierungstyp",
|
||||
"com_ui_avatar": "Avatar",
|
||||
"com_ui_azure": "Azure",
|
||||
"com_ui_back_to_chat": "Zurück zum Chat",
|
||||
"com_ui_back_to_prompts": "Zurück zu den Prompts",
|
||||
"com_ui_backup_codes": "Backup-Codes",
|
||||
"com_ui_backup_codes_regenerate_error": "Beim Neuerstellen der Backup-Codes ist ein Fehler aufgetreten.",
|
||||
"com_ui_backup_codes_regenerated": "Backup-Codes wurden erfolgreich neu erstellt.",
|
||||
"com_ui_basic": "Basic",
|
||||
"com_ui_basic_auth_header": "Basic-Authentifizierungsheader",
|
||||
"com_ui_bearer": "Bearer",
|
||||
"com_ui_bookmark_delete_confirm": "Bist du sicher, dass du dieses Lesezeichen löschen möchtest?",
|
||||
"com_ui_bookmarks": "Lesezeichen",
|
||||
"com_ui_bookmarks_add": "Lesezeichen hinzufügen",
|
||||
"com_ui_bookmarks_add_to_conversation": "Zur aktuellen Konversation hinzufügen",
|
||||
"com_ui_bookmarks_count": "Anzahl",
|
||||
"com_ui_bookmarks_create_error": "Beim Erstellen des Lesezeichens ist ein Fehler aufgetreten",
|
||||
"com_ui_bookmarks_create_exists": "Dieses Lesezeichen existiert bereits",
|
||||
"com_ui_bookmarks_create_success": "Lesezeichen erfolgreich erstellt",
|
||||
"com_ui_bookmarks_delete": "Lesezeichen löschen",
|
||||
"com_ui_bookmarks_delete_error": "Beim Löschen des Lesezeichens ist ein Fehler aufgetreten",
|
||||
"com_ui_bookmarks_delete_success": "Lesezeichen erfolgreich gelöscht",
|
||||
"com_ui_bookmarks_description": "Beschreibung",
|
||||
"com_ui_bookmarks_edit": "Lesezeichen bearbeiten",
|
||||
"com_ui_bookmarks_filter": "Lesezeichen filtern...",
|
||||
"com_ui_bookmarks_new": "Neues Lesezeichen",
|
||||
"com_ui_bookmarks_title": "Titel",
|
||||
"com_ui_bookmarks_update_error": "Beim Aktualisieren des Lesezeichens ist ein Fehler aufgetreten",
|
||||
"com_ui_bookmarks_update_success": "Lesezeichen erfolgreich aktualisiert",
|
||||
"com_ui_bulk_delete_error": "Geteilte Links konnten nicht gelöscht werden.",
|
||||
"com_ui_callback_url": "Callback-URL",
|
||||
"com_ui_cancel": "Abbrechen",
|
||||
"com_ui_category": "Kategorie",
|
||||
"com_ui_chat": "Chat",
|
||||
"com_ui_chat_history": "Chatverlauf",
|
||||
"com_ui_clear": "Löschen",
|
||||
"com_ui_clear_all": "Auswahl löschen",
|
||||
"com_ui_client_id": "Client-ID",
|
||||
"com_ui_client_secret": "Client Secret",
|
||||
"com_ui_close": "Schließen",
|
||||
"com_ui_close_menu": "Menü schließen",
|
||||
"com_ui_code": "Code",
|
||||
"com_ui_collapse_chat": "Chat einklappen",
|
||||
"com_ui_command_placeholder": "Optional: Gib einen Promptbefehl ein oder den Namen.",
|
||||
"com_ui_command_usage_placeholder": "Wähle einen Prompt nach Befehl oder Name aus",
|
||||
"com_ui_complete_setup": "Einrichtung abschließen",
|
||||
"com_ui_confirm_action": "Aktion bestätigen",
|
||||
"com_ui_confirm_admin_use_change": "Wenn du diese Einstellung änderst, wird der Zugriff für Administratoren, einschließlich dir selbst, gesperrt. Bist du sicher, dass du fortfahren möchtest?",
|
||||
"com_ui_confirm_change": "Änderung bestätigen",
|
||||
"com_ui_context": "Kontext",
|
||||
"com_ui_continue": "Fortfahren",
|
||||
"com_ui_controls": "Steuerung",
|
||||
"com_ui_convo_delete_error": "Unterhaltung konnte nicht gelöscht werden.",
|
||||
"com_ui_copied": "Kopiert!",
|
||||
"com_ui_copied_to_clipboard": "In die Zwischenablage kopiert",
|
||||
"com_ui_copy_code": "Code kopieren",
|
||||
"com_ui_copy_link": "Link kopieren",
|
||||
"com_ui_copy_to_clipboard": "In die Zwischenablage kopieren",
|
||||
"com_ui_create": "Erstellen",
|
||||
"com_ui_create_link": "Link erstellen",
|
||||
"com_ui_create_prompt": "Prompt erstellen",
|
||||
"com_ui_creating_image": "Bild wird erstellt. Kann einen Moment dauern",
|
||||
"com_ui_currently_production": "Aktuell im Produktivbetrieb",
|
||||
"com_ui_custom": "Benutzerdefiniert",
|
||||
"com_ui_custom_header_name": "Benutzerdefinierter Headername",
|
||||
"com_ui_custom_prompt_mode": "Benutzerdefinierter Promptmodus für Artefakte",
|
||||
"com_ui_dashboard": "Dashboard",
|
||||
"com_ui_date": "Datum",
|
||||
"com_ui_date_april": "April",
|
||||
"com_ui_date_august": "August",
|
||||
"com_ui_date_december": "Dezember",
|
||||
"com_ui_date_february": "Februar",
|
||||
"com_ui_date_january": "Januar",
|
||||
"com_ui_date_july": "Juli",
|
||||
"com_ui_date_june": "Juni",
|
||||
"com_ui_date_march": "März",
|
||||
"com_ui_date_may": "Mai",
|
||||
"com_ui_date_november": "November",
|
||||
"com_ui_date_october": "Oktober",
|
||||
"com_ui_date_previous_30_days": "Letzte 30 Tage",
|
||||
"com_ui_date_previous_7_days": "Letzte 7 Tage",
|
||||
"com_ui_date_september": "September",
|
||||
"com_ui_date_today": "Heute",
|
||||
"com_ui_date_yesterday": "Gestern",
|
||||
"com_ui_decline": "Ich akzeptiere nicht",
|
||||
"com_ui_default_post_request": "Standard (POST-Anfrage)",
|
||||
"com_ui_delete": "Löschen",
|
||||
"com_ui_delete_action": "Aktion löschen",
|
||||
"com_ui_delete_action_confirm": "Bist du sicher, dass du diese Aktion löschen möchtest?",
|
||||
"com_ui_delete_agent_confirm": "Bist du sicher, dass du diesen Agenten löschen möchtest?",
|
||||
"com_ui_delete_assistant_confirm": "Bist du sicher, dass du diesen Assistenten löschen möchtest? Dies kann nicht rückgängig gemacht werden.",
|
||||
"com_ui_delete_confirm": "Dies wird löschen:",
|
||||
"com_ui_delete_confirm_prompt_version_var": "Dies wird die ausgewählte Version für \"{{0}}\" löschen. Wenn keine anderen Versionen existieren, wird der Prompt gelöscht.",
|
||||
"com_ui_delete_conversation": "Chat löschen?",
|
||||
"com_ui_delete_prompt": "Prompt löschen?",
|
||||
"com_ui_delete_shared_link": "Geteilten Link löschen?",
|
||||
"com_ui_delete_tool": "Werkzeug löschen",
|
||||
"com_ui_delete_tool_confirm": "Bist du sicher, dass du dieses Werkzeug löschen möchtest?",
|
||||
"com_ui_descending": "Absteigend",
|
||||
"com_ui_description": "Beschreibung",
|
||||
"com_ui_description_placeholder": "Optional: Gib eine Beschreibung für den Prompt ein",
|
||||
"com_ui_disabling": "Deaktiviere …",
|
||||
"com_ui_download": "Herunterladen",
|
||||
"com_ui_download_artifact": "Artefakt herunterladen",
|
||||
"com_ui_download_backup": "Backup-Codes herunterladen",
|
||||
"com_ui_download_backup_tooltip": "Bevor Sie fortfahren, laden Sie bitte Ihre Backup-Codes herunter. Sie benötigen sie, um den Zugang wiederherzustellen, falls Sie Ihr Authentifizierungsgerät verlieren.",
|
||||
"com_ui_download_error": "Fehler beim Herunterladen der Datei. Die Datei wurde möglicherweise gelöscht.",
|
||||
"com_ui_drag_drop": "Ziehen und Ablegen",
|
||||
"com_ui_dropdown_variables": "Dropdown-Variablen:",
|
||||
"com_ui_dropdown_variables_info": "Erstellen Sie benutzerdefinierte Dropdown-Menüs für Ihre Eingabeaufforderungen: `{{variable_name:option1|option2|option3}}`",
|
||||
"com_ui_duplicate": "Duplizieren",
|
||||
"com_ui_duplication_error": "Beim Duplizieren der Konversation ist ein Fehler aufgetreten",
|
||||
"com_ui_duplication_processing": "Konversation wird dupliziert...",
|
||||
"com_ui_duplication_success": "Unterhaltung erfolgreich dupliziert",
|
||||
"com_ui_edit": "Bearbeiten",
|
||||
"com_ui_edit_editing_image": "Bild bearbeiten",
|
||||
"com_ui_empty_category": "-",
|
||||
"com_ui_endpoint": "Endpunkt",
|
||||
"com_ui_endpoint_menu": "LLM-Endpunkt-Menü",
|
||||
"com_ui_enter": "Eingabe",
|
||||
"com_ui_enter_api_key": "API-Schlüssel eingeben",
|
||||
"com_ui_enter_openapi_schema": "Gib hier dein OpenAPI-Schema ein",
|
||||
"com_ui_error": "Fehler",
|
||||
"com_ui_error_connection": "Verbindungsfehler zum Server. Versuche, die Seite zu aktualisieren.",
|
||||
"com_ui_error_save_admin_settings": "Beim Speichern Ihrer Admin-Einstellungen ist ein Fehler aufgetreten.",
|
||||
"com_ui_examples": "Beispiele",
|
||||
"com_ui_expand_chat": "Chat erweitern",
|
||||
"com_ui_export_convo_modal": "Konversation exportieren",
|
||||
"com_ui_field_required": "Dieses Feld ist erforderlich",
|
||||
"com_ui_files": "Dateien",
|
||||
"com_ui_filter_prompts": "Prompts filtern",
|
||||
"com_ui_filter_prompts_name": "Prompts nach Namen filtern",
|
||||
"com_ui_final_touch": "Letzter Schliff",
|
||||
"com_ui_finance": "Finanzen",
|
||||
"com_ui_fork": "Abzweigen",
|
||||
"com_ui_fork_all_target": "Alle bis/von hier einbeziehen",
|
||||
"com_ui_fork_branches": "Zugehörige Verzweigungen einbeziehen",
|
||||
"com_ui_fork_change_default": "Standard-Abzweigungsoption",
|
||||
"com_ui_fork_default": "Standard-Abzweigungsoption verwenden",
|
||||
"com_ui_fork_error": "Beim Abzweigen der Konversation ist ein Fehler aufgetreten",
|
||||
"com_ui_fork_from_message": "Wähle eine Abzweigungsoption",
|
||||
"com_ui_fork_info_1": "Verwende diese Einstellung, um Nachrichten mit dem gewünschten Verhalten abzuzweigen.",
|
||||
"com_ui_fork_info_2": "\"Abzweigen\" bezieht sich auf das Erstellen einer neuen Konversation, die von bestimmten Nachrichten in der aktuellen Konversation ausgeht/endet und eine Kopie gemäß den ausgewählten Optionen erstellt.",
|
||||
"com_ui_fork_info_3": "Die \"Zielnachricht\" bezieht sich entweder auf die Nachricht, von der aus dieses Popup geöffnet wurde, oder, wenn du \"{{0}}\" aktivierst, auf die letzte Nachricht in der Konversation.",
|
||||
"com_ui_fork_info_branches": "Diese Option zweigt die sichtbaren Nachrichten zusammen mit zugehörigen Verzweigungen ab; mit anderen Worten, den direkten Pfad zur Zielnachricht, einschließlich der Verzweigungen entlang des Pfades.",
|
||||
"com_ui_fork_info_button_label": "Informationen zum Abspalten von Chats anzeigen",
|
||||
"com_ui_fork_info_remember": "Aktiviere dies, um sich die von dir ausgewählten Optionen für zukünftige Verwendung zu merken, um das Abzweigen von Konversationen nach deinen Vorlieben zu beschleunigen.",
|
||||
"com_ui_fork_info_start": "Wenn aktiviert, beginnt das Abzweigen von dieser Nachricht bis zur letzten Nachricht in der Konversation, gemäß dem oben ausgewählten Verhalten.",
|
||||
"com_ui_fork_info_target": "Diese Option zweigt alle Nachrichten ab, die zur Zielnachricht führen, einschließlich ihrer Nachbarn; mit anderen Worten, alle Nachrichtenverzweigungen werden einbezogen, unabhängig davon, ob sie sichtbar sind oder sich auf demselben Pfad befinden.",
|
||||
"com_ui_fork_info_visible": "Diese Option zweigt nur die sichtbaren Nachrichten ab; mit anderen Worten, den direkten Pfad zur Zielnachricht, ohne jegliche Verzweigungen.",
|
||||
"com_ui_fork_more_details_about": "Zusätzliche Informationen und Details zur Abspaltungsoption '{{0}}' anzeigen",
|
||||
"com_ui_fork_more_info_options": "Detaillierte Erklärung aller Abspaltungsoptionen und ihres Verhaltens anzeigen",
|
||||
"com_ui_fork_processing": "Konversation wird abgezweigt...",
|
||||
"com_ui_fork_remember": "Merken",
|
||||
"com_ui_fork_remember_checked": "Ihre Auswahl wird nach der Verwendung gespeichert. Du kannst dies jederzeit in den Einstellungen ändern.",
|
||||
"com_ui_fork_split_target": "Abzweigung hier beginnen",
|
||||
"com_ui_fork_split_target_setting": "Abzweigung standardmäßig von der Zielnachricht beginnen",
|
||||
"com_ui_fork_success": "Konversation erfolgreich abgezweigt",
|
||||
"com_ui_fork_visible": "Nur sichtbare Nachrichten",
|
||||
"com_ui_generate_backup": "Backup-Codes generieren",
|
||||
"com_ui_generate_qrcode": "QR-Code generieren",
|
||||
"com_ui_generating": "Generiere …",
|
||||
"com_ui_getting_started": "Erste Schritte",
|
||||
"com_ui_global_group": "Leer – etwas fehlt noch",
|
||||
"com_ui_go_back": "Zurück",
|
||||
"com_ui_go_to_conversation": "Zur Konversation gehen",
|
||||
"com_ui_good_afternoon": "Guten Nachmittag",
|
||||
"com_ui_good_evening": "Guten Abend",
|
||||
"com_ui_good_morning": "Guten Morgen",
|
||||
"com_ui_happy_birthday": "Es ist mein 1. Geburtstag!",
|
||||
"com_ui_hide_qr": "QR-Code ausblenden",
|
||||
"com_ui_host": "Host",
|
||||
"com_ui_idea": "Ideen",
|
||||
"com_ui_image_created": "Bild erstellt",
|
||||
"com_ui_image_edited": "Bild bearbeitet",
|
||||
"com_ui_image_gen": "Bildgenerierung",
|
||||
"com_ui_import": "Importieren",
|
||||
"com_ui_import_conversation_error": "Beim Importieren Ihrer Konversationen ist ein Fehler aufgetreten",
|
||||
"com_ui_import_conversation_file_type_error": "Nicht unterstützter Importtyp",
|
||||
"com_ui_import_conversation_info": "Konversationen aus einer JSON-Datei importieren",
|
||||
"com_ui_import_conversation_success": "Konversationen erfolgreich importiert",
|
||||
"com_ui_include_shadcnui": "Anweisungen für shadcn/ui-Komponenten einschließen",
|
||||
"com_ui_include_shadcnui_agent": "shadcn/ui-Anweisungen einfügen",
|
||||
"com_ui_input": "Eingabe",
|
||||
"com_ui_instructions": "Anweisungen",
|
||||
"com_ui_late_night": "Schöne späte Nacht",
|
||||
"com_ui_latest_footer": "Alle KIs für alle.",
|
||||
"com_ui_latest_production_version": "Neueste Produktiv-Version",
|
||||
"com_ui_latest_version": "Neueste Version",
|
||||
"com_ui_librechat_code_api_key": "Hole dir deinen LibreChat Code Interpreter API-Schlüssel",
|
||||
"com_ui_librechat_code_api_subtitle": "Sicher. Mehrsprachig. Ein-/Ausgabedateien.",
|
||||
"com_ui_librechat_code_api_title": "KI-Code ausführen",
|
||||
"com_ui_loading": "Lade …",
|
||||
"com_ui_locked": "Gesperrt",
|
||||
"com_ui_logo": "{{0}} Logo",
|
||||
"com_ui_manage": "Verwalten",
|
||||
"com_ui_max_tags": "Die maximale Anzahl ist {{0}}, es werden die neuesten Werte verwendet.",
|
||||
"com_ui_mcp_servers": "MCP Server",
|
||||
"com_ui_mention": "Erwähne einen Endpunkt, Assistenten oder eine Voreinstellung, um schnell dorthin zu wechseln",
|
||||
"com_ui_min_tags": "Es können nicht mehr Werte entfernt werden, mindestens {{0}} sind erforderlich.",
|
||||
"com_ui_misc": "Verschiedenes",
|
||||
"com_ui_model": "KI-Modell",
|
||||
"com_ui_model_parameters": "Modell-Parameter",
|
||||
"com_ui_more_info": "Mehr Infos",
|
||||
"com_ui_my_prompts": "Meine Prompts",
|
||||
"com_ui_name": "Name",
|
||||
"com_ui_new": "Neu",
|
||||
"com_ui_new_chat": "Neuer Chat",
|
||||
"com_ui_new_conversation_title": "Neuer Titel des Chats",
|
||||
"com_ui_next": "Weiter",
|
||||
"com_ui_no": "Nein",
|
||||
"com_ui_no_backup_codes": "Keine Backup-Codes verfügbar. Bitte erstelle neue.",
|
||||
"com_ui_no_bookmarks": "Du hast noch keine Lesezeichen. Klicke auf einen Chat und füge ein neues hinzu",
|
||||
"com_ui_no_category": "Keine Kategorie",
|
||||
"com_ui_no_changes": "Keine Änderungen zum Aktualisieren",
|
||||
"com_ui_no_data": "Leer – etwas fehlt noch",
|
||||
"com_ui_no_terms_content": "Keine Inhalte der Allgemeinen Geschäftsbedingungen zum Anzeigen",
|
||||
"com_ui_no_valid_items": "Leer - Text fehlt noch",
|
||||
"com_ui_none": "Keine",
|
||||
"com_ui_not_used": "Nicht verwendet",
|
||||
"com_ui_nothing_found": "Nichts gefunden",
|
||||
"com_ui_oauth": "OAuth",
|
||||
"com_ui_of": "von",
|
||||
"com_ui_off": "Aus",
|
||||
"com_ui_on": "An",
|
||||
"com_ui_openai": "OpenAI",
|
||||
"com_ui_page": "Seite",
|
||||
"com_ui_prev": "Zurück",
|
||||
"com_ui_preview": "Vorschau",
|
||||
"com_ui_privacy_policy": "Datenschutzerklärung",
|
||||
"com_ui_privacy_policy_url": "Datenschutzrichtlinie-URL",
|
||||
"com_ui_prompt": "Prompt",
|
||||
"com_ui_prompt_already_shared_to_all": "Dieser Prompt wird bereits mit allen Benutzern geteilt",
|
||||
"com_ui_prompt_name": "Prompt-Name",
|
||||
"com_ui_prompt_name_required": "Prompt-Name ist erforderlich",
|
||||
"com_ui_prompt_preview_not_shared": "Der Autor hat die Zusammenarbeit für diesen Prompt nicht erlaubt.",
|
||||
"com_ui_prompt_text": "Text",
|
||||
"com_ui_prompt_text_required": "Text ist erforderlich",
|
||||
"com_ui_prompt_update_error": "Beim Aktualisieren des Prompts ist ein Fehler aufgetreten",
|
||||
"com_ui_prompts": "Prompts",
|
||||
"com_ui_prompts_allow_create": "Erstellung von Prompts erlauben",
|
||||
"com_ui_prompts_allow_share_global": "Teilen von Prompts mit allen Benutzern erlauben",
|
||||
"com_ui_prompts_allow_use": "Verwendung von Prompts erlauben",
|
||||
"com_ui_provider": "Anbieter",
|
||||
"com_ui_read_aloud": "Vorlesen",
|
||||
"com_ui_redirecting_to_provider": "Weiterleitung zu {{0}}, einen Moment bitte...",
|
||||
"com_ui_refresh_link": "Link aktualisieren",
|
||||
"com_ui_regenerate": "Neu generieren",
|
||||
"com_ui_regenerate_backup": "Backup-Codes neu generieren",
|
||||
"com_ui_regenerating": "Generiere neu ...",
|
||||
"com_ui_region": "Region",
|
||||
"com_ui_rename": "Umbenennen",
|
||||
"com_ui_rename_conversation": "Chat umbenennen",
|
||||
"com_ui_rename_failed": "Chat konnte nicht umbenannt werden.",
|
||||
"com_ui_rename_prompt": "Prompt umbenennen",
|
||||
"com_ui_requires_auth": "Authentifizierung erforderlich",
|
||||
"com_ui_reset_var": "{{0}} zurücksetzen",
|
||||
"com_ui_result": "Ergebnis",
|
||||
"com_ui_revoke": "Widerrufen",
|
||||
"com_ui_revoke_info": "Benutzer-API-Keys widerrufen",
|
||||
"com_ui_revoke_key_confirm": "Bist du sicher, dass du diesen Schlüssel widerrufen möchtest?",
|
||||
"com_ui_revoke_key_endpoint": "API-Schlüssel für {{0}} widerrufen",
|
||||
"com_ui_revoke_keys": "Schlüssel widerrufen",
|
||||
"com_ui_revoke_keys_confirm": "Bist du sicher, dass du alle Schlüssel widerrufen möchtest?",
|
||||
"com_ui_role_select": "Rolle auswählen",
|
||||
"com_ui_roleplay": "Rollenspiel",
|
||||
"com_ui_run_code": "Code ausführen",
|
||||
"com_ui_run_code_error": "Bei der Ausführung des Codes ist ein Fehler aufgetreten",
|
||||
"com_ui_save": "Speichern",
|
||||
"com_ui_save_badge_changes": "Änderungen an Badges speichern?",
|
||||
"com_ui_save_submit": "Speichern & Absenden",
|
||||
"com_ui_saved": "Gespeichert!",
|
||||
"com_ui_schema": "Schema",
|
||||
"com_ui_scope": "Umfang",
|
||||
"com_ui_search": "Suche",
|
||||
"com_ui_secret_key": "Geheimschlüssel",
|
||||
"com_ui_select": "Auswählen",
|
||||
"com_ui_select_file": "Datei auswählen",
|
||||
"com_ui_select_model": "Ein KI-Modell auswählen",
|
||||
"com_ui_select_provider": "Wähle einen Anbieter",
|
||||
"com_ui_select_provider_first": "Wähle zuerst einen Anbieter",
|
||||
"com_ui_select_region": "Wähle eine Region",
|
||||
"com_ui_select_search_model": "KI-Modell nach Namen suchen",
|
||||
"com_ui_select_search_plugin": "Plugin nach Namen suchen",
|
||||
"com_ui_select_search_provider": "Provider nach Name suchen",
|
||||
"com_ui_select_search_region": "Region nach Name suchen",
|
||||
"com_ui_share": "Teilen",
|
||||
"com_ui_share_create_message": "Ihr Name und alle Nachrichten, die du nach dem Teilen hinzufügst, bleiben privat.",
|
||||
"com_ui_share_delete_error": "Beim Löschen des geteilten Links ist ein Fehler aufgetreten",
|
||||
"com_ui_share_error": "Beim Teilen des Chat-Links ist ein Fehler aufgetreten",
|
||||
"com_ui_share_form_description": "Leer - Text fehlt noch",
|
||||
"com_ui_share_link_to_chat": "Link zum Chat teilen",
|
||||
"com_ui_share_to_all_users": "Mit allen Benutzern teilen",
|
||||
"com_ui_share_update_message": "Ihr Name, benutzerdefinierte Anweisungen und alle Nachrichten, die du nach dem Teilen hinzufügen, bleiben privat.",
|
||||
"com_ui_share_var": "{{0}} teilen",
|
||||
"com_ui_shared_link_bulk_delete_success": "Geteilte Links erfolgreich gelöscht",
|
||||
"com_ui_shared_link_delete_success": "Geteilter Link erfolgreich gelöscht",
|
||||
"com_ui_shared_link_not_found": "Geteilter Link nicht gefunden",
|
||||
"com_ui_shared_prompts": "Geteilte Prompts",
|
||||
"com_ui_shop": "Einkaufen",
|
||||
"com_ui_show": "Anzeigen",
|
||||
"com_ui_show_all": "Alle anzeigen",
|
||||
"com_ui_show_qr": "QR-Code anzeigen",
|
||||
"com_ui_sign_in_to_domain": "Anmelden bei {{0}}",
|
||||
"com_ui_simple": "Einfach",
|
||||
"com_ui_size": "Größe",
|
||||
"com_ui_special_var_current_date": "Aktuelles Datum",
|
||||
"com_ui_special_var_current_datetime": "Aktuelles Datum & Uhrzeit",
|
||||
"com_ui_special_var_current_user": "Aktueller Nutzer",
|
||||
"com_ui_special_var_iso_datetime": "UTC ISO Datum/Zeit",
|
||||
"com_ui_special_variables": "Spezielle Variablen:",
|
||||
"com_ui_special_variables_more_info": "Du kannst spezielle Variablen aus den Dropdown-Menüs auswählen: `{{current_date}}` (heutiges Datum und Wochentag), `{{current_datetime}}` (offizielles Datum und Uhrzeit), `{{utc_iso_datetime}}` (UTC ISO Datum/Zeit) und `{{current_user}}` (dein Kontoname).",
|
||||
"com_ui_speech_while_submitting": "Spracheingabe nicht möglich während eine Antwort generiert wird",
|
||||
"com_ui_sr_actions_menu": "Aktionsmenü für \"{{0}}\" öffnen",
|
||||
"com_ui_stop": "Stopp",
|
||||
"com_ui_storage": "Speicher",
|
||||
"com_ui_submit": "Absenden",
|
||||
"com_ui_teach_or_explain": "Lernen",
|
||||
"com_ui_temporary": "Privater Chat",
|
||||
"com_ui_terms_and_conditions": "Allgemeine Geschäftsbedingungen",
|
||||
"com_ui_terms_of_service": "Nutzungsbedingungen",
|
||||
"com_ui_thinking": "Nachdenken...",
|
||||
"com_ui_thoughts": "Gedanken",
|
||||
"com_ui_token_exchange_method": "Token-Austauschmethode",
|
||||
"com_ui_token_url": "Token-URL",
|
||||
"com_ui_tools": "Werkzeuge",
|
||||
"com_ui_travel": "Reisen",
|
||||
"com_ui_unarchive": "Aus Archiv holen",
|
||||
"com_ui_unarchive_error": "Konversation konnte nicht aus dem Archiv geholt werden",
|
||||
"com_ui_unknown": "Unbekannt",
|
||||
"com_ui_untitled": "Unbenannt",
|
||||
"com_ui_update": "Aktualisieren",
|
||||
"com_ui_upload": "Hochladen",
|
||||
"com_ui_upload_code_files": "Hochladen für Code-Interpreter",
|
||||
"com_ui_upload_delay": "Das Hochladen von \"{{0}}\" dauert etwas länger. Bitte warte, während die Datei für den Abruf indexiert wird.",
|
||||
"com_ui_upload_error": "Beim Hochladen Ihrer Datei ist ein Fehler aufgetreten",
|
||||
"com_ui_upload_file_context": "Kontext der Datei hochladen",
|
||||
"com_ui_upload_file_search": "Hochladen für Dateisuche",
|
||||
"com_ui_upload_files": "Dateien hochladen",
|
||||
"com_ui_upload_image": "Ein Bild hochladen",
|
||||
"com_ui_upload_image_input": "Bild hochladen",
|
||||
"com_ui_upload_invalid": "Ungültige Datei zum Hochladen. Muss ein Bild sein und das Limit nicht überschreiten",
|
||||
"com_ui_upload_invalid_var": "Ungültige Datei zum Hochladen. Muss ein Bild sein und {{0}} MB nicht überschreiten",
|
||||
"com_ui_upload_ocr_text": "Hochladen als Text",
|
||||
"com_ui_upload_success": "Datei erfolgreich hochgeladen",
|
||||
"com_ui_upload_type": "Upload-Typ auswählen",
|
||||
"com_ui_use_2fa_code": "Stattdessen 2FA-Code verwenden",
|
||||
"com_ui_use_backup_code": "Stattdessen Backup-Code verwenden",
|
||||
"com_ui_use_micrphone": "Mikrofon verwenden",
|
||||
"com_ui_use_prompt": "Prompt verwenden",
|
||||
"com_ui_used": "Verwendet",
|
||||
"com_ui_variables": "Variablen",
|
||||
"com_ui_variables_info": "Verwende doppelte geschweifte Klammern in Ihrem Text, um Variablen zu erstellen, z.B. {{Beispielvariable}}, die du später beim Verwenden des Prompts ausfüllen kannst.",
|
||||
"com_ui_verify": "Überprüfen",
|
||||
"com_ui_version_var": "Version {{0}}",
|
||||
"com_ui_versions": "Versionen",
|
||||
"com_ui_view_source": "Quell-Chat anzeigen",
|
||||
"com_ui_web_search": "Web-Suche",
|
||||
"com_ui_web_search_api_subtitle": "Suche im Internet nach aktuellen Informationen",
|
||||
"com_ui_web_search_cohere_key": "Cohere API-Schlüssel eingeben",
|
||||
"com_ui_web_search_firecrawl_url": "Firecrawl API URL (optional)",
|
||||
"com_ui_web_search_jina_key": "Den Jina API Schlüssel eingeben",
|
||||
"com_ui_web_search_processing": "Ergebnisse verarbeiten",
|
||||
"com_ui_web_search_provider": "Anbieter der Suche",
|
||||
"com_ui_web_search_provider_serper": "Serper API",
|
||||
"com_ui_web_search_provider_serper_key": "Einen Serper API Schlüssel holen",
|
||||
"com_ui_web_search_reading": "Lesen der Suchergebnisse",
|
||||
"com_ui_web_search_reranker": "Reranker",
|
||||
"com_ui_web_search_reranker_cohere": "Cohere",
|
||||
"com_ui_web_search_reranker_cohere_key": "Einen Cohere API-Schlüssel holen",
|
||||
"com_ui_web_search_reranker_jina": "Jina AI",
|
||||
"com_ui_web_search_reranker_jina_key": "Einen Jina API Schlüssel holen",
|
||||
"com_ui_web_search_scraper": "Scraper",
|
||||
"com_ui_web_search_scraper_firecrawl": "Firecrawl API",
|
||||
"com_ui_web_search_scraper_firecrawl_key": "Einen Firecrawl API Schlüssel holen",
|
||||
"com_ui_web_searching": "Internetsuche läuft",
|
||||
"com_ui_web_searching_again": "Sucht erneut im Internet",
|
||||
"com_ui_weekend_morning": "Schönes Wochenende",
|
||||
"com_ui_write": "Schreiben",
|
||||
"com_ui_x_selected": "{{0}} ausgewählt",
|
||||
"com_ui_yes": "Ja",
|
||||
"com_ui_zoom": "Zoom",
|
||||
"com_user_message": "Du",
|
||||
"com_warning_resubmit_unsupported": "Das erneute Senden der KI-Nachricht wird für diesen Endpunkt nicht unterstützt."
|
||||
}
|
||||
1060
packages/client/src/locales/en/translation.json
Normal file
1060
packages/client/src/locales/en/translation.json
Normal file
File diff suppressed because it is too large
Load diff
757
packages/client/src/locales/es/translation.json
Normal file
757
packages/client/src/locales/es/translation.json
Normal file
|
|
@ -0,0 +1,757 @@
|
|||
{
|
||||
"chat_direction_left_to_right": "algo debería ir aquí pero está vacío",
|
||||
"chat_direction_right_to_left": "algo debería ir aquí pero está vacío",
|
||||
"com_a11y_ai_composing": "La IA está componiendo la respuesta",
|
||||
"com_a11y_end": "La IA ha finalizado su respuesta",
|
||||
"com_a11y_start": "La IA ha comenzado su respuesta",
|
||||
"com_agents_allow_editing": "Permitir que otros usuarios editen su agente",
|
||||
"com_agents_by_librechat": "por LibreChat",
|
||||
"com_agents_code_interpreter": "Cuando está habilitado, permite que su agente utilice la API del Intérprete de Código de LibreChat para ejecutar código generado de manera segura, incluyendo el procesamiento de archivos. Requiere una clave de API válida.",
|
||||
"com_agents_code_interpreter_title": "API del Intérprete de Código",
|
||||
"com_agents_create_error": "Hubo un error al crear su agente.",
|
||||
"com_agents_description_placeholder": "Opcional: Describa su Agente aquí",
|
||||
"com_agents_enable_file_search": "Habilitar búsqueda de archivos",
|
||||
"com_agents_file_context_disabled": "Es necesario crear el Agente antes de subir archivos.",
|
||||
"com_agents_file_search_disabled": "Es necesario crear el Agente antes de subir archivos para la Búsqueda de Archivos.",
|
||||
"com_agents_file_search_info": "Cuando está habilitado, se informará al agente sobre los nombres exactos de los archivos listados a continuación, permitiéndole recuperar el contexto relevante de estos archivos.",
|
||||
"com_agents_instructions_placeholder": "Las instrucciones del sistema que utiliza el agente",
|
||||
"com_agents_missing_provider_model": "Por favor, seleccione un proveedor y un modelo antes de crear un agente.",
|
||||
"com_agents_name_placeholder": "Opcional: El nombre del agente",
|
||||
"com_agents_no_access": "No tiene acceso para editar este agente",
|
||||
"com_agents_not_available": "Agente no disponible",
|
||||
"com_agents_search_name": "Buscar agentes por nombre",
|
||||
"com_agents_update_error": "Hubo un error al actualizar su agente.",
|
||||
"com_assistants_action_attempt": "El asistente quiere hablar con {{0}}",
|
||||
"com_assistants_actions": "Acciones",
|
||||
"com_assistants_actions_disabled": "Necesita crear un asistente antes de añadir acciones.",
|
||||
"com_assistants_actions_info": "Permita que su Asistente recupere información o realice acciones a través de API's",
|
||||
"com_assistants_add_actions": "Añadir Acciones",
|
||||
"com_assistants_add_tools": "Añadir Herramientas",
|
||||
"com_assistants_allow_sites_you_trust": "Solo permite sitios en los que confíes.",
|
||||
"com_assistants_append_date": "Añadir Fecha y Hora Actual",
|
||||
"com_assistants_append_date_tooltip": "Cuando está habilitado, la fecha y hora actual del cliente se adjuntarán a las instrucciones del sistema del asistente.",
|
||||
"com_assistants_attempt_info": "El asistente quiere enviar lo siguiente:",
|
||||
"com_assistants_available_actions": "Acciones Disponibles",
|
||||
"com_assistants_capabilities": "Capacidades",
|
||||
"com_assistants_code_interpreter": "Intérprete de Código",
|
||||
"com_assistants_code_interpreter_files": "Los siguientes archivos solo están disponibles para el Intérprete de Código:",
|
||||
"com_assistants_code_interpreter_info": "El Intérprete de Código permite al asistente escribir y ejecutar código. Esta herramienta puede procesar archivos con diversos formatos y datos, y generar archivos como gráficos.",
|
||||
"com_assistants_completed_action": "Hablé con {{0}}",
|
||||
"com_assistants_completed_function": "Ejecuté {{0}}",
|
||||
"com_assistants_conversation_starters": "Iniciadores de conversación",
|
||||
"com_assistants_conversation_starters_placeholder": "Ingrese un iniciador de conversación",
|
||||
"com_assistants_create_error": "Hubo un error al crear su asistente.",
|
||||
"com_assistants_create_success": "Creado con éxito",
|
||||
"com_assistants_delete_actions_error": "Hubo un error al eliminar la acción.",
|
||||
"com_assistants_delete_actions_success": "Acción eliminada del Asistente con éxito",
|
||||
"com_assistants_description_placeholder": "Opcional: Describa su Asistente aquí",
|
||||
"com_assistants_domain_info": "El Asistente envió esta información a {{0}}",
|
||||
"com_assistants_file_search": "Búsqueda de Archivos",
|
||||
"com_assistants_file_search_info": "Adjuntar almacenes vectoriales para la Búsqueda de Archivos aún no está soportado. Puede adjuntarlos desde el Área de Pruebas del Proveedor o adjuntar archivos a los mensajes para la búsqueda de archivos en una conversación específica.",
|
||||
"com_assistants_function_use": "El Asistente usó {{0}}",
|
||||
"com_assistants_image_vision": "Visión de Imagen",
|
||||
"com_assistants_instructions_placeholder": "Las instrucciones del sistema que utiliza el asistente",
|
||||
"com_assistants_knowledge": "Conocimiento",
|
||||
"com_assistants_knowledge_disabled": "El Asistente debe ser creado, y el Intérprete de Código o la Recuperación deben estar habilitados y guardados antes de subir archivos como Conocimiento.",
|
||||
"com_assistants_knowledge_info": "Si sube archivos en Conocimiento, las conversaciones con su Asistente pueden incluir el contenido de los archivos.",
|
||||
"com_assistants_max_starters_reached": "Se alcanzó el número máximo de iniciadores de conversación",
|
||||
"com_assistants_name_placeholder": "Opcional: El nombre del asistente",
|
||||
"com_assistants_non_retrieval_model": "La búsqueda de archivos no está habilitada en este modelo. Por favor, seleccione otro modelo.",
|
||||
"com_assistants_retrieval": "Recuperación",
|
||||
"com_assistants_running_action": "Ejecutando acción",
|
||||
"com_assistants_search_name": "Buscar asistentes por nombre",
|
||||
"com_assistants_update_actions_error": "Hubo un error al crear o actualizar la acción.",
|
||||
"com_assistants_update_actions_success": "Acción creada o actualizada con éxito",
|
||||
"com_assistants_update_error": "Hubo un error al actualizar su asistente.",
|
||||
"com_assistants_update_success": "Actualizado con éxito",
|
||||
"com_auth_already_have_account": "¿Ya tiene una cuenta?",
|
||||
"com_auth_apple_login": "Inicia con Apple",
|
||||
"com_auth_back_to_login": "Volver al inicio de sesión",
|
||||
"com_auth_click": "Haga clic",
|
||||
"com_auth_click_here": "Haz clic aquí",
|
||||
"com_auth_continue": "Continuar",
|
||||
"com_auth_create_account": "Crear su cuenta",
|
||||
"com_auth_discord_login": "Continuar con Discord",
|
||||
"com_auth_email": "Correo electrónico",
|
||||
"com_auth_email_address": "Dirección de correo electrónico",
|
||||
"com_auth_email_max_length": "El correo electrónico no debe tener más de 120 caracteres",
|
||||
"com_auth_email_min_length": "El correo electrónico debe tener al menos 6 caracteres",
|
||||
"com_auth_email_pattern": "Debe ingresar una dirección de correo electrónico válida",
|
||||
"com_auth_email_required": "Se requiere correo electrónico",
|
||||
"com_auth_email_resend_link": "Reenviar correo electrónico",
|
||||
"com_auth_email_resent_failed": "No se pudo reenviar el correo electrónico de verificación",
|
||||
"com_auth_email_resent_success": "El correo electrónico de verificación ha sido reenviado exitosamente",
|
||||
"com_auth_email_verification_failed": "La verificación del correo electrónico ha fallado",
|
||||
"com_auth_email_verification_failed_token_missing": "La verificación falló, falta el token de seguridad",
|
||||
"com_auth_email_verification_in_progress": "Verificando su correo electrónico, por favor espere",
|
||||
"com_auth_email_verification_invalid": "Verificación de correo electrónico no válida",
|
||||
"com_auth_email_verification_redirecting": "Redirigiendo en {{0}} segundos...",
|
||||
"com_auth_email_verification_resend_prompt": "¿No recibió el correo electrónico?",
|
||||
"com_auth_email_verification_success": "Correo electrónico verificado exitosamente",
|
||||
"com_auth_email_verifying_ellipsis": "Verificando...",
|
||||
"com_auth_error_create": "Hubo un error al intentar registrar su cuenta. Inténtelo de nuevo.",
|
||||
"com_auth_error_invalid_reset_token": "Este token de restablecimiento de contraseña ya no es válido.",
|
||||
"com_auth_error_login": "No se puede iniciar sesión con la información proporcionada. Verifique sus credenciales y vuelva a intentarlo.",
|
||||
"com_auth_error_login_ban": "Su cuenta ha sido bloqueada temporalmente debido a violaciones de nuestro servicio.",
|
||||
"com_auth_error_login_rl": "Demasiados intentos de inicio de sesión en un corto período de tiempo. Inténtelo de nuevo más tarde.",
|
||||
"com_auth_error_login_server": "Hubo un error interno del servidor. Espere unos momentos y vuelva a intentarlo.",
|
||||
"com_auth_error_login_unverified": "Su cuenta no ha sido verificada. Por favor, revise su correo electrónico para encontrar el enlace de verificación.",
|
||||
"com_auth_facebook_login": "Continuar con Facebook",
|
||||
"com_auth_full_name": "Nombre completo",
|
||||
"com_auth_github_login": "Continuar con Github",
|
||||
"com_auth_google_login": "Continuar con Google",
|
||||
"com_auth_here": "AQUÍ",
|
||||
"com_auth_login": "Iniciar sesión",
|
||||
"com_auth_login_with_new_password": "Ahora puede iniciar sesión con su nueva contraseña.",
|
||||
"com_auth_name_max_length": "El nombre debe tener menos de 80 caracteres",
|
||||
"com_auth_name_min_length": "El nombre debe tener al menos 3 caracteres",
|
||||
"com_auth_name_required": "Se requiere nombre",
|
||||
"com_auth_no_account": "¿No tiene una cuenta?",
|
||||
"com_auth_password": "Contraseña",
|
||||
"com_auth_password_confirm": "Confirmar contraseña",
|
||||
"com_auth_password_forgot": "¿Olvidó su contraseña?",
|
||||
"com_auth_password_max_length": "La contraseña debe tener menos de 128 caracteres",
|
||||
"com_auth_password_min_length": "La contraseña debe tener al menos 8 caracteres",
|
||||
"com_auth_password_not_match": "Las contraseñas no coinciden",
|
||||
"com_auth_password_required": "Se requiere contraseña",
|
||||
"com_auth_registration_success_generic": "Por favor, revise su correo electrónico para verificar su dirección.",
|
||||
"com_auth_registration_success_insecure": "Registro completado exitosamente.",
|
||||
"com_auth_reset_password": "Restablecer su contraseña",
|
||||
"com_auth_reset_password_if_email_exists": "Si existe una cuenta con ese correo electrónico, se le ha enviado un mensaje con instrucciones para restablecer su contraseña. Por favor, asegúrese de revisar su carpeta de correo no deseado.",
|
||||
"com_auth_reset_password_link_sent": "Correo electrónico enviado",
|
||||
"com_auth_reset_password_success": "Éxito al restablecer la contraseña",
|
||||
"com_auth_sign_in": "Iniciar sesión",
|
||||
"com_auth_sign_up": "Regístrese",
|
||||
"com_auth_submit_registration": "Enviar registro",
|
||||
"com_auth_to_reset_your_password": "para restablecer su contraseña.",
|
||||
"com_auth_to_try_again": "para intentar de nuevo.",
|
||||
"com_auth_two_factor": "Revisa tu aplicación preferida de OTP para obtener el código",
|
||||
"com_auth_username": "Nombre de usuario (opcional)",
|
||||
"com_auth_username_max_length": "El nombre de usuario debe tener menos de 20 caracteres",
|
||||
"com_auth_username_min_length": "El nombre de usuario debe tener al menos 2 caracteres",
|
||||
"com_auth_verify_your_identity": "Verifica Tu Identidad",
|
||||
"com_auth_welcome_back": "Bienvenido de nuevo",
|
||||
"com_click_to_download": "(haga clic aquí para descargar)",
|
||||
"com_download_expired": "Descarga expirada",
|
||||
"com_download_expires": "(haga clic aquí para descargar - expira el {{0}})",
|
||||
"com_endpoint": "Endpoint",
|
||||
"com_endpoint_agent": "Agente",
|
||||
"com_endpoint_agent_model": "Modelo de agente (Recomendado: GPT-3.5)",
|
||||
"com_endpoint_agent_placeholder": "Por favor seleccione un Agente",
|
||||
"com_endpoint_ai": "IA",
|
||||
"com_endpoint_anthropic_maxoutputtokens": "Número máximo de tokens que se pueden generar en la respuesta. Especifique un valor más bajo para respuestas más cortas y un valor más alto para respuestas más largas.",
|
||||
"com_endpoint_anthropic_prompt_cache": "El almacenamiento en caché de instrucciones permite reutilizar contextos o instrucciones extensas entre llamadas a la API, reduciendo costos y tiempo de respuesta",
|
||||
"com_endpoint_anthropic_temp": "Rango de 0 a 1. Utilice una temperatura más cercana a 0 para tareas analíticas/de opción múltiple y más cercana a 1 para tareas creativas y generativas. Recomendamos alterar esto o Top P, pero no ambos.",
|
||||
"com_endpoint_anthropic_topk": "Top-k cambia la forma en que el modelo selecciona tokens para la salida. Un top-k de 1 significa que el token seleccionado es el más probable entre todos los tokens en el vocabulario del modelo (también llamado decodificación codiciosa), mientras que un top-k de 3 significa que el siguiente token se selecciona entre los 3 tokens más probables (usando temperatura).",
|
||||
"com_endpoint_anthropic_topp": "Top-p cambia la forma en que el modelo selecciona tokens para la salida. Los tokens se seleccionan desde los más K (ver parámetro topK) probables hasta los menos probables hasta que la suma de sus probabilidades sea igual al valor top-p.",
|
||||
"com_endpoint_assistant": "Asistente",
|
||||
"com_endpoint_assistant_model": "Modelo de asistente",
|
||||
"com_endpoint_assistant_placeholder": "Por favor, seleccione un Asistente desde el panel lateral derecho",
|
||||
"com_endpoint_completion": "Finalización",
|
||||
"com_endpoint_completion_model": "Modelo de finalización (Recomendado: GPT-4)",
|
||||
"com_endpoint_config_click_here": "Haz clic aquí",
|
||||
"com_endpoint_config_google_api_info": "Para obtener tu clave de la API de Lenguaje Generativo (para Gemini),",
|
||||
"com_endpoint_config_google_api_key": "Clave API de Google",
|
||||
"com_endpoint_config_google_cloud_platform": "(de Google Cloud Platform)",
|
||||
"com_endpoint_config_google_gemini_api": "(API Gemini)",
|
||||
"com_endpoint_config_google_service_key": "Clave de cuenta de servicio de Google",
|
||||
"com_endpoint_config_key": "Establecer clave API",
|
||||
"com_endpoint_config_key_encryption": "Tu clave será encriptada y eliminada en",
|
||||
"com_endpoint_config_key_for": "Establecer clave API para",
|
||||
"com_endpoint_config_key_google_need_to": "Necesitas",
|
||||
"com_endpoint_config_key_google_service_account": "Crear una Cuenta de Servicio",
|
||||
"com_endpoint_config_key_google_vertex_ai": "Habilitar el Vertex AI",
|
||||
"com_endpoint_config_key_google_vertex_api": "API en Google Cloud, luego",
|
||||
"com_endpoint_config_key_google_vertex_api_role": "Asegúrate de hacer clic en 'Crear y continuar' para otorgar al menos el rol de 'Usuario de Vertex AI'. Por último, crea una clave JSON para importar aquí.",
|
||||
"com_endpoint_config_key_import_json_key": "Importar clave JSON de cuenta de servicio.",
|
||||
"com_endpoint_config_key_import_json_key_invalid": "Clave JSON de cuenta de servicio no válida, ¿importaste el archivo correcto?",
|
||||
"com_endpoint_config_key_import_json_key_success": "Clave JSON de cuenta de servicio importada correctamente",
|
||||
"com_endpoint_config_key_name": "Clave",
|
||||
"com_endpoint_config_key_never_expires": "Su clave nunca expirará",
|
||||
"com_endpoint_config_placeholder": "Establezca su clave en el menú del encabezado para chatear.",
|
||||
"com_endpoint_config_value": "Ingresar valor para",
|
||||
"com_endpoint_context": "Contexto",
|
||||
"com_endpoint_context_info": "La cantidad máxima de tokens que se pueden utilizar para el contexto. Utilice esto para controlar cuántos tokens se envían por solicitud. Si no se especifica, se utilizarán los valores predeterminados del sistema basados en el tamaño de contexto conocido de los modelos. Establecer valores más altos puede resultar en errores y/o un mayor costo de tokens.",
|
||||
"com_endpoint_context_tokens": "Máximo de tokens de contexto",
|
||||
"com_endpoint_custom_name": "Nombre personalizado",
|
||||
"com_endpoint_default": "predeterminado",
|
||||
"com_endpoint_default_blank": "predeterminado: en blanco",
|
||||
"com_endpoint_default_empty": "predeterminado: vacío",
|
||||
"com_endpoint_default_with_num": "predeterminado: {{0}}",
|
||||
"com_endpoint_deprecated": "Descontinuado",
|
||||
"com_endpoint_examples": " Configuraciones preestablecidas",
|
||||
"com_endpoint_export": "Exportar",
|
||||
"com_endpoint_export_share": "Exportar/Compartir",
|
||||
"com_endpoint_frequency_penalty": "Penalización de frecuencia",
|
||||
"com_endpoint_func_hover": "Habilitar el uso de Plugins como funciones de OpenAI",
|
||||
"com_endpoint_google_custom_name_placeholder": "Establecer un nombre personalizado para Google",
|
||||
"com_endpoint_google_maxoutputtokens": "Número máximo de tokens que se pueden generar en la respuesta. Especifique un valor más bajo para respuestas más cortas y un valor más alto para respuestas más largas.",
|
||||
"com_endpoint_google_temp": "Los valores más altos = más aleatorios, mientras que los valores más bajos = más enfocados y deterministas. Recomendamos alterar esto o Top P, pero no ambos.",
|
||||
"com_endpoint_google_topk": "Top-k cambia la forma en que el modelo selecciona tokens para la salida. Un top-k de 1 significa que el token seleccionado es el más probable entre todos los tokens en el vocabulario del modelo (también llamado decodificación codiciosa), mientras que un top-k de 3 significa que el siguiente token se selecciona entre los 3 tokens más probables (usando temperatura).",
|
||||
"com_endpoint_google_topp": "Top-p cambia la forma en que el modelo selecciona tokens para la salida. Los tokens se seleccionan desde los más K (ver parámetro topK) probables hasta los menos probables hasta que la suma de sus probabilidades sea igual al valor top-p.",
|
||||
"com_endpoint_instructions_assistants": "Anular instrucciones",
|
||||
"com_endpoint_instructions_assistants_placeholder": "Anula las instrucciones del asistente. Esto es útil para modificar el comportamiento por ejecución.",
|
||||
"com_endpoint_max_output_tokens": "Tokens de Salida Máximos",
|
||||
"com_endpoint_message": "Mensaje",
|
||||
"com_endpoint_message_new": "Mensaje {{0}}",
|
||||
"com_endpoint_message_not_appendable": "Edita tu mensaje o regénera.",
|
||||
"com_endpoint_my_preset": "Mi configuración preestablecida",
|
||||
"com_endpoint_no_presets": "Aún no hay configuraciones preestablecidas, utiliza el botón de configuración para crear una",
|
||||
"com_endpoint_open_menu": "Abrir menú",
|
||||
"com_endpoint_openai_custom_name_placeholder": "Establecer un nombre personalizado para ChatGPT",
|
||||
"com_endpoint_openai_detail": "La resolución para las solicitudes de Vision. \"Baja\" es más económica y rápida, \"Alta\" es más detallada y costosa, y \"Automática\" elegirá automáticamente entre las dos en función de la resolución de la imagen.",
|
||||
"com_endpoint_openai_freq": "Número entre -2.0 y 2.0. Los valores positivos penalizan los nuevos tokens basados en su frecuencia existente en el texto hasta el momento, disminuyendo la probabilidad del modelo de repetir la misma línea textualmente.",
|
||||
"com_endpoint_openai_max": "Los tokens máximos a generar. La longitud total de los tokens de entrada y los tokens generados está limitada por la longitud del contexto del modelo.",
|
||||
"com_endpoint_openai_max_tokens": "Campo opcional `max_tokens`, que representa el número máximo de tokens que se pueden generar en la finalización del chat.\n\nLa longitud total de los tokens de entrada y los tokens generados está limitada por la longitud del contexto del modelo. Puede experimentar errores si este número excede los tokens máximos de contexto.",
|
||||
"com_endpoint_openai_pres": "Número entre -2.0 y 2.0. Los valores positivos penalizan los nuevos tokens basados en si aparecen o no en el texto hasta el momento, aumentando la probabilidad del modelo de hablar sobre nuevos temas.",
|
||||
"com_endpoint_openai_prompt_prefix_placeholder": "Establecer instrucciones personalizadas para incluir en el Mensaje del sistema. Predeterminado: ninguno",
|
||||
"com_endpoint_openai_resend": "Reenviar todas las imágenes adjuntas previamente. Nota: esto puede aumentar significativamente el costo de tokens y puede experimentar errores con muchos archivos adjuntos de imágenes.",
|
||||
"com_endpoint_openai_resend_files": "Reenviar todos los archivos adjuntos anteriormente. Nota: esto aumentará el costo de tokens y puede experimentar errores con muchos archivos adjuntos.",
|
||||
"com_endpoint_openai_stop": "Hasta 4 secuencias donde la API dejará de generar más tokens.",
|
||||
"com_endpoint_openai_temp": "Los valores más altos = más aleatorios, mientras que los valores más bajos = más enfocados y deterministas. Recomendamos alterar esto o Top P, pero no ambos.",
|
||||
"com_endpoint_openai_topp": "Una alternativa al muestreo con temperatura, llamada muestreo de núcleo, donde el modelo considera los resultados de los tokens con la masa de probabilidad superior al top_p. Entonces, 0.1 significa que solo se consideran los tokens que comprenden la masa de probabilidad superior al 10%. Recomendamos alterar esto o la temperatura, pero no ambos.",
|
||||
"com_endpoint_output": "Salida",
|
||||
"com_endpoint_plug_image_detail": "Detalle de imagen",
|
||||
"com_endpoint_plug_resend_files": "Reenviar archivos",
|
||||
"com_endpoint_plug_set_custom_instructions_for_gpt_placeholder": "Establecer instrucciones personalizadas para incluir en el Mensaje del sistema. Predeterminado: ninguno",
|
||||
"com_endpoint_plug_skip_completion": "Omitir finalización",
|
||||
"com_endpoint_plug_use_functions": "Utilizar funciones",
|
||||
"com_endpoint_presence_penalty": "Penalización de presencia",
|
||||
"com_endpoint_preset": "configuración preestablecida",
|
||||
"com_endpoint_preset_default": "es ahora la configuración preestablecida predeterminada.",
|
||||
"com_endpoint_preset_default_item": "Predeterminado:",
|
||||
"com_endpoint_preset_default_none": "No hay configuración preestablecida predeterminada activa.",
|
||||
"com_endpoint_preset_default_removed": "ya no es la configuración preestablecida predeterminada.",
|
||||
"com_endpoint_preset_delete_confirm": "¿Estás seguro de que quieres eliminar esta configuración preestablecida?",
|
||||
"com_endpoint_preset_delete_error": "Hubo un error al eliminar tu configuración preestablecida. Por favor, inténtalo de nuevo.",
|
||||
"com_endpoint_preset_import": "¡Configuración preestablecida importada!",
|
||||
"com_endpoint_preset_import_error": "Hubo un error al importar tu configuración preestablecida. Por favor, inténtalo de nuevo.",
|
||||
"com_endpoint_preset_name": "Nombre de la configuración preestablecida",
|
||||
"com_endpoint_preset_save_error": "Hubo un error al guardar tu configuración preestablecida. Por favor, inténtalo de nuevo.",
|
||||
"com_endpoint_preset_selected": "¡Configuración preestablecida activa!",
|
||||
"com_endpoint_preset_selected_title": "¡Activo!",
|
||||
"com_endpoint_preset_title": "Configuración preestablecida",
|
||||
"com_endpoint_presets": "configuraciones preestablecidas",
|
||||
"com_endpoint_presets_clear_warning": "¿Estás seguro de que quieres borrar todas las configuraciones preestablecidas? Esto es irreversible.",
|
||||
"com_endpoint_prompt_cache": "Utilizar caché de instrucciones",
|
||||
"com_endpoint_prompt_prefix": "Instrucciones personalizadas",
|
||||
"com_endpoint_prompt_prefix_assistants": "Instrucciones adicionales",
|
||||
"com_endpoint_prompt_prefix_assistants_placeholder": "Establecer instrucciones o contexto adicionales además de las instrucciones principales del Asistente. Se ignora si está vacío.",
|
||||
"com_endpoint_prompt_prefix_placeholder": "Configurar instrucciones personalizadas o contexto. Se ignora si está vacío.",
|
||||
"com_endpoint_reasoning_effort": "Esfuerzo de Razonamiento",
|
||||
"com_endpoint_save_as_preset": "Guardar como configuración preestablecida",
|
||||
"com_endpoint_search": "Buscar punto de conexión por nombre",
|
||||
"com_endpoint_search_models": "Buscar modelos...",
|
||||
"com_endpoint_search_var": "Buscar {{0}}...",
|
||||
"com_endpoint_set_custom_name": "Establece un nombre personalizado, en caso de que puedas encontrar esta configuración preestablecida",
|
||||
"com_endpoint_skip_hover": "Habilitar omitir el paso de finalización, que revisa la respuesta final y los pasos generados",
|
||||
"com_endpoint_stop": "Secuencias de detención",
|
||||
"com_endpoint_stop_placeholder": "Separe los valores presionando `Intro`",
|
||||
"com_endpoint_temperature": "Temperatura",
|
||||
"com_endpoint_thinking": "Pensando",
|
||||
"com_endpoint_top_k": "Top K",
|
||||
"com_endpoint_top_p": "Top P",
|
||||
"com_endpoint_use_active_assistant": "Utilizar asistente activo",
|
||||
"com_error_expired_user_key": "La clave proporcionada para {{0}} expiró en {{1}}. Por favor, proporcione una clave nueva e inténtelo de nuevo.",
|
||||
"com_error_files_dupe": "Se detectó un archivo duplicado",
|
||||
"com_error_files_empty": "No se permiten archivos vacíos.",
|
||||
"com_error_files_process": "Se produjo un error al procesar el archivo.",
|
||||
"com_error_files_unsupported_capability": "No hay capacidades habilitadas que admitan este tipo de archivo.",
|
||||
"com_error_files_upload": "Se produjo un error durante la subida del archivo",
|
||||
"com_error_files_upload_canceled": "La solicitud de carga del archivo fue cancelada. Nota: es posible que la carga del archivo aún esté en proceso y necesite ser eliminada manualmente.",
|
||||
"com_error_files_validation": "Se produjo un error durante la validación del archivo.",
|
||||
"com_error_input_length": "El conteo de tokens del último mensaje es demasiado largo y excede el límite permitido ({{0}}). Por favor, acorte su mensaje, ajuste el tamaño máximo del contexto desde los parámetros de conversación, o bifurque la conversación para continuar.",
|
||||
"com_error_invalid_agent_provider": "El proveedor \"{{0}}\" no está disponible para el uso con Agentes. Por favor, ve a las configuraciones de tu agente y selecciona un proveedor que se encuentre disponible.",
|
||||
"com_error_invalid_user_key": "Clave proporcionada no válida. Por favor proporcione una clave válida e inténtelo de nuevo.",
|
||||
"com_error_moderation": "Parece que el contenido enviado ha sido marcado por nuestro sistema de moderación por no estar alineado con nuestras pautas comunitarias. No podemos proceder con este tema específico. Si tiene alguna otra pregunta o tema que le gustaría explorar, por favor edite su mensaje o cree una nueva conversación.",
|
||||
"com_error_no_base_url": "No se encontró URL base. Por favor proporcione una y vuelva a intentarlo.",
|
||||
"com_error_no_user_key": "No se encontró ninguna clave. Por favor, proporcione una clave e inténtelo de nuevo.",
|
||||
"com_files_filter": "Filtrar archivos...",
|
||||
"com_files_no_results": "Sin resultados.",
|
||||
"com_files_number_selected": "{{0}} de {{1}} archivo(s) seleccionado(s)",
|
||||
"com_generated_files": "Archivos generados:",
|
||||
"com_hide_examples": "Ocultar ejemplos",
|
||||
"com_nav_2fa": "Autenticación en dos pasos",
|
||||
"com_nav_account_settings": "Configuración de la cuenta",
|
||||
"com_nav_always_make_prod": "Convertir siempre las nuevas versiones en producción",
|
||||
"com_nav_archive_created_at": "CreadoEn",
|
||||
"com_nav_archive_name": "Nombre",
|
||||
"com_nav_archived_chats": "Conversaciones archivadas",
|
||||
"com_nav_at_command": "Comando @",
|
||||
"com_nav_at_command_description": "Alternar comando \"@\" para cambiar entre puntos de conexión, modelos, ajustes predefinidos, etc.",
|
||||
"com_nav_audio_play_error": "Error al reproducir el audio: {{0}}",
|
||||
"com_nav_audio_process_error": "Error al procesar el audio: {{0}}",
|
||||
"com_nav_auto_scroll": "Desplazamiento automático al más reciente al abrir",
|
||||
"com_nav_auto_send_prompts": "Envío automático de mensajes",
|
||||
"com_nav_auto_send_text": "Envío automático de texto",
|
||||
"com_nav_auto_send_text_disabled": "Establecer -1 para deshabilitar",
|
||||
"com_nav_auto_transcribe_audio": "Transcribir audio automáticamente",
|
||||
"com_nav_automatic_playback": "Reproducción automática del último mensaje",
|
||||
"com_nav_balance": "Balance",
|
||||
"com_nav_browser": "Navegador",
|
||||
"com_nav_change_picture": "Cambiar imagen",
|
||||
"com_nav_chat_commands": "Comandos de chat",
|
||||
"com_nav_chat_commands_info": "Estos comandos se activan al escribir caracteres específicos al inicio de su mensaje. Cada comando se activa mediante su prefijo designado. Puede desactivarlos si utiliza frecuentemente estos caracteres para comenzar mensajes.",
|
||||
"com_nav_chat_direction": "Dirección del chat",
|
||||
"com_nav_clear_all_chats": "Borrar todos los chats",
|
||||
"com_nav_clear_cache_confirm_message": "¿Está seguro de que desea borrar el caché?",
|
||||
"com_nav_clear_conversation": "Borrar conversaciones",
|
||||
"com_nav_clear_conversation_confirm_message": "¿Estás seguro de que quieres borrar todas las conversaciones? Esta acción es irreversible.",
|
||||
"com_nav_close_sidebar": "Cerrar barra lateral",
|
||||
"com_nav_commands": "Comandos",
|
||||
"com_nav_confirm_clear": "Confirmar borrado",
|
||||
"com_nav_conversation_mode": "Modo de conversación",
|
||||
"com_nav_convo_menu_options": "Opciones del menú de conversación",
|
||||
"com_nav_db_sensitivity": "Sensibilidad en decibelios",
|
||||
"com_nav_delete_account": "Eliminar cuenta",
|
||||
"com_nav_delete_account_button": "Eliminar mi cuenta permanentemente",
|
||||
"com_nav_delete_account_confirm": "Eliminar cuenta - ¿Está seguro?",
|
||||
"com_nav_delete_account_email_placeholder": "Por favor ingrese el correo electrónico de su cuenta",
|
||||
"com_nav_delete_cache_storage": "Eliminar almacenamiento caché de TTS",
|
||||
"com_nav_delete_data_info": "Se eliminarán todos sus datos",
|
||||
"com_nav_delete_warning": "ADVERTENCIA: Esta acción eliminará su cuenta de forma permanente.",
|
||||
"com_nav_edit_chat_badges": "Editar Insignias de Chat",
|
||||
"com_nav_enable_cache_tts": "Habilitar caché de texto a voz",
|
||||
"com_nav_enable_cloud_browser_voice": "Usar voces basadas en la nube",
|
||||
"com_nav_enabled": "Habilitado",
|
||||
"com_nav_engine": "Motor",
|
||||
"com_nav_enter_to_send": "Enviar mensaje con la tecla Enter",
|
||||
"com_nav_export": "Exportar",
|
||||
"com_nav_export_all_message_branches": "Exportar todas las ramas de mensajes",
|
||||
"com_nav_export_conversation": "Exportar conversación",
|
||||
"com_nav_export_filename": "Nombre de archivo",
|
||||
"com_nav_export_filename_placeholder": "Establecer el nombre de archivo",
|
||||
"com_nav_export_include_endpoint_options": "Incluir opciones de punto final",
|
||||
"com_nav_export_recursive": "Recursivo",
|
||||
"com_nav_export_recursive_or_sequential": "¿Recursivo o secuencial?",
|
||||
"com_nav_export_type": "Tipo",
|
||||
"com_nav_external": "Externo",
|
||||
"com_nav_font_size": "Tamaño de fuente",
|
||||
"com_nav_font_size_base": "Mediano",
|
||||
"com_nav_font_size_lg": "Grande",
|
||||
"com_nav_font_size_sm": "Pequeño",
|
||||
"com_nav_font_size_xl": "Extra grande",
|
||||
"com_nav_font_size_xs": "Extra pequeño",
|
||||
"com_nav_help_faq": "Ayuda y preguntas frecuentes",
|
||||
"com_nav_hide_panel": "Ocultar el panel lateral derecho",
|
||||
"com_nav_info_code_artifacts": "Permite mostrar artefactos de código experimentales junto al chat",
|
||||
"com_nav_info_code_artifacts_agent": "Habilita el uso de artefactos de código para este agente. De forma predeterminada, instrucciones adicionales específicas para el uso de artefactos son añadidas, a menos que \"Modo personalizado de Prompt\" esté habilitado.",
|
||||
"com_nav_info_custom_prompt_mode": "Cuando está habilitado, no se incluirá el mensaje del sistema predeterminado para artefactos. En este modo, todas las instrucciones para generar artefactos deberán proporcionarse manualmente.",
|
||||
"com_nav_info_enter_to_send": "Cuando está habilitado, al presionar `ENTER` se enviará su mensaje. Cuando está deshabilitado, al presionar Enter se agregará una nueva línea, y necesitará presionar `CTRL + ENTER` / `⌘ + ENTER` para enviar su mensaje.",
|
||||
"com_nav_info_fork_change_default": "\"Mostrar únicamente mensajes visibles\" incluye solo la ruta directa hacia el mensaje seleccionado. \"Incluir ramas relacionadas\" añade las ramificaciones a lo largo de la ruta. \"Incluir todo desde/hacia aquí\" incluye todos los mensajes y ramificaciones conectados.",
|
||||
"com_nav_info_fork_split_target_setting": "Cuando está habilitado, la bifurcación comenzará desde el mensaje objetivo hasta el último mensaje de la conversación, según el comportamiento seleccionado.",
|
||||
"com_nav_info_include_shadcnui": "Cuando está habilitado, se incluirán instrucciones para el uso de los componentes de shadcn/ui. shadcn/ui es una colección de componentes reutilizables construidos utilizando Radix UI y Tailwind CSS. Nota: estas son instrucciones extensas, debe habilitarlas solo si es importante para usted informar al LLM sobre las importaciones y componentes correctos. Para más información sobre estos componentes, visite: https://ui.shadcn.com/",
|
||||
"com_nav_info_latex_parsing": "Cuando está habilitado, el código LaTeX en los mensajes se mostrará como ecuaciones matemáticas. Si usted no necesita el renderizado de LaTeX, puede deshabilitarlo para mejorar el rendimiento.",
|
||||
"com_nav_info_save_badges_state": "Al habilitar esta opción, se guardará el estado de las insignias del chat. Esto significa que si crea un nuevo chat, las insignias permanecerán en el mismo estado que el chat anterior. Si desactiva esta opción, las insignias se restablecerán a su estado predeterminado cada vez que cree un nuevo chat.",
|
||||
"com_nav_info_save_draft": "Cuando está habilitado, el texto y los archivos adjuntos que ingrese en el formulario de chat se guardarán automáticamente como borradores en su dispositivo local. Estos borradores estarán disponibles incluso si recarga la página o cambia a una conversación diferente. Los borradores se almacenan localmente en su dispositivo y se eliminan una vez que el mensaje es enviado.",
|
||||
"com_nav_info_user_name_display": "Cuando está habilitado, se mostrará su nombre de usuario sobre cada mensaje que envíe. Cuando está deshabilitado, solo verá \"Usted\" sobre sus mensajes.",
|
||||
"com_nav_lang_arabic": "العربية",
|
||||
"com_nav_lang_auto": "Detección automática",
|
||||
"com_nav_lang_brazilian_portuguese": "Português Brasileiro",
|
||||
"com_nav_lang_chinese": "中文",
|
||||
"com_nav_lang_dutch": "Nederlands",
|
||||
"com_nav_lang_english": "English",
|
||||
"com_nav_lang_estonian": "Eesti keel",
|
||||
"com_nav_lang_finnish": "Suomi",
|
||||
"com_nav_lang_french": "Français ",
|
||||
"com_nav_lang_georgian": "ქართული",
|
||||
"com_nav_lang_german": "Deutsch",
|
||||
"com_nav_lang_hebrew": "עברית",
|
||||
"com_nav_lang_indonesia": "Indonesia",
|
||||
"com_nav_lang_italian": "Italiano",
|
||||
"com_nav_lang_japanese": "日本語",
|
||||
"com_nav_lang_korean": "한국어",
|
||||
"com_nav_lang_polish": "Polski",
|
||||
"com_nav_lang_portuguese": "Português",
|
||||
"com_nav_lang_russian": "Русский",
|
||||
"com_nav_lang_spanish": "Español",
|
||||
"com_nav_lang_swedish": "Svenska",
|
||||
"com_nav_lang_thai": "ไทย",
|
||||
"com_nav_lang_traditional_chinese": "繁體中文",
|
||||
"com_nav_lang_turkish": "Türkçe",
|
||||
"com_nav_lang_vietnamese": "Tiếng Việt",
|
||||
"com_nav_language": "Idioma",
|
||||
"com_nav_latex_parsing": "Analizar LaTeX en los mensajes (puede afectar el rendimiento)",
|
||||
"com_nav_log_out": "Cerrar sesión",
|
||||
"com_nav_long_audio_warning": "Los textos más extensos tomarán más tiempo en procesarse.",
|
||||
"com_nav_maximize_chat_space": "Maximizar espacio del chat",
|
||||
"com_nav_modular_chat": "Habilitar el cambio de puntos finales en medio de una conversación",
|
||||
"com_nav_my_files": "Mis archivos",
|
||||
"com_nav_not_supported": "No soportado",
|
||||
"com_nav_open_sidebar": "Abrir barra lateral",
|
||||
"com_nav_playback_rate": "Velocidad de reproducción de audio",
|
||||
"com_nav_plugin_auth_error": "Hubo un error al intentar autenticar este plugin. Por favor, inténtalo de nuevo.",
|
||||
"com_nav_plugin_install": "Instalar",
|
||||
"com_nav_plugin_search": "Buscar plugins",
|
||||
"com_nav_plugin_store": "Tienda de plugins",
|
||||
"com_nav_plugin_uninstall": "Desinstalar",
|
||||
"com_nav_plus_command": "+ Comando",
|
||||
"com_nav_plus_command_description": "Alternar comando ' + ' para agregar una configuración de respuestas múltiples",
|
||||
"com_nav_profile_picture": "Imagen de perfil",
|
||||
"com_nav_save_drafts": "Guardar borradores localmente",
|
||||
"com_nav_search_placeholder": "Buscar mensajes",
|
||||
"com_nav_send_message": "Enviar mensaje",
|
||||
"com_nav_setting_account": "Cuenta",
|
||||
"com_nav_setting_beta": "Funciones beta",
|
||||
"com_nav_setting_chat": "Configuración del chat",
|
||||
"com_nav_setting_data": "Controles de datos",
|
||||
"com_nav_setting_general": "General",
|
||||
"com_nav_setting_speech": "Voz y habla",
|
||||
"com_nav_settings": "Configuración",
|
||||
"com_nav_shared_links": "Links Compartidos",
|
||||
"com_nav_show_code": "Mostrar siempre el código cuando se use el intérprete de código",
|
||||
"com_nav_slash_command": "Comando /",
|
||||
"com_nav_slash_command_description": "Alternar comando '/' para seleccionar un mensaje predefinido mediante el teclado",
|
||||
"com_nav_speech_to_text": "Voz a texto",
|
||||
"com_nav_stop_generating": "Detener generación",
|
||||
"com_nav_text_to_speech": "Texto a voz",
|
||||
"com_nav_theme": "Tema",
|
||||
"com_nav_theme_dark": "Oscuro",
|
||||
"com_nav_theme_light": "Claro",
|
||||
"com_nav_theme_system": "Sistema",
|
||||
"com_nav_tool_dialog": "Herramientas del asistente",
|
||||
"com_nav_tool_dialog_agents": "Herramientas del agente",
|
||||
"com_nav_tool_dialog_description": "El asistente debe guardarse para que las selecciones de herramientas persistan.",
|
||||
"com_nav_tool_remove": "Eliminar",
|
||||
"com_nav_tool_search": "Buscar herramientas",
|
||||
"com_nav_user": "USUARIO",
|
||||
"com_nav_user_msg_markdown": "Mostrar mensajes de usuario en formato markdown",
|
||||
"com_nav_user_name_display": "Mostrar nombre de usuario en los mensajes",
|
||||
"com_nav_voice_select": "Voz",
|
||||
"com_show_agent_settings": "Mostrar configuración del agente",
|
||||
"com_show_completion_settings": "Mostrar configuración de completado",
|
||||
"com_show_examples": "Mostrar ejemplos",
|
||||
"com_sidepanel_agent_builder": "Constructor de Agentes",
|
||||
"com_sidepanel_assistant_builder": "Creador de Asistentes",
|
||||
"com_sidepanel_attach_files": "Adjuntar Archivos",
|
||||
"com_sidepanel_conversation_tags": "Marcadores",
|
||||
"com_sidepanel_hide_panel": "Ocultar Panel",
|
||||
"com_sidepanel_manage_files": "Administrar Archivos",
|
||||
"com_sidepanel_parameters": "Parámetros",
|
||||
"com_ui_2fa_disable": "Deshabilitar 2FA",
|
||||
"com_ui_2fa_disable_error": "Hubo en error deshabilitando la autenticación en dos pasos",
|
||||
"com_ui_2fa_enable": "Activa 2FA",
|
||||
"com_ui_2fa_enabled": "2FA ha sido activada",
|
||||
"com_ui_accept": "Acepto",
|
||||
"com_ui_add": "Agregar",
|
||||
"com_ui_add_model_preset": "Agregar un modelo o configuración preestablecida para una respuesta adicional",
|
||||
"com_ui_add_multi_conversation": "Agregar múltiples conversaciones",
|
||||
"com_ui_admin": "Administrador",
|
||||
"com_ui_admin_access_warning": "Deshabilitar el acceso de Administrador a esta función puede causar problemas inesperados en la interfaz que requieran actualizar la página. Si se guarda este cambio, la única forma de revertirlo es mediante la configuración de interfaz en el archivo librechat.yaml, lo cual afectará a todos los roles.",
|
||||
"com_ui_admin_settings": "Configuración de Administrador",
|
||||
"com_ui_advanced": "Avanzado",
|
||||
"com_ui_advanced_settings": "Configuración avanzada",
|
||||
"com_ui_agent": "Agente",
|
||||
"com_ui_agent_delete_error": "Se produjo un error al eliminar el agente",
|
||||
"com_ui_agent_deleted": "Asistente eliminado exitosamente",
|
||||
"com_ui_agent_duplicate_error": "Se produjo un error al duplicar el asistente",
|
||||
"com_ui_agent_duplicated": "Agente duplicado exitosamente",
|
||||
"com_ui_agent_editing_allowed": "Otros usuarios ya pueden editar este agente",
|
||||
"com_ui_agent_var": "{{0}} agente",
|
||||
"com_ui_agents": "Agentes",
|
||||
"com_ui_agents_allow_create": "Permitir la creación de Agentes",
|
||||
"com_ui_agents_allow_share_global": "Permitir compartir Agentes con todos los usuarios",
|
||||
"com_ui_agents_allow_use": "Permitir el uso de Agentes",
|
||||
"com_ui_all": "todas",
|
||||
"com_ui_all_proper": "Todos",
|
||||
"com_ui_analyzing": "Analizando",
|
||||
"com_ui_analyzing_finished": "Acabando el análisis",
|
||||
"com_ui_archive": "Archivar",
|
||||
"com_ui_archive_error": "Error al archivar la conversación",
|
||||
"com_ui_artifact_click": "Haga clic para abrir",
|
||||
"com_ui_artifacts": "Artefactos",
|
||||
"com_ui_artifacts_toggle": "Alternar Interfaz de Artefactos",
|
||||
"com_ui_ascending": "Asc",
|
||||
"com_ui_assistant": "Asistente",
|
||||
"com_ui_assistant_delete_error": "Hubo un error al eliminar el asistente",
|
||||
"com_ui_assistant_deleted": "Asistente eliminado con éxito",
|
||||
"com_ui_assistants": "Asistentes",
|
||||
"com_ui_assistants_output": "Salida de Asistentes",
|
||||
"com_ui_attach_error": "No se puede adjuntar el archivo. Cree o seleccione una conversación, o intente actualizar la página.",
|
||||
"com_ui_attach_error_openai": "No se pueden adjuntar archivos del Asistente a otros puntos de conexión",
|
||||
"com_ui_attach_error_size": "Se excedió el límite de tamaño de archivo para el endpoint:",
|
||||
"com_ui_attach_error_type": "Tipo de archivo no admitido para el endpoint:",
|
||||
"com_ui_attach_remove": "Eliminar archivo",
|
||||
"com_ui_attach_warn_endpoint": "Es posible que los archivos no compatibles con la herramienta sean ignorados",
|
||||
"com_ui_attachment": "Adjunto",
|
||||
"com_ui_authentication": "Autenticación",
|
||||
"com_ui_avatar": "Avatar",
|
||||
"com_ui_back_to_chat": "Volver al Chat",
|
||||
"com_ui_back_to_prompts": "Volver a Prompts",
|
||||
"com_ui_bookmark_delete_confirm": "¿Está seguro de que desea eliminar este marcador?",
|
||||
"com_ui_bookmarks": "Marcadores",
|
||||
"com_ui_bookmarks_add": "Agregar Marcadores",
|
||||
"com_ui_bookmarks_add_to_conversation": "Agregar a la conversación actual",
|
||||
"com_ui_bookmarks_count": "Conteo",
|
||||
"com_ui_bookmarks_create_error": "Hubo un error al crear el marcador",
|
||||
"com_ui_bookmarks_create_exists": "Este marcador ya existe",
|
||||
"com_ui_bookmarks_create_success": "Marcador creado con éxito",
|
||||
"com_ui_bookmarks_delete": "Eliminar Marcador",
|
||||
"com_ui_bookmarks_delete_error": "Hubo un error al eliminar el marcador",
|
||||
"com_ui_bookmarks_delete_success": "Marcador eliminado con éxito",
|
||||
"com_ui_bookmarks_description": "Descripción",
|
||||
"com_ui_bookmarks_edit": "Editar Marcador",
|
||||
"com_ui_bookmarks_filter": "Filtrar marcadores...",
|
||||
"com_ui_bookmarks_new": "Nuevo marcador",
|
||||
"com_ui_bookmarks_title": "Título",
|
||||
"com_ui_bookmarks_update_error": "Hubo un error al actualizar el marcador",
|
||||
"com_ui_bookmarks_update_success": "Marcador actualizado con éxito",
|
||||
"com_ui_cancel": "Cancelar",
|
||||
"com_ui_chat": "Chat",
|
||||
"com_ui_chat_history": "Historial de Chat",
|
||||
"com_ui_clear": "Limpiar",
|
||||
"com_ui_clear_all": "Limpiar todo",
|
||||
"com_ui_close": "Cerrar",
|
||||
"com_ui_close_menu": "Cerrar menú",
|
||||
"com_ui_code": "Código",
|
||||
"com_ui_collapse_chat": "Contraer Chat",
|
||||
"com_ui_command_placeholder": "Opcional: Ingrese un comando para el prompt o se utilizará el nombre",
|
||||
"com_ui_command_usage_placeholder": "Seleccione un Prompt por comando o nombre",
|
||||
"com_ui_confirm_action": "Confirmar Acción",
|
||||
"com_ui_confirm_change": "Confirmar cambio",
|
||||
"com_ui_context": "Contexto",
|
||||
"com_ui_continue": "Continuar",
|
||||
"com_ui_controls": "Controles",
|
||||
"com_ui_copied": "¡Copiado!",
|
||||
"com_ui_copied_to_clipboard": "Copiado al portapapeles",
|
||||
"com_ui_copy_code": "Copiar código",
|
||||
"com_ui_copy_link": "Copiar enlace",
|
||||
"com_ui_copy_to_clipboard": "Copiar al portapapeles",
|
||||
"com_ui_create": "Crear",
|
||||
"com_ui_create_link": "Crear enlace",
|
||||
"com_ui_create_prompt": "Crear Prompt",
|
||||
"com_ui_custom_prompt_mode": "Modo de Prompt Personalizado",
|
||||
"com_ui_dashboard": "Panel de control",
|
||||
"com_ui_date": "Fecha",
|
||||
"com_ui_date_april": "Abril",
|
||||
"com_ui_date_august": "Agosto",
|
||||
"com_ui_date_december": "Diciembre",
|
||||
"com_ui_date_february": "Febrero",
|
||||
"com_ui_date_january": "Enero",
|
||||
"com_ui_date_july": "Julio",
|
||||
"com_ui_date_june": "Junio",
|
||||
"com_ui_date_march": "Marzo",
|
||||
"com_ui_date_may": "Mayo",
|
||||
"com_ui_date_november": "Noviembre",
|
||||
"com_ui_date_october": "Octubre",
|
||||
"com_ui_date_previous_30_days": "Últimos 30 días",
|
||||
"com_ui_date_previous_7_days": "Últimos 7 días",
|
||||
"com_ui_date_september": "Septiembre",
|
||||
"com_ui_date_today": "Hoy",
|
||||
"com_ui_date_yesterday": "Ayer",
|
||||
"com_ui_decline": "No acepto",
|
||||
"com_ui_delete": "Eliminar",
|
||||
"com_ui_delete_action": "Eliminar Acción",
|
||||
"com_ui_delete_action_confirm": "¿Está seguro de que desea eliminar esta acción?",
|
||||
"com_ui_delete_agent_confirm": "¿Está seguro de que desea eliminar este agente?",
|
||||
"com_ui_delete_assistant_confirm": "¿Está seguro de que desea eliminar este Asistente? Esta acción no se puede deshacer.",
|
||||
"com_ui_delete_confirm": "Esto eliminará",
|
||||
"com_ui_delete_confirm_prompt_version_var": "Esto eliminará la versión seleccionada para \"{{0}}\". Si no existen otras versiones, el prompt será eliminado.",
|
||||
"com_ui_delete_conversation": "¿Eliminar Chat?",
|
||||
"com_ui_delete_prompt": "¿Eliminar Prompt?",
|
||||
"com_ui_delete_shared_link": "¿Eliminar enlace compartido?",
|
||||
"com_ui_delete_tool": "Eliminar Herramienta",
|
||||
"com_ui_delete_tool_confirm": "¿Está seguro de que desea eliminar esta herramienta?",
|
||||
"com_ui_descending": "Desc",
|
||||
"com_ui_description": "Descripción",
|
||||
"com_ui_description_placeholder": "Opcional: Ingrese una descripción para mostrar en el prompt",
|
||||
"com_ui_download": "Descargar",
|
||||
"com_ui_download_error": "Hubo un error al descargar el archivo. Es posible que el archivo haya sido eliminado.",
|
||||
"com_ui_dropdown_variables": "Variables desplegables:",
|
||||
"com_ui_dropdown_variables_info": "Cree menús desplegables personalizados para sus prompts: `{{nombre_variable:opción1|opción2|opción3}}`",
|
||||
"com_ui_duplicate": "Duplicar",
|
||||
"com_ui_duplication_error": "Hubo un error al duplicar la conversación",
|
||||
"com_ui_duplication_processing": "Duplicando conversación...",
|
||||
"com_ui_duplication_success": "Conversación duplicada exitosamente",
|
||||
"com_ui_edit": "Editar",
|
||||
"com_ui_endpoint": "Punto de conexión",
|
||||
"com_ui_endpoint_menu": "Menú de Punto de Conexión LLM",
|
||||
"com_ui_enter": "Intro",
|
||||
"com_ui_enter_api_key": "Ingrese la clave API",
|
||||
"com_ui_enter_openapi_schema": "Ingrese su esquema OpenAPI aquí",
|
||||
"com_ui_error": "Error",
|
||||
"com_ui_error_connection": "Error al conectarse al servidor. Intente actualizar la página.",
|
||||
"com_ui_error_save_admin_settings": "Se produjo un error al guardar su configuración de administrador.",
|
||||
"com_ui_examples": "Ejemplos",
|
||||
"com_ui_export_convo_modal": "Exportar Conversación",
|
||||
"com_ui_field_required": "Este campo es obligatorio",
|
||||
"com_ui_filter_prompts": "Filtrar Prompts",
|
||||
"com_ui_filter_prompts_name": "Filtrar prompts por nombre",
|
||||
"com_ui_finance": "Finanzas",
|
||||
"com_ui_fork": "Bifurcar",
|
||||
"com_ui_fork_all_target": "Incluir todo desde/hacia aquí",
|
||||
"com_ui_fork_branches": "Incluir ramas relacionadas",
|
||||
"com_ui_fork_change_default": "Opción de bifurcación predeterminada",
|
||||
"com_ui_fork_default": "Utilizar opción de bifurcación predeterminada",
|
||||
"com_ui_fork_error": "Hubo un error al bifurcar la conversación",
|
||||
"com_ui_fork_from_message": "Seleccione una opción de bifurcación",
|
||||
"com_ui_fork_info_1": "com_ui_fork_info_1: 'Utilice esta configuración para bifurcar los mensajes con el comportamiento deseado.'",
|
||||
"com_ui_fork_info_2": "\"Bifurcar\" se refiere a crear una nueva conversación que comienza/termina desde mensajes específicos en la conversación actual, creando una copia según las opciones seleccionadas.",
|
||||
"com_ui_fork_info_3": "El término \"mensaje objetivo\" se refiere ya sea al mensaje desde el cual se abrió este popup, o, si marca \"{{0}}\", al último mensaje en la conversación.",
|
||||
"com_ui_fork_info_branches": "Esta opción bifurca los mensajes visibles, junto con las ramas relacionadas; en otras palabras, la ruta directa hacia el mensaje objetivo, incluyendo las ramas a lo largo de esa ruta.",
|
||||
"com_ui_fork_info_remember": "Marque esta opción para recordar las preferencias que seleccione para su uso futuro, lo que agilizará la bifurcación de conversaciones según sus preferencias.",
|
||||
"com_ui_fork_info_start": "Si se marca, la bifurcación comenzará desde este mensaje hasta el último mensaje de la conversación, según el comportamiento seleccionado anteriormente.",
|
||||
"com_ui_fork_info_target": "Esta opción bifurca todos los mensajes que conducen al mensaje objetivo, incluyendo sus vecinos; en otras palabras, se incluyen todas las ramas de mensajes, ya sean visibles o no, o estén en el mismo camino.",
|
||||
"com_ui_fork_info_visible": "Esta opción bifurca únicamente los mensajes visibles; es decir, la ruta directa hacia el mensaje objetivo, sin ninguna ramificación.",
|
||||
"com_ui_fork_processing": "Bifurcando conversación...",
|
||||
"com_ui_fork_remember": "Recuerde",
|
||||
"com_ui_fork_remember_checked": "Su selección se recordará después de utilizarla. Puede cambiar esta opción en cualquier momento en la configuración.",
|
||||
"com_ui_fork_split_target": "Iniciar bifurcación aquí",
|
||||
"com_ui_fork_split_target_setting": "Iniciar bifurcación desde el mensaje objetivo de forma predeterminada",
|
||||
"com_ui_fork_success": "Se ha bifurcado la conversación con éxito",
|
||||
"com_ui_fork_visible": "Mostrar únicamente mensajes visibles",
|
||||
"com_ui_generating": "Generando...",
|
||||
"com_ui_go_back": "Volver",
|
||||
"com_ui_go_to_conversation": "Ir a la conversación",
|
||||
"com_ui_good_afternoon": "Buenas tardes",
|
||||
"com_ui_good_evening": "Buenas noches",
|
||||
"com_ui_good_morning": "Buenos días",
|
||||
"com_ui_happy_birthday": "¡Es mi primer cumpleaños!",
|
||||
"com_ui_host": "Host",
|
||||
"com_ui_idea": "Ideas",
|
||||
"com_ui_image_gen": "Gen Imágenes",
|
||||
"com_ui_import_conversation_error": "Hubo un error al importar tus chats",
|
||||
"com_ui_import_conversation_file_type_error": "com_ui_import_conversation_file_type_error: Tipo de archivo no compatible para importar",
|
||||
"com_ui_import_conversation_info": "Importar chats de un archivo JSON",
|
||||
"com_ui_import_conversation_success": "Chats importados exitosamente",
|
||||
"com_ui_include_shadcnui": "Incluir instrucciones de componentes shadcn/ui",
|
||||
"com_ui_input": "Entrada",
|
||||
"com_ui_instructions": "Instrucciones",
|
||||
"com_ui_latest_footer": "IA para todos.",
|
||||
"com_ui_latest_version": "Última versión",
|
||||
"com_ui_librechat_code_api_key": "Obtenga su clave API del Intérprete de Código de LibreChat",
|
||||
"com_ui_librechat_code_api_subtitle": "Seguro. Multilenguaje. Archivos de entrada/salida.",
|
||||
"com_ui_librechat_code_api_title": "Ejecutar Código IA",
|
||||
"com_ui_loading": "Cargando...",
|
||||
"com_ui_locked": "Bloqueado",
|
||||
"com_ui_logo": "Logotipo de {{0}}",
|
||||
"com_ui_manage": "Administrar",
|
||||
"com_ui_max_tags": "El número máximo permitido es {{0}}, utilizando los valores más recientes.",
|
||||
"com_ui_mention": "Menciona un punto de conexión, asistente o preconfiguración para cambiar rápidamente a él.",
|
||||
"com_ui_min_tags": "No se pueden eliminar más valores, se requiere un mínimo de {{0}}.",
|
||||
"com_ui_model": "Modelo",
|
||||
"com_ui_model_parameters": "Parámetros del Modelo",
|
||||
"com_ui_more_info": "Más información",
|
||||
"com_ui_my_prompts": "Mis Prompts",
|
||||
"com_ui_name": "Nombre",
|
||||
"com_ui_new": "Nuevo",
|
||||
"com_ui_new_chat": "Nuevo Chat",
|
||||
"com_ui_next": "Sig",
|
||||
"com_ui_no": "No",
|
||||
"com_ui_no_bookmarks": "Parece que aún no tiene marcadores. Haga clic en un chat y agregue uno nuevo",
|
||||
"com_ui_no_category": "Sin categoría",
|
||||
"com_ui_no_changes": "No hay cambios para actualizar",
|
||||
"com_ui_no_terms_content": "No hay contenido de términos y condiciones para mostrar",
|
||||
"com_ui_none": "Ninguno",
|
||||
"com_ui_nothing_found": "No se encontró nada",
|
||||
"com_ui_of": "de",
|
||||
"com_ui_off": "Desactivado",
|
||||
"com_ui_on": "Encendido",
|
||||
"com_ui_page": "Página",
|
||||
"com_ui_prev": "Ant",
|
||||
"com_ui_preview": "Previsualizar",
|
||||
"com_ui_privacy_policy": "Política de privacidad",
|
||||
"com_ui_privacy_policy_url": "URL de la Política de Privacidad",
|
||||
"com_ui_prompt": "Prompt",
|
||||
"com_ui_prompt_already_shared_to_all": "Este prompt ya está compartido con todos los usuarios",
|
||||
"com_ui_prompt_name": "Nombre del Prompt",
|
||||
"com_ui_prompt_name_required": "El nombre del prompt es obligatorio",
|
||||
"com_ui_prompt_preview_not_shared": "El autor no ha permitido la colaboración para este prompt",
|
||||
"com_ui_prompt_text": "Texto",
|
||||
"com_ui_prompt_text_required": "El texto es obligatorio",
|
||||
"com_ui_prompt_update_error": "Hubo un error al actualizar el prompt",
|
||||
"com_ui_prompts": "Indicaciones",
|
||||
"com_ui_prompts_allow_create": "Permitir crear Prompts",
|
||||
"com_ui_prompts_allow_share_global": "Permitir compartir plantillas con todos los usuarios",
|
||||
"com_ui_prompts_allow_use": "Permitir uso de Prompts",
|
||||
"com_ui_provider": "Proveedor",
|
||||
"com_ui_read_aloud": "Leer en voz alta",
|
||||
"com_ui_regenerate": "Regenerar",
|
||||
"com_ui_regenerating": "Regenerando...",
|
||||
"com_ui_region": "Región",
|
||||
"com_ui_rename": "Renombrar",
|
||||
"com_ui_rename_conversation": "Renombrar conversación",
|
||||
"com_ui_rename_prompt": "Renombrar prompt",
|
||||
"com_ui_reset_var": "Restablecer {{0}}",
|
||||
"com_ui_result": "Resultado",
|
||||
"com_ui_revoke": "Revocar",
|
||||
"com_ui_revoke_info": "Revocar todas las credenciales proporcionadas por el usuario",
|
||||
"com_ui_revoke_key_confirm": "¿Está seguro de que desea revocar esta clave?",
|
||||
"com_ui_revoke_key_endpoint": "Revocar clave para {{0}}",
|
||||
"com_ui_revoke_keys": "Revocar Claves",
|
||||
"com_ui_revoke_keys_confirm": "¿Está seguro de que desea revocar todas las claves?",
|
||||
"com_ui_role_select": "Rol",
|
||||
"com_ui_run_code": "Ejecutar código",
|
||||
"com_ui_run_code_error": "Se produjo un error al ejecutar el código",
|
||||
"com_ui_save": "Guardar",
|
||||
"com_ui_save_submit": "Guardar y Enviar",
|
||||
"com_ui_saved": "¡Guardado!",
|
||||
"com_ui_schema": "Esquema",
|
||||
"com_ui_search": "Buscar",
|
||||
"com_ui_select": "Seleccionar",
|
||||
"com_ui_select_file": "Seleccionar un archivo",
|
||||
"com_ui_select_model": "Seleccionar un modelo",
|
||||
"com_ui_select_provider": "Seleccionar un proveedor",
|
||||
"com_ui_select_provider_first": "Seleccione un proveedor primero",
|
||||
"com_ui_select_region": "Seleccionar una región",
|
||||
"com_ui_select_search_model": "Buscar modelo por nombre",
|
||||
"com_ui_select_search_plugin": "Buscar plugin por nombre",
|
||||
"com_ui_select_search_provider": "Buscar proveedor por nombre",
|
||||
"com_ui_select_search_region": "Buscar región por nombre",
|
||||
"com_ui_share": "Compartir",
|
||||
"com_ui_share_create_message": "Tu nombre y cualquier mensaje que agregues después de compartir se mantendrán privados.",
|
||||
"com_ui_share_delete_error": "Hubo un error al eliminar el enlace compartido.",
|
||||
"com_ui_share_error": "Hubo un error al compartir el enlace del chat",
|
||||
"com_ui_share_link_to_chat": "Compartir enlace en el chat",
|
||||
"com_ui_share_to_all_users": "Compartir con todos los usuarios",
|
||||
"com_ui_share_update_message": "Tu nombre, instrucciones personalizadas y cualquier mensaje que agregues después de compartir se mantendrán privados.",
|
||||
"com_ui_share_var": "Compartir {{0}}",
|
||||
"com_ui_shared_link_not_found": "Enlace compartido no encontrado",
|
||||
"com_ui_shared_prompts": "Prompts Compartidos",
|
||||
"com_ui_shop": "Compras",
|
||||
"com_ui_show": "Mostrar",
|
||||
"com_ui_show_all": "Mostrar Todo",
|
||||
"com_ui_simple": "Simple",
|
||||
"com_ui_size": "Tamaño",
|
||||
"com_ui_special_variables": "Variables especiales:",
|
||||
"com_ui_speech_while_submitting": "No se puede enviar un mensaje de voz mientras se está generando una respuesta",
|
||||
"com_ui_stop": "Detener",
|
||||
"com_ui_storage": "Almacenamiento",
|
||||
"com_ui_submit": "Enviar",
|
||||
"com_ui_teach_or_explain": "Aprendizaje",
|
||||
"com_ui_terms_and_conditions": "Términos y Condiciones",
|
||||
"com_ui_terms_of_service": "Términos de servicio",
|
||||
"com_ui_thinking": "Pensando...",
|
||||
"com_ui_tools": "Herramientas",
|
||||
"com_ui_travel": "Viaje",
|
||||
"com_ui_unarchive": "Desarchivar",
|
||||
"com_ui_unarchive_error": "Error al desarchivar la conversación",
|
||||
"com_ui_unknown": "Desconocido",
|
||||
"com_ui_update": "Actualizar",
|
||||
"com_ui_upload": "Subir",
|
||||
"com_ui_upload_code_files": "Subir archivo para el Intérprete de Código",
|
||||
"com_ui_upload_delay": "La carga de \"{{0}}\" está tomando más tiempo del esperado. Espere mientras el archivo termina de indexarse para su recuperación.",
|
||||
"com_ui_upload_error": "Hubo un error al subir su archivo",
|
||||
"com_ui_upload_file_search": "Subir para búsqueda de archivos",
|
||||
"com_ui_upload_files": "Subir archivos",
|
||||
"com_ui_upload_image": "Subir una imagen",
|
||||
"com_ui_upload_image_input": "Subir imagen",
|
||||
"com_ui_upload_invalid": "Archivo no válido para subir. Debe ser una imagen que no exceda el límite",
|
||||
"com_ui_upload_invalid_var": "Archivo inválido para subir. Debe ser una imagen que no exceda los {{0}} MB",
|
||||
"com_ui_upload_success": "Archivo subido con éxito",
|
||||
"com_ui_upload_type": "Seleccionar tipo de carga",
|
||||
"com_ui_use_micrphone": "Usar micrófono",
|
||||
"com_ui_use_prompt": "Usar prompt",
|
||||
"com_ui_variables": "Variables",
|
||||
"com_ui_variables_info": "Utilice llaves dobles en su texto para crear variables, por ejemplo `{{variable de ejemplo}}`, para completarlas posteriormente al usar el prompt.",
|
||||
"com_ui_verify": "Verificar",
|
||||
"com_ui_version_var": "Versión {{0}}",
|
||||
"com_ui_versions": "Versiones",
|
||||
"com_ui_weekend_morning": "Feliz fin de semana",
|
||||
"com_ui_write": "Escribiendo",
|
||||
"com_ui_x_selected": "{{0}} seleccionado",
|
||||
"com_ui_yes": "Sí",
|
||||
"com_ui_zoom": "Zoom",
|
||||
"com_user_message": "Usted",
|
||||
"com_warning_resubmit_unsupported": "No se admite el reenvío del mensaje de IA para este punto de conexión."
|
||||
}
|
||||
870
packages/client/src/locales/et/translation.json
Normal file
870
packages/client/src/locales/et/translation.json
Normal file
|
|
@ -0,0 +1,870 @@
|
|||
{
|
||||
"chat_direction_left_to_right": "Joonda vestlus vasakult paremale.",
|
||||
"chat_direction_right_to_left": "Joonda vestlus paremalt vasakule.",
|
||||
"com_a11y_ai_composing": "AI genereerib vastust.",
|
||||
"com_a11y_end": "AI on oma vastuse lõpetanud.",
|
||||
"com_a11y_start": "AI on oma vastuse andmise alustanud.",
|
||||
"com_agents_allow_editing": "Luba teistel kasutajatel sinu agenti muuta",
|
||||
"com_agents_by_librechat": "LibreChatilt",
|
||||
"com_agents_code_interpreter": "Kui see on lubatud, saab sinu agent kasutada LibreChati koodiinterpreteerimise API-t genereeritud koodi turvaliseks käivitamiseks, sealhulgas failide töötlemiseks. Vajalik on kehtiv API võti.",
|
||||
"com_agents_code_interpreter_title": "Koodiinterpreteerimise API",
|
||||
"com_agents_create_error": "Agendi loomisel tekkis viga.",
|
||||
"com_agents_description_placeholder": "Valikuline: Kirjelda oma agenti siin",
|
||||
"com_agents_enable_file_search": "Luba failiotsing",
|
||||
"com_agents_file_context": "Faili kontekst (OCR)",
|
||||
"com_agents_file_context_disabled": "Agent tuleb luua enne failide üleslaadimist failikontekstiks.",
|
||||
"com_agents_file_context_info": "Failid, mis on laetud \"konteksti\", töödeldakse OCR-iga tekstiks ja lisatakse seejärel agendi juhistesse. See on eriti kasulik dokumentide, tekstiga piltide või PDF-ide puhul, kui vaja läheb kogu faili tekstilist sisu.",
|
||||
"com_agents_file_search_disabled": "Agent tuleb luua enne failide üleslaadimist failiotsinguks.",
|
||||
"com_agents_file_search_info": "Kui see on lubatud, teavitatakse agenti täpselt allpool loetletud failinimedest, mis võimaldab tal nendest failidest asjakohast konteksti hankida.",
|
||||
"com_agents_instructions_placeholder": "Süsteemijuhised, mida agent kasutab",
|
||||
"com_agents_missing_provider_model": "Enne agendi loomist valige teenusepakkuja ja mudel.",
|
||||
"com_agents_name_placeholder": "Valikuline: Agendi nimi",
|
||||
"com_agents_no_access": "Sul pole õigust seda agenti muuta.",
|
||||
"com_agents_not_available": "Agent pole saadaval",
|
||||
"com_agents_search_name": "Otsi agente nime järgi",
|
||||
"com_agents_update_error": "Agendi uuendamisel tekkis viga.",
|
||||
"com_assistants_action_attempt": "Assistent soovib suhelda: {{0}}",
|
||||
"com_assistants_actions": "Tegevused",
|
||||
"com_assistants_actions_disabled": "Enne tegevuste lisamist peate looma assistendi.",
|
||||
"com_assistants_actions_info": "Lubage oma assistendil API-de kaudu teavet hankida või toiminguid teha",
|
||||
"com_assistants_add_actions": "Lisa tegevusi",
|
||||
"com_assistants_add_tools": "Lisa tööriistu",
|
||||
"com_assistants_allow_sites_you_trust": "Luba ainult usaldusväärseid saite.",
|
||||
"com_assistants_append_date": "Lisa praegune kuupäev ja kellaaeg",
|
||||
"com_assistants_append_date_tooltip": "Kui see on lubatud, lisatakse praegune kliendi kuupäev ja kellaaeg assistendi süsteemijuhistele.",
|
||||
"com_assistants_attempt_info": "Assistent soovib saata järgmist:",
|
||||
"com_assistants_available_actions": "Saadaolevad tegevused",
|
||||
"com_assistants_capabilities": "Võimed",
|
||||
"com_assistants_code_interpreter": "Koodiinterpreteerija",
|
||||
"com_assistants_code_interpreter_files": "Allpool olevad failid on ainult koodiinterpreteerijale:",
|
||||
"com_assistants_code_interpreter_info": "Koodiinterpreteerija võimaldab assistendil kirjutada ja käivitada koodi. See tööriist saab töödelda mitmekesise andmestruktuuri ja vorminguga faile ning genereerida faile, näiteks graafikuid.",
|
||||
"com_assistants_completed_action": "Suhtles {{0}}",
|
||||
"com_assistants_completed_function": "Käivitas {{0}}",
|
||||
"com_assistants_conversation_starters": "Vestluse alustajad",
|
||||
"com_assistants_conversation_starters_placeholder": "Sisesta vestluse alustaja",
|
||||
"com_assistants_create_error": "Assistendi loomisel tekkis viga.",
|
||||
"com_assistants_create_success": "Loomine õnnestus",
|
||||
"com_assistants_delete_actions_error": "Tegevuse kustutamisel tekkis viga.",
|
||||
"com_assistants_delete_actions_success": "Tegevuse kustutamine assistendilt õnnestus",
|
||||
"com_assistants_description_placeholder": "Valikuline: Kirjelda oma assistenti siin",
|
||||
"com_assistants_domain_info": "Assistent saatis selle teabe aadressile {{0}}",
|
||||
"com_assistants_file_search": "Failiotsing",
|
||||
"com_assistants_file_search_info": "Failiotsing võimaldab assistendil kasutada teadmisi failidest, mille sina või sinu kasutajad üles laadite. Kui fail on üles laaditud, otsustab assistent automaatselt, millal kasutajate päringute põhjal sisu hankida. Vektorhoidlate lisamine failiotsinguks pole veel toetatud. Saate neid lisada teenusepakkuja mänguväljakult või lisada faile sõnumitele, et neid lõimes failiotsinguks kasutada.",
|
||||
"com_assistants_function_use": "Assistent kasutas {{0}}",
|
||||
"com_assistants_image_vision": "Pildi nägemine",
|
||||
"com_assistants_instructions_placeholder": "Süsteemijuhised, mida assistent kasutab",
|
||||
"com_assistants_knowledge": "Teadmised",
|
||||
"com_assistants_knowledge_disabled": "Enne failide teadmistena üleslaadimist tuleb assistent luua ning koodiinterpreteerija või otsing lubada ja salvestada.",
|
||||
"com_assistants_knowledge_info": "Kui laadite faile üles jaotise Teadmised alla, võivad vestlused teie assistendiga sisaldada failide sisu.",
|
||||
"com_assistants_max_starters_reached": "Vestluse alustajate maksimaalne arv on saavutatud",
|
||||
"com_assistants_name_placeholder": "Valikuline: Assistendi nimi",
|
||||
"com_assistants_non_retrieval_model": "Selles mudelis pole failiotsing lubatud. Valige mõni muu mudel.",
|
||||
"com_assistants_retrieval": "Otsing",
|
||||
"com_assistants_running_action": "Käivitatakse tegevust",
|
||||
"com_assistants_search_name": "Otsi assistente nime järgi",
|
||||
"com_assistants_update_actions_error": "Tegevuse loomisel või uuendamisel tekkis viga.",
|
||||
"com_assistants_update_actions_success": "Tegevuse loomine või uuendamine õnnestus",
|
||||
"com_assistants_update_error": "Assistendi uuendamisel tekkis viga.",
|
||||
"com_assistants_update_success": "Uuendamine õnnestus",
|
||||
"com_auth_already_have_account": "Sul on juba konto?",
|
||||
"com_auth_apple_login": "Logi sisse Apple'iga",
|
||||
"com_auth_back_to_login": "Tagasi sisselogimisele",
|
||||
"com_auth_click": "Vajuta",
|
||||
"com_auth_click_here": "Vajuta siia",
|
||||
"com_auth_continue": "Jätka",
|
||||
"com_auth_create_account": "Loo oma konto",
|
||||
"com_auth_discord_login": "Jätka Discordiga",
|
||||
"com_auth_email": "E-post",
|
||||
"com_auth_email_address": "E-posti aadress",
|
||||
"com_auth_email_max_length": "E-post ei tohiks olla pikem kui 120 tähemärki",
|
||||
"com_auth_email_min_length": "E-post peab olema vähemalt 6 tähemärki",
|
||||
"com_auth_email_pattern": "Sa pead sisestama kehtiva e-posti aadressi",
|
||||
"com_auth_email_required": "E-post on kohustuslik",
|
||||
"com_auth_email_resend_link": "Saada e-kiri uuesti",
|
||||
"com_auth_email_resent_failed": "E-kirja uuesti saatmine ebaõnnestus",
|
||||
"com_auth_email_resent_success": "Kinnituskiri saadeti edukalt uuesti",
|
||||
"com_auth_email_verification_failed": "E-posti kinnitamine ebaõnnestus",
|
||||
"com_auth_email_verification_failed_token_missing": "Kinnitamine ebaõnnestus, tunnus puudub",
|
||||
"com_auth_email_verification_in_progress": "Sinu e-posti kinnitamine, palun oota",
|
||||
"com_auth_email_verification_invalid": "Vigane e-posti kinnitus",
|
||||
"com_auth_email_verification_redirecting": "Suunatakse ümber {{0}} sekundi pärast...",
|
||||
"com_auth_email_verification_resend_prompt": "Kas sa ei saanud e-kirja?",
|
||||
"com_auth_email_verification_success": "E-post kinnitatud",
|
||||
"com_auth_email_verifying_ellipsis": "Kontrollimine...",
|
||||
"com_auth_error_create": "Konto registreerimisel tekkis viga. Proovige uuesti.",
|
||||
"com_auth_error_invalid_reset_token": "See parooli lähtestamise tunnus pole enam kehtiv.",
|
||||
"com_auth_error_login": "Sisselogimine esitatud teabega ei õnnestu. Palun kontrolli oma andmeid ja proovi uuesti.",
|
||||
"com_auth_error_login_ban": "Sinu konto on ajutiselt blokeeritud meie teenuse rikkumiste tõttu.",
|
||||
"com_auth_error_login_rl": "Liiga palju sisselogimiskatseid lühikese aja jooksul. Palun proovi hiljem uuesti.",
|
||||
"com_auth_error_login_server": "Tekkis sisemine serveriviga. Palun oota hetk ja proovi uuesti.",
|
||||
"com_auth_error_login_unverified": "Sinu kontot pole veel kinnitatud. Palun leia kinnituslink enda e-postist.",
|
||||
"com_auth_facebook_login": "Jätka Facebookiga",
|
||||
"com_auth_full_name": "Täisnimi",
|
||||
"com_auth_github_login": "Jätka Githubiga",
|
||||
"com_auth_google_login": "Jätka Google'iga",
|
||||
"com_auth_here": "SIIA",
|
||||
"com_auth_login": "Logi sisse",
|
||||
"com_auth_login_with_new_password": "Nüüd saad sisse logida oma uue parooliga.",
|
||||
"com_auth_name_max_length": "Nimi peab olema vähem kui 80 tähemärki",
|
||||
"com_auth_name_min_length": "Nimi peab olema vähemalt 3 tähemärki",
|
||||
"com_auth_name_required": "Nimi on kohustuslik",
|
||||
"com_auth_no_account": "Sul pole kontot?",
|
||||
"com_auth_password": "Parool",
|
||||
"com_auth_password_confirm": "Kinnita parool",
|
||||
"com_auth_password_forgot": "Unustasid parooli?",
|
||||
"com_auth_password_max_length": "Parool peab olema vähem kui 128 tähemärki",
|
||||
"com_auth_password_min_length": "Parool peab olema vähemalt 8 tähemärki",
|
||||
"com_auth_password_not_match": "Paroolid ei ühti",
|
||||
"com_auth_password_required": "Parool on kohustuslik",
|
||||
"com_auth_registration_success_generic": "Palun vaata oma e-posti, et oma e-posti aadress kinnitada.",
|
||||
"com_auth_registration_success_insecure": "Registreerimine õnnestus.",
|
||||
"com_auth_reset_password": "Lähtesta oma parool",
|
||||
"com_auth_reset_password_if_email_exists": "Kui selle e-postiga konto on olemas, on saadetud parooli lähtestamise juhistega e-kiri. Palun kontrolli oma rämpsposti kausta.",
|
||||
"com_auth_reset_password_link_sent": "E-kiri saadetud",
|
||||
"com_auth_reset_password_success": "Parooli lähtestamine õnnestus",
|
||||
"com_auth_sign_in": "Logi sisse",
|
||||
"com_auth_sign_up": "Registreeru",
|
||||
"com_auth_submit_registration": "Saada registreerimine",
|
||||
"com_auth_to_reset_your_password": "parooli lähtestamiseks.",
|
||||
"com_auth_to_try_again": "uuesti proovimiseks.",
|
||||
"com_auth_two_factor": "Kontrolli oma eelistatud ühekordse parooli rakendust koodi saamiseks",
|
||||
"com_auth_username": "Kasutajanimi (valikuline)",
|
||||
"com_auth_username_max_length": "Kasutajanimi peab olema vähem kui 20 tähemärki",
|
||||
"com_auth_username_min_length": "Kasutajanimi peab olema vähemalt 2 tähemärki",
|
||||
"com_auth_verify_your_identity": "Kontrolli",
|
||||
"com_auth_welcome_back": "Teretulemast tagasi",
|
||||
"com_click_to_download": "(vajuta siia, et alla laadida)",
|
||||
"com_download_expired": "(allalaadimine aegunud)",
|
||||
"com_download_expires": "(vajuta siia, et alla laadida - aegub {{0}})",
|
||||
"com_endpoint": "Otspunkt",
|
||||
"com_endpoint_agent": "Agent",
|
||||
"com_endpoint_agent_model": "Agendi mudel (soovitatav: GPT-3.5)",
|
||||
"com_endpoint_agent_placeholder": "Palun vali agent",
|
||||
"com_endpoint_ai": "AI",
|
||||
"com_endpoint_anthropic_maxoutputtokens": "Maksimaalne märkide arv, mida vastuses genereerida saab. Lühemate vastuste jaoks määrake madalam väärtus ja pikemate vastuste jaoks kõrgem väärtus. Märkus: mudelid võivad peatuda enne selle maksimumi saavutamist.",
|
||||
"com_endpoint_anthropic_prompt_cache": "Päringu vahemällu salvestamine võimaldab suurt konteksti või juhiseid API-kõnede vahel uuesti kasutada, vähendades kulusid ja latentsust",
|
||||
"com_endpoint_anthropic_temp": "Vahemikus 0 kuni 1. Kasutage analüütiliste / valikvastustega küsimuste puhul väärtust, mis on lähemal 0-le, ning loominguliste ja genereerivate ülesannete puhul väärtust, mis on lähemal 1-le. Soovitame muuta kas seda või Top P-d, aga mitte mõlemat.",
|
||||
"com_endpoint_anthropic_thinking": "Võimaldab sisemist mõtlemist toetatud Claude mudelite jaoks (3.7 Sonnet). Märkus: \"Mõtlemiseelarve\" peab olema määratud ja väiksem kui \"Maksimaalsed väljundmärgid\"",
|
||||
"com_endpoint_anthropic_thinking_budget": "Määrab maksimaalse märkide arvu, mida Claude võib kasutada oma sisemise mõttekäigu jaoks. Suurem eelarve võib parandada vastuse kvaliteeti, võimaldades põhjalikumat analüüsi keerukate probleemide puhul. Claude ei pruugi kasutada kogu eraldatud eelarvet, eriti kui see ületab 32K. See seadistus peab olema väiksem kui \"Maksimaalsed väljundmärgid\".",
|
||||
"com_endpoint_anthropic_topk": "Top-k muudab seda, kuidas mudel valib väljundi jaoks märgid. Top-k väärtus 1 tähendab, et valitud märk on kõige tõenäolisem kõigi mudeli sõnavaras olevate märkide seas (nimetatakse ka ahneks dekodeerimiseks), samas kui top-k väärtus 3 tähendab, et järgmine märk valitakse 3 kõige tõenäolisema märgi seast (kasutades temperatuuri).",
|
||||
"com_endpoint_anthropic_topp": "Top-p muudab seda, kuidas mudel valib väljundi jaoks märgid. Märgid valitakse kõige tõenäolisemast K (vt parameetrit topK) kuni vähim tõenäoliseni, kuni nende tõenäosuste summa on võrdne top-p väärtusega.",
|
||||
"com_endpoint_assistant": "Assistent",
|
||||
"com_endpoint_assistant_model": "Assistendi mudel",
|
||||
"com_endpoint_assistant_placeholder": "Palun vali assistent parempoolsest külgpaneelist",
|
||||
"com_endpoint_completion": "Lõpetamine",
|
||||
"com_endpoint_completion_model": "Lõpetamise mudel (soovitatav: GPT-4)",
|
||||
"com_endpoint_config_click_here": "Klõpsa siia",
|
||||
"com_endpoint_config_google_api_info": "Et saada oma Generative Language API võtit (Gemini jaoks),",
|
||||
"com_endpoint_config_google_api_key": "Google API võti",
|
||||
"com_endpoint_config_google_cloud_platform": "(Google Cloud Platformilt)",
|
||||
"com_endpoint_config_google_gemini_api": "(Gemini API)",
|
||||
"com_endpoint_config_google_service_key": "Google'i teenusekonto võti",
|
||||
"com_endpoint_config_key": "Määra API võti",
|
||||
"com_endpoint_config_key_encryption": "Sinu võti krüpteeritakse ja kustutatakse",
|
||||
"com_endpoint_config_key_for": "Määra API võti",
|
||||
"com_endpoint_config_key_google_need_to": "Sa pead",
|
||||
"com_endpoint_config_key_google_service_account": "Loo teenusekonto",
|
||||
"com_endpoint_config_key_google_vertex_ai": "Luba Vertex AI",
|
||||
"com_endpoint_config_key_google_vertex_api": "API Google Cloudis, seejärel",
|
||||
"com_endpoint_config_key_google_vertex_api_role": "Veenduge, et klõpsate 'Loo ja jätka', et anda vähemalt roll 'Vertex AI kasutaja'. Lõpuks looge siia importimiseks JSON-võti.",
|
||||
"com_endpoint_config_key_import_json_key": "Impordi teenusekonto JSON-võti.",
|
||||
"com_endpoint_config_key_import_json_key_invalid": "Vigane teenusekonto JSON-võti, kas importisite õige faili?",
|
||||
"com_endpoint_config_key_import_json_key_success": "Teenusekonto JSON-võtme importimine õnnestus",
|
||||
"com_endpoint_config_key_name": "Võti",
|
||||
"com_endpoint_config_key_never_expires": "Sinu võti ei aegu kunagi",
|
||||
"com_endpoint_config_placeholder": "Määra oma võti päise menüüs vestlemiseks.",
|
||||
"com_endpoint_config_value": "Sisesta väärtus",
|
||||
"com_endpoint_context": "Kontekst",
|
||||
"com_endpoint_context_info": "Maksimaalne märkide arv, mida konteksti jaoks kasutada saab. Kasutage seda selleks, et kontrollida, mitu märki taotluse kohta saadetakse. Kui seda pole määratud, kasutatakse süsteemi vaikesätteid, mis põhinevad teadaolevate mudelite konteksti suurusel. Kõrgemate väärtuste määramine võib põhjustada vigu ja/või suuremaid märgikulusid.",
|
||||
"com_endpoint_context_tokens": "Maksimum kontekstimärgid",
|
||||
"com_endpoint_custom_name": "Kohandatud nimi",
|
||||
"com_endpoint_default": "vaikimisi",
|
||||
"com_endpoint_default_blank": "vaikimisi: tühi",
|
||||
"com_endpoint_default_empty": "vaikimisi: tühi",
|
||||
"com_endpoint_default_with_num": "vaikimisi: {{0}}",
|
||||
"com_endpoint_deprecated": "Aegunud",
|
||||
"com_endpoint_deprecated_info": "See liidestus on aegunud ja võidakse tulevastes versioonides eemaldada, palun kasuta selle asemel agendi liidestust",
|
||||
"com_endpoint_deprecated_info_a11y": "Pluginate liidestus on aegunud ja võidakse tulevastes versioonides eemaldada, palun kasuta selle asemel agendi liidestust",
|
||||
"com_endpoint_examples": "Eelseadistused",
|
||||
"com_endpoint_export": "Ekspordi",
|
||||
"com_endpoint_export_share": "Ekspordi/Jaga",
|
||||
"com_endpoint_frequency_penalty": "Sageduse karistus",
|
||||
"com_endpoint_func_hover": "Luba pluginate kasutamine OpenAI funktsioonidena",
|
||||
"com_endpoint_google_custom_name_placeholder": "Määra Google'ile kohandatud nimi",
|
||||
"com_endpoint_google_maxoutputtokens": "Maksimaalne märkide arv, mida vastuses genereerida saab. Lühemate vastuste jaoks määrake madalam väärtus ja pikemate vastuste jaoks kõrgem väärtus. Märkus: mudelid võivad peatuda enne selle maksimumi saavutamist.",
|
||||
"com_endpoint_google_temp": "Kõrgemad väärtused = juhuslikum, samas kui madalamad väärtused = keskendunum ja deterministlikum. Soovitame muuta kas seda või Top P-d, aga mitte mõlemat.",
|
||||
"com_endpoint_google_topk": "Top-k muudab seda, kuidas mudel valib väljundi jaoks märgid. Top-k väärtus 1 tähendab, et valitud märk on kõige tõenäolisem kõigi mudeli sõnavaras olevate märkide seas (nimetatakse ka ahneks dekodeerimiseks), samas kui top-k väärtus 3 tähendab, et järgmine märk valitakse 3 kõige tõenäolisema märgi seast (kasutades temperatuuri).",
|
||||
"com_endpoint_google_topp": "Top-p muudab seda, kuidas mudel valib väljundi jaoks märgid. Märgid valitakse kõige tõenäolisemast K (vt parameetrit topK) kuni vähim tõenäoliseni, kuni nende tõenäosuste summa on võrdne top-p väärtusega.",
|
||||
"com_endpoint_instructions_assistants": "Tühista juhised",
|
||||
"com_endpoint_instructions_assistants_placeholder": "Tühistab assistendi juhised. See on kasulik käitumise muutmiseks käivituse kohta.",
|
||||
"com_endpoint_max_output_tokens": "Maksimaalsed väljundmärgid",
|
||||
"com_endpoint_message": "Sõnum",
|
||||
"com_endpoint_message_new": "Sõnum {{0}}",
|
||||
"com_endpoint_message_not_appendable": "Muuda oma sõnumit või genereeri uuesti.",
|
||||
"com_endpoint_my_preset": "Minu eelseadistus",
|
||||
"com_endpoint_no_presets": "Eelseadistusi pole veel, kasutage ühe loomiseks seadete nuppu",
|
||||
"com_endpoint_open_menu": "Ava menüü",
|
||||
"com_endpoint_openai_custom_name_placeholder": "Määra AI-le kohandatud nimi",
|
||||
"com_endpoint_openai_detail": "Visioonitaotluste eraldusvõime. \"Madal\" on odavam ja kiirem, \"Kõrge\" on detailsem ja kallim ning \"Automaatne\" valib automaatselt kahe vahel vastavalt pildi eraldusvõimele.",
|
||||
"com_endpoint_openai_freq": "Arv vahemikus -2,0 kuni 2,0. Positiivsed väärtused karistavad uusi märke nende senise sageduse alusel tekstis, vähendades mudeli tõenäosust sama rida sõnasõnaliselt korrata.",
|
||||
"com_endpoint_openai_max": "Maksimaalsed genereeritavad märgid. Sisendmärkide ja genereeritud märkide kogupikkus on piiratud mudeli konteksti pikkusega.",
|
||||
"com_endpoint_openai_max_tokens": "Valikuline väli 'max_tokens', mis esindab vestluse lõpetamisel genereeritavate märkide maksimaalset arvu. Sisendmärkide ja genereeritud märkide kogupikkus on piiratud mudelite konteksti pikkusega. Kui see arv ületab maksimaalseid kontekstimärke, võivad tekkida vead.",
|
||||
"com_endpoint_openai_pres": "Arv vahemikus -2,0 kuni 2,0. Positiivsed väärtused karistavad uusi märke selle alusel, kas need esinevad senises tekstis, suurendades mudeli tõenäosust rääkida uutest teemadest.",
|
||||
"com_endpoint_openai_prompt_prefix_placeholder": "Määra kohandatud juhised süsteemiteatesse lisamiseks. Vaikimisi: puudub",
|
||||
"com_endpoint_openai_reasoning_effort": "Ainult o1 mudelid: piirab põhjendusmudelite põhjendustegevust. Põhjendustegevuse vähendamine võib tuua kaasa kiiremad vastused ja vähem põhjendamiseks kasutatud märke vastuses.",
|
||||
"com_endpoint_openai_resend": "Saada kõik varem lisatud pildid uuesti. Märkus: see võib märgikulusid oluliselt suurendada ja paljude pildimanustega võivad tekkida vead.",
|
||||
"com_endpoint_openai_resend_files": "Saada kõik varem lisatud failid uuesti. Märkus: see suurendab märgikulusid ja paljude manustega võivad tekkida vead.",
|
||||
"com_endpoint_openai_stop": "Kuni 4 järjestust, mille korral API lõpetab täiendavate märkide genereerimise.",
|
||||
"com_endpoint_openai_temp": "Kõrgemad väärtused = juhuslikum, samas kui madalamad väärtused = keskendunum ja deterministlikum. Soovitame muuta kas seda või Top P-d, aga mitte mõlemat.",
|
||||
"com_endpoint_openai_topp": "Alternatiiviks temperatuuriga näidiste võtmisele on tuumaproovide võtmine, kus mudel arvestab märkide tulemustega, millel on top_p tõenäosuse mass. Seega 0,1 tähendab, et arvesse võetakse ainult märke, mis moodustavad 10% suurima tõenäosusega massi. Soovitame muuta kas seda või temperatuuri, aga mitte mõlemat.",
|
||||
"com_endpoint_output": "Väljund",
|
||||
"com_endpoint_plug_image_detail": "Pildi detailid",
|
||||
"com_endpoint_plug_resend_files": "Saada failid uuesti",
|
||||
"com_endpoint_plug_set_custom_instructions_for_gpt_placeholder": "Määra kohandatud juhised süsteemiteatesse lisamiseks. Vaikimisi: puudub",
|
||||
"com_endpoint_plug_skip_completion": "Jäta lõpetamine vahele",
|
||||
"com_endpoint_plug_use_functions": "Kasuta funktsioone",
|
||||
"com_endpoint_presence_penalty": "Olekukaristus",
|
||||
"com_endpoint_preset": "eelseadistus",
|
||||
"com_endpoint_preset_custom_name_placeholder": "Otspunkti kohandatud nimi.",
|
||||
"com_endpoint_preset_default": "on nüüd vaike-eelseadistus.",
|
||||
"com_endpoint_preset_default_item": "Vaikimisi:",
|
||||
"com_endpoint_preset_default_none": "Vaikimisi eelseadistus pole aktiivne.",
|
||||
"com_endpoint_preset_default_removed": "pole enam vaike-eelseadistus.",
|
||||
"com_endpoint_preset_delete_confirm": "Oled sa kindel, et sa soovid selle eelseadistuse kustutada?",
|
||||
"com_endpoint_preset_delete_error": "Eelseadistuse kustutamisel tekkis viga. Palun proovi uuesti.",
|
||||
"com_endpoint_preset_import": "Eelseadistus imporditud!",
|
||||
"com_endpoint_preset_import_error": "Eelseadistuse importimisel tekkis viga. Palun proovi uuesti.",
|
||||
"com_endpoint_preset_name": "Eelseadistuse nimi",
|
||||
"com_endpoint_preset_save_error": "Eelseadistuse salvestamisel tekkis viga. Palun proovi uuesti.",
|
||||
"com_endpoint_preset_selected": "Eelseadistus aktiivne!",
|
||||
"com_endpoint_preset_selected_title": "Aktiivne!",
|
||||
"com_endpoint_preset_title": "Eelseadistus",
|
||||
"com_endpoint_presets": "eelseadistused",
|
||||
"com_endpoint_presets_clear_warning": "Oled sa kindel, et sa soovid kõik eelseadistused kustutada? See on pöördumatu.",
|
||||
"com_endpoint_prompt_cache": "Kasuta päringu vahemällu salvestamist",
|
||||
"com_endpoint_prompt_prefix": "Kohandatud juhised",
|
||||
"com_endpoint_prompt_prefix_assistants": "Täiendavad juhised",
|
||||
"com_endpoint_prompt_prefix_assistants_placeholder": "Määra täiendavad juhised või kontekst lisaks assistendi peamistele juhistele. Kui see on tühi, ignoreeritakse seda.",
|
||||
"com_endpoint_prompt_prefix_placeholder": "Määra kohandatud juhised või kontekst. Kui see on tühi, ignoreeritakse seda.",
|
||||
"com_endpoint_reasoning_effort": "Põhjendustegevus",
|
||||
"com_endpoint_save_as_preset": "Salvesta eelseadistusena",
|
||||
"com_endpoint_search": "Otsi otspunkti nime järgi",
|
||||
"com_endpoint_search_endpoint_models": "Otsi {{0}} mudeleid...",
|
||||
"com_endpoint_search_models": "Otsi mudeleid...",
|
||||
"com_endpoint_search_var": "Otsi {{0}}...",
|
||||
"com_endpoint_set_custom_name": "Määra kohandatud nimi, juhuks kui sa selle eelseadistuse leiad",
|
||||
"com_endpoint_skip_hover": "Luba lõpetamise etapi vahelejätmine, mis vaatab üle lõpliku vastuse ja genereeritud sammud",
|
||||
"com_endpoint_stop": "Peatamise järjestused",
|
||||
"com_endpoint_stop_placeholder": "Eralda väärtused, vajutades `Enter`",
|
||||
"com_endpoint_temperature": "Temperatuur",
|
||||
"com_endpoint_thinking": "Mõtleb",
|
||||
"com_endpoint_thinking_budget": "Mõtlemise piirmäär",
|
||||
"com_endpoint_top_k": "Top K",
|
||||
"com_endpoint_top_p": "Top P",
|
||||
"com_endpoint_use_active_assistant": "Kasuta aktiivset assistenti",
|
||||
"com_error_expired_user_key": "Esitatud võti {{0}} aegus {{1}}. Esitage uus võti ja proovige uuesti.",
|
||||
"com_error_files_dupe": "Leiti duplikaatfail.",
|
||||
"com_error_files_empty": "Tühjad failid pole lubatud.",
|
||||
"com_error_files_process": "Faili töötlemisel tekkis viga.",
|
||||
"com_error_files_unsupported_capability": "Ühtegi seda failitüüpi toetavat võimalust pole lubatud.",
|
||||
"com_error_files_upload": "Faili üleslaadimisel tekkis viga.",
|
||||
"com_error_files_upload_canceled": "Faili üleslaadimise taotlus tühistati. Märkus: faili üleslaadimine võib endiselt olla pooleli ja see tuleb käsitsi kustutada.",
|
||||
"com_error_files_validation": "Faili valideerimisel tekkis viga.",
|
||||
"com_error_input_length": "Viimase sõnumi märkide arv on liiga pikk, ületades märkide limiidi (vastavalt {{0}}). Palun lühendage oma sõnumit, kohandage vestluse parameetrites maksimaalset konteksti suurust või jätkamiseks hargnege vestlus.",
|
||||
"com_error_invalid_agent_provider": "\"{{0}}\" teenusepakkuja ei toeta agentide kasutamist. Palun vali agendi seadetest toetatud teenusepakkuja.",
|
||||
"com_error_invalid_user_key": "Esitati vigane võti. Esitage kehtiv võti ja proovige uuesti.",
|
||||
"com_error_moderation": "Tundub, et esitatud sisu on meie modereerimissüsteemi poolt märgistatud kui meie kogukonna juhistega mitte vastav. Me ei saa selle konkreetse teemaga jätkata. Kui teil on muid küsimusi või teemasid, mida soovite uurida, muutke oma sõnumit või looge uus vestlus.",
|
||||
"com_error_no_base_url": "Baasaadressi ei leitud. Palun lisage see ja proovige uuesti.",
|
||||
"com_error_no_user_key": "Võtit ei leitud. Palun sisestage võti ja proovige uuesti.",
|
||||
"com_files_filter": "Filtreeri faile...",
|
||||
"com_files_no_results": "Tulemusi pole.",
|
||||
"com_files_number_selected": "{{0}} / {{1}} üksust valitud",
|
||||
"com_files_table": "Failide tabel",
|
||||
"com_generated_files": "Genereeritud failid:",
|
||||
"com_hide_examples": "Peida näited",
|
||||
"com_nav_2fa": "Kaheastmeline autentimine (2FA)",
|
||||
"com_nav_account_settings": "Konto seaded",
|
||||
"com_nav_always_make_prod": "Tee uued versioonid alati toodangusse",
|
||||
"com_nav_archive_created_at": "Arhiveerimise kuupäev",
|
||||
"com_nav_archive_name": "Nimi",
|
||||
"com_nav_archived_chats": "Arhiveeritud vestlused",
|
||||
"com_nav_at_command": "@-käsk",
|
||||
"com_nav_at_command_description": "Lülita käsk \"@\" sisse/välja lõpp-punktide, mudelite, eelseadistuste jms vahetamiseks.",
|
||||
"com_nav_audio_play_error": "Viga heli esitamisel: {{0}}",
|
||||
"com_nav_audio_process_error": "Viga heli töötlemisel: {{0}}",
|
||||
"com_nav_auto_scroll": "Automaatne kerimine vestluse avamisel viimase sõnumini",
|
||||
"com_nav_auto_send_prompts": "Saada vihjed automaatselt",
|
||||
"com_nav_auto_send_text": "Saada tekst automaatselt",
|
||||
"com_nav_auto_send_text_disabled": "Keelamiseks määra -1",
|
||||
"com_nav_auto_transcribe_audio": "Transkribeeri heli automaatselt",
|
||||
"com_nav_automatic_playback": "Esita viimane sõnum automaatselt",
|
||||
"com_nav_balance": "Saldo",
|
||||
"com_nav_browser": "Brauser",
|
||||
"com_nav_center_chat_input": "Kuva ",
|
||||
"com_nav_change_picture": "Muuda pilti",
|
||||
"com_nav_chat_commands": "Vestluskäsud",
|
||||
"com_nav_chat_commands_info": "Need käsud aktiveeritakse konkreetsete märkide sisestamisel sõnumi alguses. Iga käsk käivitatakse sellele määratud eesliitega. Saate need keelata, kui kasutate neid märke sageli sõnumite alustamiseks.",
|
||||
"com_nav_chat_direction": "Vestluse suund",
|
||||
"com_nav_clear_all_chats": "Tühjenda kõik vestlused",
|
||||
"com_nav_clear_cache_confirm_message": "Oled sa kindel, et sa soovid vahemälu tühjendada?",
|
||||
"com_nav_clear_conversation": "Tühjenda vestlused",
|
||||
"com_nav_clear_conversation_confirm_message": "Oled sa kindel, et sa soovid kõik vestlused tühjendada? See on pöördumatu.",
|
||||
"com_nav_close_sidebar": "Sulge külgriba",
|
||||
"com_nav_commands": "Käsud",
|
||||
"com_nav_confirm_clear": "Kinnita tühjendamine",
|
||||
"com_nav_conversation_mode": "Vestlusrežiim",
|
||||
"com_nav_convo_menu_options": "Vestluse menüü valikud",
|
||||
"com_nav_db_sensitivity": "Detsibelli tundlikkus",
|
||||
"com_nav_delete_account": "Kustuta konto",
|
||||
"com_nav_delete_account_button": "Kustuta minu konto jäädavalt",
|
||||
"com_nav_delete_account_confirm": "Kustuta konto - oled sa kindel?",
|
||||
"com_nav_delete_account_email_placeholder": "Palun sisesta oma konto e-post",
|
||||
"com_nav_delete_cache_storage": "Kustuta TTS vahemälu",
|
||||
"com_nav_delete_data_info": "Kõik sinu andmed kustutatakse.",
|
||||
"com_nav_delete_warning": "HOIATUS: See kustutab sinu konto jäädavalt.",
|
||||
"com_nav_edit_chat_badges": "Muuda vestluse märgiseid",
|
||||
"com_nav_enable_cache_tts": "Luba TTS vahemälu",
|
||||
"com_nav_enable_cloud_browser_voice": "Kasuta pilvepõhiseid hääli",
|
||||
"com_nav_enabled": "Lubatud",
|
||||
"com_nav_engine": "Mootor",
|
||||
"com_nav_enter_to_send": "Vajuta Enter sõnumite saatmiseks",
|
||||
"com_nav_export": "Ekspordi",
|
||||
"com_nav_export_all_message_branches": "Ekspordi kõik sõnumite harud",
|
||||
"com_nav_export_conversation": "Ekspordi vestlus",
|
||||
"com_nav_export_filename": "Failinimi",
|
||||
"com_nav_export_filename_placeholder": "Määra failinimi",
|
||||
"com_nav_export_include_endpoint_options": "Kaasa otspunkti valikud",
|
||||
"com_nav_export_recursive": "Rekursiivne",
|
||||
"com_nav_export_recursive_or_sequential": "Rekursiivne või järjestikune?",
|
||||
"com_nav_export_type": "Tüüp",
|
||||
"com_nav_external": "Väline",
|
||||
"com_nav_font_size": "Sõnumi fondi suurus",
|
||||
"com_nav_font_size_base": "Keskmine",
|
||||
"com_nav_font_size_lg": "Suur",
|
||||
"com_nav_font_size_sm": "Väike",
|
||||
"com_nav_font_size_xl": "Eriti suur",
|
||||
"com_nav_font_size_xs": "Eriti väike",
|
||||
"com_nav_help_faq": "Abi ja KKK",
|
||||
"com_nav_hide_panel": "Peida kõige parempoolsem külgpaneel",
|
||||
"com_nav_info_code_artifacts": "Võimaldab katsetuslike koodiartefaktide kuvamist vestluse kõrval",
|
||||
"com_nav_info_code_artifacts_agent": "Võimaldab selle agendi jaoks koodiartefaktide kasutamist. Vaikimisi lisatakse artefaktide kasutamisele spetsiifilised täiendavad juhised, välja arvatud juhul, kui on lubatud \"Kohandatud viibarežiim\".",
|
||||
"com_nav_info_custom_prompt_mode": "Kui see on lubatud, siis vaikimisi artefaktide süsteemiviipa ei lisata. Kõik artefakte genereerivad juhised tuleb selles režiimis käsitsi esitada.",
|
||||
"com_nav_info_enter_to_send": "Kui see on lubatud, saadab `ENTER` sõnumi. Kui see on keelatud, lisab Enter uue rea ja sõnumi saatmiseks peate vajutama `CTRL + ENTER` / `⌘ + ENTER`.",
|
||||
"com_nav_info_fork_change_default": "`Ainult nähtavad sõnumid` sisaldab ainult otsest teed valitud sõnumini. `Kaasa seotud harud` lisab harud mööda teed. `Kaasa kõik siia/siit` sisaldab kõiki ühendatud sõnumeid ja harusid.",
|
||||
"com_nav_info_fork_split_target_setting": "Kui see on lubatud, algab hargnemine sihtsõnumist vestluse viimase sõnumini vastavalt valitud käitumisele.",
|
||||
"com_nav_info_include_shadcnui": "Kui see on lubatud, siis lisatakse juhised shadcn/ui komponentide kasutamiseks. shadcn/ui on Radix UI ja Tailwind CSS-i abil loodud taaskasutatavate komponentide kogu. Märkus: need on pikad juhised, peaksid lubama ainult siis, kui LLM-i õigete importide ja komponentide teavitamine on sinu jaoks oluline. Nende komponentide kohta lisateabe saamiseks külastage: https://ui.shadcn.com/",
|
||||
"com_nav_info_latex_parsing": "Kui see on lubatud, renderdatakse sõnumites olev LaTeX-kood matemaatiliste võrranditena. Selle keelamine võib jõudlust parandada, kui sa LaTeX-i renderdamist ei vaja.",
|
||||
"com_nav_info_save_badges_state": "Kui see on sisse lülitatud, salvestatakse vestluse märgised. See tähendab, et kui loote uue vestluse, jäävad märgised samasse olekusse nagu eelmises vestluses. Kui valiku välja lülitate, lähtestatakse märgised iga vestlusega nende vaikeseisundisse.",
|
||||
"com_nav_info_save_draft": "Kui see on lubatud, salvestatakse vestlusvormi sisestatud tekst ja manused automaatselt kohalikult mustanditena. Need mustandid on saadaval ka siis, kui lehe uuesti laadite või teisele vestlusele lülitute. Mustandid salvestatakse lokaalselt sinu seadmesse ja kustutatakse pärast sõnumi saatmist.",
|
||||
"com_nav_info_show_thinking": "Kui see on lubatud, kuvatakse vestluses vaikimisi avatud mõtlemise rippmenüüd, võimaldades sul AI põhjendusi reaalajas vaadata. Kui see on keelatud, jäävad mõtlemise rippmenüüd vaikimisi suletuks, et saada puhtam ja sujuvam liides",
|
||||
"com_nav_info_user_name_display": "Kui see on lubatud, kuvatakse saatja kasutajanimi iga sinu saadetud sõnumi kohal. Kui see on keelatud, näed oma sõnumite kohal ainult \"Sina\".",
|
||||
"com_nav_lang_arabic": "العربية",
|
||||
"com_nav_lang_auto": "Tuvasta automaatselt",
|
||||
"com_nav_lang_brazilian_portuguese": "Português Brasileiro",
|
||||
"com_nav_lang_chinese": "中文",
|
||||
"com_nav_lang_dutch": "Nederlands",
|
||||
"com_nav_lang_english": "English",
|
||||
"com_nav_lang_estonian": "Eesti keel",
|
||||
"com_nav_lang_finnish": "Suomi",
|
||||
"com_nav_lang_french": "Français ",
|
||||
"com_nav_lang_georgian": "ქართული",
|
||||
"com_nav_lang_german": "Deutsch",
|
||||
"com_nav_lang_hebrew": "עברית",
|
||||
"com_nav_lang_hungarian": "Ungari",
|
||||
"com_nav_lang_indonesia": "Indonesia",
|
||||
"com_nav_lang_italian": "Italiano",
|
||||
"com_nav_lang_japanese": "日本語",
|
||||
"com_nav_lang_korean": "한국어",
|
||||
"com_nav_lang_persian": "فارسی",
|
||||
"com_nav_lang_polish": "Polski",
|
||||
"com_nav_lang_portuguese": "Português",
|
||||
"com_nav_lang_russian": "Русский",
|
||||
"com_nav_lang_spanish": "Español",
|
||||
"com_nav_lang_swedish": "Svenska",
|
||||
"com_nav_lang_thai": "ไทย",
|
||||
"com_nav_lang_traditional_chinese": "繁體中文",
|
||||
"com_nav_lang_turkish": "Türkçe",
|
||||
"com_nav_lang_vietnamese": "Tiếng Việt",
|
||||
"com_nav_language": "Keel",
|
||||
"com_nav_latex_parsing": "LaTeXi parsimine sõnumites (võib mõjutada jõudlust)",
|
||||
"com_nav_log_out": "Logi välja",
|
||||
"com_nav_long_audio_warning": "Pikemate tekstide töötlemine võtab kauem aega.",
|
||||
"com_nav_maximize_chat_space": "Maksimeeri vestluse ruumi",
|
||||
"com_nav_modular_chat": "Luba otspunktide vahetamine vestluse keskel",
|
||||
"com_nav_my_files": "Minu failid",
|
||||
"com_nav_not_supported": "Pole toetatud",
|
||||
"com_nav_open_sidebar": "Ava külgriba",
|
||||
"com_nav_playback_rate": "Heli taasesituse kiirus",
|
||||
"com_nav_plugin_auth_error": "Selle pistikprogrammi autentimisel tekkis viga. Palun proovi uuesti.",
|
||||
"com_nav_plugin_install": "Paigalda",
|
||||
"com_nav_plugin_search": "Otsi pistikprogramme",
|
||||
"com_nav_plugin_store": "Pistikprogrammide pood",
|
||||
"com_nav_plugin_uninstall": "Eemalda",
|
||||
"com_nav_plus_command": "+-käsk",
|
||||
"com_nav_plus_command_description": "Lülita käsk \"+\" sisse/välja mitme vastuse seadistuse lisamiseks",
|
||||
"com_nav_profile_picture": "Profiilipilt",
|
||||
"com_nav_save_badges_state": "Salvesta märgised",
|
||||
"com_nav_save_drafts": "Salvesta mustandid kohalikult",
|
||||
"com_nav_scroll_button": "Keri nupu lõppu",
|
||||
"com_nav_search_placeholder": "Otsi sõnumeid",
|
||||
"com_nav_send_message": "Saada sõnum",
|
||||
"com_nav_setting_account": "Konto",
|
||||
"com_nav_setting_beta": "Beeta funktsioonid",
|
||||
"com_nav_setting_chat": "Vestlus",
|
||||
"com_nav_setting_data": "Andmekontroll",
|
||||
"com_nav_setting_general": "Üldine",
|
||||
"com_nav_setting_speech": "Kõne",
|
||||
"com_nav_settings": "Seaded",
|
||||
"com_nav_shared_links": "Jagatud lingid",
|
||||
"com_nav_show_code": "Näita koodi alati, kui kasutatakse koodiinterpreteerijat",
|
||||
"com_nav_show_thinking": "Ava mõtlemise rippmenüüd vaikimisi",
|
||||
"com_nav_slash_command": "/-käsk",
|
||||
"com_nav_slash_command_description": "Lülita käsk \"/\" sisse/välja, et valida klaviatuuri kaudu viipa",
|
||||
"com_nav_speech_to_text": "Kõnest tekstiks",
|
||||
"com_nav_stop_generating": "Lõpeta genereerimine",
|
||||
"com_nav_text_to_speech": "Tekst kõneks",
|
||||
"com_nav_theme": "Teema",
|
||||
"com_nav_theme_dark": "Tume",
|
||||
"com_nav_theme_light": "Hele",
|
||||
"com_nav_theme_system": "Süsteem",
|
||||
"com_nav_tool_dialog": "Assistendi tööriistad",
|
||||
"com_nav_tool_dialog_agents": "Agendi tööriistad",
|
||||
"com_nav_tool_dialog_description": "Tööriistade valikute säilitamiseks tuleb assistent salvestada.",
|
||||
"com_nav_tool_remove": "Eemalda",
|
||||
"com_nav_tool_search": "Otsi tööriistu",
|
||||
"com_nav_user": "KASUTAJA",
|
||||
"com_nav_user_msg_markdown": "Renderda kasutajasõnumid markdownina",
|
||||
"com_nav_user_name_display": "Kuva kasutajanimi sõnumites",
|
||||
"com_nav_voice_select": "Hääl",
|
||||
"com_show_agent_settings": "Näita agendi seadeid",
|
||||
"com_show_completion_settings": "Näita lõpetamise seadeid",
|
||||
"com_show_examples": "Näita näiteid",
|
||||
"com_sidepanel_agent_builder": "Agendi ehitaja",
|
||||
"com_sidepanel_assistant_builder": "Assistendi ehitaja",
|
||||
"com_sidepanel_attach_files": "Lisa faile",
|
||||
"com_sidepanel_conversation_tags": "Järjehoidjad",
|
||||
"com_sidepanel_hide_panel": "Peida paneel",
|
||||
"com_sidepanel_manage_files": "Halda faile",
|
||||
"com_sidepanel_parameters": "Parameetrid",
|
||||
"com_ui_2fa_account_security": "Kaheastmeline autentimine lisab teie kontole täiendava turvalisuse kihi",
|
||||
"com_ui_2fa_disable": "Lülita 2FA välja",
|
||||
"com_ui_2fa_disable_error": "Tekkis viga kaheastmelise autentimise väljalülitamisel",
|
||||
"com_ui_2fa_disabled": "2FA on välja lülitatud",
|
||||
"com_ui_2fa_enable": "Aktiveeri 2FA",
|
||||
"com_ui_2fa_enabled": "2FA on aktiveeritud",
|
||||
"com_ui_2fa_generate_error": "Kaheastmelise autentimise seadete genereerimisel tekkis viga",
|
||||
"com_ui_2fa_invalid": "Vale kaheastmeline autentimise kood",
|
||||
"com_ui_2fa_setup": "Seadista 2FA",
|
||||
"com_ui_2fa_verified": "Kaheastmeline autentimine õnnestus",
|
||||
"com_ui_accept": "Nõustun",
|
||||
"com_ui_add": "Lisa",
|
||||
"com_ui_add_model_preset": "Lisa mudel või eelseadistus täiendava vastuse jaoks",
|
||||
"com_ui_add_multi_conversation": "Lisa mitmevestlus",
|
||||
"com_ui_admin": "Administraator",
|
||||
"com_ui_admin_access_warning": "Administraatori juurdepääsu keelamine sellele funktsioonile võib põhjustada ootamatuid kasutajaliidese probleeme, mis nõuavad värskendamist. Kui see on salvestatud, on ainus viis taastada liideseseade kaudu librechat.yaml konfiguratsioonis, mis mõjutab kõiki rolle.",
|
||||
"com_ui_admin_settings": "Administraatori seaded",
|
||||
"com_ui_advanced": "Täpsemad",
|
||||
"com_ui_advanced_settings": "Täpsemad seaded",
|
||||
"com_ui_agent": "Agent",
|
||||
"com_ui_agent_chain": "Agentide ahel (agentide kombinatsioon)",
|
||||
"com_ui_agent_chain_info": "Võimaldab luua agentide ahelaid. Iga agent saab ligi eelmise agendi väljundile. Põhineb \"Mixture-of-Agents\" arhitektuuril, kus agendid kasutavad eelmisi väljundeid lisainfona.",
|
||||
"com_ui_agent_chain_max": "Oled ära kasutanud kõik {{0}} agenti.",
|
||||
"com_ui_agent_delete_error": "Agendi kustutamisel tekkis viga",
|
||||
"com_ui_agent_deleted": "Agendi kustutamine õnnestus",
|
||||
"com_ui_agent_duplicate_error": "Agendi dubleerimisel tekkis viga",
|
||||
"com_ui_agent_duplicated": "Agendi dubleerimine õnnestus",
|
||||
"com_ui_agent_editing_allowed": "Teised kasutajad saavad seda agenti juba muuta",
|
||||
"com_ui_agent_recursion_limit": "Agendi sammude piir",
|
||||
"com_ui_agent_recursion_limit_info": "Piirab, mitu sammu agent saab teha ühe käivituse jooksul enne lõpliku vastuse andmist. Vaikimisi lubatakse 25 sammu. Samm on kas AI API päring või tööriista kasutamise etapp. Näiteks, lihtne tööriista kasutamine võtab 3 sammu: esialgne päring, tööriista kasutamine ja järelpäring.",
|
||||
"com_ui_agent_shared_to_all": "Seda agenti on jagatud kõigi kasutajatega",
|
||||
"com_ui_agent_var": "{{0}} agent",
|
||||
"com_ui_agents": "Agendid",
|
||||
"com_ui_agents_allow_create": "Luba agentide loomine",
|
||||
"com_ui_agents_allow_share_global": "Luba agentide jagamine kõigile kasutajatele",
|
||||
"com_ui_agents_allow_use": "Luba agentide kasutamine",
|
||||
"com_ui_all": "kõik",
|
||||
"com_ui_all_proper": "Kõik",
|
||||
"com_ui_analyzing": "Analüüsimine",
|
||||
"com_ui_analyzing_finished": "Analüüs lõpetatud",
|
||||
"com_ui_api_key": "API võti",
|
||||
"com_ui_archive": "Arhiveeri",
|
||||
"com_ui_archive_delete_error": "Arhiveeritud vestluse kustutamine ebaõnnestus",
|
||||
"com_ui_archive_error": "Vestluse arhiveerimine ebaõnnestus",
|
||||
"com_ui_artifact_click": "Klõpsa avamiseks",
|
||||
"com_ui_artifacts": "Artefaktid",
|
||||
"com_ui_artifacts_toggle": "Lülita artefaktide kasutajaliides sisse/välja",
|
||||
"com_ui_artifacts_toggle_agent": "Luba artefaktid",
|
||||
"com_ui_ascending": "Asc",
|
||||
"com_ui_assistant": "Assistent",
|
||||
"com_ui_assistant_delete_error": "Assistendi kustutamisel tekkis viga",
|
||||
"com_ui_assistant_deleted": "Assistendi kustutamine õnnestus",
|
||||
"com_ui_assistants": "Assistendid",
|
||||
"com_ui_assistants_output": "Assistentide väljund",
|
||||
"com_ui_attach_error": "Faili ei saa lisada. Loo või vali vestlus või proovi lehte värskendada.",
|
||||
"com_ui_attach_error_openai": "Assistendi faile ei saa teistele otspunktidele lisada",
|
||||
"com_ui_attach_error_size": "Failisuuruse limiit on otspunkti jaoks ületatud:",
|
||||
"com_ui_attach_error_type": "Otspunkti jaoks toetamatu failitüüp:",
|
||||
"com_ui_attach_remove": "Eemalda fail",
|
||||
"com_ui_attach_warn_endpoint": "Sobiva tööriista puudumisel võidakse mitte-assistendi faile ignoreerida",
|
||||
"com_ui_attachment": "Manus",
|
||||
"com_ui_auth_type": "Autentimise tüüp",
|
||||
"com_ui_auth_url": "Autentimise URL",
|
||||
"com_ui_authentication": "Autentimine",
|
||||
"com_ui_authentication_type": "Autentimise tüüp",
|
||||
"com_ui_avatar": "Avatar",
|
||||
"com_ui_azure": "Azure",
|
||||
"com_ui_back_to_chat": "Tagasi vestlusesse",
|
||||
"com_ui_back_to_prompts": "Tagasi sisendite juurde",
|
||||
"com_ui_backup_codes": "Varukoodid",
|
||||
"com_ui_backup_codes_regenerate_error": "Varukoodide loomisel tekkis viga",
|
||||
"com_ui_backup_codes_regenerated": "Varukoodide loomine oli edukas",
|
||||
"com_ui_basic": "Põhiline",
|
||||
"com_ui_basic_auth_header": "Põhiline autentimise päis",
|
||||
"com_ui_bearer": "Bearer",
|
||||
"com_ui_bookmark_delete_confirm": "Oled sa kindel, et sa soovid selle järjehoidja kustutada?",
|
||||
"com_ui_bookmarks": "Järjehoidjad",
|
||||
"com_ui_bookmarks_add": "Lisa järjehoidjaid",
|
||||
"com_ui_bookmarks_add_to_conversation": "Lisa praegusesse vestlusse",
|
||||
"com_ui_bookmarks_count": "Hulk",
|
||||
"com_ui_bookmarks_create_error": "Järjehoidja loomisel tekkis viga",
|
||||
"com_ui_bookmarks_create_exists": "See järjehoidja on juba olemas",
|
||||
"com_ui_bookmarks_create_success": "Järjehoidja loomine õnnestus",
|
||||
"com_ui_bookmarks_delete": "Kustuta järjehoidja",
|
||||
"com_ui_bookmarks_delete_error": "Järjehoidja kustutamisel tekkis viga",
|
||||
"com_ui_bookmarks_delete_success": "Järjehoidja kustutamine õnnestus",
|
||||
"com_ui_bookmarks_description": "Kirjeldus",
|
||||
"com_ui_bookmarks_edit": "Muuda järjehoidjat",
|
||||
"com_ui_bookmarks_filter": "Filtreeri järjehoidjaid...",
|
||||
"com_ui_bookmarks_new": "Uus järjehoidja",
|
||||
"com_ui_bookmarks_title": "Pealkiri",
|
||||
"com_ui_bookmarks_update_error": "Järjehoidja uuendamisel tekkis viga",
|
||||
"com_ui_bookmarks_update_success": "Järjehoidja uuendamine õnnestus",
|
||||
"com_ui_bulk_delete_error": "Jagatud linkide kustutamine ebaõnnestus",
|
||||
"com_ui_callback_url": "Tagasikutsumise URL",
|
||||
"com_ui_cancel": "Tühista",
|
||||
"com_ui_category": "Kategooria",
|
||||
"com_ui_chat": "Vestlus",
|
||||
"com_ui_chat_history": "Vestluse ajalugu",
|
||||
"com_ui_clear": "Tühjenda",
|
||||
"com_ui_clear_all": "Tühjenda kõik",
|
||||
"com_ui_client_id": "Kliendi ID",
|
||||
"com_ui_client_secret": "Kliendi saladus",
|
||||
"com_ui_close": "Sulge",
|
||||
"com_ui_close_menu": "Sulge menüü",
|
||||
"com_ui_code": "Kood",
|
||||
"com_ui_collapse_chat": "Ahenda vestlus",
|
||||
"com_ui_command_placeholder": "Valikuline: sisesta sisendi jaoks käsk või kasutatakse nime",
|
||||
"com_ui_command_usage_placeholder": "Vali sisend käsu või nime järgi",
|
||||
"com_ui_complete_setup": "Valmis",
|
||||
"com_ui_confirm_action": "Kinnita tegevus",
|
||||
"com_ui_confirm_admin_use_change": "Selle seadistuse muutmine blokeerib juurdepääsu administraatoritele, sealhulgas sinule endale. Oled sa kindel, et sa soovid jätkata?",
|
||||
"com_ui_confirm_change": "Kinnita muudatus",
|
||||
"com_ui_context": "Kontekst",
|
||||
"com_ui_continue": "Jätka",
|
||||
"com_ui_controls": "Juhtelemendid",
|
||||
"com_ui_convo_delete_error": "Vestluse kustutamine ebaõnnestus",
|
||||
"com_ui_copied": "Kopeeritud!",
|
||||
"com_ui_copied_to_clipboard": "Kopeeritud lõikepuhvrisse",
|
||||
"com_ui_copy_code": "Kopeeri kood",
|
||||
"com_ui_copy_link": "Kopeeri link",
|
||||
"com_ui_copy_to_clipboard": "Kopeeri lõikepuhvrisse",
|
||||
"com_ui_create": "Loo",
|
||||
"com_ui_create_link": "Loo link",
|
||||
"com_ui_create_prompt": "Loo sisend",
|
||||
"com_ui_currently_production": "Praegu tootmises",
|
||||
"com_ui_custom": "Kohandatud",
|
||||
"com_ui_custom_header_name": "Kohandatud päise nimi",
|
||||
"com_ui_custom_prompt_mode": "Kohandatud viibarežiim",
|
||||
"com_ui_dashboard": "Armatuurlaud",
|
||||
"com_ui_date": "Kuupäev",
|
||||
"com_ui_date_april": "Aprill",
|
||||
"com_ui_date_august": "August",
|
||||
"com_ui_date_december": "Detsember",
|
||||
"com_ui_date_february": "Veebruar",
|
||||
"com_ui_date_january": "Jaanuar",
|
||||
"com_ui_date_july": "Juuli",
|
||||
"com_ui_date_june": "Juuni",
|
||||
"com_ui_date_march": "Märts",
|
||||
"com_ui_date_may": "Mai",
|
||||
"com_ui_date_november": "November",
|
||||
"com_ui_date_october": "Oktoober",
|
||||
"com_ui_date_previous_30_days": "Eelmised 30 päeva",
|
||||
"com_ui_date_previous_7_days": "Eelmised 7 päeva",
|
||||
"com_ui_date_september": "September",
|
||||
"com_ui_date_today": "Täna",
|
||||
"com_ui_date_yesterday": "Eile",
|
||||
"com_ui_decline": "Ma ei nõustu",
|
||||
"com_ui_default_post_request": "Vaikimisi (POST päring)",
|
||||
"com_ui_delete": "Kustuta",
|
||||
"com_ui_delete_action": "Kustuta tegevus",
|
||||
"com_ui_delete_action_confirm": "Oled sa kindel, et sa soovid selle tegevuse kustutada?",
|
||||
"com_ui_delete_agent_confirm": "Oled sa kindel, et sa soovid selle agendi kustutada?",
|
||||
"com_ui_delete_assistant_confirm": "Oled sa kindel, et sa soovid selle assistendi kustutada? Seda ei saa tagasi võtta.",
|
||||
"com_ui_delete_confirm": "See kustutab",
|
||||
"com_ui_delete_confirm_prompt_version_var": "See kustutab valitud versiooni \"{{0}}\" jaoks. Kui muid versioone ei eksisteeri, kustutatakse sisend.",
|
||||
"com_ui_delete_conversation": "Kustuta vestlus?",
|
||||
"com_ui_delete_prompt": "Kustuta sisend?",
|
||||
"com_ui_delete_shared_link": "Kustuta jagatud link?",
|
||||
"com_ui_delete_tool": "Kustuta tööriist",
|
||||
"com_ui_delete_tool_confirm": "Oled sa kindel, et sa soovid selle tööriista kustutada?",
|
||||
"com_ui_descending": "Desc",
|
||||
"com_ui_description": "Kirjeldus",
|
||||
"com_ui_description_placeholder": "Valikuline: sisesta sisendi jaoks kuvatav kirjeldus",
|
||||
"com_ui_disabling": "Välja lülitamine...",
|
||||
"com_ui_download": "Laadi alla",
|
||||
"com_ui_download_artifact": "Laadi artefakt alla",
|
||||
"com_ui_download_backup": "Laadi alla varukoodid",
|
||||
"com_ui_download_backup_tooltip": "Enne jätkamist laadi alla oma varukoodid. Vajad neid ligipääsu taastamiseks, kui peaksid oma autentimisseadme kaotama.",
|
||||
"com_ui_download_error": "Viga faili allalaadimisel. Fail võib olla kustutatud.",
|
||||
"com_ui_drag_drop": "Lohistage",
|
||||
"com_ui_dropdown_variables": "Rippmenüü muutujad:",
|
||||
"com_ui_dropdown_variables_info": "Loo sisendite jaoks kohandatud rippmenüüd: `{{muutuja_nimi:valik1|valik2|valik3}}`",
|
||||
"com_ui_duplicate": "Dubleeri",
|
||||
"com_ui_duplication_error": "Vestluse dubleerimisel tekkis viga",
|
||||
"com_ui_duplication_processing": "Vestlust dubleeritakse...",
|
||||
"com_ui_duplication_success": "Vestluse dubleerimine õnnestus",
|
||||
"com_ui_edit": "Muuda",
|
||||
"com_ui_empty_category": "-",
|
||||
"com_ui_endpoint": "Otspunkt",
|
||||
"com_ui_endpoint_menu": "LLM otspunkti menüü",
|
||||
"com_ui_enter": "Sisesta",
|
||||
"com_ui_enter_api_key": "Sisesta API võti",
|
||||
"com_ui_enter_openapi_schema": "Sisesta siia oma OpenAPI skeem",
|
||||
"com_ui_error": "Viga",
|
||||
"com_ui_error_connection": "Viga serveriga ühendamisel, proovi lehte värskendada.",
|
||||
"com_ui_error_save_admin_settings": "Administraatori seadete salvestamisel tekkis viga.",
|
||||
"com_ui_examples": "Näited",
|
||||
"com_ui_expand_chat": "Laiendage Vestlus",
|
||||
"com_ui_export_convo_modal": "Ekspordi vestluse modaal",
|
||||
"com_ui_field_required": "See väli on kohustuslik",
|
||||
"com_ui_filter_prompts": "Filtreeri sisendid",
|
||||
"com_ui_filter_prompts_name": "Filtreeri sisendeid nime järgi",
|
||||
"com_ui_finance": "Raha",
|
||||
"com_ui_fork": "Hargne",
|
||||
"com_ui_fork_all_target": "Kaasa kõik siia/siit",
|
||||
"com_ui_fork_branches": "Kaasa seotud harud",
|
||||
"com_ui_fork_change_default": "Vaikimisi hargnemise valik",
|
||||
"com_ui_fork_default": "Kasuta vaikimisi hargnemise valikut",
|
||||
"com_ui_fork_error": "Vestluse hargnemisel tekkis viga",
|
||||
"com_ui_fork_from_message": "Vali hargnemise valik",
|
||||
"com_ui_fork_info_1": "Kasuta seda seadistust sõnumite hargnemiseks soovitud käitumisega.",
|
||||
"com_ui_fork_info_2": "\"Hargnemine\" viitab uue vestluse loomisele, mis algab/lõpeb praeguse vestluse konkreetsetest sõnumitest, luues koopia vastavalt valitud valikutele.",
|
||||
"com_ui_fork_info_3": "\"Sihtsõnum\" viitab kas sõnumile, millest see hüpikaken avati, või, kui märgid \"{{0}}\", vestluse viimasele sõnumile.",
|
||||
"com_ui_fork_info_branches": "See valik hargneb nähtavad sõnumid koos seotud harudega; teisisõnu, otsene tee sihtsõnumini, sealhulgas harud mööda teed.",
|
||||
"com_ui_fork_info_button_label": "Vaata teavet vestluste hargnemise kohta",
|
||||
"com_ui_fork_info_remember": "Märgi see, et jätta meelde valitud valikud edaspidiseks kasutamiseks, muutes vestluste hargnemise eelistatud viisil kiiremaks.",
|
||||
"com_ui_fork_info_start": "Kui see on märgitud, algab hargnemine sellest sõnumist vestluse viimase sõnumini vastavalt ülalvalitud käitumisele.",
|
||||
"com_ui_fork_info_target": "See valik hargneb kõik sõnumid, mis viivad sihtsõnumini, kaasa arvatud selle naabrid; teisisõnu, kõik sõnumiharud, olenemata sellest, kas need on nähtavad või samal teel, on kaasatud.",
|
||||
"com_ui_fork_info_visible": "See valik hargneb ainult nähtavad sõnumid; teisisõnu, otsene tee sihtsõnumini, ilma harudeta.",
|
||||
"com_ui_fork_more_details_about": "Vaata lisateavet ja üksikasju \"{{0}}\" hargnemisvaliku kohta",
|
||||
"com_ui_fork_more_info_options": "Vaata kõigi hargnemisvalikute ja nende käitumise üksikasjalikku selgitust",
|
||||
"com_ui_fork_processing": "Vestlust hargnetakse...",
|
||||
"com_ui_fork_remember": "Jäta meelde",
|
||||
"com_ui_fork_remember_checked": "Sinu valik jäetakse pärast kasutamist meelde. Muuda seda igal ajal seadetes.",
|
||||
"com_ui_fork_split_target": "Alusta hargnemist siit",
|
||||
"com_ui_fork_split_target_setting": "Alusta vaikimisi sihtsõnumist hargnemist",
|
||||
"com_ui_fork_success": "Vestluse hargnemine õnnestus",
|
||||
"com_ui_fork_visible": "Ainult nähtavad sõnumid",
|
||||
"com_ui_generate_backup": "Loo varukoodid",
|
||||
"com_ui_generate_qrcode": "Loo QR-kood",
|
||||
"com_ui_generating": "Loomine...",
|
||||
"com_ui_global_group": "Ülene grupp",
|
||||
"com_ui_go_back": "Mine tagasi",
|
||||
"com_ui_go_to_conversation": "Mine vestlusesse",
|
||||
"com_ui_good_afternoon": "Tere pärastlõunast",
|
||||
"com_ui_good_evening": "Tere õhtust",
|
||||
"com_ui_good_morning": "Tere hommikust",
|
||||
"com_ui_happy_birthday": "Mul on 1. sünnipäev!",
|
||||
"com_ui_hide_qr": "Peida QR-kood",
|
||||
"com_ui_host": "Host",
|
||||
"com_ui_idea": "Ideed",
|
||||
"com_ui_image_gen": "Pildi genereerimine",
|
||||
"com_ui_import": "Impordi",
|
||||
"com_ui_import_conversation_error": "Vestluste importimisel tekkis viga",
|
||||
"com_ui_import_conversation_file_type_error": "Toetamatu imporditüüp",
|
||||
"com_ui_import_conversation_info": "Impordi vestlused JSON-failist",
|
||||
"com_ui_import_conversation_success": "Vestluste importimine õnnestus",
|
||||
"com_ui_include_shadcnui": "Kaasa shadcn/ui komponentide juhised",
|
||||
"com_ui_include_shadcnui_agent": "Kaasa shadcn/ui juhised",
|
||||
"com_ui_input": "Sisend",
|
||||
"com_ui_instructions": "Juhised",
|
||||
"com_ui_late_night": "Head hilisõhtut",
|
||||
"com_ui_latest_footer": "Igaühele oma AI.",
|
||||
"com_ui_latest_production_version": "Viimane tootmisversioon",
|
||||
"com_ui_latest_version": "Viimane versioon",
|
||||
"com_ui_librechat_code_api_key": "Hangi oma LibreChati koodiinterpreteerimise API võti",
|
||||
"com_ui_librechat_code_api_subtitle": "Turvaline. Mitmekeelne. Sisend-/väljundfailid.",
|
||||
"com_ui_librechat_code_api_title": "Käivita AI koodi",
|
||||
"com_ui_loading": "Laeb...",
|
||||
"com_ui_locked": "Lukus",
|
||||
"com_ui_logo": "{{0}} logo",
|
||||
"com_ui_manage": "Halda",
|
||||
"com_ui_max_tags": "Maksimaalne lubatud arv on {{0}}, kasutades viimaseid väärtusi.",
|
||||
"com_ui_mcp_servers": "MCP serverid",
|
||||
"com_ui_mention": "Maini otspunkti, assistenti või eelseadistust, et sellele kiiresti üle minna",
|
||||
"com_ui_min_tags": "Rohkem väärtusi ei saa eemaldada, vaja on vähemalt {{0}}.",
|
||||
"com_ui_misc": "Muu",
|
||||
"com_ui_model": "Mudel",
|
||||
"com_ui_model_parameters": "Mudeli parameetrid",
|
||||
"com_ui_more_info": "Rohkem infot",
|
||||
"com_ui_my_prompts": "Minu sisendid",
|
||||
"com_ui_name": "Nimi",
|
||||
"com_ui_new": "Uus",
|
||||
"com_ui_new_chat": "Uus vestlus",
|
||||
"com_ui_new_conversation_title": "Uus vestluse pealkiri",
|
||||
"com_ui_next": "Järgmine",
|
||||
"com_ui_no": "Ei",
|
||||
"com_ui_no_backup_codes": "Varukoodid puuduvad. Palun loo uued",
|
||||
"com_ui_no_bookmarks": "Tundub, et sul pole veel järjehoidjaid. Klõpsa vestlusele ja lisa uus",
|
||||
"com_ui_no_category": "Kategooriat pole",
|
||||
"com_ui_no_changes": "Uuendamiseks pole muudatusi",
|
||||
"com_ui_no_data": "Andmed puuduvad!",
|
||||
"com_ui_no_terms_content": "Kuvamiseks puudub kasutustingimuste sisu",
|
||||
"com_ui_no_valid_items": "Sobivad üksused puuduvad!",
|
||||
"com_ui_none": "Puudub",
|
||||
"com_ui_not_used": "Kasutamata",
|
||||
"com_ui_nothing_found": "Midagi ei leitud",
|
||||
"com_ui_oauth": "OAuth",
|
||||
"com_ui_of": "kohta",
|
||||
"com_ui_off": "Väljas",
|
||||
"com_ui_on": "Sees",
|
||||
"com_ui_openai": "OpenAI",
|
||||
"com_ui_page": "Leht",
|
||||
"com_ui_prev": "Eelmine",
|
||||
"com_ui_preview": "Eelvaade",
|
||||
"com_ui_privacy_policy": "Privaatsuspoliitika",
|
||||
"com_ui_privacy_policy_url": "Privaatsuspoliitika URL",
|
||||
"com_ui_prompt": "Sisend",
|
||||
"com_ui_prompt_already_shared_to_all": "See sisend on juba kõigile kasutajatele jagatud",
|
||||
"com_ui_prompt_name": "Sisendi nimi",
|
||||
"com_ui_prompt_name_required": "Sisendi nimi on kohustuslik",
|
||||
"com_ui_prompt_preview_not_shared": "Autor ei ole selle sisendi jaoks koostööd lubanud.",
|
||||
"com_ui_prompt_text": "Tekst",
|
||||
"com_ui_prompt_text_required": "Tekst on kohustuslik",
|
||||
"com_ui_prompt_update_error": "Sisendi uuendamisel tekkis viga",
|
||||
"com_ui_prompts": "Sisendid",
|
||||
"com_ui_prompts_allow_create": "Luba sisendite loomine",
|
||||
"com_ui_prompts_allow_share_global": "Luba sisendite jagamine kõigile kasutajatele",
|
||||
"com_ui_prompts_allow_use": "Luba sisendite kasutamine",
|
||||
"com_ui_provider": "Teenusepakkuja",
|
||||
"com_ui_read_aloud": "Loe valjusti",
|
||||
"com_ui_redirecting_to_provider": "Ümbersuunamine pakkujale {{0}}, palun oodake...",
|
||||
"com_ui_refresh_link": "Värskenda linki",
|
||||
"com_ui_regenerate": "Genereeri uuesti",
|
||||
"com_ui_regenerate_backup": "Loo varukoodid uuesti",
|
||||
"com_ui_regenerating": "Uuesti loomine...",
|
||||
"com_ui_region": "Piirkond",
|
||||
"com_ui_rename": "Nimeta ümber",
|
||||
"com_ui_rename_conversation": "Nimeta vestlus ümber",
|
||||
"com_ui_rename_failed": "Ei õnnestunud vestlust ümber nimetada",
|
||||
"com_ui_rename_prompt": "Nimeta sisend ümber",
|
||||
"com_ui_requires_auth": "Vajab autentimist",
|
||||
"com_ui_reset_var": "Lähtesta {{0}}",
|
||||
"com_ui_result": "Tulemus",
|
||||
"com_ui_revoke": "Tühista",
|
||||
"com_ui_revoke_info": "Tühista kõik kasutaja esitatud mandaadid",
|
||||
"com_ui_revoke_key_confirm": "Oled sa kindel, et sa soovid selle võtme tühistada?",
|
||||
"com_ui_revoke_key_endpoint": "Tühista võti {{0}} jaoks",
|
||||
"com_ui_revoke_keys": "Tühista võtmed",
|
||||
"com_ui_revoke_keys_confirm": "Oled sa kindel, et sa soovid kõik võtmed tühistada?",
|
||||
"com_ui_role_select": "Roll",
|
||||
"com_ui_roleplay": "Rollimäng",
|
||||
"com_ui_run_code": "Käivita kood",
|
||||
"com_ui_run_code_error": "Koodi käivitamisel tekkis viga",
|
||||
"com_ui_save": "Salvesta",
|
||||
"com_ui_save_badge_changes": "Kas salvestada märgi muudatused?",
|
||||
"com_ui_save_submit": "Salvesta ja esita",
|
||||
"com_ui_saved": "Salvestatud!",
|
||||
"com_ui_schema": "Skeem",
|
||||
"com_ui_scope": "Ulatus",
|
||||
"com_ui_search": "Otsi",
|
||||
"com_ui_secret_key": "Salavõti",
|
||||
"com_ui_select": "Vali",
|
||||
"com_ui_select_file": "Vali fail",
|
||||
"com_ui_select_model": "Vali mudel",
|
||||
"com_ui_select_provider": "Vali teenusepakkuja",
|
||||
"com_ui_select_provider_first": "Vali esmalt teenusepakkuja",
|
||||
"com_ui_select_region": "Vali piirkond",
|
||||
"com_ui_select_search_model": "Otsi mudelit nime järgi",
|
||||
"com_ui_select_search_plugin": "Otsi pistikprogrammi nime järgi",
|
||||
"com_ui_select_search_provider": "Otsi teenusepakkujat nime järgi",
|
||||
"com_ui_select_search_region": "Otsi piirkonda nime järgi",
|
||||
"com_ui_share": "Jaga",
|
||||
"com_ui_share_create_message": "Sinu nimi ja kõik sõnumid, mille sa pärast jagamist lisad, jäävad privaatseks.",
|
||||
"com_ui_share_delete_error": "Jagatud lingi kustutamisel tekkis viga",
|
||||
"com_ui_share_error": "Vestluslingi jagamisel tekkis viga",
|
||||
"com_ui_share_form_description": "Jaga kasutamist.",
|
||||
"com_ui_share_link_to_chat": "Jaga linki vestlusele",
|
||||
"com_ui_share_to_all_users": "Jaga kõigile kasutajatele",
|
||||
"com_ui_share_update_message": "Sinu nimi, kohandatud juhised ja kõik sõnumid, mille sa pärast jagamist lisad, jäävad privaatseks.",
|
||||
"com_ui_share_var": "Jaga {{0}}",
|
||||
"com_ui_shared_link_bulk_delete_success": "Jagatud linkide kustutamine õnnestus",
|
||||
"com_ui_shared_link_delete_success": "Jagatud lingi kustutamine õnnestus",
|
||||
"com_ui_shared_link_not_found": "Jagatud linki ei leitud",
|
||||
"com_ui_shared_prompts": "Jagatud sisendid",
|
||||
"com_ui_shop": "Ostlemine",
|
||||
"com_ui_show": "Kuva",
|
||||
"com_ui_show_all": "Näita kõiki",
|
||||
"com_ui_show_qr": "Näita QR-koodi",
|
||||
"com_ui_sign_in_to_domain": "Logi sisse {{0}}",
|
||||
"com_ui_simple": "Lihtne",
|
||||
"com_ui_size": "Suurus",
|
||||
"com_ui_special_var_current_date": "Praegune kuupäev",
|
||||
"com_ui_special_var_current_datetime": "Praegune kuupäev ja kellaaeg",
|
||||
"com_ui_special_var_current_user": "Praegune kasutaja",
|
||||
"com_ui_special_var_iso_datetime": "UTC ISO kuupäev ja kellaaeg",
|
||||
"com_ui_special_variables": "Erilised muutujad:",
|
||||
"com_ui_special_variables_more_info": "Saad rippmenüüst valida erilisi muutujaid: `{{current_date}}` (tänane kuupäev ja nädalapäev), `{{current_datetime}}` (kohalik kuupäev ja kellaaeg), `{{utc_iso_datetime}}` (UTC ISO kuupäev ja kellaaeg) ja `{{current_user}}` (sinu kasutaja nimi).",
|
||||
"com_ui_speech_while_submitting": "Kõnet ei saa esitada, kui vastust genereeritakse",
|
||||
"com_ui_sr_actions_menu": "Ava tegevuste menüü \"{{0}}\" jaoks",
|
||||
"com_ui_stop": "Peata",
|
||||
"com_ui_storage": "Salvestusruum",
|
||||
"com_ui_submit": "Esita",
|
||||
"com_ui_teach_or_explain": "Õppimine",
|
||||
"com_ui_temporary": "Ajutine",
|
||||
"com_ui_terms_and_conditions": "Kasutustingimused",
|
||||
"com_ui_terms_of_service": "Teenuse tingimused",
|
||||
"com_ui_thinking": "Mõtlen...",
|
||||
"com_ui_thoughts": "Mõtted",
|
||||
"com_ui_token_exchange_method": "Märgi vahetamise meetod",
|
||||
"com_ui_token_url": "Märgi URL",
|
||||
"com_ui_tools": "Tööriistad",
|
||||
"com_ui_travel": "Reisimine",
|
||||
"com_ui_unarchive": "Arhiveeri lahti",
|
||||
"com_ui_unarchive_error": "Vestluse arhiveerimine lahti ebaõnnestus",
|
||||
"com_ui_unknown": "Tundmatu",
|
||||
"com_ui_untitled": "Pealkirjata",
|
||||
"com_ui_update": "Uuenda",
|
||||
"com_ui_upload": "Laadi üles",
|
||||
"com_ui_upload_code_files": "Laadi üles koodiinterpreteerija jaoks",
|
||||
"com_ui_upload_delay": "Faili \"{{0}}\" üleslaadimine võtab oodatust kauem aega. Palun oota, kuni faili indekseerimine hankimiseks lõpeb.",
|
||||
"com_ui_upload_error": "Faili üleslaadimisel tekkis viga",
|
||||
"com_ui_upload_file_context": "Laadi fail konteksti",
|
||||
"com_ui_upload_file_search": "Laadi üles failiotsingu jaoks",
|
||||
"com_ui_upload_files": "Laadi faile üles",
|
||||
"com_ui_upload_image": "Laadi pilt üles",
|
||||
"com_ui_upload_image_input": "Laadi pilt üles",
|
||||
"com_ui_upload_invalid": "Fail on üleslaadimiseks vigane. Peab olema pilt, mis ei ületa piirangut",
|
||||
"com_ui_upload_invalid_var": "Fail on üleslaadimiseks vigane. Peab olema pilt, mis ei ületa {{0}} MB",
|
||||
"com_ui_upload_ocr_text": "Laadi üles tekstina",
|
||||
"com_ui_upload_success": "Faili üleslaadimine õnnestus",
|
||||
"com_ui_upload_type": "Vali üleslaadimise tüüp",
|
||||
"com_ui_use_2fa_code": "Kasuta hoopis 2FA koodi",
|
||||
"com_ui_use_backup_code": "Kasuta hoopis varukoodi",
|
||||
"com_ui_use_micrphone": "Kasuta mikrofoni",
|
||||
"com_ui_use_prompt": "Kasuta sisendit",
|
||||
"com_ui_used": "Kasutatud",
|
||||
"com_ui_variables": "Muutujad",
|
||||
"com_ui_variables_info": "Kasuta oma tekstis topelt sulgusid, et luua muutujaid, nt `{{näidismuutuja}}`, et hiljem sisendi kasutamisel täita.",
|
||||
"com_ui_verify": "Kontrolli",
|
||||
"com_ui_version_var": "Versioon {{0}}",
|
||||
"com_ui_versions": "Versioonid",
|
||||
"com_ui_view_source": "Vaata algset vestlust",
|
||||
"com_ui_weekend_morning": "Head nädalavahetust",
|
||||
"com_ui_write": "Kirjutamine",
|
||||
"com_ui_x_selected": "{{0}} valitud",
|
||||
"com_ui_yes": "Jah",
|
||||
"com_ui_zoom": "Suumi",
|
||||
"com_user_message": "Sina",
|
||||
"com_warning_resubmit_unsupported": "AI sõnumi uuesti esitamine pole selle otspunkti jaoks toetatud."
|
||||
}
|
||||
852
packages/client/src/locales/fa/translation.json
Normal file
852
packages/client/src/locales/fa/translation.json
Normal file
|
|
@ -0,0 +1,852 @@
|
|||
{
|
||||
"chat_direction_left_to_right": "چیزی باید به اینجا باشه خالی بود",
|
||||
"chat_direction_right_to_left": "چیزی باید به اینجا باشه خالی بود",
|
||||
"com_a11y_ai_composing": "هوش مصنوعی هنوز در حال نوشتنه .",
|
||||
"com_a11y_end": "هوش مصنوعی پاسخ خود را تموم کرده.",
|
||||
"com_a11y_start": "هوش مصنوعی پاسخ خود را شروع کرده.",
|
||||
"com_agents_allow_editing": "به سایر کاربران اجازه دهید تا کارگزار شما را ویرایش کنند",
|
||||
"com_agents_by_librechat": "توسط LibreChat",
|
||||
"com_agents_code_interpreter": "وقتی فعال باشد، به کارگزار شما اجازه میدهد تا از LibreChat Code Interpreter API برای اجرای ایمن کدهای تولید شده، از جمله پردازش فایل، استفاده کند. به یک کلید API معتبر نیاز دارد.",
|
||||
"com_agents_code_interpreter_title": "کد Interpreter API",
|
||||
"com_agents_create_error": "در ایجاد کارگزار شما خطایی روی داد.",
|
||||
"com_agents_description_placeholder": "اختیاری: کارگزار خود را در اینجا شرح دهید",
|
||||
"com_agents_enable_file_search": "جستجوی فایل را فعال کنید",
|
||||
"com_agents_file_context": "زمینه فایل (OCR)",
|
||||
"com_agents_file_context_disabled": "کارگزار باید قبل از آپلود فایل ها برای File Context ایجاد شود.",
|
||||
"com_agents_file_context_info": "فایلهای آپلود شده بهعنوان «Context» با استفاده از OCR برای استخراج متن پردازش میشوند، که سپس به دستورالعملهای کارگزار اضافه میشود. ایده آل برای اسناد، تصاویر با متن یا PDF که در آن به محتوای متن کامل یک فایل نیاز دارید",
|
||||
"com_agents_file_search_disabled": "کارگزار باید قبل از آپلود فایل ها برای جستجوی فایل ایجاد شود.",
|
||||
"com_agents_file_search_info": "وقتی فعال باشد، کارگزار از نامهای دقیق فایلهای فهرستشده در زیر مطلع میشود و به او اجازه میدهد متن مربوطه را از این فایلها بازیابی کند.",
|
||||
"com_agents_instructions_placeholder": "دستورالعمل های سیستمی که کارگزار استفاده می کند",
|
||||
"com_agents_missing_provider_model": "لطفاً یک ارائه دهنده و مدل را قبل از ایجاد یک کارگزار انتخاب کنید.",
|
||||
"com_agents_name_placeholder": "اختیاری: نام کارگزار",
|
||||
"com_agents_no_access": "شما به ویرایش این کارگزار دسترسی ندارید.",
|
||||
"com_agents_not_available": "کارگزار در دسترس نیست",
|
||||
"com_agents_search_name": "کارگزارها را با نام جستجو کنید",
|
||||
"com_agents_update_error": "هنگام بهروزرسانی کارگزار شما خطایی روی داد.",
|
||||
"com_assistants_action_attempt": "دستیار می خواهد با {{0}} صحبت کند ",
|
||||
"com_assistants_actions": "اقدامات",
|
||||
"com_assistants_actions_disabled": "قبل از افزودن اقدامات، باید یک دستیار ایجاد کنید.",
|
||||
"com_assistants_actions_info": "به دستیارتان اجازه دهید اطلاعات را بازیابی کند یا اقداماتی را از طریق API انجام دهد",
|
||||
"com_assistants_add_actions": "افزودن اقدامات",
|
||||
"com_assistants_add_tools": "ابزارها را اضافه کنید",
|
||||
"com_assistants_allow_sites_you_trust": "فقط به سایت هایی که به آنها اعتماد دارید اجازه دهید.",
|
||||
"com_assistants_append_date": "تاریخ و زمان فعلی را اضافه کنید",
|
||||
"com_assistants_append_date_tooltip": "وقتی فعال باشد، تاریخ و زمان فعلی مشتری به دستورالعملهای سیستم دستیار اضافه میشود.",
|
||||
"com_assistants_attempt_info": "دستیار می خواهد موارد زیر را ارسال کند:",
|
||||
"com_assistants_available_actions": "اقدامات موجود",
|
||||
"com_assistants_capabilities": "قابلیت ها",
|
||||
"com_assistants_code_interpreter": "مفسر کد",
|
||||
"com_assistants_code_interpreter_files": "فایل های زیر فقط برای مفسر کد هستند:",
|
||||
"com_assistants_code_interpreter_info": "کد مفسر دستیار را قادر می سازد تا کد بنویسد و اجرا کند. این ابزار می تواند فایل هایی با داده ها و قالب بندی های متنوع را پردازش کند و فایل هایی مانند نمودار تولید کند.",
|
||||
"com_assistants_completed_action": "با {{0}} صحبت کرد",
|
||||
"com_assistants_completed_function": "{{0}} اجرا شد",
|
||||
"com_assistants_conversation_starters": "شروع کننده مکالمه",
|
||||
"com_assistants_conversation_starters_placeholder": "شروع کننده مکالمه را وارد کنید",
|
||||
"com_assistants_create_error": "در ایجاد دستیار شما خطایی روی داد.",
|
||||
"com_assistants_create_success": "با موفقیت ایجاد شد",
|
||||
"com_assistants_delete_actions_error": "هنگام حذف عمل خطایی روی داد.",
|
||||
"com_assistants_delete_actions_success": "Action از Assistant با موفقیت حذف شد",
|
||||
"com_assistants_description_placeholder": "اختیاری: دستیار خود را در اینجا شرح دهید",
|
||||
"com_assistants_domain_info": "دستیار این اطلاعات را به {{0}} فرستاد",
|
||||
"com_assistants_file_search": "جستجوی فایل",
|
||||
"com_assistants_file_search_info": "جستجوی فایل به دستیار امکان میدهد از فایلهایی که شما یا کاربرانتان آپلود میکنید، اطلاعات داشته باشد. هنگامی که یک فایل آپلود می شود، دستیار به طور خودکار تصمیم می گیرد که چه زمانی محتوا را بر اساس درخواست کاربر بازیابی کند. پیوست کردن فروشگاههای برداری برای جستجوی فایل هنوز پشتیبانی نمیشود. میتوانید آنها را از Provider Playground وصل کنید یا فایلها را به پیامها برای جستجوی فایل بر اساس رشته پیوست کنید.",
|
||||
"com_assistants_function_use": "دستیار {{0}} استفاده شده است",
|
||||
"com_assistants_image_vision": "دید تصویر",
|
||||
"com_assistants_instructions_placeholder": "دستورالعمل های سیستمی که دستیار استفاده می کند",
|
||||
"com_assistants_knowledge": "دانش",
|
||||
"com_assistants_knowledge_disabled": "دستیار باید ایجاد شود، و Code Interpreter یا Retrieval باید قبل از آپلود فایلها بهعنوان Knowledge فعال و ذخیره شود.",
|
||||
"com_assistants_knowledge_info": "اگر فایلهایی را تحت Knowledge آپلود میکنید، ممکن است مکالمات با دستیار شامل محتوای فایل باشد.",
|
||||
"com_assistants_max_starters_reached": "به حداکثر تعداد شروع کننده مکالمه رسیده است",
|
||||
"com_assistants_name_placeholder": "اختیاری: نام دستیار",
|
||||
"com_assistants_non_retrieval_model": "جستجوی فایل در این مدل فعال نیست. لطفا مدل دیگری را انتخاب کنید",
|
||||
"com_assistants_retrieval": "بازیابی",
|
||||
"com_assistants_running_action": "اکشن در حال اجرا",
|
||||
"com_assistants_search_name": "دستیاران را بر اساس نام جستجو کنید",
|
||||
"com_assistants_update_actions_error": "هنگام ایجاد یا بهروزرسانی عملکرد خطایی روی داد.",
|
||||
"com_assistants_update_actions_success": "اکشن با موفقیت ایجاد یا بهروزرسانی شد",
|
||||
"com_assistants_update_error": "هنگام بهروزرسانی دستیار شما خطایی روی داد.",
|
||||
"com_assistants_update_success": "با موفقیت به روز شد",
|
||||
"com_auth_already_have_account": "از قبل حساب کاربری دارید؟",
|
||||
"com_auth_apple_login": "با اپل وارد شوید",
|
||||
"com_auth_back_to_login": "بازگشت به ورود",
|
||||
"com_auth_click": "کلیک کنید",
|
||||
"com_auth_click_here": "اینجا را کلیک کنید",
|
||||
"com_auth_continue": "ادامه دهید",
|
||||
"com_auth_create_account": "حساب کاربری خود را ایجاد کنید",
|
||||
"com_auth_discord_login": "با Discord ادامه دهید",
|
||||
"com_auth_email": "ایمیل",
|
||||
"com_auth_email_address": "آدرس ایمیل",
|
||||
"com_auth_email_max_length": "ایمیل نباید بیشتر از 120 کاراکتر باشد",
|
||||
"com_auth_email_min_length": "ایمیل باید حداقل 6 کاراکتر باشد",
|
||||
"com_auth_email_pattern": "شما باید یک آدرس ایمیل معتبر وارد کنید",
|
||||
"com_auth_email_required": "ایمیل مورد نیاز است",
|
||||
"com_auth_email_resend_link": "ارسال مجدد ایمیل",
|
||||
"com_auth_email_resent_failed": "ایمیل تأیید مجدد ارسال نشد",
|
||||
"com_auth_email_resent_success": "ایمیل تأیید مجدد با موفقیت ارسال شد",
|
||||
"com_auth_email_verification_failed": "تأیید ایمیل انجام نشد",
|
||||
"com_auth_email_verification_failed_token_missing": "راستیآزمایی انجام نشد، رمز موجود نیست",
|
||||
"com_auth_email_verification_in_progress": "در حال تایید ایمیل شما، لطفا صبر کنید",
|
||||
"com_auth_email_verification_invalid": "تأیید ایمیل نامعتبر است",
|
||||
"com_auth_email_verification_redirecting": "تغییر مسیر در {{0}} ثانیه...",
|
||||
"com_auth_email_verification_resend_prompt": "ایمیل را دریافت نکردید؟",
|
||||
"com_auth_email_verification_success": "ایمیل با موفقیت تأیید شد",
|
||||
"com_auth_email_verifying_ellipsis": "در حال تأیید...",
|
||||
"com_auth_error_create": "هنگام تلاش برای ثبت حساب شما خطایی روی داد. لطفا دوباره امتحان کنید.",
|
||||
"com_auth_error_invalid_reset_token": "این رمز بازنشانی رمز عبور دیگر معتبر نیست.",
|
||||
"com_auth_error_login": "با اطلاعات ارائه شده نمی توانید وارد شوید. لطفا اعتبار خود را بررسی کنید و دوباره امتحان کنید.",
|
||||
"com_auth_error_login_ban": "حساب کاربری شما به دلیل نقض خدمات ما به طور موقت مسدود شده است.",
|
||||
"com_auth_error_login_rl": "تعداد زیادی تلاش برای ورود به سیستم در مدت زمان کوتاهی. لطفاً بعداً دوباره امتحان کنید.",
|
||||
"com_auth_error_login_server": "یک خطای سرور داخلی وجود داشت. لطفا چند لحظه صبر کنید و دوباره امتحان کنید.",
|
||||
"com_auth_error_login_unverified": "حساب شما تایید نشده است. لطفا ایمیل خود را برای پیوند تأیید بررسی کنید.",
|
||||
"com_auth_facebook_login": "با فیس بوک ادامه دهید",
|
||||
"com_auth_full_name": "نام کامل",
|
||||
"com_auth_github_login": "با Github ادامه دهید",
|
||||
"com_auth_google_login": "با گوگل ادامه دهید",
|
||||
"com_auth_here": "اینجا",
|
||||
"com_auth_login": "وارد شوید",
|
||||
"com_auth_login_with_new_password": "اکنون می توانید با رمز عبور جدید خود وارد شوید.",
|
||||
"com_auth_name_max_length": "نام باید کمتر از 80 کاراکتر باشد",
|
||||
"com_auth_name_min_length": "نام باید حداقل 3 کاراکتر باشد",
|
||||
"com_auth_name_required": "نام الزامی است",
|
||||
"com_auth_no_account": "حساب کاربری ندارید؟",
|
||||
"com_auth_password": "رمز عبور",
|
||||
"com_auth_password_confirm": "رمز عبور را تایید کنید",
|
||||
"com_auth_password_forgot": "رمز عبور را فراموش کرده اید؟",
|
||||
"com_auth_password_max_length": "رمز عبور باید کمتر از 128 کاراکتر باشد",
|
||||
"com_auth_password_min_length": "رمز عبور باید حداقل 8 کاراکتر باشد",
|
||||
"com_auth_password_not_match": "رمزهای عبور مطابقت ندارند",
|
||||
"com_auth_password_required": "رمز عبور لازم است",
|
||||
"com_auth_registration_success_generic": "لطفا ایمیل خود را بررسی کنید تا آدرس ایمیل خود را تأیید کنید.",
|
||||
"com_auth_registration_success_insecure": "ثبت نام با موفقیت انجام شد.",
|
||||
"com_auth_reset_password": "رمز عبور خود را بازنشانی کنید",
|
||||
"com_auth_reset_password_if_email_exists": "اگر حسابی با آن ایمیل وجود داشته باشد، ایمیلی با دستورالعمل بازنشانی رمز عبور ارسال شده است. لطفاً پوشه اسپم خود را بررسی کنید.",
|
||||
"com_auth_reset_password_link_sent": "ایمیل ارسال شد",
|
||||
"com_auth_reset_password_success": "بازنشانی رمز عبور با موفقیت انجام شد",
|
||||
"com_auth_sign_in": "وارد شوید",
|
||||
"com_auth_sign_up": "ثبت نام کنید",
|
||||
"com_auth_submit_registration": "ثبت نام را ارسال کنید",
|
||||
"com_auth_to_reset_your_password": "برای بازنشانی رمز عبور",
|
||||
"com_auth_to_try_again": "برای تلاش دوباره",
|
||||
"com_auth_two_factor": "برنامه رمز عبور یکبار مصرف ترجیحی خود را برای یک کد بررسی کنید",
|
||||
"com_auth_username": "نام کاربری (اختیاری)",
|
||||
"com_auth_username_max_length": "نام کاربری باید کمتر از 20 کاراکتر باشد",
|
||||
"com_auth_username_min_length": "نام کاربری باید حداقل 2 کاراکتر باشد",
|
||||
"com_auth_verify_your_identity": "هویت خود را تأیید کنید",
|
||||
"com_auth_welcome_back": "خوش آمدید",
|
||||
"com_click_to_download": "(برای دانلود اینجا کلیک کنید)",
|
||||
"com_download_expired": "(دانلود منقضی شده است)",
|
||||
"com_download_expires": "(برای دانلود اینجا را کلیک کنید - منقضی می شود {{0}})",
|
||||
"com_endpoint": "ادرس ها",
|
||||
"com_endpoint_agent": "کارگزار",
|
||||
"com_endpoint_agent_model": "مدل کارگزار (توصیه شده: GPT-3.5)",
|
||||
"com_endpoint_agent_placeholder": "لطفا یک کارگزار را انتخاب کنید",
|
||||
"com_endpoint_ai": "هوش مصنوعی",
|
||||
"com_endpoint_anthropic_maxoutputtokens": "حداکثر تعداد توکن هایی که می توان در پاسخ ایجاد کرد. مقدار کمتری را برای پاسخهای کوتاهتر و مقدار بالاتر را برای پاسخهای طولانیتر مشخص کنید. توجه: مدل ها ممکن است قبل از رسیدن به این حداکثر متوقف شوند.",
|
||||
"com_endpoint_anthropic_prompt_cache": "ذخیره سریع امکان استفاده مجدد از زمینه یا دستورالعمل های بزرگ را در تماس های API، کاهش هزینه ها و تأخیر فراهم می کند.",
|
||||
"com_endpoint_anthropic_temp": "محدوده از 0 تا 1. از دمای نزدیک به 0 برای تحلیلی / چند گزینه ای و نزدیکتر به 1 برای کارهای خلاقانه و مولد استفاده کنید. توصیه می کنیم این یا Top P را تغییر دهید اما نه هر دو.",
|
||||
"com_endpoint_anthropic_thinking": "استدلال داخلی را برای مدل های کلود پشتیبانی شده (3.7 Sonnet) فعال می کند. توجه: باید «بودجه فکری» تنظیم شود و کمتر از «حداکثر توکنهای خروجی» باشد.",
|
||||
"com_endpoint_anthropic_thinking_budget": "حداکثر تعداد توکن هایی را که کلود مجاز به استفاده برای فرآیند استدلال داخلی خود است، تعیین می کند. بودجههای بزرگتر میتوانند کیفیت پاسخ را با امکان تجزیه و تحلیل دقیقتر برای مشکلات پیچیده بهبود بخشند، اگرچه کلود ممکن است از کل بودجه تخصیصیافته استفاده نکند، به خصوص در محدودههای بالاتر از 32K. این تنظیم باید کمتر از \"Max Output Tokens\" باشد.",
|
||||
"com_endpoint_anthropic_topk": "Top-k نحوه انتخاب توکن ها را برای خروجی توسط مدل تغییر می دهد. top-k از 1 به این معنی است که توکن انتخاب شده در واژگان مدل (که رمزگشایی حریص نیز نامیده می شود) محتمل ترین نشانه است، در حالی که top-k از 3 به این معنی است که نشانه بعدی از بین 3 توکن محتمل (با استفاده از دما) انتخاب شده است.",
|
||||
"com_endpoint_anthropic_topp": "Top-p نحوه انتخاب توکن ها را برای خروجی توسط مدل تغییر می دهد. توکن ها از اکثر K (به پارامتر topK مراجعه کنید) انتخاب می شوند تا زمانی که مجموع احتمالات آنها با مقدار top-p برابر شود.",
|
||||
"com_endpoint_assistant": "دستیار",
|
||||
"com_endpoint_assistant_model": "مدل دستیار",
|
||||
"com_endpoint_assistant_placeholder": "لطفاً یک دستیار را از پانل سمت راست انتخاب کنید",
|
||||
"com_endpoint_completion": "تکمیل",
|
||||
"com_endpoint_completion_model": "مدل تکمیل (توصیه شده: GPT-4)",
|
||||
"com_endpoint_config_click_here": "اینجا را کلیک کنید",
|
||||
"com_endpoint_config_google_api_info": "برای دریافت کلید API زبان تولیدی خود (برای Gemini)،",
|
||||
"com_endpoint_config_google_api_key": "کلید Google API",
|
||||
"com_endpoint_config_google_cloud_platform": "(از Google Cloud Platform)",
|
||||
"com_endpoint_config_google_gemini_api": "(API Gemini)",
|
||||
"com_endpoint_config_google_service_key": "کلید حساب Google Service",
|
||||
"com_endpoint_config_key": "کلید API را تنظیم کنید",
|
||||
"com_endpoint_config_key_encryption": "کلید شما رمزگذاری و حذف خواهد شد",
|
||||
"com_endpoint_config_key_for": "تنظیم کلید API برای",
|
||||
"com_endpoint_config_key_google_need_to": "شما نیاز دارید",
|
||||
"com_endpoint_config_key_google_service_account": "یک حساب خدمات ایجاد کنید",
|
||||
"com_endpoint_config_key_google_vertex_ai": "Vertex AI را فعال کنید",
|
||||
"com_endpoint_config_key_google_vertex_api": "پس API در Google Cloud",
|
||||
"com_endpoint_config_key_google_vertex_api_role": "مطمئن شوید که روی «ایجاد و ادامه» کلیک کنید تا حداقل نقش «کاربر هوش مصنوعی Vertex» را داشته باشید. در نهایت، یک کلید JSON برای وارد کردن در اینجا ایجاد کنید.",
|
||||
"com_endpoint_config_key_import_json_key": "کلید JSON حساب سرویس را وارد کنید.",
|
||||
"com_endpoint_config_key_import_json_key_invalid": "کلید JSON حساب سرویس نامعتبر است، آیا فایل صحیح را وارد کردید؟",
|
||||
"com_endpoint_config_key_import_json_key_success": "کلید JSON حساب سرویس با موفقیت وارد شد",
|
||||
"com_endpoint_config_key_name": "کلید",
|
||||
"com_endpoint_config_key_never_expires": "کلید شما هرگز منقضی نمی شود",
|
||||
"com_endpoint_config_placeholder": "کلید خود را در منوی سرصفحه برای چت تنظیم کنید.",
|
||||
"com_endpoint_config_value": "مقدار را برای",
|
||||
"com_endpoint_context": "زمینه",
|
||||
"com_endpoint_context_info": "حداکثر تعداد توکن هایی که می توان برای زمینه استفاده کرد. از این برای کنترل تعداد توکن های ارسال شده در هر درخواست استفاده کنید. اگر مشخص نباشد، از پیشفرضهای سیستم بر اساس اندازه بافت مدلهای شناخته شده استفاده میکند. تنظیم مقادیر بالاتر ممکن است منجر به خطا و/یا هزینه توکن بالاتر شود.",
|
||||
"com_endpoint_context_tokens": "حداکثر توکن های زمینه",
|
||||
"com_endpoint_custom_name": "نام سفارشی",
|
||||
"com_endpoint_default": "پیش فرض",
|
||||
"com_endpoint_default_blank": "پیش فرض: خالی",
|
||||
"com_endpoint_default_empty": "پیش فرض: خالی",
|
||||
"com_endpoint_default_with_num": "پیش فرض: {{0}}",
|
||||
"com_endpoint_deprecated": "منسوخ شده",
|
||||
"com_endpoint_deprecated_info": "این نقطهپایان منسوخ شده است و ممکن است در نسخههای آینده حذف شود، لطفاً به جای آن از نقطهپایان نماینده استفاده کنید.",
|
||||
"com_endpoint_deprecated_info_a11y": "نقطهپایان افزونه منسوخ شده است و ممکن است در نسخههای آینده حذف شود، لطفاً به جای آن از نقطهپایان نماینده استفاده کنید.",
|
||||
"com_endpoint_examples": " تنظیمات از پیش تعیین شده",
|
||||
"com_endpoint_export": "صادرات",
|
||||
"com_endpoint_export_share": "صادرات/اشتراک گذاری",
|
||||
"com_endpoint_frequency_penalty": "جریمه فرکانس",
|
||||
"com_endpoint_func_hover": "استفاده از پلاگین ها را به عنوان توابع OpenAI فعال کنید",
|
||||
"com_endpoint_google_custom_name_placeholder": "یک نام سفارشی برای گوگل تعیین کنید",
|
||||
"com_endpoint_google_maxoutputtokens": "حداکثر تعداد توکن هایی که می توان در پاسخ ایجاد کرد. مقدار کمتری را برای پاسخهای کوتاهتر و مقدار بالاتر را برای پاسخهای طولانیتر مشخص کنید. توجه: مدل ها ممکن است قبل از رسیدن به این حداکثر متوقف شوند.",
|
||||
"com_endpoint_google_temp": "مقادیر بالاتر = تصادفی تر، در حالی که مقادیر پایین تر = متمرکز تر و قطعی تر. توصیه می کنیم این یا Top P را تغییر دهید اما نه هر دو.",
|
||||
"com_endpoint_google_topk": "Top-k نحوه انتخاب توکن ها را برای خروجی توسط مدل تغییر می دهد. top-k از 1 به این معنی است که توکن انتخاب شده در واژگان مدل (که رمزگشایی حریص نیز نامیده می شود) محتمل ترین نشانه است، در حالی که top-k از 3 به این معنی است که نشانه بعدی از بین 3 توکن محتمل (با استفاده از دما) انتخاب شده است.",
|
||||
"com_endpoint_google_topp": "Top-p نحوه انتخاب توکن ها را برای خروجی توسط مدل تغییر می دهد. توکن ها از اکثر K (به پارامتر topK مراجعه کنید) انتخاب می شوند تا زمانی که مجموع احتمالات آنها با مقدار top-p برابر شود.",
|
||||
"com_endpoint_instructions_assistants": "نادیده گرفتن دستورالعمل ها",
|
||||
"com_endpoint_instructions_assistants_placeholder": "دستورالعمل های دستیار را لغو می کند. این برای اصلاح رفتار بر اساس هر اجرا مفید است.",
|
||||
"com_endpoint_max_output_tokens": "حداکثر توکن های خروجی",
|
||||
"com_endpoint_message": "پیام",
|
||||
"com_endpoint_message_new": "پیام {{0}}",
|
||||
"com_endpoint_message_not_appendable": "پیام خود را ویرایش کنید یا دوباره ایجاد کنید.",
|
||||
"com_endpoint_my_preset": "از پیش تنظیم من",
|
||||
"com_endpoint_no_presets": "هنوز از پیش تنظیم نشده است، از دکمه تنظیمات برای ایجاد یکی استفاده کنید",
|
||||
"com_endpoint_open_menu": "منو را باز کنید",
|
||||
"com_endpoint_openai_custom_name_placeholder": "یک نام سفارشی برای هوش مصنوعی تعیین کنید",
|
||||
"com_endpoint_openai_detail": "قطعنامه برای درخواست های Vision. «Low» ارزانتر و سریعتر است، «High» جزئیات و گرانتر است، و «Auto» به طور خودکار بین این دو بر اساس وضوح تصویر انتخاب میکند.",
|
||||
"com_endpoint_openai_freq": "عدد بین -2.0 و 2.0. مقادیر مثبت، توکنهای جدید را بر اساس فراوانی موجود در متن تا کنون جریمه میکنند و احتمال تکرار همان خط را در مدل کاهش میدهند.",
|
||||
"com_endpoint_openai_max": "حداکثر توکن برای تولید طول کل توکنهای ورودی و نشانههای تولید شده توسط طول بافت مدل محدود میشود.",
|
||||
"com_endpoint_openai_max_tokens": "فیلد اختیاری «max_توکنs»، نشاندهنده حداکثر تعداد توکنهایی است که میتوان در تکمیل چت ایجاد کرد. طول کل نشانه های ورودی و نشانه های تولید شده توسط طول بافت مدل محدود می شود. اگر این عدد از حداکثر نشانه های زمینه بیشتر شود، ممکن است با خطا مواجه شوید.",
|
||||
"com_endpoint_openai_pres": "عدد بین -2.0 و 2.0. مقادیر مثبت، توکنهای جدید را بر اساس اینکه آیا تاکنون در متن ظاهر شدهاند جریمه میکنند و احتمال صحبت مدل در مورد موضوعات جدید را افزایش میدهند.",
|
||||
"com_endpoint_openai_prompt_prefix_placeholder": "دستورالعملهای سفارشی را برای درج در پیام سیستم تنظیم کنید. پیش فرض: هیچ",
|
||||
"com_endpoint_openai_reasoning_effort": "فقط مدل های o1: تلاش برای استدلال برای مدل های استدلال را محدود می کند. کاهش تلاش استدلال میتواند منجر به پاسخهای سریعتر و توکنهای کمتری برای استدلال در پاسخ شود.",
|
||||
"com_endpoint_openai_resend": "همه تصاویر پیوست شده قبلی را مجددا ارسال کنید. توجه: این می تواند هزینه توکن را به میزان قابل توجهی افزایش دهد و ممکن است در بسیاری از پیوست های تصویر با خطا مواجه شوید.",
|
||||
"com_endpoint_openai_resend_files": "همه فایل های پیوست شده قبلی را مجددا ارسال کنید. توجه: این کار هزینه توکن را افزایش می دهد و ممکن است در بسیاری از پیوست ها با خطا مواجه شوید.",
|
||||
"com_endpoint_openai_stop": "تا 4 دنباله که در آن API تولید توکن های بیشتر را متوقف می کند.",
|
||||
"com_endpoint_openai_temp": "مقادیر بالاتر = تصادفی تر، در حالی که مقادیر پایین تر = متمرکز تر و قطعی تر. توصیه می کنیم این یا Top P را تغییر دهید اما نه هر دو.",
|
||||
"com_endpoint_openai_topp": "جایگزینی برای نمونه برداری با دما، به نام نمونه برداری هسته، که در آن مدل نتایج توکن ها را با جرم احتمال top_p در نظر می گیرد. بنابراین 0.1 به این معنی است که فقط توکن هایی که 10 درصد جرم احتمالی بالایی را تشکیل می دهند در نظر گرفته می شوند. توصیه می کنیم این یا دما را تغییر دهید اما نه هر دو را.",
|
||||
"com_endpoint_output": "خروجی",
|
||||
"com_endpoint_plug_image_detail": "جزئیات تصویر",
|
||||
"com_endpoint_plug_resend_files": "ارسال مجدد فایل ها",
|
||||
"com_endpoint_plug_set_custom_instructions_for_gpt_placeholder": "دستورالعملهای سفارشی را برای درج در پیام سیستم تنظیم کنید. پیش فرض: هیچ",
|
||||
"com_endpoint_plug_skip_completion": "پرش از تکمیل",
|
||||
"com_endpoint_plug_use_functions": "از توابع استفاده کنید",
|
||||
"com_endpoint_presence_penalty": "جریمه حضور",
|
||||
"com_endpoint_preset": "از پیش تعیین شده",
|
||||
"com_endpoint_preset_custom_name_placeholder": "چیزی باید به اینجا برود خالی بود",
|
||||
"com_endpoint_preset_default": "اکنون پیش تنظیم پیش فرض است.",
|
||||
"com_endpoint_preset_default_item": "پیش فرض:",
|
||||
"com_endpoint_preset_default_none": "هیچ پیشتنظیمی فعال نیست.",
|
||||
"com_endpoint_preset_default_removed": "دیگر پیش تنظیم پیش فرض نیست.",
|
||||
"com_endpoint_preset_delete_confirm": "آیا مطمئن هستید که می خواهید این پیش تنظیم را حذف کنید؟",
|
||||
"com_endpoint_preset_delete_error": "هنگام حذف از پیش تنظیم شما خطایی روی داد. لطفا دوباره امتحان کنید.",
|
||||
"com_endpoint_preset_import": "از پیش تعیین شده وارد شد!",
|
||||
"com_endpoint_preset_import_error": "هنگام وارد کردن تنظیمات پیشفرض شما خطایی روی داد. لطفا دوباره امتحان کنید.",
|
||||
"com_endpoint_preset_name": "نام از پیش تعیین شده",
|
||||
"com_endpoint_preset_save_error": "هنگام ذخیره از پیش تنظیم شما خطایی روی داد. لطفا دوباره امتحان کنید.",
|
||||
"com_endpoint_preset_selected": "فعال از پیش تعیین شده",
|
||||
"com_endpoint_preset_selected_title": "فعال!",
|
||||
"com_endpoint_preset_title": "از پیش تعیین شده",
|
||||
"com_endpoint_presets": "از پیش تنظیم شده است",
|
||||
"com_endpoint_presets_clear_warning": "آیا مطمئن هستید که می خواهید همه تنظیمات از پیش تعیین شده را پاک کنید؟ این غیر قابل برگشت است.",
|
||||
"com_endpoint_prompt_cache": "از Prompt Caching استفاده کنید",
|
||||
"com_endpoint_prompt_prefix": "دستورالعمل های سفارشی",
|
||||
"com_endpoint_prompt_prefix_assistants": "دستورالعمل های اضافی",
|
||||
"com_endpoint_prompt_prefix_assistants_placeholder": "دستورالعمل ها یا زمینه اضافی را در بالای دستورالعمل های اصلی دستیار تنظیم کنید. اگر خالی باشد نادیده گرفته می شود.",
|
||||
"com_endpoint_prompt_prefix_placeholder": "دستورالعمل ها یا زمینه سفارشی را تنظیم کنید. اگر خالی باشد نادیده گرفته می شود.",
|
||||
"com_endpoint_reasoning_effort": "تلاش استدلال",
|
||||
"com_endpoint_save_as_preset": "ذخیره به عنوان از پیش تعیین شده",
|
||||
"com_endpoint_search": "جستجوی نقطه پایانی بر اساس نام",
|
||||
"com_endpoint_search_endpoint_models": "جستجو کنید {{0}} مدل های ...",
|
||||
"com_endpoint_search_models": "جستجوی مدل های ...",
|
||||
"com_endpoint_search_var": "جستجو کنید {{0}}...",
|
||||
"com_endpoint_set_custom_name": "یک نام سفارشی تنظیم کنید، در صورتی که بتوانید این پیش تنظیم را پیدا کنید",
|
||||
"com_endpoint_skip_hover": "رد شدن از مرحله تکمیل را فعال کنید، که پاسخ نهایی و مراحل تولید شده را بررسی می کند",
|
||||
"com_endpoint_stop": "توقف توالی",
|
||||
"com_endpoint_stop_placeholder": "مقادیر را با فشار دادن «Enter» جدا کنید",
|
||||
"com_endpoint_temperature": "دما",
|
||||
"com_endpoint_thinking": "فکر کردن",
|
||||
"com_endpoint_thinking_budget": "بودجه فکری",
|
||||
"com_endpoint_top_k": "بالا K",
|
||||
"com_endpoint_top_p": "بالا P",
|
||||
"com_endpoint_use_active_assistant": "از دستیار فعال استفاده کنید",
|
||||
"com_error_expired_user_key": "کلید ارائه شده برای {{0}} منقضی شده در {{1}}. لطفاً یک کلید جدید ارائه دهید و دوباره امتحان کنید.",
|
||||
"com_error_files_dupe": "فایل تکراری شناسایی شد.",
|
||||
"com_error_files_empty": "فایل های خالی مجاز نیستند.",
|
||||
"com_error_files_process": "هنگام پردازش فایل خطایی روی داد.",
|
||||
"com_error_files_unsupported_capability": "هیچ قابلیتی فعال نیست که از این نوع فایل پشتیبانی کند.",
|
||||
"com_error_files_upload": "هنگام آپلود فایل خطایی روی داد.",
|
||||
"com_error_files_upload_canceled": "درخواست آپلود فایل لغو شد. توجه: ممکن است فایل آپلود هنوز در حال پردازش باشد و باید به صورت دستی حذف شود.",
|
||||
"com_error_files_validation": "هنگام اعتبارسنجی فایل خطایی روی داد.",
|
||||
"com_error_input_length": "آخرین تعداد توکن پیام بسیار طولانی است، از حد مجاز بیشتر است، یا پارامترهای محدودیت رمز شما به اشتباه پیکربندی شده اند، که بر پنجره زمینه تأثیر منفی می گذارد. اطلاعات بیشتر: {{0}}. لطفاً پیام خود را کوتاه کنید، حداکثر اندازه زمینه را از روی پارامترهای مکالمه تنظیم کنید، یا مکالمه را برای ادامه ادامه دهید.",
|
||||
"com_error_invalid_agent_provider": "ارائهدهنده \"{{0}}\" برای استفاده با نمایندگان در دسترس نیست. لطفاً به تنظیمات نماینده خود بروید و یک ارائهدهندهی موجود را انتخاب کنید.",
|
||||
"com_error_invalid_user_key": "کلید نامعتبر ارائه شده است. لطفاً یک کلید معتبر ارائه دهید و دوباره امتحان کنید.",
|
||||
"com_error_moderation": "به نظر میرسد محتوای ارسالشده توسط سیستم نظارت ما به دلیل عدم همسویی با دستورالعملهای انجمن ما پرچمگذاری شده است. ما نمی توانیم با این موضوع خاص ادامه دهیم. اگر سؤال یا موضوع دیگری دارید که میخواهید بررسی کنید، لطفاً پیام خود را ویرایش کنید یا یک مکالمه جدید ایجاد کنید.",
|
||||
"com_error_no_base_url": "هیچ URL پایه ای پیدا نشد. لطفاً یکی را ارائه کنید و دوباره امتحان کنید.",
|
||||
"com_error_no_user_key": "کلید پیدا نشد لطفاً یک کلید ارائه دهید و دوباره امتحان کنید.",
|
||||
"com_files_filter": "فیلتر کردن فایل ها...",
|
||||
"com_files_no_results": "هیچ نتیجه ای وجود ندارد.",
|
||||
"com_files_number_selected": "{{0}} از {{1}} موارد انتخاب شده",
|
||||
"com_files_table": "چیزی باید به اینجا برود خالی بود",
|
||||
"com_generated_files": "فایل های تولید شده:",
|
||||
"com_hide_examples": "مخفی کردن نمونه ها",
|
||||
"com_nav_2fa": "احراز هویت دو مرحله ای (2FA)",
|
||||
"com_nav_account_settings": "تنظیمات حساب",
|
||||
"com_nav_always_make_prod": "همیشه نسخه های جدید را تولید کنید",
|
||||
"com_nav_archive_created_at": "تاریخ بایگانی",
|
||||
"com_nav_archive_name": "نام",
|
||||
"com_nav_archived_chats": "چت های آرشیو شده",
|
||||
"com_nav_at_command": "@-فرمان",
|
||||
"com_nav_at_command_description": "برای تغییر نقاط پایانی، مدلها، تنظیمات از پیش تعیین شده و غیره، دستور «@» را تغییر دهید.",
|
||||
"com_nav_audio_play_error": "خطا در پخش صدا: {{0}}",
|
||||
"com_nav_audio_process_error": "خطا در پردازش صدا: {{0}}",
|
||||
"com_nav_auto_scroll": "اسکرول خودکار به آخرین پیام در گپ باز است",
|
||||
"com_nav_auto_send_prompts": "درخواست ارسال خودکار",
|
||||
"com_nav_auto_send_text": "ارسال خودکار متن",
|
||||
"com_nav_auto_send_text_disabled": "-1 را برای غیرفعال کردن تنظیم کنید",
|
||||
"com_nav_auto_transcribe_audio": "رونویسی خودکار صدا",
|
||||
"com_nav_automatic_playback": "پخش خودکار آخرین پیام",
|
||||
"com_nav_balance": "تعادل",
|
||||
"com_nav_browser": "مرورگر",
|
||||
"com_nav_center_chat_input": "مرکز ورودی چت در صفحه خوش آمدید",
|
||||
"com_nav_change_picture": "تغییر تصویر",
|
||||
"com_nav_chat_commands": "دستورات چت",
|
||||
"com_nav_chat_commands_info": "این دستورات با تایپ کاراکترهای خاص در ابتدای پیام شما فعال می شوند. هر فرمان با پیشوند تعیین شده خود راه اندازی می شود. اگر مرتباً از این کاراکترها برای شروع پیام ها استفاده می کنید، می توانید آنها را غیرفعال کنید.",
|
||||
"com_nav_chat_direction": "جهت چت",
|
||||
"com_nav_clear_all_chats": "تمام چت ها را پاک کنید",
|
||||
"com_nav_clear_cache_confirm_message": "آیا مطمئن هستید که می خواهید کش را پاک کنید؟",
|
||||
"com_nav_clear_conversation": "مکالمات را پاک کنید",
|
||||
"com_nav_clear_conversation_confirm_message": "آیا مطمئن هستید که می خواهید همه مکالمات را پاک کنید؟ این غیر قابل برگشت است.",
|
||||
"com_nav_close_sidebar": "نوار کناری را ببندید",
|
||||
"com_nav_commands": "دستورات",
|
||||
"com_nav_confirm_clear": "پاک کردن را تایید کنید",
|
||||
"com_nav_conversation_mode": "حالت مکالمه",
|
||||
"com_nav_convo_menu_options": "گزینه های منوی گفتگو",
|
||||
"com_nav_db_sensitivity": "حساسیت دسی بل",
|
||||
"com_nav_delete_account": "حذف اکانت",
|
||||
"com_nav_delete_account_button": "اکانت من را برای همیشه حذف کنید",
|
||||
"com_nav_delete_account_confirm": "حذف حساب - مطمئن هستید؟",
|
||||
"com_nav_delete_account_email_placeholder": "لطفا ایمیل اکانت خود را وارد کنید",
|
||||
"com_nav_delete_cache_storage": "حافظه کش TTS را حذف کنید",
|
||||
"com_nav_delete_data_info": "تمام اطلاعات شما حذف خواهد شد.",
|
||||
"com_nav_delete_warning": "هشدار: با این کار حساب شما برای همیشه حذف می شود.",
|
||||
"com_nav_edit_chat_badges": "مدالهای چت را ویرایش کنید",
|
||||
"com_nav_enable_cache_tts": "کش TTS را فعال کنید",
|
||||
"com_nav_enable_cloud_browser_voice": "از صداهای مبتنی بر ابر استفاده کنید",
|
||||
"com_nav_enabled": "فعال شد",
|
||||
"com_nav_engine": "موتور",
|
||||
"com_nav_enter_to_send": "برای ارسال پیام، Enter را فشار دهید",
|
||||
"com_nav_export": "صادرات",
|
||||
"com_nav_export_all_message_branches": "صادرات همه شاخه های پیام",
|
||||
"com_nav_export_conversation": "صادرات مکالمه",
|
||||
"com_nav_export_filename": "نام فایل",
|
||||
"com_nav_export_filename_placeholder": "نام فایل را تنظیم کنید",
|
||||
"com_nav_export_include_endpoint_options": "شامل گزینه های نقطه پایانی",
|
||||
"com_nav_export_recursive": "بازگشتی",
|
||||
"com_nav_export_recursive_or_sequential": "بازگشتی یا متوالی؟",
|
||||
"com_nav_export_type": "تایپ کنید",
|
||||
"com_nav_external": "خارجی",
|
||||
"com_nav_font_size": "اندازه قلم پیام",
|
||||
"com_nav_font_size_base": "متوسط",
|
||||
"com_nav_font_size_lg": "بزرگ",
|
||||
"com_nav_font_size_sm": "کوچک",
|
||||
"com_nav_font_size_xl": "فوق العاده بزرگ",
|
||||
"com_nav_font_size_xs": "فوق العاده کوچک",
|
||||
"com_nav_help_faq": "راهنما و سوالات متداول",
|
||||
"com_nav_hide_panel": "پانل سمت راست را پنهان کنید",
|
||||
"com_nav_info_code_artifacts": "نمایش مصنوعات کد آزمایشی در کنار گپ را فعال می کند",
|
||||
"com_nav_info_code_artifacts_agent": "استفاده از مصنوعات کد را برای این کارگزار فعال می کند. به طور پیشفرض، دستورالعملهای اضافی مخصوص استفاده از مصنوعات اضافه میشوند، مگر اینکه «حالت درخواست سفارشی» فعال باشد.",
|
||||
"com_nav_info_custom_prompt_mode": "وقتی فعال باشد، اعلان سیستم پیشفرض مصنوعات شامل نخواهد شد. تمام دستورالعمل های تولید مصنوع باید به صورت دستی در این حالت ارائه شوند.",
|
||||
"com_nav_info_enter_to_send": "وقتی فعال باشد، با فشار دادن «ENTER» پیام شما ارسال می شود. وقتی غیرفعال است، با فشار دادن Enter یک خط جدید اضافه می شود و برای ارسال پیام خود باید «CTRL + ENTER» / «⌘ + ENTER» را فشار دهید.",
|
||||
"com_nav_info_fork_change_default": "\"فقط پیام های قابل مشاهده\" فقط شامل مسیر مستقیم پیام انتخاب شده است. «شامل شاخههای مرتبط» شاخههایی را در طول مسیر اضافه میکند. «شامل همه به/از اینجا» شامل همه پیامها و شاخههای متصل است.",
|
||||
"com_nav_info_fork_split_target_setting": "هنگامی که فعال باشد، انشعاب از پیام هدف شروع می شود تا آخرین پیام در مکالمه، با توجه به رفتار انتخاب شده.",
|
||||
"com_nav_info_include_shadcnui": "وقتی فعال باشد، دستورالعملهای استفاده از مؤلفههای shadcn/ui گنجانده میشود. shadcn/ui مجموعهای از اجزای قابل استفاده مجدد است که با استفاده از Radix UI و Tailwind CSS ساخته شدهاند. توجه: این دستورالعملهای طولانی هستند، فقط در صورتی باید آن را فعال کنید که اطلاعرسانی به LLM از واردات و اجزای صحیح برای شما مهم باشد. برای اطلاعات بیشتر در مورد این اجزاء به آدرس: https://ui.shadcn.com/ مراجعه کنید",
|
||||
"com_nav_info_latex_parsing": "وقتی فعال باشد، کد LaTeX در پیام ها به صورت معادلات ریاضی ارائه می شود. اگر به رندر LaTeX نیاز ندارید، غیرفعال کردن این ممکن است عملکرد را بهبود بخشد.",
|
||||
"com_nav_info_save_badges_state": "هنگامی که این گزینه فعال باشد، وضعیت نشانهای چت ذخیره میشود. این بدان معناست که اگر یک چت جدید ایجاد کنید، نشانها در همان وضعیت چت قبلی باقی خواهند ماند. اگر این گزینه را غیرفعال کنید، نشانها در هر بار ایجاد یک چت جدید به حالت پیشفرض بازنشانی میشوند.",
|
||||
"com_nav_info_save_draft": "وقتی فعال باشد، متن و پیوستهایی که در فرم چت وارد میکنید بهطور خودکار بهصورت محلی بهعنوان پیشنویس ذخیره میشوند. این پیشنویسها در دسترس خواهند بود حتی اگر صفحه را دوباره بارگیری کنید یا به مکالمه دیگری بروید. پیش نویس ها به صورت محلی در دستگاه شما ذخیره می شوند و پس از ارسال پیام حذف می شوند.",
|
||||
"com_nav_info_show_thinking": "وقتی فعال باشد، چت به طور پیشفرض فهرستهای بازشوی تفکر را نشان میدهد و به شما امکان میدهد استدلال هوش مصنوعی را در زمان واقعی مشاهده کنید. وقتی غیرفعال باشد، منوهای کشویی تفکر به طور پیشفرض بسته میمانند تا رابطی تمیزتر و کارآمدتر داشته باشند",
|
||||
"com_nav_info_user_name_display": "وقتی فعال باشد، نام کاربری فرستنده بالای هر پیامی که ارسال می کنید نشان داده می شود. هنگامی که غیرفعال است، فقط \"شما\" را در بالای پیام های خود خواهید دید.",
|
||||
"com_nav_lang_arabic": "العربية",
|
||||
"com_nav_lang_auto": "تشخیص خودکار",
|
||||
"com_nav_lang_brazilian_portuguese": "پرتغال برازیلیرو",
|
||||
"com_nav_lang_chinese": "中文",
|
||||
"com_nav_lang_dutch": "هلند",
|
||||
"com_nav_lang_english": "انگلیسی",
|
||||
"com_nav_lang_estonian": "استی کیل",
|
||||
"com_nav_lang_finnish": "سومی",
|
||||
"com_nav_lang_french": "فرانسه ",
|
||||
"com_nav_lang_georgian": "فارسی",
|
||||
"com_nav_lang_german": "دویچ",
|
||||
"com_nav_lang_hebrew": "عبری",
|
||||
"com_nav_lang_hungarian": "مجاری",
|
||||
"com_nav_lang_indonesia": "اندونزی",
|
||||
"com_nav_lang_italian": "ایتالیایی",
|
||||
"com_nav_lang_japanese": "日本語",
|
||||
"com_nav_lang_korean": "한국어",
|
||||
"com_nav_lang_persian": "فارسی",
|
||||
"com_nav_lang_polish": "پولسکی",
|
||||
"com_nav_lang_portuguese": "پرتغالی ها",
|
||||
"com_nav_lang_russian": "Русский",
|
||||
"com_nav_lang_spanish": "اسپانیا",
|
||||
"com_nav_lang_swedish": "Svenska",
|
||||
"com_nav_lang_thai": "ไทย",
|
||||
"com_nav_lang_traditional_chinese": "繁體中文",
|
||||
"com_nav_lang_turkish": "ترکچه",
|
||||
"com_nav_lang_vietnamese": "Tiếng Việt",
|
||||
"com_nav_language": "زبان",
|
||||
"com_nav_latex_parsing": "تجزیه LaTeX در پیام ها (ممکن است بر عملکرد تأثیر بگذارد)",
|
||||
"com_nav_log_out": "از سیستم خارج شوید",
|
||||
"com_nav_long_audio_warning": "پردازش متون طولانیتر زمان بیشتری میبرد.",
|
||||
"com_nav_maximize_chat_space": "فضای چت را به حداکثر برسانید",
|
||||
"com_nav_modular_chat": "جابجایی نقاط پایانی در اواسط مکالمه را فعال کنید",
|
||||
"com_nav_my_files": "فایل های من",
|
||||
"com_nav_not_supported": "پشتیبانی نمی شود",
|
||||
"com_nav_open_sidebar": "نوار کناری را باز کنید",
|
||||
"com_nav_playback_rate": "نرخ پخش صدا",
|
||||
"com_nav_plugin_auth_error": "در تلاش برای احراز هویت این افزونه خطایی روی داد. لطفا دوباره امتحان کنید.",
|
||||
"com_nav_plugin_install": "نصب کنید",
|
||||
"com_nav_plugin_search": "افزونه ها را جستجو کنید",
|
||||
"com_nav_plugin_store": "فروشگاه افزونه",
|
||||
"com_nav_plugin_uninstall": "حذف نصب کنید",
|
||||
"com_nav_plus_command": "+-فرمان",
|
||||
"com_nav_plus_command_description": "دستور \"+\" را برای افزودن یک تنظیم چند پاسخی تغییر دهید",
|
||||
"com_nav_profile_picture": "عکس پروفایل",
|
||||
"com_nav_save_badges_state": "ذخیره وضعیت نشان",
|
||||
"com_nav_save_drafts": "پیش نویس ها را به صورت محلی ذخیره کنید",
|
||||
"com_nav_scroll_button": "به دکمه پایان بروید",
|
||||
"com_nav_search_placeholder": "جستجوی پیام ها",
|
||||
"com_nav_send_message": "ارسال پیام",
|
||||
"com_nav_setting_account": "حساب",
|
||||
"com_nav_setting_beta": "ویژگی های بتا",
|
||||
"com_nav_setting_chat": "چت کنید",
|
||||
"com_nav_setting_data": "کنترل های داده",
|
||||
"com_nav_setting_general": "ژنرال",
|
||||
"com_nav_setting_speech": "گفتار",
|
||||
"com_nav_settings": "تنظیمات",
|
||||
"com_nav_shared_links": "پیوندهای مشترک",
|
||||
"com_nav_show_code": "هنگام استفاده از مفسر کد، همیشه کد را نشان دهید",
|
||||
"com_nav_show_thinking": "Thinking Dropdowns را به صورت پیش فرض باز کنید",
|
||||
"com_nav_slash_command": "/-فرمان",
|
||||
"com_nav_slash_command_description": "دستور \"/\" را برای انتخاب یک اعلان از طریق صفحه کلید تغییر دهید",
|
||||
"com_nav_speech_to_text": "گفتار به متن",
|
||||
"com_nav_stop_generating": "تولید را متوقف کنید",
|
||||
"com_nav_text_to_speech": "متن به گفتار",
|
||||
"com_nav_theme": "موضوع",
|
||||
"com_nav_theme_dark": "تاریک",
|
||||
"com_nav_theme_light": "نور",
|
||||
"com_nav_theme_system": "سیستم",
|
||||
"com_nav_tool_dialog": "ابزارهای دستیار",
|
||||
"com_nav_tool_dialog_agents": "ابزار کارگزار",
|
||||
"com_nav_tool_dialog_description": "برای تداوم انتخاب ابزار، دستیار باید ذخیره شود.",
|
||||
"com_nav_tool_remove": "حذف کنید",
|
||||
"com_nav_tool_search": "ابزارهای جستجو",
|
||||
"com_nav_user": "کاربر",
|
||||
"com_nav_user_msg_markdown": "پیام های کاربر را به صورت علامت گذاری ارائه کنید",
|
||||
"com_nav_user_name_display": "نمایش نام کاربری در پیام ها",
|
||||
"com_nav_voice_select": "صدا",
|
||||
"com_show_agent_settings": "نمایش تنظیمات کارگزار",
|
||||
"com_show_completion_settings": "نمایش تنظیمات تکمیل",
|
||||
"com_show_examples": "نمایش نمونه ها",
|
||||
"com_sidepanel_agent_builder": "کارگزار ساز",
|
||||
"com_sidepanel_assistant_builder": "دستیار سازنده",
|
||||
"com_sidepanel_attach_files": "فایل ها را ضمیمه کنید",
|
||||
"com_sidepanel_conversation_tags": "نشانک ها",
|
||||
"com_sidepanel_hide_panel": "پنهان کردن پنل",
|
||||
"com_sidepanel_manage_files": "مدیریت فایل ها",
|
||||
"com_sidepanel_parameters": "پارامترها",
|
||||
"com_ui_2fa_account_security": "احراز هویت دو مرحله ای یک لایه امنیتی اضافی به حساب شما اضافه می کند",
|
||||
"com_ui_2fa_disable": "2FA را غیرفعال کنید",
|
||||
"com_ui_2fa_disable_error": "هنگام غیرفعال کردن احراز هویت دو مرحلهای خطایی روی داد",
|
||||
"com_ui_2fa_disabled": "2FA غیرفعال شده است",
|
||||
"com_ui_2fa_enable": "2FA را فعال کنید",
|
||||
"com_ui_2fa_enabled": "2FA فعال شده است",
|
||||
"com_ui_2fa_generate_error": "هنگام ایجاد تنظیمات احراز هویت دو مرحلهای خطایی روی داد",
|
||||
"com_ui_2fa_invalid": "کد احراز هویت دو مرحله ای نامعتبر است",
|
||||
"com_ui_2fa_setup": "راه اندازی 2FA",
|
||||
"com_ui_2fa_verified": "احراز هویت دو مرحله ای با موفقیت تأیید شد",
|
||||
"com_ui_accept": "قبول دارم",
|
||||
"com_ui_add": "اضافه کنید",
|
||||
"com_ui_add_model_preset": "یک مدل یا از پیش تعیین شده برای پاسخ اضافی اضافه کنید",
|
||||
"com_ui_add_multi_conversation": "افزودن چند مکالمه",
|
||||
"com_ui_admin": "مدیر",
|
||||
"com_ui_admin_access_warning": "غیرفعال کردن دسترسی ادمین به این ویژگی ممکن است باعث ایجاد مشکلات غیرمنتظره رابط کاربری شود که نیاز به بازخوانی دارد. اگر ذخیره شود، تنها راه برای برگرداندن از طریق تنظیمات رابط در پیکربندی librechat.yaml است که بر همه نقشها تأثیر میگذارد.",
|
||||
"com_ui_admin_settings": "تنظیمات مدیریت",
|
||||
"com_ui_advanced": "پیشرفته",
|
||||
"com_ui_advanced_settings": "تنظیمات پیشرفته",
|
||||
"com_ui_agent": "کارگزار",
|
||||
"com_ui_agent_chain": "زنجیره کارگزار (مخلوط از عوامل)",
|
||||
"com_ui_agent_chain_info": "ایجاد دنباله ای از عوامل را فعال می کند. هر کارگزار می تواند به خروجی های عامل های قبلی در زنجیره دسترسی داشته باشد. بر اساس معماری \"Mixture-of-کارگزارs\" که در آن عامل ها از خروجی های قبلی به عنوان اطلاعات کمکی استفاده می کنند.",
|
||||
"com_ui_agent_chain_max": "شما به حداکثر رسیده اید {{0}} عوامل",
|
||||
"com_ui_agent_delete_error": "هنگام حذف کارگزار خطایی روی داد",
|
||||
"com_ui_agent_deleted": "کارگزار با موفقیت حذف شد",
|
||||
"com_ui_agent_duplicate_error": "خطایی در کپی کردن کارگزار رخ داد",
|
||||
"com_ui_agent_duplicated": "کارگزار با موفقیت کپی شد",
|
||||
"com_ui_agent_editing_allowed": "سایر کاربران از قبل می توانند این کارگزار را ویرایش کنند",
|
||||
"com_ui_agent_recursion_limit": "Max کارگزار Steps",
|
||||
"com_ui_agent_recursion_limit_info": "تعداد مراحلی را که کارگزار می تواند در یک اجرا انجام دهد قبل از دادن پاسخ نهایی محدود می کند. پیش فرض 25 مرحله است. یک مرحله یا درخواست API AI یا دور استفاده از ابزار است. به عنوان مثال، یک تکارگزار ابزار پایه 3 مرحله را طی می کند: درخواست اولیه، استفاده از ابزار و درخواست پیگیری.",
|
||||
"com_ui_agent_shared_to_all": "چیزی باید به اینجا برود خالی بود",
|
||||
"com_ui_agent_var": "{{0}} کارگزار",
|
||||
"com_ui_agents": "عوامل",
|
||||
"com_ui_agents_allow_create": "اجازه ایجاد کارگزارs",
|
||||
"com_ui_agents_allow_share_global": "به همه کاربران اجازه اشتراک گذاری کارگزارs را بدهید",
|
||||
"com_ui_agents_allow_use": "اجازه استفاده از کارگزارs",
|
||||
"com_ui_all": "همه",
|
||||
"com_ui_all_proper": "همه",
|
||||
"com_ui_analyzing": "در حال تجزیه و تحلیل",
|
||||
"com_ui_analyzing_finished": "تجزیه و تحلیل را به پایان رساند",
|
||||
"com_ui_api_key": "کلید API",
|
||||
"com_ui_archive": "آرشیو",
|
||||
"com_ui_archive_error": "مکالمه بایگانی نشد",
|
||||
"com_ui_artifact_click": "برای باز کردن کلیک کنید",
|
||||
"com_ui_artifacts": "مصنوعات",
|
||||
"com_ui_artifacts_toggle": "تغییر رابط کاربری Artifacts",
|
||||
"com_ui_artifacts_toggle_agent": "Artifacts را فعال کنید",
|
||||
"com_ui_ascending": "صعودی",
|
||||
"com_ui_assistant": "دستیار",
|
||||
"com_ui_assistant_delete_error": "هنگام حذف دستیار خطایی روی داد",
|
||||
"com_ui_assistant_deleted": "دستیار با موفقیت حذف شد",
|
||||
"com_ui_assistants": "دستیاران",
|
||||
"com_ui_assistants_output": "خروجی دستیاران",
|
||||
"com_ui_attach_error": "فایل پیوست نمی شود. مکالمه ای ایجاد یا انتخاب کنید، یا سعی کنید صفحه را بازخوانی کنید.",
|
||||
"com_ui_attach_error_openai": "نمیتوان فایلهای دستیار را به نقاط پایانی دیگر پیوست کرد",
|
||||
"com_ui_attach_error_size": "بیش از حد اندازه فایل برای نقطه پایانی:",
|
||||
"com_ui_attach_error_type": "نوع فایل پشتیبانی نشده برای نقطه پایانی:",
|
||||
"com_ui_attach_remove": "حذف فایل",
|
||||
"com_ui_attach_warn_endpoint": "فایلهای غیردستیار ممکن است بدون ابزار سازگار نادیده گرفته شوند",
|
||||
"com_ui_attachment": "پیوست",
|
||||
"com_ui_auth_type": "نوع احراز هویت",
|
||||
"com_ui_auth_url": "URL مجوز",
|
||||
"com_ui_authentication": "احراز هویت",
|
||||
"com_ui_authentication_type": "نوع احراز هویت",
|
||||
"com_ui_avatar": "آواتار",
|
||||
"com_ui_azure": "آژور",
|
||||
"com_ui_back_to_chat": "بازگشت به چت",
|
||||
"com_ui_back_to_prompts": "بازگشت به Prompts",
|
||||
"com_ui_backup_codes": "کدهای پشتیبان",
|
||||
"com_ui_backup_codes_regenerate_error": "هنگام ایجاد مجدد کدهای پشتیبان خطایی روی داد",
|
||||
"com_ui_backup_codes_regenerated": "کدهای پشتیبان با موفقیت بازسازی شدند",
|
||||
"com_ui_basic": "اساسی",
|
||||
"com_ui_basic_auth_header": "هدر مجوز اولیه",
|
||||
"com_ui_bearer": "حامل",
|
||||
"com_ui_bookmark_delete_confirm": "آیا مطمئن هستید که می خواهید این نشانک را حذف کنید؟",
|
||||
"com_ui_bookmarks": "نشانک ها",
|
||||
"com_ui_bookmarks_add": "اضافه کردن نشانک",
|
||||
"com_ui_bookmarks_add_to_conversation": "به مکالمه فعلی اضافه کنید",
|
||||
"com_ui_bookmarks_count": "بشمار",
|
||||
"com_ui_bookmarks_create_error": "در ایجاد نشانک خطایی روی داد",
|
||||
"com_ui_bookmarks_create_exists": "این نشانک از قبل وجود دارد",
|
||||
"com_ui_bookmarks_create_success": "نشانک با موفقیت ایجاد شد",
|
||||
"com_ui_bookmarks_delete": "حذف نشانک",
|
||||
"com_ui_bookmarks_delete_error": "هنگام حذف نشانک خطایی روی داد",
|
||||
"com_ui_bookmarks_delete_success": "نشانک با موفقیت حذف شد",
|
||||
"com_ui_bookmarks_description": "توضیحات",
|
||||
"com_ui_bookmarks_edit": "ویرایش نشانک",
|
||||
"com_ui_bookmarks_filter": "فیلتر کردن نشانکها...",
|
||||
"com_ui_bookmarks_new": "نشانک جدید",
|
||||
"com_ui_bookmarks_title": "عنوان",
|
||||
"com_ui_bookmarks_update_error": "هنگام بهروزرسانی نشانک خطایی روی داد",
|
||||
"com_ui_bookmarks_update_success": "نشانک با موفقیت به روز شد",
|
||||
"com_ui_bulk_delete_error": "پیوندهای به اشتراک گذاشته شده حذف نشد",
|
||||
"com_ui_callback_url": "URL برگشت به تماس",
|
||||
"com_ui_cancel": "لغو کنید",
|
||||
"com_ui_chat": "چت کنید",
|
||||
"com_ui_chat_history": "تاریخچه چت",
|
||||
"com_ui_clear": "پاک کردن",
|
||||
"com_ui_clear_all": "پاک کردن همه",
|
||||
"com_ui_client_id": "شناسه مشتری",
|
||||
"com_ui_client_secret": "راز مشتری",
|
||||
"com_ui_close": "بستن",
|
||||
"com_ui_close_menu": "بستن منو",
|
||||
"com_ui_code": "کد",
|
||||
"com_ui_collapse_chat": "جمع کردن چت",
|
||||
"com_ui_command_placeholder": "اختیاری: دستوری را برای فرمان وارد کنید یا نام مورد استفاده قرار گیرد",
|
||||
"com_ui_command_usage_placeholder": "یک درخواست با دستور یا نام انتخاب کنید",
|
||||
"com_ui_complete_setup": "راه اندازی کامل",
|
||||
"com_ui_confirm_action": "اقدام را تأیید کنید",
|
||||
"com_ui_confirm_admin_use_change": "با تغییر این تنظیم، دسترسی مدیران، از جمله خودتان مسدود میشود. آیا مطمئن هستید که می خواهید ادامه دهید؟",
|
||||
"com_ui_confirm_change": "تغییر را تایید کنید",
|
||||
"com_ui_context": "زمینه",
|
||||
"com_ui_continue": "ادامه دهید",
|
||||
"com_ui_controls": "کنترل ها",
|
||||
"com_ui_copied": "کپی شده!",
|
||||
"com_ui_copied_to_clipboard": "در کلیپ بورد کپی شد",
|
||||
"com_ui_copy_code": "کد را کپی کنید",
|
||||
"com_ui_copy_link": "لینک را کپی کنید",
|
||||
"com_ui_copy_to_clipboard": "در کلیپ بورد کپی کنید",
|
||||
"com_ui_create": "ایجاد کنید",
|
||||
"com_ui_create_link": "ایجاد لینک",
|
||||
"com_ui_create_prompt": "Prompt ایجاد کنید",
|
||||
"com_ui_currently_production": "در حال حاضر در حال تولید است",
|
||||
"com_ui_custom": "سفارشی",
|
||||
"com_ui_custom_header_name": "نام هدر سفارشی",
|
||||
"com_ui_custom_prompt_mode": "حالت درخواست سفارشی",
|
||||
"com_ui_dashboard": "داشبورد",
|
||||
"com_ui_date": "تاریخ",
|
||||
"com_ui_date_april": "آوریل",
|
||||
"com_ui_date_august": "مرداد",
|
||||
"com_ui_date_december": "دسامبر",
|
||||
"com_ui_date_february": "فوریه",
|
||||
"com_ui_date_january": "ژانویه",
|
||||
"com_ui_date_july": "جولای",
|
||||
"com_ui_date_june": "ژوئن",
|
||||
"com_ui_date_march": "مارس",
|
||||
"com_ui_date_may": "می",
|
||||
"com_ui_date_november": "نوامبر",
|
||||
"com_ui_date_october": "اکتبر",
|
||||
"com_ui_date_previous_30_days": "30 روز قبل",
|
||||
"com_ui_date_previous_7_days": "7 روز قبل",
|
||||
"com_ui_date_september": "سپتامبر",
|
||||
"com_ui_date_today": "امروز",
|
||||
"com_ui_date_yesterday": "دیروز",
|
||||
"com_ui_decline": "من قبول ندارم",
|
||||
"com_ui_default_post_request": "پیش فرض (درخواست POST)",
|
||||
"com_ui_delete": "حذف کنید",
|
||||
"com_ui_delete_action": "حذف Action",
|
||||
"com_ui_delete_action_confirm": "آیا مطمئن هستید که می خواهید این عمل را حذف کنید؟",
|
||||
"com_ui_delete_agent_confirm": "آیا مطمئن هستید که می خواهید این کارگزار را حذف کنید؟",
|
||||
"com_ui_delete_assistant_confirm": "آیا مطمئن هستید که می خواهید این دستیار را حذف کنید؟ این قابل واگرد نیست.",
|
||||
"com_ui_delete_confirm": "این حذف خواهد شد",
|
||||
"com_ui_delete_confirm_prompt_version_var": "با این کار نسخه انتخاب شده برای \" حذف می شود{{0}}اگر نسخه دیگری وجود نداشته باشد، درخواست حذف خواهد شد.",
|
||||
"com_ui_delete_conversation": "چت حذف شود؟",
|
||||
"com_ui_delete_prompt": "درخواست حذف شود؟",
|
||||
"com_ui_delete_shared_link": "پیوند مشترک حذف شود؟",
|
||||
"com_ui_delete_tool": "ابزار حذف",
|
||||
"com_ui_delete_tool_confirm": "آیا مطمئن هستید که می خواهید این ابزار را حذف کنید؟",
|
||||
"com_ui_descending": "توصیف",
|
||||
"com_ui_description": "توضیحات",
|
||||
"com_ui_description_placeholder": "اختیاری: توضیحی را برای نمایش برای درخواست وارد کنید",
|
||||
"com_ui_disabling": "غیرفعال کردن...",
|
||||
"com_ui_download": "دانلود کنید",
|
||||
"com_ui_download_artifact": "آرتیفکت را دانلود کنید",
|
||||
"com_ui_download_backup": "دانلود کدهای پشتیبان",
|
||||
"com_ui_download_backup_tooltip": "قبل از ادامه، کدهای پشتیبان خود را دانلود کنید. اگر دستگاه احراز هویت خود را گم کردید، به آنها برای بازیابی دسترسی نیاز خواهید داشت",
|
||||
"com_ui_download_error": "خطا در دانلود فایل ممکن است فایل حذف شده باشد.",
|
||||
"com_ui_drag_drop": "چیزی باید به اینجا برود خالی بود",
|
||||
"com_ui_dropdown_variables": "متغیرهای کشویی:",
|
||||
"com_ui_dropdown_variables_info": "منوهای کشویی سفارشی برای درخواست های خود ایجاد کنید: `{{variable_name:option1|option2|option3}}`",
|
||||
"com_ui_duplicate": "تکراری",
|
||||
"com_ui_duplication_error": "هنگام تکرار مکالمه خطایی روی داد",
|
||||
"com_ui_duplication_processing": "مکالمه تکراری...",
|
||||
"com_ui_duplication_success": "مکالمه با موفقیت تکرار شد",
|
||||
"com_ui_edit": "ویرایش کنید",
|
||||
"com_ui_empty_category": "-",
|
||||
"com_ui_endpoint": "نقطه پایانی",
|
||||
"com_ui_endpoint_menu": "منوی نقطه پایانی LLM",
|
||||
"com_ui_enter": "وارد کنید",
|
||||
"com_ui_enter_api_key": "کلید API را وارد کنید",
|
||||
"com_ui_enter_openapi_schema": "طرح OpenAPI خود را در اینجا وارد کنید",
|
||||
"com_ui_error": "خطا",
|
||||
"com_ui_error_connection": "خطا در اتصال به سرور، سعی کنید صفحه را بازخوانی کنید.",
|
||||
"com_ui_error_save_admin_settings": "هنگام ذخیره تنظیمات سرپرست شما خطایی روی داد.",
|
||||
"com_ui_examples": "نمونه ها",
|
||||
"com_ui_expand_chat": "گپ را بزرگ کنید",
|
||||
"com_ui_export_convo_modal": "Export Conversation Modal",
|
||||
"com_ui_field_required": "این فیلد الزامی است",
|
||||
"com_ui_filter_prompts": "درخواست های فیلتر",
|
||||
"com_ui_filter_prompts_name": "درخواست ها را با نام فیلتر کنید",
|
||||
"com_ui_finance": "امور مالی",
|
||||
"com_ui_fork": "چنگال",
|
||||
"com_ui_fork_all_target": "شامل همه به/از اینجا",
|
||||
"com_ui_fork_branches": "شامل شاخه های مرتبط",
|
||||
"com_ui_fork_change_default": "گزینه پیش فرض چنگال",
|
||||
"com_ui_fork_default": "از گزینه پیش فرض چنگال استفاده کنید",
|
||||
"com_ui_fork_error": "خطایی در ایجاد مکالمه وجود داشت",
|
||||
"com_ui_fork_from_message": "یک گزینه چنگال را انتخاب کنید",
|
||||
"com_ui_fork_info_1": "از این تنظیم برای فورک کردن پیام ها با رفتار دلخواه استفاده کنید.",
|
||||
"com_ui_fork_info_2": "\"Forking\" به ایجاد یک مکالمه جدید اشاره دارد که از پیامهای خاصی در مکالمه فعلی شروع/پایان مییابد، و مطابق با گزینههای انتخاب شده یک کپی ایجاد میکند.",
|
||||
"com_ui_fork_info_3": "\"پیام هدف\" یا به پیامی اشاره دارد که این پنجره از آن باز شده است، یا اگر علامت \"{{0}}\"، آخرین پیام در گفتگو.",
|
||||
"com_ui_fork_info_branches": "این گزینه پیام های قابل مشاهده را به همراه شاخه های مرتبط فورک می کند. به عبارت دیگر، مسیر مستقیم به پیام هدف، از جمله شاخه های در طول مسیر.",
|
||||
"com_ui_fork_info_remember": "این را علامت بزنید تا گزینههایی را که برای استفاده در آینده انتخاب میکنید، به خاطر بسپارید و در صورت تمایل، گفتگوها را سریعتر انجام دهید.",
|
||||
"com_ui_fork_info_start": "در صورت علامت زدن، انشعاب از این پیام تا آخرین پیام در مکالمه، مطابق با رفتار انتخاب شده در بالا آغاز میشود.",
|
||||
"com_ui_fork_info_target": "این گزینه تمام پیامهای منتهی به پیام هدف، از جمله همسایههای آن را فورک میکند. به عبارت دیگر، همه شاخه های پیام، چه قابل مشاهده باشند و چه در مسیر یکسان باشند، شامل می شوند.",
|
||||
"com_ui_fork_info_visible": "این گزینه فقط پیام های قابل مشاهده را فورک می کند. به عبارت دیگر، مسیر مستقیم به پیام هدف، بدون هیچ شاخه ای.",
|
||||
"com_ui_fork_processing": "قطع گفتگو...",
|
||||
"com_ui_fork_remember": "به یاد داشته باشید",
|
||||
"com_ui_fork_remember_checked": "انتخاب شما پس از استفاده به خاطر سپرده خواهد شد. هر زمان خواستید این را در تنظیمات تغییر دهید.",
|
||||
"com_ui_fork_split_target": "چنگال را از اینجا شروع کنید",
|
||||
"com_ui_fork_split_target_setting": "به طور پیش فرض فورک را از پیام هدف شروع کنید",
|
||||
"com_ui_fork_success": "مکالمه با موفقیت انجام شد",
|
||||
"com_ui_fork_visible": "فقط پیام های قابل مشاهده",
|
||||
"com_ui_generate_backup": "کدهای پشتیبان تولید کنید",
|
||||
"com_ui_generate_qrcode": "کد QR ایجاد کنید",
|
||||
"com_ui_generating": "در حال تولید...",
|
||||
"com_ui_global_group": "چیزی باید به اینجا برود خالی بود",
|
||||
"com_ui_go_back": "به عقب برگرد",
|
||||
"com_ui_go_to_conversation": "به گفتگو بروید",
|
||||
"com_ui_good_afternoon": "ظهر بخیر",
|
||||
"com_ui_good_evening": "عصر بخیر",
|
||||
"com_ui_good_morning": "صبح بخیر",
|
||||
"com_ui_happy_birthday": "تولد 1 سالگی من است!",
|
||||
"com_ui_hide_qr": "کد QR را مخفی کنید",
|
||||
"com_ui_host": "میزبان",
|
||||
"com_ui_idea": "ایده ها",
|
||||
"com_ui_image_gen": "تصویر ژنرال",
|
||||
"com_ui_import": "واردات",
|
||||
"com_ui_import_conversation_error": "هنگام وارد کردن مکالمات شما خطایی روی داد",
|
||||
"com_ui_import_conversation_file_type_error": "نوع واردات پشتیبانی نشده است",
|
||||
"com_ui_import_conversation_info": "مکالمات را از یک فایل JSON وارد کنید",
|
||||
"com_ui_import_conversation_success": "مکالمات با موفقیت وارد شد",
|
||||
"com_ui_include_shadcnui": "شامل دستورالعمل های اجزای shadcn/ui",
|
||||
"com_ui_include_shadcnui_agent": "دستورالعمل shadcn/ui را درج کنید",
|
||||
"com_ui_input": "ورودی",
|
||||
"com_ui_instructions": "دستورالعمل ها",
|
||||
"com_ui_late_night": "آخر شب مبارک",
|
||||
"com_ui_latest_footer": "هر هوش مصنوعی برای همه",
|
||||
"com_ui_latest_production_version": "آخرین نسخه تولیدی",
|
||||
"com_ui_latest_version": "آخرین نسخه",
|
||||
"com_ui_librechat_code_api_key": "کلید LibreChat Code Interpreter API خود را دریافت کنید",
|
||||
"com_ui_librechat_code_api_subtitle": "امن. چند زبانه. فایل های ورودی/خروجی",
|
||||
"com_ui_librechat_code_api_title": "کد هوش مصنوعی را اجرا کنید",
|
||||
"com_ui_loading": "در حال بارگیری...",
|
||||
"com_ui_locked": "قفل شده است",
|
||||
"com_ui_logo": "{{0}} لوگو",
|
||||
"com_ui_manage": "مدیریت کنید",
|
||||
"com_ui_max_tags": "حداکثر تعداد مجاز است {{0}}، با استفاده از آخرین مقادیر.",
|
||||
"com_ui_mention": "یک نقطه پایانی، دستیار یا از پیش تعیین شده را برای جابجایی سریع به آن ذکر کنید",
|
||||
"com_ui_min_tags": "نمی توان مقادیر بیشتری را حذف کرد، حداقل {{0}} مورد نیاز هستند.",
|
||||
"com_ui_misc": "متفرقه",
|
||||
"com_ui_model": "مدل",
|
||||
"com_ui_model_parameters": "پارامترهای مدل",
|
||||
"com_ui_more_info": "اطلاعات بیشتر",
|
||||
"com_ui_my_prompts": "درخواست های من",
|
||||
"com_ui_name": "نام",
|
||||
"com_ui_new": "جدید",
|
||||
"com_ui_new_chat": "چت جدید",
|
||||
"com_ui_next": "بعدی",
|
||||
"com_ui_no": "خیر",
|
||||
"com_ui_no_backup_codes": "هیچ کد پشتیبان در دسترس نیست. لطفا موارد جدید ایجاد کنید",
|
||||
"com_ui_no_bookmarks": "به نظر می رسد هنوز هیچ نشانکی ندارید. روی یک چت کلیک کنید و یک چت جدید اضافه کنید",
|
||||
"com_ui_no_category": "بدون دسته",
|
||||
"com_ui_no_changes": "هیچ تغییری برای به روز رسانی وجود ندارد",
|
||||
"com_ui_no_data": "چیزی باید به اینجا برود خالی بود",
|
||||
"com_ui_no_terms_content": "هیچ محتوای شرایط و ضوابطی برای نمایش وجود ندارد",
|
||||
"com_ui_no_valid_items": "چیزی باید به اینجا برود خالی بود",
|
||||
"com_ui_none": "هیچ کدام",
|
||||
"com_ui_not_used": "استفاده نشده است",
|
||||
"com_ui_nothing_found": "چیزی پیدا نشد",
|
||||
"com_ui_oauth": "OAuth",
|
||||
"com_ui_of": "از",
|
||||
"com_ui_off": "خاموش",
|
||||
"com_ui_on": "روشن",
|
||||
"com_ui_openai": "OpenAI",
|
||||
"com_ui_page": "صفحه",
|
||||
"com_ui_prev": "قبلی",
|
||||
"com_ui_preview": "پیش نمایش",
|
||||
"com_ui_privacy_policy": "سیاست حفظ حریم خصوصی",
|
||||
"com_ui_privacy_policy_url": "URL خط مشی رازداری",
|
||||
"com_ui_prompt": "اعلان",
|
||||
"com_ui_prompt_already_shared_to_all": "این درخواست قبلاً برای همه کاربران به اشتراک گذاشته شده است",
|
||||
"com_ui_prompt_name": "نام درخواستی",
|
||||
"com_ui_prompt_name_required": "نام درخواستی مورد نیاز است",
|
||||
"com_ui_prompt_preview_not_shared": "نویسنده اجازه همکاری برای این درخواست را نداده است.",
|
||||
"com_ui_prompt_text": "متن",
|
||||
"com_ui_prompt_text_required": "متن مورد نیاز است",
|
||||
"com_ui_prompt_update_error": "هنگام بهروزرسانی درخواست خطایی روی داد",
|
||||
"com_ui_prompts": "درخواست می کند",
|
||||
"com_ui_prompts_allow_create": "اجازه ایجاد Prompts",
|
||||
"com_ui_prompts_allow_share_global": "اجازه اشتراکگذاری درخواستها برای همه کاربران",
|
||||
"com_ui_prompts_allow_use": "اجازه استفاده از Prompts",
|
||||
"com_ui_provider": "ارائه دهنده",
|
||||
"com_ui_read_aloud": "با صدای بلند بخوانید",
|
||||
"com_ui_redirecting_to_provider": "در حال تغییر مسیر به {{0}}لطفا صبر کنید...",
|
||||
"com_ui_refresh_link": "بازخوانی لینک",
|
||||
"com_ui_regenerate": "بازسازی کنید",
|
||||
"com_ui_regenerate_backup": "کدهای پشتیبان را بازسازی کنید",
|
||||
"com_ui_regenerating": "در حال بازسازی...",
|
||||
"com_ui_region": "منطقه",
|
||||
"com_ui_rename": "تغییر نام دهید",
|
||||
"com_ui_rename_prompt": "تغییر نام درخواست",
|
||||
"com_ui_requires_auth": "نیاز به احراز هویت",
|
||||
"com_ui_reset_var": "بازنشانی کنید {{0}}",
|
||||
"com_ui_result": "نتیجه",
|
||||
"com_ui_revoke": "لغو",
|
||||
"com_ui_revoke_info": "تمام اعتبارنامه های ارائه شده توسط کاربر را باطل کنید",
|
||||
"com_ui_revoke_key_confirm": "آیا مطمئن هستید که می خواهید این کلید را باطل کنید؟",
|
||||
"com_ui_revoke_key_endpoint": "لغو کلید برای {{0}}",
|
||||
"com_ui_revoke_keys": "Revoke Keys",
|
||||
"com_ui_revoke_keys_confirm": "آیا مطمئن هستید که می خواهید همه کلیدها را باطل کنید؟",
|
||||
"com_ui_role_select": "نقش",
|
||||
"com_ui_roleplay": "نقش بازی",
|
||||
"com_ui_run_code": "کد را اجرا کنید",
|
||||
"com_ui_run_code_error": "در اجرای کد خطایی روی داد",
|
||||
"com_ui_save": "ذخیره کنید",
|
||||
"com_ui_save_badge_changes": "تغییرات نشان ذخیره شود؟",
|
||||
"com_ui_save_submit": "ذخیره و ارسال کنید",
|
||||
"com_ui_saved": "ذخیره شد!",
|
||||
"com_ui_schema": "طرحواره",
|
||||
"com_ui_scope": "دامنه",
|
||||
"com_ui_search": "جستجو کنید",
|
||||
"com_ui_secret_key": "کلید مخفی",
|
||||
"com_ui_select": "انتخاب کنید",
|
||||
"com_ui_select_file": "یک فایل را انتخاب کنید",
|
||||
"com_ui_select_model": "یک مدل انتخاب کنید",
|
||||
"com_ui_select_provider": "ارائه دهنده ای را انتخاب کنید",
|
||||
"com_ui_select_provider_first": "ابتدا یک ارائه دهنده انتخاب کنید",
|
||||
"com_ui_select_region": "یک منطقه را انتخاب کنید",
|
||||
"com_ui_select_search_model": "مدل را با نام جستجو کنید",
|
||||
"com_ui_select_search_plugin": "جستجوی افزونه بر اساس نام",
|
||||
"com_ui_select_search_provider": "ارائه دهنده را با نام جستجو کنید",
|
||||
"com_ui_select_search_region": "منطقه را بر اساس نام جستجو کنید",
|
||||
"com_ui_share": "به اشتراک بگذارید",
|
||||
"com_ui_share_create_message": "نام شما و هر پیامی که پس از اشتراکگذاری اضافه میکنید خصوصی میمانند.",
|
||||
"com_ui_share_delete_error": "هنگام حذف پیوند مشترک خطایی روی داد",
|
||||
"com_ui_share_error": "هنگام اشتراکگذاری پیوند گپ خطایی روی داد",
|
||||
"com_ui_share_form_description": "چیزی باید به اینجا برود خالی بود",
|
||||
"com_ui_share_link_to_chat": "لینک چت را به اشتراک بگذارید",
|
||||
"com_ui_share_to_all_users": "برای همه کاربران به اشتراک بگذارید",
|
||||
"com_ui_share_update_message": "نام شما، دستورالعملهای سفارشی، و هر پیامی که پس از اشتراکگذاری اضافه میکنید، خصوصی میمانند.",
|
||||
"com_ui_share_var": "به اشتراک بگذارید {{0}}",
|
||||
"com_ui_shared_link_bulk_delete_success": "پیوندهای به اشتراک گذاشته شده با موفقیت حذف شد",
|
||||
"com_ui_shared_link_delete_success": "پیوند مشترک با موفقیت حذف شد",
|
||||
"com_ui_shared_link_not_found": "پیوند مشترک یافت نشد",
|
||||
"com_ui_shared_prompts": "درخواست های مشترک",
|
||||
"com_ui_shop": "خرید",
|
||||
"com_ui_show": "نمایش دهید",
|
||||
"com_ui_show_all": "نمایش همه",
|
||||
"com_ui_show_qr": "نمایش کد QR",
|
||||
"com_ui_sign_in_to_domain": "به سیستم وارد شوید {{0}}",
|
||||
"com_ui_simple": "ساده",
|
||||
"com_ui_size": "اندازه",
|
||||
"com_ui_special_variables": "متغیرهای ویژه:",
|
||||
"com_ui_speech_while_submitting": "وقتی پاسخی در حال تولید است، نمیتوان گفتار ارسال کرد",
|
||||
"com_ui_stop": "توقف کنید",
|
||||
"com_ui_storage": "ذخیره سازی",
|
||||
"com_ui_submit": "ارسال کنید",
|
||||
"com_ui_teach_or_explain": "یادگیری",
|
||||
"com_ui_temporary": "موقت",
|
||||
"com_ui_terms_and_conditions": "شرایط و ضوابط",
|
||||
"com_ui_terms_of_service": "شرایط خدمات",
|
||||
"com_ui_thinking": "فکر کردن...",
|
||||
"com_ui_thoughts": "افکار",
|
||||
"com_ui_token_exchange_method": "روش تبادل توکن",
|
||||
"com_ui_token_url": "نشانی اینترنتی رمز",
|
||||
"com_ui_tools": "ابزار",
|
||||
"com_ui_travel": "سفر کنید",
|
||||
"com_ui_unarchive": "لغو بایگانی",
|
||||
"com_ui_unarchive_error": "مکالمه از بایگانی خارج نشد",
|
||||
"com_ui_unknown": "ناشناس",
|
||||
"com_ui_update": "به روز رسانی",
|
||||
"com_ui_upload": "آپلود کنید",
|
||||
"com_ui_upload_code_files": "برای مترجم کد بارگذاری کنید",
|
||||
"com_ui_upload_delay": "در حال آپلود \"{{0}}\" بیش از حد انتظار زمان می برد. لطفاً صبر کنید تا نمایه سازی فایل برای بازیابی به پایان برسد.",
|
||||
"com_ui_upload_error": "هنگام آپلود فایل شما خطایی روی داد",
|
||||
"com_ui_upload_file_context": "متن فایل را آپلود کنید",
|
||||
"com_ui_upload_file_search": "برای جستجوی فایل آپلود کنید",
|
||||
"com_ui_upload_files": "فایل ها را آپلود کنید",
|
||||
"com_ui_upload_image": "یک تصویر آپلود کنید",
|
||||
"com_ui_upload_image_input": "آپلود تصویر",
|
||||
"com_ui_upload_invalid": "فایل برای آپلود نامعتبر است. باید تصویری باشد که از حد مجاز بیشتر نباشد",
|
||||
"com_ui_upload_invalid_var": "فایل برای آپلود نامعتبر است. باید تصویری بیش از حد نباشد {{0}} مگابایت",
|
||||
"com_ui_upload_ocr_text": "آپلود به عنوان متن",
|
||||
"com_ui_upload_success": "فایل با موفقیت آپلود شد",
|
||||
"com_ui_upload_type": "نوع آپلود را انتخاب کنید",
|
||||
"com_ui_use_2fa_code": "به جای آن از کد 2FA استفاده کنید",
|
||||
"com_ui_use_backup_code": "به جای آن از کد پشتیبان استفاده کنید",
|
||||
"com_ui_use_micrphone": "از میکروفون استفاده کنید",
|
||||
"com_ui_use_prompt": "از prompt استفاده کنید",
|
||||
"com_ui_used": "استفاده می شود",
|
||||
"com_ui_variables": "متغیرها",
|
||||
"com_ui_variables_info": "از پرانتزهای دوتایی در متن خود برای ایجاد متغیرها استفاده کنید، به عنوان مثال. `{{example variable}}`، تا بعداً هنگام استفاده از درخواست پر شود.",
|
||||
"com_ui_verify": "تأیید کنید",
|
||||
"com_ui_version_var": "نسخه {{0}}",
|
||||
"com_ui_versions": "نسخه ها",
|
||||
"com_ui_view_source": "مشاهده چت منبع",
|
||||
"com_ui_weekend_morning": "آخر هفته مبارک",
|
||||
"com_ui_write": "نوشتن",
|
||||
"com_ui_yes": "بله",
|
||||
"com_ui_zoom": "بزرگنمایی ضربه بزنید؛",
|
||||
"com_user_message": "شما",
|
||||
"com_warning_resubmit_unsupported": "ارسال مجدد پیام هوش مصنوعی برای این نقطه پایانی پشتیبانی نمی شود."
|
||||
}
|
||||
550
packages/client/src/locales/fi/translation.json
Normal file
550
packages/client/src/locales/fi/translation.json
Normal file
|
|
@ -0,0 +1,550 @@
|
|||
{
|
||||
"com_assistants_actions": "Toiminnot",
|
||||
"com_assistants_actions_disabled": "Avustaja täytyy luoda ennen toimintojen lisäämistä",
|
||||
"com_assistants_actions_info": "Salli Avustajalle Tiedonhaku tai Toimintojen suorittaminen API-kutsujen kautta",
|
||||
"com_assistants_add_actions": "Lisää Toimintoja",
|
||||
"com_assistants_add_tools": "Lisää Työkaluja",
|
||||
"com_assistants_append_date": "Lisää nykyinen päivämäärä ja aika",
|
||||
"com_assistants_append_date_tooltip": "Kun käytössä, nykyinen asiakkaan päivämäärä ja aika lisätään avustajan järjestelmäohjeisiin.",
|
||||
"com_assistants_available_actions": "Käytettävissä olevat Toiminnot",
|
||||
"com_assistants_capabilities": "Kyvykkyydet",
|
||||
"com_assistants_code_interpreter": "Kooditulkki",
|
||||
"com_assistants_code_interpreter_files": "Seuraavat tiedostot ovat vain Kooditulkin käytettävissä:",
|
||||
"com_assistants_completed_action": "Puhuttiin {{0}}:lle",
|
||||
"com_assistants_completed_function": "Suoritettiin {{0}}",
|
||||
"com_assistants_create_error": "Avustajan luonnissa tapahtui virhe.",
|
||||
"com_assistants_create_success": "Luonti onnistui",
|
||||
"com_assistants_delete_actions_error": "Toiminnon poistamisessa tapahtui virhe.",
|
||||
"com_assistants_delete_actions_success": "Toiminto poistettiin Avustajalta onnistuneesti",
|
||||
"com_assistants_description_placeholder": "Valinnainen: Kuvaus Avustajasta",
|
||||
"com_assistants_domain_info": "Avustaja lähetti tiedon tänne: {{0}}",
|
||||
"com_assistants_file_search": "Tiedostohaku",
|
||||
"com_assistants_file_search_info": "Vektoritietokannan liittämistä tiedostohakuun ei vielä tueta. Voit liittää ne rajapinnan palveluntarjoajan käyttöliittymän kautta, tai liittää tiedostoja viesteihin keskusteluketjupohjaisesti.",
|
||||
"com_assistants_function_use": "Avustaja käytti: {{0}}",
|
||||
"com_assistants_image_vision": "Kuvanäkö",
|
||||
"com_assistants_instructions_placeholder": "Avustajan käyttämät järjestelmäohjeet",
|
||||
"com_assistants_knowledge": "Tiedot",
|
||||
"com_assistants_knowledge_disabled": "Avustaja täytyy ensin luoda, ja Kooditulkki tai Tiedonhaku täytyy olla päällä ja asetukset tallennettuna, ennen kuin tiedostoja voidaan ladata Tietoihin.",
|
||||
"com_assistants_knowledge_info": "Jos lataat tiedostoja Tietoihin, Avustajasi kanssa käytyihin keskusteluihin voi tulla niiden sisältöä.",
|
||||
"com_assistants_name_placeholder": "Valinnainen: Avustajan nimi",
|
||||
"com_assistants_non_retrieval_model": "Tiedostohaku ei ole käytössä tässä mallissa. Valitse toinen malli.",
|
||||
"com_assistants_retrieval": "Tiedonhaku",
|
||||
"com_assistants_running_action": "Suoritetaan toimintoa",
|
||||
"com_assistants_search_name": "Hae Avustajia nimen perusteella",
|
||||
"com_assistants_update_actions_error": "Toiminnon luomisessa tai päivittämisessä tapahtui virhe.",
|
||||
"com_assistants_update_actions_success": "Toiminto luotiiin tai päivitettiin onnistuneesti",
|
||||
"com_assistants_update_error": "Avustajan päivittämisessä tapahtui virhe.",
|
||||
"com_assistants_update_success": "Päivitys onnistui",
|
||||
"com_auth_already_have_account": "Käyttäjätilisi on jo luotu?",
|
||||
"com_auth_back_to_login": "Palaa kirjautumiseen",
|
||||
"com_auth_click": "Napauta",
|
||||
"com_auth_click_here": "Napauta tästä",
|
||||
"com_auth_continue": "Jatka",
|
||||
"com_auth_create_account": "Luo tili",
|
||||
"com_auth_discord_login": "Jatka Discordilla",
|
||||
"com_auth_email": "Sähköposti",
|
||||
"com_auth_email_address": "Sähköpostiosoite Email address",
|
||||
"com_auth_email_max_length": "Sähköpostiosoitteen ei pitäisi olla 120 merkkiä pidempi",
|
||||
"com_auth_email_min_length": "Sähköpostiosoitteen on oltava vähintään 6 merkkiä pitkä",
|
||||
"com_auth_email_pattern": "Sähköpostiosoite on syötettävä oikeassa muodossa",
|
||||
"com_auth_email_required": "Sähköposti on pakollinen",
|
||||
"com_auth_email_resend_link": "Lähetä sähköposti uudestaan",
|
||||
"com_auth_email_resent_failed": "Varmennussähköpostin uudelleenlähetys epäonnistui",
|
||||
"com_auth_email_resent_success": "Varmennussähköpostin uudelleenlähetys onnistui",
|
||||
"com_auth_email_verification_failed": "Sähköpostin varmentaminen epäonnistui",
|
||||
"com_auth_email_verification_failed_token_missing": "Varmennus epäonnistui tunnisteen puuttumisen vuoksi",
|
||||
"com_auth_email_verification_in_progress": "Varmennetaan sähköpostia. Ole hyvä ja odota.",
|
||||
"com_auth_email_verification_invalid": "Sähköpostin varmentaminen ei voimassa",
|
||||
"com_auth_email_verification_redirecting": "Uudelleenohjataan {{0}} sekunnissa...",
|
||||
"com_auth_email_verification_resend_prompt": "Sähköposti ei saapunut perille?",
|
||||
"com_auth_email_verification_success": "Sähköposti varmennettu",
|
||||
"com_auth_error_create": "Tilin rekisteröinnissä tapahtui virhe. Yritä uudestaan.",
|
||||
"com_auth_error_invalid_reset_token": "Tämä salasanan uusimistunniste ei ole enää voimassa.",
|
||||
"com_auth_error_login": "Kirjautuminen annetuilla tiedoilla ei onnistunut. Tarkista kirjautumistiedot, ja yritä uudestaan.",
|
||||
"com_auth_error_login_ban": "Tilisi on väliaikaisesti suljettu palvelun sääntöjen rikkomisesta.",
|
||||
"com_auth_error_login_rl": "Liian monta kirjautumisyritystä lyhyen ajan sisällä. Yritä myöhemmin uudestaan.",
|
||||
"com_auth_error_login_server": "Tapahtui sisäinen palvelinvirhe. Odota hetki, ja yritä uudestaan.",
|
||||
"com_auth_error_login_unverified": "Tiliäsi ei ole vahvistettu. Vahvistuslinkin pitäisi löytyä sähköposteistasi.",
|
||||
"com_auth_facebook_login": "Jatka Facebookilla",
|
||||
"com_auth_full_name": "Koko nimi",
|
||||
"com_auth_github_login": "Jatka Githubilla",
|
||||
"com_auth_google_login": "Jatka Googlella",
|
||||
"com_auth_here": "TÄTÄ",
|
||||
"com_auth_login": "Kirjaudu",
|
||||
"com_auth_login_with_new_password": "Voit nyt kirjautua uudella salasanallasi.",
|
||||
"com_auth_name_max_length": "Nimi voi olla enintään 80 merkkiä pitkä",
|
||||
"com_auth_name_min_length": "Nimessä on oltava vähintään 3 merkkiä",
|
||||
"com_auth_name_required": "Nimi on pakollinen",
|
||||
"com_auth_no_account": "Ei tunnusta?",
|
||||
"com_auth_password": "Salasana",
|
||||
"com_auth_password_confirm": "Vahvista salasana",
|
||||
"com_auth_password_forgot": "Salasana unohtunut?",
|
||||
"com_auth_password_max_length": "Salasana voi olla enintään 128 merkkiä",
|
||||
"com_auth_password_min_length": "Salasanan on oltava vähintään 8 merkkiä pitkä",
|
||||
"com_auth_password_not_match": "Salasanat eivät täsmää",
|
||||
"com_auth_password_required": "Salasana on pakollinen",
|
||||
"com_auth_registration_success_generic": "Tarkista sähköpostisi sähköpostiosoitteen vahvistamiseksi.",
|
||||
"com_auth_registration_success_insecure": "Rekisteröityminen onnistui.",
|
||||
"com_auth_reset_password": "Aseta uusi salasana",
|
||||
"com_auth_reset_password_if_email_exists": "Jos kyseiselle sähköpostiosoitteelle löytyy käyttäjätili, siihen lähetetään sähköposti joka sisältää ohjeet salasanan uusimiseen. Tarkistathan myös roskapostikansion.",
|
||||
"com_auth_reset_password_link_sent": "Sähköposti lähetetty",
|
||||
"com_auth_reset_password_success": "Salasanan asettaminen onnistui",
|
||||
"com_auth_sign_in": "Kirjaudu",
|
||||
"com_auth_sign_up": "Rekisteröidy",
|
||||
"com_auth_submit_registration": "Lähetä rekisteröityminen",
|
||||
"com_auth_to_reset_your_password": "asettaaksesi uuden salasanan.",
|
||||
"com_auth_to_try_again": "kokeillaksesi uudestaan.",
|
||||
"com_auth_username": "Käyttäjänimi (valinnainen)",
|
||||
"com_auth_username_max_length": "Käyttäjänimi voi olla enintään 20 merkkiä pitkä",
|
||||
"com_auth_username_min_length": "Käyttäjänimessä on oltava vähintään 2 merkkiä",
|
||||
"com_auth_welcome_back": "Tervetuloa takaisin",
|
||||
"com_endpoint": "Päätepiste",
|
||||
"com_endpoint_agent": "Agentti",
|
||||
"com_endpoint_agent_model": "Agenttimalli (Suositus: GPT-3.5)",
|
||||
"com_endpoint_anthropic_maxoutputtokens": "Vastauksen maksimi-tokenmäärä. valitse pienempi arvo, jos haluat lyhyempiä vastauksia, ja korkeampi arvo, jos haluat pidempiä vastauksia.",
|
||||
"com_endpoint_anthropic_temp": "Vaihteluväli on 0 - 1. Käytä lähempänä nollaa olevaa lämpötilaa analyyttisiin tai monivalintatehtäviin, ja lähempänä yhtä luoviin ja generatiivisiin tehtäviin. Suosittelemme, että muokkaat tätä tai Top P:tä, mutta ei molempia.",
|
||||
"com_endpoint_anthropic_topk": "Top-k vaikuttaa siihen, miten malli valitsee tokeineita tulokseen. Jos Top-k on 1, valitaan se token, joka on kaikkien todennäköisen mallin sanastossa (tunnetaan myös nimellä ahne dekoodaus), kun taas top-k 3 tarkoittaisi, että seuraavat token valitaan 3 todennäköisimmän tokenin joukosta, lämpötilaa hyödyntäen.",
|
||||
"com_endpoint_anthropic_topp": "Top-P vaikuttaa siihen kuinka malli valitsee tokeneita tulokseen. Tokenit valitaan top-k:sta (ks. Top-k -parametri) todennäköisimmistä vähiten todennäköseen, kunnes niiden todennäköisyyksien summa ylittää Top-P -arvon.",
|
||||
"com_endpoint_assistant": "Avustaja",
|
||||
"com_endpoint_assistant_model": "Avustajan malli",
|
||||
"com_endpoint_assistant_placeholder": "Valitse Avustaja oikeanpuoleisesta sivupalkista",
|
||||
"com_endpoint_completion": "Vastaus",
|
||||
"com_endpoint_completion_model": "Vastausmalli (Suositus: GPT-4)",
|
||||
"com_endpoint_config_click_here": "Napauta tästä",
|
||||
"com_endpoint_config_google_api_info": "Saadaksesi Generative Language API -avaimesi (Gemini:a varten),",
|
||||
"com_endpoint_config_google_api_key": "Google API Key",
|
||||
"com_endpoint_config_google_cloud_platform": "(Google Cloud Platform:ista)",
|
||||
"com_endpoint_config_google_gemini_api": "(Gemini API)",
|
||||
"com_endpoint_config_google_service_key": "Google Service Account Key",
|
||||
"com_endpoint_config_key": "Aseta API-avain",
|
||||
"com_endpoint_config_key_encryption": "Avaimesi salataan ja poistetaan: ",
|
||||
"com_endpoint_config_key_for": "Aseta API-avain:",
|
||||
"com_endpoint_config_key_google_need_to": "Sinun täytyy",
|
||||
"com_endpoint_config_key_google_service_account": "Luo Palvelutili (Service Account)",
|
||||
"com_endpoint_config_key_google_vertex_ai": "sallia Vertex AI",
|
||||
"com_endpoint_config_key_google_vertex_api": "API Google Cloud:issa, sitten",
|
||||
"com_endpoint_config_key_google_vertex_api_role": "Muista napauttaa 'Create and Continue' jotta saat ainakin 'Vertex AI User' -roolin. Lopuksi luo JSON-avain tänne tuotavaksi.",
|
||||
"com_endpoint_config_key_import_json_key": "Tuo palveluosoitteen JSON-avain.",
|
||||
"com_endpoint_config_key_import_json_key_invalid": "Virheellinen palveluosoitteen JSON-avain. Toitko oikean tiedoston?",
|
||||
"com_endpoint_config_key_import_json_key_success": "Palveluosoitteetn JSON-avain tuotu onnistuneesti",
|
||||
"com_endpoint_config_key_name": "Avain",
|
||||
"com_endpoint_config_key_never_expires": "Avaimesi ei koskaan vanhene",
|
||||
"com_endpoint_config_placeholder": "Keskustellaksesi aseta avaimesi Ylätunnistevalikossa.",
|
||||
"com_endpoint_config_value": "Aseta arvo:",
|
||||
"com_endpoint_context": "Konteksti",
|
||||
"com_endpoint_context_info": "Kontekstia varten käytettävien tokeneiden maksimimäärä. Käytä tätä pyyntökohtaisten token-määrien hallinnointiin. Jos tätä ei määritetä, käytössä ovat järjestelmän oletusarvot perustuen tiedossa olevien mallien konteksti-ikkunoiden kokoon. Korkeamman arvon asettaminen voi aiheuttaa virheitä tai korkeamman token-hinnan.",
|
||||
"com_endpoint_context_tokens": "Konteksti-tokenien maksimimäärä",
|
||||
"com_endpoint_custom_name": "Mukautettu nimi",
|
||||
"com_endpoint_default": "oletus",
|
||||
"com_endpoint_default_blank": "oletus: tyhjä",
|
||||
"com_endpoint_default_empty": "oletus: tyhjä",
|
||||
"com_endpoint_default_with_num": "oletus: {{0}}",
|
||||
"com_endpoint_examples": " Esiasetukset",
|
||||
"com_endpoint_export": "Vie",
|
||||
"com_endpoint_export_share": "Vie/Jaa",
|
||||
"com_endpoint_frequency_penalty": "Esiintymistiheysrangaistus",
|
||||
"com_endpoint_func_hover": "Salli lisäosien käyttö OpenAI-toimintoina",
|
||||
"com_endpoint_google_custom_name_placeholder": "Aseta Googlelle mukautettu nimi",
|
||||
"com_endpoint_google_maxoutputtokens": "Maksimimäärä tokeneillre, joita generoidaan tulokseen. Valitse pienempi arvo saadaksesi lyhyempiä vastauksia, ja suurempi arvo pitkiä vastauksia varten.",
|
||||
"com_endpoint_google_temp": "Korkeampi arvo = satunnaisempi; matalampi arvo = keskittyneempi ja deterministisempi. Suosittelemme, että muokkaat tätä tai Top P:tä, mutta ei molempia.",
|
||||
"com_endpoint_google_topk": "Top-k vaikuttaa siihen, miten malli valitsee tokeineita tulokseen. Jos Top-k on 1, valitaan se token, joka on kaikkien todennäköisen mallin sanastossa (tunnetaan myös nimellä ahne dekoodaus), kun taas top-k 3 tarkoittaisi, että seuraavat token valitaan 3 todennäköisimmän tokenin joukosta, lämpötilaa hyödyntäen.",
|
||||
"com_endpoint_google_topp": "Top-P vaikuttaa siihen kuinka malli valitsee tokeneita tulokseen. Tokenit valitaan top-k:sta (ks. Top-k -parametri) todennäköisimmistä vähiten todennäköseen, kunnes niiden todennäköisyyksien summa ylittää Top-P -arvon.",
|
||||
"com_endpoint_instructions_assistants": "Yliaja ohjeet",
|
||||
"com_endpoint_instructions_assistants_placeholder": "Yliajaa Avustajan ohjeet. Tätä voi hyödyntää käytöksen muuttamiseen keskustelukohtaisesti.",
|
||||
"com_endpoint_max_output_tokens": "Tulos-tokeneiden maksimimäärä",
|
||||
"com_endpoint_message": "Vastaanottajana",
|
||||
"com_endpoint_message_not_appendable": "Muokkaa viestiäsi tai Luo uudestaan.",
|
||||
"com_endpoint_my_preset": "Esiasetukseni",
|
||||
"com_endpoint_no_presets": "Ei vielä esiasetuksia. Käytä Asetukset-painiketta luodaksesi esiasetuksen.",
|
||||
"com_endpoint_open_menu": "Avaa valikko",
|
||||
"com_endpoint_openai_custom_name_placeholder": "Anna tekoälylle mukautettu nimi",
|
||||
"com_endpoint_openai_detail": "Kuvatarkkuus Vision-pyynnöille. \"Matala\" on halvempi ja nopeampi, \"Korkea\" on yksityiskohtaisempi ja kalliimpi, ja \"Auto\" valitsee näiden välillä automaattisesti kuvan koon perusteella.",
|
||||
"com_endpoint_openai_freq": "Lukuarvo väliltä -2.0 - 2.0. Positiiviset arvot rankaisevat uusia tokeneita perustuen niiden esiintymistiheyteen siihen mennessä luodussa tekstissä, mikä vähentää todennäköisyyttä, että malli toistaa saman rivin täsmälleen samanlaisena.",
|
||||
"com_endpoint_openai_max": "Luotavien tokeneiden maksimimäärä. Mallin konteksti-ikkuna rajoittaa syötteiden ja vastausten kokonaispituutta.",
|
||||
"com_endpoint_openai_max_tokens": "Valinnainen 'max_tokens' -kenttä, joka kuvaa keskustelun vastauksessa generoitujen tokeneiden maksimimäärää. Syötteen ja vastauksen kokonaispituutta rajoittaa mallin konteksti-ikkuna. Konteksti -ikkunan koon ylittämisestä voi seurata virheitä.",
|
||||
"com_endpoint_openai_pres": "Lukuarvo väliltä -2.0 - 2.0. Positiiviset arvot rankaisevat uusia tokeneita perustuen niiden esiintymiseen siihen mennessä luodussa tekstissä, ja lisäävät todennäköisyyttä että malli aloittaa uuden aiheen.",
|
||||
"com_endpoint_openai_prompt_prefix_placeholder": "Aseta mukautetut ohjeet Järjestelmäohjeisiin sisällytettäväksi. Oletus: tyhjä",
|
||||
"com_endpoint_openai_resend": "Lähetä uudestaan kaikki aiemmin liitetyt kuvat. Huom: tämä voi lisätä token-kustannuksia huomattavasti, ja useiden kuvien käsittelystä kerralla voi seurata virheitä.",
|
||||
"com_endpoint_openai_resend_files": "Lähetä uudestaan kaikki aiemmin liitetyt tiedostot. Huom: tämä lisää token-kustannuksia, ja useiden tiedostojen käsittelystä kerralla voi seurata virheitä.",
|
||||
"com_endpoint_openai_stop": "Enintään 4 sekvenssiä, joiden kohdalla API lopettaa tokenien luomisen.",
|
||||
"com_endpoint_openai_temp": "Korkeampi arvo = satunnaisempi; matalampi arvo = keskittyneempi ja deterministisempi. Suosittelemme, että muokkaat tätä tai Top P:tä, mutta ei molempia.",
|
||||
"com_endpoint_openai_topp": "Vaihtoehto lämpötilapohjaiselle otannalle, ydinotanta, valitsee tokeneita Top P -todennäköisyysmassasta. Esimerkiksi arvo 0.1 tarkoittaa että vain top 10% tokeneista todennäköisyysmassassa huomioidaan. Suosittelemme, että muokkaat tätä tai lämpötilaa, mutta ei molempia.",
|
||||
"com_endpoint_output": "Tulos",
|
||||
"com_endpoint_plug_image_detail": "Kuvan yksityiskohdat",
|
||||
"com_endpoint_plug_resend_files": "Lähetä tiedostot uudestaan",
|
||||
"com_endpoint_plug_set_custom_instructions_for_gpt_placeholder": "Aseta mukautetut ohjeet Järjestelmäohjeisiin liitettäviksi. Oletus: tyhjä",
|
||||
"com_endpoint_plug_skip_completion": "Ohita Vastaus",
|
||||
"com_endpoint_plug_use_functions": "Käytä Toimintoja",
|
||||
"com_endpoint_presence_penalty": "Esiintymisrangaistus",
|
||||
"com_endpoint_preset": "esiasetus",
|
||||
"com_endpoint_preset_default": "on nyt oletus-esiasetus.",
|
||||
"com_endpoint_preset_default_item": "Oletus:",
|
||||
"com_endpoint_preset_default_none": "Oletus-esiasetusta ei ole käytössä",
|
||||
"com_endpoint_preset_default_removed": " ei ole enää oletus-esiasetus.",
|
||||
"com_endpoint_preset_delete_confirm": "Haluatko varmasti poistaa nämä esiasetukset?",
|
||||
"com_endpoint_preset_delete_error": "Esiasetuksen poistossa tapahtui virhe. Yritä uudestaan.",
|
||||
"com_endpoint_preset_import": "Esiasetus tuotu!",
|
||||
"com_endpoint_preset_import_error": "Esiasetuksen tuonnissa tapahtui virhe. Yritä uudestaan.",
|
||||
"com_endpoint_preset_name": "Esiasetuksen nimi",
|
||||
"com_endpoint_preset_save_error": "Esiasetuksen tallennuksessa tapahtui virhe. Yritä uudestaan.",
|
||||
"com_endpoint_preset_selected": "Esiasetus käytössä!",
|
||||
"com_endpoint_preset_selected_title": "Käytössä!",
|
||||
"com_endpoint_preset_title": "Esiasetus",
|
||||
"com_endpoint_presets": "esiasetukset",
|
||||
"com_endpoint_presets_clear_warning": "Haluatko varmasti tyhjentää kaikki esiasetukset? Tätä toimintoa ei voi perua.",
|
||||
"com_endpoint_prompt_prefix": "Mukautetut ohjeet",
|
||||
"com_endpoint_prompt_prefix_assistants": "Lisäohjeet",
|
||||
"com_endpoint_prompt_prefix_assistants_placeholder": "Anna lisäohjeita tai kontekstia Avustajan pääohjeiden lisäksi. Set additional instructions or context on top of the Assistant's main instructions. Jätetään huomiotta, jos tyhjä.",
|
||||
"com_endpoint_prompt_prefix_placeholder": "Aseta mukautetut ohjeet tai konteksti. Jätetään huomiotta, jos tyhjä.",
|
||||
"com_endpoint_save_as_preset": "Tallenna esiasetukseksi",
|
||||
"com_endpoint_set_custom_name": "Aseta mukautettu nimi, jotta esiasetus olisi helpompi löytää",
|
||||
"com_endpoint_skip_hover": "Mahdollista vastausaskeleen ohitus, joka mahdollistaa lopuulisen vastauksen ja generoitujen askeleiden tarkastelun",
|
||||
"com_endpoint_stop": "Pysäytyssekvenssit",
|
||||
"com_endpoint_stop_placeholder": "Erota arvot toisistaan rivinvaihdoilla",
|
||||
"com_endpoint_temperature": "Lämpötila",
|
||||
"com_endpoint_top_k": "Top k",
|
||||
"com_endpoint_top_p": "Top P",
|
||||
"com_endpoint_use_active_assistant": "Käytä aktiivista Avustajaa",
|
||||
"com_error_expired_user_key": "{{0}} varten annettu avain vanheni {{1}}. Syötä uusi avain ja yritä uudestaan.",
|
||||
"com_error_invalid_user_key": "Avain ei kelpaa. Lisää toimiva avain ja yritä uudestaan.",
|
||||
"com_error_moderation": "Näyttää siltä, että moderointijärjestelmämme merkitsi lähetetyn sisällön yhteisön sääntöjen vastaisiksi. Emme voi jatkaa tämän aiheen käsittelyä. Jos sinulla on muita kysymyksiä tai aiheita joita haluaisit käsitellä, ole hyvä ja muokkaa viestiäsi, tai aloita uusi keskustelu.",
|
||||
"com_error_no_base_url": "Base URL puuttuu. Syötä URL ja yritä uudestaan.",
|
||||
"com_error_no_user_key": "Avainta ei löytynyt. Lisää avain ja yritä uudestaan.",
|
||||
"com_files_filter": "Suodata tiedostoja...",
|
||||
"com_files_no_results": "Ei tuloksia.",
|
||||
"com_files_number_selected": "{{0}}/{{1}} tiedostoa valittu",
|
||||
"com_hide_examples": "Piilota esimerkit",
|
||||
"com_nav_always_make_prod": "Tee aina uudet versiot tuotantoon",
|
||||
"com_nav_archive_created_at": "Arkistointipäivä",
|
||||
"com_nav_archive_name": "Nimi",
|
||||
"com_nav_archived_chats": "Arkistoidut keskustelut",
|
||||
"com_nav_audio_play_error": "Virhe ääntä toistaessa: {{0}}",
|
||||
"com_nav_audio_process_error": "Virhe ääntä käsitellessä: {{0}}",
|
||||
"com_nav_auto_scroll": "Vieritä automaattisesti viimeisimpään viestiin keskustelua avatessa",
|
||||
"com_nav_auto_send_prompts": "Lähetä syötteet automaattisesti",
|
||||
"com_nav_auto_send_text": "Lähetä teksti automaattisesti (3 sekunnin kuluttua)",
|
||||
"com_nav_auto_transcribe_audio": "Automaattinen äänen litterointi",
|
||||
"com_nav_automatic_playback": "Toista viimeisin viesti automaattisesti",
|
||||
"com_nav_balance": "Saldo",
|
||||
"com_nav_browser": "Selain",
|
||||
"com_nav_change_picture": "Vaihda kuva",
|
||||
"com_nav_clear_all_chats": "Tyhjennä kaikki keskustelut",
|
||||
"com_nav_clear_conversation": "Tyhjennä keskustelut",
|
||||
"com_nav_clear_conversation_confirm_message": "Oletko varma että haluat tyhjentää kaikki keskustelut? Tätä toimintoa ei voi peruuttaa.",
|
||||
"com_nav_close_sidebar": "Sulje sivupalkki",
|
||||
"com_nav_confirm_clear": "Vahvista tyhjennys",
|
||||
"com_nav_conversation_mode": "Keskustelumoodi",
|
||||
"com_nav_db_sensitivity": "Desibeliherkkyys",
|
||||
"com_nav_delete_account": "Poista käyttäjätili",
|
||||
"com_nav_delete_account_button": "Poista käyttäjätilini pysyvästi",
|
||||
"com_nav_delete_account_confirm": "Poista käyttäjätili - oletko varma?",
|
||||
"com_nav_delete_account_email_placeholder": "Syötä käyttäjätilisi sähköpostiosoite",
|
||||
"com_nav_delete_cache_storage": "Tyhjennä TTS (tekstistä ääneksi) -välimuistivarasto",
|
||||
"com_nav_delete_data_info": "Kaikki tietosi poistetaan.",
|
||||
"com_nav_delete_warning": "VAROITUS: Tämä poistaa käyttäjätilisi pysyvästi.",
|
||||
"com_nav_enable_cache_tts": "TTS (tekstistä ääneksi) -välimuisti käyttöön",
|
||||
"com_nav_enabled": "Päällä",
|
||||
"com_nav_engine": "Puhemoottori",
|
||||
"com_nav_enter_to_send": "Lähetä viestit Enter-painikkeella",
|
||||
"com_nav_export": "Vie",
|
||||
"com_nav_export_all_message_branches": "Vie kaikki sivupolut",
|
||||
"com_nav_export_conversation": "Vie keskustelu",
|
||||
"com_nav_export_filename": "Tiedoston nimi",
|
||||
"com_nav_export_filename_placeholder": "Aseta tiedoston nimi",
|
||||
"com_nav_export_include_endpoint_options": "Sisällytä päätepistevaihtoehdot",
|
||||
"com_nav_export_recursive": "Rekursiivisesti",
|
||||
"com_nav_export_recursive_or_sequential": "Rekursiivisesti vai sarjassa?",
|
||||
"com_nav_export_type": "Tyyppi",
|
||||
"com_nav_external": "Ulkoinen",
|
||||
"com_nav_help_faq": "Ohjeet & FAQ",
|
||||
"com_nav_hide_panel": "Piilota oikeanpuoleinen sivupaneeli",
|
||||
"com_nav_info_enter_to_send": "Jos tämä on päällä, Enter-näppäimen painaminen lähettää viestin. Kun asetus on pois päältä, Enter lisää rivinvaihdon, ja viestin lähettämiseksi on painettava CTRL + ENTER.",
|
||||
"com_nav_info_fork_change_default": "'Vain näkyvät viestit' sisältää vain suoran polun valittuun viestiin. 'Sisällytä sivupolut' lisää polun varrella olevat sivupolut. 'Lisää kaikki tänne/täältä' sisällyttää kaikki kytköksissä olevat viestit ja sivupolut.",
|
||||
"com_nav_info_fork_split_target_setting": "Jos tämä on päällä, haara syntyy kohdeviestistä keskustelun viimeiseen viestiin valitun haarautumistavan mukaisesti.",
|
||||
"com_nav_info_latex_parsing": "Kun tämä on päällä, viesteissä oleva LaTeX-koodi näytetään yhtälöinä. Tämän asetuksen jättäminen pois päältä saattaa parantaa suorituskykyä, jos et tarvitse LaTeX-tulkkia.",
|
||||
"com_nav_info_save_draft": "Jos tämä on päällä, teksti ja liitteet jotka syötät keskusteluun tallennetaan automaattisesti paikallisina luonnoksina. Nämä luonnokset ovat käytettävissä, vaikka välillä lataisit sivun uudestaan tai vaihtaisit toiseen keskusteluun. Luonnokset on tallettettu paikallisesti omalle laitteellesi, ja ne poistetaan, kun viesti on lähetetty.",
|
||||
"com_nav_info_user_name_display": "Jos tämä on päällä, lähettäjän käyttäjänimi näytetään jokaisen lähettämäsi viestin päällä. Jos tämä ei ole käytössä, viestien päällä näytetään vain \"Sinä\".",
|
||||
"com_nav_lang_arabic": "العربية",
|
||||
"com_nav_lang_auto": "Tunnista automaattisesti",
|
||||
"com_nav_lang_brazilian_portuguese": "Português Brasileiro",
|
||||
"com_nav_lang_chinese": "中文",
|
||||
"com_nav_lang_dutch": "Nederlands",
|
||||
"com_nav_lang_english": "English",
|
||||
"com_nav_lang_estonian": "Eesti keel",
|
||||
"com_nav_lang_finnish": "Suomi",
|
||||
"com_nav_lang_french": "Français ",
|
||||
"com_nav_lang_georgian": "ქართული",
|
||||
"com_nav_lang_german": "Deutsch",
|
||||
"com_nav_lang_hebrew": "עברית",
|
||||
"com_nav_lang_indonesia": "Indonesia",
|
||||
"com_nav_lang_italian": "Italiano",
|
||||
"com_nav_lang_japanese": "日本語",
|
||||
"com_nav_lang_korean": "한국어",
|
||||
"com_nav_lang_polish": "Polski",
|
||||
"com_nav_lang_portuguese": "Português",
|
||||
"com_nav_lang_russian": "Русский",
|
||||
"com_nav_lang_spanish": "Español",
|
||||
"com_nav_lang_swedish": "Svenska",
|
||||
"com_nav_lang_thai": "ไทย",
|
||||
"com_nav_lang_traditional_chinese": "繁體中文",
|
||||
"com_nav_lang_turkish": "Türkçe",
|
||||
"com_nav_lang_vietnamese": "Tiếng Việt",
|
||||
"com_nav_language": "Kieli",
|
||||
"com_nav_latex_parsing": "Tulkitse LaTeX:ia viesteissä (saattaa vaikuttaa suoritustehoon)",
|
||||
"com_nav_log_out": "Kirjaudu ulos",
|
||||
"com_nav_long_audio_warning": "Pidemmän tekstin käsittely kestää kauemmin.",
|
||||
"com_nav_modular_chat": "Salli päätepisteen vaihto kesken keskustelun",
|
||||
"com_nav_my_files": "Omat tiedostot",
|
||||
"com_nav_not_supported": "Ei tuettu",
|
||||
"com_nav_open_sidebar": "Avaa sivupalkki",
|
||||
"com_nav_playback_rate": "Äänen toiston nopeus",
|
||||
"com_nav_plugin_auth_error": "Tämän lisäosan varmentamisessa tapahtui virhe. Yritä uudestaan.",
|
||||
"com_nav_plugin_install": "Asenna",
|
||||
"com_nav_plugin_search": "Hae lisäosaa",
|
||||
"com_nav_plugin_store": "Lisäosakauppa",
|
||||
"com_nav_plugin_uninstall": "Poista",
|
||||
"com_nav_profile_picture": "Profiilikuva",
|
||||
"com_nav_save_drafts": "Tallenna luonnokset paikallisesti",
|
||||
"com_nav_search_placeholder": "Etsi keskusteluista",
|
||||
"com_nav_send_message": "Lähetä viesti",
|
||||
"com_nav_setting_account": "Käyttäjätili",
|
||||
"com_nav_setting_beta": "Beta-toiminnot",
|
||||
"com_nav_setting_data": "Datakontrollit",
|
||||
"com_nav_setting_general": "Yleiset",
|
||||
"com_nav_setting_speech": "Puhe",
|
||||
"com_nav_settings": "Asetukset",
|
||||
"com_nav_shared_links": "Jaetut linkit",
|
||||
"com_nav_show_code": "Kooditulkkia käyttäessä näytä aina koodi",
|
||||
"com_nav_speech_to_text": "Puheesta tekstiksi",
|
||||
"com_nav_text_to_speech": "Tekstistä puheeksi",
|
||||
"com_nav_theme": "Teema",
|
||||
"com_nav_theme_dark": "Tumma",
|
||||
"com_nav_theme_light": "Vaalea",
|
||||
"com_nav_theme_system": "Oletus",
|
||||
"com_nav_tool_dialog": "Avustajatyökalut",
|
||||
"com_nav_tool_dialog_description": "Avustaja täytyy tallentaa, jotta työkaluvalinta säilyisi.",
|
||||
"com_nav_tool_remove": "Poista",
|
||||
"com_nav_tool_search": "Hakutyökalut",
|
||||
"com_nav_user": "KÄYTTÄJÄ",
|
||||
"com_nav_user_name_display": "Näytä käyttäjänimi viesteissä",
|
||||
"com_nav_voice_select": "Ääni",
|
||||
"com_show_agent_settings": "Näytä Agentin asetukset",
|
||||
"com_show_completion_settings": "Näytä Vastausasetukset",
|
||||
"com_show_examples": "Näytä esimerkit",
|
||||
"com_sidepanel_assistant_builder": "Avustajan rakentaminen",
|
||||
"com_sidepanel_attach_files": "Liitä tiedostoja",
|
||||
"com_sidepanel_hide_panel": "Piilota sivupalkki",
|
||||
"com_sidepanel_manage_files": "Hallinnoi tiedostoja",
|
||||
"com_sidepanel_parameters": "Parametrit",
|
||||
"com_ui_accept": "Hyväksyn",
|
||||
"com_ui_add": "Lisää",
|
||||
"com_ui_add_model_preset": "Lisää malli tai esiasetus lisävastausta varten",
|
||||
"com_ui_admin": "Ylläpito",
|
||||
"com_ui_admin_settings": "Ylläpitoasetukset",
|
||||
"com_ui_advanced": "Edistynyt",
|
||||
"com_ui_all": "kaikki",
|
||||
"com_ui_all_proper": "Kaikki",
|
||||
"com_ui_archive": "Arkisto",
|
||||
"com_ui_archive_error": "Keskustelun arkistointi epäonnistui",
|
||||
"com_ui_ascending": "Nouseva",
|
||||
"com_ui_assistant": "Avustaja",
|
||||
"com_ui_assistant_delete_error": "Avustajan poistossa tapahtui virhe",
|
||||
"com_ui_assistant_deleted": "Avustajan poisto onnistui",
|
||||
"com_ui_assistants": "Avustajat",
|
||||
"com_ui_assistants_output": "Avustajien tuotokset",
|
||||
"com_ui_attach_error": "Tiedosto ei voi liittää. Luo tai valitse keskustelu, tai kokeile ladata sivu uudestaan.",
|
||||
"com_ui_attach_error_openai": "Avustajan tiedostoja ei voi liittää muihin päätepisteisiin",
|
||||
"com_ui_attach_error_size": "Tiedoston koko ylittää päätepisteen rajan:",
|
||||
"com_ui_attach_error_type": "Päätepiste ei tue tiedostotyyppiä::",
|
||||
"com_ui_attach_warn_endpoint": "Ilman yhteensopivaa työkalua muut kuin Avustajan tiedostot voidaan jättää huomiotta.",
|
||||
"com_ui_attachment": "Liitetiedosto",
|
||||
"com_ui_authentication": "Autentikointi",
|
||||
"com_ui_avatar": "Profiilikuva",
|
||||
"com_ui_back_to_chat": "Palaa keskusteluun",
|
||||
"com_ui_back_to_prompts": "Palaa syötteisiin",
|
||||
"com_ui_bookmark_delete_confirm": "Oletko varma, että haluat poistaa tämän kirjanmerkin?",
|
||||
"com_ui_bookmarks": "Kirjanmerkit",
|
||||
"com_ui_bookmarks_add_to_conversation": "Lisää nykyiseen keskusteluun",
|
||||
"com_ui_bookmarks_count": "Määrä",
|
||||
"com_ui_bookmarks_create_error": "Virhe kirjanmerkin luomisessa",
|
||||
"com_ui_bookmarks_create_success": "Kirjanmerkki luotu onnistuneesti",
|
||||
"com_ui_bookmarks_delete_error": "Virhe kirjanmerkin poistamisessa",
|
||||
"com_ui_bookmarks_delete_success": "Kirjanmerkki poistettu onnistuneesti",
|
||||
"com_ui_bookmarks_description": "Kuvaus",
|
||||
"com_ui_bookmarks_new": "Uusi kirjanmerkki",
|
||||
"com_ui_bookmarks_title": "Otsikko",
|
||||
"com_ui_bookmarks_update_error": "Virhe kirjanmerkin päivittämisessä",
|
||||
"com_ui_bookmarks_update_success": "Kirjanmerkki päivitetty onnistuneesti",
|
||||
"com_ui_cancel": "Peruuta",
|
||||
"com_ui_chat": "Keskustelu",
|
||||
"com_ui_clear": "Tyhjennä",
|
||||
"com_ui_close": "Sulje",
|
||||
"com_ui_code": "Koodi",
|
||||
"com_ui_command_placeholder": "Valinnainen: Käsky syötteelle. Oletuskäskynä on nimi.",
|
||||
"com_ui_command_usage_placeholder": "Valitse syöte käskyn tai nimen perusteella",
|
||||
"com_ui_confirm_action": "Vahvista toiminto",
|
||||
"com_ui_context": "Konteksti",
|
||||
"com_ui_continue": "Jatka",
|
||||
"com_ui_copied": "Kopioitu!",
|
||||
"com_ui_copied_to_clipboard": "Kopioitu leikepöydältä",
|
||||
"com_ui_copy_code": "Kopioi koodi",
|
||||
"com_ui_copy_link": "Kopioi linkki",
|
||||
"com_ui_copy_to_clipboard": "Kopioi leikepöydälle",
|
||||
"com_ui_create": "Luo",
|
||||
"com_ui_create_link": "Luo linkki",
|
||||
"com_ui_create_prompt": "Luo syöte",
|
||||
"com_ui_dashboard": "Työpöytä",
|
||||
"com_ui_date": "Päivämäärä",
|
||||
"com_ui_date_april": "Huhtikuu",
|
||||
"com_ui_date_august": "Elokuu",
|
||||
"com_ui_date_december": "Joulukuu",
|
||||
"com_ui_date_february": "Helmikuu",
|
||||
"com_ui_date_january": "Tammikuu",
|
||||
"com_ui_date_july": "Heinäkuu",
|
||||
"com_ui_date_june": "Kesäkuu",
|
||||
"com_ui_date_march": "Maaliskuu",
|
||||
"com_ui_date_may": "Toukokuu",
|
||||
"com_ui_date_november": "Marraskuu",
|
||||
"com_ui_date_october": "Lokakuu",
|
||||
"com_ui_date_previous_30_days": "Edelliset 30 päivää",
|
||||
"com_ui_date_previous_7_days": "Edelliset 7 päivää",
|
||||
"com_ui_date_september": "Syyskuu",
|
||||
"com_ui_date_today": "Tänään",
|
||||
"com_ui_date_yesterday": "Eilen",
|
||||
"com_ui_decline": "En hyväksy",
|
||||
"com_ui_delete": "Poista",
|
||||
"com_ui_delete_assistant_confirm": "Haluatko varmasti poistaa tämän Avustajan? Poistoa ei voi perua.",
|
||||
"com_ui_delete_confirm": "Tämä suorittaa poiston",
|
||||
"com_ui_delete_confirm_prompt_version_var": "Tämä poistaa valitun version \"{{0}}\":lta. Jos muita versioita ei ole, syöte poistetaan samalla.",
|
||||
"com_ui_delete_conversation": "Poista keskustelu?",
|
||||
"com_ui_delete_prompt": "Poista syöte?",
|
||||
"com_ui_descending": "Laskeva",
|
||||
"com_ui_description": "Kuvaus",
|
||||
"com_ui_description_placeholder": "Valinnainen: Lisää kuvaus syötteelle",
|
||||
"com_ui_download_error": "Virhe tiedoston lataamisesta. Tiedosto on saatettu poistaa.",
|
||||
"com_ui_edit": "Muokkaa",
|
||||
"com_ui_enter": "Syötä",
|
||||
"com_ui_error": "Virhe",
|
||||
"com_ui_error_connection": "Palvelimeen yhdistäessä tapahtui virhe. Kokeile ladata sivu uudestaan.",
|
||||
"com_ui_error_save_admin_settings": "Ylläpitoasetusten tallentamisessa tapahtui virhe.",
|
||||
"com_ui_examples": "Esimerkkejä",
|
||||
"com_ui_field_required": "Tämä kenttä on pakollinen",
|
||||
"com_ui_filter_prompts_name": "Syötteiden nimisuodatus",
|
||||
"com_ui_fork": "Haarauta",
|
||||
"com_ui_fork_all_target": "Sisällytä kaikki tänne/täältä",
|
||||
"com_ui_fork_branches": "Sisällytä sivupolut",
|
||||
"com_ui_fork_change_default": "Oletushaarautustapa",
|
||||
"com_ui_fork_default": "Käytä oletushaarautustapaa",
|
||||
"com_ui_fork_error": "Keskustelun haarauttamisessa tapahtui virhe",
|
||||
"com_ui_fork_from_message": "Valitse haarautustapa",
|
||||
"com_ui_fork_info_1": "Käytä tätä asetusta viestien haarauttamiseen halutulla tavalla.",
|
||||
"com_ui_fork_info_2": "\"Haarauttaminen\" luo uuden keskustelun siten, että se alkaa/päättyy tietyistä tämänhetkisen keskustelun viesteistä, luoden kopion halutulla tavalla.",
|
||||
"com_ui_fork_info_3": "\"Kohdeviesti\" tarkoittaa joko viestiä, josta tämä ponnahdusikkuna avattiin, tai, jos rastitat \"{{0}}\", viimeisintä viestiä keskustelussa.",
|
||||
"com_ui_fork_info_branches": "Tämä vaihtoehto haarauttaa näkyvissä olevat viestit sekä niihin liittyvät sivupolut; toisin sanoen, suoran polun kohdeviestiin sisällyttäen matkalla olevat sivupolut.",
|
||||
"com_ui_fork_info_remember": "Jos tämä on valittu, tallentaa tehdyt valinnat tulevaa jatkokäyttöä varten nopeuttaen keskusteluhaarojen luomista samoilla asetuksilla.",
|
||||
"com_ui_fork_info_start": "Jos tämä on valittu, haarauttaminen alkaa tästä viestistä keskustelun viimeiseen viestiin saakka, yllä valitun toimintatavan mukaisesti.",
|
||||
"com_ui_fork_info_target": "Tämä vaihtoehto haarauttaa kaikki viestit kohdeviestiin asti, sisällyttäen sen naapurit; toisin sanoen, kaikki sivupolut riippumatta siitä ovatko ne näkyvissä tai samalla polulla tulevat matkaan.",
|
||||
"com_ui_fork_info_visible": "Tämä vaihtoehto haarauttaa vain näkyvissä olevat viestit; toisin sanoen, suoran polun kohdeviestiin, ilman sivupolkuja.",
|
||||
"com_ui_fork_processing": "Haarautetaan keskustelua...",
|
||||
"com_ui_fork_remember": "Muista",
|
||||
"com_ui_fork_remember_checked": "Valintasi muistetaan käytön jälkeen. Voit muuttaa tätä milloin tahansa asetuksista.",
|
||||
"com_ui_fork_split_target": "Aloita haara tästä",
|
||||
"com_ui_fork_split_target_setting": "Aloita haara oletuksena kohdeviestistä",
|
||||
"com_ui_fork_success": "Keskustelun haarauttaminen onnistui.",
|
||||
"com_ui_fork_visible": "Vain näkyvät viestit",
|
||||
"com_ui_go_to_conversation": "Siirry keskusteluun",
|
||||
"com_ui_happy_birthday": "On 1. syntymäpäiväni!",
|
||||
"com_ui_host": "Host",
|
||||
"com_ui_image_gen": "Kuvanluonti",
|
||||
"com_ui_import_conversation_error": "Keskustelujesi tuonnissa tapahtui virhe",
|
||||
"com_ui_import_conversation_file_type_error": "Tiedostotyyppi ei ole tuettu tuonnissa",
|
||||
"com_ui_import_conversation_info": "Tuo keskusteluja JSON-tiedostosta",
|
||||
"com_ui_import_conversation_success": "Keskustelujen tuonti onnistui",
|
||||
"com_ui_input": "Syöte",
|
||||
"com_ui_instructions": "Ohjeet",
|
||||
"com_ui_latest_footer": "Kaikki tekoälyt kaikille.",
|
||||
"com_ui_locked": "Lukittu",
|
||||
"com_ui_manage": "Hallinnoi",
|
||||
"com_ui_max_tags": "Maksimimäärä on {{0}}. käytetään viimeisimpiä arvoja.",
|
||||
"com_ui_mention": "Mainitse päätepiste, Avustaja tai asetus vaihtaaksesi siihen pikana",
|
||||
"com_ui_min_tags": "Enempää arvoja ei voida poistaa. Niiden minimimäärä on {{0}}.",
|
||||
"com_ui_model": "Malli",
|
||||
"com_ui_my_prompts": "Omat syötteet",
|
||||
"com_ui_name": "Nimi",
|
||||
"com_ui_new_chat": "Uusi keskustelu",
|
||||
"com_ui_next": "Seuraava",
|
||||
"com_ui_no": "Ei",
|
||||
"com_ui_no_category": "Ei kategoriaa",
|
||||
"com_ui_no_terms_content": "Ei käyttöehtoja näytettäväksi",
|
||||
"com_ui_nothing_found": "Mitään ei löytynyt",
|
||||
"com_ui_of": "/",
|
||||
"com_ui_off": "Pois",
|
||||
"com_ui_on": "Päällä",
|
||||
"com_ui_prev": "Edellinen",
|
||||
"com_ui_preview": "Esikatsele",
|
||||
"com_ui_privacy_policy": "Tietosuojailmoitus",
|
||||
"com_ui_prompt": "Syöte",
|
||||
"com_ui_prompt_already_shared_to_all": "Tämä syöte on jo jaettu kaikille käyttäjille",
|
||||
"com_ui_prompt_name": "Syötteen nimi",
|
||||
"com_ui_prompt_name_required": "Syötteen nimi on pakollinen",
|
||||
"com_ui_prompt_preview_not_shared": "Tekijä ei ole sallinut yhteistyötä tälle syötteelle.",
|
||||
"com_ui_prompt_text": "Teksti",
|
||||
"com_ui_prompt_text_required": "Teksti on pakollinen",
|
||||
"com_ui_prompt_update_error": "Syötteen päivityksessä tapahtui virhe",
|
||||
"com_ui_prompts": "Syötteet",
|
||||
"com_ui_prompts_allow_create": "Salli syötteiden luominen",
|
||||
"com_ui_prompts_allow_share_global": "Salli syötteiden jakaminen kaikille käyttäjille",
|
||||
"com_ui_prompts_allow_use": "Salli syötteiden käyttäminen",
|
||||
"com_ui_read_aloud": "Lue ääneen",
|
||||
"com_ui_regenerate": "Luo uudestaan",
|
||||
"com_ui_rename": "Nimeä uudestaan",
|
||||
"com_ui_result": "Tulos",
|
||||
"com_ui_revoke": "Peruuta",
|
||||
"com_ui_revoke_info": "Peruuta kaikki käyttäjän antamat tunnisteet",
|
||||
"com_ui_save": "Tallenna",
|
||||
"com_ui_save_submit": "Tallenna & Lähetä",
|
||||
"com_ui_saved": "Tallennettu!",
|
||||
"com_ui_select": "Valitse",
|
||||
"com_ui_select_model": "Valitse malli",
|
||||
"com_ui_select_search_model": "Hae mallia nimen perusteella",
|
||||
"com_ui_select_search_plugin": "Hae lisäosaa nimen perusteella",
|
||||
"com_ui_share": "Jaa",
|
||||
"com_ui_share_create_message": "Nimesi ja jakamisen jälkeen lisätäämäsi viestit pysyvät yksityisinä.",
|
||||
"com_ui_share_delete_error": "Jaetun linkin poistossa tapahtui virhe",
|
||||
"com_ui_share_error": "Keskustelulinkin jakamisessa tapahtui virhe",
|
||||
"com_ui_share_link_to_chat": "Jaa linkki keskusteluun",
|
||||
"com_ui_share_to_all_users": "Jaa kaikille käyttäjille",
|
||||
"com_ui_share_update_message": "Nimesi, mukautetut ohjeet, ja mahdolliset viestit jotka lisäät jakamisen jälkeen jäävät yksityisiksi.",
|
||||
"com_ui_share_var": "Jaa {{0}}",
|
||||
"com_ui_shared_link_not_found": "Jakolinkki ei löytynyt",
|
||||
"com_ui_shared_prompts": "Jaetut syötteet",
|
||||
"com_ui_show_all": "Näytä kaikki",
|
||||
"com_ui_simple": "Yksinkertainen",
|
||||
"com_ui_size": "Koko",
|
||||
"com_ui_special_variables": "Erikoismuuttujat: Käytä {{current_date}} kuluvaa päivämäärää varten, ja {{current_user}} käyttäjätunnustasi varten.",
|
||||
"com_ui_stop": "Pysäytä",
|
||||
"com_ui_storage": "Varasto",
|
||||
"com_ui_submit": "Lähetä",
|
||||
"com_ui_terms_and_conditions": "Käyttöehdot",
|
||||
"com_ui_terms_of_service": "Käyttöehdot",
|
||||
"com_ui_tools": "Työkalut",
|
||||
"com_ui_unarchive": "Palauta arkistosta",
|
||||
"com_ui_unarchive_error": "Palautus arkistosta epäonnistui",
|
||||
"com_ui_unknown": "Tuntematon",
|
||||
"com_ui_update": "Päivitys",
|
||||
"com_ui_upload": "Lataa",
|
||||
"com_ui_upload_delay": "\"{{0}}\" lataaminen kestää odotettua pidempään. Ole hyvä ja odota kunnes tiedosto saadaan indeksoitua tiedonhakua varten.",
|
||||
"com_ui_upload_error": "Tiedoston lataamisessa tapahtui virhe",
|
||||
"com_ui_upload_files": "Lataa tiedostoja",
|
||||
"com_ui_upload_invalid": "Virheellinen ladattava tiedosto. Tiedoston täytyy olla kokorajaan mahtuva kuvatiedosto",
|
||||
"com_ui_upload_invalid_var": "Virheellinen ladattava tiedosto. Tiedoston täytyy olla enintään {{0}} MB kokoinen kuvatiedosto",
|
||||
"com_ui_upload_success": "Tiedoston lataus onnistui",
|
||||
"com_ui_use_micrphone": "Käytä mikrofonia",
|
||||
"com_ui_use_prompt": "Käytä syötettä",
|
||||
"com_ui_variables": "Muuttujat",
|
||||
"com_ui_variables_info": "Käytä kaksoisaaltosulkeita tekstissäsi muuttujien luomiseen, esim. {{esimerkkimuuttuja}}. Muuttujia voi täyttää myöhemmin syötettä käyttäessä.",
|
||||
"com_ui_version_var": "Versio {{0}}",
|
||||
"com_ui_versions": "Versiot",
|
||||
"com_ui_yes": "Kyllä",
|
||||
"com_user_message": "Sinä"
|
||||
}
|
||||
757
packages/client/src/locales/fr/translation.json
Normal file
757
packages/client/src/locales/fr/translation.json
Normal file
|
|
@ -0,0 +1,757 @@
|
|||
{
|
||||
"com_a11y_ai_composing": "L'IA est en train de composer",
|
||||
"com_a11y_end": "L'IA a terminé sa réponse",
|
||||
"com_a11y_start": "L'IA a commencé sa réponse",
|
||||
"com_agents_allow_editing": "Autoriser les autres utilisateurs à modifier votre agent",
|
||||
"com_agents_by_librechat": "par LibreChat",
|
||||
"com_agents_code_interpreter": "Lorsqu'activé, permet à votre agent d'utiliser l'API d'interpréteur de code LibreChat pour exécuter du code généré de manière sécurisée, y compris le traitement de fichiers. Nécessite une clé API valide.",
|
||||
"com_agents_code_interpreter_title": "API d'interpréteur de code",
|
||||
"com_agents_create_error": "Une erreur s'est produite lors de la création de votre agent.",
|
||||
"com_agents_description_placeholder": "Décrivez votre Agent ici (facultatif)",
|
||||
"com_agents_enable_file_search": "Activer la recherche de fichiers",
|
||||
"com_agents_file_context": "Contexte du fichier (OCR)",
|
||||
"com_agents_file_context_disabled": "L'agent doit être créé avant de charger des fichiers pour le contexte de fichiers.",
|
||||
"com_agents_file_context_info": "Les fichiers téléchargés en tant que \"Contexte\" sont traités à l'aide de l'OCR pour en extraire le texte, qui est ensuite ajouté aux instructions de l'agent. Idéal pour les documents, les images contenant du texte ou les PDF pour lesquels vous avez besoin du contenu textuel complet d'un fichier.",
|
||||
"com_agents_file_search_disabled": "L'agent doit être créé avant de pouvoir télécharger des fichiers pour la Recherche de Fichiers.",
|
||||
"com_agents_file_search_info": "Lorsque cette option est activée, l'agent sera informé des noms exacts des fichiers listés ci-dessous, lui permettant d'extraire le contexte pertinent de ces fichiers.",
|
||||
"com_agents_instructions_placeholder": "Les instructions système que l'agent utilise",
|
||||
"com_agents_missing_provider_model": "Veuillez sélectionner un fournisseur et un modèle avant de créer un agent.",
|
||||
"com_agents_name_placeholder": "Facultatif : Le nom de l'agent",
|
||||
"com_agents_no_access": "Vous n'avez pas l'autorisation de modifier cet agent.",
|
||||
"com_agents_not_available": "Agent non disponible",
|
||||
"com_agents_search_name": "Rechercher des agents par nom",
|
||||
"com_agents_update_error": "Une erreur s'est produite lors de la mise à jour de votre agent",
|
||||
"com_assistants_action_attempt": "L'assistant souhaite s'entretenir avec {{0}}",
|
||||
"com_assistants_actions": "Actions",
|
||||
"com_assistants_actions_disabled": "Vous devez créer un assistant avant d'ajouter des actions.",
|
||||
"com_assistants_actions_info": "Permettez à votre Assistant de récupérer des informations ou d'effectuer des actions via des API",
|
||||
"com_assistants_add_actions": "Ajouter des actions",
|
||||
"com_assistants_add_tools": "Ajouter des outils",
|
||||
"com_assistants_allow_sites_you_trust": "N'autorisez que les sites en lesquels vous avez confiance.",
|
||||
"com_assistants_append_date": "Ajouter la date et l'heure actuelles",
|
||||
"com_assistants_append_date_tooltip": "Lorsque activé, la date et l'heure actuelles du client seront ajoutées aux instructions du système de l'assistant.",
|
||||
"com_assistants_available_actions": "Actions disponibles",
|
||||
"com_assistants_capabilities": "Capacités des assistants",
|
||||
"com_assistants_code_interpreter": "Interpréteur de code",
|
||||
"com_assistants_code_interpreter_files": "Les fichiers suivants sont disponibles uniquement pour l'interpréteur de code :",
|
||||
"com_assistants_code_interpreter_info": "L'interpréteur de code permet à l'assistant d'écrire et d'exécuter du code. Cet outil peut traiter des fichiers avec différents formats de données et générer des fichiers tels que des graphiques.",
|
||||
"com_assistants_completed_action": "A parlé à {{0}}",
|
||||
"com_assistants_completed_function": "A exécuté {{0}}",
|
||||
"com_assistants_conversation_starters": "Suggestions de conversation",
|
||||
"com_assistants_conversation_starters_placeholder": "Saisissez une amorce de conversation",
|
||||
"com_assistants_create_error": "Une erreur s'est produite lors de la création de votre assistant.",
|
||||
"com_assistants_create_success": "Création réussie",
|
||||
"com_assistants_delete_actions_error": "Une erreur s'est produite lors de la suppression de l'action.",
|
||||
"com_assistants_delete_actions_success": "Action supprimée avec succès de l'Assistant",
|
||||
"com_assistants_description_placeholder": "Décrivez votre assistant ici (facultatif)",
|
||||
"com_assistants_domain_info": "L'assistant a envoyé ces informations à {{0}}",
|
||||
"com_assistants_file_search": "Recherche de fichiers",
|
||||
"com_assistants_file_search_info": "L'ajout de vecteurs de stockage pour la recherche de fichiers n'est pas encore pris en charge. Vous pouvez les ajouter depuis le terrain de jeu du fournisseur ou joindre des fichiers aux messages pour une recherche de fichiers au niveau du fil de discussion.",
|
||||
"com_assistants_function_use": "L'assistant a utilisé {{0}}",
|
||||
"com_assistants_image_vision": "Vision d'image",
|
||||
"com_assistants_instructions_placeholder": "Les instructions système que l'assistant utilise",
|
||||
"com_assistants_knowledge": "Connaissances",
|
||||
"com_assistants_knowledge_disabled": "L'assistant doit être créé, et l'interpréteur de code ou la récupération doivent être activés et enregistrés avant de pouvoir importer des fichiers en tant que connaissances.",
|
||||
"com_assistants_knowledge_info": "Si vous téléchargez des fichiers dans la section Connaissances, les conversations avec votre Assistant pourront inclure le contenu de ces fichiers.",
|
||||
"com_assistants_max_starters_reached": "Nombre maximum de démarreurs de conversation atteint",
|
||||
"com_assistants_name_placeholder": "Nom de l'assistant (facultatif)",
|
||||
"com_assistants_non_retrieval_model": "La recherche de fichiers n'est pas activée pour ce modèle. Veuillez sélectionner un autre modèle.",
|
||||
"com_assistants_retrieval": "Récupération",
|
||||
"com_assistants_running_action": "Action en cours",
|
||||
"com_assistants_search_name": "Rechercher des assistants par nom",
|
||||
"com_assistants_update_actions_error": "Une erreur s'est produite lors de la création ou de la mise à jour de l'action.",
|
||||
"com_assistants_update_actions_success": "Action créée ou mise à jour avec succès",
|
||||
"com_assistants_update_error": "Une erreur s'est produite lors de la mise à jour de votre assistant.",
|
||||
"com_assistants_update_success": "Mise à jour réussie",
|
||||
"com_auth_already_have_account": "Vous avez déjà un compte ?",
|
||||
"com_auth_apple_login": "S'identifier avec Apple",
|
||||
"com_auth_back_to_login": "Retour à la connexion",
|
||||
"com_auth_click": "Cliquez",
|
||||
"com_auth_click_here": "Cliquez ici",
|
||||
"com_auth_continue": "Continuer",
|
||||
"com_auth_create_account": "Créez votre compte",
|
||||
"com_auth_discord_login": "Se connecter avec Discord",
|
||||
"com_auth_email": "Courriel",
|
||||
"com_auth_email_address": "Adresse courriel",
|
||||
"com_auth_email_max_length": "Le courriel ne doit pas dépasser 120 caractères",
|
||||
"com_auth_email_min_length": "Le courriel doit comporter au moins 6 caractères",
|
||||
"com_auth_email_pattern": "Vous devez entrer une adresse courriel valide",
|
||||
"com_auth_email_required": "Le courriel est obligatoire",
|
||||
"com_auth_email_resend_link": "Renvoyer un courriel",
|
||||
"com_auth_email_resent_failed": "Échec de la réexpédition du courriel de vérification",
|
||||
"com_auth_email_resent_success": "Courriel de vérification renvoyé avec succès",
|
||||
"com_auth_email_verification_failed": "Échec de la vérification du courriel",
|
||||
"com_auth_email_verification_failed_token_missing": "Échec de la vérification, jeton manquant",
|
||||
"com_auth_email_verification_in_progress": "Vérification de votre courriel, veuillez patienter",
|
||||
"com_auth_email_verification_invalid": "Vérification du courriel invalide",
|
||||
"com_auth_email_verification_redirecting": "Redirection dans {{0}} secondes...",
|
||||
"com_auth_email_verification_resend_prompt": "Vous n'avez pas reçu de courriel ?",
|
||||
"com_auth_email_verification_success": "Courriel vérifié avec succès",
|
||||
"com_auth_email_verifying_ellipsis": "Vérification...",
|
||||
"com_auth_error_create": "Il y a eu une erreur lors de la tentative d'enregistrement de votre compte. Veuillez réessayer.",
|
||||
"com_auth_error_invalid_reset_token": "Ce jeton de réinitialisation de mot de passe n'est plus valide.",
|
||||
"com_auth_error_login": "Impossible de se connecter avec les informations fournies. Veuillez vérifier vos identifiants et réessayer.",
|
||||
"com_auth_error_login_ban": "Votre compte a été temporairement banni en raison de violations de notre service.",
|
||||
"com_auth_error_login_rl": "Trop de tentatives de connexion en peu de temps. Veuillez réessayer plus tard.",
|
||||
"com_auth_error_login_server": "Une erreur interne du serveur s'est produite. Veuillez patienter quelques instants et réessayer.",
|
||||
"com_auth_error_login_unverified": "Votre compte n'a pas été vérifié. Veuillez vérifier que vous avez reçu un lien de vérification dans votre courriel.",
|
||||
"com_auth_facebook_login": "Se connecter avec Facebook",
|
||||
"com_auth_full_name": "Nom complet",
|
||||
"com_auth_github_login": "Se connecter avec Github",
|
||||
"com_auth_google_login": "Se connecter avec Google",
|
||||
"com_auth_here": "ICI",
|
||||
"com_auth_login": "Connexion",
|
||||
"com_auth_login_with_new_password": "Vous pouvez maintenant vous connecter avec votre nouveau mot de passe.",
|
||||
"com_auth_name_max_length": "Le nom doit être inférieur à 80 caractères",
|
||||
"com_auth_name_min_length": "Le nom doit comporter au moins 3 caractères",
|
||||
"com_auth_name_required": "Le nom est obligatoire",
|
||||
"com_auth_no_account": "Vous n'avez pas de compte?",
|
||||
"com_auth_password": "Mot de passe",
|
||||
"com_auth_password_confirm": "Confirmer le mot de passe",
|
||||
"com_auth_password_forgot": "Mot de passe oublié?",
|
||||
"com_auth_password_max_length": "Le mot de passe doit être inférieur à 128 caractères",
|
||||
"com_auth_password_min_length": "Le mot de passe doit comporter au moins 8 caractères",
|
||||
"com_auth_password_not_match": "Les mots de passe ne correspondent pas",
|
||||
"com_auth_password_required": "Le mot de passe est obligatoire",
|
||||
"com_auth_registration_success_generic": "Veuillez vérifier vos mails pour la vérification de celui-ci.",
|
||||
"com_auth_registration_success_insecure": "Inscription réussie.",
|
||||
"com_auth_reset_password": "Réinitialiser votre mot de passe",
|
||||
"com_auth_reset_password_if_email_exists": "Si un compte avec ce courriel existe, un courriel avec des instructions de réinitialisation de mot de passe a été envoyé. Assurez-vous de vérifier votre dossier de courrier indésirable.",
|
||||
"com_auth_reset_password_link_sent": "Courriel envoyé",
|
||||
"com_auth_reset_password_success": "Réinitialisation du mot de passe réussie",
|
||||
"com_auth_sign_in": "Se connecter",
|
||||
"com_auth_sign_up": "S'inscrire",
|
||||
"com_auth_submit_registration": "Soumettre l'inscription",
|
||||
"com_auth_to_reset_your_password": "pour réinitialiser votre mot de passe.",
|
||||
"com_auth_to_try_again": "pour réessayer.",
|
||||
"com_auth_two_factor": "Consultez votre application préférée de mot de passe à usage unique pour obtenir un code.",
|
||||
"com_auth_username": "Nom d'utilisateur",
|
||||
"com_auth_username_max_length": "Le nom d'utilisateur doit être inférieur à 20 caractères",
|
||||
"com_auth_username_min_length": "Le nom d'utilisateur doit comporter au moins 3 caractères",
|
||||
"com_auth_verify_your_identity": "Vérifiez votre identité",
|
||||
"com_auth_welcome_back": "Content de te revoir",
|
||||
"com_click_to_download": "(cliquez ici pour télécharger)",
|
||||
"com_download_expired": "Téléchargement expiré",
|
||||
"com_download_expires": "(cliquez ici pour télécharger - expire le {{0}})",
|
||||
"com_endpoint": "Endpoint",
|
||||
"com_endpoint_agent": "Agent",
|
||||
"com_endpoint_agent_model": "Modèle d'agent (recommandé : GPT-3.5)",
|
||||
"com_endpoint_agent_placeholder": "Veuillez sélectionner un Agent",
|
||||
"com_endpoint_ai": "IA",
|
||||
"com_endpoint_anthropic_maxoutputtokens": "Nombre maximum de jetons qui peuvent être générés dans la réponse. Spécifiez une valeur plus faible pour des réponses plus courtes et une valeur plus élevée pour des réponses plus longues.",
|
||||
"com_endpoint_anthropic_prompt_cache": "La mise en cache des prompts permet de réutiliser les contextes ou instructions volumineux entre les appels API, réduisant ainsi les coûts et la latence",
|
||||
"com_endpoint_anthropic_temp": "Varie de 0 à 1. Utilisez une température proche de 0 pour l'analyse / le choix multiple, et proche de 1 pour les tâches créatives et génératives. Nous vous recommandons de modifier ceci ou Top P mais pas les deux.",
|
||||
"com_endpoint_anthropic_thinking": "Activez le raisonnement pour les modèles Claude pris en charge (3.7 Sonnet). Note : nécessite que le \"l'option de réflexion\" soit activée et inférieur au \"nombre maximum de jetons de sortie\".",
|
||||
"com_endpoint_anthropic_thinking_budget": "Détermine le nombre maximum de jetons que Claude est autorisé à utiliser pour son processus de raisonnement interne. Des budgets plus importants peuvent améliorer la qualité des réponses en permettant une analyse plus approfondie des problèmes complexes, bien que Claude puisse ne pas utiliser la totalité du budget alloué, en particulier dans les plages supérieures à 32K. Ce paramètre doit être inférieur à \"Max Output Tokens\".",
|
||||
"com_endpoint_anthropic_topk": "Top-k change la façon dont le modèle sélectionne les jetons pour la sortie. Un top-k de 1 signifie que le jeton sélectionné est le plus probable parmi tous les jetons du vocabulaire du modèle (également appelé décodage glouton), tandis qu'un top-k de 3 signifie que le jeton suivant est sélectionné parmi les 3 jetons les plus probables (en utilisant la température).",
|
||||
"com_endpoint_anthropic_topp": "Top-p change la façon dont le modèle sélectionne les jetons pour la sortie. Les jetons sont sélectionnés du plus K (voir le paramètre topK) probable au moins jusqu'à ce que la somme de leurs probabilités égale la valeur top-p.",
|
||||
"com_endpoint_assistant": "Assistant de point de terminaison",
|
||||
"com_endpoint_assistant_model": "Modèle d'assistant",
|
||||
"com_endpoint_assistant_placeholder": "Veuillez sélectionner un assistant dans le panneau latéral droit",
|
||||
"com_endpoint_completion": "Complétion",
|
||||
"com_endpoint_completion_model": "Modèle de complétion (recommandé : GPT-4)",
|
||||
"com_endpoint_config_click_here": "Cliquez ici",
|
||||
"com_endpoint_config_google_api_info": "Pour obtenir votre clé API de langage génératif (pour Gemini),",
|
||||
"com_endpoint_config_google_api_key": "Clé API Google",
|
||||
"com_endpoint_config_google_cloud_platform": "(de Google Cloud Platform)",
|
||||
"com_endpoint_config_google_gemini_api": "(API Gemini)",
|
||||
"com_endpoint_config_google_service_key": "Clé de compte de service Google",
|
||||
"com_endpoint_config_key": "Définir la clé API",
|
||||
"com_endpoint_config_key_encryption": "Votre clé sera cryptée et supprimée à",
|
||||
"com_endpoint_config_key_for": "Définir la clé API pour",
|
||||
"com_endpoint_config_key_google_need_to": "Vous devez",
|
||||
"com_endpoint_config_key_google_service_account": "Créer un compte de service",
|
||||
"com_endpoint_config_key_google_vertex_ai": "Activer Vertex AI",
|
||||
"com_endpoint_config_key_google_vertex_api": "API sur Google Cloud, puis",
|
||||
"com_endpoint_config_key_google_vertex_api_role": "Assurez-vous de cliquer 'Créer et continuer' pour donner au moins le role 'Utilisateur de Vertex AI'. Finalement, créez une clé JSON à importer ici.",
|
||||
"com_endpoint_config_key_import_json_key": "Importez la clé JSON du compte de service.",
|
||||
"com_endpoint_config_key_import_json_key_invalid": "Clé JSON du compte de service invalide. Avez-vous importé le bon fichier ?",
|
||||
"com_endpoint_config_key_import_json_key_success": "Clé JSON du compte de service importé avec succès",
|
||||
"com_endpoint_config_key_name": "Clé",
|
||||
"com_endpoint_config_key_never_expires": "Votre clé n'expirera jamais",
|
||||
"com_endpoint_config_placeholder": "Définissez votre clé dans le menu En-tête pour discuter.",
|
||||
"com_endpoint_config_value": "Entrez la valeur pour",
|
||||
"com_endpoint_context": "Contexte",
|
||||
"com_endpoint_context_info": "Le nombre maximum de jetons qui peuvent être utilisés pour le contexte. Utilisez ceci pour contrôler le nombre de jetons envoyés par requête. Si non spécifié, les valeurs par défaut du système seront utilisées en fonction de la taille de contexte connue des modèles. Définir des valeurs plus élevées peut entraîner des erreurs et/ou un coût en jetons plus élevé.",
|
||||
"com_endpoint_context_tokens": "Jetons de contexte maximum",
|
||||
"com_endpoint_custom_name": "Nom personnalisé",
|
||||
"com_endpoint_default": "par défaut",
|
||||
"com_endpoint_default_blank": "par défaut : vide",
|
||||
"com_endpoint_default_empty": "par défaut : vide",
|
||||
"com_endpoint_default_with_num": "par défaut : {{0}}",
|
||||
"com_endpoint_deprecated_info": "Ce point de terminaison est obsolète et pourrait être supprimé dans les versions futures, veuillez utiliser le point de terminaison de l'agent à la place.",
|
||||
"com_endpoint_deprecated_info_a11y": "Le point de terminaison du plugin est obsolète et pourrait être supprimé dans les versions futures, veuillez utiliser le point de terminaison de l'agent à la place.",
|
||||
"com_endpoint_examples": " Exemples",
|
||||
"com_endpoint_export": "Exporter",
|
||||
"com_endpoint_export_share": "Exporter/Partager",
|
||||
"com_endpoint_frequency_penalty": "Pénalité de fréquence",
|
||||
"com_endpoint_func_hover": "Activer l'utilisation des plugins comme fonctions OpenAI",
|
||||
"com_endpoint_google_custom_name_placeholder": "Définir un nom personnalisé pour Google",
|
||||
"com_endpoint_google_maxoutputtokens": "Nombre maximum de jetons qui peuvent être générés dans la réponse. Spécifiez une valeur plus faible pour des réponses plus courtes et une valeur plus élevée pour des réponses plus longues.",
|
||||
"com_endpoint_google_temp": "Des valeurs plus élevées = plus aléatoires, tandis que des valeurs plus faibles = plus concentrées et déterministes. Nous vous recommandons de modifier ceci ou Top P mais pas les deux.",
|
||||
"com_endpoint_google_topk": "Top-k change la façon dont le modèle sélectionne les jetons pour la sortie. Un top-k de 1 signifie que le jeton sélectionné est le plus probable parmi tous les jetons du vocabulaire du modèle (également appelé décodage glouton), tandis qu'un top-k de 3 signifie que le jeton suivant est sélectionné parmi les 3 jetons les plus probables (en utilisant la température).",
|
||||
"com_endpoint_google_topp": "Top-p change la façon dont le modèle sélectionne les jetons pour la sortie. Les jetons sont sélectionnés du plus K (voir le paramètre topK) probable au moins jusqu'à ce que la somme de leurs probabilités égale la valeur top-p.",
|
||||
"com_endpoint_instructions_assistants": "Instructions de remplacement",
|
||||
"com_endpoint_instructions_assistants_placeholder": "Remplace les instructions de l'assistant. Cela est utile pour modifier le comportement au cas par cas.",
|
||||
"com_endpoint_max_output_tokens": "Nombre maximum de jetons en sortie",
|
||||
"com_endpoint_message": "Message",
|
||||
"com_endpoint_message_new": "Message {{0}}",
|
||||
"com_endpoint_message_not_appendable": "Editer votre message ou regénerer.",
|
||||
"com_endpoint_my_preset": "Mon préréglage",
|
||||
"com_endpoint_no_presets": "Aucun préréglage pour l'instant, utilisez le bouton paramètres pour en créer un",
|
||||
"com_endpoint_open_menu": "Ouvrir le menu",
|
||||
"com_endpoint_openai_custom_name_placeholder": "Définir un nom personnalisé pour ChatGPT",
|
||||
"com_endpoint_openai_detail": "La résolution pour les requêtes Vision. \"Low\" est moins cher et plus rapide, \"High\" est plus détaillé et plus cher, et \"Auto\" choisira automatiquement entre les deux en fonction de la résolution de l'image.",
|
||||
"com_endpoint_openai_freq": "Nombre compris entre -2,0 et 2,0. Les valeurs positives pénalisent les nouveaux jetons en fonction de leur fréquence existante dans le texte jusqu'à présent, diminuant ainsi la probabilité que le modèle répète la même ligne mot pour mot.",
|
||||
"com_endpoint_openai_max": "Le nombre maximum de jetons à générer. La longueur totale des jetons d'entrée et des jetons générés est limitée par la longueur du contexte du modèle.",
|
||||
"com_endpoint_openai_max_tokens": "Champ `max_tokens` optionnel, représentant le nombre maximum de jetons pouvant être générés dans la complétion de conversation. La longueur totale des jetons d'entrée et des jetons générés est limitée par la longueur du contexte du modèle. Vous pouvez rencontrer des erreurs si ce nombre dépasse le maximum de jetons de contexte.",
|
||||
"com_endpoint_openai_pres": "Nombre compris entre -2,0 et 2,0. Les valeurs positives pénalisent les nouveaux jetons en fonction du fait qu'ils apparaissent ou non dans le texte jusqu'à présent, augmentant ainsi la probabilité que le modèle parle de nouveaux sujets.",
|
||||
"com_endpoint_openai_prompt_prefix_placeholder": "Définir des instructions personnalisées à inclure dans le message système. Par défaut : aucun",
|
||||
"com_endpoint_openai_reasoning_effort": "Modèles o1 seulement : limite l'effort de raisonnement pour les modèles de raisonnement. La réduction de l'effort de raisonnement peut se traduire par des réponses plus rapides et moins de jetons utilisés pour le raisonnement dans une réponse",
|
||||
"com_endpoint_openai_resend": "Renvoyer toutes les images précédemment jointes. Remarque : cela peut augmenter considérablement le coût en jetons et vous pouvez rencontrer des erreurs avec de nombreuses images en pièces jointes.",
|
||||
"com_endpoint_openai_resend_files": "Renvoyer tous les fichiers précédemment joints. Remarque : cela augmentera le coût en jetons et vous pourriez rencontrer des erreurs avec de nombreuses pièces jointes.",
|
||||
"com_endpoint_openai_stop": "Jusqu'à 4 séquences où l'API cessera de générer d'autres jetons.",
|
||||
"com_endpoint_openai_temp": "Des valeurs plus élevées = plus aléatoires, tandis que des valeurs plus faibles = plus concentrées et déterministes. Nous vous recommandons de modifier ceci ou Top P mais pas les deux.",
|
||||
"com_endpoint_openai_topp": "Une alternative à l'échantillonnage avec température, appelée échantillonnage du noyau, où le modèle considère les résultats des jetons avec une masse de probabilité top_p. Ainsi, 0,1 signifie que seuls les jetons représentant les 10 % de masse de probabilité les plus élevés sont pris en compte. Nous vous recommandons de modifier ceci ou la température mais pas les deux.",
|
||||
"com_endpoint_output": "Sortie",
|
||||
"com_endpoint_plug_image_detail": "Détail de l'image",
|
||||
"com_endpoint_plug_resend_files": "Renvoyer les fichiers",
|
||||
"com_endpoint_plug_set_custom_instructions_for_gpt_placeholder": "Définir des instructions personnalisées à inclure dans le message système. Par défaut : aucun",
|
||||
"com_endpoint_plug_skip_completion": "Sauter la complétion",
|
||||
"com_endpoint_plug_use_functions": "Utiliser les fonctions",
|
||||
"com_endpoint_presence_penalty": "Pénalité de présence",
|
||||
"com_endpoint_preset": "préréglage",
|
||||
"com_endpoint_preset_custom_name_placeholder": "il faut mettre quelque chose ici. c'était vide",
|
||||
"com_endpoint_preset_default": "est maintenant le préréglage par défaut.",
|
||||
"com_endpoint_preset_default_item": "Par défaut :",
|
||||
"com_endpoint_preset_default_none": "Aucun préréglage par défaut actif.",
|
||||
"com_endpoint_preset_default_removed": "n'est plus le préréglage par défaut.",
|
||||
"com_endpoint_preset_delete_confirm": "Êtes-vous sûr de vouloir supprimer ce préréglage?",
|
||||
"com_endpoint_preset_delete_error": "Il y a eu une erreur lors de la suppression de votre préréglage. Veuillez réessayer.",
|
||||
"com_endpoint_preset_import": "Préréglage importé!",
|
||||
"com_endpoint_preset_import_error": "Il y a eu une erreur lors de l'importation de votre préréglage. Veuillez réessayer.",
|
||||
"com_endpoint_preset_name": "Nom du préréglage",
|
||||
"com_endpoint_preset_save_error": "Il y a eu une erreur lors de la sauvegarde de votre préréglage. Veuillez réessayer.",
|
||||
"com_endpoint_preset_selected": "Préréglage actif!",
|
||||
"com_endpoint_preset_selected_title": "Actif!",
|
||||
"com_endpoint_preset_title": "Préréglage",
|
||||
"com_endpoint_presets": "préréglages",
|
||||
"com_endpoint_presets_clear_warning": "Etes-vous sûr de vouloir effacer tous les préréglages? Cette action est irréversible.",
|
||||
"com_endpoint_prompt_cache": "Utiliser la mise en cache des prompts",
|
||||
"com_endpoint_prompt_prefix": "Préfixe du prompt",
|
||||
"com_endpoint_prompt_prefix_assistants": "Instructions supplémentaires pour les assistants",
|
||||
"com_endpoint_prompt_prefix_assistants_placeholder": "Définir des instructions ou un contexte supplémentaire en plus des instructions principales de l'Assistant. Ignoré si vide.",
|
||||
"com_endpoint_prompt_prefix_placeholder": "Définir des instructions ou un contexte personnalisé. Ignoré si vide.",
|
||||
"com_endpoint_reasoning_effort": "Effort de raisonnement",
|
||||
"com_endpoint_save_as_preset": "Enregistrer comme préréglage",
|
||||
"com_endpoint_search": "Rechercher un endpoint par nom",
|
||||
"com_endpoint_search_endpoint_models": "Recherche {{0}} modèles...",
|
||||
"com_endpoint_search_models": "Recherche de modèles...",
|
||||
"com_endpoint_search_var": "Recherche {{0}}...",
|
||||
"com_endpoint_set_custom_name": "Définir un nom personnalisé, au cas où vous trouveriez ce préréglage",
|
||||
"com_endpoint_skip_hover": "Activer le saut de l'étape de complétion, qui examine la réponse finale et les étapes générées",
|
||||
"com_endpoint_stop": "Séquences d'arrêt",
|
||||
"com_endpoint_stop_placeholder": "Séparez les valeurs en appuyant sur `Entrée`",
|
||||
"com_endpoint_temperature": "Température",
|
||||
"com_endpoint_thinking": "Je réfléchi",
|
||||
"com_endpoint_thinking_budget": "Budget de réflexion",
|
||||
"com_endpoint_top_k": "Top K",
|
||||
"com_endpoint_top_p": "Top P",
|
||||
"com_endpoint_use_active_assistant": "Utiliser l'assistant actif",
|
||||
"com_error_expired_user_key": "La clé fournie pour {{0}} a expiré à {{1}}. Veuillez fournir une clé et réessayer.",
|
||||
"com_error_files_dupe": "Fichier en double détecté.",
|
||||
"com_error_files_empty": "Les fichiers vides ne sont pas autorisés",
|
||||
"com_error_files_process": "Une erreur s'est produite lors du traitement du fichier.",
|
||||
"com_error_files_unsupported_capability": "Aucune capacité activée ne prend en charge ce type de fichier.",
|
||||
"com_error_files_upload": "Une erreur s'est produite lors du téléversement du fichier",
|
||||
"com_error_files_upload_canceled": "La demande de téléversement du fichier a été annulée. Remarque : le téléversement peut être toujours en cours de traitement et devra être supprimé manuellement.",
|
||||
"com_error_files_validation": "Une erreur s'est produite lors de la validation du fichier.",
|
||||
"com_error_input_length": "Le nombre de jetons du dernier message est trop élevé et dépasse la limite autorisée ({{0}}). Veuillez raccourcir votre message, ajuster la taille maximale du contexte dans les paramètres de conversation, ou créer une nouvelle conversation pour continuer.",
|
||||
"com_error_invalid_agent_provider": "Le \"fournisseur {{0}} \" n'est pas disponible pour les agents. Veuillez vous rendre dans les paramètres de votre agent et sélectionner un fournisseur actuellement disponible.",
|
||||
"com_error_invalid_user_key": "Clé fournie non valide. Veuillez fournir une clé valide et réessayer.",
|
||||
"com_error_moderation": "Il semble que le contenu soumis ait été signalé par notre système de modération pour ne pas être conforme à nos lignes directrices communautaires. Nous ne pouvons pas procéder avec ce sujet spécifique. Si vous avez d'autres questions ou sujets que vous souhaitez explorer, veuillez modifier votre message ou créer une nouvelle conversation.",
|
||||
"com_error_no_base_url": "Aucune URL de base trouvée. Veuillez en fournir une et réessayer.",
|
||||
"com_error_no_user_key": "Aucune clé trouvée. Veuillez fournir une clé et réessayer.",
|
||||
"com_files_filter": "Filtrer les fichiers...",
|
||||
"com_files_no_results": "Aucun résultat.",
|
||||
"com_files_number_selected": "{{0}} sur {{1}} fichier(s) sélectionné(s)",
|
||||
"com_files_table": "quelquechose doit être renseigné ici. c'était vide",
|
||||
"com_generated_files": "Fichiers générés :",
|
||||
"com_hide_examples": "Masquer les exemples",
|
||||
"com_nav_2fa": "Authentification à deux facteurs (2FA)",
|
||||
"com_nav_account_settings": "Paramètres du compte",
|
||||
"com_nav_always_make_prod": "Rendre toujours les nouvelles versions en production",
|
||||
"com_nav_archive_created_at": "Créé Le",
|
||||
"com_nav_archive_name": "Nom",
|
||||
"com_nav_archived_chats": "Conversations archivées",
|
||||
"com_nav_at_command": "Commande-@",
|
||||
"com_nav_at_command_description": "Basculer la commande \"@\" pour changer d'endpoints, de modèles, de préréglages, etc.",
|
||||
"com_nav_audio_play_error": "Erreur de lecture audio : {{0}}",
|
||||
"com_nav_audio_process_error": "Erreur de traitement audio : {{0}}",
|
||||
"com_nav_auto_scroll": "Défilement automatique jusqu'au plus récent à l'ouverture",
|
||||
"com_nav_auto_send_prompts": "Envoi automatique des prompts",
|
||||
"com_nav_auto_send_text": "Envoi automatique du texte (après 3 sec)",
|
||||
"com_nav_auto_send_text_disabled": "définir sur -1 pour désactiver",
|
||||
"com_nav_auto_transcribe_audio": "Transcription audio automatique",
|
||||
"com_nav_automatic_playback": "Lecture automatique du dernier message (externe seulement)",
|
||||
"com_nav_balance": "Équilibre",
|
||||
"com_nav_browser": "Navigateur",
|
||||
"com_nav_change_picture": "Changer de photo",
|
||||
"com_nav_chat_commands": "Commandes de chat",
|
||||
"com_nav_chat_commands_info": "Ces commandes sont activées en tapant des caractères spécifiques au début de votre message. Chaque commande est déclenchée par son préfixe désigné. Vous pouvez les désactiver si vous utilisez fréquemment ces caractères pour commencer vos messages.",
|
||||
"com_nav_chat_direction": "Direction de la conversation",
|
||||
"com_nav_clear_all_chats": "Effacer toutes les conversations",
|
||||
"com_nav_clear_cache_confirm_message": "Êtes-vous sûr de vouloir vider le cache ?",
|
||||
"com_nav_clear_conversation": "Effacer les conversations",
|
||||
"com_nav_clear_conversation_confirm_message": "Êtes-vous sûr de vouloir effacer toutes les conversations ? Ceci est irréversible.",
|
||||
"com_nav_close_sidebar": "Fermer la barre latérale",
|
||||
"com_nav_commands": "Commandes",
|
||||
"com_nav_confirm_clear": "Confirmer l'effacement",
|
||||
"com_nav_conversation_mode": "Mode conversation",
|
||||
"com_nav_convo_menu_options": "Options du menu de conversation",
|
||||
"com_nav_db_sensitivity": "Sensibilité en décibels",
|
||||
"com_nav_delete_account": "Supprimer le compte",
|
||||
"com_nav_delete_account_button": "Supprimer définitivement mon compte",
|
||||
"com_nav_delete_account_confirm": "Supprimer le compte - êtes-vous sûr?",
|
||||
"com_nav_delete_account_email_placeholder": "Veuillez entrer votre courriel de compte",
|
||||
"com_nav_delete_cache_storage": "Supprimer le stockage du cache TTS",
|
||||
"com_nav_delete_data_info": "Toutes vos données seront supprimées.",
|
||||
"com_nav_delete_warning": "ATTENTION : Cela supprimera définitivement votre compte.",
|
||||
"com_nav_edit_chat_badges": "Modifier les badges de chat",
|
||||
"com_nav_enable_cache_tts": "Activer le cache TTS",
|
||||
"com_nav_enable_cloud_browser_voice": "Utiliser les voix cloud",
|
||||
"com_nav_enabled": "Activé",
|
||||
"com_nav_engine": "Moteur",
|
||||
"com_nav_enter_to_send": "Appuyez sur Entrée pour envoyer des messages",
|
||||
"com_nav_export": "Exporter",
|
||||
"com_nav_export_all_message_branches": "Exporter toutes les branches de messages",
|
||||
"com_nav_export_conversation": "Exporter la conversation",
|
||||
"com_nav_export_filename": "Nom du fichier",
|
||||
"com_nav_export_filename_placeholder": "Définir le nom du fichier",
|
||||
"com_nav_export_include_endpoint_options": "Inclure les options d'extrémité",
|
||||
"com_nav_export_recursive": "Récursif",
|
||||
"com_nav_export_recursive_or_sequential": "Récursif ou séquentiel ?",
|
||||
"com_nav_export_type": "Type",
|
||||
"com_nav_external": "Externe",
|
||||
"com_nav_font_size": "Taille de police",
|
||||
"com_nav_font_size_base": "Moyen",
|
||||
"com_nav_font_size_lg": "Grand",
|
||||
"com_nav_font_size_sm": "Petit",
|
||||
"com_nav_font_size_xl": "Très grand",
|
||||
"com_nav_font_size_xs": "Très petit",
|
||||
"com_nav_help_faq": "Aide & FAQ",
|
||||
"com_nav_hide_panel": "Masquer le panneau latéral le plus à droite",
|
||||
"com_nav_info_code_artifacts": "Active l'affichage des artéfacts de code expérimentaux à côté du chat",
|
||||
"com_nav_info_code_artifacts_agent": "Active l'utilisation d'artefacts de code pour cet agent. Par défaut, des instructions supplémentaires spécifiques à l'utilisation des artefacts sont ajoutées, à moins que le \"Mode d'invite personnalisé\" ne soit activé.",
|
||||
"com_nav_info_custom_prompt_mode": "Lorsqu'activé, le prompt système par défaut pour les artéfacts ne sera pas inclus. Toutes les instructions de génération d'artéfacts doivent être fournies manuellement dans ce mode.",
|
||||
"com_nav_info_enter_to_send": "Lorsqu'activée, appuyez sur la touche ENTRÉE pour envoyer votre message. Lorsque désactivée, appuyez sur Entrée ajoutera une nouvelle ligne, et vous devrez appuyer sur CTRL + ENTRÉE pour envoyer votre message.",
|
||||
"com_nav_info_fork_change_default": "Messages visibles uniquement, inclut uniquement le chemin direct vers le message sélectionné. Inclure les branches liées, ajoute des branches tout au long du chemin. Inclure tous depuis/jusque là, inclut tous les messages et branches connectés.",
|
||||
"com_nav_info_fork_split_target_setting": "Lorsqu'activé, le forking commencera du message cible jusqu'au dernier message de la conversation, selon le comportement sélectionné.",
|
||||
"com_nav_info_include_shadcnui": "Lorsque cette option est activée, les instructions d'utilisation des composants shadcn/ui seront incluses. shadcn/ui est une collection de composants réutilisables construits avec Radix UI et Tailwind CSS. Note : ces instructions sont détaillées, il est conseillé de ne les activer que si l'indication des importations et des composants corrects est importante pour vous. Pour plus d'informations sur ces composants, visitez : https://ui.shadcn.com/",
|
||||
"com_nav_info_latex_parsing": "Lorsqu'activé, le code LaTeX dans les messages sera rendu comme des équations mathématiques. Désactiver cela peut améliorer les performances si vous n'avez pas besoin du rendu LaTeX.",
|
||||
"com_nav_info_save_badges_state": "Lorsque cette option est activée, l'état des badges de chat est sauvegardé. Cela signifie que si vous créez une nouvelle discussion, les badges resteront dans le même état que la discussion précédente. Si vous désactivez cette option, les badges reviendront à leur état par défaut à chaque fois que vous créerez une nouvelle discussion.",
|
||||
"com_nav_info_save_draft": "Lorsqu'activé, le texte et les pièces jointes que vous entrez dans le formulaire de chat seront automatiquement sauvegardés localement sous forme de brouillons. Ces brouillons seront disponibles même si vous actualisez la page ou passez à une conversation différente. Les brouillons sont stockés localement sur votre appareil et sont supprimés une fois le message envoyé.",
|
||||
"com_nav_info_show_thinking": "Lorsque cette option est activée, le chat affiche les menus déroulants de réflexion ouverts par défaut, ce qui vous permet de voir le raisonnement de l'IA en temps réel. Lorsqu'ils sont désactivés, les menus déroulants de réflexion restent fermés par défaut, ce qui permet d'obtenir une interface plus propre et plus rationnelle.",
|
||||
"com_nav_info_user_name_display": "Lorsqu'activé, le nom d'utilisateur de l'expéditeur sera affiché au-dessus de chaque message que vous envoyez. Lorsque désactivé, vous verrez seulement \"Vous\" au-dessus de vos messages.",
|
||||
"com_nav_lang_arabic": "العربية",
|
||||
"com_nav_lang_auto": "Détection automatique",
|
||||
"com_nav_lang_brazilian_portuguese": "Português Brasileiro",
|
||||
"com_nav_lang_chinese": "中文",
|
||||
"com_nav_lang_dutch": "Nederlands",
|
||||
"com_nav_lang_english": "English",
|
||||
"com_nav_lang_estonian": "Eesti keel",
|
||||
"com_nav_lang_finnish": "Suomi",
|
||||
"com_nav_lang_french": "Français ",
|
||||
"com_nav_lang_georgian": "ქართული",
|
||||
"com_nav_lang_german": "Deutsch",
|
||||
"com_nav_lang_hebrew": "עברית",
|
||||
"com_nav_lang_indonesia": "Indonesia",
|
||||
"com_nav_lang_italian": "Italiano",
|
||||
"com_nav_lang_japanese": "日本語",
|
||||
"com_nav_lang_korean": "한국어",
|
||||
"com_nav_lang_polish": "Polski",
|
||||
"com_nav_lang_portuguese": "Português",
|
||||
"com_nav_lang_russian": "Русский",
|
||||
"com_nav_lang_spanish": "Español",
|
||||
"com_nav_lang_swedish": "Svenska",
|
||||
"com_nav_lang_thai": "ไทย",
|
||||
"com_nav_lang_traditional_chinese": "繁體中文",
|
||||
"com_nav_lang_turkish": "Türkçe",
|
||||
"com_nav_lang_vietnamese": "Tiếng Việt",
|
||||
"com_nav_language": "Langue",
|
||||
"com_nav_latex_parsing": "Analyse LaTeX dans les messages (peut affecter les performances)",
|
||||
"com_nav_log_out": "Se déconnecter",
|
||||
"com_nav_long_audio_warning": "Les textes plus longs prendront plus de temps à traiter.",
|
||||
"com_nav_maximize_chat_space": "Maximiser l'espace de discussion",
|
||||
"com_nav_modular_chat": "Activer le changement de points de terminaison en cours de conversation",
|
||||
"com_nav_my_files": "Mes fichiers",
|
||||
"com_nav_not_supported": "Non pris en charge",
|
||||
"com_nav_open_sidebar": "Ouvrir la barre latérale",
|
||||
"com_nav_playback_rate": "Taux de lecture audio",
|
||||
"com_nav_plugin_auth_error": "Une erreur s'est produite lors de la tentative d'authentification de ce plugin. Veuillez réessayer.",
|
||||
"com_nav_plugin_install": "Installer",
|
||||
"com_nav_plugin_search": "Rechercher des plugins",
|
||||
"com_nav_plugin_store": "Boutique de plugins",
|
||||
"com_nav_plugin_uninstall": "Désinstaller",
|
||||
"com_nav_plus_command": "+-Commande",
|
||||
"com_nav_plus_command_description": "Basculer la commande \"+\" pour ajouter un paramètre de réponses multiples",
|
||||
"com_nav_profile_picture": "Photo de profil",
|
||||
"com_nav_save_badges_state": "Sauvegarder l'état des badges",
|
||||
"com_nav_save_drafts": "Enregistrer les brouillons localement",
|
||||
"com_nav_scroll_button": "Défilement jusqu'à la touche de fin",
|
||||
"com_nav_search_placeholder": "Rechercher des messages",
|
||||
"com_nav_send_message": "Envoyer un message",
|
||||
"com_nav_setting_account": "Compte",
|
||||
"com_nav_setting_beta": "Fonctionnalités bêta",
|
||||
"com_nav_setting_chat": "Chat",
|
||||
"com_nav_setting_data": "Contrôles des données",
|
||||
"com_nav_setting_general": "Général",
|
||||
"com_nav_setting_speech": "Parole",
|
||||
"com_nav_settings": "Paramètres",
|
||||
"com_nav_shared_links": "Liens partagés",
|
||||
"com_nav_show_code": "Toujours afficher le code lors de l'utilisation de l'interpréteur de code",
|
||||
"com_nav_show_thinking": "Ovrir les menus déroulants de réflexion par défaut",
|
||||
"com_nav_slash_command": "/-Commande",
|
||||
"com_nav_slash_command_description": "Basculer la commande \"/\" pour sélectionner une invite via le clavier",
|
||||
"com_nav_speech_to_text": "Parole en texte",
|
||||
"com_nav_stop_generating": "Arrêter la génération",
|
||||
"com_nav_text_to_speech": "Texte en parole",
|
||||
"com_nav_theme": "Thème",
|
||||
"com_nav_theme_dark": "Sombre",
|
||||
"com_nav_theme_light": "Clair",
|
||||
"com_nav_theme_system": "Système",
|
||||
"com_nav_tool_dialog": "Outils de l'assistant",
|
||||
"com_nav_tool_dialog_agents": "Outils de l'agent",
|
||||
"com_nav_tool_dialog_description": "L'assistant doit être sauvegardé pour conserver les sélections d'outils.",
|
||||
"com_nav_tool_remove": "Supprimer",
|
||||
"com_nav_tool_search": "Outils de recherche",
|
||||
"com_nav_user": "UTILISATEUR",
|
||||
"com_nav_user_msg_markdown": "Interpréter les messages utilisateur en markdown",
|
||||
"com_nav_user_name_display": "Afficher le nom d'utilisateur dans les messages",
|
||||
"com_nav_voice_select": "Voix",
|
||||
"com_show_agent_settings": "Afficher les paramètres de l'agent",
|
||||
"com_show_completion_settings": "Afficher les paramètres de complétion",
|
||||
"com_show_examples": "Afficher les exemples",
|
||||
"com_sidepanel_agent_builder": "Constructeur d'agent",
|
||||
"com_sidepanel_assistant_builder": "Constructeur d'assistant",
|
||||
"com_sidepanel_attach_files": "Joindre des fichiers",
|
||||
"com_sidepanel_conversation_tags": "Signets",
|
||||
"com_sidepanel_hide_panel": "Masquer le panneau",
|
||||
"com_sidepanel_manage_files": "Gérer les fichiers",
|
||||
"com_sidepanel_parameters": "Paramètres",
|
||||
"com_ui_2fa_account_security": "L'authentification à deux facteurs ajoute un niveau de sécurité supplémentaire à votre compte",
|
||||
"com_ui_2fa_disable": "Désactiver l'authentification à deux facteurs (2FA)",
|
||||
"com_ui_2fa_disable_error": "Une erreur s'est produite lors de la désactivation de l'authentification à deux facteurs.",
|
||||
"com_ui_2fa_disabled": "L'authentification à deux facteurs (2FA) a été désactivé",
|
||||
"com_ui_2fa_enable": "Activer l'authentification à deux facteurs (2FA)",
|
||||
"com_ui_2fa_enabled": "L'authentification à deux facteurs (2FA) a été activée",
|
||||
"com_ui_2fa_generate_error": "Une erreur s'est produite lors de la génération des paramètres d'authentification à deux facteurs.",
|
||||
"com_ui_2fa_invalid": "Code d'authentification à deux facteurs invalide",
|
||||
"com_ui_2fa_setup": "Configuration de l'authentification à deux facteurs (2FA)",
|
||||
"com_ui_2fa_verified": "Vérification réussie de l'authentification à deux facteurs",
|
||||
"com_ui_accept": "J'accepte",
|
||||
"com_ui_add": "Ajouter",
|
||||
"com_ui_add_model_preset": "Ajouter un modèle ou un préréglage pour une réponse supplémentaire",
|
||||
"com_ui_add_multi_conversation": "Ajouter plusieurs conversations",
|
||||
"com_ui_admin": "Administrateur",
|
||||
"com_ui_admin_access_warning": "La désactivation de l'accès administrateur à cette fonctionnalité peut entraîner des problèmes d'interface imprévus nécessitant une actualisation. Une fois sauvegardé, le seul moyen de rétablir l'accès est via le paramètre d'interface dans la configuration librechat.yaml, ce qui affecte tous les rôles.",
|
||||
"com_ui_admin_settings": "Paramètres administratifs",
|
||||
"com_ui_advanced": "Avancé",
|
||||
"com_ui_advanced_settings": "Paramètres avancés",
|
||||
"com_ui_agent": "Agent",
|
||||
"com_ui_agent_chain": "Chaîne d'agents (mélange d'agents)",
|
||||
"com_ui_agent_chain_info": "Active la création des séquences d'agents. Chaque agent peut accéder aux résultats des agents précédents de la chaîne. Basé sur l'architecture \"mélange d'agents\" où les agents utilisent les résultats précédents comme information auxiliaire.",
|
||||
"com_ui_agent_chain_max": "Vous avez atteint le maximum de {{0}} d'agents.",
|
||||
"com_ui_agent_delete_error": "Une erreur s'est produite lors de la suppression de l'agent",
|
||||
"com_ui_agent_deleted": "Agent supprimé avec succès",
|
||||
"com_ui_agent_duplicate_error": "Une erreur s'est produite lors de la duplication de l'agent",
|
||||
"com_ui_agent_duplicated": "Agent dupliqué avec succès",
|
||||
"com_ui_agent_editing_allowed": "D'autres utilisateurs peuvent déjà modifier cet agent",
|
||||
"com_ui_agent_recursion_limit": "Nombre maximal d'étapes de l'agent",
|
||||
"com_ui_agent_shared_to_all": "il faut faire quelque chose ici. c'était vide",
|
||||
"com_ui_agents": "Agents",
|
||||
"com_ui_agents_allow_create": "Autoriser la création d'Agents",
|
||||
"com_ui_agents_allow_share_global": "Autoriser le partage des Agents avec tous les utilisateurs",
|
||||
"com_ui_agents_allow_use": "Autoriser l'utilisation des Agents",
|
||||
"com_ui_all": "tout",
|
||||
"com_ui_all_proper": "Tout",
|
||||
"com_ui_archive": "Archiver",
|
||||
"com_ui_archive_error": "échec de l'archivage de la conversation",
|
||||
"com_ui_artifact_click": "Cliquer pour ouvrir",
|
||||
"com_ui_artifacts": "Artefacts",
|
||||
"com_ui_artifacts_toggle": "Afficher/Masquer l'interface des artefacts",
|
||||
"com_ui_ascending": "Croissant",
|
||||
"com_ui_assistant": "Assistant",
|
||||
"com_ui_assistant_delete_error": "Une erreur s'est produite lors de la suppression de l'assistant.",
|
||||
"com_ui_assistant_deleted": "Assistant supprimé avec succès",
|
||||
"com_ui_assistants": "Assistants virtuels",
|
||||
"com_ui_assistants_output": "Sortie des assistants",
|
||||
"com_ui_attach_error": "Impossible de joindre le fichier. Créez ou sélectionnez une conversation, ou essayez d'actualiser la page.",
|
||||
"com_ui_attach_error_openai": "Impossible de joindre les fichiers de l'Assistant à d'autres points d'accès",
|
||||
"com_ui_attach_error_size": "Limite de taille de fichier dépassée pour le point de terminaison :",
|
||||
"com_ui_attach_error_type": "Type de fichier non pris en charge pour ce point d'accès :",
|
||||
"com_ui_attach_warn_endpoint": "Les fichiers non compatibles avec l'outil peuvent être ignorés",
|
||||
"com_ui_attachment": "Pièce jointe",
|
||||
"com_ui_authentication": "Authentification",
|
||||
"com_ui_avatar": "Avatar",
|
||||
"com_ui_back_to_chat": "Retour à la discussion",
|
||||
"com_ui_back_to_prompts": "Retour aux Prompts",
|
||||
"com_ui_bookmark_delete_confirm": "Êtes-vous sûr de vouloir supprimer ce signet?",
|
||||
"com_ui_bookmarks": "Signets",
|
||||
"com_ui_bookmarks_add": "Ajouter des signets",
|
||||
"com_ui_bookmarks_add_to_conversation": "Ajouter à la conversation en cours",
|
||||
"com_ui_bookmarks_count": "Nombre",
|
||||
"com_ui_bookmarks_create_error": "Une erreur est survenue lors de la création du signet",
|
||||
"com_ui_bookmarks_create_exists": "Ce signet existe déjà",
|
||||
"com_ui_bookmarks_create_success": "Signet créé avec succès",
|
||||
"com_ui_bookmarks_delete": "Supprimer le signet",
|
||||
"com_ui_bookmarks_delete_error": "Une erreur est survenue lors de la suppression du signet",
|
||||
"com_ui_bookmarks_delete_success": "Signet supprimé avec succès",
|
||||
"com_ui_bookmarks_description": "Description",
|
||||
"com_ui_bookmarks_edit": "Modifier le signet",
|
||||
"com_ui_bookmarks_filter": "Filtrer les favoris...",
|
||||
"com_ui_bookmarks_new": "Nouveau signet",
|
||||
"com_ui_bookmarks_title": "Titre",
|
||||
"com_ui_bookmarks_update_error": "Une erreur est survenue lors de la mise à jour du signet",
|
||||
"com_ui_bookmarks_update_success": "Signet mis à jour avec succès",
|
||||
"com_ui_bulk_delete_error": "Échec de la suppression des liens partagés",
|
||||
"com_ui_cancel": "Annuler",
|
||||
"com_ui_chat": "Discussion",
|
||||
"com_ui_chat_history": "Historique des discussions",
|
||||
"com_ui_clear": "Effacer",
|
||||
"com_ui_clear_all": "Tout effacer",
|
||||
"com_ui_close": "Fermer",
|
||||
"com_ui_close_menu": "Fermer le menu",
|
||||
"com_ui_code": "Code",
|
||||
"com_ui_collapse_chat": "Réduire la discussion",
|
||||
"com_ui_command_placeholder": "Facultatif : Saisissez une commande pour l'invite ou le nom sera utilisé",
|
||||
"com_ui_command_usage_placeholder": "Sélectionnez un prompt par commande ou par nom",
|
||||
"com_ui_confirm_action": "Confirmer l'action",
|
||||
"com_ui_confirm_admin_use_change": "La modification de ce paramètre bloquera l'accès aux administrateurs, y compris vous-même. Êtes-vous sûr de vouloir continuer ?",
|
||||
"com_ui_confirm_change": "Confirmer le changement",
|
||||
"com_ui_context": "Contexte",
|
||||
"com_ui_continue": "Continuer",
|
||||
"com_ui_controls": "Contrôles",
|
||||
"com_ui_copied": "Copié !",
|
||||
"com_ui_copied_to_clipboard": "Copié dans le presse-papier",
|
||||
"com_ui_copy_code": "Copier le code",
|
||||
"com_ui_copy_link": "Copier le lien",
|
||||
"com_ui_copy_to_clipboard": "Copier dans le presse-papier",
|
||||
"com_ui_create": "Créer",
|
||||
"com_ui_create_link": "Créer un lien",
|
||||
"com_ui_create_prompt": "Créer un prompt",
|
||||
"com_ui_currently_production": "En cours de production",
|
||||
"com_ui_custom_prompt_mode": "Mode de prompt personnalisé",
|
||||
"com_ui_dashboard": "Tableau de bord",
|
||||
"com_ui_date": "Date",
|
||||
"com_ui_date_april": "Avril",
|
||||
"com_ui_date_august": "Août",
|
||||
"com_ui_date_december": "Décembre",
|
||||
"com_ui_date_february": "Février",
|
||||
"com_ui_date_january": "Janvier",
|
||||
"com_ui_date_july": "Juillet",
|
||||
"com_ui_date_june": "Juin",
|
||||
"com_ui_date_march": "Mars",
|
||||
"com_ui_date_may": "Mai",
|
||||
"com_ui_date_november": "Novembre",
|
||||
"com_ui_date_october": "Octobre",
|
||||
"com_ui_date_previous_30_days": "30 derniers jours",
|
||||
"com_ui_date_previous_7_days": "7 derniers jours",
|
||||
"com_ui_date_september": "Septembre",
|
||||
"com_ui_date_today": "Aujourd'hui",
|
||||
"com_ui_date_yesterday": "Hier",
|
||||
"com_ui_decline": "Je n'accepte pas",
|
||||
"com_ui_delete": "Supprimer",
|
||||
"com_ui_delete_action": "Supprimer l'action",
|
||||
"com_ui_delete_action_confirm": "Êtes-vous sûr de vouloir supprimer cette action ?",
|
||||
"com_ui_delete_agent_confirm": "Êtes-vous sûr de vouloir supprimer cet agent ?",
|
||||
"com_ui_delete_assistant_confirm": "Êtes-vous sûr de vouloir supprimer cet Assistant ? Cette action est irréversible.",
|
||||
"com_ui_delete_confirm": "Cela supprimera",
|
||||
"com_ui_delete_confirm_prompt_version_var": "Cela supprimera la version sélectionnée pour \"{{0}}.\" S'il n'existe aucune autre version, le prompt sera supprimé.",
|
||||
"com_ui_delete_conversation": "Supprimer la discussion?",
|
||||
"com_ui_delete_prompt": "Supprimer le Prompt?",
|
||||
"com_ui_delete_shared_link": "Supprimer le lien partagé ?",
|
||||
"com_ui_delete_tool": "Supprimer l'outil",
|
||||
"com_ui_delete_tool_confirm": "Êtes-vous sûr de vouloir supprimer cet outil ?",
|
||||
"com_ui_descending": "Décroissant",
|
||||
"com_ui_description": "Description",
|
||||
"com_ui_description_placeholder": "Optionnel : Entrez une description à afficher dans le prompt",
|
||||
"com_ui_download": "Télécharger",
|
||||
"com_ui_download_error": "Erreur lors du téléchargement du fichier. Le fichier a peut-être été supprimé.",
|
||||
"com_ui_dropdown_variables": "Variables déroulantes :",
|
||||
"com_ui_dropdown_variables_info": "Créez des menus déroulants personnalisés pour vos prompts : `{{nom_variable:option1|option2|option3}}`",
|
||||
"com_ui_duplicate": "Dupliquer",
|
||||
"com_ui_duplication_error": "Une erreur s'est produite lors de la duplication de la conversation",
|
||||
"com_ui_duplication_processing": "Duplication de la conversation en cours...",
|
||||
"com_ui_duplication_success": "Conversation dupliquée avec succès",
|
||||
"com_ui_edit": "Modifier",
|
||||
"com_ui_endpoint": "Point de terminaison",
|
||||
"com_ui_endpoint_menu": "Menu des points de terminaison LLM",
|
||||
"com_ui_enter": "Entrer",
|
||||
"com_ui_enter_api_key": "Saisir la clé API",
|
||||
"com_ui_enter_openapi_schema": "Saisissez votre schéma OpenAPI ici",
|
||||
"com_ui_error": "Erreur",
|
||||
"com_ui_error_connection": "Erreur de connexion au serveur, essayez de rafraîchir la page.",
|
||||
"com_ui_error_save_admin_settings": "Une erreur est survenue lors de la sauvegarde de vos paramètres administratifs.",
|
||||
"com_ui_examples": "Exemples",
|
||||
"com_ui_export_convo_modal": "Exporter la conversation",
|
||||
"com_ui_field_required": "Ce champ est obligatoire",
|
||||
"com_ui_filter_prompts_name": "Filtrer les prompts par nom",
|
||||
"com_ui_fork": "Bifurquer",
|
||||
"com_ui_fork_all_target": "Inclure tout à partir d'ici",
|
||||
"com_ui_fork_branches": "Inclure les branches associées",
|
||||
"com_ui_fork_change_default": "Option de fourche par défaut",
|
||||
"com_ui_fork_default": "Utiliser l'option de fourche par défaut",
|
||||
"com_ui_fork_error": "Une erreur s'est produite lors du dédoublement de la conversation",
|
||||
"com_ui_fork_from_message": "Sélectionner une option de bifurcation",
|
||||
"com_ui_fork_info_1": "Utilisez ce paramètre pour créer une bifurcation des messages avec le comportement souhaité.",
|
||||
"com_ui_fork_info_2": "\"Forker\" fait référence à la création d'une nouvelle conversation qui commence/se termine à partir de messages spécifiques dans la conversation actuelle, en créant une copie selon les options sélectionnées.",
|
||||
"com_ui_fork_info_3": "Le terme \"message cible\" fait référence soit au message à partir duquel cette fenêtre contextuelle a été ouverte, soit, si vous cochez \"{{0}}\", au dernier message de la conversation.",
|
||||
"com_ui_fork_info_branches": "Cette option divise les messages visibles, ainsi que les branches associées ; en d'autres termes, le chemin direct vers le message cible, y compris les branches le long du chemin.",
|
||||
"com_ui_fork_info_remember": "Cochez cette case pour mémoriser les options que vous sélectionnez pour une utilisation future, ce qui vous permettra de bifurquer plus rapidement les conversations selon vos préférences.",
|
||||
"com_ui_fork_info_start": "Si cette option est cochée, le fork commencera à partir de ce message jusqu'au dernier message de la conversation, selon le comportement sélectionné ci-dessus.",
|
||||
"com_ui_fork_info_target": "Cette option divise tous les messages menant au message cible, y compris ses voisins ; en d'autres termes, toutes les branches de messages, qu'elles soient visibles ou non et quel que soit leur chemin, sont incluses.",
|
||||
"com_ui_fork_info_visible": "Cette option permet de diviser uniquement les messages visibles ; en d'autres termes, le chemin direct vers le message cible, sans aucune branche.",
|
||||
"com_ui_fork_processing": "Bifurquer la conversation...",
|
||||
"com_ui_fork_remember": "Se souvenir",
|
||||
"com_ui_fork_remember_checked": "Votre sélection sera mémorisée après utilisation. Vous pouvez la modifier à tout moment dans les paramètres.",
|
||||
"com_ui_fork_split_target": "Démarrer la bifurcation ici",
|
||||
"com_ui_fork_split_target_setting": "Démarrer la bifurcation à partir du message cible par défaut",
|
||||
"com_ui_fork_success": "Conversation bifurquée avec succès",
|
||||
"com_ui_fork_visible": "Messages visibles uniquement",
|
||||
"com_ui_go_back": "Retourner",
|
||||
"com_ui_go_to_conversation": "Aller à la conversation",
|
||||
"com_ui_happy_birthday": "C'est mon premier anniversaire !",
|
||||
"com_ui_hide_qr": "Cacher le code QR",
|
||||
"com_ui_host": "Hôte",
|
||||
"com_ui_image_gen": "Génération d'image",
|
||||
"com_ui_import_conversation_error": "Une erreur s'est produite lors de l'importation de vos conversations",
|
||||
"com_ui_import_conversation_file_type_error": "Type de fichier non pris en charge pour l'importation",
|
||||
"com_ui_import_conversation_info": "Importer des conversations à partir d'un fichier JSON",
|
||||
"com_ui_import_conversation_success": "Conversations importées avec succès",
|
||||
"com_ui_include_shadcnui": "Inclure les instructions des composants shadcn/ui",
|
||||
"com_ui_input": "Entrée",
|
||||
"com_ui_instructions": "Instructions",
|
||||
"com_ui_latest_footer": "Chaque IA pour tout le monde.",
|
||||
"com_ui_latest_production_version": "Dernière version de production",
|
||||
"com_ui_latest_version": "Dernière version",
|
||||
"com_ui_librechat_code_api_key": "Obtenir votre clé API pour l'interpréteur de code LibreChat",
|
||||
"com_ui_librechat_code_api_subtitle": "Sécurisé. Multilingue. Fichiers d'entrée/sortie.",
|
||||
"com_ui_librechat_code_api_title": "Exécuter le code IA",
|
||||
"com_ui_locked": "Verrouillé",
|
||||
"com_ui_logo": "Logo {{0}}",
|
||||
"com_ui_manage": "Gérer",
|
||||
"com_ui_max_tags": "Le nombre maximum autorisé est {{0}}, en utilisant les dernières valeurs.",
|
||||
"com_ui_mention": "Mentionnez un point de terminaison, un assistant ou un préréglage pour basculer rapidement vers celui-ci",
|
||||
"com_ui_min_tags": "Impossible de supprimer plus de valeurs, un minimum de {{0}} est requis.",
|
||||
"com_ui_model": "Modèle",
|
||||
"com_ui_model_parameters": "Paramètres du modèle",
|
||||
"com_ui_more_info": "Plus d'informations",
|
||||
"com_ui_my_prompts": "Mes Prompts",
|
||||
"com_ui_name": "Nom",
|
||||
"com_ui_new_chat": "Nouvelle conversation",
|
||||
"com_ui_next": "Suivant",
|
||||
"com_ui_no": "Non",
|
||||
"com_ui_no_bookmarks": "Il semble que vous n'ayez pas encore de favoris. Cliquez sur une discussion pour en ajouter un",
|
||||
"com_ui_no_category": "Aucune catégorie",
|
||||
"com_ui_no_changes": "Aucune modification à mettre à jour",
|
||||
"com_ui_no_terms_content": "Aucun contenu de conditions d'utilisation à afficher",
|
||||
"com_ui_nothing_found": "Aucun résultat trouvé",
|
||||
"com_ui_of": "des",
|
||||
"com_ui_off": "Désactivé",
|
||||
"com_ui_on": "Activé",
|
||||
"com_ui_page": "Page",
|
||||
"com_ui_prev": "Précédent",
|
||||
"com_ui_preview": "Aperçu",
|
||||
"com_ui_privacy_policy": "Politique de confidentialité",
|
||||
"com_ui_privacy_policy_url": "URL de la politique de confidentialité",
|
||||
"com_ui_prompt": "Prompt",
|
||||
"com_ui_prompt_already_shared_to_all": "Ce prompt est déjà partagé à tous les utilisateurs",
|
||||
"com_ui_prompt_name": "Nom du Prompt",
|
||||
"com_ui_prompt_name_required": "Un nom pour le Prompt est requis",
|
||||
"com_ui_prompt_preview_not_shared": "L'auteur n'a pas autorisé la collaboration pour ce prompt.",
|
||||
"com_ui_prompt_text": "Texte",
|
||||
"com_ui_prompt_text_required": "Un texte est requis",
|
||||
"com_ui_prompt_update_error": "Une erreur s'est produite lors de la mise à jour du prompt",
|
||||
"com_ui_prompts": "Prompts",
|
||||
"com_ui_prompts_allow_create": "Autoriser la création de Prompts",
|
||||
"com_ui_prompts_allow_share_global": "Autoriser le partage des Prompts à tous les utilisateurs",
|
||||
"com_ui_prompts_allow_use": "Autoriser l'utilisation de Prompts",
|
||||
"com_ui_provider": "Fournisseur",
|
||||
"com_ui_read_aloud": "Lire à haute voix",
|
||||
"com_ui_regenerate": "Régénérer",
|
||||
"com_ui_region": "Région",
|
||||
"com_ui_rename": "Renommer",
|
||||
"com_ui_reset_var": "Réinitialiser {{0}}",
|
||||
"com_ui_result": "Résultat",
|
||||
"com_ui_revoke": "Révoquer",
|
||||
"com_ui_revoke_info": "Révoquer toutes les informations d'identification fournies par l'utilisateur",
|
||||
"com_ui_revoke_key_confirm": "Êtes-vous sûr de vouloir révoquer cette clé ?",
|
||||
"com_ui_revoke_key_endpoint": "Révoquer la clé pour {{0}}",
|
||||
"com_ui_revoke_keys": "Révoquer les clés",
|
||||
"com_ui_revoke_keys_confirm": "Êtes-vous sûr de vouloir révoquer toutes les clés ?",
|
||||
"com_ui_role_select": "Sélectionner un rôle",
|
||||
"com_ui_run_code": "Exécuter le code",
|
||||
"com_ui_run_code_error": "Une erreur s'est produite lors de l'exécution du code",
|
||||
"com_ui_save": "Sauvegarder",
|
||||
"com_ui_save_submit": "Enregistrer et Soumettre",
|
||||
"com_ui_saved": "Enregistré!",
|
||||
"com_ui_schema": "Schéma",
|
||||
"com_ui_select": "Sélectionner",
|
||||
"com_ui_select_file": "Sélectionner un fichier",
|
||||
"com_ui_select_model": "Sélectionner un modèle",
|
||||
"com_ui_select_provider": "Sélectionner un fournisseur",
|
||||
"com_ui_select_provider_first": "Sélectionnez d'abord un fournisseur",
|
||||
"com_ui_select_region": "Sélectionner une région",
|
||||
"com_ui_select_search_model": "Rechercher un modèle par nom",
|
||||
"com_ui_select_search_plugin": "Rechercher un plugin par nom",
|
||||
"com_ui_select_search_provider": "Rechercher un fournisseur par nom",
|
||||
"com_ui_select_search_region": "Rechercher une région par nom",
|
||||
"com_ui_share": "Partager",
|
||||
"com_ui_share_create_message": "Votre nom et tout message que vous ajoutez après le partage restent privés.",
|
||||
"com_ui_share_delete_error": "Une erreur est survenue lors de la suppression du lien partagé.",
|
||||
"com_ui_share_error": "Une erreur est survenue lors du partage du lien de la discussion",
|
||||
"com_ui_share_link_to_chat": "Partager le lien de la discussion",
|
||||
"com_ui_share_to_all_users": "Partager à tous les utilisateurs",
|
||||
"com_ui_share_update_message": "Votre nom, les instructions personnalisées et tout message que vous ajoutez après le partage restent privés.",
|
||||
"com_ui_share_var": "Partager {{0}}",
|
||||
"com_ui_shared_link_not_found": "Lien partagé introuvable",
|
||||
"com_ui_shared_prompts": "Prompts partagés",
|
||||
"com_ui_show_all": "Tout afficher",
|
||||
"com_ui_simple": "Simple",
|
||||
"com_ui_size": "Taille",
|
||||
"com_ui_special_variables": "Variables spéciales : Utilisez {{current_date}} pour la date actuelle, et {{current_user}} pour le nom de votre compte donné.",
|
||||
"com_ui_speech_while_submitting": "Impossible de soumettre un message vocal pendant la génération d'une réponse",
|
||||
"com_ui_stop": "Arrêt ",
|
||||
"com_ui_storage": "Stockage",
|
||||
"com_ui_submit": "Soumettre",
|
||||
"com_ui_terms_and_conditions": "Conditions d'utilisation",
|
||||
"com_ui_terms_of_service": "Conditions d'utilisation",
|
||||
"com_ui_tools": "Outils",
|
||||
"com_ui_unarchive": "Désarchiver",
|
||||
"com_ui_unarchive_error": "Échec du désarchivage de la conversation",
|
||||
"com_ui_unknown": "Inconnu",
|
||||
"com_ui_update": "Mettre à jour",
|
||||
"com_ui_upload": "Téléverser",
|
||||
"com_ui_upload_code_files": "Téléverser pour l'Interpréteur de Code",
|
||||
"com_ui_upload_delay": "Le téléversement de \"{{0}}\" prend plus de temps que prévu. Veuillez patienter pendant que le fichier termine son indexation pour la récupération.",
|
||||
"com_ui_upload_error": "Une erreur s'est produite lors du téléversement de votre fichier",
|
||||
"com_ui_upload_file_search": "Téléverser pour la recherche de fichiers",
|
||||
"com_ui_upload_files": "Téléverser des fichiers",
|
||||
"com_ui_upload_image": "Téléverser une image",
|
||||
"com_ui_upload_image_input": "Téléverser une image",
|
||||
"com_ui_upload_invalid": "Fichier non valide pour le téléchargement. L'image ne doit pas dépasser la limite",
|
||||
"com_ui_upload_invalid_var": "Fichier non valide pour le téléchargement. L'image ne doit pas dépasser {{0}} Mo",
|
||||
"com_ui_upload_success": "Fichier téléversé avec succès",
|
||||
"com_ui_upload_type": "Sélectionner le type de téléversement",
|
||||
"com_ui_use_micrphone": "Utiliser le microphone",
|
||||
"com_ui_use_prompt": "Utiliser le prompt",
|
||||
"com_ui_variables": "Variables",
|
||||
"com_ui_variables_info": "Utilisez des doubles accolades dans votre texte pour créer des variables, par exemple {{exemple de variable}}, à remplir ultérieurement lors de l'utilisation du prompt.",
|
||||
"com_ui_version_var": "Version {{0}}",
|
||||
"com_ui_versions": "Versions",
|
||||
"com_ui_yes": "Oui",
|
||||
"com_ui_zoom": "Zoom",
|
||||
"com_user_message": "Vous",
|
||||
"com_warning_resubmit_unsupported": "La resoumission du message IA n'est pas prise en charge pour ce point de terminaison."
|
||||
}
|
||||
868
packages/client/src/locales/he/translation.json
Normal file
868
packages/client/src/locales/he/translation.json
Normal file
|
|
@ -0,0 +1,868 @@
|
|||
{
|
||||
"chat_direction_left_to_right": "חייב להיות כאן תוכן, אין אפשרות להשאיר ריק",
|
||||
"chat_direction_right_to_left": "חייב להיות כאן תוכן, אין אפשרות להשאיר ריק",
|
||||
"com_a11y_ai_composing": "הבינה המלאכותית (AI) עדיין יוצרת",
|
||||
"com_a11y_end": "הבינה המלאכותית (AI) סיימה להשיב.",
|
||||
"com_a11y_start": "הבינה המלאכותית (AI) מתחילה להשיב.",
|
||||
"com_agents_allow_editing": "אפשר למשתמשים אחרים לערוך את הסוכן שלך",
|
||||
"com_agents_by_librechat": "על ידי LibreChat",
|
||||
"com_agents_code_interpreter": "כאשר מופעל, מאפשר לסוכן שלך למנף את ה-API של מפענח הקוד כדי להריץ את הקוד שנוצר, כולל עיבוד קבצים, בצורה מאובטחת. דורש מפתח API חוקי.",
|
||||
"com_agents_code_interpreter_title": "מפענח קוד API",
|
||||
"com_agents_create_error": "אירעה שגיאה ביצירת הסוכן שלך.",
|
||||
"com_agents_description_placeholder": "אופציונלי: תאר את הסוכן שלך כאן",
|
||||
"com_agents_enable_file_search": "אפשר חיפוש בקבצים",
|
||||
"com_agents_file_context": "קבצי הקשר (OCR)",
|
||||
"com_agents_file_context_disabled": "יש ליצור סוכן לפני שמעלים קבצים עבור הקשר קבצים",
|
||||
"com_agents_file_context_info": "קבצים שהועלו כ\"הקשר\" מעובדים באמצעות OCR (זיהוי אופטי של תווים) כדי להפיק טקסט אשר לאחר מכן מתווסף להוראות הסוכן. אידיאלי עבור מסמכים, תמונות עם טקסט או קובצי PDF בהם אתה צריך את התוכן הטקסטואלי המלא של הקובץ.",
|
||||
"com_agents_file_search_disabled": "יש ליצור את הסוכן לפני העלאת קבצים לחיפוש",
|
||||
"com_agents_file_search_info": "כאשר הסוכן מופעל הוא יקבל מידע על שמות הקבצים המפורטים להלן, כדי שהוא יוכל לאחזר את הקשר רלוונטי.",
|
||||
"com_agents_instructions_placeholder": "הוראות המערכת שבהן ישתמש הסוכן",
|
||||
"com_agents_missing_provider_model": "אנא בחר את הספק ואת הדגם לפני יצירת הסוכן.",
|
||||
"com_agents_name_placeholder": "אופציונלי: שם הסוכן",
|
||||
"com_agents_no_access": "אין לך גישה לערוך את הסוכן הזה.",
|
||||
"com_agents_not_available": "הסוכן לא זמין",
|
||||
"com_agents_search_name": "חפש סוכן לפי שם",
|
||||
"com_agents_update_error": "אירעה שגיאה בעדכון הסוכן שלך.",
|
||||
"com_assistants_action_attempt": "הסוכן מעוניין לתקשר עם {{0}}",
|
||||
"com_assistants_actions": "פעולות",
|
||||
"com_assistants_actions_disabled": "עליך ליצור סייען לפני הוספת פעולות.",
|
||||
"com_assistants_actions_info": "אפשר לסייען לאחזר מידע או לבצע פעולות באמצעות API",
|
||||
"com_assistants_add_actions": "הוסף פעולות",
|
||||
"com_assistants_add_tools": "הוסף כלים",
|
||||
"com_assistants_allow_sites_you_trust": "אפשר רק אתרים שאתה סומך עליהם.",
|
||||
"com_assistants_append_date": "הוסף תאריך ושעה נוכחיים",
|
||||
"com_assistants_append_date_tooltip": "כשמופעל, תאריך ושעה נוכחיים של הלקוח יוספים להוראות מערכת הסייען.",
|
||||
"com_assistants_attempt_info": "הסייען רוצה לשלוח את הדברים הבאים:",
|
||||
"com_assistants_available_actions": "פעולות זמינות",
|
||||
"com_assistants_capabilities": "יכולות",
|
||||
"com_assistants_code_interpreter": "מפענח קוד",
|
||||
"com_assistants_code_interpreter_files": "הקבצים הבאים זמינים רק עבור מפענח קוד:",
|
||||
"com_assistants_code_interpreter_info": "מתורגמן קוד מאפשר לסייען לכתוב ולהריץ קוד. כלי זה יכול לעבד קבצים עם נתונים ועיצוב מגוונים, וליצור קבצים כגון גרפים.",
|
||||
"com_assistants_completed_action": "תקשר עם {{0}}",
|
||||
"com_assistants_completed_function": "מריץ {{0}}",
|
||||
"com_assistants_conversation_starters": "התחלות שיחה",
|
||||
"com_assistants_conversation_starters_placeholder": "הכנס פתיח לשיחה",
|
||||
"com_assistants_create_error": "אירעה שגיאה ביצירת הסייען שלך.",
|
||||
"com_assistants_create_success": "נוצר בהצלחה",
|
||||
"com_assistants_delete_actions_error": "אירעה שגיאה במחיקת הפעולה.",
|
||||
"com_assistants_delete_actions_success": "הפעולה נמחקה בהצלחה מהסייען",
|
||||
"com_assistants_description_placeholder": "אופציונלי: תאר את הסייען שלך כאן",
|
||||
"com_assistants_domain_info": "הסייען שלח את המידע ל{{0}}",
|
||||
"com_assistants_file_search": "חיפוש קבצים",
|
||||
"com_assistants_file_search_info": "חיפוש קבצים מאפשר לסייען לקבל ידע מהקבצים שאתה או המשתמשים שלך מעלים. לאחר העלאת קובץ, העוזר מחליט באופן אוטומטי מתי לאחזר תוכן על סמך בקשות המשתמש. אין תמיכה בצירוף מאגרי וקטורים לחיפוש קבצים. אתה יכול לצרף אותם ממגרש החול או לצרף קבצים להודעות לחיפוש קבצים על בסיס שרשור.",
|
||||
"com_assistants_function_use": "הסייען השתמש ב{{0}}",
|
||||
"com_assistants_image_vision": "מציג תמונות",
|
||||
"com_assistants_instructions_placeholder": "הוראות המערכת שהסייען משתמש בהן",
|
||||
"com_assistants_knowledge": "ידע",
|
||||
"com_assistants_knowledge_disabled": "יש ליצור סייען, ויש להפעיל ולשמור את מתורגמן קוד או אחזור לפני העלאת קבצים כ-ידע.",
|
||||
"com_assistants_knowledge_info": "אם אתה מעלה קבצים תחת ידע, שיחות עם ה-סייען שלך עשויות לכלול תוכן מהקובץ.",
|
||||
"com_assistants_max_starters_reached": "הגעת למספר המקסימלי של תווים לפתיח לשיחות",
|
||||
"com_assistants_name_placeholder": "אופציונלי: שם הסייען",
|
||||
"com_assistants_non_retrieval_model": "חיפוש בקבצים אינו מופעל במודל הזה. אנא בחר מודל אחר",
|
||||
"com_assistants_retrieval": "אחזור",
|
||||
"com_assistants_running_action": "פעולות ריצה",
|
||||
"com_assistants_search_name": "חפש סייען לפי שם",
|
||||
"com_assistants_update_actions_error": "אירעה שגיאה ביצירה או העדכון של הפעולה.",
|
||||
"com_assistants_update_actions_success": "הפעולה נוצרה או עודכנה בהצלחה",
|
||||
"com_assistants_update_error": "אירעה שגיאה בעדכון הסייען שלך.",
|
||||
"com_assistants_update_success": "עודכן בהצלחה",
|
||||
"com_auth_already_have_account": "כבר יש לך חשבון?",
|
||||
"com_auth_apple_login": "היכנס באמצעות חשבון אפל",
|
||||
"com_auth_back_to_login": "חזור להתחברות",
|
||||
"com_auth_click": "קליק",
|
||||
"com_auth_click_here": "לחץ כאן",
|
||||
"com_auth_continue": "המשך",
|
||||
"com_auth_create_account": "צור את החשבון שלך",
|
||||
"com_auth_discord_login": "המשך עם Discord",
|
||||
"com_auth_email": "אימייל (דוא\"ל)",
|
||||
"com_auth_email_address": "כתובת דואר אלקטרוני",
|
||||
"com_auth_email_max_length": "אימייל (דוא\"ל) לא יכול להיות ארוך מ-120 תווים",
|
||||
"com_auth_email_min_length": "אימייל (דוא\"ל) חייב להיות בן 6 תווים לפחות",
|
||||
"com_auth_email_pattern": "עליך להזין כתובת אימייל (דוא\"ל) חוקית",
|
||||
"com_auth_email_required": "נדרש דוא\"ל",
|
||||
"com_auth_email_resend_link": "שלח שוב דוא\"ל",
|
||||
"com_auth_email_resent_failed": "נכשלה שליחת דוא\"ל לאימות מחדש",
|
||||
"com_auth_email_resent_success": "דוא\"ל לאימות נשלח שוב בהצלחה",
|
||||
"com_auth_email_verification_failed": "אימות הדוא\"ל נכשל",
|
||||
"com_auth_email_verification_failed_token_missing": "האימות נכשל, חסר טוקן",
|
||||
"com_auth_email_verification_in_progress": "מאמת את הדוא\"ל שלך, אנא המתן",
|
||||
"com_auth_email_verification_invalid": "אימות הדוא\"ל נכשל",
|
||||
"com_auth_email_verification_redirecting": "מפנה מחדש בעוד {{0}} שניות...",
|
||||
"com_auth_email_verification_resend_prompt": "לא קיבלת את הדוא\"ל?",
|
||||
"com_auth_email_verification_success": "הדוא\"ל אומת בהצלחה",
|
||||
"com_auth_email_verifying_ellipsis": "מאמת...",
|
||||
"com_auth_error_create": "אירעה שגיאה בניסיון לרשום את החשבון שלך. בבקשה נסה שוב.",
|
||||
"com_auth_error_invalid_reset_token": "אסימון איפוס הסיסמה הזה אינו תקף עוד.",
|
||||
"com_auth_error_login": "לא ניתן להתחבר עם המידע שסופק. אנא בדוק את האישורים שלך ונסה שוב.",
|
||||
"com_auth_error_login_ban": "החשבון שלך נחסם באופן זמני עקב הפרות של השירות שלנו.",
|
||||
"com_auth_error_login_rl": "יותר מדי ניסיונות כניסה בזמן קצר. בבקשה נסה שוב מאוחר יותר.",
|
||||
"com_auth_error_login_server": "הייתה שגיאת שרת פנימית. אנא המתן מספר רגעים ונסה שוב.",
|
||||
"com_auth_error_login_unverified": "הדוא\"ל שלך לא אומת. אנא חפש בדוא\"ל שלך קישור לאימות.",
|
||||
"com_auth_facebook_login": "המשך עם פייסבוק",
|
||||
"com_auth_full_name": "שם מלא",
|
||||
"com_auth_github_login": "המשך עם Github",
|
||||
"com_auth_google_login": "המשך עם Google",
|
||||
"com_auth_here": "כאן",
|
||||
"com_auth_login": "התחבר",
|
||||
"com_auth_login_with_new_password": "עכשיו אתה יכול להתחבר עם הסיסמה החדשה שלך.",
|
||||
"com_auth_name_max_length": "השם חייב להיות פחות מ-80 תווים",
|
||||
"com_auth_name_min_length": "השם חייב להיות לפחות 3 תווים",
|
||||
"com_auth_name_required": "נדרש שם",
|
||||
"com_auth_no_account": "אין לך חשבון?",
|
||||
"com_auth_password": "סיסמה",
|
||||
"com_auth_password_confirm": "אשר סיסמה",
|
||||
"com_auth_password_forgot": "שכחת את הסיסמה?",
|
||||
"com_auth_password_max_length": "הסיסמה חייבת להיות פחות מ-128 תווים",
|
||||
"com_auth_password_min_length": "הסיסמה חייבת להיות בת 8 תווים לפחות",
|
||||
"com_auth_password_not_match": "הסיסמאות אינן תואמות",
|
||||
"com_auth_password_required": "נדרשת סיסמה",
|
||||
"com_auth_registration_success_generic": "אנא בדוק את הדוא\"ל שלך כדי לאמת את כתובת הדוא\"ל שלך.",
|
||||
"com_auth_registration_success_insecure": "ההרשמה הצליחה",
|
||||
"com_auth_reset_password": "אפס את הסיסמה שלך",
|
||||
"com_auth_reset_password_if_email_exists": "אם קיים חשבון עם דוא\"ל זה, נשלח דוא\"ל עם הוראות לאיפוס סיסמה. אנא הקפד לבדוק גם בתיקיית הספאם שלך.",
|
||||
"com_auth_reset_password_link_sent": "אימייל (דוא\"ל) נשלח",
|
||||
"com_auth_reset_password_success": "איפוס סיסמה הצליח",
|
||||
"com_auth_sign_in": "כניסה",
|
||||
"com_auth_sign_up": "הירשם",
|
||||
"com_auth_submit_registration": "שלח רישום",
|
||||
"com_auth_to_reset_your_password": "כדי לאפס את הסיסמה שלך.",
|
||||
"com_auth_to_try_again": "כדי לנסות שוב.",
|
||||
"com_auth_two_factor": "בדוק את יישום הסיסמה החד-פעמית שלך לקבלת קוד",
|
||||
"com_auth_username": "שם משתמש (אופציונלי)",
|
||||
"com_auth_username_max_length": "שם המשתמש חייב להיות פחות מ-20 תווים",
|
||||
"com_auth_username_min_length": "שם משתמש חייב להיות לפחות 2 תווים",
|
||||
"com_auth_verify_your_identity": "אמת את הזהות שלך",
|
||||
"com_auth_welcome_back": "ברוכים הבאים",
|
||||
"com_click_to_download": "(לחץ כאן להורדה)",
|
||||
"com_download_expired": "(פג תוקף ההורדה)",
|
||||
"com_download_expires": "(לחץ כאן כדי להוריד - יפוג בעוד {{0}}) ",
|
||||
"com_endpoint": "נקודת קצה",
|
||||
"com_endpoint_agent": "סוכן",
|
||||
"com_endpoint_agent_model": "מודל סוכן (מומלץ: GPT-3.5)",
|
||||
"com_endpoint_agent_placeholder": "אנא בחר סוכן",
|
||||
"com_endpoint_ai": "בינה מלאכותית",
|
||||
"com_endpoint_anthropic_maxoutputtokens": "מספר האסימונים המרבי שניתן להפיק בתגובה. ציין ערך נמוך יותר עבור תגובות קצרות יותר וערך גבוה יותר עבור תגובות ארוכות יותר.",
|
||||
"com_endpoint_anthropic_prompt_cache": "שמירת מטמון מהירה מאפשרת שימוש חוזר בהקשר גדול או בהוראות בקריאות API, תוך הפחתת העלויות וההשהייה",
|
||||
"com_endpoint_anthropic_temp": "נע בין 0 ל-1. השתמש בטמפ' הקרובה יותר ל-0 עבור בחירה אנליטית / מרובה, וקרוב יותר ל-1 עבור משימות יצירתיות ויצירתיות. אנו ממליצים לשנות את זה או את Top P אבל לא את שניהם.",
|
||||
"com_endpoint_anthropic_thinking": "מאפשר חשיבה פנימית עבור דגמי Claude נתמכים (3.7 Sonnet). הערה: דורש שההגדרה של 'תקציב חשיבה' תהיה נמוכה מ'מקסימום טוקנים לפלט'",
|
||||
"com_endpoint_anthropic_thinking_budget": "קובע את מספר הטוקנים המקסימלי שקלוד רשאי להשתמש בו עבור תהליך החשיבה הפנימי. תקציב גבוה יותר עשוי לשפר את איכות התשובה על ידי מתן אפשרות לניתוח מעמיק יותר של בעיות מורכבות, אם כי קלוד לא בהכרח ישתמש בכל התקציב שהוקצה, במיוחד בטווחים שמעל 32K. הגדרה זו חייבת להיות נמוכה מ'מקסימום טוקנים לפלט'.",
|
||||
"com_endpoint_anthropic_topk": "Top-k משנה את האופן שבו המודל בוחר אסימונים לפלט. Top-k של 1 פירושו שהאסימון שנבחר הוא הסביר ביותר מבין כל האסימונים באוצר המילים של הדגם (נקרא גם פענוח חמדן), בעוד ש-top-k של 3 פירושו שהאסימון הבא נבחר מבין 3 הכי הרבה. אסימונים סבירים (באמצעות טמפרטורה).",
|
||||
"com_endpoint_anthropic_topp": "Top-p משנה את האופן שבו המודל בוחר אסימונים לפלט. אסימונים נבחרים מבין רוב K (ראה פרמטר topK) הסביר לפחות עד שסכום ההסתברויות שלהם שווה לערך העליון-p.",
|
||||
"com_endpoint_assistant": "סייען",
|
||||
"com_endpoint_assistant_model": "מודל סייען",
|
||||
"com_endpoint_assistant_placeholder": "אנא בחר סייען מלוח הצד הימני",
|
||||
"com_endpoint_completion": "השלמה",
|
||||
"com_endpoint_completion_model": "מודל השלמה (מומלץ: GPT-4)",
|
||||
"com_endpoint_config_click_here": "לחץ כאן",
|
||||
"com_endpoint_config_google_api_info": "כדי לקבל את מפתח ה-API של Generative Language (עבור תאומים),",
|
||||
"com_endpoint_config_google_api_key": "מפתח Google API",
|
||||
"com_endpoint_config_google_cloud_platform": "(מ-Google Cloud Platform)",
|
||||
"com_endpoint_config_google_gemini_api": "(Gemini API)",
|
||||
"com_endpoint_config_google_service_key": "מפתח חשבון שירות Google",
|
||||
"com_endpoint_config_key": "הגדר מפתח API",
|
||||
"com_endpoint_config_key_encryption": "המפתח שלך יוצפן וימחק ב",
|
||||
"com_endpoint_config_key_for": "הגדר מפתח API עבור",
|
||||
"com_endpoint_config_key_google_need_to": "אתה צריך",
|
||||
"com_endpoint_config_key_google_service_account": "צור חשבון שירות",
|
||||
"com_endpoint_config_key_google_vertex_ai": "הפעל את Vertex AI",
|
||||
"com_endpoint_config_key_google_vertex_api": "API ב-Google Cloud, אז",
|
||||
"com_endpoint_config_key_google_vertex_api_role": "הקפד ללחוץ על 'צור והמשך' כדי לתת לפחות את התפקיד 'Vertex AI User'. לבסוף, צור מפתח JSON לייבא לכאן.",
|
||||
"com_endpoint_config_key_import_json_key": "ייבוא מפתח JSON של חשבון שירות.",
|
||||
"com_endpoint_config_key_import_json_key_invalid": "מפתח JSON חשבון שירות לא חוקי, האם ייבאת את הקובץ הנכון?",
|
||||
"com_endpoint_config_key_import_json_key_success": "מפתח JSON של חשבון שירות יובא בהצלחה",
|
||||
"com_endpoint_config_key_name": "מפתח",
|
||||
"com_endpoint_config_key_never_expires": "המפתח שלך לא יפוג לעולם",
|
||||
"com_endpoint_config_placeholder": "הגדר את המפתח שלך בתפריט הכותרת לצאט.",
|
||||
"com_endpoint_config_value": "הזן ערך עבור",
|
||||
"com_endpoint_context": "הקשר",
|
||||
"com_endpoint_context_info": "המספר המרבי של הטוקנים שניתן להשתמש בהם בחלון ההקשר. השתמש בזה כדי לשלוט בכמה טוקנים ישלחו בכל בקשה. אם לא צוין, יתבצע שימוש בברירת המחדל של המערכת המבוססות על גודל חלון ההקשר ברירת המחדל של המודלים. הגדרת ערכים גבוהים יותר עלולה לגרום לשגיאות ו/או עלות טוקנים גבוהה יותר.",
|
||||
"com_endpoint_context_tokens": "מקסימום טוקנים בחלון ההקשר",
|
||||
"com_endpoint_custom_name": "שם מותאם אישית",
|
||||
"com_endpoint_default": "ברירת מחדל",
|
||||
"com_endpoint_default_blank": "ברירת מחדל: ריק",
|
||||
"com_endpoint_default_empty": "ברירת מחדל: ריקה",
|
||||
"com_endpoint_default_with_num": "ברירת מחדל: {{0}}",
|
||||
"com_endpoint_deprecated": "לא מומלץ - בתהליך הסרה",
|
||||
"com_endpoint_deprecated_info": "נקודת קצה (endpoint) זו מיושנת ועלולה להיות מוסרת בגרסאות עתידיות, אנא השתמש בנקודת הקצה של הסוכן במקום זאת.",
|
||||
"com_endpoint_deprecated_info_a11y": "נקודת הקצה של התוסף מיושנת ועלולה להיות מוסרת בגרסאות עתידיות, אנא השתמש בנקודת הקצה של הסוכן במקום זאת.",
|
||||
"com_endpoint_examples": "הגדרות קבועות מראש",
|
||||
"com_endpoint_export": "ייצוא",
|
||||
"com_endpoint_export_share": "ייצא/שתף",
|
||||
"com_endpoint_frequency_penalty": "עונש תדירות",
|
||||
"com_endpoint_func_hover": "אפשר שימוש בפלאגינים כפונקציות OpenAI",
|
||||
"com_endpoint_google_custom_name_placeholder": "הגדר שם מותאם אישית עבור Google",
|
||||
"com_endpoint_google_maxoutputtokens": " המספר המרבי של אסימונים שניתן להפיק בתגובה. ציין ערך נמוך יותר עבור תגובות קצרות יותר וערך גבוה יותר עבור תגובות ארוכות יותר.",
|
||||
"com_endpoint_google_temp": "ערכים גבוהים יותר = יותר אקראיים, בעוד שערכים נמוכים יותר = יותר ממוקד ודטרמיניסטי. אנו ממליצים לשנות את זה או את Top P אבל לא את שניהם.",
|
||||
"com_endpoint_google_topk": "Top-k משנה את האופן שבו המודל בוחר אסימונים לפלט. Top-k של 1 פירושו שהאסימון שנבחר הוא הסביר ביותר מבין כל האסימונים באוצר המילים של הדגם (נקרא גם פענוח חמדן), בעוד ש-top-k של 3 פירושו שהאסימון הבא נבחר מבין 3 הכי הרבה. אסימונים סבירים (באמצעות טמפרטורה).",
|
||||
"com_endpoint_google_topp": "Top-p משנה את האופן שבו המודל בוחר אסימונים לפלט. אסימונים נבחרים מרוב K (ראה פרמטר topK) ככל הנראה לפחות עד ה-sum של ההסתברויות שלהם שווה לערך ה-p העליון.",
|
||||
"com_endpoint_instructions_assistants": "עקוף הוראות",
|
||||
"com_endpoint_instructions_assistants_placeholder": "עובר את הוראות הסייען. זה שימושי לשינוי ההתנהגות על בסיס ריצה.",
|
||||
"com_endpoint_max_output_tokens": "אסימוני פלט מרבי",
|
||||
"com_endpoint_message": "הודעה",
|
||||
"com_endpoint_message_new": "הודעה {{0}}",
|
||||
"com_endpoint_message_not_appendable": "ערוך את ההודעה שלך או צור מחדש.",
|
||||
"com_endpoint_my_preset": "ההגדרה המוגדרת מראש שלי",
|
||||
"com_endpoint_no_presets": "אין עדיין הגדרות מוגדרות מראש, השתמש בלחצן ההגדרות כדי ליצור אחת",
|
||||
"com_endpoint_open_menu": "תפריט פתח",
|
||||
"com_endpoint_openai_custom_name_placeholder": "הגדר שם מותאם אישית עבור ChatGPT",
|
||||
"com_endpoint_openai_detail": "ההחלטה לבקשות חזון. \"נמוך\" זול ומהיר יותר, \"גבוה\" מפורט ויקר יותר, ו\"אוטומטי\" יבחר אוטומטית בין השניים על סמך רזולוציית התמונה.",
|
||||
"com_endpoint_openai_freq": "מספר בין -2.0 ל-2.0. ערכים חיוביים מענישים אסימונים חדשים בהתבסס על התדירות הקיימת שלהם בטקסט עד כה, ומקטינים את הסבירות של המודל לחזור על אותה שורה מילה במילה.",
|
||||
"com_endpoint_openai_max": "האסימונים המקסימליים להפיק. האורך הכולל של אסימוני קלט ואסימונים שנוצרו מוגבל על ידי אורך ההקשר של המודל.",
|
||||
"com_endpoint_openai_max_tokens": "שדה 'max_tokens' אופציונלי, הוא מייצג את המספר המרבי של טוקנים שניתן ליצור בהשלמת הצ'אט. האורך הכולל של טוקני קלט והטוקנים שנוצרו מוגבל על ידי אורך ההקשר של המודל. אתה עלול להיתקל בשגיאות אם המספר הזה חורג מטוקני ההקשר המקסימליים.",
|
||||
"com_endpoint_openai_pres": "מספר בין -2.0 ל-2.0. ערכים חיוביים מענישים אסימונים חדשים על סמך האם הם מופיעים בטקסט עד כה, ומגדילים את הסבירות של המודל לדבר על נושאים חדשים.",
|
||||
"com_endpoint_openai_prompt_prefix_placeholder": "הגדר הוראות מותאמות אישית לכלול בהודעת המערכת. ברירת מחדל: אין",
|
||||
"com_endpoint_openai_reasoning_effort": "במודלים o1 בלבד: מגביל את מאמץ ההנמקה במודלים של הגיון. הפחתת מאמץ החשיבה יכולה לגרום לתגובות מהירות יותר ולפחות טוקנים בשימוש בהנמקה בתגובה.",
|
||||
"com_endpoint_openai_resend": "שלח שוב את כל התמונות שצורפו בעבר. הערה: זה יכול להגדיל משמעותית את עלות האסימונים ואתה עלול להיתקל בשגיאות עם קבצים מצורפים רבים של תמונות.",
|
||||
"com_endpoint_openai_resend_files": "שלח שוב את כל הקבצים שצורפו בעבר. הערה: זה יגדיל את עלות הטוקנים, ואתה עלול להיתקל בשגיאות עם קבצים מצורפים רבים.",
|
||||
"com_endpoint_openai_stop": "עד 4 רצפים שבהם ה-API יפסיק לייצר טוקנים נוספים.",
|
||||
"com_endpoint_openai_temp": "ערכים גבוהים יותר = יותר אקראיים, בעוד שערכים נמוכים יותר = יותר ממוקד ודטרמיניסטי. אנו ממליצים לשנות את זה או את Top P אבל לא את שניהם.",
|
||||
"com_endpoint_openai_topp": "חלופה לדגימה עם טמפרטורה, הנקראת דגימת גרעין, שבה המודל מחשיב את תוצאות האסימונים עם מסת ההסתברות top_p. אז 0.1 אומר שרק האסימונים המהווים את מסת ההסתברות העליונה של 10% נחשבים. אנו ממליצים לשנות את זה או את הטמפרטורה אבל לא את שניהם.",
|
||||
"com_endpoint_output": "פלט",
|
||||
"com_endpoint_plug_image_detail": "פרטי תמונה",
|
||||
"com_endpoint_plug_resend_files": "שלח שוב את הקובץ",
|
||||
"com_endpoint_plug_set_custom_instructions_for_gpt_placeholder": "הגדר הוראות מותאמות אישית לכלול בהודעת המערכת. ברירת מחדל: אין",
|
||||
"com_endpoint_plug_skip_completion": "השלמת דילוג",
|
||||
"com_endpoint_plug_use_functions": "השתמש בפונקציות",
|
||||
"com_endpoint_presence_penalty": "עונש נוכחות",
|
||||
"com_endpoint_preset": "הגדרה קבועה מראש",
|
||||
"com_endpoint_preset_custom_name_placeholder": "אין אפשרות להשאיר את השדה הזה ריק, חייב לביות כאן ערך",
|
||||
"com_endpoint_preset_default": "מוגדר כמו הגדרות ברירת המחדל המוגדרת מראש.",
|
||||
"com_endpoint_preset_default_item": "ברירת מחדל:",
|
||||
"com_endpoint_preset_default_none": "אין ברירת מחדל פעילה.",
|
||||
"com_endpoint_preset_default_removed": "איננו עוד ברירת המחדל המוגדרת מראש.",
|
||||
"com_endpoint_preset_delete_confirm": "האם אתה בטוח שברצונך למחוק את הקביעה המוגדרת מראש הזו?",
|
||||
"com_endpoint_preset_delete_error": "אירעה שגיאה במחיקת הקביעה המוגדרת מראש שלך. בבקשה נסה שוב.",
|
||||
"com_endpoint_preset_import": "הגדרה מראש מיובאת!",
|
||||
"com_endpoint_preset_import_error": "אירעה שגיאה בייבוא הקביעה המוגדרת מראש שלך. בבקשה נסה שוב.",
|
||||
"com_endpoint_preset_name": "שם מוגדר מראש",
|
||||
"com_endpoint_preset_save_error": "אירעה שגיאה בשמירת ההגדרה מראש שלך. בבקשה נסה שוב.",
|
||||
"com_endpoint_preset_selected": "הגדרה מראש פעילה!",
|
||||
"com_endpoint_preset_selected_title": "פעיל!",
|
||||
"com_endpoint_preset_title": "הגדרה מראש",
|
||||
"com_endpoint_presets": "presets",
|
||||
"com_endpoint_presets_clear_warning": "האם אתה בטוח שאתה רוצה לנקות את כל הקביעות המוגדרות מראש? זה בלתי הפיך.",
|
||||
"com_endpoint_prompt_cache": "השתמש בשמירה במטמון של הנחיות (פרומפטים)",
|
||||
"com_endpoint_prompt_prefix": "הוראות מותאמות אישית",
|
||||
"com_endpoint_prompt_prefix_assistants": "הוראות נוספות",
|
||||
"com_endpoint_prompt_prefix_assistants_placeholder": "הגדר הוראות נוספות או הקשר על גבי ההנחיות הראשיות של ה-סייען. התעלמו אם ריק.",
|
||||
"com_endpoint_prompt_prefix_placeholder": "הגדר הוראות מותאמות אישית או הקשר. התעלמו אם ריק.",
|
||||
"com_endpoint_reasoning_effort": "מאמץ בתהליך החשיבה",
|
||||
"com_endpoint_save_as_preset": "שמור כתבנית",
|
||||
"com_endpoint_search": "חפש נקודת קצה לפי שם",
|
||||
"com_endpoint_search_endpoint_models": "חפש מודלים של {{0}}...",
|
||||
"com_endpoint_search_models": "חפש מו",
|
||||
"com_endpoint_search_var": "חפש {{0}}...",
|
||||
"com_endpoint_set_custom_name": "הגדר שם מותאם אישית, למקרה שתוכל למצוא את הקביעה המוגדרת מראש",
|
||||
"com_endpoint_skip_hover": "אפשר דילוג על שלב ההשלמה, הסוקר את התשובה הסופית ואת השלבים שנוצרו",
|
||||
"com_endpoint_stop": "רצף לעצירה",
|
||||
"com_endpoint_stop_placeholder": "הפרד ערכים על ידי לחיצה על 'Enter'",
|
||||
"com_endpoint_temperature": "טמפרטורה",
|
||||
"com_endpoint_thinking": "חשיבה",
|
||||
"com_endpoint_thinking_budget": "תקציב חשיבה",
|
||||
"com_endpoint_top_k": "Top K",
|
||||
"com_endpoint_top_p": "Top P",
|
||||
"com_endpoint_use_active_assistant": "השתמש ב-סייען פעיל",
|
||||
"com_error_expired_user_key": "המפתח שסופק עבור {{0}} פג ב-{{1}}. אנא ספק מפתח חדש ונסה שוב.",
|
||||
"com_error_files_dupe": "זוהה קובץ כפול",
|
||||
"com_error_files_empty": "אין אפשרות לקבצים ריקים",
|
||||
"com_error_files_process": "אירעה שגיאה במהלך עיבוד הקובץ.",
|
||||
"com_error_files_unsupported_capability": "לא הופעלו התכונות התומכות בסוג קובץ זה.",
|
||||
"com_error_files_upload": "אירעה שגיאה בעת העלאת הקובץ",
|
||||
"com_error_files_upload_canceled": "בקשת העלאת הקובץ בוטלה. הערה: ייתכן שהעלאת הקובץ עדיין בעיבוד ותצטרך למחוק אותו בצורה ידנית.",
|
||||
"com_error_files_validation": "אירעה שגיאה במהלך אימות הקובץ.",
|
||||
"com_error_input_length": "מספר הטוקנים של ההודעות האחרונות גבוה מדי, והוא חורג ממגבלת האסימונים ({{0}} בהתאמה). אנא קצר את ההודעה שלך, שנה את גודל ההקשר המקסימלי בפרמטרי השיחה, או התחל שיחה חדשה.",
|
||||
"com_error_invalid_agent_provider": "המודלים של \"{{0}}\" אינם זמינים לשימוש עם סוכנים. אנא עבור להגדרות הסוכן שלך ובחר ספק הזמין כרגע.",
|
||||
"com_error_invalid_user_key": "מפתח שסופק אינו חוקי. אנא ספק מפתח חוקי ונסה שוב.",
|
||||
"com_error_moderation": "נראה שהתוכן שנשלח סומן על ידי מערכת הניהול שלנו בגלל שהוא אינו תואם את הנחיות הקהילה שלנו. אנחנו לא יכולים להמשיך עם הנושא הספציפי הזה. אם יש לך שאלות או נושאים אחרים שתרצה לחקור, אנא ערוך את ההודעה שלך, או צור שיחה חדשה.",
|
||||
"com_error_no_base_url": "לא נמצאה כתובת URL. אנא ספק כתובת ונסה שוב.",
|
||||
"com_error_no_user_key": "לא נמצא מפתח. אנא ספק מפתח ונסה שוב.",
|
||||
"com_files_filter": "סינון קבצים...",
|
||||
"com_files_no_results": "אין תוצאות",
|
||||
"com_files_number_selected": "{{0}} מתוך {{1}} פריטים נבחרו",
|
||||
"com_files_table": "השדה חייב להכיל תוכן, הוא אינו יכול להישאר ריק",
|
||||
"com_generated_files": "קבצים שנוצרו:",
|
||||
"com_hide_examples": "הסתר דוגמאות",
|
||||
"com_nav_2fa": "אימות דו-שלבי (2FA)",
|
||||
"com_nav_account_settings": "הגדרות חשבון",
|
||||
"com_nav_always_make_prod": "ייצר תמיד גרסאות חדשות",
|
||||
"com_nav_archive_created_at": "תאריך ייצור",
|
||||
"com_nav_archive_name": "שם",
|
||||
"com_nav_archived_chats": "שיחות מארכיון",
|
||||
"com_nav_at_command": "@-פקודה",
|
||||
"com_nav_at_command_description": "הפקודה \"@\" משמשת כמנגנון הפעלה/החלפה של נקודות קצה, מודלים, הגדרות קבועות מראש וכו'.",
|
||||
"com_nav_audio_play_error": "שגיאה בהפעלת אודיו: {{0}}",
|
||||
"com_nav_audio_process_error": "שגיאה בעיבוד האודיו: {{0}}",
|
||||
"com_nav_auto_scroll": "Auto-s גלול אל הכי חדש בפתיחה",
|
||||
"com_nav_auto_send_prompts": "שליחת הנחיות (פרומפטים) אוטומטית",
|
||||
"com_nav_auto_send_text": "טקסט לשליחה אוטומטית",
|
||||
"com_nav_auto_send_text_disabled": "הגדר -1 כדי להשבית",
|
||||
"com_nav_auto_transcribe_audio": "תמלול אוטומטי של אודיו",
|
||||
"com_nav_automatic_playback": "הפעלה אוטומטית של ההודעה האחרונה",
|
||||
"com_nav_balance": "לְאַזֵן",
|
||||
"com_nav_browser": "דפדפן",
|
||||
"com_nav_center_chat_input": "מרכז תיבת הצ'אט במסך הברוכים הבאים",
|
||||
"com_nav_change_picture": "שנה תמונה",
|
||||
"com_nav_chat_commands": "פקודות צ'אט",
|
||||
"com_nav_chat_commands_info": "פקודות אלו מופעלות על ידי הקלדת תווים ספציפיים בתחילת ההודעה. כל פקודה מופעלת על ידי הקידומת המיועדת לה. אתה יכול להשבית אותם אם אתה משתמש בתווים אלה לעתים קרובות כדי להתחיל הודעות.",
|
||||
"com_nav_chat_direction": "כיוונון צ'אט",
|
||||
"com_nav_clear_all_chats": "נקה את כל השיחות",
|
||||
"com_nav_clear_cache_confirm_message": "האם אתה בטוח שברצונך לנקות את המטמון?",
|
||||
"com_nav_clear_conversation": "נקה שיחות",
|
||||
"com_nav_clear_conversation_confirm_message": "אתה בטוח שאתה רוצה לנקות את כל השיחות? זה בלתי הפיך.",
|
||||
"com_nav_close_sidebar": "סגור סרגל צד",
|
||||
"com_nav_commands": "פקודות",
|
||||
"com_nav_confirm_clear": "אשר ניקוי",
|
||||
"com_nav_conversation_mode": "מצב שיחה ",
|
||||
"com_nav_convo_menu_options": "אפשרויות מצב שיחה",
|
||||
"com_nav_db_sensitivity": "רגישות דציבלים",
|
||||
"com_nav_delete_account": "מחיקת החשבון",
|
||||
"com_nav_delete_account_button": "מחק את החשבון שלי לצמיתות",
|
||||
"com_nav_delete_account_confirm": "מחק חשבון - אתה בטוח?",
|
||||
"com_nav_delete_account_email_placeholder": "אנא הזן את כתובת הדוא\"ל של החשבון שלך",
|
||||
"com_nav_delete_cache_storage": "מחק אחסון מטמון TTS",
|
||||
"com_nav_delete_data_info": "כל הנתונים שלך יימחקו",
|
||||
"com_nav_delete_warning": "אזהרה: פעולה זו תמחק לצמיתות את חשבונך.",
|
||||
"com_nav_edit_chat_badges": "עריכת תוויות צ'אט",
|
||||
"com_nav_enable_cache_tts": "אפשר מטמון ב- TTS",
|
||||
"com_nav_enable_cloud_browser_voice": "השתמש בקולות מבוססי ענן",
|
||||
"com_nav_enabled": "מופעל",
|
||||
"com_nav_engine": "מנוע",
|
||||
"com_nav_enter_to_send": "הקש Enter כדי לשלוח את ההודעה",
|
||||
"com_nav_export": "ייצא",
|
||||
"com_nav_export_all_message_branches": "ייצא את כל ענפי ההודעות",
|
||||
"com_nav_export_conversation": "ייצא שיחה",
|
||||
"com_nav_export_filename": "שם קובץ",
|
||||
"com_nav_export_filename_placeholder": "הגדר את שם הקובץ",
|
||||
"com_nav_export_include_endpoint_options": "כלול אפשרויות נקודת קצה",
|
||||
"com_nav_export_recursive": "רקורסיבי",
|
||||
"com_nav_export_recursive_or_sequential": "רקורסיבי או רציף?",
|
||||
"com_nav_export_type": "סוג",
|
||||
"com_nav_external": "חיצוני",
|
||||
"com_nav_font_size": "גודל גופן",
|
||||
"com_nav_font_size_base": "מדיום",
|
||||
"com_nav_font_size_lg": "גדול",
|
||||
"com_nav_font_size_sm": "קטן",
|
||||
"com_nav_font_size_xl": "גדול מאוד",
|
||||
"com_nav_font_size_xs": "קט מאוד",
|
||||
"com_nav_help_faq": "עזרה ושאלות נפוצות",
|
||||
"com_nav_hide_panel": "הסתר לוח הצד הימני ביותר",
|
||||
"com_nav_info_code_artifacts": "אפשר הצגה של רכיבי תצוגת קוד ניסיוניים לצד הצ'אט",
|
||||
"com_nav_info_code_artifacts_agent": "אפשר שימוש ברכיבי תצוגת קוד עבור סוכן זה כברירת מחדל, מתווספות הוראות נוספות ספציפיות לשימוש ברכיבי התצוגה אלא אם \"מצב הנחיה מותאם אישית\" מופעל.",
|
||||
"com_nav_info_custom_prompt_mode": "כאשר אפשרות זו מופעלת, הנחיית ברירת המחדל של מערכת רכיבי תצוגה לא תיכלל. כל ההוראות ליצירת רכיבי תצוגה יהיו חייבות להינתן באופן ידני במצב זה.",
|
||||
"com_nav_info_enter_to_send": "כאשר מופעל, לחיצה על \"ENTER\" תשלח את ההודעה שלך, כאשר מושבת לחיצה על \"Enter\" תוסיף שורה חדשה, ותצטרך ללחוץ על \"CTRL + ENTER\" כדי לשלוח את ההודעה.",
|
||||
"com_nav_info_fork_change_default": "'הודעות ישירות בלבד' כולל רק את הנתיב הישיר להודעה שנבחרה. 'כלול הסתעפויות קשורות' מוסיף את כל ההסתעפויות הקשורות לאורך הנתיב. 'כלול הכל עד כאן/מכאן' כולל את כל ההודעות וההסתעפויות המחוברות.",
|
||||
"com_nav_info_fork_split_target_setting": "כאשר אפשרות זו מופעלת, הפיצול יתחיל מהודעת היעד ועד להודעה האחרונה בשיחה, בהתאם להתנהגות שנבחרה",
|
||||
"com_nav_info_include_shadcnui": "כאשר אפשרות זו מופעלת, ייכללו הוראות לשימוש ברכיבי shadcn/ui. shadcn/ui הוא אוסף של רכיבים לשימוש חוזר שנבנו באמצעות Radix UI ו-Tailwind CSS.\nהערה: ההוראות הללו ארוכות, ולכן כדאי להפעיל אותן רק אם חשוב לך ליידע את מודל ה-LLM (מודל השפה) על הייבוא והרכיבים הנכונים.\nלמידע נוסף על רכיבים אלה, בקר בכתובת: https://ui.shadcn.com/",
|
||||
"com_nav_info_latex_parsing": "כאשר אפשרות זו מופעלת, קוד LaTeX בהודעות יעובד ויוצג כמשוואות מתמטיות. השבתת אפשרות זו עשויה לשפר את הביצועים אם אינך זקוק לעיבוד LaTeX.",
|
||||
"com_nav_info_save_badges_state": "כאשר אפשרות זו מופעלת, מצב תגי הצ'אט יישמר. משמעות הדבר היא שאם תיצור צ'אט חדש, התגים יישארו באותו מצב שהיו בצ'אט הקודם. אם תנטרל אפשרות זו, התגים יחזרו למצב ברירת המחדל בכל פעם שתיצור צ'אט חדש.",
|
||||
"com_nav_info_save_draft": "כאשר אפשרות זו מופעלת, הטקסט והקבצים המצורפים שאתה מזין בטופס הצ'אט יישמרו באופן אוטומטי כטיוטות במכשיר שלך. טיוטות אלו יהיו זמינות גם אם תטען מחדש את הדף או תעבור לשיחה אחרת. הטיוטות נשמרות באופן מקומי במכשיר שלך ונמחקות לאחר שליחת ההודעה.",
|
||||
"com_nav_info_show_thinking": "כאשר אפשרות זו מופעלת, תיבות תצוגה שמציגות את תהליך החשיבה של הבינה המלאכותית יופיעו פתוחות כברירת מחדל, כך שתוכל לראות את תהליך הניתוח בזמן אמת. כאשר האפשרות מושבתת, תיבות הבחירה יישארו סגורות כברירת מחדל, מה שיוצר ממשק נקי וזורם יותר.",
|
||||
"com_nav_info_user_name_display": "כאשר אפשרות זו מופעלת, שם המשתמש של השולח יוצג מעל כל הודעה שאתה שולח. כאשר האפשרות מושבתת, יוצג רק הכיתוב \"אתה\" מעל ההודעות שלך.",
|
||||
"com_nav_lang_arabic": "ערבית (العربية)",
|
||||
"com_nav_lang_auto": "זיהוי באופן אוטומטי",
|
||||
"com_nav_lang_brazilian_portuguese": "פורטוגזית ברזילאית (Português Brasileiro)",
|
||||
"com_nav_lang_chinese": "סינית (中文)",
|
||||
"com_nav_lang_dutch": "הולנדית (Nederlands)",
|
||||
"com_nav_lang_english": "אנגלית (English)",
|
||||
"com_nav_lang_estonian": "אסטונית (Eesti keel)",
|
||||
"com_nav_lang_finnish": "פינית (Suomi)",
|
||||
"com_nav_lang_french": "צרפתית (Français)",
|
||||
"com_nav_lang_georgian": "ქართული",
|
||||
"com_nav_lang_german": "גרמנית (Deutsch)",
|
||||
"com_nav_lang_hebrew": "עברית",
|
||||
"com_nav_lang_hungarian": "הונגרית",
|
||||
"com_nav_lang_indonesia": "אינדונזית (Indonesia)",
|
||||
"com_nav_lang_italian": "איטלקית (Italiano)",
|
||||
"com_nav_lang_japanese": "יפנית (日本語)",
|
||||
"com_nav_lang_korean": "קוראנית (한국어)",
|
||||
"com_nav_lang_persian": "פרסית",
|
||||
"com_nav_lang_polish": "פולנית (Polski)",
|
||||
"com_nav_lang_portuguese": "פורטוגזית (Português)",
|
||||
"com_nav_lang_russian": "רוסית (Русский)",
|
||||
"com_nav_lang_spanish": "ספרדית (Español)",
|
||||
"com_nav_lang_swedish": "שוודית (Svenska)",
|
||||
"com_nav_lang_thai": "ไทย",
|
||||
"com_nav_lang_traditional_chinese": "סינית מסורתית (繁體中文)",
|
||||
"com_nav_lang_turkish": "טורקית (Türkçe)",
|
||||
"com_nav_lang_vietnamese": "וייטנאמית (Tiếng Việt)",
|
||||
"com_nav_language": "שפה",
|
||||
"com_nav_latex_parsing": "ניתוח LaTeX בהודעות (עשוי להשפיע על הביצועים)",
|
||||
"com_nav_log_out": "צא",
|
||||
"com_nav_long_audio_warning": "העיבוד של טקסטים ארוכים ייקח יותר זמן.",
|
||||
"com_nav_maximize_chat_space": "הגדל את שטח הצ'אט",
|
||||
"com_nav_modular_chat": "אפשר החלפת נקודות קצה באמצע שיחה",
|
||||
"com_nav_my_files": "הקבצים שלי",
|
||||
"com_nav_not_supported": "לא נתמך",
|
||||
"com_nav_open_sidebar": "פתח סרגל צד",
|
||||
"com_nav_playback_rate": "קצב השמעת האודיו",
|
||||
"com_nav_plugin_auth_error": "אירעה שגיאה בניסיון לאמת את הפלאגין הזה. בבקשה נסה שוב.",
|
||||
"com_nav_plugin_install": "התקן",
|
||||
"com_nav_plugin_search": "תוספי חיפוש",
|
||||
"com_nav_plugin_store": "חנות פלאגין",
|
||||
"com_nav_plugin_uninstall": "הסר התקנה",
|
||||
"com_nav_plus_command": "פקודות+-",
|
||||
"com_nav_plus_command_description": "הפעל או בטל את הפקודה '+' כדי להוסיף הגדרת תגובות מרובות",
|
||||
"com_nav_profile_picture": "תמונת פרופיל",
|
||||
"com_nav_save_badges_state": "שמור מצב תגים",
|
||||
"com_nav_save_drafts": "שמיר את האפצה באותו מחשב",
|
||||
"com_nav_scroll_button": "לחצן לגלילה עד הסוף",
|
||||
"com_nav_search_placeholder": "חפש הודעות",
|
||||
"com_nav_send_message": "שלח הודעה",
|
||||
"com_nav_setting_account": "חשבון",
|
||||
"com_nav_setting_beta": "תכונות ביטא",
|
||||
"com_nav_setting_chat": "צ'אט",
|
||||
"com_nav_setting_data": "בקרות נתונים",
|
||||
"com_nav_setting_general": "כללי",
|
||||
"com_nav_setting_speech": "דיבור",
|
||||
"com_nav_settings": "הגדרות",
|
||||
"com_nav_shared_links": "קישורים משותפים",
|
||||
"com_nav_show_code": "הצג תמיד את הקוד בעת שימוש במפענח הקוד.",
|
||||
"com_nav_show_thinking": "פתח תצוגות חשיבה כברירת מחדל",
|
||||
"com_nav_slash_command": "פקודת/-",
|
||||
"com_nav_slash_command_description": "הפעל/כבה את הפקודה '/' לבחירת הנחיה (פרומפט) באמצעות המקלדת.",
|
||||
"com_nav_speech_to_text": "דיבור לטקסט",
|
||||
"com_nav_stop_generating": "עצור את היצירה",
|
||||
"com_nav_text_to_speech": "טקסט לדיבור",
|
||||
"com_nav_theme": "נושא",
|
||||
"com_nav_theme_dark": "כהה",
|
||||
"com_nav_theme_light": "אור",
|
||||
"com_nav_theme_system": "מערכת",
|
||||
"com_nav_tool_dialog": "כלי סייען",
|
||||
"com_nav_tool_dialog_agents": "כלי סוכנים",
|
||||
"com_nav_tool_dialog_description": "יש לשמור את האסיסטנט כדי להמשיך בבחירת הכלים.",
|
||||
"com_nav_tool_remove": "הסר",
|
||||
"com_nav_tool_search": "כלי חיפוש",
|
||||
"com_nav_user": "משתמש",
|
||||
"com_nav_user_msg_markdown": "הצגת הודעות משתמש כ-Markdown",
|
||||
"com_nav_user_name_display": "הצג שם משתמש בהודעות",
|
||||
"com_nav_voice_select": "קול",
|
||||
"com_show_agent_settings": "הצג הגדרות סוכן",
|
||||
"com_show_completion_settings": "הצג הגדרות השלמה",
|
||||
"com_show_examples": "הצג דוגמאות",
|
||||
"com_sidepanel_agent_builder": "בניית סוכן",
|
||||
"com_sidepanel_assistant_builder": "בניית סייען",
|
||||
"com_sidepanel_attach_files": "צרף קבצים",
|
||||
"com_sidepanel_conversation_tags": "סימניות",
|
||||
"com_sidepanel_hide_panel": "הסתר פאנל",
|
||||
"com_sidepanel_manage_files": "נהל קבצים",
|
||||
"com_sidepanel_parameters": "פרמטרים",
|
||||
"com_ui_2fa_account_security": "אימות דו-שלבי מוסיף שכבת אבטחה נוספת לחשבון שלך",
|
||||
"com_ui_2fa_disable": "השבת אימות דו-שלבי (2FA)",
|
||||
"com_ui_2fa_disable_error": "התרחשה שגיאה בעת ביטול האימות הדו-שלבי",
|
||||
"com_ui_2fa_disabled": "האימות הדו-שלבי הושבת (2FA)",
|
||||
"com_ui_2fa_enable": "אפשר אימות דו-שלבי (2FA)",
|
||||
"com_ui_2fa_enabled": "האימות הדו-שלבי (2FA) הופעל",
|
||||
"com_ui_2fa_generate_error": "תרחשה שגיאה בעת יצירת הגדרות האימות הדו-שלבי (2FA)",
|
||||
"com_ui_2fa_invalid": "קוד האימות הדו-שלבי שגוי",
|
||||
"com_ui_2fa_setup": "הגדר אימות דו-שלבי (2FA)",
|
||||
"com_ui_2fa_verified": "האימות הדו-שלבי אומת בהצלחה",
|
||||
"com_ui_accept": "אני מקבל",
|
||||
"com_ui_add": "הוסף",
|
||||
"com_ui_add_model_preset": "הוספת מודל או הגדרה קבועה לתגובה נוספת",
|
||||
"com_ui_add_multi_conversation": "הוספת תמיכה בשיחות מרובות",
|
||||
"com_ui_admin": "אדמין",
|
||||
"com_ui_admin_access_warning": "השבתת גישת המנהל לתכונה זו עלולה לגרום לבעיות בלתי צפויות בממשק המשתמש שידרשו רענון. אם השינוי נשמר, הדרך היחידה להחזיר את ההגדרה היא דרך הגדרת הממשק בקובץ librechat.yaml, שמשפיעה על כל התפקידים.",
|
||||
"com_ui_admin_settings": "הגדרות אדמין",
|
||||
"com_ui_advanced": "מתקדם",
|
||||
"com_ui_advanced_settings": "הגדרות מתקדמות",
|
||||
"com_ui_agent": "סוכן",
|
||||
"com_ui_agent_chain": "שרשרת סוכנים (תערובת-סוכנים)",
|
||||
"com_ui_agent_chain_info": "מאפשר יצירת שרשרת סוכנים שבה כל סוכן יכול לגשת לפלטים של סוכנים קודמים בשרשרת. מבוסס על ארכיטקטורת \"תערובת-סוכנים\" שבה סוכנים משתמשים בפלטים קודמים כמידע עזר.",
|
||||
"com_ui_agent_chain_max": "הגעת למקסימום של {{0}} סוכנים.",
|
||||
"com_ui_agent_delete_error": "אירעה שגיאה בעת מחיקת הסוכן.",
|
||||
"com_ui_agent_deleted": "הסוכן נמחק בהצלחה.",
|
||||
"com_ui_agent_duplicate_error": "אירעה שגיאה בעת שכפול הסוכן",
|
||||
"com_ui_agent_duplicated": "הסוכן שוכפל בהצלחה",
|
||||
"com_ui_agent_editing_allowed": "משתמשים אחרים יכולים כבר לערוך את הסוכן.",
|
||||
"com_ui_agent_recursion_limit": "מספר מרבי של שלבי סוכן",
|
||||
"com_ui_agent_recursion_limit_info": "מגביל את מספר השלבים שהסוכן יכול לבצע בריצה לפני מתן תגובה סופית. ברירת המחדל היא 25 שלבים. שלב הוא בקשת API של בינה מלאכותית או סבב שימוש בכלי. לדוגמה, אינטראקציה בסיסית עם כלי לוקחת 3 שלבים: בקשה ראשונית, שימוש בכלי, ובקשת המשך.",
|
||||
"com_ui_agent_shared_to_all": "השדה חייב להכיל תוכן, אי אפשר להשאיר אותו ריק",
|
||||
"com_ui_agent_var": "{{0}} סוכנים",
|
||||
"com_ui_agents": "סוכנים",
|
||||
"com_ui_agents_allow_create": "אפשר יצירת סוכנים",
|
||||
"com_ui_agents_allow_share_global": "אפשר שיתוף סוכנים לכל המשתמשים",
|
||||
"com_ui_agents_allow_use": "אפשר שימוש בסוכנים",
|
||||
"com_ui_all": "הכל",
|
||||
"com_ui_all_proper": "הכל",
|
||||
"com_ui_analyzing": "ניתוח",
|
||||
"com_ui_analyzing_finished": "סיים ניתוח",
|
||||
"com_ui_api_key": "מפתח API",
|
||||
"com_ui_archive": "ארכיון",
|
||||
"com_ui_archive_delete_error": "מחיקת השיחה מהארכיון נכשלה",
|
||||
"com_ui_archive_error": "אירעה שגיאה באירכוב השיחה",
|
||||
"com_ui_artifact_click": "לחץ לפתיחה",
|
||||
"com_ui_artifacts": "רכיבי תצוגה",
|
||||
"com_ui_artifacts_toggle": "הפעל/כבה רכיבי תצוגה",
|
||||
"com_ui_artifacts_toggle_agent": "אפשר רכיבי תצוגה",
|
||||
"com_ui_ascending": "סדר עולה",
|
||||
"com_ui_assistant": "סייען",
|
||||
"com_ui_assistant_delete_error": "אירעה שגיאה בעת מחיקת הסייען",
|
||||
"com_ui_assistant_deleted": "הסייען נמחק בהצלחה",
|
||||
"com_ui_assistants": "סייען",
|
||||
"com_ui_assistants_output": "פלט סייענים",
|
||||
"com_ui_attach_error": "לא ניתן לצרף קובץ. צור או בחר שיחה, או נסה לרענן את הדף.",
|
||||
"com_ui_attach_error_openai": "לא ניתן לצרף את קבצי הסייען לנקודות קצה אחרות",
|
||||
"com_ui_attach_error_size": "חרגת ממגבלת גודל הקובץ עבור נקודת הקצה:",
|
||||
"com_ui_attach_error_type": "סוג קובץ לא נתמך עבור נקודת קצה:",
|
||||
"com_ui_attach_remove": "הסר קובץ",
|
||||
"com_ui_attach_warn_endpoint": "עשוי להתעלם מקבצים שאינם של הסייען שאין להם כלי תואם",
|
||||
"com_ui_attachment": "קובץ מצורף",
|
||||
"com_ui_auth_type": "סוג אישור",
|
||||
"com_ui_auth_url": "כתובת URL לאימות הרשאה",
|
||||
"com_ui_authentication": "אימות",
|
||||
"com_ui_authentication_type": "סוג אימות",
|
||||
"com_ui_avatar": "אווטאר",
|
||||
"com_ui_back_to_chat": "חזור לצ'אט",
|
||||
"com_ui_back_to_prompts": "חזור להנחיות (פרומפטים)",
|
||||
"com_ui_backup_codes": "קודי גיבוי",
|
||||
"com_ui_backup_codes_regenerate_error": "אירעה שגיאה בעת יצירת קודי הגיבוי מחדש",
|
||||
"com_ui_backup_codes_regenerated": "קודי הגיבוי נוצרו מחדש בהצלחה",
|
||||
"com_ui_basic": "בסיסי",
|
||||
"com_ui_basic_auth_header": "כותרת אימות בסיסי",
|
||||
"com_ui_bearer": "נושא הרשאה",
|
||||
"com_ui_bookmark_delete_confirm": "האם אתה בטוח שברצונך למחוק את הסימניה הזו?",
|
||||
"com_ui_bookmarks": "סימניות",
|
||||
"com_ui_bookmarks_add": "הוסף סימניות",
|
||||
"com_ui_bookmarks_add_to_conversation": "הוסף לשיחה הנוכחית",
|
||||
"com_ui_bookmarks_count": "ספירה",
|
||||
"com_ui_bookmarks_create_error": "אירעה שגיאה בעת יצירת הסימניה",
|
||||
"com_ui_bookmarks_create_exists": "סימניה זו כבר קיימת",
|
||||
"com_ui_bookmarks_create_success": "הסימניה נוצרה בהצלחה",
|
||||
"com_ui_bookmarks_delete": "מחק סימ",
|
||||
"com_ui_bookmarks_delete_error": "אירעה שגיאה בעת מחיקת הסימניה",
|
||||
"com_ui_bookmarks_delete_success": "הסימניה נמחקה בהצלחה",
|
||||
"com_ui_bookmarks_description": "תיאור",
|
||||
"com_ui_bookmarks_edit": "ערוך סימניה",
|
||||
"com_ui_bookmarks_filter": "סינון סימניות...",
|
||||
"com_ui_bookmarks_new": "סימניה חדשה",
|
||||
"com_ui_bookmarks_title": "כותרת",
|
||||
"com_ui_bookmarks_update_error": "אירעה שגיאה בעת עדכון הסימניה",
|
||||
"com_ui_bookmarks_update_success": "הסימניה עודכנה בהצלחה",
|
||||
"com_ui_bulk_delete_error": "מחיקת קישורים משותפים נכשלה",
|
||||
"com_ui_callback_url": "כתובת URL להחזרת המידע",
|
||||
"com_ui_cancel": "בטל",
|
||||
"com_ui_category": "קָטֵגוֹרִיָה",
|
||||
"com_ui_chat": "צ'אט",
|
||||
"com_ui_chat_history": "נקה היסטוריה",
|
||||
"com_ui_clear": "נקה",
|
||||
"com_ui_clear_all": "נקה הכל",
|
||||
"com_ui_client_id": "מזהה לקוח",
|
||||
"com_ui_client_secret": "ב",
|
||||
"com_ui_close": "סגור",
|
||||
"com_ui_close_menu": "סגור תפריט",
|
||||
"com_ui_code": "קוד",
|
||||
"com_ui_collapse_chat": "כווץ צ'אט",
|
||||
"com_ui_command_placeholder": "אופציונלי: הזן פקודה להנחיה (פרומפט), או שיעשה שימוש בשם",
|
||||
"com_ui_command_usage_placeholder": "בחר הנחיה (פרומפט) לפי פקודה או שם",
|
||||
"com_ui_complete_setup": "ההגדרה הושלמה",
|
||||
"com_ui_confirm_action": "אשר פעולה",
|
||||
"com_ui_confirm_admin_use_change": "שינוי הגדרה זו יחסום גישה למנהלים, כולל אותך. האם אתה בטוח שברצונך להמשיך?",
|
||||
"com_ui_confirm_change": "אשר את השינוי",
|
||||
"com_ui_context": "הקשר",
|
||||
"com_ui_continue": "המשך",
|
||||
"com_ui_controls": "פקדים",
|
||||
"com_ui_convo_delete_error": "מחיקת הצ'אט נכשלה",
|
||||
"com_ui_copied": "הועתק!",
|
||||
"com_ui_copied_to_clipboard": "הועתק ללוח",
|
||||
"com_ui_copy_code": "העתק קוד",
|
||||
"com_ui_copy_link": "העתק קישור",
|
||||
"com_ui_copy_to_clipboard": "העתק ללוח",
|
||||
"com_ui_create": "צור",
|
||||
"com_ui_create_link": "צור קישור",
|
||||
"com_ui_create_prompt": "צור הנחיה (פרומפט)",
|
||||
"com_ui_currently_production": "נוצר עכשיו",
|
||||
"com_ui_custom": "מותאם אישית",
|
||||
"com_ui_custom_header_name": "שם כותרת מותאם אישית",
|
||||
"com_ui_custom_prompt_mode": "מצב הנחיה (פרומפט) מותאם אישית",
|
||||
"com_ui_dashboard": "לוח מחוונים",
|
||||
"com_ui_date": "תאריך",
|
||||
"com_ui_date_april": "אפריל",
|
||||
"com_ui_date_august": "אוגוסט",
|
||||
"com_ui_date_december": "דצמבר",
|
||||
"com_ui_date_february": "פברואר",
|
||||
"com_ui_date_january": "ינואר",
|
||||
"com_ui_date_july": "יולי",
|
||||
"com_ui_date_june": "יוני",
|
||||
"com_ui_date_march": "מרץ",
|
||||
"com_ui_date_may": "מאי",
|
||||
"com_ui_date_november": "נובמבר",
|
||||
"com_ui_date_october": "אוקטובר",
|
||||
"com_ui_date_previous_30_days": "30 ימים אחרונים",
|
||||
"com_ui_date_previous_7_days": "7 ימים אחרונים",
|
||||
"com_ui_date_september": "ספטמבר",
|
||||
"com_ui_date_today": "היום",
|
||||
"com_ui_date_yesterday": "אתמול",
|
||||
"com_ui_decline": "אני לא מקבל",
|
||||
"com_ui_default_post_request": "ברירת המחדל (בקשת POST)",
|
||||
"com_ui_delete": "מחק",
|
||||
"com_ui_delete_action": "מחק פעולה",
|
||||
"com_ui_delete_action_confirm": "האם אתה בטוח שברצונך למחוק פעולה זו?",
|
||||
"com_ui_delete_agent_confirm": "האם אתה בטוח שברצונך למחוק את הסייען הזה?",
|
||||
"com_ui_delete_assistant_confirm": "האם אתה בטוח שאתה רוצה למחוק את הסייען הזה? אי אפשר לבטל את זה.",
|
||||
"com_ui_delete_confirm": "זה ימחק",
|
||||
"com_ui_delete_confirm_prompt_version_var": "פעולה זו תמחק את הגרסה שנבחרה עבור \"{{0}}\". אם לא קיימות גרסאות נוספות, ההנחיה תימחק.",
|
||||
"com_ui_delete_conversation": "למחוק את השיחה (צאט)?",
|
||||
"com_ui_delete_prompt": "מחק הנחיה (פרומפט)",
|
||||
"com_ui_delete_shared_link": "מחק קישור שיתוף",
|
||||
"com_ui_delete_tool": "מחק כלי",
|
||||
"com_ui_delete_tool_confirm": "האת אתה בטוח שאתה רוצה למחוק את הכלי הזה?",
|
||||
"com_ui_descending": "תיאור",
|
||||
"com_ui_description": "תיאור",
|
||||
"com_ui_description_placeholder": "אופציונלי: הזן תיאור שיוצג עבור ההנחיה (פרומפט)",
|
||||
"com_ui_disabling": "מבטל הפעלה...",
|
||||
"com_ui_download": "הורדות",
|
||||
"com_ui_download_artifact": "רכיב תצוגת הורדות",
|
||||
"com_ui_download_backup": "הורד קודי גיבוי",
|
||||
"com_ui_download_backup_tooltip": "לפני שתמשיך, הורד את קודי הגיבוי שלך. תזדקק להם כדי לשחזר גישה במקרה שתאבד את מכשיר האימות שלך",
|
||||
"com_ui_download_error": "וזה: שגיאה בהורדת הקובץ. ייתכן שהקובץ נמחק",
|
||||
"com_ui_drag_drop": "השדה חייב להכיל תוכן, הוא אינו יכול להישאר ריק",
|
||||
"com_ui_dropdown_variables": "רשימה נפתחת של משתנים",
|
||||
"com_ui_dropdown_variables_info": "צור תפריטי רשימה נפתחת מותאמים אישית עבור ההנחיות שלך:\n{{variable_name:option1|option2|option3}}",
|
||||
"com_ui_duplicate": "שכפל",
|
||||
"com_ui_duplication_error": "אירעה שגיאה בעת שכפול השיחה",
|
||||
"com_ui_duplication_processing": "משכפל את השיחה...",
|
||||
"com_ui_duplication_success": "השיחה שוכפלה בהצלחה",
|
||||
"com_ui_edit": "ערוך",
|
||||
"com_ui_empty_category": "-",
|
||||
"com_ui_endpoint": "נקודת קצה",
|
||||
"com_ui_endpoint_menu": "תפריט נקודת קצה LLM",
|
||||
"com_ui_enter": "Enter",
|
||||
"com_ui_enter_api_key": "הכנס מפתח API",
|
||||
"com_ui_enter_openapi_schema": "הזן כאן את סכימת OpenAPI שלך",
|
||||
"com_ui_error": "שגיאה",
|
||||
"com_ui_error_connection": "שגיאה בחיבור לשרת, נסה לרענן את הדף",
|
||||
"com_ui_error_save_admin_settings": "אירעה שגיאה בשמירת הגדרות הניהול שלך",
|
||||
"com_ui_examples": "דוגמאות",
|
||||
"com_ui_expand_chat": "הרחב צ'אט",
|
||||
"com_ui_export_convo_modal": "חלון ייצוא שיחה",
|
||||
"com_ui_field_required": "שדה זה נדרש",
|
||||
"com_ui_filter_prompts": "סינון הנחיות (פרומפטים)",
|
||||
"com_ui_filter_prompts_name": "סינון הנחיות (פרומפטים) לפי שם",
|
||||
"com_ui_finance": "פיננסי",
|
||||
"com_ui_fork": "הסתעפות",
|
||||
"com_ui_fork_all_target": "כלול את כל ההודעות שנשלחו/התקבלו מכאן.",
|
||||
"com_ui_fork_branches": "כלול הסתעפויות קשורות",
|
||||
"com_ui_fork_change_default": "הגדרות הסתעפויות ברירת מחדל",
|
||||
"com_ui_fork_default": "השתמש בהגדרות הסתעפויות ברירת מחדל",
|
||||
"com_ui_fork_error": "אירעה שגיאה בעת פיצול השיחה",
|
||||
"com_ui_fork_from_message": "בחר הגדרת הסתעפויות",
|
||||
"com_ui_fork_info_1": "השתמש בהגדרה זו כדי ליצור הסתעפות של הודעות עם ההתנהגות הרצויה.",
|
||||
"com_ui_fork_info_2": "\"הסתעפות\" מתייחסת ליצירת שיחה חדשה המתחילה/מסתיימת מהודעות ספציפיות בשיחה הנוכחית, תוך יצירת העתק בהתאם לאפשרויות שנבחרו.",
|
||||
"com_ui_fork_info_3": "\"הודעת היעד\" מתייחסת להודעה שממנה נפתחה חלונית זו, או, אם סימנת \"{{0}}\", להודעה האחרונה בשיחה.",
|
||||
"com_ui_fork_info_branches": "אפשרות זו מפצלת את ההודעות הגלויות, יחד עם ההסתעפויות הקשורות; במילים אחרות, המסלול הישיר להודעת היעד, כולל את ההסתעפויות לאורך המסלול.",
|
||||
"com_ui_fork_info_button_label": "הצג מידע על פיצול שיחות",
|
||||
"com_ui_fork_info_remember": "סמן כדי לזכור את האפשרויות שבחרת לשימושים הבאים, כך שתוכל ליצור הסתעפויות בשיחות מהר יותר לפי העדפתך.",
|
||||
"com_ui_fork_info_start": "כאשר מסומן, ההסתעפות תחל מההודעה זו ותימשך עד להודעה האחרונה בשיחה, על פי ההתנהגות שנבחרה לעיל.",
|
||||
"com_ui_fork_info_target": "אפשרות זו תיצור הסתעפות שתכלול את כל ההודעות המובילות להודעת היעד, כולל ההודעות הסמוכות; במילים אחרות, כל ההסתעפויות של ההודעות יכללו, בין אם הם גלויות או לא, ובין אם הם נמצאות באותו מסלול או לא.",
|
||||
"com_ui_fork_info_visible": "אפשרות זו תיצור הסתעפות רק של ההודעות הגלויות; במילים אחרות, רק את המסלול הישיר להודעת היעד, ללא הסתעפויות נוספות.",
|
||||
"com_ui_fork_more_details_about": "הצג מידע ופרטים נוספים על אפשרות פורק \"{{0}}\"",
|
||||
"com_ui_fork_more_info_options": "הצג הסבר מפורט על כל אפשרויות המזלג והתנהגויותיהן",
|
||||
"com_ui_fork_processing": "יוצר הסתעפות בשיחה...",
|
||||
"com_ui_fork_remember": "זכור",
|
||||
"com_ui_fork_remember_checked": "הבחירה שלך תישמר אחרי השימוש. תוכל לשנות זאת בכל זמן בהגדרות.",
|
||||
"com_ui_fork_split_target": "התחל הסתעפות כאן",
|
||||
"com_ui_fork_split_target_setting": "התחל הסתעפות מהודעת היעד כברירת מחדל",
|
||||
"com_ui_fork_success": "יצירת ההסתעפות בשיחה הסתיימה בהצלחה",
|
||||
"com_ui_fork_visible": "הודעות גלויות בלבד",
|
||||
"com_ui_generate_backup": "צור קודי גיבוי",
|
||||
"com_ui_generate_qrcode": "צור קוד QR",
|
||||
"com_ui_generating": "יוצר...",
|
||||
"com_ui_global_group": "שדה זה לא יכול להישאר ריק",
|
||||
"com_ui_go_back": "חזור",
|
||||
"com_ui_go_to_conversation": "חזור לצ'אט",
|
||||
"com_ui_good_afternoon": "צהריים טובים",
|
||||
"com_ui_good_evening": "ערב ",
|
||||
"com_ui_good_morning": "ערב טוב",
|
||||
"com_ui_happy_birthday": "זה יום ההולדת הראשון שלי!",
|
||||
"com_ui_hide_qr": "הסתר קוד QR",
|
||||
"com_ui_host": "מארח",
|
||||
"com_ui_idea": "רעיונות",
|
||||
"com_ui_image_gen": "מחולל תמונות",
|
||||
"com_ui_import": "ייבוא",
|
||||
"com_ui_import_conversation_error": "אירעה שגיאה בעת ייבוא השיחות שלך",
|
||||
"com_ui_import_conversation_file_type_error": "סוג ייבוא לא נתמך",
|
||||
"com_ui_import_conversation_info": "ייבא שיחות מקובץ JSON",
|
||||
"com_ui_import_conversation_success": "השיחות יובאו בהצלחה",
|
||||
"com_ui_include_shadcnui": "יש לכלול הוראות לשימוש ברכיבי ממשק המשתמש של shadcn/ui",
|
||||
"com_ui_include_shadcnui_agent": "יש לכלול הוראות שימוש ב-shadcn/ui",
|
||||
"com_ui_input": "קלט",
|
||||
"com_ui_instructions": "הוראות",
|
||||
"com_ui_late_night": "לילה טוב",
|
||||
"com_ui_latest_footer": "גישה לכל הבינות המלאכותיות (AI) לכולם",
|
||||
"com_ui_latest_production_version": "גרסת הפיתוח העדכנית ביותר",
|
||||
"com_ui_latest_version": "גרסה אחרונה",
|
||||
"com_ui_librechat_code_api_key": "קבל את מפתח ה-API של מפענח הקוד LibreChat",
|
||||
"com_ui_librechat_code_api_subtitle": "אבטחה ללא פשרות. תמיכה במגוון שפות תכנות. יכולת עבודה מלאה עם קבצים.",
|
||||
"com_ui_librechat_code_api_title": "הרץ קוד AI",
|
||||
"com_ui_loading": "טוען...",
|
||||
"com_ui_locked": "נעול",
|
||||
"com_ui_logo": "\"לוגו {{0}}\"",
|
||||
"com_ui_manage": "נהל",
|
||||
"com_ui_max_tags": "המספר המקסימלי המותר על פי הערכים העדכניים הוא {{0}}.",
|
||||
"com_ui_mcp_servers": "שרתי MCP",
|
||||
"com_ui_mention": "ציין נקודת קצה, סייען, או הנחייה (פרופמט) כדי לעבור אליה במהירות",
|
||||
"com_ui_min_tags": "לא ניתן למחוק ערכים נוספים, יש צורך במינימום {{0}} ערכים.",
|
||||
"com_ui_misc": "כללי",
|
||||
"com_ui_model": "דגם",
|
||||
"com_ui_model_parameters": "הגדרות המודל",
|
||||
"com_ui_more_info": "מידע נוסף",
|
||||
"com_ui_my_prompts": "ההנחיות (פרומפטים) שלי",
|
||||
"com_ui_name": "שם",
|
||||
"com_ui_new": "חדש",
|
||||
"com_ui_new_chat": "שיחה חדשה",
|
||||
"com_ui_new_conversation_title": "כותרת חדשה לצ'אט",
|
||||
"com_ui_next": "הבא",
|
||||
"com_ui_no": "לא",
|
||||
"com_ui_no_backup_codes": "אין קודי גיבוי זמינים. אנא צור קודים חדשים",
|
||||
"com_ui_no_bookmarks": "עדיין אין לך סימניות. בחר שיחה והוסף סימניה חדשה",
|
||||
"com_ui_no_category": "אין קטגוריה",
|
||||
"com_ui_no_changes": "אין שינויים לעדכן",
|
||||
"com_ui_no_data": "השדה חייב להכיל תוכן, הוא לא יכול להישאר ריק",
|
||||
"com_ui_no_terms_content": "אין תוכן תנאים והגבלות להצגה",
|
||||
"com_ui_no_valid_items": "השדה חייב להכיל תוכן, הוא לא יכול להישאר ריק",
|
||||
"com_ui_none": "אף אחד",
|
||||
"com_ui_not_used": "לא בשימוש",
|
||||
"com_ui_nothing_found": "לא נמצא",
|
||||
"com_ui_oauth": "פרוטוקול אימות פתוח (OAuth)",
|
||||
"com_ui_of": "של",
|
||||
"com_ui_off": "של",
|
||||
"com_ui_on": "פעיל",
|
||||
"com_ui_page": "עמוד",
|
||||
"com_ui_prev": "הקודם",
|
||||
"com_ui_preview": "תצוגה מקדימה",
|
||||
"com_ui_privacy_policy": "מדיניות פרטיות",
|
||||
"com_ui_privacy_policy_url": "קישור למדיניות הפרטיות",
|
||||
"com_ui_prompt": "הנחיה (פרומפט)",
|
||||
"com_ui_prompt_already_shared_to_all": "ההנחיה הזו כבר משותפת עם כל המשתמשים",
|
||||
"com_ui_prompt_name": "שם הנחיה (פרומפט)",
|
||||
"com_ui_prompt_name_required": "נדרש שם הנחיה (פרומפט)",
|
||||
"com_ui_prompt_preview_not_shared": "היוצר לא אפשר שיתוף פעולה להנחיה זו",
|
||||
"com_ui_prompt_text": "טקסט",
|
||||
"com_ui_prompt_text_required": "נדרש טקסט",
|
||||
"com_ui_prompt_update_error": "אירעה שגיאה בעדכון ההנחיה (פרומפט)",
|
||||
"com_ui_prompts": "הנחיות (פרומפטים)",
|
||||
"com_ui_prompts_allow_create": "אפשר יצירת הנחיות",
|
||||
"com_ui_prompts_allow_share_global": "אפשר שיתוף הנחיות (פרומפטים) עם כל המשתמשים",
|
||||
"com_ui_prompts_allow_use": "אפשר שימוש בהנחיות (פרומפטים)",
|
||||
"com_ui_provider": "ספק",
|
||||
"com_ui_read_aloud": "הקראה",
|
||||
"com_ui_redirecting_to_provider": "מבצע הפניה ל-{{0}}, אנא המתן...",
|
||||
"com_ui_refresh_link": "רענון קישור",
|
||||
"com_ui_regenerate": "לחדש",
|
||||
"com_ui_regenerate_backup": "צור קודי גיבוי מחדש",
|
||||
"com_ui_regenerating": "יוצר מחדש...",
|
||||
"com_ui_region": "איזור",
|
||||
"com_ui_rename": "שנה שם",
|
||||
"com_ui_rename_conversation": "החלפת שם הצ'אט",
|
||||
"com_ui_rename_failed": "החלפת שם הצ'אט נכשלה",
|
||||
"com_ui_rename_prompt": "שנה שם הנחיה (פרומפט)",
|
||||
"com_ui_requires_auth": "נדרש אימות",
|
||||
"com_ui_reset_var": "איפוס {{0}}",
|
||||
"com_ui_result": "תוצאה",
|
||||
"com_ui_revoke": "בטל",
|
||||
"com_ui_revoke_info": "בטל את כל האישורים שסופקו על ידי המשתמש",
|
||||
"com_ui_revoke_key_confirm": "האם אתה בטוח שברצונך לבטל את המפתח הזה?",
|
||||
"com_ui_revoke_key_endpoint": "ביטול מפתח עבור {{0}}",
|
||||
"com_ui_revoke_keys": "ביטול מפתחות",
|
||||
"com_ui_revoke_keys_confirm": "האם אתה בטוח שברצונך לבטל את כל המפתחות?",
|
||||
"com_ui_role_select": "תפקיד",
|
||||
"com_ui_roleplay": "משחק תפקידים",
|
||||
"com_ui_run_code": "הרץ קו",
|
||||
"com_ui_run_code_error": "אירעה שגיאה בהרצת הקוד",
|
||||
"com_ui_save": "שמור",
|
||||
"com_ui_save_badge_changes": "האם לשמור את השינויים בתגים?",
|
||||
"com_ui_save_submit": "שמור ושלח",
|
||||
"com_ui_saved": "שמור!",
|
||||
"com_ui_schema": "סכמה",
|
||||
"com_ui_scope": "תחום",
|
||||
"com_ui_search": "חיפוש",
|
||||
"com_ui_secret_key": "מפתח סודי",
|
||||
"com_ui_select": "בחר",
|
||||
"com_ui_select_file": "בחר קובץ",
|
||||
"com_ui_select_model": "בחר מודל",
|
||||
"com_ui_select_provider": "בחר ספק",
|
||||
"com_ui_select_provider_first": "ראשית בחר ספק",
|
||||
"com_ui_select_region": "בחר איזור",
|
||||
"com_ui_select_search_model": "חפש מודל לפי שם",
|
||||
"com_ui_select_search_plugin": "חפש פאלגין לפי שם",
|
||||
"com_ui_select_search_provider": "חפש ספק לפי שם",
|
||||
"com_ui_select_search_region": "חפש איזור לפי שם",
|
||||
"com_ui_share": "שתף",
|
||||
"com_ui_share_create_message": "שמך וכל הודעה שתוסיף לאחר השיתוף יישארו פרטיים.",
|
||||
"com_ui_share_delete_error": "אירעה שגיאה בעת מחיקת הקישור המשותף.",
|
||||
"com_ui_share_error": "אירעה שגיאה בעת שיתוף קישור הצ'אט",
|
||||
"com_ui_share_form_description": "השדה חייב להכיל תוכן, הוא אינו יכול להישאר ריק",
|
||||
"com_ui_share_link_to_chat": "שתף קישור בצ'אט",
|
||||
"com_ui_share_to_all_users": "שתף עם כל המשתמשים",
|
||||
"com_ui_share_update_message": "השם שלך, ההוראות המותאמות אישית וכל ההודעות שתוסיף לאחר השיתוף יישארו פרטיים.",
|
||||
"com_ui_share_var": "שתף {{0}}",
|
||||
"com_ui_shared_link_bulk_delete_success": "הקישורים המשותפים נמחקו בהצלחה",
|
||||
"com_ui_shared_link_delete_success": "הקישור המשותף נמחק בהצלחה",
|
||||
"com_ui_shared_link_not_found": "הקישור המשותף לא נמצא",
|
||||
"com_ui_shared_prompts": "הנחיות (פרומפטים) משותפות",
|
||||
"com_ui_shop": "קניות",
|
||||
"com_ui_show": "הצג",
|
||||
"com_ui_show_all": "הראה הכל",
|
||||
"com_ui_show_qr": "הראה קוד QR",
|
||||
"com_ui_sign_in_to_domain": "היכנס אל {{0}}",
|
||||
"com_ui_simple": "פשוט",
|
||||
"com_ui_size": "סוג",
|
||||
"com_ui_special_var_current_date": "תאריך נוכחי",
|
||||
"com_ui_special_var_current_datetime": "תאריך ושעה נוכחיים",
|
||||
"com_ui_special_var_current_user": "משתמש נוכחי",
|
||||
"com_ui_special_var_iso_datetime": "תאריך ושעה ISO UTC",
|
||||
"com_ui_special_variables": "משתנים מיוחדים:",
|
||||
"com_ui_special_variables_more_info": "ניתן לבחור משתנים מיוחדים מהתפריט הנפתח: `{{current_date}}` (תאריך ויום בשבוע של היום), `{{current_datetime}}` (תאריך ושעה מקומיים), `{{utc_iso_datetime}}` (תאריך ושעה UTC ISO) ו-`{{current_user}}` (שם החשבון שלך).",
|
||||
"com_ui_speech_while_submitting": "לא ניתן לשלוח אודיו בזמן שנוצרת תגובה",
|
||||
"com_ui_sr_actions_menu": "פתח את תפריט הפעולות עבור \"{{0}}\"",
|
||||
"com_ui_stop": "עצור",
|
||||
"com_ui_storage": "אחסון",
|
||||
"com_ui_submit": "שלח",
|
||||
"com_ui_teach_or_explain": "למידה",
|
||||
"com_ui_temporary": "צ'אט זמני",
|
||||
"com_ui_terms_and_conditions": "תנאים והגבלות",
|
||||
"com_ui_terms_of_service": "תנאי השירות",
|
||||
"com_ui_thinking": "חושב...",
|
||||
"com_ui_thoughts": "מחשבות",
|
||||
"com_ui_token_exchange_method": "שיטת החלפת טוקנים",
|
||||
"com_ui_token_url": "קישור URL לטוקן",
|
||||
"com_ui_tools": "כלים",
|
||||
"com_ui_travel": "מסע",
|
||||
"com_ui_unarchive": "לארכיון",
|
||||
"com_ui_unarchive_error": "אירעה שגיאה בארכיון השיחה",
|
||||
"com_ui_unknown": "לא ידוע",
|
||||
"com_ui_untitled": "ללא כותרת",
|
||||
"com_ui_update": "עדכון",
|
||||
"com_ui_upload": "העלה",
|
||||
"com_ui_upload_code_files": "העלאה עבור מפענח הקוד",
|
||||
"com_ui_upload_delay": "העלאת \"{{0}}\" לוקחת יותר זמן מהצפוי. אנא המתן בזמן שהקובץ מסיים את האינדוקס לאחזור.",
|
||||
"com_ui_upload_error": "אירעה שגיאה בהעלאת הקובץ שלך",
|
||||
"com_ui_upload_file_context": "העלה קובץ כקובץ הקשר",
|
||||
"com_ui_upload_file_search": "העלאה לחיפוש בקבצים",
|
||||
"com_ui_upload_files": "העלה קבצים",
|
||||
"com_ui_upload_image": "העלה תמונה",
|
||||
"com_ui_upload_image_input": "העלה תמונה",
|
||||
"com_ui_upload_invalid": "אין אפשרות להעלות את הקובץ. התמונה חורגת מהמגבלה",
|
||||
"com_ui_upload_invalid_var": "אין אפשרות להעלות את הקובץ. התמונה צריכה להיות בגודל של עד {{0}} MB",
|
||||
"com_ui_upload_ocr_text": "העלה קובץ כקובץ טקסט",
|
||||
"com_ui_upload_success": "הקובץ הועלה בהצלחה",
|
||||
"com_ui_upload_type": "בחר סוג העלאה",
|
||||
"com_ui_use_2fa_code": "השתמש בקוד אימות דו-שלבי (2FA) במקום",
|
||||
"com_ui_use_backup_code": "השתמש בקוד גיבוי במקום",
|
||||
"com_ui_use_micrphone": "שימוש במיקורפון",
|
||||
"com_ui_use_prompt": "השתמש בהנחיה (פרומפט)",
|
||||
"com_ui_used": "נוצל",
|
||||
"com_ui_variables": "משתנים",
|
||||
"com_ui_variables_info": "השתמש בסוגריים מסולסלות כפולות בטקסט שלך ליצירת משתנים, לדוגמא `{{example variable}}`, כדי למלא אותם מאוחר יותר בשימוש בהנחיה.",
|
||||
"com_ui_verify": "אמת",
|
||||
"com_ui_version_var": "גרסה {{0}}",
|
||||
"com_ui_versions": "גרסה",
|
||||
"com_ui_view_source": "הצג צ'אט מקורי",
|
||||
"com_ui_weekend_morning": "סוף שבוע נעים!",
|
||||
"com_ui_write": "כתיבה",
|
||||
"com_ui_x_selected": "{{0}} נבחר",
|
||||
"com_ui_yes": "כן",
|
||||
"com_ui_zoom": "זום",
|
||||
"com_user_message": "אתה",
|
||||
"com_warning_resubmit_unsupported": "שליחת הודעה מחדש אינה נתמכת עבור נקודת קצה זו."
|
||||
}
|
||||
852
packages/client/src/locales/hu/translation.json
Normal file
852
packages/client/src/locales/hu/translation.json
Normal file
|
|
@ -0,0 +1,852 @@
|
|||
{
|
||||
"chat_direction_left_to_right": "valaminek itt kell lennie. üres volt",
|
||||
"chat_direction_right_to_left": "valaminek itt kell lennie. üres volt",
|
||||
"com_a11y_ai_composing": "Az AI még mindig írja a választ.",
|
||||
"com_a11y_end": "Az AI befejezte a válaszát.",
|
||||
"com_a11y_start": "Az AI megkezdte a válaszát.",
|
||||
"com_agents_allow_editing": "Engedélyezze más felhasználóknak az ügynök szerkesztését",
|
||||
"com_agents_by_librechat": "a LibreChat által",
|
||||
"com_agents_code_interpreter": "Ha engedélyezve van, az ügynök használhatja a LibreChat Kódértelmező API-t a generált kód futtatására, beleértve a fájlfeldolgozást is, biztonságosan. Ehhez érvényes API-kulcs szükséges.",
|
||||
"com_agents_code_interpreter_title": "Kódértelmező API",
|
||||
"com_agents_create_error": "Hiba történt az ügynök létrehozása során.",
|
||||
"com_agents_description_placeholder": "Opcionális: Itt írja le az ügynökét",
|
||||
"com_agents_enable_file_search": "Fájlkeresés engedélyezése",
|
||||
"com_agents_file_context": "Fájlkontextus (OCR)",
|
||||
"com_agents_file_context_disabled": "Az ügynököt először létre kell hozni, mielőtt fájlokat tölthet fel a fájlkontextushoz.",
|
||||
"com_agents_file_context_info": "A „Kontextusként” feltöltött fájlokat OCR-rel dolgozzuk fel a szöveg kinyeréséhez, amelyet aztán az ügynök utasításaihoz adunk. Ideális dokumentumokhoz, szöveges képekhez vagy PDF-ekhez, ahol a teljes szövegtartalomra szükség van.",
|
||||
"com_agents_file_search_disabled": "Az ügynököt először létre kell hozni, mielőtt fájlokat tölthet fel a fájlkereséshez.",
|
||||
"com_agents_file_search_info": "Ha engedélyezve van, az ügynök értesül az alább felsorolt pontos fájlnevekről, lehetővé téve számára, hogy releváns kontextust szerezzen ezekből a fájlokból.",
|
||||
"com_agents_instructions_placeholder": "Az ügynök által használt rendszerutasítások",
|
||||
"com_agents_missing_provider_model": "Kérjük, válasszon szolgáltatót és modellt az ügynök létrehozása előtt.",
|
||||
"com_agents_name_placeholder": "Opcionális: Az ügynök neve",
|
||||
"com_agents_no_access": "Nincs jogosultsága ennek az ügynöknek a szerkesztéséhez.",
|
||||
"com_agents_not_available": "Az ügynök nem érhető el",
|
||||
"com_agents_search_name": "Ügynökök keresése név szerint",
|
||||
"com_agents_update_error": "Hiba történt az ügynök frissítése során.",
|
||||
"com_assistants_action_attempt": "Az asszisztens beszélni akar {{0}}-val",
|
||||
"com_assistants_actions": "Műveletek",
|
||||
"com_assistants_actions_disabled": "Először létre kell hoznia egy asszisztenst, mielőtt műveleteket adhatna hozzá.",
|
||||
"com_assistants_actions_info": "Engedélyezze az asszisztens számára, hogy információkat szerezzen be vagy műveleteket végezzen API-kon keresztül",
|
||||
"com_assistants_add_actions": "Műveletek hozzáadása",
|
||||
"com_assistants_add_tools": "Eszközök hozzáadása",
|
||||
"com_assistants_allow_sites_you_trust": "Csak megbízható webhelyeket engedélyezzen.",
|
||||
"com_assistants_append_date": "Aktuális dátum és idő hozzáfűzése",
|
||||
"com_assistants_append_date_tooltip": "Ha engedélyezve van, az aktuális kliens dátuma és ideje hozzáfűzésre kerül az asszisztens rendszerutasításaihoz.",
|
||||
"com_assistants_attempt_info": "Az asszisztens a következőket szeretné elküldeni:",
|
||||
"com_assistants_available_actions": "Elérhető műveletek",
|
||||
"com_assistants_capabilities": "Képességek",
|
||||
"com_assistants_code_interpreter": "Kódértelmező",
|
||||
"com_assistants_code_interpreter_files": "Az alábbi fájlok kizárólag a kódértelmezőhöz tartoznak:",
|
||||
"com_assistants_code_interpreter_info": "A kódértelmező lehetővé teszi az asszisztens számára, hogy kódot írjon és futtasson. Ez az eszköz különböző adatokat és formátumokat tartalmazó fájlokat képes feldolgozni, valamint fájlokat, például grafikonokat generálni.",
|
||||
"com_assistants_completed_action": "Beszélt {{0}}-val",
|
||||
"com_assistants_completed_function": "Futtatta: {{0}}",
|
||||
"com_assistants_conversation_starters": "Beszélgetésindítók",
|
||||
"com_assistants_conversation_starters_placeholder": "Adjon meg egy beszélgetésindítót",
|
||||
"com_assistants_create_error": "Hiba történt az asszisztens létrehozása során.",
|
||||
"com_assistants_create_success": "Sikeresen létrehozva",
|
||||
"com_assistants_delete_actions_error": "Hiba történt a művelet törlése során.",
|
||||
"com_assistants_delete_actions_success": "A művelet sikeresen törölve az asszisztensből",
|
||||
"com_assistants_description_placeholder": "Opcionális: Itt írja le az asszisztenst",
|
||||
"com_assistants_domain_info": "Az asszisztens ezt az információt küldte el {{0}}-nak",
|
||||
"com_assistants_file_search": "Fájlkeresés",
|
||||
"com_assistants_file_search_info": "A fájlkeresés lehetővé teszi az asszisztens számára, hogy tudást szerezzen az Ön vagy felhasználói által feltöltött fájlokból. A fájl feltöltése után az asszisztens automatikusan eldönti, mikor kell tartalmat lekérni a felhasználói kérések alapján. A vektortárolók csatolása a fájlkereséshez még nem támogatott. Ezeket a Provider Playgroundból csatolhatja, vagy üzenetekhez csatolhat fájlokat a szál alapú kereséshez.",
|
||||
"com_assistants_function_use": "Az asszisztens használta: {{0}}",
|
||||
"com_assistants_image_vision": "Képi látás",
|
||||
"com_assistants_instructions_placeholder": "Az asszisztens által használt rendszerutasítások",
|
||||
"com_assistants_knowledge": "Tudás",
|
||||
"com_assistants_knowledge_disabled": "Az asszisztenst először létre kell hozni, és a kódértelmezőt vagy a lekérdezést engedélyezni és menteni kell, mielőtt fájlokat tölthetne fel tudásként.",
|
||||
"com_assistants_knowledge_info": "Ha fájlokat tölt fel a Tudás alá, az asszisztenssel folytatott beszélgetések tartalmazhatják a fájlok tartalmát.",
|
||||
"com_assistants_max_starters_reached": "Elérte a beszélgetésindítók maximális számát",
|
||||
"com_assistants_name_placeholder": "Opcionális: Az asszisztens neve",
|
||||
"com_assistants_non_retrieval_model": "A fájlkeresés nem engedélyezett ezen a modellen. Kérjük, válasszon másik modellt.",
|
||||
"com_assistants_retrieval": "Lekérdezés",
|
||||
"com_assistants_running_action": "Művelet futtatása",
|
||||
"com_assistants_search_name": "Asszisztensek keresése név szerint",
|
||||
"com_assistants_update_actions_error": "Hiba történt a művelet létrehozása vagy frissítése során.",
|
||||
"com_assistants_update_actions_success": "A művelet sikeresen létrehozva vagy frissítve",
|
||||
"com_assistants_update_error": "Hiba történt az asszisztens frissítése során.",
|
||||
"com_assistants_update_success": "Sikeresen frissítve",
|
||||
"com_auth_already_have_account": "Már van fiókja?",
|
||||
"com_auth_apple_login": "Bejelentkezés Apple-lel",
|
||||
"com_auth_back_to_login": "Vissza a bejelentkezéshez",
|
||||
"com_auth_click": "Kattintson",
|
||||
"com_auth_click_here": "Kattintson ide",
|
||||
"com_auth_continue": "Folytatás",
|
||||
"com_auth_create_account": "Fiók létrehozása",
|
||||
"com_auth_discord_login": "Folytatás Discorddal",
|
||||
"com_auth_email": "E-mail",
|
||||
"com_auth_email_address": "E-mail cím",
|
||||
"com_auth_email_max_length": "Az e-mail nem lehet hosszabb 120 karakternél",
|
||||
"com_auth_email_min_length": "Az e-mailnek legalább 6 karakterből kell állnia",
|
||||
"com_auth_email_pattern": "Érvényes e-mail címet kell megadnia",
|
||||
"com_auth_email_required": "E-mail megadása kötelező",
|
||||
"com_auth_email_resend_link": "E-mail újraküldése",
|
||||
"com_auth_email_resent_failed": "Nem sikerült újra elküldeni az ellenőrző e-mailt",
|
||||
"com_auth_email_resent_success": "Az ellenőrző e-mail sikeresen újra elküldve",
|
||||
"com_auth_email_verification_failed": "Az e-mail ellenőrzése sikertelen",
|
||||
"com_auth_email_verification_failed_token_missing": "Ellenőrzés sikertelen, hiányzik a token",
|
||||
"com_auth_email_verification_in_progress": "E-mail ellenőrzése folyamatban, kérjük, várjon",
|
||||
"com_auth_email_verification_invalid": "Érvénytelen e-mail ellenőrzés",
|
||||
"com_auth_email_verification_redirecting": "Átirányítás {{0}} másodpercen belül...",
|
||||
"com_auth_email_verification_resend_prompt": "Nem kapta meg az e-mailt?",
|
||||
"com_auth_email_verification_success": "E-mail sikeresen ellenőrizve",
|
||||
"com_auth_email_verifying_ellipsis": "Ellenőrzés...",
|
||||
"com_auth_error_create": "Hiba történt a fiók regisztrálása során. Kérjük, próbálja újra.",
|
||||
"com_auth_error_invalid_reset_token": "Ez a jelszó-visszaállítási token már nem érvényes.",
|
||||
"com_auth_error_login": "Nem sikerült bejelentkezni az megadott adatokkal. Kérjük, ellenőrizze az adatokat és próbálja újra.",
|
||||
"com_auth_error_login_ban": "Fiókja ideiglenesen tiltva lett a szolgáltatásunk megsértése miatt.",
|
||||
"com_auth_error_login_rl": "Túl sok bejelentkezési kísérlet rövid időn belül. Kérjük, próbálja újra később.",
|
||||
"com_auth_error_login_server": "Belső szerverhiba történt. Kérjük, várjon néhány pillanatot, majd próbálja újra.",
|
||||
"com_auth_error_login_unverified": "Fiókja még nincs ellenőrizve. Kérjük, ellenőrizze e-mailjét az ellenőrző linkért.",
|
||||
"com_auth_facebook_login": "Folytatás Facebookkal",
|
||||
"com_auth_full_name": "Teljes név",
|
||||
"com_auth_github_login": "Folytatás GitHubbal",
|
||||
"com_auth_google_login": "Folytatás Google-lel",
|
||||
"com_auth_here": "ITT",
|
||||
"com_auth_login": "Bejelentkezés",
|
||||
"com_auth_login_with_new_password": "Most már bejelentkezhet az új jelszavával.",
|
||||
"com_auth_name_max_length": "A név nem lehet hosszabb 80 karakternél",
|
||||
"com_auth_name_min_length": "A névnek legalább 3 karakterből kell állnia",
|
||||
"com_auth_name_required": "Név megadása kötelező",
|
||||
"com_auth_no_account": "Nincs még fiókja?",
|
||||
"com_auth_password": "Jelszó",
|
||||
"com_auth_password_confirm": "Jelszó megerősítése",
|
||||
"com_auth_password_forgot": "Elfelejtette a jelszavát?",
|
||||
"com_auth_password_max_length": "A jelszó nem lehet hosszabb 128 karakternél",
|
||||
"com_auth_password_min_length": "A jelszónak legalább 8 karakterből kell állnia",
|
||||
"com_auth_password_not_match": "A jelszavak nem egyeznek",
|
||||
"com_auth_password_required": "Jelszó megadása kötelező",
|
||||
"com_auth_registration_success_generic": "Kérjük, ellenőrizze e-mailjét az e-mail cím ellenőrzéséhez.",
|
||||
"com_auth_registration_success_insecure": "Regisztráció sikeres.",
|
||||
"com_auth_reset_password": "Jelszó visszaállítása",
|
||||
"com_auth_reset_password_if_email_exists": "Ha létezik fiók ezzel az e-mail címmel, egy e-mailt küldtünk a jelszó-visszaállítási utasításokkal. Kérjük, ellenőrizze a spam mappáját is.",
|
||||
"com_auth_reset_password_link_sent": "E-mail elküldve",
|
||||
"com_auth_reset_password_success": "Jelszó visszaállítása sikeres",
|
||||
"com_auth_sign_in": "Bejelentkezés",
|
||||
"com_auth_sign_up": "Regisztráció",
|
||||
"com_auth_submit_registration": "Regisztráció elküldése",
|
||||
"com_auth_to_reset_your_password": "a jelszó visszaállításához.",
|
||||
"com_auth_to_try_again": "az újrapróbálkozáshoz.",
|
||||
"com_auth_two_factor": "Ellenőrizze kedvenc egyszeri jelszó alkalmazását egy kódért",
|
||||
"com_auth_username": "Felhasználónév (opcionális)",
|
||||
"com_auth_username_max_length": "A felhasználónév nem lehet hosszabb 20 karakternél",
|
||||
"com_auth_username_min_length": "A felhasználónévnek legalább 2 karakterből kell állnia",
|
||||
"com_auth_verify_your_identity": "Azonosság ellenőrzése",
|
||||
"com_auth_welcome_back": "Üdvözöljük újra",
|
||||
"com_click_to_download": "(kattintson ide a letöltéshez)",
|
||||
"com_download_expired": "(a letöltés lejárt)",
|
||||
"com_download_expires": "(kattintson ide a letöltéshez - lejár: {{0}})",
|
||||
"com_endpoint": "Végpont",
|
||||
"com_endpoint_agent": "Ügynök",
|
||||
"com_endpoint_agent_model": "Ügynökmodell (Ajánlott: GPT-3.5)",
|
||||
"com_endpoint_agent_placeholder": "Kérjük, válasszon egy ügynököt",
|
||||
"com_endpoint_ai": "AI",
|
||||
"com_endpoint_anthropic_maxoutputtokens": "A válaszban generálható tokenek maximális száma. Adjon meg alacsonyabb értéket rövidebb válaszokhoz és magasabb értéket hosszabb válaszokhoz. Megjegyzés: a modellek leállhatnak, mielőtt elérnék ezt a maximumot.",
|
||||
"com_endpoint_anthropic_prompt_cache": "A prompt gyorsítótárazása lehetővé teszi nagy kontextus vagy utasítások újrafelhasználását az API-hívások során, csökkentve a költségeket és a késleltetést",
|
||||
"com_endpoint_anthropic_temp": "0-tól 1-ig terjed. Használjon 0-hoz közelebbi értéket analitikus / feleletválasztós feladatokhoz, és 1-hez közelebbit kreatív és generatív feladatokhoz. Javasoljuk ennek vagy a Top P-nek a változtatását, de ne mindkettőt.",
|
||||
"com_endpoint_anthropic_thinking": "Belső érvelést tesz lehetővé a támogatott Claude modellekhez (3.7 Sonnet). Megjegyzés: ehhez a „Gondolkodási költségvetés” beállítása szükséges, és kisebbnek kell lennie, mint a „Maximális kimeneti tokenek”",
|
||||
"com_endpoint_anthropic_thinking_budget": "Meghatározza, hogy Claude hány tokent használhat maximum a belső érvelési folyamatához. Nagyobb költségvetés javíthatja a válasz minőségét azáltal, hogy alaposabb elemzést tesz lehetővé komplex problémákhoz, bár Claude nem feltétlenül használja fel az összes kiosztott költségvetést, különösen 32K feletti tartományokban. Ez a beállítás kisebb kell legyen, mint a „Maximális kimeneti tokenek.”",
|
||||
"com_endpoint_anthropic_topk": "A Top-k megváltoztatja, hogyan választja ki a modell a kimeneti tokeneket. A Top-k 1 azt jelenti, hogy a kiválasztott token a legvalószínűbb az összes token közül a modell szókincsében (ezt nevezik mohó dekódolásnak is), míg a Top-k 3 azt jelenti, hogy a következő token a 3 legvalószínűbb token közül kerül kiválasztásra (hőmérséklet használatával).",
|
||||
"com_endpoint_anthropic_topp": "A Top-p megváltoztatja, hogyan választja ki a modell a kimeneti tokeneket. A tokenek a legvalószínűbb K (lásd a topK paramétert) közül kerülnek kiválasztásra a legkevésbé valószínűig, amíg az összegük eléri a Top-p értéket.",
|
||||
"com_endpoint_assistant": "Asszisztens",
|
||||
"com_endpoint_assistant_model": "Asszisztensmodell",
|
||||
"com_endpoint_assistant_placeholder": "Kérjük, válasszon egy asszisztenst a jobb oldali panelről",
|
||||
"com_endpoint_completion": "Befejezés",
|
||||
"com_endpoint_completion_model": "Befejezési modell (Ajánlott: GPT-4)",
|
||||
"com_endpoint_config_click_here": "Kattintson ide",
|
||||
"com_endpoint_config_google_api_info": "A Generatív Nyelvi API kulcs megszerzéséhez (Geminihez),",
|
||||
"com_endpoint_config_google_api_key": "Google API kulcs",
|
||||
"com_endpoint_config_google_cloud_platform": "(a Google Cloud Platformról)",
|
||||
"com_endpoint_config_google_gemini_api": "(Gemini API)",
|
||||
"com_endpoint_config_google_service_key": "Google Szolgáltatási Fiók Kulcs",
|
||||
"com_endpoint_config_key": "API kulcs beállítása",
|
||||
"com_endpoint_config_key_encryption": "A kulcs titkosítva lesz és törlésre kerül ekkor:",
|
||||
"com_endpoint_config_key_for": "API kulcs beállítása ehhez:",
|
||||
"com_endpoint_config_key_google_need_to": "Szükséges",
|
||||
"com_endpoint_config_key_google_service_account": "Szolgáltatási fiók létrehozása",
|
||||
"com_endpoint_config_key_google_vertex_ai": "Vertex AI engedélyezése",
|
||||
"com_endpoint_config_key_google_vertex_api": "API a Google Cloudon, majd",
|
||||
"com_endpoint_config_key_google_vertex_api_role": "Ügyeljen arra, hogy a 'Létrehozás és folytatás' gombra kattintva legalább a 'Vertex AI Felhasználó' szerepkört adja meg. Végül hozzon létre egy JSON kulcsot, amelyet itt importálhat.",
|
||||
"com_endpoint_config_key_import_json_key": "Szolgáltatási fiók JSON kulcs importálása.",
|
||||
"com_endpoint_config_key_import_json_key_invalid": "Érvénytelen szolgáltatási fiók JSON kulcs, a megfelelő fájlt importálta?",
|
||||
"com_endpoint_config_key_import_json_key_success": "Szolgáltatási fiók JSON kulcs sikeresen importálva",
|
||||
"com_endpoint_config_key_name": "Kulcs",
|
||||
"com_endpoint_config_key_never_expires": "A kulcs soha nem jár le",
|
||||
"com_endpoint_config_placeholder": "Állítsa be a kulcsot a fejléc menüben a csevegéshez.",
|
||||
"com_endpoint_config_value": "Érték megadása ehhez:",
|
||||
"com_endpoint_context": "Kontextus",
|
||||
"com_endpoint_context_info": "A kontextushoz használható tokenek maximális száma. Ezzel szabályozható, hogy hány token kerül elküldésre kérésenként. Ha nincs megadva, a rendszer az ismert modellek kontextusmérete alapján alapértelmezett értékeket használ. Magasabb értékek beállítása hibákat és/vagy magasabb tokenköltséget eredményezhet.",
|
||||
"com_endpoint_context_tokens": "Maximális kontextus tokenek",
|
||||
"com_endpoint_custom_name": "Egyéni név",
|
||||
"com_endpoint_default": "alapértelmezett",
|
||||
"com_endpoint_default_blank": "alapértelmezett: üres",
|
||||
"com_endpoint_default_empty": "alapértelmezett: üres",
|
||||
"com_endpoint_default_with_num": "alapértelmezett: {{0}}",
|
||||
"com_endpoint_deprecated": "Elavult",
|
||||
"com_endpoint_deprecated_info": "Ez a végpont elavult, és a jövőbeli verziókban eltávolításra kerülhet, kérjük, használja helyette az ügynök végpontot",
|
||||
"com_endpoint_deprecated_info_a11y": "A bővítmény végpont elavult, és a jövőbeli verziókban eltávolításra kerülhet, kérjük, használja helyette az ügynök végpontot",
|
||||
"com_endpoint_examples": " Előre beállítottak",
|
||||
"com_endpoint_export": "Exportálás",
|
||||
"com_endpoint_export_share": "Exportálás/Megosztás",
|
||||
"com_endpoint_frequency_penalty": "Gyakorisági büntetés",
|
||||
"com_endpoint_func_hover": "A bővítmények OpenAI függvényekként való használatának engedélyezése",
|
||||
"com_endpoint_google_custom_name_placeholder": "Adjon egyedi nevet a Google-nak",
|
||||
"com_endpoint_google_maxoutputtokens": "A válaszban generálható tokenek maximális száma. Adjon meg alacsonyabb értéket rövidebb válaszokhoz és magasabb értéket hosszabb válaszokhoz. Megjegyzés: a modellek leállhatnak, mielőtt elérnék ezt a maximumot.",
|
||||
"com_endpoint_google_temp": "Magasabb értékek = véletlenszerűbb, alacsonyabb értékek = fókuszáltabb és determinisztikusabb. Javasoljuk ennek vagy a Top P-nek a változtatását, de ne mindkettőt.",
|
||||
"com_endpoint_google_topk": "A Top-k megváltoztatja, hogyan választja ki a modell a kimeneti tokeneket. A Top-k 1 azt jelenti, hogy a kiválasztott token a legvalószínűbb az összes token közül a modell szókincsében (ezt nevezik mohó dekódolásnak is), míg a Top-k 3 azt jelenti, hogy a következő token a 3 legvalószínűbb token közül kerül kiválasztásra (hőmérséklet használatával).",
|
||||
"com_endpoint_google_topp": "A Top-p megváltoztatja, hogyan választja ki a modell a kimeneti tokeneket. A tokenek a legvalószínűbb K (lásd a topK paramétert) közül kerülnek kiválasztásra a legkevésbé valószínűig, amíg az összegük eléri a Top-p értéket.",
|
||||
"com_endpoint_instructions_assistants": "Utasítások felülírása",
|
||||
"com_endpoint_instructions_assistants_placeholder": "Felülírja az asszisztens utasításait. Ez hasznos az egyedi futások során történő viselkedés módosításához.",
|
||||
"com_endpoint_max_output_tokens": "Maximális kimeneti tokenek",
|
||||
"com_endpoint_message": "Üzenet",
|
||||
"com_endpoint_message_new": "Üzenet {{0}}",
|
||||
"com_endpoint_message_not_appendable": "Szerkessze az üzenetet vagy generálja újra.",
|
||||
"com_endpoint_my_preset": "Saját előre beállított",
|
||||
"com_endpoint_no_presets": "Még nincsenek előre beállítottak, használja a beállítások gombot egy létrehozásához",
|
||||
"com_endpoint_open_menu": "Menü megnyitása",
|
||||
"com_endpoint_openai_custom_name_placeholder": "Adjon egyedi nevet az AI-nak",
|
||||
"com_endpoint_openai_detail": "A látási kérések felbontása. Az „Alacsony” olcsóbb és gyorsabb, a „Magas” részletesebb és drágább, az „Automatikus” pedig a két lehetőség közül választ a kép felbontása alapján.",
|
||||
"com_endpoint_openai_freq": "-2.0 és 2.0 közötti szám. A pozitív értékek büntetik az új tokeneket az eddigi szövegben való meglévő gyakoriságuk alapján, csökkentve a modell azon valószínűségét, hogy ugyanazt a sort szó szerint megismételje.",
|
||||
"com_endpoint_openai_max": "A generálható tokenek maximális száma. A bemeneti és generált tokenek teljes hossza a modell kontextushosszúságával korlátozott.",
|
||||
"com_endpoint_openai_max_tokens": "Opcionális 'max_tokens' mező, amely a csevegés befejezésében generálható tokenek maximális számát jelenti. A bemeneti és generált tokenek teljes hossza a modell kontextushosszával korlátozott. Hibák léphetnek fel, ha ez a szám meghaladja a maximális kontextus tokeneket.",
|
||||
"com_endpoint_openai_pres": "-2.0 és 2.0 közötti szám. A pozitív értékek büntetik az új tokeneket az eddigi szövegben való megjelenésük alapján, növelve a modell azon valószínűségét, hogy új témákról beszéljen.",
|
||||
"com_endpoint_openai_prompt_prefix_placeholder": "Adjon meg egyedi utasításokat a rendszerüzenetbe való belefoglaláshoz. Alapértelmezett: nincs",
|
||||
"com_endpoint_openai_reasoning_effort": "Csak o1 modellek: korlátozza az érvelési erőfeszítést az érvelési modelleknél. Az érvelési erőfeszítés csökkentése gyorsabb válaszokat és kevesebb tokenhasználatot eredményezhet az érvelésben egy válaszon belül.",
|
||||
"com_endpoint_openai_resend": "Az összes korábban csatolt kép újraküldése. Megjegyzés: ez jelentősen növelheti a tokenköltséget, és hibák léphetnek fel sok képi csatolmány esetén.",
|
||||
"com_endpoint_openai_resend_files": "Az összes korábban csatolt fájl újraküldése. Megjegyzés: ez növeli a tokenköltséget, és hibák léphetnek fel sok csatolmány esetén.",
|
||||
"com_endpoint_openai_stop": "Legfeljebb 4 olyan sorozat, ahol az API leállítja a további tokenek generálását.",
|
||||
"com_endpoint_openai_temp": "Magasabb értékek = véletlenszerűbb, alacsonyabb értékek = fókuszáltabb és determinisztikusabb. Javasoljuk ennek vagy a Top P-nek a változtatását, de ne mindkettőt.",
|
||||
"com_endpoint_openai_topp": "A hőmérséklettel való mintavételezés alternatívája, az úgynevezett nukleusz mintavételezés, ahol a modell a top_p valószínűségi tömeggel rendelkező tokenek eredményeit veszi figyelembe. Tehát 0.1 azt jelenti, hogy csak a felső 10% valószínűségi tömeget alkotó tokenek kerülnek figyelembe vételre. Javasoljuk ennek vagy a hőmérsékletnek a változtatását, de ne mindkettőt.",
|
||||
"com_endpoint_output": "Kimenet",
|
||||
"com_endpoint_plug_image_detail": "Kép részletei",
|
||||
"com_endpoint_plug_resend_files": "Fájlok újraküldése",
|
||||
"com_endpoint_plug_set_custom_instructions_for_gpt_placeholder": "Adjon meg egyedi utasításokat a rendszerüzenetbe való belefoglaláshoz. Alapértelmezett: nincs",
|
||||
"com_endpoint_plug_skip_completion": "Befejezés kihagyása",
|
||||
"com_endpoint_plug_use_functions": "Függvények használata",
|
||||
"com_endpoint_presence_penalty": "Jelenléti büntetés",
|
||||
"com_endpoint_preset": "előre beállított",
|
||||
"com_endpoint_preset_custom_name_placeholder": "valaminek itt kell lennie. üres volt",
|
||||
"com_endpoint_preset_default": "mostantól az alapértelmezett előre beállított.",
|
||||
"com_endpoint_preset_default_item": "Alapértelmezett:",
|
||||
"com_endpoint_preset_default_none": "Nincs aktív alapértelmezett előre beállított.",
|
||||
"com_endpoint_preset_default_removed": "már nem az alapértelmezett előre beállított.",
|
||||
"com_endpoint_preset_delete_confirm": "Biztosan törölni szeretné ezt az előre beállítottat?",
|
||||
"com_endpoint_preset_delete_error": "Hiba történt az előre beállított törlése során. Kérjük, próbálja újra.",
|
||||
"com_endpoint_preset_import": "Előre beállított importálva!",
|
||||
"com_endpoint_preset_import_error": "Hiba történt az előre beállított importálása során. Kérjük, próbálja újra.",
|
||||
"com_endpoint_preset_name": "Előre beállított neve",
|
||||
"com_endpoint_preset_save_error": "Hiba történt az előre beállított mentése során. Kérjük, próbálja újra.",
|
||||
"com_endpoint_preset_selected": "Előre beállított aktiválva!",
|
||||
"com_endpoint_preset_selected_title": "Aktív!",
|
||||
"com_endpoint_preset_title": "Előre beállított",
|
||||
"com_endpoint_presets": "előre beállítottak",
|
||||
"com_endpoint_presets_clear_warning": "Biztosan törölni szeretné az összes előre beállítottat? Ez visszafordíthatatlan.",
|
||||
"com_endpoint_prompt_cache": "Prompt gyorsítótár használata",
|
||||
"com_endpoint_prompt_prefix": "Egyéni utasítások",
|
||||
"com_endpoint_prompt_prefix_assistants": "További utasítások",
|
||||
"com_endpoint_prompt_prefix_assistants_placeholder": "Adjon meg további utasításokat vagy kontextust az asszisztens fő utasításaihoz. Üresen hagyva figyelmen kívül marad.",
|
||||
"com_endpoint_prompt_prefix_placeholder": "Adjon meg egyedi utasításokat vagy kontextust. Üresen hagyva figyelmen kívül marad.",
|
||||
"com_endpoint_reasoning_effort": "Érvelési erőfeszítés",
|
||||
"com_endpoint_save_as_preset": "Mentés előre beállítottként",
|
||||
"com_endpoint_search": "Végpont keresése név szerint",
|
||||
"com_endpoint_search_endpoint_models": "{{0}} modellek keresése...",
|
||||
"com_endpoint_search_models": "Modellek keresése...",
|
||||
"com_endpoint_search_var": "{{0}} keresése...",
|
||||
"com_endpoint_set_custom_name": "Adjon meg egyedi nevet, hogy megtalálhassa ezt az előre beállítottat",
|
||||
"com_endpoint_skip_hover": "A befejezési lépés kihagyásának engedélyezése, amely áttekinti a végső választ és a generált lépéseket",
|
||||
"com_endpoint_stop": "Leállási sorozatok",
|
||||
"com_endpoint_stop_placeholder": "Az értékeket az `Enter` megnyomásával különítse el",
|
||||
"com_endpoint_temperature": "Hőmérséklet",
|
||||
"com_endpoint_thinking": "Gondolkodás",
|
||||
"com_endpoint_thinking_budget": "Gondolkodási költségvetés",
|
||||
"com_endpoint_top_k": "Top K",
|
||||
"com_endpoint_top_p": "Top P",
|
||||
"com_endpoint_use_active_assistant": "Aktív asszisztens használata",
|
||||
"com_error_expired_user_key": "A megadott kulcs {{0}}-hoz lejárt {{1}}-kor. Kérjük, adjon meg egy új kulcsot, és próbálja újra.",
|
||||
"com_error_files_dupe": "Duplikált fájl észlelve.",
|
||||
"com_error_files_empty": "Üres fájlok nem engedélyezettek.",
|
||||
"com_error_files_process": "Hiba történt a fájl feldolgozása során.",
|
||||
"com_error_files_unsupported_capability": "Nincs engedélyezve olyan képesség, amely támogatja ezt a fájltípust.",
|
||||
"com_error_files_upload": "Hiba történt a fájl feltöltése során.",
|
||||
"com_error_files_upload_canceled": "A fájlfeltöltési kérés megszakítva. Megjegyzés: a fájlfeltöltés még folyamatban lehet, és manuálisan kell törölni.",
|
||||
"com_error_files_validation": "Hiba történt a fájl ellenőrzése során.",
|
||||
"com_error_input_length": "A legutóbbi üzenet token száma túl hosszú, meghaladja a tokenkorlátot, vagy a tokenkorlát paraméterei rosszul vannak konfigurálva, ami hátrányosan befolyásolja a kontextusablakot. További információ: {{0}}. Kérjük, rövidítse le az üzenetét, állítsa be a maximális kontextusméretet a beszélgetési paraméterekből, vagy ágazza el a beszélgetést a folytatáshoz.",
|
||||
"com_error_invalid_agent_provider": "A „{{0}}” szolgáltató nem érhető el az ügynökökkel való használatra. Kérjük, lépjen az ügynök beállításaihoz, és válasszon egy jelenleg elérhető szolgáltatót.",
|
||||
"com_error_invalid_user_key": "Érvénytelen kulcs került megadásra. Kérjük, adjon meg egy érvényes kulcsot, és próbálja újra.",
|
||||
"com_error_moderation": "Úgy tűnik, a benyújtott tartalmat moderációs rendszerünk jelölte meg, mert nem felel meg közösségi irányelveinknek. Nem tudunk továbblépni ezzel a konkrét témával. Ha további kérdései vagy más témákban szeretne beszélni, kérjük, szerkessze az üzenetét, vagy hozzon létre új beszélgetést.",
|
||||
"com_error_no_base_url": "Nem található alap URL. Kérjük, adjon meg egyet, és próbálja újra.",
|
||||
"com_error_no_user_key": "Nem található kulcs. Kérjük, adjon meg egy kulcsot, és próbálja újra.",
|
||||
"com_files_filter": "Fájlok szűrése...",
|
||||
"com_files_no_results": "Nincs találat.",
|
||||
"com_files_number_selected": "{{0}} / {{1}} elem kiválasztva",
|
||||
"com_files_table": "valaminek itt kell lennie. üres volt",
|
||||
"com_generated_files": "Generált fájlok:",
|
||||
"com_hide_examples": "Példák elrejtése",
|
||||
"com_nav_2fa": "Kétfaktoros hitelesítés (2FA)",
|
||||
"com_nav_account_settings": "Fiókbeállítások",
|
||||
"com_nav_always_make_prod": "Mindig készítse el az új verziókat élesben",
|
||||
"com_nav_archive_created_at": "Archiválás dátuma",
|
||||
"com_nav_archive_name": "Név",
|
||||
"com_nav_archived_chats": "Archivált csevegések",
|
||||
"com_nav_at_command": "@-Parancs",
|
||||
"com_nav_at_command_description": "„@” parancs váltása a végpontok, modellek, előre beállítottak stb. váltásához",
|
||||
"com_nav_audio_play_error": "Hiba az audió lejátszása során: {{0}}",
|
||||
"com_nav_audio_process_error": "Hiba az audió feldolgozása során: {{0}}",
|
||||
"com_nav_auto_scroll": "Automatikus görgetés a legutóbbi üzenetre a csevegés megnyitásakor",
|
||||
"com_nav_auto_send_prompts": "Promptok automatikus küldése",
|
||||
"com_nav_auto_send_text": "Szöveg automatikus küldése",
|
||||
"com_nav_auto_send_text_disabled": "-1 beállítása a letiltáshoz",
|
||||
"com_nav_auto_transcribe_audio": "Audió automatikus átírása",
|
||||
"com_nav_automatic_playback": "Legutóbbi üzenet automatikus lejátszása",
|
||||
"com_nav_balance": "Egyenleg",
|
||||
"com_nav_browser": "Böngésző",
|
||||
"com_nav_center_chat_input": "Csevegőbevitel középre helyezése az üdvözlőképernyőn",
|
||||
"com_nav_change_picture": "Kép módosítása",
|
||||
"com_nav_chat_commands": "Csevegőparancsok",
|
||||
"com_nav_chat_commands_info": "Ezek a parancsok az üzenet elején megadott speciális karakterekkel aktiválhatók. Minden parancs a kijelölt előtaggal indul. Letilthatja őket, ha gyakran használja ezeket a karaktereket üzenetek kezdetén.",
|
||||
"com_nav_chat_direction": "Csevegés iránya",
|
||||
"com_nav_clear_all_chats": "Összes csevegés törlése",
|
||||
"com_nav_clear_cache_confirm_message": "Biztosan törölni szeretné a gyorsítótárat?",
|
||||
"com_nav_clear_conversation": "Beszélgetések törlése",
|
||||
"com_nav_clear_conversation_confirm_message": "Biztosan törölni szeretné az összes beszélgetést? Ez visszafordíthatatlan.",
|
||||
"com_nav_close_sidebar": "Oldalsáv bezárása",
|
||||
"com_nav_commands": "Parancsok",
|
||||
"com_nav_confirm_clear": "Törlés megerősítése",
|
||||
"com_nav_conversation_mode": "Beszélgetési mód",
|
||||
"com_nav_convo_menu_options": "Beszélgetési menü opciók",
|
||||
"com_nav_db_sensitivity": "Decibel érzékenység",
|
||||
"com_nav_delete_account": "Fiók törlése",
|
||||
"com_nav_delete_account_button": "Fiókom végleges törlése",
|
||||
"com_nav_delete_account_confirm": "Fiók törlése - biztos benne?",
|
||||
"com_nav_delete_account_email_placeholder": "Kérjük, adja meg fiókja e-mail címét",
|
||||
"com_nav_delete_cache_storage": "TTS gyorsítótár tárolásának törlése",
|
||||
"com_nav_delete_data_info": "Minden adata törlésre kerül.",
|
||||
"com_nav_delete_warning": "FIGYELEM: Ez véglegesen törli fiókját.",
|
||||
"com_nav_edit_chat_badges": "Csevegőjelvények szerkesztése",
|
||||
"com_nav_enable_cache_tts": "TTS gyorsítótár engedélyezése",
|
||||
"com_nav_enable_cloud_browser_voice": "Felhőalapú hangok használata",
|
||||
"com_nav_enabled": "Engedélyezve",
|
||||
"com_nav_engine": "Motor",
|
||||
"com_nav_enter_to_send": "Üzenetek küldése az Enter megnyomásával",
|
||||
"com_nav_export": "Exportálás",
|
||||
"com_nav_export_all_message_branches": "Összes üzenetág exportálása",
|
||||
"com_nav_export_conversation": "Beszélgetés exportálása",
|
||||
"com_nav_export_filename": "Fájlnév",
|
||||
"com_nav_export_filename_placeholder": "Adja meg a fájlnevet",
|
||||
"com_nav_export_include_endpoint_options": "Végpont opciók belefoglalása",
|
||||
"com_nav_export_recursive": "Rekurzív",
|
||||
"com_nav_export_recursive_or_sequential": "Rekurzív vagy szekvenciális?",
|
||||
"com_nav_export_type": "Típus",
|
||||
"com_nav_external": "Külső",
|
||||
"com_nav_font_size": "Üzenet betűmérete",
|
||||
"com_nav_font_size_base": "Közepes",
|
||||
"com_nav_font_size_lg": "Nagy",
|
||||
"com_nav_font_size_sm": "Kicsi",
|
||||
"com_nav_font_size_xl": "Extra nagy",
|
||||
"com_nav_font_size_xs": "Extra kicsi",
|
||||
"com_nav_help_faq": "Segítség és GYIK",
|
||||
"com_nav_hide_panel": "Legjobb oldalsó panel elrejtése",
|
||||
"com_nav_info_code_artifacts": "Engedélyezi a kísérleti kód műtermékek megjelenítését a csevegés mellett",
|
||||
"com_nav_info_code_artifacts_agent": "Engedélyezi a kód műtermékek használatát ehhez az ügynökhöz. Alapértelmezés szerint a műtermékek használatára vonatkozó további utasítások hozzáadódnak, kivéve, ha az „Egyéni prompt mód” engedélyezve van.",
|
||||
"com_nav_info_custom_prompt_mode": "Ha engedélyezve van, az alapértelmezett műtermék rendszerprompt nem kerül belefoglalásra. Ebben a módban minden műtermék-generáló utasítást manuálisan kell megadni.",
|
||||
"com_nav_info_enter_to_send": "Ha engedélyezve van, az `ENTER` megnyomása elküldi az üzenetet. Ha letiltva van, az Enter új sort ad, és a `CTRL + ENTER` / `⌘ + ENTER` szükséges az üzenet elküldéséhez.",
|
||||
"com_nav_info_fork_change_default": "„Csak látható üzenetek” csak a kiválasztott üzenethez vezető közvetlen utat tartalmazza. „Kapcsolódó ágak belefoglalása” az útvonal menti ágakat is hozzáadja. „Mindent innen/ide belefoglalása” minden kapcsolódó üzenetet és ágat tartalmaz.",
|
||||
"com_nav_info_fork_split_target_setting": "Ha engedélyezve van, az elágazás a célüzenettől a beszélgetés legutóbbi üzenetéig kezdődik, a kiválasztott viselkedés szerint.",
|
||||
"com_nav_info_include_shadcnui": "Ha engedélyezve van, a shadcn/ui komponensek használatára vonatkozó utasítások belefoglalásra kerülnek. A shadcn/ui egy újrahasználható komponensek gyűjteménye, amelyet Radix UI és Tailwind CSS segítségével építettek. Megjegyzés: ezek hosszú utasítások, csak akkor engedélyezze, ha fontos az LLM-nek a helyes importok és komponensek megadása. További információ ezekről a komponensekről: https://ui.shadcn.com/",
|
||||
"com_nav_info_latex_parsing": "Ha engedélyezve van, az üzenetekben lévő LaTeX kód matematikai egyenletekként kerül megjelenítésre. Ennek letiltása javíthatja a teljesítményt, ha nincs szüksége LaTeX megjelenítésre.",
|
||||
"com_nav_info_save_badges_state": "Ha engedélyezve van, a csevegőjelvények állapota mentésre kerül. Ez azt jelenti, hogy ha új csevegést hoz létre, a jelvények ugyanabban az állapotban maradnak, mint az előző csevegésben. Ha letiltja ezt az opciót, a jelvények minden új csevegés létrehozásakor visszaállnak az alapértelmezett állapotukra.",
|
||||
"com_nav_info_save_draft": "Ha engedélyezve van, a csevegő űrlapban megadott szöveg és csatolmányok automatikusan helyben piszkozatként mentésre kerülnek. Ezek a piszkozatok akkor is elérhetők maradnak, ha újratölti az oldalt vagy másik beszélgetésre vált. A piszkozatok helyben tárolódnak az eszközén, és törlődnek, miután az üzenet elküldésre kerül.",
|
||||
"com_nav_info_show_thinking": "Ha engedélyezve van, a csevegés alapértelmezés szerint nyitott gondolkodási legördülő menüket jelenít meg, lehetővé téve az AI érvelésének valós idejű megtekintését. Ha letiltva van, a gondolkodási legördülő menük alapértelmezés szerint zárva maradnak egy letisztultabb és egyszerűbb felület érdekében.",
|
||||
"com_nav_info_user_name_display": "Ha engedélyezve van, a küldő felhasználóneve megjelenik minden elküldött üzenet felett. Ha letiltva van, csak „Ön” jelenik meg az üzenetei felett.",
|
||||
"com_nav_lang_arabic": "العربية",
|
||||
"com_nav_lang_auto": "Automatikus felismerés",
|
||||
"com_nav_lang_brazilian_portuguese": "Português Brasileiro",
|
||||
"com_nav_lang_chinese": "中文",
|
||||
"com_nav_lang_dutch": "Nederlands",
|
||||
"com_nav_lang_english": "English",
|
||||
"com_nav_lang_estonian": "Eesti keel",
|
||||
"com_nav_lang_finnish": "Suomi",
|
||||
"com_nav_lang_french": "Français",
|
||||
"com_nav_lang_georgian": "ქართული",
|
||||
"com_nav_lang_german": "Deutsch",
|
||||
"com_nav_lang_hebrew": "עברית",
|
||||
"com_nav_lang_hungarian": "Magyar",
|
||||
"com_nav_lang_indonesia": "Indonesia",
|
||||
"com_nav_lang_italian": "Italiano",
|
||||
"com_nav_lang_japanese": "日本語",
|
||||
"com_nav_lang_korean": "한국어",
|
||||
"com_nav_lang_persian": "فارسی",
|
||||
"com_nav_lang_polish": "Polski",
|
||||
"com_nav_lang_portuguese": "Português",
|
||||
"com_nav_lang_russian": "Русский",
|
||||
"com_nav_lang_spanish": "Español",
|
||||
"com_nav_lang_swedish": "Svenska",
|
||||
"com_nav_lang_thai": "ไทย",
|
||||
"com_nav_lang_traditional_chinese": "繁體中文",
|
||||
"com_nav_lang_turkish": "Türkçe",
|
||||
"com_nav_lang_vietnamese": "Tiếng Việt",
|
||||
"com_nav_language": "Nyelv",
|
||||
"com_nav_latex_parsing": "LaTeX elemzése üzenetekben (hatással lehet a teljesítményre)",
|
||||
"com_nav_log_out": "Kijelentkezés",
|
||||
"com_nav_long_audio_warning": "Hosszabb szövegek feldolgozása több időt vehet igénybe.",
|
||||
"com_nav_maximize_chat_space": "Csevegőterület maximalizálása",
|
||||
"com_nav_modular_chat": "Végpontok váltásának engedélyezése beszélgetés közben",
|
||||
"com_nav_my_files": "Saját fájlok",
|
||||
"com_nav_not_supported": "Nem támogatott",
|
||||
"com_nav_open_sidebar": "Oldalsáv megnyitása",
|
||||
"com_nav_playback_rate": "Audió lejátszási sebesség",
|
||||
"com_nav_plugin_auth_error": "Hiba történt a bővítmény hitelesítése során. Kérjük, próbálja újra.",
|
||||
"com_nav_plugin_install": "Telepítés",
|
||||
"com_nav_plugin_search": "Bővítmények keresése",
|
||||
"com_nav_plugin_store": "Bővítménybolt",
|
||||
"com_nav_plugin_uninstall": "Eltávolítás",
|
||||
"com_nav_plus_command": "+-Parancs",
|
||||
"com_nav_plus_command_description": "„+” parancs váltása a többszörös válasz beállítás hozzáadásához",
|
||||
"com_nav_profile_picture": "Profilkép",
|
||||
"com_nav_save_badges_state": "Jelvények állapotának mentése",
|
||||
"com_nav_save_drafts": "Piszkozatok helyi mentése",
|
||||
"com_nav_scroll_button": "Görgetés a végére gomb",
|
||||
"com_nav_search_placeholder": "Üzenetek keresése",
|
||||
"com_nav_send_message": "Üzenet küldése",
|
||||
"com_nav_setting_account": "Fiók",
|
||||
"com_nav_setting_beta": "Béta funkciók",
|
||||
"com_nav_setting_chat": "Csevegés",
|
||||
"com_nav_setting_data": "Adatvezérlők",
|
||||
"com_nav_setting_general": "Általános",
|
||||
"com_nav_setting_speech": "Beszéd",
|
||||
"com_nav_settings": "Beállítások",
|
||||
"com_nav_shared_links": "Megosztott linkek",
|
||||
"com_nav_show_code": "Mindig mutassa a kódot a kódértelmező használatakor",
|
||||
"com_nav_show_thinking": "Gondolkodási legördülők alapértelmezett megnyitása",
|
||||
"com_nav_slash_command": "/-Parancs",
|
||||
"com_nav_slash_command_description": "„/” parancs váltása a prompt billentyűzettel történő kiválasztásához",
|
||||
"com_nav_speech_to_text": "Beszédből szöveg",
|
||||
"com_nav_stop_generating": "Generálás leállítása",
|
||||
"com_nav_text_to_speech": "Szövegből beszéd",
|
||||
"com_nav_theme": "Téma",
|
||||
"com_nav_theme_dark": "Sötét",
|
||||
"com_nav_theme_light": "Világos",
|
||||
"com_nav_theme_system": "Rendszer",
|
||||
"com_nav_tool_dialog": "Asszisztens eszközök",
|
||||
"com_nav_tool_dialog_agents": "Ügynök eszközök",
|
||||
"com_nav_tool_dialog_description": "Az asszisztenst menteni kell az eszközválasztások megőrzéséhez.",
|
||||
"com_nav_tool_remove": "Eltávolítás",
|
||||
"com_nav_tool_search": "Eszközök keresése",
|
||||
"com_nav_user": "FELHASZNÁLÓ",
|
||||
"com_nav_user_msg_markdown": "Felhasználói üzenetek markdownként való megjelenítése",
|
||||
"com_nav_user_name_display": "Felhasználónév megjelenítése az üzenetekben",
|
||||
"com_nav_voice_select": "Hang",
|
||||
"com_show_agent_settings": "Ügynökbeállítások megjelenítése",
|
||||
"com_show_completion_settings": "Befejezési beállítások megjelenítése",
|
||||
"com_show_examples": "Példák megjelenítése",
|
||||
"com_sidepanel_agent_builder": "Ügynöképítő",
|
||||
"com_sidepanel_assistant_builder": "Asszisztensépítő",
|
||||
"com_sidepanel_attach_files": "Fájlok csatolása",
|
||||
"com_sidepanel_conversation_tags": "Könyvjelzők",
|
||||
"com_sidepanel_hide_panel": "Panel elrejtése",
|
||||
"com_sidepanel_manage_files": "Fájlok kezelése",
|
||||
"com_sidepanel_parameters": "Paraméterek",
|
||||
"com_ui_2fa_account_security": "A kétfaktoros hitelesítés további biztonsági réteget ad fiókjához",
|
||||
"com_ui_2fa_disable": "2FA letiltása",
|
||||
"com_ui_2fa_disable_error": "Hiba történt a kétfaktoros hitelesítés letiltása során",
|
||||
"com_ui_2fa_disabled": "A 2FA letiltva",
|
||||
"com_ui_2fa_enable": "2FA engedélyezése",
|
||||
"com_ui_2fa_enabled": "A 2FA engedélyezve",
|
||||
"com_ui_2fa_generate_error": "Hiba történt a kétfaktoros hitelesítési beállítások generálása során",
|
||||
"com_ui_2fa_invalid": "Érvénytelen kétfaktoros hitelesítési kód",
|
||||
"com_ui_2fa_setup": "2FA beállítása",
|
||||
"com_ui_2fa_verified": "A kétfaktoros hitelesítés sikeresen ellenőrizve",
|
||||
"com_ui_accept": "Elfogadom",
|
||||
"com_ui_add": "Hozzáadás",
|
||||
"com_ui_add_model_preset": "Modell vagy előre beállított hozzáadása további válaszhoz",
|
||||
"com_ui_add_multi_conversation": "Többes beszélgetés hozzáadása",
|
||||
"com_ui_admin": "Admin",
|
||||
"com_ui_admin_access_warning": "Az adminisztrátori hozzáférés letiltása ehhez a funkcióhoz váratlan kezelőfelületi problémákat okozhat, amelyek frissítést igényelnek. Ha mentésre kerül, a visszaállítás egyetlen módja a librechat.yaml konfigurációs fájlban található interfész beállítás, amely minden szerepkörre hatással van.",
|
||||
"com_ui_admin_settings": "Adminisztrátori beállítások",
|
||||
"com_ui_advanced": "Haladó",
|
||||
"com_ui_advanced_settings": "Haladó beállítások",
|
||||
"com_ui_agent": "Ügynök",
|
||||
"com_ui_agent_chain": "Ügynöklánc (Ügynökök keveréke)",
|
||||
"com_ui_agent_chain_info": "Lehetővé teszi ügynökök sorozatának létrehozását. Minden ügynök hozzáférhet az előző ügynökök kimeneteihez a láncban. Az „Ügynökök keveréke” architektúrán alapul, ahol az ügynökök az előző kimeneteket segédinformációként használják.",
|
||||
"com_ui_agent_chain_max": "Elérte a maximum {{0}} ügynököt.",
|
||||
"com_ui_agent_delete_error": "Hiba történt az ügynök törlése során",
|
||||
"com_ui_agent_deleted": "Ügynök sikeresen törölve",
|
||||
"com_ui_agent_duplicate_error": "Hiba történt az ügynök duplikálása során",
|
||||
"com_ui_agent_duplicated": "Ügynök sikeresen duplikálva",
|
||||
"com_ui_agent_editing_allowed": "Más felhasználók már szerkeszthetik ezt az ügynököt",
|
||||
"com_ui_agent_recursion_limit": "Maximális ügynöklépések",
|
||||
"com_ui_agent_recursion_limit_info": "Korlátozza, hogy az ügynök hány lépést tehet egy futás során, mielőtt végső választ adna. Alapértelmezett érték 25 lépés. Egy lépés lehet egy AI API kérés vagy egy eszközhasználati kör. Például egy alapvető eszközinterakció 3 lépést igényel: kezdeti kérés, eszközhasználat és követő kérés.",
|
||||
"com_ui_agent_shared_to_all": "valaminek itt kell lennie. üres volt",
|
||||
"com_ui_agent_var": "{{0}} ügynök",
|
||||
"com_ui_agents": "Ügynökök",
|
||||
"com_ui_agents_allow_create": "Ügynökök létrehozásának engedélyezése",
|
||||
"com_ui_agents_allow_share_global": "Ügynökök megosztásának engedélyezése minden felhasználóval",
|
||||
"com_ui_agents_allow_use": "Ügynökök használatának engedélyezése",
|
||||
"com_ui_all": "mind",
|
||||
"com_ui_all_proper": "Mind",
|
||||
"com_ui_analyzing": "Elemzés",
|
||||
"com_ui_analyzing_finished": "Elemzés befejezve",
|
||||
"com_ui_api_key": "API kulcs",
|
||||
"com_ui_archive": "Archiválás",
|
||||
"com_ui_archive_error": "Nem sikerült archiválni a beszélgetést",
|
||||
"com_ui_artifact_click": "Kattintson a megnyitáshoz",
|
||||
"com_ui_artifacts": "Műtermékek",
|
||||
"com_ui_artifacts_toggle": "Műtermék kezelőfelület váltása",
|
||||
"com_ui_artifacts_toggle_agent": "Műtermékek engedélyezése",
|
||||
"com_ui_ascending": "Növekvő",
|
||||
"com_ui_assistant": "Asszisztens",
|
||||
"com_ui_assistant_delete_error": "Hiba történt az asszisztens törlése során",
|
||||
"com_ui_assistant_deleted": "Asszisztens sikeresen törölve",
|
||||
"com_ui_assistants": "Asszisztensek",
|
||||
"com_ui_assistants_output": "Asszisztensek kimenete",
|
||||
"com_ui_attach_error": "Nem lehet fájlt csatolni. Hozzon létre vagy válasszon egy beszélgetést, vagy próbálja meg frissíteni az oldalt.",
|
||||
"com_ui_attach_error_openai": "Nem lehet asszisztens fájlokat csatolni más végpontokhoz",
|
||||
"com_ui_attach_error_size": "Fájlméret korlát túllépve a végponthoz:",
|
||||
"com_ui_attach_error_type": "Nem támogatott fájltípus a végponthoz:",
|
||||
"com_ui_attach_remove": "Fájl eltávolítása",
|
||||
"com_ui_attach_warn_endpoint": "A nem asszisztens fájlokat figyelmen kívül hagyhatják kompatibilis eszköz nélkül",
|
||||
"com_ui_attachment": "Csatolmány",
|
||||
"com_ui_auth_type": "Hitelesítési típus",
|
||||
"com_ui_auth_url": "Engedélyezési URL",
|
||||
"com_ui_authentication": "Hitelesítés",
|
||||
"com_ui_authentication_type": "Hitelesítési típus",
|
||||
"com_ui_avatar": "Avatár",
|
||||
"com_ui_azure": "Azure",
|
||||
"com_ui_back_to_chat": "Vissza a csevegéshez",
|
||||
"com_ui_back_to_prompts": "Vissza a promptokhoz",
|
||||
"com_ui_backup_codes": "Biztonsági mentési kódok",
|
||||
"com_ui_backup_codes_regenerate_error": "Hiba történt a biztonsági mentési kódok újragenerálása során",
|
||||
"com_ui_backup_codes_regenerated": "A biztonsági mentési kódok sikeresen újragenerálva",
|
||||
"com_ui_basic": "Alap",
|
||||
"com_ui_basic_auth_header": "Alapvető engedélyezési fejléc",
|
||||
"com_ui_bearer": "Bearer",
|
||||
"com_ui_bookmark_delete_confirm": "Biztosan törölni szeretné ezt a könyvjelzőt?",
|
||||
"com_ui_bookmarks": "Könyvjelzők",
|
||||
"com_ui_bookmarks_add": "Könyvjelzők hozzáadása",
|
||||
"com_ui_bookmarks_add_to_conversation": "Hozzáadás az aktuális beszélgetéshez",
|
||||
"com_ui_bookmarks_count": "Szám",
|
||||
"com_ui_bookmarks_create_error": "Hiba történt a könyvjelző létrehozása során",
|
||||
"com_ui_bookmarks_create_exists": "Ez a könyvjelző már létezik",
|
||||
"com_ui_bookmarks_create_success": "Könyvjelző sikeresen létrehozva",
|
||||
"com_ui_bookmarks_delete": "Könyvjelző törlése",
|
||||
"com_ui_bookmarks_delete_error": "Hiba történt a könyvjelző törlése során",
|
||||
"com_ui_bookmarks_delete_success": "Könyvjelző sikeresen törölve",
|
||||
"com_ui_bookmarks_description": "Leírás",
|
||||
"com_ui_bookmarks_edit": "Könyvjelző szerkesztése",
|
||||
"com_ui_bookmarks_filter": "Könyvjelzők szűrése...",
|
||||
"com_ui_bookmarks_new": "Új könyvjelző",
|
||||
"com_ui_bookmarks_title": "Cím",
|
||||
"com_ui_bookmarks_update_error": "Hiba történt a könyvjelző frissítése során",
|
||||
"com_ui_bookmarks_update_success": "Könyvjelző sikeresen frissítve",
|
||||
"com_ui_bulk_delete_error": "Nem sikerült törölni a megosztott linkeket",
|
||||
"com_ui_callback_url": "Visszahívási URL",
|
||||
"com_ui_cancel": "Mégse",
|
||||
"com_ui_chat": "Csevegés",
|
||||
"com_ui_chat_history": "Csevegési előzmények",
|
||||
"com_ui_clear": "Törlés",
|
||||
"com_ui_clear_all": "Mind törlése",
|
||||
"com_ui_client_id": "Kliens azonosító",
|
||||
"com_ui_client_secret": "Kliens titok",
|
||||
"com_ui_close": "Bezárás",
|
||||
"com_ui_close_menu": "Menü bezárása",
|
||||
"com_ui_code": "Kód",
|
||||
"com_ui_collapse_chat": "Csevegés összecsukása",
|
||||
"com_ui_command_placeholder": "Opcionális: Adjon meg egy parancsot a prompt számára, vagy a név kerül használatra",
|
||||
"com_ui_command_usage_placeholder": "Válasszon promptot parancs vagy név szerint",
|
||||
"com_ui_complete_setup": "Beállítás befejezése",
|
||||
"com_ui_confirm_action": "Művelet megerősítése",
|
||||
"com_ui_confirm_admin_use_change": "Ennek a beállításnak a megváltoztatása blokkolja az adminisztrátorok, köztük az Ön hozzáférését is. Biztosan folytatni szeretné?",
|
||||
"com_ui_confirm_change": "Változtatás megerősítése",
|
||||
"com_ui_context": "Kontextus",
|
||||
"com_ui_continue": "Folytatás",
|
||||
"com_ui_controls": "Vezérlők",
|
||||
"com_ui_copied": "Másolva!",
|
||||
"com_ui_copied_to_clipboard": "Vágólapra másolva",
|
||||
"com_ui_copy_code": "Kód másolása",
|
||||
"com_ui_copy_link": "Link másolása",
|
||||
"com_ui_copy_to_clipboard": "Másolás a vágólapra",
|
||||
"com_ui_create": "Létrehozás",
|
||||
"com_ui_create_link": "Link létrehozása",
|
||||
"com_ui_create_prompt": "Prompt létrehozása",
|
||||
"com_ui_currently_production": "Jelenleg élesben",
|
||||
"com_ui_custom": "Egyéni",
|
||||
"com_ui_custom_header_name": "Egyéni fejléc neve",
|
||||
"com_ui_custom_prompt_mode": "Egyéni prompt mód",
|
||||
"com_ui_dashboard": "Irányítópult",
|
||||
"com_ui_date": "Dátum",
|
||||
"com_ui_date_april": "Április",
|
||||
"com_ui_date_august": "Augusztus",
|
||||
"com_ui_date_december": "December",
|
||||
"com_ui_date_february": "Február",
|
||||
"com_ui_date_january": "Január",
|
||||
"com_ui_date_july": "Július",
|
||||
"com_ui_date_june": "Június",
|
||||
"com_ui_date_march": "Március",
|
||||
"com_ui_date_may": "Május",
|
||||
"com_ui_date_november": "November",
|
||||
"com_ui_date_october": "Október",
|
||||
"com_ui_date_previous_30_days": "Előző 30 nap",
|
||||
"com_ui_date_previous_7_days": "Előző 7 nap",
|
||||
"com_ui_date_september": "Szeptember",
|
||||
"com_ui_date_today": "Ma",
|
||||
"com_ui_date_yesterday": "Tegnap",
|
||||
"com_ui_decline": "Nem fogadom el",
|
||||
"com_ui_default_post_request": "Alapértelmezett (POST kérés)",
|
||||
"com_ui_delete": "Törlés",
|
||||
"com_ui_delete_action": "Művelet törlése",
|
||||
"com_ui_delete_action_confirm": "Biztosan törölni szeretné ezt a műveletet?",
|
||||
"com_ui_delete_agent_confirm": "Biztosan törölni szeretné ezt az ügynököt?",
|
||||
"com_ui_delete_assistant_confirm": "Biztosan törölni szeretné ezt az asszisztenst? Ez nem vonható vissza.",
|
||||
"com_ui_delete_confirm": "Ez törli",
|
||||
"com_ui_delete_confirm_prompt_version_var": "Ez törli a kiválasztott verziót a „{{0}}” számára. Ha nem léteznek más verziók, a prompt törlésre kerül.",
|
||||
"com_ui_delete_conversation": "Csevegés törlése?",
|
||||
"com_ui_delete_prompt": "Prompt törlése?",
|
||||
"com_ui_delete_shared_link": "Megosztott link törlése?",
|
||||
"com_ui_delete_tool": "Eszköz törlése",
|
||||
"com_ui_delete_tool_confirm": "Biztosan törölni szeretné ezt az eszközt?",
|
||||
"com_ui_descending": "Csökkenő",
|
||||
"com_ui_description": "Leírás",
|
||||
"com_ui_description_placeholder": "Opcionális: Adjon meg egy leírást a prompt megjelenítéséhez",
|
||||
"com_ui_disabling": "Letiltás...",
|
||||
"com_ui_download": "Letöltés",
|
||||
"com_ui_download_artifact": "Műtermék letöltése",
|
||||
"com_ui_download_backup": "Biztonsági mentési kódok letöltése",
|
||||
"com_ui_download_backup_tooltip": "Mielőtt folytatná, töltse le a biztonsági mentési kódjait. Szüksége lesz rájuk, ha elveszíti hitelesítő eszközét",
|
||||
"com_ui_download_error": "Hiba a fájl letöltése során. Lehet, hogy a fájl törölve lett.",
|
||||
"com_ui_drag_drop": "valaminek itt kell lennie. üres volt",
|
||||
"com_ui_dropdown_variables": "Legördülő változók:",
|
||||
"com_ui_dropdown_variables_info": "Hozzon létre egyedi legördülő menüket a promptokhoz: `{{változó_név:opció1|opció2|opció3}}`",
|
||||
"com_ui_duplicate": "Duplikálás",
|
||||
"com_ui_duplication_error": "Hiba történt a beszélgetés duplikálása során",
|
||||
"com_ui_duplication_processing": "Beszélgetés duplikálása...",
|
||||
"com_ui_duplication_success": "Beszélgetés sikeresen duplikálva",
|
||||
"com_ui_edit": "Szerkesztés",
|
||||
"com_ui_empty_category": "-",
|
||||
"com_ui_endpoint": "Végpont",
|
||||
"com_ui_endpoint_menu": "LLM végpont menü",
|
||||
"com_ui_enter": "Enter",
|
||||
"com_ui_enter_api_key": "API kulcs megadása",
|
||||
"com_ui_enter_openapi_schema": "Adja meg itt az OpenAPI sémáját",
|
||||
"com_ui_error": "Hiba",
|
||||
"com_ui_error_connection": "Hiba a szerverhez való csatlakozáskor, próbálja meg frissíteni az oldalt.",
|
||||
"com_ui_error_save_admin_settings": "Hiba történt az adminisztrátori beállítások mentése során.",
|
||||
"com_ui_examples": "Példák",
|
||||
"com_ui_expand_chat": "Csevegés kibontása",
|
||||
"com_ui_export_convo_modal": "Beszélgetés exportálási ablak",
|
||||
"com_ui_field_required": "Ez a mező kötelező",
|
||||
"com_ui_filter_prompts": "Promptok szűrése",
|
||||
"com_ui_filter_prompts_name": "Promptok szűrése név szerint",
|
||||
"com_ui_finance": "Pénzügy",
|
||||
"com_ui_fork": "Elágazás",
|
||||
"com_ui_fork_all_target": "Mindent innen/ide belefoglalása",
|
||||
"com_ui_fork_branches": "Kapcsolódó ágak belefoglalása",
|
||||
"com_ui_fork_change_default": "Alapértelmezett elágazási opció",
|
||||
"com_ui_fork_default": "Alapértelmezett elágazási opció használata",
|
||||
"com_ui_fork_error": "Hiba történt a beszélgetés elágazása során",
|
||||
"com_ui_fork_from_message": "Válasszon elágazási opciót",
|
||||
"com_ui_fork_info_1": "Ezzel a beállítással a kívánt viselkedés szerint ágazhatja el az üzeneteket.",
|
||||
"com_ui_fork_info_2": "Az „elágazás” egy új beszélgetés létrehozását jelenti, amely az aktuális beszélgetés specifikus üzeneteitől indul vagy végződik, a kiválasztott opciók szerint másolatot készítve.",
|
||||
"com_ui_fork_info_3": "A „célüzenet” arra az üzenetre utal, amelyből ez az ablak megnyílt, vagy ha bejelöli a „{{0}}” opciót, a beszélgetés legutóbbi üzenetére.",
|
||||
"com_ui_fork_info_branches": "Ez az opció elágazza a látható üzeneteket, valamint a kapcsolódó ágakat; másképpen fogalmazva, a célüzenethez vezető közvetlen utat, beleértve az útvonal menti ágakat.",
|
||||
"com_ui_fork_info_remember": "Jelölje be ezt, hogy megjegyezze a kiválasztott opciókat a jövőbeli használathoz, így gyorsabban elágaztathatja a beszélgetéseket a kívánt módon.",
|
||||
"com_ui_fork_info_start": "Ha bejelöli, az elágazás ebből az üzenetből a beszélgetés legutóbbi üzenetéig kezdődik, a fent kiválasztott viselkedés szerint.",
|
||||
"com_ui_fork_info_target": "Ez az opció elágazza az összes üzenetet a célüzenetig, beleértve annak szomszédait; másképpen fogalmazva, minden üzenetágat, függetlenül attól, hogy látható-e vagy ugyanazon az útvonalon van-e, belefoglal.",
|
||||
"com_ui_fork_info_visible": "Ez az opció csak a látható üzeneteket ágazza el; másképpen fogalmazva, a célüzenethez vezető közvetlen utat, ágak nélkül.",
|
||||
"com_ui_fork_processing": "Beszélgetés elágazása...",
|
||||
"com_ui_fork_remember": "Megjegyzés",
|
||||
"com_ui_fork_remember_checked": "A választása a használat után megjegyzésre kerül. Ezt bármikor megváltoztathatja a beállításokban.",
|
||||
"com_ui_fork_split_target": "Elágazás innen kezdése",
|
||||
"com_ui_fork_split_target_setting": "Elágazás alapértelmezés szerint a célüzenettől kezdése",
|
||||
"com_ui_fork_success": "Beszélgetés sikeresen elágazva",
|
||||
"com_ui_fork_visible": "Csak látható üzenetek",
|
||||
"com_ui_generate_backup": "Biztonsági mentési kódok generálása",
|
||||
"com_ui_generate_qrcode": "QR-kód generálása",
|
||||
"com_ui_generating": "Generálás...",
|
||||
"com_ui_global_group": "valaminek itt kell lennie. üres volt",
|
||||
"com_ui_go_back": "Vissza",
|
||||
"com_ui_go_to_conversation": "Ugrás a beszélgetéshez",
|
||||
"com_ui_good_afternoon": "Jó délutánt",
|
||||
"com_ui_good_evening": "Jó estét",
|
||||
"com_ui_good_morning": "Jó reggelt",
|
||||
"com_ui_happy_birthday": "Ez az 1. születésnapom!",
|
||||
"com_ui_hide_qr": "QR-kód elrejtése",
|
||||
"com_ui_host": "Hoszt",
|
||||
"com_ui_idea": "Ötletek",
|
||||
"com_ui_image_gen": "Képgenerálás",
|
||||
"com_ui_import": "Importálás",
|
||||
"com_ui_import_conversation_error": "Hiba történt a beszélgetések importálása során",
|
||||
"com_ui_import_conversation_file_type_error": "Nem támogatott import típus",
|
||||
"com_ui_import_conversation_info": "Beszélgetések importálása JSON fájlból",
|
||||
"com_ui_import_conversation_success": "Beszélgetések sikeresen importálva",
|
||||
"com_ui_include_shadcnui": "shadcn/ui komponensek utasításainak belefoglalása",
|
||||
"com_ui_include_shadcnui_agent": "shadcn/ui utasítások belefoglalása",
|
||||
"com_ui_input": "Bevitel",
|
||||
"com_ui_instructions": "Utasítások",
|
||||
"com_ui_late_night": "Kellemes éjszakát",
|
||||
"com_ui_latest_footer": "Minden AI mindenkinek.",
|
||||
"com_ui_latest_production_version": "Legfrissebb éles verzió",
|
||||
"com_ui_latest_version": "Legfrissebb verzió",
|
||||
"com_ui_librechat_code_api_key": "Szerezze meg a LibreChat Kódértelmező API kulcsát",
|
||||
"com_ui_librechat_code_api_subtitle": "Biztonságos. Többnyelvű. Be-/Kimeneti fájlok.",
|
||||
"com_ui_librechat_code_api_title": "AI kód futtatása",
|
||||
"com_ui_loading": "Betöltés...",
|
||||
"com_ui_locked": "Zárolva",
|
||||
"com_ui_logo": "{{0}} Logó",
|
||||
"com_ui_manage": "Kezelés",
|
||||
"com_ui_max_tags": "A megengedett maximális szám {{0}}, a legutóbbi értékek használata.",
|
||||
"com_ui_mention": "Említsen meg egy végpontot, asszisztenst vagy előre beállítottat a gyors váltáshoz",
|
||||
"com_ui_min_tags": "Nem távolítható el több érték, minimum {{0}} szükséges.",
|
||||
"com_ui_misc": "Egyéb",
|
||||
"com_ui_model": "Modell",
|
||||
"com_ui_model_parameters": "Modellparaméterek",
|
||||
"com_ui_more_info": "További információ",
|
||||
"com_ui_my_prompts": "Saját promptjaim",
|
||||
"com_ui_name": "Név",
|
||||
"com_ui_new": "Új",
|
||||
"com_ui_new_chat": "Új csevegés",
|
||||
"com_ui_next": "Következő",
|
||||
"com_ui_no": "Nem",
|
||||
"com_ui_no_backup_codes": "Nincsenek elérhető biztonsági mentési kódok. Kérjük, generáljon újakat",
|
||||
"com_ui_no_bookmarks": "Úgy tűnik, még nincsenek könyvjelzői. Kattintson egy csevegésre, és adjon hozzá egy újat",
|
||||
"com_ui_no_category": "Nincs kategória",
|
||||
"com_ui_no_changes": "Nincsenek frissítendő változtatások",
|
||||
"com_ui_no_data": "valaminek itt kell lennie. üres volt",
|
||||
"com_ui_no_terms_content": "Nincs megjeleníthető használati feltételek tartalom",
|
||||
"com_ui_no_valid_items": "valaminek itt kell lennie. üres volt",
|
||||
"com_ui_none": "Nincs",
|
||||
"com_ui_not_used": "Nem használt",
|
||||
"com_ui_nothing_found": "Semmi sem található",
|
||||
"com_ui_oauth": "OAuth",
|
||||
"com_ui_of": "ból/ből",
|
||||
"com_ui_off": "Ki",
|
||||
"com_ui_on": "Be",
|
||||
"com_ui_openai": "OpenAI",
|
||||
"com_ui_page": "Oldal",
|
||||
"com_ui_prev": "Előző",
|
||||
"com_ui_preview": "Előnézet",
|
||||
"com_ui_privacy_policy": "Adatvédelmi irányelvek",
|
||||
"com_ui_privacy_policy_url": "Adatvédelmi irányelvek URL",
|
||||
"com_ui_prompt": "Prompt",
|
||||
"com_ui_prompt_already_shared_to_all": "Ez a prompt már meg van osztva minden felhasználóval",
|
||||
"com_ui_prompt_name": "Prompt neve",
|
||||
"com_ui_prompt_name_required": "A prompt neve kötelező",
|
||||
"com_ui_prompt_preview_not_shared": "A szerző nem engedélyezte az együttműködést ehhez a prompthoz.",
|
||||
"com_ui_prompt_text": "Szöveg",
|
||||
"com_ui_prompt_text_required": "Szöveg megadása kötelező",
|
||||
"com_ui_prompt_update_error": "Hiba történt a prompt frissítése során",
|
||||
"com_ui_prompts": "Promptok",
|
||||
"com_ui_prompts_allow_create": "Promptok létrehozásának engedélyezése",
|
||||
"com_ui_prompts_allow_share_global": "Promptok megosztásának engedélyezése minden felhasználóval",
|
||||
"com_ui_prompts_allow_use": "Promptok használatának engedélyezése",
|
||||
"com_ui_provider": "Szolgáltató",
|
||||
"com_ui_read_aloud": "Felolvasás",
|
||||
"com_ui_redirecting_to_provider": "Átirányítás {{0}}-ra, kérjük, várjon...",
|
||||
"com_ui_refresh_link": "Link frissítése",
|
||||
"com_ui_regenerate": "Újragenerálás",
|
||||
"com_ui_regenerate_backup": "Biztonsági mentési kódok újragenerálása",
|
||||
"com_ui_regenerating": "Újragenerálás...",
|
||||
"com_ui_region": "Régió",
|
||||
"com_ui_rename": "Átnevezés",
|
||||
"com_ui_rename_prompt": "Prompt átnevezése",
|
||||
"com_ui_requires_auth": "Hitelesítést igényel",
|
||||
"com_ui_reset_var": "{{0}} visszaállítása",
|
||||
"com_ui_result": "Eredmény",
|
||||
"com_ui_revoke": "Visszavonás",
|
||||
"com_ui_revoke_info": "Minden felhasználó által megadott hitelesítő adat visszavonása",
|
||||
"com_ui_revoke_key_confirm": "Biztosan vissza szeretné vonni ezt a kulcsot?",
|
||||
"com_ui_revoke_key_endpoint": "Kulcs visszavonása {{0}}-hoz",
|
||||
"com_ui_revoke_keys": "Kulcsok visszavonása",
|
||||
"com_ui_revoke_keys_confirm": "Biztosan vissza szeretné vonni az összes kulcsot?",
|
||||
"com_ui_role_select": "Szerep",
|
||||
"com_ui_roleplay": "Szerepjáték",
|
||||
"com_ui_run_code": "Kód futtatása",
|
||||
"com_ui_run_code_error": "Hiba történt a kód futtatása során",
|
||||
"com_ui_save": "Mentés",
|
||||
"com_ui_save_badge_changes": "Jelvényváltoztatások mentése?",
|
||||
"com_ui_save_submit": "Mentés és beküldés",
|
||||
"com_ui_saved": "Mentve!",
|
||||
"com_ui_schema": "Séma",
|
||||
"com_ui_scope": "Hatókör",
|
||||
"com_ui_search": "Keresés",
|
||||
"com_ui_secret_key": "Titkos kulcs",
|
||||
"com_ui_select": "Kiválasztás",
|
||||
"com_ui_select_file": "Fájl kiválasztása",
|
||||
"com_ui_select_model": "Modell kiválasztása",
|
||||
"com_ui_select_provider": "Szolgáltató kiválasztása",
|
||||
"com_ui_select_provider_first": "Először válasszon szolgáltatót",
|
||||
"com_ui_select_region": "Régió kiválasztása",
|
||||
"com_ui_select_search_model": "Modell keresése név szerint",
|
||||
"com_ui_select_search_plugin": "Bővítmény keresése név szerint",
|
||||
"com_ui_select_search_provider": "Szolgáltató keresése név szerint",
|
||||
"com_ui_select_search_region": "Régió keresése név szerint",
|
||||
"com_ui_share": "Megosztás",
|
||||
"com_ui_share_create_message": "Neve és a megosztás után hozzáadott üzenetei privátak maradnak.",
|
||||
"com_ui_share_delete_error": "Hiba történt a megosztott link törlése során",
|
||||
"com_ui_share_error": "Hiba történt a csevegőlink megosztása során",
|
||||
"com_ui_share_form_description": "valaminek itt kell lennie. üres volt",
|
||||
"com_ui_share_link_to_chat": "Link megosztása a csevegéshez",
|
||||
"com_ui_share_to_all_users": "Megosztás minden felhasználóval",
|
||||
"com_ui_share_update_message": "Neve, egyedi utasításai és a megosztás után hozzáadott üzenetei privátak maradnak.",
|
||||
"com_ui_share_var": "{{0}} megosztása",
|
||||
"com_ui_shared_link_bulk_delete_success": "Megosztott linkek sikeresen törölve",
|
||||
"com_ui_shared_link_delete_success": "Megosztott link sikeresen törölve",
|
||||
"com_ui_shared_link_not_found": "Megosztott link nem található",
|
||||
"com_ui_shared_prompts": "Megosztott promptok",
|
||||
"com_ui_shop": "Vásárlás",
|
||||
"com_ui_show": "Megjelenítés",
|
||||
"com_ui_show_all": "Összes megjelenítése",
|
||||
"com_ui_show_qr": "QR-kód megjelenítése",
|
||||
"com_ui_sign_in_to_domain": "Bejelentkezés {{0}}-ra",
|
||||
"com_ui_simple": "Egyszerű",
|
||||
"com_ui_size": "Méret",
|
||||
"com_ui_special_variables": "Speciális változók:",
|
||||
"com_ui_speech_while_submitting": "Nem lehet beszédet beküldeni, amíg válasz generálódik",
|
||||
"com_ui_stop": "Leállítás",
|
||||
"com_ui_storage": "Tárolás",
|
||||
"com_ui_submit": "Beküldés",
|
||||
"com_ui_teach_or_explain": "Tanulás",
|
||||
"com_ui_temporary": "Ideiglenes csevegés",
|
||||
"com_ui_terms_and_conditions": "Felhasználási feltételek",
|
||||
"com_ui_terms_of_service": "Szolgáltatási feltételek",
|
||||
"com_ui_thinking": "Gondolkodás...",
|
||||
"com_ui_thoughts": "Gondolatok",
|
||||
"com_ui_token_exchange_method": "Token csere módszer",
|
||||
"com_ui_token_url": "Token URL",
|
||||
"com_ui_tools": "Eszközök",
|
||||
"com_ui_travel": "Utazás",
|
||||
"com_ui_unarchive": "Archiválás visszavonása",
|
||||
"com_ui_unarchive_error": "Nem sikerült visszavonni a beszélgetés archiválását",
|
||||
"com_ui_unknown": "Ismeretlen",
|
||||
"com_ui_update": "Frissítés",
|
||||
"com_ui_upload": "Feltöltés",
|
||||
"com_ui_upload_code_files": "Feltöltés a kódértelmezőhöz",
|
||||
"com_ui_upload_delay": "A „{{0}}” feltöltése több időt vesz igénybe, mint vártuk. Kérjük, várjon, amíg a fájl indexelése befejeződik a lekérdezéshez.",
|
||||
"com_ui_upload_error": "Hiba történt a fájl feltöltése során",
|
||||
"com_ui_upload_file_context": "Fájlkontextus feltöltése",
|
||||
"com_ui_upload_file_search": "Feltöltés fájlkereséshez",
|
||||
"com_ui_upload_files": "Fájlok feltöltése",
|
||||
"com_ui_upload_image": "Kép feltöltése",
|
||||
"com_ui_upload_image_input": "Kép feltöltése",
|
||||
"com_ui_upload_invalid": "Érvénytelen fájl feltöltéshez. Képnek kell lennie, amely nem haladja meg a korlátot",
|
||||
"com_ui_upload_invalid_var": "Érvénytelen fájl feltöltéshez. Képnek kell lennie, amely nem haladja meg a {{0}} MB-ot",
|
||||
"com_ui_upload_ocr_text": "Feltöltés szövegként",
|
||||
"com_ui_upload_success": "Fájl sikeresen feltöltve",
|
||||
"com_ui_upload_type": "Feltöltési típus kiválasztása",
|
||||
"com_ui_use_2fa_code": "2FA kód használata helyette",
|
||||
"com_ui_use_backup_code": "Biztonsági mentési kód használata helyette",
|
||||
"com_ui_use_micrphone": "Mikrofon használata",
|
||||
"com_ui_use_prompt": "Prompt használata",
|
||||
"com_ui_used": "Használt",
|
||||
"com_ui_variables": "Változók",
|
||||
"com_ui_variables_info": "Használjon dupla kapcsos zárójeleket a szövegben változók létrehozásához, pl. `{{példa változó}}`, amelyeket később a prompt használatakor kitölthet.",
|
||||
"com_ui_verify": "Ellenőrzés",
|
||||
"com_ui_version_var": "{{0}} verzió",
|
||||
"com_ui_versions": "Verziók",
|
||||
"com_ui_view_source": "Forrás csevegés megtekintése",
|
||||
"com_ui_weekend_morning": "Kellemes hétvégét",
|
||||
"com_ui_write": "Írás",
|
||||
"com_ui_yes": "Igen",
|
||||
"com_ui_zoom": "Zoom",
|
||||
"com_user_message": "Ön",
|
||||
"com_warning_resubmit_unsupported": "Az AI üzenet újraküldése nem támogatott ennél a végpontnál."
|
||||
}
|
||||
87
packages/client/src/locales/i18n.ts
Normal file
87
packages/client/src/locales/i18n.ts
Normal file
|
|
@ -0,0 +1,87 @@
|
|||
import i18n from 'i18next';
|
||||
import { initReactI18next } from 'react-i18next';
|
||||
import LanguageDetector from 'i18next-browser-languagedetector';
|
||||
|
||||
import translationEn from './en/translation.json';
|
||||
import translationAr from './ar/translation.json';
|
||||
import translationCa from './ca/translation.json';
|
||||
import translationCs from './cs/translation.json';
|
||||
import translationDa from './da/translation.json';
|
||||
import translationDe from './de/translation.json';
|
||||
import translationEs from './es/translation.json';
|
||||
import translationEt from './et/translation.json';
|
||||
import translationFa from './fa/translation.json';
|
||||
import translationFr from './fr/translation.json';
|
||||
import translationIt from './it/translation.json';
|
||||
import translationPl from './pl/translation.json';
|
||||
import translationPt_BR from './pt-BR/translation.json';
|
||||
import translationPt_PT from './pt-PT/translation.json';
|
||||
import translationRu from './ru/translation.json';
|
||||
import translationJa from './ja/translation.json';
|
||||
import translationKa from './ka/translation.json';
|
||||
import translationSv from './sv/translation.json';
|
||||
import translationKo from './ko/translation.json';
|
||||
import translationTh from './th/translation.json';
|
||||
import translationTr from './tr/translation.json';
|
||||
import translationVi from './vi/translation.json';
|
||||
import translationNl from './nl/translation.json';
|
||||
import translationId from './id/translation.json';
|
||||
import translationHe from './he/translation.json';
|
||||
import translationHu from './hu/translation.json';
|
||||
import translationFi from './fi/translation.json';
|
||||
import translationZh_Hans from './zh-Hans/translation.json';
|
||||
import translationZh_Hant from './zh-Hant/translation.json';
|
||||
|
||||
export const defaultNS = 'translation';
|
||||
|
||||
export const resources = {
|
||||
en: { translation: translationEn },
|
||||
ar: { translation: translationAr },
|
||||
ca: { translation: translationCa },
|
||||
cs: { translation: translationCs },
|
||||
'zh-Hans': { translation: translationZh_Hans },
|
||||
'zh-Hant': { translation: translationZh_Hant },
|
||||
da: { translation: translationDa },
|
||||
de: { translation: translationDe },
|
||||
es: { translation: translationEs },
|
||||
et: { translation: translationEt },
|
||||
fa: { translation: translationFa },
|
||||
fr: { translation: translationFr },
|
||||
it: { translation: translationIt },
|
||||
pl: { translation: translationPl },
|
||||
'pt-BR': { translation: translationPt_BR },
|
||||
'pt-PT': { translation: translationPt_PT },
|
||||
ru: { translation: translationRu },
|
||||
ja: { translation: translationJa },
|
||||
ka: { translation: translationKa },
|
||||
sv: { translation: translationSv },
|
||||
ko: { translation: translationKo },
|
||||
th: { translation: translationTh },
|
||||
tr: { translation: translationTr },
|
||||
vi: { translation: translationVi },
|
||||
nl: { translation: translationNl },
|
||||
id: { translation: translationId },
|
||||
he: { translation: translationHe },
|
||||
hu: { translation: translationHu },
|
||||
fi: { translation: translationFi },
|
||||
} as const;
|
||||
|
||||
i18n
|
||||
.use(LanguageDetector)
|
||||
.use(initReactI18next)
|
||||
.init({
|
||||
fallbackLng: {
|
||||
'zh-TW': ['zh-Hant', 'en'],
|
||||
'zh-HK': ['zh-Hant', 'en'],
|
||||
zh: ['zh-Hans', 'en'],
|
||||
default: ['en'],
|
||||
},
|
||||
fallbackNS: 'translation',
|
||||
ns: ['translation'],
|
||||
debug: false,
|
||||
defaultNS,
|
||||
resources,
|
||||
interpolation: { escapeValue: false },
|
||||
});
|
||||
|
||||
export default i18n;
|
||||
293
packages/client/src/locales/id/translation.json
Normal file
293
packages/client/src/locales/id/translation.json
Normal file
|
|
@ -0,0 +1,293 @@
|
|||
{
|
||||
"chat_direction_left_to_right": "Ada yang perlu diisi di sini. Masih kosong.",
|
||||
"chat_direction_right_to_left": "Ada yang perlu diisi di sini. Masih kosong",
|
||||
"com_a11y_ai_composing": "AI sedang menulis.",
|
||||
"com_a11y_end": "AI sudah selesai membalas.",
|
||||
"com_a11y_start": "AI telah mulai membalas.",
|
||||
"com_agents_allow_editing": "Izinkan pengguna lain untuk mengedit agen Anda",
|
||||
"com_agents_by_librechat": "oleh LibreChat",
|
||||
"com_auth_already_have_account": "Sudah memiliki akun?",
|
||||
"com_auth_click": "Klik",
|
||||
"com_auth_click_here": "Klik di sini",
|
||||
"com_auth_continue": "Lanjutkan",
|
||||
"com_auth_create_account": "Buat akun Anda",
|
||||
"com_auth_discord_login": "Masuk dengan Discord",
|
||||
"com_auth_email": "Email",
|
||||
"com_auth_email_address": "Alamat email",
|
||||
"com_auth_email_max_length": "Email tidak boleh lebih dari 120 karakter",
|
||||
"com_auth_email_min_length": "Email harus setidaknya 6 karakter",
|
||||
"com_auth_email_pattern": "Anda harus memasukkan alamat email yang valid",
|
||||
"com_auth_email_required": "Email diperlukan",
|
||||
"com_auth_error_create": "Ada kesalahan saat mencoba mendaftarkan akun Anda. Silakan coba lagi.",
|
||||
"com_auth_error_invalid_reset_token": "Token pengaturan ulang kata sandi ini tidak lagi valid.",
|
||||
"com_auth_error_login": "Tidak dapat masuk dengan informasi yang diberikan. Silakan periksa kredensial Anda dan coba lagi.",
|
||||
"com_auth_error_login_ban": "Akun Anda telah dilarang sementara karena pelanggaran layanan kami.",
|
||||
"com_auth_error_login_rl": "Terlalu banyak upaya masuk dalam waktu singkat. Silakan coba lagi nanti.",
|
||||
"com_auth_error_login_server": "Ada kesalahan server internal. Harap tunggu beberapa saat dan coba lagi.",
|
||||
"com_auth_facebook_login": "Masuk dengan Facebook",
|
||||
"com_auth_full_name": "Nama lengkap",
|
||||
"com_auth_github_login": "Masuk dengan Github",
|
||||
"com_auth_google_login": "Masuk dengan Google",
|
||||
"com_auth_here": "DI SINI",
|
||||
"com_auth_login": "Masuk",
|
||||
"com_auth_login_with_new_password": "Anda sekarang dapat masuk dengan kata sandi baru Anda.",
|
||||
"com_auth_name_max_length": "Nama harus kurang dari 80 karakter",
|
||||
"com_auth_name_min_length": "Nama harus setidaknya 3 karakter",
|
||||
"com_auth_name_required": "Nama diperlukan",
|
||||
"com_auth_no_account": "Tidak memiliki akun?",
|
||||
"com_auth_password": "Kata sandi",
|
||||
"com_auth_password_confirm": "Konfirmasi kata sandi",
|
||||
"com_auth_password_forgot": "Lupa Kata Sandi?",
|
||||
"com_auth_password_max_length": "Kata sandi harus kurang dari 128 karakter",
|
||||
"com_auth_password_min_length": "Kata sandi harus setidaknya 8 karakter",
|
||||
"com_auth_password_not_match": "Kata sandi tidak cocok",
|
||||
"com_auth_password_required": "Kata sandi diperlukan",
|
||||
"com_auth_reset_password": "Atur ulang kata sandi Anda",
|
||||
"com_auth_reset_password_link_sent": "Email Terkirim",
|
||||
"com_auth_reset_password_success": "Berhasil Mengatur Ulang Kata Sandi",
|
||||
"com_auth_sign_in": "Masuk",
|
||||
"com_auth_sign_up": "Daftar",
|
||||
"com_auth_submit_registration": "Kirim pendaftaran",
|
||||
"com_auth_to_reset_your_password": "untuk mengatur ulang kata sandi Anda.",
|
||||
"com_auth_to_try_again": "untuk mencoba lagi.",
|
||||
"com_auth_username": "Nama pengguna (opsional)",
|
||||
"com_auth_username_max_length": "Nama pengguna harus kurang dari 20 karakter",
|
||||
"com_auth_username_min_length": "Nama pengguna harus setidaknya 2 karakter",
|
||||
"com_auth_welcome_back": "Selamat datang kembali",
|
||||
"com_endpoint": "Endpoint",
|
||||
"com_endpoint_agent": "Agen",
|
||||
"com_endpoint_agent_model": "Model Agen (Direkomendasikan: GPT-3.5)",
|
||||
"com_endpoint_anthropic_maxoutputtokens": "Jumlah maksimum token yang dapat dihasilkan dalam respons. Tentukan nilai yang lebih rendah untuk respons yang lebih pendek dan nilai yang lebih tinggi untuk respons yang lebih panjang.",
|
||||
"com_endpoint_anthropic_temp": "Berkisar dari 0 hingga 1. Gunakan temp yang lebih dekat ke 0 untuk analitis / pilihan ganda, dan lebih dekat ke 1 untuk tugas kreatif dan generatif. Kami merekomendasikan untuk mengubah ini atau Top P tetapi tidak keduanya.",
|
||||
"com_endpoint_anthropic_topk": "Top-k mengubah cara model memilih token untuk output. Top-k 1 berarti token yang dipilih adalah yang paling mungkin di antara semua token dalam kosakata model (juga disebut decoding serakah), sedangkan top-k 3 berarti token berikutnya dipilih dari antara 3 token yang paling mungkin (menggunakan suhu).",
|
||||
"com_endpoint_anthropic_topp": "Top-p mengubah cara model memilih token untuk output. Token dipilih dari yang paling mungkin (lihat parameter topK) hingga yang paling tidak mungkin sampai jumlah probabilitas mereka sama dengan nilai top-p.",
|
||||
"com_endpoint_completion": "Penyelesaian",
|
||||
"com_endpoint_completion_model": "Model Penyelesaian (Direkomendasikan: GPT-4)",
|
||||
"com_endpoint_config_click_here": "Klik Di Sini",
|
||||
"com_endpoint_config_google_api_info": "Untuk mendapatkan kunci API Bahasa Generatif Anda (untuk Gemini),",
|
||||
"com_endpoint_config_google_api_key": "Kunci API Google",
|
||||
"com_endpoint_config_google_cloud_platform": "(dari Google Cloud Platform)",
|
||||
"com_endpoint_config_google_gemini_api": "(Gemini API)",
|
||||
"com_endpoint_config_google_service_key": "Kunci Akun Layanan Google",
|
||||
"com_endpoint_config_key": "Atur Kunci API",
|
||||
"com_endpoint_config_key_encryption": "Kunci Anda akan dienkripsi dan dihapus pada",
|
||||
"com_endpoint_config_key_for": "Atur Kunci API untuk",
|
||||
"com_endpoint_config_key_google_need_to": "Anda perlu",
|
||||
"com_endpoint_config_key_google_service_account": "Buat Akun Layanan",
|
||||
"com_endpoint_config_key_google_vertex_ai": "Aktifkan Vertex AI",
|
||||
"com_endpoint_config_key_google_vertex_api": "API di Google Cloud, kemudian",
|
||||
"com_endpoint_config_key_google_vertex_api_role": "Pastikan untuk mengklik 'Buat dan Lanjutkan' untuk memberikan setidaknya peran 'Pengguna Vertex AI'. Terakhir, buat kunci JSON untuk diimpor di sini.",
|
||||
"com_endpoint_config_key_import_json_key": "Impor Kunci JSON Akun Layanan.",
|
||||
"com_endpoint_config_key_import_json_key_invalid": "Kunci JSON Akun Layanan Tidak Valid, Apakah Anda mengimpor file yang benar?",
|
||||
"com_endpoint_config_key_import_json_key_success": "Berhasil Mengimpor Kunci JSON Akun Layanan",
|
||||
"com_endpoint_config_key_name": "Kunci",
|
||||
"com_endpoint_config_placeholder": "Atur Kunci Anda di menu Header untuk mengobrol.",
|
||||
"com_endpoint_config_value": "Masukkan nilai untuk",
|
||||
"com_endpoint_context": "Konteks",
|
||||
"com_endpoint_custom_name": "Nama Kustom",
|
||||
"com_endpoint_default": "default",
|
||||
"com_endpoint_default_blank": "default: kosong",
|
||||
"com_endpoint_default_empty": "default: kosong",
|
||||
"com_endpoint_default_with_num": "default: {{0}}",
|
||||
"com_endpoint_examples": " Preset",
|
||||
"com_endpoint_export": "Ekspor",
|
||||
"com_endpoint_frequency_penalty": "Penalti Frekuensi",
|
||||
"com_endpoint_func_hover": "Aktifkan penggunaan Plugin sebagai Fungsi OpenAI",
|
||||
"com_endpoint_google_custom_name_placeholder": "Tetapkan nama kustom untuk Google",
|
||||
"com_endpoint_google_maxoutputtokens": "Jumlah maksimum token yang dapat dihasilkan dalam respons. Tentukan nilai yang lebih rendah untuk respons yang lebih pendek dan nilai yang lebih tinggi untuk respons yang lebih panjang.",
|
||||
"com_endpoint_google_temp": "Nilai yang lebih tinggi = lebih acak, sedangkan nilai yang lebih rendah = lebih fokus dan deterministik. Kami merekomendasikan untuk mengubah ini atau Top P tetapi tidak keduanya.",
|
||||
"com_endpoint_google_topk": "Top-k mengubah cara model memilih token untuk output. Top-k 1 berarti token yang dipilih adalah yang paling mungkin di antara semua token dalam kosakata model (juga disebut decoding serakah), sedangkan top-k 3 berarti token berikutnya dipilih dari antara 3 token yang paling mungkin (menggunakan temperatur).",
|
||||
"com_endpoint_google_topp": "Top-p mengubah cara model memilih token untuk output. Token dipilih dari yang paling mungkin (lihat parameter topK) hingga yang paling tidak mungkin sampai jumlah probabilitas mereka sama dengan nilai top-p.",
|
||||
"com_endpoint_max_output_tokens": "Token Output Maks",
|
||||
"com_endpoint_message": "Pesan",
|
||||
"com_endpoint_message_not_appendable": "Edit pesan Anda atau Regenerasi.",
|
||||
"com_endpoint_my_preset": "Preset Saya",
|
||||
"com_endpoint_no_presets": "Belum ada preset, gunakan tombol pengaturan untuk membuat satu",
|
||||
"com_endpoint_open_menu": "Buka Menu",
|
||||
"com_endpoint_openai_custom_name_placeholder": "Tetapkan nama kustom untuk ChatGPT",
|
||||
"com_endpoint_openai_detail": "Resolusi untuk permintaan Vision. \"Rendah\" lebih murah dan lebih cepat, \"Tinggi\" lebih detail dan mahal, dan \"Otomatis\" akan secara otomatis memilih antara keduanya berdasarkan resolusi gambar.",
|
||||
"com_endpoint_openai_freq": "Angka antara -2,0 dan 2,0. Nilai positif menghukum token baru berdasarkan frekuensi mereka yang ada dalam teks sejauh ini, mengurangi kemungkinan model untuk mengulangi baris yang sama secara harfiah.",
|
||||
"com_endpoint_openai_max": "Token maksimum yang akan dihasilkan. Panjang total token masukan dan token yang dihasilkan dibatasi oleh panjang konteks model.",
|
||||
"com_endpoint_openai_pres": "Angka antara -2,0 dan 2,0. Nilai positif menghukum token baru berdasarkan apakah mereka muncul dalam teks sejauh ini, meningkatkan kemungkinan model untuk berbicara tentang topik baru.",
|
||||
"com_endpoint_openai_prompt_prefix_placeholder": "Tetapkan instruksi kustom untuk dimasukkan dalam Pesan Sistem. Default: tidak ada",
|
||||
"com_endpoint_openai_resend": "Kirim ulang semua gambar yang sebelumnya dilampirkan. Catatan: ini dapat meningkatkan biaya token secara signifikan dan Anda mungkin mengalami kesalahan dengan banyak lampiran gambar.",
|
||||
"com_endpoint_openai_temp": "Nilai yang lebih tinggi = lebih acak, sedangkan nilai yang lebih rendah = lebih fokus dan deterministik. Kami merekomendasikan untuk mengubah ini atau Top P tetapi tidak keduanya.",
|
||||
"com_endpoint_openai_topp": "Sebuah alternatif untuk pengambilan sampel dengan suhu, disebut pengambilan sampel inti, di mana model mempertimbangkan hasil dari token dengan massa probabilitas top_p. Jadi 0,1 berarti hanya token yang mencakup 10% massa probabilitas teratas yang dipertimbangkan. Kami merekomendasikan untuk mengubah ini atau suhu tetapi tidak keduanya.",
|
||||
"com_endpoint_output": "Output",
|
||||
"com_endpoint_plug_image_detail": "Rincian Gambar",
|
||||
"com_endpoint_plug_set_custom_instructions_for_gpt_placeholder": "Tetapkan instruksi kustom untuk dimasukkan dalam Pesan Sistem. Default: tidak ada",
|
||||
"com_endpoint_plug_skip_completion": "Lewati Penyelesaian",
|
||||
"com_endpoint_plug_use_functions": "Gunakan Fungsi",
|
||||
"com_endpoint_presence_penalty": "Penalti Kehadiran",
|
||||
"com_endpoint_preset": "preset",
|
||||
"com_endpoint_preset_default": "sekarang menjadi preset default.",
|
||||
"com_endpoint_preset_default_item": "Default:",
|
||||
"com_endpoint_preset_default_none": "Tidak ada preset default yang aktif.",
|
||||
"com_endpoint_preset_default_removed": "tidak lagi menjadi preset default.",
|
||||
"com_endpoint_preset_delete_confirm": "Anda yakin ingin menghapus preset ini?",
|
||||
"com_endpoint_preset_delete_error": "Ada kesalahan saat menghapus preset Anda. Silakan coba lagi.",
|
||||
"com_endpoint_preset_import": "Preset Diimpor!",
|
||||
"com_endpoint_preset_import_error": "Ada kesalahan saat mengimpor preset Anda. Silakan coba lagi.",
|
||||
"com_endpoint_preset_name": "Nama Preset",
|
||||
"com_endpoint_preset_save_error": "Ada kesalahan saat menyimpan preset Anda. Silakan coba lagi.",
|
||||
"com_endpoint_preset_selected": "Preset Aktif!",
|
||||
"com_endpoint_preset_selected_title": "Aktif!",
|
||||
"com_endpoint_preset_title": "Preset",
|
||||
"com_endpoint_presets": "presets",
|
||||
"com_endpoint_presets_clear_warning": "Anda yakin ingin menghapus semua preset? Ini tidak dapat dibatalkan.",
|
||||
"com_endpoint_prompt_prefix": "Awalan Prompt",
|
||||
"com_endpoint_prompt_prefix_placeholder": "Tetapkan instruksi kustom atau konteks. Diabaikan jika kosong.",
|
||||
"com_endpoint_save_as_preset": "Simpan Sebagai Preset",
|
||||
"com_endpoint_set_custom_name": "Tetapkan nama kustom, jika Anda dapat menemukan preset ini",
|
||||
"com_endpoint_skip_hover": "Aktifkan langkah penyelesaian yang dilewati, yang meninjau jawaban akhir dan langkah yang dihasilkan",
|
||||
"com_endpoint_temperature": "Temperatur",
|
||||
"com_endpoint_top_k": "Top K",
|
||||
"com_endpoint_top_p": "Top P",
|
||||
"com_hide_examples": "Sembunyikan Contoh",
|
||||
"com_nav_archive_created_at": "TanggalDibuat",
|
||||
"com_nav_archive_name": "Nama",
|
||||
"com_nav_archived_chats": "Percakapan Arsip",
|
||||
"com_nav_auto_scroll": "Otomatis gulir ke Baru saat Buka",
|
||||
"com_nav_balance": "Keseimbangan",
|
||||
"com_nav_change_picture": "Ubah foto",
|
||||
"com_nav_clear_all_chats": "Hapus semua obrolan",
|
||||
"com_nav_clear_conversation": "Hapus percakapan",
|
||||
"com_nav_clear_conversation_confirm_message": "Anda yakin ingin menghapus semua percakapan? Ini tidak dapat dibatalkan.",
|
||||
"com_nav_close_sidebar": "Tutup sidebar",
|
||||
"com_nav_confirm_clear": "Konfirmasi Hapus",
|
||||
"com_nav_enabled": "Diaktifkan",
|
||||
"com_nav_export": "Ekspor",
|
||||
"com_nav_export_all_message_branches": "Ekspor semua cabang pesan",
|
||||
"com_nav_export_conversation": "Ekspor percakapan",
|
||||
"com_nav_export_filename": "Nama File",
|
||||
"com_nav_export_filename_placeholder": "Atur nama file",
|
||||
"com_nav_export_include_endpoint_options": "Sertakan opsi endpoint",
|
||||
"com_nav_export_recursive": "Rekursif",
|
||||
"com_nav_export_recursive_or_sequential": "Rekursif atau berurutan?",
|
||||
"com_nav_export_type": "Tipe",
|
||||
"com_nav_font_size": "Ukuran huruf",
|
||||
"com_nav_help_faq": "Bantuan & FAQ",
|
||||
"com_nav_lang_arabic": "العربية",
|
||||
"com_nav_lang_auto": "Deteksi otomatis",
|
||||
"com_nav_lang_brazilian_portuguese": "Português Brasileiro",
|
||||
"com_nav_lang_chinese": "中文",
|
||||
"com_nav_lang_dutch": "Nederlands",
|
||||
"com_nav_lang_english": "English",
|
||||
"com_nav_lang_estonian": "Eesti keel",
|
||||
"com_nav_lang_finnish": "Suomi",
|
||||
"com_nav_lang_french": "Français ",
|
||||
"com_nav_lang_georgian": "ქართული",
|
||||
"com_nav_lang_german": "Deutsch",
|
||||
"com_nav_lang_hebrew": "עברית",
|
||||
"com_nav_lang_indonesia": "Indonesia",
|
||||
"com_nav_lang_italian": "Italiano",
|
||||
"com_nav_lang_japanese": "日本語",
|
||||
"com_nav_lang_korean": "한국어",
|
||||
"com_nav_lang_polish": "Polski",
|
||||
"com_nav_lang_portuguese": "Português",
|
||||
"com_nav_lang_russian": "Русский",
|
||||
"com_nav_lang_spanish": "Español",
|
||||
"com_nav_lang_swedish": "Svenska",
|
||||
"com_nav_lang_thai": "ไทย",
|
||||
"com_nav_lang_traditional_chinese": "繁體中文",
|
||||
"com_nav_lang_turkish": "Türkçe",
|
||||
"com_nav_lang_vietnamese": "Tiếng Việt",
|
||||
"com_nav_language": "Bahasa",
|
||||
"com_nav_latex_parsing": "Parsing LaTeX dalam pesan (dapat memengaruhi kinerja)",
|
||||
"com_nav_log_out": "Keluar",
|
||||
"com_nav_modular_chat": "Aktifkan penggantian Endpoint di tengah percakapan",
|
||||
"com_nav_not_supported": "Tidak Didukung",
|
||||
"com_nav_open_sidebar": "Buka sidebar",
|
||||
"com_nav_plugin_auth_error": "Ada kesalahan saat mencoba mengautentikasi plugin ini. Silakan coba lagi.",
|
||||
"com_nav_plugin_search": "Cari plugin",
|
||||
"com_nav_plugin_store": "Toko plugin",
|
||||
"com_nav_profile_picture": "Foto Profil",
|
||||
"com_nav_save_drafts": "Simpan draft",
|
||||
"com_nav_search_placeholder": "Cari pesan",
|
||||
"com_nav_send_message": "Kirim pesan",
|
||||
"com_nav_setting_account": "Akun",
|
||||
"com_nav_setting_beta": "Fitur beta",
|
||||
"com_nav_setting_data": "Kontrol data",
|
||||
"com_nav_setting_general": "Umum",
|
||||
"com_nav_settings": "Pengaturan",
|
||||
"com_nav_shared_links": "Link berbagi",
|
||||
"com_nav_theme": "Tema",
|
||||
"com_nav_theme_dark": "Gelap",
|
||||
"com_nav_theme_light": "Terang",
|
||||
"com_nav_theme_system": "Sistem",
|
||||
"com_nav_user": "PENGGUNA",
|
||||
"com_nav_user_name_display": "Tampilkan nama pengguna dalam pesan",
|
||||
"com_show_agent_settings": "Tampilkan Pengaturan Agen",
|
||||
"com_show_completion_settings": "Tampilkan Pengaturan Penyelesaian",
|
||||
"com_show_examples": "Tampilkan Contoh",
|
||||
"com_ui_accept": "Saya menerima",
|
||||
"com_ui_all": "semua",
|
||||
"com_ui_archive": "Arsip",
|
||||
"com_ui_archive_error": "Gagal mengarsipkan percakapan",
|
||||
"com_ui_bookmark_delete_confirm": "Apakah Anda yakin ingin menghapus penanda ini?",
|
||||
"com_ui_bookmarks": "Penanda",
|
||||
"com_ui_bookmarks_add_to_conversation": "Tambahkan ke percakapan saat ini",
|
||||
"com_ui_bookmarks_count": "Jumlah",
|
||||
"com_ui_bookmarks_create_error": "Terjadi kesalahan saat membuat penanda",
|
||||
"com_ui_bookmarks_create_success": "Penanda berhasil dibuat",
|
||||
"com_ui_bookmarks_delete_error": "Terjadi kesalahan saat menghapus penanda",
|
||||
"com_ui_bookmarks_delete_success": "Penanda berhasil dihapus",
|
||||
"com_ui_bookmarks_description": "Deskripsi",
|
||||
"com_ui_bookmarks_new": "Penanda Baru",
|
||||
"com_ui_bookmarks_title": "Judul",
|
||||
"com_ui_bookmarks_update_error": "Terjadi kesalahan saat memperbarui penanda",
|
||||
"com_ui_bookmarks_update_success": "Penanda berhasil diperbarui",
|
||||
"com_ui_cancel": "Batal",
|
||||
"com_ui_clear": "Bersihkan",
|
||||
"com_ui_close": "Tutup",
|
||||
"com_ui_confirm_action": "Konfirmasi Aksi",
|
||||
"com_ui_continue": "Lanjutkan",
|
||||
"com_ui_copied_to_clipboard": "Disalin ke papan klip",
|
||||
"com_ui_copy_link": "Salin tautan",
|
||||
"com_ui_copy_to_clipboard": "Salin ke papan klip",
|
||||
"com_ui_create_link": "Buat tautan",
|
||||
"com_ui_decline": "Saya tidak menerima",
|
||||
"com_ui_delete": "Hapus",
|
||||
"com_ui_delete_confirm": "Ini akan menghapus",
|
||||
"com_ui_delete_conversation": "Hapus chat?",
|
||||
"com_ui_edit": "Edit",
|
||||
"com_ui_enter": "Masuk",
|
||||
"com_ui_examples": "Contoh",
|
||||
"com_ui_happy_birthday": "Ini ulang tahun pertamaku!",
|
||||
"com_ui_import_conversation_error": "Terjadi kesalahan saat mengimpor percakapan Anda",
|
||||
"com_ui_import_conversation_info": "Impor percakapan dari file JSON",
|
||||
"com_ui_import_conversation_success": "Percakapan berhasil diimpor",
|
||||
"com_ui_input": "Masukan",
|
||||
"com_ui_model": "Model",
|
||||
"com_ui_new_chat": "Chat Baru",
|
||||
"com_ui_next": "Berikutnya",
|
||||
"com_ui_no_terms_content": "Tidak ada konten syarat dan ketentuan untuk ditampilkan",
|
||||
"com_ui_of": "dari",
|
||||
"com_ui_prev": "Sebelumnya",
|
||||
"com_ui_preview": "Pratinjau",
|
||||
"com_ui_regenerate": "Regenerasi",
|
||||
"com_ui_rename": "Renombrar",
|
||||
"com_ui_revoke": "Cabut",
|
||||
"com_ui_revoke_info": "Cabut semua kredensial yang diberikan pengguna",
|
||||
"com_ui_save": "Simpan",
|
||||
"com_ui_save_submit": "Simpan & Kirim",
|
||||
"com_ui_saved": "Tersimpan!",
|
||||
"com_ui_select_model": "Pilih model",
|
||||
"com_ui_share": "Bagikan",
|
||||
"com_ui_share_create_message": "Nama Anda dan pesan apa pun yang Anda tambahkan setelah berbagi tetap pribadi.",
|
||||
"com_ui_share_delete_error": "Terjadi kesalahan saat menghapus tautan yang dibagikan.",
|
||||
"com_ui_share_error": "Terjadi kesalahan saat membagikan tautan chat",
|
||||
"com_ui_share_link_to_chat": "Bagikan tautan ke chat",
|
||||
"com_ui_share_update_message": "Nama Anda, petunjuk khusus, dan pesan apa pun yang Anda tambahkan setelah berbagi tetap pribadi.",
|
||||
"com_ui_shared_link_not_found": "Tautan berbagi tidak ditemukan",
|
||||
"com_ui_stop": "Berhenti",
|
||||
"com_ui_submit": "Kirim",
|
||||
"com_ui_terms_and_conditions": "Syarat dan Ketentuan",
|
||||
"com_ui_unarchive": "Buka Arsip",
|
||||
"com_ui_unarchive_error": "Gagal membuka arsip",
|
||||
"com_ui_upload": "Unggah",
|
||||
"com_ui_upload_error": "Ada kesalahan saat mengunggah file Anda",
|
||||
"com_ui_upload_success": "Berhasil mengunggah file",
|
||||
"com_ui_use_prompt": "Gunakan petunjuk",
|
||||
"com_user_message": "Kamu"
|
||||
}
|
||||
834
packages/client/src/locales/it/translation.json
Normal file
834
packages/client/src/locales/it/translation.json
Normal file
|
|
@ -0,0 +1,834 @@
|
|||
{
|
||||
"com_a11y_ai_composing": "L'IA sta ancora componendo",
|
||||
"com_a11y_end": "L'IA ha terminato la sua risposta",
|
||||
"com_a11y_start": "L'IA ha iniziato la sua risposta",
|
||||
"com_agents_allow_editing": "Permetti ad altri utenti di modificare il tuo agente",
|
||||
"com_agents_by_librechat": "da LibreChat",
|
||||
"com_agents_code_interpreter": "Quando abilitato, permette al tuo agente di utilizzare l'API LibreChat Code Interpreter per eseguire codice generato in modo sicuro, inclusa l'elaborazione dei file. Richiede una chiave API valida.",
|
||||
"com_agents_code_interpreter_title": "API Interprete Codice",
|
||||
"com_agents_create_error": "Si è verificato un errore durante la creazione del tuo agente.",
|
||||
"com_agents_description_placeholder": "Opzionale: Descrivi qui il tuo Agente",
|
||||
"com_agents_enable_file_search": "Abilita Ricerca File",
|
||||
"com_agents_file_context": "Contesto del File (OCR)",
|
||||
"com_agents_file_context_disabled": "L'agente deve essere creato prima di caricare i file per il Contesto del File.",
|
||||
"com_agents_file_context_info": "I file caricati come \"Contesto\" vengono elaborati tramite OCR per estrarre il testo, che viene poi aggiunto alle istruzioni dell'Agente. Ideale per documenti, immagini con testo o PDF in cui è necessario il contenuto di testo completo di un file",
|
||||
"com_agents_file_search_disabled": "L'Agente deve essere creato prima di caricare file per la Ricerca File.",
|
||||
"com_agents_file_search_info": "Quando abilitato, l'agente verrà informato dei nomi esatti dei file elencati di seguito, permettendogli di recuperare il contesto pertinente da questi file.",
|
||||
"com_agents_instructions_placeholder": "Le istruzioni di sistema utilizzate dall'agente",
|
||||
"com_agents_missing_provider_model": "Seleziona un provider e un modello prima di creare un agente.",
|
||||
"com_agents_name_placeholder": "Opzionale: Il nome dell'agente",
|
||||
"com_agents_no_access": "Non hai l'autorizzazione per modificare questo agente.",
|
||||
"com_agents_not_available": "Agente Non Disponibile",
|
||||
"com_agents_search_name": "Cerca agenti per nome",
|
||||
"com_agents_update_error": "Si è verificato un errore durante l'aggiornamento del tuo agente.",
|
||||
"com_assistants_action_attempt": "L'assistente vuole parlare con {{0}}",
|
||||
"com_assistants_actions": "Azioni",
|
||||
"com_assistants_actions_disabled": "Devi prima creare un assistente prima di aggiungere azioni.",
|
||||
"com_assistants_actions_info": "Permetti al tuo Assistente di recuperare informazioni o eseguire azioni tramite API",
|
||||
"com_assistants_add_actions": "Aggiungi Azioni",
|
||||
"com_assistants_add_tools": "Aggiungi Strumenti",
|
||||
"com_assistants_allow_sites_you_trust": "Consenti solo i siti di cui ti fidati.",
|
||||
"com_assistants_append_date": "Aggiungi Data e Ora Attuali",
|
||||
"com_assistants_append_date_tooltip": "Quando attivo, la data e l'ora attuali del cliente saranno aggiunte alle istruzioni del sistema dell'Assistente.",
|
||||
"com_assistants_attempt_info": "L'assistente vuole inviare quanto segue:",
|
||||
"com_assistants_available_actions": "Azioni Disponibili",
|
||||
"com_assistants_capabilities": "Capacità",
|
||||
"com_assistants_code_interpreter": "Interprete Codice",
|
||||
"com_assistants_code_interpreter_files": "I seguenti file sono disponibili solo per Code Interpreter:",
|
||||
"com_assistants_code_interpreter_info": "L'Interprete Codice permette all'assistente di scrivere ed eseguire codice. Questo strumento può elaborare file con diversi formati e tipi di dati, e generare file come grafici.",
|
||||
"com_assistants_completed_action": "Parlato con {{0}}",
|
||||
"com_assistants_completed_function": "Eseguito {{0}}",
|
||||
"com_assistants_conversation_starters": "Spunti di Conversazione",
|
||||
"com_assistants_conversation_starters_placeholder": "Inserisci un argomento di conversazione",
|
||||
"com_assistants_create_error": "Si è verificato un errore durante la creazione del tuo assistente.",
|
||||
"com_assistants_create_success": "Creazione avvenuta con successo",
|
||||
"com_assistants_delete_actions_error": "Si è verificato un errore durante l'eliminazione dell'azione.",
|
||||
"com_assistants_delete_actions_success": "Azione eliminata dall'Assistente con successo",
|
||||
"com_assistants_description_placeholder": "Opzionale: Descrivi qui il tuo Assistente",
|
||||
"com_assistants_domain_info": "L'Assistente ha inviato queste informazioni a {{0}}",
|
||||
"com_assistants_file_search": "Ricerca File",
|
||||
"com_assistants_file_search_info": "L'aggiunta di archivi vettoriali per la Ricerca File non è ancora supportata. Puoi aggiungerli dal Provider Playground o allegare file ai messaggi per la ricerca file su base di thread.",
|
||||
"com_assistants_function_use": "L'Assistente ha usato {{0}}",
|
||||
"com_assistants_image_vision": "Visione Immagine",
|
||||
"com_assistants_instructions_placeholder": "Le istruzioni di sistema che l'assistente utilizza",
|
||||
"com_assistants_knowledge": "Conoscenza",
|
||||
"com_assistants_knowledge_disabled": "L'Assistente deve essere creato, e Code Interpreter o Retrieval devono essere abilitati e salvati prima di caricare file come Conoscenza.",
|
||||
"com_assistants_knowledge_info": "Se carichi file sotto Conoscenza, le conversazioni con il tuo Assistente potrebbero includere i contenuti dei file.",
|
||||
"com_assistants_max_starters_reached": "Raggiunto il numero massimo di conversazioni iniziali",
|
||||
"com_assistants_name_placeholder": "Opzionale: Il nome dell'assistente",
|
||||
"com_assistants_non_retrieval_model": "La ricerca di file non è abilitata su questo modello. Seleziona un altro modello.",
|
||||
"com_assistants_retrieval": "Retrival",
|
||||
"com_assistants_running_action": "Azione in corso",
|
||||
"com_assistants_search_name": "Cerca assistenti per nome",
|
||||
"com_assistants_update_actions_error": "Si è verificato un errore durante la creazione o l'aggiornamento dell'azione.",
|
||||
"com_assistants_update_actions_success": "Azione creata o aggiornata con successo",
|
||||
"com_assistants_update_error": "Si è verificato un errore durante l'aggiornamento del tuo assistente.",
|
||||
"com_assistants_update_success": "Aggiornamento avvenuto con successo",
|
||||
"com_auth_already_have_account": "Hai già un account?",
|
||||
"com_auth_apple_login": "Continua con Apple",
|
||||
"com_auth_back_to_login": "Torna all'accesso",
|
||||
"com_auth_click": "Clicca",
|
||||
"com_auth_click_here": "Clicca qui",
|
||||
"com_auth_continue": "Continua",
|
||||
"com_auth_create_account": "Crea il tuo account",
|
||||
"com_auth_discord_login": "Continua con Discord",
|
||||
"com_auth_email": "Email",
|
||||
"com_auth_email_address": "Indirizzo email",
|
||||
"com_auth_email_max_length": "L'email non deve superare i 120 caratteri",
|
||||
"com_auth_email_min_length": "L'email deve essere di almeno 6 caratteri",
|
||||
"com_auth_email_pattern": "Devi inserire un indirizzo email valido",
|
||||
"com_auth_email_required": "L'email è obbligatoria",
|
||||
"com_auth_email_resend_link": "Reinvia email",
|
||||
"com_auth_email_resent_failed": "Impossibile reinviare l'email di verifica",
|
||||
"com_auth_email_resent_success": "Email di verifica reinviata con successo",
|
||||
"com_auth_email_verification_failed": "Verifica email fallita",
|
||||
"com_auth_email_verification_failed_token_missing": "Verifica fallita, token mancante",
|
||||
"com_auth_email_verification_in_progress": "Verifica dell'email in corso, attendere prego",
|
||||
"com_auth_email_verification_invalid": "Verifica email non valida",
|
||||
"com_auth_email_verification_redirecting": "Reindirizzamento in {{0}} secondi...",
|
||||
"com_auth_email_verification_resend_prompt": "Non hai ricevuto l'email?",
|
||||
"com_auth_email_verification_success": "Email verificata con successo",
|
||||
"com_auth_email_verifying_ellipsis": "Verifica in corso...",
|
||||
"com_auth_error_create": "Si è verificato un errore durante il tentativo di registrare il tuo account. Riprova.",
|
||||
"com_auth_error_invalid_reset_token": "Questo token di reset della password non è più valido.",
|
||||
"com_auth_error_login": "Impossibile eseguire l'accesso con le informazioni fornite. Controlla le tue credenziali e riprova.",
|
||||
"com_auth_error_login_ban": "Il tuo account è stato temporaneamente bloccato a causa di violazioni del nostro servizio.",
|
||||
"com_auth_error_login_rl": "Troppi tentativi di accesso in un breve periodo di tempo. Riprova più tardi.",
|
||||
"com_auth_error_login_server": "Si è verificato un errore interno del server. Attendi qualche istante e riprova.",
|
||||
"com_auth_error_login_unverified": "Il tuo account non è stato verificato. Controlla la tua email per il link di verifica.",
|
||||
"com_auth_facebook_login": "Continua con Facebook",
|
||||
"com_auth_full_name": "Nome completo",
|
||||
"com_auth_github_login": "Continua con Github",
|
||||
"com_auth_google_login": "Continua con Google",
|
||||
"com_auth_here": "QUI",
|
||||
"com_auth_login": "Accedi",
|
||||
"com_auth_login_with_new_password": "Ora puoi accedere con la tua nuova password.",
|
||||
"com_auth_name_max_length": "Il nome deve essere inferiore a 80 caratteri",
|
||||
"com_auth_name_min_length": "Il nome deve essere di almeno 3 caratteri",
|
||||
"com_auth_name_required": "Il nome è obbligatorio",
|
||||
"com_auth_no_account": "Non hai un account?",
|
||||
"com_auth_password": "Password",
|
||||
"com_auth_password_confirm": "Conferma password",
|
||||
"com_auth_password_forgot": "Password dimenticata?",
|
||||
"com_auth_password_max_length": "La password deve essere inferiore a 128 caratteri",
|
||||
"com_auth_password_min_length": "La password deve essere di almeno 8 caratteri",
|
||||
"com_auth_password_not_match": "Le password non corrispondono",
|
||||
"com_auth_password_required": "La password è obbligatoria",
|
||||
"com_auth_registration_success_generic": "Controlla la tua email per verificare il tuo indirizzo di posta elettronica.",
|
||||
"com_auth_registration_success_insecure": "Registrazione completata con successo.",
|
||||
"com_auth_reset_password": "Reimposta la tua password",
|
||||
"com_auth_reset_password_if_email_exists": "Se esiste un account associato a questa email, ti abbiamo inviato un'email con le istruzioni per reimpostare la password. Ricordati di controllare anche la cartella spam.",
|
||||
"com_auth_reset_password_link_sent": "Email inviata",
|
||||
"com_auth_reset_password_success": "Reset della password avvenuto con successo",
|
||||
"com_auth_sign_in": "Accedi",
|
||||
"com_auth_sign_up": "Registrati",
|
||||
"com_auth_submit_registration": "Invia registrazione",
|
||||
"com_auth_to_reset_your_password": "per reimpostare la tua password.",
|
||||
"com_auth_to_try_again": "per riprovare.",
|
||||
"com_auth_two_factor": "Controlla la tua applicazione preferita per le password monouso per un codice",
|
||||
"com_auth_username": "Nome utente (opzionale)",
|
||||
"com_auth_username_max_length": "Il nome utente deve essere inferiore a 20 caratteri",
|
||||
"com_auth_username_min_length": "Il nome utente deve essere di almeno 2 caratteri",
|
||||
"com_auth_verify_your_identity": "Verifica la propria identità",
|
||||
"com_auth_welcome_back": "Ben tornato",
|
||||
"com_click_to_download": "clicca qui per scaricare",
|
||||
"com_download_expired": "download scaduto",
|
||||
"com_download_expires": "(clicca qui per scaricare - scade il {{0}})",
|
||||
"com_endpoint": "Endpoint",
|
||||
"com_endpoint_agent": "Agente",
|
||||
"com_endpoint_agent_model": "Modello Agente (Consigliato: GPT-3.5)",
|
||||
"com_endpoint_agent_placeholder": "Seleziona un Agente",
|
||||
"com_endpoint_ai": "IA",
|
||||
"com_endpoint_anthropic_maxoutputtokens": "Numero massimo di token che possono essere generati nella risposta. Specifica un valore più basso per risposte più brevi e un valore più alto per risposte più lunghe.",
|
||||
"com_endpoint_anthropic_prompt_cache": "La cache dei prompt permette di riutilizzare contesti o istruzioni estese tra le chiamate API, riducendo costi e latenza",
|
||||
"com_endpoint_anthropic_temp": "Varia da 0 a 1. Usa temp più vicino a 0 per analitica / scelta multipla, e più vicino a 1 per compiti creativi e generativi. Consigliamo di modificare questo o Top P ma non entrambi.",
|
||||
"com_endpoint_anthropic_thinking": "Abilita il ragionamento interno per i modelli Claude supportati (3.7 Sonnet). Nota: richiede che \"Thinking Budget\" sia impostato e inferiore a \"Massimo Output Token\"",
|
||||
"com_endpoint_anthropic_thinking_budget": "Determina il numero massimo di token che Claude può utilizzare per il suo processo di ragionamento interno. Un budget maggiore può migliorare la qualità della risposta, consentendo un'analisi più approfondita di problemi complessi, anche se Claude potrebbe non utilizzare l'intero budget assegnato, soprattutto con intervalli superiori a 32K. Questa impostazione deve essere inferiore a \"Massimo Output Token\".",
|
||||
"com_endpoint_anthropic_topk": "Top-k cambia il modo in cui il modello seleziona i token per l'output. Un top-k di 1 significa che il token selezionato è il più probabile tra tutti i token nel vocabolario del modello (anche chiamato greedy decoding), mentre un top-k di 3 significa che il prossimo token è selezionato tra i 3 più probabili (usando la temperatura).",
|
||||
"com_endpoint_anthropic_topp": "Top-p cambia il modo in cui il modello seleziona i token per l'output. I token vengono selezionati dai più probabili K (vedi parametro topK) ai meno probabili fino a quando la somma delle loro probabilità eguaglia il valore top-p.",
|
||||
"com_endpoint_assistant": "Assistente",
|
||||
"com_endpoint_assistant_model": "Modello Assistente",
|
||||
"com_endpoint_assistant_placeholder": "Seleziona un Assistente dal Pannello laterale destro",
|
||||
"com_endpoint_completion": "Completamento",
|
||||
"com_endpoint_completion_model": "Modello Completamento (Consigliato: GPT-4)",
|
||||
"com_endpoint_config_click_here": "Clicca qui",
|
||||
"com_endpoint_config_google_api_info": "Per ottenere la tua chiave API Generative Language (per Gemini),",
|
||||
"com_endpoint_config_google_api_key": "Chiave API Google",
|
||||
"com_endpoint_config_google_cloud_platform": "(da Google Cloud Platform)",
|
||||
"com_endpoint_config_google_gemini_api": "(API Gemini)",
|
||||
"com_endpoint_config_google_service_key": "Chiave Account di Servizio Google",
|
||||
"com_endpoint_config_key": "Imposta chiave API",
|
||||
"com_endpoint_config_key_encryption": "La tua chiave sarà crittografata ed eliminata al",
|
||||
"com_endpoint_config_key_for": "Imposta chiave API per",
|
||||
"com_endpoint_config_key_google_need_to": "Devi",
|
||||
"com_endpoint_config_key_google_service_account": "Creare un Account di Servizio",
|
||||
"com_endpoint_config_key_google_vertex_ai": "Abilitare Vertex AI",
|
||||
"com_endpoint_config_key_google_vertex_api": "API su Google Cloud, poi",
|
||||
"com_endpoint_config_key_google_vertex_api_role": "Assicurati di cliccare su \"Crea e Continua\" per assegnare almeno il ruolo \"Utente Vertex AI\". Infine, crea una chiave JSON da importare qui.",
|
||||
"com_endpoint_config_key_import_json_key": "Importa chiave JSON Account di Servizio.",
|
||||
"com_endpoint_config_key_import_json_key_invalid": "Chiave JSON Account di Servizio non valida, hai importato il file corretto?",
|
||||
"com_endpoint_config_key_import_json_key_success": "Chiave JSON Account di Servizio importata con successo",
|
||||
"com_endpoint_config_key_name": "Chiave",
|
||||
"com_endpoint_config_key_never_expires": "La tua chiave non scadrà mai",
|
||||
"com_endpoint_config_placeholder": "Imposta la tua Chiave nel menu Header per chattare.",
|
||||
"com_endpoint_config_value": "Inserisci valore per",
|
||||
"com_endpoint_context": "Contesto",
|
||||
"com_endpoint_context_info": "Il numero massimo di token che possono essere utilizzati per il contesto. Usalo per controllare quanti token vengono inviati per richiesta. Se non specificato, verranno utilizzate le impostazioni di sistema predefinite in base alle dimensioni del contesto dei modelli noti. Impostare valori più alti potrebbe causare errori e/o costi di token più elevati.",
|
||||
"com_endpoint_context_tokens": "Token di Contesto Massimi",
|
||||
"com_endpoint_custom_name": "Nome personalizzato",
|
||||
"com_endpoint_default": "predefinito",
|
||||
"com_endpoint_default_blank": "predefinito: vuoto",
|
||||
"com_endpoint_default_empty": "predefinito: vuoto",
|
||||
"com_endpoint_default_with_num": "predefinito: {{0}}",
|
||||
"com_endpoint_examples": "Preimpostazioni",
|
||||
"com_endpoint_export": "Esporta",
|
||||
"com_endpoint_export_share": "Esporta/Condividi",
|
||||
"com_endpoint_frequency_penalty": "Penalità di frequenza",
|
||||
"com_endpoint_func_hover": "Abilita l'uso di Plugin come OpenAI Functions",
|
||||
"com_endpoint_google_custom_name_placeholder": "Imposta un nome personalizzato per Google",
|
||||
"com_endpoint_google_maxoutputtokens": "Numero massimo di token che possono essere generati nella risposta. Specifica un valore più basso per risposte più brevi e un valore più alto per risposte più lunghe.",
|
||||
"com_endpoint_google_temp": "Valori più alti = più casualità, mentre valori più bassi = più focalizzati e deterministici. Consigliamo di modificare questo o Top P ma non entrambi.",
|
||||
"com_endpoint_google_topk": "Top-k cambia il modo in cui il modello seleziona i token per l'output. Un top-k di 1 significa che il token selezionato è il più probabile tra tutti i token nel vocabolario del modello (anche chiamato greedy decoding), mentre un top-k di 3 significa che il prossimo token è selezionato tra i 3 più probabili (usando la temperatura).",
|
||||
"com_endpoint_google_topp": "Top-p cambia il modo in cui il modello seleziona i token per l'output. I token vengono selezionati dai più probabili K (vedi parametro topK) ai meno probabili fino a quando la somma delle loro probabilità eguaglia il valore top-p.",
|
||||
"com_endpoint_instructions_assistants": "Sovrascrivi istruzioni",
|
||||
"com_endpoint_instructions_assistants_placeholder": "Sovrascrive le istruzioni dell'assistente. Utile per modificare il comportamento su base singola.",
|
||||
"com_endpoint_max_output_tokens": "Token di output massimi",
|
||||
"com_endpoint_message": "Messaggio",
|
||||
"com_endpoint_message_new": "Messaggio {{0}}",
|
||||
"com_endpoint_message_not_appendable": "Modifica il tuo messaggio o Rigenera.",
|
||||
"com_endpoint_my_preset": "La mia preimpostazione",
|
||||
"com_endpoint_no_presets": "Ancora nessuna preimpostazione, usa il pulsante impostazioni per crearne una",
|
||||
"com_endpoint_open_menu": "Apri menu",
|
||||
"com_endpoint_openai_custom_name_placeholder": "Imposta un nome personalizzato per l'IA",
|
||||
"com_endpoint_openai_detail": "La risoluzione per le richieste Vision. \"Bassa\" è più economica e veloce, \"Alta\" è più dettagliata e costosa, e \"Auto\" sceglierà automaticamente tra le due in base alla risoluzione dell'immagine.",
|
||||
"com_endpoint_openai_freq": "Numero compreso tra -2.0 e 2.0. Valori positivi penalizzano i nuovi token basati sulla loro frequenza esistente nel testo fino a quel momento, diminuendo la probabilità del modello di ripetere la stessa riga verbatim.",
|
||||
"com_endpoint_openai_max": "I token massimi da generare. La lunghezza totale dei token di input e dei token generati è limitata dalla lunghezza del contesto del modello.",
|
||||
"com_endpoint_openai_max_tokens": "Campo `max_tokens` opzionale, che rappresenta il numero massimo di token che possono essere generati nel completamento della chat.\n\nLa lunghezza totale dei token di input e dei token generati è limitata dalla lunghezza del contesto del modello. Potresti riscontrare errori se questo numero supera il massimo dei token di contesto.",
|
||||
"com_endpoint_openai_pres": "Numero compreso tra -2.0 e 2.0. Valori positivi penalizzano i nuovi token in base a se compaiono nel testo fino a quel momento, aumentando la probabilità del modello di parlare di nuovi argomenti.",
|
||||
"com_endpoint_openai_prompt_prefix_placeholder": "Imposta istruzioni personalizzate da includere nel Messaggio di Sistema. Predefinito: nessuno",
|
||||
"com_endpoint_openai_reasoning_effort": "solo per modelli o1: limita lo sforzo sul ragionamento per i modelli di ragionamento. Ridurre lo sforzo di ragionamento può portare a risposte più veloci e a un minor numero di token utilizzati per il ragionamento in una risposta",
|
||||
"com_endpoint_openai_resend": "Invia nuovamente tutte le immagini allegate in precedenza. Nota: questo può aumentare significativamente il costo dei token e potresti incontrare errori con molti allegati di immagini.",
|
||||
"com_endpoint_openai_resend_files": "Invia nuovamente tutti i file allegati in precedenza. Nota: questo aumenterà il costo dei token e potresti incontrare errori con molti allegati.",
|
||||
"com_endpoint_openai_stop": "Fino a 4 sequenze in cui l'API smetterà di generare ulteriori token.",
|
||||
"com_endpoint_openai_temp": "Valori più alti = più casualità, mentre valori più bassi = più focalizzati e deterministici. Consigliamo di modificare questo o Top P ma non entrambi.",
|
||||
"com_endpoint_openai_topp": "Un'alternativa al campionamento con temperatura, chiamata nucleus sampling, in cui il modello considera i risultati dei token con probabilità di massa top_p. Quindi 0,1 significa che vengono considerati solo i token che compongono la massa di probabilità superiore al 10%. Consigliamo di modificare questo o la temperatura ma non entrambi.",
|
||||
"com_endpoint_output": "Output",
|
||||
"com_endpoint_plug_image_detail": "Dettaglio immagine",
|
||||
"com_endpoint_plug_resend_files": "Reinvia file",
|
||||
"com_endpoint_plug_set_custom_instructions_for_gpt_placeholder": "Imposta istruzioni personalizzate da includere nel Messaggio di Sistema. Predefinito: nessuno",
|
||||
"com_endpoint_plug_skip_completion": "Salta completamento",
|
||||
"com_endpoint_plug_use_functions": "Usa funzioni",
|
||||
"com_endpoint_presence_penalty": "Penalità di presenza",
|
||||
"com_endpoint_preset": "preimpostazione",
|
||||
"com_endpoint_preset_default": "è ora la preimpostazione predefinita.",
|
||||
"com_endpoint_preset_default_item": "Predefinita:",
|
||||
"com_endpoint_preset_default_none": "Nessuna preimpostazione predefinita attiva.",
|
||||
"com_endpoint_preset_default_removed": "non è più la preimpostazione predefinita.",
|
||||
"com_endpoint_preset_delete_confirm": "Sei sicuro di voler eliminare questa preimpostazione?",
|
||||
"com_endpoint_preset_delete_error": "Si è verificato un errore durante l'eliminazione della preimpostazione. Riprova.",
|
||||
"com_endpoint_preset_import": "Preimpostazione importata!",
|
||||
"com_endpoint_preset_import_error": "Si è verificato un errore durante l'importazione della preimpostazione. Riprova.",
|
||||
"com_endpoint_preset_name": "Nome preimpostazione",
|
||||
"com_endpoint_preset_save_error": "Si è verificato un errore durante il salvataggio della preimpostazione. Riprova.",
|
||||
"com_endpoint_preset_selected": "Preimpostazione attiva!",
|
||||
"com_endpoint_preset_selected_title": "Attiva!",
|
||||
"com_endpoint_preset_title": "Preimpostazione",
|
||||
"com_endpoint_presets": "preimpostazioni",
|
||||
"com_endpoint_presets_clear_warning": "Sei sicuro di voler cancellare tutte le preimpostazioni? Questa azione è irreversibile.",
|
||||
"com_endpoint_prompt_cache": "Usa Cache dei Prompt",
|
||||
"com_endpoint_prompt_prefix": "Istruzioni personalizzate",
|
||||
"com_endpoint_prompt_prefix_assistants": "Istruzioni aggiuntive",
|
||||
"com_endpoint_prompt_prefix_assistants_placeholder": "Imposta istruzioni o contesto aggiuntivi oltre alle istruzioni principali dell'Assistente. Ignorato se vuoto.",
|
||||
"com_endpoint_prompt_prefix_placeholder": "Imposta istruzioni personalizzate o contesto. Ignorato se vuoto.",
|
||||
"com_endpoint_reasoning_effort": "Impegno nel Ragionamento",
|
||||
"com_endpoint_save_as_preset": "Salva come Preimpostazione",
|
||||
"com_endpoint_search": "Cerca endpoint per nome",
|
||||
"com_endpoint_search_endpoint_models": "Ricerca modelli di {{0}}...",
|
||||
"com_endpoint_search_models": "Cerca modelli...",
|
||||
"com_endpoint_search_var": "Ricerca {{0}}...",
|
||||
"com_endpoint_set_custom_name": "Imposta un nome personalizzato, nel caso tu possa trovare questa preimpostazione",
|
||||
"com_endpoint_skip_hover": "Abilita la possibilità di saltare il passaggio di completamento, che rivede la risposta finale e i passaggi generati",
|
||||
"com_endpoint_stop": "Sequenze di stop",
|
||||
"com_endpoint_stop_placeholder": "Separa i valori premendo `Invio`",
|
||||
"com_endpoint_temperature": "Temperatura",
|
||||
"com_endpoint_thinking": "Ragionando",
|
||||
"com_endpoint_thinking_budget": "Budget Ragionamento",
|
||||
"com_endpoint_top_k": "Top K",
|
||||
"com_endpoint_top_p": "Top P",
|
||||
"com_endpoint_use_active_assistant": "Usa Assistente Attivo",
|
||||
"com_error_expired_user_key": "La chiave fornita per {{0}} è scaduta il {{1}}. Fornisci una chiave e riprova.",
|
||||
"com_error_files_dupe": "File duplicato rilevato.",
|
||||
"com_error_files_empty": "I file vuoti non sono consentiti.",
|
||||
"com_error_files_process": "Si è verificato un errore durante l'elaborazione del file.",
|
||||
"com_error_files_unsupported_capability": "Nessuna funzionalità abilitata che supporti questo tipo di file.",
|
||||
"com_error_files_upload": "Si è verificato un errore durante il caricamento del file.",
|
||||
"com_error_files_upload_canceled": "La richiesta di caricamento del file è stata annullata. Nota: il caricamento del file potrebbe essere ancora in corso e potrebbe essere necessario eliminarlo manualmente.",
|
||||
"com_error_files_validation": "Si è verificato un errore durante la validazione del file.",
|
||||
"com_error_input_length": "Il conteggio dei token dell'ultimo messaggio è troppo lungo e supera il limite consentito ({{0}}). Per favore, accorcia il tuo messaggio, modifica la dimensione massima del contesto dai parametri della conversazione, oppure crea una diramazione della conversazione per continuare.",
|
||||
"com_error_invalid_user_key": "Chiave fornita non valida. Fornisci una chiave e riprova.",
|
||||
"com_error_moderation": "Sembra che il contenuto inviato sia stato contrassegnato dal nostro sistema di moderazione per non essere allineato con le nostre linee guida della community. Non possiamo procedere con questo argomento specifico. Se hai altre domande o argomenti che vorresti esplorare, modifica il tuo messaggio o crea una nuova conversazione.",
|
||||
"com_error_no_base_url": "Nessun URL base trovato. Forniscine uno e riprova.",
|
||||
"com_error_no_user_key": "Nessuna chiave trovata. Fornisci una chiave e riprova.",
|
||||
"com_files_filter": "Filtra file...",
|
||||
"com_files_no_results": "Nessun risultato.",
|
||||
"com_files_number_selected": "{{0}} di {{1}} file selezionati",
|
||||
"com_generated_files": "File generati:",
|
||||
"com_hide_examples": "Nascondi esempi",
|
||||
"com_nav_2fa": "Autenticazione a due fattori (2FA)",
|
||||
"com_nav_account_settings": "Impostazioni account",
|
||||
"com_nav_always_make_prod": "Rendi sempre produttive le nuove versioni",
|
||||
"com_nav_archive_created_at": "DateCreated",
|
||||
"com_nav_archive_name": "Nome",
|
||||
"com_nav_archived_chats": "Chat archiviate",
|
||||
"com_nav_at_command": "Comando @",
|
||||
"com_nav_at_command_description": "Attiva il comando \"@\" per cambiare endpoint, modelli, preset e altro",
|
||||
"com_nav_audio_play_error": "Errore durante la riproduzione audio: {{0}}",
|
||||
"com_nav_audio_process_error": "Errore durante l'elaborazione dell'audio: {{0}}",
|
||||
"com_nav_auto_scroll": "Scorri automaticamente ai nuovi messaggi all'apertura",
|
||||
"com_nav_auto_send_prompts": "Invio automatico dei prompt",
|
||||
"com_nav_auto_send_text": "Invio automatico del testo",
|
||||
"com_nav_auto_send_text_disabled": "imposta -1 per disabilitare",
|
||||
"com_nav_auto_transcribe_audio": "Trascrivi audio automaticamente",
|
||||
"com_nav_automatic_playback": "Riproduzione automatica ultimo messaggio",
|
||||
"com_nav_balance": "Bilancio",
|
||||
"com_nav_browser": "Browser",
|
||||
"com_nav_center_chat_input": "Input chat centrale nella schermata di benvenuto",
|
||||
"com_nav_change_picture": "Cambia immagine",
|
||||
"com_nav_chat_commands": "Comandi Chat",
|
||||
"com_nav_chat_commands_info": "Questi comandi vengono attivati digitando caratteri specifici all'inizio del tuo messaggio. Ogni comando viene attivato dal suo prefisso designato. Puoi disabilitarli se usi frequentemente questi caratteri per iniziare i messaggi.",
|
||||
"com_nav_chat_direction": "Direzione della chat",
|
||||
"com_nav_clear_all_chats": "Cancella tutte le chat",
|
||||
"com_nav_clear_cache_confirm_message": "Sei sicuro di voler svuotare la cache?",
|
||||
"com_nav_clear_conversation": "Cancella conversazioni",
|
||||
"com_nav_clear_conversation_confirm_message": "Sei sicuro di voler cancellare tutte le conversazioni? Questa azione è irreversibile.",
|
||||
"com_nav_close_sidebar": "Chiudi barra laterale",
|
||||
"com_nav_commands": "Comandi",
|
||||
"com_nav_confirm_clear": "Conferma cancellazione",
|
||||
"com_nav_conversation_mode": "Modalità Conversazione",
|
||||
"com_nav_convo_menu_options": "Opzioni menu conversazione",
|
||||
"com_nav_db_sensitivity": "Sensibilità decibel",
|
||||
"com_nav_delete_account": "Elimina account",
|
||||
"com_nav_delete_account_button": "Elimina permanentemente il mio account",
|
||||
"com_nav_delete_account_confirm": "Sei sicuro di voler eliminare il tuo account?",
|
||||
"com_nav_delete_account_email_placeholder": "Inserisci la tua email",
|
||||
"com_nav_delete_cache_storage": "Elimina cache TTS",
|
||||
"com_nav_delete_data_info": "Tutti i tuoi dati verranno eliminati.",
|
||||
"com_nav_delete_warning": "ATTENZIONE: Questa azione eliminerà definitivamente il tuo account.",
|
||||
"com_nav_edit_chat_badges": "Modifica i badge della chat",
|
||||
"com_nav_enable_cache_tts": "Abilita cache TTS",
|
||||
"com_nav_enable_cloud_browser_voice": "Usa voci basate su cloud",
|
||||
"com_nav_enabled": "Abilitato",
|
||||
"com_nav_engine": "Motore",
|
||||
"com_nav_enter_to_send": "Premi Invio per inviare messaggi",
|
||||
"com_nav_export": "Esporta",
|
||||
"com_nav_export_all_message_branches": "Esporta tutti i rami dei messaggi",
|
||||
"com_nav_export_conversation": "Esporta conversazione",
|
||||
"com_nav_export_filename": "Nome file",
|
||||
"com_nav_export_filename_placeholder": "Imposta il nome del file",
|
||||
"com_nav_export_include_endpoint_options": "Includi opzioni endpoint",
|
||||
"com_nav_export_recursive": "Ricorsivo",
|
||||
"com_nav_export_recursive_or_sequential": "Ricorsivo o sequenziale?",
|
||||
"com_nav_export_type": "Tipo",
|
||||
"com_nav_external": "Esterno",
|
||||
"com_nav_font_size": "Dimensione carattere messaggi",
|
||||
"com_nav_font_size_base": "Medio",
|
||||
"com_nav_font_size_lg": "Grande",
|
||||
"com_nav_font_size_sm": "Piccolo",
|
||||
"com_nav_font_size_xl": "Extra Large",
|
||||
"com_nav_font_size_xs": "Extra Small",
|
||||
"com_nav_help_faq": "Guida e FAQ",
|
||||
"com_nav_hide_panel": "Nascondi il Pannello laterale più a destra",
|
||||
"com_nav_info_code_artifacts": "Abilita la visualizzazione di artefatti di codice sperimentali accanto alla chat",
|
||||
"com_nav_info_code_artifacts_agent": "Abilita l'uso di artefatti di codice per questo agente. Per impostazione predefinita, vengono aggiunte istruzioni aggiuntive specifiche per l'uso degli artefatti, a meno che non sia abilitata la \"Modalità prompt personalizzato\".",
|
||||
"com_nav_info_custom_prompt_mode": "Quando attivata, l'istruzione predefinita del sistema per gli artefatti non verrà inclusa. In questa modalità, tutte le istruzioni per la generazione degli artefatti dovranno essere fornite manualmente.",
|
||||
"com_nav_info_enter_to_send": "Quando attivo, premendo `INVIO` invierai il tuo messaggio. Quando disattivato, premendo Invio andrai a capo, e dovrai premere `CTRL + INVIO` / `⌘ + INVIO` per inviare il messaggio.",
|
||||
"com_nav_info_fork_change_default": "\"Solo messaggi visibili\" include solo il percorso diretto al messaggio selezionato. \"Includi rami correlati\" aggiunge i rami lungo il percorso. \"Includi tutti i messaggi da/verso qui\" include tutti i messaggi e i rami connessi.",
|
||||
"com_nav_info_fork_split_target_setting": "Quando abilitato, la duplicazione inizierà dal messaggio di destinazione fino all'ultimo messaggio della conversazione, secondo il comportamento selezionato.",
|
||||
"com_nav_info_include_shadcnui": "Quando abilitato, verranno incluse le istruzioni per l'utilizzo dei componenti shadcn/ui. shadcn/ui è una raccolta di componenti riutilizzabili costruiti utilizzando Radix UI e Tailwind CSS. Nota: queste sono istruzioni dettagliate, dovresti abilitarle solo se ritieni importante informare l'LLM sulle corrette importazioni e sui componenti. Per maggiori informazioni su questi componenti, visita: https://ui.shadcn.com/",
|
||||
"com_nav_info_latex_parsing": "Quando attivato, il codice LaTeX nei messaggi verrà visualizzato come equazioni matematiche. Disattivarlo può migliorare le prestazioni se non hai bisogno della visualizzazione LaTeX.",
|
||||
"com_nav_info_save_draft": "Quando attivata, questa funzione salverà automaticamente come bozze il testo e gli allegati inseriti nella chat. Queste bozze saranno disponibili anche se ricarichi la pagina o passi a un'altra conversazione. Le bozze vengono memorizzate localmente sul tuo dispositivo e vengono eliminate una volta inviato il messaggio.",
|
||||
"com_nav_info_show_thinking": "Quando attivato, la chat mostrerà i menu a tendina del ragionamento aperti per impostazione predefinita, permettendoti di visualizzare il ragionamento dell'IA in tempo reale. Quando disattivato, i menu a tendina del ragionamento rimarranno chiusi per impostazione predefinita per un'interfaccia più pulita e snella",
|
||||
"com_nav_info_user_name_display": "Quando attivato, il nome utente del mittente verrà mostrato sopra ogni messaggio che invii. Quando disattivato, vedrai solo \"Tu\" sopra i tuoi messaggi.",
|
||||
"com_nav_lang_arabic": "العربية",
|
||||
"com_nav_lang_auto": "Rileva automaticamente",
|
||||
"com_nav_lang_brazilian_portuguese": "Português Brasileiro",
|
||||
"com_nav_lang_chinese": "中文",
|
||||
"com_nav_lang_dutch": "Nederlands",
|
||||
"com_nav_lang_english": "English",
|
||||
"com_nav_lang_estonian": "Eesti keel",
|
||||
"com_nav_lang_finnish": "Suomi",
|
||||
"com_nav_lang_french": "Français ",
|
||||
"com_nav_lang_georgian": "ქართული",
|
||||
"com_nav_lang_german": "Deutsch",
|
||||
"com_nav_lang_hebrew": "עברית",
|
||||
"com_nav_lang_hungarian": "Ungherese",
|
||||
"com_nav_lang_indonesia": "Indonesia",
|
||||
"com_nav_lang_italian": "Italiano",
|
||||
"com_nav_lang_japanese": "日本語",
|
||||
"com_nav_lang_korean": "한국어",
|
||||
"com_nav_lang_polish": "Polski",
|
||||
"com_nav_lang_portuguese": "Português",
|
||||
"com_nav_lang_russian": "Русский",
|
||||
"com_nav_lang_spanish": "Español",
|
||||
"com_nav_lang_swedish": "Svenska",
|
||||
"com_nav_lang_thai": "ไทย",
|
||||
"com_nav_lang_traditional_chinese": "繁體中文",
|
||||
"com_nav_lang_turkish": "Türkçe",
|
||||
"com_nav_lang_vietnamese": "Tiếng Việt",
|
||||
"com_nav_language": "Lingua",
|
||||
"com_nav_latex_parsing": "Analizza LaTeX nei messaggi (potrebbe influire sulle prestazioni)",
|
||||
"com_nav_log_out": "Disconnetti",
|
||||
"com_nav_long_audio_warning": "I testi più lunghi richiederanno più tempo per l'elaborazione.",
|
||||
"com_nav_maximize_chat_space": "Massimizza spazio chat",
|
||||
"com_nav_modular_chat": "Abilita il cambio di Endpoint a metà conversazione",
|
||||
"com_nav_my_files": "I miei file",
|
||||
"com_nav_not_supported": "Non supportato",
|
||||
"com_nav_open_sidebar": "Apri barra laterale",
|
||||
"com_nav_playback_rate": "Velocità di riproduzione audio",
|
||||
"com_nav_plugin_auth_error": "Si è verificato un errore durante il tentativo di autenticazione di questo plugin. Riprova.",
|
||||
"com_nav_plugin_install": "Installa",
|
||||
"com_nav_plugin_search": "Cerca plugin",
|
||||
"com_nav_plugin_store": "Store plugin",
|
||||
"com_nav_plugin_uninstall": "Disinstalla",
|
||||
"com_nav_plus_command": "+-Comando",
|
||||
"com_nav_plus_command_description": "Attiva/disattiva il comando \"+\" per aggiungere un'impostazione multi-risposta",
|
||||
"com_nav_profile_picture": "Immagine profilo",
|
||||
"com_nav_save_drafts": "Salva bozze localmente",
|
||||
"com_nav_scroll_button": "Pulsante per scorrere fino alla fine",
|
||||
"com_nav_search_placeholder": "Cerca messaggi",
|
||||
"com_nav_send_message": "Invia messaggio",
|
||||
"com_nav_setting_account": "Account",
|
||||
"com_nav_setting_beta": "Funzioni Beta",
|
||||
"com_nav_setting_chat": "Chat",
|
||||
"com_nav_setting_data": "Controlli dati",
|
||||
"com_nav_setting_general": "Generale",
|
||||
"com_nav_setting_speech": "Voce",
|
||||
"com_nav_settings": "Impostazioni",
|
||||
"com_nav_shared_links": "Link condivisi",
|
||||
"com_nav_show_code": "Mostra sempre il codice quando si usa l'interprete di codice",
|
||||
"com_nav_show_thinking": "Apri i menu a tendina del ragionamento per impostazione predefinita",
|
||||
"com_nav_slash_command": "/-Comando",
|
||||
"com_nav_slash_command_description": "Attiva il comando \"/\" per selezionare un prompt tramite tastiera",
|
||||
"com_nav_speech_to_text": "Da voce a testo",
|
||||
"com_nav_stop_generating": "Interrompi generazione",
|
||||
"com_nav_text_to_speech": "Da testo a voce",
|
||||
"com_nav_theme": "Tema",
|
||||
"com_nav_theme_dark": "Scuro",
|
||||
"com_nav_theme_light": "Chiaro",
|
||||
"com_nav_theme_system": "Sistema",
|
||||
"com_nav_tool_dialog": "Strumenti Assistente",
|
||||
"com_nav_tool_dialog_agents": "Strumenti Agente",
|
||||
"com_nav_tool_dialog_description": "L'Assistente deve essere salvato per conservare le selezioni degli strumenti.",
|
||||
"com_nav_tool_remove": "Rimuovi",
|
||||
"com_nav_tool_search": "Cerca strumenti",
|
||||
"com_nav_user": "UTENTE",
|
||||
"com_nav_user_msg_markdown": "Visualizza i messaggi utente in markdown",
|
||||
"com_nav_user_name_display": "Mostra nome utente nei messaggi",
|
||||
"com_nav_voice_select": "Voce",
|
||||
"com_show_agent_settings": "Mostra impostazioni Agente",
|
||||
"com_show_completion_settings": "Mostra impostazioni Completamento",
|
||||
"com_show_examples": "Mostra esempi",
|
||||
"com_sidepanel_agent_builder": "Costruttore Agente",
|
||||
"com_sidepanel_assistant_builder": "Costruttore Assistente",
|
||||
"com_sidepanel_attach_files": "Allega File",
|
||||
"com_sidepanel_conversation_tags": "Segnalibri",
|
||||
"com_sidepanel_hide_panel": "Nascondi Pannello",
|
||||
"com_sidepanel_manage_files": "Gestisci File",
|
||||
"com_sidepanel_parameters": "Parametri",
|
||||
"com_ui_2fa_account_security": "L'autenticazione a due fattori aggiunge un ulteriore livello di sicurezza al vostro account",
|
||||
"com_ui_2fa_disable": "Disattivare 2FA",
|
||||
"com_ui_2fa_disable_error": "Si è verificato un errore nella disabilitazione dell'autenticazione a due fattori",
|
||||
"com_ui_2fa_disabled": "Il 2FA è stato disattivato",
|
||||
"com_ui_2fa_enable": "Abilitare 2FA",
|
||||
"com_ui_2fa_enabled": "Il 2FA è stato abilitato",
|
||||
"com_ui_2fa_generate_error": "Si è verificato un errore nella generazione delle impostazioni dell'autenticazione a due fattori",
|
||||
"com_ui_2fa_invalid": "Codice di autenticazione a due fattori non valido",
|
||||
"com_ui_2fa_setup": "Setup 2FA",
|
||||
"com_ui_2fa_verified": "Autenticazione a due fattori verificata con successo",
|
||||
"com_ui_accept": "Accetto",
|
||||
"com_ui_add": "Aggiungi",
|
||||
"com_ui_add_model_preset": "Aggiungi un modello o una preimpostazione per una risposta aggiuntiva",
|
||||
"com_ui_add_multi_conversation": "Aggiungi conversazioni multiple",
|
||||
"com_ui_admin": "Amministratore",
|
||||
"com_ui_admin_access_warning": "La disattivazione dell'accesso amministratore a questa funzionalità potrebbe causare problemi imprevisti all'interfaccia utente che richiedono un aggiornamento. Una volta salvata, l'unico modo per ripristinare è attraverso l'impostazione dell'interfaccia nel file di configurazione librechat.yaml, che influisce su tutti i ruoli.",
|
||||
"com_ui_admin_settings": "Impostazioni Amministratore",
|
||||
"com_ui_advanced": "Avanzate",
|
||||
"com_ui_advanced_settings": "Impostazioni avanzate",
|
||||
"com_ui_agent": "Agente",
|
||||
"com_ui_agent_chain": "Catena di agenti (Mixture-of-Agents)",
|
||||
"com_ui_agent_chain_info": "Consente di creare sequenze di agenti. Ogni agente può accedere agli output degli agenti precedenti nella catena. Si basa sull'architettura \"Mixture-of-Agents\", in cui gli agenti utilizzano le uscite precedenti come informazioni ausiliarie.",
|
||||
"com_ui_agent_chain_max": "Avete raggiunto il massimo di {{0}} agenti.",
|
||||
"com_ui_agent_delete_error": "Si è verificato un errore durante l'eliminazione dell'agente",
|
||||
"com_ui_agent_deleted": "Agente eliminato con successo",
|
||||
"com_ui_agent_duplicate_error": "Si è verificato un errore durante la duplicazione dell'assistente",
|
||||
"com_ui_agent_duplicated": "Agente duplicato con successo",
|
||||
"com_ui_agent_editing_allowed": "Altri utenti possono già modificare questo assistente",
|
||||
"com_ui_agent_recursion_limit": "Passi massimi dell'agente",
|
||||
"com_ui_agent_recursion_limit_info": "Limita il numero di passaggi che l'agente può effettuare in un'esecuzione prima di fornire una risposta finale. Il valore predefinito è 25 passaggi. Un passaggio è una richiesta API AI o un round di utilizzo dello strumento. Ad esempio, un'interazione di base con uno strumento richiede 3 passaggi: richiesta iniziale, utilizzo dello strumento e richiesta di follow-up",
|
||||
"com_ui_agent_var": "{{0}} agente",
|
||||
"com_ui_agents": "Agenti",
|
||||
"com_ui_agents_allow_create": "Consenti creazione Agenti",
|
||||
"com_ui_agents_allow_share_global": "Consenti la condivisione degli Agenti con tutti gli utenti",
|
||||
"com_ui_agents_allow_use": "Consenti utilizzo Agenti",
|
||||
"com_ui_all": "tutto",
|
||||
"com_ui_all_proper": "Tutto",
|
||||
"com_ui_analyzing": "Analizzando",
|
||||
"com_ui_analyzing_finished": "Analisi completata",
|
||||
"com_ui_api_key": "Chiave API",
|
||||
"com_ui_archive": "Archivia",
|
||||
"com_ui_archive_error": "Errore durante l'archiviazione della conversazione",
|
||||
"com_ui_artifact_click": "Clicca per aprire",
|
||||
"com_ui_artifacts": "Artefatti",
|
||||
"com_ui_artifacts_toggle": "Mostra/Nascondi Interfaccia Artefatti",
|
||||
"com_ui_artifacts_toggle_agent": "Abilita artefatti",
|
||||
"com_ui_ascending": "Crescente",
|
||||
"com_ui_assistant": "Assistente",
|
||||
"com_ui_assistant_delete_error": "Si è verificato un errore durante l'eliminazione dell'assistente",
|
||||
"com_ui_assistant_deleted": "Assistente eliminato con successo",
|
||||
"com_ui_assistants": "Assistenti",
|
||||
"com_ui_assistants_output": "Output Assistenti",
|
||||
"com_ui_attach_error": "Impossibile allegare il file. Crea o seleziona una conversazione, oppure prova a ricaricare la pagina.",
|
||||
"com_ui_attach_error_openai": "Non è possibile allegare file dell'Assistente ad altri endpoint",
|
||||
"com_ui_attach_error_size": "Limite dimensione file superato per l'endpoint:",
|
||||
"com_ui_attach_error_type": "Tipo di file non supportato per l'endpoint:",
|
||||
"com_ui_attach_warn_endpoint": "Attenzione: i file non compatibili con lo strumento potrebbero essere ignorati",
|
||||
"com_ui_attachment": "Allegato",
|
||||
"com_ui_auth_type": "Tipo di autenticazione",
|
||||
"com_ui_auth_url": "URL di autorizzazione",
|
||||
"com_ui_authentication": "Autenticazione",
|
||||
"com_ui_authentication_type": "Tipo di autenticazione",
|
||||
"com_ui_avatar": "Avatar",
|
||||
"com_ui_azure": "Azure",
|
||||
"com_ui_back_to_chat": "Torna alla Chat",
|
||||
"com_ui_back_to_prompts": "Torna ai prompt",
|
||||
"com_ui_backup_codes": "Codici di backup",
|
||||
"com_ui_backup_codes_regenerate_error": "Si è verificato un errore durante la rigenerazione dei codici di backup",
|
||||
"com_ui_backup_codes_regenerated": "I codici di backup sono stati rigenerati con successo",
|
||||
"com_ui_basic": "Base",
|
||||
"com_ui_basic_auth_header": "Intestazione di autorizzazione di base",
|
||||
"com_ui_bearer": "Bearer",
|
||||
"com_ui_bookmark_delete_confirm": "Sei sicuro di voler eliminare questo segnalibro?",
|
||||
"com_ui_bookmarks": "Segnalibri",
|
||||
"com_ui_bookmarks_add": "Aggiungi Segnalibri",
|
||||
"com_ui_bookmarks_add_to_conversation": "Aggiungi alla conversazione attuale",
|
||||
"com_ui_bookmarks_count": "Conteggio",
|
||||
"com_ui_bookmarks_create_error": "Si è verificato un errore durante la creazione del segnalibro",
|
||||
"com_ui_bookmarks_create_exists": "Questo segnalibro esiste già",
|
||||
"com_ui_bookmarks_create_success": "Segnalibro creato con successo",
|
||||
"com_ui_bookmarks_delete": "Elimina Segnalibro",
|
||||
"com_ui_bookmarks_delete_error": "Si è verificato un errore durante l'eliminazione del segnalibro",
|
||||
"com_ui_bookmarks_delete_success": "Segnalibro eliminato con successo",
|
||||
"com_ui_bookmarks_description": "Descrizione",
|
||||
"com_ui_bookmarks_edit": "Modifica Segnalibro",
|
||||
"com_ui_bookmarks_filter": "Filtra segnalibri...",
|
||||
"com_ui_bookmarks_new": "Nuovo Segnalibro",
|
||||
"com_ui_bookmarks_title": "Titolo",
|
||||
"com_ui_bookmarks_update_error": "Si è verificato un errore durante l'aggiornamento del segnalibro",
|
||||
"com_ui_bookmarks_update_success": "Segnalibro aggiornato con successo",
|
||||
"com_ui_bulk_delete_error": "Impossibile eliminare i link condivisi",
|
||||
"com_ui_callback_url": "URL di richiamata",
|
||||
"com_ui_cancel": "Annulla",
|
||||
"com_ui_chat": "Chat",
|
||||
"com_ui_chat_history": "Cronologia chat",
|
||||
"com_ui_clear": "Cancella",
|
||||
"com_ui_clear_all": "Cancella tutto",
|
||||
"com_ui_client_id": "Client ID",
|
||||
"com_ui_client_secret": "Client Secret",
|
||||
"com_ui_close": "Chiudi",
|
||||
"com_ui_close_menu": "Chiudi Menu",
|
||||
"com_ui_code": "Codice",
|
||||
"com_ui_collapse_chat": "Comprimi Chat",
|
||||
"com_ui_command_placeholder": "Opzionale: Inserisci un comando per il prompt o verrà utilizzato il nome",
|
||||
"com_ui_command_usage_placeholder": "Seleziona un prompt tramite comando o nome",
|
||||
"com_ui_complete_setup": "Completa Setup",
|
||||
"com_ui_confirm_action": "Conferma Azione",
|
||||
"com_ui_confirm_admin_use_change": "La modifica di questa impostazione bloccherà l'accesso agli amministratori, te compreso. Sei sicuro di voler procedere?",
|
||||
"com_ui_confirm_change": "Conferma modifica",
|
||||
"com_ui_context": "Contesto",
|
||||
"com_ui_continue": "Continua",
|
||||
"com_ui_controls": "Controlli",
|
||||
"com_ui_copied": "Copiato!",
|
||||
"com_ui_copied_to_clipboard": "Copiato negli appunti",
|
||||
"com_ui_copy_code": "Copia codice",
|
||||
"com_ui_copy_link": "Copia link",
|
||||
"com_ui_copy_to_clipboard": "Copia negli appunti",
|
||||
"com_ui_create": "Crea",
|
||||
"com_ui_create_link": "Crea link",
|
||||
"com_ui_create_prompt": "Crea prompt",
|
||||
"com_ui_currently_production": "Attualmente in produzione",
|
||||
"com_ui_custom": "Personalizzato",
|
||||
"com_ui_custom_header_name": "Nome intestazione personalizzato",
|
||||
"com_ui_custom_prompt_mode": "Modalità Prompt Personalizzato",
|
||||
"com_ui_dashboard": "Pannello di controllo",
|
||||
"com_ui_date": "Data",
|
||||
"com_ui_date_april": "Aprile",
|
||||
"com_ui_date_august": "Agosto",
|
||||
"com_ui_date_december": "Dicembre",
|
||||
"com_ui_date_february": "Febbraio",
|
||||
"com_ui_date_january": "Gennaio",
|
||||
"com_ui_date_july": "Luglio",
|
||||
"com_ui_date_june": "Giugno",
|
||||
"com_ui_date_march": "Marzo",
|
||||
"com_ui_date_may": "Maggio",
|
||||
"com_ui_date_november": "Novembre",
|
||||
"com_ui_date_october": "Ottobre",
|
||||
"com_ui_date_previous_30_days": "Ultimi 30 giorni",
|
||||
"com_ui_date_previous_7_days": "Ultimi 7 giorni",
|
||||
"com_ui_date_september": "Settembre",
|
||||
"com_ui_date_today": "Oggi",
|
||||
"com_ui_date_yesterday": "Ieri",
|
||||
"com_ui_decline": "Non accetto",
|
||||
"com_ui_default_post_request": "Predefinito (richiesta POST)",
|
||||
"com_ui_delete": "Elimina",
|
||||
"com_ui_delete_action": "Elimina Azione",
|
||||
"com_ui_delete_action_confirm": "Sei sicuro di voler eliminare questa azione?",
|
||||
"com_ui_delete_agent_confirm": "Sei sicuro di voler eliminare questo agente?",
|
||||
"com_ui_delete_assistant_confirm": "Sei sicuro di voler eliminare questo Assistente? Questa operazione non può essere annullata.",
|
||||
"com_ui_delete_confirm": "Questo eliminerà",
|
||||
"com_ui_delete_confirm_prompt_version_var": "Questo eliminerà la versione selezionata per \"{{0}}\". Se non esistono altre versioni, il prompt verrà eliminato.",
|
||||
"com_ui_delete_conversation": "Eliminare la chat?",
|
||||
"com_ui_delete_prompt": "Eliminare il prompt?",
|
||||
"com_ui_delete_shared_link": "Eliminare il link condiviso?",
|
||||
"com_ui_delete_tool": "Elimina Strumento",
|
||||
"com_ui_delete_tool_confirm": "Sei sicuro di voler eliminare questo strumento?",
|
||||
"com_ui_descending": "Decrescente",
|
||||
"com_ui_description": "Descrizione",
|
||||
"com_ui_description_placeholder": "Opzionale: Inserisci una descrizione da mostrare per il prompt",
|
||||
"com_ui_disabling": "Disattivazione...",
|
||||
"com_ui_download": "Scarica",
|
||||
"com_ui_download_artifact": "Scarica Artefatto",
|
||||
"com_ui_download_backup": "Scarica i codici di backup",
|
||||
"com_ui_download_backup_tooltip": "Prima di continuare, scarica i tuoi codici di backup. Ti serviranno per riottenere l'accesso se perdi il tuo dispositivo di autenticazione",
|
||||
"com_ui_download_error": "Errore durante il download del file. Il file potrebbe essere stato eliminato.",
|
||||
"com_ui_dropdown_variables": "Variabili a tendina:",
|
||||
"com_ui_dropdown_variables_info": "Crea menu a tendina personalizzati per i tuoi prompt: `{{nome_variabile:opzione1|opzione2|opzione3}}`",
|
||||
"com_ui_duplicate": "Duplica",
|
||||
"com_ui_duplication_error": "Si è verificato un errore durante la duplicazione della conversazione",
|
||||
"com_ui_duplication_processing": "Duplicazione conversazione in corso...",
|
||||
"com_ui_duplication_success": "Conversazione duplicata con successo",
|
||||
"com_ui_edit": "Modifica",
|
||||
"com_ui_empty_category": "-",
|
||||
"com_ui_endpoint": "Endpoint",
|
||||
"com_ui_endpoint_menu": "Menu Endpoint LLM",
|
||||
"com_ui_enter": "Invio",
|
||||
"com_ui_enter_api_key": "Inserisci API Key",
|
||||
"com_ui_enter_openapi_schema": "Inserisci qui il tuo schema OpenAPI",
|
||||
"com_ui_error": "Errore",
|
||||
"com_ui_error_connection": "Errore di connessione al server, prova ad aggiornare la pagina.",
|
||||
"com_ui_error_save_admin_settings": "Si è verificato un errore durante il salvataggio delle impostazioni amministrative.",
|
||||
"com_ui_examples": "Esempi",
|
||||
"com_ui_expand_chat": "Espandi Chat",
|
||||
"com_ui_export_convo_modal": "Esporta Conversazione",
|
||||
"com_ui_field_required": "Questo campo è obbligatorio",
|
||||
"com_ui_filter_prompts": "Filtra Prompt",
|
||||
"com_ui_filter_prompts_name": "Filtra prompt per nome",
|
||||
"com_ui_finance": "Finanza",
|
||||
"com_ui_fork": "Duplica",
|
||||
"com_ui_fork_all_target": "Includi tutto da/per qui",
|
||||
"com_ui_fork_branches": "Includi rami correlati",
|
||||
"com_ui_fork_change_default": "Cambia opzione di duplicazione predefinita",
|
||||
"com_ui_fork_default": "Usa opzione di duplicazione predefinita",
|
||||
"com_ui_fork_error": "Si è verificato un errore durante la duplicazione della conversazione",
|
||||
"com_ui_fork_from_message": "Seleziona un'opzione di duplicazione",
|
||||
"com_ui_fork_info_1": "Usa questa impostazione per duplicare i messaggi con il comportamento desiderato.",
|
||||
"com_ui_fork_info_2": "\"Duplicare\" si riferisce alla creazione di una nuova conversazione che inizia/termina dai messaggi specifici nella conversazione corrente, creando una copia in base alle opzioni selezionate.",
|
||||
"com_ui_fork_info_3": "Il \"messaggio di destinazione\" si riferisce al messaggio dal quale è stato aperto questo popup, oppure, se selezioni \"{{0}}\", all'ultimo messaggio della conversazione.",
|
||||
"com_ui_fork_info_branches": "Questa opzione duplica i messaggi visibili, insieme ai rami correlati; in altre parole, il percorso diretto al messaggio di destinazione, inclusi i rami lungo il percorso.",
|
||||
"com_ui_fork_info_remember": "Seleziona questa opzione per ricordare le opzioni selezionate per un futuro utilizzo, rendendo più veloce la duplicazione delle conversazioni come preferito.",
|
||||
"com_ui_fork_info_start": "Se selezionato, la duplicazione partirà da questo messaggio fino all'ultimo messaggio della conversazione, in base al comportamento selezionato sopra.",
|
||||
"com_ui_fork_info_target": "Questa opzione duplica tutti i messaggi che portano al messaggio di destinazione, inclusi i suoi vicini; in altre parole, sono inclusi tutti i rami di messaggi, sia che siano visibili o meno o lungo lo stesso percorso.",
|
||||
"com_ui_fork_info_visible": "Questa opzione duplica solo i messaggi visibili; in altre parole, il percorso diretto al messaggio di destinazione, senza alcun ramo.",
|
||||
"com_ui_fork_processing": "Duplicazione conversazione in corso...",
|
||||
"com_ui_fork_remember": "Ricorda",
|
||||
"com_ui_fork_remember_checked": "La tua selezione verrà ricordata dopo l'utilizzo. Puoi cambiarla in qualsiasi momento nelle impostazioni.",
|
||||
"com_ui_fork_split_target": "Avvia la duplicazione da qui",
|
||||
"com_ui_fork_split_target_setting": "Avvia la duplicazione dal messaggio di destinazione per impostazione predefinita",
|
||||
"com_ui_fork_success": "Conversazione duplicata con successo",
|
||||
"com_ui_fork_visible": "Solo messaggi visibili",
|
||||
"com_ui_generate_backup": "Genera codici di backup",
|
||||
"com_ui_generate_qrcode": "Genera codice QR",
|
||||
"com_ui_generating": "Generazione in corso...",
|
||||
"com_ui_go_back": "Torna indietro",
|
||||
"com_ui_go_to_conversation": "Vai alla conversazione",
|
||||
"com_ui_good_afternoon": "Buon pomeriggio",
|
||||
"com_ui_good_evening": "Buonasera",
|
||||
"com_ui_good_morning": "Buongiorno",
|
||||
"com_ui_happy_birthday": "È il mio 1° compleanno!",
|
||||
"com_ui_hide_qr": "Nascondi codice QR",
|
||||
"com_ui_host": "Host",
|
||||
"com_ui_idea": "Idee",
|
||||
"com_ui_image_gen": "Generazione immagine",
|
||||
"com_ui_import": "Importa",
|
||||
"com_ui_import_conversation_error": "Si è verificato un errore durante l'importazione delle conversazioni",
|
||||
"com_ui_import_conversation_file_type_error": "Tipo di importazione non supportato",
|
||||
"com_ui_import_conversation_info": "Importa conversazioni da un file JSON",
|
||||
"com_ui_import_conversation_success": "Conversazioni importate con successo",
|
||||
"com_ui_include_shadcnui": "Includi istruzioni per i componenti shadcn/ui",
|
||||
"com_ui_include_shadcnui_agent": "Includere istruzioni shadcn/ui",
|
||||
"com_ui_input": "Input",
|
||||
"com_ui_instructions": "Istruzioni",
|
||||
"com_ui_late_night": "Buona tarda serata",
|
||||
"com_ui_latest_footer": "L'intelligenza artificiale per tutti.",
|
||||
"com_ui_latest_production_version": "Ultima versione in produzione",
|
||||
"com_ui_latest_version": "Ultima versione",
|
||||
"com_ui_librechat_code_api_key": "Ottieni la tua chiave API per l'Interprete di Codice LibreChat",
|
||||
"com_ui_librechat_code_api_subtitle": "Sicuro. Multilingue. Gestione File.",
|
||||
"com_ui_librechat_code_api_title": "Esegui Codice AI",
|
||||
"com_ui_loading": "Caricamento...",
|
||||
"com_ui_locked": "Bloccato",
|
||||
"com_ui_logo": "{{0}} Logo",
|
||||
"com_ui_manage": "Gestisci",
|
||||
"com_ui_max_tags": "Il numero massimo consentito è {{0}}, verranno utilizzati gli ultimi valori.",
|
||||
"com_ui_mention": "Menziona un endpoint, assistente o preset per passare rapidamente ad esso",
|
||||
"com_ui_min_tags": "Impossibile rimuovere altri valori, è richiesto un minimo di {{0}}.",
|
||||
"com_ui_misc": "Varie",
|
||||
"com_ui_model": "Modello",
|
||||
"com_ui_model_parameters": "Parametri del Modello",
|
||||
"com_ui_more_info": "Maggiori informazioni",
|
||||
"com_ui_my_prompts": "I miei prompt",
|
||||
"com_ui_name": "Nome",
|
||||
"com_ui_new": "Nuovo",
|
||||
"com_ui_new_chat": "Nuova chat",
|
||||
"com_ui_next": "Succ",
|
||||
"com_ui_no": "No",
|
||||
"com_ui_no_backup_codes": "Nessun codice di backup disponibile. Generane di nuovi.",
|
||||
"com_ui_no_bookmarks": "Sembra che tu non abbia ancora segnalibri. Clicca su una chat e aggiungine uno nuovo",
|
||||
"com_ui_no_category": "Nessuna categoria",
|
||||
"com_ui_no_changes": "Nessuna modifica da aggiornare",
|
||||
"com_ui_no_terms_content": "Nessun contenuto dei termini d'uso da visualizzare",
|
||||
"com_ui_none": "Nessuno",
|
||||
"com_ui_not_used": "Non utilizzato",
|
||||
"com_ui_nothing_found": "Non è stato trovato nulla",
|
||||
"com_ui_oauth": "Autenticazione OAuth",
|
||||
"com_ui_of": "di",
|
||||
"com_ui_off": "Disattivo",
|
||||
"com_ui_on": "Attivo",
|
||||
"com_ui_openai": "OpenAI",
|
||||
"com_ui_page": "Pagina",
|
||||
"com_ui_prev": "Prec",
|
||||
"com_ui_preview": "Anteprima",
|
||||
"com_ui_privacy_policy": "Informativa sulla privacy",
|
||||
"com_ui_privacy_policy_url": "URL Informativa Privacy",
|
||||
"com_ui_prompt": "Prompt",
|
||||
"com_ui_prompt_already_shared_to_all": "Questo prompt è già stato condiviso con tutti gli utenti",
|
||||
"com_ui_prompt_name": "Nome del prompt",
|
||||
"com_ui_prompt_name_required": "Il nome del prompt è obbligatorio",
|
||||
"com_ui_prompt_preview_not_shared": "L'autore non ha consentito la collaborazione per questo prompt.",
|
||||
"com_ui_prompt_text": "Testo",
|
||||
"com_ui_prompt_text_required": "Il testo è obbligatorio",
|
||||
"com_ui_prompt_update_error": "Si è verificato un errore durante l'aggiornamento del prompt",
|
||||
"com_ui_prompts": "Prompt",
|
||||
"com_ui_prompts_allow_create": "Consenti creazione Prompt",
|
||||
"com_ui_prompts_allow_share_global": "Consenti la condivisione dei prompt con tutti gli utenti",
|
||||
"com_ui_prompts_allow_use": "Consenti uso dei prompt",
|
||||
"com_ui_provider": "Fornitore",
|
||||
"com_ui_read_aloud": "Leggi ad alta voce",
|
||||
"com_ui_redirecting_to_provider": "Reindirizzamento a {{0}}, attendere prego...",
|
||||
"com_ui_refresh_link": "Aggiorna link",
|
||||
"com_ui_regenerate": "Rigenera",
|
||||
"com_ui_regenerate_backup": "Rigenera i codici di backup",
|
||||
"com_ui_regenerating": "Rigenerazione...",
|
||||
"com_ui_region": "Regione",
|
||||
"com_ui_rename": "Rinomina",
|
||||
"com_ui_rename_prompt": "Rinomina Prompt",
|
||||
"com_ui_requires_auth": "Richiede autenticazione",
|
||||
"com_ui_reset_var": "Reimposta {{0}}",
|
||||
"com_ui_result": "Risultato",
|
||||
"com_ui_revoke": "Revoca",
|
||||
"com_ui_revoke_info": "Revoca tutte le credenziali fornite dall'utente",
|
||||
"com_ui_revoke_key_confirm": "Sei sicuro di voler revocare questa chiave?",
|
||||
"com_ui_revoke_key_endpoint": "Revoca Chiave per {{0}}",
|
||||
"com_ui_revoke_keys": "Revoca Chiavi",
|
||||
"com_ui_revoke_keys_confirm": "Sei sicuro di voler revocare tutte le chiavi?",
|
||||
"com_ui_role_select": "Ruolo",
|
||||
"com_ui_roleplay": "Gioco di ruolo",
|
||||
"com_ui_run_code": "Esegui Codice",
|
||||
"com_ui_run_code_error": "Si è verificato un errore durante l'esecuzione del codice",
|
||||
"com_ui_save": "Salva",
|
||||
"com_ui_save_badge_changes": "Salvare le modifiche ai badge?",
|
||||
"com_ui_save_submit": "Salva e Invia",
|
||||
"com_ui_saved": "Salvata!",
|
||||
"com_ui_schema": "Schema",
|
||||
"com_ui_scope": "Ambito",
|
||||
"com_ui_search": "Cerca",
|
||||
"com_ui_secret_key": "Chiave segreta",
|
||||
"com_ui_select": "Seleziona",
|
||||
"com_ui_select_file": "Seleziona un file",
|
||||
"com_ui_select_model": "Seleziona un modello",
|
||||
"com_ui_select_provider": "Seleziona un provider",
|
||||
"com_ui_select_provider_first": "Seleziona prima un provider",
|
||||
"com_ui_select_region": "Seleziona una regione",
|
||||
"com_ui_select_search_model": "Cerca modello per nome",
|
||||
"com_ui_select_search_plugin": "Cerca plugin per nome",
|
||||
"com_ui_select_search_provider": "Cerca provider per nome",
|
||||
"com_ui_select_search_region": "Cerca regione per nome",
|
||||
"com_ui_share": "Condividi",
|
||||
"com_ui_share_create_message": "Il tuo nome e qualsiasi messaggio aggiunto dopo la condivisione rimarranno privati.",
|
||||
"com_ui_share_delete_error": "Si è verificato un errore durante l'eliminazione del link condiviso.",
|
||||
"com_ui_share_error": "Si è verificato un errore durante la condivisione del link della chat",
|
||||
"com_ui_share_link_to_chat": "Condividi link a chat",
|
||||
"com_ui_share_to_all_users": "Condividi con tutti gli utenti",
|
||||
"com_ui_share_update_message": "Il tuo nome, istruzioni personalizzate e qualsiasi messaggio aggiunto dopo la condivisione rimarranno privati.",
|
||||
"com_ui_share_var": "Condividi {{0}}",
|
||||
"com_ui_shared_link_bulk_delete_success": "Link condivisi eliminati con successo",
|
||||
"com_ui_shared_link_delete_success": "Link condiviso eliminato con successo",
|
||||
"com_ui_shared_link_not_found": "Link condiviso non trovato",
|
||||
"com_ui_shared_prompts": "Prompt condivisi",
|
||||
"com_ui_shop": "Shopping",
|
||||
"com_ui_show": "Mostra",
|
||||
"com_ui_show_all": "Mostra Tutto",
|
||||
"com_ui_show_qr": "Mostra codice QR",
|
||||
"com_ui_sign_in_to_domain": "Accedi a {{0}}",
|
||||
"com_ui_simple": "Semplice",
|
||||
"com_ui_size": "Dimensione",
|
||||
"com_ui_special_variables": "Variabili speciali:",
|
||||
"com_ui_speech_while_submitting": "Impossibile inviare il messaggio mentre è in corso la generazione di una risposta",
|
||||
"com_ui_stop": "Ferma",
|
||||
"com_ui_storage": "Archiviazione",
|
||||
"com_ui_submit": "Invia",
|
||||
"com_ui_teach_or_explain": "Istruzione",
|
||||
"com_ui_temporary": "Temporanea",
|
||||
"com_ui_terms_and_conditions": "Termini d'uso",
|
||||
"com_ui_terms_of_service": "Termini di servizio",
|
||||
"com_ui_thinking": "Pensando...",
|
||||
"com_ui_thoughts": "Pensieri",
|
||||
"com_ui_token_exchange_method": "Metodo di scambio token",
|
||||
"com_ui_token_url": "URL del token",
|
||||
"com_ui_tools": "Strumenti",
|
||||
"com_ui_travel": "Viaggio",
|
||||
"com_ui_unarchive": "Disarchivia",
|
||||
"com_ui_unarchive_error": "Impossibile disarchiviare la conversazione",
|
||||
"com_ui_unknown": "Sconosciuto",
|
||||
"com_ui_update": "Aggiorna",
|
||||
"com_ui_upload": "Carica",
|
||||
"com_ui_upload_code_files": "Carica per l'Interprete di Codice",
|
||||
"com_ui_upload_delay": "Il caricamento di \"{{0}}\" sta richiedendo più tempo del previsto. Attendi il completamento dell'indicizzazione per il recupero.",
|
||||
"com_ui_upload_error": "Si è verificato un errore durante il caricamento del file",
|
||||
"com_ui_upload_file_context": "Carica contesto file",
|
||||
"com_ui_upload_file_search": "Carica per ricerca file",
|
||||
"com_ui_upload_files": "Carica file",
|
||||
"com_ui_upload_image": "Carica un'immagine",
|
||||
"com_ui_upload_image_input": "Carica immagine",
|
||||
"com_ui_upload_invalid": "File non valido per il caricamento. Deve essere un'immagine che non supera il limite",
|
||||
"com_ui_upload_invalid_var": "File non valido per il caricamento. Deve essere un'immagine non superiore a {{0}} MB",
|
||||
"com_ui_upload_ocr_text": "Carica come testo",
|
||||
"com_ui_upload_success": "File caricato con successo",
|
||||
"com_ui_upload_type": "Seleziona Tipo di Caricamento",
|
||||
"com_ui_use_2fa_code": "Usa invece il codice 2FA",
|
||||
"com_ui_use_backup_code": "Usa invece il codice di backup",
|
||||
"com_ui_use_micrphone": "Usa microfono",
|
||||
"com_ui_use_prompt": "Usa prompt",
|
||||
"com_ui_used": "Usato",
|
||||
"com_ui_variables": "Variabili",
|
||||
"com_ui_variables_info": "Usa le doppie parentesi graffe nel testo per creare variabili, ad esempio `{{variabile esempio}}`, da compilare successivamente quando utilizzi il prompt.",
|
||||
"com_ui_verify": "Verifica",
|
||||
"com_ui_version_var": "Versione {{0}}",
|
||||
"com_ui_versions": "Versioni",
|
||||
"com_ui_view_source": "Visualizza chat sorgente",
|
||||
"com_ui_weekend_morning": "Buon fine settimana",
|
||||
"com_ui_write": "Scrittura",
|
||||
"com_ui_yes": "Sì",
|
||||
"com_ui_zoom": "Zoom",
|
||||
"com_user_message": "Mostra nome utente nei messaggi",
|
||||
"com_warning_resubmit_unsupported": "Il reinvio del messaggio AI non è supportato per questo endpoint."
|
||||
}
|
||||
873
packages/client/src/locales/ja/translation.json
Normal file
873
packages/client/src/locales/ja/translation.json
Normal file
|
|
@ -0,0 +1,873 @@
|
|||
{
|
||||
"chat_direction_left_to_right": "ここに何かを入れる必要があります。空でした",
|
||||
"chat_direction_right_to_left": "ここに何かを入れる必要があります。空でした",
|
||||
"com_a11y_ai_composing": "AIはまだ作成中です。",
|
||||
"com_a11y_end": "AIは返信を完了しました。",
|
||||
"com_a11y_start": "AIが返信を開始しました。",
|
||||
"com_agents_allow_editing": "他のユーザーにエージェントの編集を許可する",
|
||||
"com_agents_by_librechat": "LibreChatより",
|
||||
"com_agents_code_interpreter": "有効にすると、エージェントがLibreChat Code Interpreter APIを使用して、ファイル処理を含む生成されたコードを安全に実行できるようになります。有効な APIキーが必要です。",
|
||||
"com_agents_code_interpreter_title": "コードインタープリター API",
|
||||
"com_agents_create_error": "エージェントの作成中にエラーが発生しました。",
|
||||
"com_agents_description_placeholder": "オプション: エージェントの説明を入力してください",
|
||||
"com_agents_enable_file_search": "ファイル検索を有効にする",
|
||||
"com_agents_file_context": "ファイルコンテキスト(OCR)",
|
||||
"com_agents_file_context_disabled": "ファイル検索用のファイルをアップロードする前に、エージェントを作成する必要があります。",
|
||||
"com_agents_file_context_info": "「コンテキスト」としてアップロードされたファイルは、OCR処理によってテキストが抽出され、エージェントの指示に追加されます。ファイルの全文コンテンツが必要な文書、テキストを含む画像、PDFに最適です。",
|
||||
"com_agents_file_search_disabled": "ファイル検索用のファイルをアップロードする前に、エージェントを作成する必要があります。",
|
||||
"com_agents_file_search_info": "有効にすると、エージェントは以下に表示されているファイル名を正確に認識し、それらのファイルから関連する情報を取得することができます。",
|
||||
"com_agents_instructions_placeholder": "エージェントが使用するシステムの指示",
|
||||
"com_agents_missing_provider_model": "エージェントを作成する前に、プロバイダーとモデルを選択してください。",
|
||||
"com_agents_name_placeholder": "オプション: エージェントの名前",
|
||||
"com_agents_no_access": "このエージェントを編集する権限がありません。",
|
||||
"com_agents_not_available": "エージェントは利用できません",
|
||||
"com_agents_search_name": "名前でエージェントを検索",
|
||||
"com_agents_update_error": "エージェントの更新中にエラーが発生しました。",
|
||||
"com_assistants_action_attempt": "アシスタントは{{0}}と話したいです",
|
||||
"com_assistants_actions": "アクション",
|
||||
"com_assistants_actions_disabled": "アクションを追加する前にアシスタントを作成する必要があります。",
|
||||
"com_assistants_actions_info": "アシスタントが API を介して情報を取得したり、アクションを実行したりできるようにします's",
|
||||
"com_assistants_add_actions": "アクションを追加",
|
||||
"com_assistants_add_tools": "ツールを追加",
|
||||
"com_assistants_allow_sites_you_trust": "信頼できるサイトのみ許可する。",
|
||||
"com_assistants_append_date": "現在の日付と時刻を追加",
|
||||
"com_assistants_append_date_tooltip": "有効にすると、現在のクライアントの日付と時刻がアシスタントのシステム指示に追加されます。",
|
||||
"com_assistants_attempt_info": "アシスタントは次のものを送信したいと考えています:",
|
||||
"com_assistants_available_actions": "利用可能なアクション",
|
||||
"com_assistants_capabilities": "機能",
|
||||
"com_assistants_code_interpreter": "コードインタプリタ",
|
||||
"com_assistants_code_interpreter_files": "次のファイルはコードインタプリタでのみ使用できます。",
|
||||
"com_assistants_code_interpreter_info": "コードインタプリタは、アシスタントがコードを書いて実行できるようにします。このツールは、さまざまなデータとフォーマットを持つファイルを処理し、グラフなどのファイルを生成することができます。",
|
||||
"com_assistants_completed_action": "Talked to {{0}}",
|
||||
"com_assistants_completed_function": "Ran {{0}}",
|
||||
"com_assistants_conversation_starters": "会話のきっかけ",
|
||||
"com_assistants_conversation_starters_placeholder": "会話のきっかけを入力してください",
|
||||
"com_assistants_create_error": "アシスタントの作成中にエラーが発生しました。",
|
||||
"com_assistants_create_success": "アシスタントが正常に作成されました。",
|
||||
"com_assistants_delete_actions_error": "アクションの削除中にエラーが発生しました。",
|
||||
"com_assistants_delete_actions_success": "アシスタントからアクションが削除されました",
|
||||
"com_assistants_description_placeholder": "オプション: ここにアシスタントについて説明します",
|
||||
"com_assistants_domain_info": "アシスタントがこの情報を {{0}} に送信しました",
|
||||
"com_assistants_file_search": "ファイル検索",
|
||||
"com_assistants_file_search_info": "ファイル検索用のベクトル ストアを添付することはまだサポートされていません。プロバイダ プレイグラウンドからそれらを添付するか、スレッド単位でメッセージにファイルを添付してファイル検索を行うことができます。",
|
||||
"com_assistants_function_use": "アシスタントが {{0}} を使用しました",
|
||||
"com_assistants_image_vision": "イメージビジョン",
|
||||
"com_assistants_instructions_placeholder": "アシスタントが使用するシステム指示",
|
||||
"com_assistants_knowledge": "ナレッジ",
|
||||
"com_assistants_knowledge_disabled": "ファイルをナレッジとしてアップロードする前に、アシスタントを作成し、コードインタプリタまたは検索を有効にして保存する必要があります。",
|
||||
"com_assistants_knowledge_info": "ナレッジの下でファイルをアップロードする場合、アシスタントとの会話にファイルの内容が含まれる場合があります。",
|
||||
"com_assistants_max_starters_reached": "会話の開始が最大数に達しました",
|
||||
"com_assistants_name_placeholder": "オプション: アシスタントの名前",
|
||||
"com_assistants_non_retrieval_model": "このモデルではファイル検索機能は有効になっていません。別のモデルを選択してください。",
|
||||
"com_assistants_retrieval": "検索",
|
||||
"com_assistants_running_action": "アクションを実行",
|
||||
"com_assistants_search_name": "アシスタントの名前で検索",
|
||||
"com_assistants_update_actions_error": "アクションの作成または更新中にエラーが発生しました。",
|
||||
"com_assistants_update_actions_success": "アクションが作成または更新されました",
|
||||
"com_assistants_update_error": "アシスタントの更新中にエラーが発生しました。",
|
||||
"com_assistants_update_success": "アップデートに成功しました",
|
||||
"com_auth_already_have_account": "既にアカウントがある場合はこちら",
|
||||
"com_auth_apple_login": "Appleでサインイン",
|
||||
"com_auth_back_to_login": "ログイン画面に戻る",
|
||||
"com_auth_click": "クリック",
|
||||
"com_auth_click_here": "ここをクリック",
|
||||
"com_auth_continue": "続く",
|
||||
"com_auth_create_account": "アカウント登録",
|
||||
"com_auth_discord_login": "Discordでログイン",
|
||||
"com_auth_email": "メール",
|
||||
"com_auth_email_address": "メールアドレス",
|
||||
"com_auth_email_max_length": "メールアドレスは最大120文字で入力してください",
|
||||
"com_auth_email_min_length": "メールアドレスは最低6文字で入力してください",
|
||||
"com_auth_email_pattern": "有効なメールアドレスを入力してください",
|
||||
"com_auth_email_required": "メールアドレスは必須です",
|
||||
"com_auth_email_resend_link": "メールを再送信",
|
||||
"com_auth_email_resent_failed": "検証メールの再送信に失敗しました",
|
||||
"com_auth_email_resent_success": "検証メールが正常に再送信されました",
|
||||
"com_auth_email_verification_failed": "メール検証に失敗しました",
|
||||
"com_auth_email_verification_failed_token_missing": "検証に失敗しました。トークンがありません",
|
||||
"com_auth_email_verification_in_progress": "メールを検証しています。しばらくお待ちください",
|
||||
"com_auth_email_verification_invalid": "無効なメール検証です",
|
||||
"com_auth_email_verification_redirecting": "{{0}} 秒後にリダイレクトします...",
|
||||
"com_auth_email_verification_resend_prompt": "メールが届きませんか?",
|
||||
"com_auth_email_verification_success": "メールが正常に検証されました",
|
||||
"com_auth_email_verifying_ellipsis": "確認中...",
|
||||
"com_auth_error_create": "アカウント登録に失敗しました。もう一度お試しください。",
|
||||
"com_auth_error_invalid_reset_token": "無効なパスワードリセットトークンです。",
|
||||
"com_auth_error_login": "入力された情報ではログインできませんでした。認証情報を確認した上で再度お試しください。",
|
||||
"com_auth_error_login_ban": "本サービスの利用規約違反のため、一時的にアカウントを停止しました。",
|
||||
"com_auth_error_login_rl": "お使いのIPアドレスから短時間に多数のログイン試行がありました。しばらくしてから再度お試しください。",
|
||||
"com_auth_error_login_server": "サーバーエラーが発生しています。。しばらくしてから再度お試しください。",
|
||||
"com_auth_error_login_unverified": "アカウントはまだ確認されていません。確認リンクが記載されたメールを確認してください。",
|
||||
"com_auth_facebook_login": "Facebookでログイン",
|
||||
"com_auth_full_name": "フルネーム",
|
||||
"com_auth_github_login": "Githubでログイン",
|
||||
"com_auth_google_login": "Googleでログイン",
|
||||
"com_auth_here": "こちら",
|
||||
"com_auth_login": "ログイン",
|
||||
"com_auth_login_with_new_password": "新しいパスワードでログインをお試しください。",
|
||||
"com_auth_name_max_length": "フルネームは最大80文字で入力してください",
|
||||
"com_auth_name_min_length": "フルネームは最低3文字で入力してください",
|
||||
"com_auth_name_required": "フルネームは必須です",
|
||||
"com_auth_no_account": "アカウントをお持ちでない場合はこちら",
|
||||
"com_auth_password": "パスワード",
|
||||
"com_auth_password_confirm": "確認用パスワード",
|
||||
"com_auth_password_forgot": "パスワードを忘れた場合はこちら",
|
||||
"com_auth_password_max_length": "パスワードは最大128文字で入力してください",
|
||||
"com_auth_password_min_length": "パスワードは最低8文字で入力してください",
|
||||
"com_auth_password_not_match": "パスワードが一致しません",
|
||||
"com_auth_password_required": "パスワードは必須です",
|
||||
"com_auth_registration_success_generic": "メールアドレスを確認するために、メールをご確認ください。",
|
||||
"com_auth_registration_success_insecure": "登録が完了しました。",
|
||||
"com_auth_reset_password": "パスワードをリセット",
|
||||
"com_auth_reset_password_if_email_exists": "そのメールアドレスのアカウントが存在する場合は、パスワードリセット手順が記載されたメールが送信されています。スパムフォルダを必ず確認してください。",
|
||||
"com_auth_reset_password_link_sent": "メールを送信",
|
||||
"com_auth_reset_password_success": "パスワードのリセットに成功しました",
|
||||
"com_auth_sign_in": "ログイン",
|
||||
"com_auth_sign_up": "新規登録",
|
||||
"com_auth_submit_registration": "登録をする",
|
||||
"com_auth_to_reset_your_password": "パスワードをリセットします。",
|
||||
"com_auth_to_try_again": "再認証する",
|
||||
"com_auth_two_factor": "ご希望のワンタイムパスワードアプリケーションでコードを確認してください",
|
||||
"com_auth_username": "ユーザ名 (オプション)",
|
||||
"com_auth_username_max_length": "ユーザ名は最大20文字で入力してください",
|
||||
"com_auth_username_min_length": "ユーザ名は最低2文字で入力してください",
|
||||
"com_auth_verify_your_identity": "本人確認",
|
||||
"com_auth_welcome_back": "おかえりなさい",
|
||||
"com_click_to_download": "(ダウンロードするにはこちらをクリック)",
|
||||
"com_download_expired": "ダウンロードの期限が切れています",
|
||||
"com_download_expires": "ダウンロードはこちら(有効期限:{{0}})",
|
||||
"com_endpoint": "エンドポイント",
|
||||
"com_endpoint_agent": "エージェント",
|
||||
"com_endpoint_agent_model": "エージェントモデル (推奨: GPT-3.5)",
|
||||
"com_endpoint_agent_placeholder": "エージェントを選択してください",
|
||||
"com_endpoint_ai": "AI",
|
||||
"com_endpoint_anthropic_maxoutputtokens": "レスポンスで生成できるトークンの最大数。短い応答には低い値を、長い応答には高い値を指定します。注:モデルはこの最大値に達する前に停止することがあります。",
|
||||
"com_endpoint_anthropic_prompt_cache": "プロンプトキャッシュを使用すると、API呼び出し間で大きなコンテキストや指示を再利用でき、コストとレイテンシを削減できます",
|
||||
"com_endpoint_anthropic_temp": "0から1の値。分析的・多岐の選択になる課題には0に近い値を入力する。創造的・生成的な課題には1に近い値を入力する。この値か Top P の変更をおすすめしますが、両方の変更はおすすめしません。",
|
||||
"com_endpoint_anthropic_thinking": "サポートされているClaudeモデル(3.7 Sonnet)の内部推論を有効にします。注:「思考予算」が「最大出力トークン」よりも低く設定されている必要があります。",
|
||||
"com_endpoint_anthropic_thinking_budget": "Claude が内部推論プロセスで使用できるトークンの最大数を指定します。予算を大きくすると、複雑な問題に対するより徹底的な分析が可能になり、応答品質が向上します。ただし、特に 32K を超える範囲では、Claude は割り当てられた予算をすべて使用できない可能性があります。この設定は「最大出力トークン」よりも小さくする必要があります。",
|
||||
"com_endpoint_anthropic_topk": "Top-k はモデルがトークンをどのように選択して出力するかを変更します。top-kが1の場合はモデルの語彙に含まれるすべてのトークンの中で最も確率が高い1つが選択されます(greedy decodingと呼ばれている)。top-kが3の場合は上位3つのトークンの中から選択されます。(temperatureを使用)",
|
||||
"com_endpoint_anthropic_topp": "Top-p はモデルがトークンをどのように選択して出力するかを変更します。K(topKを参照)の確率の合計がtop-pの確率と等しくなるまでのトークンが選択されます。",
|
||||
"com_endpoint_assistant": "アシスタント",
|
||||
"com_endpoint_assistant_model": "アシスタント モデル",
|
||||
"com_endpoint_assistant_placeholder": "右側のサイドパネルからアシスタントを選択してください",
|
||||
"com_endpoint_completion": "コンプリーション",
|
||||
"com_endpoint_completion_model": "コンプリーションモデル (推奨: GPT-4)",
|
||||
"com_endpoint_config_click_here": "ここをクリック",
|
||||
"com_endpoint_config_google_api_info": "Gemeni用のGenerative Language API keyを取得するには",
|
||||
"com_endpoint_config_google_api_key": "Google APIキー",
|
||||
"com_endpoint_config_google_cloud_platform": "(Google Cloud Platformから)",
|
||||
"com_endpoint_config_google_gemini_api": "(Gemini API)",
|
||||
"com_endpoint_config_google_service_key": "Googleサービスアカウントキー",
|
||||
"com_endpoint_config_key": "API Keyを設定",
|
||||
"com_endpoint_config_key_encryption": "鍵は暗号化されます。削除予定日:",
|
||||
"com_endpoint_config_key_for": "API Key の設定: ",
|
||||
"com_endpoint_config_key_google_need_to": "こちらを有効化する必要があります:",
|
||||
"com_endpoint_config_key_google_service_account": "サービスアカウントを作成する",
|
||||
"com_endpoint_config_key_google_vertex_ai": "Vertex AI を有効化",
|
||||
"com_endpoint_config_key_google_vertex_api": "API (Google Cloud) 次に、",
|
||||
"com_endpoint_config_key_google_vertex_api_role": "必ず「作成して続行」をクリックして、少なくとも「Vertex AI ユーザー」権限を与えてください。最後にここにインポートするJSONキーを作成してください。",
|
||||
"com_endpoint_config_key_import_json_key": "Service Account JSON Key をインポートする。",
|
||||
"com_endpoint_config_key_import_json_key_invalid": "無効なService Account JSON Keyです。正しいファイルかどうか確認してください。",
|
||||
"com_endpoint_config_key_import_json_key_success": "Service Account JSON Keyのインポートに成功しました。",
|
||||
"com_endpoint_config_key_name": "Key",
|
||||
"com_endpoint_config_key_never_expires": "キーの有効期限はありません",
|
||||
"com_endpoint_config_placeholder": "ヘッダーメニューからAPI Keyを設定してください。",
|
||||
"com_endpoint_config_value": "値を入力してください",
|
||||
"com_endpoint_context": "コンテキスト",
|
||||
"com_endpoint_context_info": "コンテキストに使用できるトークンの最大数です。リクエストごとに送信されるトークン数を制御するために使用します。指定しない場合は、既知のモデルのコンテキストサイズに基づいてシステムのデフォルト値が使用されます。高い値を設定すると、エラーが発生したり、トークンコストが高くなる可能性があります。",
|
||||
"com_endpoint_context_tokens": "コンテキストトークン数の最大値",
|
||||
"com_endpoint_custom_name": "プリセット名",
|
||||
"com_endpoint_default": "デフォルト",
|
||||
"com_endpoint_default_blank": "デフォルト: 空",
|
||||
"com_endpoint_default_empty": "デフォルト: 空",
|
||||
"com_endpoint_default_with_num": "デフォルト: {{0}}",
|
||||
"com_endpoint_deprecated": "非推奨",
|
||||
"com_endpoint_deprecated_info": "このエンドポイントは非推奨であり、将来のバージョンで削除される可能性があります。",
|
||||
"com_endpoint_deprecated_info_a11y": "プラグインエンドポイントは非推奨であり、将来のバージョンで削除される可能性があります。",
|
||||
"com_endpoint_examples": " プリセット名",
|
||||
"com_endpoint_export": "エクスポート",
|
||||
"com_endpoint_export_share": "エクスポート/共有",
|
||||
"com_endpoint_frequency_penalty": "頻度によるペナルティ",
|
||||
"com_endpoint_func_hover": "プラグインをOpenAIの関数として使えるようにする",
|
||||
"com_endpoint_google_custom_name_placeholder": "Googleのカスタム名を設定する",
|
||||
"com_endpoint_google_maxoutputtokens": "レスポンスで生成できるトークンの最大数。短い応答には低い値を、長い応答には高い値を指定します。注:モデルはこの最大値に達する前に停止することがあります。",
|
||||
"com_endpoint_google_temp": "大きい値 = ランダム性が増します。低い値 = より決定論的になります。この値を変更するか、Top P の変更をおすすめしますが、両方を変更はおすすめしません。",
|
||||
"com_endpoint_google_topk": "top-k は、モデルがトークンを選択して出力する方法を変更する。top-kが1の場合、選択されたトークンはモデルの語彙に含まれるすべてのトークンの中で最も確率の高いものである(貪欲なデコーディングとも呼ばれる)ことを意味し、top-kが3の場合、次のトークンは最も確率の高い3つのトークンの中から選択される(温度を使用する)ことを意味する。",
|
||||
"com_endpoint_google_topp": "top-p は、モデルがトークンをどのように選択して出力するかを変更する。トークンは、確率の合計が top-p の値に等しくなるまで、確率の最も高い K 個(topK パラメータを参照)から低い順に選択される。",
|
||||
"com_endpoint_instructions_assistants": "指示をオーバーライドする",
|
||||
"com_endpoint_instructions_assistants_placeholder": "アシスタントの指示を上書きします。これは、実行ごとに動作を変更する場合に便利です。",
|
||||
"com_endpoint_max_output_tokens": "最大出力トークン数",
|
||||
"com_endpoint_message": "メッセージ",
|
||||
"com_endpoint_message_new": "メッセージ {{0}}",
|
||||
"com_endpoint_message_not_appendable": "メッセージを編集、再入力してください。",
|
||||
"com_endpoint_my_preset": "Myプリセット",
|
||||
"com_endpoint_no_presets": "プリセットがありません",
|
||||
"com_endpoint_open_menu": "Open Menu",
|
||||
"com_endpoint_openai_custom_name_placeholder": "ChatGPTのカスタム名を設定する",
|
||||
"com_endpoint_openai_detail": "Visionリクエストの解像度を選択します。\"Low\"はコストが安くて低解像度、\"Highは\"コストが高くて高解像度\"、\"Auto\"は画像の解像度に基づいて自動的に選択します。",
|
||||
"com_endpoint_openai_freq": "-2.0から2.0の値。正の値を入力すると、テキストの繰り返し頻度に基づいたペナルティを課し、文字通り「同じ文言」を繰り返す可能性を減少させる。",
|
||||
"com_endpoint_openai_max": "生成されるトークンの最大値。入力トークンと出力トークンの長さの合計は、モデルのコンテキスト長によって制限されます。",
|
||||
"com_endpoint_openai_max_tokens": "オプションの 'max_tokens' フィールドで、チャット補完時に生成可能な最大トークン数を設定します。入力トークンと生成されたトークンの合計長さは、モデルのコンテキスト長によって制限されています。この数値がコンテキストの最大トークン数を超えると、エラーが発生する可能性があります。",
|
||||
"com_endpoint_openai_pres": "-2.0から2.0の値。正の値は入力すると、新規トークンの出現に基づいたペナルティを課し、新しいトピックについて話す可能性を高める。",
|
||||
"com_endpoint_openai_prompt_prefix_placeholder": "システムメッセージに含める Custom Instructions。デフォルト: none",
|
||||
"com_endpoint_openai_reasoning_effort": "o1 モデルのみ: 推論モデルの推論の努力を制限します。推論の努力を減らすと、応答が速くなり、応答で推論に使用されるトークンが少なくなります。",
|
||||
"com_endpoint_openai_resend": "これまでに添付した画像を全て再送信します。注意:トークン数が大幅に増加したり、多くの画像を添付するとエラーが発生する可能性があります。",
|
||||
"com_endpoint_openai_resend_files": "以前に添付されたすべてのファイルを再送信します。注意:これにより、トークンのコストが増加し、多くの添付ファイルでエラーが発生する可能性があります。",
|
||||
"com_endpoint_openai_stop": "APIがさらにトークンを生成するのを止めるため、最大で4つのシーケンスを設定可能",
|
||||
"com_endpoint_openai_temp": "大きい値 = ランダム性が増します。低い値 = より決定論的になります。この値を変更するか、Top P の変更をおすすめしますが、両方を変更はおすすめしません。",
|
||||
"com_endpoint_openai_topp": "nucleus sampling と呼ばれるtemperatureを使用したサンプリングの代わりに、top_p確率質量のトークンの結果を考慮します。つまり、0.1とすると確率質量の上位10%を構成するトークンのみが考慮されます。この値かtemperatureの変更をおすすめしますが、両方を変更はおすすめしません。",
|
||||
"com_endpoint_output": "出力",
|
||||
"com_endpoint_plug_image_detail": "画像の詳細",
|
||||
"com_endpoint_plug_resend_files": "ファイルを再送",
|
||||
"com_endpoint_plug_set_custom_instructions_for_gpt_placeholder": "システムメッセージに含める Custom Instructions。デフォルト: none",
|
||||
"com_endpoint_plug_skip_completion": "完了をスキップ",
|
||||
"com_endpoint_plug_use_functions": "Functionsを使用",
|
||||
"com_endpoint_presence_penalty": "既存性によるペナルティ",
|
||||
"com_endpoint_preset": "プリセット",
|
||||
"com_endpoint_preset_custom_name_placeholder": "ここに何かを入れる必要があります。空でした",
|
||||
"com_endpoint_preset_default": "が有効化されました。",
|
||||
"com_endpoint_preset_default_item": "デフォルト:",
|
||||
"com_endpoint_preset_default_none": "現在有効なプリセットはありません。",
|
||||
"com_endpoint_preset_default_removed": "が無効化されました。",
|
||||
"com_endpoint_preset_delete_confirm": "本当にこのプリセットを削除しますか?",
|
||||
"com_endpoint_preset_delete_error": "プリセットの削除に失敗しました。もう一度お試し下さい。",
|
||||
"com_endpoint_preset_import": "プリセットのインポートが完了しました",
|
||||
"com_endpoint_preset_import_error": "プリセットのインポートに失敗しました。もう一度お試し下さい。",
|
||||
"com_endpoint_preset_name": "プリセット名",
|
||||
"com_endpoint_preset_save_error": "プリセットの保存に失敗しました。もう一度お試し下さい。",
|
||||
"com_endpoint_preset_selected": "プリセットが有効化されました!",
|
||||
"com_endpoint_preset_selected_title": "有効化",
|
||||
"com_endpoint_preset_title": "プリセット",
|
||||
"com_endpoint_presets": "プリセット",
|
||||
"com_endpoint_presets_clear_warning": "本当にすべてのプリセットを削除しますか? この操作は元に戻せません。",
|
||||
"com_endpoint_prompt_cache": "プロンプトキャッシュを使用する",
|
||||
"com_endpoint_prompt_prefix": "プロンプトの先頭",
|
||||
"com_endpoint_prompt_prefix_assistants": "追加の指示",
|
||||
"com_endpoint_prompt_prefix_assistants_placeholder": "アシスタントの主な指示に加えて、追加の指示やコンテキストを設定します。空欄の場合は無視されます。",
|
||||
"com_endpoint_prompt_prefix_placeholder": "custom instructions か context を設定する。空の場合は無視されます。",
|
||||
"com_endpoint_reasoning_effort": "推論の努力",
|
||||
"com_endpoint_save_as_preset": "プリセット保存",
|
||||
"com_endpoint_search": "エンドポイントを名前で検索",
|
||||
"com_endpoint_search_endpoint_models": "{{0}} モデルを検索...",
|
||||
"com_endpoint_search_models": "モデルを検索...",
|
||||
"com_endpoint_search_var": "{{0}} を検索...",
|
||||
"com_endpoint_set_custom_name": "このプリセットを見つけやすいように名前を設定する。",
|
||||
"com_endpoint_skip_hover": "コンプリーションのステップをスキップする。(最終的な回答と生成されたステップをレビューする機能)",
|
||||
"com_endpoint_stop": "シーケンスを停止",
|
||||
"com_endpoint_stop_placeholder": "Enterキー押下で値を区切ります",
|
||||
"com_endpoint_temperature": "温度",
|
||||
"com_endpoint_thinking": "推論",
|
||||
"com_endpoint_thinking_budget": "推論予算",
|
||||
"com_endpoint_top_k": "Top K",
|
||||
"com_endpoint_top_p": "Top P",
|
||||
"com_endpoint_use_active_assistant": "アクティブなアシスタントを使用",
|
||||
"com_error_expired_user_key": "{{0}}の提供されたキーは{{1}}で期限切れです。キーを入力して再試行してください。",
|
||||
"com_error_files_dupe": "重複したファイルが検出されました。",
|
||||
"com_error_files_empty": "空のファイルはアップロードできません",
|
||||
"com_error_files_process": "ファイルの処理中にエラーが発生しました。",
|
||||
"com_error_files_unsupported_capability": "このファイル形式に対応する機能が有効になっていません",
|
||||
"com_error_files_upload": "ファイルのアップロード中にエラーが発生しました。",
|
||||
"com_error_files_upload_canceled": "ファイルのアップロードがキャンセルされました。注意:アップロード処理が継続している可能性があるため、手動でファイルを削除する必要があるかもしれません。",
|
||||
"com_error_files_validation": "ファイルの検証中にエラーが発生しました。",
|
||||
"com_error_input_length": "最新のメッセージトークン数が長すぎてトークン制限を超えているか、トークン制限パラメータの設定が間違っていてコンテキストウィンドウに悪影響を及ぼしています。詳細はこちら: {{0}}.メッセージを短くするか、会話パラメータから最大コンテキストサイズを調整するか、会話をフォークして続行してください。",
|
||||
"com_error_invalid_agent_provider": "その {{0}} プロバイダーはエージェントでは使用できません。エージェントの設定で、現在利用可能なプロバイダを選択してください。",
|
||||
"com_error_invalid_user_key": "無効なキーが提供されました。キーを入力して再試行してください。",
|
||||
"com_error_moderation": "送信されたコンテンツは、コミュニティガイドラインに準拠していないとして、投稿監視システムによって検知されました。この特定のトピックについては処理を続行できません。他に質問や調べたいトピックがある場合は、メッセージを編集するか、新しい会話を作成してください。",
|
||||
"com_error_no_base_url": "ベースURLが見つかりません。ベースURLを入力して再試行してください。",
|
||||
"com_error_no_user_key": "キーが見つかりません。キーを入力して再試行してください。",
|
||||
"com_files_filter": "ファイルをフィルタリング...",
|
||||
"com_files_no_results": "結果がありません。",
|
||||
"com_files_number_selected": "{{0}} of {{1}} ファイルが選択されました",
|
||||
"com_files_table": "ここに何かを入れる必要があります。空でした",
|
||||
"com_generated_files": "生成されたファイル:",
|
||||
"com_hide_examples": "例を非表示",
|
||||
"com_nav_2fa": "二要素認証 (2FA)",
|
||||
"com_nav_account_settings": "アカウント設定",
|
||||
"com_nav_always_make_prod": "常に新しいバージョンを制作する",
|
||||
"com_nav_archive_created_at": "作成日",
|
||||
"com_nav_archive_name": "名前",
|
||||
"com_nav_archived_chats": "アーカイブされたチャット",
|
||||
"com_nav_at_command": "@-Command",
|
||||
"com_nav_at_command_description": "コマンド\"@\"でエンドポイント、モデル、プリセットを切り替える",
|
||||
"com_nav_audio_play_error": "オーディオの再生エラー: {{0}}",
|
||||
"com_nav_audio_process_error": "オーディオの処理エラー: {{0}}",
|
||||
"com_nav_auto_scroll": "チャットを開いたときに最新まで自動でスクロール",
|
||||
"com_nav_auto_send_prompts": "プロンプト自動送信",
|
||||
"com_nav_auto_send_text": "テキストを自動送信",
|
||||
"com_nav_auto_send_text_disabled": "無効にするには-1を設定",
|
||||
"com_nav_auto_transcribe_audio": "オーディオを自動で書き起こす",
|
||||
"com_nav_automatic_playback": "最新メッセージを自動再生",
|
||||
"com_nav_balance": "バランス",
|
||||
"com_nav_browser": "ブラウザ",
|
||||
"com_nav_center_chat_input": "ようこそ画面の中央にチャット入力を配置",
|
||||
"com_nav_change_picture": "画像を変更",
|
||||
"com_nav_chat_commands": "チャットコマンド",
|
||||
"com_nav_chat_commands_info": "メッセージの先頭に特定の文字を入力することで、これらのコマンドが有効になります。各コマンドは、決められた文字(プレフィックス)で起動します。メッセージの先頭にこれらの文字をよく使用する場合は、コマンド機能を無効にすることができます。",
|
||||
"com_nav_chat_direction": "チャットの方向",
|
||||
"com_nav_clear_all_chats": "すべてのチャットを削除する",
|
||||
"com_nav_clear_cache_confirm_message": "キャッシュを削除してもよろしいですか?",
|
||||
"com_nav_clear_conversation": "会話を削除する",
|
||||
"com_nav_clear_conversation_confirm_message": "本当にすべての会話を削除しますか? この操作は取り消せません。",
|
||||
"com_nav_close_sidebar": "サイドバーを閉じる",
|
||||
"com_nav_commands": "Commands",
|
||||
"com_nav_confirm_clear": "削除を確定",
|
||||
"com_nav_conversation_mode": "会話モード",
|
||||
"com_nav_convo_menu_options": "会話メニューオプション",
|
||||
"com_nav_db_sensitivity": "デシベル感度",
|
||||
"com_nav_delete_account": "アカウントを削除",
|
||||
"com_nav_delete_account_button": "アカウントを完全に削除する",
|
||||
"com_nav_delete_account_confirm": "アカウントを削除しますか?",
|
||||
"com_nav_delete_account_email_placeholder": "アカウントのメールアドレスを入力してください",
|
||||
"com_nav_delete_cache_storage": "TTSキャッシュストレージを削除",
|
||||
"com_nav_delete_data_info": "すべてのデータが削除されます。",
|
||||
"com_nav_delete_warning": "警告: この操作により、アカウントが完全に削除されます。",
|
||||
"com_nav_edit_chat_badges": "チャットバッジの編集",
|
||||
"com_nav_enable_cache_tts": "キャッシュTTSを有効化",
|
||||
"com_nav_enable_cloud_browser_voice": "クラウドベースの音声を使用",
|
||||
"com_nav_enabled": "有効化",
|
||||
"com_nav_engine": "エンジン",
|
||||
"com_nav_enter_to_send": "Enterキーでメッセージを送信する",
|
||||
"com_nav_export": "エクスポート",
|
||||
"com_nav_export_all_message_branches": "すべての子メッセージを含める",
|
||||
"com_nav_export_conversation": "会話をエクスポートする",
|
||||
"com_nav_export_filename": "ファイル名",
|
||||
"com_nav_export_filename_placeholder": "ファイル名を入力してください",
|
||||
"com_nav_export_include_endpoint_options": "エンドポイントのオプションを含める",
|
||||
"com_nav_export_recursive": "再帰的",
|
||||
"com_nav_export_recursive_or_sequential": "再帰的? or 順次的?",
|
||||
"com_nav_export_type": "形式",
|
||||
"com_nav_external": "外部",
|
||||
"com_nav_font_size": "メッセージフォントサイズ",
|
||||
"com_nav_font_size_base": "中",
|
||||
"com_nav_font_size_lg": "大",
|
||||
"com_nav_font_size_sm": "小",
|
||||
"com_nav_font_size_xl": "極大",
|
||||
"com_nav_font_size_xs": "極小",
|
||||
"com_nav_help_faq": "ヘルプ & FAQ",
|
||||
"com_nav_hide_panel": "右側のパネルを非表示",
|
||||
"com_nav_info_code_artifacts": "チャットの横に実験的なコード アーティファクトの表示を有効にします",
|
||||
"com_nav_info_code_artifacts_agent": "このエージェントのコードアーティファクトの使用を有効にします。デフォルトでは、\"カスタムプロンプトモード\" が有効になっていない限り、アーティファクトの使用に特化した追加の指示が追加されます。",
|
||||
"com_nav_info_custom_prompt_mode": "有効にすると、デフォルトのアーティファクト システム プロンプトは含まれません。このモードでは、アーティファクト生成指示をすべて手動で提供する必要があります。",
|
||||
"com_nav_info_enter_to_send": "有効になっている場合、 `ENTER` キーを押すとメッセージが送信されます。無効になっている場合、Enterキーを押すと新しい行が追加され、 `CTRL + ENTER` / `⌘ + ENTER` キーを押してメッセージを送信する必要があります。",
|
||||
"com_nav_info_fork_change_default": "`表示メッセージのみ` は、選択したメッセージへの直接パスのみが含まれます。 `関連ブランチを含める` は、パスに沿ったブランチを追加します。 `すべてを対象に含める` は、接続されているすべてのメッセージとブランチを含みます。",
|
||||
"com_nav_info_fork_split_target_setting": "有効になっている場合、選択した動作に従って、対象メッセージから会話内の最新メッセージまで分岐が開始されます。",
|
||||
"com_nav_info_include_shadcnui": "有効にすると、shadcn/uiコンポーネントを使用するための指示が含まれます。shadcn/uiはRadix UIとTailwind CSSを使用して構築された再利用可能なコンポーネントのコレクションです。注:これらの指示は長文ですので、LLM に正しいインポートとコンポーネントを知らせることが重要でない限り、有効にしないでください。これらのコンポーネントの詳細については、https://ui.shadcn.com/をご覧ください。",
|
||||
"com_nav_info_latex_parsing": "有効になっている場合、メッセージ内のLaTeXコードが数式としてレンダリングされます。LaTeXレンダリングが必要ない場合は、これを無効にするとパフォーマンスが向上する場合があります。",
|
||||
"com_nav_info_save_badges_state": "有効にすると、チャットバッジの状態が保存されます。つまり、新しいチャットを作成する場合、バッジは前のチャットと同じ状態のままになります。このオプションを無効にすると、新しいチャットを作成するたびにバッジはデフォルト状態にリセットされます。",
|
||||
"com_nav_info_save_draft": "有効になっている場合、チャットフォームに入力したテキストと添付ファイルがドラフトとしてローカルに自動保存されます。これらのドラフトは、ページをリロードしたり、別の会話に切り替えても利用できます。ドラフトはデバイスにローカルに保存され、メッセージが送信されると削除されます。",
|
||||
"com_nav_info_show_thinking": "有効にすると、チャットはデフォルトで思考ドロップダウンを開いて表示し、AIの推論をリアルタイムで見ることができます。無効にすると、思考ドロップダウンはデフォルトで閉じたままになり、よりすっきりとした合理的なインターフェイスになります。",
|
||||
"com_nav_info_user_name_display": "有効になっている場合、送信者のユーザー名が送信するメッセージの上に表示されます。無効になっている場合、メッセージの上に「あなた」のみが表示されます。",
|
||||
"com_nav_lang_arabic": "العربية",
|
||||
"com_nav_lang_auto": "自動検出",
|
||||
"com_nav_lang_brazilian_portuguese": "Português Brasileiro",
|
||||
"com_nav_lang_catalan": "カタルーニャ語",
|
||||
"com_nav_lang_chinese": "中文",
|
||||
"com_nav_lang_czech": "チェコ語",
|
||||
"com_nav_lang_danish": "デンマーク語",
|
||||
"com_nav_lang_dutch": "Nederlands",
|
||||
"com_nav_lang_english": "English",
|
||||
"com_nav_lang_estonian": "Eesti keel",
|
||||
"com_nav_lang_finnish": "Suomi",
|
||||
"com_nav_lang_french": "Français ",
|
||||
"com_nav_lang_georgian": "ქართული",
|
||||
"com_nav_lang_german": "Deutsch",
|
||||
"com_nav_lang_hebrew": "עברית",
|
||||
"com_nav_lang_hungarian": "マジャル語",
|
||||
"com_nav_lang_indonesia": "Indonesia",
|
||||
"com_nav_lang_italian": "Italiano",
|
||||
"com_nav_lang_japanese": "日本語",
|
||||
"com_nav_lang_korean": "한국어",
|
||||
"com_nav_lang_persian": "ファラオ",
|
||||
"com_nav_lang_polish": "Polski",
|
||||
"com_nav_lang_portuguese": "Português",
|
||||
"com_nav_lang_russian": "Русский",
|
||||
"com_nav_lang_spanish": "Español",
|
||||
"com_nav_lang_swedish": "Svenska",
|
||||
"com_nav_lang_thai": "ไทย",
|
||||
"com_nav_lang_traditional_chinese": "繁體中文",
|
||||
"com_nav_lang_turkish": "Türkçe",
|
||||
"com_nav_lang_vietnamese": "Tiếng Việt",
|
||||
"com_nav_language": "言語",
|
||||
"com_nav_latex_parsing": "メッセージ内の LaTeX の構文解析 (パフォーマンスに影響する可能性があります)",
|
||||
"com_nav_log_out": "ログアウト",
|
||||
"com_nav_long_audio_warning": "長いテキストの処理には時間がかかります。",
|
||||
"com_nav_maximize_chat_space": "チャット画面を最大化",
|
||||
"com_nav_modular_chat": "会話の途中でのエンドポイント切替を有効化",
|
||||
"com_nav_my_files": "自分のファイル",
|
||||
"com_nav_not_supported": "サポートされていません",
|
||||
"com_nav_open_sidebar": "サイドバーを開く",
|
||||
"com_nav_playback_rate": "オーディオ再生速度",
|
||||
"com_nav_plugin_auth_error": "このプラグインの認証中にエラーが発生しました。もう一度お試しください。",
|
||||
"com_nav_plugin_install": "インストール",
|
||||
"com_nav_plugin_search": "プラグインを検索",
|
||||
"com_nav_plugin_store": "プラグインストア",
|
||||
"com_nav_plugin_uninstall": "アンインストール",
|
||||
"com_nav_plus_command": "+-Command",
|
||||
"com_nav_plus_command_description": "コマンド\"+\"で複数応答設定を追加する",
|
||||
"com_nav_profile_picture": "プロフィール画像",
|
||||
"com_nav_save_badges_state": "バッジの状態を保存する",
|
||||
"com_nav_save_drafts": "ローカルにドラフトを保存する",
|
||||
"com_nav_scroll_button": "終了ボタンまでスクロール",
|
||||
"com_nav_search_placeholder": "メッセージ検索",
|
||||
"com_nav_send_message": "メッセージを送信する",
|
||||
"com_nav_setting_account": "アカウント",
|
||||
"com_nav_setting_beta": "ベータ版の機能",
|
||||
"com_nav_setting_chat": "チャット",
|
||||
"com_nav_setting_data": "データ管理",
|
||||
"com_nav_setting_general": "一般",
|
||||
"com_nav_setting_speech": "スピーチ",
|
||||
"com_nav_settings": "設定",
|
||||
"com_nav_shared_links": "共有リンク",
|
||||
"com_nav_show_code": "Code Interpreter を使用する際は常にコードを表示する",
|
||||
"com_nav_show_thinking": "デフォルトで推論ドロップダウンを開く",
|
||||
"com_nav_slash_command": "/-Command",
|
||||
"com_nav_slash_command_description": "コマンド\"/\"でキーボードでプロンプトを選択する",
|
||||
"com_nav_speech_to_text": "音声テキスト変換",
|
||||
"com_nav_stop_generating": "生成を停止",
|
||||
"com_nav_text_to_speech": "テキスト読み上げ",
|
||||
"com_nav_theme": "テーマ",
|
||||
"com_nav_theme_dark": "ダーク",
|
||||
"com_nav_theme_light": "ライト",
|
||||
"com_nav_theme_system": "システム",
|
||||
"com_nav_tool_dialog": "アシスタントツール",
|
||||
"com_nav_tool_dialog_agents": "エージェントツール",
|
||||
"com_nav_tool_dialog_description": "ツールの選択を維持するには、アシスタントを保存する必要があります。",
|
||||
"com_nav_tool_remove": "取り除く",
|
||||
"com_nav_tool_search": "ツールを検索",
|
||||
"com_nav_user": "ユーザー",
|
||||
"com_nav_user_msg_markdown": "メッセージをマークダウン形式で表示する",
|
||||
"com_nav_user_name_display": "メッセージにユーザー名を表示する",
|
||||
"com_nav_voice_select": "音声",
|
||||
"com_show_agent_settings": "エージェント設定を表示",
|
||||
"com_show_completion_settings": "コンプリーション設定を表示",
|
||||
"com_show_examples": "例を表示",
|
||||
"com_sidepanel_agent_builder": "エージェントビルダー",
|
||||
"com_sidepanel_assistant_builder": "アシスタントビルダー",
|
||||
"com_sidepanel_attach_files": "ファイルを添付する",
|
||||
"com_sidepanel_conversation_tags": "ブックマーク",
|
||||
"com_sidepanel_hide_panel": "パネルを隠す",
|
||||
"com_sidepanel_manage_files": "ファイルを管理",
|
||||
"com_sidepanel_parameters": "パラメータ",
|
||||
"com_ui_2fa_account_security": "2要素認証はアカウントのセキュリティをさらに強化します",
|
||||
"com_ui_2fa_disable": "2FAを無効にする",
|
||||
"com_ui_2fa_disable_error": "2要素認証を無効にする際にエラーが発生しました",
|
||||
"com_ui_2fa_disabled": "2FAが無効になっています",
|
||||
"com_ui_2fa_enable": "二要素承認を有効にする",
|
||||
"com_ui_2fa_enabled": "2FAが有効になりました",
|
||||
"com_ui_2fa_generate_error": "2要素認証設定の生成中にエラーが発生しました",
|
||||
"com_ui_2fa_invalid": "2要素認証コードが無効です",
|
||||
"com_ui_2fa_setup": "二要素認証を設定",
|
||||
"com_ui_2fa_verified": "2要素認証の認証に成功しました",
|
||||
"com_ui_accept": "同意します",
|
||||
"com_ui_add": "追加",
|
||||
"com_ui_add_model_preset": "追加の応答のためのモデルまたはプリセットを追加する",
|
||||
"com_ui_add_multi_conversation": "複数のチャットを追加",
|
||||
"com_ui_admin": "管理者",
|
||||
"com_ui_admin_access_warning": "管理者アクセスをこの機能で無効にすると、予期せぬUI上の問題が発生し、画面の再読み込みが必要になる場合があります。設定を保存した場合、元に戻すには librechat.yaml の設定ファイルを直接編集する必要があり、この変更はすべての権限に影響します。",
|
||||
"com_ui_admin_settings": "管理者設定",
|
||||
"com_ui_advanced": "高度",
|
||||
"com_ui_advanced_settings": "詳細設定",
|
||||
"com_ui_agent": "エージェント",
|
||||
"com_ui_agent_chain": "エージェント・チェーン(Mixture-of-Agents)",
|
||||
"com_ui_agent_chain_info": "エージェントのシーケンスを作成できるようにします。各エージェントは、チェーン内の前のエージェントの出力にアクセスできます。エージェントが前の出力を補助情報として使用する「Mixture-of-Agents」アーキテクチャに基づいています。",
|
||||
"com_ui_agent_chain_max": "{{0}} エージェントの上限に達しました。",
|
||||
"com_ui_agent_delete_error": "エージェントの削除中にエラーが発生しました",
|
||||
"com_ui_agent_deleted": "エージェントを正常に削除しました",
|
||||
"com_ui_agent_duplicate_error": "アシスタントの複製中にエラーが発生しました",
|
||||
"com_ui_agent_duplicated": "アシスタントを複製しました",
|
||||
"com_ui_agent_editing_allowed": "このエージェントは他のユーザーが既に編集可能です",
|
||||
"com_ui_agent_recursion_limit": "最大エージェントステップ数",
|
||||
"com_ui_agent_recursion_limit_info": "エージェントが最終応答を返す前に実行できるステップ数を制限します。デフォルトは25ステップです。ステップとは、AI APIリクエストまたはツール使用ラウンドのいずれかです。例えば、基本的なツールインタラクションは、最初のリクエスト、ツール使用、そしてフォローアップリクエストの3ステップで構成されます。",
|
||||
"com_ui_agent_shared_to_all": "ここに何かを入れる必要があります。空でした",
|
||||
"com_ui_agent_var": "{{0}}エージェント",
|
||||
"com_ui_agents": "エージェント",
|
||||
"com_ui_agents_allow_create": "エージェントの作成を許可",
|
||||
"com_ui_agents_allow_share_global": "全ユーザーとAgentsの共有を許可",
|
||||
"com_ui_agents_allow_use": "エージェントの使用を許可",
|
||||
"com_ui_all": "すべて",
|
||||
"com_ui_all_proper": "すべて",
|
||||
"com_ui_analyzing": "分析中",
|
||||
"com_ui_analyzing_finished": "分析終了",
|
||||
"com_ui_api_key": "APIキー",
|
||||
"com_ui_archive": "アーカイブ",
|
||||
"com_ui_archive_delete_error": "アーカイブされた会話の削除に失敗しました",
|
||||
"com_ui_archive_error": "アーカイブに失敗しました。",
|
||||
"com_ui_artifact_click": "クリックして開く",
|
||||
"com_ui_artifacts": "アーティファクト",
|
||||
"com_ui_artifacts_toggle": "アーティファクト UI の切替",
|
||||
"com_ui_artifacts_toggle_agent": "アーティファクトを有効にする",
|
||||
"com_ui_ascending": "昇順",
|
||||
"com_ui_assistant": "アシスタント",
|
||||
"com_ui_assistant_delete_error": "アシスタントの削除中にエラーが発生しました。",
|
||||
"com_ui_assistant_deleted": "アシスタントが正常に削除されました",
|
||||
"com_ui_assistants": "アシスタント",
|
||||
"com_ui_assistants_output": "Assistantsの出力",
|
||||
"com_ui_attach_error": "ファイルを添付できません。会話を作成または選択するか、ページを更新してみてください。",
|
||||
"com_ui_attach_error_openai": "他のエンドポイントにアシスタントファイルを添付することはできません",
|
||||
"com_ui_attach_error_size": "エンドポイントのファイルサイズ制限を超えました:",
|
||||
"com_ui_attach_error_type": "エンドポイントでサポートされていないファイルタイプ:",
|
||||
"com_ui_attach_remove": "ファイルを削除",
|
||||
"com_ui_attach_warn_endpoint": "互換性のあるツールがない場合、非アシスタントのファイルは無視される可能性があります",
|
||||
"com_ui_attachment": "添付ファイル",
|
||||
"com_ui_auth_type": "認証タイプ",
|
||||
"com_ui_auth_url": "認証URL",
|
||||
"com_ui_authentication": "認証",
|
||||
"com_ui_authentication_type": "認証タイプ",
|
||||
"com_ui_avatar": "アバター",
|
||||
"com_ui_azure": "Azure",
|
||||
"com_ui_back_to_chat": "チャットに戻る",
|
||||
"com_ui_back_to_prompts": "プロンプトに戻る",
|
||||
"com_ui_backup_codes": "バックアップコード",
|
||||
"com_ui_backup_codes_regenerate_error": "バックアップコードの再生成中にエラーが発生しました",
|
||||
"com_ui_backup_codes_regenerated": "バックアップコードの再生成に成功",
|
||||
"com_ui_basic": "Basic",
|
||||
"com_ui_basic_auth_header": "Basic認証ヘッダー",
|
||||
"com_ui_bearer": "Bearer",
|
||||
"com_ui_bookmark_delete_confirm": "このブックマークを削除してもよろしいですか?",
|
||||
"com_ui_bookmarks": "ブックマーク",
|
||||
"com_ui_bookmarks_add": "ブックマークを追加",
|
||||
"com_ui_bookmarks_add_to_conversation": "現在の会話に追加",
|
||||
"com_ui_bookmarks_count": "カウント",
|
||||
"com_ui_bookmarks_create_error": "ブックマークの作成中にエラーが発生しました",
|
||||
"com_ui_bookmarks_create_exists": "このブックマークは既に存在します",
|
||||
"com_ui_bookmarks_create_success": "ブックマークが正常に作成されました",
|
||||
"com_ui_bookmarks_delete": "ブックマークを削除",
|
||||
"com_ui_bookmarks_delete_error": "ブックマークの削除中にエラーが発生しました",
|
||||
"com_ui_bookmarks_delete_success": "ブックマークが正常に削除されました",
|
||||
"com_ui_bookmarks_description": "概要",
|
||||
"com_ui_bookmarks_edit": "ブックマークを編集",
|
||||
"com_ui_bookmarks_filter": "ブックマークをフィルタリング...",
|
||||
"com_ui_bookmarks_new": "新しいブックマーク",
|
||||
"com_ui_bookmarks_title": "タイトル",
|
||||
"com_ui_bookmarks_update_error": "ブックマークの更新中にエラーが発生しました",
|
||||
"com_ui_bookmarks_update_success": "ブックマークが正常に更新されました",
|
||||
"com_ui_bulk_delete_error": "共有リンクの削除に失敗しました",
|
||||
"com_ui_callback_url": "コールバックURL",
|
||||
"com_ui_cancel": "キャンセル",
|
||||
"com_ui_category": "カテゴリ",
|
||||
"com_ui_chat": "チャット",
|
||||
"com_ui_chat_history": "チャット履歴",
|
||||
"com_ui_clear": "削除する",
|
||||
"com_ui_clear_all": "すべてクリア",
|
||||
"com_ui_client_id": "クライアントID",
|
||||
"com_ui_client_secret": "クライアントシークレット",
|
||||
"com_ui_close": "閉じる",
|
||||
"com_ui_close_menu": "メニューを閉じる",
|
||||
"com_ui_code": "コード",
|
||||
"com_ui_collapse_chat": "チャットを折りたたむ",
|
||||
"com_ui_command_placeholder": "オプション:プロンプトのコマンドまたは名前を入力",
|
||||
"com_ui_command_usage_placeholder": "コマンドまたは名前でプロンプトを選択してください",
|
||||
"com_ui_complete_setup": "セットアップ完了",
|
||||
"com_ui_confirm_action": "実行する",
|
||||
"com_ui_confirm_admin_use_change": "この設定を変更すると、あなた自身を含む管理者のアクセスがブロックされます。本当によろしいですか?",
|
||||
"com_ui_confirm_change": "変更の確認",
|
||||
"com_ui_context": "コンテキスト",
|
||||
"com_ui_continue": "続ける",
|
||||
"com_ui_controls": "管理",
|
||||
"com_ui_convo_delete_error": "会話の削除に失敗しました",
|
||||
"com_ui_copied": "コピーしました!",
|
||||
"com_ui_copied_to_clipboard": "コピーしました",
|
||||
"com_ui_copy_code": "コードをコピーする",
|
||||
"com_ui_copy_link": "リンクをコピー",
|
||||
"com_ui_copy_to_clipboard": "クリップボードへコピー",
|
||||
"com_ui_create": "作成",
|
||||
"com_ui_create_link": "リンクを作成する",
|
||||
"com_ui_create_prompt": "プロンプトを作成する",
|
||||
"com_ui_currently_production": "現在生産中",
|
||||
"com_ui_custom": "カスタム",
|
||||
"com_ui_custom_header_name": "カスタムヘッダー名",
|
||||
"com_ui_custom_prompt_mode": "カスタムプロンプトモード",
|
||||
"com_ui_dashboard": "ダッシュボード",
|
||||
"com_ui_date": "日付",
|
||||
"com_ui_date_april": "4月",
|
||||
"com_ui_date_august": "8月",
|
||||
"com_ui_date_december": "12月",
|
||||
"com_ui_date_february": "2月",
|
||||
"com_ui_date_january": "1月",
|
||||
"com_ui_date_july": "7月",
|
||||
"com_ui_date_june": "6月",
|
||||
"com_ui_date_march": "3月",
|
||||
"com_ui_date_may": "5月",
|
||||
"com_ui_date_november": "11月",
|
||||
"com_ui_date_october": "10月",
|
||||
"com_ui_date_previous_30_days": "過去30日間",
|
||||
"com_ui_date_previous_7_days": "過去7日間",
|
||||
"com_ui_date_september": "9月",
|
||||
"com_ui_date_today": "今日",
|
||||
"com_ui_date_yesterday": "昨日",
|
||||
"com_ui_decline": "同意しません",
|
||||
"com_ui_default_post_request": "デフォルト(POSTリクエスト)",
|
||||
"com_ui_delete": "削除",
|
||||
"com_ui_delete_action": "アクションを削除",
|
||||
"com_ui_delete_action_confirm": "このアクションを削除してもよろしいですか?",
|
||||
"com_ui_delete_agent_confirm": "このエージェントを削除してもよろしいですか?",
|
||||
"com_ui_delete_assistant_confirm": "このアシスタントを削除しますか? この操作は元に戻せません。",
|
||||
"com_ui_delete_confirm": "このチャットは削除されます。",
|
||||
"com_ui_delete_confirm_prompt_version_var": "これは、選択されたバージョンを \"{{0}}.\" から削除します。他のバージョンが存在しない場合、プロンプトが削除されます。",
|
||||
"com_ui_delete_conversation": "チャットを削除しますか?",
|
||||
"com_ui_delete_prompt": "プロンプトを消しますか?",
|
||||
"com_ui_delete_shared_link": "共有リンクを削除しますか?",
|
||||
"com_ui_delete_tool": "ツールを削除",
|
||||
"com_ui_delete_tool_confirm": "このツールを削除してもよろしいですか?",
|
||||
"com_ui_descending": "降順",
|
||||
"com_ui_description": "説明",
|
||||
"com_ui_description_placeholder": "オプション:プロンプトを表示するときの説明を入力",
|
||||
"com_ui_disabling": "無効化...",
|
||||
"com_ui_download": "ダウンロード",
|
||||
"com_ui_download_artifact": "アーティファクトをダウンロード",
|
||||
"com_ui_download_backup": "バックアップコードをダウンロードする",
|
||||
"com_ui_download_backup_tooltip": "続行する前に、バックアップコードをダウンロードしてください。認証デバイスを紛失した場合、アクセスを回復するために必要です。",
|
||||
"com_ui_download_error": "ファイルのダウンロード中にエラーが発生しました。ファイルが削除された可能性があります。",
|
||||
"com_ui_drag_drop": "ここに何かを入れる必要があります。空でした",
|
||||
"com_ui_dropdown_variables": "ドロップダウン変数:",
|
||||
"com_ui_dropdown_variables_info": "プロンプトのカスタムドロップダウンメニューを作成します: `{{variable_name:option1|option2|option3}}`",
|
||||
"com_ui_duplicate": "複製",
|
||||
"com_ui_duplication_error": "会話の複製中にエラーが発生しました",
|
||||
"com_ui_duplication_processing": "会話を複製中...",
|
||||
"com_ui_duplication_success": "会話の複製が完了しました",
|
||||
"com_ui_edit": "編集",
|
||||
"com_ui_empty_category": "-",
|
||||
"com_ui_endpoint": "エンドポイント",
|
||||
"com_ui_endpoint_menu": "LLMエンドポイントメニュー",
|
||||
"com_ui_enter": "入力",
|
||||
"com_ui_enter_api_key": "APIキーを入力",
|
||||
"com_ui_enter_openapi_schema": "OpenAPIスキーマを入力してください",
|
||||
"com_ui_error": "エラー",
|
||||
"com_ui_error_connection": "サーバーへの接続中にエラーが発生しました。ページを更新してください。",
|
||||
"com_ui_error_save_admin_settings": "管理者設定の保存にエラーが発生しました。",
|
||||
"com_ui_examples": "例",
|
||||
"com_ui_expand_chat": "チャットを展開",
|
||||
"com_ui_export_convo_modal": "エクスポート",
|
||||
"com_ui_field_required": "必須入力項目です",
|
||||
"com_ui_filter_prompts": "フィルタープロンプト",
|
||||
"com_ui_filter_prompts_name": "名前でプロンプトをフィルタ",
|
||||
"com_ui_finance": "財務",
|
||||
"com_ui_fork": "分岐",
|
||||
"com_ui_fork_all_target": "すべてを対象に含める",
|
||||
"com_ui_fork_branches": "関連ブランチを含める",
|
||||
"com_ui_fork_change_default": "デフォルトの分岐オプション",
|
||||
"com_ui_fork_default": "デフォルトの分岐オプションを使用する",
|
||||
"com_ui_fork_error": "会話を分岐できませんでした。エラーが発生しました。",
|
||||
"com_ui_fork_from_message": "分岐オプションを選択する",
|
||||
"com_ui_fork_info_1": "この設定を使うと、希望の動作でメッセージを分岐させることができます。",
|
||||
"com_ui_fork_info_2": "「分岐」とは、現在の会話から特定のメッセージを開始/終了点として新しい会話を作成し、選択したオプションに従ってコピーを作成することを指します。",
|
||||
"com_ui_fork_info_3": "「ターゲットメッセージ」とは、このポップアップを開いたメッセージか、\"{{0}}\"にチェックを入れた場合は会話の最新のメッセージを指します。",
|
||||
"com_ui_fork_info_branches": "この設定では、表示されているメッセージとそれに関連するブランチ(つまり、ターゲットメッセージに至る直接の経路上のブランチを含む)を分岐させます。",
|
||||
"com_ui_fork_info_button_label": "会話の分岐に関する情報を表示する",
|
||||
"com_ui_fork_info_remember": "この設定を有効にすると、今後の会話で同じオプションを選択する手間が省けるようになります。お好みの設定を記憶させることで、会話の分岐をスムーズに行えるようになります。",
|
||||
"com_ui_fork_info_start": "チェックを入れると、上記で選択した動作に従って、このメッセージから会話の最新のメッセージまで分岐が開始されます。",
|
||||
"com_ui_fork_info_target": "この設定では、対象のメッセージとその近傍のメッセージを含む、すべてのメッセージの枝を分岐させます。つまり、表示されているかどうか、同じ経路上にあるかどうかに関係なく、すべてのメッセージの枝が含まれます。",
|
||||
"com_ui_fork_info_visible": "この設定は、ターゲットメッセージへの直接の経路のみを表示し、分岐は表示しません。つまり、表示メッセージのみを抽出して表示するということです。",
|
||||
"com_ui_fork_more_details_about": "{{0}} 分岐オプションに関する追加情報と詳細を表示します",
|
||||
"com_ui_fork_more_info_options": "すべての分岐オプションとその動作の詳細説明を見る",
|
||||
"com_ui_fork_processing": "会話を分岐しています...",
|
||||
"com_ui_fork_remember": "以前の会話内容を記憶する",
|
||||
"com_ui_fork_remember_checked": "選択した内容は、次回の利用時にも記憶されます。設定から変更できます。",
|
||||
"com_ui_fork_split_target": "ここで分岐を開始",
|
||||
"com_ui_fork_split_target_setting": "デフォルトで対象メッセージから分岐を開始する",
|
||||
"com_ui_fork_success": "会話の分岐に成功しました",
|
||||
"com_ui_fork_visible": "表示メッセージのみ",
|
||||
"com_ui_generate_backup": "バックアップコードを生成する",
|
||||
"com_ui_generate_qrcode": "QRコードを生成する",
|
||||
"com_ui_generating": "生成中...",
|
||||
"com_ui_global_group": "ここに何かを入れる必要があります。空でした",
|
||||
"com_ui_go_back": "戻る",
|
||||
"com_ui_go_to_conversation": "会話に移動する",
|
||||
"com_ui_good_afternoon": "こんにちは",
|
||||
"com_ui_good_evening": "こんばんは",
|
||||
"com_ui_good_morning": "おはよう",
|
||||
"com_ui_happy_birthday": "初めての誕生日です!",
|
||||
"com_ui_hide_qr": "QRコードを非表示にする",
|
||||
"com_ui_host": "ホスト",
|
||||
"com_ui_idea": "アイデア",
|
||||
"com_ui_image_gen": "画像生成",
|
||||
"com_ui_import": "読み込む",
|
||||
"com_ui_import_conversation_error": "会話のインポート時にエラーが発生しました",
|
||||
"com_ui_import_conversation_file_type_error": "サポートされていないインポート形式です",
|
||||
"com_ui_import_conversation_info": "JSONファイルから会話をインポートする",
|
||||
"com_ui_import_conversation_success": "会話のインポートに成功しました",
|
||||
"com_ui_include_shadcnui": "shadcn/uiコンポーネントの指示を含める",
|
||||
"com_ui_include_shadcnui_agent": "shadcn/uiの指示を含む",
|
||||
"com_ui_input": "入力",
|
||||
"com_ui_instructions": "指示文",
|
||||
"com_ui_late_night": "遅い夜を楽しんで",
|
||||
"com_ui_latest_footer": "Every AI for Everyone.",
|
||||
"com_ui_latest_production_version": "最新の製品バージョン",
|
||||
"com_ui_latest_version": "最新バージョン",
|
||||
"com_ui_librechat_code_api_key": "LibreChat コードインタープリター APIキーを取得",
|
||||
"com_ui_librechat_code_api_subtitle": "セキュア。多言語対応。ファイル入出力。",
|
||||
"com_ui_librechat_code_api_title": "AIコードを実行",
|
||||
"com_ui_loading": "読み込み中...",
|
||||
"com_ui_locked": "ロック",
|
||||
"com_ui_logo": "{{0}}のロゴ",
|
||||
"com_ui_manage": "管理",
|
||||
"com_ui_max_tags": "最新の値を使用した場合、許可される最大数は {{0}} です。",
|
||||
"com_ui_mcp_servers": "MCP サーバー",
|
||||
"com_ui_mention": "エンドポイント、アシスタント、またはプリセットを素早く切り替えるには、それらを言及してください。",
|
||||
"com_ui_min_tags": "これ以上の値を削除できません。少なくとも {{0}} が必要です。",
|
||||
"com_ui_misc": "その他",
|
||||
"com_ui_model": "モデル",
|
||||
"com_ui_model_parameters": "モデルパラメータ",
|
||||
"com_ui_more_info": "詳細",
|
||||
"com_ui_my_prompts": "マイ プロンプト",
|
||||
"com_ui_name": "名前",
|
||||
"com_ui_new": "New",
|
||||
"com_ui_new_chat": "新規チャット",
|
||||
"com_ui_new_conversation_title": "新しい会話タイトル",
|
||||
"com_ui_next": "次",
|
||||
"com_ui_no": "いいえ",
|
||||
"com_ui_no_backup_codes": "バックアップコードはありません。新しいコードを生成してください。",
|
||||
"com_ui_no_bookmarks": "ブックマークがまだないようです。チャットをクリックして新しいブックマークを追加してください",
|
||||
"com_ui_no_category": "カテゴリなし",
|
||||
"com_ui_no_changes": "更新する変更はありません",
|
||||
"com_ui_no_data": "ここに何かを入れる必要があります。空でした",
|
||||
"com_ui_no_terms_content": "表示する利用規約の内容はありません",
|
||||
"com_ui_no_valid_items": "ここに何かを入れる必要があります。空でした",
|
||||
"com_ui_none": "なし",
|
||||
"com_ui_not_used": "未使用",
|
||||
"com_ui_nothing_found": "該当するものが見つかりませんでした",
|
||||
"com_ui_oauth": "OAuth",
|
||||
"com_ui_of": "of",
|
||||
"com_ui_off": "オフ",
|
||||
"com_ui_on": "オン",
|
||||
"com_ui_openai": "OpenAI",
|
||||
"com_ui_page": "ページ",
|
||||
"com_ui_prev": "前",
|
||||
"com_ui_preview": "プレビュー",
|
||||
"com_ui_privacy_policy": "プライバシーポリシー",
|
||||
"com_ui_privacy_policy_url": "プライバシーポリシーURL",
|
||||
"com_ui_prompt": "プロンプト",
|
||||
"com_ui_prompt_already_shared_to_all": "このプロンプトはすでに全ユーザーと共有されています",
|
||||
"com_ui_prompt_name": "プロンプト名",
|
||||
"com_ui_prompt_name_required": "プロンプト名は必須です",
|
||||
"com_ui_prompt_preview_not_shared": "このプロンプトに対して共同作業が許可されていません。",
|
||||
"com_ui_prompt_text": "テキスト",
|
||||
"com_ui_prompt_text_required": "テキストは必須です",
|
||||
"com_ui_prompt_update_error": "プロンプトの更新中にエラーが発生しました",
|
||||
"com_ui_prompts": "プロンプト",
|
||||
"com_ui_prompts_allow_create": "プロンプトの作成を許可",
|
||||
"com_ui_prompts_allow_share_global": "全ユーザーとプロンプトを共有することを許可",
|
||||
"com_ui_prompts_allow_use": "プロンプトの使用を許可",
|
||||
"com_ui_provider": "プロバイダ",
|
||||
"com_ui_read_aloud": "読み上げる",
|
||||
"com_ui_redirecting_to_provider": "{{0}}にリダイレクト、 お待ちください...",
|
||||
"com_ui_refresh_link": "リンクの更新",
|
||||
"com_ui_regenerate": "再度 生成する",
|
||||
"com_ui_regenerate_backup": "バックアップコードの再生成",
|
||||
"com_ui_regenerating": "再生成中...",
|
||||
"com_ui_region": "地域",
|
||||
"com_ui_rename": "タイトル変更",
|
||||
"com_ui_rename_conversation": "会話の名前を変更する",
|
||||
"com_ui_rename_failed": "会話の名前を変更できませんでした",
|
||||
"com_ui_rename_prompt": "プロンプトの名前を変更します",
|
||||
"com_ui_requires_auth": "認証が必要です",
|
||||
"com_ui_reset_var": "{{0}}をリセット",
|
||||
"com_ui_result": "結果",
|
||||
"com_ui_revoke": "無効にする",
|
||||
"com_ui_revoke_info": "ユーザへ発行した認証情報をすべて無効にする。",
|
||||
"com_ui_revoke_key_confirm": "この認証情報を無効にしてもよろしいですか?",
|
||||
"com_ui_revoke_key_endpoint": "{{0}}のキーを無効にする",
|
||||
"com_ui_revoke_keys": "認証キーの無効化",
|
||||
"com_ui_revoke_keys_confirm": "すべての認証情報を無効にしてもよろしいですか?",
|
||||
"com_ui_role_select": "役割",
|
||||
"com_ui_roleplay": "ロールプレイ",
|
||||
"com_ui_run_code": "コードを実行",
|
||||
"com_ui_run_code_error": "コードの実行中にエラーが発生しました",
|
||||
"com_ui_save": "保存",
|
||||
"com_ui_save_badge_changes": "バッジの変更を保存しますか?",
|
||||
"com_ui_save_submit": "保存 & 送信",
|
||||
"com_ui_saved": "保存しました!",
|
||||
"com_ui_schema": "スキーマ",
|
||||
"com_ui_scope": "範囲",
|
||||
"com_ui_search": "検索",
|
||||
"com_ui_secret_key": "秘密鍵",
|
||||
"com_ui_select": "選択",
|
||||
"com_ui_select_file": "ファイルを選択",
|
||||
"com_ui_select_model": "モデル選択",
|
||||
"com_ui_select_provider": "プロバイダーを選択してください",
|
||||
"com_ui_select_provider_first": "最初にプロバイダーを選択してください",
|
||||
"com_ui_select_region": "地域を選択",
|
||||
"com_ui_select_search_model": "名前でモデルを検索",
|
||||
"com_ui_select_search_plugin": "プラグイン名で検索",
|
||||
"com_ui_select_search_provider": "プロバイダー名で検索",
|
||||
"com_ui_select_search_region": "地域名で検索",
|
||||
"com_ui_share": "共有",
|
||||
"com_ui_share_create_message": "あなたの名前と共有リンクを作成した後のメッセージは、共有されません。",
|
||||
"com_ui_share_delete_error": "共有リンクの削除中にエラーが発生しました。",
|
||||
"com_ui_share_error": "チャットの共有リンクの共有中にエラーが発生しました",
|
||||
"com_ui_share_form_description": "ここに何かを入れる必要があります。空でした",
|
||||
"com_ui_share_link_to_chat": "チャットへの共有リンク",
|
||||
"com_ui_share_to_all_users": "全ユーザーと共有",
|
||||
"com_ui_share_update_message": "あなたの名前、カスタム指示、共有リンクを作成した後のメッセージは、共有されません。",
|
||||
"com_ui_share_var": "{{0}} を共有",
|
||||
"com_ui_shared_link_bulk_delete_success": "共有リンクを正常に削除しました",
|
||||
"com_ui_shared_link_delete_success": "共有リンクを削除しました",
|
||||
"com_ui_shared_link_not_found": "共有リンクが見つかりません",
|
||||
"com_ui_shared_prompts": "共有されたプロンプト",
|
||||
"com_ui_shop": "買い物",
|
||||
"com_ui_show": "表示",
|
||||
"com_ui_show_all": "すべて表示",
|
||||
"com_ui_show_qr": "QR コードを表示",
|
||||
"com_ui_sign_in_to_domain": "{{0}}にサインインする",
|
||||
"com_ui_simple": "シンプル",
|
||||
"com_ui_size": "サイズ",
|
||||
"com_ui_special_var_current_date": "現在の日付",
|
||||
"com_ui_special_var_current_datetime": "現在の日時",
|
||||
"com_ui_special_var_current_user": "現在のユーザー",
|
||||
"com_ui_special_var_iso_datetime": "UTC ISO 日時",
|
||||
"com_ui_special_variables": "特殊変数:",
|
||||
"com_ui_special_variables_more_info": "ドロップダウンから特別な変数を選択できます: `{{current_date}}` (今日の日付と曜日)、`{{current_datetime}}` (現地の日付と時刻)、`{{utc_iso_datetime}}` (UTC ISO 日時)、および `{{current_user}}` (アカウント名)。",
|
||||
"com_ui_speech_while_submitting": "応答の生成中は音声を送信できません",
|
||||
"com_ui_sr_actions_menu": "{{0}}のアクションメニューを開く",
|
||||
"com_ui_stop": "止める",
|
||||
"com_ui_storage": "ストレージ",
|
||||
"com_ui_submit": "送信する",
|
||||
"com_ui_teach_or_explain": "学習",
|
||||
"com_ui_temporary": "一時チャット",
|
||||
"com_ui_terms_and_conditions": "利用規約",
|
||||
"com_ui_terms_of_service": "利用規約",
|
||||
"com_ui_thinking": "考え中...",
|
||||
"com_ui_thoughts": "推論",
|
||||
"com_ui_token_exchange_method": "トークン交換方法",
|
||||
"com_ui_token_url": "トークンURL",
|
||||
"com_ui_tools": "ツール",
|
||||
"com_ui_travel": "旅行",
|
||||
"com_ui_unarchive": "アーカイブ解除",
|
||||
"com_ui_unarchive_error": "アーカイブ解除に失敗しました。",
|
||||
"com_ui_unknown": "不明",
|
||||
"com_ui_untitled": "無題",
|
||||
"com_ui_update": "更新",
|
||||
"com_ui_upload": "アップロード",
|
||||
"com_ui_upload_code_files": "コードインタープリター用にアップロード",
|
||||
"com_ui_upload_delay": "ファイル \"{{0}}\"のアップロードに時間がかかっています。ファイルの検索のためのインデックス作成が完了するまでお待ちください。",
|
||||
"com_ui_upload_error": "ファイルのアップロード中にエラーが発生しました。",
|
||||
"com_ui_upload_file_context": "ファイルコンテキストをアップロード",
|
||||
"com_ui_upload_file_search": "ファイル検索用アップロード",
|
||||
"com_ui_upload_files": "ファイルをアップロード",
|
||||
"com_ui_upload_image": "画像をアップロード",
|
||||
"com_ui_upload_image_input": "画像をアップロード",
|
||||
"com_ui_upload_invalid": "アップロードに無効なファイルです。制限を超えない画像である必要があります。",
|
||||
"com_ui_upload_invalid_var": "アップロードに無効なファイルです。 {{0}} MBまでの画像である必要があります。",
|
||||
"com_ui_upload_ocr_text": "テキストとしてアップロード",
|
||||
"com_ui_upload_success": "アップロード成功",
|
||||
"com_ui_upload_type": "アップロード種別を選択",
|
||||
"com_ui_use_2fa_code": "代わりに2FAコードを使用する",
|
||||
"com_ui_use_backup_code": "代わりにバックアップコードを使用する",
|
||||
"com_ui_use_micrphone": "マイクを使用する",
|
||||
"com_ui_use_prompt": "プロンプトの利用",
|
||||
"com_ui_used": "使用済み",
|
||||
"com_ui_variables": "変数",
|
||||
"com_ui_variables_info": "テキスト内で二重中括弧を使用して変数を定義します。例えば、`{{example variable}}`のようにすると、プロンプトを使用するときに後で値を埋め込むことができます。",
|
||||
"com_ui_verify": "確認する",
|
||||
"com_ui_version_var": "バージョン {{0}}",
|
||||
"com_ui_versions": "バージョン",
|
||||
"com_ui_view_source": "ソースチャットを表示",
|
||||
"com_ui_weekend_morning": "楽しい週末を",
|
||||
"com_ui_write": "執筆",
|
||||
"com_ui_x_selected": "{{0}}が選択された",
|
||||
"com_ui_yes": "はい",
|
||||
"com_ui_zoom": "ズーム",
|
||||
"com_user_message": "あなた",
|
||||
"com_warning_resubmit_unsupported": "このエンドポイントではAIメッセージの再送信はサポートされていません"
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue