Skip to content

Instantly share code, notes, and snippets.

@whisher
Created November 2, 2018 18:20
Show Gist options
  • Save whisher/292023b4594a78a220b7b56519304fe6 to your computer and use it in GitHub Desktop.
Save whisher/292023b4594a78a220b7b56519304fe6 to your computer and use it in GitHub Desktop.
Service
import { Injectable } from '@angular/core';
import {TranslateService, LangChangeEvent} from '@ngx-translate/core';
export function extract(s: string) {
return s;
}
@Injectable({
providedIn: 'root'
})
export class I18nService {
defaultLanguage: string = 'en';
supportedLanguages: string[];
constructor(private translate: TranslateService) {
const cultureLang = translate.getBrowserCultureLang();
console.log('cultureLang',cultureLang);
const lang = this.defaultLanguage;
translate.addLangs(['en-US', 'it-IT']);
translate.setDefaultLang(lang);
translate.onLangChange
.subscribe((event: LangChangeEvent) => { console.log('event',event.lang); });
}
use(language: string) {
this.translate.use(language);
}
get language(): string{
return this.translate.currentLang || this.defaultLanguage;
}
onChange(){
return this.translate.onLangChange;
}
}
Pipe
import {DatePipe} from '@angular/common';
import {Pipe, PipeTransform} from '@angular/core';
import {map} from 'rxjs/operators';
import { I18nService } from './i18n.service';
@Pipe({
name: 'date'
})
export class MyDate implements PipeTransform {
constructor(private i18n: I18nService) {}
public transform(value: any, pattern: string = 'mediumDate'): any {
let lang = this.i18n.language;
this.i18n.use(lang);
return this.i18n.onChange()
.pipe(
map(ev => {
lang = ev.lang
let ngPipe = new DatePipe(lang);
return ngPipe.transform(value, pattern);
})
)
}
}
Usage
<p>The hero's birthday is {{ birthday | date:'shortDate' | async }}</p>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment