User:Wenzel/Jetpack:L10n Webapp Specs: Difference between revisions
Jump to navigation
Jump to search
(initial specs) |
No edit summary |
||
| Line 18: | Line 18: | ||
The primary UI is the localization view which should allow for easy entity localization with ability to look at where the entity is used (i.e., in what Jetpacks and in what locations therein) and how other locales localized it. | The primary UI is the localization view which should allow for easy entity localization with ability to look at where the entity is used (i.e., in what Jetpacks and in what locations therein) and how other locales localized it. | ||
== Project Outline == | == Project Outline, 1st iteration == | ||
=== | === General Points === | ||
L10n will eventually live inside Flightdeck or AMO, therefore: | |||
* Django project | |||
* Use or allow for virtualenv and pip, and deployment through mod_wsgi (cf. [http://jbalogh.github.com/zamboni/ AMO docs]) | |||
* | * Use a MySQL database. When evolving the database, use migrations (you may use South if you prefer, but [http://github.com/jbalogh/schematic/ schematic] is much simpler). | ||
=== String Extraction === | |||
* Extract gettext-like strings from jetpacks, track them in the database, including which jetpack they come from and what lines they are used in. | |||
=== User registration/rights === | |||
* Allow user signup/login, but keep things simple | |||
** Use Django's admin pages for admin-only actions | |||
* Distinguish between: | |||
** anonymous users (read only) | |||
** unknown contributors (suggestions only) | |||
** registered localizers (can translate by themselves, or approve/deny suggestions) | |||
** admins | |||
* may borrow from [http://github.com/jbalogh/zamboni/tree/master/apps/access/ AMO's ACL app] ([http://jbalogh.github.com/zamboni/topics/acl/ docs]) for that | |||
=== Translation UI === | |||
* Present user interface for per-string translation | |||
* Allow for reasonable filtering (by add-on, untranslated strings only, etc.), sorting by popularity (frequency of use in all jetpacks) | |||
* Add translated strings to common translation pool | |||
* When not-yet-translated jetpacks use strings that exist in the pool, assume the translations in the pool are the right translations for these strings | |||
* Allow exceptions from this rule, i.e.: | |||
** By default, a new jetpack uses the translation from the pool | |||
** User can change that string's translation for the whole jetpack (all occurrences) | |||
** or just for a single occurrence in that jetpack (i.e., "only hello.js:20") | |||
** User can return to the default. | |||
=== Proof of Concept === | |||
Gandalf made [http://hg.mozilla.org/users/zbraniecki_mozilla.com/gandalf-packages/file/tip/packages/l10n/python-lib/l10njetpacksite a simple POC of the server] that can give some ideas. | Gandalf made [http://hg.mozilla.org/users/zbraniecki_mozilla.com/gandalf-packages/file/tip/packages/l10n/python-lib/l10njetpacksite a simple POC of the server] that can give some ideas. | ||
== Later Iterations == | |||
APIs, JEP, and L20n capabilities. | APIs, JEP, and L20n capabilities. | ||
Revision as of 17:26, 10 May 2010
These are the specs for the server-side web application part of JEP 113.
Goals
The server side service of Jetpack L10n has two parts:
- A localization interface for jetpacks, offering strings to the user for translation
- A backend API allowing installed jetpacks to retrieve translations
The service is going to allow for:
- extracting entities from jetpacks and collecting them in a database
- allowing for localization of the entities
- allowing for overwriting localizations for specific jetpacks/uses of the entity in jetpack
- covering jetpack-to-server communication and entity synchronization between the local cache of the pool and the server
- it'll provide statistics, history view and some management capabilities for locale owners (like, remove all contributions by selected user)
The primary UI is the localization view which should allow for easy entity localization with ability to look at where the entity is used (i.e., in what Jetpacks and in what locations therein) and how other locales localized it.
Project Outline, 1st iteration
General Points
L10n will eventually live inside Flightdeck or AMO, therefore:
- Django project
- Use or allow for virtualenv and pip, and deployment through mod_wsgi (cf. AMO docs)
- Use a MySQL database. When evolving the database, use migrations (you may use South if you prefer, but schematic is much simpler).
String Extraction
- Extract gettext-like strings from jetpacks, track them in the database, including which jetpack they come from and what lines they are used in.
User registration/rights
- Allow user signup/login, but keep things simple
- Use Django's admin pages for admin-only actions
- Distinguish between:
- anonymous users (read only)
- unknown contributors (suggestions only)
- registered localizers (can translate by themselves, or approve/deny suggestions)
- admins
- may borrow from AMO's ACL app (docs) for that
Translation UI
- Present user interface for per-string translation
- Allow for reasonable filtering (by add-on, untranslated strings only, etc.), sorting by popularity (frequency of use in all jetpacks)
- Add translated strings to common translation pool
- When not-yet-translated jetpacks use strings that exist in the pool, assume the translations in the pool are the right translations for these strings
- Allow exceptions from this rule, i.e.:
- By default, a new jetpack uses the translation from the pool
- User can change that string's translation for the whole jetpack (all occurrences)
- or just for a single occurrence in that jetpack (i.e., "only hello.js:20")
- User can return to the default.
Proof of Concept
Gandalf made a simple POC of the server that can give some ideas.
Later Iterations
APIs, JEP, and L20n capabilities.