diff --git a/locale/fr/LC_MESSAGES/tiramisu.po b/locale/fr/LC_MESSAGES/tiramisu.po index eb8b124..f5ac667 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-02-07 07:55+0100\n" +"POT-Creation-Date: 2025-03-19 09:51+0100\n" "PO-Revision-Date: \n" "Last-Translator: Emmanuel Garette \n" "Language-Team: Tiramisu's team \n" @@ -34,7 +34,7 @@ msgstr "Ne peut avoir de warnings durant une validation" msgid "Commands:" msgstr "Commandes :" -#: tiramisu/api.py:111 tiramisu/api.py:1843 +#: tiramisu/api.py:111 tiramisu/api.py:1849 msgid "please specify a valid sub function ({0}.{1})" msgstr "veuillez spécifier une sous fonction valide ({0}.{1})" @@ -42,7 +42,7 @@ msgstr "veuillez spécifier une sous fonction valide ({0}.{1})" msgid "please do not specify index ({0}.{1})" msgstr "veuillez ne pas spécifier d'index ({0}.{1})" -#: tiramisu/api.py:201 tiramisu/api.py:847 +#: tiramisu/api.py:201 tiramisu/api.py:848 msgid "please specify index with a follower option ({0}.{1})" msgstr "veuillez spécifier un index avec une option suiveuse ({0}.{1})" @@ -94,31 +94,31 @@ msgstr "ne peut trouver \"{0}\" dans l'option \"{1}\" à l'index \"{2}\"" msgid "cannot find \"{0}\"" msgstr "ne peut trouver \"{0}\"" -#: tiramisu/api.py:811 +#: tiramisu/api.py:812 msgid "cannot reduce length of the leader {}" msgstr "il est impossible de réduire la longueur du leader \"{}\"" -#: tiramisu/api.py:864 +#: tiramisu/api.py:865 msgid "only multi value has defaultmulti" msgstr "seule les valeurs multiple a l'attribut defaultmulti" -#: tiramisu/api.py:1023 +#: tiramisu/api.py:1029 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:1410 +#: tiramisu/api.py:1416 msgid "properties must be a frozenset" msgstr "une propriété doit être de type frozenset" -#: tiramisu/api.py:1414 tiramisu/api.py:1441 +#: tiramisu/api.py:1420 tiramisu/api.py:1447 msgid "unknown when {} (must be in append or remove)" msgstr "value {} inconsistent (doit être append ou remove)" -#: tiramisu/api.py:1427 tiramisu/api.py:1451 tiramisu/config.py:1681 +#: tiramisu/api.py:1433 tiramisu/api.py:1457 tiramisu/config.py:1681 msgid "unknown type {}" msgstr "type inconnu {}" -#: tiramisu/api.py:1815 +#: tiramisu/api.py:1821 msgid "do not use unrestraint, nowarnings or forcepermissive together" msgstr "" "il ne faut pas utiliser unrestraint, nowarnings ou forcepermissive ensemble" @@ -181,7 +181,7 @@ msgstr "l'option dans ParamInformation ne peut pas être une option dynamique" #: tiramisu/autolib.py:279 msgid "first argument ({0}) must be a function" -msgstr "le premier argument ({0}à doit être une fonction" +msgstr "le premier argument ({0}) doit être une fonction" #: tiramisu/autolib.py:283 msgid "help_function ({0}) must be a function" @@ -373,31 +373,39 @@ msgid "cannot modify the {0} {1} because has {2} {3}" msgstr "ne peut modifier {0} \"{1}\" à cause {2} {3}" #: tiramisu/error.py:118 +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:120 +msgid "{0} {1} is mandatory but hasn't value" +msgstr "{0} {1} est obligatoire mais n'a pas de valeur" + +#: tiramisu/error.py:123 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:120 +#: tiramisu/error.py:125 msgid "cannot access to {0} {1} because has {2} {3}" msgstr "ne peut accéder à l'{0} {1} à cause {2} {3}" -#: tiramisu/error.py:192 +#: tiramisu/error.py:197 msgid "invalid value" msgstr "valeur invalide" -#: tiramisu/error.py:202 +#: tiramisu/error.py:207 msgid "attention, \"{0}\" could be an invalid {1} for \"{2}\"" msgstr "attention, \"{0}\" peut être un {1} invalide pour \"{2}\"" -#: tiramisu/error.py:204 +#: tiramisu/error.py:209 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:223 tiramisu/error.py:234 +#: tiramisu/error.py:228 tiramisu/error.py:239 msgid "\"{0}\" is an invalid {1} for \"{2}\"" msgstr "\"{0}\" est une valeur invalide pour l'option \"{2}\" de type {1}" -#: tiramisu/error.py:225 +#: tiramisu/error.py:230 msgid "\"{0}\" is an invalid {1} for \"{2}\" at index \"{3}\"" msgstr "\"{0}\" est un {1} invalide pour \"{2}\" à l'index \"{3}\"" @@ -480,25 +488,25 @@ msgstr "\"{0}\" est un nom invalide pour une option" 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:98 +#: tiramisu/option/baseoption.py:100 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:249 +#: tiramisu/option/baseoption.py:251 msgid "information's item for {0} not found: \"{1}\"" msgstr "item pour {0} dans les informations non trouvée: \"{1}\"" -#: tiramisu/option/baseoption.py:267 +#: tiramisu/option/baseoption.py:269 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:308 +#: tiramisu/option/baseoption.py:310 msgid "\"{}\" ({}) object attribute \"{}\" is read-only" msgstr "\"{}\" ({}) l'attribut de l'objet \"{}\" est en lecture seule" -#: tiramisu/option/baseoption.py:320 +#: tiramisu/option/baseoption.py:322 msgid "{0} not part of any Config" msgstr "{0} ne fait pas parti d'une Config" @@ -522,27 +530,27 @@ msgstr "seul \"{0}\" est autorisé" msgid "only {0} are allowed" msgstr "seul {0} sont autorisées" -#: tiramisu/option/domainnameoption.py:62 +#: 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:65 +#: tiramisu/option/domainnameoption.py:70 msgid "allow_ip must be a boolean" msgstr "allow_ip doit être un booléen" -#: tiramisu/option/domainnameoption.py:67 +#: 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:69 +#: 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:71 +#: 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:82 +#: tiramisu/option/domainnameoption.py:87 msgid "" "must start with lowercase characters followed by lowercase characters, " "number, \"-\" and \".\" characters are allowed" @@ -550,7 +558,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:85 +#: tiramisu/option/domainnameoption.py:90 msgid "" "must start with lowercase characters followed by lowercase characters, " "number, \"-\" and \".\" characters are recommanded" @@ -558,7 +566,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:90 +#: tiramisu/option/domainnameoption.py:95 msgid "" "must start with lowercase characters followed by lowercase characters, " "number and \"-\" characters are allowed" @@ -566,7 +574,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:93 +#: tiramisu/option/domainnameoption.py:98 msgid "" "must start with lowercase characters followed by lowercase characters, " "number and \"-\" characters are recommanded" @@ -574,40 +582,40 @@ 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:97 -#: tiramisu/option/domainnameoption.py:98 +#: tiramisu/option/domainnameoption.py:102 +#: tiramisu/option/domainnameoption.py:103 msgid "could be a IP, otherwise {}" msgstr "peut être une IP, autrement {}" -#: tiramisu/option/domainnameoption.py:143 +#: tiramisu/option/domainnameoption.py:148 msgid "invalid length (min 1)" msgstr "longueur invalide (min 1)" -#: tiramisu/option/domainnameoption.py:146 +#: tiramisu/option/domainnameoption.py:151 msgid "invalid length (max {0})" msgstr "longueur invalide (max {0})" -#: tiramisu/option/domainnameoption.py:152 +#: tiramisu/option/domainnameoption.py:157 msgid "must have dot" msgstr "doit avoir un point" -#: tiramisu/option/domainnameoption.py:154 +#: tiramisu/option/domainnameoption.py:159 msgid "invalid length (max 255)" msgstr "longueur invalide (max 255)" -#: tiramisu/option/domainnameoption.py:175 +#: tiramisu/option/domainnameoption.py:180 msgid "DNS resolution failed" msgstr "la résolution DNS a échoué" -#: tiramisu/option/domainnameoption.py:179 +#: tiramisu/option/domainnameoption.py:184 msgid "error resolving DNS: {1}" msgstr "erreur de résolution DNS : {1}" -#: tiramisu/option/domainnameoption.py:186 +#: tiramisu/option/domainnameoption.py:191 msgid "must not be an IP" msgstr "ne doit pas être une IP" -#: tiramisu/option/domainnameoption.py:209 +#: tiramisu/option/domainnameoption.py:214 msgid "some characters are uppercase" msgstr "des caractères sont en majuscule" @@ -650,6 +658,10 @@ msgstr "fichier" msgid "cannot find this {0}" msgstr "ce {0} est introuvable" +#: tiramisu/option/intoption.py:46 +msgid "which is not an integer" +msgstr "qui n'est pas un chiffre" + #: tiramisu/option/intoption.py:52 msgid "value should be equal or greater than \"{0}\"" msgstr "la valeur devrait être supérieur ou égal à {0}" @@ -774,19 +786,19 @@ msgstr "" "valeur invalide pour default_multi \"{0}\" pour l'option {1}, doit être une " "liste pour une submulti" -#: tiramisu/option/option.py:285 +#: tiramisu/option/option.py:291 msgid "the value \"{}\" is not unique" msgstr "la valeur de \"{}\" n'est pas unique" -#: tiramisu/option/option.py:347 +#: tiramisu/option/option.py:353 msgid "which must not be a list" msgstr "qui ne doit pas être une liste" -#: tiramisu/option/option.py:399 tiramisu/option/option.py:425 +#: tiramisu/option/option.py:405 tiramisu/option/option.py:431 msgid "which must be a list" msgstr "qui doit être une liste" -#: tiramisu/option/option.py:419 +#: tiramisu/option/option.py:425 msgid "which \"{}\" must be a list of list" msgstr "lequel \"{}\" doit être une liste de liste" @@ -869,27 +881,27 @@ msgstr "{0} a plus de droit que {1}" msgid "too weak" msgstr "trop simple" -#: tiramisu/option/portoption.py:74 +#: tiramisu/option/portoption.py:80 msgid "inconsistency in allowed range" msgstr "inconsistence dans la plage autorisée" -#: tiramisu/option/portoption.py:79 +#: tiramisu/option/portoption.py:85 msgid "max value is empty" msgstr "la valeur maximum est vide" -#: tiramisu/option/portoption.py:92 +#: tiramisu/option/portoption.py:98 msgid "range must have two values only" msgstr "un rang doit avoir deux valeurs seulement" -#: tiramisu/option/portoption.py:95 +#: tiramisu/option/portoption.py:101 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:121 +#: tiramisu/option/portoption.py:127 msgid "should be between {0} and {1}" msgstr "devrait être une nombre entre {0} et {1}" -#: tiramisu/option/portoption.py:123 +#: tiramisu/option/portoption.py:129 msgid "must be between {0} and {1}" msgstr "doit être une nombre entre {0} et {1}" @@ -904,31 +916,31 @@ msgstr "" "symlink mal formé, le second paramètre doit être une option pour \"{0}\", " "not {1}" -#: tiramisu/option/urloption.py:91 +#: tiramisu/option/urloption.py:92 msgid "must start with http:// or https://" msgstr "doit débuter par http:// ou https://" -#: tiramisu/option/urloption.py:116 +#: tiramisu/option/urloption.py:117 msgid "the port \"{0}\" is invalid: {1}" msgstr "le port \"{0}\" est invalide : {1}" -#: tiramisu/option/urloption.py:123 +#: tiramisu/option/urloption.py:124 msgid "the domain \"{0}\" is invalid: {1}" msgstr "le domaine \"{0}\" est invalide : {1}" -#: tiramisu/option/urloption.py:127 +#: tiramisu/option/urloption.py:128 msgid "must ends with a valid resource name" msgstr "doit finir par un nom de ressource valide" -#: tiramisu/setting.py:255 +#: tiramisu/setting.py:258 msgid "can't rebind {0}" msgstr "ne peut redéfinir ({0})" -#: tiramisu/setting.py:262 +#: tiramisu/setting.py:265 msgid "can't unbind {0}" msgstr "ne peut supprimer ({0})" -#: tiramisu/setting.py:464 +#: tiramisu/setting.py:467 msgid "" "invalid property type {type(new_prop)} for {subconfig.option.impl_getname()} " "with {prop.function.__name__} function" @@ -936,15 +948,15 @@ msgstr "" "type {type(new_prop)} de la propriété invalide pour la fonction {subconfig." "option.impl_getname()} with {prop.function.__name__}" -#: tiramisu/setting.py:476 +#: tiramisu/setting.py:479 msgid "leader cannot have \"{new_prop}\" property" msgstr "une option leader ne peu avoir la propriété \"{new_prop}\"" -#: tiramisu/setting.py:564 +#: tiramisu/setting.py:567 msgid "leader cannot have \"{0}\" property" msgstr "leader ne peut avoir la propriété \"{0}\"" -#: tiramisu/setting.py:573 +#: tiramisu/setting.py:576 msgid "" "a leader ({0}) cannot have \"force_default_on_freeze\" or " "\"force_metaconfig_on_freeze\" property without \"frozen\"" @@ -952,19 +964,19 @@ msgstr "" "une option leader ({0}) ne peut avoir de propriété " "\"force_default_on_freeze\" or \"force_metaconfig_on_freeze\" sans \"frozen\"" -#: tiramisu/setting.py:607 +#: tiramisu/setting.py:610 msgid "permissive must be a frozenset" msgstr "une permissive doit être de type frozenset" -#: tiramisu/setting.py:617 +#: tiramisu/setting.py:620 msgid "cannot add those permissives: {0}" msgstr "ne peut ajouter ces permissives : {0}" -#: tiramisu/setting.py:654 +#: tiramisu/setting.py:657 msgid "can't reset properties to the symlinkoption \"{}\"" msgstr "ne peut réinitialiser les propriétés de la symlinkoption \"{}\"" -#: tiramisu/setting.py:667 +#: tiramisu/setting.py:670 msgid "can't reset permissives to the symlinkoption \"{}\"" msgstr "ne peut réinitialiser les permissive de la symlinkoption \"{}\"" @@ -994,17 +1006,17 @@ msgstr "" msgid "unknown action {}" msgstr "action inconnue {}" -#: tiramisu/value.py:564 tiramisu/value.py:861 +#: tiramisu/value.py:566 tiramisu/value.py:863 msgid "set owner \"{0}\" is forbidden" msgstr "assigner l'utilisateur \"{0}\" est interdit" -#: tiramisu/value.py:571 +#: tiramisu/value.py:573 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:740 +#: tiramisu/value.py:742 msgid "" "index {index} is greater than the length {length} for option {subconfig." "option.impl_get_display_name(with_quote=True)}" @@ -1012,7 +1024,7 @@ msgstr "" "l'index {index} est supérieur à la longueur \"{length}\" pour l'option " "\"{subconfig.option.impl_get_display_name(with_quote=True)}\"" -#: tiramisu/value.py:847 +#: tiramisu/value.py:849 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 bb56be6..193f8f8 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-02-07 08:01+0100\n" +"POT-Creation-Date: 2025-03-19 09:54+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -35,7 +35,7 @@ msgstr "" msgid "Commands:" msgstr "" -#: tiramisu/api.py:111 tiramisu/api.py:1843 +#: tiramisu/api.py:111 tiramisu/api.py:1849 msgid "please specify a valid sub function ({0}.{1})" msgstr "" @@ -43,7 +43,7 @@ msgstr "" msgid "please do not specify index ({0}.{1})" msgstr "" -#: tiramisu/api.py:201 tiramisu/api.py:847 +#: tiramisu/api.py:201 tiramisu/api.py:848 msgid "please specify index with a follower option ({0}.{1})" msgstr "" @@ -83,31 +83,31 @@ msgstr "" msgid "cannot find \"{0}\"" msgstr "" -#: tiramisu/api.py:811 +#: tiramisu/api.py:812 msgid "cannot reduce length of the leader {}" msgstr "" -#: tiramisu/api.py:864 +#: tiramisu/api.py:865 msgid "only multi value has defaultmulti" msgstr "" -#: tiramisu/api.py:1023 +#: tiramisu/api.py:1029 msgid "please specify a valid sub function ({0}.{1}) for {2}" msgstr "" -#: tiramisu/api.py:1410 +#: tiramisu/api.py:1416 msgid "properties must be a frozenset" msgstr "" -#: tiramisu/api.py:1414 tiramisu/api.py:1441 +#: tiramisu/api.py:1420 tiramisu/api.py:1447 msgid "unknown when {} (must be in append or remove)" msgstr "" -#: tiramisu/api.py:1427 tiramisu/api.py:1451 tiramisu/config.py:1681 +#: tiramisu/api.py:1433 tiramisu/api.py:1457 tiramisu/config.py:1681 msgid "unknown type {}" msgstr "" -#: tiramisu/api.py:1815 +#: tiramisu/api.py:1821 msgid "do not use unrestraint, nowarnings or forcepermissive together" msgstr "" @@ -320,30 +320,38 @@ msgid "cannot modify the {0} {1} because has {2} {3}" msgstr "" #: tiramisu/error.py:118 -msgid "cannot access to {0} {1} because \"{2}\" has {3} {4}" +msgid "cannot access to {0} {1} because \"{2}\" hasn't value" msgstr "" #: tiramisu/error.py:120 +msgid "{0} {1} is mandatory but hasn't value" +msgstr "" + +#: tiramisu/error.py:123 +msgid "cannot access to {0} {1} because \"{2}\" has {3} {4}" +msgstr "" + +#: tiramisu/error.py:125 msgid "cannot access to {0} {1} because has {2} {3}" msgstr "" -#: tiramisu/error.py:192 +#: tiramisu/error.py:197 msgid "invalid value" msgstr "" -#: tiramisu/error.py:202 +#: tiramisu/error.py:207 msgid "attention, \"{0}\" could be an invalid {1} for \"{2}\"" msgstr "" -#: tiramisu/error.py:204 +#: tiramisu/error.py:209 msgid "attention, \"{0}\" could be an invalid {1} for \"{2}\" at index \"{3}\"" msgstr "" -#: tiramisu/error.py:223 tiramisu/error.py:234 +#: tiramisu/error.py:228 tiramisu/error.py:239 msgid "\"{0}\" is an invalid {1} for \"{2}\"" msgstr "" -#: tiramisu/error.py:225 +#: tiramisu/error.py:230 msgid "\"{0}\" is an invalid {1} for \"{2}\" at index \"{3}\"" msgstr "" @@ -411,23 +419,23 @@ msgstr "" msgid "invalid properties type {0} for {1}, must be a frozenset" msgstr "" -#: tiramisu/option/baseoption.py:98 +#: tiramisu/option/baseoption.py:100 msgid "invalid property type {0} for {1}, must be a string or a Calculation" msgstr "" -#: tiramisu/option/baseoption.py:249 +#: tiramisu/option/baseoption.py:251 msgid "information's item for {0} not found: \"{1}\"" msgstr "" -#: tiramisu/option/baseoption.py:267 +#: tiramisu/option/baseoption.py:269 msgid "'{0}' ({1}) object attribute '{2}' is read-only" msgstr "" -#: tiramisu/option/baseoption.py:308 +#: tiramisu/option/baseoption.py:310 msgid "\"{}\" ({}) object attribute \"{}\" is read-only" msgstr "" -#: tiramisu/option/baseoption.py:320 +#: tiramisu/option/baseoption.py:322 msgid "{0} not part of any Config" msgstr "" @@ -451,76 +459,76 @@ msgstr "" msgid "only {0} are allowed" msgstr "" -#: tiramisu/option/domainnameoption.py:62 +#: tiramisu/option/domainnameoption.py:67 msgid "unknown type {0} for hostname" msgstr "" -#: tiramisu/option/domainnameoption.py:65 +#: tiramisu/option/domainnameoption.py:70 msgid "allow_ip must be a boolean" msgstr "" -#: tiramisu/option/domainnameoption.py:67 +#: tiramisu/option/domainnameoption.py:72 msgid "allow_cidr_network must be a boolean" msgstr "" -#: tiramisu/option/domainnameoption.py:69 +#: tiramisu/option/domainnameoption.py:74 msgid "allow_without_dot must be a boolean" msgstr "" -#: tiramisu/option/domainnameoption.py:71 +#: tiramisu/option/domainnameoption.py:76 msgid "allow_startswith_dot must be a boolean" msgstr "" -#: tiramisu/option/domainnameoption.py:82 +#: 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:85 +#: 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:90 +#: 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:93 +#: 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:97 -#: tiramisu/option/domainnameoption.py:98 +#: tiramisu/option/domainnameoption.py:102 +#: tiramisu/option/domainnameoption.py:103 msgid "could be a IP, otherwise {}" msgstr "" -#: tiramisu/option/domainnameoption.py:143 +#: tiramisu/option/domainnameoption.py:148 msgid "invalid length (min 1)" msgstr "" -#: tiramisu/option/domainnameoption.py:146 +#: tiramisu/option/domainnameoption.py:151 msgid "invalid length (max {0})" msgstr "" -#: tiramisu/option/domainnameoption.py:152 +#: tiramisu/option/domainnameoption.py:157 msgid "must have dot" msgstr "" -#: tiramisu/option/domainnameoption.py:154 +#: tiramisu/option/domainnameoption.py:159 msgid "invalid length (max 255)" msgstr "" -#: tiramisu/option/domainnameoption.py:175 +#: tiramisu/option/domainnameoption.py:180 msgid "DNS resolution failed" msgstr "" -#: tiramisu/option/domainnameoption.py:179 +#: tiramisu/option/domainnameoption.py:184 msgid "error resolving DNS: {1}" msgstr "" -#: tiramisu/option/domainnameoption.py:186 +#: tiramisu/option/domainnameoption.py:191 msgid "must not be an IP" msgstr "" -#: tiramisu/option/domainnameoption.py:209 +#: tiramisu/option/domainnameoption.py:214 msgid "some characters are uppercase" msgstr "" @@ -556,6 +564,10 @@ msgstr "" msgid "cannot find this {0}" msgstr "" +#: tiramisu/option/intoption.py:46 +msgid "which is not an integer" +msgstr "" + #: tiramisu/option/intoption.py:52 msgid "value should be equal or greater than \"{0}\"" msgstr "" @@ -668,19 +680,19 @@ msgstr "" msgid "invalid default_multi value \"{0}\" for option {1}, must be a list for a submulti" msgstr "" -#: tiramisu/option/option.py:285 +#: tiramisu/option/option.py:291 msgid "the value \"{}\" is not unique" msgstr "" -#: tiramisu/option/option.py:347 +#: tiramisu/option/option.py:353 msgid "which must not be a list" msgstr "" -#: tiramisu/option/option.py:399 tiramisu/option/option.py:425 +#: tiramisu/option/option.py:405 tiramisu/option/option.py:431 msgid "which must be a list" msgstr "" -#: tiramisu/option/option.py:419 +#: tiramisu/option/option.py:425 msgid "which \"{}\" must be a list of list" msgstr "" @@ -757,27 +769,27 @@ msgstr "" msgid "too weak" msgstr "" -#: tiramisu/option/portoption.py:74 +#: tiramisu/option/portoption.py:80 msgid "inconsistency in allowed range" msgstr "" -#: tiramisu/option/portoption.py:79 +#: tiramisu/option/portoption.py:85 msgid "max value is empty" msgstr "" -#: tiramisu/option/portoption.py:92 +#: tiramisu/option/portoption.py:98 msgid "range must have two values only" msgstr "" -#: tiramisu/option/portoption.py:95 +#: tiramisu/option/portoption.py:101 msgid "first port in range must be smaller than the second one" msgstr "" -#: tiramisu/option/portoption.py:121 +#: tiramisu/option/portoption.py:127 msgid "should be between {0} and {1}" msgstr "" -#: tiramisu/option/portoption.py:123 +#: tiramisu/option/portoption.py:129 msgid "must be between {0} and {1}" msgstr "" @@ -789,59 +801,59 @@ msgstr "" msgid "malformed symlink second parameters must be an option for \"{0}\", not {1}" msgstr "" -#: tiramisu/option/urloption.py:91 +#: tiramisu/option/urloption.py:92 msgid "must start with http:// or https://" msgstr "" -#: tiramisu/option/urloption.py:116 +#: tiramisu/option/urloption.py:117 msgid "the port \"{0}\" is invalid: {1}" msgstr "" -#: tiramisu/option/urloption.py:123 +#: tiramisu/option/urloption.py:124 msgid "the domain \"{0}\" is invalid: {1}" msgstr "" -#: tiramisu/option/urloption.py:127 +#: tiramisu/option/urloption.py:128 msgid "must ends with a valid resource name" msgstr "" -#: tiramisu/setting.py:255 +#: tiramisu/setting.py:258 msgid "can't rebind {0}" msgstr "" -#: tiramisu/setting.py:262 +#: tiramisu/setting.py:265 msgid "can't unbind {0}" msgstr "" -#: tiramisu/setting.py:464 +#: tiramisu/setting.py:467 msgid "invalid property type {type(new_prop)} for {subconfig.option.impl_getname()} with {prop.function.__name__} function" msgstr "" -#: tiramisu/setting.py:476 +#: tiramisu/setting.py:479 msgid "leader cannot have \"{new_prop}\" property" msgstr "" -#: tiramisu/setting.py:564 +#: tiramisu/setting.py:567 msgid "leader cannot have \"{0}\" property" msgstr "" -#: tiramisu/setting.py:573 +#: tiramisu/setting.py:576 msgid "a leader ({0}) cannot have \"force_default_on_freeze\" or \"force_metaconfig_on_freeze\" property without \"frozen\"" msgstr "" -#: tiramisu/setting.py:607 +#: tiramisu/setting.py:610 msgid "permissive must be a frozenset" msgstr "" -#: tiramisu/setting.py:617 +#: tiramisu/setting.py:620 msgid "cannot add those permissives: {0}" msgstr "" -#: tiramisu/setting.py:654 +#: tiramisu/setting.py:657 msgid "can't reset properties to the symlinkoption \"{}\"" msgstr "" -#: tiramisu/setting.py:667 +#: tiramisu/setting.py:670 msgid "can't reset permissives to the symlinkoption \"{}\"" msgstr "" @@ -869,19 +881,19 @@ msgstr "" msgid "unknown action {}" msgstr "" -#: tiramisu/value.py:564 tiramisu/value.py:861 +#: tiramisu/value.py:566 tiramisu/value.py:863 msgid "set owner \"{0}\" is forbidden" msgstr "" -#: tiramisu/value.py:571 +#: tiramisu/value.py:573 msgid "\"{0}\" is a default value, so we cannot change owner to \"{1}\"" msgstr "" -#: tiramisu/value.py:740 +#: tiramisu/value.py:742 msgid "index {index} is greater than the length {length} for option {subconfig.option.impl_get_display_name(with_quote=True)}" msgstr "" -#: tiramisu/value.py:847 +#: tiramisu/value.py:849 msgid "information's item not found \"{}\"" msgstr "" diff --git a/tiramisu/api.py b/tiramisu/api.py index 02af49e..2da429b 100644 --- a/tiramisu/api.py +++ b/tiramisu/api.py @@ -910,34 +910,39 @@ class TiramisuOptionValue(CommonTiramisuOption, _TiramisuODGet): def mandatory(self): """Return path of options with mandatory property without any value""" subconfig = self._subconfig - if subconfig.option.impl_is_optiondescription(): - ori_config_bag = self._subconfig.config_bag - config_bag = ori_config_bag.copy() - config_bag.properties -= {"mandatory", "empty", "warnings"} - config_bag.set_permissive() - self._subconfig.config_bag = config_bag - options = [] - for subconfig in self._config_bag.context.walk( - self._subconfig, - only_mandatory=True, - ): - options.append( - TiramisuOption( - subconfig.path, - subconfig.index, - ori_config_bag, - subconfig=subconfig, - ) - ) - self._subconfig.config_bag = ori_config_bag - return options + ori_config_bag = self._subconfig.config_bag + config_bag = ori_config_bag.copy() + config_bag.properties -= {"mandatory", "empty", "warnings"} + config_bag.set_permissive() + self._subconfig.config_bag = config_bag try: - self._config_bag.context.walk_valid_value( - self._subconfig, only_mandatory=True - ) - except PropertiesOptionError as err: - return err.proptype == ["mandatory"] or err.proptype == ["empty"] - return False + if subconfig.option.impl_is_optiondescription(): + options = [] + for subconfig in config_bag.context.walk( + self._subconfig, + only_mandatory=True, + ): + options.append( + TiramisuOption( + subconfig.path, + subconfig.index, + ori_config_bag, + subconfig=subconfig, + ) + ) + self._subconfig.config_bag = ori_config_bag + return options + try: + self._config_bag.context.walk_valid_value( + self._subconfig, only_mandatory=True + ) + except PropertiesOptionError as err: + return err.proptype == ["mandatory"] or err.proptype == ["empty"] + self._subconfig.config_bag = ori_config_bag + return False + except Exception as err: + self._subconfig.config_bag = ori_config_bag + raise err from err def _registers( diff --git a/tiramisu/error.py b/tiramisu/error.py index 799c65e..29f769f 100644 --- a/tiramisu/error.py +++ b/tiramisu/error.py @@ -113,6 +113,11 @@ class PropertiesOptionError(AttributeError): msg = _('cannot modify the {0} {1} because "{2}" has {3} {4}') else: msg = _("cannot modify the {0} {1} because has {2} {3}") + elif properties == ["mandatory"]: + if self._orig_opt: + msg = _("cannot access to {0} {1} because \"{2}\" hasn't value") + else: + msg = _("{0} {1} is mandatory but hasn't value") else: if self._orig_opt: msg = _('cannot access to {0} {1} because "{2}" has {3} {4}') diff --git a/tiramisu/locale/fr/LC_MESSAGES/tiramisu.mo b/tiramisu/locale/fr/LC_MESSAGES/tiramisu.mo index 6d44c40..a1b4837 100644 Binary files a/tiramisu/locale/fr/LC_MESSAGES/tiramisu.mo and b/tiramisu/locale/fr/LC_MESSAGES/tiramisu.mo differ diff --git a/tiramisu/option/intoption.py b/tiramisu/option/intoption.py index 18d3952..5c8a4fc 100644 --- a/tiramisu/option/intoption.py +++ b/tiramisu/option/intoption.py @@ -43,7 +43,7 @@ class IntOption(Option): value: int, ) -> None: if not isinstance(value, int): - raise ValueError() + raise ValueError(_('which is not an integer')) def second_level_validation(self, value, warnings_only): min_number = self.impl_get_extra("min_number")