diff --git a/locale/fr/LC_MESSAGES/tiramisu.po b/locale/fr/LC_MESSAGES/tiramisu.po index 4ab1976..1c88fa3 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-09-19 22:03+0200\n" +"POT-Creation-Date: 2025-10-04 15:43+0200\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:118 tiramisu/api.py:1955 +#: tiramisu/api.py:118 tiramisu/api.py:1963 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:211 tiramisu/api.py:940 +#: tiramisu/api.py:211 tiramisu/api.py:948 msgid "please specify index with a follower option ({0}.{1})" msgstr "veuillez spécifier un index avec une option suiveuse ({0}.{1})" @@ -50,7 +50,15 @@ msgstr "veuillez spécifier un index avec une option suiveuse ({0}.{1})" msgid "please specify a valid sub function ({0}.{1}): {2}" msgstr "veuillez spécifier une sous fonction valide ({0}.{1}): {2}" -#: tiramisu/api.py:525 +#: tiramisu/api.py:447 +msgid "optiondescription" +msgstr "option description" + +#: tiramisu/api.py:452 +msgid "symlink" +msgstr "lien symbolique" + +#: tiramisu/api.py:533 msgid "" "the option {0} is not a dynamic option, cannot get identifiers with " "only_self parameter to True" @@ -58,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:613 +#: tiramisu/api.py:621 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:691 +#: tiramisu/api.py:699 msgid "cannot add this property: \"{0}\"" msgstr "ne peut pas ajouter cette propriété : \"{0}\"" -#: tiramisu/api.py:718 +#: tiramisu/api.py:726 msgid "" "cannot remove option's property \"{0}\", use permissive instead in option " "\"{1}\"" @@ -74,11 +82,11 @@ msgstr "" "ne supprimer la propriété \"{0}\" de l'option, utiliser plutôt permissive " "dans l'option \"{1}\"" -#: tiramisu/api.py:722 +#: tiramisu/api.py:730 msgid "cannot find \"{0}\" in option \"{1}\"" msgstr "ne peut trouver \"{0}\" dans l'option \"{1}\"" -#: tiramisu/api.py:727 +#: tiramisu/api.py:735 msgid "" "cannot remove option's property \"{0}\", use permissive instead in option " "\"{1}\" at index \"{2}\"" @@ -86,35 +94,35 @@ 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:731 +#: tiramisu/api.py:739 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:775 +#: tiramisu/api.py:783 msgid "cannot find \"{0}\"" msgstr "ne peut trouver \"{0}\"" -#: tiramisu/api.py:957 +#: tiramisu/api.py:965 msgid "only multi value has defaultmulti" msgstr "seule les valeurs multiple a l'attribut defaultmulti" -#: tiramisu/api.py:1121 +#: tiramisu/api.py:1129 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:1520 +#: tiramisu/api.py:1528 msgid "properties must be a frozenset" msgstr "une propriété doit être de type frozenset" -#: tiramisu/api.py:1524 tiramisu/api.py:1551 +#: tiramisu/api.py:1532 tiramisu/api.py:1559 msgid "unknown when {} (must be in append or remove)" msgstr "value {} inconsistent (doit être append ou remove)" -#: tiramisu/api.py:1537 tiramisu/api.py:1561 tiramisu/config.py:1691 +#: tiramisu/api.py:1545 tiramisu/api.py:1569 tiramisu/config.py:1712 msgid "unknown type {}" msgstr "type inconnu {}" -#: tiramisu/api.py:1927 +#: tiramisu/api.py:1935 msgid "do not use unrestraint, nowarnings or forcepermissive together" msgstr "" "il ne faut pas utiliser unrestraint, nowarnings ou forcepermissive ensemble" @@ -238,50 +246,51 @@ msgstr "" 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:391 tiramisu/config.py:413 -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:392 tiramisu/config.py:414 tiramisu/config.py:745 +#: tiramisu/config.py:754 +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:638 +#: tiramisu/config.py:639 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:989 tiramisu/option/optiondescription.py:74 +#: tiramisu/config.py:1010 tiramisu/option/optiondescription.py:74 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:1151 +#: tiramisu/config.py:1172 msgid "parent of {0} not already exists" msgstr "le parent de {0} n'existe plus" -#: tiramisu/config.py:1198 +#: tiramisu/config.py:1219 msgid "cannot set leadership object has root optiondescription" msgstr "ne peut assigner un objet leadership comme optiondescription racine" -#: tiramisu/config.py:1201 +#: tiramisu/config.py:1222 msgid "cannot set dynoptiondescription object has root optiondescription" msgstr "" "ne peut assigner un objet dynoptiondescription comme optiondescription racine" -#: tiramisu/config.py:1248 +#: tiramisu/config.py:1269 msgid "child must be a Config, GroupConfig, MixConfig or MetaConfig" msgstr "l'enfant doit être une Config, GroupConfig, MixConfig ou MetaConfig" -#: tiramisu/config.py:1257 +#: tiramisu/config.py:1278 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:1466 +#: tiramisu/config.py:1487 msgid "unknown config \"{}\"" msgstr "config \"{}\" inconnue" -#: tiramisu/config.py:1491 +#: tiramisu/config.py:1512 msgid "child must be a Config, MixConfig or MetaConfig" msgstr "l'enfant doit être une Config, MixConfig ou MetaConfig" -#: tiramisu/config.py:1526 +#: tiramisu/config.py:1547 msgid "" "force_default, force_default_if_same or force_dont_change_value cannot be " "set with only_config" @@ -289,43 +298,43 @@ msgstr "" "force_default, force_default_if_same ou force_dont_change_value ne peuvent " "pas être spécifié avec only_config" -#: tiramisu/config.py:1536 +#: tiramisu/config.py:1557 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:1687 +#: tiramisu/config.py:1708 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:1732 +#: tiramisu/config.py:1753 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:1737 +#: tiramisu/config.py:1758 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:1755 tiramisu/config.py:1761 +#: tiramisu/config.py:1776 tiramisu/config.py:1782 msgid "cannot find the config {0}" msgstr "ne peut pas trouver la config {0}" -#: tiramisu/config.py:1787 +#: tiramisu/config.py:1808 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:1799 +#: tiramisu/config.py:1820 msgid "child must be a Config or MetaConfig" msgstr "enfant doit être une une Config ou une MetaConfig" -#: tiramisu/config.py:1804 +#: tiramisu/config.py:1825 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:1821 +#: tiramisu/config.py:1842 msgid "metaconfig must have the same optiondescription" msgstr "metaconfig doivent avoir la même optiondescription" @@ -470,11 +479,19 @@ 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:368 tiramisu/error.py:379 +#: tiramisu/error.py:370 +msgid "{2} has an invalid {1}" +msgstr "{2} a un {1} invalide" + +#: tiramisu/error.py:372 +msgid "{2} at index \"{3}\" has an invalid {1}" +msgstr "{2} à l'index a un invalide {1}" + +#: tiramisu/error.py:375 tiramisu/error.py:386 msgid "\"{0}\" is an invalid {1} for {2}" msgstr "\"{0}\" est une valeur invalide pour l'option {2} de type {1}" -#: tiramisu/error.py:370 +#: tiramisu/error.py:377 msgid "\"{0}\" is an invalid {1} for {2} at index \"{3}\"" msgstr "\"{0}\" est un {1} invalide pour {2} à l'index \"{3}\"" @@ -563,63 +580,79 @@ 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:254 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:272 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:313 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:325 msgid "{0} not part of any Config" msgstr "{0} ne fait pas parti d'une Config" -#: tiramisu/option/broadcastoption.py:41 -msgid "invalid string" -msgstr "invalide caractère" +#: tiramisu/option/booloption.py:33 +msgid "boolean" +msgstr "booléen" -#: tiramisu/option/choiceoption.py:52 +#: tiramisu/option/broadcastoption.py:34 +msgid "broadcast address" +msgstr "adresse de broadcast" + +#: tiramisu/option/choiceoption.py:41 +msgid "choice" +msgstr "choix" + +#: tiramisu/option/choiceoption.py:53 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:75 +#: tiramisu/option/choiceoption.py:76 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:107 msgid "only \"{0}\" is allowed" msgstr "seul \"{0}\" est autorisé" -#: tiramisu/option/choiceoption.py:108 +#: tiramisu/option/choiceoption.py:109 msgid "only {0} are allowed" msgstr "seul {0} sont autorisées" -#: tiramisu/option/domainnameoption.py:67 +#: tiramisu/option/dateoption.py:34 +msgid "date" +msgstr "date" + +#: tiramisu/option/domainnameoption.py:46 +msgid "domain name" +msgstr "nom de domaine" + +#: tiramisu/option/domainnameoption.py:68 msgid "unknown type {0} for hostname" msgstr "type_ inconnu {0} pour le nom d'hôte" -#: tiramisu/option/domainnameoption.py:70 +#: tiramisu/option/domainnameoption.py:71 msgid "allow_ip must be a boolean" msgstr "allow_ip doit être un booléen" -#: tiramisu/option/domainnameoption.py:72 +#: tiramisu/option/domainnameoption.py:73 msgid "allow_cidr_network must be a boolean" msgstr "allow_cidr_network doit être un booléen" -#: tiramisu/option/domainnameoption.py:74 +#: tiramisu/option/domainnameoption.py:75 msgid "allow_without_dot must be a boolean" msgstr "allow_without_dot doit être un booléen" -#: tiramisu/option/domainnameoption.py:76 +#: tiramisu/option/domainnameoption.py:77 msgid "allow_startswith_dot must be a boolean" msgstr "allow_startswith_dot doit être un booléen" -#: tiramisu/option/domainnameoption.py:87 +#: tiramisu/option/domainnameoption.py:88 msgid "" "must start with lowercase characters followed by lowercase characters, " "number, \"-\" and \".\" characters are allowed" @@ -627,7 +660,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:90 +#: tiramisu/option/domainnameoption.py:91 msgid "" "must start with lowercase characters followed by lowercase characters, " "number, \"-\" and \".\" characters are recommanded" @@ -635,7 +668,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:95 +#: tiramisu/option/domainnameoption.py:96 msgid "" "must start with lowercase characters followed by lowercase characters, " "number and \"-\" characters are allowed" @@ -643,7 +676,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:98 +#: tiramisu/option/domainnameoption.py:99 msgid "" "must start with lowercase characters followed by lowercase characters, " "number and \"-\" characters are recommanded" @@ -651,54 +684,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:148 +#: tiramisu/option/domainnameoption.py:149 msgid "invalid length (min 1)" msgstr "longueur invalide (min 1)" -#: tiramisu/option/domainnameoption.py:151 +#: tiramisu/option/domainnameoption.py:152 msgid "invalid length (max {0})" msgstr "longueur invalide (max {0})" -#: tiramisu/option/domainnameoption.py:157 +#: tiramisu/option/domainnameoption.py:158 msgid "must have dot" msgstr "doit avoir un point" -#: tiramisu/option/domainnameoption.py:159 +#: tiramisu/option/domainnameoption.py:160 msgid "invalid length (max 255)" msgstr "longueur invalide (max 255)" -#: tiramisu/option/domainnameoption.py:179 +#: tiramisu/option/domainnameoption.py:180 msgid "DNS resolution failed" msgstr "la résolution DNS a échoué" -#: tiramisu/option/domainnameoption.py:182 +#: tiramisu/option/domainnameoption.py:183 msgid "error resolving DNS: {1}" msgstr "erreur de résolution DNS : {1}" -#: tiramisu/option/domainnameoption.py:189 +#: tiramisu/option/domainnameoption.py:190 msgid "must not be an IP" msgstr "ne doit pas être une IP" -#: tiramisu/option/domainnameoption.py:212 +#: tiramisu/option/domainnameoption.py:213 msgid "some characters are uppercase" msgstr "des caractères sont en majuscule" -#: tiramisu/option/dynoptiondescription.py:130 +#: 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:142 +#: tiramisu/option/dynoptiondescription.py:150 msgid "invalid identifier \"{}\" for option {}" msgstr "identifiant \"{}\" invalide pour l'option \"{}\"" -#: tiramisu/option/dynoptiondescription.py:154 +#: tiramisu/option/dynoptiondescription.py:162 msgid "" "DynOptionDescription \"{0}\" identifiers return a list with same values " "\"{1}\"" @@ -706,72 +739,92 @@ msgstr "" "Les identifiants de la DynOptionDescription \"{0}\" retourne une liste avec " "des valeurs identiques \"{1}\"" -#: tiramisu/option/filenameoption.py:47 +#: tiramisu/option/emailoption.py:37 +msgid "email address" +msgstr "adresse mail" + +#: tiramisu/option/filenameoption.py:35 +msgid "file name" +msgstr "nom de fichier" + +#: tiramisu/option/filenameoption.py:48 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:67 +#: tiramisu/option/filenameoption.py:68 msgid "must starts with \"/\"" msgstr "doit débuter par \"/\"" -#: tiramisu/option/filenameoption.py:78 +#: tiramisu/option/filenameoption.py:79 msgid "directory" msgstr "répertoire" -#: tiramisu/option/filenameoption.py:78 +#: tiramisu/option/filenameoption.py:79 msgid "file" msgstr "fichier" -#: tiramisu/option/filenameoption.py:82 +#: tiramisu/option/filenameoption.py:83 msgid "cannot find this {0}" msgstr "ce {0} est introuvable" -#: tiramisu/option/intoption.py:46 +#: tiramisu/option/floatoption.py:33 +msgid "float" +msgstr "nombre flottant" + +#: tiramisu/option/intoption.py:32 +msgid "integer" +msgstr "nombre" + +#: tiramisu/option/intoption.py:51 msgid "which is not an integer" msgstr "qui n'est pas un chiffre" -#: tiramisu/option/intoption.py:52 +#: tiramisu/option/intoption.py:57 msgid "value should be equal or greater than \"{0}\"" msgstr "la valeur devrait être supérieur ou égal à {0}" -#: tiramisu/option/intoption.py:54 +#: tiramisu/option/intoption.py:59 msgid "value must be equal or greater than \"{0}\"" msgstr "valeur doit être supérieur ou égal à {0}" -#: tiramisu/option/intoption.py:59 +#: tiramisu/option/intoption.py:64 msgid "value should be less than \"{0}\"" msgstr "valeur devrait être inférieur à \"{0}\"" -#: tiramisu/option/intoption.py:61 +#: tiramisu/option/intoption.py:66 msgid "value must be less than \"{0}\"" msgstr "valeur doit être inférieur à \"{0}\"" -#: tiramisu/option/ipoption.py:57 +#: tiramisu/option/ipoption.py:34 +msgid "IP" +msgstr "IP" + +#: tiramisu/option/ipoption.py:61 msgid "it's in fact a network address" msgstr "c'est un faite une adresse réseau" -#: tiramisu/option/ipoption.py:59 +#: tiramisu/option/ipoption.py:63 msgid "it's in fact a broacast address" msgstr "c'est en faite une adresse de broadcast" -#: tiramisu/option/ipoption.py:71 +#: tiramisu/option/ipoption.py:75 msgid "CIDR address must have a \"/\"" msgstr "une adresse CIDR doit avoir un \"/\"" -#: tiramisu/option/ipoption.py:80 +#: tiramisu/option/ipoption.py:84 msgid "shouldn't be reserved IP" msgstr "ne devrait pas être une IP réservée" -#: tiramisu/option/ipoption.py:82 +#: tiramisu/option/ipoption.py:86 msgid "mustn't be reserved IP" msgstr "ne doit pas être une IP réservée" -#: tiramisu/option/ipoption.py:86 +#: tiramisu/option/ipoption.py:90 msgid "should be private IP" msgstr "devrait être une IP privée" -#: tiramisu/option/ipoption.py:88 +#: tiramisu/option/ipoption.py:92 msgid "must be private IP" msgstr "doit être une IP privée" @@ -802,44 +855,56 @@ msgstr "" "valeur par défaut non autorisée pour l'option suiveuse {0} dans l'option " "leadership {1}" -#: tiramisu/option/networkoption.py:45 -msgid "must use CIDR notation" -msgstr "doit utiliser la notation CIDR" +#: tiramisu/option/macoption.py:35 +msgid "mac address" +msgstr "adresse MAC" -#: tiramisu/option/networkoption.py:60 +#: tiramisu/option/netmaskoption.py:33 +msgid "netmask address" +msgstr "adresse netmask" + +#: tiramisu/option/networkoption.py:34 +msgid "network address" +msgstr "adresse réseau" + +#: tiramisu/option/networkoption.py:41 +msgid "it's not a network address" +msgstr "ce n'est pas une adresse réseau" + +#: tiramisu/option/networkoption.py:46 msgid "shouldn't be reserved network" msgstr "ne devrait pas être une IP réservée" -#: tiramisu/option/networkoption.py:62 +#: tiramisu/option/networkoption.py:48 msgid "mustn't be reserved network" msgstr "ne doit pas être une IP réservée" -#: tiramisu/option/option.py:73 +#: tiramisu/option/option.py:75 msgid "default_multi is set whereas multi is False in option: {0}" msgstr "" "default_multi est spécifié alors que multi est à False pour l'option : {0}" -#: tiramisu/option/option.py:93 +#: tiramisu/option/option.py:95 msgid "invalid multi type \"{}\" for \"{}\"" msgstr "type multiple \"{}\" invalide pour \"{}\"" -#: tiramisu/option/option.py:112 +#: tiramisu/option/option.py:114 msgid "validators must be a list of Calculation for \"{0}\"" msgstr "validators doit être une liste de Calculation pour \"{0}\"" -#: tiramisu/option/option.py:117 +#: tiramisu/option/option.py:119 msgid "validators must be a Calculation for \"{0}\"" msgstr "validators doit être un Calculation pour \"{0}\"" -#: tiramisu/option/option.py:141 +#: tiramisu/option/option.py:143 msgid "invalid default_multi value \"{0}\" for option {1}" msgstr "la valeur default_multi est invalide {0} pour l'option {1}" -#: tiramisu/option/option.py:149 +#: tiramisu/option/option.py:151 msgid "invalid default_multi value \"{0}\" for option {1}, {2}" msgstr "la valeur default_multi est invalide \"{0}\" pour l'option {1}, {2}" -#: tiramisu/option/option.py:162 +#: tiramisu/option/option.py:164 msgid "" "invalid default_multi value \"{0}\" for option {1}, must be a list for a " "submulti" @@ -847,19 +912,19 @@ msgstr "" "valeur invalide pour default_multi \"{0}\" pour l'option {1}, doit être une " "liste pour une submulti" -#: tiramisu/option/option.py:294 +#: tiramisu/option/option.py:298 msgid "the value \"{}\" is not unique" msgstr "la valeur \"{}\" n'est pas unique" -#: tiramisu/option/option.py:357 +#: tiramisu/option/option.py:361 msgid "which must not be a list" msgstr "qui ne doit pas être une liste" -#: tiramisu/option/option.py:412 tiramisu/option/option.py:450 +#: tiramisu/option/option.py:416 tiramisu/option/option.py:454 msgid "which must be a list" msgstr "qui doit être une liste" -#: tiramisu/option/option.py:440 +#: tiramisu/option/option.py:444 msgid "which \"{}\" must be a list of list" msgstr "lequel \"{}\" doit être une liste de liste" @@ -885,76 +950,92 @@ msgstr "les enfants d'une optiondescription \"{}\" doivent être une liste" msgid "the option name \"{0}\" is duplicate in \"{1}\"" msgstr "le nom de l'option \"{0}\" est dupliqué dans \"{1}\"" -#: tiramisu/option/optiondescription.py:411 +#: tiramisu/option/optiondescription.py:408 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:416 +#: tiramisu/option/optiondescription.py:413 msgid "group_type: {0} not allowed" msgstr "group_type : {0} non autorisé" -#: tiramisu/option/passwordoption.py:49 +#: tiramisu/option/passwordoption.py:34 +msgid "password" +msgstr "mot de passe" + +#: tiramisu/option/passwordoption.py:51 msgid "at least {0} characters are required" msgstr "au moins {0} caractères sont requis" -#: tiramisu/option/passwordoption.py:52 +#: tiramisu/option/passwordoption.py:54 msgid "maximum {0} characters required" msgstr "un maximum de {0} caractères sont autorisés" -#: tiramisu/option/passwordoption.py:57 +#: tiramisu/option/passwordoption.py:59 msgid "must not have the characters {0}" msgstr "ne doit pas contenir les caractères {0}" -#: tiramisu/option/permissionsoption.py:52 +#: tiramisu/option/permissionsoption.py:40 +msgid "unix file permissions" +msgstr "permissions de fichier Unix" + +#: tiramisu/option/permissionsoption.py:53 msgid "only 3 or 4 octal digits are allowed" msgstr "seulement 3 ou 4 chiffres octal sont autorisées" -#: tiramisu/option/permissionsoption.py:63 +#: tiramisu/option/permissionsoption.py:64 msgid "user" msgstr "nom d'utilisateur" -#: tiramisu/option/permissionsoption.py:64 -#: tiramisu/option/permissionsoption.py:66 +#: tiramisu/option/permissionsoption.py:65 +#: tiramisu/option/permissionsoption.py:67 msgid "group" msgstr "groupe" -#: tiramisu/option/permissionsoption.py:67 +#: tiramisu/option/permissionsoption.py:68 msgid "other" msgstr "autre" -#: tiramisu/option/permissionsoption.py:68 +#: tiramisu/option/permissionsoption.py:69 msgid "{0} has more right than {1}" msgstr "{0} a plus de droit que {1}" -#: tiramisu/option/permissionsoption.py:71 +#: tiramisu/option/permissionsoption.py:72 msgid "too weak" msgstr "trop simple" -#: tiramisu/option/portoption.py:77 +#: tiramisu/option/portoption.py:40 +msgid "port" +msgstr "port" + +#: tiramisu/option/portoption.py:78 msgid "inconsistency in allowed range" msgstr "inconsistence dans la plage autorisée" -#: tiramisu/option/portoption.py:82 +#: tiramisu/option/portoption.py:83 msgid "max value is empty" msgstr "la valeur maximum est vide" -#: tiramisu/option/portoption.py:95 +#: tiramisu/option/portoption.py:96 msgid "range must have two values only" msgstr "un rang doit avoir deux valeurs seulement" -#: tiramisu/option/portoption.py:98 +#: tiramisu/option/portoption.py:99 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:124 +#: tiramisu/option/portoption.py:125 msgid "should be between {0} and {1}" msgstr "devrait être une nombre entre {0} et {1}" -#: tiramisu/option/portoption.py:126 +#: tiramisu/option/portoption.py:127 msgid "must be between {0} and {1}" msgstr "doit être une nombre entre {0} et {1}" -#: tiramisu/option/stroption.py:41 +#: tiramisu/option/stroption.py:34 +msgid "string" +msgstr "texte" + +#: tiramisu/option/stroption.py:42 msgid "which is not a string" msgstr "qui n'est pas une chaîne de caractères" @@ -965,22 +1046,34 @@ msgstr "" "symlink mal formé, le second paramètre doit être une option pour \"{0}\", " "not {1}" -#: tiramisu/option/urloption.py:92 +#: tiramisu/option/urloption.py:40 +msgid "URL" +msgstr "URL" + +#: tiramisu/option/urloption.py:93 msgid "must start with http:// or https://" msgstr "doit débuter par http:// ou https://" -#: tiramisu/option/urloption.py:117 +#: tiramisu/option/urloption.py:118 msgid "the port \"{0}\" is invalid: {1}" msgstr "le port \"{0}\" est invalide : {1}" -#: tiramisu/option/urloption.py:124 +#: tiramisu/option/urloption.py:125 msgid "the domain \"{0}\" is invalid: {1}" msgstr "le domaine \"{0}\" est invalide : {1}" -#: tiramisu/option/urloption.py:128 +#: tiramisu/option/urloption.py:129 msgid "must ends with a valid resource name" msgstr "doit finir par un nom de ressource valide" +#: tiramisu/option/usernameoption.py:36 +msgid "unix username" +msgstr "nom d'utilisateur Unix" + +#: tiramisu/option/usernameoption.py:44 +msgid "unix groupname" +msgstr "nom de groupe Unix" + #: tiramisu/setting.py:258 msgid "can't rebind {0}" msgstr "ne peut redéfinir ({0})" @@ -1053,6 +1146,12 @@ msgstr "" msgid "information's item not found \"{}\"" msgstr "l'information de l'objet ne sont pas trouvé \"{}\"" +#~ msgid "invalid string" +#~ msgstr "invalide caractère" + +#~ msgid "must use CIDR notation" +#~ msgstr "doit utiliser la notation CIDR" + #~ msgid "no option found in config with these criteria" #~ msgstr "aucune option trouvée dans la config avec ces critères" @@ -1235,26 +1334,14 @@ msgstr "l'information de l'objet ne sont pas trouvé \"{}\"" #~ "requirements malformé pour l'option : {0} l'exigence doit avoir les clefs " #~ "option, expected et action" -#~ msgid "boolean" -#~ msgstr "booléen" - #~ msgid "invalid broadcast consistency, a network and a netmask are needed" #~ msgstr "" #~ "adresse de broadcast inconsistante, un réseau et un masque sont " #~ "nécessaires." -#~ msgid "choice" -#~ msgstr "choix" - #~ msgid "values is not a function, so values_params must be None" #~ msgstr "values n'est pas une fonction, donc values_params doit être None" -#~ msgid "date" -#~ msgstr "date" - -#~ msgid "domain name" -#~ msgstr "nom de domaine" - #~ msgid "only lowercase, number and - are characters are allowed" #~ msgstr "" #~ "seuls les caractères en minuscule, les nombres et \"-\" sont autorisés" @@ -1266,18 +1353,6 @@ msgstr "l'information de l'objet ne sont pas trouvé \"{}\"" #~ msgid "callback is mandatory for the dynoptiondescription \"{}\"" #~ msgstr "un callback est obligatoire pour le dynoptiondescription \"{}\"" -#~ msgid "email address" -#~ msgstr "adresse mail" - -#~ msgid "float" -#~ msgstr "nombre flottant" - -#~ msgid "integer" -#~ msgstr "nombre" - -#~ msgid "IP" -#~ msgstr "IP" - #~ msgid "IP not in network \"{0}\" (\"{1}\")" #~ msgstr "l'IP n'est pas dans le réseau \"{0}\" (\"{1}\")" @@ -1317,9 +1392,6 @@ msgstr "l'information de l'objet ne sont pas trouvé \"{}\"" #~ "requirement mal formé pour l'option \"{0}\" ne doit pas être dans une " #~ "suiveuse pour \"{1}\"" -#~ msgid "netmask address" -#~ msgstr "adresse netmask" - #~ msgid "network_netmask needs a network and a netmask" #~ msgstr "network_netmask nécessite un réseau et un masque de réseau" @@ -1438,21 +1510,9 @@ msgstr "l'information de l'objet ne sont pas trouvé \"{}\"" #~ msgid "consistency with option {0} which is not in Config" #~ msgstr "consistency avec l'option {0} qui n'est pas dans une Config" -#~ msgid "password" -#~ msgstr "mot de passe" - -#~ msgid "port" -#~ msgstr "port" - -#~ msgid "string" -#~ msgstr "texte" - #~ msgid "unknown option \"{0}\" in syndynoptiondescription \"{1}\"" #~ msgstr "l'option \"{0}\" inconnue dans la syndynoptiondescription \"{1}\"" -#~ msgid "URL" -#~ msgstr "URL" - #~ msgid "port must be an between 0 and 65536" #~ msgstr "port doit être entre 0 et 65536" diff --git a/locale/tiramisu.pot b/locale/tiramisu.pot index 1fef334..d5cc200 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-09-19 22:05+0200\n" +"POT-Creation-Date: 2025-10-04 15:46+0200\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:118 tiramisu/api.py:1955 +#: tiramisu/api.py:118 tiramisu/api.py:1963 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:211 tiramisu/api.py:940 +#: tiramisu/api.py:211 tiramisu/api.py:948 msgid "please specify index with a follower option ({0}.{1})" msgstr "" @@ -51,59 +51,67 @@ msgstr "" msgid "please specify a valid sub function ({0}.{1}): {2}" msgstr "" -#: tiramisu/api.py:525 +#: tiramisu/api.py:447 +msgid "optiondescription" +msgstr "" + +#: tiramisu/api.py:452 +msgid "symlink" +msgstr "" + +#: tiramisu/api.py:533 msgid "the option {0} is not a dynamic option, cannot get identifiers with only_self parameter to True" msgstr "" -#: tiramisu/api.py:613 +#: tiramisu/api.py:621 msgid "cannot get option from a follower symlink without index" msgstr "" -#: tiramisu/api.py:691 +#: tiramisu/api.py:699 msgid "cannot add this property: \"{0}\"" msgstr "" -#: tiramisu/api.py:718 +#: tiramisu/api.py:726 msgid "cannot remove option's property \"{0}\", use permissive instead in option \"{1}\"" msgstr "" -#: tiramisu/api.py:722 +#: tiramisu/api.py:730 msgid "cannot find \"{0}\" in option \"{1}\"" msgstr "" -#: tiramisu/api.py:727 +#: tiramisu/api.py:735 msgid "cannot remove option's property \"{0}\", use permissive instead in option \"{1}\" at index \"{2}\"" msgstr "" -#: tiramisu/api.py:731 +#: tiramisu/api.py:739 msgid "cannot find \"{0}\" in option \"{1}\" at index \"{2}\"" msgstr "" -#: tiramisu/api.py:775 +#: tiramisu/api.py:783 msgid "cannot find \"{0}\"" msgstr "" -#: tiramisu/api.py:957 +#: tiramisu/api.py:965 msgid "only multi value has defaultmulti" msgstr "" -#: tiramisu/api.py:1121 +#: tiramisu/api.py:1129 msgid "please specify a valid sub function ({0}.{1}) for {2}" msgstr "" -#: tiramisu/api.py:1520 +#: tiramisu/api.py:1528 msgid "properties must be a frozenset" msgstr "" -#: tiramisu/api.py:1524 tiramisu/api.py:1551 +#: tiramisu/api.py:1532 tiramisu/api.py:1559 msgid "unknown when {} (must be in append or remove)" msgstr "" -#: tiramisu/api.py:1537 tiramisu/api.py:1561 tiramisu/config.py:1691 +#: tiramisu/api.py:1545 tiramisu/api.py:1569 tiramisu/config.py:1712 msgid "unknown type {}" msgstr "" -#: tiramisu/api.py:1927 +#: tiramisu/api.py:1935 msgid "do not use unrestraint, nowarnings or forcepermissive together" msgstr "" @@ -207,83 +215,84 @@ msgstr "" msgid "unexpected error \"{1}\" in function \"{2}\" for option {0}" msgstr "" -#: tiramisu/config.py:391 tiramisu/config.py:413 -msgid "option name {0} is not unique in {1}" +#: tiramisu/config.py:392 tiramisu/config.py:414 tiramisu/config.py:745 +#: tiramisu/config.py:754 +msgid "option name \"{0}\" is not unique in {1}" msgstr "" -#: tiramisu/config.py:638 +#: tiramisu/config.py:639 msgid "there is no option description for this config (may be GroupConfig)" msgstr "" -#: tiramisu/config.py:989 tiramisu/option/optiondescription.py:74 +#: tiramisu/config.py:1010 tiramisu/option/optiondescription.py:74 msgid "option description seems to be part of an other config" msgstr "" -#: tiramisu/config.py:1151 +#: tiramisu/config.py:1172 msgid "parent of {0} not already exists" msgstr "" -#: tiramisu/config.py:1198 +#: tiramisu/config.py:1219 msgid "cannot set leadership object has root optiondescription" msgstr "" -#: tiramisu/config.py:1201 +#: tiramisu/config.py:1222 msgid "cannot set dynoptiondescription object has root optiondescription" msgstr "" -#: tiramisu/config.py:1248 +#: tiramisu/config.py:1269 msgid "child must be a Config, GroupConfig, MixConfig or MetaConfig" msgstr "" -#: tiramisu/config.py:1257 +#: tiramisu/config.py:1278 msgid "config name must be uniq in groupconfig for \"{0}\"" msgstr "" -#: tiramisu/config.py:1466 +#: tiramisu/config.py:1487 msgid "unknown config \"{}\"" msgstr "" -#: tiramisu/config.py:1491 +#: tiramisu/config.py:1512 msgid "child must be a Config, MixConfig or MetaConfig" msgstr "" -#: tiramisu/config.py:1526 +#: tiramisu/config.py:1547 msgid "force_default, force_default_if_same or force_dont_change_value cannot be set with only_config" msgstr "" -#: tiramisu/config.py:1536 +#: tiramisu/config.py:1557 msgid "force_default and force_dont_change_value cannot be set together" msgstr "" -#: tiramisu/config.py:1687 +#: tiramisu/config.py:1708 msgid "config name must be uniq in groupconfig for {0}" msgstr "" -#: tiramisu/config.py:1732 +#: tiramisu/config.py:1753 msgid "config added has no name, the name is mandatory" msgstr "" -#: tiramisu/config.py:1737 +#: tiramisu/config.py:1758 msgid "config name \"{0}\" is not uniq in groupconfig \"{1}\"" msgstr "" -#: tiramisu/config.py:1755 tiramisu/config.py:1761 +#: tiramisu/config.py:1776 tiramisu/config.py:1782 msgid "cannot find the config {0}" msgstr "" -#: tiramisu/config.py:1787 +#: tiramisu/config.py:1808 msgid "MetaConfig with optiondescription must have string has child, not {}" msgstr "" -#: tiramisu/config.py:1799 +#: tiramisu/config.py:1820 msgid "child must be a Config or MetaConfig" msgstr "" -#: tiramisu/config.py:1804 +#: tiramisu/config.py:1825 msgid "all config in metaconfig must have the same optiondescription" msgstr "" -#: tiramisu/config.py:1821 +#: tiramisu/config.py:1842 msgid "metaconfig must have the same optiondescription" msgstr "" @@ -407,11 +416,19 @@ msgstr "" msgid "attention, \"{0}\" could be an invalid {1} for {2} at index \"{3}\"" msgstr "" -#: tiramisu/error.py:368 tiramisu/error.py:379 +#: tiramisu/error.py:370 +msgid "{2} has an invalid {1}" +msgstr "" + +#: tiramisu/error.py:372 +msgid "{2} at index \"{3}\" has an invalid {1}" +msgstr "" + +#: tiramisu/error.py:375 tiramisu/error.py:386 msgid "\"{0}\" is an invalid {1} for {2}" msgstr "" -#: tiramisu/error.py:370 +#: tiramisu/error.py:377 msgid "\"{0}\" is an invalid {1} for {2} at index \"{3}\"" msgstr "" @@ -483,192 +500,228 @@ msgstr "" msgid "invalid property type {0} for {1}, must be a string or a Calculation" msgstr "" -#: tiramisu/option/baseoption.py:253 +#: tiramisu/option/baseoption.py:254 msgid "information's item for {0} not found: \"{1}\"" msgstr "" -#: tiramisu/option/baseoption.py:271 +#: tiramisu/option/baseoption.py:272 msgid "'{0}' ({1}) object attribute '{2}' is read-only" msgstr "" -#: tiramisu/option/baseoption.py:312 +#: tiramisu/option/baseoption.py:313 msgid "\"{}\" ({}) object attribute \"{}\" is read-only" msgstr "" -#: tiramisu/option/baseoption.py:324 +#: tiramisu/option/baseoption.py:325 msgid "{0} not part of any Config" msgstr "" -#: tiramisu/option/broadcastoption.py:41 -msgid "invalid string" +#: tiramisu/option/booloption.py:33 +msgid "boolean" msgstr "" -#: tiramisu/option/choiceoption.py:52 +#: tiramisu/option/broadcastoption.py:34 +msgid "broadcast address" +msgstr "" + +#: tiramisu/option/choiceoption.py:41 +msgid "choice" +msgstr "" + +#: tiramisu/option/choiceoption.py:53 msgid "values must be a tuple or a calculation for {0}" msgstr "" -#: tiramisu/option/choiceoption.py:75 +#: tiramisu/option/choiceoption.py:76 msgid "the calculated values \"{0}\" for \"{1}\" is not a list" msgstr "" -#: tiramisu/option/choiceoption.py:106 +#: tiramisu/option/choiceoption.py:107 msgid "only \"{0}\" is allowed" msgstr "" -#: tiramisu/option/choiceoption.py:108 +#: tiramisu/option/choiceoption.py:109 msgid "only {0} are allowed" msgstr "" -#: tiramisu/option/domainnameoption.py:67 +#: tiramisu/option/dateoption.py:34 +msgid "date" +msgstr "" + +#: tiramisu/option/domainnameoption.py:46 +msgid "domain name" +msgstr "" + +#: tiramisu/option/domainnameoption.py:68 msgid "unknown type {0} for hostname" msgstr "" -#: tiramisu/option/domainnameoption.py:70 +#: tiramisu/option/domainnameoption.py:71 msgid "allow_ip must be a boolean" msgstr "" -#: tiramisu/option/domainnameoption.py:72 +#: tiramisu/option/domainnameoption.py:73 msgid "allow_cidr_network must be a boolean" msgstr "" -#: tiramisu/option/domainnameoption.py:74 +#: tiramisu/option/domainnameoption.py:75 msgid "allow_without_dot must be a boolean" msgstr "" -#: tiramisu/option/domainnameoption.py:76 +#: tiramisu/option/domainnameoption.py:77 msgid "allow_startswith_dot must be a boolean" msgstr "" -#: tiramisu/option/domainnameoption.py:87 +#: tiramisu/option/domainnameoption.py:88 msgid "must start with lowercase characters followed by lowercase characters, number, \"-\" and \".\" characters are allowed" msgstr "" -#: tiramisu/option/domainnameoption.py:90 +#: tiramisu/option/domainnameoption.py:91 msgid "must start with lowercase characters followed by lowercase characters, number, \"-\" and \".\" characters are recommanded" msgstr "" -#: tiramisu/option/domainnameoption.py:95 +#: tiramisu/option/domainnameoption.py:96 msgid "must start with lowercase characters followed by lowercase characters, number and \"-\" characters are allowed" msgstr "" -#: tiramisu/option/domainnameoption.py:98 +#: tiramisu/option/domainnameoption.py:99 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:148 +#: tiramisu/option/domainnameoption.py:149 msgid "invalid length (min 1)" msgstr "" -#: tiramisu/option/domainnameoption.py:151 +#: tiramisu/option/domainnameoption.py:152 msgid "invalid length (max {0})" msgstr "" -#: tiramisu/option/domainnameoption.py:157 +#: tiramisu/option/domainnameoption.py:158 msgid "must have dot" msgstr "" -#: tiramisu/option/domainnameoption.py:159 +#: tiramisu/option/domainnameoption.py:160 msgid "invalid length (max 255)" msgstr "" -#: tiramisu/option/domainnameoption.py:179 +#: tiramisu/option/domainnameoption.py:180 msgid "DNS resolution failed" msgstr "" -#: tiramisu/option/domainnameoption.py:182 +#: tiramisu/option/domainnameoption.py:183 msgid "error resolving DNS: {1}" msgstr "" -#: tiramisu/option/domainnameoption.py:189 +#: tiramisu/option/domainnameoption.py:190 msgid "must not be an IP" msgstr "" -#: tiramisu/option/domainnameoption.py:212 +#: tiramisu/option/domainnameoption.py:213 msgid "some characters are uppercase" msgstr "" -#: tiramisu/option/dynoptiondescription.py:130 +#: tiramisu/option/dynoptiondescription.py:138 msgid "DynOptionDescription identifiers for option {0}, is not a list ({1})" msgstr "" -#: tiramisu/option/dynoptiondescription.py:142 +#: tiramisu/option/dynoptiondescription.py:150 msgid "invalid identifier \"{}\" for option {}" msgstr "" -#: tiramisu/option/dynoptiondescription.py:154 +#: tiramisu/option/dynoptiondescription.py:162 msgid "DynOptionDescription \"{0}\" identifiers return a list with same values \"{1}\"" msgstr "" -#: tiramisu/option/filenameoption.py:47 +#: tiramisu/option/emailoption.py:37 +msgid "email address" +msgstr "" + +#: tiramisu/option/filenameoption.py:35 +msgid "file name" +msgstr "" + +#: tiramisu/option/filenameoption.py:48 msgid "types parameter must be a list, not \"{0}\" for \"{1}\"" msgstr "" -#: tiramisu/option/filenameoption.py:67 +#: tiramisu/option/filenameoption.py:68 msgid "must starts with \"/\"" msgstr "" -#: tiramisu/option/filenameoption.py:78 +#: tiramisu/option/filenameoption.py:79 msgid "directory" msgstr "" -#: tiramisu/option/filenameoption.py:78 +#: tiramisu/option/filenameoption.py:79 msgid "file" msgstr "" -#: tiramisu/option/filenameoption.py:82 +#: tiramisu/option/filenameoption.py:83 msgid "cannot find this {0}" msgstr "" -#: tiramisu/option/intoption.py:46 +#: tiramisu/option/floatoption.py:33 +msgid "float" +msgstr "" + +#: tiramisu/option/intoption.py:32 +msgid "integer" +msgstr "" + +#: tiramisu/option/intoption.py:51 msgid "which is not an integer" msgstr "" -#: tiramisu/option/intoption.py:52 +#: tiramisu/option/intoption.py:57 msgid "value should be equal or greater than \"{0}\"" msgstr "" -#: tiramisu/option/intoption.py:54 +#: tiramisu/option/intoption.py:59 msgid "value must be equal or greater than \"{0}\"" msgstr "" -#: tiramisu/option/intoption.py:59 +#: tiramisu/option/intoption.py:64 msgid "value should be less than \"{0}\"" msgstr "" -#: tiramisu/option/intoption.py:61 +#: tiramisu/option/intoption.py:66 msgid "value must be less than \"{0}\"" msgstr "" -#: tiramisu/option/ipoption.py:57 +#: tiramisu/option/ipoption.py:34 +msgid "IP" +msgstr "" + +#: tiramisu/option/ipoption.py:61 msgid "it's in fact a network address" msgstr "" -#: tiramisu/option/ipoption.py:59 +#: tiramisu/option/ipoption.py:63 msgid "it's in fact a broacast address" msgstr "" -#: tiramisu/option/ipoption.py:71 +#: tiramisu/option/ipoption.py:75 msgid "CIDR address must have a \"/\"" msgstr "" -#: tiramisu/option/ipoption.py:80 +#: tiramisu/option/ipoption.py:84 msgid "shouldn't be reserved IP" msgstr "" -#: tiramisu/option/ipoption.py:82 +#: tiramisu/option/ipoption.py:86 msgid "mustn't be reserved IP" msgstr "" -#: tiramisu/option/ipoption.py:86 +#: tiramisu/option/ipoption.py:90 msgid "should be private IP" msgstr "" -#: tiramisu/option/ipoption.py:88 +#: tiramisu/option/ipoption.py:92 msgid "must be private IP" msgstr "" @@ -692,59 +745,71 @@ msgstr "" msgid "not allowed default value for follower option {0} in leadership {1}" msgstr "" -#: tiramisu/option/networkoption.py:45 -msgid "must use CIDR notation" +#: tiramisu/option/macoption.py:35 +msgid "mac address" msgstr "" -#: tiramisu/option/networkoption.py:60 +#: tiramisu/option/netmaskoption.py:33 +msgid "netmask address" +msgstr "" + +#: tiramisu/option/networkoption.py:34 +msgid "network address" +msgstr "" + +#: tiramisu/option/networkoption.py:41 +msgid "it's not a network address" +msgstr "" + +#: tiramisu/option/networkoption.py:46 msgid "shouldn't be reserved network" msgstr "" -#: tiramisu/option/networkoption.py:62 +#: tiramisu/option/networkoption.py:48 msgid "mustn't be reserved network" msgstr "" -#: tiramisu/option/option.py:73 +#: tiramisu/option/option.py:75 msgid "default_multi is set whereas multi is False in option: {0}" msgstr "" -#: tiramisu/option/option.py:93 +#: tiramisu/option/option.py:95 msgid "invalid multi type \"{}\" for \"{}\"" msgstr "" -#: tiramisu/option/option.py:112 +#: tiramisu/option/option.py:114 msgid "validators must be a list of Calculation for \"{0}\"" msgstr "" -#: tiramisu/option/option.py:117 +#: tiramisu/option/option.py:119 msgid "validators must be a Calculation for \"{0}\"" msgstr "" -#: tiramisu/option/option.py:141 +#: tiramisu/option/option.py:143 msgid "invalid default_multi value \"{0}\" for option {1}" msgstr "" -#: tiramisu/option/option.py:149 +#: tiramisu/option/option.py:151 msgid "invalid default_multi value \"{0}\" for option {1}, {2}" msgstr "" -#: tiramisu/option/option.py:162 +#: tiramisu/option/option.py:164 msgid "invalid default_multi value \"{0}\" for option {1}, must be a list for a submulti" msgstr "" -#: tiramisu/option/option.py:294 +#: tiramisu/option/option.py:298 msgid "the value \"{}\" is not unique" msgstr "" -#: tiramisu/option/option.py:357 +#: tiramisu/option/option.py:361 msgid "which must not be a list" msgstr "" -#: tiramisu/option/option.py:412 tiramisu/option/option.py:450 +#: tiramisu/option/option.py:416 tiramisu/option/option.py:454 msgid "which must be a list" msgstr "" -#: tiramisu/option/option.py:440 +#: tiramisu/option/option.py:444 msgid "which \"{}\" must be a list of list" msgstr "" @@ -770,76 +835,92 @@ msgstr "" msgid "the option name \"{0}\" is duplicate in \"{1}\"" msgstr "" -#: tiramisu/option/optiondescription.py:411 +#: tiramisu/option/optiondescription.py:408 msgid "cannot change group_type if already set (old {0}, new {1})" msgstr "" -#: tiramisu/option/optiondescription.py:416 +#: tiramisu/option/optiondescription.py:413 msgid "group_type: {0} not allowed" msgstr "" -#: tiramisu/option/passwordoption.py:49 +#: tiramisu/option/passwordoption.py:34 +msgid "password" +msgstr "" + +#: tiramisu/option/passwordoption.py:51 msgid "at least {0} characters are required" msgstr "" -#: tiramisu/option/passwordoption.py:52 +#: tiramisu/option/passwordoption.py:54 msgid "maximum {0} characters required" msgstr "" -#: tiramisu/option/passwordoption.py:57 +#: tiramisu/option/passwordoption.py:59 msgid "must not have the characters {0}" msgstr "" -#: tiramisu/option/permissionsoption.py:52 +#: tiramisu/option/permissionsoption.py:40 +msgid "unix file permissions" +msgstr "" + +#: tiramisu/option/permissionsoption.py:53 msgid "only 3 or 4 octal digits are allowed" msgstr "" -#: tiramisu/option/permissionsoption.py:63 +#: tiramisu/option/permissionsoption.py:64 msgid "user" msgstr "" -#: tiramisu/option/permissionsoption.py:64 -#: tiramisu/option/permissionsoption.py:66 +#: tiramisu/option/permissionsoption.py:65 +#: tiramisu/option/permissionsoption.py:67 msgid "group" msgstr "" -#: tiramisu/option/permissionsoption.py:67 +#: tiramisu/option/permissionsoption.py:68 msgid "other" msgstr "" -#: tiramisu/option/permissionsoption.py:68 +#: tiramisu/option/permissionsoption.py:69 msgid "{0} has more right than {1}" msgstr "" -#: tiramisu/option/permissionsoption.py:71 +#: tiramisu/option/permissionsoption.py:72 msgid "too weak" msgstr "" -#: tiramisu/option/portoption.py:77 +#: tiramisu/option/portoption.py:40 +msgid "port" +msgstr "" + +#: tiramisu/option/portoption.py:78 msgid "inconsistency in allowed range" msgstr "" -#: tiramisu/option/portoption.py:82 +#: tiramisu/option/portoption.py:83 msgid "max value is empty" msgstr "" -#: tiramisu/option/portoption.py:95 +#: tiramisu/option/portoption.py:96 msgid "range must have two values only" msgstr "" -#: tiramisu/option/portoption.py:98 +#: tiramisu/option/portoption.py:99 msgid "first port in range must be smaller than the second one" msgstr "" -#: tiramisu/option/portoption.py:124 +#: tiramisu/option/portoption.py:125 msgid "should be between {0} and {1}" msgstr "" -#: tiramisu/option/portoption.py:126 +#: tiramisu/option/portoption.py:127 msgid "must be between {0} and {1}" msgstr "" -#: tiramisu/option/stroption.py:41 +#: tiramisu/option/stroption.py:34 +msgid "string" +msgstr "" + +#: tiramisu/option/stroption.py:42 msgid "which is not a string" msgstr "" @@ -847,22 +928,34 @@ msgstr "" msgid "malformed symlink second parameters must be an option for \"{0}\", not {1}" msgstr "" -#: tiramisu/option/urloption.py:92 +#: tiramisu/option/urloption.py:40 +msgid "URL" +msgstr "" + +#: tiramisu/option/urloption.py:93 msgid "must start with http:// or https://" msgstr "" -#: tiramisu/option/urloption.py:117 +#: tiramisu/option/urloption.py:118 msgid "the port \"{0}\" is invalid: {1}" msgstr "" -#: tiramisu/option/urloption.py:124 +#: tiramisu/option/urloption.py:125 msgid "the domain \"{0}\" is invalid: {1}" msgstr "" -#: tiramisu/option/urloption.py:128 +#: tiramisu/option/urloption.py:129 msgid "must ends with a valid resource name" msgstr "" +#: tiramisu/option/usernameoption.py:36 +msgid "unix username" +msgstr "" + +#: tiramisu/option/usernameoption.py:44 +msgid "unix groupname" +msgstr "" + #: tiramisu/setting.py:258 msgid "can't rebind {0}" msgstr "" diff --git a/tiramisu/api.py b/tiramisu/api.py index 2205b00..6c3f7a2 100644 --- a/tiramisu/api.py +++ b/tiramisu/api.py @@ -439,14 +439,22 @@ class _TiramisuOptionOptionDescription: return options @option_type(["option", "optiondescription", "symlink", "with_or_without_index"]) - def type(self, only_self=False): + def type(self, only_self=False, translation=False): """Get de option type""" option = self._subconfig.option if option.impl_is_optiondescription(): - return "optiondescription" - if only_self and option.impl_is_symlinkoption(): - return "symlink" - return option.get_type() + if translation: + type_ = _("optiondescription") + else: + type_ = "optiondescription" + elif only_self and option.impl_is_symlinkoption(): + if translation: + type_ = _("symlink") + else: + type_ = "symlink" + else: + type_ = option.get_type(translation=translation) + return type_ @option_type(["option", "symlink", "with_or_without_index"]) def extra(self, extra): diff --git a/tiramisu/locale/fr/LC_MESSAGES/tiramisu.mo b/tiramisu/locale/fr/LC_MESSAGES/tiramisu.mo index cb345cc..18c43f2 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/booloption.py b/tiramisu/option/booloption.py index 9b48705..3ffaee7 100644 --- a/tiramisu/option/booloption.py +++ b/tiramisu/option/booloption.py @@ -30,6 +30,7 @@ class BoolOption(Option): __slots__ = tuple() _type = "boolean" + _t_type = _("boolean") def validate( self, diff --git a/tiramisu/option/choiceoption.py b/tiramisu/option/choiceoption.py index fa5b0d9..e25dd6c 100644 --- a/tiramisu/option/choiceoption.py +++ b/tiramisu/option/choiceoption.py @@ -38,6 +38,7 @@ class ChoiceOption(Option): __slots__ = tuple() _type = "choice" + _t_type = _("choice") def __init__(self, name, doc, values, *args, **kwargs): """ diff --git a/tiramisu/option/dateoption.py b/tiramisu/option/dateoption.py index 59343e1..4c12535 100644 --- a/tiramisu/option/dateoption.py +++ b/tiramisu/option/dateoption.py @@ -31,6 +31,7 @@ class DateOption(StrOption): __slots__ = tuple() _type = "date" + _t_type = _("date") def validate(self, value: str) -> None: super().validate(value) diff --git a/tiramisu/option/domainnameoption.py b/tiramisu/option/domainnameoption.py index 1c25df0..5d0e120 100644 --- a/tiramisu/option/domainnameoption.py +++ b/tiramisu/option/domainnameoption.py @@ -43,6 +43,7 @@ class DomainnameOption(StrOption): __slots__ = tuple() _type = "domain name" + _t_type = _("domain name") def __init__( self, diff --git a/tiramisu/option/emailoption.py b/tiramisu/option/emailoption.py index 48dc0cf..adc1416 100644 --- a/tiramisu/option/emailoption.py +++ b/tiramisu/option/emailoption.py @@ -34,3 +34,4 @@ class EmailOption(RegexpOption): r"^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$" ) _type = "email address" + _t_type = _("email address") diff --git a/tiramisu/option/filenameoption.py b/tiramisu/option/filenameoption.py index 5db0875..a65ef8e 100644 --- a/tiramisu/option/filenameoption.py +++ b/tiramisu/option/filenameoption.py @@ -32,6 +32,7 @@ class FilenameOption(StrOption): __slots__ = tuple() _type = "file name" + _t_type = _("file name") def __init__( self, diff --git a/tiramisu/option/floatoption.py b/tiramisu/option/floatoption.py index 9507baa..9e4d7a7 100644 --- a/tiramisu/option/floatoption.py +++ b/tiramisu/option/floatoption.py @@ -30,6 +30,7 @@ class FloatOption(Option): __slots__ = tuple() _type = "float" + _t_type = _("float") def validate(self, value: float) -> None: if not isinstance(value, float): diff --git a/tiramisu/option/intoption.py b/tiramisu/option/intoption.py index 9492f78..daf0022 100644 --- a/tiramisu/option/intoption.py +++ b/tiramisu/option/intoption.py @@ -29,6 +29,7 @@ class IntOption(Option): "represents a choice of an integer" __slots__ = tuple() _type = "integer" + _t_type = _("integer") def __init__(self, *args, min_number=None, max_number=None, min_integer=None, max_integer=None, **kwargs): extra = {} diff --git a/tiramisu/option/macoption.py b/tiramisu/option/macoption.py index 8b993f2..93f6d5a 100644 --- a/tiramisu/option/macoption.py +++ b/tiramisu/option/macoption.py @@ -32,3 +32,4 @@ class MACOption(RegexpOption): __slots__ = tuple() _regexp = re.compile(r"^([0-9A-Fa-f]{2}[:]){5}([0-9A-Fa-f]{2})$") _type = "mac address" + _t_type = _("mac address") diff --git a/tiramisu/option/netmaskoption.py b/tiramisu/option/netmaskoption.py index 9fa1933..4d1157f 100644 --- a/tiramisu/option/netmaskoption.py +++ b/tiramisu/option/netmaskoption.py @@ -30,6 +30,7 @@ class NetmaskOption(StrOption): __slots__ = tuple() _type = "netmask address" + _t_type = _("netmask address") def validate(self, value: str) -> None: super().validate(value) diff --git a/tiramisu/option/option.py b/tiramisu/option/option.py index 2149d0c..223f5a3 100644 --- a/tiramisu/option/option.py +++ b/tiramisu/option/option.py @@ -53,6 +53,8 @@ class Option(BaseOption): "_choice_values_params", ) _type = None + _t_type = None + _do_not_display_value_in_error = False def __init__( self, @@ -213,8 +215,10 @@ class Option(BaseOption): """is a dynsymlinkoption?""" return False - def get_type(self) -> str: + def get_type(self, translation=True) -> str: """get the type of option""" + if translation: + return self._t_type return self._type def impl_getdefault(self) -> Any: diff --git a/tiramisu/option/passwordoption.py b/tiramisu/option/passwordoption.py index d346e05..349b9cf 100644 --- a/tiramisu/option/passwordoption.py +++ b/tiramisu/option/passwordoption.py @@ -31,6 +31,8 @@ class PasswordOption(StrOption): __slots__ = tuple() _type = "password" + _t_type = _("password") + _do_not_display_value_in_error = True def __init__(self, *args, min_len=None, max_len=None, forbidden_char=[], **kwargs): extra = {} diff --git a/tiramisu/option/permissionsoption.py b/tiramisu/option/permissionsoption.py index 5ecff99..497eaaa 100644 --- a/tiramisu/option/permissionsoption.py +++ b/tiramisu/option/permissionsoption.py @@ -37,6 +37,7 @@ class PermissionsOption(IntOption): __slots__ = tuple() perm_re = re.compile(r"^[0-7]{3,4}$") _type = "unix file permissions" + _t_type = _("unix file permissions") def __init__( self, diff --git a/tiramisu/option/portoption.py b/tiramisu/option/portoption.py index 81bb2ca..e930863 100644 --- a/tiramisu/option/portoption.py +++ b/tiramisu/option/portoption.py @@ -37,6 +37,7 @@ class PortOption(StrOption): __slots__ = tuple() _type = "port" + _t_type = _("port") def __init__( self, diff --git a/tiramisu/option/stroption.py b/tiramisu/option/stroption.py index ce68bcc..2b77685 100644 --- a/tiramisu/option/stroption.py +++ b/tiramisu/option/stroption.py @@ -31,6 +31,7 @@ class StrOption(Option): __slots__ = tuple() _type = "string" + _t_type = _("string") def validate( self, diff --git a/tiramisu/option/urloption.py b/tiramisu/option/urloption.py index f8ad82a..20f3481 100644 --- a/tiramisu/option/urloption.py +++ b/tiramisu/option/urloption.py @@ -37,6 +37,7 @@ class URLOption(StrOption): __slots__ = tuple() path_re = re.compile(r"^[A-Za-z0-9\-\._~:/\?#\[\]@!%\$&\'\(\)\*\+,;=]+$") _type = "URL" + _t_type = _("URL") def __init__( self, diff --git a/tiramisu/option/usernameoption.py b/tiramisu/option/usernameoption.py index 8451df7..a5200d0 100644 --- a/tiramisu/option/usernameoption.py +++ b/tiramisu/option/usernameoption.py @@ -33,6 +33,7 @@ class UsernameOption(RegexpOption): # regexp build with 'man 8 adduser' informations _regexp = re.compile(r"^[a-z_][a-z0-9_-]{0,30}[$a-z0-9_-]{0,1}$") _type = "unix username" + _t_type = _("unix username") class GroupnameOption(UsernameOption): @@ -40,3 +41,4 @@ class GroupnameOption(UsernameOption): __slots__ = tuple() _type = "unix groupname" + _t_type = _("unix groupname")