156 lines
		
	
	
		
			6.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
			
		
		
	
	
			156 lines
		
	
	
		
			6.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
| declare var Intl: any;
 | |
| 
 | |
| declare type Path = string;
 | |
| declare type Locale = string;
 | |
| declare type FallbackLocale = string | string[] | false | { [locale: string]: string[] };
 | |
| declare type LocaleMessage = string | LocaleMessageObject | LocaleMessageArray;
 | |
| declare type LocaleMessageObject = { [key: Path]: LocaleMessage };
 | |
| declare type LocaleMessageArray = Array<LocaleMessage>;
 | |
| declare type LocaleMessages = { [key: Locale]: LocaleMessageObject };
 | |
| 
 | |
| // This options is the same as Intl.DateTimeFormat constructor options:
 | |
| // http://www.ecma-international.org/ecma-402/2.0/#sec-intl-datetimeformat-constructor
 | |
| declare type DateTimeFormatOptions = {
 | |
|   year?: 'numeric' | '2-digit',
 | |
|   month?: 'numeric' | '2-digit' | 'narrow' | 'short' | 'long',
 | |
|   day?: 'numeric' | '2-digit',
 | |
|   hour?: 'numeric' | '2-digit',
 | |
|   minute?: 'numeric' | '2-digit',
 | |
|   second?: 'numeric' | '2-digit',
 | |
|   weekday?: 'narrow' | 'short' | 'long',
 | |
|   hour12?: boolean,
 | |
|   era?: 'narrow' | 'short' | 'long',
 | |
|   timeZone?: string, // IANA time zone
 | |
|   timeZoneName?: 'short' | 'long',
 | |
|   localeMatcher?: 'lookup' | 'best fit',
 | |
|   formatMatcher?: 'basic' | 'best fit'
 | |
| };
 | |
| declare type DateTimeFormat = { [key: string]: DateTimeFormatOptions };
 | |
| declare type DateTimeFormats = { [key: Locale]: DateTimeFormat };
 | |
| 
 | |
| // This options is the same as Intl.NumberFormat constructor options:
 | |
| // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/NumberFormat
 | |
| declare type NumberFormatOptions = {
 | |
|   style?: 'decimal' | 'currency' | 'percent',
 | |
|   currency?: string, // ISO 4217 currency codes
 | |
|   currencyDisplay?: 'symbol' | 'code' | 'name',
 | |
|   useGrouping?: boolean,
 | |
|   minimumIntegerDigits?: number,
 | |
|   minimumFractionDigits?: number,
 | |
|   maximumFractionDigits?: number,
 | |
|   minimumSignificantDigits?: number,
 | |
|   maximumSignificantDigits?: number,
 | |
|   localeMatcher?: 'lookup' | 'best fit',
 | |
|   formatMatcher?: 'basic' | 'best fit'
 | |
| };
 | |
| declare type NumberFormat = { [key: string]: NumberFormatOptions };
 | |
| declare type NumberFormats = { [key: Locale]: NumberFormat };
 | |
| declare type Modifiers = { [key: string]: (str: string) => string };
 | |
| 
 | |
| declare type TranslateResult = string | LocaleMessages;
 | |
| declare type DateTimeFormatResult = string;
 | |
| declare type NumberFormatResult = string;
 | |
| declare type MissingHandler = (locale: Locale, key: Path, vm?: any) => string | void;
 | |
| declare type PostTranslationHandler = (str: string, key?: string) => string;
 | |
| declare type GetChoiceIndex = (choice: number, choicesLength: number) => number
 | |
| declare type ComponentInstanceCreatedListener = (newI18n: I18n, rootI18n: I18n) => void;
 | |
| 
 | |
| declare type FormattedNumberPartType = 'currency' | 'decimal' | 'fraction' | 'group' | 'infinity' | 'integer' | 'literal' | 'minusSign' | 'nan' | 'plusSign' | 'percentSign';
 | |
| declare type FormattedNumberPart = {
 | |
|   type: FormattedNumberPartType,
 | |
|   value: string,
 | |
| };
 | |
| // This array is the same as Intl.NumberFormat.formatToParts() return value:
 | |
| // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/NumberFormat/formatToParts#Return_value
 | |
| declare type NumberFormatToPartsResult = Array<FormattedNumberPart>;
 | |
| 
 | |
| declare type WarnHtmlInMessageLevel = 'off' | 'warn' | 'error';
 | |
| 
 | |
| declare type I18nOptions = {
 | |
|   locale?: Locale,
 | |
|   fallbackLocale?: FallbackLocale,
 | |
|   messages?: LocaleMessages,
 | |
|   dateTimeFormats?: DateTimeFormats,
 | |
|   numberFormats?: NumberFormats,
 | |
|   formatter?: Formatter,
 | |
|   missing?: MissingHandler,
 | |
|   modifiers?: Modifiers,
 | |
|   root?: I18n, // for internal
 | |
|   fallbackRoot?: boolean,
 | |
|   formatFallbackMessages?: boolean,
 | |
|   sync?: boolean,
 | |
|   silentTranslationWarn?: boolean | RegExp,
 | |
|   silentFallbackWarn?: boolean | RegExp,
 | |
|   pluralizationRules?: PluralizationRules,
 | |
|   preserveDirectiveContent?: boolean,
 | |
|   warnHtmlInMessage?: WarnHtmlInMessageLevel,
 | |
|   sharedMessages?: LocaleMessage,
 | |
|   postTranslation?: PostTranslationHandler,
 | |
|   componentInstanceCreatedListener?: ComponentInstanceCreatedListener,
 | |
| };
 | |
| 
 | |
| declare type IntlAvailability = {
 | |
|   dateTimeFormat: boolean,
 | |
|   numberFormat: boolean
 | |
| };
 | |
| 
 | |
| declare type PluralizationRules = {
 | |
|   [lang: string]: GetChoiceIndex,
 | |
| }
 | |
| 
 | |
| declare interface I18n {
 | |
|   static install: () => void, // for Vue plugin interface
 | |
|   static version: string,
 | |
|   static availabilities: IntlAvailability,
 | |
|   get vm (): any, // for internal
 | |
|   get locale (): Locale,
 | |
|   set locale (locale: Locale): void,
 | |
|   get fallbackLocale (): FallbackLocale,
 | |
|   set fallbackLocale (locale: FallbackLocale): void,
 | |
|   get messages (): LocaleMessages,
 | |
|   get dateTimeFormats (): DateTimeFormats,
 | |
|   get numberFormats (): NumberFormats,
 | |
|   get availableLocales (): Locale[],
 | |
|   get missing (): ?MissingHandler,
 | |
|   set missing (handler: MissingHandler): void,
 | |
|   get formatter (): Formatter,
 | |
|   set formatter (formatter: Formatter): void,
 | |
|   get formatFallbackMessages (): boolean,
 | |
|   set formatFallbackMessages (fallback: boolean): void,
 | |
|   get silentTranslationWarn (): boolean | RegExp,
 | |
|   set silentTranslationWarn (silent: boolean | RegExp): void,
 | |
|   get silentFallbackWarn (): boolean | RegExp,
 | |
|   set silentFallbackWarn (slient: boolean | RegExp): void,
 | |
|   get pluralizationRules (): PluralizationRules,
 | |
|   set pluralizationRules (rules: PluralizationRules): void,
 | |
|   get preserveDirectiveContent (): boolean,
 | |
|   set preserveDirectiveContent (preserve: boolean): void,
 | |
|   get warnHtmlInMessage (): WarnHtmlInMessageLevel,
 | |
|   set warnHtmlInMessage (level: WarnHtmlInMessageLevel): void,
 | |
|   get postTranslation (): ?PostTranslationHandler,
 | |
|   set postTranslation (handler: PostTranslationHandler): void,
 | |
| 
 | |
|   getLocaleMessage (locale: Locale): LocaleMessageObject,
 | |
|   setLocaleMessage (locale: Locale, message: LocaleMessageObject): void,
 | |
|   mergeLocaleMessage (locale: Locale, message: LocaleMessageObject): void,
 | |
|   t (key: Path, ...values: any): TranslateResult,
 | |
|   i (key: Path, locale: Locale, values: Object): TranslateResult,
 | |
|   tc (key: Path, choice?: number, ...values: any): TranslateResult,
 | |
|   te (key: Path, locale?: Locale): boolean,
 | |
|   getDateTimeFormat (locale: Locale): DateTimeFormat,
 | |
|   setDateTimeFormat (locale: Locale, format: DateTimeFormat): void,
 | |
|   mergeDateTimeFormat (locale: Locale, format: DateTimeFormat): void,
 | |
|   d (value: number | Date, ...args: any): DateTimeFormatResult,
 | |
|   getNumberFormat (locale: Locale): NumberFormat,
 | |
|   setNumberFormat (locale: Locale, format: NumberFormat): void,
 | |
|   mergeNumberFormat (locale: Locale, format: NumberFormat): void,
 | |
|   n (value: number, ...args: any): NumberFormatResult,
 | |
|   getChoiceIndex: GetChoiceIndex,
 | |
|   pluralizationRules: PluralizationRules,
 | |
|   preserveDirectiveContent: boolean
 | |
| };
 | |
| 
 | |
| declare interface Formatter {
 | |
|   interpolate (message: string, values: any, path: string): (Array<any> | null)
 | |
| };
 |