in perlop documentation (http://perldoc.perl.org/perlop.html):
Binary "cmp" returns -1, 0, or 1 depending on whether the left argument
is stringwise less than, equal to, or greater than the right argument.
"lt", "le", "ge", "gt" and "cmp" use the collation (sort) order
specified by the current locale if a legacy use locale (but not use locale
':not_characters' ) is in effect. See perllocale. Do not mix these with
Unicode, only with legacy binary encodings. The standard Unicode::Collate and
Unicode::Collate::Locale modules offer much more powerful solutions to
collation issues.
What I understand from here is that if it finds a "use locale", it will try and
sort binary strings with the locale indicated. Otherwise, it will use a default
locale. But it won't do Unicode sorting. For unicode sorting, you need
Unicode::Collate.
Our main concern was that default sorting would separate accented letters
(e.g., 'a' and 'á', 'u' and 'ü', etc.) which is really confusing for our users,
although our system's locale is 'es_ES.UTF-8' in every line of 'locale' output.
Kind regards,
Juan Clavero
-----Mensaje original-----
Date: Mon, 05 Nov 2012 15:03:30 +0100
From: Martin Gruner <[email protected]>
Subject: Re: [dev] Unicode sorting
To: Development community of OTRS <[email protected]>
Message-ID: <[email protected]>
Content-Type: text/plain; charset=windows-1252
Hi Juan,
AFAIR, Perl uses the locale data from your system environment, also for the cmp
operator. So you can tweak that to get a different sorting for your system.
Database based sorts use the database's locales/collation data.
Regards, mg
Am 30.10.12 09:31, schrieb Juan Manuel Clavero Almir?n:
> Hi all,
>
> since OTRS 3.1, OTRS works internally with Unicode Strings but leaves
> character sorting to basic perl 'cmp', which is not really unicode aware...
>
> as explained in Perl Unicode Cookbook
> [http://www.perl.com/pub/2012/06/perlunicook-case--and-accent-insensitive-sorting.html],
> I think it would be best to use Unicode::Collate's sort.
>
> I've done this in Layout.pm -> _BuildSelectionDataRefCreate and it really has
> improved usability to our users (agents and customers both). This is the diff
> to the OTRS layout.pm (v 1.381.2.11 2012/06/22), in case anyone wants to use
> it:
>
> 16a17,22
> > #####################
> > ## Unicode Sorting ##
> > #####################
> > use Unicode::Collate;
> > #####################
> >
> 4667a4674,4684
> > #####################
> > ## Unicode Sorting ##
> > #####################
> > ## Unicode Sorting: added sorting by Unicode::Collate
> > my $Collate = Unicode::Collate->new(level => 1);
> > # Level 1 ignores case and diacritics
> > # Level 2 adds diacritic comparisons to the ordering algorithm.
> > # Level 3 adds case ordering.
> > # Level 4 adds a tiebreaking comparison of probably more detail
> than most people will ever care to know.
> > # Level 4 is default
> >
> 4677c4694,4695
> < @SortKeys = sort( keys %{ $Param{Data} } );
> ---
> > ## Unicode Sorting ##
> > @SortKeys = $Collate->sort( keys %{ $Param{Data} } );
> 4686c4704,4705
> < @SortKeys = sort { $SortHash{$a} cmp $SortHash{$b} } ( keys
> %SortHash );
> ---
> > ## Unicode Sorting ##
> > @SortKeys = sort { $Collate->cmp($SortHash{$a},
> $SortHash{$b}) } ( keys %SortHash );
> 4696c4715,4716
> < push @SortKeys, sort { $List{$a} cmp $List{$b} } ( keys
> %List );
> ---
> > ## Unicode Sorting ##
> > push @SortKeys, sort { $Collate->cmp($List{$a}, $List{$b})
> } ( keys %List );
> 4702a4723
> > ## Unicode Sorting ##
> 4704c4725
> < = sort { $Param{Data}->{$a} cmp $Param{Data}->{$b} } (
> keys %{ $Param{Data} } );
> ---
> > = sort { $Collate->cmp($Param{Data}->{$a},
> $Param{Data}->{$b}) } ( keys %{ $Param{Data} } );
> 4706a4728
> > #####################
>
>
> Kind regards,
> Juan Clavero
>
> _______________________________________________
> OTRS mailing list: dev - Webpage: http://otrs.org/
> Archive: http://lists.otrs.org/pipermail/dev
> To unsubscribe: http://lists.otrs.org/cgi-bin/listinfo/dev
>
--
Martin Gruner
Senior Developer R&D
OTRS AG
Europaring 4
94315 Straubing
T: +49 (0)6172 681988 0
F: +49 (0)9421 56818 18
I: www.otrs.com/
Gesch?ftssitz: Bad Homburg, Amtsgericht: Bad Homburg, HRB 10751, USt-Nr.:
DE256610065
Aufsichtsratsvorsitzender: Burchard Steinbild, Vorstand: Andr? Mindermann
(Vorsitzender), Christopher Kuhn, Sabine Riedel
It's raining... OTRS Feature Add-Ons! Bis zu 10 kostenlose OTRS Feature Add-Ons
und professionellen Hersteller-Support ? Werden Sie jetzt
Service-Subscription-Kunde!
_______________________________________________
OTRS mailing list: dev - Webpage: http://otrs.org/
Archive: http://lists.otrs.org/pipermail/dev
To unsubscribe: http://lists.otrs.org/cgi-bin/listinfo/dev