我做了一点stackblitz
在 app.module 我添加
import '@angular/common/locales/global/es-MX';
在提供者中:
providers:[{ provide: LOCALE_ID, useValue: 'es-MX' }]
我还需要在 polyfills.ts 中添加这一行(但我认为那是因为是堆栈闪电战)
import '@angular/localize/init'; //<---see if you need add this line
另一种方法是创建一个 CustomDateAdapter 和 CustomDateParserFormatter (如果您想输入日期,例如 dd/mm/yyyy 和从 NgbDatepickerI18n 扩展的 DatepickerEsMX 以“翻译”月份名称和工作日名称(DateAdapter 和 DatePArser在old SO 中有解释,extends NgbDatePickerI18 的使用在example of the docs 中有解释(*)
providers: [{ provide: LOCALE_ID, useValue: 'es-MX' },
{provide: NgbDateAdapter, useClass: CustomDateAdapter},
{provide: NgbDateParserFormatter, useClass: CustomDateParserFormatter}
{ provide: NgbDatepickerI18n, useClass: DatepickerEsMx },
(*) DatePickerEsMX 可以像
@Injectable()
export class DatepickerEsMX extends NgbDatepickerI18n {
constructor(@Inject(LOCALE_ID) private localeId: string) {
super();
}
getWeekdayShortName(weekday: number): string {
return I18N_VALUES.es.weekdays[weekday - 1];
}
getMonthShortName(month: number): string {
return I18N_VALUES.es.months[month - 1];
}
getMonthFullName(month: number): string {
return I18N_VALUES.es.fullMonths[month - 1];
}
getDayAriaLabel(date: NgbDateStruct): string {
return `${date.day}-${date.month}-${date.year}`;
}
}