From fcbaba9db7a62a5d1a1dcb86a18360cc5abd8ce7 Mon Sep 17 00:00:00 2001 From: Emmanuel Garette Date: Sun, 21 Jun 2026 17:13:47 +0200 Subject: [PATCH] fix: update translation --- locale/fr/LC_MESSAGES/tiramisu.po | 437 +++++++++++---------- locale/tiramisu.pot | 432 ++++++++++---------- tiramisu/locale/fr/LC_MESSAGES/tiramisu.mo | Bin 28927 -> 29357 bytes 3 files changed, 447 insertions(+), 422 deletions(-) diff --git a/locale/fr/LC_MESSAGES/tiramisu.po b/locale/fr/LC_MESSAGES/tiramisu.po index bbd6a4a..8be7387 100644 --- a/locale/fr/LC_MESSAGES/tiramisu.po +++ b/locale/fr/LC_MESSAGES/tiramisu.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Tiramisu\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-22 08:49+0100\n" +"POT-Creation-Date: 2026-06-21 17:10+0200\n" "PO-Revision-Date: \n" "Last-Translator: Emmanuel Garette \n" "Language-Team: Tiramisu's team \n" @@ -11,7 +11,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Poedit 3.8\n" +"X-Generator: Poedit 3.9\n" "X-Poedit-SourceCharset: UTF-8\n" #: tiramisu/api.py:87 @@ -34,31 +34,31 @@ msgstr "Ne peut avoir de warnings durant une validation" msgid "Commands:" msgstr "Commandes :" -#: tiramisu/api.py:119 tiramisu/api.py:2089 +#: tiramisu/api.py:119 tiramisu/api.py:2282 msgid "please specify a valid sub function ({0}.{1})" msgstr "veuillez spécifier une sous fonction valide ({0}.{1})" -#: tiramisu/api.py:209 +#: tiramisu/api.py:243 msgid "please do not specify index ({0}.{1})" msgstr "veuillez ne pas spécifier d'index ({0}.{1})" -#: tiramisu/api.py:214 tiramisu/api.py:1061 +#: tiramisu/api.py:254 msgid "please specify index with a follower option ({0}.{1})" msgstr "veuillez spécifier un index avec une option suiveuse ({0}.{1})" -#: tiramisu/api.py:237 +#: tiramisu/api.py:277 msgid "please specify a valid sub function ({0}.{1}): {2}" msgstr "veuillez spécifier une sous fonction valide ({0}.{1}): {2}" -#: tiramisu/api.py:498 +#: tiramisu/api.py:551 msgid "optiondescription" msgstr "option description" -#: tiramisu/api.py:503 +#: tiramisu/api.py:556 msgid "symlink" msgstr "lien symbolique" -#: tiramisu/api.py:608 +#: tiramisu/api.py:717 msgid "" "the option {0} is not a dynamic option, cannot get identifiers with " "only_self parameter to True" @@ -66,15 +66,15 @@ msgstr "" "l'option {0} n'est pas une option dynamique, ne peut retrouver l'identifiant " "avec le paramètre only_self à True" -#: tiramisu/api.py:698 +#: tiramisu/api.py:822 msgid "cannot get option from a follower symlink without index" msgstr "ne peut avoir d'option pour une symlink suiveuse sans index" -#: tiramisu/api.py:797 +#: tiramisu/api.py:924 msgid "cannot add this property: \"{0}\"" msgstr "ne peut pas ajouter cette propriété : \"{0}\"" -#: tiramisu/api.py:824 +#: tiramisu/api.py:951 msgid "" "cannot remove option's property \"{0}\", use permissive instead in option " "\"{1}\"" @@ -82,11 +82,11 @@ msgstr "" "ne supprimer la propriété \"{0}\" de l'option, utiliser plutôt permissive " "dans l'option \"{1}\"" -#: tiramisu/api.py:828 +#: tiramisu/api.py:955 msgid "cannot find \"{0}\" in option \"{1}\"" msgstr "ne peut trouver \"{0}\" dans l'option \"{1}\"" -#: tiramisu/api.py:833 +#: tiramisu/api.py:960 msgid "" "cannot remove option's property \"{0}\", use permissive instead in option " "\"{1}\" at index \"{2}\"" @@ -94,35 +94,43 @@ msgstr "" "ne peut supprimer la propriété \"{0}\" de l'option, utilisez plutôt " "permissive dans l'option \"{1}\" a l'index \"{2}\"" -#: tiramisu/api.py:837 +#: tiramisu/api.py:964 msgid "cannot find \"{0}\" in option \"{1}\" at index \"{2}\"" msgstr "ne peut trouver \"{0}\" dans l'option \"{1}\" à l'index \"{2}\"" -#: tiramisu/api.py:881 +#: tiramisu/api.py:1008 msgid "cannot find \"{0}\"" msgstr "ne peut trouver \"{0}\"" -#: tiramisu/api.py:1078 +#: tiramisu/api.py:1202 +msgid "please specify index with a follower option ({0})" +msgstr "veuillez spécifier un index avec une option suiveuse ({0})" + +#: tiramisu/api.py:1214 msgid "only multi value has defaultmulti" msgstr "seule les valeurs multiple a l'attribut defaultmulti" -#: tiramisu/api.py:1243 +#: tiramisu/api.py:1274 +msgid "return_type is not valid for a optiondescription" +msgstr "return_type n'est pas valide pour une optiondescription" + +#: tiramisu/api.py:1415 msgid "please specify a valid sub function ({0}.{1}) for {2}" msgstr "veuillez spécifier une sous fonction valide ({0}.{1}) pour {2}" -#: tiramisu/api.py:1649 +#: tiramisu/api.py:1850 msgid "properties must be a frozenset" msgstr "une propriété doit être de type frozenset" -#: tiramisu/api.py:1653 tiramisu/api.py:1680 +#: tiramisu/api.py:1854 tiramisu/api.py:1881 msgid "unknown when {} (must be in append or remove)" msgstr "value {} inconsistent (doit être append ou remove)" -#: tiramisu/api.py:1666 tiramisu/api.py:1690 tiramisu/config.py:1782 +#: tiramisu/api.py:1867 tiramisu/api.py:1891 tiramisu/config.py:1811 msgid "unknown type {}" msgstr "type inconnu {}" -#: tiramisu/api.py:2061 +#: tiramisu/api.py:2254 msgid "do not use unrestraint, nowarnings or forcepermissive together" msgstr "" "il ne faut pas utiliser unrestraint, nowarnings ou forcepermissive ensemble" @@ -152,68 +160,69 @@ msgid "param must have a boolean not a {} for raisepropertyerror" msgstr "param doit avoir un booléan pas un {} pour raisepropertyerror" #: tiramisu/autolib.py:160 -msgid "identifiers in ParamDynOption must be a list, not {0}" +msgid "identifiers in ParamDynOption must be a list or a calculation, not {0}" msgstr "" -"les identifiants d'un ParamDynOption doivent être une liste, donc pas {0}" +"les identifiants d'un ParamDynOption doivent être une liste ou un calcul, " +"donc pas {0}" #: tiramisu/autolib.py:166 msgid "optional in ParamDynOption must be a boolean, not {0}" msgstr "" "le paramètre optional dans ParamDynOption doit être un booléen, pas {0}" -#: tiramisu/autolib.py:222 +#: tiramisu/autolib.py:224 msgid "cannot add option in information after creating config" msgstr "" "ne peut ajouter une option dans une information après la création de la " "configuration" -#: tiramisu/autolib.py:225 +#: tiramisu/autolib.py:227 msgid "cannot redefine option in information" msgstr "on ne peu pas redéfinir une option dans une information" -#: tiramisu/autolib.py:229 +#: tiramisu/autolib.py:231 msgid "option in ParamInformation cannot be a symlinkoption" msgstr "l'option dans ParamInformation ne peut pas être un symlinkoption" -#: tiramisu/autolib.py:232 +#: tiramisu/autolib.py:234 msgid "option in ParamInformation cannot be a follower" msgstr "l'option dans ParamInformation ne peut pas être suiveuse" -#: tiramisu/autolib.py:235 +#: tiramisu/autolib.py:237 msgid "option in ParamInformation cannot be a dynamic option" msgstr "l'option dans ParamInformation ne peut pas être une option dynamique" -#: tiramisu/autolib.py:296 +#: tiramisu/autolib.py:298 msgid "first argument ({0}) must be a function" msgstr "le premier argument ({0}) doit être une fonction" -#: tiramisu/autolib.py:300 +#: tiramisu/autolib.py:302 msgid "help_function ({0}) must be a function" msgstr "help_function ({0}) doit être une fonction" -#: tiramisu/autolib.py:471 tiramisu/autolib.py:527 +#: tiramisu/autolib.py:473 tiramisu/autolib.py:529 msgid "the option {0} is used in a calculation but is invalid ({1})" msgstr "l'option {0} est utilisé dans un calcul mais est invalide ({1})" -#: tiramisu/autolib.py:484 tiramisu/autolib.py:541 tiramisu/autolib.py:591 +#: tiramisu/autolib.py:486 tiramisu/autolib.py:543 tiramisu/autolib.py:593 msgid "unable to get value for calculating {0}, {1}" msgstr "impossible de trouver la valeur pour calculer {0}, {1}" -#: tiramisu/autolib.py:520 +#: tiramisu/autolib.py:522 msgid "unable to carry out a calculation for {0}, {1}" msgstr "impossible d'effectuer le calcul pour {0}, {1}" -#: tiramisu/autolib.py:566 +#: tiramisu/autolib.py:568 msgid "cannot find information for {0}, {1} is a dynamic option" msgstr "ne peut trouver l'information pour {0}, {1} est une option dynamique" -#: tiramisu/autolib.py:606 +#: tiramisu/autolib.py:608 msgid "option {0} is not a dynoptiondescription or in a dynoptiondescription" msgstr "" "l'option {0} n'est pas une dynoptiondescription ou n'est pas dans une " "dynoptiondescription" -#: tiramisu/autolib.py:726 +#: tiramisu/autolib.py:743 msgid "" "cannot calculate arguments for {0}, {1} with identifier \"{2}\", there is no " "identifiers" @@ -221,7 +230,7 @@ msgstr "" "impossible de calculer les arguments de {0}, {1} avec l'identifiant \"{2}\", " "il n'y a pas d'identifiants" -#: tiramisu/autolib.py:738 +#: tiramisu/autolib.py:755 msgid "" "cannot calculate arguments for {0}, {1} with identifier \"{2}\", list of " "valid identifiers: {3}" @@ -229,12 +238,12 @@ msgstr "" "impossible de calculer les arguments de {0}, {1} avec l'identifiant \"{2}\", " "voici la liste des identifiants valables : {3}" -#: tiramisu/autolib.py:853 +#: tiramisu/autolib.py:879 msgid "the follower {0} must have index in carry_out_calculation!" msgstr "" "la variable suiveuse {0} doit avoir un index dans carry_out_calculation!" -#: tiramisu/autolib.py:966 +#: tiramisu/autolib.py:1007 msgid "" "unexpected error \"{1}\" in function \"{2}\" with arguments \"{3}\" and " "\"{4}\" for option {0}" @@ -242,55 +251,55 @@ msgstr "" "erreur inattendue \"{1}\" dans la fonction \"{2}\" avec les arguments " "\"{3}\" et \"{4}\" pour l'option {0}" -#: tiramisu/autolib.py:976 +#: tiramisu/autolib.py:1017 msgid "unexpected error \"{1}\" in function \"{2}\" for option {0}" msgstr "erreur inattendue \"{1}\" dans la fonction \"{2}\" pour l'option {0}" -#: tiramisu/config.py:448 tiramisu/config.py:471 tiramisu/config.py:815 -#: tiramisu/config.py:824 +#: tiramisu/config.py:458 tiramisu/config.py:481 tiramisu/config.py:843 +#: tiramisu/config.py:852 msgid "option name \"{0}\" is not unique in {1}" msgstr "le nom de l'option \"{0}\" n'est pas unique dans {1}" -#: tiramisu/config.py:709 +#: tiramisu/config.py:736 msgid "there is no option description for this config (may be GroupConfig)" msgstr "" "il n'y a pas d'option description trouvé pour cette config (peut être un " "GroupConfig)" -#: tiramisu/config.py:1080 tiramisu/option/optiondescription.py:74 +#: tiramisu/config.py:1109 tiramisu/option/optiondescription.py:78 msgid "option description seems to be part of an other config" msgstr "l'option description semble faire parti d'une autre config" -#: tiramisu/config.py:1242 +#: tiramisu/config.py:1271 msgid "parent of {0} not already exists" msgstr "le parent de {0} n'existe plus" -#: tiramisu/config.py:1289 +#: tiramisu/config.py:1318 msgid "cannot set leadership object has root optiondescription" msgstr "ne peut assigner un objet leadership comme optiondescription racine" -#: tiramisu/config.py:1292 +#: tiramisu/config.py:1321 msgid "cannot set dynoptiondescription object has root optiondescription" msgstr "" "ne peut assigner un objet dynoptiondescription comme optiondescription racine" -#: tiramisu/config.py:1339 +#: tiramisu/config.py:1368 msgid "child must be a Config, GroupConfig, MixConfig or MetaConfig" msgstr "l'enfant doit être une Config, GroupConfig, MixConfig ou MetaConfig" -#: tiramisu/config.py:1348 +#: tiramisu/config.py:1377 msgid "config name must be uniq in groupconfig for \"{0}\"" msgstr "le nom d'un config doit être unique dans un groupconfig pour \"{0}\"" -#: tiramisu/config.py:1557 +#: tiramisu/config.py:1586 msgid "unknown config \"{}\"" msgstr "config \"{}\" inconnue" -#: tiramisu/config.py:1582 +#: tiramisu/config.py:1611 msgid "child must be a Config, MixConfig or MetaConfig" msgstr "l'enfant doit être une Config, MixConfig ou MetaConfig" -#: tiramisu/config.py:1617 +#: tiramisu/config.py:1646 msgid "" "force_default, force_default_if_same or force_dont_change_value cannot be " "set with only_config" @@ -298,120 +307,124 @@ msgstr "" "force_default, force_default_if_same ou force_dont_change_value ne peuvent " "pas être spécifié avec only_config" -#: tiramisu/config.py:1627 +#: tiramisu/config.py:1656 msgid "force_default and force_dont_change_value cannot be set together" msgstr "" "force_default et force_dont_change_value ne peuvent pas être mis ensemble" -#: tiramisu/config.py:1778 +#: tiramisu/config.py:1807 msgid "config name must be uniq in groupconfig for {0}" msgstr "le nom de la config doit être unique dans un groupconfig pour {0}" -#: tiramisu/config.py:1823 +#: tiramisu/config.py:1852 msgid "config added has no name, the name is mandatory" msgstr "la config ajoutée n'a pas de nom, le nom est obligatoire" -#: tiramisu/config.py:1828 +#: tiramisu/config.py:1857 msgid "config name \"{0}\" is not uniq in groupconfig \"{1}\"" msgstr "" "le nom d'un config \"{0}\" n'est pas unique dans le groupconfig \"{1}\"" -#: tiramisu/config.py:1846 tiramisu/config.py:1852 +#: tiramisu/config.py:1875 tiramisu/config.py:1881 msgid "cannot find the config {0}" msgstr "ne peut pas trouver la config {0}" -#: tiramisu/config.py:1878 +#: tiramisu/config.py:1907 msgid "MetaConfig with optiondescription must have string has child, not {}" msgstr "" "MetaConfig avec une optiondescription doit avoir un nom comme enfant, pas {}" -#: tiramisu/config.py:1890 +#: tiramisu/config.py:1919 msgid "child must be a Config or MetaConfig" msgstr "enfant doit être une une Config ou une MetaConfig" -#: tiramisu/config.py:1895 +#: tiramisu/config.py:1923 +msgid "children in MetaConfig must have name" +msgstr "les enfants dans une MetaConfig doivent avoir un nom" + +#: tiramisu/config.py:1926 msgid "all config in metaconfig must have the same optiondescription" msgstr "" "toutes les configs d'une metaconfig doivent avoir la même optiondescription" -#: tiramisu/config.py:1912 +#: tiramisu/config.py:1943 msgid "metaconfig must have the same optiondescription" msgstr "metaconfig doivent avoir la même optiondescription" -#: tiramisu/error.py:48 +#: tiramisu/error.py:49 msgid "and" msgstr "et" -#: tiramisu/error.py:50 +#: tiramisu/error.py:51 msgid "or" msgstr "ou" -#: tiramisu/error.py:72 +#: tiramisu/error.py:71 msgid " {} " msgstr " {} " -#: tiramisu/error.py:141 +#: tiramisu/error.py:140 msgid "cannot modify the {0} {1} at index \"{2}\" because {3} is frozen" msgstr "ne peut modifier {0} {1} à l'index \"{2}\" parce que {3} est frozen" -#: tiramisu/error.py:145 +#: tiramisu/error.py:144 msgid "cannot modify the {0} {1} at index \"{2}\" because is frozen" msgstr "ne peut modifier {0} {1} à l'index \"{2}\" parce que frozen" -#: tiramisu/error.py:150 +#: tiramisu/error.py:149 msgid "cannot modify the {0} {1} because {2} is frozen" msgstr "ne peut modifier {0} {1} parce que {2} est frozen" -#: tiramisu/error.py:152 +#: tiramisu/error.py:151 msgid "cannot modify the {0} {1} because is frozen" msgstr "ne peut modifier {0} {1} parce qu'est frozen" -#: tiramisu/error.py:156 +#: tiramisu/error.py:155 msgid "cannot access to {0} {1} at index \"{2}\" because {3} hasn't value" msgstr "" "ne peut accéder à {0} {1} à l'index \"{2}\" parce que {3} n'a pas de valeur" -#: tiramisu/error.py:160 +#: tiramisu/error.py:159 msgid "{0} {1} at index \"{2}\" is mandatory but hasn't value" msgstr "{0} {1} à l'index \"{2}\" est obligatoire mais n'a pas de valeur" -#: tiramisu/error.py:163 +#: tiramisu/error.py:162 msgid "cannot access to {0} {1} because {2} hasn't value" msgstr "ne peut accéder à {0} {1} parce que {2} n'a pas de valeur" -#: tiramisu/error.py:165 +#: tiramisu/error.py:164 msgid "{0} {1} is mandatory but hasn't value" msgstr "{0} {1} est obligatoire mais n'a pas de valeur" -#: tiramisu/error.py:169 +#: tiramisu/error.py:168 msgid "cannot access to {0} {1} at index \"{2}\" because {3} has {4} {5}" msgstr "ne peut accéder à {0} {1} à l'index \"{2}\" parce que {3} a {4} {5}" -#: tiramisu/error.py:173 +#: tiramisu/error.py:172 msgid "cannot access to {0} {1} at index \"{2}\" because has {3} {4}" msgstr "ne peut accéder à {0} {1} à l'index \"{2}\" parce que a {3} {4}" -#: tiramisu/error.py:178 +#: tiramisu/error.py:177 msgid "cannot access to {0} {1} because {2} has {3} {4}" msgstr "ne peut accéder à {0} {1} parce que {2} a {3} {4}" -#: tiramisu/error.py:180 +#: tiramisu/error.py:179 msgid "cannot access to {0} {1} because has {2} {3}" msgstr "ne peut accéder à l'{0} {1} à cause {2} {3}" -#: tiramisu/error.py:183 +#: tiramisu/error.py:182 msgid "property" msgstr "de la propriété" -#: tiramisu/error.py:185 +#: tiramisu/error.py:184 msgid "properties" msgstr "des propriétés" -#: tiramisu/error.py:200 +#: tiramisu/error.py:199 msgid "cannot access to \"{0}\" it's a dynamic option" msgstr "ne peut accéder à \"{0}\" c'est une option dynamique" -#: tiramisu/error.py:201 +#: tiramisu/error.py:200 msgid "\"{0}\" is not an option" msgstr "\"{0}\" n'est pas une option" @@ -466,62 +479,62 @@ msgstr "" "la fonction \"{0}\" ne doit pas retourner une liste (\"{1}\") pour l'option " "suiveuse {2}" -#: tiramisu/error.py:341 +#: tiramisu/error.py:342 msgid "invalid value" msgstr "valeur invalide" -#: tiramisu/error.py:351 +#: tiramisu/error.py:352 msgid "attention, \"{0}\" could be an invalid {1} for {2}" msgstr "attention, \"{0}\" peut être un {1} invalide pour {2}" -#: tiramisu/error.py:355 +#: tiramisu/error.py:356 msgid "attention, \"{0}\" could be an invalid {1} for {2} at index \"{3}\"" msgstr "" "attention, \"{0}\" peut être un {1} invalide pour {2} à l'index \"{3}\"" -#: tiramisu/error.py:378 +#: tiramisu/error.py:379 msgid "{2} has an invalid {1}" msgstr "{2} a un {1} invalide" -#: tiramisu/error.py:380 +#: tiramisu/error.py:381 msgid "{2} at index \"{3}\" has an invalid {1}" -msgstr "{2} à l'index a un invalide {1}" +msgstr "{2} à l'index \"{3}\" a un invalide {1}" -#: tiramisu/error.py:383 tiramisu/error.py:394 +#: tiramisu/error.py:384 tiramisu/error.py:395 msgid "\"{0}\" is an invalid {1} for {2}" msgstr "\"{0}\" est une valeur invalide pour l'option {2} de type {1}" -#: tiramisu/error.py:385 +#: tiramisu/error.py:386 msgid "\"{0}\" is an invalid {1} for {2} at index \"{3}\"" msgstr "\"{0}\" est un {1} invalide pour {2} à l'index \"{3}\"" -#: tiramisu/function.py:65 +#: tiramisu/function.py:64 msgid "network \"{0}\" ({1}) does not match with this netmask" msgstr "le réseau \"{0}\" (\"{1}\") ne correspond pas avec le masque de réseau" -#: tiramisu/function.py:83 +#: tiramisu/function.py:82 msgid "IP \"{0}\" ({1}) with this netmask is in fact a network address" msgstr "" "l'IP \"{0}\" ({1}) avec ce masque réseau est en faite une adresse réseau" -#: tiramisu/function.py:88 +#: tiramisu/function.py:87 msgid "IP \"{0}\" ({1}) with this netmask is in fact a broadcast address" msgstr "" "l'IP \"{0}\" ({1}) avec ce masque réseau est en faite une adresse de " "broadcast" -#: tiramisu/function.py:106 +#: tiramisu/function.py:105 msgid "broadcast invalid with network {0} ({1}) and netmask {2} ({3})" msgstr "" "le broadcast est invalide pour le réseau {0} ({1}) et le masque réseau {2} " "({3})" -#: tiramisu/function.py:134 +#: tiramisu/function.py:133 msgid "this IP is not in network {network[\"value\"]} ({network[\"name\"]})" msgstr "" "cette IP n'est pas dans le réseau {network[\"value\"]} ({network[\"name\"]})" -#: tiramisu/function.py:136 +#: tiramisu/function.py:135 msgid "" "this IP is not in network {network[\"value\"]} ({network[\"name\"]}) with " "netmask {netmask[\"value\"]} ({netmask[\"name\"]})" @@ -529,20 +542,20 @@ msgstr "" "cette IP n'est pas dans le réseau {network[\"value\"]} ({network[\"name\"]}) " "avec le netmask {netmask[\"value\"]} ({netmask[\"name\"]})" -#: tiramisu/function.py:143 +#: tiramisu/function.py:142 msgid "this IP with the network {0} ({1}) is in fact a network address" msgstr "cette IP avec le réseau {0} ({1}) est un faite une adresse réseau" -#: tiramisu/function.py:148 +#: tiramisu/function.py:147 msgid "this IP with the network {0} ({1}) is in fact a broadcast address" msgstr "" "cette IP avec le réseau {0} ({1}) est en faite une adresse de broadcast" -#: tiramisu/function.py:165 +#: tiramisu/function.py:164 msgid "value is identical to {0}" msgstr "la valeur est identique à {0}" -#: tiramisu/function.py:400 +#: tiramisu/function.py:399 msgid "" "unexpected value in calc_value with join attribute \"{0}\" with invalid " "length \"{1}\"" @@ -550,109 +563,109 @@ msgstr "" "valeur inattendue dans calc_value avec l'attribute join \"{0}\" avec la " "longueur invalide \"{1}\"" -#: tiramisu/function.py:527 +#: tiramisu/function.py:526 msgid "unexpected {0} condition_operator in calc_value" msgstr "condition_operator {0} inattendue dans la fonction calc_value" -#: tiramisu/function.py:591 +#: tiramisu/function.py:590 msgid "unexpected condition_{0} must have \"todict\" argument" msgstr "condition_{0} inattendu, doit avoir l'argument \"todict\"" -#: tiramisu/function.py:602 +#: tiramisu/function.py:601 msgid "the value of \"{0}\" is {1}" msgstr "la valeur de \"{0}\" est {1}" -#: tiramisu/function.py:604 +#: tiramisu/function.py:603 msgid "the value of \"{0}\" is not {1}" msgstr "la valeur de \"{0}\" n'est pas {1}" -#: tiramisu/option/baseoption.py:76 tiramisu/option/symlinkoption.py:43 +#: tiramisu/option/baseoption.py:81 tiramisu/option/symlinkoption.py:42 msgid "\"{0}\" is an invalid name for an option" msgstr "\"{0}\" est un nom invalide pour une option" -#: tiramisu/option/baseoption.py:89 +#: tiramisu/option/baseoption.py:94 msgid "invalid properties type {0} for {1}, must be a frozenset" msgstr "type {0} invalide pour des propriétés pour {1}, doit être un frozenset" -#: tiramisu/option/baseoption.py:102 +#: tiramisu/option/baseoption.py:107 msgid "invalid property type {0} for {1}, must be a string or a Calculation" msgstr "" "type {0} invalide pour des propriétés pour {1}, doit être des caractères ou " "un objet Calculation" -#: tiramisu/option/baseoption.py:253 +#: tiramisu/option/baseoption.py:258 msgid "information's item for {0} not found: \"{1}\"" msgstr "item pour {0} dans les informations non trouvée: \"{1}\"" -#: tiramisu/option/baseoption.py:271 +#: tiramisu/option/baseoption.py:276 msgid "'{0}' ({1}) object attribute '{2}' is read-only" msgstr "l'attribut {2} de l'objet '{0}' ({1}) est en lecture seule" -#: tiramisu/option/baseoption.py:312 +#: tiramisu/option/baseoption.py:317 msgid "\"{}\" ({}) object attribute \"{}\" is read-only" msgstr "\"{}\" ({}) l'attribut de l'objet \"{}\" est en lecture seule" -#: tiramisu/option/baseoption.py:324 +#: tiramisu/option/baseoption.py:329 msgid "{0} not part of any Config" msgstr "{0} ne fait pas parti d'une Config" -#: tiramisu/option/booloption.py:33 +#: tiramisu/option/booloption.py:32 msgid "boolean" msgstr "booléen" -#: tiramisu/option/broadcastoption.py:34 +#: tiramisu/option/broadcastoption.py:33 msgid "broadcast address" msgstr "adresse de broadcast" -#: tiramisu/option/choiceoption.py:41 +#: tiramisu/option/choiceoption.py:40 msgid "choice" msgstr "choix" -#: tiramisu/option/choiceoption.py:51 +#: tiramisu/option/choiceoption.py:50 msgid "values must be a tuple or a calculation for {0}" msgstr "les valeurs doivent être un tuple ou une fonction pour {0}" -#: tiramisu/option/choiceoption.py:74 +#: tiramisu/option/choiceoption.py:73 msgid "the calculated values \"{0}\" for \"{1}\" is not a list" msgstr "les valeurs calculées \"{0}\" pour \"{1}\" n'est pas une liste" -#: tiramisu/option/choiceoption.py:106 +#: tiramisu/option/choiceoption.py:105 msgid "only \"{0}\" is allowed" msgstr "seul \"{0}\" est autorisé" -#: tiramisu/option/choiceoption.py:108 +#: tiramisu/option/choiceoption.py:107 msgid "only {0} are allowed" msgstr "seul {0} sont autorisées" -#: tiramisu/option/dateoption.py:34 +#: tiramisu/option/dateoption.py:33 msgid "date" msgstr "date" -#: tiramisu/option/domainnameoption.py:46 +#: tiramisu/option/domainnameoption.py:45 msgid "domain name" msgstr "nom de domaine" -#: tiramisu/option/domainnameoption.py:68 +#: tiramisu/option/domainnameoption.py:67 msgid "unknown type {0} for hostname" msgstr "type_ inconnu {0} pour le nom d'hôte" -#: tiramisu/option/domainnameoption.py:71 +#: tiramisu/option/domainnameoption.py:70 msgid "allow_ip must be a boolean" msgstr "allow_ip doit être un booléen" -#: tiramisu/option/domainnameoption.py:73 +#: tiramisu/option/domainnameoption.py:72 msgid "allow_cidr_network must be a boolean" msgstr "allow_cidr_network doit être un booléen" -#: tiramisu/option/domainnameoption.py:75 +#: tiramisu/option/domainnameoption.py:74 msgid "allow_without_dot must be a boolean" msgstr "allow_without_dot doit être un booléen" -#: tiramisu/option/domainnameoption.py:77 +#: tiramisu/option/domainnameoption.py:76 msgid "allow_startswith_dot must be a boolean" msgstr "allow_startswith_dot doit être un booléen" -#: tiramisu/option/domainnameoption.py:88 +#: tiramisu/option/domainnameoption.py:87 msgid "" "must start with lowercase characters followed by lowercase characters, " "number, \"-\" and \".\" characters are allowed" @@ -660,7 +673,7 @@ msgstr "" "doit démarrer par un caractère en minuscule suivi par des caractères en " "minuscule, des nombres, \"-\" et \".\" sont autorisés" -#: tiramisu/option/domainnameoption.py:91 +#: tiramisu/option/domainnameoption.py:90 msgid "" "must start with lowercase characters followed by lowercase characters, " "number, \"-\" and \".\" characters are recommanded" @@ -668,7 +681,7 @@ msgstr "" "doit démarrer par un caractère en minuscule suivi par des caractères en " "minuscule, des nombres, \"-\" et \".\" sont recommandés" -#: tiramisu/option/domainnameoption.py:96 +#: tiramisu/option/domainnameoption.py:95 msgid "" "must start with lowercase characters followed by lowercase characters, " "number and \"-\" characters are allowed" @@ -676,7 +689,7 @@ msgstr "" "doit démarrer par un caractère en minuscule suivi par des caractères en " "minuscule, des nombres et \"-\" sont autorisés" -#: tiramisu/option/domainnameoption.py:99 +#: tiramisu/option/domainnameoption.py:98 msgid "" "must start with lowercase characters followed by lowercase characters, " "number and \"-\" characters are recommanded" @@ -684,54 +697,54 @@ msgstr "" "doit démarrer par un caractère en minuscule suivi par des caractères en " "minuscule, des nombres et\"-\" sont recommandés" +#: tiramisu/option/domainnameoption.py:102 #: tiramisu/option/domainnameoption.py:103 -#: tiramisu/option/domainnameoption.py:104 msgid "could be a IP, otherwise {}" msgstr "peut être une IP, autrement {}" -#: tiramisu/option/domainnameoption.py:149 +#: tiramisu/option/domainnameoption.py:148 msgid "invalid length (min 1)" msgstr "longueur invalide (min 1)" -#: tiramisu/option/domainnameoption.py:152 +#: tiramisu/option/domainnameoption.py:151 msgid "invalid length (max {0})" msgstr "longueur invalide (max {0})" -#: tiramisu/option/domainnameoption.py:158 +#: tiramisu/option/domainnameoption.py:157 msgid "must have dot" msgstr "doit avoir un point" -#: tiramisu/option/domainnameoption.py:160 +#: tiramisu/option/domainnameoption.py:159 msgid "invalid length (max 255)" msgstr "longueur invalide (max 255)" -#: tiramisu/option/domainnameoption.py:180 +#: tiramisu/option/domainnameoption.py:179 msgid "DNS resolution failed" msgstr "la résolution DNS a échoué" -#: tiramisu/option/domainnameoption.py:183 +#: tiramisu/option/domainnameoption.py:182 msgid "error resolving DNS: {1}" msgstr "erreur de résolution DNS : {1}" -#: tiramisu/option/domainnameoption.py:190 +#: tiramisu/option/domainnameoption.py:189 msgid "must not be an IP" msgstr "ne doit pas être une IP" -#: tiramisu/option/domainnameoption.py:213 +#: tiramisu/option/domainnameoption.py:212 msgid "some characters are uppercase" msgstr "des caractères sont en majuscule" -#: tiramisu/option/dynoptiondescription.py:139 +#: tiramisu/option/dynoptiondescription.py:138 msgid "DynOptionDescription identifiers for option {0}, is not a list ({1})" msgstr "" "les identifiants de la DynOptionDescription pour l'option {0}, n'est pas une " "liste ({1})" -#: tiramisu/option/dynoptiondescription.py:149 +#: tiramisu/option/dynoptiondescription.py:148 msgid "invalid identifier \"{}\" for option {}" msgstr "identifiant \"{}\" invalide pour l'option \"{}\"" -#: tiramisu/option/dynoptiondescription.py:163 +#: tiramisu/option/dynoptiondescription.py:162 msgid "" "DynOptionDescription \"{0}\" identifiers return a list with same values " "\"{1}\"" @@ -739,36 +752,36 @@ msgstr "" "Les identifiants de la DynOptionDescription \"{0}\" retourne une liste avec " "des valeurs identiques \"{1}\"" -#: tiramisu/option/emailoption.py:37 +#: tiramisu/option/emailoption.py:36 msgid "email address" msgstr "adresse mail" -#: tiramisu/option/filenameoption.py:35 +#: tiramisu/option/filenameoption.py:34 msgid "file name" msgstr "nom de fichier" -#: tiramisu/option/filenameoption.py:48 +#: tiramisu/option/filenameoption.py:47 msgid "types parameter must be a list, not \"{0}\" for \"{1}\"" msgstr "" "le paramètre types doit être une liste, au lieu de \"{0}\" pour \"{1}\"" -#: tiramisu/option/filenameoption.py:68 +#: tiramisu/option/filenameoption.py:67 msgid "must starts with \"/\"" msgstr "doit débuter par \"/\"" -#: tiramisu/option/filenameoption.py:79 -msgid "directory" -msgstr "répertoire" - -#: tiramisu/option/filenameoption.py:79 +#: tiramisu/option/filenameoption.py:78 msgid "file" msgstr "fichier" -#: tiramisu/option/filenameoption.py:83 +#: tiramisu/option/filenameoption.py:78 +msgid "directory" +msgstr "répertoire" + +#: tiramisu/option/filenameoption.py:82 msgid "cannot find this {0}" msgstr "ce {0} est introuvable" -#: tiramisu/option/floatoption.py:33 +#: tiramisu/option/floatoption.py:32 msgid "float" msgstr "nombre flottant" @@ -796,35 +809,35 @@ msgstr "valeur devrait être inférieur à \"{0}\"" msgid "value must be less than \"{0}\"" msgstr "valeur doit être inférieur à \"{0}\"" -#: tiramisu/option/ipoption.py:34 +#: tiramisu/option/ipoption.py:33 msgid "IP" msgstr "IP" -#: tiramisu/option/ipoption.py:61 +#: tiramisu/option/ipoption.py:60 msgid "it's in fact a network address" msgstr "c'est un faite une adresse réseau" -#: tiramisu/option/ipoption.py:63 +#: tiramisu/option/ipoption.py:62 msgid "it's in fact a broacast address" msgstr "c'est en faite une adresse de broadcast" -#: tiramisu/option/ipoption.py:75 +#: tiramisu/option/ipoption.py:74 msgid "CIDR address must have a \"/\"" msgstr "une adresse CIDR doit avoir un \"/\"" -#: tiramisu/option/ipoption.py:84 +#: tiramisu/option/ipoption.py:83 msgid "shouldn't be reserved IP" msgstr "ne devrait pas être une IP réservée" -#: tiramisu/option/ipoption.py:86 +#: tiramisu/option/ipoption.py:85 msgid "mustn't be reserved IP" msgstr "ne doit pas être une IP réservée" -#: tiramisu/option/ipoption.py:90 +#: tiramisu/option/ipoption.py:89 msgid "should be private IP" msgstr "devrait être une IP privée" -#: tiramisu/option/ipoption.py:92 +#: tiramisu/option/ipoption.py:91 msgid "must be private IP" msgstr "doit être une IP privée" @@ -834,32 +847,32 @@ msgstr "" "une option leader et une option suiveuse sont obligatoires dans une option " "leadership \"{}\"" -#: tiramisu/option/leadership.py:97 +#: tiramisu/option/leadership.py:100 msgid "leadership {0} shall not have a symlinkoption" msgstr "une option leadership \"{0}\" ne devrait pas avoir de symlinkoption" -#: tiramisu/option/leadership.py:104 +#: tiramisu/option/leadership.py:107 msgid "leadership {0} shall not have a subgroup" msgstr "une option leadership \"{0}\" ne devrait pas avoir de sous-groupe" -#: tiramisu/option/leadership.py:110 +#: tiramisu/option/leadership.py:113 msgid "" "only multi option are allowed in leadership {0} but option {1} is not a multi" msgstr "" "seules des options multiples sont autorisées dans l'option leadership {0} " "alors que l'option {1} n'est pas une option multiple" -#: tiramisu/option/leadership.py:137 +#: tiramisu/option/leadership.py:140 msgid "not allowed default value for follower option {0} in leadership {1}" msgstr "" "valeur par défaut non autorisée pour l'option suiveuse {0} dans l'option " "leadership {1}" -#: tiramisu/option/macoption.py:35 +#: tiramisu/option/macoption.py:34 msgid "mac address" msgstr "adresse MAC" -#: tiramisu/option/netmaskoption.py:33 +#: tiramisu/option/netmaskoption.py:32 msgid "netmask address" msgstr "adresse netmask" @@ -912,173 +925,173 @@ msgstr "" "valeur invalide pour default_multi \"{0}\" pour l'option {1}, doit être une " "liste pour une submulti" -#: tiramisu/option/option.py:298 +#: tiramisu/option/option.py:304 msgid "the value \"{}\" is not unique" msgstr "la valeur \"{}\" n'est pas unique" -#: tiramisu/option/option.py:361 +#: tiramisu/option/option.py:367 msgid "it must not be a list" msgstr "il ne doit pas être une liste" -#: tiramisu/option/option.py:416 tiramisu/option/option.py:454 +#: tiramisu/option/option.py:422 tiramisu/option/option.py:460 msgid "it must be a list" msgstr "il doit être une liste" -#: tiramisu/option/option.py:444 +#: tiramisu/option/option.py:450 msgid "which \"{}\" must be a list of list" msgstr "lequel \"{}\" doit être une liste de liste" -#: tiramisu/option/optiondescription.py:111 -#: tiramisu/option/optiondescription.py:117 +#: tiramisu/option/optiondescription.py:115 +#: tiramisu/option/optiondescription.py:121 msgid "\"{0}\" option description" msgstr "l'option description \"{0}\"" -#: tiramisu/option/optiondescription.py:115 -#: tiramisu/option/optiondescription.py:121 +#: tiramisu/option/optiondescription.py:119 +#: tiramisu/option/optiondescription.py:125 msgid "root option description" msgstr "l'option description racine" -#: tiramisu/option/optiondescription.py:123 +#: tiramisu/option/optiondescription.py:127 msgid "option \"{0}\" is include in {1} but is also in {2}" msgstr "l'option \"{0}\" est incluse dans {1} mais est aussi dans {2}" -#: tiramisu/option/optiondescription.py:315 +#: tiramisu/option/optiondescription.py:319 msgid "children in optiondescription \"{}\" must be a list" msgstr "les enfants d'une optiondescription \"{}\" doivent être une liste" -#: tiramisu/option/optiondescription.py:344 +#: tiramisu/option/optiondescription.py:348 msgid "the option name \"{0}\" is duplicate in \"{1}\"" msgstr "le nom de l'option \"{0}\" est dupliqué dans \"{1}\"" -#: tiramisu/option/optiondescription.py:395 +#: tiramisu/option/optiondescription.py:399 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/optiondescription.py:400 +#: tiramisu/option/optiondescription.py:404 msgid "group_type: {0} not allowed" msgstr "group_type : {0} non autorisé" -#: tiramisu/option/passwordoption.py:34 +#: tiramisu/option/passwordoption.py:33 msgid "password" msgstr "mot de passe" -#: tiramisu/option/passwordoption.py:51 +#: tiramisu/option/passwordoption.py:50 msgid "at least {0} characters are required" msgstr "au moins {0} caractères sont requis" -#: tiramisu/option/passwordoption.py:54 +#: tiramisu/option/passwordoption.py:53 msgid "maximum {0} characters required" msgstr "un maximum de {0} caractères sont autorisés" -#: tiramisu/option/passwordoption.py:59 +#: tiramisu/option/passwordoption.py:58 msgid "must not have the characters {0}" msgstr "ne doit pas contenir les caractères {0}" -#: tiramisu/option/permissionsoption.py:40 +#: tiramisu/option/permissionsoption.py:39 msgid "unix file permissions" msgstr "permissions de fichier Unix" -#: tiramisu/option/permissionsoption.py:53 +#: tiramisu/option/permissionsoption.py:52 msgid "only 3 or 4 octal digits are allowed" msgstr "seulement 3 ou 4 chiffres octal sont autorisées" -#: tiramisu/option/permissionsoption.py:64 +#: tiramisu/option/permissionsoption.py:63 msgid "user" msgstr "nom d'utilisateur" -#: tiramisu/option/permissionsoption.py:65 -#: tiramisu/option/permissionsoption.py:67 +#: tiramisu/option/permissionsoption.py:64 +#: tiramisu/option/permissionsoption.py:66 msgid "group" msgstr "groupe" -#: tiramisu/option/permissionsoption.py:68 +#: tiramisu/option/permissionsoption.py:67 msgid "other" msgstr "autre" -#: tiramisu/option/permissionsoption.py:69 +#: tiramisu/option/permissionsoption.py:68 msgid "{0} has more right than {1}" msgstr "{0} a plus de droit que {1}" -#: tiramisu/option/permissionsoption.py:72 +#: tiramisu/option/permissionsoption.py:71 msgid "too weak" msgstr "trop simple" -#: tiramisu/option/portoption.py:40 +#: tiramisu/option/portoption.py:39 msgid "port" msgstr "port" -#: tiramisu/option/portoption.py:78 +#: tiramisu/option/portoption.py:77 msgid "inconsistency in allowed range" msgstr "inconsistence dans la plage autorisée" -#: tiramisu/option/portoption.py:83 +#: tiramisu/option/portoption.py:82 msgid "max value is empty" msgstr "la valeur maximum est vide" -#: tiramisu/option/portoption.py:96 +#: tiramisu/option/portoption.py:95 msgid "range must have two values only" msgstr "un rang doit avoir deux valeurs seulement" -#: tiramisu/option/portoption.py:99 +#: tiramisu/option/portoption.py:98 msgid "first port in range must be smaller than the second one" msgstr "le premier port d'un rang doit être plus petit que le second" -#: tiramisu/option/portoption.py:125 +#: tiramisu/option/portoption.py:124 msgid "should be between {0} and {1}" msgstr "devrait être une nombre entre {0} et {1}" -#: tiramisu/option/portoption.py:127 +#: tiramisu/option/portoption.py:126 msgid "must be between {0} and {1}" msgstr "doit être une nombre entre {0} et {1}" -#: tiramisu/option/stroption.py:34 +#: tiramisu/option/stroption.py:33 msgid "string" msgstr "texte" -#: tiramisu/option/stroption.py:42 +#: tiramisu/option/stroption.py:41 msgid "it's not a string" msgstr "ce n'est pas une chaîne de caractères" -#: tiramisu/option/symlinkoption.py:50 +#: tiramisu/option/symlinkoption.py:49 msgid "" "malformed symlink second parameters must be an option for \"{0}\", not {1}" msgstr "" "symlink mal formé, le second paramètre doit être une option pour \"{0}\", " "not {1}" -#: tiramisu/option/urloption.py:40 +#: tiramisu/option/urloption.py:39 msgid "URL" msgstr "URL" -#: tiramisu/option/urloption.py:93 +#: tiramisu/option/urloption.py:92 msgid "must start with http:// or https://" msgstr "doit débuter par http:// ou https://" -#: tiramisu/option/urloption.py:118 +#: tiramisu/option/urloption.py:117 msgid "the port \"{0}\" is invalid: {1}" msgstr "le port \"{0}\" est invalide : {1}" -#: tiramisu/option/urloption.py:125 +#: tiramisu/option/urloption.py:124 msgid "the domain \"{0}\" is invalid: {1}" msgstr "le domaine \"{0}\" est invalide : {1}" -#: tiramisu/option/urloption.py:129 +#: tiramisu/option/urloption.py:128 msgid "must ends with a valid resource name" msgstr "doit finir par un nom de ressource valide" -#: tiramisu/option/usernameoption.py:36 +#: tiramisu/option/usernameoption.py:35 msgid "unix username" msgstr "nom d'utilisateur Unix" -#: tiramisu/option/usernameoption.py:44 +#: tiramisu/option/usernameoption.py:43 msgid "unix groupname" msgstr "nom de groupe Unix" -#: tiramisu/setting.py:281 +#: tiramisu/setting.py:280 msgid "can't rebind {0}" msgstr "ne peut redéfinir ({0})" -#: tiramisu/setting.py:288 +#: tiramisu/setting.py:287 msgid "can't unbind {0}" msgstr "ne peut supprimer ({0})" @@ -1132,17 +1145,17 @@ msgstr "" msgid "unknown action {}" msgstr "action inconnue {}" -#: tiramisu/value.py:609 tiramisu/value.py:900 +#: tiramisu/value.py:619 tiramisu/value.py:910 msgid "set owner \"{0}\" is forbidden" msgstr "assigner l'utilisateur \"{0}\" est interdit" -#: tiramisu/value.py:616 +#: tiramisu/value.py:626 msgid "\"{0}\" is a default value, so we cannot change owner to \"{1}\"" msgstr "" "\"{0}\" est une valeur par défaut, donc ne peut changer d'utilisateur à " "\"{1}\"" -#: tiramisu/value.py:886 +#: tiramisu/value.py:896 msgid "information's item not found \"{}\"" msgstr "l'information de l'objet ne sont pas trouvé \"{}\"" diff --git a/locale/tiramisu.pot b/locale/tiramisu.pot index 67f8289..752d387 100644 --- a/locale/tiramisu.pot +++ b/locale/tiramisu.pot @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2025-12-22 08:50+0100\n" +"POT-Creation-Date: 2026-06-21 17:13+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -35,83 +35,91 @@ msgstr "" msgid "Commands:" msgstr "" -#: tiramisu/api.py:119 tiramisu/api.py:2089 +#: tiramisu/api.py:119 tiramisu/api.py:2282 msgid "please specify a valid sub function ({0}.{1})" msgstr "" -#: tiramisu/api.py:209 +#: tiramisu/api.py:243 msgid "please do not specify index ({0}.{1})" msgstr "" -#: tiramisu/api.py:214 tiramisu/api.py:1061 +#: tiramisu/api.py:254 msgid "please specify index with a follower option ({0}.{1})" msgstr "" -#: tiramisu/api.py:237 +#: tiramisu/api.py:277 msgid "please specify a valid sub function ({0}.{1}): {2}" msgstr "" -#: tiramisu/api.py:498 +#: tiramisu/api.py:551 msgid "optiondescription" msgstr "" -#: tiramisu/api.py:503 +#: tiramisu/api.py:556 msgid "symlink" msgstr "" -#: tiramisu/api.py:608 +#: tiramisu/api.py:717 msgid "the option {0} is not a dynamic option, cannot get identifiers with only_self parameter to True" msgstr "" -#: tiramisu/api.py:698 +#: tiramisu/api.py:822 msgid "cannot get option from a follower symlink without index" msgstr "" -#: tiramisu/api.py:797 +#: tiramisu/api.py:924 msgid "cannot add this property: \"{0}\"" msgstr "" -#: tiramisu/api.py:824 +#: tiramisu/api.py:951 msgid "cannot remove option's property \"{0}\", use permissive instead in option \"{1}\"" msgstr "" -#: tiramisu/api.py:828 +#: tiramisu/api.py:955 msgid "cannot find \"{0}\" in option \"{1}\"" msgstr "" -#: tiramisu/api.py:833 +#: tiramisu/api.py:960 msgid "cannot remove option's property \"{0}\", use permissive instead in option \"{1}\" at index \"{2}\"" msgstr "" -#: tiramisu/api.py:837 +#: tiramisu/api.py:964 msgid "cannot find \"{0}\" in option \"{1}\" at index \"{2}\"" msgstr "" -#: tiramisu/api.py:881 +#: tiramisu/api.py:1008 msgid "cannot find \"{0}\"" msgstr "" -#: tiramisu/api.py:1078 +#: tiramisu/api.py:1202 +msgid "please specify index with a follower option ({0})" +msgstr "" + +#: tiramisu/api.py:1214 msgid "only multi value has defaultmulti" msgstr "" -#: tiramisu/api.py:1243 +#: tiramisu/api.py:1274 +msgid "return_type is not valid for a optiondescription" +msgstr "" + +#: tiramisu/api.py:1415 msgid "please specify a valid sub function ({0}.{1}) for {2}" msgstr "" -#: tiramisu/api.py:1649 +#: tiramisu/api.py:1850 msgid "properties must be a frozenset" msgstr "" -#: tiramisu/api.py:1653 tiramisu/api.py:1680 +#: tiramisu/api.py:1854 tiramisu/api.py:1881 msgid "unknown when {} (must be in append or remove)" msgstr "" -#: tiramisu/api.py:1666 tiramisu/api.py:1690 tiramisu/config.py:1782 +#: tiramisu/api.py:1867 tiramisu/api.py:1891 tiramisu/config.py:1811 msgid "unknown type {}" msgstr "" -#: tiramisu/api.py:2061 +#: tiramisu/api.py:2254 msgid "do not use unrestraint, nowarnings or forcepermissive together" msgstr "" @@ -140,235 +148,239 @@ msgid "param must have a boolean not a {} for raisepropertyerror" msgstr "" #: tiramisu/autolib.py:160 -msgid "identifiers in ParamDynOption must be a list, not {0}" +msgid "identifiers in ParamDynOption must be a list or a calculation, not {0}" msgstr "" #: tiramisu/autolib.py:166 msgid "optional in ParamDynOption must be a boolean, not {0}" msgstr "" -#: tiramisu/autolib.py:222 +#: tiramisu/autolib.py:224 msgid "cannot add option in information after creating config" msgstr "" -#: tiramisu/autolib.py:225 +#: tiramisu/autolib.py:227 msgid "cannot redefine option in information" msgstr "" -#: tiramisu/autolib.py:229 +#: tiramisu/autolib.py:231 msgid "option in ParamInformation cannot be a symlinkoption" msgstr "" -#: tiramisu/autolib.py:232 +#: tiramisu/autolib.py:234 msgid "option in ParamInformation cannot be a follower" msgstr "" -#: tiramisu/autolib.py:235 +#: tiramisu/autolib.py:237 msgid "option in ParamInformation cannot be a dynamic option" msgstr "" -#: tiramisu/autolib.py:296 +#: tiramisu/autolib.py:298 msgid "first argument ({0}) must be a function" msgstr "" -#: tiramisu/autolib.py:300 +#: tiramisu/autolib.py:302 msgid "help_function ({0}) must be a function" msgstr "" -#: tiramisu/autolib.py:471 tiramisu/autolib.py:527 +#: tiramisu/autolib.py:473 tiramisu/autolib.py:529 msgid "the option {0} is used in a calculation but is invalid ({1})" msgstr "" -#: tiramisu/autolib.py:484 tiramisu/autolib.py:541 tiramisu/autolib.py:591 +#: tiramisu/autolib.py:486 tiramisu/autolib.py:543 tiramisu/autolib.py:593 msgid "unable to get value for calculating {0}, {1}" msgstr "" -#: tiramisu/autolib.py:520 +#: tiramisu/autolib.py:522 msgid "unable to carry out a calculation for {0}, {1}" msgstr "" -#: tiramisu/autolib.py:566 +#: tiramisu/autolib.py:568 msgid "cannot find information for {0}, {1} is a dynamic option" msgstr "" -#: tiramisu/autolib.py:606 +#: tiramisu/autolib.py:608 msgid "option {0} is not a dynoptiondescription or in a dynoptiondescription" msgstr "" -#: tiramisu/autolib.py:726 +#: tiramisu/autolib.py:743 msgid "cannot calculate arguments for {0}, {1} with identifier \"{2}\", there is no identifiers" msgstr "" -#: tiramisu/autolib.py:738 +#: tiramisu/autolib.py:755 msgid "cannot calculate arguments for {0}, {1} with identifier \"{2}\", list of valid identifiers: {3}" msgstr "" -#: tiramisu/autolib.py:853 +#: tiramisu/autolib.py:879 msgid "the follower {0} must have index in carry_out_calculation!" msgstr "" -#: tiramisu/autolib.py:966 +#: tiramisu/autolib.py:1007 msgid "unexpected error \"{1}\" in function \"{2}\" with arguments \"{3}\" and \"{4}\" for option {0}" msgstr "" -#: tiramisu/autolib.py:976 +#: tiramisu/autolib.py:1017 msgid "unexpected error \"{1}\" in function \"{2}\" for option {0}" msgstr "" -#: tiramisu/config.py:448 tiramisu/config.py:471 tiramisu/config.py:815 -#: tiramisu/config.py:824 +#: tiramisu/config.py:458 tiramisu/config.py:481 tiramisu/config.py:843 +#: tiramisu/config.py:852 msgid "option name \"{0}\" is not unique in {1}" msgstr "" -#: tiramisu/config.py:709 +#: tiramisu/config.py:736 msgid "there is no option description for this config (may be GroupConfig)" msgstr "" -#: tiramisu/config.py:1080 tiramisu/option/optiondescription.py:74 +#: tiramisu/config.py:1109 tiramisu/option/optiondescription.py:78 msgid "option description seems to be part of an other config" msgstr "" -#: tiramisu/config.py:1242 +#: tiramisu/config.py:1271 msgid "parent of {0} not already exists" msgstr "" -#: tiramisu/config.py:1289 +#: tiramisu/config.py:1318 msgid "cannot set leadership object has root optiondescription" msgstr "" -#: tiramisu/config.py:1292 +#: tiramisu/config.py:1321 msgid "cannot set dynoptiondescription object has root optiondescription" msgstr "" -#: tiramisu/config.py:1339 +#: tiramisu/config.py:1368 msgid "child must be a Config, GroupConfig, MixConfig or MetaConfig" msgstr "" -#: tiramisu/config.py:1348 +#: tiramisu/config.py:1377 msgid "config name must be uniq in groupconfig for \"{0}\"" msgstr "" -#: tiramisu/config.py:1557 +#: tiramisu/config.py:1586 msgid "unknown config \"{}\"" msgstr "" -#: tiramisu/config.py:1582 +#: tiramisu/config.py:1611 msgid "child must be a Config, MixConfig or MetaConfig" msgstr "" -#: tiramisu/config.py:1617 +#: tiramisu/config.py:1646 msgid "force_default, force_default_if_same or force_dont_change_value cannot be set with only_config" msgstr "" -#: tiramisu/config.py:1627 +#: tiramisu/config.py:1656 msgid "force_default and force_dont_change_value cannot be set together" msgstr "" -#: tiramisu/config.py:1778 +#: tiramisu/config.py:1807 msgid "config name must be uniq in groupconfig for {0}" msgstr "" -#: tiramisu/config.py:1823 +#: tiramisu/config.py:1852 msgid "config added has no name, the name is mandatory" msgstr "" -#: tiramisu/config.py:1828 +#: tiramisu/config.py:1857 msgid "config name \"{0}\" is not uniq in groupconfig \"{1}\"" msgstr "" -#: tiramisu/config.py:1846 tiramisu/config.py:1852 +#: tiramisu/config.py:1875 tiramisu/config.py:1881 msgid "cannot find the config {0}" msgstr "" -#: tiramisu/config.py:1878 +#: tiramisu/config.py:1907 msgid "MetaConfig with optiondescription must have string has child, not {}" msgstr "" -#: tiramisu/config.py:1890 +#: tiramisu/config.py:1919 msgid "child must be a Config or MetaConfig" msgstr "" -#: tiramisu/config.py:1895 +#: tiramisu/config.py:1923 +msgid "children in MetaConfig must have name" +msgstr "" + +#: tiramisu/config.py:1926 msgid "all config in metaconfig must have the same optiondescription" msgstr "" -#: tiramisu/config.py:1912 +#: tiramisu/config.py:1943 msgid "metaconfig must have the same optiondescription" msgstr "" -#: tiramisu/error.py:48 +#: tiramisu/error.py:49 msgid "and" msgstr "" -#: tiramisu/error.py:50 +#: tiramisu/error.py:51 msgid "or" msgstr "" -#: tiramisu/error.py:72 +#: tiramisu/error.py:71 msgid " {} " msgstr "" -#: tiramisu/error.py:141 +#: tiramisu/error.py:140 msgid "cannot modify the {0} {1} at index \"{2}\" because {3} is frozen" msgstr "" -#: tiramisu/error.py:145 +#: tiramisu/error.py:144 msgid "cannot modify the {0} {1} at index \"{2}\" because is frozen" msgstr "" -#: tiramisu/error.py:150 +#: tiramisu/error.py:149 msgid "cannot modify the {0} {1} because {2} is frozen" msgstr "" -#: tiramisu/error.py:152 +#: tiramisu/error.py:151 msgid "cannot modify the {0} {1} because is frozen" msgstr "" -#: tiramisu/error.py:156 +#: tiramisu/error.py:155 msgid "cannot access to {0} {1} at index \"{2}\" because {3} hasn't value" msgstr "" -#: tiramisu/error.py:160 +#: tiramisu/error.py:159 msgid "{0} {1} at index \"{2}\" is mandatory but hasn't value" msgstr "" -#: tiramisu/error.py:163 +#: tiramisu/error.py:162 msgid "cannot access to {0} {1} because {2} hasn't value" msgstr "" -#: tiramisu/error.py:165 +#: tiramisu/error.py:164 msgid "{0} {1} is mandatory but hasn't value" msgstr "" -#: tiramisu/error.py:169 +#: tiramisu/error.py:168 msgid "cannot access to {0} {1} at index \"{2}\" because {3} has {4} {5}" msgstr "" -#: tiramisu/error.py:173 +#: tiramisu/error.py:172 msgid "cannot access to {0} {1} at index \"{2}\" because has {3} {4}" msgstr "" -#: tiramisu/error.py:178 +#: tiramisu/error.py:177 msgid "cannot access to {0} {1} because {2} has {3} {4}" msgstr "" -#: tiramisu/error.py:180 +#: tiramisu/error.py:179 msgid "cannot access to {0} {1} because has {2} {3}" msgstr "" -#: tiramisu/error.py:183 +#: tiramisu/error.py:182 msgid "property" msgstr "" -#: tiramisu/error.py:185 +#: tiramisu/error.py:184 msgid "properties" msgstr "" -#: tiramisu/error.py:200 +#: tiramisu/error.py:199 msgid "cannot access to \"{0}\" it's a dynamic option" msgstr "" -#: tiramisu/error.py:201 +#: tiramisu/error.py:200 msgid "\"{0}\" is not an option" msgstr "" @@ -404,268 +416,268 @@ msgstr "" msgid "the \"{0}\" function must not return a list (\"{1}\") for the follower option {2}" msgstr "" -#: tiramisu/error.py:341 +#: tiramisu/error.py:342 msgid "invalid value" msgstr "" -#: tiramisu/error.py:351 +#: tiramisu/error.py:352 msgid "attention, \"{0}\" could be an invalid {1} for {2}" msgstr "" -#: tiramisu/error.py:355 +#: tiramisu/error.py:356 msgid "attention, \"{0}\" could be an invalid {1} for {2} at index \"{3}\"" msgstr "" -#: tiramisu/error.py:378 +#: tiramisu/error.py:379 msgid "{2} has an invalid {1}" msgstr "" -#: tiramisu/error.py:380 +#: tiramisu/error.py:381 msgid "{2} at index \"{3}\" has an invalid {1}" msgstr "" -#: tiramisu/error.py:383 tiramisu/error.py:394 +#: tiramisu/error.py:384 tiramisu/error.py:395 msgid "\"{0}\" is an invalid {1} for {2}" msgstr "" -#: tiramisu/error.py:385 +#: tiramisu/error.py:386 msgid "\"{0}\" is an invalid {1} for {2} at index \"{3}\"" msgstr "" -#: tiramisu/function.py:65 +#: tiramisu/function.py:64 msgid "network \"{0}\" ({1}) does not match with this netmask" msgstr "" -#: tiramisu/function.py:83 +#: tiramisu/function.py:82 msgid "IP \"{0}\" ({1}) with this netmask is in fact a network address" msgstr "" -#: tiramisu/function.py:88 +#: tiramisu/function.py:87 msgid "IP \"{0}\" ({1}) with this netmask is in fact a broadcast address" msgstr "" -#: tiramisu/function.py:106 +#: tiramisu/function.py:105 msgid "broadcast invalid with network {0} ({1}) and netmask {2} ({3})" msgstr "" -#: tiramisu/function.py:134 +#: tiramisu/function.py:133 msgid "this IP is not in network {network[\"value\"]} ({network[\"name\"]})" msgstr "" -#: tiramisu/function.py:136 +#: tiramisu/function.py:135 msgid "this IP is not in network {network[\"value\"]} ({network[\"name\"]}) with netmask {netmask[\"value\"]} ({netmask[\"name\"]})" msgstr "" -#: tiramisu/function.py:143 +#: tiramisu/function.py:142 msgid "this IP with the network {0} ({1}) is in fact a network address" msgstr "" -#: tiramisu/function.py:148 +#: tiramisu/function.py:147 msgid "this IP with the network {0} ({1}) is in fact a broadcast address" msgstr "" -#: tiramisu/function.py:165 +#: tiramisu/function.py:164 msgid "value is identical to {0}" msgstr "" -#: tiramisu/function.py:400 +#: tiramisu/function.py:399 msgid "unexpected value in calc_value with join attribute \"{0}\" with invalid length \"{1}\"" msgstr "" -#: tiramisu/function.py:527 +#: tiramisu/function.py:526 msgid "unexpected {0} condition_operator in calc_value" msgstr "" -#: tiramisu/function.py:591 +#: tiramisu/function.py:590 msgid "unexpected condition_{0} must have \"todict\" argument" msgstr "" -#: tiramisu/function.py:602 +#: tiramisu/function.py:601 msgid "the value of \"{0}\" is {1}" msgstr "" -#: tiramisu/function.py:604 +#: tiramisu/function.py:603 msgid "the value of \"{0}\" is not {1}" msgstr "" -#: tiramisu/option/baseoption.py:76 tiramisu/option/symlinkoption.py:43 +#: tiramisu/option/baseoption.py:81 tiramisu/option/symlinkoption.py:42 msgid "\"{0}\" is an invalid name for an option" msgstr "" -#: tiramisu/option/baseoption.py:89 +#: tiramisu/option/baseoption.py:94 msgid "invalid properties type {0} for {1}, must be a frozenset" msgstr "" -#: tiramisu/option/baseoption.py:102 +#: tiramisu/option/baseoption.py:107 msgid "invalid property type {0} for {1}, must be a string or a Calculation" msgstr "" -#: tiramisu/option/baseoption.py:253 +#: tiramisu/option/baseoption.py:258 msgid "information's item for {0} not found: \"{1}\"" msgstr "" -#: tiramisu/option/baseoption.py:271 +#: tiramisu/option/baseoption.py:276 msgid "'{0}' ({1}) object attribute '{2}' is read-only" msgstr "" -#: tiramisu/option/baseoption.py:312 +#: tiramisu/option/baseoption.py:317 msgid "\"{}\" ({}) object attribute \"{}\" is read-only" msgstr "" -#: tiramisu/option/baseoption.py:324 +#: tiramisu/option/baseoption.py:329 msgid "{0} not part of any Config" msgstr "" -#: tiramisu/option/booloption.py:33 +#: tiramisu/option/booloption.py:32 msgid "boolean" msgstr "" -#: tiramisu/option/broadcastoption.py:34 +#: tiramisu/option/broadcastoption.py:33 msgid "broadcast address" msgstr "" -#: tiramisu/option/choiceoption.py:41 +#: tiramisu/option/choiceoption.py:40 msgid "choice" msgstr "" -#: tiramisu/option/choiceoption.py:51 +#: tiramisu/option/choiceoption.py:50 msgid "values must be a tuple or a calculation for {0}" msgstr "" -#: tiramisu/option/choiceoption.py:74 +#: tiramisu/option/choiceoption.py:73 msgid "the calculated values \"{0}\" for \"{1}\" is not a list" msgstr "" -#: tiramisu/option/choiceoption.py:106 +#: tiramisu/option/choiceoption.py:105 msgid "only \"{0}\" is allowed" msgstr "" -#: tiramisu/option/choiceoption.py:108 +#: tiramisu/option/choiceoption.py:107 msgid "only {0} are allowed" msgstr "" -#: tiramisu/option/dateoption.py:34 +#: tiramisu/option/dateoption.py:33 msgid "date" msgstr "" -#: tiramisu/option/domainnameoption.py:46 +#: tiramisu/option/domainnameoption.py:45 msgid "domain name" msgstr "" -#: tiramisu/option/domainnameoption.py:68 +#: tiramisu/option/domainnameoption.py:67 msgid "unknown type {0} for hostname" msgstr "" -#: tiramisu/option/domainnameoption.py:71 +#: tiramisu/option/domainnameoption.py:70 msgid "allow_ip must be a boolean" msgstr "" -#: tiramisu/option/domainnameoption.py:73 +#: tiramisu/option/domainnameoption.py:72 msgid "allow_cidr_network must be a boolean" msgstr "" -#: tiramisu/option/domainnameoption.py:75 +#: tiramisu/option/domainnameoption.py:74 msgid "allow_without_dot must be a boolean" msgstr "" -#: tiramisu/option/domainnameoption.py:77 +#: tiramisu/option/domainnameoption.py:76 msgid "allow_startswith_dot must be a boolean" msgstr "" -#: tiramisu/option/domainnameoption.py:88 +#: tiramisu/option/domainnameoption.py:87 msgid "must start with lowercase characters followed by lowercase characters, number, \"-\" and \".\" characters are allowed" msgstr "" -#: tiramisu/option/domainnameoption.py:91 +#: tiramisu/option/domainnameoption.py:90 msgid "must start with lowercase characters followed by lowercase characters, number, \"-\" and \".\" characters are recommanded" msgstr "" -#: tiramisu/option/domainnameoption.py:96 +#: tiramisu/option/domainnameoption.py:95 msgid "must start with lowercase characters followed by lowercase characters, number and \"-\" characters are allowed" msgstr "" -#: tiramisu/option/domainnameoption.py:99 +#: tiramisu/option/domainnameoption.py:98 msgid "must start with lowercase characters followed by lowercase characters, number and \"-\" characters are recommanded" msgstr "" +#: tiramisu/option/domainnameoption.py:102 #: tiramisu/option/domainnameoption.py:103 -#: tiramisu/option/domainnameoption.py:104 msgid "could be a IP, otherwise {}" msgstr "" -#: tiramisu/option/domainnameoption.py:149 +#: tiramisu/option/domainnameoption.py:148 msgid "invalid length (min 1)" msgstr "" -#: tiramisu/option/domainnameoption.py:152 +#: tiramisu/option/domainnameoption.py:151 msgid "invalid length (max {0})" msgstr "" -#: tiramisu/option/domainnameoption.py:158 +#: tiramisu/option/domainnameoption.py:157 msgid "must have dot" msgstr "" -#: tiramisu/option/domainnameoption.py:160 +#: tiramisu/option/domainnameoption.py:159 msgid "invalid length (max 255)" msgstr "" -#: tiramisu/option/domainnameoption.py:180 +#: tiramisu/option/domainnameoption.py:179 msgid "DNS resolution failed" msgstr "" -#: tiramisu/option/domainnameoption.py:183 +#: tiramisu/option/domainnameoption.py:182 msgid "error resolving DNS: {1}" msgstr "" -#: tiramisu/option/domainnameoption.py:190 +#: tiramisu/option/domainnameoption.py:189 msgid "must not be an IP" msgstr "" -#: tiramisu/option/domainnameoption.py:213 +#: tiramisu/option/domainnameoption.py:212 msgid "some characters are uppercase" msgstr "" -#: tiramisu/option/dynoptiondescription.py:139 +#: tiramisu/option/dynoptiondescription.py:138 msgid "DynOptionDescription identifiers for option {0}, is not a list ({1})" msgstr "" -#: tiramisu/option/dynoptiondescription.py:149 +#: tiramisu/option/dynoptiondescription.py:148 msgid "invalid identifier \"{}\" for option {}" msgstr "" -#: tiramisu/option/dynoptiondescription.py:163 +#: tiramisu/option/dynoptiondescription.py:162 msgid "DynOptionDescription \"{0}\" identifiers return a list with same values \"{1}\"" msgstr "" -#: tiramisu/option/emailoption.py:37 +#: tiramisu/option/emailoption.py:36 msgid "email address" msgstr "" -#: tiramisu/option/filenameoption.py:35 +#: tiramisu/option/filenameoption.py:34 msgid "file name" msgstr "" -#: tiramisu/option/filenameoption.py:48 +#: tiramisu/option/filenameoption.py:47 msgid "types parameter must be a list, not \"{0}\" for \"{1}\"" msgstr "" -#: tiramisu/option/filenameoption.py:68 +#: tiramisu/option/filenameoption.py:67 msgid "must starts with \"/\"" msgstr "" -#: tiramisu/option/filenameoption.py:79 -msgid "directory" -msgstr "" - -#: tiramisu/option/filenameoption.py:79 +#: tiramisu/option/filenameoption.py:78 msgid "file" msgstr "" -#: tiramisu/option/filenameoption.py:83 +#: tiramisu/option/filenameoption.py:78 +msgid "directory" +msgstr "" + +#: tiramisu/option/filenameoption.py:82 msgid "cannot find this {0}" msgstr "" -#: tiramisu/option/floatoption.py:33 +#: tiramisu/option/floatoption.py:32 msgid "float" msgstr "" @@ -693,35 +705,35 @@ msgstr "" msgid "value must be less than \"{0}\"" msgstr "" -#: tiramisu/option/ipoption.py:34 +#: tiramisu/option/ipoption.py:33 msgid "IP" msgstr "" -#: tiramisu/option/ipoption.py:61 +#: tiramisu/option/ipoption.py:60 msgid "it's in fact a network address" msgstr "" -#: tiramisu/option/ipoption.py:63 +#: tiramisu/option/ipoption.py:62 msgid "it's in fact a broacast address" msgstr "" -#: tiramisu/option/ipoption.py:75 +#: tiramisu/option/ipoption.py:74 msgid "CIDR address must have a \"/\"" msgstr "" -#: tiramisu/option/ipoption.py:84 +#: tiramisu/option/ipoption.py:83 msgid "shouldn't be reserved IP" msgstr "" -#: tiramisu/option/ipoption.py:86 +#: tiramisu/option/ipoption.py:85 msgid "mustn't be reserved IP" msgstr "" -#: tiramisu/option/ipoption.py:90 +#: tiramisu/option/ipoption.py:89 msgid "should be private IP" msgstr "" -#: tiramisu/option/ipoption.py:92 +#: tiramisu/option/ipoption.py:91 msgid "must be private IP" msgstr "" @@ -729,27 +741,27 @@ msgstr "" msgid "a leader and a follower are mandatories in leadership \"{}\"" msgstr "" -#: tiramisu/option/leadership.py:97 +#: tiramisu/option/leadership.py:100 msgid "leadership {0} shall not have a symlinkoption" msgstr "" -#: tiramisu/option/leadership.py:104 +#: tiramisu/option/leadership.py:107 msgid "leadership {0} shall not have a subgroup" msgstr "" -#: tiramisu/option/leadership.py:110 +#: tiramisu/option/leadership.py:113 msgid "only multi option are allowed in leadership {0} but option {1} is not a multi" msgstr "" -#: tiramisu/option/leadership.py:137 +#: tiramisu/option/leadership.py:140 msgid "not allowed default value for follower option {0} in leadership {1}" msgstr "" -#: tiramisu/option/macoption.py:35 +#: tiramisu/option/macoption.py:34 msgid "mac address" msgstr "" -#: tiramisu/option/netmaskoption.py:33 +#: tiramisu/option/netmaskoption.py:32 msgid "netmask address" msgstr "" @@ -797,170 +809,170 @@ msgstr "" msgid "invalid default_multi value \"{0}\" for option {1}, must be a list for a submulti" msgstr "" -#: tiramisu/option/option.py:298 +#: tiramisu/option/option.py:304 msgid "the value \"{}\" is not unique" msgstr "" -#: tiramisu/option/option.py:361 +#: tiramisu/option/option.py:367 msgid "it must not be a list" msgstr "" -#: tiramisu/option/option.py:416 tiramisu/option/option.py:454 +#: tiramisu/option/option.py:422 tiramisu/option/option.py:460 msgid "it must be a list" msgstr "" -#: tiramisu/option/option.py:444 +#: tiramisu/option/option.py:450 msgid "which \"{}\" must be a list of list" msgstr "" -#: tiramisu/option/optiondescription.py:111 -#: tiramisu/option/optiondescription.py:117 -msgid "\"{0}\" option description" -msgstr "" - #: tiramisu/option/optiondescription.py:115 #: tiramisu/option/optiondescription.py:121 +msgid "\"{0}\" option description" +msgstr "" + +#: tiramisu/option/optiondescription.py:119 +#: tiramisu/option/optiondescription.py:125 msgid "root option description" msgstr "" -#: tiramisu/option/optiondescription.py:123 +#: tiramisu/option/optiondescription.py:127 msgid "option \"{0}\" is include in {1} but is also in {2}" msgstr "" -#: tiramisu/option/optiondescription.py:315 +#: tiramisu/option/optiondescription.py:319 msgid "children in optiondescription \"{}\" must be a list" msgstr "" -#: tiramisu/option/optiondescription.py:344 +#: tiramisu/option/optiondescription.py:348 msgid "the option name \"{0}\" is duplicate in \"{1}\"" msgstr "" -#: tiramisu/option/optiondescription.py:395 +#: tiramisu/option/optiondescription.py:399 msgid "cannot change group_type if already set (old {0}, new {1})" msgstr "" -#: tiramisu/option/optiondescription.py:400 +#: tiramisu/option/optiondescription.py:404 msgid "group_type: {0} not allowed" msgstr "" -#: tiramisu/option/passwordoption.py:34 +#: tiramisu/option/passwordoption.py:33 msgid "password" msgstr "" -#: tiramisu/option/passwordoption.py:51 +#: tiramisu/option/passwordoption.py:50 msgid "at least {0} characters are required" msgstr "" -#: tiramisu/option/passwordoption.py:54 +#: tiramisu/option/passwordoption.py:53 msgid "maximum {0} characters required" msgstr "" -#: tiramisu/option/passwordoption.py:59 +#: tiramisu/option/passwordoption.py:58 msgid "must not have the characters {0}" msgstr "" -#: tiramisu/option/permissionsoption.py:40 +#: tiramisu/option/permissionsoption.py:39 msgid "unix file permissions" msgstr "" -#: tiramisu/option/permissionsoption.py:53 +#: tiramisu/option/permissionsoption.py:52 msgid "only 3 or 4 octal digits are allowed" msgstr "" -#: tiramisu/option/permissionsoption.py:64 +#: tiramisu/option/permissionsoption.py:63 msgid "user" msgstr "" -#: tiramisu/option/permissionsoption.py:65 -#: tiramisu/option/permissionsoption.py:67 +#: tiramisu/option/permissionsoption.py:64 +#: tiramisu/option/permissionsoption.py:66 msgid "group" msgstr "" -#: tiramisu/option/permissionsoption.py:68 +#: tiramisu/option/permissionsoption.py:67 msgid "other" msgstr "" -#: tiramisu/option/permissionsoption.py:69 +#: tiramisu/option/permissionsoption.py:68 msgid "{0} has more right than {1}" msgstr "" -#: tiramisu/option/permissionsoption.py:72 +#: tiramisu/option/permissionsoption.py:71 msgid "too weak" msgstr "" -#: tiramisu/option/portoption.py:40 +#: tiramisu/option/portoption.py:39 msgid "port" msgstr "" -#: tiramisu/option/portoption.py:78 +#: tiramisu/option/portoption.py:77 msgid "inconsistency in allowed range" msgstr "" -#: tiramisu/option/portoption.py:83 +#: tiramisu/option/portoption.py:82 msgid "max value is empty" msgstr "" -#: tiramisu/option/portoption.py:96 +#: tiramisu/option/portoption.py:95 msgid "range must have two values only" msgstr "" -#: tiramisu/option/portoption.py:99 +#: tiramisu/option/portoption.py:98 msgid "first port in range must be smaller than the second one" msgstr "" -#: tiramisu/option/portoption.py:125 +#: tiramisu/option/portoption.py:124 msgid "should be between {0} and {1}" msgstr "" -#: tiramisu/option/portoption.py:127 +#: tiramisu/option/portoption.py:126 msgid "must be between {0} and {1}" msgstr "" -#: tiramisu/option/stroption.py:34 +#: tiramisu/option/stroption.py:33 msgid "string" msgstr "" -#: tiramisu/option/stroption.py:42 +#: tiramisu/option/stroption.py:41 msgid "it's not a string" msgstr "" -#: tiramisu/option/symlinkoption.py:50 +#: tiramisu/option/symlinkoption.py:49 msgid "malformed symlink second parameters must be an option for \"{0}\", not {1}" msgstr "" -#: tiramisu/option/urloption.py:40 +#: tiramisu/option/urloption.py:39 msgid "URL" msgstr "" -#: tiramisu/option/urloption.py:93 +#: tiramisu/option/urloption.py:92 msgid "must start with http:// or https://" msgstr "" -#: tiramisu/option/urloption.py:118 +#: tiramisu/option/urloption.py:117 msgid "the port \"{0}\" is invalid: {1}" msgstr "" -#: tiramisu/option/urloption.py:125 +#: tiramisu/option/urloption.py:124 msgid "the domain \"{0}\" is invalid: {1}" msgstr "" -#: tiramisu/option/urloption.py:129 +#: tiramisu/option/urloption.py:128 msgid "must ends with a valid resource name" msgstr "" -#: tiramisu/option/usernameoption.py:36 +#: tiramisu/option/usernameoption.py:35 msgid "unix username" msgstr "" -#: tiramisu/option/usernameoption.py:44 +#: tiramisu/option/usernameoption.py:43 msgid "unix groupname" msgstr "" -#: tiramisu/setting.py:281 +#: tiramisu/setting.py:280 msgid "can't rebind {0}" msgstr "" -#: tiramisu/setting.py:288 +#: tiramisu/setting.py:287 msgid "can't unbind {0}" msgstr "" @@ -1008,15 +1020,15 @@ msgstr "" msgid "unknown action {}" msgstr "" -#: tiramisu/value.py:609 tiramisu/value.py:900 +#: tiramisu/value.py:619 tiramisu/value.py:910 msgid "set owner \"{0}\" is forbidden" msgstr "" -#: tiramisu/value.py:616 +#: tiramisu/value.py:626 msgid "\"{0}\" is a default value, so we cannot change owner to \"{1}\"" msgstr "" -#: tiramisu/value.py:886 +#: tiramisu/value.py:896 msgid "information's item not found \"{}\"" msgstr "" diff --git a/tiramisu/locale/fr/LC_MESSAGES/tiramisu.mo b/tiramisu/locale/fr/LC_MESSAGES/tiramisu.mo index e34e67bbe7b648aab6a82dc436e6fb8806ba1e9f..a801c460609f52ac83cf2d48fe0c2ecb8b397a2b 100644 GIT binary patch delta 5764 zcmYk=30zfG0>|-#f=faOh`6B-6p_pg)Nnx_0+aNb1&+>3x1m~ z`FYQU`Y$t-KS(PQ*ua=^e#YDhR2k#m^77=@WQ6iYD;_hTIl;OxoR0F!VK>ht-i^Bl#x zcnW*t8PxZhG&iOlW?~C`3fpsivxG`pI(DHBJd2Td0bAoe)Pb!zsw<|V22hIiaR-Lr z9_)w5u`vdVFnBGfS`!*Ejp9=!Czc6Z{hRE<3`kkPfl zRMbpm;{=?Cqwym4#@>ux11m#)Zvpzwhl#YS(aT^>7-wsOo$(<|MV(+4_QQ9vBmRO~ z%P5C2F*p*n7oNglxCY1LRn!FrbJY~AK%MsxY9{YsUyO=o{&m8M(bfrHMBV8QtcTyC zKEHAa?EXXU`PjRs^c+@_7p6^t*AR~7iaB(c+}IChOD9) ziyEMJCKc_0RjAFf1HWkILxy)_sgl!+Nrg9_>qCEja@eS1XccGT%3~FW?a@+bm z2AMpQh#J@g@+H|wACvHV8(PiY1iDdnB z!C}ZMnhH$Eji}>(M14PsMhHHNb(c@5zy>JV%;m!Bxz(BTs1MGxav!1BE zk%io(nT5K*M&ytAiXR+mLKCe1H1wxE6YoPW>O70ks}paeqP5$O4Az`P-nOPLx5Ych zv_#%1CJ~$9Xw;^hV)xIreGTi;zaQ)45!B3ng3n_lqvX_P13K`F9?ZYKaEA^(w?mj; z56(mOoB0{p2BtO7;v{{JnyF2wJGhJ*U_IV88em)GZEaFeYd#L0xE4$CJf>h4)0~Ve zdNKc+fzRpC$j&3%z%*erdIhJV*0>0{39}Blra6V9F{lr}P%sDez4tI2FXR1q7lSa6 zQHNj)48sR87@b}!8hM7@;X$qGY}A^)g*-`S8)|L8MBQO!>}m z0rdj<1s}$KY1ULP#=5ju;aFUa`urwp;ORV@nxR7MsOSGBDjn$9jk>@$*cLBiJ8U$- zvMcHivXGC=BGleFflcrXYA^hN%`j!4^~+~0I%%)M2&_h(=eqj2zKP{F7@WyRjdU|= z6W&HmZQNjMswd#1v{#|_$WIu9ZH5>#1Jf}N_aPsd_Cu}BScGx3=cATlE9!bz&>Kai zD_7N;XQI~Bjr!txWcJN@d=T3*?|QLhAWxF1Ks^n+aU$Np63iTKt?^-`%lMD59>+}7 zCSHyjz(*sPf1Tj|3~NdTpp*7248T38O>_`hW^>2ZIno-~T+~_~L4UlAy5Lo8guPi0 zZqf`uJ&sE-5MMgj=y5Mm=J^h&o_L z+5=HbRD$jCDDuZ#=Z9`|V3u`$FY5Shs%WZr;uClSc|y!+-Y%N*m8j?TL)#0e=l?Eh z?IXCF);bAuZ~;DxS1}kpJUS6L8(ZUYjKy~_8og(!IH;J%tPi442Mk7Cz=g@U05z~9 zsHttpv&AHtaBPA3*a@G*1l)$2flJsN1IJmLusw#+&cJ3|-{er~Ku0<1f^Xo{_%Y7F z^znR#`;gT#NfWGHy%+VEerEd{>W*8o6ScWIqS{5sn9Us2npYziHn*{>&KNeyI&m6m z2@YX*jD6f1`FQL@dph>U?U;_&uoot{teKgL@wB%fH*LN~9hbyOwRdJieh`Qhc+Yjvid+1Mpa<26c zkTlfsS?CR+Qb9#8h^6=tzK<>OSGzwn&-%PCwxT}|wYJaMZo(+qpJD*sKu!HE)b4LM znU@w$L=EsJw#DxG%s~>Pc(UF2y#q-?7`L zum$a3kq5wpOtGF0H_oA5g@dqrf%QHqFYsEs`2Zd1d~ggqW7t${0R2%jGQ)NoI%$88 ztd@DeWBt?X1x%uS1vPVVh1Oc9V^i8=>~%hRO!J;}~l5okcB8C~uoC z*bcSX9zpGi7g1}t8FhR$YV&EDIzR$ys>h?2b|q?H2QeDYq4tc|uh_cd6l_mN5r*Rm z^ur3G(w}H1R5VlnB_U)SIY@NU*NMurq}*4tHlC_4lD7#Hje{FZ@u6eDS%cKXnMYMa55tiHc zQn`uukqA;#w4rKBd`$(l?gQ+$HlxZlGMqFf3&{}O|L;WQW%3DmLycOc8}+}DViH8Y zA#2GB@+DC@OE!@UB$(t7y{uGzBy|W6kMA!udh`yELgJmxj}r1fGLNWKlUQ<94ay%x zkL5XXgUlqg%V`?goSDQ)_LGU^ujF&0a^Clo*ERlN*PpLh|HX6!kT=OG`@ zs`3iiOL&j?ey{%>^T>OoIT=k3#e4TnjyDk1@*JoiE>1Ve`;1;4K|BWmme^KKISwvKBldpU={z7Sc z(YA(sD&xs7q>Ow=s>lg)oU|a{l9ps0$tC|LACYNf15s&4yu1<3QsN>ijmX1fJy}53 zklJN}-S`>x0(yY_+3t(9?SiG`irszzlSxOimHdfZA|GoqR#JJKJVt8Db5stIXUG%e zEuyl_!fdk@Ge}*#J=azgklo}C`GBb0B}d6HGLmf8VvM2EfT+ZgdSnhsB0I@g(uTy4 zRYWC<{6uzko zx73wd=*e?Wc1$fRDRtz#rsq05uBo|IJ)&K8LmY+04woa_Rghg);3{<&da9PkL(63k3kmQKQu`W-E zqs)`*sCC7hLihAsPpQK-z0h6Ehn!<-)u<6Y{DT~YWola&u39)MrEz6QcC*U$*&CY{ w*Sf4HHkUCMxk?dBm`fdSF863U}1PZ!1gANe-Vw*UYD delta 5508 zcmZA434Bdg0>|-_NJ2zp6Ol+HK}e7g5)mR2LC2az>?LB4M5|*ROT5O?HiK3LMMs&T zGR9hAh9X)WONQz)Qf-P>RcUE#H7({d=J$X1>iEq0_`mNt_uY5zxo5f9dDZ3dWf#XK zf49|!@`!|zpK2SE?PAOsA00KuH_#Y2^urWvh%GP&!*MRg;d*R{mDmWs#y0o>+hPm8 zjKv|?2^S;xbC@GkJULK}oNKb(Jf1-P?ic%bOk-i$<@f13*Ejq7sti&jM zfLaUT5yte#UN{n0p>A*o)3FtI*LA0$Msf?LU}YrZuM2uKwVtpedeF{C9iNKraijhH zr}l9-=8Hix3FwAds16TCt$`J&j;}{A`~to4Dl+}%9_n}Xnmeo?_|dJF9B7Q{X$HFE zJWRu4%*A8&@kkzD9cYOffecK<0&IetuooUhjhqK3@zAC{YRwEnO~ptDl}swjQ5U#~ z{Kf>(8}&5Vb|A7LOd&?#Levm%#vXV9r(ZZ592fiJKzhr34e=zyhUc>BGe*%fEtPV^h!61LLW@W1kASEFJT7lHK+%x zMvX)bszYwPwfbxS$52V*z--hU9YEcv8sqU6YTHHfc$%VNs3(1u58bc=nKg3{dtwL^ ztKa3J&R>ao;#25~)##2FF@^h^D^!v(f?u(~%?OOZBCLaNq2{a%wKh&54`FViZVILFC!k&s2T(n~ zkG$+m1NNpm7>~S#O(trNCu17!#2HwF={Sxp(hc86J^58s$7+ySHBFNlf7X-9X8bj$ z3y{v5UC1@e6&!+%>GnXJhC1&!2I76Jk6vA@)g6LzHS(V3jG?^>H5C=88$Q5DOzmsUc^>LMv(cdw%c(HRrUtbe;^`jm7L$wY z6te=g8!9muU6_~Yn1`CK}>ILMIV=bZx)Or1|1-^lUumbgj0W@@jzNp_9p+V(M zIyX%RTO&Q*K}GxZb=#e&eP4;1^DC%1_T()z9&@l551=~UnS~OBeNY`8i!HGjo8mT% zz%%yoA2En_AX`n>cf?ZZMkNQ;vr^R1Rv`~>E@KEL47V0zCU&4*gc^Z&Fc?2aExx-L zfT1I--O&!CY4=9ma2oy&*Ww)Qf4^tB7zdUjvtc|(TC2GPo6+8A`vK~Sub~#z&vrXy z6z>e${ZMnh6&v9RY=>W=uItOn)fBA21iXjA`X+j`wH>-+XTDf~J@FtW<73pwB1U;BM@Q z7qA-!jI(Z-gKEEq+7%z6FP=mF?kf7BKMO`TYK~fC1MGHz?J9JH@m zMhxl+`l5zD8(F|+46eh!qDCNVqBT{^kkK}Kkaw1;KgpWwp{NJ>7_~cU=Ue}@OU`Hf z(>So50}*%=!_j-P)sDpw+5?b>y#uLA2v%P@m>6>9MY7g|#og>keCQ5{&1 zN%)Da=M=_2jRWaZti`bq^#oV3D`q@r4P7y6ZZ}{<++(*-VguUMs1dq_QTW(yM?G&X zwnWsF6kuDNk6K$h98{W6`3^OA?o+J`w8!?ehha1>MGf^njKSNeISt`$)f79T*2Hj( z!*v*er!Ww|M;BDNPhKLMh@&|lLx_s@Wi#SNdXhUtPpvoJ&xDtpv;4vK6h5-+Vku$Z zoVzFmS?JEfdUTdDTb|X~d2l!v%4TY>k#~tkp)F}au8>+pr9RP%N5eLdyie*7t&1mR z29Y7c979T<+z2Jr2QXGBaOUGG)KcpYw|T=)STt_d>$niNO!W2TqG*r zl9tXIJHmD=R+1ieTLhC{cDowKlT7Y!z9hp)9$87|kx$4fqVgSi;H+75s+Wk$j~2gv z{*zi?@;CcPy+M4YKV5hH)>F>5v}$OWF6^7 z4v=l}8cJoV*H>T}69(x0><{fIAVLiEB? zDJHX>HC8unA-&0d@(WQpLoO3fQbKBzXGs>>OWx7^tE?vlcE{JrWV?MEzaY9r7>OsNh{`l_PZfQ6LY1dVqo?Yso+klh4mn0t?vjmU zH#tP~cGHXL|I5GZ13zF8>14OBV>xjw