[wp-trac] [WordPress Trac] #16530: Implement locale based sorting
WordPress Trac
wp-trac at lists.automattic.com
Sat Feb 12 02:13:17 UTC 2011
#16530: Implement locale based sorting
-------------------------+------------------------------
Reporter: cyberskull | Owner:
Type: enhancement | Status: new
Priority: normal | Milestone: Awaiting Review
Component: I18N | Version: 3.1
Severity: normal | Resolution:
Keywords: |
-------------------------+------------------------------
Comment (by cyberskull):
Replying to [comment:4 cyberskull]:
> Replying to [comment:3 Denis-de-Bernardy]:
> > It's a tiny bit trickier, actually:
> >
> > http://www.codinghorror.com/blog/2007/12/sorting-for-humans-natural-
sort-order.html
>
> I was deliberately ignoring sorting numbers at this point. I wanted more
to get a framework in place to handle natural locale comparisons. With the
framework in place, we could start plugging in functions for each language
to do the sorts.
>
> I wonder if there is a natural sort PHP package?
'''Good news everybody!'''
PHP has a natural sort functions built in.
[http://www.php.net/manual/en/function.natsort.php natsort] for arrays and
[http://php.net/manual/en/function.strnatcmp.php strnatcmp] for a natural
string comparison.
So to update my examples from above:
{{{
function local_compare($a, $b)
{
local function $locale_format = $locale_sorts{locale()};
#Gets the appropriate formatter function from a hash of functions
based
#on the locale() or returns null/undef.
if($locale_format)
{
$a = $locale_format($a); #format a
$b = $locale_format($b); #format b
}
return strnatcmp($a, $b);
}
}}}
And the formatter:
{{{
en_locale_compare_format($string)
{
$string =~ /^((a|the)\s+)?(.+)/i;
return $3;
}
}}}
--
Ticket URL: <http://core.trac.wordpress.org/ticket/16530#comment:5>
WordPress Trac <http://core.trac.wordpress.org/>
WordPress blogging software
More information about the wp-trac
mailing list