Merge lp:~ursinha/launchpad/bug-418345-language-index-migration into lp:launchpad

Proposed by Guilherme Salgado
Status: Merged
Merged at revision: not available
Proposed branch: lp:~ursinha/launchpad/bug-418345-language-index-migration
Merge into: lp:launchpad
Diff against target: None lines
To merge this branch: bzr merge lp:~ursinha/launchpad/bug-418345-language-index-migration
Reviewer Review Type Date Requested Status
Guilherme Salgado (community) Approve
Review via email: mp+10857@code.launchpad.net

This proposal supersedes a proposal from 2009-08-28.

To post a comment you must log in.
Revision history for this message
Ursula Junque (ursinha) wrote : Posted in a previous version of this proposal

= Summary =

This branch migrates the template of language-index page to the new format.
The bug that's tracking this change is bug 418345.
It also has a fix for test_translationlinksaggregator, that was relying on the database data order and started to fail.
I've added a 3-line fix for bug 404898, because it wasn't worthy creating a separated branch for it. Besides, the fix is related to the main change here, that's bug 418345.

== Pre-implementation notes ==

It was discussed with rockstar about how to deal with the context menu now, and he said we should now use NavigationMenu instead of ContextMenu. So, considering nothing else in translations was using LanguageContextMenu, I've changed this to inherit NavigationMenu, and renamed it to LanguageNavigationMenu.

== Tests ==

This should test all changes, including a fix for test_translationlinksaggregator:
 bin/test -vvt lp.translations.*

To test specifically the template migration changes:
 bin/test -vvt xx-language

== Demo and Q/A ==

To check the changed pages, go to:
 - https://translations.launchpad.dev/+languages/us
 As a regular user you should see the changed layout.
 As an admin user, you should also be able to see the 'Administer' link as well, in the new format.

= 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/tests/language-views.txt
 lib/lp/translations/browser/language.py
 lib/lp/translations/browser/tests/test_translationlinksaggregator.py
 lib/lp/translations/templates/language-index.pt
 lib/lp/translations/stories/standalone/xx-language.txt
 lib/lp/translations/templates/language-portlet-top-contributors.pt

Revision history for this message
Guilherme Salgado (salgado) wrote : Posted in a previous version of this proposal
Download full text (12.0 KiB)

Hi Ursula,

This looks good, but there are a few stylistic issues that need fixing,
so I'm just giving you some quick feedback, so that you can do these
changes with any other changes that come up during the UI review of
this.

 review needs-fixing

On Fri, 2009-08-28 at 13:15 +0000, Ursula Junque wrote:
> = Summary =
>
> This branch migrates the template of language-index page to the new
> format.
> The bug that's tracking this change is bug 418345.
> It also has a fix for test_translationlinksaggregator, that was
> relying on the database data order and started to fail.
> I've added a 3-line fix for bug 404898, because it wasn't worthy
> creating a separated branch for it. Besides, the fix is related to the
> main change here, that's bug 418345.
>
>
> == Pre-implementation notes ==
>
> It was discussed with rockstar about how to deal with the context menu
> now, and he said we should now use NavigationMenu instead of
> ContextMenu. So, considering nothing else in translations was using
> LanguageContextMenu, I've changed this to inherit NavigationMenu, and
> renamed it to LanguageNavigationMenu.
>
>
> == Tests ==
>
> This should test all changes, including a fix for
> test_translationlinksaggregator:
> bin/test -vvt lp.translations.*
>
> To test specifically the template migration changes:
> bin/test -vvt xx-language
>
>
> == Demo and Q/A ==
>
> To check the changed pages, go to:
> - https://translations.launchpad.dev/+languages/us
> As a regular user you should see the changed layout.
> As an admin user, you should also be able to see the 'Administer'
> link as well, in the new format.

> === modified file 'lib/lp/translations/stories/standalone/xx-language.txt'
> --- lib/lp/translations/stories/standalone/xx-language.txt 2009-07-01 20:45:39 +0000
> +++ lib/lp/translations/stories/standalone/xx-language.txt 2009-08-28 09:10:18 +0000
> @@ -89,15 +89,16 @@
> >>> print browser.url
> http://translations.launchpad.dev/+languages/es
>
> - >>> pluralforms_portlet = find_portlet(browser.contents, 'Plural Forms')
> + >>> pluralforms_portlet = find_portlet(browser.contents, 'Plural forms')
> >>> print pluralforms_portlet
> - <...
> - The amount of plural forms for Spanish is: 2
> + <div ...
> ...
> - And its default plural form expression is:
> + There are 2
> + plural forms for Spanish.

Our test suite runs with the NORMALIZE_WHITESPACE [1] option turned on,
so you can join the two lines above and trim it to make the test a bit
more readable.

[1] http://www.python.org/doc/2.5.2/lib/doctest-options.html

> ...
> <pre>n != 1</pre>
> ...
> + </div>

Why do you want to show that this is inside a <div> now?

>
> >>> translationteams_portlet = find_portlet(
> ... browser.contents, 'Translation teams')
>
> === modified file 'lib/lp/translations/templates/language-index.pt'
> --- lib/lp/translations/templates/language-index.pt 2009-07-17 17:59:07 +0000
> +++ lib/lp/translations/templates/language-index.pt 2009-08-28 10:29:18 +0000
> @@ -3,99 +3,75 @@
> xmlns:tal="http://xml.zope.org/namespaces/tal"
...

review: Needs Fixing
Revision history for this message
Barry Warsaw (barry) wrote : Posted in a previous version of this proposal

The language 'us' gives me a NotFound but 'en' works just fine and the ui looks great. You'll need a second mentat ui review. ui=me*

review: Approve (ui)
Revision history for this message
Ursula Junque (ursinha) wrote : Posted in a previous version of this proposal

> = Summary =
>
> This branch migrates the template of language-index page to the new format.
> The bug that's tracking this change is bug 418345.
> It also has a fix for test_translationlinksaggregator, that was relying on the
> database data order and started to fail.
> I've added a 3-line fix for bug 404898, because it wasn't worthy creating a
> separated branch for it. Besides, the fix is related to the main change here,
> that's bug 418345.
>
>
> == Pre-implementation notes ==
>
> It was discussed with rockstar about how to deal with the context menu now,
> and he said we should now use NavigationMenu instead of ContextMenu. So,
> considering nothing else in translations was using LanguageContextMenu, I've
> changed this to inherit NavigationMenu, and renamed it to
> LanguageNavigationMenu.
>
>
> == Tests ==
>
> This should test all changes, including a fix for
> test_translationlinksaggregator:
> bin/test -vvt lp.translations.*
>
> To test specifically the template migration changes:
> bin/test -vvt xx-language
>
>
> == Demo and Q/A ==
>
> To check the changed pages, go to:
> - https://translations.launchpad.dev/+languages/us

I'm sorry, the correct language is 'en'. This makes the correct link:
 - https://translations.launchpad.dev/+languages/en

> As a regular user you should see the changed layout.
> As an admin user, you should also be able to see the 'Administer' link as
> well, in the new format.
>
>
> = 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/tests/language-views.txt
> lib/lp/translations/browser/language.py
> lib/lp/translations/browser/tests/test_translationlinksaggregator.py
> lib/lp/translations/templates/language-index.pt
> lib/lp/translations/stories/standalone/xx-language.txt
> lib/lp/translations/templates/language-portlet-top-contributors.pt

Revision history for this message
Ursula Junque (ursinha) wrote : Posted in a previous version of this proposal
Download full text (13.0 KiB)

> Hi Ursula,
>
> This looks good, but there are a few stylistic issues that need fixing,
> so I'm just giving you some quick feedback, so that you can do these
> changes with any other changes that come up during the UI review of
> this.
>
> review needs-fixing
>
> On Fri, 2009-08-28 at 13:15 +0000, Ursula Junque wrote:
> > = Summary =
> >
> > This branch migrates the template of language-index page to the new
> > format.
> > The bug that's tracking this change is bug 418345.
> > It also has a fix for test_translationlinksaggregator, that was
> > relying on the database data order and started to fail.
> > I've added a 3-line fix for bug 404898, because it wasn't worthy
> > creating a separated branch for it. Besides, the fix is related to the
> > main change here, that's bug 418345.
> >
> >
> > == Pre-implementation notes ==
> >
> > It was discussed with rockstar about how to deal with the context menu
> > now, and he said we should now use NavigationMenu instead of
> > ContextMenu. So, considering nothing else in translations was using
> > LanguageContextMenu, I've changed this to inherit NavigationMenu, and
> > renamed it to LanguageNavigationMenu.
> >
> >
> > == Tests ==
> >
> > This should test all changes, including a fix for
> > test_translationlinksaggregator:
> > bin/test -vvt lp.translations.*
> >
> > To test specifically the template migration changes:
> > bin/test -vvt xx-language
> >
> >
> > == Demo and Q/A ==
> >
> > To check the changed pages, go to:
> > - https://translations.launchpad.dev/+languages/us
> > As a regular user you should see the changed layout.
> > As an admin user, you should also be able to see the 'Administer'
> > link as well, in the new format.
>
> > === modified file 'lib/lp/translations/stories/standalone/xx-language.txt'
> > --- lib/lp/translations/stories/standalone/xx-language.txt 2009-07-01
> 20:45:39 +0000
> > +++ lib/lp/translations/stories/standalone/xx-language.txt 2009-08-28
> 09:10:18 +0000
> > @@ -89,15 +89,16 @@
> > >>> print browser.url
> > http://translations.launchpad.dev/+languages/es
> >
> > - >>> pluralforms_portlet = find_portlet(browser.contents, 'Plural
> Forms')
> > + >>> pluralforms_portlet = find_portlet(browser.contents, 'Plural
> forms')
> > >>> print pluralforms_portlet
> > - <...
> > - The amount of plural forms for Spanish is: 2
> > + <div ...
> > ...
> > - And its default plural form expression is:
> > + There are 2
> > + plural forms for Spanish.
>
> Our test suite runs with the NORMALIZE_WHITESPACE [1] option turned on,
> so you can join the two lines above and trim it to make the test a bit
> more readable.
>
> [1] http://www.python.org/doc/2.5.2/lib/doctest-options.html

Thanks for the information. Fixed.

>
> > ...
> > <pre>n != 1</pre>
> > ...
> > + </div>
>
> Why do you want to show that this is inside a <div> now?

I didn't, fixed.

>
> >
> > >>> translationteams_portlet = find_portlet(
> > ... browser.contents, 'Translation teams')
> >
> > === modified file 'lib/lp/translations/templates/language-index.pt'
> > --- lib/lp/transla...

review: Needs Resubmitting
Revision history for this message
Edwin Grubbs (edwin-grubbs) wrote : Posted in a previous version of this proposal

ui=me

review: Approve (ui)
Revision history for this message
Guilherme Salgado (salgado) wrote :

with the few changes we discussed on IRC, r=me

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'lib/lp/translations/browser/configure.zcml'
--- lib/lp/translations/browser/configure.zcml 2009-08-25 16:52:31 +0000
+++ lib/lp/translations/browser/configure.zcml 2009-08-28 01:59:32 +0000
@@ -295,7 +295,7 @@
295 module="lp.translations.browser.language"295 module="lp.translations.browser.language"
296 classes="296 classes="
297 LanguageSetContextMenu297 LanguageSetContextMenu
298 LanguageContextMenu"/>298 LanguageNavigationMenu"/>
299 <browser:url299 <browser:url
300 for="canonical.launchpad.interfaces.ILanguage"300 for="canonical.launchpad.interfaces.ILanguage"
301 path_expression="code"301 path_expression="code"
302302
=== modified file 'lib/lp/translations/browser/language.py'
--- lib/lp/translations/browser/language.py 2009-08-24 13:50:42 +0000
+++ lib/lp/translations/browser/language.py 2009-08-28 09:27:25 +0000
@@ -6,7 +6,6 @@
6__metaclass__ = type6__metaclass__ = type
7__all__ = [7__all__ = [
8 'LanguageAddView',8 'LanguageAddView',
9 'LanguageContextMenu',
10 'LanguageAdminView',9 'LanguageAdminView',
11 'LanguageSetContextMenu',10 'LanguageSetContextMenu',
12 'LanguageSetNavigation',11 'LanguageSetNavigation',
@@ -25,7 +24,7 @@
25from lp.translations.browser.translations import TranslationsMixin24from lp.translations.browser.translations import TranslationsMixin
26from canonical.launchpad.webapp import (25from canonical.launchpad.webapp import (
27 GetitemNavigation, LaunchpadView, LaunchpadFormView,26 GetitemNavigation, LaunchpadView, LaunchpadFormView,
28 LaunchpadEditFormView, action, canonical_url, ContextMenu,27 LaunchpadEditFormView, action, canonical_url, ContextMenu, NavigationMenu,
29 enabled_with_permission, Link, custom_widget)28 enabled_with_permission, Link, custom_widget)
3029
31from canonical.widgets import LabeledMultiCheckBoxWidget30from canonical.widgets import LabeledMultiCheckBoxWidget
@@ -44,8 +43,9 @@
44 return Link('+add', text, icon='add')43 return Link('+add', text, icon='add')
4544
4645
47class LanguageContextMenu(ContextMenu):46class LanguageNavigationMenu(NavigationMenu):
48 usedfor = ILanguage47 usedfor = ILanguage
48 facet = 'translations'
49 links = ['administer']49 links = ['administer']
5050
51 @enabled_with_permission('launchpad.Admin')51 @enabled_with_permission('launchpad.Admin')
5252
=== modified file 'lib/lp/translations/browser/tests/language-views.txt'
--- lib/lp/translations/browser/tests/language-views.txt 2009-08-24 13:49:14 +0000
+++ lib/lp/translations/browser/tests/language-views.txt 2009-08-28 06:48:47 +0000
@@ -10,25 +10,25 @@
1010
11 >>> language_set = getUtility(ILanguageSet)11 >>> language_set = getUtility(ILanguageSet)
12 >>> language = language_set.getLanguageByCode('pt_BR')12 >>> language = language_set.getLanguageByCode('pt_BR')
13 >>> language_view = create_view(13 >>> language_admin_view = create_view(
14 ... language, '+admin', layer=TranslationsLayer)14 ... language, '+admin', layer=TranslationsLayer)
15 >>> language_view.initialize()15 >>> language_admin_view.initialize()
1616
17The language +admin view provides a label and a page_title for the page.17The language +admin view provides a label and a page_title for the page.
1818
19 >>> print language_view.label19 >>> print language_admin_view.label
20 Edit Portuguese (Brazil) in Launchpad20 Edit Portuguese (Brazil) in Launchpad
2121
22 >>> print language_view.page_title22 >>> print language_admin_view.page_title
23 Edit Portuguese (Brazil) (pt_BR)23 Edit Portuguese (Brazil) (pt_BR)
2424
25The view provides also a cancel_url and a next_url, but they're the same because25The view provides also a cancel_url and a next_url, but they're the same because
26the previous and next steps of editing a language are returning to its index.26the previous and next steps of editing a language are returning to its index.
2727
28 >>> print language_view.cancel_url28 >>> print language_admin_view.cancel_url
29 http://translations.launchpad.dev/+languages/pt_BR29 http://translations.launchpad.dev/+languages/pt_BR
3030
31 >>> print language_view.next_url31 >>> print language_admin_view.next_url
32 http://translations.launchpad.dev/+languages/pt_BR32 http://translations.launchpad.dev/+languages/pt_BR
3333
3434
@@ -73,4 +73,3 @@
73 >>> print language_add_view.next_url73 >>> print language_add_view.next_url
74 http://translations.launchpad.dev/+languages/lp_US74 http://translations.launchpad.dev/+languages/lp_US
7575
76
7776
=== modified file 'lib/lp/translations/browser/tests/test_translationlinksaggregator.py'
--- lib/lp/translations/browser/tests/test_translationlinksaggregator.py 2009-08-25 10:35:29 +0000
+++ lib/lp/translations/browser/tests/test_translationlinksaggregator.py 2009-08-28 08:01:51 +0000
@@ -224,7 +224,7 @@
224 (product, canonical_url(product_pofile), [product_pofile]),224 (product, canonical_url(product_pofile), [product_pofile]),
225 (package, canonical_url(package_pofile), [package_pofile]),225 (package, canonical_url(package_pofile), [package_pofile]),
226 ]226 ]
227 self.assertEqual(expected, descriptions)227 self.assertContentEqual(expected, descriptions)
228228
229 def test_aggregate_bundles_productseries(self):229 def test_aggregate_bundles_productseries(self):
230 # _aggregateTranslationTargets describes POFiles for the same230 # _aggregateTranslationTargets describes POFiles for the same
231231
=== modified file 'lib/lp/translations/stories/standalone/xx-language.txt'
--- lib/lp/translations/stories/standalone/xx-language.txt 2009-07-01 20:45:39 +0000
+++ lib/lp/translations/stories/standalone/xx-language.txt 2009-08-28 15:43:29 +0000
@@ -89,12 +89,11 @@
89 >>> print browser.url89 >>> print browser.url
90 http://translations.launchpad.dev/+languages/es90 http://translations.launchpad.dev/+languages/es
9191
92 >>> pluralforms_portlet = find_portlet(browser.contents, 'Plural Forms')92 >>> pluralforms_portlet = find_portlet(browser.contents, 'Plural forms')
93 >>> print pluralforms_portlet93 >>> print pluralforms_portlet
94 <...94 <div ...
95 The amount of plural forms for Spanish is: 2
96 ...95 ...
97 And its default plural form expression is:96 There are 2 plural forms for Spanish.
98 ...97 ...
99 <pre>n != 1</pre>98 <pre>n != 1</pre>
100 ...99 ...
101100
=== modified file 'lib/lp/translations/templates/language-index.pt'
--- lib/lp/translations/templates/language-index.pt 2009-07-17 17:59:07 +0000
+++ lib/lp/translations/templates/language-index.pt 2009-08-28 15:42:38 +0000
@@ -3,39 +3,12 @@
3 xmlns:tal="http://xml.zope.org/namespaces/tal"3 xmlns:tal="http://xml.zope.org/namespaces/tal"
4 xmlns:metal="http://xml.zope.org/namespaces/metal"4 xmlns:metal="http://xml.zope.org/namespaces/metal"
5 xmlns:i18n="http://xml.zope.org/namespaces/i18n"5 xmlns:i18n="http://xml.zope.org/namespaces/i18n"
6 xml:lang="en"
7 lang="en"
8 dir="ltr"
9 metal:use-macro="context/@@main_template/master"
10 i18n:domain="launchpad"6 i18n:domain="launchpad"
7 metal:use-macro="view/macro:page/main_side"
11>8>
12 <body>9<body>
13 <metal:leftportlets fill-slot="portlets_one">10 <h1 metal:fill-slot="heading">
14 <div tal:replace="structure context/@@+portlet-details" />11 Overview of
15 </metal:leftportlets>
16
17 <div metal:fill-slot="help">
18 <p>
19 Here you see the information we have available about this language.
20 </p>
21
22 <p>
23 If you see anything wrong with this information, please see whether it's
24 already been brought up in the
25 <a tal:attributes="href view/answers_url">Answers</a> application.
26 If not, please file a question there.
27 </p>
28
29 <ul class="info">
30 <li>
31 <a href="https://help.launchpad.net/RosettaFAQ"
32 >Frequently asked questions</a>
33 </li>
34 </ul>
35 </div>
36
37 <div metal:fill-slot="main">
38 <h1>Overview of
39 <tal:has_nativename condition="context/nativename">12 <tal:has_nativename condition="context/nativename">
40 <tal:nativename replace="context/nativename">13 <tal:nativename replace="context/nativename">
41 Espa&ntilde;ol14 Espa&ntilde;ol
@@ -43,47 +16,41 @@
43 </tal:has_nativename>16 </tal:has_nativename>
44 <tal:englishname replace="context/englishname">Spain</tal:englishname>17 <tal:englishname replace="context/englishname">Spain</tal:englishname>
45 <tal:has_nativename condition="context/nativename">)</tal:has_nativename>18 <tal:has_nativename condition="context/nativename">)</tal:has_nativename>
46 in Launchpad.19 in Launchpad
47 </h1>20 </h1>
4821
49 <tal:not-visible condition="not:context/visible">22 <tal:side metal:fill-slot="side">
50 This language is not usually displayed in lists of languages. You will23 <div tal:replace="structure context/@@+global-actions" />
51 have to select it specially in your <a href="/+editmylanguages">language24 <div tal:replace="structure context/@@+portlet-details" />
52 preferences</a> in order to see it.25 </tal:side>
53 </tal:not-visible>26
5427
55 <div class="left">28 <tal:main metal:fill-slot="main">
56 <div class="section">29 <div class="yui-g">
30 <div class="yui-u first">
57 <div class="portlet">31 <div class="portlet">
58 <h2>Plural Forms</h2>32 <h2>Plural forms</h2>
59 <p>
60 When translating into this language, you need to be able to
61 express plural forms effectively. The plural form expression tells
62 the translation system when to use each plural form. For example,
63 some languages express the idea of "zero objects" differently to
64 "one object" or "more than ten objects". In these cases, the
65 plural form expression captures the information needed to know
66 which form to use based on the number in question.
67 </p>
68 <tal:has_pluralforms condition="context/pluralexpression">33 <tal:has_pluralforms condition="context/pluralexpression">
69 <p>34 <p>
70 The amount of plural forms for35 There are <tal:pluralforms replace="context/pluralforms">2</tal:pluralforms>
71 <tal:language replace="view/language_name">36 plural forms for <tal:language replace="view/language_name">Espa&ntilde;ol</tal:language>.
72 Espa&ntilde;ol37 </p>
73 </tal:language>38 <p>
74 is:39 The default plural form expression for <tal:language replace="view/language_name">Espa&ntilde;ol</tal:language> is:
75 <tal:pluralforms replace="context/pluralforms">
76 2
77 </tal:pluralforms>
78 </p>
79 <p>
80 And its default plural form expression is:
81 </p>
82 <p>
83 <pre tal:content="context/pluralexpression">40 <pre tal:content="context/pluralexpression">
84 n != 141 n != 1
85 </pre>42 </pre>
86 </p>43 </p>
44 <p></p>
45 <p>
46 When translating into this language, you need to be able to
47 express plural forms effectively. The plural form expression tells
48 the translation system when to use each plural form. For example,
49 some languages express the idea of "zero objects" differently to
50 "one object" or "more than ten objects". In these cases, the
51 plural form expression captures the information needed to know
52 which form to use based on the number in question.
53 </p>
87 </tal:has_pluralforms>54 </tal:has_pluralforms>
88 <tal:has_not_pluralforms condition="not:context/pluralexpression">55 <tal:has_not_pluralforms condition="not:context/pluralexpression">
89 <p class="helpwanted">56 <p class="helpwanted">
@@ -95,7 +62,14 @@
95 </tal:has_not_pluralforms>62 </tal:has_not_pluralforms>
96 </div>63 </div>
97 </div>64 </div>
98 <div class="section">65
66 <div class="yui-u">
67 <div tal:content="structure context/@@+portlet-top-contributors" />
68 </div>
69 </div>
70
71 <div class="yui-g">
72 <div class="first yui-u">
99 <div class="portlet">73 <div class="portlet">
100 <h2>Translation teams</h2>74 <h2>Translation teams</h2>
101 <p tal:condition="view/translation_teams">75 <p tal:condition="view/translation_teams">
@@ -110,25 +84,25 @@
110 <tr tal:repeat="expert_info view/translation_teams">84 <tr tal:repeat="expert_info view/translation_teams">
111 <td>85 <td>
112 <img tal:condition="expert_info/expert/isTeam"86 <img tal:condition="expert_info/expert/isTeam"
113 src="/@@/team" />87 src="/@@/team" />
114 <img tal:condition="not:expert_info/expert/isTeam"88 <img tal:condition="not:expert_info/expert/isTeam"
115 src="/@@/person" />89 src="/@@/person" />
116 </td>90 </td>
117 <td>91 <td>
118 <div>92 <div>
119 <a93 <a
120 tal:attributes="94 tal:attributes="
121 href expert_info/expert/fmt:url;95 href expert_info/expert/fmt:url;
122 title expert_info/expert/displayname/fmt:shorten/80"96 title expert_info/expert/displayname/fmt:shorten/80"
123 tal:content="expert_info/expert/displayname"97 tal:content="expert_info/expert/displayname"
124 >Expert name</a>(98 >Expert name</a>(
125 <tal:groups repeat="group expert_info/groups">99 <tal:groups repeat="group expert_info/groups">
126 <a tal:attributes="100 <a tal:attributes="
127 href group/fmt:url;101 href group/fmt:url;
128 title group/title/fmt:shorten/80"102 title group/title/fmt:shorten/80"
129 tal:content="group/title"103 tal:content="group/title"
130 >Translation group title</a>104 >Translation group title</a>
131 </tal:groups>)105 </tal:groups>)
132 </div>106 </div>
133 </td>107 </td>
134 </tr>108 </tr>
@@ -141,9 +115,8 @@
141 </p>115 </p>
142 </div>116 </div>
143 </div>117 </div>
144 </div>118
145 <div class="right">119 <div class="yui-u">
146 <div class="section">
147 <div class="portlet">120 <div class="portlet">
148 <h2>Countries</h2>121 <h2>Countries</h2>
149 <tal:has_countries condition="context/countries">122 <tal:has_countries condition="context/countries">
@@ -151,29 +124,31 @@
151 <tal:language replace="view/language_name">124 <tal:language replace="view/language_name">
152 Espa&ntilde;ol125 Espa&ntilde;ol
153 </tal:language>126 </tal:language>
154 is registered as being spoken in the following countries:127 is registered as being spoken in the following countries:
155 </p>128 </p>
156 <ul>129 <ul>
157 <li tal:repeat="country context/countries"130 <li tal:repeat="country context/countries"
158 tal:content="country/name">Spain</li>131 tal:content="country/name">Spain</li>
159 </ul>132 </ul>
160 </tal:has_countries>133 </tal:has_countries>
161 <tal:has_not_countries condition="not:context/countries">134 <tal:has_not_countries condition="not:context/countries">
162 <p class="helpwanted">135 <p class="helpwanted">
163 <tal:language replace="view/language_name">136 <tal:language replace="view/language_name">
164 Espa&ntilde;ol137 Espa&ntilde;ol
165 </tal:language>138 </tal:language>
166 is not registered as being spoken in any country. If you know139 is not registered as being spoken in any country. If you know
167 about a country that officially speaks this language, please140 about a country that officially speaks this language, please
168 open a <a href="/rosetta/+addticket">ticket</a> with that141 open a <a href="/rosetta/+addticket">ticket</a> with that
169 information, so we can add it to Launchpad.142 information, so we can add it to Launchpad.
170 </p>143 </p>
171 </tal:has_not_countries>144 </tal:has_not_countries>
172 </div>145 </div>
173 </div>146 </div>
174 <div class="section"147
175 tal:content="structure context/@@+portlet-top-contributors" />
176 </div>148 </div>
177 </div>149
178 </body>150 </tal:main>
151
152
153</body>
179</html>154</html>
180155
=== modified file 'lib/lp/translations/templates/language-portlet-top-contributors.pt'
--- lib/lp/translations/templates/language-portlet-top-contributors.pt 2009-07-17 17:59:07 +0000
+++ lib/lp/translations/templates/language-portlet-top-contributors.pt 2009-08-28 15:40:27 +0000
@@ -13,10 +13,9 @@
13 Espa&ntilde;ol13 Espa&ntilde;ol
14 </tal:language_name>:14 </tal:language_name>:
15 </p>15 </p>
16 <ul class="person">16 <ul>
17 <li tal:repeat="contributor view/getTopContributors">17 <li tal:repeat="contributor view/getTopContributors">
18 <a tal:content="contributor/displayname"18 <a tal:replace="structure contributor/fmt:link">Guilherme Salgado</a>
19 tal:attributes="href contributor/fmt:url">Guilherme Salgado</a>
20 </li>19 </li>
21 </ul>20 </ul>
22 </div>21 </div>