Angular2 DatePipe не форматируется в соответствии с языком браузера
Я использую Angular2 по умолчанию DatePipe для форматирования даты в соответствии с локалью / языком браузера.
В моем случае это всегда формат даты в соответствии с английским языком.
app.module.ts
{
provide: LOCALE_ID, useValue: "hi"
}
В моем собственном канале я создал объект DatePipe в конструкторе, используя DI.
myDatePipe.ts
public constructor(private translate: TranslateService,private datePipe: DatePipe, , @Inject(LOCALE_ID) locale: string)) {
console.log(locale); // This log string 'hi'
}
public transform(value: string, format: string) {
// 'shortTime' format always return value in '5:15 am' format.
// 'longDate' format always return value in '28 दिसंबर 2017' format.
return this.datePipe.transform(value, format);
}
Я зарегистрировал текущий примененный язык, зарегистрировав Locale_ID, и он вошел как 'привет'.
1 ответ
Лучше всего создать собственную трубу ShortDate и использовать службу перевода NGX, использовать язык браузера и использовать его для преобразования даты. Вот пример короткой трубы, которую я использую
Это Angular 6, поэтому я также использую новую функциональность formatDate, доступную в @angular/common,
import { Pipe, PipeTransform} from '@angular/core';
import { formatDate } from '@angular/common';
import { TranslateService } from '@ngx-translate/core';
@Pipe({
name: 'shortDate'
})
export class ShortDatePipe implements PipeTransform {
constructor(private translateService: TranslateService) { }
transform(value: string): string {
var language: string = this.translateService.getBrowserCultureLang();
console.log(language);
return (value == "" || value == null) ? "" : formatDate(value, 'shortDate', language);
}
}
если вы не используете angular6, вам нужно импортировать datePipe, поместить datepipe в ваш конструктор и использовать его преобразование
Как-то так (не проверено или не проверено, просто с моей головы)
import { DatePipe } from '@angular/common';
...
constructor(private translateService: TranslateService,
private datePipe: DatePipe ) { }
...
return this.datePipe.transform( value, 'shortDate',language);