GUAC-1345: Do not attempt to retrieve translation files for languages which are not explicitly listed as available by the REST API.

This commit is contained in:
Michael Jumper
2015-10-12 17:11:46 -07:00
parent c57893f5d3
commit 35a828bfb6

View File

@@ -32,6 +32,7 @@ angular.module('locale').factory('translationLoader', ['$injector', function tra
var $http = $injector.get('$http');
var $q = $injector.get('$q');
var cacheService = $injector.get('cacheService');
var languageService = $injector.get('languageService');
/**
* Satisfies a translation request for the given key by searching for the
@@ -62,6 +63,28 @@ angular.module('locale').factory('translationLoader', ['$injector', function tra
return;
}
/**
* Continues trying possible translation files until no possibilities
* exist.
*
* @private
*/
var tryNextTranslation = function tryNextTranslation() {
satisfyTranslation(deferred, requestedKey, remainingKeys);
};
// Retrieve list of supported languages
languageService.getLanguages()
// Attempt to retrieve translation if language is supported
.success(function retrievedLanguages(languages) {
// Skip retrieval if language is not supported
if (!(currentKey in languages)) {
tryNextTranslation();
return;
}
// Attempt to retrieve language
$http({
cache : cacheService.languages,
@@ -74,10 +97,14 @@ angular.module('locale').factory('translationLoader', ['$injector', function tra
deferred.resolve(translation);
})
// Retry with remaining languages if translation file could not be retrieved
.error(function translationFileUnretrievable() {
satisfyTranslation(deferred, requestedKey, remainingKeys);
});
// Retry with remaining languages if translation file could not be
// retrieved
.error(tryNextTranslation);
})
// Retry with remaining languages if translation does not exist
.error(tryNextTranslation);
};