update invalid's message and display all informations when raises

This commit is contained in:
Emmanuel Garette 2013-09-30 22:50:49 +02:00
parent cce080cbd3
commit c8a20eefb5
3 changed files with 401 additions and 320 deletions

View File

@ -421,7 +421,11 @@ class Option(BaseOption):
if _value is None: if _value is None:
return return
# option validation # option validation
try:
self._validate(_value) self._validate(_value)
except ValueError as err:
raise ValueError(_('invalid value for option {0}: {1}'
'').format(self._name, err.message))
try: try:
# valid with self._validator # valid with self._validator
val_validator(_value) val_validator(_value)
@ -430,8 +434,8 @@ class Option(BaseOption):
descr._valid_consistency(self, _value, context, _index) descr._valid_consistency(self, _value, context, _index)
self._second_level_validation(_value) self._second_level_validation(_value)
except ValueError as err: except ValueError as err:
msg = _("invalid value {0} for option {1}: {2}").format( msg = _("invalid value for option {0}: {1}").format(
_value, self._name, err) self._name, err.message)
if self._warnings_only: if self._warnings_only:
warnings.warn_explicit(ValueWarning(msg, self), warnings.warn_explicit(ValueWarning(msg, self),
ValueWarning, ValueWarning,
@ -677,7 +681,7 @@ class BoolOption(Option):
def _validate(self, value): def _validate(self, value):
if not isinstance(value, bool): if not isinstance(value, bool):
raise ValueError(_('value must be a boolean')) raise ValueError(_('invalid boolean'))
class IntOption(Option): class IntOption(Option):
@ -687,7 +691,7 @@ class IntOption(Option):
def _validate(self, value): def _validate(self, value):
if not isinstance(value, int): if not isinstance(value, int):
raise ValueError(_('value must be an integer')) raise ValueError(_('invalid integer'))
class FloatOption(Option): class FloatOption(Option):
@ -697,7 +701,7 @@ class FloatOption(Option):
def _validate(self, value): def _validate(self, value):
if not isinstance(value, float): if not isinstance(value, float):
raise ValueError(_('value must be a float')) raise ValueError(_('invalid float'))
class StrOption(Option): class StrOption(Option):
@ -707,8 +711,7 @@ class StrOption(Option):
def _validate(self, value): def _validate(self, value):
if not isinstance(value, str): if not isinstance(value, str):
raise ValueError(_('value must be a string, not ' raise ValueError(_('invalid string'))
'{0}').format(type(value)))
if sys.version_info[0] >= 3: if sys.version_info[0] >= 3:
@ -725,7 +728,7 @@ else:
def _validate(self, value): def _validate(self, value):
if not isinstance(value, unicode): if not isinstance(value, unicode):
raise ValueError(_('value must be an unicode')) raise ValueError(_('invalid unicode'))
class SymLinkOption(BaseOption): class SymLinkOption(BaseOption):
@ -786,14 +789,14 @@ class IPOption(Option):
try: try:
IP('{0}/32'.format(value)) IP('{0}/32'.format(value))
except ValueError: except ValueError:
raise ValueError(_('invalid IP {0}').format(self._name)) raise ValueError(_('invalid IP'))
def _second_level_validation(self, value): def _second_level_validation(self, value):
ip = IP('{0}/32'.format(value)) ip = IP('{0}/32'.format(value))
if not self._allow_reserved and ip.iptype() == 'RESERVED': 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': 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): class PortOption(Option):
@ -853,16 +856,17 @@ class PortOption(Option):
if self._allow_range and ":" in str(value): if self._allow_range and ":" in str(value):
value = str(value).split(':') value = str(value).split(':')
if len(value) != 2: 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]: 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') ' smaller than the second one')
else: else:
value = [value] value = [value]
for val in value: for val in value:
if not self._min_value <= int(val) <= self._max_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)) ''.format(self._min_value, self._max_value))
@ -875,12 +879,12 @@ class NetworkOption(Option):
try: try:
IP(value) IP(value)
except ValueError: except ValueError:
raise ValueError(_('invalid network address {0}').format(self._name)) raise ValueError(_('invalid network address'))
def _second_level_validation(self, value): def _second_level_validation(self, value):
ip = IP(value) ip = IP(value)
if ip.iptype() == 'RESERVED': 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): class NetmaskOption(Option):
@ -892,7 +896,7 @@ class NetmaskOption(Option):
try: try:
IP('0.0.0.0/{0}'.format(value)) IP('0.0.0.0/{0}'.format(value))
except ValueError: except ValueError:
raise ValueError(_('invalid netmask address {0}').format(self._name)) raise ValueError(_('invalid netmask address'))
def _cons_network_netmask(self, opts, vals): def _cons_network_netmask(self, opts, vals):
#opts must be (netmask, network) options #opts must be (netmask, network) options
@ -930,12 +934,12 @@ class NetmaskOption(Option):
except ValueError: except ValueError:
if make_net: if make_net:
msg = _("invalid IP {0} ({1}) with netmask {2} ({3})") msg = _('invalid IP {0} ({1}) with netmask {2}')
else: else:
msg = _("invalid network {0} ({1}) with netmask {2} ({3})") msg = _('invalid network {0} ({1}) with netmask {2}')
if msg is not None: if msg is not None:
raise ValueError(msg.format(val_ipnetwork, opts[1]._name, raise ValueError(msg.format(val_ipnetwork, opts[1]._name,
val_netmask, self._name)) val_netmask))
class BroadcastOption(Option): class BroadcastOption(Option):
@ -946,7 +950,7 @@ class BroadcastOption(Option):
try: try:
IP('{0}/32'.format(value)) IP('{0}/32'.format(value))
except ValueError: except ValueError:
raise ValueError(_('invalid broadcast address {0}').format(self._name)) raise ValueError(_('invalid broadcast address'))
def _cons_broadcast(self, opts, vals): def _cons_broadcast(self, opts, vals):
if len(vals) != 3: if len(vals) != 3:
@ -1017,16 +1021,13 @@ class DomainnameOption(Option):
pass pass
if self._type == 'domainname' and not self._allow_without_dot and \ if self._type == 'domainname' and not self._allow_without_dot and \
'.' not in value: '.' not in value:
raise ValueError(_("invalid domainname for {0}, must have dot" raise ValueError(_("invalid domainname, must have dot"))
"").format(self._name))
if len(value) > 255: if len(value) > 255:
raise ValueError(_("invalid domainname's length for" raise ValueError(_("invalid domainname's length (max 255)"))
" {0} (max 255)").format(self._name))
if len(value) < 2: if len(value) < 2:
raise ValueError(_("invalid domainname's length for {0} (min 2)" raise ValueError(_("invalid domainname's length (min 2)"))
"").format(self._name))
if not self._domain_re.search(value): if not self._domain_re.search(value):
raise ValueError(_('invalid domainname: {0}'.format(self._name))) raise ValueError(_('invalid domainname'))
class EmailOption(DomainnameOption): class EmailOption(DomainnameOption):
@ -1045,10 +1046,10 @@ class EmailOption(DomainnameOption):
try: try:
username, domain = splitted username, domain = splitted
except ValueError: except ValueError:
raise ValueError(_('invalid email address, should contains one @ ' raise ValueError(_('invalid email address, should contains one @'
'for {0}').format(self._name)) ))
if not self.username_re.search(username): 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) super(EmailOption, self)._validate(domain)
@ -1068,7 +1069,7 @@ class URLOption(DomainnameOption):
match = self.proto_re.search(value) match = self.proto_re.search(value)
if not match: if not match:
raise ValueError(_('invalid url, should start with http:// or ' raise ValueError(_('invalid url, should start with http:// or '
'https:// for {0}').format(self._name)) 'https://'))
value = value[len(match.group(0)):] value = value[len(match.group(0)):]
# get domain/files # get domain/files
splitted = value.split('/', 1) splitted = value.split('/', 1)
@ -1086,13 +1087,13 @@ class URLOption(DomainnameOption):
domain = splitted[0] domain = splitted[0]
port = 0 port = 0
if not 0 <= int(port) <= 65535: 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 # validate domainname
super(URLOption, self)._validate(domain) super(URLOption, self)._validate(domain)
# validate file # validate file
if files is not None and files != '' and not self.path_re.search(files): if files is not None and files != '' and not self.path_re.search(files):
raise ValueError(_('invalid url, should endswith with filename for' raise ValueError(_('invalid url, should ends with filename'))
' {0}').format(self._name))
class FileOption(Option): class FileOption(Option):
@ -1103,7 +1104,7 @@ class FileOption(Option):
def _validate(self, value): def _validate(self, value):
match = self.path_re.search(value) match = self.path_re.search(value)
if not match: if not match:
raise ValueError(_('invalid filename for {0}').format(self._name)) raise ValueError(_('invalid filename'))
class OptionDescription(BaseOption): class OptionDescription(BaseOption):

View File

@ -2,7 +2,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: \n" "Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \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" "PO-Revision-Date: \n"
"Last-Translator: Emmanuel Garette <egarette@cadoles.com>\n" "Last-Translator: Emmanuel Garette <egarette@cadoles.com>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -11,14 +11,14 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 1.5.4\n" "X-Generator: Poedit 1.5.4\n"
#: tiramisu/autolib.py:144 #: tiramisu/autolib.py:145
msgid "" msgid ""
"unable to carry out a calculation, option {0} has properties: {1} for: {2}" "unable to carry out a calculation, option {0} has properties: {1} for: {2}"
msgstr "" msgstr ""
"impossible d'effectuer le calcul, l'option {0} a les propriétés : {1} pour : " "impossible d'effectuer le calcul, l'option {0} a les propriétés : {1} pour : "
"{2}" "{2}"
#: tiramisu/autolib.py:153 #: tiramisu/autolib.py:154
msgid "" msgid ""
"unable to carry out a calculation, option value with multi types must have " "unable to carry out a calculation, option value with multi types must have "
"same length for: {0}" "same length for: {0}"
@ -26,80 +26,80 @@ msgstr ""
"impossible d'effectuer le calcul, la valeur d'une option avec le type multi " "impossible d'effectuer le calcul, la valeur d'une option avec le type multi "
"doit avoir la même longueur pour : {0}" "doit avoir la même longueur pour : {0}"
#: tiramisu/config.py:51 #: tiramisu/config.py:52
msgid "descr must be an optiondescription, not {0}" msgid "descr must be an optiondescription, not {0}"
msgstr "descr doit être une optiondescription pas un {0}" msgstr "descr doit être une optiondescription pas un {0}"
#: tiramisu/config.py:126 #: tiramisu/config.py:127
msgid "unknown group_type: {0}" msgid "unknown group_type: {0}"
msgstr "group_type inconnu: {0}" msgstr "group_type inconnu: {0}"
#: tiramisu/config.py:162 #: tiramisu/config.py:163
msgid "" msgid ""
"no option description found for this config (may be metaconfig without meta)" "no option description found for this config (may be metaconfig without meta)"
msgstr "" msgstr ""
"pas d'option description trouvé pour cette config (peut être une metaconfig " "pas d'option description trouvé pour cette config (peut être une metaconfig "
"sans meta)" "sans meta)"
#: tiramisu/config.py:188 #: tiramisu/config.py:189
msgid "can't assign to an OptionDescription" msgid "can't assign to an OptionDescription"
msgstr "ne peut pas attribuer une valeur à une 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" msgid "unknown type_ type {0}for _find"
msgstr "type_ type {0} pour _find inconnu" msgstr "type_ type {0} pour _find inconnu"
#: tiramisu/config.py:358 #: tiramisu/config.py:359
msgid "no option found in config with these criteria" msgid "no option found in config with these criteria"
msgstr "aucune option trouvée dans la config avec ces critères" 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" msgid "make_dict can't filtering with value without option"
msgstr "make_dict ne peut filtrer sur une valeur mais sans 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}" msgid "unexpected path {0}, should start with {1}"
msgstr "chemin imprévu {0}, devrait commencer par {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}" msgid "opt in getowner must be an option not {0}"
msgstr "opt dans getowner doit être une option pas {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" msgid "invalid name: {0} for option"
msgstr "nom invalide : {0} pour l'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" msgid "invalid properties type {0} for {1}, must be a tuple"
msgstr "type des properties invalide {0} pour {1}, doit être un 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" msgid "'{0}' ({1}) object attribute '{2}' is read-only"
msgstr "l'attribut {2} de l'objet '{0}' ({1}) est en lecture seule" 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}" msgid "information's item not found: {0}"
msgstr "aucune config spécifié alors que c'est nécessaire" 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" msgid "cannot serialize Option, only in OptionDescription"
msgstr "ne peut serialiser une Option, seulement via une 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}" msgid "a default_multi is set whereas multi is False in option: {0}"
msgstr "" msgstr ""
"une default_multi est renseignée alors que multi est False dans l'option : " "une default_multi est renseignée alors que multi est False dans l'option : "
"{0}" "{0}"
#: tiramisu/option.py:313 #: tiramisu/option.py:314
msgid "invalid default_multi value {0} for option {1}: {2}" msgid "invalid default_multi value {0} for option {1}: {2}"
msgstr "la valeur default_multi est invalide {0} pour l'option {1} : {2}" 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" 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" 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 "" msgid ""
"params defined for a callback function but no callback defined yet for " "params defined for a callback function but no callback defined yet for "
"option {0}" "option {0}"
@ -107,221 +107,250 @@ msgstr ""
"params définis pour une fonction callback mais par de callback encore " "params définis pour une fonction callback mais par de callback encore "
"définis pour l'option {0}" "définis pour l'option {0}"
#: tiramisu/option.py:360 #: tiramisu/option.py:361
msgid "option not in all_cons_opts" msgid "option not in all_cons_opts"
msgstr "option non présentante dans all_cons_opts" msgstr "option non présentante dans all_cons_opts"
#: tiramisu/option.py:432 tiramisu/value.py:545 #: tiramisu/option.py:427 tiramisu/option.py:437
msgid "invalid value {0} for option {1}: {2}" msgid "invalid value for option {0}: {1}"
msgstr "valeur invalide {0} pour l'option {1} : {2}" msgstr "valeur invalide pour l'option {0} : {1}"
#: tiramisu/option.py:449 #: tiramisu/option.py:454
msgid "which must be a list" msgid "which must be a list"
msgstr "lequel doit être une liste" msgstr "lequel doit être une liste"
#: tiramisu/option.py:509 #: tiramisu/option.py:514
msgid "consistency should be set with an option" msgid "consistency should be set with an option"
msgstr "consistency doit être configuré avec une option" msgstr "consistency doit être configuré avec une option"
#: tiramisu/option.py:511 #: tiramisu/option.py:516
msgid "cannot add consistency with itself" msgid "cannot add consistency with itself"
msgstr "ne peut ajouter une consistency avec lui même" 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" msgid "every options in consistency should be multi or none"
msgstr "" msgstr ""
"toutes les options d'une consistency devrait être multi ou ne pas l'être" "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}" msgid "same value for {0} and {1}"
msgstr "même valeur pour {0} et {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}" msgid "values must be a tuple for {0}"
msgstr "values doit être un tuple pour {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}" msgid "open_values must be a boolean for {0}"
msgstr "open_values doit être un booléen pour {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" msgid "value {0} is not permitted, only {1} is allowed"
msgstr "valeur {0} n'est pas permis, seules {1} sont autorisées" msgstr "valeur {0} n'est pas permis, seules {1} sont autorisées"
#: tiramisu/option.py:679 #: tiramisu/option.py:684
msgid "value must be a boolean" msgid "invalid boolean"
msgstr "valeur doit être un booléen" msgstr "booléen invalide"
#: tiramisu/option.py:689 #: tiramisu/option.py:694
msgid "value must be an integer" msgid "invalid integer"
msgstr "valeur doit être un nombre entier" msgstr "nombre invalide"
#: tiramisu/option.py:699 #: tiramisu/option.py:704
msgid "value must be a float" msgid "invalid float"
msgstr "valeur doit être un nombre flottant" msgstr "invalide nombre flottan"
#: tiramisu/option.py:709 #: tiramisu/option.py:714
msgid "value must be a string, not {0}" msgid "invalid string"
msgstr "valeur doit être une chaîne, pas {0}" msgstr "invalide caractère"
#: tiramisu/option.py:727 #: tiramisu/option.py:731
msgid "value must be an unicode" msgid "invalid unicode"
msgstr "valeur doit être une valeur unicode" msgstr "invalide unicode"
#: tiramisu/option.py:739 #: tiramisu/option.py:743
msgid "malformed symlinkoption must be an option for symlink {0}" msgid "malformed symlinkoption must be an option for symlink {0}"
msgstr "symlinkoption mal formé, doit être une option pour symlink {0}" msgstr "symlinkoption mal formé, doit être une option pour symlink {0}"
#: tiramisu/option.py:788 #: tiramisu/option.py:792
msgid "invalid IP {0}" msgid "invalid IP"
msgstr "adresse IP invalide {0}" msgstr "adresse IP invalide"
#: tiramisu/option.py:793 #: tiramisu/option.py:797
msgid "IP mustn't not be in reserved class" msgid "invalid IP, mustn't not be in reserved class"
msgstr "IP ne doit pas être d'une classe reservée" msgstr "adresse IP invalide, ne doit pas être d'une classe reservée"
#: tiramisu/option.py:795 #: tiramisu/option.py:799
msgid "IP must be in private class" msgid "invalid IP, must be in private class"
msgstr "IP doit être dans la classe privée" msgstr "adresse IP invalide, doit être dans la classe privée"
#: tiramisu/option.py:833 #: tiramisu/option.py:837
msgid "inconsistency in allowed range" msgid "inconsistency in allowed range"
msgstr "inconsistence dans la plage autorisée" msgstr "inconsistence dans la plage autorisée"
#: tiramisu/option.py:838 #: tiramisu/option.py:842
msgid "max value is empty" msgid "max value is empty"
msgstr "la valeur maximum est vide" 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 #: tiramisu/option.py:882
msgid "network shall not be in reserved class" msgid "invalid network address"
msgstr "le réseau ne doit pas être dans la classe reservée" msgstr "adresse réseau invalide"
#: tiramisu/option.py:894 #: tiramisu/option.py:887
msgid "invalid netmask address {0}" msgid "invalid network address, must not be in reserved class"
msgstr "masque de sous-réseau invalide {0}" 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" msgid "invalid len for opts"
msgstr "longueur invalide pour 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" 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" 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" 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" msgstr "IP invalide {0} ({1}) avec masque {2} ({3}), cette IP est un réseau"
#: tiramisu/option.py:932 #: tiramisu/option.py:937
msgid "invalid IP {0} ({1}) with netmask {2} ({3})" msgid "invalid IP {0} ({1}) with netmask {2}"
msgstr "IP invalide {0} ({1}) avec masque {2} ({3})" msgstr "IP invalide {0} ({1}) avec masque {2}"
#: tiramisu/option.py:934 #: tiramisu/option.py:939
msgid "invalid network {0} ({1}) with netmask {2} ({3})" msgid "invalid network {0} ({1}) with netmask {2}"
msgstr "réseau invalide {0} ({1}) avec masque {2} ({3})" msgstr "réseau invalide {0} ({1}) avec masque {2}"
#: tiramisu/option.py:948 #: tiramisu/option.py:953
msgid "invalid broadcast address {0}" msgid "invalid broadcast address"
msgstr "adresse de broadcast invalide {0}" msgstr "adresse de broadcast invalide"
#: tiramisu/option.py:952 #: tiramisu/option.py:957
msgid "invalid len for vals" msgid "invalid len for vals"
msgstr "longueur invalide pour vals" msgstr "longueur invalide pour vals"
#: tiramisu/option.py:957 #: tiramisu/option.py:962
msgid "" msgid ""
"invalid broadcast {0} ({1}) with network {2} ({3}) and netmask {4} ({5})" "invalid broadcast {0} ({1}) with network {2} ({3}) and netmask {4} ({5})"
msgstr "" msgstr ""
"Broadcast invalide {0} ({1}) avec le réseau {2} ({3}) et le masque {4} ({5})" "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" msgid "unknown type_ {0} for hostname"
msgstr "type_ inconnu {0} pour le nom d'hôte" 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" msgid "allow_ip must be a boolean"
msgstr "allow_ip doit être un booléen" msgstr "allow_ip doit être un booléen"
#: tiramisu/option.py:1012 #: tiramisu/option.py:989
msgid "invalid value for {0}, must have dot" msgid "allow_without_dot must be a boolean"
msgstr "valeur invalide pour {0}, doit avoir un point" msgstr "allow_without_dot doit être un booléen"
#: tiramisu/option.py:1015 #: tiramisu/option.py:1024
msgid "invalid domainname's length for {0} (max {1})" msgid "invalid domainname, must have dot"
msgstr "longueur du nom de domaine invalide pour {0} (maximum {1})" msgstr "nom de domaine invalide, doit avoir un point"
#: tiramisu/option.py:1018 #: tiramisu/option.py:1026
msgid "invalid domainname's length for {0} (min 2)" msgid "invalid domainname's length (max 255)"
msgstr "longueur du nom de domaine invalide pour {0} (minimum 2)" 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" msgid "invalid domainname"
msgstr "nom de domaine invalide" msgstr "nom de domaine invalide"
#: tiramisu/option.py:1049 #: 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}" msgid "duplicate option name: {0}"
msgstr "nom de l'option dupliqué : {0}" msgstr "nom de l'option dupliqué : {0}"
#: tiramisu/option.py:1067 #: tiramisu/option.py:1152
msgid "unknown Option {0} in OptionDescription {1}" msgid "unknown Option {0} in OptionDescription {1}"
msgstr "Option {0} inconnue pour l'OptionDescription {1}" msgstr "Option {0} inconnue pour l'OptionDescription {1}"
#: tiramisu/option.py:1118 #: tiramisu/option.py:1203
msgid "duplicate option: {0}" msgid "duplicate option: {0}"
msgstr "option dupliquée : {0}" msgstr "option dupliquée : {0}"
#: tiramisu/option.py:1148 #: tiramisu/option.py:1233
msgid "consistency with option {0} which is not in Config" msgid "consistency with option {0} which is not in Config"
msgstr "consistency avec l'option {0} qui n'est pas dans une 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}" msgid "no option for path {0}"
msgstr "pas d'option pour le chemin {0}" msgstr "pas d'option pour le chemin {0}"
#: tiramisu/option.py:1162 #: tiramisu/option.py:1247
msgid "no option {0} found" msgid "no option {0} found"
msgstr "pas d'option {0} trouvée" 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})" 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})" 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" msgid "master group {0} shall not have a subgroup"
msgstr "groupe maître {0} ne doit pas avoir de sous-groupe" 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" msgid "master group {0} shall not have a symlinkoption"
msgstr "groupe maître {0} ne doit pas avoir de 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" msgid "not allowed option {0} in group {1}: this option is not a multi"
msgstr "" msgstr ""
"option non autorisée {0} dans le groupe {1} : cette option n'est pas une " "option non autorisée {0} dans le groupe {1} : cette option n'est pas une "
"multi" "multi"
#: tiramisu/option.py:1202 #: tiramisu/option.py:1287
msgid "master group with wrong master name for {0}" msgid "master group with wrong master name for {0}"
msgstr "le groupe maître avec un nom de maître érroné pour {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}" msgid "no child has same nom has master group for: {0}"
msgstr "pas d'enfant avec le nom du groupe maître pour {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" msgid "group_type: {0} not allowed"
msgstr "group_type : {0} non autorisé" 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" msgid "malformed requirements type for option: {0}, must be a dict"
msgstr "" msgstr ""
"type requirements malformé pour l'option : {0}, doit être un dictionnaire" "type requirements malformé pour l'option : {0}, doit être un dictionnaire"
#: tiramisu/option.py:1323 #: tiramisu/option.py:1408
msgid "" msgid ""
"malformed requirements for option: {0} require must have option, expected " "malformed requirements for option: {0} require must have option, expected "
"and action keys" "and action keys"
@ -329,110 +358,110 @@ msgstr ""
"requirements malformé pour l'option : {0} l'exigence doit avoir les clefs " "requirements malformé pour l'option : {0} l'exigence doit avoir les clefs "
"option, expected et action" "option, expected et action"
#: tiramisu/option.py:1328 #: tiramisu/option.py:1413
msgid "malformed requirements for option: {0} inverse must be boolean" msgid "malformed requirements for option: {0} inverse must be boolean"
msgstr "" msgstr ""
"requirements mal formés pour l'option : {0} inverse doit être un booléen" "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" msgid "malformed requirements for option: {0} transitive must be boolean"
msgstr "" msgstr ""
"requirements mal formés pour l'option : {0} transitive doit être booléen" "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" msgid "malformed requirements for option: {0} same_action must be boolean"
msgstr "" msgstr ""
"requirements mal formés pour l'option : {0} same_action doit être un booléen" "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}" msgid "malformed requirements must be an option in option {0}"
msgstr "requirements mal formés doit être une option dans l'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" msgid "malformed requirements option {0} should not be a multi"
msgstr "requirements mal formés l'option {0} ne doit pas être une multi" msgstr "requirements mal formés l'option {0} ne doit pas être une multi"
#: tiramisu/option.py:1349 #: tiramisu/option.py:1434
msgid "" msgid ""
"malformed requirements second argument must be valid for option {0}: {1}" "malformed requirements second argument must be valid for option {0}: {1}"
msgstr "" msgstr ""
"requirements mal formés deuxième argument doit être valide pour l'option " "requirements mal formés deuxième argument doit être valide pour l'option "
"{0} : {1}" "{0} : {1}"
#: tiramisu/option.py:1354 #: tiramisu/option.py:1439
msgid "inconsistency in action types for option: {0} action: {1}" msgid "inconsistency in action types for option: {0} action: {1}"
msgstr "incohérence dans les types action pour l'option : {0} action {1}" 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" msgid "{0} should be a function"
msgstr "{0} doit être une fonction" msgstr "{0} doit être une fonction"
#: tiramisu/option.py:1382 #: tiramisu/option.py:1467
msgid "{0}_params should be a dict" msgid "{0}_params should be a dict"
msgstr "{0}_params devrait être un 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" msgid "{0}_params with key {1} should not have length different to 1"
msgstr "" msgstr ""
"{0}_params avec la clef {1} devrait ne pas avoir une longueur différent de 1" "{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}\"" msgid "{0}_params should be tuple for key \"{1}\""
msgstr "{0}_params devrait être un tuple pour la clef \"{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" msgid "validator not support tuple"
msgstr "validator n'accepte pas de 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" 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" 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" 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" 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}" msgid "can't rebind {0}"
msgstr "ne peut redéfinir ({0})" msgstr "ne peut redéfinir ({0})"
#: tiramisu/setting.py:116 #: tiramisu/setting.py:121
msgid "can't unbind {0}" msgid "can't unbind {0}"
msgstr "ne peut supprimer ({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" msgid "cannot append {0} property for option {1}: this property is calculated"
msgstr "" msgstr ""
"ne peut ajouter la propriété {0} dans l'option {1}: cette propriété est " "ne peut ajouter la propriété {0} dans l'option {1}: cette propriété est "
"calculée" "calculée"
#: tiramisu/setting.py:317 #: tiramisu/setting.py:322
msgid "opt and all_properties must not be set together in reset" msgid "opt and all_properties must not be set together in reset"
msgstr "opt et all_properties ne doit pas être renseigné ensemble dans reset" 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" msgid "if opt is not None, path should not be None in _getproperties"
msgstr "" msgstr ""
"si opt n'est pas None, path devrait ne pas être à None dans _getproperties" "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" msgid "cannot change the value for option {0} this option is frozen"
msgstr "" msgstr ""
"ne peut modifier la valeur de l'option {0} cette option n'est pas modifiable" "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}" 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}" 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" msgid "permissive must be a tuple"
msgstr "permissive doit être un 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}" msgid "invalid generic owner {0}"
msgstr "invalide owner générique {0}" msgstr "invalide owner générique {0}"
#: tiramisu/setting.py:553 #: tiramisu/setting.py:558
msgid "" msgid ""
"malformed requirements imbrication detected for option: '{0}' with " "malformed requirements imbrication detected for option: '{0}' with "
"requirement on: '{1}'" "requirement on: '{1}'"
@ -440,73 +469,92 @@ msgstr ""
"imbrication de requirements mal formés detectée pour l'option : '{0}' avec " "imbrication de requirements mal formés detectée pour l'option : '{0}' avec "
"requirement sur : '{1}'" "requirement sur : '{1}'"
#: tiramisu/setting.py:565 #: tiramisu/setting.py:570
msgid "option '{0}' has requirement's property error: {1} {2}" msgid "option '{0}' has requirement's property error: {1} {2}"
msgstr "l'option '{0}' a une erreur de propriété pour le requirement : {1} {2}" 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" msgid "storage_type is already set, cannot rebind it"
msgstr "storage_type est déjà défini, impossible de le redéfinir" 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}" msgid "option {0} not already exists in storage {1}"
msgstr "option {0} n'existe pas dans l'espace de stockage {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" msgid "dictionary storage cannot delete session"
msgstr "" msgstr ""
"impossible de supprimer une session dans un espace de stockage dictionary" "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" msgid "session already used"
msgstr "session déjà utilisée" msgstr "session déjà utilisée"
#: tiramisu/storage/dictionary/storage.py:50 #: tiramisu/storage/dictionary/storage.py:52
msgid "a dictionary cannot be persistent" msgid "a dictionary cannot be persistent"
msgstr "un espace de stockage dictionary ne peut être persistant" 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}" msgid "no value for {0} cannot change owner to {1}"
msgstr "pas de valeur pour {0} ne peut changer d'utilisateur pour {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" 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" 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" msgid "invalid len for the master: {0} which has {1} as slave with greater len"
msgstr "" msgstr ""
"longueur invalide pour un maître : {0} qui a {1} une esclave avec une plus " "longueur invalide pour un maître : {0} qui a {1} une esclave avec une plus "
"grande longueur" "grande longueur"
#: tiramisu/value.py:468 #: tiramisu/value.py:470
msgid "cannot append a value on a multi option {0} which is a slave" 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" 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" 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" 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" msgid "cmp is not permitted in python v3 or greater"
msgstr "cmp n'est pas permis en python v3 ou supérieure" 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" 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" 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" 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" 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" 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" 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" 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" 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" #~ 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" #~ msgstr "valeur invalide {0} pour l'option {1} qui doit être une liste"

View File

@ -5,7 +5,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "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" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -15,455 +15,487 @@ msgstr ""
"Generated-By: pygettext.py 1.5\n" "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}" msgid "unable to carry out a calculation, option {0} has properties: {1} for: {2}"
msgstr "" 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}" msgid "unable to carry out a calculation, option value with multi types must have same length for: {0}"
msgstr "" msgstr ""
#: tiramisu/config.py:51 #: tiramisu/config.py:52
msgid "descr must be an optiondescription, not {0}" msgid "descr must be an optiondescription, not {0}"
msgstr "" msgstr ""
#: tiramisu/config.py:126 #: tiramisu/config.py:127
msgid "unknown group_type: {0}" msgid "unknown group_type: {0}"
msgstr "" msgstr ""
#: tiramisu/config.py:162 #: tiramisu/config.py:163
msgid "no option description found for this config (may be metaconfig without meta)" msgid "no option description found for this config (may be metaconfig without meta)"
msgstr "" msgstr ""
#: tiramisu/config.py:188 #: tiramisu/config.py:189
msgid "can't assign to an OptionDescription" msgid "can't assign to an OptionDescription"
msgstr "" msgstr ""
#: tiramisu/config.py:319 #: tiramisu/config.py:320
msgid "unknown type_ type {0}for _find" msgid "unknown type_ type {0}for _find"
msgstr "" msgstr ""
#: tiramisu/config.py:358 #: tiramisu/config.py:359
msgid "no option found in config with these criteria" msgid "no option found in config with these criteria"
msgstr "" msgstr ""
#: tiramisu/config.py:408 #: tiramisu/config.py:409
msgid "make_dict can't filtering with value without option" msgid "make_dict can't filtering with value without option"
msgstr "" msgstr ""
#: tiramisu/config.py:429 #: tiramisu/config.py:430
msgid "unexpected path {0}, should start with {1}" msgid "unexpected path {0}, should start with {1}"
msgstr "" msgstr ""
#: tiramisu/config.py:489 #: tiramisu/config.py:490
msgid "opt in getowner must be an option not {0}" msgid "opt in getowner must be an option not {0}"
msgstr "" msgstr ""
#: tiramisu/option.py:68 #: tiramisu/option.py:69
msgid "invalid name: {0} for option" msgid "invalid name: {0} for option"
msgstr "" msgstr ""
#: tiramisu/option.py:77 #: tiramisu/option.py:78
msgid "invalid properties type {0} for {1}, must be a tuple" msgid "invalid properties type {0} for {1}, must be a tuple"
msgstr "" msgstr ""
#: tiramisu/option.py:115 #: tiramisu/option.py:116
msgid "'{0}' ({1}) object attribute '{2}' is read-only" msgid "'{0}' ({1}) object attribute '{2}' is read-only"
msgstr "" msgstr ""
#: tiramisu/option.py:142 tiramisu/value.py:360 #: tiramisu/option.py:143 tiramisu/value.py:362
msgid "information's item not found: {0}" msgid "information's item not found: {0}"
msgstr "" msgstr ""
#: tiramisu/option.py:204 #: tiramisu/option.py:205
msgid "cannot serialize Option, only in OptionDescription" msgid "cannot serialize Option, only in OptionDescription"
msgstr "" msgstr ""
#: tiramisu/option.py:307 #: tiramisu/option.py:308
msgid "a default_multi is set whereas multi is False in option: {0}" msgid "a default_multi is set whereas multi is False in option: {0}"
msgstr "" msgstr ""
#: tiramisu/option.py:313 #: tiramisu/option.py:314
msgid "invalid default_multi value {0} for option {1}: {2}" msgid "invalid default_multi value {0} for option {1}: {2}"
msgstr "" msgstr ""
#: tiramisu/option.py:318 #: tiramisu/option.py:319
msgid "default value not allowed if option: {0} is calculated" msgid "default value not allowed if option: {0} is calculated"
msgstr "" msgstr ""
#: tiramisu/option.py:321 #: tiramisu/option.py:322
msgid "params defined for a callback function but no callback defined yet for option {0}" msgid "params defined for a callback function but no callback defined yet for option {0}"
msgstr "" msgstr ""
#: tiramisu/option.py:360 #: tiramisu/option.py:361
msgid "option not in all_cons_opts" msgid "option not in all_cons_opts"
msgstr "" msgstr ""
#: tiramisu/option.py:432 tiramisu/value.py:545 #: tiramisu/option.py:427 tiramisu/option.py:437
msgid "invalid value {0} for option {1}: {2}" msgid "invalid value for option {0}: {1}"
msgstr "" msgstr ""
#: tiramisu/option.py:449 #: tiramisu/option.py:454
msgid "which must be a list" msgid "which must be a list"
msgstr "" msgstr ""
#: tiramisu/option.py:509 #: tiramisu/option.py:514
msgid "consistency should be set with an option" msgid "consistency should be set with an option"
msgstr "" msgstr ""
#: tiramisu/option.py:511 #: tiramisu/option.py:516
msgid "cannot add consistency with itself" msgid "cannot add consistency with itself"
msgstr "" msgstr ""
#: tiramisu/option.py:513 #: tiramisu/option.py:518
msgid "every options in consistency should be multi or none" msgid "every options in consistency should be multi or none"
msgstr "" msgstr ""
#: tiramisu/option.py:533 #: tiramisu/option.py:538
msgid "same value for {0} and {1}" msgid "same value for {0} and {1}"
msgstr "" msgstr ""
#: tiramisu/option.py:642 #: tiramisu/option.py:647
msgid "values must be a tuple for {0}" msgid "values must be a tuple for {0}"
msgstr "" msgstr ""
#: tiramisu/option.py:645 #: tiramisu/option.py:650
msgid "open_values must be a boolean for {0}" msgid "open_values must be a boolean for {0}"
msgstr "" msgstr ""
#: tiramisu/option.py:667 #: tiramisu/option.py:672
msgid "value {0} is not permitted, only {1} is allowed" msgid "value {0} is not permitted, only {1} is allowed"
msgstr "" msgstr ""
#: tiramisu/option.py:679 #: tiramisu/option.py:684
msgid "value must be a boolean" msgid "invalid boolean"
msgstr "" msgstr ""
#: tiramisu/option.py:689 #: tiramisu/option.py:694
msgid "value must be an integer" msgid "invalid integer"
msgstr "" msgstr ""
#: tiramisu/option.py:699 #: tiramisu/option.py:704
msgid "value must be a float" msgid "invalid float"
msgstr "" msgstr ""
#: tiramisu/option.py:709 #: tiramisu/option.py:714
msgid "value must be a string, not {0}" msgid "invalid string"
msgstr "" msgstr ""
#: tiramisu/option.py:727 #: tiramisu/option.py:731
msgid "value must be an unicode" msgid "invalid unicode"
msgstr "" msgstr ""
#: tiramisu/option.py:739 #: tiramisu/option.py:743
msgid "malformed symlinkoption must be an option for symlink {0}" msgid "malformed symlinkoption must be an option for symlink {0}"
msgstr "" msgstr ""
#: tiramisu/option.py:788 #: tiramisu/option.py:792
msgid "invalid IP {0}" msgid "invalid IP"
msgstr "" msgstr ""
#: tiramisu/option.py:793 #: tiramisu/option.py:797
msgid "IP mustn't not be in reserved class" msgid "invalid IP, mustn't not be in reserved class"
msgstr "" msgstr ""
#: tiramisu/option.py:795 #: tiramisu/option.py:799
msgid "IP must be in private class" msgid "invalid IP, must be in private class"
msgstr "" msgstr ""
#: tiramisu/option.py:833 #: tiramisu/option.py:837
msgid "inconsistency in allowed range" msgid "inconsistency in allowed range"
msgstr "" msgstr ""
#: tiramisu/option.py:838 #: tiramisu/option.py:842
msgid "max value is empty" msgid "max value is empty"
msgstr "" msgstr ""
#: tiramisu/option.py:877
msgid "invalid network address {0}"
msgstr ""
#: tiramisu/option.py:882 #: tiramisu/option.py:882
msgid "network shall not be in reserved class" msgid "invalid network address"
msgstr "" msgstr ""
#: tiramisu/option.py:894 #: tiramisu/option.py:887
msgid "invalid netmask address {0}" msgid "invalid network address, must not be in reserved class"
msgstr "" msgstr ""
#: tiramisu/option.py:910 #: tiramisu/option.py:899
msgid "invalid netmask address"
msgstr ""
#: tiramisu/option.py:915
msgid "invalid len for opts" msgid "invalid len for opts"
msgstr "" msgstr ""
#: tiramisu/option.py:922 #: tiramisu/option.py:927
msgid "invalid network {0} ({1}) with netmask {2} ({3}), this network is an IP" msgid "invalid network {0} ({1}) with netmask {2} ({3}), this network is an IP"
msgstr "" msgstr ""
#: tiramisu/option.py:927 #: tiramisu/option.py:932
msgid "invalid IP {0} ({1}) with netmask {2} ({3}), this IP is a network" msgid "invalid IP {0} ({1}) with netmask {2} ({3}), this IP is a network"
msgstr "" msgstr ""
#: tiramisu/option.py:932 #: tiramisu/option.py:937
msgid "invalid IP {0} ({1}) with netmask {2} ({3})" msgid "invalid IP {0} ({1}) with netmask {2}"
msgstr "" msgstr ""
#: tiramisu/option.py:934 #: tiramisu/option.py:939
msgid "invalid network {0} ({1}) with netmask {2} ({3})" msgid "invalid network {0} ({1}) with netmask {2}"
msgstr "" msgstr ""
#: tiramisu/option.py:948 #: tiramisu/option.py:953
msgid "invalid broadcast address {0}" msgid "invalid broadcast address"
msgstr ""
#: tiramisu/option.py:952
msgid "invalid len for vals"
msgstr "" msgstr ""
#: tiramisu/option.py:957 #: 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})" msgid "invalid broadcast {0} ({1}) with network {2} ({3}) and netmask {4} ({5})"
msgstr "" msgstr ""
#: tiramisu/option.py:979 #: tiramisu/option.py:984
msgid "unknown type_ {0} for hostname" msgid "unknown type_ {0} for hostname"
msgstr "" msgstr ""
#: tiramisu/option.py:982 #: tiramisu/option.py:987
msgid "allow_ip must be a boolean" msgid "allow_ip must be a boolean"
msgstr "" msgstr ""
#: tiramisu/option.py:1012 #: tiramisu/option.py:989
msgid "invalid value for {0}, must have dot" msgid "allow_without_dot must be a boolean"
msgstr "" msgstr ""
#: tiramisu/option.py:1015 #: tiramisu/option.py:1024
msgid "invalid domainname's length for {0} (max {1})" msgid "invalid domainname, must have dot"
msgstr "" msgstr ""
#: tiramisu/option.py:1018 #: tiramisu/option.py:1026
msgid "invalid domainname's length for {0} (min 2)" msgid "invalid domainname's length (max 255)"
msgstr "" msgstr ""
#: tiramisu/option.py:1022 #: tiramisu/option.py:1028
msgid "invalid domainname's length (min 2)"
msgstr ""
#: tiramisu/option.py:1030
msgid "invalid domainname" msgid "invalid domainname"
msgstr "" msgstr ""
#: tiramisu/option.py:1049 #: 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}" msgid "duplicate option name: {0}"
msgstr "" msgstr ""
#: tiramisu/option.py:1067 #: tiramisu/option.py:1152
msgid "unknown Option {0} in OptionDescription {1}" msgid "unknown Option {0} in OptionDescription {1}"
msgstr "" msgstr ""
#: tiramisu/option.py:1118 #: tiramisu/option.py:1203
msgid "duplicate option: {0}" msgid "duplicate option: {0}"
msgstr "" msgstr ""
#: tiramisu/option.py:1148 #: tiramisu/option.py:1233
msgid "consistency with option {0} which is not in Config" msgid "consistency with option {0} which is not in Config"
msgstr "" msgstr ""
#: tiramisu/option.py:1156 #: tiramisu/option.py:1241
msgid "no option for path {0}" msgid "no option for path {0}"
msgstr "" msgstr ""
#: tiramisu/option.py:1162 #: tiramisu/option.py:1247
msgid "no option {0} found" msgid "no option {0} found"
msgstr "" msgstr ""
#: tiramisu/option.py:1172 #: tiramisu/option.py:1257
msgid "cannot change group_type if already set (old {0}, new {1})" msgid "cannot change group_type if already set (old {0}, new {1})"
msgstr "" msgstr ""
#: tiramisu/option.py:1185 #: tiramisu/option.py:1270
msgid "master group {0} shall not have a subgroup" msgid "master group {0} shall not have a subgroup"
msgstr "" msgstr ""
#: tiramisu/option.py:1188 #: tiramisu/option.py:1273
msgid "master group {0} shall not have a symlinkoption" msgid "master group {0} shall not have a symlinkoption"
msgstr "" msgstr ""
#: tiramisu/option.py:1191 #: tiramisu/option.py:1276
msgid "not allowed option {0} in group {1}: this option is not a multi" msgid "not allowed option {0} in group {1}: this option is not a multi"
msgstr "" msgstr ""
#: tiramisu/option.py:1202 #: tiramisu/option.py:1287
msgid "master group with wrong master name for {0}" msgid "master group with wrong master name for {0}"
msgstr "" msgstr ""
#: tiramisu/option.py:1211 #: tiramisu/option.py:1296
msgid "no child has same nom has master group for: {0}" msgid "no child has same nom has master group for: {0}"
msgstr "" msgstr ""
#: tiramisu/option.py:1214 #: tiramisu/option.py:1299
msgid "group_type: {0} not allowed" msgid "group_type: {0} not allowed"
msgstr "" msgstr ""
#: tiramisu/option.py:1306 #: tiramisu/option.py:1391
msgid "malformed requirements type for option: {0}, must be a dict" msgid "malformed requirements type for option: {0}, must be a dict"
msgstr "" msgstr ""
#: tiramisu/option.py:1323 #: tiramisu/option.py:1408
msgid "malformed requirements for option: {0} require must have option, expected and action keys" msgid "malformed requirements for option: {0} require must have option, expected and action keys"
msgstr "" msgstr ""
#: tiramisu/option.py:1328 #: tiramisu/option.py:1413
msgid "malformed requirements for option: {0} inverse must be boolean" msgid "malformed requirements for option: {0} inverse must be boolean"
msgstr "" msgstr ""
#: tiramisu/option.py:1332 #: tiramisu/option.py:1417
msgid "malformed requirements for option: {0} transitive must be boolean" msgid "malformed requirements for option: {0} transitive must be boolean"
msgstr "" msgstr ""
#: tiramisu/option.py:1336 #: tiramisu/option.py:1421
msgid "malformed requirements for option: {0} same_action must be boolean" msgid "malformed requirements for option: {0} same_action must be boolean"
msgstr "" msgstr ""
#: tiramisu/option.py:1340 #: tiramisu/option.py:1425
msgid "malformed requirements must be an option in option {0}" msgid "malformed requirements must be an option in option {0}"
msgstr "" msgstr ""
#: tiramisu/option.py:1343 #: tiramisu/option.py:1428
msgid "malformed requirements option {0} should not be a multi" msgid "malformed requirements option {0} should not be a multi"
msgstr "" msgstr ""
#: tiramisu/option.py:1349 #: tiramisu/option.py:1434
msgid "malformed requirements second argument must be valid for option {0}: {1}" msgid "malformed requirements second argument must be valid for option {0}: {1}"
msgstr "" msgstr ""
#: tiramisu/option.py:1354 #: tiramisu/option.py:1439
msgid "inconsistency in action types for option: {0} action: {1}" msgid "inconsistency in action types for option: {0} action: {1}"
msgstr "" msgstr ""
#: tiramisu/option.py:1379 #: tiramisu/option.py:1464
msgid "{0} should be a function" msgid "{0} should be a function"
msgstr "" msgstr ""
#: tiramisu/option.py:1382 #: tiramisu/option.py:1467
msgid "{0}_params should be a dict" msgid "{0}_params should be a dict"
msgstr "" msgstr ""
#: tiramisu/option.py:1385 #: tiramisu/option.py:1470
msgid "{0}_params with key {1} should not have length different to 1" msgid "{0}_params with key {1} should not have length different to 1"
msgstr "" msgstr ""
#: tiramisu/option.py:1389 #: tiramisu/option.py:1474
msgid "{0}_params should be tuple for key \"{1}\"" msgid "{0}_params should be tuple for key \"{1}\""
msgstr "" msgstr ""
#: tiramisu/option.py:1395 #: tiramisu/option.py:1480
msgid "validator not support tuple" msgid "validator not support tuple"
msgstr "" msgstr ""
#: tiramisu/option.py:1398 #: tiramisu/option.py:1483
msgid "{0}_params should have an option not a {0} for first argument" msgid "{0}_params should have an option not a {0} for first argument"
msgstr "" msgstr ""
#: tiramisu/option.py:1402 #: tiramisu/option.py:1487
msgid "{0}_params should have a boolean not a {0} for second argument" msgid "{0}_params should have a boolean not a {0} for second argument"
msgstr "" msgstr ""
#: tiramisu/setting.py:111 #: tiramisu/setting.py:116
msgid "can't rebind {0}" msgid "can't rebind {0}"
msgstr "" msgstr ""
#: tiramisu/setting.py:116 #: tiramisu/setting.py:121
msgid "can't unbind {0}" msgid "can't unbind {0}"
msgstr "" msgstr ""
#: tiramisu/setting.py:254 #: tiramisu/setting.py:259
msgid "cannot append {0} property for option {1}: this property is calculated" msgid "cannot append {0} property for option {1}: this property is calculated"
msgstr "" msgstr ""
#: tiramisu/setting.py:317 #: tiramisu/setting.py:322
msgid "opt and all_properties must not be set together in reset" msgid "opt and all_properties must not be set together in reset"
msgstr "" msgstr ""
#: tiramisu/setting.py:332 #: tiramisu/setting.py:337
msgid "if opt is not None, path should not be None in _getproperties" msgid "if opt is not None, path should not be None in _getproperties"
msgstr "" msgstr ""
#: tiramisu/setting.py:435 #: tiramisu/setting.py:440
msgid "cannot change the value for option {0} this option is frozen" msgid "cannot change the value for option {0} this option is frozen"
msgstr "" msgstr ""
#: tiramisu/setting.py:441 #: tiramisu/setting.py:446
msgid "trying to access to an option named: {0} with properties {1}" msgid "trying to access to an option named: {0} with properties {1}"
msgstr "" msgstr ""
#: tiramisu/setting.py:459 #: tiramisu/setting.py:464
msgid "permissive must be a tuple" msgid "permissive must be a tuple"
msgstr "" msgstr ""
#: tiramisu/setting.py:466 tiramisu/value.py:299 #: tiramisu/setting.py:471 tiramisu/value.py:301
msgid "invalid generic owner {0}" msgid "invalid generic owner {0}"
msgstr "" msgstr ""
#: tiramisu/setting.py:553 #: tiramisu/setting.py:558
msgid "malformed requirements imbrication detected for option: '{0}' with requirement on: '{1}'" msgid "malformed requirements imbrication detected for option: '{0}' with requirement on: '{1}'"
msgstr "" msgstr ""
#: tiramisu/setting.py:565 #: tiramisu/setting.py:570
msgid "option '{0}' has requirement's property error: {1} {2}" msgid "option '{0}' has requirement's property error: {1} {2}"
msgstr "" msgstr ""
#: tiramisu/storage/__init__.py:47 #: tiramisu/storage/__init__.py:52
msgid "storage_type is already set, cannot rebind it" msgid "storage_type is already set, cannot rebind it"
msgstr "" msgstr ""
#: tiramisu/storage/__init__.py:81 #: tiramisu/storage/__init__.py:86
msgid "option {0} not already exists in storage {1}" msgid "option {0} not already exists in storage {1}"
msgstr "" msgstr ""
#: tiramisu/storage/dictionary/storage.py:37 #: tiramisu/storage/dictionary/storage.py:39
msgid "dictionary storage cannot delete session" msgid "dictionary storage cannot delete session"
msgstr "" msgstr ""
#: tiramisu/storage/dictionary/storage.py:48 #: tiramisu/storage/dictionary/storage.py:50
msgid "session already used" msgid "session already used"
msgstr "" msgstr ""
#: tiramisu/storage/dictionary/storage.py:50 #: tiramisu/storage/dictionary/storage.py:52
msgid "a dictionary cannot be persistent" msgid "a dictionary cannot be persistent"
msgstr "" msgstr ""
#: tiramisu/value.py:306 #: tiramisu/value.py:308
msgid "no value for {0} cannot change owner to {1}" msgid "no value for {0} cannot change owner to {1}"
msgstr "" msgstr ""
#: tiramisu/value.py:414 #: tiramisu/value.py:416
msgid "invalid len for the slave: {0} which has {1} as master" msgid "invalid len for the slave: {0} which has {1} as master"
msgstr "" msgstr ""
#: tiramisu/value.py:438 #: tiramisu/value.py:440
msgid "invalid len for the master: {0} which has {1} as slave with greater len" msgid "invalid len for the master: {0} which has {1} as slave with greater len"
msgstr "" msgstr ""
#: tiramisu/value.py:468 #: tiramisu/value.py:470
msgid "cannot append a value on a multi option {0} which is a slave" msgid "cannot append a value on a multi option {0} which is a slave"
msgstr "" msgstr ""
#: tiramisu/value.py:505 #: tiramisu/value.py:507
msgid "cannot sort multi option {0} if master or slave" msgid "cannot sort multi option {0} if master or slave"
msgstr "" msgstr ""
#: tiramisu/value.py:509 #: tiramisu/value.py:511
msgid "cmp is not permitted in python v3 or greater" msgid "cmp is not permitted in python v3 or greater"
msgstr "" msgstr ""
#: tiramisu/value.py:518 #: tiramisu/value.py:520
msgid "cannot reverse multi option {0} if master or slave" msgid "cannot reverse multi option {0} if master or slave"
msgstr "" msgstr ""
#: tiramisu/value.py:526 #: tiramisu/value.py:528
msgid "cannot insert multi option {0} if master or slave" msgid "cannot insert multi option {0} if master or slave"
msgstr "" msgstr ""
#: tiramisu/value.py:534 #: tiramisu/value.py:536
msgid "cannot extend multi option {0} if master or slave" msgid "cannot extend multi option {0} if master or slave"
msgstr "" 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" msgid "cannot pop a value on a multi option {0} which is a slave"
msgstr "" msgstr ""