diff --git a/console/src/app/app.component.ts b/console/src/app/app.component.ts
index 62b0f8e60c..c73ae17693 100644
--- a/console/src/app/app.component.ts
+++ b/console/src/app/app.component.ts
@@ -220,7 +220,9 @@ export class AppComponent implements OnDestroy {
this.authService.user.subscribe(userprofile => {
this.profile = userprofile;
- const lang = userprofile.preferredLanguage.match(/en|de/) ? userprofile.preferredLanguage : 'en';
+ const cropped = navigator.language.split('-')[0] ?? 'en';
+ const fallbackLang = cropped.match(/en|de/) ? cropped : 'en';
+ const lang = userprofile.preferredLanguage.match(/en|de/) ? userprofile.preferredLanguage : fallbackLang;
this.translate.use(lang);
this.document.documentElement.lang = lang;
});
diff --git a/console/src/app/app.module.ts b/console/src/app/app.module.ts
index b72fe30318..5a783d3833 100644
--- a/console/src/app/app.module.ts
+++ b/console/src/app/app.module.ts
@@ -40,6 +40,7 @@ import { GrpcAuthService } from './services/grpc-auth.service';
import { GrpcService } from './services/grpc.service';
import { AuthInterceptor } from './services/interceptors/auth.interceptor';
import { GRPC_INTERCEPTORS } from './services/interceptors/grpc-interceptor';
+import { I18nInterceptor } from './services/interceptors/i18n.interceptor';
import { OrgInterceptor } from './services/interceptors/org.interceptor';
import { RefreshService } from './services/refresh.service';
import { StatehandlerProcessorService, StatehandlerProcessorServiceImpl } from './services/statehandler-processor.service';
@@ -156,6 +157,11 @@ const authConfig: AuthConfig = {
multi: true,
useClass: AuthInterceptor,
},
+ {
+ provide: GRPC_INTERCEPTORS,
+ multi: true,
+ useClass: I18nInterceptor,
+ },
{
provide: GRPC_INTERCEPTORS,
multi: true,
diff --git a/console/src/app/modules/add-member-dialog/member-create-dialog.module.ts b/console/src/app/modules/add-member-dialog/member-create-dialog.module.ts
index 9c2671c6b4..b7909253e8 100644
--- a/console/src/app/modules/add-member-dialog/member-create-dialog.module.ts
+++ b/console/src/app/modules/add-member-dialog/member-create-dialog.module.ts
@@ -2,8 +2,10 @@ import { CommonModule } from '@angular/common';
import { NgModule } from '@angular/core';
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
import { MatButtonModule } from '@angular/material/button';
+import { MatChipsModule } from '@angular/material/chips';
import { MatDialogModule } from '@angular/material/dialog';
import { MatFormFieldModule } from '@angular/material/form-field';
+import { MatInputModule } from '@angular/material/input';
import { MatSelectModule } from '@angular/material/select';
import { TranslateModule } from '@ngx-translate/core';
import { SearchUserAutocompleteModule } from 'src/app/modules/search-user-autocomplete/search-user-autocomplete.module';
@@ -21,6 +23,8 @@ import { MemberCreateDialogComponent } from './member-create-dialog.component';
CommonModule,
MatDialogModule,
MatButtonModule,
+ MatChipsModule,
+ MatInputModule,
TranslateModule,
MatFormFieldModule,
MatSelectModule,
diff --git a/console/src/app/modules/idp-table/idp-table.component.html b/console/src/app/modules/idp-table/idp-table.component.html
index 0e1ec3ebf9..f1750e8fec 100644
--- a/console/src/app/modules/idp-table/idp-table.component.html
+++ b/console/src/app/modules/idp-table/idp-table.component.html
@@ -4,12 +4,12 @@