From c32f5d7d5ae3cd75d165d277af41b63bb01d410f Mon Sep 17 00:00:00 2001 From: Chris Pyle Date: Thu, 4 Jul 2024 11:07:33 -0400 Subject: [PATCH 1/3] CLDR-17566 initial text and md files --- .../alternate-time-formats.txt | 13 + .../TEMP-TEXT-FILES/bcp-47-changes-draft.txt | 152 ++++++++ .../TEMP-TEXT-FILES/bcp47-syntax-mapping.txt | 53 +++ .../bcp47-validation-and-canonicalization.txt | 113 ++++++ .../bidi-handling-of-structured-text.txt | 172 +++++++++ .../alternate-time-formats.md | 31 ++ .../design-proposals/bcp-47-changes-draft.md | 212 +++++++++++ .../design-proposals/bcp47-syntax-mapping.md | 218 +++++++++++ .../bcp47-validation-and-canonicalization.md | 148 +++++++ .../bidi-handling-of-structured-text.md | 360 ++++++++++++++++++ docs/site/images/design-proposals/st1.jpg | Bin 0 -> 6378 bytes docs/site/images/design-proposals/st2.jpg | Bin 0 -> 3639 bytes docs/site/images/design-proposals/st3.jpg | Bin 0 -> 24104 bytes docs/site/images/design-proposals/st4.jpg | Bin 0 -> 80440 bytes docs/site/images/design-proposals/st5.jpg | Bin 0 -> 99281 bytes docs/site/images/design-proposals/st6.jpg | Bin 0 -> 113389 bytes 16 files changed, 1472 insertions(+) create mode 100644 docs/site/TEMP-TEXT-FILES/alternate-time-formats.txt create mode 100644 docs/site/TEMP-TEXT-FILES/bcp-47-changes-draft.txt create mode 100644 docs/site/TEMP-TEXT-FILES/bcp47-syntax-mapping.txt create mode 100644 docs/site/TEMP-TEXT-FILES/bcp47-validation-and-canonicalization.txt create mode 100644 docs/site/TEMP-TEXT-FILES/bidi-handling-of-structured-text.txt create mode 100644 docs/site/development/development-process/design-proposals/alternate-time-formats.md create mode 100644 docs/site/development/development-process/design-proposals/bcp-47-changes-draft.md create mode 100644 docs/site/development/development-process/design-proposals/bcp47-syntax-mapping.md create mode 100644 docs/site/development/development-process/design-proposals/bcp47-validation-and-canonicalization.md create mode 100644 docs/site/development/development-process/design-proposals/bidi-handling-of-structured-text.md create mode 100644 docs/site/images/design-proposals/st1.jpg create mode 100644 docs/site/images/design-proposals/st2.jpg create mode 100644 docs/site/images/design-proposals/st3.jpg create mode 100644 docs/site/images/design-proposals/st4.jpg create mode 100644 docs/site/images/design-proposals/st5.jpg create mode 100644 docs/site/images/design-proposals/st6.jpg diff --git a/docs/site/TEMP-TEXT-FILES/alternate-time-formats.txt b/docs/site/TEMP-TEXT-FILES/alternate-time-formats.txt new file mode 100644 index 00000000000..3dece9482fb --- /dev/null +++ b/docs/site/TEMP-TEXT-FILES/alternate-time-formats.txt @@ -0,0 +1,13 @@ +Alternate Time Formats +This design proposal is intended to solve the problem that sometimes the desired time separator for a pattern may vary depending on the numbering system used. Rather than adding an additional type of number symbol just for the time separator, a more generalized solution would be to expand the syntax for numbering system overrides in patterns, in order to allow a simple replacement of a literal in the pattern based on the numbering system. The following description of the numbering system override is from the current TR35: + +The numbers attribute is used to indicate that numeric quantities in the pattern are to be rendered using a numbering system other than then default numbering system defined for the given locale. The attribute can be in one of two forms. If the alternate numbering system is intended to apply to ALL numeric quantities in the pattern, then simply use the numbering system ID as found in Section C.13 Numbering Systems. To apply the alternate numbering system only to a single field, the syntax "=" can be used one or more times, separated by semicolons. +Examples: +dd/mm/yyyy + +dd/mm/yyyy + +dd/mm/yyyy + +Proposed Extension +In addition to the syntax, allow symbol or string replacements of the form "==" \ No newline at end of file diff --git a/docs/site/TEMP-TEXT-FILES/bcp-47-changes-draft.txt b/docs/site/TEMP-TEXT-FILES/bcp-47-changes-draft.txt new file mode 100644 index 00000000000..bc71f088972 --- /dev/null +++ b/docs/site/TEMP-TEXT-FILES/bcp-47-changes-draft.txt @@ -0,0 +1,152 @@ +BCP 47 Changes (DRAFT) +With the new release of the new version of BCP 47, 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 in the spec (and the orginal design proposal), but more changes need to be made. +Formula +We need to take another look at which languages we show in the survey tool for translation, because the new version is very large, around 7,000 languages. Showing all of those languages in the Survey tool would neither be good for the usability of the tool for most translators, nor for tool performance, so we need some formula for picking which languages to show by default. +For feedback on this document, please file a Reply under http://www.unicode.org/cldr/bugs/locale-bugs?findid=1977 . For discussion of issues, please send email to cldr-users@unicode.org . +Draft Formula +Notes +** qualified language: excluding collection (except for macrolanguages with predominant forms), ancient, historic, and extinct languages: see Scope and Types. Some could be added as exceptions as needed. +‡ minimal coverage - see Coverage Levels - at a non-draft level. +* 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. 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. +A. We show a language code X for translation if any of the following conditions are true: +X is a qualified language**, and has at least 100K speakers, and at least one of the following is true: +X is has official status* in any country +X exceeds a threshold population† of literate users worldwide: 10M +X exceeds a threshold population† in some country Z: 1M and 1/3 of Z's population†. +X has non-draft minimal language coverage‡ in CLDR itself. +Only for translation in locale Y: X is a qualified language** that already has a translation in CLDR data in Y. +X is an exception explicitly approved by the committee, either in root, or in some language Y. +Current examples: Latin, Sanskrit +If a translator finds that X is needed for translation in language Y, then a bug can be filed. If we find the volume is high, we may need to add is some way for a translator to add a language in the survey tool. +B. We show a script code S for translation if and only if it is one of the scripts used by one of the languages shown. +Please review the generated lists in Filtered Scripts and Languages. A spreadsheet with some details is on http://spreadsheets.google.com/pub?key=rORMJfeNEUR37PlS8HIa_rQ. 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: +need to add Norwegian [no], resolve tl vs fil, ... +Tokelau has no speakers (bug filed) +Survey Tool Changes +The above would only require a small tool change: the main change is that the approved list from #1 and #2 would be in CODE_FALLBACK, and nothing else would. Languages would get #3 cases by virtue of there being a translated tag already in the language, even if Root doesn't have anything (because it is not in CODE_FALLBACK). Thus if the locale doesn't already contain a translation for, say, Ancient Greek, it would not show up in the survey tool. +We would add the lists to the supplemental metadata for access by the tools. The Coverage tool and spec also need to be aligned with the above. +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 with an encompassed language that is a "predominant form", CLDR treats the predominant form and the macrolanguage as aliases. See Locale Field Definitions in the spec. We need to flesh that table out to include all of the macrolanguages that are in the Included Languages, 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 +These would also go into the element of the supplemental metadata. We may add more such aliases over time, as we find new predominant forms. Note that we still need to offer both aliases for translation in many cases. For example, we want to show both 'no' and 'nb'. +Lenient Parsing +There are many circumstances where we get less than perfect language identifiers coming in. I think we should have some guidelines as to how to do this. Here are the possibilities: +case / hyphen insensitivity +map valid non-canonical forms to their canonical equivalents (zh-cmn, cmn => zh) +map certain common invalid forms to their canonical equivalents: +UK => GB +eng => en // and other illegal 3-letter 639 codes that correspond to 2-letter codes +840 => US // other numeric region codes that correspond to 2-letter codes +map away extlangs. Formally, en-yue is valid (this slipped by us in doing BCP 47), and canonicalizes in BCP 47 to yue, the same as zh-yue does. In any event, the simplest thing for us to do is if there is a syntactic extlang: +Verify that the base language and extlang are both valid language subtags +Remove the base language +This avoids having to store which languages are also extlangs, and what their prefixes are. +People have to do #1. We should recommend #2, and make it easy to support #3. +See demo at http://unicode.org/cldr/utility/languageid.jsp +Also, we should consider modifying the canonical form of language identifiers so as to have lowercase variants (with the exception of some set of grandfathered codes). The following are generated by GenerateMaximalLocales, plus 7 hand modifications for the last line. +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. +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: Unknown, Official Regional, Official Minority, De facto official, Official. +Included Script Names: 41+ +Arabic [Arab], Armenian [Armn] +Bengali [Beng] +Cyrillic [Cyrl] +Devanagari [Deva] +Ethiopic [Ethi] +Georgian [Geor], Greek [Grek], Gujarati [Gujr], Gurmukhi [Guru] +Hebrew [Hebr], Han [Hani] +Simplified Han [Hans], Traditional Han [Hant], Bopomofo [Bopo] +Japanese [Jpan] +Hiragana [Hira], Katakana [Kana] +Kannada [Knda], Khmer [Khmr], Korean [Kore] +Hangul [Hang] +Lao [Laoo], Latin [Latn] +Malayalam [Mlym], Mongolian [Mong], Myanmar [Mymr] +Oriya [Orya] +Sinhala [Sinh] +Tamil [Taml], Telugu [Telu], Thaana [Thaa], Thai [Thai], Tibetan [Tibt] +Special codes: +Common [Zyyy], Symbols [Zsym], Unwritten [Zxxx], Unknown or Invalid Script [Zzzz] +Braille [Brai] +Possibly also in the future: +Tifinagh [Tfng], Yi [Yiii], +Unified Canadian Aboriginal Syllabics [Cans], +Excluded Script Names: +Avestan [Avst] +Balinese [Bali], Batak [Batk], Blissymbols [Blis], Book Pahlavi [Phlv], Brahmi [Brah], Buginese [Bugi], Buhid [Buhd] +Carian [Cari], Chakma [Cakm], Cham, Cherokee [Cher], Cirth [Cirt], Coptic [Copt], Cypriot [Cprt] +Deseret [Dsrt] +Eastern Syriac [Syrn], Egyptian demotic [Egyd], Egyptian hieratic [Egyh], Egyptian hieroglyphs [Egyp], Estrangelo Syriac [Syre] +Fraktur Latin [Latf] +Gaelic Latin [Latg], Georgian Khutsuri [Geok], Glagolitic [Glag], Gothic [Goth] +Hanunoo [Hano] +Imperial Aramaic [Armi], Indus [Inds], Inherited [Qaai], Inscriptional Pahlavi [Phli], Inscriptional Parthian [Prti] +Javanese [Java] +Kaithi [Kthi], Katakana or Hiragana [Hrkt], Kayah Li [Kali], Kharoshthi [Khar] +Lanna [Lana], Lepcha [Lepc], Limbu [Limb], Linear A [Lina], Linear B [Linb], Lisu, Lycian [Lyci], Lydian [Lydi] +Mandaean [Mand], Manichaean [Mani], Mathematical Notation [Zmth], Mayan hieroglyphs [Maya], Meitei Mayek [Mtei], Meroitic [Mero], Moon +N’Ko [Nkoo], New Tai Lue [Talu], Nkgb +Ogham [Ogam], Ol Chiki [Olck], Old Church Slavonic Cyrillic [Cyrs], Old Hungarian [Hung], Old Italic [Ital], Old Permic [Perm], Old Persian [Xpeo], Orkhon [Orkh], Osmanya [Osma] +Pahawh Hmong [Hmng], Phags-pa [Phag], Phoenician [Phnx], Pollard Phonetic [Plrd], Psalter Pahlavi [Phlp] +Rejang [Rjng], Rongorongo [Roro], Runic [Runr] +Samaritan [Samr], Sarati [Sara], Saurashtra [Saur], Shavian [Shaw], SignWriting [Sgnw], Sumero-Akkadian Cuneiform [Xsux], Sundanese [Sund], Syloti Nagri [Sylo], Syriac [Syrc] +Tagalog [Tglg], Tagbanwa [Tagb], Tai Le [Tale], Tai Viet [Tavt], Tengwar [Teng], Tifinagh [Tfng] +Ugaritic [Ugar] +Vai [Vaii], Visible Speech [Visp] +Western Syriac [Syrj] +Yi [Yiii] +Inherited [Zinh] +Included Languages: 202 +Abkhazian [ab]-OR, Adyghe [ady]-OR, Afrikaans [af]-O, Akan [ak]-U, Albanian [sq]-O, Amharic [am]-O, Arabic [ar]-O, Armenian [hy]-O, Assamese [as]-O, Asturian [ast]-OR, Avaric [av]-OR, Awadhi [awa]-U, Aymara [ay]-O, Azerbaijani [az]-O +Bambara [bm]-U, Bashkir [ba]-OR, Basque [eu]-OR, Belarusian [be]-O, Bengali [bn]-O, Bhojpuri [bho]-U, Bislama [bi]-O, Bosnian [bs]-O, Bulgarian [bg]-O, Burmese [my]-O +Catalan [ca]-O, Cebuano [ceb]-OR, Chamorro [ch]-O, Chechen [ce]-OR, Chinese [zh]-O, Chuukese [chk]-O, Croatian [hr]-O, Czech [cs]-O +Danish [da]-O, Divehi [dv]-O, Dutch [nl]-O, Dzongkha [dz]-O +Efik [efi]-O, English [en]-O, Erzya [myv]-OR, Estonian [et]-O, Ewe [ee]-OR +Faroese [fo]-O, Fijian [fj]-O, Filipino [fil]-O, Finnish [fi]-O, French [fr]-O +Ga [gaa]-OR, Gagauz [gag]-OR, Galician [gl]-OR, Georgian [ka]-O, German [de]-O, Gilbertese [gil]-O, Greek [el]-O, Guarani [gn]-O, Gujarati [gu]-O +Haitian [ht]-O, Hausa [ha]-O, Hawaiian [haw]-OR, Hebrew [he]-O, Hiligaynon [hil]-OR, Hindi [hi]-O, Hiri Motu [ho]-O, Hungarian [hu]-O +Icelandic [is]-O, Igbo [ig]-O, Iloko [ilo]-OR, Indonesian [id]-O, Ingush [inh]-OR, Inuktitut [iu]-OR, Irish [ga]-O, Italian [it]-O +Japanese [ja]-O, Javanese [jv]-U +Kabardian [kbd]-OR, Kalaallisut [kl]-O, Kannada [kn]-O, Karachay-Balkar [krc]-OR, Kashmiri [ks]-O, Kazakh [kk]-O, Khasi [kha]-OR, Khmer [km]-O, Kinyarwanda [rw]-O, Kirghiz [ky]-O, Komi-Permyak [koi]-OR, Komi-Zyrian [kpv]-OR, Konkani [kok]-OR, Korean [ko]-O, Kosraean [kos]-O, Krio [kri]-U, Kumyk [kum]-OR, Kurdish [ku]-OR +Lahnda [lah]-U, Lak [lbe]-OR, Lao [lo]-O, Latin [la]-DO, Latvian [lv]-O, Lezghian [lez]-OR, Lingala [ln]-O, Lithuanian [lt]-O, Luxembourgish [lb]-O +Macedonian [mk]-O, Madurese [mad]-U, Maguindanao [mdh]-OR, Maithili [mai]-OR, Malagasy [mg]-O, Malay [ms]-O, Malayalam [ml]-O, Maltese [mt]-O, Maore Comorian [swb]-O, Maori [mi]-O, Marathi [mr]-O, Marshallese [mh]-O, Moksha [mdf]-OR, Mongolian [mn]-O, Mossi [mos]-U +Nauru [na]-O, Nepali [ne]-O, Niuean [niu]-O, Northeastern Thai [tts]-U, Northern Sami [se]-OR, Northern Sotho [nso]-O, Norwegian Bokmål [nb]-O, Norwegian Nynorsk [nn]-O, Nyanja [ny]-O +Oriya [or]-O, Oromo [om]-U, Ossetic [os]-OR +Palauan [pau]-O, Pangasinan [pag]-OR, Papiamento [pap]-DO, Pashto [ps]-O, Persian [fa]-O, Plains Cree [crk]-OR, Pohnpeian [pon]-O, Polish [pl]-O, Portuguese [pt]-O, Punjabi [pa]-O +Quechua [qu]-O +Rhaeto-Romance [rm]-O, Romanian [ro]-O, Rundi [rn]-O, Russian [ru]-O +Samoan [sm]-O, Sango [sg]-O, Sanskrit [sa]-O, Santali [sat]-OR, Scottish Gaelic [gd]-OR, Serbian [sr]-O, Shona [sn]-U, Sindhi [sd]-O, Sinhala [si]-O, Slovak [sk]-O, Slovenian [sl]-O, Somali [so]-O, Southern Sotho [st]-O, Spanish [es]-O, Sundanese [su]-O, Swahili [sw]-O, Swati [ss]-O, Swedish [sv]-O, Swiss German [gsw]-U +Tagalog [tl]-OR, Tahitian [ty]-O, Tajik [tg]-O, Tamil [ta]-O, Tatar [tt]-OR, Tausug [tsg]-OR, Telugu [te]-O, Tetum [tet]-O, Thai [th]-O, Tibetan [bo]-OR, Tigrinya [ti]-DO, Tok Pisin [tpi]-O, Tokelau [tkl]-O, Tonga [to]-O, Tsonga [ts]-O, Tswana [tn]-O, Turkish [tr]-O, Turkmen [tk]-O, Tuvalu [tvl]-O, Tuvinian [tyv]-OR, Twi [tw]-OR +Udmurt [udm]-OR, Uighur [ug]-OR, Ukrainian [uk]-O, Ulithian [uli]-O, Unknown or Invalid Language [und]-S, Urdu [ur]-O, Uzbek [uz]-O +Venda [ve]-O, Vietnamese [vi]-O +Waray [war]-OR, Welsh [cy]-OR, Western Frisian [fy]-OR, Wolof [wo]-O, Woods Cree [cwd]-OR +Xhosa [xh]-O +Yakut [sah]-OR, Yapese [yap]-O, Yoruba [yo]-O +Zhuang [za]-OR, Zulu [zu]-O +Excluded Languages: 299 +Achinese [ace]-U, Acoli [ach]-U, Adangme [ada]-U, Afar [aa]-U, Afrihili [afh]-U, Afro-Asiatic Language [afa]-U, Ainu [ain]-U, Akkadian [akk]-U, Aleut [ale]-U, Algonquian Language [alg]-U, Altaic Language [tut]-U, Ancient Egyptian [egy]-U, Ancient Greek [grc]-U, Angika [anp]-U, Apache Language [apa]-U, Aragonese [an]-U, Aramaic [arc]-U, Arapaho [arp]-U, Araucanian [arn]-U, Arawak [arw]-U, Aromanian [rup]-U, Artificial Language [art]-U, Athapascan Language [ath]-U, Atsam [cch]-U, Australian Language [aus]-U, Austronesian Language [map]-U, Avestan [ae]-U +Balinese [ban]-U, Baltic Language [bat]-U, Baluchi [bal]-U, Bamileke Language [bai]-U, Banda [bad]-U, Bantu [bnt]-U, Basa [bas]-U, Batak [btk]-U, Beja [bej]-U, Bemba [bem]-U, Berber [ber]-U, Bihari [bh]-U, Bikol [bik]-U, Bini [bin]-U, Blin [byn]-U, Blissymbols [zbl]-U, Braj [bra]-U, Breton [br]-U, Buginese [bug]-U, Buriat [bua]-U +Caddo [cad]-U, Carib [car]-U, Caucasian Language [cau]-U, Celtic Language [cel]-U, Central American Indian Language [cai]-U, Chagatai [chg]-U, Chamic Language [cmc]-U, Cherokee [chr]-U, Cheyenne [chy]-U, Chibcha [chb]-U, Chinook Jargon [chn]-U, Chipewyan [chp]-U, Choctaw [cho]-U, Church Slavic [cu]-U, Chuvash [cv]-U, Classical Newari [nwc]-U, Classical Syriac [syc]-U, Coptic [cop]-U, Cornish [kw]-U, Corsican [co]-U, Cree [cr]-U, Creek [mus]-U, Creole or Pidgin [crp]-U, Crimean Turkish [crh]-U, Cushitic Language [cus]-U +Dakota [dak]-U, Dargwa [dar]-U, Dayak [day]-U, Delaware [del]-U, Dinka [din]-U, Dogri [doi]-U, Dogrib [dgr]-U, Dravidian Language [dra]-U, Duala [dua]-U, Dyula [dyu]-U +Eastern Frisian [frs]-U, Ekajuk [eka]-U, Elamite [elx]-U, English-based Creole or Pidgin [cpe]-U, Esperanto [eo]-U, Ewondo [ewo]-U +Fang [fan]-U, Fanti [fat]-U, Finno-Ugrian Language [fiu]-U, Fon [fon]-U, French-based Creole or Pidgin [cpf]-U, Friulian [fur]-U, Fulah [ff]-U +Ganda [lg]-U, Gayo [gay]-U, Gbaya [gba]-U, Geez [gez]-U, Germanic Language [gem]-U, Gondi [gon]-U, Gorontalo [gor]-U, Gothic [got]-U, Grebo [grb]-U, Gwichʼin [gwi]-U +Haida [hai]-U, Herero [hz]-U, Himachali [him]-U, Hittite [hit]-U, Hmong [hmn]-U, Hupa [hup]-U +Iban [iba]-U, Ido [io]-U, Ijo [ijo]-U, Inari Sami [smn]-U, Indic Language [inc]-U, Indo-European Language [ine]-U, Interlingua [ia]-U, Interlingue [ie]-U, Inupiaq [ik]-U, Iranian Language [ira]-U, Iroquoian Language [iro]-U +Jju [kaj]-U, Judeo-Arabic [jrb]-U, Judeo-Persian [jpr]-U +Kabyle [kab]-U, Kachin [kac]-U, Kalmyk [xal]-U, Kamba [kam]-U, Kanuri [kr]-U, Kara-Kalpak [kaa]-U, Karelian [krl]-U, Karen [kar]-U, Kashubian [csb]-U, Kawi [kaw]-U, Khoisan Language [khi]-U, Khotanese [kho]-U, Kikuyu [ki]-U, Kimbundu [kmb]-U, Klingon [tlh]-U, Komi [kv]-U, Kongo [kg]-U, Koro [kfo]-U, Kpelle [kpe]-U, Kru [kro]-U, Kuanyama [kj]-U, Kurukh [kru]-U, Kutenai [kut]-U +Ladino [lad]-U, Lamba [lam]-U, Limburgish [li]-U, Lojban [jbo]-U, Low German [nds]-U, Lower Sorbian [dsb]-U, Lozi [loz]-U, Luba-Katanga [lu]-U, Luba-Lulua [lua]-U, Luiseno [lui]-U, Lule Sami [smj]-U, Lunda [lun]-U, Luo [luo]-U, Lushai [lus]-U +Magahi [mag]-U, Makasar [mak]-U, Manchu [mnc]-U, Mandar [mdr]-U, Mandingo [man]-U, Manipuri [mni]-U, Manobo Language [mno]-U, Manx [gv]-U, Mari [chm]-U, Marwari [mwr]-U, Masai [mas]-U, Mayan Language [myn]-U, Mende [men]-U, Micmac [mic]-U, Middle Dutch [dum]-U, Middle English [enm]-U, Middle French [frm]-U, Middle High German [gmh]-U, Middle Irish [mga]-U, Minangkabau [min]-U, Mirandese [mwl]-U, Miscellaneous Language [mis]-S, Mohawk [moh]-U, Mon-Khmer Language [mkh]-U, Mongo [lol]-U, Multiple Languages [mul]-S, Munda Language [mun]-U +N’Ko [nqo]-U, Nahuatl [nah]-U, Navajo [nv]-U, Ndonga [ng]-U, Neapolitan [nap]-U, Newari [new]-U, Nias [nia]-U, Niger-Kordofanian Language [nic]-U, Nilo-Saharan Language [ssa]-U, No linguistic content [zxx]-S, Nogai [nog]-U, North American Indian Language [nai]-U, North Ndebele [nd]-U, Northern Frisian [frr]-U, Norwegian [no]-U, Nubian Language [nub]-U, Nyamwezi [nym]-U, Nyankole [nyn]-U, Nyasa Tonga [tog]-U, Nyoro [nyo]-U, Nzima [nzi]-U +Occitan [oc]-U, Ojibwa [oj]-U, Old English [ang]-U, Old French [fro]-U, Old High German [goh]-U, Old Irish [sga]-U, Old Norse [non]-U, Old Persian [peo]-U, Old Provençal [pro]-U, Osage [osa]-U, Otomian Language [oto]-U, Ottoman Turkish [ota]-U +Pahlavi [pal]-U, Pali [pi]-U, Pampanga [pam]-U, Papuan Language [paa]-U, Philippine Language [phi]-U, Phoenician [phn]-U, Portuguese-based Creole or Pidgin [cpp]-U, Prakrit Language [pra]-U +Rajasthani [raj]-U, Rapanui [rap]-U, Rarotongan [rar]-U, Romance Language [roa]-U, Romany [rom]-U, Root [root]-U +Salishan Language [sal]-U, Samaritan Aramaic [sam]-U, Sami Language [smi]-U, Sandawe [sad]-U, Sardinian [sc]-U, Sasak [sas]-U, Scots [sco]-U, Selkup [sel]-U, Semitic Language [sem]-U, Serer [srr]-U, Shan [shn]-U, Sichuan Yi [ii]-U, Sicilian [scn]-U, Sidamo [sid]-U, Sign Language [sgn]-U, Siksika [bla]-U, Sino-Tibetan Language [sit]-U, Siouan Language [sio]-U, Skolt Sami [sms]-U, Slave [den]-U, Slavic Language [sla]-U, Sogdien [sog]-U, Songhai [son]-U, Soninke [snk]-U, Sorbian Language [wen]-U, South American Indian Language [sai]-U, South Ndebele [nr]-U, Southern Altai [alt]-U, Southern Sami [sma]-U, Sranan Tongo [srn]-U, Sukuma [suk]-U, Sumerian [sux]-U, Susu [sus]-U, Syriac [syr]-U +Tai Language [tai]-U, Tamashek [tmh]-U, Tereno [ter]-U, Tigre [tig]-U, Timne [tem]-U, Tiv [tiv]-U, Tlingit [tli]-U, Tsimshian [tsi]-U, Tumbuka [tum]-U, Tupi Language [tup]-U, Tyap [kcg]-U +Ugaritic [uga]-U, Umbundu [umb]-U, Upper Sorbian [hsb]-U +Vai [vai]-U, Volapük [vo]-U, Votic [vot]-U +Wakashan Language [wak]-U, Walamo [wal]-U, Walloon [wa]-U, Washo [was]-U +Yao [yao]-U, Yiddish [yi]-U, Yupik Language [ypk]-U +Zande [znd]-U, Zapotec [zap]-U, Zaza [zza]-U, Zenaga [zen]-U, Zuni [zun]-U \ No newline at end of file diff --git a/docs/site/TEMP-TEXT-FILES/bcp47-syntax-mapping.txt b/docs/site/TEMP-TEXT-FILES/bcp47-syntax-mapping.txt new file mode 100644 index 00000000000..75532fd4f5f --- /dev/null +++ b/docs/site/TEMP-TEXT-FILES/bcp47-syntax-mapping.txt @@ -0,0 +1,53 @@ +BCP47 Syntax Mapping +In the current LDML specification, a Unicode Locale Identifier consists from is composed of a Unicode Language Identifier plus optional locale extensions. Unicode Language Identifier is fully compatible with BCP47 language tag, but the syntax of locale extensions ("@" key "=" type (";" key "=" type)* ) are not. The LDML is trying to define systematical mapping, but the current definition may truncate (and or remove "-" in some type values) key or type value to 8 characters because of the BCP47 language subtag's syntax restriction. The current definition utilizes BCP47 private use features, but we want to make locale extensions formal (writing a new RFC to reserve a singleton letter for the usage), so we can avoid any conflicts with other private use values and also allow software developers to write a parser for Unicode locale extensions confidently. +BCP 47 is undergoing a revision which should be done soon: +Current version (4646) +Latest draft of next version +Once we define formal representation of Unicode locale extensions in BCP47 syntax, we actually no longer have any good reasons to use @key1=type1;key2=type2... syntax for Unicode Locale Identifier other than backward compatibility reasons. This document proposes that we retire the proprietary syntax and fully migrate to the new syntax fully supported by BCP47 language tag. +There are several options for representing keyword key/type pairs in BCP47 syntax. Examples in following proposal assume a letter "u" is reserved for the Unicode locale extensions; however we could go for any of the possible extensions: [0-9 a-w y z]. +The table below shows the locale extension keys/values currently defined by the LDML specification. +Key/Type Definitions +Collation Parameters +1. Proposed BCP47 subtag syntax +This document propose the syntax described by the BNF below. +locale-extensions = locale-singleton "-" extension *("-" extension) +extension = key "-" type +locale-singleton = "u" +key = 2alphanum +type = 3*8alphanum +alphanum = (ALPHA / DIGIT) +Example: +en-US-u-ca-islamicc-co-phonebk +this corresponds to the former syntax +en-US@calendar=islamic-civil;collation=phonebook +2. Keys +Key names and only key names are always of length=2, and types (values) are always greater than 2. This proposal defines new canonical key names below. +The motivation is reduction of string size, and making sure that keys and values don't overlap syntactically. +3. Types +3.1 Collation +3.1.1 Collation (co) types +3.1.2 Collation Strength (ks) types +3.1.3 Collation Alternate (ka) types +Current +non-ignorable +shifted +Proposed +noignore +shifted +3.1.4 Collation Backwards (kb) / Normalization (kk) / Case Level (kc) / Hiragana Quaternary (kh) / Numeric (kn) types +Current +yes +no +Proposed +true +false +3.1.5 Collation Case First (kf) types +3.1.6 Collation Variable Top (kv) type +The variable top parameter is specified by a code point in the format uXXuYYYY. No changes are required. +3.2 Calendar (ca) +3.3 Currency (cu) types +ISO4217 code (3-letter alpha) is used for currency. No changes required. +3.4 Number System (nu) types +The current CVS snapshot implementation uses CSS3 names. This proposal changes all of type names to script code with one exception (arabext). +3.5 Time Zone (tz) types +CLDR uses Olson tzids. These IDs are usually made from +"/"+ and relatively long. To satisfy the syntax requirement discussed in this document, we need to map these IDs to relatively short IDs uniquely. The UN LOCODE is designed to assign unique location code and it satisfies most of the requirement. A LOCODE consists from 2 letter ISO country code and 3 letter location code. This proproposal suggest that a 5 letter LOCODE is used as a short time zone ID if examplar city has a exact match in LOCODE repertoire. Some Olson tzids do not have direct mapping in LOCODE. In this case, we assign our own codes to them, but using 3-4/6-8 letter code to distinguish them from LOCODE. For Olson tzid Etc/GMT*, this proposal suggest "UTC" + ["E" | "W"] + nn (hour offset), for example, UTCE01 means 1 hour east from UTC (Etc/GMT-1). The proposed short ID list is attached in this document. \ No newline at end of file diff --git a/docs/site/TEMP-TEXT-FILES/bcp47-validation-and-canonicalization.txt b/docs/site/TEMP-TEXT-FILES/bcp47-validation-and-canonicalization.txt new file mode 100644 index 00000000000..a9a065a83ea --- /dev/null +++ b/docs/site/TEMP-TEXT-FILES/bcp47-validation-and-canonicalization.txt @@ -0,0 +1,113 @@ +BCP47 Validation and Canonicalization +The proposal is to add two tables of precomputed values to CLDR for each release, plus a table of language code mappings. +Validation Data +Language subtag. These can be 2-letter, 3-letter, or registered (>3 letter). We were looking at validation of 7,000 base language entries and Markus had an idea. Algorithmically map the two-letter codes onto values from 0..675, and the three letter codes onto 676..18251 (just over 14 bits). +The set of all valid language subtags can be put into a bit-set using 2,282 bytes. That allows for fast validation with a small table. Registered codes would just use an exception table. +An alternative mapping would be 26*26*27, eg +"xy" => (x-0x61)*26*27 + (y-0x61)*27 +"xyz" => (x-0x61)*26*27 + (y-0x61)*26 + (z-0x60) +However, it is better to have the two letter codes as smaller numbers, for compression, since they occur far more often. +Region subtag. One could do the same for region codes, with two-letter codes from 0..675, and then 3-digit codes from 675 to 1,675 (about 10.7 bits). A bitset that can cover all values is a 210-byte table. +Script subtag. John Cowan suggested that except for Teng/Tfng, the second letter of the script code is redundant, so you can special-case those two, remove the second letter, and use the same algorithm as for ISO 639-2. However, we can't expect that the JAC would follow any particular restrictions, and the set of scripts is still a relatively small number, so this probably isn't worth it. +Note: The generation of a table is simply a convenience, since it can be computed from the IANA registry, so it may not be worth doing as a part of CLDR, but we can suggest it as an implementation technique. +Canonicalization Data +We also provide data for validation and canonicalization. The basic canonicalization is as per BCP47, with the following additions: +We canonicalize the case, with variants getting uppercase, so en_foobar => en_FOOBAR +We alphabetize the variants so that irrelevant differences in order don't cause problems, so en-FOOBAR-ABCDE => en_ABCDE_FOOBAR +Note: the uppercasing of variants is for compatibility, since the basis for the CLDR work predated BCP47. +Data for doing the preferred value mapping is in the supplemental data, extracted from the IANA registry. +We also provide data for a lenient canonicalization, which involves the following additional steps: +maps the 3-letter language subtags that have 2-letter equivalents into those 2-letter equivalents; so eng-US => en_US +maps the 3-digit region codes that have 2-letter equivalents into those 2-letter equivalents; so eng-840 => en_US +combines identical extensions; en-a-foo-a-fii => en_a_foo_fii +The data for #2 are in http://unicode.org/cldr/data/common/supplemental/supplementalData.xml, in codeMappings/territoryCodes. However, we need an extra table for doing #1, the language code mappings. Suggest adding: + + +... +Sample Structure + + +-2122061011208687, e00d48015863b67, 15fb9fb2095c00, 340400f7818068d, +-2b07ebe0bd4e300, 100086b25d7fffc, 43fff001538f3c40, -4044cc58020eaf00, +4085570410419a, 18ffffffc04002, 2eea2e908400418, 6260008c6, +-33d4000000000000, 10000, 0, 0, +0, 80 + + +91019c747263433, 1c68108800045364, 4443028094090c84, -7ffffbe3baa63970, +-3ff1e7af28980bf0, 61204489a16d0e6d, 10000003024040, -648bb808222ebe40, +1001044202044053, 4100000020000400, -1220200fbffdfc00, -5010004244000101, +-78c6890a8c3e0081, -fc408f0000001, -200169dfafa301, -880800009, +-8171c0000001, -4187fd4fbb1, -2000000800011, 9fe75970f1b42bd, +1490f9feddf20051, -114007e, -2800000008080001, -80280000001, +-40180000001, -400000000010003, -c0000200000001, -1000000d0041, +-20000080000041, -1200000208000001, -42000002000005, 7fffffffffefefff, +-3bfc2522b0640841, 4124082843c19cf, -d00447fffbbb00, 488349bd64542b49, +-3f182aaabe898841, -7a20060100c8ec8f, -400043effff79ae, -3878c1e88b08201, +8005b0008100ffd, 2000040030000000, -301210082002fde7, -3eee729ffdfffbc, +665df000000227bd, -4200010e261ad97, c100860c01149fc, 75689565b65c5500, +20003efedb, -3fe966da82589400, 7f7ffff07a540, 460801000, +a12510714b, 600000490100000, 4440000100000001, 4000010048010000, +5100000042880000, 4f553243564102dd, 800001cdc2bd5, -6e8fbffffffffffc, +a798218157d9013, 4000000824000000, 4001020000000, 39abfeb000004, +40000000, 4400020000, 5a88110000000020, 6042000000000000, +500108000408a, 400631080, 4081003f50300400, 13b33be00000000, +1100800, -5000000000000000, 283cedffffffffff, 3c51fcf24dfffc0a, +-4daba593a4fdff00, 409403cff84f039, -774ab6e1cfff5fef, -20000069208824fd, +-c3fddefefff7ff9, 40444f850ffd4, 7f41be8d6fffdff0, 2397b2000000da23, +fe7ffff00084050, 800000008104180, 11c941, 5feb408040040100, +-3fbfbeeffffbff36, -7198804000f9fffa, 1100036edb9f051, -77d596afbc000000, +-2001daefbfffbe, 40050809053, 10000, -7ebb71a93fd5f000, +78047c0208, 844785244050cc0, 1885000000000204, 11d1350ee8cd1001, +833eb5906691, 4100000001040052, 74481a71dd649964, 800008001000fb9, +10002010045400, -60a140ff7f9ff7fc, 1040c00000698843, 1a2dd20200, +-20feffbffffbfee0, 400000000013959, 2486290f00000401, -7fffbb9fff5fefd3, +68000c02000000, -370ffffffffff80, 10000080215e, 1000011000000, +-21c2801000, -110008000001, -1, -224000004003, +-1801, -200002000000001, -231, -401001, +-2000100001, -10000000001, -4000000000000001, -7fa6743002322029, +-7ff8000000ff800e, 72e6061b3dc3000, -460ffddbbc083001, -c0000da80802f1a, +47fffff7851ef2f, -560aabffffffdfe8, 3d05184100ed9d98, -7a72efbfeff88001, +204100000004, -1010248847ff5e, -1000000000001, -80001, +7dffffff7fffffff, -100000008000009, -40000421, -80000080002803, +-10000400001, 7efbfffdf7ffffff, -1, -800000011, +-1000080020003001, 27ef77ffffeffbe9, -2800000020fb7e0, -98611d000800002, +-13642a901081, -820a02001000001, -1aa3ff8bbfbae5e0, -2a4a3bc0002225d6, +1170004203fffbff, -1db71a9a7df, 400220005450540d, 6010041040810696, +5605100000000000, 200106000001040, 64b67f9b19201180, -462b32512a8ff6c0, +421500406204837, -3efa4067cac00000, 3113f7df46c98, 900000000, +400100100a000, -3045824002201, -5a2004f9e7bebbd5, 7251425410002047, +200003fefbff1edf, -482004483e11f390, -20a0300038a02081, 7c00100107ff445e, +-479faa0062208009, 30000003dbd77f5e, 3010000400042704, -fff7ffe70, +-1, -1, -1, -1, +-1, -1, -1, 7bdeffffffffffff, +140c1085d13ee57e, 800117fa2, bffffef00, 3b53000000800002, +16241100000010e, 5001a3831002010, 81183010, -780efd5ed8010201, +20800052d, 2000009020010400, 319c5f61004, 254010, +-2040fffffffebe0, -230a120c00000001, 400b7fffffa7bfb, -400000a1250228ef, +-800e840e9000201, -4004010081100801, 757bf7efdffdfffd, -20823e08f7e981, +-a8e000010400001, -19de7efa010f, 17d467d07159f159, -40000081080e7d6, +-90240402202001, -3e00fd67bfe000b, 7fdfffdffef6f1f, -412043c4fae3b, +-1000080080000081, -7fd010022808241, -860000001003a5, -f98420400200001, +67dc75ddbf8ff531, 201ca06beab91, 4480404023, 4000400000406d44, +80050060130000, -3effffbffdc00000, 6f14f040f49c5588, 400a0a51641, +-40823fffffff7ffc, 4a0044108581fe, 1000224012300, 1000000000, +936fbf1010800, 0, 2d80c, 2c286c00000000a0, +18df010000000, 25003f79fff0120, a00000, 90003100040000, +8300000100002, 100000, -1000000000000000, 1011ae7ecffffff, +5ef18d040092000, 1105404141000010, 4057a3ff6040, 19f7d9755450080b, +46757f0435578cc7, 72c0000000000011, 5480360501fdae, 10000001ba388b1, +2100300000044240, 157ff95f00000010, 40117a78d630944, 100000041e984a40, +-56fcf17ff8bfdf7e, -1000ffffffede, -7cf0000100bac7a9, 45bd55042f54c019, +-460e973bb3f7ffff, 1ad243d7fed7d37f, 80248550118440, 242000008000281, +-7f9fe01900020010, -1d4eafefee9fff58, 2442980000000013, 3bfbfe100020, +-bb61abaf5a2bf00, 3d42051b3668ffdd, -3ffffff7fc2cf27c, 200506e80c110b44, +200007dbbf7f002, 5b2801, -2000fffeefdf00, -7ffffff7eedfdfad, +20c10000, 310084280230030, -53b3cffffffdbdcc, 67ffffff004c8023, +-3f8af7bfefef, 10138104000010ff, 3081676e140121c0, 1000000100, +80400a242200000 + + +Here is the data that they replace: + + \ No newline at end of file diff --git a/docs/site/TEMP-TEXT-FILES/bidi-handling-of-structured-text.txt b/docs/site/TEMP-TEXT-FILES/bidi-handling-of-structured-text.txt new file mode 100644 index 00000000000..28667c0a0d2 --- /dev/null +++ b/docs/site/TEMP-TEXT-FILES/bidi-handling-of-structured-text.txt @@ -0,0 +1,172 @@ +BIDI handling of Structured Text +Author: Tomer Mahlin - IBM Bidi Competency Center - e-mail comments to John Emmons - emmo@us.ibm.com +0. Terminology +Structured text (aka complex expressions) - text having implied or/and inherent structure such as: URL,file path, email, Java code, XML, regular expression, date/time stamp etc. +This term is abbreviated as STT. +1. The problem +When structured text includes characters from languages with bidirectional script default display system on the logical platform does not preserve the structure and as a result the text on the screen becomes incomprehensible. The problem is with display only and background text related processing is not affected. However, the way the text is displayed on the screen makes it very hard to work with it (in the best case). +2. What solution would we like to have ? +In most general terms the solution should allow: +Preparation of string for display which will assure that its structure is preserved, This entails development of flexible set of parsers which will analyze the structure of text and will inject UCC (Unicode Control Characters) when appropriate. The framework should be extendable in order to allow adding new parsers (either custom or built-in) in the future. +Taking into consideration user preferences (default rules for STT handling): Arabic vs. Hebrew. Users in different geographies are accustomed to different rules for STT display. For example math formulas are always displayed from left-to-right for Hebrew users, while for Arabic users, they may be displayed from right-to-left. +Ability to leverage default rules for STT handling (defined in CLDR) and also customize them. +3. What this solution will NOT address (static vs. dynamic context) +Static context is context in which text can't be directly edited by the end user (e.g. label, not editable cell of grid, tree branch label etc.). +Here is an example for file path: +Dynamic context is context in which text can be directly edited (e.g. input field, editable area, editable cell of grid etc.) . +Here is an example for file path: +Due to the ICU/CLDR nature (stand alone library without any widgetry) the solution will relate to static cases of text only. +Namely, the solution will prepare the text to be displayed in the static context. +Addressing dynamic context is beyond what ICU can provide. The main reason is heterogeneous environment in which ICU can be deployed and +different approaches for resolution of problem for STT. For example, even for Java world the difference between SWT and Swing will pose a challenge. For .Net world (in which ICU4C can be used), addressing the problem is beyond the scope of ICU since it will necessitate invocation of .Net level API. +4. How the solution will be used (scope, applicability for ICU itself) ? +In overwhelming majority of cases the deployers leveraging ICU will call an API similar to the following one: +prepareForDisplay( inputText, STT_Type, additional_parameters) +This API will inject UCC ( Unicode Control Characters ) into inputText according to STT_Type and additional_parameters and will return the result ready for display. +inputText - structured text subject to display +STT_Type: file path, URL, email, Java etc. +additional_parameters - external parameters which might affect STT processing and which are not directly available to ICU (e.g. GUI direction etc.) +The result string will be embedded by the caller into graphical element which will render it on the screen. +ICU users will be able to either accept default STT rules (associated with locale and defined originally in CLDR) or customize them (via convenient API +allowing setting / getting values for different aspects of such rules). +ICU users will be able to extend the list of provided out of the box parsers in order to address additional types of STT. +One additional usage of this functionality is in serialization / formatting dates / time stamps provided by ICU itself. +Date / time stamp is considered structured text as well. +To assure backward compatibility ICU should not inject UCC into date / time stamps by default. However, it can provide either flag or additional +signature of the same function (responsible for date / time stamps generation) which will prepare them for display (by injection of UCC appropriately). +This will assure proper display of date / time stamps generated by ICU. For example in Eclipse: +5. Factors affecting the display of STT +There are some different types of factors that can effect the proper display of structured text. Some types of STT such as URLs or file paths, have a strong LTR directionality associated with them, while others have different display semantics depending the directionality of the underlying GUI, or upon the content of the text itself. This is further complicated by the fact that the culturally accepted preferences for proper display of STT differ, even between Hebrew and Arabic users. Thus, we need to be able to define these rules within the CLDR that describe these and be able to use that data in order to be able to format STT properly in a given context. +The following table summarizes the recognized preferences for the proper display of STT in Hebrew and Arabic: +6. Proposed additions to CLDR +The following schema is proposed for addition into CLDR, most likely as sub-elements under the category. This structure defines the sets of rules in CLDR necessary to describe proper display behavior for various types of structured text: + + + + + + + + + + + + + + + + + + + +7. Sample data for various types of STT: +a). STT with strong directionality, such as filepath, would have the following rules in root: + + + +LTR +LEFT +LEFT + + + + +LTR +RIGHT +LEFT + + + +b). The "message" type has some variations based on the content, but the rules remain constant across locales, as follows: +root.xml: + + + +LTR +LEFT +LEFT + + +RTL +LEFT +RIGHT + + +RTL +LEFT +RIGHT + + + + +LTR +RIGHT +LEFT + + +RTL +RIGHT +RIGHT + + +RTL +RIGHT +RIGHT + + + +c). Rules for date and time stamps differ between Hebrew and Arabic, so we would have: +In he.xml: + + + +RTL +LEFT +RIGHT + + +RTL +LEFT +RIGHT + + +LTR +LEFT +LEFT + + + + +RTL +RIGHT +RIGHT + + +RTL +RIGHT +RIGHT + + +LTR +RIGHT +LEFT + + + +The following rules in ar.xml ( Arabic ): + + + +LTR +LEFT +LEFT + + + + +RTL +RIGHT +RIGHT + + + \ No newline at end of file diff --git a/docs/site/development/development-process/design-proposals/alternate-time-formats.md b/docs/site/development/development-process/design-proposals/alternate-time-formats.md new file mode 100644 index 00000000000..cfc288219d1 --- /dev/null +++ b/docs/site/development/development-process/design-proposals/alternate-time-formats.md @@ -0,0 +1,31 @@ +--- +title: Alternate Time Formats +--- + +# Alternate Time Formats + +This design proposal is intended to solve the problem that sometimes the desired time separator for a pattern may vary depending on the numbering system used. Rather than adding an additional type of number symbol just for the time separator, a more generalized solution would be to expand the syntax for numbering system overrides in patterns, in order to allow a simple replacement of a literal in the pattern based on the numbering system. The following description of the numbering system override is from the current TR35: + +\ + +The numbers attribute is used to indicate that numeric quantities in the pattern are to be rendered using a numbering system other than then default numbering system defined for the given locale. The attribute can be in one of two forms. If the alternate numbering system is intended to apply to ALL numeric quantities in the pattern, then simply use the numbering system ID as found in Section C.13 [Numbering Systems](http://www.unicode.org/reports/tr35/#Numbering_Systems). To apply the alternate numbering system only to a single field, the syntax "\=\" can be used one or more times, separated by semicolons. + +Examples: + +\dd/mm/yyyy\ + +\ + +\dd/mm/yyyy\ + +\ + +\dd/mm/yyyy\ + +\ + +**Proposed Extension** + +In addition to the syntax, allow symbol or string replacements of the form "\=\=\" + +![Unicode copyright](https://www.unicode.org/img/hb_notice.gif) \ No newline at end of file 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 new file mode 100644 index 00000000000..8d8e9d9ec40 --- /dev/null +++ b/docs/site/development/development-process/design-proposals/bcp-47-changes-draft.md @@ -0,0 +1,212 @@ +--- +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. + +## Formula + +We need to take another look at which languages we show in the survey tool for translation, because the new version is [very large](http://tools.ietf.org/html/draft-ietf-ltru-4645bis), around 7,000 languages. Showing all of those languages in the Survey tool would neither be good for the usability of the tool for most translators, nor for tool performance, so we need some formula for picking which languages to show by default. + +For feedback on this document, please file a Reply under [http://www.unicode.org/cldr/bugs/locale-bugs?findid=1977](http://www.unicode.org/cldr/bugs/locale-bugs?findid=1977). For discussion of issues, please send email to [cldr-users@unicode.org](mailto:cldr-users@unicode.org). + +**Draft Formula** + +A. We show a language code X for translation if any of the following conditions are true: + +1. X is a qualified language\*\*, **and** has at least **100K** speakers, **and** at least one of the following is true: + 1. X is has official status\* in any country + 2. X exceeds a threshold population† of literate users worldwide: **10M** + 3. X exceeds a threshold population† in some country Z: **1M** ***and*** **1/3** of Z's population†. +2. X has ***non-draft*** minimal language coverage‡ in CLDR itself. +3. *Only for translation in locale Y:* X is a qualified language\*\* that already has a translation in CLDR data in Y. +4. X is an exception explicitly approved by the committee, either in root, or in some language Y. + 1. Current examples: Latin, Sanskrit + +If a translator finds that X is needed for translation in language Y, then a bug can be filed. If we find the volume is high, we may need to add is some way for a translator to add a language in the survey tool. + +B. We show a script code S for translation if and only if it is one of the scripts used by one of the languages shown. + +**Notes** + +\*\* qualified language: excluding collection (except for macrolanguages with predominant forms), ancient, historic, and extinct languages: see [Scope](http://www.sil.org/iso639-3/scope.asp) and [Types](http://www.sil.org/iso639-3/types.asp). Some could be added as exceptions as needed. + +‡ minimal coverage - see [Coverage Levels](http://www.unicode.org/reports/tr35/#Coverage_Levels) - at a non-draft level. + +\* *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). + + +**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). + +Known issues: + +- need to add Norwegian [no], resolve tl vs fil, ... +- Tokelau has no speakers (bug filed) + +### Survey Tool Changes + +The above would only require a small tool change: the main change is that the approved list from #1 and #2 would be in CODE\_FALLBACK, and nothing else would. Languages would get #3 cases by virtue of there being a translated tag already in the language, even if Root doesn't have anything (because it is not in CODE\_FALLBACK). Thus if the locale doesn't already contain a translation for, say, Ancient Greek, it would not show up in the survey tool. + +We would add the lists to the supplemental metadata for access by the tools. The Coverage tool and spec also need to be aligned with the above. + +## 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. + +Macrolanguage Table + +| Macrolanguage | Encompassed Language | Comments | +|---|---|---| +| Arabic ' ar ' | Standard Arabic ' arb ' | | +| Konkani ' kok ' | Konkani ( individual language) ' knn ' | | +| Malay ' ms ' | Standard Malay ' zsm ' | | +| Swahili ' sw ' | Swahili ( individual language) ' swh ' | | +| Uzbek ' uz ' | Northern Uzbek ' uzn ' | | +| Chinese ' zh ' | Mandarin Chinese ' cmn ' | | +| Norwegian ' no ' | Norwegian Bokmal ' nob ' = nb | To regularize, we may want to switch in CLDR from nb as the 'norm' to no. | +| Serbo-croatian ' sh ' | | *This is a complex situation, and we'll probably leave as is.* | +| Kurdish 'ku' | Northern Kurdish 'kmr'? | We probably want to change the default content locale to ku-Latn | +| Akan ' ak ' | Twi ' tw ' and Fanti ' fat' | This appears to be a mistake in ISO 639. See: ISO 636 Deprecation Requests . | +| Persian fas (fa) | Western Farsi pes and prs Dari | This appears to be a mistake in ISO 639. See: ISO 636 Deprecation Requests . | + +These would also go into the \ element of the supplemental metadata. We may add more such aliases over time, as we find new predominant forms. Note that we still need to offer both aliases for translation in many cases. For example, we want to show both 'no' and 'nb'. + +## Lenient Parsing + +There are many circumstances where we get less than perfect language identifiers coming in. I think we should have some guidelines as to how to do this. Here are the possibilities: + +1. case / hyphen insensitivity +2. map valid non-canonical forms to their canonical equivalents (zh-cmn, cmn => zh) +3. map certain common invalid forms to their canonical equivalents: + 1. UK => GB + 2. eng => en // and other illegal 3-letter 639 codes that correspond to 2-letter codes + 3. 840 => US // other numeric region codes that correspond to 2-letter codes +4. map away extlangs. Formally, en-yue is valid (this slipped by us in doing BCP 47), and canonicalizes in BCP 47 to yue, the same as zh-yue does. In any event, the simplest thing for us to do is if there is a syntactic extlang: + 1. Verify that the base language and extlang are both valid language subtags + 2. Remove the base language + 3. This avoids having to store which languages are also extlangs, and what their prefixes are. + +People have to do #1. We should recommend #2, and make it easy to support #3. See demo at [http://unicode.org/cldr/utility/languageid.jsp](http://unicode.org/cldr/utility/languageid.jsp) + +Also, we should consider modifying the canonical form of language identifiers so as to have lowercase variants (with the exception of some set of grandfathered codes). The following are generated by GenerateMaximalLocales, plus 7 hand modifications for the last line. + +## 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 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. + +### Included Script Names: 41+ + +- Arabic [Arab], Armenian [Armn] +- Bengali [Beng] +- Cyrillic [Cyrl] +- Devanagari [Deva] +- Ethiopic [Ethi] +- Georgian [Geor], Greek [Grek], Gujarati [Gujr], Gurmukhi [Guru] +- Hebrew [Hebr], Han [Hani] + - Simplified Han [Hans], Traditional Han [Hant], Bopomofo [Bopo] +- Japanese [Jpan] + - Hiragana [Hira], Katakana [Kana] +- Kannada [Knda], Khmer [Khmr], Korean [Kore] + - Hangul [Hang] +- Lao [Laoo], Latin [Latn] +- Malayalam [Mlym], Mongolian [Mong], Myanmar [Mymr] +- Oriya [Orya] +- Sinhala [Sinh] +- Tamil [Taml], Telugu [Telu], Thaana [Thaa], Thai [Thai], Tibetan [Tibt] +- Special codes: + - Common [Zyyy], Symbols [Zsym], Unwritten [Zxxx], Unknown or Invalid Script [Zzzz] + - Braille [Brai] +- *Possibly also in the future:* + - Tifinagh [Tfng], Yi [Yiii], + - Unified Canadian Aboriginal Syllabics [Cans], + +### Excluded Script Names: + +- Avestan [Avst] +- Balinese [Bali], Batak [Batk], Blissymbols [Blis], Book Pahlavi [Phlv], Brahmi [Brah], Buginese [Bugi], Buhid [Buhd] +- Carian [Cari], Chakma [Cakm], Cham, Cherokee [Cher], Cirth [Cirt], Coptic [Copt], Cypriot [Cprt] +- Deseret [Dsrt] +- Eastern Syriac [Syrn], Egyptian demotic [Egyd], Egyptian hieratic [Egyh], Egyptian hieroglyphs [Egyp], Estrangelo Syriac [Syre] +- Fraktur Latin [Latf] +- Gaelic Latin [Latg], Georgian Khutsuri [Geok], Glagolitic [Glag], Gothic [Goth] +- Hanunoo [Hano] +- Imperial Aramaic [Armi], Indus [Inds], Inherited [Qaai], Inscriptional Pahlavi [Phli], Inscriptional Parthian [Prti] +- Javanese [Java] +- Kaithi [Kthi], Katakana or Hiragana [Hrkt], Kayah Li [Kali], Kharoshthi [Khar] +- Lanna [Lana], Lepcha [Lepc], Limbu [Limb], Linear A [Lina], Linear B [Linb], Lisu, Lycian [Lyci], Lydian [Lydi] +- Mandaean [Mand], Manichaean [Mani], Mathematical Notation [Zmth], Mayan hieroglyphs [Maya], Meitei Mayek [Mtei], Meroitic [Mero], Moon +- N’Ko [Nkoo], New Tai Lue [Talu], Nkgb +- Ogham [Ogam], Ol Chiki [Olck], Old Church Slavonic Cyrillic [Cyrs], Old Hungarian [Hung], Old Italic [Ital], Old Permic [Perm], Old Persian [Xpeo], Orkhon [Orkh], Osmanya [Osma] +- Pahawh Hmong [Hmng], Phags-pa [Phag], Phoenician [Phnx], Pollard Phonetic [Plrd], Psalter Pahlavi [Phlp] +- Rejang [Rjng], Rongorongo [Roro], Runic [Runr] +- Samaritan [Samr], Sarati [Sara], Saurashtra [Saur], Shavian [Shaw], SignWriting [Sgnw], Sumero-Akkadian Cuneiform [Xsux], Sundanese [Sund], Syloti Nagri [Sylo], Syriac [Syrc] +- Tagalog [Tglg], Tagbanwa [Tagb], Tai Le [Tale], Tai Viet [Tavt], Tengwar [Teng], Tifinagh [Tfng] +- Ugaritic [Ugar] +- Vai [Vaii], Visible Speech [Visp] +- Western Syriac [Syrj] +- Yi [Yiii] +- Inherited [Zinh] + +### Included Languages: 202 + +- Abkhazian [ab]-OR, Adyghe [ady]-OR, Afrikaans [af]-O, Akan [ak]-U, Albanian [sq]-O, Amharic [am]-O, Arabic [ar]-O, Armenian [hy]-O, Assamese [as]-O, Asturian [ast]-OR, Avaric [av]-OR, Awadhi [awa]-U, Aymara [ay]-O, Azerbaijani [az]-O +- Bambara [bm]-U, Bashkir [ba]-OR, Basque [eu]-OR, Belarusian [be]-O, Bengali [bn]-O, Bhojpuri [bho]-U, Bislama [bi]-O, Bosnian [bs]-O, Bulgarian [bg]-O, Burmese [my]-O +- Catalan [ca]-O, Cebuano [ceb]-OR, Chamorro [ch]-O, Chechen [ce]-OR, Chinese [zh]-O, Chuukese [chk]-O, Croatian [hr]-O, Czech [cs]-O +- Danish [da]-O, Divehi [dv]-O, Dutch [nl]-O, Dzongkha [dz]-O +- Efik [efi]-O, English [en]-O, Erzya [myv]-OR, Estonian [et]-O, Ewe [ee]-OR +- Faroese [fo]-O, Fijian [fj]-O, Filipino [fil]-O, Finnish [fi]-O, French [fr]-O +- Ga [gaa]-OR, Gagauz [gag]-OR, Galician [gl]-OR, Georgian [ka]-O, German [de]-O, Gilbertese [gil]-O, Greek [el]-O, Guarani [gn]-O, Gujarati [gu]-O +- Haitian [ht]-O, Hausa [ha]-O, Hawaiian [haw]-OR, Hebrew [he]-O, Hiligaynon [hil]-OR, Hindi [hi]-O, Hiri Motu [ho]-O, Hungarian [hu]-O +- Icelandic [is]-O, Igbo [ig]-O, Iloko [ilo]-OR, Indonesian [id]-O, Ingush [inh]-OR, Inuktitut [iu]-OR, Irish [ga]-O, Italian [it]-O +- Japanese [ja]-O, Javanese [jv]-U +- Kabardian [kbd]-OR, Kalaallisut [kl]-O, Kannada [kn]-O, Karachay-Balkar [krc]-OR, Kashmiri [ks]-O, Kazakh [kk]-O, Khasi [kha]-OR, Khmer [km]-O, Kinyarwanda [rw]-O, Kirghiz [ky]-O, Komi-Permyak [koi]-OR, Komi-Zyrian [kpv]-OR, Konkani [kok]-OR, Korean [ko]-O, Kosraean [kos]-O, Krio [kri]-U, Kumyk [kum]-OR, Kurdish [ku]-OR +- Lahnda [lah]-U, Lak [lbe]-OR, Lao [lo]-O, Latin [la]-DO, Latvian [lv]-O, Lezghian [lez]-OR, Lingala [ln]-O, Lithuanian [lt]-O, Luxembourgish [lb]-O +- Macedonian [mk]-O, Madurese [mad]-U, Maguindanao [mdh]-OR, Maithili [mai]-OR, Malagasy [mg]-O, Malay [ms]-O, Malayalam [ml]-O, Maltese [mt]-O, Maore Comorian [swb]-O, Maori [mi]-O, Marathi [mr]-O, Marshallese [mh]-O, Moksha [mdf]-OR, Mongolian [mn]-O, Mossi [mos]-U +- Nauru [na]-O, Nepali [ne]-O, Niuean [niu]-O, Northeastern Thai [tts]-U, Northern Sami [se]-OR, Northern Sotho [nso]-O, Norwegian Bokmål [nb]-O, Norwegian Nynorsk [nn]-O, Nyanja [ny]-O +- Oriya [or]-O, Oromo [om]-U, Ossetic [os]-OR +- Palauan [pau]-O, Pangasinan [pag]-OR, Papiamento [pap]-DO, Pashto [ps]-O, Persian [fa]-O, Plains Cree [crk]-OR, Pohnpeian [pon]-O, Polish [pl]-O, Portuguese [pt]-O, Punjabi [pa]-O +- Quechua [qu]-O +- Rhaeto-Romance [rm]-O, Romanian [ro]-O, Rundi [rn]-O, Russian [ru]-O +- Samoan [sm]-O, Sango [sg]-O, Sanskrit [sa]-O, Santali [sat]-OR, Scottish Gaelic [gd]-OR, Serbian [sr]-O, Shona [sn]-U, Sindhi [sd]-O, Sinhala [si]-O, Slovak [sk]-O, Slovenian [sl]-O, Somali [so]-O, Southern Sotho [st]-O, Spanish [es]-O, Sundanese [su]-O, Swahili [sw]-O, Swati [ss]-O, Swedish [sv]-O, Swiss German [gsw]-U +- Tagalog [tl]-OR, Tahitian [ty]-O, Tajik [tg]-O, Tamil [ta]-O, Tatar [tt]-OR, Tausug [tsg]-OR, Telugu [te]-O, Tetum [tet]-O, Thai [th]-O, Tibetan [bo]-OR, Tigrinya [ti]-DO, Tok Pisin [tpi]-O, Tokelau [tkl]-O, Tonga [to]-O, Tsonga [ts]-O, Tswana [tn]-O, Turkish [tr]-O, Turkmen [tk]-O, Tuvalu [tvl]-O, Tuvinian [tyv]-OR, Twi [tw]-OR +- Udmurt [udm]-OR, Uighur [ug]-OR, Ukrainian [uk]-O, Ulithian [uli]-O, Unknown or Invalid Language [und]-S, Urdu [ur]-O, Uzbek [uz]-O +- Venda [ve]-O, Vietnamese [vi]-O +- Waray [war]-OR, Welsh [cy]-OR, Western Frisian [fy]-OR, Wolof [wo]-O, Woods Cree [cwd]-OR +- Xhosa [xh]-O +- Yakut [sah]-OR, Yapese [yap]-O, Yoruba [yo]-O +- Zhuang [za]-OR, Zulu [zu]-O + +### Excluded Languages: 299 + +- Achinese [ace]-U, Acoli [ach]-U, Adangme [ada]-U, Afar [aa]-U, Afrihili [afh]-U, Afro-Asiatic Language [afa]-U, Ainu [ain]-U, Akkadian [akk]-U, Aleut [ale]-U, Algonquian Language [alg]-U, Altaic Language [tut]-U, Ancient Egyptian [egy]-U, Ancient Greek [grc]-U, Angika [anp]-U, Apache Language [apa]-U, Aragonese [an]-U, Aramaic [arc]-U, Arapaho [arp]-U, Araucanian [arn]-U, Arawak [arw]-U, Aromanian [rup]-U, Artificial Language [art]-U, Athapascan Language [ath]-U, Atsam [cch]-U, Australian Language [aus]-U, Austronesian Language [map]-U, Avestan [ae]-U +- Balinese [ban]-U, Baltic Language [bat]-U, Baluchi [bal]-U, Bamileke Language [bai]-U, Banda [bad]-U, Bantu [bnt]-U, Basa [bas]-U, Batak [btk]-U, Beja [bej]-U, Bemba [bem]-U, Berber [ber]-U, Bihari [bh]-U, Bikol [bik]-U, Bini [bin]-U, Blin [byn]-U, Blissymbols [zbl]-U, Braj [bra]-U, Breton [br]-U, Buginese [bug]-U, Buriat [bua]-U +- Caddo [cad]-U, Carib [car]-U, Caucasian Language [cau]-U, Celtic Language [cel]-U, Central American Indian Language [cai]-U, Chagatai [chg]-U, Chamic Language [cmc]-U, Cherokee [chr]-U, Cheyenne [chy]-U, Chibcha [chb]-U, Chinook Jargon [chn]-U, Chipewyan [chp]-U, Choctaw [cho]-U, Church Slavic [cu]-U, Chuvash [cv]-U, Classical Newari [nwc]-U, Classical Syriac [syc]-U, Coptic [cop]-U, Cornish [kw]-U, Corsican [co]-U, Cree [cr]-U, Creek [mus]-U, Creole or Pidgin [crp]-U, Crimean Turkish [crh]-U, Cushitic Language [cus]-U +- Dakota [dak]-U, Dargwa [dar]-U, Dayak [day]-U, Delaware [del]-U, Dinka [din]-U, Dogri [doi]-U, Dogrib [dgr]-U, Dravidian Language [dra]-U, Duala [dua]-U, Dyula [dyu]-U +- Eastern Frisian [frs]-U, Ekajuk [eka]-U, Elamite [elx]-U, English-based Creole or Pidgin [cpe]-U, Esperanto [eo]-U, Ewondo [ewo]-U +- Fang [fan]-U, Fanti [fat]-U, Finno-Ugrian Language [fiu]-U, Fon [fon]-U, French-based Creole or Pidgin [cpf]-U, Friulian [fur]-U, Fulah [ff]-U +- Ganda [lg]-U, Gayo [gay]-U, Gbaya [gba]-U, Geez [gez]-U, Germanic Language [gem]-U, Gondi [gon]-U, Gorontalo [gor]-U, Gothic [got]-U, Grebo [grb]-U, Gwichʼin [gwi]-U +- Haida [hai]-U, Herero [hz]-U, Himachali [him]-U, Hittite [hit]-U, Hmong [hmn]-U, Hupa [hup]-U +- Iban [iba]-U, Ido [io]-U, Ijo [ijo]-U, Inari Sami [smn]-U, Indic Language [inc]-U, Indo-European Language [ine]-U, Interlingua [ia]-U, Interlingue [ie]-U, Inupiaq [ik]-U, Iranian Language [ira]-U, Iroquoian Language [iro]-U +- Jju [kaj]-U, Judeo-Arabic [jrb]-U, Judeo-Persian [jpr]-U +- Kabyle [kab]-U, Kachin [kac]-U, Kalmyk [xal]-U, Kamba [kam]-U, Kanuri [kr]-U, Kara-Kalpak [kaa]-U, Karelian [krl]-U, Karen [kar]-U, Kashubian [csb]-U, Kawi [kaw]-U, Khoisan Language [khi]-U, Khotanese [kho]-U, Kikuyu [ki]-U, Kimbundu [kmb]-U, Klingon [tlh]-U, Komi [kv]-U, Kongo [kg]-U, Koro [kfo]-U, Kpelle [kpe]-U, Kru [kro]-U, Kuanyama [kj]-U, Kurukh [kru]-U, Kutenai [kut]-U +- Ladino [lad]-U, Lamba [lam]-U, Limburgish [li]-U, Lojban [jbo]-U, Low German [nds]-U, Lower Sorbian [dsb]-U, Lozi [loz]-U, Luba-Katanga [lu]-U, Luba-Lulua [lua]-U, Luiseno [lui]-U, Lule Sami [smj]-U, Lunda [lun]-U, Luo [luo]-U, Lushai [lus]-U +- Magahi [mag]-U, Makasar [mak]-U, Manchu [mnc]-U, Mandar [mdr]-U, Mandingo [man]-U, Manipuri [mni]-U, Manobo Language [mno]-U, Manx [gv]-U, Mari [chm]-U, Marwari [mwr]-U, Masai [mas]-U, Mayan Language [myn]-U, Mende [men]-U, Micmac [mic]-U, Middle Dutch [dum]-U, Middle English [enm]-U, Middle French [frm]-U, Middle High German [gmh]-U, Middle Irish [mga]-U, Minangkabau [min]-U, Mirandese [mwl]-U, Miscellaneous Language [mis]-S, Mohawk [moh]-U, Mon-Khmer Language [mkh]-U, Mongo [lol]-U, Multiple Languages [mul]-S, Munda Language [mun]-U +- N’Ko [nqo]-U, Nahuatl [nah]-U, Navajo [nv]-U, Ndonga [ng]-U, Neapolitan [nap]-U, Newari [new]-U, Nias [nia]-U, Niger-Kordofanian Language [nic]-U, Nilo-Saharan Language [ssa]-U, No linguistic content [zxx]-S, Nogai [nog]-U, North American Indian Language [nai]-U, North Ndebele [nd]-U, Northern Frisian [frr]-U, Norwegian [no]-U, Nubian Language [nub]-U, Nyamwezi [nym]-U, Nyankole [nyn]-U, Nyasa Tonga [tog]-U, Nyoro [nyo]-U, Nzima [nzi]-U +- Occitan [oc]-U, Ojibwa [oj]-U, Old English [ang]-U, Old French [fro]-U, Old High German [goh]-U, Old Irish [sga]-U, Old Norse [non]-U, Old Persian [peo]-U, Old Provençal [pro]-U, Osage [osa]-U, Otomian Language [oto]-U, Ottoman Turkish [ota]-U +- Pahlavi [pal]-U, Pali [pi]-U, Pampanga [pam]-U, Papuan Language [paa]-U, Philippine Language [phi]-U, Phoenician [phn]-U, Portuguese-based Creole or Pidgin [cpp]-U, Prakrit Language [pra]-U +- Rajasthani [raj]-U, Rapanui [rap]-U, Rarotongan [rar]-U, Romance Language [roa]-U, Romany [rom]-U, Root [root]-U +- Salishan Language [sal]-U, Samaritan Aramaic [sam]-U, Sami Language [smi]-U, Sandawe [sad]-U, Sardinian [sc]-U, Sasak [sas]-U, Scots [sco]-U, Selkup [sel]-U, Semitic Language [sem]-U, Serer [srr]-U, Shan [shn]-U, Sichuan Yi [ii]-U, Sicilian [scn]-U, Sidamo [sid]-U, Sign Language [sgn]-U, Siksika [bla]-U, Sino-Tibetan Language [sit]-U, Siouan Language [sio]-U, Skolt Sami [sms]-U, Slave [den]-U, Slavic Language [sla]-U, Sogdien [sog]-U, Songhai [son]-U, Soninke [snk]-U, Sorbian Language [wen]-U, South American Indian Language [sai]-U, South Ndebele [nr]-U, Southern Altai [alt]-U, Southern Sami [sma]-U, Sranan Tongo [srn]-U, Sukuma [suk]-U, Sumerian [sux]-U, Susu [sus]-U, Syriac [syr]-U +- Tai Language [tai]-U, Tamashek [tmh]-U, Tereno [ter]-U, Tigre [tig]-U, Timne [tem]-U, Tiv [tiv]-U, Tlingit [tli]-U, Tsimshian [tsi]-U, Tumbuka [tum]-U, Tupi Language [tup]-U, Tyap [kcg]-U +- Ugaritic [uga]-U, Umbundu [umb]-U, Upper Sorbian [hsb]-U +- Vai [vai]-U, Volapük [vo]-U, Votic [vot]-U +- Wakashan Language [wak]-U, Walamo [wal]-U, Walloon [wa]-U, Washo [was]-U +- Yao [yao]-U, Yiddish [yi]-U, Yupik Language [ypk]-U +- Zande [znd]-U, Zapotec [zap]-U, Zaza [zza]-U, Zenaga [zen]-U, Zuni [zun]-U + +![Unicode copyright](https://www.unicode.org/img/hb_notice.gif) \ No newline at end of file diff --git a/docs/site/development/development-process/design-proposals/bcp47-syntax-mapping.md b/docs/site/development/development-process/design-proposals/bcp47-syntax-mapping.md new file mode 100644 index 00000000000..d5381fa5f99 --- /dev/null +++ b/docs/site/development/development-process/design-proposals/bcp47-syntax-mapping.md @@ -0,0 +1,218 @@ +--- +title: BCP47 Syntax Mapping +--- + +# BCP47 Syntax Mapping + +In the current LDML specification, a Unicode Locale Identifier consists from is composed of a Unicode Language Identifier plus optional locale extensions. Unicode Language Identifier is fully compatible with BCP47 language tag, but the syntax of locale extensions ("@" key "=" type (";" key "=" type)\* ) are not. The LDML is trying to define systematical mapping, but the current definition may truncate (and or remove "-" in some type values) key or type value to 8 characters because of the BCP47 language subtag's syntax restriction. The current definition utilizes BCP47 private use features, but we want to make locale extensions formal (writing a new RFC to reserve a singleton letter for the usage), so we can avoid any conflicts with other private use values and also allow software developers to write a parser for Unicode locale extensions confidently. + +BCP 47 is undergoing a revision which should be done soon: + +- [Current version (4646)](http://tools.ietf.org/html/rfc4646) +- [Latest draft of next version](http://inter-locale.com/ID/draft-ietf-ltru-4646bis-21.html) + +Once we define formal representation of Unicode locale extensions in BCP47 syntax, we actually no longer have any good reasons to use @key1=type1;key2=type2... syntax for Unicode Locale Identifier other than backward compatibility reasons. This document proposes that we retire the proprietary syntax and fully migrate to the new syntax fully supported by BCP47 language tag. + +There are several options for representing keyword key/type pairs in BCP47 syntax. Examples in following proposal assume a letter "u" is reserved for the Unicode locale extensions; however we could go for any of the[possible extensions](http://inter-locale.com/ID/draft-ietf-ltru-4646bis-21.html#syntax): [0-9 a-w y z]. + +The table below shows the locale extension keys/values currently defined by the LDML specification. + +## Key/Type Definitions + +| key | type | Description | +|---|---|---| +| collation | standard | The default ordering for each language. For root it is [ [UCA](http://www.unicode.org/reports/tr35/#UCA) ] order; for each other locale it is the same as UCA ordering except for appropriate modifications to certain characters for that language. The following are additional choices for certain locales; they only have effect in those locales. | +| | phonebook | For a phonebook-style ordering (used in German). | +| | pinyin | Pinyin ordering for Latin and for CJK characters; that is, an ordering for CJK characters based on a character-by-character transliteration into a pinyin. (used in Chinese) | +| | traditional | For a traditional-style sort (as in Spanish) | +| | stroke | Pinyin ordering for Latin, stroke order for CJK characters (used in Chinese) | +| | direct | Hindi variant | +| | posix | A "C"-based locale. (no longer in CLDR data) | +| | big5han | Pinyin ordering for Latin, big5 charset ordering for CJK characters. (used in Chinese) | +| | gb2312han | Pinyin ordering for Latin, gb2312han charset ordering for CJK characters. (used in Chinese) | +| | unihan | Pinyin ordering for Latin, Unihan radical-stroke ordering for CJK characters. (used in Chinese) | +| calendar

(*For information on the calendar algorithms associated with the data used with the above types, see [ [Calendars](https://www.unicode.org/reports/tr35/#Calendars) ].*) | gregorian | (default) | +| | islamic

*alias: arabic* | Astronomical Arabic | +| | chinese | Traditional Chinese calendar | +| | islamic-civil

*alias: civil-arabic* | Civil (algorithmic) Arabic calendar | +| | hebrew | Traditional Hebrew Calendar | +| | japanese | Imperial Calendar (same as Gregorian except for the year, with one era for each Emperor) | +| | buddhist

*alias: thai-buddhist* | Thai Buddhist Calendar (same as Gregorian except for the year) | +| | persian | Persian Calendar | +| | coptic | Coptic Calendar | +| | ethiopic | Ethiopic Calendar | +| collation parameters:

  colStrength
  colAlternate
  colBackwards
  colNormalization
  colCaseLevel
  colCaseFirst,
  colHiraganaQuaternary
  colNumeric
  variableTop | *Associated values as defined in: 5.14.1 <[collation](http://www.unicode.org/reports/tr35/#Collation_Element)>* | Semantics as defined in: 5.14.1 <[collation](http://www.unicode.org/reports/tr35/#Collation_Element)> | +| currency

(also known as a Unicode currency code ) | *ISO 4217 code,*

*plus others in common use* | Currency value identified by ISO 4217 code, plus others in common use. Also uses XXX as *Unknown or Invalid Currency* .

See [Appendix K: Valid Attribute Values](http://www.unicode.org/reports/tr35/#Valid_Attribute_Values) and also [ [Data Formats](http://www.unicode.org/reports/tr35/#DataFormats) ] | +| time zone

(also known as a Unicode time zone code ) | *TZID, plus the value:*

*Etc/Unknown* | Identification for time zone according to the TZ Database, plus the value Etc/Unknown .

Unicode LDML supports all of the time zone IDs by mapping all equivalent time zone IDs to a canonical ID for translation. This canonical time zone ID is not the same as the zone.tab time zone ID found in [ [Olson](http://www.unicode.org/reports/tr35/#Olson) ].

For more information, see [Section 5.9.2 Time Zone Names](http://www.unicode.org/reports/tr35/#Timezone_Names) , [Appendix F: Date Format Patterns](http://www.unicode.org/reports/tr35/#Date_Format_Patterns) , and [Appendix J: Time Zone Display Names](http://www.unicode.org/reports/tr35/#Time_Zone_Fallback) . | + +### Collation Parameters + +| Attribute | Options | Basic Example | XML Example | Description | +|---|---|---|---|---| +| strength | primary (1)
secondary (2)
tertiary (3)
quaternary (4)
identical (5) | [strength 1] | strength = " primary " | Sets the default strength for comparison, as described in the UCA. | +| alternate | *non-ignorable shifted* | [alternate non-ignorable] | alternate = " non-ignorable " | Sets alternate handling for variable weights, as described in UCA | +| backwards | on
*off* | [backwards 2] | backwards = " on " | Sets the comparison for the second level to be backwards ("French"), as described in UCA | +| normalization | on
off | [normalization on] | normalization = " off " | If *on* , then the normal UCA algorithm is used. If *off* , then all strings that are in [ [FCD](http://www.unicode.org/reports/tr35/#FCD) ] will sort correctly, but others will not necessarily sort correctly. So should only be set *off* if the the strings to be compared are in FCD. | +| caseLevel | on
off | [caseLevel on] | caseLevel = " off " | If set to on, a level consisting only of case characteristics will be inserted in front of tertiary level. To ignore accents but take cases into account, set strength to primary and case level to on . | +| caseFirst | upper
lower
off | [caseFirst off] | caseFirst = " off " | If set to *upper* , causes upper case to sort before lower case. If set to *lower* , lower case will sort before upper case. Useful for locales that have already supported ordering but require different order of cases. Affects case and tertiary levels. | +| hiraganaQuaternary | on
off | [hiraganaQ on] | hiragana­Quaternary = " on " | Controls special treatment of Hiragana code points on quaternary level. If turned *on* , Hiragana codepoints will get lower values than all the other non-variable code points. The strength must be greater or equal than quaternary if you want this attribute to take effect. | +| numeric | on
off | [numeric on] | numeric = " on " | If set to *on* , any sequence of Decimal Digits (General_Category = Nd in the [ [UCD](http://www.unicode.org/reports/tr35/#UCD) ]) is sorted at a primary level with its numeric value. For example, "A-21" < "A-123". | +| variableTop | uXXuYYYY | & \u00XX\uYYYY < [variable top] | variableTop = "uXXuYYYY" | The parameter value is an encoded Unicode string, with code points in hex, leading zeros removed, and 'u' inserted between successive elements.

Sets the default value for the variable top. All the code points with primary strengths less than variable top will be considered variable, and thus affected by the alternate handling. | +| match-boundaries: | none whole-character whole-word | n/a | match-boundaries = "whole-word" | The meaning is according to the descriptions in UTS #10 [Searching](https://unicode.org/reports/tr10/#Searching) . | +| match-style | minimal medial maximal | n/a | match-style = "medial" | The meaning is according to the descriptions in UTS #10 [Searching](https://unicode.org/reports/tr10/#Searching) . | + +## 1. Proposed BCP47 subtag syntax + +This document propose the syntax described by the BNF below. + +locale-extensions = locale-singleton "-" extension \*("-" extension) + +extension = key "-" type + +locale-singleton = "u" + +key = 2alphanum + +type = 3\*8alphanum + +alphanum = (ALPHA / DIGIT) + +Example: + +en-US-u-ca-islamicc-co-phonebk + +this corresponds to the former syntax + +en-US@calendar=islamic-civil;collation=phonebook + +| Current | Proposed | +|---|---| +| collation | co | +| calendar | ca | +| currency | cu | +| numbers | nu | +| time zone | tz | +| colStrength | ks | +| colAlternate | ka | +| colBackwards | kb | +| colNormalization | kk | +| colCaseLevel | kc | +| colCaseFirst | kf | +| colHiraganaQuaternary | kh | +| colNumeric | kn | +| variableTop | kv | + +### 2. Keys + +Key names and only key names are always of length=2, and types (values) are always greater than 2. This proposal defines new canonical key names below. + +The motivation is reduction of string size, and making sure that keys and values don't overlap syntactically. + +### 3. Types + +3.1 Collation + +3.1.1 Collation (co) types + +| Current | Proposed | +|---|---| +| big5han | big5han | +| digits-after | **digitaft** | +| direct | direct | +| gb2312han | **gb2312** | +| phonebook | **phonebk** | +| pinyin | pinyin | +| reformed | reformed | +| standard | standard | +| stroke | stroke | +| traditional | **trad** | + +3.1.2 Collation Strength (ks) types + +| Current | Proposed | +|---|---| +| primary | level1 | +| secondary | level2 | +| tertiary | level3 | +| quarternary | level4 | +| identical | identic | + +3.1.3 Collation Alternate (ka) types + +| Current | Proposed | +|---|---| +| non-ignorable | **noignore** | +| secondary | level2 | +| shifted | shifted | + +3.1.4 Collation Backwards (kb) / Normalization (kk) / Case Level (kc) / Hiragana Quaternary (kh) / Numeric (kn) types + +| Current | Proposed | +|---|---| +| yes | **true** | +| no | **false** | + +3.1.5 Collation Case First (kf) types + +| Current | Proposed | +|---|---| +| upper | upper | +| lower | lower | +| no | **false** | + + +3.1.6 Collation Variable Top (kv) type + +The variable top parameter is specified by a code point in the format *uXXuYYYY*. No changes are required. + +3.2 Calendar (ca) + +| Current | Proposed | +|---|---| +| buddhist | buddhist | +| coptic | coptic | +| ethiopic | ethiopic | +| ethiopic-amete-alem | **ethiopaa** | +| chinese | chinese | +| gregorian | **gregory** | +| hebrew | hebrew | +| indian | indian | +| islamic | islamic | +| islamic-civil | **islamicc** | +| japanese | japanese | +| persian | presian | +| roc | roc | + +3.3 Currency (cu) types + +ISO4217 code (3-letter alpha) is used for currency. No changes required. + +3.4 Number System (nu) types + +The current CVS snapshot implementation uses CSS3 names. This proposal changes all of type names to script code with one exception (arabext). + +| Current (CVS snapshot) | Proposed | +|---|---| +| arabic-indic | arab | +| bengali | beng | +| cambodian | khmr | +| decimal | latn | +| devanagari | deva | +| gujarati | gujr | +| gurmukhi | guru | +| hebrew | hebr | +| kannada | knda | +| lao | laoo | +| malayalam | mlym | +| mongolian | mong | +| myanmar | mymr | +| oriya | orya | +| persian | arabext | +| telugu | telu | +| thai | thai | + +3.5 Time Zone (tz) types + +CLDR uses Olson tzids. These IDs are usually made from \+"/"+\ and relatively long. To satisfy the syntax requirement discussed in this document, we need to map these IDs to relatively short IDs uniquely. The UN LOCODE is designed to assign unique location code and it satisfies most of the requirement. A LOCODE consists from 2 letter ISO country code and 3 letter location code. This proproposal suggest that a 5 letter LOCODE is used as a short time zone ID if examplar city has a exact match in LOCODE repertoire. Some Olson tzids do not have direct mapping in LOCODE. In this case, we assign our own codes to them, but using 3-4/6-8 letter code to distinguish them from LOCODE. For Olson tzid Etc/GMT\*, this proposal suggest "UTC" + ["E" | "W"] + nn (hour offset), for example, UTCE01 means 1 hour east from UTC (Etc/GMT-1). The proposed short ID list is attached in this [document](https://drive.google.com/file/d/1O9B_hO6uD4m7dtb-hU9euBkgP8nQxJ9X/view?usp=sharing). + +![Unicode copyright](https://www.unicode.org/img/hb_notice.gif) \ No newline at end of file diff --git a/docs/site/development/development-process/design-proposals/bcp47-validation-and-canonicalization.md b/docs/site/development/development-process/design-proposals/bcp47-validation-and-canonicalization.md new file mode 100644 index 00000000000..62239abcbb1 --- /dev/null +++ b/docs/site/development/development-process/design-proposals/bcp47-validation-and-canonicalization.md @@ -0,0 +1,148 @@ +--- +title: BCP47 Validation and Canonicalization +--- + +# BCP47 Validation and Canonicalization + +The proposal is to add two tables of precomputed values to CLDR for each release, plus a table of language code mappings. + +## Validation Data + +**Language subtag.** These can be 2-letter, 3-letter, or registered (>3 letter). We were looking at validation of 7,000 base language entries and Markus had an idea. Algorithmically map the two-letter codes onto values from 0..675, and the three letter codes onto 676..18251 (just over 14 bits). + +The set of all valid language subtags can be put into a bit-set using 2,282 bytes. That allows for fast validation with a small table. Registered codes would just use an exception table. + +An alternative mapping would be 26\*26\*27, eg + +- "xy" => (x-0x61)\*26\*27 + (y-0x61)\*27 +- "xyz" => (x-0x61)\*26\*27 + (y-0x61)\*26 + (z-0x60) + +However, it is better to have the two letter codes as smaller numbers, for compression, since they occur far more often. + +**Region subtag.** One could do the same for region codes, with two-letter codes from 0..675, and then 3-digit codes from 675 to 1,675 (about 10.7 bits). A bitset that can cover all values is a 210-byte table. + +**Script subtag.** John Cowan suggested that except for Teng/Tfng, the second letter of the script code is redundant, so you can special-case those two, remove the second letter, and use the same algorithm as for ISO 639-2. However, we can't expect that the JAC would follow any particular restrictions, and the set of scripts is still a relatively small number, so this probably isn't worth it. + +Note: The generation of a table is simply a convenience, since it can be computed from the IANA registry, so it may not be worth doing as a part of CLDR, but we can suggest it as an implementation technique. + +## Canonicalization Data + +We also provide data for validation and canonicalization. The basic canonicalization is as per BCP47, with the following additions: + +1. We canonicalize the case, with variants getting uppercase, so en\_foobar => en\_FOOBAR +2. We alphabetize the variants so that irrelevant differences in order don't cause problems, so en-FOOBAR-ABCDE => en\_ABCDE\_FOOBAR + - Note: the uppercasing of variants is for compatibility, since the basis for the CLDR work predated BCP47. + +Data for doing the preferred value mapping is in the supplemental data, extracted from the IANA registry. + +We also provide data for a lenient canonicalization, which involves the following additional steps: + +1. maps the 3-letter language subtags that have 2-letter equivalents into those 2-letter equivalents; so eng-US => en\_US +2. maps the 3-digit region codes that have 2-letter equivalents into those 2-letter equivalents; so eng-840 => en\_US +3. combines identical extensions; en-a-foo-a-fii => en\_a\_foo\_fii + +The data for #2 are in http://unicode.org/cldr/data/common/supplemental/supplementalData.xml, in codeMappings/territoryCodes. However, we need an extra table for doing #1, the language code mappings. Suggest adding: + +\ + + \ + +... + +## Sample Structure + +\ + + \ + +  -2122061011208687, e00d48015863b67, 15fb9fb2095c00, 340400f7818068d,
+  -2b07ebe0bd4e300, 100086b25d7fffc, 43fff001538f3c40, -4044cc58020eaf00,
+  4085570410419a, 18ffffffc04002, 2eea2e908400418, 6260008c6,
+  -33d4000000000000, 10000, 0, 0,
+  0, 80
+ \
+ + \ + +  91019c747263433, 1c68108800045364, 4443028094090c84, -7ffffbe3baa63970,
+  -3ff1e7af28980bf0, 61204489a16d0e6d, 10000003024040, -648bb808222ebe40,
+  1001044202044053, 4100000020000400, -1220200fbffdfc00, -5010004244000101,
+  -78c6890a8c3e0081, -fc408f0000001, -200169dfafa301, -880800009,
+  -8171c0000001, -4187fd4fbb1, -2000000800011, 9fe75970f1b42bd,
+  1490f9feddf20051, -114007e, -2800000008080001, -80280000001,
+  -40180000001, -400000000010003, -c0000200000001, -1000000d0041,
+  -20000080000041, -1200000208000001, -42000002000005, 7fffffffffefefff,
+  -3bfc2522b0640841, 4124082843c19cf, -d00447fffbbb00, 488349bd64542b49,
+  -3f182aaabe898841, -7a20060100c8ec8f, -400043effff79ae, -3878c1e88b08201,
+  8005b0008100ffd, 2000040030000000, -301210082002fde7, -3eee729ffdfffbc,
+  665df000000227bd, -4200010e261ad97, c100860c01149fc, 75689565b65c5500,
+  20003efedb, -3fe966da82589400, 7f7ffff07a540, 460801000,
+  a12510714b, 600000490100000, 4440000100000001, 4000010048010000,
+  5100000042880000, 4f553243564102dd, 800001cdc2bd5, -6e8fbffffffffffc,
+  a798218157d9013, 4000000824000000, 4001020000000, 39abfeb000004,
+  40000000, 4400020000, 5a88110000000020, 6042000000000000,
+  500108000408a, 400631080, 4081003f50300400, 13b33be00000000,
+  1100800, -5000000000000000, 283cedffffffffff, 3c51fcf24dfffc0a,
+  -4daba593a4fdff00, 409403cff84f039, -774ab6e1cfff5fef, -20000069208824fd,
+  -c3fddefefff7ff9, 40444f850ffd4, 7f41be8d6fffdff0, 2397b2000000da23,
+  fe7ffff00084050, 800000008104180, 11c941, 5feb408040040100,
+  -3fbfbeeffffbff36, -7198804000f9fffa, 1100036edb9f051, -77d596afbc000000,
+  -2001daefbfffbe, 40050809053, 10000, -7ebb71a93fd5f000,
+  78047c0208, 844785244050cc0, 1885000000000204, 11d1350ee8cd1001,
+  833eb5906691, 4100000001040052, 74481a71dd649964, 800008001000fb9,
+  10002010045400, -60a140ff7f9ff7fc, 1040c00000698843, 1a2dd20200,
+  -20feffbffffbfee0, 400000000013959, 2486290f00000401, -7fffbb9fff5fefd3,
+  68000c02000000, -370ffffffffff80, 10000080215e, 1000011000000,
+  -21c2801000, -110008000001, -1, -224000004003,
+  -1801, -200002000000001, -231, -401001,
+  -2000100001, -10000000001, -4000000000000001, -7fa6743002322029,
+  -7ff8000000ff800e, 72e6061b3dc3000, -460ffddbbc083001, -c0000da80802f1a,
+  204100000004, -1010248847ff5e, -1000000000001, -80001,
+  7dffffff7fffffff, -100000008000009, -40000421, -80000080002803,
+  -10000400001, 7efbfffdf7ffffff, -1, -800000011,
+  -1000080020003001, 27ef77ffffeffbe9, -2800000020fb7e0, -98611d000800002,
+  -13642a901081, -820a02001000001, -1aa3ff8bbfbae5e0, -2a4a3bc0002225d6,
+  1170004203fffbff, -1db71a9a7df, 400220005450540d, 6010041040810696,
+  5605100000000000, 200106000001040, 64b67f9b19201180, -462b32512a8ff6c0,
+  421500406204837, -3efa4067cac00000, 3113f7df46c98, 900000000,
+  400100100a000, -3045824002201, -5a2004f9e7bebbd5, 7251425410002047,
+  200003fefbff1edf, -482004483e11f390, -20a0300038a02081, 7c00100107ff445e,
+  -479faa0062208009, 30000003dbd77f5e, 3010000400042704, -fff7ffe70,
+  -1, -1, -1, -1,
+  -1, -1, -1, 7bdeffffffffffff,
+  140c1085d13ee57e, 800117fa2, bffffef00, 3b53000000800002,
+  16241100000010e, 5001a3831002010, 81183010, -780efd5ed8010201,
+  20800052d, 2000009020010400, 319c5f61004, 254010,
+  -2040fffffffebe0, -230a120c00000001, 400b7fffffa7bfb, -400000a1250228ef,
+  -800e840e9000201, -4004010081100801, 757bf7efdffdfffd, -20823e08f7e981,
+  -a8e000010400001, -19de7efa010f, 17d467d07159f159, -40000081080e7d6,
+  -90240402202001, -3e00fd67bfe000b, 7fdfffdffef6f1f, -412043c4fae3b,
+  -1000080080000081, -7fd010022808241, -860000001003a5, -f98420400200001,
+  67dc75ddbf8ff531, 201ca06beab91, 4480404023, 4000400000406d44,
+  80050060130000, -3effffbffdc00000, 6f14f040f49c5588, 400a0a51641,
+  -40823fffffff7ffc, 4a0044108581fe, 1000224012300, 1000000000,
+  936fbf1010800, 0, 2d80c, 2c286c00000000a0,
+  18df010000000, 25003f79fff0120, a00000, 90003100040000,
+  8300000100002, 100000, -1000000000000000, 1011ae7ecffffff,
+  5ef18d040092000, 1105404141000010, 4057a3ff6040, 19f7d9755450080b,
+  46757f0435578cc7, 72c0000000000011, 5480360501fdae, 10000001ba388b1,
+  2100300000044240, 157ff95f00000010, 40117a78d630944, 100000041e984a40,
+  -56fcf17ff8bfdf7e, -1000ffffffede, -7cf0000100bac7a9, 45bd55042f54c019,
+  -460e973bb3f7ffff, 1ad243d7fed7d37f, 80248550118440, 242000008000281,
+  -7f9fe01900020010, -1d4eafefee9fff58, 2442980000000013, 3bfbfe100020,
+  -bb61abaf5a2bf00, 3d42051b3668ffdd, -3ffffff7fc2cf27c, 200506e80c110b44,
+  200007dbbf7f002, 5b2801, -2000fffeefdf00, -7ffffff7eedfdfad,
+  20c10000, 310084280230030, -53b3cffffffdbdcc, 67ffffff004c8023,
+  -3f8af7bfefef, 10138104000010ff, 3081676e140121c0, 1000000100,
+  80400a242200000
+ \
+ +\
+ +Here is the data that they replace: + +\ + +\ + +![Unicode copyright](https://www.unicode.org/img/hb_notice.gif) \ No newline at end of file diff --git a/docs/site/development/development-process/design-proposals/bidi-handling-of-structured-text.md b/docs/site/development/development-process/design-proposals/bidi-handling-of-structured-text.md new file mode 100644 index 00000000000..a06d8b97f68 --- /dev/null +++ b/docs/site/development/development-process/design-proposals/bidi-handling-of-structured-text.md @@ -0,0 +1,360 @@ +--- +title: BIDI handling of Structured Text +--- + +# BIDI handling of Structured Text + +**Author: Tomer Mahlin - IBM Bidi Competency Center - e-mail comments to John Emmons - emmo@us.ibm.com** + +**0. Terminology** + +***Structured text*** (aka complex expressions) - text having implied or/and inherent structure such as: URL,file path, email, Java code, XML, regular expression, date/time stamp etc. + +This term is abbreviated as STT. + +**1. The problem** + +When structured text includes characters from languages with bidirectional script default display system on the logical platform does not preserve the structure and as a result the text on the screen becomes incomprehensible. The problem is with display only and background text related processing is not affected. However, the way the text is displayed on the screen makes it very hard to work with it (in the best case). + +**2. What solution would we like to have ?** + +In most general terms the solution should allow: + +1. Preparation of string for display which will assure that its structure is preserved, This entails development of flexible set of parsers which will analyze the structure of text and will inject UCC (Unicode Control Characters) when appropriate. The framework should be extendable in order to allow adding new parsers (either custom or built-in) in the future. +2. Taking into consideration user preferences (default rules for STT handling): Arabic vs. Hebrew. Users in different geographies are accustomed to different rules for STT display. For example math formulas are always displayed from left-to-right for Hebrew users, while for Arabic users, they may be displayed from right-to-left. +3. Ability to leverage default rules for STT handling (defined in CLDR) and also customize them. + +**3. What this solution will NOT address (static vs. dynamic context)** + +Static context is context in which text can't be directly edited by the end user (e.g. label, not editable cell of grid, tree branch label etc.). + +Here is an example for file path: + +![image](../../../images/design-proposals/st1.jpg) + +Dynamic context is context in which text can be directly edited (e.g. input field, editable area, editable cell of grid etc.) . + +Here is an example for file path: + +![image](../../../images/design-proposals/st2.jpg) + +Due to the ICU/CLDR nature (stand alone library without any widgetry) the solution will relate to **static** cases of text only. + +Namely, the solution will prepare the text to be displayed in the static context. + +Addressing dynamic context is beyond what ICU can provide. The main reason is heterogeneous environment in which ICU can be deployed and + +different approaches for resolution of problem for STT. For example, even for Java world the difference between SWT and Swing will pose a challenge. For .Net world (in which ICU4C can be used), addressing the problem is beyond the scope of ICU since it will necessitate invocation of .Net level API. + +**4. How the solution will be used (scope, applicability for ICU itself) ?** + +In overwhelming majority of cases the deployers leveraging ICU will call an API similar to the following one: + +**prepareForDisplay**( inputText, STT\_Type, additional\_parameters) + +This API will inject UCC ( Unicode Control Characters ) into inputText according to STT\_Type and additional\_parameters and will return the result ready for display. + +inputText - structured text subject to display + +STT\_Type: file path, URL, email, Java etc. + +additional\_parameters - external parameters which might affect STT processing and which are not directly available to ICU (e.g. GUI direction etc.) + +The result string will be embedded by the caller into graphical element which will render it on the screen. + +ICU users will be able to either accept default STT rules (associated with locale and defined originally in CLDR) or customize them (via convenient API + +allowing setting / getting values for different aspects of such rules). + +ICU users will be able to extend the list of provided out of the box parsers in order to address additional types of STT. + +One additional usage of this functionality is in serialization / formatting dates / time stamps provided by ICU itself. + +Date / time stamp is considered structured text as well. + +To assure backward compatibility ICU should not inject UCC into date / time stamps by default. However, it can provide either flag or additional + +signature of the same function (responsible for date / time stamps generation) which will prepare them for display (by injection of UCC appropriately). + +This will assure proper display of date / time stamps generated by ICU. For example in Eclipse: + +![image](../../../images/design-proposals/st3.jpg) + +**5. Factors affecting the display of STT** + +There are some different types of factors that can effect the proper display of structured text. Some types of STT such as URLs or file paths, have a strong LTR directionality associated with them, while others have different display semantics depending the directionality of the underlying GUI, or upon the content of the text itself. This is further complicated by the fact that the culturally accepted preferences for proper display of STT differ, even between Hebrew and Arabic users. Thus, we need to be able to define these rules within the CLDR that describe these and be able to use that data in order to be able to format STT properly in a given context. + +The following table summarizes the recognized preferences for the proper display of STT in Hebrew and Arabic: + +![image](../../../images/design-proposals/st6.jpg) + +![image](../../../images/design-proposals/st5.jpg) + +![image](../../../images/design-proposals/st4.jpg) + +**6. Proposed additions to CLDR** + +The following schema is proposed for addition into CLDR, most likely as sub-elements under the category. This structure defines the sets of rules in CLDR necessary to describe proper display behavior for various types of structured text: + +\ + +\ + +\ + +\ + +\ + +\ + +\ + +\ + +\ + +\ + +\ + +\ + +\ + +\ + +\ + +\ + +\ + +\ + +\ + +7\. Sample data for various types of STT: + + a). STT with strong directionality, such as filepath, would have the following rules in root: + +\ + +\ + +\ + +\LTR\ + +\LEFT\ + +\LEFT\ + +\ + +\ + +\ + +\ + +\LTR\ + +\RIGHT\ + +\LEFT\ + +\ + +\ + +\ + + b). The "message" type has some variations based on the content, but the rules remain constant across locales, as follows: + +root.xml: + +\ + + \ + + \ + + \LTR\ + + \LEFT\ + + \LEFT\ + + \ + + \ + + \RTL\ + + \LEFT\ + + \RIGHT\ + + \ + + \ + + \RTL\ + + \LEFT\ + + \RIGHT\ + + \ + + \ + + \ + + \ + + \LTR\ + + \RIGHT\ + + \LEFT\ + + \ + + \ + + \RTL\ + + \RIGHT\ + + \RIGHT\ + + \ + + \ + + \RTL\ + + \RIGHT\ + + \RIGHT\ + + \ + + \ + +\ + + c). Rules for date and time stamps differ between Hebrew and Arabic, so we would have: + +In he.xml: + +\ + + \ + + \ + + \RTL\ + + \LEFT\ + + \RIGHT\ + + \ + + \ + + \RTL\ + + \LEFT\ + + \RIGHT\ + + \ + + \ + + \LTR\ + + \LEFT\ + + \LEFT\ + + \ + + \ + + \ + + \ + + \RTL\ + + \RIGHT\ + + \RIGHT\ + + \ + + \ + + \RTL\ + + \RIGHT\ + + \RIGHT\ + + \ + + \ + + \LTR\ + + \RIGHT\ + + \LEFT\ + + \ + + \ + +\ + +The following rules in ar.xml ( Arabic ): + +\ + + \ + + \ + + \LTR\ + + \LEFT\ + + \LEFT\ + + \ + + \ + + \ + + \ + + \RTL\ + + \RIGHT\ + + \RIGHT\ + + \ + + \ + +\ + + +![Unicode copyright](https://www.unicode.org/img/hb_notice.gif) \ No newline at end of file diff --git a/docs/site/images/design-proposals/st1.jpg b/docs/site/images/design-proposals/st1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4c8788ca3579a310e511cf0b9768e23d3a1f63be GIT binary patch literal 6378 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 U47(i_9*uks6htF`0!*Cz8&7bbc>n+a literal 0 HcmV?d00001 diff --git a/docs/site/images/design-proposals/st2.jpg b/docs/site/images/design-proposals/st2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..bd7088ef524793f9f7f7a05c667a177dfef43a23 GIT binary patch literal 3639 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 literal 0 HcmV?d00001 diff --git a/docs/site/images/design-proposals/st3.jpg b/docs/site/images/design-proposals/st3.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5e460da4e816648c4edd7525c97b3decfa96201a GIT binary patch literal 24104 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 literal 0 HcmV?d00001 diff --git a/docs/site/images/design-proposals/st5.jpg b/docs/site/images/design-proposals/st5.jpg new file mode 100644 index 0000000000000000000000000000000000000000..cb5505213a57475d9040e9a0b8fe9decfac057cc GIT binary patch literal 99281 zcmeFZbyQYe)GxYeB&EAkO6d+oN=i^VrMtTxLO{AfK?xCQkWMK{>FzG+l;(Nv#<$;l z&iTIcjdRYp2dDr5 z4hf|8j^N*a;NTGuk&sbP@1dcC6RPe5@NftS@Q4UVNQj8wY+vy203r?&E)C~nWIUBu zD723FTmf-esB}-tS_xE#59zs$oC5Em5fTxTkTNhbF+X78;pO8O5EPPpDkUu=EBEZh zOEq;3O)YI>6H_yD3rj0!7gslT4^OY4*TEs7Z^FXk6B3h>Q{KKy{h0kJ=W}jeenELf zWmR=eZC!oaxAum1VofOzTn{9!GVB-h(yDQjQdyx<&`5IEmr_4{*$<@vetWa+^UBJ zMozlCCc9zU-Vzebvd{Fp7MQ9Tz`;6EHvks@GRmcoAy_a6<-naP{rMnM?xiUEST0A2+44H; zovw-S7E1d1HAowGVLA-hVTXwS9BV#|n>VLAjI_Fh0e+J(AZC>7Z0tI1Odb1%-reAo z%?bvb&zHggs%$8(e8v@_tG&U`{I4bdUxbxj5%NN=_wVQ*qMXTa_6l!>0k7kC5Me+YXW>(Tjjd1Qik9hIae6)WT12lT7LJ6VHj|aVe%H8wE6bj8U}RzdtxWJAHKi1 z6lC~>b4{0q84>wAFl#4vwucqSSlqMgXPK;^0 zlgbB%|MHtbq3A(|$_in?qT4@Y{15W)G~vIu;eVqZ^4qTdwOI(WFZS(KG{yh9NX$R? z>Mwoy`xd)9`I|sIU_iLJy5LqA zyC)3jKD{Gv5{mP|fU?Q-PQU*yl)+ncp_<#9UqZmfz0<*8+7)vX^EdK}%%M0@29ynd zEPZE1+kaTmKeP}U{NWFgLfT~RRPBG+ru=_TP0jzX1(fy_kJWFa&ElsccSiO6&Mv*1 zgom~2rAzAT^^8U~M&z|_!f0!mH7UZEq9VVM>3L5i(aBbh52?(A3qR*Ci(1CM#I2;d zMtKYaK2B6yleJMDGgye9VS$z-RcteaZul|$0S5EOaNz&+V8!dCI;P)&0cV)CFkskL z$2Dvfq!kqHHS!$fNA>3#MhLnnVK{T4h;eum42TcThXGR@y)Zy}Uadag7X~n(zX090 zUJ5j-zR>ld^Vl~CCKA4isvW+H6!0Gnf~aChx6ZeWGaSe*Lv3+t=S1@w`|{v5YBMx` z?ggU`nOIW9DnbmB^(Hi{hU$vF(0ZiI=M@Z~RsRYD40mE~2^TkSHljbKwB2IqACtUF z-usC%Zku~T|Hw*ZPI#sxzLR|@dkIm&jw9fn`ka!}=#G$D{dT>UPO%))`cBcZ>w|IG zV@4miW;A}<(=G*40G7A zZMr#3#J`JWb$$4F!{ll_%Uc2i zOb*W?JY7h)<-I)?mfKUXg<}hch>WK_$gyPddCkrSgs)vg)Lqq59|X~mF!F1mEIkW2 zTS4yi}!3u_{7g}#ma9n zZ&}J~FTc1Q)eYaqp6=(A=C zHjb6V`+QFO(V97vnbQi>*j}s$HlHO#*iU z3ml4&WdwUo5X8iBbZf2idAe7>=xmf*Mzx%fG{OLSp-f#{_8LJ`x{akJ!n}0q`m#}f zS;{j{`_dGwV?G=X3NPt+K>#1vn*mzs)-jD04tK+&?e^{Bxgos66-bV`-MrDH&hW?-qc%e34YIpMh>E~;fkNX?=PwYteTj{@tw+1Gw z{?HhX6%_ZBc;LQ#P$@~6us$bmW5&<5pzs4&tW^jn!qApD{s||ODobaTx$w0-8j2XA zZdl0k0={BF(3fg!6h4TRjzJ|;YL}xUr4t>eu_wvxzQi`a zDa)=`Nv_+dym`)SuT_E^VAk+}#>MG%;_)HAP{MhHElI0@YJ!I?{Rs{)>y)kb3!$0Z zL=^@OlZAUvrg14Q*drqi^E(tN-_X=QB+T-r$bXl6O^S~bV$QM1H-A&d9yKM{O6I2x z^bWhu8^Hki(Wh>1HT-+It?mvdb8pAO_>owi+V&hz#rfmMBJWRD-ui6U3`toVE}A8G zqEDo2JXc}Bu5w#iFV7}lC96Zk98kt$sDD~56t$O;f;PMVx>NpXWG9dCaIM5H9If$#H>ExSG7EIO{`ED4{nF7Ua#xh4R7zrB?XpG$anThGe zN(IFo#DWa9{`Qm%_yidUc!Hk6fR-un5r01BBFKfj2tN#vL{5SM0dX)Ois~@g!vO~L z{r->y8UC-O{_$YUzaIi@R4&ZpW_e>kI?Y31zz@Tb=0h&=BM@y2VuDDq_0!dfClw4J zkRaZ2MDs8kY)`2VzR_@=W%wpfrYM3#sMtMH4(OZdk15; zpHX>H)l6&~`0;uXDj&jCe`pMynCg$uJlO zSo+iN@uqbqe|t%|zKdvduxs|P2D>Wc#HaM9um@S)_4MqC@r9*$r4Q3>*4g5P?CCKK zu(>v*vWp<=qm&j)d*ti9kcO4LT+2}-xk^k|eG&-+jO8x~MR#YX_7VD8opi{`dWdJ- zhL9t@s`Fh&6peFc`)w-Z;JN1$<35mg$|=5`ZlqdavKT=3sY?0e5x?|fNLOFyvSu)M zij&sKIB7F(n5#iT$wAZK?+mbwNRi6(up=u!^5|R;e!;C^GjWCe(3{hZA%rT0;mu;u zd*8+6kI@DwQg%m7VK#wp48z$L+Z0$4D&uT^vS|A5Zd&aR3IZb;?fh<>^D^$A^S=fc zH#=K9Hwq0tOssW#c^RNCK#hgc-_seL0%6#m>kzqz)L*oq(1UlN*g?>$P9sOA=Sl4x zHw5o_qHwb{D#LVsfA*y2X&b8^F5 zrKN?AR-BKHg9tb=lRp3u$<_%Rn?? z0BBnF&=5>k7=S7hh&Q+`L6OZN9;Xxv>Cm9Tnd)P9ItRauY+yUlH<(f>xTburJ^8l-^*1Gbq^( zHy~@`IZ&cI>wdJYd$@Q5xd?@}J%9n9s(&`?PQJD)J}{fyXXl`;4fshg%f>;WLpX#G zC?FD~$8I*L9tvJ|?;xGk8D}HS9S#8joZ%1gQ|*ak#BeRdFhu4G4Z{ zg7H-(Ks5A!b{KhlgFgKLfwumFOm<}=cZf-;8KiU;L`-87YlF+?ABUv~%p)B&{&AgG zd)T~|Wd%7yF9)GujhbD~zSmp(<;;)aEQ)R6%$e~2(I~4by+j9v)be_!`a zdX3FT{zcAs&6Z|5CwPfvG5}$uZ5K4cN+{d_{gmlr%;?muMWKkp$8cugKQqpEg(ta} zb++_3Rm*Jynaxs7U$rtEa3rpscI|iBZI*a!6-E#3Rasm2?%awkbb4&2ui$OYH!2jR zq_Fwz+P)7%@f(B7%I`1L+9p)_=KUG9lp`H+F}KcQOolEpLm0zP@hgh%S~k)9hV3zDntqzR|hReFcu$S@RbSPtu^f03gk_;T-? zz}l+6vOY`IU?^MZ&+D|?C!L-9j8);pua8iezmHTH;`n3zJQxtnM6Wm9P5CmwsKzzh zH?hZpu>QRT(Be)PY$ajP(sFVObQlb`Q(tM@koVA0XpFY}7U!xZ&NeuK|# zPjZl1(#F!u{_N#>oJ1T$WIS8)k<>A&-}9pIY=5qXa-nx*)RamFp+zQYBP8L-BQ|EE z9QP9%`jIImpj$Zmh)YQ>0vrB3rW3fc>P>-5AGLL~Te-fdYF5Uu>;dM2%vmon;vKkS zS*kX}cWsOOhRNOS+E$2339H`G8*sLTFu!mUJHvX^;TEV&@ccr5gQT=E;%zG4nM`F= zd4tHi1$*ZA`gkfw%Iy!xz&!LKURFH|9g?~;Rp`FnEd(ZkeYY}?96GHblfdX4^2K=&1wcFC# z&dWXg23q8SWD2xZMcckvpGi%Bx|oKy14?k@jz8c^omUiTN38Qo?34MbOmqTU_TJPf zrp*$QoDiV|e1o`tDZdC+4EB%P$463+gZ6TCKPI`|v2B+@#3c`eLtG*s*E-dC2dU)i zA-Yn^wf0DRdl=`N;UMCA+iRRKn;~08L8bD}HBH#0%34oH%w$CA`=MPht?+Xi>`KOi z#<~H4PFdv0)ctn^9peqUR6?VaPHZ;M2+=DY1lhkn3Fsvc?meAWEu5HQ zRU=31s>iyFTOxt04Ob*>EGjvl7iqNcSDojUc9qj?M%Ce#G@5oaMkhRWD&^ZP)C{uM z#Q{OlZecvLqO#UR_0d^pnm5-TM$u&M=Er9|pQ8Ezn*$U9{ZGbG{o1ySM>Msg#ucOX zJUe0OMw2C)ohGr}EnQ#2;2Q|3xJ(Qkq*vg)CZDISYSvc8$myf@6FBAWC>t-Ezxn@g~?vhWPzWA~}b%sfPW9*@v6J3;4g;cN+*OQXI zsKG+#T=0Q%qR*C#lcn+3oCeBw_D8D{q}* z$-VlQeAOp&Oi8>Ir9Jp189Ys|&|{muEj#_TTC!Egc)NEq$80vLYC<-2OyqTXNic>l zOWwH0F_VR?$fD1Z94MC`hQ!AW%!I^!*46EG7wKo!DU7F7H$^Ppq|wA~`)tc{W`M1^ zb)rzA3t}C8b2mn{a1*1=$bD0VxB+YuY7>94g&mb3?aEPmv#MHdok6|}YKu3hL&3xx za~YgHo9RNvXZlS=kEaJsKG`N8Yp=Xl zTt=!*af+2CYckgm!AFRUeada2YT#RP_5H}$x;H7EEW*>lZ{Sc0FRI10jY!wjo$cu< zFONP|{Nf9_kAz1vUHRyr!XIhaK#Z>i)DZmL4Q~YpJTlSw7MO=i#X6}QPsFAZY@RA# zukhK;b_pyrG&h6{@bNKJP4Zm#CI*r)^u5E8Jv*j%S~6dYOJqHY=SzsaM~*Qr%Jj7E z3$*P-8}BwFr|NyfJ(>@V>C!T+Z_-NhR*R)_e_TbPf1I9U|2VS+csh5n@+9m9XOTR~ zq@g*ddgtFlzDW%~r_VIPR35Uw;Auzm*6bnejFwglkc?KKnb(cDinjRRo8t?)Qp=;+ z$3i_kfkr-+feUgb!b)V!;hMHKtR_C6{2i2736(Jx7}K(7i8pFTixjgvQ%1E5ap`*R z(UHCBlU%1mar2nrHd~Z#8ue>+HYX@bXh}gmly|0nvH7e#`9w=^IzRzeVm{u_pk9J) z`Xcaw2(Npwg1U~ivrEftZ0kz696rG&#brmu=bXKT*c^XRN^Obkoy5p5_%&QC~= zs9&^RYS7VR_=k{*;=Wi;`^u#9POBt!r$2tm7EzI|`X!%(!)nlbN-nQdujsgf?GY{Z z@$_iS4}DxY3mcwjMQ{2Do?$bWmzvoa+Y8PCyp<7~V>UVIh5^C-?Sd-fs^${Pb?Ade z&KE{H9v{!-i4Sta;qbj|)3aQwH1Ee>rdxs_6)n^7QTrZUd`n5BTWWR2#;oOzIYVPb zkIUg%A9n z9_mby;%jnX40M;w5e#I`RPX#NdZ=ip044Nd$5&DJ=py)cY*6(Y`iw9aM4=52Z^>NM zxAiykL!hK+%pX6^{b!<{tYq3SAhsq{e3upmT**7?@ctus_*tQv&zF^`liY(<9|V%F zU63oY@hT8oJ_51juV4LzE%{}>-J;~)C~{6hC5a$6ZYfX#XaEdQF}NXLfE>+im2=C- zfgwE*m7>7_2^f%93dOP)zu2QXEIq}(3I{JF8z(RzdQu5h^nnFJ3JeH_WJ1O?U;qk# z#*JIdg~k=itrXqj|J=ldy;jhGSWFz%Vke{n~Ss|Bz&r zRObH$1p7bUk^-E-JKR6^WBA|u<%<6t1-uIUk2evF5B<-)=`jUzAq)sg8-xmLHW3_3 zN4S4dItF6`>#nS)WUkgZ#5#2^9m=sBkd;+E>EEZGvTWXf;TmfBjBB)Q@hdG}02I?d zcK^R4E^Pa~-__yqAq;qYaQnxqdP)|VSO)*pm^;Z({Um?^t^J!YfTHAMMO>_rh!{ZGTn-R#_V&N`(EHX8X zV^q6^9ysAM57f;Qlc@7ii|{uO63NYZdlxO57)NNvjLPCCUgd98aUpFa(8)_&fItP zb`ElLliUUCaGR_DqN5Er(mN*8u}dL{jKPUBv-Jn z)sJ|D`(*2HBOhIcLf)Dn#Hm8s;Fh7{YpjE}(syS4$`VShC#f|$sy0fW+E1lxF8^ls zyV3bkrT5rP5sA|_8THbm>&!Q7#Uj17j0Sj?q#;?{7V4Zc8xwM7;fMDyru?dpKMZY1 zTU35 zcn(yBq`nktZXLvs;eGACWsjWVG|WS*N+*dY`(!CuOyezIWHMqNiW`Pm8;!?{YsObA zF?*%_d!QTjT{OKmyYVfxn{PI~bUWC(ZZuy9FORt)m6$>s3p1=#_YD>XN@;awt+@+r zo@6a@>9Q=5+&31ytR+Ul*Lgg2V9OBx5Yr=lZ#Z>kfAre&1a7K`;9L*Uu!lD8OAS~@ z622v(#CCJdG{)vi!hY6`wEuRJ(naZ+k%$iT#5gkEZ{JAwSiQ)@Xyt5UWUFMYJ{A9c zaZbm2bDYSqjjHz3nKapiK9yq*wU;rJxrz61pAh3dCqOuze5L-0N$>3+T{PhPO}^Y0a9TL%mi@)2^pgsif!) ztB8yjZ2g|j8R*$eVp*nazjCo(DL;E_v_S;@p1LqRKSEXhaZjrYwaM`9+g|vVFEa~< zn11I^d?nlCrCeW$B&&MFDl&DqQqtrg_2QgoKRhPCDUQz-r1rNd^>?9K5h|tnNzw>< zZ-^yi85lyjMf&5^NC=f_w8zKe;r#rGH{`8uSLXLgar0|ASA&|%K+zD42NX~6C`Z0o zj#iGGTH0^cO!x@$F4XX430f!Q3eF=aZHP`jMdW;g7MOM^VLYSUEy1w`#W`HaN91=a zEE4_D(dd3(mqLF}UCJjN_c=Lf%=J{6zj zvvm3(`QfF;VD_ndB8B<=D*(!YQ`0LNch7)}IdZeTfdr&Ep>T^-#rfnY-p=?!L_Vi! zD&B|u%Cuco6ta=+3jSF5K8rLhD02Tk518&81{2j0?;qat^AA44E7!9e%i9lYGg1XH zyWJyGm(PRDN!(%(aPo}>*dC#CW30aseP-x@46Gtl0nXz8m2-&Z0+M+Yv!~y<`I{Mz z4NH*M+_2uFh`<1=KaP0tNJB*qibgIRB;Vl&kwSftoJ4)P_s6ZXEA`S9c~%4do(L7i zCYJ+NXKOo8bA}lDpW-<-6TUS!kqgWq42gtX$=GTWVEoMczwqvVoZS9T!aD>pw7=oc zuOQ$UN%Z6hc2e}`{)9ge@$FF@s;G9}~cTdHG4r}#DS!Hq;s8V5D=QKyT4o#QN)8)a+l zfYl)RDH5no+N$4$-fJXn5xP~^X9UJ>5xLFuxg+uF)Kq(@TL+jrHa5f}eM`oA8qtWI zwn5f;wYA(^NQI#D*!=T+PRC?W$?8|NsJ{5QH%mD5?|L}ul2nxE$&w_1aNuWOI5*T$ z-@fERn^`6-D&&LUG0)4o(VH&^X$Pl~eT^T^#o5FgH zc5dG}-UhMn9+oDM24Q~hE}M;Gj`d%6tJaMrqemF$6175S-LZXwoI0V*#hWZEHzQ5S zZ!zcm_lr>wv`=EI=Aod@i$6 zXU;8$9m*SKvs{;qQXeVtT|t${t`+gKG?0BCo={+kd<-fKRw8(>7+fRiL4JHL`hcw) z@vOXIbYs*t^ec3<$zvr(;eAosevV6f&QlM=-V-7;?j8hsz>V+Zo2xxRM`KwpVjiU+ zo#FRw>Boq!i0=8$`p&kwR?z#Sr?<2{qkBR*AHJq!kYIe#@4}TH1y(mHpAgNsm0od( zomRFVR(jdYygn1M>ESJ@`26h^wT4^xwCaE$#?!T6W_pcRqPaB6+M57v#Q1DMZCm&R5Q}p&R6IdFEtrI;I0Gjb}w3vlVufW{2GETMPH4p_*uDW z$6yR;_qCYzP}S^5!99dWVbxUgWrngwUDT9e8(j1Be)8p9+$7}$@Npif`UIuF`c&;^Iwq4z$ZN?L$m_`-<_oBg^e zICC%;`XkJg)Fzp;hR(v&RhhHt3{`yw0i)#R5z32Nui;v+Nuy&t%>39bR9`h%fN4R}N>5!Tdz3Ffp^&Bwk}T)4I&PG9#7X z`;A%aL@=t>Y);};EI)uP(bQZ$>az3U$-V){#0*oa`Ha%ob9r(sB|rqrs&o0hS!1*~ zsuC2VY_#|^4730I^`=hMJ0+7wblbIiT315+Z|`$n0yGZD@Y`2BHA2yuG!?RlTla_4 zpg29bwbc>3M+K;+3t=|u5^Hq3Q`5%&)0x;h-2=ko-sso1%F5ME6)FAIbzx>>yD}h0S+Prb!OseG<$MEwPWODKMQEz#MNZ!{BYOE7dJqYCY+u4`?|W zbTOA`+j=s$Vu})^+R0zDe>7>Fl@uBqZ<_aBtF=ir6A$p?yf-nY{8-%ThzS;b5RS_5 zaAn5-rlXSZ0@OhhjVUW#ZF z1um@YQ9bAshDtbaJ@?`wS|s(c}>@Zz@STKHPB zujRPU&pah^Q@CP)Gm^5ZoR~6H{MpIZXL3BvQPzdJQ`--7`9qOPXV`5RYYq7KkgBQJ zbx;t*Q;Ll*3T8I7j`lMOdJRv0D1H)o9wj4D+w`;+?`CNhvy?0e{p1T=lH;Huw&eJY zjCsy>y;$P#py+-fH$$Te%k7xnh-}9jxR-{9P97~H<5AeUqm5FZ9v5tBP+62`xF<1o z>h2lkh5*rz$)m^D>fM7V6(yHHc||9<=jpT}ow}EAtFzY8PH7{)hhK)@za&VDk#Is$ zK5Tg0FbXA+$^M?AEtXHv-s4K|z|ymEPYwe;o8JF(#{vR|1D1wA7IZ};oY!K-Q_fX2 z@8x}TKxc#6(446Wu7wG{LPP%x^!u1Ak$HG$>xPz@OE)cf7^+HgTY3F4mm9gseMJhd zwqtS386A@SDv|`%GWX=C%AAS%Pj}mC3zlD!#{zIp-l@6Ew~V4pt=d&p)jG8tj)_jJK=J5r|mV(&~MI7X}9nbxzxZN=5e zQPf~-1D_Yz8)H;LT5srzZwo9wrShDxK~0{7Z;D&Aw8jYxLP~^$-8^kqla@UwhB(6& zbF%48@@Hh}y>W$>QhVwG&5jn59Li)3V-&v1BtDoa8ktE#Jncbi$39cedAy45S{o$K z&u8zQ)8*X+oj0@&px0N(a(|i?>Ho|~0L?+dE+Q5#+qNKQ{O5epeWg81H+D1UN)|k{ zXJpAex;LTe`f`p%SF4a@;evs(4pGbhb1E z(!=Wn64*)uGAN9Z(Q+bKa-{;$frz~ZNI4_OWyZC2|21Ta%6-~zx|zyqw!(hePp<)b zuz!@1T(l)bHnq5wax^taur>qz$dSuD3+?ONi<1*~!(DiRv@B2X>V!NNYm1`4xAT=l zLHN`5s1hZo><`n#gLG7nT1EU11-3>rOZfG^q^_zTA@C3>+B2r*mi#c}3gc6D7zpMP z8Ed69G2AyX%1$Q8TFS#9ecH`NSNU3(KVeu%djddkHD4%YKye@LQe8;>9NZHx_pRw! zw1npR_0KlmHhV{!i;YJdrm2uV^moxiR~`KsVf&c!smI!gom;-=`x1lRDP&^ugn)EM zZRxh%8|Q1twD~pB4V{?Gj7Y`$WrpQI|2)6(d)F==I6Eq`%d2r{ocZ!sqm2_KS<*e6 z;>4$>iraOTow6h-BtUd+t1u~YgYk+Yn}H^gN^J)Z9%GN~xWSa9os#6!De62<7EejNe z^%O}SdSiroDIBlblsG-6UVHTzyaZa|$G`wRj?qyVP%Iy-1cn&l-ZB*nV5koNSw?_r z`9P5Ye%oPU@tE5q8`=hj{kABoEY$z+z2kpZSQ)I>wZ2(}GW=16`mdS_SNtZTA6~@z z?_KsJR5_In9 z#>Qv&5@J;=TeC{ixxyV8xjLp+%R$pn6TY&bxe@phSBBn(L{GNcPzDhv+PX)K&4*z^ z#C3(0UFTU-SwwHuHBX!#k?yPM03@}F51Z5hk*ROq?H+eF}eRuywJ2MsyQ$LDA*yOSW}`p0gMKY_>URc~PT0#xzpKV=${(7r%&+R+`vxg43z8&bnQ+=AdL}bzqKM<4s?-Gh_P0 z)S~1x&yEAvWh%SRV}w5xf=P8ikcN{_e2EIwxvuioRMs@t3{~mO3+;e=ZrCKKRmuYP zh~i$Ro=Qn&k6os}Jx*5Co*I9y65hF^T%9N^dfQs_ zrc|PhDKTLX!Nx{lkluS`he}!d1QS~+oL#bwj7NB?%GmhpXb*CcGOL zVSBbmkNBe#bk~?$HWuhR-^Dc&v7>|kiUW@x(*4$e}k2>r9 zf;ggMgprQ5QZ+8;-Ks~BiJVPS=p0Z!E$GiqJxS2*EhE)j#tiiHq{qoy9e*dI#69R0 ze~(hLw~_0KWO=X?mxK|5&!hW?_#>6fB(LJtIWh|f5aC-0FW(RY`=WhFe7xXl2tu&5c?W0cbm?=6o7ZzN7in+2^avFIVCP+}EyohVvy6~P9%)4k3euxkHoyrfO-y!WbFdAyZm)gMZ;gWqHLLmyR z?H;w!#-1=6xMI5ckChT`%N#pLU=_)-mY?2{o}S!A}Z2)uxLPj^ce@ zOtC2s7is(Atf<818M)(LIkFPRkWPNbDKmfm-5Wi^EPEF=mndoLYvCB$6NSD9jy4X@ zDo|o+qyYj`BVtPKpf^0?WEuD8bfrLqV{DppqB$>5r(Mv>64ywzXc9b!^^*Lo|M{U^ zns=7RVuu@l+`Mj=+mQaORSM@p{2KnukK;U4_(yGB!PIyG(eXa~iXv8}K!kzw)1=>Y66G}_hu*bnzg>R#a=Y0n)TkGR5hPBJ^e(G{fstkO3> z%upd^0zn)03lOyFfuPMLL9PxhXTzxu^3agj&`Al!N8_`ZKbRN(bKDvuhfXyV zs(9Oraq5Ox5LIJLitr;Tj$@B3=h3vQ~Nu&70biL>brNS1Gzbg&613JNO zq+Q>%*LoN}=P$>f?|E8n(G#J4)>0gpe*7(V!Kz?SsqlJ${}J+5<&g)N4&M)j0fCl~ zOU9UTk7j7l3>Ea=It*AVSdZ9F_NsZq&a?N-zG_?O)a@_~Q8qsU@$GWs=jr22-Ez4$ z<`y$9WSyoO@1h@W_0?Ilx?4>&-fqX*f+FKW-U{e7@$UrO6bcv#-mLq30o&Bd`13kl zj`k~}@D>abM?I8rtgQJYh&Zm@w4bh-BEU+2;jAl2H>m+su81A}TH}bl=>vJ{{CGl1 z=qq2g>bS@Cp5`a+cDT|laO)UI=;vvIOPIdTpxg4w*t1&OjzI;ws0Po=p9-qjv(2tx zf0Z!4PriStdGh`d@K*bx_H?pR{00x)q#hpMlnzi*6hmMFUhyFqJ)Llg$?GYZx$qQ` z7xvrU@U&YA$F9te*}XQ3#pgWcKzAg4@9FpYE32rC?s(~GzaVcIJ3+!r`LNYMzGQ<6 zJsAue{s(GKg2t8kb5m*z&;0Gd1unbJ_CvwU6!qQC23f8g!2r&AY#4wz0t1c}9S(Q2 z%i>qtRpyi?y`rPCHYQM4Wp7_d^`rQrYcqyDZvON?YVyK^g z>HOgw+e7g~eL%@ckeqx;{X=rT8b zyiLVt#Mqv>3V)1iN*pAds{T$~GH#zh%_KGRSb!|TH51$Nnkpgayt#38x}uQ1`Uis-L2taM5O`twpZD>i(u0?OZKj$+XR+_shqNm%J=5PTZ=hv zYJ(RCP`QIJ-_t_yIux7gPX>|#w)^}hjbB>mV-N|k{o!#6?Meaj7lm1fl%d7!fOE6a z5yaR2DHF5>EMz%Wd^pu;ka3A+5ei+p`@fnC&u?sPLM2m~p!YWJe4BEaM*}n{l~Q~c z^Nv0ZDcN~pKOVSN$rZ~IJL8(r6_g-`bQzp3T3VAqo_V`~ z7s*bqsOan(<%aZCg`k$jS;C{mg2wn~x$B;qJ{{ry#K^6JqMn&ptGnqSeVKo{=)!67 zFkV*K{aq0iFvn%dU2egXPeF!)g2C~{6VZ>LV~djZ2+gCWg>UpC>mYN|WupFTS@Oah zj}0{kF&DLAa4pFuv!_Tvz~MKQiPJs)R#H`KTrx~wSDyQC==w8~lGUHQjK4llXkZQL zT;P%rwg1=hDZ74;{zeWJ_`%02HVc)u$A?Twi{H{!7o&xE zjfsZ@Mvtk?1Zn*Lw~N^Ou8UX|gk`^V5&I%5D{H6JZ7nbEgP)c_iT;{T0VhRqv^e^e zgt8KqIrEUq38fexgE?DN^vZj90fdSDB;?+w=U{`1u=$rA87JZB?2$jfW9*;pH^$Zm z$AnKM9z-Y?4R8#_&v#;gE_xiXNtX>Z{$k^25-6T!9W~{d>(>jk9WxDuO#y= zR-{Mh3oz3|>sFI-wPy;taeVLt6jqQ^M(d38Gw=wDXTipsSyUFyma)&9-}(_Bws$%^ zSfOAlEK)PSA#;p`8_0jGr!*Q_B&45^Yjx%nkiUaFE9uZioO-rD;cckKO--CG zsiwxJiM9H=FM*aB*LFwl!qPd>h_&Pioh)5JE^qw$u3o2j6;0w8EVQTliuBW_EsO2CQXx9q|I}>f+ah0nOD0H*uN^oJYt7sVLzgDW-2- zcC=olZgJeytt8HdNp?0ks6BlnZ?8^lTOg}9vF{@%nx5-yZu(htzOTMzw8gvefqfYp z)VvQ>3INn(%nZ>fKEa>g(1V{DxmUk=3;mrny0N2-J7yu1IuD_;U~{HsGGrEFGLUF= z4LO4(y3(8-a1R_ipV?-(`{^8P_Fk4{Bv*c%bWMW+VylY7#Y|=LVYcydya?nSt8QU$ zbCX|EyE4)AOm`zSJp-~=^klRqL^umA-Jtg;aJ_pU6t7w`m7|fYnj)?&y*Ig1RYzvn9NAWs5UQUS(e_N_T6(ZxJ|K;ZZG)D-3!ez3Az+>Jn41v$v3S} zmd*aYhfdW;@V)>nJ43M1-PZFcKUWMnW|x$aZmzNBKJ#X6<}``ka7KGIZ+!WUH69fK z&d*M12(h8w_K9G28$= zsZ~AEmo`pYEg4j-6^~Ah;|6)_vbGbf#BD>iXN0|HNjko^J3cdwag3rzA})yM>;C%E zFi;SIN!wqbu(tRoy0^9WVu-uOBkhu2i`)n$*I))=_%sFb%>~sY{gkR-S9N{3K1?6WXt5fjjLN@%JBCy zTf^EYk<8Q8@kFMA+m1`~Xnf;SU1q=`p0Z|e8k6Lwb}2)}d`fUva1&PNRwM5QvP`Tx zU#!Z-hE~J|ShQSA!{0AJI~A76%-em((;d%>9m+ou*TwmP5NULXE!d3+Q2s{1;5>;! z!CDSh*V^xqWrz=g8j7ukd)ef7J0aZIpRRv%n=M@J^KK_vNG+grJEG;#tS-7m(X5*Q+~oz0>f}m!O7o-)Z;+sNs4@_;7<%_wOeCVFs+&ZK?a&SaA+S zZC>rYx7mIj@j8#-_?_a#EL*#oP^urd(jhl|8)-~yJ+FZrR_(hSxeAm+2gl5>#ozig zb6;zlF4lZ@?DQ4L#M*@7vMYlHjIaN+DDdMdUg_LmT+psA=4$88r4aPq=vLWsx6}_b z8$$|awjZq7c<>6p8Fpr~a3uB(T4$B4ElBJNvhns?c-UEaqX(f=wST4;St5|1P!fV9rM;JSvypulG#ZEE9;u6@00oCj}8qhvY1K&&t)s)$>-~PeR zS&^oUJ=fJzd^j2Ky$X=NyJdF%TBiT^WsI$~t8UVnDo2ZqrcutWX7#xjWs9i^b7_1;?@w2)U9?^X*tn)=PScypDpHkt~A6-~jO5 zxxWF4L$|s(7@$~G3+`C>w+zLRl6{lfjAe!RLDrObE!)Zob0a4?MxS`ko9(qG?sQS1 zmCMsw_Puzh4smYdSDeX~*)YM(beX}*#ffRBIV+}fd;(Y~Ah0NSo&t$XnDc>Swp zi7ApK2~BXyc^os7vmFZOclh{BKK+1|D7%e~k+y5aK#b<95;xSGo#-h%!I zu+CC3kX>A>r7T&vI$qz%Go?SKS52Wa>O;we4P4v_S~8`G`Ed3)uPCj&uxDi$uLS{< z)+dXPFS(G3pJN{oncbTcv}e1igewq{%1=+noEW^V{^h_8E@WMmukd&WuWx@HkIAGP zc|MZJQ3aNdbmVwHP0ERW-OQk*vq&*#j%ql6C#VZogH-z=AiVF?yN?pw;49uc+Ht5xR~=R{|peRCx` z>z_UmsSRT4Gi7k_ZE;@Y_Dc_c4y2m_R2TM%5B~oW-U3{ zK)Jm6sJ!2M(++=c={Z=0O)vBo2E6;_Tkd?BtdC@V#$|$Q84R$!+pS8Md8DcKNzTU`Cuua-ogCB*R@Hq;;b7LCwG`^msCZX9WYS*XH z&ddlNUVK6TASLul>P)kw_?)pMsy;F!vKxY27DYs#5Db31j7jWf+?p{)F^=KOg|n|U zy(6*8lAb79r;g*}uul9kCJOF;6H6#d^XM)wrp(LA6T6jAtp>G-=W*H7);x}H+7i)( zkT7d5(2ZS6Se?#0YSf96-4eEvtIzQ=V;{Tc6+L7&H`UDSW@T%EtK(Ai=?4xqkfraQD_xac%9IZxK9LaQ6Zd+&x%=g`mMDxI4im5C|kV6v5qsyA|$Q zxKp?XDKtTX>|T3+-#LB0-F?qEJ;uG`cK1IuV6dpQ)?9PWHRt<2&+kY6t#v9XAhfwtoG&kkev5cf8lIbDhW^pcwG;u2 zYWAjd^}n{Vz{&;|bKXGc^WVFJ)H%s_U+;haRqIQH^OJ|zJ3%}|HUbaGj?k@U*WG4Y z-^ux}b9t__J*Mt^!J_=<@^kD-De4Z@jTQr9wpCk5YFRRvaQ%ySRxprvC9KIo8&6~) zntvKB{_!UL_wQHmmoABq1=e!^oC}C2)83%YULqK_3@V)a>Xa>Cev2;tZju=Xq%`vk zVm$e{ImJ%HQ1{*q5prI|K6+fLd`=W`{HTs5wO*8DjWYfZyI2~X(bE7$@ga-FOJMJ}Lr2?k(e^{xMNV08llhW*#%k&BuR!#kD zZ%sWzMOYY-seYZV6=sE!tzqmns1n(cz+;Mt3%D2-xz!zMQe9mZ*v<90nPV~W#dDf8cpJ9zB1TT_ zS#Td!UQ~3>w1AyL!-q;k83A@MS>qgsLtLD~#qOPmna@tFNVPW=cC2A~fU0^!bNnqkXfVG#43WnpZ zZrf0vXXZQ0$P(I!`q!|3)SNm_($m^#hP*(EkCdR+6(o<@Y92(6K?Ci^#~0cE{$A)& zD8*5+;gfW{=96>!&YAc1vP=!RL-w~CxQdtH3V+&syO(`MW4hC$f|B>X_2US%{Zgnt zgzRf{%Ej<7i^w*mibn;%5+x?Yz$Voq+DNT_d=am@^W9vOo#LU20l1DJxrHO~e#=L; zPa|~k{rsMirzJ`p*#NASTzK3Sx=k*E4r3#m*s?#DNVH^vNc&a3+S6w*U2L?JnlA4R z?)QxX8JxtWtZ2Wq*SS#1eO_aLU()ae5?|v(v`U72$`Q&)mk94d9159ws)QH$5K3{V znv>$$W3_o|-NGPJaFJ3!{$q?rrmpzK zn67+H|mgnYiys z6=yscW_P#UdZ7%nZF>6D0dFtT%zxnaYb;W%q=XcTc3&FD=cH^)Zr;KD_MVhI5BK<` z)D#5_6GhJ*{9gQ-;E7`#@x}CaL{MIz@9$h$GCRpu_nj{Jns&#J5w{#R}&5^*U~$udn#Ux5P=~$ypFyKl|>K?2Yo#bcSOR#fRz50 zEhD;jH-vx4M8a^ljB+6*A%IOY}qVKZm#_6C?`C=o%7-=pI=YFm?=tFDT+C$6JL`VdKg$P&3 z8snRX7;VKqNqYOYQNvqa?#^|0G`4ZK_a_cD*_z6PGn>aq$v`~M>BxrfnoomX<=9TW z9^M_}yk$r%fI=a*SaRLlx2ut+x)z+S!`lhz)$nd-j?o(Vh7${dQ8$%6jFN2UL?YLN zUpcN(3A1Sci(?YV`AGelcp?55C*=PFM(v+eH*`aQ>Q+(prtkdAeYof!pob7A$)5)5 zvl=(XxeJGBELVwR?JGhHz}xo6`Jk%PXBgx7$4ATgjHIn%F6K1H`5Q}?leYr4l^tdY`DnX|>2iIEX%z~oxD#NkF zj-(Nu7VqP1_alnW4$X6!Gh6doZ~=rpCvtno?Y&qDsf;v>8n4m zGv7g)T+vnq zM*aBy4PR_~tBdSv>mCQgjS7n%&9!<*drOkN9>t#X3uDK&4hO~0vdXzI!i${~MsaL+ zO*K?XYF;+13b`#ox9jUCTT*?dy07E!+uZx?d?rMGW6l20xiJ{4qFZgJy^nY?zaInf zrOOTlDS}t*1jQ;|GrbLj6Lu;xe)PhhXz*op;d>vj+4}I_wgE@%&E3<0n8TAj*_P;K z1dZhb{A({89vh9~ZDZ#;Ef*{d^h2QPsq_{X#>6H04L}zjrvE|O;dHVLOF^QeM+@eL9 zR9e%gi9TT>HIMZIJ1)l}1{aH`*P1v`N^G&{fO4-6pi>+@rPiSi-K~B(AL~khxX1z8A#CVC|(vV7tgV`2N1r z5nlL>c&sXwFN77nLQ8jP+`~$tPTP#)f%TPc$YFfrTJd*W9hZqQS2@Sc&tF=3Zzr?x z4%*nX;Pg3NC{#gjx$86S(lhCs&T5 zR~}QR0+e21a~qoW0oiONiLfV@0Aa-Ts5P9kO}5I7dJfhF z`$Uyz@bG+LN4f~&kfPY`JsqPPp3KXQ^eyJgDX6RV z3{e=B#MjF{U~epWT`tY%gXl2orTl37q;muf1LUZoc|l4sUl(ZYT4e7jY2DJ$In7CY zUl8f5=wB+KnP%D@-r;z^PbtT{`o1QxINEGbaR%G~>@|HV)3)|VQneUtlAZe9MVL*z zoVIN@_Jc6F+%ZlYh_ejtPV0PX#^=RmdoBjF;+r*&!d{DMB`Us`A6V=5z+z z)@Iu+5pqAzwtfY!}GYig56E)X5B$lzMYjf_^tndxD}!`)c4AwN5hkJ!kuFX8Y5 zH(PoNDe*-xewh<1((2b_6!Vg+fq?z54PUL!k-qJN5FZtcB z*1MEL|3M&Bm))w7qZH<#cRv{ZO)hCC2N@PHDrMe`ri+(cKQv$;F{>KE@v9T(m21ht zz?zXld9<@V`$xNnG*6ydas?2Iu!xA&yLumQ-!+Q!n39Us1C10gWLaGqLGk078;gmD z9LYX;)NLau`?*nnFE;LT zb!9+=yBs?OR}pTPhO-s^8jZCW9OY3pvb34DJO)9FsE^alG0ZD(*qyL=q>yOL;*jQ^ z;Jw+u_jWz|@4g)a*aA9o%v|VpP4<@#@Sm~#iN^>#P`>#_;BjlFoDpB2Z-3hQ8Z1Cu zy`ru-322u#_AVDRK6w2vJlv(jj|@`{!-bhn?y-_Xnx-{vvy016kuEBeC|dnJkLXuA zvp*M46>BI=77!I5Cw5!LXcLMH-dm?a%Xag}S0jV|0C^*BD-P1u@?A@9e|uzBW}=Xi zQsl4Da)gnr{W2dZ7UsNL78x8}zH>0a>AaC=2hy29Cg^jHlH~Ho?uRVK74c54(M!H4 zYtMl5m|6WB&+)-NcucD^d(Da+k6beM$vdiOGJ0ARCu~x-Zmg&b>$H7wfo*D4{g!Df z8!%+yoe_fI$F&-k01yAC=-vdXoM(irq^>T#Ad`hT4`U)@f5G;JimLh}Z>M^%wisc= zu3`moE-y|kCie+CEUsjD{a%a=d9qzWLY2_3nE;qZ5q&Vs%JRuOZqL}e25v4LPuPd6upT$F@vW+?hNx8P3Wn*2FQOM-0S z;6o;wAe<6WT_fj)l4{Y>SJiqx|?x7>NJmlhcV&cDW9Y0ojv zFwf+LC}%ptu~LlwdMP~C7-Do2gxc;B^I#ewoUff zm$daPbA_bDdrVkl-)JC&C-;9rYAZ$rtY{ej1zGysm-mR5U+l?z8YQ*^%(Ap+fYw zQ5UY-P97$#7EZtXbqbex{|2HW`GLsVM@Efcst)y4J==36*LrJR?*zShvl;dcC1pu< zsM0*tz8HI?(<;-%@?u&#c=Qe$AG{HpEmkIRX}IuH*;y~^_ujN+3`{lRIbCDo+4F1G85K5d*6;}X3`!Jw7J45;|vJnVjr1#Ta;m7^~ zQb3f+)FC=|tj^^hKAQtDc`>`m@}(m+04O4+E^mkPe&AoJDdm6Df=O`%N1!vlEbjiv zk2*)Xd!*jw}|H%(v?f$>=5!(}q&inNFY0OUzvj6=tEPuno7<^3pSE_V=ap76#t0}+f zX|KZnI^hqAvdDP=nvHkk_jc~*@P2#fDzM;hz*qsFQj7*)xe;h-W3jrevxOO_LT_XI ztPb7>Zme&c?dUOlW0 z$Q>)N{61Cz%iJe-PGS47f;?aR-X@KohQGC56-Bzt;8mgCE%)-WzC+`xz!VUR3~~~` z&xhc;_JceY*2tzCuu3?cOfynl_xq`5r}`y8wC&-B;8ZoD6Li)mS!k@rH}dWwuIvbl z=)Lmu77-3|y$Eu-9?#8DJB2|O*Tb=lb+lGWY8hlKctF~(+*nn&a))q6i?*M-1e(pw+#6r_(wzi_#-P7wSzwnS_qZD+`S1{a zuXjA&>jC{gFU81q^cZ1c5Sf-INMP&^p7v|~*`Ed+x&uz1VPL(B-6kkxO%|Op>}JWp zwg=MO&B`}v9=G7Hx261|fgHiU(OExDkK;eN%=*P6+|oZ8svWy)8dM^PCSfHayCMYN z%Pl($FB~h9#r?;A!omvb%q*gKN!%4h%g^%HhQc!lE5DaQs;<3(GkmknCF2RLfxY^Pw+=p|@utj_fd?8ks$G~{X z0TsrVdxadQDd_b?8M|Bg<*E|<$Z%$k!iga#dDx_D zIF-p46D2OJ13^;PmE~80KQ4C$nMP}6(WGfx!cz*oQHmGypT3EDBKv_NV<9<XVqaxnxiIEF~-Y82Lj*c?1G)<7eYgb7=Ws0`idZs7SG|1s($n-XRWNMrC1^V28J~iLT?)TkZNBl3MM}Arp<$TT0CU zPj9PtJd(gCejtIszYn95lF7i^kYyb$x%7x)Fwz}s(*s3RF1OHdP1cIR?eYClKh`+E%bo)UbBy-8ekKYA=F zMzT6f3U~G8EU5SLfEpBhT^Zh$=Y_g5$hMj_n<$#(H0}@6rwbzZjYOyS#3KD%AOkG$ z&6MqlZ%SM!@t2|@h~+2E2~~D#2kPz774795fq_(Y-QShHOU;|z)l5P|PU6r$FngZ7 zi%%w-JSXmMJNusQ)q-}}fWxUgKYd%%=(Hgs-?h^51(^{r7T?ig+lmIvdI?UBwXmm{ z`IT6N;qu%Sr$)$!GRaMH7Zi7aHC=AxUx&SV{Cd$}6Yp5b$&|LnWTN>wd~qPep7*{K zIA$YWN8ly8!hBmN!jZM-zCW7{p?$zPx-Gnd%lGN_>1E3O%e-ZO@T9ZjPb_jLC$s6- zk6QIIN`x6wqe&e!GaMxABcGNKClm)vNnVgwFQW6;#z*zW2iPtNKLv?mf1q$svt47Fh79(c zZl?PsCyD4XK@A4*>)4s-JjuI!#0Lh}*#Ya5zO3Wgn%(t#I_PwL$+4rvm_6}m?Fzi@ z(K>Cq_$kTj<=E%hTdS>&BA^<{F#gm$-L{h47wmOx%SJGioRK|6^pq${d!7{?F*kH7 zY>D1pxKp|-)m3#1j6xyeRIK@la@ea&p4}*$zF!>8;V>TYhVS`h2WbP%?q`b?W%k-? zhCSpvUJ!5gEiu}s#A;B7M5bG^SaPoP{ zL1V4|Za|DVd30^<_Of8({L=5~o^fBxoo($H3JLSpwia~em_9}@e&rST){T5hiRkNn z;UrG^aySE>o_D@sOTznrl2gj_mjrK@MmD*b#N(D8K}b!`n;Z;q z@4Yaw+?{G~MxmLM9J=$}0b>Uf>`Ee}nuvgDX^1Met;V9RZaH5s&Sx1)tHzcja>iIB zPoJ;dBbjA!s!Y=2pA5%q%DiKx=eOHBTWX+gd`{`SmUx zk%v8e%KqPDmFeYgr?5I}ZM}r1#(y)-eO4cShN}K~)azte@&yXUgy9azJ@72t7RN3Q z?4|Bt<>BpI6eFd}d9P4OiLJ?py}9U2*EFUPi)H%+@3|iFJJN5XwNNk0`>xUMCjL(s zTQW*zeB5+(gt;c1{dobcL!>P1M`)g$Dl)-74%kl?DZh@BipiFO`a^ntYqht&+8GnP zH3fphElIYR;k^Swtt9YDA=L4er0qSC1@+j04BHox{}V^V-#noX{|S5MQTXrc;`Nw% zOb4HSL`C#MWJ9F(Wc{klZ-a`BbyT$)ruJgSkAo&3o_8VB`mxN*P9k=rO1-(HNO^`d zOt~?>>}ul>Vqkjonw+)j;!o(OT_8&|Re)RgecR(Y(GD*v20q++K&;G3=N^3lE#sZSaerCs}G$KyFU`mWE8hq!MU z^3A16pHT|DKRM)Qq`~(9+Sh(V6&B4gW4YlL@#OfWYdfN%DIj8%{ zv1gm4m7lYiUiJt}d)# zywr^ShIc%x@FP*mvBHYEKF_A;7|;%cjLRM9&gxBgiD;VDc!Y^&_z9F z=!|`1qEbzbr$EqB#~x_$l}C$?2f*(zX8R7szOr9c*8BNjHNT3mZ1Uke{d^&JGIYf5 zlcZeu)<_O_>oamllWOm}&8+l1S6c#m{8##mTJy!ufEjUw*Dwlgn!x8QSrV)|-cfIg z!vXsPc5yM(JfoMjZw}C?sy?Qm#EpVj*y^vl+Fc87IOoU3V9}DjXK+{u)pYOE{2fb| zMbHj*tbXxtjY>B0GROUduMZlve+x;wK>i;Rc4%ycNQmC zT}a^vUtUelMFy~S>m&{A!F#3Bkmw@EV#vt7ARxm}QIHXylb3ew^T~nyGb{by%NZ;i zQlu$!=yO_ZQw>nKQZ_FKbUcq6x%;{5m&a^RS<;of^Pu(^(G{?Peh6g(I7+6DbG2$l zM9d&2m7Ub;+k1+$wzENgQRaBC#&dV~`mbdrKctc4Re|`{JAj7|ng+CPPq`kM8y*5~ z^CD4~0JRiG5l}z_3CJLC5Ed%Mv?HoO< z9>aZ6pMy|2I{H^0iGe~ld;!0N3imSsUX1{tZo><2*qM;d%2@=ng=#Jj`L3p~)& zs#^Z}Up@=tBfct7oB$cnEp|Qcyh)SXBm(rlAix6hBoa{jSNJ}!HcI{5%})KjG3=*g zgO7*)ey{&SYuLY!0NVcVcgz2`*3kc{Zqmy8x9ccf_>C9(^G*<&+zYo48i@!u$G7%0 zDFxu{dO^c<*cbBpKUl+RESVm&cV&i{6mv6CvOS{Q*gq+DcZs=XP+1GV1nwiHu>~!o zNeL}~6NiA7KQS6%rZ@YHSL>1>af6CR`iFw>D&FFs#Y`}q0i(k`BZanP-Q)63K$hg~ zey0zINk=?YvIyI=E!S4d9y~4mJJ0UUp-)W&|F5h`%eTqEL7=z4D4m35L8O zfvb3Cw_apm@h)Zs> zO{&ix){~dEPmbPuiN=OIwT82w zQ|wbRd(RQe_F|6Y$2^xj6PD&75sklfLJ;haGlAc4JmHLNePD|(rj}M@E1Ed#FGjBD zVwSjONv?I8v?+*^E({cjN*8!vwFj$Gg)%OVqHWT;g}A6RGnqEk&bl9^`^^-=+%%M> zDKMCnZ_;)YqA#lr9i_8A3~g6pp)T>mb%GHU`OVp?lMKNM_p^x`p;`&7LQmu{V8s)6 zGL?UJ*G^#YzVAHW|8w+e@~@I?y);m1Yi^WcFp@EBoSqcF#`qx&c3w0jXhue{h_Zgy zJ3pg)WB;ZOs>*4@z8Ud)1(#e6h(KOu*;E_F|E>T3eSG|5HuyheoaXebcJ;6owjdQ7g9SvpJ8UGrf{9zBVh+mD9a=++OZHa&d`Rcy8= zG^+)PONsZ5u}tAiF@vU;7MBU*I0{LE!+`?72Os0b)q5FFge_!t(L`M=KCa%K8_It^ z74YlCvk}!!{9tZ-<%p~bg&4HzKrhATJf0F;C_^t4#T&hFQ$)b${l5VBt;9fHpP{WM z9C%^$sO3yWm#AWAUc-)hCH|BtX z7Rsg^PizQ3Blcu_!G!^gu=mQVEj2fq`VBsns8C!rT;&^*{ zBWpygMEhde=bJ(=7dC_$wOR`8z(Pa9&GQlQX%Wa+m*~O@3=Se~tUKH7t^9KO&5arK zu!5lA5HjIyueX(6Agp9xnrz=|UR5XR6SD|%GBM;vLF=eWT&={+6yA-HU_4}^t+S+9 zd;nMaW;x&NnsjD#XOLki)!I!#M@otXnJdcKamn-dRaNQB(CG9fgSFwSQ_($L8k_Xv zx^i>})7j|VUc3whvh&z{&WwknF_6BGnKqK9u5Os!Y;ICWCscIypkkK3+;sD-4JIq* zY)$vv1^wXi=PNW`9sclvXa^Q6@%-d_4EY)8;rLBA(@0Q}TgG3ZFRC?ysS`5(snuud z8oH0G!b(A3$nmG#Y-%S$S4Xm3F6gYD` zc^V|@q@^|Tu*uQ%Rlrg4*ujxz1b(F+ux|)MhT-3VkC2wh;uY2mg*ZJwHSOJXA-~@S zHdfq;t2X6fnPXJ1~s7u>9Gy+ z!pdPvV#5`gvxK4Mgq0h-i|BMD4guTgf-PF1(ZkS&#u!q;a|0wYc;0hZ%H;D6r1lov z$6hK1`?Q!y&e}Q*oL?s$Ndw*-RxPr~su9w3p%R`eH4l^P^!_I%%}!;#qJ<|F=I+j> zar~qbZ{E&pz_CIXW7}jo_2dkTz&p8&l_1oa+=H!aM2Gxud3eWCTWetDg@5$o#Qo*1 z>r4mV7-_puYkdT1c zOWYpHhL(tRSf(Y!(lR~_Na%N=xe$NF)}d62-f`N?shO9oZ|KF%I#d1LYg4Q27Tv}V zd1j_*q980a+I1Puz!)abAcdnQYjShEy?Gk$`ftRYNgc`Uw!ohDbLPMwq#l4aH7$rK zy_dpp{)jYzUzRz|A_;z|Yk|X-3cj7{b+i&;%WOuD{btsG5?*9%b5sCxuI(4^{Qx3&ot1sQQCF`nUovtzgytbcVciN`|q@*tPI@S7rfGib1J{sCbhtnqc$8{wH ztzbu;>u)Jlcx^0u1IusC>^n<-y&{8XF7+&orqb3I7SVI!T`sgyPAKjmHS~bOAM2}a5MRRR%pW}QlD`zf~NVhn3ffvFu$Ip^kDP)K;;uDdBr8eT<_Y~kgHdTOh zTB@7co~3_YnS5KR<*QauDse=V9DLCjRZX z%F>db>m$>{tsr6zmt;dz@&V$m=;F!vY@c;jyuzMh1ZInM*zEwa5n|(mD~hoEQhlE$ z*H`7MrTxVUQ^yTy!hNQ1P^q7UE#ITowCE5w`)w_kVZp={f5Hs>!Y38zT4%LMzwykQ)@2 z;=vwO4(q0)=Kn}GHO-`26YibxVdc%Gc#kanh*5-tHBk%IF#dw&niSg@(`E|`${cgJ z%ZXTnzw-$Y==D+U&8v@jgSIWEFizSMrRGes-p^b_^;_Ju+`6fDjq?IxI8L{ibG-75 z|Hg_H14%&}Tw1XZ$>qN2%rMLEZhz-lCuv>VdP$;iV$J=XdR{Vvx0x=8n{;mn0XiHs z+>i43Rfs|p)@-_!-qmUTI2LkeefR24a!APf_|balaVlE~w%RoE2k5)c>cuv#fXxqz z{(nJz4EYi3~;zwNIEx^x>=_BfpsLa-lV-F})sQr%db&f4-_liYafq^MhTiiNG^-Z&2MUm}C zzRt(VSq}Emw1CQq`nM&m1cug>UnkUWBWg-u)ct>e!uCGRD-?8C$-isXQ!d}Zk7-jw zQ}0kaqP+)qFxg_8DMuER@s?Pr>0&ulz7gb$+J4EVvY^`1)}#oCBFe-avv18EFz7ad zu|+g6=t6>lA0r|(XD!a7udh5-%gJUCLg9!sv-LLUfZ$NdX;$-A(IoL^wq|3C&DyO~ z+mhAmi@w95bn163c0uADMa&Ft1|Fby8dZVRapy6GSK$@2&K>%N#sh!Kp?X3Xu>FOW10a(X9se&T#D^1+Wknv;jMfQcN`6-#3tuwpGD!YJUUc4wGi|4zQ- zecw@;o_=qw6TQwI=T=TIrdTsheAM}+;08|BF<|=sO(9@>_h(`H0UHXz9N@J}EKxS` zzzg7LwgovTBT8-~U%H?6|WG;7hWbxu4h zoOq3VpVg?7}>BTVTK+GBfeYTgCg&aS^-$FCnuGMt#pSe&z zM>|b+5y;&fsFh%vQw}|D(k`>MAy8!E4f0yCVE>X#SvS5Nk~l#rh2+7qc#^f|Ol)tO zKbUr4i8Y8T7wCQDq$S)f_O**H3)gOI(Xf4|F>r^cj6LPg~HdZK2C z`WLyGlb^R$2zCK{A6Is@l>rORDzTw-GwcdxtsqLp+nDt>jAHiym9?4UmhS~uaF2?s zc#9emhUZ!fqgK(1n=W8OE^_h#PY8%zDa8UJbZ%8`p%{fqFpq9d7dZ|G1ws5fypLw8 zh}}3iPqxVRzVz#7#4F@ZzgE)L*5Jipppj$alw3RVY$_JgUptECXv^;9#d(?F@(VRS z=;ay45M5>?S}jfiw*D2;LfsezC|AfA4Z`kceBmlD$=+vl7G{goA) z^jnPs;8aGI2URt)_>&i0*9Qr&upgNhqUzX0!6ZB?{hC32pPRr)?LHC>xm)k~izScg zE&l)&s%shPab@?X=`3<`Y<$yQ-94eR)eO42CBtpor`kWud3v{eY;12#=>2J%z~^mA zk=!(+xv))t$L=%l<9u6qpFI zkET=;9t>}A@}X_{tGg=aTechUZ6P#Ar!j(_8N|2cORV-_TiYc>?L6sRGdx_f_mwN+ zlQu8aU42992PQ15rskCr$KGldYh^6eI~cOyF@$Yl4H^WuMhug+;EPZ>VeaOD&Oc+# zM1WSadiLP<-i5%FT=juIf_`V2dXzXNhJHKLe4uhjdvEx^1`;hj$qs|zZRhq8AE}#rS~@JI2NyA za@=z`y9B97U8ad#(w`V0FHB~{6-tSA=Nl({+6vIj{=NU#Kz$tSd?~J43K$v7j34>* zyaq;Qv;}?FYFwSIl4=^->g>22_eLgI(l6QQ%s-LBuHU)z6ayT+UnLbzmG8H%@7}EU zHeMDM8zQ^Igu(qW28@)hF{vn}8^}421GADptmgou+V{UksUKF#DPz4ev0a`IqmPz< zx|7z^Fp&!vp7ub|eFRsPc&74Cdzeq!OF=IMgn*uh;N`$NTk>1_yA4ja+aI3ifl3K) z1IhJq*ff%^kcw7GB<<`!%kfHQC@k%hjht+t3ZvF`kvP9jBE+yf7i*1>NaV0gviHtEclwU_fTfD5P@(r;U?~Zken8SY^LB!0y=nQ!!tcqB zj{2FMmJDTkre#o!_}3XmcD}Gzi6}IhXXJ{x-|e2(+O~|{Ha0W>1=|ZVUOR3PP=15! z>F&K;dq-e!6N3qRPDfhFXs@?M-eyo*5PvK7CEm$(uQ^7-Kjs+Y>h#k)xUS*aaz!7_ z^Er!X=pLnsX0S9iHeCtIGwE&={8?@7d{$$ihk3fO&ub_bN>le)KR-zhO}Bld6Ytw` z&4}80CRqQL{C{OQt74{U+tB#Sz2x`97Kdxn>Q>>| z28?x!3%NR$W$T_drQMb)2D>ggd#14|`waqn^Au}E1@IC2X9jv4kGb?vXnmT^uA~!m zC6?V^zci=-MrYZ(gBM?mG}rXGKDnVTSoox3etwlBPcV6=YXD3pYZcw?(zfji$Y2i@ z0~W&E%Q_ja-|63~m1D4T?lwHY_w8tzlHDo|Y($om26*jLjSTv<*BEAxH(P6q1j8Kft5UyBKCaJ=;23zsUO8VCU3o1&jz4394nHI!8O%--VnwcPs)vpRf5-m$vSSq>byZY0~7_T}4fdYwyjh&6+@nd?wc zi4>mE@|P8S+bo6!Yhd$h_S>~cFuRJ|ltS)+qqLzuq11`}^_Lw`2O*{Eh}V4(WrDZ4 zVis}ia2f{$#yafi!A=mCI10hzArqYc0Il@g!4)RU!XZ>`xFZk7<0!wr)xe~5U5A}G z>;hF1o2);82HBB_xVV1#+`p1YFANAp%`6wv;Fxv#17veaqlF))O`|QIki-fo$Nf7w zDdT}s3+;S8aNX+K8pr{^5vuy$N|>sI)z`8iUYSo2VPW<`oD4N|e|}~0we$%(AY2nr z-2r4)jCO7*TecsJVKJHKS$6G%p+8GDbni=Ym)L6y8W%Kr>1++#vfJcw8Zu7UGAw{g z-V@*=JrdMu`Sz>`ZZ&-+cXejt_3oijm7a;7N$v$2;_gY~1$0H}396I8V{2g9Vf=yH z!DRRM6^`cMJ#;ImIkww5D-=JN3G14c((6N9&J!R&qM*PM>d0LuOQj){w)-`D?X~05 z3K);EGd1%r2C)R1b-j_73mdW5t)KxXZ6j39R}^Y*m!FWM2g}(#fY1GsP8JQlY7bdr*N-_@u4GV*ix`@Y(yd!mi%3KYt zF~g@@5!1Tjad$|~sap!w3YX-1!e-{Uy2!gA{aWVvUy(-!(P9QQB-erqzh!$mzr{N% zIwwlO6W$8*(0E;DIFi9Y9@=XJ(;SryX=Ig}J%?w5R|lhNCV%Nl%*hR(Bb!>>6@<`F zy;H8Ob7WNgbW(q0T(i{w5;hQt$rGm0ZTK@5vThQZ?%$mF04ak%p~;V8Dk3XU4Ak5I?gcimmBlK;y{(@lVfXJPLBt9HI4MwI*Lw2 zG_9Xvm>kaJ!N0_Hcs8rZ4t?k56ZoXTNiAuoHp%iWL3$fo zrpq+H=|$i1a|zc^O-zj!l3yEU(>ORKj}N#8ssNJ&?DYZRi#q#kemSZ*IjLo67~IEb zNe%0o25Y90!--?fuOh+VkmTf5rOetJrf;#y#dMB8slBwutfgZ0*C2o8wT zN}L-Y*XD0i0tV6ceQ7wmtDQ@gVcDh2W3*J_I@(h-NG81R#9nce59|$WAaRKtyp zje1Thd=J3IDmtT@m~CFeTC$A7J=h>6!W3~9>le*RcL2lZ1&3v=!bu_eaIkWRh3TBu zvKS%z@x(=JI(UySu+omAv4kd7Fq4SF;mB#yu;+LI+cd`bSHwR&b8dnsw{`Uv-p=Z? z<(5rhvh|J&Lir|os- z+53)OF9;^Ed+PhEOQY6TmR=euVSJ-A(>*iFS5LZqCN$h0^pYq|>VqNKIZ##GW0Rz2 zRhhUyN^QdR`^v%88*3;&za`Vkl6u%0CT*K>@-BU=pDA}!l%crWTOv#v{^#Y3JE7n> zzAWC4-&0yLjQ&=2Ecne`CxG&b!vw5T?b4;^8yt01rZ=W@rz=qO zIii2YiF51@?|*qhHd1||>GRs!Aw&4~qj6fE_kvNnyl9$q5tg4Zp8k>78yLMU`Mj0) zyNu@yoK*YH9{%^aD4mOI0Ee`$9x#Y4Y8XGt<=;{E4}Q-Ow`w4g7d{i=LY zx@g$av}9QqtTGKws6TQ-GqjK+E*h8V*c_N+{J?wHpOzTfmh|Bk&p)krChY_ZvrzTs z7pXyi3s2mcr->wOpfIJ)6TD+*(!fcvSHKu5=)8|se2Cpz|BY^Ae8UgOXW~n3{FSQ= z4Hmm`+MetMXqC&3?M7XdfCDXkMqyZ)+bE836 znLHsPP00_C5}{9o4);E%j|e_W0)VVi{KllTw_j`m|8atnz#4x;5mC=D^oP(tThsSc z=jDS4;*AaR7=Mbmdijql{lbpa`~uQAc~^?zk`XetViPhfH@;xLh~|gLtyADq|M^X2 zY@1DCKRL{$A={c$?#oL(OANyvc93f0iQxyYmDPsT8L^A(uBIWe{HHHWr zxpM@&NmKRof)0dyJKox6>Ex*tERNt6l>&K;jIaY+u;B2PD)ABAXuiVryY8S@ku6rs zk;R+A-KaO+1wL`Pi@hg< 0P_Ta^#=$I0uVO^kmb%@4~qWn)=KC8 z0Db+n?1#|W2vGrWni`EW+u`un5YJ4q3%;ka8cmALTn4uffK!>Zy#$7*ZY0t_m z8{>sPc%zC8Ahv@(Km`dcLx3*_gCSxD^{~A5*5A9{&9_LrhAJPPjk56kJ zGVf1se%}EPKx}ky?O_kVdU1NMzO6sUZS`PqZg|~9IV)h;=O1gf4 zC*uT{uNtIDAru*_EG8p)P4s8)Ed~azC*MP6?)GEPU(IUumOf7Mb`F(KkU3az>q07Ag`p zh>p|h;4Xu>Gac1wIDacy`m;eTGk%U9TG-?GqGOW!li_V%4K48_-)>S)Ohkf%qL42pBk?K`RFJq2yZg>Rkk zegEN2-P!P0GvS7B-Mbdq_~Y`Gj7VOs-?Me*1qmbP-E?Ny!dV`1EdLxjs>jBp`;tp7 z%mIN7O!v1^f`INE*MI0W?tEL-^MA zA0X~kyqQc5KyJ{uUUd8Nfe5K9(CntO>gwNy0ZlCM^#Hz2=+!l#WGi34k2U(|LA}6a z$g*&!4fLHqK$1hETz|rb=~nS*uZX?@wI$lUeyX8^_?^kjX_w&4=;C&DfftgO`FEuK z`<0owkD>)YjMwq#&-+2jyJ-WId)7AD|Ck(pP;f;K-uKq4_G%_qJt8jz%7TFPE6`iN z;oT(LnA4;cu%@vm~0$x1d(=ngxZeUU)iIf>MUOxv8+sQ#m ze|7F3uMlpXKQIaW5G-oE1y7ukvw6XtOI*^XlxED$5`IG2J@;}#LT z{ULU#mqmLMyM^P1L#Y1c?VW66Zs3& zcCvTKVMSJ1+2-F8&^PSN(AFwPtoON@8!3*SC1yg3daZCXkkn2v9HVY>ds&?DgyLI~ zgkc%8%tT1MkFPbly0O$X(^>sx?38VfCADb zpwvXVk(`utr;@@Xq`SMO--E98?xpWJ-@DG)`molV-;g*8@cEFSe8yE^g8M#EfAKMboTIGyn81zW0CPC+@B+9F zo3V+1(AK(zM01EOSOKt4nqjc9M-wWXZi-5P>VP0I7mj$LnXW2Mj(WoI!)4Ckk^-(e z<&)SRWuexYMTZ+v7?PK7cr&-`5Pji23wPteE}~}B3VbL3ArcbA;Rm?#pu;9q;4>i} zfJ^;Xya|*M%J|nGgyL`)J%d;C+x+Uot4TZP6hYZ}UDVpMyzh~>R!s|vh}4!FHIaSI zNzNnOikk;KcY^?IQ@$%UyL?SqqQsaHr_-`L8E2~CIXcHz!RFdYaNtWJ7#|R=r zC26tLNlJId9L15O;dB!)#RN<0GJfK_#hnl%ET_uI1yY8-=)q8}ESY6CKRfejx!bq; zI_@rys;(cxB+Lr=@?I>`?gfOvL+zpOV$BCN(fuDR1r6?IadXvz$f?@wJe> ze!r+4jV~!*Aldth^`OS=JUQy!%EJcM%r+#IF01N?8C8MA11?ppDGi8mSFA%K-Yd1K zCK~&cuZp`o!LBAwc4ip>sLjEFJO;Crx%;`Sg%O!qYgCh8iOXgGeg3fHWPN_E_Zh@s z)8QS5%+w==LbS|SYK%GE^_=_ z{o}Ho>Zugu3E@Q@SeZsbjw`&hCUG^#<^z^jG+C@w)A&-Z&WRekb`R`r_6ZTIm&KCV}|25PVh`Vc#tUWMrtQ z9M&Y%Dr0>-krM!W;cIntPGGg;ib}9F;LG%H;6iONR+K*FKgyOq;j2FRSap5nJcRO| zcOgG=`HMsV5pJD0Y5#jzt&+5!aaXvRqD-^fNS__@fu8>Q;Ah?LI2p&g8{`Gt$eJ31 z2tpF5DHx!Mvc1l@Tz$HM25yuvdXg-F9XNgQXF}ssH9JHMSrVksNGf#8=vw+O%Wr7z z!}RnNcy2R4c#2PKau>U(moKk1HZwrVB_Y90<6;M5gZml?giw}!I!v$C42AVIUXKv^ zX9iBcz`6YDNW&yH9`jV^jK6hvG2-b=18*jY$%t(#%_WwudXjE>J9Z7ywq7)M^AQ2U z7wC`7xS0>{JY%yu&FbDhq176vUQmIxd0G=hOVGHv)T}5N;#wtyIV_8Bjh|vW$My;J z+e$hMiC&$Dt;SeY zAtRd+)`3uuFp(2QR3Jv49-n;dRk%!e;=say7ptBg8-%=$>Lm87X9&I@dWvqs;gk6T z@>rReNQ?lPT{Kh~@0;B3dhg_Sxib$aU#QOXkw4o*-8I%grx(X?M+DZH_^sTi$0LiE z54AW?Z1Nq9uNNue6jmG@e9ng*JBV;XS(=&wLcG>YAewwT;kZ%Ek zLH813?1Wt&QG7no626@b1S;`74i?#~IZ!k)KwmpV*Qt9Lf_U<6Sy(hk=Yv}BVOQwt zD`3TR`PB=zKVMcF>t={ePZKY(&>CxyN#AsuHJs6!*44HI=$~M)E?UXW-UAYR(y!8! zj+wjPm{Z_~Xb}t7<`atJ^p=5hlRWjwYpXBuH(D8&-rUM-H5WQHg}ei}5Kq0Q_w=`^akR^o^mh9A_c_fMALg*-sQ8TUsDAwZRr~fvmKb#((BUI*1wf5#d@K{9o;IdK z0HU?OO*JHr=~Hg%Gte?S=AyV41hGn|PjrS@&1FBz)|ZP-^Wn^7Btc#N4$`{D@wIQj zSj$U)C8&t2oVYEtU2&3}S4wvdTS;PPH*sC0eBy(HGb_>4uPI7CVn4px?>|<;hTPXj za3DkdR=R9gMguF@I8aEoyIag-RVNhGQ@yv7Y+Vi4!{>%glL700Rt_tNFUnhp(?W=( zv|kAYw8nAvf*I4wC;=19CTo_YHKYFu<$YK$`Vdn;tQwMdPf1k0GnD`|hNRMtF!W?3 zpKRwas?$#x(wf<3xEH#9rw=vMq%NU#ba0$wBc_X{=yuNhGAQC8BRmp~u(ZHh#~}NJ zm1Uj(^IG++9)#_c_li#~rF<8lWkRYP6RD({%6A0|G7RQL-@f9`%*kKCR*>_%@!IA<;Jj{+)8J&Y z^&)U&T2IR(>P5|Ah9dV<*&iGfOh}0U2Sqc$8W7E?+OvOuc2_QTRk}QOV*?W=O9$27 z&Iax|@c542pUBzYtBvl-+F%=Exi7}r$732R{O%&n?Jy;!+tm>J8oCXz zzO7D)j-3nu(J|0xbP=D*lwV>%`O95$=jx;(e;h4Ai{(A6zQ@9x20MT z-*)glsNH!%@>xn7e%1wjA@WuQ3x~E~tAVpRWZCInSYV{2grm3tgv%b(T~@bO4RK4v z)A9)8wCD*^frS5dE+Us5w9V3+lh0MeRa<4hHgzo#$0LzuuIq*|Kr29<7i)W@-EpY zT(!y+NsCBSEi+GJY4w=5QZ%dPM|8gXGY3J!>Ix82bY43m3d%3XWSE;Hc63+t-00V% zC68@QkwdqT-(c0?q$iSzqxi&ns4oW6lt(Agl_)>oZ$2 z-)ytEzIj~tDWb2?^0c77aRO6x<_ieD{i}LVK(lP42l5CrSLlU{zt1fN+?C5}U zhohE95G%@@QsbyAe-(cOcIn&t`?GhPtSE>RzJcTxbLE%V;rC~(>!1O_!K}MkBd#$b z?K!mm=5JebIih&0OGqe|7HP;xQa+;sL8G7jo%-3|v0s}UKE@sdr*GT`2NWF_OO6Y9 zhoq^CsZF{mEaHf@_jCTaE2K^ty5O&xzzyJVw~Yq|sO6uF{I_}whTmajhre_ky1H#} z1D6z==K{hbs}p)a7@2VQJBYO86~Q4RCg<*e9zqF`oEOfJI#fUCQ(JQu?aJOn6pmg zf2_Y*n4>+X)rKD-;m%c5F8%FXwnNvE#8Fxr;g+A^+>h3t{5dyylw89@3U+_Yob^Xu zaA=Z23`(Z=bxe`|`i0&6$c_W6QFvz@h^xj55rm06t!ecTloGz8yici**ac^;7&rL@ zk^aa>M<0a5sm&7lVG?#P(m;wDdv)0s3lY$!{B^ki397#?C+%5^eT~dQkIRm`*qxB2 zDJuh+IDms?wpM8HFm=w;@u6N&OLIxr|NKfs?bI>Ayv;P0>pDP zUI84|n_xhku}Z5E7l@uQ05?w`U7O%xI#YQf?|c}Uf6r5M{WY)dgZ-WVger-0698KG zhfLzsKV%Z+W)q6`TLISITYuvR$#yYxp%NGOt923pJEF1)b;{pBGplMynoO12T4E+i zbw`Nva|sxT%oWK8m3Y{O#kiXrdGFp*U3I5Eduq;Kb9Echg+zI>hzl%B)10{ip=B!| zAZs(Apj8v6xKB7xl^3T`YbKk?s4jp0&Zy_Id9~3Ju^LE&wmqRT=BSf831L&uNL`Gf zb2oR_)WFJ0^nLBv;f0Td36K@Brctr2?Yc(yJLDch{nQ>N`tDt7eRwYM;5BU?$moi? zv3|6XWbHKZ^x2GF&#FU`=Uo}wC*MqCUHm{-oKtl{#AgH4Em#ar2Wa`{08`E1EsC9>ytF2jNtURU}%xFeP6 zPiN26>&n~j=GGY9*;^~7iS@4;9OkY9*Kr2tTTdK#q>U(*g_%;pHtjryUf!?t(`Iem zMo=1Cq?14h_YlCZMaeIigPjc@2)%o>{#h!g=oZ=feY;a)Uu`#a6|%SF_`X_u596Cb z+bv{eY2quXF-eQr`zibD6U0N=Ee^Jc2VXlxme(S&x@ZfAW#@H!!_SQ*sN-mmo5}PV zv0XGi?Mnw@wAoN5yXQ<#E0(XDO?U4zbq7AfdFQCM?9TG~h6h?Cn_CE5Fj$ z*42%=uxNs5Ia*$n`AkZ&`YmgM6287(^dZV=Vs%ONⅇ66&ySuNrnP&o_2 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%0A^Z5p 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 Date: Thu, 4 Jul 2024 11:22:16 -0400 Subject: [PATCH 2/3] CLDR-17566 text diffs and minor changes --- .../alternate-time-formats.txt | 2 +- .../TEMP-TEXT-FILES/bcp-47-changes-draft.txt | 34 ++-- .../TEMP-TEXT-FILES/bcp47-syntax-mapping.txt | 184 +++++++++++++++--- .../bcp47-validation-and-canonicalization.txt | 163 ++++++++-------- .../bidi-handling-of-structured-text.txt | 12 +- .../design-proposals/bcp-47-changes-draft.md | 6 +- .../design-proposals/bcp47-syntax-mapping.md | 2 +- .../bidi-handling-of-structured-text.md | 2 +- 8 files changed, 275 insertions(+), 130 deletions(-) diff --git a/docs/site/TEMP-TEXT-FILES/alternate-time-formats.txt b/docs/site/TEMP-TEXT-FILES/alternate-time-formats.txt index 3dece9482fb..74c9fcd5b8f 100644 --- a/docs/site/TEMP-TEXT-FILES/alternate-time-formats.txt +++ b/docs/site/TEMP-TEXT-FILES/alternate-time-formats.txt @@ -1,5 +1,5 @@ Alternate Time Formats -This design proposal is intended to solve the problem that sometimes the desired time separator for a pattern may vary depending on the numbering system used. Rather than adding an additional type of number symbol just for the time separator, a more generalized solution would be to expand the syntax for numbering system overrides in patterns, in order to allow a simple replacement of a literal in the pattern based on the numbering system. The following description of the numbering system override is from the current TR35: +This design proposal is intended to solve the problem that sometimes the desired time separator for a pattern may vary depending on the numbering system used. Rather than adding an additional type of number symbol just for the time separator, a more generalized solution would be to expand the syntax for numbering system overrides in patterns, in order to allow a simple replacement of a literal in the pattern based on the numbering system. The following description of the numbering system override is from the current TR35: The numbers attribute is used to indicate that numeric quantities in the pattern are to be rendered using a numbering system other than then default numbering system defined for the given locale. The attribute can be in one of two forms. If the alternate numbering system is intended to apply to ALL numeric quantities in the pattern, then simply use the numbering system ID as found in Section C.13 Numbering Systems. To apply the alternate numbering system only to a single field, the syntax "=" can be used one or more times, separated by semicolons. Examples: diff --git a/docs/site/TEMP-TEXT-FILES/bcp-47-changes-draft.txt b/docs/site/TEMP-TEXT-FILES/bcp-47-changes-draft.txt index bc71f088972..6d999252a2f 100644 --- a/docs/site/TEMP-TEXT-FILES/bcp-47-changes-draft.txt +++ b/docs/site/TEMP-TEXT-FILES/bcp-47-changes-draft.txt @@ -2,13 +2,8 @@ BCP 47 Changes (DRAFT) With the new release of the new version of BCP 47, 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 in the spec (and the orginal design proposal), but more changes need to be made. Formula We need to take another look at which languages we show in the survey tool for translation, because the new version is very large, around 7,000 languages. Showing all of those languages in the Survey tool would neither be good for the usability of the tool for most translators, nor for tool performance, so we need some formula for picking which languages to show by default. -For feedback on this document, please file a Reply under http://www.unicode.org/cldr/bugs/locale-bugs?findid=1977 . For discussion of issues, please send email to cldr-users@unicode.org . +For feedback on this document, please file a Reply under http://www.unicode.org/cldr/bugs/locale-bugs?findid=1977. For discussion of issues, please send email to cldr-users@unicode.org. Draft Formula -Notes -** qualified language: excluding collection (except for macrolanguages with predominant forms), ancient, historic, and extinct languages: see Scope and Types. Some could be added as exceptions as needed. -‡ minimal coverage - see Coverage Levels - at a non-draft level. -* 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. 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. A. We show a language code X for translation if any of the following conditions are true: X is a qualified language**, and has at least 100K speakers, and at least one of the following is true: X is has official status* in any country @@ -18,8 +13,13 @@ X has non-draft minimal language coverage‡ in CLDR itself. Only for translation in locale Y: X is a qualified language** that already has a translation in CLDR data in Y. X is an exception explicitly approved by the committee, either in root, or in some language Y. Current examples: Latin, Sanskrit -If a translator finds that X is needed for translation in language Y, then a bug can be filed. If we find the volume is high, we may need to add is some way for a translator to add a language in the survey tool. +If a translator finds that X is needed for translation in language Y, then a bug can be filed. If we find the volume is high, we may need to add is some way for a translator to add a language in the survey tool. B. We show a script code S for translation if and only if it is one of the scripts used by one of the languages shown. +Notes +** qualified language: excluding collection (except for macrolanguages with predominant forms), ancient, historic, and extinct languages: see Scope and Types. Some could be added as exceptions as needed. +‡ minimal coverage - see Coverage Levels - at a non-draft level. +* 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. 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. Please review the generated lists in Filtered Scripts and Languages. A spreadsheet with some details is on http://spreadsheets.google.com/pub?key=rORMJfeNEUR37PlS8HIa_rQ. 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: need to add Norwegian [no], resolve tl vs fil, ... @@ -30,6 +30,18 @@ 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 with an encompassed language that is a "predominant form", CLDR treats the predominant form and the macrolanguage as aliases. See Locale Field Definitions in the spec. We need to flesh that table out to include all of the macrolanguages that are in the Included Languages, 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 +Macrolanguage Encompassed Language Comments +Arabic ' ar ' Standard Arabic ' arb ' +Konkani ' kok ' Konkani ( individual language) ' knn ' +Malay ' ms ' Standard Malay ' zsm ' +Swahili ' sw ' Swahili ( individual language) ' swh ' +Uzbek ' uz ' Northern Uzbek ' uzn ' +Chinese ' zh ' Mandarin Chinese ' cmn ' +Norwegian ' no ' Norwegian Bokmal ' nob ' = nb To regularize, we may want to switch in CLDR from nb as the 'norm' to no. +Serbo-croatian ' sh ' This is a complex situation, and we'll probably leave as is. +Kurdish 'ku' Northern Kurdish 'kmr'? We probably want to change the default content locale to ku-Latn +Akan ' ak ' Twi ' tw ' and Fanti ' fat' This appears to be a mistake in ISO 639. See: ISO 636 Deprecation Requests . +Persian fas (fa) Western Farsi pes and prs Dari This appears to be a mistake in ISO 639. See: ISO 636 Deprecation Requests . These would also go into the element of the supplemental metadata. We may add more such aliases over time, as we find new predominant forms. Note that we still need to offer both aliases for translation in many cases. For example, we want to show both 'no' and 'nb'. Lenient Parsing There are many circumstances where we get less than perfect language identifiers coming in. I think we should have some guidelines as to how to do this. Here are the possibilities: @@ -43,13 +55,13 @@ map away extlangs. Formally, en-yue is valid (this slipped by us in doing BCP 47 Verify that the base language and extlang are both valid language subtags Remove the base language This avoids having to store which languages are also extlangs, and what their prefixes are. -People have to do #1. We should recommend #2, and make it easy to support #3. +People have to do #1. We should recommend #2, and make it easy to support #3. See demo at http://unicode.org/cldr/utility/languageid.jsp Also, we should consider modifying the canonical form of language identifiers so as to have lowercase variants (with the exception of some set of grandfathered codes). The following are generated by GenerateMaximalLocales, plus 7 hand modifications for the last line. 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. 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: Unknown, Official Regional, Official Minority, De facto official, Official. -Included Script Names: 41+ +Included Script Names: 41+ Arabic [Arab], Armenian [Armn] Bengali [Beng] Cyrillic [Cyrl] @@ -98,7 +110,7 @@ Vai [Vaii], Visible Speech [Visp] Western Syriac [Syrj] Yi [Yiii] Inherited [Zinh] -Included Languages: 202 +Included Languages: 202 Abkhazian [ab]-OR, Adyghe [ady]-OR, Afrikaans [af]-O, Akan [ak]-U, Albanian [sq]-O, Amharic [am]-O, Arabic [ar]-O, Armenian [hy]-O, Assamese [as]-O, Asturian [ast]-OR, Avaric [av]-OR, Awadhi [awa]-U, Aymara [ay]-O, Azerbaijani [az]-O Bambara [bm]-U, Bashkir [ba]-OR, Basque [eu]-OR, Belarusian [be]-O, Bengali [bn]-O, Bhojpuri [bho]-U, Bislama [bi]-O, Bosnian [bs]-O, Bulgarian [bg]-O, Burmese [my]-O Catalan [ca]-O, Cebuano [ceb]-OR, Chamorro [ch]-O, Chechen [ce]-OR, Chinese [zh]-O, Chuukese [chk]-O, Croatian [hr]-O, Czech [cs]-O @@ -125,7 +137,7 @@ Waray [war]-OR, Welsh [cy]-OR, Western Frisian [fy]-OR, Wolof [wo]-O, Woods Cree Xhosa [xh]-O Yakut [sah]-OR, Yapese [yap]-O, Yoruba [yo]-O Zhuang [za]-OR, Zulu [zu]-O -Excluded Languages: 299 +Excluded Languages: 299 Achinese [ace]-U, Acoli [ach]-U, Adangme [ada]-U, Afar [aa]-U, Afrihili [afh]-U, Afro-Asiatic Language [afa]-U, Ainu [ain]-U, Akkadian [akk]-U, Aleut [ale]-U, Algonquian Language [alg]-U, Altaic Language [tut]-U, Ancient Egyptian [egy]-U, Ancient Greek [grc]-U, Angika [anp]-U, Apache Language [apa]-U, Aragonese [an]-U, Aramaic [arc]-U, Arapaho [arp]-U, Araucanian [arn]-U, Arawak [arw]-U, Aromanian [rup]-U, Artificial Language [art]-U, Athapascan Language [ath]-U, Atsam [cch]-U, Australian Language [aus]-U, Austronesian Language [map]-U, Avestan [ae]-U Balinese [ban]-U, Baltic Language [bat]-U, Baluchi [bal]-U, Bamileke Language [bai]-U, Banda [bad]-U, Bantu [bnt]-U, Basa [bas]-U, Batak [btk]-U, Beja [bej]-U, Bemba [bem]-U, Berber [ber]-U, Bihari [bh]-U, Bikol [bik]-U, Bini [bin]-U, Blin [byn]-U, Blissymbols [zbl]-U, Braj [bra]-U, Breton [br]-U, Buginese [bug]-U, Buriat [bua]-U Caddo [cad]-U, Carib [car]-U, Caucasian Language [cau]-U, Celtic Language [cel]-U, Central American Indian Language [cai]-U, Chagatai [chg]-U, Chamic Language [cmc]-U, Cherokee [chr]-U, Cheyenne [chy]-U, Chibcha [chb]-U, Chinook Jargon [chn]-U, Chipewyan [chp]-U, Choctaw [cho]-U, Church Slavic [cu]-U, Chuvash [cv]-U, Classical Newari [nwc]-U, Classical Syriac [syc]-U, Coptic [cop]-U, Cornish [kw]-U, Corsican [co]-U, Cree [cr]-U, Creek [mus]-U, Creole or Pidgin [crp]-U, Crimean Turkish [crh]-U, Cushitic Language [cus]-U diff --git a/docs/site/TEMP-TEXT-FILES/bcp47-syntax-mapping.txt b/docs/site/TEMP-TEXT-FILES/bcp47-syntax-mapping.txt index 75532fd4f5f..54070ba625c 100644 --- a/docs/site/TEMP-TEXT-FILES/bcp47-syntax-mapping.txt +++ b/docs/site/TEMP-TEXT-FILES/bcp47-syntax-mapping.txt @@ -1,53 +1,185 @@ BCP47 Syntax Mapping -In the current LDML specification, a Unicode Locale Identifier consists from is composed of a Unicode Language Identifier plus optional locale extensions. Unicode Language Identifier is fully compatible with BCP47 language tag, but the syntax of locale extensions ("@" key "=" type (";" key "=" type)* ) are not. The LDML is trying to define systematical mapping, but the current definition may truncate (and or remove "-" in some type values) key or type value to 8 characters because of the BCP47 language subtag's syntax restriction. The current definition utilizes BCP47 private use features, but we want to make locale extensions formal (writing a new RFC to reserve a singleton letter for the usage), so we can avoid any conflicts with other private use values and also allow software developers to write a parser for Unicode locale extensions confidently. +In the current LDML specification, a Unicode Locale Identifier consists from is composed of a Unicode Language Identifier plus optional locale extensions. Unicode Language Identifier is fully compatible with BCP47 language tag, but the syntax of locale extensions ("@" key "=" type (";" key "=" type)* ) are not. The LDML is trying to define systematical mapping, but the current definition may truncate (and or remove "-" in some type values) key or type value to 8 characters because of the BCP47 language subtag's syntax restriction. The current definition utilizes BCP47 private use features, but we want to make locale extensions formal (writing a new RFC to reserve a singleton letter for the usage), so we can avoid any conflicts with other private use values and also allow software developers to write a parser for Unicode locale extensions confidently. BCP 47 is undergoing a revision which should be done soon: Current version (4646) Latest draft of next version -Once we define formal representation of Unicode locale extensions in BCP47 syntax, we actually no longer have any good reasons to use @key1=type1;key2=type2... syntax for Unicode Locale Identifier other than backward compatibility reasons. This document proposes that we retire the proprietary syntax and fully migrate to the new syntax fully supported by BCP47 language tag. -There are several options for representing keyword key/type pairs in BCP47 syntax. Examples in following proposal assume a letter "u" is reserved for the Unicode locale extensions; however we could go for any of the possible extensions: [0-9 a-w y z]. +Once we define formal representation of Unicode locale extensions in BCP47 syntax, we actually no longer have any good reasons to use @key1=type1;key2=type2... syntax for Unicode Locale Identifier other than backward compatibility reasons. This document proposes that we retire the proprietary syntax and fully migrate to the new syntax fully supported by BCP47 language tag. +There are several options for representing keyword key/type pairs in BCP47 syntax. Examples in following proposal assume a letter "u" is reserved for the Unicode locale extensions; however we could go for any of the possible extensions: [0-9 a-w y z]. The table below shows the locale extension keys/values currently defined by the LDML specification. Key/Type Definitions +key type Description +collation standard The default ordering for each language. For root it is [ UCA ] order; for each other locale it is the same as UCA ordering except for appropriate modifications to certain characters for that language. The following are additional choices for certain locales; they only have effect in those locales. +phonebook For a phonebook-style ordering (used in German). +pinyin Pinyin ordering for Latin and for CJK characters; that is, an ordering for CJK characters based on a character-by-character transliteration into a pinyin. (used in Chinese) +traditional For a traditional-style sort (as in Spanish) +stroke Pinyin ordering for Latin, stroke order for CJK characters (used in Chinese) +direct Hindi variant +posix A "C"-based locale. (no longer in CLDR data) +big5han Pinyin ordering for Latin, big5 charset ordering for CJK characters. (used in Chinese) +gb2312han Pinyin ordering for Latin, gb2312han charset ordering for CJK characters. (used in Chinese) +unihan Pinyin ordering for Latin, Unihan radical-stroke ordering for CJK characters. (used in Chinese) +calendar +(For information on the calendar algorithms associated with the data used with the above types, see [ Calendars ].) gregorian (default) +islamic +alias: arabic Astronomical Arabic +chinese Traditional Chinese calendar +islamic-civil +alias: civil-arabic Civil (algorithmic) Arabic calendar +hebrew Traditional Hebrew Calendar +japanese Imperial Calendar (same as Gregorian except for the year, with one era for each Emperor) +buddhist +alias: thai-buddhist Thai Buddhist Calendar (same as Gregorian except for the year) +persian Persian Calendar +coptic Coptic Calendar +ethiopic Ethiopic Calendar +collation parameters: + colStrength + colAlternate + colBackwards + colNormalization + colCaseLevel + colCaseFirst, + colHiraganaQuaternary + colNumeric + variableTop Associated values as defined in: 5.14.1 Semantics as defined in: 5.14.1 +currency +(also known as a Unicode currency code ) ISO 4217 code, +plus others in common use Currency value identified by ISO 4217 code, plus others in common use. Also uses XXX as Unknown or Invalid Currency . +See Appendix K: Valid Attribute Values and also [ Data Formats ] +time zone +(also known as a Unicode time zone code ) TZID, plus the value: +Etc/Unknown Identification for time zone according to the TZ Database, plus the value Etc/Unknown . +Unicode LDML supports all of the time zone IDs by mapping all equivalent time zone IDs to a canonical ID for translation. This canonical time zone ID is not the same as the zone.tab time zone ID found in [ Olson ]. +For more information, see Section 5.9.2 Time Zone Names , Appendix F: Date Format Patterns , and Appendix J: Time Zone Display Names . Collation Parameters +Attribute Options Basic Example XML Example Description +strength primary (1) +secondary (2) +tertiary (3) +quaternary (4) +identical (5) [strength 1] strength = " primary " Sets the default strength for comparison, as described in the UCA. +alternate non-ignorable shifted [alternate non-ignorable] alternate = " non-ignorable " Sets alternate handling for variable weights, as described in UCA +backwards on +off [backwards 2] backwards = " on " Sets the comparison for the second level to be backwards ("French"), as described in UCA +normalization on +off [normalization on] normalization = " off " If on , then the normal UCA algorithm is used. If off , then all strings that are in [ FCD ] will sort correctly, but others will not necessarily sort correctly. So should only be set off if the the strings to be compared are in FCD. +caseLevel on +off [caseLevel on] caseLevel = " off " If set to on, a level consisting only of case characteristics will be inserted in front of tertiary level. To ignore accents but take cases into account, set strength to primary and case level to on . +caseFirst upper +lower +off [caseFirst off] caseFirst = " off " If set to upper , causes upper case to sort before lower case. If set to lower , lower case will sort before upper case. Useful for locales that have already supported ordering but require different order of cases. Affects case and tertiary levels. +hiraganaQuaternary on +off [hiraganaQ on] hiragana­Quaternary = " on " Controls special treatment of Hiragana code points on quaternary level. If turned on , Hiragana codepoints will get lower values than all the other non-variable code points. The strength must be greater or equal than quaternary if you want this attribute to take effect. +numeric on +off [numeric on] numeric = " on " If set to on , any sequence of Decimal Digits (General_Category = Nd in the [ UCD ]) is sorted at a primary level with its numeric value. For example, "A-21" < "A-123". +variableTop uXXuYYYY & \u00XX\uYYYY < [variable top] variableTop = "uXXuYYYY" The parameter value is an encoded Unicode string, with code points in hex, leading zeros removed, and 'u' inserted between successive elements. +Sets the default value for the variable top. All the code points with primary strengths less than variable top will be considered variable, and thus affected by the alternate handling. +match-boundaries: none whole-character whole-word n/a match-boundaries = "whole-word" The meaning is according to the descriptions in UTS #10 Searching . +match-style minimal medial maximal n/a match-style = "medial" The meaning is according to the descriptions in UTS #10 Searching . 1. Proposed BCP47 subtag syntax This document propose the syntax described by the BNF below. -locale-extensions = locale-singleton "-" extension *("-" extension) -extension = key "-" type -locale-singleton = "u" -key = 2alphanum -type = 3*8alphanum -alphanum = (ALPHA / DIGIT) +locale-extensions = locale-singleton "-" extension *("-" extension) +extension = key "-" type +locale-singleton = "u" +key = 2alphanum +type = 3*8alphanum +alphanum = (ALPHA / DIGIT) Example: en-US-u-ca-islamicc-co-phonebk this corresponds to the former syntax en-US@calendar=islamic-civil;collation=phonebook +Current Proposed +collation co +calendar ca +currency cu +numbers nu +time zone tz +colStrength ks +colAlternate ka +colBackwards kb +colNormalization kk +colCaseLevel kc +colCaseFirst kf +colHiraganaQuaternary kh +colNumeric kn +variableTop kv 2. Keys -Key names and only key names are always of length=2, and types (values) are always greater than 2. This proposal defines new canonical key names below. +Key names and only key names are always of length=2, and types (values) are always greater than 2. This proposal defines new canonical key names below. The motivation is reduction of string size, and making sure that keys and values don't overlap syntactically. 3. Types 3.1 Collation 3.1.1 Collation (co) types +Current Proposed +big5han big5han +digits-after digitaft +direct direct +gb2312han gb2312 +phonebook phonebk +pinyin pinyin +reformed reformed +standard standard +stroke stroke +traditional trad 3.1.2 Collation Strength (ks) types +Current Proposed +primary level1 +secondary level2 +tertiary level3 +quarternary level4 +identical identic 3.1.3 Collation Alternate (ka) types -Current -non-ignorable -shifted -Proposed -noignore -shifted +Current Proposed +non-ignorable noignore +secondary level2 +shifted shifted 3.1.4 Collation Backwards (kb) / Normalization (kk) / Case Level (kc) / Hiragana Quaternary (kh) / Numeric (kn) types -Current -yes -no -Proposed -true -false +Current Proposed +yes true +no false 3.1.5 Collation Case First (kf) types +Current Proposed +upper upper +lower lower +no false 3.1.6 Collation Variable Top (kv) type -The variable top parameter is specified by a code point in the format uXXuYYYY. No changes are required. +The variable top parameter is specified by a code point in the format uXXuYYYY. No changes are required. 3.2 Calendar (ca) +Current Proposed +buddhist buddhist +coptic coptic +ethiopic ethiopic +ethiopic-amete-alem ethiopaa +chinese chinese +gregorian gregory +hebrew hebrew +indian indian +islamic islamic +islamic-civil islamicc +japanese japanese +persian presian +roc roc 3.3 Currency (cu) types -ISO4217 code (3-letter alpha) is used for currency. No changes required. +ISO4217 code (3-letter alpha) is used for currency. No changes required. 3.4 Number System (nu) types -The current CVS snapshot implementation uses CSS3 names. This proposal changes all of type names to script code with one exception (arabext). +The current CVS snapshot implementation uses CSS3 names. This proposal changes all of type names to script code with one exception (arabext). +Current (CVS snapshot) Proposed +arabic-indic arab +bengali beng +cambodian khmr +decimal latn +devanagari deva +gujarati gujr +gurmukhi guru +hebrew hebr +kannada knda +lao laoo +malayalam mlym +mongolian mong +myanmar mymr +oriya orya +persian arabext +telugu telu +thai thai 3.5 Time Zone (tz) types -CLDR uses Olson tzids. These IDs are usually made from +"/"+ and relatively long. To satisfy the syntax requirement discussed in this document, we need to map these IDs to relatively short IDs uniquely. The UN LOCODE is designed to assign unique location code and it satisfies most of the requirement. A LOCODE consists from 2 letter ISO country code and 3 letter location code. This proproposal suggest that a 5 letter LOCODE is used as a short time zone ID if examplar city has a exact match in LOCODE repertoire. Some Olson tzids do not have direct mapping in LOCODE. In this case, we assign our own codes to them, but using 3-4/6-8 letter code to distinguish them from LOCODE. For Olson tzid Etc/GMT*, this proposal suggest "UTC" + ["E" | "W"] + nn (hour offset), for example, UTCE01 means 1 hour east from UTC (Etc/GMT-1). The proposed short ID list is attached in this document. \ No newline at end of file +CLDR uses Olson tzids. These IDs are usually made from +"/"+ and relatively long. To satisfy the syntax requirement discussed in this document, we need to map these IDs to relatively short IDs uniquely. The UN LOCODE is designed to assign unique location code and it satisfies most of the requirement. A LOCODE consists from 2 letter ISO country code and 3 letter location code. This proproposal suggest that a 5 letter LOCODE is used as a short time zone ID if examplar city has a exact match in LOCODE repertoire. Some Olson tzids do not have direct mapping in LOCODE. In this case, we assign our own codes to them, but using 3-4/6-8 letter code to distinguish them from LOCODE. For Olson tzid Etc/GMT*, this proposal suggest "UTC" + ["E" | "W"] + nn (hour offset), for example, UTCE01 means 1 hour east from UTC (Etc/GMT-1). The proposed short ID list is attached in this document. +Unicode copyright \ No newline at end of file diff --git a/docs/site/TEMP-TEXT-FILES/bcp47-validation-and-canonicalization.txt b/docs/site/TEMP-TEXT-FILES/bcp47-validation-and-canonicalization.txt index a9a065a83ea..d3804d60866 100644 --- a/docs/site/TEMP-TEXT-FILES/bcp47-validation-and-canonicalization.txt +++ b/docs/site/TEMP-TEXT-FILES/bcp47-validation-and-canonicalization.txt @@ -22,91 +22,90 @@ maps the 3-digit region codes that have 2-letter equivalents into those 2-letter combines identical extensions; en-a-foo-a-fii => en_a_foo_fii The data for #2 are in http://unicode.org/cldr/data/common/supplemental/supplementalData.xml, in codeMappings/territoryCodes. However, we need an extra table for doing #1, the language code mappings. Suggest adding: - +  ... Sample Structure - --2122061011208687, e00d48015863b67, 15fb9fb2095c00, 340400f7818068d, --2b07ebe0bd4e300, 100086b25d7fffc, 43fff001538f3c40, -4044cc58020eaf00, -4085570410419a, 18ffffffc04002, 2eea2e908400418, 6260008c6, --33d4000000000000, 10000, 0, 0, -0, 80 - - -91019c747263433, 1c68108800045364, 4443028094090c84, -7ffffbe3baa63970, --3ff1e7af28980bf0, 61204489a16d0e6d, 10000003024040, -648bb808222ebe40, -1001044202044053, 4100000020000400, -1220200fbffdfc00, -5010004244000101, --78c6890a8c3e0081, -fc408f0000001, -200169dfafa301, -880800009, --8171c0000001, -4187fd4fbb1, -2000000800011, 9fe75970f1b42bd, -1490f9feddf20051, -114007e, -2800000008080001, -80280000001, --40180000001, -400000000010003, -c0000200000001, -1000000d0041, --20000080000041, -1200000208000001, -42000002000005, 7fffffffffefefff, --3bfc2522b0640841, 4124082843c19cf, -d00447fffbbb00, 488349bd64542b49, --3f182aaabe898841, -7a20060100c8ec8f, -400043effff79ae, -3878c1e88b08201, -8005b0008100ffd, 2000040030000000, -301210082002fde7, -3eee729ffdfffbc, -665df000000227bd, -4200010e261ad97, c100860c01149fc, 75689565b65c5500, -20003efedb, -3fe966da82589400, 7f7ffff07a540, 460801000, -a12510714b, 600000490100000, 4440000100000001, 4000010048010000, -5100000042880000, 4f553243564102dd, 800001cdc2bd5, -6e8fbffffffffffc, -a798218157d9013, 4000000824000000, 4001020000000, 39abfeb000004, -40000000, 4400020000, 5a88110000000020, 6042000000000000, -500108000408a, 400631080, 4081003f50300400, 13b33be00000000, -1100800, -5000000000000000, 283cedffffffffff, 3c51fcf24dfffc0a, --4daba593a4fdff00, 409403cff84f039, -774ab6e1cfff5fef, -20000069208824fd, --c3fddefefff7ff9, 40444f850ffd4, 7f41be8d6fffdff0, 2397b2000000da23, -fe7ffff00084050, 800000008104180, 11c941, 5feb408040040100, --3fbfbeeffffbff36, -7198804000f9fffa, 1100036edb9f051, -77d596afbc000000, --2001daefbfffbe, 40050809053, 10000, -7ebb71a93fd5f000, -78047c0208, 844785244050cc0, 1885000000000204, 11d1350ee8cd1001, -833eb5906691, 4100000001040052, 74481a71dd649964, 800008001000fb9, -10002010045400, -60a140ff7f9ff7fc, 1040c00000698843, 1a2dd20200, --20feffbffffbfee0, 400000000013959, 2486290f00000401, -7fffbb9fff5fefd3, -68000c02000000, -370ffffffffff80, 10000080215e, 1000011000000, --21c2801000, -110008000001, -1, -224000004003, --1801, -200002000000001, -231, -401001, --2000100001, -10000000001, -4000000000000001, -7fa6743002322029, --7ff8000000ff800e, 72e6061b3dc3000, -460ffddbbc083001, -c0000da80802f1a, -47fffff7851ef2f, -560aabffffffdfe8, 3d05184100ed9d98, -7a72efbfeff88001, -204100000004, -1010248847ff5e, -1000000000001, -80001, -7dffffff7fffffff, -100000008000009, -40000421, -80000080002803, --10000400001, 7efbfffdf7ffffff, -1, -800000011, --1000080020003001, 27ef77ffffeffbe9, -2800000020fb7e0, -98611d000800002, --13642a901081, -820a02001000001, -1aa3ff8bbfbae5e0, -2a4a3bc0002225d6, -1170004203fffbff, -1db71a9a7df, 400220005450540d, 6010041040810696, -5605100000000000, 200106000001040, 64b67f9b19201180, -462b32512a8ff6c0, -421500406204837, -3efa4067cac00000, 3113f7df46c98, 900000000, -400100100a000, -3045824002201, -5a2004f9e7bebbd5, 7251425410002047, -200003fefbff1edf, -482004483e11f390, -20a0300038a02081, 7c00100107ff445e, --479faa0062208009, 30000003dbd77f5e, 3010000400042704, -fff7ffe70, --1, -1, -1, -1, --1, -1, -1, 7bdeffffffffffff, -140c1085d13ee57e, 800117fa2, bffffef00, 3b53000000800002, -16241100000010e, 5001a3831002010, 81183010, -780efd5ed8010201, -20800052d, 2000009020010400, 319c5f61004, 254010, --2040fffffffebe0, -230a120c00000001, 400b7fffffa7bfb, -400000a1250228ef, --800e840e9000201, -4004010081100801, 757bf7efdffdfffd, -20823e08f7e981, --a8e000010400001, -19de7efa010f, 17d467d07159f159, -40000081080e7d6, --90240402202001, -3e00fd67bfe000b, 7fdfffdffef6f1f, -412043c4fae3b, --1000080080000081, -7fd010022808241, -860000001003a5, -f98420400200001, -67dc75ddbf8ff531, 201ca06beab91, 4480404023, 4000400000406d44, -80050060130000, -3effffbffdc00000, 6f14f040f49c5588, 400a0a51641, --40823fffffff7ffc, 4a0044108581fe, 1000224012300, 1000000000, -936fbf1010800, 0, 2d80c, 2c286c00000000a0, -18df010000000, 25003f79fff0120, a00000, 90003100040000, -8300000100002, 100000, -1000000000000000, 1011ae7ecffffff, -5ef18d040092000, 1105404141000010, 4057a3ff6040, 19f7d9755450080b, -46757f0435578cc7, 72c0000000000011, 5480360501fdae, 10000001ba388b1, -2100300000044240, 157ff95f00000010, 40117a78d630944, 100000041e984a40, --56fcf17ff8bfdf7e, -1000ffffffede, -7cf0000100bac7a9, 45bd55042f54c019, --460e973bb3f7ffff, 1ad243d7fed7d37f, 80248550118440, 242000008000281, --7f9fe01900020010, -1d4eafefee9fff58, 2442980000000013, 3bfbfe100020, --bb61abaf5a2bf00, 3d42051b3668ffdd, -3ffffff7fc2cf27c, 200506e80c110b44, -200007dbbf7f002, 5b2801, -2000fffeefdf00, -7ffffff7eedfdfad, -20c10000, 310084280230030, -53b3cffffffdbdcc, 67ffffff004c8023, --3f8af7bfefef, 10138104000010ff, 3081676e140121c0, 1000000100, -80400a242200000 - +  +  -2122061011208687, e00d48015863b67, 15fb9fb2095c00, 340400f7818068d, +  -2b07ebe0bd4e300, 100086b25d7fffc, 43fff001538f3c40, -4044cc58020eaf00, +  4085570410419a, 18ffffffc04002, 2eea2e908400418, 6260008c6, +  -33d4000000000000, 10000, 0, 0, +  0, 80 +  +  +  91019c747263433, 1c68108800045364, 4443028094090c84, -7ffffbe3baa63970, +  -3ff1e7af28980bf0, 61204489a16d0e6d, 10000003024040, -648bb808222ebe40, +  1001044202044053, 4100000020000400, -1220200fbffdfc00, -5010004244000101, +  -78c6890a8c3e0081, -fc408f0000001, -200169dfafa301, -880800009, +  -8171c0000001, -4187fd4fbb1, -2000000800011, 9fe75970f1b42bd, +  1490f9feddf20051, -114007e, -2800000008080001, -80280000001, +  -40180000001, -400000000010003, -c0000200000001, -1000000d0041, +  -20000080000041, -1200000208000001, -42000002000005, 7fffffffffefefff, +  -3bfc2522b0640841, 4124082843c19cf, -d00447fffbbb00, 488349bd64542b49, +  -3f182aaabe898841, -7a20060100c8ec8f, -400043effff79ae, -3878c1e88b08201, +  8005b0008100ffd, 2000040030000000, -301210082002fde7, -3eee729ffdfffbc, +  665df000000227bd, -4200010e261ad97, c100860c01149fc, 75689565b65c5500, +  20003efedb, -3fe966da82589400, 7f7ffff07a540, 460801000, +  a12510714b, 600000490100000, 4440000100000001, 4000010048010000, +  5100000042880000, 4f553243564102dd, 800001cdc2bd5, -6e8fbffffffffffc, +  a798218157d9013, 4000000824000000, 4001020000000, 39abfeb000004, +  40000000, 4400020000, 5a88110000000020, 6042000000000000, +  500108000408a, 400631080, 4081003f50300400, 13b33be00000000, +  1100800, -5000000000000000, 283cedffffffffff, 3c51fcf24dfffc0a, +  -4daba593a4fdff00, 409403cff84f039, -774ab6e1cfff5fef, -20000069208824fd, +  -c3fddefefff7ff9, 40444f850ffd4, 7f41be8d6fffdff0, 2397b2000000da23, +  fe7ffff00084050, 800000008104180, 11c941, 5feb408040040100, +  -3fbfbeeffffbff36, -7198804000f9fffa, 1100036edb9f051, -77d596afbc000000, +  -2001daefbfffbe, 40050809053, 10000, -7ebb71a93fd5f000, +  78047c0208, 844785244050cc0, 1885000000000204, 11d1350ee8cd1001, +  833eb5906691, 4100000001040052, 74481a71dd649964, 800008001000fb9, +  10002010045400, -60a140ff7f9ff7fc, 1040c00000698843, 1a2dd20200, +  -20feffbffffbfee0, 400000000013959, 2486290f00000401, -7fffbb9fff5fefd3, +  68000c02000000, -370ffffffffff80, 10000080215e, 1000011000000, +  -21c2801000, -110008000001, -1, -224000004003, +  -1801, -200002000000001, -231, -401001, +  -2000100001, -10000000001, -4000000000000001, -7fa6743002322029, +  -7ff8000000ff800e, 72e6061b3dc3000, -460ffddbbc083001, -c0000da80802f1a, +  204100000004, -1010248847ff5e, -1000000000001, -80001, +  7dffffff7fffffff, -100000008000009, -40000421, -80000080002803, +  -10000400001, 7efbfffdf7ffffff, -1, -800000011, +  -1000080020003001, 27ef77ffffeffbe9, -2800000020fb7e0, -98611d000800002, +  -13642a901081, -820a02001000001, -1aa3ff8bbfbae5e0, -2a4a3bc0002225d6, +  1170004203fffbff, -1db71a9a7df, 400220005450540d, 6010041040810696, +  5605100000000000, 200106000001040, 64b67f9b19201180, -462b32512a8ff6c0, +  421500406204837, -3efa4067cac00000, 3113f7df46c98, 900000000, +  400100100a000, -3045824002201, -5a2004f9e7bebbd5, 7251425410002047, +  200003fefbff1edf, -482004483e11f390, -20a0300038a02081, 7c00100107ff445e, +  -479faa0062208009, 30000003dbd77f5e, 3010000400042704, -fff7ffe70, +  -1, -1, -1, -1, +  -1, -1, -1, 7bdeffffffffffff, +  140c1085d13ee57e, 800117fa2, bffffef00, 3b53000000800002, +  16241100000010e, 5001a3831002010, 81183010, -780efd5ed8010201, +  20800052d, 2000009020010400, 319c5f61004, 254010, +  -2040fffffffebe0, -230a120c00000001, 400b7fffffa7bfb, -400000a1250228ef, +  -800e840e9000201, -4004010081100801, 757bf7efdffdfffd, -20823e08f7e981, +  -a8e000010400001, -19de7efa010f, 17d467d07159f159, -40000081080e7d6, +  -90240402202001, -3e00fd67bfe000b, 7fdfffdffef6f1f, -412043c4fae3b, +  -1000080080000081, -7fd010022808241, -860000001003a5, -f98420400200001, +  67dc75ddbf8ff531, 201ca06beab91, 4480404023, 4000400000406d44, +  80050060130000, -3effffbffdc00000, 6f14f040f49c5588, 400a0a51641, +  -40823fffffff7ffc, 4a0044108581fe, 1000224012300, 1000000000, +  936fbf1010800, 0, 2d80c, 2c286c00000000a0, +  18df010000000, 25003f79fff0120, a00000, 90003100040000, +  8300000100002, 100000, -1000000000000000, 1011ae7ecffffff, +  5ef18d040092000, 1105404141000010, 4057a3ff6040, 19f7d9755450080b, +  46757f0435578cc7, 72c0000000000011, 5480360501fdae, 10000001ba388b1, +  2100300000044240, 157ff95f00000010, 40117a78d630944, 100000041e984a40, +  -56fcf17ff8bfdf7e, -1000ffffffede, -7cf0000100bac7a9, 45bd55042f54c019, +  -460e973bb3f7ffff, 1ad243d7fed7d37f, 80248550118440, 242000008000281, +  -7f9fe01900020010, -1d4eafefee9fff58, 2442980000000013, 3bfbfe100020, +  -bb61abaf5a2bf00, 3d42051b3668ffdd, -3ffffff7fc2cf27c, 200506e80c110b44, +  200007dbbf7f002, 5b2801, -2000fffeefdf00, -7ffffff7eedfdfad, +  20c10000, 310084280230030, -53b3cffffffdbdcc, 67ffffff004c8023, +  -3f8af7bfefef, 10138104000010ff, 3081676e140121c0, 1000000100, +  80400a242200000 +  Here is the data that they replace: diff --git a/docs/site/TEMP-TEXT-FILES/bidi-handling-of-structured-text.txt b/docs/site/TEMP-TEXT-FILES/bidi-handling-of-structured-text.txt index 28667c0a0d2..f80fecc0fe3 100644 --- a/docs/site/TEMP-TEXT-FILES/bidi-handling-of-structured-text.txt +++ b/docs/site/TEMP-TEXT-FILES/bidi-handling-of-structured-text.txt @@ -36,10 +36,10 @@ To assure backward compatibility ICU should not inject UCC into date / time stam signature of the same function (responsible for date / time stamps generation) which will prepare them for display (by injection of UCC appropriately). This will assure proper display of date / time stamps generated by ICU. For example in Eclipse: 5. Factors affecting the display of STT -There are some different types of factors that can effect the proper display of structured text. Some types of STT such as URLs or file paths, have a strong LTR directionality associated with them, while others have different display semantics depending the directionality of the underlying GUI, or upon the content of the text itself. This is further complicated by the fact that the culturally accepted preferences for proper display of STT differ, even between Hebrew and Arabic users. Thus, we need to be able to define these rules within the CLDR that describe these and be able to use that data in order to be able to format STT properly in a given context. +There are some different types of factors that can effect the proper display of structured text. Some types of STT such as URLs or file paths, have a strong LTR directionality associated with them, while others have different display semantics depending the directionality of the underlying GUI, or upon the content of the text itself. This is further complicated by the fact that the culturally accepted preferences for proper display of STT differ, even between Hebrew and Arabic users. Thus, we need to be able to define these rules within the CLDR that describe these and be able to use that data in order to be able to format STT properly in a given context. The following table summarizes the recognized preferences for the proper display of STT in Hebrew and Arabic: 6. Proposed additions to CLDR -The following schema is proposed for addition into CLDR, most likely as sub-elements under the category. This structure defines the sets of rules in CLDR necessary to describe proper display behavior for various types of structured text: +The following schema is proposed for addition into CLDR, most likely as sub-elements under the category. This structure defines the sets of rules in CLDR necessary to describe proper display behavior for various types of structured text: @@ -55,12 +55,12 @@ The following schema is proposed for addition into CLDR, most likely as sub-elem - + 7. Sample data for various types of STT: -a). STT with strong directionality, such as filepath, would have the following rules in root: + a). STT with strong directionality, such as filepath, would have the following rules in root: @@ -77,7 +77,7 @@ a). STT with strong directionality, such as filepath, would have the following r -b). The "message" type has some variations based on the content, but the rules remain constant across locales, as follows: + b). The "message" type has some variations based on the content, but the rules remain constant across locales, as follows: root.xml: @@ -115,7 +115,7 @@ root.xml: -c). Rules for date and time stamps differ between Hebrew and Arabic, so we would have: + c). Rules for date and time stamps differ between Hebrew and Arabic, so we would have: In he.xml: 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 8d8e9d9ec40..fa7afbd59f7 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 @@ -37,7 +37,7 @@ 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](https://cldr.unicode.org/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). @@ -90,7 +90,9 @@ There are many circumstances where we get less than perfect language identifiers 2. Remove the base language 3. This avoids having to store which languages are also extlangs, and what their prefixes are. -People have to do #1. We should recommend #2, and make it easy to support #3. See demo at [http://unicode.org/cldr/utility/languageid.jsp](http://unicode.org/cldr/utility/languageid.jsp) +People have to do #1. We should recommend #2, and make it easy to support #3. + +See demo at [http://unicode.org/cldr/utility/languageid.jsp](http://unicode.org/cldr/utility/languageid.jsp) Also, we should consider modifying the canonical form of language identifiers so as to have lowercase variants (with the exception of some set of grandfathered codes). The following are generated by GenerateMaximalLocales, plus 7 hand modifications for the last line. diff --git a/docs/site/development/development-process/design-proposals/bcp47-syntax-mapping.md b/docs/site/development/development-process/design-proposals/bcp47-syntax-mapping.md index d5381fa5f99..12c0646299b 100644 --- a/docs/site/development/development-process/design-proposals/bcp47-syntax-mapping.md +++ b/docs/site/development/development-process/design-proposals/bcp47-syntax-mapping.md @@ -13,7 +13,7 @@ BCP 47 is undergoing a revision which should be done soon: Once we define formal representation of Unicode locale extensions in BCP47 syntax, we actually no longer have any good reasons to use @key1=type1;key2=type2... syntax for Unicode Locale Identifier other than backward compatibility reasons. This document proposes that we retire the proprietary syntax and fully migrate to the new syntax fully supported by BCP47 language tag. -There are several options for representing keyword key/type pairs in BCP47 syntax. Examples in following proposal assume a letter "u" is reserved for the Unicode locale extensions; however we could go for any of the[possible extensions](http://inter-locale.com/ID/draft-ietf-ltru-4646bis-21.html#syntax): [0-9 a-w y z]. +There are several options for representing keyword key/type pairs in BCP47 syntax. Examples in following proposal assume a letter "u" is reserved for the Unicode locale extensions; however we could go for any of the [possible extensions](http://inter-locale.com/ID/draft-ietf-ltru-4646bis-21.html#syntax): [0-9 a-w y z]. The table below shows the locale extension keys/values currently defined by the LDML specification. diff --git a/docs/site/development/development-process/design-proposals/bidi-handling-of-structured-text.md b/docs/site/development/development-process/design-proposals/bidi-handling-of-structured-text.md index a06d8b97f68..e6100a0ebbf 100644 --- a/docs/site/development/development-process/design-proposals/bidi-handling-of-structured-text.md +++ b/docs/site/development/development-process/design-proposals/bidi-handling-of-structured-text.md @@ -94,7 +94,7 @@ The following table summarizes the recognized preferences for the proper display **6. Proposed additions to CLDR** -The following schema is proposed for addition into CLDR, most likely as sub-elements under the category. This structure defines the sets of rules in CLDR necessary to describe proper display behavior for various types of structured text: +The following schema is proposed for addition into CLDR, most likely as sub-elements under the \ category. This structure defines the sets of rules in CLDR necessary to describe proper display behavior for various types of structured text: \ From bf797b1dd8d0ccf856f7cd348ccad955fa5b50ad Mon Sep 17 00:00:00 2001 From: Chris Pyle Date: Thu, 4 Jul 2024 11:22:44 -0400 Subject: [PATCH 3/3] CLDR-17566 removing text files --- .../alternate-time-formats.txt | 13 -- .../TEMP-TEXT-FILES/bcp-47-changes-draft.txt | 164 ---------------- .../TEMP-TEXT-FILES/bcp47-syntax-mapping.txt | 185 ------------------ .../bcp47-validation-and-canonicalization.txt | 112 ----------- .../bidi-handling-of-structured-text.txt | 172 ---------------- 5 files changed, 646 deletions(-) delete mode 100644 docs/site/TEMP-TEXT-FILES/alternate-time-formats.txt delete mode 100644 docs/site/TEMP-TEXT-FILES/bcp-47-changes-draft.txt delete mode 100644 docs/site/TEMP-TEXT-FILES/bcp47-syntax-mapping.txt delete mode 100644 docs/site/TEMP-TEXT-FILES/bcp47-validation-and-canonicalization.txt delete mode 100644 docs/site/TEMP-TEXT-FILES/bidi-handling-of-structured-text.txt diff --git a/docs/site/TEMP-TEXT-FILES/alternate-time-formats.txt b/docs/site/TEMP-TEXT-FILES/alternate-time-formats.txt deleted file mode 100644 index 74c9fcd5b8f..00000000000 --- a/docs/site/TEMP-TEXT-FILES/alternate-time-formats.txt +++ /dev/null @@ -1,13 +0,0 @@ -Alternate Time Formats -This design proposal is intended to solve the problem that sometimes the desired time separator for a pattern may vary depending on the numbering system used. Rather than adding an additional type of number symbol just for the time separator, a more generalized solution would be to expand the syntax for numbering system overrides in patterns, in order to allow a simple replacement of a literal in the pattern based on the numbering system. The following description of the numbering system override is from the current TR35: - -The numbers attribute is used to indicate that numeric quantities in the pattern are to be rendered using a numbering system other than then default numbering system defined for the given locale. The attribute can be in one of two forms. If the alternate numbering system is intended to apply to ALL numeric quantities in the pattern, then simply use the numbering system ID as found in Section C.13 Numbering Systems. To apply the alternate numbering system only to a single field, the syntax "=" can be used one or more times, separated by semicolons. -Examples: -dd/mm/yyyy - -dd/mm/yyyy - -dd/mm/yyyy - -Proposed Extension -In addition to the syntax, allow symbol or string replacements of the form "==" \ No newline at end of file diff --git a/docs/site/TEMP-TEXT-FILES/bcp-47-changes-draft.txt b/docs/site/TEMP-TEXT-FILES/bcp-47-changes-draft.txt deleted file mode 100644 index 6d999252a2f..00000000000 --- a/docs/site/TEMP-TEXT-FILES/bcp-47-changes-draft.txt +++ /dev/null @@ -1,164 +0,0 @@ -BCP 47 Changes (DRAFT) -With the new release of the new version of BCP 47, 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 in the spec (and the orginal design proposal), but more changes need to be made. -Formula -We need to take another look at which languages we show in the survey tool for translation, because the new version is very large, around 7,000 languages. Showing all of those languages in the Survey tool would neither be good for the usability of the tool for most translators, nor for tool performance, so we need some formula for picking which languages to show by default. -For feedback on this document, please file a Reply under http://www.unicode.org/cldr/bugs/locale-bugs?findid=1977. For discussion of issues, please send email to cldr-users@unicode.org. -Draft Formula -A. We show a language code X for translation if any of the following conditions are true: -X is a qualified language**, and has at least 100K speakers, and at least one of the following is true: -X is has official status* in any country -X exceeds a threshold population† of literate users worldwide: 10M -X exceeds a threshold population† in some country Z: 1M and 1/3 of Z's population†. -X has non-draft minimal language coverage‡ in CLDR itself. -Only for translation in locale Y: X is a qualified language** that already has a translation in CLDR data in Y. -X is an exception explicitly approved by the committee, either in root, or in some language Y. -Current examples: Latin, Sanskrit -If a translator finds that X is needed for translation in language Y, then a bug can be filed. If we find the volume is high, we may need to add is some way for a translator to add a language in the survey tool. -B. We show a script code S for translation if and only if it is one of the scripts used by one of the languages shown. -Notes -** qualified language: excluding collection (except for macrolanguages with predominant forms), ancient, historic, and extinct languages: see Scope and Types. Some could be added as exceptions as needed. -‡ minimal coverage - see Coverage Levels - at a non-draft level. -* 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. 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. -Please review the generated lists in Filtered Scripts and Languages. A spreadsheet with some details is on http://spreadsheets.google.com/pub?key=rORMJfeNEUR37PlS8HIa_rQ. 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: -need to add Norwegian [no], resolve tl vs fil, ... -Tokelau has no speakers (bug filed) -Survey Tool Changes -The above would only require a small tool change: the main change is that the approved list from #1 and #2 would be in CODE_FALLBACK, and nothing else would. Languages would get #3 cases by virtue of there being a translated tag already in the language, even if Root doesn't have anything (because it is not in CODE_FALLBACK). Thus if the locale doesn't already contain a translation for, say, Ancient Greek, it would not show up in the survey tool. -We would add the lists to the supplemental metadata for access by the tools. The Coverage tool and spec also need to be aligned with the above. -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 with an encompassed language that is a "predominant form", CLDR treats the predominant form and the macrolanguage as aliases. See Locale Field Definitions in the spec. We need to flesh that table out to include all of the macrolanguages that are in the Included Languages, 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 -Macrolanguage Encompassed Language Comments -Arabic ' ar ' Standard Arabic ' arb ' -Konkani ' kok ' Konkani ( individual language) ' knn ' -Malay ' ms ' Standard Malay ' zsm ' -Swahili ' sw ' Swahili ( individual language) ' swh ' -Uzbek ' uz ' Northern Uzbek ' uzn ' -Chinese ' zh ' Mandarin Chinese ' cmn ' -Norwegian ' no ' Norwegian Bokmal ' nob ' = nb To regularize, we may want to switch in CLDR from nb as the 'norm' to no. -Serbo-croatian ' sh ' This is a complex situation, and we'll probably leave as is. -Kurdish 'ku' Northern Kurdish 'kmr'? We probably want to change the default content locale to ku-Latn -Akan ' ak ' Twi ' tw ' and Fanti ' fat' This appears to be a mistake in ISO 639. See: ISO 636 Deprecation Requests . -Persian fas (fa) Western Farsi pes and prs Dari This appears to be a mistake in ISO 639. See: ISO 636 Deprecation Requests . -These would also go into the element of the supplemental metadata. We may add more such aliases over time, as we find new predominant forms. Note that we still need to offer both aliases for translation in many cases. For example, we want to show both 'no' and 'nb'. -Lenient Parsing -There are many circumstances where we get less than perfect language identifiers coming in. I think we should have some guidelines as to how to do this. Here are the possibilities: -case / hyphen insensitivity -map valid non-canonical forms to their canonical equivalents (zh-cmn, cmn => zh) -map certain common invalid forms to their canonical equivalents: -UK => GB -eng => en // and other illegal 3-letter 639 codes that correspond to 2-letter codes -840 => US // other numeric region codes that correspond to 2-letter codes -map away extlangs. Formally, en-yue is valid (this slipped by us in doing BCP 47), and canonicalizes in BCP 47 to yue, the same as zh-yue does. In any event, the simplest thing for us to do is if there is a syntactic extlang: -Verify that the base language and extlang are both valid language subtags -Remove the base language -This avoids having to store which languages are also extlangs, and what their prefixes are. -People have to do #1. We should recommend #2, and make it easy to support #3. -See demo at http://unicode.org/cldr/utility/languageid.jsp -Also, we should consider modifying the canonical form of language identifiers so as to have lowercase variants (with the exception of some set of grandfathered codes). The following are generated by GenerateMaximalLocales, plus 7 hand modifications for the last line. -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. -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: Unknown, Official Regional, Official Minority, De facto official, Official. -Included Script Names: 41+ -Arabic [Arab], Armenian [Armn] -Bengali [Beng] -Cyrillic [Cyrl] -Devanagari [Deva] -Ethiopic [Ethi] -Georgian [Geor], Greek [Grek], Gujarati [Gujr], Gurmukhi [Guru] -Hebrew [Hebr], Han [Hani] -Simplified Han [Hans], Traditional Han [Hant], Bopomofo [Bopo] -Japanese [Jpan] -Hiragana [Hira], Katakana [Kana] -Kannada [Knda], Khmer [Khmr], Korean [Kore] -Hangul [Hang] -Lao [Laoo], Latin [Latn] -Malayalam [Mlym], Mongolian [Mong], Myanmar [Mymr] -Oriya [Orya] -Sinhala [Sinh] -Tamil [Taml], Telugu [Telu], Thaana [Thaa], Thai [Thai], Tibetan [Tibt] -Special codes: -Common [Zyyy], Symbols [Zsym], Unwritten [Zxxx], Unknown or Invalid Script [Zzzz] -Braille [Brai] -Possibly also in the future: -Tifinagh [Tfng], Yi [Yiii], -Unified Canadian Aboriginal Syllabics [Cans], -Excluded Script Names: -Avestan [Avst] -Balinese [Bali], Batak [Batk], Blissymbols [Blis], Book Pahlavi [Phlv], Brahmi [Brah], Buginese [Bugi], Buhid [Buhd] -Carian [Cari], Chakma [Cakm], Cham, Cherokee [Cher], Cirth [Cirt], Coptic [Copt], Cypriot [Cprt] -Deseret [Dsrt] -Eastern Syriac [Syrn], Egyptian demotic [Egyd], Egyptian hieratic [Egyh], Egyptian hieroglyphs [Egyp], Estrangelo Syriac [Syre] -Fraktur Latin [Latf] -Gaelic Latin [Latg], Georgian Khutsuri [Geok], Glagolitic [Glag], Gothic [Goth] -Hanunoo [Hano] -Imperial Aramaic [Armi], Indus [Inds], Inherited [Qaai], Inscriptional Pahlavi [Phli], Inscriptional Parthian [Prti] -Javanese [Java] -Kaithi [Kthi], Katakana or Hiragana [Hrkt], Kayah Li [Kali], Kharoshthi [Khar] -Lanna [Lana], Lepcha [Lepc], Limbu [Limb], Linear A [Lina], Linear B [Linb], Lisu, Lycian [Lyci], Lydian [Lydi] -Mandaean [Mand], Manichaean [Mani], Mathematical Notation [Zmth], Mayan hieroglyphs [Maya], Meitei Mayek [Mtei], Meroitic [Mero], Moon -N’Ko [Nkoo], New Tai Lue [Talu], Nkgb -Ogham [Ogam], Ol Chiki [Olck], Old Church Slavonic Cyrillic [Cyrs], Old Hungarian [Hung], Old Italic [Ital], Old Permic [Perm], Old Persian [Xpeo], Orkhon [Orkh], Osmanya [Osma] -Pahawh Hmong [Hmng], Phags-pa [Phag], Phoenician [Phnx], Pollard Phonetic [Plrd], Psalter Pahlavi [Phlp] -Rejang [Rjng], Rongorongo [Roro], Runic [Runr] -Samaritan [Samr], Sarati [Sara], Saurashtra [Saur], Shavian [Shaw], SignWriting [Sgnw], Sumero-Akkadian Cuneiform [Xsux], Sundanese [Sund], Syloti Nagri [Sylo], Syriac [Syrc] -Tagalog [Tglg], Tagbanwa [Tagb], Tai Le [Tale], Tai Viet [Tavt], Tengwar [Teng], Tifinagh [Tfng] -Ugaritic [Ugar] -Vai [Vaii], Visible Speech [Visp] -Western Syriac [Syrj] -Yi [Yiii] -Inherited [Zinh] -Included Languages: 202 -Abkhazian [ab]-OR, Adyghe [ady]-OR, Afrikaans [af]-O, Akan [ak]-U, Albanian [sq]-O, Amharic [am]-O, Arabic [ar]-O, Armenian [hy]-O, Assamese [as]-O, Asturian [ast]-OR, Avaric [av]-OR, Awadhi [awa]-U, Aymara [ay]-O, Azerbaijani [az]-O -Bambara [bm]-U, Bashkir [ba]-OR, Basque [eu]-OR, Belarusian [be]-O, Bengali [bn]-O, Bhojpuri [bho]-U, Bislama [bi]-O, Bosnian [bs]-O, Bulgarian [bg]-O, Burmese [my]-O -Catalan [ca]-O, Cebuano [ceb]-OR, Chamorro [ch]-O, Chechen [ce]-OR, Chinese [zh]-O, Chuukese [chk]-O, Croatian [hr]-O, Czech [cs]-O -Danish [da]-O, Divehi [dv]-O, Dutch [nl]-O, Dzongkha [dz]-O -Efik [efi]-O, English [en]-O, Erzya [myv]-OR, Estonian [et]-O, Ewe [ee]-OR -Faroese [fo]-O, Fijian [fj]-O, Filipino [fil]-O, Finnish [fi]-O, French [fr]-O -Ga [gaa]-OR, Gagauz [gag]-OR, Galician [gl]-OR, Georgian [ka]-O, German [de]-O, Gilbertese [gil]-O, Greek [el]-O, Guarani [gn]-O, Gujarati [gu]-O -Haitian [ht]-O, Hausa [ha]-O, Hawaiian [haw]-OR, Hebrew [he]-O, Hiligaynon [hil]-OR, Hindi [hi]-O, Hiri Motu [ho]-O, Hungarian [hu]-O -Icelandic [is]-O, Igbo [ig]-O, Iloko [ilo]-OR, Indonesian [id]-O, Ingush [inh]-OR, Inuktitut [iu]-OR, Irish [ga]-O, Italian [it]-O -Japanese [ja]-O, Javanese [jv]-U -Kabardian [kbd]-OR, Kalaallisut [kl]-O, Kannada [kn]-O, Karachay-Balkar [krc]-OR, Kashmiri [ks]-O, Kazakh [kk]-O, Khasi [kha]-OR, Khmer [km]-O, Kinyarwanda [rw]-O, Kirghiz [ky]-O, Komi-Permyak [koi]-OR, Komi-Zyrian [kpv]-OR, Konkani [kok]-OR, Korean [ko]-O, Kosraean [kos]-O, Krio [kri]-U, Kumyk [kum]-OR, Kurdish [ku]-OR -Lahnda [lah]-U, Lak [lbe]-OR, Lao [lo]-O, Latin [la]-DO, Latvian [lv]-O, Lezghian [lez]-OR, Lingala [ln]-O, Lithuanian [lt]-O, Luxembourgish [lb]-O -Macedonian [mk]-O, Madurese [mad]-U, Maguindanao [mdh]-OR, Maithili [mai]-OR, Malagasy [mg]-O, Malay [ms]-O, Malayalam [ml]-O, Maltese [mt]-O, Maore Comorian [swb]-O, Maori [mi]-O, Marathi [mr]-O, Marshallese [mh]-O, Moksha [mdf]-OR, Mongolian [mn]-O, Mossi [mos]-U -Nauru [na]-O, Nepali [ne]-O, Niuean [niu]-O, Northeastern Thai [tts]-U, Northern Sami [se]-OR, Northern Sotho [nso]-O, Norwegian Bokmål [nb]-O, Norwegian Nynorsk [nn]-O, Nyanja [ny]-O -Oriya [or]-O, Oromo [om]-U, Ossetic [os]-OR -Palauan [pau]-O, Pangasinan [pag]-OR, Papiamento [pap]-DO, Pashto [ps]-O, Persian [fa]-O, Plains Cree [crk]-OR, Pohnpeian [pon]-O, Polish [pl]-O, Portuguese [pt]-O, Punjabi [pa]-O -Quechua [qu]-O -Rhaeto-Romance [rm]-O, Romanian [ro]-O, Rundi [rn]-O, Russian [ru]-O -Samoan [sm]-O, Sango [sg]-O, Sanskrit [sa]-O, Santali [sat]-OR, Scottish Gaelic [gd]-OR, Serbian [sr]-O, Shona [sn]-U, Sindhi [sd]-O, Sinhala [si]-O, Slovak [sk]-O, Slovenian [sl]-O, Somali [so]-O, Southern Sotho [st]-O, Spanish [es]-O, Sundanese [su]-O, Swahili [sw]-O, Swati [ss]-O, Swedish [sv]-O, Swiss German [gsw]-U -Tagalog [tl]-OR, Tahitian [ty]-O, Tajik [tg]-O, Tamil [ta]-O, Tatar [tt]-OR, Tausug [tsg]-OR, Telugu [te]-O, Tetum [tet]-O, Thai [th]-O, Tibetan [bo]-OR, Tigrinya [ti]-DO, Tok Pisin [tpi]-O, Tokelau [tkl]-O, Tonga [to]-O, Tsonga [ts]-O, Tswana [tn]-O, Turkish [tr]-O, Turkmen [tk]-O, Tuvalu [tvl]-O, Tuvinian [tyv]-OR, Twi [tw]-OR -Udmurt [udm]-OR, Uighur [ug]-OR, Ukrainian [uk]-O, Ulithian [uli]-O, Unknown or Invalid Language [und]-S, Urdu [ur]-O, Uzbek [uz]-O -Venda [ve]-O, Vietnamese [vi]-O -Waray [war]-OR, Welsh [cy]-OR, Western Frisian [fy]-OR, Wolof [wo]-O, Woods Cree [cwd]-OR -Xhosa [xh]-O -Yakut [sah]-OR, Yapese [yap]-O, Yoruba [yo]-O -Zhuang [za]-OR, Zulu [zu]-O -Excluded Languages: 299 -Achinese [ace]-U, Acoli [ach]-U, Adangme [ada]-U, Afar [aa]-U, Afrihili [afh]-U, Afro-Asiatic Language [afa]-U, Ainu [ain]-U, Akkadian [akk]-U, Aleut [ale]-U, Algonquian Language [alg]-U, Altaic Language [tut]-U, Ancient Egyptian [egy]-U, Ancient Greek [grc]-U, Angika [anp]-U, Apache Language [apa]-U, Aragonese [an]-U, Aramaic [arc]-U, Arapaho [arp]-U, Araucanian [arn]-U, Arawak [arw]-U, Aromanian [rup]-U, Artificial Language [art]-U, Athapascan Language [ath]-U, Atsam [cch]-U, Australian Language [aus]-U, Austronesian Language [map]-U, Avestan [ae]-U -Balinese [ban]-U, Baltic Language [bat]-U, Baluchi [bal]-U, Bamileke Language [bai]-U, Banda [bad]-U, Bantu [bnt]-U, Basa [bas]-U, Batak [btk]-U, Beja [bej]-U, Bemba [bem]-U, Berber [ber]-U, Bihari [bh]-U, Bikol [bik]-U, Bini [bin]-U, Blin [byn]-U, Blissymbols [zbl]-U, Braj [bra]-U, Breton [br]-U, Buginese [bug]-U, Buriat [bua]-U -Caddo [cad]-U, Carib [car]-U, Caucasian Language [cau]-U, Celtic Language [cel]-U, Central American Indian Language [cai]-U, Chagatai [chg]-U, Chamic Language [cmc]-U, Cherokee [chr]-U, Cheyenne [chy]-U, Chibcha [chb]-U, Chinook Jargon [chn]-U, Chipewyan [chp]-U, Choctaw [cho]-U, Church Slavic [cu]-U, Chuvash [cv]-U, Classical Newari [nwc]-U, Classical Syriac [syc]-U, Coptic [cop]-U, Cornish [kw]-U, Corsican [co]-U, Cree [cr]-U, Creek [mus]-U, Creole or Pidgin [crp]-U, Crimean Turkish [crh]-U, Cushitic Language [cus]-U -Dakota [dak]-U, Dargwa [dar]-U, Dayak [day]-U, Delaware [del]-U, Dinka [din]-U, Dogri [doi]-U, Dogrib [dgr]-U, Dravidian Language [dra]-U, Duala [dua]-U, Dyula [dyu]-U -Eastern Frisian [frs]-U, Ekajuk [eka]-U, Elamite [elx]-U, English-based Creole or Pidgin [cpe]-U, Esperanto [eo]-U, Ewondo [ewo]-U -Fang [fan]-U, Fanti [fat]-U, Finno-Ugrian Language [fiu]-U, Fon [fon]-U, French-based Creole or Pidgin [cpf]-U, Friulian [fur]-U, Fulah [ff]-U -Ganda [lg]-U, Gayo [gay]-U, Gbaya [gba]-U, Geez [gez]-U, Germanic Language [gem]-U, Gondi [gon]-U, Gorontalo [gor]-U, Gothic [got]-U, Grebo [grb]-U, Gwichʼin [gwi]-U -Haida [hai]-U, Herero [hz]-U, Himachali [him]-U, Hittite [hit]-U, Hmong [hmn]-U, Hupa [hup]-U -Iban [iba]-U, Ido [io]-U, Ijo [ijo]-U, Inari Sami [smn]-U, Indic Language [inc]-U, Indo-European Language [ine]-U, Interlingua [ia]-U, Interlingue [ie]-U, Inupiaq [ik]-U, Iranian Language [ira]-U, Iroquoian Language [iro]-U -Jju [kaj]-U, Judeo-Arabic [jrb]-U, Judeo-Persian [jpr]-U -Kabyle [kab]-U, Kachin [kac]-U, Kalmyk [xal]-U, Kamba [kam]-U, Kanuri [kr]-U, Kara-Kalpak [kaa]-U, Karelian [krl]-U, Karen [kar]-U, Kashubian [csb]-U, Kawi [kaw]-U, Khoisan Language [khi]-U, Khotanese [kho]-U, Kikuyu [ki]-U, Kimbundu [kmb]-U, Klingon [tlh]-U, Komi [kv]-U, Kongo [kg]-U, Koro [kfo]-U, Kpelle [kpe]-U, Kru [kro]-U, Kuanyama [kj]-U, Kurukh [kru]-U, Kutenai [kut]-U -Ladino [lad]-U, Lamba [lam]-U, Limburgish [li]-U, Lojban [jbo]-U, Low German [nds]-U, Lower Sorbian [dsb]-U, Lozi [loz]-U, Luba-Katanga [lu]-U, Luba-Lulua [lua]-U, Luiseno [lui]-U, Lule Sami [smj]-U, Lunda [lun]-U, Luo [luo]-U, Lushai [lus]-U -Magahi [mag]-U, Makasar [mak]-U, Manchu [mnc]-U, Mandar [mdr]-U, Mandingo [man]-U, Manipuri [mni]-U, Manobo Language [mno]-U, Manx [gv]-U, Mari [chm]-U, Marwari [mwr]-U, Masai [mas]-U, Mayan Language [myn]-U, Mende [men]-U, Micmac [mic]-U, Middle Dutch [dum]-U, Middle English [enm]-U, Middle French [frm]-U, Middle High German [gmh]-U, Middle Irish [mga]-U, Minangkabau [min]-U, Mirandese [mwl]-U, Miscellaneous Language [mis]-S, Mohawk [moh]-U, Mon-Khmer Language [mkh]-U, Mongo [lol]-U, Multiple Languages [mul]-S, Munda Language [mun]-U -N’Ko [nqo]-U, Nahuatl [nah]-U, Navajo [nv]-U, Ndonga [ng]-U, Neapolitan [nap]-U, Newari [new]-U, Nias [nia]-U, Niger-Kordofanian Language [nic]-U, Nilo-Saharan Language [ssa]-U, No linguistic content [zxx]-S, Nogai [nog]-U, North American Indian Language [nai]-U, North Ndebele [nd]-U, Northern Frisian [frr]-U, Norwegian [no]-U, Nubian Language [nub]-U, Nyamwezi [nym]-U, Nyankole [nyn]-U, Nyasa Tonga [tog]-U, Nyoro [nyo]-U, Nzima [nzi]-U -Occitan [oc]-U, Ojibwa [oj]-U, Old English [ang]-U, Old French [fro]-U, Old High German [goh]-U, Old Irish [sga]-U, Old Norse [non]-U, Old Persian [peo]-U, Old Provençal [pro]-U, Osage [osa]-U, Otomian Language [oto]-U, Ottoman Turkish [ota]-U -Pahlavi [pal]-U, Pali [pi]-U, Pampanga [pam]-U, Papuan Language [paa]-U, Philippine Language [phi]-U, Phoenician [phn]-U, Portuguese-based Creole or Pidgin [cpp]-U, Prakrit Language [pra]-U -Rajasthani [raj]-U, Rapanui [rap]-U, Rarotongan [rar]-U, Romance Language [roa]-U, Romany [rom]-U, Root [root]-U -Salishan Language [sal]-U, Samaritan Aramaic [sam]-U, Sami Language [smi]-U, Sandawe [sad]-U, Sardinian [sc]-U, Sasak [sas]-U, Scots [sco]-U, Selkup [sel]-U, Semitic Language [sem]-U, Serer [srr]-U, Shan [shn]-U, Sichuan Yi [ii]-U, Sicilian [scn]-U, Sidamo [sid]-U, Sign Language [sgn]-U, Siksika [bla]-U, Sino-Tibetan Language [sit]-U, Siouan Language [sio]-U, Skolt Sami [sms]-U, Slave [den]-U, Slavic Language [sla]-U, Sogdien [sog]-U, Songhai [son]-U, Soninke [snk]-U, Sorbian Language [wen]-U, South American Indian Language [sai]-U, South Ndebele [nr]-U, Southern Altai [alt]-U, Southern Sami [sma]-U, Sranan Tongo [srn]-U, Sukuma [suk]-U, Sumerian [sux]-U, Susu [sus]-U, Syriac [syr]-U -Tai Language [tai]-U, Tamashek [tmh]-U, Tereno [ter]-U, Tigre [tig]-U, Timne [tem]-U, Tiv [tiv]-U, Tlingit [tli]-U, Tsimshian [tsi]-U, Tumbuka [tum]-U, Tupi Language [tup]-U, Tyap [kcg]-U -Ugaritic [uga]-U, Umbundu [umb]-U, Upper Sorbian [hsb]-U -Vai [vai]-U, Volapük [vo]-U, Votic [vot]-U -Wakashan Language [wak]-U, Walamo [wal]-U, Walloon [wa]-U, Washo [was]-U -Yao [yao]-U, Yiddish [yi]-U, Yupik Language [ypk]-U -Zande [znd]-U, Zapotec [zap]-U, Zaza [zza]-U, Zenaga [zen]-U, Zuni [zun]-U \ No newline at end of file diff --git a/docs/site/TEMP-TEXT-FILES/bcp47-syntax-mapping.txt b/docs/site/TEMP-TEXT-FILES/bcp47-syntax-mapping.txt deleted file mode 100644 index 54070ba625c..00000000000 --- a/docs/site/TEMP-TEXT-FILES/bcp47-syntax-mapping.txt +++ /dev/null @@ -1,185 +0,0 @@ -BCP47 Syntax Mapping -In the current LDML specification, a Unicode Locale Identifier consists from is composed of a Unicode Language Identifier plus optional locale extensions. Unicode Language Identifier is fully compatible with BCP47 language tag, but the syntax of locale extensions ("@" key "=" type (";" key "=" type)* ) are not. The LDML is trying to define systematical mapping, but the current definition may truncate (and or remove "-" in some type values) key or type value to 8 characters because of the BCP47 language subtag's syntax restriction. The current definition utilizes BCP47 private use features, but we want to make locale extensions formal (writing a new RFC to reserve a singleton letter for the usage), so we can avoid any conflicts with other private use values and also allow software developers to write a parser for Unicode locale extensions confidently. -BCP 47 is undergoing a revision which should be done soon: -Current version (4646) -Latest draft of next version -Once we define formal representation of Unicode locale extensions in BCP47 syntax, we actually no longer have any good reasons to use @key1=type1;key2=type2... syntax for Unicode Locale Identifier other than backward compatibility reasons. This document proposes that we retire the proprietary syntax and fully migrate to the new syntax fully supported by BCP47 language tag. -There are several options for representing keyword key/type pairs in BCP47 syntax. Examples in following proposal assume a letter "u" is reserved for the Unicode locale extensions; however we could go for any of the possible extensions: [0-9 a-w y z]. -The table below shows the locale extension keys/values currently defined by the LDML specification. -Key/Type Definitions -key type Description -collation standard The default ordering for each language. For root it is [ UCA ] order; for each other locale it is the same as UCA ordering except for appropriate modifications to certain characters for that language. The following are additional choices for certain locales; they only have effect in those locales. -phonebook For a phonebook-style ordering (used in German). -pinyin Pinyin ordering for Latin and for CJK characters; that is, an ordering for CJK characters based on a character-by-character transliteration into a pinyin. (used in Chinese) -traditional For a traditional-style sort (as in Spanish) -stroke Pinyin ordering for Latin, stroke order for CJK characters (used in Chinese) -direct Hindi variant -posix A "C"-based locale. (no longer in CLDR data) -big5han Pinyin ordering for Latin, big5 charset ordering for CJK characters. (used in Chinese) -gb2312han Pinyin ordering for Latin, gb2312han charset ordering for CJK characters. (used in Chinese) -unihan Pinyin ordering for Latin, Unihan radical-stroke ordering for CJK characters. (used in Chinese) -calendar -(For information on the calendar algorithms associated with the data used with the above types, see [ Calendars ].) gregorian (default) -islamic -alias: arabic Astronomical Arabic -chinese Traditional Chinese calendar -islamic-civil -alias: civil-arabic Civil (algorithmic) Arabic calendar -hebrew Traditional Hebrew Calendar -japanese Imperial Calendar (same as Gregorian except for the year, with one era for each Emperor) -buddhist -alias: thai-buddhist Thai Buddhist Calendar (same as Gregorian except for the year) -persian Persian Calendar -coptic Coptic Calendar -ethiopic Ethiopic Calendar -collation parameters: - colStrength - colAlternate - colBackwards - colNormalization - colCaseLevel - colCaseFirst, - colHiraganaQuaternary - colNumeric - variableTop Associated values as defined in: 5.14.1 Semantics as defined in: 5.14.1 -currency -(also known as a Unicode currency code ) ISO 4217 code, -plus others in common use Currency value identified by ISO 4217 code, plus others in common use. Also uses XXX as Unknown or Invalid Currency . -See Appendix K: Valid Attribute Values and also [ Data Formats ] -time zone -(also known as a Unicode time zone code ) TZID, plus the value: -Etc/Unknown Identification for time zone according to the TZ Database, plus the value Etc/Unknown . -Unicode LDML supports all of the time zone IDs by mapping all equivalent time zone IDs to a canonical ID for translation. This canonical time zone ID is not the same as the zone.tab time zone ID found in [ Olson ]. -For more information, see Section 5.9.2 Time Zone Names , Appendix F: Date Format Patterns , and Appendix J: Time Zone Display Names . -Collation Parameters -Attribute Options Basic Example XML Example Description -strength primary (1) -secondary (2) -tertiary (3) -quaternary (4) -identical (5) [strength 1] strength = " primary " Sets the default strength for comparison, as described in the UCA. -alternate non-ignorable shifted [alternate non-ignorable] alternate = " non-ignorable " Sets alternate handling for variable weights, as described in UCA -backwards on -off [backwards 2] backwards = " on " Sets the comparison for the second level to be backwards ("French"), as described in UCA -normalization on -off [normalization on] normalization = " off " If on , then the normal UCA algorithm is used. If off , then all strings that are in [ FCD ] will sort correctly, but others will not necessarily sort correctly. So should only be set off if the the strings to be compared are in FCD. -caseLevel on -off [caseLevel on] caseLevel = " off " If set to on, a level consisting only of case characteristics will be inserted in front of tertiary level. To ignore accents but take cases into account, set strength to primary and case level to on . -caseFirst upper -lower -off [caseFirst off] caseFirst = " off " If set to upper , causes upper case to sort before lower case. If set to lower , lower case will sort before upper case. Useful for locales that have already supported ordering but require different order of cases. Affects case and tertiary levels. -hiraganaQuaternary on -off [hiraganaQ on] hiragana­Quaternary = " on " Controls special treatment of Hiragana code points on quaternary level. If turned on , Hiragana codepoints will get lower values than all the other non-variable code points. The strength must be greater or equal than quaternary if you want this attribute to take effect. -numeric on -off [numeric on] numeric = " on " If set to on , any sequence of Decimal Digits (General_Category = Nd in the [ UCD ]) is sorted at a primary level with its numeric value. For example, "A-21" < "A-123". -variableTop uXXuYYYY & \u00XX\uYYYY < [variable top] variableTop = "uXXuYYYY" The parameter value is an encoded Unicode string, with code points in hex, leading zeros removed, and 'u' inserted between successive elements. -Sets the default value for the variable top. All the code points with primary strengths less than variable top will be considered variable, and thus affected by the alternate handling. -match-boundaries: none whole-character whole-word n/a match-boundaries = "whole-word" The meaning is according to the descriptions in UTS #10 Searching . -match-style minimal medial maximal n/a match-style = "medial" The meaning is according to the descriptions in UTS #10 Searching . -1. Proposed BCP47 subtag syntax -This document propose the syntax described by the BNF below. -locale-extensions = locale-singleton "-" extension *("-" extension) -extension = key "-" type -locale-singleton = "u" -key = 2alphanum -type = 3*8alphanum -alphanum = (ALPHA / DIGIT) -Example: -en-US-u-ca-islamicc-co-phonebk -this corresponds to the former syntax -en-US@calendar=islamic-civil;collation=phonebook -Current Proposed -collation co -calendar ca -currency cu -numbers nu -time zone tz -colStrength ks -colAlternate ka -colBackwards kb -colNormalization kk -colCaseLevel kc -colCaseFirst kf -colHiraganaQuaternary kh -colNumeric kn -variableTop kv -2. Keys -Key names and only key names are always of length=2, and types (values) are always greater than 2. This proposal defines new canonical key names below. -The motivation is reduction of string size, and making sure that keys and values don't overlap syntactically. -3. Types -3.1 Collation -3.1.1 Collation (co) types -Current Proposed -big5han big5han -digits-after digitaft -direct direct -gb2312han gb2312 -phonebook phonebk -pinyin pinyin -reformed reformed -standard standard -stroke stroke -traditional trad -3.1.2 Collation Strength (ks) types -Current Proposed -primary level1 -secondary level2 -tertiary level3 -quarternary level4 -identical identic -3.1.3 Collation Alternate (ka) types -Current Proposed -non-ignorable noignore -secondary level2 -shifted shifted -3.1.4 Collation Backwards (kb) / Normalization (kk) / Case Level (kc) / Hiragana Quaternary (kh) / Numeric (kn) types -Current Proposed -yes true -no false -3.1.5 Collation Case First (kf) types -Current Proposed -upper upper -lower lower -no false -3.1.6 Collation Variable Top (kv) type -The variable top parameter is specified by a code point in the format uXXuYYYY. No changes are required. -3.2 Calendar (ca) -Current Proposed -buddhist buddhist -coptic coptic -ethiopic ethiopic -ethiopic-amete-alem ethiopaa -chinese chinese -gregorian gregory -hebrew hebrew -indian indian -islamic islamic -islamic-civil islamicc -japanese japanese -persian presian -roc roc -3.3 Currency (cu) types -ISO4217 code (3-letter alpha) is used for currency. No changes required. -3.4 Number System (nu) types -The current CVS snapshot implementation uses CSS3 names. This proposal changes all of type names to script code with one exception (arabext). -Current (CVS snapshot) Proposed -arabic-indic arab -bengali beng -cambodian khmr -decimal latn -devanagari deva -gujarati gujr -gurmukhi guru -hebrew hebr -kannada knda -lao laoo -malayalam mlym -mongolian mong -myanmar mymr -oriya orya -persian arabext -telugu telu -thai thai -3.5 Time Zone (tz) types -CLDR uses Olson tzids. These IDs are usually made from +"/"+ and relatively long. To satisfy the syntax requirement discussed in this document, we need to map these IDs to relatively short IDs uniquely. The UN LOCODE is designed to assign unique location code and it satisfies most of the requirement. A LOCODE consists from 2 letter ISO country code and 3 letter location code. This proproposal suggest that a 5 letter LOCODE is used as a short time zone ID if examplar city has a exact match in LOCODE repertoire. Some Olson tzids do not have direct mapping in LOCODE. In this case, we assign our own codes to them, but using 3-4/6-8 letter code to distinguish them from LOCODE. For Olson tzid Etc/GMT*, this proposal suggest "UTC" + ["E" | "W"] + nn (hour offset), for example, UTCE01 means 1 hour east from UTC (Etc/GMT-1). The proposed short ID list is attached in this document. -Unicode copyright \ No newline at end of file diff --git a/docs/site/TEMP-TEXT-FILES/bcp47-validation-and-canonicalization.txt b/docs/site/TEMP-TEXT-FILES/bcp47-validation-and-canonicalization.txt deleted file mode 100644 index d3804d60866..00000000000 --- a/docs/site/TEMP-TEXT-FILES/bcp47-validation-and-canonicalization.txt +++ /dev/null @@ -1,112 +0,0 @@ -BCP47 Validation and Canonicalization -The proposal is to add two tables of precomputed values to CLDR for each release, plus a table of language code mappings. -Validation Data -Language subtag. These can be 2-letter, 3-letter, or registered (>3 letter). We were looking at validation of 7,000 base language entries and Markus had an idea. Algorithmically map the two-letter codes onto values from 0..675, and the three letter codes onto 676..18251 (just over 14 bits). -The set of all valid language subtags can be put into a bit-set using 2,282 bytes. That allows for fast validation with a small table. Registered codes would just use an exception table. -An alternative mapping would be 26*26*27, eg -"xy" => (x-0x61)*26*27 + (y-0x61)*27 -"xyz" => (x-0x61)*26*27 + (y-0x61)*26 + (z-0x60) -However, it is better to have the two letter codes as smaller numbers, for compression, since they occur far more often. -Region subtag. One could do the same for region codes, with two-letter codes from 0..675, and then 3-digit codes from 675 to 1,675 (about 10.7 bits). A bitset that can cover all values is a 210-byte table. -Script subtag. John Cowan suggested that except for Teng/Tfng, the second letter of the script code is redundant, so you can special-case those two, remove the second letter, and use the same algorithm as for ISO 639-2. However, we can't expect that the JAC would follow any particular restrictions, and the set of scripts is still a relatively small number, so this probably isn't worth it. -Note: The generation of a table is simply a convenience, since it can be computed from the IANA registry, so it may not be worth doing as a part of CLDR, but we can suggest it as an implementation technique. -Canonicalization Data -We also provide data for validation and canonicalization. The basic canonicalization is as per BCP47, with the following additions: -We canonicalize the case, with variants getting uppercase, so en_foobar => en_FOOBAR -We alphabetize the variants so that irrelevant differences in order don't cause problems, so en-FOOBAR-ABCDE => en_ABCDE_FOOBAR -Note: the uppercasing of variants is for compatibility, since the basis for the CLDR work predated BCP47. -Data for doing the preferred value mapping is in the supplemental data, extracted from the IANA registry. -We also provide data for a lenient canonicalization, which involves the following additional steps: -maps the 3-letter language subtags that have 2-letter equivalents into those 2-letter equivalents; so eng-US => en_US -maps the 3-digit region codes that have 2-letter equivalents into those 2-letter equivalents; so eng-840 => en_US -combines identical extensions; en-a-foo-a-fii => en_a_foo_fii -The data for #2 are in http://unicode.org/cldr/data/common/supplemental/supplementalData.xml, in codeMappings/territoryCodes. However, we need an extra table for doing #1, the language code mappings. Suggest adding: - -  -... -Sample Structure - -  -  -2122061011208687, e00d48015863b67, 15fb9fb2095c00, 340400f7818068d, -  -2b07ebe0bd4e300, 100086b25d7fffc, 43fff001538f3c40, -4044cc58020eaf00, -  4085570410419a, 18ffffffc04002, 2eea2e908400418, 6260008c6, -  -33d4000000000000, 10000, 0, 0, -  0, 80 -  -  -  91019c747263433, 1c68108800045364, 4443028094090c84, -7ffffbe3baa63970, -  -3ff1e7af28980bf0, 61204489a16d0e6d, 10000003024040, -648bb808222ebe40, -  1001044202044053, 4100000020000400, -1220200fbffdfc00, -5010004244000101, -  -78c6890a8c3e0081, -fc408f0000001, -200169dfafa301, -880800009, -  -8171c0000001, -4187fd4fbb1, -2000000800011, 9fe75970f1b42bd, -  1490f9feddf20051, -114007e, -2800000008080001, -80280000001, -  -40180000001, -400000000010003, -c0000200000001, -1000000d0041, -  -20000080000041, -1200000208000001, -42000002000005, 7fffffffffefefff, -  -3bfc2522b0640841, 4124082843c19cf, -d00447fffbbb00, 488349bd64542b49, -  -3f182aaabe898841, -7a20060100c8ec8f, -400043effff79ae, -3878c1e88b08201, -  8005b0008100ffd, 2000040030000000, -301210082002fde7, -3eee729ffdfffbc, -  665df000000227bd, -4200010e261ad97, c100860c01149fc, 75689565b65c5500, -  20003efedb, -3fe966da82589400, 7f7ffff07a540, 460801000, -  a12510714b, 600000490100000, 4440000100000001, 4000010048010000, -  5100000042880000, 4f553243564102dd, 800001cdc2bd5, -6e8fbffffffffffc, -  a798218157d9013, 4000000824000000, 4001020000000, 39abfeb000004, -  40000000, 4400020000, 5a88110000000020, 6042000000000000, -  500108000408a, 400631080, 4081003f50300400, 13b33be00000000, -  1100800, -5000000000000000, 283cedffffffffff, 3c51fcf24dfffc0a, -  -4daba593a4fdff00, 409403cff84f039, -774ab6e1cfff5fef, -20000069208824fd, -  -c3fddefefff7ff9, 40444f850ffd4, 7f41be8d6fffdff0, 2397b2000000da23, -  fe7ffff00084050, 800000008104180, 11c941, 5feb408040040100, -  -3fbfbeeffffbff36, -7198804000f9fffa, 1100036edb9f051, -77d596afbc000000, -  -2001daefbfffbe, 40050809053, 10000, -7ebb71a93fd5f000, -  78047c0208, 844785244050cc0, 1885000000000204, 11d1350ee8cd1001, -  833eb5906691, 4100000001040052, 74481a71dd649964, 800008001000fb9, -  10002010045400, -60a140ff7f9ff7fc, 1040c00000698843, 1a2dd20200, -  -20feffbffffbfee0, 400000000013959, 2486290f00000401, -7fffbb9fff5fefd3, -  68000c02000000, -370ffffffffff80, 10000080215e, 1000011000000, -  -21c2801000, -110008000001, -1, -224000004003, -  -1801, -200002000000001, -231, -401001, -  -2000100001, -10000000001, -4000000000000001, -7fa6743002322029, -  -7ff8000000ff800e, 72e6061b3dc3000, -460ffddbbc083001, -c0000da80802f1a, -  204100000004, -1010248847ff5e, -1000000000001, -80001, -  7dffffff7fffffff, -100000008000009, -40000421, -80000080002803, -  -10000400001, 7efbfffdf7ffffff, -1, -800000011, -  -1000080020003001, 27ef77ffffeffbe9, -2800000020fb7e0, -98611d000800002, -  -13642a901081, -820a02001000001, -1aa3ff8bbfbae5e0, -2a4a3bc0002225d6, -  1170004203fffbff, -1db71a9a7df, 400220005450540d, 6010041040810696, -  5605100000000000, 200106000001040, 64b67f9b19201180, -462b32512a8ff6c0, -  421500406204837, -3efa4067cac00000, 3113f7df46c98, 900000000, -  400100100a000, -3045824002201, -5a2004f9e7bebbd5, 7251425410002047, -  200003fefbff1edf, -482004483e11f390, -20a0300038a02081, 7c00100107ff445e, -  -479faa0062208009, 30000003dbd77f5e, 3010000400042704, -fff7ffe70, -  -1, -1, -1, -1, -  -1, -1, -1, 7bdeffffffffffff, -  140c1085d13ee57e, 800117fa2, bffffef00, 3b53000000800002, -  16241100000010e, 5001a3831002010, 81183010, -780efd5ed8010201, -  20800052d, 2000009020010400, 319c5f61004, 254010, -  -2040fffffffebe0, -230a120c00000001, 400b7fffffa7bfb, -400000a1250228ef, -  -800e840e9000201, -4004010081100801, 757bf7efdffdfffd, -20823e08f7e981, -  -a8e000010400001, -19de7efa010f, 17d467d07159f159, -40000081080e7d6, -  -90240402202001, -3e00fd67bfe000b, 7fdfffdffef6f1f, -412043c4fae3b, -  -1000080080000081, -7fd010022808241, -860000001003a5, -f98420400200001, -  67dc75ddbf8ff531, 201ca06beab91, 4480404023, 4000400000406d44, -  80050060130000, -3effffbffdc00000, 6f14f040f49c5588, 400a0a51641, -  -40823fffffff7ffc, 4a0044108581fe, 1000224012300, 1000000000, -  936fbf1010800, 0, 2d80c, 2c286c00000000a0, -  18df010000000, 25003f79fff0120, a00000, 90003100040000, -  8300000100002, 100000, -1000000000000000, 1011ae7ecffffff, -  5ef18d040092000, 1105404141000010, 4057a3ff6040, 19f7d9755450080b, -  46757f0435578cc7, 72c0000000000011, 5480360501fdae, 10000001ba388b1, -  2100300000044240, 157ff95f00000010, 40117a78d630944, 100000041e984a40, -  -56fcf17ff8bfdf7e, -1000ffffffede, -7cf0000100bac7a9, 45bd55042f54c019, -  -460e973bb3f7ffff, 1ad243d7fed7d37f, 80248550118440, 242000008000281, -  -7f9fe01900020010, -1d4eafefee9fff58, 2442980000000013, 3bfbfe100020, -  -bb61abaf5a2bf00, 3d42051b3668ffdd, -3ffffff7fc2cf27c, 200506e80c110b44, -  200007dbbf7f002, 5b2801, -2000fffeefdf00, -7ffffff7eedfdfad, -  20c10000, 310084280230030, -53b3cffffffdbdcc, 67ffffff004c8023, -  -3f8af7bfefef, 10138104000010ff, 3081676e140121c0, 1000000100, -  80400a242200000 -  - -Here is the data that they replace: - - \ No newline at end of file diff --git a/docs/site/TEMP-TEXT-FILES/bidi-handling-of-structured-text.txt b/docs/site/TEMP-TEXT-FILES/bidi-handling-of-structured-text.txt deleted file mode 100644 index f80fecc0fe3..00000000000 --- a/docs/site/TEMP-TEXT-FILES/bidi-handling-of-structured-text.txt +++ /dev/null @@ -1,172 +0,0 @@ -BIDI handling of Structured Text -Author: Tomer Mahlin - IBM Bidi Competency Center - e-mail comments to John Emmons - emmo@us.ibm.com -0. Terminology -Structured text (aka complex expressions) - text having implied or/and inherent structure such as: URL,file path, email, Java code, XML, regular expression, date/time stamp etc. -This term is abbreviated as STT. -1. The problem -When structured text includes characters from languages with bidirectional script default display system on the logical platform does not preserve the structure and as a result the text on the screen becomes incomprehensible. The problem is with display only and background text related processing is not affected. However, the way the text is displayed on the screen makes it very hard to work with it (in the best case). -2. What solution would we like to have ? -In most general terms the solution should allow: -Preparation of string for display which will assure that its structure is preserved, This entails development of flexible set of parsers which will analyze the structure of text and will inject UCC (Unicode Control Characters) when appropriate. The framework should be extendable in order to allow adding new parsers (either custom or built-in) in the future. -Taking into consideration user preferences (default rules for STT handling): Arabic vs. Hebrew. Users in different geographies are accustomed to different rules for STT display. For example math formulas are always displayed from left-to-right for Hebrew users, while for Arabic users, they may be displayed from right-to-left. -Ability to leverage default rules for STT handling (defined in CLDR) and also customize them. -3. What this solution will NOT address (static vs. dynamic context) -Static context is context in which text can't be directly edited by the end user (e.g. label, not editable cell of grid, tree branch label etc.). -Here is an example for file path: -Dynamic context is context in which text can be directly edited (e.g. input field, editable area, editable cell of grid etc.) . -Here is an example for file path: -Due to the ICU/CLDR nature (stand alone library without any widgetry) the solution will relate to static cases of text only. -Namely, the solution will prepare the text to be displayed in the static context. -Addressing dynamic context is beyond what ICU can provide. The main reason is heterogeneous environment in which ICU can be deployed and -different approaches for resolution of problem for STT. For example, even for Java world the difference between SWT and Swing will pose a challenge. For .Net world (in which ICU4C can be used), addressing the problem is beyond the scope of ICU since it will necessitate invocation of .Net level API. -4. How the solution will be used (scope, applicability for ICU itself) ? -In overwhelming majority of cases the deployers leveraging ICU will call an API similar to the following one: -prepareForDisplay( inputText, STT_Type, additional_parameters) -This API will inject UCC ( Unicode Control Characters ) into inputText according to STT_Type and additional_parameters and will return the result ready for display. -inputText - structured text subject to display -STT_Type: file path, URL, email, Java etc. -additional_parameters - external parameters which might affect STT processing and which are not directly available to ICU (e.g. GUI direction etc.) -The result string will be embedded by the caller into graphical element which will render it on the screen. -ICU users will be able to either accept default STT rules (associated with locale and defined originally in CLDR) or customize them (via convenient API -allowing setting / getting values for different aspects of such rules). -ICU users will be able to extend the list of provided out of the box parsers in order to address additional types of STT. -One additional usage of this functionality is in serialization / formatting dates / time stamps provided by ICU itself. -Date / time stamp is considered structured text as well. -To assure backward compatibility ICU should not inject UCC into date / time stamps by default. However, it can provide either flag or additional -signature of the same function (responsible for date / time stamps generation) which will prepare them for display (by injection of UCC appropriately). -This will assure proper display of date / time stamps generated by ICU. For example in Eclipse: -5. Factors affecting the display of STT -There are some different types of factors that can effect the proper display of structured text. Some types of STT such as URLs or file paths, have a strong LTR directionality associated with them, while others have different display semantics depending the directionality of the underlying GUI, or upon the content of the text itself. This is further complicated by the fact that the culturally accepted preferences for proper display of STT differ, even between Hebrew and Arabic users. Thus, we need to be able to define these rules within the CLDR that describe these and be able to use that data in order to be able to format STT properly in a given context. -The following table summarizes the recognized preferences for the proper display of STT in Hebrew and Arabic: -6. Proposed additions to CLDR -The following schema is proposed for addition into CLDR, most likely as sub-elements under the category. This structure defines the sets of rules in CLDR necessary to describe proper display behavior for various types of structured text: - - - - - - - - - - - - - - - - - - - -7. Sample data for various types of STT: - a). STT with strong directionality, such as filepath, would have the following rules in root: - - - -LTR -LEFT -LEFT - - - - -LTR -RIGHT -LEFT - - - - b). The "message" type has some variations based on the content, but the rules remain constant across locales, as follows: -root.xml: - - - -LTR -LEFT -LEFT - - -RTL -LEFT -RIGHT - - -RTL -LEFT -RIGHT - - - - -LTR -RIGHT -LEFT - - -RTL -RIGHT -RIGHT - - -RTL -RIGHT -RIGHT - - - - c). Rules for date and time stamps differ between Hebrew and Arabic, so we would have: -In he.xml: - - - -RTL -LEFT -RIGHT - - -RTL -LEFT -RIGHT - - -LTR -LEFT -LEFT - - - - -RTL -RIGHT -RIGHT - - -RTL -RIGHT -RIGHT - - -LTR -RIGHT -LEFT - - - -The following rules in ar.xml ( Arabic ): - - - -LTR -LEFT -LEFT - - - - -RTL -RIGHT -RIGHT - - - \ No newline at end of file