angular-i18n.js 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. define([ 'lib/i18n!nls/lang' ], function(localeStrings) {
  2. 'use strict';
  3. angular.module("ng.local", []).factory('locale', function() {
  4. return localeStrings;
  5. }).factory('localizationService', [ 'locale', function(locale) {
  6. function getLocalizedValue(path) {
  7. var keys = path.split('.');
  8. return getValue(keys);
  9. }
  10. function getValue(keys) {
  11. var level = 0;
  12. function get(context) {
  13. if (context[keys[level]]) {
  14. var val = context[keys[level]];
  15. if (typeof val === 'string' || typeof val === 'number') {
  16. return val;
  17. } else {
  18. level++;
  19. return get(val);
  20. }
  21. } else {
  22. console.error('Missing localized string for: ', keys);
  23. }
  24. }
  25. return get(locale);
  26. }
  27. return {
  28. getLocalizedString : function(path) {
  29. return getLocalizedValue(path, locale);
  30. }
  31. };
  32. } ]).directive('i18n', [ 'localizationService', function(localizationService) {
  33. return {
  34. restrict : "A",
  35. link : function(scope, element, attrs) {
  36. var string = localizationService.getLocalizedString(attrs.i18n);
  37. element.text(string);
  38. }
  39. };
  40. } ]).filter('i18n', [ 'localizationService', function(localizationService) {
  41. return function(input) {
  42. return localizationService.getLocalizedString(input);
  43. };
  44. } ]);
  45. });