diff --git a/backend/config.py b/backend/config.py index 3a825f53a..4b4b5deac 100644 --- a/backend/config.py +++ b/backend/config.py @@ -674,6 +674,13 @@ ENABLE_SIGNUP = PersistentConfig( else os.environ.get("ENABLE_SIGNUP", "True").lower() == "true" ), ) + +DEFAULT_LOCALE = PersistentConfig( + "DEFAULT_LOCALE", + "ui.default_locale", + os.environ.get("DEFAULT_LOCALE", ""), +) + DEFAULT_MODELS = PersistentConfig( "DEFAULT_MODELS", "ui.default_models", os.environ.get("DEFAULT_MODELS", None) ) diff --git a/backend/main.py b/backend/main.py index dcd383f48..df3f884b3 100644 --- a/backend/main.py +++ b/backend/main.py @@ -101,6 +101,7 @@ from config import ( UPLOAD_DIR, CACHE_DIR, STATIC_DIR, + DEFAULT_LOCALE, ENABLE_OPENAI_API, ENABLE_OLLAMA_API, ENABLE_MODEL_FILTER, @@ -1722,18 +1723,11 @@ async def update_pipeline_valves( @app.get("/api/config") async def get_app_config(): - # Checking and Handling the Absence of 'ui' in CONFIG_DATA - - default_locale = "en-US" - if "ui" in CONFIG_DATA: - default_locale = CONFIG_DATA["ui"].get("default_locale", "en-US") - - # The Rest of the Function Now Uses the Variables Defined Above return { "status": True, "name": WEBUI_NAME, "version": VERSION, - "default_locale": default_locale, + "default_locale": str(DEFAULT_LOCALE), "default_models": webui_app.state.config.DEFAULT_MODELS, "default_prompt_suggestions": webui_app.state.config.DEFAULT_PROMPT_SUGGESTIONS, "features": { diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index 4409d3f05..68c1e1596 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -92,12 +92,17 @@ // Initialize i18n even if we didn't get a backend config, // so `/error` can show something that's not `undefined`. - const languages = await getLanguages(); - const browserLanguages = navigator.languages - ? navigator.languages - : [navigator.language || navigator.userLanguage]; - - initI18n(bestMatchingLanguage(languages, browserLanguages, backendConfig.default_locale)); + initI18n(); + if (!localStorage.locale) { + const languages = await getLanguages(); + const browserLanguages = navigator.languages + ? navigator.languages + : [navigator.language || navigator.userLanguage]; + const lang = backendConfig.default_locale + ? backendConfig.default_locale + : bestMatchingLanguage(languages, browserLanguages, 'en-US'); + $i18n.changeLanguage(lang); + } if (backendConfig) { // Save Backend Status to Store