add a language switcher fixes #352

This commit is contained in:
jonaswinkler
2021-01-15 12:50:34 +01:00
parent d71ebc6eb7
commit 1b559578a6
4 changed files with 125 additions and 21 deletions

View File

@@ -1,5 +1,7 @@
import { DOCUMENT } from '@angular/common';
import { Inject, Injectable, Renderer2, RendererFactory2 } from '@angular/core';
import { Meta } from '@angular/platform-browser';
import { CookieService } from 'ngx-cookie-service';
export interface PaperlessSettings {
key: string
@@ -34,7 +36,9 @@ export class SettingsService {
constructor(
private rendererFactory: RendererFactory2,
@Inject(DOCUMENT) private document
@Inject(DOCUMENT) private document,
private cookieService: CookieService,
private meta: Meta
) {
this.renderer = rendererFactory.createRenderer(null, null);
@@ -55,6 +59,36 @@ export class SettingsService {
}
getLanguageOptions() {
return [
{code: "", name: $localize`Use system language`},
{code: "en-us", name: `${$localize`English`} (English)`},
{code: "de", name: `${$localize`German`} (German)`},
{code: "nl", name: `${$localize`Dutch`} (Dutch)`},
{code: "fr", name: `${$localize`French`} (French)`}
]
}
private getLanguageCookieName() {
let prefix = ""
if (this.meta.getTag('name=cookie_prefix')) {
prefix = this.meta.getTag('name=cookie_prefix').content
}
return `${prefix || ''}django_language`
}
getLanguage(): string {
return this.cookieService.get(this.getLanguageCookieName())
}
setLanguage(language: string) {
if (language) {
this.cookieService.set(this.getLanguageCookieName(), language)
} else {
this.cookieService.delete(this.getLanguageCookieName())
}
}
get(key: string): any {
let setting = SETTINGS.find(s => s.key == key)