The Worldwide Lexicon ([login to view URL]) is a collaborative translation memory that combines inputs from professional, volunteer and machine translation services to make a website multilingual (and optionally translatable by its users).
We are looking for a Movable Type developer to build a plugin that injects translations into pages as they are served. We have a simple web API ([login to view URL]) and are rolling out wrapper libraries for popular programming languages ([login to view URL] )
This project is to develop a translatable blog about medical and public health news and commentary for a non profit based in San Francisco. The project involves the following tasks:
1. help us modify the default community blog template in MT (nothing fancy, just a decent looking layout for a professional site)
2. build a translation plug in that uses the web API to get and submit translations (with caching to enhance rendering speed).
3. implement a lightweight Javascript popup editor that is triggered on mousing over a translation so users can edit it.
Full specs provided in the supporting documentation.
## Deliverables
The translation plugin should be an easy to deploy module that enables WWL translation services. It will perform the following tasks as a page is rendered. 1. check user language preference, look for a cookie named tl, and if that is not present, look at Accept-Language header to detect user's preferred language 2. check source document language via xml:lang header, if present, or use site default from config setting 3. if languages are different, enable translation mode 4. for each text in the page, check to see if a translation is in memcached, if yes, use it. 5. then check to see if a translation is available via gettext, if yes, use it and memcache it 6. then call the [login to view URL] API to request the best available translation, cache it and use it 7. if no translation is available, use the source text. 8. if user edits are allowed, insert snippet of Javascript to trigger popup editor on mouseover. 9. if user edits a translation or scores it, it submits a form to a script on the server that makes an allow/deny decision, and if allowed, echoes the form to [login to view URL] or [login to view URL] The site owner can set a number of policies, including: 1. list of supported languages to translate to 2. default source language(s) 3. define which roles are allowed to edit translations for various languages, set per language 4. WWL servers to use for professional, volunteer or machine translations (default is to use [login to view URL] for all) 5. optionally include user credentials for a translation agency for a specific language (e.g. when translating to German, use speaklike for professional translation) 6. default query settings when requesting translations, set per language (e.g. allow_machine=y/n, allow_anonymous=y/n, min_score=0..5 ) so site owner can adjust policies as desired 7. color code translations by type and quality with background shading 8. memcached time to live That's basically it. The web API is well documented at [login to view URL] and you should be able to do this using the /t /submit and /scores/vote interfaces.