The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

CatalystX::I18N::Role::Collate - Support for localised collation

SYNOPSIS

 package MyApp::Catalyst;
 
 use Catalyst qw/MyPlugins 
    CatalystX::I18N::Role::Base
    CatalystX::I18N::Role::Collate/;

 package MyApp::Catalyst::Controller::Main;
 use strict;
 use warnings;
 use parent qw/Catalyst::Controller/;
 
 sub action : Local {
     my ($self,$c) = @_;
     
     $c->locale('de');
     @sorted_names = $c->i18n_sort(qw/Algerien Ägypten Armenien Argentinien Äthiopien Afganistan Aserbaidschan/);
     
     $c->stash->{names} = \@sorted_names;
 }

DESCRIPTION

This role adds support for localised collation your Catalyst application.

 my @german_alphabeth = (A..Z,a..z,'ä','Ä','ü','Ü','ö','Ö','ß');
 
 $sort = join(',',sort @german_alphabeth);
 # $sort_no_collate is 'A,B,C,[...],Z,a,b,c,[...],z,Ä,Ö,Ü,ß,ä,ö,ü'
 
 $sort_localised = join(',',$c->i18n_sort(@german_alphabeth));
 # $sort_no_collate is 'a,A,ä,Ä,b,B,c,C,[...],s,S,ß,t,T,u,U,ü,Ü,v,V,w,[...],z,Z'

All methods are lazy. This means that the values will be only calculated upon the first call of the method.

METHODS

i18n_sort

 my @sorted = $c->i18n_sort(@list);
 OR
 my $sorted = $c->i18n_sort(\@list);

Sorts the given list or arrayref with the current locale and returns a list or arrayref.

i18n_collator

  my $collator = $c->i18n_collator();

Returns a Unicode::Collate::Locale object with the current language used as the locale. The collator settings can be configured in your Catalyst I18N configuration:

 # Add some I18N configuration
 __PACKAGE__->config( 
     name    => 'MyApp', 
     I18N    => {
         default_locale => 'de_AT',
         locales        => {
             'de_AT'        => {
                 collate        => {
                     level          => 3,
                     variable       => 'Non-Ignorable',
                     ...
                 },
             },
         }
     },
 );

The following configuration options are available (see Unicode::Collate for detailed documentation):

  • UCA_Version

  • alternate

  • backwards

  • entry

  • hangul_terminator

  • ignoreChar

  • katakana_before_hiragana

  • level

  • normalization

  • overrideCJK

  • overrideHangul

  • preprocess

  • rearrange

  • suppress

  • table

  • undefName

  • undefChar

  • upper_before_lower

  • variable

SEE ALSO

Unicode::Collate

AUTHOR

    Maroš Kollár
    CPAN ID: MAROS
    maros [at] k-1.com
    
    L<http://www.k-1.com>