From 140ea386dea49220f4cdd5b67027e8d30eee1b06 Mon Sep 17 00:00:00 2001 From: Rigel Kent Date: Tue, 2 Jun 2020 15:21:36 +0200 Subject: inject lang in document to match current locale --- client/src/app/app.component.ts | 17 ++++++++++++++--- client/src/app/header/search-typeahead.component.html | 1 + 2 files changed, 15 insertions(+), 3 deletions(-) (limited to 'client/src/app') diff --git a/client/src/app/app.component.ts b/client/src/app/app.component.ts index a464e90fa..aba91aad2 100644 --- a/client/src/app/app.component.ts +++ b/client/src/app/app.component.ts @@ -1,13 +1,13 @@ -import { Component, OnInit, ViewChild, AfterViewInit } from '@angular/core' +import { Component, OnInit, ViewChild, AfterViewInit, Inject } from '@angular/core' import { DomSanitizer, SafeHtml } from '@angular/platform-browser' import { Event, GuardsCheckStart, NavigationEnd, Router, Scroll } from '@angular/router' import { AuthService, RedirectService, ServerService, ThemeService } from '@app/core' -import { is18nPath } from '../../../shared/models/i18n' +import { is18nPath, getShortLocale } from '../../../shared/models/i18n' import { ScreenService } from '@app/shared/misc/screen.service' import { filter, map, pairwise, first } from 'rxjs/operators' import { Hotkey, HotkeysService } from 'angular2-hotkeys' import { I18n } from '@ngx-translate/i18n-polyfill' -import { PlatformLocation, ViewportScroller } from '@angular/common' +import { PlatformLocation, ViewportScroller, DOCUMENT } from '@angular/common' import { PluginService } from '@app/core/plugins/plugin.service' import { HooksService } from '@app/core/plugins/hooks.service' import { NgbModal } from '@ng-bootstrap/ng-bootstrap' @@ -42,6 +42,7 @@ export class AppComponent implements OnInit, AfterViewInit { private serverConfig: ServerConfig constructor ( + @Inject(DOCUMENT) private document: Document, private i18n: I18n, private viewportScroller: ViewportScroller, private router: Router, @@ -170,6 +171,16 @@ export class AppComponent implements OnInit, AfterViewInit { filter(pathname => !pathname || pathname === '/' || is18nPath(pathname)) ).subscribe(() => this.redirectService.redirectToHomepage(true)) + navigationEndEvent.pipe( + map(() => window.location.pathname), + ).subscribe(pathname => { + if (is18nPath(pathname)) { + this.document.documentElement.lang = getShortLocale(pathname.split('/')[1]) + } else { + this.document.documentElement.lang = 'en' + } + }) + navigationEndEvent.subscribe(e => { this.hooks.runAction('action:router.navigation-end', 'common', { path: e.url }) }) diff --git a/client/src/app/header/search-typeahead.component.html b/client/src/app/header/search-typeahead.component.html index 710268664..6d931db20 100644 --- a/client/src/app/header/search-typeahead.component.html +++ b/client/src/app/header/search-typeahead.component.html @@ -2,6 +2,7 @@ -- cgit v1.2.3