Proper number formatting related to i18n
|Reported by:||honza.skypala||Owned by:||westi|
|Cc:||westi, pavelevap@…, lkraav|
Technical description of the situation: WordPress function number_format_i18n() uses native PHP function number_format() for formatting numbers. Unfortunately this PHP function is not able to handle separators (both decimal and thousands separators) that fall into one of the following categories:
- separator would contain more than one char, e.g. " "; in this case only the first char from the supplied string is used, in the example given above it would be "&".
- separator is ASCII > 128, e.g. ASCII 160;
Impact: Although this is not a native bug to WordPress, the problem source is in PHP, the impact is caused also in WordPress. This situation is problematic for users in Eastern Europe (Czech Republic, Russia, etc.) where the standard thousands separator is " " (space). The users in these countries usually don't want to use real space (ASCII 32) as thousands separator, as it could be word wrapped and the number would be saparated into two lines. Unfortunatelly supplying both variants of non-breakable space (i.e. " " or ASCII 160) fails.
Proposed solution: unforunatelly this bug is reported in PHP for years and nothing happens there. Because of this situation I suggest fixing such problem in the next level, i.e. in WordPress. This means to create a custom function for formatting numbers, with identical input params as number_format(), just that this one would be able to handle separator types mentioned above.
I have such change already deployed on my WordPress blog for several months, so I am going to attach a diff file for the latest SVN state dealing with this issue.
Change History (20)
- Keywords has-patch added
- Milestone changed from Unassigned to 2.9
- Owner changed from nbachiyski to westi
- Status changed from new to accepted
comment:18 nacin — 19 months ago
- Keywords reporter-feedback added; number formating i18n removed
- Milestone set to Future Release
- Resolution wontfix deleted
- Status changed from closed to reopened