Collator for "es_AR" not available

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

Collator for "es_AR" not available

Gemstone/S mailing list
Hello Everybody! I've noticed a difference between two GS version regarding Collators and Locales. Some time ago, using version 3.2.8.1, while playing around with Indexes I was able to use a collator for "es_AR". Now, while trying to do the same ini 3.4.3 version, such collator doesn't exist.

As far as I read on the programming guide, Gemstone relies on ICU library but I don't think that ICU removed collator for "es_AR" because there exists a locale for that language-country.
If I take a look at the result of IcuLocale availableLocales it returns an array which includes "es_AR".
But if I try to create a collator for this locale, an error is returned: "a ArgumentError occurred (error 2718), No predefined IcuCollator for locale 'es_AR'"

Taking a closer look at IcuCollator methods, there is one called "availableLocales". Executing it, returns an array where is not included "es_AR".
From this phrase on the Prog guide: "The classes IcuLocale and IcuCollator provide an interface to the ICU (International Components for Unicode) libraries." I expected IcuCollator and IcuLocale to work with the same locales.

So, is this behavior correct? Was "es_AR" removed by Gemstone or by ICU? How can I add my own collator for "es_AR"?

Hope I could made my self clear and sorry if I missunderstood anything here.
Thank you

Sent from the Gemstone/S mailing list archive at Nabble.com.

_______________________________________________
GemStone-Smalltalk mailing list
[hidden email]
https://lists.gemtalksystems.com/mailman/listinfo/gemstone-smalltalk
Reply | Threaded
Open this post in threaded view
|

Re: Collator for "es_AR" not available

Gemstone/S mailing list

brianstone,

This is a good question ... first off the reason that there was any change at all is that we ship new versions of GemStone of with the latest version of ICU. In 3.2.8.1 we were using version 50.2 of the ICU libraries and in 3.4.3 we were using version 58.2 of the ICU libraries.

If you would like to use ICU version 50.2 with GemStone 3.4.3, that is possible and here is the information you need to switch ICU versions:

The libicu libraries are in $GEMSTONE/lib of each release ,
for example in 3.4.x we provide
  libicu.58.2.so
  libicudata.51.2.so
  libicudata.54.1.so
  libicui18n.51.2.so
  libicui18n.54.1.so
  libicuuc.51.2.so
  libicuuc.54.1.so
Older versions have 3 .so files per version,  58+ has just one .so

To change the version of libicu that is loaded ,
login as SystemUser
run
Globals at: #IcuLibraryVersion  "the version configured, 58.2 is default for gemstone v3.4.3"
%
run
Globals at: #IcuLibraryVersion put: '51.2' . "use version that was default in gemstone v3.2"
System commit
%

logout, stopstone, startstone to have the change take effect.

stopstone,startstone required because stone remembers icu lib version loaded by
first session to login and denys subsequent logins that are loading a different version.

It does seem that the "es_AR" collator _was_ removed at some point between 51.2[1] and 58.2[2].  My skimming of the release description for all of the versions between 50 and 58 did not result in an explicit mention of "es_AR" collator support being removed ...(other than a comment that the "Collation code was re-implemented and Collation data size was cut in half" in version 53[3])

Looking at the available collators for 51.2 there were 400 collators and in 58.2 there were only 100 collators, so there was a significant reduction in the number of collators supported.

In 58,2, there is only a single Spanish collator ("es"), while there are 28 Spanish locales:

topaz 1> obj IcuLibraryVersion
58.2
topaz 1> run
(IcuCollator availableLocales select:[:x | x displayName includesString:'span'])
collect:[:x | x name , '  ', x displayName ]
%
anArray
topaz 1> obj1 **
a Array
  #1 es  Spanish
topaz 1> run
(IcuLocale availableLocales select:[:x | x displayName includesString:'span'])
collect:[:x | x name , '  ', x displayName ]
%
anArray
topaz 1> obj1 **
a Array
  #1 es  Spanish
  #2 es_419  Spanish (Latin America)
  #3 es_AR  Spanish (Argentina)
  #4 es_BO  Spanish (Bolivia)
  #5 es_BR  Spanish (Brazil)
  #6 es_CL  Spanish (Chile)
  #7 es_CO  Spanish (Colombia)
  #8 es_CR  Spanish (Costa Rica)
  #9 es_CU  Spanish (Cuba)
  #10 es_DO  Spanish (Dominican Republic)
  #11 es_EA  Spanish (Ceuta & Melilla)
  #12 es_EC  Spanish (Ecuador)
  #13 es_ES  Spanish (Spain)
  #14 es_GQ  Spanish (Equatorial Guinea)
  #15 es_GT  Spanish (Guatemala)
  #16 es_HN  Spanish (Honduras)
  #17 es_IC  Spanish (Canary Islands)
  #18 es_MX  Spanish (Mexico)
  #19 es_NI  Spanish (Nicaragua)
  #20 es_PA  Spanish (Panama)
  #21 es_PE  Spanish (Peru)
  #22 es_PH  Spanish (Philippines)
  #23 es_PR  Spanish (Puerto Rico)
  #24 es_PY  Spanish (Paraguay)
  #25 es_SV  Spanish (El Salvador)
  #26 es_US  Spanish (United States)
  #27 es_UY  Spanish (Uruguay)
  #28 es_VE  Spanish (Venezuela)

My interpretation of this is that all of the Spanish locales now share a single collator, and the primary differences between the different locales involves calendar, currency, and numbers[4]...

Hope this helps,

Dale

[1] http://site.icu-project.org/download/51
[2] http://site.icu-project.org/download/58

On 12/13/19 6:00 AM, brianstone via GemStone-Smalltalk wrote:
Hello Everybody! I've noticed a difference between two GS version regarding Collators and Locales. Some time ago, using version 3.2.8.1, while playing around with Indexes I was able to use a collator for "es_AR". Now, while trying to do the same ini 3.4.3 version, such collator doesn't exist.

As far as I read on the programming guide, Gemstone relies on ICU library but I don't think that ICU removed collator for "es_AR" because there exists a locale for that language-country.
If I take a look at the result of IcuLocale availableLocales it returns an array which includes "es_AR".
But if I try to create a collator for this locale, an error is returned: "a ArgumentError occurred (error 2718), No predefined IcuCollator for locale 'es_AR'"

Taking a closer look at IcuCollator methods, there is one called "availableLocales". Executing it, returns an array where is not included "es_AR".
From this phrase on the Prog guide: "The classes IcuLocale and IcuCollator provide an interface to the ICU (International Components for Unicode) libraries." I expected IcuCollator and IcuLocale to work with the same locales.

So, is this behavior correct? Was "es_AR" removed by Gemstone or by ICU? How can I add my own collator for "es_AR"?

Hope I could made my self clear and sorry if I missunderstood anything here.
Thank you

Sent from the Gemstone/S mailing list archive at Nabble.com.

_______________________________________________
GemStone-Smalltalk mailing list
[hidden email]
https://lists.gemtalksystems.com/mailman/listinfo/gemstone-smalltalk

_______________________________________________
GemStone-Smalltalk mailing list
[hidden email]
https://lists.gemtalksystems.com/mailman/listinfo/gemstone-smalltalk
Reply | Threaded
Open this post in threaded view
|

Re: Collator for "es_AR" not available

Gemstone/S mailing list
Hello Dale,

Thank you so much for your quick and very detailed answer. I tried some
string comparisons and at first glance, it seems workin ok using only
"es".</br>
In any case, with your help I can get back to the old library version if I
want to.

Thank you!



--
Sent from: http://forum.world.st/Gemstone-S-f1461796.html
_______________________________________________
GemStone-Smalltalk mailing list
[hidden email]
https://lists.gemtalksystems.com/mailman/listinfo/gemstone-smalltalk