resolveForFallbackLanguage = function (fallbackLanguageIndex, translationId, interpolateParams, Interpolator) {
        var deferred = $q.defer();

        if (fallbackLanguageIndex < $fallbackLanguage.length) {
          var langKey = $fallbackLanguage[fallbackLanguageIndex];
          getFallbackTranslation(langKey, translationId, interpolateParams, Interpolator).then(
            deferred.resolve,
            function () {
              // Look in the next fallback language for a translation.
              // It delays the resolving by passing another promise to resolve.
              resolveForFallbackLanguage(fallbackLanguageIndex + 1, translationId, interpolateParams, Interpolator).then(deferred.resolve);
            }
          );
        } else {
          // No translation found in any fallback language
          deferred.resolve(translateByHandler(translationId));
        }
        return deferred.promise;
      }
@name resolveForFallbackLanguage
@private

Recursive helper function for fallbackTranslation that will sequentially look
for a translation in the fallbackLanguages starting with fallbackLanguageIndex.

@param fallbackLanguageIndex
@param translationId
@param interpolateParams
@param Interpolator
@returns {Q.promise} Promise that will resolve to the translation.