forked from open-webui/open-webui
main #2
9 changed files with 382 additions and 367 deletions
|
@ -45,7 +45,8 @@
|
||||||
<div>
|
<div>
|
||||||
<div class=" mb-2.5 text-sm font-medium flex space-x-2 items-center">
|
<div class=" mb-2.5 text-sm font-medium flex space-x-2 items-center">
|
||||||
<div>
|
<div>
|
||||||
{$WEBUI_NAME} Version
|
{$WEBUI_NAME}
|
||||||
|
{$i18n.t('Version')}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex w-full justify-between items-center">
|
<div class="flex w-full justify-between items-center">
|
||||||
|
|
|
@ -49,7 +49,7 @@
|
||||||
type="button"
|
type="button"
|
||||||
on:click={() => {
|
on:click={() => {
|
||||||
show = !show;
|
show = !show;
|
||||||
}}>{show ? 'Hide' : 'Show'}</button
|
}}>{show ? $i18n.t('Hide') : $i18n.t('Show')}</button
|
||||||
>
|
>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -102,7 +102,7 @@
|
||||||
<button
|
<button
|
||||||
class=" px-4 py-2 text-xs bg-gray-800 hover:bg-gray-900 dark:bg-gray-700 dark:hover:bg-gray-800 text-gray-100 transition rounded-md font-medium"
|
class=" px-4 py-2 text-xs bg-gray-800 hover:bg-gray-900 dark:bg-gray-700 dark:hover:bg-gray-800 text-gray-100 transition rounded-md font-medium"
|
||||||
>
|
>
|
||||||
Update password
|
{$i18n.t('Update password')}
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
{/if}
|
{/if}
|
||||||
|
|
|
@ -145,7 +145,8 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class=" mb-1 text-xs text-gray-400 dark:text-gray-500">
|
<div class=" mb-1 text-xs text-gray-400 dark:text-gray-500">
|
||||||
WebUI will make requests to <span class=" text-gray-200">'{url}/models'</span>
|
{$i18n.t('WebUI will make requests to')}
|
||||||
|
<span class=" text-gray-200">'{url}/models'</span>
|
||||||
</div>
|
</div>
|
||||||
{/each}
|
{/each}
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -329,7 +329,7 @@
|
||||||
{getModels}
|
{getModels}
|
||||||
{saveSettings}
|
{saveSettings}
|
||||||
on:save={() => {
|
on:save={() => {
|
||||||
toast.success('Settings saved successfully!');
|
toast.success($i18n.t('Settings saved successfully!'));
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
{:else if selectedTab === 'models'}
|
{:else if selectedTab === 'models'}
|
||||||
|
@ -338,28 +338,28 @@
|
||||||
<Connections
|
<Connections
|
||||||
{getModels}
|
{getModels}
|
||||||
on:save={() => {
|
on:save={() => {
|
||||||
toast.success('Settings saved successfully!');
|
toast.success($i18n.t('Settings saved successfully!'));
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
{:else if selectedTab === 'interface'}
|
{:else if selectedTab === 'interface'}
|
||||||
<Interface
|
<Interface
|
||||||
{saveSettings}
|
{saveSettings}
|
||||||
on:save={() => {
|
on:save={() => {
|
||||||
toast.success('Settings saved successfully!');
|
toast.success($i18n.t('Settings saved successfully!'));
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
{:else if selectedTab === 'audio'}
|
{:else if selectedTab === 'audio'}
|
||||||
<Audio
|
<Audio
|
||||||
{saveSettings}
|
{saveSettings}
|
||||||
on:save={() => {
|
on:save={() => {
|
||||||
toast.success('Settings saved successfully!');
|
toast.success($i18n.t('Settings saved successfully!'));
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
{:else if selectedTab === 'images'}
|
{:else if selectedTab === 'images'}
|
||||||
<Images
|
<Images
|
||||||
{saveSettings}
|
{saveSettings}
|
||||||
on:save={() => {
|
on:save={() => {
|
||||||
toast.success('Settings saved successfully!');
|
toast.success($i18n.t('Settings saved successfully!'));
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
{:else if selectedTab === 'chats'}
|
{:else if selectedTab === 'chats'}
|
||||||
|
@ -367,7 +367,7 @@
|
||||||
{:else if selectedTab === 'account'}
|
{:else if selectedTab === 'account'}
|
||||||
<Account
|
<Account
|
||||||
saveHandler={() => {
|
saveHandler={() => {
|
||||||
toast.success('Settings saved successfully!');
|
toast.success($i18n.t('Settings saved successfully!'));
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
{:else if selectedTab === 'about'}
|
{:else if selectedTab === 'about'}
|
||||||
|
|
|
@ -1,7 +1,9 @@
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { createEventDispatcher } from 'svelte';
|
import { createEventDispatcher, getContext } from 'svelte';
|
||||||
const dispatch = createEventDispatcher();
|
const dispatch = createEventDispatcher();
|
||||||
|
|
||||||
|
const i18n = getContext('i18n');
|
||||||
|
|
||||||
let showTagInput = false;
|
let showTagInput = false;
|
||||||
let tagName = '';
|
let tagName = '';
|
||||||
</script>
|
</script>
|
||||||
|
@ -9,12 +11,6 @@
|
||||||
<div class="flex space-x-1 pl-1.5">
|
<div class="flex space-x-1 pl-1.5">
|
||||||
{#if showTagInput}
|
{#if showTagInput}
|
||||||
<div class="flex items-center">
|
<div class="flex items-center">
|
||||||
<input
|
|
||||||
bind:value={tagName}
|
|
||||||
class=" cursor-pointer self-center text-xs h-fit bg-transparent outline-none line-clamp-1 w-[4rem]"
|
|
||||||
placeholder="Add a tag"
|
|
||||||
/>
|
|
||||||
|
|
||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
on:click={() => {
|
on:click={() => {
|
||||||
|
@ -36,6 +32,11 @@
|
||||||
/>
|
/>
|
||||||
</svg>
|
</svg>
|
||||||
</button>
|
</button>
|
||||||
|
<input
|
||||||
|
bind:value={tagName}
|
||||||
|
class=" pl-2 cursor-pointer self-center text-xs h-fit bg-transparent outline-none line-clamp-1 w-[8rem]"
|
||||||
|
placeholder={$i18n.t('Add a tag')}
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- TODO: Tag Suggestions -->
|
<!-- TODO: Tag Suggestions -->
|
||||||
|
|
|
@ -347,5 +347,12 @@
|
||||||
"You": "Du",
|
"You": "Du",
|
||||||
"You're a helpful assistant.": "Du bist ein hilfreicher Assistent.",
|
"You're a helpful assistant.": "Du bist ein hilfreicher Assistent.",
|
||||||
"You're now logged in.": "Du bist nun eingeloggt.",
|
"You're now logged in.": "Du bist nun eingeloggt.",
|
||||||
"PDF Extract Images (OCR)": "Text von Bilder aus PDFs extrahieren (OCR)"
|
"PDF Extract Images (OCR)": "Text von Bilder aus PDFs extrahieren (OCR)",
|
||||||
|
"Update password": "Passwort aktualisieren",
|
||||||
|
"Settings saved successfully!": "Einstellungen erfolgreich gespeichert!",
|
||||||
|
"WebUI will make requests to": "Wenn aktiviert sendet WebUI externe Anfragen an",
|
||||||
|
"Add a tag": "Tag hinzugügen",
|
||||||
|
"Version": "Version",
|
||||||
|
"Enter a user message here": "Gib hier eine Benutzernachricht ein",
|
||||||
|
"Enter an assistant message here": "Gib hier eine Assistentennachricht ein"
|
||||||
}
|
}
|
||||||
|
|
|
@ -347,5 +347,12 @@
|
||||||
"You": "You",
|
"You": "You",
|
||||||
"You're a helpful assistant.": "You're a helpful assistant.",
|
"You're a helpful assistant.": "You're a helpful assistant.",
|
||||||
"You're now logged in.": "You're now logged in.",
|
"You're now logged in.": "You're now logged in.",
|
||||||
"PDF Extract Images (OCR)": "PDF Extract Images (OCR)"
|
"PDF Extract Images (OCR)": "PDF Extract Images (OCR)",
|
||||||
|
"Update password": "Update password",
|
||||||
|
"Settings saved successfully!": "Settings saved successfully!",
|
||||||
|
"WebUI will make requests to": "WebUI will make requests to",
|
||||||
|
"Add a tag": "Add a tag",
|
||||||
|
"Version": "Version",
|
||||||
|
"Enter a user message here": "Enter a user message here",
|
||||||
|
"Enter an assistant message here": "Enter an assistant message here"
|
||||||
}
|
}
|
||||||
|
|
|
@ -309,7 +309,6 @@
|
||||||
"Text-to-Speech Engine": "Система синтезу мови",
|
"Text-to-Speech Engine": "Система синтезу мови",
|
||||||
"Tfs Z": "Tfs Z",
|
"Tfs Z": "Tfs Z",
|
||||||
"Theme": "Тема",
|
"Theme": "Тема",
|
||||||
"The requested action has been restricted as a security measure.": "Ця дія була обмежена з метою забезпечення безпеки.",
|
|
||||||
"This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "Це забезпечує збереження ваших цінних розмов у безпечному бекенд-сховищі. Дякуємо!",
|
"This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "Це забезпечує збереження ваших цінних розмов у безпечному бекенд-сховищі. Дякуємо!",
|
||||||
"This setting does not sync across browsers or devices.": "Це налаштування не синхронізується між браузерами або пристроями.",
|
"This setting does not sync across browsers or devices.": "Це налаштування не синхронізується між браузерами або пристроями.",
|
||||||
"Tip: Update multiple variable slots consecutively by pressing the tab key in the chat input after each replacement.": "Порада: Оновіть кілька слотів змінних послідовно, натискаючи клавішу табуляції у вікні чату після кожної заміни.",
|
"Tip: Update multiple variable slots consecutively by pressing the tab key in the chat input after each replacement.": "Порада: Оновіть кілька слотів змінних послідовно, натискаючи клавішу табуляції у вікні чату після кожної заміни.",
|
||||||
|
|
|
@ -305,7 +305,6 @@
|
||||||
"Text-to-Speech Engine": "文本轉語音引擎",
|
"Text-to-Speech Engine": "文本轉語音引擎",
|
||||||
"Tfs Z": "Tfs Z",
|
"Tfs Z": "Tfs Z",
|
||||||
"Theme": "主題",
|
"Theme": "主題",
|
||||||
"The requested action has been restricted as a security measure.": "出於安全考慮,請求的操作已被限制。",
|
|
||||||
"This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "這確保了您寶貴的對話安全地保存到您的後端數據庫。謝謝您!",
|
"This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "這確保了您寶貴的對話安全地保存到您的後端數據庫。謝謝您!",
|
||||||
"This setting does not sync across browsers or devices.": "此設置不會在瀏覽器或設備之間同步。",
|
"This setting does not sync across browsers or devices.": "此設置不會在瀏覽器或設備之間同步。",
|
||||||
"Tip: Update multiple variable slots consecutively by pressing the tab key in the chat input after each replacement.": "提示:通過在每次替換後在聊天輸入中按 Tab 鍵連續更新多個變量槽。",
|
"Tip: Update multiple variable slots consecutively by pressing the tab key in the chat input after each replacement.": "提示:通過在每次替換後在聊天輸入中按 Tab 鍵連續更新多個變量槽。",
|
||||||
|
|
Loading…
Reference in a new issue