@formatjs/ecma402-abstract
Version:
A collection of implementation for ECMAScript abstract operations
66 lines (65 loc) • 1.85 kB
TypeScript
import { type LocaleData } from "./core.js";
type LanguageTag = string;
type RegionCode = string;
type ScriptCode = string;
type CurrencyCode = string;
type CalendarCode = string;
type DateTimeFieldCode = string;
export interface DisplayNamesData {
/**
* Note that for style fields, `short` and `narrow` might not exist.
* At runtime, the fallback order will be narrow -> short -> long.
*/
types: {
/**
* Maps language subtag like `zh-CN` to their display names.
*/
language: {
dialect: {
narrow: Record<LanguageTag, string>;
short: Record<LanguageTag, string>;
long: Record<LanguageTag, string>;
};
standard: {
narrow: Record<LanguageTag, string>;
short: Record<LanguageTag, string>;
long: Record<LanguageTag, string>;
};
};
region: {
narrow: Record<RegionCode, string>;
short: Record<RegionCode, string>;
long: Record<RegionCode, string>;
};
script: {
narrow: Record<ScriptCode, string>;
short: Record<ScriptCode, string>;
long: Record<ScriptCode, string>;
};
currency: {
narrow: Record<CurrencyCode, string>;
short: Record<CurrencyCode, string>;
long: Record<CurrencyCode, string>;
};
calendar: {
narrow: Record<CalendarCode, string>;
short: Record<CalendarCode, string>;
long: Record<CalendarCode, string>;
};
dateTimeField: {
narrow: Record<DateTimeFieldCode, string>;
short: Record<DateTimeFieldCode, string>;
long: Record<DateTimeFieldCode, string>;
};
};
/**
* Not in spec, but we need this to display both language and region in display name.
* e.g. zh-Hans-SG + "{0}({1})" -> 简体中文(新加坡)
* Here {0} is replaced by language display name and {1} is replaced by region display name.
*/
patterns: {
locale: string;
};
}
export type DisplayNamesLocaleData = LocaleData<DisplayNamesData>;
export {};