Revision a7dfbba0
Modification des templates/controllers de Vigiboard pour gérer un mieux l'i18n.
Mise à jour des fichiers de traduction de Vigiboard.
Ajout des fichiers de traduction de Vigicore au SVN.
git-svn-id: https://vigilo-dev.si.c-s.fr/svn@640 b22e2e97-25c9-44ff-b637-2e5ceca36478
vigiboard/config/vigiboard_cfg.py | ||
---|---|---|
25 | 25 |
# Version de Vigiboard |
26 | 26 |
'vigiboard_version': u'0.1', |
27 | 27 |
|
28 |
# URL pour le logo Vigilo, si vide on renvoi sur / |
|
28 |
# URL du lien présent sur le logo Vigilo. |
|
29 |
# Si absent ou vide, on redirige vers la racine de Vigiboard. |
|
29 | 30 |
'vigiboard_links.logo': '', |
30 | 31 |
|
31 | 32 |
# URL des tickets, possibilités: |
vigiboard/controllers/vigiboard_controller.py | ||
---|---|---|
7 | 7 |
from tg import expose, flash, require, url, request, redirect |
8 | 8 |
|
9 | 9 |
from pylons.i18n import ugettext as _, lazy_ugettext as l_ |
10 |
from catwalk.tg2 import Catwalk |
|
11 | 10 |
from repoze.what import predicates |
12 | 11 |
|
13 | 12 |
from vigiboard.lib.base import BaseController |
14 | 13 |
from vigiboard.model import DBSession |
15 | 14 |
from vigiboard.controllers.error import ErrorController |
16 | 15 |
from vigiboard import model |
16 |
|
|
17 | 17 |
class VigiboardRootController(BaseController): |
18 | 18 |
""" |
19 | 19 |
The root controller for the vigiboard application. |
... | ... | |
26 | 26 |
|
27 | 27 |
Keep in mind that WSGI applications shouldn't be mounted directly: They |
28 | 28 |
must be wrapped around with :class:`tg.controllers.WSGIAppController`. |
29 |
|
|
30 | 29 |
""" |
31 |
admin = Catwalk(model, DBSession) |
|
32 |
|
|
33 |
error = ErrorController() |
|
34 |
|
|
35 |
@expose('vigiboard.templates.authentication') |
|
36 |
def auth(self): |
|
37 |
"""Display some information about auth* on this application.""" |
|
38 |
return dict(page='auth') |
|
39 | 30 |
|
40 |
@expose('vigiboard.templates.index') |
|
41 |
@require(predicates.has_permission('manage', msg=l_('Only for managers'))) |
|
42 |
def manage_permission_only(self, **kw): |
|
43 |
"""Illustrate how a page for managers only works.""" |
|
44 |
return dict(page='managers stuff') |
|
45 |
|
|
46 |
@expose('vigiboard.templates.index') |
|
47 |
@require(predicates.is_user('editor', msg=l_('Only for the editor'))) |
|
48 |
def editor_user_only(self, **kw): |
|
49 |
"""Illustrate how a page exclusive for the editor works.""" |
|
50 |
return dict(page='editor stuff') |
|
31 |
error = ErrorController() |
|
51 | 32 |
|
52 | 33 |
@expose('vigiboard.templates.login') |
53 | 34 |
def login(self, came_from=url('/')): |
... | ... | |
57 | 38 |
flash(_('Wrong credentials'), 'warning') |
58 | 39 |
return dict(page='login', login_counter=str(login_counter), |
59 | 40 |
came_from=came_from) |
60 |
|
|
41 |
|
|
61 | 42 |
@expose() |
62 | 43 |
def post_login(self, came_from=url('/')): |
63 | 44 |
""" |
64 | 45 |
Redirect the user to the initially requested page on successful |
65 | 46 |
authentication or redirect her back to the login page if login failed. |
66 |
|
|
67 | 47 |
""" |
68 | 48 |
if not request.identity: |
69 | 49 |
login_counter = request.environ['repoze.who.logins'] + 1 |
... | ... | |
77 | 57 |
""" |
78 | 58 |
Redirect the user to the initially requested page on logout and say |
79 | 59 |
goodbye as well. |
80 |
|
|
81 | 60 |
""" |
82 | 61 |
flash(_('We hope to see you soon!')) |
83 | 62 |
redirect(came_from) |
vigiboard/controllers/vigiboard_plugin/shn.py | ||
---|---|---|
8 | 8 |
VigiboardRequestPlugin |
9 | 9 |
from vigiboard.model import DBSession, ServiceHautNiveau, Events |
10 | 10 |
from sqlalchemy import sql |
11 |
from pylons.i18n import ugettext as _
|
|
11 |
from pylons.i18n import gettext as _ |
|
12 | 12 |
from tg import tmpl_context, url |
13 | 13 |
from tw.jquery.ui_dialog import JQueryUIDialog |
14 | 14 |
|
... | ... | |
26 | 26 |
outerjoin = [(ServiceHautNiveau, |
27 | 27 |
ServiceHautNiveau.servicename_dep == Events.servicename)], |
28 | 28 |
groupby = [(Events),(ServiceHautNiveau.servicename_dep)], |
29 |
name = _(u'SHNs impactés'),
|
|
30 |
style = {'title': u'Services de haut niveau impactés',
|
|
29 |
name = _(u'Impacted HLS'),
|
|
30 |
style = {'title': _(u'Impacted High-Level Services'),
|
|
31 | 31 |
'style': 'text-align:center'}, |
32 | 32 |
object_name = "shn" |
33 | 33 |
) |
... | ... | |
38 | 38 |
dico = { |
39 | 39 |
'baseurl': url(''), |
40 | 40 |
'idevent': req[0].idevent, |
41 |
'shn_impactes': req[2],
|
|
41 |
'impacted_hls': req[2],
|
|
42 | 42 |
} |
43 | 43 |
return '<a href="javascript:vigiboard_shndialog(\'%(baseurl)s\','\ |
44 |
'\'%(idevent)d\')" class="SHNLien">%(shn_impactes)d</a>' % \
|
|
44 |
'\'%(idevent)d\')" class="SHNLien">%(impacted_hls)d</a>' % \
|
|
45 | 45 |
dico |
46 | 46 |
else: |
47 | 47 |
return "" |
... | ... | |
52 | 52 |
# XXX We insert 10 unbreakable spaces ( ) to workaround a bug |
53 | 53 |
# in JQuery where the dialog's width is incorrectly set. |
54 | 54 |
tmpl_context.shndialog = JQueryUIDialog(id='SHNDialog', |
55 |
autoOpen=False, title='%s%s' % (_('Service de haut niveau'),
|
|
55 |
autoOpen=False, title='%s%s' % (_(u'High-Level Service'),
|
|
56 | 56 |
' ' * 10)) |
57 | 57 |
context.append([tmpl_context.shndialog, self.object_name]) |
58 | 58 |
|
vigiboard/controllers/vigiboardrequest.py | ||
---|---|---|
277 | 277 |
lst_title = [ |
278 | 278 |
['',{}], |
279 | 279 |
[_('Date')+ '<span style="font-weight:normal">' + \ |
280 |
_('<br />[Duration]') + '</span>',
|
|
280 |
'<br />['+_('Duration') + ']</span>',
|
|
281 | 281 |
{'style':'text-align:left'}], |
282 |
['#', {'title':_('Nombre d\'occurrences')}],
|
|
282 |
['#', {'title':_('Occurrence count')}],
|
|
283 | 283 |
[_('Host'), {'style':'text-align:left'}], |
284 |
[_('Service Type<br />Service Name'),
|
|
284 |
[_('Service Type')+'<br />'+_('Service Name'),
|
|
285 | 285 |
{'style':'text-align:left'}], |
286 | 286 |
[_('Output'), {'style':'text-align:left'}] |
287 | 287 |
] |
288 | 288 |
lst_title.extend([[plug.name, plug.style] for plug in self.plugin]) |
289 |
lst_title.extend([[_('[TT]'), {'title': _('Trouble Ticket')}],
|
|
289 |
lst_title.extend([['['+_('TT')+']', {'title': _('Trouble Ticket')}],
|
|
290 | 290 |
['', {}]]) |
291 | 291 |
events = [lst_title] |
292 | 292 |
i = 0 |
vigiboard/i18n/en_US/LC_MESSAGES/vigiboard.po | ||
---|---|---|
8 | 8 |
"Project-Id-Version: vigiboard 0.1\n" |
9 | 9 |
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" |
10 | 10 |
"POT-Creation-Date: 2009-07-06 11:19+0200\n" |
11 |
"PO-Revision-Date: 2009-09-03 14:08+0200\n"
|
|
11 |
"PO-Revision-Date: 2009-09-04 11:27+0200\n"
|
|
12 | 12 |
"Last-Translator: Thomas ANDREJAK <thomas.andrejak@c-s.fr>\n" |
13 | 13 |
"Language-Team: en_US <LL@li.org>\n" |
14 | 14 |
"Plural-Forms: nplurals=2; plural=(n != 1)\n" |
... | ... | |
74 | 74 |
msgid "Updated successfully" |
75 | 75 |
msgstr "" |
76 | 76 |
|
77 |
#: vigiboard/controllers/vigiboard_controller.py:41 |
|
78 |
msgid "Only for managers" |
|
79 |
msgstr "" |
|
80 |
|
|
81 |
#: vigiboard/controllers/vigiboard_controller.py:47 |
|
82 |
msgid "Only for the editor" |
|
83 |
msgstr "" |
|
84 |
|
|
85 |
#: vigiboard/controllers/vigiboard_controller.py:57 |
|
77 |
#: vigiboard/controllers/vigiboard_controller.py:38 |
|
86 | 78 |
msgid "Wrong credentials" |
87 | 79 |
msgstr "" |
88 | 80 |
|
89 |
#: vigiboard/controllers/vigiboard_controller.py:72
|
|
81 |
#: vigiboard/controllers/vigiboard_controller.py:52
|
|
90 | 82 |
#, python-format |
91 | 83 |
msgid "Welcome back, %s!" |
92 | 84 |
msgstr "" |
93 | 85 |
|
94 |
#: vigiboard/controllers/vigiboard_controller.py:82
|
|
86 |
#: vigiboard/controllers/vigiboard_controller.py:61
|
|
95 | 87 |
msgid "We hope to see you soon!" |
96 | 88 |
msgstr "" |
97 | 89 |
|
... | ... | |
100 | 92 |
msgstr "" |
101 | 93 |
|
102 | 94 |
#: vigiboard/controllers/vigiboardrequest.py:280 |
103 |
msgid "<br />[Duration]"
|
|
95 |
msgid "Duration"
|
|
104 | 96 |
msgstr "" |
105 | 97 |
|
106 | 98 |
#: vigiboard/controllers/vigiboardrequest.py:282 |
107 |
msgid "Nombre d'occurrences"
|
|
99 |
msgid "Occurrence count"
|
|
108 | 100 |
msgstr "" |
109 | 101 |
|
110 | 102 |
#: vigiboard/controllers/vigiboardrequest.py:283 |
... | ... | |
113 | 105 |
msgstr "" |
114 | 106 |
|
115 | 107 |
#: vigiboard/controllers/vigiboardrequest.py:284 |
116 |
msgid "Service Type<br />Service Name" |
|
108 |
msgid "Service Type" |
|
109 |
msgstr "" |
|
110 |
|
|
111 |
#: vigiboard/controllers/vigiboardrequest.py:284 |
|
112 |
msgid "Service Name" |
|
117 | 113 |
msgstr "" |
118 | 114 |
|
119 | 115 |
#: vigiboard/controllers/vigiboardrequest.py:286 |
... | ... | |
122 | 118 |
msgstr "" |
123 | 119 |
|
124 | 120 |
#: vigiboard/controllers/vigiboardrequest.py:289 |
125 |
msgid "[TT]"
|
|
121 |
msgid "TT"
|
|
126 | 122 |
msgstr "" |
127 | 123 |
|
128 | 124 |
#: vigiboard/controllers/vigiboardrequest.py:289 |
... | ... | |
139 | 135 |
msgstr "" |
140 | 136 |
|
141 | 137 |
#: vigiboard/controllers/vigiboardrequest.py:436 |
138 |
#: vigiboard/templates/vigiboard_history_table.html:12 |
|
142 | 139 |
msgid "History" |
143 | 140 |
msgstr "" |
144 | 141 |
|
... | ... | |
147 | 144 |
msgstr "" |
148 | 145 |
|
149 | 146 |
#: vigiboard/controllers/vigiboard_plugin/shn.py:29 |
150 |
#, fuzzy |
|
151 |
msgid "SHNs impactés" |
|
152 |
msgstr "Impacted SHNs" |
|
153 |
|
|
154 |
#: vigiboard/controllers/vigiboard_plugin/shn.py:55 |
|
155 |
msgid "Service de haut niveau" |
|
156 |
msgstr "" |
|
157 |
|
|
158 |
#: vigiboard/templates/about.html:11 |
|
159 |
msgid "Learning TurboGears 2.0: Quick guide to the Quickstart pages." |
|
160 |
msgstr "" |
|
161 |
|
|
162 |
#: vigiboard/templates/about.html:18 |
|
163 |
msgid "Architectural basics of a quickstart TG2 site." |
|
164 |
msgstr "" |
|
165 |
|
|
166 |
#: vigiboard/templates/about.html:19 |
|
167 |
msgid "" |
|
168 |
"The TG2 quickstart command produces this basic TG site. Here's how it " |
|
169 |
"works." |
|
170 |
msgstr "" |
|
171 |
|
|
172 |
#: vigiboard/templates/about.html:22 |
|
173 |
msgid "Code my data model" |
|
174 |
msgstr "" |
|
175 |
|
|
176 |
#: vigiboard/templates/about.html:23 |
|
177 |
msgid "" |
|
178 |
"When you want a model for storing favorite links or wiki content, \n" |
|
179 |
" the" |
|
180 |
msgstr "" |
|
181 |
|
|
182 |
#: vigiboard/templates/about.html:24 |
|
183 |
msgid "/model" |
|
184 |
msgstr "" |
|
185 |
|
|
186 |
#: vigiboard/templates/about.html:24 |
|
187 |
msgid "folder in your site is ready to go." |
|
188 |
msgstr "" |
|
189 |
|
|
190 |
#: vigiboard/templates/about.html:25 |
|
191 |
msgid "" |
|
192 |
"You can build a dynamic site without any data model at all. There \n" |
|
193 |
" still be a default data-model template for you if you didn't " |
|
194 |
"enable \n" |
|
195 |
" authentication and authorization in quickstart. If you " |
|
196 |
"enabled\n" |
|
197 |
" it, you got auth data-model made for you." |
|
198 |
msgstr "" |
|
199 |
|
|
200 |
#: vigiboard/templates/about.html:31 |
|
201 |
msgid "Design my URL structure" |
|
202 |
msgstr "" |
|
203 |
|
|
204 |
#: vigiboard/templates/about.html:32 |
|
205 |
msgid "The \"" |
|
206 |
msgstr "" |
|
207 |
|
|
208 |
#: vigiboard/templates/about.html:32 |
|
209 |
msgid "root.py" |
|
210 |
msgstr "" |
|
211 |
|
|
212 |
#: vigiboard/templates/about.html:32 |
|
213 |
msgid "\" file under the" |
|
214 |
msgstr "" |
|
215 |
|
|
216 |
#: vigiboard/templates/about.html:33 |
|
217 |
msgid "/controllers" |
|
218 |
msgstr "" |
|
219 |
|
|
220 |
#: vigiboard/templates/about.html:33 |
|
221 |
msgid "" |
|
222 |
"folder has your URLs. When you \n" |
|
223 |
" called this url (" |
|
224 |
msgstr "" |
|
225 |
|
|
226 |
#: vigiboard/templates/about.html:34 vigiboard/templates/about.html:36 |
|
227 |
msgid "about" |
|
228 |
msgstr "" |
|
229 |
|
|
230 |
#: vigiboard/templates/about.html:34 |
|
231 |
msgid "" |
|
232 |
"), \n" |
|
233 |
" the command went through the RootController class to the" |
|
234 |
msgstr "" |
|
235 |
|
|
236 |
#: vigiboard/templates/about.html:36 |
|
237 |
msgid "method." |
|
238 |
msgstr "" |
|
239 |
|
|
240 |
#: vigiboard/templates/about.html:37 |
|
241 |
msgid "" |
|
242 |
"Those Python methods are responsible to create the dictionary of\n" |
|
243 |
" variables that will be used in your web views (template)." |
|
244 |
msgstr "" |
|
245 |
|
|
246 |
#: vigiboard/templates/about.html:41 |
|
247 |
msgid "Reuse the web page elements" |
|
248 |
msgstr "" |
|
249 |
|
|
250 |
#: vigiboard/templates/about.html:42 |
|
251 |
msgid "" |
|
252 |
"A web page viewed by user could be constructed by single or \n" |
|
253 |
" several reusable templates under" |
|
254 |
msgstr "" |
|
255 |
|
|
256 |
#: vigiboard/templates/about.html:43 |
|
257 |
msgid "/templates" |
|
258 |
msgstr "" |
|
259 |
|
|
260 |
#: vigiboard/templates/about.html:43 |
|
261 |
msgid "" |
|
262 |
". \n" |
|
263 |
" Take 'about' page for example, each reusable templates " |
|
264 |
"generating \n" |
|
265 |
" a part of the page. We'll cover them in the order of where " |
|
266 |
"they are \n" |
|
267 |
" found, listed near the top of the about.html template" |
|
147 |
msgid "Impacted HLS" |
|
268 | 148 |
msgstr "" |
269 | 149 |
|
270 |
#: vigiboard/templates/about.html:47
|
|
271 |
msgid "header.html"
|
|
150 |
#: vigiboard/controllers/vigiboard_plugin/shn.py:30
|
|
151 |
msgid "Impacted High-Level Services"
|
|
272 | 152 |
msgstr "" |
273 | 153 |
|
274 |
#: vigiboard/templates/about.html:47 |
|
275 |
msgid "" |
|
276 |
"- The \n" |
|
277 |
" \"header.html\" template contains the HTML code to display " |
|
278 |
"the \n" |
|
279 |
" 'header': The blue gradient, TG2 logo, and some site text at " |
|
280 |
"the \n" |
|
281 |
" top of every page it is included on. When the \"about.html\" " |
|
282 |
"template \n" |
|
283 |
" is called, it includes this \"header.html\" template (and the" |
|
284 |
" others) \n" |
|
285 |
" with a" |
|
286 |
msgstr "" |
|
287 |
|
|
288 |
#: vigiboard/templates/about.html:52 |
|
289 |
msgid "<xi:include />" |
|
290 |
msgstr "" |
|
291 |
|
|
292 |
#: vigiboard/templates/about.html:52 |
|
293 |
msgid "" |
|
294 |
"tag, part of \n" |
|
295 |
" the Genshi templating system. The \"header.html\" template is" |
|
296 |
" not a \n" |
|
297 |
" completely static HTML -- it also dynamically displays the " |
|
298 |
"current \n" |
|
299 |
" page name with a Genshi template method called \"replace\" " |
|
300 |
"with the \n" |
|
301 |
" code:" |
|
302 |
msgstr "" |
|
303 |
|
|
304 |
#: vigiboard/templates/about.html:56 |
|
305 |
msgid "<span py:replace=\"page\"/>" |
|
306 |
msgstr "" |
|
307 |
|
|
308 |
#: vigiboard/templates/about.html:56 |
|
309 |
msgid "" |
|
310 |
". \n" |
|
311 |
" It means replace this" |
|
312 |
msgstr "" |
|
313 |
|
|
314 |
#: vigiboard/templates/about.html:57 |
|
315 |
msgid "<span />" |
|
316 |
msgstr "" |
|
317 |
|
|
318 |
#: vigiboard/templates/about.html:57 |
|
319 |
msgid "" |
|
320 |
"region with the contents found in the variable 'page' that has \n" |
|
321 |
" been sent in the dictionary to this \"about.html\" template, " |
|
322 |
"and is \n" |
|
323 |
" available through that namespace for use by this " |
|
324 |
"\"header.html\" \n" |
|
325 |
" template. That's how it changes in the header depending on " |
|
326 |
"what \n" |
|
327 |
" page you are visiting." |
|
328 |
msgstr "" |
|
329 |
|
|
330 |
#: vigiboard/templates/about.html:64 |
|
331 |
msgid "sidebars.html" |
|
332 |
msgstr "" |
|
333 |
|
|
334 |
#: vigiboard/templates/about.html:64 |
|
335 |
msgid "" |
|
336 |
"- The\n" |
|
337 |
" sidebars (navigation areas on the right side of the page) " |
|
338 |
"are \n" |
|
339 |
" generated as two separate" |
|
340 |
msgstr "" |
|
341 |
|
|
342 |
#: vigiboard/templates/about.html:66 vigiboard/templates/about.html:67 |
|
343 |
msgid "py:def" |
|
344 |
msgstr "" |
|
345 |
|
|
346 |
#: vigiboard/templates/about.html:66 |
|
347 |
msgid "" |
|
348 |
"blocks \n" |
|
349 |
" in the \"sidebars.html\" template. The" |
|
350 |
msgstr "" |
|
351 |
|
|
352 |
#: vigiboard/templates/about.html:67 |
|
353 |
msgid "" |
|
354 |
"construct is best thought of as a \"macro\" code... a simple way to \n" |
|
355 |
" separate and reuse common code snippets. All it takes to " |
|
356 |
"include \n" |
|
357 |
" these on the \"about.html\" page template is to write" |
|
358 |
msgstr "" |
|
359 |
|
|
360 |
#: vigiboard/templates/about.html:73 |
|
361 |
msgid "${sidebar_top()}" |
|
362 |
msgstr "" |
|
363 |
|
|
364 |
#: vigiboard/templates/about.html:75 |
|
365 |
msgid "${sidebar_bottom()}" |
|
366 |
msgstr "" |
|
367 |
|
|
368 |
#: vigiboard/templates/about.html:77 |
|
369 |
msgid "" |
|
370 |
"in the page where they are wanted. CSS styling (in \n" |
|
371 |
" \"/public/css/style.css\") floats them off to the right side. " |
|
372 |
"You can \n" |
|
373 |
" remove a sidebar or add more of them, and the CSS will place them" |
|
374 |
" one \n" |
|
375 |
" atop the other." |
|
376 |
msgstr "" |
|
377 |
|
|
378 |
#: vigiboard/templates/about.html:81 |
|
379 |
msgid "" |
|
380 |
"This is, of course, also exactly how the header and footer \n" |
|
381 |
" templates are also displayed in their proper places, but " |
|
382 |
"we'll \n" |
|
383 |
" cover that in the \"master.html\" template below." |
|
384 |
msgstr "" |
|
385 |
|
|
386 |
#: vigiboard/templates/about.html:84 |
|
387 |
msgid "" |
|
388 |
"Oh, and in sidebar_top we've added a dynamic menu that shows the \n" |
|
389 |
" link to this page at the top when you're at the \"index\" " |
|
390 |
"page, and \n" |
|
391 |
" shows a link to the Home (index) page when you're here. " |
|
392 |
"Study the \n" |
|
393 |
" \"sidebars.html\" template to see how we used" |
|
394 |
msgstr "" |
|
395 |
|
|
396 |
#: vigiboard/templates/about.html:88 |
|
397 |
msgid "py:choose" |
|
398 |
msgstr "" |
|
399 |
|
|
400 |
#: vigiboard/templates/about.html:88 |
|
401 |
msgid "for that." |
|
402 |
msgstr "" |
|
403 |
|
|
404 |
#: vigiboard/templates/about.html:89 |
|
405 |
msgid "footer.html" |
|
406 |
msgstr "" |
|
407 |
|
|
408 |
#: vigiboard/templates/about.html:89 |
|
409 |
msgid "" |
|
410 |
"- The \n" |
|
411 |
" \"footer.html\" block is simple, but also utilizes a special" |
|
412 |
" \n" |
|
413 |
" \"replace\" method to set the current YEAR in the footer " |
|
414 |
"copyright \n" |
|
415 |
" message. The code is:" |
|
416 |
msgstr "" |
|
417 |
|
|
418 |
#: vigiboard/templates/about.html:93 |
|
419 |
msgid "<span py:replace=\"now.strftime('%Y')\">" |
|
420 |
msgstr "" |
|
421 |
|
|
422 |
#: vigiboard/templates/about.html:94 |
|
423 |
msgid "" |
|
424 |
"and it uses the variable \"now\" that was passed \n" |
|
425 |
" in with the dictionary of variables. But because \"now\" is " |
|
426 |
"a \n" |
|
427 |
" datetime object, we can use the Python" |
|
428 |
msgstr "" |
|
429 |
|
|
430 |
#: vigiboard/templates/about.html:97 |
|
431 |
msgid "\"strftime()\"" |
|
432 |
msgstr "" |
|
433 |
|
|
434 |
#: vigiboard/templates/about.html:97 |
|
435 |
msgid "" |
|
436 |
"method with the \"replace\" \n" |
|
437 |
" call to say \"Just Display The Year Here\". Simple, elegant;" |
|
438 |
" we \n" |
|
439 |
" format the date display in the template (the View in the \n" |
|
440 |
" Model/View/Controller architecture) rather than formatting it" |
|
441 |
" in \n" |
|
442 |
" the Controller method and sending it to the template as a " |
|
443 |
"string \n" |
|
444 |
" variable." |
|
445 |
msgstr "" |
|
446 |
|
|
447 |
#: vigiboard/templates/about.html:103 |
|
448 |
msgid "master.html" |
|
449 |
msgstr "" |
|
450 |
|
|
451 |
#: vigiboard/templates/about.html:103 |
|
452 |
msgid "" |
|
453 |
"- The \n" |
|
454 |
" \"master.html\" template is called last, by design. The " |
|
455 |
"\"master.html\" \n" |
|
456 |
" template controls the overall design of the page we're " |
|
457 |
"looking at, \n" |
|
458 |
" calling first the \"header\" py:def macro, then the putting " |
|
459 |
"everything \n" |
|
460 |
" from this \"about.html\" template into the \"content\" div, " |
|
461 |
"and \n" |
|
462 |
" then calling the \"footer\" macro at the end. Thus the " |
|
463 |
"\"master.html\" \n" |
|
464 |
" template provides the overall architecture for each page in " |
|
465 |
"this \n" |
|
466 |
" site." |
|
467 |
msgstr "" |
|
468 |
|
|
469 |
#: vigiboard/templates/about.html:111 |
|
470 |
msgid "" |
|
471 |
"But why then shouldn't we call it first? Isn't it the most \n" |
|
472 |
" important? Perhaps, but that's precisely why we call it " |
|
473 |
"LAST. \n" |
|
474 |
" The \"master.html\" template needs to know where to find " |
|
475 |
"everything \n" |
|
476 |
" else, everything that it will use in py:def macros to build " |
|
477 |
"the\n" |
|
478 |
" page. So that means we call the other templates first, and " |
|
479 |
"then \n" |
|
480 |
" call \"master.html\"." |
|
481 |
msgstr "" |
|
482 |
|
|
483 |
#: vigiboard/templates/about.html:117 |
|
484 |
msgid "" |
|
485 |
"There's more to the \"master.html\" template... study it to see how \n" |
|
486 |
" the <title> tags and static JS and CSS files are brought into" |
|
487 |
" \n" |
|
488 |
" the page. Templating with Genshi is a powerful tool and we've" |
|
489 |
" only \n" |
|
490 |
" scratched the surface. There are also a few little CSS tricks" |
|
491 |
" \n" |
|
492 |
" hidden in these pages, like the use of a \"clearingdiv\" to " |
|
493 |
"make \n" |
|
494 |
" sure that your footer stays below the sidebars and always " |
|
495 |
"looks \n" |
|
496 |
" right. That's not TG2 at work, just CSS. You'll need all " |
|
497 |
"your \n" |
|
498 |
" skills to build a fine web app, but TG2 will make the hard " |
|
499 |
"parts \n" |
|
500 |
" easier so that you can concentrate more on good design and " |
|
501 |
"content \n" |
|
502 |
" rather than struggling with mechanics." |
|
503 |
msgstr "" |
|
504 |
|
|
505 |
#: vigiboard/templates/about.html:129 |
|
506 |
msgid "Good luck with TurboGears 2!" |
|
507 |
msgstr "" |
|
508 |
|
|
509 |
#: vigiboard/templates/authentication.html:11 |
|
510 |
msgid "Learning TurboGears 2.0: Quick guide to authentication." |
|
511 |
msgstr "" |
|
512 |
|
|
513 |
#: vigiboard/templates/authentication.html:18 |
|
514 |
msgid "Authentication & Authorization in a TG2 site." |
|
515 |
msgstr "" |
|
516 |
|
|
517 |
#: vigiboard/templates/authentication.html:19 |
|
518 |
msgid "" |
|
519 |
"If you have access to this page, this means you have enabled " |
|
520 |
"authentication and authorization\n" |
|
521 |
" in the quickstart to create your project." |
|
522 |
msgstr "" |
|
523 |
|
|
524 |
#: vigiboard/templates/authentication.html:21 |
|
525 |
msgid "" |
|
526 |
"The paster command will have created a few specific controllers for you. " |
|
527 |
"But before you\n" |
|
528 |
" go to play with those controllers you'll need to make sure your " |
|
529 |
"application has been\n" |
|
530 |
" properly bootstapped.\n" |
|
531 |
" This is dead easy, here is how to do this:" |
|
532 |
msgstr "" |
|
533 |
|
|
534 |
#: vigiboard/templates/authentication.html:28 |
|
535 |
msgid "paster setup-app development.ini" |
|
536 |
msgstr "" |
|
537 |
|
|
538 |
#: vigiboard/templates/authentication.html:32 |
|
539 |
msgid "" |
|
540 |
"inside your application's folder and you'll get a database setup (using " |
|
541 |
"the preferences you have\n" |
|
542 |
" set in your development.ini file). This database will also have been " |
|
543 |
"prepopulated with some\n" |
|
544 |
" default logins/passwords so that you can test the secured controllers" |
|
545 |
" and methods." |
|
546 |
msgstr "" |
|
547 |
|
|
548 |
#: vigiboard/templates/authentication.html:37 |
|
549 |
msgid "" |
|
550 |
"To change the comportement of this setup-app command you just need to " |
|
551 |
"edit the" |
|
552 |
msgstr "" |
|
553 |
|
|
554 |
#: vigiboard/templates/authentication.html:38 |
|
555 |
msgid "websetup.py" |
|
556 |
msgstr "" |
|
557 |
|
|
558 |
#: vigiboard/templates/authentication.html:38 |
|
559 |
msgid "file." |
|
560 |
msgstr "" |
|
561 |
|
|
562 |
#: vigiboard/templates/authentication.html:40 |
|
563 |
msgid "Now try to visiting the" |
|
564 |
msgstr "" |
|
565 |
|
|
566 |
#: vigiboard/templates/authentication.html:41 |
|
567 |
msgid "manage_permission_only" |
|
568 |
msgstr "" |
|
569 |
|
|
570 |
#: vigiboard/templates/authentication.html:41 |
|
571 |
msgid "URL. You will be challenged with a login/password form." |
|
572 |
msgstr "" |
|
573 |
|
|
574 |
#: vigiboard/templates/authentication.html:43 |
|
575 |
msgid "" |
|
576 |
"Only managers are authorized to visit this method. You will need to log-" |
|
577 |
"in using:" |
|
578 |
msgstr "" |
|
579 |
|
|
580 |
#: vigiboard/templates/authentication.html:46 |
|
581 |
msgid "login: manager" |
|
582 |
msgstr "" |
|
583 |
|
|
584 |
#: vigiboard/templates/authentication.html:51 |
|
585 |
msgid "password: managepass" |
|
586 |
msgstr "" |
|
587 |
|
|
588 |
#: vigiboard/templates/authentication.html:56 |
|
589 |
msgid "Another protected resource is" |
|
590 |
msgstr "" |
|
591 |
|
|
592 |
#: vigiboard/templates/authentication.html:57 |
|
593 |
msgid "editor_user_only" |
|
594 |
msgstr "" |
|
595 |
|
|
596 |
#: vigiboard/templates/authentication.html:57 |
|
597 |
msgid "" |
|
598 |
". This one is protected by a different set of permissions.\n" |
|
599 |
" You will need to be" |
|
600 |
msgstr "" |
|
601 |
|
|
602 |
#: vigiboard/templates/authentication.html:58 |
|
603 |
msgid "editor" |
|
604 |
msgstr "" |
|
605 |
|
|
606 |
#: vigiboard/templates/authentication.html:58 |
|
607 |
msgid "with a password of" |
|
608 |
msgstr "" |
|
609 |
|
|
610 |
#: vigiboard/templates/authentication.html:58 |
|
611 |
msgid "editpass" |
|
612 |
msgstr "" |
|
613 |
|
|
614 |
#: vigiboard/templates/authentication.html:58 |
|
615 |
msgid "to be able to access it." |
|
616 |
msgstr "" |
|
617 |
|
|
618 |
#: vigiboard/templates/authentication.html:60 |
|
619 |
msgid "" |
|
620 |
"The last kind of protected resource in this quickstarted app is a full so" |
|
621 |
" called" |
|
622 |
msgstr "" |
|
623 |
|
|
624 |
#: vigiboard/templates/authentication.html:61 |
|
625 |
msgid "secure controller" |
|
626 |
msgstr "" |
|
627 |
|
|
628 |
#: vigiboard/templates/authentication.html:61 |
|
629 |
msgid "" |
|
630 |
". This controller is protected globally.\n" |
|
631 |
" Instead of having a @require decorator on each method, we have set an" |
|
632 |
" allow_only attribute at the class level. All the methods in this " |
|
633 |
"controller will\n" |
|
634 |
" require the same level of access. You need to be manager to access" |
|
635 |
msgstr "" |
|
636 |
|
|
637 |
#: vigiboard/templates/authentication.html:63 |
|
638 |
msgid "secc" |
|
639 |
msgstr "" |
|
640 |
|
|
641 |
#: vigiboard/templates/authentication.html:63 |
|
642 |
msgid "or" |
|
643 |
msgstr "" |
|
644 |
|
|
645 |
#: vigiboard/templates/authentication.html:63 |
|
646 |
msgid "secc/some_where" |
|
154 |
#: vigiboard/controllers/vigiboard_plugin/shn.py:55 |
|
155 |
msgid "High-Level Service" |
|
647 | 156 |
msgstr "" |
648 | 157 |
|
649 | 158 |
#: vigiboard/templates/debug.html:11 |
... | ... | |
793 | 302 |
msgid "A quick guide to this TG2 site" |
794 | 303 |
msgstr "" |
795 | 304 |
|
796 |
#: vigiboard/templates/sidebars.html:14 |
|
305 |
#: vigiboard/templates/sidebars.html:14 vigiboard/templates/vigiboard.html:33
|
|
797 | 306 |
msgid "Home" |
798 | 307 |
msgstr "" |
799 | 308 |
|
... | ... | |
886 | 395 |
msgstr "" |
887 | 396 |
|
888 | 397 |
#: vigiboard/templates/vigiboard.html:17 |
889 |
msgid "Barre Outils"
|
|
398 |
msgid "Toolbar"
|
|
890 | 399 |
msgstr "" |
891 | 400 |
|
892 |
#: vigiboard/templates/vigiboard.html:20 vigiboard/templates/vigiboard.html:21
|
|
893 |
msgid "logo"
|
|
401 |
#: vigiboard/templates/vigiboard.html:21 |
|
402 |
msgid "v"
|
|
894 | 403 |
msgstr "" |
895 | 404 |
|
896 |
#: vigiboard/templates/vigiboard.html:20 vigiboard/templates/vigiboard.html:21
|
|
897 |
msgid "Logo"
|
|
405 |
#: vigiboard/templates/vigiboard.html:27
|
|
406 |
msgid "You are in Search mode, click here to return to the initial mode."
|
|
898 | 407 |
msgstr "" |
899 | 408 |
|
900 |
#: vigiboard/templates/vigiboard.html:21
|
|
901 |
msgid "v"
|
|
409 |
#: vigiboard/templates/vigiboard.html:36
|
|
410 |
msgid "Filter display"
|
|
902 | 411 |
msgstr "" |
903 | 412 |
|
904 |
#: vigiboard/templates/vigiboard.html:24
|
|
905 |
msgid "Mode recherche,"
|
|
413 |
#: vigiboard/templates/vigiboard.html:39
|
|
414 |
msgid "Log out"
|
|
906 | 415 |
msgstr "" |
907 | 416 |
|
908 |
#: vigiboard/templates/vigiboard.html:25
|
|
909 |
msgid "cliquer ici"
|
|
417 |
#: vigiboard/templates/vigiboard.html:44
|
|
418 |
msgid "Default font size"
|
|
910 | 419 |
msgstr "" |
911 | 420 |
|
912 |
#: vigiboard/templates/vigiboard.html:25
|
|
913 |
msgid "pour revenir au mode initial."
|
|
421 |
#: vigiboard/templates/vigiboard.html:45
|
|
422 |
msgid "Medium font size"
|
|
914 | 423 |
msgstr "" |
915 | 424 |
|
916 |
#: vigiboard/templates/vigiboard.html:30 |
|
425 |
#: vigiboard/templates/vigiboard.html:46 |
|
426 |
msgid "Large font size" |
|
427 |
msgstr "" |
|
428 |
|
|
429 |
#: vigiboard/templates/vigiboard.html:51 |
|
917 | 430 |
msgid "Never" |
918 | 431 |
msgstr "" |
919 | 432 |
|
920 |
#: vigiboard/templates/vigiboard.html:31
|
|
433 |
#: vigiboard/templates/vigiboard.html:52
|
|
921 | 434 |
msgid "30 Secondes" |
922 | 435 |
msgstr "" |
923 | 436 |
|
924 |
#: vigiboard/templates/vigiboard.html:32
|
|
437 |
#: vigiboard/templates/vigiboard.html:53
|
|
925 | 438 |
msgid "1 Minute" |
926 | 439 |
msgstr "" |
927 | 440 |
|
928 |
#: vigiboard/templates/vigiboard.html:33
|
|
441 |
#: vigiboard/templates/vigiboard.html:54
|
|
929 | 442 |
msgid "5 Minutes" |
930 | 443 |
msgstr "" |
931 | 444 |
|
932 |
#: vigiboard/templates/vigiboard.html:34
|
|
445 |
#: vigiboard/templates/vigiboard.html:55
|
|
933 | 446 |
msgid "10 Minutes" |
934 | 447 |
msgstr "" |
935 | 448 |
|
936 |
#: vigiboard/templates/vigiboard.html:39
|
|
937 |
msgid "Default font size"
|
|
449 |
#: vigiboard/templates/vigiboard.html:57
|
|
450 |
msgid "Start"
|
|
938 | 451 |
msgstr "" |
939 | 452 |
|
940 |
#: vigiboard/templates/vigiboard.html:40
|
|
941 |
msgid "Medium font size"
|
|
453 |
#: vigiboard/templates/vigiboard.html:76
|
|
454 |
msgid "Unable to save preferences"
|
|
942 | 455 |
msgstr "" |
943 | 456 |
|
944 |
#: vigiboard/templates/vigiboard.html:41 |
|
945 |
msgid "Large font size" |
|
946 |
msgstr "" |
|
947 |
|
|
948 |
#: vigiboard/templates/vigiboard.html:45 |
|
949 |
msgid "Accueil" |
|
950 |
msgstr "" |
|
951 |
|
|
952 |
#: vigiboard/templates/vigiboard.html:48 |
|
953 |
msgid "Filtrer" |
|
954 |
msgstr "" |
|
955 |
|
|
956 |
#: vigiboard/templates/vigiboard.html:51 |
|
957 |
msgid "Déconnexion" |
|
457 |
#: vigiboard/templates/vigiboard.html:90 |
|
458 |
msgid "Stop" |
|
958 | 459 |
msgstr "" |
959 | 460 |
|
960 | 461 |
#: vigiboard/templates/vigiboard_event_table.html:12 |
961 |
msgid "Tableau des évènements"
|
|
462 |
msgid "Events table"
|
|
962 | 463 |
msgstr "" |
963 | 464 |
|
964 | 465 |
#: vigiboard/templates/vigiboard_event_table.html:17 |
965 | 466 |
#: vigiboard/templates/vigiboard_event_table.html:18 |
966 |
msgid "Précédente" |
|
467 |
#: vigiboard/templates/vigiboard_event_table.html:164 |
|
468 |
msgid "Previous" |
|
967 | 469 |
msgstr "" |
968 | 470 |
|
969 | 471 |
#: vigiboard/templates/vigiboard_event_table.html:17 |
970 | 472 |
#: vigiboard/templates/vigiboard_event_table.html:18 |
971 |
#: vigiboard/templates/vigiboard_event_table.html:165
|
|
972 |
msgid "Page précédente"
|
|
473 |
#: vigiboard/templates/vigiboard_event_table.html:164
|
|
474 |
msgid "Previous page"
|
|
973 | 475 |
msgstr "" |
974 | 476 |
|
975 | 477 |
#: vigiboard/templates/vigiboard_event_table.html:20 |
... | ... | |
977 | 479 |
msgid "Showing rows %(id_first_row)d to %(id_last_row)d of %(total_rows)d" |
978 | 480 |
msgstr "" |
979 | 481 |
|
980 |
#: vigiboard/templates/vigiboard_event_table.html:21
|
|
482 |
#: vigiboard/templates/vigiboard_event_table.html:20
|
|
981 | 483 |
msgid "Pages" |
982 | 484 |
msgstr "" |
983 | 485 |
|
486 |
#: vigiboard/templates/vigiboard_event_table.html:27 |
|
984 | 487 |
#: vigiboard/templates/vigiboard_event_table.html:28 |
985 |
#: vigiboard/templates/vigiboard_event_table.html:29
|
|
986 |
msgid "Suivante"
|
|
488 |
#: vigiboard/templates/vigiboard_event_table.html:170
|
|
489 |
msgid "Next"
|
|
987 | 490 |
msgstr "" |
988 | 491 |
|
492 |
#: vigiboard/templates/vigiboard_event_table.html:27 |
|
989 | 493 |
#: vigiboard/templates/vigiboard_event_table.html:28 |
990 |
#: vigiboard/templates/vigiboard_event_table.html:29 |
|
991 |
#: vigiboard/templates/vigiboard_event_table.html:171 |
|
992 |
msgid "Page suivante" |
|
494 |
#: vigiboard/templates/vigiboard_event_table.html:170 |
|
495 |
msgid "Next page" |
|
993 | 496 |
msgstr "" |
994 | 497 |
|
995 |
#: vigiboard/templates/vigiboard_event_table.html:37 |
|
498 |
#: vigiboard/templates/vigiboard_event_table.html:36 |
|
499 |
#: vigiboard/templates/vigiboard_event_table.html:178 |
|
500 |
msgid "Edit selected" |
|
501 |
msgstr "" |
|
502 |
|
|
503 |
#: vigiboard/templates/vigiboard_event_table.html:36 |
|
504 |
#: vigiboard/templates/vigiboard_event_table.html:178 |
|
996 | 505 |
msgid "Edit all selected events" |
997 | 506 |
msgstr "" |
998 | 507 |
|
999 |
#: vigiboard/templates/vigiboard_event_table.html:38
|
|
1000 |
msgid "Sélectioner tout"
|
|
508 |
#: vigiboard/templates/vigiboard_event_table.html:37
|
|
509 |
msgid "Select/Unselect all"
|
|
1001 | 510 |
msgstr "" |
1002 | 511 |
|
1003 |
#: vigiboard/templates/vigiboard_event_table.html:46
|
|
1004 |
msgid "detail"
|
|
512 |
#: vigiboard/templates/vigiboard_event_table.html:45
|
|
513 |
msgid "Details"
|
|
1005 | 514 |
msgstr "" |
1006 | 515 |
|
1007 |
#: vigiboard/templates/vigiboard_event_table.html:46
|
|
1008 |
msgid "Détails sur l'évènement"
|
|
516 |
#: vigiboard/templates/vigiboard_event_table.html:45
|
|
517 |
msgid "Event details"
|
|
1009 | 518 |
msgstr "" |
1010 | 519 |
|
1011 |
#: vigiboard/templates/vigiboard_event_table.html:59
|
|
1012 |
msgid "statut"
|
|
520 |
#: vigiboard/templates/vigiboard_event_table.html:58
|
|
521 |
msgid "Status"
|
|
1013 | 522 |
msgstr "" |
1014 | 523 |
|
1015 |
#: vigiboard/templates/vigiboard_event_table.html:59
|
|
1016 |
msgid "Statut de l'évènement"
|
|
524 |
#: vigiboard/templates/vigiboard_event_table.html:58
|
|
525 |
msgid "Event status"
|
|
1017 | 526 |
msgstr "" |
1018 | 527 |
|
1019 |
#: vigiboard/templates/vigiboard_event_table.html:60
|
|
1020 |
msgid "edit"
|
|
528 |
#: vigiboard/templates/vigiboard_event_table.html:59
|
|
529 |
msgid "Edit"
|
|
1021 | 530 |
msgstr "" |
1022 | 531 |
|
1023 |
#: vigiboard/templates/vigiboard_event_table.html:60
|
|
1024 |
msgid "Editer cet élément"
|
|
532 |
#: vigiboard/templates/vigiboard_event_table.html:59
|
|
533 |
msgid "Edit this event"
|
|
1025 | 534 |
msgstr "" |
1026 | 535 |
|
1027 |
#: vigiboard/templates/vigiboard_event_table.html:138
|
|
536 |
#: vigiboard/templates/vigiboard_event_table.html:137
|
|
1028 | 537 |
msgid "Initial State:" |
1029 | 538 |
msgstr "" |
1030 | 539 |
|
1031 |
#: vigiboard/templates/vigiboard_event_table.html:139
|
|
540 |
#: vigiboard/templates/vigiboard_event_table.html:138
|
|
1032 | 541 |
msgid "Current State:" |
1033 | 542 |
msgstr "" |
1034 | 543 |
|
1035 |
#: vigiboard/templates/vigiboard_event_table.html:142
|
|
544 |
#: vigiboard/templates/vigiboard_event_table.html:141
|
|
1036 | 545 |
msgid "Detailed history for this event" |
1037 | 546 |
msgstr "" |
1038 | 547 |
|
1039 |
#: vigiboard/templates/vigiboard_event_table.html:143
|
|
548 |
#: vigiboard/templates/vigiboard_event_table.html:142
|
|
1040 | 549 |
msgid "Detailed history for this host/service" |
1041 | 550 |
msgstr "" |
1042 | 551 |
|
1043 |
#: vigiboard/templates/vigiboard_event_table.html:165 |
|
1044 |
msgid "up" |
|
1045 |
msgstr "" |
|
1046 |
|
|
1047 |
#: vigiboard/templates/vigiboard_event_table.html:167 |
|
552 |
#: vigiboard/templates/vigiboard_event_table.html:166 |
|
1048 | 553 |
msgid "Showing rows 0 to 0 of 0" |
1049 | 554 |
msgstr "" |
1050 | 555 |
|
1051 |
#: vigiboard/templates/vigiboard_event_table.html:167
|
|
556 |
#: vigiboard/templates/vigiboard_event_table.html:166
|
|
1052 | 557 |
msgid "Page 0" |
1053 | 558 |
msgstr "" |
1054 | 559 |
|
1055 |
#: vigiboard/templates/vigiboard_event_table.html:171
|
|
1056 |
msgid "down"
|
|
560 |
#: vigiboard/templates/vigiboard_event_table.html:184
|
|
561 |
msgid "No event"
|
|
1057 | 562 |
msgstr "" |
1058 | 563 |
|
1059 |
#: vigiboard/templates/vigiboard_event_table.html:179 |
|
1060 |
msgid "edit_all" |
|
1061 |
msgstr "" |
|
1062 |
|
|
1063 |
#: vigiboard/templates/vigiboard_event_table.html:179 |
|
1064 |
msgid "Editer tous les évènements sélectionnés" |
|
1065 |
msgstr "" |
|
1066 |
|
|
1067 |
#: vigiboard/templates/vigiboard_event_table.html:185 |
|
1068 |
msgid "Aucun évènement disponible." |
|
1069 |
msgstr "No events" |
|
1070 |
|
|
1071 | 564 |
#: vigiboard/templates/vigiboard_history_table.html:8 |
1072 | 565 |
msgid "There is no history." |
1073 | 566 |
msgstr "" |
1074 | 567 |
|
1075 |
#: vigiboard/templates/vigiboard_history_table.html:12 |
|
1076 |
msgid "Historique de l'élément" |
|
1077 |
msgstr "" |
|
1078 |
|
|
1079 | 568 |
#: vigiboard/templates/vigiboard_history_table.html:15 |
1080 | 569 |
msgid "Time" |
1081 | 570 |
msgstr "" |
vigiboard/i18n/fr_FR/LC_MESSAGES/vigiboard.po | ||
---|---|---|
8 | 8 |
"Project-Id-Version: vigiboard 0.1\n" |
9 | 9 |
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" |
10 | 10 |
"POT-Creation-Date: 2009-07-06 11:19+0200\n" |
11 |
"PO-Revision-Date: 2009-09-03 14:08+0200\n"
|
|
11 |
"PO-Revision-Date: 2009-09-04 11:27+0200\n"
|
|
12 | 12 |
"Last-Translator: Thomas ANDREJAK <thomas.andrejak@c-s.fr>\n" |
13 | 13 |
"Language-Team: fr_FR <LL@li.org>\n" |
14 | 14 |
"Plural-Forms: nplurals=2; plural=(n > 1)\n" |
... | ... | |
74 | 74 |
msgid "Updated successfully" |
75 | 75 |
msgstr "Mise à jour réussie" |
76 | 76 |
|
77 |
#: vigiboard/controllers/vigiboard_controller.py:41 |
|
78 |
msgid "Only for managers" |
|
79 |
msgstr "" |
|
80 |
|
|
81 |
#: vigiboard/controllers/vigiboard_controller.py:47 |
|
82 |
msgid "Only for the editor" |
|
83 |
msgstr "" |
|
84 |
|
|
85 |
#: vigiboard/controllers/vigiboard_controller.py:57 |
|
77 |
#: vigiboard/controllers/vigiboard_controller.py:38 |
|
86 | 78 |
msgid "Wrong credentials" |
87 |
msgstr "" |
|
79 |
msgstr "Identifiant ou mot de passe incorrect"
|
|
88 | 80 |
|
89 |
#: vigiboard/controllers/vigiboard_controller.py:72
|
|
81 |
#: vigiboard/controllers/vigiboard_controller.py:52
|
|
90 | 82 |
#, python-format |
91 | 83 |
msgid "Welcome back, %s!" |
92 | 84 |
msgstr "" |
93 | 85 |
|
94 |
#: vigiboard/controllers/vigiboard_controller.py:82
|
|
86 |
#: vigiboard/controllers/vigiboard_controller.py:61
|
|
95 | 87 |
msgid "We hope to see you soon!" |
96 | 88 |
msgstr "" |
97 | 89 |
|
... | ... | |
100 | 92 |
msgstr "" |
101 | 93 |
|
102 | 94 |
#: vigiboard/controllers/vigiboardrequest.py:280 |
103 |
#, fuzzy |
|
104 |
msgid "<br />[Duration]" |
|
105 |
msgstr "Date<br />[Durée]" |
|
95 |
msgid "Duration" |
|
96 |
msgstr "Durée" |
|
106 | 97 |
|
107 | 98 |
#: vigiboard/controllers/vigiboardrequest.py:282 |
108 |
msgid "Nombre d'occurrences"
|
|
109 |
msgstr "" |
|
99 |
msgid "Occurrence count"
|
|
100 |
msgstr "Nombre d'occurrences"
|
|
110 | 101 |
|
111 | 102 |
#: vigiboard/controllers/vigiboardrequest.py:283 |
112 | 103 |
#: vigiboard/widgets/edit_event.py:40 |
... | ... | |
114 | 105 |
msgstr "Hôte" |
115 | 106 |
|
116 | 107 |
#: vigiboard/controllers/vigiboardrequest.py:284 |
117 |
msgid "Service Type<br />Service Name" |
|
118 |
msgstr "Type de service<br />Nom du service" |
|
108 |
msgid "Service Type" |
|
109 |
msgstr "Type de service" |
|
110 |
|
|
111 |
#: vigiboard/controllers/vigiboardrequest.py:284 |
|
112 |
msgid "Service Name" |
|
113 |
msgstr "Nom du service" |
|
119 | 114 |
|
120 | 115 |
#: vigiboard/controllers/vigiboardrequest.py:286 |
121 | 116 |
#: vigiboard/widgets/edit_event.py:42 |
... | ... | |
123 | 118 |
msgstr "Sortie d'erreur" |
124 | 119 |
|
125 | 120 |
#: vigiboard/controllers/vigiboardrequest.py:289 |
126 |
msgid "[TT]"
|
|
121 |
msgid "TT"
|
|
127 | 122 |
msgstr "" |
128 | 123 |
|
129 | 124 |
#: vigiboard/controllers/vigiboardrequest.py:289 |
... | ... | |
140 | 135 |
msgstr "Recherche d'évènements" |
141 | 136 |
|
142 | 137 |
#: vigiboard/controllers/vigiboardrequest.py:436 |
138 |
#: vigiboard/templates/vigiboard_history_table.html:12 |
|
143 | 139 |
msgid "History" |
144 | 140 |
msgstr "Historique" |
145 | 141 |
|
... | ... | |
148 | 144 |
msgstr "Erreur" |
149 | 145 |
|
150 | 146 |
#: vigiboard/controllers/vigiboard_plugin/shn.py:29 |
151 |
msgid "SHNs impactés" |
|
152 |
msgstr "" |
|
153 |
|
|
154 |
#: vigiboard/controllers/vigiboard_plugin/shn.py:55 |
|
155 |
msgid "Service de haut niveau" |
|
156 |
msgstr "" |
|
157 |
|
|
158 |
#: vigiboard/templates/about.html:11 |
|
159 |
msgid "Learning TurboGears 2.0: Quick guide to the Quickstart pages." |
|
160 |
msgstr "" |
|
161 |
|
|
162 |
#: vigiboard/templates/about.html:18 |
|
163 |
msgid "Architectural basics of a quickstart TG2 site." |
|
164 |
msgstr "" |
|
165 |
|
|
166 |
#: vigiboard/templates/about.html:19 |
|
167 |
msgid "" |
|
168 |
"The TG2 quickstart command produces this basic TG site. Here's how it " |
|
169 |
"works." |
|
170 |
msgstr "" |
|
171 |
|
|
172 |
#: vigiboard/templates/about.html:22 |
|
173 |
msgid "Code my data model" |
|
174 |
msgstr "" |
|
175 |
|
|
176 |
#: vigiboard/templates/about.html:23 |
|
177 |
msgid "" |
|
178 |
"When you want a model for storing favorite links or wiki content, \n" |
|
179 |
" the" |
|
180 |
msgstr "" |
|
181 |
|
|
182 |
#: vigiboard/templates/about.html:24 |
|
183 |
msgid "/model" |
|
184 |
msgstr "" |
|
185 |
|
|
186 |
#: vigiboard/templates/about.html:24 |
|
187 |
msgid "folder in your site is ready to go." |
|
188 |
msgstr "" |
|
189 |
|
|
190 |
#: vigiboard/templates/about.html:25 |
|
191 |
msgid "" |
|
192 |
"You can build a dynamic site without any data model at all. There \n" |
|
193 |
" still be a default data-model template for you if you didn't " |
|
194 |
"enable \n" |
|
195 |
" authentication and authorization in quickstart. If you " |
|
196 |
"enabled\n" |
|
197 |
" it, you got auth data-model made for you." |
|
198 |
msgstr "" |
|
199 |
|
|
200 |
#: vigiboard/templates/about.html:31 |
|
201 |
msgid "Design my URL structure" |
|
202 |
msgstr "" |
|
203 |
|
|
204 |
#: vigiboard/templates/about.html:32 |
|
205 |
msgid "The \"" |
|
206 |
msgstr "" |
|
207 |
|
|
208 |
#: vigiboard/templates/about.html:32 |
|
209 |
msgid "root.py" |
|
210 |
msgstr "" |
|
211 |
|
|
212 |
#: vigiboard/templates/about.html:32 |
|
213 |
msgid "\" file under the" |
|
214 |
msgstr "" |
|
215 |
|
|
216 |
#: vigiboard/templates/about.html:33 |
|
217 |
msgid "/controllers" |
|
218 |
msgstr "" |
|
219 |
|
|
220 |
#: vigiboard/templates/about.html:33 |
|
221 |
msgid "" |
|
222 |
"folder has your URLs. When you \n" |
|
223 |
" called this url (" |
|
224 |
msgstr "" |
|
225 |
|
|
226 |
#: vigiboard/templates/about.html:34 vigiboard/templates/about.html:36 |
|
227 |
msgid "about" |
|
228 |
msgstr "" |
|
229 |
|
|
230 |
#: vigiboard/templates/about.html:34 |
|
231 |
msgid "" |
|
232 |
"), \n" |
|
233 |
" the command went through the RootController class to the" |
|
234 |
msgstr "" |
|
235 |
|
|
236 |
#: vigiboard/templates/about.html:36 |
|
237 |
msgid "method." |
|
238 |
msgstr "" |
|
239 |
|
|
240 |
#: vigiboard/templates/about.html:37 |
|
241 |
msgid "" |
|
242 |
"Those Python methods are responsible to create the dictionary of\n" |
|
243 |
" variables that will be used in your web views (template)." |
|
244 |
msgstr "" |
|
245 |
|
|
246 |
#: vigiboard/templates/about.html:41 |
|
247 |
msgid "Reuse the web page elements" |
|
248 |
msgstr "" |
|
249 |
|
|
250 |
#: vigiboard/templates/about.html:42 |
|
251 |
msgid "" |
|
252 |
"A web page viewed by user could be constructed by single or \n" |
|
253 |
" several reusable templates under" |
|
254 |
msgstr "" |
|
255 |
|
|
256 |
#: vigiboard/templates/about.html:43 |
|
257 |
msgid "/templates" |
|
258 |
msgstr "" |
|
259 |
|
|
260 |
#: vigiboard/templates/about.html:43 |
|
261 |
msgid "" |
|
262 |
". \n" |
|
263 |
" Take 'about' page for example, each reusable templates " |
|
264 |
"generating \n" |
|
265 |
" a part of the page. We'll cover them in the order of where " |
|
266 |
"they are \n" |
|
267 |
" found, listed near the top of the about.html template" |
|
268 |
msgstr "" |
|
269 |
|
|
270 |
#: vigiboard/templates/about.html:47 |
|
271 |
msgid "header.html" |
|
272 |
msgstr "" |
|
273 |
|
|
274 |
#: vigiboard/templates/about.html:47 |
|
275 |
msgid "" |
|
276 |
"- The \n" |
|
277 |
" \"header.html\" template contains the HTML code to display " |
|
278 |
"the \n" |
|
279 |
" 'header': The blue gradient, TG2 logo, and some site text at " |
|
280 |
"the \n" |
|
281 |
" top of every page it is included on. When the \"about.html\" " |
|
282 |
"template \n" |
|
283 |
" is called, it includes this \"header.html\" template (and the" |
|
284 |
" others) \n" |
|
285 |
" with a" |
|
286 |
msgstr "" |
|
287 |
|
|
288 |
#: vigiboard/templates/about.html:52 |
|
289 |
msgid "<xi:include />" |
|
290 |
msgstr "" |
|
291 |
|
|
292 |
#: vigiboard/templates/about.html:52 |
|
293 |
msgid "" |
|
294 |
"tag, part of \n" |
|
295 |
" the Genshi templating system. The \"header.html\" template is" |
|
296 |
" not a \n" |
|
297 |
" completely static HTML -- it also dynamically displays the " |
|
298 |
"current \n" |
|
299 |
" page name with a Genshi template method called \"replace\" " |
|
300 |
"with the \n" |
|
301 |
" code:" |
|
302 |
msgstr "" |
|
303 |
|
|
304 |
#: vigiboard/templates/about.html:56 |
|
305 |
msgid "<span py:replace=\"page\"/>" |
|
306 |
msgstr "" |
|
307 |
|
|
308 |
#: vigiboard/templates/about.html:56 |
|
309 |
msgid "" |
|
310 |
". \n" |
|
311 |
" It means replace this" |
|
312 |
msgstr "" |
|
313 |
|
|
314 |
#: vigiboard/templates/about.html:57 |
|
315 |
msgid "<span />" |
|
316 |
msgstr "" |
|
317 |
|
|
318 |
#: vigiboard/templates/about.html:57 |
|
319 |
msgid "" |
|
320 |
"region with the contents found in the variable 'page' that has \n" |
|
321 |
" been sent in the dictionary to this \"about.html\" template, " |
|
322 |
"and is \n" |
|
323 |
" available through that namespace for use by this " |
|
324 |
"\"header.html\" \n" |
|
325 |
" template. That's how it changes in the header depending on " |
|
326 |
"what \n" |
|
327 |
" page you are visiting." |
|
328 |
msgstr "" |
|
329 |
|
|
330 |
#: vigiboard/templates/about.html:64 |
|
331 |
msgid "sidebars.html" |
|
332 |
msgstr "" |
|
333 |
|
|
334 |
#: vigiboard/templates/about.html:64 |
|
335 |
msgid "" |
|
336 |
"- The\n" |
|
337 |
" sidebars (navigation areas on the right side of the page) " |
|
338 |
"are \n" |
|
339 |
" generated as two separate" |
|
340 |
msgstr "" |
|
341 |
|
|
342 |
#: vigiboard/templates/about.html:66 vigiboard/templates/about.html:67 |
|
343 |
msgid "py:def" |
|
344 |
msgstr "" |
|
345 |
|
|
346 |
#: vigiboard/templates/about.html:66 |
|
347 |
msgid "" |
|
348 |
"blocks \n" |
|
349 |
" in the \"sidebars.html\" template. The" |
|
350 |
msgstr "" |
|
351 |
|
|
352 |
#: vigiboard/templates/about.html:67 |
|
353 |
msgid "" |
|
354 |
"construct is best thought of as a \"macro\" code... a simple way to \n" |
|
355 |
" separate and reuse common code snippets. All it takes to " |
|
356 |
"include \n" |
|
357 |
" these on the \"about.html\" page template is to write" |
|
358 |
msgstr "" |
|
359 |
|
|
360 |
#: vigiboard/templates/about.html:73 |
|
361 |
msgid "${sidebar_top()}" |
|
362 |
msgstr "" |
|
363 |
|
|
364 |
#: vigiboard/templates/about.html:75 |
|
365 |
msgid "${sidebar_bottom()}" |
|
366 |
msgstr "" |
|
367 |
|
|
368 |
#: vigiboard/templates/about.html:77 |
|
369 |
msgid "" |
|
370 |
"in the page where they are wanted. CSS styling (in \n" |
|
371 |
" \"/public/css/style.css\") floats them off to the right side. " |
|
372 |
"You can \n" |
|
373 |
" remove a sidebar or add more of them, and the CSS will place them" |
|
374 |
" one \n" |
|
375 |
" atop the other." |
|
376 |
msgstr "" |
|
377 |
|
|
378 |
#: vigiboard/templates/about.html:81 |
|
379 |
msgid "" |
|
380 |
"This is, of course, also exactly how the header and footer \n" |
|
381 |
" templates are also displayed in their proper places, but " |
|
382 |
"we'll \n" |
|
383 |
" cover that in the \"master.html\" template below." |
|
384 |
msgstr "" |
|
385 |
|
|
386 |
#: vigiboard/templates/about.html:84 |
|
387 |
msgid "" |
|
388 |
"Oh, and in sidebar_top we've added a dynamic menu that shows the \n" |
|
389 |
" link to this page at the top when you're at the \"index\" " |
|
390 |
"page, and \n" |
|
391 |
" shows a link to the Home (index) page when you're here. " |
|
392 |
"Study the \n" |
|
393 |
" \"sidebars.html\" template to see how we used" |
|
394 |
msgstr "" |
|
395 |
|
|
396 |
#: vigiboard/templates/about.html:88 |
|
397 |
msgid "py:choose" |
|
398 |
msgstr "" |
|
399 |
|
|
400 |
#: vigiboard/templates/about.html:88 |
|
401 |
msgid "for that." |
|
402 |
msgstr "" |
|
403 |
|
|
404 |
#: vigiboard/templates/about.html:89 |
|
405 |
msgid "footer.html" |
|
406 |
msgstr "" |
|
407 |
|
|
408 |
#: vigiboard/templates/about.html:89 |
|
409 |
msgid "" |
|
410 |
"- The \n" |
|
411 |
" \"footer.html\" block is simple, but also utilizes a special" |
|
412 |
" \n" |
|
413 |
" \"replace\" method to set the current YEAR in the footer " |
|
414 |
"copyright \n" |
|
415 |
" message. The code is:" |
|
416 |
msgstr "" |
|
417 |
|
|
418 |
#: vigiboard/templates/about.html:93 |
|
419 |
msgid "<span py:replace=\"now.strftime('%Y')\">" |
|
420 |
msgstr "" |
|
421 |
|
|
422 |
#: vigiboard/templates/about.html:94 |
|
423 |
msgid "" |
|
424 |
"and it uses the variable \"now\" that was passed \n" |
|
425 |
" in with the dictionary of variables. But because \"now\" is " |
|
426 |
"a \n" |
|
427 |
" datetime object, we can use the Python" |
|
428 |
msgstr "" |
|
429 |
|
|
430 |
#: vigiboard/templates/about.html:97 |
|
431 |
msgid "\"strftime()\"" |
|
432 |
msgstr "" |
|
433 |
|
|
434 |
#: vigiboard/templates/about.html:97 |
|
435 |
msgid "" |
|
436 |
"method with the \"replace\" \n" |
|
437 |
" call to say \"Just Display The Year Here\". Simple, elegant;" |
|
438 |
" we \n" |
|
439 |
" format the date display in the template (the View in the \n" |
|
440 |
" Model/View/Controller architecture) rather than formatting it" |
|
441 |
" in \n" |
|
442 |
" the Controller method and sending it to the template as a " |
|
443 |
"string \n" |
|
444 |
" variable." |
|
445 |
msgstr "" |
|
446 |
|
|
447 |
#: vigiboard/templates/about.html:103 |
|
448 |
msgid "master.html" |
|
449 |
msgstr "" |
|
450 |
|
|
451 |
#: vigiboard/templates/about.html:103 |
|
452 |
msgid "" |
|
453 |
"- The \n" |
|
454 |
" \"master.html\" template is called last, by design. The " |
|
455 |
"\"master.html\" \n" |
|
456 |
" template controls the overall design of the page we're " |
|
457 |
"looking at, \n" |
|
458 |
" calling first the \"header\" py:def macro, then the putting " |
|
459 |
"everything \n" |
|
460 |
" from this \"about.html\" template into the \"content\" div, " |
|
461 |
"and \n" |
|
462 |
" then calling the \"footer\" macro at the end. Thus the " |
|
463 |
"\"master.html\" \n" |
|
464 |
" template provides the overall architecture for each page in " |
|
465 |
"this \n" |
|
466 |
" site." |
|
467 |
msgstr "" |
|
468 |
|
|
469 |
#: vigiboard/templates/about.html:111 |
|
470 |
msgid "" |
|
471 |
"But why then shouldn't we call it first? Isn't it the most \n" |
|
472 |
" important? Perhaps, but that's precisely why we call it " |
|
473 |
"LAST. \n" |
|
474 |
" The \"master.html\" template needs to know where to find " |
|
475 |
"everything \n" |
|
476 |
" else, everything that it will use in py:def macros to build " |
|
477 |
"the\n" |
|
478 |
" page. So that means we call the other templates first, and " |
|
479 |
"then \n" |
|
480 |
" call \"master.html\"." |
|
481 |
msgstr "" |
|
482 |
|
|
483 |
#: vigiboard/templates/about.html:117 |
|
484 |
msgid "" |
|
485 |
"There's more to the \"master.html\" template... study it to see how \n" |
|
486 |
" the <title> tags and static JS and CSS files are brought into" |
|
487 |
" \n" |
|
488 |
" the page. Templating with Genshi is a powerful tool and we've" |
|
489 |
" only \n" |
|
490 |
" scratched the surface. There are also a few little CSS tricks" |
|
491 |
" \n" |
|
492 |
" hidden in these pages, like the use of a \"clearingdiv\" to " |
|
493 |
"make \n" |
|
494 |
" sure that your footer stays below the sidebars and always " |
|
495 |
"looks \n" |
|
496 |
" right. That's not TG2 at work, just CSS. You'll need all " |
|
497 |
"your \n" |
|
498 |
" skills to build a fine web app, but TG2 will make the hard " |
|
499 |
"parts \n" |
|
500 |
" easier so that you can concentrate more on good design and " |
|
501 |
"content \n" |
|
502 |
" rather than struggling with mechanics." |
|
503 |
msgstr "" |
|
504 |
|
|
505 |
#: vigiboard/templates/about.html:129 |
|
506 |
msgid "Good luck with TurboGears 2!" |
|
507 |
msgstr "" |
|
508 |
|
|
509 |
#: vigiboard/templates/authentication.html:11 |
|
510 |
msgid "Learning TurboGears 2.0: Quick guide to authentication." |
|
511 |
msgstr "" |
|
512 |
|
Also available in: Unified diff