R/fr_FR.R

# bank ---------------------------------------
bank_fr_FR = R6Class(
  "bank_fr_FR",
  inherit = bank_init,
  cloneable = FALSE,
  private = list(
    bban_format = '########################',
    country_code = 'FR'
  )
)

# color ----------------------------------
color_fr_FR = R6Class(
  "color_fr_FR",
  inherit = color_init,
  cloneable = FALSE,
  private = list(

    all_colors = list(
      c("Noir", "#000000"),
      c("Gris mat", "#696969"),
      c("Gris", "#808080"),
      c("Gris fonc\u00e9 (Acier)", "#A9A9A9"),
      c("Gris argent", "#C0C0C0"),
      c("Gris clair", "#D3D3D3"),
      c("Gris gainsboro (Etain)", "#DCDCDC"),
      c("Blanc fum\u00e9e", "#F5F5F5"),
      c("Blanc spectral", "#F8F8FF"),
      c("Blanc", "#FFFFFF"),
      c("Ivoire", "#FFFFF0"),
      c("Blanc floral", "#FFFAF0"),
      c("Blanc coquillage", "#FFF5EE"),
      c("Blanc lavande", "#FFF0F5"),
      c("Blanc dentelle", "#FDF5E6"),
      c("Blanc Lin", "#FAF0E6"),
      c("Rose brumeux", "#FFE4E1"),
      c("Rose", "#FFC0CB"),
      c("Rose clair", "#FFB6C1"),
      c("Rose Passion", "#FF69B4"),
      c("Rose profond", "#FF1493"),
      c("Violet p\u00e2le", "#DB7093"),
      c("Fushia (Magenta)", "#FF00FF"),
      c("Violet moyen", "#C71585"),
      c("Violet chardon", "#D8BFD8"),
      c("Prune", "#DDA0DD"),
      c("Violet", "#EE82EE"),
      c("Violet orchid\u00e9e", "#DA70D6"),
      c("Violet orchid\u00e9e moyen", "#BA55D3"),
      c("Violet orchid\u00e9e fonc\u00e9", "#9932CC"),
      c("Violet fonc\u00e9", "#9400D3"),
      c("Bleu violet", "#8A2BE2"),
      c("Indigo", "#4B0082"),
      c("Bleu ardoise moyen", "#7B68EE"),
      c("Bleu ardoise", "#6A5ACD"),
      c("Bleu ardoise fonc\u00e9", "#483D8B"),
      c("Pourpre moyen", "#9370DB"),
      c("Magenta fonc\u00e9", "#8B008B"),
      c("Pourpre", "#800080"),
      c("Brun ros\u00e9", "#BC8F8F"),
      c("Corail clair", "#F08080"),
      c("Corail", "#FF7F50"),
      c("Tomate", "#FF6347"),
      c("Orang\u00e9", "#FF4500"),
      c("Rouge", "#FF0000"),
      c("Rouge cramoisi", "#DC143C"),
      c("Saumon clair", "#FFA07A"),
      c("Saumon Fonc\u00e9", "#E9967A"),
      c("Saumon", "#FA8072"),
      c("Rouge Indien", "#CD5C5C"),
      c("Rouge brique", "#B22222"),
      c("Brun", "#A52A2A"),
      c("Rouge fonc\u00e9", "#8B0000"),
      c("Bordeaux", "#800000"),
      c("Beige", "#F5F5DC"),
      c("Beige antique", "#FAEBD7"),
      c("Beige papaye", "#FFEFD5"),
      c("Amande", "#FFEBCD"),
      c("Bisque", "#ffe4c4"),
      c("Beige p\u00eache", "#FFDAB9"),
      c("Beige mocassin", "#FFE4B5"),
      c("Jaune blanc navaro", "#FFDEAD"),
      c("Jaune bl\u00e9", "#F5DEB3"),
      c("Brun bois rustique", "#DEB887"),
      c("Brun roux", "#D2B48C"),
      c("Brun sable", "#F4A460"),
      c("Orange", "#FFA500"),
      c("Orange fonc\u00e9", "#FF8C00"),
      c("Chocolat", "#D2691E"),
      c("Brun p\u00e9rou", "#CD853F"),
      c("Terre de Sienne", "#A0522D"),
      c("Brun cuir", "#8B4513"),
      c("Jaune clair", "#FFFFE0"),
      c("Jaune ma\u00efs doux", "#FFF8DC"),
      c("Jaune dor\u00e9 clair", "#FAFAD2"),
      c("Beige citron soie", "#FFFACD"),
      c("Jaune dor\u00e9 p\u00e2le", "#EEE8AA"),
      c("Brun kaki", "#F0E68C"),
      c("Jaune", "#FFFF00"),
      c("Or", "#FFD700"),
      c("Jaune dor\u00e9", "#DAA520"),
      c("Jaune dor\u00e9 fonc\u00e9", "#B8860B"),
      c("Brun kaki fonc\u00e9", "#BDB76B"),
      c("Jaune vert", "#9ACD32"),
      c("Kaki", "#6B8E23"),
      c("Olive", "#808000"),
      c("Vert olive fonc\u00e9", "#556B2F"),
      c("Vert jaune", "#ADFF2F"),
      c("Chartreuse", "#7FFF00"),
      c("Vert prairie", "#7CFC00"),
      c("Citron vert", "#00FF00"),
      c("Citron vert fonc\u00e9", "#32CD32"),
      c("Blanc menthe", "#F5FFFA"),
      c("Miellat", "#F0FFF0"),
      c("Vert p\u00e2le", "#98FB98"),
      c("Vert clair", "#90EE90"),
      c("Vert printemps", "#00FF7F"),
      c("Vert printemps moyen", "#00FA9A"),
      c("Vert for\u00eat", "#228B22"),
      c("Vert", "#008000"),
      c("Vert fonc\u00e9", "#006400"),
      c("Vert oc\u00e9an fonc\u00e9", "#8FBC8F"),
      c("Vert oc\u00e9an moyen", "#3CB371"),
      c("Vert oc\u00e9an", "#2E8B57"),
      c("Gris ardoise clair", "#778899"),
      c("Gris ardoise", "#708090"),
      c("Gris ardoise fonc\u00e9", "#2F4F4F"),
      c("Bleu alice", "#F0F8FF"),
      c("Bleu azur", "#F0FFFF"),
      c("Cyan clair", "#E0FFFF"),
      c("Azurin", "#AFEEEE"),
      c("Aigue-marine", "#7FFFD4"),
      c("Aigue-marine moyen", "#66CDAA"),
      c("Cyan", "#00FFFF"),
      c("Turquoise", "#40E0D0"),
      c("Turquoise moyen", "#48D1CC"),
      c("Turquoise fonc\u00e9", "#00CED1"),
      c("Vert marin clair", "#20B2AA"),
      c("Cyan fonc\u00e9", "#008B8B"),
      c("Vert sarcelle", "#008080"),
      c("Bleu p\u00e9trole", "#5F9EA0"),
      c("Bleu poudre", "#B0E0E6"),
      c("Bleu clair", "#ADD8E6"),
      c("Bleu azur clair", "#87CEFA"),
      c("Bleu azur", "#87CEEB"),
      c("Bleu azur profond", "#00BFFF"),
      c("Bleu toile", "#1E90FF"),
      c("Bleu lavande", "#E6E6FA"),
      c("Bleu acier clair", "#B0C4DE"),
      c("Bleuet", "#6495ED"),
      c("Bleu acier", "#4682B4"),
      c("Bleu royal", "#4169E1"),
      c("Bleu", "#0000FF"),
      c("Bleu moyen", "#0000CD"),
      c("Bleu fonc\u00e9", "#00008B"),
      c("Bleu marin", "#000080"),
      c("Bleu de minuit", "#191970")
    ),

    safe_colors = c(
      'noir', 'bordeaux', 'vert', 'rouge',
      'violet', 'sarcelle', 'bleu', 'argent',
      'gris', 'jaune', 'fuchsia', 'cyan', 'blanc')
  )
)

# person -------------------------------------
person_fr_FR = R6Class(
  "person_fr_FR",
  inherit = person_init,
  cloneable = FALSE,
  private = list(
    formats_female = c(
      '{first_name_female} {last_name}',
      '{first_name_female} {last_name}',
      '{first_name_female} {last_name}',
      '{first_name_female} {last_name}',
      '{first_name_female} {last_name}',
      '{first_name_female} {last_name}',
      '{first_name_female} {prefix} {last_name}',
      '{first_name_female} {last_name}-{last_name}',
      '{first_name_female}-{first_name_female} {last_name}',
      '{first_name_female} {last_name} {prefix} {last_name}'),

    formats_male = c(
      '{first_name_male} {last_name}',
      '{first_name_male} {last_name}',
      '{first_name_male} {last_name}',
      '{first_name_male} {last_name}',
      '{first_name_male} {last_name}',
      '{first_name_male} {last_name}',
      '{first_name_male} {prefix} {last_name}',
      '{first_name_male} {last_name}-{last_name}',
      '{first_name_male}-{first_name_male} {last_name}',
      '{first_name_male} {last_name} {prefix} {last_name}'),

    formats = c(
      '{first_name_female} {last_name}',
      '{first_name_female} {last_name}',
      '{first_name_female} {last_name}',
      '{first_name_female} {last_name}',
      '{first_name_female} {last_name}',
      '{first_name_female} {last_name}',
      '{first_name_female} {prefix} {last_name}',
      '{first_name_female} {last_name}-{last_name}',
      '{first_name_female}-{first_name_female} {last_name}',
      '{first_name_female} {last_name} {prefix} {last_name}',
      '{first_name_male} {last_name}',
      '{first_name_male} {last_name}',
      '{first_name_male} {last_name}',
      '{first_name_male} {last_name}',
      '{first_name_male} {last_name}',
      '{first_name_male} {last_name}',
      '{first_name_male} {prefix} {last_name}',
      '{first_name_male} {last_name}-{last_name}',
      '{first_name_male}-{first_name_male} {last_name}',
      '{first_name_male} {last_name} {prefix} {last_name}'),

    first_names_male = c(
      "Adrien",
      "Aim\u00e9",
      "Alain",
      "Alexandre",
      "Alfred",
      "Alphonse",
      "Andr\u00e9",
      "Antoine",
      "Arthur",
      "Auguste",
      "Augustin",
      "Benjamin",
      "Beno\u00eet",
      "Bernard",
      "Bertrand",
      "Charles",
      "Christophe",
      "Daniel",
      "David",
      "Denis",
      "\u00c9douard",
      "\u00c9mile",
      "Emmanuel",
      "\u00c9ric",
      "\u00c9tienne",
      "Eug\u00e8ne",
      "Fran\u00e7ois",
      "Franck",
      "Fr\u00e9d\u00e9ric",
      "Gabriel",
      "Georges",
      "G\u00e9rard",
      "Gilbert",
      "Gilles",
      "Gr\u00e9goire",
      "Guillaume",
      "Guy",
      "William",
      "Henri",
      "Honor\u00e9",
      "Hugues",
      "Isaac",
      "Jacques",
      "Jean",
      "J\u00e9r\u00f4me",
      "Joseph",
      "Jules",
      "Julien",
      "Laurent",
      "L\u00e9on",
      "Louis",
      "Luc",
      "Lucas",
      "Marc",
      "Marcel",
      "Martin",
      "Matthieu",
      "Maurice",
      "Michel",
      "Nicolas",
      "No\u00ebl",
      "Olivier",
      "Patrick",
      "Paul",
      "Philippe",
      "Pierre",
      "Raymond",
      "R\u00e9my",
      "Ren\u00e9",
      "Richard",
      "Robert",
      "Roger",
      "Roland",
      "S\u00e9bastien",
      "St\u00e9phane",
      "Th\u00e9odore",
      "Th\u00e9ophile",
      "Thibaut",
      "Thibault",
      "Thierry",
      "Thomas",
      "Timoth\u00e9e",
      "Tristan",
      "Victor",
      "Vincent",
      "Xavier",
      "Yves",
      "Zacharie"
    ),

    first_names_female = c(
      "Ad\u00e9la\u00efde",
      "Ad\u00e8le",
      "Adrienne",
      "Agathe",
      "Agn\u00e8s",
      "Aim\u00e9e",
      "Alexandrie",
      "Alix",
      "Alexandria",
      "Alex",
      "Alice",
      "Am\u00e9lie",
      "Ana\u00efs",
      "Anastasie",
      "Andr\u00e9e",
      "Anne",
      "Anouk",
      "Antoinette",
      "Arnaude",
      "Astrid",
      "Audrey",
      "Aur\u00e9lie",
      "Aurore",
      "Bernadette",
      "Brigitte",
      "Capucine",
      "Caroline",
      "Catherine",
      "C\u00e9cile",
      "C\u00e9line",
      "C\u00e9lina",
      "Chantal",
      "Charlotte",
      "Christelle",
      "Christiane",
      "Christine",
      "Claire",
      "Claudine",
      "Cl\u00e9mence",
      "Colette",
      "Constance",
      "Corinne",
      "Danielle",
      "Denise",
      "Diane",
      "Doroth\u00e9e",
      "\u00c9dith",
      "\u00c9l\u00e9onore",
      "\u00c9lisabeth",
      "\u00c9lise",
      "\u00c9lodie",
      "\u00c9milie",
      "Emmanuelle",
      "Fran\u00e7oise",
      "Fr\u00e9d\u00e9rique",
      "Gabrielle",
      "Genevi\u00e8ve",
      "H\u00e9l\u00e8ne",
      "Henriette",
      "Hortense",
      "In\u00e8s",
      "Isabelle",
      "Jacqueline",
      "Jeanne",
      "Jeannine",
      "Jos\u00e9phine",
      "Josette",
      "Julie",
      "Juliette",
      "Laetitia",
      "Laure",
      "Laurence",
      "Lorraine",
      "Louise",
      "Luce",
      "Lucie",
      "Lucy",
      "Madeleine",
      "Manon",
      "Marcelle",
      "Margaux",
      "Margaud",
      "Margot",
      "Marguerite",
      "Margot",
      "Margaret",
      "Maggie",
      "daisy",
      "Marianne",
      "Marie",
      "Marine",
      "Marthe",
      "Martine",
      "Maryse",
      "Mathilde",
      "Mich\u00e8le",
      "Michelle",
      "Michelle",
      "Monique",
      "Nathalie",
      "Nath",
      "Nathalie",
      "Nicole",
      "No\u00e9mi",
      "Oc\u00e9ane",
      "Odette",
      "Olivie",
      "Patricia",
      "Paulette",
      "Pauline",
      "P\u00e9n\u00e9lope",
      "Philippine",
      "Ren\u00e9e",
      "Sabine",
      "Simone",
      "Sophie",
      "St\u00e9phanie",
      "Susanne",
      "Suzanne",
      "Susan",
      "Suzanne",
      "Sylvie",
      "Th\u00e9r\u00e8se",
      "Valentine",
      "Val\u00e9rie",
      "V\u00e9ronique",
      "Victoire",
      "Virginie",
      "Zo\u00e9",
      "Camille",
      "Claude",
      "Dominique"
    ),

    first_names = c(
      "Adrien",
      "Aim\u00e9",
      "Alain",
      "Alexandre",
      "Alfred",
      "Alphonse",
      "Andr\u00e9",
      "Antoine",
      "Arthur",
      "Auguste",
      "Augustin",
      "Benjamin",
      "Beno\u00eet",
      "Bernard",
      "Bertrand",
      "Charles",
      "Christophe",
      "Daniel",
      "David",
      "Denis",
      "\u00c9douard",
      "\u00c9mile",
      "Emmanuel",
      "\u00c9ric",
      "\u00c9tienne",
      "Eug\u00e8ne",
      "Fran\u00e7ois",
      "Franck",
      "Fr\u00e9d\u00e9ric",
      "Gabriel",
      "Georges",
      "G\u00e9rard",
      "Gilbert",
      "Gilles",
      "Gr\u00e9goire",
      "Guillaume",
      "Guy",
      "William",
      "Henri",
      "Honor\u00e9",
      "Hugues",
      "Isaac",
      "Jacques",
      "Jean",
      "J\u00e9r\u00f4me",
      "Joseph",
      "Jules",
      "Julien",
      "Laurent",
      "L\u00e9on",
      "Louis",
      "Luc",
      "Lucas",
      "Marc",
      "Marcel",
      "Martin",
      "Matthieu",
      "Maurice",
      "Michel",
      "Nicolas",
      "No\u00ebl",
      "Olivier",
      "Patrick",
      "Paul",
      "Philippe",
      "Pierre",
      "Raymond",
      "R\u00e9my",
      "Ren\u00e9",
      "Richard",
      "Robert",
      "Roger",
      "Roland",
      "S\u00e9bastien",
      "St\u00e9phane",
      "Th\u00e9odore",
      "Th\u00e9ophile",
      "Thibaut",
      "Thibault",
      "Thierry",
      "Thomas",
      "Timoth\u00e9e",
      "Tristan",
      "Victor",
      "Vincent",
      "Xavier",
      "Yves",
      "Zacharie",
      "Ad\u00e9la\u00efde",
      "Ad\u00e8le",
      "Adrienne",
      "Agathe",
      "Agn\u00e8s",
      "Aim\u00e9e",
      "Alexandrie",
      "Alix",
      "Alexandria",
      "Alex",
      "Alice",
      "Am\u00e9lie",
      "Ana\u00efs",
      "Anastasie",
      "Andr\u00e9e",
      "Anne",
      "Anouk",
      "Antoinette",
      "Arnaude",
      "Astrid",
      "Audrey",
      "Aur\u00e9lie",
      "Aurore",
      "Bernadette",
      "Brigitte",
      "Capucine",
      "Caroline",
      "Catherine",
      "C\u00e9cile",
      "C\u00e9line",
      "C\u00e9lina",
      "Chantal",
      "Charlotte",
      "Christelle",
      "Christiane",
      "Christine",
      "Claire",
      "Claudine",
      "Cl\u00e9mence",
      "Colette",
      "Constance",
      "Corinne",
      "Danielle",
      "Denise",
      "Diane",
      "Doroth\u00e9e",
      "\u00c9dith",
      "\u00c9l\u00e9onore",
      "\u00c9lisabeth",
      "\u00c9lise",
      "\u00c9lodie",
      "\u00c9milie",
      "Emmanuelle",
      "Fran\u00e7oise",
      "Fr\u00e9d\u00e9rique",
      "Gabrielle",
      "Genevi\u00e8ve",
      "H\u00e9l\u00e8ne",
      "Henriette",
      "Hortense",
      "In\u00e8s",
      "Isabelle",
      "Jacqueline",
      "Jeanne",
      "Jeannine",
      "Jos\u00e9phine",
      "Josette",
      "Julie",
      "Juliette",
      "Laetitia",
      "Laure",
      "Laurence",
      "Lorraine",
      "Louise",
      "Luce",
      "Lucie",
      "Lucy",
      "Madeleine",
      "Manon",
      "Marcelle",
      "Margaux",
      "Margaud",
      "Margot",
      "Marguerite",
      "Margot",
      "Margaret",
      "Maggie",
      "daisy",
      "Marianne",
      "Marie",
      "Marine",
      "Marthe",
      "Martine",
      "Maryse",
      "Mathilde",
      "Mich\u00e8le",
      "Michelle",
      "Michelle",
      "Monique",
      "Nathalie",
      "Nath",
      "Nathalie",
      "Nicole",
      "No\u00e9mi",
      "Oc\u00e9ane",
      "Odette",
      "Olivie",
      "Patricia",
      "Paulette",
      "Pauline",
      "P\u00e9n\u00e9lope",
      "Philippine",
      "Ren\u00e9e",
      "Sabine",
      "Simone",
      "Sophie",
      "St\u00e9phanie",
      "Susanne",
      "Suzanne",
      "Susan",
      "Suzanne",
      "Sylvie",
      "Th\u00e9r\u00e8se",
      "Valentine",
      "Val\u00e9rie",
      "V\u00e9ronique",
      "Victoire",
      "Virginie",
      "Zo\u00e9",
      "Camille",
      "Claude",
      "Dominique"
    ),

    last_names = c(
      'Martin', 'Bernard', 'Thomas', 'Robert', 'Petit', 'Dubois',
      'Richard', 'Garcia', 'Durand', 'Moreau', 'Lefebvre',
      'Simon', 'Laurent', 'Michel', 'Leroy', 'Martinez', 'David',
      'Fontaine', 'Da Silva', 'Morel', 'Fournier',
      'Dupont', 'Bertrand', 'Lambert', 'Rousseau', 'Girard',
      'Roux', 'Vincent', 'Lefevre', 'Boyer', 'Lopez', 'Bonnet',
      'Andre', 'Francois', 'Mercier', 'Muller', 'Guerin', 'Legrand',
      'Sanchez', 'Garnier', 'Chevalier', 'Faure',
      'Perez', 'Clement', 'Fernandez', 'Blanc', 'Robin', 'Morin',
      'Gauthier', 'Pereira', 'Perrin', 'Roussel', 'Henry',
      'Duval', 'Gautier', 'Nicolas', 'Masson', 'Marie', 'Noel',
      'Ferreira', 'Lemaire', 'Mathieu', 'Riviere', 'Denis',
      'Marchand', 'Rodriguez', 'Dumont', 'Payet', 'Lucas', 'Dufour',
      'Dos Santos', 'Joly', 'Blanchard', 'Meunier',
      'Rodrigues', 'Caron', 'Gerard', 'Fernandes', 'Brunet',
      'Meyer', 'Barbier', 'Leroux', 'Renard', 'Goncalves',
      'Gaillard', 'Brun', 'Roy', 'Picard', 'Giraud', 'Roger',
      'Schmitt', 'Colin', 'Arnaud', 'Vidal', 'Gonzalez',
      'Lemoine', 'Roche', 'Aubert', 'Olivier', 'Leclercq',
      'Pierre', 'Philippe', 'Bourgeois', 'Renaud', 'Martins',
      'Leclerc', 'Guillaume', 'Lacroix', 'Lecomte', 'Benoit',
      'Fabre', 'Carpentier', 'Vasseur', 'Louis', 'Hubert',
      'Jean', 'Dumas', 'Rolland', 'Grondin', 'Rey', 'Huet',
      'Gomez', 'Dupuis', 'Guillot', 'Berger', 'Moulin',
      'Hoarau', 'Menard', 'Deschamps', 'Fleury', 'Adam',
      'Boucher', 'Poirier', 'Bertin', 'Charles', 'Aubry',
      'Da Costa', 'Royer', 'Dupuy', 'Maillard', 'Paris',
      'Baron', 'Lopes', 'Guyot', 'Carre', 'Jacquet', 'Renault',
      'Herve', 'Charpentier', 'Klein', 'Cousin', 'Collet',
      'Leger', 'Ribeiro', 'Hernandez', 'Bailly', 'Schneider',
      'Le Gall', 'Ruiz', 'Langlois', 'Bouvier', 'Gomes', 'Prevost',
      'Julien', 'Lebrun', 'Breton', 'Germain', 'Millet',
      'Boulanger', 'Remy', 'Le Roux', 'Daniel', 'Marques',
      'Maillot', 'Leblanc', 'Le Goff', 'Barre', 'Perrot',
      'Leveque', 'Marty', 'Benard', 'Monnier', 'Hamon', 'Pelletier',
      'Alves', 'Etienne', 'Marchal', 'Poulain',
      'Tessier', 'Lemaitre', 'Guichard', 'Besson', 'Mallet',
      'Hoareau', 'Gillet', 'Weber', 'Jacob', 'Collin',
      'Chevallier', 'Perrier', 'Michaud', 'Carlier', 'Delaunay',
      'Chauvin', 'Alexandre', 'Marechal', 'Antoine',
      'Lebon', 'Cordier', 'Lejeune', 'Bouchet', 'Pasquier',
      'Legros', 'Delattre', 'Humbert', 'De Oliveira', 'Briand',
      'Lamy', 'Launay', 'Gilbert', 'Perret', 'Lesage', 'Gay',
      'Nguyen', 'Navarro', 'Besnard', 'Pichon', 'Hebert',
      'Cohen', 'Pons', 'Lebreton', 'Sauvage', 'De Sousa',
      'Pineau', 'Albert', 'Jacques', 'Pinto', 'Barthelemy',
      'Turpin', 'Bigot', 'Lelievre', 'Georges', 'Reynaud',
      'Ollivier', 'Martel', 'Voisin', 'Leduc', 'Guillet',
      'Vallee', 'Coulon', 'Camus', 'Marin', 'Teixeira', 'Costa',
      'Mahe', 'Didier', 'Charrier', 'Gaudin', 'Bodin',
      'Guillou', 'Gregoire', 'Gros', 'Blanchet', 'Buisson',
      'Blondel', 'Paul', 'Dijoux', 'Barbe', 'Hardy', 'Laine',
      'Evrard', 'Laporte', 'Rossi', 'Joubert', 'Regnier',
      'Tanguy', 'Gimenez', 'Allard', 'Devaux', 'Morvan', 'Levy',
      'Dias', 'Courtois', 'Lenoir', 'Berthelot', 'Pascal',
      'Vaillant', 'Guilbert', 'Thibault', 'Moreno', 'Duhamel',
      'Colas', 'Masse', 'Baudry', 'Bruneau', 'Verdier',
      'Delorme', 'Blin', 'Guillon', 'Mary', 'Coste', 'Pruvost',
      'Maury', 'Allain', 'Valentin', 'Godard', 'Joseph',
      'Brunel', 'Marion', 'Texier', 'Seguin', 'Raynaud', 'Bourdon',
      'Raymond', 'Bonneau', 'Chauvet', 'Maurice', 'Legendre',
      'Loiseau', 'Ferrand', 'Toussaint', 'Techer', 'Lombard',
      'Lefort', 'Couturier', 'Bousquet', 'Diaz', 'Riou',
      'Clerc', 'Weiss', 'Imbert', 'Jourdan', 'Delahaye', 'Gilles',
      'Guibert', 'Begue', 'Descamps', 'Delmas', 'Peltier',
      'Dupre', 'Chartier', 'Martineau', 'Laroche', 'Leconte',
      'Maillet', 'Parent', 'Labbe', 'Potier', 'Bazin', 'Normand',
      'Pottier', 'Torres', 'Lagarde', 'Blot', 'Jacquot',
      'Lemonnier', 'Grenier', 'Rocher', 'Bonnin', 'Boutin',
      'Fischer', 'Munoz', 'Neveu', 'Lacombe', 'Mendes',
      'Delannoy', 'Auger', 'Wagner', 'Fouquet', 'Mace',
      'Ramos', 'Pages', 'Petitjean', 'Chauveau', 'Foucher', 'Peron',
      'Guyon', 'Gallet', 'Rousset', 'Traore', 'Bernier',
      'Vallet', 'Letellier', 'Bouvet', 'Hamel', 'Chretien',
      'Faivre', 'Boulay', 'Thierry', 'Samson', 'Ledoux',
      'Salmon', 'Gosselin', 'Lecoq', 'Pires', 'Leleu', 'Becker',
      'Diallo', 'Merle', 'Valette'),

    prefixes = c('de', 'de la', 'Le', 'du')
  )
)

# company -----------------------------------
company_fr_FR = R6Class(
  "company_fr_FR",
  inherit = company_init,
  cloneable = FALSE,
  private = list(
    locale = "fr_FR",
    first_names = (person_fr_FR$new())$.__enclos_env__$private$first_names,
    last_names = (person_fr_FR$new())$.__enclos_env__$private$last_names,

    first_name = (person_fr_FR$new())$first_name,
    last_name = (person_fr_FR$new())$last_name,

    formats = c(
      '{last_name} {company_suffix}',
      '{last_name} {last_name} {company_suffix}',
      '{last_name}',
      '{last_name}'),

    catch_phrase_formats = c(
      '{catch_phrase_noun} {catch_phrase_verb} {catch_phrase_attribute}'),

    nouns = c(
      "la s\u00e9curit\u00e9",
      "le plaisir",
      "le confort",
      "la simplicit\u00e9",
      "l\'assurance",
      "l\'art",
      "le pouvoir",
      "le droit",
      "la possibilit\u00e9",
      "l\'avantage",
      "la libert\u00e9"
    ),

    verbs = c(
      'de rouler',
      "d'avancer",
      "d'\u00e9voluer",
      'de changer',
      "d'innover",
      'de louer',
      "d'atteindre vos buts",
      'de concr\u00e9tiser vos projets'),

    attributes = c(
      'de mani\u00e8re efficace',
      'plus rapidement',
      'plus facilement',
      'plus simplement',
      'en toute tranquilit\u00e9',
      'avant-tout',
      'autrement',
      'naturellement',
      '\u00e0 la pointe',
      'sans soucis',
      "\u00e0 l'\u00e9tat pur",
      '\u00e0 sa source',
      'de mani\u00e8re s\u00fbre',
      'en toute s\u00e9curit\u00e9'),

    company_suffixes = c('SA', 'S.A.', 'SARL', 'S.A.R.L.', 'S.A.S.', 'et Fils'),

    siren_format = "### ### ###",
    # An array containing string which should not appear twice in a catch phrase
    words_which_should_not_appear_twice = c('s\u00e9curit\u00e9', 'simpl')
  ),


  public = list(
    catch_phrase_noun = function(){
      # Returns a random catch phrase noun.
      return(private$random_element(private$nouns))
    },

    catch_phrase_attribute = function(){
      # Returns a random catch phrase attribute.
      return(private$random_element(private$attributes))
    },

    catch_phrase_verb = function(){
      # Returns a random catch phrase verb.
      return(private$random_element(private$verbs))
    },

    catch_phrase = function(){
      # example 'integrate extensible convergence'

      while (TRUE) {
        pattern = private$random_element(private$catch_phrase_formats)
        catch_phrase = private$format_parse(pattern)
        catch_phrase = str_to_sentence(catch_phrase, locale = private$locale)
        if (self$is_catch_phrase_valid(catch_phrase)) return(catch_phrase)
      }
    },


    is_catch_phrase_valid = function(catch_phrase){

      for (word in private$words_which_should_not_appear_twice){
        pos = str_locate_all(catch_phrase, word)[[1]]
        if (nrow(pos) >= 2) return(FALSE)
      }

      return(TRUE)
    },

    siren = function(){
      # Generates a siren number (9 digits).
      return(private$numerify(private$siren_format))
    },

    siret = function(max_sequential_digits = 2){

      if (max_sequential_digits > 4 | max_sequential_digits <= 0) {
        max_sequential_digits = 2
      }

      sequential_number = sprintf("%04d",
                                  private$random_number(max_sequential_digits))

      temp = str_c(private$numerify(self$siren()), " ", sequential_number, "#")
      return(private$numerify(temp))
    }

  )

)

# date_time -----------------------------------------
date_time_fr_FR = R6Class(
  "date_time_fr_FR",
  inherit = date_time_init,
  cloneable = FALSE,
  private = list(
    DAY_NAMES = c(
      "0" = "Dimanche",
      "1" = "Lundi",
      "2" = "Mardi",
      "3" = "Mercredi",
      "4" = "Jeudi",
      "5" = "Vendredi",
      "6" = "Samedi"
    ),

    MONTH_NAMES = c(
      "01" = "Janvier",
      "02" = "F\u00e9vrier",
      "03" = "Mars",
      "04" = "Avril",
      "05" = "Mai",
      "06" = "Juin",
      "07" = "Juillet",
      "08" = "Ao\u00fbt",
      "09" = "Septembre",
      "10" = "Octobre",
      "11" = "Novembre",
      "12" = "D\u00e9cembre"
    )
  )
)

# address --------------------------------
address_fr_FR = R6Class(
  "address_fr_FR",
  inherit = address_init,
  cloneable = FALSE,
  private = list(
    first_names = (person_fr_FR$new())$.__enclos_env__$private$first_names,
    last_names = (person_fr_FR$new())$.__enclos_env__$private$last_names,

    first_name = (person_fr_FR$new())$first_name,
    last_name = (person_fr_FR$new())$last_name,
    city_suffixes = c(
      'Ville', 'Bourg', '-les-Bains',
      '-sur-Mer', '-la-For\u00eat', 'boeuf', 'nec', 'dan'),

    city_prefixes = c('Saint', 'Sainte'),

    street_prefixes = c(
      'rue', 'rue', 'chemin', 'avenue', 'boulevard'),

    city_formats = c(
      '{city_prefix} {first_name}',
      '{city_prefix} {first_name}{city_suffix}',
      '{last_name}',
      '{last_name}',
      '{last_name}',
      '{last_name}',
      '{last_name}{city_suffix}',
      '{last_name}{city_suffix}',
      '{last_name}{city_suffix}',
      '{last_name}-sur-{last_name}'),

    street_name_formats = c(
      '{street_prefix} {last_name}',
      '{street_prefix} {first_name} {last_name}',
      '{street_prefix} de {last_name}'),

    street_address_formats = c(
      '{street_name}',
      '{building_number}, {street_name}',
      '{building_number}, {street_name}',
      '{building_number}, {street_name}',
      '{building_number}, {street_name}',
      '{building_number}, {street_name}'),

    address_formats = "{street_address}\n{postcode} {city}",

    building_number_formats = c('%', '%#', '%#', '%#', '%##'),
    postcode_formats = '#####',
    countries = c(
      "Afghanistan",
      "Afrique du sud",
      "Albanie",
      "Alg\u00e9rie",
      "Allemagne",
      "Andorre",
      "Angola",
      "Anguilla",
      "Antarctique",
      "Antigua et Barbuda",
      "Antilles n\u00e9erlandaises",
      "Arabie saoudite",
      "Argentine",
      "Arm\u00e9nie",
      "Aruba",
      "Australie",
      "Autriche",
      "Azerba\u00efdjan",
      "Bahamas",
      "Bahrain",
      "Bangladesh",
      "Belgique",
      "Belize",
      "Benin",
      "Bermudes (Les)",
      "Bhoutan",
      "Bi\u00e9lorussie",
      "Bolivie",
      "Bosnie-Herz\u00e9govine",
      "Botswana",
      "Bouvet (\u00celes)",
      "Brunei",
      "Br\u00e9sil",
      "Bulgarie",
      "Burkina Faso",
      "Burundi",
      "Cambodge",
      "Cameroun",
      "Canada",
      "Cap Vert",
      "Cayman (\u00celes)",
      "Chili",
      "Chine (R\u00e9p. pop.)",
      "Christmas (\u00cele)",
      "Chypre",
      "Cocos (\u00celes)",
      "Colombie",
      "Comores",
      "Cook (\u00celes)",
      "Cor\u00e9e du Nord",
      "Cor\u00e9e, Sud",
      "Costa Rica",
      "Croatie",
      "Cuba",
      "C\u00f4te d\'Ivoire",
      "Danemark",
      "Djibouti",
      "Dominique",
      "\u00c9gypte",
      "El Salvador",
      "\u00c9mirats arabes unis",
      "\u00c9quateur",
      "\u00c9rythr\u00e9e",
      "Espagne",
      "Estonie",
      "\u00c9tats-Unis",
      "Ethiopie",
      "Falkland (\u00cele)",
      "Fidji (R\u00e9publique des)",
      "Finlande",
      "France",
      "F\u00e9ro\u00e9 (\u00celes)",
      "Gabon",
      "Gambie",
      "Ghana",
      "Gibraltar",
      "Grenade",
      "Groenland",
      "Gr\u00e8ce",
      "Guadeloupe",
      "Guam",
      "Guatemala",
      "Guin\u00e9e",
      "Guin\u00e9e Equatoriale",
      "Guin\u00e9e-Bissau",
      "Guyane",
      "Guyane fran\u00e7aise",
      "G\u00e9orgie",
      "G\u00e9orgie du Sud et Sandwich du Sud (\u00celes)",
      "Ha\u00efti",
      "Heard et McDonald (\u00celes)",
      "Honduras",
      "Hong Kong",
      "Hongrie",
      "\u00celes Mineures \u00e9loign\u00e9es des \u00e9tats-Unis",
      "Inde",
      "Indon\u00e9sie",
      "Irak",
      "Iran",
      "Irlande",
      "Islande",
      "Isra\u00ebl",
      "Italie",
      "Jama\u00efque",
      "Japon",
      "Jordanie",
      "Kazakhstan",
      "Kenya",
      "Kirghizistan",
      "Kiribati",
      "Koweit",
      "La Barbad",
      "Laos",
      "Lesotho",
      "Lettonie",
      "Liban",
      "Libye",
      "Lib\u00e9ria",
      "Liechtenstein",
      "Lithuanie",
      "Luxembourg",
      "Macau",
      "Mac\u00e9doine",
      "Madagascar",
      "Malaisie",
      "Malawi",
      "Maldives (\u00celes)",
      "Mali",
      "Malte",
      "Mariannes du Nord (\u00celes)",
      "Maroc",
      "Marshall (\u00celes)",
      "Martinique",
      "Maurice",
      "Mauritanie",
      "Mayotte",
      "Mexique",
      "Micron\u00e9sie (\u00e9tats f\u00e9d\u00e9r\u00e9s de)",
      "Moldavie",
      "Monaco",
      "Mongolie",
      "Montserrat",
      "Mozambique",
      "Myanmar",
      "Namibie",
      "Nauru",
      "Nepal",
      "Nicaragua",
      "Niger",
      "Nigeria",
      "Niue",
      "Norfolk (\u00celes)",
      "Norv\u00e8ge",
      "Nouvelle Cal\u00e9donie",
      "Nouvelle-Z\u00e9lande",
      "Oman",
      "Ouganda",
      "Ouzb\u00e9kistan",
      "Pakistan",
      "Palau",
      "Panama",
      "Papouasie-Nouvelle-Guin\u00e9e",
      "Paraguay",
      "Pays-Bas",
      "Philippines",
      "Pitcairn (\u00celes)",
      "Pologne",
      "Polyn\u00e9sie fran\u00e7aise",
      "Porto Rico",
      "Portugal",
      "P\u00e9rou",
      "Qatar",
      "Roumanie",
      "Royaume-Uni",
      "Russie",
      "Rwanda",
      "R\u00e9p. D\u00e9m. du Congo",
      "R\u00e9publique centrafricaine",
      "R\u00e9publique Dominicaine",
      "R\u00e9publique tch\u00e8que",
      "R\u00e9union (La)",
      "Sahara Occidental",
      "Saint Pierre et Miquelon",
      "Saint Vincent et les Grenadines",
      "Saint-Kitts et Nevis",
      "Saint-Marin (R\u00e9p. de)",
      "Sainte H\u00e9l\u00e8ne",
      "Sainte Lucie",
      "Samoa",
      "Samoa",
      "Seychelles",
      "Sierra Leone",
      "Singapour",
      "Slovaquie",
      "Slov\u00e9nie",
      "Somalie",
      "Soudan",
      "Sri Lanka",
      "Suisse",
      "Suriname",
      "Su\u00e8de",
      "Svalbard et Jan Mayen (\u00celes)",
      "Swaziland",
      "Syrie",
      "S\u00e3o Tom\u00e9 et Pr\u00edncipe (R\u00e9p.)",
      "S\u00e9n\u00e9gal",
      "Tadjikistan",
      "Taiwan",
      "Tanzanie",
      "Tchad",
      "Territoire britannique de l\'oc\u00e9an Indien",
      "Territoires fran\u00e7ais du sud",
      "Thailande",
      "Timor",
      "Togo",
      "Tokelau",
      "Tonga",
      "Trinit\u00e9 et Tobago",
      "Tunisie",
      "Turkm\u00e9nistan",
      "Turks et Ca\u00efques (\u00celes)",
      "Turquie",
      "Tuvalu",
      "Ukraine",
      "Uruguay",
      "Vanuatu",
      "Vatican (Etat du)",
      "Venezuela",
      "Vierges (\u00celes)",
      "Vierges britanniques (\u00celes)",
      "Vietnam",
      "Wallis et Futuna (\u00celes)",
      "Yemen",
      "Yougoslavie",
      "Zambie",
      "Za\u00efre",
      "Zimbabwe"
    ),

    regions = c(
      "Alsace",
      "Aquitaine",
      "Auvergne",
      "Bourgogne",
      "Bretagne",
      "Centre",
      "Champagne-Ardenne",
      "Corse",
      "Franche-Comt\u00e9",
      "\u00cele-de-France",
      "Languedoc-Roussillon",
      "Limousin",
      "Lorraine",
      "Midi-Pyr\u00e9n\u00e9es",
      "Nord-Pas-de-Calais",
      "Basse-Normandie",
      "Haute-Normandie",
      "Pays-de-Loire",
      "Picardie",
      "Poitou-Charentes",
      "Province-Alpes-C\u00f4te d\'Azur",
      "Rhone-Alpes",
      "Guadeloupe",
      "Martinique",
      "Guyane",
      "R\u00e9union",
      "Saint-Pierre-et-Miquelon",
      "Mayotte",
      "Saint-Barth\u00e9l\u00e9my",
      "Saint-Martin",
      "Wallis-et-Futuna",
      "Polyn\u00e9sie fran\u00e7aise",
      "Nouvelle-Cal\u00e9donie"
    ),

    departments = c(
      "01" = "Ain",
      "02" = "Aisne",
      "03" = "Allier",
      "04" = "Alpes-de-Haute-Provence",
      "05" = "Hautes-Alpes",
      "06" = "Alpes-Maritimes",
      "07" = "Ard\u00e8che",
      "08" = "Ardennes",
      "09" = "Ari\u00e8ge",
      "10" = "Aube",
      "11" = "Aude",
      "12" = "Aveyron",
      "13" = "Bouches-du-Rh\u00f4ne",
      "14" = "Calvados",
      "15" = "Cantal",
      "16" = "Charente",
      "17" = "Charente-Maritime",
      "18" = "Cher",
      "19" = "Corr\u00e8ze",
      "2A" = "Corse-du-Sud",
      "2B" = "Haute-Corse",
      "21" = "C\u00f4te-d\'Or",
      "22" = "C\u00f4tes-d\'Armor",
      "23" = "Creuse",
      "24" = "Dordogne",
      "25" = "Doubs",
      "26" = "Dr\u00f4me",
      "27" = "Eure",
      "28" = "Eure-et-Loir",
      "29" = "Finist\u00e8re",
      "30" = "Gard",
      "31" = "Haute-Garonne",
      "32" = "Gers",
      "33" = "Gironde",
      "34" = "H\u00e9rault",
      "35" = "Ille-et-Vilaine",
      "36" = "Indre",
      "37" = "Indre-et-Loire",
      "38" = "Is\u00e8re",
      "39" = "Jura",
      "40" = "Landes",
      "41" = "Loir-et-Cher",
      "42" = "Loire",
      "43" = "Haute-Loire",
      "44" = "Loire-Atlantique",
      "45" = "Loiret",
      "46" = "Lot",
      "47" = "Lot-et-Garonne",
      "48" = "Loz\u00e8re",
      "49" = "Maine-et-Loire",
      "50" = "Manche",
      "51" = "Marne",
      "52" = "Haute-Marne",
      "53" = "Mayenne",
      "54" = "Meurthe-et-Moselle",
      "55" = "Meuse",
      "56" = "Morbihan",
      "57" = "Moselle",
      "58" = "Ni\u00e8vre",
      "59" = "Nord",
      "60" = "Oise",
      "61" = "Orne",
      "62" = "Pas-de-Calais",
      "63" = "Puy-de-D\u00f4me",
      "64" = "Pyr\u00e9n\u00e9es-Atlantiques",
      "65" = "Hautes-Pyr\u00e9n\u00e9es",
      "66" = "Pyr\u00e9n\u00e9es-Orientales",
      "67" = "Bas-Rhin",
      "68" = "Haut-Rhin",
      "69" = "Rh\u00f4ne",
      "70" = "Haute-Sa\u00f4ne",
      "71" = "Sa\u00f4ne-et-Loire",
      "72" = "Sarthe",
      "73" = "Savoie",
      "74" = "Haute-Savoie",
      "75" = "Paris",
      "76" = "Seine-Maritime",
      "77" = "Seine-et-Marne",
      "78" = "Yvelines",
      "79" = "Deux-S\u00e8vres",
      "80" = "Somme",
      "81" = "Tarn",
      "82" = "Tarn-et-Garonne",
      "83" = "Var",
      "84" = "Vaucluse",
      "85" = "Vend\u00e9e",
      "86" = "Vienne",
      "87" = "Haute-Vienne",
      "88" = "Vosges",
      "89" = "Yonne",
      "90" = "Territoire de Belfort",
      "91" = "Essonne",
      "92" = "Hauts-de-Seine",
      "93" = "Seine-Saint-Denis",
      "94" = "Val-de-Marne",
      "95" = "Val-d\'Oise",
      "971" = "Guadeloupe",
      "972" = "Martinique",
      "973" = "Guyane",
      "974" = "La R\u00e9union",
      "976" = "Mayotte"
    )
  ),

  public = list(
    street_prefix = function(){
      return(private$random_element(private$street_prefixes))
    },

    city_prefix = function(){
      return(private$random_element(private$city_prefixes))
    },

    region = function(){
      return(private$random_element(private$regions))
    },

    department_number = function(){
      return(private$random_element(names(private$departments)))
    },

    department_name = function(){
      return(private$random_element(unname(private$departments)))
    },

    department = function(){
      dnumber = self$department_number()
      return(c(dnumber, private$department[dnumber]))
    }
  )
)
# job ----------------------------------------
job_fr_FR = R6Class(
  "job_fr_FR",
  inherit = job_init,
  cloneable = FALSE,
  private = list(
    jobs = c(
      "Accessoiriste",
      "Accompagnateur de moyenne montagne",
      "Accompagnateur de tourisme \u00e9questre",
      "Accompagnateur de voyages",
      "Acheteur",
      "Acheteur d\'espaces publicitaires",
      "Acousticien",
      "Actuaire",
      "Adjoint",
      "Administrateur de base de donn\u00e9es",
      "Administrateur de biens",
      "Administrateur de logiciels de laboratoire",
      "Administrateur de mission humanitaire",
      "Administrateur de r\u00e9seau",
      "Administrateur de spectacle",
      "Administrateur judiciaire ",
      "Agenceur de cuisines et salles de bains",
      "Agent",
      "Agent artistique",
      "Agent d\'assurances ",
      "Agent de d\u00e9veloppement des \u00e9nergies renouvelables",
      "Agent de d\u00e9veloppement local",
      "Agent de d\u00e9veloppement touristique",
      "Agent de la surveillance SNCF",
      "Agent de propret\u00e9 et d\'hygi\u00e8ne",
      "Agent de propret\u00e9 urbaine",
      "Agent de s\u00e9curit\u00e9",
      "Agent de service commercial train",
      "Agent des m\u00e9thodes",
      "Agent de transit",
      "Agriculteur",
      "Agronome",
      "Aide m\u00e9dico-psychologique",
      "Aide-soignant",
      "Ajusteur",
      "Ambulancier",
      "Analyste de cr\u00e9dit",
      "Analyste financier",
      "Anatomiste",
      "Anesth\u00e9siste-r\u00e9animateur",
      "Animalier de laboratoire",
      "Animateur",
      "Animateur 2D et 3D",
      "Animateur d\'activit\u00e9s physiques et sportives",
      "Animateur de bassin versant",
      "Animateur de radio et de t\u00e9l\u00e9vision",
      "Animateur du patrimoine",
      "Animateur nature",
      "Antiquaire",
      "Apiculteur",
      "Aquaculteur",
      "Arboriculteur",
      "Architecte",
      "Architecte d\'int\u00e9rieur",
      "Architecte naval ",
      "Architecte produit industriel",
      "Architecte r\u00e9seau",
      "Architecte web",
      "Archiviste",
      "Arch\u00e9ologue",
      "A\u00e9rodynamicien",
      "Aromaticien",
      "Artiste de cirque",
      "Ascensoriste",
      "Assistant",
      "Assistant",
      "Assistant",
      "Assistant de gestion en PME",
      "Assistant dentaire",
      "Assistant de service social",
      "Assistant en ressources humaines",
      "Astrophysicien",
      "Attach\u00e9",
      "Attach\u00e9",
      "Attach\u00e9 d\'administration",
      "Attach\u00e9 de presse",
      "Attach\u00e9 de recherche clinique",
      "Audioproth\u00e9siste",
      "Auditeur externe",
      "Auditeur interne",
      "Auteur interpr\u00e8te",
      "Auxiliaire de pu\u00e9riculture",
      "Auxiliaire de vie sociale",
      "Auxiliaire sp\u00e9cialis\u00e9 v\u00e9t\u00e9rinaire",
      "Avocat",
      "Bact\u00e9riologiste",
      "Barman ",
      "Batelier",
      "Biblioth\u00e9caire",
      "Bijoutier",
      "Bio-informaticien",
      "Biologiste en environnement",
      "Biologiste m\u00e9dical",
      "Biostatisticien",
      "\u00e9b\u00e9niste",
      "Botaniste",
      "Bottier",
      "Boucher",
      "Boulanger",
      "Brodeur",
      "Bronzier",
      "Cadreur",
      "Caissier",
      "Canalisateur",
      "Carreleur-mosa\u00efste",
      "Carrossier ",
      "Cartographe",
      "Caviste",
      "Chanteur",
      "Charcutier",
      "Charg\u00e9",
      "Charg\u00e9 d\'affaires en g\u00e9nie climatique",
      "Charg\u00e9 d\'affaires en g\u00e9nie m\u00e9canique",
      "Charg\u00e9 de client\u00e8le banque",
      "Charg\u00e9 de communication interne",
      "Charg\u00e9 de pharmacovigilance",
      "Charg\u00e9 de production",
      "Charg\u00e9 de projet \u00e9v\u00e9nementiel",
      "Charg\u00e9 de recherche en acoustique musicale",
      "Charg\u00e9 de recherche et d\u00e9veloppement d\u00e9chets",
      "Charg\u00e9 de r\u00e9f\u00e9rencement web",
      "Charg\u00e9 des m\u00e9thodes outils et qualit\u00e9 en informatique",
      "Charg\u00e9 des relations publiques",
      "Charg\u00e9 de veille l\u00e9gislative et r\u00e9glementaire",
      "Charg\u00e9 d\'\u00e9tudes \u00e9conomiques",
      "Charg\u00e9 d\'\u00e9tudes en am\u00e9nagement",
      "Charg\u00e9 d\'\u00e9tudes en marketing",
      "Charg\u00e9 d\'\u00e9tudes en valorisation agricole des d\u00e9chets",
      "Charg\u00e9 d\'\u00e9tudes m\u00e9dia",
      "Charg\u00e9 d\'\u00e9tudes naturalistes",
      "Charg\u00e9 d\'\u00e9tudes ressources humaines",
      "Charpentier bois",
      "Charpentier m\u00e9tallique",
      "Chaudronnier",
      "Chauffeur de taxi",
      "Chef comptable",
      "Chef de chantier",
      "Chef de chantier en installations \u00e9lectriques",
      "Chef de cultures l\u00e9gumi\u00e8res",
      "Chef de fabrication des industries graphiques",
      "Chef de mission humanitaire",
      "Chef de produit marketing",
      "Chef de produit touristique",
      "Chef de projet biodiversit\u00e9",
      "Chef de projet d\u00e9mant\u00e8lement nucl\u00e9aire",
      "Chef de projet informatique",
      "Chef de projet multim\u00e9dia",
      "Chef de projet \u00e9olien",
      "Chef de projet sites et sols pollu\u00e9s",
      "Chef de projet territorial",
      "Chef de publicit\u00e9",
      "Chef de rayon",
      "Chef de station de traitement des eaux",
      "Chef des ventes",
      "Chef d\'exploitation d\'usine d\'incin\u00e9ration",
      "Chef monteur",
      "Chercheur en biologie",
      "Chercheur en biologie du sport",
      "Chercheur en chimie",
      "Chercheur en physique   ",
      "Chirurgien",
      "Chirurgien-dentiste",
      "\u00e9clairagiste",
      "Clerc d\'huissier",
      "Climatologue",
      "Coffreur",
      "Cogniticien",
      "Coiffeur",
      "Collaborateur de notaire",
      "Collecteur de fonds",
      "Com\u00e9dien",
      "Commer\u00e7ant en alimentation",
      "Commercial export",
      "Commissaire de police",
      "Commissaire-priseur",
      "Comptable",
      "Concepteur",
      "Concepteur de jeux vid\u00e9o",
      "Concepteur de niveaux de jeu web",
      "Concepteur multim\u00e9dia",
      "Conducteur",
      "Conducteur de bus ou d\'autocar",
      "Conducteur de ligne de production alimentaire",
      "Conducteur de machines agricoles",
      "Conducteur de machines \u00e0 imprimer ",
      "Conducteur de machines \u00e0 papier ",
      "Conducteur de m\u00e9tro",
      "Conducteur d\'engins de travaux publics",
      "Conducteur de scierie",
      "Conducteur de train / TGV",
      "Conducteur de travaux",
      "\u00e9conome de flux",
      "\u00e9conomiste de la construction",
      "Conseiller agricole",
      "Conseiller d\'\u00e9ducation",
      "Conseiller d\'insertion et de probation",
      "Conseiller d\'orientation-psychologue",
      "Conseiller en \u00e9conomie sociale et familiale",
      "Conseiller en environnement",
      "Conseiller en fusion-acquisition",
      "Conseiller en g\u00e9n\u00e9tique",
      "Conseiller en insertion sociale et professionnelle",
      "Conseiller en salle de remise en forme",
      "Conseiller en s\u00e9jours",
      "Conseiller en voyages",
      "Conseiller espace info-\u00e9nergie",
      "Conservateur du patrimoine",
      "Consignataire de navire",
      "Constructeur de routes",
      "Consultant",
      "Consultant en solutions int\u00e9gr\u00e9es",
      "Consultant en validation",
      "Consultant green IT",
      "Contr\u00f4leur",
      "Contr\u00f4leur",
      "Contr\u00f4leur de gestion",
      "Contr\u00f4leur de performances",
      "Contr\u00f4leur technique automobile",
      "Convoyeur de fonds",
      "Coordonnateur d\'\u00e9tudes cliniques",
      "Cordiste",
      "Cordonnier",
      "Correcteur",
      "Costumier",
      "Courtier",
      "Couvreur",
      "C\u00e9ramiste",
      "Credit manager",
      "Cuisinier",
      "Danseur",
      "D\u00e9clarant en douane",
      "D\u00e9colleteur",
      "D\u00e9corateur sc\u00e9nographe",
      "Designer",
      "Designer d\'interaction",
      "Designer sonore",
      "Dessinateur BTP",
      "Dessinateur de BD",
      "Dessinateur en construction m\u00e9canique",
      "Directeur",
      "Directeur artistique",
      "Directeur d\'agence bancaire",
      "Directeur de centre p\u00e9nitentiaire",
      "Directeur de cr\u00e9ation",
      "Directeur de la photographie",
      "Directeur de magasin \u00e0 grande surface",
      "Directeur de restaurant",
      "Directeur d\'h\u00f4pital",
      "Directeur d\'h\u00f4tel",
      "Directeur d\'office de tourisme",
      "\u00e9diteur",
      "Di\u00e9t\u00e9ticien",
      "D\u00e9m\u00e9nageur",
      "D\u00e9mographe",
      "Documentaliste",
      "Domoticien",
      "D\u00e9panneur en \u00e9lectrom\u00e9nager",
      "Dresseur d\'animaux",
      "\u00e9ducateur",
      "\u00e9ducateur",
      "\u00e9ducateur",
      "\u00e9ducateur de jeunes enfants",
      "\u00e9ducateur de la protection judiciaire de la jeunesse",
      "D\u00e9veloppeur \u00e9conomique",
      "D\u00e9veloppeur d\'applications mobiles",
      "D\u00e9veloppeur humanitaire",
      "D\u00e9veloppeur informatique",
      "Employ\u00e9 de pressing",
      "Employ\u00e9 de restaurant",
      "Encadreur",
      "Enqu\u00eateur priv\u00e9",
      "Enseignant",
      "Enseignant",
      "Enseignant d\'art",
      "Enseignant de la conduite automobile et de la s\u00e9curit\u00e9 routi\u00e8re",
      "Enseignant humanitaire",
      "Entra\u00eeneur ",
      "Entra\u00eeneur de chevaux",
      "Ergonome",
      "Ergoth\u00e9rapeute",
      "Esth\u00e9ticien",
      "Ethnologue",
      "Expert automobile",
      "Expert bilan carbone",
      "Expert-comptable",
      "Expert en s\u00e9curit\u00e9 informatique",
      "Expert immobilier",
      "Fa\u00e7adier",
      "Facteur",
      "Facteur d\'instruments",
      "Fa\u00e7onnier des industries graphiques",
      "Femme de chambre ",
      "Ferronnier d\'art",
      "Fiscaliste",
      "Fleuriste",
      "Formateur d\'adultes",
      "Formateur en informatique",
      "Formulateur",
      "Frigoriste",
      "Garde ",
      "Garde \u00e0 cheval",
      "Gardien de la paix",
      "Gardien de police municipale",
      "Gar\u00e7on de caf\u00e9",
      "Gendarme",
      "Gestionnaire de contrats d\'assurance",
      "Gestionnaire de contrats informatiques",
      "Gestionnaire de donn\u00e9es cliniques",
      "Gestionnaire de patrimoine",
      "Gestionnaire de portefeuille",
      "G\u00e9n\u00e9ticien",
      "G\u00e9ochimiste",
      "G\u00e9ographe",
      "G\u00e9ologue",
      "G\u00e9ologue minier",
      "G\u00e9ologue mod\u00e9lisateur",
      "G\u00e9omaticien",
      "G\u00e9om\u00e8tre-topographe",
      "G\u00e9ophysicien",
      "G\u00e9otechnicien",
      "G\u00e9othermicien",
      "Gouvernante",
      "G\u00e9rant de restauration collective",
      "Graphiste",
      "Greffier",
      "Grutier",
      "Guichetier",
      "Guide conf\u00e9rencier des villes et pays d\'art et d\'histoire",
      "Guide de haute montagne",
      "Guide-interpr\u00e8te",
      "Halieute",
      "Histologiste",
      "Horloger",
      "Horticulteur",
      "Hot liner",
      "H\u00f4te d\'accueil",
      "H\u00f4tesse de l\'air ",
      "Huissier de justice",
      "Hydraulicien",
      "Hydrog\u00e9ologue",
      "Hydrologue",
      "Iconographe",
      "Illustrateur",
      "Infirmier",
      "Infirmier humanitaire",
      "Informaticien",
      " ing\u00e9nieur",
      "Ing\u00e9nieur",
      "Ing\u00e9nieur",
      "Ing\u00e9nieur",
      "Ing\u00e9nieur",
      "Ing\u00e9nieur",
      "Ing\u00e9nieur",
      "Ing\u00e9nieur",
      "Ing\u00e9nieur",
      "Ing\u00e9nieur",
      "Ing\u00e9nieur",
      "Ing\u00e9nieur analyste de l\'air",
      "Ing\u00e9nieur brevets",
      "Ing\u00e9nieur calcul",
      "Ing\u00e9nieur chimiste",
      "Ing\u00e9nieur chimiste en d\u00e9veloppement analytique",
      "Ing\u00e9nieur cloud computing",
      "Ing\u00e9nieur d\'application",
      "Ing\u00e9nieur de la police technique et scientifique",
      "Ing\u00e9nieur du BTP",
      "Ing\u00e9nieur du son",
      "Ing\u00e9nieur efficacit\u00e9 \u00e9nerg\u00e9tique du batiment",
      "Ing\u00e9nieur en a\u00e9ronautique",
      "Ing\u00e9nieur en automatisme",
      "Ing\u00e9nieur en construction automobile",
      "Ing\u00e9nieur en construction navale",
      "Ing\u00e9nieur en g\u00e9nie climatique",
      "Ing\u00e9nieur en informatique",
      "Ing\u00e9nieur en \u00e9lectronique num\u00e9rique",
      "Ing\u00e9nieur en m\u00e9canique",
      "Ing\u00e9nieur en m\u00e9canique",
      "Ing\u00e9nieur en m\u00e9trologie",
      "Ing\u00e9nieur en \u00e9nergie solaire",
      "Ing\u00e9nieur en production et exp\u00e9rimentations v\u00e9g\u00e9tales",
      "Ing\u00e9nieur en R et D en \u00e9nergies renouvelables",
      "Ing\u00e9nieur environnement",
      "Ing\u00e9nieur environnement et risques industriels",
      "Ing\u00e9nieur essais",
      "Ing\u00e9nieur fluides, \u00e9nergies, r\u00e9seaux, environnement",
      "Ing\u00e9nieur forage",
      "Ing\u00e9nieur gaz",
      "Ing\u00e9nieur hydro\u00e9cologue",
      "Ing\u00e9nieur hydrog\u00e9omorphologue",
      "Ing\u00e9nieur maintenance a\u00e9ronautique",
      "Ing\u00e9nieur m\u00e9tallurgiste",
      "Ing\u00e9nieur m\u00e9thodes m\u00e9caniques",
      "Ing\u00e9nieur nucl\u00e9aire",
      "Ing\u00e9nieur plasturgiste",
      "Ing\u00e9nieur proc\u00e9d\u00e9s en chimie",
      "Ing\u00e9nieur process aval",
      "Ing\u00e9nieur production dans les biotechnologies",
      "Ing\u00e9nieur production en m\u00e9canique",
      "Ing\u00e9nieur radioprotection",
      "Ing\u00e9nieur recherche et d\u00e9veloppement en agroalimentaire",
      "Ing\u00e9nieur r\u00e9servoir",
      "Ing\u00e9nieur structures",
      "Ing\u00e9nieur syst\u00e8me",
      "Ing\u00e9nieur syst\u00e8mes embarqu\u00e9s",
      "Ing\u00e9nieur technico-commerciale en \u00e9lectronique",
      "Ing\u00e9nieur technico-commercial en chimie",
      "Ing\u00e9nieur textile",
      "Ing\u00e9nieur t\u00e9l\u00e9coms et r\u00e9seaux",
      "Ing\u00e9nieur \u00e9tudes et d\u00e9veloppement en logiciels de simulation",
      "Inspecteur",
      "Inspecteur de banque",
      "Inspecteur du permis de conduire et de la s\u00e9curit\u00e9 routi\u00e8re",
      "Installateur en t\u00e9l\u00e9coms",
      "Int\u00e9grateur web",
      "Journaliste",
      "Journaliste reporter d\'images ",
      "Juge des enfants",
      "Juge d\'instance",
      "Juge d\'instruction",
      "Juriste d\'entreprise",
      "Juriste droit de l\'environnement",
      "Juriste en droit social",
      "Juriste en propri\u00e9t\u00e9 intellectuelle",
      "Lad-jockey, lad-driver",
      "\u00e9lagueur",
      "\u00e9lectricien",
      "\u00e9lectrom\u00e9canicien ",
      "\u00e9lectronicien automobile",
      "\u00e9leveur",
      "Libraire",
      "Linguiste",
      "Logisticien",
      "Machiniste constructeur ou plateau",
      "Magasinier cariste",
      "Magistrat",
      "Manager de risques",
      "Mandataire judiciaire",
      "Manipulateur en \u00e9lectroradiologie m\u00e9dicale",
      "Ma\u00e7on",
      "Maquettiste",
      "Mara\u00eecher",
      "Mar\u00e9chal",
      "Marchandiseur",
      "Marin de commerce",
      "Marin p\u00eacheur",
      "Maroquinier",
      "Masseur-kin\u00e9sith\u00e9rapeute",
      "Matelot",
      "Ma\u00eetre-chien",
      "Ma\u00eetre  d\'h\u00f4tel",
      "Ma\u00eetre nageur sauveteur",
      "M\u00e9canicien",
      "M\u00e9canicien",
      "M\u00e9canicien bateaux",
      "M\u00e9canicien d\'entretien d\'avion",
      "M\u00e9canicien en mat\u00e9riel agricole",
      "M\u00e9canicien moto",
      "M\u00e9catronicien",
      "M\u00e9decin g\u00e9n\u00e9raliste",
      "M\u00e9decin humanitaire",
      "M\u00e9decin sp\u00e9cialiste",
      "M\u00e9diateur",
      "Menuisier",
      "Microbiologiste",
      "Microtechnicien",
      "Militaire du rang ",
      "Militaire technicien",
      "Mixeur",
      "Modiste",
      "Mod\u00e9liste",
      "Moniteur",
      "Moniteur de ski",
      "Moniteur d\'\u00e9quitation",
      "Monteur",
      "Monteur en installations thermiques et climatiques",
      "Monteur en r\u00e9seaux de distribution \u00e9lectrique",
      "Mouleur",
      "M\u00e9t\u00e9orologiste",
      "Musicien",
      "Neurobiologiste",
      "Notaire",
      "Oc\u00e9anologue",
      "Oenologue",
      "Officier",
      "Officier de gendarmerie",
      "Officier de la marine marchande",
      "Officier de l\'arm\u00e9e de l\'air",
      "Officier de l\'arm\u00e9e de terre",
      "Officier de marine",
      "Officier de police",
      "Op\u00e9rateur de fabrication de produits alimentaires",
      "Op\u00e9rateur de raffinerie",
      "Op\u00e9rateur en traitement des mat\u00e9riaux",
      "Op\u00e9rateur pr\u00e9presse",
      "Op\u00e9rateur sur machine \u00e0 commande num\u00e9rique",
      "Opticien",
      "Optronicien",
      "Orf\u00e8vre",
      "Orthophoniste",
      "Orthoproth\u00e9siste",
      "Orthoptiste",
      "Ost\u00e9opathe",
      "Ouvrier",
      "Ouvrier agricole",
      "Ouvrier paysagiste",
      "Palefrenier",
      "Pal\u00e9ontologue",
      "Parfumeur",
      "Paysagiste",
      "P\u00e9diatre",
      "P\u00e9dicure-podologue",
      "P\u00e9dologue",
      "Peintre en batiment",
      "Pharmacien",
      "Pharmacien dans l\'industrie",
      "Photographe",
      "Pilote de ligne",
      "Pilote de ligne automatis\u00e9e ",
      "Plombier",
      "Platrier",
      "Podo-orth\u00e9siste",
      "Professeur dans l\'enseignement agricole",
      "Professeur d\'\u00e9ducation physique et sportive",
      "Professeur de coll\u00e8ge et de lyc\u00e9e",
      "Professeur de lyc\u00e9e professionnel ou technique ",
      "Professeur de maths ou de physique-chimie",
      "Professeur de musique et de danse",
      "Professeur des \u00e9coles ",
      "Professeur documentaliste",
      "Projectionniste",
      "Proth\u00e9siste dentaire",
      "Pr\u00e9parateur en pharmacie",
      "Psychanalyste",
      "Psychologue",
      "Psychomotricien",
      "Patissier",
      "Pu\u00e9riculteur",
      "Qualiticien",
      "R\u00e9ceptionniste",
      "R\u00e9dacteur",
      "R\u00e9dacteur en chef",
      "R\u00e9dacteur on line",
      "Relieur",
      "Reporter-photographe",
      "Responsable assurance qualit\u00e9",
      "Responsable biom\u00e9trie",
      "Responsable de fabrication en agroalimentaire",
      "Responsable de formation",
      "Responsable de laboratoire de contr\u00f4le en biologie",
      "Responsable de la collecte des d\u00e9chets m\u00e9nagers",
      "Responsable de la promotion des ventes",
      "Responsable de la r\u00e9mun\u00e9ration",
      "Responsable de plate-forme biotechnologique",
      "Responsable de projets culturels",
      "Responsable de r\u00e9seau d\'assainissement",
      "Responsable de r\u00e9seau eau potable",
      "Responsable de scierie",
      "Responsable de site de traitement des d\u00e9chets",
      "Responsable des ressources humaines",
      "Responsable d\'ordonnancement",
      "Responsable du back-office",
      "Responsable du recrutement",
      "Responsable du service apr\u00e8s-vente",
      "Responsable du soutien logistique int\u00e9gr\u00e9",
      "Responsable micro",
      "Responsable qualit\u00e9 en agroalimentaire",
      "Restaurateur d\'oeuvres d\'art",
      "R\u00e9gisseur cin\u00e9ma",
      "R\u00e9gisseur de spectacles",
      "R\u00e9gleur",
      "Rudologue",
      "Sage-femme ",
      "Salesman",
      "Sapeur",
      "Sc\u00e9nariste",
      "Scripte",
      "Secr\u00e9taire",
      "Secr\u00e9taire administratif",
      "Secr\u00e9taire d\'\u00e9dition",
      "Secr\u00e9taire de r\u00e9daction",
      "Secr\u00e9taire des Affaires \u00e9trang\u00e8res",
      "Secr\u00e9taire juridique",
      "Secr\u00e9taire m\u00e9dical",
      "Sellier",
      "Serrurier",
      "Sociologue",
      "Soigneur",
      "Solier-moquettiste",
      "Sommelier",
      "Soudeur",
      "Souffleur de verre ",
      "Souscripteur",
      "Sous-officier de l\'arm\u00e9e de l\'air",
      "Sous-officier de l\'arm\u00e9e de terre",
      "Sp\u00e9cialiste des affaires r\u00e9glementaires en chimie",
      "Sportif de haut niveau",
      "S\u00e9rigraphe",
      "Staffeur-ornemaniste",
      "Statisticien",
      "Styliste ",
      "Substitut du procureur",
      "Surveillant de centre p\u00e9nitentiaire",
      "Syndic de copropri\u00e9t\u00e9",
      "Tailleur",
      "Tailleur de pierre",
      "\u00e9talagiste",
      "\u00e9tanch\u00e9iste",
      "Tapissier d\'ameublement ",
      "Technicien ",
      "Technicien ",
      "Technicien",
      "Technicien",
      "Technicien",
      "Technicien automobile",
      "Technicien biologiste",
      "Technicien chimiste",
      "Technicien c\u00e9ramiste",
      "Technicien d\'analyses biom\u00e9dicales",
      "Technicien de fabrication de mobilier et de menuiserie",
      "Technicien de forge",
      "Technicien de l\'intervention sociale et familiale",
      "Technicien de maintenance en g\u00e9nie climatique",
      "Technicien de maintenance en informatique",
      "Technicien de maintenance industrielle",
      "Technicien de police technique et scientifique",
      "Technicien des industries du verre",
      "Technicien d\'essais",
      "Technicien d\'exploitation de l\'eau",
      "Technicien d\'exploitation du r\u00e9seau gaz",
      "Technicien d\'intervention client\u00e8le gaz",
      "Technicien en automatismes",
      "Technicien en engins de travaux publics",
      "Technicien en lignes haute tension ",
      "Technicien en m\u00e9trologie",
      "Technicien en optique de pr\u00e9cision",
      "Technicien en traitement des d\u00e9chets",
      "Technicien nucl\u00e9aire",
      "Technicien paysagiste",
      "Technicien plasturgiste",
      "Technicien t\u00e9l\u00e9coms et r\u00e9seaux",
      "Technico-commercial en agroalimentaire",
      "Techniverrier",
      "Teinturier",
      "Testeur en informatique",
      "T\u00e9l\u00e9vendeur",
      "Toiletteur d\'animaux",
      "Tonnelier",
      "Trader",
      "Traducteur-interpr\u00e8te",
      "Urbaniste",
      "Veilleur strat\u00e9gique",
      "Vendeur-conseil en mat\u00e9riel agricole",
      "Vendeur en animalerie",
      "Vendeur en fournitures automobiles",
      "Vendeur en magasin",
      "Vendeur en micro-informatique et multim\u00e9dia",
      "Verrier au chalumeau",
      "Visiteur",
      "Viticulteur",
      "Vitrailliste",
      "Volcanologue",
      "V\u00e9t\u00e9rinaire",
      "Webdesigner",
      "Webmestre",
      "Zoologiste"
    )
  )
)

# lorem --------------------------------------
lorem_fr_FR = R6Class(
  "lorem_fr_FR",
  inherit = lorem_init,
  cloneable = FALSE,
  private = list(
    locale = "fr_FR",
    ext_words = c(
      "\u00e0",
      "abandonner",
      "abattre",
      "abri",
      "absence",
      "absolu",
      "absolument",
      "accent",
      "accepter",
      "accompagner",
      "accomplir",
      "accord",
      "accorder",
      "accrocher",
      "accuser",
      "acheter",
      "achever",
      "acte",
      "action",
      "admettre",
      "adresser",
      "affaire",
      "affirmer",
      "afin de",
      "\u00e2g\u00e9",
      "\u00e2ge",
      "agent",
      "agir",
      "agiter",
      "ah",
      "aide",
      "aider",
      "aile",
      "ailleurs",
      "aimer",
      "ainsi",
      "air",
      "ajouter",
      "aller",
      "allumer",
      "alors",
      "\u00e2me",
      "amener",
      "ami",
      "amour",
      "amuser",
      "an",
      "ancien",
      "anglais",
      "anglais",
      "angoisse",
      "animal",
      "animer",
      "ann\u00e9e",
      "annoncer",
      "apercevoir",
      "appara\u00eetre",
      "apparence",
      "appartement",
      "appartenir",
      "appel",
      "appeler",
      "apporter",
      "apprendre",
      "approcher",
      "appuyer",
      "apr\u00e8s",
      "apr\u00e8s",
      "arbre",
      "argent",
      "arme",
      "arm\u00e9e",
      "armer",
      "arracher",
      "arr\u00eater",
      "arri\u00e8re",
      "arriv\u00e9e",
      "arriver",
      "art",
      "article",
      "as",
      "aspect",
      "asseoir",
      "assez",
      "assister",
      "assurer",
      "attacher",
      "attaquer",
      "atteindre",
      "attendre",
      "attention",
      "attirer",
      "attitude",
      "au",
      "aucun",
      "aucun",
      "aujourd\'hui",
      "aupr\u00e8s",
      "auquel",
      "aussi",
      "aussit\u00f4t",
      "autant",
      "auteur",
      "autorit\u00e9",
      "autour",
      "autre",
      "autre",
      "autrefois",
      "autrement",
      "avance",
      "avancer",
      "avant",
      "avant",
      "avec",
      "avec",
      "avenir",
      "aventure",
      "avis",
      "avoir",
      "avouer",
      "baisser",
      "banc",
      "bande",
      "barbe",
      "bas",
      "bas",
      "bas",
      "bataille",
      "battre",
      "beau",
      "beau",
      "beau",
      "beaucoup",
      "beaut\u00e9",
      "beaux",
      "besoin",
      "b\u00eate",
      "bien",
      "bien",
      "bient\u00f4t",
      "billet",
      "blanc",
      "blanc",
      "bleu",
      "blond",
      "boire",
      "bois",
      "bon",
      "bon",
      "bonheur",
      "bord",
      "bouche",
      "bout",
      "branche",
      "bras",
      "briller",
      "briser",
      "bruit",
      "br\u00fbler",
      "brusquement",
      "bureau",
      "but",
      "\u00e7a",
      "cabinet",
      "cacher",
      "calme",
      "calme",
      "calmer",
      "camarade",
      "campagne",
      "capable",
      "car",
      "caract\u00e8re",
      "caresser",
      "carte",
      "cas",
      "casser",
      "cause",
      "causer",
      "ce",
      "ce",
      "ceci",
      "c\u00e9der",
      "cela",
      "celui",
      "cent",
      "centre",
      "cependant",
      "cercle",
      "certain",
      "certain",
      "certainement",
      "certes",
      "cerveau",
      "cesse",
      "cesser",
      "chacun",
      "cha\u00eene",
      "chair",
      "chaise",
      "chaleur",
      "chambre",
      "champ",
      "chance",
      "changement",
      "changer",
      "chant",
      "chanter",
      "chaque",
      "charge",
      "charger",
      "chasse",
      "chasser",
      "chat",
      "chaud",
      "chef",
      "chemin",
      "chemise",
      "cher",
      "chercher",
      "cheval",
      "cheveu",
      "chez",
      "chien",
      "chiffre",
      "choisir",
      "choix",
      "chose",
      "chute",
      "ci",
      "ciel",
      "cinq",
      "cinquante",
      "circonstance",
      "clair",
      "claire",
      "classe",
      "clef",
      "coeur",
      "coin",
      "col\u00e8re",
      "colline",
      "colon",
      "combat",
      "combien",
      "commander",
      "comme",
      "comme",
      "commencement",
      "commencer",
      "comment",
      "comment",
      "commun",
      "compagnie",
      "compagnon",
      "complet",
      "compl\u00e8tement",
      "composer",
      "comprendre",
      "compte",
      "compter",
      "conclure",
      "condamner",
      "condition",
      "conduire",
      "confiance",
      "confier",
      "confondre",
      "connaissance",
      "conna\u00eetre",
      "conscience",
      "conseil",
      "consentir",
      "consid\u00e9rer",
      "construire",
      "consulter",
      "contenir",
      "content",
      "contenter",
      "continuer",
      "contraire",
      "contre",
      "convenir",
      "conversation",
      "corde",
      "corps",
      "c\u00f4te",
      "c\u00f4t\u00e9",
      "cou",
      "couche",
      "coucher",
      "couler",
      "couleur",
      "coup",
      "couper",
      "cour",
      "courage",
      "courant",
      "courir",
      "cours",
      "course",
      "court",
      "co\u00fbter",
      "couvrir",
      "craindre",
      "crainte",
      "cr\u00e9er",
      "creuser",
      "cri",
      "crier",
      "crise",
      "croire",
      "croiser",
      "croix",
      "cruel",
      "cuisine",
      "curieux",
      "curiosit\u00e9",
      "d\'abord",
      "dame",
      "danger",
      "dangereux",
      "dans",
      "danser",
      "d\'autres",
      "d\'autres",
      "davantage",
      "de",
      "de",
      "debout",
      "d\u00e9but",
      "d\u00e9chirer",
      "d\u00e9cider",
      "d\u00e9clarer",
      "d\u00e9couvrir",
      "d\u00e9crire",
      "d\u00e9faut",
      "d\u00e9fendre",
      "d\u00e9gager",
      "dehors",
      "dehors",
      "d\u00e9j\u00e0",
      "del\u00e0",
      "demain",
      "demain",
      "demande",
      "demander",
      "demeurer",
      "demi",
      "dent",
      "d\u00e9part",
      "d\u00e9passer",
      "d\u00e9poser",
      "depuis",
      "depuis",
      "dernier",
      "dernier",
      "derri\u00e8re",
      "d\u00e8s",
      "descendre",
      "d\u00e9sert",
      "d\u00e9sespoir",
      "d\u00e9signer",
      "d\u00e9sir",
      "d\u00e9sirer",
      "d\u00e9sormais",
      "dessiner",
      "dessus",
      "d\u00e9tacher",
      "d\u00e9tail",
      "d\u00e9truire",
      "deux",
      "devant",
      "devant",
      "devenir",
      "deviner",
      "devoir",
      "devoir",
      "dieu",
      "diff\u00e9rent",
      "difficile",
      "digne",
      "dimanche",
      "dire",
      "direction",
      "diriger",
      "discours",
      "discussion",
      "discuter",
      "dispara\u00eetre",
      "disposer",
      "distance",
      "distinguer",
      "divers",
      "dix",
      "docteur",
      "doigt",
      "dominer",
      "donc",
      "donner",
      "dont",
      "dormir",
      "dos",
      "double",
      "doucement",
      "douceur",
      "douleur",
      "doute",
      "douter",
      "doux",
      "douze",
      "drame",
      "dresser",
      "droit",
      "droit",
      "droite",
      "droite",
      "dr\u00f4le",
      "du",
      "dur",
      "durant",
      "durer",
      "eau",
      "eaux",
      "\u00e9carter",
      "\u00e9chapper",
      "\u00e9clairer",
      "\u00e9clat",
      "\u00e9clater",
      "\u00e9cole",
      "\u00e9couter",
      "\u00e9craser",
      "\u00e9crire",
      "effacer",
      "effet",
      "effort",
      "\u00e9gal",
      "\u00e9galement",
      "eh",
      "\u00e9l\u00e9ment",
      "\u00e9lever",
      "elle",
      "\u00e9loigner",
      "embrasser",
      "emmener",
      "\u00e9motion",
      "emp\u00eacher",
      "empire",
      "employer",
      "emporter",
      "en",
      "en",
      "en",
      "encore",
      "endormir",
      "endroit",
      "\u00e9nergie",
      "enfance",
      "enfant",
      "enfermer",
      "enfin",
      "enfoncer",
      "engager",
      "enlever",
      "ennemi",
      "\u00e9norme",
      "ensemble",
      "ensemble",
      "ensuite",
      "entendre",
      "entier",
      "entourer",
      "entra\u00eener",
      "entre",
      "entr\u00e9e",
      "entrer",
      "entretenir",
      "envelopper",
      "envie",
      "environ",
      "envoyer",
      "\u00e9pais",
      "\u00e9paule",
      "\u00e9poque",
      "\u00e9prouver",
      "erreur",
      "escalier",
      "espace",
      "esp\u00e8ce",
      "esp\u00e9rer",
      "espoir",
      "esprit",
      "essayer",
      "essuyer",
      "est",
      "et",
      "\u00e9tablir",
      "\u00e9tage",
      "\u00e9taler",
      "\u00e9tat",
      "etc",
      "\u00e9t\u00e9",
      "\u00e9teindre",
      "\u00e9tendre",
      "\u00e9tendue",
      "\u00e9ternel",
      "\u00e9toile",
      "\u00e9tonner",
      "\u00e9touffer",
      "\u00e9trange",
      "\u00e9tranger",
      "\u00e9tranger",
      "\u00eatre",
      "\u00eatre",
      "\u00e9troit",
      "\u00e9tude",
      "\u00e9tudier",
      "\u00e9v\u00e9nement",
      "\u00e9viter",
      "examiner",
      "ex\u00e9cuter",
      "exemple",
      "exiger",
      "existence",
      "exister",
      "exp\u00e9rience",
      "expliquer",
      "exposer",
      "expression",
      "exprimer",
      "extraordinaire",
      "face",
      "facile",
      "fa\u00e7on",
      "faible",
      "faim",
      "faire",
      "fait",
      "fait",
      "falloir",
      "famille",
      "fatigue",
      "fatiguer",
      "faute",
      "fauteuil",
      "faux",
      "faveur",
      "femme",
      "fen\u00eatre",
      "fer",
      "ferme",
      "fermer",
      "f\u00eate",
      "feu",
      "feuille",
      "fid\u00e8le",
      "fier",
      "figure",
      "figurer",
      "fil",
      "fille",
      "fils",
      "fin",
      "fin",
      "fine",
      "finir",
      "fixe",
      "fixer",
      "flamme",
      "fleur",
      "flot",
      "foi",
      "fois",
      "folie",
      "fonction",
      "fond",
      "fonder",
      "force",
      "forcer",
      "for\u00eat",
      "forme",
      "former",
      "fort",
      "fort",
      "fortune",
      "fou",
      "foule",
      "frais",
      "franc",
      "fran\u00e7ais",
      "fran\u00e7ais",
      "franchir",
      "fran\u00e7ois",
      "frapper",
      "fr\u00e8re",
      "froid",
      "froid",
      "front",
      "fruit",
      "fuir",
      "fum\u00e9e",
      "fumer",
      "fusil",
      "gagner",
      "gar\u00e7on",
      "garde",
      "garder",
      "gauche",
      "gauche",
      "g\u00e9n\u00e9ral",
      "g\u00e9n\u00e9ral",
      "genou",
      "genre",
      "gens",
      "geste",
      "glace",
      "glisser",
      "gloire",
      "go\u00fbt",
      "goutte",
      "gouvernement",
      "gr\u00e2ce",
      "gr\u00e2ce",
      "grain",
      "grand",
      "grand",
      "grandir",
      "grave",
      "gris",
      "gros",
      "groupe",
      "gu\u00e8re",
      "guerre",
      "habiller",
      "habitant",
      "habiter",
      "habitude",
      "haine",
      "ha\u00efr",
      "hasard",
      "haut",
      "haut",
      "haut",
      "haute",
      "hauteur",
      "herbe",
      "h\u00e9siter",
      "heure",
      "heureux",
      "hier",
      "histoire",
      "hiver",
      "homme",
      "honneur",
      "honte",
      "horizon",
      "hors",
      "h\u00f4tel",
      "huit",
      "humain",
      "humide",
      "ici",
      "id\u00e9e",
      "ignorer",
      "il",
      "\u00eele",
      "image",
      "imaginer",
      "immense",
      "immobile",
      "importance",
      "important",
      "importer",
      "imposer",
      "impossible",
      "impression",
      "inconnu",
      "indiquer",
      "inqui\u00e9ter",
      "inqui\u00e9tude",
      "inspirer",
      "installer",
      "instant",
      "instinct",
      "intelligence",
      "intention",
      "int\u00e9resser",
      "int\u00e9r\u00eat",
      "int\u00e9rieur",
      "int\u00e9rieur",
      "interroger",
      "interrompre",
      "inutile",
      "inventer",
      "inviter",
      "jamais",
      "jambe",
      "jardin",
      "jaune",
      "je",
      "jeter",
      "jeu",
      "jeune",
      "jeune",
      "jeunesse",
      "joie",
      "joindre",
      "joli",
      "joue",
      "jouer",
      "jour",
      "journal",
      "journ\u00e9e",
      "juge",
      "juger",
      "jusque",
      "juste",
      "justice",
      "l\u00e0",
      "large",
      "larme",
      "le",
      "le",
      "l\u00e9ger",
      "lendemain",
      "lentement",
      "lequel",
      "lettre",
      "leur",
      "leur",
      "lever",
      "l\u00e8vre",
      "libert\u00e9",
      "libre",
      "lien",
      "lier",
      "lieu",
      "ligne",
      "lire",
      "lisser",
      "lit",
      "livre",
      "livrer",
      "loi",
      "loin",
      "long",
      "long",
      "longtemps",
      "lors",
      "lorsque",
      "loup",
      "lourd",
      "lueur",
      "lui",
      "lumi\u00e8re",
      "l\'un",
      "l\'une",
      "lune",
      "lutte",
      "lutter",
      "machine",
      "madame",
      "magnifique",
      "main",
      "maintenant",
      "maintenir",
      "mais",
      "maison",
      "ma\u00eetre",
      "mal",
      "mal",
      "malade",
      "maladie",
      "malgr\u00e9",
      "malheur",
      "manger",
      "manier",
      "manquer",
      "marchand",
      "march\u00e9",
      "marche",
      "marcher",
      "mari",
      "mari",
      "mariage",
      "marier",
      "marquer",
      "masse",
      "mati\u00e8re",
      "matin",
      "mauvais",
      "me",
      "m\u00e9decin",
      "meilleur",
      "m\u00ealer",
      "membre",
      "m\u00eame",
      "m\u00eame",
      "m\u00eame",
      "m\u00e9moire",
      "menacer",
      "mener",
      "mensonge",
      "mentir",
      "mer",
      "m\u00e9riter",
      "mesure",
      "m\u00e9tier",
      "mettre",
      "midi",
      "mien",
      "mieux",
      "milieu",
      "militaire",
      "mille",
      "million",
      "mince",
      "mine",
      "ministre",
      "minute",
      "miser",
      "mode",
      "moi",
      "moindre",
      "moins",
      "mois",
      "moiti\u00e9",
      "moment",
      "mon",
      "monde",
      "monsieur",
      "montagne",
      "monter",
      "montrer",
      "morceau",
      "mort",
      "mort",
      "mot",
      "mourir",
      "mouvement",
      "moyen",
      "moyen",
      "muet",
      "mur",
      "musique",
      "naissance",
      "na\u00eetre",
      "nation",
      "nature",
      "naturel",
      "naturellement",
      "ne",
      "n\u00e9cessaire",
      "nerveux",
      "neuf",
      "neuf",
      "nez",
      "ni",
      "noir",
      "noir",
      "noire",
      "nom",
      "nombre",
      "nombreux",
      "nommer",
      "non",
      "nord",
      "note",
      "notre",
      "nourrir",
      "nous",
      "nouveau",
      "nouveau",
      "nu",
      "nuage",
      "nuit",
      "nul",
      "ob\u00e9ir",
      "objet",
      "obliger",
      "observer",
      "obtenir",
      "occasion",
      "occuper",
      "odeur",
      "oeil",
      "oeuvre",
      "officier",
      "offrir",
      "oh",
      "oiseau",
      "ombre",
      "on",
      "oncle",
      "or",
      "or",
      "ordre",
      "oreille",
      "oser",
      "ou",
      "o\u00f9",
      "oublier",
      "oui",
      "ouvert",
      "ouvrage",
      "ouvrir",
      "page",
      "pain",
      "paix",
      "palais",
      "papa",
      "papier",
      "paquet",
      "par",
      "para\u00eetre",
      "parce que",
      "parcourir",
      "pareil",
      "parent",
      "parfaitement",
      "parfois",
      "parler",
      "parmi",
      "parole",
      "part",
      "partager",
      "parti",
      "particulier",
      "partie",
      "partir",
      "partout",
      "parvenir",
      "pas",
      "pas",
      "passage",
      "pass\u00e9",
      "pass\u00e9",
      "passer",
      "passion",
      "patron",
      "paupi\u00e8re",
      "pauvre",
      "pauvre",
      "payer",
      "pays",
      "paysage",
      "paysan",
      "peau",
      "peine",
      "pencher",
      "pendant",
      "pendre",
      "p\u00e9n\u00e9trer",
      "pens\u00e9e",
      "penser",
      "perdre",
      "perdu",
      "p\u00e8re",
      "permettre",
      "personnage",
      "personne",
      "personne",
      "perte",
      "peser",
      "petit",
      "petit",
      "peu",
      "peuple",
      "peur",
      "phrase",
      "pi\u00e8ce",
      "pied",
      "pierre",
      "piti\u00e9",
      "place",
      "placer",
      "plaindre",
      "plaine",
      "plaire",
      "plaisir",
      "plan",
      "planche",
      "plante",
      "plein",
      "plein",
      "pleurer",
      "plonger",
      "pluie",
      "plus",
      "plusieurs",
      "plut\u00f4t",
      "poche",
      "po\u00e9sie",
      "po\u00e8te",
      "poids",
      "point",
      "point",
      "pointe",
      "poitrine",
      "police",
      "politique",
      "politique",
      "pont",
      "port",
      "porte",
      "porter",
      "portier",
      "poser",
      "position",
      "poss\u00e9der",
      "possible",
      "poste",
      "pour",
      "pourquoi",
      "pourquoi",
      "poursuivre",
      "pourtant",
      "pousser",
      "poussi\u00e8re",
      "pouvoir",
      "pouvoir",
      "pr\u00e9c\u00e9der",
      "pr\u00e9cieux",
      "pr\u00e9cipiter",
      "pr\u00e9cis",
      "pr\u00e9f\u00e9rer",
      "premier",
      "premier",
      "prendre",
      "pr\u00e9parer",
      "pr\u00e8s",
      "pr\u00e8s",
      "pr\u00e9sence",
      "pr\u00e9sent",
      "pr\u00e9sent",
      "pr\u00e9senter",
      "pr\u00e9sident",
      "presque",
      "presser",
      "pr\u00eat",
      "pr\u00e9tendre",
      "pr\u00eater",
      "preuve",
      "pr\u00e9venir",
      "pr\u00e9voir",
      "prier",
      "pri\u00e8re",
      "prince",
      "principe",
      "printemps",
      "prison",
      "prix",
      "probl\u00e8me",
      "prochain",
      "produire",
      "professeur",
      "profiter",
      "profond",
      "profond\u00e9ment",
      "projet",
      "promener",
      "promettre",
      "prononcer",
      "propos",
      "proposer",
      "propre",
      "prot\u00e9ger",
      "prouver",
      "public",
      "public",
      "puis",
      "puis",
      "puisque",
      "puissance",
      "puissant",
      "pur",
      "qualit\u00e9",
      "quand",
      "quant \u00e0",
      "quarante",
      "quart",
      "quartier",
      "quatre",
      "que",
      "que",
      "quel",
      "quelque",
      "quelque",
      "quelqu\'un",
      "question",
      "queue",
      "qui",
      "quinze",
      "quitter",
      "quoi",
      "race",
      "raconter",
      "raison",
      "ramasser",
      "ramener",
      "rang",
      "rapide",
      "rapidement",
      "rappeler",
      "rapport",
      "rapporter",
      "rare",
      "rassurer",
      "rayon",
      "r\u00e9alit\u00e9",
      "recevoir",
      "recherche",
      "r\u00e9clamer",
      "recommencer",
      "reconna\u00eetre",
      "recueillir",
      "reculer",
      "r\u00e9duire",
      "r\u00e9el",
      "r\u00e9fl\u00e9chir",
      "r\u00e9flexion",
      "refuser",
      "regard",
      "regarder",
      "r\u00e8gle",
      "regretter",
      "rejeter",
      "rejoindre",
      "relation",
      "relever",
      "religion",
      "remarquer",
      "remercier",
      "remettre",
      "remonter",
      "remplacer",
      "remplir",
      "rencontre",
      "rencontrer",
      "rendre",
      "renoncer",
      "rentrer",
      "renverser",
      "r\u00e9pandre",
      "repas",
      "r\u00e9p\u00e9ter",
      "r\u00e9pondre",
      "r\u00e9ponse",
      "reposer",
      "repousser",
      "reprendre",
      "repr\u00e9senter",
      "r\u00e9server",
      "r\u00e9sistance",
      "r\u00e9sister",
      "r\u00e9soudre",
      "respect",
      "respecter",
      "respirer",
      "ressembler",
      "reste",
      "rester",
      "r\u00e9sultat",
      "retenir",
      "retirer",
      "retomber",
      "retour",
      "retourner",
      "retrouver",
      "r\u00e9unir",
      "r\u00e9ussir",
      "r\u00eave",
      "r\u00e9veiller",
      "r\u00e9v\u00e9ler",
      "revenir",
      "r\u00eaver",
      "revoir",
      "r\u00e9volution",
      "riche",
      "rideau",
      "rien",
      "rire",
      "rire",
      "risquer",
      "robe",
      "roche",
      "rocher",
      "roi",
      "r\u00f4le",
      "roman",
      "rompre",
      "rond",
      "rose",
      "rose",
      "rouge",
      "rouge",
      "rouler",
      "route",
      "rue",
      "ruine",
      "sable",
      "sac",
      "saint",
      "saint",
      "saisir",
      "saison",
      "salle",
      "saluer",
      "salut",
      "sang",
      "sans",
      "sant\u00e9",
      "satisfaire",
      "sauter",
      "sauvage",
      "sauver",
      "savoir",
      "savoir",
      "sc\u00e8ne",
      "science",
      "se",
      "sec",
      "second",
      "seconde",
      "secours",
      "secret",
      "secret",
      "secr\u00e9taire",
      "seigneur",
      "sein",
      "selon",
      "semaine",
      "semblable",
      "sembler",
      "sens",
      "sentier",
      "sentiment",
      "sentir",
      "s\u00e9parer",
      "sept",
      "s\u00e9rieux",
      "serrer",
      "service",
      "servir",
      "seuil",
      "seul",
      "seulement",
      "si",
      "si",
      "si\u00e8cle",
      "si\u00e8ge",
      "sien",
      "signe",
      "signer",
      "signifier",
      "silence",
      "silencieux",
      "simple",
      "simplement",
      "situation",
      "six",
      "social",
      "soci\u00e9t\u00e9",
      "soi",
      "soin",
      "soir",
      "soir\u00e9e",
      "soit",
      "sol",
      "soldat",
      "soleil",
      "solitude",
      "sombre",
      "somme",
      "sommeil",
      "sommet",
      "son",
      "son",
      "songer",
      "sonner",
      "sorte",
      "sortir",
      "sou",
      "soudain",
      "souffler",
      "souffrance",
      "souffrir",
      "souhaiter",
      "soulever",
      "soumettre",
      "source",
      "sourd",
      "sourire",
      "sourire",
      "sous",
      "soutenir",
      "souvenir",
      "souvenir",
      "souvent",
      "spectacle",
      "subir",
      "succ\u00e8s",
      "sueur",
      "suffire",
      "suite",
      "suivant",
      "suivre",
      "sujet",
      "sup\u00e9rieur",
      "supporter",
      "supposer",
      "s\u00fbr",
      "sur",
      "surprendre",
      "surtout",
      "surveiller",
      "syst\u00e8me",
      "table",
      "t\u00e2che",
      "tache",
      "taille",
      "taire",
      "tandis que",
      "tant",
      "tant\u00f4t",
      "tapis",
      "tard",
      "te",
      "tel",
      "tellement",
      "t\u00e9moin",
      "temp\u00eate",
      "temps",
      "tendre",
      "tendre",
      "tenir",
      "tenter",
      "terme",
      "terminer",
      "terrain",
      "terre",
      "terreur",
      "terrible",
      "t\u00eate",
      "th\u00e9\u00e2tre",
      "tirer",
      "titre",
      "toi",
      "toile",
      "toit",
      "tombe",
      "tomber",
      "ton",
      "ton",
      "t\u00f4t",
      "toucher",
      "toujours",
      "tour",
      "tourner",
      "tout",
      "tout",
      "tout",
      "tout",
      "toute",
      "trace",
      "tracer",
      "train",
      "tra\u00eener",
      "trait",
      "traiter",
      "tranquille",
      "transformer",
      "travail",
      "travailler",
      "travers",
      "traverser",
      "trembler",
      "trente",
      "tr\u00e8s",
      "tr\u00e9sor",
      "triste",
      "trois",
      "troisi\u00e8me",
      "tromper",
      "trop",
      "trou",
      "troubler",
      "trouver",
      "tu",
      "tuer",
      "type",
      "un",
      "un",
      "un",
      "unique",
      "usage",
      "user",
      "vague",
      "vague",
      "vaincre",
      "valeur",
      "valoir",
      "vaste",
      "veille",
      "veiller",
      "vendre",
      "venir",
      "vent",
      "ventre",
      "v\u00e9ritable",
      "v\u00e9rit\u00e9",
      "verre",
      "vers",
      "vers",
      "verser",
      "vert",
      "v\u00eatement",
      "v\u00eatir",
      "victime",
      "vide",
      "vide",
      "vie",
      "vieil",
      "vieillard",
      "vieux",
      "vieux",
      "vif",
      "village",
      "ville",
      "vin",
      "vingt",
      "violence",
      "violent",
      "visage",
      "visible",
      "vision",
      "visite",
      "vite",
      "vivant",
      "vivre",
      "voici",
      "voie",
      "voil\u00e0",
      "voile",
      "voir",
      "voisin",
      "voisin",
      "voiture",
      "voix",
      "vol",
      "voler",
      "volont\u00e9",
      "votre",
      "vouloir",
      "vous",
      "voyage",
      "voyager",
      "vrai",
      "vraiment",
      "vue",
      "y",
      "yeux"
    )
  )
)
## file ----------------------------------------------
file_fr_FR = R6Class(
  "file_fr_FR",
  inherit = file_init,
  cloneable = FALSE,
  public = list(

    file_name = function(category, extension){
      # :param category: audio|image|office|text|video
      # :param extension: file extension
      if (missing(extension)) {
        extension = self$file_extension(category)
      }

      file = (lorem_fr_FR$new())$word()
      return(str_c(file, ".", extension))
    },

    file_path = function(depth = 1, category, extension){
      # :param category: audio|image|office|text|video
      # :param extension: file extension
      # :param depth: depth of the file (depth >= 0)

      file = self$file_name(category, extension)
      path = str_c("/", file)
      for (i in seq(depth)) {
        path = str_c("/", (lorem_fr_FR$new())$word(), path)
      }
      return(path)
    }
  )
)

# internet ---------------------------------------
internet_fr_FR = R6Class(
  "internet_fr_FR",
  inherit = internet_init,
  cloneable = FALSE,
  private = list(
    first_names = (person_fr_FR$new())$.__enclos_env__$private$first_names,
    last_names = (person_fr_FR$new())$.__enclos_env__$private$last_names,

    first_name = (person_fr_FR$new())$first_name,
    last_name = (person_fr_FR$new())$last_name,

    safe_email_tlds = c('com', 'net', 'fr', 'fr'),
    free_email_domains = c(
      'voila.fr',
      'gmail.com',
      'hotmail.fr',
      'yahoo.fr',
      'laposte.net',
      'free.fr',
      'sfr.fr',
      'orange.fr',
      'bouygtel.fr',
      'club-internet.fr',
      'dbmail.com',
      'live.com',
      'ifrance.com',
      'noos.fr',
      'tele2.fr',
      'tiscali.fr',
      'wanadoo.fr'),
    tlds = c('com', 'com', 'com', 'net', 'org', 'fr', 'fr', 'fr'),
    replacements = list(
      c("\u00e0","a"),
      c("\u00e2","a"),
      c("\u00e4","a"),
      c("\u00e7","c"),
      c("\u00e9","e"),
      c("\u00e8","e"),
      c("\u00ea","e"),
      c("\u00eb","e"),
      c("\u00e9","e"),
      c("\u00ef","i"),
      c("\u00ee","i"),
      c("\u00f4","o"),
      c("\u00f6","o"),
      c("\u00f9","u"),
      c("\u00fc","u")
    )
  ),
  public = list(
    domain_word = function() {
      company = (company_fr_FR$new())$company()
      company_elements = str_split(company, " ")[[1]]
      company = private$to_ascii(company_elements[1])
      return(private$slugify(company, allow_unicode = TRUE))
    },
    slug = function(string) {
      string = ifelse(missing(string),
                      (lorem_fr_FR$new())$text(max_nb_chars = 20),
                      string)
      return(private$slugify(string))
    }
  )
)
# phone_number -------------------------------------------
phone_number_fr_FR = R6Class(
  "phone_number_fr_FR",
  inherit = phone_number_init,
  cloneable = FALSE,
  private = list(
    formats = c(
      '+33 (0)1 ## ## ## ##',
      '+33 (0)1 ## ## ## ##',
      '+33 (0)2 ## ## ## ##',
      '+33 (0)3 ## ## ## ##',
      '+33 (0)4 ## ## ## ##',
      '+33 (0)5 ## ## ## ##',
      '+33 (0)6 ## ## ## ##',
      '+33 (0)8 0# ## ## ##',
      '+33 1 ## ## ## ##',
      '+33 1 ## ## ## ##',
      '+33 2 ## ## ## ##',
      '+33 3 ## ## ## ##',
      '+33 4 ## ## ## ##',
      '+33 5 ## ## ## ##',
      '+33 6 ## ## ## ##',
      '+33 8 0# ## ## ##',
      '01########',
      '01########',
      '02########',
      '03########',
      '04########',
      '05########',
      '06########',
      '080#######',
      '01 ## ## ## ##',
      '01 ## ## ## ##',
      '02 ## ## ## ##',
      '03 ## ## ## ##',
      '04 ## ## ## ##',
      '05 ## ## ## ##',
      '06 ## ## ## ##',
      '08 0# ## ## ##'
    )
  )
)
## credit_card -----------------
credit_card_fr_FR = R6Class(
  "credit_card_fr_FR",
  inherit = credit_card_init,
  cloneable = FALSE,
  private = list(
    first_names = (person_fr_FR$new())$.__enclos_env__$private$first_names,
    first_name = (person_fr_FR$new())$first_name,
    last_names = (person_fr_FR$new())$.__enclos_env__$private$last_names,
    last_name = (person_fr_FR$new())$last_name
  )
)




# ssn -----------------------------------------
ssn_fr_FR = R6Class(
  "ssn_fr_FR",
  inherit = ssn_init,
  cloneable = FALSE,
  private = list(
    vat_id_formats = c(
      'FR?? #########',
      'FR## #########',
      'FR?# #########',
      'FR#? #########'
    )
  ),

  public = list(
    vat_id = function(){
      return(private$bothify(private$random_element(private$vat_id_formats)))
    }
  )
)
## profile ------------------
profile_fr_FR = R6Class(
  "profile_fr_FR",
  inherit = profile_init,
  cloneable = FALSE,
  public = list(
    simple_profile = function(sex) {
      # Generates a basic profile with personal informations
      SEX = c("F", "M")
      if (missing(sex)) {
        sex = sample(SEX, 1)
      }
      if (!(sex %in% SEX)) {
        sex = sample(SEX, 1)
      }

      name = ifelse(sex == "F",
                    (person_fr_FR$new())$name_female(),
                    (person_fr_FR$new())$name_male())
      temp = list(
        "username" = (internet_fr_FR$new())$user_name(),
        "name" = name,
        "sex" = sex,
        "address" = (address_fr_FR$new())$address(),
        "mail" = (internet_fr_FR$new())$free_email(),
        "birthdate" = (date_time_init$new())$date_of_birth()
      )
      return(temp)
    },

    profile = function(fields, sex) {

      if (missing(fields)) fields = c()

      field = list(
        "job" = (job_fr_FR$new())$job(),
        "company" = (company_fr_FR$new())$company(),
        "ssn" = (ssn_fr_FR$new())$ssn(),
        "residence" = (address_fr_FR$new())$address(),
        "current_location" = c((geo_init$new())$latitude(),
                               (geo_init$new())$longitude()),
        "blood_group" = sample(c(
          "A+", "A-", "B+", "B-", "AB+", "AB-", "O+", "O-"), 1),
        "website" = replicate(sample(seq(4), 1), (internet_fr_FR$new())$url())
      )

      field = append(field, self$simple_profile(sex))
      # field selection

      if (length(fields)) {
        nms = intersect(names(field), fields)
        field = field[nms]
      }
      return(field)
    }

  )
)
LuYang19/faker documentation built on Jan. 3, 2020, 12:07 a.m.