angular-translate-loader-url.js 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. /*!
  2. * angular-translate - v2.6.1 - 2015-03-01
  3. * http://github.com/angular-translate/angular-translate
  4. * Copyright (c) 2015 ; Licensed MIT
  5. */
  6. angular.module('pascalprecht.translate')
  7. /**
  8. * @ngdoc object
  9. * @name pascalprecht.translate.$translateUrlLoader
  10. * @requires $q
  11. * @requires $http
  12. *
  13. * @description
  14. * Creates a loading function for a typical dynamic url pattern:
  15. * "locale.php?lang=en_US", "locale.php?lang=de_DE", "locale.php?language=nl_NL" etc.
  16. * Prefixing the specified url, the current requested, language id will be applied
  17. * with "?{queryParameter}={key}".
  18. * Using this service, the response of these urls must be an object of
  19. * key-value pairs.
  20. *
  21. * @param {object} options Options object, which gets the url, key and
  22. * optional queryParameter ('lang' is used by default).
  23. */
  24. .factory('$translateUrlLoader', ['$q', '$http', function ($q, $http) {
  25. return function (options) {
  26. if (!options || !options.url) {
  27. throw new Error('Couldn\'t use urlLoader since no url is given!');
  28. }
  29. var deferred = $q.defer(),
  30. requestParams = {};
  31. requestParams[options.queryParameter || 'lang'] = options.key;
  32. $http(angular.extend({
  33. url: options.url,
  34. params: requestParams,
  35. method: 'GET'
  36. }, options.$http)).success(function (data) {
  37. deferred.resolve(data);
  38. }).error(function (data) {
  39. deferred.reject(options.key);
  40. });
  41. return deferred.promise;
  42. };
  43. }]);