GUAC-1230: Do not rely on loader for fallback. Force fallback within angular-translate by returning an empty translation.

This commit is contained in:
Michael Jumper
2015-07-14 12:54:18 -07:00
parent 30b62f2cfb
commit d60370b2d3
2 changed files with 7 additions and 16 deletions

View File

@@ -30,19 +30,16 @@ angular.module('index').config(['$injector', function($injector) {
var preferenceServiceProvider = $injector.get('preferenceServiceProvider');
// Fallback to US English
var fallbackLanguages = ['en'];
$translateProvider.fallbackLanguage('en');
// Prefer chosen language, use fallback languages if necessary
$translateProvider.fallbackLanguage(fallbackLanguages);
// Prefer chosen language
$translateProvider.preferredLanguage(preferenceServiceProvider.preferences.language);
// Escape any HTML in translation strings
$translateProvider.useSanitizeValueStrategy('escape');
// Load translations via translationLoader service
$translateProvider.useLoader('translationLoader', {
fallbackLanguages : fallbackLanguages
});
$translateProvider.useLoader('translationLoader');
// Provide pluralization, etc. via messageformat.js
$translateProvider.useMessageFormatInterpolation();

View File

@@ -56,9 +56,9 @@ angular.module('locale').factory('translationLoader', ['$injector', function tra
// Get current language key
var currentKey = remainingKeys.shift();
// If no languages to try, just fail
// If no languages to try, "succeed" with an empty translation (force fallback)
if (!currentKey) {
deferred.reject(requestedKey);
deferred.resolve('{}');
return;
}
@@ -122,14 +122,8 @@ angular.module('locale').factory('translationLoader', ['$injector', function tra
var translation = $q.defer();
// Get requested language from options
var requestedKey = options.key;
// Append fallback languages to requested language
var keys = getKeyVariations(requestedKey).concat(options.fallbackLanguages);
// Satisfy the translation request
satisfyTranslation(translation, requestedKey, keys);
// Satisfy the translation request using possible variations of the given key
satisfyTranslation(translation, options.key, getKeyVariations(options.key));
// Return promise which is resolved only after the translation file is loaded
return translation.promise;