diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 6eae3dc582f..2104bce2dae 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -10,7 +10,7 @@ updates: interval: "monthly" commit-message: include: scope - prefix: "CLDR-17492 gh:" + prefix: "CLDR-17993 gh:" assignees: - btangmu - srl295 @@ -25,7 +25,7 @@ updates: interval: "monthly" commit-message: include: scope - prefix: "CLDR-17492 js:" + prefix: "CLDR-17993 js:" assignees: - btangmu - srl295 @@ -39,7 +39,7 @@ updates: interval: "monthly" commit-message: include: scope - prefix: "CLDR-17492 tr:" + prefix: "CLDR-17993 tr:" assignees: - btangmu - srl295 @@ -54,7 +54,7 @@ updates: interval: "monthly" commit-message: include: scope - prefix: "CLDR-17492 j:" + prefix: "CLDR-17993 j:" assignees: - btangmu - srl295 diff --git a/.github/workflows/commit-checker.yml b/.github/workflows/commit-checker.yml index 8808fa08770..28f41d80fc9 100644 --- a/.github/workflows/commit-checker.yml +++ b/.github/workflows/commit-checker.yml @@ -25,7 +25,7 @@ on: jobs: build: name: Run Checker - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 steps: - name: clone CLDR uses: actions/checkout@v4 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-info.md b/docs/ldml/tr35-info.md index a69039ea90f..752ed7eca60 100644 --- a/docs/ldml/tr35-info.md +++ b/docs/ldml/tr35-info.md @@ -1264,11 +1264,12 @@ If there is no valid -mu value, the following steps are used to determine a regi 1. If there is a valid -ms value then let USM be the corresponding value in column 2 of the table below. Otherwise FR is not used. In either case continue with step 2. 2. If there is a valid -rg region portion of the rg value, let R be that region, and go to Compute the category. - * See the table above for the examples `usut`, `usabc`, and `abcdef` -4. If there is a valid region in the locale, let R be that region, and go to Compute the category. -5. Otherwise, compute the likely subtags for the locale. - 1. If there is a likely region, then let R be that region, and go to Compute the category. - 2. Otherwise, let R be 001, and go to Compute the category + * In the table above, this would handle the examples `usut`, `uszzzz`, and `usabc`, resulting in R = US. + * Because the example `abzzzz` has an invalid region portion, no region is found and processing continues with step 3. +3. If there is a valid region in the locale, let R be that region, and go to Compute the category. +4. Otherwise, compute the likely subtags for the locale. + 1. If there is a likely region, then let R be that region, and go to Compute the category. + 2. Otherwise, let R be 001, and go to Compute the category | Key-Value | Unit Systems Match | Fallback Region for Unit Preferences | |-------------|-----------------------------|--------------------------------------| diff --git a/docs/ldml/tr35-keyboards.md b/docs/ldml/tr35-keyboards.md index 99225bf9b94..a911c7683f8 100644 --- a/docs/ldml/tr35-keyboards.md +++ b/docs/ldml/tr35-keyboards.md @@ -512,7 +512,7 @@ See [UAX #15](https://www.unicode.org/reports/tr15/#Description_Norm) for an ove #### Example Normalization with Markers -**Example 1** +**Example 1a** Consider this example, without markers: @@ -521,7 +521,7 @@ Consider this example, without markers: The combining marks are reordered. -**Example 2** +**Example 1b** If we add markers: @@ -1806,10 +1806,10 @@ _Attribute:_ `value` (required) - + - - + + ``` @@ -1822,10 +1822,10 @@ These may be then used in multiple contexts: … - + … - - + + ``` * * * @@ -2393,7 +2393,7 @@ Used in the `to=` - The `from=` and `to=` sides of the pattern must both be using `set` variables. There is no way to insert a set literal on either side and avoid using a variable. - - The two variables (here `upper` and `lower`) must have exactly the same number of whitespace-separated items. Leading and trailing space (such as at the end of `lower`) is ignored. A variable without any spaces is considered to be a set variable of exactly one item. + - The two variables (here `upper` and `lower`) must have exactly the same number of whitespace-separated items. Leading and trailing space is ignored. A variable without any spaces is considered to be a set variable of exactly one item. - As described in [Additional Features](#additional-features), the `upper` set variable as used here matches as if it is `((?:A|B|CC|D|E|FF|G))`, showing the enclosing capturing group. When text from the input context matches this expression, and all above conditions are met, the mapping proceeds as follows: @@ -2704,7 +2704,7 @@ Keyboarding applications typically work, but are not required to, in one of two **_text editing_** -> text editing happens when a user moves the cursor into some previously entered text which may have been entered by someone else. As such, there is no way to know in which order things were typed, but a user will still want appropriate behaviour when they press backspace. This may involve deleting more than one character or replacing a sequence of characters with a different sequence. +> text editing happens when a user moves the cursor into some previously entered text which may have been entered by someone else. As such, there is no way to know in which order things were typed, but a user will still want appropriate behavior when they press backspace. This may involve deleting more than one character or replacing a sequence of characters with a different sequence. In text editing mode, different keyboard layouts may behave differently in the same textual context. The backspace transform allows the keyboard layout to specify the effect of pressing backspace in a particular textual context. This is done by specifying a set of backspace rules that match a string before the cursor and replace it with another string. The rules are expressed within a `transforms type="backspace"` element. 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-numbers.md b/docs/ldml/tr35-numbers.md index 32854815422..c679206f707 100644 --- a/docs/ldml/tr35-numbers.md +++ b/docs/ldml/tr35-numbers.md @@ -946,7 +946,10 @@ Each `currencyData` element contains one `fractions` element followed by one or The `fractions` element contains any number of `info` elements, with the following attributes: * **iso4217:** the ISO 4217 code for the currency in question. If a particular currency does not occur in the fractions list, then it is given the defaults listed for the next two attributes. -* **digits:** the minimum and maximum number of decimal digits normally formatted. The default is 2. For example, in the en_US locale with the default value of 2 digits, the value 1 USD would format as "$1.00", and the value 1.123 USD would format as → "$1.12". +* **digits:** the minimum and maximum number of decimal digits normally formatted. +The default is 2. +For example, in the en_US locale with the default value of 2 digits, the value 1 USD would format as "$1.00", and the value 1.123 USD would format as → "$1.12". +This value of this field is based on the "minor unit" value from ISO 4217, but may deviate from ISO 4217 where there is compelling evidence for different customary practice. * **rounding:** the rounding increment, in units of 10-digits. The default is 0, which means no rounding is to be done. Therefore, rounding=0 and rounding=1 have identical behavior. Thus with fraction digits of 2 and rounding increment of 5, numeric values are rounded to the nearest 0.05 units in formatting. With fraction digits of 0 and rounding increment of 50, numeric values are rounded to the nearest 50. * **cashDigits:** the number of decimal digits to be used when formatting quantities used in cash transactions (as opposed to a quantity that would appear in a more formal setting, such as on a bank statement). If absent, the value of "digits" should be used as a default. * **cashRounding:** the cash rounding increment, in units of 10-cashDigits. The default is 0, which means no rounding is to be done; and as with rounding, this has the same effect as cashRounding="1". This is the rounding increment to be used when formatting quantities used in cash transactions (as opposed to a quantity that would appear in a more formal setting, such as on a bank statement). If absent, the value of "rounding" should be used as a default. 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. diff --git a/docs/site/.gitignore b/docs/site/.gitignore index 869cbb82391..2d43f7444fb 100644 --- a/docs/site/.gitignore +++ b/docs/site/.gitignore @@ -2,6 +2,5 @@ /assets/json /assets/vendor /sitemap.xml -/sitemap.md diff --git a/docs/site/404.html b/docs/site/404.html index 6d3abaf4ec3..79a4f09fd45 100644 --- a/docs/site/404.html +++ b/docs/site/404.html @@ -2,6 +2,20 @@ + + + CLDR | 404 diff --git a/docs/site/_layouts/page.html b/docs/site/_layouts/page.html index 857db712665..5598afa83a5 100644 --- a/docs/site/_layouts/page.html +++ b/docs/site/_layouts/page.html @@ -1,37 +1,54 @@ - + + + + + + + {{ page.title }} + + - - -
- -
This navigation UI is temporary, just to give access to the pages.
- -
- - - -
- {{ content }} -
-
- © 1991-2024 Unicode, Inc. Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries. See Terms of Use. -
- - - - - + + + +
+ +
{{ content }}
+
+
+ © 1991-2024 Unicode, Inc. Unicode and the Unicode Logo are registered + trademarks of Unicode, Inc. in the U.S. and other countries. See + Terms of Use. +
+ + + + + diff --git a/docs/site/_layouts/sitemap.html b/docs/site/_layouts/sitemap.html new file mode 100644 index 00000000000..d4a8eb18a24 --- /dev/null +++ b/docs/site/_layouts/sitemap.html @@ -0,0 +1,54 @@ + + + + + + + + {{ page.title }} + + + + + +
+ +
+ +
{{ content }}
+ +
+ +
+ +
+ © 1991-2024 Unicode, Inc. Unicode and the Unicode Logo are registered + trademarks of Unicode, Inc. in the U.S. and other countries. See + Terms of Use. +
+ + + + + + diff --git a/docs/site/_redirects b/docs/site/_redirects index 961e9a61fd8..d5ec690e41e 100644 --- a/docs/site/_redirects +++ b/docs/site/_redirects @@ -1,5 +1,13 @@ # CLDR Redirects # Note: See for docs! +# redirect latest and dev pages +/downloads/dev* /downloads/cldr-47 +/downloads/latest* /downloads/cldr-46 + # redirect old download pages [CLDR-17977] /index/downloads/* /downloads/:splat + +# pages that were renamed [CLDR-17977] +/index/cldr-spec/unicode-transliteration-guidelines* /index/cldr-spec/transliteration-guidelines +/index/bug-reports* /requesting_changes diff --git a/docs/site/archive.md b/docs/site/archive.md new file mode 100644 index 00000000000..d895180245b --- /dev/null +++ b/docs/site/archive.md @@ -0,0 +1,7 @@ +--- +title: Archived Pages +--- + +# Archived Pages + +The pages in this section are archived for reference. diff --git a/docs/site/assets/css/page.css b/docs/site/assets/css/page.css index d1d23b4a744..1c60f76c7e3 100644 --- a/docs/site/assets/css/page.css +++ b/docs/site/assets/css/page.css @@ -1,8 +1,838 @@ +/** + * CLDR Site css + */ + +/* + * Begin section from reports-v2.css + */ + +blockquote { + margin: 20px; +} +/* for quoting from the standard */ +blockquote.tus { + font-size: 11pt; + font-family: Times New Roman, serif; +} +dt { + font-style: italic; +} +li { + margin-top: 0.25em; + margin-bottom: 0.25em; +} +.bb { + page-break-before: always; +} +.copyright { + font-size: 75%; +} +.codeComment { + color: #0000ff; +} + +/*use these styles for contrastive background coloring associated with specific conventions */ +.syntax { + background-color: #eeeeff; +} +.example { + background-color: #eeffee; +} +.values { + background-color: #ffffee; +} + +/* use these styles for constrastive background coloring with no specific meaning */ +.lightblue { + background-color: #eeeeff !important ; +} +.medgray { + background-color: #c0c0c0 !important ; +} +.lightyellow { + background-color: #ffff80 !important ; +} +.lightgray { + background-color: #e4e4e4 !important; +} /*not sure we need this one */ +.vlightgray { + background-color: #f8f8f8 !important; +} +.sandstone { + background-color: #ece8e0 !important; +} + +span.codepoint { + font-family: monospace; +} +span.charSample { + font-size: 200%; +} +span.name { + text-transform: lowercase; + font-variant: small-caps; + font-size: 75%; +} + +span.section { + font-style: italic; +} +span.secno { + font-style: italic; +} + +p.caption { + page-break-after: avoid; + font-weight: bold; + text-align: center; +} +p.rule { + font-style: italic; + background-color: #ece8e0; +} +td.rule, +th.rule { + font-style: italic; + font-weight: 400 !important; + padding: 3px !important; + margin: 2px !important; +} +td.rule, +th.rule { + background-color: #ece8e0 !important; + border: 1px solid #f2f2f2 !important; +} + +/* from UAX#29 */ +.symbol { + font-size: 90%; + font-family: Arial, Geneva, sans-serif; +} +.example2 { + background-color: #ffff99; +} +.charlist { + font-size: 90%; + font-family: monospace; +} +.pairItem { + text-align: Center; +} +.lbclass { + text-align: Center; +} + +/* table related styles*/ +table { + border-spacing: 0; + border-collapse: collapse; + border-style: solid; + border-color: black; + border-width: 1px; +} +th, +td { + border-spacing: 0; + border-collapse: collapse; + border-style: solid; + border-color: black; + border-width: 1px; + font-family: Arial, Geneva, sans-serif; + color: black; + vertical-align: top; + text-align: left; +} +table.body { + border-style: none; + width: 100%; +} +td.body { + border-style: none; + padding: 20px; +} +caption { + font-size: 120%; + font-weight: bold; + padding-bottom: 0.75em; +} +td.icon { + border-style: none; + border-width: 0; + padding: 2px; + margin: 0; + background-color: #5555ff; + color: white; + font-size: 100%; + text-align: left; + font-weight: bold; + font-family: Arial, Geneva, sans-serif; +} + +td.gray { + border-style: none; + border-width: 0; + padding: 0px; + margin: 0; + background-color: #eeeefe; + color: white; + font-size: 6pt; +} + +/* various overrides for table styles */ +table.header { + border-style: none; + border-width: 0; + margin: 0; + width: 100%; +} +table.noborder th, +table.noborder td { + border-style: none !important; + border-width: 0; + margin: 0; +} +.noborder { + border-style: none !important; + border-width: 0; + margin: 0; +} +.nb { + border-style: none !important; + border-width: 0; + margin: 0; +} + +table.border th, +table.border td { + border-style: solid !important; + border-width: 1px; + margin: 0; +} +.border { + border-style: solid !important; + border-width: 1px; + margin: 0; +} + +.nb th, +.nb td { + border-style: none !important; + border-width: 0; + margin: 0; +} + +.ref { + width: 92%; + border-style: none; + border-width: 0; + margin: 0; + padding: 0.33em; +} + +/* don't color links on headers and captions, unless hovering */ +h2 a:link, +h3 a:link, +h4 a:link, +h5 a:link, +p.caption a:link, +caption a:link, +h2 a:visited, +h3 a:visited, +h4 a:visited, +h5 a:visited, +p.caption a:visited, +caption a:visited { + color: black; + text-decoration: none; +} +h2 a:hover, +h3 a:hover, +h4 a:hover, +h5 a:hover, +p.caption a:hover, +caption a:hover { + color: #3030ff; + text-decoration: underline; +} + +/* run in headers */ +span.run_in { + font-style: italic; + font-weight: bold; +} +span.note { + font-style: italic; +} + +p.bar { + background-color: #5555ff; + color: white; + font-size: 100%; + font-weight: bold; + font-family: Arial, Geneva, sans-serif; + text-align: right; + padding: 4px; +} + +a.bar:link { + color: white; +} +a.bar:visited { + color: white; +} +a.bar:active { + color: white; +} +a.bar:hover { + color: #b0b0b0; +} + +/* some UAXs use h3 some h4 */ +h4.summary { + margin-top: 1em; +} +h3.summary { + margin-top: 1em; +} + +/* link style for character class */ +a.charclass { + font-weight: bold; + text-decoration: none; + color: #808080; +} + +/* syntax coloring for C source code samples */ + +.CKeyword { + color: rgb(0, 0, 255); +} +.CComment { + color: rgb(0, 128, 0); +} +.CCommand { + font-weight: bold; + color: rgb(255, 0, 0); +} + +.changed { + background-color: #ffff00; + border-style: dotted; + border-width: 1px; +} +.removed { + text-decoration: line-through; + background-color: #ffff00; + border-style: dotted; + border-width: 1px; +} +.changed2 { + background-color: #00ffff; + border-style: dotted; + border-width: 1px; +} +.removed2 { + text-decoration: line-through; + background-color: #00ffff; + border-style: dotted; + border-width: 1px; +} + +span.changedspan { + background-color: #ffff00; + border-style: dotted; + border-width: 1px; +} +span.removedspan { + text-decoration: line-through; + background-color: #ffff00; + border-style: dotted; + border-width: 1px; +} + +.reviewnote { + background-color: #ffff80; + color: #cc0000; + border-style: dashed; + border-width: 1px; +} + +/* table w/o a grid, except for lines in first and last row like in TR#25 */ + +table.gray { + border-collapse: collapse; + border-style: none; + border-width: medium; +} + +th.grayfirst, +td.grayfirst { + border-left-style: none; + border-left-width: medium; + border-right-style: none; + border-right-width: medium; + border-top: 1.5pt solid gray; + border-bottom: 0.75pt solid gray; + padding-left: 5.4pt; + padding-right: 5.4pt; + padding-top: 0in; + padding-bottom: 0in; +} +th.graymiddle, +td.graymiddle { + border-style: none; + border-width: medium; + padding-left: 5.4pt; + padding-right: 5.4pt; + padding-top: 0in; + padding-bottom: 0in; +} + +th.graylast, +td.graylast { + border-left-style: none; + border-left-width: medium; + border-right-style: none; + border-right-width: medium; + border-top-style: none; + border-top-width: medium; + border-bottom: 1.5pt solid gray; + padding-left: 5.4pt; + padding-right: 5.4pt; + padding-top: 0in; + padding-bottom: 0in; +} + +/* list styles that work well in table of contents */ +ul.toc { + list-style-position: outside; + list-style-type: none; + margin-left: 1em; + margin-bottom: 0pt; + margin-top: 0pt; + line-height: 90%; +} + +ol.toc { + list-style-type: decimal; + margin-bottom: 0pt; +} + +ol ul.toc { + list-style-position: outside; + list-style-type: none; + margin-left: 0em; + margin-bottom: 0pt; + margin-top: 0pt; + line-height: 90%; +} + +ul ul.toc { + list-style-position: outside; + list-style-type: none; + margin-left: 1.3em; + margin-bottom: 0pt; + margin-top: 0pt; + line-height: 90%; +} +ul.toc li { + margin-left: 0; +} + +/* prevent open circles starting bullets inside numbered points */ +ol ul { + list-style-type: disc; +} +ul.nobullet { + list-style-type: none; +} + +/* is the preceding needed for web ? */ + +.right { + text-align: right; +} +.left { + text-align: Left; +} +.center { + text-align: center; +} + +/* UAX#14 specific styles, duplicated here in case they are applicable elsehwere */ +table.pair { + border: 1px solid; + font-size: 8pt; +} +table.pair th { + text-align: center; + font-size: 8pt; +} +table.pair th.pairItem { + background-color: #800080; +} +.nb-la { + width: 7em; + border-style: none; + border-width: 0; + padding-left: 0.2em; + background-color: #ece8e0; +} +.nb-lb { + border-style: none; + border-width: 0; + padding-left: 0.2em; + background-color: #f0f0f0; +} +td.nb-lb p { + margin-left: 0em; +} + +/* use some font styles conditionally */ +span.mathsym1 { +} +span.mathsym2 { + font-family: Arial, Geneva, sans-serif; +} +span.mathsym3 { + font-family: Arial, Geneva, sans-serif; +} +span.specials { + font-size: smaller; +} +span.symbol { + font-size: 90%; + font-family: Arial, Geneva, sans-serif; +} /* same as .symbol */ + +/* additional table styles from standard_styles.css */ + +/*simple - single pixel border, charcol lines */ +/*subtle - same, but gray headers on gray background */ +/* the -nb variants are the same but w/o borders */ + +table.simple { + border-width: 1px; + border-style: solid; + border-color: #a0a0a0; + border-collapse: collapse; + padding: 0.2em; + font-size: 1em; +} +table.simple th { + border-width: 1px; + border-style: solid; + border-color: #a0a0a0; + font-weight: bold; + padding: 5px; + text-align: left; +} +table.simple td { + border-width: 1px; + border-style: solid; + border-color: #a0a0a0; + padding: 5px; + text-align: left; +} + +table.subtle { + border-width: 1px; + border-style: solid; + border-color: #a0a0a0; + border-collapse: collapse; + padding: 0.2em; + font-size: 1em; +} +table.subtle th { + border-width: 1px; + border-style: solid; + border-color: #a0a0a0; + font-weight: bold; + padding: 5px; + text-align: left; +} +table.subtle td { + border-width: 1px; + border-style: solid; + border-color: #a0a0a0; + padding: 5px; + text-align: left; +} + +table.subtle-nb { + border-style: none; + border-width: 0; + border-collapse: collapse; +} +table.subtle-nb th { + border: solid 1px #f2f2f2; + font-weight: bold; + padding: 5px; + text-align: left; +} +table.subtle-nb td { + border-style: none; + border-width: 0; + font-weight: normal; + padding: 5px; + text-align: left; +} + +table.subtle-nb table.subtle th { + border-width: 1px; + border-style: solid; + border-color: #a0a0a0; +} +table.subtle-nb table.subtle td { + border-width: 1px; + border-style: solid; + border-color: #a0a0a0; +} +table.subtle-nb table.simple th { + color: #000000; + background-color: #ffffff; /* was: #FFFFFF; */ + border-width: 1px; + border-style: solid; + border-color: #a0a0a0; +} +table.subtle-nb table.simple td { + border-width: 1px; + border-style: solid; + border-color: #a0a0a0; +} +table.subtle table.simple th { + color: #000000; + background-color: #ffffff; +} /*was #FFFFFF */ + +table.subtle th { + color: #606060; + background-color: #ece8e0; +} +table.subtle-nb th { + color: #606060; + background-color: #ece8e0; +} + +table.subtle th p { + color: #606060; + background-color: #ece8e0; +} +table.subtle-nb tr th p { + color: #606060; + background-color: #ece8e0; +} + +table.simple th p { + margin: 0; +} +table.subtle th p { + margin: 0; +} +table.subtle-nb th p { + margin: 0; +} + +/* first-child selector only works in IE if DOCTYPE has a URL (standards mode) */ +/* the following remove space above first and below last paragraph (or list) inside a table cell, but preserve interparagraph spacing */ + +table.simple td > p:first-child { + margin: 0; +} +table.simple td > p { + margin-top: 1.5em; +} + +table.subtle td > p:first-child { + margin: 0; +} +table.subtle td > p { + margin-top: 1.5em; +} + +table.subtle-nb td > p:first-child { + margin: 0; +} +table.subtle-nb td > p { + margin-top: 1.5em; +} + +table.simple td > ul:first-child { + margin-top: 0; + margin-bottom: 0; +} +table.simple td > ol:first-child { + margin-top: 0; + margin-bottom: 0; +} +table.simple td > ul { + margin-top: 1.5em; + margin-bottom: 0.5em; +} +table.simple td > ol { + margin-top: 1.5em; + margin-bottom: 0.5em; +} + +table.subtle td > ul:first-child { + margin-top: 0; + margin-bottom: 0; +} +table.subtle td > ol:first-child { + margin-top: 0; + margin-bottom: 0; +} +table.subtle td > ul { + margin-top: 1.5em; + margin-bottom: 0.5em; +} +table.subtle td > ol { + margin-top: 1.5em; + margin-bottom: 0.5em; +} + +table.subtle-nb td > ul:first-child { + margin-top: 0; + margin-bottom: 0; +} +table.subtle-nb td > ol:first-child { + margin-top: 0; + margin-bottom: 0; +} +table.subtle-nb td > ul { + margin-top: 1.5em; + margin-bottom: 0.5em; +} +table.subtle-nb td > ol { + margin-top: 1.5em; + margin-bottom: 0.5em; +} + +/* override the default padding use with table style "simple" */ +table.nopad { + padding: 0; +} +table.nopad th, +table.nopad td { + padding: 0; +} + +table.loose th, +table.loose td { + padding-top: 8px; + padding-bottom: 8px; +} + +/* override for no-border cells in the middle of standard tables - hide-borders also affects row borders between adjacent cells of same class*/ +.hide-borders { + border-left: hidden !important; + border-right: hidden !important; + border-top: none !important; + border-bottom: none !important; +} +.hide-side-borders { + border-left: hidden !important; + border-right: hidden !important; +} + +/* end section from reports-v2.css */ + +/* conditional display */ +body { + margin: 0; + font-family: Arial, Geneva, sans-serif; + color: black; + background-color: white; + background-repeat: repeat; + background-attachment: scroll; + background-position: 0%; +} +div.body { + margin: 3em; +} /* margin for body only */ + /* mirror of div.body */ -section.body { +body.page section.body { margin: 3em; } +/* If there is any content on the sitemap.md page, left indent it to fit with the rest, +but don't create a big space for it. */ +body.sitemappage section.body { + margin-left: 3em; +} + +body.page header .subpages a:link { + text-decoration: none; +} +body.page header .subpages a:visited { + text-decoration: none; +} +body.page header .subpages a:hover { + text-decoration: underline; +} + +.pageheader a.uplink { + text-decoration: none; +} + +.pageheader a.uplink:hover { + text-decoration: underline; +} + +body.page .subpages a.hasChildren:after { + content: " »"; +} + +.navHeader { + font-weight: bold; +} + +.navBar { + float: right; + height: 100%; + background-color: #ddf; + color: black; + top: 0.5em; + left: 0.5em; + margin: 0em; + padding: 0.3em; + max-width: 30%; + border: 1pt solid #99f; +} + +.navBar .subpages, +.navBar .submap { + list-style: none; + margin: 0.3em; + padding: 0; +} + +.navBar .subpages li, +.pagecontents .submap { + /* hanging indent if the subpage content wraps */ + padding-left: 1em; + text-indent: -1em; +} + +/* these are the ToC entries in the sidebar, according to what element they came from originally. */ +.pagecontents .headingH1, +.pagecontents .headingH2 { + margin-left: 0em; +} +.pagecontents .headingH3 { + margin-left: 1em; +} +.pagecontents .headingH4 { + margin-left: 2em; +} +.pagecontents .headingH5 { + margin-left: 3em; +} +.pagecontents .headingH6 { + margin-left: 4em; +} + header { width: "100%"; background-color: #5555ff; @@ -10,25 +840,16 @@ header { padding: 0.5em; } -header div.navparent { +header div.navparent .nav > div { display: flex; flex-direction: row; flex-wrap: wrap; -} - -header .navparent a.icon { - display: table-cell; - margin-top: 40; -} - -header .navparent > div { - display: table-cell; + align-items: center; } header .title { - display: table-cell; + display: inline; color: white; - font-size: 1.5em; } header .nav, @@ -40,19 +861,28 @@ header .nav a.uplink { color: white; } -div.showmap { +body.page a.showmap { + color: white; + text-decoration: none; +} + +body.sitemappage a.showmap, +body.sitemappage a.showmap:visited { + color: lightgray; + text-decoration: none; +} + +.showmap { position: absolute; right: 1em; - color: white; } -div.showmap:hover { +body.page a.showmap:hover { text-decoration: underline; color: white; } -header .nav div.subpages, -div.sitemap { +header .nav div.subpages { box-shadow: 0px 8px 16px 0px rgba(0, 0, 0, 0.2); z-index: 1; background-color: white; @@ -61,18 +891,22 @@ div.sitemap { padding: 0.5em; } -div.submap { +div.sitemap { + padding: 1em; +} + +.sitemap div.submap { margin-left: 1em; border-left: 1px solid gray; padding-left: 0.5em; } -div.subpages > .hamburger, -div.sitemap .hamburger { - position: absolute; - right: 1em; - top: 1em; - color: darkslateblue; +.submap a { + padding-left: 0.25em; +} + +.topTitle { + display: none; } div.sitemap { @@ -84,10 +918,6 @@ div.sitemap > div.submap { overflow-y: scroll; } -.subpages .hamburger:hover { - color: gray; -} - header .nav ul b { color: gray; } @@ -181,6 +1011,14 @@ div > header { display: none !important; } +section.body h1.title { + text-align: center; +} + +section.body h1.redundantTitle { + display: none; +} + section.body h1 { font-size: 2em; line-height: 1.2; @@ -206,3 +1044,19 @@ img { max-width: 100%; max-height: 90dvh; } + +/* Tables should inherit from body, but do not seem to in NN */ +section.body a:link { + color: #3030ff; + text-decoration: none; +} +section.body a:active { + color: #3030ff; +} +section.body a:visited { + color: #3030ff; + text-decoration: none; +} +section.body a:hover { + text-decoration: underline; +} diff --git a/docs/site/assets/css/reports-v2.css b/docs/site/assets/css/reports-v2.css deleted file mode 100644 index 3159fcab87b..00000000000 --- a/docs/site/assets/css/reports-v2.css +++ /dev/null @@ -1,306 +0,0 @@ -/* - Style sheet for web-based Unicode Standard Annexes, Technical Standards and Technical Reports - M.Davis and A.Freytag - - Last edited: 2015-04-06 AF, 2015-04-15 KW - removed all "-web" and "-book" suffixes - - To use, in ... - insert: - */ - - -/* conditional display */ -body { margin: 0; font-family: Arial, Geneva, sans-serif; - color: black; background-color: white; background-repeat:repeat; - background-attachment: scroll; background-position: 0%; } -div.body { margin: 3em; } /* margin for body only */ - -blockquote { margin: 20px; } -/* for quoting from the standard */ -blockquote.tus { font-size: 11pt; font-family: Times New Roman, serif; } -dt { font-style: italic; } -li {margin-top: 0.25em; margin-bottom: 0.25em; } -.bb { page-break-before: always; } -.copyright { font-size: 75%; } -.codeComment { color: #0000FF; } - -/*use these styles for contrastive background coloring associated with specific conventions */ -.syntax { background-color: #EEEEFF; } -.example { background-color: #EEFFEE; } -.values { background-color: #FFFFEE; } - -/* use these styles for constrastive background coloring with no specific meaning */ -.lightblue { background-color: #EEEEFF !important ; } -.medgray { background-color: #C0C0C0 !important ; } -.lightyellow {background-color: #FFFF80 !important ; } -.lightgray { background-color: #E4E4E4 !important; } /*not sure we need this one */ -.vlightgray { background-color: #F8F8F8 !important; } -.sandstone { background-color: #ECE8E0 !important; } - -span.codepoint { font-family: monospace; } -span.charSample { font-size: 200%; } -span.name { text-transform: lowercase; - font-variant: small-caps; font-size: 75%; } - -span.section { font-style: italic; } -span.secno { font-style: italic; } - -p.caption { page-break-after: avoid; font-weight: bold; text-align: center; } -p.rule { font-style:italic; background-color: #ECE8E0; } -td.rule, th.rule { font-style:italic; font-weight: 400 !important; padding: 3px !important; margin:2px !important; } -td.rule, th.rule { background-color: #ECE8E0 !important; border: 1px solid #F2F2F2 !important; } - - -/* from UAX#29 */ -.symbol { font-size: 90%; font-family: Arial, Geneva, sans-serif; } -.example2 { background-color: #FFFF99; } -.charlist { font-size: 90%; font-family: monospace; } -.pairItem { text-align: Center; } -.lbclass { text-align: Center; } - - -/* table related styles*/ -table { border-spacing: 0; border-collapse: collapse; - border-style: solid; border-color: black; border-width: 1px; } -th, td { border-spacing: 0; border-collapse: collapse; - border-style: solid; border-color: black; border-width: 1px; - font-family: Arial, Geneva, sans-serif; - color: black; vertical-align: top; text-align: left; } -table.body { border-style: none; width: 100%; } -td.body { border-style: none; padding: 20px; } -caption { font-size: 120%; font-weight: bold; padding-bottom: 0.75em; } -td.icon { border-style: none; border-width: 0; padding: 2px; margin: 0; - background-color: #5555FF; color: white; - font-size: 100%; text-align: left; - font-weight: bold; font-family: Arial, Geneva, sans-serif; } - -td.gray { border-style: none; border-width: 0; padding: 0px; margin: 0; - background-color: #EEEEFE; color: white; - font-size: 6pt; } - -/* various overrides for table styles */ -table.header { border-style: none; border-width: 0; margin: 0; width: 100%; } -table.noborder th, table.noborder td { border-style: none !important; border-width: 0; margin: 0; } -.noborder { border-style: none !important; border-width: 0; margin: 0; } -.nb { border-style: none !important; border-width: 0; margin: 0; } - -table.border th, table.border td { border-style: solid !important; border-width: 1px; margin: 0; } -.border { border-style: solid !important; border-width: 1px; margin: 0; } - -.nb th, .nb td { border-style: none !important; border-width: 0; margin: 0; } - -.ref { width: 92%; border-style: none; border-width: 0; margin: 0; padding: .33em; } - - -/* Tables should inherit from body, but do not seem to in NN */ -a:link { color: #3030FF; text-decoration:none; } -a:active { color: #3030FF; } -a:visited { color: #3030FF; text-decoration:none; } -a:hover { text-decoration:underline; } - -/* HEADERS and RELATED STYLES */ -h1, h2, h3, h4, h5, h6 { font-weight: bold; margin-top: 8px; } -h1 { font-size: x-large; text-transform: uppercase; text-align: center; } -h2 { font-size: large; } -h2.nonumber { font-size: large; } -h2.uaxtitle { font-size: large; text-align:center; } -h3 { font-size: medium; } -h4 { font-size: medium; font-style: italic; } -h5 { font-size: small; } -h6 { font-size: small; font-style: italic; } - -/* don't color links on headers and captions, unless hovering */ -h2 a:link, h3 a:link, h4 a:link, h5 a:link, p.caption a:link, caption a:link, -h2 a:visited, h3 a:visited, h4 a:visited, h5 a:visited, p.caption a:visited, caption a:visited { - color:black; - text-decoration:none; - } -h2 a:hover, h3 a:hover, h4 a:hover, h5 a:hover, p.caption a:hover, caption a:hover { - color: #3030FF; - text-decoration:underline; - } - -/* run in headers */ -span.run_in { font-style:italic; font-weight: bold; } -span.note { font-style: italic; } - - -p.bar { background-color: #5555FF; color: white; font-size: 100%; font-weight: bold; - font-family: Arial, Geneva, sans-serif; text-align: right; padding: 4px; } - -a.bar:link { color: white; } -a.bar:visited { color: white; } -a.bar:active { color: white; } -a.bar:hover { color: #B0B0B0; } - -/* some UAXs use h3 some h4 */ -h4.summary { margin-top: 1em; } -h3.summary { margin-top: 1em; } - -h4.contents {} -h4.status {} - - -/* link style for character class */ -a.charclass { font-weight:bold; text-decoration: none; color: #808080 } - - -/* syntax coloring for C source code samples */ - -.CKeyword {color: rgb(0,0,255); } -.CComment {color: rgb(0,128,0); } -.CCommand { font-weight:bold; color: rgb(255,0,0); } - - -.changed { background-color: #FFFF00; border-style: dotted; border-width: 1px; } -.removed { text-decoration: line-through; background-color: #FFFF00; border-style: dotted; border-width: 1px; } -.changed2 { background-color: #00FFFF; border-style: dotted; border-width: 1px; } -.removed2 { text-decoration: line-through; background-color: #00FFFF; border-style: dotted; border-width: 1px; } - -span.changedspan { background-color: #FFFF00; border-style: dotted; border-width: 1px; } -span.removedspan { text-decoration: line-through; background-color: #FFFF00; border-style: dotted; border-width: 1px; } - -.reviewnote { background-color: #FFFF80; color: #CC0000; border-style: dashed; - border-width: 1px; } - - - -/* table w/o a grid, except for lines in first and last row like in TR#25 */ - -table.gray { border-collapse: collapse; border-style: none; border-width: medium; } - -th.grayfirst, td.grayfirst { border-left-style: none; border-left-width: medium; border-right-style: none; - border-right-width: medium; border-top: 1.5pt solid gray; - border-bottom: .75pt solid gray; padding-left: 5.4pt; - padding-right: 5.4pt; padding-top: 0in; padding-bottom: 0in } -th.graymiddle, td.graymiddle { border-style: none; border-width: medium; padding-left: 5.4pt; - padding-right:5.4pt; padding-top: 0in; padding-bottom: 0in; } - -th.graylast, td.graylast { border-left-style: none; border-left-width: medium; border-right-style: none; - border-right-width: medium; border-top-style: none; - border-top-width: medium; border-bottom: 1.5pt solid gray; - padding-left: 5.4pt; padding-right: 5.4pt; padding-top: 0in; - padding-bottom: 0in; } - - -/* list styles that work well in table of contents */ -ul.toc { list-style-position: outside; list-style-type: none; margin-left: 1em; margin-bottom: 0pt; - margin-top: 0pt; line-height: 90%; } - -ol.toc { list-style-type: decimal; margin-bottom: 0pt; } - -ol ul.toc { list-style-position: outside; list-style-type: none; margin-left: 0em; margin-bottom: 0pt; - margin-top: 0pt; line-height: 90%; } - -ul ul.toc { list-style-position: outside; list-style-type: none; margin-left: 1.3em; margin-bottom: 0pt; - margin-top: 0pt; line-height: 90%; } -ul.toc li { margin-left: 0; } - -/* prevent open circles starting bullets inside numbered points */ -ol ul { list-style-type: disc; } -ul.nobullet { list-style-type: none; } - -/* is the preceding needed for web ? */ - -.right { text-align: right; } -.left { text-align: Left; } -.center { text-align: center; } - - -/* UAX#14 specific styles, duplicated here in case they are applicable elsehwere */ -table.pair { border:1px solid; font-size:8pt; } -table.pair th { text-align:center; font-size:8pt; } -table.pair th.pairItem { background-color:#800080; } -.nb-la { width:7em; border-style: none; border-width: 0; padding-left: 0.2em; background-color:#ECE8E0; } -.nb-lb { border-style: none; border-width: 0; padding-left: 0.2em; background-color:#F0F0F0; } -td.nb-lb p { margin-left:0em; } - -/* use some font styles conditionally */ -span.mathsym1 { } -span.mathsym2 { font-family: Arial, Geneva, sans-serif; } -span.mathsym3 { font-family: Arial, Geneva, sans-serif; } -span.specials { font-size: smaller; } -span.symbol { font-size: 90%; font-family: Arial, Geneva, sans-serif } /* same as .symbol */ - -/* additional table styles from standard_styles.css */ - -/*simple - single pixel border, charcol lines */ -/*subtle - same, but gray headers on gray background */ -/* the -nb variants are the same but w/o borders */ - -table.simple { border-width:1px; border-style:solid; border-color:#A0A0A0; - border-collapse:collapse; padding:0.2em; font-size:1em} - table.simple th { border-width:1px; border-style:solid; border-color:#A0A0A0; - font-weight:bold; padding:5px; text-align: left; } - table.simple td {border-width:1px; border-style:solid; border-color:#A0A0A0; - padding:5px; text-align: left; } - - -table.subtle { border-width:1px; border-style:solid; border-color:#A0A0A0; - border-collapse:collapse; padding:0.2em; font-size:1em} - table.subtle th { border-width:1px; border-style:solid; border-color:#A0A0A0; - font-weight:bold; padding:5px; text-align: left; } - table.subtle td {border-width:1px; border-style:solid; border-color:#A0A0A0; - padding:5px; text-align: left; } - - -table.subtle-nb { border-style:none; border-width:0; border-collapse:collapse; } - table.subtle-nb th { border:solid 1px #F2F2F2; font-weight:bold; padding:5px; text-align:left; } - table.subtle-nb td { border-style:none; border-width: 0; font-weight:normal; padding:5px; text-align:left; } - -table.subtle-nb table.subtle th { border-width:1px; border-style:solid; border-color:#A0A0A0; } -table.subtle-nb table.subtle td { border-width:1px; border-style:solid; border-color:#A0A0A0; } -table.subtle-nb table.simple th { color: #000000; background-color: #FFFFFF; /* was: #FFFFFF; */ - border-width:1px; border-style:solid; - border-color:#A0A0A0; } -table.subtle-nb table.simple td { border-width:1px; border-style:solid; border-color:#A0A0A0; } -table.subtle table.simple th { color: #000000; background-color:#FFFFFF; } /*was #FFFFFF */ - -table.subtle th { color: #606060; background-color:#ECE8E0;} -table.subtle-nb th { color: #606060; background-color:#ECE8E0;} - -table.subtle th p { color: #606060; background-color:#ECE8E0; } -table.subtle-nb tr th p { color: #606060; background-color:#ECE8E0; } - -table.simple th p { margin:0; } -table.subtle th p { margin:0; } -table.subtle-nb th p { margin:0; } - - -/* first-child selector only works in IE if DOCTYPE has a URL (standards mode) */ -/* the following remove space above first and below last paragraph (or list) inside a table cell, but preserve interparagraph spacing */ - -table.simple td>p:first-child { margin: 0; } -table.simple td>p { margin-top: 1.5em; } - -table.subtle td>p:first-child { margin:0; } -table.subtle td>p { margin-top:1.5em; } - -table.subtle-nb td>p:first-child { margin:0; } -table.subtle-nb td>p { margin-top:1.5em; } - -table.simple td>ul:first-child { margin-top:0; margin-bottom:0; } -table.simple td>ol:first-child { margin-top:0; margin-bottom:0; } -table.simple td>ul { margin-top:1.5em; margin-bottom:0.5em; } -table.simple td>ol { margin-top:1.5em; margin-bottom:0.5em; } - -table.subtle td>ul:first-child { margin-top:0; margin-bottom:0; } -table.subtle td>ol:first-child { margin-top:0; margin-bottom:0; } -table.subtle td>ul { margin-top:1.5em; margin-bottom:0.5em; } -table.subtle td>ol { margin-top:1.5em; margin-bottom:0.5em; } - -table.subtle-nb td>ul:first-child { margin-top:0; margin-bottom:0; } -table.subtle-nb td>ol:first-child { margin-top:0; margin-bottom:0; } -table.subtle-nb td>ul { margin-top:1.5em; margin-bottom:0.5em; } -table.subtle-nb td>ol { margin-top:1.5em; margin-bottom:0.5em; } - -/* override the default padding use with table style "simple" */ -table.nopad { padding: 0; } -table.nopad th, table.nopad td { padding:0;} - -table.loose th, table.loose td { padding-top: 8px; padding-bottom: 8px; } - -/* override for no-border cells in the middle of standard tables - hide-borders also affects row borders between adjacent cells of same class*/ -.hide-borders { border-left:hidden !important; border-right:hidden !important; border-top:none !important; border-bottom:none!important; } -.hide-side-borders { border-left:hidden !important; border-right:hidden !important; } diff --git a/docs/site/assets/js/build.mjs b/docs/site/assets/js/build.mjs index 5b98787d668..07be0676f7c 100644 --- a/docs/site/assets/js/build.mjs +++ b/docs/site/assets/js/build.mjs @@ -11,7 +11,7 @@ import { Dirent } from "node:fs"; // utilities and constants // files to skip -const SKIP_THESE = /(node_modules|\.jekyll-cache|^sitemap.*)/; +const SKIP_THESE = /(node_modules|\.jekyll-cache|^sitemap.tsv)/; // final URL of site const SITE = "https://cldr.unicode.org"; @@ -31,7 +31,7 @@ const coll = new Intl.Collator(["und"]); async function processFile(d, fullPath, out) { const f = await fs.readFile(fullPath, "utf-8"); const m = matter(f); - fullPath = fullPath.replace(/\\/g, '/'); // backslash with slash, for win + fullPath = fullPath.replace(/\\/g, "/"); // backslash with slash, for win if (m && m.data) { const { data } = m; out.all.push({ ...data, fullPath }); diff --git a/docs/site/assets/js/cldrsite.js b/docs/site/assets/js/cldrsite.js index 7fdcf4410a3..c52335b36ee 100644 --- a/docs/site/assets/js/cldrsite.js +++ b/docs/site/assets/js/cldrsite.js @@ -1,5 +1,9 @@ const { ref } = Vue; +// load anchor.js - must be before the sidebar loads. might as well do this +// first thing. +anchors.add("h1, h2, h3, h4, h5, h6"); + // site management let myPath = window.location.pathname.slice(1) || "index.html"; @@ -51,6 +55,11 @@ async function siteData() { return j; } +/** + * Single Promise for site data. + */ +const siteDataPromise = siteData(); + const AncestorPages = { props: ["ancestorPages"], setup() {}, @@ -61,6 +70,28 @@ const AncestorPages = { `, }; +const SubPageEntry = { + props: { + children: Boolean, + title: String, + href: String, + }, + computed: { + style() { + if (this.children) { + return "hasChildren"; + } else { + return ""; + } + }, + }, + template: ` + + {{ title }} + + `, +}; + const SubPagesPopup = { props: { children: { @@ -68,6 +99,9 @@ const SubPagesPopup = { required: true, }, }, + components: { + SubPageEntry, + }, emits: ["hide"], // when user clicks hide setup() {}, methods: { @@ -76,14 +110,11 @@ const SubPagesPopup = { }, }, template: ` -
- + @@ -102,12 +133,15 @@ const SubMap = { setup() {}, computed: { title() { - return this.usermap[this.path].title; + if (!this.usermap) return ""; + return this.usermap[this.path]?.title; }, children() { - return this.usermap[this.path].children || []; + if (!this.usermap) return []; + return this.usermap[this.path]?.children || []; }, href() { + if (!this.usermap) return ""; return path2url(this.path); }, }, @@ -119,6 +153,24 @@ const SubMap = { `, }; +const SubContents = { + name: "SubContents", + props: { + title: String, + href: String, + children: Object, + path: String, + style: String, + }, + setup() {}, + template: ` +
+ {{title}} + +
+ `, +}; + const SiteMap = { props: { tree: { @@ -138,9 +190,26 @@ const SiteMap = { }, template: `
- - Site Map
- + +
+ `, +}; + +const PageContents = { + components: { + SubContents, + }, + props: { + children: { + type: Object, + required: true, + }, + }, + setup() {}, + template: ` +
+ +
`, }; @@ -171,7 +240,7 @@ const app = Vue.createApp( }, mounted() { const t = this; - siteData().then( + siteDataPromise.then( (d) => (t.tree.value = d), (e) => (t.status = e) ); @@ -255,24 +324,15 @@ const app = Vue.createApp(
{{ status }}
Loading…
- [Unicode]   - - -
{{ ourTitle }}
- -
- - {{ ourTitle }} - - - -
-
Site Map
- + +
`, }, { @@ -283,5 +343,178 @@ const app = Vue.createApp( app.mount("#nav"); -// load anchor.js -anchors.add("h1, h2, h3, h4, h5, h6, caption, dfn"); +if (myPath === "sitemap.html") { + // for now: duplicate app including sitemap + const sapp = Vue.createApp( + { + components: { + SiteMap, + }, + setup(props) { + // the tree.json data + const tree = ref({}); + // loading status for tree.json + const status = ref(null); + // is the site map shown? + const showmap = ref(true); + + return { + tree, + status, + showmap, + }; + }, + mounted() { + const t = this; + siteDataPromise.then( + (d) => (t.tree.value = d), + (e) => (t.status = e) + ); + }, + props: { + path: String, + }, + computed: { + /** base path: 'index' or 'downloads/cldr-33' */ + base() { + if (this.path) { + return drophtml(this.path); + } else { + return "index"; // '' => 'index' + } + return null; + }, + ourTitle() { + if (this.tree?.value) { + if (this.path === "") return this.rootTitle; + return this?.tree?.value?.usermap[this.base]?.title; + } + }, + // title of root + rootTitle() { + const usermap = this?.tree?.value?.usermap ?? {}; + return usermap?.index?.title ?? "CLDR"; + }, + }, + template: ` +
+
{{ status }}
+
Loading…
+ + +
`, + }, + { + // path of / goes to /index.html + path: myPath, + } + ); + sapp.mount("#sitemap"); +} else { + // NOT in sitemap - mount the view app for the in-page sidebar + const sapp = Vue.createApp( + { + components: { + PageContents, + SubPagesPopup, + }, + setup(props) { + // the tree.json data + const tree = ref({}); + // loading status for tree.json + const status = ref(null); + // is the site map shown? + const showmap = ref(true); + + return { + tree, + status, + showmap, + }; + }, + mounted() { + const t = this; + siteDataPromise.then( + (d) => { + t.tree.value = d; + // set style on first header if redundant + if (this.anchorElements[0]?.textContent === this.ourTitle) { + this.anchorElements[0].className = "redundantTitle"; + } + }, + (e) => (t.status = e) + ); + }, + props: { + path: String, + anchorElements: Object, + }, + computed: { + /** base path: 'index' or 'downloads/cldr-33' */ + base() { + if (this.path) { + return drophtml(this.path); + } else { + return "index"; // '' => 'index' + } + return null; + }, + children() { + const usermap = this?.tree?.value?.usermap; + if (!usermap) return []; // no children + const entry = usermap[this.base]; + const children = entry?.children; + if (!children || !children.length) return []; + return children.map((path) => ({ + path, + href: path2url(path), + title: usermap[path]?.title || path, + children: (usermap[path].children ?? []).length > 0, + })); + }, + contents() { + // For now we generate a flat map + // this + let objects = this.anchorElements?.map( + ({ textContent, id, tagName }) => ({ + title: textContent, + href: `#${id}`, + children: null, + style: `heading${tagName}`, + }) + ); + if (objects[0]?.title === this.ourTitle) { + objects = objects.slice(1); + } + if (!objects?.length) return null; + return objects; + }, + ourTitle() { + if (this.tree?.value) { + if (this.path === "") return this.rootTitle; + return this?.tree?.value?.usermap[this.base]?.title; + } + }, + // title of root + rootTitle() { + const usermap = this?.tree?.value?.usermap ?? {}; + return usermap?.index?.title ?? "CLDR"; + }, + }, + template: ` +
+ +

{{ ourTitle }}

+
`, + }, + { + // path of / goes to /index.html + path: myPath, + anchorElements: anchors.elements, + } + ); + sapp.mount("#sidebar"); +} diff --git a/docs/site/cldr-tc.md b/docs/site/cldr-tc.md index bcec0ad2e55..9f5e0c60993 100644 --- a/docs/site/cldr-tc.md +++ b/docs/site/cldr-tc.md @@ -1,8 +1,8 @@ --- -title: CLDR Technical Committee +title: "CLDR Technical Committee (TC)" --- -# CLDR Technical Committee +# CLDR Technical Committee (TC) The CLDR Technical Committee is responsible for the Unicode Common Locale Data Repository data repository, which encompasses: @@ -10,3 +10,6 @@ which encompasses: - the specification for the data and structure (LDML) - the tooling used to gather locale data, test the data and structure, and provide test data for implementations - additional other formats for the locale data (eg, JSON) + +For information on the working groups (WGs) under the CLDR Technical Committee, see the subpages in the sidebar. +For the leadership of the TC and WGs, see the listings on [Unicode Technical Group Leadership](https://www.unicode.org/consortium/techcommittees.html). diff --git a/docs/site/ddl.md b/docs/site/ddl.md index 04052e88a5e..59816f4e190 100644 --- a/docs/site/ddl.md +++ b/docs/site/ddl.md @@ -1,12 +1,12 @@ --- -title: CLDR DDL Subcommittee +title: CLDR DDL Working Group --- -# CLDR DDL Subcommittee +# CLDR DDL Working Group -The Common Locale Data Repository (CLDR) is [widely used](https://cldr.unicode.org/index), and the content has grown dramatically over the years with participation by organizations of all types and sizes, as well as many individual contributors. +The Common Locale Data Repository (CLDR) is [widely used](/index), and the content has grown dramatically over the years with participation by organizations of all types and sizes, as well as many individual contributors. -Contributors for Digitally Disadvantaged Languages (DDL) face unique challenges. The CLDR-DDL subcommittee has been formed to evaluate mechanisms to make it easier for contributors for DDLs to: +Contributors for _Digitally Disadvantaged Languages_ (DDL) face unique challenges. The CLDR-DDL subcommittee has been formed to evaluate mechanisms to make it easier for contributors for DDLs to: 1. become contributors to CLDR 2. improve the coverage for their language in CLDR diff --git a/docs/site/development.md b/docs/site/development.md index 3433314d3c4..b11074ee652 100644 --- a/docs/site/development.md +++ b/docs/site/development.md @@ -4,4 +4,5 @@ title: Internal Development # Internal Development - +This section provides information for CLDR developers. +See the subpages in the sidebar. diff --git a/docs/site/development/adding-locales.md b/docs/site/development/adding-locales.md index 464a8a5089b..10516b1b0aa 100644 --- a/docs/site/development/adding-locales.md +++ b/docs/site/development/adding-locales.md @@ -4,7 +4,7 @@ title: Adding a new locale to CLDR # Adding a new locale to CLDR -NOTE: this is an internal page for TC developers. Others should see [Core Data for New Locales](https://cldr.unicode.org/index/cldr-spec/core-data-for-new-locales). +NOTE: this is an internal page for TC developers. Others should see [Core Data for New Locales](/index/cldr-spec/core-data-for-new-locales). ### Country Locales @@ -12,7 +12,7 @@ If you are just adding a new country locale (eg we have a locale for the languag ### Minimal Structure -Before adding a new locale, you must have the core data: see [Core Data for New Locales](https://cldr.unicode.org/index/cldr-spec/core-data-for-new-locales) for the process. +Before adding a new locale, you must have the core data: see [Core Data for New Locales](/index/cldr-spec/core-data-for-new-locales) for the process. Here is an example: https://github.com/unicode-org/cldr/pull/59/files @@ -33,7 +33,7 @@ Here is an example: https://github.com/unicode-org/cldr/pull/59/files - The default content locale is usually the locale where the most people speak the language in question. - If the language is not already in common/supplemental/likelySubtags.xml - Send the literate pop information to Rick, or file a bug, if the language is not already in the supplemental data. - - Once he has added, run the tool in [LikelySubtags and Default Content](https://cldr.unicode.org/development/updating-codes/likelysubtags-and-default-content) to add the new language and its associated subtags to common/supplemental/likelySubtags.xml + - Once he has added, run the tool in [LikelySubtags and Default Content](/development/updating-codes/likelysubtags-and-default-content) to add the new language and its associated subtags to common/supplemental/likelySubtags.xml - Also add the English translation for any new languages in **common/main/en.xml** - If requested, add to vendor targets (Locale.txt), and to Cldr where resources are committed. - Run the tests (will be done automatically when a PR is created) diff --git a/docs/site/development/cldr-big-red-switch.md b/docs/site/development/cldr-big-red-switch.md index 68d35af128b..bad4d2592a5 100644 --- a/docs/site/development/cldr-big-red-switch.md +++ b/docs/site/development/cldr-big-red-switch.md @@ -12,7 +12,7 @@ title: 'CLDR: Big Red Switch' ### Trial New Version (Let us know if you need write access!) -(For editors: [List View of BRS](https://cldr.unicode.org/development/cldr-big-red-switch/list-view-of-brs), [Spreadsheet View](https://docs.google.com/spreadsheets/d/1dIOLxKX2gW7BRDVdMBH9qr1GdxpPj8Bc1Pe-02p_92k/edit#gid=0)) +(For editors: [List View of BRS](/development/cldr-big-red-switch/list-view-of-brs), [Spreadsheet View](https://docs.google.com/spreadsheets/d/1dIOLxKX2gW7BRDVdMBH9qr1GdxpPj8Bc1Pe-02p_92k/edit#gid=0)) ## Contributor Message diff --git a/docs/site/development/cldr-big-red-switch/generating-charts.md b/docs/site/development/cldr-big-red-switch/generating-charts.md index 4de770558bb..556859ade3f 100644 --- a/docs/site/development/cldr-big-red-switch/generating-charts.md +++ b/docs/site/development/cldr-big-red-switch/generating-charts.md @@ -2,28 +2,27 @@ title: Generating Charts --- -# Generating Charts - ## Generate -The input for this is the cldr\-staging/production file, and the output is in github cldr\-staging. **(If for the development version, the input is main or the maint branch, but we should change that.)** +The input for this process is the `../cldr-staging/production` file, and the output is in the github repo [`cldr-staging`](https://github.com/unicode-org/cldr-staging). **(If for the development version, the input is `main` or the `maint` branch, but we should change that.)** `cldr-staging` is expected to be checked out as a _sibling_ directory to your CLDR source repository, hence `../cldr-staging`. 1. Make sure the settings and VM arguments are right for where you are in the release: 1. **Start, Mid\-release, Prefinal release,** or **Final release** (see below) -2. Run GenerateAllCharts. The results for each will be in ... cldr\-staging/docs/charts/by\_type/names.currency.html and so on. -3. Spot\-check for sanity. - 1. Start from the main page (eg cldr\-staging/docs/charts/index.html), and click on each of those links. +2. Build the keyboard charts, see if it was not run. +3. Run the Java tool `GenerateAllCharts`. The results for each will be in `../cldr-staging/docs/charts/by_type/names.currency.html` and so on. +4. Spot\-check for sanity. + 1. Start from the main page (eg `cldr-staging/docs/charts/index.html`), and click on each of those links. 2. On each of the subpages, take the first chart on each page, recursively. 3. Use the "Index" link to go back up (not the back button), and make sure it goes to the right version of the page. -4. Check into github on cldr\-staging +5. PR into github in the `cldr-staging` repo. ## Start Release -1. Make sure the version  (eg **99**) is right in ToolConstants +1. Make sure the version  (eg **`99`**) is right in `ToolConstants.java` 1. Make sure the *last* number (eg **99\.0**) is in CLDR\_VERSIONS 2. Set DEFAULT\_CHART\_VERSION \= "99"; -2. Add an new folder with that number, such as cldr\-staging/docs/charts/**99** -3. Create the archive ([Creating the Archive](https://cldr.unicode.org/development/creating-the-archive)) with at least the last release (if you don't have it already) +2. Add an new folder with that number, such as `cldr-staging/docs/charts/`**99** +3. Create the archive ([Creating the Archive](/development/creating-the-archive)) with at least the last release (if you don't have it already) 4. **Use the same VM arguments as Mid\-Release** ## Mid\-release @@ -37,30 +36,30 @@ The input for this is the cldr\-staging/production file, and the output is in gi 1. VM Arguments 1. \-DCHART\_VERSION\=**99** 2. \-DCHART\_STATUS\=**trunk** (uses trunk, no β. Used at the end of the release, but before the final data is in cldr\-archive) -2. In the printout from delta\_summary.txt, there is a listing of the sizes at the top +2. In the printout from `tsv/delta_summary.tsv`, there is a listing of the sizes at the top 1. Something like the following: 1. \# dir file added deleted changed total 1. TOTAL 30,276 3,601 10,909 2,153,094 - 2. Add those new figures to the release page + 2. Add those new figures to the release page _(TODO: where?)_ ## Final Release 1. Make sure the settings are: 1. \-DCHART\_VERSION\=**99** - 2. \-DCHART\_STATUS\=**release** (only uses the cldr\-archive, no β) -2. Change the page to add the new release -3. Check the redirection links on [test\-chart\-links](https://cldr.unicode.org/development/cldr-big-red-switch/test-chart-links). -4. On index.html; open it, and fix the version (eg to 25β \=\> 25\) + 2. \-DCHART\_STATUS\=**release** (only uses the `cldr-archive`, no β) +2. Check the redirection links on [test\-chart\-links](/development/cldr-big-red-switch/test-chart-links). +3. On `index.html`; open it, and fix the version (eg to 25β \=\> 25\) ## Modifying the chart programs -The chart programs have grown over time, and need some cleanup. For example, the supplemental charts duplicate code that is now in SupplementalDataInfo.  - -### ShowLanguages. +The chart programs have grown over time, and need some cleanup. For example, the supplemental charts duplicate code that is now in `SupplementalDataInfo.java` -The messages that they use are in a file util/data/chart\_messages.html. The right cell contains the key, which is extracted by lines like: +### `ShowLanguages.java` - PrintWriter pw \= new PrintWriter(new FormattedFileWriter(index, "Zone \\u2192 Tzid", null)); +The messages that they use are in a file `util/data/chart_messages.html`. The right cell contains the key, which is extracted by lines like: -The key will be zone\_tzid, in this case. +```java +PrintWriter pw = new PrintWriter(new FormattedFileWriter(index, "Zone \u2192 Tzid", null)); +``` +The key will be `zone_tzid`, in this case. diff --git a/docs/site/development/cldr-development-site.md b/docs/site/development/cldr-development-site.md index 0bb27878765..dd3ac70fcdc 100644 --- a/docs/site/development/cldr-development-site.md +++ b/docs/site/development/cldr-development-site.md @@ -6,15 +6,15 @@ title: CLDR Development Site Some of the key pages for developers are: -1. [New CLDR Developers](https://cldr.unicode.org/development/new-cldr-developers) - 1. [Maven Setup](https://cldr.unicode.org/development/maven) (for command line & Eclipse) - 1. Obsolete (but may still contain useful nuggets): [Eclipse Setup](https://cldr.unicode.org/development/eclipse-setup) - 2. [Eclipse](https://cldr.unicode.org/development/running-survey-tool/building-and-running-the-survey-tool-on-eclipse) (survey tool) -2. [Handling Tickets (bugs/enhancements)](https://cldr.unicode.org/development/development-process) -3. [Updating DTDs](https://cldr.unicode.org/development/updating-dtds) -4. [Editing CLDR Spec](https://cldr.unicode.org/development/editing-cldr-spec) - 1. [CLDR: Big Red Switch](https://cldr.unicode.org/development/cldr-big-red-switch) (checklist for release) -5. [Adding a new locale to CLDR](https://cldr.unicode.org/development/adding-locales) +1. [New CLDR Developers](/development/new-cldr-developers) + 1. [Maven Setup](/development/maven) (for command line & Eclipse) + 1. Obsolete (but may still contain useful nuggets): [Eclipse Setup](/development/eclipse-setup) + 2. [Eclipse](/development/running-survey-tool/building-and-running-the-survey-tool-on-eclipse) (survey tool) +2. [Handling Tickets (bugs/enhancements)](/development/development-process) +3. [Updating DTDs](/development/updating-dtds) +4. [Editing CLDR Spec](/development/editing-cldr-spec) + 1. [CLDR: Big Red Switch](/development/cldr-big-red-switch) (checklist for release) +5. [Adding a new locale to CLDR](/development/adding-locales) The subpages listed give more information on internal CLDR development. See also: [Sitemap](https://sites.google.com/site/cldr/system/app/pages/sitemap/hierarchy). diff --git a/docs/site/development/cldr-development-site/updating-englishroot.md b/docs/site/development/cldr-development-site/updating-englishroot.md index 21fcfdeeb0b..3c05c9cc290 100644 --- a/docs/site/development/cldr-development-site/updating-englishroot.md +++ b/docs/site/development/cldr-development-site/updating-englishroot.md @@ -18,7 +18,7 @@ The tool is in tools/java/org/unicode/cldr/tool/GenerateBirth.java. It requires **CldrUtility.ARCHIVE\_DIRECTORY** -1. Create the archive ([Creating the Archive](https://cldr.unicode.org/development/creating-the-archive)) with all releases (if you don't have it already) +1. Create the archive ([Creating the Archive](/development/creating-the-archive)) with all releases (if you don't have it already) 2. The archive directory should have the latest version of every major and minor version (where versions before 21\.0 have the major version split across the top two fields). 3. You will probably need to modify both CldrVersion.java and ToolConstants.java to bring them up to date. diff --git a/docs/site/development/coding-cldr-tools/documenting-cldr-tools.md b/docs/site/development/coding-cldr-tools/documenting-cldr-tools.md index d725333ebae..d7112f26f5d 100644 --- a/docs/site/development/coding-cldr-tools/documenting-cldr-tools.md +++ b/docs/site/development/coding-cldr-tools/documenting-cldr-tools.md @@ -8,7 +8,7 @@ title: Documenting CLDR Tools You can add the @CLDRTool annotation to any class in cldr\-code that has a main() function, and it will be documented as part of the JAR cldr\-code.jar is used. -See [CLDR Tools](https://cldr.unicode.org/development/cldr-tools) for general information about obtaining and using CLDR tools. +See [CLDR Tools](/development/cldr-tools) for general information about obtaining and using CLDR tools. ## Coding it @@ -41,5 +41,5 @@ Additional parameters: - **hidden** \- if non\-empty, this specifies a reason to *not* show the tool when running "java \-jar" without "\-l". For example, the main() function may be a less\-useful internal tool, or a test. ## Documenting it -Assuming your tools’s alias is *myalias,* create a new subpage with the URL http://cldr.unicode.org/tools/myalias (a subpage of [CLDR Tools](https://cldr.unicode.org/development/cldr-tools)). Fill this page out with information about how to use your tool. +Assuming your tools’s alias is *myalias,* create a new subpage with the URL http://cldr.unicode.org/tools/myalias (a subpage of [CLDR Tools](/development/cldr-tools)). Fill this page out with information about how to use your tool. diff --git a/docs/site/development/creating-the-archive.md b/docs/site/development/creating-the-archive.md index 89726127743..827f6867526 100644 --- a/docs/site/development/creating-the-archive.md +++ b/docs/site/development/creating-the-archive.md @@ -6,9 +6,9 @@ title: Checking out the CLDR Archive A number of the tools in CLDR depend on access to older versions. These tools include: -- [Generating Charts](https://cldr.unicode.org/development/cldr-big-red-switch/generating-charts) -- [Update Validity XML](https://cldr.unicode.org/development/updating-codes/update-validity-xml) -- [Updating English/Root](https://cldr.unicode.org/development/cldr-development-site/updating-englishroot) +- [Generating Charts](/development/cldr-big-red-switch/generating-charts) +- [Update Validity XML](/development/updating-codes/update-validity-xml) +- [Updating English/Root](/development/cldr-development-site/updating-englishroot) - \[Note: add others when we find them] - Some tests - TestCompatibility.java @@ -20,7 +20,7 @@ A number of the tools in CLDR depend on access to older versions. These tools in ### Here's how to do that. -1. Create an archive directory **cldr\-archive**. The Simplest is if it on the same level as your local CLDR repository. In other words, if your [CLDR\_DIR](https://cldr.unicode.org/development/cldr-development-site/running-cldr-tools) is .../workspace/cldr, then create the directory  **…/workspace/cldr\-archive**
+1. Create an archive directory **cldr\-archive**. The Simplest is if it on the same level as your local CLDR repository. In other words, if your [CLDR\_DIR](/development/cldr-development-site/running-cldr-tools) is .../workspace/cldr, then create the directory  **…/workspace/cldr\-archive**
(Note: The Java property **ARCHIVE** can be used to overide the path to cldr\-archive). 2. Open up ToolConstants.java and look at ToolConstants.CLDR\_VERSIONS. You'll see something like: 1. **public static final** List\ ***CLDR\_VERSIONS*** \= ImmutableList.of( diff --git a/docs/site/development/development-process.md b/docs/site/development/development-process.md index fb91d86899f..ae51de8f116 100644 --- a/docs/site/development/development-process.md +++ b/docs/site/development/development-process.md @@ -1,5 +1,5 @@ --- -title: Handling Tickets (bugs/enhancements) +title: 'Handling Tickets (bugs/enhancements)' --- # Handling Tickets (bugs/enhancements) @@ -19,7 +19,7 @@ title: Handling Tickets (bugs/enhancements) 1. If user sets Component (we always should!) automatically assigns the Owner based on the component owner for the pre\-assessment. \[Add link to Components and Owner] 2. *At this point the Owner function is really as an assessor.* 3. If user does not select the Component, it remains for the group TC triage with Component\=to\-assess, Owner\=anybody. These tickets will be assessed after all the pre\-assessed tickets have been triaged. -2. All TC members, look at [To\-assess by Owner / Component](https://unicode.org/cldr/trac/report/100) before each triage day. +2. All TC members, look at the triage spreadsheet linked from the agenda before each triage day. 1. Assess the **to\-assess** tickets assigned to you. 2. You can close bugs as duplicate or if user misunderstanding if it is very clear without committee discussion. Always include a comment if you close the ticket. 3. If the component is wrong, change component and reassign to the right component owner. @@ -87,12 +87,12 @@ When a ticket is in design, the owner is responsible for bringing back to the co ### DTD Changes -- **If you are making any DTD changes, please follow the instructions on** [**Updating DTDs**](https://cldr.unicode.org/development/updating-dtds)**.** +- **If you are making any DTD changes, please follow the instructions on** [**Updating DTDs**](/development/updating-dtds)**.** ### Testing! - Add unit tests for changes you make, then -- **Make sure to run the tests in** [**Running Tests**](https://cldr.unicode.org/development/running-tests)**!** +- **Make sure to run the tests in** [**Running Tests**](/development/running-tests)**!** Skipping test failures @@ -120,8 +120,8 @@ If there is a test failure that is due to a bug that cannot be fixed right now ( 2. ***Check*** [http://unicode.org/cldr/trac/timeline?changeset\=on\&build\=on\&daysback\=8](http://unicode.org/cldr/trac/timeline?changeset=on&build=on&daysback=8) to verify that no changes "slipped in" 3. ***Add a line PUSHING*** 4. ***Push to production*** -5. *If there were noticeable changes, put them in* [*http://cldr.unicode.org/index/survey\-tool\#TOC\-Latest\-Updates*](http://cldr.unicode.org/index/survey-tool#TOC-Latest-Updates) ***(move the old items up to Tool Updates).*** -6. *If it was a Known Bug, remove from* [*https://sites.google.com/site/cldr/index/survey\-tool/known\-bugs*](https://cldr.unicode.org/index/survey-tool/faq-and-known-bugs)***.*** +5. *If there were noticeable changes, put them in* [*http://cldr.unicode.org/index/survey\-tool\#TOC\-Latest\-Updates*](/index/survey-tool#TOC-Latest-Updates) ***(move the old items up to Tool Updates).*** +6. *If it was a Known Bug, remove from* [*https://sites.google.com/site/cldr/index/survey\-tool/known\-bugs*](/index/survey-tool/faq-and-known-bugs)***.*** 7. ***Change status of all READY and PUSHING items to PUSHED.*** 8. ***You can delete some older items that are no longer relevant.*** 9. ***If the spreadsheet data seems stale, switch to the BuildsCheckins tab, and increment the 'to update' cell. \[ If anyone knows a better way to structure the spreadsheet, please feel free.. \-srl]*** diff --git a/docs/site/development/development-process/design-proposals.md b/docs/site/development/development-process/design-proposals.md index b065233d9d5..d861b368106 100644 --- a/docs/site/development/development-process/design-proposals.md +++ b/docs/site/development/development-process/design-proposals.md @@ -6,111 +6,111 @@ title: Design Proposals This section contains design proposals, listed as subpages below. -In each proposal, please add a header and a TOC if it is longer than a page. You can cut&paste the structure in [Proposed Collation Additions](https://cldr.unicode.org/development/development-process/design-proposals/proposed-collation-additions) and make the necessary changes. +In each proposal, please add a header and a TOC if it is longer than a page. You can cut&paste the structure in [Proposed Collation Additions](/development/development-process/design-proposals/proposed-collation-additions) and make the necessary changes. -[Alternate Time Formats](https://cldr.unicode.org/development/development-process/design-proposals/alternate-time-formats) +[Alternate Time Formats](/development/development-process/design-proposals/alternate-time-formats) -[BCP 47 Changes (DRAFT)](https://cldr.unicode.org/development/development-process/design-proposals/bcp-47-changes-draft) +[BCP 47 Changes (DRAFT)](/development/development-process/design-proposals/bcp-47-changes-draft) -[BCP47 Syntax Mapping](https://cldr.unicode.org/development/development-process/design-proposals/bcp47-syntax-mapping) +[BCP47 Syntax Mapping](/development/development-process/design-proposals/bcp47-syntax-mapping) -[BCP47 Validation and Canonicalization](https://cldr.unicode.org/development/development-process/design-proposals/bcp47-validation-and-canonicalization) +[BCP47 Validation and Canonicalization](/development/development-process/design-proposals/bcp47-validation-and-canonicalization) -[BIDI handling of Structured Text](https://cldr.unicode.org/development/development-process/design-proposals/bidi-handling-of-structured-text) +[BIDI handling of Structured Text](/development/development-process/design-proposals/bidi-handling-of-structured-text) -[Change to Sites?](https://cldr.unicode.org/development/development-process/design-proposals/change-to-sites) +[Change to Sites?](/development/development-process/design-proposals/change-to-sites) -[Chinese (and other) calendar support, intercalary months, year cycles](https://cldr.unicode.org/development/development-process/design-proposals/chinese-and-other-calendar-support-intercalary-months-year-cycles) +[Chinese (and other) calendar support, intercalary months, year cycles](/development/development-process/design-proposals/chinese-and-other-calendar-support-intercalary-months-year-cycles) -[Consistent Casing](https://cldr.unicode.org/development/development-process/design-proposals/consistent-casing) +[Consistent Casing](/development/development-process/design-proposals/consistent-casing) -[Coverage Revision](https://cldr.unicode.org/development/development-process/design-proposals/coverage-revision) +[Coverage Revision](/development/development-process/design-proposals/coverage-revision) -[Currency Code Fallback](https://cldr.unicode.org/development/development-process/design-proposals/currency-code-fallback) +[Currency Code Fallback](/development/development-process/design-proposals/currency-code-fallback) -[Day-Period Design](https://cldr.unicode.org/development/development-process/design-proposals/day-period-design) +[Day-Period Design](/development/development-process/design-proposals/day-period-design) -[Delimiter (Quotation Mark) Proposal](https://cldr.unicode.org/development/development-process/design-proposals/delimiter-quotation-mark-proposal) +[Delimiter (Quotation Mark) Proposal](/development/development-process/design-proposals/delimiter-quotation-mark-proposal) -[English Inheritance](https://cldr.unicode.org/development/development-process/design-proposals/english-inheritance) +[English Inheritance](/development/development-process/design-proposals/english-inheritance) -[European Ordering Rules Issues](https://cldr.unicode.org/development/development-process/design-proposals/european-ordering-rules-issues) +[European Ordering Rules Issues](/development/development-process/design-proposals/european-ordering-rules-issues) -[Extended Windows-Olson zid mapping](https://cldr.unicode.org/development/development-process/design-proposals/extended-windows-olson-zid-mapping) +[Extended Windows-Olson zid mapping](/development/development-process/design-proposals/extended-windows-olson-zid-mapping) -[Fractional Plurals](https://cldr.unicode.org/development/development-process/design-proposals/fractional-plurals) +[Fractional Plurals](/development/development-process/design-proposals/fractional-plurals) -[Generic calendar data](https://cldr.unicode.org/development/development-process/design-proposals/generic-calendar-data) +[Generic calendar data](/development/development-process/design-proposals/generic-calendar-data) -[Grammar & capitalization forms for date/time elements and others](https://cldr.unicode.org/development/development-process/design-proposals/grammar-capitalization-forms-for-datetime-elements-and-others) +[Grammar & capitalization forms for date/time elements and others](/development/development-process/design-proposals/grammar-capitalization-forms-for-datetime-elements-and-others) -[Grapheme Usage](https://cldr.unicode.org/development/development-process/design-proposals/grapheme-usage) +[Grapheme Usage](/development/development-process/design-proposals/grapheme-usage) -[Hebrew Months](https://cldr.unicode.org/development/development-process/design-proposals/hebrew-months) +[Hebrew Months](/development/development-process/design-proposals/hebrew-months) -[Index Characters](https://cldr.unicode.org/development/development-process/design-proposals/index-characters) +[Index Characters](/development/development-process/design-proposals/index-characters) -[Islamic Calendar Types](https://cldr.unicode.org/development/development-process/design-proposals/islamic-calendar-types) +[Islamic Calendar Types](/development/development-process/design-proposals/islamic-calendar-types) -[ISO 636 Deprecation Requests - DRAFT](https://cldr.unicode.org/development/development-process/design-proposals/iso-636-deprecation-requests-draft) +[ISO 636 Deprecation Requests - DRAFT](/development/development-process/design-proposals/iso-636-deprecation-requests-draft) -[JSON Packaging (Approved by the CLDR TC on 2015-03-25)](https://cldr.unicode.org/development/development-process/design-proposals/json-packaging-approved-by-the-cldr-tc-on-2015-03-25) +[JSON Packaging (Approved by the CLDR TC on 2015-03-25)](/development/development-process/design-proposals/json-packaging-approved-by-the-cldr-tc-on-2015-03-25) -[Language Data Consistency](https://cldr.unicode.org/development/development-process/design-proposals/language-data-consistency) +[Language Data Consistency](/development/development-process/design-proposals/language-data-consistency) -[Language Distance Data](https://cldr.unicode.org/development/development-process/design-proposals/language-distance-data) +[Language Distance Data](/development/development-process/design-proposals/language-distance-data) -[List Formatting](https://cldr.unicode.org/development/development-process/design-proposals/list-formatting) +[List Formatting](/development/development-process/design-proposals/list-formatting) -[Locale Format](https://cldr.unicode.org/development/development-process/design-proposals/locale-format) +[Locale Format](/development/development-process/design-proposals/locale-format) -[Localized GMT Format](https://cldr.unicode.org/development/development-process/design-proposals/localized-gmt-format) +[Localized GMT Format](/development/development-process/design-proposals/localized-gmt-format) -[Math Formula Preferences](https://cldr.unicode.org/development/development-process/design-proposals/math-formula-preferences) +[Math Formula Preferences](/development/development-process/design-proposals/math-formula-preferences) -[New BCP47 Extension T Fields](https://cldr.unicode.org/development/development-process/design-proposals/new-bcp47-extension-t-fields) +[New BCP47 Extension T Fields](/development/development-process/design-proposals/new-bcp47-extension-t-fields) -[New Time Zone Patterns](https://cldr.unicode.org/development/development-process/design-proposals/new-time-zone-patterns) +[New Time Zone Patterns](/development/development-process/design-proposals/new-time-zone-patterns) -[Path Filtering](https://cldr.unicode.org/development/development-process/design-proposals/path-filtering) +[Path Filtering](/development/development-process/design-proposals/path-filtering) -[Pattern character for “related year”](https://cldr.unicode.org/development/development-process/design-proposals/pattern-character-for-related-year) +[Pattern character for “related year”](/development/development-process/design-proposals/pattern-character-for-related-year) -[Pinyin Fixes](https://cldr.unicode.org/development/development-process/design-proposals/pinyin-fixes) +[Pinyin Fixes](/development/development-process/design-proposals/pinyin-fixes) -[Post Mortem](https://cldr.unicode.org/development/development-process/design-proposals/post-mortem) +[Post Mortem](/development/development-process/design-proposals/post-mortem) -[Proposed Collation Additions](https://cldr.unicode.org/development/development-process/design-proposals/proposed-collation-additions) +[Proposed Collation Additions](/development/development-process/design-proposals/proposed-collation-additions) -[Resolution of CLDR files](https://cldr.unicode.org/development/development-process/design-proposals/resolution-of-cldr-files) +[Resolution of CLDR files](/development/development-process/design-proposals/resolution-of-cldr-files) -[script-metadata](https://cldr.unicode.org/development/development-process/design-proposals/script-metadata) +[script-metadata](/development/development-process/design-proposals/script-metadata) -[Search collators](https://cldr.unicode.org/development/development-process/design-proposals/search-collators) +[Search collators](/development/development-process/design-proposals/search-collators) -[Secular/neutral eras](https://cldr.unicode.org/development/development-process/design-proposals/secularneutral-eras) +[Secular/neutral eras](/development/development-process/design-proposals/secularneutral-eras) -[Specifying text break variants in locale IDs](https://cldr.unicode.org/development/development-process/design-proposals/specifying-text-break-variants-in-locale-ids) +[Specifying text break variants in locale IDs](/development/development-process/design-proposals/specifying-text-break-variants-in-locale-ids) -[Suggested Exemplar Revisions](https://cldr.unicode.org/development/development-process/design-proposals/suggested-exemplar-revisions) +[Suggested Exemplar Revisions](/development/development-process/design-proposals/suggested-exemplar-revisions) -[Supported NumberingSystems](https://cldr.unicode.org/development/development-process/design-proposals/supported-numberingsystems) +[Supported NumberingSystems](/development/development-process/design-proposals/supported-numberingsystems) -[Thoughts on Survey Tool Backend](https://cldr.unicode.org/development/development-process/design-proposals/thoughts-on-survey-tool-backend) +[Thoughts on Survey Tool Backend](/development/development-process/design-proposals/thoughts-on-survey-tool-backend) -[Time Zone Data Reorganization](https://cldr.unicode.org/development/development-process/design-proposals/time-zone-data-reorganization) +[Time Zone Data Reorganization](/development/development-process/design-proposals/time-zone-data-reorganization) -[Transform Fallback](https://cldr.unicode.org/development/development-process/design-proposals/transform-fallback) +[Transform Fallback](/development/development-process/design-proposals/transform-fallback) -[Transform keywords](https://cldr.unicode.org/development/development-process/design-proposals/transform-keywords) +[Transform keywords](/development/development-process/design-proposals/transform-keywords) -[Unihan Data](https://cldr.unicode.org/development/development-process/design-proposals/unihan-data) +[Unihan Data](/development/development-process/design-proposals/unihan-data) -[Units: pixels, ems, display resolution](https://cldr.unicode.org/development/development-process/design-proposals/units-pixels-ems-display-resolution) +[Units: pixels, ems, display resolution](/development/development-process/design-proposals/units-pixels-ems-display-resolution) -[UTS #35 Splitting](https://cldr.unicode.org/development/development-process/design-proposals/uts-35-splitting) +[UTS #35 Splitting](/development/development-process/design-proposals/uts-35-splitting) -[Voting](https://cldr.unicode.org/development/development-process/design-proposals/voting) +[Voting](/development/development-process/design-proposals/voting) -[XMB](https://cldr.unicode.org/development/development-process/design-proposals/xmb) +[XMB](/development/development-process/design-proposals/xmb) diff --git a/docs/site/development/development-process/design-proposals/bcp-47-changes-draft.md b/docs/site/development/development-process/design-proposals/bcp-47-changes-draft.md index c26c3eeaf03..513fca31aa3 100644 --- a/docs/site/development/development-process/design-proposals/bcp-47-changes-draft.md +++ b/docs/site/development/development-process/design-proposals/bcp-47-changes-draft.md @@ -1,10 +1,10 @@ --- -title: BCP 47 Changes (DRAFT) +title: 'BCP 47 Changes (DRAFT)' --- # BCP 47 Changes (DRAFT) -With the new release of the new version of [BCP 47](http://www.inter-locale.com/ID/draft-ietf-ltru-4646bis-18.html), there are various changes we need to make in Unicode CLDR and LDML. Already in CLDR 1.7 we have made modifications anticipating the release: see [BCP 47 Tag Conversion](http://unicode.org/reports/tr35/#BCP_47_Tag_Conversion) in the spec (and the orginal [design proposal](https://cldr.unicode.org/development/development-process/design-proposals/bcp47-syntax-mapping)), but more changes need to be made. +With the new release of the new version of [BCP 47](http://www.inter-locale.com/ID/draft-ietf-ltru-4646bis-18.html), there are various changes we need to make in Unicode CLDR and LDML. Already in CLDR 1.7 we have made modifications anticipating the release: see [BCP 47 Tag Conversion](http://unicode.org/reports/tr35/#BCP_47_Tag_Conversion) in the spec (and the orginal [design proposal](/development/development-process/design-proposals/bcp47-syntax-mapping)), but more changes need to be made. ## Formula @@ -37,10 +37,10 @@ B. We show a script code S for translation if and only if it is one of the scrip \* *official status* means official, de facto official, official regional, or de facto official regional. -† *population* means literate 14-day active users (well, theoretically - we can only get an approximation of that), based on [CLDR figures](http://www.unicode.org/cldr/data/charts/supplemental/language_territory_information.html). Our concern is with written language, not spoken, and so we don't focus on variants that don't have much written usage; moreover, the population figures we want to focus on are the literate population. For this reason and others, we don't rely on the Ethnologue figures. See also [Picking the Right Language Code](https://cldr.unicode.org/index/cldr-spec/picking-the-right-language-code). +† *population* means literate 14-day active users (well, theoretically - we can only get an approximation of that), based on [CLDR figures](http://www.unicode.org/cldr/data/charts/supplemental/language_territory_information.html). Our concern is with written language, not spoken, and so we don't focus on variants that don't have much written usage; moreover, the population figures we want to focus on are the literate population. For this reason and others, we don't rely on the Ethnologue figures. See also [Picking the Right Language Code](/index/cldr-spec/picking-the-right-language-code). -**Please review the generated lists in** [**Filtered Scripts and Languages**](https://cldr.unicode.org/development/development-process/design-proposals/bcp-47-changes-draft)**.** A spreadsheet with some details is on. The first column is the language, 2rd is the world population of the language (literate), and the remaining columns are the reasons (data for 1.1, 1.2, 1.3 from the above). +**Please review the generated lists in** [**Filtered Scripts and Languages**](/development/development-process/design-proposals/bcp-47-changes-draft)**.** A spreadsheet with some details is on. The first column is the language, 2rd is the world population of the language (literate), and the remaining columns are the reasons (data for 1.1, 1.2, 1.3 from the above). Known issues: @@ -55,7 +55,7 @@ We would add the lists to the supplemental metadata for access by the tools. The ## Other Changes -We also need to make other changes to the spec in regards to the new version of BCP 47. In particular, those [macrolanguages](http://www.sil.org/iso639-3/macrolanguages.asp) with an encompassed language that is a "predominant form", CLDR treats the predominant form and the macrolanguage as aliases. See [Locale Field Definitions](http://unicode.org/reports/tr35/#Locale_Field_Definitions) in the spec. We need to flesh that table out to include all of the [macrolanguages](http://www.sil.org/iso639-3/macrolanguages.asp) that are in the [Included Languages](https://cldr.unicode.org/development/development-process/design-proposals/bcp-47-changes-draft), such as Azerbaijani. Here is a start at that (but still just draft). The first part of this list is from a draft of BCP 47bis. The last three are codes that are in the current (2006) version of BCP 47. +We also need to make other changes to the spec in regards to the new version of BCP 47. In particular, those [macrolanguages](http://www.sil.org/iso639-3/macrolanguages.asp) with an encompassed language that is a "predominant form", CLDR treats the predominant form and the macrolanguage as aliases. See [Locale Field Definitions](http://unicode.org/reports/tr35/#Locale_Field_Definitions) in the spec. We need to flesh that table out to include all of the [macrolanguages](http://www.sil.org/iso639-3/macrolanguages.asp) that are in the [Included Languages](/development/development-process/design-proposals/bcp-47-changes-draft), such as Azerbaijani. Here is a start at that (but still just draft). The first part of this list is from a draft of BCP 47bis. The last three are codes that are in the current (2006) version of BCP 47. Macrolanguage Table @@ -98,7 +98,7 @@ Also, we should consider modifying the canonical form of language identifiers so ## Filtered Scripts and Languages -The following script/language names would be included (/excluded) from default translation. For the method used to get this list, see [Formula](https://cldr.unicode.org/development/development-process/design-proposals/bcp-47-changes-draft). +The following script/language names would be included (/excluded) from default translation. For the method used to get this list, see [Formula](/development/development-process/design-proposals/bcp-47-changes-draft). The languages are listed in the format Abkhazian [ab]-OR, where [xx] is the code, and "OR" is the abbreviated "best" status in some territory: **U**nknown, **O**fficial **R**egional, **O**fficial **M**inority, **D**e facto official, **O**fficial. diff --git a/docs/site/development/development-process/design-proposals/change-to-sites.md b/docs/site/development/development-process/design-proposals/change-to-sites.md index c9ee9f94423..24ba78f8587 100644 --- a/docs/site/development/development-process/design-proposals/change-to-sites.md +++ b/docs/site/development/development-process/design-proposals/change-to-sites.md @@ -4,7 +4,7 @@ title: Change to Sites? # Change to Sites? -We are using Sites ([http://cldr.unicode.org/](http://cldr.unicode.org/)) to host all of the CLDR development web pages. I took a look at the cldr pages, and the following are not in Sites. The question is, should we move them (or some of them) to Sites? +We are using Sites ([http://cldr.unicode.org/](/)) to host all of the CLDR development web pages. I took a look at the cldr pages, and the following are not in Sites. The question is, should we move them (or some of them) to Sites? Advantages diff --git a/docs/site/development/development-process/design-proposals/chinese-and-other-calendar-support-intercalary-months-year-cycles.md b/docs/site/development/development-process/design-proposals/chinese-and-other-calendar-support-intercalary-months-year-cycles.md index 5de16d1889b..cfe40ad77d1 100644 --- a/docs/site/development/development-process/design-proposals/chinese-and-other-calendar-support-intercalary-months-year-cycles.md +++ b/docs/site/development/development-process/design-proposals/chinese-and-other-calendar-support-intercalary-months-year-cycles.md @@ -1,5 +1,5 @@ --- -title: Chinese (and other) calendar support, intercalary months, year cycles +title: 'Chinese (and other) calendar support, intercalary months, year cycles' --- # Chinese (and other) calendar support, intercalary months, year cycles diff --git a/docs/site/development/development-process/design-proposals/delimiter-quotation-mark-proposal.md b/docs/site/development/development-process/design-proposals/delimiter-quotation-mark-proposal.md index f4a374605fd..6ed981f57bf 100644 --- a/docs/site/development/development-process/design-proposals/delimiter-quotation-mark-proposal.md +++ b/docs/site/development/development-process/design-proposals/delimiter-quotation-mark-proposal.md @@ -1,5 +1,5 @@ --- -title: Delimiter (Quotation Mark) Proposal +title: 'Delimiter (Quotation Mark) Proposal' --- # Delimiter (Quotation Mark) Proposal diff --git a/docs/site/development/development-process/design-proposals/grammar-capitalization-forms-for-datetime-elements-and-others.md b/docs/site/development/development-process/design-proposals/grammar-capitalization-forms-for-datetime-elements-and-others.md index 206766d29a4..9d0109686f6 100644 --- a/docs/site/development/development-process/design-proposals/grammar-capitalization-forms-for-datetime-elements-and-others.md +++ b/docs/site/development/development-process/design-proposals/grammar-capitalization-forms-for-datetime-elements-and-others.md @@ -90,7 +90,7 @@ The current choice between “format” and “standalone” forms conflates all ### 3. Related docs -Mark had some [discussion and ideas](https://cldr.unicode.org/development/development-process/design-proposals/consistent-casing) in [#2269](http://unicode.org/cldr/trac/ticket/2269). +Mark had some [discussion and ideas](/development/development-process/design-proposals/consistent-casing) in [#2269](http://unicode.org/cldr/trac/ticket/2269). ## C. Outline of proposed solution diff --git a/docs/site/development/development-process/design-proposals/iso-636-deprecation-requests-draft.md b/docs/site/development/development-process/design-proposals/iso-636-deprecation-requests-draft.md index ba16add846d..d9953adfe75 100644 --- a/docs/site/development/development-process/design-proposals/iso-636-deprecation-requests-draft.md +++ b/docs/site/development/development-process/design-proposals/iso-636-deprecation-requests-draft.md @@ -4,7 +4,7 @@ title: ISO 636 Deprecation Requests - DRAFT # ISO 636 Deprecation Requests - DRAFT -We have become aware over time of cases where ISO 639 inaccurately assigns different language codes to the same language. Its goal is to distinguish all and only those languages that are are not mutually comprehensible. Making too many distinctions can be as harmful as making too few, since it artificially separates two dialects, and disrupts the ability of software to identify them as variants. The remedy used in the past has been to deprecate codes: for example, [mol (mo)](http://www.sil.org/iso639-3/documentation.asp?id=mol) has been merged with [rol (ro)](http://www.sil.org/iso639-3/documentation.asp?id=rol). See also [Picking the Right Language Code](https://cldr.unicode.org/index/cldr-spec/picking-the-right-language-code) and [Language Distance Data](https://cldr.unicode.org/development/development-process/design-proposals/language-distance-data). +We have become aware over time of cases where ISO 639 inaccurately assigns different language codes to the same language. Its goal is to distinguish all and only those languages that are are not mutually comprehensible. Making too many distinctions can be as harmful as making too few, since it artificially separates two dialects, and disrupts the ability of software to identify them as variants. The remedy used in the past has been to deprecate codes: for example, [mol (mo)](http://www.sil.org/iso639-3/documentation.asp?id=mol) has been merged with [rol (ro)](http://www.sil.org/iso639-3/documentation.asp?id=rol). See also [Picking the Right Language Code](/index/cldr-spec/picking-the-right-language-code) and [Language Distance Data](/development/development-process/design-proposals/language-distance-data). The current cases in question are listed below. However we need to collate and organize a background document of information before we go further. diff --git a/docs/site/development/development-process/design-proposals/json-packaging-approved-by-the-cldr-tc-on-2015-03-25.md b/docs/site/development/development-process/design-proposals/json-packaging-approved-by-the-cldr-tc-on-2015-03-25.md index 0085a33c549..1e1355fd98c 100644 --- a/docs/site/development/development-process/design-proposals/json-packaging-approved-by-the-cldr-tc-on-2015-03-25.md +++ b/docs/site/development/development-process/design-proposals/json-packaging-approved-by-the-cldr-tc-on-2015-03-25.md @@ -1,10 +1,10 @@ --- -title: JSON Packaging (Approved by the CLDR TC on 2015-03-25) +title: 'JSON Packaging (Approved by the CLDR TC on 2015-03-25)' --- # JSON Packaging (Approved by the CLDR TC on 2015-03-25) -***This page is out of date, see*** [***http://cldr.unicode.org/index/downloads#TOC-JSON-Data***](http://cldr.unicode.org/index/downloads#TOC-JSON-Data) ***for details of the JSON data.*** +***This page is out of date, see*** [***http://cldr.unicode.org/index/downloads#TOC-JSON-Data***](/index/downloads#TOC-JSON-Data) ***for details of the JSON data.*** ## Overview diff --git a/docs/site/development/development-process/design-proposals/language-distance-data.md b/docs/site/development/development-process/design-proposals/language-distance-data.md index 979b8b1502a..a385b1bdd14 100644 --- a/docs/site/development/development-process/design-proposals/language-distance-data.md +++ b/docs/site/development/development-process/design-proposals/language-distance-data.md @@ -115,7 +115,7 @@ Note that this doesn't have to be an N x M algorithm. Because there is a minimum ## Data Sample -The data is designed to be relatively simple to understand. It would typically be processed into an internal format for fast processing. The data does not need to be exact; only the relative computed values are important. However, for keep the types of fields apart, they are given very different values. TODO: add values for [ISO 636 Deprecation Requests - DRAFT](https://cldr.unicode.org/development/development-process/design-proposals/iso-636-deprecation-requests-draft) +The data is designed to be relatively simple to understand. It would typically be processed into an internal format for fast processing. The data does not need to be exact; only the relative computed values are important. However, for keep the types of fields apart, they are given very different values. TODO: add values for [ISO 636 Deprecation Requests - DRAFT](/development/development-process/design-proposals/iso-636-deprecation-requests-draft) \ diff --git a/docs/site/development/development-process/design-proposals/pattern-character-for-related-year.md b/docs/site/development/development-process/design-proposals/pattern-character-for-related-year.md index 57c259bf07a..2fb4f51afbf 100644 --- a/docs/site/development/development-process/design-proposals/pattern-character-for-related-year.md +++ b/docs/site/development/development-process/design-proposals/pattern-character-for-related-year.md @@ -27,5 +27,5 @@ In ICU, each calendar could provide an internal method that would return that of The data and format requirements for section 2.2 above are more complex and not addressed here -See also the earlier discussion of these issues in section F.11 of the proposal “[Chinese (and other) calendar support, intercalary months, year cycles](https://cldr.unicode.org/development/development-process/design-proposals/chinese-and-other-calendar-support-intercalary-months-year-cycles).” +See also the earlier discussion of these issues in section F.11 of the proposal “[Chinese (and other) calendar support, intercalary months, year cycles](/development/development-process/design-proposals/chinese-and-other-calendar-support-intercalary-months-year-cycles).” diff --git a/docs/site/development/development-process/design-proposals/post-mortem.md b/docs/site/development/development-process/design-proposals/post-mortem.md index b3838c0b869..fabda5b8a29 100644 --- a/docs/site/development/development-process/design-proposals/post-mortem.md +++ b/docs/site/development/development-process/design-proposals/post-mortem.md @@ -11,7 +11,7 @@ Drivers marked in [...]. Drivers are to file bugs, put together plan for how to 1. Spec done late, little review, little time for public review. We should have a formal release and announcement ahead of time. Splitting up the spec into functional pieces, maintained in Sites, could let us put the introductory info into the pieces at the start. Move the design doc into the spec once approved. Point the survey tool to relevant parts of the spec. Sync up spec for each milestone. **[Peter, Mark]** 2. How to get metazone translated. Not enough coverage. We ask for translations that are not needed in the survey tool; those also contribute to the lack of coverage. 1. Make coverage be data driven. - 2. Make metazone coverage exclude items that never need coverage; be dependant on the language (and the territories that use it). [http://cldr.unicode.org/development/design-proposals/coverage-revision](http://cldr.unicode.org/development/design-proposals/coverage-revision) + 2. Make metazone coverage exclude items that never need coverage; be dependant on the language (and the territories that use it). [http://cldr.unicode.org/development/design-proposals/coverage-revision](/development/design-proposals/coverage-revision) 3. Make coverage visible in ST. 4. Make metazones easier to understand in the ST. Better examples of how they affect zones. 5. CommonlyUsed can't be effectively entered in ST. diff --git a/docs/site/development/getting-started.md b/docs/site/development/getting-started.md index 35ebf3f712f..bacb93fedb9 100644 --- a/docs/site/development/getting-started.md +++ b/docs/site/development/getting-started.md @@ -5,4 +5,4 @@ title: Getting Started # Getting Started This section provides information about getting started with CLDR development. -See the subpages, using the ≡ menu at the top of this page. +See the subpages in the sidebar. diff --git a/docs/site/development/maven.md b/docs/site/development/maven.md index 8b1ee268d59..0eb520dff56 100644 --- a/docs/site/development/maven.md +++ b/docs/site/development/maven.md @@ -75,7 +75,7 @@ In the CLDR repo root, go into the tools directory and run: ```mvn package``` -This will run all tests and create the all\-in\-one **tools/cldr\-code/target/cldr\-code.jar**. See [CLDR Tools](https://cldr.unicode.org/development/cldr-tools) for details on how to use this jar file. +This will run all tests and create the all\-in\-one **tools/cldr\-code/target/cldr\-code.jar**. See [CLDR Tools](/development/cldr-tools) for details on how to use this jar file. ### More details @@ -112,7 +112,7 @@ mvn -DCLDR_DIR=$HOME/src/cldr exec:java -pl cldr-code -Dexec.mainClass=org.unico 1. See also “[Set up Eclipse for Survey Tool](https://docs.google.com/document/d/1wkJsoQXPcGN_dlCzXzwhfjQoq9Mes7VezIRmNrHWV8c/edit)” 2. To run the SurveyTool components you will need the IDE for Enterprise Developers, you can download this from https://www.eclipse.org/downloads/packages/ -3. Make sure the config files are set up first ([**3.2** Configuring Maven](https://cldr.unicode.org/development/maven)), and that CLDR is checked out locally from git in some directory. +3. Make sure the config files are set up first ([**3.2** Configuring Maven](/development/maven)), and that CLDR is checked out locally from git in some directory. 4. Go to File \-\> Import, choose Maven and import Existing Maven Projects (see image at right) ![image](../images/development/maven1.png) diff --git a/docs/site/development/new-cldr-developers.md b/docs/site/development/new-cldr-developers.md index 17054442652..cc7c2b38e7c 100644 --- a/docs/site/development/new-cldr-developers.md +++ b/docs/site/development/new-cldr-developers.md @@ -42,7 +42,7 @@ Command line: Via eclipse: -1. Go [here](https://cldr.unicode.org/development/eclipse-setup%23TOC-Test) +1. Go [here](/development/eclipse-setup%23TOC-Test) Once you are all set up, be sure to read the development process, for how to handle tickets, when you can't make changes, etc. @@ -56,7 +56,7 @@ The table below points to documentation for various tasks. | performance work | http://cldr.unicode.org/development/perf-testing | | survey tool database work | http://cldr.unicode.org/development/running-survey-tool/cldr-properties/db | -Other useful pages are under [CLDR Development Site](https://cldr.unicode.org/development/cldr-development-site); you can also use the search box. +Other useful pages are under [CLDR Development Site](/development/cldr-development-site); you can also use the search box. [UTS #35: Unicode Locale Data Markup Language (LDML)](https://www.unicode.org/reports/tr35/) is the specification of the XML format used for CLDR data, including the interpretation of the CLDR data. diff --git a/docs/site/development/running-tests.md b/docs/site/development/running-tests.md index ee445cd631c..4a1ccefbb16 100644 --- a/docs/site/development/running-tests.md +++ b/docs/site/development/running-tests.md @@ -7,7 +7,7 @@ title: Running Tests You will always need to run tests when you do a check\-in. 1. Preconditions - - If you change the DTD, be sure to read and follow [Updating DTDs](https://cldr.unicode.org/development/updating-dtds) first. + - If you change the DTD, be sure to read and follow [Updating DTDs](/development/updating-dtds) first. - If you added a new feature or fixed a significant bug, add a unit test for it. - See unittest/NumberingSystemsTest as an example. - Remember to add to unittest/TestAll @@ -19,8 +19,8 @@ You will always need to run tests when you do a check\-in. - If you know what you are doing, you can run a set of filtered tests. 4. Other tests 1. The unit tests are not complete, so you get a better workout if you are doing anything fancy by running: - 2. [**NewLdml2IcuConverter**](https://cldr.unicode.org/development/coding-cldr-tools/newldml2icuconverter) - 3. [**Generating Charts**](https://cldr.unicode.org/development/cldr-big-red-switch/generating-charts) + 2. [**NewLdml2IcuConverter**](/development/coding-cldr-tools/newldml2icuconverter) + 3. [**Generating Charts**](/development/cldr-big-red-switch/generating-charts) 1. If you have interesting new data, write a chart for it. See subclasses of Chart.java for examples. ## Running tests on the command line diff --git a/docs/site/development/tests-and-tools.md b/docs/site/development/tests-and-tools.md index 90581e4fcfb..555a7a4b9a6 100644 --- a/docs/site/development/tests-and-tools.md +++ b/docs/site/development/tests-and-tools.md @@ -5,4 +5,4 @@ title: Tests and Tools # Tests and Tools This section provides information to internal developers about tests and tools. -See the subpages, using the ≡ menu at the top of this page. +See the subpages in the sidebar. diff --git a/docs/site/development/updating-codes.md b/docs/site/development/updating-codes.md index 980f54f0b01..b204127b7e5 100644 --- a/docs/site/development/updating-codes.md +++ b/docs/site/development/updating-codes.md @@ -8,26 +8,26 @@ title: Updating Codes ### Steps -First read [Running Tools](https://cldr.unicode.org/development/running-tools) - -1. Update [Script Metadata](https://cldr.unicode.org/development/updating-codes/updating-script-metadata) -2. [Update Population/GDP/Literacy](https://cldr.unicode.org/development/updating-codes/updating-population-gdp-literacy) -3. [Update Language/Script/Region Subtags](https://cldr.unicode.org/development/updating-codes/update-languagescriptregion-subtags) -4. [Update Subdivision Codes](https://cldr.unicode.org/development/updating-codes/updating-subdivision-codes) -5. [Update Subdivision translations](https://cldr.unicode.org/development/updating-codes/updating-subdivision-translations) (new) -6. [Update Currency Codes](https://cldr.unicode.org/development/updating-codes/update-currency-codes) -7. [Update Time Zone Data for ZoneParser](https://cldr.unicode.org/development/updating-codes/update-time-zone-data-for-zoneparser) -8. [Update Validity XML](https://cldr.unicode.org/development/updating-codes/update-validity-xml) - 1. [Update Language/Script/Country Information](https://cldr.unicode.org/development/updating-codes/update-language-script-info) - 2. [LikelySubtags and Default Content](https://cldr.unicode.org/development/updating-codes/likelysubtags-and-default-content) +First read [Running Tools](/development/running-tools) + +1. Update [Script Metadata](/development/updating-codes/updating-script-metadata) +2. [Update Population/GDP/Literacy](/development/updating-codes/updating-population-gdp-literacy) +3. [Update Language/Script/Region Subtags](/development/updating-codes/update-languagescriptregion-subtags) +4. [Update Subdivision Codes](/development/updating-codes/updating-subdivision-codes) +5. [Update Subdivision translations](/development/updating-codes/updating-subdivision-translations) (new) +6. [Update Currency Codes](/development/updating-codes/update-currency-codes) +7. [Update Time Zone Data for ZoneParser](/development/updating-codes/update-time-zone-data-for-zoneparser) +8. [Update Validity XML](/development/updating-codes/update-validity-xml) + 1. [Update Language/Script/Country Information](/development/updating-codes/update-language-script-info) + 2. [LikelySubtags and Default Content](/development/updating-codes/likelysubtags-and-default-content) 3. Update IANA/FIPS Mappings 1. TBD - Describe what to do. The URLs are 2. http://www.iana.org/domain-names.htm 3. http://www.iana.org/root-whois/index.html 4. http://data.iana.org/TLD/tlds-alpha-by-domain.txt 9. Reformat plurals/ordinals.xml with GeneratedPluralRules.java. Review carefully before checking in. - 1. Regenerate Supplemental Charts: [Generating Charts](https://cldr.unicode.org/development/cldr-big-red-switch/generating-charts) + 1. Regenerate Supplemental Charts: [Generating Charts](/development/cldr-big-red-switch/generating-charts) -For information about **Version Info** and external metadata, see [Updating External Metadata](https://cldr.unicode.org/development/updating-codes/external-version-metadata) +For information about **Version Info** and external metadata, see [Updating External Metadata](/development/updating-codes/external-version-metadata) diff --git a/docs/site/development/updating-codes/likelysubtags-and-default-content.md b/docs/site/development/updating-codes/likelysubtags-and-default-content.md index 93179fdc23d..08a8cfdced9 100644 --- a/docs/site/development/updating-codes/likelysubtags-and-default-content.md +++ b/docs/site/development/updating-codes/likelysubtags-and-default-content.md @@ -4,7 +4,7 @@ title: LikelySubtags and Default Content # LikelySubtags and Default Content -1. First make sure that you do [Update Language/Script/Region Subtags](https://cldr.unicode.org/development/updating-codes/update-languagescriptregion-subtags) first +1. First make sure that you do [Update Language/Script/Region Subtags](/development/updating-codes/update-languagescriptregion-subtags) first 2. Run GenerateMaximalLocales with VM argument ```-DCLDR_DIR``` set to your cldr directory to generate the likely subtag data **AND** the default content locales. 1. If you are trying to debug, add the VM argument ```-DGenerateMaximalLocalesDebug``` 3. Input data: diff --git a/docs/site/development/updating-codes/un-literacy.md b/docs/site/development/updating-codes/un-literacy.md index fa22b378a6d..fd9ef89d93a 100644 --- a/docs/site/development/updating-codes/un-literacy.md +++ b/docs/site/development/updating-codes/un-literacy.md @@ -1,5 +1,5 @@ --- -title: UN Literacy Data (CLDR BRS) +title: 'UN Literacy Data (CLDR BRS)' --- # UN Literacy Data (CLDR BRS) diff --git a/docs/site/development/updating-codes/update-currency-codes.md b/docs/site/development/updating-codes/update-currency-codes.md index 880a433e895..dae7372df88 100644 --- a/docs/site/development/updating-codes/update-currency-codes.md +++ b/docs/site/development/updating-codes/update-currency-codes.md @@ -19,7 +19,7 @@ title: Update Currency Codes - *Review all amendments that are dated after the previous update , and patch the XML files and the* ```supplementalData.xml``` *as below.* - *Record the last number viewed in the URL above.* - *(There is a "download all amendments" link now that has a spreadsheet summary.)* - - **Record the version: See** [**Updating External Metadata**](https://cldr.unicode.org/development/updating-codes/external-version-metadata) + - **Record the version: See** [**Updating External Metadata**](/development/updating-codes/external-version-metadata) - If there are no diffs in the two iso tables, and no relevant changes in the amendments, you are done. - Run ```CountItems -Dmethod=generateCurrencyItems``` to generate the new currency list. - If any currency is missing from ISO4217\.txt, the program will throw an exception and will print a list of items at the end that need to be added to the ISO4217\.txt file. Add as described below. diff --git a/docs/site/development/updating-codes/update-language-script-info.md b/docs/site/development/updating-codes/update-language-script-info.md index 0035354305f..5abed58db78 100644 --- a/docs/site/development/updating-codes/update-language-script-info.md +++ b/docs/site/development/updating-codes/update-language-script-info.md @@ -9,9 +9,9 @@ title: Update Language Script Info 1. https://github.com/unicode-org/cldr/tree/main/tools/cldr-code/src/main/resources/org/unicode/cldr/util/data has files with this form: 1. **country\_language\_population.tsv** 2. **language\_script.tsv** - 3. For a descriptions of the contents, see [Language Script Guidelines](https://cldr.unicode.org/development/updating-codes/update-language-script-info/language-script-description) + 3. For a descriptions of the contents, see [Language Script Guidelines](/development/updating-codes/update-language-script-info/language-script-description) 1. Do not edit the above files with a plain text editor; they are tab\-delimited UTF\-8 with many fields and should be imported/edited with a spreadsheet editor. Excel or Google sheets should also work fine. -2. The world bank, un, and factbook data should be updated as per [Updating Population, GDP, Literacy](https://cldr.unicode.org/development/updating-codes/updating-population-gdp-literacy) +2. The world bank, un, and factbook data should be updated as per [Updating Population, GDP, Literacy](/development/updating-codes/updating-population-gdp-literacy) 3. Note that there is an auxiliary file **util/data/external/other\_country\_data.txt**, which contains data that supplements the others. If there are errors below because the country population is less than the language population, then that file may need updating. 1. Run the tool **ConvertLanguageData**. 1. \-DADD\_POP\=**true**; for error messages. @@ -32,9 +32,9 @@ title: Update Language Script Info ### Update the supplementalData.xml \ -1. For UN M.49 codes, see [Updating UN Codes](https://cldr.unicode.org/development/updating-codes/updating-un-codes) +1. For UN M.49 codes, see [Updating UN Codes](/development/updating-codes/updating-un-codes) 2. For the UN, go to https://www.un.org/en/member-states/index.html. Copy the table, and paste into util/data/external/un\_member\_states\_raw.txt. Diff with old. **BROKEN LINK** -3. For the EU, see instructions on [Updating UN Codes](https://cldr.unicode.org/development/updating-codes/updating-un-codes) +3. For the EU, see instructions on [Updating UN Codes](/development/updating-codes/updating-un-codes) 4. For the EZ, do the same with , into util/data/external/ez\_member\_states\_raw.txt  **BROKEN LINK** 1. If there are changes, update \ diff --git a/docs/site/development/updating-codes/update-languagescriptregion-subtags.md b/docs/site/development/updating-codes/update-languagescriptregion-subtags.md index bbb662f8440..0777f873461 100644 --- a/docs/site/development/updating-codes/update-languagescriptregion-subtags.md +++ b/docs/site/development/updating-codes/update-languagescriptregion-subtags.md @@ -35,9 +35,9 @@ title: Update Language/Script/Region Subtags - Compare total counts with tool output:  example "*formerly\_used \|\|  22*"  coinciding with 22 Formerly Used codes - If something is wrong, you'll have to scroll through the code list and/or dig around for the updates - Check if ISO has done something destabilizing with codes: you need to handle it specially. -- **Record the version: See [Updating External Metadata](https://cldr.unicode.org/development/updating-codes/external-version-metadata)** -- Do validity checks and regenerate: for details see [Validity](https://cldr.unicode.org/development/updating-codes/update-validity-xml) - - You'll have to do this again in [Updating Subdivision Codes](https://cldr.unicode.org/development/updating-codes/updating-subdivision-codes). +- **Record the version: See [Updating External Metadata](/development/updating-codes/external-version-metadata)** +- Do validity checks and regenerate: for details see [Validity](/development/updating-codes/update-validity-xml) + - You'll have to do this again in [Updating Subdivision Codes](/development/updating-codes/updating-subdivision-codes). - Edit common/main/en.xml to add any new names, based on the Descriptions in the registry file. - *You only need to add new languages and scripts that we add to supplementalMetaData.* - But you need all territories. diff --git a/docs/site/development/updating-codes/update-time-zone-data-for-zoneparser.md b/docs/site/development/updating-codes/update-time-zone-data-for-zoneparser.md index eeec6c293c6..12f11432d6b 100644 --- a/docs/site/development/updating-codes/update-time-zone-data-for-zoneparser.md +++ b/docs/site/development/updating-codes/update-time-zone-data-for-zoneparser.md @@ -30,5 +30,5 @@ Note: This is usually done as a part of full time zone data update process. - **Note**: leapseconds might be removed from the list later. 4. Edit the file {CLDR\_DIR}}/tools/cldr\-code/src/main/resources/org/unicode/cldr/util/data/tzdb\-version.txt - This file contains just one line text specifying a version of Time Zone Database, e.g. 2021a. -5. **Record the version: See** [**Updating External Metadata**](https://cldr.unicode.org/development/updating-codes/external-version-metadata) +5. **Record the version: See** [**Updating External Metadata**](/development/updating-codes/external-version-metadata) diff --git a/docs/site/development/updating-codes/update-validity-xml.md b/docs/site/development/updating-codes/update-validity-xml.md index 7adb92e968c..0e66178c585 100644 --- a/docs/site/development/updating-codes/update-validity-xml.md +++ b/docs/site/development/updating-codes/update-validity-xml.md @@ -4,7 +4,7 @@ title: Update Validity XML # Update Validity XML -1. Create the archive ([Creating the Archive](https://cldr.unicode.org/development/creating-the-archive)) with at least the last release (if you don't have it already) +1. Create the archive ([Creating the Archive](/development/creating-the-archive)) with at least the last release (if you don't have it already) 2. Run GenerateValidityXML.java 3. This updates files in cldr/common/validity/. (If you set \-DSHOW\_FILES, you'll see this on the console.) 1. New files should not be generated. If there are any, something has gone wrong, so raise this as an issue on cldr\-dev. **Note:** cldr/common/validity/currency.xml contains a comment line \- *\ which will update the casing files in common/casing. When you check this in, sanity check the values, because in some cases we have have had different rules than just what the heuristics generate. - 3. TEST out the **SurveyTool** to verify that you can see/edit the new items. If users should be able to input data and are not able to, the item has not been properly added to CLDR. See [Running the Survey Tool in Eclipse](https://cldr.unicode.org/development/running-survey-tool). + 3. TEST out the **SurveyTool** to verify that you can see/edit the new items. If users should be able to input data and are not able to, the item has not been properly added to CLDR. See [Running the Survey Tool in Eclipse](/development/running-survey-tool). 4. **Data.** 1. Add necessary data to root and English. 2. (Optional) add additional data for locales (if part of main). If the data is just seed data (that you aren't sure of), make sure that you have draft="unconfirmed" on the leaf nodes. @@ -253,7 +253,7 @@ If a value has placeholders, edit Placeholders.txt: - ^//ldml/units/unit\\\[@type="day%A"\]/unitPattern ; {0}=NUMBER\_OF\_DAYS 3 2. There is a variable %A that will match attribute value syntax (or substrings). 3. \ may contain spaces, but \ must not. -4. For an example, see [8484](https://cldr.unicode.org/index/bug-reports#TOC-Filing-a-Ticket) +4. For an example, see [8484](/index/bug-reports#TOC-Filing-a-Ticket) 5. Check that the ConsoleCheckCLDR **CheckForExamplars** fails if there are no placeholders in the value 6. Note: we should switch methods so that we don't need to quote \\\[, etc, but we haven't yet. @@ -322,7 +322,7 @@ There are three ways for paths to show up in the Survey Tool (and in other tooli ### OK if Missing -Certain paths don't have to be present in locales. They are not counted as Missing in the Dashboard and shouldn't have an effect on coverage. To handle these, modify the file [missingOk.txt](https://cldr.unicode.org/index/bug-reports#TOC-Filing-a-Ticket) to provide a regex that captures those paths. Be careful, however, to not be overly inclusive: you want all and only those paths that are ok to skip. Typically those are paths for which root values are perfectly fine. +Certain paths don't have to be present in locales. They are not counted as Missing in the Dashboard and shouldn't have an effect on coverage. To handle these, modify the file [missingOk.txt](/index/bug-reports#TOC-Filing-a-Ticket) to provide a regex that captures those paths. Be careful, however, to not be overly inclusive: you want all and only those paths that are ok to skip. Typically those are paths for which root values are perfectly fine. ## Examples of DTD modifications @@ -332,14 +332,14 @@ The following is an example of the different files that may need to be modified. ## Modifying English/Root -Whenever you modify values in English or Root, be sure to run GenerateBirth as described on [Updating English/Root](https://cldr.unicode.org/development/cldr-development-site/updating-englishroot) and check in the results. That ensures that CheckNew works properly. This must be done before the Survey Tool starts or is in the Submission Phase. +Whenever you modify values in English or Root, be sure to run GenerateBirth as described on [Updating English/Root](/development/cldr-development-site/updating-englishroot) and check in the results. That ensures that CheckNew works properly. This must be done before the Survey Tool starts or is in the Submission Phase. ## Validation -- **Do the steps on** [**Running Tests**](https://cldr.unicode.org/development/running-tests) +- **Do the steps on** [**Running Tests**](/development/running-tests) ## Debugging Regexes -- Moved to [**Running Tests**](https://cldr.unicode.org/development/running-tests) +- Moved to [**Running Tests**](/development/running-tests) diff --git a/docs/site/development/updating.md b/docs/site/development/updating.md index 04316d1cf5a..9c1926ac355 100644 --- a/docs/site/development/updating.md +++ b/docs/site/development/updating.md @@ -5,4 +5,4 @@ title: Updating Data # Updating Data This section provides information to internal developers about updating CLDR data, typically with external data. -See the subpages, using the ≡ menu at the top of this page. +See the subpages in the sidebar. diff --git a/docs/site/downloads/cldr-31.md b/docs/site/downloads/cldr-31.md index 8c5fd992bf4..7745a4b03ed 100644 --- a/docs/site/downloads/cldr-31.md +++ b/docs/site/downloads/cldr-31.md @@ -3,7 +3,7 @@ title: 'CLDR 31 Download' --- -

🏗 The CLDR site has been migrated to a new platform. Formatting and links continue to be fixed.

CLDR 31 Release Note

🏗 The CLDR site has been migrated to a new platform. Formatting and links continue to be fixed.

CLDR 31 Release Note

For details, see Spec Modifications.

Migration

  • Code changes

    • The subdivision codes have been changed to all be the bcp47 format, eg "usca" instead of "US-CA". This affects supplemental containment and subdivisions, and translations in subdivisions/en.xml, etc. See Part 6, Sec 2.2 [#9942]

    • The locales in the language-territory population tables have been changed to be the canonical format, dropping the script where it is the default. So "ku_Latn" changes to "ku"

    • The exemplar/ locale data file names have also been changed to be the canonical format, dropping the script where it is the default.

  • Plural rules

    • The Portuguese plural rules have changed so that all (and only) integers and decimal fractions < 2 are singular.

  • Timezones

    • The GMT timezone has been split from the UTC timezone.

    • New timezone bcp47 codes have been added.

  • Language/Region data

    • The new literacyPercent attribute for supplemental <languagePopulation> has been broken out from writingPercent, the latter now only being used to reflect primarily-spoken languages. [#9421]

    • A new format for language matching is provided. To allow time for implementations to change over, the old data is retained, and the new data is marked as "written-new".

    • Languages "hr" and "sr" are no longer a short distance apart, for political reasons.

  • Other

    • The primary names for CZ changed from "Czech Republic" to "Czechia", with the longer name now the alternate.

Known Issues

“Week of” structure

The structure and intended usage for the “week x of y” patterns is still being refined and may change. This applies especially to dateFormatItems such as the following:

<dateFormatItem id="MMMMW" count=...>'week' W 'of' MMM</dateFormatItem>

<dateFormatItem id="yw" count=...>'week' w 'of' y</dateFormatItem>

Areas of discussion include the use of the count attribute and the use of ordinal vs. cardinal numbers. For more information see [#9801].

Non-unique emoji short names (fixed in 31.0.1)

Some of the emoji names are not unique. Fixes are being gathered, but are not in time for the release. See [#10116], [#10127]

Chinese stroke collation

Since CLDR 30, Chinese stroke collation has been missing entries for several basic characters. CLDR 32 reverts the stroke collation data to the CLDR 29 version; a complete fix for the underlying problem is targeted for CLDR 33. See #10497, #10642.

Others

See tickets for v31.0.1.

Acknowledgments

Many people have made significant contributions to CLDR and LDML; see the Acknowledgments page for a full listing.

Key

    • The Release Note contains a general description of the contents of the release, and any relevant notes about the release.

    • The Data link points to a set of zip files containing the contents of the release (the files are complete in themselves, and do not require files from earlier releases -- for the structure of the zip file, see Repository Organization).

    • The Spec is the version of UTS #35: LDML that corresponds to the release.

    • The Delta document points to a list of all the bug fixes and features in the release, which be used to get the precise corresponding file changes using BugDiffs.

    • The SVN Tag can be used to get the files via Repository Access.

The Unicode Terms of Use apply to CLDR data; in particular, see Exhibit 1.

For web pages with different views of CLDR data, see http://cldr.unicode.org/index/charts.

Page updated
Report abuse
+</table>" jsaction="rcuQ6b:WYd;">

For details, see Spec Modifications.

Migration

  • Code changes

    • The subdivision codes have been changed to all be the bcp47 format, eg "usca" instead of "US-CA". This affects supplemental containment and subdivisions, and translations in subdivisions/en.xml, etc. See Part 6, Sec 2.2 [#9942]

    • The locales in the language-territory population tables have been changed to be the canonical format, dropping the script where it is the default. So "ku_Latn" changes to "ku"

    • The exemplar/ locale data file names have also been changed to be the canonical format, dropping the script where it is the default.

  • Plural rules

    • The Portuguese plural rules have changed so that all (and only) integers and decimal fractions < 2 are singular.

  • Timezones

    • The GMT timezone has been split from the UTC timezone.

    • New timezone bcp47 codes have been added.

  • Language/Region data

    • The new literacyPercent attribute for supplemental <languagePopulation> has been broken out from writingPercent, the latter now only being used to reflect primarily-spoken languages. [#9421]

    • A new format for language matching is provided. To allow time for implementations to change over, the old data is retained, and the new data is marked as "written-new".

    • Languages "hr" and "sr" are no longer a short distance apart, for political reasons.

  • Other

    • The primary names for CZ changed from "Czech Republic" to "Czechia", with the longer name now the alternate.

Known Issues

“Week of” structure

The structure and intended usage for the “week x of y” patterns is still being refined and may change. This applies especially to dateFormatItems such as the following:

<dateFormatItem id="MMMMW" count=...>'week' W 'of' MMM</dateFormatItem>

<dateFormatItem id="yw" count=...>'week' w 'of' y</dateFormatItem>

Areas of discussion include the use of the count attribute and the use of ordinal vs. cardinal numbers. For more information see [#9801].

Non-unique emoji short names (fixed in 31.0.1)

Some of the emoji names are not unique. Fixes are being gathered, but are not in time for the release. See [#10116], [#10127]

Chinese stroke collation

Since CLDR 30, Chinese stroke collation has been missing entries for several basic characters. CLDR 32 reverts the stroke collation data to the CLDR 29 version; a complete fix for the underlying problem is targeted for CLDR 33. See #10497, #10642.

Others

See tickets for v31.0.1.

Acknowledgments

Many people have made significant contributions to CLDR and LDML; see the Acknowledgments page for a full listing.

Key

    • The Release Note contains a general description of the contents of the release, and any relevant notes about the release.

    • The Data link points to a set of zip files containing the contents of the release (the files are complete in themselves, and do not require files from earlier releases -- for the structure of the zip file, see Repository Organization).

    • The Spec is the version of UTS #35: LDML that corresponds to the release.

    • The Delta document points to a list of all the bug fixes and features in the release, which be used to get the precise corresponding file changes using BugDiffs.

    • The SVN Tag can be used to get the files via Repository Access.

The Unicode Terms of Use apply to CLDR data; in particular, see Exhibit 1.

For web pages with different views of CLDR data, see http://cldr.unicode.org/index/charts.

Page updated
Report abuse
diff --git a/docs/site/downloads/cldr-32.md b/docs/site/downloads/cldr-32.md index e6217f25f67..02807a51549 100644 --- a/docs/site/downloads/cldr-32.md +++ b/docs/site/downloads/cldr-32.md @@ -3,7 +3,7 @@ title: 'CLDR 32 Download' --- -

🏗 The CLDR site has been migrated to a new platform. Formatting and links continue to be fixed.

CLDR 32 Release Note

🏗 The CLDR site has been migrated to a new platform. Formatting and links continue to be fixed.

CLDR 32 Release Note

* The measurement of the number of items is reflects the different ways that the information is represented. A single data field (element or attribute value) may result in multiple data items. For example, plural rules may be shared by multiple languages, and a single data field contains all the languages to which those rules apply. Sometimes a changed item appears as a deletion+addition, and sequences of items (such as sort order) are not counted as different even if the order changes.

The following chart shows the increase in locale-based data over time.

For more details, see the Delta Data charts.

There is a new chart that shows the current coverage levels for CLDR locales. The locales that are not as complete are marked 'seed', and available in a separate CLDR source directory.

Migration

  • Plural rules

      • The plural rules for pt_PT changed to be different than pt (=pt_BR). The "one" case is now only the integer 1.

  • Timezones

    • Persian (fa) localized GMT hour pattern contains bidi control character LRM before signs.

  • Currencies

    • The new code for STN (SAO TOME AND PRINCIPE) has been released, and will be valid as of 2018-09-01. It is included in the release with that effective date. However, it was too late to provide names for the locales.

  • Language/Region data

    • The UN code 202 (Sub-Saharan Africa) was added late in the process, and doesn't have names (except in English).

  • Other

    • Chakma is the first CLDR locale that uses completely supplemental (non-BMP) characters, which may expose some bugs in implementations.

    • Chinese stroke collation was reverted to the data from CLDR 29 as a short-term fix for problems introduced in CLDR 30 that resulted in missing entries for several basic characters. A complete fix for the underlying problem is targeted for CLDR 33. See #10497, #10642.

Known Issues

    1. New macroregions

      1. The UN code 202 (Sub-Saharan Africa) was added late in the process, and doesn't have names (except in English).

      2. The UN is now including Sark (680) which didn't get into the release.

  1. “Week of” structure

    1. The structure and intended usage for the “week x of y” patterns is still being refined and may change. This applies especially to dateFormatItems such as the following:

    2. <dateFormatItem id="MMMMW" count=...>'week' W 'of' MMM</dateFormatItem>

    3. <dateFormatItem id="yw" count=...>'week' w 'of' y</dateFormatItem>

    4. Areas of discussion include the use of the count attribute and the use of ordinal vs. cardinal numbers. For more information see [#9801].

  2. Subdivision Names

    1. The draft subdivision names were imported from wikidata. Names that had characters outside of the language's exemplars were excluded for now. Names that would cause collisions were allowed, but marked with superscripted numbers. The goal is to clean up these names over time.

  1. German AM/PM [reverted in CLDR 32.0.1]

    1. In CLDR 32, the German AM/PM symbols were changed from “vorm.”/“nachm.” to “AM”/“PM”. This was reverted in CLDR 32.0.1 [#10735] but will be reconsidered in a future version of CLDR [#10789].

Acknowledgments

Many people have made significant contributions to CLDR and LDML; see the Acknowledgments page for a full listing.

Key to Header Links

* The measurement of the number of items is reflects the different ways that the information is represented. A single data field (element or attribute value) may result in multiple data items. For example, plural rules may be shared by multiple languages, and a single data field contains all the languages to which those rules apply. Sometimes a changed item appears as a deletion+addition, and sequences of items (such as sort order) are not counted as different even if the order changes.

The following chart shows the increase in locale-based data over time.

For more details, see the Delta Data charts.

There is a new chart that shows the current coverage levels for CLDR locales. The locales that are not as complete are marked 'seed', and available in a separate CLDR source directory.

Migration

  • Plural rules

      • The plural rules for pt_PT changed to be different than pt (=pt_BR). The "one" case is now only the integer 1.

  • Timezones

    • Persian (fa) localized GMT hour pattern contains bidi control character LRM before signs.

  • Currencies

    • The new code for STN (SAO TOME AND PRINCIPE) has been released, and will be valid as of 2018-09-01. It is included in the release with that effective date. However, it was too late to provide names for the locales.

  • Language/Region data

    • The UN code 202 (Sub-Saharan Africa) was added late in the process, and doesn't have names (except in English).

  • Other

    • Chakma is the first CLDR locale that uses completely supplemental (non-BMP) characters, which may expose some bugs in implementations.

    • Chinese stroke collation was reverted to the data from CLDR 29 as a short-term fix for problems introduced in CLDR 30 that resulted in missing entries for several basic characters. A complete fix for the underlying problem is targeted for CLDR 33. See #10497, #10642.

Known Issues

    1. New macroregions

      1. The UN code 202 (Sub-Saharan Africa) was added late in the process, and doesn't have names (except in English).

      2. The UN is now including Sark (680) which didn't get into the release.

  1. “Week of” structure

    1. The structure and intended usage for the “week x of y” patterns is still being refined and may change. This applies especially to dateFormatItems such as the following:

    2. <dateFormatItem id="MMMMW" count=...>'week' W 'of' MMM</dateFormatItem>

    3. <dateFormatItem id="yw" count=...>'week' w 'of' y</dateFormatItem>

    4. Areas of discussion include the use of the count attribute and the use of ordinal vs. cardinal numbers. For more information see [#9801].

  2. Subdivision Names

    1. The draft subdivision names were imported from wikidata. Names that had characters outside of the language's exemplars were excluded for now. Names that would cause collisions were allowed, but marked with superscripted numbers. The goal is to clean up these names over time.

  1. German AM/PM [reverted in CLDR 32.0.1]

    1. In CLDR 32, the German AM/PM symbols were changed from “vorm.”/“nachm.” to “AM”/“PM”. This was reverted in CLDR 32.0.1 [#10735] but will be reconsidered in a future version of CLDR [#10789].

Acknowledgments

Many people have made significant contributions to CLDR and LDML; see the Acknowledgments page for a full listing.

Key to Header Links

🏗 The CLDR site has been migrated to a new platform. Formatting and links continue to be fixed.

CLDR 33.1

🏗 The CLDR site has been migrated to a new platform. Formatting and links continue to be fixed.

CLDR 33.1

Overview

Unicode CLDR 33.1 is an update to CLDR 33 that focuses on Unicode 11.0 support. Improvements in this release include:

  • Data

      • Updates to Unicode 11.0

      • Adds annotations (names and keywords) for Unicode 11.0 emoji, and makes improvements to previously-existing annotations.

      • Updates Chinese collation stroke order from Unicode 7.0 to Unicode 11.0, after tooling bug fixes

  • Structure*

      • No changes. The DTD Δs and DTD Diffs links above point to v33.

  • Specification*

      • There is no LDML 33.1 document. Instead, only amendments to v33 are provided, as described below in Specification Amendments.

  • Charts*

For more details, see the list of bug fixes.

Specification Amendments

There is not a new version of the LDML spec. Instead, the following are amendments to LDML33. The changed text is indicated below by green highlighting

14.1 Synthesizing Sequence Names

  1. If sequence is an emoji flag sequence, look up the territory name in CLDR for the corresponding ASCII characters. Set suffixName to that, and prefixName to the characterLabel for "flag", and go to step 10.

    • For example, "🇵🇫" has the regional indicator symbols PF and would map to “Flagge: Französisch-Polynesien” in German.

  2. If sequence is an emoji tag sequence, look up the subdivision name in CLDR for the corresponding ASCII characters and compose as for emoji flag sequence.

    • For example, "🏴󠁧󠁢󠁳󠁣󠁴󠁿" has TAG characters gbsct and would map to “Flagge: Schottland” in German.

  3. If sequence is a keycap sequence or 🔟, use the characterLabel for "keycap" as the prefixName and set the suffix to be the ASCII characters in the sequence (or "10" in the case of 🔟), then go to step 8.

    • For example, "#⃣" would map to "Taste: #" in German.

  4. If sequence contains any emoji modifiers or hair components, move them (in order) into suffix, removing them from sequence.

    • For example, "👨🏿‍🦰" would map to "Mann: dunkle Hautfarbe, rotes Haar".

  5. Transform sequence and append to prefixName, by successively getting names for the longest subsequences, skipping any singleton ZWJ characters. If there is more than one name, use the listPatterns for "unit-short" to link them. This uses the patterns for "2", "start", "middle", and "end".

The /annotationsDerived/ folder has the available composed names, pre-built.

Migration

  • Updates German AM/PM strings to follow the English, to meet most common expectations of users of 12hr formats.

Known Issues

  1. Some of the main CLDR locales are missing a few Unicode 11.0 annotations (should be fixed in v34): #11193

    1. The segmentation rules have not been updated for changes in Unicode 11.0. This does not affect ICU, since the rules there were changed manually. Implementers may wish to patch their v33.1 versions with the data in #11203 if they use the segmentation rules independent of ICU. The changes include simplifying the break rules for Emoji and not breaking within strings of white space.

    2. The ICU4J libraries included in v33.1 were not updated to ICU 62.0. There are no known problems with using ICU 61.0, but implementers may want to update their copies to ICU 62.0.

Acknowledgments

Many people have made significant contributions to CLDR and LDML; see the Acknowledgments page for a full listing. The contributors to v33.1 will appear on the page later, when v34 is released.

Key to Header Links

Overview

Unicode CLDR 33.1 is an update to CLDR 33 that focuses on Unicode 11.0 support. Improvements in this release include:

  • Data

      • Updates to Unicode 11.0

      • Adds annotations (names and keywords) for Unicode 11.0 emoji, and makes improvements to previously-existing annotations.

      • Updates Chinese collation stroke order from Unicode 7.0 to Unicode 11.0, after tooling bug fixes

  • Structure*

      • No changes. The DTD Δs and DTD Diffs links above point to v33.

  • Specification*

      • There is no LDML 33.1 document. Instead, only amendments to v33 are provided, as described below in Specification Amendments.

  • Charts*

For more details, see the list of bug fixes.

Specification Amendments

There is not a new version of the LDML spec. Instead, the following are amendments to LDML33. The changed text is indicated below by green highlighting

14.1 Synthesizing Sequence Names

  1. If sequence is an emoji flag sequence, look up the territory name in CLDR for the corresponding ASCII characters. Set suffixName to that, and prefixName to the characterLabel for "flag", and go to step 10.

    • For example, "🇵🇫" has the regional indicator symbols PF and would map to “Flagge: Französisch-Polynesien” in German.

  2. If sequence is an emoji tag sequence, look up the subdivision name in CLDR for the corresponding ASCII characters and compose as for emoji flag sequence.

    • For example, "🏴󠁧󠁢󠁳󠁣󠁴󠁿" has TAG characters gbsct and would map to “Flagge: Schottland” in German.

  3. If sequence is a keycap sequence or 🔟, use the characterLabel for "keycap" as the prefixName and set the suffix to be the ASCII characters in the sequence (or "10" in the case of 🔟), then go to step 8.

    • For example, "#⃣" would map to "Taste: #" in German.

  4. If sequence contains any emoji modifiers or hair components, move them (in order) into suffix, removing them from sequence.

    • For example, "👨🏿‍🦰" would map to "Mann: dunkle Hautfarbe, rotes Haar".

  5. Transform sequence and append to prefixName, by successively getting names for the longest subsequences, skipping any singleton ZWJ characters. If there is more than one name, use the listPatterns for "unit-short" to link them. This uses the patterns for "2", "start", "middle", and "end".

The /annotationsDerived/ folder has the available composed names, pre-built.

Migration

  • Updates German AM/PM strings to follow the English, to meet most common expectations of users of 12hr formats.

Known Issues

  1. Some of the main CLDR locales are missing a few Unicode 11.0 annotations (should be fixed in v34): #11193

    1. The segmentation rules have not been updated for changes in Unicode 11.0. This does not affect ICU, since the rules there were changed manually. Implementers may wish to patch their v33.1 versions with the data in #11203 if they use the segmentation rules independent of ICU. The changes include simplifying the break rules for Emoji and not breaking within strings of white space.

    2. The ICU4J libraries included in v33.1 were not updated to ICU 62.0. There are no known problems with using ICU 61.0, but implementers may want to update their copies to ICU 62.0.

Acknowledgments

Many people have made significant contributions to CLDR and LDML; see the Acknowledgments page for a full listing. The contributors to v33.1 will appear on the page later, when v34 is released.

Key to Header Links

🏗 The CLDR site has been migrated to a new platform. Formatting and links continue to be fixed.

CLDR 33 Release Note

🏗 The CLDR site has been migrated to a new platform. Formatting and links continue to be fixed.

CLDR 33 Release Note

The following files showed the largest number of raw changes:

  • annotations/as.xml, main/as.xml, annotations/ru.xml, main/br.xml, annotations/or.xml, annotations/br.xml, annotations/ga.xml

Two changes affected the statistics:

  • The keywords (in annotations) are being treated as sets for counting purposes.

    • So old:{a | b | c} → new:{a | c | d | e} counts as one deletion and 2 additions.

  • The keywords have also had some redundancies removed: if a keyword consisted entirely of other keywords, it was removed.

    • So old:{a, a b, b} → new:{a, b}.

Migration

  • Plurals: ordinal and cardinal rules have been added for scn. The cardinal (plural) rules for Macedonian (mk) have been changed so that one➞other for {11}. Should not cause migration issues.

    • The emoji property data file ExtendedPictographic.txt has been removed from CLDR data, since the contents are now part of the UTS #51 “Unicode Emoji” data file: emoji-data.txt.

    • Adjusted the territory containment data for some regions near the South Pole, following changes in UN M49, so several of these now have new containing regions.

Known Issues

    1. New macroregions

    • UN M.49 now includes Sark (680) but ISO rejected the proposed ISO 3166-1 code, so it is not included.

    1. “Week of” structure

      • The structure and intended usage for the “week x of y” patterns is still being refined and may change. This applies especially to dateFormatItems such as the following:

      • <dateFormatItem id="MMMMW" count=...>'week' W 'of' MMM</dateFormatItem>

      • <dateFormatItem id="yw" count=...>'week' w 'of' y</dateFormatItem>

      • Areas of discussion include the use of the count attribute and the use of ordinal vs. cardinal numbers. For more information see [#9801].

  1. Subdivision Names

    • The draft subdivision names were imported from wikidata. Names that had characters outside of the language's exemplars were excluded for now. Names that would cause collisions were allowed, but marked with superscripted numbers. The goal is to clean up these names over time.

    1. Chinese stroke collation

      • In CLDR 30 and 31, Chinese stroke collation was missing entries for several basic characters. CLDR 32 reverted the stroke collation data to the CLDR 29 version; a complete fix for the underlying problem is targeted for CLDR 34. See #10497, #10642.

Acknowledgments

Many people have made significant contributions to CLDR and LDML; see the Acknowledgments page for a full listing.

Key to Header Links

The following files showed the largest number of raw changes:

  • annotations/as.xml, main/as.xml, annotations/ru.xml, main/br.xml, annotations/or.xml, annotations/br.xml, annotations/ga.xml

Two changes affected the statistics:

  • The keywords (in annotations) are being treated as sets for counting purposes.

    • So old:{a | b | c} → new:{a | c | d | e} counts as one deletion and 2 additions.

  • The keywords have also had some redundancies removed: if a keyword consisted entirely of other keywords, it was removed.

    • So old:{a, a b, b} → new:{a, b}.

Migration

  • Plurals: ordinal and cardinal rules have been added for scn. The cardinal (plural) rules for Macedonian (mk) have been changed so that one➞other for {11}. Should not cause migration issues.

    • The emoji property data file ExtendedPictographic.txt has been removed from CLDR data, since the contents are now part of the UTS #51 “Unicode Emoji” data file: emoji-data.txt.

    • Adjusted the territory containment data for some regions near the South Pole, following changes in UN M49, so several of these now have new containing regions.

Known Issues

    1. New macroregions

    • UN M.49 now includes Sark (680) but ISO rejected the proposed ISO 3166-1 code, so it is not included.

    1. “Week of” structure

      • The structure and intended usage for the “week x of y” patterns is still being refined and may change. This applies especially to dateFormatItems such as the following:

      • <dateFormatItem id="MMMMW" count=...>'week' W 'of' MMM</dateFormatItem>

      • <dateFormatItem id="yw" count=...>'week' w 'of' y</dateFormatItem>

      • Areas of discussion include the use of the count attribute and the use of ordinal vs. cardinal numbers. For more information see [#9801].

  1. Subdivision Names

    • The draft subdivision names were imported from wikidata. Names that had characters outside of the language's exemplars were excluded for now. Names that would cause collisions were allowed, but marked with superscripted numbers. The goal is to clean up these names over time.

    1. Chinese stroke collation

      • In CLDR 30 and 31, Chinese stroke collation was missing entries for several basic characters. CLDR 32 reverted the stroke collation data to the CLDR 29 version; a complete fix for the underlying problem is targeted for CLDR 34. See #10497, #10642.

Acknowledgments

Many people have made significant contributions to CLDR and LDML; see the Acknowledgments page for a full listing.

Key to Header Links

🏗 The CLDR site has been migrated to a new platform. Formatting and links continue to be fixed.

CLDR 34 Release Note

🏗 The CLDR site has been migrated to a new platform. Formatting and links continue to be fixed.

CLDR 34 Release Note

Overview

Unicode CLDR 34 provides an update to the key building blocks for software supporting the world's languages. CLDR data is used by all major software systems for their software internationalization and localization, adapting software to the conventions of different languages for such common software tasks.

CLDR 34 included a full Survey Tool data collection phase, adding approximately 6M of data overall, resulting in the following language support:

Overview

Unicode CLDR 34 provides an update to the key building blocks for software supporting the world's languages. CLDR data is used by all major software systems for their software internationalization and localization, adapting software to the conventions of different languages for such common software tasks.

CLDR 34 included a full Survey Tool data collection phase, adding approximately 6M of data overall, resulting in the following language support:

TBD: add chart

Migration

Known Issues

(These may addressed in a maintenance update)

Acknowledgments

Many people have made significant contributions to CLDR and LDML; see the Acknowledgments page for a full listing.

Key to Header Links

TBD: add chart

Migration

Known Issues

(These may addressed in a maintenance update)

Acknowledgments

Many people have made significant contributions to CLDR and LDML; see the Acknowledgments page for a full listing.

Key to Header Links

The Unicode Terms of Use apply to CLDR data; in particular, see Exhibit 1.

For web pages with different views of CLDR data, see http://cldr.unicode.org/index/charts.

Page updated
Report abuse
+</table>" jsaction="rcuQ6b:WYd;">

The Unicode Terms of Use apply to CLDR data; in particular, see Exhibit 1.

For web pages with different views of CLDR data, see http://cldr.unicode.org/index/charts.

Page updated
Report abuse
diff --git a/docs/site/downloads/cldr-35.md b/docs/site/downloads/cldr-35.md index ebf8886d2bd..510744e1bd1 100644 --- a/docs/site/downloads/cldr-35.md +++ b/docs/site/downloads/cldr-35.md @@ -3,7 +3,7 @@ title: 'CLDR 35 Download' --- -

🏗 The CLDR site has been migrated to a new platform. Formatting and links continue to be fixed.

CLDR 35 Release Note

🏗 The CLDR site has been migrated to a new platform. Formatting and links continue to be fixed.

CLDR 35 Release Note

Known Issues

Acknowledgments

Many people have made significant contributions to CLDR and LDML; see the Acknowledgments page for a full listing.

Key to Header Links

Known Issues

Acknowledgments

Many people have made significant contributions to CLDR and LDML; see the Acknowledgments page for a full listing.

Key to Header Links

🏗 The CLDR site has been migrated to a new platform. Formatting and links continue to be fixed.

CLDR 36 Release Note

🏗 The CLDR site has been migrated to a new platform. Formatting and links continue to be fixed.

CLDR 36 Release Note

Overview

Unicode CLDR 36 provides an update to the key building blocks for software supporting the world's languages. CLDR data is used by all major software systems for their software internationalization and localization, adapting software to the conventions of different languages for such common software tasks.

A main focus this release was on infrastructure. We moved to GitHub for source code control and Jira for bug tracking, and made significant improvements in performance of the online data-gathering Survey Tool. We are also now keeping more information in the master data, reflecting the votes in the Survey Tool for the “inherited” items (see Migration).

  • Approximately 32K items added

      • Significant increase (approx 50% or more) in moderate and/or modern coverage for: ceb (Cebuano), ha (Hausa / Latin script), ig (Igbo), kok (Konkani), qu (Quechua), to (Tongan), yo (Yoruba). Additionally, the following locales had at least a 15% increase in basic coverage: az (Azerbaijani / Latin script), so (Somali / Latin script).

    • Seed data for new locales, including three native languages of N. America: cic (Chickasaw), mus (Muscogee), osa (Osage, Osage script); an (Aragonese), su (Sundanese, Latin script), szl (Silesian).

      • Additional data for new items listed below.

  • Emoji

      • Added names and keywords for Emoji 13.0 draft candidates; these are to be fleshed out further in v36.1.

      • Refined names and keywords for Emoji 12.0, including for English.

    • Measurement units:

      • Additional compoundUnitPattern ({0}⋅{1} in root) for expressing units like newton-meter (N⋅m)

      • Additional units: dot-per-centimeter, dot-per-inch, em, megapixel, pixel, pixel-per-centimeter, pixel-per-inch; decade; therm-us; bar, pascal

  • Locale identifiers and names

    • Extended Language Matching to have fallbacks for many encompassed languages. [CLDR-13244]

    • Added more languageAliases from the BCP47 language subtag registry, for deprecated languages.

    • New alt=“menu” names for certain languages, intended to provide better sorting in menus. [CLDR-11834]

      • Updated validity and collection information for geographic subregions; updated names especially for subregions of UK and Sweden.

      • Names have been added for “pseudo-regions” XA (Pseudo-Accents) and XB (Pseudo-Bidi). These are only intended for testing purposes, you may need to add special handling to remove them for production purposes. [CLDR-13100]

    • Other

    • Additions for testing:

    • Added new test directory /common/testData/, with test data for:

      • localeIdentifiers,

      • graphemeClusters (currently supported Indic languages)

      • transforms (transliterations)

      • For test purposes, added names for “pseudo-regions” XA and XB as noted above.

  • Infrastructure

      • Moved to GitHub for source code control and Jira for bug tracking (See CLDR Change Requests for new information). Queries using Trac no longer work.

      • Data in cldr repository keeps record of votes for inherited (↑↑↑) [CLDR-11989]. A new tool GenerateProductionData is used to resolve the inheritance markers and provide appropriate minimization.

      • A new cldr-staging repository contains data that has been processed with GenerateProductionData.

    • Added new API and tooling to support conversion to other formats (ICU in particular)

    • Performance improvements in Survey Tool

For details, see Detailed Specification Changes, Detailed Structure Changes, and Detailed Data Changes.

Detailed Specification Changes

For this version, the primary change in the LDML specification was to document changes in the emoji derived name algorithm.

For more detailed specification changes, see LDML36 Modifications.

Detailed Structure Changes

This version had only one structural addition and one new “alt” value for language names:

    • A new <compoundUnit type="times"> provides the pattern for combining units in a multiplicative relationship such as Newton-meters,

    • For some language names there is a new alt="menu" form which procides names more suitable for use in menus. For example:

    • <language type="yue" alt="menu">Chinese, Cantonese</language>.

Detailed Data Changes

Important data changes besides those listed in the Overview:

    • Transforms

      • Hiragana-Katakana no longer modifies the spacing dakuten U+309B, U+309C. [CLDR-13127]

      • Latin-ASCII enhanced for Latin extended C and D and some symbols. [CLDR-11383]

    • Miscellaneous

    • zh: The currency symbol for CNY changed from fullwidth ¥(FFE5) to halfwidth ¥ (00A5)

      • fr_CA : Switched to full year (not 2-digit year) in short date formats. [CLDR-11666]

      • bg: Removed “ч.” from time formats. [CLDR-11545]

      • The translations for the new name 'North Macedonia' has been refined for many languages by contributors, and those languages with no contributors have been reverted to code 'MK'. All Alt values also have been removed [CLDR-13099].

For more details see the list of bug fixes: Δ36.

Migration

    1. CLDR has moved to GitHub for source code control and Jira for bug tracking. Queries using Trac no longer work.

  1. The data in main cldr git repository includes element values with “↑↑↑”.

    1. Such values indicate that translators explicitly determined that the parent value is always valid.

    2. These values (and the paths they belong to) are removed from the release data, but tools that explicitly access the repository information directly need to remove them.

    3. A new tool in CLDR, GenerateProductionData.java, is used to strip the ↑↑↑ and minimize the data. (Those implementations that don't use that tool can remove lines that contain ↑↑↑; they will always be leaf nodes in XML.)

    4. A new repository cldr-staging contains data that has already been processed with GenerateProductionData.java (this is the data that is used for the release).

  2. Some empty files are included in /collation/, where the root data is valid for them, while some empty files are removed from /annotationsDerived and /subdivisions/

  3. Names have been added for “pseudo-regions” XA (Pseudo-Accents) and XB (Pseudo-Bidi). These are only intended for testing purposes, you may need to add special handling to remove them for production purposes. [CLDR-13100]

    1. North Macedonia: The translations for the new name 'North Macedonia' has been refined for many languages by contributors, and those languages with no contributors have been reverted to code 'MK'. All Alt values also have been removed [CLDR-13099].

  1. Other specific data changes to be aware of:

    1. zh: The currency symbol for CNY changed from fullwidth ¥(FFE5) to halfwidth ¥ (00A5)

      1. fr_CA : Switched to full year (not 2-digit year) in short date formats. [CLDR-11666]

      2. bg: Removed “ч.” from time formats. [CLDR-11545]

Known Issues

    1. The Transform charts are temporarily disabled. [CLDR-13308]

CLDR 36.1

This dot release makes incremental additions to version 36 for support of Unicode 13 and ICU 66. (These new, extra Q1 releases are for integration by vendors who could not otherwise release their products with the newest version of Unicode.)

  1. New script codes: Chrs, Diak, Kits, Yezi

  2. New numbering system: diak, segment

  3. Unicode 13.0 updates to root collation, with updated emoji collation (from CLDR 37 alpha data)

  4. Updates to Han-Latin transform and to Chinese pinyin and stroke collations from Unihan 13.0 data

  5. Updates to emoji annotations (from CLDR 37 alpha data)

Acknowledgments

Many people have made significant contributions to CLDR and LDML; see the Acknowledgments page for a full listing.

Key to Header Links

Overview

Unicode CLDR 36 provides an update to the key building blocks for software supporting the world's languages. CLDR data is used by all major software systems for their software internationalization and localization, adapting software to the conventions of different languages for such common software tasks.

A main focus this release was on infrastructure. We moved to GitHub for source code control and Jira for bug tracking, and made significant improvements in performance of the online data-gathering Survey Tool. We are also now keeping more information in the master data, reflecting the votes in the Survey Tool for the “inherited” items (see Migration).

  • Approximately 32K items added

      • Significant increase (approx 50% or more) in moderate and/or modern coverage for: ceb (Cebuano), ha (Hausa / Latin script), ig (Igbo), kok (Konkani), qu (Quechua), to (Tongan), yo (Yoruba). Additionally, the following locales had at least a 15% increase in basic coverage: az (Azerbaijani / Latin script), so (Somali / Latin script).

    • Seed data for new locales, including three native languages of N. America: cic (Chickasaw), mus (Muscogee), osa (Osage, Osage script); an (Aragonese), su (Sundanese, Latin script), szl (Silesian).

      • Additional data for new items listed below.

  • Emoji

      • Added names and keywords for Emoji 13.0 draft candidates; these are to be fleshed out further in v36.1.

      • Refined names and keywords for Emoji 12.0, including for English.

    • Measurement units:

      • Additional compoundUnitPattern ({0}⋅{1} in root) for expressing units like newton-meter (N⋅m)

      • Additional units: dot-per-centimeter, dot-per-inch, em, megapixel, pixel, pixel-per-centimeter, pixel-per-inch; decade; therm-us; bar, pascal

  • Locale identifiers and names

    • Extended Language Matching to have fallbacks for many encompassed languages. [CLDR-13244]

    • Added more languageAliases from the BCP47 language subtag registry, for deprecated languages.

    • New alt=“menu” names for certain languages, intended to provide better sorting in menus. [CLDR-11834]

      • Updated validity and collection information for geographic subregions; updated names especially for subregions of UK and Sweden.

      • Names have been added for “pseudo-regions” XA (Pseudo-Accents) and XB (Pseudo-Bidi). These are only intended for testing purposes, you may need to add special handling to remove them for production purposes. [CLDR-13100]

    • Other

    • Additions for testing:

    • Added new test directory /common/testData/, with test data for:

      • localeIdentifiers,

      • graphemeClusters (currently supported Indic languages)

      • transforms (transliterations)

      • For test purposes, added names for “pseudo-regions” XA and XB as noted above.

  • Infrastructure

      • Moved to GitHub for source code control and Jira for bug tracking (See CLDR Change Requests for new information). Queries using Trac no longer work.

      • Data in cldr repository keeps record of votes for inherited (↑↑↑) [CLDR-11989]. A new tool GenerateProductionData is used to resolve the inheritance markers and provide appropriate minimization.

      • A new cldr-staging repository contains data that has been processed with GenerateProductionData.

    • Added new API and tooling to support conversion to other formats (ICU in particular)

    • Performance improvements in Survey Tool

For details, see Detailed Specification Changes, Detailed Structure Changes, and Detailed Data Changes.

Detailed Specification Changes

For this version, the primary change in the LDML specification was to document changes in the emoji derived name algorithm.

For more detailed specification changes, see LDML36 Modifications.

Detailed Structure Changes

This version had only one structural addition and one new “alt” value for language names:

    • A new <compoundUnit type="times"> provides the pattern for combining units in a multiplicative relationship such as Newton-meters,

    • For some language names there is a new alt="menu" form which procides names more suitable for use in menus. For example:

    • <language type="yue" alt="menu">Chinese, Cantonese</language>.

Detailed Data Changes

Important data changes besides those listed in the Overview:

    • Transforms

      • Hiragana-Katakana no longer modifies the spacing dakuten U+309B, U+309C. [CLDR-13127]

      • Latin-ASCII enhanced for Latin extended C and D and some symbols. [CLDR-11383]

    • Miscellaneous

    • zh: The currency symbol for CNY changed from fullwidth ¥(FFE5) to halfwidth ¥ (00A5)

      • fr_CA : Switched to full year (not 2-digit year) in short date formats. [CLDR-11666]

      • bg: Removed “ч.” from time formats. [CLDR-11545]

      • The translations for the new name 'North Macedonia' has been refined for many languages by contributors, and those languages with no contributors have been reverted to code 'MK'. All Alt values also have been removed [CLDR-13099].

For more details see the list of bug fixes: Δ36.

Migration

    1. CLDR has moved to GitHub for source code control and Jira for bug tracking. Queries using Trac no longer work.

  1. The data in main cldr git repository includes element values with “↑↑↑”.

    1. Such values indicate that translators explicitly determined that the parent value is always valid.

    2. These values (and the paths they belong to) are removed from the release data, but tools that explicitly access the repository information directly need to remove them.

    3. A new tool in CLDR, GenerateProductionData.java, is used to strip the ↑↑↑ and minimize the data. (Those implementations that don't use that tool can remove lines that contain ↑↑↑; they will always be leaf nodes in XML.)

    4. A new repository cldr-staging contains data that has already been processed with GenerateProductionData.java (this is the data that is used for the release).

  2. Some empty files are included in /collation/, where the root data is valid for them, while some empty files are removed from /annotationsDerived and /subdivisions/

  3. Names have been added for “pseudo-regions” XA (Pseudo-Accents) and XB (Pseudo-Bidi). These are only intended for testing purposes, you may need to add special handling to remove them for production purposes. [CLDR-13100]

    1. North Macedonia: The translations for the new name 'North Macedonia' has been refined for many languages by contributors, and those languages with no contributors have been reverted to code 'MK'. All Alt values also have been removed [CLDR-13099].

  1. Other specific data changes to be aware of:

    1. zh: The currency symbol for CNY changed from fullwidth ¥(FFE5) to halfwidth ¥ (00A5)

      1. fr_CA : Switched to full year (not 2-digit year) in short date formats. [CLDR-11666]

      2. bg: Removed “ч.” from time formats. [CLDR-11545]

Known Issues

    1. The Transform charts are temporarily disabled. [CLDR-13308]

CLDR 36.1

This dot release makes incremental additions to version 36 for support of Unicode 13 and ICU 66. (These new, extra Q1 releases are for integration by vendors who could not otherwise release their products with the newest version of Unicode.)

  1. New script codes: Chrs, Diak, Kits, Yezi

  2. New numbering system: diak, segment

  3. Unicode 13.0 updates to root collation, with updated emoji collation (from CLDR 37 alpha data)

  4. Updates to Han-Latin transform and to Chinese pinyin and stroke collations from Unihan 13.0 data

  5. Updates to emoji annotations (from CLDR 37 alpha data)

Acknowledgments

Many people have made significant contributions to CLDR and LDML; see the Acknowledgments page for a full listing.

Key to Header Links

🏗 The CLDR site has been migrated to a new platform. Formatting and links continue to be fixed.

CLDR 37 Release Note

🏗 The CLDR site has been migrated to a new platform. Formatting and links continue to be fixed.

CLDR 37 Release Note

See Key to Header Links

Overview

Unicode CLDR provides an update to the key building blocks for software supporting the world's languages. CLDR data is used by all major software systems (including all mobile phones) for their software internationalization and localization, adapting software to the conventions of different languages.

CLDR v37 focuses on adding new locales, enhancing support for units of measurement, adding annotations (names and search keywords) for symbols, and adding annotations for Emoji v13.

Data Changes

  • Units

    • Expanded locale preferences for units of measurement. The new unit preference and conversion data allows formatting functions to pick the right measurement units for the locale and usage, and convert input measurement into those units. See additional details in Specification Changes.

    • SI Prefixes. SI prefix patterns for "kilo{0}", "mega{0}", etc. have been added, as well as the prefix terms for square and cubic. These are fallbacks for when no combined form is available, so that the name for more unusual units like megagram or square megameter can be formed in different languages.

    • Other additions. A few unit identifiers translations been added, such as duration-century, area-square-kilometer, area-square-meter.

    • See also Migration.

  • Annotations

    • Emoji 13.0. The emoji annotations (names and search keywords) for the new Unicode 13.0 emoji are added.

    • Annotations (names and keywords) expanded to cover more than emoji. This release includes a small set of Unicode symbols (arrow, math, punctuation, currency, alphanumerics, and geometric) with more to be added in future releases. For example, see v37/annotations/romance.html.

  • Sorting

    • Emoji 13.0. The collation sequences are updated for new Unicode 13.0 and for Emoji 13.0.

  • Locales

    • New languages at Basic coverage: Fulah (Adlam), Maithili, Manipuri, Santali, Sindhi (Devanagari), Sundanese

    • New languages at Modern coverage: Nigerian Pidgin

    • See Locale Coverage Data for the coverage per locale, for both new and old locales.

  • Grammatical data

    • Grammatical features added. Grammatical features are added for many languages, a first step to allowing programmers to format units according to grammatical context (eg, the dative version of "3 kilometers").

  • Misc

    • Updates to code sets. In particular, the EU is updated (removing GB).

    • Alternate versions. In some languages

      • Some additional language names have "menu" style for alphabetizing, such as Kurdish, Central instead of Central Kurdish.

      • There are variants for Cape Verde as equivalent to Cabo Verde.

    • Myanmar-Latin transliteration added

For access to the data, see the GitHub tag above. For more details see the Delta Tickets above.

Specification Changes

The largest changes were the following:

  • Expanded locale preferences for units of measurement. The new unit preference and conversion data allows formatting functions to pick the right measurement units for the locale and usage, and convert input measurement into those units.

    • For example, a program (or database) could use 1.88 meters internally, but then for person-height have that measurement convert to 6 foot 2 inches for en_US and to 188 centimeters for de_CH.

    • Using the unit display names and list formats, those results can then be displayed according to the desired width (eg 2″ vs 2 in vs 2 inches) and using the locale display names and number formats.

    • The size of the measurement can also be taken into account, so that an infant can have a height as 18 inches, and an adult the height as 6 foot 2 inches.

  • Grammatical features added. Grammatical features are added for many languages.

    • List Patterns. Clarified that more sophisticated processing can be used, and added examples of customized processing for specific languages.

For more detailed specification changes, see the Spec above, and look at the Modifications section.

Structure Changes

  • New elements are added for enhanced unit preferences, such as the units to use for person-height in different countries. This is an initial phase; additional preferences will be added in the future.

  • Additionally, elements and data are added for unit conversions, so that programmers can supply amounts in one unit and get the right amounts to display for different locales.

  • Grammatical features are added for various languages, as a prelude to allowing programmers to format units according to grammatical context (eg, dative version of 3 kilometers)

  • The augmented constraints have been updated, so that the tests can apply those constraints to all of the CLDR data.

  • Annotations now include non-emoji. Note: emoji are distinguished from other symbols using Unicode properties.

For more information, see the Delta DTDs above.

Chart Changes

Growth

The following chart shows the growth of CLDR locale-specific data over time. It does not include the non-locale specific data, nor locale-specific data that is not collected via the Survey Tool. It is thus restricted to data items in /main and /annotations directories. The % values are percent of the current measure of Modern coverage. (That level is notched up each release.)

See also the Locale Coverage Data.

Migration

  • Seven unit identifiers with irregular components have been deprecated, and are given alias values to the regular forms. For example, square always comes before the unit, and is square, not squared. The validity data has also been updated to mark the older forms as deprecated.

      • inch-hg ⟹ inch-ofhg

      • liter-per-100kilometers ⟹ liter-per-100-kilometer

      • meter-per-second-squared ⟹ meter-per-square-second

      • millimeter-of-mercury ⟹ millimeter-ofhg

      • part-per-million ⟹ permillion

      • pound-foot ⟹ pound-force-foot

      • pound-per-square-inch ⟹ pound-force-per-square-inch

    • Some of the unit usage parameters were also deprecated, since they didn't differ in practice. (The spec has been updated to have fallback, so if these need to be distinct in the future, they would be of the form media-music or media-music-track.)

      • music-track ⟹ media

      • tv-program ⟹ media

    • The subdivision codes gbeng, gbsct, and gbwls (used for flag emoji) are now deprecated (ISO removed them from its latest data). This can affect implementations testing for validity if they don't also check for 'deprecated' in common/validity/subdivision.xml. Compare the Territory Subdivisions charts for v37 and v36.

Known Issues

  1. The expanded unit preferences are under development. The data is based on what was in CLDR v36, plus some other sources, but will be expanded in the future both to get better thresholds, and cover more cases where locales differ. See the ticket Improve unit structure and data [CLDR-13654]

  2. The Transform charts have been disabled. [CLDR-13308]

  3. The charts show spurious changes for gbeng, etc. That's because the file locations changed across releases.

  4. The JSON-format data for CLDR 37 currently omits the data from the CLDR common/supplemental files grammaticalFeatures.xml and units.xml. These are all new items in CLDR 37 except for the <unitPreferenceData>, which was formerly in supplementalData.xml. This will be addressed as soon as possible. [CLDR-13730]

Acknowledgments

Many people have made significant contributions to CLDR and LDML; see the Acknowledgments page for a full listing.

Special thanks to the contributors to Nigerian Pidgin; one of the very few locales to go from zero to Modern coverage in one submission cycle!

The Unicode Terms of Use apply to CLDR data; in particular, see Exhibit 1.

For web pages with different views of CLDR data, see http://cldr.unicode.org/index/charts.

Page updated
Report abuse
+</table>" jsaction="rcuQ6b:WYd;">

See Key to Header Links

Overview

Unicode CLDR provides an update to the key building blocks for software supporting the world's languages. CLDR data is used by all major software systems (including all mobile phones) for their software internationalization and localization, adapting software to the conventions of different languages.

CLDR v37 focuses on adding new locales, enhancing support for units of measurement, adding annotations (names and search keywords) for symbols, and adding annotations for Emoji v13.

Data Changes

  • Units

    • Expanded locale preferences for units of measurement. The new unit preference and conversion data allows formatting functions to pick the right measurement units for the locale and usage, and convert input measurement into those units. See additional details in Specification Changes.

    • SI Prefixes. SI prefix patterns for "kilo{0}", "mega{0}", etc. have been added, as well as the prefix terms for square and cubic. These are fallbacks for when no combined form is available, so that the name for more unusual units like megagram or square megameter can be formed in different languages.

    • Other additions. A few unit identifiers translations been added, such as duration-century, area-square-kilometer, area-square-meter.

    • See also Migration.

  • Annotations

    • Emoji 13.0. The emoji annotations (names and search keywords) for the new Unicode 13.0 emoji are added.

    • Annotations (names and keywords) expanded to cover more than emoji. This release includes a small set of Unicode symbols (arrow, math, punctuation, currency, alphanumerics, and geometric) with more to be added in future releases. For example, see v37/annotations/romance.html.

  • Sorting

    • Emoji 13.0. The collation sequences are updated for new Unicode 13.0 and for Emoji 13.0.

  • Locales

    • New languages at Basic coverage: Fulah (Adlam), Maithili, Manipuri, Santali, Sindhi (Devanagari), Sundanese

    • New languages at Modern coverage: Nigerian Pidgin

    • See Locale Coverage Data for the coverage per locale, for both new and old locales.

  • Grammatical data

    • Grammatical features added. Grammatical features are added for many languages, a first step to allowing programmers to format units according to grammatical context (eg, the dative version of "3 kilometers").

  • Misc

    • Updates to code sets. In particular, the EU is updated (removing GB).

    • Alternate versions. In some languages

      • Some additional language names have "menu" style for alphabetizing, such as Kurdish, Central instead of Central Kurdish.

      • There are variants for Cape Verde as equivalent to Cabo Verde.

    • Myanmar-Latin transliteration added

For access to the data, see the GitHub tag above. For more details see the Delta Tickets above.

Specification Changes

The largest changes were the following:

  • Expanded locale preferences for units of measurement. The new unit preference and conversion data allows formatting functions to pick the right measurement units for the locale and usage, and convert input measurement into those units.

    • For example, a program (or database) could use 1.88 meters internally, but then for person-height have that measurement convert to 6 foot 2 inches for en_US and to 188 centimeters for de_CH.

    • Using the unit display names and list formats, those results can then be displayed according to the desired width (eg 2″ vs 2 in vs 2 inches) and using the locale display names and number formats.

    • The size of the measurement can also be taken into account, so that an infant can have a height as 18 inches, and an adult the height as 6 foot 2 inches.

  • Grammatical features added. Grammatical features are added for many languages.

    • List Patterns. Clarified that more sophisticated processing can be used, and added examples of customized processing for specific languages.

For more detailed specification changes, see the Spec above, and look at the Modifications section.

Structure Changes

  • New elements are added for enhanced unit preferences, such as the units to use for person-height in different countries. This is an initial phase; additional preferences will be added in the future.

  • Additionally, elements and data are added for unit conversions, so that programmers can supply amounts in one unit and get the right amounts to display for different locales.

  • Grammatical features are added for various languages, as a prelude to allowing programmers to format units according to grammatical context (eg, dative version of 3 kilometers)

  • The augmented constraints have been updated, so that the tests can apply those constraints to all of the CLDR data.

  • Annotations now include non-emoji. Note: emoji are distinguished from other symbols using Unicode properties.

For more information, see the Delta DTDs above.

Chart Changes

Growth

The following chart shows the growth of CLDR locale-specific data over time. It does not include the non-locale specific data, nor locale-specific data that is not collected via the Survey Tool. It is thus restricted to data items in /main and /annotations directories. The % values are percent of the current measure of Modern coverage. (That level is notched up each release.)

See also the Locale Coverage Data.

Migration

  • Seven unit identifiers with irregular components have been deprecated, and are given alias values to the regular forms. For example, square always comes before the unit, and is square, not squared. The validity data has also been updated to mark the older forms as deprecated.

      • inch-hg ⟹ inch-ofhg

      • liter-per-100kilometers ⟹ liter-per-100-kilometer

      • meter-per-second-squared ⟹ meter-per-square-second

      • millimeter-of-mercury ⟹ millimeter-ofhg

      • part-per-million ⟹ permillion

      • pound-foot ⟹ pound-force-foot

      • pound-per-square-inch ⟹ pound-force-per-square-inch

    • Some of the unit usage parameters were also deprecated, since they didn't differ in practice. (The spec has been updated to have fallback, so if these need to be distinct in the future, they would be of the form media-music or media-music-track.)

      • music-track ⟹ media

      • tv-program ⟹ media

    • The subdivision codes gbeng, gbsct, and gbwls (used for flag emoji) are now deprecated (ISO removed them from its latest data). This can affect implementations testing for validity if they don't also check for 'deprecated' in common/validity/subdivision.xml. Compare the Territory Subdivisions charts for v37 and v36.

Known Issues

  1. The expanded unit preferences are under development. The data is based on what was in CLDR v36, plus some other sources, but will be expanded in the future both to get better thresholds, and cover more cases where locales differ. See the ticket Improve unit structure and data [CLDR-13654]

  2. The Transform charts have been disabled. [CLDR-13308]

  3. The charts show spurious changes for gbeng, etc. That's because the file locations changed across releases.

  4. The JSON-format data for CLDR 37 currently omits the data from the CLDR common/supplemental files grammaticalFeatures.xml and units.xml. These are all new items in CLDR 37 except for the <unitPreferenceData>, which was formerly in supplementalData.xml. This will be addressed as soon as possible. [CLDR-13730]

Acknowledgments

Many people have made significant contributions to CLDR and LDML; see the Acknowledgments page for a full listing.

Special thanks to the contributors to Nigerian Pidgin; one of the very few locales to go from zero to Modern coverage in one submission cycle!

The Unicode Terms of Use apply to CLDR data; in particular, see Exhibit 1.

For web pages with different views of CLDR data, see http://cldr.unicode.org/index/charts.

Page updated
Report abuse
diff --git a/docs/site/downloads/cldr-38.md b/docs/site/downloads/cldr-38.md index d0554342824..2926f85906b 100644 --- a/docs/site/downloads/cldr-38.md +++ b/docs/site/downloads/cldr-38.md @@ -3,7 +3,7 @@ title: 'CLDR 38 Download' --- -

🏗 The CLDR site has been migrated to a new platform. Formatting and links continue to be fixed.

CLDR 38 Release Note

🏗 The CLDR site has been migrated to a new platform. Formatting and links continue to be fixed.

CLDR 38 Release Note

See Key to Header Links

Overview

Unicode CLDR provides an update to the key building blocks for software supporting the world's languages. CLDR data is used by all major software systems (including all mobile phones) for their software internationalization and localization, adapting software to the conventions of different languages.

CLDR v38 focused on enhancing the support for existing locales: Support for units of measurement in inflected languages (phase 1), adding annotations (names and search keywords) for many more non-emoji symbols (~400), plus for Emoji v13.1. In this version, there is also substantially higher coverage for (in order of completeness): Norwegian Nynorsk, Hausa, Igbo, Breton, Quechua, Yoruba, Fulah (Adlam script), Chakma, Asturian, Sanskrit, and Dogri.

The units of measurement additions allow for support of APIs for simple unitIDs such as meter up to compound unitIDs such as cubic-meter-per-square-second or acre-feet-per-day, such as the following:

getUnitPattern(unitId, locale, width, pluralCategory, caseVariant) — to get the localized, inflected pattern for a simple or compound unit of measurement, appropriate for a position in a sentence or phrase with the appropriate pluralCategory and grammatical case (nominative, accusative, genitive, etc).

getUnitGender(unitId, locale) — to get the gender for a unit of measurement, so that other parts of a sentence or phrase can be modified to agree with that gender.

The Survey Tool has improvements in performance, and introduced structured forum requests to improve coordination among translators. We would like to thank the 393 language experts who contributed to this release.

There are some changes that affect existing specifications and data: for example, the plural rules for French changed to add a new category; the specification for using aliases is more rigorous, and some alias data has changed — along with the specification for handling locale identifier canonicalization. For more information, see Migration.

The overall changes to the data items were:

Added

155,131

Deleted

33,805

Changed

45,895

Data Changes

The following summarizes the changes to the data for this version of CLDR.

  • 13.1 Emoji and Unicode Symbols

      • Added names & search keywords for Emoji 13.1 and enhancements to existing emoji annotation data.

      • Added approximately 400 non-emoji Unicode symbols such as punctuation and currency symbols.

      • Added 2 character labels: superscript {0} and subscript {0}.

      • Aside from the CLDR target locales, emoji annotations and keywords expanded in Hausa (ha), Igbo (ig), Kalaallisut (kl), Luxembourgish (lb), Maori (mi), Manipuri (mni), Maltese (mt), Punjabi [Arabic] (pa_Arab), Kinyarwanda (rw), Tajik (tg), Tigrinya (ti), Uyghur (ug), Wolof (wo), Xhosa (xh), Yoruba (yo), with minor expansions in a few other languages.

  • Compact decimals and Units

      • Added 14 new units.

      • Added new binary prefixes.

      • Added new operand 'c' (with a synonym 'e') for languages like French (CLDR-12010)

  • Higher Coverage Levels

      • Modern: Norwegian Nynorsk

      • Moderate++: Hausa, Igbo, Breton, Quechua, Yoruba — made significant improvements, but didn't make it quite to Modern

      • Moderate: Fulah (Adlam), Chakma, Asturian

      • Basic+: Wolof, Tajik, Maori, Luxembourgish, Uyghur, Tigrinya — made significant improvements, but didn't get near to Moderate

      • Basic: Sanskrit, Dogri

  • Unit Inflections

      • Completed phase 1. The full goal is to add full case and gender support for formatted units. During phase 1, a limited number of locales (see below) and units of measurement are being handled, so that we can work kinks out of the process before expanding to all units for all locales (where we can get the grammatical structure).

      • Case & Gender: Polish (pl), Russian (ru), German (de), Hindi (hi) (in rough order of complexity)

      • Gender Only: Dutch (nl), Norwegian Bokmål (nb), Danish (da), Swedish (sv), French (fr), Italian (it), Portuguese (pt), Spanish (es)

  • Performance & Quality

      • Made substantial improvements in Survey Tool performance, lowering cost for translation.

      • Made substantial improvement in quality, using structured Forum topics to allow translators to collaborate more effectively.

      • Improved detection of translator errors.

  • ICU support

      • Improvements to CLDR API, providing a limited, stable API for extracting CLDR data.

      • Adding approximatelySign for number formatting.

  • Unicode locale identifiers and BCP 47

      • Added a new -u locale extension keyword -dx, used to specify scripts to exclude from dictionary break (for word and line break)

      • Added a new short timezone identifier: tz-glgoh

      • Revamped the language, script, region, and variant alias data to improve replacement of deprecated codes.

For access to the draft data, see the git tag above. For more details see the Delta tickets above.

JSON Data Changes

JSON data now includes data for plural ranges, grammatical inflections, typographical labels, and annotations. If you are making use of JSON data, please join the [cldr-users] mailing list where we would like to hear your feedback.

CLDR JSON data for v38 is available, please see https://github.com/unicode-org/cldr-json

Specification Changes

The largest changes were the following:

  • To make the canonicalization of locale identifiers clear and unambiguous, provided major restructuring of the specification for canonicalization. (This was done in concert with fixes to the alias data to work better with the specification.) See Migration and Annex C. LocaleId Canonicalization for more details.

  • To allow for overriding dictionary-based segmentation breaks, added the Unicode Dictionary Break Exclusion Identifier, with the new key “dx”.

  • For picking the correct units of measurement for locales, defined the userPreferences skeleton more precisely.

    • For accurate plural categories in compact numbers, added the 'c' operand to plural rules to provide formatting for languages such as French. (CLDR-12010)

  • To support inflected units of measurement (phase 1), add specifications for the new elements listed under Structure Changes and an algorithm for how to construct grammatical unit names (simple or compound).

For more detailed specification changes, see the Spec above, and look at the Modifications section.

Structure Changes

  • Added additional structure for unit inflections

    • New elements:

      • minimalPairs adds new elements caseMinimalPairs and genderMinimalPairs

      • unit adds a new element gender

      • grammaticalData adds new elements grammaticalDerivations, deriveCompound, and deriveComponent

    • New attributes for existing elements:

      • unitPattern adds a new attribute case

      • grammaticalCase, grammaticalGender, grammaticalDefiniteness add a new attribute scope

      • compoundUnitPattern1 adds new attributes case and gender

      • compoundUnitPattern adds a new attribute case

  • Number symbols adds approximatelySign element

  • Some additional attribute value constraints are added

    • for example, characterLabelPattern@type now allows for superscript and subscript values, indicated by the notation ⟪… strokes⟫➠⟪… strokes, subscript, superscript⟫ in Delta DTDs

    • some of these constraints are expanded due to new structure, while others are

For more details, see the Delta DTDs above.

Chart Changes

  • All charts are updated for the new data; for example, Romance Annotations shows the new non-emoji symbols and punctuation for Romance languages.

  • The DTD Deltas chart has a more compact representation for changes in attribute constraints, making the changes easier to see.

  • The new Grammatical Forms Charts show the new grammatical forms for units.

Growth

The following chart shows the growth of CLDR locale-specific data over time. It does not include the non-locale specific data, nor locale-specific data that is not collected via the Survey Tool. It is thus restricted to data items in /main and /annotations directories.

The % values are percent of the current measure of Modern coverage. That level is notched up each release, so previous releases had many locales that were at Modern coverage as assessed at the time of their release. There is one line per year, even though there were multiple releases in most years.

See also the Locale Coverage Data v38 and for details of the changes see delta_summary.tsv and locale-growth.tsv

Migration

  • The plural rules for French changed to add a new category, 'many', using the new operand 'c' (with a synonym 'e'). It should only have effect on compact number handling.

    • Important: according to the spec, when there is no message for a plural category, the message for 'other' should be returned. As long as implementations observe this policy, migration to this should work without problems.

  • <languageMatches type="written"> was deprecated some time ago, and now has been removed. Clients should use <languageMatches type="written_new"> (recognizing that there are some syntax changes). CLDR-13245

  • The following locales have been moved in the folder structures. CLDR-14080

    • Seed → Common: Sanskrit (sa)

    • Common → Seed: Church Slavic (cu), Volapük (vo), Prussian (prg)

  • The specification for using aliases is more rigorous, and some alias data has changed. Programs using this data may need modification:

    • The specification processes the rules in a certain order, so the file order needs to be maintained.

    • The specification now explicitly takes multiple passes (though that can be optimized by implementations)

    • Various variantAliases are replaced by languageAliases where they require more context to be properly handed (the former specification did not handle variant aliases correctly).

      • AALAND ⇒ AX is replaced by und_aaland ⇒ und_AX

      • arevmda ⇒ hyw is replaced by two rules: hy_arevmda ⇒ hyw & und_arevmda ⇒ und

    • Some spurious aliases have been removed, where they are not properly aliases but rather partial duplications of more complete information:

      • Those covered by the parent locale data and/or likely subtag data, such as az_AZ ⇒ az_Latn_AZ

      • Those covered by canonicalization of extlang subtags, such as zh_wuu ⇒ wuu

    • Changes to the download files:

      • cldr-tools-*.zip no longer contains a built cldr.jar, use the separate cldr-tools-*.jar instead.

        • And as of v38.1 and later, cldr-tools-*.zip is no longer included at all. You can download or checkout the source tree directly from GitHub.

      • cldr-tools-*.jar is a standalone .jar file containing the CLDR tools and all needed dependencies.

      • There is a new "hashes/" subdirectory which contains GPG signatures and SHA-512 sums.

External Data Version

Known Issues

  1. The Transform charts have been disabled until the generating code could be fixed. [CLDR-11019]

  2. The JSON-format data for CLDR 38 currently omits the data from the CLDR common/supplemental files grammaticalFeatures.xml and units.xml. These are all new items in CLDR 37 except for the <unitPreferenceData>, which was formerly in supplementalData.xml. This will be addressed as soon as possible. [CLDR-13730]

  3. Hebrew compact number formatting scrambles text if embedded in RTL message [CLDR-14256]

    1. There are a number of fixes needed in the LDML specification.

    2. CLDR-14272 The documentation of @targets and @scope in grammaticalFeatures is missing; see the ticket for the missing text.

      1. CLDR-14312 replacement in subdivisionAlias in common/supplemental/supplementalMetadata.xml contains alpha{2}

      2. CLDR-14318 Should not remove "true" of tfield in UTS35 Appendix A

      3. CLDR-14319 Remove wrong/duplicated example below "Territory Exception" in UTS35 Appendix A

      4. CLDR-14320 "Put all <keywords, tfields> pairs into alphabetical order" is wrong in Appendix A of UTS35

      5. CLDR-13894 Need to use variantAlias replacement in BCP 47 Language Tag to Unicode BCP 47 Locale Identifier

      6. CLDR-14244 Document special 'alt' inheritance

CLDR 38.1

This dot release makes a very small number of incremental additions to version 38 to address the specific bugs listed in Δ38.1. The data changes are summarized in 38.1/delta/index.html. CLDR v38.1 is also included in ICU 68.2.

Migration note for CLDR 38.1:

    • As of v38.1 and later, cldr-tools-*.zip is no longer included in the download files. You can download or checkout the source tree directly from GitHub.

Acknowledgments

Many people have made significant contributions to CLDR and LDML; see the Acknowledgments page for a full listing.

The Unicode Terms of Use apply to CLDR data; in particular, see Exhibit 1.

For web pages with different views of CLDR data, see http://cldr.unicode.org/index/charts.

Page updated
Report abuse
+</table>" jsaction="rcuQ6b:WYd;">

See Key to Header Links

Overview

Unicode CLDR provides an update to the key building blocks for software supporting the world's languages. CLDR data is used by all major software systems (including all mobile phones) for their software internationalization and localization, adapting software to the conventions of different languages.

CLDR v38 focused on enhancing the support for existing locales: Support for units of measurement in inflected languages (phase 1), adding annotations (names and search keywords) for many more non-emoji symbols (~400), plus for Emoji v13.1. In this version, there is also substantially higher coverage for (in order of completeness): Norwegian Nynorsk, Hausa, Igbo, Breton, Quechua, Yoruba, Fulah (Adlam script), Chakma, Asturian, Sanskrit, and Dogri.

The units of measurement additions allow for support of APIs for simple unitIDs such as meter up to compound unitIDs such as cubic-meter-per-square-second or acre-feet-per-day, such as the following:

getUnitPattern(unitId, locale, width, pluralCategory, caseVariant) — to get the localized, inflected pattern for a simple or compound unit of measurement, appropriate for a position in a sentence or phrase with the appropriate pluralCategory and grammatical case (nominative, accusative, genitive, etc).

getUnitGender(unitId, locale) — to get the gender for a unit of measurement, so that other parts of a sentence or phrase can be modified to agree with that gender.

The Survey Tool has improvements in performance, and introduced structured forum requests to improve coordination among translators. We would like to thank the 393 language experts who contributed to this release.

There are some changes that affect existing specifications and data: for example, the plural rules for French changed to add a new category; the specification for using aliases is more rigorous, and some alias data has changed — along with the specification for handling locale identifier canonicalization. For more information, see Migration.

The overall changes to the data items were:

Added

155,131

Deleted

33,805

Changed

45,895

Data Changes

The following summarizes the changes to the data for this version of CLDR.

  • 13.1 Emoji and Unicode Symbols

      • Added names & search keywords for Emoji 13.1 and enhancements to existing emoji annotation data.

      • Added approximately 400 non-emoji Unicode symbols such as punctuation and currency symbols.

      • Added 2 character labels: superscript {0} and subscript {0}.

      • Aside from the CLDR target locales, emoji annotations and keywords expanded in Hausa (ha), Igbo (ig), Kalaallisut (kl), Luxembourgish (lb), Maori (mi), Manipuri (mni), Maltese (mt), Punjabi [Arabic] (pa_Arab), Kinyarwanda (rw), Tajik (tg), Tigrinya (ti), Uyghur (ug), Wolof (wo), Xhosa (xh), Yoruba (yo), with minor expansions in a few other languages.

  • Compact decimals and Units

      • Added 14 new units.

      • Added new binary prefixes.

      • Added new operand 'c' (with a synonym 'e') for languages like French (CLDR-12010)

  • Higher Coverage Levels

      • Modern: Norwegian Nynorsk

      • Moderate++: Hausa, Igbo, Breton, Quechua, Yoruba — made significant improvements, but didn't make it quite to Modern

      • Moderate: Fulah (Adlam), Chakma, Asturian

      • Basic+: Wolof, Tajik, Maori, Luxembourgish, Uyghur, Tigrinya — made significant improvements, but didn't get near to Moderate

      • Basic: Sanskrit, Dogri

  • Unit Inflections

      • Completed phase 1. The full goal is to add full case and gender support for formatted units. During phase 1, a limited number of locales (see below) and units of measurement are being handled, so that we can work kinks out of the process before expanding to all units for all locales (where we can get the grammatical structure).

      • Case & Gender: Polish (pl), Russian (ru), German (de), Hindi (hi) (in rough order of complexity)

      • Gender Only: Dutch (nl), Norwegian Bokmål (nb), Danish (da), Swedish (sv), French (fr), Italian (it), Portuguese (pt), Spanish (es)

  • Performance & Quality

      • Made substantial improvements in Survey Tool performance, lowering cost for translation.

      • Made substantial improvement in quality, using structured Forum topics to allow translators to collaborate more effectively.

      • Improved detection of translator errors.

  • ICU support

      • Improvements to CLDR API, providing a limited, stable API for extracting CLDR data.

      • Adding approximatelySign for number formatting.

  • Unicode locale identifiers and BCP 47

      • Added a new -u locale extension keyword -dx, used to specify scripts to exclude from dictionary break (for word and line break)

      • Added a new short timezone identifier: tz-glgoh

      • Revamped the language, script, region, and variant alias data to improve replacement of deprecated codes.

For access to the draft data, see the git tag above. For more details see the Delta tickets above.

JSON Data Changes

JSON data now includes data for plural ranges, grammatical inflections, typographical labels, and annotations. If you are making use of JSON data, please join the [cldr-users] mailing list where we would like to hear your feedback.

CLDR JSON data for v38 is available, please see https://github.com/unicode-org/cldr-json

Specification Changes

The largest changes were the following:

  • To make the canonicalization of locale identifiers clear and unambiguous, provided major restructuring of the specification for canonicalization. (This was done in concert with fixes to the alias data to work better with the specification.) See Migration and Annex C. LocaleId Canonicalization for more details.

  • To allow for overriding dictionary-based segmentation breaks, added the Unicode Dictionary Break Exclusion Identifier, with the new key “dx”.

  • For picking the correct units of measurement for locales, defined the userPreferences skeleton more precisely.

    • For accurate plural categories in compact numbers, added the 'c' operand to plural rules to provide formatting for languages such as French. (CLDR-12010)

  • To support inflected units of measurement (phase 1), add specifications for the new elements listed under Structure Changes and an algorithm for how to construct grammatical unit names (simple or compound).

For more detailed specification changes, see the Spec above, and look at the Modifications section.

Structure Changes

  • Added additional structure for unit inflections

    • New elements:

      • minimalPairs adds new elements caseMinimalPairs and genderMinimalPairs

      • unit adds a new element gender

      • grammaticalData adds new elements grammaticalDerivations, deriveCompound, and deriveComponent

    • New attributes for existing elements:

      • unitPattern adds a new attribute case

      • grammaticalCase, grammaticalGender, grammaticalDefiniteness add a new attribute scope

      • compoundUnitPattern1 adds new attributes case and gender

      • compoundUnitPattern adds a new attribute case

  • Number symbols adds approximatelySign element

  • Some additional attribute value constraints are added

    • for example, characterLabelPattern@type now allows for superscript and subscript values, indicated by the notation ⟪… strokes⟫➠⟪… strokes, subscript, superscript⟫ in Delta DTDs

    • some of these constraints are expanded due to new structure, while others are

For more details, see the Delta DTDs above.

Chart Changes

  • All charts are updated for the new data; for example, Romance Annotations shows the new non-emoji symbols and punctuation for Romance languages.

  • The DTD Deltas chart has a more compact representation for changes in attribute constraints, making the changes easier to see.

  • The new Grammatical Forms Charts show the new grammatical forms for units.

Growth

The following chart shows the growth of CLDR locale-specific data over time. It does not include the non-locale specific data, nor locale-specific data that is not collected via the Survey Tool. It is thus restricted to data items in /main and /annotations directories.

The % values are percent of the current measure of Modern coverage. That level is notched up each release, so previous releases had many locales that were at Modern coverage as assessed at the time of their release. There is one line per year, even though there were multiple releases in most years.

See also the Locale Coverage Data v38 and for details of the changes see delta_summary.tsv and locale-growth.tsv

Migration

  • The plural rules for French changed to add a new category, 'many', using the new operand 'c' (with a synonym 'e'). It should only have effect on compact number handling.

    • Important: according to the spec, when there is no message for a plural category, the message for 'other' should be returned. As long as implementations observe this policy, migration to this should work without problems.

  • <languageMatches type="written"> was deprecated some time ago, and now has been removed. Clients should use <languageMatches type="written_new"> (recognizing that there are some syntax changes). CLDR-13245

  • The following locales have been moved in the folder structures. CLDR-14080

    • Seed → Common: Sanskrit (sa)

    • Common → Seed: Church Slavic (cu), Volapük (vo), Prussian (prg)

  • The specification for using aliases is more rigorous, and some alias data has changed. Programs using this data may need modification:

    • The specification processes the rules in a certain order, so the file order needs to be maintained.

    • The specification now explicitly takes multiple passes (though that can be optimized by implementations)

    • Various variantAliases are replaced by languageAliases where they require more context to be properly handed (the former specification did not handle variant aliases correctly).

      • AALAND ⇒ AX is replaced by und_aaland ⇒ und_AX

      • arevmda ⇒ hyw is replaced by two rules: hy_arevmda ⇒ hyw & und_arevmda ⇒ und

    • Some spurious aliases have been removed, where they are not properly aliases but rather partial duplications of more complete information:

      • Those covered by the parent locale data and/or likely subtag data, such as az_AZ ⇒ az_Latn_AZ

      • Those covered by canonicalization of extlang subtags, such as zh_wuu ⇒ wuu

    • Changes to the download files:

      • cldr-tools-*.zip no longer contains a built cldr.jar, use the separate cldr-tools-*.jar instead.

        • And as of v38.1 and later, cldr-tools-*.zip is no longer included at all. You can download or checkout the source tree directly from GitHub.

      • cldr-tools-*.jar is a standalone .jar file containing the CLDR tools and all needed dependencies.

      • There is a new "hashes/" subdirectory which contains GPG signatures and SHA-512 sums.

External Data Version

Known Issues

  1. The Transform charts have been disabled until the generating code could be fixed. [CLDR-11019]

  2. The JSON-format data for CLDR 38 currently omits the data from the CLDR common/supplemental files grammaticalFeatures.xml and units.xml. These are all new items in CLDR 37 except for the <unitPreferenceData>, which was formerly in supplementalData.xml. This will be addressed as soon as possible. [CLDR-13730]

  3. Hebrew compact number formatting scrambles text if embedded in RTL message [CLDR-14256]

    1. There are a number of fixes needed in the LDML specification.

    2. CLDR-14272 The documentation of @targets and @scope in grammaticalFeatures is missing; see the ticket for the missing text.

      1. CLDR-14312 replacement in subdivisionAlias in common/supplemental/supplementalMetadata.xml contains alpha{2}

      2. CLDR-14318 Should not remove "true" of tfield in UTS35 Appendix A

      3. CLDR-14319 Remove wrong/duplicated example below "Territory Exception" in UTS35 Appendix A

      4. CLDR-14320 "Put all <keywords, tfields> pairs into alphabetical order" is wrong in Appendix A of UTS35

      5. CLDR-13894 Need to use variantAlias replacement in BCP 47 Language Tag to Unicode BCP 47 Locale Identifier

      6. CLDR-14244 Document special 'alt' inheritance

CLDR 38.1

This dot release makes a very small number of incremental additions to version 38 to address the specific bugs listed in Δ38.1. The data changes are summarized in 38.1/delta/index.html. CLDR v38.1 is also included in ICU 68.2.

Migration note for CLDR 38.1:

    • As of v38.1 and later, cldr-tools-*.zip is no longer included in the download files. You can download or checkout the source tree directly from GitHub.

Acknowledgments

Many people have made significant contributions to CLDR and LDML; see the Acknowledgments page for a full listing.

The Unicode Terms of Use apply to CLDR data; in particular, see Exhibit 1.

For web pages with different views of CLDR data, see http://cldr.unicode.org/index/charts.

Page updated
Report abuse
diff --git a/docs/site/downloads/cldr-39.md b/docs/site/downloads/cldr-39.md index 5224a248b94..1e86a698f4d 100644 --- a/docs/site/downloads/cldr-39.md +++ b/docs/site/downloads/cldr-39.md @@ -3,7 +3,7 @@ title: 'CLDR 39 Download' --- -

🏗 The CLDR site has been migrated to a new platform. Formatting and links continue to be fixed.

CLDR 39 Release Note

🏗 The CLDR site has been migrated to a new platform. Formatting and links continue to be fixed.

CLDR 39 Release Note

See Key to Header Links

Overview

Unicode CLDR provides key building blocks for software supporting the world's languages. CLDR data is used by all major software systems (including all mobile phones) for their software internationalization and localization, adapting software to the conventions of different languages.

NOTE: The source for the LDML specification has been converted to Github Markdown (GFM) instead of HTML. The formatting is now simpler, but some features — such as formatting for table captions — are not yet complete. Improvements in the formatting for the v39 specification are planned for after the release, but no substantive changes would be made to the content. The link above goes to the directory

CLDR v39 had no submission phase. Instead the focus was on modernizing the Survey Tool software, preparing for data submission in the next release (v40). The data fixes in the release were confined to some global changes that are too difficult to do during a submission cycle, and various other fixes. There was a major change in how Norwegian is handled, in order to align the way that the locale identifiers no, nb, and nn are used. The CLDR github repo is changing the name of “master” branch to “main” branch. The unit support from the last release was integrated into ICU, and some fixes resulting from that process were made to the measurement unit data. Quite a number of fixes are made to the specification, to clarify text or fix problems in keyboards, measurement units, locale identifiers, and a few other areas.

Data Changes

Locale Changes (Sample Link)

There were general changes across all locales:

In addition, a number of other corrections were made on a per-locale basis.

JSON Data Changes

JSON data is available at https://github.com/unicode-org/cldr-json/releases/tag/39.0.0 

It is also available in packages published under the npm version "39.0.0"

Note the following change:

- The npm packages now have individual README and LICENSE files [CLDR-14451]

Please note the following upcoming changes, planned for cldr-json in CLDR v40:

Specification Changes

The source for the LDML specification has been converted to Github Markdown (GFM) instead of HTML. The formatting is now simpler, but some features — such as formatting for table captions — may not be complete by the release date. Improvements in the formatting for the v39 specification are planned for after the release, but no substantive changes would be made to the content.

Chart Changes

Growth

The usual growth chart has been omitted, since this release had no data submission phase. For the previous version's chart, see Growth Chart (v38.x)

Migration

Known Issues

Acknowledgments

Many people have made significant contributions to CLDR and LDML; see the Acknowledgments page for a full listing. Special thanks to Jan Kučera for his work on the migration to Markdown

The Unicode Terms of Use apply to CLDR data; in particular, see Exhibit 1.

For web pages with different views of CLDR data, see http://cldr.unicode.org/index/charts.

Page updated
Report abuse
+</table>" jsaction="rcuQ6b:WYd;">

See Key to Header Links

Overview

Unicode CLDR provides key building blocks for software supporting the world's languages. CLDR data is used by all major software systems (including all mobile phones) for their software internationalization and localization, adapting software to the conventions of different languages.

NOTE: The source for the LDML specification has been converted to Github Markdown (GFM) instead of HTML. The formatting is now simpler, but some features — such as formatting for table captions — are not yet complete. Improvements in the formatting for the v39 specification are planned for after the release, but no substantive changes would be made to the content. The link above goes to the directory

CLDR v39 had no submission phase. Instead the focus was on modernizing the Survey Tool software, preparing for data submission in the next release (v40). The data fixes in the release were confined to some global changes that are too difficult to do during a submission cycle, and various other fixes. There was a major change in how Norwegian is handled, in order to align the way that the locale identifiers no, nb, and nn are used. The CLDR github repo is changing the name of “master” branch to “main” branch. The unit support from the last release was integrated into ICU, and some fixes resulting from that process were made to the measurement unit data. Quite a number of fixes are made to the specification, to clarify text or fix problems in keyboards, measurement units, locale identifiers, and a few other areas.

Data Changes

Locale Changes (Sample Link)

There were general changes across all locales:

In addition, a number of other corrections were made on a per-locale basis.

JSON Data Changes

JSON data is available at https://github.com/unicode-org/cldr-json/releases/tag/39.0.0 

It is also available in packages published under the npm version "39.0.0"

Note the following change:

- The npm packages now have individual README and LICENSE files [CLDR-14451]

Please note the following upcoming changes, planned for cldr-json in CLDR v40:

Specification Changes

The source for the LDML specification has been converted to Github Markdown (GFM) instead of HTML. The formatting is now simpler, but some features — such as formatting for table captions — may not be complete by the release date. Improvements in the formatting for the v39 specification are planned for after the release, but no substantive changes would be made to the content.

Chart Changes

Growth

The usual growth chart has been omitted, since this release had no data submission phase. For the previous version's chart, see Growth Chart (v38.x)

Migration

Known Issues

Acknowledgments

Many people have made significant contributions to CLDR and LDML; see the Acknowledgments page for a full listing. Special thanks to Jan Kučera for his work on the migration to Markdown

The Unicode Terms of Use apply to CLDR data; in particular, see Exhibit 1.

For web pages with different views of CLDR data, see http://cldr.unicode.org/index/charts.

Page updated
Report abuse
diff --git a/docs/site/downloads/cldr-40.md b/docs/site/downloads/cldr-40.md index 20d3792d9ff..038240f5001 100644 --- a/docs/site/downloads/cldr-40.md +++ b/docs/site/downloads/cldr-40.md @@ -3,7 +3,7 @@ title: 'CLDR 40 Download' --- -

🏗 The CLDR site has been migrated to a new platform. Formatting and links continue to be fixed.

CLDR 40 Release Note

🏗 The CLDR site has been migrated to a new platform. Formatting and links continue to be fixed.

CLDR 40 Release Note

See Key to Header Links

Overview

Unicode CLDR  provides key building blocks for software supporting the world's languages. CLDR data is used by all major software systems (including all mobile phones) for their software internationalization and localization, adapting software to the conventions of different languages.

In CLDR v40, the focus is on:

Grammatical features (gender and case)

In many languages, forming grammatical phrases requires dealing with grammatical gender and case. Without that, it can sound as bad as "on top of 3 hours" instead of "in 3 hours". The overall goal for CLDR is to supply building blocks so that implementations of advanced message formatting can handle gender and case. See also: Inflection Points.

Emoji v14 names and search keywords

CLDR supplies short names and search keywords for the new emoji, so that implementations can build on them to provide, for example, type-ahead in keyboards.

Modernized Survey Tool front end

The Survey Tool is used to gather all the data for locales. The outmoded Javascript infrastructure was modernized to make it easier to add enhancements (such as the split-screen dashboard) and to fix bugs.

Specification Improvements

The LDML specification has some important fixes and clarifications for Locale Identifiers, Dates, and Units of Measurement.

Approximately 140,000 data items were added or changed.

Data Changes

Segmentation Changes

Locale Changes

File Changes

JSON Data Changes

Specification Changes

Locale Identifiers

Dates

Units of Measurement

Growth

The chart below shows the growth over time, with the additions from the latest release in the top blue section.

Migration

Known Issues

Acknowledgments

Many people have made significant contributions to CLDR and LDML; see the Acknowledgments page for a full listing.

The Unicode Terms of Use apply to CLDR data; in particular, see Exhibit 1.

For web pages with different views of CLDR data, see http://cldr.unicode.org/index/charts.

Page updated
Report abuse
+</table>" jsaction="rcuQ6b:WYd;">

See Key to Header Links

Overview

Unicode CLDR  provides key building blocks for software supporting the world's languages. CLDR data is used by all major software systems (including all mobile phones) for their software internationalization and localization, adapting software to the conventions of different languages.

In CLDR v40, the focus is on:

Grammatical features (gender and case)

In many languages, forming grammatical phrases requires dealing with grammatical gender and case. Without that, it can sound as bad as "on top of 3 hours" instead of "in 3 hours". The overall goal for CLDR is to supply building blocks so that implementations of advanced message formatting can handle gender and case. See also: Inflection Points.

Emoji v14 names and search keywords

CLDR supplies short names and search keywords for the new emoji, so that implementations can build on them to provide, for example, type-ahead in keyboards.

Modernized Survey Tool front end

The Survey Tool is used to gather all the data for locales. The outmoded Javascript infrastructure was modernized to make it easier to add enhancements (such as the split-screen dashboard) and to fix bugs.

Specification Improvements

The LDML specification has some important fixes and clarifications for Locale Identifiers, Dates, and Units of Measurement.

Approximately 140,000 data items were added or changed.

Data Changes

Segmentation Changes

Locale Changes

File Changes

JSON Data Changes

Specification Changes

Locale Identifiers

Dates

Units of Measurement

Growth

The chart below shows the growth over time, with the additions from the latest release in the top blue section.

Migration

Known Issues

Acknowledgments

Many people have made significant contributions to CLDR and LDML; see the Acknowledgments page for a full listing.

The Unicode Terms of Use apply to CLDR data; in particular, see Exhibit 1.

For web pages with different views of CLDR data, see http://cldr.unicode.org/index/charts.

Page updated
Report abuse
diff --git a/docs/site/downloads/cldr-41.md b/docs/site/downloads/cldr-41.md index ee641668260..eb28969f2c8 100644 --- a/docs/site/downloads/cldr-41.md +++ b/docs/site/downloads/cldr-41.md @@ -3,7 +3,7 @@ title: 'CLDR 41 Download' --- -

🏗 The CLDR site has been migrated to a new platform. Formatting and links continue to be fixed.

CLDR 41 Release Note

🏗 The CLDR site has been migrated to a new platform. Formatting and links continue to be fixed.

CLDR 41 Release Note

Overview

Unicode CLDR provides key building blocks for software supporting the world's languages. CLDR data is used by all major software systems (including all mobile phones) for their software internationalization and localization, adapting software to the conventions of different languages.


CLDR v41 is a limited-submission release. Most work was on tooling, with only specified updates to the data, namely Phase 3 of the grammatical units of measurement project. The required grammar data for the Modern coverage level increased, with 40 locales adding an average of 4% new data each. Ukrainian grew the most, by 15.6%.


The tooling changes  are targeted at the v42 general submission release. They include a number of features and improvements such as progress meter widgets in the Survey Tool


Finally, the Basic level has been modified to make it easier to onboard new languages, and easier for implementations to filter locale data based on coverage levels.

The following table shows the number of Languages/Locales in this version. (See the v41 Locale Coverage table for more information.)

Overview

Unicode CLDR provides key building blocks for software supporting the world's languages. CLDR data is used by all major software systems (including all mobile phones) for their software internationalization and localization, adapting software to the conventions of different languages.


CLDR v41 is a limited-submission release. Most work was on tooling, with only specified updates to the data, namely Phase 3 of the grammatical units of measurement project. The required grammar data for the Modern coverage level increased, with 40 locales adding an average of 4% new data each. Ukrainian grew the most, by 15.6%.


The tooling changes  are targeted at the v42 general submission release. They include a number of features and improvements such as progress meter widgets in the Survey Tool


Finally, the Basic level has been modified to make it easier to onboard new languages, and easier for implementations to filter locale data based on coverage levels.

The following table shows the number of Languages/Locales in this version. (See the v41 Locale Coverage table for more information.)

Beyond the member organizations of the Unicode Consortium, many dedicated communities and individuals regularly contribute to updating their locales, including:

Data Changes

Because this is a limited-submission release, the data changes are limited. The focus for data this release was on Phase 3 of the project for providing grammatical information for units of measurement, with more locales reaching a modern coverage level, plus Phase 1 of a project to revamp Coverage levels.

Locale Changes

File Changes

JSON Data Changes

Specification Changes

The following are the main changes in the specification:

Tooling Changes

Survey Tool

Developer

Migration

Upcoming Changes

Growth

The following shows the growth of CLDR data per year, represented as an area chart. 

Known Issues

This section will contain issues that arise after the data, code, or spec has been frozen.

Acknowledgments

Many people have made significant contributions to CLDR and LDML; see the Acknowledgments page for a full listing.

The Unicode Terms of Use apply to CLDR data; in particular, see Exhibit 1.

For web pages with different views of CLDR data, see http://cldr.unicode.org/index/charts.

Page updated
Report abuse
+" jsaction="rcuQ6b:WYd;">

Beyond the member organizations of the Unicode Consortium, many dedicated communities and individuals regularly contribute to updating their locales, including:

Data Changes

Because this is a limited-submission release, the data changes are limited. The focus for data this release was on Phase 3 of the project for providing grammatical information for units of measurement, with more locales reaching a modern coverage level, plus Phase 1 of a project to revamp Coverage levels.

Locale Changes

File Changes

JSON Data Changes

Specification Changes

The following are the main changes in the specification:

Tooling Changes

Survey Tool

Developer

Migration

Upcoming Changes

Growth

The following shows the growth of CLDR data per year, represented as an area chart. 

Known Issues

This section will contain issues that arise after the data, code, or spec has been frozen.

Acknowledgments

Many people have made significant contributions to CLDR and LDML; see the Acknowledgments page for a full listing.

The Unicode Terms of Use apply to CLDR data; in particular, see Exhibit 1.

For web pages with different views of CLDR data, see http://cldr.unicode.org/index/charts.

Page updated
Report abuse
diff --git a/docs/site/downloads/cldr-42.md b/docs/site/downloads/cldr-42.md index 950c6a544ba..fb636349063 100644 --- a/docs/site/downloads/cldr-42.md +++ b/docs/site/downloads/cldr-42.md @@ -3,7 +3,7 @@ title: 'CLDR 42 Download' --- -

🏗 The CLDR site has been migrated to a new platform. Formatting and links continue to be fixed.

CLDR 42 Release Note

🏗 The CLDR site has been migrated to a new platform. Formatting and links continue to be fixed.

CLDR 42 Release Note

Overview

Unicode CLDR provides key building blocks for software supporting the world's languages. CLDR data is used by all major software systems (including all mobile phones) for their software internationalization and localization, adapting software to the conventions of different languages.

In CLDR 42, the focus is on:

Locale Status

CLDR v42 Language Count

Data Changes

There were two areas of focus for this release: the formatting of Personal Names, and the upgrade of Modern to include many more languages.

Locale Changes

File Changes 

JSON Data Changes

Background

Formatting people’s names

Software needs to be able to format people's names, such as John Smith or 宮崎駿. The data is typically drawn from a database, where a name record will have fields for the parts of people’s names, such as a given field with a value of “Maria”, and a surname field value of “Schmidt”. 

There are many complications in dealing with the variety of different ways this needs to be done across languages:

CLDR has added structured patterns that enable implementations to format available name fields for a given language. The formatting for a name can vary according to the available name fields, the language of the name and of the viewer, and various input settings.

The new Person Name formatting data has a tech preview status. The CLDR committee is requesting feedback on the data and structure so that it can be refined and enhanced in the next release. ICU will also be offering a tech preview API in its next release. Other clients of CLDR are recommended to try out the new data and structure, and supply feedback back to the CLDR committee in the next few months.

Specification Changes

The following are the main changes in the specification:

Growth

The following chart shows the growth of CLDR locale-specific data over time. It is restricted to data items in /main and /annotations directories, so it does not include the non-locale-specific data. The % values are percent of the current measure of Modern coverage. That level is notched up each release, so previous releases had many locales that were at Modern coverage as assessed at the time of their release. There is one line per year, even though there were multiple releases in most years.

The detailed information on changes between v42 release and v41 are at v42 delta_summary.tsv: look at the TOTAL line for the overall counts of Added/Changed/Deleted. See v42 locale-growth.tsv for the detailed figures behind the chart.

CLDR v42 Growth

Migration

Known Issues

Upcoming changes

Acknowledgments

Many people have made significant contributions to CLDR and LDML; see the Acknowledgments page for a full listing.

The Unicode Terms of Use apply to CLDR data; in particular, see Exhibit 1.

For web pages with different views of CLDR data, see http://cldr.unicode.org/index/charts.

Page updated
Report abuse
+<center>See <a href="https://cldr.unicode.org/index/downloads#h.xq13gabuoy9w" rel="nofollow" target="_blank">Key to Header Links</a>" jsaction="rcuQ6b:WYd;">

Overview

Unicode CLDR provides key building blocks for software supporting the world's languages. CLDR data is used by all major software systems (including all mobile phones) for their software internationalization and localization, adapting software to the conventions of different languages.

In CLDR 42, the focus is on:

Locale Status

CLDR v42 Language Count

Data Changes

There were two areas of focus for this release: the formatting of Personal Names, and the upgrade of Modern to include many more languages.

Locale Changes

File Changes 

JSON Data Changes

Background

Formatting people’s names

Software needs to be able to format people's names, such as John Smith or 宮崎駿. The data is typically drawn from a database, where a name record will have fields for the parts of people’s names, such as a given field with a value of “Maria”, and a surname field value of “Schmidt”. 

There are many complications in dealing with the variety of different ways this needs to be done across languages:

CLDR has added structured patterns that enable implementations to format available name fields for a given language. The formatting for a name can vary according to the available name fields, the language of the name and of the viewer, and various input settings.

The new Person Name formatting data has a tech preview status. The CLDR committee is requesting feedback on the data and structure so that it can be refined and enhanced in the next release. ICU will also be offering a tech preview API in its next release. Other clients of CLDR are recommended to try out the new data and structure, and supply feedback back to the CLDR committee in the next few months.

Specification Changes

The following are the main changes in the specification:

Growth

The following chart shows the growth of CLDR locale-specific data over time. It is restricted to data items in /main and /annotations directories, so it does not include the non-locale-specific data. The % values are percent of the current measure of Modern coverage. That level is notched up each release, so previous releases had many locales that were at Modern coverage as assessed at the time of their release. There is one line per year, even though there were multiple releases in most years.

The detailed information on changes between v42 release and v41 are at v42 delta_summary.tsv: look at the TOTAL line for the overall counts of Added/Changed/Deleted. See v42 locale-growth.tsv for the detailed figures behind the chart.

CLDR v42 Growth

Migration

Known Issues

Upcoming changes

Acknowledgments

Many people have made significant contributions to CLDR and LDML; see the Acknowledgments page for a full listing.

The Unicode Terms of Use apply to CLDR data; in particular, see Exhibit 1.

For web pages with different views of CLDR data, see http://cldr.unicode.org/index/charts.

Page updated
Report abuse
diff --git a/docs/site/downloads/cldr-43.md b/docs/site/downloads/cldr-43.md index c1eff48a650..455720a5b41 100644 --- a/docs/site/downloads/cldr-43.md +++ b/docs/site/downloads/cldr-43.md @@ -6,16 +6,16 @@ title: CLDR 43 Release Note | No. | Date | Rel. Note | Data | Charts | Spec | Delta Tickets | GitHub Tag | Delta DTD | CLDR JSON | |:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:| -| 43 | 2023-04-12 | [v43](http://cldr.unicode.org/index/downloads/cldr-43) | [CLDR43](http://unicode.org/Public/cldr/43/) | [Charts43](https://unicode.org/cldr/charts/43#h.bzf6i36qsctj) | [LDML43](https://www.unicode.org/reports/tr35/tr35-68/tr35.html) | [ΔV43](https://unicode-org.atlassian.net/issues/?jql=project%20%3D%20CLDR%20AND%20status%20%3D%20Done%20AND%20resolution%20in%20(Fixed%2C%20%22Fix%20in%20Survey%20Tool%20(CLDR)%22%2C%20%22Fixed%20non-repo%22)%20AND%20fixVersion%20%3D%20%2243%22%20ORDER%20BY%20resolution%20ASC%2C%20component%20ASC%2C%20priority%20DESC%2C%20created%20ASC) | [release-43](https://github.com/unicode-org/cldr/tree/release-43) | [ΔDtd43](https://cldr-smoke.unicode.org/staging-dev/charts/43/supplemental/dtd_deltas.html) | [43.0.0](https://github.com/unicode-org/cldr-json/releases/tag/43.0.0) | -| 43.1 | 2023-06-15 | [v43.1](https://cldr.unicode.org/index/downloads/cldr-43#h.qobmda543waj) | n/a | n/a | [LDML43.1](https://www.unicode.org/reports/tr35/tr35-69/tr35.html) | [ΔV43.1](https://unicode-org.atlassian.net/issues/?jql=project%20%3D%20CLDR%20AND%20status%20%3D%20Done%20AND%20resolution%20in%20(Fixed%2C%20%22Fix%20in%20Survey%20Tool%20(CLDR)%22%2C%20%22Fixed%20non-repo%22)%20AND%20fixVersion%20%3D%2043.1%20ORDER%20BY%20resolution%20ASC%2C%20component%20ASC%2C%20priority%20DESC%2C%20created%20ASC) | [release-43-1](https://github.com/unicode-org/cldr/tree/release-43-1) | See note in [43.1 Changes](https://cldr.unicode.org/index/downloads/cldr-43#h.qobmda543waj) | [43.1.0](https://github.com/unicode-org/cldr-json/releases/tag/43.1.0) | +| 43 | 2023-04-12 | [v43](/index/downloads/cldr-43) | [CLDR43](http://unicode.org/Public/cldr/43/) | [Charts43](https://unicode.org/cldr/charts/43#h.bzf6i36qsctj) | [LDML43](https://www.unicode.org/reports/tr35/tr35-68/tr35.html) | [ΔV43](https://unicode-org.atlassian.net/issues/?jql=project%20%3D%20CLDR%20AND%20status%20%3D%20Done%20AND%20resolution%20in%20(Fixed%2C%20%22Fix%20in%20Survey%20Tool%20(CLDR)%22%2C%20%22Fixed%20non-repo%22)%20AND%20fixVersion%20%3D%20%2243%22%20ORDER%20BY%20resolution%20ASC%2C%20component%20ASC%2C%20priority%20DESC%2C%20created%20ASC) | [release-43](https://github.com/unicode-org/cldr/tree/release-43) | [ΔDtd43](https://www.unicode.org/cldr/charts/43/supplemental/dtd_deltas.html) | [43.0.0](https://github.com/unicode-org/cldr-json/releases/tag/43.0.0) | +| 43.1 | 2023-06-15 | [v43.1](/index/downloads/cldr-43#h.qobmda543waj) | n/a | n/a | [LDML43.1](https://www.unicode.org/reports/tr35/tr35-69/tr35.html) | [ΔV43.1](https://unicode-org.atlassian.net/issues/?jql=project%20%3D%20CLDR%20AND%20status%20%3D%20Done%20AND%20resolution%20in%20(Fixed%2C%20%22Fix%20in%20Survey%20Tool%20(CLDR)%22%2C%20%22Fixed%20non-repo%22)%20AND%20fixVersion%20%3D%2043.1%20ORDER%20BY%20resolution%20ASC%2C%20component%20ASC%2C%20priority%20DESC%2C%20created%20ASC) | [release-43-1](https://github.com/unicode-org/cldr/tree/release-43-1) | See note in [43.1 Changes](/index/downloads/cldr-43#h.qobmda543waj) | [43.1.0](https://github.com/unicode-org/cldr-json/releases/tag/43.1.0) | -See [Key to Header Links](https://cldr.unicode.org/index/downloads#h.xq13gabuoy9w) +See [Key to Header Links](/index/downloads#h.xq13gabuoy9w) ## Overview -Unicode CLDR provides key building blocks for software supporting the world's languages. CLDR data is used by all [major software systems](https://cldr.unicode.org/index#TOC-Who-uses-CLDR-) (including all mobile phones) for their software internationalization and localization, adapting software to the conventions of different languages. *It is important to review the [Migration](https://cldr.unicode.org/index/downloads/cldr-43#h.7s25aqdv767e) section for changes that might require action by implementations using CLDR directly or indirectly (eg, via ICU).* +Unicode CLDR provides key building blocks for software supporting the world's languages. CLDR data is used by all [major software systems](/index#TOC-Who-uses-CLDR-) (including all mobile phones) for their software internationalization and localization, adapting software to the conventions of different languages. *It is important to review the [Migration](/index/downloads/cldr-43#h.7s25aqdv767e) section for changes that might require action by implementations using CLDR directly or indirectly (eg, via ICU).* -CLDR 43\.1 is a **dot release** focused on fixing specific issues. For more details for see [Version 43\.1 Changes.](https://cldr.unicode.org/index/downloads/cldr-43#h.qobmda543waj) +CLDR 43\.1 is a **dot release** focused on fixing specific issues. For more details for see [Version 43\.1 Changes.](/index/downloads/cldr-43#h.qobmda543waj) CLDR 43 is a **limited\-submission release**, focusing on just a few areas: @@ -97,10 +97,10 @@ The only **DTD change** is the additional of alt\="ascii" for time formats: - **Units** - A new unit was added for the Beaufort scale. Translations are only provided for a few locales that are known to use it. - - Unit preferences were added for floor area, rainfall speed, and snowfall speed. See [Units](https://cldr-smoke.unicode.org/staging-dev/charts/43/delta/supplemental-data.html#Units) for differences. + - Unit preferences were added for floor area, rainfall speed, and snowfall speed. See [Units](https://www.unicode.org/cldr/charts/43/delta/supplemental-data.html#Units) for differences. - **Locales** - - Special parentLocales are added for collations and segmentations.  See [Locale \> Parent…](https://cldr-smoke.unicode.org/staging-dev/charts/43/delta/supplemental-data.html#Locale) for the differences. - - Many new likely subtag mappings were added, thanks to contributions from SIL. See [Likely \> Subtag](https://cldr-smoke.unicode.org/staging-dev/charts/43/delta/supplemental-data.html#Likely) for differences. + - Special parentLocales are added for collations and segmentations.  See [Locale \> Parent…](https://www.unicode.org/cldr/charts/43/delta/supplemental-data.html#Locale) for the differences. + - Many new likely subtag mappings were added, thanks to contributions from SIL. See [Likely \> Subtag](https://www.unicode.org/cldr/charts/43/delta/supplemental-data.html#Likely) for differences. - **Transforms** - Aliases for certain Ethiopic transliterators were added. - New **test** transliterators for Jpan, Khmr, Laoo, and Sinh scripts were added. These are intended for testing, not for production (especially for Jpan scripts, which requires NLP for acceptable results). @@ -108,7 +108,7 @@ The only **DTD change** is the additional of alt\="ascii" for time formats: - **Language Info** - Preferred hours were changed for CW (Curaçao). - **Metazones** - - Data was changed for 3 zones, and added new metazone for Ciudad Juárez. See [Metazone](https://cldr-smoke.unicode.org/staging-dev/charts/43/delta/supplemental-data.html#Metazone). + - Data was changed for 3 zones, and added new metazone for Ciudad Juárez. See [Metazone](https://www.unicode.org/cldr/charts/43/delta/supplemental-data.html#Metazone). ### Locale Changes @@ -227,7 +227,7 @@ The CLDR language matching data can *and should* be overridden whenever there is - **Seed has been merged into Common ([CLDR\-6396](https://unicode-org.atlassian.net/browse/CLDR-6396))** - All files have been moved from the **seed/** to the **common/** subdirectory. - - Implementations should make use of the **common/properties/coverageLevels.txt** file (added in CLDR v41\) to filter locale files appropriately, in place of depending on incomplete files being in seed. This file and its usage is documented at [Coverage Levels](https://cldr.unicode.org/index/cldr-spec/coverage-levels). ([CLDR\-16420](https://unicode-org.atlassian.net/browse/CLDR-16420)). + - Implementations should make use of the **common/properties/coverageLevels.txt** file (added in CLDR v41\) to filter locale files appropriately, in place of depending on incomplete files being in seed. This file and its usage is documented at [Coverage Levels](/index/cldr-spec/coverage-levels). ([CLDR\-16420](https://unicode-org.atlassian.net/browse/CLDR-16420)). - Background: Older versions of CLDR separated some locale files into a 'seed' directory, which some implementations used for filtering, but the criteria for moving from seed to common were not rigorous. To maintain compatibility with its set of locales used from previous versions, an implementation may use the **coverageLevels.txt** file filtering for Basic and above, but then also add locales that were previously included. - **Interval Formats** - A small number of interval formats (like “Dec 2 – 3”) have their spacing changed for consistency. This is unlikely to cause problems, as they are similar to a large number of similar changes in v42\. @@ -254,7 +254,7 @@ None currently. ## Acknowledgments -Many people have made significant contributions to CLDR and LDML; see the [Acknowledgments](https://cldr.unicode.org/index/acknowledgments) page for a full listing. +Many people have made significant contributions to CLDR and LDML; see the [Acknowledgments](/index/acknowledgments) page for a full listing. The Unicode [Terms of Use](https://unicode.org/copyright.html) apply to CLDR data; in particular, see [Exhibit 1](https://unicode.org/copyright.html#Exhibit1). diff --git a/docs/site/downloads/cldr-44.md b/docs/site/downloads/cldr-44.md index e2328cf5e80..ac001619cb8 100644 --- a/docs/site/downloads/cldr-44.md +++ b/docs/site/downloads/cldr-44.md @@ -6,15 +6,15 @@ title: CLDR 44 Release Note | No. | Date | Rel. Note | Data | Charts | Spec | Delta Tickets | GitHub Tag | JSON Tag | Delta DTD | |:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:| -| 44 | 2023‑10‑31 | [v44](http://cldr.unicode.org/index/downloads/cldr-44) | [CLDR44](http://unicode.org/Public/cldr/44/) | [Charts44](https://unicode.org/cldr/charts/44/) | [LDML44](https://www.unicode.org/reports/tr35/tr35-70/tr35.html) | [Δ44](https://unicode-org.atlassian.net/issues/?jql=project%20%3D%20CLDR%20AND%20status%20%3D%20Done%20AND%20resolution%20%3D%20Fixed%20AND%20fixVersion%20%3D%20%2244%22%20ORDER%20BY%20component%20ASC%2C%20priority%20DESC%2C%20created%20ASC) | [release-44](https://github.com/unicode-org/cldr/tree/release-44) | [44.0.0](https://github.com/unicode-org/cldr-json/releases/tag/44.0.0)* | [ΔDtd44](https://unicode.org/cldr/charts/44/supplemental/dtd_deltas.html) | -| 44.1 | 2023‑12‑13 | [v44.1](http://cldr.unicode.org/index/downloads/cldr-44#h.nvqx283jwsx) | n/a | n/a | [LDML44.1](https://www.unicode.org/reports/tr35/tr35-71/tr35.html) | [Δ44.1](https://unicode-org.atlassian.net/issues/?jql=project%20%3D%20CLDR%20AND%20status%20%3D%20Done%20AND%20resolution%20%3D%20Fixed%20AND%20fixVersion%20%3D%20%2244%2E1%22%20ORDER%20BY%20component%20ASC%2C%20priority%20DESC%2C%20created%20ASC) | [release-44-1](https://github.com/unicode-org/cldr/tree/release-44-1) | [44.1.0](https://github.com/unicode-org/cldr-json/releases/tag/44.1.0) | See [44.1 Changes](http://cldr.unicode.org/index/downloads/cldr-44#h.nvqx283jwsx) | +| 44 | 2023‑10‑31 | [v44](/index/downloads/cldr-44) | [CLDR44](http://unicode.org/Public/cldr/44/) | [Charts44](https://unicode.org/cldr/charts/44/) | [LDML44](https://www.unicode.org/reports/tr35/tr35-70/tr35.html) | [Δ44](https://unicode-org.atlassian.net/issues/?jql=project%20%3D%20CLDR%20AND%20status%20%3D%20Done%20AND%20resolution%20%3D%20Fixed%20AND%20fixVersion%20%3D%20%2244%22%20ORDER%20BY%20component%20ASC%2C%20priority%20DESC%2C%20created%20ASC) | [release-44](https://github.com/unicode-org/cldr/tree/release-44) | [44.0.0](https://github.com/unicode-org/cldr-json/releases/tag/44.0.0)* | [ΔDtd44](https://unicode.org/cldr/charts/44/supplemental/dtd_deltas.html) | +| 44.1 | 2023‑12‑13 | [v44.1](/index/downloads/cldr-44#h.nvqx283jwsx) | n/a | n/a | [LDML44.1](https://www.unicode.org/reports/tr35/tr35-71/tr35.html) | [Δ44.1](https://unicode-org.atlassian.net/issues/?jql=project%20%3D%20CLDR%20AND%20status%20%3D%20Done%20AND%20resolution%20%3D%20Fixed%20AND%20fixVersion%20%3D%20%2244%2E1%22%20ORDER%20BY%20component%20ASC%2C%20priority%20DESC%2C%20created%20ASC) | [release-44-1](https://github.com/unicode-org/cldr/tree/release-44-1) | [44.1.0](https://github.com/unicode-org/cldr-json/releases/tag/44.1.0) | See [44.1 Changes](/index/downloads/cldr-44#h.nvqx283jwsx) | -See [Key To Header Links](https://cldr.unicode.org/index/downloads#h.xq13gabuoy9w) +See [Key To Header Links](/index/downloads#h.xq13gabuoy9w) *Note: For NPM, the JSON data uses version 44.0.1 ## Overview -Unicode CLDR provides key building blocks for software supporting the world's languages. CLDR data is used by all [major software systems](https://cldr.unicode.org/index#h.ezpykkomyltl) (including all mobile phones) for their software internationalization and localization, adapting software to the conventions of different languages. +Unicode CLDR provides key building blocks for software supporting the world's languages. CLDR data is used by all [major software systems](/index#h.ezpykkomyltl) (including all mobile phones) for their software internationalization and localization, adapting software to the conventions of different languages. In CLDR 44, the focus is on: @@ -212,17 +212,17 @@ Similar behavior occurs with plural forms for units, where some plural forms may These are not always the same. In the future, some of these functions will be separated out; see [CLDR\-17095](https://unicode-org.atlassian.net/browse/CLDR-17095). - The test data file likelySubtags.txt has an error for input "qaa\-Cyrl\-CH"; the result should not be empty string as shown, it should either be FAIL or the input string (pending spec clarification). See [CLDR\-17150](https://unicode-org.atlassian.net/browse/CLDR-17150). -- The spec for \-u\-dx bcp47 subtag syntax requires further clarification. See [CLDR\-17194](https://unicode-org.atlassian.net/browse/CLDR-17194) . This is fixed in [version 44\.1](https://cldr.unicode.org/index/downloads/cldr-44#h.nvqx283jwsx). +- The spec for \-u\-dx bcp47 subtag syntax requires further clarification. See [CLDR\-17194](https://unicode-org.atlassian.net/browse/CLDR-17194) . This is fixed in [version 44\.1](/index/downloads/cldr-44#h.nvqx283jwsx). - Subdivision translations were only updated on a limited basis. - Use 44\.0\.1 for CLDR 44 JSON NPM since 44\.0\.0 was tagged incorrectly. -- unicodeVersion in ldmlSupplemental.dtd [was not updated to 15\.1 See CLDR\-17225](https://unicode-org.atlassian.net/browse/CLDR-17225). This is fixed in [version 44\.1](https://cldr.unicode.org/index/downloads/cldr-44#h.nvqx283jwsx). -- Missing derived emoji annotations [CLDR\-17230](https://unicode-org.atlassian.net/browse/CLDR-17230).  This is fixed in [version 44\.1](https://cldr.unicode.org/index/downloads/cldr-44#h.nvqx283jwsx). -- There was an error in the Keyboard3 DTD in the \ element. It is corrected in [version 44\.1](https://cldr.unicode.org/index/downloads/cldr-44#h.nvqx283jwsx), see [CLDR\-17204](https://unicode-org.atlassian.net/browse/CLDR-17204) -- The keyboard charts were not able to generate properly due to DTD changes. It is corrected in [version 44\.1](https://cldr.unicode.org/index/downloads/cldr-44#h.nvqx283jwsx). (This fixed code was used to generate the charts for version 44\.) [CLDR\-17205](https://unicode-org.atlassian.net/browse/CLDR-17205) +- unicodeVersion in ldmlSupplemental.dtd [was not updated to 15\.1 See CLDR\-17225](https://unicode-org.atlassian.net/browse/CLDR-17225). This is fixed in [version 44\.1](/index/downloads/cldr-44#h.nvqx283jwsx). +- Missing derived emoji annotations [CLDR\-17230](https://unicode-org.atlassian.net/browse/CLDR-17230).  This is fixed in [version 44\.1](/index/downloads/cldr-44#h.nvqx283jwsx). +- There was an error in the Keyboard3 DTD in the \ element. It is corrected in [version 44\.1](/index/downloads/cldr-44#h.nvqx283jwsx), see [CLDR\-17204](https://unicode-org.atlassian.net/browse/CLDR-17204) +- The keyboard charts were not able to generate properly due to DTD changes. It is corrected in [version 44\.1](/index/downloads/cldr-44#h.nvqx283jwsx). (This fixed code was used to generate the charts for version 44\.) [CLDR\-17205](https://unicode-org.atlassian.net/browse/CLDR-17205) ## Acknowledgments -Many people have made significant contributions to CLDR and LDML; see the [Acknowledgments](https://cldr.unicode.org/index/acknowledgments) page for a full listing. +Many people have made significant contributions to CLDR and LDML; see the [Acknowledgments](/index/acknowledgments) page for a full listing. The Unicode [Terms of Use](https://unicode.org/copyright.html) apply to CLDR data; in particular, see [Exhibit 1](https://unicode.org/copyright.html#Exhibit1). diff --git a/docs/site/downloads/cldr-45.md b/docs/site/downloads/cldr-45.md index d6515dc062d..bd897b09650 100644 --- a/docs/site/downloads/cldr-45.md +++ b/docs/site/downloads/cldr-45.md @@ -6,7 +6,7 @@ title: CLDR 45 Release Note | No. | Date | Rel. Note | Data | Charts | Spec | Delta | GitHub Tag | Delta DTD | CLDR JSON | |:---:|:----------:|:---------:|:------:|:--------:|:------------:|:---:|:----------:|:---------:|:---------:| -| 45 | 2024-04-17 | [v45](http://cldr.unicode.org/index/downloads/cldr-45) | [CLDR45](http://unicode.org/Public/cldr/45/) | [Charts45](https://unicode.org/cldr/charts/45/) | [LDML45](https://www.unicode.org/reports/tr35/tr35-72/tr35.html) | [Δ45](https://unicode-org.atlassian.net/issues/?jql=project+%3D+CLDR+AND+status+%3D+Done+AND+resolution+%3D+Fixed+AND+fixVersion+%3D+%2245%22+ORDER+BY+component+ASC%2C+priority+DESC%2C+created+ASC) | [release-45](https://github.com/unicode-org/cldr/releases/tag/release-45) | [ΔDtd45](https://www.unicode.org/cldr/charts/45/supplemental/dtd_deltas.html) | [45.0.0](https://github.com/unicode-org/cldr-json/releases/tag/45.0.0) | +| 45 | 2024-04-17 | [v45](/index/downloads/cldr-45) | [CLDR45](http://unicode.org/Public/cldr/45/) | [Charts45](https://unicode.org/cldr/charts/45/) | [LDML45](https://www.unicode.org/reports/tr35/tr35-72/tr35.html) | [Δ45](https://unicode-org.atlassian.net/issues/?jql=project+%3D+CLDR+AND+status+%3D+Done+AND+resolution+%3D+Fixed+AND+fixVersion+%3D+%2245%22+ORDER+BY+component+ASC%2C+priority+DESC%2C+created+ASC) | [release-45](https://github.com/unicode-org/cldr/releases/tag/release-45) | [ΔDtd45](https://www.unicode.org/cldr/charts/45/supplemental/dtd_deltas.html) | [45.0.0](https://github.com/unicode-org/cldr-json/releases/tag/45.0.0) | ## Overview @@ -138,8 +138,8 @@ For this release there are no appreciable changes. ## Acknowledgments -Many people have made significant contributions to CLDR and LDML; see the [Acknowledgments](https://cldr.unicode.org/index/acknowledgments) page for a full listing. +Many people have made significant contributions to CLDR and LDML; see the [Acknowledgments](/index/acknowledgments) page for a full listing. The Unicode [Terms of Use](https://unicode.org/copyright.html) apply to CLDR data; in particular, see [Exhibit 1](https://unicode.org/copyright.html#Exhibit1). -For web pages with different views of CLDR data, see [http://cldr.unicode.org/index/charts](https://cldr.unicode.org/index/charts). +For web pages with different views of CLDR data, see [http://cldr.unicode.org/index/charts](/index/charts). diff --git a/docs/site/downloads/cldr-46.md b/docs/site/downloads/cldr-46.md index 64b98ef625d..6a8032c88e8 100644 --- a/docs/site/downloads/cldr-46.md +++ b/docs/site/downloads/cldr-46.md @@ -6,28 +6,19 @@ title: CLDR 46 Release Note | No. | Date | Rel. Note | Data | Charts | Spec | Delta | GitHub Tag | Delta DTD | CLDR JSON | |:---:|:----------:|:---------:|:------:|:--------:|:------------:|:---:|:----------:|:---------:|:---------:| -| 46 | 2024-10-~~XX~~ | ~~[v46]()~~ | ~~[CLDR46](http://unicode.org/Public/cldr/46/)~~ | [Charts46](http://unicode.org/cldr/charts/dev) | [LDML46](http://www.unicode.org/reports/tr35/proposed.html) | [Δ46](https://unicode-org.atlassian.net/issues/?jql=project+%3D+CLDR+AND+status+%3D+Done+AND+resolution+%3D+Fixed+AND+fixVersion+%3D+%2246%22+ORDER+BY+priority+DESC) | ~~[release-46]()~~ | [ΔDtd46](https://www.unicode.org/cldr/charts/dev/supplemental/dtd_deltas.html) | [46.0.0-BETA2](https://github.com/unicode-org/cldr-json/releases/tag/46.0.0-BETA2) | - -This is a beta version of CLDR v46. - -The data is available at [release-46-beta2](https://github.com/unicode-org/cldr/releases/tag/release-46-beta2), -and the specification is available at [tr35/proposed.html](https://www.unicode.org/reports/tr35/proposed.html). -Feedback is welcome via [tickets](https://cldr.unicode.org/requesting_changes). (The CLDR site is undergoing a migration to Markdown, so the UI for navigation is temporary.) +| 46 | 2024-10-24 | [v46](/index/downloads/cldr-46) | [CLDR46](https://unicode.org/Public/cldr/46/) | [Charts46](https://unicode.org/cldr/charts/46/) | [LDML46](https://www.unicode.org/reports/tr35/tr35-73/tr35.html) | [Δ46](https://unicode-org.atlassian.net/issues/?jql=project+%3D+CLDR+AND+status+%3D+Done+AND+resolution+%3D+Fixed+AND+fixVersion+%3D+%2246%22+ORDER+BY+priority+DESC) | [release-46](https://github.com/unicode-org/cldr/releases/tag/release-46) | [ΔDtd46](https://www.unicode.org/cldr/charts/46/supplemental/dtd_deltas.html) | [46.0.0](https://github.com/unicode-org/cldr-json/releases/tag/46.0.0) | ## Overview -Unicode CLDR provides key building blocks for software supporting the world's languages. -CLDR data is used by all [major software systems](https://cldr.unicode.org/index#who-uses-cldr) -(including all mobile phones) for their software internationalization and localization, -adapting software to the conventions of different languages. +Unicode CLDR provides key building blocks for software supporting the world's languages. CLDR data is used by all [major software systems](/index#who-uses-cldr) (including all mobile phones) for their software internationalization and localization, adapting software to the conventions of different languages. The most significant changes in this release were: -- Updates to Unicode 16.0 (including major changes to collation) +- Updated to Unicode 16.0 (including major changes to collation) - Further revisions to the Message Format 2.0 tech preview - Substantial additions and modifications of Emoji search keyword data - ‘Upleveling’ the locale coverage -- Important changes to the specification +- Important changes to the [specification](#specification-changes) For more details, see below. @@ -37,8 +28,8 @@ For more details, see below. Count | Level | Usage | Examples -- | -- | -- | -- 97 | Modern | Suitable for full UI internationalization | čeština, Ελληνικά‎, Беларуская‎, ‎ᏣᎳᎩ‎, Ქართული‎, ‎Հայերեն‎, ‎עברית‎, ‎اردو‎, አማርኛ‎, ‎नेपाली‎, অসমীয়া‎, ‎বাংলা‎, ‎ਪੰਜਾਬੀ‎, ‎ગુજરાતી‎, ‎ଓଡ଼ିଆ‎, தமிழ்‎, ‎తెలుగు‎, ‎ಕನ್ನಡ‎, ‎മലയാളം‎, ‎සිංහල‎, ‎ไทย‎, ‎ລາວ‎, မြန်မာ‎, ‎ខ្មែរ‎, ‎한국어‎, 中文, 日本語‎, … ‎ -16 | Moderate | Suitable for “document content” internationalization, eg. in spreadsheet | Akan, Balóchi [Látin], brezhoneg, Cebuano, føroyskt, IsiXhosa, Māori, sardu, veneto, Wolof, татар, тоҷикӣ, कांगड़ी‎, … -55 | Basic | Suitable for locale selection, eg. choice of language on mobile phone | Basa Sunda, emakhuwa, Esperanto, eʋegbe, Frysk, Malti, босански (ћирилица), କୁୱି (ଅଡ଼ିଆ), కువి (తెలుగు), ᱥᱟᱱᱛᱟᱲᱤ, ᓀᐦᐃᓇᐍᐏᐣ‬, ꆈꌠꉙ‎, … +16 | Moderate | Suitable for “document content” internationalization, e.g. in spreadsheets | Akan, Balóchi [Látin], brezhoneg, Cebuano, føroyskt, IsiXhosa, Māori, sardu, veneto, Wolof, татар, тоҷикӣ, कांगड़ी‎, … +55 | Basic | Suitable for locale selection, e.g. choice of language on mobile phone | Basa Sunda, emakhuwa, Esperanto, eʋegbe, Frysk, Malti, босански (ћирилица), କୁୱି (ଅଡ଼ିଆ), కువి (తెలుగు), ᱥᱟᱱᱛᱟᱲᱤ, ᓀᐦᐃᓇᐍᐏᐣ‬, ꆈꌠꉙ‎, … #### Changes @@ -49,29 +40,28 @@ Count | Level | Usage | Examples | 📈 | Basic | Ewe, Ga, Kinyarwanda, Konkani (Latin), Northern Sotho, Oromo, Sichuan Yi, Southern Sotho, Tswana | | 📉 | Basic* | Chuvash, Anii | -\* Note: Each release, the number of items needed for Modern and Moderate increases. So locales without active contributors may drop down in coverage level. +\* Note: The number of items needed for Modern and Moderate increases every release. Therefore, locales without active contributors may drop in coverage level. -For a full listing, see [Coverage Levels](https://unicode.org/cldr/charts/46/supplemental/locale_coverage.html) +For a full listing, see [Coverage Levels](https://unicode.org/cldr/charts/46/supplemental/locale_coverage.html). ## [Specification Changes](https://www.unicode.org/reports/tr35/proposed.html) -The following are the most significant changes to the specification (LDML). +The following are the most significant changes to the specification (LDML): -1. [Message Format](https://cldr-smoke.unicode.org/spec/main/ldml/tr35-messageFormat.html#Contents) (see below for details) -2. [LDML Conformance](https://cldr-smoke.unicode.org/spec/main/ldml/tr35.html#Conformance) -3. [emoji search keywords](https://cldr-smoke.unicode.org/spec/main/ldml/tr35-general.html#Annotations) -4. [semantic skeletons](https://cldr-smoke.unicode.org/spec/main/ldml/tr35-dates.html#Semantic_Skeletons) -5. [Grouping classes of characters](https://cldr-smoke.unicode.org/spec/main/ldml/tr35-collation.html#grouping_classes_of_characters) and other collation changes listed below. +1. [Message Format](https://www.unicode.org/reports/tr35/tr35-73/tr35-messageFormat.html#Contents) — see a summary [below](#message-format-specification) +2. [LDML Conformance](https://www.unicode.org/reports/tr35/tr35-73/tr35.html#Conformance) +3. [Emoji search keywords](https://www.unicode.org/reports/tr35/tr35-73/tr35-general.html#Annotations) in tech preview — see a summary [below](#emoji-search-keywords) +4. [Semantic skeletons](https://www.unicode.org/reports/tr35/tr35-73/tr35-dates.html#Semantic_Skeletons) +5. [Grouping classes of characters](https://www.unicode.org/reports/tr35/tr35-73/tr35-collation.html#grouping_classes_of_characters) and other collation changes — see a summary [below](#collation-data-changes) -There are many more changes that are important to implementations, such as changes to certain identifier syntax and various algorithms. -See the [Modifications section](https://cldr-smoke.unicode.org/spec/main/ldml/tr35.html#Modifications) of the specification for details. +There are many more changes that are important to implementations, such as changes to certain identifier syntax and various algorithms. +See the [Modifications section](https://www.unicode.org/reports/tr35/tr35-73/tr35.html#Modifications) of the specification for details. ## Data Changes ### DTD Changes -1. Added `alt='official'` to represent cases where an official value differs from the customary value. -Currently added for a small number of language names, decimal separators, and grouping separators. +1. Added `alt='official'` to represent cases where an official value differs from the customary value. Currently added for a small number of language names, decimal separators, and grouping separators. 2. Added new numbering systems from Unicode 16.0. For a full listing, see [Delta DTDs](https://unicode.org/cldr/charts/46/supplemental/dtd_deltas.html). @@ -83,8 +73,8 @@ For a full listing, see [Delta DTDs](https://unicode.org/cldr/charts/46/suppleme 2. Dates & Times 1. Added a new calendar type, `iso8601`. This is not the same as the [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) standard format, which is designed just for data interchange: -it is all ASCII, doesn't have all the options for fields (like "Sunday", "BC", or "AM"), and does not contain spaces. -The CLDR `iso8601` calendar uses patterns in the order: era, year, month, day, day-of-week, hour, minute, second, day-period, timezone +it is all ASCII, does not have all the options for fields (like "Sunday", "BC", or "AM"), and does not contain spaces. +The CLDR `iso8601` calendar uses patterns in the order: era, year, month, day, day-of-week, hour, minute, second, day-period, timezone. 2. Changed the metazone for Kazakhstan to reflect removal of Asia/Almaty, thus dropping the distinction among different regions in Kazakhstan. 3. Added support for deprecated timezone codes by remapping: `CST6CDT → America/Chicago`, `EST → America/Panama`, `EST5EDT → America/New_York`, `MST7MDT → America/Denver`, `PST8PDT → America/Los_Angeles`. 3. Units @@ -93,36 +83,36 @@ The CLDR `iso8601` calendar uses patterns in the order: era, year, month, day, d More preference changes are planned for the next release. 4. Minimization for likelySubtags removes many additional redundant mappings. - For example, the mapping `acy_Grek → acy_Grek_CY` is unnecessary, because the mapping `acy → acy_Latn_CY` is sufficient. -For the reason why, see the algorithm in [Likely Subtags](https://cldr-smoke.unicode.org/spec/main/ldml/tr35.html#likely-subtags). - - The ordering in the file is more consistent; first the main mappings, then the mapping from region and/or script to likely language, then the data contributed by SIL. +For the reason why, see the algorithm in [Likely Subtags](https://www.unicode.org/reports/tr35/tr35-73/tr35.html#likely-subtags). + - The ordering in the file is more consistent: first the main mappings, then the mapping from region and/or script to likely language, then the data contributed by SIL. - The regions have been cleaned up: there are no entries with `ZZ`, and `001` is limited to artifical languages such as Interlingua. The only other macroregion code is in `und_419 → es_Latn_419` (Spanish‧Latin‧Latin America) 5. Language matching - Dropped the fallback mapping `desired="uk" → supported="ru"` (so that Ukrainian (`uk`) doesn't fall back to Russian (`ru`)). - Note: A fallback language is used when the user's primary language is unavailable, -and either the user doesn't have any secondaries language in their settings (as on Android or iOS) or those secondary languages are also not available. -As a result of this change, when the primary and secondary languages are not available, the fallback language would be the system default instead of Russian. +and either the user does not have a secondary language in their settings (as on Android or iOS) or the secondary languages are also not available. +As a result of this change, when the primary and secondary languages are not available, the fallback language for Ukrainian would be the system default instead of Russian. - Added the mapping `desired="scn" → supported="it"` (Sicilian → Italian). - Changed the deprecated code Goan Konkani (`gom`) to Konkani (`kok`). -7. Transforms +6. Transforms 1. Major update to `Han → Latn`, reflecting new data in Unicode 16.0 - 2. Fixes for Arabic numbers, and a Farsi vowel -8. Other Unicode 16.0 changes + 2. Fixes for Arabic numbers and a Farsi vowel +7. Other Unicode 16.0 changes 1. Additional numbering systems 2. Additional scripts and script identifiers 3. ScriptMeta has been expanded for Unicode 16.0 -9. Other updates - 1. The subdivision identifiers have been updated to the latest available from ISO - - The removed identifiers have been deprecated - - Missing names have been added (from Wikidata) - 2. The language subtags, script subtags, and variant subtags have been updated to the latest from IANA - - Some codes have been deprecated +8. Other updates + 1. The subdivision identifiers have been updated to the latest available from ISO. + - The removed identifiers have been deprecated. + - Missing names have been added (from Wikidata). + 2. The language subtags, script subtags, and variant subtags have been updated to the latest from IANA. + - Some codes have been deprecated. 3. Parent and defaultContent mappings have been added for Kara-Kalpak (`kaa`) and Konkani (`kok`); defaultContent mappings have bee added for Kazakh (`kk`), Ladin (`lld`), Latgalian (`ltg`), Mócheno (`mhn`), and Chinese (Latin, China) (`zh_Latn_CN`). - 4. Territory Info (gdp, population, languages) has been updated from World Bank and other sources. - 5. LanguageGroup info has been updated from Wikidata - 6. Plural rules have been added for some new locales + 4. Territory Info (GDP, population, languages) has been updated from World Bank and other sources. + 5. LanguageGroup info has been updated from Wikidata. + 6. Plural rules have been added for some new locales. 7. Week data - - The first day of the week has been changed for `AE` - - Hour preferences (12 v 24) have been added for English as used in Hong Kong, Malaysia, and Israel (`en_HK`, `en_MY`, `en_IL`) + - The first day of the week has been changed for `AE`. + - Hour preferences (12 v 24) have been added for English as used in Hong Kong, Malaysia, and Israel (`en_HK`, `en_MY`, `en_IL`). For a full listing, see [¤¤BCP47 Delta](https://unicode.org/cldr/charts/46/delta/bcp47.html) and [¤¤Supplemental Delta](https://unicode.org/cldr/charts/46/delta/supplemental-data.html) @@ -130,7 +120,7 @@ For a full listing, see [¤¤BCP47 Delta](https://unicode.org/cldr/charts/46/del 1. Major changes to emoji search keywords and short names ([see below](#emoji-search-keywords)) 2. Major changes to Chinese collation, reflecting new data in Unicode 16.0 -3. Added iso8601 patterns to root. +3. Added iso8601 patterns to root. These will use localized months, days of the week, day periods, and timezones. In this first version, the separators are not localized, and will use "-" within numeric dates, ":" within times, and " " or ", " between major elements. Full localization will await the next submission phase for CLDR. @@ -141,7 +131,7 @@ Full localization will await the next submission phase for CLDR. For a full listing, see [Delta Data](https://unicode.org/cldr/charts/46/delta/index.html) ### Message Format Specification -The CLDR Technical Committee decided to continue the tech preview phase for [Message Format](https://cldr-smoke.unicode.org/spec/main/ldml/tr35-messageFormat.html#Contents) in version 46. +The CLDR Technical Committee decided to continue the tech preview phase for [Message Format](https://www.unicode.org/reports/tr35/tr35-73/tr35-messageFormat.html#Contents) in version 46. The plan is to have a final version of the specification in a 46.1 release before the end of 2024. The most significant changes since v45 were: @@ -153,34 +143,34 @@ to better enable messages that contains right-to-left identifiers and text. Implementers should be aware of the following normative changes after the start of the tech review period. -* [\#885](https://github.com/unicode-org/message-format-wg/issues/885) Address equality of `name` and `literal` values, including requiring keys to use NFC -* [\#884](https://github.com/unicode-org/message-format-wg/issues/884) Add support for bidirectional isolates and strong marks in syntax and address UAX31/UTS55 requirements -* [\#883](https://github.com/unicode-org/message-format-wg/issues/883) Remove forward-compatibility promise and all reserved/private syntax. -* [\#882](https://github.com/unicode-org/message-format-wg/issues/882) Specify `bad-option` error for bad digit size options in `:number` and `:integer` functions -* [\#878](https://github.com/unicode-org/message-format-wg/issues/878) Clarify "rule" selection in `:number` and `:integer` functions -* [\#877](https://github.com/unicode-org/message-format-wg/issues/877) Match on variables instead of expressions. -* [\#854](https://github.com/unicode-org/message-format-wg/issues/854) Allow whitespace at complex message start -* [\#853](https://github.com/unicode-org/message-format-wg/issues/853) Add a "duplicate-variant" error -* [\#845](https://github.com/unicode-org/message-format-wg/issues/845) Define "attributes" feature -* [\#834](https://github.com/unicode-org/message-format-wg/issues/834) Modify the stability policy (not currently in effect due to Tech Preview) -* [\#816](https://github.com/unicode-org/message-format-wg/issues/816) Refine error handling -* [\#815](https://github.com/unicode-org/message-format-wg/issues/815) Removed machine-readable function registry as a deliverable -* [\#813](https://github.com/unicode-org/message-format-wg/issues/813) Change default of `:date` and `:datetime` date formatting from `short` to `medium` -* [\#812](https://github.com/unicode-org/message-format-wg/issues/812) Allow trailing whitespace for complex messages -* [\#793](https://github.com/unicode-org/message-format-wg/issues/793) Recommend the use of escapes only when necessary -* [\#775](https://github.com/unicode-org/message-format-wg/issues/775) Add formal definitions for variable, external variable, and local variable -* [\#774](https://github.com/unicode-org/message-format-wg/issues/774) Refactor errors, adding Message Function Errors -* [\#771](https://github.com/unicode-org/message-format-wg/issues/771) Remove inappropriate normative statement from errors.md -* [\#767](https://github.com/unicode-org/message-format-wg/issues/767) Add a test schema and [\#778](https://github.com/unicode-org/message-format-wg/issues/778) validate tests against it -* [\#775](https://github.com/unicode-org/message-format-wg/issues/775) Add a definition for `variable` -* [\#774](https://github.com/unicode-org/message-format-wg/issues/774) Refactor error types, adding a *Message Function Error* type (and subtypes) -* [\#769](https://github.com/unicode-org/message-format-wg/issues/769) Add `:test:function`, `:test:select` and `:test:format` functions for implementation testing +* [\#885](https://github.com/unicode-org/message-format-wg/issues/885) Address equality of `name` and `literal` values, including requiring keys to use NFC +* [\#884](https://github.com/unicode-org/message-format-wg/issues/884) Add support for bidirectional isolates and strong marks in syntax and address UAX31/UTS55 requirements +* [\#883](https://github.com/unicode-org/message-format-wg/issues/883) Remove forward-compatibility promise and all reserved/private syntax. +* [\#882](https://github.com/unicode-org/message-format-wg/issues/882) Specify `bad-option` error for bad digit size options in `:number` and `:integer` functions +* [\#878](https://github.com/unicode-org/message-format-wg/issues/878) Clarify "rule" selection in `:number` and `:integer` functions +* [\#877](https://github.com/unicode-org/message-format-wg/issues/877) Match on variables instead of expressions. +* [\#854](https://github.com/unicode-org/message-format-wg/issues/854) Allow whitespace at complex message start +* [\#853](https://github.com/unicode-org/message-format-wg/issues/853) Add a "duplicate-variant" error +* [\#845](https://github.com/unicode-org/message-format-wg/issues/845) Define "attributes" feature +* [\#834](https://github.com/unicode-org/message-format-wg/issues/834) Modify the stability policy (not currently in effect due to Tech Preview) +* [\#816](https://github.com/unicode-org/message-format-wg/issues/816) Refine error handling +* [\#815](https://github.com/unicode-org/message-format-wg/issues/815) Removed machine-readable function registry as a deliverable +* [\#813](https://github.com/unicode-org/message-format-wg/issues/813) Change default of `:date` and `:datetime` date formatting from `short` to `medium` +* [\#812](https://github.com/unicode-org/message-format-wg/issues/812) Allow trailing whitespace for complex messages +* [\#793](https://github.com/unicode-org/message-format-wg/issues/793) Recommend the use of escapes only when necessary +* [\#775](https://github.com/unicode-org/message-format-wg/issues/775) Add formal definitions for variable, external variable, and local variable +* [\#774](https://github.com/unicode-org/message-format-wg/issues/774) Refactor errors, adding Message Function Errors +* [\#771](https://github.com/unicode-org/message-format-wg/issues/771) Remove inappropriate normative statement from errors.md +* [\#767](https://github.com/unicode-org/message-format-wg/issues/767) Add a test schema and [\#778](https://github.com/unicode-org/message-format-wg/issues/778) validate tests against it +* [\#775](https://github.com/unicode-org/message-format-wg/issues/775) Add a definition for `variable` +* [\#774](https://github.com/unicode-org/message-format-wg/issues/774) Refactor error types, adding a *Message Function Error* type (and subtypes) +* [\#769](https://github.com/unicode-org/message-format-wg/issues/769) Add `:test:function`, `:test:select` and `:test:format` functions for implementation testing * [\#743](https://github.com/unicode-org/message-format-wg/issues/743) Collapse all escape sequence rules into one (affects the ABNF) In addition to the above, the test suite is significantly modified and updated. There will be updated tech preview implementations available in ICU (Java and C++) and in Javascript. ### Emoji Search Keywords -The usage model for emoji search keywords is that +The usage model for emoji search keywords is that: - The user types one or more words in an emoji search field. The order of words doesn't matter; nor does upper- versus lowercase. - Each word successively narrows a number of emoji in a results box - heart → 🥰 😘 😻 💌 💘 💝 💖 💗 💓 💞 💕 💟 ❣️ 💔 ❤️‍🔥 ❤️‍🩹 ❤️ 🩷 🧡 💛 💚 💙 🩵 💜 🤎 🖤 🩶 🤍 💋 🫰 🫶 🫀 💏 💑 🏠 🏡 ♥️ 🩺 @@ -192,43 +182,33 @@ The usage model for emoji search keywords is that Thus in the following, the user would just click on 🎉 if that works for them. - celebrate → 🥳 🥂 🎈 🎉 🎊 🪅 -In this release WhatsApp emoji search keyword data has been incorporated. -In the process of doing that, the maximum number of search keywords per emoji has been increased, -and the keywords have been simplified in most locales by breaking up multi-word keywords. -An example would be white flag (🏳️), formerly having 3 keyword phrases of [white waving flag | white flag | waving flag], -now being replaced by the simpler 3 single keywords [white | waving | flag]. -The simpler version typically works as well or better in practice. +In this release WhatsApp emoji search keyword data has been incorporated. In the process of doing that, the maximum number of search keywords per emoji has been increased, and the keywords have been simplified in most locales by breaking up multi-word keywords. An example would be white flag (🏳️), formerly having 3 keyword phrases of [white waving flag | white flag | waving flag], now being replaced by the simpler 3 single keywords [white | waving | flag]. The simpler version typically works as well or better in practice. ### Collation Data Changes There are two significant changes to the CLDR root collation (CLDR default sort order). #### Realigned With DUCET -The [DUCET](https://www.unicode.org/reports/tr10/#Default_Unicode_Collation_Element_Table) is the Unicode Collation Algorithm default sort order. -The [CLDR root collation](https://www.unicode.org/reports/tr35/tr35-collation.html#Root_Collation) is a tailoring of the DUCET. -These sort orders have differed in the relative order of groups of characters including extenders, currency symbols, and non-decimal-digit numeric characters. +The [DUCET](https://www.unicode.org/reports/tr10/#Default_Unicode_Collation_Element_Table) is the Unicode Collation Algorithm default sort order. The [CLDR root collation](https://www.unicode.org/reports/tr35/tr35-collation.html#Root_Collation) is a tailoring of the DUCET. These sort orders have differed in the relative order of groups of characters including extenders, currency symbols, and non-decimal-digit numeric characters. -Starting with CLDR 46 and Unicode 16.0, the order of these groups is the same. -In both sort orders, non-decimal-digit numeric characters now sort after decimal digits, -and the CLDR root collation no longer tailors any currency symbols (making some of them sort like letter sequences, as in the DUCET). +Starting with CLDR 46 and Unicode 16.0, the order of these groups is the same. In both sort orders, non-decimal-digit numeric characters now sort after decimal digits, and the CLDR root collation no longer tailors any currency symbols (making some of them sort like letter sequences, as in the DUCET). -These changes eliminate sort order differences among almost all regular characters between the CLDR root collation and the DUCET. -See the [CLDR root collation](https://www.unicode.org/reports/tr35/tr35-collation.html#Root_Collation) documentation for details. +These changes eliminate sort order differences among almost all regular characters between the CLDR root collation and the DUCET. See the [CLDR root collation](https://www.unicode.org/reports/tr35/tr35-collation.html#Root_Collation) documentation for details. #### Improved Han Radical-Stroke Order -CLDR includes [data for sorting Han (CJK) characters in radical-stroke order](https://cldr-smoke.unicode.org/spec/main/ldml/tr35-collation.md#File_Format_FractionalUCA_txt). +CLDR includes [data for sorting Han (CJK) characters in radical-stroke order](https://www.unicode.org/reports/tr35/46/tr35-collation.html#File_Format_FractionalUCA_txt). It used to distinguish traditional and simplified forms of radicals on a higher level than sorting by the number of residual strokes. Starting with CLDR 46, the CLDR radical-stroke order matches that of the [Unicode Radical-Stroke Index (large PDF)](https://www.unicode.org/Public/UCD/latest/charts/RSIndex.pdf). [Its sorting algorithm is defined in UAX #38](https://www.unicode.org/reports/tr38/#SortingAlgorithm). Traditional vs. simplified forms of radicals are distinguished on a lower level than the number of residual strokes. -This also has an effect on [alphabetic indexes](tr35-collation.md#Collation_Indexes) for radical-stroke sort orders, +This also has an effect on [alphabetic indexes](https://www.unicode.org/reports/tr35/46/tr35-collation.html#Collation_Indexes) for radical-stroke sort orders, where only the traditional forms of radicals are now available as index characters. ### JSON Data Changes -1. Separate modern packages were dropped [CLDR-16465] +1. Separate modern packages were dropped. [CLDR-16465][] 2. Transliteration (transform) data is now available in the `cldr-transforms` package. The JSON file contains transform metadata, and the `_rulesFile` key indicates an external (`.txt`) file containing the actual rules. [CLDR-16720][]. -### Markdown ### +### Markdown The CLDR site is in the process of being moved to markdown source (GFM), which will regularize the formatting and make it easier to maintain and extend than with Google Sites. @@ -237,24 +217,59 @@ This process should be completed before release. ### File Changes -Most files added in this release were for new locales, with some files being added for existing locales that increased coverage, -such as /testData/personNameTest/ak.txt. +Most files added in this release were for new locales, with some files being added for existing locales that increased coverage, such as /testData/personNameTest/ak.txt. + +The following new /common/testData/ files have been added: + +- datetime/ + - README.md + - datetime.json +- messageFormat/ + - schemas/v0/tests.schema.json + - messageFormat/tests/ + - data-model-errors.json + - functions/ + - date.json + - datetime.json + - integer.json + - number.json + - string.json + - time.json + - pattern-selection.json + - syntax-errors.json + - syntax.json + +A few /common/testData/ files have been replaced: + +- messageFormat/ + - data-model-errors.json + - syntax-errors.json + - test-core.json + - test-core.json.d.ts + - test-functions.json + - test-functions.json.d.ts ### Tooling Changes -**TBD** +- Added and improved runtime examples +- Ability for certain languages to stay in submission mode longer +- General performance improvements to Survey Tool + +### Keyboard Changes + +- Clarified that `conformsTo=` does not need to be updated when a new CLDR version is released. [CLDR-17948][] ## Migration 1. Databases that use collation keys are sensitive to any changes in collation, and will need reindexing. -This can happen with any CLDR release (especially those for a new version of Unicode), but more characters are affected in this release: see above. -2. Two collation variants are to be dropped in a v46.1 release: zh-u-co-gb2312 and zh-u-co-big5han. -These matched the ordering of two legacy character encodings. -3. **TBD** +This can happen with any CLDR release (especially those for a new version of Unicode), but more characters are affected in this release: see a summary [above](#collation-data-changes). +2. Two collation variants are to be dropped in the CLDR 47 release: zh-u-co-gb2312 and zh-u-co-big5han. +These matched the ordering of two legacy character encodings. [CLDR-16062][] +3. The `light-speed` data was withdrawn from many locales, because the purpose (as an internal prefix for **light-second**, **light-minute**, etc.) was misunderstood. Implementations may hold off supporting it until the data is complete — expected for CLDR 47. -## [Known Issues](https://unicode-org.atlassian.net/issues/CLDR-17535?jql=project%20%3D%20cldr%20and%20labels%20%3D%20%22ReleaseKnownIssue%22%20and%20status%20!%3D%20done) +## Known Issues -1. CLDR-17095. The region-based firstDay value (see weekData) is currently used for several different purposes. In the future, some of these functions will be separated out: +1. [CLDR-17095] The region-based firstDay value (see weekData) is currently used for several different purposes. In the future, some of these functions will be separated out: - The day that should be shown as the first day of the week in a calendar view. - The first day of the week (day 1) for weekday numbering. - The first day of the week for week-of-year calendar calculations. @@ -262,10 +277,16 @@ These matched the ordering of two legacy character encodings. ## Acknowledgments Many people have made significant contributions to CLDR and LDML; -see the [Acknowledgments](https://cldr.unicode.org/index/acknowledgments) page for a full listing. -We'd especially like to acknowledge the work done by interns this release: Chris Pyle and Helena Aytenfisu (ህሊና የሺጥላ አይተንፍሱ). +see the [Acknowledgments](/index/acknowledgments) page for a full listing. +We'd especially like to acknowledge the work done by interns this release: Chris Pyle, Helena Aytenfisu (ህሊና የሺጥላ አይተንፍሱ), and Emiyare Cyril Ikwut-Ukwa. -The Unicode [Terms of Use](https://unicode.org/copyright.html) apply to CLDR data; +The Unicode [Terms of Use](https://unicode.org/copyright.html) apply to CLDR data; in particular, see [Exhibit 1](https://unicode.org/copyright.html#Exhibit1). -For web pages with different views of CLDR data, see [http://cldr.unicode.org/index/charts](https://cldr.unicode.org/index/charts). +For web pages with different views of CLDR data, see [http://cldr.unicode.org/index/charts](/index/charts). + +[CLDR-16062]: https://unicode-org.atlassian.net/browse/CLDR-16062 +[CLDR-16465]: https://unicode-org.atlassian.net/browse/CLDR-16465 +[CLDR-16720]: https://unicode-org.atlassian.net/browse/CLDR-16720 +[CLDR-17095]: https://unicode-org.atlassian.net/browse/CLDR-17095 +[CLDR-17948]: https://unicode-org.atlassian.net/browse/CLDR-17948 diff --git a/docs/site/downloads/cldr-47.md b/docs/site/downloads/cldr-47.md new file mode 100644 index 00000000000..29eff500f51 --- /dev/null +++ b/docs/site/downloads/cldr-47.md @@ -0,0 +1,123 @@ +--- +title: CLDR 47 Release Note +--- + +# CLDR 47 Release Note + +| No. | Date | Rel. Note | Data | Charts | Spec | Delta | GitHub Tag | Delta DTD | CLDR JSON | +|:---:|:----------:|:---------:|:------:|:--------:|:------------:|:---:|:----------:|:---------:|:---------:| +| 47 | 2025-04-~~XX~~ | [v47](/index/downloads/cldr-47) | ~~[CLDR47](https://unicode.org/Public/cldr/47/)~~ | [Charts47](https://unicode.org/cldr/charts/dev) | [LDML47](https://www.unicode.org/reports/tr35/proposed.html) | [Δ47](https://unicode-org.atlassian.net/issues/?jql=project+%3D+CLDR+AND+status+%3D+Done+AND+resolution+%3D+Fixed+AND+fixVersion+%3D+%2247%22+ORDER+BY+priority+DESC) | ~~[release-47]()~~ | [ΔDtd47](https://www.unicode.org/cldr/charts/dev/supplemental/dtd_deltas.html) | ~~[47.0.0]()~~ | + +## Overview + +Unicode CLDR provides key building blocks for software supporting the world's languages. +CLDR data is used by all [major software systems](/index#who-uses-cldr) +(including all mobile phones) for their software internationalization and localization, +adapting software to the conventions of different languages. + +The most significant changes in this release are: + +- TBD + +For more details, see below. + +### Locale Coverage Status +#### Current Levels + +Count | Level | Usage | Examples +-- | -- | -- | -- +xx | Modern | Suitable for full UI internationalization | … +xx | Moderate | Suitable for “document content” internationalization, eg. in spreadsheet | … +xx | Basic | Suitable for locale selection, eg. choice of language on mobile phone | … + +#### Changes + +| ± | New Level | Locales | +| -- | -- | -- | +| 📈 | Modern | … | +| 📈 | Moderate | … | +| 📈 | Basic | … | +| 📉 | Basic* | … | + +\* Note: Each release, the number of items needed for Modern and Moderate increases. So locales without active contributors may drop down in coverage level. + +For a full listing, see [Coverage Levels](https://unicode.org/cldr/charts/dev/supplemental/locale_coverage.html) + +## [Specification Changes](https://www.unicode.org/reports/tr35/proposed.html) + +The following are the most significant changes to the specification (LDML). + +- TBD + +There are many more changes that are important to implementations, such as changes to certain identifier syntax and various algorithms. +See the [Modifications section](https://www.unicode.org/reports/tr35/proposed.html#Modifications) of the specification for details. + +## Data Changes + +### DTD Changes + +- TBD + +For a full listing, see [Delta DTDs](https://unicode.org/cldr/charts/dev/supplemental/dtd_deltas.html). + +### Supplemental Data Changes + +- TBD + +For a full listing, see [¤¤BCP47 Delta](https://unicode.org/cldr/charts/dev/delta/bcp47.html) and [¤¤Supplemental Delta](https://unicode.org/cldr/charts/dev/delta/supplemental-data.html) + +### [Locale Changes](https://unicode.org/cldr/charts/dev/delta/index.html) + +- TBD + +For a full listing, see [Delta Data](https://unicode.org/cldr/charts/dev/delta/index.html) + +### Message Format Specification + +- TBD + +### Emoji Search Keywords + +- TBD + +### Collation Data Changes + +- TBD + +### JSON Data Changes + +- TBD + +### File Changes + +- TBD + +### Tooling Changes + +- TBD + +### Keyboard Changes + +- TBD + +## Migration + +- TBD + +## Known Issues + +1. [CLDR-17095] The region-based firstDay value (see weekData) is currently used for several different purposes. In the future, some of these functions will be separated out: + - The day that should be shown as the first day of the week in a calendar view. + - The first day of the week (day 1) for weekday numbering. + - The first day of the week for week-of-year calendar calculations. + +## Acknowledgments + +Many people have made significant contributions to CLDR and LDML; +see the [Acknowledgments](/index/acknowledgments) page for a full listing. + +The Unicode [Terms of Use](https://unicode.org/copyright.html) apply to CLDR data; +in particular, see [Exhibit 1](https://unicode.org/copyright.html#Exhibit1). + +For web pages with different views of CLDR data, see [http://cldr.unicode.org/index/charts](/index/charts). + diff --git a/docs/site/downloads/previous-releases.md b/docs/site/downloads/previous-releases.md index 6d7e34286f3..21595835550 100644 --- a/docs/site/downloads/previous-releases.md +++ b/docs/site/downloads/previous-releases.md @@ -1,3 +1,7 @@ --- title: Previous Releases --- + +# Previous Releases + +This section lists recent release pages. For a full listing, see [CLDR Releases/Downloads](../index/downloads.md#cldr-releasesdownloads). diff --git a/docs/site/general-information.md b/docs/site/general-information.md index 1271aaf03a8..b83ddb3b7d7 100644 --- a/docs/site/general-information.md +++ b/docs/site/general-information.md @@ -5,4 +5,4 @@ title: General Information # General Information This section provides general information about CLDR. -See the subpages, using the ≡ menu at the top of this page. +See the subpages in the sidebar. diff --git a/docs/site/index.md b/docs/site/index.md index 437ac46673d..95afac3bce9 100644 --- a/docs/site/index.md +++ b/docs/site/index.md @@ -6,16 +6,15 @@ title: Unicode CLDR Project ## News -- **2024-09-26 [CLDR 46 Beta](https://blog.unicode.org/2024/09/unicode-cldr-46-beta-available-for.html) available for testing and specification review** -- **2024-09-05 [CLDR 46 Alpha](https://blog.unicode.org/2024/09/unicode-cldr-v46-alpha-available-for.html) available for testing** -- **2024-04-17 [CLDR 45](https://cldr.unicode.org/index/downloads/cldr-45) released** -- **2023-12-13 [CLDR 44.1](https://cldr.unicode.org/index/downloads/cldr-44#h.nvqx283jwsx) released (an update to CLDR v44)** -- **2023-10-31 [CLDR 44](https://cldr.unicode.org/index/downloads/cldr-44) released** +- **2024-10-24 [CLDR 46](downloads/cldr-46) released** +- **2024-04-17 [CLDR 45](downloads/cldr-45) released** +- **2023-12-13 [CLDR 44.1](downloads/cldr-44#h.nvqx283jwsx) released (an update to CLDR v44)** +- **2023-10-31 [CLDR 44](downloads/cldr-44) released** ## What is CLDR? -The Unicode Common Locale Data Repository (CLDR) provides key building blocks for software to support the world's languages, with the largest and most extensive standard repository of locale data available. This data is used by a [wide spectrum of companies](https://cldr.unicode.org/index#h.ezpykkomyltl) for their software internationalization and localization, adapting software to the conventions of different languages for such common software tasks. It includes: +The Unicode Common Locale Data Repository (CLDR) provides key building blocks for software to support the world's languages, with the largest and most extensive standard repository of locale data available. This data is used by a [wide spectrum of companies](#who-uses-cldr) for their software internationalization and localization, adapting software to the conventions of different languages for such common software tasks. It includes: - **Locale-specific patterns for formatting and parsing:** dates, times, timezones, numbers and currency values, measurement units,… - **Translations of names:** languages, scripts, countries and regions, currencies, eras, months, weekdays, day periods, time zones, cities, and time units, emoji characters and sequences (and search keywords),… - **Language & script information:** characters used; plural cases; gender of lists; capitalization; rules for sorting & searching; writing direction; transliteration rules; rules for spelling out numbers; rules for segmenting text into graphemes, words, and sentences; keyboard layouts… @@ -23,7 +22,7 @@ The Unicode Common Locale Data Repository (CLDR) provides key building blocks fo - **Validity:** Definitions, aliases, and validity information for Unicode locales, languages, scripts, regions, and extensions,… -CLDR uses the XML format provided by [UTS #35: Unicode Locale Data Markup Language (LDML)](http://www.unicode.org/reports/tr35/). LDML is a format used not only for CLDR, but also for general interchange of locale data, such as in Microsoft's .NET. +CLDR uses the XML format provided by [UTS #35: Unicode Locale Data Markup Language (LDML)](https://www.unicode.org/reports/tr35/). LDML is a format used not only for CLDR, but also for general interchange of locale data, such as in Microsoft's .NET. ## Who uses CLDR? @@ -33,11 +32,7 @@ Some of the companies and organizations that use CLDR are: - IBM (DB2, Lotus, Websphere, Tivoli, Rational, AIX, i/OS, z/OS, …) - Meta (Facebook, Messenger, WhatsApp, …) - Microsoft (Windows, Office, Visual Studio, …) - - *and many others, including:* - -- ABAS Software, Adobe, Amazon (Kindle), Amdocs, Apache, Appian, Argonne National Laboratory, Avaya, Babel (Pocoo library), BAE Systems Geospatial eXploitation Products, BEA, BluePhoenix Solutions, BMC Software, Boost, BroadJump, Business Objects, caris, CERN, CLDR Engine, Debian Linux, Dell, Eclipse, eBay, elixir-cldr, EMC Corporation, ESRI, Firebird RDBMS, FreeBSD, Gentoo Linux, GroundWork Open Source, GTK+, Harman/Becker Automotive Systems GmbH, HP, Hyperion, Inktomi, Innodata Isogen, Informatica, Intel, Interlogics, IONA, IXOS, Jikes, jQuery, Library of Congress, Mathworks, Mozilla, Netezza, OpenOffice, Oracle (Solaris, Java), Lawson Software, Leica Geosystems GIS & Mapping LLC, Mandrake Linux, OCLC, Perl, Progress Software, Python, Qt, QNX, Rogue Wave, SAP, Shutterstock, SIL, SPSS, Software AG, SuSE, Symantec, Teradata (NCR), ToolAware, Trend Micro, Twitter, Virage, webMethods, Wikimedia Foundation (Wikipedia), Wine, WMS Gaming, XyEnterprise, Yahoo!, Yelp - +- *and many others, including:* ABAS Software, Adobe, Amazon (Kindle), Amdocs, Apache, Appian, Argonne National Laboratory, Avaya, Babel (Pocoo library), BAE Systems Geospatial eXploitation Products, BEA, BluePhoenix Solutions, BMC Software, Boost, BroadJump, Business Objects, caris, CERN, CLDR Engine, Debian Linux, Dell, Eclipse, eBay, elixir-cldr, EMC Corporation, ESRI, Firebird RDBMS, FreeBSD, Gentoo Linux, GroundWork Open Source, GTK+, Harman/Becker Automotive Systems GmbH, HP, Hyperion, Inktomi, Innodata Isogen, Informatica, Intel, Interlogics, IONA, IXOS, Jikes, jQuery, Library of Congress, Mathworks, Mozilla, Netezza, OpenOffice, Oracle (Solaris, Java), Lawson Software, Leica Geosystems GIS & Mapping LLC, Mandrake Linux, OCLC, Perl, Progress Software, Python, Qt, QNX, Rogue Wave, SAP, Shutterstock, SIL, SPSS, Software AG, SuSE, Symantec, Teradata (NCR), ToolAware, Trend Micro, Twitter, Virage, webMethods, Wikimedia Foundation (Wikipedia), Wine, WMS Gaming, XyEnterprise, Yahoo!, Yelp There are other projects which consume cldr-json directly, see [here](https://github.com/unicode-org/cldr-json/blob/master/USERS.md#projects) for a list. @@ -45,7 +40,7 @@ There are other projects which consume cldr-json directly, see [here](https://gi Most developers will use CLDR indirectly, via a set of software libraries, such as [ICU](https://icu.unicode.org/), [Closure](https://github.com/google/closure-library), or [TwitterCLDR](https://blog.x.com/engineering/en_us/a/2012/twittercldr-improving-internationalization-support-in-ruby). These libraries typically compile the CLDR data into a format that is compact and easy for the library to load and use. -For those interested in the source CLDR data, it is available for each release in the XML format specified by [LDML](http://www.unicode.org/reports/tr35/). There are also tools that will convert to JSON and POSIX format. For more information, see [CLDR Releases/Downloads](https://cldr.unicode.org/index/downloads). +For those interested in the source CLDR data, it is available for each release in the XML format specified by [LDML](https://www.unicode.org/reports/tr35/). There are also tools that will convert to JSON and POSIX format. For more information, see [CLDR Releases/Downloads](downloads). ## How to Contribute? @@ -53,26 +48,26 @@ CLDR is a collaborative project, which benefits by having people join and contri #### Translations and other language data -CLDR has an online tool to gather data, the [Survey Tool](https://cldr.unicode.org/index/survey-tool). The Survey Tool is open twice a year to gather data for new structure, and make corrections in previously-released data. +CLDR has an online tool to gather data, the [Survey Tool](index/survey-tool). The Survey Tool is open twice a year to gather data for new structure, and make corrections in previously-released data. -- For languages that are already available in the Survey Tool, see [picking a locale](https://cldr.unicode.org/translation/getting-started/guide#h.6f2x50entpdr). If your locale is not already available in the Survey Tool, see [Adding new locales](https://github.com/unicode-org/cldr/blob/main/docs/requesting_changes.md#adding-new-locales). - - Contribute as an individual (vetter) for your language by [setting up an account](/index/survey-tool/survey-tool-accounts) - - Qualifying organizations (companies, governments, institutions, etc) can request for an Organization level contribution status. Please file a [ticket](https://github.com/unicode-org/cldr/blob/main/docs/requesting_changes.md#how-to-file-a-ticket) if you need organization set up. +- For languages that are already available in the Survey Tool, see [picking a locale](translation/getting-started/guide#picking-locales). If your locale is not already available in the Survey Tool, see [Adding new locales](requesting_changes#adding-new-locales). + - Contribute as an individual (vetter) for your language by [setting up an account](index/survey-tool/survey-tool-accounts) + - Qualifying organizations (companies, governments, institutions, etc) can request for an Organization level contribution status. Please file a [ticket](requesting_changes#how-to-file-a-ticket) if you need organization set up. - Unicode [voting members](https://home.unicode.org/membership/members/) can join the technical committee for bigger impact. The CLDR Technical committee is responsible for assessing the Survey Tool features, proposals for additions or changes to structure, bug fixes, and final resolution of each release of CLDR. #### Code and Structure -The CLDR tooling supports the interactive Survey Tool, plus all of the tooling necessary to test and process the release. Programmers interested in contributing to the tooling are welcome; they may also be interested in contributing to [ICU](http://site.icu-project.org/), which uses CLDR data. For more information, see http://cldr.unicode.org/development. +The CLDR tooling supports the interactive Survey Tool, plus all of the tooling necessary to test and process the release. Programmers interested in contributing to the tooling are welcome; they may also be interested in contributing to [ICU](https://icu.unicode.org/), which uses CLDR data. For more information, see [Development](development). -CLDR covers many different types of data, but not everything. For projects which may cover other types of data, see [Other Projects](http://cldr.unicode.org/covered-by-other-projects). +CLDR covers many different types of data, but not everything. For projects which may cover other types of data, see [Other Projects](covered-by-other-projects). #### Tickets -People may file [tickets](https://github.com/unicode-org/cldr/blob/main/docs/requesting_changes.md) with bug fixes or feature requests. Once a ticket is approved, they can also create pull requests on [GitHub](https://github.com/unicode-org/cldr). +People may file [tickets](requesting_changes) with bug fixes or feature requests. Once a ticket is approved, they can also create pull requests on [GitHub](https://github.com/unicode-org/cldr). ## Who has contributed? -Many people have made significant contributions to CLDR and LDML; see the [Acknowledgments](http://cldr.unicode.org/index/acknowledgments) page for a full listing. +Many people have made significant contributions to CLDR and LDML; see the [Acknowledgments](index/acknowledgments) page for a full listing. ## What is the Schedule? diff --git a/docs/site/index/charts.md b/docs/site/index/charts.md index df10a4aba4e..5aab22e8f3a 100644 --- a/docs/site/index/charts.md +++ b/docs/site/index/charts.md @@ -8,7 +8,7 @@ The Unicode CLDR Charts provide different ways to view the Common Locale Data Re - [Latest](https://www.unicode.org/cldr/charts/latest) - The charts for the latest release version - [Dev](https://www.unicode.org/cldr/charts/dev) - A snapshot of data under development -- [Previous](https://cldr.unicode.org/index/downloads) - Previous available charts are linked from the download page in the Charts column +- [Previous](/index/downloads) - Previous available charts are linked from the download page in the Charts column The format of most of the fields in the charts will be clear from the Name and ID, such as the months of the year. The format for others, such as the date or time formats, is structured and requires more interpretation. For more information, see [UTS #35: Locale Data Markup Language (LDML)](http://www.unicode.org/reports/tr35/). @@ -35,8 +35,8 @@ Most charts have "double links" somewhere in each row. These are links that put Other Data - [**Supplemental Data**](https://www.unicode.org/cldr/charts/latest/supplemental/index.html) - General data that is not part of the locale hierarchy but is still part of CLDR. Includes: *plural rules, day-period rules, language matching, language-script information, territories (countries),* and their *subdivisions, timezones,* and so on. -- **Transform** - (Disabled temporarily) Some of the transforms in CLDR: the transliterations between different scripts. For more on transliterations, see [Transliteration Guidelines](https://cldr.unicode.org/index/cldr-spec/transliteration-guidelines). +- **Transform** - (Disabled temporarily) Some of the transforms in CLDR: the transliterations between different scripts. For more on transliterations, see [Transliteration Guidelines](/index/cldr-spec/transliteration-guidelines). - [**Keyboards**](https://www.unicode.org/cldr/charts/latest/keyboards/index.html) - Provides a view of keyboard data: layouts for different locales, mappings from characters to keyboards, and from keyboards to characters. -For more details on the locale data collection process, please see the [CLDR process](https://cldr.unicode.org/index/process). For filing or viewing bug reports, see [CLDR Bug Reports](https://github.com/unicode-org/cldr/blob/main/docs/requesting_changes.md). +For more details on the locale data collection process, please see the [CLDR process](/index/process). For filing or viewing bug reports, see [CLDR Bug Reports](https://github.com/unicode-org/cldr/blob/main/docs/requesting_changes.md). diff --git a/docs/site/index/cldr-spec.md b/docs/site/index/cldr-spec.md index 94445ef97f8..990d7e05586 100644 --- a/docs/site/index/cldr-spec.md +++ b/docs/site/index/cldr-spec.md @@ -4,13 +4,14 @@ title: CLDR Specifications # CLDR Specifications -- [UTS #35: Unicode Locale Data Markup Language (LDML)](http://www.google.com/url?q=http%3A%2F%2Fwww.unicode.org%2Freports%2Ftr35%2F&sa=D&sntz=1&usg=AOvVaw3nQVa5S_8phVZOG1xv85Ie) is the specification of the XML format used for CLDR data, including the interpretation of the CLDR data. -- [Definitions](https://cldr.unicode.org/index/cldr-spec/definitions) - common definitions used in CLDR -- [Unicode Locale Extension (‘u’) for BCP 47](https://cldr.unicode.org/index/bcp47-extension) - an overview of the -u- extension -- [CLDR Survey Tool](https://cldr.unicode.org/index/survey-tool) - how to use the Survey Tool +- [UTS #35: Unicode Locale Data Markup Language (LDML)](https://www.unicode.org/reports/tr35/) is the latest released specification of the CLDR XML format and algorithms, including the interpretation of the CLDR data. + - [**Development version**](http://www.unicode.org/reports/tr35/proposed.html) +- [Definitions](/index/cldr-spec/definitions) - common definitions used in CLDR +- [Unicode Locale Extension (‘u’) for BCP 47](/index/bcp47-extension) - an overview of the -u- extension +- [CLDR Survey Tool](/index/survey-tool) - how to use the Survey Tool - [Coverage Levels](https://www.google.com/url?q=https%3A%2F%2Fcldr.unicode.org%2Findex%2Fcldr-spec%2Fcoverage-levels&sa=D&sntz=1&usg=AOvVaw0k_LrECnZYzNCWCazI9c3c) - Detailed descriptions of the data required for a language to be considered supported at a specific level -- [Unicode Transliteration Guidelines](https://cldr.unicode.org/index/cldr-spec/transliteration-guidelines) - how to design and use Unicode transliterators -- [Picking the Right Language Identifier](https://cldr.unicode.org/index/cldr-spec/picking-the-right-language-code) - how to pick the right language code -- [Collation Guidelines](https://cldr.unicode.org/index/cldr-spec/collation-guidelines) - how to construct collation rules -- [JSON Bindings for CLDR Data](https://cldr.unicode.org/index/cldr-spec/cldr-json-bindings) +- [Unicode Transliteration Guidelines](/index/cldr-spec/transliteration-guidelines) - how to design and use Unicode transliterators +- [Picking the Right Language Identifier](/index/cldr-spec/picking-the-right-language-code) - how to pick the right language code +- [Collation Guidelines](/index/cldr-spec/collation-guidelines) - how to construct collation rules +- [JSON Bindings for CLDR Data](/index/cldr-spec/cldr-json-bindings) diff --git a/docs/site/index/cldr-spec/cldr-json-bindings.md b/docs/site/index/cldr-spec/cldr-json-bindings.md new file mode 100644 index 00000000000..ddf32de6e53 --- /dev/null +++ b/docs/site/index/cldr-spec/cldr-json-bindings.md @@ -0,0 +1,532 @@ +--- +title: CLDR JSON Bindings +--- + + +> **Note**: This page is out of date. See for current CLDR JSON data. + + + +----- + +## History +- from: Shanjian Li (Google) +- original draft approved by CLDR Committee: May 9, 2011 +- original date: March 29, 2011 +- last update: S eptember 9, 2013 by John C. Emmons (IBM) +- latest draft approved by CLDR Committee: July 31, 2013** + +## Summary + +This document describes transformation between the XML format of structured locale data and JavaScript Object Notation (JSON) for the purpose of making CLDR data available in a lightweight form to interested clients. + +## Sample + +The sample is based on the preliminary specification and CLDR version 22.1. + +## Introduction + +Unicode Technical Standard \#35 describes an XML format for the exchange of structured locale data named Unicode Locale Data Markup Language (LDML). Data gathered and vetted through the Common Locale Data Repository (CLDR) project is stored in LDML format. + +This data is used for many purposes. However, distribution of it tends to be unwieldy for various reasons. For many potential users, the only alternative is to use an internationalization library, such as ICU. Such library might not exist in users’ platform, or too much a burden due to its size and performance requirement, or just too much overhead for a seemingly simple task. The rapidly growing area of web applications needs a way to access i18n data in a simple way. + +The goal is for a new CLDR representation format is to make the data directly usable by applications across network. + +## JSON Format + +JSON has become the default format choice in web application world. It is compact, human readable, and supported by almost any scripts/languages with very little or no overhead. Especially, it is supported by Javascript (and Python) natively. + +This doc proposes a JSON binding for CLDR data. It does **not** replace XML as the default and official format for maintaining the data. It was designed to improve usability for clients. Two major decisions are: + +1. The JSON representation is based on the fully resolved form. For each locale, all the information should have been fully resolved and can be accessed right on that spot. There is no need to resort back to root and other complicated fallback mechanism as used in official CLDR XML specification. +2. The JSON binding will contains all the information found in original XML format. But there is no goal to convert JSON data back to XML format. All the changes should still happen in LDML. + +Compared to LDML, information is organized cleanly in a tree structure. Such a structure allows a client application to have an easy way to locate the information it needs, and receive the data in the desired granularity. + +### Data Access + +Three data types are used in JSON binding, “object”, “string” and “array”. Array can be treated as a special object that has two kinds of properties, “length” being the number of the elements in this array, and a numerical index map to the corresponding element. That leads to a simple tree structure, with all leaves being string, and all branches are “objects”/”array”. CLDR files are organized in tree structure, thus all CLDR data can be treated as a single tree. The path of the parent elements is sufficient to locate a subtree or a leaf. + +With a clean tree structure, to access data in CLDR JSON form is very simple, the elements path from the root to the leaf to subtree is enough. We name this path as cldr\_path, and it always start from root element “cldr”. + +\ ::= cldr(/\)\* + +\ ::= (letter|digit|-|\_)(letter|digit|-|\_)\* + +The directory name (like “main”, “supplemental”) will be the 2nd level element, and each file understand those subdirectories is also corresponding to a level of element. + +In actual use, some additional information might be necessary to pin down the version of data etc. That’s up to the actual deployment. In our implementation, we added 3 name/value pairs and pass them as URL’s query parameters. + +* tag=\ +* Specify the name of an instance of the tree structure. Tag is usually used to incorporate CLDR version and approval status. +* depth=\ +* Specify the depth of subtree that should be returned. If not specified, maximum depth will be used, which mean the complete subtree without truncation. +* fallback=\\[,\\]\* +* If certain value is not explicitly specified in certain locale, before fallback to “root” locale, try the locale in fallback first. +* (Clean tree structure could not support this feature. We will have to have a way to mark if certain value is resolved from root or not. We might need a separate “no root” tree to support this feature.) + +## Conversion + +This section describes how the conversion should happen. + +### Rough guidelines + +* Hierarchy is retained as much as it makes sense +* Key names in JSON representation must be unique and URL safe +* All the aliases should be resolved +* Better readability in the transformed JSON representation is always a priority, even if it add complexity to the transformation process. + +### Element Handling + +The mapping from an XML element to JSON element is mostly direct one-to-one mapping. + +The root element (ldml) in CLDR XML was omitted. The cldr\_path will be like `cldr/main/en/localeDisplaynames` instead of `cldr/main/en/ldml/localeDisplayNames`. +Time zone ids have the form of `America/Los_angeles`. In order to make the name safe for URL, time zone elements are split into multiple levels and grouped in each level. +Instead of transforming them directly like, + +```json +{ + “Europe/London”: {...}, + “Europe/Dublin”: {...}, + … +} +``` + +They will be transformed as, + +```json +{ + “Europe”: { + London”: {...}, + Dublin”: {...}, + … + }, + … +} +``` + +This set of elements include: “zone”, “timezone”, “zoneItem”, “typeMap” +Element "alias" is resolved. + +"usesMetazone" is used as a bridge to connect time zone and their content. The content of metazone is assigned to those time zone that uses the metazone. That improves the usability of JSON representation. + +For elements that have many child elements with the same name, their child elements will be translated as an array. Order of its children is significant for some elements. In such case, array is also used. + +The processing of attribute of the element might change the name of elements, creating additional JSON objects. Detail will be covered in next section. + +There are certain groups of elements that can be combined into a single JSON element in order to make the resulting JSON format more compact. These currently include the following: + +`(dateFormat|timeFormat|dateTimeFormat)\[@type="(full|long|medium|short)"\]/(dateFormat|timeFormat|dateTimeFormat)/pattern` + +In this case the "dateFormat" and "pattern" elements are superfluous and should be omitted. +Example: The following fragment of LDML: + +```xml + + + + EEEE, MMMM d, y + + + + + MMMM d, y + + + + + MMM d, y + + + + + M/d/yy + + + +``` + +will be converted as + +```json +"dateFormats": { + "full": "EEEE, MMMM d, y", + "long": "MMMM d, y", + "medium": "MMM d, y", + "short": "M/d/yy" +} +``` + +instead of + +```json +"dateFormats": { + "full": { + "dateFormat": { + "pattern": "EEEE, MMMM d, y" + } + }, + "long": { + "dateFormat": { + "pattern": "MMMM d, y" + } + }, + "medium": { + "dateFormat": { + "pattern": "MMM d, y" + } + }, + "short": { + "dateFormat": { + "pattern": "M/d/yy" + } + } +} +``` + +### Attributes Handling + +The attributes of XML elements is handled by a set of rules. They could change the way how element is named and may lead to creation of extra JSON objects. In CLDR, XML attributes are classified as “distinguishing attributes” and “non-distinguishing attributes”. “distinguishing attributes” usually make into JSON key name. “non-distinguishing attributes” usually end up with values. + +#### Distinguishing attributes becomes the key name. + +The default processing of distinguishing attribute is to make it to be the key name. The original element name is dropped as it can be inferred from its parent. + +Example + +```xml +AM +a.m. +``` + +will be transformed as, + +```json +“wide” : { + “sun”: “Sunday”, + … +} +``` + +#### Distinguishing attribute becomes part of the key name + +This set of distinguishing attributes decorate an additional element item, “alt” is the typical one. There is an item without “alt” attribute, and there is one with “alt”. In such case, attribute name and value will be appended to element name to form a new name in form of `--` + +Example: + +```xml +AM +a.m. +``` + +This will be translated to following using rule1 \+ rule2. + +```json +"am": "AM", +"am-alt-variant": "a.m.", +``` + +##### Enumeration + +In following list, each item appears in the form of \:\:\, and “\*” is the wildcard that matches everything. + +```java +"monthWidth:month:yeartype", +"currencyFormats:unitPattern:count", +"currency:displayName:count", +"numbers:symbols:numberSystem", +"*:*:alt", +``` + + + +#### Distinguishing attribute create an additional level of object + +Sometimes multiple elements of the same name differentiated by distinguishing attribute appear in the same level together with elements of different name(s). Distinguishing attribute can no longer be extracted as key because the existence of other type of elements. In such case, an object keyed by element name is created first to enclose all element of with the same name. Inside this object, a set of objects keyed by distinguishing attribute is created. There could be one element without distinguishing attribute. This is handled by adding this attribute with value of “standard”. + +Example + +\ ... \ + +\ ... \ + +will be mapped to: + +```json +“exemplarChacter”: { + “standard”: ..., + “auxilliary”: ... +} +``` + +##### Enumeration + +Some element names is ambiguous by itself. Their parent element is added and separated by ‘/’. + +```java +“exemplarCharacter”, +“ellipsis”, +“metazone”, +“identity/language”, +“languagePopulation”, +“paperSize”, +“decimalFormats/decimalFormatLength”, +“alias”, +“firstDay”, +“minDays”, +“weekendStart”, +“weekendEnd” +“currencyData/region” +``` + +#### Distinguishing attribute combinations that create multiple levels. + +In this case, the logical grouping is for descriptions by each type of key. These cannot be handled as in section \#5 below as originally specified, because doing so would create multiple objects with the same key value ( See [http://unicode.org/cldr/trac/ticket/5477](http://unicode.org/cldr/trac/ticket/5477) ) + +**Example** + +\ +\Arabic-Indic Digits\ +\Chinese Calendar\ +\Devanagari Digits\ +\Gregorian Calendar\ +\ + +would be transformed to the following, + +```json +"types": { + "calendar": { + "chinese": "Chinese Calendar", + "gregorian": "Gregorian Calendar" + }, + "numbers": { + "arab": "Arabic-Indic Digits", + "deva": "Devanagari Digits" + } +} +``` + +**Distinguishing attributes that should be treated as values** + +There is a set of distinguishing attributes that should really be leaf with a string value. The attribute value does not fit into key name. + +**Example: ( from windowsZones.xml in supplemental )....** + +\ + +**would convert to:** + +```json +"mapZone": { +"@other": "Greenwich Standard Time", +"@territory": "CI", +"@type": "Africa/Abidjan" +} +``` + +**Enumeration** + +In following list, each item appears in the form of \:\:\. + + // in common/supplemental/dayPeriods.xml + "dayPeriodRules:dayPeriodRule:from", + + // in common/supplemental/likelySubtags.xml + "likelySubtags:likelySubtag:to", + + // in common/supplemental/metaZones.xml + "timezone:usesMetazone:mzone", + // Only the current usesMetazone will be kept, it is not necessary to keep + // "to" and "from" attributes to make key unique. This is needed as their + // value is not good if used as key. + "timezone:usesMetazone:to", + "timezone:usesMetazone:from", + "mapTimezones:mapZone:other", + "mapTimezones:mapZone:type", + "mapTimezones:mapZone:territory", + // in common/supplemental/numberingSystems.xml + "numberingSystems:numberingSystem:type", + // in common/supplemental/supplementalData.xml + "region:currency:from", + "region:currency:to", + "calendar:calendarSystem:type", + + // in common/supplemental/windowsZones.xml + "mapTimezones:mapZone:other", + + // in common/bcp47/\*.xml + "keyword:key:alias", + "key:type:alias", + "key:type:name", + + // common/segments + "identity:territory:type", + "identity:variant:type", + // common/rbnf + "identity:script:type", + +#### Default processing of non-distinguishing attributes. + +Non-distinguishing attributes are treated as values unless other rules instruct it differently. “**\_**” is added to the name to differentiate attributes from child elements. Previous versions of this specification used "@" instead of "\_", but this is problematic because "@" can't be used as the first character in a JavaScript identifier, thus making the resulting JSON almost unusable for parsing in JavaScript. + +Example: + +\ + +will be transformed to: + +```json +“ADP”: { + “rounding”: “0”, + “digits”: “0” +} +``` + +“iso4217” is a distinguishing attribute, it is transformed into a key by Rule-1. “digits” and “rounding” are non-distinguishing attributes and transformed to values. Attributes that are treated as value with attribute name suppressed. + +Among the attributes that are being treated as values, some of them will be the only item in the converted object, ie. + key: { attribute: value } + +it would be desirable to reduce it to form of**:** +key: value + +In fact, many of those item is exactly representing such a mapping. In those cases, the attribute name will be dropped. + +Example + + \ + +will be mapped to: + +```json + “zh”: “zh_Hans_CN”, +``` + +**Enumeration:** + +// common/main +"calendars:default:choice", +"dateFormats:default:choice", +"months:default:choice", +"monthContext:default:choice", +"days:default:choice", +"dayContext:default:choice", +"timeFormats:default:choice", +"dateTimeFormats:default:choice", + +// common/supplemental +"likelySubtags:likelySubtag:to", +"territoryContainment:group:contains", +"calendar:calendarSystem:type", +"calendarPreferenceData:calendarPreference:ordering", +"weekData:firstDay:day", +"weekData:weekendStart:day", +"weekData:weekendEnd:day", +"measurementData:measurementSystem:type", +"codesByterritory:telephoneCountryCode:code", + +// common/collation +"collations:default:choice", +// common/segments +"identity:territory:type", +"identity:variant:type", + +**“references” are dropped in the transformation.** + +This attributes is for documentation in nature. + +**“\_q” attribute is dropped, but order is kept.** + +“\_q” attribute is used to mark the order and distinguishing child element. If there could be only one child element, “\_q” will be dropped without further processing. Otherwise those child elements will be converted to array and order will be kept there. In either case “\_q” is not needed after the conversion. + +**Attributes set that can be suppressed.** + +There are a set of (distinguishing) attributes which always have the default value. Using the element name instead of the value of that distinguishing attribute will make the JSON result more readable. We choose to convert those \ triples using element name. So instead of transforming to key name “element-attribute-value” or “value”, the value can be suppressed and thus transformed to “element”. + +**Example:** + +\...\ + +It will be transformed to: + +“timeFormat”: … + +**Enumeration**: + +This list include both distinguishing and non-distinguishing attributes. It comes from cldr/common/supplemental/supplementalMetadata. Each group is a triple of (element, attribute, value). If the specified attribute appears in specified element with specified value, attribute and value should be suppressed with only element name left. + + "currencyFormat", "type", "standard", + "dateFormat", "type", "standard", + "dateTimeFormat", "type", "standard", + "decimalFormat", "type", "standard", + "pattern", "type", "standard", + "percentFormat", "type", "standard", + "scientificFormat", "type", "standard", + "timeFormat", "type", "standard", + +**Attributes with values in form of multiple items will be split into multiple items.** + +If multiple items are enumerated as value for an attribute, such element can be split into multiple elements, with each element only contains one item in its value part. + +**Example:** + +\ + +will be first split into a group of elements: + + \ + \ + \ + \ + \ + \ + \ + \ + +And such items are later translated to a more easily usable form in JSON, like + +```json +“weekendStart”: { + “DZ”: “thu”, + “KW”: “thu”, + “OM”: “thu”, + “SA”: “thu”, + … +} +``` + +**Enumeration**: + +"/measurementSystem", "territories", + "/calendarPreference", "territories", + "/pluralRules", "locales", + "/weekendStart", "territories", + "/weekendEnd", "territories", + "/firstDay", "territories", + "/dayPeriodRules", "locales", + +**Special case: handle “transforms” rules** + +Following conversion is a little bit special. None of the above rules can handle it in satisfaction. “transform” element have several attributes that should be converted to value according Rule-5. The child element of “transform” has multiple name but need to be kept in order. It is not desirable to mingle converted attribute with ordered rules. In this case, an additional object “tRules” is added to enclose the rules. + +\ + \ + \...\ + \...\ + +will be mapped to, + +“transforms”: { + “transform”: { + “@source”: “Simplified”, + “@target”: “Traditional”, + “@direction”: “both”, + “tRules”: \[ + {“comment”: …}, + {“tRule”: …} + \] + } +} + +Here “tRules” is brought in so that those attributes of transform can be separated from those rules. diff --git a/docs/site/index/cldr-spec/collation-guidelines.md b/docs/site/index/cldr-spec/collation-guidelines.md index 482037def72..7fc52615e56 100644 --- a/docs/site/index/cldr-spec/collation-guidelines.md +++ b/docs/site/index/cldr-spec/collation-guidelines.md @@ -6,15 +6,15 @@ title: Collation Guidelines Collation sequences can be quite tricky to specify. -The locale\-based collation rules in Unicode CLDR specify customizations of the standard data for [UTS \#10: Unicode Collation Algorithm](http://www.unicode.org/reports/tr10/#Introduction) (UCA). Requests to change the collation order for a given locale, or to supply additional variants, need to follow the guidelines in this document. +The locale\-based collation rules in Unicode CLDR specify customizations of the standard data for [UTS \#10: Unicode Collation Algorithm](https://www.unicode.org/reports/tr10/#Introduction) (UCA). Requests to change the collation order for a given locale, or to supply additional variants, need to follow the guidelines in this document. ## Filing a Request -Requests to change the collation order for a given locale, or to supply additional variants should be filed as CLDR bug tickets. See [CLDR Change Requests](https://cldr.unicode.org/index/bug-reports) +Requests to change the collation order for a given locale, or to supply additional variants should be reported by [requesting changes](/requesting_changes). ### Rules -The request should present the precise change expressed as rules. The rules must be supplied in the syntax as specified in [http://www.unicode.org/reports/tr35/tr35\-collation.html\#Rules](http://www.unicode.org/reports/tr35/tr35-collation.html#Rules). (This used to be called the "basic syntax".) The rules must also be [Minimal Rules](https://cldr.unicode.org/index/cldr-spec/collation-guidelines) as described below: *only* differences from [http://unicode.org/charts/uca/](http://unicode.org/charts/uca/) should be specified. +The request should present the precise change expressed as rules. The rules must be supplied in the syntax as specified in [https://www.unicode.org/reports/tr35/tr35\-collation.html\#Rules](https://www.unicode.org/reports/tr35/tr35-collation.html#Rules). (This used to be called the "basic syntax".) The rules must also be [Minimal Rules](#minimal-rules) as described below: *only* differences from [https://www.unicode.org/charts/collation](https://www.unicode.org/charts/collation/) should be specified. *\& c \< cs* @@ -52,7 +52,7 @@ Provide justification for your change. Citations should be to authoritative page Please test out any suggested rules before filing a bug. -1. Go to the [ICU Collation Demo](http://demo.icu-project.org/icu-bin/collation.html). +1. Go to the [ICU Collation Demo](https://demo.icu-project.org/icu-bin/collation.html). 2. Pick the language for which you want to change the rules, or keep it on "und" (root) if you want to start from the Unicode/CLDR default sort order. 3. Put your rules into the "Append rules" box. 4. Put an interesting list of strings into the Input box. @@ -60,7 +60,7 @@ Please test out any suggested rules before filing a bug. Or -1. Go to the [ICU Locale Explorer](http://demo.icu-project.org/icu-bin/locexp). +1. Go to the [ICU Locale Explorer](https://demo.icu-project.org/icu-bin/locexp). 2. Pick the appropriate locale. 3. Follow the instructions at the bottom to use your suggested rules on your suggested test data. 4. Verify that the proper order results. @@ -71,7 +71,7 @@ The exact collation sequence for a given language may be difficult to determine. Most standards that specify collation, such as DIN or CS, are not targeted at algorithmic sorting, and are not complete algorithmic specifications. For example, CSN 97 6030 requires transliteration of foreign scripts, but there are many choices as to how to transliterate, and the exact mechanism is not specified. It also specifies that geometric shapes are sorted by the number of vertices and edges, which is, at a minimum, difficult to determine; and are subject to variation in glyphs. -The CLDR goals are to match the sorting of exemplar letters and common punctuation and leave everything else to the standard UCA ordering. For more information, see [UTS \#10: Unicode Collation Algorithm](http://www.unicode.org/reports/tr10/#Introduction) (UCA). +The CLDR goals are to match the sorting of exemplar letters and common punctuation and leave everything else to the standard UCA ordering. For more information, see [UTS \#10: Unicode Collation Algorithm](https://www.unicode.org/reports/tr10/#Introduction) (UCA). ### Determining Level Differences @@ -192,7 +192,7 @@ It would be possible instead to have rules that list every letter used by Slovak 1. Every time a character is tailored, the data for that character takes up more room in typical implementations. That means that the data for collation is larger, downloads of collation libraries with that data are slower, sort keys are longer, and performance is slower; sometimes very much so. 2. Related characters in the same script are in a peculiar order. For example, if the Slovak tailoring omits ƀ, then it would show up as after z. -You can see what the UCA currently does with a given script by looking at the charts at [Unicode Collation Charts](http://www.unicode.org/charts/collation/), or at the [UCA in ICU\-style rules](http://unicode.org/cldr/data/diff/collation/UCA.txt). For example, suppose that U\+0D89 SINHALA LETTER IYANNA and U\+0D8A SINHALA LETTER IIYANNA needed to come after U\+0D96 SINHALA LETTER AUYANNA, in primary order, and that otherwise DUCET was ok. Then you would give the following rules: +You can see what the UCA currently does with a given script by looking at the charts at [Unicode Collation Charts](https://www.unicode.org/charts/collation/). For example, suppose that U\+0D89 SINHALA LETTER IYANNA and U\+0D8A SINHALA LETTER IIYANNA needed to come after U\+0D96 SINHALA LETTER AUYANNA, in primary order, and that otherwise DUCET was ok. Then you would give the following rules: \& ඖ \# U\+0D96 SINHALA LETTER AUYANNA @@ -242,6 +242,6 @@ There are a number of pitfalls with collation, so be careful. In some cases, suc 6. The correct rules should be the minimal ones. 7. \& \[before 1] c \< ċ \<\<\< Ċ 8. This finds the highest primary (that's what the 1 is for) character less than c, and uses that as the reset point. For Maltese, the same technique needs to be used for ġ and ż. -2. **Blocking Contractions.** Contractions can be blocked with CGJ, as described in the Unicode Standard and in the [Characters and Combining Marks FAQ](http://www.unicode.org/faq/char_combmark.html). -3. **Case Combinations.** The lowercase, titlecase, and uppercase variants of contractions need to be supplied, with tertiary differences in that order (regardless of the caseFirst setting). That is, if *ch* is a contraction, then you would have the rules `... ch <<< Ch <<< CH`. Other case variants such as *cH* are excluded because they are unlikely to represent the contraction, for example in *McHugh*. (Therefore, *mchugh* and *McHugh* will be primary different if *ch* adds a primary difference.) \[[\#8248](http://unicode.org/cldr/trac/ticket/8248)] +2. **Blocking Contractions.** Contractions can be blocked with CGJ, as described in the Unicode Standard and in the [Characters and Combining Marks FAQ](https://www.unicode.org/faq/char_combmark.html). +3. **Case Combinations.** The lowercase, titlecase, and uppercase variants of contractions need to be supplied, with tertiary differences in that order (regardless of the caseFirst setting). That is, if *ch* is a contraction, then you would have the rules `... ch <<< Ch <<< CH`. Other case variants such as *cH* are excluded because they are unlikely to represent the contraction, for example in *McHugh*. (Therefore, *mchugh* and *McHugh* will be primary different if *ch* adds a primary difference.) \[[\#8248](https://unicode.org/cldr/trac/ticket/8248)] diff --git a/docs/site/index/cldr-spec/core-data-for-new-locales.md b/docs/site/index/cldr-spec/core-data-for-new-locales.md index 94b859bce6a..fa1605c3d5d 100644 --- a/docs/site/index/cldr-spec/core-data-for-new-locales.md +++ b/docs/site/index/cldr-spec/core-data-for-new-locales.md @@ -7,13 +7,13 @@ title: Core Data for New Locales This document describes the minimal data needed for a new locale. There are two kinds of data that are relevant for new locales: 1. **Core Data** \- This is data that the CLDR committee needs from the proposer ***before*** a new locale is added. The proposer is expected to also get a Survey Tool account, and contribute towards the Basic Data. -2. **Basic Data** \- The Core data is just the first step. It is only created under the expectation that people will engage in suppling data, at a [Basic Coverage Level](https://cldr.unicode.org/index/cldr-spec/coverage-levels#h.yi1eiryx7yl4). **If the locale does not meet the [Basic Coverage Level](https://cldr.unicode.org/index/cldr-spec/coverage-levels#h.yi1eiryx7yl4) in the next Survey Tool cycle, the committee may remove the locale.** +2. **Basic Data** \- The Core data is just the first step. It is only created under the expectation that people will engage in suppling data, at a [Basic Coverage Level](/index/cldr-spec/coverage-levels#h.yi1eiryx7yl4). **If the locale does not meet the [Basic Coverage Level](/index/cldr-spec/coverage-levels#h.yi1eiryx7yl4) in the next Survey Tool cycle, the committee may remove the locale.** ## Core Data -Collect and submit the following data, using the [Core Data Submission Form](https://docs.google.com/forms/d/e/1FAIpQLSfSyz0VUSXD93IJQQdjzUCnbQwC2nwz6eiLjTaFjASQZzpoSg/viewform). *Note to translators: If you are having difficulties or questions about the following data, please contact us: [file a new bug](https://cldr.unicode.org/index/bug-reports#TOC-Filing-a-Ticket), or post a follow\-up to comment to your existing bug.* +Collect and submit the following data, using the [Core Data Submission Form](https://docs.google.com/forms/d/e/1FAIpQLSfSyz0VUSXD93IJQQdjzUCnbQwC2nwz6eiLjTaFjASQZzpoSg/viewform). *Note to translators: If you are having difficulties or questions about the following data, please contact us: [file a new bug](/index/bug-reports#TOC-Filing-a-Ticket), or post a follow\-up to comment to your existing bug.* -1. The correct language code according to [Picking the Right Language Identifier](https://cldr.unicode.org/index/cldr-spec/picking-the-right-language-code). +1. The correct language code according to [Picking the Right Language Identifier](/index/cldr-spec/picking-the-right-language-code). 2. The four exemplar sets: main, auxiliary, numbers, punctuation.  - These must reflect the Unicode model. For more information, see [tr35\-general.html\#Character\_Elements](http://www.unicode.org/reports/tr35/tr35-general.html#Character_Elements). 3. Verified country data ( i.e. the population of speakers in the regions (countries) in which the language is commonly used)  @@ -21,12 +21,12 @@ Collect and submit the following data, using the [Core Data Submission Form](htt - "Users of the language" includes as either a 1st or 2nd language. The main focus is on written language. 4. Default content script and region (normally the region is the country with largest population using that language, and the customary script used for that language in that country).  - **\[[supplemental/supplementalMetadata.xml](https://github.com/unicode-org/cldr/blob/main/common/supplemental/supplementalMetadata.xml#LC1654:~:text=%3CdefaultContent)]** - - *See*: [http://cldr.unicode.org/translation/translation\-guide\-general/default\-content](https://cldr.unicode.org/translation/translation-guide-general/default-content) + - *See*: [http://cldr.unicode.org/translation/translation\-guide\-general/default\-content](/translation/translation-guide-general/default-content) 5. The correct time cycle used with the language in the default content region - In common/supplemental/supplementalData.xml, this is the "timeData" element - The value should be h (1\-12\), H (0\-23\), k (1\-24\), or K (0\-11\); as defined in [https://www.unicode.org/reports/tr35/tr35\-dates.html\#Date\_Field\_Symbol\_Table](https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table) -***You must commit to supplying [the data required for the new locale to reach Basic level](https://cldr.unicode.org/index/cldr-spec/core-data-for-new-locales#h.yaraq3qjxnns) during the next open CLDR submission when requesting a new locale to be added.*** +***You must commit to supplying [the data required for the new locale to reach Basic level](/index/cldr-spec/core-data-for-new-locales#h.yaraq3qjxnns) during the next open CLDR submission when requesting a new locale to be added.*** -For more information on the other coverage levels refer to [Coverage Levels](https://cldr.unicode.org/index/cldr-spec/coverage-levels)  +For more information on the other coverage levels refer to [Coverage Levels](/index/cldr-spec/coverage-levels)  diff --git a/docs/site/index/cldr-spec/coverage-levels.md b/docs/site/index/cldr-spec/coverage-levels.md index 95e895f9c27..1cec2d188e2 100644 --- a/docs/site/index/cldr-spec/coverage-levels.md +++ b/docs/site/index/cldr-spec/coverage-levels.md @@ -32,11 +32,11 @@ To filter "at that level or above", you use the fact that basic ⊂ moderate ⊂ ### Migration -As of v43, the files in **/seed/** have been moved to **/common/**. Older versions of CLDR separated some locale files into a 'seed' directory. Some implementations used for filtering, but the criteria for moving from seed to common were not rigorous. To maintain compatibility with the set of locales used from previous versions, an implementation may use the above process for Basic and above, but then also add locales that were previously included. For more information, see [CLDR 43 Release Note](https://cldr.unicode.org/index/downloads/cldr-43).  +As of v43, the files in **/seed/** have been moved to **/common/**. Older versions of CLDR separated some locale files into a 'seed' directory. Some implementations used for filtering, but the criteria for moving from seed to common were not rigorous. To maintain compatibility with the set of locales used from previous versions, an implementation may use the above process for Basic and above, but then also add locales that were previously included. For more information, see [CLDR 43 Release Note](/index/downloads/cldr-43).  ## Core Data -**The data needed for a new locale to be added. See [Core Data for New Locales](https://cldr.unicode.org/index/cldr-spec/core-data-for-new-locales) for details on Core Data and how to submit for new locales.** +**The data needed for a new locale to be added. See [Core Data for New Locales](/index/cldr-spec/core-data-for-new-locales) for details on Core Data and how to submit for new locales.** **It is expected that during the next Survey Tool cycle after a new locale is added, the data for the Basic Coverage Level will be supplied.** @@ -70,13 +70,13 @@ Before submitting data above the Basic Level, the following must be in place: 1. Plural and Ordinal rules - As in \[supplemental/plurals.xml] and \[supplemental/ordinals.xml] - Must also include minimal pairs - - For more information, see [cldr\-spec/plural\-rules](https://cldr.unicode.org/index/cldr-spec/plural-rules). + - For more information, see [cldr\-spec/plural\-rules](/index/cldr-spec/plural-rules). 2. Casing information (only where the language uses a cased scripts according to [ScriptMetadata.txt](https://github.com/unicode-org/cldr/blob/main/common/properties/scriptMetadata.txt)) - This will go into [common/casing](https://home.unicode.org/basic-info/projects/#!/repos/cldr/trunk/common/casing/) 3. Collation rules \[non\-Survey Tool] - This can be supplied as a list of characters, or as rule file. - The list is a space\-delimited list of the characters used by the language (in the given script). The list may include multiple\-character strings, where those are treated specially. For example, if "ch" is sorted after "h" one might see "a b c d .. g h ch i j ..." - - More sophisticated users can do a better job, supplying a file of rules as in [cldr\-spec/collation\-guidelines](https://cldr.unicode.org/index/cldr-spec/collation-guidelines). + - More sophisticated users can do a better job, supplying a file of rules as in [cldr\-spec/collation\-guidelines](/index/cldr-spec/collation-guidelines). 4. The result will be a file like: [common/collation/ar.xml](https://home.unicode.org/basic-info/projects/#!/repos/cldr/trunk/common/collation/ar.xml) or [common/collation/da.xml](https://home.unicode.org/basic-info/projects/#!/repos/cldr/trunk/common/collation/da.xml). The data for the Moderate Level includes subsets of the Modern data, both in depth and breadth. diff --git a/docs/site/index/cldr-spec/currency-process.md b/docs/site/index/cldr-spec/currency-process.md index 663c4bb690d..4e2f84b0719 100644 --- a/docs/site/index/cldr-spec/currency-process.md +++ b/docs/site/index/cldr-spec/currency-process.md @@ -12,6 +12,6 @@ There are three stages for new currency symbols (such as the recent Russian, Ind | 2 | Adopted widely in fonts and keyboards used in the relevant locales. | It is added it to the relevant locales as the standard version. | | 3 | Widely recognized outside of the locales, and in most operating systems (Android, iOS, Windows, Mac — not just the latest versions, but also older ones that have significant market share). | Added to root as the standard version. | -For more information, see [Currency Symbols \& Names](https://cldr.unicode.org/translation/currency-names-and-symbols/currency-names). +For more information, see [Currency Symbols \& Names](/translation/currency-names-and-symbols/currency-names). diff --git a/docs/site/index/cldr-spec/picking-the-right-language-code.md b/docs/site/index/cldr-spec/picking-the-right-language-code.md index bcef5c5aa58..3768860fdb0 100644 --- a/docs/site/index/cldr-spec/picking-the-right-language-code.md +++ b/docs/site/index/cldr-spec/picking-the-right-language-code.md @@ -15,7 +15,7 @@ If you are looking at a prospective language code, like "swh", the process is si ## Choosing the Base Language Code 1. Go to [iso639\-3](http://www-01.sil.org/iso639-3/codes.asp) to find the language. Typically you'll look under **Name** starting with **G** for Ganda. -2. There may be multiple entries for the item you want, so you'll need to look at all of them. For example, on the page for names starting with “P”, there are three records: “Panjabi”, “Mirpur Panjabi” and “Western Panjabi” (it is the last of these that corresponds to Lahnda). You can also try a search, but be [careful](https://cldr.unicode.org/index/cldr-spec/picking-the-right-language-code). +2. There may be multiple entries for the item you want, so you'll need to look at all of them. For example, on the page for names starting with “P”, there are three records: “Panjabi”, “Mirpur Panjabi” and “Western Panjabi” (it is the last of these that corresponds to Lahnda). You can also try a search, but be [careful](/index/cldr-spec/picking-the-right-language-code). 3. You'll find an entry like:  lug  lug  **lg**  Ganda  Individual  Living  more ... @@ -27,7 +27,7 @@ While you may think that you are done, you have to verify that the three\-letter 3. Verify that is indeed the language: 1. Look at the information on the ethnologue page 2. Check Wikipedia and other web sources -4. ***AND IMPORTANTLY: Review [Caution!](https://cldr.unicode.org/index/cldr-spec/picking-the-right-language-code) below*** +4. ***AND IMPORTANTLY: Review [Caution!](/index/cldr-spec/picking-the-right-language-code) below*** Once you have the right three\-letter code, you are still not done. Unicode (and BCP 47\) uses the 2 letter ISO code if it exists. Unicode also uses the "macro language" where suitable. *So* @@ -38,7 +38,7 @@ Once you have the right three\-letter code, you are still not done. Unicode (and ## Choosing Script/Territory Subtags -If you need a particular variant of a language, then you'll add additional subtags, typically script or territory. Consult [Sample Subtags](http://unicode.org/cldr/utility/sample_subtags.html) for the most common choices. ***Again, review*** [***Caution!***](https://cldr.unicode.org/index/cldr-spec/picking-the-right-language-code) ***below.*** +If you need a particular variant of a language, then you'll add additional subtags, typically script or territory. Consult [Sample Subtags](http://unicode.org/cldr/utility/sample_subtags.html) for the most common choices. ***Again, review*** [***Caution!***](/index/cldr-spec/picking-the-right-language-code) ***below.*** ## Verifying Your Choice @@ -46,7 +46,7 @@ If you need a particular variant of a language, then you'll add additional subta 2. You need to fix the identifier and try again in *any* if the demo shows any of the following: 1. the language identifer is illegal, or 2. one of the subtags is invalid, or - 3. there are any replacement values. [\*\*](https://cldr.unicode.org/index/cldr-spec/picking-the-right-language-code) + 3. there are any replacement values. [\*\*](/index/cldr-spec/picking-the-right-language-code) ## Documenting Your Choice @@ -76,7 +76,7 @@ For compatibility, it is strongly recommended that all implementations accept bo ### Macrolanguages -ISO (and hence BCP 47\) has the notion of an individual language (like en \= English) versus a Collection or Macrolanguage. For compatibility, Unicode language and locale identifiers always use the Macrolanguage to identify the predominant form. Thus the Macrolanguage subtag "zh" (Chinese) is used instead of "cmn" (Mandarin). Similarly, suppose that you are looking for Kurdish written in Latin letters, as in Turkey. It is a mistake to think that because that is in the north, that you should use the subtag 'kmr' for Northern Kurdish. You should instead use [ku\-Latn\-TR](http://ku-latn/). See also: [ISO 636 Deprecation Requests](https://cldr.unicode.org/development/development-process/design-proposals/iso-636-deprecation-requests-draft). +ISO (and hence BCP 47\) has the notion of an individual language (like en \= English) versus a Collection or Macrolanguage. For compatibility, Unicode language and locale identifiers always use the Macrolanguage to identify the predominant form. Thus the Macrolanguage subtag "zh" (Chinese) is used instead of "cmn" (Mandarin). Similarly, suppose that you are looking for Kurdish written in Latin letters, as in Turkey. It is a mistake to think that because that is in the north, that you should use the subtag 'kmr' for Northern Kurdish. You should instead use [ku\-Latn\-TR](http://ku-latn/). See also: [ISO 636 Deprecation Requests](/development/development-process/design-proposals/iso-636-deprecation-requests-draft). Unicode language identifiers do not allow the "extlang" form defined in BCP 47\. For example, use "yue" instead of "zh\-yue" for Cantonese. diff --git a/docs/site/index/cldr-spec/plural-rules.md b/docs/site/index/cldr-spec/plural-rules.md index 99c8ed7ac50..49d447ea602 100644 --- a/docs/site/index/cldr-spec/plural-rules.md +++ b/docs/site/index/cldr-spec/plural-rules.md @@ -13,13 +13,13 @@ Languages vary in how they handle plurals of nouns or unit expressions ("hour" v - many (also used for fractions if they have a separate class) - other (required—general plural form—also used if the language only has a single form) -*See [Language Plural Rules](https://www.unicode.org/cldr/charts/45/supplemental/language_plural_rules.html) for the categories for each language in CLDR.* +*See [Language Plural Rules](https://www.unicode.org/cldr/charts/latest/supplemental/language_plural_rules.html) for the categories for each language in CLDR.* These categories are used to provide localized units, with a more natural ways of expressing phrases that vary in plural form, such as "1 hour" vs "2 hours". While they cannot express all the intricacies of natural languages, they allow for more natural phrasing than constructions like "1 hour(s)". ## Reporting Defects -When you find errors or omissions in this data, please report the information with a [bug report](https://cldr.unicode.org/index/bug-reports#TOC-Filing-a-Ticket). Please give examples of how the forms may differ. You don't have to give the exact rules, but it is extremely helpful! Here's an example:   +When you find errors or omissions in this data, please report the information by [filing a ticket](/requesting_changes#how-to-file-a-ticket). Please give examples of how the forms may differ. You don't have to give the exact rules, but it is extremely helpful! Here's an example:   **Sample Bug Report** @@ -57,7 +57,7 @@ The categories are verified by looking a minimal pairs: where a change in numeri Warning for Vetters -The Category (Code) values indicate a certain range of numbers that differ between languages. To see the meaning of each Code value for your language see [Language Plural Rules](https://www.unicode.org/cldr/charts/45/supplemental/language_plural_rules.html) chart. +The Category (Code) values indicate a certain range of numbers that differ between languages. To see the meaning of each Code value for your language see [Language Plural Rules](https://www.unicode.org/cldr/charts/latest/supplemental/language_plural_rules.html) chart. *The minimal pairs in the Survey Tool are not direct translations of English*. They *may* be translations of English, such as in [German](https://st.unicode.org/cldr-apps/v#/de/MinimalPairs/), but must be different if those words or terms do not show the right plural differences for your language. For example, if we look at [Belarusian](https://st.unicode.org/cldr-apps/v#/be/MinimalPairs/), they are quite different, corresponding to “{0} books in {0} days”, while [Welsh](https://st.unicode.org/cldr-apps/v#/cy/MinimalPairs/43b7793f1f673abe) has the equivalent of “{0} dog, {0} cat”. *Be sure to read the following examples carefully and pay attention to error messages.* @@ -172,7 +172,7 @@ In some sense, the names for the categories are somewhat arbitrary. Yet for cons - If there needs to be a category for items only have fractional values, use '**many**' 8. If there are more categories needed for the language, describe what those categories need to cover in the bug report. -See [*Language Plural Rules*](http://www.unicode.org/cldr/data/charts/supplemental/language_plural_rules.html) for examples of rules, such as for [Czech](https://www.unicode.org/cldr/charts/45/supplemental/language_plural_rules.html#cs), and for [comparisons of values](https://www.unicode.org/cldr/charts/45/supplemental/language_plural_rules.html#cs-comp). Note that in the integer comparison chart, most languages have 'x' (other—gray) for most integers. There are some exceptions (Russian and Arabic, for example), where the categories of 'many' and 'other' should have been swapped when they were defined, but are too late now to change. +See [*Language Plural Rules*](https://www.unicode.org/cldr/charts/latest/supplemental/language_plural_rules.html) for examples of rules, such as for [Czech](https://www.unicode.org/cldr/charts/latest/supplemental/language_plural_rules.html#cs), and for [comparisons of values](https://www.unicode.org/cldr/charts/latest/supplemental/language_plural_rules.html#cs-comp). Note that in the integer comparison chart, most languages have 'x' (other—gray) for most integers. There are some exceptions (Russian and Arabic, for example), where the categories of 'many' and 'other' should have been swapped when they were defined, but are too late now to change. ## Important Notes @@ -188,11 +188,11 @@ If you were to substitute a different number for "1" in a sentence or phrase, wo ## Plural Rule Syntax -See [LDML Language Plural Rules](http://unicode.org/reports/tr35/tr35-numbers.html#Language_Plural_Rules). +See [LDML Language Plural Rules](https://unicode.org/reports/tr35/tr35-numbers.html#Language_Plural_Rules). ## Plural Message Migration -The plural categories are used not only within CLDR, but also for localizing messages for different products. When the plural rules change (such as in [CLDR 24](https://cldr.unicode.org/index/downloads/cldr-24-release-note)), the following issues should be considered. Fractional support in plurals is new in CLDR 24\. Because the fractions didn't work before, the changes in categories from 23 to 24 should not cause an issue for implementations. The other changes can be categorized as Splitting or Merging categories. +The plural categories are used not only within CLDR, but also for localizing messages for different products. When the plural rules change (such as in [CLDR 24](/index/downloads/cldr-24-release-note)), the following issues should be considered. Fractional support in plurals is new in CLDR 24\. Because the fractions didn't work before, the changes in categories from 23 to 24 should not cause an issue for implementations. The other changes can be categorized as Splitting or Merging categories. There are some more complicated cases, but the following outlines the main issues to watch for, using examples. For illustration, assume a language uses "" for singular, "u" for dual, and "s" for other.​ ​ diff --git a/docs/site/index/corrigenda.md b/docs/site/index/corrigenda.md index 8feabe5dc5c..0b404fbf9fd 100644 --- a/docs/site/index/corrigenda.md +++ b/docs/site/index/corrigenda.md @@ -4,7 +4,7 @@ title: Corrigenda and Errata # Corrigenda and Errata -The Corrigenda and Errata are found on the corresponding release pages. Issues that can cause significant problems are considered corrigenda, and are listed on the corresponding release page. Problems that do not rise to the level of a corrigendum are considered errata, and are listed on the corresponding release page without being listed here. For example, errata for CLDR 1.9 may be found on [CLDR Release 1.9, Errata](https://cldr.unicode.org/index/downloads/cldr-1-9-release-note). +The Corrigenda and Errata are found on the corresponding release pages. Issues that can cause significant problems are considered corrigenda, and are listed on the corresponding release page. Problems that do not rise to the level of a corrigendum are considered errata, and are listed on the corresponding release page without being listed here. For example, errata for CLDR 1.9 may be found on [CLDR Release 1.9, Errata](/index/downloads/cldr-1-9-release-note). At this time, there is only one Corrigendum: diff --git a/docs/site/index/downloads.md b/docs/site/index/downloads.md index 6041991cd83..1972e689013 100644 --- a/docs/site/index/downloads.md +++ b/docs/site/index/downloads.md @@ -4,81 +4,81 @@ title: CLDR Releases/Downloads # CLDR Releases/Downloads -*Each release of the Unicode CLDR is a stable release and may be used as reference material or cited as a normative reference by other specifications. Each version, once published, is absolutely stable and will never change. Implementations may also apply [CLDR Corrigenda](https://cldr.unicode.org/index/corrigenda) to a release. Bug reports and feature requests for subsequent versions may be filed at [Bug Reports](https://cldr.unicode.org/index/bug-reports).* +*Each release of the Unicode CLDR is a stable release and may be used as reference material or cited as a normative reference by other specifications. Each version, once published, is absolutely stable and will never change. Implementations may also apply [CLDR Corrigenda](/index/corrigenda) to a release. Bug reports and feature requests for subsequent versions may be filed at [Bug Reports](/index/bug-reports).* ## Downloads -The following table lists the files for each released version. For license information, see the Unicode [Terms of Use](http://unicode.org/copyright.html); in particular, [Exhibit 1](http://unicode.org/copyright.html#Exhibit1). The top two rows have permalinks for the latest version and the latest development version (snapshot). They are followed by the specific release versions. See Key to Header Links below chart. - +The following table lists the files for each released version. For license information, see the Unicode [Terms of Use](https://unicode.org/copyright.html); in particular, [Exhibit 1](https://unicode.org/copyright.html#Exhibit1). The top two rows have permalinks for the latest version and the latest development version (snapshot). They are followed by the specific release versions. See Key to Header Links below chart. | No. | Date | Rel. Note | Data | Charts | Spec | Delta Tickets | GitHub Tag | Delta DTD | |---|---|---|---|---|---|---|---|---| -| Latest | | [latest-version](https://cldr.unicode.org/index/downloads/latest) | [latest-data](https://unicode.org/Public/cldr/45/) | [latest-charts](https://www.unicode.org/cldr/charts/45/index.html) | [latest-ldml](https://www.unicode.org/reports/tr35/) | [latest-tickets](https://unicode-org.atlassian.net/issues/?jql=project%20%3D%20CLDR%20AND%20status%20%3D%20Done%20AND%20resolution%20%3D%20Fixed%20AND%20fixVersion%20%3D%20%2245%22%20ORDER%20BY%20created%20ASC) | [release-45](https://github.com/unicode-org/cldr/tree/release-45) | [latest-delta-dtd](https://www.unicode.org/cldr/charts/45/supplemental/dtd_deltas.html) | -| Dev | | [dev-version](https://cldr.unicode.org/index/downloads/dev) | | [dev-charts](http://unicode.org/cldr/charts/dev) | [dev-ldml](http://www.unicode.org/reports/tr35/proposed.html) | [dev-tickets](https://unicode-org.atlassian.net/issues/?jql=project%20%3D%20CLDR%20AND%20status%20%3D%20Done%20AND%20resolution%20%3D%20Fixed%20AND%20fixVersion%20%3D%20%2246%22%20ORDER%20BY%20created%20ASC) | [main](https://github.com/unicode-org/cldr.git) | [dev-delta-dtd](https://www.unicode.org/cldr/charts/dev/supplemental/dtd_deltas.html) | -| 45 | 2024-04-17 | [v45](http://cldr.unicode.org/index/downloads/cldr-45) | [CLDR45](http://unicode.org/Public/cldr/45/) | [Charts45](https://unicode.org/cldr/charts/45/) | [LDML45](https://www.unicode.org/reports/tr35/tr35-72/tr35.html) | [Δ45](https://unicode-org.atlassian.net/issues/?jql=project%20%3D%20CLDR%20AND%20status%20%3D%20Done%20AND%20resolution%20%3D%20Fixed%20AND%20fixVersion%20%3D%20%2245%22%20ORDER%20BY%20component%20ASC%2C%20priority%20DESC%2C%20created%20ASC) | [release-45](https://github.com/unicode-org/cldr/tree/release-45) | [ΔDtd45](https://unicode.org/cldr/charts/45/supplemental/dtd_deltas.html) | -| 44.1 | 2023-12-13 | [v44.1](http://cldr.unicode.org/index/downloads/cldr-44#h.nvqx283jwsx) | n/a | n/a | [LDML44.1](https://www.unicode.org/reports/tr35/tr35-71/tr35.html) | [Δ44.1](https://unicode-org.atlassian.net/issues/?jql=project%20%3D%20CLDR%20AND%20status%20%3D%20Done%20AND%20resolution%20%3D%20Fixed%20AND%20fixVersion%20%3D%20%2244%2E1%22%20ORDER%20BY%20component%20ASC%2C%20priority%20DESC%2C%20created%20ASC) | [release-44-1](https://github.com/unicode-org/cldr/tree/release-44-1) | See [44.1 Changes](http://cldr.unicode.org/index/downloads/cldr-44#h.nvqx283jwsx) | -| 44 | 2023-10-31 | [v44](http://cldr.unicode.org/index/downloads/cldr-44) | [CLDR44](http://unicode.org/Public/cldr/44/) | [Charts44](https://unicode.org/cldr/charts/44/) | [LDML44](https://www.unicode.org/reports/tr35/tr35-70/tr35.html) | [Δ44](https://unicode-org.atlassian.net/issues/?jql=project%20%3D%20CLDR%20AND%20status%20%3D%20Done%20AND%20resolution%20%3D%20Fixed%20AND%20fixVersion%20%3D%20%2244%22%20ORDER%20BY%20component%20ASC%2C%20priority%20DESC%2C%20created%20ASC) | [release-44](https://github.com/unicode-org/cldr/tree/release-44) | [ΔDtd44](https://unicode.org/cldr/charts/44/supplemental/dtd_deltas.html) | -| 43.1 | 2023-06-15 | [v43.1](https://cldr.unicode.org/index/downloads/cldr-43#h.qobmda543waj) | n/a | n/a | [LDML43.1](https://www.unicode.org/reports/tr35/tr35-69/tr35.html) | [Δ43.1](https://unicode-org.atlassian.net/issues/?jql=project%20%3D%20CLDR%20AND%20status%20%3D%20Done%20AND%20resolution%20%3D%20Fixed%20AND%20fixVersion%20%3D%20%2243%2E1%22%20ORDER%20BY%20component%20ASC%2C%20priority%20DESC%2C%20created%20ASC) | [release-43-1](https://github.com/unicode-org/cldr/tree/release-43-1) | See [43.1 Changes](https://cldr.unicode.org/index/downloads/cldr-43#h.qobmda543waj) | -| 43 | 2023-04-12 | [v43](http://cldr.unicode.org/index/downloads/cldr-43) | [CLDR43](http://unicode.org/Public/cldr/43/) | [Charts43](https://www.unicode.org/cldr/charts/43/) | [LDML43](https://www.unicode.org/reports/tr35/tr35-68/tr35.html) | [Δ43](https://unicode-org.atlassian.net/issues/?jql=project%20%3D%20CLDR%20AND%20status%20%3D%20Done%20AND%20resolution%20in%20(Fixed%2C%20%22Fix%20in%20Survey%20Tool%20(CLDR)%22%2C%20%22Fixed%20non-repo%22)%20AND%20fixVersion%20%3D%20%2243%22%20ORDER%20BY%20resolution%20ASC%2C%20component%20ASC%2C%20priority%20DESC%2C%20created%20ASC) | [release-43](https://github.com/unicode-org/cldr/tree/release-43) | [ΔDtd43](https://www.unicode.org/cldr/charts/43/supplemental/dtd_deltas.html) | -| 42 | 2022-10-19 | [v42](http://cldr.unicode.org/index/downloads/cldr-42) | [CLDR42](http://unicode.org/Public/cldr/42/) | [Charts42](https://www.unicode.org/cldr/charts/42/) | [LDML42](https://www.unicode.org/reports/tr35/tr35-67/tr35.html) | [Δ42](https://unicode-org.atlassian.net/issues/?jql=project%20%3D%20CLDR%20AND%20status%20%3D%20Done%20AND%20resolution%20in%20(Fixed%2C%20%22Fix%20in%20Survey%20Tool%20(CLDR)%22%2C%20%22Fixed%20non-repo%22)%20AND%20fixVersion%20%3D%20%2242%22%20ORDER%20BY%20resolution%20ASC%2C%20component%20ASC%2C%20priority%20DESC%2C%20created%20ASC) | [release-42](https://github.com/unicode-org/cldr/tree/release-42) | [ΔDtd42](https://www.unicode.org/cldr/charts/42/supplemental/dtd_deltas.html) | -| 41 | 2022-04-06 | [v41](http://cldr.unicode.org/index/downloads/cldr-41) | [CLDR41](http://unicode.org/Public/cldr/41/) | [Charts41](https://www.unicode.org/cldr/charts/41/) | [LDML41](https://www.unicode.org/reports/tr35/tr35-66/tr35.html) | [Δ41](https://unicode-org.atlassian.net/issues/?jql=project%20%3D%20CLDR%20AND%20status%20%3D%20Done%20AND%20resolution%20%3D%20Fixed%20AND%20fixVersion%20%3D%20%2241%22%20ORDER%20BY%20component%20ASC%2C%20priority%20DESC%2C%20created%20ASC) | [release-41](https://github.com/unicode-org/cldr/tree/release-41) | [ΔDtd41](https://www.unicode.org/cldr/charts/41/supplemental/dtd_deltas.html) | -| 40 | 2021-10-27 | [v40](http://cldr.unicode.org/index/downloads/cldr-40) | [CLDR40](http://unicode.org/Public/cldr/40/) | [Charts40](https://www.unicode.org/cldr/charts/40/) | [LDML40](https://www.unicode.org/reports/tr35/tr35-65/tr35.html) | [Δ40](https://unicode-org.atlassian.net/issues/?jql=project%20%3D%20CLDR%20AND%20status%20%3D%20Done%20AND%20resolution%20%3D%20Fixed%20AND%20fixVersion%20%3D%20%2240%22%20ORDER%20BY%20component%20ASC%2C%20priority%20DESC%2C%20created%20ASC) | [release-40](https://github.com/unicode-org/cldr/tree/release-40) | [ΔDtd40](https://www.unicode.org/cldr/charts/40/supplemental/dtd_deltas.html) | -| 39 | 2021-04-07 | [v39](http://cldr.unicode.org/index/downloads/cldr-39) | [CLDR39](http://unicode.org/Public/cldr/39/) | [Charts39](https://www.unicode.org/cldr/charts/39/) | [LDML39](https://www.unicode.org/reports/tr35/tr35-63/tr35.html) | [Δ39](https://unicode-org.atlassian.net/issues/?jql=project%20%3D%20CLDR%20AND%20status%20%3D%20Done%20AND%20resolution%20%3D%20Fixed%20AND%20fixVersion%20%3D%20%2239%22%20ORDER%20BY%20component%20ASC%2C%20priority%20DESC%2C%20created%20ASC) | [release-39](https://github.com/unicode-org/cldr/tree/release-39) | [ΔDtd39](https://www.unicode.org/cldr/charts/39/supplemental/dtd_deltas.html) | -| 38.1 | 2020-12-17 | [v38.1](http://cldr.unicode.org/index/downloads/cldr-38?pli=1#TOC-CLDR-38.1) | [CLDR38.1](http://unicode.org/Public/cldr/38.1) | [Charts38.1](https://www.unicode.org/cldr/charts/38.1/index.html) | [LDML38](https://www.unicode.org/reports/tr35/tr35-61/tr35.html) | [Δ38.1](https://unicode-org.atlassian.net/issues/?jql=project%20%3D%20CLDR%20AND%20status%20%3D%20Done%20AND%20resolution%20%3D%20Fixed%20AND%20fixVersion%20%3D%20%2238%2E1%22%20ORDER%20BY%20component%20ASC%2C%20priority%20DESC%2C%20created%20ASC) | [release-38-1](https://github.com/unicode-org/cldr/tree/release-38-1) | [ΔDtd38.1](https://www.unicode.org/cldr/charts/38.1/supplemental/dtd_deltas.html) | -| 38 | 2020-10-28 | [v38](http://cldr.unicode.org/index/downloads/cldr-38) | [CLDR38](http://unicode.org/Public/cldr/38/) | [Charts38](https://www.unicode.org/cldr/charts/38/) | [LDML38](https://www.unicode.org/reports/tr35/tr35-61/tr35.html) | [Δ38](https://unicode-org.atlassian.net/issues/?jql=project%20%3D%20CLDR%20AND%20status%20%3D%20Done%20AND%20resolution%20%3D%20Fixed%20AND%20fixVersion%20%3D%20%2238%22%20ORDER%20BY%20component%20ASC%2C%20priority%20DESC%2C%20created%20ASC) | [release-38](https://github.com/unicode-org/cldr/tree/release-38) | [ΔDtd38](https://www.unicode.org/cldr/charts/38/supplemental/dtd_deltas.html) | -| 37 | 2020-04-23 | [v37](http://cldr.unicode.org/index/downloads/cldr-37) | [CLDR37](http://unicode.org/Public/cldr/37/) | [Charts37](https://www.unicode.org/cldr/charts/37/) | [LDML37](https://www.unicode.org/reports/tr35/tr35-59/tr35.html) | [Δ37](https://unicode-org.atlassian.net/issues/?jql=project%20%3D%20CLDR%20AND%20status%20%3D%20Done%20AND%20resolution%20%3D%20Fixed%20AND%20fixVersion%20%3D%20%2237%22%20ORDER%20BY%20component%20ASC%2C%20priority%20DESC%2C%20created%20ASC) | [release-37](https://github.com/unicode-org/cldr/tree/release-37) | [ΔDtd37](https://www.unicode.org/cldr/charts/37/supplemental/dtd_deltas.html) | -| 36.1 | 2020-03-11 | v36.1 | [CLDR36.1](http://unicode.org/Public/cldr/36.1/) | [Charts36.1](http://www.unicode.org/cldr/charts/36.1/) | [LDML36](https://www.unicode.org/reports/tr35/tr35-57/tr35.html) | [Δ36.1](https://unicode-org.atlassian.net/issues/?jql=project%20%3D%20CLDR%20AND%20fixVersion%20%3D%20%2236.1%22%20ORDER%20BY%20component%20ASC%2C%20priority%20DESC%2C%20created%20ASC) | [release-36-1](https://github.com/unicode-org/cldr/tree/release-36-1) | [ΔDtd36.1](http://www.unicode.org/cldr/charts/36.1/supplemental/dtd_deltas.html) | -| 36 | 2019-10-04 | [v36](http://cldr.unicode.org/index/downloads/cldr-36) | [CLDR36](http://unicode.org/Public/cldr/36/) | [Charts36](http://www.unicode.org/cldr/charts/36/) | [LDML36](https://www.unicode.org/reports/tr35/tr35-57/tr35.html) | [Δ36](https://unicode-org.atlassian.net/issues/?jql=project%20%3D%20CLDR%20AND%20status%20%3D%20Done%20AND%20resolution%20%3D%20Fixed%20AND%20fixVersion%20%3D%20%2236%22%20ORDER%20BY%20created%20ASC) | [release-36](https://github.com/unicode-org/cldr/tree/release-36) | [ΔDtd36](http://www.unicode.org/cldr/charts/36/supplemental/dtd_deltas.html) | -| 35.1 | 2019-04-17 | [v35.1](http://cldr.unicode.org/index/downloads/cldr-35?pli=1#TOC-V35.1) | [CLDR35.1](http://unicode.org/Public/cldr/35.1/) | [Charts35.1](http://www.unicode.org/cldr/charts/35/) | [LDML35](https://www.unicode.org/reports/tr35/tr35-55/tr35.html) | [Δ35.1](https://unicode-org.atlassian.net/issues/?jql=project%20%3D%20CLDR%20AND%20status%20%3D%20Done%20AND%20fixVersion%20%3D%2035.1%20ORDER%20BY%20created%20ASC) | [release-35-1](https://github.com/unicode-org/cldr/tree/release-35-1) | [ΔDtd35](http://www.unicode.org/cldr/charts/35/supplemental/dtd_deltas.html) | -| 35 | 2019-03-27 | [v35](http://cldr.unicode.org/index/downloads/cldr-35) | [CLDR35](http://unicode.org/Public/cldr/35/) | [Charts35.1](http://www.unicode.org/cldr/charts/35/) | [LDML35](https://www.unicode.org/reports/tr35/tr35-55/tr35.html) | [Δ35](https://unicode-org.atlassian.net/issues/?jql=project%20%3D%20CLDR%20AND%20status%20%3D%20Done%20AND%20fixVersion%20%3D%20%2235%22%20ORDER%20BY%20created%20ASC) | [release-35](https://github.com/unicode-org/cldr/tree/release-35) | [ΔDtd35](http://www.unicode.org/cldr/charts/35/supplemental/dtd_deltas.html) | -| 34 | 2018-10-15 | [v34](http://cldr.unicode.org/index/downloads/cldr-34) | [CLDR34](http://unicode.org/Public/cldr/34/) | [Charts34](http://www.unicode.org/cldr/charts/34/) | [LDML34](http://www.unicode.org/reports/tr35/tr35-53/tr35.html) | [~~Δ34~~](http://unicode.org/cldr/trac/query?resolution=fixed&milestone=34&group=component&max=999) | [release-34](http://www.unicode.org/repos/cldr/tags/release-34) | [ΔDtd34](http://www.unicode.org/cldr/charts/34/supplemental/dtd_deltas.html) | -| 33.1 | 2018-06-20 | [v33.1](http://cldr.unicode.org/index/downloads/cldr-33-1) | [CLDR33.1](http://unicode.org/Public/cldr/33.1/) | [Charts34*](http://www.unicode.org/cldr/charts/34/) | [LDML33*](http://www.unicode.org/reports/tr35/tr35-51/tr35.html) | [~~Δ33.1~~](http://unicode.org/cldr/trac/query?resolution=fixed&milestone=33.1&group=component&max=999) | [release-33-1](http://www.unicode.org/repos/cldr/tags/release-33-1/) | [ΔDtd33](http://www.unicode.org/cldr/charts/33/supplemental/dtd_deltas.html) [*](http://unicode.org/cldr/trac/changeset?reponame=&new=HEAD@tags/release-33/common/dtd&old=HEAD@tags/release-33-1/common/dtd) | -| 33 | 2018-03-26 | [v33](http://cldr.unicode.org/index/downloads/cldr-33) | [CLDR33](http://unicode.org/Public/cldr/33/) | [Charts33](http://www.unicode.org/cldr/charts/33/) | [LDML33](http://www.unicode.org/reports/tr35/tr35-51/tr35.html) | [~~Δ33~~](http://unicode.org/cldr/trac/query?resolution=fixed&milestone=33&group=component&max=999) | [release-33](http://www.unicode.org/repos/cldr/tags/release-33/) | [ΔDtd33](http://www.unicode.org/cldr/charts/33/supplemental/dtd_deltas.html) | -| 32.0.1 | 2017-12-08 | [v32](http://cldr.unicode.org/index/downloads/cldr-32) | [CLDR32.0.1](http://unicode.org/Public/cldr/32.0.1/) | [Charts32](http://www.unicode.org/cldr/charts/32/) | [LDML32](http://www.unicode.org/reports/tr35/tr35-49/tr35.html) | [~~Δ32.0.1~~](http://unicode.org/cldr/trac/query?resolution=fixed&milestone=32.0.1&group=component&max=999) | [release-32-0-1](http://www.unicode.org/repos/cldr/tags/release-32-0-1/) | [ΔDtd32](http://www.unicode.org/cldr/charts/32/supplemental/dtd_deltas.html) | -| 32 | 2017-11-01 | [v32](http://cldr.unicode.org/index/downloads/cldr-32) | [CLDR32](http://unicode.org/Public/cldr/32/) | [Charts32](http://www.unicode.org/cldr/charts/32/) | [LDML32](http://www.unicode.org/reports/tr35/tr35-49/tr35.html) | [~~Δ32~~](http://unicode.org/cldr/trac/query?resolution=fixed&milestone=32&group=component&max=999) | [release-32](http://www.unicode.org/repos/cldr/tags/release-32/) | [ΔDtd32](http://www.unicode.org/cldr/charts/32/supplemental/dtd_deltas.html) | -| 31.0.1 | 2017-04-07 | [v31](http://cldr.unicode.org/index/downloads/cldr-31) | [CLDR31.0.1](http://www.unicode.org/Public/cldr/31.0.1/) | [Charts31](http://www.unicode.org/cldr/charts/31/) | [LDML31](http://www.unicode.org/reports/tr35/tr35-47/tr35.html) | [~~Δ31.0.1~~](http://unicode.org/cldr/trac/query?resolution=fixed&milestone=31&milestone=31.0.1&group=component&max=999&col=id&col=summary&col=owner&col=type&col=status&col=priority&col=time&order=priority) | [release-31-0-1](http://www.unicode.org/repos/cldr/tags/release-31-0-1/) | | -| 31 | 2017-03-20 | [v31](http://cldr.unicode.org/index/downloads/cldr-31) | [CLDR31](http://unicode.org/Public/cldr/31/) | [Charts31](http://www.unicode.org/cldr/charts/31/) | [LDML31](http://www.unicode.org/reports/tr35/tr35-47/tr35.html) | [~~Δ31~~](http://unicode.org/cldr/trac/query?resolution=fixed&milestone=31&group=component&max=999) | [release-31](http://www.unicode.org/repos/cldr/tags/release-31/) | | -| 30.0.3 | 2016-12-02 | v30 | [CLDR30.0.3](http://unicode.org/Public/cldr/30.0.3/) | [Charts30](http://www.unicode.org/cldr/charts/30/) | [LDML30](http://www.unicode.org/reports/tr35/tr35-45/tr35.html) | [~~Δ30.0.3~~](http://unicode.org/cldr/trac/query?status=closed&status=reviewing&revw=!&milestone=30.0.3&group=component&max=999&col=id&col=summary&order=priority) | [release-30-0-3](http://unicode.org/cldr/trac/browser/tags/release-30-0-3) | | -| 30.0.2 | 2016-10-17 | v30 | [CLDR30.0.2](http://unicode.org/Public/cldr/30.0.2/) | [Charts30](http://www.unicode.org/cldr/charts/30/) | [LDML30](http://www.unicode.org/reports/tr35/tr35-45/tr35.html) | [~~Δ30.0.2~~](http://unicode.org/cldr/trac/query?status=closed&status=reviewing&revw=!&milestone=30.0.2&group=component&max=999&col=id&col=summary&order=priority) | [release-30-0-2](http://unicode.org/cldr/trac/browser/tags/release-30-0-2) | | -| 30.0.1 | 2016-10-14 | v30 | [CLDR30.0.1](http://unicode.org/Public/cldr/30.0.1/) | [Charts30](http://www.unicode.org/cldr/charts/30/) | [LDML30](http://www.unicode.org/reports/tr35/tr35-45/tr35.html) | [~~Δ30.0.1~~](http://unicode.org/cldr/trac/query?status=closed&status=reviewing&revw=!&milestone=30.0.1&group=component&max=999&col=id&col=summary&order=priority) | [release-30-0-1](http://unicode.org/cldr/trac/browser/tags/release-30-0-1) | | -| 30 | 2016-10-05 | v30 | [CLDR30](http://unicode.org/Public/cldr/30/) | [Charts30](http://www.unicode.org/cldr/charts/30/) | [LDML30](http://www.unicode.org/reports/tr35/tr35-45/tr35.html) | [~~Δ30~~](http://unicode.org/cldr/trac/query?status=closed&status=reviewing&resolution=fixed&milestone=30&group=component&max=999&col=id&col=summary) | [release-30](http://unicode.org/cldr/trac/browser/tags/release-30) | | -| 29 | 2016-03-16 | v29 | [CLDR29](http://unicode.org/Public/cldr/29/) | [Charts29](http://www.unicode.org/cldr/charts/29/) | [LDML29](http://www.unicode.org/reports/tr35/tr35-43/tr35.html) | [~~Δ29~~](http://unicode.org/cldr/trac/query?status=closed&status=reviewing&resolution=fixed&milestone=29&group=component&max=999&col=id&col=summary) | [release-29](http://unicode.org/cldr/trac/browser/tags/release-29) | | -| 28 | 2015-09-17 | v28 | [CLDR28](http://unicode.org/Public/cldr/28/) | [Charts28](http://www.unicode.org/cldr/charts/28/) | [LDML28](http://www.unicode.org/reports/tr35/tr35-41/tr35.html) | [~~Δ28~~](http://unicode.org/cldr/trac/query?status=closed&status=reviewing&resolution=fixed&milestone=28&group=component&max=999&col=id&col=summary) | [release-28](http://unicode.org/cldr/trac/browser/tags/release-28) | | -| 27-0-1 | 2015-03-30 | v27 | [CLDR27.0.1](http://unicode.org/Public/cldr/27.0.1/) | [Charts27](http://www.unicode.org/cldr/charts/27/) | [LDML27](http://www.unicode.org/reports/tr35/tr35-39/tr35.html) | [~~Δ27.0.1~~](http://unicode.org/cldr/trac/query?status=closed&status=reviewing&resolution=fixed&milestone=27.0.1&group=component&max=999&col=id&col=summary) | [release-27-0-1](http://unicode.org/cldr/trac/browser/tags/release-27-0-1) | | -| 27 | 2015-03-19 | v27 | [CLDR27](http://unicode.org/Public/cldr/27/) | [Charts27](http://www.unicode.org/cldr/charts/27/) | [LDML27](http://www.unicode.org/reports/tr35/tr35-39/tr35.html) | [~~Δ27~~](http://unicode.org/cldr/trac/query?status=closed&status=reviewing&resolution=fixed&milestone=27&group=component&max=999&col=id&col=summary) | [release-27](http://unicode.org/cldr/trac/browser/tags/release-27) | | -| 26.0.1 | 2014-12-04 | v26.0.1 | [CLDR26.0.1](http://unicode.org/Public/cldr/26.0.1/) | [Charts26](https://www.unicode.org/cldr/charts/26/index.html) | [LDML26](http://www.unicode.org/reports/tr35/tr35-37/tr35.html) | ~~n/a~~ | [release-26-0-1](http://unicode.org/cldr/trac/browser/tags/release-26-0-1) | | -| 26 | 2014-09-18 | v26 | [CLDR26](http://unicode.org/Public/cldr/26/) | [Charts26](https://www.unicode.org/cldr/charts/26/index.html) | [LDML26](http://www.unicode.org/reports/tr35/tr35-37/tr35.html) | [~~Δ26~~](http://unicode.org/cldr/trac/query?status=closed&status=reviewing&resolution=fixed&milestone=26&group=component&max=999&col=id&col=summary) | [release-26](http://unicode.org/cldr/trac/browser/tags/release-26) | | -| 25 | 2014-03-19 | v25 | [CLDR25](http://unicode.org/Public/cldr/25/) | [Charts25](https://www.unicode.org/cldr/charts/25/index.html) | [LDML25](http://www.unicode.org/reports/tr35/tr35-35/tr35.html) | [~~Δ25~~](http://unicode.org/cldr/trac/query?status=closed&milestone=25dsub&milestone=25design&milestone=25M1&milestone=25rc&milestone=25final&max=900) | [release-25](http://unicode.org/cldr/trac/browser/tags/release-25) | | -| 24 | 2013-09-18 | v24 | [CLDR24](http://unicode.org/Public/cldr/24/) | [Charts24](https://www.unicode.org/cldr/charts/24/index.html) | [LDML24](http://www.unicode.org/reports/tr35/tr35-33/tr35.html) | [~~Δ24~~](http://unicode.org/cldr/trac/query?status=closed&resolution=fixed&resolution=duplicate&resolution=as-designed&resolution=moot&resolution=fix-in-surveytool&milestone=24dsub&milestone=24dsub2&milestone=24dvet&milestone=24rc&milestone=24final&max=900) | [release-24](http://unicode.org/cldr/trac/browser/tags/release-24) | | -| 23.1 | 2013-05-15 | v23.1 | [CLDR23.1](http://unicode.org/Public/cldr/23.1/) | [Charts23.1](https://www.unicode.org/cldr/charts/23.1/index.html) | [LDML23](http://www.unicode.org/reports/tr35/tr35-31/tr35.html) | [~~Δ23.1~~](http://unicode.org/cldr/trac/query?status=closed&milestone=23.1) | [release-23-1](http://unicode.org/cldr/trac/browser/tags/release-23-1) | | -| 23 | 2013-03-15 | v23 | [CLDR23](http://unicode.org/Public/cldr/23/) | [Charts23](https://www.unicode.org/cldr/charts/23/index.html) | [LDML23](http://www.unicode.org/reports/tr35/tr35-31/tr35.html) | [~~Δ23~~](http://unicode.org/cldr/trac/query?max=900&milestone=23dsub&milestone=23dres&milestone=23&order=id&col=id&col=summary&col=milestone&col=type&col=status&col=priority&col=component&revw=!) | [release-23](http://unicode.org/cldr/trac/browser/tags/release-23) | | -| 22.1 | 2012-10-26 | v22.1 | [CLDR22.1](http://unicode.org/Public/cldr/22.1/) | [Charts22.1](https://www.unicode.org/cldr/charts/22.1/index.html) | [LDML22.1](http://www.unicode.org/reports/tr35/tr35-29.html) | [~~Δ22.1~~](http://unicode.org/cldr/trac/query?status=closed&milestone=22.1) | [release-22-1](http://unicode.org/cldr/trac/browser/tags/release-22-1#docs) | | -| 22 | 2012-09-10 | v22 | [CLDR22](http://unicode.org/Public/cldr/22/) | [Charts22](https://www.unicode.org/cldr/charts/22/index.html) | [LDML22](http://www.unicode.org/reports/tr35/tr35-27.html) | [~~Δ22~~](http://unicode.org/cldr/trac/query?max=900&milestone=22dvet&milestone=22dres&milestone=22&milestone=22dsub&order=priority) | [release-22](http://unicode.org/cldr/trac/browser/tags/release-22) | | -| 21.0.2 | 2012-06-06 | v21.0.2 | via SVN | | [LDML21.0.1](http://www.unicode.org/reports/tr35/tr35-25.html) | [~~Δ21.0.2~~](http://unicode.org/cldr/trac/query?milestone=21.0.2) | [release-21-0-2](http://unicode.org/cldr/trac/browser/tags/release-21-0-2) | | -| 21.0.1 | 2012-03-21 | v21.0.1 | via SVN | | [LDML21.0.1](http://www.unicode.org/reports/tr35/tr35-25.html) | [~~Δ21.0.1~~](http://unicode.org/cldr/trac/query?milestone=21.0.1&revw=%21) | [release-21-0-1](http://unicode.org/cldr/trac/browser/tags/release-21-0-1) | | -| 21.0 | 2012-02-10 | v21 | [CLDR21](http://unicode.org/Public/cldr/21/) | | [LDML21](http://www.unicode.org/reports/tr35/tr35-23.html) | [~~Δ21~~](http://unicode.org/cldr/trac/query?status=closed&milestone=21m1&milestone=21m2&milestone=21) | [release-21](http://unicode.org/cldr/trac/browser/tags/release-21) | | -| 2.0.1 | 2011-07-18 | v2.0.1 | [CLDR2.0.1](http://unicode.org/Public/cldr/2.0.1/) | | [LDML2.0.1](http://www.unicode.org/reports/tr35/tr35-21.html) | [~~Δ2.0.1~~](http://unicode.org/cldr/trac/query?status=closed&milestone=2.0.1) | [release-2-0-1](http://unicode.org/cldr/trac/browser/tags/release-2-0-1) | | -| 2.0 | 2011-05-25 | v2.0 | [CLDR2.0](http://unicode.org/Public/cldr/2.0.0/) | | [LDML2.0](http://www.unicode.org/reports/tr35/tr35-19.html) | [~~Δ2.0~~](http://unicode.org/cldr/trac/query?status=closed&milestone=2.0&milestone=2.0m1&milestone=2.0m2) | [release-2-0](http://unicode.org/cldr/trac/browser/tags/release-2-0) | | -| 1.9.1 | 2011-03-11 | [v1.9.1](http://cldr.unicode.org/index/downloads/cldr-1-9-1) | [CLDR1.9.1](http://unicode.org/Public/cldr/1.9.1/) | | [LDML1.9](http://www.unicode.org/reports/tr35/tr35-17.html) | [~~Δ1.9.1~~](http://unicode.org/cldr/trac/query?status=closed&milestone=1.9.1) | release-1-9-1 | | -| 1.9 | 2010-12-01 | v1.9 | [CLDR1.9.0](http://unicode.org/Public/cldr/1.9.0/) | | [LDML1.9](http://www.unicode.org/reports/tr35/tr35-17.html) | [~~Δ1.9~~](http://unicode.org/cldr/trac/query?status=closed&order=priority&milestone=1.9m1&milestone=1.9m2&milestone=1.9RC) | release-1-9 | | -| 1.8.1 | 2010-04-29 | v1.8.1 | [CLDR1.8.1](http://unicode.org/Public/cldr/1.8.1/) | | [LDML1.8.1](http://www.unicode.org/reports/tr35/tr35-16.html) | [~~Δ1.8.1~~](http://unicode.org/cldr/trac/query?status=closed&milestone=1.8.1p1&milestone=1.8.1p2&milestone=1.8.1&milestone=1.8.1o) | release-1-8-1 | | -| 1.8.0 | 2010-03-17 | v1.8.0 | [CLDR1.8.0](http://unicode.org/Public/cldr/1.8.0/) | | [LDML1.8.0](http://www.unicode.org/reports/tr35/tr35-15.html) | [~~Δ1.8.0~~](http://unicode.org/cldr/trac/query?status=closed&milestone=1.8p1&milestone=1.8p2&milestone=1.8&milestone=1.8o) | release-1-8 | | -| 1.7.2 | 2009-12-10 | v1.7.2 | [CLDR1.7.2](http://unicode.org/Public/cldr/1.7.2/) | | [LDML1.7.2](http://www.unicode.org/reports/tr35/tr35-13.html) | [~~Δ1.7.2~~](http://unicode.org/cldr/trac/query?status=closed&milestone=1.7.2) | release-1-7-2 | | -| 1.7.1.2 | 2009-11-11 | v1.7.1 | [via SVN](http://www.unicode.org/repos/cldr/tags/release-1-7-1-2/) | | [LDML1.7](http://www.unicode.org/reports/tr35/tr35-12.html) | [~~Δ1.7.1.2~~](http://unicode.org/cldr/trac/query?status=closed&order=id&col=id&col=summary&milestone=1.7.1&milestone=1.7.1.1&milestone=1.7.1.2) | release-1-7-1-2 | | -| 1.7.1.1 | 2009-10-29 | v1.7.1 | [via SVN](http://www.unicode.org/repos/cldr/tags/release-1-7-1-1/) | | [LDML1.7](http://www.unicode.org/reports/tr35/tr35-12.html) | [~~Δ1.7.1.1~~](http://unicode.org/cldr/trac/query?status=closed&order=id&col=id&col=summary&milestone=1.7.1&milestone=1.7.1.1) | release-1-7-1-1 | | -| 1.7.1 | 2009-06-29 | v1.7.1 | [CLDR1.7.1](http://unicode.org/Public/cldr/1.7.1/) | | [LDML1.7](http://www.unicode.org/reports/tr35/tr35-12.html) | [~~Δ1.7.1~~](http://unicode.org/cldr/trac/query?status=closed&col=id&col=summary&milestone=1.7.1) | release-1-7-1 | | -| 1.7 | 2009-05-08 | v1.7 | [CLDR1.7](http://unicode.org/Public/cldr/1.7.0/) | | [LDML1.7](http://www.unicode.org/reports/tr35/tr35-12.html) | [~~Δ1.7~~](http://unicode.org/cldr/trac/query?status=closed&col=id&col=summary&milestone=1.7) | release-1-7 | | -| 1.6.1 | 2008-07-23 | v1.6.1 | [CLDR1.6.1](http://unicode.org/Public/cldr/1.6.1/) | | [LDML1.6.1](http://www.unicode.org/reports/tr35/tr35-11.html) | [~~Δ1.6.1~~](http://unicode.org/cldr/trac/query?status=closed&col=id&col=summary&milestone=1.6.1) | release-1-6-1 | | -| 1.6 | 2008-07-02 | v1.6 | [CLDR1.6](http://unicode.org/Public/cldr/1.6.0/) | | [LDML1.6](http://www.unicode.org/reports/tr35/tr35-10.html) | [~~Δ1.6~~](http://unicode.org/cldr/trac/query?status=closed&col=id&col=summary&milestone=1.6) | release-1-6 | | -| 1.5.1 | 2007-12-21 | v1.5.1 | [CLDR1.5.1](http://unicode.org/Public/cldr/1.5.1/) | | [LDML1.5.1](http://www.unicode.org/reports/tr35/tr35-9.html) | [~~Δ1.5.1~~](http://unicode.org/cldr/trac/query?status=closed&col=id&col=summary&milestone=1.5.1) | release-1-5-1 | | -| 1.5 | 2007-07-31 | v1.5 | [CLDR1.5](http://unicode.org/Public/cldr/1.5.0/) | | [LDML1.5](http://www.unicode.org/reports/tr35/tr35-8.html) | [~~Δ1.5~~](http://unicode.org/cldr/trac/query?status=closed&col=id&col=summary&milestone=1.5) | release-1-5 | | -| 1.4.1 | 2006-11-03 | v1.4.1 | [CLDR1.4.1](http://unicode.org/Public/cldr/1.4.1/) | | [LDML1.4.1](http://www.unicode.org/reports/tr35/tr35-7.html) | [~~Δ1.4.1~~](http://unicode.org/cldr/trac/query?status=closed&col=id&col=summary&milestone=1.4.1) | release-1-4-1 | | -| 1.4 | 2006-07-17 | v1.4 | [CLDR1.4](http://unicode.org/Public/cldr/1.4.0/) | | [LDML1.4](http://www.unicode.org/reports/tr35/tr35-6.html) | [~~Δ1.4~~](http://unicode.org/cldr/trac/query?status=closed&col=id&col=summary&milestone=1.4) | release-1-4 | | -| 1.3 | 2005-06-02 | v1.3 | [CLDR1.3](http://unicode.org/Public/cldr/1.3.0/) | | [LDML1.3](http://www.unicode.org/reports/tr35/tr35-5.html) | [~~Δ1.3~~](http://unicode.org/cldr/trac/query?status=closed&col=id&col=summary&milestone=1.3) | release-1-3 | | -| 1.2 | 2004-11-04 | v1.2 | [CLDR1.2](http://unicode.org/Public/cldr/1.2.0/) | | [LDML1.2](http://www.unicode.org/reports/tr35/tr35-4.html) | [~~Δ1.2~~](http://unicode.org/cldr/trac/query?status=closed&col=id&col=summary&milestone=1.2) | release-1-2 | | -| 1.1.1 | 2004-07-29 | n/a | [CLDR1.1.1](http://unicode.org/Public/cldr/1.1.1/) | | [LDML1.1](http://www.unicode.org/reports/tr35/tr35-2.html) | n/a | release-1-1-1 | | -| 1.1 | 2004-06-08 | n/a | [CLDR1.1](http://unicode.org/Public/cldr/1.1.0/) | | [LDML1.1](http://www.unicode.org/reports/tr35/tr35-2.html) | n/a | release-1-1 | | -| 1.0 | 2003-12-19 | | |see [CLDR 1.0 Release](http://unicode.org/cldr/repository_access.html#CLDR_1.0_Release)| | |release-1-0| +| Latest | | [latest-version](/index/downloads/latest) | [latest-data](https://unicode.org/Public/cldr/46/) | [latest-charts](https://www.unicode.org/cldr/charts/46/index.html) | [latest-ldml](https://www.unicode.org/reports/tr35/) | [latest-tickets](https://unicode-org.atlassian.net/issues/?jql=project%20%3D%20CLDR%20AND%20status%20%3D%20Done%20AND%20resolution%20%3D%20Fixed%20AND%20fixVersion%20%3D%20%2246%22%20ORDER%20BY%20created%20ASC) | [release-46](https://github.com/unicode-org/cldr/tree/release-46) | [latest-delta-dtd](https://www.unicode.org/cldr/charts/46/supplemental/dtd_deltas.html) | +| Dev | | [dev-version](/index/downloads/dev) | | [dev-charts](https://unicode.org/cldr/charts/dev) | [dev-ldml](https://www.unicode.org/reports/tr35/proposed.html) | [dev-tickets](https://unicode-org.atlassian.net/issues/?jql=project%20%3D%20CLDR%20AND%20status%20%3D%20Done%20AND%20resolution%20%3D%20Fixed%20AND%20fixVersion%20%3D%20%2246%22%20ORDER%20BY%20created%20ASC) | [main](https://github.com/unicode-org/cldr.git) | [dev-delta-dtd](https://www.unicode.org/cldr/charts/dev/supplemental/dtd_deltas.html) | +| 46 | 2024-10-24 | [v46](/index/downloads/cldr-46) | [CLDR46](https://unicode.org/Public/cldr/46/) | [Charts46](https://unicode.org/cldr/charts/46/) | [LDML46](https://www.unicode.org/reports/tr35/tr35-73/tr35.html) | [Δ46](https://unicode-org.atlassian.net/issues/?jql=project+%3D+CLDR+AND+status+%3D+Done+AND+resolution+%3D+Fixed+AND+fixVersion+%3D+%2246%22+ORDER+BY+priority+DESC) | [release-46](https://github.com/unicode-org/cldr/releases/tag/release-46) | [ΔDtd46](https://www.unicode.org/cldr/charts/46/supplemental/dtd_deltas.html) | +| 45 | 2024-04-17 | [v45](/index/downloads/cldr-45) | [CLDR45](https://unicode.org/Public/cldr/45/) | [Charts45](https://unicode.org/cldr/charts/45/) | [LDML45](https://www.unicode.org/reports/tr35/tr35-72/tr35.html) | [Δ45](https://unicode-org.atlassian.net/issues/?jql=project%20%3D%20CLDR%20AND%20status%20%3D%20Done%20AND%20resolution%20%3D%20Fixed%20AND%20fixVersion%20%3D%20%2245%22%20ORDER%20BY%20component%20ASC%2C%20priority%20DESC%2C%20created%20ASC) | [release-45](https://github.com/unicode-org/cldr/tree/release-45) | [ΔDtd45](https://unicode.org/cldr/charts/45/supplemental/dtd_deltas.html) | +| 44.1 | 2023-12-13 | [v44.1](/index/downloads/cldr-44#h.nvqx283jwsx) | n/a | n/a | [LDML44.1](https://www.unicode.org/reports/tr35/tr35-71/tr35.html) | [Δ44.1](https://unicode-org.atlassian.net/issues/?jql=project%20%3D%20CLDR%20AND%20status%20%3D%20Done%20AND%20resolution%20%3D%20Fixed%20AND%20fixVersion%20%3D%20%2244%2E1%22%20ORDER%20BY%20component%20ASC%2C%20priority%20DESC%2C%20created%20ASC) | [release-44-1](https://github.com/unicode-org/cldr/tree/release-44-1) | See [44.1 Changes](/index/downloads/cldr-44#h.nvqx283jwsx) | +| 44 | 2023-10-31 | [v44](/index/downloads/cldr-44) | [CLDR44](https://unicode.org/Public/cldr/44/) | [Charts44](https://unicode.org/cldr/charts/44/) | [LDML44](https://www.unicode.org/reports/tr35/tr35-70/tr35.html) | [Δ44](https://unicode-org.atlassian.net/issues/?jql=project%20%3D%20CLDR%20AND%20status%20%3D%20Done%20AND%20resolution%20%3D%20Fixed%20AND%20fixVersion%20%3D%20%2244%22%20ORDER%20BY%20component%20ASC%2C%20priority%20DESC%2C%20created%20ASC) | [release-44](https://github.com/unicode-org/cldr/tree/release-44) | [ΔDtd44](https://unicode.org/cldr/charts/44/supplemental/dtd_deltas.html) | +| 43.1 | 2023-06-15 | [v43.1](/index/downloads/cldr-43#h.qobmda543waj) | n/a | n/a | [LDML43.1](https://www.unicode.org/reports/tr35/tr35-69/tr35.html) | [Δ43.1](https://unicode-org.atlassian.net/issues/?jql=project%20%3D%20CLDR%20AND%20status%20%3D%20Done%20AND%20resolution%20%3D%20Fixed%20AND%20fixVersion%20%3D%20%2243%2E1%22%20ORDER%20BY%20component%20ASC%2C%20priority%20DESC%2C%20created%20ASC) | [release-43-1](https://github.com/unicode-org/cldr/tree/release-43-1) | See [43.1 Changes](/index/downloads/cldr-43#h.qobmda543waj) | +| 43 | 2023-04-12 | [v43](/index/downloads/cldr-43) | [CLDR43](https://unicode.org/Public/cldr/43/) | [Charts43](https://www.unicode.org/cldr/charts/43/) | [LDML43](https://www.unicode.org/reports/tr35/tr35-68/tr35.html) | [Δ43](https://unicode-org.atlassian.net/issues/?jql=project%20%3D%20CLDR%20AND%20status%20%3D%20Done%20AND%20resolution%20in%20(Fixed%2C%20%22Fix%20in%20Survey%20Tool%20(CLDR)%22%2C%20%22Fixed%20non-repo%22)%20AND%20fixVersion%20%3D%20%2243%22%20ORDER%20BY%20resolution%20ASC%2C%20component%20ASC%2C%20priority%20DESC%2C%20created%20ASC) | [release-43](https://github.com/unicode-org/cldr/tree/release-43) | [ΔDtd43](https://www.unicode.org/cldr/charts/43/supplemental/dtd_deltas.html) | +| 42 | 2022-10-19 | [v42](/index/downloads/cldr-42) | [CLDR42](https://unicode.org/Public/cldr/42/) | [Charts42](https://www.unicode.org/cldr/charts/42/) | [LDML42](https://www.unicode.org/reports/tr35/tr35-67/tr35.html) | [Δ42](https://unicode-org.atlassian.net/issues/?jql=project%20%3D%20CLDR%20AND%20status%20%3D%20Done%20AND%20resolution%20in%20(Fixed%2C%20%22Fix%20in%20Survey%20Tool%20(CLDR)%22%2C%20%22Fixed%20non-repo%22)%20AND%20fixVersion%20%3D%20%2242%22%20ORDER%20BY%20resolution%20ASC%2C%20component%20ASC%2C%20priority%20DESC%2C%20created%20ASC) | [release-42](https://github.com/unicode-org/cldr/tree/release-42) | [ΔDtd42](https://www.unicode.org/cldr/charts/42/supplemental/dtd_deltas.html) | +| 41 | 2022-04-06 | [v41](/index/downloads/cldr-41) | [CLDR41](https://unicode.org/Public/cldr/41/) | [Charts41](https://www.unicode.org/cldr/charts/41/) | [LDML41](https://www.unicode.org/reports/tr35/tr35-66/tr35.html) | [Δ41](https://unicode-org.atlassian.net/issues/?jql=project%20%3D%20CLDR%20AND%20status%20%3D%20Done%20AND%20resolution%20%3D%20Fixed%20AND%20fixVersion%20%3D%20%2241%22%20ORDER%20BY%20component%20ASC%2C%20priority%20DESC%2C%20created%20ASC) | [release-41](https://github.com/unicode-org/cldr/tree/release-41) | [ΔDtd41](https://www.unicode.org/cldr/charts/41/supplemental/dtd_deltas.html) | +| 40 | 2021-10-27 | [v40](/index/downloads/cldr-40) | [CLDR40](https://unicode.org/Public/cldr/40/) | [Charts40](https://www.unicode.org/cldr/charts/40/) | [LDML40](https://www.unicode.org/reports/tr35/tr35-65/tr35.html) | [Δ40](https://unicode-org.atlassian.net/issues/?jql=project%20%3D%20CLDR%20AND%20status%20%3D%20Done%20AND%20resolution%20%3D%20Fixed%20AND%20fixVersion%20%3D%20%2240%22%20ORDER%20BY%20component%20ASC%2C%20priority%20DESC%2C%20created%20ASC) | [release-40](https://github.com/unicode-org/cldr/tree/release-40) | [ΔDtd40](https://www.unicode.org/cldr/charts/40/supplemental/dtd_deltas.html) | +| 39 | 2021-04-07 | [v39](/index/downloads/cldr-39) | [CLDR39](https://unicode.org/Public/cldr/39/) | [Charts39](https://www.unicode.org/cldr/charts/39/) | [LDML39](https://www.unicode.org/reports/tr35/tr35-63/tr35.html) | [Δ39](https://unicode-org.atlassian.net/issues/?jql=project%20%3D%20CLDR%20AND%20status%20%3D%20Done%20AND%20resolution%20%3D%20Fixed%20AND%20fixVersion%20%3D%20%2239%22%20ORDER%20BY%20component%20ASC%2C%20priority%20DESC%2C%20created%20ASC) | [release-39](https://github.com/unicode-org/cldr/tree/release-39) | [ΔDtd39](https://www.unicode.org/cldr/charts/39/supplemental/dtd_deltas.html) | +| 38.1 | 2020-12-17 | [v38.1](/index/downloads/cldr-38?pli=1#TOC-CLDR-38.1) | [CLDR38.1](https://unicode.org/Public/cldr/38.1) | [Charts38.1](https://www.unicode.org/cldr/charts/38.1/index.html) | [LDML38](https://www.unicode.org/reports/tr35/tr35-61/tr35.html) | [Δ38.1](https://unicode-org.atlassian.net/issues/?jql=project%20%3D%20CLDR%20AND%20status%20%3D%20Done%20AND%20resolution%20%3D%20Fixed%20AND%20fixVersion%20%3D%20%2238%2E1%22%20ORDER%20BY%20component%20ASC%2C%20priority%20DESC%2C%20created%20ASC) | [release-38-1](https://github.com/unicode-org/cldr/tree/release-38-1) | [ΔDtd38.1](https://www.unicode.org/cldr/charts/38.1/supplemental/dtd_deltas.html) | +| 38 | 2020-10-28 | [v38](/index/downloads/cldr-38) | [CLDR38](https://unicode.org/Public/cldr/38/) | [Charts38](https://www.unicode.org/cldr/charts/38/) | [LDML38](https://www.unicode.org/reports/tr35/tr35-61/tr35.html) | [Δ38](https://unicode-org.atlassian.net/issues/?jql=project%20%3D%20CLDR%20AND%20status%20%3D%20Done%20AND%20resolution%20%3D%20Fixed%20AND%20fixVersion%20%3D%20%2238%22%20ORDER%20BY%20component%20ASC%2C%20priority%20DESC%2C%20created%20ASC) | [release-38](https://github.com/unicode-org/cldr/tree/release-38) | [ΔDtd38](https://www.unicode.org/cldr/charts/38/supplemental/dtd_deltas.html) | +| 37 | 2020-04-23 | [v37](/index/downloads/cldr-37) | [CLDR37](https://unicode.org/Public/cldr/37/) | [Charts37](https://www.unicode.org/cldr/charts/37/) | [LDML37](https://www.unicode.org/reports/tr35/tr35-59/tr35.html) | [Δ37](https://unicode-org.atlassian.net/issues/?jql=project%20%3D%20CLDR%20AND%20status%20%3D%20Done%20AND%20resolution%20%3D%20Fixed%20AND%20fixVersion%20%3D%20%2237%22%20ORDER%20BY%20component%20ASC%2C%20priority%20DESC%2C%20created%20ASC) | [release-37](https://github.com/unicode-org/cldr/tree/release-37) | [ΔDtd37](https://www.unicode.org/cldr/charts/37/supplemental/dtd_deltas.html) | +| 36.1 | 2020-03-11 | v36.1 | [CLDR36.1](https://unicode.org/Public/cldr/36.1/) | [Charts36.1](https://www.unicode.org/cldr/charts/36.1/) | [LDML36](https://www.unicode.org/reports/tr35/tr35-57/tr35.html) | [Δ36.1](https://unicode-org.atlassian.net/issues/?jql=project%20%3D%20CLDR%20AND%20fixVersion%20%3D%20%2236.1%22%20ORDER%20BY%20component%20ASC%2C%20priority%20DESC%2C%20created%20ASC) | [release-36-1](https://github.com/unicode-org/cldr/tree/release-36-1) | [ΔDtd36.1](https://www.unicode.org/cldr/charts/36.1/supplemental/dtd_deltas.html) | +| 36 | 2019-10-04 | [v36](/index/downloads/cldr-36) | [CLDR36](https://unicode.org/Public/cldr/36/) | [Charts36](https://www.unicode.org/cldr/charts/36/) | [LDML36](https://www.unicode.org/reports/tr35/tr35-57/tr35.html) | [Δ36](https://unicode-org.atlassian.net/issues/?jql=project%20%3D%20CLDR%20AND%20status%20%3D%20Done%20AND%20resolution%20%3D%20Fixed%20AND%20fixVersion%20%3D%20%2236%22%20ORDER%20BY%20created%20ASC) | [release-36](https://github.com/unicode-org/cldr/tree/release-36) | [ΔDtd36](https://www.unicode.org/cldr/charts/36/supplemental/dtd_deltas.html) | +| 35.1 | 2019-04-17 | [v35.1](/index/downloads/cldr-35?pli=1#TOC-V35.1) | [CLDR35.1](https://unicode.org/Public/cldr/35.1/) | [Charts35.1](https://www.unicode.org/cldr/charts/35/) | [LDML35](https://www.unicode.org/reports/tr35/tr35-55/tr35.html) | [Δ35.1](https://unicode-org.atlassian.net/issues/?jql=project%20%3D%20CLDR%20AND%20status%20%3D%20Done%20AND%20fixVersion%20%3D%2035.1%20ORDER%20BY%20created%20ASC) | [release-35-1](https://github.com/unicode-org/cldr/tree/release-35-1) | [ΔDtd35](https://www.unicode.org/cldr/charts/35/supplemental/dtd_deltas.html) | +| 35 | 2019-03-27 | [v35](/index/downloads/cldr-35) | [CLDR35](https://unicode.org/Public/cldr/35/) | [Charts35.1](https://www.unicode.org/cldr/charts/35/) | [LDML35](https://www.unicode.org/reports/tr35/tr35-55/tr35.html) | [Δ35](https://unicode-org.atlassian.net/issues/?jql=project%20%3D%20CLDR%20AND%20status%20%3D%20Done%20AND%20fixVersion%20%3D%20%2235%22%20ORDER%20BY%20created%20ASC) | [release-35](https://github.com/unicode-org/cldr/tree/release-35) | [ΔDtd35](https://www.unicode.org/cldr/charts/35/supplemental/dtd_deltas.html) | +| 34 | 2018-10-15 | [v34](/index/downloads/cldr-34) | [CLDR34](https://unicode.org/Public/cldr/34/) | [Charts34](https://www.unicode.org/cldr/charts/34/) | [LDML34](https://www.unicode.org/reports/tr35/tr35-53/tr35.html) | [~~Δ34~~](https://unicode.org/cldr/trac/query?resolution=fixed&milestone=34&group=component&max=999) | [release-34](https://github.com/unicode-org/cldr/releases/tag/release-34) | [ΔDtd34](https://www.unicode.org/cldr/charts/34/supplemental/dtd_deltas.html) | +| 33.1 | 2018-06-20 | [v33.1](/index/downloads/cldr-33-1) | [CLDR33.1](https://unicode.org/Public/cldr/33.1/) | [Charts34*](https://www.unicode.org/cldr/charts/34/) | [LDML33*](https://www.unicode.org/reports/tr35/tr35-51/tr35.html) | [~~Δ33.1~~](https://unicode.org/cldr/trac/query?resolution=fixed&milestone=33.1&group=component&max=999) | [release-33-1](https://github.com/unicode-org/cldr/releases/tag/release-33-1/) | [ΔDtd33](https://www.unicode.org/cldr/charts/33/supplemental/dtd_deltas.html) [*](https://unicode.org/cldr/trac/changeset?reponame=&new=HEAD@tags/release-33/common/dtd&old=HEAD@tags/release-33-1/common/dtd) | +| 33 | 2018-03-26 | [v33](/index/downloads/cldr-33) | [CLDR33](https://unicode.org/Public/cldr/33/) | [Charts33](https://www.unicode.org/cldr/charts/33/) | [LDML33](https://www.unicode.org/reports/tr35/tr35-51/tr35.html) | [~~Δ33~~](https://unicode.org/cldr/trac/query?resolution=fixed&milestone=33&group=component&max=999) | [release-33](https://github.com/unicode-org/cldr/releases/tag/release-33/) | [ΔDtd33](https://www.unicode.org/cldr/charts/33/supplemental/dtd_deltas.html) | +| 32.0.1 | 2017-12-08 | [v32](/index/downloads/cldr-32) | [CLDR32.0.1](https://unicode.org/Public/cldr/32.0.1/) | [Charts32](https://www.unicode.org/cldr/charts/32/) | [LDML32](https://www.unicode.org/reports/tr35/tr35-49/tr35.html) | [~~Δ32.0.1~~](https://unicode.org/cldr/trac/query?resolution=fixed&milestone=32.0.1&group=component&max=999) | [release-32-0-1](https://github.com/unicode-org/cldr/releases/tag/release-32-0-1/) | [ΔDtd32](https://www.unicode.org/cldr/charts/32/supplemental/dtd_deltas.html) | +| 32 | 2017-11-01 | [v32](/index/downloads/cldr-32) | [CLDR32](https://unicode.org/Public/cldr/32/) | [Charts32](https://www.unicode.org/cldr/charts/32/) | [LDML32](https://www.unicode.org/reports/tr35/tr35-49/tr35.html) | [~~Δ32~~](https://unicode.org/cldr/trac/query?resolution=fixed&milestone=32&group=component&max=999) | [release-32](https://github.com/unicode-org/cldr/releases/tag/release-32/) | [ΔDtd32](https://www.unicode.org/cldr/charts/32/supplemental/dtd_deltas.html) | +| 31.0.1 | 2017-04-07 | [v31](/index/downloads/cldr-31) | [CLDR31.0.1](https://www.unicode.org/Public/cldr/31.0.1/) | [Charts31](https://www.unicode.org/cldr/charts/31/) | [LDML31](https://www.unicode.org/reports/tr35/tr35-47/tr35.html) | [~~Δ31.0.1~~](https://unicode.org/cldr/trac/query?resolution=fixed&milestone=31&milestone=31.0.1&group=component&max=999&col=id&col=summary&col=owner&col=type&col=status&col=priority&col=time&order=priority) | [release-31-0-1](https://github.com/unicode-org/cldr/releases/tag/release-31-0-1/) | | +| 31 | 2017-03-20 | [v31](/index/downloads/cldr-31) | [CLDR31](https://unicode.org/Public/cldr/31/) | [Charts31](https://www.unicode.org/cldr/charts/31/) | [LDML31](https://www.unicode.org/reports/tr35/tr35-47/tr35.html) | [~~Δ31~~](https://unicode.org/cldr/trac/query?resolution=fixed&milestone=31&group=component&max=999) | [release-31](https://github.com/unicode-org/cldr/releases/tag/release-31/) | | +| 30.0.3 | 2016-12-02 | v30 | [CLDR30.0.3](https://unicode.org/Public/cldr/30.0.3/) | [Charts30](https://www.unicode.org/cldr/charts/30/) | [LDML30](https://www.unicode.org/reports/tr35/tr35-45/tr35.html) | [~~Δ30.0.3~~](https://unicode.org/cldr/trac/query?status=closed&status=reviewing&revw=!&milestone=30.0.3&group=component&max=999&col=id&col=summary&order=priority) | [release-30-0-3](https://unicode.org/cldr/trac/browser/tags/release-30-0-3) | | +| 30.0.2 | 2016-10-17 | v30 | [CLDR30.0.2](https://unicode.org/Public/cldr/30.0.2/) | [Charts30](https://www.unicode.org/cldr/charts/30/) | [LDML30](https://www.unicode.org/reports/tr35/tr35-45/tr35.html) | [~~Δ30.0.2~~](https://unicode.org/cldr/trac/query?status=closed&status=reviewing&revw=!&milestone=30.0.2&group=component&max=999&col=id&col=summary&order=priority) | [release-30-0-2](https://unicode.org/cldr/trac/browser/tags/release-30-0-2) | | +| 30.0.1 | 2016-10-14 | v30 | [CLDR30.0.1](https://unicode.org/Public/cldr/30.0.1/) | [Charts30](https://www.unicode.org/cldr/charts/30/) | [LDML30](https://www.unicode.org/reports/tr35/tr35-45/tr35.html) | [~~Δ30.0.1~~](https://unicode.org/cldr/trac/query?status=closed&status=reviewing&revw=!&milestone=30.0.1&group=component&max=999&col=id&col=summary&order=priority) | [release-30-0-1](https://unicode.org/cldr/trac/browser/tags/release-30-0-1) | | +| 30 | 2016-10-05 | v30 | [CLDR30](https://unicode.org/Public/cldr/30/) | [Charts30](https://www.unicode.org/cldr/charts/30/) | [LDML30](https://www.unicode.org/reports/tr35/tr35-45/tr35.html) | [~~Δ30~~](https://unicode.org/cldr/trac/query?status=closed&status=reviewing&resolution=fixed&milestone=30&group=component&max=999&col=id&col=summary) | [release-30](https://unicode.org/cldr/trac/browser/tags/release-30) | | +| 29 | 2016-03-16 | v29 | [CLDR29](https://unicode.org/Public/cldr/29/) | [Charts29](https://www.unicode.org/cldr/charts/29/) | [LDML29](https://www.unicode.org/reports/tr35/tr35-43/tr35.html) | [~~Δ29~~](https://unicode.org/cldr/trac/query?status=closed&status=reviewing&resolution=fixed&milestone=29&group=component&max=999&col=id&col=summary) | [release-29](https://unicode.org/cldr/trac/browser/tags/release-29) | | +| 28 | 2015-09-17 | v28 | [CLDR28](https://unicode.org/Public/cldr/28/) | [Charts28](https://www.unicode.org/cldr/charts/28/) | [LDML28](https://www.unicode.org/reports/tr35/tr35-41/tr35.html) | [~~Δ28~~](https://unicode.org/cldr/trac/query?status=closed&status=reviewing&resolution=fixed&milestone=28&group=component&max=999&col=id&col=summary) | [release-28](https://unicode.org/cldr/trac/browser/tags/release-28) | | +| 27-0-1 | 2015-03-30 | v27 | [CLDR27.0.1](https://unicode.org/Public/cldr/27.0.1/) | [Charts27](https://www.unicode.org/cldr/charts/27/) | [LDML27](https://www.unicode.org/reports/tr35/tr35-39/tr35.html) | [~~Δ27.0.1~~](https://unicode.org/cldr/trac/query?status=closed&status=reviewing&resolution=fixed&milestone=27.0.1&group=component&max=999&col=id&col=summary) | [release-27-0-1](https://unicode.org/cldr/trac/browser/tags/release-27-0-1) | | +| 27 | 2015-03-19 | v27 | [CLDR27](https://unicode.org/Public/cldr/27/) | [Charts27](https://www.unicode.org/cldr/charts/27/) | [LDML27](https://www.unicode.org/reports/tr35/tr35-39/tr35.html) | [~~Δ27~~](https://unicode.org/cldr/trac/query?status=closed&status=reviewing&resolution=fixed&milestone=27&group=component&max=999&col=id&col=summary) | [release-27](https://unicode.org/cldr/trac/browser/tags/release-27) | | +| 26.0.1 | 2014-12-04 | v26.0.1 | [CLDR26.0.1](https://unicode.org/Public/cldr/26.0.1/) | [Charts26](https://www.unicode.org/cldr/charts/26/index.html) | [LDML26](https://www.unicode.org/reports/tr35/tr35-37/tr35.html) | ~~n/a~~ | [release-26-0-1](https://unicode.org/cldr/trac/browser/tags/release-26-0-1) | | +| 26 | 2014-09-18 | v26 | [CLDR26](https://unicode.org/Public/cldr/26/) | [Charts26](https://www.unicode.org/cldr/charts/26/index.html) | [LDML26](https://www.unicode.org/reports/tr35/tr35-37/tr35.html) | [~~Δ26~~](https://unicode.org/cldr/trac/query?status=closed&status=reviewing&resolution=fixed&milestone=26&group=component&max=999&col=id&col=summary) | [release-26](https://unicode.org/cldr/trac/browser/tags/release-26) | | +| 25 | 2014-03-19 | v25 | [CLDR25](https://unicode.org/Public/cldr/25/) | [Charts25](https://www.unicode.org/cldr/charts/25/index.html) | [LDML25](https://www.unicode.org/reports/tr35/tr35-35/tr35.html) | [~~Δ25~~](https://unicode.org/cldr/trac/query?status=closed&milestone=25dsub&milestone=25design&milestone=25M1&milestone=25rc&milestone=25final&max=900) | [release-25](https://unicode.org/cldr/trac/browser/tags/release-25) | | +| 24 | 2013-09-18 | v24 | [CLDR24](https://unicode.org/Public/cldr/24/) | [Charts24](https://www.unicode.org/cldr/charts/24/index.html) | [LDML24](https://www.unicode.org/reports/tr35/tr35-33/tr35.html) | [~~Δ24~~](https://unicode.org/cldr/trac/query?status=closed&resolution=fixed&resolution=duplicate&resolution=as-designed&resolution=moot&resolution=fix-in-surveytool&milestone=24dsub&milestone=24dsub2&milestone=24dvet&milestone=24rc&milestone=24final&max=900) | [release-24](https://unicode.org/cldr/trac/browser/tags/release-24) | | +| 23.1 | 2013-05-15 | v23.1 | [CLDR23.1](https://unicode.org/Public/cldr/23.1/) | [Charts23.1](https://www.unicode.org/cldr/charts/23.1/index.html) | [LDML23](https://www.unicode.org/reports/tr35/tr35-31/tr35.html) | [~~Δ23.1~~](https://unicode.org/cldr/trac/query?status=closed&milestone=23.1) | [release-23-1](https://unicode.org/cldr/trac/browser/tags/release-23-1) | | +| 23 | 2013-03-15 | v23 | [CLDR23](https://unicode.org/Public/cldr/23/) | [Charts23](https://www.unicode.org/cldr/charts/23/index.html) | [LDML23](https://www.unicode.org/reports/tr35/tr35-31/tr35.html) | [~~Δ23~~](https://unicode.org/cldr/trac/query?max=900&milestone=23dsub&milestone=23dres&milestone=23&order=id&col=id&col=summary&col=milestone&col=type&col=status&col=priority&col=component&revw=!) | [release-23](https://unicode.org/cldr/trac/browser/tags/release-23) | | +| 22.1 | 2012-10-26 | v22.1 | [CLDR22.1](https://unicode.org/Public/cldr/22.1/) | [Charts22.1](https://www.unicode.org/cldr/charts/22.1/index.html) | [LDML22.1](https://www.unicode.org/reports/tr35/tr35-29.html) | [~~Δ22.1~~](https://unicode.org/cldr/trac/query?status=closed&milestone=22.1) | [release-22-1](https://unicode.org/cldr/trac/browser/tags/release-22-1#docs) | | +| 22 | 2012-09-10 | v22 | [CLDR22](https://unicode.org/Public/cldr/22/) | [Charts22](https://www.unicode.org/cldr/charts/22/index.html) | [LDML22](https://www.unicode.org/reports/tr35/tr35-27.html) | [~~Δ22~~](https://unicode.org/cldr/trac/query?max=900&milestone=22dvet&milestone=22dres&milestone=22&milestone=22dsub&order=priority) | [release-22](https://unicode.org/cldr/trac/browser/tags/release-22) | | +| 21.0.2 | 2012-06-06 | v21.0.2 | via SVN | | [LDML21.0.1](https://www.unicode.org/reports/tr35/tr35-25.html) | [~~Δ21.0.2~~](https://unicode.org/cldr/trac/query?milestone=21.0.2) | [release-21-0-2](https://unicode.org/cldr/trac/browser/tags/release-21-0-2) | | +| 21.0.1 | 2012-03-21 | v21.0.1 | via SVN | | [LDML21.0.1](https://www.unicode.org/reports/tr35/tr35-25.html) | [~~Δ21.0.1~~](https://unicode.org/cldr/trac/query?milestone=21.0.1&revw=%21) | [release-21-0-1](https://unicode.org/cldr/trac/browser/tags/release-21-0-1) | | +| 21.0 | 2012-02-10 | v21 | [CLDR21](https://unicode.org/Public/cldr/21/) | | [LDML21](https://www.unicode.org/reports/tr35/tr35-23.html) | [~~Δ21~~](https://unicode.org/cldr/trac/query?status=closed&milestone=21m1&milestone=21m2&milestone=21) | [release-21](https://unicode.org/cldr/trac/browser/tags/release-21) | | +| 2.0.1 | 2011-07-18 | v2.0.1 | [CLDR2.0.1](https://unicode.org/Public/cldr/2.0.1/) | | [LDML2.0.1](https://www.unicode.org/reports/tr35/tr35-21.html) | [~~Δ2.0.1~~](https://unicode.org/cldr/trac/query?status=closed&milestone=2.0.1) | [release-2-0-1](https://unicode.org/cldr/trac/browser/tags/release-2-0-1) | | +| 2.0 | 2011-05-25 | v2.0 | [CLDR2.0](https://unicode.org/Public/cldr/2.0.0/) | | [LDML2.0](https://www.unicode.org/reports/tr35/tr35-19.html) | [~~Δ2.0~~](https://unicode.org/cldr/trac/query?status=closed&milestone=2.0&milestone=2.0m1&milestone=2.0m2) | [release-2-0](https://unicode.org/cldr/trac/browser/tags/release-2-0) | | +| 1.9.1 | 2011-03-11 | [v1.9.1](/index/downloads/cldr-1-9-1) | [CLDR1.9.1](https://unicode.org/Public/cldr/1.9.1/) | | [LDML1.9](https://www.unicode.org/reports/tr35/tr35-17.html) | [~~Δ1.9.1~~](https://unicode.org/cldr/trac/query?status=closed&milestone=1.9.1) | release-1-9-1 | | +| 1.9 | 2010-12-01 | v1.9 | [CLDR1.9.0](https://unicode.org/Public/cldr/1.9.0/) | | [LDML1.9](https://www.unicode.org/reports/tr35/tr35-17.html) | [~~Δ1.9~~](https://unicode.org/cldr/trac/query?status=closed&order=priority&milestone=1.9m1&milestone=1.9m2&milestone=1.9RC) | release-1-9 | | +| 1.8.1 | 2010-04-29 | v1.8.1 | [CLDR1.8.1](https://unicode.org/Public/cldr/1.8.1/) | | [LDML1.8.1](https://www.unicode.org/reports/tr35/tr35-16.html) | [~~Δ1.8.1~~](https://unicode.org/cldr/trac/query?status=closed&milestone=1.8.1p1&milestone=1.8.1p2&milestone=1.8.1&milestone=1.8.1o) | release-1-8-1 | | +| 1.8.0 | 2010-03-17 | v1.8.0 | [CLDR1.8.0](https://unicode.org/Public/cldr/1.8.0/) | | [LDML1.8.0](https://www.unicode.org/reports/tr35/tr35-15.html) | [~~Δ1.8.0~~](https://unicode.org/cldr/trac/query?status=closed&milestone=1.8p1&milestone=1.8p2&milestone=1.8&milestone=1.8o) | release-1-8 | | +| 1.7.2 | 2009-12-10 | v1.7.2 | [CLDR1.7.2](https://unicode.org/Public/cldr/1.7.2/) | | [LDML1.7.2](https://www.unicode.org/reports/tr35/tr35-13.html) | [~~Δ1.7.2~~](https://unicode.org/cldr/trac/query?status=closed&milestone=1.7.2) | release-1-7-2 | | +| 1.7.1.2 | 2009-11-11 | v1.7.1 | [via SVN](https://github.com/unicode-org/cldr/releases/tag/release-1-7-1-2/) | | [LDML1.7](https://www.unicode.org/reports/tr35/tr35-12.html) | [~~Δ1.7.1.2~~](https://unicode.org/cldr/trac/query?status=closed&order=id&col=id&col=summary&milestone=1.7.1&milestone=1.7.1.1&milestone=1.7.1.2) | release-1-7-1-2 | | +| 1.7.1.1 | 2009-10-29 | v1.7.1 | [via SVN](https://github.com/unicode-org/cldr/releases/tag/release-1-7-1-1/) | | [LDML1.7](https://www.unicode.org/reports/tr35/tr35-12.html) | [~~Δ1.7.1.1~~](https://unicode.org/cldr/trac/query?status=closed&order=id&col=id&col=summary&milestone=1.7.1&milestone=1.7.1.1) | release-1-7-1-1 | | +| 1.7.1 | 2009-06-29 | v1.7.1 | [CLDR1.7.1](https://unicode.org/Public/cldr/1.7.1/) | | [LDML1.7](https://www.unicode.org/reports/tr35/tr35-12.html) | [~~Δ1.7.1~~](https://unicode.org/cldr/trac/query?status=closed&col=id&col=summary&milestone=1.7.1) | release-1-7-1 | | +| 1.7 | 2009-05-08 | v1.7 | [CLDR1.7](https://unicode.org/Public/cldr/1.7.0/) | | [LDML1.7](https://www.unicode.org/reports/tr35/tr35-12.html) | [~~Δ1.7~~](https://unicode.org/cldr/trac/query?status=closed&col=id&col=summary&milestone=1.7) | release-1-7 | | +| 1.6.1 | 2008-07-23 | v1.6.1 | [CLDR1.6.1](https://unicode.org/Public/cldr/1.6.1/) | | [LDML1.6.1](https://www.unicode.org/reports/tr35/tr35-11.html) | [~~Δ1.6.1~~](https://unicode.org/cldr/trac/query?status=closed&col=id&col=summary&milestone=1.6.1) | release-1-6-1 | | +| 1.6 | 2008-07-02 | v1.6 | [CLDR1.6](https://unicode.org/Public/cldr/1.6.0/) | | [LDML1.6](https://www.unicode.org/reports/tr35/tr35-10.html) | [~~Δ1.6~~](https://unicode.org/cldr/trac/query?status=closed&col=id&col=summary&milestone=1.6) | release-1-6 | | +| 1.5.1 | 2007-12-21 | v1.5.1 | [CLDR1.5.1](https://unicode.org/Public/cldr/1.5.1/) | | [LDML1.5.1](https://www.unicode.org/reports/tr35/tr35-9.html) | [~~Δ1.5.1~~](https://unicode.org/cldr/trac/query?status=closed&col=id&col=summary&milestone=1.5.1) | release-1-5-1 | | +| 1.5 | 2007-07-31 | v1.5 | [CLDR1.5](https://unicode.org/Public/cldr/1.5.0/) | | [LDML1.5](https://www.unicode.org/reports/tr35/tr35-8.html) | [~~Δ1.5~~](https://unicode.org/cldr/trac/query?status=closed&col=id&col=summary&milestone=1.5) | release-1-5 | | +| 1.4.1 | 2006-11-03 | v1.4.1 | [CLDR1.4.1](https://unicode.org/Public/cldr/1.4.1/) | | [LDML1.4.1](https://www.unicode.org/reports/tr35/tr35-7.html) | [~~Δ1.4.1~~](https://unicode.org/cldr/trac/query?status=closed&col=id&col=summary&milestone=1.4.1) | release-1-4-1 | | +| 1.4 | 2006-07-17 | v1.4 | [CLDR1.4](https://unicode.org/Public/cldr/1.4.0/) | | [LDML1.4](https://www.unicode.org/reports/tr35/tr35-6.html) | [~~Δ1.4~~](https://unicode.org/cldr/trac/query?status=closed&col=id&col=summary&milestone=1.4) | release-1-4 | | +| 1.3 | 2005-06-02 | v1.3 | [CLDR1.3](https://unicode.org/Public/cldr/1.3.0/) | | [LDML1.3](https://www.unicode.org/reports/tr35/tr35-5.html) | [~~Δ1.3~~](https://unicode.org/cldr/trac/query?status=closed&col=id&col=summary&milestone=1.3) | release-1-3 | | +| 1.2 | 2004-11-04 | v1.2 | [CLDR1.2](https://unicode.org/Public/cldr/1.2.0/) | | [LDML1.2](https://www.unicode.org/reports/tr35/tr35-4.html) | [~~Δ1.2~~](https://unicode.org/cldr/trac/query?status=closed&col=id&col=summary&milestone=1.2) | release-1-2 | | +| 1.1.1 | 2004-07-29 | n/a | [CLDR1.1.1](https://unicode.org/Public/cldr/1.1.1/) | | [LDML1.1](https://www.unicode.org/reports/tr35/tr35-2.html) | n/a | release-1-1-1 | | +| 1.1 | 2004-06-08 | n/a | [CLDR1.1](https://unicode.org/Public/cldr/1.1.0/) | | [LDML1.1](https://www.unicode.org/reports/tr35/tr35-2.html) | n/a | release-1-1 | | +| 1.0 | 2003-12-19 | | |see [CLDR 1.0 Release](https://unicode.org/cldr/repository_access.html#CLDR_1.0_Release)| | |release-1-0| ### Key to Header Links ||| @@ -86,11 +86,11 @@ The following table lists the files for each released version. For license infor | No. | Version Number | | Date | Release Date | | Rel. Note | A general description of the contents of the release, and any relevant notes about the release | -| Data | A set of zip files containing the contents of the release (the files are complete in themselves, and do not require files from earlier releases -- for the structure of the zip file, see [Repository Organization](http://cldr.unicode.org/index/downloads#Repository_Organization)) | +| Data | A set of zip files containing the contents of the release (the files are complete in themselves, and do not require files from earlier releases -- for the structure of the zip file, see [Repository Organization](/index/downloads#Repository_Organization)) | | Charts | A set of charts showing some of the data in the release. | -| Spec | The version of [UTS #35: LDML](http://www.unicode.org/reports/tr35/) that corresponds to the release | +| Spec | The version of [UTS #35: LDML](https://www.unicode.org/reports/tr35/) that corresponds to the release | | Delta Tickets | A list of all the tickets (fixes and features) in the release, which be used to get the precise corresponding file changes (Some earlier releases are not available in this way due to the JIRA migration, but all of the information is available in GitHub or JIRA.) | -| Github Tag | The files in the release, accessible via via [Repository Access](http://cldr.unicode.org/index/downloads#latest_draft_version). For more details see CLDR Releases (Downloads) | +| Github Tag | The files in the release, accessible via via [Repository Access](/index/downloads#latest_draft_version). For more details see CLDR Releases (Downloads) | | Delta DTDs | A link pointing to a charts of changes in the DTDs over time. | @@ -105,7 +105,7 @@ Access to the latest working snapshot of CLDR, and access to data collected for CLDR files are maintained in a git source code repository at https://github.com/unicode-org/cldr.git. -**Note**: On Sep 14, 2021, the main branch was renamed to 'main', please see [This Page](https://cldr.unicode.org/development/main-rename) for how to fix. +**Note**: On Sep 14, 2021, the main branch was renamed to 'main', please see [This Page](/development/main-rename) for how to fix. There are several ways to access the repository contents. @@ -185,8 +185,8 @@ The 1.0 version of CLDR is described here for historical interest only. It was h ||| |---|---| -| 1.0 Version: | http://www.openi18n.org/spec/ldml/1.0/ldml-spec.htm | -| 1.0 Namespace: | http://www.openi18n.org/spec/ldml | -| 1.0 DTDs: | http://www.openi18n.org/spec/ldml/1.0/ldml.dtd | -| | http://www.openi18n.org/spec/ldml/1.0/ldmlSupplemental.dtd | +| 1.0 Version: | https://www.openi18n.org/spec/ldml/1.0/ldml-spec.htm | +| 1.0 Namespace: | https://www.openi18n.org/spec/ldml | +| 1.0 DTDs: | https://www.openi18n.org/spec/ldml/1.0/ldml.dtd | +| | https://www.openi18n.org/spec/ldml/1.0/ldmlSupplemental.dtd | diff --git a/docs/site/index/draft-schedule.md b/docs/site/index/draft-schedule.md index b1ee577de80..059d6d62ce2 100644 --- a/docs/site/index/draft-schedule.md +++ b/docs/site/index/draft-schedule.md @@ -4,8 +4,8 @@ title: Schedule # Schedule -Two releases are regularly scheduled each year, currently one in mid-October, and one in mid-March. +Two releases are regularly scheduled each year, currently one in mid-October, and one in mid-March. The March release is intended to be less data-intensive, and sometimes involves little or no vetting. The current release is found at [Current CLDR Dev Version](https://docs.google.com/spreadsheets/d/1N6inI5R84UoYlRwuCNPBOAP7ri4q2CmJmh8DC5g-S6c/edit?gid=1680747936#gid=1680747936). -For more information about the various phases of the release, see [Survey Tool stages](../translation/getting-started/survey-tool-phases.md) +For more information about the various phases of the release, see [Survey Tool stages](/translation/getting-started/survey-tool-phases) diff --git a/docs/site/index/json-format-data.md b/docs/site/index/json-format-data.md index 7e4b5667e6f..4736c89dd8e 100644 --- a/docs/site/index/json-format-data.md +++ b/docs/site/index/json-format-data.md @@ -14,7 +14,7 @@ In addition, we now have a conversion utility that can be used to convert LDML i The CLDR committee welcomes comments on this specification and the data itself. Our hope is that as more people realize that there is a standard format for CLDR data in JSON, it will become the best practice way to use CLDR data in the Javascript environment. -The JSON specification for CLDR data can be found [here](https://cldr.unicode.org/index/cldr-spec/cldr-json-bindings). +The JSON specification for CLDR data can be found [here](/index/cldr-spec/cldr-json-bindings). To access the CLDR 22.1 data in the JSON format, click [HERE](http://www.google.com/url?q=http%3A%2F%2Fwww.unicode.org%2Frepos%2Fcldr-aux%2Fjson%2F22.1%2F&sa=D&sntz=1&usg=AOvVaw3a81SHdsJi_Nf1zWGhF3rs) diff --git a/docs/site/index/keyboard-workgroup.md b/docs/site/index/keyboard-workgroup.md index ecea04db721..5e318880c1a 100644 --- a/docs/site/index/keyboard-workgroup.md +++ b/docs/site/index/keyboard-workgroup.md @@ -1,22 +1,16 @@ --- -title: CLDR Keyboard Subcommittee +title: CLDR Keyboard Working Group --- -# CLDR Keyboard Subcommittee +# CLDR Keyboard Working Group -The CLDR Keyboard Subcommittee is developing a new cross-platform standard XML format for use by keyboard authors for inclusion in the CLDR source repository. - -## News - -2023-Feb-29: The CLDR-TC has authorized the proposed specification to be released as stable (out of Technical Preview). - -2023-May-15: The CLDR-TC has authorized [Public Review Issue #476](https://www.unicode.org/review/pri476/) of the proposed specification, as a "Technical Preview." The PRI closed on 2023-Jul-15. +The CLDR Keyboard Subcommittee is responsible for the development and maintenance of a standard cross-platform XML format for use by keyboard authors. ## Background **CLDR (Common Locale Data Repository)** -Computing devices have become increasingly personal and increasingly affordable to the point that they are now within reach of most people on the planet. The diverse linguistic requirements of the world's 7+ billion people do not scale to traditional models of software development. In response to this, Unicode [CLDR](https://cldr.unicode.org/) has emerged as a standards-based solution that empowers specialist and community input, as a means of balancing the needs of language communities with the technologies of major platform and service providers. +Computing devices have become increasingly personal and increasingly affordable to the point that they are now within reach of most people on the planet. The diverse linguistic requirements of the world's 7+ billion people do not scale to traditional models of software development. In response to this, Unicode [CLDR](/) has emerged as a standards-based solution that empowers specialist and community input, as a means of balancing the needs of language communities with the technologies of major platform and service providers. ![alt-text](../images/keyboard-workgroup-keyboards.jpeg) @@ -67,13 +61,17 @@ The CLDR Keyboard Subcommittee was formed and has been meeting since mid-2020. I ### What is the current status? +Discussion + +- The Keyboard WG is actively working on requirements and processes for the repository of CLDR Keyboard data [CLDR-17254](https://unicode-org.atlassian.net/browse/CLDR-17254) + Release -Updates to LDML (UTS#35) Part 7: Keyboards are scheduled to be released as part of [CLDR v45](https://cldr.unicode.org/index/downloads/cldr-45). +- Updates to LDML (UTS#35) Part 7: Keyboards have been released as part of [CLDR v45](/index/downloads/cldr-45). Implementations -- The [SIL Keyman](https://keyman.com/ldml/) project is actively working on an open-source implementation of the LDML format. +- The [SIL Keyman](https://keyman.com/ldml/) project has shipped an open-source implementation of the LDML format in Keyman 17.0 (Desktop, and Developer tools). ### How can I get involved? diff --git a/docs/site/index/locale-coverage.md b/docs/site/index/locale-coverage.md index ded10876d7b..5938ba05876 100644 --- a/docs/site/index/locale-coverage.md +++ b/docs/site/index/locale-coverage.md @@ -6,11 +6,11 @@ title: Locale Coverage Special Data ## Missing Features -The following may be listed as Missing features in a Locale Coverage chart, such as [v43 Locale Coverage](https://unicode-org.github.io/cldr-staging/charts/43/supplemental/locale_coverage.html). +The following may be listed as Missing features in a Locale Coverage chart, such as [v45 Locale Coverage](https://www.unicode.org/cldr/charts/45/supplemental/locale_coverage.html). ### Core -These are supplied or generated from data supplied in [Core Data for New Locales](https://cldr.unicode.org/index/cldr-spec/core-data-for-new-locales). +These are supplied or generated from data supplied in [Core Data for New Locales](/index/cldr-spec/core-data-for-new-locales). 1. ***default\_content** — required in supplied core data* 2. ***country\_data** — required in supplied core data* @@ -23,8 +23,8 @@ These are supplied or generated from data supplied in [Core Data for New Locales The following are needed at the Moderate level. *The first three should be present before submitting other moderate data* 1. ***casing** — for bicameral scripts, what is the normal casing for different kinds of fields (country names, language names, etc). Used internally in the Survey Tool.* -2. ***plurals** — the number of different plural forms, and the rules for deriving them. See [Plural Rules](https://cldr.unicode.org/index/cldr-spec/plural-rules)* and [Plurals & Units](https://cldr.unicode.org/translation/getting-started/plurals) -3. ***ordinals** — the number of different plural forms, and the rules for deriving them. See [Plural Rules](https://cldr.unicode.org/index/cldr-spec/plural-rules)* and [Plurals & Units](https://cldr.unicode.org/translation/getting-started/plurals) +2. ***plurals** — the number of different plural forms, and the rules for deriving them. See [Plural Rules](/index/cldr-spec/plural-rules)* and [Plurals & Units](/translation/getting-started/plurals) +3. ***ordinals** — the number of different plural forms, and the rules for deriving them. See [Plural Rules](/index/cldr-spec/plural-rules)* and [Plurals & Units](/translation/getting-started/plurals) 4. ***collation** — rules for the sorting order for a language.* ### Modern diff --git a/docs/site/index/process.md b/docs/site/index/process.md index 2ea6937ad01..6ab24c5d5bd 100644 --- a/docs/site/index/process.md +++ b/docs/site/index/process.md @@ -8,21 +8,21 @@ title: CLDR Process This document describes the Unicode CLDR Technical Committee's process for data collection, resolution, public feedback and release. -- The process is designed to be light-weight; in particular, the meetings are frequent, short, and informal. Most of the work is by email or phone, with a database recording requested changes (See [change request](http://cldr.unicode.org/index/bug-reports)). +- The process is designed to be light-weight; in particular, the meetings are frequent, short, and informal. Most of the work is by email or phone, with a database recording requested changes (See [Requesting Changes](/requesting_changes)). - When gathering data for a region and language, it is important to have multiple sources for that data to produce the most commonly used data. The initial versions of the data were based on best available sources, and updates with new and improvements are released twice a year with work by contributors inside and outside of the Unicode Consortium. - It is important to note that CLDR is a Repository, not a Registration. That is, contributors should NOT expect that their suggestions will simply be adopted into the repository; instead, it will be vetted by other contributors. -- The [CLDR Survey Tool](http://www.unicode.org/cldr/survey_tool.html) is the main channel for collecting data, and bug/feature request are tracked in a database ([CLDR Bug Reports](http://www.unicode.org/cldr/filing_bug_reports.html)). +- The [CLDR Survey Tool](https://st.unicode.org) is the main channel for collecting data, and bug/feature requests are tracked in a database ([file a ticket](/requesting_changes#how-to-file-a-ticket)). - The final approval of the release of any version of CLDR is up to the decision of the CLDR Technical Committee. ## Formal Technical Committee Procedures -For more information on the formal procedures for the Unicode CLDR Technical Committee, see the [Technical Committee Procedures for the Unicode Consortium](http://www.unicode.org/consortium/tc-procedures.html). +For more information on the formal procedures for the Unicode CLDR Technical Committee, see the [Technical Committee Procedures for the Unicode Consortium](https://www.unicode.org/consortium/tc-procedures.html). ## Specification Changes -The [UTS #35: Locale Data Markup Language (LDML)](http://www.unicode.org/reports/tr35/) specification are kept up to date with each release with change/added structure for new data types or other features. +The [UTS #35: Locale Data Markup Language (LDML)](https://www.unicode.org/reports/tr35/) specification are kept up to date with each release with change/added structure for new data types or other features. -- Requests for changes are entered in the bug/feature request database ([CLDR Bug Reports](http://www.unicode.org/cldr/filing_bug_reports.html)). +- Requests for changes are entered in the bug/feature request database ([file a ticket](/requesting_changes#how-to-file-a-ticket)). - Structural changes are always backwards-compatible. That is, previous files will continue to work. Deprecated elements remain, although their usage is strongly discouraged. - There is a standing policy for structural changes that require non-trivial code for proper implementation, such as time zone fallback or alias mechanisms. These require design discussions in the Technical Committee that demonstrates correct function according to the proposed specification. @@ -32,9 +32,8 @@ The contributors of locale data are expected to be language speakers residing in There are two types of data in the repository: -- **Core data** (See [Core data for new locales](http://cldr.unicode.org/index/cldr-spec/minimaldata)): The content is collected from language experts typically with a CLDR Technical Committee member involvement, and is reviewed by the committee. This is required for a new language to be added in CLDR. See also [Exemplar Character Sources](http://www.unicode.org/cldr/filing_bug_reports.html#Exemplar_Characters). -- **Common locale data**: This is the bulk of the CLDR data and data collection occurs twice a year using the Survey tool. (See [How to Contribute](http://cldr.unicode.org/#TOC-How-to-Contribute-).) - +- **Core data** (See [Core data for new locales](/index/cldr-spec/core-data-for-new-locales)): The content is collected from language experts typically with a CLDR Technical Committee member involvement, and is reviewed by the committee. This is required for a new language to be added in CLDR. +- **Common locale data**: This is the bulk of the CLDR data and data collection occurs twice a year using the Survey tool. (See [Getting Started](/translation/getting-started).) The following 4 states are used to differentiate the data contribution levels. The initial data contributions are normally marked as draft; this may be changed once the data is vetted. @@ -65,7 +64,7 @@ These levels are decided by the technical committee and the TC representative fo - TC Organizations that are fully engaged in the CLDR Technical Committee are given a higher vote level of 6 votes to reflect their level of expertise and coordination in the working of CLDR and the survey tool as compared to the normal organization vote level of 4 votes - Liaison or associate members can assign to Guest, or to other levels with approval of the TC. - The liaison/associate member him/herself gets TC status in order to manage users, but gets a Guest status in terms of voting, unless the committee approves a higher level. -- Users assigned to "[unicode.org](http://unicode.org/)" are normally assigned as Guest, but the committee can assign a different level. +- Users assigned to "[unicode.org](https://unicode.org/)" are normally assigned as Guest, but the committee can assign a different level. ### Voting Process @@ -99,11 +98,11 @@ For each release, there is one optimal field value determined by the following: 1. *Established* locales are currently found in [coverageLevels.xml](https://github.com/unicode-org/cldr/blob/master/common/supplemental/coverageLevels.xml), with approvalRequirement\[@votes="8"\] - - Some specific items have an even higher threshold. See approvalRequirement elements in [coverageLevels.xml](http://unicode.org/repos/cldr/trunk/common/supplemental/coverageLevels.xml) for details. + - Some specific items have an even higher threshold. See approvalRequirement elements in [coverageLevels.xml](https://unicode.org/repos/cldr/trunk/common/supplemental/coverageLevels.xml) for details. 2. If the oldStatus is better than the new draft status, then no change is made. Otherwise, the optimal value and its draft status are made part of the new release. - For example, if the new optimal value does not have the status of **approved**, and the previous release had an **approved** value (one that does not have an error and is not a fallback), then that previously-released value stays **approved** and replaces the optimal value in the following steps. -It is difficult to develop a formulation that provides for stability, yet allows people to make needed changes. The CLDR committee welcomes suggestions for tuning this mechanism. Such suggestions can be made by filing a [new ticket](https://cldr.unicode.org/index/bug-reports#TOC-Filing-a-Ticket). +It is difficult to develop a formulation that provides for stability, yet allows people to make needed changes. The CLDR committee welcomes suggestions for tuning this mechanism. Such suggestions can be made by [filing a ticket](/requesting_changes#how-to-file-a-ticket). ## Data- Resolution @@ -121,7 +120,7 @@ If a locale does not have minimal data (at least at a provisional level), then i This process can be fine-tuned by the Technical Committee as needed, to resolve any problems that turn up. A committee decision can also override any of the above process for any specific values. -For more information see the key links in [CLDR Survey Tool](http://www.unicode.org/cldr/survey_tool.html) (especially the Vetting Phase). +For more information see the key links in [CLDR Survey Tool](https://st.unicode.org) (especially the Vetting Phase). **Notes:** - If data has a formal problem, it can be fixed directly (in CVS) without going through the above process. Examples include: @@ -132,12 +131,11 @@ For more information see the key links in [CLDR Survey Tool](http://www.unicode. - The TC committee can authorize bulk submissions of new data directly (CVS), with all new data marked draft="unconfirmed" (or other status decided by the committee), but only where the data passes the CheckCLDR console tests. - The survey tool does not currently handle all CLDR data. For data it doesn't cover, the regular bug system is used to submit new data or ask for revisions of this data. In particular: - Collation, transforms, or text segmentation, which are more complex. - - For collation data, see the comparison charts at [http://www.unicode.org/cldr/comparison\_charts.html](http://www.unicode.org/cldr/comparison_charts.html) or the XML data at [http://unicode.org/cldr/data/common/collation/](http://unicode.org/cldr/data/common/collation/) - - For transforms, see the XML data at [http://unicode.org/cldr/data/common/transforms/](http://unicode.org/cldr/data/common/transforms/) + - For collation data, see the comparison charts at [https://www.unicode.org/cldr/comparison\_charts.html](https://www.unicode.org/cldr/comparison_charts.html) or the XML data at [https://unicode.org/cldr/data/common/collation/](https://unicode.org/cldr/data/common/collation/) + - For transforms, see the XML data at [https://unicode.org/cldr/data/common/transforms/](https://unicode.org/cldr/data/common/transforms/) - Non-linguistic locale data: - - XML data: [http://unicode.org/cldr/data/common/supplemental/](http://unicode.org/cldr/data/common/supplemental/) - - HTML view: [http://www.unicode.org/cldr/data/diff/supplemental/supplemental.html](http://www.unicode.org/cldr/data/diff/supplemental/supplemental.html) - + - XML data: [https://unicode.org/cldr/data/common/supplemental/](https://unicode.org/cldr/data/common/supplemental/) + - HTML view: [https://www.unicode.org/cldr/charts/latest/supplemental/](https://www.unicode.org/cldr/charts/latest/supplemental/) ### Prioritization @@ -159,23 +157,23 @@ The structure and DTD may change, but except for additions or for small bug fixe ## Public Feedback Process -The public can supply formal feedback into CLDR via the [Survey Tool](http://unicode.org/cldr/apps/survey/) or by filing a [Bug Report or Feature Request](http://www.unicode.org/cldr/filing_bug_reports.html). There is also a public forum for questions at [CLDRMailing List](https://www.unicode.org/consortium/distlist.html#cldr_list) (details on archives are found there). +The public can supply formal feedback into CLDR via the [Survey Tool](https://st.unicode.org) or by [filing a ticket](/requesting_changes#how-to-file-a-ticket). There is also a public forum for questions at [CLDR Mailing List](https://www.unicode.org/consortium/distlist.html#cldr_list) (details on archives are found there). -There is also a members-only [CLDRmailing list](https://www.unicode.org/members/index.html#cldr) for members of the CLDR Technical Committee. +There is also a members-only [CLDR mailing list](https://www.unicode.org/members/index.html#cldr) for members of the CLDR Technical Committee. -[Public Review Issues](http://www.unicode.org/review/) may be posted in cases where broader public feedback is desired on a particular issue. +[Public Review Issues](https://www.unicode.org/review/) may be posted in cases where broader public feedback is desired on a particular issue. -Be aware that changes and updates to CLDR will only be taken in response to information entered in the [Survey Tool](http://unicode.org/cldr/apps/survey/) or by filing a [Bug Report or Feature Request](http://www.unicode.org/cldr/filing_bug_reports.html). Discussion on public mailing lists is not monitored; no actions will be taken in response to such discussion -- only in response to filed bugs. The process of checking and entering data takes time and effort; so even when bugs/feature requests are accepted, it may take some time before they are in a release of CLDR. +Be aware that changes and updates to CLDR will only be taken in response to information entered in the [Survey Tool](https://st.unicode.org) or by [filing a ticket](/requesting_changes#how-to-file-a-ticket). Discussion on public mailing lists is not monitored; no actions will be taken in response to such discussion -- only in response to filed bugs. The process of checking and entering data takes time and effort; so even when bugs/feature requests are accepted, it may take some time before they are in a release of CLDR. ## Data Release Process ### Version Numbering -The locale data is frozen per version. Once a version is released, it is never modified. Any changes, however minor, will mean a newer version of the locale data being released. The version numbering scheme is "xy.z", where z is incremented for maintenance releases, and xy is incremented for regular semi-annual releases as defined by the [regular semi-annual schedule](http://cldr.unicode.org/index#TOC-General-Schedule-) +The locale data is frozen per version. Once a version is released, it is never modified. Any changes, however minor, will mean a newer version of the locale data being released. The version numbering scheme is "xy.z", where z is incremented for maintenance releases, and xy is incremented for regular semi-annual releases as defined by the [regular semi-annual schedule](/index#TOC-General-Schedule-) ### Release Schedule -Early releases of a version of the common locale data will be issued as either alpha or beta releases, available for public feedback. The dates for the next scheduled release will be on [CLDR Project](http://www.unicode.org/cldr/index.html). +Early releases of a version of the common locale data will be issued as either alpha or beta releases, available for public feedback. The dates for the next scheduled release will be on [CLDR Project](https://www.unicode.org/cldr/index.html). The schedule milestones are listed below. @@ -192,9 +190,9 @@ Labels in the **Jira** column correspond to the **phase** field in Jira. Phase f ## Meetings and Communication -The currently-scheduled meetings are listed on the [Unicode Calendar](http://www.unicode.org/timesens/calendar.html). Meetings are held by phone, every week at 8:00 AM Pacific Time (-08:00 GMT in winter, -07:00 GMT in summer). Additional meeting is scheduled every other Mondays depending on the need and people's availability. +The currently-scheduled meetings are listed on the [Unicode Calendar](https://www.unicode.org/timesens/calendar.html). Meetings are held by phone, every week at 8:00 AM Pacific Time (-08:00 GMT in winter, -07:00 GMT in summer). Additional meeting is scheduled every other Mondays depending on the need and people's availability. -There is an internal email list for the Unicode CLDR Technical Committee, open to Unicode members and invited experts. All national standards bodies who are interested in locale data are also invited to become involved by establishing a [Liaison membership](http://www.unicode.org/consortium/join.html) in the Unicode Consortium, to gain access to this list. +There is an internal email list for the Unicode CLDR Technical Committee, open to Unicode members and invited experts. All national standards bodies who are interested in locale data are also invited to become involved by establishing a [Liaison membership](https://www.unicode.org/consortium/join.html) in the Unicode Consortium, to gain access to this list. ## Officers diff --git a/docs/site/index/survey-tool.md b/docs/site/index/survey-tool.md index b911d0dfc92..fd1fc772795 100644 --- a/docs/site/index/survey-tool.md +++ b/docs/site/index/survey-tool.md @@ -4,7 +4,7 @@ title: CLDR Survey Tool # CLDR Survey Tool -[**Survey Tool**](https://st.unicode.org/cldr-apps/v#locales///) **|** [**Accounts**](https://cldr.unicode.org/index/survey-tool/survey-tool-accounts) **|** [**Guide**](https://cldr.unicode.org/translation/getting-started/guide) **|** [**FAQ and Known Bugs**](https://cldr.unicode.org/index/survey-tool/faq-and-known-bugs) +[**Survey Tool**](https://st.unicode.org/cldr-apps/v#locales///) **|** [**Accounts**](/index/survey-tool/survey-tool-accounts) **|** [**Guide**](/translation/getting-started/guide) **|** [**FAQ and Known Bugs**](/index/survey-tool/faq-and-known-bugs) ### Introduction @@ -20,11 +20,11 @@ For the Milestone schedule, see the navigation bar on the left. ### Accounts -You don't need an account to view data for a particular language. If you wish to propose changes or additions, you will need an account. For how to get one, see [Survey Tool Accounts](https://cldr.unicode.org/index/survey-tool/survey-tool-accounts). If you would like to add data for a new locale, see [Adding New Locales](https://github.com/unicode-org/cldr/blob/main/docs/requesting_changes.md#adding-new-locales). +You don't need an account to view data for a particular language. If you wish to propose changes or additions, you will need an account. For how to get one, see [Survey Tool Accounts](/index/survey-tool/survey-tool-accounts). If you would like to add data for a new locale, see [Adding New Locales](https://github.com/unicode-org/cldr/blob/main/docs/requesting_changes.md#adding-new-locales). ### Guide -For an overview of how the Survey Tool works, see the [Survey Tool Guide](https://cldr.unicode.org/translation/getting-started/guide). +For an overview of how the Survey Tool works, see the [Survey Tool Guide](/translation/getting-started/guide). ### New Fields @@ -32,5 +32,5 @@ To see a summary of the new fields that will be in the next version of CLDR, see ### Development -For developers, see the [development pages](https://cldr.unicode.org/development/cldr-development-site). +For developers, see the [development pages](/development/cldr-development-site). diff --git a/docs/site/index/survey-tool/bulk-data-upload.md b/docs/site/index/survey-tool/bulk-data-upload.md index 9bb6fdfcd07..b9c9288f8cd 100644 --- a/docs/site/index/survey-tool/bulk-data-upload.md +++ b/docs/site/index/survey-tool/bulk-data-upload.md @@ -9,9 +9,9 @@ Here are the instructions for a bulk upload (of an XML file in LDML format) to t 1. Prepare your xml files \- one per locale. Each file must be valid XML and LDML for a single file. The file doesn't have to be "complete": it might contain only translations of territories, for example. - *(Note: There is a new option that allows you to download from the Dashboard as a spreadsheet, modify the spreadsheet, and then convert that spreadsheet into an XML.  To access this option:
In the menu, choose **Upload(Bulk Import)** and then **Convert XLSX to XML**. Follow the steps from there.)* 2. The locale must exist.  - - If not, see [Adding New Locales](https://cldr.unicode.org/index/bug-reports#New_Locales). + - If not, see [Adding New Locales](/index/bug-reports#New_Locales). 3. You must be logged in, and under an account with permission to write to it. - - If you don't have an account, see [Survey Tool Accounts](http://cldr.unicode.org/index/survey-tool/accounts). + - If you don't have an account, see [Survey Tool Accounts](/index/survey-tool/accounts). - Managers and TC Members can submit on behalf of another user. 4. Go to the menu, under the **Upload ( Bulk Import)**  section. Choose **Upload XML as your Vote**. 5. Put in your email address to submit as yourself. If you manage other users, you may put the email address associated with their survey tool account in to submit a vote as that user. @@ -24,7 +24,7 @@ Here are the instructions for a bulk upload (of an XML file in LDML format) to t 10. You will see a detailed list of the test results for the items you're submitting. - You can click on an item's path link (left hand side) to view that item in the surveytool - Any items with an error icon  will not be submitted. - - If the message is "Item is not writable in the Survey Tool. Please file a ticket." then you will need to [file a ticket](https://cldr.unicode.org/index/bug-reports#TOC-Filing-a-Ticket) instead. These can be filed in a single ticket. Include all the paths and the respective values. + - If the message is "Item is not writable in the Survey Tool. Please file a ticket." then you will need to [file a ticket](/index/bug-reports#TOC-Filing-a-Ticket) instead. These can be filed in a single ticket. Include all the paths and the respective values. 1. Press "Really Submit As My Vote" to submit all passing items as your vote, or revise the file and start back at Step 4. ### Example XML: diff --git a/docs/site/index/survey-tool/coverage.md b/docs/site/index/survey-tool/coverage.md index 539f7eda7cc..b4fbd4db060 100644 --- a/docs/site/index/survey-tool/coverage.md +++ b/docs/site/index/survey-tool/coverage.md @@ -6,7 +6,7 @@ title: Setting Default Coverage Levels ## Introduction to Coverage Level - For an introduction to coverage level, see the appropriate section in TR\#35, "[Coverage Levels](https://www.unicode.org/reports/tr35/tr35-info.html#Coverage_Levels)". -- To see how coverage level is used in the Survey Tool, see "[Advanced Features](https://cldr.unicode.org/translation/getting-started/guide#TOC-Advanced-Features)" in the Survey Tool guide +- To see how coverage level is used in the Survey Tool, see "[Advanced Features](/translation/getting-started/guide#TOC-Advanced-Features)" in the Survey Tool guide ## To set your organization's default coverage levels @@ -31,7 +31,7 @@ An organization that focuses on a small number of locales will probably want to Breton ; br ; modern Breton ; \*  ; moderate -To request a change in the default coverage for your locale, file a [new ticket](https://cldr.unicode.org/index/bug-reports#TOC-Filing-a-Ticket). +To request a change in the default coverage for your locale, file a [new ticket](/index/bug-reports#TOC-Filing-a-Ticket). As part of CLDR v35, the coverage level has been refined further. See ticket \#[11498](https://unicode-org.atlassian.net/browse/CLDR-11498) diff --git a/docs/site/index/survey-tool/faq-and-known-bugs.md b/docs/site/index/survey-tool/faq-and-known-bugs.md index 1c78b8205b8..174457098d0 100644 --- a/docs/site/index/survey-tool/faq-and-known-bugs.md +++ b/docs/site/index/survey-tool/faq-and-known-bugs.md @@ -4,13 +4,13 @@ title: FAQ and Known Bugs # FAQ and Known Bugs -[**Survey Tool**](http://st.unicode.org/cldr-apps/survey) **\|** [**Accounts**](https://cldr.unicode.org/index/survey-tool/survey-tool-accounts) **\|** [**Guide**](https://cldr.unicode.org/translation/getting-started/guide) **\|** [**FAQ and Known Bugs**](https://cldr.unicode.org/index/survey-tool/faq-and-known-bugs) +[**Survey Tool**](http://st.unicode.org/cldr-apps/survey) **\|** [**Accounts**](/index/survey-tool/survey-tool-accounts) **\|** [**Guide**](/translation/getting-started/guide) **\|** [**FAQ and Known Bugs**](/index/survey-tool/faq-and-known-bugs) ## FAQ (Frequently Asked Questions) ***Q. Should I preserve the case of English words, like names of languages?*** -A. Beginning with CLDR 22, the new guidance is that names of items such as languages, regions, calendar and collation types, as well as names of months and weekdays in calendar data, should be capitalized as appropriate for the middle of body text. For more information, see the [Capitalization](https://cldr.unicode.org/translation/translation-guide-general/capitalization) section in the [Translation Guidelines](http://cldr.unicode.org/translation/). +A. Beginning with CLDR 22, the new guidance is that names of items such as languages, regions, calendar and collation types, as well as names of months and weekdays in calendar data, should be capitalized as appropriate for the middle of body text. For more information, see the [Capitalization](/translation/translation-guide-general/capitalization) section in the [Translation Guidelines](/translation/). ***Q. What about the warning about parentheses being discouraged in cases such as "(other)"*** @@ -24,7 +24,7 @@ If you feel a task is taking an unusual amount of time, and it is a consistent p ***Q. How are votes weighted and the "best" item picked?*** -A. You basically want to get multiple organizations to agree on the best value. For details on the voting process, see [Resolution Procedure](https://cldr.unicode.org/index/process). +A. You basically want to get multiple organizations to agree on the best value. For details on the voting process, see [Resolution Procedure](/index/process). ***Q. In the key, it says that the red box is a fallback. What does that mean?*** @@ -56,13 +56,13 @@ A. You should click on the items you have questions about, and read the informat *In many cases, even seemingly straightforward translations like the language, script, and territory names have issues.* -You can also go directly to the [Translation Guidelines](https://cldr.unicode.org/translation). +You can also go directly to the [Translation Guidelines](/translation). If you have further questions, or problems with the Survey Tool, send a message to [cldr\-users@unicode.org](mailto:cldr-users@unicode.org). ## Known Bugs, Issues, Restrictions -The following are general known bugs and issues. For known issues in the current release, see [Translation Guidelines](https://cldr.unicode.org/translation). +The following are general known bugs and issues. For known issues in the current release, see [Translation Guidelines](/translation). 1. The description of bulk uploading (http://cldr.unicode.org/index/survey-tool/upload) has not yet been updated for the new UI. 2. The description of managing users (http://cldr.unicode.org/index/survey-tool/managing-users) has not yet been updated for the new UI. diff --git a/docs/site/index/survey-tool/managing-users.md b/docs/site/index/survey-tool/managing-users.md index 35534e632a5..dde2fef0cdd 100644 --- a/docs/site/index/survey-tool/managing-users.md +++ b/docs/site/index/survey-tool/managing-users.md @@ -6,7 +6,7 @@ title: Managing Users If you have a TC or Manager level account, you can manage other translators (users). When data submission starts, you'll want to Lock the users who are no longer active, add new users, and send messages to your users. For the old users you'll want to resend passwords \-\- it is simplest just to do that for everyone once you've added new users. -When you create users, you give them permissions and choose which locales they are to work on. It is also important that you set your organization's coverage levels appropriately, see "[Setting your Organization's Coverage levels](https://cldr.unicode.org/index/survey-tool/coverage)". +When you create users, you give them permissions and choose which locales they are to work on. It is also important that you set your organization's coverage levels appropriately, see "[Setting your Organization's Coverage levels](/index/survey-tool/coverage)". ## Managing Users @@ -31,7 +31,7 @@ Set the name, email, and locales responsible. To see the locale codes, go to htt ![image](../../images/index/managingUsers3.jpg) Set the Userlevel based on your assessment of the person's skill. Normally this is "Vetter". You can use "Street" for volunteers whom you don't know. People don't have to come from your organization as long as you have confidence in them. -- See the [CLDR Process](https://cldr.unicode.org/index/process) page for a description of the user levels and their privileges. +- See the [CLDR Process](/index/process) page for a description of the user levels and their privileges. *Known bug: if you try to create a user when the user already has an account, you get an unknown error message. Often this is because the user is locked. Click on "Show locked users", find the person, and change the status (see below).* @@ -92,7 +92,7 @@ Later on, in the vetting phase, you can send messages with the outstanding dispu ## To check that all of your important locales have vetters assigned 1. Click the "Show Vetting Participation" link at the left, under the top gray bar. -2. The Gray locales are ones that are not a priority for your organization according to coverage information. (If that's wrong, see "[Changing Your Organization's Coverage Levels](https://cldr.unicode.org/index/survey-tool/coverage)" ) +2. The Gray locales are ones that are not a priority for your organization according to coverage information. (If that's wrong, see "[Changing Your Organization's Coverage Levels](/index/survey-tool/coverage)" ) 3. If you need new locales added, let your committee representative know. 4. To see what the participation of your vetters has been recently, click on the Participation Shown link at the top 1. Note: this has a bug currently where the table becomes very wide \-\- you'll have to scroll or expand your window. diff --git a/docs/site/index/survey-tool/survey-tool-accounts.md b/docs/site/index/survey-tool/survey-tool-accounts.md index 95c9495cd41..30d66e0ff93 100644 --- a/docs/site/index/survey-tool/survey-tool-accounts.md +++ b/docs/site/index/survey-tool/survey-tool-accounts.md @@ -4,7 +4,7 @@ title: Survey Tool Accounts # Survey Tool Accounts -[**Survey Tool**](http://st.unicode.org/cldr-apps/survey) **\|** [**Accounts**](https://cldr.unicode.org/index/survey-tool/survey-tool-accounts) **\|** [**Guide**](https://cldr.unicode.org/translation/getting-started/guide) **\|** [**FAQ and Known Bugs**](https://cldr.unicode.org/index/survey-tool/faq-and-known-bugs) +[**Survey Tool**](http://st.unicode.org/cldr-apps/survey) **\|** [**Accounts**](/index/survey-tool/survey-tool-accounts) **\|** [**Guide**](/translation/getting-started/guide) **\|** [**FAQ and Known Bugs**](/index/survey-tool/faq-and-known-bugs) Anyone is welcome to try out the [**Survey Tool**](http://st.unicode.org/cldr-apps/survey), although only those with accounts will be able to make changes. To get an account, or if you have forgotten your login ID or password, please contact your CLDR TC representative. If you don't belong to a Unicode member organization, and are a native speaker of a language other than American English, you can obtain a guest account. @@ -14,7 +14,7 @@ There are three types of accounts: - Representatives belonging to Unicode member organizations in the CLDR technical committee will receive instructions from their CLDR contacts. - Representatives from other [Unicode member organizations](http://unicode.org/consortium/memblogo.html) (including [liaison members](http://unicode.org/consortium/memblogo.html#liais)) also get more weight in resolving conflicts. So if you are associated with a Unicode member organization, be sure to have that member's Unicode contact submit your name directly for an account. -- If there is an official organization for your language that would like to have liaison status for contributing data, please file a separate ticket under [CLDR Change Requests](https://cldr.unicode.org/index/bug-reports). +- If there is an official organization for your language that would like to have liaison status for contributing data, please file a separate ticket under [CLDR Change Requests](/index/bug-reports). - Other individuals can request accounts via the [Unicode contact form](http://www.unicode.org/reporting.html). In resolving conflicts, they are treated as if they all belong to a single organization ("Guest"). When you request an account, you must list all of the locale(s) that you would like to provide data for, using the locale codes on [Locales](http://unicode.org/cldr/apps/survey?p_codes=t). If the locale is not present in CLDR, you can request that it be added, and you will be expected to provide certain core data to begin the process. Please see [Adding New Locales](https://github.com/unicode-org/cldr/blob/main/docs/requesting_changes.md#adding-new-locales) under [CLDR Change Requests](https://github.com/unicode-org/cldr/blob/main/docs/requesting_changes.md#requesting-changes). diff --git a/docs/site/package-lock.json b/docs/site/package-lock.json index 74410ef94e3..0ce625e0b9e 100644 --- a/docs/site/package-lock.json +++ b/docs/site/package-lock.json @@ -13,6 +13,9 @@ "gray-matter": "^4.0.3", "sitemap": "^8.0.0", "vue": "^3.5.0" + }, + "devDependencies": { + "prettier": "^2.8.8" } }, "node_modules/@babel/helper-string-parser": { @@ -323,6 +326,21 @@ "node": "^10 || ^12 || >=14" } }, + "node_modules/prettier": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "dev": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, "node_modules/sax": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz", diff --git a/docs/site/package.json b/docs/site/package.json index a347f5258d4..6630db4cba0 100644 --- a/docs/site/package.json +++ b/docs/site/package.json @@ -5,7 +5,8 @@ "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "build": "node assets/js/build.mjs", - "postinstall": "mkdir -p assets/vendor ; cp node_modules/vue/dist/vue.global.prod.js assets/vendor" + "postinstall": "mkdir -p assets/vendor ; cp node_modules/vue/dist/vue.global.prod.js assets/vendor", + "pretty": "prettier --no-error-on-unmatched-pattern --write assets/js/cldrsite.js assets/js/build.mjs assets/css/page.css _layouts/*.html" }, "keywords": [], "author": "Steven R. Loomis ", @@ -16,5 +17,8 @@ "gray-matter": "^4.0.3", "sitemap": "^8.0.0", "vue": "^3.5.0" + }, + "devDependencies": { + "prettier": "^2.8.8" } } diff --git a/docs/site/requesting_changes.md b/docs/site/requesting_changes.md index 362e996da23..147d4f0f394 100644 --- a/docs/site/requesting_changes.md +++ b/docs/site/requesting_changes.md @@ -19,8 +19,8 @@ In CLDR Bug Reports, please try to give as much information as possible to help A few areas are particularly tricky. -* For the sort order of a language, see [Collation Guidelines](https://cldr.unicode.org/index/cldr-spec/collation-guidelines) -* For plural rules (ordinals and cardinals), see [Plural Rules](https://cldr.unicode.org/index/cldr-spec/plural-rules) +* For the sort order of a language, see [Collation Guidelines](/index/cldr-spec/collation-guidelines) +* For plural rules (ordinals and cardinals), see [Plural Rules](/index/cldr-spec/plural-rules) ### Requesting updates to locale data through a ticket @@ -37,7 +37,7 @@ Helpful information include: Please file all tickets in English since the people who are reviewing your ticket are likely to not speak your language. You can use automated translation software if you don't speak English well enough, and include the same text in your native language as well. -Note: If you are a regular user of that language you can also contribute directly through the Survey Tool. [More information about the process including opening an account.](https://cldr.unicode.org/index/survey-tool) +Note: If you are a regular user of that language you can also contribute directly through the Survey Tool. [More information about the process including opening an account.](/index/survey-tool) ### How to File a Ticket @@ -46,7 +46,7 @@ The CLDR tickets are located at: https://unicode-org.atlassian.net/projects/CLDR To file a ticket, click the red "Create" button on the top navigation bar. See [Jira documentation](https://support.atlassian.com/jira-work-management/docs/create-issues-and-subtasks/) for additional details on how to create an issue. -You must have an account in order to file tickets. If you do not have an account, you can [request a Jira account](https://id.atlassian.com/signup?continue=https%3A%2F%2Funicode-org.atlassian.net%2Flogin%3FredirectCount%3D1%26dest-url%3Dhttps%253A%252F%252Funicode-org.atlassian.net%252Fprojects%252FCLDR%252Fissues&application=jira). +You must have an account in order to file tickets. If you do not have an account, you can [request a Jira account](https://id.atlassian.com/signup?continue=https%3A%2F%2Funicode-org.atlassian.net%2Flogin%3FredirectCount%3D1%26dest-url%3Dhttps%253A%252F%252Funicode-org.atlassian.net%252Fprojects%252FCLDR%252Fissues&application=jira). ## When to fix in survey tool @@ -55,8 +55,8 @@ during the regular CLDR development cycle. ## Adding New Locales -If you would like to add data for a new locale: +If you would like to add data for a new locale: -* Make sure that you pick the right locale code for the new data. See [Picking the Right Language Code](https://cldr.unicode.org/index/cldr-spec/picking-the-right-language-code) -* Gather the [Core Data for New Locales](https://cldr.unicode.org/index/cldr-spec/core-data-for-new-locales). A new locale is only added if someone commits to supplying/maintaining the data. +* Make sure that you pick the right locale code for the new data. See [Picking the Right Language Code](/index/cldr-spec/picking-the-right-language-code) +* Gather the [Core Data for New Locales](/index/cldr-spec/core-data-for-new-locales). A new locale is only added if someone commits to supplying/maintaining the data. * Follow the instructions above to file a ticket, requesting the addition. Add the language code (#1) and core data (#2) in the ticket) diff --git a/docs/site/sitemap.md b/docs/site/sitemap.md new file mode 100644 index 00000000000..78d2d8da874 --- /dev/null +++ b/docs/site/sitemap.md @@ -0,0 +1,6 @@ +--- +layout: sitemap +title: "CLDR Site Map" +--- + + diff --git a/docs/site/sitemap.tsv b/docs/site/sitemap.tsv index 25aede05196..4eae82ba841 100644 --- a/docs/site/sitemap.tsv +++ b/docs/site/sitemap.tsv @@ -1,26 +1,29 @@ -# CLDR Site Map. -# This is a comment. -# The file is a TSV, tab separated value. -# There must be a single 'index' entry here at the root. -# Every page must be listed. index/charts means index/charts.md for example. -# If an item has 'sub items' it becomes a directory parent. -# You can comment out lines, but an error will be given at build time if a page is missing. +# CLDR Site Map +# The file is a TSV, tab separated value. Keep 3 tabs, for 4 columns (trailing tabs as needed). +# Lines starting with # are comments. +# Every page must be listed that is under: https://github.com/unicode-org/cldr/tree/main/docs/site +# Don't include the .md suffix. eg, index/charts means .../docs/site/index/charts.md +# You can comment out lines, but missing files cause errors. +# If an item has 'sub items' it becomes a directory parent. +# There must be a single 'index' entry here at the root. index index/cldr-spec index/cldr-spec/core-data-for-new-locales index/cldr-spec/coverage-levels index/cldr-spec/collation-guidelines - index/cldr-spec/currency-process index/cldr-spec/picking-the-right-language-code index/cldr-spec/plural-rules index/cldr-spec/transliteration-guidelines index/cldr-spec/definitions + index/bcp47-extension index/downloads + downloads/cldr-47 downloads/cldr-46 downloads/cldr-45 downloads/cldr-44 downloads/cldr-43 index/json-format-data + index/cldr-spec/cldr-json-bindings downloads/previous-releases downloads/cldr-42 downloads/cldr-41 @@ -35,10 +38,10 @@ index downloads/cldr-33 downloads/cldr-32 downloads/cldr-31 - index/charts index/draft-schedule - requesting_changes - index/bcp47-extension + requesting_changes + index/charts + index/acknowledgments cldr-tc cldr-tc/design-wg cldr-tc/message-format-wg @@ -52,11 +55,9 @@ index index/process index/process/cldr-data-retention-policy index/requesting-additionsupdates-to-cldr-languagepopulation-data - stable-links-info covered-by-other-projects - index/cldr-presentations - index/corrigenda - index/acknowledgments + + translation translation/getting-started translation/getting-started/data-stability @@ -142,8 +143,10 @@ index development/cldr-big-red-switch/cldrmodify-passes development/cldr-big-red-switch/cldrmodify-using-config-file development/cldr-big-red-switch/brs-post-items + stable-links-info development/updating development/updating-dtds + index/cldr-spec/currency-process development/cldr-development-site/updating-englishroot development/adding-locales development/updating-codes/adding-new-territory @@ -166,6 +169,9 @@ index development/updating-codes/updating-language-groups development/updating-codes/generate-emoji-paths development/updating-codes/un-literacy + archive + index/cldr-presentations + index/corrigenda development/development-process/design-proposals development/development-process/design-proposals/alternate-time-formats development/development-process/design-proposals/bcp-47-changes-draft @@ -220,3 +226,4 @@ index development/development-process/design-proposals/uts-35-splitting development/development-process/design-proposals/voting development/development-process/design-proposals/xmb + sitemap diff --git a/docs/site/translation.md b/docs/site/translation.md index b0c32429dfa..e2f60b8b4d9 100644 --- a/docs/site/translation.md +++ b/docs/site/translation.md @@ -6,14 +6,14 @@ title: Information Hub for Linguists ### Starting Submission -During Submission, please read the CLDR Training (if new to the survey tool), please focus on the missing, provisional, and errors. Please read the [**Announcements and Updates**](https://cldr.unicode.org/translation#h.pfa5snbaw7ds). For more information about the priorities during Submission, see [Survey Tool stages](https://cldr.unicode.org/translation/getting-started/survey-tool-phases) under **Survey Tool phase: General Submission**. The [Submission phase](https://cldr.unicode.org/translation/getting-started/survey-tool-phases#h.wqmb27e55b4l) lasts until **June 11**; then the [Vetting phase](https://cldr.unicode.org/translation/getting-started/survey-tool-phases#h.ddjb4w32ki37) lasts until **June 30**. +During Submission, please read the CLDR Training (if new to the survey tool), please focus on the missing, provisional, and errors. Please read the [Updates](#updates). For more information about the priorities during Submission, see [Survey Tool stages](translation/getting-started/survey-tool-phases). ### Prerequisites 1. If you're **new to CLDR**, take the CLDR training below. -2. If you're already **experienced with CLDR**, read the Critical reminders section (mandatory). -3. Review the **Status and Schedule, New Areas, Survey Tool**, and **Known Issues**. -4. Once you are ready, go to the [**Survey Tool**](https://st.unicode.org/cldr-apps/) and log in. +2. If you're already **experienced with CLDR**, read the [Critical reminders](#critical-reminders-for-all-linguists) section (mandatory). +3. Review the [Status and Schedule](#status-and-schedule), [New Areas](#new-areas), [Survey Tool](#survey-tool), and [Known Issues](#known-issues). +4. Once you are ready, go to the [Survey Tool](https://st.unicode.org/cldr-apps/) and log in. ### Updates @@ -24,13 +24,13 @@ When a section below changes, the date will be in the header. ## Status and Schedule -The Survey Tool is now open for [Submission](https://cldr.unicode.org/translation/getting-started/survey-tool-phases#h.wqmb27e55b4l) until the start of [Vetting](https://cldr.unicode.org/translation/getting-started/survey-tool-phases#h.ddjb4w32ki37) on June 12th ([schedule](https://docs.google.com/spreadsheets/d/1N6inI5R84UoYlRwuCNPBOAP7ri4q2CmJmh8DC5g-S6c/edit#gid=1680747936)); then the [Vetting phase](https://cldr.unicode.org/translation/getting-started/survey-tool-phases#h.ddjb4w32ki37) lasts until **June 30**. +The Survey Tool has been closed for version 46. For version 47, it is not yet open for [General Submission](translation/getting-started/survey-tool-phases#survey-tool-phase-general-submission). The General Submission phase will be followed by the [Vetting phase](translation/getting-started/survey-tool-phases#survey-tool-phase-vetting). -- **Disconnect error**. If you see a persistent Loading error with a disconnect message or other odd behavior, please [empty your cache](https://cldr.unicode.org/translation). +- **Disconnect error**. If you see a persistent Loading error with a disconnect message or other odd behavior, please [empty your cache](translation/getting-started/empty-cache). - Survey Tool email notification may be going to your spam folder. Check your spam folder regularly. - "**Same as code**" errors - when translating codes for items such as languages, regions, scripts, and keys, it is normally an error to select the code itself as the translated name. If the error appears under Typography, you can ignore it. \[[CLDR-13552](https://unicode-org.atlassian.net/browse/CLDR-13552)\] -## New Areas (2024-05-30) +## New Areas ![alt-text](./images/translation-horizontal-emojis.png) @@ -38,7 +38,7 @@ Most of the following are relevant to locales at the Modern Coverage Level. ### New emoji -Seven new emoji have been added (images above). These will be released in Unicode 16 in September, so they need short names and search keywords. +Seven new emoji have been added (images above). These were released in Unicode 16 in September 2024. ### Emoji search keywords @@ -86,7 +86,6 @@ Seven new emoji have been added (images above). These will be released in Unicod 4. Specific terms for sexuality, unless strongly associated with the emoji, eg \[lgbt|lgbtq |... \] for *rainbow* (🌈), *rainbow flag* (🏳️‍🌈), and *transgender flag* (🏳️‍⚧️). 5. **Note:** The English values have also been reviewed and modified for these rules. - ### New/expanded units 1. Additional units: @@ -99,7 +98,6 @@ Seven new emoji have been added (images above). These will be released in Unicod 3. millimeter-ofhg - used for pressure measurements 4. Beaufort - used for [wind speed](https://en.wikipedia.org/wiki/Beaufort_scale) (only in certain countries) - ### Language names As new locales reach Basic Coverage, their language names have been added for locales targeting modern coverage: Anii, Kuvi, …, Zhuang @@ -108,9 +106,9 @@ As new locales reach Basic Coverage, their language names have been added for lo There is a new metazone for Kazakhstan (which merged its two time zones). -## Survey Tool (2024-05-30) +## Survey Tool -Once trained and up to speed on Critical reminders (above), log in to the [Survey Tool](https://st.unicode.org/cldr-apps/) to begin your work. +Once trained and up to speed on [Critical reminders](#critical-reminders-for-all-linguists) (below), log in to the [Survey Tool](https://st.unicode.org/cldr-apps/) to begin your work. ### Survey Tool Changes @@ -123,10 +121,7 @@ Once trained and up to speed on Critical reminders (above), log in to the [Surve 1. Pages may be split, and/or retitled 2. Rows may move to a different page. 5. In the Dashboard, the Abstains items will now only have one entry per page. You can use that entry to go to its page, and then fix Abstains on that page. Once you are done on that page, hit the Dashboard refresh button (↺). This fixes a performance problem for people with a large number of Abstains, and reduces clutter in the Dashboard. -6. The symbols in the A column have been changed to be searchable in browsers (with *Find in Page*) and stand out - - -more on the page. See below for a table. They override the symbols in [Survey Tool Guide: Icons](https://cldr.unicode.org/translation/getting-started/guide#h.fbq7vldvjuz4). +6. The symbols in the A column have been changed to be searchable in browsers (with *Find in Page*) and stand out more on the page. See below for a table. They override the symbols in [Survey Tool Guide: Icons](translation/getting-started/guide#icons). ### Important Notes @@ -143,24 +138,22 @@ more on the page. See below for a table. They override the symbols in [Survey To | 🕳️ | Missing | Completely missing | | ⬆️ | Inherited | Used in combination with ✖️ and ❌ | -## Known Issues (2024-06-03) +## Known Issues -This list will be updated as fixes are made available in Survey Tool Production. If you find a problem, please [file a ticket](https://github.com/unicode-org/cldr/blob/main/docs/requesting_changes.md), but please review this list first to avoid creating duplicate tickets. +This list will be updated as fixes are made available in Survey Tool Production. If you find a problem, please [file a ticket](requesting_changes), but please review this list first to avoid creating duplicate tickets. 1. [CLDR-17694](https://unicode-org.atlassian.net/browse/CLDR-17694) - Back button in browser fails in forum under certain conditions 2. [CLDR-17693](https://unicode-org.atlassian.net/browse/CLDR-17693) SurveyTool fatal in getDBConnection 3. [CLDR-17658](https://unicode-org.atlassian.net/browse/CLDR-17658) - Dashboard slowness -4. Images for the plain symbols. Non-emoji such as [€](https://cldr-smoke.unicode.org/smoketest/v#/fr/Symbols2/47925556fd2904b5), √, », ¹, §, ... do not have images in the info pane. \[[CLDR-13477](https://unicode-org.atlassian.net/browse/CLDR-13477)\]**Workaround**: Look at the Code column; unlike the new emoji, your browser should display them there. +4. Images for the plain symbols. Non-emoji such as [€](https://cldr-smoke.unicode.org/smoketest/v#/fr/Symbols2/47925556fd2904b5), √, », ¹, §, ... do not have images in the Info Panell. \[[CLDR-13477](https://unicode-org.atlassian.net/browse/CLDR-13477)\]**Workaround**: Look at the Code column; unlike the new emoji, your browser should display them there. 5. [CLDR-17683](https://unicode-org.atlassian.net/browse/CLDR-17683) - Some items are not able to be flagged for TC review. This is being investigated.Meanwhile, Please enter forum posts meanwhile with any comments. - ## Resolved Issues 1. [CLDR-17465](https://unicode-org.atlassian.net/browse/CLDR-17465) - dashboard download fails 2. [CLDR-17671](https://unicode-org.atlassian.net/browse/CLDR-17671) - survey tool search fails 3. [CLDR-17652](https://unicode-org.atlassian.net/browse/CLDR-17652) - Manual import of votes fails - ## Recent Changes 1. [*CLDR-17658*](https://unicode-org.atlassian.net/browse/CLDR-17658) - In the Dashboard, the Abstains items will only have one entry per page. You can use that entry to go to its page, and then fix Abstains on that page. Once you are done on that page, hit the Dashboard refresh button (↺). This fixes a performance problem for people with a large number of Abstains, and reduces clutter in the Dashboard. @@ -169,41 +162,39 @@ This list will be updated as fixes are made available in Survey Tool Production. Before getting started to contribute data in CLDR, and jumping in to using the Survey Tool, it is important that you understand the CLDR process & take the CLDR training. It takes about 2-3 hours to complete the training. -1. **Understand the basics about the CLDR process** read the [Survey Tool Guide](https://cldr.unicode.org/translation/getting-started/guide) and an overview of the [Survey Tool Stages](https://cldr.unicode.org/translation/getting-started/survey-tool-phases). +1. **Understand the basics about the CLDR process** read the [Survey Tool Guide](translation/getting-started/guide) and an overview of the [Survey Tool Stages](translation/getting-started/survey-tool-phases). - New: A [video is available](https://www.youtube.com/watch?v=Wxs0TZl7Ljk) which shows how to login and begin contributing data for your locale. 2. **Read the Getting Started topics** on the Information Hub: - General translation guide - - [Capitalization](https://cldr.unicode.org/translation/translation-guide-general/capitalization) - - [Default Content](https://cldr.unicode.org/translation/translation-guide-general/default-content) - - [References](https://cldr.unicode.org/translation/translation-guide-general/references) - - [Handling Errors and Warnings](https://cldr.unicode.org/translation/getting-started/errors-and-warnings) - - [Handling Logical Group Errors](https://cldr.unicode.org/translation/getting-started/resolving-errors) - - [Plurals & Units](https://cldr.unicode.org/translation/getting-started/plurals) - - [Review Date & Time](https://cldr.unicode.org/translation/date-time) - - [Review Numbers](https://cldr.unicode.org/translation/number-currency-formats) - - [Review Zones](https://cldr.unicode.org/translation/time-zones-and-city-names) - - [Data stability](https://cldr.unicode.org/translation/getting-started/data-stability) - - [Empty cache](https://cldr.unicode.org/translation/getting-started/empty-cache) - -\*If you (individual or your organization) have not established a connection with the CLDR technical committee, start with [Survey Tool Accounts](https://cldr.unicode.org/index/survey-tool/survey-tool-accounts). + - [Capitalization](translation/translation-guide-general/capitalization) + - [Default Content](translation/translation-guide-general/default-content) + - [References](translation/translation-guide-general/references) + - [Handling Errors and Warnings](translation/getting-started/errors-and-warnings) + - [Handling Logical Group Errors](translation/getting-started/resolving-errors) + - [Plurals & Units](translation/getting-started/plurals) + - [Review Date & Time](translation/date-time) + - [Review Numbers](translation/number-currency-formats) + - [Review Zones](translation/time-zones-and-city-names) + - [Data stability](translation/getting-started/data-stability) + - [Empty cache](translation/getting-started/empty-cache) + +\*If you (individual or your organization) have not established a connection with the CLDR technical committee, start with [Survey Tool Accounts](index/survey-tool/survey-tool-accounts). ## Critical reminders (for all linguists) You're already familiar with the CLDR process, but do keep the following in mind: 1. **Aim at commonly used language** - CLDR should reflect *common-usage* standards **not** *academic /official* standards (unless commonly followed). Keep that perspective in mind. -2. **Carefully consider changes to existing standards** - any change to an existing CLDR standard should be carefully considered and discussed with your fellow linguists in the CLDR [Forum](https://cldr.unicode.org/translation/getting-started/guide#h.fx4wl2fl31az). Remember your change will be reflected across thousands of online products! +2. **Carefully consider changes to existing standards** - any change to an existing CLDR standard should be carefully considered and discussed with your fellow linguists in the CLDR [Forum](translation/getting-started/guide#forum). Remember your change will be reflected across thousands of online products! 3. **Keep consistency across logical groups** - ensure that all related entries are consistent. If you change the name of a weekday, make sure it's reflected across all related items. Check that the order of month and day are consistent in all the date formats, etc. - - *Tip: The [Reports](https://cldr.unicode.org/translation/getting-started/review-formats) are a great way to validate consistency across related logical groups, e.g. translations of date formats. Use them to proofread your work for consistency.* + - *Tip: The [Reports](translation/getting-started/review-formats) are a great way to validate consistency across related logical groups, e.g. translations of date formats. Use them to proofread your work for consistency.* 4. **Avoid voting for English** - for items that do not work in your language, don't simply use English. Find a solution that works for your language. For example, if your language doesn't have a concept of calendar "quarters", use a translation that describes the concept "three-month period" rather than "quarter-of-a-year". 5. **Watch out for complex sections** and read the instructions carefully if in doubt: - 1. [Date & Time](https://cldr.unicode.org/translation/date-time/date-time-names) - - [Names](https://cldr.unicode.org/translation/date-time/date-time-names) - - [Patterns](https://cldr.unicode.org/translation/date-time) - - [Symbols](https://cldr.unicode.org/translation/date-time/date-time-symbols) - 2. [Time zones](https://cldr.unicode.org/translation/time-zones-and-city-names) - 3. [Plural forms](https://cldr.unicode.org/translation/getting-started/plurals) - - -*Tip: The links in the [Info Panel](https://cldr.unicode.org/translation/getting-started/guide#h.2jch1980f8sy) will point you to relevant instructions for the entry you're editing/vetting. Use it if in doubt.* - + 1. [Date & Time](translation/date-time/date-time-names) + - [Names](translation/date-time/date-time-names) + - [Patterns](translation/date-time) + - [Symbols](translation/date-time/date-time-symbols) + 2. [Time zones](translation/time-zones-and-city-names) + 3. [Plural forms](translation/getting-started/plurals) + +*Tip: The links in the [Info Panel](translation/getting-started/guide#info-panel) will point you to relevant instructions for the entry you're editing/vetting. Use it if in doubt.* diff --git a/docs/site/translation/characters.md b/docs/site/translation/characters.md index 20714b589c1..278ac18a738 100644 --- a/docs/site/translation/characters.md +++ b/docs/site/translation/characters.md @@ -5,8 +5,4 @@ title: Characters # Characters Characters category in the Survey tool include data that surrounds support for Emoji, Symbols, and Typography names. - -- [Character Labels](https://cldr.unicode.org/translation/characters/character-labels) -- [Emoji Names and Keywords](https://cldr.unicode.org/translation/characters/short-names-and-keywords) -- [Typographic Names](https://cldr.unicode.org/translation/characters/typographic-names) - +See the subpages in the sidebar. diff --git a/docs/site/translation/characters/short-names-and-keywords.md b/docs/site/translation/characters/short-names-and-keywords.md index 6192a0acbfb..dc2629faf60 100644 --- a/docs/site/translation/characters/short-names-and-keywords.md +++ b/docs/site/translation/characters/short-names-and-keywords.md @@ -71,7 +71,7 @@ Many of the emoji names are constructed, which means that in implementations emo - For the Character > Categories > Label (such as [French](https://st.unicode.org/cldr-apps/v#/fr/Category/19624f4413eaac8b)), whether or not a label is plural will depend on the label and the language. The pluralization choice will not necessarily follow the English. ## Short Character Names -In CLDR we provide descriptive but short names for the characters across languages. (For reference, see [Background: Unicode Std. vs CLDR names](https://cldr.unicode.org/translation/characters-emoji-symbols/short-names-and-keywords%23TOC-Background:-Unicode-Std.-vs-CLDR-names).) +In CLDR we provide descriptive but short names for the characters across languages. (For reference, see [Background: Unicode Std. vs CLDR names](/translation/characters-emoji-symbols/short-names-and-keywords%23TOC-Background:-Unicode-Std.-vs-CLDR-names).) Goals for the short names collected in CLDR are: @@ -82,12 +82,12 @@ Goals for the short names collected in CLDR are: | **Descriptive** | Be descriptive of the prevailing color images. Don't be "over-descriptive", however. The descriptions only have to be enough to distinguish each image from the others: they shouldn't have any details beyond that. | | **Consistent** | Be consistent across images with similar features. (Don’t call 📫 a _mailbox_ and 📬 a _post box_). | | **Flexible** | It is **not a goal** to be immutable: in future versions of CLDR, you can improve names by casing new suggestions if a more appropriate names are available. | -| **Not Literal** | Names should **not just be literal translations** of the English-- the names should be based on associations to the image _in your language._ But you can be _informed_ by the English names. (Exceptions to this when there is no equivalent in your language. See [Emoji specific to a country/region](https://cldr.unicode.org/translation/characters-emoji-symbols/short-names-and-keywords#TOC-FAQ-Tips-for-character-names-and-keywords)) | +| **Not Literal** | Names should **not just be literal translations** of the English-- the names should be based on associations to the image _in your language._ But you can be _informed_ by the English names. (Exceptions to this when there is no equivalent in your language. See [Emoji specific to a country/region](/translation/characters-emoji-symbols/short-names-and-keywords#TOC-FAQ-Tips-for-character-names-and-keywords)) | When voting on the emoji names and keywords: -- Follow the middle of sentence rule. See [Capitalization](https://cldr.unicode.org/translation/translation-guide-general/capitalization) guideline. -- As usual, the names in “en” are American English; where necessary those are customized for “en-GB”. For differences for sub-locale, see [Regional Variant](https://cldr.unicode.org/translation/getting-started/guide#TOC-Regional-Variants-also-known-as-Sub-locales-) guideline. +- Follow the middle of sentence rule. See [Capitalization](/translation/translation-guide-general/capitalization) guideline. +- As usual, the names in “en” are American English; where necessary those are customized for “en-GB”. For differences for sub-locale, see [Regional Variant](/translation/getting-started/guide#TOC-Regional-Variants-also-known-as-Sub-locales-) guideline. ### Unique Names diff --git a/docs/site/translation/characters/typographic-names.md b/docs/site/translation/characters/typographic-names.md index adfdf738171..17dbe97976c 100644 --- a/docs/site/translation/characters/typographic-names.md +++ b/docs/site/translation/characters/typographic-names.md @@ -21,11 +21,11 @@ The most common problem is giving the same name to two *different* fields. For e **Slant vs Italic** -1. Slant is different than italic: in the latter, the characters are slanted, but also usually different shapes. See [Italic](http://cldr.unicode.org/translation/characters-emoji-symbols/typographic-names/italic.png). +1. Slant is different than italic: in the latter, the characters are slanted, but also usually different shapes. See [Italic](/translation/characters-emoji-symbols/typographic-names/italic.png). **Width vs Weight** -1. The wdth-100 and wght-400 (which are *normal* and *regular* in English) must have different names: *normal* is width (how wide the character is — see [Width](http://cldr.unicode.org/translation/characters-emoji-symbols/typographic-names/optical-size.png)), and *regular* is boldness (how heavy the lines in the character are — see [Weight](http://cldr.unicode.org/translation/characters-emoji-symbols/typographic-names/font-weight-2.png)). If there is not a distinction in your language, you can qualify, eg *normal-width* +1. The wdth-100 and wght-400 (which are *normal* and *regular* in English) must have different names: *normal* is width (how wide the character is — see [Width](/translation/characters-emoji-symbols/typographic-names/optical-size.png)), and *regular* is boldness (how heavy the lines in the character are — see [Weight](/translation/characters-emoji-symbols/typographic-names/font-weight-2.png)). If there is not a distinction in your language, you can qualify, eg *normal-width* 2. Similarly wdth-125 and wght-700 (in English: *wide* and *bold*) need to be different (width vs boldness) 3. However, only the first two parts of the code make a difference (up to and including the number). The last part (after the number) is purely optional. You only need to have different names for the optional ones if your language really has alternative names for the same feature. That means that you can give the same names to each of the following: - wdth-50 diff --git a/docs/site/translation/core-data.md b/docs/site/translation/core-data.md index ff5cd0e3998..348420be5c3 100644 --- a/docs/site/translation/core-data.md +++ b/docs/site/translation/core-data.md @@ -5,8 +5,4 @@ title: Core Data # Core Data These pages describe certain core data needed by CLDR. - -- [Alphabetic Information](https://cldr.unicode.org/translation/core-data/characters) -- [Exemplar Characters](https://cldr.unicode.org/translation/core-data/exemplars) -- [Numbering Systems](https://cldr.unicode.org/translation/core-data/numbering-systems) - +See the subpages in the sidebar. diff --git a/docs/site/translation/core-data/characters.md b/docs/site/translation/core-data/characters.md index 71f8e824fad..de536877d1b 100644 --- a/docs/site/translation/core-data/characters.md +++ b/docs/site/translation/core-data/characters.md @@ -63,7 +63,7 @@ Currently the CLDR survey tool checks input delimiters against a predefined set ‘ U+2018 LEFT SINGLE QUOTATION MARK ’ U+2019 RIGHT SINGLE QUOTATION MARK ‚ U+201A SINGLE LOW-9 QUOTATION MARK “ U+201C LEFT DOUBLE QUOTATION MARK ” U+201D RIGHT DOUBLE QUOTATION MARK „ U+201E DOUBLE LOW-9 QUOTATION MARK 「 U+300C LEFT CORNER BRACKET 」 U+300D RIGHT CORNER BRACKET 『 U+300E LEFT WHITE CORNER BRACKET 』 U+300F RIGHT WHITE CORNER BRACKET ‹ U+2039 SINGLE LEFT-POINTING ANGLE QUOTATION MARK › U+203A SINGLE RIGHT-POINTING ANGLE QUOTATION MARK « U+00AB LEFT-POINTING DOUBLE ANGLE QUOTATION MARK » U+00BB RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK -If you need to enter a delimiter that is not one of the characters on this list, please file a new ticket by following [these instructions](https://cldr.unicode.org/index/bug-reports). +If you need to enter a delimiter that is not one of the characters on this list, please file a new ticket by following [these instructions](/index/bug-reports). ## Yes/No diff --git a/docs/site/translation/core-data/exemplars.md b/docs/site/translation/core-data/exemplars.md index 0348425e645..3e8820cbeed 100644 --- a/docs/site/translation/core-data/exemplars.md +++ b/docs/site/translation/core-data/exemplars.md @@ -110,7 +110,7 @@ Three possible solutions: 2. For currencies, if the character is part of a 'gloss', that is, it is parenthetically included for reference, and the gloss is all ASCII, then include it in brackets. You can use [square brackets] or (parentheses) in currencies. Everywhere else, please use only square brackets. - So the XAF above can be fixed by changing it to "Φράγκο [BEAC CFA]" or "Φράγκο (BEAC CFA)". For the timezone name "ACT (Ακρ)", the fix is to change to "Ακρ [ACT]". 3. If neither of these approaches is appropriate, try rephrasing the translated item to avoid the character. -4. If it really can't be avoided, then please file a [new ticket](https://cldr.unicode.org/index/bug-reports#TOC-Filing-a-Ticket) describing the problem. +4. If it really can't be avoided, then please file a [new ticket](/index/bug-reports#TOC-Filing-a-Ticket) describing the problem. **B. The exemplar characters shouldn't contain a particular character.** diff --git a/docs/site/translation/currency-names-and-symbols.md b/docs/site/translation/currency-names-and-symbols.md index a6d6fca5cd4..dfebcd564ca 100644 --- a/docs/site/translation/currency-names-and-symbols.md +++ b/docs/site/translation/currency-names-and-symbols.md @@ -25,7 +25,7 @@ Guidelines: ## Symbols -The following general guidelines are used for currency symbols. These guidelines are also subject to the CLDR [Currency Process](https://cldr.unicode.org/index/cldr-spec/currency-process). +The following general guidelines are used for currency symbols. These guidelines are also subject to the CLDR [Currency Process](/index/cldr-spec/currency-process). 1. If a symbol is not widely recognized around the world (eg shekel ₪) 1. Where the currency is official in a country, use that symbol in locales with that country (eg IL) diff --git a/docs/site/translation/currency-names-and-symbols/currency-names.md b/docs/site/translation/currency-names-and-symbols/currency-names.md index 439ba8afc12..7ef7c8f43ba 100644 --- a/docs/site/translation/currency-names-and-symbols/currency-names.md +++ b/docs/site/translation/currency-names-and-symbols/currency-names.md @@ -4,7 +4,7 @@ title: Currency Symbols # Currency Symbols -Each currency code such as USD or EUR can be represented in several ways, as given in the table below. Be sure to look at the international symbol to see which currency is being translated. For example, the English examples below are for USD. The Symbol and International code will be used in number patterns, as shown in the Examples of Usage. For more information, see [Number Patterns](https://cldr.unicode.org/translation/number-currency-formats/number-and-currency-patterns). +Each currency code such as USD or EUR can be represented in several ways, as given in the table below. Be sure to look at the international symbol to see which currency is being translated. For example, the English examples below are for USD. The Symbol and International code will be used in number patterns, as shown in the Examples of Usage. For more information, see [Number Patterns](/translation/number-currency-formats/number-and-currency-patterns). | Type | Code | Example | Examples of Usage | Meaning | |---|---|---|---|---| @@ -14,7 +14,7 @@ Each currency code such as USD or EUR can be represented in several ways, as giv | International Code | USD | n/a | **USD** 12,345.68 | International symbol used in formatting currency amounts. Normally, this is not under translator control, so you won't even see these presented for translation, but they can be specified by the programmer. | | International Code | EUR | n/a | **EUR** 12,345.68 | ... | | Name | USD | **US Dollar** | **Dollar des États-Unis** | Descriptive name of the currency. It should be the most neutral grammatical form for your language, appropriate for menus. Typically this is nominative singular, but the conventions may be different for your language.
To provide greatest flexibility, this should use capitalization appropriate for the **middle of a sentence** . CLDR has separate contextTransforms data to specify how this should be programmatically capitalized (if at all) for different contexts such as use in menus, stand-alone use (e.g. a web page title), etc. | -| Plural forms (e.g. name-other, name-one, name-few, ...) | USD | 1 **US dollar** vs 2 **US dollars** | 1 **US dollar** vs 2 **US dollars** | Use the plural fields such as name-other and possibly name-one, name-few, etc. to indicate the different plural form(s) if plural forms are used in your language. If they are not used, typically only the name-other plural form will be shown. Follow the general [capitalization guidance](https://cldr.unicode.org/translation/translation-guide-general/capitalization) . Also see Plurals for general information on plural handling in CLDR. | +| Plural forms (e.g. name-other, name-one, name-few, ...) | USD | 1 **US dollar** vs 2 **US dollars** | 1 **US dollar** vs 2 **US dollars** | Use the plural fields such as name-other and possibly name-one, name-few, etc. to indicate the different plural form(s) if plural forms are used in your language. If they are not used, typically only the name-other plural form will be shown. Follow the general [capitalization guidance](/translation/translation-guide-general/capitalization) . Also see Plurals for general information on plural handling in CLDR. | Note: in some cases, the English currency symbol may appear as box, typically because you don't have fonts for all of the characters. This is especially the case for currency symbols recently added to Unicode, such as the following: diff --git a/docs/site/translation/date-time.md b/docs/site/translation/date-time.md index 1acb75c72e9..c20662eb5d5 100644 --- a/docs/site/translation/date-time.md +++ b/docs/site/translation/date-time.md @@ -4,8 +4,5 @@ title: Date & Time # Date & Time -- [Date & Time terminology](https://cldr.unicode.org/translation/date-time/date-times-terminology) -- [Date/Time Names](https://cldr.unicode.org/translation/date-time/date-time-names) -- [Date/Time Patterns](https://cldr.unicode.org/translation/date-time/date-time-patterns) -- [Date/Time Symbols](https://cldr.unicode.org/translation/date-time/date-time-symbols) - +Date and time data provides information for formatting dates, times, timezones, datetime intervals (eg, Dec 15-18), and so on. +See the subpages in the sidebar. diff --git a/docs/site/translation/date-time/date-time-names.md b/docs/site/translation/date-time/date-time-names.md index eb06e802c2e..2d713bf5679 100644 --- a/docs/site/translation/date-time/date-time-names.md +++ b/docs/site/translation/date-time/date-time-names.md @@ -4,7 +4,7 @@ title: Date/Time Names # Date/Time Names -Date/Time names is required topic to work in [Date/Time Patterns](https://cldr.unicode.org/translation/date-time/date-time-patterns). +Date/Time names is required topic to work in [Date/Time Patterns](/translation/date-time/date-time-patterns). ## Textual Fields @@ -14,12 +14,12 @@ Certain calendar fields can have both numeric and textual forms. **Textual forms - Wide (e.g. Sunday) - Abbreviated (e.g Sun) - Narrow (e.g. S) - - There are two styles. For more information, see [When to use standalone vs. formatting](https://cldr.unicode.org/translation/date-time-1/date-time-patterns#TOC-When-to-use-Standalone-vs.-Formatting) in Date/Time patterns. + - There are two styles. For more information, see [When to use standalone vs. formatting](/translation/date-time/date-time-patterns#when-to-use-standalone-vs-formatting) in Date/Time patterns. - Formatting - Standalone -- Capitalization should follow the middle of a sentence rule. For more information, see [Capitalization](https://cldr.unicode.org/translation/translation-guide-general/capitalization).   +- Capitalization should follow the middle of a sentence rule. For more information, see [Capitalization](/translation/translation-guide-general/capitalization).   - \ data can specify the capitalization for other contexts; currently this is not available in the Survey Tool, so you must file a CLDR JIRA ticket to request a change. - - Most sets of names form [Logical Groups](https://cldr.unicode.org/translation/getting-started/resolving-errors), and you need to make sure they have the same contribution status (e.g. Status: Approved) or you will get error messages. See [Logical Groups](https://cldr.unicode.org/translation/getting-started/resolving-errors) for more information. + - Most sets of names form [Logical Groups](/translation/getting-started/resolving-errors), and you need to make sure they have the same contribution status (e.g. Status: Approved) or you will get error messages. See [Logical Groups](/translation/getting-started/resolving-errors) for more information. ## Date Field Names @@ -31,7 +31,7 @@ The date field _names_ are used in user interfaces on computer systems as labels | Month | ... | | Day | ... | -The grammatical form should be whatever is typical for such isolated or stand-alone cases: generally it will be nominative singular. The letter casing should be appropriate for middle-of-sentence use, since there is now separate capitalization context data that can specify how these should be capitalized for use in a label. Also see the translation guide on [Capitalization](https://cldr.unicode.org/translation/translation-guide-general/capitalization).  +The grammatical form should be whatever is typical for such isolated or stand-alone cases: generally it will be nominative singular. The letter casing should be appropriate for middle-of-sentence use, since there is now separate capitalization context data that can specify how these should be capitalized for use in a label. Also see the translation guide on [Capitalization](/translation/translation-guide-general/capitalization).  There are three lengths: full, short, and narrow. They are listed below along with English examples and explanations (a few of the fields are not straightforward). @@ -60,7 +60,7 @@ Era names are in Gregorian Calendar and other calendars: - There are only two values for an era in a Gregorian calendar. - The common use of these era names in English are more for religious forms. "BC" (Before Christ) and AD (Anno Domini)" - from the Latin for "The year of our Lord". - The secular equivalents of these two era names are "BCE" (Before Common Era) and "CE" (Common Era). -- Other calendars (see [Different calendars in Date/Time patterns](https://cldr.unicode.org/translation/date-time-1/date-time-patterns#TOC-Different-Calendars-)) have a different numbers of eras. +- Other calendars (see [Different calendars in Date/Time patterns](/translation/date-time/date-time-patterns#different-calendars)) have a different numbers of eras. - The names for eras are often specific to the given calendar, such as the Japanese era names. - If other calendars are in common use in one of the countries/regions that use your language, other calendars will show under the modern coverage level. @@ -77,7 +77,7 @@ In the Gregorian calendar, these designate the four three-month periods often us This field is one of the months of the year, such as January or February.  - In many languages, it is not common to use abbreviated months. The preferred way to address this is using date/time patterns that never use the abbreviated months MMM or LLL, as explained in [Patterns without abbreviated months](https://cldr.unicode.org/translation/date-time/date-time-patterns).  + In many languages, it is not common to use abbreviated months. The preferred way to address this is using date/time patterns that never use the abbreviated months MMM or LLL, as explained in [Patterns without abbreviated months](/translation/date-time/date-time-patterns).  💡 **Translation Tips** @@ -86,7 +86,7 @@ This field is one of the months of the year, such as January or February.  - Used in patterns with a day number. (e.g. Finnish, and many Slavic languages distinguish between nominative and genitive/related) - Use the type such as the nominative case for **Standalone** month names. - Used in pattern without a day number. -- The specific values that are used in the format and stand-alone names need to be closely co-ordinated with the date patterns that will use them. See [When to use standalone vs. format names](https://cldr.unicode.org/translation/date-time-1/date-time-patterns#TOC-When-to-use-Standalone-vs.-Formatting) in Date/Time patterns. +- The specific values that are used in the format and stand-alone names need to be closely co-ordinated with the date patterns that will use them. See [When to use standalone vs. format names](/translation/date-time/date-time-patterns#when-to-use-standalone-vs-formatting) in Date/Time patterns. - Some languages (for example, Catalan) use a preposition to combine the month and day number like in the format “11 de setembre” (11 of September). If the month name begins with a vowel, the preposition is contracted, for example, “12 d’octubre - Include the preposition in its correct form (contracted or not) for formatting month names - DO NOT include the preposition for standalone month names and in patterns that use standalone month names @@ -95,7 +95,7 @@ This field is one of the months of the year, such as January or February.  This field is one of the days of the week: Monday, Tuesday, Wednesday, etc... -Same as month names, you need to use different symbols to coordinate use of standalone (e.g. cccc) and format names (e.g. EEEE) in patterns. See [When to use standalone vs. format names](https://cldr.unicode.org/translation/date-time-1/date-time-patterns#TOC-When-to-use-Standalone-vs.-Formatting) in Date/Time patterns. +Same as month names, you need to use different symbols to coordinate use of standalone (e.g. cccc) and format names (e.g. EEEE) in patterns. See [When to use standalone vs. format names](/translation/date-time/date-time-patterns#when-to-use-standalone-vs-formatting) in Date/Time patterns. 💡 **Translation Tips** @@ -107,7 +107,7 @@ Same as month names, you need to use different symbols to coordinate use of stan AM/PM (special handling for locales using 24 hrs) -Also see [Additional Date/time formats](https://cldr.unicode.org/translation/date-time-1/date-time-patterns#TOC-Additional-Date-Time-Formats).  +Also see [Additional Date/time formats](/translation/date-time/date-time-patterns#additional-date-time-formats).  💡 **Translation Tips** @@ -169,7 +169,7 @@ In formatting, where your language has a term for midnight, it is used instead o These mark approximate periods in the day, _and those periods differ between languages_. The codes are arbitrary, and don't have to match the English meaning for your language: the important feature is the time span. The spans are approximate; in reality they may vary with the time of year (they might be dependent on sunrise), or context (someone might say they went to bed at 2 at night, and later one say that they woke up at 2 in the morning).  -**For a list of the day period IDs defined in CLDR for your language, see [Day Periods](https://www.unicode.org/cldr/charts/45/supplemental/day_periods.html)**. If you think the rules are wrong (or missing) for your language, please [file a ticket](https://cldr.unicode.org/index/bug-reports#TOC-Filing-a-Ticket) and supply the missing information. Here are examples for English and Chinese. +**For a list of the day period IDs defined in CLDR for your language, see [Day Periods](https://www.unicode.org/cldr/charts/45/supplemental/day_periods.html)**. If you think the rules are wrong (or missing) for your language, please [file a ticket](/requesting_changes#how-to-file-a-ticket) and supply the missing information. Here are examples for English and Chinese. | Code | English | Span | Chinese | Span | |---|---|---|---|---| @@ -234,7 +234,7 @@ These relative names can be programmatically capitalized (using the contextTrans 💡 **Translation Tips** -- There is a difference between unit patterns (_see [Plurals](https://cldr.unicode.org/translation/getting-started/plurals)_) such as "1 year ago" and relative names such as "Last Year". +- There is a difference between unit patterns (_see [Plurals](/translation/getting-started/plurals)_) such as "1 year ago" and relative names such as "Last Year". - Consider: - The phrase "1 year ago" has more of sense of a _duration_. - The phrase "last year" is more sense of relativity to current (For example, on January 2nd, 2019, to refer to an event on December 30th, 2018, you would refer to it as "last year", but NOT "1 year ago." @@ -244,7 +244,7 @@ These relative names can be programmatically capitalized (using the contextTrans ### Week of -There are a number of patterns like “the week of {0}” used for constructions such as “the week of April 11, 2016” or “the week of April 11–15”. The placeholder can be a full or partial date. There are related week-of date pattern that it should be as consistent with as possible, described [here](https://cldr.unicode.org/translation/date-time/date-time-patterns). +There are a number of patterns like “the week of {0}” used for constructions such as “the week of April 11, 2016” or “the week of April 11–15”. The placeholder can be a full or partial date. There are related week-of date pattern that it should be as consistent with as possible, described [here](/translation/date-time/date-time-patterns). \'week' W 'of' MMM\ diff --git a/docs/site/translation/date-time/date-time-patterns.md b/docs/site/translation/date-time/date-time-patterns.md index 7c87bfc2766..7028b5abaf3 100644 --- a/docs/site/translation/date-time/date-time-patterns.md +++ b/docs/site/translation/date-time/date-time-patterns.md @@ -10,8 +10,8 @@ _Last updated: 2018-May-14_ Pre-requisite topics to read: -- [Date/Time Symbols](https://cldr.unicode.org/translation/date-time/date-time-symbols) -- [Date/Time Names](https://cldr.unicode.org/translation/date-time/date-time-names) +- [Date/Time Symbols](/translation/date-time/date-time-symbols) +- [Date/Time Names](/translation/date-time/date-time-names) A date-time pattern is a string of characters in which fields representing date and time symbols are combined together with necessary "literal" strings that are used as is. @@ -26,7 +26,7 @@ There are two types of substrings that are combined in a pattern: | **yMMMd** | MMM e, y | Dec 5, 2010 | y年M月d 日 | 2010年12月5日 | There are three aspects to patterns:  -- A letter in the set {a-z; A-Z} indicates the type of calendar field: See [Date/Time Symbols](https://cldr.unicode.org/translation/date-time/date-time-symbols). +- A letter in the set {a-z; A-Z} indicates the type of calendar field: See [Date/Time Symbols](/translation/date-time/date-time-symbols). - For example: - M for month - d for week day @@ -37,12 +37,12 @@ There are three aspects to patterns:  - Abbreviated form: MMM  for Sep - Full form: MMMM for September - Narrow form: MMMMM (S) -- When formatting a particular date, non-numeric values (e.g. month names from Gregorian calendar) are substituted into the appropriate pattern substrings using the [Date Format Symbols](https://cldr.unicode.org/translation/date-time/date-time-symbols).  +- When formatting a particular date, non-numeric values (e.g. month names from Gregorian calendar) are substituted into the appropriate pattern substrings using the [Date Format Symbols](/translation/date-time/date-time-symbols).  - For example: - M replaced by “3” for March - MMMM replaced by “March”. - When parsing a date string, the pattern substrings will be converted into the appropriate numeric calendar data. - - **See [Date/Time Symbols](https://cldr.unicode.org/translation/date-time/date-time-symbols) for a brief summary of letters for different calendar fields, or [Date Field Symbol Table](http://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table) for a more complete and detailed list.** + - **See [Date/Time Symbols](/translation/date-time/date-time-symbols) for a brief summary of letters for different calendar fields, or [Date Field Symbol Table](http://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table) for a more complete and detailed list.** - The "literal" text in the date-time pattern are used as-is when formatting, and are expected when parsing a date string. To include a single straight quote as part of the literal text, use two of them together: '' (either inside or outside a section of literal text enclosed in single straight quotes). To demonstrate how this work with examples, see the spec [Date Format Pattern Examples](http://www.unicode.org/reports/tr35/tr35-45/tr35-dates.html#Date_Format_Pattern_Examples). @@ -58,7 +58,7 @@ To demonstrate how this work with examples, see the spec [Date Format Pattern Ex ## Synchronizing Date/Time Names and Patterns -There is a tight coupling between the date/time patterns and the names that are used for date/time elements, described in [Date/Time Names](https://cldr.unicode.org/translation/date-time/date-time-names). Therefore, when supplying the data, it requires coordination between what you supply as the names and your intention on which name to use in patterns. +There is a tight coupling between the date/time patterns and the names that are used for date/time elements, described in [Date/Time Names](/translation/date-time/date-time-names). Therefore, when supplying the data, it requires coordination between what you supply as the names and your intention on which name to use in patterns. ### When to use Standalone vs. Formatting @@ -103,7 +103,7 @@ Following are examples of differences and implications based on language: 💡 **Translation Tips** - When working with patterns, look at the examples in the right information pane to validate your intention between the name and the pattern. -- In order to get the right formats for your language, you may need to change the ordering of the [Date/Time Symbols](https://cldr.unicode.org/translation/date-time/date-time-symbols), and change the text around them. +- In order to get the right formats for your language, you may need to change the ordering of the [Date/Time Symbols](/translation/date-time/date-time-symbols), and change the text around them. - You must match the names that should be used in patterns with intended forms of the names (wide or full, abbreviated and/or short, narrow forms)  - For example: - If you specify the time format "h:mm a", by using "a" your intention is to use the **Abbreviated formatting** name for AM/PM; thus, the end result being 2:37 PM. @@ -136,7 +136,7 @@ Using 24 hour vs 12 hour symbols: The symbols you use in time format patterns de - **k** to mean a 24-hour clock cycle running 1 through 24 (midnight plus 1 minute is 24:01). - **a**, **b**, and **B** are same as usage in 12 hour formats, but are not normally used with 24-hour time. -If a non-default country/region use a different time format than the default country/region for the language, then this difference should be added for the sub-locale. Also see [Regional variants](https://cldr.unicode.org/translation/getting-started/guide#TOC-Regional-Variants-also-known-as-Sub-locales-).  +If a non-default country/region use a different time format than the default country/region for the language, then this difference should be added for the sub-locale. Also see [Regional variants](/translation/getting-started/guide#TOC-Regional-Variants-also-known-as-Sub-locales-).  For example, if es (= es\_ES, Spanish as used in Spain) uses 24-hour time formats, but es\_US (Spanish as used in United States) uses 12 hour time formats, then es would use "HH:mm/H:mm" and es\_US would use the "h" formats as described above. . @@ -146,7 +146,7 @@ For example, if es (= es\_ES, Spanish as used in Spain) uses 24-hour time format ## Basic Date Formats -The standard Date formats include four basic formats. See Survey Tool [Formats-Standard-Date formats](https://st.unicode.org/cldr-apps/v#/USER/Gregorian/562f98c4c6b2e321). (Note that the Month symbol especially may vary (M vs MM, or MMM vs LLL). For more information, see [Date/Time Symbols](https://cldr.unicode.org/translation/date-time/date-time-symbols).) +The standard Date formats include four basic formats. See Survey Tool [Formats-Standard-Date formats](https://st.unicode.org/cldr-apps/v#/USER/Gregorian/562f98c4c6b2e321). (Note that the Month symbol especially may vary (M vs MM, or MMM vs LLL). For more information, see [Date/Time Symbols](/translation/date-time/date-time-symbols).) | Form | Include | English pattern examples | |---|---|---| @@ -157,7 +157,7 @@ The standard Date formats include four basic formats. See Survey Tool [Formats-S ## Additional Date-Time Formats -The basic formats as described in above sections provide a small subset of the combinations. To expand to fully cover all variations of date and time formats, a skeleton format is provided that uses the [Date/Time Symbols](https://cldr.unicode.org/translation/date-time/date-time-symbols) (without order or punctuation) to indicate what fields are desired.  +The basic formats as described in above sections provide a small subset of the combinations. To expand to fully cover all variations of date and time formats, a skeleton format is provided that uses the [Date/Time Symbols](/translation/date-time/date-time-symbols) (without order or punctuation) to indicate what fields are desired.  An example usage of the flexible formats would be: a software program only needs the year and month information, the flexible pattern yMMM would be used to provide the desired year and month formatting as shown in the English and Japanese examples in this table.  @@ -187,7 +187,7 @@ In languages that distinguish between nominative and genitive (or related form s - Use symbols "ccc" or "cccc" in patterns to use the standalone name - Use the symbol  "E" or "EEEE" to use the format name -To understand which pattern characters are used for standalone forms (nominative) versus format forms (genitive or related, such as partitive), see [Stand-Alone vs Format Styles](https://cldr.unicode.org/translation/date-time/date-time-symbols), see also the discussion above in [Synchronizing Date/Time Names and Patterns](https://cldr.unicode.org/translation/date-time/date-time-patterns). +To understand which pattern characters are used for standalone forms (nominative) versus format forms (genitive or related, such as partitive), see [Stand-Alone vs Format Styles](/translation/date-time/date-time-symbols), see also the discussion above in [Synchronizing Date/Time Names and Patterns](/translation/date-time/date-time-patterns). ### Supplied vs. Inferred patterns @@ -269,7 +269,7 @@ These new patterns are available in Gregorian and Generic calendars, In these ne 2. If it is equally good in two different positions, favor the position used for the 'a' pattern character. 3. If the position needs to be different depending on the width of B, please file a ticket. 2. For more information on the day periods used in your language: - 1. First see [Day Periods (AM, PM, etc.)](https://cldr.unicode.org/translation/date-time/date-time-names) for a general discussion of how day periods work. + 1. First see [Day Periods (AM, PM, etc.)](/translation/date-time/date-time-names) for a general discussion of how day periods work. 2. See the [Day Periods](https://www.unicode.org/cldr/charts/45/supplemental/day_periods.html) chart for your language. ![image](../../images/date-time/ST-flexibledayperiod.JPG) @@ -336,9 +336,9 @@ For developers who use CLDR data,  💡 **Translation Tips** -- If your language has a grammatical difference in the month names(aside from just the simple addition of a prefix or suffix), localizers will need to use a work-around construction ([file a ticket](https://cldr.unicode.org/index/bug-reports#TOC-Filing-a-Ticket) if this is the case for your language). +- If your language has a grammatical difference in the month names(aside from just the simple addition of a prefix or suffix), localizers will need to use a work-around construction ([file a ticket](/index/bug-reports#TOC-Filing-a-Ticket) if this is the case for your language). -As described [under Date/Time Names](https://cldr.unicode.org/translation/date-time/date-time-names), CLDR also provides a relative week period pattern which is used for constructions such as “the week of April 11, 2016”. The English pattern that produces this is “the week of {0}”; the date format that replaces {0} is determined separately. Because the week-of patterns described here may appear in user interfaces that also show dates produced using the relative week period patterns, all of these patterns should be designed with consistent wording and structure. +As described [under Date/Time Names](/translation/date-time/date-time-names), CLDR also provides a relative week period pattern which is used for constructions such as “the week of April 11, 2016”. The English pattern that produces this is “the week of {0}”; the date format that replaces {0} is determined separately. Because the week-of patterns described here may appear in user interfaces that also show dates produced using the relative week period patterns, all of these patterns should be designed with consistent wording and structure. ## Flexible - Timezone Append @@ -354,9 +354,9 @@ The flexible append format for Timezone is used to compose a time and a timezone ## Date/Time Intervals -Interval patterns contain a start pattern and an end pattern (using the [Date/Time Symbols](https://cldr.unicode.org/translation/date-time/date-time-symbols)). They are used for a range of dates or times, such as "Sept 10–12" (meaning the 10th of September through the 12th of September). The interval format is used where it is necessary to make the pattern as short as possible, and elide information that does not have to be repeated. For example, the pattern used to get "Sept 10–12" in English is "MMM d–d". +Interval patterns contain a start pattern and an end pattern (using the [Date/Time Symbols](/translation/date-time/date-time-symbols)). They are used for a range of dates or times, such as "Sept 10–12" (meaning the 10th of September through the 12th of September). The interval format is used where it is necessary to make the pattern as short as possible, and elide information that does not have to be repeated. For example, the pattern used to get "Sept 10–12" in English is "MMM d–d". -Unlike simple [Date/Time Patterns](https://cldr.unicode.org/translation/date-time/date-time-patterns), these consist of two parts, typically separated by with some kind of punctuation mark (e.g. English uses en-dash " – "). Also, some fields in the second part are omitted (e.g. "d – d MMM" omits repeat of MMM for the second part). The first field that comes from the second date is marked with red in the examples below. +Unlike simple [Date/Time Patterns](/translation/date-time/date-time-patterns), these consist of two parts, typically separated by with some kind of punctuation mark (e.g. English uses en-dash " – "). Also, some fields in the second part are omitted (e.g. "d – d MMM" omits repeat of MMM for the second part). The first field that comes from the second date is marked with red in the examples below. ### Interval Formatting diff --git a/docs/site/translation/date-time/date-time-symbols.md b/docs/site/translation/date-time/date-time-symbols.md index f393838ace2..3c5d0762ce1 100644 --- a/docs/site/translation/date-time/date-time-symbols.md +++ b/docs/site/translation/date-time/date-time-symbols.md @@ -4,7 +4,7 @@ title: Date/Time Symbols # Date/Time Symbols -Symbols is a required topic to work in [Date/Time Patterns](https://cldr.unicode.org/translation/date-time/date-time-patterns) +Symbols is a required topic to work in [Date/Time Patterns](/translation/date-time/date-time-patterns) More details on date/time symbols and patterns may be found in the Spec [Date Field Symbol Table](http://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table). @@ -16,7 +16,7 @@ When the software formats a date for your language, a value will be substituted Notice in the table below that there are different pattern characters for standalone and formatting. For example M to indicate the formatting and L to indicate the standalone month names. -Make sure you understand the difference between standalone and formatting patterns and use the appropriate symbols in patterns. See [when to use standalone vs. formatting](https://cldr.unicode.org/translation/date-time/date-time-patterns) in Date and Time patterns. +Make sure you understand the difference between standalone and formatting patterns and use the appropriate symbols in patterns. See [when to use standalone vs. formatting](/translation/date-time/date-time-patterns) in Date and Time patterns. | Symbol | Meaning | English example | Special note | Usage in pattern example | |:---:|---|---|---|---| @@ -30,7 +30,7 @@ Make sure you understand the difference between standalone and formatting patter | h
H
K
k | Hour | 12 | h- hour in a 12 hour clock
H-hour in a 24 hour clock system using 0-23
K -12 hour cycle using 0 through 11
k - 24 hour cycle using 1 though 24 | h:mm a = 3:25 PM
HH:mm = 15:25
K:mm a = 0:25 AM
kk:mm = 24:25 | | m | minute | 49 | | hh:mm a = 03:25 PM | | s | second | 49 | | h:mm:ss = 3:25:01 PM | -| a
b
B | day period | AM noon in the morning | a- AM or PM b-am, noon, pm, or midnight
B-"in the morning", "in the evening" (see [Day period names](https://cldr.unicode.org/translation/date-time-1/date-time-names#TOC-Day-Periods-AM-PM-etc.-))

ONLY used with "h" or K" for all a, b and B See [date/time patterns about flexible time formats](https://st.unicode.org/cldr-apps/v#/fr/Gregorian/7a365a21694f0127) even if your language does not use 12-hour time clock Also see date/time day period patterns. | h:mm a = 3:25 PM

h:mm b = 12:00 noon

h:mm B= 3:25 in the afternoon | +| a
b
B | day period | AM noon in the morning | a- AM or PM b-am, noon, pm, or midnight
B-"in the morning", "in the evening" (see [Day period names](/translation/date-time-1/date-time-names#TOC-Day-Periods-AM-PM-etc.-))

ONLY used with "h" or K" for all a, b and B See [date/time patterns about flexible time formats](https://st.unicode.org/cldr-apps/v#/fr/Gregorian/7a365a21694f0127) even if your language does not use 12-hour time clock Also see date/time day period patterns. | h:mm a = 3:25 PM

h:mm b = 12:00 noon

h:mm B= 3:25 in the afternoon | | z / v | timezone | Pacific Time, Paris Time | Don't change v to z or vice versa; just leave either z or v as in English. | h a – h a v = 5 AM – 5 PM GMT | | ' | | | If you want a sequence of one or more real letters A–Z or a–z within a pattern, you need to put it in single quotes, such as 'ta'. This is because l etters included in a format have special meaning.
For a real single quote, use '' (that is, two adjacent ' characters). | German example for skeleton h h 'Uhr' a = 1 Uhr PM | | Q | Quarter (a concept of 3 months period) | | These are calendar quarters not fiscal quarters.

4 Quarters in United States for example would be Jan-Mar, Apr-June, July-Sep, Sep-Dec. Also see 💡 **Translation Tips** below | QQQ y = Q3 1999 | @@ -62,7 +62,7 @@ The longer forms are only relevant for the fields that are non-numeric, such as ## Standalone vs. Format Styles - This section is relevant to [When to use standalone vs. Formatting](https://cldr.unicode.org/translation/date-time/date-time-patterns) in date/time patterns. + This section is relevant to [When to use standalone vs. Formatting](/translation/date-time/date-time-patterns) in date/time patterns. Some languages use two different forms of strings (*standalone* and *format*) depending on the context. Typically the *standalone* version is the nominative form of the word, and the *format* version is in the genitive (or related form). @@ -75,7 +75,7 @@ Two different characters are used: 💡 **Translation Tips** -- Standalone and Format names must be coordinated with the format strings. See [When to use standalone vs. Formatting](https://cldr.unicode.org/translation/date-time/date-time-patterns) in date/time patterns. +- Standalone and Format names must be coordinated with the format strings. See [When to use standalone vs. Formatting](/translation/date-time/date-time-patterns) in date/time patterns. - If your language uses two different form, be sure to provide the correct forms under Standalone and Formatting. For example in Brazilian Portuguese - "Dezembro" for December when standing alone; thus use LLLL - "Dezembru" when referencing December with a date (e.g. to mean "the nth day of that month"); thus, use MMMM @@ -87,7 +87,7 @@ Two different characters are used: | de gener | gener | | d'abril | abril | -These days, standalone names should not be used merely to provide capitalized forms. There are other solutions for capitalizing date symbols which provide finer control over capitalization, see [capitalization guidelines](https://cldr.unicode.org/translation/translation-guide-general/capitalization). +These days, standalone names should not be used merely to provide capitalized forms. There are other solutions for capitalizing date symbols which provide finer control over capitalization, see [capitalization guidelines](/translation/translation-guide-general/capitalization). ### Examples: diff --git a/docs/site/translation/displaynames.md b/docs/site/translation/displaynames.md index 8e89fd61759..75fefc22b91 100644 --- a/docs/site/translation/displaynames.md +++ b/docs/site/translation/displaynames.md @@ -4,12 +4,5 @@ title: Displaynames # Displaynames -- [Country/Region (Territory) Names](https://cldr.unicode.org/translation/displaynames/countryregion-territory-names) -- [Language/Locale Name Patterns](https://cldr.unicode.org/translation/displaynames/languagelocale-name-patterns) -- [Language/Locale Names](https://cldr.unicode.org/translation/displaynames/languagelocale-names) -- [Locale Option Names (Key)](https://cldr.unicode.org/translation/displaynames/locale-option-names-key) -- [Script Names](https://cldr.unicode.org/translation/displaynames/script-names) - -Displaynames category include the names of the fundamental data in internationalization: Languages and Country/Regions - - +Displaynames category include the names of the fundamental data in internationalization: Languages, scripts, regions (countries), etc. +See the subpages in the sidebar. diff --git a/docs/site/translation/displaynames/countryregion-territory-names.md b/docs/site/translation/displaynames/countryregion-territory-names.md index 384ef3696ad..6ca70225484 100644 --- a/docs/site/translation/displaynames/countryregion-territory-names.md +++ b/docs/site/translation/displaynames/countryregion-territory-names.md @@ -1,17 +1,17 @@ --- -title: Country/Region (Territory) Names +title: 'Country/Region (Territory) Names' --- # Country/Region (Territory) Names -Country and region names (referred to as Territories in the Survey Tool) may be used as part of [Language/Locale Names](https://cldr.unicode.org/translation/displaynames/languagelocale-names), or may be used in UI menus and lists to select countries or regions. +Country and region names (referred to as Territories in the Survey Tool) may be used as part of [Language/Locale Names](/translation/displaynames/languagelocale-names), or may be used in UI menus and lists to select countries or regions. ## General Guidelines Please follow these guidelines: 1. Use the most neutral grammatical form for the country/region that is natural for these two usages above. If there is no single form that can accomplish that, favor the usage within UI menus. -2. Use the capitalization that would be appropriate in the middle of a sentence; the \ data can specify the capitalization for other contexts. For more information, see [Capitalization](https://cldr.unicode.org/translation/translation-guide-general/capitalization). +2. Use the capitalization that would be appropriate in the middle of a sentence; the \ data can specify the capitalization for other contexts. For more information, see [Capitalization](/translation/translation-guide-general/capitalization). 3. Each of the names **must** be unique (see below). 4. Don't use commas and don't invert the name (eg use "South Korea", not "Korea, South"). diff --git a/docs/site/translation/displaynames/languagelocale-names.md b/docs/site/translation/displaynames/languagelocale-names.md index 83ae921be61..603a324e20d 100644 --- a/docs/site/translation/displaynames/languagelocale-names.md +++ b/docs/site/translation/displaynames/languagelocale-names.md @@ -4,9 +4,9 @@ title: Language/Locale Names # Language/Locale Names -Some language names are simple, like "English". However, it is often important to distinguish a variant of the language, even when it is only written. For example, British English and American English are often written differently. In some cases, the difference can be quite substantial, such as when the same language is written with different [scripts](https://cldr.unicode.org/translation/displaynames/script-names) (aka writing systems, like Latin letters vs Greek letters). +Some language names are simple, like "English". However, it is often important to distinguish a variant of the language, even when it is only written. For example, British English and American English are often written differently. In some cases, the difference can be quite substantial, such as when the same language is written with different [scripts](/translation/displaynames/script-names) (aka writing systems, like Latin letters vs Greek letters). -Thus more complex language names may be composed from simple languages plus variants. A pattern is used to control how the translations for language, script, and region codes are composed into a name when the compound code doesn't have a specific translation. An example is "αγγλικά (Αυστραλία)", which has the native name for "English", followed by the native word for "Australia" in parentheses. See [Patterns for Locale/Language Names](https://cldr.unicode.org/translation/displaynames/languagelocale-name-patterns). +Thus more complex language names may be composed from simple languages plus variants. A pattern is used to control how the translations for language, script, and region codes are composed into a name when the compound code doesn't have a specific translation. An example is "αγγλικά (Αυστραλία)", which has the native name for "English", followed by the native word for "Australia" in parentheses. See [Patterns for Locale/Language Names](/translation/displaynames/languagelocale-name-patterns). For the simple language names, please follow these guidelines: @@ -14,7 +14,7 @@ For the simple language names, please follow these guidelines: - Don't use commas and don't invert the name (eg use "French Creole", not "French, Creole"). - Don't use the characters "(" and ")", since they will be confusing in combination with countries or scripts in more complex language names. If you have to use brackets, use square ones: [ and ]. - The most neutral grammatical form for the language name should be chosen. -- Use the capitalization that would be appropriate for a language name in the middle of a sentence; the \ data can specify the capitalization for other contexts. For more information, see [Capitalization](https://cldr.unicode.org/translation/translation-guide-general/capitalization). +- Use the capitalization that would be appropriate for a language name in the middle of a sentence; the \ data can specify the capitalization for other contexts. For more information, see [Capitalization](/translation/translation-guide-general/capitalization). ## Unique Names diff --git a/docs/site/translation/displaynames/locale-option-names-key.md b/docs/site/translation/displaynames/locale-option-names-key.md index 8ce9320d29e..daf9d3dc716 100644 --- a/docs/site/translation/displaynames/locale-option-names-key.md +++ b/docs/site/translation/displaynames/locale-option-names-key.md @@ -1,5 +1,5 @@ --- -title: Locale Option Names (Key) +title: 'Locale Option Names (Key)' --- # Locale Option Names (Key) @@ -20,7 +20,7 @@ Here are the names of Options to be translated. ## Locale Option Value Names -The following are some examples of Option+Value combinations that need translation. Where the Value for the Option is not from a small set (Currency and Private Use), then the Locale Option Pattern is used (see [Language/Locale Name Patterns](https://cldr.unicode.org/translation/displaynames/languagelocale-name-patterns). +The following are some examples of Option+Value combinations that need translation. Where the Value for the Option is not from a small set (Currency and Private Use), then the Locale Option Pattern is used (see [Language/Locale Name Patterns](/translation/displaynames/languagelocale-name-patterns). | Option | Value | English Name | Meaning | |---|---|---|---| @@ -38,6 +38,6 @@ The following are some examples of Option+Value combinations that need translati | Collation | big5han | Traditional Sort Order - Big5 | An ordering based on the character encoding Big5 (for Chinese) | | Numbers | armn | Armenian Numerals | The numbering system that uses Armenian digits. | -For transform names (BGN, Numeric, Tone, UNGEGN, x-Accents, x-Fullwidth, x-Halfwidth, x-Jamo, x-Pinyin, x-Publishing), see [Transforms](https://cldr.unicode.org/translation/transforms). +For transform names (BGN, Numeric, Tone, UNGEGN, x-Accents, x-Fullwidth, x-Halfwidth, x-Jamo, x-Pinyin, x-Publishing), see [Transforms](/translation/transforms). diff --git a/docs/site/translation/displaynames/script-names.md b/docs/site/translation/displaynames/script-names.md index d0d75072753..fcfd226acb6 100644 --- a/docs/site/translation/displaynames/script-names.md +++ b/docs/site/translation/displaynames/script-names.md @@ -21,8 +21,8 @@ For the script names, please follow these guidelines: - Don't use commas and don't invert the name (eg use "New Tai Lue", not "Tai Lue, New"). - Don't use the characters "(" and ")", since they will be confusing in combination with countries or languages in more complex language names. If you have to use brackets, use square ones: [ and ]. - The most neutral grammatical form for the script that is natural for these two usages should be chosen. If there is no single form that can accomplish that, favor the usage within language names (inside parentheses). -- Use the capitalization that would be appropriate in the middle of a sentence; the \ data can specify the capitalization for other contexts. For more information, see [Capitalization](http://cldr.unicode.org/translation/capitalization). +- Use the capitalization that would be appropriate in the middle of a sentence; the \ data can specify the capitalization for other contexts. For more information, see [Capitalization](/translation/capitalization). -See also [Language Names](https://cldr.unicode.org/translation/displaynames/languagelocale-names). +See also [Language Names](/translation/displaynames/languagelocale-names). diff --git a/docs/site/translation/error-codes.md b/docs/site/translation/error-codes.md index a80f8026b11..e6d37e37857 100644 --- a/docs/site/translation/error-codes.md +++ b/docs/site/translation/error-codes.md @@ -27,6 +27,6 @@ The error message will show which placeholders are expected, with an uppercase p They allow for, and often need, duplicate placeholders. -- For plurals and ordinals, make sure to read [Determining Plural Categories](http://cldr.unicode.org/index/cldr-spec/plural-rules#TOC-Determining-Plural-Categories). -- For case and gender, make sure read [Grammatical Inflection](https://cldr.unicode.org/translation/grammatical-inflection). +- For plurals and ordinals, make sure to read [Determining Plural Categories](/index/cldr-spec/plural-rules#TOC-Determining-Plural-Categories). +- For case and gender, make sure read [Grammatical Inflection](/translation/grammatical-inflection). diff --git a/docs/site/translation/getting-started.md b/docs/site/translation/getting-started.md index 934df460918..39a9aa5e3d6 100644 --- a/docs/site/translation/getting-started.md +++ b/docs/site/translation/getting-started.md @@ -6,19 +6,17 @@ title: Getting Started Before getting started to contribute data in CLDR, and jumping in to using the Survey Tool, it is important that you understand the CLDR process. -1. Understand the basics about the CLDR process and the community-based model and the Technical Committee. Read: [CLDR Process](https://cldr.unicode.org/index/process) +1. Understand the basics about the CLDR process and the community-based model and the Technical Committee. Read: [CLDR Process](/index/process) 2. Read the Getting Started topics on the Information Hub: - - [Survey Tool Guide](https://cldr.unicode.org/translation/getting-started/guide) - - [Survey Tool Stages](https://cldr.unicode.org/translation/getting-started/survey-tool-phases) - - [Handling Errors and Warnings](https://cldr.unicode.org/translation/getting-started/errors-and-warnings) - - [Handling Logical Group Errors](https://cldr.unicode.org/translation/getting-started/resolving-errors) - - [Plurals & Units](https://cldr.unicode.org/translation/getting-started/plurals) - - [Review Date & Time](https://cldr.unicode.org/translation/date-time) - - [Review Numbers](https://cldr.unicode.org/translation/number-currency-formats) - - [Review Zones](https://cldr.unicode.org/translation/time-zones-and-city-names) - - [Data stability](https://cldr.unicode.org/translation/getting-started/data-stability) - - [Empty cache](https://cldr.unicode.org/translation/getting-started/empty-cache) - -\*If you (individual or your organization) have not established a connection with the CLDR technical committee, start with [Survey Tool Accounts](https://cldr.unicode.org/index/survey-tool/survey-tool-accounts). - + - [Survey Tool Guide](/translation/getting-started/guide) + - [Survey Tool Stages](/translation/getting-started/survey-tool-phases) + - [Handling Errors and Warnings](/translation/getting-started/errors-and-warnings) + - [Handling Logical Group Errors](/translation/getting-started/resolving-errors) + - [Plurals & Units](/translation/getting-started/plurals) + - [Review Date & Time](/translation/date-time) + - [Review Numbers](/translation/number-currency-formats) + - [Review Zones](/translation/time-zones-and-city-names) + - [Data stability](/translation/getting-started/data-stability) + - [Empty cache](/translation/getting-started/empty-cache) +\*If you (individual or your organization) have not established a connection with the CLDR technical committee, start with [Survey Tool Accounts](/index/survey-tool/survey-tool-accounts). diff --git a/docs/site/translation/getting-started/errors-and-warnings.md b/docs/site/translation/getting-started/errors-and-warnings.md index af26559d8ca..27bab98bc4f 100644 --- a/docs/site/translation/getting-started/errors-and-warnings.md +++ b/docs/site/translation/getting-started/errors-and-warnings.md @@ -23,13 +23,13 @@ In the above case, it is a pretty clear mistake. It is not as simple in other ca You can find some guidance under "Unique Names" in the following pages: -- [Country/Region Names](https://cldr.unicode.org/translation/displaynames/countryregion-territory-names), -- [City Names](https://cldr.unicode.org/translation/timezones#TOC-City-Names), -- [Currency Symbols & Names](https://cldr.unicode.org/translation/currency-names-and-symbols/currency-names) +- [Country/Region Names](/translation/displaynames/countryregion-territory-names), +- [City Names](/translation/timezones#TOC-City-Names), +- [Currency Symbols & Names](/translation/currency-names-and-symbols/currency-names) **The characters ‎\[…\]‎ should not be used (Must fix)** -For what to do, see [Characters](https://cldr.unicode.org/translation/-core-data/exemplars#TOC-Handing-Warnings-in-Exemplar-characters), in the section Handling Warnings. _While these are categorized as warnings, every effort should be made to fix them._ +For what to do, see [Characters](/translation/-core-data/exemplars#TOC-Handing-Warnings-in-Exemplar-characters), in the section Handling Warnings. _While these are categorized as warnings, every effort should be made to fix them._ **Unquoted special character '.' in pattern (Must fix)** @@ -38,7 +38,7 @@ Number patterns can only contain an unquoted . when it is the decimal separator. In other cases, such as to finish an abbreviation, it must be quoted, as in: 000 tūkst'.' -For more information, see [Number Patterns](https://cldr.unicode.org/translation/number-currency-formats/number-and-currency-patterns). +For more information, see [Number Patterns](/translation/number-currency-formats/number-and-currency-patterns). - Errors in Others column can be ignored. For example, this is an example of an Inheritance value in the Others column where the Language (Country/region) names have a collision issue. Do not vote on values that have errors. diff --git a/docs/site/translation/getting-started/guide.md b/docs/site/translation/getting-started/guide.md index 4b371695285..32d2c3fddab 100644 --- a/docs/site/translation/getting-started/guide.md +++ b/docs/site/translation/getting-started/guide.md @@ -6,22 +6,18 @@ title: Survey Tool Guide ### _News_ -_2022-11-28 Updated several images and instructions to reflect improvements, such as revised menus, buttons,regional inheritance, and the Dashboard and Forum._ - -[**Survey Tool**](https://st.unicode.org/cldr-apps/v#locales///) **|** [**Accounts**](https://cldr.unicode.org/index/survey-tool/survey-tool-accounts) **|** [**Guide**](https://cldr.unicode.org/translation/getting-started/guide) **|** [**FAQ and Known Bugs**](https://cldr.unicode.org/index/survey-tool/faq-and-known-bugs) - The Survey tool is a web based tool for collecting CLDR data and includes various features that the contributors (vetters) should know before getting started. Note that the exact appearance in screenshots may change as the tool is enhanced over time and based on your vetter level. ### 💡 Helpful Tips -- Please read the home page of the [Translation Guidelines](https://cldr.unicode.org/translation) before starting your data contribution. +- Please read the home page of the [Translation Guidelines](/translation) before starting your data contribution. - If you experience a **Loading...** problem with the Survey Tool, try clearing your browser cache. See [Reloading JavaScript](https://www.filecloud.com/blog/2015/03/tech-tip-how-to-do-hard-refresh-in-browsers/#.XOjGNtMzbuM). - **Browser support** for Survey Tool includes the latest versions of Edge, Safari, Chrome, and Firefox. -- Use [Reports](https://cldr.unicode.org/translation/getting-started/guide#TOC-Reports) at the beginning to review the data in your language in a holistic manner for Date & time, Zones, and Numbers. - - Capitalization: Translations should be what is most appropriate for ”middle-of-sentence” use. So, for example, if your language normally doesn't spell languages with a capital letter, then you shouldn’t do that here. Please see [Capitalization](https://cldr.unicode.org/translation/translation-guide-general/capitalization) for more details. - - Plurals: For important information regarding the use of plural forms for your language, please read [Plurals](https://cldr.unicode.org/translation/getting-started/plurals). +- Use [Reports](#reports) at the beginning to review the data in your language in a holistic manner for Date & time, Zones, and Numbers. + - Capitalization: Translations should be what is most appropriate for ”middle-of-sentence” use. So, for example, if your language normally doesn't spell languages with a capital letter, then you shouldn’t do that here. Please see [Capitalization](/translation/translation-guide-general/capitalization) for more details. + - Plurals: For important information regarding the use of plural forms for your language, please read [Plurals](/translation/getting-started/plurals). ### Vetting Phase @@ -29,7 +25,7 @@ At a point towards the end of Survey Tool period, the Technical Committee will c ## Login and Import of old votes -1. Go to http://st.unicode.org/cldr-apps/survey/ and log in. +1. Go to https://st.unicode.org/cldr-apps/survey/ and log in. ![alt-text](../../images/gettingStartedGuideNotOpenYet.jpeg) 1. **Import of old votes** is automatically handled when you log in for all your votes **matching** the latest released data. If you have voted previously, upon first log-in, you will see a message showing the number of your votes that matched the currently winning votes that have been auto-imported. 2. Import of your old votes will take some time, but this will be done at 1st log-in only. @@ -46,7 +42,6 @@ At a point towards the end of Survey Tool period, the Technical Committee will c 3. Go to the data categories in the Survey tool where you have imported your old votes, these will show up in the Others column with no votes. 4. Review and add your vote. The best practice is to create a forum entry explaining why this is the data that should be changed to and drive to gain consensus with other vetters. - ### Picking Locales 1. On the left sidebar, you will see the CLDR locale(s). Your default view will be the languages you have permissions for. All the locales that you have permission to contribute submissions to are marked with PENCIL icon. You can view the others but not submit contributions. For example, if you have permissions to the default language Afrikaans (af), you will not have permissions to Afrikaans (Namibia), and vice versa. @@ -59,13 +54,12 @@ At a point towards the end of Survey Tool period, the Technical Committee will c 1. Only those of you working on a specific variant language (or "sub-locale") will pick a non-default region. If you work on Mexican Spanish, pick **Mexico**. (This should already be pre-selected for you.) - -_Make sure that you haven't mistakenly turned the Information Panel off! See_ [_**No Information Panel**_](https://cldr.unicode.org/translation/getting-started/guide%23TOC-No-Information-Panel)_**.**_ +_If the [Info Panel](#info-panel) was turned off, click on the **Open Info Panel** button near the top right of the window._ ### Voting view 1. Once you have selected your locale, more options show up in the left sidebar. (You’ll note that the sidebar only shows if you mouse over the **\>** character on the left.) -2. If the locale is relatively new and very complete, start working on the **Core Data** section and go through the rest of the sections. If the locale is mostly complete, then go to [**Dashboard**](https://cldr.unicode.org/translation/getting-started/guide) below. +2. If the locale is relatively new and very complete, start working on the **Core Data** section and go through the rest of the sections. If the locale is mostly complete, then go to the [Dashboard](#dashboard) (below). 3. Once you have selected a section, you'll see a table to enter votes in. The main table has these columns: - **Code**: the code CLDR uses to identify this data point. - **English**: the plain English value of the data point (the text you are to translate). @@ -76,8 +70,8 @@ _Make sure that you haven't mistakenly turned the Information Panel off! See_ [_ - If what you want is a variation of what is in Winning or Others, you can cut & paste, and then modify. - **Others**: other suggested values, not currently winning, but available to vote for. 4. Click on one of the radio buttons to make your vote. The winning status changes in real-time so depending on vote requirements and existing votes, your vote may move your desired value to the winning column right away. - 1. Look at the Regional Variants to see if any should be changed: see **Information Panel** below. -5. Once you are done with all the sections, go to the [**Dashboard**](https://cldr.unicode.org/translation/getting-started/guide)**.** + 1. Look at the Regional Variants to see if any should be changed: see **Info Panel** below. +5. Once you are done with all the sections, go to [Dashboard](#dashboard) (below). 6. Under the English column, look for "**i**" for additional information and "**e**" for an example. ![alt-text](../../images/gettingStartedGuideArabic.png) ![alt-text](../../images/gettingStartedGuideEnglish.jpg) @@ -88,25 +82,25 @@ The main panel uses icons to indicate important information and possible problem ![alt-text](../../images/gettingStartedGuideIcon.png) -(Icons for the **Dashboard** are listed in the [**Dashboard Icons**](https://cldr.unicode.org/translation/getting-started/guide) section below.) +(Icons for the **Dashboard** are listed in the [Dashboard Icons](#dashboard-icons) section below.) ### Examples An example with an ❌ shows a case where the pattern has an inappropriate placeholder substituted. That example should be ungrammatical; if it is grammatical, then either the translated unit or the minimal pair pattern itself is incorrect. The example will show in the Info Panel, and also if you hover over the item. -### Information Panel +### Info Panel 1. If you hover over an item (including the English item), a tooltip will appear showing a sample value and usage of the item in context. The item itself will have a white background; other text in context will have a gray background. -2. When you select an item (the text, **NOT** the radio button), additional information will show in the right-hand **Information Panel**. See screenshot below. +2. When you select an item (the text, **NOT** the radio button), additional information will show in the right-hand **Info Panel**. See screenshot below. 3. Make sure you use a wide-screen monitor and enlarge your window until you can see it, something like the image below. 4. The box at the top shows information about the code you are translating. _It also has a link that you should click on the first type you encounter that kind of item that will explain any "gotchas"._ 5. If there is an error or warning for the item, you see that in the middle. 6. Below that, you'll see an example. This is the same as you get by hovering over the item in the center section. 7. If there are votes, you'll see a breakdown of them; you also see the number of votes required to change the value. Unicode organization members usually have 4 votes; _vetters which are not representing a Unicode organization usually have 1 vote_. Your vote value and the vote value required for change will show on the right navigation for the selected item as shown in this screenshot (4 and 8 respectively in this case). 8. Near the bottom, you'll see a pulldown menu that shows the values for different regional Variants. Here, you can quickly compare the values and go to different sub-locales to correct inconsistencies. -9. You'll also see the New Forum Post button (as shown in the screenshot _to the right_). This is the easiest way to post discussions for the selected item. Remember that the Forum posts are at language level and not at Sub-locale level. For more information, see [Forum](https://cldr.unicode.org/translation/getting-started/guide). -10. **No Information Panel?** - - If you click on the **Code** cell and there is no **Information Panel**, you may have turned it off accidentally. Click on the **Open Info Panel** button near the top right of the window. +9. You'll also see the New Forum Post button (as shown in the screenshot _to the right_). This is the easiest way to post discussions for the selected item. Remember that the Forum posts are at language level and not at Sub-locale level. For more information, see [Forum](#forum). +10. **No Info Panel?** + - If you click on the **Code** cell and there is no **Info Panel**, you may have turned it off accidentally. Click on the **Open Info Panel** button near the top right of the window. ![alt-text](../../images/gettingStartedGuideSideBar.png) ![alt-text](../../images/gettingStartedGuideCookies.png) @@ -133,8 +127,7 @@ Language variants by Region are differentiated as Parent-locale and sub-locales. - **Spanish (Argentina) es\_AR** is one of the sub-locales for Spanish (Latin America). Votes on inheritance will ensure that it will only contain content that is different than what is in Spanish (Latin America) - -The regional variants menu for a data point is shown on the right navigation information pane. It will look something like the following (the exact appearance depends on the browser). +The regional variants menu for a data point is shown on the right navigation Info Panel. It will look something like the following (the exact appearance depends on the browser). When you pull it down, it will show which regional variants have different values than the main language locale. The current locale will show as darker gray as shown in the screenshot on the right. @@ -174,7 +167,6 @@ _**Note:**_ _The total progress widget is currently only visible when the dashbo _Progress bar shows progress of items on page for your coverage level._ ![alt-text](../../images/gettingStartedGuidePageProgress.png) - ### _Overall progress_ _Progress bar shows progress of items overall for your coverage level._ @@ -187,7 +179,7 @@ The Dashboard will show you a list of data items with warnings of different kind ![alt-text](../../images/gettingStartedGuideDashboard.png) -The goal is that you should work the Dashboard down to show zero items, then review the [**Reports**](https://cldr.unicode.org/index/survey-tool/guide#TOC-Reports), below. +The goal is that you should work the Dashboard down to show zero items, then review the [Reports](#reports) (below). _The first priority is to fix all the_ _**Missing**_ _items by supplying the correct translations._ @@ -246,7 +238,6 @@ There are two ways to clear items from the **Dashboard** list: - _Click on the orange eye button in the line (a “Show" tooltip will appear)._ - _Hide all the lines again by clicking the top eye button._ - ## Reports The reports show lists of items that need to be reviewed for consistency. You should look through these after you do the **Dashboard** to make sure that the items are consistent, when viewed in the context of others. Each of them has a link to instructions at the top. Please read these before continuing. @@ -273,7 +264,7 @@ You may see a message like the following when trying to modify a regional locale ![alt-text](../../images/gettingStartedGuideBrazil.png) -The reason that Brazil is grayed out is that it is the default content locale for Portuguese. So to modify pt-BR, you need to simply click on Portuguese. If you do click on Brazil, you will get to a page with the following at the top. Clicking on [default content locale](https://cldr.unicode.org/translation/translation-guide-general/default-content) will explain in more detail. +The reason that Brazil is grayed out is that it is the default content locale for Portuguese. So to modify pt-BR, you need to simply click on Portuguese. If you do click on Brazil, you will get to a page with the following at the top. Clicking on [default content locale](/translation/translation-guide-general/default-content) will explain in more detail. ![alt-text](../../images/gettingStartedGuideGeneralInfo.png) @@ -319,7 +310,6 @@ Forum posts work with the following workflow: 2. Responses by other vetters in your language with Agree, Decline, or Comment. 3. Once resolved, the creators of the the initial Request or Discuss closes the post. - ### How to create a new forum post A forum post can be specific to a particular data point or a general issue. In either case, create a new forum post to an item. @@ -327,14 +317,13 @@ A forum post can be specific to a particular data point or a general issue. In e - A post that is specific to a particular data point. - A general issue that impacts multiple data points. In a general case that impacts multiple data points, you do not need to post new forum posts for every item impacted. The general issue should be flagged to other vetters and once a consensus is reached, it is expected that vetters update their votes on all impacted items. New forum posts can be used to flag to other vetters if others fail to update their votes on all impacted items. ONLY request if others have missed or have not updated consistently. - -**Create forum posts from the** [**Information pane**](https://cldr.unicode.org/translation/getting-started/guide#TOC-Information-Panel)**l in the voting window.** +**Create forum posts from the [Info Panel](#info-panel) in the voting window.** 1. Vote on an item (or add new +) for the item you want to suggest changing. ![alt-text](../../images/gettingStartedGuideVote.png) -2. In the Information panel on the right, there are two buttons to indicate the type of forum posts: +2. In the Info Panel on the right, there are two buttons to indicate the type of forum posts: 1. **Request** You have voted on a non-winning item, and you want to Request others to change their votes. 2. **Discuss -** Currently only TC members can make discuss posts. @@ -353,9 +342,9 @@ A forum post can be specific to a particular data point or a general issue. In e There are two ways to respond to forum posts: - Info Panel (This is the recommended option.) -- In the Forum view (See [Working in the Forum view](https://cldr.unicode.org/translation/getting-started/guide#TOC-Working-in-the-Forum-view-)) +- In the Forum view (See [Working in the Forum view](#working-in-the-forum-view)) -**Respond from the** [**Info Panel**](https://cldr.unicode.org/translation/getting-started/guide#TOC-Information-Panel) **in the voting window.** +**Respond from the [Info Panel](#info-panel) in the voting window.** In the **Info Panel**, select the **Comment** button - Each posted response is labeled in Red and its response type: Agree, Decline or Comment. @@ -375,10 +364,9 @@ In the **Info Panel**, select the **Comment** button There are two ways to respond to new forum post: - Info Panel (This is the recommended option.) -- In the Forum view (See [Working in the Forum view](https://cldr.unicode.org/translation/getting-started/guide#TOC-Working-in-the-Forum-view-)) +- In the Forum view (See [Working in the Forum view](#working-in-the-forum-view)) - -**Respond to forum posts from the** [**Info Panel**](https://cldr.unicode.org/translation/getting-started/guide#TOC-Information-Panel) **in the voting window.** +**Respond to forum posts from the [Info Panel](#info-panel) in the voting window.** 1. In the Info Panel click the **Comment** button and add your input to the open discussion. 2. The label **Discuss** in Red indicates that this is a Discuss post (to distinguish from Request posts) @@ -387,6 +375,7 @@ There are two ways to respond to new forum post: ### Working in the Forum view In the Survey Tool [Forum](https://st.unicode.org/cldr-apps/v#forum/fr//) view, there are multiple filtering options available for you to work more effectively. + 1. The Forum view can be accessed from the left navigation **Forum.** ![alt-text](../../images/gettingStartedGuideForum.jpeg) @@ -408,13 +397,13 @@ In the Forum view, you can respond to Request and Discuss posts. For **Request posts**, you can select your decision using the 3 available buttons: **Agree, Decline, Comment.** -See [Responding to Request posts in Information Pane](https://cldr.unicode.org/translation/getting-started/guide#TOC-Responding-to-Request-posts). +See [Responding to Request posts in Info Panel](#responding-to-request-posts). ![alt-text](../../images/gettingStartedGuideForumPosts.png) ## Reporting Survey Tool issues -If you run into a problem with the Survey Tool functionalities, please see [FAQ & Known Bugs](https://cldr.unicode.org/index/survey-tool/faq-and-known-bugs) to see whether it has already been reported (and whether there is a work-around). If not, or if you have suggestions for improvements, please file a bug using the Feedback link at the bottom of each window. If you encounter problems or have enhancement suggestions for the survey tool, please [file a ticket](https://cldr.unicode.org/index/bug-reports#TOC-Filing-a-Ticket). +If you run into a problem with the Survey Tool functionalities, please see [FAQ & Known Bugs](../../index/survey-tool/faq-and-known-bugs) to see whether it has already been reported (and whether there is a work-around). If not, or if you have suggestions for improvements, please file a bug using the Feedback link at the bottom of each window. If you encounter problems or have enhancement suggestions for the survey tool, please [file a ticket](../requesting_changes#how-to-file-a-ticket). ![alt-text](../../images/gettingStartedGuideCoverage.png) @@ -423,10 +412,9 @@ If you run into a problem with the Survey Tool functionalities, please see [FAQ 1. Another way to check for posts that may need your attention is to review email notifications to the e-mail account for your locale. You can delete these notifications if they are for changes initiated by you. You can open the post directly from a link in the email. 2. When you make a forum entry, it will be emailed to all other linguists working on locales with the same language, parent or sub-locale (i.e. **forum is at Language level and not at sub-locale level**). If you are talking about a translation in a sub-locale, be sure that you are clear about that. - ### Forum posts for CLDR ticket feedback -CLDR users can send in data feedback using [JIRA](https://github.com/unicode-org/cldr/blob/main/docs/requesting_changes.md). Tickets filed in JIRA will be processed as described below. Please expect to see posts by CLDR Technical Committee members (TCs) in Forums, and participate by providing your response to any tickets needing your input. +CLDR users can send in data feedback using [JIRA](/requesting_changes). Tickets filed in JIRA will be processed as described below. Please expect to see posts by CLDR Technical Committee members (TCs) in Forums, and participate by providing your response to any tickets needing your input. The goal is to bring it to the attention to all linguists contributing in a particular language, and gather their input, so an informed decision can be made and/or suggested. @@ -435,12 +423,10 @@ The goal is to bring it to the attention to all linguists contributing in a part 3. A reason for not changing could be for example that it is a reasonable change, but doesn't exceed the 'stability' bar in the translation guidelines. 4. TC members will monitor the forum discussion/change during the Submission phase, and will close the JIRA ticket after the forum discussion is concluded. - ## Advanced Features -1. Users familiar with CLDR XML format can upload votes (and submissions) for multiple items at once. See [**Bulk Data Upload**](https://cldr.unicode.org/index/survey-tool/bulk-data-upload)**.** -2. Organization managers can manage users for their organization (add, remove, send passwords, set locales, etc.) For more information, see [**Managing Users**](https://cldr.unicode.org/index/survey-tool/managing-users)**.** +1. Users familiar with CLDR XML format can upload votes (and submissions) for multiple items at once. See [Bulk Data Upload](/index/survey-tool/bulk-data-upload). +2. Organization managers can manage users for their organization (add, remove, send passwords, set locales, etc.) For more information, see [Managing Users](/index/survey-tool/managing-users). 1. Some users may want to reset their Coverage Level, with the menu that looks like the image to the right. 2. The Coverage Level determines the items that you will see for translation: the minimal level has the highest priority items. You normally start with the level marked "Default" (which will vary by your organization and locale). Each successively higher level adds more items, at successively lower priorities. You will not normally go beyond "Modern", unless you have special instructions for your organization. 3. _Note that some companies won't use the data until it is complete at a certain coverage level, typically_ _**Modern**._ - diff --git a/docs/site/translation/getting-started/plurals.md b/docs/site/translation/getting-started/plurals.md index faed65ab660..46ba590444e 100644 --- a/docs/site/translation/getting-started/plurals.md +++ b/docs/site/translation/getting-started/plurals.md @@ -10,11 +10,11 @@ In CLDR, Plurals are used for localized Units and Compact numbers (under Numbers In the Survey Tool for translation purpose, plural forms shown per language will differ as only those that are relevant to that language are shown. -For example, in French, the distinction of the One and Other are available. Please see [Plural Rules](https://cldr.unicode.org/index/cldr-spec/plural-rules), and [file a ticket](https://github.com/unicode-org/cldr/blob/main/docs/requesting_changes.md) if you see a form in the Survey Tool that is not expected in your language. +For example, in French, the distinction of the One and Other are available. Please see [Plural Rules](/index/cldr-spec/plural-rules), and [file a ticket](https://github.com/unicode-org/cldr/blob/main/docs/requesting_changes.md) if you see a form in the Survey Tool that is not expected in your language. ![image](../../images/French-plural.PNG) -**Note:** Many of the sets of names form Logical Groups, and you need to make sure they have the same status or you will get error messages. See [Logical Groups](https://cldr.unicode.org/translation/getting-started/resolving-errors) for more information. +**Note:** Many of the sets of names form Logical Groups, and you need to make sure they have the same status or you will get error messages. See [Logical Groups](/translation/getting-started/resolving-errors) for more information. ## Localized Units @@ -71,17 +71,17 @@ The short and narrow forms of the display names for a unit need not be as short ## Past and Future -Unit patterns for past and future (3 hours ago, In 4 hours) are related to [Relative Dates](https://cldr.unicode.org/translation/date-time/date-time-names), and occur in the same circumstances. They need to have the same casing behavior. That is, if the translation for "Yesterday" starts with an uppercase 'Y', then the translation for "In {0} hours" needs to start with an uppercase 'I' (if it doesn't start with the placeholder). +Unit patterns for past and future (3 hours ago, In 4 hours) are related to [Relative Dates](/translation/date-time/date-time-names), and occur in the same circumstances. They need to have the same casing behavior. That is, if the translation for "Yesterday" starts with an uppercase 'Y', then the translation for "In {0} hours" needs to start with an uppercase 'I' (if it doesn't start with the placeholder). ## Minimal Pairs Minimal pairs are used to verify the different grammatical features used by a language. _**These messages are not to be translated literally; do not simply translate the English!**_ -- **Plurals (cardinals) and Ordinals.** See [Determining Plural Categories](https://cldr.unicode.org/index/cldr-spec/plural-rules#TOC-Determining-Plural-Categories). -- **Grammatical Case and Gender.** See [Grammatical Inflection](https://cldr.unicode.org/translation/grammatical-inflection) +- **Plurals (cardinals) and Ordinals.** See [Determining Plural Categories](/index/cldr-spec/plural-rules#TOC-Determining-Plural-Categories). +- **Grammatical Case and Gender.** See [Grammatical Inflection](/translation/grammatical-inflection) ## Compound Units -Units of measurement can be formed from other units and other components. For more information, see [Compound Units](https://cldr.unicode.org/translation/units/unit-names-and-patterns). +Units of measurement can be formed from other units and other components. For more information, see [Compound Units](/translation/units/unit-names-and-patterns). diff --git a/docs/site/translation/getting-started/review-formats.md b/docs/site/translation/getting-started/review-formats.md index 128addcc11f..14b32fe12f1 100644 --- a/docs/site/translation/getting-started/review-formats.md +++ b/docs/site/translation/getting-started/review-formats.md @@ -46,7 +46,7 @@ Check for consistency between different forms by looking at them side by side. ### Person Name tips -1. Please read the [Miscellaneous: Person Name Formats](https://cldr.unicode.org/translation/miscellaneous-person-name-formats) under "**Review Report**". +1. Please read the [Miscellaneous: Person Name Formats](/translation/miscellaneous-person-name-formats) under "**Review Report**". ### Date & Time Review Tips diff --git a/docs/site/translation/getting-started/survey-tool-phases.md b/docs/site/translation/getting-started/survey-tool-phases.md index 019fd776c28..3c860ddb4a9 100644 --- a/docs/site/translation/getting-started/survey-tool-phases.md +++ b/docs/site/translation/getting-started/survey-tool-phases.md @@ -23,7 +23,7 @@ There are two types of releases: full, and limited-submission. - Limited-submission - Typically with odd versions (e.g. version 37). - Selected fields are open for all locales; the voting options will be grayed out for those data points that are not in scope. - - Proceed with Submission (General), but start with the [Dashboard](https://cldr.unicode.org/translation/getting-started/guide#h.bmzr9ejnlv1u) and focus on Errors\*, Missing†, Provisional + - Proceed with Submission (General), but start with the [Dashboard](/translation/getting-started/guide#h.bmzr9ejnlv1u) and focus on Errors\*, Missing†, Provisional - Selected locales are open for votes on all fields. - Proceed with Submission (General).  @@ -39,7 +39,7 @@ You should know in this stage: - You can start work - Expect a churn: there may be additional Tooling fixes and Data additions during this period.  - Tool may be taken down for updates more frequently during general submission -- You are expected to look for issues with the Survey tool and any other problems you encounter as a vetter. Please [file a ticket](https://cldr.unicode.org/index/bug-reports). +- You are expected to look for issues with the Survey tool and any other problems you encounter as a vetter. Please [file a ticket](/index/bug-reports). ### Survey Tool phase: General Submission @@ -47,28 +47,28 @@ _Make sure your coverage level is set correctly at the top of the page._ For new locales or ones where the goal is to increase the level, it is best to proceed page-by-page starting with the **Core Data** section. At the top of each page you can see the number of items open on the page. Then scan down the page to see all the places where you need to vote (including adding items). Some  -Then please focus on the [Dashboard](https://cldr.unicode.org/translation/getting-started/guide#h.bmzr9ejnlv1u) view, +Then please focus on the [Dashboard](/translation/getting-started/guide#h.bmzr9ejnlv1u) view, 1. Get all **Missing**† items entered 2. Vote for all **Provisional** items (where you haven't already voted) 3. Address any remaining **Errors\*** 4. Review the **English Changed** (where the English value changed, but your locale's value didn't. These may need adjustment.) - \* Note that if the committee finds systematic errors in data, new tests can be added during the submission period, resulting in new **Errors**. - - † Among the _**Missing**_ are are new items for translation. (On the [Dashboard](https://cldr.unicode.org/translation/getting-started/guide#h.bmzr9ejnlv1u), **New** means winning values that have changed since the last release.) + - † Among the _**Missing**_ are are new items for translation. (On the [Dashboard](/translation/getting-started/guide#h.bmzr9ejnlv1u), **New** means winning values that have changed since the last release.) -If you are working in a sub-locales (such as fr\_CA), coordinate with others on the Forum to work on each section after it is are done in the main locale (fr). That way you avoid additional work and gratuitous differences. See voting for inheritance vs. hard votes in [Survey Tool guide](https://cldr.unicode.org/translation/getting-started/guide).  +If you are working in a sub-locales (such as fr\_CA), coordinate with others on the Forum to work on each section after it is are done in the main locale (fr). That way you avoid additional work and gratuitous differences. See voting for inheritance vs. hard votes in [Survey Tool guide](/translation/getting-started/guide).  ### Survey Tool phase: Vetting -All contributors are encourage to move their focus to the [Dashboard](https://cldr.unicode.org/translation/getting-started/guide#h.bmzr9ejnlv1u) view. Also see [Dashboard tip](https://cldr.unicode.org/translation/getting-started/vetting-view)s to use during Vetting stage. +All contributors are encourage to move their focus to the [Dashboard](/translation/getting-started/guide#h.bmzr9ejnlv1u) view. Also see [Dashboard tip](/translation/getting-started/vetting-view)s to use during Vetting stage. 1. Any [Flagged entries](https://st.unicode.org/cldr-apps/v#flagged///) in your locale may have questions in the Forum from TC members; please add additional information to help the TC resolve them. 1. To see the Flagged items, click on the **Menu** icon in the upper left corner, under the **Forum** header see **Flagged items**: 2. Open the Dashboard, and resolve all of the Errors, Provisional Items, Disputed items, and finish Reports - 1. Consider other's opinions, by reviewing the **Disputed** and the **Losing**. See guidelines for handling [Disputed](http://cldr.unicode.org/translation/getting-started/guide#TOC-Disputed) and [Losing](http://cldr.unicode.org/translation/getting-started/guide#TOC-Losing). -3. Review all open Requests and Discussions in the [Forums](https://cldr.unicode.org/translation/getting-started/guide#h.fx4wl2fl31az), and respond. + 1. Consider other's opinions, by reviewing the **Disputed** and the **Losing**. See guidelines for handling [Disputed](/translation/getting-started/guide#TOC-Disputed) and [Losing](/translation/getting-started/guide#TOC-Losing). +3. Review all open Requests and Discussions in the [Forums](/translation/getting-started/guide#h.fx4wl2fl31az), and respond. ### Resolution (Closed to vetters) -The vetting is done, and further work is being done by the CLDR committee to resolve problems. You should periodically take a couple of minutes to check your [Forums](https://cldr.unicode.org/translation/getting-started/guide#h.fx4wl2fl31az) to see if there are any questions about language-specific items that came up. +The vetting is done, and further work is being done by the CLDR committee to resolve problems. You should periodically take a couple of minutes to check your [Forums](/translation/getting-started/guide#h.fx4wl2fl31az) to see if there are any questions about language-specific items that came up. diff --git a/docs/site/translation/getting-started/vetting-view.md b/docs/site/translation/getting-started/vetting-view.md index 6732031f596..0caf45128d1 100644 --- a/docs/site/translation/getting-started/vetting-view.md +++ b/docs/site/translation/getting-started/vetting-view.md @@ -53,13 +53,13 @@ The following are legacy tools to review votes, but the Priority Items tool is d **Review:** Priority Items |Date/Time | Zones | Numbers -You can also see a video walkthrough of the review sections on [Walkthrough](https://cldr.unicode.org/index/survey-tool/walkthrough). +You can also see a video walkthrough of the review sections on [Walkthrough](/index/survey-tool/walkthrough). -The rest of this page discusses how to do the Priority Items. Once you have done the Priority Items, [Review reports](https://cldr.unicode.org/translation/getting-started/review-formats). +The rest of this page discusses how to do the Priority Items. Once you have done the Priority Items, [Review reports](/translation/getting-started/review-formats). Remember to periodically look at the Forum for your locale. -1. On any page in your locale, near the top there is a link "[Forum](https://cldr.unicode.org/translation/getting-started/guide#TOC-Forum)". +1. On any page in your locale, near the top there is a link "[Forum](/translation/getting-started/guide#TOC-Forum)". 2. Click on it and go through the comments. 3. If there is a request to change values or votes, either respond on the Forum with why you disagree, or change your vote. 4. Some issues may be general, such as the capitalization of language names. _In the vetting period, please try to resolve these in accordance with the other items in the locale for consistency; leave anything else for the next release._ @@ -118,7 +118,7 @@ Vetting Phase _Go through the summary list, clicking the checkbox (☑) to show the issues of type you're working on._ You can click several at once if you find that easier. That will then expose the issues of that type below the summary. -After the data submission phase, any differences in the submitted data will be resolved according to the [data resolution process](https://cldr.unicode.org/index/process#TOC-Data--Resolution). +After the data submission phase, any differences in the submitted data will be resolved according to the [data resolution process](/index/process#TOC-Data--Resolution). ### How to Handle @@ -134,13 +134,13 @@ Handle each of the types of issues as follows: 1. Go to the item (by clicking the **Fix?** link). 2. Error items will be removed from the release, so they are a priority in the vetting phase. -3. Review the warning items; most of them need fixing but not all. See [Fixing Errors and Warnings](https://cldr.unicode.org/translation/getting-started/errors-and-warnings) +3. Review the warning items; most of them need fixing but not all. See [Fixing Errors and Warnings](/translation/getting-started/errors-and-warnings) ### Losing\*, Disputed\* 1. See if the winning value is ok. If so, change your vote to it, and go to the next item. -2. Otherwise, post a message to the [Forum](https://cldr.unicode.org/translation/getting-started/guide#TOC-Forum). +2. Otherwise, post a message to the [Forum](/translation/getting-started/guide#TOC-Forum). 1. State why you think the item should be changed. 2. If there are a number of items that have the same characteristic (such as the wrong capitalization), you can make that case in a single posting rather than multiple ones. diff --git a/docs/site/translation/grammatical-inflection.md b/docs/site/translation/grammatical-inflection.md index f9f6b55cd24..ccb618a03a8 100644 --- a/docs/site/translation/grammatical-inflection.md +++ b/docs/site/translation/grammatical-inflection.md @@ -71,7 +71,7 @@ You do not have to supply the *sample phrase (column 4)* in the Survey Tool, but ### Minimal Pairs: Plurals and Ordinals -See [Plural Rules](https://cldr.unicode.org/index/cldr-spec/plural-rules) +See [Plural Rules](/index/cldr-spec/plural-rules) ## Units > Compound Units diff --git a/docs/site/translation/language-specific.md b/docs/site/translation/language-specific.md index f0ba3133f37..2b5f5465612 100644 --- a/docs/site/translation/language-specific.md +++ b/docs/site/translation/language-specific.md @@ -4,9 +4,5 @@ title: Δ - Language Specific Guidance # Δ - Language Specific Guidance -The following pages have guidance for specific languages: - -- [Lakota](https://cldr.unicode.org/translation/language-specific/lakota) -- [Odia](https://cldr.unicode.org/translation/language-specific/odia) -- [Persian](https://cldr.unicode.org/translation/language-specific/persian) - +Certain languages have specialized guidance. +See the subpages in the sidebar. diff --git a/docs/site/translation/miscellaneous-person-name-formats.md b/docs/site/translation/miscellaneous-person-name-formats.md index 23e00f9449d..97313b67e46 100644 --- a/docs/site/translation/miscellaneous-person-name-formats.md +++ b/docs/site/translation/miscellaneous-person-name-formats.md @@ -10,7 +10,7 @@ That guide is embedded below, but it may be easier just to open up the [Person N The main topics are: -- [Version 44 Changes](https://cldr.unicode.org/translation/miscellaneous-person-name-formats) — *this section is important; please read carefully.* +- [Version 44 Changes](/translation/miscellaneous-person-name-formats) — *this section is important; please read carefully.* - [Why do we need formatting for people’s names?](https://docs.google.com/document/d/1mjxIHsb97Og8ub6BKWxOihcHz7zjU4GdFkIxWHGAtes/edit#heading=h.wqpdugycqnvg) - [Starting out](https://docs.google.com/document/d/1mjxIHsb97Og8ub6BKWxOihcHz7zjU4GdFkIxWHGAtes/edit#heading=h.q7f5rnykj886) - [Name Order For Locales](https://docs.google.com/document/d/1mjxIHsb97Og8ub6BKWxOihcHz7zjU4GdFkIxWHGAtes/edit#heading=h.xquzeu24o1qf) diff --git a/docs/site/translation/miscellaneous.md b/docs/site/translation/miscellaneous.md index c3eda824b31..188b5c98396 100644 --- a/docs/site/translation/miscellaneous.md +++ b/docs/site/translation/miscellaneous.md @@ -5,4 +5,4 @@ title: Miscellaneous # Miscellaneous This section provides translation information about miscellaneous pages in the Survey Tool. -See the subpages, using the ≡ menu at the top of this page. +See the subpages in the sidebar. diff --git a/docs/site/translation/number-currency-formats.md b/docs/site/translation/number-currency-formats.md index e5e7336ba68..663b68fa3fb 100644 --- a/docs/site/translation/number-currency-formats.md +++ b/docs/site/translation/number-currency-formats.md @@ -4,7 +4,7 @@ title: Number & Currency formats # Number & Currency formats -- [Number & currency patterns](https://cldr.unicode.org/translation/number-currency-formats/number-and-currency-patterns) -- [Number symbols](https://cldr.unicode.org/translation/number-currency-formats/number-symbols) -- [Other patterns](https://cldr.unicode.org/translation/number-currency-formats/other-patterns) +- [Number & currency patterns](/translation/number-currency-formats/number-and-currency-patterns) +- [Number symbols](/translation/number-currency-formats/number-symbols) +- [Other patterns](/translation/number-currency-formats/other-patterns) diff --git a/docs/site/translation/number-currency-formats/number-and-currency-patterns.md b/docs/site/translation/number-currency-formats/number-and-currency-patterns.md index 2909f2e78bf..2246c513574 100644 --- a/docs/site/translation/number-currency-formats/number-and-currency-patterns.md +++ b/docs/site/translation/number-currency-formats/number-and-currency-patterns.md @@ -8,11 +8,11 @@ title: Number and currency patterns Pre-requisite topics to read: -- [Number Symbols](https://cldr.unicode.org/translation/number-currency-formats/number-symbols) +- [Number Symbols](/translation/number-currency-formats/number-symbols) Numbers are formatted using patterns, like "#,###.00". For example, the pattern "#,###.00" when used to format the number 12345.678 could result in "12'345,67" if the grouping separator for your locale use an apostrophe ('), and the decimal separator is a comma (,). -Whenever any of these symbols are in the English pattern, they **must be retained** in the pattern for your locale. The positions of some of them (%, ¤) may be changed, or spaces added or removed. The symbols will be replaced by the local equivalents, using the [Number Symbols](https://cldr.unicode.org/translation/number-currency-formats/number-symbols) for your language. (See 💡 Helpful Tips below the table) +Whenever any of these symbols are in the English pattern, they **must be retained** in the pattern for your locale. The positions of some of them (%, ¤) may be changed, or spaces added or removed. The symbols will be replaced by the local equivalents, using the [Number Symbols](/translation/number-currency-formats/number-symbols) for your language. (See 💡 Helpful Tips below the table) | Type | Example pattern | Meaning | |---|:---:|---| @@ -112,7 +112,7 @@ When computer programs use CLDR, the number of decimals can be changed by comput - For example, the Japanese pattern for 1000 uses a zero digit because 1,000 is expressed with the character 千. This should be avoided wherever possible, however, since it may cause display issues on devices with small screens, such as mobile phones. - In some languages the text will inflect according to the number. For example, languages that write "1 million" but "2 millions". - The patterns do not allow for gender or case inflection, so use the most neutral form. - - Remember that these are number patterns, so literal characters like a period (".") must occur within quotation marks if they are not the placeholder standing for the decimal period. See [Pattern Characters](https://cldr.unicode.org/translation/number-currency-formats/number-and-currency-patterns). + - Remember that these are number patterns, so literal characters like a period (".") must occur within quotation marks if they are not the placeholder standing for the decimal period. See [Pattern Characters](/translation/number-currency-formats/number-and-currency-patterns). - Compact decimal patterns do not require a "0" when there is a single word or a symbol that is unique. For example, in Hebrew and Somali, 4-digit-short-one gets formatted to a single word or symbol, without an extra digit. In a Somali example,1000 would be formatted to "Kun" and not "0 Kun" (in Somali, you would express 1000 as "Kun" not "1 Kun"). - However, this can **only** be done where the number is unique. For example, in French 4-digit-short-one (1000) is used to format not only 1K, but also 1.1K. If you supply a pattern with no digits, the user can't tell what the number is suppose to be. An error will occur if you try to do this. - There is a mechanism for special cases of exact matches. A special row can be added for your language for specific numbers, such as exactly 1, where the digits must be omitted. You would see a Code value of 4-digit-short-one, for example. If your language has such cases, please file a ticket to request adding them. @@ -120,7 +120,7 @@ When computer programs use CLDR, the number of decimals can be changed by comput ## Plural Forms of Numbers -Some languages have multiple plural forms for numbers, and will have multiple plural categories for each number. See [Plural Rules and Tool](https://cldr.unicode.org/translation/plurals#TOC-Rules-and-Tool) for numbers mapped to the various plural categories.  +Some languages have multiple plural forms for numbers, and will have multiple plural categories for each number. See [Plural Rules and Tool](/translation/plurals#TOC-Rules-and-Tool) for numbers mapped to the various plural categories.  X digit-one diff --git a/docs/site/translation/number-currency-formats/number-symbols.md b/docs/site/translation/number-currency-formats/number-symbols.md index acd4906eddf..9b30d2bd482 100644 --- a/docs/site/translation/number-currency-formats/number-symbols.md +++ b/docs/site/translation/number-currency-formats/number-symbols.md @@ -4,7 +4,7 @@ title: Number Symbols # Number Symbols -The following symbols are used to format numbers. The Approved symbols for the locale will be substituted for the placeholders described in [Number Patterns](https://cldr.unicode.org/translation/number-currency-formats/number-and-currency-patterns).  +The following symbols are used to format numbers. The Approved symbols for the locale will be substituted for the placeholders described in [Number Patterns](/translation/number-currency-formats/number-and-currency-patterns).  For English regional locales (e.g. en\_DE) where English is not the primary language of the country/region (e.g. en\_DE; English as used in Germany), the number formats and date formats should follow the **English formatting usage** in that country/region. Often, the formatting usage in English tend to follow the British or American formatting rather than the formatting of the primary language. Consult with the English versions of prominent magazines or newspapers for guidance on date and number format usage. diff --git a/docs/site/translation/time-zones-and-city-names.md b/docs/site/translation/time-zones-and-city-names.md index 2a08b5ab3b2..56be82e78ca 100644 --- a/docs/site/translation/time-zones-and-city-names.md +++ b/docs/site/translation/time-zones-and-city-names.md @@ -10,7 +10,7 @@ Time zones (such as "Pacific Time" or "France Time") can be formatted in differe - "metazone" names, such as "Pacific Time" or "Pacific Standard Time", that can apply to segments of a country or groups of countries. - location (country or city) based names, such as "Paris Time" or "Japan Standard Time" - - These are constructed using patterns (see below), plus [Country/Region Names](https://cldr.unicode.org/translation/displaynames/countryregion-territory-names) and City Names. + - These are constructed using patterns (see below), plus [Country/Region Names](/translation/displaynames/countryregion-territory-names) and City Names. - When a "metazone" name is absent, a location based name is used as a fallback. - raw offsets, like "GMT+10:00" - These are constructed using patterns (see below). @@ -74,5 +74,5 @@ The city name may also be used in formatted times, such as: **Unique Names** -City names must be unique. See [Country/Region Names](https://cldr.unicode.org/translation/displaynames/countryregion-territory-names) for techniques. +City names must be unique. See [Country/Region Names](/translation/displaynames/countryregion-territory-names) for techniques. diff --git a/docs/site/translation/translation-guide-general.md b/docs/site/translation/translation-guide-general.md index ccc16026f24..8b244d85df3 100644 --- a/docs/site/translation/translation-guide-general.md +++ b/docs/site/translation/translation-guide-general.md @@ -4,8 +4,8 @@ title: General translation Guide # General translation Guide -- [Capitalization](https://cldr.unicode.org/translation/translation-guide-general/capitalization) -- [Default Content](https://cldr.unicode.org/translation/translation-guide-general/default-content) -- [References](https://cldr.unicode.org/translation/translation-guide-general/references) +- [Capitalization](/translation/translation-guide-general/capitalization) +- [Default Content](/translation/translation-guide-general/default-content) +- [References](/translation/translation-guide-general/references) diff --git a/docs/site/translation/translation-guide-general/default-content.md b/docs/site/translation/translation-guide-general/default-content.md index 684fbe8e935..19ee52524f1 100644 --- a/docs/site/translation/translation-guide-general/default-content.md +++ b/docs/site/translation/translation-guide-general/default-content.md @@ -12,7 +12,7 @@ Each language \+ script combination is treated as a unit. (i.e. People do not mi If a language is ***not*** typically written in multiple scripts, then the script sub\-tag is omitted. For example, en\_US or ko\_KR. -Locales may also have regional variants. For example, English (US) \[en\_US] vs English (UK) \[en\_GB], or Serbian (Cyrillic, Montenegro) \[sr\_Cyrl\_ME] vs Serbian (Cyrillic, Serbia) \[sr\_Cyrl\_RS]. Regions may be countries such as China \[CN], parts of countries such as Hong Kong \[HK] or multi\-country regions such as Latin America \[419]. Also see [Regional Variants](http://cldr.unicode.org/translation/getting-started/guide#TOC-Regional-Variants-also-known-as-Sub-locales-). +Locales may also have regional variants. For example, English (US) \[en\_US] vs English (UK) \[en\_GB], or Serbian (Cyrillic, Montenegro) \[sr\_Cyrl\_ME] vs Serbian (Cyrillic, Serbia) \[sr\_Cyrl\_RS]. Regions may be countries such as China \[CN], parts of countries such as Hong Kong \[HK] or multi\-country regions such as Latin America \[419]. Also see [Regional Variants](/translation/getting-started/guide#TOC-Regional-Variants-also-known-as-Sub-locales-). The contents for the base language should be as widely usable (neutral) as possible, but **must be** usable without modification for its *default content locale;* this is the locale for the language’s *default region,* which is typically the region with the most speakers of the language. A default content locale has no data other than identity information, it inherits all data from its parent. diff --git a/docs/site/translation/unique-translations.md b/docs/site/translation/unique-translations.md index 154824114ca..73f6028365c 100644 --- a/docs/site/translation/unique-translations.md +++ b/docs/site/translation/unique-translations.md @@ -6,7 +6,7 @@ title: Unique Translations See the following based on the type of translation -- [Points dots and pixels](https://cldr.unicode.org/translation/units/unit-names-and-patterns) -- [Unique Emoji and Symbol Names](https://cldr.unicode.org/translation/characters/short-names-and-keywords) - - [Unique Names](https://cldr.unicode.org/translation/displaynames/countryregion-territory-names#h.xkmg2o42dw29) (This is on the Country/Region page, but is the most general discussion). +- [Points dots and pixels](/translation/units/unit-names-and-patterns) +- [Unique Emoji and Symbol Names](/translation/characters/short-names-and-keywords) + - [Unique Names](/translation/displaynames/countryregion-territory-names#h.xkmg2o42dw29) (This is on the Country/Region page, but is the most general discussion). diff --git a/docs/site/translation/units.md b/docs/site/translation/units.md index 10ee380b396..c94dc030e42 100644 --- a/docs/site/translation/units.md +++ b/docs/site/translation/units.md @@ -4,6 +4,6 @@ title: Units # Units -- [Measurement systems](https://cldr.unicode.org/translation/units/measurement-systems) -- [Unit Names and Patterns](https://cldr.unicode.org/translation/units/unit-names-and-patterns) +- [Measurement systems](/translation/units/measurement-systems) +- [Unit Names and Patterns](/translation/units/unit-names-and-patterns) diff --git a/docs/site/translation/units/unit-names-and-patterns.md b/docs/site/translation/units/unit-names-and-patterns.md index 6978dd934df..7c094dbecfe 100644 --- a/docs/site/translation/units/unit-names-and-patterns.md +++ b/docs/site/translation/units/unit-names-and-patterns.md @@ -26,7 +26,7 @@ Note that if in your locale certain abbreviations are always understood to mean ## Simple Units -Simple units are cases like "{0} mile" or "{0} miles". These have from 1 to 6 [plural forms](https://cldr.unicode.org/translation/getting-started/plurals), depending on the language. Units also have a display name, such as "miles", used as labels in interfaces. +Simple units are cases like "{0} mile" or "{0} miles". These have from 1 to 6 [plural forms](/translation/getting-started/plurals), depending on the language. Units also have a display name, such as "miles", used as labels in interfaces. ## Compound Units diff --git a/tools/cldr-apps/js/src/esm/cldrAddValue.mjs b/tools/cldr-apps/js/src/esm/cldrAddValue.mjs new file mode 100644 index 00000000000..237f184fba4 --- /dev/null +++ b/tools/cldr-apps/js/src/esm/cldrAddValue.mjs @@ -0,0 +1,96 @@ +/* + * cldrAddValue: enable submitting a new value for a path + */ +import * as cldrNotify from "./cldrNotify.mjs"; +import * as cldrSurvey from "./cldrSurvey.mjs"; +import * as cldrTable from "./cldrTable.mjs"; +import * as cldrVote from "./cldrVote.mjs"; +import * as cldrVue from "./cldrVue.mjs"; + +import AddValue from "../views/AddValue.vue"; + +/** + * Is the "Add Value" form currently visible? + */ +let formIsVisible = false; + +let originalTrClassName = ""; + +function isFormVisible() { + return formIsVisible; +} + +function setFormIsVisible(visible, xpstrid) { + formIsVisible = visible; + const tr = getTrFromXpathStringId(xpstrid); + if (tr) { + if (visible) { + originalTrClassName = tr.className; + } + tr.className = visible ? "tr_submit" : originalTrClassName; + } +} + +function addButton(containerEl, xpstrid) { + try { + const AddValueWrapper = cldrVue.mount(AddValue, containerEl); + AddValueWrapper.setXpathStringId(xpstrid); + } catch (e) { + console.error( + "Error loading Add Value Button vue " + e.message + " / " + e.name + ); + cldrNotify.exception(e, "while loading AddValue"); + } +} + +function getEnglish(xpstrid) { + const theRow = getTheRowFromXpathStringId(xpstrid); + return theRow?.displayName || ""; +} + +function getWinning(xpstrid) { + const theRow = getTheRowFromXpathStringId(xpstrid); + if (!theRow) { + return ""; + } + let theValue = cldrTable.getValidWinningValue(theRow); + if (theValue === cldrSurvey.INHERITANCE_MARKER || theValue === null) { + theValue = theRow.inheritedDisplayValue; + } + return theValue || ""; +} + +function sendRequest(xpstrid, newValue) { + const tr = getTrFromXpathStringId(xpstrid); + if (!tr) { + return; + } + tr.inputTd = tr.querySelector(".othercell"); + const protoButton = document.getElementById("proto-button"); + cldrVote.handleWiredClick( + tr, + tr.theRow, + "", + newValue, + cldrSurvey.cloneAnon(protoButton) + ); +} + +function getTheRowFromXpathStringId(xpstrid) { + const tr = getTrFromXpathStringId(xpstrid); + return tr?.theRow; +} + +function getTrFromXpathStringId(xpstrid) { + const rowId = cldrTable.makeRowId(xpstrid); + return document.getElementById(rowId); +} + +export { + addButton, + getEnglish, + getWinning, + isFormVisible, + sendRequest, + setFormIsVisible, +}; diff --git a/tools/cldr-apps/js/src/esm/cldrComponents.mjs b/tools/cldr-apps/js/src/esm/cldrComponents.mjs index 8a70afa6838..7fd83745174 100644 --- a/tools/cldr-apps/js/src/esm/cldrComponents.mjs +++ b/tools/cldr-apps/js/src/esm/cldrComponents.mjs @@ -29,6 +29,7 @@ import { Form, Input, List, + Modal, Popover, Progress, Radio, @@ -71,6 +72,7 @@ function setup(app) { app.component("a-list-item-meta", List.Item.Meta); app.component("a-list-item", List.Item); app.component("a-list", List); + app.component("a-modal", Modal); app.component("a-popover", Popover); app.component("a-progress", Progress); app.component("a-radio-group", Radio.Group); diff --git a/tools/cldr-apps/js/src/esm/cldrGenerateVxml.mjs b/tools/cldr-apps/js/src/esm/cldrGenerateVxml.mjs index 24f20c3b37a..b6b9bc4af9e 100644 --- a/tools/cldr-apps/js/src/esm/cldrGenerateVxml.mjs +++ b/tools/cldr-apps/js/src/esm/cldrGenerateVxml.mjs @@ -8,15 +8,15 @@ import * as cldrStatus from "./cldrStatus.mjs"; const SECONDS_IN_MS = 1000; -const NORMAL_RETRY = 10 * SECONDS_IN_MS; // "Normal" retry: starting or about to start +const REQUEST_TIMER = 5 * SECONDS_IN_MS; // Fetch status this often const VXML_URL = "api/vxml"; // These must match the back end; used in requests -class LoadingPolicy { +class RequestType { static START = "START"; // start generating vxml static CONTINUE = "CONTINUE"; // continue generating vxml - static STOP = "STOP"; // stop (cancel) generating vxml + static CANCEL = "CANCEL"; // cancel (stop) generating vxml } // These must match the back end; used in responses @@ -24,8 +24,8 @@ class Status { static INIT = "INIT"; // before making a request (back end does not have INIT) static WAITING = "WAITING"; // waiting on other users/tasks static PROCESSING = "PROCESSING"; // in progress - static READY = "READY"; // finished successfully - static STOPPED = "STOPPED"; // due to error or cancellation (LoadingPolicy.STOP) + static SUCCEEDED = "SUCCEEDED"; // finished successfully + static STOPPED = "STOPPED"; // due to error, verification failure, or cancellation } let canGenerate = false; @@ -45,23 +45,23 @@ function viewMounted(setData) { function start() { // Disable announcements during VXML generation to reduce risk of interference cldrAnnounce.enableAnnouncements(false); - requestVxml(LoadingPolicy.START); + requestVxml(RequestType.START); } function fetchStatus() { if (!canGenerate || "generate_vxml" !== cldrStatus.getCurrentSpecial()) { canGenerate = false; } else if (canGenerate) { - requestVxml(LoadingPolicy.CONTINUE); + requestVxml(RequestType.CONTINUE); } } -function stop() { - requestVxml(LoadingPolicy.STOP); +function cancel() { + requestVxml(RequestType.CANCEL); } -function requestVxml(loadingPolicy) { - const args = { loadingPolicy: loadingPolicy }; +function requestVxml(requestType) { + const args = { requestType: requestType }; const init = cldrAjax.makePostData(args); cldrAjax .doFetch(VXML_URL, init) @@ -79,10 +79,13 @@ function setVxmlData(data) { } callbackToSetData(data); if (data.status === Status.WAITING || data.status === Status.PROCESSING) { - window.setTimeout(fetchStatus.bind(this), NORMAL_RETRY); - } else if (data.status === Status.READY || data.status === Status.STOPPED) { + window.setTimeout(fetchStatus.bind(this), REQUEST_TIMER); + } else if ( + data.status === Status.SUCCEEDED || + data.status === Status.STOPPED + ) { cldrAnnounce.enableAnnouncements(true); // restore } } -export { Status, canGenerateVxml, start, stop, viewMounted }; +export { Status, cancel, canGenerateVxml, start, viewMounted }; diff --git a/tools/cldr-apps/js/src/esm/cldrNotify.mjs b/tools/cldr-apps/js/src/esm/cldrNotify.mjs index 8c6e0a3d86f..9651e5432af 100644 --- a/tools/cldr-apps/js/src/esm/cldrNotify.mjs +++ b/tools/cldr-apps/js/src/esm/cldrNotify.mjs @@ -14,6 +14,10 @@ * such as 8 seconds here, 10 seconds there; top-left here and top-right there; ... */ +import * as cldrVue from "./cldrVue.mjs"; + +import NotificationPopup from "../views/NotificationPopup.vue"; + // Reference: https://www.antdv.com/components/notification import { notification } from "ant-design-vue"; import { datadogLogs } from "@datadog/browser-logs"; @@ -119,4 +123,31 @@ function exception(e, context) { }); } -export { error, errorWithCallback, exception, open, warning }; +/** + * Display an error notification, possibly containing HTML, with a custom dialog + * + * @param {String} message the title, displayed at the top (plain text) + * @param {String} description a description of the problem, possibly HTML + */ +function openWithHtml(message, description) { + if (hasDataDog) { + datadogLogs.logger.error(message, { description }); + } + try { + const NotificationPopupWrapper = cldrVue.mount( + NotificationPopup, + document.body + ); + NotificationPopupWrapper.openWithMessageAndDescription( + message, + description + ); + } catch (e) { + console.error( + "Error loading Notification Popup vue " + e.message + " / " + e.name + ); + exception(e, "while loading NotificationPopup"); + } +} + +export { error, errorWithCallback, exception, open, openWithHtml, warning }; diff --git a/tools/cldr-apps/js/src/esm/cldrSurvey.mjs b/tools/cldr-apps/js/src/esm/cldrSurvey.mjs index e7e0a0e706f..2c3f656fc7c 100644 --- a/tools/cldr-apps/js/src/esm/cldrSurvey.mjs +++ b/tools/cldr-apps/js/src/esm/cldrSurvey.mjs @@ -1,6 +1,7 @@ /** * cldrSurvey: encapsulate miscellaneous Survey Tool functions */ +import * as cldrAddValue from "./cldrAddValue.mjs"; import * as cldrAjax from "./cldrAjax.mjs"; import * as cldrCoverage from "./cldrCoverage.mjs"; import * as cldrCoverageReset from "./cldrCoverageReset.mjs"; @@ -107,18 +108,7 @@ function getXpathMap() { * @return true if busy */ function isInputBusy() { - if (cldrForum.isFormVisible()) { - return true; - } - const sel = window.getSelection ? window.getSelection() : null; - if (sel?.anchorNode?.className) { - // "popover-content" identifies the little input window, created using bootstrap, that appears when the - // user clicks an add ("+") button. - if (sel.anchorNode.className.indexOf("popover-content") != -1) { - return true; - } - } - return false; + return cldrAddValue.isFormVisible() || cldrForum.isFormVisible(); } function createGravatar(user) { diff --git a/tools/cldr-apps/js/src/esm/cldrTable.mjs b/tools/cldr-apps/js/src/esm/cldrTable.mjs index 94006a25211..6f27c4ff05a 100644 --- a/tools/cldr-apps/js/src/esm/cldrTable.mjs +++ b/tools/cldr-apps/js/src/esm/cldrTable.mjs @@ -9,6 +9,7 @@ */ import * as cldrAddAlt from "./cldrAddAlt.mjs"; +import * as cldrAddValue from "./cldrAddValue.mjs"; import * as cldrAjax from "./cldrAjax.mjs"; import * as cldrCoverage from "./cldrCoverage.mjs"; import * as cldrDashContext from "./cldrDashContext.mjs"; @@ -502,12 +503,10 @@ function reallyUpdateRow(tr, theRow) { const comparisonCell = tr.querySelector(".comparisoncell"); const proposedCell = tr.querySelector(".proposedcell"); const otherCell = tr.querySelector(".othercell"); - const addCell = tr.canModify ? tr.querySelector(".addcell") : null; - - /* - * "Add" button, potentially used by updateRowOthersCell and/or by otherCell or addCell - */ - const formAdd = document.createElement("form"); + const addCell = + tr.canChange && !theRow.fixedCandidates + ? tr.querySelector(".addcell") + : null; /* * Update the "status cell", a.k.a. the "A" column. @@ -557,17 +556,15 @@ function reallyUpdateRow(tr, theRow) { * Set up the "other cell", a.k.a. the "Others" column. */ if (otherCell) { - updateRowOthersCell(tr, theRow, otherCell, protoButton, formAdd); + updateRowOthersCell(tr, theRow, otherCell, protoButton); } /* * If the user can make changes, add "+" button for adding new candidate item. */ - if (tr.canChange) { - if (addCell) { - cldrDom.removeAllChildNodes(addCell); - addCell.appendChild(formAdd); - } + if (addCell) { + cldrDom.removeAllChildNodes(addCell); + cldrAddValue.addButton(addCell, theRow.xpstrid); } /* @@ -841,127 +838,14 @@ function updateRowProposedWinningCell(tr, theRow, cell, protoButton) { * @param theRow the data from the server for this row * @param cell the table cell * @param protoButton - * @param formAdd * * Called by updateRow. */ -function updateRowOthersCell(tr, theRow, cell, protoButton, formAdd) { +function updateRowOthersCell(tr, theRow, cell, protoButton) { let hadOtherItems = false; cldrDom.removeAllChildNodes(cell); // other cldrSurvey.setLang(cell); - if (tr.canModify && !tr.theRow.fixedCandidates) { - formAdd.role = "form"; - formAdd.className = "form-inline"; - const buttonAdd = document.createElement("div"); - const btn = document.createElement("button"); - buttonAdd.className = "button-add form-group"; - - toAddVoteButton(btn); - - buttonAdd.appendChild(btn); - formAdd.appendChild(buttonAdd); - - const input = document.createElement("input"); - let popup; - input.className = "form-control input-add"; - input.id = "input-add-translation"; - cldrSurvey.setLang(input); - input.placeholder = "Add a translation"; - const copyWinning = document.createElement("button"); - copyWinning.className = "copyWinning btn btn-info btn-xs"; - copyWinning.title = "Copy Winning"; - copyWinning.type = "button"; - copyWinning.innerHTML = - ' Winning'; - copyWinning.onclick = function (e) { - let theValue = getValidWinningValue(theRow); - if (theValue === cldrSurvey.INHERITANCE_MARKER || theValue === null) { - theValue = theRow.inheritedDisplayValue; - } - input.value = theValue || null; - input.focus(); - }; - const copyEnglish = document.createElement("button"); - copyEnglish.className = "copyEnglish btn btn-info btn-xs"; - copyEnglish.title = "Copy English"; - copyEnglish.type = "button"; - copyEnglish.innerHTML = - ' English'; - copyEnglish.onclick = function (e) { - input.value = theRow.displayName || null; - input.focus(); - }; - btn.onclick = function (e) { - //if no input, add one - if ($(buttonAdd).parent().find("input").length == 0) { - //hide other - $.each($("button.vote-submit"), function () { - toAddVoteButton(this); - }); - - //transform the button - toSubmitVoteButton(btn); - $(buttonAdd) - .popover({ - content: " ", - }) - .popover("show"); - popup = $(buttonAdd).parent().find(".popover-content"); - popup.append(input); - if (theRow.displayName) { - popup.append(copyEnglish); - } - const winVal = getValidWinningValue(theRow); - if (winVal || theRow.inheritedValue) { - popup.append(copyWinning); - } - popup - .closest(".popover") - .css("top", popup.closest(".popover").position().top - 19); - input.focus(); - - //enter pressed - $(input).keydown(function (e) { - const newValue = $(this).val(); - if (e.keyCode == 13) { - //enter pressed - if (newValue) { - addValueVote( - cell, - tr, - theRow, - newValue, - cldrSurvey.cloneAnon(protoButton) - ); - } else { - toAddVoteButton(btn); - } - } else if (e.keyCode === 27) { - toAddVoteButton(btn); - } - }); - } else { - const newValue = input.value; - - if (newValue) { - addValueVote( - cell, - tr, - theRow, - newValue, - cldrSurvey.cloneAnon(protoButton) - ); - } else { - toAddVoteButton(btn); - } - cldrEvent.stopPropagation(e); - return false; - } - cldrEvent.stopPropagation(e); - return false; - }; - } /* * Add the other vote info -- that is, vote info for the "Others" column. */ @@ -1192,51 +1076,6 @@ function appendExample(parent, text, loc) { return el; } -/** - * Handle new value submission - * - * @param td - * @param tr - * @param theRow - * @param newValue - * @param newButton - */ -function addValueVote(td, tr, theRow, newValue, newButton) { - tr.inputTd = td; // cause the proposed item to show up in the right box - cldrVote.handleWiredClick(tr, theRow, "", newValue, newButton); -} - -/** - * Transform input + submit button to the add button for the "add translation" - * - * @param btn - */ -function toAddVoteButton(btn) { - btn.className = "btn btn-primary"; - btn.title = "Add"; - btn.type = "submit"; - btn.innerHTML = ''; - $(btn).parent().popover("destroy"); - $(btn).tooltip("destroy").tooltip(); - $(btn).closest("form").next(".subSpan").show(); - $(btn).parent().children("input").remove(); -} - -/** - * Transform the add button to a submit - * - * @param btn the button - * @return the transformed button (return value is ignored by caller) - */ -function toSubmitVoteButton(btn) { - btn.innerHTML = ''; - btn.className = "btn btn-success vote-submit"; - btn.title = "Submit"; - $(btn).tooltip("destroy").tooltip(); - $(btn).closest("form").next(".subSpan").hide(); - return btn; -} - /** * Update the "no cell", a.k.a, the "Abstain" column, of this row * Also possibly make changes to the "proposed" (winning) cell @@ -1429,6 +1268,7 @@ export { getPageUrl, getRowApprovalStatusClass, getStatusIcon, + getValidWinningValue, goToHeaderId, insertRows, isHeaderId, diff --git a/tools/cldr-apps/js/src/esm/cldrVote.mjs b/tools/cldr-apps/js/src/esm/cldrVote.mjs index 684509ecfe8..79a3778a471 100644 --- a/tools/cldr-apps/js/src/esm/cldrVote.mjs +++ b/tools/cldr-apps/js/src/esm/cldrVote.mjs @@ -342,20 +342,10 @@ function showProposedItem(inTd, tr, theRow, value, tests, json) { ]; } - var input = $(inTd).closest("tr").find(".input-add"); - if (input) { - input.closest(".form-group").addClass("has-error"); - input - .popover("destroy") - .popover({ - placement: "bottom", - html: true, - content: cldrSurvey.testsToHtml(tests), - trigger: "hover", - }) - .popover("show"); - if (tr.myProposal) tr.myProposal.style.display = "none"; - } + // TODO: modernize to obviate cldrSurvey.testsToHtml + // Reference: https://unicode-org.atlassian.net/browse/CLDR-18013 + const description = cldrSurvey.testsToHtml(tests); + cldrNotify.openWithHtml("Response to voting", description); if (ourItem || (replaceErrors && value === "") /* Abstain */) { const message = cldrText.sub( "StatusAction_msg", diff --git a/tools/cldr-apps/js/src/views/AddValue.vue b/tools/cldr-apps/js/src/views/AddValue.vue new file mode 100644 index 00000000000..1be79c5c940 --- /dev/null +++ b/tools/cldr-apps/js/src/views/AddValue.vue @@ -0,0 +1,108 @@ + + + + + diff --git a/tools/cldr-apps/js/src/views/GenerateVxml.vue b/tools/cldr-apps/js/src/views/GenerateVxml.vue index 9f0c060e4e0..4d40e89b34f 100644 --- a/tools/cldr-apps/js/src/views/GenerateVxml.vue +++ b/tools/cldr-apps/js/src/views/GenerateVxml.vue @@ -1,5 +1,5 @@ + + diff --git a/tools/cldr-apps/src/main/java/org/unicode/cldr/web/OutputFileManager.java b/tools/cldr-apps/src/main/java/org/unicode/cldr/web/OutputFileManager.java index 408aaa5ffd8..ec6eb901377 100644 --- a/tools/cldr-apps/src/main/java/org/unicode/cldr/web/OutputFileManager.java +++ b/tools/cldr-apps/src/main/java/org/unicode/cldr/web/OutputFileManager.java @@ -18,7 +18,6 @@ import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.io.UnsupportedEncodingException; -import java.io.Writer; import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.time.Instant; @@ -86,9 +85,9 @@ private static class DirNames { * Generate VXML * * @param vxmlGenerator the VxmlGenerator - * @param out the Writer to receive output + * @param results the VxmlQueue.Results */ - public static void generateVxml(VxmlGenerator vxmlGenerator, Writer out) { + public static void generateVxml(VxmlGenerator vxmlGenerator, VxmlQueue.Results results) { try { /* * Sync on OutputFileManager.class here prevents re-entrance if invoked repeatedly before completion. @@ -96,27 +95,22 @@ public static void generateVxml(VxmlGenerator vxmlGenerator, Writer out) { synchronized (OutputFileManager.class) { SurveyMain sm = CookieSession.sm; OutputFileManager ofm = sm.getOutputFileManager(); - File vetdataDir = sm.getVetdir(); - vetdataDir = createNewManualVetdataDir(vetdataDir); - if (vetdataDir == null) { - out.write("Directory creation for vetting data failed."); + results.directory = createNewManualVetdataDir(sm.getVetdir()); + if (results.directory == null) { + results.generationMessage = "Directory creation for vetting data failed."; return; } - // TODO: make the directory name a separate field of the http response. - // In the meantime, it is still part of the html written to "out". - // Reference: https://unicode-org.atlassian.net/browse/CLDR-14913 - out.write("

Created new directory: " + vetdataDir + "

"); - if (!ofm.outputAllFiles(vxmlGenerator, out, vetdataDir)) { - out.write("File output failed."); + if (!ofm.outputAllFiles(vxmlGenerator, results)) { + results.generationMessage = "File output failed."; return; } - if (!ofm.copyDtd(vetdataDir)) { - out.write("Copying DTD failed."); + if (!ofm.copyDtd(results.directory)) { + results.generationMessage = "Copying DTD failed."; return; } - File vxmlDir = new File(vetdataDir + "/" + Kind.vxml.name()); + File vxmlDir = new File(results.directory + "/" + Kind.vxml.name()); ofm.removeEmptyFiles(vxmlDir); - ofm.verifyAllFiles(vxmlGenerator, out, vxmlDir); + ofm.verifyAllFiles(results, vxmlDir); } logger.log(Level.WARNING, "generateVxml finished"); } catch (Exception e) { @@ -196,36 +190,21 @@ private boolean copyDtd(File vetdataDir) { * Output all files (VXML, etc.) * * @param vxmlGenerator the VxmlGenerator - * @param out the Writer, to receive HTML output - * @param vetDataDir the folder in which to write + * @param results the VxmlQueue.Results * @return true for success, false for failure */ - private boolean outputAllFiles(VxmlGenerator vxmlGenerator, Writer out, File vetDataDir) { + private boolean outputAllFiles(VxmlGenerator vxmlGenerator, VxmlQueue.Results results) { try { - // TODO: instead of generating html on the back end, send structured data to the - // front end, including the generated list of locales as an array; or possibly just - // the number of locales written so far, along with most recent locale name. - // In the meantime, write a paragraph containing a comma-separated list of locale base - // names. - // Reference: https://unicode-org.atlassian.net/browse/CLDR-14913 - out.write("

"); - Set sortSet = vxmlGenerator.getSortSet(); - int i = 0; - for (CLDRLocale loc : sortSet) { - if (i++ > 0) { - out.write(", "); - } - out.write(loc.getBaseName()); + for (CLDRLocale loc : vxmlGenerator.getLocales()) { for (OutputFileManager.Kind kind : OutputFileManager.Kind.values()) { if (kind == OutputFileManager.Kind.vxml || kind == OutputFileManager.Kind.pxml) { logger.log(Level.WARNING, "Writing " + loc.getDisplayName() + ":" + kind); - writeManualOutputFile(vetDataDir, loc, kind); + writeManualOutputFile(results.directory, loc, kind); } } vxmlGenerator.update(loc); } - out.write("

"); return true; } catch (Exception e) { logger.log(Level.SEVERE, "outputAllFiles: " + e.getMessage(), e); @@ -319,7 +298,7 @@ private void removeEmptyFiles(File vxmlDir) throws IOException { * Remove "empty" VXML files in the given directory * * @param dirFile the given directory - * @throws IOException + * @throws IOException failed IO */ private void removeEmptyFilesOneDir(File dirFile) throws IOException { Set treatAsNonEmpty = new HashSet<>(); @@ -370,7 +349,7 @@ private void removeEmptyFilesOneDir(File dirFile) throws IOException { /** * Add the given name, and the names of its ancestors (except root), to the given set * - * @param treatAsNonEmpty + * @param treatAsNonEmpty the set to be modified * @param name the xml file name (without the .xml extension) */ private static void addNameAndParents(Set treatAsNonEmpty, String name) { @@ -384,51 +363,35 @@ private static void addNameAndParents(Set treatAsNonEmpty, String name) /** * Verify all VXML files * - * @param vxmlGenerator the VxmlGenerator - * @param out the Writer, to receive HTML output + * @param results the VxmlQueue.Results *

The following need to be verified on the server when generating vxml: • The same file * must not occur in both the common/X and seed/X directories, for any X=main|annotations • * If a parent locale (except for root) must occur in the same directory as the child locale * • Every file in trunk (common|seed/X) must have a corresponding vxml file • Every file in * vxml (common|seed/X) must have a corresponding trunk file This should fail with clear * warning to the user that there is a major problem. Reference: CLDR-12016 - * @throws IOException - *

vetdata └── vxml    ├── common    │   ├── annotations    │   └── main    └── seed ├── - * annotations    └── main */ - private void verifyAllFiles(VxmlGenerator vxmlGenerator, Writer out, File vxmlDir) - throws IOException { - int failureCount = 0; - + private void verifyAllFiles(VxmlQueue.Results results, File vxmlDir) { /* * The same file must not occur in both the common/X and seed/X directories, for any X=main|annotations */ - if (!verifyNoDuplicatesInCommonAndSeed(out, vxmlDir)) { - ++failureCount; - } + verifyNoDuplicatesInCommonAndSeed(results, vxmlDir); + /* * A parent locale (except for root) must occur in the same directory as the child locale */ - if (!verifyParentChildSameDirectory(out, vxmlDir)) { - ++failureCount; - } + verifyParentChildSameDirectory(results, vxmlDir); + /* * Every file in trunk (common|seed/X) must have a corresponding vxml file * Every file in vxml (common|seed/X) must have a corresponding trunk file */ - if (!verifyVxmlAndBaselineFilesCorrespond(out, vxmlDir)) { - ++failureCount; - } + verifyVxmlAndBaselineFilesCorrespond(results, vxmlDir); - if (failureCount == 0) { - out.write("

✅ VXML verification succeeded

\nOK
"); - vxmlGenerator.setVerificationStatus(VxmlGenerator.VerificationStatus.SUCCESSFUL); + if (results.verificationFailures.isEmpty()) { + results.setVerificationStatus(VxmlGenerator.VerificationStatus.SUCCESSFUL); } else { - out.write( - "

❌ VXML verification failed!

\nFailure count = " - + failureCount - + "
"); - vxmlGenerator.setVerificationStatus(VxmlGenerator.VerificationStatus.FAILED); + results.setVerificationStatus(VxmlGenerator.VerificationStatus.FAILED); } } @@ -436,12 +399,9 @@ private void verifyAllFiles(VxmlGenerator vxmlGenerator, Writer out, File vxmlDi * Verify that the same file does not occur in both the common/X and seed/X directories, for any * X=main|annotations * - * @param out the Writer, to receive HTML output - * @return true if verification succeeded, false for failure - * @throws IOException + * @param results the VxmlQueue.Results */ - private boolean verifyNoDuplicatesInCommonAndSeed(Writer out, File vxmlDir) throws IOException { - + private void verifyNoDuplicatesInCommonAndSeed(VxmlQueue.Results results, File vxmlDir) { for (String m : DirNames.mainAndAnnotations) { String commonDirName = vxmlDir + "/" + DirNames.justCommon + "/" + m; String seedDirName = vxmlDir + "/" + DirNames.justSeed + "/" + m; @@ -453,18 +413,13 @@ private boolean verifyNoDuplicatesInCommonAndSeed(Writer out, File vxmlDir) thro String seedPathName = seedDirName + "/" + commonName; File fSeed = new File(seedPathName); if (fSeed.exists()) { - out.write( - "

Verification failure, found duplicates

\n" - + commonPathName - + "
\n" - + seedPathName - + "
\n"); - return false; + results.addVerificationFailure( + "Found duplicates: " + commonPathName + " - " + seedPathName); + return; } } } } - return true; } /** @@ -475,12 +430,9 @@ private boolean verifyNoDuplicatesInCommonAndSeed(Writer out, File vxmlDir) thro * "ff_Adlm_BF.xml" we should have "ff_Adlm.xml" in the same folder Note handling of two * underscores in "ff_Adlm_BF.xml" * - * @param out the Writer, to receive HTML output - * @return true if verification succeeded, false for failure - * @throws IOException + * @param results the VxmlQueue.Results */ - private boolean verifyParentChildSameDirectory(Writer out, File vxmlDir) throws IOException { - + private void verifyParentChildSameDirectory(VxmlQueue.Results results, File vxmlDir) { for (String c : DirNames.commonAndSeed) { for (String m : DirNames.mainAndAnnotations) { String dirName = vxmlDir + "/" + c + "/" + m; @@ -498,11 +450,9 @@ private boolean verifyParentChildSameDirectory(Writer out, File vxmlDir) throws String localeName = childName.replaceFirst("\\.xml$", ""); CLDRLocale childLoc = CLDRLocale.getInstance(localeName); if (childLoc == null) { - out.write( - "

Verification failure, locale not recognized from file name

\n" - + childPathName - + "
\n"); - return false; + results.addVerificationFailure( + "Locale not recognized from file name: " + childPathName); + return; } CLDRLocale parLoc = childLoc.getParent(); if (parLoc != null) { @@ -513,22 +463,20 @@ private boolean verifyParentChildSameDirectory(Writer out, File vxmlDir) throws String parentPathName = dirName + "/" + parentName; File fParent = new File(parentPathName); if (!fParent.exists() && !otherParentExists(parentPathName, c)) { - out.write( - "

Verification failure, child without parent

\n" + results.addVerificationFailure( + "Child without parent. " + "Child, present: " + childPathName - + "
\n" + + " - " + "Parent, absent: " - + parentPathName - + "
\n"); - return false; + + parentPathName); + return; } } } } } } - return true; } /** @@ -566,13 +514,9 @@ private boolean otherParentExists(String parentPathName, String commonOrSeed) { * required, and only results in a notification (new files in vxml are to be expected from time * to time). * - * @param out the Writer, to receive HTML output - * @return true if verification succeeded, false for failure - * @throws IOException + * @param results the VxmlQueue.Results */ - private boolean verifyVxmlAndBaselineFilesCorrespond(Writer out, File vxmlDir) - throws IOException { - + private void verifyVxmlAndBaselineFilesCorrespond(VxmlQueue.Results results, File vxmlDir) { String bxmlDir = CLDRConfig.getInstance().getCldrBaseDirectory().toString(); ArrayList vxmlFiles = new ArrayList<>(); ArrayList bxmlFiles = new ArrayList<>(); /* bxml = baseline cldr xml */ @@ -609,33 +553,33 @@ private boolean verifyVxmlAndBaselineFilesCorrespond(Writer out, File vxmlDir) /* * Notification only, not a failure */ - out.write( - "

Verification notice, file(s) present in vxml but not in baseline

\n"); + StringBuilder message = + new StringBuilder("File(s) present in VXML but not in baseline:"); for (String name : diff) { if (vxmlFiles.contains(name)) { - out.write(name + "
\n"); + message.append(" ").append(name); } } + results.addVerificationWarning(message.toString()); } if (someOnlyInBxml) { - out.write( - "

Verification failure, file(s) present in baseline but not in vxml

\n"); + StringBuilder message = + new StringBuilder("File(s) present in baseline but not in VXML:"); for (String name : diff) { if (bxmlFiles.contains(name)) { - out.write(name + "
\n"); + message.append(" ").append(name); } } - return false; + results.addVerificationFailure(message.toString()); } } - return true; } /** * Return the set of all strings that are in one list but not the other * - * @param list1 - * @param list2 + * @param list1 the first list + * @param list2 the second list * @return the Set */ private static Set symmetricDifference( @@ -660,8 +604,8 @@ private static Set symmetricDifference( * * @param file the CLDRFile for reading * @param outFile the File for "main"; another file will be created in "annotations" - * @throws UnsupportedEncodingException - * @throws FileNotFoundException + * @throws UnsupportedEncodingException for bad encoding, unlikely for UTF-8 + * @throws FileNotFoundException for file error */ private void doWriteFile(CLDRFile file, Kind kind, File outFile) throws UnsupportedEncodingException, FileNotFoundException { @@ -702,10 +646,10 @@ private static File makeAnnotationFile(File outFile) { /** * For a request like ".../cldr-apps/survey/vxml/main/aa.xml", respond with the xml * - * @param request - * @param response + * @param request the HttpServletRequest + * @param response the HttpServletResponse * @return true if request is for a kind of xml we can provide, else false. - * @throws IOException + * @throws IOException for WebContext failure */ public boolean doRawXml(HttpServletRequest request, HttpServletResponse response) throws IOException { diff --git a/tools/cldr-apps/src/main/java/org/unicode/cldr/web/VxmlGenerator.java b/tools/cldr-apps/src/main/java/org/unicode/cldr/web/VxmlGenerator.java index ede57368c03..dd9e72990ba 100644 --- a/tools/cldr-apps/src/main/java/org/unicode/cldr/web/VxmlGenerator.java +++ b/tools/cldr-apps/src/main/java/org/unicode/cldr/web/VxmlGenerator.java @@ -1,24 +1,27 @@ package org.unicode.cldr.web; -import java.io.Writer; import java.util.Set; import java.util.concurrent.ExecutionException; import org.unicode.cldr.util.CLDRLocale; public class VxmlGenerator { - public void generate(Set sortSet, Writer out) throws ExecutionException { - this.sortSet = sortSet; + + private final Set locales; + + public VxmlGenerator() { + this.locales = OutputFileManager.createVxmlLocaleSet(); + } + + public void generate(VxmlQueue.Results results) throws ExecutionException { try { - OutputFileManager.generateVxml(this, out); + OutputFileManager.generateVxml(this, results); } catch (Exception e) { throw new ExecutionException(e); } } - private Set sortSet = null; - - public Set getSortSet() { - return sortSet; + public Set getLocales() { + return locales; } public enum VerificationStatus { @@ -27,16 +30,6 @@ public enum VerificationStatus { INCOMPLETE } - private VerificationStatus verificationStatus = VerificationStatus.INCOMPLETE; - - public VerificationStatus getVerificationStatus() { - return verificationStatus; - } - - public void setVerificationStatus(VerificationStatus status) { - verificationStatus = status; - } - /** * Class that allows the relaying of progress information. Extended by * VxmlQueue.Task.VxmlProgressCallback diff --git a/tools/cldr-apps/src/main/java/org/unicode/cldr/web/VxmlQueue.java b/tools/cldr-apps/src/main/java/org/unicode/cldr/web/VxmlQueue.java index e947da456db..5acb0912518 100644 --- a/tools/cldr-apps/src/main/java/org/unicode/cldr/web/VxmlQueue.java +++ b/tools/cldr-apps/src/main/java/org/unicode/cldr/web/VxmlQueue.java @@ -1,7 +1,6 @@ package org.unicode.cldr.web; -import java.io.IOException; -import java.io.StringWriter; +import java.io.File; import java.time.LocalTime; import java.util.*; import java.util.concurrent.ExecutionException; @@ -13,6 +12,13 @@ public class VxmlQueue { private static final Logger logger = SurveyLog.forClass(VxmlQueue.class); private static final String WAITING_IN_LINE_MESSAGE = "Waiting in line"; + private static final String VXML_MESSAGE_STOPPED_ON_REQUEST = "Stopped on request"; + private static final String VXML_MESSAGE_STARTED = "Started new task"; + private static final String VXML_MESSAGE_PROGRESS = "In Progress"; + private static final String VXML_MESSAGE_STOPPED_STUCK = "Stopped (refresh if stuck)"; + private static final String VXML_MESSAGE_NOT_LOADING = "Not loading"; + private static final String VXML_MESSAGE_SUCCESS = "Successful completion"; + private static final String VXML_MESSAGE_PROBLEM = "Problem(s) occurred"; private static final class VxmlQueueHelper { static VxmlQueue instance = new VxmlQueue(); @@ -30,33 +36,36 @@ public static VxmlQueue getInstance() { /** A unique key for storing QueueEntry objects in QueueMemberId objects */ private static final String KEY = VxmlQueue.class.getName(); - /** Status of a Task */ public enum Status { /** Waiting on other users/tasks */ WAITING, /** Processing in progress */ PROCESSING, - /** Contents are available */ - READY, - /** Stopped, due to error or cancellation (LoadingPolicy.STOP) */ + /** Contents are available and successfully validated */ + SUCCEEDED, + /** Stopped, due to error, validation failure, or cancellation */ STOPPED, } - /** What policy should be used when querying the queue? */ - public enum LoadingPolicy { + public enum RequestType { /** Start a new VXML generation task */ START, /** Continue the task already in progress and get its status */ CONTINUE, - /** Stop (cancel) the task in progress. */ - STOP + /** Cancel (stop) the task */ + CANCEL } private static class QueueEntry { - public VxmlGenerator.VerificationStatus verificationStatus = - VxmlGenerator.VerificationStatus.INCOMPLETE; + public Results results = new Results(); private Task currentTask = null; private Boolean done = false; + + void reset() { + results = new Results(); + currentTask = null; + done = false; + } } /** Semaphore to ensure that only one vetter generates VXML at a time. */ @@ -84,7 +93,8 @@ public void nudge(CLDRLocale loc) { if (!myThread.isAlive()) { throw new RuntimeException("The thread is not running. Stop now."); } - setStatus(loc.getDisplayName()); + setLocale(loc); + setStatusMessage("Writing VXML files"); n++; } @@ -99,107 +109,144 @@ public boolean isStopped() { private final QueueEntry entry; private int maxn; private int n = 0; - private String status = WAITING_IN_LINE_MESSAGE; private Status statusCode = Status.WAITING; + private String statusMessage = WAITING_IN_LINE_MESSAGE; - private void setStatus(String status) { - this.status = status; + private void setStatusMessage(String status) { + this.statusMessage = status; } - private final StringWriter output = new StringWriter(); + private CLDRLocale loc; + + public CLDRLocale getLocale() { + return loc; + } + + private void setLocale(CLDRLocale loc) { + this.loc = loc; + } @Override public void run() { statusCode = Status.WAITING; try { - status = "Waiting..."; + setStatusMessage("Waiting..."); OnlyOneVetter.acquire(); try { - if (stop) { - doStop(); - return; - } - processCriticalWork(); - if (stop) { - doStop(); - return; - } + makeVxml(); } finally { OnlyOneVetter.release(); } - status = "Finished."; - statusCode = Status.READY; + if (stop) { + setStatusMessage("Stopped on request."); + statusCode = Status.STOPPED; + } else { + setStatusMessage("Finished."); + statusCode = Status.SUCCEEDED; + } } catch (RuntimeException | InterruptedException | ExecutionException re) { SurveyLog.logException(logger, re, "While generating VXML, " + taskDescription()); - status = "Exception! " + re + ", " + taskDescription(); + setStatusMessage("Exception! " + re + ", " + taskDescription()); statusCode = Status.STOPPED; } } - private void doStop() { - status = "Stopped on request."; - statusCode = Status.STOPPED; - } - - private String taskDescription() { - return "thread " + myThread.getId() + ", " + LocalTime.now(); - } - - private void processCriticalWork() throws ExecutionException { - status = "Beginning"; - Set sortSet = OutputFileManager.createVxmlLocaleSet(); - maxn = sortSet.size(); + private void makeVxml() throws ExecutionException { + setStatusMessage("Beginning"); statusCode = Status.PROCESSING; - n = 0; VxmlGenerator vg = new VxmlGenerator(); + n = 0; + maxn = vg.getLocales().size(); vg.setProgressCallback(new VxmlProgressCallback(Thread.currentThread())); - vg.generate(sortSet, output); - entry.verificationStatus = vg.getVerificationStatus(); + vg.generate(entry.results); entry.done = true; } + private String taskDescription() { + return "thread " + myThread.getId() + ", " + LocalTime.now(); + } + private int getPercent() { - if (n <= 0 || maxn <= 0) { - return 0; - } else if (n >= maxn) { - return 100; - } else { - int p = (n * 100) / maxn; - return (p > 0) ? p : 1; - } + return CompletionPercent.calculate(n, maxn); } } - /** Arguments for getOutput */ public static class Args { private final QueueMemberId qmi; - private final LoadingPolicy loadingPolicy; + private final RequestType requestType; - public Args(QueueMemberId qmi, LoadingPolicy loadingPolicy) { + public Args(QueueMemberId qmi, RequestType requestType) { this.qmi = qmi; - this.loadingPolicy = loadingPolicy; + this.requestType = requestType; } } - /** - * Results for getOutput - * - *

These fields get filled in by getOutput, and referenced by the caller after getOutput - * returns - */ public static class Results { public Status status = Status.WAITING; - public Appendable output = new StringBuilder(); - } - /* - * Messages returned by getOutput - */ - private static final String VXML_MESSAGE_STOPPED_ON_REQUEST = "Stopped on request"; - private static final String VXML_MESSAGE_PROGRESS = "In Progress"; - private static final String VXML_MESSAGE_STOPPED_STUCK = "Stopped (refresh if stuck)"; - private static final String VXML_MESSAGE_NOT_LOADING = "Not loading. Click the button to load."; - private static final String VXML_MESSAGE_STARTED = "Started new task"; + public String generationMessage; + + public File directory; + + private int percent = 0; + + public Number getPercent() { + return this.percent; + } + + public void setPercent(int i) { + this.percent = i; + } + + private CLDRLocale locale; + + public CLDRLocale getLocale() { + return locale; + } + + public void setLocale(CLDRLocale locale) { + this.locale = locale; + } + + private int localesDone = 0; + + public int getLocalesDone() { + return localesDone; + } + + public void setLocalesDone(int n) { + localesDone = n; + } + + private int localesTotal = 0; + + public int getLocalesTotal() { + return localesTotal; + } + + public void setLocalesTotal(int n) { + localesTotal = n; + } + + public VxmlGenerator.VerificationStatus verificationStatus = + VxmlGenerator.VerificationStatus.INCOMPLETE; + + public void setVerificationStatus(VxmlGenerator.VerificationStatus vStatus) { + this.verificationStatus = vStatus; + } + + public ArrayList verificationFailures = new ArrayList<>(); + + public ArrayList verificationWarnings = new ArrayList<>(); + + public void addVerificationFailure(String s) { + verificationFailures.add(s); + } + + public void addVerificationWarning(String s) { + verificationWarnings.add(s); + } + } /** * Start running, or continue running, the long-running task that generates VXML. This is called @@ -207,70 +254,82 @@ public static class Results { * subsequent requests that query the status or trigger early termination of the task. * * @param args the VxmlQueue.Args - * @param results the VxmlQueue.Results - * @return the status message - * @throws IOException if thrown by results.output.append + * @return the Results */ - public synchronized String getOutput(Args args, Results results) throws IOException { + public synchronized Results getResults(Args args) { QueueEntry entry = getEntry(args.qmi); - Task t = entry.currentTask; - if (t == null) { - logger.info("Got null Task in getOutput"); + if (args.requestType == RequestType.START) { + getResultsStart(entry); + } else if (args.requestType == RequestType.CONTINUE) { + getResultsContinue(entry); + } else if (args.requestType == RequestType.CANCEL) { + getResultsStop(entry); } else { - results.output.append(t.output.toString()); + logger.severe("Invalid request type for VXML, treating as STOP: " + args.requestType); + getResultsStop(entry); } - if (args.loadingPolicy == LoadingPolicy.STOP) { - stop(entry); - results.status = Status.STOPPED; - return VXML_MESSAGE_STOPPED_ON_REQUEST; - } else if (entry.done) { - if (entry.verificationStatus == VxmlGenerator.VerificationStatus.SUCCESSFUL) { - results.status = Status.READY; - setPercent(100); + return entry.results; + } + + private void getResultsStart(QueueEntry entry) { + entry.reset(); + // Note: similar code in VettingViewerQueue.getPriorityItemsSummaryOutput includes + // a comment suggesting an alternative: SurveyThreadManager.getExecutorService().invoke() + Task t = entry.currentTask = new Task(entry); + t.myThread = SurveyThreadManager.getThreadFactory().newThread(t); + t.myThread.start(); + entry.results.status = Status.PROCESSING; + final String waitStr = waitingString(); + if (WAITING_IN_LINE_MESSAGE.equals(t.statusMessage) && waitStr.isEmpty()) { + // Simplify “Started new task: Waiting in line” to "Waiting in line" + entry.results.generationMessage = WAITING_IN_LINE_MESSAGE; + } else { + entry.results.generationMessage = + VXML_MESSAGE_STARTED + ": " + waitStr + t.statusMessage; + } + } + + private void getResultsContinue(QueueEntry entry) { + Task t = entry.currentTask; + if (t != null) { + entry.results.setLocale(t.getLocale()); + entry.results.setLocalesDone(t.n); + entry.results.setLocalesTotal(t.maxn); + entry.results.setPercent(t.getPercent()); + } + if (entry.done) { + if (entry.results.verificationStatus == VxmlGenerator.VerificationStatus.SUCCESSFUL) { + entry.results.status = Status.SUCCEEDED; + entry.results.generationMessage = VXML_MESSAGE_SUCCESS; } else { - results.status = Status.STOPPED; - if (getPercent() > 99) { - setPercent(99); - } + entry.results.status = Status.STOPPED; + entry.results.generationMessage = VXML_MESSAGE_PROBLEM; } stop(entry); - return entry.verificationStatus.toString(); - } - if (t != null) { + } else if (t == null) { + entry.results.status = Status.STOPPED; + entry.results.generationMessage = VXML_MESSAGE_NOT_LOADING; + } else { String waiting = waitingString(); - results.status = Status.PROCESSING; + entry.results.status = Status.PROCESSING; if (t.myThread.isAlive()) { - results.status = t.statusCode; - if (results.status != Status.WAITING) { + entry.results.status = t.statusCode; + if (entry.results.status != Status.WAITING) { waiting = ""; } - setPercent(t.getPercent()); - return VXML_MESSAGE_PROGRESS + ": " + waiting + t.status; + entry.results.generationMessage = + VXML_MESSAGE_PROGRESS + ": " + waiting + t.statusMessage; } else { - setPercent(0); - return VXML_MESSAGE_STOPPED_STUCK + " " + t.status; + entry.results.generationMessage = + VXML_MESSAGE_STOPPED_STUCK + " " + t.statusMessage; } } - if (args.loadingPolicy == LoadingPolicy.CONTINUE) { - results.status = Status.STOPPED; - setPercent(0); - return VXML_MESSAGE_NOT_LOADING; - } - - // Note: similar code in VettingViewerQueue.getPriorityItemsSummaryOutput includes - // a comment suggesting an alternative: SurveyThreadManager.getExecutorService().invoke() - t = entry.currentTask = new Task(entry); - t.myThread = SurveyThreadManager.getThreadFactory().newThread(t); - t.myThread.start(); + } - results.status = Status.PROCESSING; - setPercent(0); - final String waitStr = waitingString(); - if (WAITING_IN_LINE_MESSAGE.equals(t.status) && waitStr.isEmpty()) { - // Simplify “Started new task: Waiting in line” to "Waiting in line" - return WAITING_IN_LINE_MESSAGE; - } - return VXML_MESSAGE_STARTED + ": " + waitStr + t.status; + private void getResultsStop(QueueEntry entry) { + stop(entry); + entry.results.status = Status.STOPPED; + entry.results.generationMessage = VXML_MESSAGE_STOPPED_ON_REQUEST; } private String waitingString() { @@ -286,7 +345,6 @@ private void stop(QueueEntry entry) { t.myThread.interrupt(); } entry.currentTask = null; - entry.done = true; } } @@ -298,15 +356,4 @@ private QueueEntry getEntry(QueueMemberId qmi) { } return entry; } - - /** Estimated percentage complete for VXML generation */ - private int percent = 0; - - private void setPercent(int p) { - percent = p; - } - - public int getPercent() { - return percent; - } } diff --git a/tools/cldr-apps/src/main/java/org/unicode/cldr/web/api/GenerateVxml.java b/tools/cldr-apps/src/main/java/org/unicode/cldr/web/api/GenerateVxml.java index 72a48ce6c29..7afa99a038d 100644 --- a/tools/cldr-apps/src/main/java/org/unicode/cldr/web/api/GenerateVxml.java +++ b/tools/cldr-apps/src/main/java/org/unicode/cldr/web/api/GenerateVxml.java @@ -11,6 +11,7 @@ import org.eclipse.microprofile.openapi.annotations.responses.APIResponse; import org.eclipse.microprofile.openapi.annotations.responses.APIResponses; import org.eclipse.microprofile.openapi.annotations.tags.Tag; +import org.unicode.cldr.util.CLDRLocale; import org.unicode.cldr.web.*; @ApplicationScoped @@ -59,7 +60,7 @@ public Response generateVxml( // concurrently with the vxml worker thread. CookieSession.sm.getSTFactory().setupDB(); cs.userDidAction(); - VxmlResponse vr = getVxmlResponse(request.loadingPolicy, cs); + VxmlResponse vr = getVxmlResponse(request.requestType, cs); return Response.ok(vr).build(); } catch (Exception e) { return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build(); @@ -69,29 +70,36 @@ public Response generateVxml( /** * Get the response for VXML * - * @param loadingPolicy the LoadingPolicy + * @param requestType the RequestType * @param cs the CookieSession * @return the VxmlResponse - * @throws IOException if thrown by VxmlQueue.getOutput + * @throws IOException for getCanonicalPath failure */ - private VxmlResponse getVxmlResponse(VxmlQueue.LoadingPolicy loadingPolicy, CookieSession cs) + private VxmlResponse getVxmlResponse(VxmlQueue.RequestType requestType, CookieSession cs) throws IOException { VxmlQueue queue = VxmlQueue.getInstance(); QueueMemberId qmi = new QueueMemberId(cs); VxmlResponse response = new VxmlResponse(); - VxmlQueue.Args args = new VxmlQueue.Args(qmi, loadingPolicy); - VxmlQueue.Results results = new VxmlQueue.Results(); - response.message = queue.getOutput(args, results); - response.percent = queue.getPercent(); + VxmlQueue.Args args = new VxmlQueue.Args(qmi, requestType); + VxmlQueue.Results results = queue.getResults(args); + response.message = results.generationMessage; response.status = results.status; - response.output = results.output.toString(); + response.directory = results.directory == null ? "" : results.directory.getCanonicalPath(); + CLDRLocale loc = results.getLocale(); + response.localeId = loc == null ? "" : loc.getBaseName(); + response.localesDone = results.getLocalesDone(); + response.localesTotal = results.getLocalesTotal(); + response.percent = results.getPercent(); + response.verificationStatus = results.verificationStatus; + response.verificationFailures = results.verificationFailures.toArray(new String[0]); + response.verificationWarnings = results.verificationWarnings.toArray(new String[0]); return response; } @Schema(description = "VXML Request") public static final class VxmlRequest { - @Schema(implementation = VxmlQueue.LoadingPolicy.class) - public VxmlQueue.LoadingPolicy loadingPolicy; + @Schema(implementation = VxmlQueue.RequestType.class) + public VxmlQueue.RequestType requestType; } @Schema(description = "VXML Response") @@ -102,10 +110,28 @@ public static final class VxmlResponse { @Schema(description = "Current status message") public String message = ""; + @Schema(description = "Directory newly created to contain generated files") + public String directory; + + @Schema(description = "Latest locale written") + public String localeId; + + @Schema(description = "Locales written") + public int localesDone; + + @Schema(description = "Total number of locales") + public int localesTotal; + @Schema(description = "Estimated percentage complete") public Number percent; - @Schema(description = "Output on success") - public String output; + @Schema(description = "Verification status enum") + public VxmlGenerator.VerificationStatus verificationStatus; + + @Schema(description = "Verification failure messages") + public String[] verificationFailures; + + @Schema(description = "Verification warning messages") + public String[] verificationWarnings; } } diff --git a/tools/cldr-apps/src/main/webapp/surveytool.css b/tools/cldr-apps/src/main/webapp/surveytool.css index c6e1f08ee28..a182524f8ab 100644 --- a/tools/cldr-apps/src/main/webapp/surveytool.css +++ b/tools/cldr-apps/src/main/webapp/surveytool.css @@ -2237,12 +2237,13 @@ tr.tr_err { } /* - ready to submit - TODO: when/where/why is this tr_submit used? Or is it unused? - */ - + * tr_submit highlights a row when a dialog is open for submitting a new value. + * Usually the position of the dialog is a good indicator of the row to which it corresponds. However, + * if the row is near the top or bottom of the window, the dialog may be positioned higher or lower in + * order to be completely visible. The distinctive style of the row may then help to avoid confusion. + */ tr.tr_submit { - background-color: #dfd; + background-color: #dfd; /* pale green */ } div.v-oldVotes-subDiv { diff --git a/tools/cldr-code/src/main/java/org/unicode/cldr/test/ConsoleCheckCLDR.java b/tools/cldr-code/src/main/java/org/unicode/cldr/test/ConsoleCheckCLDR.java index a6a8f8b449a..86ac980006d 100644 --- a/tools/cldr-code/src/main/java/org/unicode/cldr/test/ConsoleCheckCLDR.java +++ b/tools/cldr-code/src/main/java/org/unicode/cldr/test/ConsoleCheckCLDR.java @@ -43,6 +43,7 @@ import org.unicode.cldr.util.CLDRConfig.Environment; import org.unicode.cldr.util.CLDRFile; import org.unicode.cldr.util.CLDRFile.Status; +import org.unicode.cldr.util.CLDRLocale; import org.unicode.cldr.util.CLDRPaths; import org.unicode.cldr.util.CLDRTool; import org.unicode.cldr.util.CldrUtility; @@ -51,7 +52,6 @@ import org.unicode.cldr.util.Factory; import org.unicode.cldr.util.LanguageTagParser; import org.unicode.cldr.util.Level; -import org.unicode.cldr.util.LocaleIDParser; import org.unicode.cldr.util.LogicalGrouping; import org.unicode.cldr.util.Organization; import org.unicode.cldr.util.Pair; @@ -270,15 +270,12 @@ private static Set parse(String[] args, boolean showArguments) { UOption.create("singleThread", '1', UOption.NO_ARG) }; - private static final Comparator baseFirstCollator = + private static final Comparator baseFirstCollator = new Comparator<>() { - LanguageTagParser languageTagParser1 = new LanguageTagParser(); - LanguageTagParser languageTagParser2 = new LanguageTagParser(); - @Override - public int compare(String o1, String o2) { - String ls1 = languageTagParser1.set(o1).getLanguageScript(); - String ls2 = languageTagParser2.set(o2).getLanguageScript(); + public int compare(CLDRLocale o1, CLDRLocale o2) { + String ls1 = o1.getLanguageScript(); + String ls2 = o2.getLanguageScript(); int result = ls1.compareTo(ls2); if (result != 0) return result; return o1.compareTo(o2); @@ -501,16 +498,15 @@ public static void main(String[] args) throws Throwable { PathShower pathShower = new PathShower(); // call on the files - Set locales = new TreeSet<>(baseFirstCollator); - locales.addAll(cldrFactory.getAvailable()); + Set locales = new TreeSet<>(baseFirstCollator); + locales.addAll(cldrFactory.getAvailableCLDRLocales()); - Set fatalErrors = new TreeSet<>(); + Set fatalErrors = new TreeSet<>(baseFirstCollator); showHeaderLine(); supplementalDataInfo = SupplementalDataInfo.getInstance(CLDRPaths.SUPPLEMENTAL_DIRECTORY); - LocaleIDParser localeIDParser = new LocaleIDParser(); PathHeader.Factory pathHeaderFactory = PathHeader.getFactory(english); final Map locale_status = @@ -534,7 +530,7 @@ public static void main(String[] args) throws Throwable { // final Set englishPaths = Collections.unmodifiableSet(ep); // for robustness // Set up our stream to use. It will be parallel usually, or sequential for HTML. - Stream stream; + Stream stream; if (sequential) { System.err.println("# Note: running in sequential mode."); @@ -545,10 +541,11 @@ public static void main(String[] args) throws Throwable { // now, run it stream.forEach( - localeID -> { + locale -> { if (ErrorFile.writeError != null) { return; // get out, it's an error. } + final String localeID = locale.toString(); Set paths = new TreeSet<>(); // CLDRFile.ldmlComparator); Map m = new TreeMap<>(); @@ -567,9 +564,7 @@ public static void main(String[] args) throws Throwable { System.out.println("# Skipping special purpose locale: " + localeID); return; } - - boolean isLanguageLocale = - localeID.equals(localeIDParser.set(localeID).getLanguageScript()); + final boolean isLanguageLocale = locale.isLanguageLocale(); options.clear(); if (MyOptions.exemplarError.option.doesOccur()) { @@ -612,12 +607,12 @@ public static void main(String[] args) throws Throwable { if (ErrorFile.voteFactory != null) { ErrorFile.voteFile = ErrorFile.voteFactory.make(localeID, true); } - final String parentID = LocaleIDParser.getParent(localeID); + final CLDRLocale parentID = locale.getParent(); if (parentID != null) { - parent = cldrFactory.make(parentID, true); + parent = cldrFactory.make(parentID.toString(), true); } } catch (RuntimeException e) { - fatalErrors.add(localeID); + fatalErrors.add(locale); System.out.println("FATAL ERROR: " + localeID); e.printStackTrace(System.out); return; @@ -627,7 +622,7 @@ public static void main(String[] args) throws Throwable { // generate HTML if asked for if (ErrorFile.generated_html_directory != null) { - String baseLanguage = localeIDParser.set(localeID).getLanguageScript(); + String baseLanguage = locale.getLanguageScript(); if (!baseLanguage.equals(ErrorFile.lastBaseLanguage)) { ErrorFile.lastBaseLanguage = baseLanguage; @@ -1958,8 +1953,8 @@ public static class PathShower { public void set(String localeID) { this.localeID = localeID; newLocale = true; - LocaleIDParser localeIDParser = new LocaleIDParser(); - showEnglish = !localeIDParser.set(localeID).getLanguageScript().equals("en"); + CLDRLocale locale = CLDRLocale.getInstance(localeID); + showEnglish = !locale.getLanguage().equals("en"); lastPath = null; lastSplitPath = null; } diff --git a/tools/cldr-code/src/main/java/org/unicode/cldr/test/ExampleGenerator.java b/tools/cldr-code/src/main/java/org/unicode/cldr/test/ExampleGenerator.java index 3cdc88c387c..9d3a458ba7c 100644 --- a/tools/cldr-code/src/main/java/org/unicode/cldr/test/ExampleGenerator.java +++ b/tools/cldr-code/src/main/java/org/unicode/cldr/test/ExampleGenerator.java @@ -76,6 +76,7 @@ import org.unicode.cldr.util.ScriptToExemplars; import org.unicode.cldr.util.SimpleUnicodeSetFormatter; import org.unicode.cldr.util.SupplementalDataInfo; +import org.unicode.cldr.util.SupplementalDataInfo.CurrencyNumberInfo; import org.unicode.cldr.util.SupplementalDataInfo.PluralInfo; import org.unicode.cldr.util.SupplementalDataInfo.PluralInfo.Count; import org.unicode.cldr.util.SupplementalDataInfo.PluralType; @@ -326,6 +327,19 @@ public void setCachingEnabled(boolean enabled) { } }; + // map relativeTimePattern counts to numeric examples + public static final Map COUNTS = + new HashMap() { + { + put("zero", "0"); + put("one", "1"); + put("two", "2"); + put("few", "3"); + put("many", "5"); + put("other", "10"); + } + }; + public CLDRFile getCldrFile() { return cldrFile; } @@ -540,6 +554,10 @@ private void constructExampleHtmlExtended(String xpath, String value, List examples) { examples.add(sdf.format(sample)); } + /* Add relative date/time examples, choosing appropriate + * patterns as needed for relative dates vs relative times. + * Additionally, for relativeTimePattern items, ensure that + * numeric example corresponds to the count represented by the item. + */ + private void handleRelative( + String xpath, XPathParts parts, String value, List examples) { + String skeleton; + String type = parts.findAttributeValue("field", "type"); + if (type.startsWith("hour")) { + skeleton = "Hm"; + } else if (type.startsWith("minute") || type.startsWith("second")) { + skeleton = "ms"; + } else if (type.startsWith("year") + || type.startsWith("month") + || type.startsWith("quarter")) { + skeleton = "yMMMM"; + } else { + skeleton = "MMMMd"; + } + String checkPath = + "//ldml/dates/calendars/calendar[@type=\"gregorian\"]/dateTimeFormats/availableFormats/dateFormatItem[@id=\"" + + skeleton + + "\"]"; + String dateFormat = cldrFile.getWinningValue(checkPath); + SimpleDateFormat sdf = icuServiceBuilder.getDateFormat("gregorian", dateFormat); + String sampleDate = sdf.format(DATE_SAMPLE); + String example1 = + value.substring(0, 1).toUpperCase() + value.substring(1) + " (" + sampleDate + ")"; + String example2 = sampleDate + " (" + value + ")"; + if (parts.contains("relativeTimePattern")) { // has placeholder + String count = parts.getAttributeValue(-1, "count"); + String exampleCount = COUNTS.get(count); + examples.add(invertBackground(format(setBackground(example1), exampleCount))); + examples.add(invertBackground(format(setBackground(example2), exampleCount))); + } else { + examples.add(format(example1)); + examples.add(format(example2)); + } + } + /** * @param elementToOverride the element that is to be overridden * @param element the overriding element diff --git a/tools/cldr-code/src/main/java/org/unicode/cldr/util/CLDRLocale.java b/tools/cldr-code/src/main/java/org/unicode/cldr/util/CLDRLocale.java index 5bfdf3d0472..1090d6178ed 100644 --- a/tools/cldr-code/src/main/java/org/unicode/cldr/util/CLDRLocale.java +++ b/tools/cldr-code/src/main/java/org/unicode/cldr/util/CLDRLocale.java @@ -310,6 +310,13 @@ public String getBaseName() { return basename; } + /** + * @return the language-script (or language) part of a tag. + */ + public String getLanguageScript() { + return parts == null ? fullname : parts.getLanguageScript(); + } + /** * internal: process a string from ICU to CLDR form. For now, just collapse double underscores. * diff --git a/tools/cldr-code/src/main/java/org/unicode/cldr/util/Organization.java b/tools/cldr-code/src/main/java/org/unicode/cldr/util/Organization.java index 2c42b213c71..2d8475fe683 100644 --- a/tools/cldr-code/src/main/java/org/unicode/cldr/util/Organization.java +++ b/tools/cldr-code/src/main/java/org/unicode/cldr/util/Organization.java @@ -59,6 +59,7 @@ public enum Organization { rumantscha("Lia Rumantscha"), sardware("Sardware", "Sardware"), sil("SIL", "SIL International"), + silicon("Stanford SILICON"), special("High Coverage and Generated"), srilanka("Sri Lanka ICTA", "Sri Lanka"), surveytool("Survey Tool"), diff --git a/tools/cldr-code/src/main/resources/org/unicode/cldr/util/data/Locales.txt b/tools/cldr-code/src/main/resources/org/unicode/cldr/util/data/Locales.txt index 13932d881cb..7ecb3399c43 100644 --- a/tools/cldr-code/src/main/resources/org/unicode/cldr/util/data/Locales.txt +++ b/tools/cldr-code/src/main/resources/org/unicode/cldr/util/data/Locales.txt @@ -801,6 +801,8 @@ SIL ; nnh ; modern ; SIL ; tpi ; basic ; SIL ; * ; moderate ; +silicon ; * ; basic ; + Srilanka ; si ; modern ; All others Surveytool ; * ; modern ; (Administrative) diff --git a/tools/cldr-code/src/test/java/org/unicode/cldr/unittest/TestExampleGenerator.java b/tools/cldr-code/src/test/java/org/unicode/cldr/unittest/TestExampleGenerator.java index 121390a1be1..c85d1eb4a03 100644 --- a/tools/cldr-code/src/test/java/org/unicode/cldr/unittest/TestExampleGenerator.java +++ b/tools/cldr-code/src/test/java/org/unicode/cldr/unittest/TestExampleGenerator.java @@ -1800,6 +1800,36 @@ public void TestQuarterFormats() { "//ldml/dates/calendars/calendar[@type=\"gregorian\"]/quarters/quarterContext[@type=\"stand-alone\"]/quarterWidth[@type=\"abbreviated\"]/quarter[@type=\"4\"]"); } + public void TestRelative() { + ExampleGenerator exampleGeneratorIt = getExampleGenerator("it"); + ExampleGenerator exampleGeneratorAm = getExampleGenerator("am"); + checkValue( + "it relative day type 2", + "〖Dopodomani (5 settembre)〗〖5 settembre (dopodomani)〗", + exampleGeneratorIt, + "//ldml/dates/fields/field[@type=\"day\"]/relative[@type=\"2\"]"); + checkValue( + "it relative hour future-other", + "〖Tra ❬10❭ ore (18:25)〗〖18:25 (tra ❬10❭ ore)〗", + exampleGeneratorIt, + "//ldml/dates/fields/field[@type=\"hour\"]/relativeTime[@type=\"future\"]/relativeTimePattern[@count=\"other\"]"); + checkValue( + "it relative year past-one", + "〖❬1❭ anno fa (settembre 1999)〗〖settembre 1999 (❬1❭ anno fa)〗", + exampleGeneratorIt, + "//ldml/dates/fields/field[@type=\"year\"]/relativeTime[@type=\"past\"]/relativeTimePattern[@count=\"one\"]"); + checkValue( + "am relative month future-one", + "〖በ❬1❭ ወር ውስጥ (ሴፕቴምበር 1999)〗〖ሴፕቴምበር 1999 (በ❬1❭ ወር ውስጥ)〗", + exampleGeneratorAm, + "//ldml/dates/fields/field[@type=\"month\"]/relativeTime[@type=\"future\"]/relativeTimePattern[@count=\"one\"]"); + checkValue( + "am relative month future-other", + "〖በ❬10❭ ወራት ውስጥ (ሴፕቴምበር 1999)〗〖ሴፕቴምበር 1999 (በ❬10❭ ወራት ውስጥ)〗", + exampleGeneratorAm, + "//ldml/dates/fields/field[@type=\"month\"]/relativeTime[@type=\"future\"]/relativeTimePattern[@count=\"other\"]"); + } + static final class MissingKey implements Comparable { final SectionId sectionId; final PageId pageId; diff --git a/tools/cldr-code/src/test/java/org/unicode/cldr/unittest/TestURLs.java b/tools/cldr-code/src/test/java/org/unicode/cldr/unittest/TestURLs.java new file mode 100644 index 00000000000..d878a4af97b --- /dev/null +++ b/tools/cldr-code/src/test/java/org/unicode/cldr/unittest/TestURLs.java @@ -0,0 +1,419 @@ +package org.unicode.cldr.unittest; + +import com.google.common.base.Joiner; +import com.google.common.collect.ImmutableSet; +import com.google.common.collect.Multimap; +import com.google.common.collect.Sets; +import com.google.common.collect.TreeMultimap; +import com.ibm.icu.dev.test.TestFmwk; +import com.ibm.icu.util.ICUUncheckedIOException; +import java.io.IOException; +import java.net.HttpURLConnection; +import java.net.MalformedURLException; +import java.net.URL; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.ArrayList; +import java.util.Collection; +import java.util.LinkedHashSet; +import java.util.List; +import java.util.Set; +import java.util.TreeSet; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import java.util.stream.Stream; +import org.unicode.cldr.util.CLDRPaths; + +public class TestURLs extends TestFmwk { + + private static final boolean DISABLE_BROKEN = true; // test for broken URL not working yet + + private static final Joiner JOIN_TAB = Joiner.on('\t'); + private static final Joiner JOIN_SP = Joiner.on(' '); + private static final Joiner JOIN_LF = Joiner.on('\n'); + + enum SiteType { + SITE, + SPEC, + CHART, + GITHUB + } + + public static void main(String[] args) { + new TestURLs().run(args); + } + + public void testDetection() { + String[][] tests = { + {"## Parts", "#Parts"}, + {"## Parts", "#Parts"}, + { + "* Part 1: [Core](tr35.md#Contents) (languages, locales, basic structure)", + "tr35.md#Contents" + }, + }; + int lineCount = 0; + for (String[] test : tests) { + String line = test[0]; + String expected = test[1]; + Multimap lineToUrls = TreeMultimap.create(); + getUrls(lineCount++ + line, 0, lineToUrls); + Collection result = lineToUrls.asMap().get(0); + assertEquals(line, expected, result == null ? null : Joiner.on('◎').join(result)); + } + } + + static final Path BASE = Path.of(CLDRPaths.BASE_DIRECTORY); + + public void testSiteFiles() { + checkSiteFiles(SiteType.SITE, Path.of(CLDRPaths.BASE_DIRECTORY, "docs/site")); + } + + public void testSpecFiles() { + checkSiteFiles(SiteType.SPEC, Path.of(CLDRPaths.BASE_DIRECTORY, "docs/ldml")); + } + + private void checkSiteFiles(SiteType siteType, Path directoryToScan) { + Path directoryPath = directoryToScan; + Set results = new LinkedHashSet<>(); + try (Stream filepath = Files.walk(directoryPath)) { + filepath.filter(Files::isRegularFile) + .filter(p -> p.getFileName().toString().endsWith(".md")) + .forEach(x -> checkFile(siteType, x, results)); + } catch (IOException e) { + throw new ICUUncheckedIOException(e); + } + System.out.println(); + assertResults(results); + System.out.println("\nDomains\n" + JOIN_LF.join(domains)); + } + + public void testFile() { + Path p = Path.of(CLDRPaths.BASE_DIRECTORY, "docs/site/development/adding-locales.md"); + Set results = new LinkedHashSet<>(); + checkFile(SiteType.SITE, p, results); + assertResults(results); + } + + public void assertResults(Set results) { + results.stream() + .forEach( + x -> { + for (Issue issue : Issue.values()) { + Collection errorLines = x.getProblems(issue); + if (errorLines.isEmpty()) { + continue; + } + if (Issue.ERRORS.contains(issue)) { + if (!assertEquals("File errors", 0, errorLines.size())) { + errorLines.stream().forEach(System.out::println); + } + } else { + errorLines.stream().forEach(System.out::println); + } + } + }); + } + + public void checkFile(SiteType siteType, Path p, Set results) { + // logln(p.toString()); + LineChecker lineChecker = new LineChecker(siteType, p); + results.add(lineChecker); + try { + Files.lines(p) + .forEach( + line -> { + lineChecker.checkLine(line); + }); + } catch (IOException e) { + throw new ICUUncheckedIOException(e); + } + } + + public void testLineChecker() { + String[][] tests = { + {"SITE", "../index/downloads.md#cldr-releasesdownloads", "BAD_LOCAL HAS_MD"}, + {"SITE", "../index/downloads#cldr-releasesdownloads", "BAD_LOCAL"}, + }; + for (String[] test : tests) { + SiteType siteType = SiteType.valueOf(test[0]); + String line = test[1]; + String expected = test[2]; + LineChecker lineChecker = new LineChecker(siteType, Path.of("../foo")); + Set actual = lineChecker.getURLIssues(0, line); + assertEquals(JOIN_TAB.join(siteType, line), expected, JOIN_SP.join(actual)); + } + } + + public void testIssueExamples() { + for (Issue issue : Issue.values()) { + if (DISABLE_BROKEN & issue == Issue.BROKEN) { + continue; + } + final SiteType siteType = SiteType.SITE; // expand later for other types + LineChecker lineChecker = new LineChecker(siteType, Path.of("../foo")); + Set actual = lineChecker.getURLIssues(0, issue.example); + assertEquals( + JOIN_TAB.join(siteType, issue.example), + issue.toString(), + JOIN_SP.join(Sets.intersection(Set.of(issue), actual)).toString()); + } + } + + enum Issue { + ΩK("", "https://unicode-org.atlassian.net/browse/CLDR-14927"), + OLD_ANCHOR("Old anchor, needs replacement", "downloads/cldr-44#h.nvqx283jwsx"), + BAD_LOCAL("Local can't refer outside of docs/site", "../ldml/tr35.md"), + MD_FORBID( + "Links within Site must not end with .md; but those within Spec must", + "../index/downloads.md#cldr-releasesdownloads"), + MD_REQUIRE( + "Links within Site must not end with .md; but those within Spec must", + "../index/downloads.md#cldr-releasesdownloads"), + BAD_GITHUB( + "Don't link to github for site or spec", + "https://unicode-org.github.io/cldr-staging/charts/42/delta/bcp47.html"), + BAD_GITHUB_DOCS( + "Don't link into github for docs", + "https://github.com/unicode-org/cldr/blob/main/docs/requesting_changes.md"), + MAKE_RELATIVE("Change to relative", "https://cldr.unicode.org/index/cldr-spec"), + OLD_SITE( + "Don't link to old site", + "https://sites.google.com/unicode.org/cldr/index/downloads/cldr-42#h.xtb1v8tpviuc"), + OLDER_SITE( + "Don't link to ancient site", + "http://www.unicode.org/repos/cldr/trunk/common/bcp47/number.xml"), + SEARCH( + "Don't vector through google search", + "http://www.google.com/search?q=Congo+site%3Alemonde.fr"), + SMOKE( + "Don't link to smoketest", + "https://cldr-smoke.unicode.org/smoketest/v#/fr/Symbols2/47925556fd2904b5"), + MALFORMED_URL("MalformedURLException", "http://example.com:-80/"), + BROKEN("Can't access URL", "https://qreioqhfiorufpehbquhe.com"); + + static final Set ERRORS = + Sets.difference( + ImmutableSet.copyOf(Issue.values()), Set.of(Issue.ΩK, Issue.OLD_ANCHOR)); + final String message; + final String example; + + // private Issue(String message) { + // this(message, "…"); + // } + private Issue(String message, String example) { + this.message = message; + this.example = example; + } + } + + static final Set domains = new TreeSet<>(); + + static final class LineChecker { + int count = 0; + private final Multimap lineToUrls = TreeMultimap.create(); + private final SiteType siteType; + private final String disallowedLocal; + private final Path path; + + public LineChecker(SiteType siteType, Path path) { + this.siteType = siteType; + disallowedLocal = siteType == SiteType.SPEC ? "/cldr/docs/ldml/" : "/cldr/docs/site/"; + this.path = path; + } + + private void checkLine(String line) { + getUrls(line, ++count, lineToUrls); + } + + public List getProblems(Issue issue) { + List errorLines = new ArrayList<>(); + lineToUrls.forEach( + (x, y) -> { + Set issues = getURLIssues(x, y); + issues.stream() + .filter(q -> q == issue) + .forEach( + r -> { + Path pathRelative = BASE.relativize(path); + errorLines.add( + JOIN_TAB.join(issue, pathRelative, x, y)); + }); + }); + return errorLines; + } + + public Set getURLIssues(Integer line, String urlString) { + Set issues = new LinkedHashSet<>(); + try { + URL url; + boolean isLocal; + if (PROTOCOL_PAT.matcher(urlString).lookingAt()) { + url = new URL(urlString); + isLocal = false; + } else { + url = new URL("file:" + Path.of(path.toString(), urlString).normalize()); + isLocal = true; + } + String file = url.getFile(); + String domain = url.getAuthority(); + if (domain != null) { + domains.add(domain); + } + + checkSite(urlString, url, file, domain, isLocal, issues); + + if (issues.isEmpty() && !isLocal & !doesURLExist(url)) { // not working yet + issues.add(Issue.BROKEN); + } + } catch (MalformedURLException e) { + issues.add(Issue.MALFORMED_URL); + } + if (issues.isEmpty()) { + issues.add(Issue.ΩK); + } + return issues; + } + + public void checkSite( + String urlString, + URL url, + String file, + String domain, + boolean isLocal, + Set issues) { + if (isLocal) { + if (!url.toString().contains(disallowedLocal)) { + issues.add(Issue.BAD_LOCAL); + } + final boolean endsWithMd = file.endsWith(".md") && urlString.contains(".md"); + // second check is because relativizing 'fills in' a file with .md + + if (siteType == SiteType.SPEC + && !endsWithMd + && !urlString.startsWith("#") + && !urlString.endsWith(".png") + && !urlString.endsWith(".abnf")) { + issues.add(Issue.MD_REQUIRE); + } + if (siteType == SiteType.SITE && endsWithMd) { + issues.add(Issue.MD_FORBID); + // relative links cannot end with .md + } + } + if (url.getRef() != null // + && url.getRef().startsWith("h.")) { + issues.add(Issue.OLD_ANCHOR); + } + if (file.contains("github.com/") && file.contains("/docs/")) { + issues.add(Issue.BAD_GITHUB); + } + checkDomain(issues, file, domain); + } + + public void checkDomain(Set error, String file, String domain) { + if (domain != null) { + switch (domain) { + case "cldr-smoke.unicode.org": + error.add(Issue.SMOKE); + break; + case "sites.google.com": + error.add(Issue.OLD_SITE); + break; + case "cldr.unicode.org": + if (siteType == SiteType.SITE) { + error.add(Issue.MAKE_RELATIVE); + } + case "unicode.org": + if (file.startsWith("/cldr/data/") + || file.startsWith("unicode.org/cldr/repository_access") + || file.startsWith("/cldr/trac/")) { + error.add(Issue.OLDER_SITE); + } + break; + case "www.unicode.org": + if (file.startsWith("/reports/tr35/")) { + if (siteType == SiteType.SPEC) { + error.add(Issue.MAKE_RELATIVE); + } + } else if (file.startsWith("/repos")) { + error.add(Issue.OLDER_SITE); + } + break; + case "github.com": + if (file.contains("/docs/")) { + error.add(Issue.BAD_GITHUB_DOCS); + } + break; + case "unicode-org.github.io": + if (file.startsWith("/cldr-staging/")) { + error.add(Issue.BAD_GITHUB); + } + break; + case "www.google.com": + if (file.startsWith("/url?") || file.startsWith("/search?")) { + error.add(Issue.SEARCH); + } + break; + } + } + } + } + + public static Pattern PROTOCOL_PAT = Pattern.compile("[a-z0-9+.\\-]+:"); // + + public static Pattern OLD_ANCHOR = Pattern.compile(".*#h\\..*"); // + + public static Pattern URL_PAT = + Pattern.compile( + "(?:\\bhref=(?:" // + + "[\"]([^\"]*)" // + + "|[']([^']*)))" + + "|\\]\\(([^)]*)"); // + + public static void getUrls(String line, int lineNumber, Multimap lineToUrls) { + Matcher m = URL_PAT.matcher(line); + int count = 0; + while (m.find()) { + for (int i = 1; i <= m.groupCount(); ++i) { + String group = m.group(i); + if (group != null) { + lineToUrls.put(lineNumber, group); + ++count; + break; + } + } + } + // For debugging + // if (count == 0) { + // int start = line.indexOf("href"); + // System.out.println(RegexUtilities.showMismatch(url, line.subSequence(start, + // line.length()))); + // int d=0; + // } + } + + public static boolean doesURLExist(URL url) { + if (DISABLE_BROKEN) return true; // the following doesn't work. + try { + // We want to check the current URL + HttpURLConnection.setFollowRedirects(false); + + HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection(); + + // We don't need to get data + httpURLConnection.setRequestMethod("HEAD"); + + // Some websites don't like programmatic access so pretend to be a browser + httpURLConnection.setRequestProperty( + "User-Agent", + "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2 (.NET CLR 3.5.30729)"); + int responseCode = httpURLConnection.getResponseCode(); + + // We only accept response code 200 + return responseCode == HttpURLConnection.HTTP_OK; + } catch (Exception e) { + return false; + } + } +} diff --git a/tools/pom.xml b/tools/pom.xml index 7f629fa02a8..850055d6e5f 100644 --- a/tools/pom.xml +++ b/tools/pom.xml @@ -25,7 +25,7 @@ SNAPSHOT for the ICU version that we want, so this should only need updating when the ICU version changes e.g. from 74.0.1, to 74.1, to 75.0.1, then to 75.1. You can use github actions in icu to manually push the latest SNAPSHOT version. --> - 76.0.1-SNAPSHOT + 76.1-SNAPSHOT 5.8.2 3.3.1 3.11.1 diff --git a/tools/scripts/tr-archive/archive.js b/tools/scripts/tr-archive/archive.js index 80df9f6f9f7..bdbd7874e6e 100644 --- a/tools/scripts/tr-archive/archive.js +++ b/tools/scripts/tr-archive/archive.js @@ -32,6 +32,7 @@ marked.use(markedAlert()); * @returns {Promise} name of output file (for status update) */ async function renderit(infile) { + const gtag = (await fs.readFile('gtag.html', 'utf-8')).trim(); console.log(`Reading ${infile}`); basename = path.basename(infile, ".md"); const outfile = path.join(path.dirname(infile), `${basename}.html`); @@ -55,6 +56,7 @@ async function renderit(infile) { // add CSS to HEAD head.innerHTML = head.innerHTML + + gtag + '\n' + `\n` + `\n` + `\n`; diff --git a/tools/scripts/tr-archive/gtag.html b/tools/scripts/tr-archive/gtag.html new file mode 100644 index 00000000000..2e91a24d2f3 --- /dev/null +++ b/tools/scripts/tr-archive/gtag.html @@ -0,0 +1,9 @@ + + +