Internationalization of Launchpad Answers

Registered by David Planella

We'd like to have an open discussion about the scope of work and the steps involved in enabling internationalization and localization of the Launchpad Answers application's web UI.

This is a feature that has been requested multiple times by LoCo teams. It is not in the current Launchpad Roadmap, but we'd welcome and help anyone willing to implement it and enable everyone to use the Answers UI in their own language.

This effort could then be used as the ground work to internationalize other Launchpad apps, such as Translations.

Blueprint information

Status:
Not started
Approver:
Jono Bacon
Priority:
Undefined
Drafter:
David Planella
Direction:
Needs approval
Assignee:
None
Definition:
New
Series goal:
None
Implementation:
Unknown
Milestone target:
None

Related branches

Sprints

Whiteboard

Previous discussion on launchpad-users:

  https://lists.launchpad.net/launchpad-users/msg05688.html

Previous blueprint:

  https://blueprints.edge.launchpad.net/launchpad-foundations/+spec/launchpad-i18n

Session notes:

Goal: discuss what many LoCo teams have raised — how to localise LP, specifically Answers — and come up with a series of steps that someone from community could follow and deliver

 - i18n_extract process continues to work, it's not run continually
 - rosetta/malone declare their own translation domain (i.e. rosetta instead of domain)
 - many parts of code will need fixing
 - the python code has strings marked for translations (most of it in Answers)
 - templates are not properly structured yet and would probably need most work
 - preferred language is only used by Translations
  - the browser language could be used
 - the intltool route would be quite difficult: it doesn't understand Zope templates
 - The Zope templating system does not understand plurals
  - This could be worked-around in the code, in Answers it would not be as much of a problem
 - The person's language page should also probably be internationalized
 - The way the LP code is structured makes it not that relevant to differentiate between components to scope the work
 - The entry point to LP Answers should also be addressed - launchpad-integration menus
 - Single Sign on should provide the user's preferred locale
 - E-mail templates: no facility to translate e-mails into different languages. Plain text files with python placeholders.

Number of questions (all-time) in Ubuntu by language:
 lang | count
-------+-------
 en | 79644
 es | 2144
 it | 1341
 fr | 1005
 de | 840
 nl | 471
 pt_BR | 320
 ru | 316
 zh_CN | 196
 el | 188
 pt | 151
 sv | 80
 pl | 65
 ar | 60
 nb | 54
 tr | 54
 hu | 50
 ca | 48
 id | 45
 fi | 43
 ro | 25
...

Work items:
Mark strings as translatable int the Launchpad Zope templates: TODO
Check the structure of sentences in the Launchpad code to be translator-friendly: TODO
Make sure POT template generation works in Launchpad's Zope infrastructure with the i18n_extract script: TODO
Make sure localization works in Launchpad itself: TODO
Review directionality of Launchpad pages: TODO
Figure out a way to select a language for the user in Launchpad (get SSO to provide it?): TODO
Set up translations in Launchpad itself as a project and get translations exposed: TODO

(?)

Work Items