Merge lp:~danilo/launchpad/bug-429414 into lp:launchpad

Proposed by Данило Шеган
Status: Merged
Approved by: Aaron Bentley
Approved revision: no longer in the source branch.
Merged at revision: not available
Proposed branch: lp:~danilo/launchpad/bug-429414
Merge into: lp:launchpad
Diff against target: None lines
To merge this branch: bzr merge lp:~danilo/launchpad/bug-429414
Reviewer Review Type Date Requested Status
Aaron Bentley (community) Approve
Review via email: mp+11729@code.launchpad.net
To post a comment you must log in.
Revision history for this message
Данило Шеган (danilo) wrote :

= Bug 429414 =

This branch converts productseries-translations.pt and
sourcepackage-translate.pt/object-translations.pt to 3.0 layout.

Along the way, sourcepackage-translate.pt is removed and
object-translations.pt is renamed to sourcepackage-translations.pt (to
match other templates like distroseries-translations,
distribution-translations, product-translations,...).

It seems like a big branch, but with most links inline, pagetest updates
take 340 lines.

= Tests =

bin/test -vvt translations.*sourcepackage -t translations.*productseries

= Demo & QA =

ProductSeries page:

https://translations.launchpad.dev/evolution/trunk
https://translations.launchpad.dev/firefox/trunk

SourcePackage page:

https://translations.launchpad.dev/ubuntu/hoary/+source/evolution/

= Launchpad lint =

Checking for conflicts. and issues in doctests and templates.
Running jslint, xmllint, pyflakes, and pylint.
Using normal rules.

Linting changed files:
  lib/lp/translations/browser/configure.zcml
  lib/lp/translations/browser/productseries.py

lib/lp/translations/stories/distribution/xx-distribution-translations.txt

lib/lp/translations/stories/importqueue/xx-translation-import-queue-targets.txt

lib/lp/translations/stories/productseries/xx-productseries-templates.txt

lib/lp/translations/stories/productseries/xx-productseries-translation-export.txt

lib/lp/translations/stories/productseries/xx-productseries-translations-bzr-request.txt

lib/lp/translations/stories/productseries/xx-productseries-translations-settings.txt
  lib/lp/translations/stories/standalone/xx-product-export.txt

lib/lp/translations/stories/standalone/xx-productseries-translations.txt

lib/lp/translations/stories/standalone/xx-rosetta-sourcepackage-list.txt
  lib/lp/translations/stories/standalone/xx-sourcepackage-export.txt

lib/lp/translations/stories/standalone/xx-template-description-escaping.txt
  lib/lp/translations/stories/standalone/xx-translations-xpi-import.txt

lib/lp/translations/stories/translationgroups/10-distro-translation-group.txt
  lib/lp/translations/templates/productseries-translations.pt
  lib/lp/translations/templates/sourcepackage-translations.pt

Revision history for this message
Aaron Bentley (abentley) :
review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'lib/lp/translations/browser/configure.zcml'
2--- lib/lp/translations/browser/configure.zcml 2009-09-14 15:35:34 +0000
3+++ lib/lp/translations/browser/configure.zcml 2009-09-14 15:41:21 +0000
4@@ -601,17 +601,9 @@
5 name="+potlist"
6 template="../templates/object-pots.pt"/>
7 <browser:page
8- name="+translate"
9- template="../templates/sourcepackage-translate.pt"/>
10- <browser:page
11 name="+translations"
12- template="../templates/object-translations.pt"/>
13+ template="../templates/sourcepackage-translations.pt"/>
14 </browser:pages>
15- <browser:page
16- name="+translate"
17- for="lp.registry.interfaces.sourcepackage.ISourcePackage"
18- class="lp.translations.browser.translations.TranslateRedirectView"
19- permission="zope.Public"/>
20
21 <!-- ProductSeries translation pages -->
22
23
24=== modified file 'lib/lp/translations/browser/productseries.py'
25--- lib/lp/translations/browser/productseries.py 2009-09-01 11:38:24 +0000
26+++ lib/lp/translations/browser/productseries.py 2009-09-14 19:00:45 +0000
27@@ -123,7 +123,7 @@
28 return "Download translations for %s" % self.download_description
29
30
31-class ProductSeriesTranslationsMixin(object):
32+class ProductSeriesTranslationsMixin(TranslationsMixin):
33 """Common properties for all ProductSeriesTranslations*View classes."""
34
35 @property
36@@ -327,7 +327,7 @@
37 " recognised as a file that can be imported.")
38
39
40-class ProductSeriesView(LaunchpadView, TranslationsMixin):
41+class ProductSeriesView(LaunchpadView, ProductSeriesTranslationsMixin):
42 """A view to show a series with translations."""
43 def initialize(self):
44 """See `LaunchpadFormView`."""
45@@ -335,6 +335,13 @@
46 self.has_multiple_templates = (
47 self.context.getCurrentTranslationTemplates().count() > 1)
48
49+ self.has_exports_enabled = (
50+ self.context.translations_branch is not None)
51+
52+ self.uses_bzr_sync = (
53+ (self.context.branch is not None and self.has_imports_enabled) or
54+ self.has_exports_enabled)
55+
56 @property
57 def productserieslanguages(self):
58 """Get ProductSeriesLanguage objects to display.
59
60=== modified file 'lib/lp/translations/stories/distribution/xx-distribution-translations.txt'
61--- lib/lp/translations/stories/distribution/xx-distribution-translations.txt 2009-09-14 13:47:28 +0000
62+++ lib/lp/translations/stories/distribution/xx-distribution-translations.txt 2009-09-14 19:00:45 +0000
63@@ -9,7 +9,7 @@
64 >>> browser.open('http://launchpad.dev/ubuntu')
65 >>> browser.getLink('Translations').click()
66 >>> print browser.title
67- Translating Ubuntu
68+ Translations : Ubuntu
69
70 Check that there aren't disabled languages shown here:
71
72@@ -52,7 +52,7 @@
73 And the other Ubuntu distributions should be there too.
74
75 >>> content = find_main_content(browser.contents)
76- >>> print extract_text(content.findAll('h2')[2])
77+ >>> print extract_text(content.findAll('h2')[1])
78 Other versions of Ubuntu
79
80 >>> print extract_text(content.find(id='distroseries-list'))
81@@ -94,7 +94,7 @@
82 And the other Ubuntu distributions should be there too.
83
84 >>> content = find_main_content(browser.contents)
85- >>> print extract_text(content.findAll('h2')[2])
86+ >>> print extract_text(content.findAll('h2')[1])
87 Other versions of Debian
88
89 >>> print extract_text(content.find(id='distroseries-list'))
90
91=== modified file 'lib/lp/translations/stories/importqueue/xx-translation-import-queue-targets.txt'
92--- lib/lp/translations/stories/importqueue/xx-translation-import-queue-targets.txt 2009-09-14 13:54:29 +0000
93+++ lib/lp/translations/stories/importqueue/xx-translation-import-queue-targets.txt 2009-09-14 19:00:45 +0000
94@@ -84,7 +84,7 @@
95 The import queue is linked from the translations page for product series.
96
97 >>> user_browser.open('http://translations.launchpad.dev/evolution/trunk')
98- >>> user_browser.getLink('Import queue').click()
99+ >>> user_browser.getLink('import queue').click()
100
101 This time, we do have content for this product:
102
103
104=== modified file 'lib/lp/translations/stories/productseries/xx-productseries-templates.txt'
105--- lib/lp/translations/stories/productseries/xx-productseries-templates.txt 2009-07-16 14:40:28 +0000
106+++ lib/lp/translations/stories/productseries/xx-productseries-templates.txt 2009-09-14 19:00:45 +0000
107@@ -11,7 +11,7 @@
108
109 >>> user_browser.open(
110 ... 'http://translations.launchpad.dev/evolution/trunk')
111- >>> user_browser.getLink('Templates')
112+ >>> user_browser.getLink('full list of templates')
113 Traceback (most recent call last):
114 ...
115 LinkNotFoundError
116@@ -19,7 +19,7 @@
117 >>> browser = setupBrowser('Basic test@canonical.com:test')
118 >>> browser.open(
119 ... 'http://translations.launchpad.dev/evolution/trunk')
120- >>> browser.getLink('Templates').click()
121+ >>> browser.getLink('full list of templates').click()
122 >>> print browser.url
123 http://translations.launchpad.dev/evolution/trunk/+templates
124
125
126=== modified file 'lib/lp/translations/stories/productseries/xx-productseries-translation-export.txt'
127--- lib/lp/translations/stories/productseries/xx-productseries-translation-export.txt 2009-09-12 07:25:21 +0000
128+++ lib/lp/translations/stories/productseries/xx-productseries-translation-export.txt 2009-09-14 19:00:45 +0000
129@@ -12,7 +12,7 @@
130 productseries' translations page.
131
132 >>> user_browser.open('http://translations.launchpad.dev/evolution/trunk/')
133- >>> user_browser.getLink('Download').click()
134+ >>> user_browser.getLink('download').click()
135 >>> print user_browser.url
136 http://translations.launchpad.dev/evolution/trunk/+export
137
138@@ -33,10 +33,10 @@
139 not available to anonymous visitors.
140
141 >>> anon_browser.open('http://translations.launchpad.dev/evolution/trunk/')
142- >>> anon_browser.getLink('Download').click()
143+ >>> anon_browser.getLink('download')
144 Traceback (most recent call last):
145 ...
146- Unauthorized:...
147+ LinkNotFoundError
148
149
150 == Making the request ==
151@@ -73,7 +73,7 @@
152
153 An alternative is MO.
154
155- >>> user_browser.getLink('Download').click()
156+ >>> user_browser.getLink('download').click()
157 >>> user_browser.getControl('Format:').value = ['PO']
158 >>> user_browser.getControl('Request Download').click()
159 >>> print user_browser.url
160@@ -98,7 +98,7 @@
161 link for "Download translations" is hidden.
162
163 >>> user_browser.open('http://translations.launchpad.dev/bzr/')
164- >>> user_browser.getLink('Download')
165+ >>> user_browser.getLink('download')
166 Traceback (most recent call last):
167 ...
168 LinkNotFoundError
169
170=== modified file 'lib/lp/translations/stories/productseries/xx-productseries-translations-bzr-request.txt'
171--- lib/lp/translations/stories/productseries/xx-productseries-translations-bzr-request.txt 2009-09-01 19:36:28 +0000
172+++ lib/lp/translations/stories/productseries/xx-productseries-translations-bzr-request.txt 2009-09-14 19:00:45 +0000
173@@ -12,7 +12,7 @@
174 ... 'Basic test@canonical.com:test')
175 >>> browser.open(
176 ... 'http://translations.launchpad.dev/evolution/trunk/')
177- >>> browser.getLink('Request Bazaar import').click()
178+ >>> browser.getLink('Request an import from bazaar').click()
179 >>> print browser.url
180 http://translations.l...d.dev/evolution/trunk/+request-bzr-import
181
182@@ -55,7 +55,7 @@
183 ... browser.contents, 'field.actions.request_import')
184 >>> print request_button
185 <input type="submit"...value="Request one-time import"...
186- >>> browser.getControl('Request one-time import').click()
187+ >>> browser.getControl("Request one-time import").click()
188 >>> print browser.url
189 http://translations.launchpad.dev/evolution/trunk
190 >>> print "\n".join(get_feedback_messages(browser.contents))
191
192=== modified file 'lib/lp/translations/stories/productseries/xx-productseries-translations-settings.txt'
193--- lib/lp/translations/stories/productseries/xx-productseries-translations-settings.txt 2009-07-10 12:49:30 +0000
194+++ lib/lp/translations/stories/productseries/xx-productseries-translations-settings.txt 2009-09-14 19:00:45 +0000
195@@ -12,7 +12,7 @@
196 ... 'Basic test@canonical.com:test')
197 >>> browser.open(
198 ... 'http://translations.launchpad.dev/evolution/trunk/')
199- >>> browser.getLink('Settings').click()
200+ >>> browser.getLink('Set up branch synchronization').click()
201 >>> print browser.url
202 http://translations.l...d.dev/evolution/trunk/+translations-settings
203
204
205=== modified file 'lib/lp/translations/stories/standalone/xx-product-export.txt'
206--- lib/lp/translations/stories/standalone/xx-product-export.txt 2009-09-12 07:25:21 +0000
207+++ lib/lp/translations/stories/standalone/xx-product-export.txt 2009-09-14 19:00:45 +0000
208@@ -17,7 +17,7 @@
209 first and requesting a download there.
210
211 >>> user_browser.open('http://translations.launchpad.dev/evolution/trunk')
212- >>> user_browser.getLink('Download').click()
213+ >>> user_browser.getLink('download').click()
214 >>> user_browser.url
215 'http://translations.launchpad.dev/evolution/trunk/+export'
216
217
218=== modified file 'lib/lp/translations/stories/standalone/xx-productseries-translations.txt'
219--- lib/lp/translations/stories/standalone/xx-productseries-translations.txt 2009-07-03 14:17:21 +0000
220+++ lib/lp/translations/stories/standalone/xx-productseries-translations.txt 2009-09-14 19:00:45 +0000
221@@ -37,11 +37,11 @@
222
223 >>> anon_browser.open(frobnicator_trunk_url)
224 >>> print anon_browser.title
225- Translations overview for Frobnicator trunk series
226+ Translations : Series trunk : Frobnicator
227
228 >>> main_content = find_main_content(anon_browser.contents)
229 >>> print extract_text(main_content.findAll('h1')[0])
230- Translations for Frobnicator trunk series
231+ Translation status by language
232
233 >>> print_language_stats(anon_browser)
234 No translations.
235
236=== modified file 'lib/lp/translations/stories/standalone/xx-rosetta-sourcepackage-list.txt'
237--- lib/lp/translations/stories/standalone/xx-rosetta-sourcepackage-list.txt 2009-07-01 20:45:39 +0000
238+++ lib/lp/translations/stories/standalone/xx-rosetta-sourcepackage-list.txt 2009-09-14 15:41:21 +0000
239@@ -7,13 +7,13 @@
240 >>> anon_browser.open(
241 ... 'http://translations.launchpad.dev/ubuntu/hoary/'
242 ... '+source/evolution')
243- >>> print anon_browser.title.encode('ascii','backslashreplace')
244- Translation templates for evolution in Ubuntu Hoary
245+ >>> anon_browser.title
246+ '...evolution...package : Translations : 5.04 : Ubuntu'
247
248 >>> content = find_main_content(anon_browser.contents)
249 >>> print extract_text(content.findAll('h1')[0]).encode(
250 ... 'ascii','backslashreplace')
251- Translation templates for evolution in Ubuntu Hoary
252+ Translation templates
253
254 There are two templates for evolution in Ubuntu Hoary
255
256
257=== modified file 'lib/lp/translations/stories/standalone/xx-sourcepackage-export.txt'
258--- lib/lp/translations/stories/standalone/xx-sourcepackage-export.txt 2009-09-12 07:25:21 +0000
259+++ lib/lp/translations/stories/standalone/xx-sourcepackage-export.txt 2009-09-14 15:41:21 +0000
260@@ -15,7 +15,7 @@
261 >>> browser = setupBrowser(auth='Basic mark@example.com:test')
262 >>> browser.open(
263 ... 'http://translations.launchpad.dev/ubuntu/hoary/+source/mozilla/')
264- >>> download = browser.getLink('Download')
265+ >>> download = browser.getLink('download full tarball')
266 >>> download_url = download.url
267 >>> download.click()
268 >>> print browser.url
269@@ -42,7 +42,7 @@
270 ... 'http://translations.launchpad.dev/'
271 ... 'ubuntu/hoary/+source/mozilla/')
272 ... try:
273- ... browser.getLink('Download').click()
274+ ... browser.getLink('download full tarball').click()
275 ... except LinkNotFoundError:
276 ... see_link = False
277 ... else:
278
279=== modified file 'lib/lp/translations/stories/standalone/xx-template-description-escaping.txt'
280--- lib/lp/translations/stories/standalone/xx-template-description-escaping.txt 2009-07-27 08:05:02 +0000
281+++ lib/lp/translations/stories/standalone/xx-template-description-escaping.txt 2009-09-14 15:41:21 +0000
282@@ -30,7 +30,7 @@
283 The same description also shows up on the +translate page for the
284 package. Again,the URL is clickable.
285
286- >>> description = find_description(package_url + '/+translate')
287+ >>> description = find_description(package_url + '/+translations')
288 >>> len(description)
289 1
290 >>> print description[0]
291
292=== modified file 'lib/lp/translations/stories/standalone/xx-translations-xpi-import.txt'
293--- lib/lp/translations/stories/standalone/xx-translations-xpi-import.txt 2009-09-01 19:36:28 +0000
294+++ lib/lp/translations/stories/standalone/xx-translations-xpi-import.txt 2009-09-14 19:00:45 +0000
295@@ -11,7 +11,7 @@
296 Since we still don't have any POTemplates assigned, we must use the general
297 translations upload link.
298
299- >>> browser.getLink('Upload').click()
300+ >>> browser.getLink('upload').click()
301 >>> print browser.url
302 http://translations.launchpad.dev/firefox/trunk/+translations-upload
303
304
305=== modified file 'lib/lp/translations/stories/translationgroups/10-distro-translation-group.txt'
306--- lib/lp/translations/stories/translationgroups/10-distro-translation-group.txt 2009-09-14 15:35:34 +0000
307+++ lib/lp/translations/stories/translationgroups/10-distro-translation-group.txt 2009-09-14 19:00:45 +0000
308@@ -13,7 +13,7 @@
309
310 >>> anon_browser.getLink('Translations').click()
311 >>> print anon_browser.title
312- Translating Ubuntu
313+ Translations : Ubuntu
314
315 >>> print extract_text(
316 ... find_tag_by_id(anon_browser.contents, 'translation-permissions'))
317@@ -58,7 +58,7 @@
318 ... 'The PolyGlot Translation Group']
319 >>> ubuntu_owner_browser.getControl('Change').click()
320 >>> print ubuntu_owner_browser.title
321- Translating Ubuntu
322+ Translations : Ubuntu
323
324 >>> print extract_text(
325 ... find_tag_by_id(ubuntu_owner_browser.contents,
326@@ -70,7 +70,7 @@
327
328 >>> anon_browser.reload()
329 >>> print anon_browser.title
330- Translating Ubuntu
331+ Translations : Ubuntu
332
333 >>> print extract_text(
334 ... find_tag_by_id(anon_browser.contents, 'translation-permissions'))
335
336=== modified file 'lib/lp/translations/templates/productseries-translations.pt'
337--- lib/lp/translations/templates/productseries-translations.pt 2009-09-10 19:07:11 +0000
338+++ lib/lp/translations/templates/productseries-translations.pt 2009-09-14 19:00:45 +0000
339@@ -2,22 +2,10 @@
340 xmlns="http://www.w3.org/1999/xhtml"
341 xmlns:tal="http://xml.zope.org/namespaces/tal"
342 xmlns:metal="http://xml.zope.org/namespaces/metal"
343- xmlns:i18n="http://xml.zope.org/namespaces/i18n"
344- xml:lang="en"
345- lang="en"
346- dir="ltr"
347- metal:use-macro="view/macro:page/onecolumn"
348- i18n:domain="launchpad"
349+ metal:use-macro="view/macro:page/main_only"
350 >
351 <body>
352 <div metal:fill-slot="main">
353- <h1>
354- Translations for
355- <tal:title replace="context/title">
356- evolution trunk
357- </tal:title>
358- </h1>
359-
360 <ul class="helplinks">
361 <li>
362 <a href="https://help.launchpad.net/Translations"
363@@ -27,7 +15,10 @@
364 </li>
365 </ul>
366
367+ <h1>Translation status by language</h1>
368+
369 <tal:no-languages condition="not:view/productserieslanguages">
370+ <div class="yui-b top-portlet">
371 <p>There are no translations for this release series.</p>
372
373 <p tal:condition="context/product/required:launchpad.Edit">To
374@@ -48,39 +39,130 @@
375 >import from branches</a>
376 (<a href="https://help.launchpad.net/Translations/ImportingFromBazaarBranches">read more</a>).
377 </p>
378-
379- <tal:user condition="view/user">
380- <p tal:condition="not:view/user/languages">Please <a
381- tal:attributes="href string:${view/user/fmt:url}/+editlanguages">
382- set your languages</a> to start translating.</p>
383- </tal:user>
384+ </div>
385 </tal:no-languages>
386
387+ <div class="yui-g">
388+ <div class="yui-u first">
389+ <div class="portlet">
390+ <h3>Permissions</h3>
391+ <p>
392+ <tal:permissions replace="
393+ structure
394+ context/product/@@+portlet-translation-groups-and-permission"/>
395+ </p>
396+ <p tal:condition="view/has_translation_documentation">
397+ Before translating, please look at
398+ <a tal:attributes="
399+ href
400+ context/product/translationgroup/translation_guide_url
401+ ">translation instructions</a> first.
402+ </p>
403+ </div>
404+ </div>
405+
406+ <div class="yui-u">
407+ <div class="portlet">
408+ <h3>Administration</h3>
409+ <p>Translation files that are waiting to be imported are shown in
410+ the
411+ <a tal:attributes="href context/menu:navigation/imports/url">
412+ import queue</a>.
413+ </p>
414+ <p tal:condition="context/required:launchpad.Edit">
415+ To manage all the translation templates in
416+ <tal:series replace="context/displayname">trunk</tal:series>,
417+ see the
418+ <a tal:attributes="href context/menu:navigation/templates/url">
419+ full list of templates</a>.
420+ </p>
421+ </div>
422+ </div>
423+ </div>
424+ <div class="yui-g">
425+ <div class="yui-u first">
426+ <div class="portlet">
427+ <h3>Automatic synchronization</h3>
428+ <tal:uses-bzr-sync condition="view/uses_bzr_sync">
429+ <tal:imports condition="view/has_imports_enabled">
430+ <tal:exports condition="view/has_exports_enabled">
431+ Translations are imported with every update from branch
432+ <a tal:replace="structure context/branch/fmt:link">
433+ branch
434+ </a>, and exported daily to branch
435+ <a tal:replace="
436+ structure context/translations_branch/fmt:link"
437+ >branch name</a>.
438+ </tal:exports>
439+ </tal:imports>
440+ <tal:imports-only condition="view/has_imports_enabled">
441+ <tal:no-exports condition="not:view/has_exports_enabled">
442+ Translations are imported with every update from branch
443+ <a tal:replace="structure context/branch/fmt:link">
444+ branch name
445+ </a>.
446+ </tal:no-exports>
447+ </tal:imports-only>
448+ <tal:exports-only condition="view/has_exports_enabled">
449+ <tal:no-imports condition="not:view/has_imports_enabled">
450+ Translations are exported daily to branch
451+ <a tal:replace="
452+ structure context/translations_branch/fmt:link">
453+ branch name
454+ </a>.
455+ </tal:no-imports>
456+ </tal:exports-only>
457+ <div tal:condition="context/required:launchpad.Edit">
458+ <a tal:attributes="href context/menu:navigation/settings/url"
459+ class="edit sprite">
460+ Change synchronization settings
461+ </a>
462+ </div>
463+ </tal:uses-bzr-sync>
464+ <tal:no-bzr-sync condition="not:view/uses_bzr_sync">
465+ <p>This project is currently not using any synchronization
466+ with bazaar branches.</p>
467+ <tal:branch condition="context/branch">
468+ <p>
469+ <a tal:attributes="
470+ href context/menu:navigation/requestbzrimport/url"
471+ tal:condition="context/required:launchpad.Edit"
472+ class="add sprite">
473+ Request an import from bazaar
474+ </a> to do a one time import of all the templates and
475+ translations.
476+ </p>
477+ </tal:branch>
478+ <div tal:condition="context/required:launchpad.Edit">
479+ <a tal:attributes="href context/menu:navigation/settings/url"
480+ class="edit sprite">
481+ Set up branch synchronization
482+ </a>
483+ </div>
484+ </tal:no-bzr-sync>
485+ </div>
486+ </div>
487+ <div class="yui-u"
488+ tal:condition="context/required:launchpad.AnyPerson">
489+ <div class="portlet">
490+ <h3>Manual synchronization</h3>
491+ <p>If you don't want to use bazaar synchronization, you can still
492+ manually
493+ <a tal:attributes="href context/menu:navigation/translationupload/url"
494+ tal:condition="context/required:launchpad.Edit"
495+ class="add sprite">upload</a>
496+ or
497+ <a tal:attributes="href context/menu:navigation/translationdownload/url"
498+ tal:condition="context/required:launchpad.AnyPerson"
499+ class="download sprite">download</a>
500+ translation tarballs.
501+ </p>
502+ </div>
503+ </div>
504+ </div>
505+
506 <tal:languages condition="view/productserieslanguages">
507- <p id="translation-permissions">
508- <tal:product replace="structure context/product/fmt:link">This
509- project</tal:product> is translated
510- <tal:hasgroup condition="context/product/translationgroup">by
511- <a tal:attributes="href context/product/translationgroup/fmt:url"
512- tal:content="context/product/translationgroup/title">translators</a>
513- </tal:hasgroup>
514- with <a target="help" href="/+help/permissions-policies.html"
515- tal:content="context/product/translationpermission/title">certain</a>
516- permissions.
517- <tal:permissions condition="context/product/required:launchpad.Edit">
518- You can modify permissions on the
519- <a
520- tal:define="link context/product/menu:navigation/settings"
521- tal:attributes="href link/url"
522- >project settings</a> page.
523- </tal:permissions>
524- </p>
525- <p tal:condition="view/has_translation_documentation">
526- Before translating, please look at
527- <a tal:attributes="
528- href
529- context/product/translationgroup/translation_guide_url
530- ">translation instructions</a> first.</p>
531+ <h2>Translation status</h2>
532
533 <div tal:replace="structure context/@@+languages" />
534
535
536=== removed file 'lib/lp/translations/templates/sourcepackage-translate.pt'
537--- lib/lp/translations/templates/sourcepackage-translate.pt 2009-07-17 17:59:07 +0000
538+++ lib/lp/translations/templates/sourcepackage-translate.pt 1970-01-01 00:00:00 +0000
539@@ -1,41 +0,0 @@
540-<html
541- xmlns="http://www.w3.org/1999/xhtml"
542- xmlns:tal="http://xml.zope.org/namespaces/tal"
543- xmlns:metal="http://xml.zope.org/namespaces/metal"
544- xmlns:i18n="http://xml.zope.org/namespaces/i18n"
545- xml:lang="en"
546- lang="en"
547- dir="ltr"
548- metal:use-macro="context/@@main_template/master"
549- i18n:domain="launchpad"
550->
551-
552-<body>
553-
554-<div metal:fill-slot="main">
555-
556- <h1>Help translate
557- <span tal:replace="context/distribution/displayname">foo</span>!</h1>
558-
559- <p>
560- Are you fluent in a language other than English?
561- If so, you can contribute to <span tal:replace="context/title" />
562- by translating it with Launchpad&#8217;s
563- <a href="/translations/">Translations</a> software.
564- You can translate as much as you like, whenever you like &#8212;
565- all you need is a Web browser.
566- </p>
567-
568- <p>
569- To start, <a href="+translate/+login">get a Launchpad account</a>
570- if you don&#8217;t already have one.
571- Then choose a language below, and start translating.
572- It&#8217;s that easy.
573- </p>
574-
575- <div tal:replace="structure context/@@+potlist" />
576-
577-</div>
578-</body>
579-</html>
580-
581
582=== renamed file 'lib/lp/translations/templates/object-translations.pt' => 'lib/lp/translations/templates/sourcepackage-translations.pt'
583--- lib/lp/translations/templates/object-translations.pt 2009-07-17 17:59:07 +0000
584+++ lib/lp/translations/templates/sourcepackage-translations.pt 2009-09-14 15:41:21 +0000
585@@ -2,25 +2,10 @@
586 xmlns="http://www.w3.org/1999/xhtml"
587 xmlns:tal="http://xml.zope.org/namespaces/tal"
588 xmlns:metal="http://xml.zope.org/namespaces/metal"
589- xmlns:i18n="http://xml.zope.org/namespaces/i18n"
590- xml:lang="en"
591- lang="en"
592- dir="ltr"
593- metal:use-macro="view/macro:page/onecolumn"
594- i18n:domain="launchpad"
595-><!-- context/@@main_template/master
596- view/macro:page/onecolumn
597- -->
598-
599+ metal:use-macro="view/macro:page/main_only"
600+>
601 <body>
602 <div metal:fill-slot="main">
603- <h1>
604- Translation templates for
605- <tal:title replace="context/title">
606- evolution in Ubuntu Feisty
607- </tal:title>
608- </h1>
609-
610 <ul class="helplinks">
611 <li>
612 <a href="https://help.launchpad.net/Translations"
613@@ -30,7 +15,41 @@
614 </li>
615 </ul>
616
617- <div tal:replace="structure context/@@+potlist" />
618+ <h1>Translation templates</h1>
619+
620+ <div class="yui-g">
621+ <div class="yui-u first">
622+ <div class="portlet">
623+ <h3>Permissions</h3>
624+ <p>
625+ <tal:permissions replace="
626+ structure
627+ context/distroseries/distribution/@@+portlet-translation-groups-and-permission"/>
628+ </p>
629+ </div>
630+ </div>
631+ <div class="yui-u">
632+ <div class="portlet">
633+ <h3>Administration</h3>
634+ <p>Translation files that are waiting to be imported are shown in
635+ the
636+ <a tal:attributes="href context/menu:navigation/imports/url">
637+ import queue</a>.
638+ </p>
639+ <p tal:condition="context/required:launchpad.ExpensiveRequest">
640+ If you want to manually integrate translations for this package,
641+ you can
642+ <a tal:attributes="href context/menu:navigation/download/url">
643+ download full tarball</a> with translations.
644+ </p>
645+ </div>
646+ </div>
647+ </div>
648+
649+ <div class="yui-b">
650+ <div tal:replace="structure context/@@+potlist" />
651+ </div>
652+
653 </div>
654 </body>
655 </html>
656