I recommend that people interested in the ECMAScript Internationalization API read the actual standard or my introduction to it, and don't rely on Philippe's interpretation.
http://www.ecma-international.org/ecma-402/1.0/ http://norbertlindenberg.com/2012/12/ecmascript-internationalization-api/ Norbert On Dec 20, 2012, at 11:55 , Philippe Verdy wrote: > Great ! Now we have a formal definition to provide a compatibility javascript > framework (which will also allow pluggable locales and extended collations to > be supported). > > Beside the support for numbers and dates formaters (which is not so critical > and easily implemented in Javascript, just like the locales resolvers for > mapping a requested locale to an effective set of data localized in a smaller > set of locales) the most important part of it is about collation. > > So the major improvement is in the String.localeCompare(that) method, which > was defective since long (working only in a single unspecified default locale > with a single unspecified default collator), to be replaced by > Intl.Collator.prototype.compare(this, that[, requestedLocales[, options]]) > > One major extension of this ECMA specification is how collators are > instanciated and categorized : they depend not only the requestedLocales > (i.e. here a BCP47 language code), and the options (containing the Unicode > singleton-extension for BCP 47), but also on a new "matcher" option (taking > values : "search", "lookup", and "best fit", but depending on sections using > the collator object, only the first two values have a defined behavior for > collation, the 2nd and 3rd values being used for numeric formaters). > > > Also this specification changes from a numeric collation level to a > "sensitivy" parameter taking one of the four values : "base","accent", > "case", or "variant" ; it looks like this mixes the collation level parameter > with the "kc" extension, whose mapping is not said to invalid in the spec but > which is not specified elsewhere. > > > On the 10 defined Unicode extension keys for specifying a collation within a > locale identifier : > > - only the 3 following are supported and defined by the Intl.Collator object > : "co" (for collation specialisations), "kn" (for sorting by numeric value), > "kf" (for case first, such as sorting capital letters before small letters) > For the "co" extension key (which specifies an additional list of collation > options), the list of options must contain an initial null member (apparently > for future extension, but absent from the Unicode locale extension "co"), and > other listed members must not be "standard" and "search" (the ECMA spec does > not really specify why they are reserved). > > - but the 5 following are not supported : "kb" (backward secondary weights > reordering, mostly for French), "kh" (for hiragana quaternary), "kk" (for > normalization type, is an NFD normalization step assumed, or the absence of a > prior normalization step ?), "kr" (for reordering) and "vt" (for variable > top) — See ECMA spec §10.2.3. > > - for the remaining 2 extensions, it is not clear if it is supported or not : > "ka" (for alternate sorts such as dictionnary order vs. phonebook order, or > for chinese and Japanese sort order variants based on transliterations or > other transforms, or on radical/strokes count), "kc" (for case level). > > This specification also does not define an API to retrieve an exemplar set of > collation elements (most often single letters) for indexing (according to the > specified collator), or to compute and return this indexing value from a > string (also according to a selected collator), though they are defined in > the CLDR data (surrently only at the language level, not really at the locale > level that defines a collation within a language). > > A major work will be to map the CLDR locales onto the Javascript/ECMAscript > locales, using this API. There will be some ambiguities and I expect that > even the ECMAscript specification and the CLDR specification will be both > updated to allow their convergence. I just hope that the ECMAscript working > group will participate to the discussions occuring in the CLDR project to > solve their interoperability and enhance the I18n support in both > environments (most other applications will benefit of it via their > integration or support of the ICU API, or a similar API supporting the same > options, such as the Windows API itself, or RDBMS features in an improved SQL > API). > > > > 2012/12/20 Mark Davis ☕ <m...@macchiato.com> > I have a new google blog post about the new ECMAScript (JavaScript) > internationalization spec. > > “Until now, it has been very difficult for web application designers to do > something as simple as sort names correctly according to the user's language. > And it matters: English readers wouldn’t expect Århus to sort below Zürich, > but Danish speakers would.” … > > http://googledevelopers.blogspot.com/2012/12/putting-zurich-before-arhus.html > > Many people contributed to this multi-year effort! > > Mark > > — Il meglio è l’inimico del bene — > >