Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
chenpangpang
open-webui
Commits
edbe5673
Unverified
Commit
edbe5673
authored
May 13, 2024
by
Timothy Jaeryang Baek
Committed by
GitHub
May 13, 2024
Browse files
Merge branch 'dev' into main
parents
1114f962
8b0144cd
Changes
59
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
762 additions
and
218 deletions
+762
-218
package.json
package.json
+2
-2
src/lib/apis/streaming/index.ts
src/lib/apis/streaming/index.ts
+7
-0
src/lib/components/chat/Messages.svelte
src/lib/components/chat/Messages.svelte
+27
-25
src/lib/components/chat/Messages/RateComment.svelte
src/lib/components/chat/Messages/RateComment.svelte
+2
-2
src/lib/components/chat/Messages/ResponseMessage.svelte
src/lib/components/chat/Messages/ResponseMessage.svelte
+3
-3
src/lib/components/layout/Sidebar.svelte
src/lib/components/layout/Sidebar.svelte
+21
-153
src/lib/components/layout/Sidebar/UserMenu.svelte
src/lib/components/layout/Sidebar/UserMenu.svelte
+172
-0
src/lib/i18n/index.ts
src/lib/i18n/index.ts
+1
-1
src/lib/i18n/locales/ar-BH/translation.json
src/lib/i18n/locales/ar-BH/translation.json
+3
-3
src/lib/i18n/locales/bg-BG/translation.json
src/lib/i18n/locales/bg-BG/translation.json
+3
-3
src/lib/i18n/locales/bn-BD/translation.json
src/lib/i18n/locales/bn-BD/translation.json
+3
-3
src/lib/i18n/locales/ca-ES/translation.json
src/lib/i18n/locales/ca-ES/translation.json
+3
-3
src/lib/i18n/locales/dg-DG/translation.json
src/lib/i18n/locales/dg-DG/translation.json
+2
-2
src/lib/i18n/locales/es-ES/translation.json
src/lib/i18n/locales/es-ES/translation.json
+3
-3
src/lib/i18n/locales/fa-IR/translation.json
src/lib/i18n/locales/fa-IR/translation.json
+3
-3
src/lib/i18n/locales/fr-CA/translation.json
src/lib/i18n/locales/fr-CA/translation.json
+3
-3
src/lib/i18n/locales/fr-FR/translation.json
src/lib/i18n/locales/fr-FR/translation.json
+3
-3
src/lib/i18n/locales/he-IL/translation.json
src/lib/i18n/locales/he-IL/translation.json
+495
-0
src/lib/i18n/locales/hi-IN/translation.json
src/lib/i18n/locales/hi-IN/translation.json
+3
-3
src/lib/i18n/locales/it-IT/translation.json
src/lib/i18n/locales/it-IT/translation.json
+3
-3
No files found.
package.json
View file @
edbe5673
...
...
@@ -12,9 +12,9 @@
"lint:frontend"
:
"eslint . --fix"
,
"lint:types"
:
"npm run check"
,
"lint:backend"
:
"pylint backend/"
,
"format"
:
"prettier --plugin-search-dir --write
'
**/*.{js,ts,svelte,css,md,html,json}
'
"
,
"format"
:
"prettier --plugin-search-dir --write
\"
**/*.{js,ts,svelte,css,md,html,json}
\"
"
,
"format:backend"
:
"black . --exclude
\"
/venv/
\"
"
,
"i18n:parse"
:
"i18next --config i18next-parser.config.ts && prettier --write
'
src/lib/i18n/**/*.{js,json}
'
"
,
"i18n:parse"
:
"i18next --config i18next-parser.config.ts && prettier --write
\"
src/lib/i18n/**/*.{js,json}
\"
"
,
"cy:open"
:
"cypress open"
},
"devDependencies"
:
{
...
...
src/lib/apis/streaming/index.ts
View file @
edbe5673
...
...
@@ -6,6 +6,8 @@ type TextStreamUpdate = {
value
:
string
;
// eslint-disable-next-line @typescript-eslint/no-explicit-any
citations
?:
any
;
// eslint-disable-next-line @typescript-eslint/no-explicit-any
error
?:
any
;
};
// createOpenAITextStream takes a responseBody with a SSE response,
...
...
@@ -47,6 +49,11 @@ async function* openAIStreamToIterator(
const
parsedData
=
JSON
.
parse
(
data
);
console
.
log
(
parsedData
);
if
(
parsedData
.
error
)
{
yield
{
done
:
true
,
value
:
''
,
error
:
parsedData
.
error
};
break
;
}
if
(
parsedData
.
citations
)
{
yield
{
done
:
false
,
value
:
''
,
citations
:
parsedData
.
citations
};
continue
;
...
...
src/lib/components/chat/Messages.svelte
View file @
edbe5673
...
...
@@ -309,6 +309,7 @@
copyToClipboard={copyToClipboardWithToast}
/>
{:else}
{#key message.id}
<ResponseMessage
{message}
modelfiles={selectedModelfiles}
...
...
@@ -334,6 +335,7 @@
});
}}
/>
{/key}
{/if}
</div>
</div>
...
...
src/lib/components/chat/Messages/RateComment.svelte
View file @
edbe5673
...
...
@@ -39,9 +39,9 @@
let selectedReason = null;
let comment = '';
$: if (message.annotation.rating === 1) {
$: if (message
?
.annotation
?
.rating === 1) {
reasons = LIKE_REASONS;
} else if (message.annotation.rating === -1) {
} else if (message
?
.annotation
?
.rating === -1) {
reasons = DISLIKE_REASONS;
}
...
...
src/lib/components/chat/Messages/ResponseMessage.svelte
View file @
edbe5673
...
...
@@ -65,8 +65,8 @@
let generatingImage = false;
let showRateComment = false;
let showCitationModal = false;
let selectedCitation = null;
$: tokens = marked.lexer(sanitizeResponseContent(message.content));
...
...
@@ -476,7 +476,7 @@
<div class="bg-white dark:bg-gray-700 rounded-full size-4">
{idx + 1}
</div>
<div class="
mx-2
">
<div class="
flex-1 mx-2 line-clamp-1
">
{citation.source.name}
</div>
</button>
...
...
@@ -902,7 +902,7 @@
</div>
{/if}
{#if showRateComment}
{#if
message.done &&
showRateComment}
<RateComment
messageId={message.id}
bind:show={showRateComment}
...
...
src/lib/components/layout/Sidebar.svelte
View file @
edbe5673
...
...
@@ -22,6 +22,7 @@
import ShareChatModal from '../chat/ShareChatModal.svelte';
import ArchiveBox from '../icons/ArchiveBox.svelte';
import ArchivedChatsModal from './Sidebar/ArchivedChatsModal.svelte';
import UserMenu from './Sidebar/UserMenu.svelte';
const BREAKPOINT = 1024;
...
...
@@ -685,6 +686,14 @@
<div class="flex flex-col">
{#if $user !== undefined}
<UserMenu
role={$user.role}
on:show={(e) => {
if (e.detail === 'archived-chat') {
showArchivedChatsModal = true;
}
}}
>
<button
class=" flex rounded-xl py-3 px-3.5 w-full hover:bg-gray-100 dark:hover:bg-gray-900 transition"
on:click={() => {
...
...
@@ -700,148 +709,7 @@
</div>
<div class=" self-center font-semibold">{$user.name}</div>
</button>
{#if showDropdown}
<div
id="dropdownDots"
class="absolute z-40 bottom-[70px] rounded-lg shadow w-[240px] bg-white dark:bg-gray-900"
transition:fade|slide={{ duration: 100 }}
>
<div class="p-1 py-2 w-full">
{#if $user.role === 'admin'}
<button
class="flex rounded-md py-2.5 px-3.5 w-full hover:bg-gray-100 dark:hover:bg-gray-800 transition"
on:click={() => {
goto('/admin');
showDropdown = false;
}}
>
<div class=" self-center mr-3">
<svg
xmlns="http://www.w3.org/2000/svg"
fill="none"
viewBox="0 0 24 24"
stroke-width="1.5"
stroke="currentColor"
class="w-5 h-5"
>
<path
stroke-linecap="round"
stroke-linejoin="round"
d="M17.982 18.725A7.488 7.488 0 0012 15.75a7.488 7.488 0 00-5.982 2.975m11.963 0a9 9 0 10-11.963 0m11.963 0A8.966 8.966 0 0112 21a8.966 8.966 0 01-5.982-2.275M15 9.75a3 3 0 11-6 0 3 3 0 016 0z"
/>
</svg>
</div>
<div class=" self-center font-medium">{$i18n.t('Admin Panel')}</div>
</button>
<button
class="flex rounded-md py-2.5 px-3.5 w-full hover:bg-gray-100 dark:hover:bg-gray-800 transition"
on:click={() => {
goto('/playground');
showDropdown = false;
}}
>
<div class=" self-center mr-3">
<svg
xmlns="http://www.w3.org/2000/svg"
fill="none"
viewBox="0 0 24 24"
stroke-width="1.5"
stroke="currentColor"
class="w-5 h-5"
>
<path
stroke-linecap="round"
stroke-linejoin="round"
d="m6.75 7.5 3 2.25-3 2.25m4.5 0h3m-9 8.25h13.5A2.25 2.25 0 0 0 21 18V6a2.25 2.25 0 0 0-2.25-2.25H5.25A2.25 2.25 0 0 0 3 6v12a2.25 2.25 0 0 0 2.25 2.25Z"
/>
</svg>
</div>
<div class=" self-center font-medium">{$i18n.t('Playground')}</div>
</button>
{/if}
<button
class="flex rounded-md py-2.5 px-3.5 w-full hover:bg-gray-100 dark:hover:bg-gray-800 transition"
on:click={() => {
showArchivedChatsModal = true;
showDropdown = false;
}}
>
<div class=" self-center mr-3">
<ArchiveBox className="size-5" strokeWidth="1.5" />
</div>
<div class=" self-center font-medium">{$i18n.t('Archived Chats')}</div>
</button>
<button
class="flex rounded-md py-2.5 px-3.5 w-full hover:bg-gray-100 dark:hover:bg-gray-800 transition"
on:click={async () => {
await showSettings.set(true);
showDropdown = false;
}}
>
<div class=" self-center mr-3">
<svg
xmlns="http://www.w3.org/2000/svg"
fill="none"
viewBox="0 0 24 24"
stroke-width="1.5"
stroke="currentColor"
class="w-5 h-5"
>
<path
stroke-linecap="round"
stroke-linejoin="round"
d="M10.343 3.94c.09-.542.56-.94 1.11-.94h1.093c.55 0 1.02.398 1.11.94l.149.894c.07.424.384.764.78.93.398.164.855.142 1.205-.108l.737-.527a1.125 1.125 0 011.45.12l.773.774c.39.389.44 1.002.12 1.45l-.527.737c-.25.35-.272.806-.107 1.204.165.397.505.71.93.78l.893.15c.543.09.94.56.94 1.109v1.094c0 .55-.397 1.02-.94 1.11l-.893.149c-.425.07-.765.383-.93.78-.165.398-.143.854.107 1.204l.527.738c.32.447.269 1.06-.12 1.45l-.774.773a1.125 1.125 0 01-1.449.12l-.738-.527c-.35-.25-.806-.272-1.203-.107-.397.165-.71.505-.781.929l-.149.894c-.09.542-.56.94-1.11.94h-1.094c-.55 0-1.019-.398-1.11-.94l-.148-.894c-.071-.424-.384-.764-.781-.93-.398-.164-.854-.142-1.204.108l-.738.527c-.447.32-1.06.269-1.45-.12l-.773-.774a1.125 1.125 0 01-.12-1.45l.527-.737c.25-.35.273-.806.108-1.204-.165-.397-.505-.71-.93-.78l-.894-.15c-.542-.09-.94-.56-.94-1.109v-1.094c0-.55.398-1.02.94-1.11l.894-.149c.424-.07.765-.383.93-.78.165-.398.143-.854-.107-1.204l-.527-.738a1.125 1.125 0 01.12-1.45l.773-.773a1.125 1.125 0 011.45-.12l.737.527c.35.25.807.272 1.204.107.397-.165.71-.505.78-.929l.15-.894z"
/>
<path
stroke-linecap="round"
stroke-linejoin="round"
d="M15 12a3 3 0 11-6 0 3 3 0 016 0z"
/>
</svg>
</div>
<div class=" self-center font-medium">{$i18n.t('Settings')}</div>
</button>
</div>
<hr class=" dark:border-gray-800 m-0 p-0" />
<div class="p-1 py-2 w-full">
<button
class="flex rounded-md py-2.5 px-3.5 w-full hover:bg-gray-100 dark:hover:bg-gray-800 transition"
on:click={() => {
localStorage.removeItem('token');
location.href = '/auth';
showDropdown = false;
}}
>
<div class=" self-center mr-3">
<svg
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 20 20"
fill="currentColor"
class="w-5 h-5"
>
<path
fill-rule="evenodd"
d="M3 4.25A2.25 2.25 0 015.25 2h5.5A2.25 2.25 0 0113 4.25v2a.75.75 0 01-1.5 0v-2a.75.75 0 00-.75-.75h-5.5a.75.75 0 00-.75.75v11.5c0 .414.336.75.75.75h5.5a.75.75 0 00.75-.75v-2a.75.75 0 011.5 0v2A2.25 2.25 0 0110.75 18h-5.5A2.25 2.25 0 013 15.75V4.25z"
clip-rule="evenodd"
/>
<path
fill-rule="evenodd"
d="M6 10a.75.75 0 01.75-.75h9.546l-1.048-.943a.75.75 0 111.004-1.114l2.5 2.25a.75.75 0 010 1.114l-2.5 2.25a.75.75 0 11-1.004-1.114l1.048-.943H6.75A.75.75 0 016 10z"
clip-rule="evenodd"
/>
</svg>
</div>
<div class=" self-center font-medium">{$i18n.t('Sign Out')}</div>
</button>
</div>
</div>
{/if}
</UserMenu>
{/if}
</div>
</div>
...
...
src/lib/components/layout/Sidebar/UserMenu.svelte
0 → 100644
View file @
edbe5673
<script lang="ts">
import { DropdownMenu } from 'bits-ui';
import { createEventDispatcher, getContext } from 'svelte';
import { flyAndScale } from '$lib/utils/transitions';
import { goto } from '$app/navigation';
import ArchiveBox from '$lib/components/icons/ArchiveBox.svelte';
import { showSettings } from '$lib/stores';
import { fade, slide } from 'svelte/transition';
const i18n = getContext('i18n');
export let show = false;
export let role = '';
const dispatch = createEventDispatcher();
</script>
<DropdownMenu.Root
bind:open={show}
onOpenChange={(state) => {
dispatch('change', state);
}}
>
<DropdownMenu.Trigger>
<slot />
</DropdownMenu.Trigger>
<slot name="content">
<DropdownMenu.Content
class="w-full max-w-[240px] rounded-lg p-1 py-1 border border-gray-850 z-50 bg-gray-900 text-white text-sm"
sideOffset={8}
side="bottom"
align="start"
transition={(e) => fade(e, { duration: 100 })}
>
{#if role === 'admin'}
<button
class="flex rounded-md py-2.5 px-3.5 w-full hover:bg-gray-100 dark:hover:bg-gray-800 transition"
on:click={() => {
goto('/admin');
show = false;
}}
>
<div class=" self-center mr-3">
<svg
xmlns="http://www.w3.org/2000/svg"
fill="none"
viewBox="0 0 24 24"
stroke-width="1.5"
stroke="currentColor"
class="w-5 h-5"
>
<path
stroke-linecap="round"
stroke-linejoin="round"
d="M17.982 18.725A7.488 7.488 0 0012 15.75a7.488 7.488 0 00-5.982 2.975m11.963 0a9 9 0 10-11.963 0m11.963 0A8.966 8.966 0 0112 21a8.966 8.966 0 01-5.982-2.275M15 9.75a3 3 0 11-6 0 3 3 0 016 0z"
/>
</svg>
</div>
<div class=" self-center font-medium">{$i18n.t('Admin Panel')}</div>
</button>
<button
class="flex rounded-md py-2.5 px-3.5 w-full hover:bg-gray-100 dark:hover:bg-gray-800 transition"
on:click={() => {
goto('/playground');
show = false;
}}
>
<div class=" self-center mr-3">
<svg
xmlns="http://www.w3.org/2000/svg"
fill="none"
viewBox="0 0 24 24"
stroke-width="1.5"
stroke="currentColor"
class="w-5 h-5"
>
<path
stroke-linecap="round"
stroke-linejoin="round"
d="m6.75 7.5 3 2.25-3 2.25m4.5 0h3m-9 8.25h13.5A2.25 2.25 0 0 0 21 18V6a2.25 2.25 0 0 0-2.25-2.25H5.25A2.25 2.25 0 0 0 3 6v12a2.25 2.25 0 0 0 2.25 2.25Z"
/>
</svg>
</div>
<div class=" self-center font-medium">{$i18n.t('Playground')}</div>
</button>
{/if}
<button
class="flex rounded-md py-2.5 px-3.5 w-full hover:bg-gray-100 dark:hover:bg-gray-800 transition"
on:click={() => {
dispatch('show', 'archived-chat');
show = false;
}}
>
<div class=" self-center mr-3">
<ArchiveBox className="size-5" strokeWidth="1.5" />
</div>
<div class=" self-center font-medium">{$i18n.t('Archived Chats')}</div>
</button>
<button
class="flex rounded-md py-2.5 px-3.5 w-full hover:bg-gray-100 dark:hover:bg-gray-800 transition"
on:click={async () => {
await showSettings.set(true);
show = false;
}}
>
<div class=" self-center mr-3">
<svg
xmlns="http://www.w3.org/2000/svg"
fill="none"
viewBox="0 0 24 24"
stroke-width="1.5"
stroke="currentColor"
class="w-5 h-5"
>
<path
stroke-linecap="round"
stroke-linejoin="round"
d="M10.343 3.94c.09-.542.56-.94 1.11-.94h1.093c.55 0 1.02.398 1.11.94l.149.894c.07.424.384.764.78.93.398.164.855.142 1.205-.108l.737-.527a1.125 1.125 0 011.45.12l.773.774c.39.389.44 1.002.12 1.45l-.527.737c-.25.35-.272.806-.107 1.204.165.397.505.71.93.78l.893.15c.543.09.94.56.94 1.109v1.094c0 .55-.397 1.02-.94 1.11l-.893.149c-.425.07-.765.383-.93.78-.165.398-.143.854.107 1.204l.527.738c.32.447.269 1.06-.12 1.45l-.774.773a1.125 1.125 0 01-1.449.12l-.738-.527c-.35-.25-.806-.272-1.203-.107-.397.165-.71.505-.781.929l-.149.894c-.09.542-.56.94-1.11.94h-1.094c-.55 0-1.019-.398-1.11-.94l-.148-.894c-.071-.424-.384-.764-.781-.93-.398-.164-.854-.142-1.204.108l-.738.527c-.447.32-1.06.269-1.45-.12l-.773-.774a1.125 1.125 0 01-.12-1.45l.527-.737c.25-.35.273-.806.108-1.204-.165-.397-.505-.71-.93-.78l-.894-.15c-.542-.09-.94-.56-.94-1.109v-1.094c0-.55.398-1.02.94-1.11l.894-.149c.424-.07.765-.383.93-.78.165-.398.143-.854-.107-1.204l-.527-.738a1.125 1.125 0 01.12-1.45l.773-.773a1.125 1.125 0 011.45-.12l.737.527c.35.25.807.272 1.204.107.397-.165.71-.505.78-.929l.15-.894z"
/>
<path
stroke-linecap="round"
stroke-linejoin="round"
d="M15 12a3 3 0 11-6 0 3 3 0 016 0z"
/>
</svg>
</div>
<div class=" self-center font-medium">{$i18n.t('Settings')}</div>
</button>
<hr class=" dark:border-gray-800 my-2 p-0" />
<button
class="flex rounded-md py-2.5 px-3.5 w-full hover:bg-gray-100 dark:hover:bg-gray-800 transition"
on:click={() => {
localStorage.removeItem('token');
location.href = '/auth';
show = false;
}}
>
<div class=" self-center mr-3">
<svg
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 20 20"
fill="currentColor"
class="w-5 h-5"
>
<path
fill-rule="evenodd"
d="M3 4.25A2.25 2.25 0 015.25 2h5.5A2.25 2.25 0 0113 4.25v2a.75.75 0 01-1.5 0v-2a.75.75 0 00-.75-.75h-5.5a.75.75 0 00-.75.75v11.5c0 .414.336.75.75.75h5.5a.75.75 0 00.75-.75v-2a.75.75 0 011.5 0v2A2.25 2.25 0 0110.75 18h-5.5A2.25 2.25 0 013 15.75V4.25z"
clip-rule="evenodd"
/>
<path
fill-rule="evenodd"
d="M6 10a.75.75 0 01.75-.75h9.546l-1.048-.943a.75.75 0 111.004-1.114l2.5 2.25a.75.75 0 010 1.114l-2.5 2.25a.75.75 0 11-1.004-1.114l1.048-.943H6.75A.75.75 0 016 10z"
clip-rule="evenodd"
/>
</svg>
</div>
<div class=" self-center font-medium">{$i18n.t('Sign Out')}</div>
</button>
<!-- <DropdownMenu.Item class="flex items-center px-3 py-2 text-sm font-medium">
<div class="flex items-center">Profile</div>
</DropdownMenu.Item> -->
</DropdownMenu.Content>
</slot>
</DropdownMenu.Root>
src/lib/i18n/index.ts
View file @
edbe5673
...
...
@@ -37,7 +37,7 @@ const createIsLoadingStore = (i18n: i18nType) => {
return
isLoading
;
};
export
const
initI18n
=
(
defaultLocale
:
string
)
=>
{
export
const
initI18n
=
(
defaultLocale
:
string
|
undefined
)
=>
{
let
detectionOrder
=
defaultLocale
?
[
'
querystring
'
,
'
localStorage
'
]
:
[
'
querystring
'
,
'
localStorage
'
,
'
navigator
'
];
...
...
src/lib/i18n/locales/ar-BH/translation.json
View file @
edbe5673
...
...
@@ -76,7 +76,7 @@
"Chunk Overlap"
:
"Chunk تداخل"
,
"Chunk Params"
:
"Chunk المتغيرات"
,
"Chunk Size"
:
"Chunk حجم"
,
"Citation"
:
""
,
"Citation"
:
"
اقتباس
"
,
"Click here for help."
:
"أضغط هنا للمساعدة"
,
"Click here to"
:
"أضغط هنا الانتقال"
,
"Click here to check other modelfiles."
:
"انقر هنا للتحقق من ملفات الموديلات الأخرى"
,
...
...
@@ -285,7 +285,7 @@
"New Chat"
:
"دردشة جديدة"
,
"New Password"
:
"كلمة المرور الجديدة"
,
"No results found"
:
"لا توجد نتايج"
,
"No source available"
:
""
,
"No source available"
:
"
لا يوجد مصدر متاح
"
,
"Not factually correct"
:
"ليس صحيحا من حيث الواقع"
,
"Not sure what to add?"
:
"لست متأكدا ما يجب إضافته؟"
,
"Not sure what to write? Switch to"
:
"لست متأكدا ماذا أكتب؟ التبديل إلى"
,
...
...
@@ -407,7 +407,7 @@
"Sign Out"
:
"تسجيل الخروج"
,
"Sign up"
:
"تسجيل"
,
"Signing in"
:
"جاري الدخول"
,
"Source"
:
""
,
"Source"
:
"
المصدر
"
,
"Speech recognition error: {{error}}"
:
"{{error}} خطأ في التعرف على الكلام"
,
"Speech-to-Text Engine"
:
"محرك تحويل الكلام إلى نص"
,
"SpeechRecognition API is not supported in this browser."
:
"API SpeechRecognition غير مدعومة في هذا المتصفح."
,
...
...
src/lib/i18n/locales/bg-BG/translation.json
View file @
edbe5673
...
...
@@ -76,7 +76,7 @@
"Chunk Overlap"
:
"Chunk Overlap"
,
"Chunk Params"
:
"Chunk Params"
,
"Chunk Size"
:
"Chunk Size"
,
"Citation"
:
""
,
"Citation"
:
"
Цитат
"
,
"Click here for help."
:
"Натиснете тук за помощ."
,
"Click here to"
:
""
,
"Click here to check other modelfiles."
:
"Натиснете тук за проверка на други моделфайлове."
,
...
...
@@ -285,7 +285,7 @@
"New Chat"
:
"Нов чат"
,
"New Password"
:
"Нова парола"
,
"No results found"
:
""
,
"No source available"
:
""
,
"No source available"
:
"
Няма наличен източник
"
,
"Not factually correct"
:
""
,
"Not sure what to add?"
:
"Не сте сигурни, какво да добавите?"
,
"Not sure what to write? Switch to"
:
"Не сте сигурни, какво да напишете? Превключете към"
,
...
...
@@ -407,7 +407,7 @@
"Sign Out"
:
"Изход"
,
"Sign up"
:
"Регистрация"
,
"Signing in"
:
""
,
"Source"
:
""
,
"Source"
:
"
Източник
"
,
"Speech recognition error: {{error}}"
:
"Speech recognition 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."
,
...
...
src/lib/i18n/locales/bn-BD/translation.json
View file @
edbe5673
...
...
@@ -76,7 +76,7 @@
"Chunk Overlap"
:
"চাঙ্ক ওভারল্যাপ"
,
"Chunk Params"
:
"চাঙ্ক প্যারামিটার্স"
,
"Chunk Size"
:
"চাঙ্ক সাইজ"
,
"Citation"
:
""
,
"Citation"
:
"
উদ্ধৃতি
"
,
"Click here for help."
:
"সাহায্যের জন্য এখানে ক্লিক করুন"
,
"Click here to"
:
""
,
"Click here to check other modelfiles."
:
"অন্যান্য মডেলফাইল চেক করার জন্য এখানে ক্লিক করুন"
,
...
...
@@ -285,7 +285,7 @@
"New Chat"
:
"নতুন চ্যাট"
,
"New Password"
:
"নতুন পাসওয়ার্ড"
,
"No results found"
:
""
,
"No source available"
:
""
,
"No source available"
:
"
কোন উৎস পাওয়া যায়নি
"
,
"Not factually correct"
:
""
,
"Not sure what to add?"
:
"কী যুক্ত করতে হবে নিশ্চিত না?"
,
"Not sure what to write? Switch to"
:
"কী লিখতে হবে নিশ্চিত না? পরিবর্তন করুন:"
,
...
...
@@ -407,7 +407,7 @@
"Sign Out"
:
"সাইন আউট"
,
"Sign up"
:
"সাইন আপ"
,
"Signing in"
:
""
,
"Source"
:
""
,
"Source"
:
"
উৎস
"
,
"Speech recognition error: {{error}}"
:
"স্পিচ রিকগনিশনে সমস্যা: {{error}}"
,
"Speech-to-Text Engine"
:
"স্পিচ-টু-টেক্সট ইঞ্জিন"
,
"SpeechRecognition API is not supported in this browser."
:
"এই ব্রাউজার স্পিচরিকগনিশন এপিআই সাপোর্ট করে না।"
,
...
...
src/lib/i18n/locales/ca-ES/translation.json
View file @
edbe5673
...
...
@@ -76,7 +76,7 @@
"Chunk Overlap"
:
"Solapament de Blocs"
,
"Chunk Params"
:
"Paràmetres de Blocs"
,
"Chunk Size"
:
"Mida del Bloc"
,
"Citation"
:
""
,
"Citation"
:
"
Citació
"
,
"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."
,
...
...
@@ -285,7 +285,7 @@
"New Chat"
:
"Xat Nou"
,
"New Password"
:
"Nova Contrasenya"
,
"No results found"
:
""
,
"No source available"
:
""
,
"No source available"
:
"
Sense font disponible
"
,
"Not factually correct"
:
""
,
"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"
,
...
...
@@ -407,7 +407,7 @@
"Sign Out"
:
"Tanca sessió"
,
"Sign up"
:
"Registra't"
,
"Signing in"
:
""
,
"Source"
:
""
,
"Source"
:
"
Font
"
,
"Speech recognition error: {{error}}"
:
"Error de reconeixement de veu: {{error}}"
,
"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."
,
...
...
src/lib/i18n/locales/dg-DG/translation.json
View file @
edbe5673
...
...
@@ -285,7 +285,7 @@
"New Chat"
:
"New Bark"
,
"New Password"
:
"New Barkword"
,
"No results found"
:
""
,
"No source available"
:
""
,
"No source available"
:
"
No source available
"
,
"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"
,
...
...
@@ -407,7 +407,7 @@
"Sign Out"
:
"Sign Out much logout"
,
"Sign up"
:
"Sign up much join"
,
"Signing in"
:
""
,
"Source"
:
""
,
"Source"
:
"
Source
"
,
"Speech recognition error: {{error}}"
:
"Speech recognition error: {{error}} so error"
,
"Speech-to-Text Engine"
:
"Speech-to-Text Engine much speak"
,
"SpeechRecognition API is not supported in this browser."
:
"SpeechRecognition API is not supported in this browser. Much sad."
,
...
...
src/lib/i18n/locales/es-ES/translation.json
View file @
edbe5673
...
...
@@ -76,7 +76,7 @@
"Chunk Overlap"
:
"Superposición de fragmentos"
,
"Chunk Params"
:
"Parámetros de fragmentos"
,
"Chunk Size"
:
"Tamaño de fragmentos"
,
"Citation"
:
""
,
"Citation"
:
"
Cita
"
,
"Click here for help."
:
"Presiona aquí para obtener ayuda."
,
"Click here to"
:
""
,
"Click here to check other modelfiles."
:
"Presiona aquí para consultar otros modelfiles."
,
...
...
@@ -285,7 +285,7 @@
"New Chat"
:
"Nuevo Chat"
,
"New Password"
:
"Nueva Contraseña"
,
"No results found"
:
""
,
"No source available"
:
""
,
"No source available"
:
"
No hay fuente disponible
"
,
"Not factually correct"
:
""
,
"Not sure what to add?"
:
"¿No sabes qué añadir?"
,
"Not sure what to write? Switch to"
:
"¿No sabes qué escribir? Cambia a"
,
...
...
@@ -407,7 +407,7 @@
"Sign Out"
:
"Cerrar sesión"
,
"Sign up"
:
"Crear una cuenta"
,
"Signing in"
:
""
,
"Source"
:
""
,
"Source"
:
"
Fuente
"
,
"Speech recognition error: {{error}}"
:
"Error de reconocimiento de voz: {{error}}"
,
"Speech-to-Text Engine"
:
"Motor de voz a texto"
,
"SpeechRecognition API is not supported in this browser."
:
"La API SpeechRecognition no es compatible con este navegador."
,
...
...
src/lib/i18n/locales/fa-IR/translation.json
View file @
edbe5673
...
...
@@ -76,7 +76,7 @@
"Chunk Overlap"
:
"همپوشانی تکه"
,
"Chunk Params"
:
"پارامترهای تکه"
,
"Chunk Size"
:
"اندازه تکه"
,
"Citation"
:
""
,
"Citation"
:
"
استناد
"
,
"Click here for help."
:
"برای کمک اینجا را کلیک کنید."
,
"Click here to"
:
""
,
"Click here to check other modelfiles."
:
"برای بررسی سایر فایل
\u
200cهای مدل اینجا را کلیک کنید."
,
...
...
@@ -285,7 +285,7 @@
"New Chat"
:
"گپ جدید"
,
"New Password"
:
"رمز عبور جدید"
,
"No results found"
:
""
,
"No source available"
:
""
,
"No source available"
:
"
منبعی در دسترس نیست
"
,
"Not factually correct"
:
""
,
"Not sure what to add?"
:
"مطمئن نیستید چه چیزی را اضافه کنید؟"
,
"Not sure what to write? Switch to"
:
"مطمئن نیستید چه بنویسید؟ تغییر به"
,
...
...
@@ -407,7 +407,7 @@
"Sign Out"
:
"خروج"
,
"Sign up"
:
"ثبت نام"
,
"Signing in"
:
""
,
"Source"
:
""
,
"Source"
:
"
منبع
"
,
"Speech recognition error: {{error}}"
:
"خطای تشخیص گفتار: {{error}}"
,
"Speech-to-Text Engine"
:
"موتور گفتار به متن"
,
"SpeechRecognition API is not supported in this browser."
:
"API تشخیص گفتار در این مرورگر پشتیبانی نمی شود."
,
...
...
src/lib/i18n/locales/fr-CA/translation.json
View file @
edbe5673
...
...
@@ -76,7 +76,7 @@
"Chunk Overlap"
:
"Chevauchement de bloc"
,
"Chunk Params"
:
"Paramètres de bloc"
,
"Chunk Size"
:
"Taille de bloc"
,
"Citation"
:
""
,
"Citation"
:
"
Citations
"
,
"Click here for help."
:
"Cliquez ici pour de l'aide."
,
"Click here to"
:
""
,
"Click here to check other modelfiles."
:
"Cliquez ici pour vérifier d'autres fichiers de modèle."
,
...
...
@@ -285,7 +285,7 @@
"New Chat"
:
"Nouvelle discussion"
,
"New Password"
:
"Nouveau mot de passe"
,
"No results found"
:
""
,
"No source available"
:
""
,
"No source available"
:
"
Aucune source disponible
"
,
"Not factually correct"
:
""
,
"Not sure what to add?"
:
"Pas sûr de quoi ajouter ?"
,
"Not sure what to write? Switch to"
:
"Pas sûr de quoi écrire ? Changez pour"
,
...
...
@@ -407,7 +407,7 @@
"Sign Out"
:
"Se déconnecter"
,
"Sign up"
:
"S'inscrire"
,
"Signing in"
:
""
,
"Source"
:
""
,
"Source"
:
"
Source
"
,
"Speech recognition error: {{error}}"
:
"Erreur de reconnaissance vocale : {{error}}"
,
"Speech-to-Text Engine"
:
"Moteur reconnaissance vocale"
,
"SpeechRecognition API is not supported in this browser."
:
"L'API SpeechRecognition n'est pas prise en charge dans ce navigateur."
,
...
...
src/lib/i18n/locales/fr-FR/translation.json
View file @
edbe5673
...
...
@@ -76,7 +76,7 @@
"Chunk Overlap"
:
"Chevauchement de bloc"
,
"Chunk Params"
:
"Paramètres de bloc"
,
"Chunk Size"
:
"Taille de bloc"
,
"Citation"
:
""
,
"Citation"
:
"
Citations
"
,
"Click here for help."
:
"Cliquez ici pour de l'aide."
,
"Click here to"
:
""
,
"Click here to check other modelfiles."
:
"Cliquez ici pour vérifier d'autres fichiers de modèle."
,
...
...
@@ -285,7 +285,7 @@
"New Chat"
:
"Nouveau chat"
,
"New Password"
:
"Nouveau mot de passe"
,
"No results found"
:
""
,
"No source available"
:
""
,
"No source available"
:
"
Aucune source disponible
"
,
"Not factually correct"
:
""
,
"Not sure what to add?"
:
"Vous ne savez pas quoi ajouter ?"
,
"Not sure what to write? Switch to"
:
"Vous ne savez pas quoi écrire ? Basculer vers"
,
...
...
@@ -407,7 +407,7 @@
"Sign Out"
:
"Se déconnecter"
,
"Sign up"
:
"S'inscrire"
,
"Signing in"
:
""
,
"Source"
:
""
,
"Source"
:
"
Source
"
,
"Speech recognition error: {{error}}"
:
"Erreur de reconnaissance vocale : {{error}}"
,
"Speech-to-Text Engine"
:
"Moteur de reconnaissance vocale"
,
"SpeechRecognition API is not supported in this browser."
:
"L'API SpeechRecognition n'est pas prise en charge dans ce navigateur."
,
...
...
src/lib/i18n/locales/he-IL/translation.json
0 → 100644
View file @
edbe5673
This diff is collapsed.
Click to expand it.
src/lib/i18n/locales/hi-IN/translation.json
View file @
edbe5673
...
...
@@ -76,7 +76,7 @@
"Chunk Overlap"
:
"चंक ओवरलैप"
,
"Chunk Params"
:
"चंक पैरामीटर्स"
,
"Chunk Size"
:
"चंक आकार"
,
"Citation"
:
""
,
"Citation"
:
"
उद्धरण
"
,
"Click here for help."
:
"सहायता के लिए यहां क्लिक करें।"
,
"Click here to"
:
""
,
"Click here to check other modelfiles."
:
"अन्य मॉडल फ़ाइलों की जांच के लिए यहां क्लिक करें।"
,
...
...
@@ -285,7 +285,7 @@
"New Chat"
:
"नई चैट"
,
"New Password"
:
"नया पासवर्ड"
,
"No results found"
:
""
,
"No source available"
:
""
,
"No source available"
:
"
कोई स्रोत उपलब्ध नहीं है
"
,
"Not factually correct"
:
"तथ्यात्मक रूप से सही नहीं है"
,
"Not sure what to add?"
:
"निश्चित नहीं कि क्या जोड़ें?"
,
"Not sure what to write? Switch to"
:
"मैं आश्वस्त नहीं हूं कि क्या लिखना है? स्विच करें"
,
...
...
@@ -407,7 +407,7 @@
"Sign Out"
:
"साइन आउट"
,
"Sign up"
:
"साइन अप"
,
"Signing in"
:
"साइन इन हो रहा है"
,
"Source"
:
""
,
"Source"
:
"
स्रोत
"
,
"Speech recognition error: {{error}}"
:
"वाक् पहचान त्रुटि: {{error}}"
,
"Speech-to-Text Engine"
:
"वाक्-से-पाठ इंजन"
,
"SpeechRecognition API is not supported in this browser."
:
"इस ब्राउज़र में SpeechRecognition API समर्थित नहीं है"
,
...
...
src/lib/i18n/locales/it-IT/translation.json
View file @
edbe5673
...
...
@@ -76,7 +76,7 @@
"Chunk Overlap"
:
"Sovrapposizione chunk"
,
"Chunk Params"
:
"Parametri chunk"
,
"Chunk Size"
:
"Dimensione chunk"
,
"Citation"
:
""
,
"Citation"
:
"
Citazione
"
,
"Click here for help."
:
"Clicca qui per aiuto."
,
"Click here to"
:
""
,
"Click here to check other modelfiles."
:
"Clicca qui per controllare altri file modello."
,
...
...
@@ -285,7 +285,7 @@
"New Chat"
:
"Nuova chat"
,
"New Password"
:
"Nuova password"
,
"No results found"
:
""
,
"No source available"
:
""
,
"No source available"
:
"
Nessuna fonte disponibile
"
,
"Not factually correct"
:
""
,
"Not sure what to add?"
:
"Non sei sicuro di cosa aggiungere?"
,
"Not sure what to write? Switch to"
:
"Non sei sicuro di cosa scrivere? Passa a"
,
...
...
@@ -407,7 +407,7 @@
"Sign Out"
:
"Esci"
,
"Sign up"
:
"Registrati"
,
"Signing in"
:
""
,
"Source"
:
""
,
"Source"
:
"
Fonte
"
,
"Speech recognition error: {{error}}"
:
"Errore di riconoscimento vocale: {{error}}"
,
"Speech-to-Text Engine"
:
"Motore da voce a testo"
,
"SpeechRecognition API is not supported in this browser."
:
"L'API SpeechRecognition non è supportata in questo browser."
,
...
...
Prev
1
2
3
Next
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment