javascript - Hur internationaliserar man ng-bootstrap datepicker?
I mitt projekt använder jag ng-bootstrap datePicker. Min datePicker-widget är mycket enkel: DEMO.
Men jag behöver internationalisera hans (behöver ställa in ryskt språk). Snälla hjälp mig.
js :
import {Component} from '@angular/core';
import {NgbDate, NgbCalendar} from '@ng-bootstrap/ng-bootstrap';
@Component({
selector: 'ngbd-datepicker-range',
templateUrl: './datepicker-range.html',
styles: [``]
})
export class NgbdDatepickerRange {
hoveredDate: NgbDate;
fromDate: NgbDate;
toDate: NgbDate;
constructor(calendar: NgbCalendar) {
this.fromDate = calendar.getToday();
this.toDate = calendar.getNext(calendar.getToday(), 'd', 10);
}
onDateSelection(date: NgbDate) {
if (!this.fromDate && !this.toDate) {
this.fromDate = date;
} else if (this.fromDate && !this.toDate && date.after(this.fromDate)) {
this.toDate = date;
} else {
this.toDate = null;
this.fromDate = date;
}
}
isHovered = (date: NgbDate) => this.fromDate && !this.toDate && this.hoveredDate && date.after(this.fromDate) && date.before(this.hoveredDate);
isInside = (date: NgbDate) => date.after(this.fromDate) && date.before(this.toDate);
isRange = (date: NgbDate) => date.equals(this.fromDate) || date.equals(this.toDate) || this.isInside(date) || this.isHovered(date)
}
Svar #1
Du kan enkelt använda:
import { LOCALE_ID } from '@angular/core';
import { registerLocaleData } from "@angular/common";
import localeRo from "@angular/common/locales/ro";
import localeRoExtra from "@angular/common/locales/extra/ro";
registerLocaleData(localeRo, "ro", localeRoExtra);
och sedan använd leverantören i @NgModule-dekoratören:
providers: [{ provide: LOCALE_ID, useValue: "ro-RO"}]
Det finns inget behov av NgbDatepickerI18n!
Ett fungerande exempel på tyska språket i Angular för ngbdatepicker finns på stackblitz: https://stackblitz.com/edit/angular-mezpyn-b6tm1r?file=app%2Fdatepicker-popup.module.ts
Svar #2
Okej här är lösningen: https://stackblitz.com/edit/angular-dd3vve?file=app/datepicker-range.ts
vad jag ändrade (använder denna demo som exempel):
// now class extend NgbDatepickerI18n
export class NgbdDatepickerRange extends NgbDatepickerI18n {
.
// call to super() in constructor
constructor(calendar: NgbCalendar) {
super()
.
// implement the abstract methods
getWeekdayShortName(weekday: number): string {return "td"};
getMonthShortName(month: number): string {return "mt"};
getMonthFullName(month: number): string {return "month"};
getDayAriaLabel(date: NgbDateStruct): string {return "e"};
.
// provide in component
@Component({
selector: 'ngbd-datepicker-range',
templateUrl: './datepicker-range.html',
providers: [{provide: NgbDatepickerI18n, useClass: NgbdDatepickerRange}],
du kommer behöva ändra metoden så att den returnerar användbara värden
