Commit 7ccef3e7 authored by Jun Siang Cheah's avatar Jun Siang Cheah
Browse files

Merge remote-tracking branch 'upstream/dev' into feat/model-config

parents 1a16f8fb 34253d21
......@@ -63,6 +63,16 @@ jobs:
flavor: |
latest=${{ github.ref == 'refs/heads/main' }}
- name: Extract metadata for Docker cache
id: cache-meta
uses: docker/metadata-action@v5
with:
images: ${{ env.FULL_IMAGE_NAME }}
tags: |
type=ref,event=branch
flavor: |
prefix=cache-${{ matrix.platform }}-
- name: Build Docker image (latest)
uses: docker/build-push-action@v5
id: build
......@@ -72,8 +82,8 @@ jobs:
platforms: ${{ matrix.platform }}
labels: ${{ steps.meta.outputs.labels }}
outputs: type=image,name=${{ env.FULL_IMAGE_NAME }},push-by-digest=true,name-canonical=true,push=true
cache-from: type=gha
cache-to: type=gha,mode=max
cache-from: type=registry,ref=${{ steps.cache-meta.outputs.tags }}
cache-to: type=registry,ref=${{ steps.cache-meta.outputs.tags }},mode=max
- name: Export digest
run: |
......@@ -123,7 +133,7 @@ jobs:
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Extract metadata for Docker images (default latest tag)
- name: Extract metadata for Docker images (cuda tag)
id: meta
uses: docker/metadata-action@v5
with:
......@@ -139,6 +149,16 @@ jobs:
latest=${{ github.ref == 'refs/heads/main' }}
suffix=-cuda,onlatest=true
- name: Extract metadata for Docker cache
id: cache-meta
uses: docker/metadata-action@v5
with:
images: ${{ env.FULL_IMAGE_NAME }}
tags: |
type=ref,event=branch
flavor: |
prefix=cache-cuda-${{ matrix.platform }}-
- name: Build Docker image (cuda)
uses: docker/build-push-action@v5
id: build
......@@ -148,8 +168,8 @@ jobs:
platforms: ${{ matrix.platform }}
labels: ${{ steps.meta.outputs.labels }}
outputs: type=image,name=${{ env.FULL_IMAGE_NAME }},push-by-digest=true,name-canonical=true,push=true
cache-from: type=gha
cache-to: type=gha,mode=max
cache-from: type=registry,ref=${{ steps.cache-meta.outputs.tags }}
cache-to: type=registry,ref=${{ steps.cache-meta.outputs.tags }},mode=max
build-args: USE_CUDA=true
- name: Export digest
......@@ -216,6 +236,16 @@ jobs:
latest=${{ github.ref == 'refs/heads/main' }}
suffix=-ollama,onlatest=true
- name: Extract metadata for Docker cache
id: cache-meta
uses: docker/metadata-action@v5
with:
images: ${{ env.FULL_IMAGE_NAME }}
tags: |
type=ref,event=branch
flavor: |
prefix=cache-ollama-${{ matrix.platform }}-
- name: Build Docker image (ollama)
uses: docker/build-push-action@v5
id: build
......@@ -225,8 +255,8 @@ jobs:
platforms: ${{ matrix.platform }}
labels: ${{ steps.meta.outputs.labels }}
outputs: type=image,name=${{ env.FULL_IMAGE_NAME }},push-by-digest=true,name-canonical=true,push=true
cache-from: type=gha
cache-to: type=gha,mode=max
cache-from: type=registry,ref=${{ steps.cache-meta.outputs.tags }}
cache-to: type=registry,ref=${{ steps.cache-meta.outputs.tags }},mode=max
build-args: USE_OLLAMA=true
- name: Export digest
......
......@@ -20,7 +20,11 @@ jobs:
- name: Build and run Compose Stack
run: |
docker compose --file docker-compose.yaml --file docker-compose.api.yaml up --detach --build
docker compose \
--file docker-compose.yaml \
--file docker-compose.api.yaml \
--file docker-compose.a1111-test.yaml \
up --detach --build
- name: Wait for Ollama to be up
timeout-minutes: 5
......
......@@ -28,6 +28,7 @@ from langchain_community.document_loaders import (
UnstructuredXMLLoader,
UnstructuredRSTLoader,
UnstructuredExcelLoader,
UnstructuredPowerPointLoader,
YoutubeLoader,
)
from langchain.text_splitter import RecursiveCharacterTextSplitter
......@@ -768,6 +769,11 @@ def get_loader(filename: str, file_content_type: str, file_path: str):
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
] or file_ext in ["xls", "xlsx"]:
loader = UnstructuredExcelLoader(file_path)
elif file_content_type in [
"application/vnd.ms-powerpoint",
"application/vnd.openxmlformats-officedocument.presentationml.presentation",
] or file_ext in ["ppt", "pptx"]:
loader = UnstructuredPowerPointLoader(file_path)
elif file_ext in known_source_ext or (
file_content_type and file_content_type.find("text/") >= 0
):
......
......@@ -35,6 +35,7 @@ chromadb==0.4.24
sentence-transformers==2.7.0
pypdf==4.2.0
docx2txt==0.8
python-pptx==0.6.23
unstructured==0.11.8
Markdown==3.6
pypandoc==1.13
......
......@@ -74,5 +74,28 @@ describe('Settings', () => {
expect(spy).to.be.callCount(2);
});
});
it('user can generate image', () => {
// Click on the model selector
cy.get('button[aria-label="Select a model"]').click();
// Select the first model
cy.get('button[aria-label="model-item"]').first().click();
// Type a message
cy.get('#chat-textarea').type('Hi, what can you do? A single sentence only please.', {
force: true
});
// Send the message
cy.get('button[type="submit"]').click();
// User's message should be visible
cy.get('.chat-user').should('exist');
// Wait for the response
cy.get('.chat-assistant', { timeout: 120_000 }) // .chat-assistant is created after the first token is received
.find('div[aria-label="Generation Info"]', { timeout: 120_000 }) // Generation Info is created after the stop token is received
.should('exist');
// Click on the generate image button
cy.get('[aria-label="Generate Image"]').click();
// Wait for image to be visible
cy.get('img[data-cy="image"]', { timeout: 60_000 }).should('be.visible');
});
});
});
# This is an overlay that spins up stable-diffusion-webui for integration testing
# This is not designed to be used in production
services:
stable-diffusion-webui:
# Not built for ARM64
platform: linux/amd64
image: ghcr.io/neggles/sd-webui-docker:latest
restart: unless-stopped
environment:
CLI_ARGS: "--api --use-cpu all --precision full --no-half --skip-torch-cuda-test --ckpt /empty.pt --do-not-download-clip --disable-nan-check --disable-opt-split-attention"
PYTHONUNBUFFERED: "1"
TERM: "vt100"
SD_WEBUI_VARIANT: "default"
# Hack to get container working on Apple Silicon
# Rosetta creates a conflict ${HOME}/.cache folder
entrypoint: /bin/bash
command:
- -c
- |
export HOME=/root-home
rm -rf $${HOME}/.cache
/docker/entrypoint.sh python -u webui.py --listen --port $${WEBUI_PORT} --skip-version-check $${CLI_ARGS}
volumes:
- ./test/test_files/image_gen/sd-empty.pt:/empty.pt
open-webui:
environment:
ENABLE_IMAGE_GENERATION: "true"
AUTOMATIC1111_BASE_URL: http://stable-diffusion-webui:7860
IMAGE_SIZE: "64x64"
IMAGE_STEPS: "3"
<script lang="ts">
import { v4 as uuidv4 } from 'uuid';
import { toast } from 'svelte-sonner';
import { getContext, onMount, tick } from 'svelte';
import { goto } from '$app/navigation';
import { page } from '$app/stores';
import {
chatId,
chats,
config,
type Model,
modelfiles,
models,
settings,
showSidebar,
tags as _tags,
WEBUI_NAME
} from '$lib/stores';
import { convertMessagesToHistory, copyToClipboard, splitStream } from '$lib/utils';
import { cancelOllamaRequest, generateChatCompletion } from '$lib/apis/ollama';
import {
addTagById,
createNewChat,
deleteTagById,
getAllChatTags,
getChatById,
getChatList,
getTagsById,
updateChatById
} from '$lib/apis/chats';
import { generateOpenAIChatCompletion, generateTitle } from '$lib/apis/openai';
import MessageInput from '$lib/components/chat/MessageInput.svelte';
import Messages from '$lib/components/chat/Messages.svelte';
import Navbar from '$lib/components/layout/Navbar.svelte';
import {
LITELLM_API_BASE_URL,
OLLAMA_API_BASE_URL,
OPENAI_API_BASE_URL,
WEBUI_BASE_URL
} from '$lib/constants';
import { createOpenAITextStream } from '$lib/apis/streaming';
import { queryMemory } from '$lib/apis/memories';
import type { Writable } from 'svelte/store';
import type { i18n as i18nType } from 'i18next';
const i18n: Writable<i18nType> = getContext('i18n');
export let chatIdProp = '';
let loaded = false;
let stopResponseFlag = false;
let autoScroll = true;
let processing = '';
let messagesContainerElement: HTMLDivElement;
let currentRequestId = null;
let showModelSelector = true;
let selectedModels = [''];
let atSelectedModel: Model | undefined;
let selectedModelfile = null;
$: selectedModelfile =
selectedModels.length === 1 &&
$modelfiles.filter((modelfile) => modelfile.tagName === selectedModels[0]).length > 0
? $modelfiles.filter((modelfile) => modelfile.tagName === selectedModels[0])[0]
: null;
let selectedModelfiles = {};
$: selectedModelfiles = selectedModels.reduce((a, tagName, i, arr) => {
const modelfile =
$modelfiles.filter((modelfile) => modelfile.tagName === tagName)?.at(0) ?? undefined;
return {
...a,
...(modelfile && { [tagName]: modelfile })
};
}, {});
let chat = null;
let tags = [];
let title = '';
let prompt = '';
let files = [];
let messages = [];
let history = {
messages: {},
currentId: null
};
$: if (history.currentId !== null) {
let _messages = [];
let currentMessage = history.messages[history.currentId];
while (currentMessage !== null) {
_messages.unshift({ ...currentMessage });
currentMessage =
currentMessage.parentId !== null ? history.messages[currentMessage.parentId] : null;
}
messages = _messages;
} else {
messages = [];
}
$: if (chatIdProp) {
(async () => {
if (await loadChat()) {
await tick();
loaded = true;
window.setTimeout(() => scrollToBottom(), 0);
const chatInput = document.getElementById('chat-textarea');
chatInput?.focus();
} else {
await goto('/');
}
})();
}
onMount(async () => {
if (!chatId) {
await initNewChat();
} else {
if (!($settings.saveChatHistory ?? true)) {
await goto('/');
}
}
});
//////////////////////////
// Web functions
//////////////////////////
const initNewChat = async () => {
if (currentRequestId !== null) {
await cancelOllamaRequest(localStorage.token, currentRequestId);
currentRequestId = null;
}
window.history.replaceState(history.state, '', `/`);
await chatId.set('');
autoScroll = true;
title = '';
messages = [];
history = {
messages: {},
currentId: null
};
if ($page.url.searchParams.get('models')) {
selectedModels = $page.url.searchParams.get('models')?.split(',');
} else if ($settings?.models) {
selectedModels = $settings?.models;
} else if ($config?.default_models) {
selectedModels = $config?.default_models.split(',');
} else {
selectedModels = [''];
}
if ($page.url.searchParams.get('q')) {
prompt = $page.url.searchParams.get('q') ?? '';
if (prompt) {
await tick();
submitPrompt(prompt);
}
}
selectedModels = selectedModels.map((modelId) =>
$models.map((m) => m.id).includes(modelId) ? modelId : ''
);
let _settings = JSON.parse(localStorage.getItem('settings') ?? '{}');
settings.set({
..._settings
});
const chatInput = document.getElementById('chat-textarea');
setTimeout(() => chatInput?.focus(), 0);
};
const loadChat = async () => {
chatId.set(chatIdProp);
chat = await getChatById(localStorage.token, $chatId).catch(async (error) => {
await goto('/');
return null;
});
if (chat) {
tags = await getTags();
const chatContent = chat.chat;
if (chatContent) {
console.log(chatContent);
selectedModels =
(chatContent?.models ?? undefined) !== undefined
? chatContent.models
: [chatContent.models ?? ''];
history =
(chatContent?.history ?? undefined) !== undefined
? chatContent.history
: convertMessagesToHistory(chatContent.messages);
title = chatContent.title;
let _settings = JSON.parse(localStorage.getItem('settings') ?? '{}');
await settings.set({
..._settings,
system: chatContent.system ?? _settings.system,
options: chatContent.options ?? _settings.options
});
autoScroll = true;
await tick();
if (messages.length > 0) {
history.messages[messages.at(-1).id].done = true;
}
await tick();
return true;
} else {
return null;
}
}
};
const scrollToBottom = async () => {
await tick();
if (messagesContainerElement) {
messagesContainerElement.scrollTop = messagesContainerElement.scrollHeight;
}
};
//////////////////////////
// Ollama functions
//////////////////////////
const submitPrompt = async (userPrompt, _user = null) => {
console.log('submitPrompt', $chatId);
selectedModels = selectedModels.map((modelId) =>
$models.map((m) => m.id).includes(modelId) ? modelId : ''
);
if (selectedModels.includes('')) {
toast.error($i18n.t('Model not selected'));
} else if (messages.length != 0 && messages.at(-1).done != true) {
// Response not done
console.log('wait');
} else if (
files.length > 0 &&
files.filter((file) => file.upload_status === false).length > 0
) {
// Upload not done
toast.error(
$i18n.t(
`Oops! Hold tight! Your files are still in the processing oven. We're cooking them up to perfection. Please be patient and we'll let you know once they're ready.`
)
);
} else {
// Reset chat message textarea height
document.getElementById('chat-textarea').style.height = '';
// Create user message
let userMessageId = uuidv4();
let userMessage = {
id: userMessageId,
parentId: messages.length !== 0 ? messages.at(-1).id : null,
childrenIds: [],
role: 'user',
user: _user ?? undefined,
content: userPrompt,
files: files.length > 0 ? files : undefined,
timestamp: Math.floor(Date.now() / 1000), // Unix epoch
models: selectedModels.filter((m, mIdx) => selectedModels.indexOf(m) === mIdx)
};
// Add message to history and Set currentId to messageId
history.messages[userMessageId] = userMessage;
history.currentId = userMessageId;
// Append messageId to childrenIds of parent message
if (messages.length !== 0) {
history.messages[messages.at(-1).id].childrenIds.push(userMessageId);
}
// Wait until history/message have been updated
await tick();
// Create new chat if only one message in messages
if (messages.length == 1) {
if ($settings.saveChatHistory ?? true) {
chat = await createNewChat(localStorage.token, {
id: $chatId,
title: $i18n.t('New Chat'),
models: selectedModels,
system: $settings.system ?? undefined,
options: {
...($settings.options ?? {})
},
messages: messages,
history: history,
tags: [],
timestamp: Date.now()
});
await chats.set(await getChatList(localStorage.token));
await chatId.set(chat.id);
} else {
await chatId.set('local');
}
await tick();
}
// Reset chat input textarea
prompt = '';
files = [];
// Send prompt
await sendPrompt(userPrompt, userMessageId);
}
};
const sendPrompt = async (prompt, parentId, modelId = null) => {
const _chatId = JSON.parse(JSON.stringify($chatId));
await Promise.all(
(modelId
? [modelId]
: atSelectedModel !== undefined
? [atSelectedModel.id]
: selectedModels
).map(async (modelId) => {
console.log('modelId', modelId);
const model = $models.filter((m) => m.id === modelId).at(0);
if (model) {
// If there are image files, check if model is vision capable
const hasImages = messages.some((message) =>
message.files?.some((file) => file.type === 'image')
);
if (hasImages && !(model.custom_info?.params.vision_capable ?? true)) {
toast.error(
$i18n.t('Model {{modelName}} is not vision capable', {
modelName: model.custom_info?.name ?? model.name ?? model.id
})
);
}
// Create response message
let responseMessageId = uuidv4();
let responseMessage = {
parentId: parentId,
id: responseMessageId,
childrenIds: [],
role: 'assistant',
content: '',
model: model.id,
modelName: model.custom_info?.name ?? model.name ?? model.id,
userContext: null,
timestamp: Math.floor(Date.now() / 1000) // Unix epoch
};
// Add message to history and Set currentId to messageId
history.messages[responseMessageId] = responseMessage;
history.currentId = responseMessageId;
// Append messageId to childrenIds of parent message
if (parentId !== null) {
history.messages[parentId].childrenIds = [
...history.messages[parentId].childrenIds,
responseMessageId
];
}
await tick();
let userContext = null;
if ($settings?.memory ?? false) {
if (userContext === null) {
const res = await queryMemory(localStorage.token, prompt).catch((error) => {
toast.error(error);
return null;
});
if (res) {
if (res.documents[0].length > 0) {
userContext = res.documents.reduce((acc, doc, index) => {
const createdAtTimestamp = res.metadatas[index][0].created_at;
const createdAtDate = new Date(createdAtTimestamp * 1000)
.toISOString()
.split('T')[0];
acc.push(`${index + 1}. [${createdAtDate}]. ${doc[0]}`);
return acc;
}, []);
}
console.log(userContext);
}
}
}
responseMessage.userContext = userContext;
if (model?.external) {
await sendPromptOpenAI(model, prompt, responseMessageId, _chatId);
} else if (model) {
await sendPromptOllama(model, prompt, responseMessageId, _chatId);
}
} else {
toast.error($i18n.t(`Model {{modelId}} not found`, { modelId }));
}
})
);
await chats.set(await getChatList(localStorage.token));
};
const sendPromptOllama = async (model, userPrompt, responseMessageId, _chatId) => {
model = model.id;
const responseMessage = history.messages[responseMessageId];
// Wait until history/message have been updated
await tick();
// Scroll down
scrollToBottom();
const messagesBody = [
$settings.system || (responseMessage?.userContext ?? null)
? {
role: 'system',
content: `${$settings?.system ?? ''}${
responseMessage?.userContext ?? null
? `\n\nUser Context:\n${(responseMessage?.userContext ?? []).join('\n')}`
: ''
}`
}
: undefined,
...messages
]
.filter((message) => message)
.filter((message) => message.content != '')
.map((message, idx, arr) => {
// Prepare the base message object
const baseMessage = {
role: message.role,
content: arr.length - 2 !== idx ? message.content : message?.raContent ?? message.content
};
// Extract and format image URLs if any exist
const imageUrls = message.files
?.filter((file) => file.type === 'image')
.map((file) => file.url.slice(file.url.indexOf(',') + 1));
// Add images array only if it contains elements
if (imageUrls && imageUrls.length > 0 && message.role === 'user') {
baseMessage.images = imageUrls;
}
return baseMessage;
});
let lastImageIndex = -1;
// Find the index of the last object with images
messagesBody.forEach((item, index) => {
if (item.images) {
lastImageIndex = index;
}
});
// Remove images from all but the last one
messagesBody.forEach((item, index) => {
if (index !== lastImageIndex) {
delete item.images;
}
});
const docs = messages
.filter((message) => message?.files ?? null)
.map((message) =>
message.files.filter((item) => item.type === 'doc' || item.type === 'collection')
)
.flat(1);
const [res, controller] = await generateChatCompletion(localStorage.token, {
model: model,
messages: messagesBody,
options: {
...($settings.options ?? {}),
stop:
$settings?.options?.stop ?? undefined
? $settings.options.stop.map((str) =>
decodeURIComponent(JSON.parse('"' + str.replace(/\"/g, '\\"') + '"'))
)
: undefined
},
format: $settings.requestFormat ?? undefined,
keep_alive: $settings.keepAlive ?? undefined,
docs: docs.length > 0 ? docs : undefined,
citations: docs.length > 0
});
if (res && res.ok) {
console.log('controller', controller);
const reader = res.body
.pipeThrough(new TextDecoderStream())
.pipeThrough(splitStream('\n'))
.getReader();
while (true) {
const { value, done } = await reader.read();
if (done || stopResponseFlag || _chatId !== $chatId) {
responseMessage.done = true;
messages = messages;
if (stopResponseFlag) {
controller.abort('User: Stop Response');
await cancelOllamaRequest(localStorage.token, currentRequestId);
}
currentRequestId = null;
break;
}
try {
let lines = value.split('\n');
for (const line of lines) {
if (line !== '') {
console.log(line);
let data = JSON.parse(line);
if ('citations' in data) {
responseMessage.citations = data.citations;
continue;
}
if ('detail' in data) {
throw data;
}
if ('id' in data) {
console.log(data);
currentRequestId = data.id;
} else {
if (data.done == false) {
if (responseMessage.content == '' && data.message.content == '\n') {
continue;
} else {
responseMessage.content += data.message.content;
messages = messages;
}
} else {
responseMessage.done = true;
if (responseMessage.content == '') {
responseMessage.error = true;
responseMessage.content =
'Oops! No text generated from Ollama, Please try again.';
}
responseMessage.context = data.context ?? null;
responseMessage.info = {
total_duration: data.total_duration,
load_duration: data.load_duration,
sample_count: data.sample_count,
sample_duration: data.sample_duration,
prompt_eval_count: data.prompt_eval_count,
prompt_eval_duration: data.prompt_eval_duration,
eval_count: data.eval_count,
eval_duration: data.eval_duration
};
messages = messages;
if ($settings.notificationEnabled && !document.hasFocus()) {
const notification = new Notification(
selectedModelfile
? `${
selectedModelfile.title.charAt(0).toUpperCase() +
selectedModelfile.title.slice(1)
}`
: `${model}`,
{
body: responseMessage.content,
icon: selectedModelfile?.imageUrl ?? `${WEBUI_BASE_URL}/static/favicon.png`
}
);
}
if ($settings.responseAutoCopy) {
copyToClipboard(responseMessage.content);
}
if ($settings.responseAutoPlayback) {
await tick();
document.getElementById(`speak-button-${responseMessage.id}`)?.click();
}
}
}
}
}
} catch (error) {
console.log(error);
if ('detail' in error) {
toast.error(error.detail);
}
break;
}
if (autoScroll) {
scrollToBottom();
}
}
if ($chatId == _chatId) {
if ($settings.saveChatHistory ?? true) {
chat = await updateChatById(localStorage.token, _chatId, {
messages: messages,
history: history
});
await chats.set(await getChatList(localStorage.token));
}
}
} else {
if (res !== null) {
const error = await res.json();
console.log(error);
if ('detail' in error) {
toast.error(error.detail);
responseMessage.content = error.detail;
} else {
toast.error(error.error);
responseMessage.content = error.error;
}
} else {
toast.error(
$i18n.t(`Uh-oh! There was an issue connecting to {{provider}}.`, { provider: 'Ollama' })
);
responseMessage.content = $i18n.t(`Uh-oh! There was an issue connecting to {{provider}}.`, {
provider: 'Ollama'
});
}
responseMessage.error = true;
responseMessage.content = $i18n.t(`Uh-oh! There was an issue connecting to {{provider}}.`, {
provider: 'Ollama'
});
responseMessage.done = true;
messages = messages;
}
stopResponseFlag = false;
await tick();
if (autoScroll) {
scrollToBottom();
}
if (messages.length == 2 && messages.at(1).content !== '') {
window.history.replaceState(history.state, '', `/c/${_chatId}`);
const _title = await generateChatTitle(userPrompt);
await setChatTitle(_chatId, _title);
}
};
const sendPromptOpenAI = async (model, userPrompt, responseMessageId, _chatId) => {
const responseMessage = history.messages[responseMessageId];
const docs = messages
.filter((message) => message?.files ?? null)
.map((message) =>
message.files.filter((item) => item.type === 'doc' || item.type === 'collection')
)
.flat(1);
console.log(docs);
scrollToBottom();
try {
const [res, controller] = await generateOpenAIChatCompletion(
localStorage.token,
{
model: model.id,
stream: true,
messages: [
$settings.system || (responseMessage?.userContext ?? null)
? {
role: 'system',
content: `${$settings?.system ?? ''}${
responseMessage?.userContext ?? null
? `\n\nUser Context:\n${(responseMessage?.userContext ?? []).join('\n')}`
: ''
}`
}
: undefined,
...messages
]
.filter((message) => message)
.map((message, idx, arr) => ({
role: message.role,
...((message.files?.filter((file) => file.type === 'image').length > 0 ?? false) &&
message.role === 'user'
? {
content: [
{
type: 'text',
text:
arr.length - 1 !== idx
? message.content
: message?.raContent ?? message.content
},
...message.files
.filter((file) => file.type === 'image')
.map((file) => ({
type: 'image_url',
image_url: {
url: file.url
}
}))
]
}
: {
content:
arr.length - 1 !== idx
? message.content
: message?.raContent ?? message.content
})
})),
seed: $settings?.options?.seed ?? undefined,
stop:
$settings?.options?.stop ?? undefined
? $settings.options.stop.map((str) =>
decodeURIComponent(JSON.parse('"' + str.replace(/\"/g, '\\"') + '"'))
)
: undefined,
temperature: $settings?.options?.temperature ?? undefined,
top_p: $settings?.options?.top_p ?? undefined,
num_ctx: $settings?.options?.num_ctx ?? undefined,
frequency_penalty: $settings?.options?.repeat_penalty ?? undefined,
max_tokens: $settings?.options?.num_predict ?? undefined,
docs: docs.length > 0 ? docs : undefined,
citations: docs.length > 0
},
model?.source?.toLowerCase() === 'litellm'
? `${LITELLM_API_BASE_URL}/v1`
: `${OPENAI_API_BASE_URL}`
);
// Wait until history/message have been updated
await tick();
scrollToBottom();
if (res && res.ok && res.body) {
const textStream = await createOpenAITextStream(res.body, $settings.splitLargeChunks);
for await (const update of textStream) {
const { value, done, citations, error } = update;
if (error) {
await handleOpenAIError(error, null, model, responseMessage);
break;
}
if (done || stopResponseFlag || _chatId !== $chatId) {
responseMessage.done = true;
messages = messages;
if (stopResponseFlag) {
controller.abort('User: Stop Response');
}
break;
}
if (citations) {
responseMessage.citations = citations;
continue;
}
if (responseMessage.content == '' && value == '\n') {
continue;
} else {
responseMessage.content += value;
messages = messages;
}
if ($settings.notificationEnabled && !document.hasFocus()) {
const notification = new Notification(`OpenAI ${model}`, {
body: responseMessage.content,
icon: `${WEBUI_BASE_URL}/static/favicon.png`
});
}
if ($settings.responseAutoCopy) {
copyToClipboard(responseMessage.content);
}
if ($settings.responseAutoPlayback) {
await tick();
document.getElementById(`speak-button-${responseMessage.id}`)?.click();
}
if (autoScroll) {
scrollToBottom();
}
}
if ($chatId == _chatId) {
if ($settings.saveChatHistory ?? true) {
chat = await updateChatById(localStorage.token, _chatId, {
messages: messages,
history: history
});
await chats.set(await getChatList(localStorage.token));
}
}
} else {
await handleOpenAIError(null, res, model, responseMessage);
}
} catch (error) {
await handleOpenAIError(error, null, model, responseMessage);
}
messages = messages;
stopResponseFlag = false;
await tick();
if (autoScroll) {
scrollToBottom();
}
if (messages.length == 2) {
window.history.replaceState(history.state, '', `/c/${_chatId}`);
const _title = await generateChatTitle(userPrompt);
await setChatTitle(_chatId, _title);
}
};
const handleOpenAIError = async (error, res: Response | null, model, responseMessage) => {
let errorMessage = '';
let innerError;
if (error) {
innerError = error;
} else if (res !== null) {
innerError = await res.json();
}
console.error(innerError);
if ('detail' in innerError) {
toast.error(innerError.detail);
errorMessage = innerError.detail;
} else if ('error' in innerError) {
if ('message' in innerError.error) {
toast.error(innerError.error.message);
errorMessage = innerError.error.message;
} else {
toast.error(innerError.error);
errorMessage = innerError.error;
}
} else if ('message' in innerError) {
toast.error(innerError.message);
errorMessage = innerError.message;
}
responseMessage.error = true;
responseMessage.content =
$i18n.t(`Uh-oh! There was an issue connecting to {{provider}}.`, {
provider: model.custom_info?.name ?? model.name ?? model.id
}) +
'\n' +
errorMessage;
responseMessage.done = true;
messages = messages;
};
const stopResponse = () => {
stopResponseFlag = true;
console.log('stopResponse');
};
const regenerateResponse = async (message) => {
console.log('regenerateResponse');
if (messages.length != 0) {
let userMessage = history.messages[message.parentId];
let userPrompt = userMessage.content;
if ((userMessage?.models ?? [...selectedModels]).length == 1) {
await sendPrompt(userPrompt, userMessage.id);
} else {
await sendPrompt(userPrompt, userMessage.id, message.model);
}
}
};
const continueGeneration = async () => {
console.log('continueGeneration');
const _chatId = JSON.parse(JSON.stringify($chatId));
if (messages.length != 0 && messages.at(-1).done == true) {
const responseMessage = history.messages[history.currentId];
responseMessage.done = false;
await tick();
const model = $models.filter((m) => m.id === responseMessage.model).at(0);
if (model) {
if (model?.external) {
await sendPromptOpenAI(
model,
history.messages[responseMessage.parentId].content,
responseMessage.id,
_chatId
);
} else
await sendPromptOllama(
model,
history.messages[responseMessage.parentId].content,
responseMessage.id,
_chatId
);
}
} else {
toast.error($i18n.t(`Model {{modelId}} not found`, { modelId }));
}
};
const generateChatTitle = async (userPrompt) => {
if ($settings?.title?.auto ?? true) {
const model = $models.find((model) => model.id === selectedModels[0]);
const titleModelId =
model?.external ?? false
? $settings?.title?.modelExternal ?? selectedModels[0]
: $settings?.title?.model ?? selectedModels[0];
const titleModel = $models.find((model) => model.id === titleModelId);
console.log(titleModel);
const title = await generateTitle(
localStorage.token,
$settings?.title?.prompt ??
$i18n.t(
"Create a concise, 3-5 word phrase as a header for the following query, strictly adhering to the 3-5 word limit and avoiding the use of the word 'title':"
) + ' {{prompt}}',
titleModelId,
userPrompt,
titleModel?.external ?? false
? titleModel?.source?.toLowerCase() === 'litellm'
? `${LITELLM_API_BASE_URL}/v1`
: `${OPENAI_API_BASE_URL}`
: `${OLLAMA_API_BASE_URL}/v1`
);
return title;
} else {
return `${userPrompt}`;
}
};
const setChatTitle = async (_chatId, _title) => {
if (_chatId === $chatId) {
title = _title;
}
if ($settings.saveChatHistory ?? true) {
chat = await updateChatById(localStorage.token, _chatId, { title: _title });
await chats.set(await getChatList(localStorage.token));
}
};
const getTags = async () => {
return await getTagsById(localStorage.token, $chatId).catch(async (error) => {
return [];
});
};
const addTag = async (tagName) => {
const res = await addTagById(localStorage.token, $chatId, tagName);
tags = await getTags();
chat = await updateChatById(localStorage.token, $chatId, {
tags: tags
});
_tags.set(await getAllChatTags(localStorage.token));
};
const deleteTag = async (tagName) => {
const res = await deleteTagById(localStorage.token, $chatId, tagName);
tags = await getTags();
chat = await updateChatById(localStorage.token, $chatId, {
tags: tags
});
_tags.set(await getAllChatTags(localStorage.token));
};
</script>
<svelte:head>
<title>
{title
? `${title.length > 30 ? `${title.slice(0, 30)}...` : title} | ${$WEBUI_NAME}`
: `${$WEBUI_NAME}`}
</title>
</svelte:head>
{#if !chatIdProp || (loaded && chatIdProp)}
<div
class="min-h-screen max-h-screen {$showSidebar
? 'md:max-w-[calc(100%-260px)]'
: ''} w-full max-w-full flex flex-col"
>
<Navbar
{title}
bind:selectedModels
bind:showModelSelector
shareEnabled={messages.length > 0}
{chat}
{initNewChat}
/>
<div class="flex flex-col flex-auto">
<div
class=" pb-2.5 flex flex-col justify-between w-full flex-auto overflow-auto h-0 max-w-full"
id="messages-container"
bind:this={messagesContainerElement}
on:scroll={(e) => {
autoScroll =
messagesContainerElement.scrollHeight - messagesContainerElement.scrollTop <=
messagesContainerElement.clientHeight + 5;
}}
>
<div class=" h-full w-full flex flex-col {chatIdProp ? 'py-4' : 'pt-2 pb-4'}">
<Messages
chatId={$chatId}
{selectedModels}
{selectedModelfiles}
{processing}
bind:history
bind:messages
bind:autoScroll
bind:prompt
bottomPadding={files.length > 0}
suggestionPrompts={chatIdProp
? []
: selectedModelfile?.suggestionPrompts ?? $config.default_prompt_suggestions}
{sendPrompt}
{continueGeneration}
{regenerateResponse}
/>
</div>
</div>
</div>
</div>
<MessageInput
bind:files
bind:prompt
bind:autoScroll
bind:selectedModel={atSelectedModel}
{selectedModels}
{messages}
{submitPrompt}
{stopResponse}
/>
{/if}
......@@ -101,7 +101,7 @@
try {
const micropip = pyodide.pyimport('micropip');
await micropip.set_index_urls('https://pypi.org/pypi/{package_name}/json');
// await micropip.set_index_urls('https://pypi.org/pypi/{package_name}/json');
let packages = [
code.includes('requests') ? 'requests' : null,
......@@ -213,7 +213,7 @@ __builtins__.input = input`);
<div class="p-1">{@html lang}</div>
<div class="flex items-center">
{#if ['', 'python'].includes(lang) && (lang === 'python' || checkPythonCode(code))}
{#if lang === 'python' || (lang === '' && checkPythonCode(code))}
{#if executing}
<div class="copy-code-button bg-none border-none p-1 cursor-not-allowed">Running</div>
{:else}
......
......@@ -41,6 +41,44 @@
};
}, {});
const showPreviousMessage = (model) => {
groupedMessagesIdx[model] = Math.max(0, groupedMessagesIdx[model] - 1);
let messageId = groupedMessages[model].messages[groupedMessagesIdx[model]].id;
console.log(messageId);
let messageChildrenIds = history.messages[messageId].childrenIds;
while (messageChildrenIds.length !== 0) {
messageId = messageChildrenIds.at(-1);
messageChildrenIds = history.messages[messageId].childrenIds;
}
history.currentId = messageId;
dispatch('change');
};
const showNextMessage = (model) => {
groupedMessagesIdx[model] = Math.min(
groupedMessages[model].messages.length - 1,
groupedMessagesIdx[model] + 1
);
let messageId = groupedMessages[model].messages[groupedMessagesIdx[model]].id;
console.log(messageId);
let messageChildrenIds = history.messages[messageId].childrenIds;
while (messageChildrenIds.length !== 0) {
messageId = messageChildrenIds.at(-1);
messageChildrenIds = history.messages[messageId].childrenIds;
}
history.currentId = messageId;
dispatch('change');
};
onMount(async () => {
await tick();
currentMessageId = messages[messageIdx].id;
......@@ -97,42 +135,8 @@
isLastMessage={true}
{updateChatMessages}
{confirmEditResponseMessage}
showPreviousMessage={() => {
groupedMessagesIdx[model] = Math.max(0, groupedMessagesIdx[model] - 1);
let messageId = groupedMessages[model].messages[groupedMessagesIdx[model]].id;
console.log(messageId);
let messageChildrenIds = history.messages[messageId].childrenIds;
while (messageChildrenIds.length !== 0) {
messageId = messageChildrenIds.at(-1);
messageChildrenIds = history.messages[messageId].childrenIds;
}
history.currentId = messageId;
dispatch('change');
}}
showNextMessage={() => {
groupedMessagesIdx[model] = Math.min(
groupedMessages[model].messages.length - 1,
groupedMessagesIdx[model] + 1
);
let messageId = groupedMessages[model].messages[groupedMessagesIdx[model]].id;
console.log(messageId);
let messageChildrenIds = history.messages[messageId].childrenIds;
while (messageChildrenIds.length !== 0) {
messageId = messageChildrenIds.at(-1);
messageChildrenIds = history.messages[messageId].childrenIds;
}
history.currentId = messageId;
dispatch('change');
}}
showPreviousMessage={() => showPreviousMessage(model)}
showNextMessage={() => showNextMessage(model)}
{rateMessage}
{copyToClipboard}
{continueGeneration}
......
......@@ -10,7 +10,8 @@
crossorigin="anonymous"
src={src.startsWith(WEBUI_BASE_URL) ||
src.startsWith('https://www.gravatar.com/avatar/') ||
src.startsWith('data:')
src.startsWith('data:') ||
src.startsWith('/')
? src
: `/user.png`}
class=" w-8 object-cover rounded-full"
......
......@@ -391,7 +391,7 @@
<div class=" mt-2 mb-1 flex justify-end space-x-1.5 text-sm font-medium">
<button
id="close-edit-message-button"
class=" px-4 py-2 bg-gray-900 hover:bg-gray-850 text-gray-100 transition rounded-3xl"
class="px-4 py-2 bg-white hover:bg-gray-100 text-gray-800 transition rounded-3xl"
on:click={() => {
cancelEditMessage();
}}
......@@ -401,7 +401,7 @@
<button
id="save-edit-message-button"
class="px-4 py-2 bg-white hover:bg-gray-100 text-gray-800 transition rounded-3xl"
class=" px-4 py-2 bg-gray-900 hover:bg-gray-850 text-gray-100 transition rounded-3xl"
on:click={() => {
editMessageConfirmHandler();
}}
......
......@@ -201,7 +201,7 @@
<div class=" mt-2 mb-1 flex justify-end space-x-1.5 text-sm font-medium">
<button
id="close-edit-message-button"
class=" px-4 py-2 bg-gray-900 hover:bg-gray-850 text-gray-100 transition rounded-3xl"
class="px-4 py-2 bg-white hover:bg-gray-100 text-gray-800 transition rounded-3xl"
on:click={() => {
cancelEditMessage();
}}
......@@ -211,7 +211,7 @@
<button
id="save-edit-message-button"
class="px-4 py-2 bg-white hover:bg-gray-100 text-gray-800 transition rounded-3xl"
class=" px-4 py-2 bg-gray-900 hover:bg-gray-850 text-gray-100 transition rounded-3xl"
on:click={() => {
editMessageConfirmHandler();
}}
......
......@@ -54,7 +54,7 @@
class=" flex flex-col w-full sm:flex-row sm:justify-center sm:space-x-6 h-[28rem] max-h-screen outline outline-1 rounded-xl outline-gray-100 dark:outline-gray-800 mb-4 mt-1"
>
{#if memories.length > 0}
<div class="text-left text-sm w-full mb-4 max-h-[22rem] overflow-y-scroll">
<div class="text-left text-sm w-full mb-4 overflow-y-scroll">
<div class="relative overflow-x-auto">
<table class="w-full text-sm text-left text-gray-600 dark:text-gray-400 table-auto">
<thead
......
......@@ -19,5 +19,5 @@
showImagePreview = true;
}}
>
<img src={_src} {alt} class=" max-h-96 rounded-lg" draggable="false" />
<img src={_src} {alt} class=" max-h-96 rounded-lg" draggable="false" data-cy="image" />
</button>
......@@ -86,7 +86,9 @@ export const SUPPORTED_FILE_EXTENSIONS = [
'csv',
'txt',
'xls',
'xlsx'
'xlsx',
'pptx',
'ppt'
];
// Source: https://kit.svelte.dev/docs/modules#$env-static-public
......
{
"'s', 'm', 'h', 'd', 'w' or '-1' for no expiration.": "",
"'s', 'm', 'h', 'd', 'w' or '-1' for no expiration.": "'s', 'm', 'h', 'd', 'w' أو '-1' لا توجد انتهاء",
"(Beta)": "(تجريبي)",
"(e.g. `sh webui.sh --api`)": "( `sh webui.sh --api`مثال)",
"(latest)": "(الأخير)",
"{{modelName}} is thinking...": "{{modelName}} ...يفكر",
"{{user}}'s Chats": "{{user}}' الدردشات",
"{{user}}'s Chats": "دردشات {{user}}",
"{{webUIName}} Backend Required": "{{webUIName}} مطلوب",
"A selected model does not support image input": "",
"a user": "المستخدم",
"a user": "مستخدم",
"About": "عن",
"Account": "الحساب",
"Accurate information": "معلومات دقيقة",
"Add": "",
"Add a model": "أضافة موديل",
"Add a model tag name": "ضع تاق للأسم الموديل",
"Add": "أضف",
"Add a model": "أضف موديل",
"Add a model tag name": "ضع علامة للأسم الموديل",
"Add a short description about what this modelfile does": "أضف وصفًا قصيرًا حول ما يفعله ملف الموديل هذا",
"Add a short title for this prompt": "أضف عنوانًا قصيرًا لبداء المحادثة",
"Add a tag": "أضافة تاق",
"Add custom prompt": "أضافة مطالبة مخصصه",
"Add Docs": "إضافة المستندات",
"Add Files": "إضافة ملفات",
"Add Memory": "",
"Add Memory": "إضافة ذكرايات",
"Add message": "اضافة رسالة",
"Add Model": "اضافة موديل",
"Add Tags": "اضافة تاق",
......@@ -40,11 +40,11 @@
"Already have an account?": "هل تملك حساب ؟",
"an assistant": "مساعد",
"and": "و",
"and create a new shared link.": "",
"and create a new shared link.": "و أنشئ رابط مشترك جديد.",
"API Base URL": "API الرابط الرئيسي",
"API Key": "API مفتاح",
"API Key created.": "API تم أنشاء المفتاح",
"API keys": "API المفاتيح",
"API keys": "مفاتيح واجهة برمجة التطبيقات",
"API RPM": "API RPM",
"April": "أبريل",
"Archive": "الأرشيف",
......@@ -65,13 +65,13 @@
"before": "قبل",
"Being lazy": "كون كسول",
"Builder Mode": "بناء الموديل",
"Bypass SSL verification for Websites": "",
"Bypass SSL verification for Websites": "تجاوز التحقق من SSL للموقع",
"Cancel": "اللغاء",
"Categories": "التصنيفات",
"Change Password": "تغير الباسورد",
"Chat": "المحادثة",
"Chat Bubble UI": "",
"Chat direction": "",
"Chat Bubble UI": "UI الدردشة",
"Chat direction": "اتجاه المحادثة",
"Chat History": "تاريخ المحادثة",
"Chat History is off for this browser.": "سجل الدردشة معطل لهذا المتصفح",
"Chats": "المحادثات",
......@@ -166,7 +166,7 @@
"Edit Doc": "تعديل الملف",
"Edit User": "تعديل المستخدم",
"Email": "البريد",
"Embedding Model": "",
"Embedding Model": "نموذج التضمين",
"Embedding Model Engine": "تضمين محرك النموذج",
"Embedding model set to \"{{embedding_model}}\"": "تم تعيين نموذج التضمين على \"{{embedding_model}}\"",
"Enable Chat History": "تمكين سجل الدردشة",
......@@ -174,8 +174,8 @@
"Enabled": "تفعيل",
"Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "تأكد من أن ملف CSV الخاص بك يتضمن 4 أعمدة بهذا الترتيب: Name, Email, Password, Role.",
"Enter {{role}} message here": "أدخل رسالة {{role}} هنا",
"Enter a detail about yourself for your LLMs to recall": "",
"Enter Chunk Overlap": "أدخل Chunk المتداخل",
"Enter a detail about yourself for your LLMs to recall": "ادخل معلومات عنك تريد أن يتذكرها الموديل",
"Enter Chunk Overlap": "أدخل الChunk Overlap",
"Enter Chunk Size": "أدخل Chunk الحجم",
"Enter Image Size (e.g. 512x512)": "(e.g. 512x512) أدخل حجم الصورة ",
"Enter language codes": "أدخل كود اللغة",
......@@ -189,9 +189,9 @@
"Enter Number of Steps (e.g. 50)": "(e.g. 50) أدخل عدد الخطوات",
"Enter Score": "أدخل النتيجة",
"Enter stop sequence": "أدخل تسلسل التوقف",
"Enter Top K": "Enter Top K",
"Enter Top K": "أدخل Top K",
"Enter URL (e.g. http://127.0.0.1:7860/)": "الرابط (e.g. http://127.0.0.1:7860/)",
"Enter URL (e.g. http://localhost:11434)": "",
"Enter URL (e.g. http://localhost:11434)": "URL (e.g. http://localhost:11434)",
"Enter Your Email": "أدخل البريد الاكتروني",
"Enter Your Full Name": "أدخل الاسم كامل",
"Enter Your Password": "ادخل كلمة المرور",
......@@ -219,7 +219,7 @@
"General Settings": "الاعدادات العامة",
"Generation Info": "معلومات الجيل",
"Good Response": "استجابة جيدة",
"h:mm a": "",
"h:mm a": "الساعة:الدقائق صباحا/مساء",
"has no conversations.": "ليس لديه محادثات.",
"Hello, {{name}}": " {{name}} مرحبا",
"Help": "مساعدة",
......@@ -254,30 +254,30 @@
"Light": "فاتح",
"Listening...": "جاري الاستماع",
"LLMs can make mistakes. Verify important information.": "يمكن أن تصدر بعض الأخطاء. لذلك يجب التحقق من المعلومات المهمة",
"LTR": "",
"LTR": "من جهة اليسار إلى اليمين",
"Made by OpenWebUI Community": "OpenWebUI تم إنشاؤه بواسطة مجتمع ",
"Make sure to enclose them with": "تأكد من إرفاقها",
"Manage LiteLLM Models": "LiteLLM إدارة نماذج ",
"Manage Model Information": "",
"Manage Models": "إدارة النماذج",
"Manage Ollama Models": "Ollama إدارة موديلات ",
"March": "",
"March": "مارس",
"Max Tokens": "Max Tokens",
"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "يمكن تنزيل 3 نماذج كحد أقصى في وقت واحد. الرجاء معاودة المحاولة في وقت لاحق.",
"May": "",
"May": "مايو",
"Memories accessible by LLMs will be shown here.": "",
"Memory": "",
"Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "",
"Memory": "الذاكرة",
"Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "لن تتم مشاركة الرسائل التي ترسلها بعد إنشاء الرابط الخاص بك. سيتمكن المستخدمون الذين لديهم عنوان URL من عرض الدردشة المشتركة",
"Minimum Score": "الحد الأدنى من النقاط",
"Mirostat": "Mirostat",
"Mirostat Eta": "Mirostat Eta",
"Mirostat Tau": "Mirostat Tau",
"MMMM DD, YYYY": "MMMM DD, YYYY",
"MMMM DD, YYYY HH:mm": "MMMM DD, YYYY HH:mm",
"Model '{{modelName}}' has been successfully downloaded.": "موديل '{{modelName}}'تم تحميله بنجاح",
"Model '{{modelTag}}' is already in queue for downloading.": "موديل '{{modelTag}}' جاري تحميلة الرجاء الانتظار",
"Model {{modelId}} not found": "موديل {{modelId}} لم يوجد",
"Model {{modelName}} already exists.": "موجود {{modelName}} موديل ",
"Model '{{modelName}}' has been successfully downloaded.": "تم تحميل النموذج '{{modelName}}' بنجاح",
"Model '{{modelTag}}' is already in queue for downloading.": "النموذج '{{modelTag}}' موجود بالفعل في قائمة الانتظار للتحميل",
"Model {{modelId}} not found": "لم يتم العثور على النموذج {{modelId}}.",
"Model {{modelName}} already exists.": "موجود {{modelName}} موديل بالفعل",
"Model {{modelName}} is not vision capable": "",
"Model Description": "",
"Model Display Name": "",
......@@ -340,7 +340,7 @@
"PDF Extract Images (OCR)": "PDF أستخرج الصور (OCR)",
"pending": "قيد الانتظار",
"Permission denied when accessing microphone: {{error}}": "{{error}} تم رفض الإذن عند الوصول إلى الميكروفون ",
"Personalization": "",
"Personalization": "التخصيص",
"Plain text (.txt)": "نص عادي (.txt)",
"Playground": "مكان التجربة",
"Positive attitude": "موقف ايجابي",
......@@ -370,7 +370,7 @@
"Repeat Last N": "N كرر آخر",
"Repeat Penalty": "كرر المخالفة",
"Request Mode": "وضع الطلب",
"Reranking Model": "",
"Reranking Model": "إعادة تقييم النموذج",
"Reranking model disabled": "تم تعطيل نموذج إعادة الترتيب",
"Reranking model set to \"{{reranking_model}}\"": "تم ضبط نموذج إعادة الترتيب على \"{{reranking_model}}\"",
"Reset Vector Storage": "إعادة تعيين تخزين المتجهات",
......@@ -378,7 +378,7 @@
"Role": "منصب",
"Rosé Pine": "Rosé Pine",
"Rosé Pine Dawn": "Rosé Pine Dawn",
"RTL": "",
"RTL": "من اليمين إلى اليسار",
"Save": "حفظ",
"Save & Create": "حفظ وإنشاء",
"Save & Update": "حفظ وتحديث",
......@@ -398,17 +398,17 @@
"Select an Ollama instance": "أختار سيرفر ",
"Select model": " أختار موديل",
"Selected models do not support image inputs": "",
"Send": "",
"Send": "تم",
"Send a Message": "يُرجى إدخال طلبك هنا",
"Send message": "يُرجى إدخال طلبك هنا.",
"September": "سبتمبر",
"Server connection verified": "تم التحقق من اتصال الخادم",
"Set as default": "الافتراضي",
"Set Default Model": "تفعيد الموديل الافتراضي",
"Set embedding model (e.g. {{model}})": "",
"Set embedding model (e.g. {{model}})": "ضبط نموذج المتجهات (على سبيل المثال: {{model}})",
"Set Image Size": "حجم الصورة",
"Set Model": "ضبط النموذج",
"Set reranking model (e.g. {{model}})": "",
"Set reranking model (e.g. {{model}})": "ضبط نموذج إعادة الترتيب (على سبيل المثال: {{model}})",
"Set Steps": "ضبط الخطوات",
"Set Title Auto-Generation Model": "قم بتعيين نموذج إنشاء العنوان تلقائيًا",
"Set Voice": "ضبط الصوت",
......@@ -493,8 +493,8 @@
"Version": "إصدار",
"Warning: If you update or change your embedding model, you will need to re-import all documents.": "تحذير: إذا قمت بتحديث أو تغيير نموذج التضمين الخاص بك، فستحتاج إلى إعادة استيراد كافة المستندات.",
"Web": "Web",
"Web Loader Settings": "",
"Web Params": "",
"Web Loader Settings": "Web تحميل اعدادات",
"Web Params": "Web تحميل اعدادات",
"Webhook URL": "Webhook الرابط",
"WebUI Add-ons": "WebUI الأضافات",
"WebUI Settings": "WebUI اعدادات",
......@@ -502,16 +502,16 @@
"What’s New in": "ما هو الجديد",
"When history is turned off, new chats on this browser won't appear in your history on any of your devices.": "عند إيقاف تشغيل السجل، لن تظهر الدردشات الجديدة على هذا المتصفح في سجلك على أي من أجهزتك.",
"Whisper (Local)": "Whisper (Local)",
"Workspace": "",
"Workspace": "مساحة العمل",
"Write a prompt suggestion (e.g. Who are you?)": "اكتب اقتراحًا سريعًا (على سبيل المثال، من أنت؟)",
"Write a summary in 50 words that summarizes [topic or keyword].": "اكتب ملخصًا في 50 كلمة يلخص [الموضوع أو الكلمة الرئيسية]",
"Yes": "",
"Yesterday": "أمس",
"You": "",
"You": "انت",
"You have no archived conversations.": "لا تملك محادثات محفوظه",
"You have shared this chat": "تم مشاركة هذه المحادثة",
"You're a helpful assistant.": "مساعدك المفيد هنا",
"You're now logged in.": "لقد قمت الآن بتسجيل الدخول.",
"Youtube": "Youtube",
"Youtube Loader Settings": ""
"Youtube Loader Settings": "Youtube تحميل اعدادات"
}
......@@ -4,14 +4,14 @@
"(e.g. `sh webui.sh --api`)": "(например `sh webui.sh --api`)",
"(latest)": "(последна)",
"{{modelName}} is thinking...": "{{modelName}} мисли ...",
"{{user}}'s Chats": "",
"{{user}}'s Chats": "{{user}}'s чатове",
"{{webUIName}} Backend Required": "{{webUIName}} Изисква се Бекенд",
"A selected model does not support image input": "",
"a user": "потребител",
"About": "Относно",
"Account": "Акаунт",
"Accurate information": "",
"Add": "",
"Accurate information": "Точни информация",
"Add": "Добавяне",
"Add a model": "Добавяне на модел",
"Add a model tag name": "Добавяне на име на таг за модел",
"Add a short description about what this modelfile does": "Добавяне на кратко описание за това какво прави този модфайл",
......@@ -20,18 +20,18 @@
"Add custom prompt": "Добавяне на собствен промпт",
"Add Docs": "Добавяне на Документи",
"Add Files": "Добавяне на Файлове",
"Add Memory": "",
"Add Memory": "Добавяне на Памет",
"Add message": "Добавяне на съобщение",
"Add Model": "",
"Add Model": "Добавяне на Модел",
"Add Tags": "добавяне на тагове",
"Add User": "",
"Add User": "Добавяне на потребител",
"Adjusting these settings will apply changes universally to all users.": "При промяна на тези настройки промените се прилагат за всички потребители.",
"admin": "админ",
"Admin Panel": "Панел на Администратор",
"Admin Settings": "Настройки на Администратор",
"Advanced Parameters": "Разширени Параметри",
"all": "всички",
"All Documents": "",
"All Documents": "Всички Документи",
"All selected models do not support image input, removed images": "",
"All Users": "Всички Потребители",
"Allow": "Позволи",
......@@ -40,38 +40,38 @@
"Already have an account?": "Вече имате акаунт? ",
"an assistant": "асистент",
"and": "и",
"and create a new shared link.": "",
"and create a new shared link.": "и създай нов общ линк.",
"API Base URL": "API Базов URL",
"API Key": "API Ключ",
"API Key created.": "",
"API keys": "",
"API Key created.": "API Ключ създаден.",
"API keys": "API Ключове",
"API RPM": "API RPM",
"April": "",
"Archive": "",
"Archived Chats": "",
"April": "Април",
"Archive": "Архивирани Чатове",
"Archived Chats": "Архивирани Чатове",
"are allowed - Activate this command by typing": "са разрешени - Активирайте тази команда чрез въвеждане",
"Are you sure?": "Сигурни ли сте?",
"Attach file": "Прикачване на файл",
"Attention to detail": "",
"Attention to detail": "Внимание към детайлите",
"Audio": "Аудио",
"August": "",
"August": "Август",
"Auto-playback response": "Аувтоматично възпроизвеждане на Отговора",
"Auto-send input after 3 sec.": "Аувтоматично изпращане на входа след 3 сек.",
"AUTOMATIC1111 Base URL": "AUTOMATIC1111 Базов URL",
"AUTOMATIC1111 Base URL is required.": "AUTOMATIC1111 Базов URL е задължителен.",
"available!": "наличен!",
"Back": "Назад",
"Bad Response": "",
"before": "",
"Being lazy": "",
"Bad Response": "Невалиден отговор от API",
"before": "преди",
"Being lazy": "Да бъдеш мързелив",
"Builder Mode": "Режим на Създаване",
"Bypass SSL verification for Websites": "",
"Bypass SSL verification for Websites": "Изключване на SSL проверката за сайтове",
"Cancel": "Отказ",
"Categories": "Категории",
"Change Password": "Промяна на Парола",
"Chat": "Чат",
"Chat Bubble UI": "",
"Chat direction": "",
"Chat Bubble UI": "UI за чат бублон",
"Chat direction": "Направление на чата",
"Chat History": "Чат История",
"Chat History is off for this browser.": "Чат История е изключен за този браузър.",
"Chats": "Чатове",
......@@ -84,66 +84,66 @@
"Chunk Size": "Chunk Size",
"Citation": "Цитат",
"Click here for help.": "Натиснете тук за помощ.",
"Click here to": "",
"Click here to": "Натиснете тук за",
"Click here to check other modelfiles.": "Натиснете тук за проверка на други моделфайлове.",
"Click here to select": "Натиснете тук, за да изберете",
"Click here to select a csv file.": "",
"Click here to select a csv file.": "Натиснете тук, за да изберете csv файл.",
"Click here to select documents.": "Натиснете тук, за да изберете документи.",
"click here.": "натиснете тук.",
"Click on the user role button to change a user's role.": "Натиснете върху бутона за промяна на ролята на потребителя.",
"Close": "Затвори",
"Collection": "Колекция",
"ComfyUI": "",
"ComfyUI Base URL": "",
"ComfyUI Base URL is required.": "",
"ComfyUI": "ComfyUI",
"ComfyUI Base URL": "ComfyUI Base URL",
"ComfyUI Base URL is required.": "ComfyUI Base URL е задължително.",
"Command": "Команда",
"Confirm Password": "Потвърди Парола",
"Connections": "Връзки",
"Content": "Съдържание",
"Context Length": "Дължина на Контекста",
"Continue Response": "",
"Continue Response": "Продължи отговора",
"Conversation Mode": "Режим на Чат",
"Copied shared chat URL to clipboard!": "",
"Copy": "",
"Copied shared chat URL to clipboard!": "Копирана е връзката за чат!",
"Copy": "Копирай",
"Copy last code block": "Копиране на последен код блок",
"Copy last response": "Копиране на последен отговор",
"Copy Link": "",
"Copy Link": "Копиране на връзка",
"Copying to clipboard was successful!": "Копирането в клипборда беше успешно!",
"Create a concise, 3-5 word phrase as a header for the following query, strictly adhering to the 3-5 word limit and avoiding the use of the word 'title':": "Създайте кратка фраза от 3-5 думи като заглавие за следващото запитване, като стриктно спазвате ограничението от 3-5 думи и избягвате използването на думата 'заглавие':",
"Create a modelfile": "Създаване на модфайл",
"Create Account": "Създаване на Акаунт",
"Create new key": "",
"Create new secret key": "",
"Create new key": "Създаване на нов ключ",
"Create new secret key": "Създаване на нов секретен ключ",
"Created at": "Създадено на",
"Created At": "",
"Created At": "Създадено на",
"Current Model": "Текущ модел",
"Current Models": "",
"Current Password": "Текуща Парола",
"Custom": "Персонализиран",
"Customize Ollama models for a specific purpose": "Персонализиране на Ollama моделите за конкретна цел",
"Dark": "Тъмен",
"Dashboard": "",
"Dashboard": "Панел",
"Database": "База данни",
"December": "",
"December": "Декември",
"Default": "По подразбиране",
"Default (Automatic1111)": "По подразбиране (Automatic1111)",
"Default (SentenceTransformers)": "",
"Default (SentenceTransformers)": "По подразбиране (SentenceTransformers)",
"Default (Web API)": "По подразбиране (Web API)",
"Default model updated": "Моделът по подразбиране е обновен",
"Default Prompt Suggestions": "Промпт Предложения по подразбиране",
"Default User Role": "Роля на потребителя по подразбиране",
"delete": "изтриване",
"Delete": "",
"Delete": "Изтриване",
"Delete a model": "Изтриване на модел",
"Delete chat": "Изтриване на чат",
"Delete Chat": "",
"Delete Chat": "Изтриване на Чат",
"Delete Chats": "Изтриване на Чатове",
"delete this link": "",
"Delete User": "",
"delete this link": "Изтриване на този линк",
"Delete User": "Изтриване на потребител",
"Deleted {{deleteModelTag}}": "Изтрито {{deleteModelTag}}",
"Deleted {{tagName}}": "",
"Deleted {{tagName}}": "Изтрито {{tagName}}",
"Description": "Описание",
"Didn't fully follow instructions": "",
"Didn't fully follow instructions": "Не следва инструкциите",
"Disabled": "Деактивиран",
"Discover a modelfile": "Откриване на модфайл",
"Discover a prompt": "Откриване на промпт",
......@@ -156,29 +156,29 @@
"does not make any external connections, and your data stays securely on your locally hosted server.": "няма външни връзки, и вашите данни остават сигурни на локално назначен сървър.",
"Don't Allow": "Не Позволявай",
"Don't have an account?": "Нямате акаунт?",
"Don't like the style": "",
"Download": "",
"Download canceled": "",
"Don't like the style": "Не харесваш стила?",
"Download": "Изтегляне отменено",
"Download canceled": "Изтегляне отменено",
"Download Database": "Сваляне на база данни",
"Drop any files here to add to the conversation": "Пускане на файлове тук, за да ги добавите в чата",
"e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "напр. '30с','10м'. Валидни единици са 'с', 'м', 'ч'.",
"Edit": "",
"Edit": "Редактиране",
"Edit Doc": "Редактиране на документ",
"Edit User": "Редактиране на потребител",
"Email": "Имейл",
"Embedding Model": "",
"Embedding Model Engine": "",
"Embedding model set to \"{{embedding_model}}\"": "",
"Embedding Model": "Модел за вграждане",
"Embedding Model Engine": "Модел за вграждане",
"Embedding model set to \"{{embedding_model}}\"": "Модел за вграждане е настроен на \"{{embedding_model}}\"",
"Enable Chat History": "Вклюване на Чат История",
"Enable New Sign Ups": "Вклюване на Нови Потребители",
"Enabled": "Включено",
"Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "",
"Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "Уверете се, че вашият CSV файл включва 4 колони в следния ред: Име, Имейл, Парола, Роля.",
"Enter {{role}} message here": "Въведете съобщение за {{role}} тук",
"Enter a detail about yourself for your LLMs to recall": "",
"Enter a detail about yourself for your LLMs to recall": "Въведете подробности за себе си, за да се herinnerат вашите LLMs",
"Enter Chunk Overlap": "Въведете Chunk Overlap",
"Enter Chunk Size": "Въведете Chunk Size",
"Enter Image Size (e.g. 512x512)": "Въведете размер на изображението (напр. 512x512)",
"Enter language codes": "",
"Enter language codes": "Въведете кодове на езика",
"Enter LiteLLM API Base URL (litellm_params.api_base)": "Въведете LiteLLM API Base URL (litellm_params.api_base)",
"Enter LiteLLM API Key (litellm_params.api_key)": "Въведете LiteLLM API Key (litellm_params.api_key)",
"Enter LiteLLM API RPM (litellm_params.rpm)": "Въведете LiteLLM API RPM (litellm_params.rpm)",
......@@ -187,46 +187,46 @@
"Enter Model Display Name": "",
"Enter model tag (e.g. {{modelTag}})": "Въведете таг на модел (напр. {{modelTag}})",
"Enter Number of Steps (e.g. 50)": "Въведете брой стъпки (напр. 50)",
"Enter Score": "",
"Enter Score": "Въведете оценка",
"Enter stop sequence": "Въведете стоп последователност",
"Enter Top K": "Въведете Top K",
"Enter URL (e.g. http://127.0.0.1:7860/)": "Въведете URL (напр. http://127.0.0.1:7860/)",
"Enter URL (e.g. http://localhost:11434)": "",
"Enter URL (e.g. http://localhost:11434)": "Въведете URL (напр. http://localhost:11434)",
"Enter Your Email": "Въведете имейл",
"Enter Your Full Name": "Въведете вашето пълно име",
"Enter Your Password": "Въведете вашата парола",
"Enter Your Role": "",
"Enter Your Role": "Въведете вашата роля",
"Experimental": "Експериментално",
"Export All Chats (All Users)": "Експортване на всички чатове (За всички потребители)",
"Export Chats": "Експортване на чатове",
"Export Documents Mapping": "Експортване на документен мапинг",
"Export Modelfiles": "Експортване на модфайлове",
"Export Prompts": "Експортване на промптове",
"Failed to create API Key.": "",
"Failed to create API Key.": "Неуспешно създаване на API ключ.",
"Failed to read clipboard contents": "Грешка при четене на съдържанието от клипборда",
"February": "",
"Feel free to add specific details": "",
"February": "Февруари",
"Feel free to add specific details": "Feel free to add specific details",
"File Mode": "Файл Мод",
"File not found.": "Файл не е намерен.",
"Fingerprint spoofing detected: Unable to use initials as avatar. Defaulting to default profile image.": "",
"Fingerprint spoofing detected: Unable to use initials as avatar. Defaulting to default profile image.": "Потвърждаване на отпечатък: Не може да се използва инициализационна буква като аватар. Потребителят се връща към стандартна аватарка.",
"Fluidly stream large external response chunks": "Плавно предаване на големи части от външен отговор",
"Focus chat input": "Фокусиране на чат вход",
"Followed instructions perfectly": "",
"Followed instructions perfectly": "Следвайте инструкциите перфектно",
"Format your variables using square brackets like this:": "Форматирайте вашите променливи, като използвате квадратни скоби, както следва:",
"From (Base Model)": "От (Базов модел)",
"Full Screen Mode": "На Цял екран",
"General": "Основни",
"General Settings": "Основни Настройки",
"Generation Info": "",
"Good Response": "",
"h:mm a": "",
"has no conversations.": "",
"Generation Info": "Информация за Генерация",
"Good Response": "Добра отговор",
"h:mm a": "h:mm a",
"has no conversations.": "няма разговори.",
"Hello, {{name}}": "Здравей, {{name}}",
"Help": "",
"Help": "Помощ",
"Hide": "Скрий",
"Hide Additional Params": "Скрий допълнителни параметри",
"How can I help you today?": "Как мога да ви помогна днес?",
"Hybrid Search": "",
"Hybrid Search": "Hybrid Search",
"Image Generation (Experimental)": "Генерация на изображения (Експериментално)",
"Image Generation Engine": "Двигател за генериране на изображения",
"Image Settings": "Настройки на изображения",
......@@ -238,42 +238,42 @@
"Include `--api` flag when running stable-diffusion-webui": "Включете флага `--api`, когато стартирате stable-diffusion-webui",
"Input commands": "Въведете команди",
"Interface": "Интерфейс",
"Invalid Tag": "",
"Invalid Tag": "Невалиден тег",
"Is Model Vision Capable": "",
"January": "",
"January": "Януари",
"join our Discord for help.": "свържете се с нашия Discord за помощ.",
"JSON": "JSON",
"July": "",
"June": "",
"July": "Июл",
"June": "Июн",
"JWT Expiration": "JWT Expiration",
"JWT Token": "JWT Token",
"Keep Alive": "Keep Alive",
"Keyboard shortcuts": "Клавиши за бърз достъп",
"Language": "Език",
"Last Active": "",
"Last Active": "Последни активни",
"Light": "Светъл",
"Listening...": "Слушам...",
"LLMs can make mistakes. Verify important information.": "LLMs могат да правят грешки. Проверете важните данни.",
"LTR": "",
"LTR": "LTR",
"Made by OpenWebUI Community": "Направено от OpenWebUI общността",
"Make sure to enclose them with": "Уверете се, че са заключени с",
"Manage LiteLLM Models": "Управление на LiteLLM Моделите",
"Manage Model Information": "",
"Manage Models": "Управление на Моделите",
"Manage Ollama Models": "Управление на Ollama Моделите",
"March": "",
"March": "Март",
"Max Tokens": "Max Tokens",
"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "Максимум 3 модели могат да бъдат сваляни едновременно. Моля, опитайте отново по-късно.",
"May": "",
"Memories accessible by LLMs will be shown here.": "",
"Memory": "",
"Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "",
"Minimum Score": "",
"May": "Май",
"Memories accessible by LLMs will be shown here.": "Мемории достъпни от LLMs ще бъдат показани тук.",
"Memory": "Мемория",
"Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "Съобщенията, които изпращате след създаването на връзката, няма да бъдат споделяни. Потребителите с URL адреса ще могат да видят споделения чат.",
"Minimum Score": "Минимална оценка",
"Mirostat": "Mirostat",
"Mirostat Eta": "Mirostat Eta",
"Mirostat Tau": "Mirostat Tau",
"MMMM DD, YYYY": "MMMM DD, YYYY",
"MMMM DD, YYYY HH:mm": "",
"MMMM DD, YYYY HH:mm": "MMMM DD, YYYY HH:mm",
"Model '{{modelName}}' has been successfully downloaded.": "Моделът '{{modelName}}' беше успешно свален.",
"Model '{{modelTag}}' is already in queue for downloading.": "Моделът '{{modelTag}}' е вече в очакване за сваляне.",
"Model {{modelId}} not found": "Моделът {{modelId}} не е намерен",
......@@ -281,7 +281,7 @@
"Model {{modelName}} is not vision capable": "",
"Model Description": "",
"Model Display Name": "",
"Model filesystem path detected. Model shortname is required for update, cannot continue.": "",
"Model filesystem path detected. Model shortname is required for update, cannot continue.": "Открит е път до файловата система на модела. За актуализацията се изисква съкратено име на модела, не може да продължи.",
"Model info for {{modelName}} added successfully": "",
"Model info for {{modelName}} deleted successfully": "",
"Model Name": "Име на модел",
......@@ -294,26 +294,26 @@
"Modelfile Content": "Съдържание на модфайл",
"Modelfiles": "Модфайлове",
"Models": "Модели",
"More": "",
"More": "Повече",
"Name": "Име",
"Name Tag": "Име Таг",
"Name your modelfile": "Име на модфайла",
"New Chat": "Нов чат",
"New Password": "Нова парола",
"No": "",
"No results found": "",
"No results found": "Няма намерени резултати",
"No source available": "Няма наличен източник",
"Not factually correct": "",
"Not factually correct": "Не е фактологически правилно",
"Not sure what to add?": "Не сте сигурни, какво да добавите?",
"Not sure what to write? Switch to": "Не сте сигурни, какво да напишете? Превключете към",
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "",
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "Забележка: Ако зададете минимален резултат, търсенето ще върне само документи с резултат, по-голям или равен на минималния резултат.",
"Notifications": "Десктоп Известия",
"November": "",
"October": "",
"November": "Ноември",
"October": "Октомври",
"Off": "Изкл.",
"Okay, Let's Go!": "ОК, Нека започваме!",
"OLED Dark": "",
"Ollama": "",
"OLED Dark": "OLED тъмно",
"Ollama": "Ollama",
"Ollama Base URL": "Ollama Базов URL",
"Ollama Version": "Ollama Версия",
"On": "Вкл.",
......@@ -326,59 +326,59 @@
"Open AI": "Open AI",
"Open AI (Dall-E)": "Open AI (Dall-E)",
"Open new chat": "Отвори нов чат",
"OpenAI": "",
"OpenAI": "OpenAI",
"OpenAI API": "OpenAI API",
"OpenAI API Config": "",
"OpenAI API Config": "OpenAI API Config",
"OpenAI API Key is required.": "OpenAI API ключ е задължителен.",
"OpenAI URL/Key required.": "",
"OpenAI URL/Key required.": "OpenAI URL/Key е задължителен.",
"or": "или",
"Other": "",
"Overview": "",
"Other": "Other",
"Overview": "Обзор",
"Parameters": "Параметри",
"Password": "Парола",
"PDF document (.pdf)": "",
"PDF document (.pdf)": "PDF документ (.pdf)",
"PDF Extract Images (OCR)": "PDF Extract Images (OCR)",
"pending": "в очакване",
"Permission denied when accessing microphone: {{error}}": "Permission denied when accessing microphone: {{error}}",
"Personalization": "",
"Plain text (.txt)": "",
"Personalization": "Персонализация",
"Plain text (.txt)": "Plain text (.txt)",
"Playground": "Плейграунд",
"Positive attitude": "",
"Previous 30 days": "",
"Previous 7 days": "",
"Profile Image": "",
"Prompt": "",
"Prompt (e.g. Tell me a fun fact about the Roman Empire)": "",
"Positive attitude": "Позитивна ативност",
"Previous 30 days": "Предыдущите 30 дни",
"Previous 7 days": "Предыдущите 7 дни",
"Profile Image": "Профилна снимка",
"Prompt": "Промпт",
"Prompt (e.g. Tell me a fun fact about the Roman Empire)": "Промпт (напр. Обмисли ме забавна факт за Римската империя)",
"Prompt Content": "Съдържание на промпта",
"Prompt suggestions": "Промпт предложения",
"Prompts": "Промптове",
"Pull \"{{searchValue}}\" from Ollama.com": "",
"Pull \"{{searchValue}}\" from Ollama.com": "Извади \"{{searchValue}}\" от Ollama.com",
"Pull a model from Ollama.com": "Издърпайте модел от Ollama.com",
"Pull Progress": "Прогрес на издърпването",
"Query Params": "Query Параметри",
"RAG Template": "RAG Шаблон",
"Raw Format": "Raw Формат",
"Read Aloud": "",
"Read Aloud": "Прочети на Голос",
"Record voice": "Записване на глас",
"Redirecting you to OpenWebUI Community": "Пренасочване към OpenWebUI общността",
"Refused when it shouldn't have": "",
"Regenerate": "",
"Refused when it shouldn't have": "Отказано, когато не трябва да бъде",
"Regenerate": "Регенериране",
"Release Notes": "Бележки по изданието",
"Remove": "",
"Remove Model": "",
"Rename": "",
"Remove": "Изтриване",
"Remove Model": "Изтриване на модела",
"Rename": "Преименуване",
"Repeat Last N": "Repeat Last N",
"Repeat Penalty": "Repeat Penalty",
"Request Mode": "Request Mode",
"Reranking Model": "",
"Reranking model disabled": "",
"Reranking model set to \"{{reranking_model}}\"": "",
"Reranking Model": "Reranking Model",
"Reranking model disabled": "Reranking model disabled",
"Reranking model set to \"{{reranking_model}}\"": "Reranking model set to \"{{reranking_model}}\"",
"Reset Vector Storage": "Ресет Vector Storage",
"Response AutoCopy to Clipboard": "Аувтоматично копиране на отговор в клипборда",
"Role": "Роля",
"Rosé Pine": "Rosé Pine",
"Rosé Pine Dawn": "Rosé Pine Dawn",
"RTL": "",
"RTL": "RTL",
"Save": "Запис",
"Save & Create": "Запис & Създаване",
"Save & Update": "Запис & Актуализиране",
......@@ -387,7 +387,7 @@
"Scan complete!": "Сканиране завършено!",
"Scan for documents from {{path}}": "Сканиране за документи в {{path}}",
"Search": "Търси",
"Search a model": "",
"Search a model": "Търси модел",
"Search Documents": "Търси Документи",
"Search Prompts": "Търси Промптове",
"See readme.md for instructions": "Виж readme.md за инструкции",
......@@ -398,35 +398,35 @@
"Select an Ollama instance": "Изберете Ollama инстанция",
"Select model": "Изберете модел",
"Selected models do not support image inputs": "",
"Send": "",
"Send": "Изпрати",
"Send a Message": "Изпращане на Съобщение",
"Send message": "Изпращане на съобщение",
"September": "",
"September": "Септември",
"Server connection verified": "Server connection verified",
"Set as default": "Задай по подразбиране",
"Set Default Model": "Задай Модел По Подразбиране",
"Set embedding model (e.g. {{model}})": "",
"Set embedding model (e.g. {{model}})": "Задай embedding model (e.g. {{model}})",
"Set Image Size": "Задай Размер на Изображението",
"Set Model": "Задай Модел",
"Set reranking model (e.g. {{model}})": "",
"Set reranking model (e.g. {{model}})": "Задай reranking model (e.g. {{model}})",
"Set Steps": "Задай Стъпки",
"Set Title Auto-Generation Model": "Задай Модел за Автоматично Генериране на Заглавие",
"Set Voice": "Задай Глас",
"Settings": "Настройки",
"Settings saved successfully!": "Настройките са запазени успешно!",
"Share": "",
"Share Chat": "",
"Share": "Подели",
"Share Chat": "Подели Чат",
"Share to OpenWebUI Community": "Споделите с OpenWebUI Общността",
"short-summary": "short-summary",
"Show": "Покажи",
"Show Additional Params": "Покажи допълнителни параметри",
"Show shortcuts": "Покажи",
"Showcased creativity": "",
"Showcased creativity": "Показана креативност",
"sidebar": "sidebar",
"Sign in": "Вписване",
"Sign Out": "Изход",
"Sign up": "Регистрация",
"Signing in": "",
"Signing in": "Вписване",
"Source": "Източник",
"Speech recognition error: {{error}}": "Speech recognition error: {{error}}",
"Speech-to-Text Engine": "Speech-to-Text Engine",
......@@ -434,37 +434,37 @@
"Stop Sequence": "Stop Sequence",
"STT Settings": "STT Настройки",
"Submit": "Изпращане",
"Subtitle (e.g. about the Roman Empire)": "",
"Subtitle (e.g. about the Roman Empire)": "Подтитул (напр. за Римска империя)",
"Success": "Успех",
"Successfully updated.": "Успешно обновено.",
"Suggested": "",
"Suggested": "Препоръчано",
"Sync All": "Синхронизиране на всички",
"System": "Система",
"System Prompt": "Системен Промпт",
"Tags": "Тагове",
"Tell us more:": "",
"Tell us more:": "Повече информация:",
"Temperature": "Температура",
"Template": "Шаблон",
"Text Completion": "Text Completion",
"Text-to-Speech Engine": "Text-to-Speech Engine",
"Tfs Z": "Tfs Z",
"Thanks for your feedback!": "",
"The score should be a value between 0.0 (0%) and 1.0 (100%).": "",
"Thanks for your feedback!": "Благодарим ви за вашия отзив!",
"The score should be a value between 0.0 (0%) and 1.0 (100%).": "The score should be a value between 0.0 (0%) and 1.0 (100%).",
"Theme": "Тема",
"This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "Това гарантира, че ценните ви разговори се запазват сигурно във вашата бекенд база данни. Благодарим ви!",
"This setting does not sync across browsers or devices.": "Тази настройка не се синхронизира между браузъри или устройства.",
"Thorough explanation": "",
"Thorough explanation": "Това е подробно описание.",
"Tip: Update multiple variable slots consecutively by pressing the tab key in the chat input after each replacement.": "Съвет: Актуализирайте няколко слота за променливи последователно, като натискате клавиша Tab в чат входа след всяка подмяна.",
"Title": "Заглавие",
"Title (e.g. Tell me a fun fact)": "",
"Title (e.g. Tell me a fun fact)": "Заглавие (напр. Моля, кажете ми нещо забавно)",
"Title Auto-Generation": "Автоматично Генериране на Заглавие",
"Title cannot be an empty string.": "",
"Title cannot be an empty string.": "Заглавието не може да бъде празно.",
"Title Generation Prompt": "Промпт за Генериране на Заглавие",
"to": "в",
"To access the available model names for downloading,": "За да получите достъп до наличните имена на модели за изтегляне,",
"To access the GGUF models available for downloading,": "За да получите достъп до GGUF моделите, налични за изтегляне,",
"to chat input.": "към чат входа.",
"Today": "",
"Today": "днес",
"Toggle settings": "Toggle settings",
"Toggle sidebar": "Toggle sidebar",
"Top K": "Top K",
......@@ -474,7 +474,7 @@
"Type Hugging Face Resolve (Download) URL": "Въведете Hugging Face Resolve (Download) URL",
"Uh-oh! There was an issue connecting to {{provider}}.": "О, не! Възникна проблем при свързването с {{provider}}.",
"Unknown File Type '{{file_type}}', but accepting and treating as plain text": "Непознат файлов тип '{{file_type}}', но се приема и обработва като текст",
"Update and Copy Link": "",
"Update and Copy Link": "Обнови и копирай връзка",
"Update password": "Обновяване на парола",
"Upload a GGUF model": "Качване на GGUF модел",
"Upload files": "Качване на файлове",
......@@ -482,7 +482,7 @@
"URL Mode": "URL Mode",
"Use '#' in the prompt input to load and select your documents.": "Използвайте '#' във промпта за да заредите и изберете вашите документи.",
"Use Gravatar": "Използвайте Gravatar",
"Use Initials": "",
"Use Initials": "Използвайте Инициали",
"user": "потребител",
"User Permissions": "Права на потребителя",
"Users": "Потребители",
......@@ -491,27 +491,27 @@
"variable": "променлива",
"variable to have them replaced with clipboard content.": "променливи да се заменят съдържанието от клипборд.",
"Version": "Версия",
"Warning: If you update or change your embedding model, you will need to re-import all documents.": "",
"Warning: If you update or change your embedding model, you will need to re-import all documents.": "Предупреждение: Ако актуализирате или промените вашия модел за вграждане, трябва да повторите импортирането на всички документи.",
"Web": "Уеб",
"Web Loader Settings": "",
"Web Params": "",
"Webhook URL": "",
"Web Loader Settings": "Настройки за зареждане на уеб",
"Web Params": "Параметри за уеб",
"Webhook URL": "Уебхук URL",
"WebUI Add-ons": "WebUI Добавки",
"WebUI Settings": "WebUI Настройки",
"WebUI will make requests to": "WebUI ще направи заявки към",
"What’s New in": "Какво е новото в",
"When history is turned off, new chats on this browser won't appear in your history on any of your devices.": "Когато историята е изключена, нови чатове в този браузър ще не се показват в историята на никои от вашия профил.",
"Whisper (Local)": "Whisper (Локален)",
"Workspace": "",
"Workspace": "Работно пространство",
"Write a prompt suggestion (e.g. Who are you?)": "Напиши предложение за промпт (напр. Кой сте вие?)",
"Write a summary in 50 words that summarizes [topic or keyword].": "Напиши описание в 50 знака, което описва [тема или ключова дума].",
"Yes": "",
"Yesterday": "",
"You": "",
"You have no archived conversations.": "",
"You have shared this chat": "",
"Yesterday": "вчера",
"You": "вие",
"You have no archived conversations.": "Нямате архивирани разговори.",
"You have shared this chat": "Вие сте споделели този чат",
"You're a helpful assistant.": "Вие сте полезен асистент.",
"You're now logged in.": "Сега, вие влязохте в системата.",
"Youtube": "",
"Youtube Loader Settings": ""
"Youtube": "Youtube",
"Youtube Loader Settings": "Youtube Loader Settings"
}
......@@ -4,14 +4,14 @@
"(e.g. `sh webui.sh --api`)": "(যেমন `sh webui.sh --api`)",
"(latest)": "(সর্বশেষ)",
"{{modelName}} is thinking...": "{{modelName}} চিন্তা করছে...",
"{{user}}'s Chats": "",
"{{user}}'s Chats": "{{user}}র চ্যাটস",
"{{webUIName}} Backend Required": "{{webUIName}} ব্যাকএন্ড আবশ্যক",
"A selected model does not support image input": "",
"a user": "একজন ব্যাবহারকারী",
"About": "সম্পর্কে",
"Account": "একাউন্ট",
"Accurate information": "",
"Add": "",
"Accurate information": "সঠিক তথ্য",
"Add": "যোগ করুন",
"Add a model": "একটি মডেল যোগ করুন",
"Add a model tag name": "একটি মডেল ট্যাগ যোগ করুন",
"Add a short description about what this modelfile does": "এই মডেলফাইলটির সম্পর্কে সংক্ষিপ্ত বিবরণ যোগ করুন",
......@@ -20,18 +20,18 @@
"Add custom prompt": "একটি কাস্টম প্রম্পট যোগ করুন",
"Add Docs": "ডকুমেন্ট যোগ করুন",
"Add Files": "ফাইল যোগ করুন",
"Add Memory": "",
"Add Memory": "মেমোরি যোগ করুন",
"Add message": "মেসেজ যোগ করুন",
"Add Model": "",
"Add Model": "মডেল যোগ করুন",
"Add Tags": "ট্যাগ যোগ করুন",
"Add User": "",
"Add User": "ইউজার যোগ করুন",
"Adjusting these settings will apply changes universally to all users.": "এই সেটিংগুলো পরিবর্তন করলে তা সব ইউজারের উপরেই প্রয়োগ করা হবে",
"admin": "এডমিন",
"Admin Panel": "এডমিন প্যানেল",
"Admin Settings": "এডমিন সেটিংস",
"Advanced Parameters": "এডভান্সড প্যারামিটার্স",
"all": "সব",
"All Documents": "",
"All Documents": "সব ডকুমেন্ট",
"All selected models do not support image input, removed images": "",
"All Users": "সব ইউজার",
"Allow": "অনুমোদন",
......@@ -40,38 +40,38 @@
"Already have an account?": "আগে থেকেই একাউন্ট আছে?",
"an assistant": "একটা এসিস্ট্যান্ট",
"and": "এবং",
"and create a new shared link.": "",
"and create a new shared link.": "এবং একটি নতুন শেয়ারে লিংক তৈরি করুন.",
"API Base URL": "এপিআই বেজ ইউআরএল",
"API Key": "এপিআই কোড",
"API Key created.": "",
"API keys": "",
"API Key created.": "একটি এপিআই কোড তৈরি করা হয়েছে.",
"API keys": "এপিআই কোডস",
"API RPM": "এপিআই আরপিএম",
"April": "",
"Archive": "",
"April": "আপ্রিল",
"Archive": "আর্কাইভ",
"Archived Chats": "চ্যাট ইতিহাস সংরক্ষণাগার",
"are allowed - Activate this command by typing": "অনুমোদিত - কমান্ডটি চালু করার জন্য লিখুন",
"Are you sure?": "আপনি নিশ্চিত?",
"Attach file": "ফাইল যুক্ত করুন",
"Attention to detail": "বিস্তারিত বিশেষতা",
"Audio": "অডিও",
"August": "",
"August": "আগস্ট",
"Auto-playback response": "রেসপন্স অটো-প্লেব্যাক",
"Auto-send input after 3 sec.": "৩ সেকেন্ড পর ইনপুট সংয়ক্রিয়ভাবে পাঠান",
"AUTOMATIC1111 Base URL": "AUTOMATIC1111 বেজ ইউআরএল",
"AUTOMATIC1111 Base URL is required.": "AUTOMATIC1111 বেজ ইউআরএল আবশ্যক",
"available!": "উপলব্ধ!",
"Back": "পেছনে",
"Bad Response": "",
"before": "",
"Being lazy": "",
"Bad Response": "খারাপ প্রতিক্রিয়া",
"before": "পূর্ববর্তী",
"Being lazy": "অলস হওয়া",
"Builder Mode": "বিল্ডার মোড",
"Bypass SSL verification for Websites": "",
"Bypass SSL verification for Websites": "ওয়েবসাইটের জন্য SSL যাচাই বাতিল করুন",
"Cancel": "বাতিল",
"Categories": "ক্যাটাগরিসমূহ",
"Change Password": "পাসওয়ার্ড পরিবর্তন করুন",
"Chat": "চ্যাট",
"Chat Bubble UI": "",
"Chat direction": "",
"Chat Bubble UI": "চ্যাট বাবল UI",
"Chat direction": "চ্যাট দিকনির্দেশ",
"Chat History": "চ্যাট হিস্টোরি",
"Chat History is off for this browser.": "এই ব্রাউজারের জন্য চ্যাট হিস্টোরি বন্ধ আছে",
"Chats": "চ্যাটসমূহ",
......@@ -84,66 +84,66 @@
"Chunk Size": "চাঙ্ক সাইজ",
"Citation": "উদ্ধৃতি",
"Click here for help.": "সাহায্যের জন্য এখানে ক্লিক করুন",
"Click here to": "",
"Click here to": "এখানে ক্লিক করুন",
"Click here to check other modelfiles.": "অন্যান্য মডেলফাইল চেক করার জন্য এখানে ক্লিক করুন",
"Click here to select": "নির্বাচন করার জন্য এখানে ক্লিক করুন",
"Click here to select a csv file.": "",
"Click here to select a csv file.": "একটি csv ফাইল নির্বাচন করার জন্য এখানে ক্লিক করুন",
"Click here to select documents.": "ডকুমেন্টগুলো নির্বাচন করার জন্য এখানে ক্লিক করুন",
"click here.": "এখানে ক্লিক করুন",
"Click on the user role button to change a user's role.": "ইউজারের পদবি পরিবর্তন করার জন্য ইউজারের পদবি বাটনে ক্লিক করুন",
"Close": "বন্ধ",
"Collection": "সংগ্রহ",
"ComfyUI": "",
"ComfyUI Base URL": "",
"ComfyUI Base URL is required.": "",
"ComfyUI": "ComfyUI",
"ComfyUI Base URL": "ComfyUI Base URL",
"ComfyUI Base URL is required.": "ComfyUI Base URL আবশ্যক।",
"Command": "কমান্ড",
"Confirm Password": "পাসওয়ার্ড নিশ্চিত করুন",
"Connections": "কানেকশনগুলো",
"Content": "বিষয়বস্তু",
"Context Length": "কনটেক্সটের দৈর্ঘ্য",
"Continue Response": "",
"Continue Response": "যাচাই করুন",
"Conversation Mode": "কথোপকথন মোড",
"Copied shared chat URL to clipboard!": "",
"Copy": "",
"Copied shared chat URL to clipboard!": "শেয়ারকৃত কথা-ব্যবহারের URL ক্লিপবোর্ডে কপি করা হয়েছে!",
"Copy": "অনুলিপি",
"Copy last code block": "সর্বশেষ কোড ব্লক কপি করুন",
"Copy last response": "সর্বশেষ রেসপন্স কপি করুন",
"Copy Link": "",
"Copy Link": "লিংক কপি করুন",
"Copying to clipboard was successful!": "ক্লিপবোর্ডে কপি করা সফল হয়েছে",
"Create a concise, 3-5 word phrase as a header for the following query, strictly adhering to the 3-5 word limit and avoiding the use of the word 'title':": "'title' শব্দটি ব্যবহার না করে নিম্মোক্ত অনুসন্ধানের জন্য সংক্ষেপে সর্বোচ্চ ৩-৫ শব্দের একটি হেডার তৈরি করুন",
"Create a modelfile": "একটি মডেলফাইল তৈরি করুন",
"Create Account": "একাউন্ট তৈরি করুন",
"Create new key": "",
"Create new secret key": "",
"Create new key": "একটি নতুন কী তৈরি করুন",
"Create new secret key": "একটি নতুন সিক্রেট কী তৈরি করুন",
"Created at": "নির্মানকাল",
"Created At": "",
"Created At": "নির্মানকাল",
"Current Model": "বর্তমান মডেল",
"Current Models": "",
"Current Password": "বর্তমান পাসওয়ার্ড",
"Custom": "কাস্টম",
"Customize Ollama models for a specific purpose": "নির্দিষ্ট উদ্দেশ্যে Ollama মডেল পরিবর্তন করুন",
"Dark": "ডার্ক",
"Dashboard": "",
"Dashboard": "ড্যাশবোর্ড",
"Database": "ডেটাবেজ",
"December": "",
"December": "ডেসেম্বর",
"Default": "ডিফল্ট",
"Default (Automatic1111)": "ডিফল্ট (Automatic1111)",
"Default (SentenceTransformers)": "",
"Default (SentenceTransformers)": "ডিফল্ট (SentenceTransformers)",
"Default (Web API)": "ডিফল্ট (Web API)",
"Default model updated": "ডিফল্ট মডেল আপডেট হয়েছে",
"Default Prompt Suggestions": "ডিফল্ট প্রম্পট সাজেশন",
"Default User Role": "ইউজারের ডিফল্ট পদবি",
"delete": "মুছে ফেলুন",
"Delete": "",
"Delete": "মুছে ফেলুন",
"Delete a model": "একটি মডেল মুছে ফেলুন",
"Delete chat": "চ্যাট মুছে ফেলুন",
"Delete Chat": "",
"Delete Chat": "চ্যাট মুছে ফেলুন",
"Delete Chats": "চ্যাটগুলো মুছে ফেলুন",
"delete this link": "",
"Delete User": "",
"delete this link": "এই লিংক মুছে ফেলুন",
"Delete User": "ইউজার মুছে ফেলুন",
"Deleted {{deleteModelTag}}": "{{deleteModelTag}} মুছে ফেলা হয়েছে",
"Deleted {{tagName}}": "",
"Deleted {{tagName}}": "{{tagName}} মুছে ফেলা হয়েছে",
"Description": "বিবরণ",
"Didn't fully follow instructions": "",
"Didn't fully follow instructions": "ইনস্ট্রাকশন সম্পূর্ণ অনুসরণ করা হয়নি",
"Disabled": "অক্ষম",
"Discover a modelfile": "একটি মডেলফাইল খুঁজে বের করুন",
"Discover a prompt": "একটি প্রম্পট খুঁজে বের করুন",
......@@ -156,29 +156,29 @@
"does not make any external connections, and your data stays securely on your locally hosted server.": "কোন এক্সটার্নাল কানেকশন তৈরি করে না, এবং আপনার ডেটা আর লোকালি হোস্টেড সার্ভারেই নিরাপদে থাকে।",
"Don't Allow": "অনুমোদন দেবেন না",
"Don't have an account?": "একাউন্ট নেই?",
"Don't like the style": "",
"Download": "",
"Download canceled": "",
"Don't like the style": "স্টাইল পছন্দ করেন না",
"Download": "ডাউনলোড",
"Download canceled": "ডাউনলোড বাতিল করা হয়েছে",
"Download Database": "ডেটাবেজ ডাউনলোড করুন",
"Drop any files here to add to the conversation": "আলোচনায় যুক্ত করার জন্য যে কোন ফাইল এখানে ড্রপ করুন",
"e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "যেমন '30s','10m'. সময়ের অনুমোদিত অনুমোদিত এককগুলি হচ্ছে 's', 'm', 'h'.",
"Edit": "",
"Edit": "এডিট করুন",
"Edit Doc": "ডকুমেন্ট এডিট করুন",
"Edit User": "ইউজার এডিট করুন",
"Email": "ইমেইল",
"Embedding Model": "",
"Embedding Model Engine": "",
"Embedding model set to \"{{embedding_model}}\"": "",
"Embedding Model": "ইমেজ ইমেবডিং মডেল",
"Embedding Model Engine": "ইমেজ ইমেবডিং মডেল ইঞ্জিন",
"Embedding model set to \"{{embedding_model}}\"": "ইমেজ ইমেবডিং মডেল সেট করা হয়েছে - \"{{embedding_model}}\"",
"Enable Chat History": "চ্যাট হিস্টোরি চালু করুন",
"Enable New Sign Ups": "নতুন সাইনআপ চালু করুন",
"Enabled": "চালু করা হয়েছে",
"Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "",
"Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "আপনার সিএসভি ফাইলটিতে এই ক্রমে 4 টি কলাম অন্তর্ভুক্ত রয়েছে তা নিশ্চিত করুন: নাম, ইমেল, পাসওয়ার্ড, ভূমিকা।.",
"Enter {{role}} message here": "{{role}} মেসেজ এখানে লিখুন",
"Enter a detail about yourself for your LLMs to recall": "",
"Enter a detail about yourself for your LLMs to recall": "আপনার এলএলএমগুলি স্মরণ করার জন্য নিজের সম্পর্কে একটি বিশদ লিখুন",
"Enter Chunk Overlap": "চাঙ্ক ওভারল্যাপ লিখুন",
"Enter Chunk Size": "চাংক সাইজ লিখুন",
"Enter Image Size (e.g. 512x512)": "ছবির মাপ লিখুন (যেমন 512x512)",
"Enter language codes": "",
"Enter language codes": "ল্যাঙ্গুয়েজ কোড লিখুন",
"Enter LiteLLM API Base URL (litellm_params.api_base)": "LiteLLM এপিআই বেজ ইউআরএল লিখুন (litellm_params.api_base)",
"Enter LiteLLM API Key (litellm_params.api_key)": "LiteLLM এপিআই কোড লিখুন (litellm_params.api_key)",
"Enter LiteLLM API RPM (litellm_params.rpm)": "LiteLLM এপিআই RPM দিন (litellm_params.rpm)",
......@@ -187,46 +187,46 @@
"Enter Model Display Name": "",
"Enter model tag (e.g. {{modelTag}})": "মডেল ট্যাগ লিখুন (e.g. {{modelTag}})",
"Enter Number of Steps (e.g. 50)": "ধাপের সংখ্যা দিন (যেমন: 50)",
"Enter Score": "",
"Enter Score": "স্কোর দিন",
"Enter stop sequence": "স্টপ সিকোয়েন্স লিখুন",
"Enter Top K": "Top K লিখুন",
"Enter URL (e.g. http://127.0.0.1:7860/)": "ইউআরএল দিন (যেমন http://127.0.0.1:7860/)",
"Enter URL (e.g. http://localhost:11434)": "",
"Enter URL (e.g. http://localhost:11434)": "ইউআরএল দিন (যেমন http://localhost:11434)",
"Enter Your Email": "আপনার ইমেইল লিখুন",
"Enter Your Full Name": "আপনার পূর্ণ নাম লিখুন",
"Enter Your Password": "আপনার পাসওয়ার্ড লিখুন",
"Enter Your Role": "",
"Enter Your Role": "আপনার রোল লিখুন",
"Experimental": "পরিক্ষামূলক",
"Export All Chats (All Users)": "সব চ্যাট এক্সপোর্ট করুন (সব ইউজারের)",
"Export Chats": "চ্যাটগুলো এক্সপোর্ট করুন",
"Export Documents Mapping": "ডকুমেন্টসমূহ ম্যাপিং এক্সপোর্ট করুন",
"Export Modelfiles": "মডেলফাইলগুলো এক্সপোর্ট করুন",
"Export Prompts": "প্রম্পটগুলো একপোর্ট করুন",
"Failed to create API Key.": "",
"Failed to create API Key.": "API Key তৈরি করা যায়নি।",
"Failed to read clipboard contents": "ক্লিপবোর্ডের বিষয়বস্তু পড়া সম্ভব হয়নি",
"February": "",
"Feel free to add specific details": "",
"February": "ফেব্রুয়ারি",
"Feel free to add specific details": "নির্দিষ্ট বিবরণ যোগ করতে বিনা দ্বিধায়",
"File Mode": "ফাইল মোড",
"File not found.": "ফাইল পাওয়া যায়নি",
"Fingerprint spoofing detected: Unable to use initials as avatar. Defaulting to default profile image.": "ফিঙ্গারপ্রিন্ট স্পুফিং ধরা পড়েছে: অ্যাভাটার হিসেবে নামের আদ্যক্ষর ব্যবহার করা যাচ্ছে না। ডিফল্ট প্রোফাইল পিকচারে ফিরিয়ে নেয়া হচ্ছে।",
"Fluidly stream large external response chunks": "বড় এক্সটার্নাল রেসপন্স চাঙ্কগুলো মসৃণভাবে প্রবাহিত করুন",
"Focus chat input": "চ্যাট ইনপুট ফোকাস করুন",
"Followed instructions perfectly": "",
"Followed instructions perfectly": "নির্দেশাবলী নিখুঁতভাবে অনুসরণ করা হয়েছে",
"Format your variables using square brackets like this:": "আপনার ভেরিয়বলগুলো এভাবে স্কয়ার ব্রাকেটের মাধ্যমে সাজান",
"From (Base Model)": "উৎস (বেজ মডেল)",
"Full Screen Mode": "ফুলস্ক্রিন মোড",
"General": "সাধারণ",
"General Settings": "সাধারণ সেটিংসমূহ",
"Generation Info": "",
"Good Response": "",
"h:mm a": "",
"has no conversations.": "",
"Generation Info": "জেনারেশন ইনফো",
"Good Response": "ভালো সাড়া",
"h:mm a": "h:mm a",
"has no conversations.": "কোন কনভার্সেশন আছে না।",
"Hello, {{name}}": "হ্যালো, {{name}}",
"Help": "",
"Help": "সহায়তা",
"Hide": "লুকান",
"Hide Additional Params": "অতিরিক্ত প্যারামিটাগুলো লুকান",
"How can I help you today?": "আপনাকে আজ কিভাবে সাহায্য করতে পারি?",
"Hybrid Search": "",
"Hybrid Search": "হাইব্রিড অনুসন্ধান",
"Image Generation (Experimental)": "ইমেজ জেনারেশন (পরিক্ষামূলক)",
"Image Generation Engine": "ইমেজ জেনারেশন ইঞ্জিন",
"Image Settings": "ছবির সেটিংসমূহ",
......@@ -238,42 +238,42 @@
"Include `--api` flag when running stable-diffusion-webui": "stable-diffusion-webui চালু করার সময় `--api` ফ্ল্যাগ সংযুক্ত করুন",
"Input commands": "ইনপুট কমান্ডস",
"Interface": "ইন্টারফেস",
"Invalid Tag": "",
"Invalid Tag": "অবৈধ ট্যাগ",
"Is Model Vision Capable": "",
"January": "",
"January": "জানুয়ারী",
"join our Discord for help.": "সাহায্যের জন্য আমাদের Discord-এ যুক্ত হোন",
"JSON": "JSON",
"July": "",
"June": "",
"July": "জুলাই",
"June": "জুন",
"JWT Expiration": "JWT-র মেয়াদ",
"JWT Token": "JWT টোকেন",
"Keep Alive": "সচল রাখুন",
"Keyboard shortcuts": "কিবোর্ড শর্টকাটসমূহ",
"Language": "ভাষা",
"Last Active": "",
"Last Active": "সর্বশেষ সক্রিয়",
"Light": "লাইট",
"Listening...": "শুনছে...",
"LLMs can make mistakes. Verify important information.": "LLM ভুল করতে পারে। গুরুত্বপূর্ণ তথ্য যাচাই করে নিন।",
"LTR": "",
"LTR": "LTR",
"Made by OpenWebUI Community": "OpenWebUI কমিউনিটিকর্তৃক নির্মিত",
"Make sure to enclose them with": "এটা দিয়ে বন্ধনী দিতে ভুলবেন না",
"Manage LiteLLM Models": "LiteLLM মডেল ব্যবস্থাপনা করুন",
"Manage Model Information": "",
"Manage Models": "মডেলসমূহ ব্যবস্থাপনা করুন",
"Manage Ollama Models": "Ollama মডেলসূহ ব্যবস্থাপনা করুন",
"March": "",
"March": "মার্চ",
"Max Tokens": "সর্বোচ্চ টোকন",
"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "একসঙ্গে সর্বোচ্চ তিনটি মডেল ডাউনলোড করা যায়। দয়া করে পরে আবার চেষ্টা করুন।",
"May": "",
"Memories accessible by LLMs will be shown here.": "",
"Memory": "",
"Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "",
"Minimum Score": "",
"May": "মে",
"Memories accessible by LLMs will be shown here.": "LLMs দ্বারা অ্যাক্সেসযোগ্য মেমোরিগুলি এখানে দেখানো হবে।",
"Memory": "মেমোরি",
"Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "আপনার লিঙ্ক তৈরি করার পরে আপনার পাঠানো বার্তাগুলি শেয়ার করা হবে না। ইউআরএল ব্যবহারকারীরা শেয়ার করা চ্যাট দেখতে পারবেন।",
"Minimum Score": "Minimum Score",
"Mirostat": "Mirostat",
"Mirostat Eta": "Mirostat Eta",
"Mirostat Tau": "Mirostat Tau",
"MMMM DD, YYYY": "MMMM DD, YYYY",
"MMMM DD, YYYY HH:mm": "",
"MMMM DD, YYYY HH:mm": "MMMM DD, YYYY HH:mm",
"Model '{{modelName}}' has been successfully downloaded.": "'{{modelName}}' মডেল সফলভাবে ডাউনলোড হয়েছে।",
"Model '{{modelTag}}' is already in queue for downloading.": "{{modelTag}} ডাউনলোডের জন্য আগে থেকেই অপেক্ষমান আছে।",
"Model {{modelId}} not found": "{{modelId}} মডেল পাওয়া যায়নি",
......@@ -294,26 +294,26 @@
"Modelfile Content": "মডেলফাইল কনটেন্ট",
"Modelfiles": "মডেলফাইলসমূহ",
"Models": "মডেলসমূহ",
"More": "",
"More": "আরো",
"Name": "নাম",
"Name Tag": "নামের ট্যাগ",
"Name your modelfile": "আপনার মডেলফাইলের নাম দিন",
"New Chat": "নতুন চ্যাট",
"New Password": "নতুন পাসওয়ার্ড",
"No": "",
"No results found": "",
"No results found": "কোন ফলাফল পাওয়া যায়নি",
"No source available": "কোন উৎস পাওয়া যায়নি",
"Not factually correct": "",
"Not factually correct": "তথ্যগত দিক থেকে সঠিক নয়",
"Not sure what to add?": "কী যুক্ত করতে হবে নিশ্চিত না?",
"Not sure what to write? Switch to": "কী লিখতে হবে নিশ্চিত না? পরিবর্তন করুন:",
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "",
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "দ্রষ্টব্য: আপনি যদি ন্যূনতম স্কোর সেট করেন তবে অনুসন্ধানটি কেবলমাত্র ন্যূনতম স্কোরের চেয়ে বেশি বা সমান স্কোর সহ নথিগুলি ফেরত দেবে।",
"Notifications": "নোটিফিকেশনসমূহ",
"November": "",
"October": "",
"November": "নভেম্বর",
"October": "অক্টোবর",
"Off": "বন্ধ",
"Okay, Let's Go!": "ঠিক আছে, চলুন যাই!",
"OLED Dark": "",
"Ollama": "",
"OLED Dark": "OLED ডার্ক",
"Ollama": "Ollama",
"Ollama Base URL": "Ollama বেজ ইউআরএল",
"Ollama Version": "Ollama ভার্সন",
"On": "চালু",
......@@ -326,59 +326,59 @@
"Open AI": "Open AI",
"Open AI (Dall-E)": "Open AI (Dall-E)",
"Open new chat": "নতুন চ্যাট খুলুন",
"OpenAI": "",
"OpenAI": "OpenAI",
"OpenAI API": "OpenAI এপিআই",
"OpenAI API Config": "",
"OpenAI API Config": "OpenAI এপিআই কনফিগ",
"OpenAI API Key is required.": "OpenAI API কোড আবশ্যক",
"OpenAI URL/Key required.": "",
"OpenAI URL/Key required.": "OpenAI URL/Key আবশ্যক",
"or": "অথবা",
"Other": "",
"Overview": "",
"Other": "অন্যান্য",
"Overview": "বিবরণ",
"Parameters": "প্যারামিটারসমূহ",
"Password": "পাসওয়ার্ড",
"PDF document (.pdf)": "",
"PDF document (.pdf)": "PDF ডকুমেন্ট (.pdf)",
"PDF Extract Images (OCR)": "পিডিএফ এর ছবি থেকে লেখা বের করুন (OCR)",
"pending": "অপেক্ষমান",
"Permission denied when accessing microphone: {{error}}": "মাইক্রোফোন ব্যবহারের অনুমতি পাওয়া যায়নি: {{error}}",
"Personalization": "",
"Plain text (.txt)": "",
"Personalization": "ডিজিটাল বাংলা",
"Plain text (.txt)": "প্লায়েন টেক্সট (.txt)",
"Playground": "খেলাঘর",
"Positive attitude": "",
"Previous 30 days": "",
"Previous 7 days": "",
"Profile Image": "",
"Prompt": "",
"Prompt (e.g. Tell me a fun fact about the Roman Empire)": "",
"Positive attitude": "পজিটিভ আক্রমণ",
"Previous 30 days": "পূর্ব ৩০ দিন",
"Previous 7 days": "পূর্ব ৭ দিন",
"Profile Image": "প্রোফাইল ইমেজ",
"Prompt": "প্রম্প্ট",
"Prompt (e.g. Tell me a fun fact about the Roman Empire)": "প্রম্প্ট (উদাহরণস্বরূপ, আমি রোমান ইমপার্টের সম্পর্কে একটি উপস্থিতি জানতে বল)",
"Prompt Content": "প্রম্পট কন্টেন্ট",
"Prompt suggestions": "প্রম্পট সাজেশনসমূহ",
"Prompts": "প্রম্পটসমূহ",
"Pull \"{{searchValue}}\" from Ollama.com": "",
"Pull \"{{searchValue}}\" from Ollama.com": "Ollama.com থেকে \"{{searchValue}}\" টানুন",
"Pull a model from Ollama.com": "Ollama.com থেকে একটি টেনে আনুন আনুন",
"Pull Progress": "Pull চলমান",
"Query Params": "Query প্যারামিটারসমূহ",
"RAG Template": "RAG টেম্পলেট",
"Raw Format": "Raw ফরম্যাট",
"Read Aloud": "",
"Read Aloud": "পড়াশোনা করুন",
"Record voice": "ভয়েস রেকর্ড করুন",
"Redirecting you to OpenWebUI Community": "আপনাকে OpenWebUI কমিউনিটিতে পাঠানো হচ্ছে",
"Refused when it shouldn't have": "",
"Regenerate": "",
"Refused when it shouldn't have": "যদি উপযুক্ত নয়, তবে রেজিগেনেট করা হচ্ছে",
"Regenerate": "রেজিগেনেট করুন",
"Release Notes": "রিলিজ নোটসমূহ",
"Remove": "",
"Remove Model": "",
"Rename": "",
"Remove": "রিমুভ করুন",
"Remove Model": "মডেল রিমুভ করুন",
"Rename": "রেনেম",
"Repeat Last N": "রিপিট Last N",
"Repeat Penalty": "রিপিট প্যানাল্টি",
"Request Mode": "রিকোয়েস্ট মোড",
"Reranking Model": "",
"Reranking model disabled": "",
"Reranking model set to \"{{reranking_model}}\"": "",
"Reranking Model": "রির্যাক্টিং মডেল",
"Reranking model disabled": "রির্যাক্টিং মডেল নিষ্ক্রিয় করা",
"Reranking model set to \"{{reranking_model}}\"": "রির ্যাঙ্কিং মডেল \"{{reranking_model}}\" -এ সেট করা আছে",
"Reset Vector Storage": "ভেক্টর স্টোরেজ রিসেট করুন",
"Response AutoCopy to Clipboard": "রেসপন্সগুলো স্বয়ংক্রিভাবে ক্লিপবোর্ডে কপি হবে",
"Role": "পদবি",
"Rosé Pine": "রোজ পাইন",
"Rosé Pine Dawn": "ভোরের রোজ পাইন",
"RTL": "",
"RTL": "RTL",
"Save": "সংরক্ষণ",
"Save & Create": "সংরক্ষণ এবং তৈরি করুন",
"Save & Update": "সংরক্ষণ এবং আপডেট করুন",
......@@ -387,7 +387,7 @@
"Scan complete!": "স্ক্যান সম্পন্ন হয়েছে!",
"Scan for documents from {{path}}": "ডকুমেন্টসমূহের জন্য {{path}} স্ক্যান করুন",
"Search": "অনুসন্ধান",
"Search a model": "",
"Search a model": "মডেল অনুসন্ধান করুন",
"Search Documents": "ডকুমেন্টসমূহ অনুসন্ধান করুন",
"Search Prompts": "প্রম্পটসমূহ অনুসন্ধান করুন",
"See readme.md for instructions": "নির্দেশিকার জন্য readme.md দেখুন",
......@@ -398,35 +398,35 @@
"Select an Ollama instance": "একটি Ollama ইন্সট্যান্স নির্বাচন করুন",
"Select model": "মডেল নির্বাচন করুন",
"Selected models do not support image inputs": "",
"Send": "",
"Send": "পাঠান",
"Send a Message": "একটি মেসেজ পাঠান",
"Send message": "মেসেজ পাঠান",
"September": "",
"September": "সেপ্টেম্বর",
"Server connection verified": "সার্ভার কানেকশন যাচাই করা হয়েছে",
"Set as default": "ডিফল্ট হিসেবে নির্ধারণ করুন",
"Set Default Model": "ডিফল্ট মডেল নির্ধারণ করুন",
"Set embedding model (e.g. {{model}})": "",
"Set embedding model (e.g. {{model}})": "ইমেম্বিং মডেল নির্ধারণ করুন (উদাহরণ {{model}})",
"Set Image Size": "ছবির সাইজ নির্ধারণ করুন",
"Set Model": "মডেল নির্ধারণ করুন",
"Set reranking model (e.g. {{model}})": "",
"Set reranking model (e.g. {{model}})": "রি-র্যাংকিং মডেল নির্ধারণ করুন (উদাহরণ {{model}})",
"Set Steps": "পরবর্তী ধাপসমূহ",
"Set Title Auto-Generation Model": "শিরোনাম অটোজেনারেশন মডেন নির্ধারণ করুন",
"Set Voice": "কন্ঠস্বর নির্ধারণ করুন",
"Settings": "সেটিংসমূহ",
"Settings saved successfully!": "সেটিংগুলো সফলভাবে সংরক্ষিত হয়েছে",
"Share": "",
"Share Chat": "",
"Share": "শেয়ার করুন",
"Share Chat": "চ্যাট শেয়ার করুন",
"Share to OpenWebUI Community": "OpenWebUI কমিউনিটিতে শেয়ার করুন",
"short-summary": "সংক্ষিপ্ত বিবরণ",
"Show": "দেখান",
"Show Additional Params": "অতিরিক্ত প্যারামিটারগুলো দেখান",
"Show shortcuts": "শর্টকাটগুলো দেখান",
"Showcased creativity": "",
"Showcased creativity": "সৃজনশীলতা প্রদর্শন",
"sidebar": "সাইডবার",
"Sign in": "সাইন ইন",
"Sign Out": "সাইন আউট",
"Sign up": "সাইন আপ",
"Signing in": "",
"Signing in": "সাইন ইন",
"Source": "উৎস",
"Speech recognition error: {{error}}": "স্পিচ রিকগনিশনে সমস্যা: {{error}}",
"Speech-to-Text Engine": "স্পিচ-টু-টেক্সট ইঞ্জিন",
......@@ -434,37 +434,37 @@
"Stop Sequence": "সিকোয়েন্স থামান",
"STT Settings": "STT সেটিংস",
"Submit": "সাবমিট",
"Subtitle (e.g. about the Roman Empire)": "",
"Subtitle (e.g. about the Roman Empire)": "সাবটাইটল (রোমান ইম্পার্টের সম্পর্কে)",
"Success": "সফল",
"Successfully updated.": "সফলভাবে আপডেট হয়েছে",
"Suggested": "",
"Suggested": "প্রস্তাবিত",
"Sync All": "সব সিংক্রোনাইজ করুন",
"System": "সিস্টেম",
"System Prompt": "সিস্টেম প্রম্পট",
"Tags": "ট্যাগসমূহ",
"Tell us more:": "",
"Tell us more:": "আরও বলুন:",
"Temperature": "তাপমাত্রা",
"Template": "টেম্পলেট",
"Text Completion": "লেখা সম্পন্নকরণ",
"Text-to-Speech Engine": "টেক্সট-টু-স্পিচ ইঞ্জিন",
"Tfs Z": "Tfs Z",
"Thanks for your feedback!": "",
"The score should be a value between 0.0 (0%) and 1.0 (100%).": "",
"Thanks for your feedback!": "আপনার মতামত ধন্যবাদ!",
"The score should be a value between 0.0 (0%) and 1.0 (100%).": "স্কোর একটি 0.0 (0%) এবং 1.0 (100%) এর মধ্যে একটি মান হওয়া উচিত।",
"Theme": "থিম",
"This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "এটা নিশ্চিত করে যে, আপনার গুরুত্বপূর্ণ আলোচনা নিরাপদে আপনার ব্যাকএন্ড ডেটাবেজে সংরক্ষিত আছে। ধন্যবাদ!",
"This setting does not sync across browsers or devices.": "এই সেটিং অন্যন্য ব্রাউজার বা ডিভাইসের সাথে সিঙ্ক্রোনাইজ নয় না।",
"Thorough explanation": "",
"Thorough explanation": "পুঙ্খানুপুঙ্খ ব্যাখ্যা",
"Tip: Update multiple variable slots consecutively by pressing the tab key in the chat input after each replacement.": "পরামর্শ: একাধিক ভেরিয়েবল স্লট একের পর এক রিপ্লেস করার জন্য চ্যাট ইনপুটে কিবোর্ডের Tab বাটন ব্যবহার করুন।",
"Title": "শিরোনাম",
"Title (e.g. Tell me a fun fact)": "",
"Title (e.g. Tell me a fun fact)": "শিরোনাম (একটি উপস্থিতি বিবরণ জানান)",
"Title Auto-Generation": "স্বয়ংক্রিয় শিরোনামগঠন",
"Title cannot be an empty string.": "",
"Title cannot be an empty string.": "শিরোনাম অবশ্যই একটি পাশাপাশি শব্দ হতে হবে।",
"Title Generation Prompt": "শিরোনামগঠন প্রম্পট",
"to": "প্রতি",
"To access the available model names for downloading,": "ডাউনলোডের জন্য এভেইলএবল মডেলের নামগুলো এক্সেস করতে,",
"To access the GGUF models available for downloading,": "ডাউলোডের জন্য এভেইলএবল GGUF মডেলগুলো এক্সেস করতে,",
"to chat input.": "চ্যাট ইনপুটে",
"Today": "",
"Today": "আজ",
"Toggle settings": "সেটিংস টোগল",
"Toggle sidebar": "সাইডবার টোগল",
"Top K": "Top K",
......@@ -474,7 +474,7 @@
"Type Hugging Face Resolve (Download) URL": "Hugging Face থেকে ডাউনলোড করার ইউআরএল টাইপ করুন",
"Uh-oh! There was an issue connecting to {{provider}}.": "ওহ-হো! {{provider}} এর সাথে কানেকশনে সমস্যা হয়েছে।",
"Unknown File Type '{{file_type}}', but accepting and treating as plain text": "অপরিচিত ফাইল ফরম্যাট '{{file_type}}', তবে প্লেইন টেক্সট হিসেবে গ্রহণ করা হলো",
"Update and Copy Link": "",
"Update and Copy Link": "আপডেট এবং লিংক কপি করুন",
"Update password": "পাসওয়ার্ড আপডেট করুন",
"Upload a GGUF model": "একটি GGUF মডেল আপলোড করুন",
"Upload files": "ফাইলগুলো আপলোড করুন",
......@@ -491,27 +491,27 @@
"variable": "ভেরিয়েবল",
"variable to have them replaced with clipboard content.": "ক্লিপবোর্ডের কন্টেন্ট দিয়ে যেই ভেরিয়েবল রিপ্লেস করা যাবে।",
"Version": "ভার্সন",
"Warning: If you update or change your embedding model, you will need to re-import all documents.": "",
"Warning: If you update or change your embedding model, you will need to re-import all documents.": "সতর্কীকরণ: আপনি যদি আপনার এম্বেডিং মডেল আপডেট বা পরিবর্তন করেন, তাহলে আপনাকে সমস্ত নথি পুনরায় আমদানি করতে হবে।.",
"Web": "ওয়েব",
"Web Loader Settings": "",
"Web Params": "",
"Webhook URL": "",
"Web Loader Settings": "ওয়েব লোডার সেটিংস",
"Web Params": "ওয়েব প্যারামিটারসমূহ",
"Webhook URL": "ওয়েবহুক URL",
"WebUI Add-ons": "WebUI এড-অনসমূহ",
"WebUI Settings": "WebUI সেটিংসমূহ",
"WebUI will make requests to": "WebUI যেখানে রিকোয়েস্ট পাঠাবে",
"What’s New in": "এতে নতুন কী",
"When history is turned off, new chats on this browser won't appear in your history on any of your devices.": "যদি হিস্টোরি বন্ধ থাকে তাহলে এই ব্রাউজারের নতুন চ্যাটগুলো আপনার কোন ডিভাইসের হিস্টোরিতেই দেখা যাবে না।",
"Whisper (Local)": "Whisper (লোকাল)",
"Workspace": "",
"Workspace": "ওয়ার্কস্পেস",
"Write a prompt suggestion (e.g. Who are you?)": "একটি প্রম্পট সাজেশন লিখুন (যেমন Who are you?)",
"Write a summary in 50 words that summarizes [topic or keyword].": "৫০ শব্দের মধ্যে [topic or keyword] এর একটি সারসংক্ষেপ লিখুন।",
"Yes": "",
"Yesterday": "",
"You": "",
"You have no archived conversations.": "",
"You have shared this chat": "",
"Yesterday": "আগামী",
"You": "আপনি",
"You have no archived conversations.": "আপনার কোনও আর্কাইভ করা কথোপকথন নেই।",
"You have shared this chat": "আপনি এই চ্যাটটি শেয়ার করেছেন",
"You're a helpful assistant.": "আপনি একজন উপকারী এসিস্ট্যান্ট",
"You're now logged in.": "আপনি এখন লগইন করা অবস্থায় আছেন",
"Youtube": "",
"Youtube Loader Settings": ""
"Youtube": "YouTube",
"Youtube Loader Settings": "YouTube লোডার সেটিংস"
}
......@@ -4,14 +4,14 @@
"(e.g. `sh webui.sh --api`)": "(p. ex. `sh webui.sh --api`)",
"(latest)": "(últim)",
"{{modelName}} is thinking...": "{{modelName}} està pensant...",
"{{user}}'s Chats": "",
"{{user}}'s Chats": "{{user}}'s Chats",
"{{webUIName}} Backend Required": "Es requereix Backend de {{webUIName}}",
"A selected model does not support image input": "",
"a user": "un usuari",
"About": "Sobre",
"Account": "Compte",
"Accurate information": "",
"Add": "",
"Accurate information": "Informació precisa",
"Add": "Afegir",
"Add a model": "Afegeix un model",
"Add a model tag name": "Afegeix un nom d'etiqueta de model",
"Add a short description about what this modelfile does": "Afegeix una descripció curta del que fa aquest arxiu de model",
......@@ -20,18 +20,18 @@
"Add custom prompt": "Afegir un prompt personalitzat",
"Add Docs": "Afegeix Documents",
"Add Files": "Afegeix Arxius",
"Add Memory": "",
"Add Memory": "Afegir Memòria",
"Add message": "Afegeix missatge",
"Add Model": "",
"Add Model": "Afegir Model",
"Add Tags": "afegeix etiquetes",
"Add User": "",
"Add User": "Afegir Usuari",
"Adjusting these settings will apply changes universally to all users.": "Ajustar aquests paràmetres aplicarà canvis de manera universal a tots els usuaris.",
"admin": "administrador",
"Admin Panel": "Panell d'Administració",
"Admin Settings": "Configuració d'Administració",
"Advanced Parameters": "Paràmetres Avançats",
"all": "tots",
"All Documents": "",
"All Documents": "Tots els Documents",
"All selected models do not support image input, removed images": "",
"All Users": "Tots els Usuaris",
"Allow": "Permet",
......@@ -40,38 +40,38 @@
"Already have an account?": "Ja tens un compte?",
"an assistant": "un assistent",
"and": "i",
"and create a new shared link.": "",
"and create a new shared link.": "i crear un nou enllaç compartit.",
"API Base URL": "URL Base de l'API",
"API Key": "Clau de l'API",
"API Key created.": "",
"API keys": "",
"API Key created.": "Clau de l'API creada.",
"API keys": "Claus de l'API",
"API RPM": "RPM de l'API",
"April": "",
"Archive": "",
"April": "Abril",
"Archive": "Arxiu",
"Archived Chats": "Arxiu d'historial de xat",
"are allowed - Activate this command by typing": "estan permesos - Activa aquesta comanda escrivint",
"Are you sure?": "Estàs segur?",
"Attach file": "Adjuntar arxiu",
"Attention to detail": "Detall atent",
"Audio": "Àudio",
"August": "",
"August": "Agost",
"Auto-playback response": "Resposta de reproducció automàtica",
"Auto-send input after 3 sec.": "Enviar entrada automàticament després de 3 segons",
"AUTOMATIC1111 Base URL": "URL Base AUTOMATIC1111",
"AUTOMATIC1111 Base URL is required.": "Es requereix l'URL Base AUTOMATIC1111.",
"available!": "disponible!",
"Back": "Enrere",
"Bad Response": "",
"before": "",
"Being lazy": "",
"Bad Response": "Resposta Erroni",
"before": "abans",
"Being lazy": "Ser l'estupidez",
"Builder Mode": "Mode Constructor",
"Bypass SSL verification for Websites": "",
"Bypass SSL verification for Websites": "Desactivar la verificació SSL per a l'accés a l'Internet",
"Cancel": "Cancel·la",
"Categories": "Categories",
"Change Password": "Canvia la Contrasenya",
"Chat": "Xat",
"Chat Bubble UI": "",
"Chat direction": "",
"Chat Bubble UI": "Chat Bubble UI",
"Chat direction": "Direcció del Xat",
"Chat History": "Històric del Xat",
"Chat History is off for this browser.": "L'historial de xat està desactivat per a aquest navegador.",
"Chats": "Xats",
......@@ -84,66 +84,66 @@
"Chunk Size": "Mida del Bloc",
"Citation": "Citació",
"Click here for help.": "Fes clic aquí per ajuda.",
"Click here to": "",
"Click here to": "Fes clic aquí per",
"Click here to check other modelfiles.": "Fes clic aquí per comprovar altres fitxers de model.",
"Click here to select": "Fes clic aquí per seleccionar",
"Click here to select a csv file.": "",
"Click here to select a csv file.": "Fes clic aquí per seleccionar un fitxer csv.",
"Click here to select documents.": "Fes clic aquí per seleccionar documents.",
"click here.": "fes clic aquí.",
"Click on the user role button to change a user's role.": "Fes clic al botó de rol d'usuari per canviar el rol d'un usuari.",
"Close": "Tanca",
"Collection": "Col·lecció",
"ComfyUI": "",
"ComfyUI Base URL": "",
"ComfyUI Base URL is required.": "",
"ComfyUI": "ComfyUI",
"ComfyUI Base URL": "URL base de ComfyUI",
"ComfyUI Base URL is required.": "URL base de ComfyUI és obligatòria.",
"Command": "Comanda",
"Confirm Password": "Confirma la Contrasenya",
"Connections": "Connexions",
"Content": "Contingut",
"Context Length": "Longitud del Context",
"Continue Response": "",
"Continue Response": "Continua la Resposta",
"Conversation Mode": "Mode de Conversa",
"Copied shared chat URL to clipboard!": "",
"Copy": "",
"Copied shared chat URL to clipboard!": "S'ha copiat l'URL compartida al porta-retalls!",
"Copy": "Copiar",
"Copy last code block": "Copia l'últim bloc de codi",
"Copy last response": "Copia l'última resposta",
"Copy Link": "",
"Copy Link": "Copiar l'enllaç",
"Copying to clipboard was successful!": "La còpia al porta-retalls ha estat exitosa!",
"Create a concise, 3-5 word phrase as a header for the following query, strictly adhering to the 3-5 word limit and avoiding the use of the word 'title':": "Crea una frase concisa de 3-5 paraules com a capçalera per a la següent consulta, seguint estrictament el límit de 3-5 paraules i evitant l'ús de la paraula 'títol':",
"Create a modelfile": "Crea un fitxer de model",
"Create Account": "Crea un Compte",
"Create new key": "",
"Create new secret key": "",
"Create new key": "Crea una nova clau",
"Create new secret key": "Crea una nova clau secreta",
"Created at": "Creat el",
"Created At": "",
"Created At": "Creat el",
"Current Model": "Model Actual",
"Current Models": "",
"Current Password": "Contrasenya Actual",
"Custom": "Personalitzat",
"Customize Ollama models for a specific purpose": "Personalitza els models Ollama per a un propòsit específic",
"Dark": "Fosc",
"Dashboard": "",
"Dashboard": "Tauler",
"Database": "Base de Dades",
"December": "",
"December": "Desembre",
"Default": "Per defecte",
"Default (Automatic1111)": "Per defecte (Automatic1111)",
"Default (SentenceTransformers)": "",
"Default (SentenceTransformers)": "Per defecte (SentenceTransformers)",
"Default (Web API)": "Per defecte (Web API)",
"Default model updated": "Model per defecte actualitzat",
"Default Prompt Suggestions": "Suggeriments de Prompt Per Defecte",
"Default User Role": "Rol d'Usuari Per Defecte",
"delete": "esborra",
"Delete": "",
"Delete": "Esborra",
"Delete a model": "Esborra un model",
"Delete chat": "Esborra xat",
"Delete Chat": "",
"Delete Chat": "Esborra Xat",
"Delete Chats": "Esborra Xats",
"delete this link": "",
"Delete User": "",
"delete this link": "Esborra aquest enllaç",
"Delete User": "Esborra Usuari",
"Deleted {{deleteModelTag}}": "Esborrat {{deleteModelTag}}",
"Deleted {{tagName}}": "",
"Deleted {{tagName}}": "Esborrat {{tagName}}",
"Description": "Descripció",
"Didn't fully follow instructions": "",
"Didn't fully follow instructions": "No s'ha completat els instruccions",
"Disabled": "Desactivat",
"Discover a modelfile": "Descobreix un fitxer de model",
"Discover a prompt": "Descobreix un prompt",
......@@ -156,29 +156,29 @@
"does not make any external connections, and your data stays securely on your locally hosted server.": "no realitza connexions externes, i les teves dades romanen segures al teu servidor allotjat localment.",
"Don't Allow": "No Permetre",
"Don't have an account?": "No tens un compte?",
"Don't like the style": "",
"Download": "",
"Download canceled": "",
"Don't like the style": "No t'agrada l'estil?",
"Download": "Descarregar",
"Download canceled": "Descàrrega cancel·lada",
"Download Database": "Descarrega Base de Dades",
"Drop any files here to add to the conversation": "Deixa qualsevol arxiu aquí per afegir-lo a la conversa",
"e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "p. ex. '30s','10m'. Les unitats de temps vàlides són 's', 'm', 'h'.",
"Edit": "",
"Edit": "Editar",
"Edit Doc": "Edita Document",
"Edit User": "Edita Usuari",
"Email": "Correu electrònic",
"Embedding Model": "",
"Embedding Model Engine": "",
"Embedding model set to \"{{embedding_model}}\"": "",
"Embedding Model": "Model d'embutiment",
"Embedding Model Engine": "Motor de model d'embutiment",
"Embedding model set to \"{{embedding_model}}\"": "Model d'embutiment configurat a \"{{embedding_model}}\"",
"Enable Chat History": "Activa Historial de Xat",
"Enable New Sign Ups": "Permet Noves Inscripcions",
"Enabled": "Activat",
"Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "",
"Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "Assegura't que el fitxer CSV inclou 4 columnes en aquest ordre: Nom, Correu Electrònic, Contrasenya, Rol.",
"Enter {{role}} message here": "Introdueix aquí el missatge de {{role}}",
"Enter a detail about yourself for your LLMs to recall": "",
"Enter a detail about yourself for your LLMs to recall": "Introdueix un detall sobre tu per que els LLMs puguin recordar-te",
"Enter Chunk Overlap": "Introdueix el Solapament de Blocs",
"Enter Chunk Size": "Introdueix la Mida del Bloc",
"Enter Image Size (e.g. 512x512)": "Introdueix la Mida de la Imatge (p. ex. 512x512)",
"Enter language codes": "",
"Enter language codes": "Introdueix els codis de llenguatge",
"Enter LiteLLM API Base URL (litellm_params.api_base)": "Introdueix l'URL Base de LiteLLM API (litellm_params.api_base)",
"Enter LiteLLM API Key (litellm_params.api_key)": "Introdueix la Clau de LiteLLM API (litellm_params.api_key)",
"Enter LiteLLM API RPM (litellm_params.rpm)": "Introdueix RPM de LiteLLM API (litellm_params.rpm)",
......@@ -187,46 +187,46 @@
"Enter Model Display Name": "",
"Enter model tag (e.g. {{modelTag}})": "Introdueix l'etiqueta del model (p. ex. {{modelTag}})",
"Enter Number of Steps (e.g. 50)": "Introdueix el Nombre de Passos (p. ex. 50)",
"Enter Score": "",
"Enter Score": "Introdueix el Puntuació",
"Enter stop sequence": "Introdueix la seqüència de parada",
"Enter Top K": "Introdueix Top K",
"Enter URL (e.g. http://127.0.0.1:7860/)": "Introdueix l'URL (p. ex. http://127.0.0.1:7860/)",
"Enter URL (e.g. http://localhost:11434)": "",
"Enter URL (e.g. http://localhost:11434)": "Introdueix l'URL (p. ex. http://localhost:11434)",
"Enter Your Email": "Introdueix el Teu Correu Electrònic",
"Enter Your Full Name": "Introdueix el Teu Nom Complet",
"Enter Your Password": "Introdueix la Teva Contrasenya",
"Enter Your Role": "",
"Enter Your Role": "Introdueix el Teu Ròl",
"Experimental": "Experimental",
"Export All Chats (All Users)": "Exporta Tots els Xats (Tots els Usuaris)",
"Export Chats": "Exporta Xats",
"Export Documents Mapping": "Exporta el Mapatge de Documents",
"Export Modelfiles": "Exporta Fitxers de Model",
"Export Prompts": "Exporta Prompts",
"Failed to create API Key.": "",
"Failed to create API Key.": "No s'ha pogut crear la clau d'API.",
"Failed to read clipboard contents": "No s'ha pogut llegir el contingut del porta-retalls",
"February": "",
"Feel free to add specific details": "",
"February": "Febrer",
"Feel free to add specific details": "Siusplau, afegeix detalls específics",
"File Mode": "Mode Arxiu",
"File not found.": "Arxiu no trobat.",
"Fingerprint spoofing detected: Unable to use initials as avatar. Defaulting to default profile image.": "",
"Fingerprint spoofing detected: Unable to use initials as avatar. Defaulting to default profile image.": "S'ha detectat la suplantació d'identitat d'empremtes digitals: no es poden utilitzar les inicials com a avatar. Per defecte a la imatge de perfil predeterminada.",
"Fluidly stream large external response chunks": "Transmita con fluidez grandes fragmentos de respuesta externa",
"Focus chat input": "Enfoca l'entrada del xat",
"Followed instructions perfectly": "",
"Followed instructions perfectly": "Siguiu les instruccions perfeicte",
"Format your variables using square brackets like this:": "Formata les teves variables utilitzant claudàtors així:",
"From (Base Model)": "Des de (Model Base)",
"Full Screen Mode": "Mode de Pantalla Completa",
"General": "General",
"General Settings": "Configuració General",
"Generation Info": "",
"Good Response": "",
"h:mm a": "",
"has no conversations.": "",
"Generation Info": "Informació de Generació",
"Good Response": "Resposta bona",
"h:mm a": "h:mm a",
"has no conversations.": "no té converses.",
"Hello, {{name}}": "Hola, {{name}}",
"Help": "",
"Help": "Ajuda",
"Hide": "Amaga",
"Hide Additional Params": "Amaga Paràmetres Addicionals",
"How can I help you today?": "Com et puc ajudar avui?",
"Hybrid Search": "",
"Hybrid Search": "Cerca Hibrida",
"Image Generation (Experimental)": "Generació d'Imatges (Experimental)",
"Image Generation Engine": "Motor de Generació d'Imatges",
"Image Settings": "Configuració d'Imatges",
......@@ -238,42 +238,42 @@
"Include `--api` flag when running stable-diffusion-webui": "Inclou la bandera `--api` quan executis stable-diffusion-webui",
"Input commands": "Entra ordres",
"Interface": "Interfície",
"Invalid Tag": "",
"Invalid Tag": "Etiqueta Inválida",
"Is Model Vision Capable": "",
"January": "",
"January": "Gener",
"join our Discord for help.": "uneix-te al nostre Discord per ajuda.",
"JSON": "JSON",
"July": "",
"June": "",
"July": "Juliol",
"June": "Juny",
"JWT Expiration": "Expiració de JWT",
"JWT Token": "Token JWT",
"Keep Alive": "Mantén Actiu",
"Keyboard shortcuts": "Dreceres de Teclat",
"Language": "Idioma",
"Last Active": "",
"Last Active": "Últim Actiu",
"Light": "Clar",
"Listening...": "Escoltant...",
"LLMs can make mistakes. Verify important information.": "Els LLMs poden cometre errors. Verifica la informació important.",
"LTR": "",
"LTR": "LTR",
"Made by OpenWebUI Community": "Creat per la Comunitat OpenWebUI",
"Make sure to enclose them with": "Assegura't d'envoltar-los amb",
"Manage LiteLLM Models": "Gestiona Models LiteLLM",
"Manage Model Information": "",
"Manage Models": "Gestiona Models",
"Manage Ollama Models": "Gestiona Models Ollama",
"March": "",
"March": "Març",
"Max Tokens": "Màxim de Tokens",
"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "Es poden descarregar un màxim de 3 models simultàniament. Si us plau, prova-ho més tard.",
"May": "",
"Memories accessible by LLMs will be shown here.": "",
"Memory": "",
"Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "",
"Minimum Score": "",
"May": "Maig",
"Memories accessible by LLMs will be shown here.": "Els memòries accessible per a LLMs es mostraran aquí.",
"Memory": "Memòria",
"Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "Els missatges que envieu després de crear el vostre enllaç no es compartiran. Els usuaris amb l'URL podran veure el xat compartit.",
"Minimum Score": "Puntuació mínima",
"Mirostat": "Mirostat",
"Mirostat Eta": "Eta de Mirostat",
"Mirostat Tau": "Tau de Mirostat",
"MMMM DD, YYYY": "DD de MMMM, YYYY",
"MMMM DD, YYYY HH:mm": "",
"MMMM DD, YYYY HH:mm": "DD de MMMM, YYYY HH:mm",
"Model '{{modelName}}' has been successfully downloaded.": "El model '{{modelName}}' s'ha descarregat amb èxit.",
"Model '{{modelTag}}' is already in queue for downloading.": "El model '{{modelTag}}' ja està en cua per ser descarregat.",
"Model {{modelId}} not found": "Model {{modelId}} no trobat",
......@@ -281,7 +281,7 @@
"Model {{modelName}} is not vision capable": "",
"Model Description": "",
"Model Display Name": "",
"Model filesystem path detected. Model shortname is required for update, cannot continue.": "",
"Model filesystem path detected. Model shortname is required for update, cannot continue.": "S'ha detectat el camí del sistema de fitxers del model. És necessari un nom curt del model per a actualitzar, no es pot continuar.",
"Model info for {{modelName}} added successfully": "",
"Model info for {{modelName}} deleted successfully": "",
"Model Name": "Nom del Model",
......@@ -294,26 +294,26 @@
"Modelfile Content": "Contingut del Fitxer de Model",
"Modelfiles": "Fitxers de Model",
"Models": "Models",
"More": "",
"More": "Més",
"Name": "Nom",
"Name Tag": "Etiqueta de Nom",
"Name your modelfile": "Nomena el teu fitxer de model",
"New Chat": "Xat Nou",
"New Password": "Nova Contrasenya",
"No": "",
"No results found": "",
"No results found": "No s'han trobat resultats",
"No source available": "Sense font disponible",
"Not factually correct": "",
"Not factually correct": "No està clarament correcte",
"Not sure what to add?": "No estàs segur del que afegir?",
"Not sure what to write? Switch to": "No estàs segur del que escriure? Canvia a",
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "",
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "Nota: Si establiscs una puntuació mínima, la cerca només retornarà documents amb una puntuació major o igual a la puntuació mínima.",
"Notifications": "Notificacions d'Escriptori",
"November": "",
"October": "",
"November": "Novembre",
"October": "Octubre",
"Off": "Desactivat",
"Okay, Let's Go!": "D'acord, Anem!",
"OLED Dark": "",
"Ollama": "",
"OLED Dark": "OLED Fosc",
"Ollama": "Ollama",
"Ollama Base URL": "URL Base d'Ollama",
"Ollama Version": "Versió d'Ollama",
"On": "Activat",
......@@ -326,59 +326,59 @@
"Open AI": "Open AI",
"Open AI (Dall-E)": "Open AI (Dall-E)",
"Open new chat": "Obre un nou xat",
"OpenAI": "",
"OpenAI": "OpenAI",
"OpenAI API": "API d'OpenAI",
"OpenAI API Config": "",
"OpenAI API Config": "Configuració de l'API d'OpenAI",
"OpenAI API Key is required.": "Es requereix la Clau API d'OpenAI.",
"OpenAI URL/Key required.": "",
"OpenAI URL/Key required.": "URL/Clau d'OpenAI requerides.",
"or": "o",
"Other": "",
"Overview": "",
"Other": "Altres",
"Overview": "Visió general",
"Parameters": "Paràmetres",
"Password": "Contrasenya",
"PDF document (.pdf)": "",
"PDF document (.pdf)": "Document PDF (.pdf)",
"PDF Extract Images (OCR)": "Extreu Imatges de PDF (OCR)",
"pending": "pendent",
"Permission denied when accessing microphone: {{error}}": "Permís denegat en accedir al micròfon: {{error}}",
"Personalization": "",
"Plain text (.txt)": "",
"Personalization": "Personalització",
"Plain text (.txt)": "Text pla (.txt)",
"Playground": "Zona de Jocs",
"Positive attitude": "",
"Previous 30 days": "",
"Previous 7 days": "",
"Profile Image": "",
"Prompt": "",
"Prompt (e.g. Tell me a fun fact about the Roman Empire)": "",
"Positive attitude": "Attitudin positiva",
"Previous 30 days": "30 dies anteriors",
"Previous 7 days": "7 dies anteriors",
"Profile Image": "Imatge de perfil",
"Prompt": "Prompt",
"Prompt (e.g. Tell me a fun fact about the Roman Empire)": "Prompt (p.ex. diu-me un fàcte divertit sobre l'Imperi Roman)",
"Prompt Content": "Contingut del Prompt",
"Prompt suggestions": "Suggeriments de Prompt",
"Prompts": "Prompts",
"Pull \"{{searchValue}}\" from Ollama.com": "",
"Pull \"{{searchValue}}\" from Ollama.com": "Treu \"{{searchValue}}\" de Ollama.com",
"Pull a model from Ollama.com": "Treu un model d'Ollama.com",
"Pull Progress": "Progrés de Tracció",
"Query Params": "Paràmetres de Consulta",
"RAG Template": "Plantilla RAG",
"Raw Format": "Format Brut",
"Read Aloud": "",
"Read Aloud": "Llegiu al voltant",
"Record voice": "Enregistra veu",
"Redirecting you to OpenWebUI Community": "Redirigint-te a la Comunitat OpenWebUI",
"Refused when it shouldn't have": "",
"Regenerate": "",
"Refused when it shouldn't have": "Refusat quan no hauria d'haver-ho",
"Regenerate": "Regenerar",
"Release Notes": "Notes de la Versió",
"Remove": "",
"Remove Model": "",
"Rename": "",
"Remove": "Elimina",
"Remove Model": "Elimina Model",
"Rename": "Canvia el nom",
"Repeat Last N": "Repeteix Últim N",
"Repeat Penalty": "Penalització de Repetició",
"Request Mode": "Mode de Sol·licitud",
"Reranking Model": "",
"Reranking model disabled": "",
"Reranking model set to \"{{reranking_model}}\"": "",
"Reranking Model": "Model de Reranking desactivat",
"Reranking model disabled": "Model de Reranking desactivat",
"Reranking model set to \"{{reranking_model}}\"": "Model de Reranking establert a \"{{reranking_model}}\"",
"Reset Vector Storage": "Reinicia l'Emmagatzematge de Vectors",
"Response AutoCopy to Clipboard": "Resposta AutoCopiar al Portapapers",
"Role": "Rol",
"Rosé Pine": "Rosé Pine",
"Rosé Pine Dawn": "Albada Rosé Pine",
"RTL": "",
"RTL": "RTL",
"Save": "Guarda",
"Save & Create": "Guarda i Crea",
"Save & Update": "Guarda i Actualitza",
......@@ -387,7 +387,7 @@
"Scan complete!": "Escaneig completat!",
"Scan for documents from {{path}}": "Escaneja documents des de {{path}}",
"Search": "Cerca",
"Search a model": "",
"Search a model": "Cerca un model",
"Search Documents": "Cerca Documents",
"Search Prompts": "Cerca Prompts",
"See readme.md for instructions": "Consulta el readme.md per a instruccions",
......@@ -398,35 +398,35 @@
"Select an Ollama instance": "Selecciona una instància d'Ollama",
"Select model": "Selecciona un model",
"Selected models do not support image inputs": "",
"Send": "",
"Send": "Envia",
"Send a Message": "Envia un Missatge",
"Send message": "Envia missatge",
"September": "",
"September": "Setembre",
"Server connection verified": "Connexió al servidor verificada",
"Set as default": "Estableix com a predeterminat",
"Set Default Model": "Estableix Model Predeterminat",
"Set embedding model (e.g. {{model}})": "",
"Set embedding model (e.g. {{model}})": "Estableix el model d'emboscada (p.ex. {{model}})",
"Set Image Size": "Estableix Mida de la Imatge",
"Set Model": "Estableix Model",
"Set reranking model (e.g. {{model}})": "",
"Set reranking model (e.g. {{model}})": "Estableix el model de reranking (p.ex. {{model}})",
"Set Steps": "Estableix Passos",
"Set Title Auto-Generation Model": "Estableix Model d'Auto-Generació de Títol",
"Set Voice": "Estableix Veu",
"Settings": "Configuracions",
"Settings saved successfully!": "Configuracions guardades amb èxit!",
"Share": "",
"Share Chat": "",
"Share": "Compartir",
"Share Chat": "Compartir el Chat",
"Share to OpenWebUI Community": "Comparteix amb la Comunitat OpenWebUI",
"short-summary": "resum curt",
"Show": "Mostra",
"Show Additional Params": "Mostra Paràmetres Addicionals",
"Show shortcuts": "Mostra dreceres",
"Showcased creativity": "",
"Showcased creativity": "Mostra la creativitat",
"sidebar": "barra lateral",
"Sign in": "Inicia sessió",
"Sign Out": "Tanca sessió",
"Sign up": "Registra't",
"Signing in": "",
"Signing in": "Iniciant sessió",
"Source": "Font",
"Speech recognition error: {{error}}": "Error de reconeixement de veu: {{error}}",
"Speech-to-Text Engine": "Motor de Veu a Text",
......@@ -434,37 +434,37 @@
"Stop Sequence": "Atura Seqüència",
"STT Settings": "Configuracions STT",
"Submit": "Envia",
"Subtitle (e.g. about the Roman Empire)": "",
"Subtitle (e.g. about the Roman Empire)": "Subtítol (per exemple, sobre l'Imperi Romà)",
"Success": "Èxit",
"Successfully updated.": "Actualitzat amb èxit.",
"Suggested": "",
"Suggested": "Suggerit",
"Sync All": "Sincronitza Tot",
"System": "Sistema",
"System Prompt": "Prompt del Sistema",
"Tags": "Etiquetes",
"Tell us more:": "",
"Tell us more:": "Dóna'ns més informació:",
"Temperature": "Temperatura",
"Template": "Plantilla",
"Text Completion": "Completació de Text",
"Text-to-Speech Engine": "Motor de Text a Veu",
"Tfs Z": "Tfs Z",
"Thanks for your feedback!": "",
"The score should be a value between 0.0 (0%) and 1.0 (100%).": "",
"Thanks for your feedback!": "Gràcies pel teu comentari!",
"The score should be a value between 0.0 (0%) and 1.0 (100%).": "El puntuatge ha de ser un valor entre 0.0 (0%) i 1.0 (100%).",
"Theme": "Tema",
"This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "Això assegura que les teves converses valuoses queden segurament guardades a la teva base de dades backend. Gràcies!",
"This setting does not sync across browsers or devices.": "Aquesta configuració no es sincronitza entre navegadors ni dispositius.",
"Thorough explanation": "",
"Thorough explanation": "Explacació exhaustiva",
"Tip: Update multiple variable slots consecutively by pressing the tab key in the chat input after each replacement.": "Consell: Actualitza diversos espais de variables consecutivament prement la tecla de tabulació en l'entrada del xat després de cada reemplaçament.",
"Title": "Títol",
"Title (e.g. Tell me a fun fact)": "",
"Title (e.g. Tell me a fun fact)": "Títol (p. ex. diu-me un fet divertit)",
"Title Auto-Generation": "Auto-Generació de Títol",
"Title cannot be an empty string.": "",
"Title cannot be an empty string.": "El títol no pot ser una cadena buida.",
"Title Generation Prompt": "Prompt de Generació de Títol",
"to": "a",
"To access the available model names for downloading,": "Per accedir als noms dels models disponibles per descarregar,",
"To access the GGUF models available for downloading,": "Per accedir als models GGUF disponibles per descarregar,",
"to chat input.": "a l'entrada del xat.",
"Today": "",
"Today": "Avui",
"Toggle settings": "Commuta configuracions",
"Toggle sidebar": "Commuta barra lateral",
"Top K": "Top K",
......@@ -474,7 +474,7 @@
"Type Hugging Face Resolve (Download) URL": "Escriu URL de Resolució (Descàrrega) de Hugging Face",
"Uh-oh! There was an issue connecting to {{provider}}.": "Uf! Hi va haver un problema connectant-se a {{provider}}.",
"Unknown File Type '{{file_type}}', but accepting and treating as plain text": "Tipus d'Arxiu Desconegut '{{file_type}}', però acceptant i tractant com a text pla",
"Update and Copy Link": "",
"Update and Copy Link": "Actualitza i Copia enllaç",
"Update password": "Actualitza contrasenya",
"Upload a GGUF model": "Puja un model GGUF",
"Upload files": "Puja arxius",
......@@ -482,7 +482,7 @@
"URL Mode": "Mode URL",
"Use '#' in the prompt input to load and select your documents.": "Utilitza '#' a l'entrada del prompt per carregar i seleccionar els teus documents.",
"Use Gravatar": "Utilitza Gravatar",
"Use Initials": "",
"Use Initials": "Utilitza Inicials",
"user": "usuari",
"User Permissions": "Permisos d'Usuari",
"Users": "Usuaris",
......@@ -491,27 +491,27 @@
"variable": "variable",
"variable to have them replaced with clipboard content.": "variable per tenir-les reemplaçades amb el contingut del porta-retalls.",
"Version": "Versió",
"Warning: If you update or change your embedding model, you will need to re-import all documents.": "",
"Warning: If you update or change your embedding model, you will need to re-import all documents.": "Avís: Si actualitzeu o canvieu el model d'incrustació, haureu de tornar a importar tots els documents.",
"Web": "Web",
"Web Loader Settings": "",
"Web Params": "",
"Webhook URL": "",
"Web Loader Settings": "Configuració del carregador web",
"Web Params": "Paràmetres web",
"Webhook URL": "URL del webhook",
"WebUI Add-ons": "Complements de WebUI",
"WebUI Settings": "Configuració de WebUI",
"WebUI will make requests to": "WebUI farà peticions a",
"What’s New in": "Què hi ha de Nou en",
"When history is turned off, new chats on this browser won't appear in your history on any of your devices.": "Quan l'historial està desactivat, els nous xats en aquest navegador no apareixeran en el teu historial en cap dels teus dispositius.",
"Whisper (Local)": "Whisper (Local)",
"Workspace": "",
"Workspace": "Treball",
"Write a prompt suggestion (e.g. Who are you?)": "Escriu una suggerència de prompt (p. ex. Qui ets tu?)",
"Write a summary in 50 words that summarizes [topic or keyword].": "Escriu un resum en 50 paraules que resumeixi [tema o paraula clau].",
"Yes": "",
"Yesterday": "",
"You": "",
"You have no archived conversations.": "",
"You have shared this chat": "",
"Yesterday": "Ayer",
"You": "Tu",
"You have no archived conversations.": "No tens converses arxivades.",
"You have shared this chat": "Has compartit aquest xat",
"You're a helpful assistant.": "Ets un assistent útil.",
"You're now logged in.": "Ara estàs connectat.",
"Youtube": "",
"Youtube Loader Settings": ""
"Youtube": "Youtube",
"Youtube Loader Settings": "Configuració del carregador de Youtube"
}
......@@ -4,14 +4,14 @@
"(e.g. `sh webui.sh --api`)": "(z.B. `sh webui.sh --api`)",
"(latest)": "(neueste)",
"{{modelName}} is thinking...": "{{modelName}} denkt nach...",
"{{user}}'s Chats": "",
"{{user}}'s Chats": "{{user}}s Chats",
"{{webUIName}} Backend Required": "{{webUIName}}-Backend erforderlich",
"A selected model does not support image input": "",
"a user": "ein Benutzer",
"About": "Über",
"Account": "Account",
"Accurate information": "Genaue Information",
"Add": "",
"Add": "Hinzufügen",
"Add a model": "Füge ein Modell hinzu",
"Add a model tag name": "Benenne deinen Modell-Tag",
"Add a short description about what this modelfile does": "Füge eine kurze Beschreibung hinzu, was dieses Modelfile kann",
......@@ -20,7 +20,7 @@
"Add custom prompt": "Eigenen Prompt hinzufügen",
"Add Docs": "Dokumente hinzufügen",
"Add Files": "Dateien hinzufügen",
"Add Memory": "",
"Add Memory": "Speicher hinzufügen",
"Add message": "Nachricht eingeben",
"Add Model": "Modell hinzufügen",
"Add Tags": "Tags hinzufügen",
......@@ -70,8 +70,8 @@
"Categories": "Kategorien",
"Change Password": "Passwort ändern",
"Chat": "Chat",
"Chat Bubble UI": "",
"Chat direction": "",
"Chat Bubble UI": "Chat Bubble UI",
"Chat direction": "Chat Richtung",
"Chat History": "Chat Verlauf",
"Chat History is off for this browser.": "Chat Verlauf ist für diesen Browser ausgeschaltet.",
"Chats": "Chats",
......@@ -93,8 +93,8 @@
"Click on the user role button to change a user's role.": "Klicke auf die Benutzerrollenschaltfläche, um die Rolle eines Benutzers zu ändern.",
"Close": "Schließe",
"Collection": "Kollektion",
"ComfyUI": "",
"ComfyUI Base URL": "",
"ComfyUI": "ComfyUI",
"ComfyUI Base URL": "ComfyUI Base URL",
"ComfyUI Base URL is required.": "ComfyUI Base URL wird benötigt.",
"Command": "Befehl",
"Confirm Password": "Passwort bestätigen",
......@@ -166,19 +166,19 @@
"Edit Doc": "Dokument bearbeiten",
"Edit User": "Benutzer bearbeiten",
"Email": "E-Mail",
"Embedding Model": "",
"Embedding Model Engine": "",
"Embedding model set to \"{{embedding_model}}\"": "",
"Embedding Model": "Embedding-Modell",
"Embedding Model Engine": "Embedding-Modell-Engine",
"Embedding model set to \"{{embedding_model}}\"": "Embedding-Modell auf \"{{embedding_model}}\" gesetzt",
"Enable Chat History": "Chat-Verlauf aktivieren",
"Enable New Sign Ups": "Neue Anmeldungen aktivieren",
"Enabled": "Aktiviert",
"Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "",
"Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "Stellen Sie sicher, dass Ihre CSV-Datei 4 Spalten in dieser Reihenfolge enthält: Name, E-Mail, Passwort, Rolle.",
"Enter {{role}} message here": "Gib die {{role}} Nachricht hier ein",
"Enter a detail about yourself for your LLMs to recall": "",
"Enter a detail about yourself for your LLMs to recall": "Geben Sie einen Detail über sich selbst ein, um für Ihre LLMs zu erinnern",
"Enter Chunk Overlap": "Gib den Chunk Overlap ein",
"Enter Chunk Size": "Gib die Chunk Size ein",
"Enter Image Size (e.g. 512x512)": "Gib die Bildgröße ein (z.B. 512x512)",
"Enter language codes": "",
"Enter language codes": "Geben Sie die Sprachcodes ein",
"Enter LiteLLM API Base URL (litellm_params.api_base)": "Gib die LiteLLM API BASE URL ein (litellm_params.api_base)",
"Enter LiteLLM API Key (litellm_params.api_key)": "Gib den LiteLLM API Key ein (litellm_params.api_key)",
"Enter LiteLLM API RPM (litellm_params.rpm)": "Gib die LiteLLM API RPM ein (litellm_params.rpm)",
......@@ -219,7 +219,7 @@
"General Settings": "Allgemeine Einstellungen",
"Generation Info": "Generierungsinformationen",
"Good Response": "Gute Antwort",
"h:mm a": "",
"h:mm a": "h:mm a",
"has no conversations.": "hat keine Unterhaltungen.",
"Hello, {{name}}": "Hallo, {{name}}",
"Help": "Hilfe",
......@@ -254,7 +254,7 @@
"Light": "Hell",
"Listening...": "Hören...",
"LLMs can make mistakes. Verify important information.": "LLMs können Fehler machen. Überprüfe wichtige Informationen.",
"LTR": "",
"LTR": "LTR",
"Made by OpenWebUI Community": "Von der OpenWebUI-Community",
"Make sure to enclose them with": "Formatiere deine Variablen mit:",
"Manage LiteLLM Models": "LiteLLM-Modelle verwalten",
......@@ -265,9 +265,9 @@
"Max Tokens": "Maximale Tokens",
"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "Es können maximal 3 Modelle gleichzeitig heruntergeladen werden. Bitte versuche es später erneut.",
"May": "Mai",
"Memories accessible by LLMs will be shown here.": "",
"Memory": "",
"Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "",
"Memories accessible by LLMs will be shown here.": "Memories, die von LLMs zugänglich sind, werden hier angezeigt.",
"Memory": "Memory",
"Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "Nachdem Sie Ihren Link erstellt haben, werden Ihre Nachrichten nicht geteilt. Benutzer mit dem Link können den geteilten Chat sehen.",
"Minimum Score": "Mindestscore",
"Mirostat": "Mirostat",
"Mirostat Eta": "Mirostat Eta",
......@@ -302,11 +302,11 @@
"New Password": "Neues Passwort",
"No": "",
"No results found": "Keine Ergebnisse gefunden",
"No source available": "",
"No source available": "Keine Quelle verfügbar.",
"Not factually correct": "Nicht sachlich korrekt.",
"Not sure what to add?": "Nicht sicher, was hinzugefügt werden soll?",
"Not sure what to write? Switch to": "Nicht sicher, was du schreiben sollst? Wechsel zu",
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "",
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "Hinweis: Wenn du einen Mindestscore festlegst, wird die Suche nur Dokumente zurückgeben, deren Score größer oder gleich dem Mindestscore ist.",
"Notifications": "Desktop-Benachrichtigungen",
"November": "November",
"October": "Oktober",
......@@ -340,7 +340,7 @@
"PDF Extract Images (OCR)": "Text von Bildern aus PDFs extrahieren (OCR)",
"pending": "ausstehend",
"Permission denied when accessing microphone: {{error}}": "Zugriff auf das Mikrofon verweigert: {{error}}",
"Personalization": "",
"Personalization": "Personalisierung",
"Plain text (.txt)": "Nur Text (.txt)",
"Playground": "Testumgebung",
"Positive attitude": "Positive Einstellung",
......@@ -372,13 +372,13 @@
"Request Mode": "Request-Modus",
"Reranking Model": "Reranking Modell",
"Reranking model disabled": "Rranking Modell deaktiviert",
"Reranking model set to \"{{reranking_model}}\"": "",
"Reranking model set to \"{{reranking_model}}\"": "Reranking Modell auf \"{{reranking_model}}\" gesetzt",
"Reset Vector Storage": "Vektorspeicher zurücksetzen",
"Response AutoCopy to Clipboard": "Antwort automatisch in die Zwischenablage kopieren",
"Role": "Rolle",
"Rosé Pine": "Rosé Pine",
"Rosé Pine Dawn": "Rosé Pine Dawn",
"RTL": "",
"RTL": "RTL",
"Save": "Speichern",
"Save & Create": "Speichern und erstellen",
"Save & Update": "Speichern und aktualisieren",
......@@ -398,17 +398,17 @@
"Select an Ollama instance": "Eine Ollama Instanz auswählen",
"Select model": "Modell auswählen",
"Selected models do not support image inputs": "",
"Send": "",
"Send": "Senden",
"Send a Message": "Eine Nachricht senden",
"Send message": "Nachricht senden",
"September": "September",
"Server connection verified": "Serververbindung überprüft",
"Set as default": "Als Standard festlegen",
"Set Default Model": "Standardmodell festlegen",
"Set embedding model (e.g. {{model}})": "",
"Set embedding model (e.g. {{model}})": "Eingabemodell festlegen (z.B. {{model}})",
"Set Image Size": "Bildgröße festlegen",
"Set Model": "Modell festlegen",
"Set reranking model (e.g. {{model}})": "",
"Set reranking model (e.g. {{model}})": "Rerankingmodell festlegen (z.B. {{model}})",
"Set Steps": "Schritte festlegen",
"Set Title Auto-Generation Model": "Modell für automatische Titelgenerierung festlegen",
"Set Voice": "Stimme festlegen",
......@@ -493,7 +493,7 @@
"Version": "Version",
"Warning: If you update or change your embedding model, you will need to re-import all documents.": "Warnung: Wenn du dein Einbettungsmodell aktualisierst oder änderst, musst du alle Dokumente erneut importieren.",
"Web": "Web",
"Web Loader Settings": "",
"Web Loader Settings": "Web Loader Einstellungen",
"Web Params": "Web Parameter",
"Webhook URL": "Webhook URL",
"WebUI Add-ons": "WebUI-Add-Ons",
......@@ -502,16 +502,16 @@
"What’s New in": "Was gibt's Neues in",
"When history is turned off, new chats on this browser won't appear in your history on any of your devices.": "Wenn die Historie ausgeschaltet ist, werden neue Chats nicht in deiner Historie auf deine Geräte angezeigt.",
"Whisper (Local)": "Whisper (Lokal)",
"Workspace": "",
"Workspace": "Arbeitsbereich",
"Write a prompt suggestion (e.g. Who are you?)": "Gebe einen Prompt-Vorschlag ein (z.B. Wer bist du?)",
"Write a summary in 50 words that summarizes [topic or keyword].": "Schreibe eine kurze Zusammenfassung in 50 Wörtern, die [Thema oder Schlüsselwort] zusammenfasst.",
"Yes": "",
"Yesterday": "Gestern",
"You": "",
"You": "Du",
"You have no archived conversations.": "Du hast keine archivierten Unterhaltungen.",
"You have shared this chat": "Du hast diesen Chat",
"You're a helpful assistant.": "Du bist ein hilfreicher Assistent.",
"You're now logged in.": "Du bist nun eingeloggt.",
"Youtube": "YouTube",
"Youtube Loader Settings": ""
"Youtube Loader Settings": "YouTube-Ladeeinstellungen"
}
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment