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 $http = $injector.get('$http');
var $q = $injector.get('$q'); var $q = $injector.get('$q');
var cacheService = $injector.get('cacheService'); var cacheService = $injector.get('cacheService');
var languageService = $injector.get('languageService');
/** /**
* Satisfies a translation request for the given key by searching for the * 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; 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 // Attempt to retrieve language
$http({ $http({
cache : cacheService.languages, cache : cacheService.languages,
@@ -74,10 +97,14 @@ angular.module('locale').factory('translationLoader', ['$injector', function tra
deferred.resolve(translation); deferred.resolve(translation);
}) })
// Retry with remaining languages if translation file could not be retrieved // Retry with remaining languages if translation file could not be
.error(function translationFileUnretrievable() { // retrieved
satisfyTranslation(deferred, requestedKey, remainingKeys); .error(tryNextTranslation);
});
})
// Retry with remaining languages if translation does not exist
.error(tryNextTranslation);
}; };