Browse Source

locale "codes"

Adam Shaw 7 năm trước cách đây
mục cha
commit
a82925fb25

+ 1 - 1
src/datelib/formatting-native.ts

@@ -82,7 +82,7 @@ function separateExtendedSettings(settings) {
 // General Formatting Utils
 
 function formatZonedMarker(date: ZonedMarker, context: DateFormattingContext, standardSettings) {
-  let s = date.marker.toLocaleString(context.locale.query, standardSettings)
+  let s = date.marker.toLocaleString(context.locale.codeArg, standardSettings)
 
   if (standardSettings.timeZoneName && date.timeZoneOffset != null && context.timeZone !== 'UTC') {
     s = s.replace(/UTC|GMT/, formatTimeZoneOffset(date.timeZoneOffset))

+ 2 - 2
src/datelib/formatting.ts

@@ -26,7 +26,7 @@ export interface VerboseFormattingArg {
   start: ExpandedZoneMarker
   end?: ExpandedZoneMarker
   timeZone: string
-  localeIds: string[]
+  localeCodes: string[]
 }
 
 export interface DateFormattingContext {
@@ -102,7 +102,7 @@ export function createVerboseFormattingArg(start: ZonedMarker, end: ZonedMarker,
     start: startInfo,
     end: endInfo,
     timeZone: context.timeZone,
-    localeIds: context.locale.ids
+    localeCodes: context.locale.codes
   }
 }
 

+ 23 - 19
src/datelib/locale.ts

@@ -1,10 +1,10 @@
 import { mergeProps } from '../util/object'
 
-export type LocaleQuery = string | string[] | null
+export type LocaleCodeArg = string | string[] | null
 
 export interface Locale {
-  query: LocaleQuery
-  ids: string[]
+  codeArg: LocaleCodeArg
+  codes: string[]
   week: { dow: number, doy: number }
   simpleNumberFormat: Intl.NumberFormat
   options: any
@@ -36,38 +36,38 @@ const RAW_EN_LOCALE = {
 
 let rawMap = {}
 
-export function getLocale(query: LocaleQuery): Locale {
-  if (query === 'auto') {
-    query = null
+export function getLocale(codeArg: LocaleCodeArg): Locale {
+  if (codeArg === 'auto') {
+    codeArg = null
   }
 
-  let ids
-  if (Array.isArray(query)) {
-    ids = query
-  } else if (typeof query === 'string') {
-    ids = [ query ]
+  let codes
+  if (Array.isArray(codeArg)) {
+    codes = codeArg
+  } else if (typeof codeArg === 'string') {
+    codes = [ codeArg ]
   } else {
-    ids = []
+    codes = []
   }
 
-  let raw = getRawLocale(ids) || {}
+  let raw = getRawLocale(codes) || {}
   let merged = mergeProps([ RAW_EN_LOCALE, raw ], [ 'buttonText' ])
 
   let week = merged.week
   delete merged.week
 
   return {
-    query,
-    ids,
+    codeArg,
+    codes,
     week,
-    simpleNumberFormat: new Intl.NumberFormat(query),
+    simpleNumberFormat: new Intl.NumberFormat(codeArg),
     options: merged
   }
 }
 
-function getRawLocale(ids: string[]) {
-  for (let i = 0; i < ids.length; i++) {
-    let parts = ids[i].toLocaleLowerCase().split('-')
+function getRawLocale(codes: string[]) {
+  for (let i = 0; i < codes.length; i++) {
+    let parts = codes[i].toLocaleLowerCase().split('-')
 
     for (let j = parts.length; j > 0; j--) {
       let simpleId = parts.slice(0, j).join('-')
@@ -84,4 +84,8 @@ export function defineLocale(simpleId: string, rawData) {
   rawMap[simpleId] = rawData
 }
 
+export function getLocaleCodes() {
+  return Object.keys(rawMap)
+}
+
 defineLocale('en', RAW_EN_LOCALE)

+ 1 - 1
src/datelib/moment.ts

@@ -15,7 +15,7 @@ registerCmdFormatter('moment', function(cmdStr: string, arg: VerboseFormattingAr
     mom = (moment as any).tz(arg.date.array, arg.timeZone)
   }
 
-  mom.locale(arg.localeIds[0])
+  mom.locale(arg.localeCodes[0])
 
   return mom.format(cmdStr)
 })

+ 1 - 1
src/exports.ts

@@ -126,5 +126,5 @@ export {
   wholeDivideDurations, greatestDurationDenominator
 } from './datelib/duration'
 export { DateEnv } from './datelib/env'
-export { getLocale } from './datelib/locale'
+export { getLocale, getLocaleCodes } from './datelib/locale'
 export { createFormatter } from './datelib/formatting'