diff --git a/gluon/contrib/plural_rules/fr.py b/gluon/contrib/plural_rules/fr.py index 4237c0e3..590f11c6 100644 --- a/gluon/contrib/plural_rules/fr.py +++ b/gluon/contrib/plural_rules/fr.py @@ -1,5 +1,5 @@ #!/usr/bin/env python -# -*- coding: utf8 -*- +# -*- coding: utf-8 -*- # Plural-Forms for fr (French)) nplurals=2 # French language has 2 forms: @@ -15,3 +15,55 @@ get_plural_id = lambda n: int(n != 1) # for words (or phrases) not found in plural_dict dictionary # construct_plural_form = lambda word, plural_id: (word + 'suffix') +irregular={ + 'aïeul': 'aïeux', + 'bonhomme': 'bonshommes', + 'ciel': 'cieux', + 'oeil': 'yeux', + 'œil': 'yeux', + 'madame': 'mesdames', + 'mademoiselle': 'mesdemoiselles', + 'monsieur': 'messieurs', + 'bijou': 'bijoux', + 'caillou': 'cailloux', + 'chou': 'choux', + 'genou': 'genoux', + 'hibou': 'hiboux', + 'joujou': 'joujoux', + 'pou': 'poux', + 'corail': ' coraux', + 'émail': 'émaux', + 'travail': 'travaux', + 'vitrail': 'vitraux', + 'soupirail': 'soupiraux', + 'bail': 'baux', + 'fermail': 'fermaux', + 'ventail': 'ventaux', + 'bleu': 'bleus', + 'pneu': 'pneus', + 'émeu': 'émeus', + 'enfeu': 'enfeus', + #'lieu': 'lieus', # poisson + +} + +def construct_plural_form(word, plural_id): + u""" + >>> [construct_plural_form(x, 1) for x in \ + [ 'bleu', 'nez', 'sex', 'bas', 'gruau', 'jeu', 'journal',\ + 'chose' ]] + ['bleus', 'nez', 'sex', 'bas', 'gruaux', 'jeux', 'journaux', 'choses'] + """ + if word in irregular: + return irregular[word] + if word[-1:] in ('s', 'x', 'z'): + return word + if word[-2:] in ('au', 'eu'): + return word + 'x' + if word[-2:] == 'al': + return word[0:-2] + 'aux' + return word + 's' + +if __name__ == '__main__': + import doctest + doctest.testmod()