--- a/common/mixins.py Thu Nov 13 11:38:46 2008 +0100
+++ b/common/mixins.py Thu Nov 13 12:34:56 2008 +0100
@@ -289,8 +289,10 @@
done = set()
entity = view.entity(row, col)
if entity.eid in done:
- msg = entity.req._('loop in %s relation (%s)'
- % (entity.tree_attribute, entity.eid))
+ msg = entity.req._('loop in %(rel)s relation (%(eid)s)') % {
+ 'rel': entity.tree_attribute,
+ 'eid': entity.eid
+ }
return None, msg
done.add(entity.eid)
return done, entity
--- a/devtools/devctl.py Thu Nov 13 11:38:46 2008 +0100
+++ b/devtools/devctl.py Thu Nov 13 12:34:56 2008 +0100
@@ -123,6 +123,7 @@
for rschema in sorted(set(relations)):
rtype = rschema.type
add_msg(w, rtype)
+ done.add(rtype)
if not (schema.rschema(rtype).is_final() or rschema.symetric):
add_msg(w, '%s_object' % rtype)
if rschema.description and rschema.description not in done:
@@ -211,7 +212,7 @@
from tempfile import mktemp
import yams
from logilab.common.fileutils import ensure_fs_mode
- from logilab.common.shellutils import find, rm
+ from logilab.common.shellutils import globfind, find, rm
from cubicweb.common.i18n import extract_from_tal, execute
tempdir = mktemp()
mkdir(tempdir)
@@ -228,11 +229,11 @@
tali18nfile = join(tempdir, 'tali18n.py')
extract_from_tal(find(join(BASEDIR, 'web'), ('.py', '.pt')), tali18nfile)
print '******** .pot files generation'
- for id, files, lang in [('cubicweb', get_module_files(BASEDIR) + find(join(BASEDIR, 'misc', 'migration'), '.py'), None),
- ('schemadescr', find(join(BASEDIR, 'schemas'), '.py'), None),
+ for id, files, lang in [('pycubicweb', get_module_files(BASEDIR) + list(globfind(join(BASEDIR, 'misc', 'migration'), '*.py')), None),
+ ('schemadescr', globfind(join(BASEDIR, 'schemas'), '*.py'), None),
('yams', get_module_files(yams.__path__[0]), None),
('tal', [tali18nfile], None),
- ('js', find(join(BASEDIR, 'web'), '.js'), 'java'),
+ ('js', globfind(join(BASEDIR, 'web'), 'cub*.js'), 'java'),
]:
cmd = 'xgettext --no-location --omit-header -k_ -o %s %s'
if lang is not None:
@@ -309,7 +310,7 @@
tali18nfile = join(tempdir, 'tali18n.py')
extract_from_tal(find('.', ('.py', '.pt'), blacklist=STD_BLACKLIST+('test',)), tali18nfile)
print '******** extract Javascript messages'
- jsfiles = find('.', '.js')
+ jsfiles = [jsfile for jsfile in find('.', '.js') if basename(jsfile).startswith('cub')]
if jsfiles:
tmppotfile = join(tempdir, 'js.pot')
execute('xgettext --no-location --omit-header -k_ -L java --from-code=utf-8 -o %s %s'
--- a/i18n/en.po Thu Nov 13 11:38:46 2008 +0100
+++ b/i18n/en.po Thu Nov 13 12:34:56 2008 +0100
@@ -5,7 +5,7 @@
msgstr ""
"Project-Id-Version: 2.0\n"
"POT-Creation-Date: 2006-01-12 17:35+CET\n"
-"PO-Revision-Date: 2008-02-29 09:26+0100\n"
+"PO-Revision-Date: 2008-11-13 12:32+0100\n"
"Last-Translator: Sylvain Thenault <sylvain.thenault@logilab.fr>\n"
"Language-Team: English <devel@logilab.fr.org>\n"
"MIME-Version: 1.0\n"
@@ -31,10 +31,18 @@
msgstr ""
#, python-format
+msgid "%(cstr)s constraint failed for value %(value)r"
+msgstr ""
+
+#, python-format
msgid "%(firstname)s %(surname)s"
msgstr ""
#, python-format
+msgid "%(fmt1)s, or without time: %(fmt2)s"
+msgstr ""
+
+#, python-format
msgid "%(subject)s %(etype)s #%(eid)s (%(login)s)"
msgstr ""
@@ -51,10 +59,6 @@
msgstr ""
#, python-format
-msgid "%s constraint failed for value %r"
-msgstr ""
-
-#, python-format
msgid "%s days"
msgstr ""
@@ -86,10 +90,6 @@
msgid "%s software version of the database"
msgstr ""
-#, python-format
-msgid "%s, or without time: %s"
-msgstr ""
-
msgid "**"
msgstr "0..n 0..n"
@@ -199,6 +199,12 @@
msgid "Do you want to delete the following element(s) ?"
msgstr ""
+msgid "ECache"
+msgstr ""
+
+msgid "ECache_plural"
+msgstr ""
+
msgid "EConstraint"
msgstr "Constraint"
@@ -301,6 +307,9 @@
msgid "New Card"
msgstr "New card"
+msgid "New ECache"
+msgstr ""
+
msgid "New EConstraint"
msgstr "New constraint"
@@ -437,6 +446,9 @@
msgid "This Card"
msgstr "This card"
+msgid "This ECache"
+msgstr ""
+
msgid "This EConstraint"
msgstr "This constraint"
@@ -520,10 +532,26 @@
msgid "You are now connected to %s"
msgstr ""
+msgid ""
+"You can either submit a new file using the browse button above, or choose to "
+"remove already uploaded file by checking the \"detach attached file\" check-"
+"box, or edit file content online with the widget below."
+msgstr ""
+
+msgid ""
+"You can either submit a new file using the browse button above, or edit file "
+"content online with the widget below."
+msgstr ""
+
msgid "You can use any of the following substitutions in your text"
msgstr ""
-msgid "You have no access to this view"
+msgid "You have no access to this view or it's not applyable to current data"
+msgstr ""
+
+msgid ""
+"You're not authorized to access this page. If you think you should, please "
+"contact the site administrator."
msgstr ""
#, python-format
@@ -544,6 +572,13 @@
"reminder"
msgstr ""
+msgid ""
+"a simple cache entity characterized by a name and a validity date. The "
+"target application is responsible for updating timestamp when necessary to "
+"invalidate the cache (typically in hooks). Also, checkout the AppRsetObject."
+"get_cache() method."
+msgstr ""
+
msgid "about this site"
msgstr ""
@@ -631,6 +666,12 @@
msgid "actions_myprefs_description"
msgstr ""
+msgid "actions_prefs"
+msgstr ""
+
+msgid "actions_prefs_description"
+msgstr ""
+
msgid "actions_schema"
msgstr "schema"
@@ -745,6 +786,9 @@
msgid "add a Card"
msgstr "add a card"
+msgid "add a ECache"
+msgstr ""
+
msgid "add a EConstraint"
msgstr "add a constraint"
@@ -865,6 +909,9 @@
msgid "and linked"
msgstr ""
+msgid "and/or between different values"
+msgstr ""
+
msgid "anonymous"
msgstr ""
@@ -878,7 +925,7 @@
msgstr ""
#, python-format
-msgid "at least one relation %s is required on %s(%s)"
+msgid "at least one relation %(rtype)s is required on %(etype)s (%(eid)s)"
msgstr ""
msgid "attribute"
@@ -905,6 +952,9 @@
msgid "bookmark this page"
msgstr ""
+msgid "bookmark this search"
+msgstr ""
+
msgid "bookmarked_by"
msgstr "bookmarked by"
@@ -1224,6 +1274,10 @@
msgid "core relation indicating the type of an entity"
msgstr ""
+msgid ""
+"core relation indicating the types (including specialized types) of an entity"
+msgstr ""
+
msgid "cost"
msgstr ""
@@ -1478,12 +1532,18 @@
msgid "download"
msgstr ""
+msgid "download icon"
+msgstr ""
+
msgid "edit bookmarks"
msgstr ""
msgid "edit the index page"
msgstr ""
+msgid "editable-table"
+msgstr ""
+
msgid "edition"
msgstr ""
@@ -1517,6 +1577,9 @@
msgid "entity deleted"
msgstr ""
+msgid "entity type"
+msgstr ""
+
msgid ""
"entity type that may be used to construct some advanced security "
"configuration"
@@ -1557,12 +1620,42 @@
msgid "external page"
msgstr ""
+msgid "facetbox"
+msgstr ""
+
+msgid "facets_created_by-facet"
+msgstr "\"created by\" facet"
+
+msgid "facets_created_by-facet_description"
+msgstr ""
+
+msgid "facets_etype-facet"
+msgstr "\"entity type\" facet"
+
+msgid "facets_etype-facet_description"
+msgstr ""
+
+msgid "facets_has_text-facet"
+msgstr "\"has text\" facet"
+
+msgid "facets_has_text-facet_description"
+msgstr ""
+
+msgid "facets_in_group-facet"
+msgstr "\"in group\" facet"
+
+msgid "facets_in_group-facet_description"
+msgstr ""
+
+msgid "facets_in_state-facet"
+msgstr "\"in state\" facet"
+
+msgid "facets_in_state-facet_description"
+msgstr ""
+
msgid "february"
msgstr ""
-msgid "filter"
-msgstr ""
-
msgid "final"
msgstr ""
@@ -1750,7 +1843,7 @@
msgstr ""
#, python-format
-msgid "incorrect value (%r) for type \"%s\""
+msgid "incorrect value (%(value)s) for type \"%(type)s\""
msgstr ""
msgid "index"
@@ -1786,6 +1879,9 @@
msgid "inlined"
msgstr ""
+msgid "inlined view"
+msgstr ""
+
msgid "internationalizable"
msgstr ""
@@ -1821,6 +1917,12 @@
"you are changing this!"
msgstr ""
+msgid "is_instance_of"
+msgstr ""
+
+msgid "is_instance_of_object"
+msgstr ""
+
msgid "is_object"
msgstr "has instances"
@@ -1896,7 +1998,7 @@
msgstr ""
#, python-format
-msgid "loop in %s relation (%s)"
+msgid "loop in %(rel)s relation (%(eid)s)"
msgstr ""
msgid "main informations"
@@ -1960,9 +2062,15 @@
msgid "multiple edit"
msgstr ""
+msgid "my custom search"
+msgstr ""
+
msgid "name"
msgstr ""
+msgid "name of the cache"
+msgstr ""
+
msgid ""
"name of the main variables which should be used in the selection if "
"necessary (comma separated)"
@@ -1998,6 +2106,9 @@
msgid "no associated epermissions"
msgstr ""
+msgid "no possible transition"
+msgstr ""
+
msgid "no related project"
msgstr ""
@@ -2163,6 +2274,9 @@
msgid "remove this Card"
msgstr "remove this card"
+msgid "remove this ECache"
+msgstr ""
+
msgid "remove this EConstraint"
msgstr "remove this constraint"
@@ -2266,6 +2380,9 @@
msgid "search"
msgstr ""
+msgid "search for association"
+msgstr ""
+
msgid "searching for"
msgstr ""
@@ -2330,6 +2447,9 @@
msgid "show %s results"
msgstr ""
+msgid "show advanced fields"
+msgstr ""
+
msgid "show filter form"
msgstr ""
@@ -2354,6 +2474,12 @@
msgid "sorry, the server is unable to handle this query"
msgstr ""
+msgid "specializes"
+msgstr ""
+
+msgid "specializes_object"
+msgstr ""
+
msgid "startup views"
msgstr ""
@@ -2373,7 +2499,7 @@
msgstr ""
#, python-format
-msgid "status will change from %s to %s"
+msgid "status will change from %(st1)s to %(st2)s"
msgstr ""
msgid "subject"
@@ -2400,6 +2526,9 @@
msgid "table"
msgstr ""
+msgid "tablefilter"
+msgstr ""
+
msgid "task progression"
msgstr ""
@@ -2437,6 +2566,9 @@
msgid "thursday"
msgstr ""
+msgid "timestamp"
+msgstr ""
+
msgid "timestamp of the latest source synchronization."
msgstr ""
@@ -2485,12 +2617,18 @@
msgid "ui"
msgstr ""
+msgid "unaccessible"
+msgstr ""
+
msgid "unauthorized value"
msgstr ""
msgid "unique identifier used to connect to the application"
msgstr ""
+msgid "unknown external entity"
+msgstr ""
+
msgid "unknown property key"
msgstr ""
--- a/i18n/fr.po Thu Nov 13 11:38:46 2008 +0100
+++ b/i18n/fr.po Thu Nov 13 12:34:56 2008 +0100
@@ -4,7 +4,7 @@
msgid ""
msgstr ""
"Project-Id-Version: cubicweb 2.46.0\n"
-"PO-Revision-Date: 2008-03-28 18:14+0100\n"
+"PO-Revision-Date: 2008-11-13 12:28+0100\n"
"Last-Translator: Logilab Team <contact@logilab.fr>\n"
"Language-Team: fr <contact@logilab.fr>\n"
"MIME-Version: 1.0\n"
@@ -36,10 +36,18 @@
msgstr " de l'état %(fromstate)s vers l'état %(tostate)s\n"
#, python-format
+msgid "%(cstr)s constraint failed for value %(value)r"
+msgstr "la valeur %(value)r ne satisfait pas la contrainte %(cstr)s"
+
+#, python-format
msgid "%(firstname)s %(surname)s"
msgstr "%(firstname)s %(surname)s"
#, python-format
+msgid "%(fmt1)s, or without time: %(fmt2)s"
+msgstr "%(fmt1)s, ou bien sans spécifier l'heure: %(fmt2)s"
+
+#, python-format
msgid "%(subject)s %(etype)s #%(eid)s (%(login)s)"
msgstr "%(subject)s %(etype)s #%(eid)s (%(login)s)"
@@ -56,10 +64,6 @@
msgstr "%d années"
#, python-format
-msgid "%s constraint failed for value %r"
-msgstr "contrainte %s n'est pas respectée par valeur %r"
-
-#, python-format
msgid "%s days"
msgstr "%d jours"
@@ -91,10 +95,6 @@
msgid "%s software version of the database"
msgstr "version logicielle de la base pour %s"
-#, python-format
-msgid "%s, or without time: %s"
-msgstr "%s, ou bien sans préciser d'heure: %s"
-
msgid "**"
msgstr "0..n 0..n"
@@ -204,6 +204,12 @@
msgid "Do you want to delete the following element(s) ?"
msgstr "Voulez vous supprimer le(s) élément(s) suivant(s)"
+msgid "ECache"
+msgstr "Cache applicatif"
+
+msgid "ECache_plural"
+msgstr "Caches applicatifs"
+
msgid "EConstraint"
msgstr "Contrainte"
@@ -306,6 +312,9 @@
msgid "New Card"
msgstr "Nouvelle fiche"
+msgid "New ECache"
+msgstr "Nouveau cache applicatif"
+
msgid "New EConstraint"
msgstr "Nouvelle contrainte"
@@ -442,6 +451,9 @@
msgid "This Card"
msgstr "Cette fiche"
+msgid "This ECache"
+msgstr "Ce cache applicatif"
+
msgid "This EConstraint"
msgstr "Cette contrainte"
@@ -525,13 +537,39 @@
msgid "You are now connected to %s"
msgstr "Vous êtes connecté à l'application %s"
+msgid ""
+"You can either submit a new file using the browse button above, or choose to "
+"remove already uploaded file by checking the \"detach attached file\" check-"
+"box, or edit file content online with the widget below."
+msgstr ""
+"Vous pouvez soit soumettre un nouveau fichier en utilisant le bouton\n"
+"\"parcourir\" ci-dessus, soit suprrimer le fichier déjà présent en\n"
+"cochant la case \"détacher fichier attaché\", soit éditer le contenu\n"
+"du fichier en ligne avec le champ ci-dessous."
+
+msgid ""
+"You can either submit a new file using the browse button above, or edit file "
+"content online with the widget below."
+msgstr ""
+"Vous pouvez soit soumettre un nouveau fichier en utilisant le bouton\n"
+"\"parcourir\" ci-dessu, soit éditer le contenu du fichier en ligne\n"
+"avec le champ ci-dessous."
+
msgid "You can use any of the following substitutions in your text"
msgstr ""
"Vous pouvez utiliser n'importe quelle substitution parmi la liste suivante "
"dans le contenu de votre courriel."
msgid "You have no access to this view or it's not applyable to current data"
-msgstr "Vous n'avez pas accès à cette vue ou elle ne s'applique pas aux données"
+msgstr ""
+"Vous n'avez pas accès à cette vue ou elle ne s'applique pas aux données"
+
+msgid ""
+"You're not authorized to access this page. If you think you should, please "
+"contact the site administrator."
+msgstr ""
+"Vous n'êtes pas autorisé à accéder à cette page. Si toutefois vous pensez\n"
+"que c'est une erreur, veuillez contacter l'administrateur du site."
#, python-format
msgid "[%s supervision] changes summary"
@@ -557,6 +595,13 @@
"une fiche est un texte utilisé comme documentation, référence, rappel de "
"procédure..."
+msgid ""
+"a simple cache entity characterized by a name and a validity date. The "
+"target application is responsible for updating timestamp when necessary to "
+"invalidate the cache (typically in hooks). Also, checkout the AppRsetObject."
+"get_cache() method."
+msgstr ""
+
msgid "about this site"
msgstr "à propos de ce site"
@@ -644,6 +689,12 @@
msgid "actions_myprefs_description"
msgstr ""
+msgid "actions_prefs"
+msgstr "préférences"
+
+msgid "actions_prefs_description"
+msgstr ""
+
msgid "actions_schema"
msgstr "voir le schéma"
@@ -758,6 +809,9 @@
msgid "add a Card"
msgstr "ajouter une fiche"
+msgid "add a ECache"
+msgstr "ajouter un cache applicatif"
+
msgid "add a EConstraint"
msgstr "ajouter une contrainte"
@@ -880,6 +934,9 @@
msgid "and linked"
msgstr "et lié"
+msgid "and/or between different values"
+msgstr "et/ou entre les différentes valeurs"
+
msgid "anonymous"
msgstr "anonyme"
@@ -893,8 +950,10 @@
msgstr "avril"
#, python-format
-msgid "at least one relation %s is required on %s(%s)"
-msgstr "au moins une relation %s est nécessaire sur %s(%s)"
+msgid "at least one relation %(rtype)s is required on %(etype)s (%(eid)s)"
+msgstr ""
+"L'entité #%(eid)s de type %(etype)s doit nécessairement être reliée à une\n"
+"autre via la relation %(rtype)s"
msgid "attribute"
msgstr "attribut"
@@ -920,6 +979,9 @@
msgid "bookmark this page"
msgstr "poser un signet ici"
+msgid "bookmark this search"
+msgstr "mémoriser cette recherche"
+
msgid "bookmarked_by"
msgstr "utilisé par"
@@ -1260,6 +1322,10 @@
msgid "core relation indicating the type of an entity"
msgstr "relation système indiquant le type de l'entité"
+msgid ""
+"core relation indicating the types (including specialized types) of an entity"
+msgstr "relation système indiquant les types (y compris les types parents) d'une entité"
+
msgid "cost"
msgstr "coût"
@@ -1536,12 +1602,18 @@
msgid "download"
msgstr "télécharger"
+msgid "download icon"
+msgstr "icône de téléchargement"
+
msgid "edit bookmarks"
msgstr "éditer les signets"
msgid "edit the index page"
msgstr "éditer la page d'accueil"
+msgid "editable-table"
+msgstr "table éditable"
+
msgid "edition"
msgstr "édition"
@@ -1575,6 +1647,9 @@
msgid "entity deleted"
msgstr "entité supprimée"
+msgid "entity type"
+msgstr "type d'entité"
+
msgid ""
"entity type that may be used to construct some advanced security "
"configuration"
@@ -1601,6 +1676,8 @@
#, python-format
msgid "error while querying source %s, some data may be missing"
msgstr ""
+"une erreur est survenue en interrogeant %s, il est possible que les\n"
+"données affichées soient incomplètes"
msgid "eta_date"
msgstr "date de fin"
@@ -1617,12 +1694,42 @@
msgid "external page"
msgstr "page externe"
+msgid "facetbox"
+msgstr "boîte à facettes"
+
+msgid "facets_created_by-facet"
+msgstr "facette \"créé par\""
+
+msgid "facets_created_by-facet_description"
+msgstr ""
+
+msgid "facets_etype-facet"
+msgstr "facette \"est de type\""
+
+msgid "facets_etype-facet_description"
+msgstr ""
+
+msgid "facets_has_text-facet"
+msgstr "facette \"contient le texte\""
+
+msgid "facets_has_text-facet_description"
+msgstr ""
+
+msgid "facets_in_group-facet"
+msgstr "facette \"fait partie du groupe\""
+
+msgid "facets_in_group-facet_description"
+msgstr ""
+
+msgid "facets_in_state-facet"
+msgstr "facette \"dans l'état\""
+
+msgid "facets_in_state-facet_description"
+msgstr ""
+
msgid "february"
msgstr "février"
-msgid "filter"
-msgstr "filtrer"
-
msgid "final"
msgstr "final"
@@ -1666,7 +1773,7 @@
msgstr "indexation du texte"
msgid "generic plot"
-msgstr ""
+msgstr "tracé de courbes standard"
msgid "go back to the index page"
msgstr "retourner sur la page d'accueil"
@@ -1856,6 +1963,9 @@
msgid "inlined"
msgstr "mise en ligne"
+msgid "inlined view"
+msgstr "vue embarquée (en ligne)"
+
msgid "internationalizable"
msgstr "internationalisable"
@@ -1896,6 +2006,12 @@
"est ce que cette relation est mise en ligne dans la base de données ?vous "
"devez savoir ce que vous faites si vous changez cela !"
+msgid "is_instance_of"
+msgstr "est une instance de"
+
+msgid "is_instance_of_object"
+msgstr "type de"
+
msgid "is_object"
msgstr "a pour instance"
@@ -1974,8 +2090,8 @@
msgstr "se déconnecter"
#, python-format
-msgid "loop in %s relation (%s)"
-msgstr "boucle dans la relation %s (%s)"
+msgid "loop in %(rel)s relation (%(eid)s)"
+msgstr "boucle détectée en parcourant la relation %(rel)s de l'entité #%(eid)s"
msgid "main informations"
msgstr "Informations générales"
@@ -2038,9 +2154,15 @@
msgid "multiple edit"
msgstr "édition multiple"
+msgid "my custom search"
+msgstr "ma recherche personnalisée"
+
msgid "name"
msgstr "nom"
+msgid "name of the cache"
+msgstr "nom du cache applicatif"
+
msgid ""
"name of the main variables which should be used in the selection if "
"necessary (comma separated)"
@@ -2078,6 +2200,9 @@
msgid "no associated epermissions"
msgstr "aucune permission spécifique n'est définie"
+msgid "no possible transition"
+msgstr "aucune transition possible"
+
msgid "no related project"
msgstr "pas de projet rattaché"
@@ -2244,6 +2369,9 @@
msgid "remove this Card"
msgstr "supprimer cette fiche"
+msgid "remove this ECache"
+msgstr "supprimer ce cache applicatif"
+
msgid "remove this EConstraint"
msgstr "supprimer cette contrainte"
@@ -2356,6 +2484,9 @@
msgid "search"
msgstr "rechercher"
+msgid "search for association"
+msgstr "rechercher pour associer"
+
msgid "searching for"
msgstr "Recherche de"
@@ -2423,6 +2554,9 @@
msgid "show %s results"
msgstr "montrer %s résultats"
+msgid "show advanced fields"
+msgstr "montrer les champs avancés"
+
msgid "show filter form"
msgstr "afficher le filtre"
@@ -2447,6 +2581,12 @@
msgid "sorry, the server is unable to handle this query"
msgstr "désolé, le serveur ne peut traiter cette requête"
+msgid "specializes"
+msgstr "dérive de"
+
+msgid "specializes_object"
+msgstr "parent de"
+
msgid "startup views"
msgstr "vues de départ"
@@ -2466,8 +2606,8 @@
msgstr "changement d'état"
#, python-format
-msgid "status will change from %s to %s"
-msgstr "l'état va passer de %s à %s"
+msgid "status will change from %(st1)s to %(st2)s"
+msgstr "l'entité passera de l'état %(st1)s à l'état %(st2)s"
msgid "subject"
msgstr "sujet"
@@ -2493,6 +2633,9 @@
msgid "table"
msgstr "table"
+msgid "tablefilter"
+msgstr "filtre de tableau"
+
msgid "task progression"
msgstr "avancement de la tâche"
@@ -2531,6 +2674,9 @@
msgid "thursday"
msgstr "jeudi"
+msgid "timestamp"
+msgstr "date"
+
msgid "timestamp of the latest source synchronization."
msgstr "date de la dernière synchronisation avec la source."
@@ -2579,12 +2725,18 @@
msgid "ui"
msgstr "propriétés génériques de l'interface"
+msgid "unaccessible"
+msgstr "inaccessible"
+
msgid "unauthorized value"
msgstr "valeur non autorisée"
msgid "unique identifier used to connect to the application"
msgstr "identifiant unique utilisé pour se connecter à l'application"
+msgid "unknown external entity"
+msgstr "entité (externe) introuvable"
+
msgid "unknown property key"
msgstr "clé de propriété inconnue"
@@ -2747,6 +2899,12 @@
#~ msgid "%s constraint failed"
#~ msgstr "La contrainte %s n'est pas satisfaite"
+#~ msgid "%s constraint failed for value %r"
+#~ msgstr "contrainte %s n'est pas respectée par valeur %r"
+
+#~ msgid "%s, or without time: %s"
+#~ msgstr "%s, ou bien sans préciser d'heure: %s"
+
#~ msgid "Loading"
#~ msgstr "chargement"
@@ -2756,6 +2914,9 @@
#~ msgid "and"
#~ msgstr "et"
+#~ msgid "at least one relation %s is required on %s(%s)"
+#~ msgstr "au moins une relation %s est nécessaire sur %s(%s)"
+
#~ msgid "cancel edition"
#~ msgstr "annuler l'édition"
@@ -2766,6 +2927,9 @@
#~ "langue par défaut (regarder le répertoire i18n de l'application pour voir "
#~ "les langues disponibles)"
+#~ msgid "filter"
+#~ msgstr "filtrer"
+
#~ msgid "footer"
#~ msgstr "pied de page"
@@ -2781,6 +2945,9 @@
#~ msgid "linked"
#~ msgstr "lié"
+#~ msgid "loop in %s relation (%s)"
+#~ msgstr "boucle dans la relation %s (%s)"
+
#~ msgid ""
#~ "maximum number of related entities to display in in the restriction view"
#~ msgstr ""
@@ -2789,5 +2956,8 @@
#~ msgid "see also"
#~ msgstr "voir aussi"
+#~ msgid "status will change from %s to %s"
+#~ msgstr "l'état va passer de %s à %s"
+
#~ msgid "workflow history"
#~ msgstr "historique du workflow"
--- a/schemas/base.py Thu Nov 13 11:38:46 2008 +0100
+++ b/schemas/base.py Thu Nov 13 12:34:56 2008 +0100
@@ -308,7 +308,15 @@
"""generic relation to link one entity to another"""
symetric = True
-class ECache(EntityType):
+class ECache(MetaEntityType):
+ """a simple cache entity characterized by a name and
+ a validity date.
+
+ The target application is responsible for updating timestamp
+ when necessary to invalidate the cache (typically in hooks).
+
+ Also, checkout the AppRsetObject.get_cache() method.
+ """
permissions = {
'read': ('managers', 'users', 'guests'),
'add': ('managers',),
--- a/server/hooks.py Thu Nov 13 11:38:46 2008 +0100
+++ b/server/hooks.py Thu Nov 13 12:34:56 2008 +0100
@@ -245,9 +245,10 @@
return
if self.session.unsafe_execute(*self._rql()).rowcount < 1:
etype = self.session.describe(self.eid)[0]
- msg = self.session._('at least one relation %s is required on %s(%s)')
- raise ValidationError(self.eid, {self.rtype: msg % (self.rtype,
- etype, self.eid)})
+ msg = self.session._('at least one relation %(rtype)s is required on %(etype)s (%(eid)s)')
+ raise ValidationError(self.eid, {self.rtype: msg % {'rtype': self.rtype,
+ 'etype': etype,
+ 'eid': self.eid}})
def commit_event(self):
pass
--- a/web/views/baseforms.py Thu Nov 13 11:38:46 2008 +0100
+++ b/web/views/baseforms.py Thu Nov 13 12:34:56 2008 +0100
@@ -101,8 +101,10 @@
_ = self.req._
self.w(self.error_message())
self.w(u'<h4>%s %s</h4>\n' % (_(transition.name), entity.view('oneline')))
- self.w(u'<p>%s</p>\n' % (_('status will change from %s to %s')
- % (_(state.name), _(dest.name))))
+ msg = _('status will change from %(st1)s to %(st2)s') % {
+ 'st1': _(state.name),
+ 'st2': _(dest.name)}
+ self.w(u'<p>%s</p>\n' % msg)
self.w(u'<form action="%s" onsubmit="return freezeFormButtons(\'entityForm\');" method="post" id="entityForm">\n'
% self.build_url('edit'))
self.w(u'<div id="progress">%s</div>' % _('validating...'))
--- a/web/widgets.py Thu Nov 13 11:38:46 2008 +0100
+++ b/web/widgets.py Thu Nov 13 12:34:56 2008 +0100
@@ -783,8 +783,10 @@
def render_example(self, req):
formatstr1 = req.property_value('ui.datetime-format')
formatstr2 = req.property_value('ui.date-format')
- return req._('%s, or without time: %s') % (now().strftime(formatstr1),
- now().strftime(formatstr2))
+ return req._('%(fmt1)s, or without time: %(fmt2)s') % {
+ 'fmt1': now().strftime(formatstr1),
+ 'fmt2': now().strftime(formatstr2),
+ }