Merge lp:~adiroiban/launchpad/bug-146178 into lp:launchpad/db-devel

Proposed by Adi Roiban
Status: Merged
Merged at revision: not available
Proposed branch: lp:~adiroiban/launchpad/bug-146178
Merge into: lp:launchpad/db-devel
Diff against target: 469 lines (+204/-71)
5 files modified
lib/lp/registry/interfaces/distroseries.py (+12/-13)
lib/lp/translations/browser/distroseries.py (+40/-4)
lib/lp/translations/stories/distroseries/xx-distroseries-language-packs.txt (+87/-24)
lib/lp/translations/templates/distroseries-language-packs.pt (+59/-22)
lib/lp/translations/templates/distroseries-translations.pt (+6/-8)
To merge this branch: bzr merge lp:~adiroiban/launchpad/bug-146178
Reviewer Review Type Date Requested Status
Brad Crittenden (community) code Approve
Curtis Hovey (community) ui Approve
Eleanor Berger (community) ui* Approve
Abel Deuring (community) code Abstain
Review via email: mp+23760@code.launchpad.net

Commit message

Add in the UI +latest-delta-language-pack and +latest-full-language-pack links to retrieve latest version of language packs exports.

Description of the change

= Bug 146178 =
With the move of language pack exports to production servers we added +latest-delta-language-pack and +latest-full-language-pack links to retrieve latest version of language packs exports.

We don't link to them from Launchpad so they are only available to people that knows about it.

We should add them to the +language-packs page.

== Proposed fix ==

Create translation navigation menu entries for distroseries and add them on distroseries@@+language-packs page.

== Pre-implementation notes ==

The links are of interest only for a few users and this is why they are added only on the +langauge-packs page.

Danilo hinted that when latest and current language packs are the same we should not show the latest language pack and rather use „no updates”

Danilo also mentioned that instead of „none yet” we can use „no updates” (or something similar) and that maybe we can find a better terminology for base / full / update / delta language packs.

== Implementation details ==

Screenshots:
distribution page: http://launchpadlibrarian.net/44983544/distribution.png
language-packs page: http://launchpadlibrarian.net/44985665/language-packs.png

I have removed the inline css for "adminlabel" as portlet titles were not aligned.
I have changed the links to use sprites.
Regarding the terminology issue, I used "base" for the base language pack and "update" for the delta language pack that must be applied over the base pack.

I used "language pack" and not "language package" since they are just translation archive and not fully functional distribution packages.

When updating a delta language pack two notification messages were generated, once saying that the changes were applied and another that no changes were submitted. I have fix that issue in this bug and since this page is only used by Ubuntu developers/translations admins I tried to keep thing simple and the "Your changes were applied" message also is displayed when and admin is pressing the "Change Settings" button without changing any field.

== Tests ==

lp-tt distroseries-language-packs

== Demo and Q/A ==

Go to: https://translations.launchpad.dev/ubuntu/hoary
You should see link to the "Base back" and "Update pack" if they are available, or "none yet" and "no update".

Languages packs can be changes from here:
https://translations.launchpad.dev/ubuntu/hoary/+language-packs

On the language packs you should see links to both active, in testing, latest and unused languages packs.

To post a comment you must log in.
Revision history for this message
Данило Шеган (danilo) wrote :

Looking at the screenshots: any reason to still add 'Current' to the titles on distroseries:+translations page? And don't forget to decapitalize "Base" in "Current Base" on the +language-packs page (not to mention that it'd be nice to find better terminology for these, but I am letting you take care of that with the UI reviewer)

Revision history for this message
Данило Шеган (danilo) wrote :

And please, do not use tables on this page.

Revision history for this message
Abel Deuring (adeuring) wrote :
Download full text (5.5 KiB)

This is my branch to fix from trivial issues while my brain is stuck in
first gear.

    lp:~sinzui/launchpad/oil-and-pigment
    Diff size: 489
    Launchpad bug: https://bugs.launchpad.net/bugs/436299
                   https://bugs.launchpad.net/bugs/568336
                   https://bugs.launchpad.net/bugs/130285
                   https://bugs.launchpad.net/bugs/557544
    Test command: ./bin/test -vv lp.registry.tests.test_person
        ./bin/test -t site-search -t xx-team-home -t xx-private-membership \
            -t person-karma
    Pre-implementation: no one
    Target release: 10.04

Fix from trivial issues while my brain is stuck in first gear
--------------------------------------------------------------------

Bug #436299 [Search results give wrong "Registered by" information]
    The maintainer is listed as the registrant. This is wrong. The
    problem is that distributions do not have a registrant.

Bug #568336 [Typo on profile workload page]
    There is a double 'or'

Bug #130285 [Disregard deleted projects from Most active in]
    Deactivated projects are listed in "Most active in" in the profile page
    and the links are a 404.

Bug #557544 [Bad plural on team page ("1 active members")]
    What: "1 active members" can appear on team page. This is incorrect use
    of a plural.

Rules
-----

Bug #436299 [Search results give wrong "Registered by" information]
    Verify there is a registrant using tales before appending the clause.
    tal:define="registrant view/pillar/registrant|nothing"
    tal:condition="registrant"

Bug #568336 [Typo on profile workload page]
    Remove the second 'or'.

Bug #130285 [Disregard deleted projects from lists]
    This issue in on the cusp of *not* trivial because a good understanding
    of pillar name behaviour and karma testing is needed. The fix can be
    easily placed into an existing doc test, but that is not the correct
    location.
    * pillar names (used by karma cache) have no concept of active/inactive.
      The method must filter deactivate pillars /after/ the query to get the
      names. The callsite must request more than is needed because of the
      filtering.
    * Generate the karma for a unit test of the method *and* the private
      methods that were never directly tested.
    * Test that deactivated pillars are not included.
    * ADDENDUM: While I knew how to generate the karma, the reason why
      the karma looks like it is inserted twice was not obvious from existing
      tests. I took an extra hour learning this and adding comments for
      future developers.

Bug #557544 [Bad plural on team page ("1 active members")]
    * Use the plural-message macro to switch between member and members

QA
--

Bug #436299 [Search results give wrong "Registered by" information]
    * Visit https://edge.launchpad.net/+search?field.text=wesnoth
    * Verify that Karianne Fog Heen is listed as the registrant
    * Visit https://edge.launchpad.net/+search?field.text=ubuntu
    * Verify that no registrant is listed:
      Registered on <date>

Bug #568336 [Typo on profile workload page]
    * Visit https://blueprints.edge.launchpad.net/~humphreybc/+specworkload
    * Verif...

Read more...

review: Needs Information (code)
Revision history for this message
Abel Deuring (adeuring) wrote :

I am an idiot -- that was meant for another branch. Sorry for the noise...

Revision history for this message
Abel Deuring (adeuring) :
review: Abstain (code)
Revision history for this message
Eleanor Berger (intellectronica) :
review: Approve (ui*)
Revision history for this message
Curtis Hovey (sinzui) wrote :

The UI looks good to land.

review: Approve (ui)
Revision history for this message
Brad Crittenden (bac) wrote :
Download full text (4.3 KiB)

Hi Adi,

Thanks for submitting this change. The work looks really good.

Please fix the small items below and then I'll (try) to land it for you, if ec2 will let me. :(

> === modified file 'lib/lp/registry/interfaces/distroseries.py'
> --- lib/lp/registry/interfaces/distroseries.py 2010-04-08 18:40:18 +0000
+++ lib/lp/registry/interfaces/distroseries.py 2010-04-21 22:30:59 +0000
> @@ -250,33 +250,33 @@
> language_pack_base = Choice(
> title=_('Language pack base'), required=False,
> description=_('''
> - Language pack export with the export of all translations available
> - for this `IDistroSeries` when it was generated. Next delta exports
> - will be generated based on this one.
> + Language pack with the export of all translations
> + available for this distribution series when it was generated. The
> + subsequent update exports will be generated based on this one.
> '''), vocabulary='FilteredFullLanguagePack')
>
> language_pack_delta = Choice(
> - title=_('Language pack delta'), required=False,
> + title=_('Language pack update'), required=False,
> description=_('''
> - Language pack export with the export of all translation updates
> - available for this `IDistroSeries` since language_pack_base was
> - generated.
> + Language pack with the export of all translation updates
> + available for this distribution series since the language pack
> + base was generated.
> '''), vocabulary='FilteredDeltaLanguagePack')
>
> language_pack_proposed = Choice(
> title=_('Proposed language pack update'), required=False,
> description=_('''
> - Base or delta language pack export that is being tested and
> - proposed to be used as the new language_pack_base or
> - language_pack_delta for this `IDistroSeries`.
> + Base or update language pack export that is being tested and
> + proposed to be used as the new language pack base or
> + language pack update for this distribution series.
> '''), vocabulary='FilteredLanguagePack')
>
> language_pack_full_export_requested = Bool(
> title=_('Request a full language pack export'), required=True,
> description=_('''
> Whether next language pack generation will be a full export. This
> - is useful when delta packages are too big and want to merge all
> - those changes in the base package.
> + is useful when update packs are too big and want to merge all
> + those changes in the base pack.

s/This is/This information is/

> '''))
>
> last_full_language_pack_exported = Object(

> === modified file 'lib/lp/translations/browser/distroseries.py'
> --- lib/lp/translations/browser/distroseries.py 2010-02-24 18:33:18 +0000
> +++ lib/lp/translations/browser/distroseries.py 2010-04-21 22:30:59 +0000
> @@ -122,6 +122,28 @@
>
> return unused_language_packs
>
> + @property
> + def have_latest_full...

Read more...

review: Approve (code)
Revision history for this message
Brad Crittenden (bac) wrote :

Also, I see this MP is targeted to db-devel not devel which seems to be in error.

Revision history for this message
Adi Roiban (adiroiban) wrote :

Hi Brad and many thanks for your review.

I have create a new MP targeted to devel and added my diff there:
https://code.edge.launchpad.net/~adiroiban/launchpad/bug-146178/+merge/24265

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'lib/lp/registry/interfaces/distroseries.py'
--- lib/lp/registry/interfaces/distroseries.py 2010-04-08 18:40:18 +0000
+++ lib/lp/registry/interfaces/distroseries.py 2010-04-27 22:26:15 +0000
@@ -53,7 +53,6 @@
53from lp.translations.interfaces.languagepack import ILanguagePack53from lp.translations.interfaces.languagepack import ILanguagePack
5454
5555
56
57class DistroSeriesNameField(ContentNameField):56class DistroSeriesNameField(ContentNameField):
58 """A class to ensure `IDistroSeries` has unique names."""57 """A class to ensure `IDistroSeries` has unique names."""
59 errormessage = _("%s is already in use by another series.")58 errormessage = _("%s is already in use by another series.")
@@ -250,33 +249,33 @@
250 language_pack_base = Choice(249 language_pack_base = Choice(
251 title=_('Language pack base'), required=False,250 title=_('Language pack base'), required=False,
252 description=_('''251 description=_('''
253 Language pack export with the export of all translations available252 Language pack with the export of all translations
254 for this `IDistroSeries` when it was generated. Next delta exports253 available for this distribution series when it was generated. The
255 will be generated based on this one.254 subsequent update exports will be generated based on this one.
256 '''), vocabulary='FilteredFullLanguagePack')255 '''), vocabulary='FilteredFullLanguagePack')
257256
258 language_pack_delta = Choice(257 language_pack_delta = Choice(
259 title=_('Language pack delta'), required=False,258 title=_('Language pack update'), required=False,
260 description=_('''259 description=_('''
261 Language pack export with the export of all translation updates260 Language pack with the export of all translation updates
262 available for this `IDistroSeries` since language_pack_base was261 available for this distribution series since the language pack
263 generated.262 base was generated.
264 '''), vocabulary='FilteredDeltaLanguagePack')263 '''), vocabulary='FilteredDeltaLanguagePack')
265264
266 language_pack_proposed = Choice(265 language_pack_proposed = Choice(
267 title=_('Proposed language pack update'), required=False,266 title=_('Proposed language pack update'), required=False,
268 description=_('''267 description=_('''
269 Base or delta language pack export that is being tested and268 Base or update language pack export that is being tested and
270 proposed to be used as the new language_pack_base or269 proposed to be used as the new language pack base or
271 language_pack_delta for this `IDistroSeries`.270 language pack update for this distribution series.
272 '''), vocabulary='FilteredLanguagePack')271 '''), vocabulary='FilteredLanguagePack')
273272
274 language_pack_full_export_requested = Bool(273 language_pack_full_export_requested = Bool(
275 title=_('Request a full language pack export'), required=True,274 title=_('Request a full language pack export'), required=True,
276 description=_('''275 description=_('''
277 Whether next language pack generation will be a full export. This276 Whether next language pack generation will be a full export. This
278 is useful when delta packages are too big and want to merge all277 information is useful when update packs are too big and want to
279 those changes in the base package.278 merge all those changes in the base pack.
280 '''))279 '''))
281280
282 last_full_language_pack_exported = Object(281 last_full_language_pack_exported = Object(
283282
=== modified file 'lib/lp/translations/browser/distroseries.py'
--- lib/lp/translations/browser/distroseries.py 2010-02-24 18:33:18 +0000
+++ lib/lp/translations/browser/distroseries.py 2010-04-27 22:26:15 +0000
@@ -122,6 +122,34 @@
122122
123 return unused_language_packs123 return unused_language_packs
124124
125 @property
126 def have_latest_full_pack(self):
127 """Checks if this distribution series has a full language pack newer
128 than the current one."""
129
130 current = self.context.language_pack_base
131 latest = self.context.last_full_language_pack_exported
132 if (current is None or
133 latest is None or
134 current.file.http_url == latest.file.http_url):
135 return False
136 else:
137 return True
138
139 @property
140 def have_latest_delta_pack(self):
141 """Checks if this distribution series has a delta language pack newer
142 than the current one."""
143
144 current = self.context.language_pack_delta
145 latest = self.context.last_delta_language_pack_exported
146 if (current is None or
147 latest is None or
148 current.file.http_url == latest.file.http_url):
149 return False
150 else:
151 return True
152
125 def _request_full_export(self):153 def _request_full_export(self):
126 if (self.old_request_value !=154 if (self.old_request_value !=
127 self.context.language_pack_full_export_requested):155 self.context.language_pack_full_export_requested):
@@ -135,9 +163,6 @@
135 "Your request has been noted. Next language pack "163 "Your request has been noted. Next language pack "
136 "export will be made relative to the current base "164 "export will be made relative to the current base "
137 "language pack.")165 "language pack.")
138 else:
139 self.request.response.addInfoNotification(
140 "You didn't change anything.")
141166
142 @action("Change Settings", condition=is_translations_admin)167 @action("Change Settings", condition=is_translations_admin)
143 def change_action(self, action, data):168 def change_action(self, action, data):
@@ -232,7 +257,8 @@
232 usedfor = IDistroSeries257 usedfor = IDistroSeries
233 facet = 'translations'258 facet = 'translations'
234 links = [259 links = [
235 'translations', 'templates', 'admin', 'language_packs', 'imports']260 'translations', 'templates', 'admin', 'language_packs',
261 'latest_full_language_pack', 'latest_delta_language_pack', 'imports']
236262
237 def translations(self):263 def translations(self):
238 return Link('', 'Overview')264 return Link('', 'Overview')
@@ -251,6 +277,16 @@
251 def language_packs(self):277 def language_packs(self):
252 return Link('+language-packs', 'Language packs')278 return Link('+language-packs', 'Language packs')
253279
280 def latest_full_language_pack(self):
281 return Link(
282 '+latest-full-language-pack',
283 'Latest full language pack')
284
285 def latest_delta_language_pack(self):
286 return Link(
287 '+latest-delta-language-pack',
288 'Latest delta language pack')
289
254290
255def check_distroseries_translations_viewable(distroseries):291def check_distroseries_translations_viewable(distroseries):
256 """Check that these distribution series translations are visible.292 """Check that these distribution series translations are visible.
257293
=== modified file 'lib/lp/translations/stories/distroseries/xx-distroseries-language-packs.txt'
--- lib/lp/translations/stories/distroseries/xx-distroseries-language-packs.txt 2009-09-17 11:10:49 +0000
+++ lib/lp/translations/stories/distroseries/xx-distroseries-language-packs.txt 2010-04-27 22:26:15 +0000
@@ -1,4 +1,5 @@
1= Distribution series language packs admin =1Distribution series language packs admin
2========================================
23
3For each distribution series, we can select several special language packs:4For each distribution series, we can select several special language packs:
45
@@ -18,57 +19,83 @@
18 ... 'http://translations.launchpad.dev/ubuntu/hoary')19 ... 'http://translations.launchpad.dev/ubuntu/hoary')
19 >>> admin_browser.getLink('See all language packs').click()20 >>> admin_browser.getLink('See all language packs').click()
2021
21Initially, there is no package selected.22Initially, there is no package selected and there are options for choosing a
23base language pack.
2224
23 >>> base = admin_browser.getControl('Language pack base')25 >>> base = admin_browser.getControl('Language pack base')
24 >>> print base.displayValue26 >>> print base.displayValue
25 ['(no value)']27 ['(no value)']
26 >>> delta = admin_browser.getControl('Language pack delta')28 >>> base.displayOptions
29 ['(no value)', '2007-09-10 19:16:01 UTC', '2007-09-10 19:14:26 UTC']
30 >>> delta = admin_browser.getControl('Language pack update')
27 >>> print delta.displayValue31 >>> print delta.displayValue
28 ['(no value)']32 ['(no value)']
29 >>> proposed = admin_browser.getControl('Proposed language pack update')33 >>> proposed = admin_browser.getControl('Proposed language pack update')
30 >>> print proposed.displayValue34 >>> print proposed.displayValue
31 ['(no value)']35 ['(no value)']
3236
33
34 >>> base.displayOptions
35 ['(no value)', '2007-09-10 19:16:01 UTC', '2007-09-10 19:14:26 UTC']
36
37Let's select a base one:37Let's select a base one:
3838
39 >>> base.displayValue = ['2007-09-10 19:16:01 UTC']39 >>> base.displayValue = ['2007-09-10 19:14:26 UTC']
40 >>> admin_browser.getControl('Change').click()40 >>> admin_browser.getControl('Change').click()
41 >>> print admin_browser.url41 >>> print admin_browser.url
42 http://translations.launchpad.dev/ubuntu/hoary/+language-packs42 http://translations.launchpad.dev/ubuntu/hoary/+language-packs
4343
44Now the admin page will show us that language pack selected.44Now the admin page will show us that language pack selected and a list of
45available update packages.
4546
46 >>> base = admin_browser.getControl('Language pack base')47 >>> base = admin_browser.getControl('Language pack base')
47 >>> print base.displayValue48 >>> print base.displayValue
48 ['2007-09-10 19:16:01 UTC']49 ['2007-09-10 19:14:26 UTC']
4950
50Also, that change is shown in the public language pack listing web page:51 >>> update = admin_browser.getControl('Language pack update')
52 >>> print update.displayValue
53 ['(no value)']
54 >>> update.displayOptions
55 ['(no value)', '2007-09-10 19:15:19 UTC', '2007-09-10 19:15:01 UTC']
56
57Those changes are shown in the public language pack listing web page:
5158
52 >>> browser.open('http://translations.launchpad.dev/ubuntu/hoary')59 >>> browser.open('http://translations.launchpad.dev/ubuntu/hoary')
53 >>> browser.getLink('See all language packs').click()60 >>> browser.getLink('See all language packs').click()
54 >>> print extract_text(find_tag_by_id(browser.contents, "language_packs"))61 >>> print extract_text(find_tag_by_id(browser.contents, "language_packs"))
55 A language pack...62 A language pack...
56 Active language packs63 Active language packs
57 Base pack: 2007-09-10 19:16:01 UTC64 Base pack: 2007-09-10 19:14:26 UTC
58 A complete set of translations for the OS.65 Archive containing a complete set of translations
59 Delta pack:66 for this operating system.
60 none yet67 Update pack:
61 Translation updates, applied on top of the base pack.68 no update
69 Archive containing translation updates, applied on top of the base pack.
70 Latest language packs
71 Base pack:
72 2007-09-10 19:16:01 UTC
73 Latest archive containing a complete set of translations
74 for this operating system.
75 Update pack:
76 no update
77 Latest archive containing translation updates,
78 applied on top of the base pack.
62 Language pack being tested79 Language pack being tested
63 No pack is being tested right now.80 No pack is being tested right now.
64 Currently unused language packs81 Currently unused language packs
82 Full language pack: 2007-09-10 19:16:01 UTC
65 Delta language pack: 2007-09-10 19:15:19 UTC83 Delta language pack: 2007-09-10 19:15:19 UTC
66 Delta language pack: 2007-09-10 19:15:01 UTC84 Delta language pack: 2007-09-10 19:15:01 UTC
67 Full language pack: 2007-09-10 19:14:26 UTC85
6886The active base language pack URL is linking to an archive, while the latest
69There is also an option to set/unset whether next language pack generation is87URL uses '+latest-full-language-pack'.
70a full export:88
7189 >>> print browser.getLink('2007-09-10 19:14:26 UTC').url
90 http.../71/ubuntu-hoary-translations.tar.gz
91 >>> print browser.getLink('2007-09-10 19:16:01 UTC').url
92 http://translations.launchpad.dev/ubuntu/hoary/+latest-full-language-pack
93
94An administrator can choose the current update pack and there is also an
95option to set/unset whether next language pack generation is a full export:
96
97 >>> update = admin_browser.getControl('Language pack update')
98 >>> update.displayValue = ['2007-09-10 19:15:01 UTC']
72 >>> admin_browser.getControl(99 >>> admin_browser.getControl(
73 ... 'Request a full language pack export').selected100 ... 'Request a full language pack export').selected
74 False101 False
@@ -88,6 +115,42 @@
88 True115 True
89116
90There are no visible user interface changes once this flag is changed. It117There are no visible user interface changes once this flag is changed. It
91just changes the behaviour of the language pack export, which is executed by cron,118just changes the behaviour of the language pack export, which is executed by
92it will do a full export of translations for this distro series.119cron, it will do a full export of translations for this distro series.
120
121The language pack changes are visible on the public language pack page:
122
123 >>> browser.open(
124 ... 'http://translations.launchpad.dev/ubuntu/hoary/+language-packs')
125 >>> print extract_text(find_tag_by_id(browser.contents, "language_packs"))
126 A language pack...
127 Active language packs
128 Base pack: 2007-09-10 19:14:26 UTC
129 Archive containing a complete set of translations
130 for this operating system.
131 Update pack:
132 2007-09-10 19:15:01 UTC
133 Archive containing translation updates, applied on top of the base pack.
134 Latest language packs
135 Base pack:
136 2007-09-10 19:16:01 UTC
137 Latest archive containing a complete set of translations
138 for this operating system.
139 Update pack:
140 2007-09-10 19:15:19 UTC
141 Latest archive containing translation updates,
142 applied on top of the base pack.
143 Language pack being tested
144 No pack is being tested right now.
145 Currently unused language packs
146 Full language pack: 2007-09-10 19:16:01 UTC
147 Delta language pack: 2007-09-10 19:15:19 UTC
148
149The active update language pack URL is linking to an archive, while the latest
150URL uses '+latest-full-language-pack'.
151
152 >>> print browser.getLink('2007-09-10 19:15:01 UTC').url
153 http.../72/ubuntu-hoary-translations-update.tar.gz
154 >>> print browser.getLink('2007-09-10 19:15:19 UTC').url
155 http://translations.launchpad.dev/ubuntu/hoary/+latest-delta-language-pack
93156
94157
=== modified file 'lib/lp/translations/templates/distroseries-language-packs.pt'
--- lib/lp/translations/templates/distroseries-language-packs.pt 2009-09-17 11:10:49 +0000
+++ lib/lp/translations/templates/distroseries-language-packs.pt 2010-04-27 22:26:15 +0000
@@ -6,14 +6,6 @@
6 metal:use-macro="view/macro:page/main_only"6 metal:use-macro="view/macro:page/main_only"
7 i18n:domain="launchpad" >7 i18n:domain="launchpad" >
8 <body>8 <body>
9 <div metal:fill-slot="head_epilogue">
10 <style type="text/css">
11 h2.adminlabel {
12 margin: 1.5em 0 0 0;
13 }
14 </style>
15 </div>
16
17 <div metal:fill-slot="main">9 <div metal:fill-slot="main">
18 <div id="language_packs">10 <div id="language_packs">
1911
@@ -39,41 +31,86 @@
39 </p>31 </p>
40 </div>32 </div>
41 <div class="yui-g">33 <div class="yui-g">
42 <div class="yui-u first portlet">34 <div class="yui-u first portlet" id="active-language-packs">
43 <h2>Active language packs</h2>35 <h2>Active language packs</h2>
44 <dl>36 <dl>
45 <dt>37 <dt>
46 Base pack:38 Base pack:
47 <a tal:condition="context/language_pack_base"39 <a class="sprite download"
40 tal:condition="context/language_pack_base"
48 tal:attributes="href context/language_pack_base/file/http_url">41 tal:attributes="href context/language_pack_base/file/http_url">
49 <tal:export-date42 <tal:export-date
50 replace="context/language_pack_base/date_exported/fmt:datetime" />43 replace="context/language_pack_base/date_exported/fmt:datetime" />
51 <img tal:condition="context/language_pack_base"
52 alt="download icon" src="/@@/download" />
53 </a>44 </a>
54 <tal:not-export-date condition="not: context/language_pack_base">45 <tal:not-export-date condition="not: context/language_pack_base">
55 none yet46 none yet
56 </tal:not-export-date>47 </tal:not-export-date>
57 </dt>48 </dt>
58 <dd>A complete set of translations for the OS.</dd>49 <dd>
50 Archive containing a complete set of translations for this
51 operating system.
52 </dd>
59 <dt>53 <dt>
60 Delta pack:54 Update pack:
61 <a tal:condition="context/language_pack_delta"55 <a class="sprite download"
56 tal:condition="context/language_pack_delta"
62 tal:attributes="href context/language_pack_delta/file/http_url">57 tal:attributes="href context/language_pack_delta/file/http_url">
63 <tal:export-date58 <tal:export-date
64 replace="context/language_pack_delta/date_exported/fmt:datetime" />59 replace="context/language_pack_delta/date_exported/fmt:datetime" />
65 <img tal:condition="context/language_pack_delta"
66 alt="download icon" src="/@@/download" />
67 </a>60 </a>
68 <tal:not-export-date condition="not: context/language_pack_delta">61 <tal:not-export-date condition="not: context/language_pack_delta">
69 none yet62 no update
70 </tal:not-export-date>63 </tal:not-export-date>
71 </dt>64 </dt>
72 <dd>Translation updates, applied on top of the base pack.</dd>65 <dd>
66 Archive containing translation updates, applied on top of the
67 base pack.
68 </dd>
73 </dl>69 </dl>
74 </div>70 </div>
71
75 <div class="yui-u">72 <div class="yui-u">
76 <div class="portlet">73 <div>
74 <div id="latest-language-packs" class="portlet">
75 <h2>Latest language packs</h2>
76 <dl>
77 <dt>
78 Base pack:
79 <a class="sprite download"
80 tal:condition="view/have_latest_full_pack"
81 tal:attributes="href context/menu:navigation/latest_full_language_pack/url">
82 <tal:export-date
83 replace="context/last_full_language_pack_exported/date_exported/fmt:datetime" />
84 </a>
85 <tal:not-export-date
86 condition="not: view/have_latest_full_pack">
87 none yet
88 </tal:not-export-date>
89 </dt>
90 <dd>
91 Latest archive containing a complete set of translations for
92 this operating system.
93 </dd>
94 <dt>
95 Update pack:
96 <a class="sprite download"
97 tal:condition="view/have_latest_delta_pack"
98 tal:attributes="href context/menu:navigation/latest_delta_language_pack/url">
99 <tal:export-date
100 replace="context/last_delta_language_pack_exported/date_exported/fmt:datetime" />
101 </a>
102 <tal:not-export-date
103 condition="not: view/have_latest_delta_pack">
104 no update
105 </tal:not-export-date>
106 </dt>
107 <dd>
108 Latest archive containing translation updates, applied on top
109 of the base pack.
110 </dd>
111 </dl>
112 </div>
113 <div id="testing-language-packs">
77 <h2>Language pack being tested</h2>114 <h2>Language pack being tested</h2>
78 <dl tal:condition="context/language_pack_proposed">115 <dl tal:condition="context/language_pack_proposed">
79 <dt>116 <dt>
@@ -96,14 +133,14 @@
96 <p tal:condition="not:context/language_pack_proposed">133 <p tal:condition="not:context/language_pack_proposed">
97 No pack is being tested right now.134 No pack is being tested right now.
98 </p>135 </p>
136 </div>
99 </div>137 </div>
100 </div>138 </div>
101 </div>139 </div>
102140
103 <div class="yui-g">141 <div class="yui-g">
104 <div class="yui-u first portlet" tal:condition="view/is_admin">142 <div class="yui-u first portlet" tal:condition="view/is_admin">
105 <h2 class="adminlabel"143 <h2 tal:content="view/adminlabel">Language pack settings</h2>
106 tal:content="view/adminlabel">Language pack settings</h2>
107 <div metal:use-macro="context/@@launchpad_form/form"> </div>144 <div metal:use-macro="context/@@launchpad_form/form"> </div>
108 </div>145 </div>
109 <div class="yui-u" tal:condition="view/unused_language_packs">146 <div class="yui-u" tal:condition="view/unused_language_packs">
110147
=== modified file 'lib/lp/translations/templates/distroseries-translations.pt'
--- lib/lp/translations/templates/distroseries-translations.pt 2009-12-16 15:21:36 +0000
+++ lib/lp/translations/templates/distroseries-translations.pt 2010-04-27 22:26:15 +0000
@@ -99,13 +99,12 @@
99 context/distribution/@@+language-pack-admin-info" />99 context/distribution/@@+language-pack-admin-info" />
100100
101 <div>101 <div>
102 <strong>Current base pack:</strong>102 <strong>Base pack:</strong>
103 <a tal:condition="context/language_pack_base"103 <a class="sprite download"
104 tal:condition="context/language_pack_base"
104 tal:attributes="href context/language_pack_base/file/http_url">105 tal:attributes="href context/language_pack_base/file/http_url">
105 <tal:export-date106 <tal:export-date
106 replace="context/language_pack_base/date_exported/fmt:datetime" />107 replace="context/language_pack_base/date_exported/fmt:datetime" />
107 <img tal:condition="context/language_pack_base"
108 alt="download icon" src="/@@/download" />
109 </a>108 </a>
110 <tal:not-export-date condition="not: context/language_pack_base">109 <tal:not-export-date condition="not: context/language_pack_base">
111 none yet110 none yet
@@ -113,15 +112,14 @@
113 </div>112 </div>
114 <div>113 <div>
115 <strong>Update pack:</strong>114 <strong>Update pack:</strong>
116 <a tal:condition="context/language_pack_delta"115 <a class="sprite download"
116 tal:condition="context/language_pack_delta"
117 tal:attributes="href context/language_pack_delta/file/http_url">117 tal:attributes="href context/language_pack_delta/file/http_url">
118 <tal:export-date118 <tal:export-date
119 replace="context/language_pack_delta/date_exported/fmt:datetime" />119 replace="context/language_pack_delta/date_exported/fmt:datetime" />
120 <img tal:condition="context/language_pack_delta"
121 alt="download icon" src="/@@/download" />
122 </a>120 </a>
123 <tal:not-export-date condition="not: context/language_pack_delta">121 <tal:not-export-date condition="not: context/language_pack_delta">
124 none yet122 no update
125 </tal:not-export-date>123 </tal:not-export-date>
126 </div>124 </div>
127 <p>125 <p>

Subscribers

People subscribed via source and target branches

to status/vote changes: