remove unicode decode error

This commit is contained in:
Emmanuel Garette 2017-01-19 21:38:16 +01:00
parent e2159fd307
commit f497e99002
8 changed files with 268 additions and 239 deletions

View file

@ -54,7 +54,7 @@ def test_domainname_upper():
if sys.version_info[0] >= 3: # pragma: optional cover
assert msg in str(err)
else:
assert msg in unicode(err)
assert msg in str(err)
has_error = True
assert has_error is True
has_error = False
@ -64,7 +64,7 @@ def test_domainname_upper():
if sys.version_info[0] >= 3: # pragma: optional cover
assert msg in str(err)
else:
assert msg in unicode(err)
assert msg in str(err)
has_error = True
assert has_error is True

View file

@ -489,9 +489,11 @@ def test_reset_properties_force_store_value():
def test_pprint():
msg_error = _('cannot access to {} "{}" because has {} {}')
msg_error = _("cannot access to {0} \"{1}\" because has {2} {3}")
msg_is = _('the value of "{0}" is "{1}"')
msg_is_not = _('the value of "{0}" is not "{1}"')
properties = _('properties')
prop = _('property')
s = StrOption("string", "", default=["string"], default_multi="string", multi=True, properties=('hidden', 'disabled'))
s2 = StrOption("string2", "", default="string")
@ -522,10 +524,10 @@ def test_pprint():
list_disabled_1 = 'disabled (' + display_list([msg_is.format('string2', 'string'), msg_is.format('Test int option', '1')]) + ')'
list_disabled_2 = 'disabled (' + display_list([msg_is.format('Test int option', '1'), msg_is.format('string2', 'string')]) + ')'
list_hidden = 'hidden (' + msg_is_not.format('Test int option', display_list([2, 3, 4], 'or')) + ')'
comp1 = str(err) == msg_error.format('option', 'Test string option', 'properties', display_list([list_disabled_1, list_hidden]))
comp2 = str(err) == msg_error.format('option', 'Test string option', 'properties', display_list([list_disabled_2, list_hidden]))
comp3 = str(err) == msg_error.format('option', 'Test string option', 'properties', display_list([list_hidden, list_disabled_1]))
comp4 = str(err) == msg_error.format('option', 'Test string option', 'properties', display_list([list_hidden, list_disabled_2]))
comp1 = str(err) == _(msg_error.format('option', 'Test string option', properties, display_list([list_disabled_1, list_hidden])))
comp2 = str(err) == _(msg_error.format('option', 'Test string option', properties, display_list([list_disabled_2, list_hidden])))
comp3 = str(err) == _(msg_error.format('option', 'Test string option', properties, display_list([list_hidden, list_disabled_1])))
comp4 = str(err) == _(msg_error.format('option', 'Test string option', properties, display_list([list_hidden, list_disabled_2])))
assert comp1 or comp2 or comp3 or comp4
try:
@ -533,7 +535,7 @@ def test_pprint():
except Exception, err:
pass
assert str(err) == msg_error.format('optiondescription', 'options', 'property', 'hidden (' + msg_is.format('Test int option', 1) + ')')
assert str(err) == msg_error.format('optiondescription', 'options', prop, 'hidden (' + msg_is.format('Test int option', 1) + ')')
try:
config.val3
@ -544,17 +546,17 @@ def test_pprint():
msg_3 = msg_is_not.format('Test int option', display_list([2, 3, 4], 'or'))
list_hidden = 'hidden (' + display_list([msg_1, msg_2, msg_3]) + ')'
comp1 = str(err) == msg_error.format('option', 'val3', 'property', list_hidden)
comp1 = str(err) == msg_error.format('option', 'val3', prop, list_hidden)
list_hidden = 'hidden (' + display_list([msg_1, msg_3, msg_2]) + ')'
comp2 = str(err) == msg_error.format('option', 'val3', 'property', list_hidden)
comp2 = str(err) == msg_error.format('option', 'val3', prop, list_hidden)
list_hidden = 'hidden (' + display_list([msg_2, msg_1, msg_3]) + ')'
comp3 = str(err) == msg_error.format('option', 'val3', 'property', list_hidden)
comp3 = str(err) == msg_error.format('option', 'val3', prop, list_hidden)
list_hidden = 'hidden (' + display_list([msg_2, msg_3, msg_1]) + ')'
comp4 = str(err) == msg_error.format('option', 'val3', 'property', list_hidden)
comp4 = str(err) == msg_error.format('option', 'val3', prop, list_hidden)
list_hidden = 'hidden (' + display_list([msg_3, msg_1, msg_2]) + ')'
comp5 = str(err) == msg_error.format('option', 'val3', 'property', list_hidden)
comp5 = str(err) == msg_error.format('option', 'val3', prop, list_hidden)
list_hidden = 'hidden (' + display_list([msg_3, msg_2, msg_1]) + ')'
comp6 = str(err) == msg_error.format('option', 'val3', 'property', list_hidden)
comp6 = str(err) == msg_error.format('option', 'val3', prop, list_hidden)
assert comp1 or comp2 or comp3 or comp4 or comp5 or comp6
try:
@ -562,11 +564,11 @@ def test_pprint():
except Exception, err:
pass
assert str(err) == msg_error.format('option', 'string', 'properties', display_list(['disabled', 'hidden']))
assert str(err) == msg_error.format('option', 'string', properties, display_list(['disabled', 'hidden']))
try:
config.string3
except Exception, err:
pass
assert str(err) == msg_error.format('option', 'string3', 'property', 'hidden')
assert str(err) == msg_error.format('option', 'string3', prop, 'hidden')

View file

@ -19,6 +19,10 @@ from .i18n import _
def display_list(lst, separator='and'):
if separator == 'and':
separator = _('and')
elif separator == 'or':
separator = _('or')
if len(lst) == 0:
return ''
elif len(lst) == 1:

View file

@ -45,8 +45,7 @@ mo_location = LOCALE_DIR
gettext.find(APP_NAME, mo_location)
gettext.textdomain(APP_NAME)
gettext.bind_textdomain_codeset(APP_NAME, "UTF-8")
gettext.translation(APP_NAME, fallback=True)
t = gettext.translation(APP_NAME, fallback=True)
_ = t.ugettext
_ = t.gettext

View file

@ -585,7 +585,7 @@ class Option(OnlyOption):
'submulti_index: {2}'.format(_value, _index,
submulti_index),
exc_info=True)
err_msg = unicode('{0}')
err_msg = '{0}'.format(err)
if err_msg:
msg = _('"{0}" is an invalid {1} for "{2}", {3}'
'').format(_value, self._display_name,

View file

@ -511,13 +511,16 @@ class Settings(object):
props, self, datas, opt_type)
else:
if len(props) == 1:
prop_msg = 'property'
prop_msg = _('property')
else:
prop_msg = 'properties'
prop_msg = _('properties')
name = opt_or_descr.impl_get_display_name()
if isinstance(name, unicode):
name = name.encode('utf8')
return PropertiesOptionError(_('cannot access to {0} "{1}" '
'because has {2} {3}'
'').format(opt_type,
opt_or_descr.impl_get_display_name(),
name,
prop_msg,
display_list(props)), props,
self, datas, opt_type)

View file

@ -2,7 +2,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Tiramisu\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-11-20 17:58+0100\n"
"POT-Creation-Date: 2017-01-19 21:26+0100\n"
"PO-Revision-Date: \n"
"Last-Translator: Emmanuel Garette <egarette@cadoles.com>\n"
"Language-Team: Tiramisu's team <egarette@cadoles.com>\n"
@ -10,18 +10,18 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 1.8.8\n"
"X-Generator: Poedit 1.8.11\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Poedit-SourceCharset: UTF-8\n"
#: tiramisu/autolib.py:170
#: tiramisu/autolib.py:172
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:235
#: tiramisu/autolib.py:237
msgid "callback cannot return a list for a slave option ({0})"
msgstr ""
"un calcul ne peut pas retourner une liste pour une option esclave ({0})"
@ -30,88 +30,88 @@ msgstr ""
msgid "descr must be an optiondescription, not {0}"
msgstr "descr doit être une optiondescription pas un {0}"
#: tiramisu/config.py:146
#: tiramisu/config.py:148
msgid "unknown group_type: {0}"
msgstr "group_type inconnu: {0}"
#: tiramisu/config.py:185 tiramisu/setting.py:335 tiramisu/value.py:54
#: tiramisu/config.py:187 tiramisu/setting.py:335 tiramisu/value.py:54
#: tiramisu/value.py:749
msgid "the context does not exist anymore"
msgstr "le context n'existe plus"
#: tiramisu/config.py:190
#: tiramisu/config.py:195
msgid "no option description found for this config (may be GroupConfig)"
msgstr ""
"pas d'option description trouvé pour cette config (peut être un GroupConfig)"
#: tiramisu/config.py:226
#: tiramisu/config.py:231
msgid "can't assign to an OptionDescription"
msgstr "ne peut pas attribuer une valeur à une OptionDescription"
#: tiramisu/config.py:384
#: tiramisu/config.py:392
msgid "unknown type_ type {0}for _find"
msgstr "type_ type {0} pour _find inconnu"
#: tiramisu/config.py:427
#: tiramisu/config.py:435
msgid "no option found in config with these criteria"
msgstr "aucune option trouvée dans la config avec ces critères"
#: tiramisu/config.py:475
#: tiramisu/config.py:483
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:498
#: tiramisu/config.py:506
msgid "unexpected path {0}, should start with {1}"
msgstr "chemin imprévu {0}, devrait commencer par {1}"
#: tiramisu/config.py:573
#: tiramisu/config.py:591
msgid "opt in getowner must be an option not {0}"
msgstr "opt dans getowner doit être une option pas {0}"
#: tiramisu/config.py:621
#: tiramisu/config.py:639
msgid "cannot serialize Config with MetaConfig"
msgstr "impossible de sérialiser une Config avec une MetaConfig"
#: tiramisu/config.py:635
#: tiramisu/config.py:653
msgid "this storage is not serialisable, could be a none persistent storage"
msgstr "ce storage n'est sérialisable, devrait être une storage non persistant"
#: tiramisu/config.py:700
#: tiramisu/config.py:722
msgid "invalid name: {0} for config"
msgstr "nom invalide : {0} pour la config"
#: tiramisu/config.py:732
#: tiramisu/config.py:754
msgid "groupconfig's children must be a list"
msgstr "enfants d'une groupconfig doit être une liste"
#: tiramisu/config.py:736
#: tiramisu/config.py:758
msgid "groupconfig's children must be Config, MetaConfig or GroupConfig"
msgstr ""
"les enfants d'un groupconfig doivent être des Config, MetaConfig ou "
"GroupConfig"
#: tiramisu/config.py:739
#: tiramisu/config.py:761
msgid "name must be set to config before creating groupconfig"
msgstr "un nom doit être donné à la config avant de créer un groupconfig"
#: tiramisu/config.py:745
#: tiramisu/config.py:767
msgid "config name must be uniq in groupconfig for {0}"
msgstr "le nom de la config doit être unique dans un groupconfig pour {0}"
#: tiramisu/config.py:854
#: tiramisu/config.py:876
msgid "metaconfig's children should be config, not {0}"
msgstr "enfants d'une metaconfig doit être une config, pas {0}"
#: tiramisu/config.py:858
#: tiramisu/config.py:880
msgid "child has already a metaconfig's"
msgstr "enfant a déjà une metaconfig"
#: tiramisu/config.py:862
#: tiramisu/config.py:884
msgid "all config in metaconfig must have the same optiondescription"
msgstr ""
"toutes les configs d'une metaconfig doivent avoir la même optiondescription"
#: tiramisu/config.py:877
#: tiramisu/config.py:899
msgid ""
"force_default, force_default_if_same or force_dont_change_value cannot be "
"set with only_config"
@ -119,88 +119,96 @@ msgstr ""
"force_default, force_default_if_same ou force_dont_change_value ne peuvent "
"pas être spécifié avec only_config"
#: tiramisu/config.py:883
#: tiramisu/config.py:905
msgid "force_default and force_dont_change_value cannot be set together"
msgstr ""
"force_default et force_dont_change_value ne peuvent pas être mis ensemble"
#: tiramisu/error.py:28
#: tiramisu/error.py:23
msgid "and"
msgstr "et"
#: tiramisu/error.py:25
msgid "or"
msgstr "ou"
#: tiramisu/error.py:34
msgid " {} "
msgstr " {} "
#: tiramisu/error.py:52
#: tiramisu/error.py:58
msgid "property"
msgstr "propriété"
msgstr "de la propriété"
#: tiramisu/error.py:54
#: tiramisu/error.py:60
msgid "properties"
msgstr "propriétés"
msgstr "des propriétés"
#: tiramisu/error.py:56 tiramisu/setting.py:517
#: tiramisu/error.py:62 tiramisu/setting.py:520
msgid "cannot access to {0} \"{1}\" because has {2} {3}"
msgstr "ne peut accéder à l'{0} \"{1}\" a cause de {2} {3}"
msgstr "ne peut accéder à l'{0} \"{1}\" a cause {2} {3}"
#: tiramisu/option/baseoption.py:62
#: tiramisu/option/baseoption.py:63
msgid "{0} must be a function"
msgstr "{0} doit être une fonction"
#: tiramisu/option/baseoption.py:65
#: tiramisu/option/baseoption.py:66
msgid "{0}_params must be a dict"
msgstr "{0}_params doit être un dict"
#: tiramisu/option/baseoption.py:68
#: tiramisu/option/baseoption.py:69
msgid "{0}_params with key {1} mustn't have length different to 1"
msgstr ""
"{0}_params avec la clef {1} ne doit pas avoir une longueur différent de 1"
#: tiramisu/option/baseoption.py:72
#: tiramisu/option/baseoption.py:73
msgid "{0}_params must be tuple for key \"{1}\""
msgstr "{0}_params doit être un tuple pour la clef \"{1}\""
#: tiramisu/option/baseoption.py:78
#: tiramisu/option/baseoption.py:79
msgid "{0}_params with length of tuple as 1 must only have None as first value"
msgstr ""
"{0}_params avec un tuple de longueur 1 doit seulement avoir None comme "
"première valeur"
#: tiramisu/option/baseoption.py:82
#: tiramisu/option/baseoption.py:83
msgid "{0}_params must only have 1 or 2 as length"
msgstr "{0}_params doit seulement avoir une longueur de 1 ou 2"
#: tiramisu/option/baseoption.py:88
msgid "{0}_params must have an option not a {0} for first argument"
msgstr "{0}_params doit avoir une option pas un {0} pour premier argument"
#: tiramisu/option/baseoption.py:89
msgid "{}_params must have an option not a {} for first argument"
msgstr "{}_params doit avoir une option pas un {} pour premier argument"
#: tiramisu/option/baseoption.py:92
msgid "{0}_params must have a boolean not a {0} for second argument"
msgstr "{0}_params doit avoir un booléen pas un {0} pour second argument"
#: tiramisu/option/baseoption.py:93
msgid "{}_params must have a boolean not a {} for second argument"
msgstr "{}_params doit avoir un booléan pas un {} pour second argument"
#: tiramisu/option/baseoption.py:109
#: tiramisu/option/baseoption.py:110
msgid "invalid name: {0} for option"
msgstr "nom invalide : {0} pour l'option"
#: tiramisu/option/baseoption.py:111
#: tiramisu/option/baseoption.py:112
msgid "default_multi is set whereas multi is False in option: {0}"
msgstr ""
"default_multi est spécifié alors que multi est à False pour l'option : {0}"
#: tiramisu/option/baseoption.py:123
#: tiramisu/option/baseoption.py:124
msgid "invalid multi value"
msgstr "valeur multiple invalide"
#: tiramisu/option/baseoption.py:125
#: tiramisu/option/baseoption.py:126
msgid "unique must be a boolean"
msgstr "unique doit être un booléan"
#: tiramisu/option/baseoption.py:127
#: tiramisu/option/baseoption.py:128
msgid "unique must be set only with multi value"
msgstr "unique doit être activé uniquement avec une valeur multiple"
#: tiramisu/option/baseoption.py:137
#: tiramisu/option/baseoption.py:138
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/baseoption.py:176
#: tiramisu/option/baseoption.py:211
msgid ""
"params defined for a callback function but no callback defined yet for "
"option {0}"
@ -208,138 +216,138 @@ msgstr ""
"params définis pour une fonction callback mais par de callback encore "
"définis pour l'option {0}"
#: tiramisu/option/baseoption.py:181
#: tiramisu/option/baseoption.py:216
msgid "a callback is already set for {0}, cannot set another one's"
msgstr "un calback a déjà été définit pour {0}, ne peut en définir un autre"
#: tiramisu/option/baseoption.py:265
#: tiramisu/option/baseoption.py:300
msgid "cannot serialize Option, only in OptionDescription"
msgstr "ne peut serialiser une Option, seulement via une OptionDescription"
#: tiramisu/option/baseoption.py:346 tiramisu/storage/dictionary/option.py:123
#: tiramisu/option/baseoption.py:381 tiramisu/storage/dictionary/option.py:125
msgid "'{0}' ({1}) object attribute '{2}' is read-only"
msgstr "l'attribut {2} de l'objet '{0}' ({1}) est en lecture seule"
#: tiramisu/option/baseoption.py:367
#: tiramisu/option/baseoption.py:402
msgid "invalid string"
msgstr "invalide caractère"
#: tiramisu/option/baseoption.py:370
#: tiramisu/option/baseoption.py:405
msgid "invalid unicode or string"
msgstr "invalide unicode ou string"
#: tiramisu/option/baseoption.py:475 tiramisu/option/baseoption.py:572
#: tiramisu/option/baseoption.py:510 tiramisu/option/baseoption.py:609
msgid "attention, \"{0}\" could be an invalid {1} for \"{2}\", {3}"
msgstr ""
"attention, \"{0}\" peut être une option de type {1} invalide pour \"{2}\", "
"{3}"
#: tiramisu/option/baseoption.py:513 tiramisu/option/baseoption.py:624
#: tiramisu/option/baseoption.py:548 tiramisu/option/baseoption.py:661
msgid "invalid value \"{}\", this value is already in \"{}\""
msgstr "valeur invalide \"{}\", cette valeur est déjà dans \"{}\""
#: tiramisu/option/baseoption.py:554 tiramisu/option/baseoption.py:591
#: tiramisu/option/baseoption.py:590 tiramisu/option/baseoption.py:628
msgid "\"{0}\" is an invalid {1} for \"{2}\", {3}"
msgstr "\"{0}\" est une option de type {1} invalide pour \"{2}\", {3}"
#: tiramisu/option/baseoption.py:558 tiramisu/option/baseoption.py:595
#: tiramisu/option/baseoption.py:594 tiramisu/option/baseoption.py:632
msgid "\"{0}\" is an invalid {1} for \"{2}\""
msgstr "\"{0}\" est une option de type {1} invalide pour \"{2}\""
#: tiramisu/option/baseoption.py:569
#: tiramisu/option/baseoption.py:606
msgid "do_validation for {0}: error in value"
msgstr "do_validation for {0} : erreur dans un la valeur"
#: tiramisu/option/baseoption.py:611 tiramisu/option/baseoption.py:629
#: tiramisu/option/baseoption.py:648 tiramisu/option/baseoption.py:666
msgid "invalid value \"{0}\" for \"{1}\" which must be a list"
msgstr "valeur invalide \"{0}\" pour \"{1}\" qui doit être une liste"
#: tiramisu/option/baseoption.py:616
#: tiramisu/option/baseoption.py:653
msgid "invalid value \"{}\" for \"{}\" which must not be a list"
msgstr "valeur invalide \"{0}\" pour \"{1}\" qui ne doit pas être une liste"
#: tiramisu/option/baseoption.py:638
#: tiramisu/option/baseoption.py:675
msgid "invalid value \"{0}\" for \"{1}\" which must be a list of list"
msgstr "valeur invalide \"{0}\" pour \"{1}\" qui doit être une liste de liste"
#: tiramisu/option/baseoption.py:691 tiramisu/option/baseoption.py:695
#: tiramisu/option/baseoption.py:728 tiramisu/option/baseoption.py:732
msgid "cannot add consistency with submulti option"
msgstr "ne peut ajouter de test de consistence a une option submulti"
#: tiramisu/option/baseoption.py:697
#: tiramisu/option/baseoption.py:734
msgid "consistency must be set with an option"
msgstr "consistency doit être configuré avec une option"
#: tiramisu/option/baseoption.py:700 tiramisu/option/baseoption.py:707
#: tiramisu/option/baseoption.py:737 tiramisu/option/baseoption.py:744
msgid ""
"almost one option in consistency is in a dynoptiondescription but not all"
msgstr ""
"au moins une option dans le test de consistance est dans une "
"dynoptiondescription mais pas toutes"
#: tiramisu/option/baseoption.py:703
#: tiramisu/option/baseoption.py:740
msgid "option in consistency must be in same dynoptiondescription"
msgstr ""
"option dans une consistency doit être dans le même dynoptiondescription"
#: tiramisu/option/baseoption.py:710
#: tiramisu/option/baseoption.py:747
msgid "cannot add consistency with itself"
msgstr "ne peut ajouter une consistency avec lui même"
#: tiramisu/option/baseoption.py:712
#: tiramisu/option/baseoption.py:749
msgid "every options in consistency must be multi or none"
msgstr ""
"toutes les options d'une consistency doivent être multi ou ne pas l'être"
#: tiramisu/option/baseoption.py:729
#: tiramisu/option/baseoption.py:766
msgid "'{0}' ({1}) cannot add consistency, option is read-only"
msgstr ""
"'{0}' ({1}) ne peut ajouter de consistency, l'option est en lecture seul"
#: tiramisu/option/baseoption.py:736
#: tiramisu/option/baseoption.py:773
msgid "consistency {0} not available for this option"
msgstr "consistency {0} non valable pour cette option"
#: tiramisu/option/baseoption.py:740
#: tiramisu/option/baseoption.py:777
msgid "unknow parameter {0} in consistency"
msgstr "paramètre inconnu {0} dans un test de consistance"
#: tiramisu/option/baseoption.py:803
#: tiramisu/option/baseoption.py:841
msgid "_cons_not_equal: {} are not different"
msgstr "_cons_not_equal: {} sont différents"
#: tiramisu/option/baseoption.py:807
#: tiramisu/option/baseoption.py:844
msgid "should be different from the value of {}"
msgstr "devrait être différent de la valeur de {}"
#: tiramisu/option/baseoption.py:809
#: tiramisu/option/baseoption.py:846
msgid "must be different from the value of {}"
msgstr "doit être différent de la valeur de {}"
#: tiramisu/option/baseoption.py:813
#: tiramisu/option/baseoption.py:849
msgid "value for {} should be different"
msgstr "valeur pour {} devrait être différent"
#: tiramisu/option/baseoption.py:815
#: tiramisu/option/baseoption.py:851
msgid "value for {} must be different"
msgstr "valeur pour {} doit être différent"
#: tiramisu/option/baseoption.py:871
#: tiramisu/option/baseoption.py:910
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/baseoption.py:891
#: tiramisu/option/baseoption.py:930
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/baseoption.py:897
#: tiramisu/option/baseoption.py:936
msgid "malformed requirements for option: {0} unknown keys {1}, must only {2}"
msgstr ""
"requirements mal formés pour l'option : {0} clefs inconnues {1}, doit "
"seulement avoir {2}"
#: tiramisu/option/baseoption.py:905
#: tiramisu/option/baseoption.py:944
msgid ""
"malformed requirements for option: {0} require must have option, expected "
"and action keys"
@ -347,33 +355,33 @@ msgstr ""
"requirements malformé pour l'option : {0} l'exigence doit avoir les clefs "
"option, expected et action"
#: tiramisu/option/baseoption.py:912
#: tiramisu/option/baseoption.py:951
msgid ""
"malformed requirements for option: {0} action cannot be force_store_value"
msgstr ""
"requirements mal formés pour l'option : {0} action ne peut pas être "
"force_store_value"
#: tiramisu/option/baseoption.py:917
#: tiramisu/option/baseoption.py:956
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/baseoption.py:921
#: tiramisu/option/baseoption.py:960
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/baseoption.py:925
#: tiramisu/option/baseoption.py:964
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/baseoption.py:929
#: tiramisu/option/baseoption.py:968
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/baseoption.py:932
#: tiramisu/option/baseoption.py:971
msgid ""
"malformed requirements multi option must not set as requires of non multi "
"option {0}"
@ -381,18 +389,12 @@ msgstr ""
"requirements mal formés une option multiple ne doit pas être spécifié comme "
"pré-requis à l'option non multiple {0}"
#: tiramisu/option/baseoption.py:938
msgid ""
"malformed requirements second argument must be valid for option {0}: {1}"
#: tiramisu/option/baseoption.py:977
msgid "malformed requirements expected value must be valid for option {0}: {1}"
msgstr ""
"requirements mal formés deuxième argument doit être valide pour l'option "
"{0} : {1}"
"valeur de \"expected\" malformé, doit être valide pour l'option {0} : {1}"
#: tiramisu/option/baseoption.py:943
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/baseoption.py:971
#: tiramisu/option/baseoption.py:1007
msgid "malformed symlinkoption must be an option for symlink {0}"
msgstr "symlinkoption mal formé, doit être une option pour symlink {0}"
@ -764,15 +766,15 @@ 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:538
#: tiramisu/setting.py:541
msgid "permissive must be a tuple"
msgstr "permissive doit être un tuple"
#: tiramisu/setting.py:545 tiramisu/value.py:539
#: tiramisu/setting.py:548 tiramisu/value.py:539
msgid "invalid generic owner {0}"
msgstr "invalide owner générique {0}"
#: tiramisu/setting.py:646
#: tiramisu/setting.py:649
msgid ""
"malformed requirements imbrication detected for option: '{0}' with "
"requirement on: '{1}'"
@ -780,15 +782,15 @@ msgstr ""
"imbrication de requirements mal formés detectée pour l'option : '{0}' avec "
"requirement sur : '{1}'"
#: tiramisu/setting.py:669
#: tiramisu/setting.py:672
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/setting.py:692
#: tiramisu/setting.py:695
msgid "the value of \"{0}\" is \"{1}\""
msgstr "la valeur de \"{0}\" est \"{1}\""
#: tiramisu/setting.py:694
#: tiramisu/setting.py:697
msgid "the value of \"{0}\" is not \"{1}\""
msgstr "la valeur de \"{0}\" n'est pas \"{1}\""
@ -804,46 +806,46 @@ msgstr "ne peut pas importer le stockage {0}"
msgid "option {0} not already exists in storage {1}"
msgstr "option {0} n'existe pas dans l'espace de stockage {1}"
#: tiramisu/storage/dictionary/option.py:108
#: tiramisu/storage/dictionary/option.py:110
msgid "invalid default_multi value {0} for option {1}: {2}"
msgstr "la valeur default_multi est invalide {0} pour l'option {1} : {2}"
#: tiramisu/storage/dictionary/option.py:148
#: tiramisu/storage/dictionary/option.py:150
#: tiramisu/storage/dictionary/value.py:234
#: tiramisu/storage/sqlalchemy/option.py:666
msgid "information's item not found: {0}"
msgstr "item '{0}' dans les informations non trouvée"
#: tiramisu/storage/dictionary/option.py:413
#: tiramisu/storage/dictionary/option.py:415
msgid "use impl_get_opt_by_path only with root OptionDescription"
msgstr "utiliser impl_get_opt_by_path seulement sur l'OptionDescription racine"
#: tiramisu/storage/dictionary/option.py:415
#: tiramisu/storage/dictionary/option.py:417
#: tiramisu/storage/sqlalchemy/option.py:730
msgid "no option for path {0}"
msgstr "pas d'option pour le chemin {0}"
#: tiramisu/storage/dictionary/option.py:420
#: tiramisu/storage/dictionary/option.py:422
#: tiramisu/storage/sqlalchemy/option.py:740
msgid "use impl_get_path_by_opt only with root OptionDescription"
msgstr ""
"utiliser impl_get_path_by_opt seulement avec une OptionDescription racine"
#: tiramisu/storage/dictionary/option.py:422
#: tiramisu/storage/dictionary/option.py:424
#: tiramisu/storage/sqlalchemy/option.py:741
msgid "no option {0} found"
msgstr "pas d'option {0} trouvée"
#: tiramisu/storage/dictionary/option.py:469
#: tiramisu/storage/dictionary/option.py:471
msgid "cannot find dynpath"
msgstr "ne peut trouver le dynpath"
#: tiramisu/storage/dictionary/option.py:558
#: tiramisu/storage/dictionary/option.py:560
#: tiramisu/storage/sqlalchemy/option.py:894
msgid "suffix and context needed if it's a dyn option"
msgstr "suffix et context obligatoire si c'est une option dynamique"
#: tiramisu/storage/dictionary/option.py:579
#: tiramisu/storage/dictionary/option.py:581
#: tiramisu/storage/sqlalchemy/option.py:926
msgid "unknown Option {0} in OptionDescription {1}"
msgstr "Option {0} inconnue pour l'OptionDescription {1}"
@ -915,6 +917,21 @@ msgstr "ne peut étendre une option multi {0} pour une maître ou une esclave"
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 "{0}_params must have an option not a {0} for first argument"
#~ msgstr "{0}_params doit avoir une option pas un {0} pour premier argument"
#~ msgid "{0}_params must have a boolean not a {0} for second argument"
#~ msgstr "{0}_params doit avoir un booléen pas un {0} pour second argument"
#~ 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}"
#~ msgid "inconsistency in action types for option: {0} action: {1}"
#~ msgstr "incohérence dans les types action pour l'option : {0} action {1}"
#~ msgid "a callback is already set for option {0}, cannot set another one's"
#~ msgstr ""
#~ "un callback est en lecture seul pour l'option {0}, ne peut en placer une "

View file

@ -5,7 +5,7 @@
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2016-11-20 17:57+CET\n"
"POT-Creation-Date: 2017-01-19 21:24+CET\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -15,11 +15,11 @@ msgstr ""
"Generated-By: pygettext.py 1.5\n"
#: tiramisu/autolib.py:170
#: tiramisu/autolib.py:172
msgid "unable to carry out a calculation, option {0} has properties: {1} for: {2}"
msgstr ""
#: tiramisu/autolib.py:235
#: tiramisu/autolib.py:237
msgid "callback cannot return a list for a slave option ({0})"
msgstr ""
@ -27,324 +27,328 @@ msgstr ""
msgid "descr must be an optiondescription, not {0}"
msgstr ""
#: tiramisu/config.py:146
#: tiramisu/config.py:148
msgid "unknown group_type: {0}"
msgstr ""
#: tiramisu/config.py:185 tiramisu/setting.py:335 tiramisu/value.py:54
#: tiramisu/config.py:187 tiramisu/setting.py:335 tiramisu/value.py:54
#: tiramisu/value.py:749
msgid "the context does not exist anymore"
msgstr ""
#: tiramisu/config.py:190
#: tiramisu/config.py:195
msgid "no option description found for this config (may be GroupConfig)"
msgstr ""
#: tiramisu/config.py:226
#: tiramisu/config.py:231
msgid "can't assign to an OptionDescription"
msgstr ""
#: tiramisu/config.py:384
#: tiramisu/config.py:392
msgid "unknown type_ type {0}for _find"
msgstr ""
#: tiramisu/config.py:427
#: tiramisu/config.py:435
msgid "no option found in config with these criteria"
msgstr ""
#: tiramisu/config.py:475
#: tiramisu/config.py:483
msgid "make_dict can't filtering with value without option"
msgstr ""
#: tiramisu/config.py:498
#: tiramisu/config.py:506
msgid "unexpected path {0}, should start with {1}"
msgstr ""
#: tiramisu/config.py:573
#: tiramisu/config.py:591
msgid "opt in getowner must be an option not {0}"
msgstr ""
#: tiramisu/config.py:621
#: tiramisu/config.py:639
msgid "cannot serialize Config with MetaConfig"
msgstr ""
#: tiramisu/config.py:635
#: tiramisu/config.py:653
msgid "this storage is not serialisable, could be a none persistent storage"
msgstr ""
#: tiramisu/config.py:700
#: tiramisu/config.py:722
msgid "invalid name: {0} for config"
msgstr ""
#: tiramisu/config.py:732
#: tiramisu/config.py:754
msgid "groupconfig's children must be a list"
msgstr ""
#: tiramisu/config.py:736
#: tiramisu/config.py:758
msgid "groupconfig's children must be Config, MetaConfig or GroupConfig"
msgstr ""
#: tiramisu/config.py:739
#: tiramisu/config.py:761
msgid "name must be set to config before creating groupconfig"
msgstr ""
#: tiramisu/config.py:745
#: tiramisu/config.py:767
msgid "config name must be uniq in groupconfig for {0}"
msgstr ""
#: tiramisu/config.py:854
#: tiramisu/config.py:876
msgid "metaconfig's children should be config, not {0}"
msgstr ""
#: tiramisu/config.py:858
#: tiramisu/config.py:880
msgid "child has already a metaconfig's"
msgstr ""
#: tiramisu/config.py:862
#: tiramisu/config.py:884
msgid "all config in metaconfig must have the same optiondescription"
msgstr ""
#: tiramisu/config.py:877
#: tiramisu/config.py:899
msgid "force_default, force_default_if_same or force_dont_change_value cannot be set with only_config"
msgstr ""
#: tiramisu/config.py:883
#: tiramisu/config.py:905
msgid "force_default and force_dont_change_value cannot be set together"
msgstr ""
#: tiramisu/error.py:28
#: tiramisu/error.py:23
msgid "and"
msgstr ""
#: tiramisu/error.py:25
msgid "or"
msgstr ""
#: tiramisu/error.py:34
msgid " {} "
msgstr ""
#: tiramisu/error.py:52
#: tiramisu/error.py:58
msgid "property"
msgstr ""
#: tiramisu/error.py:54
#: tiramisu/error.py:60
msgid "properties"
msgstr ""
#: tiramisu/error.py:56 tiramisu/setting.py:517
#: tiramisu/error.py:62 tiramisu/setting.py:520
msgid "cannot access to {0} \"{1}\" because has {2} {3}"
msgstr ""
#: tiramisu/option/baseoption.py:62
#: tiramisu/option/baseoption.py:63
msgid "{0} must be a function"
msgstr ""
#: tiramisu/option/baseoption.py:65
#: tiramisu/option/baseoption.py:66
msgid "{0}_params must be a dict"
msgstr ""
#: tiramisu/option/baseoption.py:68
#: tiramisu/option/baseoption.py:69
msgid "{0}_params with key {1} mustn't have length different to 1"
msgstr ""
#: tiramisu/option/baseoption.py:72
#: tiramisu/option/baseoption.py:73
msgid "{0}_params must be tuple for key \"{1}\""
msgstr ""
#: tiramisu/option/baseoption.py:78
#: tiramisu/option/baseoption.py:79
msgid "{0}_params with length of tuple as 1 must only have None as first value"
msgstr ""
#: tiramisu/option/baseoption.py:82
#: tiramisu/option/baseoption.py:83
msgid "{0}_params must only have 1 or 2 as length"
msgstr ""
#: tiramisu/option/baseoption.py:88
msgid "{0}_params must have an option not a {0} for first argument"
#: tiramisu/option/baseoption.py:89
msgid "{}_params must have an option not a {} for first argument"
msgstr ""
#: tiramisu/option/baseoption.py:92
msgid "{0}_params must have a boolean not a {0} for second argument"
#: tiramisu/option/baseoption.py:93
msgid "{}_params must have a boolean not a {} for second argument"
msgstr ""
#: tiramisu/option/baseoption.py:109
#: tiramisu/option/baseoption.py:110
msgid "invalid name: {0} for option"
msgstr ""
#: tiramisu/option/baseoption.py:111
#: tiramisu/option/baseoption.py:112
msgid "default_multi is set whereas multi is False in option: {0}"
msgstr ""
#: tiramisu/option/baseoption.py:123
#: tiramisu/option/baseoption.py:124
msgid "invalid multi value"
msgstr ""
#: tiramisu/option/baseoption.py:125
#: tiramisu/option/baseoption.py:126
msgid "unique must be a boolean"
msgstr ""
#: tiramisu/option/baseoption.py:127
#: tiramisu/option/baseoption.py:128
msgid "unique must be set only with multi value"
msgstr ""
#: tiramisu/option/baseoption.py:137
#: tiramisu/option/baseoption.py:138
msgid "invalid properties type {0} for {1}, must be a tuple"
msgstr ""
#: tiramisu/option/baseoption.py:176
#: tiramisu/option/baseoption.py:211
msgid "params defined for a callback function but no callback defined yet for option {0}"
msgstr ""
#: tiramisu/option/baseoption.py:181
#: tiramisu/option/baseoption.py:216
msgid "a callback is already set for {0}, cannot set another one's"
msgstr ""
#: tiramisu/option/baseoption.py:265
#: tiramisu/option/baseoption.py:300
msgid "cannot serialize Option, only in OptionDescription"
msgstr ""
#: tiramisu/option/baseoption.py:346 tiramisu/storage/dictionary/option.py:123
#: tiramisu/option/baseoption.py:381 tiramisu/storage/dictionary/option.py:125
msgid "'{0}' ({1}) object attribute '{2}' is read-only"
msgstr ""
#: tiramisu/option/baseoption.py:367
#: tiramisu/option/baseoption.py:402
msgid "invalid string"
msgstr ""
#: tiramisu/option/baseoption.py:370
#: tiramisu/option/baseoption.py:405
msgid "invalid unicode or string"
msgstr ""
#: tiramisu/option/baseoption.py:475 tiramisu/option/baseoption.py:572
#: tiramisu/option/baseoption.py:510 tiramisu/option/baseoption.py:609
msgid "attention, \"{0}\" could be an invalid {1} for \"{2}\", {3}"
msgstr ""
#: tiramisu/option/baseoption.py:513 tiramisu/option/baseoption.py:624
#: tiramisu/option/baseoption.py:548 tiramisu/option/baseoption.py:661
msgid "invalid value \"{}\", this value is already in \"{}\""
msgstr ""
#: tiramisu/option/baseoption.py:554 tiramisu/option/baseoption.py:591
#: tiramisu/option/baseoption.py:590 tiramisu/option/baseoption.py:628
msgid "\"{0}\" is an invalid {1} for \"{2}\", {3}"
msgstr ""
#: tiramisu/option/baseoption.py:558 tiramisu/option/baseoption.py:595
#: tiramisu/option/baseoption.py:594 tiramisu/option/baseoption.py:632
msgid "\"{0}\" is an invalid {1} for \"{2}\""
msgstr ""
#: tiramisu/option/baseoption.py:569
#: tiramisu/option/baseoption.py:606
msgid "do_validation for {0}: error in value"
msgstr ""
#: tiramisu/option/baseoption.py:611 tiramisu/option/baseoption.py:629
#: tiramisu/option/baseoption.py:648 tiramisu/option/baseoption.py:666
msgid "invalid value \"{0}\" for \"{1}\" which must be a list"
msgstr ""
#: tiramisu/option/baseoption.py:616
#: tiramisu/option/baseoption.py:653
msgid "invalid value \"{}\" for \"{}\" which must not be a list"
msgstr ""
#: tiramisu/option/baseoption.py:638
#: tiramisu/option/baseoption.py:675
msgid "invalid value \"{0}\" for \"{1}\" which must be a list of list"
msgstr ""
#: tiramisu/option/baseoption.py:691 tiramisu/option/baseoption.py:695
#: tiramisu/option/baseoption.py:728 tiramisu/option/baseoption.py:732
msgid "cannot add consistency with submulti option"
msgstr ""
#: tiramisu/option/baseoption.py:697
#: tiramisu/option/baseoption.py:734
msgid "consistency must be set with an option"
msgstr ""
#: tiramisu/option/baseoption.py:700 tiramisu/option/baseoption.py:707
#: tiramisu/option/baseoption.py:737 tiramisu/option/baseoption.py:744
msgid "almost one option in consistency is in a dynoptiondescription but not all"
msgstr ""
#: tiramisu/option/baseoption.py:703
#: tiramisu/option/baseoption.py:740
msgid "option in consistency must be in same dynoptiondescription"
msgstr ""
#: tiramisu/option/baseoption.py:710
#: tiramisu/option/baseoption.py:747
msgid "cannot add consistency with itself"
msgstr ""
#: tiramisu/option/baseoption.py:712
#: tiramisu/option/baseoption.py:749
msgid "every options in consistency must be multi or none"
msgstr ""
#: tiramisu/option/baseoption.py:729
#: tiramisu/option/baseoption.py:766
msgid "'{0}' ({1}) cannot add consistency, option is read-only"
msgstr ""
#: tiramisu/option/baseoption.py:736
#: tiramisu/option/baseoption.py:773
msgid "consistency {0} not available for this option"
msgstr ""
#: tiramisu/option/baseoption.py:740
#: tiramisu/option/baseoption.py:777
msgid "unknow parameter {0} in consistency"
msgstr ""
#: tiramisu/option/baseoption.py:803
#: tiramisu/option/baseoption.py:841
msgid "_cons_not_equal: {} are not different"
msgstr ""
#: tiramisu/option/baseoption.py:807
#: tiramisu/option/baseoption.py:844
msgid "should be different from the value of {}"
msgstr ""
#: tiramisu/option/baseoption.py:809
#: tiramisu/option/baseoption.py:846
msgid "must be different from the value of {}"
msgstr ""
#: tiramisu/option/baseoption.py:813
#: tiramisu/option/baseoption.py:849
msgid "value for {} should be different"
msgstr ""
#: tiramisu/option/baseoption.py:815
#: tiramisu/option/baseoption.py:851
msgid "value for {} must be different"
msgstr ""
#: tiramisu/option/baseoption.py:871
#: tiramisu/option/baseoption.py:910
msgid "default value not allowed if option: {0} is calculated"
msgstr ""
#: tiramisu/option/baseoption.py:891
#: tiramisu/option/baseoption.py:930
msgid "malformed requirements type for option: {0}, must be a dict"
msgstr ""
#: tiramisu/option/baseoption.py:897
#: tiramisu/option/baseoption.py:936
msgid "malformed requirements for option: {0} unknown keys {1}, must only {2}"
msgstr ""
#: tiramisu/option/baseoption.py:905
#: tiramisu/option/baseoption.py:944
msgid "malformed requirements for option: {0} require must have option, expected and action keys"
msgstr ""
#: tiramisu/option/baseoption.py:912
#: tiramisu/option/baseoption.py:951
msgid "malformed requirements for option: {0} action cannot be force_store_value"
msgstr ""
#: tiramisu/option/baseoption.py:917
#: tiramisu/option/baseoption.py:956
msgid "malformed requirements for option: {0} inverse must be boolean"
msgstr ""
#: tiramisu/option/baseoption.py:921
#: tiramisu/option/baseoption.py:960
msgid "malformed requirements for option: {0} transitive must be boolean"
msgstr ""
#: tiramisu/option/baseoption.py:925
#: tiramisu/option/baseoption.py:964
msgid "malformed requirements for option: {0} same_action must be boolean"
msgstr ""
#: tiramisu/option/baseoption.py:929
#: tiramisu/option/baseoption.py:968
msgid "malformed requirements must be an option in option {0}"
msgstr ""
#: tiramisu/option/baseoption.py:932
#: tiramisu/option/baseoption.py:971
msgid "malformed requirements multi option must not set as requires of non multi option {0}"
msgstr ""
#: tiramisu/option/baseoption.py:938
msgid "malformed requirements second argument must be valid for option {0}: {1}"
#: tiramisu/option/baseoption.py:977
msgid "malformed requirements expected value must be valid for option {0}: {1}"
msgstr ""
#: tiramisu/option/baseoption.py:943
msgid "inconsistency in action types for option: {0} action: {1}"
msgstr ""
#: tiramisu/option/baseoption.py:971
#: tiramisu/option/baseoption.py:1007
msgid "malformed symlinkoption must be an option for symlink {0}"
msgstr ""
@ -697,27 +701,27 @@ msgstr ""
msgid "cannot change the value for option {0} this option is frozen"
msgstr ""
#: tiramisu/setting.py:538
#: tiramisu/setting.py:541
msgid "permissive must be a tuple"
msgstr ""
#: tiramisu/setting.py:545 tiramisu/value.py:539
#: tiramisu/setting.py:548 tiramisu/value.py:539
msgid "invalid generic owner {0}"
msgstr ""
#: tiramisu/setting.py:646
#: tiramisu/setting.py:649
msgid "malformed requirements imbrication detected for option: '{0}' with requirement on: '{1}'"
msgstr ""
#: tiramisu/setting.py:669
#: tiramisu/setting.py:672
msgid "option '{0}' has requirement's property error: {1} {2}"
msgstr ""
#: tiramisu/setting.py:692
#: tiramisu/setting.py:695
msgid "the value of \"{0}\" is \"{1}\""
msgstr ""
#: tiramisu/setting.py:694
#: tiramisu/setting.py:697
msgid "the value of \"{0}\" is not \"{1}\""
msgstr ""
@ -733,45 +737,45 @@ msgstr ""
msgid "option {0} not already exists in storage {1}"
msgstr ""
#: tiramisu/storage/dictionary/option.py:108
#: tiramisu/storage/dictionary/option.py:110
msgid "invalid default_multi value {0} for option {1}: {2}"
msgstr ""
#: tiramisu/storage/dictionary/option.py:148
#: tiramisu/storage/dictionary/option.py:150
#: tiramisu/storage/dictionary/value.py:234
#: tiramisu/storage/sqlalchemy/option.py:666
msgid "information's item not found: {0}"
msgstr ""
#: tiramisu/storage/dictionary/option.py:413
#: tiramisu/storage/dictionary/option.py:415
msgid "use impl_get_opt_by_path only with root OptionDescription"
msgstr ""
#: tiramisu/storage/dictionary/option.py:415
#: tiramisu/storage/dictionary/option.py:417
#: tiramisu/storage/sqlalchemy/option.py:730
msgid "no option for path {0}"
msgstr ""
#: tiramisu/storage/dictionary/option.py:420
#: tiramisu/storage/dictionary/option.py:422
#: tiramisu/storage/sqlalchemy/option.py:740
msgid "use impl_get_path_by_opt only with root OptionDescription"
msgstr ""
#: tiramisu/storage/dictionary/option.py:422
#: tiramisu/storage/dictionary/option.py:424
#: tiramisu/storage/sqlalchemy/option.py:741
msgid "no option {0} found"
msgstr ""
#: tiramisu/storage/dictionary/option.py:469
#: tiramisu/storage/dictionary/option.py:471
msgid "cannot find dynpath"
msgstr ""
#: tiramisu/storage/dictionary/option.py:558
#: tiramisu/storage/dictionary/option.py:560
#: tiramisu/storage/sqlalchemy/option.py:894
msgid "suffix and context needed if it's a dyn option"
msgstr ""
#: tiramisu/storage/dictionary/option.py:579
#: tiramisu/storage/dictionary/option.py:581
#: tiramisu/storage/sqlalchemy/option.py:926
msgid "unknown Option {0} in OptionDescription {1}"
msgstr ""