Top-level blueprint: Translations and Codehosting integration
Details here are based on an integration call between Translations team and Aaron Bentley and Tim Penhey from code-hosting team, and further discussed in an estimation call inside the Translation team.
Historical specification at https://launchpad.canonical.com/RosettaTranslatesBranch
Template import
https://blueprints.edge.launchpad.net/rosetta/+spec/import-templates-from-branch
This has been implemented in Launchpad 2.2.3, see Tutorial
Cost: 9
UI to select options for the sync: database patch, new LaunchpadForm (cost 3)
Branch job script to handle a branch (cost 3)
- gets branch ID from branch scanner
- find branch in Launchpad, check if it's the one that needs import (what productseries a branch is related to)
- scanning the branch, finding POT files
- putting those into import queue
Auto-approve simple cases (cost 3)
- No templates yet in the database
- Single template in the branch and in the database
- Refactoring to be reusable
- Notes: testing — pagetests for UI, unit tests for each of the steps
PO file import
https://blueprints.edge.launchpad.net/rosetta/+spec/import-translations-from-branch
Cost: 1
- extend UI options
- adapt the scanner to look for pofiles as well and put them into a queue
Commit PO files to a branch
https://blueprints.edge.launchpad.net/rosetta/+spec/commit-translations-to-branch
Cost: 8
UI to set ProductSeries.translation_branch: db patch, branch picker for branches maintainer is allowed to push to (permissions) (cost 3)
Export translations and put them into a branch: (cost 4)
- Export it
- Get a branch
- Commit to it (overwriting files), careful with filenames and paths
- Use same directory as the potemplate.path, normalize everything else
- Allow loganberry/forster access to bazaar branch storage (to be able to commit) (cost 1)
Features to implement in the future
Automatic POT regeneration — automatically regenerate POT files in Bazaar branches hosted in Launchpad if they follow certain rules (eg. intltool/gettext module layout)