forked from open-webui/open-webui
		
	wip: Set default language from config
This commit is contained in:
		
							parent
							
								
									cb364f0ac7
								
							
						
					
					
						commit
						26121c5d88
					
				
					 4 changed files with 39 additions and 29 deletions
				
			
		|  | @ -1,6 +1,7 @@ | ||||||
| { | { | ||||||
|     "version": 0, |     "version": 0, | ||||||
|     "ui": { |     "ui": { | ||||||
|  | 	"locale": "en-US", | ||||||
|         "prompt_suggestions": [ |         "prompt_suggestions": [ | ||||||
|             { |             { | ||||||
|                 "title": [ |                 "title": [ | ||||||
|  |  | ||||||
|  | @ -32,6 +32,7 @@ from utils.utils import get_admin_user | ||||||
| from apps.rag.utils import rag_messages | from apps.rag.utils import rag_messages | ||||||
| 
 | 
 | ||||||
| from config import ( | from config import ( | ||||||
|  |     CONFIG_DATA, | ||||||
|     WEBUI_NAME, |     WEBUI_NAME, | ||||||
|     ENV, |     ENV, | ||||||
|     VERSION, |     VERSION, | ||||||
|  | @ -88,7 +89,6 @@ class RAGMiddleware(BaseHTTPMiddleware): | ||||||
|             # Example: Add a new key-value pair or modify existing ones |             # Example: Add a new key-value pair or modify existing ones | ||||||
|             # data["modified"] = True  # Example modification |             # data["modified"] = True  # Example modification | ||||||
|             if "docs" in data: |             if "docs" in data: | ||||||
| 
 |  | ||||||
|                 data = {**data} |                 data = {**data} | ||||||
|                 data["messages"] = rag_messages( |                 data["messages"] = rag_messages( | ||||||
|                     data["docs"], |                     data["docs"], | ||||||
|  | @ -163,11 +163,11 @@ app.mount("/rag/api/v1", rag_app) | ||||||
| 
 | 
 | ||||||
| @app.get("/api/config") | @app.get("/api/config") | ||||||
| async def get_app_config(): | async def get_app_config(): | ||||||
| 
 |  | ||||||
|     return { |     return { | ||||||
|         "status": True, |         "status": True, | ||||||
|         "name": WEBUI_NAME, |         "name": WEBUI_NAME, | ||||||
|         "version": VERSION, |         "version": VERSION, | ||||||
|  |         "locale": CONFIG_DATA["ui"]["locale"], | ||||||
|         "images": images_app.state.ENABLED, |         "images": images_app.state.ENABLED, | ||||||
|         "default_models": webui_app.state.DEFAULT_MODELS, |         "default_models": webui_app.state.DEFAULT_MODELS, | ||||||
|         "default_prompt_suggestions": webui_app.state.DEFAULT_PROMPT_SUGGESTIONS, |         "default_prompt_suggestions": webui_app.state.DEFAULT_PROMPT_SUGGESTIONS, | ||||||
|  | @ -191,7 +191,6 @@ class ModelFilterConfigForm(BaseModel): | ||||||
| async def update_model_filter_config( | async def update_model_filter_config( | ||||||
|     form_data: ModelFilterConfigForm, user=Depends(get_admin_user) |     form_data: ModelFilterConfigForm, user=Depends(get_admin_user) | ||||||
| ): | ): | ||||||
| 
 |  | ||||||
|     app.state.MODEL_FILTER_ENABLED = form_data.enabled |     app.state.MODEL_FILTER_ENABLED = form_data.enabled | ||||||
|     app.state.MODEL_FILTER_LIST = form_data.models |     app.state.MODEL_FILTER_LIST = form_data.models | ||||||
| 
 | 
 | ||||||
|  | @ -231,7 +230,6 @@ async def update_webhook_url(form_data: UrlForm, user=Depends(get_admin_user)): | ||||||
| 
 | 
 | ||||||
| @app.get("/api/version") | @app.get("/api/version") | ||||||
| async def get_app_config(): | async def get_app_config(): | ||||||
| 
 |  | ||||||
|     return { |     return { | ||||||
|         "version": VERSION, |         "version": VERSION, | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  | @ -37,30 +37,36 @@ const createIsLoadingStore = (i18n: i18nType) => { | ||||||
| 	return isLoading; | 	return isLoading; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| i18next | export const initI18n = (defaultLocale: string) => { | ||||||
| 	.use( | 	let detectionOrder = defaultLocale | ||||||
| 		resourcesToBackend( | 		? ['querystring', 'localStorage'] | ||||||
| 			(language: string, namespace: string) => import(`./locales/${language}/${namespace}.json`) | 		: ['querystring', 'localStorage', 'navigator']; | ||||||
| 		) | 	let fallbackDefaultLocale = defaultLocale ? [defaultLocale] : ['en-US']; | ||||||
| 	) | 
 | ||||||
| 	.use(LanguageDetector) | 	const loadResource = (language: string, namespace: string) => | ||||||
| 	.init({ | 		import(`./locales/${language}/${namespace}.json`); | ||||||
| 		debug: false, | 
 | ||||||
| 		detection: { | 	i18next | ||||||
| 			order: ['querystring', 'localStorage', 'navigator'], | 		.use(resourcesToBackend(loadResource)) | ||||||
| 			caches: ['localStorage'], | 		.use(LanguageDetector) | ||||||
| 			lookupQuerystring: 'lang', | 		.init({ | ||||||
| 			lookupLocalStorage: 'locale' | 			debug: false, | ||||||
| 		}, | 			detection: { | ||||||
| 		fallbackLng: { | 				order: detectionOrder, | ||||||
| 			default: ['en-US'] | 				caches: ['localStorage'], | ||||||
| 		}, | 				lookupQuerystring: 'lang', | ||||||
| 		ns: 'translation', | 				lookupLocalStorage: 'locale' | ||||||
| 		returnEmptyString: false, | 			}, | ||||||
| 		interpolation: { | 			fallbackLng: { | ||||||
| 			escapeValue: false // not needed for svelte as it escapes by default
 | 				default: fallbackDefaultLocale | ||||||
| 		} | 			}, | ||||||
| 	}); | 			ns: 'translation', | ||||||
|  | 			returnEmptyString: false, | ||||||
|  | 			interpolation: { | ||||||
|  | 				escapeValue: false // not needed for svelte as it escapes by default
 | ||||||
|  | 			} | ||||||
|  | 		}); | ||||||
|  | }; | ||||||
| 
 | 
 | ||||||
| const i18n = createI18nStore(i18next); | const i18n = createI18nStore(i18next); | ||||||
| const isLoadingStore = createIsLoadingStore(i18next); | const isLoadingStore = createIsLoadingStore(i18next); | ||||||
|  |  | ||||||
|  | @ -11,7 +11,7 @@ | ||||||
| 	import '../tailwind.css'; | 	import '../tailwind.css'; | ||||||
| 	import 'tippy.js/dist/tippy.css'; | 	import 'tippy.js/dist/tippy.css'; | ||||||
| 	import { WEBUI_BASE_URL } from '$lib/constants'; | 	import { WEBUI_BASE_URL } from '$lib/constants'; | ||||||
| 	import i18n from '$lib/i18n'; | 	import i18n, { initI18n } from '$lib/i18n'; | ||||||
| 
 | 
 | ||||||
| 	setContext('i18n', i18n); | 	setContext('i18n', i18n); | ||||||
| 
 | 
 | ||||||
|  | @ -25,6 +25,11 @@ | ||||||
| 		if (backendConfig) { | 		if (backendConfig) { | ||||||
| 			// Save Backend Status to Store | 			// Save Backend Status to Store | ||||||
| 			await config.set(backendConfig); | 			await config.set(backendConfig); | ||||||
|  | 			if ($config.locale) { | ||||||
|  | 				initI18n($config.locale); | ||||||
|  | 			} else { | ||||||
|  | 				initI18n(); | ||||||
|  | 			} | ||||||
| 
 | 
 | ||||||
| 			await WEBUI_NAME.set(backendConfig.name); | 			await WEBUI_NAME.set(backendConfig.name); | ||||||
| 			console.log(backendConfig); | 			console.log(backendConfig); | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Ased Mammad
						Ased Mammad