Project

Profile

Help

Bug #5324

closed

format-integer: French ordinals

Added by Christian Grün 10 months ago. Updated 2 days ago.

Status:
Resolved
Priority:
Low
Assignee:
Category:
Localization
Sprint/Milestone:
-
Start date:
2022-02-15
Due date:
% Done:

0%

Estimated time:
Legacy ID:
Applies to branch:
11, trunk
Fix Committed on Branch:
11, trunk
Fixed in Maintenance Release:
Platforms:
Java

Description

format-integer(7000, 'w;o', 'fr')

Expected: sept mille

Returned: six mille centième

The number 8000 should be checked, too (and possibly others).

Actions #1

Updated by Christian Grün 10 months ago

Sorry, it should have been format-integer in the title (it seems I don’t have enough permissions to fix this).

Actions #2

Updated by Michael Kay 10 months ago

  • Subject changed from format-date: French ordinals to format-integer: French ordinals
Actions #3

Updated by Michael Kay 10 months ago

Indeed, Saxon-HE produces six mille centième. Saxon-PE and -EE produce sept millième.

(Saxon-PE and -EE use ICU4J; Saxon-HE uses some user-contributed code attributed to Luc Rochefort.

Not sure what to do about this; the use of the old user-contributed numberers in Saxon-HE is an awkward compromise based primarily on commercial rather than technical considerations. We've wanted to get rid of them for years but we've been indecisive about dropping the localisation support entirely, versus supporting ICU4J in Saxon-HE. One way forward might be:

  • drop the user-contributed Numberers

  • for date/time formatting in Saxon-HE, use whatever the JDK gives us - for all languages that the JDK supports

  • for spell-out numbering, drop the feature from Saxon-HE.

This would be consistent with what we do for collation support.

Actions #4

Updated by Michael Kay 2 days ago

Saxon-EE (with ICU) produces

 7000 = sept millième
 7001 = sept mille-et-unième
 7010 = sept mille dixième
 7050 = sept mille cinquantième
 7070 = sept mille soixante-dixième
 7071 = sept mille soixante-et-onzième
 7100 = sept mille centième

Saxon-HE (Luc Rochefort's contributed numberer) gives

7000 = six mille centième
 7001 = six mille cent unième
 7010 = six mille cent dixième
 7050 = six mille cent cinquantième
 7070 = six mille cent soixante-dixième
 7071 = six mille cent soixante et onzième
 7100 = sept mille centième

There's special logic to do this! If I remove it, I get

7000 = sept millième
 7001 = sept mille unième
 7010 = sept mille dixième
 7050 = sept mille cinquantième
 7070 = sept mille soixante-dixième
 7071 = sept mille soixante et onzième
 7100 = sept mille centième

which is close enough to the ICU results.

For 9000+ (where there is also custom logic) ICU gives

9000 = neuf millième
 9001 = neuf mille-et-unième
 9010 = neuf mille dixième
 9050 = neuf mille cinquantième
 9070 = neuf mille soixante-dixième
 9071 = neuf mille soixante-et-onzième
 9100 = neuf mille centième

Saxon-HE (after the change) -- the numberer produced by Karel Goossens -- gives

9000 = neuf millième
 9001 = neuf mille unième
 9010 = neuf mille dixième
 9050 = neuf mille cinquantième
 9070 = neuf mille soixante-dixième
 9071 = neuf mille soixante et onzième
 9100 = neuf mille centième

For fr-BE, ICU gives

9000 = neuf millième 9001 = neuf mille-et-unième 9010 = neuf mille dixième 9050 = neuf mille cinquantième 9070 = neuf mille septantième 9071 = neuf mille septante-et-unième 9100 = neuf mille centième

whereas Saxon-HE gives:

9000 = huit mille centième
 9001 = huit mille cent unième
 9010 = huit mille cent dixième
 9050 = huit mille cent cinquantième
 9070 = huit mille cent soixante-dixième
 9071 = huit mille cent soixante et onzième
 9100 = neuf mille centième

I've made suitable adjustments to the fr-BE code.

Actions #5

Updated by Michael Kay 2 days ago

  • Category set to Localization
  • Status changed from New to Resolved
  • Assignee set to Michael Kay
  • Applies to branch 11, trunk added
  • Fix Committed on Branch 11, trunk added
  • Platforms Java added

Please register to edit this issue

Also available in: Atom PDF