forked from open-webui/open-webui
		
	main #2
					 4 changed files with 18 additions and 14 deletions
				
			
		|  | @ -1,7 +1,7 @@ | ||||||
| <script lang="ts"> | <script lang="ts"> | ||||||
| 	import { toast } from 'svelte-sonner'; | 	import { toast } from 'svelte-sonner'; | ||||||
| 	import { createEventDispatcher, onMount, getContext } from 'svelte'; | 	import { createEventDispatcher, onMount, getContext } from 'svelte'; | ||||||
| 	import { languages } from '$lib/i18n'; | 	import { getLanguages } from '$lib/i18n'; | ||||||
| 	const dispatch = createEventDispatcher(); | 	const dispatch = createEventDispatcher(); | ||||||
| 
 | 
 | ||||||
| 	import { models, user } from '$lib/stores'; | 	import { models, user } from '$lib/stores'; | ||||||
|  | @ -16,7 +16,7 @@ | ||||||
| 	// General | 	// General | ||||||
| 	let themes = ['dark', 'light', 'rose-pine dark', 'rose-pine-dawn light']; | 	let themes = ['dark', 'light', 'rose-pine dark', 'rose-pine-dawn light']; | ||||||
| 	let theme = 'dark'; | 	let theme = 'dark'; | ||||||
| 	// TODO: Get these dynamically from the i18n module | 	let languages = []; | ||||||
| 	let lang = $i18n.language; | 	let lang = $i18n.language; | ||||||
| 	let notificationEnabled = false; | 	let notificationEnabled = false; | ||||||
| 	let system = ''; | 	let system = ''; | ||||||
|  | @ -69,6 +69,7 @@ | ||||||
| 
 | 
 | ||||||
| 	onMount(async () => { | 	onMount(async () => { | ||||||
| 		let settings = JSON.parse(localStorage.getItem('settings') ?? '{}'); | 		let settings = JSON.parse(localStorage.getItem('settings') ?? '{}'); | ||||||
|  | 		languages = await getLanguages(); | ||||||
| 
 | 
 | ||||||
| 		theme = localStorage.theme ?? 'dark'; | 		theme = localStorage.theme ?? 'dark'; | ||||||
| 		notificationEnabled = settings.notificationEnabled ?? false; | 		notificationEnabled = settings.notificationEnabled ?? false; | ||||||
|  |  | ||||||
|  | @ -51,7 +51,7 @@ i18next | ||||||
| 			lookupLocalStorage: 'locale' | 			lookupLocalStorage: 'locale' | ||||||
| 		}, | 		}, | ||||||
| 		fallbackLng: { | 		fallbackLng: { | ||||||
| 			default: ['en-US'] | 			default: ['en'] | ||||||
| 		}, | 		}, | ||||||
| 		ns: 'translation', | 		ns: 'translation', | ||||||
| 		interpolation: { | 		interpolation: { | ||||||
|  | @ -62,6 +62,9 @@ i18next | ||||||
| const i18n = createI18nStore(i18next); | const i18n = createI18nStore(i18next); | ||||||
| const isLoadingStore = createIsLoadingStore(i18next); | const isLoadingStore = createIsLoadingStore(i18next); | ||||||
| 
 | 
 | ||||||
| export const languages = (await import(`./locales/languages.json`)).default; | export const getLanguages = async () => { | ||||||
|  | 	const languages = (await import(`./locales/languages.json`)).default; | ||||||
|  | 	return languages; | ||||||
|  | }; | ||||||
| export default i18n; | export default i18n; | ||||||
| export const isLoading = isLoadingStore; | export const isLoading = isLoadingStore; | ||||||
|  |  | ||||||
|  | @ -1,22 +1,22 @@ | ||||||
| [ | [ | ||||||
| 	{ | 	{ | ||||||
| 		"title": "English", | 		"code": "en", | ||||||
| 		"code": "en-US" | 		"title": "English" | ||||||
| 	}, | 	}, | ||||||
| 	{ | 	{ | ||||||
| 		"title": "فارسی", | 		"code": "fa", | ||||||
| 		"code": "fa" | 		"title": "فارسی" | ||||||
| 	}, | 	}, | ||||||
| 	{ | 	{ | ||||||
| 		"title": "Deutsch", | 		"code": "de", | ||||||
| 		"code": "de" | 		"title": "Deutsch" | ||||||
| 	}, | 	}, | ||||||
| 	{ | 	{ | ||||||
| 		"title": "French", | 		"code": "fr", | ||||||
| 		"code": "fr" | 		"title": "French" | ||||||
| 	}, | 	}, | ||||||
| 	{ | 	{ | ||||||
| 		"title": "Ukrainian", | 		"code": "uk", | ||||||
| 		"code": "uk" | 		"title": "Ukrainian" | ||||||
| 	} | 	} | ||||||
| ] | ] | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue