Unverified Commit b8d7fdf1 authored by Timothy Jaeryang Baek's avatar Timothy Jaeryang Baek Committed by GitHub
Browse files

Merge pull request #1965 from open-webui/dev

0.1.124
parents 30b05311 b44ae536
<script lang="ts">
import { getDocs } from '$lib/apis/documents';
import {
getRAGConfig,
updateRAGConfig,
getQuerySettings,
scanDocs,
updateQuerySettings,
resetVectorDB,
getEmbeddingConfig,
updateEmbeddingConfig,
getRerankingConfig,
updateRerankingConfig
} from '$lib/apis/rag';
import { documents, models } from '$lib/stores';
import { onMount, getContext } from 'svelte';
import { toast } from 'svelte-sonner';
import Tooltip from '$lib/components/common/Tooltip.svelte';
const i18n = getContext('i18n');
export let saveHandler: Function;
let scanDirLoading = false;
let updateEmbeddingModelLoading = false;
let updateRerankingModelLoading = false;
let showResetConfirm = false;
let chunkSize = 0;
let chunkOverlap = 0;
let pdfExtractImages = true;
const submitHandler = async () => {
const res = await updateRAGConfig(localStorage.token, {
pdf_extract_images: pdfExtractImages,
chunk: {
chunk_overlap: chunkOverlap,
chunk_size: chunkSize
}
});
};
onMount(async () => {
const res = await getRAGConfig(localStorage.token);
if (res) {
pdfExtractImages = res.pdf_extract_images;
chunkSize = res.chunk.chunk_size;
chunkOverlap = res.chunk.chunk_overlap;
}
});
</script>
<form
class="flex flex-col h-full justify-between space-y-3 text-sm"
on:submit|preventDefault={() => {
submitHandler();
saveHandler();
}}
>
<div class=" space-y-3 pr-1.5 overflow-y-scroll h-full max-h-[22rem]">
<div class=" ">
<div class=" text-sm font-medium">{$i18n.t('Chunk Params')}</div>
<div class=" flex">
<div class=" flex w-full justify-between">
<div class="self-center text-xs font-medium min-w-fit">{$i18n.t('Chunk Size')}</div>
<div class="self-center p-3">
<input
class=" w-full rounded-lg py-1.5 px-4 text-sm dark:text-gray-300 dark:bg-gray-850 outline-none"
type="number"
placeholder={$i18n.t('Enter Chunk Size')}
bind:value={chunkSize}
autocomplete="off"
min="0"
/>
</div>
</div>
<div class="flex w-full">
<div class=" self-center text-xs font-medium min-w-fit">
{$i18n.t('Chunk Overlap')}
</div>
<div class="self-center p-3">
<input
class="w-full rounded-lg py-1.5 px-4 text-sm dark:text-gray-300 dark:bg-gray-850 outline-none"
type="number"
placeholder={$i18n.t('Enter Chunk Overlap')}
bind:value={chunkOverlap}
autocomplete="off"
min="0"
/>
</div>
</div>
</div>
<div class="pr-2">
<div class="flex justify-between items-center text-xs">
<div class=" text-xs font-medium">{$i18n.t('PDF Extract Images (OCR)')}</div>
<button
class=" text-xs font-medium text-gray-500"
type="button"
on:click={() => {
pdfExtractImages = !pdfExtractImages;
}}>{pdfExtractImages ? $i18n.t('On') : $i18n.t('Off')}</button
>
</div>
</div>
</div>
</div>
<div class="flex justify-end pt-3 text-sm font-medium">
<button
class=" px-4 py-2 bg-emerald-700 hover:bg-emerald-800 text-gray-100 transition rounded-lg"
type="submit"
>
{$i18n.t('Save')}
</button>
</div>
</form>
<script lang="ts"> <script lang="ts">
import { getDocs } from '$lib/apis/documents'; import { getDocs } from '$lib/apis/documents';
import { import {
getRAGConfig,
updateRAGConfig,
getQuerySettings, getQuerySettings,
scanDocs, scanDocs,
updateQuerySettings, updateQuerySettings,
...@@ -17,8 +15,6 @@ ...@@ -17,8 +15,6 @@
import { onMount, getContext } from 'svelte'; import { onMount, getContext } from 'svelte';
import { toast } from 'svelte-sonner'; import { toast } from 'svelte-sonner';
import Tooltip from '$lib/components/common/Tooltip.svelte';
const i18n = getContext('i18n'); const i18n = getContext('i18n');
export let saveHandler: Function; export let saveHandler: Function;
...@@ -36,10 +32,6 @@ ...@@ -36,10 +32,6 @@
let OpenAIKey = ''; let OpenAIKey = '';
let OpenAIUrl = ''; let OpenAIUrl = '';
let chunkSize = 0;
let chunkOverlap = 0;
let pdfExtractImages = true;
let querySettings = { let querySettings = {
template: '', template: '',
r: 0.0, r: 0.0,
...@@ -151,14 +143,11 @@ ...@@ -151,14 +143,11 @@
}; };
const submitHandler = async () => { const submitHandler = async () => {
const res = await updateRAGConfig(localStorage.token, { embeddingModelUpdateHandler();
pdf_extract_images: pdfExtractImages,
chunk: { if (querySettings.hybrid) {
chunk_overlap: chunkOverlap, rerankingModelUpdateHandler();
chunk_size: chunkSize
} }
});
querySettings = await updateQuerySettings(localStorage.token, querySettings);
}; };
const setEmbeddingConfig = async () => { const setEmbeddingConfig = async () => {
...@@ -183,20 +172,10 @@ ...@@ -183,20 +172,10 @@
const toggleHybridSearch = async () => { const toggleHybridSearch = async () => {
querySettings.hybrid = !querySettings.hybrid; querySettings.hybrid = !querySettings.hybrid;
querySettings = await updateQuerySettings(localStorage.token, querySettings); querySettings = await updateQuerySettings(localStorage.token, querySettings);
}; };
onMount(async () => { onMount(async () => {
const res = await getRAGConfig(localStorage.token);
if (res) {
pdfExtractImages = res.pdf_extract_images;
chunkSize = res.chunk.chunk_size;
chunkOverlap = res.chunk.chunk_overlap;
}
await setEmbeddingConfig(); await setEmbeddingConfig();
await setRerankingConfig(); await setRerankingConfig();
...@@ -211,24 +190,54 @@ ...@@ -211,24 +190,54 @@
saveHandler(); saveHandler();
}} }}
> >
<div class=" space-y-3 pr-1.5 overflow-y-scroll max-h-[22rem]"> <div class=" space-y-2.5 pr-1.5 overflow-y-scroll max-h-[22rem]">
<div> <div class="flex flex-col gap-0.5">
<div class=" mb-2 text-sm font-medium">{$i18n.t('General Settings')}</div> <div class=" mb-0.5 text-sm font-medium">{$i18n.t('General Settings')}</div>
<div class=" flex w-full justify-between"> <div class=" flex w-full justify-between">
<div class=" self-center text-xs font-medium">{$i18n.t('Hybrid Search')}</div> <div class=" self-center text-xs font-medium">
{$i18n.t('Scan for documents from {{path}}', { path: '/data/docs' })}
</div>
<button <button
class="p-1 px-3 text-xs flex rounded transition" class=" self-center text-xs p-1 px-3 bg-gray-100 dark:bg-gray-800 dark:hover:bg-gray-700 rounded-lg flex flex-row space-x-1 items-center {scanDirLoading
? ' cursor-not-allowed'
: ''}"
on:click={() => { on:click={() => {
toggleHybridSearch(); scanHandler();
console.log('check');
}} }}
type="button" type="button"
disabled={scanDirLoading}
> >
{#if querySettings.hybrid === true} <div class="self-center font-medium">{$i18n.t('Scan')}</div>
<span class="ml-2 self-center">{$i18n.t('On')}</span>
{:else} {#if scanDirLoading}
<span class="ml-2 self-center">{$i18n.t('Off')}</span> <div class="ml-3 self-center">
<svg
class=" w-3 h-3"
viewBox="0 0 24 24"
fill="currentColor"
xmlns="http://www.w3.org/2000/svg"
><style>
.spinner_ajPY {
transform-origin: center;
animation: spinner_AtaB 0.75s infinite linear;
}
@keyframes spinner_AtaB {
100% {
transform: rotate(360deg);
}
}
</style><path
d="M12,1A11,11,0,1,0,23,12,11,11,0,0,0,12,1Zm0,19a8,8,0,1,1,8-8A8,8,0,0,1,12,20Z"
opacity=".25"
/><path
d="M10.14,1.16a11,11,0,0,0-9,8.92A1.59,1.59,0,0,0,2.46,12,1.52,1.52,0,0,0,4.11,10.7a8,8,0,0,1,6.66-6.61A1.42,1.42,0,0,0,12,2.69h0A1.57,1.57,0,0,0,10.14,1.16Z"
class="spinner_ajPY"
/></svg
>
</div>
{/if} {/if}
</button> </button>
</div> </div>
...@@ -256,7 +265,7 @@ ...@@ -256,7 +265,7 @@
</div> </div>
{#if embeddingEngine === 'openai'} {#if embeddingEngine === 'openai'}
<div class="mt-1 flex gap-2"> <div class="my-0.5 flex gap-2">
<input <input
class="w-full rounded-lg py-2 px-4 text-sm dark:text-gray-300 dark:bg-gray-850 outline-none" class="w-full rounded-lg py-2 px-4 text-sm dark:text-gray-300 dark:bg-gray-850 outline-none"
placeholder={$i18n.t('API Base URL')} placeholder={$i18n.t('API Base URL')}
...@@ -272,11 +281,31 @@ ...@@ -272,11 +281,31 @@
/> />
</div> </div>
{/if} {/if}
<div class=" flex w-full justify-between">
<div class=" self-center text-xs font-medium">{$i18n.t('Hybrid Search')}</div>
<button
class="p-1 px-3 text-xs flex rounded transition"
on:click={() => {
toggleHybridSearch();
}}
type="button"
>
{#if querySettings.hybrid === true}
<span class="ml-2 self-center">{$i18n.t('On')}</span>
{:else}
<span class="ml-2 self-center">{$i18n.t('Off')}</span>
{/if}
</button>
</div> </div>
</div>
<hr class=" dark:border-gray-700 my-1" />
<div class="space-y-2"> <div class="space-y-2" />
<div> <div>
<div class=" mb-2 text-sm font-medium">{$i18n.t('Update Embedding Model')}</div> <div class=" mb-2 text-sm font-medium">{$i18n.t('Embedding Model')}</div>
{#if embeddingEngine === 'ollama'} {#if embeddingEngine === 'ollama'}
<div class="flex w-full"> <div class="flex w-full">
...@@ -297,66 +326,20 @@ ...@@ -297,66 +326,20 @@
{/each} {/each}
</select> </select>
</div> </div>
<button
class="px-2.5 bg-gray-100 hover:bg-gray-200 text-gray-800 dark:bg-gray-850 dark:hover:bg-gray-800 dark:text-gray-100 rounded-lg transition"
on:click={() => {
embeddingModelUpdateHandler();
}}
disabled={updateEmbeddingModelLoading}
>
{#if updateEmbeddingModelLoading}
<div class="self-center">
<svg
class=" w-4 h-4"
viewBox="0 0 24 24"
fill="currentColor"
xmlns="http://www.w3.org/2000/svg"
><style>
.spinner_ajPY {
transform-origin: center;
animation: spinner_AtaB 0.75s infinite linear;
}
@keyframes spinner_AtaB {
100% {
transform: rotate(360deg);
}
}
</style><path
d="M12,1A11,11,0,1,0,23,12,11,11,0,0,0,12,1Zm0,19a8,8,0,1,1,8-8A8,8,0,0,1,12,20Z"
opacity=".25"
/><path
d="M10.14,1.16a11,11,0,0,0-9,8.92A1.59,1.59,0,0,0,2.46,12,1.52,1.52,0,0,0,4.11,10.7a8,8,0,0,1,6.66-6.61A1.42,1.42,0,0,0,12,2.69h0A1.57,1.57,0,0,0,10.14,1.16Z"
class="spinner_ajPY"
/></svg
>
</div>
{:else}
<svg
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 16 16"
fill="currentColor"
class="w-4 h-4"
>
<path
fill-rule="evenodd"
d="M12.416 3.376a.75.75 0 0 1 .208 1.04l-5 7.5a.75.75 0 0 1-1.154.114l-3-3a.75.75 0 0 1 1.06-1.06l2.353 2.353 4.493-6.74a.75.75 0 0 1 1.04-.207Z"
clip-rule="evenodd"
/>
</svg>
{/if}
</button>
</div> </div>
{:else} {:else}
<div class="flex w-full"> <div class="flex w-full">
<div class="flex-1 mr-2"> <div class="flex-1 mr-2">
<input <input
class="w-full rounded-lg py-2 px-4 text-sm dark:text-gray-300 dark:bg-gray-850 outline-none" class="w-full rounded-lg py-2 px-4 text-sm dark:text-gray-300 dark:bg-gray-850 outline-none"
placeholder={$i18n.t('Update embedding model (e.g. {{model}})', { placeholder={$i18n.t('Set embedding model (e.g. {{model}})', {
model: embeddingModel.slice(-40) model: embeddingModel.slice(-40)
})} })}
bind:value={embeddingModel} bind:value={embeddingModel}
/> />
</div> </div>
{#if embeddingEngine === ''}
<button <button
class="px-2.5 bg-gray-100 hover:bg-gray-200 text-gray-800 dark:bg-gray-850 dark:hover:bg-gray-800 dark:text-gray-100 rounded-lg transition" class="px-2.5 bg-gray-100 hover:bg-gray-200 text-gray-800 dark:bg-gray-850 dark:hover:bg-gray-800 dark:text-gray-100 rounded-lg transition"
on:click={() => { on:click={() => {
...@@ -406,6 +389,7 @@ ...@@ -406,6 +389,7 @@
</svg> </svg>
{/if} {/if}
</button> </button>
{/if}
</div> </div>
{/if} {/if}
...@@ -415,18 +399,16 @@ ...@@ -415,18 +399,16 @@
)} )}
</div> </div>
<hr class=" dark:border-gray-700 my-3" />
{#if querySettings.hybrid === true} {#if querySettings.hybrid === true}
<div class=" "> <div class=" ">
<div class=" mb-2 text-sm font-medium">{$i18n.t('Update Reranking Model')}</div> <div class=" mb-2 text-sm font-medium">{$i18n.t('Reranking Model')}</div>
<div class="flex w-full"> <div class="flex w-full">
<div class="flex-1 mr-2"> <div class="flex-1 mr-2">
<input <input
class="w-full rounded-lg py-2 px-4 text-sm dark:text-gray-300 dark:bg-gray-850 outline-none" class="w-full rounded-lg py-2 px-4 text-sm dark:text-gray-300 dark:bg-gray-850 outline-none"
placeholder={$i18n.t('Update reranking model (e.g. {{model}})', { placeholder={$i18n.t('Set reranking model (e.g. {{model}})', {
model: rerankingModel.slice(-40) model: 'BAAI/bge-reranker-v2-m3'
})} })}
bind:value={rerankingModel} bind:value={rerankingModel}
/> />
...@@ -482,174 +464,10 @@ ...@@ -482,174 +464,10 @@
</button> </button>
</div> </div>
</div> </div>
<hr class=" dark:border-gray-700 my-3" />
{/if}
<div class=" flex w-full justify-between">
<div class=" self-center text-xs font-medium">
{$i18n.t('Scan for documents from {{path}}', { path: '/data/docs' })}
</div>
<button
class=" self-center text-xs p-1 px-3 bg-gray-100 dark:bg-gray-800 dark:hover:bg-gray-700 rounded-lg flex flex-row space-x-1 items-center {scanDirLoading
? ' cursor-not-allowed'
: ''}"
on:click={() => {
scanHandler();
console.log('check');
}}
type="button"
disabled={scanDirLoading}
>
<div class="self-center font-medium">{$i18n.t('Scan')}</div>
{#if scanDirLoading}
<div class="ml-3 self-center">
<svg
class=" w-3 h-3"
viewBox="0 0 24 24"
fill="currentColor"
xmlns="http://www.w3.org/2000/svg"
><style>
.spinner_ajPY {
transform-origin: center;
animation: spinner_AtaB 0.75s infinite linear;
}
@keyframes spinner_AtaB {
100% {
transform: rotate(360deg);
}
}
</style><path
d="M12,1A11,11,0,1,0,23,12,11,11,0,0,0,12,1Zm0,19a8,8,0,1,1,8-8A8,8,0,0,1,12,20Z"
opacity=".25"
/><path
d="M10.14,1.16a11,11,0,0,0-9,8.92A1.59,1.59,0,0,0,2.46,12,1.52,1.52,0,0,0,4.11,10.7a8,8,0,0,1,6.66-6.61A1.42,1.42,0,0,0,12,2.69h0A1.57,1.57,0,0,0,10.14,1.16Z"
class="spinner_ajPY"
/></svg
>
</div>
{/if} {/if}
</button>
</div> </div>
<hr class=" dark:border-gray-700 my-3" /> <hr class=" dark:border-gray-700" />
<div class=" ">
<div class=" text-sm font-medium">{$i18n.t('Chunk Params')}</div>
<div class=" flex">
<div class=" flex w-full justify-between">
<div class="self-center text-xs font-medium min-w-fit">{$i18n.t('Chunk Size')}</div>
<div class="self-center p-3">
<input
class=" w-full rounded-lg py-1.5 px-4 text-sm dark:text-gray-300 dark:bg-gray-850 outline-none"
type="number"
placeholder={$i18n.t('Enter Chunk Size')}
bind:value={chunkSize}
autocomplete="off"
min="0"
/>
</div>
</div>
<div class="flex w-full">
<div class=" self-center text-xs font-medium min-w-fit">
{$i18n.t('Chunk Overlap')}
</div>
<div class="self-center p-3">
<input
class="w-full rounded-lg py-1.5 px-4 text-sm dark:text-gray-300 dark:bg-gray-850 outline-none"
type="number"
placeholder={$i18n.t('Enter Chunk Overlap')}
bind:value={chunkOverlap}
autocomplete="off"
min="0"
/>
</div>
</div>
</div>
<div class="pr-2">
<div class="flex justify-between items-center text-xs">
<div class=" text-xs font-medium">{$i18n.t('PDF Extract Images (OCR)')}</div>
<button
class=" text-xs font-medium text-gray-500"
type="button"
on:click={() => {
pdfExtractImages = !pdfExtractImages;
}}>{pdfExtractImages ? $i18n.t('On') : $i18n.t('Off')}</button
>
</div>
</div>
</div>
<hr class=" dark:border-gray-700 my-3" />
<div class=" ">
<div class=" text-sm font-medium">{$i18n.t('Query Params')}</div>
<div class=" flex">
<div class=" flex w-full justify-between">
<div class="self-center text-xs font-medium min-w-fit">{$i18n.t('Top K')}</div>
<div class="self-center p-3">
<input
class=" w-full rounded-lg py-1.5 px-4 text-sm dark:text-gray-300 dark:bg-gray-850 outline-none"
type="number"
placeholder={$i18n.t('Enter Top K')}
bind:value={querySettings.k}
autocomplete="off"
min="0"
/>
</div>
</div>
{#if querySettings.hybrid === true}
<div class="flex w-full">
<div class=" self-center text-xs font-medium min-w-fit">
{$i18n.t('Minimum Score')}
</div>
<div class="self-center p-3">
<input
class=" w-full rounded-lg py-1.5 px-4 text-sm dark:text-gray-300 dark:bg-gray-850 outline-none"
type="number"
step="0.01"
placeholder={$i18n.t('Enter Score')}
bind:value={querySettings.r}
autocomplete="off"
min="0.0"
title={$i18n.t('The score should be a value between 0.0 (0%) and 1.0 (100%).')}
/>
</div>
</div>
{/if}
</div>
{#if querySettings.hybrid === true}
<div class="mt-2 mb-1 text-xs text-gray-400 dark:text-gray-500">
{$i18n.t(
'Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.'
)}
</div>
<hr class=" dark:border-gray-700 my-3" />
{/if}
<div>
<div class=" mb-2.5 text-sm font-medium">{$i18n.t('RAG Template')}</div>
<textarea
bind:value={querySettings.template}
class="w-full rounded-lg px-4 py-3 text-sm dark:text-gray-300 dark:bg-gray-850 outline-none resize-none"
rows="4"
/>
</div>
</div>
{#if showResetConfirm} {#if showResetConfirm}
<div class="flex justify-between rounded-md items-center py-2 px-3.5 w-full transition"> <div class="flex justify-between rounded-md items-center py-2 px-3.5 w-full transition">
...@@ -743,8 +561,6 @@ ...@@ -743,8 +561,6 @@
</button> </button>
{/if} {/if}
</div> </div>
</div>
</div>
<div class="flex justify-end pt-3 text-sm font-medium"> <div class="flex justify-end pt-3 text-sm font-medium">
<button <button
class=" px-4 py-2 bg-emerald-700 hover:bg-emerald-800 text-gray-100 transition rounded-lg" class=" px-4 py-2 bg-emerald-700 hover:bg-emerald-800 text-gray-100 transition rounded-lg"
......
<script lang="ts">
import { getDocs } from '$lib/apis/documents';
import {
getRAGConfig,
updateRAGConfig,
getQuerySettings,
scanDocs,
updateQuerySettings,
resetVectorDB,
getEmbeddingConfig,
updateEmbeddingConfig,
getRerankingConfig,
updateRerankingConfig
} from '$lib/apis/rag';
import { documents, models } from '$lib/stores';
import { onMount, getContext } from 'svelte';
import { toast } from 'svelte-sonner';
import Tooltip from '$lib/components/common/Tooltip.svelte';
const i18n = getContext('i18n');
export let saveHandler: Function;
let querySettings = {
template: '',
r: 0.0,
k: 4,
hybrid: false
};
const submitHandler = async () => {
querySettings = await updateQuerySettings(localStorage.token, querySettings);
};
onMount(async () => {
querySettings = await getQuerySettings(localStorage.token);
});
</script>
<form
class="flex flex-col h-full justify-between space-y-3 text-sm"
on:submit|preventDefault={() => {
submitHandler();
saveHandler();
}}
>
<div class=" space-y-3 pr-1.5 overflow-y-scroll max-h-[22rem]">
<div class=" ">
<div class=" text-sm font-medium">{$i18n.t('Query Params')}</div>
<div class=" flex">
<div class=" flex w-full justify-between">
<div class="self-center text-xs font-medium min-w-fit">{$i18n.t('Top K')}</div>
<div class="self-center p-3">
<input
class=" w-full rounded-lg py-1.5 px-4 text-sm dark:text-gray-300 dark:bg-gray-850 outline-none"
type="number"
placeholder={$i18n.t('Enter Top K')}
bind:value={querySettings.k}
autocomplete="off"
min="0"
/>
</div>
</div>
{#if querySettings.hybrid === true}
<div class="flex w-full">
<div class=" self-center text-xs font-medium min-w-fit">
{$i18n.t('Minimum Score')}
</div>
<div class="self-center p-3">
<input
class=" w-full rounded-lg py-1.5 px-4 text-sm dark:text-gray-300 dark:bg-gray-850 outline-none"
type="number"
step="0.01"
placeholder={$i18n.t('Enter Score')}
bind:value={querySettings.r}
autocomplete="off"
min="0.0"
title={$i18n.t('The score should be a value between 0.0 (0%) and 1.0 (100%).')}
/>
</div>
</div>
{/if}
</div>
{#if querySettings.hybrid === true}
<div class="mt-2 mb-1 text-xs text-gray-400 dark:text-gray-500">
{$i18n.t(
'Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.'
)}
</div>
<hr class=" dark:border-gray-700 my-3" />
{/if}
<div>
<div class=" mb-2.5 text-sm font-medium">{$i18n.t('RAG Template')}</div>
<textarea
bind:value={querySettings.template}
class="w-full rounded-lg px-4 py-3 text-sm dark:text-gray-300 dark:bg-gray-850 outline-none resize-none"
rows="4"
/>
</div>
</div>
</div>
<div class="flex justify-end pt-3 text-sm font-medium">
<button
class=" px-4 py-2 bg-emerald-700 hover:bg-emerald-800 text-gray-100 transition rounded-lg"
type="submit"
>
{$i18n.t('Save')}
</button>
</div>
</form>
<script lang="ts">
import { getRAGConfig, updateRAGConfig } from '$lib/apis/rag';
import { documents, models } from '$lib/stores';
import { onMount, getContext } from 'svelte';
import { toast } from 'svelte-sonner';
const i18n = getContext('i18n');
export let saveHandler: Function;
let webLoaderSSLVerification = true;
let youtubeLanguage = 'en';
let youtubeTranslation = null;
const submitHandler = async () => {
const res = await updateRAGConfig(localStorage.token, {
web_loader_ssl_verification: webLoaderSSLVerification,
youtube: {
language: youtubeLanguage.split(',').map((lang) => lang.trim()),
translation: youtubeTranslation
}
});
};
onMount(async () => {
const res = await getRAGConfig(localStorage.token);
if (res) {
webLoaderSSLVerification = res.web_loader_ssl_verification;
youtubeLanguage = res.youtube.language.join(',');
youtubeTranslation = res.youtube.translation;
}
});
</script>
<form
class="flex flex-col h-full justify-between space-y-3 text-sm"
on:submit|preventDefault={() => {
submitHandler();
saveHandler();
}}
>
<div class=" space-y-3 pr-1.5 overflow-y-scroll h-full max-h-[22rem]">
<div>
<div class=" mb-1 text-sm font-medium">
{$i18n.t('Web Loader Settings')}
</div>
<div>
<div class=" py-0.5 flex w-full justify-between">
<div class=" self-center text-xs font-medium">
{$i18n.t('Bypass SSL verification for Websites')}
</div>
<button
class="p-1 px-3 text-xs flex rounded transition"
on:click={() => {
webLoaderSSLVerification = !webLoaderSSLVerification;
submitHandler();
}}
type="button"
>
{#if webLoaderSSLVerification === true}
<span class="ml-2 self-center">{$i18n.t('On')}</span>
{:else}
<span class="ml-2 self-center">{$i18n.t('Off')}</span>
{/if}
</button>
</div>
</div>
<div class=" mt-2 mb-1 text-sm font-medium">
{$i18n.t('Youtube Loader Settings')}
</div>
<div>
<div class=" py-0.5 flex w-full justify-between">
<div class=" w-20 text-xs font-medium self-center">{$i18n.t('Language')}</div>
<div class=" flex-1 self-center">
<input
class="w-full rounded-lg py-2 px-4 text-sm dark:text-gray-300 dark:bg-gray-850 outline-none"
type="text"
placeholder={$i18n.t('Enter language codes')}
bind:value={youtubeLanguage}
autocomplete="off"
/>
</div>
</div>
</div>
</div>
</div>
<div class="flex justify-end pt-3 text-sm font-medium">
<button
class=" px-4 py-2 bg-emerald-700 hover:bg-emerald-800 text-gray-100 transition rounded-lg"
type="submit"
>
{$i18n.t('Save')}
</button>
</div>
</form>
...@@ -2,6 +2,10 @@ ...@@ -2,6 +2,10 @@
import { getContext } from 'svelte'; import { getContext } from 'svelte';
import Modal from '../common/Modal.svelte'; import Modal from '../common/Modal.svelte';
import General from './Settings/General.svelte'; import General from './Settings/General.svelte';
import ChunkParams from './Settings/ChunkParams.svelte';
import QueryParams from './Settings/QueryParams.svelte';
import WebParams from './Settings/WebParams.svelte';
import { toast } from 'svelte-sonner';
const i18n = getContext('i18n'); const i18n = getContext('i18n');
...@@ -62,25 +66,115 @@ ...@@ -62,25 +66,115 @@
</div> </div>
<div class=" self-center">{$i18n.t('General')}</div> <div class=" self-center">{$i18n.t('General')}</div>
</button> </button>
<button
class="px-2.5 py-2.5 min-w-fit rounded-lg flex-1 md:flex-none flex text-right transition {selectedTab ===
'chunk'
? 'bg-gray-200 dark:bg-gray-700'
: ' hover:bg-gray-300 dark:hover:bg-gray-800'}"
on:click={() => {
selectedTab = 'chunk';
}}
>
<div class=" self-center mr-2">
<svg
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 24 24"
fill="currentColor"
class="w-4 h-4"
>
<path
fill-rule="evenodd"
d="M5.625 1.5H9a3.75 3.75 0 0 1 3.75 3.75v1.875c0 1.036.84 1.875 1.875 1.875H16.5a3.75 3.75 0 0 1 3.75 3.75v7.875c0 1.035-.84 1.875-1.875 1.875H5.625a1.875 1.875 0 0 1-1.875-1.875V3.375c0-1.036.84-1.875 1.875-1.875ZM12.75 12a.75.75 0 0 0-1.5 0v2.25H9a.75.75 0 0 0 0 1.5h2.25V18a.75.75 0 0 0 1.5 0v-2.25H15a.75.75 0 0 0 0-1.5h-2.25V12Z"
clip-rule="evenodd"
/>
<path
d="M14.25 5.25a5.23 5.23 0 0 0-1.279-3.434 9.768 9.768 0 0 1 6.963 6.963A5.23 5.23 0 0 0 16.5 7.5h-1.875a.375.375 0 0 1-.375-.375V5.25Z"
/>
</svg>
</div>
<div class=" self-center">{$i18n.t('Chunk Params')}</div>
</button>
<button
class="px-2.5 py-2.5 min-w-fit rounded-lg flex-1 md:flex-none flex text-right transition {selectedTab ===
'query'
? 'bg-gray-200 dark:bg-gray-700'
: ' hover:bg-gray-300 dark:hover:bg-gray-800'}"
on:click={() => {
selectedTab = 'query';
}}
>
<div class=" self-center mr-2">
<svg
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 24 24"
fill="currentColor"
class="w-4 h-4"
>
<path d="M11.625 16.5a1.875 1.875 0 1 0 0-3.75 1.875 1.875 0 0 0 0 3.75Z" />
<path
fill-rule="evenodd"
d="M5.625 1.5H9a3.75 3.75 0 0 1 3.75 3.75v1.875c0 1.036.84 1.875 1.875 1.875H16.5a3.75 3.75 0 0 1 3.75 3.75v7.875c0 1.035-.84 1.875-1.875 1.875H5.625a1.875 1.875 0 0 1-1.875-1.875V3.375c0-1.036.84-1.875 1.875-1.875Zm6 16.5c.66 0 1.277-.19 1.797-.518l1.048 1.048a.75.75 0 0 0 1.06-1.06l-1.047-1.048A3.375 3.375 0 1 0 11.625 18Z"
clip-rule="evenodd"
/>
<path
d="M14.25 5.25a5.23 5.23 0 0 0-1.279-3.434 9.768 9.768 0 0 1 6.963 6.963A5.23 5.23 0 0 0 16.5 7.5h-1.875a.375.375 0 0 1-.375-.375V5.25Z"
/>
</svg>
</div>
<div class=" self-center">{$i18n.t('Query Params')}</div>
</button>
<button
class="px-2.5 py-2.5 min-w-fit rounded-lg flex-1 md:flex-none flex text-right transition {selectedTab ===
'web'
? 'bg-gray-200 dark:bg-gray-700'
: ' hover:bg-gray-300 dark:hover:bg-gray-800'}"
on:click={() => {
selectedTab = 'web';
}}
>
<div class=" self-center mr-2">
<svg
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 24 24"
fill="currentColor"
class="w-4 h-4"
>
<path
d="M21.721 12.752a9.711 9.711 0 0 0-.945-5.003 12.754 12.754 0 0 1-4.339 2.708 18.991 18.991 0 0 1-.214 4.772 17.165 17.165 0 0 0 5.498-2.477ZM14.634 15.55a17.324 17.324 0 0 0 .332-4.647c-.952.227-1.945.347-2.966.347-1.021 0-2.014-.12-2.966-.347a17.515 17.515 0 0 0 .332 4.647 17.385 17.385 0 0 0 5.268 0ZM9.772 17.119a18.963 18.963 0 0 0 4.456 0A17.182 17.182 0 0 1 12 21.724a17.18 17.18 0 0 1-2.228-4.605ZM7.777 15.23a18.87 18.87 0 0 1-.214-4.774 12.753 12.753 0 0 1-4.34-2.708 9.711 9.711 0 0 0-.944 5.004 17.165 17.165 0 0 0 5.498 2.477ZM21.356 14.752a9.765 9.765 0 0 1-7.478 6.817 18.64 18.64 0 0 0 1.988-4.718 18.627 18.627 0 0 0 5.49-2.098ZM2.644 14.752c1.682.971 3.53 1.688 5.49 2.099a18.64 18.64 0 0 0 1.988 4.718 9.765 9.765 0 0 1-7.478-6.816ZM13.878 2.43a9.755 9.755 0 0 1 6.116 3.986 11.267 11.267 0 0 1-3.746 2.504 18.63 18.63 0 0 0-2.37-6.49ZM12 2.276a17.152 17.152 0 0 1 2.805 7.121c-.897.23-1.837.353-2.805.353-.968 0-1.908-.122-2.805-.353A17.151 17.151 0 0 1 12 2.276ZM10.122 2.43a18.629 18.629 0 0 0-2.37 6.49 11.266 11.266 0 0 1-3.746-2.504 9.754 9.754 0 0 1 6.116-3.985Z"
/>
</svg>
</div>
<div class=" self-center">{$i18n.t('Web Params')}</div>
</button>
</div> </div>
<div class="flex-1 md:min-h-[380px]"> <div class="flex-1 md:min-h-[380px]">
{#if selectedTab === 'general'} {#if selectedTab === 'general'}
<General <General
saveHandler={() => { saveHandler={() => {
show = false; toast.success($i18n.t('Settings saved successfully!'));
}} }}
/> />
<!-- <General {:else if selectedTab === 'chunk'}
<ChunkParams
saveHandler={() => { saveHandler={() => {
show = false; toast.success($i18n.t('Settings saved successfully!'));
}} }}
/> --> />
<!-- {:else if selectedTab === 'users'} {:else if selectedTab === 'query'}
<Users <QueryParams
saveHandler={() => { saveHandler={() => {
show = false; toast.success($i18n.t('Settings saved successfully!'));
}} }}
/> --> />
{:else if selectedTab === 'web'}
<WebParams
saveHandler={() => {
toast.success($i18n.t('Settings saved successfully!'));
}}
/>
{/if} {/if}
</div> </div>
</div> </div>
......
...@@ -44,6 +44,28 @@ ...@@ -44,6 +44,28 @@
let showDropdown = false; let showDropdown = false;
let isEditing = false; let isEditing = false;
let filteredChatList = [];
$: filteredChatList = $chats.filter((chat) => {
if (search === '') {
return true;
} else {
let title = chat.title.toLowerCase();
const query = search.toLowerCase();
let contentMatches = false;
// Access the messages within chat.chat.messages
if (chat.chat && chat.chat.messages && Array.isArray(chat.chat.messages)) {
contentMatches = chat.chat.messages.some((message) => {
// Check if message.content exists and includes the search query
return message.content && message.content.toLowerCase().includes(query);
});
}
return title.includes(query) || contentMatches;
}
});
onMount(async () => { onMount(async () => {
showSidebar.set(window.innerWidth > BREAKPOINT); showSidebar.set(window.innerWidth > BREAKPOINT);
await chats.set(await getChatList(localStorage.token)); await chats.set(await getChatList(localStorage.token));
...@@ -112,7 +134,7 @@ ...@@ -112,7 +134,7 @@
const editChatTitle = async (id, _title) => { const editChatTitle = async (id, _title) => {
if (_title === '') { if (_title === '') {
toast.error('Title cannot be an empty string.'); toast.error($i18n.t('Title cannot be an empty string.'));
} else { } else {
title = _title; title = _title;
...@@ -397,7 +419,7 @@ ...@@ -397,7 +419,7 @@
await chats.set(await getChatList(localStorage.token)); await chats.set(await getChatList(localStorage.token));
}} }}
> >
all {$i18n.t('all')}
</button> </button>
{#each $tags as tag} {#each $tags as tag}
<button <button
...@@ -418,25 +440,35 @@ ...@@ -418,25 +440,35 @@
{/if} {/if}
<div class="pl-2 my-2 flex-1 flex flex-col space-y-1 overflow-y-auto scrollbar-none"> <div class="pl-2 my-2 flex-1 flex flex-col space-y-1 overflow-y-auto scrollbar-none">
{#each $chats.filter((chat) => { {#each filteredChatList as chat, idx}
if (search === '') { {#if idx === 0 || (idx > 0 && chat.time_range !== filteredChatList[idx - 1].time_range)}
return true; <div
} else { class="w-full pl-2.5 text-xs text-gray-500 dark:text-gray-500 font-medium {idx === 0
let title = chat.title.toLowerCase(); ? ''
const query = search.toLowerCase(); : 'pt-5'} pb-0.5"
>
let contentMatches = false; {$i18n.t(chat.time_range)}
// Access the messages within chat.chat.messages <!-- localisation keys for time_range to be recognized from the i18next parser (so they don't get automatically removed):
if (chat.chat && chat.chat.messages && Array.isArray(chat.chat.messages)) { {$i18n.t('Today')}
contentMatches = chat.chat.messages.some((message) => { {$i18n.t('Yesterday')}
// Check if message.content exists and includes the search query {$i18n.t('Previous 7 days')}
return message.content && message.content.toLowerCase().includes(query); {$i18n.t('Previous 30 days')}
}); {$i18n.t('January')}
} {$i18n.t('February')}
{$i18n.t('March')}
{$i18n.t('April')}
{$i18n.t('May')}
{$i18n.t('June')}
{$i18n.t('July')}
{$i18n.t('August')}
{$i18n.t('September')}
{$i18n.t('October')}
{$i18n.t('November')}
{$i18n.t('December')}
-->
</div>
{/if}
return title.includes(query) || contentMatches;
}
}) as chat, i}
<div class=" w-full pr-2 relative group"> <div class=" w-full pr-2 relative group">
{#if chatTitleEditId === chat.id} {#if chatTitleEditId === chat.id}
<div <div
...@@ -836,12 +868,12 @@ ...@@ -836,12 +868,12 @@
> >
<div class="flex h-6 w-6 flex-col items-center"> <div class="flex h-6 w-6 flex-col items-center">
<div <div
class="h-3 w-1 rounded-full bg-[#0f0f0f] dark:bg-white rotate-0 translate-y-[0.15rem] {show class="h-3 w-1 rounded-full bg-[#0f0f0f] dark:bg-white rotate-0 translate-y-[0.15rem] {$showSidebar
? 'group-hover:rotate-[15deg]' ? 'group-hover:rotate-[15deg]'
: 'group-hover:rotate-[-15deg]'}" : 'group-hover:rotate-[-15deg]'}"
/> />
<div <div
class="h-3 w-1 rounded-full bg-[#0f0f0f] dark:bg-white rotate-0 translate-y-[-0.15rem] {show class="h-3 w-1 rounded-full bg-[#0f0f0f] dark:bg-white rotate-0 translate-y-[-0.15rem] {$showSidebar
? 'group-hover:rotate-[-15deg]' ? 'group-hover:rotate-[-15deg]'
: 'group-hover:rotate-[15deg]'}" : 'group-hover:rotate-[15deg]'}"
/> />
......
...@@ -161,7 +161,9 @@ ...@@ -161,7 +161,9 @@
{/each} --> {/each} -->
</div> </div>
{:else} {:else}
<div class="text-left text-sm w-full mb-8">You have no archived conversations.</div> <div class="text-left text-sm w-full mb-8">
{$i18n.t('You have no archived conversations.')}
</div>
{/if} {/if}
</div> </div>
</div> </div>
......
...@@ -49,7 +49,7 @@ ...@@ -49,7 +49,7 @@
}} }}
> >
<Share /> <Share />
<div class="flex items-center">Share</div> <div class="flex items-center">{$i18n.t('Share')}</div>
</DropdownMenu.Item> </DropdownMenu.Item>
<DropdownMenu.Item <DropdownMenu.Item
...@@ -59,7 +59,7 @@ ...@@ -59,7 +59,7 @@
}} }}
> >
<Pencil strokeWidth="2" /> <Pencil strokeWidth="2" />
<div class="flex items-center">Rename</div> <div class="flex items-center">{$i18n.t('Rename')}</div>
</DropdownMenu.Item> </DropdownMenu.Item>
<DropdownMenu.Item <DropdownMenu.Item
...@@ -69,13 +69,19 @@ ...@@ -69,13 +69,19 @@
}} }}
> >
<GarbageBin strokeWidth="2" /> <GarbageBin strokeWidth="2" />
<div class="flex items-center">Delete</div> <div class="flex items-center">{$i18n.t('Delete')}</div>
</DropdownMenu.Item> </DropdownMenu.Item>
<hr class="border-gray-100 dark:border-gray-800 mt-2.5 mb-1.5" /> <hr class="border-gray-100 dark:border-gray-800 mt-2.5 mb-1.5" />
<div class="flex p-1"> <div class="flex p-1">
<Tags {chatId} /> <Tags
{chatId}
on:close={() => {
show = false;
onClose();
}}
/>
</div> </div>
</DropdownMenu.Content> </DropdownMenu.Content>
</div> </div>
......
This diff is collapsed.
...@@ -15,6 +15,7 @@ ...@@ -15,6 +15,7 @@
"Add a short description about what this modelfile does": "Добавяне на кратко описание за това какво прави този модфайл", "Add a short description about what this modelfile does": "Добавяне на кратко описание за това какво прави този модфайл",
"Add a short title for this prompt": "Добавяне на кратко заглавие за този промпт", "Add a short title for this prompt": "Добавяне на кратко заглавие за този промпт",
"Add a tag": "Добавяне на таг", "Add a tag": "Добавяне на таг",
"Add custom prompt": "",
"Add Docs": "Добавяне на Документи", "Add Docs": "Добавяне на Документи",
"Add Files": "Добавяне на Файлове", "Add Files": "Добавяне на Файлове",
"Add message": "Добавяне на съобщение", "Add message": "Добавяне на съобщение",
...@@ -27,6 +28,7 @@ ...@@ -27,6 +28,7 @@
"Admin Settings": "Настройки на Администратор", "Admin Settings": "Настройки на Администратор",
"Advanced Parameters": "Разширени Параметри", "Advanced Parameters": "Разширени Параметри",
"all": "всички", "all": "всички",
"All Documents": "",
"All Users": "Всички Потребители", "All Users": "Всички Потребители",
"Allow": "Позволи", "Allow": "Позволи",
"Allow Chat Deletion": "Позволи Изтриване на Чат", "Allow Chat Deletion": "Позволи Изтриване на Чат",
...@@ -34,17 +36,21 @@ ...@@ -34,17 +36,21 @@
"Already have an account?": "Вече имате акаунт? ", "Already have an account?": "Вече имате акаунт? ",
"an assistant": "асистент", "an assistant": "асистент",
"and": "и", "and": "и",
"and create a new shared link.": "",
"API Base URL": "API Базов URL", "API Base URL": "API Базов URL",
"API Key": "API Ключ", "API Key": "API Ключ",
"API Key created.": "", "API Key created.": "",
"API keys": "", "API keys": "",
"API RPM": "API RPM", "API RPM": "API RPM",
"April": "",
"Archive": "", "Archive": "",
"Archived Chats": "", "Archived Chats": "",
"are allowed - Activate this command by typing": "са разрешени - Активирайте тази команда чрез въвеждане", "are allowed - Activate this command by typing": "са разрешени - Активирайте тази команда чрез въвеждане",
"Are you sure?": "Сигурни ли сте?", "Are you sure?": "Сигурни ли сте?",
"Attach file": "",
"Attention to detail": "", "Attention to detail": "",
"Audio": "Аудио", "Audio": "Аудио",
"August": "",
"Auto-playback response": "Аувтоматично възпроизвеждане на Отговора", "Auto-playback response": "Аувтоматично възпроизвеждане на Отговора",
"Auto-send input after 3 sec.": "Аувтоматично изпращане на входа след 3 сек.", "Auto-send input after 3 sec.": "Аувтоматично изпращане на входа след 3 сек.",
"AUTOMATIC1111 Base URL": "AUTOMATIC1111 Базов URL", "AUTOMATIC1111 Base URL": "AUTOMATIC1111 Базов URL",
...@@ -52,8 +58,10 @@ ...@@ -52,8 +58,10 @@
"available!": "наличен!", "available!": "наличен!",
"Back": "Назад", "Back": "Назад",
"Bad Response": "", "Bad Response": "",
"before": "",
"Being lazy": "", "Being lazy": "",
"Builder Mode": "Режим на Създаване", "Builder Mode": "Режим на Създаване",
"Bypass SSL verification for Websites": "",
"Cancel": "Отказ", "Cancel": "Отказ",
"Categories": "Категории", "Categories": "Категории",
"Change Password": "Промяна на Парола", "Change Password": "Промяна на Парола",
...@@ -68,7 +76,9 @@ ...@@ -68,7 +76,9 @@
"Chunk Overlap": "Chunk Overlap", "Chunk Overlap": "Chunk Overlap",
"Chunk Params": "Chunk Params", "Chunk Params": "Chunk Params",
"Chunk Size": "Chunk Size", "Chunk Size": "Chunk Size",
"Citation": "",
"Click here for help.": "Натиснете тук за помощ.", "Click here for help.": "Натиснете тук за помощ.",
"Click here to": "",
"Click here to check other modelfiles.": "Натиснете тук за проверка на други моделфайлове.", "Click here to check other modelfiles.": "Натиснете тук за проверка на други моделфайлове.",
"Click here to select": "Натиснете тук, за да изберете", "Click here to select": "Натиснете тук, за да изберете",
"Click here to select a csv file.": "", "Click here to select a csv file.": "",
...@@ -96,6 +106,8 @@ ...@@ -96,6 +106,8 @@
"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 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 a modelfile": "Създаване на модфайл",
"Create Account": "Създаване на Акаунт", "Create Account": "Създаване на Акаунт",
"Create new key": "",
"Create new secret key": "",
"Created at": "Създадено на", "Created at": "Създадено на",
"Created At": "", "Created At": "",
"Current Model": "Текущ модел", "Current Model": "Текущ модел",
...@@ -103,8 +115,10 @@ ...@@ -103,8 +115,10 @@
"Custom": "Персонализиран", "Custom": "Персонализиран",
"Customize Ollama models for a specific purpose": "Персонализиране на Ollama моделите за конкретна цел", "Customize Ollama models for a specific purpose": "Персонализиране на Ollama моделите за конкретна цел",
"Dark": "Тъмен", "Dark": "Тъмен",
"Dashboard": "",
"Database": "База данни", "Database": "База данни",
"DD/MM/YYYY HH:mm": "DD/MM/YYYY HH:mm", "DD/MM/YYYY HH:mm": "DD/MM/YYYY HH:mm",
"December": "",
"Default": "По подразбиране", "Default": "По подразбиране",
"Default (Automatic1111)": "По подразбиране (Automatic1111)", "Default (Automatic1111)": "По подразбиране (Automatic1111)",
"Default (SentenceTransformers)": "", "Default (SentenceTransformers)": "",
...@@ -118,6 +132,7 @@ ...@@ -118,6 +132,7 @@
"Delete chat": "Изтриване на чат", "Delete chat": "Изтриване на чат",
"Delete Chat": "", "Delete Chat": "",
"Delete Chats": "Изтриване на Чатове", "Delete Chats": "Изтриване на Чатове",
"delete this link": "",
"Delete User": "", "Delete User": "",
"Deleted {{deleteModelTag}}": "Изтрито {{deleteModelTag}}", "Deleted {{deleteModelTag}}": "Изтрито {{deleteModelTag}}",
"Deleted {{tagName}}": "", "Deleted {{tagName}}": "",
...@@ -137,6 +152,7 @@ ...@@ -137,6 +152,7 @@
"Don't have an account?": "Нямате акаунт?", "Don't have an account?": "Нямате акаунт?",
"Don't like the style": "", "Don't like the style": "",
"Download": "", "Download": "",
"Download canceled": "",
"Download Database": "Сваляне на база данни", "Download Database": "Сваляне на база данни",
"Drop any files here to add to the conversation": "Пускане на файлове тук, за да ги добавите в чата", "Drop any files here to add to the conversation": "Пускане на файлове тук, за да ги добавите в чата",
"e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "напр. '30с','10м'. Валидни единици са 'с', 'м', 'ч'.", "e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "напр. '30с','10м'. Валидни единици са 'с', 'м', 'ч'.",
...@@ -144,6 +160,7 @@ ...@@ -144,6 +160,7 @@
"Edit Doc": "Редактиране на документ", "Edit Doc": "Редактиране на документ",
"Edit User": "Редактиране на потребител", "Edit User": "Редактиране на потребител",
"Email": "Имейл", "Email": "Имейл",
"Embedding Model": "",
"Embedding Model Engine": "", "Embedding Model Engine": "",
"Embedding model set to \"{{embedding_model}}\"": "", "Embedding model set to \"{{embedding_model}}\"": "",
"Enable Chat History": "Вклюване на Чат История", "Enable Chat History": "Вклюване на Чат История",
...@@ -154,6 +171,7 @@ ...@@ -154,6 +171,7 @@
"Enter Chunk Overlap": "Въведете Chunk Overlap", "Enter Chunk Overlap": "Въведете Chunk Overlap",
"Enter Chunk Size": "Въведете Chunk Size", "Enter Chunk Size": "Въведете Chunk Size",
"Enter Image Size (e.g. 512x512)": "Въведете размер на изображението (напр. 512x512)", "Enter Image Size (e.g. 512x512)": "Въведете размер на изображението (напр. 512x512)",
"Enter language codes": "",
"Enter LiteLLM API Base URL (litellm_params.api_base)": "Въведете LiteLLM API Base URL (litellm_params.api_base)", "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 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)", "Enter LiteLLM API RPM (litellm_params.rpm)": "Въведете LiteLLM API RPM (litellm_params.rpm)",
...@@ -165,6 +183,7 @@ ...@@ -165,6 +183,7 @@
"Enter stop sequence": "Въведете стоп последователност", "Enter stop sequence": "Въведете стоп последователност",
"Enter Top K": "Въведете Top K", "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://127.0.0.1:7860/)": "Въведете URL (напр. http://127.0.0.1:7860/)",
"Enter URL (e.g. http://localhost:11434)": "",
"Enter Your Email": "Въведете имейл", "Enter Your Email": "Въведете имейл",
"Enter Your Full Name": "Въведете вашето пълно име", "Enter Your Full Name": "Въведете вашето пълно име",
"Enter Your Password": "Въведете вашата парола", "Enter Your Password": "Въведете вашата парола",
...@@ -177,6 +196,7 @@ ...@@ -177,6 +196,7 @@
"Export Prompts": "Експортване на промптове", "Export Prompts": "Експортване на промптове",
"Failed to create API Key.": "", "Failed to create API Key.": "",
"Failed to read clipboard contents": "Грешка при четене на съдържанието от клипборда", "Failed to read clipboard contents": "Грешка при четене на съдържанието от клипборда",
"February": "",
"Feel free to add specific details": "", "Feel free to add specific details": "",
"File Mode": "Файл Мод", "File Mode": "Файл Мод",
"File not found.": "Файл не е намерен.", "File not found.": "Файл не е намерен.",
...@@ -193,6 +213,7 @@ ...@@ -193,6 +213,7 @@
"Good Response": "", "Good Response": "",
"has no conversations.": "", "has no conversations.": "",
"Hello, {{name}}": "Здравей, {{name}}", "Hello, {{name}}": "Здравей, {{name}}",
"Help": "",
"Hide": "Скрий", "Hide": "Скрий",
"Hide Additional Params": "Скрий допълнителни параметри", "Hide Additional Params": "Скрий допълнителни параметри",
"How can I help you today?": "Как мога да ви помогна днес?", "How can I help you today?": "Как мога да ви помогна днес?",
...@@ -206,9 +227,14 @@ ...@@ -206,9 +227,14 @@
"Import Modelfiles": "Импортване на модфайлове", "Import Modelfiles": "Импортване на модфайлове",
"Import Prompts": "Импортване на промптове", "Import Prompts": "Импортване на промптове",
"Include `--api` flag when running stable-diffusion-webui": "Включете флага `--api`, когато стартирате stable-diffusion-webui", "Include `--api` flag when running stable-diffusion-webui": "Включете флага `--api`, когато стартирате stable-diffusion-webui",
"Input commands": "",
"Interface": "Интерфейс", "Interface": "Интерфейс",
"Invalid Tag": "",
"January": "",
"join our Discord for help.": "свържете се с нашия Discord за помощ.", "join our Discord for help.": "свържете се с нашия Discord за помощ.",
"JSON": "JSON", "JSON": "JSON",
"July": "",
"June": "",
"JWT Expiration": "JWT Expiration", "JWT Expiration": "JWT Expiration",
"JWT Token": "JWT Token", "JWT Token": "JWT Token",
"Keep Alive": "Keep Alive", "Keep Alive": "Keep Alive",
...@@ -223,8 +249,11 @@ ...@@ -223,8 +249,11 @@
"Manage LiteLLM Models": "Управление на LiteLLM Моделите", "Manage LiteLLM Models": "Управление на LiteLLM Моделите",
"Manage Models": "Управление на Моделите", "Manage Models": "Управление на Моделите",
"Manage Ollama Models": "Управление на Ollama Моделите", "Manage Ollama Models": "Управление на Ollama Моделите",
"March": "",
"Max Tokens": "Max Tokens", "Max Tokens": "Max Tokens",
"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "Максимум 3 модели могат да бъдат сваляни едновременно. Моля, опитайте отново по-късно.", "Maximum of 3 models can be downloaded simultaneously. Please try again later.": "Максимум 3 модели могат да бъдат сваляни едновременно. Моля, опитайте отново по-късно.",
"May": "",
"Messages you send after creating your link won't be shared. Users with the URL will beable to view the shared chat.": "",
"Minimum Score": "", "Minimum Score": "",
"Mirostat": "Mirostat", "Mirostat": "Mirostat",
"Mirostat Eta": "Mirostat Eta", "Mirostat Eta": "Mirostat Eta",
...@@ -255,11 +284,15 @@ ...@@ -255,11 +284,15 @@
"Name your modelfile": "Име на модфайла", "Name your modelfile": "Име на модфайла",
"New Chat": "Нов чат", "New Chat": "Нов чат",
"New Password": "Нова парола", "New Password": "Нова парола",
"No results found": "",
"No source available": "",
"Not factually correct": "", "Not factually correct": "",
"Not sure what to add?": "Не сте сигурни, какво да добавите?", "Not sure what to add?": "Не сте сигурни, какво да добавите?",
"Not sure what to write? Switch to": "Не сте сигурни, какво да напишете? Превключете към", "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": "Десктоп Известия", "Notifications": "Десктоп Известия",
"November": "",
"October": "",
"Off": "Изкл.", "Off": "Изкл.",
"Okay, Let's Go!": "ОК, Нека започваме!", "Okay, Let's Go!": "ОК, Нека започваме!",
"OLED Dark": "", "OLED Dark": "",
...@@ -283,6 +316,7 @@ ...@@ -283,6 +316,7 @@
"OpenAI URL/Key required.": "", "OpenAI URL/Key required.": "",
"or": "или", "or": "или",
"Other": "", "Other": "",
"Overview": "",
"Parameters": "Параметри", "Parameters": "Параметри",
"Password": "Парола", "Password": "Парола",
"PDF document (.pdf)": "", "PDF document (.pdf)": "",
...@@ -292,11 +326,15 @@ ...@@ -292,11 +326,15 @@
"Plain text (.txt)": "", "Plain text (.txt)": "",
"Playground": "Плейграунд", "Playground": "Плейграунд",
"Positive attitude": "", "Positive attitude": "",
"Previous 30 days": "",
"Previous 7 days": "",
"Profile Image": "", "Profile Image": "",
"Prompt": "",
"Prompt (e.g. Tell me a fun fact about the Roman Empire)": "", "Prompt (e.g. Tell me a fun fact about the Roman Empire)": "",
"Prompt Content": "Съдържание на промпта", "Prompt Content": "Съдържание на промпта",
"Prompt suggestions": "Промпт предложения", "Prompt suggestions": "Промпт предложения",
"Prompts": "Промптове", "Prompts": "Промптове",
"Pull \"{{searchValue}}\" from Ollama.com": "",
"Pull a model from Ollama.com": "Издърпайте модел от Ollama.com", "Pull a model from Ollama.com": "Издърпайте модел от Ollama.com",
"Pull Progress": "Прогрес на издърпването", "Pull Progress": "Прогрес на издърпването",
"Query Params": "Query Параметри", "Query Params": "Query Параметри",
...@@ -309,9 +347,12 @@ ...@@ -309,9 +347,12 @@
"Regenerate": "", "Regenerate": "",
"Release Notes": "Бележки по изданието", "Release Notes": "Бележки по изданието",
"Remove": "", "Remove": "",
"Remove Model": "",
"Rename": "",
"Repeat Last N": "Repeat Last N", "Repeat Last N": "Repeat Last N",
"Repeat Penalty": "Repeat Penalty", "Repeat Penalty": "Repeat Penalty",
"Request Mode": "Request Mode", "Request Mode": "Request Mode",
"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", "Reset Vector Storage": "Ресет Vector Storage",
...@@ -337,12 +378,17 @@ ...@@ -337,12 +378,17 @@
"Select a mode": "Изберете режим", "Select a mode": "Изберете режим",
"Select a model": "Изберете модел", "Select a model": "Изберете модел",
"Select an Ollama instance": "Изберете Ollama инстанция", "Select an Ollama instance": "Изберете Ollama инстанция",
"Select model": "",
"Send a Message": "Изпращане на Съобщение", "Send a Message": "Изпращане на Съобщение",
"Send message": "Изпращане на съобщение", "Send message": "Изпращане на съобщение",
"September": "",
"Server connection verified": "Server connection verified", "Server connection verified": "Server connection verified",
"Set as default": "Задай по подразбиране", "Set as default": "Задай по подразбиране",
"Set Default Model": "Задай Модел По Подразбиране", "Set Default Model": "Задай Модел По Подразбиране",
"Set embedding model (e.g. {{model}})": "",
"Set Image Size": "Задай Размер на Изображението", "Set Image Size": "Задай Размер на Изображението",
"Set Model": "Задай Модел",
"Set reranking model (e.g. {{model}})": "",
"Set Steps": "Задай Стъпки", "Set Steps": "Задай Стъпки",
"Set Title Auto-Generation Model": "Задай Модел за Автоматично Генериране на Заглавие", "Set Title Auto-Generation Model": "Задай Модел за Автоматично Генериране на Заглавие",
"Set Voice": "Задай Глас", "Set Voice": "Задай Глас",
...@@ -361,6 +407,7 @@ ...@@ -361,6 +407,7 @@
"Sign Out": "Изход", "Sign Out": "Изход",
"Sign up": "Регистрация", "Sign up": "Регистрация",
"Signing in": "", "Signing in": "",
"Source": "",
"Speech recognition error: {{error}}": "Speech recognition error: {{error}}", "Speech recognition error: {{error}}": "Speech recognition error: {{error}}",
"Speech-to-Text Engine": "Speech-to-Text Engine", "Speech-to-Text Engine": "Speech-to-Text Engine",
"SpeechRecognition API is not supported in this browser.": "SpeechRecognition API is not supported in this browser.", "SpeechRecognition API is not supported in this browser.": "SpeechRecognition API is not supported in this browser.",
...@@ -370,6 +417,7 @@ ...@@ -370,6 +417,7 @@
"Subtitle (e.g. about the Roman Empire)": "", "Subtitle (e.g. about the Roman Empire)": "",
"Success": "Успех", "Success": "Успех",
"Successfully updated.": "Успешно обновено.", "Successfully updated.": "Успешно обновено.",
"Suggested": "",
"Sync All": "Синхронизиране на всички", "Sync All": "Синхронизиране на всички",
"System": "Система", "System": "Система",
"System Prompt": "Системен Промпт", "System Prompt": "Системен Промпт",
...@@ -390,11 +438,13 @@ ...@@ -390,11 +438,13 @@
"Title": "Заглавие", "Title": "Заглавие",
"Title (e.g. Tell me a fun fact)": "", "Title (e.g. Tell me a fun fact)": "",
"Title Auto-Generation": "Автоматично Генериране на Заглавие", "Title Auto-Generation": "Автоматично Генериране на Заглавие",
"Title cannot be an empty string.": "",
"Title Generation Prompt": "Промпт за Генериране на Заглавие", "Title Generation Prompt": "Промпт за Генериране на Заглавие",
"to": "в", "to": "в",
"To access the available model names for downloading,": "За да получите достъп до наличните имена на модели за изтегляне,", "To access the available model names for downloading,": "За да получите достъп до наличните имена на модели за изтегляне,",
"To access the GGUF models available for downloading,": "За да получите достъп до GGUF моделите, налични за изтегляне,", "To access the GGUF models available for downloading,": "За да получите достъп до GGUF моделите, налични за изтегляне,",
"to chat input.": "към чат входа.", "to chat input.": "към чат входа.",
"Today": "",
"Toggle settings": "Toggle settings", "Toggle settings": "Toggle settings",
"Toggle sidebar": "Toggle sidebar", "Toggle sidebar": "Toggle sidebar",
"Top K": "Top K", "Top K": "Top K",
...@@ -405,11 +455,7 @@ ...@@ -405,11 +455,7 @@
"Uh-oh! There was an issue connecting to {{provider}}.": "О, не! Възникна проблем при свързването с {{provider}}.", "Uh-oh! There was an issue connecting to {{provider}}.": "О, не! Възникна проблем при свързването с {{provider}}.",
"Unknown File Type '{{file_type}}', but accepting and treating as plain text": "Непознат файлов тип '{{file_type}}', но се приема и обработва като текст", "Unknown File Type '{{file_type}}', but accepting and treating as plain text": "Непознат файлов тип '{{file_type}}', но се приема и обработва като текст",
"Update and Copy Link": "", "Update and Copy Link": "",
"Update Embedding Model": "",
"Update embedding model (e.g. {{model}})": "",
"Update password": "Обновяване на парола", "Update password": "Обновяване на парола",
"Update Reranking Model": "",
"Update reranking model (e.g. {{model}})": "",
"Upload a GGUF model": "Качване на GGUF модел", "Upload a GGUF model": "Качване на GGUF модел",
"Upload files": "Качване на файлове", "Upload files": "Качване на файлове",
"Upload Progress": "Прогрес на качването", "Upload Progress": "Прогрес на качването",
...@@ -427,6 +473,8 @@ ...@@ -427,6 +473,8 @@
"Version": "Версия", "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": "Уеб",
"Web Loader Settings": "",
"Web Params": "",
"Webhook URL": "", "Webhook URL": "",
"WebUI Add-ons": "WebUI Добавки", "WebUI Add-ons": "WebUI Добавки",
"WebUI Settings": "WebUI Настройки", "WebUI Settings": "WebUI Настройки",
...@@ -436,8 +484,12 @@ ...@@ -436,8 +484,12 @@
"Whisper (Local)": "Whisper (Локален)", "Whisper (Local)": "Whisper (Локален)",
"Write a prompt suggestion (e.g. Who are you?)": "Напиши предложение за промпт (напр. Кой сте вие?)", "Write a prompt suggestion (e.g. Who are you?)": "Напиши предложение за промпт (напр. Кой сте вие?)",
"Write a summary in 50 words that summarizes [topic or keyword].": "Напиши описание в 50 знака, което описва [тема или ключова дума].", "Write a summary in 50 words that summarizes [topic or keyword].": "Напиши описание в 50 знака, което описва [тема или ключова дума].",
"Yesterday": "",
"You": "Вие", "You": "Вие",
"You have no archived conversations.": "",
"You have shared this chat": "",
"You're a helpful assistant.": "Вие сте полезен асистент.", "You're a helpful assistant.": "Вие сте полезен асистент.",
"You're now logged in.": "Сега, вие влязохте в системата.", "You're now logged in.": "Сега, вие влязохте в системата.",
"Youtube": "" "Youtube": "",
"Youtube Loader Settings": ""
} }
...@@ -15,6 +15,7 @@ ...@@ -15,6 +15,7 @@
"Add a short description about what this modelfile does": "এই মডেলফাইলটির সম্পর্কে সংক্ষিপ্ত বিবরণ যোগ করুন", "Add a short description about what this modelfile does": "এই মডেলফাইলটির সম্পর্কে সংক্ষিপ্ত বিবরণ যোগ করুন",
"Add a short title for this prompt": "এই প্রম্পটের জন্য একটি সংক্ষিপ্ত টাইটেল যোগ করুন", "Add a short title for this prompt": "এই প্রম্পটের জন্য একটি সংক্ষিপ্ত টাইটেল যোগ করুন",
"Add a tag": "একটি ট্যাগ যোগ করুন", "Add a tag": "একটি ট্যাগ যোগ করুন",
"Add custom prompt": "",
"Add Docs": "ডকুমেন্ট যোগ করুন", "Add Docs": "ডকুমেন্ট যোগ করুন",
"Add Files": "ফাইল যোগ করুন", "Add Files": "ফাইল যোগ করুন",
"Add message": "মেসেজ যোগ করুন", "Add message": "মেসেজ যোগ করুন",
...@@ -27,6 +28,7 @@ ...@@ -27,6 +28,7 @@
"Admin Settings": "এডমিন সেটিংস", "Admin Settings": "এডমিন সেটিংস",
"Advanced Parameters": "এডভান্সড প্যারামিটার্স", "Advanced Parameters": "এডভান্সড প্যারামিটার্স",
"all": "সব", "all": "সব",
"All Documents": "",
"All Users": "সব ইউজার", "All Users": "সব ইউজার",
"Allow": "অনুমোদন", "Allow": "অনুমোদন",
"Allow Chat Deletion": "চ্যাট ডিলিট করতে দিন", "Allow Chat Deletion": "চ্যাট ডিলিট করতে দিন",
...@@ -34,17 +36,21 @@ ...@@ -34,17 +36,21 @@
"Already have an account?": "আগে থেকেই একাউন্ট আছে?", "Already have an account?": "আগে থেকেই একাউন্ট আছে?",
"an assistant": "একটা এসিস্ট্যান্ট", "an assistant": "একটা এসিস্ট্যান্ট",
"and": "এবং", "and": "এবং",
"and create a new shared link.": "",
"API Base URL": "এপিআই বেজ ইউআরএল", "API Base URL": "এপিআই বেজ ইউআরএল",
"API Key": "এপিআই কোড", "API Key": "এপিআই কোড",
"API Key created.": "", "API Key created.": "",
"API keys": "", "API keys": "",
"API RPM": "এপিআই আরপিএম", "API RPM": "এপিআই আরপিএম",
"April": "",
"Archive": "", "Archive": "",
"Archived Chats": "চ্যাট ইতিহাস সংরক্ষণাগার", "Archived Chats": "চ্যাট ইতিহাস সংরক্ষণাগার",
"are allowed - Activate this command by typing": "অনুমোদিত - কমান্ডটি চালু করার জন্য লিখুন", "are allowed - Activate this command by typing": "অনুমোদিত - কমান্ডটি চালু করার জন্য লিখুন",
"Are you sure?": "আপনি নিশ্চিত?", "Are you sure?": "আপনি নিশ্চিত?",
"Attach file": "",
"Attention to detail": "", "Attention to detail": "",
"Audio": "অডিও", "Audio": "অডিও",
"August": "",
"Auto-playback response": "রেসপন্স অটো-প্লেব্যাক", "Auto-playback response": "রেসপন্স অটো-প্লেব্যাক",
"Auto-send input after 3 sec.": "৩ সেকেন্ড পর ইনপুট সংয়ক্রিয়ভাবে পাঠান", "Auto-send input after 3 sec.": "৩ সেকেন্ড পর ইনপুট সংয়ক্রিয়ভাবে পাঠান",
"AUTOMATIC1111 Base URL": "AUTOMATIC1111 বেজ ইউআরএল", "AUTOMATIC1111 Base URL": "AUTOMATIC1111 বেজ ইউআরএল",
...@@ -52,8 +58,10 @@ ...@@ -52,8 +58,10 @@
"available!": "উপলব্ধ!", "available!": "উপলব্ধ!",
"Back": "পেছনে", "Back": "পেছনে",
"Bad Response": "", "Bad Response": "",
"before": "",
"Being lazy": "", "Being lazy": "",
"Builder Mode": "বিল্ডার মোড", "Builder Mode": "বিল্ডার মোড",
"Bypass SSL verification for Websites": "",
"Cancel": "বাতিল", "Cancel": "বাতিল",
"Categories": "ক্যাটাগরিসমূহ", "Categories": "ক্যাটাগরিসমূহ",
"Change Password": "পাসওয়ার্ড পরিবর্তন করুন", "Change Password": "পাসওয়ার্ড পরিবর্তন করুন",
...@@ -68,7 +76,9 @@ ...@@ -68,7 +76,9 @@
"Chunk Overlap": "চাঙ্ক ওভারল্যাপ", "Chunk Overlap": "চাঙ্ক ওভারল্যাপ",
"Chunk Params": "চাঙ্ক প্যারামিটার্স", "Chunk Params": "চাঙ্ক প্যারামিটার্স",
"Chunk Size": "চাঙ্ক সাইজ", "Chunk Size": "চাঙ্ক সাইজ",
"Citation": "",
"Click here for help.": "সাহায্যের জন্য এখানে ক্লিক করুন", "Click here for help.": "সাহায্যের জন্য এখানে ক্লিক করুন",
"Click here to": "",
"Click here to check other modelfiles.": "অন্যান্য মডেলফাইল চেক করার জন্য এখানে ক্লিক করুন", "Click here to check other modelfiles.": "অন্যান্য মডেলফাইল চেক করার জন্য এখানে ক্লিক করুন",
"Click here to select": "নির্বাচন করার জন্য এখানে ক্লিক করুন", "Click here to select": "নির্বাচন করার জন্য এখানে ক্লিক করুন",
"Click here to select a csv file.": "", "Click here to select a csv file.": "",
...@@ -96,6 +106,8 @@ ...@@ -96,6 +106,8 @@
"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 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 a modelfile": "একটি মডেলফাইল তৈরি করুন",
"Create Account": "একাউন্ট তৈরি করুন", "Create Account": "একাউন্ট তৈরি করুন",
"Create new key": "",
"Create new secret key": "",
"Created at": "নির্মানকাল", "Created at": "নির্মানকাল",
"Created At": "", "Created At": "",
"Current Model": "বর্তমান মডেল", "Current Model": "বর্তমান মডেল",
...@@ -103,8 +115,10 @@ ...@@ -103,8 +115,10 @@
"Custom": "কাস্টম", "Custom": "কাস্টম",
"Customize Ollama models for a specific purpose": "নির্দিষ্ট উদ্দেশ্যে Ollama মডেল পরিবর্তন করুন", "Customize Ollama models for a specific purpose": "নির্দিষ্ট উদ্দেশ্যে Ollama মডেল পরিবর্তন করুন",
"Dark": "ডার্ক", "Dark": "ডার্ক",
"Dashboard": "",
"Database": "ডেটাবেজ", "Database": "ডেটাবেজ",
"DD/MM/YYYY HH:mm": "DD/MM/YYYY HH:mm", "DD/MM/YYYY HH:mm": "DD/MM/YYYY HH:mm",
"December": "",
"Default": "ডিফল্ট", "Default": "ডিফল্ট",
"Default (Automatic1111)": "ডিফল্ট (Automatic1111)", "Default (Automatic1111)": "ডিফল্ট (Automatic1111)",
"Default (SentenceTransformers)": "", "Default (SentenceTransformers)": "",
...@@ -118,6 +132,7 @@ ...@@ -118,6 +132,7 @@
"Delete chat": "চ্যাট মুছে ফেলুন", "Delete chat": "চ্যাট মুছে ফেলুন",
"Delete Chat": "", "Delete Chat": "",
"Delete Chats": "চ্যাটগুলো মুছে ফেলুন", "Delete Chats": "চ্যাটগুলো মুছে ফেলুন",
"delete this link": "",
"Delete User": "", "Delete User": "",
"Deleted {{deleteModelTag}}": "{{deleteModelTag}} মুছে ফেলা হয়েছে", "Deleted {{deleteModelTag}}": "{{deleteModelTag}} মুছে ফেলা হয়েছে",
"Deleted {{tagName}}": "", "Deleted {{tagName}}": "",
...@@ -137,6 +152,7 @@ ...@@ -137,6 +152,7 @@
"Don't have an account?": "একাউন্ট নেই?", "Don't have an account?": "একাউন্ট নেই?",
"Don't like the style": "", "Don't like the style": "",
"Download": "", "Download": "",
"Download canceled": "",
"Download Database": "ডেটাবেজ ডাউনলোড করুন", "Download Database": "ডেটাবেজ ডাউনলোড করুন",
"Drop any files here to add to the conversation": "আলোচনায় যুক্ত করার জন্য যে কোন ফাইল এখানে ড্রপ করুন", "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'.", "e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "যেমন '30s','10m'. সময়ের অনুমোদিত অনুমোদিত এককগুলি হচ্ছে 's', 'm', 'h'.",
...@@ -144,6 +160,7 @@ ...@@ -144,6 +160,7 @@
"Edit Doc": "ডকুমেন্ট এডিট করুন", "Edit Doc": "ডকুমেন্ট এডিট করুন",
"Edit User": "ইউজার এডিট করুন", "Edit User": "ইউজার এডিট করুন",
"Email": "ইমেইল", "Email": "ইমেইল",
"Embedding Model": "",
"Embedding Model Engine": "", "Embedding Model Engine": "",
"Embedding model set to \"{{embedding_model}}\"": "", "Embedding model set to \"{{embedding_model}}\"": "",
"Enable Chat History": "চ্যাট হিস্টোরি চালু করুন", "Enable Chat History": "চ্যাট হিস্টোরি চালু করুন",
...@@ -154,6 +171,7 @@ ...@@ -154,6 +171,7 @@
"Enter Chunk Overlap": "চাঙ্ক ওভারল্যাপ লিখুন", "Enter Chunk Overlap": "চাঙ্ক ওভারল্যাপ লিখুন",
"Enter Chunk Size": "চাংক সাইজ লিখুন", "Enter Chunk Size": "চাংক সাইজ লিখুন",
"Enter Image Size (e.g. 512x512)": "ছবির মাপ লিখুন (যেমন 512x512)", "Enter Image Size (e.g. 512x512)": "ছবির মাপ লিখুন (যেমন 512x512)",
"Enter language codes": "",
"Enter LiteLLM API Base URL (litellm_params.api_base)": "LiteLLM এপিআই বেজ ইউআরএল লিখুন (litellm_params.api_base)", "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 Key (litellm_params.api_key)": "LiteLLM এপিআই কোড লিখুন (litellm_params.api_key)",
"Enter LiteLLM API RPM (litellm_params.rpm)": "LiteLLM এপিআই RPM দিন (litellm_params.rpm)", "Enter LiteLLM API RPM (litellm_params.rpm)": "LiteLLM এপিআই RPM দিন (litellm_params.rpm)",
...@@ -165,6 +183,7 @@ ...@@ -165,6 +183,7 @@
"Enter stop sequence": "স্টপ সিকোয়েন্স লিখুন", "Enter stop sequence": "স্টপ সিকোয়েন্স লিখুন",
"Enter Top K": "Top K লিখুন", "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://127.0.0.1:7860/)": "ইউআরএল দিন (যেমন http://127.0.0.1:7860/)",
"Enter URL (e.g. http://localhost:11434)": "",
"Enter Your Email": "আপনার ইমেইল লিখুন", "Enter Your Email": "আপনার ইমেইল লিখুন",
"Enter Your Full Name": "আপনার পূর্ণ নাম লিখুন", "Enter Your Full Name": "আপনার পূর্ণ নাম লিখুন",
"Enter Your Password": "আপনার পাসওয়ার্ড লিখুন", "Enter Your Password": "আপনার পাসওয়ার্ড লিখুন",
...@@ -177,6 +196,7 @@ ...@@ -177,6 +196,7 @@
"Export Prompts": "প্রম্পটগুলো একপোর্ট করুন", "Export Prompts": "প্রম্পটগুলো একপোর্ট করুন",
"Failed to create API Key.": "", "Failed to create API Key.": "",
"Failed to read clipboard contents": "ক্লিপবোর্ডের বিষয়বস্তু পড়া সম্ভব হয়নি", "Failed to read clipboard contents": "ক্লিপবোর্ডের বিষয়বস্তু পড়া সম্ভব হয়নি",
"February": "",
"Feel free to add specific details": "", "Feel free to add specific details": "",
"File Mode": "ফাইল মোড", "File Mode": "ফাইল মোড",
"File not found.": "ফাইল পাওয়া যায়নি", "File not found.": "ফাইল পাওয়া যায়নি",
...@@ -193,6 +213,7 @@ ...@@ -193,6 +213,7 @@
"Good Response": "", "Good Response": "",
"has no conversations.": "", "has no conversations.": "",
"Hello, {{name}}": "হ্যালো, {{name}}", "Hello, {{name}}": "হ্যালো, {{name}}",
"Help": "",
"Hide": "লুকান", "Hide": "লুকান",
"Hide Additional Params": "অতিরিক্ত প্যারামিটাগুলো লুকান", "Hide Additional Params": "অতিরিক্ত প্যারামিটাগুলো লুকান",
"How can I help you today?": "আপনাকে আজ কিভাবে সাহায্য করতে পারি?", "How can I help you today?": "আপনাকে আজ কিভাবে সাহায্য করতে পারি?",
...@@ -206,9 +227,14 @@ ...@@ -206,9 +227,14 @@
"Import Modelfiles": "মডেলফাইলগুলো ইমপোর্ট করুন", "Import Modelfiles": "মডেলফাইলগুলো ইমপোর্ট করুন",
"Import Prompts": "প্রম্পটগুলো ইমপোর্ট করুন", "Import Prompts": "প্রম্পটগুলো ইমপোর্ট করুন",
"Include `--api` flag when running stable-diffusion-webui": "stable-diffusion-webui চালু করার সময় `--api` ফ্ল্যাগ সংযুক্ত করুন", "Include `--api` flag when running stable-diffusion-webui": "stable-diffusion-webui চালু করার সময় `--api` ফ্ল্যাগ সংযুক্ত করুন",
"Input commands": "",
"Interface": "ইন্টারফেস", "Interface": "ইন্টারফেস",
"Invalid Tag": "",
"January": "",
"join our Discord for help.": "সাহায্যের জন্য আমাদের Discord-এ যুক্ত হোন", "join our Discord for help.": "সাহায্যের জন্য আমাদের Discord-এ যুক্ত হোন",
"JSON": "JSON", "JSON": "JSON",
"July": "",
"June": "",
"JWT Expiration": "JWT-র মেয়াদ", "JWT Expiration": "JWT-র মেয়াদ",
"JWT Token": "JWT টোকেন", "JWT Token": "JWT টোকেন",
"Keep Alive": "সচল রাখুন", "Keep Alive": "সচল রাখুন",
...@@ -223,8 +249,11 @@ ...@@ -223,8 +249,11 @@
"Manage LiteLLM Models": "LiteLLM মডেল ব্যবস্থাপনা করুন", "Manage LiteLLM Models": "LiteLLM মডেল ব্যবস্থাপনা করুন",
"Manage Models": "মডেলসমূহ ব্যবস্থাপনা করুন", "Manage Models": "মডেলসমূহ ব্যবস্থাপনা করুন",
"Manage Ollama Models": "Ollama মডেলসূহ ব্যবস্থাপনা করুন", "Manage Ollama Models": "Ollama মডেলসূহ ব্যবস্থাপনা করুন",
"March": "",
"Max Tokens": "সর্বোচ্চ টোকন", "Max Tokens": "সর্বোচ্চ টোকন",
"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "একসঙ্গে সর্বোচ্চ তিনটি মডেল ডাউনলোড করা যায়। দয়া করে পরে আবার চেষ্টা করুন।", "Maximum of 3 models can be downloaded simultaneously. Please try again later.": "একসঙ্গে সর্বোচ্চ তিনটি মডেল ডাউনলোড করা যায়। দয়া করে পরে আবার চেষ্টা করুন।",
"May": "",
"Messages you send after creating your link won't be shared. Users with the URL will beable to view the shared chat.": "",
"Minimum Score": "", "Minimum Score": "",
"Mirostat": "Mirostat", "Mirostat": "Mirostat",
"Mirostat Eta": "Mirostat Eta", "Mirostat Eta": "Mirostat Eta",
...@@ -255,11 +284,15 @@ ...@@ -255,11 +284,15 @@
"Name your modelfile": "আপনার মডেলফাইলের নাম দিন", "Name your modelfile": "আপনার মডেলফাইলের নাম দিন",
"New Chat": "নতুন চ্যাট", "New Chat": "নতুন চ্যাট",
"New Password": "নতুন পাসওয়ার্ড", "New Password": "নতুন পাসওয়ার্ড",
"No results found": "",
"No source available": "",
"Not factually correct": "", "Not factually correct": "",
"Not sure what to add?": "কী যুক্ত করতে হবে নিশ্চিত না?", "Not sure what to add?": "কী যুক্ত করতে হবে নিশ্চিত না?",
"Not sure what to write? Switch to": "কী লিখতে হবে নিশ্চিত না? পরিবর্তন করুন:", "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": "নোটিফিকেশনসমূহ", "Notifications": "নোটিফিকেশনসমূহ",
"November": "",
"October": "",
"Off": "বন্ধ", "Off": "বন্ধ",
"Okay, Let's Go!": "ঠিক আছে, চলুন যাই!", "Okay, Let's Go!": "ঠিক আছে, চলুন যাই!",
"OLED Dark": "", "OLED Dark": "",
...@@ -283,6 +316,7 @@ ...@@ -283,6 +316,7 @@
"OpenAI URL/Key required.": "", "OpenAI URL/Key required.": "",
"or": "অথবা", "or": "অথবা",
"Other": "", "Other": "",
"Overview": "",
"Parameters": "প্যারামিটারসমূহ", "Parameters": "প্যারামিটারসমূহ",
"Password": "পাসওয়ার্ড", "Password": "পাসওয়ার্ড",
"PDF document (.pdf)": "", "PDF document (.pdf)": "",
...@@ -292,11 +326,15 @@ ...@@ -292,11 +326,15 @@
"Plain text (.txt)": "", "Plain text (.txt)": "",
"Playground": "খেলাঘর", "Playground": "খেলাঘর",
"Positive attitude": "", "Positive attitude": "",
"Previous 30 days": "",
"Previous 7 days": "",
"Profile Image": "", "Profile Image": "",
"Prompt": "",
"Prompt (e.g. Tell me a fun fact about the Roman Empire)": "", "Prompt (e.g. Tell me a fun fact about the Roman Empire)": "",
"Prompt Content": "প্রম্পট কন্টেন্ট", "Prompt Content": "প্রম্পট কন্টেন্ট",
"Prompt suggestions": "প্রম্পট সাজেশনসমূহ", "Prompt suggestions": "প্রম্পট সাজেশনসমূহ",
"Prompts": "প্রম্পটসমূহ", "Prompts": "প্রম্পটসমূহ",
"Pull \"{{searchValue}}\" from Ollama.com": "",
"Pull a model from Ollama.com": "Ollama.com থেকে একটি টেনে আনুন আনুন", "Pull a model from Ollama.com": "Ollama.com থেকে একটি টেনে আনুন আনুন",
"Pull Progress": "Pull চলমান", "Pull Progress": "Pull চলমান",
"Query Params": "Query প্যারামিটারসমূহ", "Query Params": "Query প্যারামিটারসমূহ",
...@@ -309,9 +347,12 @@ ...@@ -309,9 +347,12 @@
"Regenerate": "", "Regenerate": "",
"Release Notes": "রিলিজ নোটসমূহ", "Release Notes": "রিলিজ নোটসমূহ",
"Remove": "", "Remove": "",
"Remove Model": "",
"Rename": "",
"Repeat Last N": "রিপিট Last N", "Repeat Last N": "রিপিট Last N",
"Repeat Penalty": "রিপিট প্যানাল্টি", "Repeat Penalty": "রিপিট প্যানাল্টি",
"Request Mode": "রিকোয়েস্ট মোড", "Request Mode": "রিকোয়েস্ট মোড",
"Reranking Model": "",
"Reranking model disabled": "", "Reranking model disabled": "",
"Reranking model set to \"{{reranking_model}}\"": "", "Reranking model set to \"{{reranking_model}}\"": "",
"Reset Vector Storage": "ভেক্টর স্টোরেজ রিসেট করুন", "Reset Vector Storage": "ভেক্টর স্টোরেজ রিসেট করুন",
...@@ -337,12 +378,17 @@ ...@@ -337,12 +378,17 @@
"Select a mode": "একটি মডেল নির্বাচন করুন", "Select a mode": "একটি মডেল নির্বাচন করুন",
"Select a model": "একটি মডেল নির্বাচন করুন", "Select a model": "একটি মডেল নির্বাচন করুন",
"Select an Ollama instance": "একটি Ollama ইন্সট্যান্স নির্বাচন করুন", "Select an Ollama instance": "একটি Ollama ইন্সট্যান্স নির্বাচন করুন",
"Select model": "",
"Send a Message": "একটি মেসেজ পাঠান", "Send a Message": "একটি মেসেজ পাঠান",
"Send message": "মেসেজ পাঠান", "Send message": "মেসেজ পাঠান",
"September": "",
"Server connection verified": "সার্ভার কানেকশন যাচাই করা হয়েছে", "Server connection verified": "সার্ভার কানেকশন যাচাই করা হয়েছে",
"Set as default": "ডিফল্ট হিসেবে নির্ধারণ করুন", "Set as default": "ডিফল্ট হিসেবে নির্ধারণ করুন",
"Set Default Model": "ডিফল্ট মডেল নির্ধারণ করুন", "Set Default Model": "ডিফল্ট মডেল নির্ধারণ করুন",
"Set embedding model (e.g. {{model}})": "",
"Set Image Size": "ছবির সাইজ নির্ধারণ করুন", "Set Image Size": "ছবির সাইজ নির্ধারণ করুন",
"Set Model": "মডেল নির্ধারণ করুন",
"Set reranking model (e.g. {{model}})": "",
"Set Steps": "পরবর্তী ধাপসমূহ", "Set Steps": "পরবর্তী ধাপসমূহ",
"Set Title Auto-Generation Model": "শিরোনাম অটোজেনারেশন মডেন নির্ধারণ করুন", "Set Title Auto-Generation Model": "শিরোনাম অটোজেনারেশন মডেন নির্ধারণ করুন",
"Set Voice": "কন্ঠস্বর নির্ধারণ করুন", "Set Voice": "কন্ঠস্বর নির্ধারণ করুন",
...@@ -361,6 +407,7 @@ ...@@ -361,6 +407,7 @@
"Sign Out": "সাইন আউট", "Sign Out": "সাইন আউট",
"Sign up": "সাইন আপ", "Sign up": "সাইন আপ",
"Signing in": "", "Signing in": "",
"Source": "",
"Speech recognition error: {{error}}": "স্পিচ রিকগনিশনে সমস্যা: {{error}}", "Speech recognition error: {{error}}": "স্পিচ রিকগনিশনে সমস্যা: {{error}}",
"Speech-to-Text Engine": "স্পিচ-টু-টেক্সট ইঞ্জিন", "Speech-to-Text Engine": "স্পিচ-টু-টেক্সট ইঞ্জিন",
"SpeechRecognition API is not supported in this browser.": "এই ব্রাউজার স্পিচরিকগনিশন এপিআই সাপোর্ট করে না।", "SpeechRecognition API is not supported in this browser.": "এই ব্রাউজার স্পিচরিকগনিশন এপিআই সাপোর্ট করে না।",
...@@ -370,6 +417,7 @@ ...@@ -370,6 +417,7 @@
"Subtitle (e.g. about the Roman Empire)": "", "Subtitle (e.g. about the Roman Empire)": "",
"Success": "সফল", "Success": "সফল",
"Successfully updated.": "সফলভাবে আপডেট হয়েছে", "Successfully updated.": "সফলভাবে আপডেট হয়েছে",
"Suggested": "",
"Sync All": "সব সিংক্রোনাইজ করুন", "Sync All": "সব সিংক্রোনাইজ করুন",
"System": "সিস্টেম", "System": "সিস্টেম",
"System Prompt": "সিস্টেম প্রম্পট", "System Prompt": "সিস্টেম প্রম্পট",
...@@ -390,11 +438,13 @@ ...@@ -390,11 +438,13 @@
"Title": "শিরোনাম", "Title": "শিরোনাম",
"Title (e.g. Tell me a fun fact)": "", "Title (e.g. Tell me a fun fact)": "",
"Title Auto-Generation": "স্বয়ংক্রিয় শিরোনামগঠন", "Title Auto-Generation": "স্বয়ংক্রিয় শিরোনামগঠন",
"Title cannot be an empty string.": "",
"Title Generation Prompt": "শিরোনামগঠন প্রম্পট", "Title Generation Prompt": "শিরোনামগঠন প্রম্পট",
"to": "প্রতি", "to": "প্রতি",
"To access the available model names for downloading,": "ডাউনলোডের জন্য এভেইলএবল মডেলের নামগুলো এক্সেস করতে,", "To access the available model names for downloading,": "ডাউনলোডের জন্য এভেইলএবল মডেলের নামগুলো এক্সেস করতে,",
"To access the GGUF models available for downloading,": "ডাউলোডের জন্য এভেইলএবল GGUF মডেলগুলো এক্সেস করতে,", "To access the GGUF models available for downloading,": "ডাউলোডের জন্য এভেইলএবল GGUF মডেলগুলো এক্সেস করতে,",
"to chat input.": "চ্যাট ইনপুটে", "to chat input.": "চ্যাট ইনপুটে",
"Today": "",
"Toggle settings": "সেটিংস টোগল", "Toggle settings": "সেটিংস টোগল",
"Toggle sidebar": "সাইডবার টোগল", "Toggle sidebar": "সাইডবার টোগল",
"Top K": "Top K", "Top K": "Top K",
...@@ -405,11 +455,7 @@ ...@@ -405,11 +455,7 @@
"Uh-oh! There was an issue connecting to {{provider}}.": "ওহ-হো! {{provider}} এর সাথে কানেকশনে সমস্যা হয়েছে।", "Uh-oh! There was an issue connecting to {{provider}}.": "ওহ-হো! {{provider}} এর সাথে কানেকশনে সমস্যা হয়েছে।",
"Unknown File Type '{{file_type}}', but accepting and treating as plain text": "অপরিচিত ফাইল ফরম্যাট '{{file_type}}', তবে প্লেইন টেক্সট হিসেবে গ্রহণ করা হলো", "Unknown File Type '{{file_type}}', but accepting and treating as plain text": "অপরিচিত ফাইল ফরম্যাট '{{file_type}}', তবে প্লেইন টেক্সট হিসেবে গ্রহণ করা হলো",
"Update and Copy Link": "", "Update and Copy Link": "",
"Update Embedding Model": "",
"Update embedding model (e.g. {{model}})": "",
"Update password": "পাসওয়ার্ড আপডেট করুন", "Update password": "পাসওয়ার্ড আপডেট করুন",
"Update Reranking Model": "",
"Update reranking model (e.g. {{model}})": "",
"Upload a GGUF model": "একটি GGUF মডেল আপলোড করুন", "Upload a GGUF model": "একটি GGUF মডেল আপলোড করুন",
"Upload files": "ফাইলগুলো আপলোড করুন", "Upload files": "ফাইলগুলো আপলোড করুন",
"Upload Progress": "আপলোড হচ্ছে", "Upload Progress": "আপলোড হচ্ছে",
...@@ -427,6 +473,8 @@ ...@@ -427,6 +473,8 @@
"Version": "ভার্সন", "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": "ওয়েব",
"Web Loader Settings": "",
"Web Params": "",
"Webhook URL": "", "Webhook URL": "",
"WebUI Add-ons": "WebUI এড-অনসমূহ", "WebUI Add-ons": "WebUI এড-অনসমূহ",
"WebUI Settings": "WebUI সেটিংসমূহ", "WebUI Settings": "WebUI সেটিংসমূহ",
...@@ -436,8 +484,12 @@ ...@@ -436,8 +484,12 @@
"Whisper (Local)": "Whisper (লোকাল)", "Whisper (Local)": "Whisper (লোকাল)",
"Write a prompt suggestion (e.g. Who are you?)": "একটি প্রম্পট সাজেশন লিখুন (যেমন Who are you?)", "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] এর একটি সারসংক্ষেপ লিখুন।", "Write a summary in 50 words that summarizes [topic or keyword].": "৫০ শব্দের মধ্যে [topic or keyword] এর একটি সারসংক্ষেপ লিখুন।",
"Yesterday": "",
"You": "আপনি", "You": "আপনি",
"You have no archived conversations.": "",
"You have shared this chat": "",
"You're a helpful assistant.": "আপনি একজন উপকারী এসিস্ট্যান্ট", "You're a helpful assistant.": "আপনি একজন উপকারী এসিস্ট্যান্ট",
"You're now logged in.": "আপনি এখন লগইন করা অবস্থায় আছেন", "You're now logged in.": "আপনি এখন লগইন করা অবস্থায় আছেন",
"Youtube": "" "Youtube": "",
"Youtube Loader Settings": ""
} }
...@@ -15,6 +15,7 @@ ...@@ -15,6 +15,7 @@
"Add a short description about what this modelfile does": "Afegeix una descripció curta del que fa aquest arxiu de model", "Add a short description about what this modelfile does": "Afegeix una descripció curta del que fa aquest arxiu de model",
"Add a short title for this prompt": "Afegeix un títol curt per aquest prompt", "Add a short title for this prompt": "Afegeix un títol curt per aquest prompt",
"Add a tag": "Afegeix una etiqueta", "Add a tag": "Afegeix una etiqueta",
"Add custom prompt": "",
"Add Docs": "Afegeix Documents", "Add Docs": "Afegeix Documents",
"Add Files": "Afegeix Arxius", "Add Files": "Afegeix Arxius",
"Add message": "Afegeix missatge", "Add message": "Afegeix missatge",
...@@ -27,6 +28,7 @@ ...@@ -27,6 +28,7 @@
"Admin Settings": "Configuració d'Administració", "Admin Settings": "Configuració d'Administració",
"Advanced Parameters": "Paràmetres Avançats", "Advanced Parameters": "Paràmetres Avançats",
"all": "tots", "all": "tots",
"All Documents": "",
"All Users": "Tots els Usuaris", "All Users": "Tots els Usuaris",
"Allow": "Permet", "Allow": "Permet",
"Allow Chat Deletion": "Permet la Supressió del Xat", "Allow Chat Deletion": "Permet la Supressió del Xat",
...@@ -34,17 +36,21 @@ ...@@ -34,17 +36,21 @@
"Already have an account?": "Ja tens un compte?", "Already have an account?": "Ja tens un compte?",
"an assistant": "un assistent", "an assistant": "un assistent",
"and": "i", "and": "i",
"and create a new shared link.": "",
"API Base URL": "URL Base de l'API", "API Base URL": "URL Base de l'API",
"API Key": "Clau de l'API", "API Key": "Clau de l'API",
"API Key created.": "", "API Key created.": "",
"API keys": "", "API keys": "",
"API RPM": "RPM de l'API", "API RPM": "RPM de l'API",
"April": "",
"Archive": "", "Archive": "",
"Archived Chats": "Arxiu d'historial de xat", "Archived Chats": "Arxiu d'historial de xat",
"are allowed - Activate this command by typing": "estan permesos - Activa aquesta comanda escrivint", "are allowed - Activate this command by typing": "estan permesos - Activa aquesta comanda escrivint",
"Are you sure?": "Estàs segur?", "Are you sure?": "Estàs segur?",
"Attach file": "",
"Attention to detail": "", "Attention to detail": "",
"Audio": "Àudio", "Audio": "Àudio",
"August": "",
"Auto-playback response": "Resposta de reproducció automàtica", "Auto-playback response": "Resposta de reproducció automàtica",
"Auto-send input after 3 sec.": "Enviar entrada automàticament després de 3 segons", "Auto-send input after 3 sec.": "Enviar entrada automàticament després de 3 segons",
"AUTOMATIC1111 Base URL": "URL Base AUTOMATIC1111", "AUTOMATIC1111 Base URL": "URL Base AUTOMATIC1111",
...@@ -52,8 +58,10 @@ ...@@ -52,8 +58,10 @@
"available!": "disponible!", "available!": "disponible!",
"Back": "Enrere", "Back": "Enrere",
"Bad Response": "", "Bad Response": "",
"before": "",
"Being lazy": "", "Being lazy": "",
"Builder Mode": "Mode Constructor", "Builder Mode": "Mode Constructor",
"Bypass SSL verification for Websites": "",
"Cancel": "Cancel·la", "Cancel": "Cancel·la",
"Categories": "Categories", "Categories": "Categories",
"Change Password": "Canvia la Contrasenya", "Change Password": "Canvia la Contrasenya",
...@@ -68,7 +76,9 @@ ...@@ -68,7 +76,9 @@
"Chunk Overlap": "Solapament de Blocs", "Chunk Overlap": "Solapament de Blocs",
"Chunk Params": "Paràmetres de Blocs", "Chunk Params": "Paràmetres de Blocs",
"Chunk Size": "Mida del Bloc", "Chunk Size": "Mida del Bloc",
"Citation": "",
"Click here for help.": "Fes clic aquí per ajuda.", "Click here for help.": "Fes clic aquí per ajuda.",
"Click here to": "",
"Click here to check other modelfiles.": "Fes clic aquí per comprovar altres fitxers de model.", "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": "Fes clic aquí per seleccionar",
"Click here to select a csv file.": "", "Click here to select a csv file.": "",
...@@ -96,6 +106,8 @@ ...@@ -96,6 +106,8 @@
"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 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 a modelfile": "Crea un fitxer de model",
"Create Account": "Crea un Compte", "Create Account": "Crea un Compte",
"Create new key": "",
"Create new secret key": "",
"Created at": "Creat el", "Created at": "Creat el",
"Created At": "", "Created At": "",
"Current Model": "Model Actual", "Current Model": "Model Actual",
...@@ -103,8 +115,10 @@ ...@@ -103,8 +115,10 @@
"Custom": "Personalitzat", "Custom": "Personalitzat",
"Customize Ollama models for a specific purpose": "Personalitza els models Ollama per a un propòsit específic", "Customize Ollama models for a specific purpose": "Personalitza els models Ollama per a un propòsit específic",
"Dark": "Fosc", "Dark": "Fosc",
"Dashboard": "",
"Database": "Base de Dades", "Database": "Base de Dades",
"DD/MM/YYYY HH:mm": "DD/MM/YYYY HH:mm", "DD/MM/YYYY HH:mm": "DD/MM/YYYY HH:mm",
"December": "",
"Default": "Per defecte", "Default": "Per defecte",
"Default (Automatic1111)": "Per defecte (Automatic1111)", "Default (Automatic1111)": "Per defecte (Automatic1111)",
"Default (SentenceTransformers)": "", "Default (SentenceTransformers)": "",
...@@ -118,6 +132,7 @@ ...@@ -118,6 +132,7 @@
"Delete chat": "Esborra xat", "Delete chat": "Esborra xat",
"Delete Chat": "", "Delete Chat": "",
"Delete Chats": "Esborra Xats", "Delete Chats": "Esborra Xats",
"delete this link": "",
"Delete User": "", "Delete User": "",
"Deleted {{deleteModelTag}}": "Esborrat {{deleteModelTag}}", "Deleted {{deleteModelTag}}": "Esborrat {{deleteModelTag}}",
"Deleted {{tagName}}": "", "Deleted {{tagName}}": "",
...@@ -137,6 +152,7 @@ ...@@ -137,6 +152,7 @@
"Don't have an account?": "No tens un compte?", "Don't have an account?": "No tens un compte?",
"Don't like the style": "", "Don't like the style": "",
"Download": "", "Download": "",
"Download canceled": "",
"Download Database": "Descarrega Base de Dades", "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", "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'.", "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'.",
...@@ -144,6 +160,7 @@ ...@@ -144,6 +160,7 @@
"Edit Doc": "Edita Document", "Edit Doc": "Edita Document",
"Edit User": "Edita Usuari", "Edit User": "Edita Usuari",
"Email": "Correu electrònic", "Email": "Correu electrònic",
"Embedding Model": "",
"Embedding Model Engine": "", "Embedding Model Engine": "",
"Embedding model set to \"{{embedding_model}}\"": "", "Embedding model set to \"{{embedding_model}}\"": "",
"Enable Chat History": "Activa Historial de Xat", "Enable Chat History": "Activa Historial de Xat",
...@@ -154,6 +171,7 @@ ...@@ -154,6 +171,7 @@
"Enter Chunk Overlap": "Introdueix el Solapament de Blocs", "Enter Chunk Overlap": "Introdueix el Solapament de Blocs",
"Enter Chunk Size": "Introdueix la Mida del Bloc", "Enter Chunk Size": "Introdueix la Mida del Bloc",
"Enter Image Size (e.g. 512x512)": "Introdueix la Mida de la Imatge (p. ex. 512x512)", "Enter Image Size (e.g. 512x512)": "Introdueix la Mida de la Imatge (p. ex. 512x512)",
"Enter language codes": "",
"Enter LiteLLM API Base URL (litellm_params.api_base)": "Introdueix l'URL Base de LiteLLM API (litellm_params.api_base)", "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 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)", "Enter LiteLLM API RPM (litellm_params.rpm)": "Introdueix RPM de LiteLLM API (litellm_params.rpm)",
...@@ -165,6 +183,7 @@ ...@@ -165,6 +183,7 @@
"Enter stop sequence": "Introdueix la seqüència de parada", "Enter stop sequence": "Introdueix la seqüència de parada",
"Enter Top K": "Introdueix Top K", "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://127.0.0.1:7860/)": "Introdueix l'URL (p. ex. http://127.0.0.1:7860/)",
"Enter URL (e.g. http://localhost:11434)": "",
"Enter Your Email": "Introdueix el Teu Correu Electrònic", "Enter Your Email": "Introdueix el Teu Correu Electrònic",
"Enter Your Full Name": "Introdueix el Teu Nom Complet", "Enter Your Full Name": "Introdueix el Teu Nom Complet",
"Enter Your Password": "Introdueix la Teva Contrasenya", "Enter Your Password": "Introdueix la Teva Contrasenya",
...@@ -177,6 +196,7 @@ ...@@ -177,6 +196,7 @@
"Export Prompts": "Exporta Prompts", "Export Prompts": "Exporta Prompts",
"Failed to create API Key.": "", "Failed to create API Key.": "",
"Failed to read clipboard contents": "No s'ha pogut llegir el contingut del porta-retalls", "Failed to read clipboard contents": "No s'ha pogut llegir el contingut del porta-retalls",
"February": "",
"Feel free to add specific details": "", "Feel free to add specific details": "",
"File Mode": "Mode Arxiu", "File Mode": "Mode Arxiu",
"File not found.": "Arxiu no trobat.", "File not found.": "Arxiu no trobat.",
...@@ -193,6 +213,7 @@ ...@@ -193,6 +213,7 @@
"Good Response": "", "Good Response": "",
"has no conversations.": "", "has no conversations.": "",
"Hello, {{name}}": "Hola, {{name}}", "Hello, {{name}}": "Hola, {{name}}",
"Help": "",
"Hide": "Amaga", "Hide": "Amaga",
"Hide Additional Params": "Amaga Paràmetres Addicionals", "Hide Additional Params": "Amaga Paràmetres Addicionals",
"How can I help you today?": "Com et puc ajudar avui?", "How can I help you today?": "Com et puc ajudar avui?",
...@@ -206,9 +227,14 @@ ...@@ -206,9 +227,14 @@
"Import Modelfiles": "Importa Fitxers de Model", "Import Modelfiles": "Importa Fitxers de Model",
"Import Prompts": "Importa Prompts", "Import Prompts": "Importa Prompts",
"Include `--api` flag when running stable-diffusion-webui": "Inclou la bandera `--api` quan executis stable-diffusion-webui", "Include `--api` flag when running stable-diffusion-webui": "Inclou la bandera `--api` quan executis stable-diffusion-webui",
"Input commands": "",
"Interface": "Interfície", "Interface": "Interfície",
"Invalid Tag": "",
"January": "",
"join our Discord for help.": "uneix-te al nostre Discord per ajuda.", "join our Discord for help.": "uneix-te al nostre Discord per ajuda.",
"JSON": "JSON", "JSON": "JSON",
"July": "",
"June": "",
"JWT Expiration": "Expiració de JWT", "JWT Expiration": "Expiració de JWT",
"JWT Token": "Token JWT", "JWT Token": "Token JWT",
"Keep Alive": "Mantén Actiu", "Keep Alive": "Mantén Actiu",
...@@ -223,8 +249,11 @@ ...@@ -223,8 +249,11 @@
"Manage LiteLLM Models": "Gestiona Models LiteLLM", "Manage LiteLLM Models": "Gestiona Models LiteLLM",
"Manage Models": "Gestiona Models", "Manage Models": "Gestiona Models",
"Manage Ollama Models": "Gestiona Models Ollama", "Manage Ollama Models": "Gestiona Models Ollama",
"March": "",
"Max Tokens": "Màxim de Tokens", "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.", "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": "",
"Messages you send after creating your link won't be shared. Users with the URL will beable to view the shared chat.": "",
"Minimum Score": "", "Minimum Score": "",
"Mirostat": "Mirostat", "Mirostat": "Mirostat",
"Mirostat Eta": "Eta de Mirostat", "Mirostat Eta": "Eta de Mirostat",
...@@ -255,11 +284,15 @@ ...@@ -255,11 +284,15 @@
"Name your modelfile": "Nomena el teu fitxer de model", "Name your modelfile": "Nomena el teu fitxer de model",
"New Chat": "Xat Nou", "New Chat": "Xat Nou",
"New Password": "Nova Contrasenya", "New Password": "Nova Contrasenya",
"No results found": "",
"No source available": "",
"Not factually correct": "", "Not factually correct": "",
"Not sure what to add?": "No estàs segur del que afegir?", "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", "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.": "",
"Notifications": "Notificacions d'Escriptori", "Notifications": "Notificacions d'Escriptori",
"November": "",
"October": "",
"Off": "Desactivat", "Off": "Desactivat",
"Okay, Let's Go!": "D'acord, Anem!", "Okay, Let's Go!": "D'acord, Anem!",
"OLED Dark": "", "OLED Dark": "",
...@@ -283,6 +316,7 @@ ...@@ -283,6 +316,7 @@
"OpenAI URL/Key required.": "", "OpenAI URL/Key required.": "",
"or": "o", "or": "o",
"Other": "", "Other": "",
"Overview": "",
"Parameters": "Paràmetres", "Parameters": "Paràmetres",
"Password": "Contrasenya", "Password": "Contrasenya",
"PDF document (.pdf)": "", "PDF document (.pdf)": "",
...@@ -292,11 +326,15 @@ ...@@ -292,11 +326,15 @@
"Plain text (.txt)": "", "Plain text (.txt)": "",
"Playground": "Zona de Jocs", "Playground": "Zona de Jocs",
"Positive attitude": "", "Positive attitude": "",
"Previous 30 days": "",
"Previous 7 days": "",
"Profile Image": "", "Profile Image": "",
"Prompt": "",
"Prompt (e.g. Tell me a fun fact about the Roman Empire)": "", "Prompt (e.g. Tell me a fun fact about the Roman Empire)": "",
"Prompt Content": "Contingut del Prompt", "Prompt Content": "Contingut del Prompt",
"Prompt suggestions": "Suggeriments de Prompt", "Prompt suggestions": "Suggeriments de Prompt",
"Prompts": "Prompts", "Prompts": "Prompts",
"Pull \"{{searchValue}}\" from Ollama.com": "",
"Pull a model from Ollama.com": "Treu un model d'Ollama.com", "Pull a model from Ollama.com": "Treu un model d'Ollama.com",
"Pull Progress": "Progrés de Tracció", "Pull Progress": "Progrés de Tracció",
"Query Params": "Paràmetres de Consulta", "Query Params": "Paràmetres de Consulta",
...@@ -309,9 +347,12 @@ ...@@ -309,9 +347,12 @@
"Regenerate": "", "Regenerate": "",
"Release Notes": "Notes de la Versió", "Release Notes": "Notes de la Versió",
"Remove": "", "Remove": "",
"Remove Model": "",
"Rename": "",
"Repeat Last N": "Repeteix Últim N", "Repeat Last N": "Repeteix Últim N",
"Repeat Penalty": "Penalització de Repetició", "Repeat Penalty": "Penalització de Repetició",
"Request Mode": "Mode de Sol·licitud", "Request Mode": "Mode de Sol·licitud",
"Reranking Model": "",
"Reranking model disabled": "", "Reranking model disabled": "",
"Reranking model set to \"{{reranking_model}}\"": "", "Reranking model set to \"{{reranking_model}}\"": "",
"Reset Vector Storage": "Reinicia l'Emmagatzematge de Vectors", "Reset Vector Storage": "Reinicia l'Emmagatzematge de Vectors",
...@@ -337,12 +378,17 @@ ...@@ -337,12 +378,17 @@
"Select a mode": "Selecciona un mode", "Select a mode": "Selecciona un mode",
"Select a model": "Selecciona un model", "Select a model": "Selecciona un model",
"Select an Ollama instance": "Selecciona una instància d'Ollama", "Select an Ollama instance": "Selecciona una instància d'Ollama",
"Select model": "",
"Send a Message": "Envia un Missatge", "Send a Message": "Envia un Missatge",
"Send message": "Envia missatge", "Send message": "Envia missatge",
"September": "",
"Server connection verified": "Connexió al servidor verificada", "Server connection verified": "Connexió al servidor verificada",
"Set as default": "Estableix com a predeterminat", "Set as default": "Estableix com a predeterminat",
"Set Default Model": "Estableix Model Predeterminat", "Set Default Model": "Estableix Model Predeterminat",
"Set embedding model (e.g. {{model}})": "",
"Set Image Size": "Estableix Mida de la Imatge", "Set Image Size": "Estableix Mida de la Imatge",
"Set Model": "Estableix Model",
"Set reranking model (e.g. {{model}})": "",
"Set Steps": "Estableix Passos", "Set Steps": "Estableix Passos",
"Set Title Auto-Generation Model": "Estableix Model d'Auto-Generació de Títol", "Set Title Auto-Generation Model": "Estableix Model d'Auto-Generació de Títol",
"Set Voice": "Estableix Veu", "Set Voice": "Estableix Veu",
...@@ -361,6 +407,7 @@ ...@@ -361,6 +407,7 @@
"Sign Out": "Tanca sessió", "Sign Out": "Tanca sessió",
"Sign up": "Registra't", "Sign up": "Registra't",
"Signing in": "", "Signing in": "",
"Source": "",
"Speech recognition error: {{error}}": "Error de reconeixement de veu: {{error}}", "Speech recognition error: {{error}}": "Error de reconeixement de veu: {{error}}",
"Speech-to-Text Engine": "Motor de Veu a Text", "Speech-to-Text Engine": "Motor de Veu a Text",
"SpeechRecognition API is not supported in this browser.": "L'API de Reconèixer Veu no és compatible amb aquest navegador.", "SpeechRecognition API is not supported in this browser.": "L'API de Reconèixer Veu no és compatible amb aquest navegador.",
...@@ -370,6 +417,7 @@ ...@@ -370,6 +417,7 @@
"Subtitle (e.g. about the Roman Empire)": "", "Subtitle (e.g. about the Roman Empire)": "",
"Success": "Èxit", "Success": "Èxit",
"Successfully updated.": "Actualitzat amb èxit.", "Successfully updated.": "Actualitzat amb èxit.",
"Suggested": "",
"Sync All": "Sincronitza Tot", "Sync All": "Sincronitza Tot",
"System": "Sistema", "System": "Sistema",
"System Prompt": "Prompt del Sistema", "System Prompt": "Prompt del Sistema",
...@@ -390,11 +438,13 @@ ...@@ -390,11 +438,13 @@
"Title": "Títol", "Title": "Títol",
"Title (e.g. Tell me a fun fact)": "", "Title (e.g. Tell me a fun fact)": "",
"Title Auto-Generation": "Auto-Generació de Títol", "Title Auto-Generation": "Auto-Generació de Títol",
"Title cannot be an empty string.": "",
"Title Generation Prompt": "Prompt de Generació de Títol", "Title Generation Prompt": "Prompt de Generació de Títol",
"to": "a", "to": "a",
"To access the available model names for downloading,": "Per accedir als noms dels models disponibles per descarregar,", "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 access the GGUF models available for downloading,": "Per accedir als models GGUF disponibles per descarregar,",
"to chat input.": "a l'entrada del xat.", "to chat input.": "a l'entrada del xat.",
"Today": "",
"Toggle settings": "Commuta configuracions", "Toggle settings": "Commuta configuracions",
"Toggle sidebar": "Commuta barra lateral", "Toggle sidebar": "Commuta barra lateral",
"Top K": "Top K", "Top K": "Top K",
...@@ -405,11 +455,7 @@ ...@@ -405,11 +455,7 @@
"Uh-oh! There was an issue connecting to {{provider}}.": "Uf! Hi va haver un problema connectant-se a {{provider}}.", "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", "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": "",
"Update Embedding Model": "",
"Update embedding model (e.g. {{model}})": "",
"Update password": "Actualitza contrasenya", "Update password": "Actualitza contrasenya",
"Update Reranking Model": "",
"Update reranking model (e.g. {{model}})": "",
"Upload a GGUF model": "Puja un model GGUF", "Upload a GGUF model": "Puja un model GGUF",
"Upload files": "Puja arxius", "Upload files": "Puja arxius",
"Upload Progress": "Progrés de Càrrega", "Upload Progress": "Progrés de Càrrega",
...@@ -427,6 +473,8 @@ ...@@ -427,6 +473,8 @@
"Version": "Versió", "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.": "",
"Web": "Web", "Web": "Web",
"Web Loader Settings": "",
"Web Params": "",
"Webhook URL": "", "Webhook URL": "",
"WebUI Add-ons": "Complements de WebUI", "WebUI Add-ons": "Complements de WebUI",
"WebUI Settings": "Configuració de WebUI", "WebUI Settings": "Configuració de WebUI",
...@@ -436,8 +484,12 @@ ...@@ -436,8 +484,12 @@
"Whisper (Local)": "Whisper (Local)", "Whisper (Local)": "Whisper (Local)",
"Write a prompt suggestion (e.g. Who are you?)": "Escriu una suggerència de prompt (p. ex. Qui ets tu?)", "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].", "Write a summary in 50 words that summarizes [topic or keyword].": "Escriu un resum en 50 paraules que resumeixi [tema o paraula clau].",
"Yesterday": "",
"You": "Tu", "You": "Tu",
"You have no archived conversations.": "",
"You have shared this chat": "",
"You're a helpful assistant.": "Ets un assistent útil.", "You're a helpful assistant.": "Ets un assistent útil.",
"You're now logged in.": "Ara estàs connectat.", "You're now logged in.": "Ara estàs connectat.",
"Youtube": "" "Youtube": "",
"Youtube Loader Settings": ""
} }
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
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