inject lang in document to match current locale
authorRigel Kent <sendmemail@rigelk.eu>
Tue, 2 Jun 2020 13:21:36 +0000 (15:21 +0200)
committerChocobozzz <chocobozzz@cpy.re>
Thu, 4 Jun 2020 07:05:44 +0000 (09:05 +0200)
client/src/app/app.component.ts
client/src/app/header/search-typeahead.component.html

index a464e90fac65fee5d3c711025b9eea93b75cac0f..aba91aad2b528610f9dd5f8ac576f3387097ffe5 100644 (file)
@@ -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 })
     })
index 710268664322ea2d4628830202588d2a81a0b4e4..6d931db20e753c77710e686019215e7467a0e323 100644 (file)
@@ -2,6 +2,7 @@
   <input
     type="text" id="search-video" name="search-video" #searchVideo i18n-placeholder placeholder="Search videos, channels…"
     [(ngModel)]="search" (ngModelChange)="onSearchChange()" (keyup)="handleKey($event)" (keydown.enter)="doSearch()"
+    aria-label="Search"
   >
   <span class="icon icon-search" (click)="doSearch()"></span>