11import { Injectable , Inject , PLATFORM_ID } from '@angular/core' ;
22import { DOCUMENT , isPlatformBrowser , isPlatformServer } from '@angular/common' ;
33import { REQUEST } from '@nguniversal/express-engine/tokens' ;
4- import { TranslateService as NGXTranslateService } from '@ngx-translate/core' ;
4+ import {
5+ TranslateService as NGXTranslateService ,
6+ MissingTranslationHandler ,
7+ MissingTranslationHandlerParams ,
8+ } from '@ngx-translate/core' ;
59import { MetaService } from '@ngx-meta/core' ;
610import { Observable , of } from 'rxjs' ;
711
@@ -10,21 +14,22 @@ import { AppStorage } from '@shared/for-storage/universal.inject';
1014import { ILang } from './translates.interface' ;
1115
1216const LANG_LIST : ILang [ ] = [
13- { ' code' : 'ru' , ' name' : 'Русский' , ' culture' : 'ru-RU' } ,
14- { ' code' : 'en' , ' name' : 'English' , ' culture' : 'en-US' }
17+ { code : 'ru' , name : 'Русский' , culture : 'ru-RU' } ,
18+ { code : 'en' , name : 'English' , culture : 'en-US' } ,
1519] ;
1620const LANG_DEFAULT : ILang = LANG_LIST [ 0 ] ;
1721const STORAGE_LANG_NAME : string = 'langCode' ;
1822
1923@Injectable ( )
2024export class TranslatesService {
21- constructor ( @Inject ( PLATFORM_ID ) private _platformId : Object ,
22- @Inject ( DOCUMENT ) private _document : any ,
23- @Inject ( REQUEST ) private _request : Request ,
24- @Inject ( NGXTranslateService ) private _translate : NGXTranslateService ,
25- @Inject ( MetaService ) private _meta : MetaService ,
26- @Inject ( AppStorage ) private _appStorage : Storage
27- ) { }
25+ constructor (
26+ @Inject ( PLATFORM_ID ) private _platformId : Object ,
27+ @Inject ( DOCUMENT ) private _document : any ,
28+ @Inject ( REQUEST ) private _request : Request ,
29+ @Inject ( NGXTranslateService ) private _translate : NGXTranslateService ,
30+ @Inject ( MetaService ) private _meta : MetaService ,
31+ @Inject ( AppStorage ) private _appStorage : Storage ,
32+ ) { }
2833
2934 public initLanguage ( ) : Promise < any > {
3035 return new Promise ( ( resolve : Function ) => {
@@ -46,8 +51,13 @@ export class TranslatesService {
4651 }
4752 if ( isPlatformServer ( this . _platformId ) ) {
4853 try {
49- const reqLangList : string [ ] = this . _request . headers [ 'accept-language' ] . split ( ';' ) [ 0 ] . split ( ',' ) ;
50- language = LANG_LIST . find ( ( lang : ILang ) => reqLangList . indexOf ( lang . code ) !== - 1 || reqLangList . indexOf ( lang . culture ) !== - 1 ) ;
54+ const reqLangList : string [ ] = this . _request . headers [ 'accept-language' ]
55+ . split ( ';' ) [ 0 ]
56+ . split ( ',' ) ;
57+ language = LANG_LIST . find (
58+ ( lang : ILang ) =>
59+ reqLangList . indexOf ( lang . code ) !== - 1 || reqLangList . indexOf ( lang . culture ) !== - 1 ,
60+ ) ;
5161 } catch ( err ) {
5262 language = LANG_DEFAULT ;
5363 }
@@ -85,3 +95,12 @@ export class TranslatesService {
8595 return this . _translate . currentLang ;
8696 }
8797}
98+
99+ export class CommonMissingTranslationHandler implements MissingTranslationHandler {
100+ handle ( params : MissingTranslationHandlerParams ) {
101+ if ( params . key . match ( / \w + \. \w + / ) && ! params . translateService . translations [ 'ru' ] [ params . key ] ) {
102+ console . warn ( `Нехватает перевода для "${ params . key } "` ) ;
103+ }
104+ return params . key ;
105+ }
106+ }
0 commit comments