code: function getL10nData(key, args, fallback) {
          var data = gL10nData[key];
          if (!data) {
              console.warn("#" + key + " is undefined.");
              if (!fallback) {
                  return null;
              }
              data = fallback;
          }
  
          /** This is where l10n expressions should be processed.
           * The plan is to support C-style expressions from the l20n project;
           * until then, only two kinds of simple expressions are supported:
           *   {[ index ]} and {{ arguments }}.
           */
          var rv = {};
          for (var prop in data) {
              var str = data[prop];
              str = substIndexes(str, args, key, prop);
              str = substArguments(str, args, key);
              rv[prop] = str;
          }
          return rv;
      }
docs: l10n dictionary functions
   fetch an l10n object, warn if not found, apply `args' if possible