Welcome to Elmo’s documentation!

Elmo is l.m.o, which is l10n.mozilla.org.

Elmo is an infrastructure of web apps that are intended to help the l10n community. Presently, our tools, docs, sites, wikipages, etc., all live in a fairly disorganized, disparate world that we often ask localizers to navigate to get stuff done.

This documentation is about the elmo django application and how it works and why it works like it works.

All code is available here: https://github.com/mozilla/elmo

The production is available here: https://l10n-stage-sj.mozilla.org/

Contents:

Overview

_images/databasediagram_1000x945.png

(image originally from http://people.mozilla.org/~axel/all.svg)

As you can see in this database diagram, Elmo consists of 3 major parts:

Their names imply what they each do and deal with. There are other various tools that aren’t directly part of these major apps but are also important. For example, the privacy app (TODO: figure out whether to bother documenting this).

Basically the whole database model is based around the structure that is used in Mozilla to develop Firefox, Thunderbird, etc. but instead of source code to the running programs, it’s definition files containing translatable strings. An example of a translatable string file can for example look like this:

<!-- Tab context menu -->
<!ENTITY  reloadTab.label                    "Oppdater fane">
<!ENTITY  reloadTab.accesskey                "O">
<!ENTITY  reloadAllTabs.label                "Oppdater alle fanene">
<!ENTITY  reloadAllTabs.accesskey            "d">
<!ENTITY  closeOtherTabs.label               "Lat att andre faner">
<!ENTITY  closeOtherTabs.accesskey           "a">

(this is the Norwegian (nn-NO) source for browser.dtd)

Life

life is the app that defines the most fundamental models of elmo. It basically reflects the state of translation work done and to be done. All other applications depend on this app for interactions.

Let’s delve into some of the key models:

Locale

Key fields:

  • code - e.g. “nn-NO”
  • name - e.g. “Norweigian (Nynorsk)”
  • native - e.g. “Norsk nynorsk”

Every repository and every shipping signoff references a locale. It’s

Changeset

Key fields:

  • revision - e.g. “9b2a99adc05e53cd4010de512f50118594756650”
  • (TODO: any more “key” fields here?)

Shipping

L10nstats

Indices and tables