最近在寫Angular2的項(xiàng)目中需要使用到的日歷插件捂贿,于是選用了ng-bootstrap,其中的datepicker插件默認(rèn)是英文的亡问,我開始使用的ng-bootstrap版本是1.1.2的版本,在這個(gè)版本里,我簡單粗暴的修改了ng-bootstrap的datepicker-i18n.js的源碼盟猖,其中
var WEEKDAYS_SHORT = ['Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su'];
var MONTHS_SHORT = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
var MONTHS_FULL = [
'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November',
'December'
];
上面這幾行代碼在node_modules下的@ng-bootstrap中的datepicker文件夾下的datepicker-i18n.js中,把上面的英文縮寫修改為對應(yīng)的中文就簡單粗暴的實(shí)現(xiàn)了日歷控件的漢化(不過不建議修改源碼)
var WEEKDAYS_SHORT = ['一', '二', '三', '四', '五', '六', '日'];
var MONTHS_SHORT = ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'];
var MONTHS_FULL = ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'];
可是最近ng-bootstrap更新了版本换棚,更新到了2.0.0式镐,于是在源碼中取消了這幾個(gè)定義,這樣一來就再也不能通過修改源碼來實(shí)現(xiàn)漢化了固蚤,新版本使用了angular中的國際化
import { FormStyle, getLocaleDayNames, getLocaleMonthNames, TranslationWidth } from '@angular/common';
通過修改這幾個(gè)angular/common的文件實(shí)現(xiàn)國際化
所以娘汞,現(xiàn)在使用ng-bootstrap的日歷控件要想把英文換成中文,有兩種方法:一夕玩、angular自帶的國際化你弦,可以去angular官方文檔查看,其實(shí)我也沒實(shí)現(xiàn)過燎孟,但是文檔上確實(shí)有國際化的方法禽作;二、在使用日期插件的組件中修改ng-bootstrap的三個(gè)方法getWeekdayShortName揩页、getMonthShortName旷偿、getMonthFullName,這三個(gè)方法是NgbDatepickerI18n開放出來的爆侣,而ng-bootstrap源碼中也是通過這三個(gè)方法來修改語言的萍程,下面是使用方法:
首先、在使用了ng-bootstrap中的日歷插件的組件中引入NgbDatepickerI18n
import { NgbDatepicker, NgbDatepickerI18n } from '@ng-bootstrap/ng-bootstrap';
然后累提、設(shè)置語言尘喝,我是按照1.1.2版本中的方式修改的
constructor(
private i18n: NgbDatepickerI18n
) {
this.i18n.getWeekdayShortName = function(weekday) {
return ['一', '二', '三', '四', '五', '六', '日'][weekday - 1];
};
this.i18n.getMonthShortName = function(month) {
return ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'][month - 1];
};
}
最后、關(guān)于修改ng-bootstrap的語言我其實(shí)花費(fèi)了好幾天的時(shí)間斋陪,百度和google都用了朽褪,沒有一個(gè)清晰的解決思路,又說用moment.js的无虚,也有說引入中文國際化文件angular-locale_zh-cn.js 的缔赠,我個(gè)人感覺這兩種方法應(yīng)該都能實(shí)現(xiàn)需求,但是我不會(huì)(尷尬臉)友题,所以我偶爾發(fā)現(xiàn)了這種取巧的辦法嗤堰,感覺還挺好用(奸笑臉)
如果本篇文章幫助到了你,請動(dòng)動(dòng)手指點(diǎn)個(gè)贊吧度宦!