diff --git a/Makefile b/Makefile index 116c307..8883444 100644 --- a/Makefile +++ b/Makefile @@ -1,2 +1,3 @@ all: ecmarkup numberformat_proposed.html numberformat_proposed_out.html + ecmarkup locales-currencies-tz.html locales-currencies-tz_out.html diff --git a/locales-currencies-tz.html b/locales-currencies-tz.html index 5259fba..9483bd7 100644 --- a/locales-currencies-tz.html +++ b/locales-currencies-tz.html @@ -172,7 +172,7 @@
- The IsWellFormedUnitIdentifier abstract operation verifies that the _unitIdentifier_ argument (which must be a String value) represents a well-formed UTS #35 unit identifier. The following steps are taken: + The IsWellFormedUnitIdentifier abstract operation verifies that the _unitIdentifier_ argument (which must be a String value) represents a well-formed unit identifier as defined in UTS #35, Part 2, Section 6. In addition to obeying the UTS #35 unit identifier syntax, _unitIdentifier_ must be one of the identifiers anointed in the Validity Data as described in UTS #35, Part 1, Section 3.11; the list may change over time. The following steps are taken:
+ This clause describes the String values used in the ECMAScript 2019 Internationalization API Specification to identify locales, currencies, time zones, and measurement units. + +
+ +
+ The String values used to identify locales, currencies, and time zones are interpreted in a case-insensitive manner, treating the Unicode Basic Latin characters "A"
to "Z"
(U+0041 to U+005A) as equivalent to the corresponding Basic Latin characters "a"
to "z"
(U+0061 to U+007A). No other case folding equivalences are applied. When mapping to upper case, a mapping shall be used that maps characters in the range "a"
to "z"
(U+0061 to U+007A) to the corresponding characters in the range "A"
to "Z"
(U+0041 to U+005A) and maps no other characters to the latter range.
+
+
+ EXAMPLES "ß"
(U+00DF) must not match or be mapped to "SS"
(U+0053, U+0053). "ı"
(U+0131) must not match or be mapped to "I"
(U+0049).
+
+
+ The ECMAScript 2019 Internationalization API Specification identifies locales using language tags as defined by IETF BCP 47 (RFCs 5646 and 4647 or their successors), which may include extensions such as those registered through RFC 6067. Their canonical form is specified in RFC 5646 section 4.5 or its successor. + +
+ ++ BCP 47 language tags that meet those validity criteria of RFC 5646 section 2.2.9 that can be verified without reference to the IANA Language Subtag Registry are considered structurally valid. All structurally valid language tags are valid for use with the APIs defined by this standard. However, the set of locales and thus language tags that an implementation supports with adequate localizations is implementation dependent. The constructors Collator, NumberFormat, DateTimeFormat, and PluralRules map the language tags used in requests to locales supported by their respective implementations. + +
+ + +
+ This standard uses the term "Unicode locale extension sequence"
for any substring of a language tag that is not part of a private use subtag sequence, starts with a separator "-"
and the singleton "u"
, and includes the maximum sequence of following non-singleton subtags and their preceding "-"
separators.
+
+
+ The IsStructurallyValidLanguageTag abstract operation verifies that the locale argument (which must be a String value) + +
+ ++ The abstract operation returns true if locale can be generated from the ABNF grammar in section 2.1 of the RFC, starting with Language-Tag, and does not contain duplicate variant or singleton subtags (other than as a private use subtag). It returns false otherwise. Terminal value characters in the grammar are interpreted as the Unicode equivalents of the ASCII octet values given. + +
+
+ The CanonicalizeLanguageTag abstract operation returns the canonical and case-regularized form of the locale argument (which must be a String value that is a structurally valid BCP 47 language tag as verified by the "extlang form"
, nor shall it reorder variant subtags.
+
+
+ The specifications for extensions to BCP 47 language tags, such as RFC 6067, may include canonicalization rules for the extension subtag sequences they define that go beyond the canonicalization rules of RFC 5646 section 4.5. Implementations are allowed, but not required, to apply these additional rules. + +
+
+ The DefaultLocale abstract operation returns a String value representing the structurally valid (
+ The ECMAScript 2019 Internationalization API Specification identifies currencies using 3-letter currency codes as defined by ISO 4217. Their canonical form is upper case. + +
+ ++ All well-formed 3-letter ISO 4217 currency codes are allowed. However, the set of combinations of currency code and language tag for which localized currency symbols are available is implementation dependent. Where a localized currency symbol is not available, the ISO 4217 currency code is used for formatting. + +
+ ++ The IsWellFormedCurrencyCode abstract operation verifies that the currency argument (which must be a String value) represents a well-formed 3-letter ISO currency code. The following steps are taken: + +
+ +"A"
to "Z"
(U+0041 to U+005A), return + The ECMAScript 2019 Internationalization API Specification identifies time zones using the Zone and Link names of the IANA Time Zone Database. Their canonical form is the corresponding Zone name in the casing used in the IANA Time Zone Database. + +
+ ++ All registered Zone and Link names are allowed. Implementations must recognize all such names, and use best available current and historical information about their offsets from UTC and their daylight saving time rules in calculations. However, the set of combinations of time zone name and language tag for which localized time zone names are available is implementation dependent. + +
+ ++ The IsValidTimeZoneName abstract operation verifies that the timeZone argument (which must be a String value) represents a valid Zone or Link name of the IANA Time Zone Database. + +
+
+ The abstract operation returns true if timeZone, converted to upper case as described in
+ The CanonicalizeTimeZoneName abstract operation returns the canonical and case-regularized form of the timeZone argument (which must be a String value that is a valid time zone name as verified by the
"backward"
file of the IANA Time Zone Database."Etc/UTC"
or "Etc/GMT"
, return "UTC"
.+ The Intl.DateTimeFormat constructor allows this time zone name; if the time zone is not specified, the host environment's current time zone is used. Implementations shall support UTC and the host environment's current time zone (if different from UTC) in formatting. + +
+
+ The DefaultTimeZone abstract operation returns a String value representing the valid (
+ The ECMAScript 2019 Internationalization API Specification identifies measurement units using a unit identifier as defined by Unicode Technical Standard #35, Part 2, Section 6. Their canonical form is a string containing all lowercase letters with at least one hyphen. + +
+ ++ All well-formed unit identifiers are allowed. However, the set of combinations of unit identifier and language tag for which localized names and symbols are available is implementation dependent. Where a localized name or symbol is not available, the unit identifier itself is used for formatting. + +
+ ++ The IsWellFormedUnitIdentifier abstract operation verifies that the unitIdentifier argument (which must be a String value) represents a well-formed unit identifier as defined in UTS #35, Part 2, Section 6. In addition to obeying the UTS #35 unit identifier syntax, unitIdentifier must be one of the identifiers anointed in the Validity Data as described in UTS #35, Part 1, Section 3.11; the list may change over time. The following steps are taken: + +
+ +"a"
to "z"
(U+0061 to U+007A) and is not "-"
(U+002D), return "-"
, return "-"
, return "-"
characters directly adjacent to one another, return "percent"
, let x be 100 × x."{"
, 0 »)."}"
, beginIndex »)."literal"
, [[Value]]: literal } as the last element of result."number"
, then"nan"
, [[Value]]: n } as the last element of result."infinity"
, [[Value]]: n } as the last element of result."Numbering System"
column of "."
, 0 »)."integer"
, [[Value]]: integerGroup } as the last element of result."group"
, [[Value]]: groupSepSymbol } as the last element of result."integer"
, [[Value]]: integer } as the last element of result."plusSign"
, then"plusSign"
, [[Value]]: plusSignSymbol } as the last element of result."minusSign"
, then"minusSign"
, [[Value]]: minusSignSymbol } as the last element of result."compactSymbol"
, then"{compactSymbol}"
placeholder."compact"
, [[Value]]: compactSymbol } as the last element of result."compactName"
, then"{compactName}"
placeholder."compact"
, [[Value]]: compactName } as the last element of result."scientificSeparator"
, then"exponentSeparator"
, [[Value]]: scientificSeparator } as the last element of result."scientificExponent"
, then"exponentMinusSign"
, [[Value]]: minusSignSymbol } as the last element of result."exponentInteger"
, [[Value]]: exponentResult.[[FormattedString]] } as the last element of result."percentSign"
, then"percentSign"
, [[Value]]: percentSignSymbol } as the last element of result."measureUnitSymbol"
and numberFormat.[[UnitType]] is "measureUnit"
, then"unit"
, [[Value]]: mu } as the last element of result."measureUnitNarrowSymbol"
and numberFormat.[[UnitType]] is "measureUnit"
, then"unit"
, [[Value]]: mu } as the last element of result."measureUnitName"
and numberFormat.[[UnitType]] is "measureUnit"
, then"unit"
, [[Value]]: mu } as the last element of result."currencyCode"
and numberFormat.[[UnitType]] is "currency"
, then"currency"
, [[Value]]: cd } as the last element of result."currencySymbol"
and numberFormat.[[UnitType]] is "currency"
, then"currency"
, [[Value]]: cd } as the last element of result."currencyNarrowSymbol"
and numberFormat.[[UnitType]] is "currency"
, then"currency"
, [[Value]]: cd } as the last element of result."currencyName"
and numberFormat.[[UnitType]] is "currency"
, then"currency"
, [[Value]]: cd } as the last element of result."literal"
, [[Value]]: literal } as the last element of result."{"
, nextIndex »)."literal"
, [[Value]]: literal } as the last element of result."percent"
, let x be 100 × x."{"
, 0 »)."}"
, beginIndex »)."literal"
, [[Value]]: literal } as the last element of result."number"
, then"nan"
, [[Value]]: n } as the last element of result."infinity"
, [[Value]]: n } as the last element of result."Numbering System"
column of "."
, 0 »)."integer"
, [[Value]]: integerGroup } as the last element of result."group"
, [[Value]]: groupSepSymbol } as the last element of result."integer"
, [[Value]]: integer } as the last element of result."plusSign"
, then"plusSign"
, [[Value]]: plusSignSymbol } as the last element of result."minusSign"
, then"minusSign"
, [[Value]]: minusSignSymbol } as the last element of result."compactSymbol"
, then"{compactSymbol}"
placeholder."compact"
, [[Value]]: compactSymbol } as the last element of result."compactName"
, then"{compactName}"
placeholder."compact"
, [[Value]]: compactName } as the last element of result."scientificSeparator"
, then"exponentSeparator"
, [[Value]]: scientificSeparator } as the last element of result."scientificExponent"
, then"exponentMinusSign"
, [[Value]]: minusSignSymbol } as the last element of result."exponentInteger"
, [[Value]]: exponentResult.[[FormattedString]] } as the last element of result."percentSign"
, then"percentSign"
, [[Value]]: percentSignSymbol } as the last element of result."measureUnitSymbol"
and numberFormat.[[UnitType]] is "measureUnit"
, then"unit"
, [[Value]]: mu } as the last element of result."measureUnitNarrowSymbol"
and numberFormat.[[UnitType]] is "measureUnit"
, then"unit"
, [[Value]]: mu } as the last element of result."measureUnitName"
and numberFormat.[[UnitType]] is "measureUnit"
, then"unit"
, [[Value]]: mu } as the last element of result."currencyCode"
and numberFormat.[[UnitType]] is "currency"
, then"currency"
, [[Value]]: cd } as the last element of result."currencySymbol"
and numberFormat.[[UnitType]] is "currency"
, then"currency"
, [[Value]]: cd } as the last element of result."currencyNarrowSymbol"
and numberFormat.[[UnitType]] is "currency"
, then"currency"
, [[Value]]: cd } as the last element of result."currencyName"
and numberFormat.[[UnitType]] is "currency"
, then"currency"
, [[Value]]: cd } as the last element of result."literal"
, [[Value]]: literal } as the last element of result."{"
, nextIndex »)."literal"
, [[Value]]: literal } as the last element of result.