diff --git a/docs/ldml/tr35-dates.md b/docs/ldml/tr35-dates.md index 27cfb842727..07362b84f6b 100644 --- a/docs/ldml/tr35-dates.md +++ b/docs/ldml/tr35-dates.md @@ -91,6 +91,25 @@ The LDML specification is divided into the following parts: * [Week of Year](#Date_Patterns_Week_Of_Year) * [Week Elements](#Date_Patterns_Week_Elements) * [Parsing Dates and Times](#Parsing_Dates_Times) +* [Semantic Skeletons](#Semantic_Skeletons) + * [Parts of a Semantic Skeleton](#Parts_of_a_Semantic_Skeleton) + * [Semantic Field Sets](#Semantic_Field_Sets) + * [Date Field Sets](#Semantic_Date_Field_Sets) + * [Calendar Period Field Sets](#Semantic_Calendar_Period_Field_Sets) + * [Time Field Sets](#Semantic_Time_Field_Sets) + * [Time Zone Field Sets](#Semantic_Time_Zone_Field_Sets) + * [Composite Field Sets](#Semantic_Composite_Field_Sets) + * [Semantic Skeleton Options](#Semantic_Skeleton_Options) + * [Length](#Semantic_Skeleton_Length) + * [Alignment](#Semantic_Skeleton_Alignment) + * [Year Style](#Semantic_Skeleton_Year_Style) + * [Hour Cycle](#Semantic_Skeleton_Hour_Cycle) + * [Fractional Second Digits](#Semantic_Skeleton_Fractional_Second_Digits) + * [Time Zone Style](#Semantic_Skeleton_Time_Zone_Style) + * [Generating Patterns for Semantic Skeletons](#Generating_Patterns_for_Semantic_Skeletons) + * [Mapping to Standard Skeletons](#mapping-to-standard-skeletons) + * [Year Style Skeleton Variations](#Semantic_Year_Style_Skeleton_Variations) + * [Semantic Skeleton Conformance](#Semantic_Skeleton_Conformance) ## Overview: Dates Element, Supplemental Date and Calendar Information diff --git a/docs/ldml/tr35-messageFormat.md b/docs/ldml/tr35-messageFormat.md index 409a1774810..e13920d0874 100644 --- a/docs/ldml/tr35-messageFormat.md +++ b/docs/ldml/tr35-messageFormat.md @@ -50,125 +50,121 @@ The LDML specification is divided into the following parts: * [Syntax](#syntax) * [Design Goals](#design-goals) * [Design Restrictions](#design-restrictions) - * [Messages and their Syntax](#messages-and-their-syntax) - * [Well-formed vs. Valid Messages](#well-formed-vs.-valid-messages) - * [The Message](#the-message) - * [Declarations](#declarations) - * [Reserved Statements](#reserved-statements) - * [Complex Body](#complex-body) - * [Pattern](#pattern) - * [Quoted Pattern](#quoted-pattern) - * [Text](#text) - * [Placeholder](#placeholder) - * [Matcher](#matcher) - * [Selector](#selector) - * [Variant](#variant) - * [Key](#key) - * [Expressions](#expressions) - * [Annotation](#annotation) - * [Function](#function) - * [Options](#options) - * [Private-Use Annotations](#private-use-annotations) - * [Reserved Annotations](#reserved-annotations) - * [Markup](#markup) - * [Attributes](#attributes) - * [Other Syntax Elements](#other-syntax-elements) - * [Keywords](#keywords) - * [Literals](#literals) - * [Names and Identifiers](#names-and-identifiers) - * [Escape Sequences](#escape-sequences) - * [Whitespace](#whitespace) +* [Messages and their Syntax](#messages-and-their-syntax) + * [Well-formed vs. Valid Messages](#well-formed-vs.-valid-messages) +* [The Message](#the-message) + * [Declarations](#declarations) + * [Complex Body](#complex-body) +* [Pattern](#pattern) + * [Quoted Pattern](#quoted-pattern) + * [Text](#text) + * [Placeholder](#placeholder) +* [Matcher](#matcher) + * [Selector](#selector) + * [Variant](#variant) + * [Key](#key) +* [Expressions](#expressions) + * [Operand](#operand) + * [Function](#function) + * [Options](#options) +* [Markup](#markup) +* [Attributes](#attributes) +* [Other Syntax Elements](#other-syntax-elements) + * [Keywords](#keywords) + * [Literals](#literals) + * [Names and Identifiers](#names-and-identifiers) + * [Escape Sequences](#escape-sequences) + * [Whitespace](#whitespace) * [Complete ABNF](#complete-abnf) * [`message.abnf`](#message.abnf) * [Errors](#errors) - * [Error Handling](#error-handling) - * [Syntax Errors](#syntax-errors) - * [Data Model Errors](#data-model-errors) - * [Variant Key Mismatch](#variant-key-mismatch) - * [Missing Fallback Variant](#missing-fallback-variant) - * [Missing Selector Annotation](#missing-selector-annotation) - * [Duplicate Declaration](#duplicate-declaration) - * [Duplicate Option Name](#duplicate-option-name) - * [Resolution Errors](#resolution-errors) - * [Unresolved Variable](#unresolved-variable) - * [Unknown Function](#unknown-function) - * [Unsupported Expression](#unsupported-expression) - * [Invalid Expression](#invalid-expression) - * [Unsupported Statement](#unsupported-statement) - * [Selection Errors](#selection-errors) - * [Formatting Errors](#formatting-errors) +* [Error Handling](#error-handling) +* [Syntax Errors](#syntax-errors) +* [Data Model Errors](#data-model-errors) + * [Variant Key Mismatch](#variant-key-mismatch) + * [Missing Fallback Variant](#missing-fallback-variant) + * [Missing Selector Annotation](#missing-selector-annotation) + * [Duplicate Declaration](#duplicate-declaration) + * [Duplicate Option Name](#duplicate-option-name) + * [Duplicate Variant](#duplicate-variant) +* [Resolution Errors](#resolution-errors) + * [Unresolved Variable](#unresolved-variable) + * [Unknown Function](#unknown-function) + * [Bad Selector](#bad-selector) +* [Message Function Errors](#message-function-errors) + * [Bad Operand](#bad-operand) + * [Bad Option](#bad-option) + * [Bad Variant Key](#bad-variant-key) * [Function Registry](#function-registry) - * [Goals](#goals) - * [Conformance and Use](#conformance-and-use) - * [Registry Data Model](#registry-data-model) - * [Example](#example) - * [Default Registry](#default-registry) - * [String Value Selection and Formatting](#string-value-selection-and-formatting) - * [The `:string` function](#the-string-function) - * [Operands](#operands) - * [Options](#options) - * [Selection](#selection) - * [Formatting](#formatting) - * [Numeric Value Selection and Formatting](#numeric-value-selection-and-formatting) - * [The `:number` function](#the-number-function) - * [Operands](#operands) - * [Options](#options) - * [Default Value of `select` Option](#default-value-of-select-option) - * [Percent Style](#percent-style) - * [Selection](#selection) - * [The `:integer` function](#the-integer-function) - * [Operands](#operands) - * [Options](#options) - * [Default Value of `select` Option](#default-value-of-select-option) - * [Percent Style](#percent-style) - * [Selection](#selection) - * [Number Operands](#number-operands) - * [Digit Size Options](#digit-size-options) - * [Number Selection](#number-selection) - * [Rule Selection](#rule-selection) - * [Determining Exact Literal Match](#determining-exact-literal-match) - * [Date and Time Value Formatting](#date-and-time-value-formatting) - * [The `:datetime` function](#the-datetime-function) - * [Operands](#operands) - * [Options](#options) - * [The `:date` function](#the-date-function) - * [Operands](#operands) - * [Options](#options) - * [The `:time` function](#the-time-function) - * [Operands](#operands) - * [Options](#options) - * [Date and Time Operands](#date-and-time-operands) +* [String Value Selection and Formatting](#string-value-selection-and-formatting) + * [The `:string` function](#the-string-function) + * [Operands](#operands) + * [Options](#options) + * [Selection](#selection) + * [Formatting](#formatting) +* [Numeric Value Selection and Formatting](#numeric-value-selection-and-formatting) + * [The `:number` function](#the-number-function) + * [Operands](#operands) + * [Options](#options) + * [Default Value of `select` Option](#default-value-of-select-option) + * [Percent Style](#percent-style) + * [Selection](#selection) + * [The `:integer` function](#the-integer-function) + * [Operands](#operands) + * [Options](#options) + * [Default Value of `select` Option](#default-value-of-select-option) + * [Percent Style](#percent-style) + * [Selection](#selection) + * [Number Operands](#number-operands) + * [Digit Size Options](#digit-size-options) + * [Number Selection](#number-selection) + * [Rule Selection](#rule-selection) + * [Determining Exact Literal Match](#determining-exact-literal-match) +* [Date and Time Value Formatting](#date-and-time-value-formatting) + * [The `:datetime` function](#the-datetime-function) + * [Operands](#operands) + * [Options](#options) + * [Style Options](#style-options) + * [Field Options](#field-options) + * [The `:date` function](#the-date-function) + * [Operands](#operands) + * [Options](#options) + * [The `:time` function](#the-time-function) + * [Operands](#operands) + * [Options](#options) + * [Date and Time Operands](#date-and-time-operands) * [Formatting](#formatting) - * [Formatting Context](#formatting-context) - * [Expression and Markup Resolution](#expression-and-markup-resolution) - * [Literal Resolution](#literal-resolution) - * [Variable Resolution](#variable-resolution) - * [Function Resolution](#function-resolution) - * [Option Resolution](#option-resolution) - * [Markup Resolution](#markup-resolution) - * [Fallback Resolution](#fallback-resolution) - * [Pattern Selection](#pattern-selection) - * [Resolve Selectors](#resolve-selectors) - * [Resolve Preferences](#resolve-preferences) - * [Filter Variants](#filter-variants) - * [Sort Variants](#sort-variants) - * [Examples](#examples) - * [Example 1](#example-1) - * [Example 2](#example-2) - * [Example 3](#example-3) - * [Formatting](#formatting) - * [Examples](#examples) - * [Formatting Fallback Values](#formatting-fallback-values) - * [Handling Bidirectional Text](#handling-bidirectional-text) +* [Formatting Context](#formatting-context) +* [Expression and Markup Resolution](#expression-and-markup-resolution) + * [Literal Resolution](#literal-resolution) + * [Variable Resolution](#variable-resolution) + * [Function Resolution](#function-resolution) + * [Option Resolution](#option-resolution) + * [Markup Resolution](#markup-resolution) + * [Fallback Resolution](#fallback-resolution) +* [Pattern Selection](#pattern-selection) + * [Resolve Selectors](#resolve-selectors) + * [Resolve Preferences](#resolve-preferences) + * [Filter Variants](#filter-variants) + * [Sort Variants](#sort-variants) + * [Examples](#examples) + * [Example 1](#example-1) + * [Example 2](#example-2) + * [Example 3](#example-3) +* [Formatting](#formatting) + * [Examples](#examples) + * [Formatting Fallback Values](#formatting-fallback-values) + * [Handling Bidirectional Text](#handling-bidirectional-text) * [Interchange Data Model](#interchange-data-model) - * [Messages](#messages) - * [Patterns](#patterns) - * [Expressions](#expressions) - * [Markup](#markup) - * [Extensions](#extensions) +* [Messages](#messages) +* [Patterns](#patterns) +* [Expressions](#expressions) +* [Markup](#markup) +* [Attributes](#attributes) +* [Extensions](#extensions) * [Appendices](#appendices) - * [Security Considerations](#security-considerations) - * [Acknowledgements](#acknowledgements) +* [Security Considerations](#security-considerations) +* [Acknowledgements](#acknowledgements) ## Introduction diff --git a/docs/ldml/tr35.md b/docs/ldml/tr35.md index 1557d15e338..70a67df6044 100644 --- a/docs/ldml/tr35.md +++ b/docs/ldml/tr35.md @@ -57,6 +57,19 @@ The LDML specification is divided into the following parts: * [Introduction](#Introduction) * [Conformance](#Conformance) + * [Unicode Locale Identifiers](#unicode-locale-identifiers) + * [Unicode Locale Inheritance and Matching](#unicode-locale-inheritance-and-matching) + * [Units of Measurement](#units-of-measurement) + * [Number Formatting](#number-formatting) + * [Date Formatting](#date-formatting) + * [Collation](#collation) + * [Grammar](#grammar) + * [Miscellaneous](#miscellaneous) + * [Customization](#customization) + * [Omitting data](#omitting-data) + * [Adding data](#adding-data) + * [Overriding data](#overriding-data) + * [Testing](#testing) * [EBNF](#ebnf) * [What is a Locale?](#Locale) * [Unicode Language and Locale Identifiers](#Unicode_Language_and_Locale_Identifiers) @@ -210,6 +223,13 @@ The LDML specification is divided into the following parts: * [References](#References) * [Acknowledgments](#Acknowledgments) * [Modifications](#Modifications) + * [Conformance Modifications](#conformance-modifications) + * [Locale Identifiers and Inheritance Modifications](#locale-identifiers-and-inheritance-modifications) + * [Message Format Modifications](#message-format-modifications) + * [Date Modifications](#date-modifications) + * [Units Modifications](#units-modifications) + * [Collation Data Changes](#collation-data-changes) + * [Misc. Modifications](#misc.-modifications) ## Introduction @@ -274,7 +294,7 @@ Conformance to a particular section may reference and require conformance to ano | [Annex C. LocaleId Canonicalization](#LocaleId_Canonicalization) | canonicalize | | [CLDR to BCP 47](#Unicode_Locale_Identifier_CLDR_to_BCP_47), [BCP 47 to CLDR](#Unicode_Locale_Identifier_BCP_47_to_CLDR) | convert | | [Language Identifier Field Definitions](#Field_Definitions) | interpretation and validity of -u key-value pairs | -| [Locale Display Name Algorithm](tr35-general.html#locale_display_name_algorithm) | locale display names | +| [Locale Display Name Algorithm](tr35-general.md#locale_display_name_algorithm) | locale display names | #### Unicode Locale Inheritance and Matching | Sections | Topics | @@ -286,50 +306,50 @@ Conformance to a particular section may reference and require conformance to ano #### Units of Measurement | Sections | Topics | | --- | --- | -| [Unit Identifiers](tr35-general.html#unit-identifiers) | unit identifier syntax, interpretation, and validity | -| [Unit Identifier Normalization](tr35-info.html#Unit_Identifier_Normalization) | identifier normalization | -| [Unit Conversion](tr35-info.html#Unit_Conversion) | unit conversion | -| [Unit Preferences](tr35-info.html#Unit_Preferences) | evaluation of user preferences | -| [Unit Identifier Uniqueness](tr35-general.html#unit-identifier-uniqueness) | converting units into BCP47 format | -| [Compound Units](tr35-general.html#compound-units) | unit display names | +| [Unit Identifiers](tr35-general.md#unit-identifiers) | unit identifier syntax, interpretation, and validity | +| [Unit Identifier Normalization](tr35-info.md#Unit_Identifier_Normalization) | identifier normalization | +| [Unit Conversion](tr35-info.md#Unit_Conversion) | unit conversion | +| [Unit Preferences](tr35-info.md#Unit_Preferences) | evaluation of user preferences | +| [Unit Identifier Uniqueness](tr35-general.md#unit-identifier-uniqueness) | converting units into BCP47 format | +| [Compound Units](tr35-general.md#compound-units) | unit display names | #### Number Formatting | Sections | Topics | | --- | --- | -| [Number Format Patterns](tr35-numbers.html#number-format-patterns) | number format patterns, syntax and interpretation | -| [Compact Number Formats](tr35-numbers.html#compact-number-formats) | compact number formats | -| [Rule-Based Number Formatting](tr35-numbers.html#Rule-Based_Number_Formatting) | spell-out number formatting | +| [Number Format Patterns](tr35-numbers.md#number-format-patterns) | number format patterns, syntax and interpretation | +| [Compact Number Formats](tr35-numbers.md#compact-number-formats) | compact number formats | +| [Rule-Based Number Formatting](tr35-numbers.md#Rule-Based_Number_Formatting) | spell-out number formatting | #### Date Formatting | Sections | Topics | | --- | --- | -| [Elements availableFormats, appendItems](tr35-dates.html#availableFormats_appendItems) | date formatting, patterns | -| [Date Format Patterns](tr35-dates.html#Date_Format_Patterns) | date format patterns and symbols| -| [Using Time Zone Names](tr35-dates.html#Using_Time_Zone_Names) | timezone forms, fallback and parsing | +| [Elements availableFormats, appendItems](tr35-dates.md#availableFormats_appendItems) | date formatting, patterns | +| [Date Format Patterns](tr35-dates.md#Date_Format_Patterns) | date format patterns and symbols| +| [Using Time Zone Names](tr35-dates.md#Using_Time_Zone_Names) | timezone forms, fallback and parsing | #### Collation | Sections | Topics | | --- | --- | -| [Root Collation](tr35-collation.html#root-collation) | Root collation syntax and structure | -| [Collation Tailorings](tr35-collation.html#Collation_Tailorings) | Rule syntax and interpretation for language-specific ordering | +| [Root Collation](tr35-collation.md#root-collation) | Root collation syntax and structure | +| [Collation Tailorings](tr35-collation.md#Collation_Tailorings) | Rule syntax and interpretation for language-specific ordering | #### Grammar | Sections | Topics | | --- | --- | -| [Grammatical Features](tr35-general.html#grammatical-features) | noun classes (except for plurals) | -| [Language Plural Rules](tr35-numbers.html#Language_Plural_Rules) | plural and ordinal category rules, ranges | +| [Grammatical Features](tr35-general.md#grammatical-features) | noun classes (except for plurals) | +| [Language Plural Rules](tr35-numbers.md#Language_Plural_Rules) | plural and ordinal category rules, ranges | #### Miscellaneous | Sections | Topics | | --- | --- | | [Unicode Sets](#Unicode_Sets) | Unicode set syntax and interpretation | | [String Range](#string-range) | string-range syntax and interpretation | -| [Transforms](tr35-general.html#Transforms)| transform identifier and rule syntax and interpretation | -| [Segmentations](tr35-general.html#segmentations) | segmentation customizations | -| [Synthesizing Sequence Names](tr35-general.html#synthesizing-sequence-names) | constructing derived emoji names | -| [Formatting Process](tr35-personNames.html#formatting-process) | person name formatting | -| [Part 7: Keyboards](tr35-keyboards.html) | keyboard structure and interpretation | -| [Conformance](tr35-messageFormat.html#conformance) (Message Format) | message formatting | +| [Transforms](tr35-general.md#Transforms)| transform identifier and rule syntax and interpretation | +| [Segmentations](tr35-general.md#segmentations) | segmentation customizations | +| [Synthesizing Sequence Names](tr35-general.md#synthesizing-sequence-names) | constructing derived emoji names | +| [Formatting Process](tr35-personNames.md#formatting-process) | person name formatting | +| [Part 7: Keyboards](tr35-keyboards.md) | keyboard structure and interpretation | +| [Conformance](tr35-messageFormat.md#conformance) (Message Format) | message formatting | ### Customization @@ -4303,25 +4323,25 @@ Updates to [LDML Conformance](#Conformance) including ### Message Format Modifications -Significant updates to [Message Format](tr35-messageFormat.html#Contents) +Significant updates to [Message Format](tr35-messageFormat.md#Contents) - Removed all of the reserved and private use syntax constructs, simplifying the grammar. - Changed the structure of the .match (selector) to require use of local or input declarations. This is a breaking change for existing messages. - Added support for bidirectional isolates and marks and clarified whitespace handling to better enable messages that contains right-to-left identifiers and text. ### Date Modifications -- Added a tech preview section on [semantic skeletons](tr35-dates.html#Semantic_Skeletons), allowing for less data and faster performance in formatting dates. -- Clarified that if [dayPeriods](tr35-collation.html#grouping_classes_of_characters) are specified for `noon` and `midnight`, they can often be formatted without also specifying the numeric time -- In [Element dayPeriods](tr35-dates.html#dayPeriods), added a note on special formatting usable with dayPeriods `noon` and `midnight`. +- Added a tech preview section on [semantic skeletons](tr35-dates.md#Semantic_Skeletons), allowing for less data and faster performance in formatting dates. +- Clarified that if [dayPeriods](tr35-collation.md#grouping_classes_of_characters) are specified for `noon` and `midnight`, they can often be formatted without also specifying the numeric time +- In [Element dayPeriods](tr35-dates.md#dayPeriods), added a note on special formatting usable with dayPeriods `noon` and `midnight`. ### Units Modifications -- Changed the EBNF for [`unit_identifier`](tr35-general.html#Annotations): - - Replacing `number_prefix` by [unit_constant](tr35-general.html#syntax) to generalize expressions like liter-per-100-kilometers, and provide a compact form for longer constants (such as 1e9). +- Changed the EBNF for [`unit_identifier`](tr35-general.md#Annotations): + - Replacing `number_prefix` by [unit_constant](tr35-general.md#syntax) to generalize expressions like liter-per-100-kilometers, and provide a compact form for longer constants (such as 1e9). - Adding EBNF constraints on `si_prefix` and `binary_prefix`, and adding links to more named components. -- Clarified the use of -rg for [computing regions](tr35-info.html#compute-regions) in user preferences +- Clarified the use of -rg for [computing regions](tr35-info.md#compute-regions) in user preferences ### Collation Data Changes -- Modified [Grouping classes of characters](tr35-collation.html#grouping_classes_of_characters) to reflect two major changes. - - The [CLDR root collation](tr35-collation.html#Root_Collation) is a tailoring of the [DUCET](https://www.unicode.org/reports/tr10/#Default_Unicode_Collation_Element_Table). +- Modified [Grouping classes of characters](tr35-collation.md#grouping_classes_of_characters) to reflect two major changes. + - The [CLDR root collation](tr35-collation.md#Root_Collation) is a tailoring of the [DUCET](https://www.unicode.org/reports/tr10/#Default_Unicode_Collation_Element_Table). Changes have been made to both to align them better: - non-decimal-digit numeric characters now sort after decimal digits - the CLDR root collation no longer tailors any currency symbols (making some of them sort like letter sequences, as in the DUCET). @@ -4329,7 +4349,7 @@ Changes have been made to both to align them better: [Its sorting algorithm is defined in UAX #38](https://www.unicode.org/reports/tr38/#SortingAlgorithm). ### Misc. Modifications -- Clarified the usage model for [emoji search keywords](tr35-general.html#Annotations). +- Clarified the usage model for [emoji search keywords](tr35-general.md#Annotations). Note that small changes such as typos and link fixes are not listed above.