SoC crowdsourcing translations

From GeeklogWiki
Revision as of 15:26, 29 March 2013 by Dirk (talk | contribs) (new idea: crowdsourcing translations; credit: Wim Niemans)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search
(This is an idea page for the Google Summer of Code)

Introduction

Geeklog has been translated into over 30 languages, but many of those translations haven't been updated in a while. The current way of editing PHP file is just too awkward, error prone, and not very intuitive (since you can't see the context in which a text string is used).


Incentive

We're looking for a way to make translating Geeklog easier, especially for people who do not have a knowledge of PHP. Also, for new translations, the sheer amount of text to translate can be discouraging.

The idea is to address both of these problems by crowdsourcing.


Details

(all of this is based on an idea and concept by Wim Niemans - thanks!)

Basics

The basic idea is to have all the texts and their translations in a database, with all the translated terms in a single row, like a glossary.

Crowd

The crowd comes into play when a user registers who speaks another language and is willing to help with the translation.

  • The user could be shown one term at a time in a block, e.g. in Geeklog's side bar, and asked to translate it or to confirm a translation (for quality assurance).
  • Another option could be to pull all the untranslated text for the current page out of the database and offer it up for translation, similar to what the Jenkins project does (see the "Help us localize this page" option in our Jenkins).
  • Another option could be to combine this with a CAPTCHA (similar to how reCaptcha asks for identification of scanned text, this could ask for translations).

To make this more attractive, all this could even be "gamified", i.e. a user could earn points or privileges by helping with the translation.

Technical Details

Ideally, this should be implemented as a plugin. The admin interface of such a plugin would need options to enable/disable the various option of contributing and also to review and edit (also: delete) the submissions.

Additionally, the plugin would need to be able to

  • pull the current $LANG arrays into the database initially
  • write out language files afterwards

It would need to keep track of which texts have already been translated as well as of alternative translations.

A "translation admin" should be able to see all the translations at once to help decide on a proper translation of a term or phrase. In a sort of "PHP environment", a feature could be added to show the code used around the text to help with context.

Thinking ahead

If this were a plugin, users may want to install it on their own Geeklog site, therefore increasing the chances of finding someone to help with translations. We would then need a way to collect those translations and merge them back into a "master database" or submit them as patches.

Alternatively, the above-mentioned block that asks for a translation could pull the text from the master database remotely and submit the translation back to it.


Level of Difficulty

medium to hard

Things could get very complex depending on which aspects are actually implemented. It's probably best to pick a few reasonable goals and implement those, while keeping future extensions in mind.

Possible mentor: Dirk Haun