今天早上起来,我正在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源码,发现了这个鸟东西!
// 缓存语言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}".`);}复制代码
接着翻看,找到设置本地语言函数
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];复制代码
注册语言包,然后畅通无阻
import { zhcn, extra } from './zh-cn/index';registerLocaleData(zhcn, 'zh-cn', extra);复制代码
小结
keep learning!