Improved spellout rules for ordinals in French

Description

Deleted Component: other

The rules (in rbnf/{fr,fr_CH,fr_BE}.xml):

<ruleset type="spellout-ordinal-masculine">
<rbnfrule value="-x">moins →→;</rbnfrule>
<rbnfrule value="x.x">=#,##0.#=;</rbnfrule>
<rbnfrule value="0">zéroième;</rbnfrule>
<rbnfrule value="1">premier;</rbnfrule>
<rbnfrule value="2">=%spellout-cardinal-masculine=ième;</rbnfrule>
</ruleset>
<ruleset type="spellout-ordinal-feminine">
<rbnfrule value="-x">moins →→;</rbnfrule>
<rbnfrule value="x.x">=#,##0.#=;</rbnfrule>
<rbnfrule value="0">zéroième;</rbnfrule>
<rbnfrule value="1">première;</rbnfrule>
<rbnfrule value="2">=%spellout-cardinal-masculine=ième;</rbnfrule>
</ruleset>

are not sufficient for accurate spellout of ordinal numbers in French. The following rules (in ICU format) give proper spellout of ordinal numbers in French (note the variations, given in comments to be expanded for the two sublocales fr_CH and fr_BE):

"%%et-unième:"
"1: et-unième;"
"2: =%spellout-ordinal=;"
"11: et-onzième;"
"12: =%spellout-ordinal=;"

"%%cents-o:"
"0: ième;"
"1: -=%%spellout-ordinal=;"
"%%mille-o:"
"0: ième;"
"1: e-=%%spellout-ordinal=;"

"%%spellout-ordinal:"
"1: unième;"
"2: deuxième;"
"3: troisième;"
"4: quatrième;" // lost e
"5: cinquième;" // added u
"6: sixième;"
"7: septième;"
"8: huitième;"
"9: neuvième;" // f->v
"10: dixième;"
"11: onzième;" // lost e
"12: douzième;" // lost e
"13: treizième;" // lost e
"14: quatorzième;" // lost e
"15: quinzième;" // lost e
"16: seizième;" // lost e
"17: dix->>;"
"20: vingt->%%et-unième>;"
"30: trentième;"
"31: trente->%%et-unième>;"
"40: quarantième;"
"41: quarante->%%et-unième>;"
"50: cinquantième;"
"51: cinquante->%%et-unième>;"
"60: soixantième;"
"61/20: soixante->%%et-unième>;"
//"70: septantième;" // for fr_BE and fr_CH, not for fr
//"71: septante->%%et-unième>;" // for fr_BE and fr_CH, not for fr
"80/20: quatre-vingt>%%cents-o>;" // for fr and fr_BE, not for fr_CH
//"80: huitantième;" // for fr_CH, not for fr nor fr_BE
//"81: huitante->%%et-unième>;" // for fr_CH, not for fr nor fr_BE
//"90: nonantième;" // for fr_BE and fr_CH, not for fr
//"91: nonante->%%et-unième>;" // for fr_BE and fr_CH, not for fr
"100: cent>%%cents-o>;" // quinze-vingts
"200: <%spellout-cardinal-masculine<-cent>%%cents-o>;"
"1000: mill->%%mille-o>;"
"2000: <%spellout-cardinal-masculine<mill>%%mille-o>;"
"1,000,000 <%spellout-cardinal-masculine<million>%%cents-o>;"
"1,000,000,000: <%spellout-cardinal-masculine<milliard>%%cents-o>;"
"1,000,000,000,000: <%spellout-cardinal-masculine<billion>%%cents-o>;"
"1,000,000,000,000,000: <%spellout-cardinal-masculine<billiard>%%cents-o>;"
"1,000,000,000,000,000,000: =#,##0=;"

"%spellout-ordinal-masculine:"
"-x: moins >>;"
"x.x: =#,##0.#=;"
"0: zéroième;"
"1: premier;"
//"2: second;"
//"3: tiers;"
"2: =%%spellout-ordinal;"

"%spellout-ordinal-feminine:"
"-x: moins >>;"
"x.x: =#,##0.#=;"
"0: zéroième;"
"1: première;"
//"2: seconde;"
//"3: tiers;"
"2: =%%spellout-ordinal;"

xpath

None

locale

None

Status

Priority

minor

Assignee

John Emmons

Reporter

TracBot

tracReporter

Kent Karlsson <kent.karlsson14@7b2d8bdbb3ec2063

Reviewer

TracBot

Labels

None

Components

None

Fix versions

phase

None