Prechádzať zdrojové kódy

Merge pull request #3555 from open-webui/dev

fix: default locale
Timothy Jaeryang Baek 10 mesiacov pred
rodič
commit
824966ad4a
3 zmenil súbory, kde vykonal 20 pridanie a 14 odobranie
  1. 7 0
      backend/config.py
  2. 2 8
      backend/main.py
  3. 11 6
      src/routes/+layout.svelte

+ 7 - 0
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)
 )

+ 2 - 8
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": {

+ 11 - 6
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