今天早上起來,我正在happy的敲代碼,ng serve以後報了個大紅叉!緩存
formatDate(date: Date, format: string): string {
let local = this.getLocale();
// local.local = 'zh-cn'
let re = this.datePipe.transform(date, format, null, local.locale);
return re;
}
複製代碼
當我嘗試把zh-cn換成en時,代碼正常跑起來了,問題是你媽滿屏的鳥文!! 因而乎,我開始翻看ng源碼,發現了這個鳥東西!bash
// 緩存語言
export const LOCALE_DATA: {[localeId: string]: any} = {};
export function findLocaleData(locale: string): any {
const normalizedLocale = locale.toLowerCase().replace(/_/g, '-');
// 關鍵點在這裏
let match = LOCALE_DATA[normalizedLocale];
if (match) {
return match;
}
const parentLocale = normalizedLocale.split('-')[0];
match = LOCALE_DATA[parentLocale];
if (match) {
return match;
}
// 這尼瑪,不敢直視,直接內置,好吧,內置就內置吧,無論他了
if (parentLocale === 'en') {
return localeEn;
}
throw new Error(`Missing locale data for the locale "${locale}".`);
}
複製代碼
接着翻看,找到設置本地語言函數app
export function registerLocaleData(data: any, localeId?: string | any, extraData?: any): void {
if (typeof localeId !== 'string') {
extraData = localeId;
localeId = data[LocaleDataIndex.LocaleId];
}
localeId = localeId.toLowerCase().replace(/_/g, '-');
LOCALE_DATA[localeId] = data;
if (extraData) {
LOCALE_DATA[localeId][LocaleDataIndex.ExtraData] = extraData;
}
}
複製代碼
漢化語言包函數
function plural(n: number): number {
return 5;
}
export const extra = [
[
['午夜', '早上', '上午', '中午', '下午', '晚上', '凌晨'],
,
['午夜', '清晨', '上午', '中午', '下午', '晚上', '凌晨']
],
[['午夜', '早上', '上午', '中午', '下午', '晚上', '凌晨'], ,],
[
'00:00',
['05:00', '08:00'],
['08:00', '12:00'],
['12:00', '13:00'],
['13:00', '19:00'],
['19:00', '24:00'],
['00:00', '05:00']
]
];
export const zhcn = [
'zh-Hans',
[['上午', '下午'], ,],
,
[
['日', '一', '二', '三', '四', '五', '六'],
['週日', '週一', '週二', '週三', '週四', '週五', '週六'],
['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'],
['週日', '週一', '週二', '週三', '週四', '週五', '週六']
],
,
[
['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'],
[
'1月',
'2月',
'3月',
'4月',
'5月',
'6月',
'7月',
'8月',
'9月',
'10月',
'11月',
'12月'
],
[
'一月',
'二月',
'三月',
'四月',
'五月',
'六月',
'七月',
'八月',
'九月',
'十月',
'十一月',
'十二月'
]
],
,
[['公元前', '公元'], ,],
0,
[6, 0],
['y/M/d', 'y年M月d日', , 'y年M月d日EEEE'],
['ah:mm', 'ah:mm:ss', 'z ah:mm:ss', 'zzzz ah:mm:ss'],
['{1} {0}', , ,],
['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'],
['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'],
'¥',
'人民幣',
{
AUD: ['AU$', '$'],
CNY: ['¥', '¥'],
ILR: ['ILS'],
JPY: ['JP¥', '¥'],
KRW: ['₩', '₩'],
TWD: ['NT$'],
USD: ['US$', '$']
},
plural
];
複製代碼
註冊語言包,而後暢通無阻ui
import { zhcn, extra } from './zh-cn/index';
registerLocaleData(zhcn, 'zh-cn', extra);
複製代碼
keep learning!this