Skip to content

Instantly share code, notes, and snippets.

@srl295
Created July 19, 2023 19:26
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save srl295/733e6436bad7d170e7f1a00275acab48 to your computer and use it in GitHub Desktop.
Save srl295/733e6436bad7d170e7f1a00275acab48 to your computer and use it in GitHub Desktop.
Crazy broken file
/*
*
This project is released under the free and open-source [Unicode License](./LICENSE), also known as _Unicode, Inc. License Agreement - Data Files and Software_. Note that some CLDR tools depend on libraries managed via Maven; use of these libraries is governed by separate license agreements.
SPDX-License-Identifier: Unicode-DFS-2016
### Copyright
Copyright © 1991-2023 Unicode, Inc.
All rights reserved.
[Terms of use](https://www.unicode.org/copyright.html)
*/
//package org.unicode;
// import static org.junit.jupiter.api.Assertions.assertTrue;
import java.util.*;
import java.util.function.Supplier;
// import org.junit.jupiter.api.Test;
public class TestSanity {
static final void assertTrue(Boolean b, Supplier<String> msg) {
if (!b) {
throw new RuntimeException(msg.get());
}
}
public static void main(String args[]) {
new TestSanity().sanityTest();
}
// @Test
public void sanityTest() {
// should have all unique lines
final Set<String> lines = new HashSet<String>();
for (final String s : pathDescriptionString.split("\n")) {
assertTrue(lines.add(s), () -> "Dup line: " + s);
}
System.out.println("OK");
}
private static final String pathDescriptionString =
""
/*
* ROOT descriptions (using special placeholders). Must occur first.
*/
+ "^//ldml/localeDisplayNames/territories/territory\\[@type=\"(CD|DG|CG|003|021|ZA|018|FK|MK|MM|TW|HK|MO)\"]"
+ RegexLookup.SEPARATOR
+ "ROOT territory; Warning - the region {0} requires special attention! Note: before translating, be sure to read "
+ CLDRURLS.COUNTRY_NAMES
+ ".\n"
+ "^//ldml/localeDisplayNames/scripts/script\\[@type=\"(Z[^\"]*)\"]"
+ RegexLookup.SEPARATOR
+ "ROOT script; The name of the script (writing system) with Unicode script code = {0}. Note: before translating, be sure to read "
+ CLDRURLS.SCRIPT_NAMES
+ ".\n"
+ "^//ldml/dates/timeZoneNames/zone\\[@type=\"([^\"]*)\"]/exemplarCity"
+ RegexLookup.SEPARATOR
+ "ROOT timezone"
+ RegexLookup.SEPARATOR
+ "The name of {0}. For more information, see "
+ CLDRURLS.TZ_CITY_NAMES
+ ".\n"
+ "^//ldml/localeDisplayNames/languages/language\\[@type=\"([^\"]*)\"]"
+ RegexLookup.SEPARATOR
+ "ROOT language; The name of the language with Unicode language code = {0}. For more information, see "
+ CLDRURLS.LANGUAGE_NAMES
+ ".\n"
+ "^//ldml/localeDisplayNames/scripts/script\\[@type=\"([^\"]*)\"]"
+ RegexLookup.SEPARATOR
+ "ROOT script; The name of the script (writing system) with Unicode script code = {0}. For more information, see "
+ CLDRURLS.SCRIPT_NAMES
+ ".\n"
+ "^//ldml/localeDisplayNames/territories/territory\\[@type=\"([^\"]*)\"]"
+ RegexLookup.SEPARATOR
+ "ROOT territory; The name of the country or region with Unicode region code = {0}. For more information, see "
+ CLDRURLS.COUNTRY_NAMES
+ ".\n"
+ "^//ldml/localeDisplayNames/subdivisions/subdivision\\[@type=\"([^\"]*)\"]"
+ RegexLookup.SEPARATOR
+ "ROOT territory; The name of the country subdivision with Unicode subdivision code = {0}. For more information, see "
+ CLDRURLS.COUNTRY_NAMES
+ ".\n"
+ "^//ldml/numbers/currencies/currency\\[@type=\"([^\"]*)\"]/symbol$"
+ RegexLookup.SEPARATOR
+ "ROOT currency; The symbol for the currency with the ISO currency code = {0}. For more information, see "
+ CLDRURLS.CURRENCY_NAMES
+ ".\n"
+ "^//ldml/numbers/currencies/currency\\[@type=\"([^\"]*)\"]/symbol\\[@alt=\"narrow\"]"
+ RegexLookup.SEPARATOR
+ "ROOT currency; The NARROW form of the symbol used for the currency with the ISO currency code = {0}, when the known context is already enough to distinguish the symbol from other currencies that may use the same symbol. Normally, this does not need to be changed from the inherited value. For more information, see "
+ CLDRURLS.CURRENCY_NAMES
+ ".\n"
+ "^//ldml/numbers/currencies/currency\\[@type=\"([^\"]*)\"]/symbol\\[@alt=\"([^\"]++)\"]"
+ RegexLookup.SEPARATOR
+ "ROOT currency; An alternative form of the symbol used for the currency with the ISO currency code = {0}. Usually occurs shortly after a new currency symbol is introduced. For more information, see "
+ CLDRURLS.CURRENCY_NAMES
+ ".\n"
+ "^//ldml/numbers/currencies/currency\\[@type=\"([^\"]*)\"]/displayName"
+ RegexLookup.SEPARATOR
+ "ROOT currency; The name of the currency with the ISO currency code = {0}. For more information, see "
+ CLDRURLS.CURRENCY_NAMES
+ ".\n"
/*
* Note: we change the metazones dynamically in code
*/
+ "^//ldml/dates/timeZoneNames/metazone\\[@type=\"([^\"]*)\"](.*)/(.*)"
+ RegexLookup.SEPARATOR
+ "ROOT metazone; The name of the timezone for “{0}”. Note: before translating, be sure to read "
+ CLDRURLS.TZ_CITY_NAMES
+ ".\n"
/*
* OTHER Descriptions
*/
+ "^//ldml/localeDisplayNames/types/type\\[@key=\"collation\"]\\[@type=\"([^\"]*)\"]"
+ RegexLookup.SEPARATOR
+ "The name of “{1} collation” (sorting order). For more information, please see "
+ CLDRURLS.KEY_NAMES
+ ".\n"
+ "^//ldml/localeDisplayNames/types/type\\[@key=\"numbers\"]\\[@type=\"([^\"]*)\"]"
+ RegexLookup.SEPARATOR
+ "The name of “{1} number system”. For more information, please see "
+ CLDRURLS.KEY_NAMES
+ ".\n"
+ "^//ldml/localeDisplayNames/types/type\\[@key=\"calendar\"]\\[@type=\"roc\"]"
+ RegexLookup.SEPARATOR
+ "The name of “roc calendar” (common names include “Minguo Calendar”, “Republic of China Calendar”, and “Republican Calendar”). For more information, please see "
+ CLDRURLS.KEY_NAMES
+ ".\n"
+ "^//ldml/localeDisplayNames/types/type\\[@key=\"calendar\"]\\[@type=\"([^\"]*)\"]"
+ RegexLookup.SEPARATOR
+ "The name of “{1} calendar”. For more information, please see "
+ CLDRURLS.KEY_NAMES
+ ".\n"
+ "^//ldml/localeDisplayNames/types/type\\[@key=\"em\"]\\[@type=\"([^\"]*)\"]"
+ RegexLookup.SEPARATOR
+ "The name of “emoji presentation style {1}”. For more information, please see "
+ CLDRURLS.KEY_NAMES
+ ".\n"
+ "^//ldml/localeDisplayNames/types/type\\[@key=\"fw\"]\\[@type=\"([^\"]*)\"]"
+ RegexLookup.SEPARATOR
+ "The name of “first day of the week is {1}”. For more information, please see "
+ CLDRURLS.KEY_NAMES
+ ".\n"
+ "^//ldml/localeDisplayNames/types/type\\[@key=\"lb\"]\\[@type=\"([^\"]*)\"]"
+ RegexLookup.SEPARATOR
+ "The name of “{1} line break style”. For more information, please see "
+ CLDRURLS.KEY_NAMES
+ ".\n"
+ "^//ldml/localeDisplayNames/types/type\\[@key=\"([^\"]*)\"]\\[@type=\"([^\"]*)\"]"
+ RegexLookup.SEPARATOR
+ "The name of the “{2} {1}”. For more information, please see "
+ CLDRURLS.KEY_NAMES
+ ".\n"
+ "^//ldml/localeDisplayNames/keys/key\\[@type=\"([^\"]*)\"]"
+ RegexLookup.SEPARATOR
+ "The name of the system for “{1}”. For more information, please see "
+ CLDRURLS.KEY_NAMES
+ ".\n"
+ "^//ldml/localeDisplayNames/variants/variant[@type=\"([^\"]*)\"]"
+ RegexLookup.SEPARATOR
+ "The name of the language variant with code {1}”. For more information, please see "
+ CLDRURLS.LANGUAGE_NAMES
+ ".\n"
+ "^//ldml/characters/exemplarCharacters$"
+ RegexLookup.SEPARATOR
// PROBLEM. having 'String.format' here cause following lines to be duplicated.
// Using a literal string ( commenting out /* String.format */ ) makes the problem go away!
+ String.format("Defines the set of characters used in your language. _Blah._\n")
// "Defines the set of characters used in your language. _You may not edit or vote on this item at this time._ Before filing any tickets to request changes, be sure to read [exemplars](%s).\n",
// CLDRURLS.EXEMPLAR_CHARACTERS)
+ "^//ldml/characters/exemplarCharacters\\[@type=\"([^\"]*)\"]"
+ RegexLookup.SEPARATOR
+ "Defines the set of characters used in your language for the “{1}” category. You may not edit or vote on this item at this time. Before filing any tickets to request changes, be sure to read "
+ CLDRURLS.EXEMPLAR_CHARACTERS
+ ".\n"
+ "^//ldml/characters/parseLenients"
+ RegexLookup.SEPARATOR
+ "Defines sets of characters that are treated as equivalent in parsing. You may not edit or vote on this item at this time. Before filing any tickets to request changes, be sure to read "
+ CLDRURLS.PARSE_LENIENT
+ ".\n"
+ "^//ldml/characters/ellipsis\\[@type=\"([^\"]*)\"]"
+ RegexLookup.SEPARATOR
+ "Supply the ellipsis pattern for when the {1} part of a string is omitted. Note: before translating, be sure to read "
+ CLDRURLS.CHARACTERS_HELP
+ ".\n"
+ "^//ldml/characters/moreInformation"
+ RegexLookup.SEPARATOR
+ "The character or short string used to indicate that more information is available. Note: before translating, be sure to read "
+ CLDRURLS.CHARACTERS_HELP
+ ".\n"
+ "^//ldml/delimiters/alternateQuotationEnd"
+ RegexLookup.SEPARATOR
+ "Supply the (alternate) ending quotation mark (the right mark except in BIDI languages). Note: before translating, be sure to read "
+ CLDRURLS.CHARACTERS_HELP
+ ".\n"
+ "^//ldml/delimiters/alternateQuotationStart"
+ RegexLookup.SEPARATOR
+ "Supply the (alternate) starting quotation mark (the left mark except in BIDI languages). Note: before translating, be sure to read "
+ CLDRURLS.CHARACTERS_HELP
+ ".\n"
+ "^//ldml/delimiters/quotationEnd"
+ RegexLookup.SEPARATOR
+ "Supply the ending quotation mark (the right mark except in BIDI languages). Note: before translating, be sure to read "
+ CLDRURLS.CHARACTERS_HELP
+ ".\n"
+ "^//ldml/delimiters/quotationStart"
+ RegexLookup.SEPARATOR
+ "Supply the starting quotation mark (the left mark except in BIDI languages). Note: before translating, be sure to read "
+ CLDRURLS.CHARACTERS_HELP
+ ".\n"
+ "^//ldml/localeDisplayNames/localeDisplayPattern/localePattern"
+ RegexLookup.SEPARATOR
+ "The pattern used to compose locale (language) names. Note: before translating, be sure to read "
+ CLDRURLS.LOCALE_PATTERN
+ ".\n"
+ "^//ldml/localeDisplayNames/localeDisplayPattern/localeSeparator"
+ RegexLookup.SEPARATOR
+ "The separator used to compose modifiers in locale (language) names. Note: before translating, be sure to read "
+ CLDRURLS.LOCALE_PATTERN
+ ".\n"
+ "^//ldml/localeDisplayNames/localeDisplayPattern/localeKeyTypePattern"
+ RegexLookup.SEPARATOR
+ "The pattern used to compose key-type values in locale (language) names. Note: before translating, be sure to read "
+ CLDRURLS.LOCALE_PATTERN
+ ".\n"
+ "^//ldml/layout/orientation/characterOrder"
+ RegexLookup.SEPARATOR
+ "Specifies the horizontal direction of text in the language. Valid values are \"left-to-right\" or \"right-to-left\". For more information, see "
+ CLDRURLS.UNITS_MISC_HELP
+ ".\n"
+ "^//ldml/layout/orientation/lineOrder"
+ RegexLookup.SEPARATOR
+ "Specifies the vertical direction of text in the language. Valid values are \"top-to-bottom\" or \"bottom-to-top\". For more information, see "
+ CLDRURLS.UNITS_MISC_HELP
+ ".\n"
+ "^//ldml/numbers/symbols/(\\w++)"
+ RegexLookup.SEPARATOR
+ "The {1} symbol used in the localized form of numbers. Note: before translating, be sure to read "
+ CLDRURLS.NUMBERS_HELP
+ ".\n"
+ "^//ldml/numbers/symbols\\[@numberSystem=\"([a-z]*)\"]/(\\w++)"
+ RegexLookup.SEPARATOR
+ "The {2} symbol used in the {1} numbering system. NOTE: especially for the decimal and grouping symbol, before translating, be sure to read "
+ CLDRURLS.NUMBERS_HELP
+ ".\n"
+ "^//ldml/numbers/defaultNumberingSystem"
+ RegexLookup.SEPARATOR
+ "The default numbering system used in this locale. For more information, please see "
+ CLDRURLS.NUMBERING_SYSTEMS
+ ".\n"
+ "^//ldml/numbers/minimumGroupingDigits"
+ RegexLookup.SEPARATOR
+ "The default minimum number of digits before a grouping separator used in this locale. For more information, please see "
+ CLDRURLS.NUMBERING_SYSTEMS
+ ".\n"
+ "^//ldml/numbers/otherNumberingSystems/(\\w++)"
+ RegexLookup.SEPARATOR
+ "The {1} numbering system used in this locale. For more information, please see "
+ CLDRURLS.NUMBERING_SYSTEMS
+ ".\n"
+ "^//ldml/dates/timeZoneNames/regionFormat\\[@type=\"standard\"]"
+ RegexLookup.SEPARATOR
+ "The pattern used to compose standard (winter) fallback time zone names, such as 'Germany Winter Time'. Note: before translating, be sure to read "
+ CLDRURLS.TZ_CITY_NAMES
+ ".\n"
+ "^//ldml/dates/timeZoneNames/regionFormat\\[@type=\"daylight\"]"
+ RegexLookup.SEPARATOR
+ "The pattern used to compose daylight (summer) fallback time zone names, such as 'Germany Summer Time'. Note: before translating, be sure to read "
+ CLDRURLS.TZ_CITY_NAMES
+ ".\n"
+ "^//ldml/dates/timeZoneNames/regionFormat"
+ RegexLookup.SEPARATOR
+ "The pattern used to compose generic fallback time zone names, such as 'Germany Time'. Note: before translating, be sure to read "
+ CLDRURLS.TZ_CITY_NAMES
+ ".\n"
+ "^//ldml/dates/timeZoneNames/(fallback|fallbackRegion|gmtZero|gmt|hour|region)Format"
+ RegexLookup.SEPARATOR
+ "The {1} pattern used to compose time zone names. Note: before translating, be sure to read "
+ CLDRURLS.TZ_CITY_NAMES
+ ".\n"
/*
* Warning: the longer match must come first
*/
+ "^//ldml/units/unitLength\\[@type=\"([^\"]*)\"]/compoundUnit\\[@type=\"([^\"]*)\"]/compoundUnitPattern1"
+ RegexLookup.SEPARATOR
+ "Special pattern used to compose powers of a unit, such as meters squared. Note: before translating, be sure to read "
+ CLDRURLS.UNITS_HELP
+ ".\n"
+ "^//ldml/units/unitLength\\[@type=\"([^\"]*)\"]/compoundUnit\\[@type=\"([^\"]*)\"]/compoundUnitPattern"
+ RegexLookup.SEPARATOR
+ "Special pattern used to compose forms of two units, such as meters per second. Note: before translating, be sure to read "
+ CLDRURLS.UNITS_HELP
+ ".\n"
+ "^//ldml/units/unitLength\\[@type=\"([^\"]*)\"]/compoundUnit\\[@type=\"([^\"]*)\"]/unitPrefixPattern"
+ RegexLookup.SEPARATOR
+ "Special pattern used to compose a metric prefix with a unit, such as kilo{0} with meters to produce kilometers. Note: before translating, be sure to read "
+ CLDRURLS.UNITS_HELP
+ ".\n"
+ "^//ldml/units/unitLength\\[@type=\"([^\"]*)\"]/coordinateUnit/displayName"
+ RegexLookup.SEPARATOR
+ "Display name ({1} form) for the type of direction used in latitude and longitude, such as north or east. Note: before translating, be sure to read "
+ CLDRURLS.UNITS_HELP
+ ".\n"
+ "^//ldml/units/unitLength\\[@type=\"([^\"]*)\"]/coordinateUnit/coordinateUnitPattern\\[@type=\"([^\"]*)\"]"
+ RegexLookup.SEPARATOR
+ "Special pattern used in latitude and longitude, such as 12°N. Note: before translating, be sure to read "
+ CLDRURLS.UNITS_HELP
+ ".\n"
+ "^//ldml/units/unitLength\\[@type=\"([^\"]*)\"]/unit\\[@type=\"area-acre\"]/displayName"
+ RegexLookup.SEPARATOR
+ "Display name ({1} form) for “area-acre”, referring specifically to an English acre. Note: before translating, be sure to read "
+ CLDRURLS.UNITS_HELP
+ ".\n"
+ "^//ldml/units/unitLength\\[@type=\"([^\"]*)\"]/unit\\[@type=\"duration-day\"]/displayName"
+ RegexLookup.SEPARATOR
+ "Display name ({1} form) for “duration-day”, meaning a time duration of 24 hours (not a calendar day). Note: before translating, be sure to read "
+ CLDRURLS.UNITS_HELP
+ ".\n"
+ "^//ldml/units/unitLength\\[@type=\"([^\"]*)\"]/unit\\[@type=\"energy-calorie\"]/displayName"
+ RegexLookup.SEPARATOR
+ "Display name ({1} form) for “energy-calorie”, calories as used in chemistry, not the same as food calorie. Note: before translating, be sure to read "
+ CLDRURLS.UNITS_HELP
+ ".\n"
+ "^//ldml/units/unitLength\\[@type=\"([^\"]*)\"]/unit\\[@type=\"energy-foodcalorie\"]/displayName"
+ RegexLookup.SEPARATOR
+ "Display name ({1} form) for “energy-foodcalorie”, kilocalories for food energy; may have same translation as energy-kilocalorie. Note: before translating, be sure to read "
+ CLDRURLS.UNITS_HELP
+ ".\n"
+ "^//ldml/units/unitLength\\[@type=\"([^\"]*)\"]/unit\\[@type=\"energy-kilocalorie\"]/displayName"
+ RegexLookup.SEPARATOR
+ "Display name ({1} form) for “energy-kilocalorie”, kilocalories for uses not specific to food energy, such as chemistry. Note: before translating, be sure to read "
+ CLDRURLS.UNITS_HELP
+ ".\n"
+ "^//ldml/units/unitLength\\[@type=\"([^\"]*)\"]/unit\\[@type=\"graphics-em\"]/displayName"
+ RegexLookup.SEPARATOR
+ "Display name ({1} form) for “graphics-em”, referring to typographic length equal to a font’s point size. Note: before translating, be sure to read "
+ CLDRURLS.UNITS_HELP
+ ".\n"
+ "^//ldml/units/unitLength\\[@type=\"([^\"]*)\"]/unit\\[@type=\"graphics-pixel\"]/displayName"
+ RegexLookup.SEPARATOR
+ "Display name ({1} form) for “graphics-pixel”, used for counting the individual elements in bitmap image. Note: before translating, be sure to read "
+ CLDRURLS.UNITS_HELP
+ ".\n"
+ "^//ldml/units/unitLength\\[@type=\"([^\"]*)\"]/unit\\[@type=\"graphics-megapixel\"]/displayName"
+ RegexLookup.SEPARATOR
+ "Display name ({1} form) for “graphics-megapixel”, used for counting the individual elements in bitmap image. Note: before translating, be sure to read "
+ CLDRURLS.UNITS_HELP
+ ".\n"
+ "^//ldml/units/unitLength\\[@type=\"([^\"]*)\"]/unit\\[@type=\"graphics-pixel-per-centimeter\"]/displayName"
+ RegexLookup.SEPARATOR
+ "Display name ({1} form) for “graphics-pixel-per-centimeter”, typically used for display resolution. Note: before translating, be sure to read "
+ CLDRURLS.UNITS_HELP
+ ".\n"
+ "^//ldml/units/unitLength\\[@type=\"([^\"]*)\"]/unit\\[@type=\"graphics-pixel-per-inch\"]/displayName"
+ RegexLookup.SEPARATOR
+ "Display name ({1} form) for “graphics-pixel-per-inch”, typically used for display resolution. Note: before translating, be sure to read "
+ CLDRURLS.UNITS_HELP
+ ".\n"
+ "^//ldml/units/unitLength\\[@type=\"([^\"]*)\"]/unit\\[@type=\"graphics-dot-per-centimeter\"]/displayName"
+ RegexLookup.SEPARATOR
+ "Display name ({1} form) for “graphics-dot-per-centimeter”, typically used for printer resolution. Note: before translating, be sure to read "
+ CLDRURLS.UNITS_HELP
+ ".\n"
+ "^//ldml/units/unitLength\\[@type=\"([^\"]*)\"]/unit\\[@type=\"graphics-dot-per-inch\"]/displayName"
+ RegexLookup.SEPARATOR
+ "Display name ({1} form) for “graphics-dot-per-inch”, typically used for printer resolution. Note: before translating, be sure to read "
+ CLDRURLS.UNITS_HELP
+ ".\n"
+ "^//ldml/units/unitLength\\[@type=\"([^\"]*)\"]/unit\\[@type=\"length-point\"]/displayName"
+ RegexLookup.SEPARATOR
+ "Display name ({1} form) for “length-point”, referring to a typographic point, 1/72 inch. Note: before translating, be sure to read "
+ CLDRURLS.UNITS_HELP
+ ".\n"
+ "^//ldml/units/unitLength\\[@type=\"([^\"]*)\"]/unit\\[@type=\"mass-stone\"]/displayName"
+ RegexLookup.SEPARATOR
+ "Display name ({1} form) for “mass-stone”, used in UK/Ireland for body weight, equal to 14 pounds. Note: before translating, be sure to read "
+ CLDRURLS.UNITS_HELP
+ ".\n"
+ "^//ldml/units/unitLength\\[@type=\"([^\"]*)\"]/unit\\[@type=\"mass-ton\"]/displayName"
+ RegexLookup.SEPARATOR
+ "Display name ({1} form) for “mass-ton”, meaning U.S. short ton, not U.K. long ton or metric ton. Note: before translating, be sure to read "
+ CLDRURLS.UNITS_HELP
+ ".\n"
+ "^//ldml/units/unitLength\\[@type=\"([^\"]*)\"]/unit\\[@type=\"([^\"]*)\"]/displayName"
+ RegexLookup.SEPARATOR
+ "Display name ({1} form) for “{2}”. Note: before translating, be sure to read "
+ CLDRURLS.UNITS_HELP
+ ".\n"
+ "^//ldml/units/unitLength\\[@type=\"([^\"]*)\"]/unit\\[@type=\"([^\"]*)\"]/unitPattern"
+ RegexLookup.SEPARATOR
+ "[ICU Syntax] Special pattern used to compose plural for {1} forms of “{2}”. Note: before translating, be sure to read "
+ CLDRURLS.PLURALS_HELP
+ ".\n"
+ "^//ldml/units/unitLength\\[@type=\"([^\"]*)\"]/unit\\[@type=\"([^\"]*)\"]/gender"
+ RegexLookup.SEPARATOR
+ "Gender ({1} form) for “{2}”. Note: before translating, be sure to read "
+ CLDRURLS.GRAMMATICAL_INFLECTION
+ ".\n"
+ "^//ldml/units/unitLength\\[@type=\"([^\"]*)\"]/unit\\[@type=\"([^\"]*)\"]/perUnitPattern"
+ RegexLookup.SEPARATOR
+ "Special pattern ({1} form) used to compose values per unit, such as “meters per {2}”. Note: before translating, be sure to read "
+ CLDRURLS.UNITS_HELP
+ ".\n"
+ "^//ldml/units/durationUnit\\[@type=\"(hms|hm|ms)\"]"
+ RegexLookup.SEPARATOR
+ "[ICU Syntax] Special pattern used to compose duration units. Note: before translating, be sure to read "
+ CLDRURLS.PLURALS_HELP
+ ".\n"
+ "^//ldml/numbers/decimalFormats/decimalFormatLength\\[@type=\"([^\"]*)\"]/decimalFormat\\[@type=\"([^\"]*)\"]/pattern\\[@type=\"([^\"]*)\"]"
+ RegexLookup.SEPARATOR
+ "Special pattern used for a short version of numbers with the same number of digits as {3}. Note: before translating, be sure to read "
+ CLDRURLS.NUMBERS_SHORT
+ ".\n"
+ "^//ldml/numbers/currencyFormats\\[@numberSystem=\"([^\"]*)\"]/currencyFormatLength\\[@type=\"short\"]/currencyFormat\\[@type=\"standard\"]/pattern\\[@type=\"(\\d+)\"]\\[@count=\"([^\"]+)\"]"
+ RegexLookup.SEPARATOR
+ "Special currency pattern used to obtain the abbreviated plural forms of numbers with the same number of digits as {2}. See "
+ CLDRURLS.NUMBERS_SHORT
+ " for details.\n"
+ "^//ldml/numbers/decimalFormats\\[@numberSystem=\"([^\"]*)\"]/decimalFormatLength\\[@type=\"short\"]/decimalFormat\\[@type=\"standard\"]/pattern\\[@type=\"(\\d+)\"]\\[@count=\"([^\"]+)\"]"
+ RegexLookup.SEPARATOR
+ "Special decimal pattern used to obtain the abbreviated plural forms of numbers with the same number of digits as {2}. See "
+ CLDRURLS.NUMBERS_SHORT
+ " for details.\n"
+ "^//ldml/numbers/decimalFormats\\[@numberSystem=\"([^\"]*)\"]/decimalFormatLength\\[@type=\"long\"]/decimalFormat\\[@type=\"standard\"]/pattern\\[@type=\"(\\d+)\"]\\[@count=\"([^\"]+)\"]"
+ RegexLookup.SEPARATOR
+ "Special decimal pattern used to obtain the long plural forms of numbers with the same number of digits as {2}. See "
+ CLDRURLS.NUMBERS_PLURAL
+ " for details.\n"
+ "^//ldml/numbers/currencyFormats/currencyPatternAppendISO"
+ RegexLookup.SEPARATOR
+ "Pattern used to combine a regular currency format with an ISO 4217 code (¤¤). For more information, please see "
+ CLDRURLS.NUMBER_PATTERNS
+ ".\n"
+ "^//ldml/numbers/currencyFormats\\[@numberSystem=\"([^\"]*)\"]/currencyPatternAppendISO"
+ RegexLookup.SEPARATOR
+ "Pattern used to combine a regular currency format with an ISO 4217 code (¤¤). For more information, please see "
+ CLDRURLS.NUMBER_PATTERNS
+ ".\n"
+ "^//ldml/numbers/currencyFormats\\[@numberSystem=\"([^\"]*)\"]/unitPattern\\[@count=\"(\\w++)\"]"
+ RegexLookup.SEPARATOR
+ "Currency format used for numbers of type {2}. For more information, please see "
+ CLDRURLS.NUMBER_PATTERNS
+ ".\n"
+ "^//ldml/numbers/miscPatterns\\[@numberSystem=\"([^\"]*)\"]/pattern\\[@type=\"range\"]"
+ RegexLookup.SEPARATOR
+ "Format used to indicate a range of numbers. The '{'0'}' and '{'1'}' in the pattern represent the lowest and highest numbers in the range, respectively. For more information, please see "
+ CLDRURLS.UNITS_MISC_HELP
+ ".\n"
+ "^//ldml/numbers/miscPatterns\\[@numberSystem=\"([^\"]*)\"]/pattern\\[@type=\"atLeast\"]"
+ RegexLookup.SEPARATOR
+ "Format used to indicate a number is at least a certain value, often combined with other patterns to produce examples such as “≥12kg”. For more information, please see "
+ CLDRURLS.UNITS_MISC_HELP
+ ".\n"
+ "^//ldml/numbers/miscPatterns\\[@numberSystem=\"([^\"]*)\"]/pattern\\[@type=\"atMost\"]"
+ RegexLookup.SEPARATOR
+ "Format used to indicate a number is at most a certain value, often combined with other patterns to produce examples such as “≤12kg”. For more information, please see "
+ CLDRURLS.UNITS_MISC_HELP
+ ".\n"
+ "^//ldml/numbers/miscPatterns\\[@numberSystem=\"([^\"]*)\"]/pattern\\[@type=\"approximately\"]"
+ RegexLookup.SEPARATOR
+ "Format used to indicate a number is approximately a given value, often combined with other patterns to produce examples such as “~12kg”. For more information, please see "
+ CLDRURLS.UNITS_MISC_HELP
+ ".\n"
+ "^//ldml/numbers/minimalPairs/ordinalMinimalPairs\\[@ordinal=\"([^\"]*)\"]"
+ RegexLookup.SEPARATOR
+ "Minimal pairs for ordinals. For more information, please see "
+ CLDRURLS.PLURALS_HELP_MINIMAL
+ ".\n"
+ "^//ldml/numbers/minimalPairs/pluralMinimalPairs\\[@count=\"([^\"]*)\"]"
+ RegexLookup.SEPARATOR
+ "Minimal pairs for plurals (cardinals). For more information, please see "
+ CLDRURLS.PLURALS_HELP_MINIMAL
+ ".\n"
+ "^//ldml/numbers/minimalPairs/caseMinimalPairs\\[@case=\"([^\"]*)\"]"
+ RegexLookup.SEPARATOR
+ "Minimal pairs for cases used in the language. For more information, please see "
+ CLDRURLS.GRAMMATICAL_INFLECTION
+ ".\n"
+ "^//ldml/numbers/minimalPairs/genderMinimalPairs\\[@gender=\"([^\"]*)\"]"
+ RegexLookup.SEPARATOR
+ "Minimal pairs for genders. For more information, please see "
+ CLDRURLS.GRAMMATICAL_INFLECTION
+ ".\n"
+ "^//ldml/personNames/nameOrderLocales\\[@order=\"([^\"]*)\"]"
+ RegexLookup.SEPARATOR
+ "Person name order for locales. If there are none with a particular direction, insert ❮EMPTY❯. For more information, please see "
+ CLDRURLS.PERSON_NAME_FORMATS
+ ".\n"
+ "^//ldml/personNames/parameterDefault\\[@parameter=\"([^\"]*)\"]"
+ RegexLookup.SEPARATOR
+ "Person name default parameters. Make the appropriate formality and length settings for your locale. For more information, please see "
+ CLDRURLS.PERSON_NAME_FORMATS
+ ".\n"
+ "^//ldml/personNames/foreignSpaceReplacement"
+ RegexLookup.SEPARATOR
+ "For foreign personal names displayed in your locale, any special character that replaces a space (defaults to regular space). If spaces are to be removed, insert ❮EMPTY❯. For more information, please see "
+ CLDRURLS.PERSON_NAME_FORMATS
+ ".\n"
+ "^//ldml/personNames/nativeSpaceReplacement"
+ RegexLookup.SEPARATOR
+ "For native personal names displayed in your locale, should be ❮EMPTY❯ if your language doesn't use spaces between any name parts (such as Japanese), and otherwise a space. For more information, please see "
+ CLDRURLS.PERSON_NAME_FORMATS
+ ".\n"
+ "^//ldml/personNames/initialPattern\\[@type=\"initial\"]"
+ RegexLookup.SEPARATOR
+ "The pattern used for a single initial in person name formats. For more information, please see "
+ CLDRURLS.PERSON_NAME_FORMATS
+ ".\n"
+ "^//ldml/personNames/initialPattern\\[@type=\"initialSequence\"]"
+ RegexLookup.SEPARATOR
+ "The pattern used to compose sequences of initials in person name formats. For more information, please see "
+ CLDRURLS.PERSON_NAME_FORMATS
+ ".\n"
+ "^//ldml/personNames/personName\\[@order=\"([^\"]*)\"]\\[@length=\"([^\"]*)\"]\\[@usage=\"referring\"]\\[@formality=\"([^\"]*)\"]"
+ RegexLookup.SEPARATOR
+ "Person name formats for referring to a person (with a particular order, length, formality). For more information, please see "
+ CLDRURLS.PERSON_NAME_FORMATS
+ ".\n"
+ "^//ldml/personNames/personName\\[@order=\"([^\"]*)\"]\\[@length=\"([^\"]*)\"]\\[@usage=\"addressing\"]\\[@formality=\"([^\"]*)\"]"
+ RegexLookup.SEPARATOR
+ "Person name format for addressing a person (with a particular order, length, formality). For more information, please see "
+ CLDRURLS.PERSON_NAME_FORMATS
+ ".\n"
+ "^//ldml/personNames/personName\\[@order=\"([^\"]*)\"]\\[@length=\"([^\"]*)\"]\\[@usage=\"monogram\"]\\[@formality=\"([^\"]*)\"]"
+ RegexLookup.SEPARATOR
+ "Person name formats for monograms (with a particular order, length, formality). For more information, please see "
+ CLDRURLS.PERSON_NAME_FORMATS
+ ".\n"
+ "^//ldml/personNames/sampleName"
+ RegexLookup.SEPARATOR
+ "Sample names for person name format examples (enter ∅∅∅ for optional unused fields). For more information, please see "
+ CLDRURLS.PERSON_NAME_FORMATS
+ ".\n"
+ "^//ldml/numbers/([a-z]*)Formats(\\[@numberSystem=\"([^\"]*)\"])?/\\1FormatLength/\\1Format\\[@type=\"standard\"]/pattern\\[@type=\"standard\"]$"
+ RegexLookup.SEPARATOR
+ "Special pattern used to compose {1} numbers. Note: before translating, be sure to read "
+ CLDRURLS.NUMBER_PATTERNS
+ ".\n"
+ "^//ldml/numbers/currencyFormats\\[@numberSystem=\"([^\"]*)\"]/currencyFormatLength/currencyFormat\\[@type=\"standard\"]/pattern\\[@type=\"standard\"]\\[@alt=\"alphaNextToNumber\"]"
+ RegexLookup.SEPARATOR
+ "Special pattern used to compose currency values when the currency symbol has a letter adjacent to the number. Note: before translating, be sure to read "
+ CLDRURLS.NUMBER_PATTERNS
+ ".\n"
+ "^//ldml/numbers/currencyFormats\\[@numberSystem=\"([^\"]*)\"]/currencyFormatLength/currencyFormat\\[@type=\"standard\"]/pattern\\[@type=\"standard\"]\\[@alt=\"noCurrency\"]"
+ RegexLookup.SEPARATOR
+ "Special pattern used to compose currency values for which no currency symbol should be shown. Note: before translating, be sure to read "
+ CLDRURLS.NUMBER_PATTERNS
+ ".\n"
+ "^//ldml/numbers/currencyFormats\\[@numberSystem=\"([^\"]*)\"]/currencyFormatLength/currencyFormat\\[@type=\"accounting\"]/pattern"
+ RegexLookup.SEPARATOR
+ "Special pattern used to compose currency values for accounting purposes. Note: before translating, be sure to read "
+ CLDRURLS.NUMBER_PATTERNS
+ ".\n"
+ "^//ldml/numbers/currencyFormats/currencySpacing/([a-zA-Z]*)/([a-zA-Z]*)"
+ RegexLookup.SEPARATOR
+ "Special pattern used to compose currency signs ($1/$2) with numbers. Note: before translating, be sure to read "
+ CLDRURLS.NUMBER_PATTERNS
+ ".\n"
+ "^//ldml/listPatterns/listPattern/listPatternPart\\[@type=\"2\"]"
+ RegexLookup.SEPARATOR
+ "Special pattern used to make an “and” list out of two standard elements. Note: before translating, be sure to read "
+ CLDRURLS.LISTS_HELP
+ ".\n"
+ "^//ldml/listPatterns/listPattern/listPatternPart\\[@type=\"([^\"]*)\"]"
+ RegexLookup.SEPARATOR
+ "Special pattern used to make a “and” list out of more than two standard elements. This is used for the {1} portion of the list. Note: before translating, be sure to read "
+ CLDRURLS.LISTS_HELP
+ ".\n"
+ "^//ldml/listPatterns/listPattern\\[@type=\"standard-short\"]/listPatternPart\\[@type=\"2\"]"
+ RegexLookup.SEPARATOR
+ "Special pattern used to make a short-style “and” list out of two standard elements. Note: before translating, be sure to read "
+ CLDRURLS.LISTS_HELP
+ ".\n"
+ "^//ldml/listPatterns/listPattern\\[@type=\"standard-short\"]/listPatternPart\\[@type=\"([^\"]*)\"]"
+ RegexLookup.SEPARATOR
+ "Special pattern used to make a short-style “and” list out of more than two standard elements. This is used for the {1} portion of the list. Note: before translating, be sure to read "
+ CLDRURLS.LISTS_HELP
+ ".\n"
+ "^//ldml/listPatterns/listPattern\\[@type=\"standard-narrow\"]/listPatternPart\\[@type=\"2\"]"
+ RegexLookup.SEPARATOR
+ "Special pattern used to make a short-style “and” list out of two standard elements. Note: before translating, be sure to read "
+ CLDRURLS.LISTS_HELP
+ ".\n"
+ "^//ldml/listPatterns/listPattern\\[@type=\"standard-narrow\"]/listPatternPart\\[@type=\"([^\"]*)\"]"
+ RegexLookup.SEPARATOR
+ "Special pattern used to make a short-style “and” list out of more than two standard elements. This is used for the {1} portion of the list. Note: before translating, be sure to read "
+ CLDRURLS.LISTS_HELP
+ ".\n"
+ "^//ldml/listPatterns/listPattern\\[@type=\"or\"]/listPatternPart\\[@type=\"2\"]"
+ RegexLookup.SEPARATOR
+ "Special pattern used to make an “or” list out of two standard elements. Note: before translating, be sure to read "
+ CLDRURLS.LISTS_HELP
+ ".\n"
+ "^//ldml/listPatterns/listPattern\\[@type=\"or\"]/listPatternPart\\[@type=\"([^\"]*)\"]"
+ RegexLookup.SEPARATOR
+ "Special pattern used to make an “or” list out of more than two standard elements. This is used for the {1} portion of the list. Note: before translating, be sure to read "
+ CLDRURLS.LISTS_HELP
+ ".\n"
+ "^//ldml/listPatterns/listPattern\\[@type=\"or-short\"]/listPatternPart\\[@type=\"2\"]"
+ RegexLookup.SEPARATOR
+ "Special pattern used to make an “or” list out of two standard elements. Note: before translating, be sure to read "
+ CLDRURLS.LISTS_HELP
+ ".\n"
+ "^//ldml/listPatterns/listPattern\\[@type=\"or-short\"]/listPatternPart\\[@type=\"([^\"]*)\"]"
+ RegexLookup.SEPARATOR
+ "Special pattern used to make an “or” list out of more than two standard elements. This is used for the {1} portion of the list. Note: before translating, be sure to read "
+ CLDRURLS.LISTS_HELP
+ ".\n"
+ "^//ldml/listPatterns/listPattern\\[@type=\"or-narrow\"]/listPatternPart\\[@type=\"2\"]"
+ RegexLookup.SEPARATOR
+ "Special pattern used to make an “or” list out of two standard elements. Note: before translating, be sure to read "
+ CLDRURLS.LISTS_HELP
+ ".\n"
+ "^//ldml/listPatterns/listPattern\\[@type=\"or-narrow\"]/listPatternPart\\[@type=\"([^\"]*)\"]"
+ RegexLookup.SEPARATOR
+ "Special pattern used to make an “or” list out of more than two standard elements. This is used for the {1} portion of the list. Note: before translating, be sure to read "
+ CLDRURLS.LISTS_HELP
+ ".\n"
+ "^//ldml/listPatterns/listPattern\\[@type=\"unit\"]/listPatternPart\\[@type=\"2\"]"
+ RegexLookup.SEPARATOR
+ "Special pattern used to make a list out of two unit elements. Note: before translating, be sure to read "
+ CLDRURLS.LISTS_HELP
+ ".\n"
+ "^//ldml/listPatterns/listPattern\\[@type=\"unit\"]/listPatternPart\\[@type=\"([^\"]*)\"]"
+ RegexLookup.SEPARATOR
+ "Special pattern used to make a list out of more than two unit elements. This is used for the {1} portion of the list. Note: before translating, be sure to read "
+ CLDRURLS.LISTS_HELP
+ ".\n"
+ "^//ldml/listPatterns/listPattern\\[@type=\"unit-short\"]/listPatternPart\\[@type=\"2\"]"
+ RegexLookup.SEPARATOR
+ "Special pattern used to make a list out of two abbreviated unit elements. Note: before translating, be sure to read "
+ CLDRURLS.LISTS_HELP
+ ".\n"
+ "^//ldml/listPatterns/listPattern\\[@type=\"unit-short\"]/listPatternPart\\[@type=\"([^\"]*)\"]"
+ RegexLookup.SEPARATOR
+ "Special pattern used to make a list out of more than two abbreviated unit elements. This is used for the {1} portion of the list. Note: before translating, be sure to read "
+ CLDRURLS.LISTS_HELP
+ ".\n"
+ "^//ldml/listPatterns/listPattern\\[@type=\"unit-narrow\"]/listPatternPart\\[@type=\"2\"]"
+ RegexLookup.SEPARATOR
+ "Special pattern used to make a list out of two narrow unit elements. Note: before translating, be sure to read "
+ CLDRURLS.LISTS_HELP
+ ".\n"
+ "^//ldml/listPatterns/listPattern\\[@type=\"unit-narrow\"]/listPatternPart\\[@type=\"([^\"]*)\"]"
+ RegexLookup.SEPARATOR
+ "Special pattern used to make a list out of more than two narrow unit elements. This is used for the {1} portion of the list. Note: before translating, be sure to read "
+ CLDRURLS.LISTS_HELP
+ ".\n"
+ "^//ldml/dates/calendars/calendar\\[@type=\"([^\"]*)\"]/dayPeriods/dayPeriodContext\\[@type=\"(format)\"]/dayPeriodWidth\\[@type=\"([^\"]*)\"]/dayPeriod\\[@type=\"([^\"]*)\"]"
+ RegexLookup.SEPARATOR
+ "Provide the {3}, {2} version of the name for the day period code “{4}”. This version must have the right inflection/prepositions/etc. for adding after a number, such as “in the morning” for use in “10:00 in the morning”. To see the time spans for these codes, please see "
+ CLDRURLS.DATE_TIME_HELP
+ "\n"
+ "^//ldml/dates/calendars/calendar\\[@type=\"([^\"]*)\"]/dayPeriods/dayPeriodContext\\[@type=\"([^\"]*)\"]/dayPeriodWidth\\[@type=\"([^\"]*)\"]/dayPeriod\\[@type=\"([^\"]*)\"]"
+ RegexLookup.SEPARATOR
+ "Provide the {3}, {2} version of the name for the day period code “{4}”. To see the time spans for these codes, please see "
+ CLDRURLS.DATE_TIME_HELP
+ "\n"
+ "^//ldml/dates/calendars/calendar\\[@type=\"([^\"]*)\"]/days/dayContext\\[@type=\"([^\"]*)\"]/dayWidth\\[@type=\"([^\"]*)\"]/day\\[@type=\"([^\"]*)\"]"
+ RegexLookup.SEPARATOR
+ "Provide the {2} and {3} version of the name for day-of-the-week {4}. For more information, please see "
+ CLDRURLS.DATE_TIME_NAMES
+ ".\n"
+ "^//ldml/dates/calendars/calendar\\[@type=\"([^\"]*)\"]/eras/eraAbbr/era\\[@type=\"([^\"]*)\"]"
+ RegexLookup.SEPARATOR
+ "Provide the format-abbreviated version of the name for era {4}. For more information, please see "
+ CLDRURLS.DATE_TIME_NAMES
+ ".\n"
+ "^//ldml/dates/calendars/calendar\\[@type=\"([^\"]*)\"]/eras/eraNames/era\\[@type=\"([^\"]*)\"]"
+ RegexLookup.SEPARATOR
+ "Provide the format-wide version of the name for era {4}. For more information, please see "
+ CLDRURLS.DATE_TIME_NAMES
+ ".\n"
+ "^//ldml/dates/calendars/calendar\\[@type=\"([^\"]*)\"]/eras/eraNarrow/era\\[@type=\"([^\"]*)\"]"
+ RegexLookup.SEPARATOR
+ "Provide the format-narrow version of the name for era {4}. For more information, please see "
+ CLDRURLS.DATE_TIME_NAMES
+ ".\n"
+ "^//ldml/dates/calendars/calendar\\[@type=\"([^\"]*)\"]/months/monthContext\\[@type=\"([^\"]*)\"]/monthWidth\\[@type=\"([^\"]*)\"]/month\\[@type=\"([^\"]*)\"]"
+ RegexLookup.SEPARATOR
+ "Provide the {2} and {3} version of the name for month {4}. For more information, please see "
+ CLDRURLS.DATE_TIME_NAMES
+ ".\n"
+ "^//ldml/dates/calendars/calendar\\[@type=\"([^\"]*)\"]/quarters/quarterContext\\[@type=\"([^\"]*)\"]/quarterWidth\\[@type=\"([^\"]*)\"]/quarter\\[@type=\"([^\"]*)\"]"
+ RegexLookup.SEPARATOR
+ "Provide the {2} and {3} version of the name for quarter {4}. For more information, please see "
+ CLDRURLS.DATE_TIME_NAMES
+ ".\n"
+ "^//ldml/dates/fields/field\\[@type=\"([^\"]*)\"]/displayName"
+ RegexLookup.SEPARATOR
+ "Provide the name (as it would appear in menus) for the field “{1}”. For more information, please see "
+ CLDRURLS.DATE_TIME_NAMES_FIELD
+ ".\n"
+ "^//ldml/dates/fields/field\\[@type=\"day\"]/relative\\[@type=\"0\"]"
+ RegexLookup.SEPARATOR
+ "Provide the name for today. For more information, please see "
+ CLDRURLS.DATE_TIME_NAMES_RELATIVE
+ ".\n"
+ "^//ldml/dates/fields/field\\[@type=\"day\"]/relative\\[@type=\"-([^\"]*)\"]"
+ RegexLookup.SEPARATOR
+ "Provide a name for the day, {1} before today. For more information, please see "
+ CLDRURLS.DATE_TIME_NAMES_RELATIVE
+ ".\n"
+ "^//ldml/dates/fields/field\\[@type=\"day\"]/relative\\[@type=\"([^\"]*)\"]"
+ RegexLookup.SEPARATOR
+ "Provide a name for the day, {1} after today. For more information, please see "
+ CLDRURLS.DATE_TIME_NAMES_RELATIVE
+ ".\n"
+ "^//ldml/dates/fields/field\\[@type=\"([^\"]*)\"]/relative\\[@type=\"0\"]"
+ RegexLookup.SEPARATOR
+ "Provide the name for “this {2}”. For more information, please see "
+ CLDRURLS.DATE_TIME_NAMES_RELATIVE
+ ".\n"
+ "^//ldml/dates/fields/field\\[@type=\"([^\"]*)\"]/relative\\[@type=\"-1\"]"
+ RegexLookup.SEPARATOR
+ "Provide a name for “last {1}”. For more information, please see "
+ CLDRURLS.DATE_TIME_NAMES_RELATIVE
+ ".\n"
+ "^//ldml/dates/fields/field\\[@type=\"([^\"]*)\"]/relative\\[@type=\"1\"]"
+ RegexLookup.SEPARATOR
+ "Provide a name for “next {1}”. For more information, please see "
+ CLDRURLS.DATE_TIME_NAMES_RELATIVE
+ ".\n"
+ "^//ldml/dates/fields/field\\[@type=\"([^\"]*)\"]/relativeTime\\[@type=\"future\"]/relativeTimePattern\\[@count=\"([^\"]*)\"]"
+ RegexLookup.SEPARATOR
+ "Provide a pattern used to display times in the future. For more information, please see "
+ CLDRURLS.DATE_TIME_NAMES
+ ".\n"
+ "^//ldml/dates/fields/field\\[@type=\"([^\"]*)\"]/relativeTime\\[@type=\"past\"]/relativeTimePattern\\[@count=\"([^\"]*)\"]"
+ RegexLookup.SEPARATOR
+ "Provide a pattern used to display times in the past. For more information, please see "
+ CLDRURLS.DATE_TIME_NAMES
+ ".\n"
+ "^//ldml/dates/fields/field\\[@type=\"([^\"]*)\"]/relativePeriod"
+ RegexLookup.SEPARATOR
+ "Provide a name for “the {1} of SOME_DATE”. For more information, please see "
+ CLDRURLS.DATE_TIME_NAMES
+ ".\n"
+ "^//ldml/dates/calendars/calendar\\[@type=\"([^\"]*)\"]/dateTimeFormats/dateTimeFormatLength\\[@type=\"([^\"]*)\"]/dateTimeFormat\\[@type=\"standard\"]/pattern\\[@type=\"([^\"]*)\"]"
+ RegexLookup.SEPARATOR
+ "Provide the {2} version of the date-time pattern suitable for most use cases, including combining a date with a time range. Note: before translating, be sure to read "
+ CLDRURLS.DATE_TIME_PATTERNS
+ ".\n"
+ "^//ldml/dates/calendars/calendar\\[@type=\"([^\"]*)\"]/dateTimeFormats/dateTimeFormatLength\\[@type=\"([^\"]*)\"]/dateTimeFormat\\[@type=\"atTime\"]/pattern\\[@type=\"([^\"]*)\"]"
+ RegexLookup.SEPARATOR
+ "Provide the {2} version of the date-time pattern suitable for expressing a date at a specific time. Note: before translating, be sure to read "
+ CLDRURLS.DATE_TIME_PATTERNS
+ ".\n"
+ "^//ldml/dates/calendars/calendar\\[@type=\"([^\"]*)\"]/dateFormats/dateFormatLength\\[@type=\"([^\"]*)\"]/dateFormat\\[@type=\"([^\"]*)\"]/pattern\\[@type=\"([^\"]*)\"]"
+ RegexLookup.SEPARATOR
+ "Provide the {2} version of the basic date pattern. Note: before translating, be sure to read "
+ CLDRURLS.DATE_TIME_PATTERNS
+ ".\n"
+ "^//ldml/dates/calendars/calendar\\[@type=\"([^\"]*)\"]/timeFormats/timeFormatLength\\[@type=\"([^\"]*)\"]/timeFormat\\[@type=\"([^\"]*)\"]/pattern\\[@type=\"([^\"]*)\"]"
+ RegexLookup.SEPARATOR
+ "Provide the {2} version of the basic time pattern. Note: before translating, be sure to read "
+ CLDRURLS.DATE_TIME_PATTERNS
+ ".\n"
+ "^//ldml/dates/calendars/calendar\\[@type=\"([^\"]*)\"]/dateTimeFormats/availableFormats/dateFormatItem\\[@id=\"([^\"]*)\"]"
+ RegexLookup.SEPARATOR
+ "Provide the pattern used in your language for the skeleton “{2}”. Note: before translating, be sure to read "
+ CLDRURLS.DATE_TIME_PATTERNS
+ ".\n"
+ "^//ldml/dates/calendars/calendar\\[@type=\"([^\"]*)\"]/dateTimeFormats/appendItems/appendItem\\[@request=\"([^\"]*)\"]"
+ RegexLookup.SEPARATOR
+ "Provide the pattern used in your language to append a “{2}” to another format. Note: before translating, be sure to read "
+ CLDRURLS.DATE_TIME_PATTERNS
+ ".\n"
+ "^//ldml/dates/calendars/calendar\\[@type=\"([^\"]*)\"]/dateTimeFormats/intervalFormats/intervalFormatFallback"
+ RegexLookup.SEPARATOR
+ "The pattern used for “fallback” with date/time intervals. Note: before translating, be sure to read "
+ CLDRURLS.DATE_TIME_PATTERNS
+ ".\n"
+ "^//ldml/dates/calendars/calendar\\[@type=\"([^\"]*)\"]/dateTimeFormats/intervalFormats/intervalFormatItem\\[@id=\"([^\"]*)\"]/greatestDifference\\[@id=\"([^\"]*)\"]"
+ RegexLookup.SEPARATOR
+ "The pattern used for the date/time interval skeleton “{2}” when the greatest difference is “{3}”. Note: before translating, be sure to read "
+ CLDRURLS.DATE_TIME_PATTERNS
+ ".\n"
+ "^//ldml/dates/calendars/calendar\\[@type=\"[^\"]*\"]/cyclicNameSets/cyclicNameSet\\[@type=\"([^\"]*)\"]/cyclicNameContext\\[@type=\"([^\"]*)\"]/cyclicNameWidth\\[@type=\"([^\"]*)\"]/cyclicName\\[@type=\"([^\"]*)\"]"
+ RegexLookup.SEPARATOR
+ "Provide the {2} and {3} version of type {4} in the {1} name cycle. For more information, please see "
+ CLDRURLS.DATE_TIME_NAMES_CYCLIC
+ ".\n"
+ "^//ldml/dates/calendars/calendar\\[@type=\"[^\"]*\"]/monthPatterns/monthPatternContext\\[@type=\"([^\"]*)\"]/monthPatternWidth\\[@type=\"([^\"]*)\"]/monthPattern\\[@type=\"([^\"]*)\"]"
+ RegexLookup.SEPARATOR
+ "Provide the {1} and {2} version of the name for {3} month types. For more information, please see "
+ CLDRURLS.DATE_TIME_NAMES_MONTH
+ ".\n"
+ "^//ldml/localeDisplayNames/transformNames/transformName\\[@type=\"([^\"]*)\"]"
+ RegexLookup.SEPARATOR
+ "The name of the transform “{1}”. For more information, please see "
+ CLDRURLS.TRANSFORMS_HELP
+ ".\n"
+ "^//ldml/localeDisplayNames/codePatterns/codePattern[@type=\"([^\"]*)\"]"
+ RegexLookup.SEPARATOR
+ "The pattern to be used when displaying a name for a character {1}. For more information, please see "
+ CLDRURLS.LOCALE_PATTERN
+ ".\n"
+ "^//ldml/localeDisplayNames/measurementSystemNames/measurementSystemName\\[@type=\"([^\"]*)\"]"
+ RegexLookup.SEPARATOR
+ "The name of the measurement system “{1}”. For more information, please see "
+ CLDRURLS.UNITS_MISC_HELP
+ ".\n"
+ "^//ldml/posix/messages/(no|yes)str"
+ RegexLookup.SEPARATOR
+ "The word for “{1}”, lowercased, plus any abbreviations separated by a colon. For more information, see "
+ CLDRURLS.UNITS_MISC_HELP
+ ".\n"
+ "^//ldml/localeDisplayNames/annotationPatterns/annotationPattern[@type=\"([^\"]*)\"]"
+ RegexLookup.SEPARATOR
+ "The pattern to be used when displaying a {1}. For more information, please see "
+ CLDRURLS.LOCALE_PATTERN
+ ".\n"
+ "^//ldml/characters/stopwords/stopwordList\\[@type=\"([^\"]*)\"]"
+ RegexLookup.SEPARATOR
+ "The words that should be ignored in sorting in your language. For more information, see "
+ CLDRURLS.UNITS_MISC_HELP
+ ".\n"
+ "^//ldml/dates/timeZoneNames/zone\\[@type=\"([^\"]*)\"]/([^/]*)/(.*)"
+ RegexLookup.SEPARATOR
+ "Override for the $3-$2 timezone name for $1. For more information, see "
+ CLDRURLS.TZ_CITY_NAMES
+ ".\n"
+ "^//ldml/typographicNames/axisName[@type=\"([^\"]*)\"]"
+ RegexLookup.SEPARATOR
+ "A label for a typographic design axis, such as “Width” or “Weight”. For more information, see "
+ CLDRURLS.TYPOGRAPHIC_NAMES
+ ".\n"
+ "^//ldml/typographicNames/styleName[@type=\"([^\"]*)\"][@subtype=\"([^\"]*)\"]"
+ RegexLookup.SEPARATOR
+ "A label for a typographic style, such as “Narrow” or “Semibold”. For more information, see "
+ CLDRURLS.TYPOGRAPHIC_NAMES
+ ".\n"
+ "^//ldml/typographicNames/featureName[@type=\"([^\"]*)\"]"
+ RegexLookup.SEPARATOR
+ "A label for a typographic feature, such as “Small Capitals”. For more information, see "
+ CLDRURLS.TYPOGRAPHIC_NAMES
+ ".\n"
+ "^//ldml/characterLabels/characterLabelPattern\\[@type=\"([^\"]*)\"]\\[@count=\"([^\"]*)\"]"
+ RegexLookup.SEPARATOR
+ "A label for a set of characters that has a numeric placeholder, such as “1 Stroke”, “2 Strokes”. For more information, see "
+ CLDRURLS.CHARACTER_LABELS
+ ".\n"
+ "^//ldml/characterLabels/characterLabelPattern\\[@type=\"([^\"]*)\"]"
+ RegexLookup.SEPARATOR
+ "A modifier composed with a label for a set of characters. For more information, see "
+ CLDRURLS.CHARACTER_LABELS
+ ".\n"
+ "^//ldml/characterLabels/characterLabel\\[@type=\"([^\"]*)\"]"
+ RegexLookup.SEPARATOR
+ "A label for a set of characters. For more information, see "
+ CLDRURLS.CHARACTER_LABELS
+ ".\n"
+ "^//ldml/annotations/annotation\\[@cp=\"([^\"]*)\"]\\[@type=\"tts\"]"
+ RegexLookup.SEPARATOR
+ "A name for a character or sequence. For more information, see "
+ CLDRURLS.SHORT_CHARACTER_NAMES
+ ".\n"
+ "^//ldml/annotations/annotation\\[@cp=\"([^\"]*)\"]"
+ RegexLookup.SEPARATOR
+ "A set of keywords for a character or sequence. For more information, see "
+ CLDRURLS.SHORT_CHARACTER_NAMES
+ ".\n";
/** shim for real class */
private static final class RegexLookup {
public static final String SEPARATOR = ";";
}
/** shim for real class */
private static final class CLDRURLS {
public static final String GENERAL_HELP_URL = "https://cldr.unicode.org/translation/";
public static final String ADMIN_HELP_URL =
"https://cldr.unicode.org/index/survey-tool/survey-tool-administration";
public static final String CAPITALIZATION_URL =
"https://cldr.unicode.org/translation/translation-guide-general/capitalization";
public static final String CHARACTERS_HELP = "https://cldr.unicode.org/translation/characters";
public static final String CHARACTER_LABELS =
"https://cldr.unicode.org/translation/characters/character-labels";
public static final String CHARTS_URL = "https://cldr.unicode.org/index/charts#TOC-Summary";
public static final String COMPOUND_UNITS_HELP =
"https://cldr.unicode.org/translation/units/unit-names-and-patterns#h.7kdholgw8hpx";
public static final String COUNTRY_NAMES =
"https://cldr.unicode.org/translation/displaynames/countryregion-territory-names";
public static final String CURRENCY_NAMES =
"https://cldr.unicode.org/translation/currency-names-and-symbols";
public static final String DATE_TIME_HELP =
"https://cldr.unicode.org/translation/date-time/date-time-names#h.ewzjebmpoi4k";
public static final String DATE_TIME_NAMES =
"https://cldr.unicode.org/translation/date-time/datetime-names";
public static final String DATE_TIME_NAMES_CYCLIC =
"https://cldr.unicode.org/translation/date-time/date-time-names#h.h0vy2eyzcj0n";
public static final String DATE_TIME_NAMES_FIELD =
"https://cldr.unicode.org/translation/date-time/date-time-names#h.8wfk3599ck9x";
public static final String DATE_TIME_NAMES_MONTH =
"https://cldr.unicode.org/translation/date-time/date-time-names#h.fww3pfyk0uwn";
public static final String DATE_TIME_NAMES_RELATIVE =
"https://cldr.unicode.org/translation/date-time/date-time-names#h.aevw0tiix80v";
public static final String DATE_TIME_PATTERNS =
"https://cldr.unicode.org/translation/date-time/date-time-patterns";
public static final String DATE_TIME_PATTERNS_URL =
"https://cldr.unicode.org/translation/date-time/date-time-patterns";
public static final String ERRORS_URL =
"https://cldr.unicode.org/translation/error-and-warning-codes";
public static final String EXEMPLAR_CHARACTERS =
"https://cldr.unicode.org/translation/core-data/exemplars";
public static final String GRAMMATICAL_INFLECTION =
"https://cldr.unicode.org/translation/grammatical-inflection";
public static final String KEY_NAMES =
"https://cldr.unicode.org/translation/displaynames/countryregion-territory-names#h.x27jspwj91af";
public static final String LANGUAGE_NAMES =
"https://cldr.unicode.org/translation/displaynames/languagelocale-names";
public static final String LISTS_HELP =
"https://cldr.unicode.org/translation/miscellaneous-displaying-lists";
public static final String LOCALE_PATTERN =
"https://cldr.unicode.org/translation/displaynames/languagelocale-name-patterns";
public static final String NUMBERING_SYSTEMS =
"https://cldr.unicode.org/translation/core-data/numbering-systems";
public static final String NUMBERS_HELP =
"https://cldr.unicode.org/translation/currency-names-and-symbols";
public static final String NUMBERS_PLURAL =
"https://cldr.unicode.org/translation/number-currency-formats/number-and-currency-patterns#h.mnb2fmj0pt72";
public static final String NUMBERS_SHORT =
"https://cldr.unicode.org/translation/number-currency-formats/number-and-currency-patterns#h.eradhhuxzqqz";
public static final String NUMBER_PATTERNS =
"https://cldr.unicode.org/translation/number-currency-formats/number-and-currency-patterns#h.j899g3kk2p1z";
public static final String PARSE_LENIENT =
"https://cldr.unicode.org/translation/core-data/characters#h.j3x0cwalqgqt";
public static final String PERSON_NAME_FORMATS =
"https://cldr.unicode.org/translation/miscellaneous-person-name-formats";
public static final String PLURALS_HELP =
"https://cldr.unicode.org/translation/getting-started/plurals";
public static final String PLURALS_HELP_MINIMAL =
"https://cldr.unicode.org/translation/getting-started/plurals#h.pnla5cp3nl4l";
public static final String SCRIPT_NAMES =
"https://cldr.unicode.org/translation/displaynames/script-names";
public static final String SHORT_CHARACTER_NAMES =
"https://cldr.unicode.org/translation/characters/short-names-and-keywords#h.4a8wthj27m74";
public static final String TRANSFORMS_HELP = "https://cldr.unicode.org/translation/transforms";
public static final String TYPOGRAPHIC_NAMES =
"https://cldr.unicode.org/translation/characters/typographic-names";
public static final String TZ_CITY_NAMES =
"https://cldr.unicode.org/translation/time-zones-and-city-names";
public static final String UNITS_HELP = "https://cldr.unicode.org/translation/units";
/*
* TODO: UNITS_MISC_HELP, formerly "https://cldr.unicode.org/translation/units-1/misc",
* now temporarily (?) the same as UNITS_HELP until a distinct URL is identified
* Reference: https://unicode-org.atlassian.net/browse/CLDR-15080
*/
public static final String UNITS_MISC_HELP = UNITS_HELP;
public static final String PRIORITY_SUMMARY_HELP_URL =
"https://cldr.unicode.org/translation/getting-started/vetting-view#TOC-Priority-Items";
public static final String UPDATING_CURRENCY_CODES =
"https://cldr.unicode.org/development/updating-codes/update-currency-codes"; }
}
@srl295
Copy link
Author

srl295 commented Jul 19, 2023

it SEEMS that multiple java versions including OpenJDK 20 IBM Temurin, etc - when run via VS Code - give a failure here.

$ /usr/bin/env /usr/local/Cellar/openjdk/20/libexec/openjdk.jdk/Contents/Home/bin/java --enable-preview -XX:+ShowCodeDetailsInExceptionMessages -cp /Users/srl295/Library/Application\ Support/Code\ -\ Insiders/User/workspaceStorage/46ef4d40faad428b6f6672e69cb90835/redhat.java/jdt_ws/jdt.ls-java-project/bin TestSanity 
Exception in thread "main" java.lang.RuntimeException: Dup line: ^//ldml/characters/exemplarCharacters\[@type="([^"]*)"];Defines the set of characters used in your language for the “{1}” category.  You may not edit or vote on this item at this time. Before filing any tickets to request changes, be sure to read https://cldr.unicode.org/translation/core-data/exemplars.
        at TestSanity.assertTrue(TestSanity.java:28)
        at TestSanity.sanityTest(TestSanity.java:41)
        at TestSanity.main(TestSanity.java:33)

But, I can't repro from the command line.

If you look at the source there's no such duplicate line.

In the middle of the long appended string is:

+ String.format("Defines the set of characters used in your language. _Blah._\n")

If you change this to just:

+("Defines the set of characters used in your language. _Blah._\n")

… the test passes. Should be identical.

But as noted, I can't consistently get the test to fail from the CLI.

@srl295
Copy link
Author

srl295 commented Jul 19, 2023

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment