translateElements(elements) {
    if (!elements.length) {
      return Promise.resolve([]);
    }

    const keys = elements.map(this.getKeysForElement);
    return this.formatEntities(keys).then(
      translations => this.applyTranslations(elements, translations)
    );
  }
Translate a DOM element or fragment asynchronously.

Manually trigger the translation (or re-translation) of a DOM fragment.
Use the `data-l10n-id` and `data-l10n-args` attributes to mark up the DOM
with information about which translations to use.  Only elements with
`data-l10n-with` attribute matching this `DOMLocalization`'s name will be
translated.

Returns a `Promise` that gets resolved once the translation is complete.

@param   {DOMFragment} frag - DOMFragment to be translated
@returns {Promise}