update french translation
authorEmmanuel Garette <egarette@cadoles.com>
Mon, 23 Sep 2013 19:00:45 +0000 (21:00 +0200)
committerEmmanuel Garette <egarette@cadoles.com>
Mon, 23 Sep 2013 19:00:45 +0000 (21:00 +0200)
tiramisu/option.py
translations/fr/tiramisu.po
translations/tiramisu.pot

index 10aba5c..fb76444 100644 (file)
@@ -1325,6 +1325,6 @@ def validate_callback(callback, callback_params, type_):
                                            ).format(type_, type(option)))
                     if force_permissive not in [True, False]:
                         raise ValueError(_('{0}_params should have a boolean'
                                            ).format(type_, type(option)))
                     if force_permissive not in [True, False]:
                         raise ValueError(_('{0}_params should have a boolean'
-                                           'not a {0} for second argument'
+                                           ' not a {0} for second argument'
                                            ).format(type_, type(
                                                force_permissive)))
                                            ).format(type_, type(
                                                force_permissive)))
index 8bceb43..9e8e2f4 100644 (file)
@@ -2,7 +2,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: \n"
 "Report-Msgid-Bugs-To: \n"
 msgstr ""
 "Project-Id-Version: \n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-31 09:52+CEST\n"
+"POT-Creation-Date: 2013-09-23 20:59+CEST\n"
 "PO-Revision-Date: \n"
 "Last-Translator: Emmanuel Garette <egarette@cadoles.com>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
 "PO-Revision-Date: \n"
 "Last-Translator: Emmanuel Garette <egarette@cadoles.com>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -11,18 +11,14 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "X-Generator: Poedit 1.5.4\n"
 
 "Content-Transfer-Encoding: 8bit\n"
 "X-Generator: Poedit 1.5.4\n"
 
-#: tiramisu/autolib.py:58
-msgid "no config specified but needed"
-msgstr "aucune config spécifié alors que c'est nécessaire"
-
-#: tiramisu/autolib.py:65
+#: tiramisu/autolib.py:131
 msgid ""
 "unable to carry out a calculation, option {0} has properties: {1} for: {2}"
 msgstr ""
 "impossible d'effectuer le calcul, l'option {0} a les propriétés : {1} pour : "
 "{2}"
 
 msgid ""
 "unable to carry out a calculation, option {0} has properties: {1} for: {2}"
 msgstr ""
 "impossible d'effectuer le calcul, l'option {0} a les propriétés : {1} pour : "
 "{2}"
 
-#: tiramisu/autolib.py:74
+#: tiramisu/autolib.py:140
 msgid ""
 "unable to carry out a calculation, option value with multi types must have "
 "same length for: {0}"
 msgid ""
 "unable to carry out a calculation, option value with multi types must have "
 "same length for: {0}"
@@ -30,79 +26,75 @@ msgstr ""
 "impossible d'effectuer le calcul, valeur d'un option avec le type multi doit "
 "avoir la même longueur pour : {0}"
 
 "impossible d'effectuer le calcul, valeur d'un option avec le type multi doit "
 "avoir la même longueur pour : {0}"
 
-#: tiramisu/config.py:47
+#: tiramisu/config.py:48
 msgid "descr must be an optiondescription, not {0}"
 msgstr "descr doit être une optiondescription pas un {0}"
 
 msgid "descr must be an optiondescription, not {0}"
 msgstr "descr doit être une optiondescription pas un {0}"
 
-#: tiramisu/config.py:121
+#: tiramisu/config.py:122
 msgid "unknown group_type: {0}"
 msgstr "group_type inconnu: {0}"
 
 msgid "unknown group_type: {0}"
 msgstr "group_type inconnu: {0}"
 
-#: tiramisu/config.py:157
+#: tiramisu/config.py:158
 msgid ""
 "no option description found for this config (may be metaconfig without meta)"
 msgstr ""
 "pas d'option description pour cette config (peut être une metaconfig sans "
 "meta)"
 
 msgid ""
 "no option description found for this config (may be metaconfig without meta)"
 msgstr ""
 "pas d'option description pour cette config (peut être une metaconfig sans "
 "meta)"
 
-#: tiramisu/config.py:311
+#: tiramisu/config.py:313
 msgid "unknown type_ type {0}for _find"
 msgstr "type_ type {0} pour _find inconnu"
 
 msgid "unknown type_ type {0}for _find"
 msgstr "type_ type {0} pour _find inconnu"
 
-#: tiramisu/config.py:350
+#: tiramisu/config.py:352
 msgid "no option found in config with these criteria"
 msgstr "aucune option trouvée dans la config avec ces critères"
 
 msgid "no option found in config with these criteria"
 msgstr "aucune option trouvée dans la config avec ces critères"
 
-#: tiramisu/config.py:400
+#: tiramisu/config.py:402
 msgid "make_dict can't filtering with value without option"
 msgstr "make_dict ne peut filtrer sur une valeur mais sans option"
 
 msgid "make_dict can't filtering with value without option"
 msgstr "make_dict ne peut filtrer sur une valeur mais sans option"
 
-#: tiramisu/config.py:421
+#: tiramisu/config.py:423
 msgid "unexpected path {0}, should start with {1}"
 msgstr "chemin imprévu {0}, devrait commencer par {1}"
 
 msgid "unexpected path {0}, should start with {1}"
 msgstr "chemin imprévu {0}, devrait commencer par {1}"
 
-#: tiramisu/config.py:481
+#: tiramisu/config.py:483
 msgid "opt in getowner must be an option not {0}"
 msgstr "opt dans getowner doit être une option pas {0}"
 
 msgid "opt in getowner must be an option not {0}"
 msgstr "opt dans getowner doit être une option pas {0}"
 
-#: tiramisu/option.py:71
-msgid "{0} has no attribute impl_set_information"
-msgstr "{0} n'a pas d'attribut impl_set_information"
-
-#: tiramisu/option.py:86
-msgid "information's item not found: {0}"
-msgstr "aucune config spécifié alors que c'est nécessaire"
+#: tiramisu/option.py:69
+msgid "invalid name: {0} for option"
+msgstr "nom invalide : {0} pour l'option"
 
 
-#: tiramisu/option.py:89
-msgid "{0} has no attribute impl_get_information"
-msgstr "{0} n'a pas d'attribut impl_get_information"
+#: tiramisu/option.py:79
+msgid "invalid properties type {0} for {1}, must be a tuple"
+msgstr "type des properties invalide {0} pour {1}, doit être un tuple"
 
 
-#: tiramisu/option.py:117
+#: tiramisu/option.py:121
 msgid "'{0}' ({1}) object attribute '{2}' is read-only"
 msgstr "l'attribut {2} de l'objet '{0}' ({1}) est en lecture seul"
 
 msgid "'{0}' ({1}) object attribute '{2}' is read-only"
 msgstr "l'attribut {2} de l'objet '{0}' ({1}) est en lecture seul"
 
-#: tiramisu/option.py:159
-msgid "invalid name: {0} for option"
-msgstr "nom invalide : {0} pour l'option"
+#: tiramisu/option.py:148 tiramisu/value.py:361
+msgid "information's item not found: {0}"
+msgstr "aucune config spécifié alors que c'est nécessaire"
 
 
-#: tiramisu/option.py:169
-msgid "validator must be a function"
-msgstr "validator doit être une fonction"
+#: tiramisu/option.py:265
+msgid "cannot serialize Option, only in OptionDescription"
+msgstr "ne peut serialiser une Option, seulement via une OptionDescription"
 
 
-#: tiramisu/option.py:176
+#: tiramisu/option.py:364
 msgid "a default_multi is set whereas multi is False in option: {0}"
 msgstr ""
 "une default_multi est renseigné alors que multi est False dans l'option : {0}"
 
 msgid "a default_multi is set whereas multi is False in option: {0}"
 msgstr ""
 "une default_multi est renseigné alors que multi est False dans l'option : {0}"
 
-#: tiramisu/option.py:182
+#: tiramisu/option.py:370
 msgid "invalid default_multi value {0} for option {1}: {2}"
 msgstr "la valeur default_multi est invalide {0} pour l'option {1} : {2}"
 
 msgid "invalid default_multi value {0} for option {1}: {2}"
 msgstr "la valeur default_multi est invalide {0} pour l'option {1} : {2}"
 
-#: tiramisu/option.py:187
+#: tiramisu/option.py:375
 msgid "default value not allowed if option: {0} is calculated"
 msgstr "la valeur par défaut n'est pas possible si l'option {0} est calculé"
 
 msgid "default value not allowed if option: {0} is calculated"
 msgstr "la valeur par défaut n'est pas possible si l'option {0} est calculé"
 
-#: tiramisu/option.py:190
+#: tiramisu/option.py:378
 msgid ""
 "params defined for a callback function but no callback defined yet for "
 "option {0}"
 msgid ""
 "params defined for a callback function but no callback defined yet for "
 "option {0}"
@@ -110,183 +102,179 @@ msgstr ""
 "params définit pour une fonction callback mais par de callback défini encore "
 "pour l'option {0}"
 
 "params définit pour une fonction callback mais par de callback défini encore "
 "pour l'option {0}"
 
-#: tiramisu/option.py:212 tiramisu/option.py:753
-msgid "invalid properties type {0} for {1}, must be a tuple"
-msgstr "type des properties invalide {0} pour {1}, doit être un tuple"
+#: tiramisu/option.py:463
+msgid "validator should return a boolean, not {0}"
+msgstr "validator devrait retourner un boolean, pas un {0}"
 
 
-#: tiramisu/option.py:285
+#: tiramisu/option.py:473
 msgid "invalid value {0} for option {1} for object {2}"
 msgstr "valeur invalide {0} pour l'option {1} pour l'objet {2}"
 
 msgid "invalid value {0} for option {1} for object {2}"
 msgstr "valeur invalide {0} pour l'option {1} pour l'objet {2}"
 
-#: tiramisu/option.py:293 tiramisu/value.py:468
+#: tiramisu/option.py:481 tiramisu/value.py:542
 msgid "invalid value {0} for option {1}: {2}"
 msgstr "valeur invalide {0} pour l'option {1} : {2}"
 
 msgid "invalid value {0} for option {1}: {2}"
 msgstr "valeur invalide {0} pour l'option {1} : {2}"
 
-#: tiramisu/option.py:305
+#: tiramisu/option.py:493
 msgid "invalid value {0} for option {1} which must be a list"
 msgstr "valeur invalide {0} pour l'option {1} qui doit être une liste"
 
 msgid "invalid value {0} for option {1} which must be a list"
 msgstr "valeur invalide {0} pour l'option {1} qui doit être une liste"
 
-#: tiramisu/option.py:374
+#: tiramisu/option.py:562
 msgid "invalid value {0} for option {1} must be different as {2} option"
 msgstr ""
 "valeur invalide {0} pour l'option {1} doit être différent que l'option {2}"
 
 msgid "invalid value {0} for option {1} must be different as {2} option"
 msgstr ""
 "valeur invalide {0} pour l'option {1} doit être différent que l'option {2}"
 
-#: tiramisu/option.py:396
+#: tiramisu/option.py:618
 msgid "values must be a tuple for {0}"
 msgstr "values doit être un tuple pour {0}"
 
 msgid "values must be a tuple for {0}"
 msgstr "values doit être un tuple pour {0}"
 
-#: tiramisu/option.py:399
+#: tiramisu/option.py:621
 msgid "open_values must be a boolean for {0}"
 msgstr "open_values doit être un booléen pour {0}"
 
 msgid "open_values must be a boolean for {0}"
 msgstr "open_values doit être un booléen pour {0}"
 
-#: tiramisu/option.py:420
+#: tiramisu/option.py:642
 msgid "value {0} is not permitted, only {1} is allowed"
 msgstr "valeur {0} n'est pas permit, seules {1} sont autorisées"
 
 msgid "value {0} is not permitted, only {1} is allowed"
 msgstr "valeur {0} n'est pas permit, seules {1} sont autorisées"
 
-#: tiramisu/option.py:432
+#: tiramisu/option.py:654
 msgid "value must be a boolean"
 msgstr "valeur doit être un booléen"
 
 msgid "value must be a boolean"
 msgstr "valeur doit être un booléen"
 
-#: tiramisu/option.py:442
+#: tiramisu/option.py:664
 msgid "value must be an integer"
 msgstr "valeur doit être un numbre"
 
 msgid "value must be an integer"
 msgstr "valeur doit être un numbre"
 
-#: tiramisu/option.py:452
+#: tiramisu/option.py:674
 msgid "value must be a float"
 msgstr "valeur doit être un nombre flottant"
 
 msgid "value must be a float"
 msgstr "valeur doit être un nombre flottant"
 
-#: tiramisu/option.py:462
+#: tiramisu/option.py:684
 msgid "value must be a string, not {0}"
 msgstr "valeur doit être une chaîne, pas {0}"
 
 msgid "value must be a string, not {0}"
 msgstr "valeur doit être une chaîne, pas {0}"
 
-#: tiramisu/option.py:480
+#: tiramisu/option.py:702
 msgid "value must be an unicode"
 msgstr "valeur doit être une valeur unicode"
 
 msgid "value must be an unicode"
 msgstr "valeur doit être une valeur unicode"
 
-#: tiramisu/option.py:490
+#: tiramisu/option.py:714
 msgid "malformed symlinkoption must be an option for symlink {0}"
 msgstr "symlinkoption mal formé doit être une option pour symlink {0}"
 
 msgid "malformed symlinkoption must be an option for symlink {0}"
 msgstr "symlinkoption mal formé doit être une option pour symlink {0}"
 
-#: tiramisu/option.py:526
-msgid "IP shall not be in reserved class"
+#: tiramisu/option.py:766
+msgid "IP mustn't not be in reserved class"
 msgstr "IP ne doit pas être d'une classe reservée"
 
 msgstr "IP ne doit pas être d'une classe reservée"
 
-#: tiramisu/option.py:528
+#: tiramisu/option.py:768
 msgid "IP must be in private class"
 msgstr "IP doit être dans la classe privée"
 
 msgid "IP must be in private class"
 msgstr "IP doit être dans la classe privée"
 
-#: tiramisu/option.py:566
+#: tiramisu/option.py:806
 msgid "inconsistency in allowed range"
 msgstr "inconsistence dans la plage autorisée"
 
 msgid "inconsistency in allowed range"
 msgstr "inconsistence dans la plage autorisée"
 
-#: tiramisu/option.py:571
+#: tiramisu/option.py:811
 msgid "max value is empty"
 msgstr "valeur maximum est vide"
 
 msgid "max value is empty"
 msgstr "valeur maximum est vide"
 
-#: tiramisu/option.py:608
+#: tiramisu/option.py:848
 msgid "network shall not be in reserved class"
 msgstr "réseau ne doit pas être dans la classe reservée"
 
 msgid "network shall not be in reserved class"
 msgstr "réseau ne doit pas être dans la classe reservée"
 
-#: tiramisu/option.py:640
+#: tiramisu/option.py:880
 msgid "invalid network {0} ({1}) with netmask {2} ({3}), this network is an IP"
 msgstr "réseau invalide {0} ({1}) avec masque {2} ({3}), ce réseau est une IP"
 
 msgid "invalid network {0} ({1}) with netmask {2} ({3}), this network is an IP"
 msgstr "réseau invalide {0} ({1}) avec masque {2} ({3}), ce réseau est une IP"
 
-#: tiramisu/option.py:645
+#: tiramisu/option.py:885
 msgid "invalid IP {0} ({1}) with netmask {2} ({3}), this IP is a network"
 msgstr "IP invalide {0} ({1}) avec masque {2} ({3}), cette IP est un réseau"
 
 msgid "invalid IP {0} ({1}) with netmask {2} ({3}), this IP is a network"
 msgstr "IP invalide {0} ({1}) avec masque {2} ({3}), cette IP est un réseau"
 
-#: tiramisu/option.py:650
+#: tiramisu/option.py:890
 msgid "invalid IP {0} ({1}) with netmask {2} ({3})"
 msgstr "IP invalide {0} ({1}) avec masque {2} ({3})"
 
 msgid "invalid IP {0} ({1}) with netmask {2} ({3})"
 msgstr "IP invalide {0} ({1}) avec masque {2} ({3})"
 
-#: tiramisu/option.py:652
+#: tiramisu/option.py:892
 msgid "invalid network {0} ({1}) with netmask {2} ({3})"
 msgstr "réseau invalide {0} ({1}) avec masque {2} ({3})"
 
 msgid "invalid network {0} ({1}) with netmask {2} ({3})"
 msgstr "réseau invalide {0} ({1}) avec masque {2} ({3})"
 
-#: tiramisu/option.py:672
+#: tiramisu/option.py:912
 msgid "unknown type_ {0} for hostname"
 msgstr "type_ inconnu {0} pour le nom d'hôte"
 
 msgid "unknown type_ {0} for hostname"
 msgstr "type_ inconnu {0} pour le nom d'hôte"
 
-#: tiramisu/option.py:675
+#: tiramisu/option.py:915
 msgid "allow_ip must be a boolean"
 msgstr "allow_ip doit être un booléen"
 
 msgid "allow_ip must be a boolean"
 msgstr "allow_ip doit être un booléen"
 
-#: tiramisu/option.py:704
+#: tiramisu/option.py:944
 msgid "invalid value for {0}, must have dot"
 msgstr "valeur invalide pour {0}, doit avoir un point"
 
 msgid "invalid value for {0}, must have dot"
 msgstr "valeur invalide pour {0}, doit avoir un point"
 
-#: tiramisu/option.py:707
+#: tiramisu/option.py:947
 msgid "invalid domainname's length for {0} (max {1})"
 msgstr "longueur du nom de domaine invalide pour {0} (maximum {1})"
 
 msgid "invalid domainname's length for {0} (max {1})"
 msgstr "longueur du nom de domaine invalide pour {0} (maximum {1})"
 
-#: tiramisu/option.py:710
+#: tiramisu/option.py:950
 msgid "invalid domainname's length for {0} (min 2)"
 msgstr "longueur du nom de domaine invalide pour {0} (minimum 2)"
 
 msgid "invalid domainname's length for {0} (min 2)"
 msgstr "longueur du nom de domaine invalide pour {0} (minimum 2)"
 
-#: tiramisu/option.py:714
+#: tiramisu/option.py:954
 msgid "invalid domainname"
 msgstr "nom de domaine invalide"
 
 msgid "invalid domainname"
 msgstr "nom de domaine invalide"
 
-#: tiramisu/option.py:731
-msgid "invalid name: {0} for optiondescription"
-msgstr "nom invalide : {0} pour l'optiondescription"
-
-#: tiramisu/option.py:743
+#: tiramisu/option.py:981
 msgid "duplicate option name: {0}"
 msgstr "nom de l'option dupliqué : {0}"
 
 msgid "duplicate option name: {0}"
 msgstr "nom de l'option dupliqué : {0}"
 
-#: tiramisu/option.py:769
+#: tiramisu/option.py:998
 msgid "unknown Option {0} in OptionDescription {1}"
 msgstr "Option {} inconnue pour l'OptionDescription{}"
 
 msgid "unknown Option {0} in OptionDescription {1}"
 msgstr "Option {} inconnue pour l'OptionDescription{}"
 
-#: tiramisu/option.py:820
+#: tiramisu/option.py:1049
 msgid "duplicate option: {0}"
 msgstr "option dupliquée : {0}"
 
 msgid "duplicate option: {0}"
 msgstr "option dupliquée : {0}"
 
-#: tiramisu/option.py:850
+#: tiramisu/option.py:1083
 msgid "no option for path {0}"
 msgstr "pas d'option pour le chemin {0}"
 
 msgid "no option for path {0}"
 msgstr "pas d'option pour le chemin {0}"
 
-#: tiramisu/option.py:856
+#: tiramisu/option.py:1089
 msgid "no option {0} found"
 msgstr "pas d'option {0} trouvée"
 
 msgid "no option {0} found"
 msgstr "pas d'option {0} trouvée"
 
-#: tiramisu/option.py:866
+#: tiramisu/option.py:1099
 msgid "cannot change group_type if already set (old {0}, new {1})"
 msgstr "ne peut changer group_type si déjà spécifié (ancien {0}, nouveau {1})"
 
 msgid "cannot change group_type if already set (old {0}, new {1})"
 msgstr "ne peut changer group_type si déjà spécifié (ancien {0}, nouveau {1})"
 
-#: tiramisu/option.py:879
+#: tiramisu/option.py:1112
 msgid "master group {0} shall not have a subgroup"
 msgstr "groupe maître {0} ne doit pas avoir de sous-groupe"
 
 msgid "master group {0} shall not have a subgroup"
 msgstr "groupe maître {0} ne doit pas avoir de sous-groupe"
 
-#: tiramisu/option.py:882
+#: tiramisu/option.py:1115
 msgid "master group {0} shall not have a symlinkoption"
 msgstr "groupe maître {0} ne doit pas avoir de symlinkoption"
 
 msgid "master group {0} shall not have a symlinkoption"
 msgstr "groupe maître {0} ne doit pas avoir de symlinkoption"
 
-#: tiramisu/option.py:885
+#: tiramisu/option.py:1118
 msgid "not allowed option {0} in group {1}: this option is not a multi"
 msgstr ""
 "option non autorisée {0} dans le groupe {1} : cette option n'est pas une "
 "multi"
 
 msgid "not allowed option {0} in group {1}: this option is not a multi"
 msgstr ""
 "option non autorisée {0} dans le groupe {1} : cette option n'est pas une "
 "multi"
 
-#: tiramisu/option.py:896
+#: tiramisu/option.py:1129
 msgid "master group with wrong master name for {0}"
 msgstr "le groupe maître avec un nom de maître éroné pour {0}"
 
 msgid "master group with wrong master name for {0}"
 msgstr "le groupe maître avec un nom de maître éroné pour {0}"
 
-#: tiramisu/option.py:905
+#: tiramisu/option.py:1138
 msgid "no child has same nom has master group for: {0}"
 msgstr "pas d'enfant avec le nom du groupe maître pour {0} "
 
 msgid "no child has same nom has master group for: {0}"
 msgstr "pas d'enfant avec le nom du groupe maître pour {0} "
 
-#: tiramisu/option.py:908
+#: tiramisu/option.py:1141
 msgid "group_type: {0} not allowed"
 msgstr "group_type : {0} non autorisé"
 
 msgid "group_type: {0} not allowed"
 msgstr "group_type : {0} non autorisé"
 
-#: tiramisu/option.py:946
+#: tiramisu/option.py:1231
 msgid "malformed requirements type for option: {0}, must be a dict"
 msgstr ""
 "type requirements malformé pour l'option : {0}, doit être un dictionnaire"
 
 msgid "malformed requirements type for option: {0}, must be a dict"
 msgstr ""
 "type requirements malformé pour l'option : {0}, doit être un dictionnaire"
 
-#: tiramisu/option.py:962
+#: tiramisu/option.py:1248
 msgid ""
 "malformed requirements for option: {0} require must have option, expected "
 "and action keys"
 msgid ""
 "malformed requirements for option: {0} require must have option, expected "
 "and action keys"
@@ -294,87 +282,108 @@ msgstr ""
 "requirements malformé pour l'option : {0} l'exigence doit avoir les clefs "
 "option, exptected et action"
 
 "requirements malformé pour l'option : {0} l'exigence doit avoir les clefs "
 "option, exptected et action"
 
-#: tiramisu/option.py:967
+#: tiramisu/option.py:1253
 msgid "malformed requirements for option: {0} inverse must be boolean"
 msgstr "requirements malformé pour l'option : {0} inverse doit être un booléen"
 
 msgid "malformed requirements for option: {0} inverse must be boolean"
 msgstr "requirements malformé pour l'option : {0} inverse doit être un booléen"
 
-#: tiramisu/option.py:971
+#: tiramisu/option.py:1257
 msgid "malformed requirements for option: {0} transitive must be boolean"
 msgstr "requirements malformé pour l'option : {0} transitive doit être booléen"
 
 msgid "malformed requirements for option: {0} transitive must be boolean"
 msgstr "requirements malformé pour l'option : {0} transitive doit être booléen"
 
-#: tiramisu/option.py:975
+#: tiramisu/option.py:1261
 msgid "malformed requirements for option: {0} same_action must be boolean"
 msgstr ""
 "requirements malformé pour l'option : {0} same_action doit être un booléen"
 
 msgid "malformed requirements for option: {0} same_action must be boolean"
 msgstr ""
 "requirements malformé pour l'option : {0} same_action doit être un booléen"
 
-#: tiramisu/option.py:979
+#: tiramisu/option.py:1265
 msgid "malformed requirements must be an option in option {0}"
 msgstr "requirements malformé doit être une option dans l'option {0}"
 
 msgid "malformed requirements must be an option in option {0}"
 msgstr "requirements malformé doit être une option dans l'option {0}"
 
-#: tiramisu/option.py:982
+#: tiramisu/option.py:1268
 msgid "malformed requirements option {0} should not be a multi"
 msgstr "requirements malformé l'option {0} ne doit pas être une multi"
 
 msgid "malformed requirements option {0} should not be a multi"
 msgstr "requirements malformé l'option {0} ne doit pas être une multi"
 
-#: tiramisu/option.py:988
+#: tiramisu/option.py:1274
 msgid ""
 "malformed requirements second argument must be valid for option {0}: {1}"
 msgstr ""
 "requirements malformé deuxième argument doit être valide pour l'option {0} : "
 "{1}"
 
 msgid ""
 "malformed requirements second argument must be valid for option {0}: {1}"
 msgstr ""
 "requirements malformé deuxième argument doit être valide pour l'option {0} : "
 "{1}"
 
-#: tiramisu/option.py:993
+#: tiramisu/option.py:1279
 msgid "inconsistency in action types for option: {0} action: {1}"
 msgstr "incohérence dans les types action pour l'option : {0} action {1}"
 
 msgid "inconsistency in action types for option: {0} action: {1}"
 msgstr "incohérence dans les types action pour l'option : {0} action {1}"
 
-#: tiramisu/setting.py:47
-msgid "storage_type is already set, cannot rebind it"
-msgstr "storage_type est déjà défini, impossible de le redéfinir"
+#: tiramisu/option.py:1304
+msgid "{0} should be a function"
+msgstr "{0} doit être une fonction"
+
+#: tiramisu/option.py:1307
+msgid "{0}_params should be a dict"
+msgstr "{0}_params devrait être un dict"
+
+#: tiramisu/option.py:1310
+msgid "{0}_params with key {1} should not have length different to 1"
+msgstr ""
+"{0}_params avec la clef {1} devrait ne pas avoir une longueur différent de 1"
+
+#: tiramisu/option.py:1314
+msgid "{0}_params should be tuple for key \"{1}\""
+msgstr "{0}_params devrait être un tuple pour la clef \"{1}\""
+
+#: tiramisu/option.py:1320
+msgid "validator not support tuple"
+msgstr "validator n'accepte pas de tuple"
 
 
-#: tiramisu/setting.py:67
+#: tiramisu/option.py:1323
+msgid "{0}_params should have an option not a {0} for first argument"
+msgstr "{0}_params devrait avoir une option pas un {0} pour première argument"
+
+#: tiramisu/option.py:1327
+msgid "{0}_params should have a boolean not a {0} for second argument"
+msgstr "{0}_params devrait avoir un boolean pas un {0} pour second argument"
+
+#: tiramisu/setting.py:116
 msgid "can't rebind {0}"
 msgstr "ne peut redéfinir ({0})"
 
 msgid "can't rebind {0}"
 msgstr "ne peut redéfinir ({0})"
 
-#: tiramisu/setting.py:72
+#: tiramisu/setting.py:121
 msgid "can't unbind {0}"
 msgstr "ne peut supprimer ({0})"
 
 msgid "can't unbind {0}"
 msgstr "ne peut supprimer ({0})"
 
-#: tiramisu/setting.py:185
+#: tiramisu/setting.py:259
 msgid "cannot append {0} property for option {1}: this property is calculated"
 msgstr ""
 "ne peut ajouter la propriété {0} dans l'option {1}: cette propriété est "
 "calculée"
 
 msgid "cannot append {0} property for option {1}: this property is calculated"
 msgstr ""
 "ne peut ajouter la propriété {0} dans l'option {1}: cette propriété est "
 "calculée"
 
-#: tiramisu/setting.py:215
-msgid "option {0} not already exists in storage {1}"
-msgstr "option {0} n'existe pas dans l'espace de stockage {1}"
-
-#: tiramisu/setting.py:282
+#: tiramisu/setting.py:322
 msgid "opt and all_properties must not be set together in reset"
 msgstr "opt et all_properties ne doit pas être renseigné ensemble dans reset"
 
 msgid "opt and all_properties must not be set together in reset"
 msgstr "opt et all_properties ne doit pas être renseigné ensemble dans reset"
 
-#: tiramisu/setting.py:297
+#: tiramisu/setting.py:337
 msgid "if opt is not None, path should not be None in _getproperties"
 msgstr ""
 "si opt n'est pas None, path devrait ne pas être à None dans _getproperties"
 
 msgid "if opt is not None, path should not be None in _getproperties"
 msgstr ""
 "si opt n'est pas None, path devrait ne pas être à None dans _getproperties"
 
-#: tiramisu/setting.py:391
+#: tiramisu/setting.py:440
 msgid "cannot change the value for option {0} this option is frozen"
 msgstr ""
 "ne peut modifié la valeur de l'option {0} cette option n'est pas modifiable"
 
 msgid "cannot change the value for option {0} this option is frozen"
 msgstr ""
 "ne peut modifié la valeur de l'option {0} cette option n'est pas modifiable"
 
-#: tiramisu/setting.py:397
+#: tiramisu/setting.py:446
 msgid "trying to access to an option named: {0} with properties {1}"
 msgstr "tentative d'accès à une option nommée : {0} avec les propriétés {1}"
 
 msgid "trying to access to an option named: {0} with properties {1}"
 msgstr "tentative d'accès à une option nommée : {0} avec les propriétés {1}"
 
-#: tiramisu/setting.py:415
+#: tiramisu/setting.py:464
 msgid "permissive must be a tuple"
 msgstr "permissive doit être un tuple"
 
 msgid "permissive must be a tuple"
 msgstr "permissive doit être un tuple"
 
-#: tiramisu/setting.py:422 tiramisu/value.py:277
+#: tiramisu/setting.py:471 tiramisu/value.py:300
 msgid "invalid generic owner {0}"
 msgstr "invalide owner générique {0}"
 
 msgid "invalid generic owner {0}"
 msgstr "invalide owner générique {0}"
 
-#: tiramisu/setting.py:503
+#: tiramisu/setting.py:558
 msgid ""
 "malformed requirements imbrication detected for option: '{0}' with "
 "requirement on: '{1}'"
 msgid ""
 "malformed requirements imbrication detected for option: '{0}' with "
 "requirement on: '{1}'"
@@ -382,65 +391,85 @@ msgstr ""
 "imbrication de requirements malformé detectée pour l'option : '{0}' avec "
 "requirement sur : '{1}'"
 
 "imbrication de requirements malformé detectée pour l'option : '{0}' avec "
 "requirement sur : '{1}'"
 
-#: tiramisu/setting.py:515
+#: tiramisu/setting.py:570
 msgid "option '{0}' has requirement's property error: {1} {2}"
 msgstr "l'option '{0}' a une erreur de propriété pour le requirement : {1} {2}"
 
 msgid "option '{0}' has requirement's property error: {1} {2}"
 msgstr "l'option '{0}' a une erreur de propriété pour le requirement : {1} {2}"
 
-#: tiramisu/storage/dictionary/storage.py:37
+#: tiramisu/storage/__init__.py:52
+msgid "storage_type is already set, cannot rebind it"
+msgstr "storage_type est déjà défini, impossible de le redéfinir"
+
+#: tiramisu/storage/__init__.py:86
+msgid "option {0} not already exists in storage {1}"
+msgstr "option {0} n'existe pas dans l'espace de stockage {1}"
+
+#: tiramisu/storage/dictionary/storage.py:39
 msgid "dictionary storage cannot delete session"
 msgstr ""
 "impossible de supprimer une session dans un espace de stockage dictionary"
 
 msgid "dictionary storage cannot delete session"
 msgstr ""
 "impossible de supprimer une session dans un espace de stockage dictionary"
 
-#: tiramisu/storage/dictionary/storage.py:46
+#: tiramisu/storage/dictionary/storage.py:50
 msgid "session already used"
 msgstr "session déjà utilisée"
 
 msgid "session already used"
 msgstr "session déjà utilisée"
 
-#: tiramisu/storage/dictionary/storage.py:48
+#: tiramisu/storage/dictionary/storage.py:52
 msgid "a dictionary cannot be persistent"
 msgstr "un espace de stockage dictionary ne peut être persistant"
 
 msgid "a dictionary cannot be persistent"
 msgstr "un espace de stockage dictionary ne peut être persistant"
 
-#: tiramisu/value.py:284
+#: tiramisu/value.py:307
 msgid "no value for {0} cannot change owner to {1}"
 msgstr "pas de valeur pour {0} ne peut changer d'utilisateur pour {1}"
 
 msgid "no value for {0} cannot change owner to {1}"
 msgstr "pas de valeur pour {0} ne peut changer d'utilisateur pour {1}"
 
-#: tiramisu/value.py:356
+#: tiramisu/value.py:414
 msgid "invalid len for the slave: {0} which has {1} as master"
 msgstr "longueur invalide pour une esclave : {0} qui a {1} comme maître"
 
 msgid "invalid len for the slave: {0} which has {1} as master"
 msgstr "longueur invalide pour une esclave : {0} qui a {1} comme maître"
 
-#: tiramisu/value.py:373
+#: tiramisu/value.py:438
 msgid "invalid len for the master: {0} which has {1} as slave with greater len"
 msgstr ""
 "longueur invalide pour un maître : {0} qui a {1} une esclave avec une plus "
 "grande longueur"
 
 msgid "invalid len for the master: {0} which has {1} as slave with greater len"
 msgstr ""
 "longueur invalide pour un maître : {0} qui a {1} une esclave avec une plus "
 "grande longueur"
 
-#: tiramisu/value.py:394
+#: tiramisu/value.py:468
 msgid "cannot append a value on a multi option {0} which is a slave"
 msgstr "ne peut ajouter une valeur sur l'option multi {0} qui est une esclave"
 
 msgid "cannot append a value on a multi option {0} which is a slave"
 msgstr "ne peut ajouter une valeur sur l'option multi {0} qui est une esclave"
 
-#: tiramisu/value.py:429
+#: tiramisu/value.py:503
 msgid "cannot sort multi option {0} if master or slave"
 msgstr "ne peut trier une option multi {0} pour une maître ou une esclave"
 
 msgid "cannot sort multi option {0} if master or slave"
 msgstr "ne peut trier une option multi {0} pour une maître ou une esclave"
 
-#: tiramisu/value.py:433
+#: tiramisu/value.py:507
 msgid "cmp is not permitted in python v3 or greater"
 msgstr "cmp n'est pas permis en python v3 ou supérieure"
 
 msgid "cmp is not permitted in python v3 or greater"
 msgstr "cmp n'est pas permis en python v3 ou supérieure"
 
-#: tiramisu/value.py:442
+#: tiramisu/value.py:516
 msgid "cannot reverse multi option {0} if master or slave"
 msgstr "ne peut inverser une option multi {0} pour une maître ou une esclave"
 
 msgid "cannot reverse multi option {0} if master or slave"
 msgstr "ne peut inverser une option multi {0} pour une maître ou une esclave"
 
-#: tiramisu/value.py:450
+#: tiramisu/value.py:524
 msgid "cannot insert multi option {0} if master or slave"
 msgstr "ne peut insérer une option multi {0} pour une maître ou une esclave"
 
 msgid "cannot insert multi option {0} if master or slave"
 msgstr "ne peut insérer une option multi {0} pour une maître ou une esclave"
 
-#: tiramisu/value.py:458
+#: tiramisu/value.py:532
 msgid "cannot extend multi option {0} if master or slave"
 msgstr "ne peut étendre une option multi {0} pour une maître ou une esclave"
 
 msgid "cannot extend multi option {0} if master or slave"
 msgstr "ne peut étendre une option multi {0} pour une maître ou une esclave"
 
-#: tiramisu/value.py:482
+#: tiramisu/value.py:559
 msgid "cannot pop a value on a multi option {0} which is a slave"
 msgstr "ne peut supprimer une valeur dans l'option multi {0} qui est esclave"
 
 msgid "cannot pop a value on a multi option {0} which is a slave"
 msgstr "ne peut supprimer une valeur dans l'option multi {0} qui est esclave"
 
+#~ msgid "no config specified but needed"
+#~ msgstr "aucune config spécifié alors que c'est nécessaire"
+
+#~ msgid "{0} has no attribute impl_set_information"
+#~ msgstr "{0} n'a pas d'attribut impl_set_information"
+
+#~ msgid "{0} has no attribute impl_get_information"
+#~ msgstr "{0} n'a pas d'attribut impl_get_information"
+
+#~ msgid "invalid name: {0} for optiondescription"
+#~ msgstr "nom invalide : {0} pour l'optiondescription"
+
 #~ msgid "metaconfig's children must be a list"
 #~ msgstr "enfants d'une metaconfig doit être une liste"
 
 #~ msgid "metaconfig's children must be a list"
 #~ msgstr "enfants d'une metaconfig doit être une liste"
 
index ef40426..8b37d6a 100644 (file)
@@ -5,7 +5,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: 2013-09-02 11:30+CEST\n"
+"POT-Creation-Date: 2013-09-23 20:59+CEST\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -15,395 +15,411 @@ msgstr ""
 "Generated-By: pygettext.py 1.5\n"
 
 
 "Generated-By: pygettext.py 1.5\n"
 
 
-#: tiramisu/autolib.py:58
-msgid "no config specified but needed"
-msgstr ""
-
-#: tiramisu/autolib.py:65
+#: tiramisu/autolib.py:131
 msgid "unable to carry out a calculation, option {0} has properties: {1} for: {2}"
 msgstr ""
 
 msgid "unable to carry out a calculation, option {0} has properties: {1} for: {2}"
 msgstr ""
 
-#: tiramisu/autolib.py:74
+#: tiramisu/autolib.py:140
 msgid "unable to carry out a calculation, option value with multi types must have same length for: {0}"
 msgstr ""
 
 msgid "unable to carry out a calculation, option value with multi types must have same length for: {0}"
 msgstr ""
 
-#: tiramisu/config.py:47
+#: tiramisu/config.py:48
 msgid "descr must be an optiondescription, not {0}"
 msgstr ""
 
 msgid "descr must be an optiondescription, not {0}"
 msgstr ""
 
-#: tiramisu/config.py:121
+#: tiramisu/config.py:122
 msgid "unknown group_type: {0}"
 msgstr ""
 
 msgid "unknown group_type: {0}"
 msgstr ""
 
-#: tiramisu/config.py:157
+#: tiramisu/config.py:158
 msgid "no option description found for this config (may be metaconfig without meta)"
 msgstr ""
 
 msgid "no option description found for this config (may be metaconfig without meta)"
 msgstr ""
 
-#: tiramisu/config.py:311
+#: tiramisu/config.py:313
 msgid "unknown type_ type {0}for _find"
 msgstr ""
 
 msgid "unknown type_ type {0}for _find"
 msgstr ""
 
-#: tiramisu/config.py:350
+#: tiramisu/config.py:352
 msgid "no option found in config with these criteria"
 msgstr ""
 
 msgid "no option found in config with these criteria"
 msgstr ""
 
-#: tiramisu/config.py:400
+#: tiramisu/config.py:402
 msgid "make_dict can't filtering with value without option"
 msgstr ""
 
 msgid "make_dict can't filtering with value without option"
 msgstr ""
 
-#: tiramisu/config.py:421
+#: tiramisu/config.py:423
 msgid "unexpected path {0}, should start with {1}"
 msgstr ""
 
 msgid "unexpected path {0}, should start with {1}"
 msgstr ""
 
-#: tiramisu/config.py:481
+#: tiramisu/config.py:483
 msgid "opt in getowner must be an option not {0}"
 msgstr ""
 
 msgid "opt in getowner must be an option not {0}"
 msgstr ""
 
-#: tiramisu/option.py:71
-msgid "{0} has no attribute impl_set_information"
-msgstr ""
-
-#: tiramisu/option.py:86
-msgid "information's item not found: {0}"
+#: tiramisu/option.py:69
+msgid "invalid name: {0} for option"
 msgstr ""
 
 msgstr ""
 
-#: tiramisu/option.py:89
-msgid "{0} has no attribute impl_get_information"
+#: tiramisu/option.py:79
+msgid "invalid properties type {0} for {1}, must be a tuple"
 msgstr ""
 
 msgstr ""
 
-#: tiramisu/option.py:117
+#: tiramisu/option.py:121
 msgid "'{0}' ({1}) object attribute '{2}' is read-only"
 msgstr ""
 
 msgid "'{0}' ({1}) object attribute '{2}' is read-only"
 msgstr ""
 
-#: tiramisu/option.py:208
-msgid "invalid name: {0} for option"
+#: tiramisu/option.py:148 tiramisu/value.py:361
+msgid "information's item not found: {0}"
 msgstr ""
 
 msgstr ""
 
-#: tiramisu/option.py:218
-msgid "validator must be a function"
+#: tiramisu/option.py:265
+msgid "cannot serialize Option, only in OptionDescription"
 msgstr ""
 
 msgstr ""
 
-#: tiramisu/option.py:225
+#: tiramisu/option.py:364
 msgid "a default_multi is set whereas multi is False in option: {0}"
 msgstr ""
 
 msgid "a default_multi is set whereas multi is False in option: {0}"
 msgstr ""
 
-#: tiramisu/option.py:231
+#: tiramisu/option.py:370
 msgid "invalid default_multi value {0} for option {1}: {2}"
 msgstr ""
 
 msgid "invalid default_multi value {0} for option {1}: {2}"
 msgstr ""
 
-#: tiramisu/option.py:236
+#: tiramisu/option.py:375
 msgid "default value not allowed if option: {0} is calculated"
 msgstr ""
 
 msgid "default value not allowed if option: {0} is calculated"
 msgstr ""
 
-#: tiramisu/option.py:239
+#: tiramisu/option.py:378
 msgid "params defined for a callback function but no callback defined yet for option {0}"
 msgstr ""
 
 msgid "params defined for a callback function but no callback defined yet for option {0}"
 msgstr ""
 
-#: tiramisu/option.py:261 tiramisu/option.py:809
-msgid "invalid properties type {0} for {1}, must be a tuple"
+#: tiramisu/option.py:463
+msgid "validator should return a boolean, not {0}"
 msgstr ""
 
 msgstr ""
 
-#: tiramisu/option.py:334
+#: tiramisu/option.py:473
 msgid "invalid value {0} for option {1} for object {2}"
 msgstr ""
 
 msgid "invalid value {0} for option {1} for object {2}"
 msgstr ""
 
-#: tiramisu/option.py:342 tiramisu/value.py:468
+#: tiramisu/option.py:481 tiramisu/value.py:542
 msgid "invalid value {0} for option {1}: {2}"
 msgstr ""
 
 msgid "invalid value {0} for option {1}: {2}"
 msgstr ""
 
-#: tiramisu/option.py:354
+#: tiramisu/option.py:493
 msgid "invalid value {0} for option {1} which must be a list"
 msgstr ""
 
 msgid "invalid value {0} for option {1} which must be a list"
 msgstr ""
 
-#: tiramisu/option.py:423
+#: tiramisu/option.py:562
 msgid "invalid value {0} for option {1} must be different as {2} option"
 msgstr ""
 
 msgid "invalid value {0} for option {1} must be different as {2} option"
 msgstr ""
 
-#: tiramisu/option.py:445
+#: tiramisu/option.py:618
 msgid "values must be a tuple for {0}"
 msgstr ""
 
 msgid "values must be a tuple for {0}"
 msgstr ""
 
-#: tiramisu/option.py:448
+#: tiramisu/option.py:621
 msgid "open_values must be a boolean for {0}"
 msgstr ""
 
 msgid "open_values must be a boolean for {0}"
 msgstr ""
 
-#: tiramisu/option.py:469
+#: tiramisu/option.py:642
 msgid "value {0} is not permitted, only {1} is allowed"
 msgstr ""
 
 msgid "value {0} is not permitted, only {1} is allowed"
 msgstr ""
 
-#: tiramisu/option.py:481
+#: tiramisu/option.py:654
 msgid "value must be a boolean"
 msgstr ""
 
 msgid "value must be a boolean"
 msgstr ""
 
-#: tiramisu/option.py:491
+#: tiramisu/option.py:664
 msgid "value must be an integer"
 msgstr ""
 
 msgid "value must be an integer"
 msgstr ""
 
-#: tiramisu/option.py:501
+#: tiramisu/option.py:674
 msgid "value must be a float"
 msgstr ""
 
 msgid "value must be a float"
 msgstr ""
 
-#: tiramisu/option.py:511
+#: tiramisu/option.py:684
 msgid "value must be a string, not {0}"
 msgstr ""
 
 msgid "value must be a string, not {0}"
 msgstr ""
 
-#: tiramisu/option.py:529
+#: tiramisu/option.py:702
 msgid "value must be an unicode"
 msgstr ""
 
 msgid "value must be an unicode"
 msgstr ""
 
-#: tiramisu/option.py:539
+#: tiramisu/option.py:714
 msgid "malformed symlinkoption must be an option for symlink {0}"
 msgstr ""
 
 msgid "malformed symlinkoption must be an option for symlink {0}"
 msgstr ""
 
-#: tiramisu/option.py:581
-msgid "IP shall not be in reserved class"
+#: tiramisu/option.py:766
+msgid "IP mustn't not be in reserved class"
 msgstr ""
 
 msgstr ""
 
-#: tiramisu/option.py:583
+#: tiramisu/option.py:768
 msgid "IP must be in private class"
 msgstr ""
 
 msgid "IP must be in private class"
 msgstr ""
 
-#: tiramisu/option.py:621
+#: tiramisu/option.py:806
 msgid "inconsistency in allowed range"
 msgstr ""
 
 msgid "inconsistency in allowed range"
 msgstr ""
 
-#: tiramisu/option.py:626
+#: tiramisu/option.py:811
 msgid "max value is empty"
 msgstr ""
 
 msgid "max value is empty"
 msgstr ""
 
-#: tiramisu/option.py:663
+#: tiramisu/option.py:848
 msgid "network shall not be in reserved class"
 msgstr ""
 
 msgid "network shall not be in reserved class"
 msgstr ""
 
-#: tiramisu/option.py:695
+#: tiramisu/option.py:880
 msgid "invalid network {0} ({1}) with netmask {2} ({3}), this network is an IP"
 msgstr ""
 
 msgid "invalid network {0} ({1}) with netmask {2} ({3}), this network is an IP"
 msgstr ""
 
-#: tiramisu/option.py:700
+#: tiramisu/option.py:885
 msgid "invalid IP {0} ({1}) with netmask {2} ({3}), this IP is a network"
 msgstr ""
 
 msgid "invalid IP {0} ({1}) with netmask {2} ({3}), this IP is a network"
 msgstr ""
 
-#: tiramisu/option.py:705
+#: tiramisu/option.py:890
 msgid "invalid IP {0} ({1}) with netmask {2} ({3})"
 msgstr ""
 
 msgid "invalid IP {0} ({1}) with netmask {2} ({3})"
 msgstr ""
 
-#: tiramisu/option.py:707
+#: tiramisu/option.py:892
 msgid "invalid network {0} ({1}) with netmask {2} ({3})"
 msgstr ""
 
 msgid "invalid network {0} ({1}) with netmask {2} ({3})"
 msgstr ""
 
-#: tiramisu/option.py:727
+#: tiramisu/option.py:912
 msgid "unknown type_ {0} for hostname"
 msgstr ""
 
 msgid "unknown type_ {0} for hostname"
 msgstr ""
 
-#: tiramisu/option.py:730
+#: tiramisu/option.py:915
 msgid "allow_ip must be a boolean"
 msgstr ""
 
 msgid "allow_ip must be a boolean"
 msgstr ""
 
-#: tiramisu/option.py:759
+#: tiramisu/option.py:944
 msgid "invalid value for {0}, must have dot"
 msgstr ""
 
 msgid "invalid value for {0}, must have dot"
 msgstr ""
 
-#: tiramisu/option.py:762
+#: tiramisu/option.py:947
 msgid "invalid domainname's length for {0} (max {1})"
 msgstr ""
 
 msgid "invalid domainname's length for {0} (max {1})"
 msgstr ""
 
-#: tiramisu/option.py:765
+#: tiramisu/option.py:950
 msgid "invalid domainname's length for {0} (min 2)"
 msgstr ""
 
 msgid "invalid domainname's length for {0} (min 2)"
 msgstr ""
 
-#: tiramisu/option.py:769
+#: tiramisu/option.py:954
 msgid "invalid domainname"
 msgstr ""
 
 msgid "invalid domainname"
 msgstr ""
 
-#: tiramisu/option.py:787
-msgid "invalid name: {0} for optiondescription"
-msgstr ""
-
-#: tiramisu/option.py:799
+#: tiramisu/option.py:981
 msgid "duplicate option name: {0}"
 msgstr ""
 
 msgid "duplicate option name: {0}"
 msgstr ""
 
-#: tiramisu/option.py:825
+#: tiramisu/option.py:998
 msgid "unknown Option {0} in OptionDescription {1}"
 msgstr ""
 
 msgid "unknown Option {0} in OptionDescription {1}"
 msgstr ""
 
-#: tiramisu/option.py:874
+#: tiramisu/option.py:1049
 msgid "duplicate option: {0}"
 msgstr ""
 
 msgid "duplicate option: {0}"
 msgstr ""
 
-#: tiramisu/option.py:904
+#: tiramisu/option.py:1083
 msgid "no option for path {0}"
 msgstr ""
 
 msgid "no option for path {0}"
 msgstr ""
 
-#: tiramisu/option.py:910
+#: tiramisu/option.py:1089
 msgid "no option {0} found"
 msgstr ""
 
 msgid "no option {0} found"
 msgstr ""
 
-#: tiramisu/option.py:920
+#: tiramisu/option.py:1099
 msgid "cannot change group_type if already set (old {0}, new {1})"
 msgstr ""
 
 msgid "cannot change group_type if already set (old {0}, new {1})"
 msgstr ""
 
-#: tiramisu/option.py:933
+#: tiramisu/option.py:1112
 msgid "master group {0} shall not have a subgroup"
 msgstr ""
 
 msgid "master group {0} shall not have a subgroup"
 msgstr ""
 
-#: tiramisu/option.py:936
+#: tiramisu/option.py:1115
 msgid "master group {0} shall not have a symlinkoption"
 msgstr ""
 
 msgid "master group {0} shall not have a symlinkoption"
 msgstr ""
 
-#: tiramisu/option.py:939
+#: tiramisu/option.py:1118
 msgid "not allowed option {0} in group {1}: this option is not a multi"
 msgstr ""
 
 msgid "not allowed option {0} in group {1}: this option is not a multi"
 msgstr ""
 
-#: tiramisu/option.py:950
+#: tiramisu/option.py:1129
 msgid "master group with wrong master name for {0}"
 msgstr ""
 
 msgid "master group with wrong master name for {0}"
 msgstr ""
 
-#: tiramisu/option.py:959
+#: tiramisu/option.py:1138
 msgid "no child has same nom has master group for: {0}"
 msgstr ""
 
 msgid "no child has same nom has master group for: {0}"
 msgstr ""
 
-#: tiramisu/option.py:962
+#: tiramisu/option.py:1141
 msgid "group_type: {0} not allowed"
 msgstr ""
 
 msgid "group_type: {0} not allowed"
 msgstr ""
 
-#: tiramisu/option.py:1021
+#: tiramisu/option.py:1231
 msgid "malformed requirements type for option: {0}, must be a dict"
 msgstr ""
 
 msgid "malformed requirements type for option: {0}, must be a dict"
 msgstr ""
 
-#: tiramisu/option.py:1037
+#: tiramisu/option.py:1248
 msgid "malformed requirements for option: {0} require must have option, expected and action keys"
 msgstr ""
 
 msgid "malformed requirements for option: {0} require must have option, expected and action keys"
 msgstr ""
 
-#: tiramisu/option.py:1042
+#: tiramisu/option.py:1253
 msgid "malformed requirements for option: {0} inverse must be boolean"
 msgstr ""
 
 msgid "malformed requirements for option: {0} inverse must be boolean"
 msgstr ""
 
-#: tiramisu/option.py:1046
+#: tiramisu/option.py:1257
 msgid "malformed requirements for option: {0} transitive must be boolean"
 msgstr ""
 
 msgid "malformed requirements for option: {0} transitive must be boolean"
 msgstr ""
 
-#: tiramisu/option.py:1050
+#: tiramisu/option.py:1261
 msgid "malformed requirements for option: {0} same_action must be boolean"
 msgstr ""
 
 msgid "malformed requirements for option: {0} same_action must be boolean"
 msgstr ""
 
-#: tiramisu/option.py:1054
+#: tiramisu/option.py:1265
 msgid "malformed requirements must be an option in option {0}"
 msgstr ""
 
 msgid "malformed requirements must be an option in option {0}"
 msgstr ""
 
-#: tiramisu/option.py:1057
+#: tiramisu/option.py:1268
 msgid "malformed requirements option {0} should not be a multi"
 msgstr ""
 
 msgid "malformed requirements option {0} should not be a multi"
 msgstr ""
 
-#: tiramisu/option.py:1063
+#: tiramisu/option.py:1274
 msgid "malformed requirements second argument must be valid for option {0}: {1}"
 msgstr ""
 
 msgid "malformed requirements second argument must be valid for option {0}: {1}"
 msgstr ""
 
-#: tiramisu/option.py:1068
+#: tiramisu/option.py:1279
 msgid "inconsistency in action types for option: {0} action: {1}"
 msgstr ""
 
 msgid "inconsistency in action types for option: {0} action: {1}"
 msgstr ""
 
-#: tiramisu/setting.py:47
-msgid "storage_type is already set, cannot rebind it"
+#: tiramisu/option.py:1304
+msgid "{0} should be a function"
+msgstr ""
+
+#: tiramisu/option.py:1307
+msgid "{0}_params should be a dict"
 msgstr ""
 
 msgstr ""
 
-#: tiramisu/setting.py:67
+#: tiramisu/option.py:1310
+msgid "{0}_params with key {1} should not have length different to 1"
+msgstr ""
+
+#: tiramisu/option.py:1314
+msgid "{0}_params should be tuple for key \"{1}\""
+msgstr ""
+
+#: tiramisu/option.py:1320
+msgid "validator not support tuple"
+msgstr ""
+
+#: tiramisu/option.py:1323
+msgid "{0}_params should have an option not a {0} for first argument"
+msgstr ""
+
+#: tiramisu/option.py:1327
+msgid "{0}_params should have a boolean not a {0} for second argument"
+msgstr ""
+
+#: tiramisu/setting.py:116
 msgid "can't rebind {0}"
 msgstr ""
 
 msgid "can't rebind {0}"
 msgstr ""
 
-#: tiramisu/setting.py:72
+#: tiramisu/setting.py:121
 msgid "can't unbind {0}"
 msgstr ""
 
 msgid "can't unbind {0}"
 msgstr ""
 
-#: tiramisu/setting.py:185
+#: tiramisu/setting.py:259
 msgid "cannot append {0} property for option {1}: this property is calculated"
 msgstr ""
 
 msgid "cannot append {0} property for option {1}: this property is calculated"
 msgstr ""
 
-#: tiramisu/setting.py:215
-msgid "option {0} not already exists in storage {1}"
-msgstr ""
-
-#: tiramisu/setting.py:282
+#: tiramisu/setting.py:322
 msgid "opt and all_properties must not be set together in reset"
 msgstr ""
 
 msgid "opt and all_properties must not be set together in reset"
 msgstr ""
 
-#: tiramisu/setting.py:297
+#: tiramisu/setting.py:337
 msgid "if opt is not None, path should not be None in _getproperties"
 msgstr ""
 
 msgid "if opt is not None, path should not be None in _getproperties"
 msgstr ""
 
-#: tiramisu/setting.py:391
+#: tiramisu/setting.py:440
 msgid "cannot change the value for option {0} this option is frozen"
 msgstr ""
 
 msgid "cannot change the value for option {0} this option is frozen"
 msgstr ""
 
-#: tiramisu/setting.py:397
+#: tiramisu/setting.py:446
 msgid "trying to access to an option named: {0} with properties {1}"
 msgstr ""
 
 msgid "trying to access to an option named: {0} with properties {1}"
 msgstr ""
 
-#: tiramisu/setting.py:415
+#: tiramisu/setting.py:464
 msgid "permissive must be a tuple"
 msgstr ""
 
 msgid "permissive must be a tuple"
 msgstr ""
 
-#: tiramisu/setting.py:422 tiramisu/value.py:277
+#: tiramisu/setting.py:471 tiramisu/value.py:300
 msgid "invalid generic owner {0}"
 msgstr ""
 
 msgid "invalid generic owner {0}"
 msgstr ""
 
-#: tiramisu/setting.py:503
+#: tiramisu/setting.py:558
 msgid "malformed requirements imbrication detected for option: '{0}' with requirement on: '{1}'"
 msgstr ""
 
 msgid "malformed requirements imbrication detected for option: '{0}' with requirement on: '{1}'"
 msgstr ""
 
-#: tiramisu/setting.py:515
+#: tiramisu/setting.py:570
 msgid "option '{0}' has requirement's property error: {1} {2}"
 msgstr ""
 
 msgid "option '{0}' has requirement's property error: {1} {2}"
 msgstr ""
 
-#: tiramisu/storage/dictionary/storage.py:37
+#: tiramisu/storage/__init__.py:52
+msgid "storage_type is already set, cannot rebind it"
+msgstr ""
+
+#: tiramisu/storage/__init__.py:86
+msgid "option {0} not already exists in storage {1}"
+msgstr ""
+
+#: tiramisu/storage/dictionary/storage.py:39
 msgid "dictionary storage cannot delete session"
 msgstr ""
 
 msgid "dictionary storage cannot delete session"
 msgstr ""
 
-#: tiramisu/storage/dictionary/storage.py:46
+#: tiramisu/storage/dictionary/storage.py:50
 msgid "session already used"
 msgstr ""
 
 msgid "session already used"
 msgstr ""
 
-#: tiramisu/storage/dictionary/storage.py:48
+#: tiramisu/storage/dictionary/storage.py:52
 msgid "a dictionary cannot be persistent"
 msgstr ""
 
 msgid "a dictionary cannot be persistent"
 msgstr ""
 
-#: tiramisu/value.py:284
+#: tiramisu/value.py:307
 msgid "no value for {0} cannot change owner to {1}"
 msgstr ""
 
 msgid "no value for {0} cannot change owner to {1}"
 msgstr ""
 
-#: tiramisu/value.py:356
+#: tiramisu/value.py:414
 msgid "invalid len for the slave: {0} which has {1} as master"
 msgstr ""
 
 msgid "invalid len for the slave: {0} which has {1} as master"
 msgstr ""
 
-#: tiramisu/value.py:373
+#: tiramisu/value.py:438
 msgid "invalid len for the master: {0} which has {1} as slave with greater len"
 msgstr ""
 
 msgid "invalid len for the master: {0} which has {1} as slave with greater len"
 msgstr ""
 
-#: tiramisu/value.py:394
+#: tiramisu/value.py:468
 msgid "cannot append a value on a multi option {0} which is a slave"
 msgstr ""
 
 msgid "cannot append a value on a multi option {0} which is a slave"
 msgstr ""
 
-#: tiramisu/value.py:429
+#: tiramisu/value.py:503
 msgid "cannot sort multi option {0} if master or slave"
 msgstr ""
 
 msgid "cannot sort multi option {0} if master or slave"
 msgstr ""
 
-#: tiramisu/value.py:433
+#: tiramisu/value.py:507
 msgid "cmp is not permitted in python v3 or greater"
 msgstr ""
 
 msgid "cmp is not permitted in python v3 or greater"
 msgstr ""
 
-#: tiramisu/value.py:442
+#: tiramisu/value.py:516
 msgid "cannot reverse multi option {0} if master or slave"
 msgstr ""
 
 msgid "cannot reverse multi option {0} if master or slave"
 msgstr ""
 
-#: tiramisu/value.py:450
+#: tiramisu/value.py:524
 msgid "cannot insert multi option {0} if master or slave"
 msgstr ""
 
 msgid "cannot insert multi option {0} if master or slave"
 msgstr ""
 
-#: tiramisu/value.py:458
+#: tiramisu/value.py:532
 msgid "cannot extend multi option {0} if master or slave"
 msgstr ""
 
 msgid "cannot extend multi option {0} if master or slave"
 msgstr ""
 
-#: tiramisu/value.py:482
+#: tiramisu/value.py:559
 msgid "cannot pop a value on a multi option {0} which is a slave"
 msgstr ""
 
 msgid "cannot pop a value on a multi option {0} which is a slave"
 msgstr ""