From c8a20eefb5645f7f7a4b7711e7993835c8f42286 Mon Sep 17 00:00:00 2001 From: Emmanuel Garette Date: Mon, 30 Sep 2013 22:50:49 +0200 Subject: [PATCH] update invalid's message and display all informations when raises --- tiramisu/option.py | 75 ++++---- translations/fr/tiramisu.po | 346 ++++++++++++++++++++---------------- translations/tiramisu.pot | 300 +++++++++++++++++-------------- 3 files changed, 401 insertions(+), 320 deletions(-) diff --git a/tiramisu/option.py b/tiramisu/option.py index 2bb9328..125f27f 100644 --- a/tiramisu/option.py +++ b/tiramisu/option.py @@ -421,7 +421,11 @@ class Option(BaseOption): if _value is None: return # option validation - self._validate(_value) + try: + self._validate(_value) + except ValueError as err: + raise ValueError(_('invalid value for option {0}: {1}' + '').format(self._name, err.message)) try: # valid with self._validator val_validator(_value) @@ -430,8 +434,8 @@ class Option(BaseOption): descr._valid_consistency(self, _value, context, _index) self._second_level_validation(_value) except ValueError as err: - msg = _("invalid value {0} for option {1}: {2}").format( - _value, self._name, err) + msg = _("invalid value for option {0}: {1}").format( + self._name, err.message) if self._warnings_only: warnings.warn_explicit(ValueWarning(msg, self), ValueWarning, @@ -677,7 +681,7 @@ class BoolOption(Option): def _validate(self, value): if not isinstance(value, bool): - raise ValueError(_('value must be a boolean')) + raise ValueError(_('invalid boolean')) class IntOption(Option): @@ -687,7 +691,7 @@ class IntOption(Option): def _validate(self, value): if not isinstance(value, int): - raise ValueError(_('value must be an integer')) + raise ValueError(_('invalid integer')) class FloatOption(Option): @@ -697,7 +701,7 @@ class FloatOption(Option): def _validate(self, value): if not isinstance(value, float): - raise ValueError(_('value must be a float')) + raise ValueError(_('invalid float')) class StrOption(Option): @@ -707,8 +711,7 @@ class StrOption(Option): def _validate(self, value): if not isinstance(value, str): - raise ValueError(_('value must be a string, not ' - '{0}').format(type(value))) + raise ValueError(_('invalid string')) if sys.version_info[0] >= 3: @@ -725,7 +728,7 @@ else: def _validate(self, value): if not isinstance(value, unicode): - raise ValueError(_('value must be an unicode')) + raise ValueError(_('invalid unicode')) class SymLinkOption(BaseOption): @@ -786,14 +789,14 @@ class IPOption(Option): try: IP('{0}/32'.format(value)) except ValueError: - raise ValueError(_('invalid IP {0}').format(self._name)) + raise ValueError(_('invalid IP')) def _second_level_validation(self, value): ip = IP('{0}/32'.format(value)) if not self._allow_reserved and ip.iptype() == 'RESERVED': - raise ValueError(_("IP mustn't not be in reserved class")) + raise ValueError(_("invalid IP, mustn't not be in reserved class")) if self._private_only and not ip.iptype() == 'PRIVATE': - raise ValueError(_("IP must be in private class")) + raise ValueError(_("invalid IP, must be in private class")) class PortOption(Option): @@ -853,16 +856,17 @@ class PortOption(Option): if self._allow_range and ":" in str(value): value = str(value).split(':') if len(value) != 2: - raise ValueError('range must have two values only') + raise ValueError('invalid part, range must have two values ' + 'only') if not value[0] < value[1]: - raise ValueError('first port in range must be' + raise ValueError('invalid port, first port in range must be' ' smaller than the second one') else: value = [value] for val in value: if not self._min_value <= int(val) <= self._max_value: - raise ValueError('port must be an between {0} and {1}' + raise ValueError('invalid port, must be an between {0} and {1}' ''.format(self._min_value, self._max_value)) @@ -875,12 +879,12 @@ class NetworkOption(Option): try: IP(value) except ValueError: - raise ValueError(_('invalid network address {0}').format(self._name)) + raise ValueError(_('invalid network address')) def _second_level_validation(self, value): ip = IP(value) if ip.iptype() == 'RESERVED': - raise ValueError(_("network shall not be in reserved class")) + raise ValueError(_("invalid network address, must not be in reserved class")) class NetmaskOption(Option): @@ -892,7 +896,7 @@ class NetmaskOption(Option): try: IP('0.0.0.0/{0}'.format(value)) except ValueError: - raise ValueError(_('invalid netmask address {0}').format(self._name)) + raise ValueError(_('invalid netmask address')) def _cons_network_netmask(self, opts, vals): #opts must be (netmask, network) options @@ -930,12 +934,12 @@ class NetmaskOption(Option): except ValueError: if make_net: - msg = _("invalid IP {0} ({1}) with netmask {2} ({3})") + msg = _('invalid IP {0} ({1}) with netmask {2}') else: - msg = _("invalid network {0} ({1}) with netmask {2} ({3})") + msg = _('invalid network {0} ({1}) with netmask {2}') if msg is not None: raise ValueError(msg.format(val_ipnetwork, opts[1]._name, - val_netmask, self._name)) + val_netmask)) class BroadcastOption(Option): @@ -946,7 +950,7 @@ class BroadcastOption(Option): try: IP('{0}/32'.format(value)) except ValueError: - raise ValueError(_('invalid broadcast address {0}').format(self._name)) + raise ValueError(_('invalid broadcast address')) def _cons_broadcast(self, opts, vals): if len(vals) != 3: @@ -1017,16 +1021,13 @@ class DomainnameOption(Option): pass if self._type == 'domainname' and not self._allow_without_dot and \ '.' not in value: - raise ValueError(_("invalid domainname for {0}, must have dot" - "").format(self._name)) + raise ValueError(_("invalid domainname, must have dot")) if len(value) > 255: - raise ValueError(_("invalid domainname's length for" - " {0} (max 255)").format(self._name)) + raise ValueError(_("invalid domainname's length (max 255)")) if len(value) < 2: - raise ValueError(_("invalid domainname's length for {0} (min 2)" - "").format(self._name)) + raise ValueError(_("invalid domainname's length (min 2)")) if not self._domain_re.search(value): - raise ValueError(_('invalid domainname: {0}'.format(self._name))) + raise ValueError(_('invalid domainname')) class EmailOption(DomainnameOption): @@ -1045,10 +1046,10 @@ class EmailOption(DomainnameOption): try: username, domain = splitted except ValueError: - raise ValueError(_('invalid email address, should contains one @ ' - 'for {0}').format(self._name)) + raise ValueError(_('invalid email address, should contains one @' + )) if not self.username_re.search(username): - raise ValueError(_('invalid username in email address for {0}').format(self._name)) + raise ValueError(_('invalid username in email address')) super(EmailOption, self)._validate(domain) @@ -1068,7 +1069,7 @@ class URLOption(DomainnameOption): match = self.proto_re.search(value) if not match: raise ValueError(_('invalid url, should start with http:// or ' - 'https:// for {0}').format(self._name)) + 'https://')) value = value[len(match.group(0)):] # get domain/files splitted = value.split('/', 1) @@ -1086,13 +1087,13 @@ class URLOption(DomainnameOption): domain = splitted[0] port = 0 if not 0 <= int(port) <= 65535: - raise ValueError(_('port must be an between 0 and 65536')) + raise ValueError(_('invalid url, port must be an between 0 and ' + '65536')) # validate domainname super(URLOption, self)._validate(domain) # validate file if files is not None and files != '' and not self.path_re.search(files): - raise ValueError(_('invalid url, should endswith with filename for' - ' {0}').format(self._name)) + raise ValueError(_('invalid url, should ends with filename')) class FileOption(Option): @@ -1103,7 +1104,7 @@ class FileOption(Option): def _validate(self, value): match = self.path_re.search(value) if not match: - raise ValueError(_('invalid filename for {0}').format(self._name)) + raise ValueError(_('invalid filename')) class OptionDescription(BaseOption): diff --git a/translations/fr/tiramisu.po b/translations/fr/tiramisu.po index 256a0da..ec9e66d 100644 --- a/translations/fr/tiramisu.po +++ b/translations/fr/tiramisu.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-09-28 19:06+CEST\n" +"POT-Creation-Date: 2013-09-30 22:49+CEST\n" "PO-Revision-Date: \n" "Last-Translator: Emmanuel Garette \n" "Language-Team: LANGUAGE \n" @@ -11,14 +11,14 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Poedit 1.5.4\n" -#: tiramisu/autolib.py:144 +#: tiramisu/autolib.py:145 msgid "" "unable to carry out a calculation, option {0} has properties: {1} for: {2}" msgstr "" "impossible d'effectuer le calcul, l'option {0} a les propriétés : {1} pour : " "{2}" -#: tiramisu/autolib.py:153 +#: tiramisu/autolib.py:154 msgid "" "unable to carry out a calculation, option value with multi types must have " "same length for: {0}" @@ -26,80 +26,80 @@ msgstr "" "impossible d'effectuer le calcul, la valeur d'une option avec le type multi " "doit avoir la même longueur pour : {0}" -#: tiramisu/config.py:51 +#: tiramisu/config.py:52 msgid "descr must be an optiondescription, not {0}" msgstr "descr doit être une optiondescription pas un {0}" -#: tiramisu/config.py:126 +#: tiramisu/config.py:127 msgid "unknown group_type: {0}" msgstr "group_type inconnu: {0}" -#: tiramisu/config.py:162 +#: tiramisu/config.py:163 msgid "" "no option description found for this config (may be metaconfig without meta)" msgstr "" "pas d'option description trouvé pour cette config (peut être une metaconfig " "sans meta)" -#: tiramisu/config.py:188 +#: tiramisu/config.py:189 msgid "can't assign to an OptionDescription" msgstr "ne peut pas attribuer une valeur à une OptionDescription" -#: tiramisu/config.py:319 +#: tiramisu/config.py:320 msgid "unknown type_ type {0}for _find" msgstr "type_ type {0} pour _find inconnu" -#: tiramisu/config.py:358 +#: tiramisu/config.py:359 msgid "no option found in config with these criteria" msgstr "aucune option trouvée dans la config avec ces critères" -#: tiramisu/config.py:408 +#: tiramisu/config.py:409 msgid "make_dict can't filtering with value without option" msgstr "make_dict ne peut filtrer sur une valeur mais sans option" -#: tiramisu/config.py:429 +#: tiramisu/config.py:430 msgid "unexpected path {0}, should start with {1}" msgstr "chemin imprévu {0}, devrait commencer par {1}" -#: tiramisu/config.py:489 +#: tiramisu/config.py:490 msgid "opt in getowner must be an option not {0}" msgstr "opt dans getowner doit être une option pas {0}" -#: tiramisu/option.py:68 +#: tiramisu/option.py:69 msgid "invalid name: {0} for option" msgstr "nom invalide : {0} pour l'option" -#: tiramisu/option.py:77 +#: tiramisu/option.py:78 msgid "invalid properties type {0} for {1}, must be a tuple" msgstr "type des properties invalide {0} pour {1}, doit être un tuple" -#: tiramisu/option.py:115 +#: tiramisu/option.py:116 msgid "'{0}' ({1}) object attribute '{2}' is read-only" msgstr "l'attribut {2} de l'objet '{0}' ({1}) est en lecture seule" -#: tiramisu/option.py:142 tiramisu/value.py:360 +#: tiramisu/option.py:143 tiramisu/value.py:362 msgid "information's item not found: {0}" msgstr "aucune config spécifié alors que c'est nécessaire" -#: tiramisu/option.py:204 +#: tiramisu/option.py:205 msgid "cannot serialize Option, only in OptionDescription" msgstr "ne peut serialiser une Option, seulement via une OptionDescription" -#: tiramisu/option.py:307 +#: tiramisu/option.py:308 msgid "a default_multi is set whereas multi is False in option: {0}" msgstr "" "une default_multi est renseignée alors que multi est False dans l'option : " "{0}" -#: tiramisu/option.py:313 +#: tiramisu/option.py:314 msgid "invalid default_multi value {0} for option {1}: {2}" msgstr "la valeur default_multi est invalide {0} pour l'option {1} : {2}" -#: tiramisu/option.py:318 +#: tiramisu/option.py:319 msgid "default value not allowed if option: {0} is calculated" msgstr "la valeur par défaut n'est pas possible si l'option {0} est calculée" -#: tiramisu/option.py:321 +#: tiramisu/option.py:322 msgid "" "params defined for a callback function but no callback defined yet for " "option {0}" @@ -107,221 +107,250 @@ msgstr "" "params définis pour une fonction callback mais par de callback encore " "définis pour l'option {0}" -#: tiramisu/option.py:360 +#: tiramisu/option.py:361 msgid "option not in all_cons_opts" msgstr "option non présentante dans all_cons_opts" -#: tiramisu/option.py:432 tiramisu/value.py:545 -msgid "invalid value {0} for option {1}: {2}" -msgstr "valeur invalide {0} pour l'option {1} : {2}" +#: tiramisu/option.py:427 tiramisu/option.py:437 +msgid "invalid value for option {0}: {1}" +msgstr "valeur invalide pour l'option {0} : {1}" -#: tiramisu/option.py:449 +#: tiramisu/option.py:454 msgid "which must be a list" msgstr "lequel doit être une liste" -#: tiramisu/option.py:509 +#: tiramisu/option.py:514 msgid "consistency should be set with an option" msgstr "consistency doit être configuré avec une option" -#: tiramisu/option.py:511 +#: tiramisu/option.py:516 msgid "cannot add consistency with itself" msgstr "ne peut ajouter une consistency avec lui même" -#: tiramisu/option.py:513 +#: tiramisu/option.py:518 msgid "every options in consistency should be multi or none" msgstr "" "toutes les options d'une consistency devrait être multi ou ne pas l'être" -#: tiramisu/option.py:533 +#: tiramisu/option.py:538 msgid "same value for {0} and {1}" msgstr "même valeur pour {0} et {1}" -#: tiramisu/option.py:642 +#: tiramisu/option.py:647 msgid "values must be a tuple for {0}" msgstr "values doit être un tuple pour {0}" -#: tiramisu/option.py:645 +#: tiramisu/option.py:650 msgid "open_values must be a boolean for {0}" msgstr "open_values doit être un booléen pour {0}" -#: tiramisu/option.py:667 +#: tiramisu/option.py:672 msgid "value {0} is not permitted, only {1} is allowed" msgstr "valeur {0} n'est pas permis, seules {1} sont autorisées" -#: tiramisu/option.py:679 -msgid "value must be a boolean" -msgstr "valeur doit être un booléen" +#: tiramisu/option.py:684 +msgid "invalid boolean" +msgstr "booléen invalide" -#: tiramisu/option.py:689 -msgid "value must be an integer" -msgstr "valeur doit être un nombre entier" +#: tiramisu/option.py:694 +msgid "invalid integer" +msgstr "nombre invalide" -#: tiramisu/option.py:699 -msgid "value must be a float" -msgstr "valeur doit être un nombre flottant" +#: tiramisu/option.py:704 +msgid "invalid float" +msgstr "invalide nombre flottan" -#: tiramisu/option.py:709 -msgid "value must be a string, not {0}" -msgstr "valeur doit être une chaîne, pas {0}" +#: tiramisu/option.py:714 +msgid "invalid string" +msgstr "invalide caractère" -#: tiramisu/option.py:727 -msgid "value must be an unicode" -msgstr "valeur doit être une valeur unicode" +#: tiramisu/option.py:731 +msgid "invalid unicode" +msgstr "invalide unicode" -#: tiramisu/option.py:739 +#: tiramisu/option.py:743 msgid "malformed symlinkoption must be an option for symlink {0}" msgstr "symlinkoption mal formé, doit être une option pour symlink {0}" -#: tiramisu/option.py:788 -msgid "invalid IP {0}" -msgstr "adresse IP invalide {0}" +#: tiramisu/option.py:792 +msgid "invalid IP" +msgstr "adresse IP invalide" -#: tiramisu/option.py:793 -msgid "IP mustn't not be in reserved class" -msgstr "IP ne doit pas être d'une classe reservée" +#: tiramisu/option.py:797 +msgid "invalid IP, mustn't not be in reserved class" +msgstr "adresse IP invalide, ne doit pas être d'une classe reservée" -#: tiramisu/option.py:795 -msgid "IP must be in private class" -msgstr "IP doit être dans la classe privée" +#: tiramisu/option.py:799 +msgid "invalid IP, must be in private class" +msgstr "adresse IP invalide, doit être dans la classe privée" -#: tiramisu/option.py:833 +#: tiramisu/option.py:837 msgid "inconsistency in allowed range" msgstr "inconsistence dans la plage autorisée" -#: tiramisu/option.py:838 +#: tiramisu/option.py:842 msgid "max value is empty" msgstr "la valeur maximum est vide" -#: tiramisu/option.py:877 -msgid "invalid network address {0}" -msgstr "adresse réseau invalide {0}" - #: tiramisu/option.py:882 -msgid "network shall not be in reserved class" -msgstr "le réseau ne doit pas être dans la classe reservée" +msgid "invalid network address" +msgstr "adresse réseau invalide" -#: tiramisu/option.py:894 -msgid "invalid netmask address {0}" -msgstr "masque de sous-réseau invalide {0}" +#: tiramisu/option.py:887 +msgid "invalid network address, must not be in reserved class" +msgstr "adresse réseau invalide, ne doit pas être dans la classe reservée" -#: tiramisu/option.py:910 +#: tiramisu/option.py:899 +msgid "invalid netmask address" +msgstr "masque de sous-réseau invalide" + +#: tiramisu/option.py:915 msgid "invalid len for opts" msgstr "longueur invalide pour opts" -#: tiramisu/option.py:922 +#: tiramisu/option.py:927 msgid "invalid network {0} ({1}) with netmask {2} ({3}), this network is an IP" msgstr "réseau invalide {0} ({1}) avec masque {2} ({3}), ce réseau est une IP" -#: tiramisu/option.py:927 +#: tiramisu/option.py:932 msgid "invalid IP {0} ({1}) with netmask {2} ({3}), this IP is a network" msgstr "IP invalide {0} ({1}) avec masque {2} ({3}), cette IP est un réseau" -#: tiramisu/option.py:932 -msgid "invalid IP {0} ({1}) with netmask {2} ({3})" -msgstr "IP invalide {0} ({1}) avec masque {2} ({3})" +#: tiramisu/option.py:937 +msgid "invalid IP {0} ({1}) with netmask {2}" +msgstr "IP invalide {0} ({1}) avec masque {2}" -#: tiramisu/option.py:934 -msgid "invalid network {0} ({1}) with netmask {2} ({3})" -msgstr "réseau invalide {0} ({1}) avec masque {2} ({3})" +#: tiramisu/option.py:939 +msgid "invalid network {0} ({1}) with netmask {2}" +msgstr "réseau invalide {0} ({1}) avec masque {2}" -#: tiramisu/option.py:948 -msgid "invalid broadcast address {0}" -msgstr "adresse de broadcast invalide {0}" +#: tiramisu/option.py:953 +msgid "invalid broadcast address" +msgstr "adresse de broadcast invalide" -#: tiramisu/option.py:952 +#: tiramisu/option.py:957 msgid "invalid len for vals" msgstr "longueur invalide pour vals" -#: tiramisu/option.py:957 +#: tiramisu/option.py:962 msgid "" "invalid broadcast {0} ({1}) with network {2} ({3}) and netmask {4} ({5})" msgstr "" "Broadcast invalide {0} ({1}) avec le réseau {2} ({3}) et le masque {4} ({5})" -#: tiramisu/option.py:979 +#: tiramisu/option.py:984 msgid "unknown type_ {0} for hostname" msgstr "type_ inconnu {0} pour le nom d'hôte" -#: tiramisu/option.py:982 +#: tiramisu/option.py:987 msgid "allow_ip must be a boolean" msgstr "allow_ip doit être un booléen" -#: tiramisu/option.py:1012 -msgid "invalid value for {0}, must have dot" -msgstr "valeur invalide pour {0}, doit avoir un point" +#: tiramisu/option.py:989 +msgid "allow_without_dot must be a boolean" +msgstr "allow_without_dot doit être un booléen" -#: tiramisu/option.py:1015 -msgid "invalid domainname's length for {0} (max {1})" -msgstr "longueur du nom de domaine invalide pour {0} (maximum {1})" +#: tiramisu/option.py:1024 +msgid "invalid domainname, must have dot" +msgstr "nom de domaine invalide, doit avoir un point" -#: tiramisu/option.py:1018 -msgid "invalid domainname's length for {0} (min 2)" -msgstr "longueur du nom de domaine invalide pour {0} (minimum 2)" +#: tiramisu/option.py:1026 +msgid "invalid domainname's length (max 255)" +msgstr "longueur du nom de domaine invalide (maximum {1})" -#: tiramisu/option.py:1022 +#: tiramisu/option.py:1028 +msgid "invalid domainname's length (min 2)" +msgstr "longueur du nom de domaine invalide (minimum 2)" + +#: tiramisu/option.py:1030 msgid "invalid domainname" msgstr "nom de domaine invalide" #: tiramisu/option.py:1049 +msgid "invalid email address, should contains one @" +msgstr "adresse email invalide, devrait contenir un @" + +#: tiramisu/option.py:1052 +msgid "invalid username in email address" +msgstr "nom d'utilisateur invalide dans une adresse email" + +#: tiramisu/option.py:1071 +msgid "invalid url, should start with http:// or https://" +msgstr "URL invalide, devrait démarré avec http:// ou https://" + +#: tiramisu/option.py:1090 +msgid "invalid url, port must be an between 0 and 65536" +msgstr "URL invalide, port doit être entre 0 et 65536" + +#: tiramisu/option.py:1096 +#, fuzzy +msgid "invalid url, should ends with filename" +msgstr "URL invalide, devrait finir avec un nom de fichier" + +#: tiramisu/option.py:1107 +msgid "invalid filename" +msgstr "nom de fichier invalide" + +#: tiramisu/option.py:1134 msgid "duplicate option name: {0}" msgstr "nom de l'option dupliqué : {0}" -#: tiramisu/option.py:1067 +#: tiramisu/option.py:1152 msgid "unknown Option {0} in OptionDescription {1}" msgstr "Option {0} inconnue pour l'OptionDescription {1}" -#: tiramisu/option.py:1118 +#: tiramisu/option.py:1203 msgid "duplicate option: {0}" msgstr "option dupliquée : {0}" -#: tiramisu/option.py:1148 +#: tiramisu/option.py:1233 msgid "consistency with option {0} which is not in Config" msgstr "consistency avec l'option {0} qui n'est pas dans une Config" -#: tiramisu/option.py:1156 +#: tiramisu/option.py:1241 msgid "no option for path {0}" msgstr "pas d'option pour le chemin {0}" -#: tiramisu/option.py:1162 +#: tiramisu/option.py:1247 msgid "no option {0} found" msgstr "pas d'option {0} trouvée" -#: tiramisu/option.py:1172 +#: tiramisu/option.py:1257 msgid "cannot change group_type if already set (old {0}, new {1})" msgstr "ne peut changer group_type si déjà spécifié (ancien {0}, nouveau {1})" -#: tiramisu/option.py:1185 +#: tiramisu/option.py:1270 msgid "master group {0} shall not have a subgroup" msgstr "groupe maître {0} ne doit pas avoir de sous-groupe" -#: tiramisu/option.py:1188 +#: tiramisu/option.py:1273 msgid "master group {0} shall not have a symlinkoption" msgstr "groupe maître {0} ne doit pas avoir de symlinkoption" -#: tiramisu/option.py:1191 +#: tiramisu/option.py:1276 msgid "not allowed option {0} in group {1}: this option is not a multi" msgstr "" "option non autorisée {0} dans le groupe {1} : cette option n'est pas une " "multi" -#: tiramisu/option.py:1202 +#: tiramisu/option.py:1287 msgid "master group with wrong master name for {0}" msgstr "le groupe maître avec un nom de maître érroné pour {0}" -#: tiramisu/option.py:1211 +#: tiramisu/option.py:1296 msgid "no child has same nom has master group for: {0}" msgstr "pas d'enfant avec le nom du groupe maître pour {0} " -#: tiramisu/option.py:1214 +#: tiramisu/option.py:1299 msgid "group_type: {0} not allowed" msgstr "group_type : {0} non autorisé" -#: tiramisu/option.py:1306 +#: tiramisu/option.py:1391 msgid "malformed requirements type for option: {0}, must be a dict" msgstr "" "type requirements malformé pour l'option : {0}, doit être un dictionnaire" -#: tiramisu/option.py:1323 +#: tiramisu/option.py:1408 msgid "" "malformed requirements for option: {0} require must have option, expected " "and action keys" @@ -329,110 +358,110 @@ msgstr "" "requirements malformé pour l'option : {0} l'exigence doit avoir les clefs " "option, expected et action" -#: tiramisu/option.py:1328 +#: tiramisu/option.py:1413 msgid "malformed requirements for option: {0} inverse must be boolean" msgstr "" "requirements mal formés pour l'option : {0} inverse doit être un booléen" -#: tiramisu/option.py:1332 +#: tiramisu/option.py:1417 msgid "malformed requirements for option: {0} transitive must be boolean" msgstr "" "requirements mal formés pour l'option : {0} transitive doit être booléen" -#: tiramisu/option.py:1336 +#: tiramisu/option.py:1421 msgid "malformed requirements for option: {0} same_action must be boolean" msgstr "" "requirements mal formés pour l'option : {0} same_action doit être un booléen" -#: tiramisu/option.py:1340 +#: tiramisu/option.py:1425 msgid "malformed requirements must be an option in option {0}" msgstr "requirements mal formés doit être une option dans l'option {0}" -#: tiramisu/option.py:1343 +#: tiramisu/option.py:1428 msgid "malformed requirements option {0} should not be a multi" msgstr "requirements mal formés l'option {0} ne doit pas être une multi" -#: tiramisu/option.py:1349 +#: tiramisu/option.py:1434 msgid "" "malformed requirements second argument must be valid for option {0}: {1}" msgstr "" "requirements mal formés deuxième argument doit être valide pour l'option " "{0} : {1}" -#: tiramisu/option.py:1354 +#: tiramisu/option.py:1439 msgid "inconsistency in action types for option: {0} action: {1}" msgstr "incohérence dans les types action pour l'option : {0} action {1}" -#: tiramisu/option.py:1379 +#: tiramisu/option.py:1464 msgid "{0} should be a function" msgstr "{0} doit être une fonction" -#: tiramisu/option.py:1382 +#: tiramisu/option.py:1467 msgid "{0}_params should be a dict" msgstr "{0}_params devrait être un dict" -#: tiramisu/option.py:1385 +#: tiramisu/option.py:1470 msgid "{0}_params with key {1} should not have length different to 1" msgstr "" "{0}_params avec la clef {1} devrait ne pas avoir une longueur différent de 1" -#: tiramisu/option.py:1389 +#: tiramisu/option.py:1474 msgid "{0}_params should be tuple for key \"{1}\"" msgstr "{0}_params devrait être un tuple pour la clef \"{1}\"" -#: tiramisu/option.py:1395 +#: tiramisu/option.py:1480 msgid "validator not support tuple" msgstr "validator n'accepte pas de tuple" -#: tiramisu/option.py:1398 +#: tiramisu/option.py:1483 msgid "{0}_params should have an option not a {0} for first argument" msgstr "{0}_params devrait avoir une option pas un {0} pour premier argument" -#: tiramisu/option.py:1402 +#: tiramisu/option.py:1487 msgid "{0}_params should have a boolean not a {0} for second argument" msgstr "{0}_params devrait avoir un boolean pas un {0} pour second argument" -#: tiramisu/setting.py:111 +#: tiramisu/setting.py:116 msgid "can't rebind {0}" msgstr "ne peut redéfinir ({0})" -#: tiramisu/setting.py:116 +#: tiramisu/setting.py:121 msgid "can't unbind {0}" msgstr "ne peut supprimer ({0})" -#: tiramisu/setting.py:254 +#: tiramisu/setting.py:259 msgid "cannot append {0} property for option {1}: this property is calculated" msgstr "" "ne peut ajouter la propriété {0} dans l'option {1}: cette propriété est " "calculée" -#: tiramisu/setting.py:317 +#: tiramisu/setting.py:322 msgid "opt and all_properties must not be set together in reset" msgstr "opt et all_properties ne doit pas être renseigné ensemble dans reset" -#: tiramisu/setting.py:332 +#: tiramisu/setting.py:337 msgid "if opt is not None, path should not be None in _getproperties" msgstr "" "si opt n'est pas None, path devrait ne pas être à None dans _getproperties" -#: tiramisu/setting.py:435 +#: tiramisu/setting.py:440 msgid "cannot change the value for option {0} this option is frozen" msgstr "" "ne peut modifier la valeur de l'option {0} cette option n'est pas modifiable" -#: tiramisu/setting.py:441 +#: tiramisu/setting.py:446 msgid "trying to access to an option named: {0} with properties {1}" msgstr "tentative d'accès à une option nommée : {0} avec les propriétés {1}" -#: tiramisu/setting.py:459 +#: tiramisu/setting.py:464 msgid "permissive must be a tuple" msgstr "permissive doit être un tuple" -#: tiramisu/setting.py:466 tiramisu/value.py:299 +#: tiramisu/setting.py:471 tiramisu/value.py:301 msgid "invalid generic owner {0}" msgstr "invalide owner générique {0}" -#: tiramisu/setting.py:553 +#: tiramisu/setting.py:558 msgid "" "malformed requirements imbrication detected for option: '{0}' with " "requirement on: '{1}'" @@ -440,73 +469,92 @@ msgstr "" "imbrication de requirements mal formés detectée pour l'option : '{0}' avec " "requirement sur : '{1}'" -#: tiramisu/setting.py:565 +#: tiramisu/setting.py:570 msgid "option '{0}' has requirement's property error: {1} {2}" msgstr "l'option '{0}' a une erreur de propriété pour le requirement : {1} {2}" -#: tiramisu/storage/__init__.py:47 +#: tiramisu/storage/__init__.py:52 msgid "storage_type is already set, cannot rebind it" msgstr "storage_type est déjà défini, impossible de le redéfinir" -#: tiramisu/storage/__init__.py:81 +#: tiramisu/storage/__init__.py:86 msgid "option {0} not already exists in storage {1}" msgstr "option {0} n'existe pas dans l'espace de stockage {1}" -#: tiramisu/storage/dictionary/storage.py:37 +#: tiramisu/storage/dictionary/storage.py:39 msgid "dictionary storage cannot delete session" msgstr "" "impossible de supprimer une session dans un espace de stockage dictionary" -#: tiramisu/storage/dictionary/storage.py:48 +#: tiramisu/storage/dictionary/storage.py:50 msgid "session already used" msgstr "session déjà utilisée" -#: tiramisu/storage/dictionary/storage.py:50 +#: tiramisu/storage/dictionary/storage.py:52 msgid "a dictionary cannot be persistent" msgstr "un espace de stockage dictionary ne peut être persistant" -#: tiramisu/value.py:306 +#: tiramisu/value.py:308 msgid "no value for {0} cannot change owner to {1}" msgstr "pas de valeur pour {0} ne peut changer d'utilisateur pour {1}" -#: tiramisu/value.py:414 +#: tiramisu/value.py:416 msgid "invalid len for the slave: {0} which has {1} as master" msgstr "longueur invalide pour une esclave : {0} qui a {1} comme maître" -#: tiramisu/value.py:438 +#: tiramisu/value.py:440 msgid "invalid len for the master: {0} which has {1} as slave with greater len" msgstr "" "longueur invalide pour un maître : {0} qui a {1} une esclave avec une plus " "grande longueur" -#: tiramisu/value.py:468 +#: tiramisu/value.py:470 msgid "cannot append a value on a multi option {0} which is a slave" msgstr "ne peut ajouter une valeur sur l'option multi {0} qui est une esclave" -#: tiramisu/value.py:505 +#: tiramisu/value.py:507 msgid "cannot sort multi option {0} if master or slave" msgstr "ne peut trier une option multi {0} pour une maître ou une esclave" -#: tiramisu/value.py:509 +#: tiramisu/value.py:511 msgid "cmp is not permitted in python v3 or greater" msgstr "cmp n'est pas permis en python v3 ou supérieure" -#: tiramisu/value.py:518 +#: tiramisu/value.py:520 msgid "cannot reverse multi option {0} if master or slave" msgstr "ne peut inverser une option multi {0} pour une maître ou une esclave" -#: tiramisu/value.py:526 +#: tiramisu/value.py:528 msgid "cannot insert multi option {0} if master or slave" msgstr "ne peut insérer une option multi {0} pour une maître ou une esclave" -#: tiramisu/value.py:534 +#: tiramisu/value.py:536 msgid "cannot extend multi option {0} if master or slave" msgstr "ne peut étendre une option multi {0} pour une maître ou une esclave" -#: tiramisu/value.py:562 +#: tiramisu/value.py:547 +msgid "invalid value {0} for option {1}: {2}" +msgstr "valeur invalide {0} pour l'option {1} : {2}" + +#: tiramisu/value.py:564 msgid "cannot pop a value on a multi option {0} which is a slave" msgstr "ne peut supprimer une valeur dans l'option multi {0} qui est esclave" +#~ msgid "value must be a boolean" +#~ msgstr "valeur doit être un booléen" + +#~ msgid "value must be an integer" +#~ msgstr "valeur doit être un nombre entier" + +#~ msgid "value must be a float" +#~ msgstr "valeur doit être un nombre flottant" + +#~ msgid "value must be a string, not {0}" +#~ msgstr "valeur doit être une chaîne, pas {0}" + +#~ msgid "value must be an unicode" +#~ msgstr "valeur doit être une valeur unicode" + #~ msgid "invalid value {0} for option {1} which must be a list" #~ msgstr "valeur invalide {0} pour l'option {1} qui doit être une liste" diff --git a/translations/tiramisu.pot b/translations/tiramisu.pot index 57b90e8..89808a9 100644 --- a/translations/tiramisu.pot +++ b/translations/tiramisu.pot @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2013-09-28 19:06+CEST\n" +"POT-Creation-Date: 2013-09-30 22:49+CEST\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -15,455 +15,487 @@ msgstr "" "Generated-By: pygettext.py 1.5\n" -#: tiramisu/autolib.py:144 +#: tiramisu/autolib.py:145 msgid "unable to carry out a calculation, option {0} has properties: {1} for: {2}" msgstr "" -#: tiramisu/autolib.py:153 +#: tiramisu/autolib.py:154 msgid "unable to carry out a calculation, option value with multi types must have same length for: {0}" msgstr "" -#: tiramisu/config.py:51 +#: tiramisu/config.py:52 msgid "descr must be an optiondescription, not {0}" msgstr "" -#: tiramisu/config.py:126 +#: tiramisu/config.py:127 msgid "unknown group_type: {0}" msgstr "" -#: tiramisu/config.py:162 +#: tiramisu/config.py:163 msgid "no option description found for this config (may be metaconfig without meta)" msgstr "" -#: tiramisu/config.py:188 +#: tiramisu/config.py:189 msgid "can't assign to an OptionDescription" msgstr "" -#: tiramisu/config.py:319 +#: tiramisu/config.py:320 msgid "unknown type_ type {0}for _find" msgstr "" -#: tiramisu/config.py:358 +#: tiramisu/config.py:359 msgid "no option found in config with these criteria" msgstr "" -#: tiramisu/config.py:408 +#: tiramisu/config.py:409 msgid "make_dict can't filtering with value without option" msgstr "" -#: tiramisu/config.py:429 +#: tiramisu/config.py:430 msgid "unexpected path {0}, should start with {1}" msgstr "" -#: tiramisu/config.py:489 +#: tiramisu/config.py:490 msgid "opt in getowner must be an option not {0}" msgstr "" -#: tiramisu/option.py:68 +#: tiramisu/option.py:69 msgid "invalid name: {0} for option" msgstr "" -#: tiramisu/option.py:77 +#: tiramisu/option.py:78 msgid "invalid properties type {0} for {1}, must be a tuple" msgstr "" -#: tiramisu/option.py:115 +#: tiramisu/option.py:116 msgid "'{0}' ({1}) object attribute '{2}' is read-only" msgstr "" -#: tiramisu/option.py:142 tiramisu/value.py:360 +#: tiramisu/option.py:143 tiramisu/value.py:362 msgid "information's item not found: {0}" msgstr "" -#: tiramisu/option.py:204 +#: tiramisu/option.py:205 msgid "cannot serialize Option, only in OptionDescription" msgstr "" -#: tiramisu/option.py:307 +#: tiramisu/option.py:308 msgid "a default_multi is set whereas multi is False in option: {0}" msgstr "" -#: tiramisu/option.py:313 +#: tiramisu/option.py:314 msgid "invalid default_multi value {0} for option {1}: {2}" msgstr "" -#: tiramisu/option.py:318 +#: tiramisu/option.py:319 msgid "default value not allowed if option: {0} is calculated" msgstr "" -#: tiramisu/option.py:321 +#: tiramisu/option.py:322 msgid "params defined for a callback function but no callback defined yet for option {0}" msgstr "" -#: tiramisu/option.py:360 +#: tiramisu/option.py:361 msgid "option not in all_cons_opts" msgstr "" -#: tiramisu/option.py:432 tiramisu/value.py:545 -msgid "invalid value {0} for option {1}: {2}" +#: tiramisu/option.py:427 tiramisu/option.py:437 +msgid "invalid value for option {0}: {1}" msgstr "" -#: tiramisu/option.py:449 +#: tiramisu/option.py:454 msgid "which must be a list" msgstr "" -#: tiramisu/option.py:509 +#: tiramisu/option.py:514 msgid "consistency should be set with an option" msgstr "" -#: tiramisu/option.py:511 +#: tiramisu/option.py:516 msgid "cannot add consistency with itself" msgstr "" -#: tiramisu/option.py:513 +#: tiramisu/option.py:518 msgid "every options in consistency should be multi or none" msgstr "" -#: tiramisu/option.py:533 +#: tiramisu/option.py:538 msgid "same value for {0} and {1}" msgstr "" -#: tiramisu/option.py:642 +#: tiramisu/option.py:647 msgid "values must be a tuple for {0}" msgstr "" -#: tiramisu/option.py:645 +#: tiramisu/option.py:650 msgid "open_values must be a boolean for {0}" msgstr "" -#: tiramisu/option.py:667 +#: tiramisu/option.py:672 msgid "value {0} is not permitted, only {1} is allowed" msgstr "" -#: tiramisu/option.py:679 -msgid "value must be a boolean" +#: tiramisu/option.py:684 +msgid "invalid boolean" msgstr "" -#: tiramisu/option.py:689 -msgid "value must be an integer" +#: tiramisu/option.py:694 +msgid "invalid integer" msgstr "" -#: tiramisu/option.py:699 -msgid "value must be a float" +#: tiramisu/option.py:704 +msgid "invalid float" msgstr "" -#: tiramisu/option.py:709 -msgid "value must be a string, not {0}" +#: tiramisu/option.py:714 +msgid "invalid string" msgstr "" -#: tiramisu/option.py:727 -msgid "value must be an unicode" +#: tiramisu/option.py:731 +msgid "invalid unicode" msgstr "" -#: tiramisu/option.py:739 +#: tiramisu/option.py:743 msgid "malformed symlinkoption must be an option for symlink {0}" msgstr "" -#: tiramisu/option.py:788 -msgid "invalid IP {0}" +#: tiramisu/option.py:792 +msgid "invalid IP" msgstr "" -#: tiramisu/option.py:793 -msgid "IP mustn't not be in reserved class" +#: tiramisu/option.py:797 +msgid "invalid IP, mustn't not be in reserved class" msgstr "" -#: tiramisu/option.py:795 -msgid "IP must be in private class" +#: tiramisu/option.py:799 +msgid "invalid IP, must be in private class" msgstr "" -#: tiramisu/option.py:833 +#: tiramisu/option.py:837 msgid "inconsistency in allowed range" msgstr "" -#: tiramisu/option.py:838 +#: tiramisu/option.py:842 msgid "max value is empty" msgstr "" -#: tiramisu/option.py:877 -msgid "invalid network address {0}" -msgstr "" - #: tiramisu/option.py:882 -msgid "network shall not be in reserved class" +msgid "invalid network address" msgstr "" -#: tiramisu/option.py:894 -msgid "invalid netmask address {0}" +#: tiramisu/option.py:887 +msgid "invalid network address, must not be in reserved class" msgstr "" -#: tiramisu/option.py:910 +#: tiramisu/option.py:899 +msgid "invalid netmask address" +msgstr "" + +#: tiramisu/option.py:915 msgid "invalid len for opts" msgstr "" -#: tiramisu/option.py:922 +#: tiramisu/option.py:927 msgid "invalid network {0} ({1}) with netmask {2} ({3}), this network is an IP" msgstr "" -#: tiramisu/option.py:927 +#: tiramisu/option.py:932 msgid "invalid IP {0} ({1}) with netmask {2} ({3}), this IP is a network" msgstr "" -#: tiramisu/option.py:932 -msgid "invalid IP {0} ({1}) with netmask {2} ({3})" +#: tiramisu/option.py:937 +msgid "invalid IP {0} ({1}) with netmask {2}" msgstr "" -#: tiramisu/option.py:934 -msgid "invalid network {0} ({1}) with netmask {2} ({3})" +#: tiramisu/option.py:939 +msgid "invalid network {0} ({1}) with netmask {2}" msgstr "" -#: tiramisu/option.py:948 -msgid "invalid broadcast address {0}" -msgstr "" - -#: tiramisu/option.py:952 -msgid "invalid len for vals" +#: tiramisu/option.py:953 +msgid "invalid broadcast address" msgstr "" #: tiramisu/option.py:957 +msgid "invalid len for vals" +msgstr "" + +#: tiramisu/option.py:962 msgid "invalid broadcast {0} ({1}) with network {2} ({3}) and netmask {4} ({5})" msgstr "" -#: tiramisu/option.py:979 +#: tiramisu/option.py:984 msgid "unknown type_ {0} for hostname" msgstr "" -#: tiramisu/option.py:982 +#: tiramisu/option.py:987 msgid "allow_ip must be a boolean" msgstr "" -#: tiramisu/option.py:1012 -msgid "invalid value for {0}, must have dot" +#: tiramisu/option.py:989 +msgid "allow_without_dot must be a boolean" msgstr "" -#: tiramisu/option.py:1015 -msgid "invalid domainname's length for {0} (max {1})" +#: tiramisu/option.py:1024 +msgid "invalid domainname, must have dot" msgstr "" -#: tiramisu/option.py:1018 -msgid "invalid domainname's length for {0} (min 2)" +#: tiramisu/option.py:1026 +msgid "invalid domainname's length (max 255)" msgstr "" -#: tiramisu/option.py:1022 +#: tiramisu/option.py:1028 +msgid "invalid domainname's length (min 2)" +msgstr "" + +#: tiramisu/option.py:1030 msgid "invalid domainname" msgstr "" #: tiramisu/option.py:1049 +msgid "invalid email address, should contains one @" +msgstr "" + +#: tiramisu/option.py:1052 +msgid "invalid username in email address" +msgstr "" + +#: tiramisu/option.py:1071 +msgid "invalid url, should start with http:// or https://" +msgstr "" + +#: tiramisu/option.py:1090 +msgid "invalid url, port must be an between 0 and 65536" +msgstr "" + +#: tiramisu/option.py:1096 +msgid "invalid url, should ends with filename" +msgstr "" + +#: tiramisu/option.py:1107 +msgid "invalid filename" +msgstr "" + +#: tiramisu/option.py:1134 msgid "duplicate option name: {0}" msgstr "" -#: tiramisu/option.py:1067 +#: tiramisu/option.py:1152 msgid "unknown Option {0} in OptionDescription {1}" msgstr "" -#: tiramisu/option.py:1118 +#: tiramisu/option.py:1203 msgid "duplicate option: {0}" msgstr "" -#: tiramisu/option.py:1148 +#: tiramisu/option.py:1233 msgid "consistency with option {0} which is not in Config" msgstr "" -#: tiramisu/option.py:1156 +#: tiramisu/option.py:1241 msgid "no option for path {0}" msgstr "" -#: tiramisu/option.py:1162 +#: tiramisu/option.py:1247 msgid "no option {0} found" msgstr "" -#: tiramisu/option.py:1172 +#: tiramisu/option.py:1257 msgid "cannot change group_type if already set (old {0}, new {1})" msgstr "" -#: tiramisu/option.py:1185 +#: tiramisu/option.py:1270 msgid "master group {0} shall not have a subgroup" msgstr "" -#: tiramisu/option.py:1188 +#: tiramisu/option.py:1273 msgid "master group {0} shall not have a symlinkoption" msgstr "" -#: tiramisu/option.py:1191 +#: tiramisu/option.py:1276 msgid "not allowed option {0} in group {1}: this option is not a multi" msgstr "" -#: tiramisu/option.py:1202 +#: tiramisu/option.py:1287 msgid "master group with wrong master name for {0}" msgstr "" -#: tiramisu/option.py:1211 +#: tiramisu/option.py:1296 msgid "no child has same nom has master group for: {0}" msgstr "" -#: tiramisu/option.py:1214 +#: tiramisu/option.py:1299 msgid "group_type: {0} not allowed" msgstr "" -#: tiramisu/option.py:1306 +#: tiramisu/option.py:1391 msgid "malformed requirements type for option: {0}, must be a dict" msgstr "" -#: tiramisu/option.py:1323 +#: tiramisu/option.py:1408 msgid "malformed requirements for option: {0} require must have option, expected and action keys" msgstr "" -#: tiramisu/option.py:1328 +#: tiramisu/option.py:1413 msgid "malformed requirements for option: {0} inverse must be boolean" msgstr "" -#: tiramisu/option.py:1332 +#: tiramisu/option.py:1417 msgid "malformed requirements for option: {0} transitive must be boolean" msgstr "" -#: tiramisu/option.py:1336 +#: tiramisu/option.py:1421 msgid "malformed requirements for option: {0} same_action must be boolean" msgstr "" -#: tiramisu/option.py:1340 +#: tiramisu/option.py:1425 msgid "malformed requirements must be an option in option {0}" msgstr "" -#: tiramisu/option.py:1343 +#: tiramisu/option.py:1428 msgid "malformed requirements option {0} should not be a multi" msgstr "" -#: tiramisu/option.py:1349 +#: tiramisu/option.py:1434 msgid "malformed requirements second argument must be valid for option {0}: {1}" msgstr "" -#: tiramisu/option.py:1354 +#: tiramisu/option.py:1439 msgid "inconsistency in action types for option: {0} action: {1}" msgstr "" -#: tiramisu/option.py:1379 +#: tiramisu/option.py:1464 msgid "{0} should be a function" msgstr "" -#: tiramisu/option.py:1382 +#: tiramisu/option.py:1467 msgid "{0}_params should be a dict" msgstr "" -#: tiramisu/option.py:1385 +#: tiramisu/option.py:1470 msgid "{0}_params with key {1} should not have length different to 1" msgstr "" -#: tiramisu/option.py:1389 +#: tiramisu/option.py:1474 msgid "{0}_params should be tuple for key \"{1}\"" msgstr "" -#: tiramisu/option.py:1395 +#: tiramisu/option.py:1480 msgid "validator not support tuple" msgstr "" -#: tiramisu/option.py:1398 +#: tiramisu/option.py:1483 msgid "{0}_params should have an option not a {0} for first argument" msgstr "" -#: tiramisu/option.py:1402 +#: tiramisu/option.py:1487 msgid "{0}_params should have a boolean not a {0} for second argument" msgstr "" -#: tiramisu/setting.py:111 +#: tiramisu/setting.py:116 msgid "can't rebind {0}" msgstr "" -#: tiramisu/setting.py:116 +#: tiramisu/setting.py:121 msgid "can't unbind {0}" msgstr "" -#: tiramisu/setting.py:254 +#: tiramisu/setting.py:259 msgid "cannot append {0} property for option {1}: this property is calculated" msgstr "" -#: tiramisu/setting.py:317 +#: tiramisu/setting.py:322 msgid "opt and all_properties must not be set together in reset" msgstr "" -#: tiramisu/setting.py:332 +#: tiramisu/setting.py:337 msgid "if opt is not None, path should not be None in _getproperties" msgstr "" -#: tiramisu/setting.py:435 +#: tiramisu/setting.py:440 msgid "cannot change the value for option {0} this option is frozen" msgstr "" -#: tiramisu/setting.py:441 +#: tiramisu/setting.py:446 msgid "trying to access to an option named: {0} with properties {1}" msgstr "" -#: tiramisu/setting.py:459 +#: tiramisu/setting.py:464 msgid "permissive must be a tuple" msgstr "" -#: tiramisu/setting.py:466 tiramisu/value.py:299 +#: tiramisu/setting.py:471 tiramisu/value.py:301 msgid "invalid generic owner {0}" msgstr "" -#: tiramisu/setting.py:553 +#: tiramisu/setting.py:558 msgid "malformed requirements imbrication detected for option: '{0}' with requirement on: '{1}'" msgstr "" -#: tiramisu/setting.py:565 +#: tiramisu/setting.py:570 msgid "option '{0}' has requirement's property error: {1} {2}" msgstr "" -#: tiramisu/storage/__init__.py:47 +#: tiramisu/storage/__init__.py:52 msgid "storage_type is already set, cannot rebind it" msgstr "" -#: tiramisu/storage/__init__.py:81 +#: tiramisu/storage/__init__.py:86 msgid "option {0} not already exists in storage {1}" msgstr "" -#: tiramisu/storage/dictionary/storage.py:37 +#: tiramisu/storage/dictionary/storage.py:39 msgid "dictionary storage cannot delete session" msgstr "" -#: tiramisu/storage/dictionary/storage.py:48 +#: tiramisu/storage/dictionary/storage.py:50 msgid "session already used" msgstr "" -#: tiramisu/storage/dictionary/storage.py:50 +#: tiramisu/storage/dictionary/storage.py:52 msgid "a dictionary cannot be persistent" msgstr "" -#: tiramisu/value.py:306 +#: tiramisu/value.py:308 msgid "no value for {0} cannot change owner to {1}" msgstr "" -#: tiramisu/value.py:414 +#: tiramisu/value.py:416 msgid "invalid len for the slave: {0} which has {1} as master" msgstr "" -#: tiramisu/value.py:438 +#: tiramisu/value.py:440 msgid "invalid len for the master: {0} which has {1} as slave with greater len" msgstr "" -#: tiramisu/value.py:468 +#: tiramisu/value.py:470 msgid "cannot append a value on a multi option {0} which is a slave" msgstr "" -#: tiramisu/value.py:505 +#: tiramisu/value.py:507 msgid "cannot sort multi option {0} if master or slave" msgstr "" -#: tiramisu/value.py:509 +#: tiramisu/value.py:511 msgid "cmp is not permitted in python v3 or greater" msgstr "" -#: tiramisu/value.py:518 +#: tiramisu/value.py:520 msgid "cannot reverse multi option {0} if master or slave" msgstr "" -#: tiramisu/value.py:526 +#: tiramisu/value.py:528 msgid "cannot insert multi option {0} if master or slave" msgstr "" -#: tiramisu/value.py:534 +#: tiramisu/value.py:536 msgid "cannot extend multi option {0} if master or slave" msgstr "" -#: tiramisu/value.py:562 +#: tiramisu/value.py:547 +msgid "invalid value {0} for option {1}: {2}" +msgstr "" + +#: tiramisu/value.py:564 msgid "cannot pop a value on a multi option {0} which is a slave" msgstr ""