]> git.ipfire.org Git - thirdparty/paperless-ngx.git/commitdiff
pull frontend lang setting from db if set 919/head
authorMichael Shamoon <4887959+shamoon@users.noreply.github.com>
Wed, 18 May 2022 09:41:15 +0000 (02:41 -0700)
committerMichael Shamoon <4887959+shamoon@users.noreply.github.com>
Wed, 18 May 2022 09:41:15 +0000 (02:41 -0700)
src-ui/src/app/services/settings.service.ts
src/documents/views.py

index 6ab52d08664d70f323112bcc0a6587f9c156301a..14d2617896e20a931094c90608a054fe1eacd869 100644 (file)
@@ -65,6 +65,9 @@ export class SettingsService {
       tap((uisettings) => {
         Object.assign(this.settings, uisettings.settings)
         this.maybeMigrateSettings()
+        // to update lang cookie
+        if (this.settings['language']?.length)
+          this.setLanguage(this.settings['language'])
         this.displayName = uisettings.display_name.trim()
       })
     )
index e718d5c4394faad99f6125cabdfb54188c4b72cb..ebdb9f445093dd1c74f89a5e1dbcdd20b6956035 100644 (file)
@@ -83,12 +83,18 @@ logger = logging.getLogger("paperless.api")
 class IndexView(TemplateView):
     template_name = "index.html"
 
-    def get_language(self):
+    def get_frontend_language(self):
+        if hasattr(
+            self.request.user,
+            "ui_settings",
+        ) and self.request.user.ui_settings.settings.get("language"):
+            lang = self.request.user.ui_settings.settings.get("language")
+        else:
+            lang = get_language()
         # This is here for the following reason:
         # Django identifies languages in the form "en-us"
         # However, angular generates locales as "en-US".
         # this translates between these two forms.
-        lang = get_language()
         if "-" in lang:
             first = lang[: lang.index("-")]
             second = lang[lang.index("-") + 1 :]
@@ -101,16 +107,18 @@ class IndexView(TemplateView):
         context["cookie_prefix"] = settings.COOKIE_PREFIX
         context["username"] = self.request.user.username
         context["full_name"] = self.request.user.get_full_name()
-        context["styles_css"] = f"frontend/{self.get_language()}/styles.css"
-        context["runtime_js"] = f"frontend/{self.get_language()}/runtime.js"
-        context["polyfills_js"] = f"frontend/{self.get_language()}/polyfills.js"
-        context["main_js"] = f"frontend/{self.get_language()}/main.js"
+        context["styles_css"] = f"frontend/{self.get_frontend_language()}/styles.css"
+        context["runtime_js"] = f"frontend/{self.get_frontend_language()}/runtime.js"
+        context[
+            "polyfills_js"
+        ] = f"frontend/{self.get_frontend_language()}/polyfills.js"
+        context["main_js"] = f"frontend/{self.get_frontend_language()}/main.js"
         context[
             "webmanifest"
-        ] = f"frontend/{self.get_language()}/manifest.webmanifest"  # noqa: E501
+        ] = f"frontend/{self.get_frontend_language()}/manifest.webmanifest"  # noqa: E501
         context[
             "apple_touch_icon"
-        ] = f"frontend/{self.get_language()}/apple-touch-icon.png"  # noqa: E501
+        ] = f"frontend/{self.get_frontend_language()}/apple-touch-icon.png"  # noqa: E501
         return context