diff --git a/apps/api/src/app/user/update-user-setting.dto.ts b/apps/api/src/app/user/update-user-setting.dto.ts index b97dd287e..f458294f8 100644 --- a/apps/api/src/app/user/update-user-setting.dto.ts +++ b/apps/api/src/app/user/update-user-setting.dto.ts @@ -9,6 +9,10 @@ export class UpdateUserSettingDto { @IsOptional() isRestrictedView?: boolean; + @IsString() + @IsOptional() + language?: string; + @IsString() @IsOptional() locale?: string; diff --git a/apps/client/src/app/core/auth.guard.ts b/apps/client/src/app/core/auth.guard.ts index 6161df1f2..2daf2fab7 100644 --- a/apps/client/src/app/core/auth.guard.ts +++ b/apps/client/src/app/core/auth.guard.ts @@ -72,7 +72,13 @@ export class AuthGuard implements CanActivate { }) ) .subscribe((user) => { - if ( + const userLanguage = user?.settings?.language; + + if (userLanguage && document.documentElement.lang !== userLanguage) { + window.location.href = `../${userLanguage}`; + resolve(false); + return; + } else if ( state.url.startsWith('/home') && user.settings.viewMode === ViewMode.ZEN ) { diff --git a/apps/client/src/app/pages/account/account-page.component.ts b/apps/client/src/app/pages/account/account-page.component.ts index 3d0533164..7c97fef6f 100644 --- a/apps/client/src/app/pages/account/account-page.component.ts +++ b/apps/client/src/app/pages/account/account-page.component.ts @@ -149,10 +149,6 @@ export class AccountPageComponent implements OnDestroy, OnInit { this.update(); } - public onChangeLanguage(aLanguage: string) { - window.location.href = `../${aLanguage}/account`; - } - public onChangeUserSetting(aKey: string, aValue: string) { this.dataService .putUserSetting({ [aKey]: aValue }) @@ -167,6 +163,14 @@ export class AccountPageComponent implements OnDestroy, OnInit { this.user = user; this.changeDetectorRef.markForCheck(); + + if (aKey === 'language') { + if (aValue) { + window.location.href = `../${aValue}/account`; + } else { + window.location.href = `../`; + } + } }); }); } diff --git a/apps/client/src/app/pages/account/account-page.html b/apps/client/src/app/pages/account/account-page.html index e72acd2b9..335ec69f6 100644 --- a/apps/client/src/app/pages/account/account-page.html +++ b/apps/client/src/app/pages/account/account-page.html @@ -120,8 +120,9 @@ + Deutsch English diff --git a/libs/common/src/lib/interfaces/user-settings.interface.ts b/libs/common/src/lib/interfaces/user-settings.interface.ts index d81f67f36..2fd2bbb2d 100644 --- a/libs/common/src/lib/interfaces/user-settings.interface.ts +++ b/libs/common/src/lib/interfaces/user-settings.interface.ts @@ -3,6 +3,7 @@ import { ViewMode } from '@prisma/client'; export interface UserSettings { baseCurrency?: string; isRestrictedView?: boolean; + language?: string; locale: string; viewMode?: ViewMode; }