Pootle: Difference between revisions

From OLPC
Jump to navigation Jump to search
(→‎Glitches: documenting bug with "suggestions")
(reorganizing)
Line 2: Line 2:
{{OBX team|[[User:RafaelOrtiz|Rafael Ortiz]], [[User:Xavi|Xavi]]|[[User:Alfonsodg|Alfonsodg]]}}
{{OBX team|[[User:RafaelOrtiz|Rafael Ortiz]], [[User:Xavi|Xavi]]|[[User:Alfonsodg|Alfonsodg]]}}
{{olpcboxbottom}}
{{olpcboxbottom}}
{{TOCright}}
These are the notes taken and rough sketches for the processes involved in the [[localization]] effort in order to use [http://www.wordforge.org/drupal/projects/wordforge/tools/pootle '''Pootle'''] as a more liberal l10n platform.


Here's a report of trying to document the ups & downs of installing [http://www.wordforge.org/drupal/projects/wordforge/tools/pootle '''Pootle'''].


There are several scenarios that depend on the roles and their associated responsibilities (ie: translators, coders, administrators, etc). Below we outline the two most important ones from the POV of the [[translators]] that we could classify as either the ''opportunistic translator'' (fixing a typo or translating a few missing strings) and a ''registered translator'' (that is somehow more committed with the whole [[Localization|l10n]] reality).
== Scenarios ==

If we consider that in the ultimate case children will be dealing with code (thus with <tt>gettext</tt>), we want things and processes to be as simple and straight forward as possible, so that in the end anybody will be able to translate. With this in mind, we aim for an environment that will:
* allow anybody to make suggestions,
* allow registered users to make translations, and
* administrators to commit.
If the quality is not satisfactory, we can probably revert to more 'traditional' and bureaucratic structures; or try to develop tools that guarantee or hint appropriately without sacrificing the liberty and agility that will be required by children.

== Basic Scenarios ==


=== Opportunistic translator ===
=== Opportunistic translator ===
Line 11: Line 20:
This user '''just wants to help'''. She/he doesn't want to get tangled in the administrative tasks. The only possible collaboration available is to [[#User permissions|''suggest'']] translations (which will be reviewed by users who have been granted the [[#user permissions|Review permission]] in a particular language).
This user '''just wants to help'''. She/he doesn't want to get tangled in the administrative tasks. The only possible collaboration available is to [[#User permissions|''suggest'']] translations (which will be reviewed by users who have been granted the [[#user permissions|Review permission]] in a particular language).


After '''navigating''' to the [http://democentro.com:81 olpc pootle server] '''project:''' [http://democentro.com:81/projects/olpc olpc] '''language:''' [http://democentro.com:81/es/olpc spanish] to finally reach a '''file''' (ie: [http://democentro.com:81/es/olpc/TamTamSynthLab.master.es.po?translate=1&view=1 '''TamTamSynthLab'''])
; Admin notes : The [[#User permissions|permission]] must be granted on a per-language-project basis.
: Each language may have specific or special characters that are may not be available in the user's keyboard, but can be provided for in the [[#Language]] specification.


The interface will display a series of PO entries (one will have the focus&mdash;if it doesn't, hovering over one will make an 'Edit' link appear that enables it&mdash;showing an entry field, and the following controls:
Assuming '''Project:''' olpc '''Language:''' spanish


{{pending|a picture is worth 1000 words}}
# Heads to [http://democentro.com:81 pootle site]
* Back & ''Skip'' buttons &mdash; jump to the previous or next entry
# Follows the [http://democentro.com:81/projects/olpc olpc project] link
* Copy button &mdash; copies the original (''msgid'') value and continues in edit mode
# Enters the [http://democentro.com:81/es/olpc spanish] language section
* '''Suggest''' button &mdash; the actual '''collaboration''' of suggesting a translation
# Picks a file (ie: [http://democentro.com:81/es/olpc/TamTamSynthLab.master.es.po?translate=1&view=1 TamTamSynthLab] which has fuzzy entries)
* Fuzzy checkbox &mdash; denotes that the suggested translation is/is not 100% trustworthy
#* The interface will display a series of PO entries (one will have the focus&mdash;if it doesn't, hovering over one will make an 'Edit' link appear) that has an entry field, a fuzzy checkbox and the following action buttons:
* Special characters specific to the language (see [[#Languages]])
#** Back &mdash; goes back to the previous entry
#** ''Skip'' &mdash; skips to the next entry (default action)
* ''grow / shrink'' &mdash; allows growing and shrinking of the entry field (see [[#User options]]
* Translator comments field &mdash; comments either extracted from the source code, or added by other translators
#** Copy &mdash; copies the 'msgid' value (continues in edit mode)
The opportunistic translator then proceeds to navigate the file/s entering suggestions (to be processed later by the [[#User permissions|reviewers]]).
#** '''Suggest''' &mdash; the actual '''collaboration'''

#** Fuzzy &mdash; denotes that the suggested translation is/is not 100% trustworthy
; Admin notes : The [[#User permissions|<tt>Suggest</tt> permission]] must be granted on a per-language-project basis.
#** Special characters specific to the language (see above for definition)
: Each language may have specific or special characters that are may not be available in the user's keyboard, but can be provided for in the [[#Language]] specification.
#** ''grow / shrink'' &mdash; allows growing and shrinking of the entry field
#** Translator comments &mdash; comments either extracted from the source code, or added by other translators
# The opportunistic translator the navigates the file/s entering suggestions (to be processed later by the [[#User permissions|reviewers]])


=== Registered translator ===
=== Registered translator ===


The ''default'' user permissions {{pending|will/should}} apply to any registered user, which in the out-of-the-box install include: <tt>View, Suggest, Archive & Compile PO files</tt>
The <tt>default</tt> [[#user permissions]] apply to any registered user (unless they are overridden in case-by-case approach). In the out-of-the-box install they include: <tt>View, Suggest, Archive & Compile PO files</tt>


The process is similar to the [[#Opportunistic translator]] with the exception that you have an extra button <tt>[Submit]</tt> that effectively translates the string.
; Admin note : The {{pending|archive is a zip file}}, while the compile is the ability to generate .MO files.

: In the collaborative and low-entry barrier, the {{pending|language/project?}} admin should enable the <tt>''default''</tt> user to actually translate &mdash; <tt>projects | olpc | ''language'' | permissions +Translate</tt>.
; Admin notes : In a collaborative and low-entry-barrier process, the [[#User privileges|administrator/s]] should enable the <tt>''default''</tt> user to actually <tt>translate</tt> &mdash; <tt>projects | olpc | ''language'' | permissions +Translate</tt>.

== User Scenarios ==

=== Register as a translator ===


# Head towards the [http://democentro.com:81/ pootle site]
# Head towards the [http://democentro.com:81/ pootle site]
# Follows the [http://democentro.com:81/register register] link where you enter
# Follows the [http://democentro.com:81/register register] link where you fill the following fields: <tt>Username, Password, Confirm password, Full Name & Email Address</tt>, clicking on the <tt>[Register Account]</tt> button that will send a confirmation message to the email address with the activation code.
# Following the link in the email will activate the newly created account. After which it will ask you to login and take you to your user page.
#* Username

#* Password
=== User options ===
#* Confirm password

#* Full Name
In your user page there's a link to <tt>Change options</tt> that will allow you define some things:
#* Email Address
* '''Projects''' you wish to participate (for the moment only '''olpc''' should be considered a valid option)
# After filling the above, hits the [Register Account] button that will send an email to the entered address with the activation code.
* '''Languages''' you wish to collaborate in. If you don't find your language, as an administrator you can associate it to the project (see [[#Languages]]) or as a mere mortal, you should contact an administrator.
# Following the link in the email with the activation code you confirm its activation.
* {{pending|Other options}} like personal data & translation UI are present.
# Activating will complete the activation & take you to the user page.
After configuring, don't forget to hit the <tt>[Save changes]</tt> button to make them effective, after which you can return to your [[#user page]] by means of the <tt>Home Page</tt> link.
#* Follow the ''Change options'' link to define the projects and languages you want to participate (for the moment '''project:'''''olpc'' & whichever languages noting that they are multiple select lists) hitting the <tt>[Save changes]</tt> button to confirm.

#* {{pending|Other options}} like personal data & translation UI are present.
=== User page ===
#* Return to your user page following the ''Home Page'' link in the ''Option page'' where the appropriate links to the selected projects & languages should appear.
: aka: 'Home', or 'My account' page.
#** Quick links for each language, and under each language, the projects

#*** The language link takes you to the statistics page per project
You can reach your user page following the <tt>Home</tt> or <tt>My account</tt> link (depending on where you are) and it will show the appropriate links to the selected projects grouped by languages:
#*** the project-in-a-language takes you the the statistics page displaying all its files
* The language link takes you to the statistics page per project
Afterwards, the process is similar to the [[#Opportunistic translator]] with the exception that you have an extra button <tt>[Submit]</tt> that effectively translates the string.
* the project-in-a-language link takes you the the statistics page displaying all its files

== Advanced User Scenarios ==


=== Reviewer ===
=== Reviewer ===
Line 68: Line 82:


Regardless of the multiplicity of suggestions, each suggested string will be ''diffed'' with the current string highlighting the changes. It also displays (if available) the name of the user that made the suggestion.
Regardless of the multiplicity of suggestions, each suggested string will be ''diffed'' with the current string highlighting the changes. It also displays (if available) the name of the user that made the suggestion.



=== Editing functions ===
=== Editing functions ===
Line 82: Line 95:
; CSV file : {{pending|explore}}
; CSV file : {{pending|explore}}


=== Administrator ===
== Administrator Scenarios ==


==== Language ====
=== Administration ===


As an administrator, in your home page you have access to the [http://democentro.com:81/admin/ '''Admin page'''] which offers: [http://democentro.com:81/admin/users.html Users], [http://democentro.com:81/admin/languages.html Languages] & [http://democentro.com:81/admin/projects.html Projects]. {{pending|There are other general options}} of yet unknown use and impact.
==== Project ====

==== Site ====

As an administrator, in your home page you have access to the [http://democentro.com:81/admin/ '''Admin page'''] which offers: [http://democentro.com:81/admin/users.html Users], [http://democentro.com:81/admin/languages.html Languages] & [http://democentro.com:81/admin/projects.html Projects]. There are other general options of yet {{pending|unknown use and impact}}


; [http://democentro.com:81/admin/users.html Users] : is a simple interface allowing the manual addition of users, edition of their names & (invisible) passwords (ie: resetting them) and where you can activate, de-activate and remove an user.
; [http://democentro.com:81/admin/users.html Users] : is a simple interface allowing the manual addition of users, edition of their names & (invisible) passwords (ie: resetting them) and where you can activate, de-activate and remove an user.


; [http://democentro.com:81/admin/languages.html Languages] : allows the maintenance of the list of available languages (based on the [[ISO 639]] codes, a descriptive text, special characters (used in the translating UI), defining the number of plurals and its equation.
; [http://democentro.com:81/admin/languages.html Languages] : allows the maintenance of the list of available languages (based on the [[ISO 639]] codes, a descriptive text, [http://translate.sourceforge.net/wiki/pootle/characters special characters] (used in the translating UI), defining the number of plurals and its equation.
: NOTE: I've removed several (traditional) languages trying to limit the list to the core green languages: {{Status green language codes}}. Still pending: {{pending|plural formulas}}.
: NOTE: I've removed several (traditional) languages trying to limit the list to the core green languages: {{Status green language codes}}. Still pending: {{pending|plural formulas}}.


; [http://democentro.com:81/admin/projects.html Projects] : this is the ''initial'' page where things come together. Besides being able to add/remove project ({{pending|what are all the other fields?}} you can follow each project to define the 'enabled languages' for it, and where you can add more languages. {{Pending|how do you '''remove''' a language from a project??}}
; [http://democentro.com:81/admin/projects.html Projects] : this is the ''initial'' page where things come together. Besides being able to add/remove project ({{pending|what are all the other fields?}} you can follow each project to define the 'enabled languages' for it, and where you can add more languages. {{Pending|how do you '''remove''' a language from a project??}}
: This is where you can also {{pending|update from templates&mdash;POTs}}. The ''update from templates'' functionality is {{pending|still not understood}}.
: This is where you can also {{pending|update from templates&mdash;POTs}}. The ''update from templates'' functionality is {{pending|still not understood}}.
: For example, following the [http://democentro.com:81/projects/olpc/admin.html olpc project] link you will find the list of languages. Each language (a link) takes you to the [http://democentro.com:81/es/olpc/admin.html user permissions] in said project-language combination.
: For example, following the [http://democentro.com:81/projects/olpc/admin.html olpc project] link you will find the list of languages. Each language (a link) takes you to the [http://democentro.com:81/es/olpc/admin.html user permissions] in said project-language combination which is where you can specify the set of [[#User permissions]] to be used in it.


== Proving Grounds ==
=== Defining goals ===
: ''see [http://translate.sourceforge.net/wiki/pootle/goals Pootle::Goals]''


=== Assigning translations ===
We are currently testing in an [http://democentro.com:81/ ad-hoc trial site]
: ''see [http://translate.sourceforge.net/wiki/pootle/assigning Pootle::Assigning]''
* [http://democentro.com:81/about.html configuration]
* [http://democentro.com:81/projects/olpc/ olpc project] statistics
*: (PO files were uploaded from fedora&mdash;except spanish, which came from the PO versiona in the wiki)


=== Setting up version control systems ===
{| border=1 cellspacing=0 style="text-align:right"
: ''see [http://translate.sourceforge.net/wiki/pootle/version_control Pootle::Version control]''
|-
! Language !! colspan=2 | Translated !! colspan=2 | Fuzzy !! colspan=2 | Untranslated !! Total !! Diff.Spanish
|-
| [http://democentro.com:81/ar/olpc/ arabic] || 198 || 78% || 7 || 2% || 48 || 18% || 253 || 1425
|-
| [http://democentro.com:81/pt_BR/olpc/ portuguese BR] || 174 || 84% || 12 || 5% || 19 || 9% || 205 || 1473
|-
| [http://democentro.com:81/fr/olpc/ french] || 144 || 67% || 15 || 7% || 53 || 25% || 212 || 1466
|-
| [http://democentro.com:81/pt/olpc/ portuguese] || 12 || 42% || 0 || 0% || 16 || 57% || 28 || 1650
|-
| [http://democentro.com:81/es/olpc/ spanish] || 1336 || 79% || 342 || 20% || 0 || 0% || 1678
|}


=== Defining & using terminology ===
== Observations ==
: ''see [http://translate.sourceforge.net/wiki/pootle/adding_a_terminology_project Pootle::Terminology]''
: ''see [http://translate.sourceforge.net/wiki/pootle/terminology_matching Pootle::Matching]''


=== Taking advantage of translation memory ===
* Casual translators may only 'suggest' translation
: ''see [http://translate.sourceforge.net/wiki/pootle/updatetm Pootle::TM]''
* You can download the PO, so there's no forcing of the on-line UI.
* In the translation interface, fuzzy entries are grayed out and there's a gray vertical line separating the terms


=== User permissions ===
=== User permissions ===
: ''see [http://translate.sourceforge.net/wiki/pootle/permissions Pootle::Permissions]''

Permissions are granted or revoked within a specific language-project pair, and optionally, within that scope, to specific users. This means that the <tt>nobody & default</tt> users have local, instead of global, behaviors.


The following is the list of the available permissions handled by [[Pootle]]. The actual description is a result of observation and deduction (haven't found a specific documentation on them), so they are to be considered with <tt>#, fuzzy</tt> tag...
The following is the list of the available permissions handled by [[Pootle]]. The actual description is a result of observation and deduction (haven't found a specific documentation on them), so they are to be considered with <tt>#, fuzzy</tt> tag...
Line 165: Line 165:
| Allows to approve/reject ''suggestions'' made by users capable of ''suggesting'' translations.
| Allows to approve/reject ''suggestions'' made by users capable of ''suggesting'' translations.
| ''none''
| ''none''
| ''see [[#Reviewer]]''
| {{pending|need to explore}}


|- valign="top"
|- valign="top"
! Archive
! Archive
| Would allow the user to download the whole set of PO files in zip format. Probably those of a language/project.
| Would allow the user to download the a set of PO files in zip format. Probably those of a language/project.
| ''none''
| ''none''
| {{pending|need to explore}}


|- valign="top"
|- valign="top"
Line 198: Line 197:


|}
|}

=== Advanced site administration ===

; Lowering latency through web servers : ''see [http://translate.sourceforge.net/wiki/pootle/apache Pootle::Apache]''
: ''see [http://translate.sourceforge.net/wiki/pootle/nginx Pootle::NginX]''
; Translator statistics : ''see [http://translate.sourceforge.net/wiki/pootle/logstats Pootle::LogStats]
; Configurable logos : ''see [http://translate.sourceforge.net/wiki/pootle/important_changes Pootle::Changes]
; Removing / Renaming files : According to user friedel in [[IRC]]#pootle, you can 'safely' delete a file (and associates&mdash;ie: <tt>xyzzy.es.po.pending</tt>) without much to worry about. This has to be done outside of [[Pootle]].

== Proving Grounds ==

We are currently testing in an [http://democentro.com:81/ ad-hoc trial site]
* [http://democentro.com:81/about.html about the pootle server]
* [http://democentro.com:81/projects/olpc/ olpc project] statistics
*: (PO files were uploaded from fedora&mdash;except spanish, which came from the PO versions in the wiki)

{| border=1 cellspacing=0 style="text-align:right"
|-
! Language !! colspan=2 | Translated !! colspan=2 | Fuzzy !! colspan=2 | Untranslated !! Total !! Diff.Spanish
|-
| [http://democentro.com:81/ar/olpc/ arabic] || 198 || 78% || 7 || 2% || 48 || 18% || 253 || 1425
|-
| [http://democentro.com:81/pt_BR/olpc/ portuguese BR] || 174 || 84% || 12 || 5% || 19 || 9% || 205 || 1473
|-
| [http://democentro.com:81/fr/olpc/ french] || 144 || 67% || 15 || 7% || 53 || 25% || 212 || 1466
|-
| [http://democentro.com:81/pt/olpc/ portuguese] || 12 || 42% || 0 || 0% || 16 || 57% || 28 || 1650
|-
| [http://democentro.com:81/es/olpc/ spanish] || 1336 || 79% || 342 || 20% || 0 || 0% || 1678
|}

== Observations ==

* You can download the PO, so there's no forcing of the on-line UI.
* In the translation interface, fuzzy entries are grayed out and there's a gray vertical line separating the terms


== To Do ==
== To Do ==
Line 203: Line 237:


* Define goals
* Define goals
* Explore the 'suggest' function & review process
* File maintenance: rename, delete files? How is it done? (ie: uploaded a file with a name that has no POT should not be valid&mdash;but I've done it&mdash;so if it was a mistake, how do you undo it?)
* Is there any kind of verification when a PO file is uploaded to ensure the up-to-dateness of the original POT on which it is based? (ie: a PO is loaded but the POT on which it is based is a an older version)
* Is there any kind of verification when a PO file is uploaded to ensure the up-to-dateness of the original POT on which it is based? (ie: a PO is loaded but the POT on which it is based is a an older version)


Line 211: Line 243:
* Interface with GIT &mdash; both on importing POTs & POs from it & exporting POs back to it.
* Interface with GIT &mdash; both on importing POTs & POs from it & exporting POs back to it.
** [http://translate.sourceforge.net/wiki/pootle/version_control Version Control] doc ([http://translate.sourceforge.net/wiki/pootle/configure_version_control_authentication scant doc on configuration])
** [http://translate.sourceforge.net/wiki/pootle/version_control Version Control] doc ([http://translate.sourceforge.net/wiki/pootle/configure_version_control_authentication scant doc on configuration])
** [[User:Alfonsodg|Alfonso]] has patched the server with the git support and installed git in the server. So we should be almost in condition to start testing against dev.laptop.org.
* Verify the registration via email


== Glitches ==
== Glitches ==
Line 217: Line 249:
* Something related to encodings was wrong during the setup
* Something related to encodings was wrong during the setup
*: Alfonso commented several language specs that apparently were iso8859 instead of UTF ??
*: Alfonso commented several language specs that apparently were iso8859 instead of UTF ??
* Haven't found the way to read / load the .POT files using git
* User permits seem a bit awkward (per user, no groups except for 'nobody' & 'default')


=== Bug dealing with Suggestions ===
=== Bug dealing with Suggestions ===
Line 235: Line 265:
== See also ==
== See also ==


* User Guides &mdash; [http://translate.sourceforge.net/wiki/pootle/index#Guides af, cs, de, en, es, eu, fa, fr.
* [http://translate.sourceforge.net/wiki/pootle/admin_guide Administrator guide]
* [http://translate.sourceforge.net/wiki/pootle/site_administrator_s_guide Site administrator guide]
* http://wiki.creativecommons.org/Translating_with_Pootle
* http://wiki.creativecommons.org/Translating_with_Pootle



Revision as of 02:20, 6 October 2007

OlpcProject.png Contact: AlfonsodgRafael Ortiz, Xavi

These are the notes taken and rough sketches for the processes involved in the localization effort in order to use Pootle as a more liberal l10n platform.


There are several scenarios that depend on the roles and their associated responsibilities (ie: translators, coders, administrators, etc). Below we outline the two most important ones from the POV of the translators that we could classify as either the opportunistic translator (fixing a typo or translating a few missing strings) and a registered translator (that is somehow more committed with the whole l10n reality).

If we consider that in the ultimate case children will be dealing with code (thus with gettext), we want things and processes to be as simple and straight forward as possible, so that in the end anybody will be able to translate. With this in mind, we aim for an environment that will:

  • allow anybody to make suggestions,
  • allow registered users to make translations, and
  • administrators to commit.

If the quality is not satisfactory, we can probably revert to more 'traditional' and bureaucratic structures; or try to develop tools that guarantee or hint appropriately without sacrificing the liberty and agility that will be required by children.

Basic Scenarios

Opportunistic translator

This user just wants to help. She/he doesn't want to get tangled in the administrative tasks. The only possible collaboration available is to suggest translations (which will be reviewed by users who have been granted the Review permission in a particular language).

After navigating to the olpc pootle server project: olpc language: spanish to finally reach a file (ie: TamTamSynthLab)

The interface will display a series of PO entries (one will have the focus—if it doesn't, hovering over one will make an 'Edit' link appear that enables it—showing an entry field, and the following controls:

a picture is worth 1000 words

  • Back & Skip buttons — jump to the previous or next entry
  • Copy button — copies the original (msgid) value and continues in edit mode
  • Suggest button — the actual collaboration of suggesting a translation
  • Fuzzy checkbox — denotes that the suggested translation is/is not 100% trustworthy
  • Special characters specific to the language (see #Languages)
  • grow / shrink — allows growing and shrinking of the entry field (see #User options
  • Translator comments field — comments either extracted from the source code, or added by other translators

The opportunistic translator then proceeds to navigate the file/s entering suggestions (to be processed later by the reviewers).

Admin notes
The Suggest permission must be granted on a per-language-project basis.
Each language may have specific or special characters that are may not be available in the user's keyboard, but can be provided for in the #Language specification.

Registered translator

The default #user permissions apply to any registered user (unless they are overridden in case-by-case approach). In the out-of-the-box install they include: View, Suggest, Archive & Compile PO files

The process is similar to the #Opportunistic translator with the exception that you have an extra button [Submit] that effectively translates the string.

Admin notes
In a collaborative and low-entry-barrier process, the administrator/s should enable the default user to actually translateprojects | olpc | language | permissions +Translate.

User Scenarios

Register as a translator

  1. Head towards the pootle site
  2. Follows the register link where you fill the following fields: Username, Password, Confirm password, Full Name & Email Address, clicking on the [Register Account] button that will send a confirmation message to the email address with the activation code.
  3. Following the link in the email will activate the newly created account. After which it will ask you to login and take you to your user page.

User options

In your user page there's a link to Change options that will allow you define some things:

  • Projects you wish to participate (for the moment only olpc should be considered a valid option)
  • Languages you wish to collaborate in. If you don't find your language, as an administrator you can associate it to the project (see #Languages) or as a mere mortal, you should contact an administrator.
  • Other options like personal data & translation UI are present.

After configuring, don't forget to hit the [Save changes] button to make them effective, after which you can return to your #user page by means of the Home Page link.

User page

aka: 'Home', or 'My account' page.

You can reach your user page following the Home or My account link (depending on where you are) and it will show the appropriate links to the selected projects grouped by languages:

  • The language link takes you to the statistics page per project
  • the project-in-a-language link takes you the the statistics page displaying all its files

Advanced User Scenarios

Reviewer

A user who has been granted the Review permission, may accept or reject the suggestions made by users (who must have the Suggest permission). The way to do this is there another? is to go to a language/project combination (ie: spanish-olpc) and follow the Show Editing Functions. Here you have two alternatives: review the whole set of suggestions in the language-project set, or work on the suggestions present in a specific file (ie: all suggestions or TamTamSynthLab suggestions).

Once in the review UI, the reviewer has four options: Accept, Reject, Back or Skip which are self evident, but nevertheless will mention:

Accept
the reviewer translator accepts the suggestion and is registered
Reject
the suggested translation is rejected does that mean erased for the user or the file?
Back
goes to the previous suggestion assume a previous non-accepted/rejected suggestion
Skip
goes to the next available suggestion

In the case where multiple suggestions have been made, each one has its Accept & Reject buttons, while only the last will have the Back & Skip buttons.

Regardless of the multiplicity of suggestions, each suggested string will be diffed with the current string highlighting the changes. It also displays (if available) the name of the user that made the suggestion.

Editing functions

This section of the UI displays on a per-file basis several functionalities that depend on the permissions of the user:

Translate My Strings
enter the translate UI limiting the visibility to those strings assigned to the user. explore
Quick Translate My Strings
same as above, unknown difference. explore
Quick Translate
enter the translate UI over the whole set? explore
Translate All
explore
PO file
used for off-line translators in order to retrieve the whole .PO file.
XLIFF file
used for off-line translators and interfaces to retrieve the whole file in said format. explore
Qt .ts file
explore
CSV file
explore

Administrator Scenarios

Administration

As an administrator, in your home page you have access to the Admin page which offers: Users, Languages & Projects. There are other general options of yet unknown use and impact.

Users
is a simple interface allowing the manual addition of users, edition of their names & (invisible) passwords (ie: resetting them) and where you can activate, de-activate and remove an user.
Languages
allows the maintenance of the list of available languages (based on the ISO 639 codes, a descriptive text, special characters (used in the translating UI), defining the number of plurals and its equation.
NOTE: I've removed several (traditional) languages trying to limit the list to the core green languages: am, ar, en, es, fr, ha, hi, ig, ne, pt, ro, ru, rw, th, ur, & yo. Still pending: plural formulas.
Projects
this is the initial page where things come together. Besides being able to add/remove project (what are all the other fields? you can follow each project to define the 'enabled languages' for it, and where you can add more languages. how do you remove a language from a project??
This is where you can also update from templates—POTs. The update from templates functionality is still not understood.
For example, following the olpc project link you will find the list of languages. Each language (a link) takes you to the user permissions in said project-language combination which is where you can specify the set of #User permissions to be used in it.

Defining goals

see Pootle::Goals

Assigning translations

see Pootle::Assigning

Setting up version control systems

see Pootle::Version control

Defining & using terminology

see Pootle::Terminology
see Pootle::Matching

Taking advantage of translation memory

see Pootle::TM

User permissions

see Pootle::Permissions

Permissions are granted or revoked within a specific language-project pair, and optionally, within that scope, to specific users. This means that the nobody & default users have local, instead of global, behaviors.

The following is the list of the available permissions handled by Pootle. The actual description is a result of observation and deduction (haven't found a specific documentation on them), so they are to be considered with #, fuzzy tag...

Permission Description Default users Comments
View Allows the browsing of the PO files and their translation nobody, default
Suggest Allows to suggest a translation default this should be enabled for nobody if we want to make things simpler for the #Opportunistic translator.
Translate Allows to submit a translation. none By default there are no users allowed to translate forcing the administrator to grant this right—bureaucratic and restrictive.
Overwrite When uploading a PO file, it allows the user to overwrite any existing file (iow, no merge of changes) none Handle with care.
Review Allows to approve/reject suggestions made by users capable of suggesting translations. none see #Reviewer
Archive Would allow the user to download the a set of PO files in zip format. Probably those of a language/project. none
Compile PO files Allows an user to generate / compile the PO into MO files. none It is unknown where the MO files will reside, or how they will be transfered or made available. need to explore
Assign Allows an user to assign files (or chunks of files) amongst users that have been granted the translate permission. none need to explore
Administrate It's granularity is not well defined (or understood): administrate everything (seems like it), or just a project? or just a language? or just a language-in-a-project? none need to explore
Commit The holy grail or point of all this: make a translation available. none Again, the granularity is not well defined or understood. need to explore

Advanced site administration

Lowering latency through web servers
see Pootle::Apache
see Pootle::NginX
Translator statistics
see Pootle::LogStats
Configurable logos
see Pootle::Changes
Removing / Renaming files
According to user friedel in IRC#pootle, you can 'safely' delete a file (and associates—ie: xyzzy.es.po.pending) without much to worry about. This has to be done outside of Pootle.

Proving Grounds

We are currently testing in an ad-hoc trial site

Language Translated Fuzzy Untranslated Total Diff.Spanish
arabic 198 78% 7 2% 48 18% 253 1425
portuguese BR 174 84% 12 5% 19 9% 205 1473
french 144 67% 15 7% 53 25% 212 1466
portuguese 12 42% 0 0% 16 57% 28 1650
spanish 1336 79% 342 20% 0 0% 1678

Observations

  • You can download the PO, so there's no forcing of the on-line UI.
  • In the translation interface, fuzzy entries are grayed out and there's a gray vertical line separating the terms

To Do

Usage

  • Define goals
  • Is there any kind of verification when a PO file is uploaded to ensure the up-to-dateness of the original POT on which it is based? (ie: a PO is loaded but the POT on which it is based is a an older version)

Config

  • Interface with GIT — both on importing POTs & POs from it & exporting POs back to it.

Glitches

  • Something related to encodings was wrong during the setup
    Alfonso commented several language specs that apparently were iso8859 instead of UTF ??

Bug dealing with Suggestions

There seems to be something awry with the suggestions... somehow there seems to be a mismatch between the msgid for which the suggestion was made, and the msgid displayed in the review process. IOW, you suggest foo as a translation of bar, but in the review process it will show it as a suggestion for xyzzy!! review problem!

Talking in IRC#pootle, the following emerged: the mechanism used to associate a given suggestion is based on the #: comments (usually documenting the source code line where the string is located). This mechanism fails when there are more than one strings extracted from the same source line.

Possible solutions & workarounds
the problem is relatively serious as it inhibits the #Opportunistic translator (or any other translator) from making suggestions (as they may get lost).
  • modify the source code to avoid having more than one gettext string per line.
  • modify the POT to avoid duplicate comments (iow, a manual process)
  • disable the suggestions
    • explore the possibility of having the offending POT in another project where suggestions are not allowed (thus avoid reviewers get bitten by it).
  • patch Pootle (or file a bug)

See also