diff --git a/scripts/lang/fr/__init__.py b/scripts/lang/fr/__init__.py
index 8b217731c..edecda6e3 100644
--- a/scripts/lang/fr/__init__.py
+++ b/scripts/lang/fr/__init__.py
@@ -448,6 +448,9 @@
# Un documentation des fonctions disponibles se trouve dans le fichier HTML suivant :
# html/scripts/user_functions.html
templates_multi = {
+ # {{1er}}
+ # {{1er|mai}}
+ "1er": "f\"1{superscript('er')}{' ' + parts[1] if len(parts) > 1 else ''}\"",
# {{comparatif de|bien|fr|adv}}
"comparatif de": "sentence(parts)",
# {{cf}}
@@ -472,10 +475,14 @@
# XIX{{e}}
# {{e|-1}}
"e": "superscript(parts[1] if len(parts) > 1 else 'e')",
+ # XIX{{ème}}
+ "ème": "superscript(parts[1] if len(parts) > 1 else 'e')",
+ # {{er}}
+ "er": "superscript(parts[1] if len(parts) > 1 else 'er')",
+ # {{ère}}
+ "ère": "superscript(parts[1] if len(parts) > 1 else 'ère')",
# XIV{{exp|e}}
"exp": "superscript(parts[1] if len(parts) > 1 else 'e')",
- # {{er}}
- "er": "superscript('er')",
# {{emploi|au passif}}
"emploi": "term(capitalize(parts[1]))",
# {{#expr: 2 ^ 30}}
@@ -511,6 +518,10 @@
"nom w pc": "person(word, parts[1:])",
# {{nombre romain|12}}
"nombre romain": "int_to_roman(int(parts[1]))",
+ # {{numéro}}
+ "numéro": "f\"n{superscript('o')}\"",
+ # {{o}}
+ "o": "superscript('o')",
# {{petites capitales|Dupont}}
"petites capitales": "small_caps(parts[1])",
# {{pc|Dupont}}
@@ -533,7 +544,7 @@
"smcp": "small_caps(parts[1])",
# {{SIC}}
# {{sic !}}
- "SIC": "f'[sic : {parts[1]}]' if len(parts) > 1 else '[sic]'",
+ "SIC": "f'[sic : {parts[1]}]' if len(parts) > 1 else '[sic]'",
"sic !": "f'[sic : {parts[1]}]' if len(parts) > 1 else '[sic]'",
# {{sport|fr}}
# {{sport|fr|collectifs}}
diff --git a/tests/test_fr.py b/tests/test_fr.py
index 13b79c762..c14c84eaf 100644
--- a/tests/test_fr.py
+++ b/tests/test_fr.py
@@ -364,6 +364,8 @@ def test_parse_word(
@pytest.mark.parametrize(
"wikicode, expected",
[
+ ("{{1er}}", "1er"),
+ ("{{1er|mai}}", "1er mai"),
("{{adj-indéf-avec-de}}", "(Avec de)"),
("{{ancre|sens_sexe}}", ""),
("{{emploi|au passif}}", "(Au passif)"),
@@ -383,6 +385,9 @@ def test_parse_word(
("{{diminutif|fr|de=balle}}", "diminutif"),
("{{diminutif|fr|m=1}}", "Diminutif"),
("du XX{{e}} siècle", "du XXe siècle"),
+ ("M{{e|me}}", "Mme"),
+ ("du XX{{ème}} siècle", "du XXe siècle"),
+ ("le 1{{er}}", "le 1er"),
(
"{{étyl|grc|fr|mot=ἄκρος|tr=akros|sens=extrémité}}",
"grec ancien ἄκρος, akros (« extrémité »)",
@@ -418,6 +423,8 @@ def test_parse_word(
("{{région|Lorraine et Dauphiné}}", "(Lorraine et Dauphiné)"),
("{{régionalisme}}", "(Régionalisme)"),
("{{régionalisme|Bretagne|fr}}", "(Bretagne)"),
+ ("{{numéro}}", "no"),
+ ("{{o}}", "o"),
("{{pron|zjø|fr}}", "\\zjø\\"),
("{{pron-API|/j/}}", "/j/"),
("{{recons|lang-mot-vedette=fr|sporo|lang=frk|sc=Latn}}", "*sporo"),