forked from open-webui/open-webui
		
	Added more german translations + added more i18n keys
This commit is contained in:
		
							parent
							
								
									9130428a55
								
							
						
					
					
						commit
						19843e39fd
					
				
					 13 changed files with 74 additions and 39 deletions
				
			
		|  | @ -70,7 +70,7 @@ | ||||||
| 								> | 								> | ||||||
| 									<tr> | 									<tr> | ||||||
| 										<th scope="col" class="px-3 py-2"> {$i18n.t('Name')} </th> | 										<th scope="col" class="px-3 py-2"> {$i18n.t('Name')} </th> | ||||||
| 										<th scope="col" class="px-3 py-2 hidden md:flex"> {$i18n.t('Created At')} </th> | 										<th scope="col" class="px-3 py-2 hidden md:flex"> {$i18n.t('Created at')} </th> | ||||||
| 										<th scope="col" class="px-3 py-2 text-right" /> | 										<th scope="col" class="px-3 py-2 text-right" /> | ||||||
| 									</tr> | 									</tr> | ||||||
| 								</thead> | 								</thead> | ||||||
|  | @ -96,7 +96,7 @@ | ||||||
| 
 | 
 | ||||||
| 											<td class="px-3 py-1 text-right"> | 											<td class="px-3 py-1 text-right"> | ||||||
| 												<div class="flex justify-end w-full"> | 												<div class="flex justify-end w-full"> | ||||||
| 													<Tooltip content="Delete Chat"> | 													<Tooltip content={$i18n.t('Delete Chat')}> | ||||||
| 														<button | 														<button | ||||||
| 															class="self-center w-fit text-sm px-2 py-2 hover:bg-black/5 dark:hover:bg-white/5 rounded-xl" | 															class="self-center w-fit text-sm px-2 py-2 hover:bg-black/5 dark:hover:bg-white/5 rounded-xl" | ||||||
| 															on:click={async () => { | 															on:click={async () => { | ||||||
|  | @ -133,7 +133,7 @@ | ||||||
| 						{/each} --> | 						{/each} --> | ||||||
| 					</div> | 					</div> | ||||||
| 				{:else} | 				{:else} | ||||||
| 					<div class="text-left text-sm w-full mb-8">{user.name} has no conversations.</div> | 					<div class="text-left text-sm w-full mb-8">{user.name} {$i18n.t('has no conversations.')}</div> | ||||||
| 				{/if} | 				{/if} | ||||||
| 			</div> | 			</div> | ||||||
| 		</div> | 		</div> | ||||||
|  |  | ||||||
|  | @ -492,7 +492,7 @@ | ||||||
| 										{/if} | 										{/if} | ||||||
| 
 | 
 | ||||||
| 										{#if !readOnly} | 										{#if !readOnly} | ||||||
| 											<Tooltip content="Edit" placement="bottom"> | 											<Tooltip content={$i18n.t('Edit')} placement="bottom"> | ||||||
| 												<button | 												<button | ||||||
| 													class="{isLastMessage | 													class="{isLastMessage | ||||||
| 														? 'visible' | 														? 'visible' | ||||||
|  | @ -519,7 +519,7 @@ | ||||||
| 											</Tooltip> | 											</Tooltip> | ||||||
| 										{/if} | 										{/if} | ||||||
| 
 | 
 | ||||||
| 										<Tooltip content="Copy" placement="bottom"> | 										<Tooltip content={$i18n.t('Copy')} placement="bottom"> | ||||||
| 											<button | 											<button | ||||||
| 												class="{isLastMessage | 												class="{isLastMessage | ||||||
| 													? 'visible' | 													? 'visible' | ||||||
|  | @ -546,7 +546,7 @@ | ||||||
| 										</Tooltip> | 										</Tooltip> | ||||||
| 
 | 
 | ||||||
| 										{#if !readOnly} | 										{#if !readOnly} | ||||||
| 											<Tooltip content="Good Response" placement="bottom"> | 											<Tooltip content={$i18n.t('Good Response')} placement="bottom"> | ||||||
| 												<button | 												<button | ||||||
| 													class="{isLastMessage | 													class="{isLastMessage | ||||||
| 														? 'visible' | 														? 'visible' | ||||||
|  | @ -581,7 +581,7 @@ | ||||||
| 												</button> | 												</button> | ||||||
| 											</Tooltip> | 											</Tooltip> | ||||||
| 
 | 
 | ||||||
| 											<Tooltip content="Bad Response" placement="bottom"> | 											<Tooltip content={$i18n.t('Bad Response')} placement="bottom"> | ||||||
| 												<button | 												<button | ||||||
| 													class="{isLastMessage | 													class="{isLastMessage | ||||||
| 														? 'visible' | 														? 'visible' | ||||||
|  | @ -616,7 +616,7 @@ | ||||||
| 											</Tooltip> | 											</Tooltip> | ||||||
| 										{/if} | 										{/if} | ||||||
| 
 | 
 | ||||||
| 										<Tooltip content="Read Aloud" placement="bottom"> | 										<Tooltip content={$i18n.t('Read Aloud')} placement="bottom"> | ||||||
| 											<button | 											<button | ||||||
| 												id="speak-button-{message.id}" | 												id="speak-button-{message.id}" | ||||||
| 												class="{isLastMessage | 												class="{isLastMessage | ||||||
|  | @ -765,7 +765,7 @@ | ||||||
| 										{/if} | 										{/if} | ||||||
| 
 | 
 | ||||||
| 										{#if message.info} | 										{#if message.info} | ||||||
| 											<Tooltip content="Generation Info" placement="bottom"> | 											<Tooltip content={$i18n.t('Generation Info')} placement="bottom"> | ||||||
| 												<button | 												<button | ||||||
| 													class=" {isLastMessage | 													class=" {isLastMessage | ||||||
| 														? 'visible' | 														? 'visible' | ||||||
|  | @ -794,7 +794,7 @@ | ||||||
| 										{/if} | 										{/if} | ||||||
| 
 | 
 | ||||||
| 										{#if isLastMessage && !readOnly} | 										{#if isLastMessage && !readOnly} | ||||||
| 											<Tooltip content="Continue Response" placement="bottom"> | 											<Tooltip content={$i18n.t('Continue Response')} placement="bottom"> | ||||||
| 												<button | 												<button | ||||||
| 													type="button" | 													type="button" | ||||||
| 													class="{isLastMessage | 													class="{isLastMessage | ||||||
|  | @ -826,7 +826,7 @@ | ||||||
| 												</button> | 												</button> | ||||||
| 											</Tooltip> | 											</Tooltip> | ||||||
| 
 | 
 | ||||||
| 											<Tooltip content="Regenerate" placement="bottom"> | 											<Tooltip content={$i18n.t('Regenerate')} placement="bottom"> | ||||||
| 												<button | 												<button | ||||||
| 													type="button" | 													type="button" | ||||||
| 													class="{isLastMessage | 													class="{isLastMessage | ||||||
|  |  | ||||||
|  | @ -266,7 +266,7 @@ | ||||||
| 						{/if} | 						{/if} | ||||||
| 
 | 
 | ||||||
| 						{#if !readOnly} | 						{#if !readOnly} | ||||||
| 							<Tooltip content="Edit" placement="bottom"> | 							<Tooltip content={$i18n.t('Edit')} placement="bottom"> | ||||||
| 								<button | 								<button | ||||||
| 									class="invisible group-hover:visible p-1 rounded dark:hover:text-white hover:text-black transition edit-user-message-button" | 									class="invisible group-hover:visible p-1 rounded dark:hover:text-white hover:text-black transition edit-user-message-button" | ||||||
| 									on:click={() => { | 									on:click={() => { | ||||||
|  | @ -291,7 +291,7 @@ | ||||||
| 							</Tooltip> | 							</Tooltip> | ||||||
| 						{/if} | 						{/if} | ||||||
| 
 | 
 | ||||||
| 						<Tooltip content="Copy" placement="bottom"> | 						<Tooltip content={$i18n.t('Copy')} placement="bottom"> | ||||||
| 							<button | 							<button | ||||||
| 								class="invisible group-hover:visible p-1 rounded dark:hover:text-white hover:text-black transition" | 								class="invisible group-hover:visible p-1 rounded dark:hover:text-white hover:text-black transition" | ||||||
| 								on:click={() => { | 								on:click={() => { | ||||||
|  | @ -316,7 +316,7 @@ | ||||||
| 						</Tooltip> | 						</Tooltip> | ||||||
| 
 | 
 | ||||||
| 						{#if !isFirstMessage && !readOnly} | 						{#if !isFirstMessage && !readOnly} | ||||||
| 							<Tooltip content="Delete" placement="bottom"> | 							<Tooltip content={$i18n.t('Delete')} placement="bottom"> | ||||||
| 								<button | 								<button | ||||||
| 									class="invisible group-hover:visible p-1 rounded dark:hover:text-white hover:text-black transition" | 									class="invisible group-hover:visible p-1 rounded dark:hover:text-white hover:text-black transition" | ||||||
| 									on:click={() => { | 									on:click={() => { | ||||||
|  |  | ||||||
|  | @ -57,7 +57,7 @@ | ||||||
| 
 | 
 | ||||||
| 			{#if selectedModelIdx === 0} | 			{#if selectedModelIdx === 0} | ||||||
| 				<div class="  self-center mr-2 disabled:text-gray-600 disabled:hover:text-gray-600"> | 				<div class="  self-center mr-2 disabled:text-gray-600 disabled:hover:text-gray-600"> | ||||||
| 					<Tooltip content="Add Model"> | 					<Tooltip content={$i18n.t('Add Model')}> | ||||||
| 						<button | 						<button | ||||||
| 							class=" " | 							class=" " | ||||||
| 							{disabled} | 							{disabled} | ||||||
|  |  | ||||||
|  | @ -21,7 +21,7 @@ | ||||||
| 	export let value = ''; | 	export let value = ''; | ||||||
| 	export let placeholder = 'Select a model'; | 	export let placeholder = 'Select a model'; | ||||||
| 	export let searchEnabled = true; | 	export let searchEnabled = true; | ||||||
| 	export let searchPlaceholder = 'Search a model'; | 	export let searchPlaceholder = $i18n.t('Search a model'); | ||||||
| 
 | 
 | ||||||
| 	export let items = [{ value: 'mango', label: 'Mango' }]; | 	export let items = [{ value: 'mango', label: 'Mango' }]; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -1,6 +1,9 @@ | ||||||
| <script lang="ts"> | <script lang="ts"> | ||||||
| 	import TagInput from './Tags/TagInput.svelte'; | 	import TagInput from './Tags/TagInput.svelte'; | ||||||
| 	import TagList from './Tags/TagList.svelte'; | 	import TagList from './Tags/TagList.svelte'; | ||||||
|  | 	import { getContext } from 'svelte'; | ||||||
|  | 
 | ||||||
|  | 	const i18n = getContext('i18n'); | ||||||
| 
 | 
 | ||||||
| 	export let tags = []; | 	export let tags = []; | ||||||
| 
 | 
 | ||||||
|  | @ -17,7 +20,7 @@ | ||||||
| 	/> | 	/> | ||||||
| 
 | 
 | ||||||
| 	<TagInput | 	<TagInput | ||||||
| 		label={tags.length == 0 ? 'Add Tags' : ''} | 		label={tags.length == 0 ? $i18n.t('Add Tags') : ''} | ||||||
| 		on:add={(e) => { | 		on:add={(e) => { | ||||||
| 			addTag(e.detail); | 			addTag(e.detail); | ||||||
| 		}} | 		}} | ||||||
|  |  | ||||||
|  | @ -42,7 +42,7 @@ | ||||||
| 				<div class="flex self-center w-[1px] h-5 mx-2 bg-gray-300 dark:bg-stone-700" /> | 				<div class="flex self-center w-[1px] h-5 mx-2 bg-gray-300 dark:bg-stone-700" /> | ||||||
| 
 | 
 | ||||||
| 				{#if !shareEnabled} | 				{#if !shareEnabled} | ||||||
| 					<Tooltip content="Settings"> | 					<Tooltip content={$i18n.t('Settings')}> | ||||||
| 						<button | 						<button | ||||||
| 							class="cursor-pointer p-1.5 flex dark:hover:bg-gray-700 rounded-full transition" | 							class="cursor-pointer p-1.5 flex dark:hover:bg-gray-700 rounded-full transition" | ||||||
| 							id="open-settings-button" | 							id="open-settings-button" | ||||||
|  | @ -104,7 +104,7 @@ | ||||||
| 						</button> | 						</button> | ||||||
| 					</Menu> | 					</Menu> | ||||||
| 				{/if} | 				{/if} | ||||||
| 				<Tooltip content="New Chat"> | 				<Tooltip content={$i18n.t('New Chat')}> | ||||||
| 					<button | 					<button | ||||||
| 						id="new-chat-button" | 						id="new-chat-button" | ||||||
| 						class=" cursor-pointer p-1.5 flex dark:hover:bg-gray-700 rounded-full transition" | 						class=" cursor-pointer p-1.5 flex dark:hover:bg-gray-700 rounded-full transition" | ||||||
|  |  | ||||||
|  | @ -1,5 +1,6 @@ | ||||||
| <script lang="ts"> | <script lang="ts"> | ||||||
| 	import { DropdownMenu } from 'bits-ui'; | 	import { DropdownMenu } from 'bits-ui'; | ||||||
|  | 	import { getContext } from 'svelte'; | ||||||
| 
 | 
 | ||||||
| 	import fileSaver from 'file-saver'; | 	import fileSaver from 'file-saver'; | ||||||
| 	const { saveAs } = fileSaver; | 	const { saveAs } = fileSaver; | ||||||
|  | @ -12,6 +13,8 @@ | ||||||
| 
 | 
 | ||||||
| 	import { downloadChatAsPDF } from '$lib/apis/utils'; | 	import { downloadChatAsPDF } from '$lib/apis/utils'; | ||||||
| 
 | 
 | ||||||
|  | 	const i18n = getContext('i18n'); | ||||||
|  | 
 | ||||||
| 	export let shareEnabled: boolean = false; | 	export let shareEnabled: boolean = false; | ||||||
| 	export let shareHandler: Function; | 	export let shareHandler: Function; | ||||||
| 	export let downloadHandler: Function; | 	export let downloadHandler: Function; | ||||||
|  | @ -104,7 +107,7 @@ | ||||||
| 						d="M15 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z" | 						d="M15 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z" | ||||||
| 					/> | 					/> | ||||||
| 				</svg> | 				</svg> | ||||||
| 				<div class="flex items-center">Settings</div> | 				<div class="flex items-center">{$i18n.t('Settings')}</div> | ||||||
| 			</DropdownMenu.Item> | 			</DropdownMenu.Item> | ||||||
| 
 | 
 | ||||||
| 			{#if shareEnabled} | 			{#if shareEnabled} | ||||||
|  | @ -126,7 +129,7 @@ | ||||||
| 							clip-rule="evenodd" | 							clip-rule="evenodd" | ||||||
| 						/> | 						/> | ||||||
| 					</svg> | 					</svg> | ||||||
| 					<div class="flex items-center">Share</div> | 					<div class="flex items-center">{$i18n.t('Share')}</div> | ||||||
| 				</DropdownMenu.Item> | 				</DropdownMenu.Item> | ||||||
| 
 | 
 | ||||||
| 				<!-- <DropdownMenu.Item | 				<!-- <DropdownMenu.Item | ||||||
|  | @ -154,7 +157,7 @@ | ||||||
| 							/> | 							/> | ||||||
| 						</svg> | 						</svg> | ||||||
| 
 | 
 | ||||||
| 						<div class="flex items-center">Download</div> | 						<div class="flex items-center">{$i18n.t('Download')}</div> | ||||||
| 					</DropdownMenu.SubTrigger> | 					</DropdownMenu.SubTrigger> | ||||||
| 					<DropdownMenu.SubContent | 					<DropdownMenu.SubContent | ||||||
| 						class="w-full rounded-lg px-1 py-1.5 border border-gray-300/30 dark:border-gray-700/50 z-50 bg-white dark:bg-gray-900 dark:text-white shadow-lg" | 						class="w-full rounded-lg px-1 py-1.5 border border-gray-300/30 dark:border-gray-700/50 z-50 bg-white dark:bg-gray-900 dark:text-white shadow-lg" | ||||||
|  | @ -167,7 +170,7 @@ | ||||||
| 								downloadTxt(); | 								downloadTxt(); | ||||||
| 							}} | 							}} | ||||||
| 						> | 						> | ||||||
| 							<div class="flex items-center line-clamp-1">Plain text (.txt)</div> | 							<div class="flex items-center line-clamp-1">{$i18n.t('Plain text (.txt)')}</div> | ||||||
| 						</DropdownMenu.Item> | 						</DropdownMenu.Item> | ||||||
| 
 | 
 | ||||||
| 						<DropdownMenu.Item | 						<DropdownMenu.Item | ||||||
|  | @ -176,7 +179,7 @@ | ||||||
| 								downloadPdf(); | 								downloadPdf(); | ||||||
| 							}} | 							}} | ||||||
| 						> | 						> | ||||||
| 							<div class="flex items-center line-clamp-1">PDF document (.pdf)</div> | 							<div class="flex items-center line-clamp-1">{$i18n.t('PDF document (.pdf)')}</div> | ||||||
| 						</DropdownMenu.Item> | 						</DropdownMenu.Item> | ||||||
| 					</DropdownMenu.SubContent> | 					</DropdownMenu.SubContent> | ||||||
| 				</DropdownMenu.Sub> | 				</DropdownMenu.Sub> | ||||||
|  |  | ||||||
|  | @ -610,7 +610,7 @@ | ||||||
| 										</button> | 										</button> | ||||||
| 									</ChatMenu> | 									</ChatMenu> | ||||||
| 
 | 
 | ||||||
| 									<Tooltip content="Archive"> | 									<Tooltip content={$i18n.t('Archive')}> | ||||||
| 										<button | 										<button | ||||||
| 											aria-label="Archive" | 											aria-label="Archive" | ||||||
| 											class=" self-center dark:hover:text-white transition" | 											class=" self-center dark:hover:text-white transition" | ||||||
|  |  | ||||||
|  | @ -1,6 +1,7 @@ | ||||||
| <script lang="ts"> | <script lang="ts"> | ||||||
| 	import { DropdownMenu } from 'bits-ui'; | 	import { DropdownMenu } from 'bits-ui'; | ||||||
| 	import { flyAndScale } from '$lib/utils/transitions'; | 	import { flyAndScale } from '$lib/utils/transitions'; | ||||||
|  | 	import { getContext } from 'svelte' | ||||||
| 
 | 
 | ||||||
| 	import Dropdown from '$lib/components/common/Dropdown.svelte'; | 	import Dropdown from '$lib/components/common/Dropdown.svelte'; | ||||||
| 	import GarbageBin from '$lib/components/icons/GarbageBin.svelte'; | 	import GarbageBin from '$lib/components/icons/GarbageBin.svelte'; | ||||||
|  | @ -9,6 +10,8 @@ | ||||||
| 	import Tags from '$lib/components/chat/Tags.svelte'; | 	import Tags from '$lib/components/chat/Tags.svelte'; | ||||||
| 	import Share from '$lib/components/icons/Share.svelte'; | 	import Share from '$lib/components/icons/Share.svelte'; | ||||||
| 
 | 
 | ||||||
|  | 	const i18n = getContext('i18n'); | ||||||
|  | 
 | ||||||
| 	export let shareHandler: Function; | 	export let shareHandler: Function; | ||||||
| 	export let renameHandler: Function; | 	export let renameHandler: Function; | ||||||
| 	export let deleteHandler: Function; | 	export let deleteHandler: Function; | ||||||
|  | @ -27,7 +30,7 @@ | ||||||
| 		} | 		} | ||||||
| 	}} | 	}} | ||||||
| > | > | ||||||
| 	<Tooltip content="More"> | 	<Tooltip content={$i18n.t('More')}> | ||||||
| 		<slot /> | 		<slot /> | ||||||
| 	</Tooltip> | 	</Tooltip> | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -3,8 +3,6 @@ | ||||||
| 	"(Beta)": "(Beta)", | 	"(Beta)": "(Beta)", | ||||||
| 	"(e.g. `sh webui.sh --api`)": "(z.B. `sh webui.sh --api`)", | 	"(e.g. `sh webui.sh --api`)": "(z.B. `sh webui.sh --api`)", | ||||||
| 	"(latest)": "(neueste)", | 	"(latest)": "(neueste)", | ||||||
| 	"{{modelName}} is thinking...": "{{modelName}} denkt nach...", |  | ||||||
| 	"{{webUIName}} Backend Required": "{{webUIName}}-Backend erforderlich", |  | ||||||
| 	"a user": "ein Benutzer", | 	"a user": "ein Benutzer", | ||||||
| 	"About": "Über", | 	"About": "Über", | ||||||
| 	"Account": "Account", | 	"Account": "Account", | ||||||
|  | @ -17,6 +15,8 @@ | ||||||
| 	"Add Docs": "Dokumente hinzufügen", | 	"Add Docs": "Dokumente hinzufügen", | ||||||
| 	"Add Files": "Dateien hinzufügen", | 	"Add Files": "Dateien hinzufügen", | ||||||
| 	"Add message": "Nachricht eingeben", | 	"Add message": "Nachricht eingeben", | ||||||
|  | 	"Add Model": "Modell hinzufügen", | ||||||
|  | 	"Add Tags": "Tags hinzufügen", | ||||||
| 	"add tags": "Tags hinzufügen", | 	"add tags": "Tags hinzufügen", | ||||||
| 	"Adjusting these settings will apply changes universally to all users.": "Das Anpassen dieser Einstellungen wirkt sich universell auf alle Benutzer aus.", | 	"Adjusting these settings will apply changes universally to all users.": "Das Anpassen dieser Einstellungen wirkt sich universell auf alle Benutzer aus.", | ||||||
| 	"admin": "Administrator", | 	"admin": "Administrator", | ||||||
|  | @ -34,6 +34,7 @@ | ||||||
| 	"API Base URL": "API Basis URL", | 	"API Base URL": "API Basis URL", | ||||||
| 	"API Key": "API Key", | 	"API Key": "API Key", | ||||||
| 	"API RPM": "API RPM", | 	"API RPM": "API RPM", | ||||||
|  | 	"Archive": "Archivieren", | ||||||
| 	"are allowed - Activate this command by typing": "sind erlaubt - Aktiviere diesen Befehl, indem du", | 	"are allowed - Activate this command by typing": "sind erlaubt - Aktiviere diesen Befehl, indem du", | ||||||
| 	"Are you sure?": "Bist du sicher?", | 	"Are you sure?": "Bist du sicher?", | ||||||
| 	"Audio": "Audio", | 	"Audio": "Audio", | ||||||
|  | @ -43,6 +44,7 @@ | ||||||
| 	"AUTOMATIC1111 Base URL is required.": "", | 	"AUTOMATIC1111 Base URL is required.": "", | ||||||
| 	"available!": "verfügbar!", | 	"available!": "verfügbar!", | ||||||
| 	"Back": "Zurück", | 	"Back": "Zurück", | ||||||
|  | 	"Bad Response": "Schlechte Antwort", | ||||||
| 	"Builder Mode": "Builder Modus", | 	"Builder Mode": "Builder Modus", | ||||||
| 	"Cancel": "Abbrechen", | 	"Cancel": "Abbrechen", | ||||||
| 	"Categories": "Kategorien", | 	"Categories": "Kategorien", | ||||||
|  | @ -71,7 +73,10 @@ | ||||||
| 	"Connections": "Verbindungen", | 	"Connections": "Verbindungen", | ||||||
| 	"Content": "Inhalt", | 	"Content": "Inhalt", | ||||||
| 	"Context Length": "Context Length", | 	"Context Length": "Context Length", | ||||||
|  | 	"Continue Response": "Antwort fortsetzen", | ||||||
| 	"Conversation Mode": "Konversationsmodus", | 	"Conversation Mode": "Konversationsmodus", | ||||||
|  | 	"Copied shared chat URL to clipboard!": "Geteilte Chat-URL in die Zwischenablage kopiert!", | ||||||
|  | 	"Copy": "Kopieren", | ||||||
| 	"Copy last code block": "Letzten Codeblock kopieren", | 	"Copy last code block": "Letzten Codeblock kopieren", | ||||||
| 	"Copy last response": "Letzte Antwort kopieren", | 	"Copy last response": "Letzte Antwort kopieren", | ||||||
| 	"Copying to clipboard was successful!": "Das Kopieren in die Zwischenablage war erfolgreich!", | 	"Copying to clipboard was successful!": "Das Kopieren in die Zwischenablage war erfolgreich!", | ||||||
|  | @ -95,12 +100,13 @@ | ||||||
| 	"Default User Role": "Standardbenutzerrolle", | 	"Default User Role": "Standardbenutzerrolle", | ||||||
| 	"delete": "löschen", | 	"delete": "löschen", | ||||||
| 	"Delete a model": "Ein Modell löschen", | 	"Delete a model": "Ein Modell löschen", | ||||||
|  | 	"Delete Chat": "Chat löschen", | ||||||
| 	"Delete chat": "Chat löschen", | 	"Delete chat": "Chat löschen", | ||||||
| 	"Delete Chats": "Chats löschen", | 	"Delete Chats": "Chats löschen", | ||||||
| 	"Deleted {{deleteModelTag}}": "{{deleteModelTag}} gelöscht", | 	"Delete User": "Benutzer löschen", | ||||||
| 	"Deleted {tagName}": "{tagName} gelöscht", | 	"Deleted {tagName}": "{tagName} gelöscht", | ||||||
|  | 	"Deleted {{deleteModelTag}}": "{{deleteModelTag}} gelöscht", | ||||||
| 	"Description": "Beschreibung", | 	"Description": "Beschreibung", | ||||||
| 	"Notifications": "Desktop-Benachrichtigungen", |  | ||||||
| 	"Disabled": "Deaktiviert", | 	"Disabled": "Deaktiviert", | ||||||
| 	"Discover a modelfile": "Ein Modelfile entdecken", | 	"Discover a modelfile": "Ein Modelfile entdecken", | ||||||
| 	"Discover a prompt": "Einen Prompt entdecken", | 	"Discover a prompt": "Einen Prompt entdecken", | ||||||
|  | @ -113,17 +119,18 @@ | ||||||
| 	"does not make any external connections, and your data stays securely on your locally hosted server.": "stellt keine externen Verbindungen her, und Deine Daten bleiben sicher auf Deinen lokal gehosteten Server.", | 	"does not make any external connections, and your data stays securely on your locally hosted server.": "stellt keine externen Verbindungen her, und Deine Daten bleiben sicher auf Deinen lokal gehosteten Server.", | ||||||
| 	"Don't Allow": "Nicht erlauben", | 	"Don't Allow": "Nicht erlauben", | ||||||
| 	"Don't have an account?": "Hast du vielleicht noch kein Konto?", | 	"Don't have an account?": "Hast du vielleicht noch kein Konto?", | ||||||
|  | 	"Download": "Herunterladen", | ||||||
| 	"Download as a File": "Als Datei herunterladen", | 	"Download as a File": "Als Datei herunterladen", | ||||||
| 	"Download Database": "Datenbank herunterladen", | 	"Download Database": "Datenbank herunterladen", | ||||||
| 	"Drop any files here to add to the conversation": "Ziehe Dateien in diesen Bereich, um sie an den Chat anzuhängen", | 	"Drop any files here to add to the conversation": "Ziehe Dateien in diesen Bereich, um sie an den Chat anzuhängen", | ||||||
| 	"e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "z.B. '30s','10m'. Gültige Zeiteinheiten sind 's', 'm', 'h'.", | 	"e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "z.B. '30s','10m'. Gültige Zeiteinheiten sind 's', 'm', 'h'.", | ||||||
|  | 	"Edit": "Bearbeiten", | ||||||
| 	"Edit Doc": "Dokument bearbeiten", | 	"Edit Doc": "Dokument bearbeiten", | ||||||
| 	"Edit User": "Benutzer bearbeiten", | 	"Edit User": "Benutzer bearbeiten", | ||||||
| 	"Email": "E-Mail", | 	"Email": "E-Mail", | ||||||
| 	"Enable Chat History": "Chat-Verlauf aktivieren", | 	"Enable Chat History": "Chat-Verlauf aktivieren", | ||||||
| 	"Enable New Sign Ups": "Neue Anmeldungen aktivieren", | 	"Enable New Sign Ups": "Neue Anmeldungen aktivieren", | ||||||
| 	"Enabled": "Aktiviert", | 	"Enabled": "Aktiviert", | ||||||
| 	"Enter {{role}} message here": "Gib die {{role}} Nachricht hier ein", |  | ||||||
| 	"Enter API Key": "Gib den API-Schlüssel ein", | 	"Enter API Key": "Gib den API-Schlüssel ein", | ||||||
| 	"Enter Chunk Overlap": "Gib den Chunk Overlap ein", | 	"Enter Chunk Overlap": "Gib den Chunk Overlap ein", | ||||||
| 	"Enter Chunk Size": "Gib die Chunk Size ein", | 	"Enter Chunk Size": "Gib die Chunk Size ein", | ||||||
|  | @ -141,6 +148,7 @@ | ||||||
| 	"Enter Your Email": "Gib deine E-Mail-Adresse ein", | 	"Enter Your Email": "Gib deine E-Mail-Adresse ein", | ||||||
| 	"Enter Your Full Name": "Gib deinen vollständigen Namen ein", | 	"Enter Your Full Name": "Gib deinen vollständigen Namen ein", | ||||||
| 	"Enter Your Password": "Gib dein Passwort ein", | 	"Enter Your Password": "Gib dein Passwort ein", | ||||||
|  | 	"Enter {{role}} message here": "Gib die {{role}} Nachricht hier ein", | ||||||
| 	"Experimental": "Experimentell", | 	"Experimental": "Experimentell", | ||||||
| 	"Export All Chats (All Users)": "Alle Chats exportieren (alle Benutzer)", | 	"Export All Chats (All Users)": "Alle Chats exportieren (alle Benutzer)", | ||||||
| 	"Export Chats": "Chats exportieren", | 	"Export Chats": "Chats exportieren", | ||||||
|  | @ -156,6 +164,9 @@ | ||||||
| 	"Full Screen Mode": "Vollbildmodus", | 	"Full Screen Mode": "Vollbildmodus", | ||||||
| 	"General": "Allgemein", | 	"General": "Allgemein", | ||||||
| 	"General Settings": "Allgemeine Einstellungen", | 	"General Settings": "Allgemeine Einstellungen", | ||||||
|  | 	"Generation Info": "Generierungsinformationen", | ||||||
|  | 	"Good Response": "Gute Antwort", | ||||||
|  | 	"has no conversations.": "hat keine Unterhaltungen.", | ||||||
| 	"Hello, {{name}}": "Hallo, {{name}}", | 	"Hello, {{name}}": "Hallo, {{name}}", | ||||||
| 	"Hide": "Verbergen", | 	"Hide": "Verbergen", | ||||||
| 	"Hide Additional Params": "Verstecke zusätzliche Parameter", | 	"Hide Additional Params": "Verstecke zusätzliche Parameter", | ||||||
|  | @ -177,6 +188,7 @@ | ||||||
| 	"Keep Alive": "Keep Alive", | 	"Keep Alive": "Keep Alive", | ||||||
| 	"Keyboard shortcuts": "Tastenkürzel", | 	"Keyboard shortcuts": "Tastenkürzel", | ||||||
| 	"Language": "Sprache", | 	"Language": "Sprache", | ||||||
|  | 	"Last Active": "Zuletzt aktiv", | ||||||
| 	"Light": "Hell", | 	"Light": "Hell", | ||||||
| 	"Listening...": "Hören...", | 	"Listening...": "Hören...", | ||||||
| 	"LLMs can make mistakes. Verify important information.": "LLMs können Fehler machen. Überprüfe wichtige Informationen.", | 	"LLMs can make mistakes. Verify important information.": "LLMs können Fehler machen. Überprüfe wichtige Informationen.", | ||||||
|  | @ -190,21 +202,22 @@ | ||||||
| 	"Mirostat": "Mirostat", | 	"Mirostat": "Mirostat", | ||||||
| 	"Mirostat Eta": "Mirostat Eta", | 	"Mirostat Eta": "Mirostat Eta", | ||||||
| 	"Mirostat Tau": "Mirostat Tau", | 	"Mirostat Tau": "Mirostat Tau", | ||||||
| 	"MMMM DD, YYYY": "DD.MM.YYYY", | 	"MMMM DD, YYYY": "DD MMMM YYYY", | ||||||
| 	"Model '{{modelName}}' has been successfully downloaded.": "Modell '{{modelName}}' wurde erfolgreich heruntergeladen.", | 	"Model '{{modelName}}' has been successfully downloaded.": "Modell '{{modelName}}' wurde erfolgreich heruntergeladen.", | ||||||
| 	"Model '{{modelTag}}' is already in queue for downloading.": "Modell '{{modelTag}}' befindet sich bereits in der Warteschlange zum Herunterladen.", | 	"Model '{{modelTag}}' is already in queue for downloading.": "Modell '{{modelTag}}' befindet sich bereits in der Warteschlange zum Herunterladen.", | ||||||
| 	"Model {{modelId}} not found": "Modell {{modelId}} nicht gefunden", |  | ||||||
| 	"Model {{modelName}} already exists.": "Modell {{modelName}} existiert bereits.", |  | ||||||
| 	"Model Name": "Modellname", | 	"Model Name": "Modellname", | ||||||
| 	"Model not selected": "Modell nicht ausgewählt", | 	"Model not selected": "Modell nicht ausgewählt", | ||||||
| 	"Model Tag Name": "Modell-Tag-Name", | 	"Model Tag Name": "Modell-Tag-Name", | ||||||
| 	"Model Whitelisting": "Modell-Whitelisting", | 	"Model Whitelisting": "Modell-Whitelisting", | ||||||
|  | 	"Model {{modelId}} not found": "Modell {{modelId}} nicht gefunden", | ||||||
|  | 	"Model {{modelName}} already exists.": "Modell {{modelName}} existiert bereits.", | ||||||
| 	"Model(s) Whitelisted": "Modell(e) auf der Whitelist", | 	"Model(s) Whitelisted": "Modell(e) auf der Whitelist", | ||||||
| 	"Modelfile": "Modelfiles", | 	"Modelfile": "Modelfiles", | ||||||
| 	"Modelfile Advanced Settings": "Erweiterte Modelfileseinstellungen", | 	"Modelfile Advanced Settings": "Erweiterte Modelfileseinstellungen", | ||||||
| 	"Modelfile Content": "Modelfile Content", | 	"Modelfile Content": "Modelfile Content", | ||||||
| 	"Modelfiles": "Modelfiles", | 	"Modelfiles": "Modelfiles", | ||||||
| 	"Models": "Modelle", | 	"Models": "Modelle", | ||||||
|  | 	"More": "Mehr", | ||||||
| 	"My Documents": "Meine Dokumente", | 	"My Documents": "Meine Dokumente", | ||||||
| 	"My Modelfiles": "Meine Modelfiles", | 	"My Modelfiles": "Meine Modelfiles", | ||||||
| 	"My Prompts": "Meine Prompts", | 	"My Prompts": "Meine Prompts", | ||||||
|  | @ -215,6 +228,7 @@ | ||||||
| 	"New Password": "Neues Passwort", | 	"New Password": "Neues Passwort", | ||||||
| 	"Not sure what to add?": "Nicht sicher, was hinzugefügt werden soll?", | 	"Not sure what to add?": "Nicht sicher, was hinzugefügt werden soll?", | ||||||
| 	"Not sure what to write? Switch to": "Nicht sicher, was Du schreiben sollst? Wechsel zu", | 	"Not sure what to write? Switch to": "Nicht sicher, was Du schreiben sollst? Wechsel zu", | ||||||
|  | 	"Notifications": "Desktop-Benachrichtigungen", | ||||||
| 	"Off": "Aus", | 	"Off": "Aus", | ||||||
| 	"Okay, Let's Go!": "Okay, los geht's!", | 	"Okay, Let's Go!": "Okay, los geht's!", | ||||||
| 	"Ollama Base URL": "Ollama Basis URL", | 	"Ollama Base URL": "Ollama Basis URL", | ||||||
|  | @ -235,9 +249,11 @@ | ||||||
| 	"or": "oder", | 	"or": "oder", | ||||||
| 	"Parameters": "Parameter", | 	"Parameters": "Parameter", | ||||||
| 	"Password": "Passwort", | 	"Password": "Passwort", | ||||||
|  | 	"PDF document (.pdf)": "PDF-Dokument (.pdf)", | ||||||
| 	"PDF Extract Images (OCR)": "Text von Bildern aus PDFs extrahieren (OCR)", | 	"PDF Extract Images (OCR)": "Text von Bildern aus PDFs extrahieren (OCR)", | ||||||
| 	"pending": "ausstehend", | 	"pending": "ausstehend", | ||||||
| 	"Permission denied when accessing microphone: {{error}}": "Zugriff auf das Mikrofon verweigert: {{error}}", | 	"Permission denied when accessing microphone: {{error}}": "Zugriff auf das Mikrofon verweigert: {{error}}", | ||||||
|  | 	"Plain text (.txt)": "Nur Text (.txt)", | ||||||
| 	"Playground": "Playground", | 	"Playground": "Playground", | ||||||
| 	"Profile": "Profil", | 	"Profile": "Profil", | ||||||
| 	"Prompt Content": "Prompt-Inhalt", | 	"Prompt Content": "Prompt-Inhalt", | ||||||
|  | @ -248,8 +264,10 @@ | ||||||
| 	"Query Params": "Query Parameter", | 	"Query Params": "Query Parameter", | ||||||
| 	"RAG Template": "RAG-Vorlage", | 	"RAG Template": "RAG-Vorlage", | ||||||
| 	"Raw Format": "Rohformat", | 	"Raw Format": "Rohformat", | ||||||
|  | 	"Read Aloud": "Vorlesen", | ||||||
| 	"Record voice": "Stimme aufnehmen", | 	"Record voice": "Stimme aufnehmen", | ||||||
| 	"Redirecting you to OpenWebUI Community": "Du wirst zur OpenWebUI-Community weitergeleitet", | 	"Redirecting you to OpenWebUI Community": "Du wirst zur OpenWebUI-Community weitergeleitet", | ||||||
|  | 	"Regenerate": "Neu generieren", | ||||||
| 	"Release Notes": "Versionshinweise", | 	"Release Notes": "Versionshinweise", | ||||||
| 	"Repeat Last N": "Repeat Last N", | 	"Repeat Last N": "Repeat Last N", | ||||||
| 	"Repeat Penalty": "Repeat Penalty", | 	"Repeat Penalty": "Repeat Penalty", | ||||||
|  | @ -268,6 +286,7 @@ | ||||||
| 	"Scan complete!": "Scan abgeschlossen!", | 	"Scan complete!": "Scan abgeschlossen!", | ||||||
| 	"Scan for documents from {{path}}": "Dokumente von {{path}} scannen", | 	"Scan for documents from {{path}}": "Dokumente von {{path}} scannen", | ||||||
| 	"Search": "Suchen", | 	"Search": "Suchen", | ||||||
|  | 	"Search a model": "Ein Modell suchen", | ||||||
| 	"Search Documents": "Dokumente suchen", | 	"Search Documents": "Dokumente suchen", | ||||||
| 	"Search Prompts": "Prompts suchen", | 	"Search Prompts": "Prompts suchen", | ||||||
| 	"See readme.md for instructions": "Anleitung in readme.md anzeigen", | 	"See readme.md for instructions": "Anleitung in readme.md anzeigen", | ||||||
|  | @ -287,6 +306,8 @@ | ||||||
| 	"Set Voice": "Stimme festlegen", | 	"Set Voice": "Stimme festlegen", | ||||||
| 	"Settings": "Einstellungen", | 	"Settings": "Einstellungen", | ||||||
| 	"Settings saved successfully!": "Einstellungen erfolgreich gespeichert!", | 	"Settings saved successfully!": "Einstellungen erfolgreich gespeichert!", | ||||||
|  | 	"Share": "Teilen", | ||||||
|  | 	"Share Chat": "Chat teilen", | ||||||
| 	"Share to OpenWebUI Community": "Mit OpenWebUI Community teilen", | 	"Share to OpenWebUI Community": "Mit OpenWebUI Community teilen", | ||||||
| 	"short-summary": "kurze-zusammenfassung", | 	"short-summary": "kurze-zusammenfassung", | ||||||
| 	"Show": "Anzeigen", | 	"Show": "Anzeigen", | ||||||
|  | @ -333,6 +354,8 @@ | ||||||
| 	"Type Hugging Face Resolve (Download) URL": "", | 	"Type Hugging Face Resolve (Download) URL": "", | ||||||
| 	"Uh-oh! There was an issue connecting to {{provider}}.": "Ups! Es gab ein Problem bei der Verbindung mit {{provider}}.", | 	"Uh-oh! There was an issue connecting to {{provider}}.": "Ups! Es gab ein Problem bei der Verbindung mit {{provider}}.", | ||||||
| 	"Unknown File Type '{{file_type}}', but accepting and treating as plain text": "Unbekannter Dateityp '{{file_type}}', wird jedoch akzeptiert und als einfacher Text behandelt.", | 	"Unknown File Type '{{file_type}}', but accepting and treating as plain text": "Unbekannter Dateityp '{{file_type}}', wird jedoch akzeptiert und als einfacher Text behandelt.", | ||||||
|  | 	"Update and Copy Link": "Erneuern und kopieren", | ||||||
|  | 	"Update Embedding Model": "Embedding Modell aktualisieren", | ||||||
| 	"Update password": "Passwort aktualisieren", | 	"Update password": "Passwort aktualisieren", | ||||||
| 	"Upload a GGUF model": "GGUF Model hochladen", | 	"Upload a GGUF model": "GGUF Model hochladen", | ||||||
| 	"Upload files": "Dateien hochladen", | 	"Upload files": "Dateien hochladen", | ||||||
|  | @ -348,6 +371,7 @@ | ||||||
| 	"variable": "Variable", | 	"variable": "Variable", | ||||||
| 	"variable to have them replaced with clipboard content.": "Variable, um den Inhalt der Zwischenablage beim Nutzen des Prompts zu ersetzen.", | 	"variable to have them replaced with clipboard content.": "Variable, um den Inhalt der Zwischenablage beim Nutzen des Prompts zu ersetzen.", | ||||||
| 	"Version": "Version", | 	"Version": "Version", | ||||||
|  | 	"Warning: If you update or change your embedding model, you will need to re-import all documents.": "Warnung: Wenn du dein Einbettungsmodell aktualisierst oder änderst, musst du alle Dokumente erneut importieren.", | ||||||
| 	"Web": "Web", | 	"Web": "Web", | ||||||
| 	"WebUI Add-ons": "WebUI-Add-Ons", | 	"WebUI Add-ons": "WebUI-Add-Ons", | ||||||
| 	"WebUI Settings": "WebUI-Einstellungen", | 	"WebUI Settings": "WebUI-Einstellungen", | ||||||
|  | @ -359,5 +383,7 @@ | ||||||
| 	"Write a summary in 50 words that summarizes [topic or keyword].": "Schreibe eine kurze Zusammenfassung in 50 Wörtern, die [Thema oder Schlüsselwort] zusammenfasst.", | 	"Write a summary in 50 words that summarizes [topic or keyword].": "Schreibe eine kurze Zusammenfassung in 50 Wörtern, die [Thema oder Schlüsselwort] zusammenfasst.", | ||||||
| 	"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.", | ||||||
|  | 	"{{modelName}} is thinking...": "{{modelName}} denkt nach...", | ||||||
|  | 	"{{webUIName}} Backend Required": "{{webUIName}}-Backend erforderlich" | ||||||
| } | } | ||||||
|  | @ -247,7 +247,7 @@ | ||||||
| 															</button> | 															</button> | ||||||
| 														</Tooltip> | 														</Tooltip> | ||||||
| 
 | 
 | ||||||
| 														<Tooltip content="Edit User"> | 														<Tooltip content={$i18n.t('Edit User')}> | ||||||
| 															<button | 															<button | ||||||
| 																class="self-center w-fit text-sm px-2 py-2 hover:bg-black/5 dark:hover:bg-white/5 rounded-xl" | 																class="self-center w-fit text-sm px-2 py-2 hover:bg-black/5 dark:hover:bg-white/5 rounded-xl" | ||||||
| 																on:click={async () => { | 																on:click={async () => { | ||||||
|  | @ -272,7 +272,7 @@ | ||||||
| 															</button> | 															</button> | ||||||
| 														</Tooltip> | 														</Tooltip> | ||||||
| 
 | 
 | ||||||
| 														<Tooltip content="Delete User"> | 														<Tooltip content={$i18n.t('Delete User')}> | ||||||
| 															<button | 															<button | ||||||
| 																class="self-center w-fit text-sm px-2 py-2 hover:bg-black/5 dark:hover:bg-white/5 rounded-xl" | 																class="self-center w-fit text-sm px-2 py-2 hover:bg-black/5 dark:hover:bg-white/5 rounded-xl" | ||||||
| 																on:click={async () => { | 																on:click={async () => { | ||||||
|  |  | ||||||
|  | @ -145,7 +145,7 @@ | ||||||
| 					</div> | 					</div> | ||||||
| 
 | 
 | ||||||
| 					<div class=" mt-1 text-gray-400"> | 					<div class=" mt-1 text-gray-400"> | ||||||
| 						{dayjs(chat.chat.timestamp).format('MMMM D, YYYY')} | 						{dayjs(chat.chat.timestamp).format($i18n.t('MMMM DD, YYYY'))} | ||||||
| 					</div> | 					</div> | ||||||
| 				</div> | 				</div> | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Jannik Streidl
						Jannik Streidl