p-calendar 国际化(primeNg + i18next)
Internationalization of p-calendar (primeNg + i18next)
我正在使用名为 i18next 的国际化框架。我的组件之一是 p-calendar,但我不知道如何使用此框架将其国际化。有谁知道如何使用 i18next 将此组件国际化?如果有人知道不使用 i18next 的其他解决方案,我也可以使用。
- Angular版本:8.2
- PrimeNG 版本:8.1.1
PrimeNG 版本更新 >= 11
对较新版本的 PrimeNG 使用 i18N API。
创建翻译文件,例如“en.json”。
{
"primeng": {
"dayNames": ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
"dayNamesShort": ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
"dayNamesMin": ["Su","Mo","Tu","We","Th","Fr","Sa"],
"monthNames": ["January","February","March","April","May","June","July","August","September","October","November","December"],
"monthNamesShort": ["Jan", "Feb", "Mar", "Apr", "May", "Jun","Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
"today": "Today",
"weekHeader": "Wk"
}
并将该文件包含在您的 app.component.ts
import { Component, OnInit, OnDestroy } from '@angular/core';
import { PrimeNGConfig } from 'primeng/api';
import { TranslateService } from '@ngx-translate/core';
@Component({
selector: 'app-root',
templateUrl: './app.component.html'
})
export class AppComponent implements OnInit, OnDestroy {
constructor(private config: PrimeNGConfig, private translateService: TranslateService) {}
ngOnInit() {
this.translateService.setDefaultLang('en');
}
translate(lang: string) {
this.translateService.use(lang);
this.translateService.get('primeng').subscribe(res => this.config.setTranslation(res));
}
}
OLD(PrimeNG 版本 < 11)
对于 PrimeNG 日历,您可以在语言环境 属性 上添加本地化。
HTML:
<p-calendar [(ngModel)]="dateValue" [locale]="en"></p-calendar>
TS
ngOnInit() {
this.en = {
firstDayOfWeek: 0,
dayNames: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
dayNamesShort: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
dayNamesMin: ["Su","Mo","Tu","We","Th","Fr","Sa"],
monthNames: [ "January","February","March","April","May","June","July","August","September","October","November","December" ],
monthNamesShort: [ "Jan", "Feb", "Mar", "Apr", "May", "Jun","Jul", "Aug", "Sep", "Oct", "Nov", "Dec" ],
today: 'Today',
clear: 'Clear',
dateFormat: 'mm/dd/yy',
weekHeader: 'Wk'
};
}
我正在使用名为 i18next 的国际化框架。我的组件之一是 p-calendar,但我不知道如何使用此框架将其国际化。有谁知道如何使用 i18next 将此组件国际化?如果有人知道不使用 i18next 的其他解决方案,我也可以使用。
- Angular版本:8.2
- PrimeNG 版本:8.1.1
PrimeNG 版本更新 >= 11
对较新版本的 PrimeNG 使用 i18N API。
创建翻译文件,例如“en.json”。
{
"primeng": {
"dayNames": ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
"dayNamesShort": ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
"dayNamesMin": ["Su","Mo","Tu","We","Th","Fr","Sa"],
"monthNames": ["January","February","March","April","May","June","July","August","September","October","November","December"],
"monthNamesShort": ["Jan", "Feb", "Mar", "Apr", "May", "Jun","Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
"today": "Today",
"weekHeader": "Wk"
}
并将该文件包含在您的 app.component.ts
import { Component, OnInit, OnDestroy } from '@angular/core';
import { PrimeNGConfig } from 'primeng/api';
import { TranslateService } from '@ngx-translate/core';
@Component({
selector: 'app-root',
templateUrl: './app.component.html'
})
export class AppComponent implements OnInit, OnDestroy {
constructor(private config: PrimeNGConfig, private translateService: TranslateService) {}
ngOnInit() {
this.translateService.setDefaultLang('en');
}
translate(lang: string) {
this.translateService.use(lang);
this.translateService.get('primeng').subscribe(res => this.config.setTranslation(res));
}
}
OLD(PrimeNG 版本 < 11)
对于 PrimeNG 日历,您可以在语言环境 属性 上添加本地化。
HTML:
<p-calendar [(ngModel)]="dateValue" [locale]="en"></p-calendar>
TS
ngOnInit() {
this.en = {
firstDayOfWeek: 0,
dayNames: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
dayNamesShort: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
dayNamesMin: ["Su","Mo","Tu","We","Th","Fr","Sa"],
monthNames: [ "January","February","March","April","May","June","July","August","September","October","November","December" ],
monthNamesShort: [ "Jan", "Feb", "Mar", "Apr", "May", "Jun","Jul", "Aug", "Sep", "Oct", "Nov", "Dec" ],
today: 'Today',
clear: 'Clear',
dateFormat: 'mm/dd/yy',
weekHeader: 'Wk'
};
}