forked from open-webui/open-webui
		
	feat: Get available languages from json file
This commit is contained in:
		
							parent
							
								
									41378748b8
								
							
						
					
					
						commit
						f4a1885298
					
				
					 8 changed files with 30 additions and 6 deletions
				
			
		|  | @ -1,6 +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'; | ||||||
| 	const dispatch = createEventDispatcher(); | 	const dispatch = createEventDispatcher(); | ||||||
| 
 | 
 | ||||||
| 	import { models, user } from '$lib/stores'; | 	import { models, user } from '$lib/stores'; | ||||||
|  | @ -16,7 +17,6 @@ | ||||||
| 	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 | 	// TODO: Get these dynamically from the i18n module | ||||||
| 	let languages = ['en', 'fa', 'fr', 'de', 'ua']; |  | ||||||
| 	let lang = $i18n.language; | 	let lang = $i18n.language; | ||||||
| 	let notificationEnabled = false; | 	let notificationEnabled = false; | ||||||
| 	let system = ''; | 	let system = ''; | ||||||
|  | @ -134,12 +134,11 @@ | ||||||
| 						bind:value={lang} | 						bind:value={lang} | ||||||
| 						placeholder="Select a language" | 						placeholder="Select a language" | ||||||
| 						on:change={(e) => { | 						on:change={(e) => { | ||||||
| 							console.log($i18n); |  | ||||||
| 							$i18n.changeLanguage(lang); | 							$i18n.changeLanguage(lang); | ||||||
| 						}} | 						}} | ||||||
| 					> | 					> | ||||||
| 						{#each languages as value} | 						{#each languages as language} | ||||||
| 							<option {value}>{value}</option> | 							<option value={language['code']}>{language['title']}</option> | ||||||
| 						{/each} | 						{/each} | ||||||
| 					</select> | 					</select> | ||||||
| 				</div> | 				</div> | ||||||
|  |  | ||||||
|  | @ -50,13 +50,16 @@ i18next | ||||||
| 			lookupQuerystring: 'lang', | 			lookupQuerystring: 'lang', | ||||||
| 			lookupLocalStorage: 'locale' | 			lookupLocalStorage: 'locale' | ||||||
| 		}, | 		}, | ||||||
| 		fallbackLng: 'en', | 		fallbackLng: { | ||||||
| 		ns: 'common', | 			default: ['en-US'] | ||||||
|  | 		}, | ||||||
|  | 		ns: 'translation', | ||||||
| 		interpolation: { | 		interpolation: { | ||||||
| 			escapeValue: false // not needed for svelte as it escapes by default
 | 			escapeValue: false // not needed for svelte as it escapes by default
 | ||||||
| 		} | 		} | ||||||
| 	}); | 	}); | ||||||
| 
 | 
 | ||||||
|  | export const languages = (await import(`./locales/languages.json`)).default; | ||||||
| const i18n = createI18nStore(i18next); | const i18n = createI18nStore(i18next); | ||||||
| const isLoadingStore = createIsLoadingStore(i18next); | const isLoadingStore = createIsLoadingStore(i18next); | ||||||
| export default i18n; | export default i18n; | ||||||
|  |  | ||||||
							
								
								
									
										22
									
								
								src/lib/i18n/locales/languages.json
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								src/lib/i18n/locales/languages.json
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,22 @@ | ||||||
|  | [ | ||||||
|  | 	{ | ||||||
|  | 		"title": "English", | ||||||
|  | 		"code": "en-US" | ||||||
|  | 	}, | ||||||
|  | 	{ | ||||||
|  | 		"title": "فارسی", | ||||||
|  | 		"code": "fa" | ||||||
|  | 	}, | ||||||
|  | 	{ | ||||||
|  | 		"title": "Deutsch", | ||||||
|  | 		"code": "de" | ||||||
|  | 	}, | ||||||
|  | 	{ | ||||||
|  | 		"title": "French", | ||||||
|  | 		"code": "fr" | ||||||
|  | 	}, | ||||||
|  | 	{ | ||||||
|  | 		"title": "Ukrainian", | ||||||
|  | 		"code": "uk" | ||||||
|  | 	} | ||||||
|  | ] | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Ased Mammad
						Ased Mammad