Skip to content
This repository has been archived by the owner on Jan 29, 2024. It is now read-only.

Commit

Permalink
fix(service): avoid try to load languages which are explicitly not wa…
Browse files Browse the repository at this point in the history
…nted

Although (valid) available language keys have been registered with `registerAvailableLanguageKeys()`, the service tried to load non matching languages.

Fixes #1390
  • Loading branch information
knalli committed Mar 20, 2016
1 parent 02688f2 commit bde935e
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 1 deletion.
5 changes: 5 additions & 0 deletions src/service/translate.js
Original file line number Diff line number Diff line change
Expand Up @@ -1814,6 +1814,11 @@ function $translate($STORAGE_KEY, $windowProvider, $translateSanitizationProvide

// Try to get the aliased language key
var aliasedKey = negotiateLocale(key);
// Ensure only registered language keys will be loaded
if ($availableLanguageKeys.length > 0 && !aliasedKey) {
return $q.reject(key);
}

if (aliasedKey) {
key = aliasedKey;
}
Expand Down
24 changes: 23 additions & 1 deletion test/unit/service/translate.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ describe('pascalprecht.translate', function () {

beforeEach(module('pascalprecht.translate', function ($translateProvider) {
$translateProvider
.registerAvailableLanguageKeys(['en', 'en_EN', 'de'], {
.registerAvailableLanguageKeys(['en', 'en_EN', 'de', 'de_DE'], {
'en_US': 'en_EN'
})
.translations('en', translationMock)
Expand Down Expand Up @@ -155,6 +155,28 @@ describe('pascalprecht.translate', function () {
expect($translate.isForceAsyncReloadEnabled).toBeDefined();
});

it('should not try to load a language which has not been registered yet', function () {
// ensure initial language is en (preferred one)
expect($translate.use()).toBe('en');

var result = {
successHandler: false,
failureHandler: false
};
$translate.use('it').then(function (lang) {
result.successHandler = true;
}, function (lang) {
result.failureHandler = true;
});

$rootScope.$digest();
// ensure initial language is still en (preferred one)
expect($translate.use()).toBe('en');
// ensure result handlers has been called correctly
expect(result.successHandler).toBe(false);
expect(result.failureHandler).toBe(true);
});

describe('$translate#isForceAsyncReloadEnabled()', function () {

it('should be a function', function () {
Expand Down

0 comments on commit bde935e

Please sign in to comment.