2020-08-24 19:43:54 -04:00
/ * ! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
Copyright ( c ) Microsoft Corporation . All rights reserved .
Licensed under the Apache License , Version 2.0 ( the "License" ) ; you may not use
this file except in compliance with the License . You may obtain a copy of the
License at http : //www.apache.org/licenses/LICENSE-2.0
THIS CODE IS PROVIDED ON AN * AS IS * BASIS , WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND , EITHER EXPRESS OR IMPLIED , INCLUDING WITHOUT LIMITATION ANY IMPLIED
WARRANTIES OR CONDITIONS OF TITLE , FITNESS FOR A PARTICULAR PURPOSE ,
MERCHANTABLITY OR NON - INFRINGEMENT .
See the Apache Version 2.0 License for specific language governing permissions
and limitations under the License .
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * /
/// <reference no-default-lib="true"/>
declare namespace Intl {
/ * *
2021-05-27 19:33:11 -04:00
* [ Unicode BCP 47 Locale Identifiers ] ( https : //unicode.org/reports/tr35/#Unicode_Language_and_Locale_Identifiers) definition.
2020-08-24 19:43:54 -04:00
*
* [ MDN ] ( https : //developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl#locales_argument).
* /
2021-05-27 19:33:11 -04:00
type UnicodeBCP47LocaleIdentifier = string ;
2020-08-24 19:43:54 -04:00
/ * *
* Unit to use in the relative time internationalized message .
*
* [ MDN ] ( https : //developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/RelativeTimeFormat/format#Parameters).
* /
type RelativeTimeFormatUnit =
2021-12-09 17:12:21 -05:00
| "year"
| "years"
| "quarter"
| "quarters"
| "month"
| "months"
| "week"
| "weeks"
| "day"
| "days"
| "hour"
| "hours"
| "minute"
| "minutes"
| "second"
| "seconds" ;
2020-08-24 19:43:54 -04:00
/ * *
* The locale matching algorithm to use .
*
* [ MDN ] ( https : //developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Intl#Locale_negotiation).
* /
type RelativeTimeFormatLocaleMatcher = "lookup" | "best fit" ;
/ * *
* The format of output message .
*
* [ MDN ] ( https : //developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/RelativeTimeFormat/RelativeTimeFormat#Parameters).
* /
type RelativeTimeFormatNumeric = "always" | "auto" ;
/ * *
* The length of the internationalized message .
*
* [ MDN ] ( https : //developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/RelativeTimeFormat/RelativeTimeFormat#Parameters).
* /
type RelativeTimeFormatStyle = "long" | "short" | "narrow" ;
2021-12-09 17:12:21 -05:00
/ * *
* [ BCP 47 language tag ] ( http : //tools.ietf.org/html/rfc5646) definition.
*
* [ MDN ] ( https : //developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl#locales_argument).
* /
type BCP47LanguageTag = string ;
2022-05-31 20:19:18 -04:00
/ * *
* The locale ( s ) to use
*
* [ MDN ] ( https : //developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl#locales_argument).
* /
type LocalesArgument = UnicodeBCP47LocaleIdentifier | Locale | ( UnicodeBCP47LocaleIdentifier | Locale ) [ ] | undefined ;
2020-08-24 19:43:54 -04:00
/ * *
* An object with some or all of properties of ` options ` parameter
* of ` Intl.RelativeTimeFormat ` constructor .
*
* [ MDN ] ( https : //developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/RelativeTimeFormat/RelativeTimeFormat#Parameters).
* /
interface RelativeTimeFormatOptions {
2021-12-09 17:12:21 -05:00
/** The locale matching algorithm to use. For information about this option, see [Intl page](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Intl#Locale_negotiation). */
2020-08-24 19:43:54 -04:00
localeMatcher? : RelativeTimeFormatLocaleMatcher ;
2021-12-09 17:12:21 -05:00
/** The format of output message. */
2020-08-24 19:43:54 -04:00
numeric? : RelativeTimeFormatNumeric ;
2021-12-09 17:12:21 -05:00
/** The length of the internationalized message. */
2020-08-24 19:43:54 -04:00
style? : RelativeTimeFormatStyle ;
}
/ * *
* An object with properties reflecting the locale
* and formatting options computed during initialization
2021-12-09 17:12:21 -05:00
* of the ` Intl.RelativeTimeFormat ` object
2020-08-24 19:43:54 -04:00
*
* [ MDN ] ( https : //developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/RelativeTimeFormat/resolvedOptions#Description).
* /
interface ResolvedRelativeTimeFormatOptions {
2021-05-27 19:33:11 -04:00
locale : UnicodeBCP47LocaleIdentifier ;
2020-08-24 19:43:54 -04:00
style : RelativeTimeFormatStyle ;
numeric : RelativeTimeFormatNumeric ;
numberingSystem : string ;
}
/ * *
* An object representing the relative time format in parts
* that can be used for custom locale - aware formatting .
*
* [ MDN ] ( https : //developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/RelativeTimeFormat/formatToParts#Using_formatToParts).
* /
interface RelativeTimeFormatPart {
type : string ;
value : string ;
unit? : RelativeTimeFormatUnit ;
}
interface RelativeTimeFormat {
/ * *
* Formats a value and a unit according to the locale
* and formatting options of the given
* [ ` Intl.RelativeTimeFormat ` ] ( https : //developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/RelativeTimeFormat)
* object .
*
* While this method automatically provides the correct plural forms ,
* the grammatical form is otherwise as neutral as possible .
2021-12-09 17:12:21 -05:00
*
2020-08-24 19:43:54 -04:00
* It is the caller ' s responsibility to handle cut - off logic
* such as deciding between displaying "in 7 days" or "in 1 week" .
* This API does not support relative dates involving compound units .
* e . g "in 5 days and 4 hours" .
*
* @param value - Numeric value to use in the internationalized relative time message
*
2021-12-09 17:12:21 -05:00
* @param unit - [ Unit ] ( https : //tc39.es/ecma402/#sec-singularrelativetimeunit) to use in the relative time internationalized message.
2020-08-24 19:43:54 -04:00
*
* @throws ` RangeError ` if ` unit ` was given something other than ` unit ` possible values
*
2021-12-09 17:12:21 -05:00
* @returns { string } Internationalized relative time message as string
2020-08-24 19:43:54 -04:00
*
* [ MDN ] ( https : //developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/RelativeTimeFormat/format).
* /
2021-12-09 17:12:21 -05:00
format ( value : number , unit : RelativeTimeFormatUnit ) : string ;
2020-08-24 19:43:54 -04:00
/ * *
2021-12-09 17:12:21 -05:00
* Returns an array of objects representing the relative time format in parts that can be used for custom locale - aware formatting .
2020-08-24 19:43:54 -04:00
*
* @param value - Numeric value to use in the internationalized relative time message
*
2021-12-09 17:12:21 -05:00
* @param unit - [ Unit ] ( https : //tc39.es/ecma402/#sec-singularrelativetimeunit) to use in the relative time internationalized message.
2020-08-24 19:43:54 -04:00
*
* @throws ` RangeError ` if ` unit ` was given something other than ` unit ` possible values
*
* [ MDN ] ( https : //developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/RelativeTimeFormat/formatToParts).
* /
2021-12-09 17:12:21 -05:00
formatToParts ( value : number , unit : RelativeTimeFormatUnit ) : RelativeTimeFormatPart [ ] ;
2020-08-24 19:43:54 -04:00
/ * *
* Provides access to the locale and options computed during initialization of this ` Intl.RelativeTimeFormat ` object .
*
* [ MDN ] ( https : //developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/RelativeTimeFormat/resolvedOptions).
* /
resolvedOptions ( ) : ResolvedRelativeTimeFormatOptions ;
}
/ * *
* The [ ` Intl.RelativeTimeFormat ` ] ( https : //developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/RelativeTimeFormat)
* object is a constructor for objects that enable language - sensitive relative time formatting .
*
* [ Compatibility ] ( https : //developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/RelativeTimeFormat#Browser_compatibility).
* /
const RelativeTimeFormat : {
/ * *
2021-12-09 17:12:21 -05:00
* Creates [ Intl . RelativeTimeFormat ] ( https : //developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RelativeTimeFormat) objects
2020-08-24 19:43:54 -04:00
*
* @param locales - A string with a [ BCP 47 language tag ] ( http : //tools.ietf.org/html/rfc5646), or an array of such strings.
* For the general form and interpretation of the locales argument ,
* see the [ ` Intl ` page ] ( https : //developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl#Locale_identification_and_negotiation).
*
* @param options - An [ object ] ( https : //developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/RelativeTimeFormat/RelativeTimeFormat#Parameters)
2021-12-09 17:12:21 -05:00
* with some or all of options of ` RelativeTimeFormatOptions ` .
2020-08-24 19:43:54 -04:00
*
* @returns [ Intl . RelativeTimeFormat ] ( https : //developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RelativeTimeFormat) object.
*
* [ MDN ] ( https : //developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/RelativeTimeFormat/RelativeTimeFormat).
* /
new (
2021-05-27 19:33:11 -04:00
locales? : UnicodeBCP47LocaleIdentifier | UnicodeBCP47LocaleIdentifier [ ] ,
2020-08-24 19:43:54 -04:00
options? : RelativeTimeFormatOptions ,
) : RelativeTimeFormat ;
/ * *
* Returns an array containing those of the provided locales
* that are supported in date and time formatting
* without having to fall back to the runtime ' s default locale .
*
* @param locales - A string with a [ BCP 47 language tag ] ( http : //tools.ietf.org/html/rfc5646), or an array of such strings.
* For the general form and interpretation of the locales argument ,
* see the [ ` Intl ` page ] ( https : //developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl#Locale_identification_and_negotiation).
*
* @param options - An [ object ] ( https : //developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/RelativeTimeFormat/RelativeTimeFormat#Parameters)
* with some or all of options of the formatting .
*
* @returns An array containing those of the provided locales
* that are supported in date and time formatting
* without having to fall back to the runtime ' s default locale .
*
* [ MDN ] ( https : //developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/RelativeTimeFormat/supportedLocalesOf).
* /
supportedLocalesOf (
2021-05-27 19:33:11 -04:00
locales? : UnicodeBCP47LocaleIdentifier | UnicodeBCP47LocaleIdentifier [ ] ,
2020-08-24 19:43:54 -04:00
options? : RelativeTimeFormatOptions ,
2021-05-27 19:33:11 -04:00
) : UnicodeBCP47LocaleIdentifier [ ] ;
2020-08-24 19:43:54 -04:00
} ;
interface NumberFormatOptions {
2021-12-09 17:12:21 -05:00
compactDisplay ? : "short" | "long" | undefined ;
notation ? : "standard" | "scientific" | "engineering" | "compact" | undefined ;
2022-03-01 15:44:43 -05:00
signDisplay ? : "auto" | "never" | "always" | "exceptZero" | undefined ;
2021-12-09 17:12:21 -05:00
unit? : string | undefined ;
unitDisplay ? : "short" | "long" | "narrow" | undefined ;
2022-03-01 15:44:43 -05:00
currencyDisplay? : string | undefined ;
currencySign? : string | undefined ;
2020-08-24 19:43:54 -04:00
}
interface ResolvedNumberFormatOptions {
2021-12-09 17:12:21 -05:00
compactDisplay ? : "short" | "long" ;
notation ? : "standard" | "scientific" | "engineering" | "compact" ;
2022-03-01 15:44:43 -05:00
signDisplay ? : "auto" | "never" | "always" | "exceptZero" ;
2020-08-24 19:43:54 -04:00
unit? : string ;
2021-12-09 17:12:21 -05:00
unitDisplay ? : "short" | "long" | "narrow" ;
2022-03-01 15:44:43 -05:00
currencyDisplay? : string ;
currencySign? : string ;
2020-08-24 19:43:54 -04:00
}
2021-02-24 23:16:19 -05:00
interface DateTimeFormatOptions {
2021-12-09 17:12:21 -05:00
calendar? : string | undefined ;
dayPeriod ? : "narrow" | "short" | "long" | undefined ;
numberingSystem? : string | undefined ;
dateStyle ? : "full" | "long" | "medium" | "short" | undefined ;
timeStyle ? : "full" | "long" | "medium" | "short" | undefined ;
hourCycle ? : "h11" | "h12" | "h23" | "h24" | undefined ;
}
type LocaleHourCycleKey = "h12" | "h23" | "h11" | "h24" ;
type LocaleCollationCaseFirst = "upper" | "lower" | "false" ;
interface LocaleOptions {
/** A string containing the language, and the script and region if available. */
baseName? : string ;
/** The part of the Locale that indicates the locale's calendar era. */
2021-02-24 23:16:19 -05:00
calendar? : string ;
2021-12-09 17:12:21 -05:00
/** Flag that defines whether case is taken into account for the locale's collation rules. */
caseFirst? : LocaleCollationCaseFirst ;
/** The collation type used for sorting */
collation? : string ;
/** The time keeping format convention used by the locale. */
hourCycle? : LocaleHourCycleKey ;
/** The primary language subtag associated with the locale. */
language? : string ;
/** The numeral system used by the locale. */
2021-02-24 23:16:19 -05:00
numberingSystem? : string ;
2021-12-09 17:12:21 -05:00
/** Flag that defines whether the locale has special collation handling for numeric characters. */
numeric? : boolean ;
/** The region of the world (usually a country) associated with the locale. Possible values are region codes as defined by ISO 3166-1. */
region? : string ;
/** The script used for writing the particular language used in the locale. Possible values are script codes as defined by ISO 15924. */
script? : string ;
}
interface Locale extends LocaleOptions {
2022-05-31 20:19:18 -04:00
/** A string containing the language, and the script and region if available. */
baseName : string ;
/** The primary language subtag associated with the locale. */
language : string ;
2021-12-09 17:12:21 -05:00
/** Gets the most likely values for the language, script, and region of the locale based on existing values. */
maximize ( ) : Locale ;
/** Attempts to remove information about the locale that would be added by calling `Locale.maximize()`. */
minimize ( ) : Locale ;
/** Returns the locale's full locale identifier string. */
toString ( ) : BCP47LanguageTag ;
2021-02-24 23:16:19 -05:00
}
2021-12-09 17:12:21 -05:00
/ * *
* Constructor creates [ Intl . Locale ] ( https : //developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Locale)
* objects
*
* @param tag - A string with a [ BCP 47 language tag ] ( http : //tools.ietf.org/html/rfc5646).
* For the general form and interpretation of the locales argument ,
* see the [ ` Intl ` page ] ( https : //developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl#Locale_identification_and_negotiation).
*
* @param options - An [ object ] ( https : //developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Locale/Locale#Parameters) with some or all of options of the locale.
*
* @returns [ Intl . Locale ] ( https : //developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Locale) object.
*
* [ MDN ] ( https : //developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Locale).
* /
const Locale : {
2022-05-31 20:19:18 -04:00
new ( tag : BCP47LanguageTag | Locale , options? : LocaleOptions ) : Locale ;
2021-12-09 17:12:21 -05:00
} ;
2022-05-31 20:19:18 -04:00
type DisplayNamesFallback =
| "code"
| "none" ;
type DisplayNamesType =
| "language"
| "region"
| "script"
| "calendar"
| "dateTimeField"
| "currency" ;
type DisplayNamesLanguageDisplay =
| "dialect"
| "standard" ;
interface DisplayNamesOptions {
localeMatcher? : RelativeTimeFormatLocaleMatcher ;
style? : RelativeTimeFormatStyle ;
type : DisplayNamesType ;
languageDisplay? : DisplayNamesLanguageDisplay ;
fallback? : DisplayNamesFallback ;
}
interface ResolvedDisplayNamesOptions {
2022-03-01 15:44:43 -05:00
locale : UnicodeBCP47LocaleIdentifier ;
2021-12-09 17:12:21 -05:00
style : RelativeTimeFormatStyle ;
2022-05-31 20:19:18 -04:00
type : DisplayNamesType ;
fallback : DisplayNamesFallback ;
languageDisplay? : DisplayNamesLanguageDisplay ;
2021-12-09 17:12:21 -05:00
}
interface DisplayNames {
/ * *
* Receives a code and returns a string based on the locale and options provided when instantiating
* [ ` Intl.DisplayNames() ` ] ( https : //developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DisplayNames)
*
* @param code The ` code ` to provide depends on the ` type ` passed to display name during creation :
* - If the type is ` "region" ` , code should be either an [ ISO - 3166 two letters region code ] ( https : //www.iso.org/iso-3166-country-codes.html),
* or a [ three digits UN M49 Geographic Regions ] ( https : //unstats.un.org/unsd/methodology/m49/).
* - If the type is ` "script" ` , code should be an [ ISO - 15924 four letters script code ] ( https : //unicode.org/iso15924/iso15924-codes.html).
* - If the type is ` "language" ` , code should be a ` languageCode ` [ "-" ` scriptCode ` ] [ "-" ` regionCode ` ] * ( "-" ` variant ` )
* subsequence of the unicode_language_id grammar in [ UTS 35 ' s Unicode Language and Locale Identifiers grammar ] ( https : //unicode.org/reports/tr35/#Unicode_language_identifier).
* ` languageCode ` is either a two letters ISO 639 - 1 language code or a three letters ISO 639 - 2 language code .
* - If the type is ` "currency" ` , code should be a [ 3 - letter ISO 4217 currency code ] ( https : //www.iso.org/iso-4217-currency-codes.html).
*
* [ MDN ] ( https : //developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DisplayNames/of).
* /
2022-03-01 15:44:43 -05:00
of ( code : string ) : string | undefined ;
2021-12-09 17:12:21 -05:00
/ * *
* Returns a new object with properties reflecting the locale and style formatting options computed during the construction of the current
* [ ` Intl/DisplayNames ` ] ( https : //developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DisplayNames) object.
*
* [ MDN ] ( https : //developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DisplayNames/resolvedOptions).
* /
2022-05-31 20:19:18 -04:00
resolvedOptions ( ) : ResolvedDisplayNamesOptions ;
2021-12-09 17:12:21 -05:00
}
/ * *
* The [ ` Intl.DisplayNames() ` ] ( https : //developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DisplayNames)
* object enables the consistent translation of language , region and script display names .
*
* [ Compatibility ] ( https : //developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DisplayNames#browser_compatibility).
* /
const DisplayNames : {
prototype : DisplayNames ;
/ * *
* @param locales A string with a BCP 47 language tag , or an array of such strings .
* For the general form and interpretation of the ` locales ` argument , see the [ Intl ] ( https : //developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl#locale_identification_and_negotiation)
* page .
*
* @param options An object for setting up a display name .
*
* [ MDN ] ( https : //developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DisplayNames/DisplayNames).
* /
2022-05-31 20:19:18 -04:00
new ( locales : LocalesArgument , options : DisplayNamesOptions ) : DisplayNames ;
2021-12-09 17:12:21 -05:00
/ * *
* Returns an array containing those of the provided locales that are supported in display names without having to fall back to the runtime ' s default locale .
*
* @param locales A string with a BCP 47 language tag , or an array of such strings .
* For the general form and interpretation of the ` locales ` argument , see the [ Intl ] ( https : //developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl#locale_identification_and_negotiation)
* page .
*
* @param options An object with a locale matcher .
*
* @returns An array of strings representing a subset of the given locale tags that are supported in display names without having to fall back to the runtime ' s default locale .
*
* [ MDN ] ( https : //developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DisplayNames/supportedLocalesOf).
* /
2022-05-31 20:19:18 -04:00
supportedLocalesOf ( locales? : LocalesArgument , options ? : { localeMatcher? : RelativeTimeFormatLocaleMatcher } ) : BCP47LanguageTag [ ] ;
2021-12-09 17:12:21 -05:00
} ;
2020-08-24 19:43:54 -04:00
}