36 lines
1.2 KiB
JavaScript
36 lines
1.2 KiB
JavaScript
|
(function () {
|
||
|
'use strict';
|
||
|
|
||
|
angular.module('ariaNg').factory('ariaNgLanguageLoader', ['$http', '$q', 'localStorageService', 'ariaNgConstants', 'ariaNgLanguages', function ($http, $q, localStorageService, ariaNgConstants, ariaNgLanguages) {
|
||
|
return function (options) {
|
||
|
var deferred = $q.defer();
|
||
|
|
||
|
if (!ariaNgLanguages[options.key]) {
|
||
|
deferred.reject(options.key);
|
||
|
return deferred.promise;
|
||
|
}
|
||
|
|
||
|
var languageKey = ariaNgConstants.languageStorageKeyPrefix + '.' + options.key;
|
||
|
var languageResource = localStorageService.get(languageKey);
|
||
|
|
||
|
if (languageResource) {
|
||
|
deferred.resolve(languageResource);
|
||
|
}
|
||
|
|
||
|
var languagePath = ariaNgConstants.languagePath + '/' + options.key + ariaNgConstants.languageFileExtension;
|
||
|
|
||
|
$http({
|
||
|
url: languagePath,
|
||
|
method: 'GET'
|
||
|
}).success(function (data) {
|
||
|
localStorageService.set(languageKey, data);
|
||
|
return deferred.resolve(data);
|
||
|
}).error(function (data) {
|
||
|
return deferred.reject(options.key);
|
||
|
});
|
||
|
|
||
|
return deferred.promise;
|
||
|
};
|
||
|
}]);
|
||
|
})();
|