Internationalization notes
--------------------------
- apps:
  - use setlocale to parse locale env vars and set to language code
  - use textdomain to set the text domain of their app
  - use bindtextdomain to tie the domain to a locale dir
  - use gettext (possibly disguised as _) to translate in the current domain

- libraries:
  - should only use bindtextdomain to tie a domain to a locale dir
  - use dgettext (possibly disguised as _) to translate from a set domain

- How to make your plug-in code translatable:
  - include <gst/gst-i18n-plugin.h> in all files that mark strings for
    translation, or do the bindtextdomain call
  - in plugin_init, add a block like this:

#ifdef ENABLE_NLS
  GST_DEBUG ("binding text domain %s to locale dir %s", GETTEXT_PACKAGE,
      LOCALEDIR);
  bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR);
#endif /* ENABLE_NLS */

  - mark all strings you want translated for translation by wrapping them in
    _()
  - typically, these are all strings that serve as the message string for a
    GST_ELEMENT_ERROR or _WARNING
  - but it could also consist of any strings that may end up being presented
    to the user (for example mixer track)

Things to watch out for
-----------------------
- forgetting to bindtextdomain is an error that is not always noticeable,
  because:
  - any plugin from the same module being init'd binds the text domain,
    so you may forget it in B, and still have it work because A bound the
    domain
  - without a bindtextdomain call, any domain is bound to the system locale
    dir - so you could still have translations if it happens to be where the
    translations are

- our translations are managed by the Translation Project
  http://www.iro.umontreal.ca/translation/
  They are updated by the release manager for prereleases using
  make download-po
  As the translator project website clearly states, only accept translations
  from the translation project, and direct would-be translators there:
  "It would defeat the purpose of the teams if you were directly accepting PO
   files from individual translators, or were having "contracts" with them. If
   people write to you, wanting to volunteer as translators, direct them to
   translation@iro.umontreal.ca, and the translation coordinator will send them
   appropriate documentation."
